計算機體系結構量化研究方法-1


1.1 introduction

計算機技術的進步主要原因有兩個:設計和制造。設計主要是架構的演進,制造主要是工藝的進步。這兩個因素雖然都能保持計算機性能的進步,但是卻不盡相同。

微處理器的誕生,極大的促進了計算機的發展,架構的演進卻相對慢一些,后來又有兩方面的原因加快了架構演進的速度:1, 高級語言(之前是匯編語言);2, 操作系統,如UNIX/Linux等的誕生。這兩種技術的產生,加快了新的架構在商業中的使用。再之后,RISC(精簡指令集)誕生了,它的優勢主要在兩個方面:1, 指令級並行(流水線和多指令發射);2, cache。RISC的產生提高了性能,迫使之前的架構要么改善自己,要么消失。

隨着計算機的發展,微處理器技術的限制(晶體管尺寸等),多核處理器產生了,並從以前的ILP(instruction level parallelism)到DLP(data level parallelism),thread-level parallelism (TLP),request-level parallelism (RLP)。其中,ILP是程序無法察覺的,由硬件隱式的去做;別的並行方式都需要程序自己去做,對程序員來說是一種負擔。

書中說了很多,但歸根結底,到現在位置,摩爾定律已經失效,提高芯片功耗比需要依賴特殊的架構(domain-specific architectures),而不是通用處理器。

 

1.2 計算機的分類

根據使用場景,需求,計算技術的不同,計算機分成了五類:

Internet of Things/Embedded Computers

Personal Mobile Device

Desktop Computing

Servers

Clusters/Warehouse-Scale Computers

 

並行化的分類以及並行架構

考慮到energy和cost,目前主要是兩種並行化的方向:

1. DLP 也就是數據級並行化

因為有很多數據可以並行化處理

2. TLP 也就是任務級並行化

因為有很多的任務可以並行化處理

 

而計算機硬件則可以可以利用程序的這兩種並行化提高性能,主要有四種方式:

1. 硬件的指令級並行化可以在兩個層面利用程序的DLP,一個是利用編譯器的幫助(比如pipeling),一個是利用硬件的推測執行(speculative execution)。

2. 向量架構,GPU,多媒體指令集可以利用DLP,讓一條指令作用於多個數據

3. TLP在幾組硬件的幫助下,可以利用DLP和task level的並行化,讓多個線程可以交互數據,從而提高性能

4. RLP可以在程序或者操作系統指定的很多task之間實現並行化。

 

根據多處理器中,最受約束組件中的指令流和數據流,將所有的計算機分為四類:

1. SISD 單指令流,單數據流

這種類別是單處理器,程序員把它看作是標准的順序計算機,但是它可以實現ILP。例子為超標量和推理執行。

2. SIMD 單指令流,多數據流

同一個指令由多個使用不同數據流的處理器執行。SIMD計算機實現數據級並行,對多個數據並行執行相同的操作,每個處理有自己的數據存儲器,但是只有一個指令存儲器,用來提取和派發指令。SIMD有三種:向量體系結構,標准指令集的多媒體擴展,以及GPU。

3. MISD 多指令流,單數據流

暫時沒有這種類型的商用多處理器。。。

4. MIMD 多指令流,多數據流

每個處理器提取自己的指令執行,對自己的數據操作,針對的是task level parallel。適用cluster以及WSCs,因為可以並行執行多個獨立任務,幾乎不需要通信和同步。

 

1.3 計算機體系結構的定義

計算機設計人員的任務:判斷哪些屬性對於新計算機而言是至關重要的,然后滿足成本,功耗和可用性約束條件。包括:指令集設計,功能組織,邏輯設計,實現方式;而實現方式可能包括集成電路設計,包裝,電池和冷卻等。因此設計人員要熟悉編譯器,操作系統以及邏輯設計與包裝等廣泛技術。

13.1 指令集體系結構

指令集體系結構(ISA),指代程序員可以看到的實際指令集,作用相當於區分軟件和硬件的界限。后面會以80x86,ARM以及RISC-V為例子,從7個方面介紹ISA。

1) ISA的分類

幾乎所有的ISA都是通用寄存器體系結構,操作數要么是寄存器,要么是存儲器地址。有兩個主流版本:80x86,register-memory ISA,在許多指令中都可以訪問存儲器;還有一種是RISC-V,是load-store ISA,只能通過load或者store指令來訪問存儲器,下圖是RISC-V的部分寄存器:

 2) 存儲器尋址

幾乎所有桌面計算機和服務器使用字節尋址來訪問存儲器操作數。ARM要求操作對象是對齊的,比如大小是s的對象,地址為A,為A mod s == 0,就說明對這個對象的訪問是對齊的。80x86和RISC-V不要求對齊,但是對齊會更快一些。

3)尋址模式

RISC-V尋址模式:寄存器尋址,立即數尋址以及位移量尋址。所謂的位移量尋址,是指固定的偏移量加到寄存器得出存儲器地址。

 4)操作數的類型和大小

8bit ASCII,16bit Unicode,32bit int,64bit ull以及IEEE 754浮點數(32bit單精度,64bit雙精度)。

5)操作指令

數據傳輸指令,算數邏輯指令,控制指令,浮點指令。

6)控制流指令

幾乎所有的ISA都有,支持條件轉移,無條件跳轉,過程調用以及返回。都使用相對於PC的尋址方式,分支地址由一個地址字段指定,該地址將被加到PC。不過這幾種架構有細微差別,RISC-V條件分支(BE,BNE等)季銨鹽寄存器中的內容,80x86和ARM測試條件代碼位,這些位是在執行算術/邏輯運算時順帶置上的。ARM和RISC-V過程調用的返回地址放在寄存器中,80x86則存放在存儲器的stack里。

7)ISA的編碼。

有兩種編碼選擇:固定長度和可變長度。ARM和RISC-V是固定長度(32位),8086是可變長度(1~18 byte)。采用可變長度編碼可以減少程序的體積,所以后來ARM和RISC-V推出了16bit指令,成為Thumb,Thumb-2等。

下圖是RISC-V的部分ISA:

下圖是RISC-V的浮點運算ISA:

以及下面是RISC-V的指令格式:

R格式用於整數寄存器到寄存器的操作,比如ADD,SUB等;I格式的用於load操作以及立即數操作,如LD,ADDI等;B格式用於分支;J格式用於跳轉和link?;S格式用於store。

 

1.3.2 真正的計算機體系結構:設計滿足目標和功能需求的功能和硬件

計算機的實現有兩個方面:組成和硬件。組成,也就是微體系結構,包含存儲器系統,存儲器互聯,設計內部處理器或CPU等等,使用相同ISA計算機,可能有不同的組成,比如Intel和AMD都是x86 ISA,但是組成非常不同。硬件是計算機的具體實現,比如詳盡的邏輯設計以及封裝技術,有相同ISA,相似組成的計算機,可能有不同的硬件,比如Intel i7和Xeon就是相同的ISA相似的組成,硬件實現略有不同。

因此,嚴格來說,計算機有三個方面:ISA,組成以及硬件。

計算機架構師要考慮的內容:

 

 1.4 技術趨勢

在系統架構中,有些技術一直在發生劇烈的變化,比如:

a) 晶體管邏輯技術

晶體管密度在增加,晶片尺寸在增大

b) 半導體DRAM

也就是通常說的內存,增長越來越慢

c) 半導體閃存

d) 磁盤技術

e) 網絡技術

以上這些技術,都在制約計算機的發展速度。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM