什么是推土机架构
CMP和SMT
CMP:CMP的方式很直接。简而言之,CMP已经完成。复制内核来扩展多线程软件中处理器的性能,这是获得最佳性能的最简单、最有效的方法。但是CMP的缺点是制造成本非常昂贵,而且还受到处理器制造工艺的限制。毕竟芯片不可能越做越大。而且CMP的方式需要很高的负荷。只有并行优化的负载才能充分发挥CMP的性能。许多核心CMP经常浪费资源。在某些应用中,频率更高、结构更简单的双核和四核处理器往往能获得更好的性能。
SMT:SMT是一种相对便宜的技术,比如英特尔的超线程,它允许每个物理内核同时运行两个线程。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在设计上的称谓,产品投放市场时,还是会打上核心量的标记。例如,我们说推土机架构因特拉格斯服务器有16个内核,而不是8个模块。你为什么采用这个模块设计的主要原因,AMD说减少CPU的冗余电路。
如果采用CMP的方法,随着核心数量的增加,CPU的核心面积会越来越大,重复的电路会越来越多,功耗也会增加&mdash&mdash因为CMP是复制核心的方式。并采用模块通过设计可以大大减少冗余电路,这对于大量内核来说意义重大。比如推土机,两个内核共享浮点部分。对于大多数服务器应用来说,整数运算部分远高于浮点运算(高性能计算除外),所以在大多数应用中共享浮点执行单元不会影响性能。整数部分不共享,否则会造成瓶颈。
上面我们已经回顾了CMP和SMT设计的特点,可以把AMD推土机架构可以看做是两者之间的一种设计:两个线程(核)共享浮点执行单元,但各自有自己的整数执行资源。它看起来像是另一种形式的SMT,或者是AMDAMD的第三条路。但与传统SMT设计不同的是,SMT只复制核心内存部分,一个线程一个registerfile,而AMD推土机在架构中,每个线程复制整数执行单元的完整硬件,一个线程有一个存储模块(registerfile)和一组完整的整数执行单元。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)