流水线处理器中Cache模块的设计
来源:易妖游戏网
第10卷第32期2010年11月 科学技术与工程 Vo1.10 No.32 NOV.2010 l67l~1815(2010132—8084—06 Science Technology and En ̄neefing ⑥2010 Sci.Tech.Engng. 流水线处理器中Cache模块的设计 李红桥 肖建青张洵颖 龚龙庆 (西安微电子技术研究所,西安710054) 摘要流水线结构能大幅提高指令执行速度,但是由于主存读取速度过慢,系统性能的提升仍然受到。现实现的 Cache设计,是流水线与主存间的高速缓冲器,它能有效地解决访存的瓶颈问题,使流水线功能得到充分发挥。文章首先分析 流水线的结构特点,确定Cache的结构功能,在此基础上提出一个组相联映射Cache的设计。分析Cache实现读写操作的具 体控制过程,并给出LRU(1east recently used)替换算法的实现。最后通过介绍猝发取指操作着重讨论了Cache与流水线间的 配合机制。 关键词流水线 组相联LRU替换算法 文献标志码猝发取指 A 中图法分类号TP393.06; 处理器的处理速度高于DRAM主存的存取速 度,为了不让访存成为计算机系统性能的瓶 (1)取指级(IF):负责根据pc值从存储器中取 回指令。 颈,在高速的处理器和低速的主存之间设置一个高 速的缓存器——cache。cache的存取速度很快,接 近处理器的速度要求,但容量通常只有几十KB。根 (2)译码/寄存器访问级(IDA):将指令译码, 译出对应的操作数寄存器号,从寄存器中读到操作 数的值,并生成32位的立即数。 (3)执行级(EX):根据该指令的类型判断第二 个操作数是来自寄存器还是立即数,确定后进行运 算。如果是逻辑算术及移位指令,该结果就是运算 结果;如果是访存指令该结果就是访存地址。 (4)存储器级(MEM):根据执行级给出的地址 访问存储器。 据局部性原理,cache中只存放处理器当前或即将 要访问的那部分信息。通过有效的替换策略和取 指方式,cache能及时地更新自身内容,从而满足处 理器对指令及数据的高速需求。 流水线作为处理器中产生大量访存需求的部 分,其本身的结构特点和运行机制会对cache的组 织结构产生影响,所以cache的设计不仅要完成数 据查询更新等读写控制功能,还应当结合流水线的 结构,设计出cache与流水线配合控制机制。 (5)写回级(WB):将运算或访存指令的执行结 果写到寄存器中。 各级之间设有流水寄存器,如取指级和译码级 之间有寄存器IF/IDA,译码级与执行级有寄存器 1概述 1.1流水线结构 IDA/EX等。它们用以保存各级的处理结果,同时 将各级工作隔开,使流水线各部件不会互相干扰。 1.2 cache结构 流水线一般分为4到l2级,此处以5级为例, 流水线需要的信息分为两种:指令和数据。对 于流水线结构的处理器而言,会出现在同一周期同 时需要指令和数据的情况(IF级和MEM级)。如果 各级名称和功能分别是: 2010年9月1日收到 第一作者简介:李红桥(1985一),江苏人,硕士研究生,研究方向 嵌入式计算机应用。E-mail:ipo08@yahoo.Cn。 采用一个指令和数据统一控制的cache,那么它每次 只能提供一种信息,导致另一个流水级部件的需求 无法立刻满足;这种情形称为流水线结构冲突。发 32期 李红桥,等:流水线处理器中cache模块的设计 8085 生这种冲突后会导致流水线停顿,致使处理器效率 下降。为此,将指令和数据分别用两个cache控制, 址的低位部分做cache的地址。但是如果两块常用 的数据(指令)映射到cache中的同一块的话,那么 这种结构的cache称为哈佛结构,其分离的指令 cache(icache)和数据cache(dcache)能同时响应流 在执行时会发生频繁的替换,降低cache的命中率。 2.1.2全相联映射 水线对指令和数据的需求,避免了流水线的结构冲 全相联映射中,主存中的一块可以映射到cache 突。哈佛结构的cache在流水线中的位置见图1。 —— — —— —— — 骷 里量= —— 蛊J—l —f\、 .— l广U d_cac1h。L . 盏二暑凸— 毋 ] 一 DAⅡ)A,EX EX,^.1 M 任 f,WB 图1 流水线中哈佛结构的cache Icache作用于流水线的取指级。它根据输入的 pc值取出对应的指令,将其存放在IF级与IDA级 之间的流水寄存器IR中。Dcache用于存储器访问 级。它根据输入的地址、数据和相应的读写控制信 号来完成操作。如果对应的指令或数据没有放在 cache中,那么cache会启动访存操作,取回需要的 信息或向主存写入修改的数据,这一过程不须处理 器介入。 2 cache子模块设计 2.1 cache的地址映射与地址变换 将cache和主存都划分为同样大小的块,每块 容量通常为4或8个字。地址映射机制规定了主存 中的块与cache中的块之间的对应关系。根据地址 映射机制,可以对主存地址进行相应的变换,得到 cache中的地址。地址映射机制有以下三种: 2.1.1 直接映射 在直接映射中,cache的块与主存的块有如下 映射关系: C=M mod C6。 其中 为主存块号,C为cache块号,C 是cache的 块容量。在该映射方式下,主存中的一块只能映射 到cache中唯一的位置上。这种映射方式的好处是 实现起来结构简单,地址变换时可以直接用主存地 中的任意一块中,它是最为灵活的一种地址映射机 制,命中率很高,但是这种灵活的映射机制为寻址 带来不便。由于没有特定的地址映射关系,地址变 换不能定位到cache中的某块,要进行查找只能将 主存地址和cache中各块的地址标记分别进行对 比,实现起来较为复杂,速度也慢。 2.1.3组相联映射 组相联是全相联与直接映射方式的一个折中。 它将cache和主存按同样大小的“段”进行划分。 在cache中,每段称为一路。将划分为k路的cache 称为k路组相联。cache所有路内相对块号一样的 块组成一组。在k路组相联中,主存中的段与cache 中的路是全相联,但是段内各块到cache路内各块 的映射是直接映射。主存与cache之间的映射关系 如下: S=M mod 。 s为cache的组号, 为cache一路中的块容 量。上式说明,主存中的一块可以映射到cache的 一组中,而k路组相联的cache每组有k块,也即主 存中的一块可以映射到cache中某组k块的任意 一块。 具体地址变换见图2。 wordl 0O ...............J1.....一 l O 图2 cache的地址变换 组相联将主存地址分为4部分,最低两位是主 存的字节编码,cache寻址到字,所以这两位恒置0。 word字段是块中的字编码。set字段是主存段中的 块编码,由于组相联cache中路和主存的段容量一 样,所以set,word字段可以直接用来对cache寻址。 tag字段可以认为是主存的段编码。由组相联映射 关系可知,主存同一的段中的块是不会分到cache 8086 科学技术与工程 1O卷 一组中的,所以段编码用于区分cache属于同一组 组相联映射方式的映射方式比直接相联灵活, 中,能使流水线访问时间缩短数个周期,显著提升 流水线效率。写操作只有dcache支持,因为icache 中存放的是指令,不允许被修改。如果是第一次向 的各块。 实现结构比全相联简单,命中率接近全相联。它的 综合性能较高,所以应用广泛。 2.2 cache的读写操作控制 某地址写入,会发生写不命中。这种情况下;dcache 一定会改写主存,之后根据具体的写策略决定该数 据要装入dcache(按写分配策略)或是不装入主存 (不按写分配策略)。如果dcache中存有该数据副 cache是分层存储中的一级,所以它最基本的 功能就是完成处理器读写存储器操作。 对于一个读操作来说,第一次读取某地址,会 发生读不命中(读缺失),即cache中没有该数据,要 先从主存中读出并返给流水线,同时自己保存一个 副本。如果下次又访问同一地址,cache中还保留 有该数据的话,那么该操作会直接由cache完成,不 需要访问主存,这种情况称为命中。cache一旦命 本,此时发生写命中。dcache中的数据被改写,随 后根据写命中情况下的写策略,决定改写后的数据 会立刻写入主存中(写直达策略)或者是等待该数 据要被替换出去时再写入主存(写回策略)…。 图3中所示为两路组相联的dcache。icache的 寻址和命中判断控制逻辑结构与其相似,只是没有 写操作部分的控制 。 写不命中 19 比较逻辑 图3 dcache读写操作控制通路 cache的存储器结构如图3中虚线框所示,除了 当cache接到流水线发出的地址后,利用地址 的set字段通过译码器选通对应的组,word字段选 存储数据块,还要保存与各块数据相对应的tag标 记和有效位。如前所述,tag标记是各块中字的主存 通组中各块的对应字及其有效位,为了确定是组中 的哪一块命中,需要将各块的tag标记分别和地址 的tag字段进行比较,图3中的比较逻辑是由异或 地址的tag字段。保存tag字段是为了区分组中各 块,然而块中的各字公用一个tag标记,块中有的字 所对应的tag标记可能与其不同。这时可以设置有 效位加以标明。块中每个字都与有效位中的一位 相对应,如果该字地址的tag字段与该块中保存的 门和或非门构成的电路,它会将两数进行逐位对 比,如果全部相同,那么它输出高电平,否则,输出 低电平。比较结果相同后,还要将比较结果和对应 块中字的有效位值进行与运算,输出结果为高且读 值一致,则该位值为1,否则为0。 32期 李红桥,等:流水线处理器中cache模块的设计 8087 信号有效,则发生读命中,否则发生读缺失。如果 是写操作,那么只要比较逻辑的输出为高电平,而 且写信号高电平有效,就说明发生了写命中,否则 就写不命中。 当发生读命中时,三态门0或1中对应命中块 的那一个就打开,命中字被送到CPU。如果读缺失 了,三态门5打开,主存查询的结果送给cache,由 cache将其返回给CPU并进行更新。写cache的情 况只发生在数据cache中。写命中时,cache中的内 容被更改后,三态门6打开,更改的内容存放在写缓 冲中,在总线不忙的时候写入主存中。写不命中 时,CPU将绕过cache,直接写主存 J。 2.3替换机制 当发生读缺失的时候,如果cache已经装满了, 就要将原来的内容去掉,将新的数据或指令放在特 定的位置。对于多路组相联来说,这样的位置不是 唯一的,那么如何确定哪个被替换掉,需要根据具 体的替换算法来决定。常用的替换算法有随机替 换和LRU替换,随机替换,顾名思义就是将根据随 机选出的字替换掉,它的优点就是结构简单,容易 实现,但它的性能不高,会影响cache的命中率。另 一种是LRU算法(最近最久未使用算法),它将组中 最久未被使用过的块替换掉。如果一个数据很久 未被使用过,那么将来它也不太可能被访问到 J。 LRU算法参考历史使用记录来预测未来使用情况, 在一定程度上避免了可能还会被调用的块被替换 出去。该算法对cache的命中率提升有帮助,所以 付出一定的硬件代价是值得的。 LRU算法可以简单地表示为一个双射函数 J: LRUi:{0,1,…,凡一1}一>Wi 凡为cache的相联度,Wi为cache第i组n路数 据块的集合,LRUi(0)为最近使用过的块,LRUi(n 一1)为最久未使用的块。 该算法如图4(a),图4(b)所示。 当发生读缺失时,缺失块会将对应组中的LRU 块替换掉,更新后该块就成为最近刚使用块,其他 块要依次向链尾方向移动一位;发生命中时,命中 块成为最近刚使用过的块,它调到链首时,原先在 原Wi 新Wi (a)读缺失时的LRU序列调整 LRUi(0)LRUi(1)LRUi(2)LRUi(3)LRUi(n一1) 原Wi f l I … J n.1 l L—___L—— 新Wi … i. ... .1...........___ (b)读命中时的LRU序列调整 图4 LRU算法 它前方的链块要依次向链尾移一位,而原先位于其 后方的链块的位置则保持不变。 具体的LRU算法硬件逻辑结构如图5所示。 NA NR N h1 CP 图5 LRU算法的硬件实现 它实现的是4路组相联cache的LRU状态记 录。每一路的编号由两个触发器保存。CP为时钟 信号,h0hl为本次访问的块号,AOA1,BOB1,COC1, DOD1这8个D触发器分别保存着cache对应组的 四块块号,为讨论方便起见,设触发器保存的块号 与触发器同名。AOA1是最近使用过的块号,DOD1 是最久未使用的块号,即为下次不命中时被替换的 块号。三个控制信号NA,NB,NC分别为高时表示 当前访问的块号不是AOA1,BOB1,COC1。具体的 逻辑表达式如下: NA=(h0^A0)V(h1^A1) NB=(h0八B0)V(h1八B1) NC=(hO八CO)V(h1^C1)。 8088 科学技术与工程 10卷 如果h0hl是缺失块,那么NA,NB,NC均为高 电平,在时钟脉冲的作用下,h0hl打入触发器AOA1 中,而其保存的块号AOA1打人到触发器BOB1中, 其他触发器也是如此,直到触发器DOD1中被打入 值COC1,其原来保存的块号被替换掉。 如果hOhl是命中块(设它等于BOB1),那么 NA信号为高电平,NB信号为低电平,使得时钟脉 揣 』票 象 勰。禀憩瓣f … 冲到来时hOhl打人到触发器AOA1中,而块号 AOAI则打人到触发器BOB1中。其他触发器保持 原值,这样就生成了新的LRU状态。 其他相联度不同的cache也可以按此思路实现 LRU替换算法,但是考虑到要进行相联比较,速度 较低,不适用于相联度较大(如8路或16路)的 cache。 2.4 icache的猝发取指 icaehe如果不命中,则需要向主存发送查询请 求。等待指令返回需要若干周期,在此期间如果Iu 的取指级继续让pc不断的生成下条指令的地址,那 么取到的指令肯定是无效的,而且等缺失指令返回 时,当前pc已经不是该指令的pc了 J。所以, icache在读缺失的情况下,要向Iu发送一个低电平 的holdn信号,令流水线挂起,停顿下来保持当前状 态。直到缺失字返回,holdn信号拉高,取指级接受 该条指令,整条流水线继续向前推进。 猝发取值,是指在发生读缺失之后,不仅要从 主存中取回缺失字,还要取回该块中后续的字。后 续字的地址通过缺失字地址逐次加一生成,直到将 icache块中最后一个字取回更新完。在此期间,只 要程序是顺序执行的,那么主存返回一个字,icache 就将holdn信号拉高一个周期,使得流水线推进一 拍。如果猝发期间执行了跳转指令,那么要等更新 完icache的这块以后,它才能对跳转目的地址进行 查询。 如图6所示,M—ready为高电平表示主存已经 将字返回,icache根据它来进行更新操作。I_READ- Y表示icache的字已经返回,Iu根据它确定icache 返回的字是否正确有效。FPC表示要取的指令的 pc值,DPC表示当前译码级处理的指令的pc值。M 图6猝发取指波形 一READY信号的第一次为高电平时,表示流水线取 指级发出的pc为A的指令已经从主存中读出了, 如果对应的I—READY信号也为高电平,说明此时 译码级DPC的pc值正好为A,所以icache可以将 该指令字返回给流水线的译码级,并拉高holdn信 号,让得到新指令的流水线流动一拍,然后继续查 询缺失字的后续字。图中Pc值为A+1,A+2的指 令执行也是同样道理,当FPC取到了一条pc为B 的跳转目的指令,照常将第A+2条指令返回给译 码级,但不拉高holdn信号,继续保持流水线的停 顿,直到猝发取指完成。当pc为A+3的指令返回 时,因为指令pc和dpc不一致,I—READY信号为 低,所以它不返回给译码级。 猝发取指的优势可以用简单的计算说明,假设 单字取指时icache与主存建立握手通信的时间是3 个周期,而从主存中读一个字的时间是4个周期,那 么不猝发的情况下从主存中取回4个单字的时间是 (3+4)x4=28个周期,如果采用猝发取指,那么只 需要3+4+4x3=19个周期。大部分情况下指令都 是顺序执行,所以猝发取指可以有效地减小系统在 不命中时的开销。 3结论 本文结合流水线结构给出了一种片上cache的 实现。在设计中,cache采用哈佛结构,避免了流水 线访存的结构冲突;指令cache和数据cache都是组 相联地址映射,硬件结构的实现较全相联简单,但 是命中率接近全相联;采用LRU替换算法,最大程 32期 李红桥,等:流水线处理器中cache模块的设计 8089 度地避免因替换块的选择不当而导致的缺失;指令 3 Handy J.Cache memory book(the second edition).Academic Press, cache发生读缺失后采用猝发取指的方式,减小了 1998 不命中时的时间开销。 。 Hennessy J L,Patterson D A.计算机体系结构:量化研究方法(第 三版).北京:电子工业出版社,2004 参考文献 5 张承义,张民选,刑座程.组相联cache漏流功耗.小型微型计算 机系统,2007;28(2):372—375 1 mud van der pas.Memory hierarchy in cache—based system.h ̄p:// 6 谢学军,叶以正,王进详,等.哈佛体系结构的cache控制器设计. sun.corn/blueprint.pdf 2002 November 计算机工程,2004;30(22):10o~1o4 2 Mano M M,Cheries R.Kime.逻辑与计算机设计基础(第三版). 北京:中国电力出版社,2004 Design of the Cache in the Pipeline Processor LI Hong—qiao,XIAO Jian—qing,ZHANG Xun-ying,GONG Long-qing (Xi’an Microelectronics Technique Institute,Xi’an 710054,P.R.China) [Abstract]The pipeline could increasing the speed of executing instructions greatly,but the processor perform— ance were still subjected to the time of accessing main memory.The cache described is a high speed buffer between the pipeline processor and main memory,it can break the bottleneck,bringing the pipeline into full play.Firstly, the organization of the pipeline to determine the architecture of the cache is analyzad,then a design of a set—associ- ative cache is present,describing the operation of writing and reading,the realization of LRU algorithm.Lastly, how the pipeline processor and cache coordinate with each other by introducing the burst fillare Discussed. [Key words]pipeline set—associative LRU algorithm burst u (上接第8083页) 5 Wang Chuanmei,Zhang Bin,Li Guohui,et a1.Analysis and Research VoIP Network,2009--2009 IEEE International Conference on Net- 0f Association Pattern between Network Performance and Faults in work Infrastructure and Digital Content Research of VoIP Performance Simulation Based on NetFlow ZHENG Fei,ZHANG Xiao fei (Jiangsu Frontier Electric Technol晒es Co.,Ltd,Nanjing 21 1 102,P.R.China; School of Computer Science and Engineering,Jinagsu University of Science and Technology ,Zhenjinag 212003,P.R.China) [Abstract] NetFlow is a technology which can retireve statistics information of trafifc flow from actual network. By importing traffic flow pattern in actual enterprise network,represented by Netlfow format,into OPNET,the per— formances of newly added VolP application are tested.Through the comparison between C.7 1 1 and G.729,the most popularly used technologies in enterprise network,via simulation,the more suitable technology for current net. work situation are pointed out. [Key words] IP trafifc lfow analysis VoIP MOS R Factor