什么是推土机架构
cmp和smt
cmp:cmp的方式非常直接,简单来说,cmp是通过复制物理核心来扩展处理器在多线程软件中的性能,这是获得最佳性能一种最简单和最有效的方式。但cmp的缺点是制造成本很昂贵,并且也要受到处理器制造工艺的限制,毕竟不能将芯片做的越来越大。并且cmp的方式对负载要求也很高,只有经过适当并行优化的负载才能充分发挥cmp的性能,很多核心的cmp常常会浪费资源,在一些应用中,主频更高、结构更简单的双核和四核处理器就往往可以获得更好的性能。
smt:smt是一个相对廉价的技术,比如英特尔的hyper-threading,允许每个物理核心运行两个同步线程。smt的设计思想是充分利用每个核心的资源。如果一个物理核心只有一个执行线程,那么在等待内存中的关键代码或数据的时候,线程处于停顿状态,这样核心的利用率是低下的。而smt技术允许一个物理核心运行两个或更多的线程,可以根据当前的状况动态进行切换,如果一个线程处于停顿状态等待内存,另一个线程的指令则可以使用这个物理核心的所有执行单元,让物理核心利用的更加充分。
为了让smt正常工作,处理器的所有代码和存储部分需要被复制或分区。例如,一个双线程smt处理器需要两套架构寄存器和重命名寄存器,一套给线程a,一套给线程b。另外组成指令窗口的共享指令队列要具备很大的空间,这样指令窗口才能容纳足够多的来自两个线程的指令,让执行单元可以保持在忙碌状态。最后,两个线程任何共享单元,比如处理管线不同部分的指令缓存,都不能被任一个线程独占。换句话说,smt核心的两个线程需要和另一个紧密的共享资源,保证核心的缓存单元不会空置没有线程利用。
推土机架构分析
amd推土机将采用32nmsoi工艺,这让推土机相比马尼库尔皓龙处理器可以在不增加功耗的前提下增加33%的核心数量、增加50%的吞吐量。与amd之前所有处理器都有所不同的是,推土机采用了模块化的设计,每个模块包含两个处理器核心,这有些像一个启用了smt的单核处理器。每个核心具有各自的整数调度器和四个专有的管线,两个核心共享一个浮点调度器和两个128位fmac乘法累加器。
所不同的,在k10架构中,alu和agu共享三个管线(平均1.5个),推土机中每个核心整数单元管线的数量增加为4个,2个agu专有、2个alu专有。l1缓存也有所不同,在k10架构中,每个核心具有64kbl1指令缓存和64kbl1数据缓存;而推土机每个核心具有16kbl1数据缓存、每个模块具有64kb双向l1指令缓存,至于减小的l1缓存是否会影响性能还有待观察。两个核心共享l2缓存,模块之间共享l3缓存及北桥。
amd推土机模块
模块和核心,这让我们不免会产生混淆,实际对于用户们来说,没必要去刻意的关注模块的概念,这只不过是amd在设计上的称谓,而当产品投放市场的时候,依旧会以核心数量为标识,比如我们说采用推土机架构的interlagos服务器处理器具有16个核心,而不会说是8个模块。对于为何采用这种模块设计的主要原因,amd表示是为了减少cpu的冗余电路。
如果采用cmp的方式,随着核心数量的增加,cpu的核心面积也会越来越大,重复的电路也会越来越多,功耗也会随之增加模块设计可以大大减少冗余电路,这对核心的大量增加很有意义。比如推土机,两个核心共享浮点部分,对于大部分服务器应用来说,整数运算的部分要远远高于浮点运算(高性能计算除外),所以将浮点执行单元共享并不会影响大多数应用中的性能。而整数部分则不是共享的,否则会造成瓶颈。
上文我们回顾过cmp和smt设计的特点,我们可以把amd推土机架构看做是介于这两种之间的一种设计:两个线程(核心)共享浮点执行单元,但是各自具有独立的整数执行资源。这看上去像是smt的另一种形式,或者说是经过amd改良的一种amd式的第三种方式。但与传统的smt设计不同,smt仅仅复制的是核心的存储部分,一个线程一个存储模块(registerfile),而amd推土机架构中,每个线程复制的是完整的整数执行单元硬件,一个线程具有一个存储模块(registerfile)和一组完整的整数执行单元。
原文标题:什么是推土机架构,如若转载,请注明出处:https://www.tzjingsheng.com/news/20627.html
免责声明:此资讯系转载自合作媒体或互联网其它网站,「豪运号」登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,文章内容仅供参考。