撇开计算机硬件中纷繁复杂的各类设备、芯片及外围接口等,站在软件开发者的角度看,咱们只须抓住硬件的几个关键部件。对于系统程序开发者来讲,计算机多如牛毛的硬件中,有三个部件最为关键,它们分别是中央处理器CPU,内存和I/O控制芯片,这三个部件几乎是计算机的核心了。程序员
早期的计算机没有很复杂的图形功能,CPU的核心频率也不高,跟内存的频率同样,它们都是直接链接在同一个总线(BUS)上。因为I/O设备诸如显示设备、键盘、软盘和磁盘等速度与CPU内存相比仍是慢不少。为了协调I/O设备和与总线之间的速度,也为了让CPU可以和I/O设备进行通讯,通常每一个设备都会有一个相应的I/O控制器。早期的计算机硬件结构以下图所示:缓存
虽然如今的计算机硬件结构愈来愈复杂,但实际上它没有脱离最初的CPU、内存,以及I/O的基本结构。服务器
在过去的50年里,CPU的频率从几十kHz到如今的4GHz,整整提升了数十万倍,基本上每18个月频率就会翻倍。可是自2004年以来,这种规律彷佛已经失效,CPU的频率从那时开始再也没有发生质的提升。缘由是人们在制造CPU的工艺方面已经达到了物理极限。blog
因而人们开始想办法从另一个角度来提升CPU的速度,就是增长CPU的数量。其中常见的一种形式就是对称多处理器(SMP,Symmetrical Multi-Processing),简单的讲就是每一个CPU在系统中所处的地位和所发挥的功能都是同样的,是相互对称的。接口
理论上讲,增长CPU的数量就能够提升运算速度,而且在理想状况下,速度的提升与CPU的数量成正比。但实际上并不是如此,由于咱们的程序并不能分解成若干个彻底不相干的子问题。内存
多处理器应用最多的场合是商用服务器和须要处理大量计算的环境。在我的电脑中,使用多处理器是比较奢侈的行为。因而就将多个处理器“合并在一块儿打包出售”,这些被“打包”的处理器之间共享昂贵的缓存,只保留多个核心,而且以一个处理器的外包装进行销售,这就是多核处理器的基本想法。多核处理器实际上就是SMP的简化版,固然在细节上还有一些差异,可是从程序员的角度看,它们之间区别很小,逻辑上彻底相同。开发