Cache的发展工作过程及作用论文.docx

上传人:b****7 文档编号:10540756 上传时间:2023-02-21 格式:DOCX 页数:21 大小:1,009.87KB
下载 相关 举报
Cache的发展工作过程及作用论文.docx_第1页
第1页 / 共21页
Cache的发展工作过程及作用论文.docx_第2页
第2页 / 共21页
Cache的发展工作过程及作用论文.docx_第3页
第3页 / 共21页
Cache的发展工作过程及作用论文.docx_第4页
第4页 / 共21页
Cache的发展工作过程及作用论文.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

Cache的发展工作过程及作用论文.docx

《Cache的发展工作过程及作用论文.docx》由会员分享,可在线阅读,更多相关《Cache的发展工作过程及作用论文.docx(21页珍藏版)》请在冰豆网上搜索。

Cache的发展工作过程及作用论文.docx

Cache的发展工作过程及作用论文

目录

 

一、Cache的发展1

(一)PC初期无需Cache1

(二)80386没有L1Cache1

(三)80486出现Cache2

(四)Peutium的分离L1Cache和L2Cache2

(五)PentiumPro内嵌式L2Cache3

(六)PentiumMMX容量增大的L1和L2Cache3

(七)PentiumⅡ设有双独立总线连接L2Cache3

(八)PentiumⅢ的L2Cache增大4

(九)Merced设有L04

(十)与Cache相配合的缓存控制指令5

(十一)Cache在PC中其它设备的应用5

二、Cache的工作过程6

1、Cache的基本工作原理6

2、80486片内高速缓冲存储器(Cache)11

(1)80486片内Cache结构11

(2)80486片Cache的工作模式12

3、Cache的作用13

参考文献15

注释15

CACHE的发展及其在各类计算机中的工作过程和作用

[论文摘要]Cache是一种高速缓冲存储器,是为了解决CPU和主存之间的速度不匹配而采用的一项重要技术,Cache是介于CPU和主存之间的小容量存储器,但存取速度比主存快。

Cache随CPU的发展而不断改变,可以概括为:

从无到有,由小到大,先外后内,纵深配备,软硬兼施。

初期的CPU没有Cache,在80386时期出现外部Cache;80486时期开始有内部仅8kB的Cache。

Cache的分级也由L1和L2级,发展到L0和L3级的纵深配备;Cache的大小由当初的8kB,直到Merced的1~2MB。

为了更好地利用Cache,使得计算机处理信息的速度更加快速。

[关键词]CacheCPU数据传输

一、CACHE的发展

纵观PC系统和CPU二十年的发展,随着半导体加工工艺水平的不断提高,CPU和存储器的性能都有了很大的提高。

CPU频率的提高,必然要求系统中存储器的存取速度要提高,还要求其容量要增大。

主存储器DRAM容量的提高还是比较快的,但是DRAM读取时间的提高却很慢。

从而在速度上与CPU主频的提高产生了极不相配的情况,这样会影响整个系统的性能。

二十年来,CPU设计的问题之一就是解决高速CPU和低速DRAM之间的平衡或匹配问题,以求系统性能的整体提高。

在它们之间加入高速缓冲存储器Cache,就是这个问题的解决方案之一。

  Cache随CPU的发展而不断改变,可以概括为:

从无到有,由小到大,先外后内,纵深配备,软硬兼施。

初期的CPU没有Cache,在80386时期出现外部Cache;80486时期开始有内部仅8kB的Cache。

Cache的分级也由L1和L2级,发展到L0和L3级的纵深配备;Cache的大小由当初的8kB,直到Merced的1~2MB。

为了更好地利用Cache,还专门配有缓存控制指令。

(一)PC初期无需Cache

在八十年代初,由于CPU主频很低,DRAM的存取时间甚至快于CPU存取时间,因此无需Cache。

例如,当时PC机采用8088CPU,系统主频为4.77MHz,一个基本总线周期为4拍,即840ns。

此时64kB的DRAM存取周期200ns,造成DRAM等待CPU的执行的局面,无需Cache。

  在PC/AT机采用80286CPU后,系统主频增加到10MHz,1个基本总线周期为2拍,即200ns。

此时必须用读取时间为100ns的DRAM。

在采用25MHz的80386DX时,一个基本总线周期为2拍,即80ns,当时已没有速度相匹配的DRAM可用。

解决方案有2种:

一种是在基本总线周期中插入等待,降低CPU的处理能力;另一种是采用内部和外部Cache,使用SRAM芯片以提高存储器的读取速度。

(二)80386没有L1Cache

80386初期主频为20MHz。

Intel公司十分重视80386的设计制造,把它定位于“新一代个人电脑架构”,想把一些新技术设计在芯片中。

但由于当时工艺所限,内置高速缓存的芯片体积过大,造成成本上升,同时工期有限,几经权衡,最后决定在80386芯片不设置高速缓冲存储器,可以生产另外的Cache,以配合80386运作。

  尽管人们意识到CPU主频的增加与内存DRAM存取时间过慢的矛盾已愈加突出,但因条件所限,80386内部没有L1Cache,只有外部的Cache。

(三)80486出现Cache

80486是由80386CPU加80387数字协处理器以及8kBCache构成。

  当CPU的时钟频率继续增加时,外部Cache的SRAM芯片速度也要相应提高,这样会增加系统成本,为此在设计80486时采用了内部Cache。

  80486芯片内由8kB的Cache来存放指令和数据。

同时,80486也可以使用处理器外部的第二级Cache,用以改善系统性能并降低80486要求的总线带宽。

Cache可以工作在80486所有的操作模式:

实地址模式、保护模式和X86模式。

对Cache的操作是由系统自动进行的,对程序员透明。

而在多处理器系统中,可能要求系统软件的干预。

对于一般的计算机,在系统CMOS设置中均有Cache使用模式的设置。

  80486内部Cache是一个4路组相联Cache,在主存储器中给定单元的数据能够存储在Cache内4个单元中的任何一个。

这种4路相联方式是高命中率的全相联Cache和快速的直接映像Cache的一种折衷,因而能进行快速查找并获得高的命中率。

“Cache—主存”与“主存—辅存”层次的区别

比较项目

存储层次

“Cache—主存”层次

“主存—辅存”层次

目的

为了弥补主存速度的不足

为了弥补主存容量的不足

存储管理实现

主要由专业硬件实现

主要由软件实现

访问速度的比值

(第一级和第二级)

几比一

几万比一

典型的块(页)大小

几十个字节

几百到几千个字节

CPU对第二级的访问方式

可直接访问

均通过第一级

不命中时CPU是否切换

不切换

切换到其他进程

(四)Peutium的分离L1Cache和L2Cache

Pentium处理器采用了超标量结构双路执行的流水线,有分支预测技术。

  由于Pentium设计有2条并行整数流水线,可同时执行2条命令。

整数单元的潜在处理能力实际可增加一倍,处理器也需要对命令和数据进行双倍的访问。

为使这些访问不互相干涉,Intel把在486上共用的内部Cache,分成2个彼此独立的8kB代码Cache和8kB数据Cache,这两个Cache可以同时被访问。

这种双路高速缓存结构减少了争用Cache所造成的冲突,提高了处理器效能。

Pentium的Cache还采用了回写写入方式,这同486的贯穿写入方式相比,可以增加Cache的命中率。

此外,还采用了一种称为MESI高速缓存一致性协议,为确保多处理器环境下的数据一致性提供了保证。

INCLUDEPICTURE"\*MERGEFORMATINET

(五)PentiumPro内嵌式L2Cache

为使PentiumPro的性能超过Pentium,必需使用创新的设计方法。

PentiumPro使用了新的超标量和级流水线技术,包括无序执行、动态分支预测和推测执行的动态执行新技术。

它可以使CPU在一个时钟周期执行3条微操作。

CPU并行处理速度的加快,意味着它同时处理指令和数据的数量增加,为不使CPU处于等待状态,需要重新设计Cache。

  PentiumPro在片内第一级Cache的设计方案中,使指令Cache与数据Cache分别设置。

指令Cache的容量为8kB,采用2路组相联映像方式。

数据Cache的容量也为8kB,但采用4路组相联映像方式。

PentiumPro采用MESI(修改、排他、共享、作废)协议来维持Cache和主存储器之间的一致性。

通常,人们总以为,像PentiumPro这样的3路超标量结构的微处理器会采用更大容量的片内第一级Cache和更大的第二级Cache。

然而,Intel公司的设计者却选择了另一条设计思路——设计一种Cache存储阶层结构,使得能够从一个Cache流动到另一个Cache,而不用阻塞执行。

  PentiumPro采用了内嵌式或称捆绑式L2Cache,大小为256kB或512kB。

此时的L2已经用线路直接连到CPU上,益处之一就是减少了对急剧增多L1Cache的需求。

L2Cache还能与CPU同步运行。

即当L1Cache不命中时,立刻访问L2Cache,不产生附加延迟。

为进一步减少因要访问的信息不在高速缓冲中时所带来的性能损失,PentiumPro的L1和L2都设计成非锁定型。

即当哪个Cache中没有CPU所需的信息时,它不妨碍后面访问Cache的处理过程。

Cache可以直接处理最多4次的Cache缺页情况,借助CPU的内存有序缓冲区可以顺序保存最多12次的内存访问。

非锁定型Cache适用于PentiumPro的乱序执行核心,因为在可能引发流水线延迟的长等待内存操作期间,这些Cache可以让CPU继续运行。

  PentiumPro的如此捆绑封装,带来器件成本提高。

一方面专用的L2Cache芯片成本高,另一方面两个不同功能的芯片只有放在一起联结后才能最后测试其性能的完整性。

而当其中有一个有缺陷时,两个芯片都被报废。

在以后的PentiumPro产品中,又将L2Cache从芯片中去掉。

(六)PentiumMMX容量增大的L1和L2Cache

PentiumMMX是能运行多媒体指令MMX的高能奔腾处理器。

PentiumMMX具有改进的分支预测和增强型流水线技术,并将L1Cache容量增加到32kB,L2Cache为512kB。

  PentiumMMX的片内L1数据和指令的Cache,每个增到16kB,4路相联。

较大的独立内部Cache、减少平均内存存取时间,同时提供对近期所用指令和数据的快速存取,性能因此得到提高。

数据Cache支持采用回写方式更新内存。

  由于CacheL1容量的增大,使当时的应用程序运行速度提高了10%左右。

(七)PentiumⅡ设有双独立总线连接L2Cache

PentiumⅡ是PentiumPro的改进型,具有MMX指令,使用动态执行技术,采用双独立总线结构。

PentiumⅡ同样有2级Cache,L1为32kB(指令和数据Cache各16kB)是PentiumPro的一倍。

L2为512kB。

INCLUDEPICTURE"\*MERGEFORMATINET

PentiumⅡ与PentiumPro在L2Cache的不同是由于制作成本原因。

L2Cache已不在内嵌芯片上,而是与CPU通过专用64位高速缓存总线相联,与其它元器件共同被组装在同一基板上,即“单边接触盒”上。

双独立总线结构就是:

L2高速缓存总线和处理器至主内存(Processor-to-main-memory)的系统总线。

PentiumⅡ处理器可以同时使用这两条总线,与单一总线结构的处理器相比,该处理器可以进出两倍多的数据,可允许PentiumⅡ处理器的L2高速缓存比Pentium处理器的L2高速缓存要快1倍。

随着PentiumⅡ处理器主频的提高,L2高速缓存的速度也将加快。

最后,流水线型系统总线可允许同时并行传输,而不是单个顺序型传输。

改进型的双重独立总线结构,可以产生超过与单总线结构三倍带宽的性能。

另外,在PentiumⅡ中,采用了ECC技术,此技术应用到二级高速缓存中,大大提高了数据的完整性和可靠性。

  为开发低端市场,曾在PentiumⅡ的基板上除去L2,牺牲一些性能,制造廉价CPU。

这就是最初的Celeron处理器。

以后的Celeron仍加有较小的片上L2Cache,其大小为128kB。

(八)PentiumⅢ的L2Cache增大

PentiumⅢ也是基于PentiumPro结构为核心,在原有MMX多媒体指令的基础上,又增了70多条多媒体指令。

它使用动态执行技术,采用双独立总线结构。

  PentiumⅢ具有32kB非锁定L1Cache和512kB非锁定L2Cache。

L2可扩充到1~2MB,具有更合理的内存管理,可以有效地对大于L2缓存的数据块进行处理,使CPU、Cache和主存存取更趋合理,提高了系统整体性能。

在执行视频回放和访问大型数据库时,高效率的高速缓存管理使PⅢ避免了对L2Cache的不必要的存取。

由于消除了缓冲失败,多媒体和其它对时间敏感的操作性能更高了。

对于可缓存的内容,PⅢ通过预先读取期望的数据到高速缓存里来提高速度,这一特色提高了高速缓存的命中率,减少了存取时间。

(九)Merced设有L0

即将推出的第7代处理器Merced主频可达1GHz。

很明显,对Cache的要求更高了。

为此,lntel本着“大力提高执行单元和缓存间数据交换速度”的思想,在芯片内开发新的Cache,并增加L1Cache的容量,来平衡CPU和DRAM间的速度。

为此,在Merced的片上最接近执行单元旁再设另一处Cache,称为L0缓存,是指令/数据分离型。

由于L0Cache在物理位置上比L1离执行单元更近,布线距离的缩短,使它与执行单元间的数据交换速度比L1还快,可以进一步提高工作主频。

  同时,还要在芯片内部配置超过1MB的大容量L1Cache。

芯片内部Cache比外部Cache更易于提升与执行单元间的数据传送速度。

内部Cache的加大,执行单元不易发生“等待”。

现行的内部Cache容量仅为32kB~128kB。

内部Cache容量的增加会引起芯片面积增大,提高制造成本。

但大部分公司认为,由于内部Cache容量增大而导致成本的上扬,可以用制造技术来弥补。

(十)与Cache相配合的缓存控制指令

  为进一步发挥Cache的作用,改进内存性能并使之与CPU发展同步来维护系统平衡,一些制造CPU的厂家增加了控制缓存的指令。

如Intel公司在PentiumⅢ处理器中新增加了70条3D及多媒体的SSE指令集。

其中有很重要的一组指令是缓存控制指令。

AMD公司在K6-2和K6-3中的3DNow多媒体指令中,也有从L1数据Cache中预取最新数据的数据预取指令(Prefetch)。

  PentiumⅢ处理器的缓存控制指令,用于优化内存连续数据流。

针对数据流的应用需要对以前的Cache运作方式进行了改进,减少了一些不必要的中间环节,节省了时间,增加了CPU数据总线的实际可用带宽,也提高了Cache的效率。

  有两类缓存控制指令。

一类是数据据预存取(Prefetch)指令,能够增加从主存到缓存的数据流;另一类是内存流优化处理(MemoryStreaming)指令,能够增加从处理器到主存的数据流。

这两类指令都赋予了应用开发人员对缓存内容更大控制能力,使他们能够控制缓存操作以满足其应用的需求。

  数据预存取指令允许应用识别出所需的信息,并预先将其从主存中取出存入缓存。

这样一来,处理器可以更快地获取信息,从而改进应用性能。

为了进一步削减内存延迟,内存访问还可以与计算机周期保持流水操作。

例如,如果一个应用需要计算一些数值以供3D图形使用,当它在计算一个值的同时就可以预取下一个需要计算的数值。

  内存流优化处理指令允许应用越过缓存直接访问主存。

通常情况下,处理器写出的数据都将暂时存储在缓存中以备处理器稍后使用。

如果处理器不再使用它,数据最终将被移至主存。

然而,对于多媒体应用来就,通常不再需要使用这些数据。

因此,这时将数据尽快地移到主存中则显得至关重要。

采用了PentiumⅢ处理器的内存流优化处理指令后,应用程序就能让数据搭乘“直达快车”,直接到达主存。

当数据流直接到达主存时,处理器负责维护缓存的一致性。

因为这种方式避免了为数据流留出空间清空缓存的当前内容,从而也提高了缓存的利用率。

  总而言之,缓存控制指令改进了进出处理器的数据据流,使处理器保持其高速率运作。

通过这些指令(同时还需要一些专为其设计以使其发挥优势的软件),商业用户可以在操作系统和图形设备驱动程序中感受其性能优势。

(十一)Cache在PC中其它设备的应用

  Cache作为一种速度匹配技术,不仅用在提高CPU对内存的读写速度上,而且也用在CPU结构的其它部分和PC系统中。

  PC的显示系统中,由于3D应用的迅猛发展,大量的显示内存使用着高速缓存技术,如前台缓存、后台缓存、深度缓存和纹理缓存等。

  PC的磁盘系统中,为提高内存对磁盘(主要是硬盘)的读写速度,就要建立磁盘高速缓存。

因为DRAM内存的存取速度对CPU来说较慢,但对磁盘的存取速度却是很快的。

这是因为磁盘存储系统包含有磁头的机械运动,而机械运动无法跟传送电信号的电子速度相比。

此外,磁头中电与磁的信号转换也对速度有影响。

这样,为了提高磁盘存取速度而采用Cache也就顺理成章了。

硬盘Cache无需使用高速的SRAM,它只需在内存(DRAM)中划出一个区域,作为专用的磁盘缓冲区,采用一定的数据结构,即可实现磁盘存取的Cache技术。

它的过程也是把即将访问的数据整块地拷贝到高速缓存区中,然后内存再到高速缓存中去逐个读取数据。

由于数据在RAM空间内部传送要比在RAM与磁盘间传送快得多,系统由此提高了存取速度。

  硬盘的Cache可以放在常规内存中。

不过,为了不占用宝贵的用户程序空间,通常是把它设在扩展内存或扩充内存里。

硬盘Cache是由人们共知的SMARTDRIVE.EXE文件自动建立的,用户只需在AUTOEXEC.BAT与CONFIG.SYS中加入相应的命令行就成了。

  在较慢速的其它外围设备和内存的数据交换中,在网络通讯中,都需要使用Cache技术。

推而广之,凡是在传输速度有较大差异的设备之间,都可以利用Cache的速度匹配技术。

PC中的Cache主要是为了解决高速CPU和低速DRAM内存间速度匹配的问题,是提高系统性能,降低系统成本而采用的一项技术。

随着CPU和PC的发展,20年来,现在的Cache已成为CPU和PC不可缺少的组成部分,是广大用户衡量系统性能优劣的一项重要指标。

据预测,在21世纪初期,CPU主频加快发展的趋势,加上内存DRAM的存取时间也会提高,从系统的性价比考虑,Cache的配备仍然是重要的技术之一。

二、CACHE的工作过程

1、Cache的基本工作原理

高速缓存Cache是位于CPU和主存储器之间规模较小、存取速度快捷的静态存储器。

Cache除包含SRAM外,还有控制逻辑。

若Cache在CPU芯片外,它的控制逻辑一般与主存的控制逻辑合成在一起,称为主存/Cache控制器;若Cache在CPU内,则由CPU提供它的控制逻辑。

CPU与Cache之间的数据交换是以字为单位,而Cache与主存之间的数据交换是以块为单位。

一个块由若干字组成,是定长的。

当CPU读取主存中的一个字时,便发出此字的内存地址到Cache和主存。

此时Cache控制逻辑依据地址判断此字当前是否在Cache中:

若是,此字立即传送给CPU;若非,则用主存读周期把此字从主存读出到CPU,与此同时,把含有这个字的整个数据块从主存读出到Cache中。

Cache原理图:

假设Cache读出时间为50ns,主存读出时间为250ns。

存储系统是模块化的,主存中每个8K模块和容量16字的Cache相联系。

Cache分为4行,每行4个子(W)。

分配给Cache的地址存放在一个相联存储器CAM中,当CPU执行访存指令时,就把所要访问的字的地址送到CAM;如果W不在Cache中,则将W从主存传送到CPU。

与此同时,把包含W的由前后相继的4个字所组成的一行数据送入Cache,它替换了原来Cache中最近最少使用(LRU)的一行数据。

在这里,由始终管理Cache使用情况的硬件逻辑电路来实现LRU[1]替换算法。

例:

Cache及主存地址组成部分:

主存有n条地址线,主存容量为2n,把主存划分为大小相等的2m块,每块有2n-m(=2r)个单元。

把主存划分为大小相等的2c块,每块有2p-c(=2r)个单元。

Cache的基本结构:

Cache的工作过程:

Cache的工作原理是基于程序访问的局部性。

对大量典型程序运行情况的分析结果表明,在一个较短的时间间隔内,由程序产生的地址往往集中在存储器逻辑地址空间的很小范围内。

指令地址的分布本来就是连续的。

再加上循环程序段和子程序段要重复执行多次。

因此,对这些地址的访问就自然地具有时间上集中分布的倾向。

数据分市的这种集中倾向不如指令明显,但对数组的存储和访问以及工作单元的选择都可以使存储器地址相对集中。

这种对局部范围的存储器地址频繁访问,而对此范围以外的地址则访问甚少的现象,就称为程序访问的局部性。

根据程序的局部性原理,可以在主存和CPU通用寄存器之间设置一个高速的容量相对较小的存储器,用SRAM存放CPU常用的指令和数据,于是,CPU对存储器的访问主要体现在对Cache的存取保持高速操作。

可见,在存储系统中,小容量的高速SRAM作为高速存储器,而大容量的慢速DRAM用作内存,这样的系统以接近DRAM的价格提供了SRAM的性能。

系统正是依据此原理,不断地将与当前指令集相关联的一个不太大团后继指令集从内存读到cache,然后再与CPU高速传送,从而达到速度匹配。

CPU对存储器进行数据请求时,通常先访问cache。

由于局部性原理不能保证所谓求的数据百分之百地在Cache中,这里便存在一个命中率。

即CPU在任一时刻从Cache中可靠获取数据的几率。

命中率越高,正确获取数据的可靠性就越大。

Cache的存储容量比主存的容量小得多,但不能太小,太小会使命中率太低;也没有必要过大,过大不仅会增加成本,而且当容量超过一定值后,命中率随容量的增加将不会有明显地增长。

只要Cache的空间与主存空间在一定范围内保持适当比例的映射关系,Cache的命中率还是相当高的。

一般规定Cache与内存的空间比为4:

1000,即128kBCache可映射32MB内存;256kBCache可映射64MB内存。

在这种情况下,命中率都在90%以上。

至于没有命中的数据,CPU只好直接从内存获取。

获取的同时,也把它拷进Cache,以备下次访问。

当要访问的字在Cache中时,若是读操作,则CPU可以直接从Cache中读取数据,不涉及主存。

若是写操作,则需要改变Cache和主存中相应两个单元的内容。

这时,有两种处理办法,一种是Cache单元和主存单元中相应的单元同时被修改,称为“直通存储法”。

另一种方法是只修改Cache单元的内容,同时用一个标志位作为标志,当有标志位的信息块从Cache中移去时再修改相应的主存单元,把修改信息一次写回主存,称为“写回法”。

显然直通存储法比较简单,但对于需要多次修改的单元来说,可能导致不必要的主存重写工作。

若数据不在Cache中,则CPU直接对主存进行操作。

若是读操作,则把主存中相应的信息块送到Cache中,在送字块到Cache的同时就把所需的字送到CPU,不必等待整个块都装入Cache的这种方法称为“直通取数”。

若是写操作,则将信息直接写入内存。

一般情况下,此时,主存中相应块并不调入缓存。

因为一个写操作所涉及的往往是程序中某个数据区的一个单元,其访问的局部性并不明显。

主存和Cache的存储区均划分成块(Block)。

每块由多个信息字组成,两者之间以块为单位交换信息。

Cache中能容纳多个信息块。

Cache

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 哲学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1