4 2 存储器 读写 指令 的发射与执行1

上传人:小** 文档编号:89120418 上传时间:2019-05-18 格式:DOC 页数:4 大小:19.50KB
返回 下载 相关 举报
4 2  存储器 读写 指令 的发射与执行1_第1页
第1页 / 共4页
4 2  存储器 读写 指令 的发射与执行1_第2页
第2页 / 共4页
4 2  存储器 读写 指令 的发射与执行1_第3页
第3页 / 共4页
4 2  存储器 读写 指令 的发射与执行1_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《4 2 存储器 读写 指令 的发射与执行1》由会员分享,可在线阅读,更多相关《4 2 存储器 读写 指令 的发射与执行1(4页珍藏版)》请在金锄头文库上搜索。

1、4 2 存储器读写指令的发射与执行1原文地址:4.2存储器读写指令的发射与执行1作者:sailing在CPUCore中,一条存储器指令首先经过取值,译码,Dispatch等一系列操作后,率先到达LSU(Load/StoreUnit)部件。LSU部件可以理解为存储器子系统的最高层,在该部件中包含LoadQueue与StoreQueue。其中LoadQueue与StoreQueue之间有着强烈的耦合关系,因此许多处理器系统将其合称为LSQ。在多数处理器的存储器子系统中,LSU是最顶层,也是指令流水线与Cache流水线的联系点。LSU部件是指令流水线的一个执行部件,其上接收来自CPU的存储器指令,其

2、下连接着存储器子系统。其主要功能是将来自CPU的存储器请求发送到存储器子系统,并处理其下存储器子系统的应答数据和消息。在许多微架构中,引入了AGU计算有效地址以加速存储器指令的执行,使用ALU的部分流水处理LSU中的数据。而从逻辑功能上看,AGU和ALU所做的工作依然属于LSU。在一个现代处理器系统中,LSU部件实现的功能较为类同。LSU部件首先要根据处理器系统要求的MemoryConsistency模型确定Ordering,如果前一条尚未执行完毕存储器指令与当前指令间存在Ordering的依赖关系,当前指令不得被Schedule,此时将Stall指令流水线,从来带来较为严重的系统惩罚;LSU

3、需要处理存储器指令间的依赖关系,如对同一个物理地址的多次读写访问,并针对这种RaceCondition进行特殊优化;LSU需要准备CacheHierarchy使用的地址,包括有效地址的计算和虚实地址转换,最终将地址按照L1Cache的要求将其分别送入到Tag和状态阵列。L1Cache层面需要区分是存储器读和存储器写指令。无论是存储器读还是写指令穿越LSU部件的过程均较为复杂。为缩短篇幅,下文重点关注存储器读指令的执行。存储器读操作获得物理地址后将进行CacheBlock的状态检查,是Miss还是Hit,如果CacheHit,则进行数据访问,在获得所需数据后更新在LSU中的状态信息。如果在L1C

4、ache中Miss,情况略微复杂一些。在现代处理器系统中,Non-BlockingCache基本上是一个常识般的需求,为此首先需要在MSHR中分配空余Entry,之后通过L1CacheController向其下MemoryHierarchy发送Probe请求。在L1CacheController中,大多使用SplitTransaction发送这个Probe请求,之后经过一系列复杂的操作,这个操作涉及多核之间的Cache一致性,不同的一致性协议对此的处理不尽相同。在获取最终数据之后,回送Reply消息。LSU在收到这个Reply消息后将数据传递给指令流水线,并释放MSHR中的对应Entry。以上

5、这些操作可以并行执行,如使用VirtualCache方式可以直接使用虚拟地址,而无需进行虚实地址转换,可以将数据访问与Tag译码部件重叠,更有一系列预测机制进一步缩短数据Cache访问的延时。存储器写的过程较存储器读复杂一些,在L1CacheHit时,会因为状态位的迁移而带来一系列的BusTraffic;如果在L1CacheMiss,要首先取得对访问数据的Ownership或者Exclusive。获得Ownership的步骤与存储器读发生Miss时类似,但是只有在存储器写Commitment时,才能将数据真正写入到Cache中。在微架构的设计中,缩短Cache的访问延时与提高带宽是Cache流

6、水设计的一个永恒话题。这些话题可以空对空的讨论,搭建各类模型得出最后的量化分析报告。但是这些报告面对着ccNUMA处理器多级Cache设计的复杂度时,显得如此苍白无力。下文以AMD的Opteron微架构为主,进一步说明存储器读写的执行过程。我们从CacheHit时的Load-UseLatency这个重要参数的分析开始,进一步介绍CacheHierarchy性能的评价标准,最后详细说明Opteron微架构的LSU部件的工作原理。在多数微架构的数据手册中,Load-UseLatency的计算是从指令进入LSU之后开始计算,以指令从CacheHierarchy中获得最终数据作为结束。在不同的场景,如

7、其下的CacheHit或者Miss时,所得到的Load-UseLatency参数并不相同。在CacheHit时,AMDOpteron微架构凭借着VirtualCache,使得其L1Cache的Load-UseLatency仅为3个Cycle6,这是一个非常快的实现。在Intel近期发布的SandyBridge中,L1Cache的Load-UseLatency也仅为4个Cycle69。这个参数不能完全反映在一个处理器系统中CacheHierarchy的整体HitTime参数和存储器平均访问时间,远不能仅凭这一个参数得出Opteron的CacheHierarchy结构优于SandyBridge微架

8、构的结论。从许多Benchmark的指标上看,SandyBridge微架构在CacheHierarchy中的表现远胜于Opteron,VirginiaSTREAM的测试结果表明Opteron在Copy,Scale,And和Traid测试指标上优于Pentium4,却落后于使用NehalemXeon的AppleMacPro2009,如表4-1所示。表4-1STREAMstandardresults71DataMachineIDncpusCOPYSCALEADDTRAID2000.12.23Generic_Pentium4-140011437.21431.61587.71575.42005.02.

9、04AMD_Opteron_84814456.04503.64326.34401.42009.10.23Apple_Mac_Pro_200918427.68054.48817.48953.4Copy,Scale,And和Traid是VirginiaSTREAM定义的4个操作。其中Copy操作与a(i)=b(i)等效;Scale与a(i)=qb(i)等效;Add与a(i)=b(i)+c(i)等效;而Traid与a(i)=b(i)+qc(i)等效。由以上操作可以发现,STREAM的测试结果不仅和Cache层次结构相关,而且与主存储器带宽和浮点运算能力相关。这一测试指标并不能作为Opteron和Ne

10、halem微架构Cache层次结构孰优孰劣的依据。与存储器测试相关的另一个工具是lmbench,不再细述。这些Benchmark程序在相当程度上反映了Cache和存储器子系统的性能。但是在一个实际项目的考核中依然只能作为参考。对于这个设计,最好的指标一定从自身的应用程序中得出的。很多人会对这个说法质疑,因为许多应用程序的书写异常糟糕,没有用到很多的优化手段。但是面对着由数千万行组成,积重难返的应用程序,更多的人剩下的只有无奈。在Intel的Nehalem和SandyBridge微架构中,FLC访问延时均为4个Cycle1269,一个可能的原因是,Intelx86处理器在PentiumIV后并没

11、有采用VIPT(VirtuallyIndexedandPhysicallyTagged)方式1268组织L1Cache,而采用了PIPT(PhysicallyIndexedandPhysicallyTagged)方式1。Opteron微架构使用VIPT方式,访问L1Cache时可以直接使用VirtualAddress,从而可以节省一个时钟周期。但是Opteron的总线位数只有为64位。AMD最新的Bulldozer微架构,将总线位数提高为128b后,Load-UseLatency提高为4。确定存储器平均访问时间除了需要考虑HitTime参数之外,还需要考虑MissPenalty参数,Virtu

12、alCache并不能解决所有问题。当L1CacheMiss时,Opteron微架构访问PIPT结构的L2Cache时,依然需要使用TLB,TLB译码过程最终不会省略。采用VirtualCache还会带来CacheSynonym/Alias问题,需要设置RTB(ReverseTranslationBuffer)解决这一问题。使用这种方法除了要使用额外的硬件资源,而且在多核系统中还引入了TLBConsistency的问题。在一个微架构的设计中,VirtualCache和PhysicalCache间的选择依然是一个Trade-Off。在抛开VirtualCache的讨论后,我们专注讨论LSU部件。在

13、现代处理器系统中,为了提高存储器读写指令的执行效率,一个微架构通常设置多个LSU部件,这些LSU不是简单的对等关系,而是有相互的依赖关系。简单对等相当于在一个微架构中设置了多个功能一致,异步执行的LSU部件。为了保证处理器系统MemoryConsistencyModel的正常运行,这些异步操作需要在运行的某个阶段进行同步处理,从而带来了较大的系统复杂度。这不意味着不采用这种对等设计可以避免这些同步问题,只是相对容易处理。在多数微架构中,多个LSU部件间通常是各司其职,并非完全对等。Opteron微架构的LSU部件也是采用了非对等的两个LSU部件。在介绍这些内容之前,我们需要了解Opteron微

14、架构的基本组成结构和流水线示意,如图42所示。在Opteron微架构中,存储器指令通过Fetch,decode,Dispatch阶段,并在所有Operands准备就绪后,经由Schedulerlaunch到对应的执行部件。上图中的Res部件全称为ReservationStation,这是Scheduler的一个重要组成部件。其中存储器读写指令需要使用IntegerScheduler,在这个Scheduler中包含一个AGU和一个ALU。Opteron微架构与存储器指令执行相关的部件由IntegerScheduler,Load/StoreQueue,L1Cache和其下的存储器子系统组成。Load/StoreQueue即为上文多次提及的LSQ,是OpteronLSU部件的重要组成部分。在LSU部件中除了具有LSQ之外,还有许多异常复杂的控制逻辑和与指令流水线进行数据交换的数据通路,是一个微架构的存储器子系统设计的起始点,是存储器指令的苦难发源地。1尚无可靠详细资料说明SandyBridge的L1Cache是VIPT还是PIPT。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号