Download presentation
Presentation is loading. Please wait.
1
第三章 電腦系統單元: 中央處理器、主記憶體、匯流排、晶片組
第三章 電腦系統單元: 中央處理器、主記憶體、匯流排、晶片組 本章將介紹電腦硬體的最核心部分,也就是主機板上的元件,包含中央處理器(CPU)、主記憶體(Main memory)、匯流排(Bus)、晶片組(Chipset)。CPU可以說是電腦的心臟,主記憶體是存放程式的地方,匯流排則是連結CPU與主記憶體的橋樑,而晶片組則是用來協調匯流排速度的IC。
2
第三章 電腦系統單元: 中央處理器、主記憶體、匯流排、晶片組
第三章 電腦系統單元: 中央處理器、主記憶體、匯流排、晶片組 回顧電腦硬體的5大單元(如下圖),其中核心部分(系統單元)(主機板及主機板上的各類IC插槽)就是中央處理器與主記憶體,而連結這兩者的橋樑是匯流排,在本章中,我們將詳細說明此三項硬體的相關技術,除此之外,我們還將介紹現代電腦常見的設計技術。
3
第三章 電腦系統單元: 中央處理器、主記憶體、匯流排、晶片組
第三章 電腦系統單元: 中央處理器、主記憶體、匯流排、晶片組 中央處理器是電腦執行運算的單元,當資料由輸入單元輸入後,主記憶體可用來暫時存放運算時所需要的資料,而當中央處理器運算完畢之後,也會先暫時將運算結果存放在主記憶體中,然後再輸出到輸出單元。由於主記憶體會因失去電源而喪失資料,因此還需要儲存裝置(次要記憶體)來保存資料。 舉例來說,有一個計算成績的程式 使用者透過鍵盤(輸入單元)輸入資料後 這些資料將會存放到主記憶體中 接著透過中央處理器裡面的算術邏輯單元(ALU)計算平均成績, 再將計算結果存回到主記憶體中,最後可以透過印表機(輸出單元)將資訊印出, 最後也可以存放到硬碟(次要記憶體)中,以便保存下來。這整個過程中, 這整個過程中,中央處理器裡面的控制單元(CU)則是負責協調其他各單元的運作,以完成程式的運作。 事實上,這個計算成績的程式原本應該存放在次要記憶體,而使用者可以在作業系統環境中,透過鍵盤或滑鼠要求執行該程式,然後程式將被載入到主記憶體中,之後才能夠被執行 所有要被執行的程式都必須先被載入到主記憶體中,才能夠被執行,因為CPU只能夠直接存取到主記憶體的資料
4
第三章 電腦系統單元: 中央處理器、主記憶體、匯流排、晶片組
第三章 電腦系統單元: 中央處理器、主記憶體、匯流排、晶片組 主機板又稱母板(motherboard) 是電腦主機內部的一片由玻璃纖維製成的板子 上有許多電路與多種插槽,例如:CPU插槽、主記憶體插槽、介面卡插槽等等。 所有的電腦組件都必須直接或間接地連結到主機板,並根據主機板的設計使電腦正常運作。 拆開機殼後就可以看到主機板 主機板上有各式插槽
5
大綱 3.1 中央處理器(CPU) 3.2 主記憶體(Main Memory) 3.3 電腦的速度表示方法
3.2.1 動態隨機存取記憶體(DRAM) 3.2.2 靜態隨機存取記憶體(SRAM) 3.2.3 唯讀記憶體(ROM) 3.3 電腦的速度表示方法 3.4 匯流排(Bus) 與晶片組(Chipset) 3.4.1 系統匯流排 3.4.2 I/O匯流排 3.4.3 晶片組(Chipset)
6
大綱 3.5 程式的執行流程 3.6 電腦結構的最新設計 3.7 重點回顧 本章習題
3.5 程式的執行流程 3.6 電腦結構的最新設計 3.6.1 階層式記憶體(Hierarchical Memory) 3.6.2 管線(pipelining) 3.6.3 超純量處理器(Superscalar Processor) 3.6.4 平行處理(Parallel Processing) 3.6.5 RISC與CISC 3.7 重點回顧 本章習題
7
3.1 中央處理器(CPU) 中央處理器 CPU(Central Processing Unit)
處理器(Processor)或微處理器(MicroProcessor) 電腦最重要的一個元件 其功能有如人類的大腦,主要負責算術邏輯運算及執行程式。
8
3.1.1 CPU的組織單元 CPU是由控制單元、算術邏輯單元、及暫存器所組成(如下圖),本節中,我們將分別介紹這三個CPU內部單元所負責的工作以及使用的技術。 中央處理器(左半部為CPU的組織元件)、記憶體與匯流排
9
3.1.1 CPU的組織單元 控制與狀態暫存器 使用者可見暫存器 讀寫 無法被使用者(程式設計人員)更改其內容,它的內容是由系統所設定。
暫存器(Register) 記憶體(Memory)其實分為很多種,分布在電腦的各個部分。而在CPU中的記憶體為暫存器(Register)。 暫存器可以用來存放將要進行運算的資料或運算完畢的資料。在ALU要執行運算時(擷取並解碼指令後),ALU將只針對暫存器內的資料進行運算,並且將結果存放在暫存器中。 暫存器的種類也有很多,我們可以依照特性及功能來加以分類如表3-1、3-2所列。 控制與狀態暫存器 使用者可見暫存器 讀寫 無法被使用者(程式設計人員)更改其內容,它的內容是由系統所設定。 可以由使用者(程式設計人員)依照需要來設定內容,以便完成某些程式功能。 功能 此類暫存器的功能通常是提供控制程式及記錄程式執行狀態之用。 用來暫時存放特定資料,或無特定用途。 暫存器依特性分類表
10
暫存器功能名稱 分類 功能 指令暫存器 (instruction register) 控制與狀態暫存器 存放最近從記憶體取出的指令。通常不是目前正在執行的指令就是下一次可能被執行的指令。 程式計數暫存器 (program counter;PC) 存放下一個準備要被執行的指令在記憶體中的位址。 ALU緩衝暫存器 (ALU buffer register) 暫時存放ALU的運算結果。 記憶體緩衝暫存器 (memory buffer register) 暫時存放由記憶體讀出的資料,或CPU準備把資料寫入記憶體之前也會先將資料暫存於此處。 程式狀態字組 (program status word;PSW) 存放程式的狀態資訊,通常字組中的每一個位元都有其特別功能(有些可能保留不用),例如正負符號(Sign)、溢位(Overflow)、遮罩位元(Mask bit)、保護鑰匙(Protected key)、中斷代碼(Interrupt code)、中斷有效/失效控制(Interrupt enable/disable)、使用者模式/監督模式(user mode/supervisor mode)等等。 中斷向量暫存器 (interrupt vector register) 使用者可見暫存器(讀) 記錄系統的中斷向量。 條件碼暫存器 (condition code register) 用來存放指令的執行狀態,該狀態將由CPU負責寫入,但程式設計師仍可讀取暫存器內容。 暫存器依功能分類表
11
暫存器功能名稱 分類 功能 資料暫存器 (data register) 使用者可見暫存器 用來存放資料的暫存器。 記憶體位址暫存器 (memory address register) 存放準備要存取的主記憶體位址。 位址暫存器 (address register) 也是用來存放記憶體位址,但通常用於某個連續記憶體空間的起始位址,例如:做為記錄堆疊頂端的指標暫存器(stack pointer register)、做為記錄程式或資料在記憶體起始位址的基底暫存器(base register)、做為記錄陣列索引的暫存器(index register)。 通用暫存器 (general purpose register) 沒有特定用途的暫存器,可以用來存放資料、指令或位址,程式設計師可以善用這些暫存器,加快程式執行的速度,多數編譯器亦充分利用此類暫存器,對高階語言程式進行最佳化。因此,此類暫存器數量越多,CPU的執行效率越高,但成本也就越高(記憶體速度越快者,價格越貴,而暫存器是最快速的記憶體)。 暫存器依功能分類表(續)
12
3.1.1 CPU的組織單元 控制單元(CU) 控制單元(Control Unit;簡稱CU)的功能是控制流程及協調輸入、輸出、記憶、算術邏輯等4大單元的運作 它可以讀取指令、解釋指令、產生控制訊號控制算術邏輯單元及暫存器來完成指令所代表的工作。 當指令進入CPU之後,控制元件就會先進行指令解碼(Decode),並按照指令種類執行對應的微程式,發出不同的訊號完成該指令所需要完成的各項功能,最後執行邏輯電路以便取得下一個指令。 控制單元通常包含 記錄指令運作順序的微程式(microprogram) 取得下一指令的邏輯電路 驅動元件的解碼器(decoder) 眾多選擇器(multiplexer)。
13
3.1.1 CPU的組織單元 控制單元的製作方式分為兩種,兩種製作方式各有所長,目前大多數的控制單元使用的是微程式控制技術。
而控制單元的製作方式分為兩種: 硬體線路控制(hardwired control) 微程式控制(microprogrammed control) 硬體線路控制 微程式控制 製作原理 將每個指令透過有限狀態自動機加以設計,然後再用邏輯電路來實作。每一個指令將會有一組相對應的邏輯電路。 每個指令加以分解為許多步驟,並使用微指令來描述這些步驟的動作,每一個指令實際上將會對應到一組微程式。 優點 執行速度快 指令數量或內容可改變(只要重新設計微程式即可,不需要更改邏輯電路)。 缺點 指令集被固定不可改變 執行速度較慢
14
3.1.1 CPU的組織單元 算術邏輯單元(ALU) 算術邏輯單元(Arithmetic and Logic Unit;簡稱ALU),是執行程式中各類運算的實體單位,這些運算則可以分為兩大類:算術運算與邏輯運算。 算術運算包含加、減、乘、除等等的數值運算 邏輯運算則包含AND、OR、NOT、Exclusive OR、Shift(位元平移)、Rotate(位元旋轉)等的邏輯運算。 其中AND、OR、NOT是三種基本的邏輯運算子(operator),這三種邏輯運算可以組合出所有的邏輯運算。 在第二章中,我們曾介紹單一位元的AND、OR、NOT、XOR邏輯運算,不同種類的CPU提供的指令也不相同 所有的CPU都會提供AND、OR、NOT等運算,但對運算元位元數的規定則不一定相同(與暫存器長度有關) 大多數的CPU都會提供1、8、16、32、64位元的AND、OR、NOT運算。以下我們透過範例來說明多位元的邏輯運算。
15
3.1.1 CPU的組織單元 AND邏輯運算只有在兩個運算元同時為真(true)時,結果才會為真。其真值表如下: AND邏輯運算子
真值表: A AND B 真值表: A B A B A AND B False True A B A B 1 【註】:在二進制系統中,常常使用1來代表真(true),0代表假(false)。
16
3.1.1 CPU的組織單元 OR邏輯運算子 OR邏輯運算只有在兩個運算元同時為假(false)時,結果才會為假。其真值表如下:
真值表: A OR B 真值表: A + B A B A OR B False True A B A+ B 1
17
3.1.1 CPU的組織單元 【遮罩】: 遮罩(mask)代表透過某些運算,使得某些位元保留,而其他位元(稱之為遮罩位元)統一為某種特定遮罩格式,意即遮罩有過濾的意涵。AND與OR運算都可以當作遮罩運算,例如,我們希望將某個位元組 的左半邊4個位元都變為0(右半邊的位元保留),則可以透過 AND 來加以完成,其結果為 。如果我們希望將某個位元組 的左半邊4個位元都變為1(右半邊的位元保留),則可以透過 OR 來完成,其結果為 。 NOT邏輯運算子 NOT邏輯運算只有一個運算元,並且會將運算元反相(inverse)做為輸出結果。也就是當輸入為真(true),結果將為假(false),當輸入為假(false),則結果為真(true)。其真值表如下所列: A NOT A False True A ~A 1 真值表:NOT A 真值表:~ A
18
3.1.1 CPU的組織單元 Exclusive OR(XOR)邏輯運算子
Exclusive OR(XOR)也是常見的運算,大多數的CPU也都提供了XOR運算的指令,原因是因為設計XOR的邏輯電路非常簡單且不會耗費過多的資源,並且XOR可以變化出許多樣的指令效果。 XOR邏輯運算的運算元有兩個,只有在兩個來源運算元的值不同時,結果才會為真,因此稱之為Exclusive OR(互斥或)。其真值表如下所列: 真值表: A XOR B A B A XOR B False True 真值表: A ⊕ B A B A ⊕ B 1
19
3.1.1 CPU的組織單元 Shift與Rotate運算
邏輯表示符號: AND、OR、NOT、XOR的表示符號通常如下 Shift與Rotate運算 Shift(位元平移)與Rotate(位元旋轉)運算必須考慮暫存器長度,同時又分為向左及向右兩類Shift與Rotate。 Shift移出的位元將被丟棄,而由0補上空位。因此,向左位移n個位元,代表原本的值*2n Rotate移出的位元則會進入另一端,構成循環式移動。
20
3.1.1 CPU的組織單元 範例(向左shift 2位元): 範例(向右rotate3位元):
21
3.1.2 CPU的種類 由不同公司開發的CPU種類非常多
最有名的當然是Intel公司的x86系列、Pentium(奔騰)系列、Core 2系列、Celeron、Xeon等 AMD公司的K6、Athlon XP/64/64 X2/64 FX、Duron VIA公司的Cyrix III Compaq公司的Alpha(21x64系列) Sun公司的SPARC Motorola公司的680x0 Apple/Motorola/IBM公司合作開發 的PowerPC等等 各家廠牌的CPU
22
3.1.2 CPU的種類 主機板通常不會內附CPU,必須另外購買CPU然後插在主機板的CPU插槽,隨著電腦系統及主機板的種類不同,所使用的CPU種類也不一樣,例如個人電腦(IBM-PC)常採用Intel公司的Pentium系列、Celeron或AMD公司及VIA公司所開發的相容CPU。但早期Mac電腦則必須採用PowerPC做為中央處理器(表3-4為各類系統適用的CPU)。 系統 電腦 使用的CPU 生產公司及CPU晶片 386/486/Pentium systems IBM PC x86系列 Intel 8086、8088、80286、80386、80486、Pentium(奔騰)、Pentium Pro、Pentium II、Pentium III、Pentium 4、Pentium D/EE、Celeron、Xeon… AMD K5、K6、K6III、Athlon、Athlon XP、Athlon 64、Duron… VIA Cyrix III(C3)… 多核心 systems 多核心IBM PC 多核心iMac x86-64系列 Pentium D/EE雙核心、Core 2 Duo、Core 2 Extreme、Core 2 Quad Athlon 64 X2、Phenom
23
系統 電腦 使用的CPU 生產公司及CPU晶片 Motorola systems Atari … Amiga … Mac … 680x0系列 Motorola 68030、68040、68060… PowerPC systems iBook G4 PowerPC系列 Apple/ Motorola/ IBM合作 PowerPC Sparc systems Ultra … hSparc … IPX … SS5 … Sparc系列 Sun Sparc Alpha systems AS400 … AS1000 … Cabriolet … Jensen … UDB … AlphaServer … 21x64系列 Compaq 21064、21064A、21066、21066A、21164、21164A、21264、21264A、21264DP… Other CPU systems RM9000 … ELKS … S390 … Crusoe … Mips Intel x86 IBM Crusoe Intel Transmeta Intel 8088/286 ELKS
24
3.1.3 CPU及主機板規格 CPU、主記憶體與主機板關係密切,對於某一個特定的主機板而言,它只能插上某些規格的CPU與主記憶體。在本小節中,我們先釐清一些關於CPU及主機板的規格。 主機板規格範例(GA-8KNXP):【圖片與規格取自技嘉網站】 規格請見課本 技嘉的GA-965P-DQ6主機板
25
3.1.3 CPU及主機板規格 CPU的工作頻率與內頻: 主機板記載之外頻、倍頻:
一般俗稱的CPU『工作頻率』,事實上指的是CPU內部執行運算的工作頻率,通常也稱之為『內頻』( Internal Frequency ),例如Pentium G的3.06G就是『工作頻率』。 主機板記載之外頻、倍頻: 相對於CPU內頻,另外一個主機板上的名詞『外頻』 ( External Frequency )則是代表CPU之外的外部設備工作頻率 這些外部設備如晶片組、記憶體、第二層快取記憶體( L2 Cache )等等。CPU必須由這些外部設備取得資料,也必須將資料存回到這些外部設備,而外頻則可以說是這些外部設備傳輸資料到CPU的速率,由於外部設備是透過匯流排連結到CPU,因此外頻也就是匯流排速率(Bus speed),單位一般以MHz來表示。 外頻是由主機板的時脈產生器所提供,因此在主機板與CPU的規格書內都會註明所支援的外頻是多少 而一般在主機板的規格書中,以FSB(Front Side Bus;前端匯流排)來代表外頻 FSB的演變從早期的66/100/133/150/200/266MHz,乃至於目前的333/400/533/800/1066/1333MHz。 外頻與內頻的倍數關係稱之為『倍頻』,如下公式: 『CPU工作頻率 = 內頻 = 外頻 × 倍頻』
26
3.1.3 CPU及主機板規格 以往在486時代之前,CPU的內頻與外頻是一樣的,之後CPU的運算速率不斷的提昇,但晶片組、記憶體等外部設備的效能卻無法跟上腳步,因此,為了不讓這些外部設備拖累CPU的速度,故而開始採用倍頻技術來解決此一問題。 倍頻通常以0.5的倍率成長,也就是1,1.5,2,2.5,….等等 例如1.6GHz的CPU可以使用100MHz(外頻)*16(倍頻),也可以使用133MHz(外頻)*12(倍頻) 主機板之所以要支援更高的外頻,通常主要的考量並不是CPU,而是其他元件的效能已經獲得提昇 例如:目前最流行的主記憶體已經由過去66/100/133/150 MHz 的SDRAM提升為333/400/533/667/800MHz的DDR II SDRAM 因此,外頻主要是隨著主記憶體的速度而改變規格,因為CPU的內頻可以透過倍頻方式取得。 調整主機板上的外頻與倍頻方式,在過去,通常必須調整主機板上的開關(jumper),但目前則大多可以在BIOS中直接設定。
27
3.1.3 CPU及主機板規格 CPU封裝: 封裝就是將晶片給包裝起來,所有的晶片都需要經過封裝的程序建立接腳與外界溝通,並且保護其內部元件。 CPU也是一種晶片,因此也需要封裝,而封裝方式也有許多種,例如OPGA、mPGA、CPGA、FC-PGA、FC-PGA、OOI、PPGA、S.E.C.C、S.E.C.C.2、S.E.P. 封裝等等 半導體產業是一個非常龐大且精密分工的產業,一個VLSI(超大型積體電路)的製作流程被分為許多步驟,而封裝也是其中的一個步驟,並且是非常接近完成的步驟(其後仍有測試與驗證步驟),國內也有不少公司專門提供封裝服務。 CPU Pentium II,採用SECC封裝 CPU (AMD Athlon 64)的正反面,採用PGA封裝
28
3.1.3 CPU及主機板規格 主機板之CPU插槽腳座:
主機板上的CPU插槽腳座恰好對應於CPU的接腳,由於封裝決定了CPU的接腳數,所以不同腳座必須使用不同的插槽,其接腳數也都不同。 常見的CPU插槽腳座有Socket 7、Socket 379、Slot 1、Slot 2、Slot A、Socket A、Socket 423、Socket 478、Socket 754、Socket 775/T、Socket 939、Socket 940。 Slot 1、Slot 2、Slot A的CPU為卡夾式(使用S.E.C.C.封裝的Pentium II、III、Xeon) 大部分Celeron與後來Pentium III則為Socket 370 至於Pentium 4的插槽腳座則是Socket 423與Socket 478 而多核心Core 2系列的插槽腳座則是Socket 775(又稱為Socket T) 早期Athlon的插槽腳座為Slot A 後來的Athlon與Duron插槽腳座都是Socket A Athlon 64/Athlon 64 X2/Athlon 64 FX採用Socket 754、Socket 939、Socket 940。
29
3.1.3 CPU及主機板規格 主機板上的CPU插槽(Slot 1)
插在主機板上面的CPU(slot 1與 Intel Pentium II)
30
3.1.3 CPU及主機板規格 主機板上的CPU插槽(Socket 775) 主機板上的CPU插槽(Socket 940)
31
3.1.3 CPU及主機板規格 插在主機板上面的CPU (Socket A與AMD Athlon)
32
3.1.3 CPU及主機板規格 主機板之DRAM插槽: 主機板規格書中也會記載該主機板所使用的主記憶體類型
在早期這些插槽通常是30 pin的FPM RAM與72 pin的EDO RAM 後來則改為168 pin的SDRAM 至於目前最流行的則是184 pin的DDR SDRAM或240 pin的DDR II SDRAM。(詳見3.2.1節)
33
3.2 主記憶體(Main Memory) 除了在CPU內的暫存器之外,電腦的記憶體可以分為主要記憶體(main memory)與次要記憶體(secondary memory);通常分別由半導體與磁性元件構成;最常見的例子就是RAM和硬碟(HardDisk)。而本節所要介紹記憶體的則是屬於主要記憶體的部分(次要記憶體則於資料的儲存裝置一章中再行介紹)。 主要記憶體簡稱主記憶體(又稱為內部記憶體),目前以半導體元件製成,特性為存取速度快、成本高。 主記憶體依照存取特性又可以分為隨機存取記憶體(Random Access Memory;簡稱RAM)及唯讀記憶體(Read Only Memory;簡稱ROM)。 RAM的成本較低,但是無法於電力消失時保存資料,故為揮發性記憶體的一種。 ROM成本較高,但卻可以在無電力的狀況下保存資料,屬於非揮發性記憶體的一種 傳統的ROM只能寫入資料一次,因此通常只會把啟動電腦所需要的小程式儲存在ROM裡面,例如BIOS就是使用ROM做為儲存處的常見應用。
34
3.2 主記憶體(Main Memory) RAM ROM 揮發性 非揮發性 讀取 可讀取資料 寫入 可寫入資料
傳統的ROM只能寫入資料一次。 EPROM、EEPOM等可程式化的ROM可透過特殊方式重新寫入資料。 容量 較大 非常小 擴充 通常可擴充至數百MB以上 無法擴充 功能 儲存電腦運作中的各類一般程式與資料。 儲存固定不變的程式,例如開機程式。 RAM與ROM比較表 RAM也分為動態隨機存取記憶體(DRAM)與靜態隨機存取記憶體(SRAM)兩種。 DRAM也就是一般購買電腦時常聽到的RAM SRAM由於速度較快,一般是用在需要快速記憶體的場合,例如快取記憶體(Cache),其特性如表3-7所列。
35
3.2 主記憶體(Main Memory) SRAM DRAM 揮發性 揮發性(無法在電源消失時保存資料) 充電 不需要 需要 成本及價格
高 低 容量 較小 較大 速度 較快 較慢 SRAM與DRAM比較表 【註】: 主要記憶體包含RAM(DRAM、SRAM)與ROM,但一般我們所謂的主記憶體若未特別提及,則通常指的是RAM,而且是DRAM。
36
3.2.1 動態隨機存取記憶體(DRAM) DRAM的全名為Dynamic Random Access Memory,中文可譯為『動態隨機存取記憶體』,通常充當電腦系統的主記憶體元件(也就是一般俗稱的RAM)。 使用DRAM作為主記憶體時,將可以暫時儲存指令及資料,以供CPU執行程式之用。事實上,所有準備要執行的程式都必須存放在主記憶體中,CPU才能夠執行程式。 DRAM無法在電腦的電源消失時保持資料,因此,資料若在電源消失前,尚未從主記憶體搬移到磁碟中,在電源消失後(例如關機或重新開機),將會遺失這些資料。 DRAM從過去到現在,隨著技術的進步,也出現了許多種類,如:Conventional RAM、FPM DRAM、EDO RAM、Burst EDO RAM、SDRAM、DRDRAM、DDR SDRAM等等。
37
3.2.1 動態隨機存取記憶體(DRAM) Conventional DRAM
Conventional DRAM是非常早期使用的DRAM,運作原理如下: 整個記憶體被切割成陣列(類似大表格),每一個陣列元素(小格)的位元數是匯流排一次可以傳輸的最大值,而此陣列(大表格)可以由列(Row)與行(Column)來標記每個陣列元素(小格)(即某記憶體區塊),以示區別,如圖所示。 記憶體的陣列配置方式
38
3.2.1 動態隨機存取記憶體(DRAM) 在讀取記憶體區塊的內容前,首先要送出該區塊的位址(透過列與行來標示)Conventional DRAM的做法是,首先送出區塊的列位址訊號,稱之為RAS訊號(row address select訊號),然後再送出區塊的行位址訊號,稱之為CAS訊號(column address select訊號),這樣才能選取到所需要的記憶體區塊。雖然這種記憶體存取方式簡單,但Conventional DRAM未能在存取速度上有大幅度改進,因此,Conventional DRAM已經被淘汰了。 值得注意的是,在圖3-18中位址匯流排與資料匯流排將連到CPU的位址接腳與資料接腳,記憶體的大小受到位址匯流排與資料匯流排的影響,由於位址匯流排經過解碼器解碼(以2的次方增長),因此記憶體大小的計算公式如下: 記憶體大小 = 2位址匯流排寬度 × 字組寬度 = 2位址匯流排寬度 × 資料匯流排寬度 舉例來說,有16位元的位址匯流排與16位元的資料匯流排(字組為16位元),則記憶體大小為216×16bits,也就是64K個Word或128KBytes。 【註】: 有些書籍,將RAS與CAS的原文稱為row address Strobe與column address Strobe。
39
3.2.1 動態隨機存取記憶體(DRAM) FPM DRAM (Fast Page Mode DRAM)
FPM RAM在486/Pentium時代,一度是個人電腦最常見的DRAM。 內部以分頁(page)為單位,供CPU存取資料,每個分頁從512位元組到數K位元組,具有快速切換分頁的效果。 一般為30-Pin或72-Pin記憶體模組。在屬於它的年代,由於全名過長且無其他競爭對手,因此,許多人將FPM省略,直接簡稱為DRAM。 FPM之所以稱為Fast Page,是因為它以更快的速度存取位於同一列的資料(也就是同一分頁),因此,FRM改善了更早期的記憶體存取速度。它的存取速度約為70ns~60ns(ns為10-9秒)。
40
3.2.1 動態隨機存取記憶體(DRAM) EDO RAM (Extended Data Out RAM)
在1995年,一項新的EDO技術取代了FPM RAM,並且EDO RAM在Pentium等級的電腦中,成為必備的主記憶體元件。 EDO與FPM技術其實大同小異,主要的差別在於 (1)EDO不採用分頁方式,而是將資料放在連續的記憶體位置內。 (2)EDO延長了資料輸出的時間,使得下一次讀取記憶體的動作可以在這一次資料傳送尚未完成時就開始 (3)記憶體控制器能夠在下達指令的過程中省略數個步驟,以便節省時間。 實際上,EDO技術只比FPM技術快了15%~20%左右,差距並不大,不過由於EDO RAM的市場需求較大,因此平均售價得以降低,而取代了FPM的市場。不過,由於EDO RAM無法支援高速的系統時脈(超過66MHz),因此後來又被SDRAM取代。 EDO RAM
41
3.2.1 動態隨機存取記憶體(DRAM) 【BEDO RAM】
BEDO RAM 是Burst EDO RAM的簡稱,它只是將原有的EDO RAM加以改良,在EDO RAM中加入管線技術,使得記憶體的存取時間更快,Burst EDO RAM可以適用於更高速的系統時脈,在效能上,和後來出現的第一代SDRAM差不多,不過由於價格較高,在主機板支援不夠普遍的環境下,被SDRAM擊敗。
42
3.2.1 動態隨機存取記憶體(DRAM) SDRAM (Synchronous DRAM)
在1996年底,出現了一種新的DRAM技術-『Synchronous DRAM;同步動態存取記憶體;簡稱SDRAM』 為了因應更高時脈的高效能CPU,主記憶體勢必須要改變EDO RAM的非同步特性。SDRAM最重要的變化就是『同步』(早期的DRAM為非同步),『同步』代表記憶體的時脈與電腦時脈相同,使得記憶體控制器能夠掌握準確的時鐘週期,如此一來,CPU就不需要延後下一次的資料存取。 SDRAM同時透過Interleaving與Bursting技術,加快記憶的讀取速度,並且SDRAM擁有多種不同的速度,以便和系統時鐘同步。 舉例來說,市面上曾經出現的SDRAM有PC66/100/133/150等等,恰好搭配主機板的66/100/133/150等外頻,而外頻又可以透過倍頻方式獲得CPU所需的內部頻率,因此,整個系統的效能得以完全發揮。
43
3.2.1 動態隨機存取記憶體(DRAM) SDRAM的資料傳輸寬度為64位元,一般採用DIMM記憶體模組,且分為buffered與unbuffered兩種,工作電壓有3.3及5伏特等規格。但市面上常見的SDRAM則通常採用unbuffered及3.3伏特電壓的規格,封裝則採用TSOP。 值得注意的是,SDRAM和SRAM完全不同,SDRAM仍舊屬於DRAM的架構,因此必須充電,充電則將產生時間延遲的問題。 SDRAM 【註】:廣義的SDRAM專指Synchronous DRAM,也就是包含PC XXX SDRAM及DDR SDRAM,但一般中古市場上所稱之SDRAM產品,通常是狹義的SDRAM,也就是PC XXX SDRAM。
44
3.2.1 動態隨機存取記憶體(DRAM) 【記憶體模組設計】
個人電腦的DRAM記憶體不是將一顆顆IC晶片直接插到電腦主機板上,為了擴充性考量,目前的DRAM記憶體都採用記憶體模組概念來設計。 記憶體模組設計是將記憶體晶片設計整合在統一規格的印刷電路板上(Printed Circuit Board),透過公認的存取介面,組成相容的記憶體模組,如此一來,主機板廠商只要預留記憶體模組插槽及相關電路,就可以隨時擴充電腦系統的記憶體容量。 記憶體模組包含幾個主要元件 (1)記憶體晶片 (2)控制晶片 (3)IC電路板 (4)金手指傳輸介面等。 而常見的記憶體模組則有:SIMM、DIMM、SO-DIMM、RIMM(Rambus Module)、C-RIMM(Continuity RIMM)、SO-RIMM、DDR DIMM、等等。並且可分為SIMM、DIMM、RIMM三大類。
45
3.2.1 動態隨機存取記憶體(DRAM) 【記憶體模組設計】(續)
SIMM (single in-line memory module;單面針腳記憶體模組): SIMM的封裝方式有兩種,30pin與72pin,30pin通常是在486以前的電腦使用,早期的FPM RAM、EDO RAM都是採用30 pin SIMM記憶體模組,SIMM對外傳輸單位則是8位元,由於使用在32位元的系統,因此資料傳輸也以32位元為單位。插入30pin記憶體模組時,必須4支一組插入(32位元=4*8位元)。而72pin對外傳輸單位則是32位元,而Pentium系統為64位元,所以需要以2隻一組方式插入(64位元=2*32位元)。 30 pin SIMM上面的記憶體晶片為單面晶片結構,而72 pin SIMM則是單面或雙面晶片的產品都曾出現過,一般來說,每一隻SIMM DRAM上面可能會有8個或9個(或其倍數)記憶體晶片,而9個中的其中一個晶片的功用則是偵錯。 DIMM (dual in-line memory module;雙面針腳記憶體模組): DIMM與主機板的接觸點有168 pin,對外傳輸單位則是64位元,因此在64位元的Pentium系統中,只需要一支就可以獨立運作。最常見到的應用就是SDRAM。除了168 pin的DIMM之外,後來又發展出184 pin的DDR DIMM,目前應用於DDR SDRAM,是目前個人電腦的主流。 RIMM(Rambus in-line memory module;Rambus專用記憶體模組): 這是針對Rambus DRAM而特殊設計的規格,又稱為Rambus module,與主機板的接觸點也是184 pin。
46
3.2.1 動態隨機存取記憶體(DRAM) DRDRAM (Direct Rambus DRAM)
DRDRAM是Intel與RAMBus公司合作開發的一種記憶體規格,第一代的DRDRAM使用的記憶體模組為16位元 RIMM模組,封裝方式使用的是μBGA。與主機板的接觸點為184 pin,工作頻率可達800MHz。 Direct Rambus與傳統DRAM的結構及介面皆不相同。早期記憶體的資料傳輸寬度大多為64位元,而Direct Rambus卻只有16位元 或許讀者覺得奇怪,如此不是降低了資料傳輸的速度嗎?答案當然是否定的,因為Direct Rambus去除了傳統SDRAM所存在的時間延遲問題,因此使得整體速度更為驚人 它以800MHz的速度透過狹窄的16位元匯流排來傳輸資料(此匯流排稱為Direct Rambus Channel),並在時鐘週期波峰及波谷都可執行作業(稱為double clocked),使得每個DRDRAM模組上的記憶體能夠提供每秒1.6GB的高速頻寬。
47
3.2.1 動態隨機存取記憶體(DRAM) 後來,RAMBus公司又推出了32位元 RIMM模組的DRDRAM,包含
工作頻率為800MHz 的RIMM 3200(頻寬為3.2GB/s) 工作頻率為1066MHz 的RIMM 4200(頻寬為4.2GB/s) 工作頻率為1200MHz的RIMM 4800(頻寬為4.8GB/s) 工作頻率為1600MHz的RIMM 6400(頻寬為6.4GB/s)。 其速度非常之快,同時也支援了雙通道技術,接腳則改為242pin(雙通道技術容後說明)。並且RAMBus公司也正在設計64位元RIMM模組 DRDRAM 與主機板
48
3.2.1 動態隨機存取記憶體(DRAM) 雖然DRDRAM的速度非常快,但仍可能被淘汰,原因大致有下列幾點:
(1)工作時脈過高,因此通常必須搭配散熱片。 (2)DRDRAM的技術門檻較高,因此在記憶體顆粒的良率上,表現並不理想。 (3)DRDRAM採用不同的製程,因此必須使用新的設備製作。 (4)最重要的一點,DRDRAM並非開放的標準,每一家製造DRDRAM的廠商都必須支付RAMBus公司2%權利金。 由於DRDRAM價格較為昂貴,因此,在PC中使用DRDRAM相對來說屬於少數,但DRDRAM確常見於某些電視遊樂器的設計中,主要的原因仍然在於其速度上的優勢。
49
3.2.1 動態隨機存取記憶體(DRAM) DDR SDRAM(又稱DDR RAM)是目前最新的SDRAM
DDR SDRAM (Double Data Rate SDRAM) DDR SDRAM(又稱DDR RAM)是目前最新的SDRAM 它和DRDRAM有很多方面類似,例如它的主機板接觸點也是184 pin(DDRII為240pin),也能夠在時鐘周期的波峰及波谷傳送資料 但不同的是,DDR是開放標準,並且延續SDRAM的設計,採用TSOP封裝,因此相對於DRDRAM,DDR SDRAM更容易獲得製造商的喜愛。 DDR SDRAM是目前個人電腦主記憶體的主流,其規格發展非常快,計有DDR、DDRII、DDRIII三種規格 其中,DDR、DDRII都已有產品問世,而DDRIII暫時僅限於高速繪圖卡使用 到目前為止出現的DDRI SDRAM順序分別是DDR-200(又稱PC1600)、DDR-266(又稱PC2100)、DDR-333(又稱PC2700)、DDR-400(又稱PC3200),DDRII SDRAM的有DDRII-400(又稱PC3200)、DDRII-533(又稱PC4200)、DDRII-667(又稱PC5400)及DDRII-800(又稱PC6400)
50
3.2.1 動態隨機存取記憶體(DRAM) DDR之所以稱為Double Data Rate,原因是因為,它可以達到雙倍資料傳輸速率的緣故
舉例來說,DDR-266與PC133都是在同樣的133MHz頻率下工作,但DDR-266的傳輸速率是266MHz,為PC133的兩倍,這是因為它在一個時鐘週期中,可以傳送兩次資料(分別在波峰及波谷)。 184 Pin的DDR RAM 與主機板
51
3.2.1 動態隨機存取記憶體(DRAM) 各類DRAM比較表-1 DRAM 應用場合 存取速度 模組 接腳 特色 FPM DRAM
主記憶體 低價位顯示記憶體 慢 SIMM 30 Pin 在EDO DRAM出現之前,大多數DRAM, 都是FPM DRAM。 EDO DRAM 比FPM DRAM快約5-20% 72 Pin 取代了FPM DRAM 下一次讀取動作可在這一次資料傳送尚未完成時就開始 PC xxx SDRAM 66/100/133/150 MHz DIMM 168 Pin 取代了EDO RAM 早期Pentium主機板支援的主流記憶體 DRDRAM 電視遊樂器記憶體 資料寬度16/32位元,可達 800/1600 MHz RIMM 184/242Pin 必須由Intel及Rambus授權 DDR SDRAM 目前最快的DDRII-800之內頻為800 MHz、外頻為400MHz DDR DIMM 184/240pin 取代了SDRAM 波峰與波谷都可以傳送資料,所以是SDRAM的兩倍。 是目前的主流並仍在發展中。
52
3.2.1 動態隨機存取記憶體(DRAM) Dual-Channel Memory(雙通道記憶體)
在早期486 PC時代,使用32bit記憶體匯流排,因此如果要使用8bit 的30Pin DRAM,一次就必須插上4隻DRAM。 到了Pentium時代,使用64bit記憶體匯流排,因此如果要使用32bit的72PinDRAM,一次就必須插上2隻DRAM。 這種限制直到168Pin SDRAM的產生之後,就解除了。使用SDRAM或DDR SDRAM,只需要插上一隻就可以運作。 而之前為何必須要同時使用多隻記憶體才能夠讓電腦正常運作? 這是因為考量到資料在記憶體與CPU之間的傳送頻寬必須達到一定目標,因此預先以多通道方式建立在主機板上,必須同時插上多隻記憶體,才能夠填滿每個通道的資料傳送目標。 雖然到了SDRAM及DDR SDRAM之後,只需要插入一隻記憶體,電腦就可以正常運作 但由於CPU的效能提升迅速,光靠記憶體技術本身來提升傳輸頻寬是來不及跟上的,因此,廠商們又將腦筋動到整個系統結構上的調整,透過同時使用多隻記憶體以提升頻寬,這個方法就是雙通道記憶體(Dual-Channel Memory)技術。
53
3.2.1 動態隨機存取記憶體(DRAM) 在雙通道記憶體推出時,當時最快速也最普及的前端匯流排(Front Side Bus;FSB)為FSB 800,傳輸速率理論上最高可達6.4GB/s,但當時最快速的DDR 800 SDRAM價格非常昂貴,尚未大量生產,因此大多數人使用的是DDR 400 SDRAM或DDR 533 SDRAM。 如果使用支援雙通道技術的主機板,您可以採用插上兩隻DDR 400 SDRAM的方式,將頻寬達到6.4GB/s的水準,加快了記憶體與CPU的資料傳送效率。 當然這必須是主機板上的北橋晶片組也支援的狀況下才能成行。 同時,在支援雙通道技術的主機板上,您仍舊可以只插入單一隻DDR SDRAM,電腦仍舊可以運作,只不過速度也就侷限在該DDR SDRAM的速度。 雙通道技術的主導權在於主機板設計廠商 目前DRDRAM與DDRII SDRAM都可以使用雙通道技術 前提是主機板必須提供此功能。
54
3.2.2 靜態隨機存取記憶體(SRAM) SRAM(Static Random Access Memory),中文稱為靜態隨機存取記憶體。名稱中的『靜態』是它與動態隨機存取記憶體(Dynamic RAM)最大的不同。 首先,我們必須了解DRAM維持資料的方式,事實上,DRAM儲存每一個位元都必須使用1個電晶體和1個電容,電晶體由於是半導體,因此可以透過電壓/電流的改變表現位元的0與1,電容是一種儲存電力的電子元件,在IC設計中,電容扮演的腳色是維持電壓的來源,但由於電容會慢慢放電,因此必須充電 DRAM之所以稱之為『動態』,是因為DRAM在實際上運作時,一直在重複著充電、放電的過程。(這也就是之前所提到產生時間延遲的原因)。換句話說,即使電源未曾中斷,DRAM若不經過充電的過程,其中的資料仍將消失。
55
3.2.2 靜態隨機存取記憶體(SRAM) SRAM使用4~6個電晶體來儲存1個位元,而且不需要反覆充電(所以速度較快),因此稱之為『靜態』,代表的就是,只要電源不中斷,SRAM的資料就不會消失。 由於SRAM使用的電晶體較多,因此價格較貴,而且無法製作成大容量的記憶體,因此不符合主記憶體的需求 不過SRAM卻非常適合充當快取記憶體,因為快取記憶體需要更快的傳輸速度,但容量卻不用很大。 Pentium主機板上面的外部快取記憶體(L2 Cache)、Pentium II/III的L2 Cache on die通常採用SRAM。 此外,快取記憶體的觀念也被應用於硬碟中,所以有些附有快取記憶體的硬碟也使用SRAM做為磁碟快取(disk cache)。
56
3.2.2 靜態隨機存取記憶體(SRAM) Maxtox硬碟上面使用 Samsung出廠的SRAM(disk cache)
Pentium III 450的SRAM(L2 Cache on die)
57
3.2.3 唯讀記憶體(ROM) ROM (Read Only Memory;唯讀記憶體)和前兩小節介紹的RAM有著完全不同的特性
不論是DRAM或SRAM都無法在電力消失時保存資料,所以都屬於揮發性記憶體。 ROM可以在無電力的狀況下保存資料。ROM之所以被稱之為『唯讀』,是因為傳統的ROM(最早期的Mask ROM)只能寫入資料一次,爾後就只能夠讀取資料而無法寫入資料。 由於ROM的成本比較高,因此通常只會把啟動電腦所需要的小程式儲存在ROM裡面,例如BIOS就是使用ROM做為記憶體的常見應用。 隨著演進,後來的ROM並非完全無法更新其內的資料,例如:後來出現的EPROM(Erasable Programmable ROM)、EEPROM(Electrically Erasable Programmable ROM)等都可以更新其內的資料。 其中的Programmable,使得此類的ROM稱之為可程式化的ROM,清除ROM裡面原有資料的方式有所不同,例如使用紫外線清除資料以及較高電壓清除資料。雖然這些PROM可以重複寫入資料,但成本仍比一般的RAM高出許多,而且更新資料時,需要特殊的燒錄機,所以對一般電腦設備而言並不十分方便。
58
3.2.3 唯讀記憶體(ROM) 【BIOS與CMOS】:
BIOS是Basic Input/Output System的縮寫,也就是基本輸入輸出系統。BIOS其實是一套程式,儲存在主機板上的ROM裡面,這套程式包含了電腦系統最重要的基本輸入輸出程序、系統開機時的檢查程序等等。當透過它來開機時,它會對系統各項硬體進行測試和初始化,以保證系統能夠正常運作。早期的BIOS功能非常簡單,但現今的BIOS還必須支援隨插即用功能以及負責電源管理。 CMOS是Complementary Metal Oxide Semi-conductor的縮寫,中文可譯為互補金屬氧化物半導體。它其實就是一種半導體(為PMOS與NMOS的組合,故稱之為互補),但目前大多是指由CMOS半導體製作而成的IC。對於個人電腦而言,CMOS指的是主板上一塊可讀寫的晶片,它存放著許多系統的參數,例如系統時脈、系統時間、硬碟型態、軟碟規格等等。開機時,由於需要讀取CMOS資訊,以便設定各個元件的初始狀態,因此它的資料也不可以消失,但事實上使用CMOS製作而成的IC並不能保持資料,因此在系統電源消失時,仍需使用電池來保持電力。 BIOS與CMOS都跟電腦系統的初始化設定有關,因此,一般使用者很難分清楚兩者的差別,事實上,CMOS存放的是系統參數,而BIOS儲存的則是開機的程式,這些程式包含了設定系統參數的功能。或者,我們可以這樣說,透過BIOS的設定程式,可以對於CMOS儲存的參數進行讀取與修改。請勿對兩者產生混淆。
59
3.2.3 唯讀記憶體(ROM) 【韌體】 硬體是電腦的實際元件,軟體是某些資料的排列方式。電腦的運作是在固定不變的硬體之中執行各式各樣的軟體(例如程式),因此,可以完成各種的工作。這好比電視是硬體,而電視節目則是軟體,我們可以在電視中觀看各式各樣的節目,這是因為每次資料線(如Cable線)傳來的資料都不同。然而如果我們將軟體程式寫死在某一個硬體內,使得該硬體不再能夠接受其他具有變化的資料,則我們將之稱為韌體(Firmware),例如BIOS就是一種韌體,因為它雖然是一套軟體程式,但卻被寫死在ROM之內不再更動(或極少更動)。 BIOS設定畫面
60
3.2.3 唯讀記憶體(ROM) 快閃記憶體(Flash Memory)
事實上,目前的BIOS通常是存放在快閃記憶體(Flash Memory),稱之為Flash ROM,快閃記憶體是一種固態,不易揮發,而且可以重複寫入的記憶體。由於目前的電腦都支援隨插即用的特性,因此,BIOS的更新頻率也大為增加,而快閃記憶體在更新資料的過程則比EPROM、EEPROM等方便許多。關於快閃記憶體,我們將在第四章作更深入的說明。
61
3.3 電腦的速度表示方法 常常有人會問『你的電腦有多快?』這個問題
3.3 電腦的速度表示方法 常常有人會問『你的電腦有多快?』這個問題 通常你聽到的答案可能是Pentium GHz之類的答案,其實,這並不確切。 因為一部電腦的速度並非只受到CPU速度的影響,其實包含主記憶體的速度及容量、硬碟的轉速、其他I/O的速度等等都會影響整台電腦的效率 最常見的例子是一部1.7 GHz的筆記型電腦與桌上型電腦,通常桌上型電腦的效能較佳,這最主要的因素則來自硬碟的轉速不同。 就實際面而言,CPU的速度仍常常被拿來當做簡述一部電腦速度的指標,而就上面的例子而言,3.06 GHz究竟指的是什麼呢?這就必須先講解『時脈』。 時脈(timer或clock speed),是類似一種時鐘的裝置,單位通常以『頻率』來表示,它可以表示晶片的執行效率,一般為MHz(百萬赫茲)或GHz(十億赫茲),而『頻率』是『週期』的倒數,所以Hz是Second(秒)的倒數,頻率為1MHz相當於週期為1μs(百萬分之一秒)。 因此工作頻率越高代表速度越快,如Pentium II的工作頻率為數百MHz,而Pentium 4的工作頻率則可以達到1.x~3.x GHz。 上述的CPU為Pentium GHz,代表的是該CPU可以在3.06 GHz的頻率下正常工作(3.06 GHz代表該CPU的工作頻率) 當超過此頻率時,稱之為『CPU超頻』。 Intel除非特別載明該CPU可以超頻,否則將不保證該CPU此時能夠正常運作。
62
3.3 電腦的速度表示方法 目前的主機板都允許插上多種工作頻率的CPU,換句話說,主機板無法完全預知機器運作時,所插入CPU的工作頻率。
3.3 電腦的速度表示方法 目前的主機板都允許插上多種工作頻率的CPU,換句話說,主機板無法完全預知機器運作時,所插入CPU的工作頻率。 因此,在主機板上面會必須透過一個稱之為時脈產生器(clock generator)的裝置用來產生時脈,供給CPU、晶片組,做為運作時的速度參考。 以機器週期來說,早期的CPU完成一個指令必須使用一個或多個機器週期,而目前所流行的機器則透過先進的技術,可以於一個機器週期內完成一個或多個指令。 除了使用CPU的工作頻率來描述一台電腦的速度之外,也可以使用MIPS、MFLOPS、TPS等來描述一台電腦的速度(或稱之為電腦的產能則更恰當) MIPS(Million Instructions Per Second)代表一秒鐘可以完成多少百萬個指令 MFLOPS(Million Floating Operations Per Second)代表一秒鐘可以完成多少百萬個浮點運算 TPS(Transactions Per Second)代表一秒鐘可以完成多少個交易。 這三種表示法,當然都是值越大,代表電腦的效能越好,但這三種表示法卻分別適用於不同的場合,通常MIPS適用於大型主機、工作站、個人電腦;MFLOPS則適用於大量浮點運算的機器(例如:超級電腦);而TPS則適用於商業交易的特殊功能機器上。
63
3.3 電腦的速度表示方法 【時脈的迷思】 傳統的CPU效能比較可以只比較時脈,但現今的CPU效能比較已經不能單單以時脈做為單一指標,同時脈的Intel Pentium 4效能明顯不及同時脈的AMD Athlon XP。例如:一顆Pentium 4 2 GHz與實際時脈1.6 GHz的Athlon XP 一樣快(這與實際執行的軟體種類有關)。 對AMD的CPU而言,AMD在Athlon XP系列中,試圖轉移使用者對於時脈的迷思,因為在相同時脈下,AMD Athlon XP CPU可以做比Athlon CPU更多的事。為此,AMD設計了一種新的評比方式,它以傳統Athlon要達到Athlon XP所需的時脈來命名,例如Athlon XP 1800+的時脈其實是1.53GHz,但傳統Athlon則必須在時脈1.8GHz下才能達到同樣的效能,因而命名為Athlon XP 1800+。也有些人以Intel Pentium 4的時脈來做說明,例如Athlon XP 2000+代表的就是效能比Pentium 4 2G還要好一點,其中的2000對應的就是Intel CPU的2G時脈,而「+」則是代表還要好一點(有時候您也會看到「-」號,則代表差一點)。 在過去,大家還不了解AMD的命名策略時,有些不肖廠商(或無知廠商)會以AMD Athlon XP上標示的數值當作時脈來販賣,以誤導消費者。事實上,Athlon XP 2000+的工作時脈並非2GHz,而是1.6GHz,但效能卻比2GHz的Pentium 4還要好一點。 由於多核心PC時代的來臨,代表著Intel也已經認知到追求CPU的高時脈並非提升電腦效率的唯一途徑(實際上也不可能無限制的提升CPU時脈,因為會產生散熱等問題),故未來MIPS也可能是評估PC效能常見的計算單位。
64
3.4 匯流排(Bus) 與晶片組(Chipset)
匯流排又可以分為內部匯流排與外部匯流排兩類 內部匯流排的功能是CPU內部元件(例如算術邏輯單元、控制單元、暫存器等等)的連結 外部匯流排的功能則是連結CPU與主記憶體、I/O元件。 其中外部匯流排又可以分為CPU-Memory匯流排(亦稱為Memory Bus或系統匯流排)與I/O匯流排(I/O Bus)兩種。前者傳輸速率較快,後者則遷就於I/O裝置,因此傳輸速率較慢。但為了降低成本,有些電腦的CPU-Memory匯流排與I/O匯流排是同一條。 匯流排的分類
65
3.4 匯流排(Bus) 與晶片組(Chipset)
所謂的匯流排(Bus)結構是一種資料傳輸線路,我們可以將之想像為一台限載一人的電梯,理論上每個在該大樓工作的人,都可以透過該電梯的各個樓層出入口乘坐此部電梯(只要該電梯內沒有人),到達想要去的地方,達到共享的目的。在匯流排的設計也是一樣,它透過不同的介面卡插槽或接點,讓多個設備共用相同的傳輸管道,在匯流排的每一個端點都可以在某個時間內佔據匯流排以便傳輸資料,換句話說,當有其他裝置正在使用匯流排時,其他匯流排就必須等待。下圖是I/O匯流排常見的示意圖。
66
3.4.1 系統匯流排 系統匯流排的用途是傳送主記憶體的資料,因此又稱為記憶體匯流排,而系統匯流排的傳輸速率也就是前面提及的FSB(Front Side Bus)速率。 事實上,CPU在存取主記憶體資料時,必須透過位址線與資料線來完成,首先CPU將要存取的記憶體位置透過位址線傳送出去並鎖定位址後,再透過資料線讀取或寫入資料,最後再將位址線的鎖定解除(請參考圖3-18)。 位址線與資料線都不是單一條線,而是由多條線路組合而成,因此也分別稱之為位址匯流排與資料匯流排 而一般所謂的系統匯流排(記憶體匯流排)指的就是傳送記憶體資料的資料匯流排。 【字組大小與系統匯流排的關係】 我們在第二章時曾經提及字組大小(Word Size)並無明確定義為多少位元,事實上,字組大小代表該電腦系統一次可以存取的位元數量,許多人將之認定為電腦等級,例如16位元電腦的字組大小為16個bits、32位元電腦的字組大小為32個bits。而字組大小受到系統匯流排(記憶體匯流排;資料匯流排)的影響,所以64位元的電腦代表著使用的系統匯流排寬度為64位元。
67
3.4.2 I/O匯流排 對於與外部介面卡連結的I/O匯流排而言,歷經時代的變遷,常見的匯流排標準有下列幾種:
ISA(Industry Standard Architecture;工業標準架構)與EISA(Extended ISA;延伸工業標準架構): 早期IBM/XT時代(比286更早的8086系統)的產物,XT的匯流排為8位元,到了AT時代(286系統),為了提高資料傳輸的速度,在1984年,IBM設計了16位元的ISA匯流排(ISA最大資料寬度為16位元,但有時仍以8位元來設計),由於首度使用在AT系統,因此ISA匯流排亦稱之為AT匯流排(AT Bus)。 通常ISA插槽顏色為黑色,時脈為8MHz,可以插上許多的介面卡,例如網路卡、音效卡等,ISA只適合用於低速的介面卡,目前ISA匯流排已經很少使用已經被PCI匯流排所取代。 在1993年,Intel與Microsoft曾合作提出支援隨插即用的新版ISA匯流排規格,稱之為EISA,其最大資料寬度可達32位元,通常EISA插槽顏色為咖啡色,但時脈仍為8MHz。EISA在硬碟的資料傳輸上,表現較為突出,但在顯示卡等其他方面的資料傳輸上,則並無明顯的改善,因此已經不再使用(目前看到的咖啡色插槽多為AGP而非EISA)。
68
3.4.2 I/O匯流排 寬度 速度 效能 32 bits 33 MHz 133 MBps 66 MHz 266 MBps 64 bits
PCI(Peripheral Component Interconnect): PCI是Intel於1993年發展的高速匯流排規格,目前市面上的主機板都配有此種匯流排插槽,一般為白色插槽,PCI本身是32位元的匯流排,不過也支援64位元CPU所需要的64位元資料傳輸。PCI可使用33或66MHz時脈,在64位元傳輸時,採用66MHz時脈,傳輸速率可以達到533MBps,如下表所列,充分顯示了PCI的高效能傳輸速度。 寬度 速度 效能 32 bits 33 MHz 133 MBps 66 MHz 266 MBps 64 bits 533 MBps PCI的效能表
69
3.4.2 I/O匯流排 【傳輸速率】: 資料的傳輸速率單位,一般使用『MB/sec』或『bps』來表示,MB/s中的B代表的是Byte,而bps(Bits Per Second)代表一秒鐘可以傳輸多少個位元,因此bps值越大,傳輸速率越快。請注意,有時候即使看到的是大寫的Bps,但實際上指的仍是bit而非byte。 PCI規格雖然是由Intel制定,但由於PCI使用晶片組控制,因此PCI可支援不同的CPU(包含非Intel相容的CPU);換句話說,在PCI匯流排上,可以掛載支援PCI架構的各類不同功能的IC,例如:網路卡、SCSI卡、圖形加速卡等等。 PCI僅限於低速I/O使用,後來又為了Gigabit網路、高速SCSI、RAID等高速要求,又推出了64位元 133MHz的PCI-X,並與北橋晶片直接連結。但無論是PCI或PCI-X將來都會被PCI-Express所取代。
70
3.4.2 I/O匯流排 AGP(Accelerated Graphics Port):
AGP匯流排的功能是特定的,它是由Intel為了提高顯示卡的3D繪圖功能所發展的匯流排標準,AGP標準是以PCI標準為基礎所建立的高效能界面,其效率為PCI的四倍。AGP又分為1x、2x、4x、8x等時脈週期,而8x可提供的頻寬高達2.1GB/s。 AGP另一項重點是它提供了獨立性,由於AGP是針對3D繪圖功能所設計,因此3D繪圖卡可以使用獨立插槽(顏色通常與PCI不同,例如咖啡色)與AGP匯流排(一般只提供一個連接埠;即一個插槽),而不必和音效卡、SCSI卡、網路卡等共享PCI的頻寬與插槽。 最近由於PCI-E匯流排的高速特性,漸漸地3D高速繪圖卡也改採PCI-E匯流排,新出品的主機板有許多已經不提供AGP插槽了。 同時支援3種匯流排的Petium II主機板
71
3.4.2 I/O匯流排 PCI-E(PCI Express):
雖然AGP解決了顯示卡需要的快速傳輸問題,但畢竟AGP僅提供一個插槽,所以無法使用在非螢幕的其他種類I/O擴充,因此,在1998年Intel又基於PCI研發新的匯流排規格,並在2002年7月制定出新的PCI Express串列匯流排標準,又稱之為3GIO匯流排(3 Generation I/O bus;第三代I/O匯流排)。 PCI-E匯流排的工作電壓可降至0.8V,其主要目標在於取代PCI/PCI-X/AGP,因此,他提出了1x,2x,4x,8x,16x,32x多種規格,pin插槽接腳也有所不同,1x為36-pin、4x為84-pin、8x為98-pin、16x為164-pin 1x用來取代PCI,4x、8x用來取代PCI-X 16x用來取代AGP。 以16x為例,它可提供4GB/s的頻寬,足足比AGP 8x多了一倍。 同時,在PCI-E 16x以外的連接上,也採用了開關(Switch)的概念,以解決多個裝置訊號衝突的問題。
72
3.4.2 I/O匯流排 PCI Express規格 取代目標 效能 1x PCI-X 250MB/s 2x 500MB/s 4x
1GB/s 8x 2GB/s 16x AGP 4GB/s 32x 新型態的I/O 8GB/s PCI-Express的效能表 PCI-E的插槽接腳有多種選擇
73
3.4.2 I/O匯流排 同時支援PCI與PCI-E的雙核心主機板
74
3.4.3 晶片組(Chipset) 晶片組(Chipset)原本是提供各項功能的一組晶片,在主機板上則指的是用來管理資料流的晶片組,這些晶片組的各個晶片分別提供不同的功能,例如:管理DMA、處理中斷、管理輸出入匯流排間的資料傳輸等等。 晶片組由於功能特殊,因此屬於ASIC(application-specific integration circuit)的一種,生產晶片組的著名的廠商有Intel、ALi(揚智)、VIA(威盛)、SiS(矽統)。目前市面上的主機板晶片組都具有整合功能,並以單純的兩片晶片為主,也就是北橋晶片(North Bridge Chipset)與南橋晶片(South Bridge Chipset),其中的北橋晶片通常上面已經黏貼散熱鐵片。 北橋晶片通常負責CPU-記憶體及CPU-AGP或CPU-PCI Express 16x之間的訊號處理,因此速度較快。 南橋晶片一般處理與I/O有關的動作。不過目前也有一些廠商將南北橋晶片做在一起,成為單一整合型晶片。
75
3.4.3 晶片組(Chipset) 主機板的南橋晶片組(VIA8235) 各式各樣的晶片組
76
3.4.3 晶片組(Chipset) 技嘉主機板的PCI、AGP插槽與晶片組
77
3.4.3 晶片組(Chipset) 技嘉主機板的PCI、PCI-Expess插槽與晶片組
78
3.4.3 晶片組(Chipset) 含AGP匯流排的晶片組與匯流排連結圖(線條越粗代表傳輸速率越快)
79
3.4.3 晶片組(Chipset) 含PCI-Expess匯流排的 晶片組與匯流排連結圖
80
3.5 程式的執行流程 電腦的運作其實就是程式的執行,在介紹過CPU、匯流排、主記憶體之後,我們可以解釋一個程式的執行過程。
3.5 程式的執行流程 電腦的運作其實就是程式的執行,在介紹過CPU、匯流排、主記憶體之後,我們可以解釋一個程式的執行過程。 首先,所有的程式要被執行前,一定必須被載入到主記憶體中,並且除了記憶體/IO的存取指令之外,其他指令則必須透過CPU的內部元件(例如ALU、暫存器等等)來執行。 電腦硬體結構會自動執行儲存在主記憶體的程式(program),而這些程式是由許多指令(instruction)組成,這些指令將被循序地執行,換句話說,這個指令執行完畢後,在一般的狀況下(除了跳躍或條件分支指令之外),會執行下一個指令。 CPU執行一個指令的過程稱之為機器週期(machine cycle),而當一個指令被執行完畢後,下一個機器週期要擷取哪一個指令來執行,則該指令的記憶體位址會記錄在程式計數器(PC;Program Counter)之中。 PC暫存器內通常會記錄下一個指令的位址,對於固定指令長度的機器而言(例如DLX),硬體結構將比較簡單,因為只需要將目前指令的位址加上固定長度即可得到下一個指令的位址。
81
3.5 程式的執行流程 在一個機器週期內,指令究竟是如何被擷取並執行的呢?通常,指令的執行,被分為許多階段,以DLX機器而言,一個指令將被分為下列5個步驟來加以執行。 機器循環週期
82
3.5 程式的執行流程 (1)指令擷取(IF;Instruction Fetch):
3.5 程式的執行流程 (1)指令擷取(IF;Instruction Fetch): CPU根據『程式計數器』的內容(這是一個記憶體位址),從主記憶體中取出將要執行的指令,並將該指令儲存在『指令暫存器』中,然後將程式計數器內容遞增,以記錄下一個指令的位址。 (2)指令解碼(ID;Instruction Decode): CPU的控制單元會針對『指令暫存器』的內容(這是一個準備要被執行的指令內容)加以解碼,分析運算碼(opcode)與運算元(operand),以便決定要執行哪些動作。 指令擷取與指令解碼所花費的時間合稱為指令時間(I-Time;Instruction-Time)。
83
3.5 程式的執行流程 (3)指令執行(EX;instruction EXecution):
3.5 程式的執行流程 (3)指令執行(EX;instruction EXecution): ALU根據ID階段的分析結果(運算碼、運算元與函數功能),實際執行運算,運算結果將放在『ALU輸出暫存器』中。 (4)記憶體存取(MEM;MEMmory access): 如果指令需要存取記憶體,此時會將暫存器資料寫入主記憶體中,或者將主記憶體的資料載入到暫存器。 (5)結果回存(WB;result Write Back): 不論結果是從記憶體讀入或是ALU的運算結果,都會在此階段中回寫到各個可見暫存器中。 指令執行、記憶體存取、結果回存等階段所花費的時間合稱為執行時間(E-Time;Execution-Time)。 所以,機器循環週期=I-Time+E-Time。 【註】:一個指令究竟被分為幾個階段來執行,每種電腦的設計都有一些不同,有些電腦執行一個指令只需要4個階段IF、ID、EX、WB,有些電腦則將指令執行切割成更多階段,讀者若對其他各類電腦指令的運作有興趣,請參閱計算機結構之專書。
84
3.6 電腦結構的最新設計 上述的電腦核心結構是早期的設計基礎,這些基礎仍然沿用至今,但也為了提昇效率而發展了一些新的設計架構,包含『階層式記憶體』、『管線』、『超純量』、『RISC與CISC』等等。 3.6.1 階層式記憶體(Hierarchical Memory) 記憶體一向維持著速度/價格、容量成反比的原則,記憶體只要速度越快,成本就越高,而容量通常也就越小。這說明了一件事,在成本的考量下,我們必須有效地分配各種記憶體,以達到最高效率。 目前大多數的電腦設計,都採用所謂『階層式記憶體』的記憶體配置方式,將『快取記憶體』、『主記憶體』、『硬碟』做階層式配置(如圖3-38),達到最佳的成本效能比。
85
3.6.1 階層式記憶體(Hierarchical Memory)
86
3.6.1 階層式記憶體(Hierarchical Memory)
階層式記憶體的原則是,速度越快的記憶體越接近CPU,若將CPU內的暫存器也當做一個階層的記憶體,則一共有四層。反過來說,越遠離CPU的記憶體之容量也相對越大。階層式記憶體可以分為兩大部分來討論:『CPU-快取記憶體-主記憶體』、『CPU/快取記憶體-主記憶體-硬碟』。 對於前半部的『CPU-快取記憶體-主記憶體』而言,階層式記憶體之所以能夠有效的提昇電腦的效能,是因為大多數的程式執行時都具有區域性(locality)原則。而區域性又分為時間區域性與空間區域性兩種。 時間區域性(timporal-locality):剛剛被存取過的東西,在不久的將來很可能將再被存取。例如:程式中的迴圈。 空間區域性(spatial-locality):位址相近的東西,往往會在短時間內先後被存取。例如:程式中使用陣列資料結構。
87
3.6.1 階層式記憶體(Hierarchical Memory)
簡單的說,由於區域性原則,我們可以預測「某些東西」可能會在短時間內被存取,因此,將「這些東西」放在最快速的記憶體內,將有助於提昇整體效率。由於快取記憶體(cache)是由SRAM製作而成,而主記憶體是用DRAM技術製作而成,所以快取記憶體比主記憶體速度更快。因此,我們將會把「這些東西」從主記憶體搬移到快取記憶體中。 在實作上,階層式記憶體的原理被發揮得淋漓盡致 ,快取記憶體甚至被切割為兩層式或三層式快取記憶體。 以兩層式快取記憶體為例,早期的「Pentium CPU/Pentium主機板」將第一層的快取記憶體(稱為L1 Cache)直接嵌入在CPU之內(速度更快,容量較小),而第二層的快取記憶體(稱為L2 Cache)則是建構在主機板之上(速度較慢,容量較大)。 而後期的「Pentium III CPU/ Pentium III主機板」則將L2 Cache也嵌入在CPU之內,稱之為『L2 Cache on die』,所以在Pentium III主機板上是看不到L2 Cache的。
88
3.6.1 階層式記憶體(Hierarchical Memory)
對於後半部的『CPU/快取記憶體-主記憶體-硬碟』而言,主要是為了提高工作量(throughput) 目前大多數的作業系統都屬於多工式的作業系統,也就是必須同時處理多項工作,事實上,單顆CPU不可能同時處理超過一件以上的工作,但卻可以不斷切換工作,對於人類而言,由於切換的速度太快,有時並不會察覺到工作已經被切換。例如:您可以一面聽音樂,一面上網找資料。 由於不論是哪一種作業,程式若要被執行,一定必須被放置在主記憶體/快取記憶體內,但當工作太多時,主記憶體的容量將可能不夠用,此時就會透過虛擬記憶體(Virtual Memory)技術將硬碟中的某個空間當作是虛擬的記憶體,把暫時未執行到的工作放到虛擬記憶體(即硬碟),等到要執行該工作時,再將程式或資料載入到主記憶體中,這個切換的動作稱之為置換(swap)。 例如:有時候您會發現當您開啟多項工作時,例如聽MP3,上網,打Word作業,繪圖、、、等,突然有段短暫時間,電腦似乎停頓下來,且硬碟不斷地被存取,此時可能就是電腦正在做置換的工作。
89
3.6.1 階層式記憶體(Hierarchical Memory)
上述兩種技術,都必須考量到「哪些東西」將在不久的將來被使用,這是一個預測的行為,當然,預測不可能完全準確,但經由專家們的努力,也發明了許多種不同但效率不錯的置換方法 這些方法將會在計算機組織與結構及作業系統的書籍與課程中,加以介紹,在此不在多說。 值得注意的是,快取記憶體的置換方法是由硬體來控制,而虛擬記憶體的置換方法則是由軟體(作業系統)來加以控制(詳見7.4節)。 【快取記憶體的引申用法】:快取記憶體一詞最原本出現的場合是在階層式記憶體中,但電腦技術的觀念往往差不多,因此它也被應用在任何需要儲存小量且常被存取的環境,例如:大多數人們上網讀取的網頁都差不多,如yahoo搜尋引擎常常被瀏覽,而為了減低網路資料的流量及伺服器的負載,因此,可以將這些未變動的網頁資料蒐集放置於Proxy內,如此一來,我們就可以先試試看Proxy內是否有我們需要的網頁資料,若有,就直接取用;若沒有,才到實際的網站中讀取。甚至於,瀏覽器也會把我們已經下載過的網頁存放在本地端的電腦中,如此一來,在使用【上一頁】功能時,根本就不會有網路傳輸的問題。這些檔案或Proxy也有人稱之為cache,因為原理都和階層式記憶體中的快取記憶體相同。另一個常見的快取記憶體應用則是發生在快速硬碟中,同樣的道理,硬碟內的資料也可能有小部分會常常被存取,因此,有些快速的硬碟會內建小量的磁碟快取(disk cache)來存放這些資料,而磁碟快取也是使用SRAM來製作以提高速度。
90
3.6.2 管線(pipelining) 提昇電腦效率的方法,除了加快指令的執行速度外,另一個方向就是增加工作量(throughput)。
換句話說,在無法提昇指令的執行速度時,若能夠增加指定時間內所完成的指令總量,也同樣能夠提昇電腦整體的效率。「指令的執行速度不變,但卻增加指定時間內所完成的指令總量」,這句話看似矛盾?其實不然。 在非電腦產業常常使用的管線技巧恰恰可以達到上述要求,舉例來說,假設每一部汽車需要安裝1000個零件才算完成,您可以先安裝第一台汽車的第1個零件直到安裝第1000個零件,然後再安裝第二台汽車的第1個零件直到安裝第1000個零件,假設每次需要花費100小時,則安裝完10台汽車就需要1000小時。但實際上,除了手工打造的汽車,汽車工廠絕對不是如此製作,通常汽車工廠會將每個零件分配在一個機器上,並且同步進行,換句話說,當第一台汽車正在安裝第2個零件時,第二台汽車也正在安裝第1個零件,如此一來,安裝完畢10台汽車的時間與安裝完畢1台汽車的時間就相去不遠。
91
3.6.2 管線(pipelining) 電腦執行指令也同樣採用管線(pipeline)技術就可以在指令的執行速度不變時,增加指定時間內所完成的指令總量,例如就前面介紹的DLX機器而言,一個指令的執行過程可以分為5個步驟:IF、ID、EX、MEM、WB。由於這5個步驟所使用的CPU元件都不相同,因此,可以同步進行,DLX機器使用管線技術執行10個指令的圖示如下: 管線式DLX執行指令順序
92
3.6.2 管線(pipelining) 完美的Speedup管線=管線的級數 管線增速
對於一個使用管線技術製作的電腦系統而言,它能夠提供多少的增速(speedup)呢?在理想狀況下,管線的增速恰好等於管線的級數,例如:DLX的管線級數為5,因此,使用管線製作的DLX機器比未使用管線技術製作的DLX機器快5倍。 我們很容易可以驗證上述定理,所謂理想狀況,代表管線內每一級所需要的花費時間皆相等,且每一級皆可以完全獨立不受他級影響 例如:每一級需要花費10ns,則未使用管線完成一個指令需要50ns,而完成100個指令需要5000ns。使用管線技術後,完成100個指令所需要的時間為(100-1)*10+50=1040ns。 若執行無限多個指令時,管線(5級)所獲得的增速,如下公式計算: 完美的Speedup管線=管線的級數
93
3.6.2 管線(pipelining) 如果每一級所需要花費的時間不相等時,使用管線所獲得的增速就沒有那麼理想了,假設DLX指令執行的5個階段分別需要花費10ns、12ns、10ns、15ns、10ns,此時,若想要管線化,就必須以花費最多的那一級(15ns)做為每一級所需要的時間,如下圖所示。 在此階段中,原本未使用管線執行10個指令需要( )*10=570ns,而使用管線執行10個指令則需要(10-1)*15+75=210ns,增速只有570/210=2.7,因此,要使用管線來增加效能,必須配合指令分解動作的特性。 步驟所需時間不等
94
3.6.2 管線(pipelining) 管線危障 使用管線改善效能時,除了必須盡量平衡每一級所花費的時間外,另一項更重要的考量是『每一級的獨立性』。由於管線是同步作業,換句話說,對於5級的管線而言,每一個時間點內都有5個指令正在被執行且尚未完成某些步驟。使用管線可能會遇到一種狀況,使得下一個指令無法在預定的時脈週期中被執行,此種情況稱之為危障(hazard)。 例如管線中的某一個指令恰好必須使用尚未完成指令的結果做為來源時,則會發生危障。 管線危障分為很多種類,而危障最簡單的解決方式就是暫停管線一個週期,但這將有損管線的整體效能,除此之外,專家們還發明了許多解決各種危障的方法,讀者若有興趣,可以參閱計算機結構專書。
95
3.6.3 超純量處理器(Superscalar Processor)
仔細觀察可以發現上述的管線技術,可以增加整體的工作量,但仍然是一次發出一個指令去執行,只不過將發出指令的時間縮短為1/5。如果我們想要一次發出多個指令,這有可能嗎? 其實這也是可行的,只不過,我們必須在處理器中增加每個元件,當您為每個元件增多一倍時,就可以一次發出2個指令,依此類推,就形成了所謂的超純量處理器。 超純量處理器的執行時間
96
3.6.3 超純量處理器(Superscalar Processor)
通常超純量處理器會搭配管線技術來實作,如此一來,效能就可以大幅提昇。下圖是超純量處理器+管線技術執行指令的示意圖。 就和管線危障一樣,超純量處理器同樣會遇到同類的問題,如果和管線一起實作,則問題就更明顯了,同樣地,這必須透過其他較深入的演算法來加以解決,由於牽扯技術甚多,在此就不再多談。 超純量處理器(含管線)的執行時間
97
3.6.4 平行處理(Parallel Processing)
平行處理是另一種提昇電腦效能的方法,對於平行處理的電腦系統而言,一台電腦內或整個系統內的CPU不只一個,每一個CPU都可以獨立執行工作,而記憶體的部分則可以分為兩部分 一部份是配置給每一個CPU私用的記憶體,稱之為本地端記憶體(local memory) 另一部份則是供給所有CPU使用的公用記憶體,稱之為分享記憶體(share memory)。 平行處理的電腦系統運作時,會將程式分割為許多片段(稱之為行程),分別交由不同的CPU來執行,最後再將這些片段的執行結果統合在一起,完成整個工作。最顯著的平行處理系統就是超級電腦,其特性為運用大量的硬體資源,解決需要大量計算的工作。 同樣的道理,程式中某些資料變數可能有先後關係,因此也需要一套完整的方法來加以控制,保證最後的結果是正確的,這部分的工作通常交由作業系統來負責。 而一個程式即使被分配到各個CPU去分頭執行部分片段,有時候並不會縮短它的完成時間(因為必須等待其他行程處理完畢),這通常是由於程式特性所導致,而這部分的工作則必須由程式設計師或平行編譯器來加以控制。
98
3.6.4 平行處理(Parallel Processing)
平行處理電腦的記憶體結構圖
99
3.4.5 RISC與CISC 每一種CPU的指令集都不盡相同,而指令集的設計也會影響電腦的執行效率。目前指令集的設計可以分為兩大類:RISC(Reduced Instruction Set Computing;精簡指令集)與CISC(Complex Instruction Set Computing;複雜指令集)。RISC的機器有PowerPC(Mac電腦的CPU)、Sun SPARC(工作站等級)、IBM RS/6000、DLX等等。而CISC的機器有Intel x86、Motorola 680x0等等。 RISC的指令較為『精簡』,所謂較為精簡的意思,代表每個指令所能完成的工作較少,所以電腦的硬體設計變成非常單純,可以使用硬體線路控制(hardwired control)來製作。並且由於每個指令的工作單純,因此可以在一個時脈週期內就完成,同時,由於單純的指令易於切割為各個階段,因此,也非常容易配合管線或超純量技術提昇整體效率。
100
3.4.5 RISC與CISC CISC所提供的指令種類及功能非常多樣且豐富,有時候一個指令就可以完成許多工作(甚至可以完成一個高階語言指令的工作),由於提供的指令非常多,因此通常採用微程式控制(microprogrammed control)來製作,如此一來,若指令數量或指令服務內容變動時,只要修改微程式就可以解決,而不需要更改邏輯電路。但同樣地,由於指令非常複雜,當使用管線與超純量技術製作時,將很容易發生危障問題,反而會使得問題更形複雜,不容易提昇整體效率。 一般來說,同樣功能的程式,若使用RISC指令來撰寫,通常程式碼會較長,而使用CISC指令來撰寫,程式碼將會精簡許多,但這並不代表CISC機器就會執行的比較快 因為,一方面RISC的每個指令所需要的執行時間比較短,另一方面則是因為RISC管線化的危障比較少的緣故。
101
3.4.5 RISC與CISC 究竟RISC與CISC,孰優孰劣?
至今尚無明確解答,因此兩種指令集設計都被產品化,但依據實際測試結果,RISC在伺服器級的電腦表現較優,因此,工作站以上的電腦通常採用RISC指令集設計,例如Sun SPARC;而CISC則通常被使用做為個人電腦的CPU指令集,例如Intel x86。 RISC CISC 指令種類 少,通常低於100道 多,通常在2 00~300道以上 指令功能 簡單 複雜 控制單元 硬體拉線控制 微程式控制 指令格式 固定且可平行解碼,速度快 不固定,必須循序解碼 指令長度 固定 不固定 管線 單純 應用領域 特定領域,如工作站 非特定,如個人電腦 產品 PowerPC、Sun SPARC、DLX Intel x86、Motorola 680x0
102
如有必要補充 邏輯電路,組合電路,可參閱A.4~A.6 如有必要補充 主記憶體的原理(正反器記憶原理) ,可參閱A.7 重點回顧
本章習題
Similar presentations