Core Fusion- Accommodating Software Diversity in Chip Multiprocessors .md
Core Fusion: Accommodating Software Diversity in Chip Multiprocessors
Core Fusion:一种可重新配置的单芯片多处理器(CMP)体系结构,在这种体系结构中,一组基本独立的Cores可以动态的转换为更大的CPU,或者根据应用程序在运行时的需求,将它们作为不同的处理单元。Core Fusion可以动态的适应软件的多样性和增加的并行性,并且它的执行模型单一,不需要programing的额外支持,同时维护了ISA兼容性,并利用成熟的微架构技术
Core Fusion带来的好处:
- Support for software diversity。CPU可以配置为细粒度并行(多个small core),粗粒度并行(更少但是更强大的core),顺序代码(一个融合组)等
- Support for smoother software evolution. Core Fusion能够自然的支持增加的并行性,当程序表现出这种特性时
- Single-design solution。仅需要一种类型的核就可以解决问题
- Optimized for parallel code。Core Fusion包括相对较小的和基本独立的cores。这为并行运行中的线程提供了良好的隔离,同时Core Fusion支持允许核在需要时协同工作。
- Design-bug and hard-fault resilience。当Core Fusion的硬件出现问题时,不需要将四个cores都禁用,因为每个core仍然可以独立操作。
Core Fusion应该解决的问题:
- Core Fusion不应该显著增加软件的复杂性。具体来说,Cores应该能够协同执行程序,而不需要更改执行模型,也不需要求助于定制的ISAs或专门的编译器支持。
- Core Fusion应该围绕Cores的基本独立性工作,即要充分利用每个核心的现有结构,而不过度的提供或者显著重组基本的core
- 动态重新配置应该是有效的,即每个core的硬件结构都能够以基本相同的方式工作
论文提出的一些新的结构
- A reconfigurable, distributed front-end and instruction cache organization
- A complexity-effective remote wake-up mechanism
- A reconfigurable, distributed load/store queue and data cache organization
- A reconfigurable, distributed ROB organization
- A quantitative assessment of the incremental parallelization process on CMPs.
具有Core Fusion能力的八核(two-issue out-of-order cores )CMP概念平面。图中显示的配置示例包含两个独立的核、一个两核融合组和一个四核融合组。这个数字并不代表实际的平面图。
Core Fusion Architecture:集体取指(融合模式下)中的取指机制和指令cache
每个核在每个周期在自己的I-cache中取指两条指令,一共八条指令。取指是对齐操作,Core Zero通过负责最老的两条指令。如果发生分支跳转或者转移预测错误恢复,目标地址将不再和Core Zero对齐,此时,更低级的Core会停止取指,在下一个周期,重新进行Core-Zero-Aligned的取指
如果I-cache发生miss:
- 在独立工作的模式下,返回的8字大小的block会传送到请求的core
- 在融合模式下,允许集体取指,因此会将block分散到所有的四个cores
- 因此I-cache的结构将可以发生变化,在独立模式下,四个子块和一个tag将会组成要给cache block,在融合模式下,缓存块跨越四个I-cache,每个I-cache包含一个子块和一个tag的副本
在集体取指的情况下,复制I-TLB将会很有意义。当然如果一个TLB miss将会更新所有的TLB
Core Fusion Architecture:集体取指(融合模式下)中的分支和函数调用
分支预测:在融合模式下,集体取指由于是对齐的,所以每条分支指令都会访问同一个分支预测器和BTB。因此BTB的容量和分支预测器的效率将会是之前的四倍。论文提出了一种配置无关的索引BTB的方式。这种设计中,tag中的两位将会作为core number
Global History:为了获得完整统一的GHR信息,GHR将会被复制到所有的cores,并通过FMU进行协调更新
Return Address Stack:子例程在调用时,目标地址由FMU发送到所有Cores,Core Zero将返回地址压入RAS。当遇到返回指令并且正在和FMU通信时,Core Zero将RAS中的地址弹出,然后通过FMU将地址返回。所有的操作都是由Core Zero完成,因此尽管在融合模式下,RAS可用大小未增加
Core Fusion Architecture:集体取指(融合模式下)中如何处理Fetch Stalls
当一个Core形成了Fetch Stall,则所有的Cores都需要停顿,以便保持正确的fetch对齐。此时就需要形成stall的core和FMU通信,然后通知所有其它的Cores
Core Fusion Architecture:集体译码和重命名(collective Decode/Rename)
- 取指之后,每个核独立的预译码自己的指令,然后所有的指令都需要被重命名和转向steered(将消费者转向到生产者一起,减少通信延迟)。
- renaming/steering通过SMU来完成,SMU组成:全局的steering table,四个寄存器分配的free-lists,四个重命名表,steering/renaming logic
- 利用steering table和四个重命名映射表可以允许每个体系结构寄存器有四个有效的映射,允许操作数在多个核之间复制。
- SMU使用传入的体系结构寄存器标识符和steering table在每个流水线周期完成八条指令的引导(转向)。每条指令都会分配到一个核,但是保证每个核最多不会超过两条指令。
- 在下一个周期,指令将被重命名。如果由于带宽的限制,无法将复制指令发送到core中,重命名就会停止在有问题的指令,在下一个周期开始于同一条指令。
Collective Execution :集体执行
- Operand Crossbar(操作交叉):为了支持操作数之间的通信(不同核之间的协同),每个Core都需要添加一个Copy-Out和Copy-In队列。复制指令将在Copy-Out队列中等待操作数可用,一旦发出,将源操作数和目标寄存器标识符转移到远程Core。Operand CrossBar支持每个Core,每个周期进行两个复制指令。除了复制指令之外,Load还是用Operand CrossBar将数值传递给远程的目标寄存器
- Wake-up and Selection:当复制指令到达等待的Core,指令将会放到Copy-In队列中。在每个周期,调度器都会考虑队列头部的两条复制指令和常规发射队列中的指令。一旦指令发射,复制指令将会唤醒等待其结果的相关指令,然后更新物理寄存器
- Reorder Buffer and Commit Support :在融合模式下,为了按序提交,要求四个ROBs协同工作,以锁步的方式提交,每周期最多提交八条指令。ROB表项在fetch阶段结尾分配,如果fetch取到的指令少于8条,则在适当的Core中分配NOPs,以保证对齐。
Load/Store Queue Organization :Load/Store队列的组织形式
- 处理方式类似于集群体系结构(clusters)中的处理方式,但是保留了L1 cache的私有性,同时只需要对CMP缓存子系统进行最小的修改即可
- 在融合模式下,使用按地址存储(banked-by-address)的LSQ实现。从而允许在动态配置之后保持数据的一致性,同时不需要刷新缓存,并且支持存储转发和推测式load。使用时,将地址中块内偏移旁的两位作为bank的标识,选择四个核中的一个,然后从剩下的地址中分配足够覆盖L1-cache的索引位。其它的地址位用于作为tag使用。
- 因为load/store需要在重命名阶段就分配到不同的核的bank上,因此提出了bank-predictor解决。bank-predictor使用指令PC的低位索引。
- 如何在融合模式下执行同步原语:必须让所有的load/store队列能够看到FENCES。因此需要将这些操作分派到所有的队列,只有正确的队列中的副本会执行实际的同步操作。当每一个局部的FENCES执行完成,并且所有的存储操作在FENCEs指令之前提交,此时认为FENCE指令完成了。局部FENCE完成的消息通过operand crossbar来传递。
CoreFusion的动态配置
- 使用一个简单的应用程序接口进行运行时的配置。应用程序通过一对FUSE和SPLIT的ISA指令请求融合和分割操作。
- If, at the time of a FUSE request, fusion is not possible (e.g., in cases where another application is running on the other cores), the request is simply ignored.
- FUSE操作:在并行的代码运行完成之后,应用程序可能会请求融合Cores来执行顺序操作(可以考虑顺序代码的多少和融合的开销之间的抉择)。如果此时不允许融合,则FUSE指令变为NOP,并继续执行。否则所有跟在FUSE指令之后的都会被刷新,I-cache flushed,FMU和SMU,i-caches都要重新配置;提交FUSE指令的core的重命名映射表被转移到SMU中。D-cache不需要有改变。最后FMU向I-cache发出信号,让I-cache从FUSE指令所在的程序中正确的指令顺序以融合模式开始取指
- SPLIT操作:当程序认为之后的代码有并行的可用性,则使用SPLIT指令分割融合的core。当SPLIT提交之后,等待所有流水线中的执行结束,然后生成足够的复制指令将体系结构状态收集到Core Zero的物理寄存器文件中。当传输完成后,FMU和SMU重新配置,Core Zero开始从按照程序分割的指令中获取数据。其它Cores之后也可以被分配给其它应用程序。
Smart memories是一种可重新配置的体系结构,能够合并有序的RISC内核以形成VLIW机器。这两种配置不兼容ISA, VLIW配置需要专门的编译器支持。(Smart Memories: a modular reconfigurable architecture )
Core Fusion- Accommodating Software Diversity in Chip Multiprocessors .md相关推荐
- 【翻译】大规模软件多样性作为防御机制——Massive-Scale Software Diversity as a Defense Mechanism
大规模软件多样性作为防御机制 [文章为google-translate的直译结果,最近暂时没有时间修改翻译内容.google-translate的翻译结果中有很多明显的错误,遇到类似的问题,请读者结合 ...
- JIRA Core、JIRA Software、JIRA Service Desk的区别
在Jira7.X,Atlassian将根据特定的JIRA应用场景,将原来的JIRA分为了三个不同的版本 1. JIRA Core 2. JIRA Software 3. JIRA Service De ...
- .net core 2.0学习笔记(一):开发运行环境搭建
期待已久的.net core 2.0终于发布了!大家等的花儿都谢了. 不过比预期提前了一个多月,这在微软历史上还真的不多见.按照历史经验看,2.0版本应该比较靠谱,我猜这也是社区非常火爆的原因吧.下面 ...
- .NET Core 2.0 正式发布信息汇总
万众瞩目的.NET Core 2.0终于发布了,原定于9.19的dotnetconf大会的发布时间大大提前了1个月,.NET Core 2.0/.NET Standard 2.0的正式发布是.NET ...
- [转] Real-World Concurrency
Real-world Concurrency Chances are you won't actually have to write multithreaded code. But if you d ...
- av 1. Computer Abstractions and Technolog
Computer Abstractions and Technology // 计算机抽象原理和技术 Civilization advances by extending the number of ...
- soc(十一) MPCores
概念 注意,一个arm soc不仅包括 核心s ,还包括其他模块 CPU GPU 基带 总线 显示加速器 ISP 视频编解码器 音频处理器 Memory控制器 传感器处理单元 DDR Flash 显示 ...
- 并发编程的15 条建议
内核专家 Bryan Cantrill 和 Jeff Bonwick 在 2008 年 9 月的<ACM Queue>上发表了<Real-world Concurrency> ...
- 基本概念学习(8003)---CPU中央处理器
中央处理器(CPU,Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit).它的功能主要是解释计算机指令以 ...
最新文章
- linux内存管理和原理分析
- 网卡指示灯含义及故障分析
- 三星framebuffer驱动代码分析
- JQuery实现广告效果(滚动切换)
- Blend_技巧篇_淡入淡出
- java cookie共享_cookie共享
- 《高翔视觉slam十四讲》学习笔记 第七讲 视觉里程计
- finereport 格式化金额函数_帆软报表常用函数总结
- 电脑屏幕录制软件免费
- linux安装moodle最新版,在linux下安装moodle
- 腾讯翻译君 VS 谷歌翻译
- linux简易离线词典下载手机版,Linux离线查询字典的方法
- 天玑720可以升级鸿蒙系统吗,华为高管:来岁年初就能用上鸿蒙体系,55部华为产物可升级鸿蒙...
- en结尾的单词_239个以en开头结尾的常用英语单词
- 微信开发平台第三方平台86004无效微信号
- 快速幂求解斐波那契数列
- 如何解决苹果电脑(Macbook Pro)没有声音?
- LM7805的特殊使用方法
- 云服务器怎么装安卓系统,云服务器怎样装安卓系统
- 80c51汇编语言程序案例指导,新第4章80C51的汇编语言程序设计
热门文章
- matlab中的ica工具箱怎么使用吧,ica工具箱matlab
- 微信小程序真机调试无法连接websocket解决方案
- 杂文-俞敏洪一分钟励志演讲稿
- 用C语言验证“6174数学黑洞之谜
- 解决 Android Studio 报SDK tools directory is missing
- mfc odbc mysql数据库_MFC- Mysql数据库连接-ODBC
- Unity ShaderLab 坐标空间转换及方法
- 前端图片渲染性能优化与实践 — 图片懒加载
- Educoder大数据技术与应用作业-郑悦林
- tomcat下的javaBean的配置