当前位置: 网站首页 > 数码相机 > 详情

pentium 4(pentium4 ht)

2024-06-23 17:02:47 数码相机 0

管道技术是提高性能的灵丹妙药吗?它通过将指令的操作划分为更详细的步骤来避免CPU“浪费”。

每个细分的流水线步骤都非常简单,并且单个时钟周期时间可以设置得更短,这样可以变相快速提高CPU频率。

pentium 4(pentium4 ht)

这一系列的优势导致了现代桌面CPU的最后一战:IntelPentium4V.SAMDAthlon。

从技术上来说,英特尔彻底输了。Pentium4系列和后续PentiumD系列中使用的NetBurst架构被完全放弃。但在商业层面,英特尔凭借其新的酷睿品牌,通过远超AMD的财力、已经较大的市场份额、万能的竞争手段,以及最终放弃整个NetBurst架构,击败了AMD。

从此,整个CPU领域的竞争焦点不再是Intel和AMD的桌面CPU。

ARM架构通过智能手机开始流行,后来居上并超越了英特尔。移动时代,CPU成为高通、华为麒麟、三星之间的“三国恋”。

“主频战争”带来的超长流水线

事实上,CPU甚至整个计算机的性能并不能简单地用CPU频率来衡量。

不同CPU的实际架构和实现是不同的。相同CPU频率的实际性能可能会有很大差异。

更好的衡量方法是使用像SPEC这样的基准测试程序来衡量多个不同实际应用场景的性能。

但基准测试对于消费者来说仍然太复杂。在Pentium4CPU发布之前,大多数消费者并不根据跑分来判断CPU性能,通常只看CPU主频。而CPU厂商也在不断提高主频,这被视为技术竞争的核心指标。

Intel在“时钟大战”中一直保持领先,但1999年AMD发布了基于K7架构的Athlon处理器,综合性能超越了PentiumIII。

2000年,当大多数CPU还运行在500到850MHz时,AMD推出了第一代Athlon1000处理器,成为首款1GHz消费级CPU。

2000年左右,AMD的CPU不仅具有比Intel更好的性能和时钟速度,而且价格往往只有Intel的2/3。

迫于压力,Intel于2001年推出了新一代NetBurst架构CPU,即Pentium4和PentiumD。Pentium4CPU最大的特点就是主频高。

2000年的Athlon1000当时的最高频率为1GHz,而Pentium4的设计最高频率为10GHz。

为了达到10GHz,Intel工程师做出了一个重大错误的决定,那就是在NetBurst架构上使用超长管道。多久了?

Pentium4之前的PentiumIIICPU的流水线深度为11级:一条指令被分成最多11个更小的步骤,CPU可以同时执行最多11个不同阶段的指令。

如今的日常手机ARMCPU或Inteli7服务器CPU的流水线深度为14级。

在过去20年里,技术不断进步,现代CPU增加了一些流水线深度。

2000年的Pentium4的流水线深度为20级,是PentiumIII的两倍。借助代号为Prescott的90纳米处理器Pentium4,英特尔将流水线深度增加到了31级。

增加流水线深度实际上会降低CPU在相同主频下的性能。因为PipelineStage需要一个时钟周期。

将任务分为31个阶段,完成一个任务需要31个时钟周期;

如果将任务分为11个阶段,则只需要11个时钟周期即可完成任务。

在这种情况下,具有31级的3GHzCPU的性能与具有11级的1GHzCPU的性能几乎相同。因为每个Stage都有对应的Pipeline寄存器的开销,此时,更深的Pipeline性能可能会更差。

流水线技术不能缩短单条指令的响应时间,但可以提高运行多条指令时的吞吐率。

因为不同的指令需要不同的执行时间。例如依次执行这三个指令:

整数加法、整数乘法需要200ps、浮点乘法需要300ps和600ps。如果CPU以单个指令周期运行,最复杂的指令——浮点乘法——需要600ps。

那么这三个指令需要600ps。3条指令的执行时间为1800ps。

如果使用6级流水线CPU,每个PipelineStage只需要100ps。那么在执行这三个指令的过程中:

第1条指令的第一个100ps阶段结束后,开始执行第二条指令。第二条指令的第一个100ps阶段结束后,第三条指令开始执行。在这种情况下,这三个指令顺序执行所需的总时间为800ps。在1800ps内,使用流水线的CPU可以执行的指令数量比使用单指令周期的CPU多一倍以上。

虽然每条指令从开始到结束得到结果的时间没有改变,即响应时间没有改变。但在相同的时间内,完成的指令数增加,即吞吐率增加。

冒险和分支预测

这不是很棒吗?IntelCPU支持超过2000条指令。有些指令简单,执行速度快,比如无条件跳转指令,不需要经过ALU,只需要更新PC寄存器的内容。

有些指令非常复杂,比如浮点运算,需要对指数位进行比较和对齐,然后将有效位移位后再进行计算。两者的执行时间相差二十、三十倍是正常的。

在这种情况下,Pentium4的超长管线就显得非常合理了。为什么Pentium4最终成为Intel在技术架构层面的一大败笔:

功耗问题

提高管线深度必须与提高CPU频率同时进行。因为单个PipelineStage可以执行的功能变得更加简单,这也意味着单个时钟周期内可以完成的事情更少。

因此,只有增加时钟周期,CPU在指令响应时间方面才能保持与以前相同的性能。

随着流水线深度的增加,所需的电路数量也随之增加,即更多的晶体管。

主频的提高和晶体管数量的增加,都增加了CPU的功耗。因此,Pentium4在其整个生命周期内会消耗大量电量并散发热量。

Pentium4作为Intel的旗舰CPU在2000年到2004年出现在市场上,这个时期是笔记本电脑市场快速发展的时期。在笔记本电脑上,功耗和散热问题比台式机更严重。

流水线技术带来的性能提升,是理想情况

在实际程序执行中,这可能是不可能的。

刚才提到的三个指令。如果这三个指令是下面的代码,会发生什么呢?

积分=10+5;//指令1intb=a*2;//指令2floatc=b*1.0f;//指令3发现指令1第一阶段执行完后指令2无法执行。

因为指令2依赖于指令1的计算结果。

同样,指令3也依赖于指令2的计算结果。

这样一来,即使采用流水线技术,完成这三个指令的执行所花费的时间也是200+300+600=1100ps,而不是800ps。

如果指令1和指令2都是浮点运算,则需要600ps。那么这种依赖性就会导致我们需要的时间变成1800ps,这和单指令周期CPU时间是一样的。

这就是危险问题。这里列出了数据层面的依赖,即数据风险,以及结构风险、控制风险等其他依赖问题。

对于这些有风险的问题,在乱序执行、分支预测等方面也有相应的解决方案。

但管道越长,解决风险问题就越困难。因为同时运行的指令太多了。如果只有三级流水线,后面没有依赖关系的指令可以放到前面执行。这是我们的乱序执行技术:

积分=10+5;//指令1intb=a*2;//指令2floatc=b*1.0f;//指令3intx=10+5;//指令4inty=a*2;//指令5floatz=b*1.0f;//指令6into=10+5;//指令7intp=a*2;//指令8floatq=b*1.0f;//指令9不需要先执行指令1、2、3,而是在流水线中,先执行1、4、7。这三个指令没有依赖性。

然后执行2、5、8和3、6、9。

这样又可以充分利用CPU的计算能力。

但如果有20级流水线,要确保这20条指令之间没有依赖关系。挑战变得更大。毕竟我们平时写程序的时候,前后的代码通常都会有一定的依赖关系。很难找到几十条没有依赖关系的指令。

因此,超长管道的执行效率会降低。