cache储存器

cache工作原理要求它尽量保存最新数据。当一个新的主存块需要拷贝到cache,而允许存放此块的行位置都被其他主存块占满时,就要产生替换。替换问题与cache的组织方式紧密相关。对直接映射的cache来说,因一个主存块只有一个特定的行位置可存放,所以解决问题很简单,只要把此特定位置上的原主存块换出cache即可。对全相联和组相联cache来说,就要从允许存放新主存块的若干特定行中选取一行换出。如何选取就涉及替换策略,又称替换算法。硬件实现的常用算法主要有以下三种。1)最不经常使用(LFU)算法LFU算法认为应将一段时间内被访问次数最少的那行数据换出。为此,每行设置一个计数器。新行调入后从0开始计数,每访问一次,被访行的计数器增1。当需要替换时,对这些特定行的计数值进行比较,将计数值最小的行换出,同时将这些特定行的计数器都清零。这种算法将计数周期限定在两次替换之间的间隔时间内,因而不能严格反映近期访问情况。2)近期最少使用(LRU)算法LRU算法将近期内长久未被访问过的行换出。为此,每行也设置一个计数器,但它们是cache每命中一次,命中行计数器清零,其他各行计数器增1。当需要替换时,比较各特定行的计数值,将计数值最大的行换出。这种算法保护了刚复制到cache中的新数据行,符合cache工作原理,因而使cache有较高的命中率。

对2路组相联的cache来说,LRU算法的硬件实现可以简化。因为一个主存块只能在一个特定组的两行中来做存放选择,二选一完全不需要计数器,只需一个二进制位即可。例如,规定一组中的A行复制进新数据可将此位置“1”,B行复制进新数据可将此位置“0”当需要置换时,只需检查此二进制位状态即可为0换出A行,为1换出B行,实现了保护新行的原则。奔腾CPU内的数据cache是一个2路组相联结构,就采用这种简捷的LRU替换算法。3)随机替换随机替换策略实际上是不要什么算法,从特定的行位置中随机地选取一行换出即可。这种策略在硬件上容易实现,且速度也比前两种策略快。缺点是随意换出的数据很可能马上又要使用,从而降低命中率和cache工作效率。但这个不足随着cache容量增大而减小。研究表明,随机替换策略的性能只是稍逊于前两种策略。

3.6.4cache的写操作策略由于cache的内容只是主存部分内容的副本,它应当与主存内容保持一致。而CPU对cache的写入更改了cache的内容。如何与主存内容保持一致,可选用如下三种写操作策略。1)写回法(write back,copy back)写回法要求当CPU写cache命中时,只修改cache的内容,而不立即写入主存只有当此行被换出时才写回主存。这种方法使cache真正在CPU-主存之间读/写两方面都起到高速缓存作用。对一个cache行的多次写命中都在cache中快速完成,只是需要替换时才写回速度较慢的主存,减少了访问主存的次数。实现这种方法时,每个cache行必须配置一个修改位,以反映此行是否被CPU修改过。当某行被换出时,根据此行修改位是1还是0,来决定将该行内容写回主存还是简单弃去。如果CPU写cache未命中,为了包含欲写字的主存块在cache分配一行,将此块整个复制到cache后对其进行修改。主存的写修改操作统一留到换出时再进行。显然,这种写cache与写主存异步进行的方式可显著减少写主存次数,但是存在不一致性的隐患。2)全写法(write through)全写法要求当写cache命中时,cache与主存同时发生写修改,因而较好地维护了cache与主存的内容的一致性。当写cache未命中时,只能直接向主存进行写入。但此时是否将修改过的主存块取到cache,有两种选择方法一种称为WTWA法,取主存块到cache并为它分配一个行位置另一种称为WTNWA法,不取主存块到cache。全写法是写cache与写主存同步进行,优点是cache中每行无须设置一个修改位,以及相应的判断逻辑。缺点是,cache对CPU向主存的写操作无高速缓冲功能,降低了cache的性能。3)写一次法(write once)写一次法是基于写回法并结合全写法的写策略写命中与写未命中的处理方法和写回法基本相同,只是第一次写命中时要同时写入主存。这是因为第一次写cache命中时,CPU要在总线上启动一个存储写周期,其他cache监听到此主存块地址及写信号后,即可复制该块或及时作废,以便维护系统全部cache的一致性。奔腾CPU的片内数据cache就采用了写一次法。

Pentium4处理器的核心由下列四个主要部件组成取指/译码单元按顺序从L2 cache中取程序指令,将它们译成一系列的微指令,并存入L指令cache中。乱序执行逻辑依据数据相关性和资源可用性,调度微指令的执行,因而微指令可按不同于所取机器指令流的顺序被调度执行。执行单元它执行微指令,从L数据cache中取所需数据,并在寄存器组中暂存运算结果。存储器子系统这部分包括L2cache、L3 cache和系统总线。当L、L2cache未命中时,使用系统总线访问主存。系统总线还用于访问V/0资源。不同于所有先前Pentium模式和大多数处理器所采用的结构,Pentium4的指令cache位于指令译码逻辑和执行部件之间。其设计理念是Pentium 4将机器指令译成由微指令维成的简单RISC类指令,而使用简单定长的微指令可允许采用超标量流水线和调度技术,从而增强机器的性能。

这样,用户编制程序时使用的地址称为虚地址或逻辑地址,其对应的存储空间称为虚存空间或逻辑地址空间而计算机物理内存的访间地址则称为实地证或物理地址,其对应的存请空间称为物理存储空间或主存空间。程序进行虚地址到实地址转换的过程称为理序的再定位。2.虚存的访问过程虚存空间的用户程序按照虚地址编程并存放在辅存中。程序运行时,由地址变换机构依据当时分配给该程序的实地址空间把程序的一部分调大实存。每次访存时,首先判断该虚地址所对应的部分是否在实存中如果是,则进行地址转换并用实地址访问主存否则按照某种算法将辅存中的部分程序调度进内存,再按同样的方法访问主存。由此可见,每个程序的虚地址空间可以远大于实地址空间,也可以远小于实地址空间。前一种情况以提高存储容量为目的,后一种情况则以地址变换为目的,后者通常出现在多用户或多任务系统中实存空间较大,而单个任务并不需要很大的地址空间,较小的虚存空间则可以缩短指令中地址字段的长度。有了虚存机制后,应用程序就可以透明地使用整个虚存空间。对应用程序而言,如果主存的命中率很高,虚存的访问时间就接近于主存访问时间,而虚存的大小仅仅依赖于辅存的大小。这样,每个程序就可以拥有一个虚拟的存储器,它具有辅存的容量和接近主存的访问速度。但这个虚存是由主存和辅存以及辅存管理部件构成的概念模型,不是实际的物理存储器。虚存是在主存和辅存之外附加一些硬件和软件实现的。由于软件的介入,虚存对设计存储管理软件的系统程序员而言是不透明的,但对应用程序员而言仍然是透明的。

cache和主存之间以及主存和辅存之间分别有辅助硬件和辅助软硬件负责地址变换与以便各级存储器能够组成有机的三级存储体系。cache和主存构成了系统的内存,而主存和辅存依靠辅助软硬件的支持支撑虚拟存储器工作。管理,在三级存储体系中,cache-主存和主存-辅存这两个存储层次有许多相同点。(1)出发点相同二者都是为了提高存储系统的性能价格比而构造的分层存储体系,都力图使存储系统的性能接近高速存储器,而价格和容量接近低速存储器。(2)原理相间都是利用了程序运行时的局部性原理把最近常用的信息块从相对慢速而大容量的存储器调入相对高速而小容量的存储器。但cache-主存和主存一辅存这两个存储层次也有许多不同之处。(1)侧重点不同cache主要解决主存与CPU的速度差异问题面就性能价格比的提高而言,虚存主要是解决存储容量问题,另外还包括存储管理、主存分配和存储保护等方面。(2)数据通路不同CPU与cache和主在之间均可以有直接访问通路,cache不命中时可直接访问主存而虚存所依赖的辅存与CPU之间不存在直接的数据通路,当主存不命中时只能通过调页解决,CPU最终还是要访问主在(3)透明性不同cache的管理完由硬件完成,对系统程序员和应用程序员均透明而虚存管理由软件(操作系统)和硬件共同完成,由于软件的介入,虚存对实现存储管理的系统程序员不透明,而只对应用程序员透明(段式和段页式管理对应用程序员“半透明”)。(4)未命中时的损失不同由于主存的存取时间是cache的存取时间的5~10倍,而主存的存取速度通常比辅存的存取速度快上千倍,故主存未命中时系统的性能损失要远大于cache未命中时的损失。4.虚存机制要解决的关键问题虚存机制也要解决一些关键问题。(1)调度问题决定哪些程序和数据应被调入主存。(2)地址映射问题在访问主存时把虚地址变为主存物理地址(这一过程称为内地址变换)在访问辅存时把虚地址变成辅存的物理地址(这一过程称为外地址变换),以便换页。此外还要解决主存分配、存储保护与程序再定位等问题。(3)替换问题决定哪些程序和数据应被调出主存。(4)更新问题确保主存与辅存的一致性。在操作系统的控制下,硬件和系统软件为用户解决了上述问题,从而使应用程序的编程大大简化。

3.转换后援缓冲器(TLB)由于页表通常在主存中,因而即使逻辑页已经在主存中,也至少要访问两次物理存储器才能实现一次访存,这将使虚拟存储器的存取时间加倍。为了避免对主存访问次数的增可以对页表本身实行二级缓存,把页表中最活跃的部分存放在高速存储器中。这个专用于贡表缓存的高速存储部件通常称为转换后援缓冲器(TLB),又称为快表。而保存在主存中的完整页表则称为慢表,快表的作用是加快地址变换。多TLB的作用与主存和CPU之间的cache作用相似,通常由相联存储器实现,容量比慢表小得多,存储慢表中部分信息的副本,可以完成硬件高速检索操作。地址变换时,根据逻辑页号同时查快表和慢表,当在快表中有此逻辑页号时,就能很快地找到对应的物理页号。根据程序的局部性原理,多数虚拟存储器访问都将通过TLB进行,从而有效降低访存的时间延迟。图3.35显示了TLB的地址映射过程。

3.7.3段式虚拟存储器和段页式虚拟存储器1.段式虚拟存储器页面是主存物理空间中划分出来的等长的围定区域。分页方式的优点是页长固定,图而便于构造页表、易于管理,且不存在外碎片。但分页方式的缺点是页长与程序的逻辑大小不相关。例如,某个时刻一个子程序可能有一部分在主存中,另一部分则在辅存中。这不利于编程时的独立性,并给换入换出处理、存储保护和存储共享等操作造成麻烦。另一种划分可寻址的存储空间的方法称为分段。段是按照程序的自然分界划分的长度可以动态改变的区域。通常,程序员把子程序、操作数和常数等不同类型的数据划分到不同的段中,并且每个程序可以有多个相同类型的段。在段式虚拟存储系统中,虚地址由段号和段内地址(偏移量)组成。虚地址到实主存地址的变换通过段表实现。每个程序设置一个段表,段表的每一个表项对应一个段。每个表项至少包含下面三个字段(1)有效位指明该段是否已经调入实存。(2)段起址指明在该段已经调入实存的情况下,该段在实存中的首地址。(3)段长记录该段的实际长度。设置段长字段的目的是保证访问某段的地址空间时,段内地址不会超出该段长度导致地址越界而破坏其他段。段表本身也是一个段,可以存在辅存中,但一般驻留在主存中。针对每个虚地址,存储管理部件首先以段号s为索引访问段表的第s个表项。

e8518d504dbf4de88c52f30e5b5dc38a.jpg

ee8e38691fcc4543ab37174bb1baf807.jpg 

9f448751537f4c2699349e7718788712.jpg 

1580fd76988c48c699201935b78e4e7b.jpg 

959279287b5a4c9b9b3fba78bd7bfbbf.jpg 

f5375612a4b94a1ab2fe2b01545bbc39.jpg 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值