CACHE方案作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Cache的方案
高速缓存(Cache)
高速缓存Cache是位于CPU和主存储器之间规模较小、存取速度快捷的静态存储器。Cache 一般由高速RAM (例如双极型存储器或静态MOs存储器)构成,采用的映射方式有直接映像方式、全相联映像和组相联映像方式。可以使程序和数据共享一个Cache,也可以按程序和数据分别设置。还可以把Cache存储器分成若干个体,采用多体N路相联映像。
Cache在CPU中起着举足轻重的作用,借助Cache, CPU可以以较快的速度存取静态存储器中的数据,而且系统成本上升不大。它是微机系统在不大幅度增加成本的前提下,使性能提升的一个非常有效的技术。
全新的Intel Advanced Smart Cache有效加强多核心架构的效率,传统的双核心设计每个独立
的核心都有自己的L2 Cache,但Intel Core微架构则是通过核心内部的Shared Bus Router共用相同的L2 Cache,当CPU 1运算完毕后把结果存在L2 Cache时,CPU 0便可通过Shared Bus Router读取CPU 1放在共用L2 Cache上资料,大幅减低读取上的延迟并减少使用FSB带宽,同时加入L2 & DCU Data Pre-fetchers及Deeper Write output缓冲存储器,大幅增加了Cache 的命中率。
Cache会与内存建立一种索引方式,处理器核心向Cache发出目标数据的地址,然后开始在Cache的标签部分搜索目标地址,如果目标地址存在,则表示CPU命中所要的数据,反之则未命中。如果未命中,则Cache会通过系统总线在内存中寻址相应的数据,并且把数据写入到Cache中。在寻址的方式相同的前提下,如果Cache容量太大,就会导致处理器花费大量的时间比较Cache中的地址。就算寻址方式可以避免这种现象,也会以牺牲Cache的命中率为代价。
Cache的发展历史和现状
Intel 高速缓存结构
为了弥补CPU与内存之间的差距,从80486开始,在CPU内部采用了Cache CPU内部的Cache 由硬件进行控制运行,对操作系统和应用软件都是透明的。在80486中,数据和指令都统一存储在同一个高速缓存中,因此也称为“统一的写通式高速缓存”。“写通”的含义是:对高速缓存单元内任何数据的修改,同时必须写入到内存中,以保持高速缓存与内存数据的一致性。这个过程不需要操作系统或应用软件干预。80486只有一级高速缓存。
Pentium 高速缓存结构
1、Pentium 的存储器系统
微计算机的内存储器系统一般分为三个层次,处理器内部的第一级Cache即L1 Cache,置于处理器内部或外部的第二级Cache,或称为L2 Cache以及主存储器DRAM。这三个层次又是怎样组织的呢?常用的Cache结构通常有两种,通视(Look-through)结构和旁视(Look-aside)结构。Look-through结构设计了处理器局部总线和系统总线以及存储器总线之间的隔离措施,将Cache控制器置于处理器局部总线和系统总线以及存储器总线之间。而Look-aside结构则没有隔离处理器局部总线和系统以及存储器总线的措施。处理器直接与系统总线和DRAM相连,Cache控制器则被安置在总线的一旁。在Look-through的结构中,当处理器需要访问存储器,首先进行Cache目录查找,看Cache中是否存在所需存储器信息的副本。如果Cache命中,处理器将以零等待状态访问内部Cache,处理器发出的存储器请求信息不会被传送到主存储器和系统总线上。所以减少了系统总线和存储器总线的使用时间,允许并发操作的发生。两个总线主设备在同一个系统中可以同时运行是Look-through Cache 结构的主要优点。处理器能够以零等待态访问它的本地Cache(Look-through),而另一个总线主,比如DMA或其它智能控制器,可以利用系统总线或存储器总线访问存储器,两种操作相互不会发生干扰,可以同时进行。Look-through结构还可以支持多处理器系统。因此Look-through Cache结构的性能优于Look-aside结构。这种结构的不足是,在Cache不命中的情况下,Cache目录查找延迟了请求存储器访问的时间。另外由于结构复杂,设计制造的难度使得价格高于Look-aside Cache结构。在采用Look-aside Cache结构的系统里,一旦处理器启动一个总线周期,系统中的所有设备都要检测这个总线地址,就象系统中没有Cache 那样。这种结构虽然简单廉价,但系统总线占用率高,多个总线主设备无法并发工作。Pentium的存储器系统多采用Look-through Cache结构。Pentium微处理器内部集成了8K字节的代码Cache和8K字节的数据Cache,称之为L1级Cache。处理器通过L2级Cache控制
器连接L2级Cache。系统的主存DRAM是经过双端口的DRAM控制器连接在L2 Cache控制器上的,L2 Cache控制器与Pentium处理器直接相连,起到了隔离处理器局部总线和系统以及存储器总线的作用。在Pentium系列的微机系统当中,芯片组(chip set)北桥和南桥分别连接了系统的存储器和系统总线并对它们进行控制,L2 Cache和L2 Cache控制器是北桥的一部分。微处理器和外部环境连接的信号分为6组:
- 地址信号;
- 数据信号;
- 总线周期控制信号;
- 监听控制信号;
- L2 Cache控制信号;
- 总线主控制信号。
处理器访问储存器的过程大致是这样的,首先查找处理器内部的L1 Cache,看其中是否存在目标存储器单元的备份,当发现所要访问的数据不在L1时,便产生对片外的存储器访问,此时,L2 Cache控制器将CPU发出的地址、数据与控制信号传递到L2 Cache控制器与存储器连接的总线上,先进行对L2 Cache的访问。如果发现要访问的数据仍然不在L2中,才启动对主存储器DRAM的访问。不管在那一级存储器中找到了要寻址的单元,对目标访问以后,都要设置和修改维护数据一致性的MESI标志。
2、Pentium Cache 组织原则
代码Cache和数据Cache采用了二路组相联的结构。我们称这两个高速缓存存储体为0路和1路。0路和1路各包含128个Cache行,并且都拥有一个由128个目录项组成的目录与它相关联,Cache行和目录项一一对应。Cache的目录有三个可以同步访问的端口。其中两个端口分别对应于流水线U和V,它们支持对两路组兼容的访问。另一个端口用于监听系统中其他处理器对存储器的操作。每个Cache行都包含32字节,如果是代码Cache,处理器每次从Cache读取32个字节的数据,将它们送到预取队列。代码Cache是只读的,它只使用了MESI协议的一部分(S和I)。数据Cache的结构和代码Cache基本相同,由于数据Cache 是可读写的,它使用了完全的MESI协议。下面以数据Cache为例对Cache结构以及Pentium 微处理器与存储器的关系进行讨论。
Cache控制器把主存看成是由和Cache路大小相同的页组成。Pentium二路组相联Cache的每一路是4K字节,这就意味着4GB的存储空间被分为1048576页,页号从0到1048575,每页大小都是4K字节。从结构上,每个主存页也被看成与一路Cache格式相同,每页具有128行(0~127),每行32字节。每当从主存读出一行数据进行Cache行替换的时候,数据总是被装在与主存页中行序号相同的Cache行当中。主存的页面地址同时被记录在相同序号的目录项中。
从Cache控制器的角度,也可以清楚地看出目录项和访问端口各部分的作用。在每一路Cache 中,每个目录项对应一个Cache行。目录项包含20位的标记域、1位校验域和2位状态域。标记域记录了装入Cache行的数据来源于哪个主存页,即主存页的地址(A31~A12)。这是记录Cache数据与主存储器关系的唯一标志。一位的校验位在每次更新目录项时产生并写入。两位状态位指出Cache中的行所包含的信息的M、E、S、I状态。访问目录的端口包括三个部分,20位的标记域记录了目标存储器高位地址A31~A12,指出目标地址属于主存的哪一页;7位的行域记录了目标存储器次7位地址A11~A5,指出了目标地址是页中的哪一行,也就是数据可能存在于Cache路中的哪一行;最低2位是双字域,指示了目标存储器A4~A2三位地址,指出所要访问的双字在行中的哪一排(bank),也就是cache行中的位置。
当流水线需要从存储器读数据(或向存储器写结果)时,便给出了要访问的存储器地址,令Cache控制器通过目录端口在Cache目录中查找,看Cache中是否存在该存储单元的副本。