这是一个老话题了,本来不想回帖了,没有想到还是有人继续探讨这个问题。其实AMD的压路机的架构对这个问题已经做出了理论与实践上的回答。推土机的架构是每个模块有两个物理的核心,每个物理核心都有一个完整地整数的运算器,每两个物理核心共用一个浮点的运算器,而这个架构是高效和合理的。现在给出数学上的说明。按照人们对处理器运算的数据类型的分析,发现整数运算占了整个运算量的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
|