新世代計算機概論 第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。
知名的CPU製造商與產品 公司 CPU Intel(英特爾) AMD(超微) IBM/Motorola SUN(昇陽) Pentium、Xeon、CoreTM 2 AMD(超微) Athlon64、Turion64 IBM/Motorola Power PC(G3~G5) SUN(昇陽) SPARC Compaq(合併HP惠普) Alpha Transmeta(全美達) Crusoe、efficeon、LongRun2 VIA(威盛) C3、C7
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) 是一個工作從開始做到結束所花費的時間 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來描述: MIPS 意指每秒鐘可以完成幾百萬個指令,適用於PC、工作站或大型主機。 MIPS=時脈速度(clock rate)/(CPI*106) =程式的指令個數/程式的執行時間(秒)*106 MFLOPS 意指每秒鐘可以完成幾百萬個浮點數運算,適用於需要大量浮點數運算的機器 (例如超級電腦)。 MFLOPS=浮點運算個數/程式的執行時間(秒)*106 TPS 意指每秒鐘可以完成幾個交易,適用於商業交易機器。
假設一部時脈速度為100MHz的電腦執行10000000個指令需要0. 25秒,試問,這部電腦的CPI是多少. MIPS是多少 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 假設有兩部指令集相同的電腦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時間都沒有改進,試問執行該程式在五年後能變快多少? Speedup=1/﹛(被改良的部份佔多少% / 增快多少倍)+未被改良的部份佔全部多少%﹜ 所以 Speedup=1/﹛(0.8/4)+0.2﹜=2.5倍 也就是雖然CPU快了4倍,若I/O未改進,將影響程式執行效能。
3-2-5 CPU相關規格 外頻: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 匯流排寬度 字組大小 8088 8 bits 80286 16 bits 80386、80486 32 bits Intel Pentium以上、Xeon 64 bits AMD Duron、Athlon Intel Itanium、Core Duo AMD Athlon64、Opteron(K8)
相容性: 傳統處理器設計方式中,由於暫存器的數量有限,當處理器手頭上仍有工作要處理時,就無法受理其他指令所發出的需求,而是得乖乖排隊在後面等,而因為這個特點,處理器的效能變會因為指令處理流程的影響而受到限制。 由於不同的CPU各有唯一的指令集(比較出名的有Intel的MMX、SSE4系列,以及AMD的3DNOW!技術),因此,廠商在推出新的CPU晶片之前,必須考慮相容性 (compatibility),特別是新的晶片能否與舊的晶片具有向下相容性。
3-2-6 機器語言 機器語言 (machine language) 是程式與電腦溝通的介面,定義了程式可以使用的指令與編碼方式。 3-2-6 機器語言 機器語言 (machine language) 是程式與電腦溝通的介面,定義了程式可以使用的指令與編碼方式。 機器指令 (machine instruction) 的編碼方式通常包含運算碼 (op-code) 和運算元 (operand) 兩個部分,其中運算碼是這個指令所要進行的運算,運算元是這個指令進行運算的對象。
假設中央處理器有十六個2Bytes暫存器、一個2Bytes程式計數器、一個4Bytes指令暫存器、主記憶體有256個儲存單元(00~FF) 指令格式
運算碼 運算元 說 明 1 RXY LOAD指令,將主記憶體位址XY的資料載入暫存器R 2 STORE指令,將暫存器R的資料儲存到主記憶體位址XY 3 RST ADD指令,將暫存器S的資料與暫存器T的資料相加,再將結果儲存到暫存器R 4 OR指令,將暫存器S的資料與暫存器T的資料進行OR運算,再將結果儲存到暫存器R 5 AND指令,將暫存器S的資料與暫存器T的資料進行AND運算,再將結果儲存到暫存器R 6 XOR指令,將暫存器S的資料與暫存器T的資料進行XOR運算,再將結果儲存到暫存器R 7 JUMP指令,若暫存器R的資料與暫存器R0的資料相同,就跳到主記憶體位址XY去執行,否則依序執行 8 000 HALT指令,使程式暫時停止執行,例如機器指令8000是將程式暫停
運算元 運算碼 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),包含下列四個步驟: (指令時間) 3-2-7 機器循環週期 CPU執行一個指令的過程叫做機器循環週期 (machine cycle),包含下列四個步驟: (指令時間) 指令擷取(IF) 指令解碼(ID) (執行時間) 指令執行(IE) 結果存回(WB)
3-3 CPU的設計架構與技術 3-3-1 CISC V.S. RISC RISC所提供的指令較為精簡,每個指令的執行時間都很短,完成的動作也很單純,在一個時脈週期(clock cycle)內執行完畢。若要做複雜的事情,就要由多個指令來完成。如SUN SPARC、PowerPC、IBM RS/6000 CISC則提供了豐富的指令,每個指令的執行時間較長,能夠完成的動作也較複雜。如Intel x86、MOT 680x0。
比較項目 RISC CISC 指令集 定址模式 控制單元 記憶體存取 通用暫存器 最佳化 系統軟體 提供的定址模式少 提供的定址模式多 控制單元 控制電路較簡單 控制電路較複雜 記憶體存取 所有的運算元都在CPU暫存器內執行,只有load和store兩個指令能存取記憶體,較不具彈性。 大部分的指令都能存取記憶體及暫存器的值。 通用暫存器 暫存器數目多 暫存器數目少 最佳化 因指令長度固定,所以使用管路(pipeline)執行效率佳,需配合編譯器使用 無 系統軟體 需較複雜系統軟體,利用編譯器輔助以達成最佳化 不需特殊編譯器
3-3-2 管線(Pipeline) 管路是一種資料路徑的製作技巧,利用指令的重疊來增加指令的生產量(throughput) ,也就是增加電腦在固定時間內所能完成的工作量。 管路是一種資料路徑的製作技巧,利用指令的重疊來增加指令的生產量(throughput) ,也就是增加電腦在固定時間內所能完成的工作量。
以傳統的做法來執行100個指令。假設指令的擷取、解碼、執行與存回,各步驟所需時間為10ns、5ns、8ns、7ns。
以管線技術來執行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個指令! 超純量(Superscalar):在一個CPU中建立多個執行單元(Execution Unit),各個執行單元可以分別處理不同的指令!(要注意的是每個執行單元可以做管線化設計,因此管線與超純量是不同的概念)
若一個系統將指令區分為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電腦架構分類 簡稱 指令流 資料流 架構 例子 SISD 1 單處理機 Von neuman PC 3-3-4 平行處理 根據Flynn電腦架構分類 簡稱 指令流 資料流 架構 例子 SISD 1 單處理機 Von neuman PC SIMD M 陣列處理機 向量處理機 管線電腦 TMC CM-5 CRAY T3D MISD 無 MIMD 多處理機平行處理電腦 CRAY X/MP
Thinking Machine Corp. CM-2(8K CPUs 1bit) and Data Vault CRAY T3D(Massively Parallel Processing)
3-3-4 平行處理 平行處理是一部電腦裡面有多個處理器,每個處理器都像一個CPU,可以獨立執行工作,至於主記憶體及輸入/輸出裝置則是共用。
3-4 記憶體 3-4-1 記憶體的種類 記憶體有RAM (隨機存取記憶體,電源消失,資料就消失)與ROM(唯讀記憶體,資料錄存後永遠保存 )兩種。 RAM又分成下列兩種: DRAM(dynamic RAM,動態隨機存取記憶體) SRAM(static RAM,靜態隨機存取記憶體):存取速度快,成本高,作為Cache用。 ROM又分成下列三種:儲存BIOS用 PROM(programmable ROM) EPROM(erasable PROM) EEPROM(electronically EPROM) 目前,BIOS儲存在快閃記憶體(Flash Memory)內
3-4-2 記憶體的階層 暫存器(register)由一群正反器(Flip-Flop)組成,每個正反器可以儲存一個位元的資料,一個n位元的暫存器便包含n個正反器,而可以儲存n位元的資料。一個暫存器除了正反器外,還包含一些組合邏輯閘。廣義的定義中,一個暫存器包含一群正反器以及一些會影響他們狀態改變的邏輯閘,正反器用來保存二進位資料,而其他的輯閘則用來控制新資料於何時及如何轉移到暫存器。 快取記憶體 (cache memory) 主記憶體 (main memory) 輔助記憶體(Auxiliary Storage) 輔助記憶體
何謂『BIOS』 ref P.3-31 BIOS是『Basic Input Output System-基本輸出入控制系統』。專責系統中各式參數設定,是放在主機板上一顆小小的快閃EEPROM記憶體模組中,這個一種唯讀的記憶體,需使用特殊工具和技術才可以修改或重新編譯裡面內容,電腦一啟動,處理器會第一優先自動執行存放在BIOS中的程式。因為它是將硬體方面的控制程式利用機器燒錄至唯讀記憶體『ROM』裡面,所以BIOS就是屬於硬體的東西,但是裡面的程式又是屬於軟體,因此綜括起來就統之稱為『韌體』,由於這是專做硬體控制用的角色,所以可以稱BIOS是硬體的『監督程式』。
在系統一開機時,BIOS會進行開機時的檢測工作(Power On Self Test),以確定系統組件的基本組態。此時,按下<DEL>鍵即可進入BIOS設定的主畫面,你可以調整各個細項。 BIOS控制著主機板上所有的輸出及輸入的訊號與控制:例如硬碟、軟碟、鍵盤、滑鼠.....等。一、AMI BIOS 二、 PHOENIX-AWARD BIOS 三、IBM BIOS
3-4-3 主記憶體的定址方式 某CPU含有24條位址線,請問他可直接定址到多大的 記憶空間? 224=24*220=16MB 3-4-3 主記憶體的定址方式 主記憶體是由許多記憶體單元(cell)所組成,不同機器可能有不同數目的記憶體單元,而且記憶體單元的大小也不盡相同。 為了加以辨識,每個記憶體單元都有唯一的位址(address),同時這些位址是從0開始,依照順序編號。圖示容量64KB(216),從0到65535。 某CPU含有24條位址線,請問他可直接定址到多大的 記憶空間? 224=24*220=16MB
3-5 電腦與週邊通訊 電腦內部的電子訊號是由匯流排進行傳送,由下列三組電路所組成: 資料線(data line) 3-5 電腦與週邊通訊 電腦內部的電子訊號是由匯流排進行傳送,由下列三組電路所組成: 資料線(data line) 位址線(address line) 控制線(control line) 匯流排又分為下列兩種: 系統匯流排(system bus):負責傳送CPU與主記憶體之間資料 擴充匯流排(expansion bus):負責傳送CPU與週邊之間資料。
CPU透過匯流排連接主記憶體與週邊 資料線負責傳送資料 位址線負責存放主記憶體或週邊的位址 控制線負責發出控制訊號,如讀取、寫入等。
ISA (industry standard architecture) MCA (microchannel architecture) PC常見的擴充匯流排: ref P.3-32 ISA (industry standard architecture) MCA (microchannel architecture) EISA (extended industry standard architecture) VL (VESA local bus) Graphics Card IBM XGA-2.
PC常見的擴充匯流排(續): ref P.3-32 PCI (peripheral component interconnect) AGP (accelerated graphics port)
硬碟控制介面、軟碟控制介面、光碟控制介面、Monitor port PS/2埠 序列埠 (serial port) (COM 1) PCI Express(2.5~4倍) 硬碟控制介面、軟碟控制介面、光碟控制介面、Monitor port PS/2埠 序列埠 (serial port) (COM 1) 平行埠 (parallel port) (LPT 1) USB (universal serial bus) IEEE1394 SCSI-3 New SCA 80-pin
16條排線的電腦,其定址空間為: 216=26*210=64KB 假設80286 CPU資料匯流排為16條線,位址匯流排有24條線,其資料傳輸量與定址能力各為何? 1.此為16位元的CPU,資料傳輸量為2Bytes 2.定址能力為224=24*220=16MB
PS/2 USB 紅外線傳輸埠 (IrDA) 其它擴充插槽 顯示器插槽 網路卡插槽 SCSI卡插槽 音效卡插槽 數據卡插槽 Parallel Serial port
3-6 輸入/輸出的定址方式 3-6-1 隔離I/O 在隔離I/O (isolated I/O) 中,每個週邊均有唯一的位址,但這些位址卻可能和主記憶體的記憶體單元重複,為了避免混淆,於是得設計兩組不同的指令來進行主記憶體的讀寫及週邊的讀寫。
3-6-2 記憶體映射I/O 在記憶體映射I/O (memory-mapped I/O) 中,每個週邊均有唯一的位址,這些位址是從主記憶體的部分定址空間配置出來,不會和主記憶體的記憶體單元重複。
3-7 輸入/輸出介面 輸入/輸出介面主要的工作有: 與週邊溝通; 與CPU和主記憶體溝通; 做為資料緩衝區; 錯誤偵測與回報。
3-7-1 程式控制I/O 程式控制I/O (program-controlled I/O),又稱為輪詢式I/O (polling I/O),當CPU與週邊傳送資料時,輸入/輸出介面並不會主動通知CPU其所要存取的週邊是否已經準備好需要的資料,然後叫CPU去拿下一筆資料,也不會主動通知CPU其所要存取的週邊是否已經消化完送來的資料,然後叫CPU送下一筆資料過去。 在這個過程中,CPU必須一直詢問輸入/輸出介面,才能掌握週邊的狀態,無法執行其他工作。如下圖
3-7-1 程式控制I/O
3-7-2 中斷式I/O 在中斷式I/O (interrupt-driven I/O)中,CPU會先通知週邊即將開始傳送資料,之後便逕自執行其他工作,待資料傳送完畢後,週邊會發出一個中斷要求(interrupt request)通知CPU,一旦CPU收到中斷要求,就會暫時停止目前正在執行的工作,改去執行中斷要求所指定的中斷服務程式(ISR,Interrupt Service Routine)工作。 目前處理中斷要求的控制晶片內建於主機板的晶片組,中斷要求分為16個層次,編號為0~15,數字越大,優先順序越低,如IRQ 0式系統計時器,IRQ 1是鍵盤控制器,一旦發出中斷要求,CPU會先處理系統計時器的中斷要求。如下圖
3-7-2 中斷式I/O
3-7-3 直接記憶體存取 (DMA) 直接記憶體存取(direct memory access)是應用在主記憶體與週邊之間的資料傳送,當主記憶體與週邊之間要傳送資料時,CPU只要將傳送類型、位址、資料的位元組數目等訊息通知DMA,就可以執行其他工作,接下來便由DMA直接向週邊取得資料,然後傳送給主記憶體,不再打擾CPU,電腦的效能自然會提升。如下圖 不過,共用的匯流排在CPU、DMA和主記憶體競相使用的情況下仍會成為障礙,也就是所謂范紐曼瓶頸。現在的16位元PCI匯流排有兩顆 DMA控制晶片,可以提供八個DMA(編號0~7)。
3-7-3 直接記憶體存取 (DMA)
POLLING INTERRUPT DMA 意義 優點 缺點 CPU週期性的確認I/O裝置的狀態位元,是否可進行下一個動作。 I/O裝置要動作時,會發出一個中斷給CPU,CPU停下原本的工作執行ISR,完成後,CPU再返回原本的工作位置繼續執行未完的工作。 為一I/O介面,不透過CPU的暫存器直接與記憶體作資料傳輸。 優點 簡單易執行,且CPU輪詢的順序可由軟體程式來改變。 CPU不用一直去確認I/O裝置的狀態。不會浪費時間在輪詢上。 適用於高速裝置(如Disk),也是一種用中斷和CPU溝通的方式。 缺點 因為CPU的速度遠快於I/O裝置,所以會浪費許多CPU時間在輪詢上。 程式上處理較複雜困難。 程式的記憶體部分處理難度增加。