我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:六合特肖 > 访问局部性 >

Cache的基本概念与工作原理

归档日期:06-06       文本归类:访问局部性      文章编辑:爱尚语录

  技术的飞速发展,常用的处理器飞奔在越来越高的频率之上,虽然处理器的速度越来越快,但是与之相匹配的存储器的速度却没有获得相应的提升,这大大限制了 CPU 的处理性能。而我们本系列文档所介绍的主角 Cache 技术就是用来解决这个难题的。

  在ARm发布 Cortex-M7 架构之后,微控制器领域也出现了频率高达数百兆的芯片,如 ST 的Stm32F7 系列和NXP的 i.MX RT 系列芯片,这些芯片内的处理器都自带 cache,在合理配置下可以表现出十分强悍的数据处理性能。那么什么是 cache?如何利用这一新特性编写高性能的程序?又有什么要注意的地方吗?你可能会有上述这些疑问,别担心,本系列文章将会为你一一解答。

  本系列文章分为三篇,第一篇为 《cache 的基本概念与工作原理》,讲解 cache 相关的基础知识。第二篇为《STM32F7 Cache 介绍与实战》,讲解如何在 STM32F7 系列芯片上使用 cache,并编写程序进行性能测试。第三篇为《Cache 的一致性问题与使用技巧》,将会介绍 cache 的数据一致性问题和使用 cache 过程中的一些技巧。下面我们从 cache 的基础知识开始,了解这一强大的特性吧。

  想要理解 cache 的工作原理,就必须要了解计算机系统中数据的存储方式。

  在计算机中程序执行时所有的指令和数据都是从存储器中取出来执行的。存储器是计算机系统中的重要组成部分,相当于计算机的仓库,用来存放各类程序及其处理的数据。因此存储器的容量和性能应当随着处理器的速度和性能的提高而通过提高,以保持系统性能的平衡。

  然而在过去的 20 多年中,随着时间的推移,处理器和存储器在性能发展上的差异越来越大,存储器在容量尤其是访问延时方面的性能增长越来越跟不上处理器性能发展的需要。为了缩小存储器和处理器两者之间在性能方面的差距,通常在计算机内部采用层次化的存储器体系结构。

  从上图可以看到,速度越快则容量越小、越靠近 CPU。CPU 可以直接访问内部存储器。而外部存储器的信息则要先取到主存,然后才能被 CPU 访问。CPU 执行指令时,需要的操作数大部分来自寄存器,当需要对存储器进行读写操作时,先访问 cache ,如果不在 cache 中,则访问主存,如果不在主存中,则访问硬盘。此时,操作数从硬盘中读出送到主存,然后从主存送到 cache。

  数据使用时,一般只在相邻两层之间复制传送,而且总是从慢速存储器复制到快速存储器。传送的单位是一个定长块,因此需要确定定长块的大小,并且在相邻两层间建立块之间的映射关系。

  在我们接触的嵌入式系统中,具体的存取时间和存储容量的大小可能和上图不符,但是不同层级之间的量级对比还是一致的。

  由于 CPU 和主存所使用的半导体器件工艺不同,两者速度上的差异导致快速的 CPU 等待慢速的存储器,为此需要想办法提高 CPU 访问主存的速度。除了提高dram芯片本身的速度和采用并行结构技术以外,加快 CPU 访存速度的主要方式之一是在 CPU 和主存之间增加高速缓冲器,也就是我们主角 Cache。

  Cache 位于 CPU 和内存之间,可以节省 CPU 从外部存储器读取指令和数据的时间。

  对大量典型程序运行情况分析的结果表明,在较短的时间间隔内,程序产生的地址往往集中在存储空间的一个很小范围,这种现象称为程序访问的局部性。这种局部性可细分为时间局部性和空间局部性。时间局部性是指被访问的某个存储单元在一个较短的时间间隔很可能又被访问。空间的局部性是指访问的某个存储单元的临近单元在一个较短的时间间隔内很可能也被访问。

  指令 cache 只被用于缓存指令,从外部存储器读取指令需要很长时间,如果外部存储器是 flash,那么 CPU 可能需要 50-100ns 才能获得指令。

  数据 cache 只被用于缓存数据,和指令 cache 类似,CPU 要花费很长时间才能从外部的 SRam或者 SDRAM 取回数据。

  cache 是一种小容量高速缓冲存储器,由快速的 SRAM 组成,直接制作在 CPU 芯片内,速度较快,几乎与 CPU 处于同一个量级。在 CPU 和主存之间设置 cache,总是把主存中被频繁访问的活跃程序块和数据块复制到 cache 中。由于程序访问的局部性,大多数情况下,CPU 可以直接从 cache 中直接取得指令和数据,而不必访问慢速的主存。

  为了方便 cache 和主存间交换信息,cache 和主存空间都被划分为相等的区域。例如将主存中一个 512 个字节的区域称作一个块(block),cache 中存放一个主存块的区域称作行(line)。

  系统启动时,每个 cache 行都为空,其中的信息无效,只有 cache 行中装入了主存块之后才有效。为了说明 cache 行中的信息是否有效,某一个行都有一个有效位。通过将一行的有效位清零来淘汰这一行中所存储的主存快的操作称为冲刷,也就是我们常说的刷 cache。

  在 CPU 执行程序过程中,需要从主存取指令或写数据时,先检查 cache 中有没有要访问的信息,若有,就直接在 cache 中读写,而不用访问主存储器。若没有,再从主存中把当前访问信息所在的一个一个主存块复制到 cache 中。因此,cache 中的内容是主存中部分内容的副本。下图展示了带 cache 的 CPU 执行一次访存操作的过程。

  如上图所示的访存过程中,需要判断所访问的信息是否在 cache 中。若 CPU 访问单元的主存块在 cache 中,则称 cache 命中(hit),命中的概率称为命中率 p (hit rate)。若不在 cache 中,则为不命中(MIss),其概率为缺失率(miss rate)。命中时,CPU 在 cache 中直接存取信息,所用的时间开销就是 cache 的访问时间 Tc,称为命中时间。缺失时,需要从主存读取一个主存块送 cache,并同时将所需信息送 CPU,因此所用时间为主存访问时间 Tm,和 cache 访问时间 Tc 之和。通常把从主存读入一个主存块到 cache 的时间 Tm 称为缺页损失。

  由于程序访问的局部性特点,cache 的命中率可以达到很高,接近于 1。因此,虽然缺页损失所耗费的时间远远大于命中时间,但最终的平均访问时间仍可接近 cache 的访问时间。

  cache 行中的信息取自主存中的某个块。将主存块复制到 cache 行时,主存块和 cache 行之间必须遵循一定的映射规则。这样 CPU 在要访问某个主存单元时,可以依据映射规则到 cache 对应的行中查找要访问的信息,而不用在整个 cache 中查找。

  目前我们常见的 CPU 一般都采用的组相连的映射方式,组相连的映射方式将前两种映射方式取长补短,获得了优异的性能和较低的硬件实现难度。在这里不再展开仔细描述,感兴趣的小伙伴可以通过搜索阅读相关内容来了解其中的细节。

  全相连映射(full associate):每个主存块映射到 cache 的任意行中。

  组相连映射(set associate):每个主存块映射到 cache 的固定组的任意行中。

  值得注意的是,cache 对程序员在编写高级或低级语言程序时是透明的,因此程序员无需了解 cache 是否存在或者如何设置,感觉不到 cache 的存在。但是对 cahche 的深入了解有助于编写出高效的程序!

  文章出处:【微信号:RTThread,微信公众号:RTThread物联网操作系统】欢迎添加关注!文章转载请注明出处。

  点击右方佳嵌图标,可以看所有课程。我们将《嵌入式工程师-系列课程》分成两大阶段:第一阶段:《计算机体系结构》课程&n

  点击右方佳嵌图标,可以看所有课程。我们将《嵌入式工程师-系列课程》分成两大阶段:第一阶段:《计算机体系结构》课程&n

  LPC2131和LPC2132及LPC2138的数据手册和使用指南资料免费下载

  本手册仅供参考,并非万能,难免瑕疵,欢迎指正。 2K 龙芯派为直接接触硬件,使用时请多加小心,若使用....

  硬件平台:STM32F103ZET6 软件平台:RT_Thread 现象:使用USART通信收发大量数据后随机出现死机现象,在线程...

  我遇到了Spartan 3A配置的麻烦。 在我的设计中,外部CPU涉及FPGA配置,从属串行模式。 将所有配置文件写入FPGA后...

  STC11F/10FXX系列是由STC单片机有限公司生产的基于高性能1T架构80C51 CPU的单片....

  请问在嵌入式开发中如果内存耗光时,CPU如何将暂时不用的部分写入到磁盘?

  版主在前面关于虚拟内存的回复中说到:虚拟地址的引入,不仅使得用户程序可以运行在同样的虚拟地址上,还使得用户程序“看起来”...

  本文档的主要内容详细介绍的是51单片机最小系统的教程资料免费下载包括了:1.电平特性,2.51单片机....

  本文档的主要内容详细介绍的是单片机的硬件结构详细资料说明包括了:1.逻辑结构及信号引脚,2.并行输入....

  [tr]在TI论坛上看到使能cache可以提高运算速度,麻烦问一下有没有例程,请给讲解一下。 [/tr][table] [/table]...

  0 引言 随着武器装备信息化程度的提高,各种嵌入式信息装备得到了广泛应用。作为未来战场主要作战平台的各种战斗车辆,其车载指...

  天气越来越热,机箱里的噪声也随之升高,让人好烦。要想让主机“冷静”下来,噪声的主要源头——风扇的选择....

  现阶段轻薄本和越来越薄的游戏本之间还是可以调和的,如果你想玩3A大作,轻薄本依旧难以胜任。但是,面对....

  距离618电商大促刚好还剩一个月时间,想必很多童鞋和小白一样早早地把想要剁手的数码产品放进了购物车。....

  本文档的主要内容详细介绍的是MELSERVO-J4三菱通用伺服放大器的故障排除手册免费下载。伺服放大....

  本文档的主要内容详细介绍的是MCS51单片机的结构与原理的详细资料说明包括了:1. MCS-51单片....

  电路板上的CPU丝印被抹掉了,希望给位大佬提供点线索,可能是什么单片机!已知芯片有44个引脚,内部应该能自己提供时钟的震荡...

  大家好, 我正在使用SPC56EL60L3和SPC5Studio v5.0。 我需要访问测试闪存(在RM0032用户手册第622页描述)内存,以...

  眼看天气一天天热起来,虽然也有一些地方的小伙伴还在享受满25减15这样的“特惠”型天气,但爱机的温度....

  随着一种新产品——我们在Missing Link Electronics公司称之为“智能产品”的面市,嵌入式系统的发展出现了新动向。这一名词源...

  在我百思不得其解的时候,就想到找帮助文件,结果台达的这个HMI软件居然没有帮助文件,就只有去下载一个....

  可以用它来访问外部数据存储器中的任一单元,如果不用,也可以作为通用寄存器来用,由我们自已决定如何使用....

  近期,AMD还发布了今年的第二版专业显卡驱动RadeonPro Software for Enter....

  产生单片机定时器溢出中断与CPU响应中断的时间误差有两个原因。一是定时器溢出中断信号时,CPU正在执....

  DMA的数据传输速率是多少?由于DMA与CPU无关,所以CPU的速率可能不高。你知道DMAC的时钟是什么吗? 以上来...

  单片机也被称为微控制器(Microcontroller Unit),常用英文字母的缩写MCU表示单片....

  本文简要介绍了安阳高速线材机组的工艺情况、自动化控制系统的硬件配置及控制功能。针对安阳高速线材机组出....

  FPGA的下游应用地区分布:目前最大的为亚太地区,占比39.15%,北美占比33.94%,欧洲占比1....

  对于高手而言,如何将各种各样的配件组装成一台电脑是轻而易举的事,但对于大多数初接触电脑的读者而言却不....

  PET-A83T 核心板/核心模组主要特点选用A83T 八核CPU, 4G /8G/ 16GB EM....

  CPU是STM32F103,在晶振两脚之间走了一些线,这对电路性能会有影响吗?影响多大?可以忽略吗?...

  1、西门子Step7Micro/WINV4.0安装在什么环境下才能正常工作? Step7Micro....

  在日前的投资者会议上,Intel宣布了未来三年的CPU、GPU及半导体工艺路线....

  去年秋天英特尔推出的第九代 Core i 处理器中,身为消费市场上首款时脉达 5GHz 的i9-99....

  CPU和GPU之所以大不相同,是由于其设计目标的不同,它们分别针对了两种不同的应用场景。CPU需要很....

  英特尔将从6月开始批量生产10nm CPU 预计2021年7nm产品上市

  9日(北京时间),美国英特尔宣布将从6月份开始大规模生产用于10nm工艺生产的客户端处理器CPU。 ....

  据业内人士透露,英特尔已告知NB客户,它将在6月份开始出货入门级处理器,部分缓解长期以来设备供应商的....

  1.8086CPU由哪两部分构成?它们的主要功能是什么?答:8086CPU由两部分组成:指令执行部件....

  68HC908EY16是8位微控制器单元(MCU)的低成本、高性能M68HC08系列的一员。该系列中....

  本文档的主要内容详细介绍的是微型计算机的基础知识详细资料说明主要内容有:1.微型计算机的组成及工作原....

  运算器以完成二进制的算术/逻辑运算部件ALU为核心,再加上暂存器TMP、累加器ACC、寄存器B、程序....

  过程映像输入/输出(I/Q)、变量存储器V、内部存储器位M、定时器T、计数器C等属于全局变量。S7-....

  本文档的主要内容详细介绍的是使用51单片机进行的DS18B20温度传感器应用资料合集

  《微机系统与接口技术》是高等院校理工科非计算机专业学生必修的一门计算机基础教育课程,也是高等教育电类....

  Python Web服务器网关接口(Python Web Server Gateway Interf....

  小米9采用了高通最强的旗舰移动处理平台,骁龙855。在CPU、GPU、AI等多个方面性能都有了跨越式....

  半导体封装是指将通过测试的晶圆按照产品型号及功能需求加工得到独立芯片的过程。封装技术是一种将集成电路....

  对于一部手机来说,用什么标准去评判它是好是坏?相信每个人心中的答案都不一样,但如果非要找一个固定标准....

  数据处理方面,优化分布式 IO,增加远程文件系统流式读取能力。GPU 多机多卡同步训练通过增加稀疏通....

  MCU 为产品核心器件,又称CPU。内部包含有运算器、控制器、存储器等。它相当于人的大脑,指挥着各个....

  本文档的主要内容详细介绍的是iPhone 6各种阻值的详细资料说明包括了:座子,基带CPU,基带电源....

  英特尔(Intel)CPU 缺货情况持续,笔电代工厂普遍指出,缺货仍延续至今年第二季,Intel 2....

  我们考虑如何通过具有高性能CPU子系统和包括FPGA可重编程加速硬件处理单元的SoC架构来成功应对5....

  Tweakers拿到了一份Intel全新的桌面CPU产品规划路线年....

  一、 故障现象 1、一直正常使用,后因单位意外停电,再次上电后,不能开机。 2、主板上的电源指....

  芯片的分类: 日常生活中,我们可以发现芯片的种类比如有通信芯片、人工智能芯片、LED芯片、电脑芯片等....

  在SSD主控芯片方面,国科微目前至少有三款SATA主控芯片,最新的是GK2301主控,支持4通道及L....

  TMS320VC5501(5501)定点数字信号处理器(DSP)基于TMS320C55xDSP生成CPU处理器内核。 C55xDSP架构通过增加并行性和全面关注降低功耗来实现高性能和低功耗。 CPU支持内部总线结构,该结构由一个程序总线,三个数据读总线,两个数据写总线以及专用于外设和DMA活动的附加总线组成。这些总线能够在一个周期内执行最多三次数据读取和两次数据写入。并行,DMA控制器可以独立于CPU活动执行数据传输。 C55xCPU提供两个乘法累加(MAC)单元,每个单元能够进行17位×17位乘法运算。单循环。额外的16位ALU支持中央40位算术/逻辑单元(ALU)。 ALU的使用受指令集控制,提供优化并行活动和功耗的能力。这些资源在C55x CPU的地址单元(AU)和数据单元(DU)中进行管理。 C55x DSP代支持可变字节宽度指令集,以提高代码密度。指令单元(IU)从内部或外部存储器执行32位程序提取,并为程序单元(PU)排队指令。程序单元解码指令,将任务指向AU和DU资源,并管理完全受保护的管道。预测分支功能可避免执行条件指令时的管道刷新。 5501外设...

本文链接:http://shawntierney.com/fangwenjubuxing/446.html