730 likes | 880 Views
新世代計算機概論. 第 3 章 電腦的系統單元. 3 -1 系統單元. 電腦的系統單元 (system unit) 包含中央處理器 (CPU) 與主記憶體兩個部分。. 范紐曼 (John von Neuman) 架構. 傳統電腦採用的范紐曼架構,包含有三部份:系統單元、儲存單元、及輸出和輸入單元。所以其特色為 (1) 具有內儲程式概念 (2) 指令的執行是循序的 (3) 用記憶體的位址來存取資料 (4) 指令的執行是由程式流程所控制 (5) 瞬間只有一個程式在執行. 不同形式的系統單元. 機殼內的元件: 主機板 (motherboard) 視訊卡
E N D
新世代計算機概論 第3章 電腦的系統單元
3-1 系統單元 電腦的系統單元 (system unit) 包含中央處理器 (CPU) 與主記憶體兩個部分。
范紐曼(John von Neuman)架構 傳統電腦採用的范紐曼架構,包含有三部份:系統單元、儲存單元、及輸出和輸入單元。所以其特色為(1)具有內儲程式概念 (2)指令的執行是循序的 (3)用記憶體的位址來存取資料 (4)指令的執行是由程式流程所控制 (5)瞬間只有一個程式在執行
機殼內的元件: • 主機板 (motherboard) • 視訊卡 • 網路卡 • 電源供應器 (power supply) • 散熱風扇 (cooling fan) • 固定架 (drive bay) • 連接埠 (ports) ::: 機殼與其他元件選購考慮因素??
購買主機板注意事項 選擇CPU所適合的主機板 選擇可支援自己所要的RAM種類的主機板 選擇適合的晶片組 主機板的擴充性 主機板與其他硬體裝置的相容性
主機板(Mother Board) AGP 插槽 COM LPT1 USB PS/2 北橋晶片 (負責高速介面處理) PCI 插槽 南橋晶片 (負責低速介面處理) CPU 插槽 記憶體插槽 (DIMM 168pin) IDE連接埠(軟碟) 電源插槽 SATA硬碟插槽
因為CPU是無法直接與Main Memory及PCI、ISA匯流排上的設備溝通,所以必須借助不同的暫存器及解碼器等;而經過Intel的設計,這些暫存器和解碼器等已經整合在兩片不同的晶片內,就是南橋和北橋了。 • 北橋晶片主要控制CPU與Main Memory以及PCI匯流排之間的訊號傳輸,現今的北橋晶片更加有AGP (Accelerated Graphic Port)圖形加速匯流排的控制工能;而南橋晶片則空制ISA匯流排及PCI匯流排上速度較慢的週邊設備。南橋和北橋都是主機板上用來為CPU及記憶體作週邊協調頻率或工作的兩片控制晶片。 • 其中一顆晶片配置在主機板的上方,而另一顆晶片則配置在另一方,所以被稱為北橋(North Bridge) 和南橋(South Bridge )。
3-2 中央處理器 (CPU) • CPU 負責算術運算、邏輯運算與程式執行,又稱為「微處理器」(microprocessor) 或「處理器」(processor)。 • CPU是由控制單元、算術邏輯單元及部分的記憶體單元 (暫存器) 所組成。 • 知名的CPU製造商:Intel、AMD、SUN、IBM、 Transmeta、VIA 、Compaq。
3-2-1 控制單元 (CU) • 控制單元(control unit)是負責控制資料流向與指令流向的電路,它可以讀取並解釋指令,然後產生訊號控制ALU、暫存器等CPU的內部元件完成工作。 • 控制單元的製作方式有下列兩種: • 硬體線路控制 (hardwired control):速度快但缺乏彈性。 • 微程式控制 (microprogrammed control):微程式碼通常存放在EEPROM或快閃記憶體。執行速度相對較慢,但修改彈性高。
3-2-2 算術邏輯單元 (ALU) • 算術邏輯單元 (arithmetic/logic unit) 是負責算術運算與邏輯運算的電路。 • 電腦的機器指令有下列三種類型: • 資料傳送類型:如LOAD、STORE指令。 • 算術邏輯類型:如加、減、AND、SHIFT指令。 • 控制類型:如JUMP、BRANCH。
3-2-3 暫存器 • 暫存器 (register) 是位於CPU內部的記憶體,用來暫時存放目前正在進行運算的資料或目前正好運算完畢的資料。當CPU要進行運算時,控制單元會先讀取並解譯指令,將資料存放在暫存器,然後啟動算術邏輯單元,針對暫存器內的資料進行運算,完畢後再將結果存在暫存器。 • 要注意的是暫存器和主記憶體不同,暫存器位於CPU內部,主記憶體位於CPU外部,中間透過匯流排來存取,匯流排 (bus) 是主機板上面的鍍銅電路,負責傳送電腦內部的電子訊號。
暫存器通常分成兩大類,其一是程式設計人員能夠存取的可見暫存器,其二是程式設計人員無法存取的控制與狀態的特殊暫存器。暫存器通常分成兩大類,其一是程式設計人員能夠存取的可見暫存器,其二是程式設計人員無法存取的控制與狀態的特殊暫存器。 • 可見暫存器又分成下列幾種: • 通用暫存器 (general purpose register):存放資料、指令或位址,數目越多,CPU執行效率越佳,成本越高。 • 資料暫存器 (data register) • 位址暫存器 (address register) • 條件碼暫存器 (condition code register):用來存放指令執行的狀態。
控制與狀態暫存器又分成下列幾種: • 程式計數器 (program counter):用來存放下一個要執行的指令在主記憶體的位址。 • 指令暫存器 (instruction register):將指令由記憶體取出,進入CPU準備要執行之前的暫存處。 • 記憶體位址暫存器 (memory address register):記憶目前所要存取記憶體的位址,其長度通常與位址匯流排寬度相同。 • 記憶體緩衝暫存器 (memory buffer register):對記憶體進行讀寫時暫時存放資料的地方。
控制與狀態的特殊暫存器: • 累加器(Accumulator)或稱ALU緩衝暫存器(ALU buffer register):存放ALU計算結果的特定暫存器。在計算進行時,CPU會從記憶體中取出另一運算元(Operand)與Acc之內容進行運算,其結果再存回Acc。 • 堆疊指標(Stack Pointer):記錄堆疊頂端位址,用來進行堆疊運算。 • 中斷向量暫存器 (interrupt vector register) • 程式狀態字組 (program status word) Ref P.3-9詳細說明
3-2-4 電腦的效能 • 反應時間 (response time) 是一個工作從開始做到結束所花費的時間 • 工作量 (throughput) 是在固定時間內所能完成的工作 • CPU時間 (CPU time) 是CPU執行一個程式所花費的時間,不包括等待輸入/輸出或執行其它程式的時間 • CPU時脈週期 (CPU clock cycle) 是CPU執行一個程式所花費的時脈週期 CPU時間 = CPU時脈週期 * 時脈週期時間
時脈(clock)是電腦內部一個類似時鐘的裝置,它每計數一次,稱為一個時脈週期(clock cycle),電腦就可以完成少量工作。 • 時脈速度(clock rate)指的是時脈計數的速度,單位為MHz(百萬赫茲)或GHz(十億赫茲),也就是每秒鐘幾百萬次或每秒鐘幾十億次,而時脈每計數一次所經過的時間稱為時脈週期時間(clock cycle time) 。換言之,1MHz、1GHz所對應的時脈週期時間分別為10-6秒(μs微秒)、10-9秒(ns奈秒)。 • 電腦的效能取決於時脈速度、CPI和指令數目等因素 例如完成一個指令需要3clocks,且CPU頻率為600MHz,則指令速度為600/3=200MIPS。
除了MHz、GHz之外,電腦的速度也可以使用MIPS、MFLOPS、TPS來描述:除了MHz、GHz之外,電腦的速度也可以使用MIPS、MFLOPS、TPS來描述: • MIPS 意指每秒鐘可以完成幾百萬個指令,適用於PC、工作站或大型主機。 MIPS=時脈速度(clock rate)/(CPI*106) =程式的指令個數/程式的執行時間(秒)*106 • MFLOPS 意指每秒鐘可以完成幾百萬個浮點數運算,適用於需要大量浮點數運算的機器 (例如超級電腦)。 MFLOPS=浮點運算個數/程式的執行時間(秒)*106 • TPS 意指每秒鐘可以完成幾個交易,適用於商業交易機器。
假設一部時脈速度為100MHz的電腦執行10000000個指令需要0.25秒,試問,這部電腦的CPI是多少?MIPS是多少? (90台科電通所) 1.電腦的時脈週期=時脈速度的倒數:1/(100*106)=10-8秒 2.計算執行每個指令需要多少時間: 0.25/107=2.5*10-8秒 3.計算執行每個指令需要多少時脈週期: 2.5*10-8/10-8=2.5 所以CPI為2.5 MIPS=時脈速度(clock rate) / CPI*106 =100*106/2.5*106=40
假設有兩部指令集相同的電腦A、B,其中,A的時脈週期時間為10ns,CPI為2,B的時脈週期時間為20ns,CPI為1.5。試問,同一個程式在A執行較快?還是在B執行較快?快多少?(假設程式中的指令數目為N)假設有兩部指令集相同的電腦A、B,其中,A的時脈週期時間為10ns,CPI為2,B的時脈週期時間為20ns,CPI為1.5。試問,同一個程式在A執行較快?還是在B執行較快?快多少?(假設程式中的指令數目為N) 1.計算A的CPU時脈週期,也就是CPI*N=2N 2.計算B的CPU時脈週期,也就是CPI*N=1.5N 3.計算A的CPU時間,也就是CPU時脈週期*時脈週期時間=2N*10=20N 4.計算B的CPU時間,也就是CPU時脈週期*時脈週期時間=1.5N*20=30N 所以A的執行速度較快,快了30N/20N=1.5倍
Amdahl,s Law 電腦的效能評估,除前述各項數值外,亦可利用Amdahl,s Law了解某系統,經過改進一部份效能後,整個系統效能提升的情形。 改良後的執行時間=(被改良部分的執行時間/改良多少倍)+未被改良部分的執行時間 或是系統加速多少倍(Speedup)=1/﹛(被改良的部份佔多少% / 增快多少倍)+未被改良的部份佔全部多少%﹜
假設某一應用程式,它全部執行時間為100秒,其中CPU時間佔了80秒,其餘是I/O時間。如果未來五年內,其CPU速度總共快了4倍,但I/O時間都沒有改進,試問執行該程式在五年後能變快多少?假設某一應用程式,它全部執行時間為100秒,其中CPU時間佔了80秒,其餘是I/O時間。如果未來五年內,其CPU速度總共快了4倍,但I/O時間都沒有改進,試問執行該程式在五年後能變快多少? Speedup=1/﹛(被改良的部份佔多少% / 增快多少倍)+未被改良的部份佔全部多少%﹜ 所以 Speedup=1/﹛(0.8/4)+0.2﹜=2.5倍 也就是雖然CPU快了4倍,若I/O未改進,將影響程式執行效能。
3-2-5CPU相關規格 • 外頻:CPU與外界(主機板)進行資料傳輸的頻率速度,也就是CPU存取主記憶體與晶片組的速度,單位為MHz。頻率越高,速度越快。目前以400、533、800、1066MHz為主。 • 倍頻:CPU核心所採用的頻率通常是外頻的倍數,而這個倍數就叫做倍頻。如Intel P4 640的外頻為800MHz,內頻為3.2GHz,所以倍頻為4。 • 內頻:內頻是CPU內部的實際運作速度,也就是倍頻乘上外頻。
就英特爾處理器而言,在Pentium III之前,系統外頻跟前端匯流排速度是相同的,於是一般也就認定外頻等於前端匯流排速度,而直接稱前端匯流排為外頻。不過,這樣的情況對Pentium 4處理器來說,卻是行不通的,由於現今處理器及主機板能支援的前端匯流排(前端匯流排(FSB)是連結所有電腦元件與晶片組及主記憶體,讓數據由電腦的一部份傳送至另一部份的線路。)速度已經遠高於處理器外頻,廠商便開始不再強調外頻,而只講前端匯流排速度,例如Pentium 4支援400MHz的前端匯流排頻率(甚至可以到533MHz),然而其外頻只有100MHz,以Pentium 4 1.8GHz來看,其運算時脈應為100MHz外頻乘18x倍頻,而不是一般所謂的400MHz外頻乘4.5x倍頻。
匯流排(Front Side Bus)是將電腦微處理器與記憶體晶片以及與之通信的設備連接起來的硬體通道。前端匯流排負責將CPU連接到主記憶體,前端匯流排(FSB)頻率則直接影響CPU與記憶體資料交換速度。 • 資料傳輸最大帶寬取決於同時傳輸的資料的寬度和傳輸頻率,即資料帶寬=(匯流排頻率×資料位元寬)/8。目前PC機上CPU前端匯流排頻率有266MHz、333MHz、400MHz、533MHz、800MHz等幾種,前端匯流排頻率越高,代表著CPU與記憶體之間的資料傳輸量越大,更能充分發揮出CPU的功能。 • 外頻與前端匯流排頻率的區別與聯繫在於:前端匯流排的速度指的是資料傳輸的實際速度,外頻這是CPU與主板之間同步運行的速度。大多數時候前端速度都大於CPU外頻,且成倍數關係
封裝:CPU其實是一個晶片 (chip),需要將它包裝起來以玆保護,並提供腳座與外界溝通,這個包裝的過程就叫做封裝。封裝方式有很多種,例如DIP、PGA、FCPGA、SECC、LGA。Micro-FCPGA壓縮的CPU由於採用了和台式電腦CPU相似的ZIP(零拔插力)插座,因此陞級是可行的,也是所有封裝中陞級最為方便的。大部分情況下,用戶隻需一把螺絲刀即可完成對CPU的更換。 封裝廠如日月光、矽品…
插槽腳位:插槽腳位決定了CPU如何安插在主機板的CPU插槽,不同的腳位有不同的插槽,針腳數目各異。如早期的Slot 1 、Slot A 為卡匣式,P4 5xx、6xx為LGA775,Athlon64、Opteron為Socket754。
快取記憶體(Cache):快取記憶體是介於CPU與主記憶體之間的記憶體,存取速度較快,成本也較高。CPU需要資料時,先到Cache找(cache hit vs. cache miss),找不到再從主記憶體找,若仍然找不到,再從硬碟移至主記憶體。又分為二至三種層次,稱為L1快取(內建於CPU約8~128KB)、L2快取(內建或外部約256KB~4MB)、L3快取(獨立晶片)。
匯流排寬度 • 匯流排(bus)是主機板上面的鍍銅電路。 • 匯流排決定了電腦一次可以同時傳送多少位元,電路愈多,匯流排寬度(bus width) 愈大,傳送速度愈快。 字組大小:字組大小 (word size) 是CPU在固定時間內能夠解譯並執行多少位元,所謂8、16、32或64位元CPU指的就是一次最多可以處理8、16、32或64位元的CPU。
相容性: • 傳統處理器設計方式中,由於暫存器的數量有限,當處理器手頭上仍有工作要處理時,就無法受理其他指令所發出的需求,而是得乖乖排隊在後面等,而因為這個特點,處理器的效能變會因為指令處理流程的影響而受到限制。 • 由於不同的CPU各有唯一的指令集(比較出名的有Intel的MMX、SSE4系列,以及AMD的3DNOW!技術),因此,廠商在推出新的CPU晶片之前,必須考慮相容性 (compatibility),特別是新的晶片能否與舊的晶片具有向下相容性。
3-2-6 機器語言 • 機器語言 (machine language) 是程式與電腦溝通的介面,定義了程式可以使用的指令與編碼方式。 • 機器指令 (machine instruction) 的編碼方式通常包含運算碼 (op-code) 和運算元 (operand) 兩個部分,其中運算碼是這個指令所要進行的運算,運算元是這個指令進行運算的對象。
假設中央處理器有十六個2Bytes暫存器、一個2Bytes程式計數器、一個4Bytes指令暫存器、主記憶體有256個儲存單元(00~FF)假設中央處理器有十六個2Bytes暫存器、一個2Bytes程式計數器、一個4Bytes指令暫存器、主記憶體有256個儲存單元(00~FF) 指令格式
運算元 運算碼 • 11BA (將主記憶體位址BA的資料載入暫存器R1) • 12BB (將主記憶體位址BB的資料載入暫存器R2) • 3312 (將暫存器R1的資料與暫存器R2的資料相加, 再將結果儲存到暫存器R3) • 23B0 (將暫存器R3的資料儲存到主記憶體位址B0) • 10B0 (將主記憶體位址B0的資料載入暫存器R0) • 73FF (若暫存器R3的資料與暫存器R0的資料相同, 就跳到主記憶體位址FF去執行,否則依序執行)
3-2-7 機器循環週期 CPU執行一個指令的過程叫做機器循環週期 (machine cycle),包含下列四個步驟: (指令時間) • 指令擷取(IF) • 指令解碼(ID) (執行時間) • 指令執行(IE) • 結果存回(WB)
3-3CPU的設計架構與技術 3-3-1CISC V.S. RISC • RISC所提供的指令較為精簡,每個指令的執行時間都很短,完成的動作也很單純,在一個時脈週期(clock cycle)內執行完畢。若要做複雜的事情,就要由多個指令來完成。如SUN SPARC、PowerPC、IBM RS/6000 • CISC則提供了豐富的指令,每個指令的執行時間較長,能夠完成的動作也較複雜。如Intel x86、MOT 680x0。
3-3-2 管線(Pipeline) 管路是一種資料路徑的製作技巧,利用指令的重疊來增加指令的生產量(throughput) ,也就是增加電腦在固定時間內所能完成的工作量。 管路是一種資料路徑的製作技巧,利用指令的重疊來增加指令的生產量(throughput) ,也就是增加電腦在固定時間內所能完成的工作量。
以傳統的做法來執行100個指令。假設指令的擷取、解碼、執行與存回,各步驟所需時間為10ns、5ns、8ns、7ns。以傳統的做法來執行100個指令。假設指令的擷取、解碼、執行與存回,各步驟所需時間為10ns、5ns、8ns、7ns。 • 執行總時間為100*(10+5+8+7)=3000ns。
以管線技術來執行100個指令。 由於指令的擷取、解碼、執行與存回,所需時間各為10ns、5ns、8ns、7ns。必須將各步驟所需的時間定義改為最長步驟使用時間10ns,所以完成一個指令所需時間變成10ns*4=40ns。 所需時間為(100-1)*10ns+40ns=1030ns。
3-3-3超純量處理器(Superscalar) Superscalar describes a microprocessor design that makes it possible for more than one instruction at a time to be executed during a single clock cycle. In a superscalar design, the processor or the instruction compiler is able to determine whether an instruction can be carried out independently of other sequential instructions, or whether it has a dependency on another instruction and must be executed in sequence with it. The processor then uses multiple execution units to simultaneously carry out two or more independent instructions at a time. Superscalar design is sometimes called "second generation RISC."
管線(Pipeline):管線的概念類似生產線,簡單來說就是將一個指令的執行週期切割成多個階段,每個階段由不同的電路負責,因此可以不用等待一個指令完全執行完畢才執行下一個指令,可以讓CPU同時執行多個指令(也就是說第一個指令完成第一階段進行第二階段時,第二個指令就可以開始進行第一階段的工作),這樣的設計可以提高各個模組電路的使用率,進而提升程式的執行效率!理論上,一個區分為N個階段的管線可以讓CPU同時處理N個指令!管線(Pipeline):管線的概念類似生產線,簡單來說就是將一個指令的執行週期切割成多個階段,每個階段由不同的電路負責,因此可以不用等待一個指令完全執行完畢才執行下一個指令,可以讓CPU同時執行多個指令(也就是說第一個指令完成第一階段進行第二階段時,第二個指令就可以開始進行第一階段的工作),這樣的設計可以提高各個模組電路的使用率,進而提升程式的執行效率!理論上,一個區分為N個階段的管線可以讓CPU同時處理N個指令! • 超純量(Superscalar):在一個CPU中建立多個執行單元(Execution Unit),各個執行單元可以分別處理不同的指令!(要注意的是每個執行單元可以做管線化設計,因此管線與超純量是不同的概念)
若一個系統將指令區分為6個階段(S1~S6),其中S4需要2個機器週期而其他階段僅需1個機器週期,討論執行2個指令的情況:若一個系統將指令區分為6個階段(S1~S6),其中S4需要2個機器週期而其他階段僅需1個機器週期,討論執行2個指令的情況: (1)管線:9個週期 時間 1 2 3 4 5 6 7 8 9 指令1 S1 S2 S3 S4 S4 S5 S6 指令2 S1 S2 S3 等待 S4 S4 S5 S6 注意第二個指令執行完第3階段後,因為第一個指令的第 4階段尚未完成,因此須等第一個指令完成S4後第二個指 令才能進入S4階段! (2)雙管線超純量:7個週期因為有兩個管線可以分開處理第一個跟第二個指令,因此,二個指令可以同時進行,故只需要7個機械週期!
3-3-3超純量處理器(Superscalar)(續) Superscalar加上pipeline技術
在一個管線計算機(Pipeline Computer)中有三個管(Pipe),其處理某一運算所需時間分別為3、6、4,則全部計算完10個此種運算所需時間為?(82二技管理類四) Sol:依計算公式 Max(3,6,4)*10+(3,6,4中除最大值外的其餘 值之和) =6*10+(3+4) =67
3-3-4 平行處理 • 根據Flynn電腦架構分類
Thinking Machine Corp. CM-2(8K CPUs 1bit) and Data Vault • CRAY T3D(Massively Parallel Processing)