890 likes | 1.04k Views
第四章. 中央處理單元的運算系統. 本章概要. 暫存器的設計 暫存器的資料傳送 算術邏輯運算單元 實數運算處裡 運算電路的整合. 中央處裡單元的基本架構. 暫存器群 算術邏輯運算單元 控制單元. 中央處理單元 (CPU) 的基本架構. 在電腦中,中央處理單元 (CPU) 是整體運作的 主動元件 ,它控制著輸出入裝置與記憶體的資料傳送,並直接對記憶體做資料或指令的讀取或寫入。. 中央處理單元內部共分成三個部份. 第一部份是暫存器群 (Registers). 通常暫存器分成三類
E N D
第四章 中央處理單元的運算系統
本章概要 暫存器的設計 暫存器的資料傳送 算術邏輯運算單元 實數運算處裡 運算電路的整合
中央處裡單元的基本架構 暫存器群 算術邏輯運算單元 控制單元
中央處理單元(CPU)的基本架構 • 在電腦中,中央處理單元(CPU)是整體運作的主動元件,它控制著輸出入裝置與記憶體的資料傳送,並直接對記憶體做資料或指令的讀取或寫入。
第一部份是暫存器群(Registers) • 通常暫存器分成三類 一是提供放置需要計算的資料,或存入算出結果的資料暫存器(Data Register)。在現行CPU的一次多個指令讀取與執行功能下,是需要多個資料暫存器,同時負責資料的取用與存放;這種多個(大量)資料暫存器的電腦設計,稱為通用暫存器型式的電腦。
第二是標示記憶體位址的位址暫存器(Address Registers),其為標示所要存取的資料,在記憶體的位址之相關暫存器,如直接讀取記憶體資料所需的位址暫存器(Address Register, AR)、讀取指令在記憶體的位址,所需的程式計數器(Program Counter, PC)、使用堆疊資料的堆疊基底(Stack Base, SB)與堆疊指標(Stack Pointer, SP)。
以及在記憶體過大,需要二個暫存器來組合位址的分段暫存器(Segment Register)與差值暫存器(Offset Register)等,都是屬於記憶體位址的表示暫存器。
第三是控制暫存器(Control Register),對於指令的執行或資料的存取所需要的控制;如專門讀取指令,載入控制單元做解碼的指令暫存器(Instruction Register,IR)、表示目前計算結果或系統狀況的狀態暫存器(Status Register);也有些控制單元以微程式(Micro Program)設計,即有控制字暫存器(Control Word Register),直接操作計算與暫存器的執行。
第二部份是算術邏輯運算單元(Arithmetic and Logic operation Unit, ALU) • 主要是提供指令所要求的各式運算功能,包括加減乘除四則運算的算術電路,以及NOT、AND、OR、XOR等等邏輯運算的電路,二進制位元的左移位或右移位運算的移位電路,還有處理條件式大於、等於、小於的比較器電路。
第三部份是控制單元(Control Unit, CU) • 提供整個硬體電路的時序控制脈波(Timing Control Clock),並解碼指令,以同步控制執行每一個指令的相關動作;譬如暫存器的資料載入或清除、算術邏輯運算單元要做何種運算?CPU對記憶體的讀寫資料控制,以及輸出入裝置對記憶體的大量資料傳輸等等程序動作。
暫存器的設計 正反器 變數的設定時間 有資料輸入的控制 有非同步控制的暫存器 暫存器的圖示 暫存器檔案
暫存器的設計 • 一般的暫存器是由D正反器所設計組合而成,若為十六位元暫存器則由十六個D正反器組成,三十二位元暫存器則由三十二個D正反器組成。 • 每個正反器共接同一個控制脈波,在前緣觸發時D正反器接受資料,脈波若不是在前緣時,D正反器就不會動作。
D正反器的前緣觸發問題 • 如果資料的儲存,單純由D正反器設計,以其控制脈波的前緣觸發,做資料的輸入控制;那每一筆新的資料輸入,就固定在每一個控制脈波的前緣,資料一組一組的隨控制脈波前緣輸入。
這種隨控制脈波前緣輸入資料的暫存器設計,在實際執行上,就必須配合指令的資料輸入,而隨時改變前緣時間,並不能以固定的頻率做控制脈波。這種隨控制脈波前緣輸入資料的暫存器設計,在實際執行上,就必須配合指令的資料輸入,而隨時改變前緣時間,並不能以固定的頻率做控制脈波。
有資料輸入控制的暫存器 • 在平時暫存器未使用時,資料輸入控制為0,輸出值回授為輸入值,使暫存器內之值維持不變;若要有新的值輸入時,資料輸入控制設成1。 • 系統的控制脈波,仍同步掌握著暫存器輸出入的動作,即是在資料要輸入暫存器時,必須資料輸入控制為1,且在控制脈波的前緣。 • 這種暫存器的資料輸入,就以資料輸入控制接腳為主,而將系統控制脈波分離。
暫存器檔案(Register File) • 這種設計方式的記憶體位址,即代表暫存器編號,暫存器的讀寫,變成記憶體的存取;而每一個位址與暫存器編號的對應,可採用固定對映式,即記憶體位址就是固定為某一暫存器。 • 另一種即隨機編排式,即隨程式的資料讀入與寫出的順序,臨時編排不同的記憶體位址。
暫存器的資料傳送 多工器的選擇控制 三態閘的選擇控制 暫存器的計算 暫存器的資料搬移
暫存器的資料傳送 • 在CPU內部有許多暫存器,而這些暫存器必須依指令的需要,傳送或儲存資料,有的是暫存器之間互傳資料, 有的是暫存器對運算單元做資料計算, 也有的是暫存器對記憶體做資料存取。 而暫存器的資料輸入時,必須設定資料輸入控制接腳(DI)為1,才能將新資料寫入;若要讀取暫存器的資料,可隨時從輸出端讀取。
這種暫存器互相傳送的動作,是程式設計中常用的,在不同的環境下,使用的指令有:這種暫存器互相傳送的動作,是程式設計中常用的,在不同的環境下,使用的指令有: 高階語言 組合語言 CPU的微運算 指令說明 X=Y(Basic語言) LD R3,R1 R3R1 將R1值放入R3 LET X=Y X=Y;(C語言) MOV R9,R3 R9R3 將R3值放入R9
暫存器要讀取或寫入記憶體內的指令或資料 • 暫存器有一項主要的運用,是讀取記憶體內的指令或資料,另外也將CPU的計算結果存入記憶體中;所以暫存器與記憶體的互連,就是要應用在資料對記憶體的存取,這是配合記憶體指令之使用,所要設計的,而相關的記憶體指令,就是記憶體資料的讀出與寫入:
暫存器資料傳送的整合電路 • 將暫存器的互傳資料,與對記憶體的資料存取,及與運算單元的計算,組成一個暫存器資料傳送的整合電路,而這個電路即可執行相關的暫存器指令。
算術邏輯運算單元 算術運算電路 邏輯運算電路 移位電路 比較電路 狀態旗號 數值的擴展
算術邏輯運算單元 • 在中央處理單元中,專門負責資料計算的,為算術邏輯運算單元,這個硬體部份也是在配合程式的指令要求;一般計算的指令,大致分成四類:
一、算術指令(包括加、減、乘、除等運算) 二、邏輯指令(包括反相、及、或等運算) 三、移位指令(包括一般移位、帶進位移位、循環等運算) 四、條件指令(包括大於、等於、小於等運算) 而這些指令的執行,就必須有相關運算的電路。
改良式的全加器(省略一個及閘) • 在信號經過邏輯閘時,會有時間延遲,即輸入信號至邏輯閘,到邏輯閘反應其輸出,中間所要花費的過程時間,此稱為傳遞延遲時間。 • 每個邏輯閘的延遲時間都不相同,而延遲時間當然是愈小愈好。計算是需要時間的,假設每個邏輯閘所要延遲的時間是1t。
減法運算電路(Subtraction Operation Circuit) • 在電腦中,一般是減法是用補數的加法運算方式執行的;譬如8-3=5,用補數加法運算時為8+7=15(7是10-3=7,即3的10補數),15將進位的10刪去,5即是答案。 • 在二進制中1000-0011=0101,實際上是1000+(1100+1)=0101(1100是0011的補數,再將1100+1=1101,故1101是0011的2的補數,而相加的結果有進位,予以刪除)。
減法電路的設計 • 一般A-B,稱A為被減數,而B為減數;在減法運算時,將減數轉成補數做加法運算即A+(-B),以A加上-B計算,而-B就是B值2的補數(補數B再加1),這是將B採用補數的技巧設計。
乘法運算電路(Multiplication Operation Circuit) • 八位元的資料相乘,其結果是十六位元,在電路設計時結果暫存器,是乘數或被乘數暫存器的兩倍大小。 • 乘法電路有三種不同的設計,第一是用累加電路,第二是乘法電路,第三是演算法電路。
乘法器電路 • 乘法電路是直接設計兩數相乘的邏輯電路,在兩數相乘時,乘數的位元逐一與被乘數相乘,這是及閘運算,然後做相加的計算,可以看出乘法電路是及閘與加法器的組合。
乘法器電路的問題 • 乘法器的設計可使乘法計算迅速,但固定電路的設計方式,會造成不同資料大小的相乘,不能適用的問題;譬如四位元乘法器,若是執行八位元、十六位元或三十二位元相乘,在設計上就沒有彈性。可能的做法是設計一個大型乘法器(譬如是六十四位元乘法器),以配合較少位元的相乘動作。
除法運算電路(Division Operation Circuit) • 除法運算的說明,一般採用較大的被除數值,除以普通的除數值;例如11010100/1010,因為假使被除數值與除數值相近,或被除數值較小時,相除結果將會形成帶小數的實數,於此謹討論整數運算電路。
用累減電路做除法運算的設計 • 累減電路,利用減法將被除數不斷的減去除數,直到被除數所剩的值小於除數時,即是餘數,而相減的次數為商值。
除法利用演算法的方式執行 • 如果除法利用演算法的方式執行,就如同手算一般;將被除數與除數放入暫存器中,然後依除數的位數,對被除數做相減動作,如果被除數大於除數值則相減,商值為1;若被除數小於除數則不減,商值為0;每計算完一位,即向右移位,直到整個被除數已相減而小於除數為止,所剩即是餘數。
除數值在執行計萛時,左邊位元有0的時候,必須調整後才能計算。除數值在執行計萛時,左邊位元有0的時候,必須調整後才能計算。 • 第一種是調整除數,其要求是除數的第一個位元必須是1,例如1011010(被除數)/00101(除數),在計算時必須為1011010/101,除數之前的00要消去,否則計算時會佔位數,而造成錯誤運算。
第二種是調整被除數,其要求是依除數的左邊第一個1位元出現前,有幾個0,就在被除數前加幾個0,例如1011010(被除數)/00101(除數),在計算時必須為001011010/00101,被除數前面要加上00才能計算。第二種是調整被除數,其要求是依除數的左邊第一個1位元出現前,有幾個0,就在被除數前加幾個0,例如1011010(被除數)/00101(除數),在計算時必須為001011010/00101,被除數前面要加上00才能計算。
組合式算術運算電路 • 算術電路是由加、減、乘、除四則運算組成的,在ALU設計時可以將這四個電路組合在一起,在執行時選擇所需要的運算電路結果。而這種設計的控制單元,選擇不同的算術指令執行,而一次只能選一種運算結果,卻四種電路都在動作。
分離式算術電路 • 分離式的運算電路,每一種計算可以分開執行,所以不同的運算,可以同時執行。
邏輯運算電路 • 邏輯運算主要是針對二進制的位元運算,一般用於二進制的編碼、解碼及碼的轉換,控制信號的設定,資料的比較、檢查與傳輸的狀態顯示,邏輯電路(布林代數式)的分析與設計,數值的條件改變等等技巧應用。