有了篇像样文章,虽然是翻译的。
翻译为学习之用,没有核对校正,觉得不准确有错误的地方请看原文
http://www.lighterra.com/papers/modernmicroprocessors/
现代微处理器
-90 分钟指南
By Jason Patterson , last updated Jan 2011 (orig Feb 2001)
你是一个本科生,作为学位的一部分学习过硬件/ 汇编课程,但那时几年前的事情,现在你并没有跟踪处理器设计的最新细节。
你可能还没有意识到最近一些关键的主题正在快速发展。
- 流水线( 超标量,OoO,VLIW, 分支预测,预测)
- 多核、同时多线程(SMT, 超线程)
- SIMD 矢量指令集(MMX/SSE/AVC,AltiVec)
- 缓存和内存架构
不用担心,这篇文章会让你快速跟上( 这些主题的发展) ,你将会像专家一样讨论顺序和乱序、超线程、多核和缓存优化.
准备好了,这篇文章很概括和切中要害没有空隙, 步伐非常的大.
一、 不仅仅兆赫( 频率)
首先必须明确的是时钟速度和处理器性能之间的不同,他们不是一回事。请看一下几年之前一些处理器的测试结果:
SPECint95 |
SPECfp95 |
||
195 MHz |
MIPS R10000 |
11.0 |
17.0 |
400 MHz |
Alpha 21164 |
12.3 |
17.2 |
300 MHz |
UltraSPARC |
12.1 |
15.5 |
300 MHz |
Pentium-II |
11.6 |
8.8 |
300 MHz |
PowerPC G3 |
14.8 |
11.4 |
135 MHz |
POWER2 |
6.2 |
17.6 |
虽然200 MHz MIPS R10000 300 MHz UltraSPARC 400 MHz Alpha 21164 时钟速度差了两倍,但是运行大多数程序的速度差不多相同,300 MHz Pentium-II 大多数程序速度和上面几个处理器差不多,但是浮点运算比如科学数字处理的速度大约只有的它们的一半, 对于同样300MhZ 的A PowerPC G3 在通常的整型运算代码比其他处理器稍快,但浮点运算比前三名慢了很多.
另一个极端情况,只有135MHz 的IBM POWER2 浮点运算速度和400MHz 的Alpha21164 差不多,但是通用整型程序速度只有它的一边
这些应该怎么解释呢?显然不仅仅是时钟速度再起作用,更重要的是处理器在每个时钟周期内做了多少工作,这就引出下面的课题.
二、 流水线和指令集并行
指令在处理器内部一个接一个的执行,对吗? 这样让人很容易理解,但并不是真正发生的事情,事实上,从80 年代中期就不是这样子了,取而代之的是几条指令在同时执行某个部分
指令怎么执行的- 取指、解码、使用合适的功能单元执行、最终结果写到合适的位置。对于这种简单策略,每条执行花费4 个时钟周期(CPI=4)
Figure 1 – 顺序处理器指令流
现代处理器在流水线上重叠这些阶段,像一个生产线,一条执行正在执行,下一条正在解码,再下一条正在取指.
Figure 2 – 流水线处理器指令流
处理器每个周期执行一条指令,不用改变时钟速度获得4 倍速度提高.
从硬件角度来看,每个流水阶段由一些组合逻辑组成,可能访问寄存器组和几种高速缓存和内存。流水阶段由