构建松耦合多处理器架构很容易(由于使用了 Beowulf 之类的项目),但是它们也有自身限制。构建大型的多处理器网络可能占用相当大的空间并消耗很多电量。因为它们通常是利用普通硬件来构建的,所以包含的有些硬件不相关却要耗费很多电量和空间。更大的缺点在于通信结构。即使使用高速网络(如 10G 以太网),也存在系统可伸缩性的限制。
紧密耦合多处理
紧密耦合多处理指芯片级多处理(CMP)。可将其看作松耦合架构按比例缩小至芯片级。这正是紧密耦合多处理(也称作多核计算)背后的思想。在一个集成电路中,多个芯片、共享内存以及互连形成了一个紧密集成的多处理核心(参见图 4)。
 |
处理器互连 另一种可选的互连(系统结构总线)是 AMD 的 HyperTransport。Intel® 也在规划称作 Common System Interface 的新互连,预计于 2008 年发布。 |
|
图 4. 紧密耦合多处理架构
在 CMP 中,多个 CPU 通过共享总线连接到共享内存(2 级缓存)。每个处理器也拥有自身的快速内存(1 级缓存)。CMP 紧密耦合的本质使处理器与内存之间的物理距离很短,因此可提供最小的内存访问延迟和更高的性能。此类架构在多线程应用程序中运行良好,该类应用程序中线程可能被分配给多个处理器以实现并行操作。这种方法被称作线程级并行(TLP)。
由于这种多处理器架构的流行,很多供应商都生产了 CMP 设备。表 1 列出了一些 Linux 支持的流行变种。
表 1. CMP 设备样例
| 供应商 |
设备 |
说明 |
| IBM |
POWER4 |
SMP,双 CPU |
| IBM |
POWER5 |
SMP,双 CPU,四个并发线程 |
| AMD |
AMD X2 |
SMP,双 CPU |
| Intel® |
Xeon |
SMP,双 CPU 或四 CPU |
| Intel |
Core2 Duo |
SMP,双 CPU |
| ARM |
MPCore |
SMP,最多四 CPU |
| IBM |
Xenon |
SMP,三个 Power PC CPU |
| IBM |
Cell Processor |
不对称多处理(Asymmetric multiprocessing,ASMP),九 CPU |
内核配置
为了在支持 SMP 的硬件上通过 Linux 使用 SMP,必须适当地配置内核。内核配置期间必须启用 CONFIG_SMP 选项,以使内核感知 SMP。通过在多 CPU 主机上运行感知 SMP 的内核,可使用 proc 文件系统了解处理器的数目及类型。
首先,使用 grep 在 /proc 下的 cpuinfo 文件中检索处理器的数目。如清单 1 所示,使用计数选项(-c)来统计以单词 processor 开头的行。然后显示 cpuinfo 文件的内容。显示的示例来自一个二芯片的 Xeon 主板。
清单 1. 使用 proc 文件系统检索 CPU 信息
mtj@camus:~$ grep -c ^processor /proc/cpuinfo
8
mtj@camus:~$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 15
model : 6
model name : Intel(R) Xeon(TM) CPU 3.73GHz
stepping : 4
cpu MHz : 3724.219
cache size : 2048 KB
physical id : 0
siblings : 4
core id : 0
cpu cores : 2
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 6
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr
pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm
pbe nx lm pni monitor ds_cpl est cid xtpr
bogomips : 7389.18
...
processor : 7
vendor_id : GenuineIntel
cpu family : 15
model : 6
model name : Intel(R) Xeon(TM) CPU 3.73GHz
stepping : 4
cpu MHz : 3724.219
cache size : 2048 KB
physical id : 1
siblings : 4
core id : 3
cpu cores : 2
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 6
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr
pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm
pbe nx lm pni monitor ds_cpl est cid xtpr
bogomips : 7438.33
mtj@camus:~$
|
共4页: 上一页 [1] 2 [3] [4] 下一页
|