5 Computer Organization (計算機組織)
Objectives(學習目標) 認識電腦的三個子系統 認識電腦的中央處理單元 認識中央處理單元的處理週期 認識主記憶體與位址空間 認識電腦的輸入輸出子系統 了解電腦的子系統如何互連 了解提升電腦處理效率的不同架構 了解一部簡單電腦的運作
5-1 電腦的三個子系統 Central Processing Unit (CPU) Main memory 5-1 電腦的三個子系統 Central Processing Unit (CPU) Main memory Input/Output subsystem.
5-2 電腦的中央處理單元 (CENTRAL PROCESSING UNIT) 中央處理單元由個部份組成: arithmetic logic unit (ALU) control unit registers
電腦的中央處理單元的示意圖
Registers(暫存器) 暫存器是位於CPU內部的記憶體 用來暫存運算中的資料 Data registers Instruction register Program counter
Control unit(控制單元) 「控制單元」( CU)是負責指揮、協調、控制電腦各部門間的相互運作與資料傳送,可以說是電腦的指揮中樞。 例如指揮算術邏輯單元與記憶單元間的動作、指令的讀取與解碼、作業程序的協調等工作。
真實世界的CPU 8051是一種8位元的單晶片微電腦,屬於MCS-51單晶片的一種,由英特爾公司於1981年製造。到現在,有更多的IC設計商,如ATMEL、飛利浦、華邦等公司,相繼開發了功能更多、更強大的兼容產品。
真實世界的CPU
8051的內部結構 8 位元 CPU 4KB 內部程式記憶體,最大可擴充至 64KB。 128Bytes 內部資料記憶體,最大可擴充至 64KB。 具有邏輯代數運算功能(位元邏輯)。 4 組可位元定址的 I/O 埠〈P0、P1、P2、P3〉。 2 組16位元計時/計數器〈T0、T1〉。 5 個中斷源〈INT0、INT1、T0、T1、RXD、TXD〉。 1 組全雙工串列埠〈UART〉。
5-3 主記憶體(MAIN MEMORY) 主記憶體以word為存取的最小單位 一個word可能是: 8 bits, 16 bits, 32 bits or 64 bits 或者更多bits 一個word如果是8 bits則稱為一個byte
主記憶體每一個word都有一個位址
所有主記憶體的位址形成位址空間 (address space) 如果記憶體有64 kilobytes, 而每一個word的大小為一個byte。 則位址空間為0 到65,535
記憶體的單位
Example 5.1 某一部電腦有32 MB (megabytes)的記憶體,請問需要幾個bit才能存取記憶體中每一個byte? Solution 32 MB= 225 (25 × 220) log2 225= 25 bits Example 5.2 某一部電腦有128 MB (megabytes)的記憶體,而此電腦中每個word佔8bytes。請問需要幾個bit才能存取記憶體中每一個word? Solution 128 MB=227 1 word=23bytes 此電腦有224 words log2 224 =24 bits, to address each word.
記憶體的種類 Random access memory (RAM) Read-only memory (ROM) Static RAM (SRAM) Dynamic RAM (DRAM) Read-only memory (ROM) Programmable read-only memory (PROM). Erasable programmable read-only memory (EPROM). Electrically erasable programmable read-only memory (EEPROM).
記憶體的階層(Memory hierarchy)
快取記憶體的容量小、介於CPU與主記憶體之間 快取記憶體(Cache memory) 快取記憶體的存取速率比主記憶體快 但是比CPU與暫存器慢 快取記憶體的容量小、介於CPU與主記憶體之間 Figure 5.5 Cache memory
5-4 電腦的輸入輸出子系統 (INPUT/OUTPUT SUBSYSTEM) 電腦的輸入輸出子系統用來讓電腦與外界溝通以及儲存程式與資料 電腦的輸入輸出裝置包括非儲存裝置以及儲存裝置
非儲存裝置(Non-storage devices) Keyboard and monitor Printer
儲存裝置( Storage devices)
儲存裝置( Storage devices) Figure 5.7 A magnetic tape
儲存裝置( Storage devices) Figure 5.8 Creation and use of CD-ROMs
Figure 5.9 CD-ROM format
5-5 電腦子系統的互連 (SUBSYSTEM INTERCONNECTION) CPU與記憶體如何互連?
電腦週邊裝置與CPU如何互連? 電腦週邊裝置速度慢 CPU與memory速度快 直接把電腦週邊與匯流排互連好嗎?
電腦週邊裝置與匯流排如何互連 Figure 5.13 Connecting I/O devices to the buses
電腦週邊裝置與匯流排如何互連 Figure 5.14 SCSI controller
電腦週邊裝置與匯流排如何互連 Figure 5.15 FireWire controller
電腦週邊裝置與匯流排如何互連 Figure 5.16 USB controller
Addressing input/output devices (輸入輸出裝置的定址) 無論是從記憶體或者輸入輸出裝置讀寫資料, CPU皆使用相同的匯流排來進行。 只是使用的指令不同而已。 如果所要讀寫的資料位於記憶體中,資料會在記憶體與CPU之間移轉。 如果所執行的讀寫指令指向輸入輸出裝置,資料會在輸入輸出裝置與CPU之間移轉。 有兩種處理輸入輸出裝置位址的方法: isolated I/O and memory-mapped I/O.
輸入輸出裝置定址的方法一: isolated I/O Figure 5.17 Isolated I/O addressing
輸入輸出裝置定址的方法一: Memory-mapped I/O Figure 5.18 Memory-mapped I/O addressing
5-6 程式如何執行(PROGRAM EXECUTION) 何謂程式? 程式由某一個集合的指令所構成用來處理資料
一個簡單的機器週期由三個階段所構成: fetch, decode and execute 機器週期(Machine cycle) CPU使用機器週期來執行指令 一個簡單的機器週期由三個階段所構成: fetch, decode and execute Figure 5.19 The steps of a cycle
Input/output operation輸入/輸出的運作 電腦需要執行指令以將資料從I/O裝置移轉到CPU以及 and記憶體。 由於I/O裝置的速率遠低於CPU以及記憶體,CPU 的運作必須以某種方法與輸入∕輸出設備達到同步。 有三種方法被設計來達成同步:程式化 I/O、中斷驅動 I/O 及直接記憶存取(DMA)。 Programmed I/O(程式化 I/O) Interrupt driven I/O(中斷驅動 I/O) Direct memory access (DMA)(直接記憶體存取)
Programmed I/O(程式化 I/O) Figure 5.20 Programmed I/O
Interrupt driven I/O(中斷驅動 I/O) Figure 5.21 Interrupt-driven I/O
Direct memory access (DMA) (直接記憶體存取) Figure 5.22 DMA connection to the general bus
Direct memory access (DMA) (直接記憶體存取) Figure 5.23 DMA input/output
5-6 DIFFERENT ARCHITECTURES (不同的運算架構) 電腦歷經數十年的演進,發展出不同的運算架構
CISC 複雜指令集(CISC,Complex Instruction Set Computer)是一種微處理器指令集架構,每個指令可執行若干低階操作,諸如從記憶體讀取、儲存、和計算操作,全部集於單一指令之中。與之相對的是精簡指令集(RISC,Reduced Instruction Set Computer)。 CISC的特點是指令數目多而複雜,每條指令字長並不相等。
RISC 精簡指令集,是電腦中央處理器的一種設計模式,也被稱為RISC(Reduced Instruction Set Computing 的縮寫)。這種設計思路對指令數目和定址方式都做了精簡,使其實作更容易,指令並列執行程度更好,編譯器的效率更高。早期,這種指令集的特點是指令數目少,每條指令都採用標準字長、執行時間短。 RISC 背後的策略是要具有一個小的指令集以便執行最少數目的簡單運算,而複雜指令是用簡單指令的子集合加以模擬。 在 RISC 電腦上撰寫程式比在另一種設計的電腦要更加困難以及更加耗時,因為大部分的複雜指令是用簡單指令模擬得到的。 目前常見的精簡指令集微處理器包括DEC Alpha、ARC、ARM、AVR、MIPS、PA-RISC、Power Architecture(包括PowerPC、PowerXCell)和SPARC等。
Pipelining(管線) 管線,是現代計算機處理器中必不可少的部分,是指將計算機指令處理過程拆分為多個步驟,並通過多個硬體處理單元並行執行來加快指令執行速度。其具體執行過程類似工廠中的流水線,並因此得名。 如果作出類比,則計算機指令就是流水線傳送帶上的產品,各個硬體處理單元就是流水線旁的工人。 在使用流水線的處理器中一個指令不是在處理器的一個定時器訊號中完成的,而是被分到多個訊號中去完成,但是與此同時多個指令的分任務被同時處理。由於這些分任務比整個指令要簡單,因此可以通過使用流水線提高定時器頻率。雖然每個指令需要多個訊號後才能完成,但是通過多個指令的並行運算每個訊號內一個指令可以完成,因此通過這個方法整個速度可以提高。
Pipelining(管線) Figure 5.24 Pipelining
Parallel processing(平行處理) 一部計算機具有多重控制單元、多重算術邏輯單元和多重記憶體單元,此種運算架構稱為平行處理。 Figure 5.24 A taxonomy of computer organization
SISD 單一指令流,單一資料流(single instruction-stream, single data-stream;SISD) 指令依序地執行而且每個指令可以存取資料流中一個或多個資料項。 Figure 5.26 SISD organization
SIMD 單一指令流,多重資料流(single instruction-stream, multiple data-stream;SIMD) 所有的處理單元接受來自控制單元的相同指令,但是對不同的資料項做運算,同時對一個陣列的資料做運算之陣列處理器就是屬於此類。 Figure 5.27 SIMD organization
MISD 多重指令流,單一資料流(multiple instruction-stream, single data-stream;MISD)組織是有多個指令分別屬於多個不同的指令流,同時對同一個資料流做運算。MISD 的概念從未曾被實作過。 Figure 5.28 MISD organization
MIMD 多重指令流, 多重資料流(multiple instruction-stream, multiple data-stream;MIMD)組織表示有多個指令分別屬於不同的多個指令流,同時對多個資料流做運算(一個指令對一個資料流)。在此結構中數項工作可同時被執行,此結構可使用單一共享記憶體或是多重記憶體區。 Figure 5.29 MIMD organization
5-7 A SIMPLE COMPUTER (一部簡單電腦的運作) 一部簡單的電腦有三個組成元件: CPU、記憶體和輸入∕輸出子系統。 Figure 5.30 The components of a simple computer
Instruction set(指令集) 每個計算機指令由兩個部分組成: 運算碼(opcode)與運算元(operand)。 運算碼描述所要進行的運算型態 運算元指定運算的對象
指令的格式 Figure 5.31 Format and different instruction types
Processing the instructions(執行指令) CPU使用機器週期來執行指令 一個簡單的機器週期由三個階段所構成: fetch(擷取), decode (解碼)and execute(執行) (1)擷取階段:由 PC 決定位址的指令從記憶體中取得並且載入到 IR 中,接著 PC 遞增以指到下一個指令。 (2)解碼階段:IR 中的指令被解碼並且從暫存器或記憶體中擷取所需要的運算元。 (3)執行階段:指令被執行並且結果被放到適當的記憶體位置或暫存器中。 三個階段完成後,控制單元再度開始另外一個指令的機器週期,此時 PC 指在下一個指令。此一過程會持續直到 CPU 遇到 HALT 指令為止。
簡單的指令集
範例一(加法運算) 將兩個整數 A 和 B 相加並且產生結果 C。 假設整數為 2 的補數格式
範例一(加法運算程式) 假設A和 B儲存在記憶體位址 (40)16以及(41)16 運算結果C儲存在記憶體位址 (42)16
程式與資料如何儲存在記憶體中 將程式儲存在記憶體位址(00)16到位址(04)16中 將資料儲存在記憶體位址 (40)16以及(41)16 將運算結果儲存在記憶體位址 (42)16 假設我們所要執行加法運算的兩個數字為161=(00A1)16以及254=(00FE)16 則運算結果為415=(019F)16 此加法運算程式有關5個指令,因此此加法運算程式會經歷5個機器週期才執行完畢。 Cycles
機器週期1 Figure 5.32 Status of cycle 1
機器週期2 Figure 5.33 Status of cycle 2
機器週期3 Figure 5.34 Status of cycle 3
機器週期4 Figure 5.35 Status of cycle 4
機器週期5 Figure 5.36 Status of cycle 5
範例二(包含輸入與輸出的加法運算) 範例一假設所要進行加法運算的資料均已經儲存在記憶體中。 本範例二則假設要進行加法運算的資料必須從輸入裝置讀取(READ),而運算結果必須透過輸出裝置輸出(WRITE) 。
範例二(包含輸入與輸出的加法運算) 使用LOAD指令來讀取輸入資料 使用STORE指令來輸出資料
範例二(包含輸入與輸出的加法運算)的程式 運算指令1至4從輸入裝置讀取資料 運算指令9至10將運算結果透過輸出裝置輸出.