1
、多线程
同时多线程
Simultaneous multithreading
,简称
SMT
。
SMT
可通过复制处理器上的结构状态,让同一个处理器上的多个线程同步执行并共享处理器的执行资源,可最大限度地实现宽发射、乱序的超标量处理,提高处理器运算部件的利用率,缓和由于数据相关或
Cache
未命中带来的访问内存延时。当没有多个线程可用时,
SMT
处理器几乎和传统的宽发射超标量处理器一样。
SMT
最具吸引力的是只需小规模改变处理器核心的设计,几乎不用增加额外的成本就可以显著地提升效能。多线程技术则可以为高速的运算核心准备更多的待处理数据,减少运算核心的闲置时间。这对于桌面低端系统来说无疑十分具有吸引力。
Intel
从
3.06GHz Pentium 4
开始,所有处理器都将支持
SMT
技术。
Intel
的
hyper-threading
其实就是
two-thread
SMT.
2
、多核心
(CMP
就是
multi-core)
多核心,也指单芯片多处理器(
Chip multiprocessors
,简称
CMP
)。
CMP
是由美国斯坦福大学提出的,其思想是将大规模并行处理器中的
SMP
(对称多处理器)集成到同一芯片内,各个处理器并行执行不同的进程。与
CMP
比较,
SMT
处理器结构的灵活性比较突出。但是,当半导体工艺进入
0.18
微米以后,线延时已经超过了门延迟,要求微处理器的设计通过划分许多规模更小、局部性更好的基本单元结构来进行。相比之下,由于
CMP
结构已经被划分成多个处理器核来设计,每个核都比较简单,有利于优化设计,因此更有发展前途。目前,
IBM
的
Power 4
芯片和
Sun
的
MAJC5200
芯片都采用了
CMP
结构。多核处理器可以在处理器内部共享缓存,提高缓存利用率,同时简化多处理器系统设计的复杂度。
最近,
Intel
和
AMD
的新型处理器也融入
CMP
结构。新安腾处理器开发代码为
Montecito
,采用双核心设计,拥有最少
18MB
片内缓存,采取
90nm
工艺制造,它的设计绝对称得上是对当今芯片业的挑战。它的每个单独的核心都拥有独立的
L1
,
L2
和
L3 cache
,包含大约
10
亿支晶体管。
3
、
SMP (
多
socket
,多物理
CPU)
SMP
(
Symmetric Multi-Processing
),对称多处理结构的简称,是指在一个计算机上汇集了一组处理器
(
多
CPU),
各
CPU
之间共享内存子系统以及总线结构。在这种技术的支持下,一个服务器系统可以同时运行多个处理器,并共享内存和其他的主机资源。像双至强,也就是我们所说的二路,这是在对称处理器系统中最常见的一种(至强
MP
可以支持到四路,
AMD Opteron
可以支持
1-8
路)。也有少数是
16
路的。但是一般来讲,
SMP
结构的机器可扩展性较差,很难做到
100
个以上多处理器,常规的一般是
8
个到
16
个,不过这对于多数的用户来说已经够用了。在高性能服务器和工作站级主板架构中最为常见,像
UNIX
服务器可支持最多
256
个
CPU
的系统。
构建一套
SMP
系统的必要条件是:支持
SMP
的硬件包括主板和
CPU
;支持
SMP
的系统平台,再就是支持
SMP
的应用软件。
为了能够使得
SMP
系统发挥高效的性能,操作系统必须支持
SMP
系统,如
WINNT
、
LINUX
、以及
UNIX
等等
32
位操作系统。即能够进行多任务和多线程处理。多任务是指操作系统能够在同一时间让不同的
CPU
完成不同的任务;多线程是指操作系统能够使得不同的
CPU
并行的完成同一个任务。
要组建
SMP
系统,对所选的
CPU
有很高的要求,首先、
CPU
内部必须内置
APIC
(
Advanced Programmable Interrupt Controllers
)单元。
Intel
多处理规范的核心就是高级可编程中断控制器(
Advanced Programmable Interrupt Controllers--APICs
)的使用;再次,相同的产品型号,同样类型的
CPU
核心,完全相同的运行频率;最后,尽可能保持相同的产品序列编号,因为两个生产批次的
CPU
作为双处理器运行的时候,有可能会发生一颗
CPU
负担过高,而另一颗负担很少的情况,无法发挥最大性能,更糟糕的是可能导致死机。
4
、
NUMA
技术
NUMA
即非一致访问分布共享存储技术,它是由若干通过高速专用网络连接起来的独立节点构成的系统,各个节点可以是单个的
CPU
或是
SMP
系统。在
NUMA
中,
Cache
的一致性有多种解决方案,需要操作系统和特殊软件的支持。图
2
中是
Sequent
公司
NUMA
系统的例子。这里有
3
个
SMP
模块用高速专用网络联起来,组成一个节点,每个节点可以有
12
个
CPU
。像
Sequent
的系统最多可以达到
64
个
CPU
甚至
256
个
CPU
。显然,这是在
SMP
的基础上,再用
NUMA
的技术加以扩展,是这两种技术的结合。
5
、乱序执行技术
乱序执行(
out-of-orderexecution
),是指
CPU
允
许将多条指令不按程序规定的顺序分开发送给各相应电路单元处理的技术。这样将根据个电路单元的状态和各指令能否提前执行的具体情况分析后,将能提前执行的
指令立即发送给相应电路单元执行,在这期间不按规定顺序执行指令,然后由重新排列单元将各执行单元结果按指令顺序重新排列。采用乱序执行技术的目的是为了
使
CPU
内部电路满负荷运转并相应提高了
CPU
的运行程序的速度。分枝技术:(
branch
)指令进行运算时需要等待结果,一般无条件分枝只需要按指令顺序执行,而条件分枝必须根据处理后的结果,再决定是否按原先顺序进行。
6
、
CPU
内部的内存控制器
许多应用程序拥有更为复杂的读取模式(几乎是随机地,特别是当
cache hit
不可预测的时候),并且没有有效地利用带宽。典型的这类应用程序就是业务处理软件,即使拥有如乱序执行(
out of order execution
)这样的
CPU
特性,也会受内存延迟的限制。这样
CPU
必须得等到运算所需数据被除数装载完成才能执行指令(无论这些数据来自
CPU cache
还是主内存系统)。当前低段系统的内存延迟大约是
120
-
150ns
,而
CPU
速度则达到了
3GHz
以上,一次单独的内存请求可能会浪费
200
-
300
次
CPU
循环。即使在缓存命中率(
cache hit rate
)达到
99
%的情况下,
CPU
也可能会花
50
%的时间来等待内存请求的结束-
比如因为内存延迟的缘故。
你可以看到
Opteron
整合的内存控制器,它的延迟,与芯片组支持双通道
DDR
内存控制器的延迟相比来说,是要低很多的。英特尔也按照计划的那样在处理器内部整合内存控制器,这样导致北桥芯片将变得不那么重要。但改变了处理器访问主存的方式,有助于提高带宽、降低内存延时和提升处理器性能。