没有合适的资源?快使用搜索试试~ 我知道了~
沙特国王大学沙特国王大学学报www.ksu.edu.sawww.sciencedirect.comJournal of King Saud University一级异步Cache的FPGA实现及性能分析Mansi Jhamba,*,R.K.Sharmab,A.K.古普塔湾a印度新德里110078,Dwarka Sector 16C,Guru Gobind Singh Indraprastha大学信息和通信技术学院b印度NIT Kurukshetra电子和通信工程系接收日期:2015年2月19日;修订日期:2015年6月9日;接受日期:2015年6月27日2015年10月31日在线发布摘要为了以经济有效的方式弥合处理器和主存之间不断增长的性能差距,新颖的高速缓存设计和实现是必不可少的。缓存是能耗的主要部分(约为100%)。50%的处理器。本文提出了一种L1高速缓存的微流水线异步结构的高级实现。由于每个高速缓存存储器实现都是耗时且容易出错的过程,因此可合成和可配置的模型被证明具有巨大的帮助,因为它有助于以可再现和快速的方式生成一系列高速缓存。使用C元素实现的微流水线缓存充当分布式消息传递系统。本文实现的RTL高速缓存除了定时鲁棒性,我们的实现具有高的平均缓存吞吐量和低延迟。实现的架构包括两个直接映射,写通过数据和指令的高速缓存。该架构是在现场可编程门阵列(FPGA)芯片使用超高速集成电路硬件描述语言(VHSIC HDL)以及先进的合成和布局和布线工具。©2015作者。制作和主办由爱思唯尔B.V.代表沙特国王大学。这是一篇基于CC BY-NC-ND许可证的开放获取文章(http://creativecommons.org/licenses/by-nc-nd/4.0/)。1. 介绍*通讯作者。电 子 邮 件 地 址 : mansi. gmail.com ( M.Jhamb ) ,mail2drrks@gmail.com(R.K.Sharma),anilg699@rediffmail.com(A.K.Gupta)。沙特国王大学负责同行审查制作和主办:Elsevierhttp://dx.doi.org/10.1016/j.jksuci.2015.06.003在技术市场上,大多数处理器都是嵌入式的系统(Tennenhouse,2000)。微控制器、DSP、FPGA及 其组 合 作为 SoC 为 嵌入 式 系统 提 供了 解 决方 案(George等人,1999年)。由于FPGA在速度、密度和存储容量方面取得了显著的进步由于FPGA的不同功能,复杂性水平增加,从而增加了FPGA中的逻辑门的数量。1319-1578© 2015作者。制作和主办由爱思唯尔B.V.代表沙特国王大学。这是一篇基于CC BY-NC-ND许可证的开放获取文章(http://creativecommons.org/licenses/by-nc-nd/4.0/)。关键词异步;握手;缓存一级异步Cache在FPGA411电 路 .这 导 致 系统 中能 量 耗 散 增加( Anderson 和Najm,2004年; Shang等人,2002年)。另一个问题是处理器和主存的速度差异越来越大,这在从内存访问数据时会产生瓶颈虽然程序员想要无限的快速内存,但它太昂贵了。因此,最佳的解决方案是提供一个内存层次结构,其中每一级都比直接的更高级别更快,每字节更昂贵(Patterson和Hennessey,2003)。高速缓存是这个内存层次结构中的第一级现代多核处理器支持多级缓存以提高性能。 在大多数这样的系统中,高速缓存(最后一级高速缓存)通常由用于并发应用的处理器共享(Scholer等人, 2013年)。根据引用局部性原则,数据和指令表现出时间和空间的局部性。这一原则形成了高速缓存存储器层次结构的基础,导致处理器性能取决于高速缓存的速度,而不是缓慢的主 存 。 处 理 器 45% 的 能 耗 来 自 缓 存 层 次 结 构(Segars,2001)。研究揭示,高速缓冲存储器参数的调整可有助于将能量消耗减少到62%(Ross等人, 2005),导致性能提高30%(Ross等人, 2004年)。为专用应用程序、模拟和分析确定适当缓存配置的复杂任务需要相当长的计算时间。为了在不影响性能的情况下减少面积和能量存在许多实现L1高速缓存的方法,并且所选择的设计策略影响处理器系统的完整行为(Bahar等人,1998; Milenkovic等人, 2003年)。为了自由选择实现参数,需要RTL模型。在逻辑模拟中,在设置高速缓存模型参数之后,可以采用期望的高速缓存这项工作提出了一个高层次的实现微流水线异步架构的L-1缓存使用FPGAs。2. 相关工作在嵌入式系统设计中,必须在能耗、性能和成本之间进行折衷。选择最佳高速缓存架构的关键任务包括选择总高速缓存大小、关联性量、高速缓存线大小和其他几个架构选项。这些特性极大地影响了缓存访问的命中率和能耗。当(i)高速缓存被访问时发生功耗。(ii)在高速缓存未命中期间,数据从/向下一个内存级别传输,并且在未命中发生时,数据也由空闲处理器传输。关联性将高速缓存隔离为多个路,在高速缓存访问期间同时查找每个路对于某些程序,缓存命中率在将 路 径 数 增 加 到 2 或 4 时 得 到 改 善 ( Patterson 和Hennessey,2003),超过4,则改善不显著。更多的方式意味着每次访问更多的并发查找,导致每次访问更多的能量:直接映射的缓存每次访问仅使用四路集关 联 缓 存 的 30% 的 能 量 ( Reinman 和 Joughman ,1999)。最高可能的关联性是在面向性能的应用程序所需的表1总结了嵌入式微处理器中几种高速缓存体系结构的特点。表1嵌入式微处理器中的高速缓存体系结构。处理器指令缓存数据缓存大小如.线大小如.线AMD-K6-IIIE32 K23232 K232IBM PPC 750CX32 K83232 K832IBM PPC 760316 K43216 K432IBM 750 FX32 K83232 K832IBM 403GCX16 K2168 K216IBM Power PC 405CR16 K2328 K232英特尔960IT16 K2N/A4 K2N/A摩托罗拉MPC824016 K43216 K432摩托罗拉MPC823E16 K4168 K416摩托罗拉MPC854032 K432/6432 K432/64摩托罗拉MPC745532 K83232 K832Xilinx Virtex IIPro16 K2328 K232一 种 新 颖 的 可 配 置 高 速 缓 存 架 构 ( Zhang 等 人 ,2005)合并了三个可配置的高速缓存参数,这些参数在设置配置寄存器中的几个位时进行配置。高速缓存可以在软件中配置为直接映射、双向或四路集关联,同时利用高速缓存的全部容量。这样的配置是通过采用一种称为路级联(张例如,2003年a)。这种技术被称为线连接(Zhang et al.,2003b)用于配置高速缓存线大小。文献中报道了几种用于减少缓存中的能量消耗的架构。其中之一是将缓存划分为几个较小的缓存(Racunas和Patt,2003)。这导致访问时间和每次访问的功率成本的减少。另一种方法,过滤缓存(Kin等人,1997年)通过一个非常小的L1高速缓存过滤高速缓存引用,以性能换取功耗。一个L2缓存类似的结构和大小的L1缓存被放置在过滤器缓存后,以尽量减少性能损失。一个不同的替代方案,选择性缓存方式(阿尔博内西,2000年),使能够禁用一组关联缓存的一个子集的方式在适度的缓存活动的间隔,而完整的缓存是可操作的缓存密集期。在另一种方法中,传统的统一数据高速缓存可以用多专用高速缓存替换。每一个都根据其特定的局部性特征来处理不同类型的存储器引用(Lee等人,2001年)。这些选项可以提高性能和功率效率。最后,Jin和Cho,2006通过利用空间局部性实现了L1缓存的节能。一个有用的流水线异步高速缓存系统的设计技术状态如所报道的(Nystrom等人,2003年)。在他们的工作中,流水线高速缓存系统被设计用于异步MIPS R3000兼容处理器。这种设计(Nystrom等人,2003)是其同类中的第一个,代表了用于高速异步CPU的L1高速缓存的QDI(准延迟不敏感)消息传递实现;为与现已过时的R3000高速缓存架构的设计兼容性做出了许多假设。异步模式具有低功耗、低噪声、模块化、可组合性和易于与现有系统集成等潜在优势,证明它们在多种应用中是一时钟分配和对齐消耗了足够的资源,如布线,电源和面积(Elrabaa,2012)。异步412M. Jhamb等人设计技术赋予模块化、可组合性、低功耗和低噪声(Peeters,1996; Liljeberg等,2004年)。因此,它们可以提供一种潜在的替代方案。对于磁盘缓冲区高速缓冲存储器中的异步操作,使用这些算法可以显著提高性能和可靠性(Hac,1993)。这些算法允许处理器将文件写入缓冲区高速缓存,同时考虑系统中活动进程的数量和磁盘缓冲区高速缓存的队列长度。最大的缺点是缺乏支持自定时电路设计流程的CAD工具。到目前为止,他们的设计过程是使用现有的工具执行的,这意味着同步设计。这包括大量的全定制工作,这是非常耗时,因此昂贵。在此实现中,我们分析了流水线所提供的自定时电路的设计流程的功能。设计入门是VHDL,一种针对前端设计流程的编程语言。本文提出了一种L1高速缓冲存储器的微管道异步结构的高级实现我们的论文提出了一个扩展的基本设计报告(Nystrom等, 2003)来处理异步L1高速缓冲存储器的微流水线架构的高级实现。该设计已编码的硬件描述语言和Xilinx的FPGA。目的是比较流水线实现与相应的同步实现的性能分析了自定时实现的性能,并与同步实现进行了比较这项工作贡献了异步L-1高速缓存的RTL模型,其不 同 于 专 门 的 高 速 缓 存 生 成 器 ( Putnam 等 人 ,2009),并不是针对特定的处理器核心(CPU)定制的。我们应用了两种缓存结构:指令缓存(I-Cache)和数据缓存(D-Cache)。在这个RTL模型中,从/到L-1缓存的读取和写入的复杂任务由状态机处理在该模型中,可选择I-Cache和D-Cache之间的仲裁,以支持对含有L-1 Cache的处理器进行单总线测试据我们所知,通用RTL模型的缓存不存在于公共领域在目前的sce- nario。该模型的缺点是:接口不可知,不能支持更深层次的流水线。一旦选择了CPU,就必须进行Cache和CPU的性能协同优化。3. 缓存为了描述模型的结构和参数,对缓存及其功能和术语进行了简要介绍。3.1. 基本术语和功能图中展示了高速缓存组织的一个示例。1.一、在我们的实现中,有一个专用的缓存指令和一个数据。数据和标记位构成每个高速缓存行,并且这些高速缓存行构成高速缓存。标记位表示与相应的高速缓存线相关联的主存储器地址。程序计数器用于寻址指令高速缓存,数据高速缓存从存储和加载指令中获取地址地址分为3个字段:标签(第一个字段),索引(第二个字段),行偏移(第三个字段)。的图1高速缓冲存储器的基本组织。第一个字段指示所请求的主存储器地址的MSB,第二个字段标识高速缓存行,第三个字段选择高速缓存行中的适当字。这适用于指令高速缓存和数据高速缓存。每当处理器想要从高速缓存读取数据或指令或将数据写入高速缓存时,在任何高速缓存存储器中都遵循基本的步骤序列。在完成从或到下一层次结构级别的传输期间,CPU停止。在程序开始时,当第一组数据和指令被发送到高速缓存,CPU正在停滞。通过将地址空间划分为类似于高速缓存行的大小的块,主存储器地址被映射到高速缓存条目这些块组合在一个页面中。页面大小等于高速缓存存储器阵列的大小,以便可以一次性将整个页面加载到高速缓存中。当CPU访问高速缓存时,来自存储器地址的标记与存储在高速缓存行中的标记字段以及字进行比较。当标签匹配并且设置了有效位时,这被称为缓存命中。否则,报告高速缓存未命中,指出高速缓存中不存在所需的数据。3.2. 缓存参数为了实现高度优化的高速缓存存储器,必须解决几个问题有几种技术可用于使高速缓存具有良好的高速缓存命中率,同时快速访问(Peir等人, 1998年)。在高速缓存的设计期间,必须决定与高速缓存相关联的各种参数。这些参数列在本节的其余部分中。o 高速缓存的地址-高速缓存可以与物理地址或虚拟地址一起工作(Peir等人, 1998年)。o 缓存大小和页面大小。o 地址映射方案三种常见的映射方案是直接映射、全结合映射和集结合映射。一级异步Cache在FPGA413oJoussee(1993)已经展示了写策略-此外,在高速缓存未命中的情况下,高速缓存可以遵循写分配或不写分配机制。3.3. 缓存操作图图2以仅由基本信号组成的状态转换的形式示出了I-Cache 的 操 作 。 I-Cache 是 由 三 个 状 态 组 成 的 MealyFSM。它必须只执行读操作,因为处理器只会从内存中请求执行指令,而不会将指令存储到内存中。当高速缓存通电时,它将进入刷新状态,在此状态下,它将进入已知的初始状态。为了避免假命中,所有有效位都为零。在 接 收 到 对 指 令 的 请 求 时 , 高 速 缓 存 切 换 到tag_compare状态,该状态涉及标签的比较和有效位的检查,以确保所请求的指令是否存在于高速缓存中。如果报告缓存命中(设置有效位且标签匹配),则在缓存保持当前状态的同时向CPU提供指令。如 果 存 在 高 速 缓 存 未 命 中 , 则 状 态 变 为Memory_Read,其中从主存储器加载所请求的指令。一旦高速缓存行被更新并且对应的有效位被设置,高速缓存返回到Tag_Compare状态并且将指令提供给处理器。中给出了数据缓存的状态转换图图三.它是一个Mealy有限状态机。 D-Cache不像I-Cache那样频繁地被访问在初始刷新状态(类似于I-Cache)之后,缓存进入空闲状态,等待来自CPU的请求。当 来 自 CPU 的 请 求 到 达 时 , 高 速 缓 存 进 入Tag_Compare状态,在此状态下,高速缓存比较标记并检查有效位以确定是否存在高速缓存命中或未命中。如果接收到的指令是Supply_Data 状 态 , 将 所 需 数 据 发 送 到 CPU 。 然后,它返回到空闲状态。如果接收到的指令是Memory_Read状态。数据从高级存储器传输到高速缓存中。一旦高速缓存行被更新并且相应的有效位被设置,高速缓存就进入Supply_Data状态。图2指令高速缓存的状态转换图。图3数据缓存的状态转换图。如果接收到的指令是Store_Data状态。CPU提供的数据存储在特定位置,缓存在存储数据后再次进入空闲状态如果接收到的指令是“写“并且存在高速缓存未命中,则高速缓存直接进入空闲状态。4. 设计4.1. 异步接口异步接口使用握手的概念,方便数据从一个模块移动到另一个模块,如图所示。 四、握手的过程被解释为以下步骤:步骤1.最初,所有四个握手信号都是低电平。步骤2.块A发出数据,同时将req_A拉高。步骤3.由于req_B为低,ack_A将变为高。此ack_A的上升沿也是数据寄存器的时钟信号。因此,data_A被加载到级寄存器。步骤4. ack_A信号也是下一个C元件的输入。当ack_A被断言为高时,它将req_B拉高。步骤5.当req_A变低时,ack_A也将变低。步骤6.第二C元件等待来自下一级的ack_B信号变高。当ack_B被断言时高则表示下一级已读取寄存器的输出数据。这会导致req_B变为低电平。步骤7.最后,对应于req_B变低,块B将ack_B信号拉低。4.2. 高速缓存架构每个缓存被分解为两个模块:控制和核心。高速缓冲存储器的操作由控制部分监控,它是●●●●●●●●●●●●414M. Jhamb等人●图4使用C元素的Muller流水线(a)结构,(b)4相捆绑数据握手协议。图5所示的处理器。它负责解码地址,调度重新填充并向核心发出指令核心包含一个256行存储器阵列,其中存储数据(D-Cache)或指令(I-Cache)以及标记位。每个高速缓存行关联四位标记核心还包含必要的电路来执行控制所指示的操作。每个高速缓存中的控制部分被进一步分成L-控制和R-控制,如图6所示,图6示出了D-高速缓存的详细架构。高速缓存的大部分部分使用单轨(1线用于1位信息)4相捆绑数据协议,从R-控制到L-控制的反馈使用4相双轨(2线用于1位信息)协议,以便于通信。核心只从一个地方控制,即,控制这使得控制流程可以是线性的,实施也更加系统化。此外,R-控制完全负责向更高级别的存储器发送请求以及向处理器发送结果,因为它在L-控制之前知道标签比较的结果该设计不支持部分字操作,即,不能访问小于一个字的数据。高速缓存使用物理地址并直接映射。为D-cache选择的写在写入操作的缓存未命中的只有在确定缓存命中/未命中后,才在两个缓存中进行数据传输此外,再填充物以四个为一组(页面大小为四个)制成每个再填充操作将四个字的数据(期望的数据和来自附近位置的数据)从高级存储器加载到高速缓存中。这是因为再填充在所花费的时间方面是昂贵的操作,因此减少再填充操作的次数是有益的。在下面的章节中,详细介绍了D-Cache各个模块的设计虽然I-Cache的模块与D-Cache的模块相似,但不同之处在于I-Cache中不存在写入机制因此,没有从处理器到I-Cache的输入指令或数据。4.2.1. L-控制的设计这是缓存的第一部分,它接收来自CPU的请求它的名字来源于左控制,因为它位于设计核心的左侧。对于I-Cache,从指令获取接收指令单元,而对于D-Cache,从指令解码接收指令。在D-Cache的设计中,假设处理器通过单个读/写信号发出指令,读由逻辑“0“给出,而写由逻辑"1“给出。L控制解码接收的16位地址,以使用地址的低8位(位0 然后,它将索引发送到核心,并将标签发送到R控制。此标记是在核心中选择的数据行中应该存在的预期标记。L控制在读操作的情况下向核发出“读“指令,在写操作的情况下发出”检查“指令。“blog“指令导致标签的比较。 如果所引用的存储器位置当前存在于高速缓存中,则高速缓存将仅写入数据,因此需要“检查“指令来避免不必要的写入。根据从R-控制接收到的反馈,L-控制决定下一步的行动。以下四种情况可能在收到反馈后发生:● 读操作中的缓存命中:L控制不采取任何操作。读操作中的高速缓存未命中:L控制向核心发出“refil1“指令。当R控制通过向主存储器发送请求来调度再填充操作时,L控制指示核心在数据到达时存储来自更高级别存储器的数据,然后将结果提供给处理器。写操作时的缓存命中:L-控制向内核发出“写“指令 , 以 将 处 理 器 中 的 数 据 实 际 存 储 在 缓 存 位置。● 写操作时缓存未命中:L控制不采取任何操作。L-Control可以向内核发出四条指令表2总结了这些情况。4.2.2. R-控制的设计这是D缓存的第三部分,它比较标签,向处理器发送数据和确认,并安排重新填充操作。它的名字来源于右控制,因为它位于核心的右侧。它包含一个“比较“单元,”发送“单元和一个”补充“单元。“com-task“单元比较从L-控制和核心接收的标签。它将结果发送到R-Control的其他两个单元以及L-Control。“发送“单元的存在是●一级异步Cache在FPGA415图5实现的缓存的架构组成(这里的内存是指下一个内存级别。表2L-控制向核心发出指令代码指令功能00读将数据和标签从指定位置01再填充将主存储器中的数据存储在单元指定,然后将数据从要求的R-控制10检查从指定的行发送标记到R-控制11写存储指定行中提供的数据图6 D-Cache的体系结构将正确的数据以及确认发送到处理器。在读操作期间如果有一个标签匹配(缓存命中),那么它将数据从核心转发到处理器以及确认。如果存在标记不匹配(缓存未命中),则等待用于重新填充操作的数据。一旦接收到它,它就会将数据连同确认一起发送给处理器。 在写操作的情况下,一旦操作完成,“发送”单元就简单地向处理器发送确认。“重新填充“单元负责在读取操作中的高速缓存未命中期间向存储器接口发出重新填充请求。一旦从较高的存储器级别检索到数据,“refill 1“单元就将其发送到”send“单元。当R-控制接收到来自L-控制的请求时,它存储从它接收的标签,然后确认请求。在接收到来自核心的请求时,R-控制将来自L-控制的标记(先前存储的)与来自核心的标记进行比较。如果它们匹配,则称发生缓存命中。否则,它是缓存未命中。比较结果作为反馈提供给L控制。内核使用附加控制信号Data_Enable向R-Control指 定 正 在 执 行 的 操 作 ( 读 或 写 ) , 对 于 读 操 作 ,Data_Enable设置为“1“,对于写操作,Data_Enable设置为”0“。 对于缓存命中的情况,如果Data_Enable为高,则R-Control从内核读取数据。在标记比较和读取数据之后,向内核发送确认(如果Data_Enable为高电平且存在缓存命中)。如果要发送数据,R-control将数据从内核发送到CPU,一种认可如果数据不被发送(意味着写操作),R控制等待核心存储数据。一旦核心存储了数据,它通知R-控制,然后发送确认到处理器。对于高速缓存未命中,R-control也会检查Data_Enable信号。如果Data_Enable为低电平,指示写操作,则R控制向处理器发送确认,因为所需的存储器元件不在高速缓存中,因此不需要写操作。但是如果它是高的,指示读操作,R控制发送一个请求到下一个存储器级别,该请求由存储器接口接收。存储器接口将请求转发到下一个存储器级别,然后确认来自R控制的请求。当高速缓存从更高级别的存储器接收到数据时,L控制和核心完成再填充操作。然后,由核心通知R控制。R-control将数据从内核发送到CPU,同时发送一个确认。4.2.3. 核心设计这是缓存内存的中间部分它包含一个256行的存储器阵列。每一行都能够保持8位(假设一个字是1字节)的数据和4位的标签。因此,每一行是12位的,这导致高速缓冲存储器的大小为3千位。256条线路被分成四组,每组64条线路每组进一步分为16个单元,每个单元有4条线。存储器阵列的这种组织作为层次结构有助于更快地访问存储器。有一个三阶段的过程来访问这些行。在第一阶段中识别四个组中的一个,在第二阶段中访问组内的单元索引的各个比特用于在每个访问阶段中进行选择。416M. Jhamb等人当内核接收到来自L控制的请求时,它使用接收到的地址找到正确的缓存位置。然后检查收到的指令。在“读取”或“检查”指令的情况下,核心将标签从位置发送到R控制。此外,它还在“读取“指令的情况下从该位置发送数据。最后,它设置Data_Enable信号的值,然后向R控制发送请求,向L控制发送确认。在“写“指令的情况下,核将在所选择的高速缓存位置中存储由L控制提供的数据。当核接收到“refil 1“指令时,它从存储器(由存储器接口提供)获取数据,并将其顺序地存储在第二访问阶段中选择的整个单元中。一旦完成再填充,它将向R-control提供所需的数据。在这两种情况下,核心在执行操作后通知R控制(在写入的情况下存储数据或在重新填充的情况下将所需数据加载到R控制的数据总线中)。然后它向L控制发送确认。4.3. 操作流程虽然在上一节中已经讨论了每个单独的模块,但是在本节中描述了高速缓存在执行读或写指令时的详细操作。图中的流程图。 7描述了操作流程。4.3.1. 读取操作读操作同时发生在I缓存和D缓存中。在高速缓存命中的情况下,它涉及三个主要的异步握手通信,在高速缓存未命中的情况下,涉及五个主要的异步握手通信。当L控制器收到来自CPU的请求时,它将读取地址总线中的值和来自CPU的指令信号。它检查指令以确定它是读操作还是写操作。一旦它决定这是一个读操作,它解码的地址,以产生标记和索引值。它将标记发送到R-Control,并将索引与读取指令一起发送这涉及握手图7读和写操作的流程。一级异步Cache在FPGA417图8(a)“回写”策略的读操作和(b)写操作通过模块之间的异步接口R-Control存储标签以供将来比较。一旦核心从L控制接收到请求,它就使用接收到的索引从其存储器阵列中选择高速缓存行然后,它将所选线路的标记字段与该线路的数据一起发送到R-Control核心将Data_Enable的值设置为“1“。 第二次握手是在内核向R-Control发送请求时执行的。R-控制比较来自核心的标记与从L-控制接收的标记,以确定是否存在高速缓存命中或高速缓存未命中。然后,它向L-Control发送反馈信号,通知比较结果。这里执行第三次握手,其中R-控制向L-控制发送反馈,并且L-控制对其进行确认。在高速缓存命中的情况下,L控制不采取进一步的动作。R-Control检查Data_Enable信号的值,由于该信号被内核设置为高,因此它从内核读取数据。然后,它确认来自核心的请求,并将数据与确认一起发送给CPU。当发生缓存未命中时,R-Control会向内存接口发送请求。这是在高速缓存未命中的情况下发生的第四次握手。然后,存储器接口将请求连同地址一起发送到下一个存储器级别。在接收到的数据块从再填充操作,灰,内存接口给出了一个信号,L-控制。这是在高速缓存和存储器接口之间发生的第五次握手。L-控制,然后指示核心,以执行-形成一个再填充操作,其中从内存总线的数据被加载到特定的块。然后,所需的数据与适当的控制信号一起提供给R-Control。然后,R-Control将数据与确认一起转发到CPU。418M. Jhamb等人图8(续)在这两种情况下,整个操作都在来自CPU的请求信号的一个周期内完成。在从高速缓存接收到确认时,请求信号被重置为其初始状态。对应于此,来自高速缓存的确认信号也被复位到其初始状态。缓存再次为下一个操作做好准备4.3.2. 写入操作写操作仅限于D-Cache。我们的高速缓存模型采用直写机制与无写分配的情况下,高速缓存未命中。在这种机制中,写操作同时在高速缓存和更高级别的存储器中执行,并且如果条目在该时刻不存在于高速缓存中,则不从更高级别的存储器加载一个写操作涉及四个主要的握手communi-阳离子的情况下,高速缓存命中和三个高速缓存未命中的情况下完成的任务与读取操作中的任务相同,直到R-控制将反馈发送到L-控制,只有三个不同。第一个是来自Store_Data总线上的CPU的数据也被读取并传递到内核。 第二种是L-Control向核心发出检查指令。这是因为核心将数据集_E设置为“0“。在缓存命中的情况下,L控制器向内核发送“写“指令。核心读取由核心发送的要写入的数据并存储在存储器阵列的正确行中。数据写入完成后,R-Control会收到通知,R-Control会向处理器发送确认一级异步Cache在FPGA419图9前端设计流程(Deliparachos等人, 2008年)。在高速缓存未命中的情况下,遵循的策略是未命中时不获取和未命中时不分配。因此,对核心不做任何更改写入是在更高的内存级别simul-through(直写策略)中进行的,因此缓存只是通过R控制向处理器发送确认。写操作时的缓存一致性:写操作同时在缓存和更高的内存中执行。在缓存命中期间,缓存不会接受另一个请求,直到写操作完成。高速缓存和更高的内存在写入之前和之后包含在高速缓存未命中的情况下,高速缓存不包含数据,并且不提取数据。在更新较高内存时,高速缓存不受因此,当读取写入的数据时,高速缓存将读取最近的数据。所以,缓存一致性是主要的-在任何时候都保持。与读操作类似,整个写操作在来自CPU的单个请求周期内执行。写操作不需要D-Cache和其他更高级别的存储器之间的通信。操作也使用图1中的流程图示出。7.第一次会议。4.3.3. 回写策略为了修改我们的设计,写回与写分配技术,我们必须添加一个额外的位在我们的高速缓冲存储器的数据总线。以前在数据总线上有8位数据和4位标签,但现在我们必须添加一个额外的位,称为脏位。高脏位表示高速缓冲存储器中的数据已被修改,但主存储器中的数据未被修改。低脏位表示数据未被修改。我们的设计的整体功能将被修改,如图所示。8.第八条。5. 设计流程我们的设计中遵循的自顶向下设计方法如图9所示。在这种方法中,主要考虑的是规范和电路功能。设计过程从体系结构的系统级建模开始。然后评估所实现的模型,并使用测试矢量值执行RTL和该设计已编码的超高速集成电路硬件描述语言(VHDL)。为了构建一个完全参数化的代码的设计,特别注意已采取编码不同的高速缓存块incor- porated与握手接口。使用RTL仿真确保电路的功能性。随后,执行逻辑合成,其中基于VHDL代码,该工具制作技术独立的原理图 。 然 后 将 电 路 优 化 为 所 选 的 FPGA 特 定 库(SPARTAN-3A、XC 3S 50 A)。在这一点上,它是重要的,tant定义特定的设计要求,时序约束和区域,因为它们是至关重要的综合。接下来,由XilinxISE(Xilinx 9.1i)综合工具创建的输入然后开始以下过程:首先,设计约束与输入网表文件一起被转换为Xilinx数据库文件。随后,将逻辑设计映射到XilinxFPGA器件上。在最后阶段,一旦在FPGA上执行布局和布线,布局和布线程序产生用于比特流生成器的输出。在接收布局和布线设计时,该程序生成用于Xilinx器件配置的比特流(.bit)。在FPGA文件编程之前,借助时序仿真,确保电路满足所需6. 执行本节演示实现缓存体系结构的结果。完成设计综合后,Xilinx ISE将设计转换、映射、放置和路由到FPGA器件上,如图10所示。Xilinx给出的FPGA利用率如表3所示。实现的高速缓存架构的HDL编码是完全参数化的。此功能增强了设计灵活性,可轻松用于不同规格的场景。7. 绩效评价在设计实现中,数据缓存和指令缓存都由256行12位组成,其中4行用作标记。因此,每个高速缓存的总量为3kbit到420M. Jhamb等人图10(a)完全缓存、(b)D-Cache和(c)I-Cache的架构验证高速缓存架构的功能,门级仿真进行如图2和3所示。11和12D-Cache设计中采用的数据和控制信号如表4所示。I-Cache的信号类似于D-Cache的信号。7.1. 门级仿真结果图11(a)示出了读取操作模拟。缓存加载了一些初始数据,以显示各种场景。第一个请求显示缓存命中。在第一次请求期间(req_in变为高电平),ins_in为低电平(读操作),地址为(0045)16。由于此地址是预加载的,因此存在缓存命中,并且高速缓存将数据提供给处理器。ack_out信号在数据加载到数据总线后变为高电平。当req_in变低时,ack_out相应地变低,从而完成握手。req_in变为高电平和ack_out变为高电平之间的持续时间是读访问时间。第二个请求显示缓存未命中的情况。当req_in变高,高速缓存读取地址(0005)16和指令。由于缓存中不存在该地址,D_Cache向内存接口发送重新填充请求存储器接口将请求与地址一起转发到更高的存储器这可以被看作是一个更改的地址和地址的请求变高。当来自内存的数据然后,正确的数据被提供给处理器,ack_out变高。当req_in变低时,则ack_out也变低。由于重填充操作的存在,高速缓存未命中的访问时间比高速缓存命中的访问时间要长第三个请求示出了在先前的高速缓存未命中之后的另一个高速缓存命中情况,并且最后一个请求再次是高速缓存未命中。图11(b)示出了D-Cache中的写操作的模拟。首先 , 对 地 址 ( 4545 ) 16 执 行 读 操 作 。 输 出 数 据 为(E5)16。然后,在相同位置执行写操作,新数据为(4E)16。接下来,在同一地址上执行读取操作。 输出数据变为(4E)16。因此,成功执行了写入操作。最后一个请求是缓存一级异步Cache在FPGA421图10(续)高速缓存仅向处理器提供确认的未命中。图12示出了在I-Cache上的读操作模拟。所采用的场景与D-Cache的场景类似。指令缓存和数据缓存的读写访问时间如表5所示。前面已经说过,我们的实现只考虑缓存,因此不包括主存访问时间。422M. Jhamb等人图10(续)一个外部的主存储器也被设计,这是能够与我们的高速缓存使用异步流水线接口。据发现,主存储器访问时间是10纳秒的顺序,这是相当高的高速缓存存储器访问时间相比。为了比较所实现的微流水线异步高速缓存体系结构与相应的同步对应物的性能,表6给出了同步版本的读取和写入访问时间。一级异步Cache在FPGA423表3实现的缓存的FPGA利用率架构使用可用利用完全高速缓存逻辑利用切片寄存器4761408百分之三十三用作触发器的444输入LUT8011408百分之五十六逻辑分布占用的切片503704百分之七十一包含相关逻辑的切片数只503503百分百总等效门数8378––宏观统计102––人字拖102––比较器2––复用器30––d缓存逻辑利用切片寄存器2441408百分之十七用作触发器的24––4输入LUT逻辑分配占用的切片4392741408704百分之三十一百分之三十八包含相关逻辑只274274百分百总等效门数4426––宏观统计44––人字拖44––比较器1––复用器25––I-Cache逻辑利用切片寄存器2171408百分之十五用作触发器的12––4输入LUT逻辑分配占用的切片3312051408704百分之二十三百分之二十九包含相关逻辑只205205百分百总等效门数3483––宏观统计26––人字拖26––比较器1––复用器5––存储器接口逻辑利用切片寄存器用作触发器的71408–百分之一4输入LUT逻辑分配占用的切片31211408704百分之二百分之二包含相关逻辑只2121百分百总等效门数613––424M. Jhamb等人宏观统计36––人字拖36––一级异步Cache在FPGA425表4高速缓存体系结构中与D-Cache相关的信号描述。信号描述Rst它是使高速缓存进入已知初始状态的一个NULL信号它是异步的,当此信号为高电平时,不能执行任何操作Req_in它是来自处理器的请求Addr_in它是来自处理器Ins_in这是处理器的指令低值指示读操作,而高值指示写操作Data_in它携带一个8位数据,在写操作M_Data它携带四个字的数据,在重新填充操作Mem_Ack这是来自更高级别内存的确认,表明它已经为来自缓存的重新填充请求提供了服务。在此信号变为高电平后,从更高级别的存储器读取Mem_Req这是从缓存发送到更高级别内存的请求,请求重新填充。该信号由存储器接口控制Mem_Addr这是由高速缓存发送到更高级别存储器的完整16位地址,用于重新填充Data_out此总线包含来自处理器Ack_out这是指定操作执行后从缓存发送到处理器的确认图11 3 kbits D-Cache的门级仿真(a)读操作和(b)写操作。图12 3 kbits I-Cache读操作的门级仿真。426M. Jhamb等人表5读写访问时间。数据高速缓存指令高速缓存读取命中(ns)4.34.1读缺失(ns)5.95.8写入命中(ns)5.8–未命中写入(ns)4.3–表6同步实现的读写访问时间。数据高速缓存指令高速缓存读取命中(ns)22读缺失(ns)33写入命中(ns)3–未命中写入(ns)2–8. 结论在这项工作中,我们提出了一个高层次的实现L1-Cache系统的基础上,面向异步通信的设计风格。高速缓存体系结构的每个单元都使用异步接口异步流水线(图1)。 4). 毫无疑问,由于处理大量握手所需的控制电路增加,增强的流水线增加了面积和能量,我们通过省略时钟产生、分配和门控节省了相当大的面积实现的高速缓存模型是可配置的许多参数,如行计数,行大小等,这种参数化允许实现的模型,以适应任何问题
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功