分类: 服务器与存储
2012-03-26 09:05:54
CPU的基本架构 (Basic CPU Architecture)
CPU(Central Processing Units)其实是一个复杂的包含多个子组件的系统.
Compent | Use |
ALU | Arithmetic Logical Unit: Perform integer math and conditionals |
FPU | Floating Point Unit: floating point operations |
Load | Reads from memory into register |
Store | Writes to memory from register |
Prefetch/Decoder | Instruction prefetch from memory, and decode into micor-ops |
Scheduler | Schedules instructions on other components |
ALU处理整型运算和逻辑运算,是CPU里最重要的组件。因为ALU最常被使用,一般CPU里会有两个ALU;
FPU处理浮点数运算。因为更昂贵,所以CPU一般只有一个FPU;
Load从内存中读取数据;
Store向内存中写入数据;
Prefetch/Decoder可以从内存中取指令,并解释为可执行的微指令(micro-ops);
Scheduler负责调度指令,把指令发送给执行该指令的组件。
CPU对指令的操作流程为:
Fetch -> Decode -> Execute -> Memory -> Write
其实哪怕是单个CPU也存在并行。因为各个组件是独立的,所以每个组件在完成前一指令的“加工”后,可以开始“加工”下一个 指令。比如Fetch从内存中取出指令交给Decode去解析后,就可以开始从内存取出下一条指令。这就是Pipelining,类似于流水线。
超线程技术(HyperThreading)
为了解决单个CPU效率低下的问题,有人提出超线程技术的解决方案。其实就是在原有基础上,加入另外的寄存器组。这样的好处是CPU可以同时指行多条指 令。比如FPU使用一组寄存器进行浮点运算而同时ALU使用另一组寄存器进行整型运算。使用超线程技术时也可能同时会相应地增加ALU的数量。
尽管这样可以达到一定程度上的并行,但ALU,FPU以及Load/Store这些组件仍然是共用的,仍然可能成为瓶颈。
多核技术(Multi Core)
为了达多更大程度的并行,多核技术随之产生。CPU把ALU,FPU,Instruction fetch/decode,Scheduler这些组件看成是一个Core。而多核(Multi Core)就是在同一个CPU里同时存在多组这些组件。各个Core可以并行地执行指令,并拥有各自的一级缓存(L1 Cache),但各个核之间仍然共享二级缓存(L2 Cache)和总线(bus)。
优点(相对于多处理器):
共享缓存,所以可以避免从内存中装载同一数据到缓存中数次,从而更高效。而多处理器不能共享缓存;
因为时钟周期一致,所以多核访问缓存的速度更快;
更便宜、且更省电。
缺点:
因为共享缓存,别的线程可能会破坏缓存中的数据;
因为共享总线,总线带宽可能会成为瓶颈。
多处理器技术(Multi Processor)
这种技术直接使用多个CPU。各个CPU有独立的组件,包括L2缓存和总线,所以它们可以并行地对内存进行操作。不同的CPU还可以有不同的时钟周期(Clock speeds)。
多处理器的架构有两种:
Symmetric Multi Process(SMP)——它使用Uniform Memory Architecture(UMA)。在这种架构下,所有的CPU都是等同的,它们可以各自独立地对内存进行操作。
Asymmetric Multi Process(AMP)——它使用Non-Uniform Memory Architecture(NUMA)。在这种架构下,CPU0被视为地位最高的,由它来控制其它CPU的操作。
优点(相对于多核):
各处理器完全独立,性能的瓶颈会更少;
独立的缓存,所以整体缓存空间更多;
可扩展。
缺点:
因为可以独立存取内存,需要同步。性能为因此受到很大影响;
各CPU需要数据时,即使这个数据存在另一个CPU的缓存中,它仍然不能使用那个缓存中的数据,必须从内存中读取;
更昂贵、且更耗电。