格子家园

 找回密码
 加入我们
查看: 1323|回复: 0

关于“推土机”的一点事

[复制链接]

4

主题

0

回帖

51

积分

论坛管理

Rank: 16Rank: 16Rank: 16Rank: 16

积分
51

论坛元老

发表于 2014-11-21 12:31:28 | 显示全部楼层 |阅读模式
    其实我们去认识一颗cpu,应该去了解它是如何去工作的,便可以看出这颗u的好坏,许多人说推土机架构怎样的低效高能,真正感受过他低效高能的有几个人?最先传出的,无非是商家为了甩出积压的囤货,然后随便贴出一个跑分 再来一个对比,看起来真的是那么低效高能!
写这篇帖子 是为了大家去客观的去看现在cpu。(部分内容从泡泡网搬运)
一开始,intel 靠 smt (同步多线程)与amd 拉开差距,它工作的原理是为CPU赋予两套架构寄存器和重命名寄存器,一个核心可以运行多个进程,当第一个线程暂停时,将第二个资源准备充分的线程安排给核心处理,这样动态切换的结果就是,CPU的运算能力得到了最大的利用。达至这个核心工作“饱和”,资源的充分利用。但是缺点也比较明显,高负载情况下超线程会出现线程争抢资源的情况,而当满载时超线程基本就不会起什么效果了。
    然而Intel的同步多线程技术实际上并不能提升CPU的理论运算性能,只是消除了CPU等待指令时的瓶颈,在部分应用中提升了效能。于是AMD有了一个新的想法:Intel是把一颗物理核心虚拟成两颗来用,而AMD是把两颗物理核心组合成一颗大核心来用——这颗大核心的官方名称叫做“推土机模块”。
     AMD认为,随着CPU的物理内核数目越来越多(4/6/8核甚至更多),CPU的核心面积也会越来越大,功耗成倍增加。传统CMP暴力复制核心的方式会造成大量重复性的电路。而减少冗余电路的最好方法就是整合,把两颗核心整合在一起,共用一套指令发射器和解码器还有缓存。
但是!!!AMD并不是简单的把两颗核心放在了一起,而是有所精简——两颗核心的整数运算单元都被完整的保留了下来。
这样的好处是推土机模块的两个核心支持执行两个线程,会共享对延迟要求较高的功能、平缓突发和低效应用、线程间动态分配资源,好处是比两个线程共享一个核心更高的伸缩性和可预测性、多线程负载的吞吐优势、单线程时所有共享资源均可访问、以少得多的面积和功耗提供物理核心80%的性能。
    推土机模块的浮点运算单元是两个128位的FMAC(乘加运算器),这两个运算器可以被两个整数核心共享,如果其中一个整数核心获得的线程支持纯粹的整数操作,那么另外一个核心就可以获得全部的浮点执行资源。
这就是说当有一个进程执行时,两个核心可以共同运算,智能分配,达到1+1>2的目的,许多人说,推土机架构单核很差,拿什么955 或者I3什么的来和推土机里面的单核相比,然后再来一个跑分测试图,实际这样对比毫无意义,它只用了推土机半个模块,实际上若使用推土机两个核心对比其他架构的两个核心,充分发挥了推土机的整个模块的的资源。
相对于羿龙2来说,推土机模块的指令解码宽度将从K7/K8/K10的每时钟周期三条微指令提升为四条。我们把一个推土机的模块看作是一颗核心的话,里面有两个独立的整数核心,每一个都拥有自己的指令、数据缓存。虽然两个整数运算核心要比K10的三个少,但实际上其中任何一个核心的运算能力都要强于Phenom II。
    现在说说它的缺点,现在系统软件是为普通多核cpu优化的,只要有进程需要资源就会给每个核心分配线程任务,但是推土机是以模块为单位设计,一个模块内共享L2缓存,如果按照核心分配任务 ,导致L2缓存取址命中率下降一半 ,变成瓶颈。
    这就好比假如有2个进程,分配给2个模块两个核心,这样每个进程只用到了半个模块,而非分配到了一个模块的2个核心,这样效能直接减半。这也造成现在很多评分软件分数低下。虽然跑分低下,但是实际体验中并不如羿龙ii差,尤其是游戏方面,由于avx指令以及动态浮点调度。可以使所有模块的浮点单元进行充分调度。任意一个模块的核心都可以调动整个模块的浮点单元。这也是当前模块化架构许多游戏方面能够超越羿龙ii代的原因。而且虽然现在已经是推土机架构的改进版打桩机,压路机,平均每代都有同频10%到15%的提升,但是日常使用中最大的缺点仍然是以上提到的。核心分配问题,当对于模块化架构住处不好的系统进行核心分配时会产生同一模块的两个核心争抢资源的情况。
    所以若想发挥推土机模块的完整效能,必须重新编译,对推土机做完全优化。这就对软件编译造成大量困难。现在win8,8.1已经对模块化架构做了很大优化。而win7也已经有了鸡血补丁来解决核心调用不均的问题。
    推土机的架构是每个模块有两个物理的核心,每个物理核心都有一个完整地整数的运算器,每两个物理核心共用一个浮点的运算器,而这个架构是高效和合理的。现在给出数学上的说明。按照人们对处理器运算的数据类型的分析,发现整数运算占了整个运算量的80%以上,而浮点运算只占整个运算量的20%以下,按照整个运算量的计算每个模块的一个浮点的运算器可以应对4个整数的运算器,即1/20%=5,由于浮点的运算器占一个运算器,5—1=4。即每个浮点的运算器可以应对4个整数的运算器,但是由于算法实现的难度对每个浮点的运算器可以应对4个整数的运算器尚有困难,故AMD用每个浮点的运算器应对2个整数的运算器。这样就在每个模块的两个物理的核心可以共用一个浮点的运算器。那么按照纯数学理论的计算推土机的架构的CPU在整数运算中每个核心在一个指令周期内可执行4条指令,其有8个核心,则其在一个指令周期内可执行32条指令=4X8,而I7 2600K 按照纯数学理论的计算在每个核心在一个指令周期内可执行4条指令,其有4个核心,则其在一个指令周期内可执行16条指令=4X4。那么FX-8150的整数运算能力是I7 2600K的两倍=32/16=2。同样那么按照纯数学理论的计算推土机的架构的CPU在浮点运算中,由于其采用的是Radix-4除法运算器,则每个核心在一个指令周期内只能执行2条指令,那么其有八个核心,则其在一个指令周期内可执行16条指令=2X8,而I7 2600K其采用的是Radix-16除法运算器,则每个核心在一个指令周期内能执行4条指令,则其在一个指令周期内可执行16条指令=4X4.那么FX-8150的浮点运算能力和I7 2600K的相当=16/16=1。可以按纯数学理论的计算推土机的架构应该优于I7 2600K,可是实际测试中FX-8150的整数运算能力和I7 2600K的相当,而FX-8150的浮点运算能力是I7 2600K的50%。为什么会出现这样理论与实践脱节的现象呢?其实原因极其简单就是现有的操作系统和软件无法识别现有的推土机架构的前端的每个模块只有一个运算解码器的模式。它把每个模块的识别为一个物理的核心。这样在计算就可知道了。推土机的架构的CPU在整数运算中每个核心在一个指令周期内可执行4条指令,其有4个模块,则其在一个指令周期内可执行16条指令=4X4。而I7 2600K 按照纯数学理论的计算在每个核心在一个指令周期内可执行4条指令,其有4个核心,则其在一个指令周期内可执行16条指令=4X4。那么FX-8150的整数运算能力与I7 2600K的相当=16/16=1。推土机的架构的CPU在浮点运算中每个模块在一个指令周期内可执行2条指令,其有4个模块,则其在一个指令周期内可执行8条指令=2X4。而I7 2600K 按照纯数学理论的计算在每个核心在一个指令周期内可执行4条指令,其有4个核心,则其在一个指令周期内可执行16条指令=4X4,则FX-8150的浮点运算能力是I7 2600K的50%=8/16=0.5。这样就可知道原因所在。压路机针对现有的操作系统和软件无法识别现有的推土机架构的前端的每个模块只有一个运算解码器的模式。它把每个模块的识别为一个物理的核心的现状,将现有的推土机架构的前端的每个模块只有一个运算解码器的模式改为每个核心有一个运算解码器的模式,并且采用Radix-8除法运算器,其每个核心在一个指令周期内可执行3条指令。这样现有的操作系统和软件就可识别压路机架构的CPU。则其在整数运算上为I7 2600的两倍=4X8/16=2。浮点运算是I7 2600的1.5倍=3X8/16=1.5
推土机架构CPU采用的Radix-4除法运算器每个时钟周期内可以传递2bit的运算,处理2个指令。而INTEL的CPU的除法运算器由过去采用的Radix-4除法运算器每个时钟周期内可以传递2bit的运算,处理2个指令,改为采用radix-16除法器后,每周期指令数从原来的2条一下子提高到4条,数据延迟更低,浮点单元以及整数单元都可以从中受益。而AMD的推土机依旧是用的Radix-4除法运算器每个周期指令数只是处理2个指令。也就是说在浮点运算上INTEL的CPU是AMD的CPU的两倍.这就是问题所在.
  而提升除法运算器的浮点运算能力不是一个简单的事,否则AMD早就推出radix-16除法器了.因为INTEL在2006起采用radix-16除法器,而AMD据超能网的消息压路机的架构采用的还是radix-8除法器,而不是radix-16除法器.,它涉及到算法调度,要知道从每周期指令数从原来的2条一下子提高到4条涉及的算法难度决不是提高一倍的概念,要提升几十个或数百个数量级。难度极大。


您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

手机版|小黑屋|格子家园 ( 联系邮箱:121272135@qq.com )

GMT+8, 2024-5-17 06:28 , Processed in 0.076302 second(s), 32 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表