【《超標量處理器基礎》學習筆記一】處理器設計

  • 2019 年 11 月 14 日
  • 筆記

本系列為《超標量處理器基礎》學習筆記,多數為書中內容,摘取感興趣的部分稍作整理。

體系結構指指令集體系結構,即指令集的規範,而微體系結構是指體系結構的具體邏輯實現,同一種指令集體系結構可以用不同的微體系結構,並採用不同的流水線設計,不同的分支預測演算法等。

微體系結構的多樣性使得同一種體系結構能夠不斷地推陳出新,並利用新出現的微體系結果技術來提高微處理器的性能,同時又保持程式碼的兼容性。

微處理器是指令集處理器(ISP, Instruction Set Processor)。ISP執行預先定義指令集中的指令。微處理器的功能幾乎完全取決於指令集,從而表明了它的執行能力。所有運行於微處理器上的程式都要基於指令集進行編碼。預定義的指令集稱為指令集體系結構(ISA, Instruction Set Architecture)。ISA是軟體與硬體之間的介面,或者是程式與處理器之間的介面。ISA是設計的規範,而微處理器或ISP是設計的實現。

微處理器的發展符合摩爾定律,即在單個晶片上的器件集成度將以每18個月到24個月的速度翻一番。

體系結構、邏輯實現和物理實現

體系結構規定了處理器的功能性行為,邏輯實現是實現體系結構的邏輯結構和組織,物理實現是邏輯實現的物理結構和具體表現形式。

體系結構對指令集處理器的指令集合進行說明。為了能被處理器執行,所有的軟體都必須與指令集匹配、或者用該指令集進行編碼。每個程式都被編譯成這個指令集的一個指令序列。

邏輯實現就是體系結構的具體設計,也稱為微體系結構。某種體系結構在它的ISA生命周期內可以有許多邏輯實現。對於在這個ISA上編寫的任何程式,同一體系結構的所有邏輯實現都可以執行。與邏輯實現相關的一些概念包括流水線設計cache存儲器分支預測器

物理實現是設計的具體物理表現形式,通常是單晶片或多晶片的封裝。對於一個邏輯實現,可以有許多不同的物理實現,按時鐘頻率、cache存儲器容量、匯流排介面、結構技術及封裝等方面的差異而具有不同的形式。

ISA

1.指令集體系結構將軟體與硬體或者程式與處理器之間的開發獨立開來。程式可以根據ISA的規定進行開發,而不理會實際機器的實現細節,反之亦然。ISA較少重新編譯和開發,對於新出現的ISA,開發與其相配套的編譯器和作業系統將需要花費10年以上的時間。ISA存在的時間越長,基於這個ISA的軟體應用基礎將越大,將來取代這個ISA的困難就越大。

2.ISA是微處理器設計的規範,所有的實現必須滿足這個規範並支援ISA規定的功能。相反,微體系結構的發展非常迅速。

3.每個ISA中有個內在的介面(動態-靜態介面 DSI,Dynamic-Static Interface)定義,區別哪些是在編譯時靜態完成的,哪些時在運行時動態完成的,如下圖:

通常所有在編譯時由軟體和編譯器靜態完成的人物和優化,在DSI之上。相反,所有在運行是由硬體動態完成的任務以及優化,認為是在DSI之下。所有的體系結構的特性都在ISA中規定,因此都處於靜態區域。處於DSI之上的軟體和DSI之下的微體系結構的發展是相互獨立的。

ISA 設計中的關鍵問題是DSI放置的位置,DSI可以將高級語言編寫的應用程式與底層機器的實際硬體放置到不同的抽象層次。可以通過編譯器優化DSI上的內容,或者在微體系結構中優化DSI下的內容。(例如精簡指令集的DSI位置放的比複雜指令集CISC更低,希望更多的通過運行DSI上的編譯器完成優化,減小硬體複雜度,從而獲得更快的機器速度。)

一個缺點

ISA不斷發展的過程中加入了許多新的特性,可以將以前的實現特徵提升到體系結構的層次,將某些原始的微體系結構特徵暴露給軟體,有助於編譯器的優化,從而減小硬體複雜度,DSI的位置降低。這些特徵成為ISA的一部分,則未來的實現必須滿足這部分特徵規範。但是隨著硬體的發展,這些陳舊的特徵可能低效過時,從而不利於性能提升,因此體系結構和微體系結構必須嚴格分離。理想情況下ISA應只包含表達功能或者軟體演算法語義所必須的特徵,而不管那些優化程式性能的所有特徵應該歸入實現還是歸入微體系結構領域。

處理器性能法則

處理器性能公式

處理器性能是根據執行一段特殊程式碼所需要的時間來衡量的(時間/程式, Time/Program),又可分為三項

(1)指令數:特定程式需要執行的動態指令的數目;

(2)平均(在整個程式的執行範圍內進行平均)執行每條指令需要耗費多少個始終周期,用CPI(Cycles Per Instruction)表示;

(3)機器的時鐘周期,每個時鐘周期需要的時間

由公式1.1,可減少任一項來提升性能,但上述不是相互獨立的,性能的提升需要權衡和折中。書本第7頁1.3.2節處理器性能優化中描述了一些例子。

性能評價方法

功能模擬器:模擬體系結構的機器,用於驗證程式能否被正確執行。

性能模擬器:模擬微體系架構,測量執行一個程式所需要的時鐘周期的數目。

性能模擬器可分為路徑驅動和執行驅動。

指令集並行處理

指令集並行處理可認為多條指令並行執行。串列處理一次執行一條指令,下一條指令執行之前上一條指令必須完成。

流水線處理器可重疊執行多條指令,若每個周期都有一條新的指令進入流水線,雖然每條指令的處理時間與串列的相同,但是多條指令的重疊可以讓平均CPI降低到接近1。

標量處理器每個時鐘周期至多只能取出一條指令並進行發射,超標量處理器則可以在每個時鐘周期取出多條指令進行發射。CPI 小於1或者ICPI大於1的處理器成為超標量處理器。

改寫公式1.1如下:

指令數由ISA、編譯器和作業系統共同決定。ISA每條指令的完成工作量對指令總數由影響,編譯器效率、程式執行過程中,應用程式對作業系統的功能調用將增加執行的指令總數。

平均IPC反應處理器達到的平均指令吞吐率。

減少流水線中每一段的邏輯門的級數、同時增加流水線的級數能提高時鐘頻率。為了獲得很高的IPC,流水線必須設計的很寬,以便每一段中可以同時處理多條指令。流水線的加寬增加了硬體的複雜度,增加了流水線各段之間的訊號傳播延遲。因此在一個更寬的流水線中,為了維持相同的頻率,流水線需要加深,這就需要在流水線究竟是要加寬還是要加深的選擇中進行複雜的權衡。

並行處理器性能

指令集並行可以稱為細粒度並行,粗粒度指程式段或者計算任務之間的並行。

幾個名詞

  • 操作延遲(OL):將有一條指令產生結果後使用的機器時鐘周期,即指令執行所需要的機器時鐘周期
  • 機器並行度(MP):機器支援的可以同時執行的最大指令數目
  • 發射延遲(IL):發射兩條連續的指令之間需要的機器時鐘周期,發射指一條新的指令初始化後進行流水線
  • 發射並行度(IP):每個時鐘周期內可以發射的最大指令數

當OL = 1, MP = 4, IL = 1, IP = 1時的基準標量流水線處理器如下,4個過程表示取指、解碼、執行和寫回。

超流水處理器

比基準處理器有著更高的流水度,處理器的時鐘周期比基準處理器短並定義為次時鐘周期。一個基準處理器的時鐘周期中有m個次時鐘周期,OL = 1個時鐘周期 = m個次時鐘周期。IL = 1個次時鐘周期。

即執行仍需要一個基準時鐘周期並等於m個次時鐘周期,但是執行時,處理器每過一個次時鐘周期就發射一條新指令。IP = 1條指令/次時鐘周期等於m條指令/時鐘周期, MP= m * k,k為一個次時鐘周期發射的指令數。

超標量處理器

超長指令字處理器

與超標量處理器的區別在於動態靜態介面DSI的位置,超標量處理器中,運行時決定某n條指令發射到執行段,而超長指令字是在編譯時進行的,編譯器決定哪n條指令被同時發射到執行段,並將這n條指令作為一個超長指令字存放到程式存儲器中。