計算機組成原理 流水CPU

2021-07-13 21:10:35 字數 4802 閱讀 3651

寫在前面

許多人在選擇或了解

cpu時,常常忽略

「流水線

」這個指標。其實也難怪,在經常被介紹的

cpu引數中,

關於流水線被提到的不多,即便提到,也相當簡略和專業。非專業人士很難理解,有時也就不甚了了。

也許有人會說,我管它什麼流水線不流水線的,型號越新、**越高,就一定越好。這種想法不是沒有道理。

可是,當面對市場時, 您一定會蒙圈的。 因為,確實有型號舊的

cpu因為流水線的原因,效能接近或超過新型

號的;確實有主頻低的

cpu由於流水線的原因,效能接近或超過主頻高的;確實有**低的

cpu由於流水線

的原因,效能接近或超過**高的

……所以,了解

cpu的流水線技術,對非專業人士也是有益無害的。 其實,非專業人士並不一定了解的那麼詳】

細。 可偏偏您在選擇或了解

cpu時,常會有人告訴您, 某某

cpu採用了先進的「 分支**技術」啥的,整得

好像多神秘似的。 那就讓我們看看「神秘」面紗的後面吧。

遺憾的是,非常遺憾的是,網上關於

cpu流水線的解釋,大多都相當專業,使用了很多艱澀難懂的術語,

長篇大論的比比皆是。使許多非專業人士望而卻步。

本文力圖用通俗易懂的語言,簡單明瞭地介紹一下

cpu的流水線技術,資料都來自網路。 因為很少使用專

業術語,難免有不嚴謹之處。好在又不是寫學術**給專家們看。純屬個人理解,絕非權威觀點。

cpu流水線

pipeline

淺說啥是

cpu流水線

說到生產中的流水線,人們並不陌生。汽車組裝流水線可以說是人們比較熟悉、比較典型的流水線(

因為電視中常看到

)。假設汽車組裝流水線分

4個主要工序:

1、安裝動力及其傳動系統(

發動機、變速箱等);2

、安裝向內配置(

座椅、儀表等);3

、安裝車輪等;

4、安裝外殼等。

假設完成

4道工序需要

40分鐘(

每道工序需要

10分鐘

)。 如果這

4道工序按流水線的方式工作,當第1道

工序完成,下交給第

2道工序組裝時,第·道工序又開始下一台車的安裝。那麼,每

10分鐘就有

1台車上線開

始組裝,

40分鐘內將有

4台車在被組裝中(

只不過組裝的部位不同

)。如果再將

4道工序細分為

8道工序(

加長流水線

),40

分鐘內會有85

分鐘就有一台車

上線開始組裝。

cpu

流水線技術正是利用這個原理的。

在 cpu

流水線技術中,「 指令」 相當於「 車」,「級」 相當於「工序

」。cpu執行指令速度越快。

如果將

cpu流水線設計為十幾級、幾十級, 速度提高程度可想而知。

當流水線級數(

深度) 在

5級以上時,通常叫「 超流水線」 。

啥叫「 指令」 ?

從現在開始,我們需要常用「 指令」 這個詞,所以先說說它吧。

我們對電腦下達的每乙個命令都是在下達指令,

cpu對於一條具體的指令執行過程,通常可以分為5個步

驟:取指令—指令解碼—取運算元—運算—寫結果。

流水線與主頻

在許多資料中常會看到這樣的話「 由於流水線技術的進步,使

cpu主頻得到提高」 。貌似主頻的提高取決

於流水線技術。其實不是這樣的。

首先,必須明白,主頻是由外頻和倍頻決定的。 也可以說,即便沒有流水線技術, 主頻也可以做得很高。

但是,如果沒有流水線技術,主頻做得再高也沒有實際意義,因為單位時間內無法提供那麼多的指令、資料

供高速的

cpu去執行,相當一部分

cpu資源會被閒置。所以,人們在設計主頻時,主要考慮的是能夠滿足執

行指令、資料運算的需要就可以了。

從這一點上理解,由於流水線技術的應用,使提供指令的數量得以大幅度提高,高主頻設計成為有的放矢。

所以說,流水線技術,促使人們提高主頻,以滿足大量指令、資料的執行、 運算需要。 也可以這樣理解,有了流

水線技術,主頻做得不夠高, 大量指令、資料的執行、 運算不能及時實現,結果就會出現小馬拉大車的現象。

所以說,流水線技術促進了主頻的提高,主頻的提高,才能滿足流水線技術的需要。 不嚴謹的理解,如果主

頻表示著

cpu可達到的運算速度的話,那麼,流水線技術可以使「 可達到」 變為現實。

因此, 自從

intel

首次在486

晶元中開始使用流水線技術後,

cpu主頻蹦著高地竄。

要說,流水線技術真是個好東西,但人們在使用過程中遇到了許多問題,在不斷解決問題的過程中, 流水線

技術也在不斷地成熟。

如果您要了解,看看下面的內容吧。

分支**與亂序執行

先得說說「 相關」

前面講到,

cpu對於一條具體的指令執行過程,通常可以分為

5個步驟: 取指令—指令解碼—取運算元—

運算—寫結果。

又叫它「 條件轉移」,指令

a在這裡叫「 條件指令」。

再說「**」和「 亂序」

假設現在有 a、

b、c、

d、e、

f、g七條指令需要上乙個

5級流水線。 其中a和

b是相關的。

一般流水線可不管你相關不相關,當

a執行完第

1步時,就叫

b馬上上線。結果就會出現錯誤。

咋辦?科學家們弄出了「 分支**」 與「 亂序執行」 技術。要說這兩個玩意兒可真夠「 聰明」 的。

首先分支**技術在

b還沒有上線時,就**到它現在還不能上線,就叫它靠邊先候著。

亂序執行(

out-of-

orderprocessing

) 技術緊接著讓無相關的指令 c、

d、e、

f先上線,仍舊保證流水線

在全負荷工作。在

a執行第

5步時, 分支**技術又提前**出下乙個該

b上線了。到

a執行完時,早就候命的 b

便一步衝上前,在

g之前加塞上線。

現在的分支**技術能夠達到

90%以上的正確率, 進一步提高分支**的準確率也是正在研究的乙個課題。

級數與效率

cpu

執行指令速度越

快。」 但是,可但是,理論和實際總是有差距的。 這就引出了流水線級數與效率的問題。 流水線技術有個很叫

人鬱悶的弊端,就是「錯誤」和「延遲」。

先說「 錯誤」

一旦某一級出錯的話, 就需要整條流水線停下來,

等待修正指令的修正,

致使執行效率反而下降。

流水線越

長,級數越多,出錯的機會也越大,出錯的影響也越大。

雖然這種錯誤機率很小很小,但是不可避免,而且會被

非常高的主頻放大無數倍,帶來的影響就是工作效率並沒有隨著級數的增加而明顯提公升。「聰明

」的「分支測」與「亂序執行」技術也不是沒有疤瘌眼的。出錯總是難免的。而且, 高速執行的流水線出現

其它錯誤也是難免的。

再說「 延遲」

由於任何電導體都會產生延時。 流水線越長、級數越多, 延遲次數就越多,總延時就越長, cpu 完成單個指令的時間就會越長。 也就影響著 cpu 的實際工作效率, 還會帶來高功耗和高發熱量。錯誤和延遲告訴我們, 流水線並不是越長越好!

例如, 近年來 intel 的奔 4 處理器經過了三個階段的發展。

最早的奔 4 只有 13 級的流水線, 普遍主頻未達到 2g, 速度一般。第二代奔 4 有 20 級流水線, 由於級數比較合適, 所以速度得到大幅度提公升了, 又未影響執行效率。 當時的奔 4-2.4a 是一款經典產品。嘗到了甜頭 intel 很快就推出了第三代奔 4,有 31 級流水線。 但很快發現,這個奔 4 的實際執行效率還不如

老奔 4。 發熱和功耗都很大。 「高頻低能」的美名,終止了 intel 對***奔 4 的開發。因此, 科學家們總是在不斷地研究級數與效率的合理搭配,以取得最佳級/效比。級數不能太高, 速度又要提高。為了這,聰明的科學家弄出了個「超標量」。

超標量

超級標量是一種多流水線技術。 就是在乙個 cpu 內弄幾條流水線。 在每條流水線級數不多的情況下,增加

同時執行的指令數, 從而提高 cpu 的執行、運算速度。

通常, 傳統的 intel 走的是少條、 長流水線的路子。 amd 走的是多條、 短流水線的路子。由於 amd 由於流水線級數較少, 所以主頻較低。 所以,有些人認為低主頻的 amd 速度不如高主頻 intel快。 其實 intel 和amd 只是走了兩條不同的提高 cpu 效能的路而已。實踐證明,多條、短流水線技術的確有許多長處。因此,intel 的 pentium mintel 也開始採用這種流水線結構了。

可以說,當前流行的 cpu,都包括「超流水線」「 超標量」「分支**」「亂序執

行」等技術。

計算機組成原理cu 計算機組成原理 計算機概論

現代計算機樣式千奇百怪,常見的有我們的筆記本,台式電腦,也有各種伺服器 手機 攝像頭等都屬於計算機範疇。計算機包含我們看得見摸得著的計算機實體,稱為計算機硬體,如cpu 記憶體 各種掛接裝置等 還有我們看不見摸不著的軟體,它支援著硬體按照我們的預想在操作,包括系統軟體和應用軟體 計算機硬體樣式千奇百...

計算機組成原理

1計算機系統概論 1.1 計算機簡介 計算機由 硬體 和 軟體 組成。硬體 是看得見摸得著的各種電子元器件,各類光,電,機裝置的實物組成,如主機,外設等等。軟體 是看不見摸不著,由人們事先編製成具有各類特殊功能的資訊組成。計算機的三層結構 高階語言 組合語言 機器語言 微指令系統。計算機組成與計算機...

計算機組成原理

1.加法器是如何計算不同型別變數的加法的 分析 加法器的功能就是計算而已,其有兩個輸入端,當兩個輸入端都有資料時,其就進行計算並將結果輸出。輸入到加法器的兩端的資料格式是統一的 可能都是有符號的補碼形式 這就是說,各種型別的變數相加,這些變數在進入加法器輸入端之前,程式都會根據其型別將其轉換為輸入端...