MorphCore文献精读2

《MorphCore: An Energy-Effificient Microarchitecture for High Performance ILP and High Throughput TLP》
本文的morphcore的目的是可以高性能执行单线程并且以高吞吐量执行多线程,且不消耗额外能量的微架构。Morphcore的工作原理是以2路乱序核为基础,通过增加取指部件以及一些操作可以转化成8路顺序核。我将从三方面讲这篇论文,分别是morphcore的结构、实验设计以及结果分析。
morphcore结构:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
将2路乱序核转换成8路顺序核的依据是如图2所示,随着线程数量增多,8路顺序核执行多线程加速比接近2路乱序核并且消耗能量更少。图一是2路乱序核架构,主要有取指、解码、重名、插入发射队列、选择、唤醒、读寄存器、执行、提交等阶段。图三是morphcore架构,最上面是两个模式共用结构,白色是乱序核独有结构,最下面的灰色是顺序核独有结构,由图中可以看出顺序核所需结构小于乱序核,因此功率更小,对于多线程顺序核运行速度更快,因此消耗能量更少。(后续有实验可以证明)。本文的架构改进均是基于2路乱序核提出的改进。
取指、重命名、插入发射队列阶段
在这里插入图片描述
在这里插入图片描述
图4是取指阶段,由图可以得知多了6个线程的上下文(6个pc、返回地址堆栈、分支记录寄存器以及指令缓存),因此在顺序核模式下可以从8个线程中选择指令。图5是重命名阶段结构以及插入发射队列结构,重命名阶段可以消除指令的读后写以及写后写相关即假相关。乱序核使用正常freelist查询发射队列空位,逻辑寄存器以及物理寄存器的映射关系存放在rat寄存器别名表中,然后由于乱序执行,所以会存在store-to-load问题以及load-to-store问题,因此要将load,store关系使用队列记录,避免问题。Rob作用是实现精确异常,通过指令顺序结束,从而使得寄存器状态按序保存,可以在一条指令异常的时候实现精确上下文保存。顺序核不需要使用额外数据结构保存映射关系,逻辑是将物理寄存器堆按照线程分堆,这样可以通过线程id以及逻辑寄存器id精确映射到物理寄存器上,由于线程顺序执行并且每次选择线程的两条指令执行,因此不会存在store-to-load问题或者是load-to-store问题,因此不需要load队列,但是有可能出现store-to-store问题,因此需要store队列。在插入保留站的时候,乱序核通过查询rs free list插入,顺序核通过先进先出方式插入保留站,并且保留站也是为每个线程划分一个区域。
选择唤醒逻辑以及存取单元
在这里插入图片描述
在这里插入图片描述
图六是morphcore的wakeup and selection logic。图7是morphcore的load/store unit。乱序唤醒:操作数就绪时match位置1,对应的R位置1。当指令发射后,广播其目的地址,和所有指令的源地址进行匹配,如果匹配成功,match位置1,delay字段设置与运行延迟相同,延迟字段在源地址的偏移字段内,每个周期偏移字段右移一位,当偏移字段为0,将r位置1。当所有源操作数的r位均为1时,发出请求执行信号。乱序选择:查看所有保留站指令选择请求执行的最老的指令。选择逻辑的输出是一个位向量,位向量每个位对应一个rs条目,指示下一发射指令。指令发射后,调度位置1,使该指令停止继续请求执行。顺序唤醒:在每个周期,检查每个线程的前两个指令,如果资源满足,那么将M位置1。顺序唤醒节能因为没有使用广播。顺序选择:每个线程有一个选择块,还有一个选择块从每个线程的输出中选择。线程选择块每次从线程最老的两个指令进行选择。执行以及提交:选择指令执行时,从prf中读取源操作数,结果在旁路广播。在顺序核模式下,增加了一个额外的PRF旁路以及数据存储,延迟结果写入prf。(为了防止有一个老指令还在运行没运行完,寄存器状态store可能异常。乱序模式,永久寄存器重名表更新,顺序模式下只需更新rob头指针。加载存储单元:ooo模式下load指令发射,更新指令到load队列并查找store队列。存储队列存储存储执行完毕但是还没写入cache的数据。因此可以通过load队列以及store队列控制访存顺序。
本文实验核心选择及其配置:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述利用McPAT模拟器进行多核处理器的模拟,表一给出的是5种处理器的配置,分别是2路乱序核,4路乱序核,中等核,小核以及morphcore。表二给出的是对比核心的特征,特征主要包括频率、发射宽度,核心数量,超线程个数、硬件面积、单线程以及多线程的ipc。表三给出的是选用的基准测试集,选用了14个单线程负载以及14个多线程负载。其中14个单线程负载选用的是SPEC2006的7个int基准测试集以及7个fp基准测试集。14个多线程负载选用的是不同领域负载。
结果分析
在这里插入图片描述
在这里插入图片描述
图8显示的是多线程负载下线程活动个数大于等于2或3时在整个运行时间中的占比。我们可以通过活动线程的数量进行模式的切换。图9显示的是单线程、多线程负载下几种核对于2路乱序核的加速比。从图9可以知道单线程负载下morphcore是仅次于2路乱序的处理器架构,大约是其性能的98.8%,原因可能是morphcore的主频下降了2.5%。对于多线程负载,morph,media,small平均性能分别提升了22%,30%,33%,应该是由于核心数量不同导致性能提升不同。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
图10显示的是单线程负载,多线程负载以及平均下几种核的加速、功率、消耗能量、能量延迟平方(兼顾高性能和低功耗时采用的一个评价指标)。A图加速比,morphcore在单线程负载排第二,是双路乱序核性能的98.8%,在多线程负载排第三,比双路乱序核优化了22%,平均下来morphcore性能是最优的。B图功率,morphcore在单线程功率排第二,多线程功率排第三,平均下来功率跟双路乱序核十分接近。C图能量,morphcore在单线程中能量是第二,多线程是第四,平均下来消耗能量约等于双路乱序核。因此morphcore对于双路乱序核的改进是在多线程负载情况下消耗能量更少,并且运行速度更快。最后一个是能量延迟积,在单线程负载以及多线程负载下都拥有这优秀的表现,并且平均下来,能量延迟积是几种核中最低的。图11是morphcore与corefusion的对比,morphcore在单线程上比corefusion性能高。图12显示的是单线程负载、多线程负载以及平均下两个核的加速比、功率、能量以及能量延迟积。单线程morphcore性能高5%,多线程corefusion性能高8%,morphcore的功率比corefusion低19%,因为corefusion是由3个medio核组成的。Morphcore消耗的能量也少了29%,能量延迟积也少了29%。因此morphcore性能更高。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值