Python高性能編程(二)基本計算機系統(tǒng)

基本的計算機可以看做由三個部分組成:計算單元、存儲單元和通信單元。一個基本的計算機系統(tǒng)硬件組成如下圖:

4-計算機系統(tǒng)硬件組成.png

計算單元

性能指標

計算單元是計算機的核心組件,它的作用是將接收到的比特流進行處理和轉(zhuǎn)換之后輸出。

計算機的主要計算單元為CPU和GPU(上圖中圖形適配器的核心)。

計算單元的性能指標主要有兩個:

  • IPC(Instruction Per Clock):即每一時鐘周期內(nèi)能執(zhí)行多少條指令。提高IPC對計算單元的矢量計算能力有相當(dāng)程度的影響;
  • 時鐘頻率:即每秒能完成多少個時鐘周期(通常我們說的CPU主頻多少GHz指的就是時鐘頻率)。時鐘周期是計算機中最基本的時間單位,在一個時鐘周期內(nèi),計算單元僅能完成一個最基本的動作(即取指令、存儲器讀、存儲器寫等)。提高時鐘頻率可以提高該計算單元上所有程序的運行速度。

通常來說IPC和時鐘頻率是相互競爭的關(guān)系,想要同時提高二者需要工藝的突破。相較于CPU,GPU的IPC和時鐘頻率都很高,但是它的計算性能受到較慢的總線傳輸速度的制約。

加速手段

在物理上,提高計算單元性能的方式就是提高單位面積芯片上晶體管的數(shù)量,但是目前晶體管的大小已經(jīng)接近物理極限,在這個基礎(chǔ)上再進行提高就需要直接操作原子排列的能力了,因此摩爾定律也快到了盡頭。如果不考慮將來計算機系統(tǒng)的整體顛覆,如量子計算機體系,我們現(xiàn)在用來加速計算的手段主要有以下幾種:

  • 超線程技術(shù):通過虛擬硬件,高效利用計算單元的空余能力。簡單來說就是在計算單元執(zhí)行某個任務(wù)的間隙里,通過聰明的調(diào)度方案,插入另一個大小合適的任務(wù);如果調(diào)度得當(dāng),能夠提升一個CPU核心20-30%的性能。
  • 亂序執(zhí)行:如果編譯器檢查出一個程序的某一部分和前面的操作無關(guān),那么這時候程序的兩部分可以以任意順序交錯執(zhí)行甚至同時執(zhí)行。亂序執(zhí)行就是將這兩部分或者多部分進行調(diào)度安排,在一些指令被阻塞(例如網(wǎng)絡(luò)下載或者內(nèi)存訪問)時,執(zhí)行另一些程序,從而提高資源利用率。
  • 多核架構(gòu):如果我們?yōu)橛嬎銌卧鏑PU增加更多計算核心,那么理所當(dāng)然能夠提高計算單元的性能,我們??吹降乃暮税撕擞嬎銠C就是出于這種考慮。但是單純增加更多核心并不一定能夠提高程序運行的速度,這是由阿姆達爾定律(Amdahl's law)決定的。也就是說,一個可以在多核上執(zhí)行的程序如果有一部分必須要在單核上運行,那么這一部分就會成為瓶頸,導(dǎo)致無法通過增加核心提高這個程序的運行速度。

存儲單元

性能指標

存儲單元的主要作用就是保存比特信息。無論是程序中的變量、一張圖片還是一本小說,在存儲單元中都是以一系列01的形式保存的。計算機系統(tǒng)中的典型存儲單元包括寄存器、RAM、硬盤以及遠程存儲。

存儲單元的性能指標主要有兩個:

  • 讀寫速度:讀寫速度和讀寫的方式相關(guān),對于大多數(shù)存儲單元,一次性讀取大塊連續(xù)存儲的內(nèi)容,要比多次讀寫多個不連續(xù)的數(shù)據(jù)塊要快得多。
  • 延時:即設(shè)備為了查找到需要讀寫的數(shù)據(jù)位置需要的時間。這和設(shè)備的存儲方式直接相關(guān),例如機械硬盤要靠移動磁頭并旋轉(zhuǎn)硬盤到一定速度來查找數(shù)據(jù),這會導(dǎo)致較高延時。而固態(tài)硬盤在這方面的表現(xiàn)就好的多。

加速手段

為了加快存儲單元中的讀寫,很多系統(tǒng)都實現(xiàn)了層次存儲:數(shù)據(jù)開始存放在本地或者遠程存儲中,然后其中一個子集進入主存,高速緩存則再從主存中讀入一個小部分,最終將數(shù)據(jù)讀入寄存器中。

下圖展示了一個存儲器層次結(jié)構(gòu)示例:

5-計算機存儲器層次結(jié)構(gòu).png

通信單元

性能指標

通信單元通常指的是各種總線。對于總線,主要的性能指標有兩個:

  • 總線帶寬:也就是這條總線一次能夠傳輸多少數(shù)據(jù)。我們在讀取的過程中,總是從存儲中讀取一塊輸入,然后一次或者分批通過總線進行傳輸。如果總線帶寬較大,我們就能夠一次性傳輸較大的數(shù)據(jù)塊。
  • 總線頻率:也就是這條總線每秒能夠傳輸多少次數(shù)據(jù)。當(dāng)總線頻率較高時,方便我們進行多次的讀取,這對于需要經(jīng)常隨機讀取內(nèi)存的代碼較為有利。

總線帶寬和頻率是由物理布局決定的:芯片之間的物理鏈路長度較短時,傳輸速度就會變快。而物理鏈路的數(shù)量則決定了帶寬。

加速手段

如前所述,總線的傳輸速度主要取決于物理布局,因此主要是通過精妙的復(fù)雜設(shè)計,來對總線布局進行優(yōu)化。我們的CPU片內(nèi)總線連接就經(jīng)歷了從早期的星形連接進化到環(huán)形總線到Mesh網(wǎng)絡(luò)的過程。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容