撇開計算機硬件中紛繁複雜的各類設備、芯片及外圍接口等,站在軟件開發者的角度看,咱們只須抓住硬件的幾個關鍵部件。對於系統程序開發者來講,計算機多如牛毛的硬件中,有三個部件最爲關鍵,它們分別是中央處理器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的簡化版,固然在細節上還有一些差異,可是從程序員的角度看,它們之間區別很小,邏輯上徹底相同。開發