slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
第四章 PowerPoint Presentation
Download Presentation
第四章

Loading in 2 Seconds...

play fullscreen
1 / 89

第四章 - PowerPoint PPT Presentation


  • 88 Views
  • Uploaded on

第四章. 中央處理單元的運算系統. 本章概要. 暫存器的設計 暫存器的資料傳送 算術邏輯運算單元 實數運算處裡 運算電路的整合. 中央處裡單元的基本架構. 暫存器群 算術邏輯運算單元 控制單元. 中央處理單元 (CPU) 的基本架構. 在電腦中,中央處理單元 (CPU) 是整體運作的 主動元件 ,它控制著輸出入裝置與記憶體的資料傳送,並直接對記憶體做資料或指令的讀取或寫入。. 中央處理單元內部共分成三個部份. 第一部份是暫存器群 (Registers). 通常暫存器分成三類

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '第四章' - iliana-neal


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

第四章

中央處理單元的運算系統

slide2

本章概要

暫存器的設計

暫存器的資料傳送

算術邏輯運算單元

實數運算處裡

運算電路的整合

slide3

中央處裡單元的基本架構

暫存器群

算術邏輯運算單元

控制單元

slide4
中央處理單元(CPU)的基本架構
  • 在電腦中,中央處理單元(CPU)是整體運作的主動元件,它控制著輸出入裝置與記憶體的資料傳送,並直接對記憶體做資料或指令的讀取或寫入。
registers
第一部份是暫存器群(Registers)
  • 通常暫存器分成三類

一是提供放置需要計算的資料,或存入算出結果的資料暫存器(Data Register)。在現行CPU的一次多個指令讀取與執行功能下,是需要多個資料暫存器,同時負責資料的取用與存放;這種多個(大量)資料暫存器的電腦設計,稱為通用暫存器型式的電腦。

slide7
第二是標示記憶體位址的位址暫存器(Address Registers),其為標示所要存取的資料,在記憶體的位址之相關暫存器,如直接讀取記憶體資料所需的位址暫存器(Address Register, AR)、讀取指令在記憶體的位址,所需的程式計數器(Program Counter, PC)、使用堆疊資料的堆疊基底(Stack Base, SB)與堆疊指標(Stack Pointer, SP)。
slide8
以及在記憶體過大,需要二個暫存器來組合位址的分段暫存器(Segment Register)與差值暫存器(Offset Register)等,都是屬於記憶體位址的表示暫存器。
slide9
第三是控制暫存器(Control Register),對於指令的執行或資料的存取所需要的控制;如專門讀取指令,載入控制單元做解碼的指令暫存器(Instruction Register,IR)、表示目前計算結果或系統狀況的狀態暫存器(Status Register);也有些控制單元以微程式(Micro Program)設計,即有控制字暫存器(Control Word Register),直接操作計算與暫存器的執行。
arithmetic and logic operation unit alu
第二部份是算術邏輯運算單元(Arithmetic and Logic operation Unit, ALU)
  • 主要是提供指令所要求的各式運算功能,包括加減乘除四則運算的算術電路,以及NOT、AND、OR、XOR等等邏輯運算的電路,二進制位元的左移位或右移位運算的移位電路,還有處理條件式大於、等於、小於的比較器電路。
control unit cu
第三部份是控制單元(Control Unit, CU)
  • 提供整個硬體電路的時序控制脈波(Timing Control Clock),並解碼指令,以同步控制執行每一個指令的相關動作;譬如暫存器的資料載入或清除、算術邏輯運算單元要做何種運算?CPU對記憶體的讀寫資料控制,以及輸出入裝置對記憶體的大量資料傳輸等等程序動作。
slide12

暫存器的設計

正反器

變數的設定時間

有資料輸入的控制

有非同步控制的暫存器

暫存器的圖示

暫存器檔案

slide13
暫存器的設計
  • 一般的暫存器是由D正反器所設計組合而成,若為十六位元暫存器則由十六個D正反器組成,三十二位元暫存器則由三十二個D正反器組成。
  • 每個正反器共接同一個控制脈波,在前緣觸發時D正反器接受資料,脈波若不是在前緣時,D正反器就不會動作。
slide15
D正反器的前緣觸發問題
  • 如果資料的儲存,單純由D正反器設計,以其控制脈波的前緣觸發,做資料的輸入控制;那每一筆新的資料輸入,就固定在每一個控制脈波的前緣,資料一組一組的隨控制脈波前緣輸入。
slide17
這種隨控制脈波前緣輸入資料的暫存器設計,在實際執行上,就必須配合指令的資料輸入,而隨時改變前緣時間,並不能以固定的頻率做控制脈波。這種隨控制脈波前緣輸入資料的暫存器設計,在實際執行上,就必須配合指令的資料輸入,而隨時改變前緣時間,並不能以固定的頻率做控制脈波。
slide18
有資料輸入控制的暫存器
  • 在平時暫存器未使用時,資料輸入控制為0,輸出值回授為輸入值,使暫存器內之值維持不變;若要有新的值輸入時,資料輸入控制設成1。
  • 系統的控制脈波,仍同步掌握著暫存器輸出入的動作,即是在資料要輸入暫存器時,必須資料輸入控制為1,且在控制脈波的前緣。
  • 這種暫存器的資料輸入,就以資料輸入控制接腳為主,而將系統控制脈波分離。
register file
暫存器檔案(Register File)
  • 這種設計方式的記憶體位址,即代表暫存器編號,暫存器的讀寫,變成記憶體的存取;而每一個位址與暫存器編號的對應,可採用固定對映式,即記憶體位址就是固定為某一暫存器。
  • 另一種即隨機編排式,即隨程式的資料讀入與寫出的順序,臨時編排不同的記憶體位址。
slide21

暫存器的資料傳送

多工器的選擇控制

三態閘的選擇控制

暫存器的計算

暫存器的資料搬移

slide22
暫存器的資料傳送
  • 在CPU內部有許多暫存器,而這些暫存器必須依指令的需要,傳送或儲存資料,有的是暫存器之間互傳資料,

有的是暫存器對運算單元做資料計算,

也有的是暫存器對記憶體做資料存取。

而暫存器的資料輸入時,必須設定資料輸入控制接腳(DI)為1,才能將新資料寫入;若要讀取暫存器的資料,可隨時從輸出端讀取。

slide23
這種暫存器互相傳送的動作,是程式設計中常用的,在不同的環境下,使用的指令有:這種暫存器互相傳送的動作,是程式設計中常用的,在不同的環境下,使用的指令有:

高階語言 組合語言 CPU的微運算 指令說明

X=Y(Basic語言) LD R3,R1 R3R1 將R1值放入R3

LET X=Y

X=Y;(C語言) MOV R9,R3 R9R3 將R3值放入R9

slide24
暫存器要讀取或寫入記憶體內的指令或資料
  • 暫存器有一項主要的運用,是讀取記憶體內的指令或資料,另外也將CPU的計算結果存入記憶體中;所以暫存器與記憶體的互連,就是要應用在資料對記憶體的存取,這是配合記憶體指令之使用,所要設計的,而相關的記憶體指令,就是記憶體資料的讀出與寫入:
slide25
暫存器資料傳送的整合電路
  • 將暫存器的互傳資料,與對記憶體的資料存取,及與運算單元的計算,組成一個暫存器資料傳送的整合電路,而這個電路即可執行相關的暫存器指令。
slide26

算術邏輯運算單元

算術運算電路

邏輯運算電路

移位電路

比較電路

狀態旗號

數值的擴展

slide27
算術邏輯運算單元
  • 在中央處理單元中,專門負責資料計算的,為算術邏輯運算單元,這個硬體部份也是在配合程式的指令要求;一般計算的指令,大致分成四類:
slide28
一、算術指令(包括加、減、乘、除等運算)

二、邏輯指令(包括反相、及、或等運算)

三、移位指令(包括一般移位、帶進位移位、循環等運算)

四、條件指令(包括大於、等於、小於等運算)

而這些指令的執行,就必須有相關運算的電路。

slide30
改良式的全加器(省略一個及閘)
  • 在信號經過邏輯閘時,會有時間延遲,即輸入信號至邏輯閘,到邏輯閘反應其輸出,中間所要花費的過程時間,此稱為傳遞延遲時間。
  • 每個邏輯閘的延遲時間都不相同,而延遲時間當然是愈小愈好。計算是需要時間的,假設每個邏輯閘所要延遲的時間是1t。
subtraction operation circuit
減法運算電路(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的補數,而相加的結果有進位,予以刪除)。
slide32
減法電路的設計
  • 一般A-B,稱A為被減數,而B為減數;在減法運算時,將減數轉成補數做加法運算即A+(-B),以A加上-B計算,而-B就是B值2的補數(補數B再加1),這是將B採用補數的技巧設計。
multiplication operation circuit
乘法運算電路(Multiplication Operation Circuit)
  • 八位元的資料相乘,其結果是十六位元,在電路設計時結果暫存器,是乘數或被乘數暫存器的兩倍大小。
  • 乘法電路有三種不同的設計,第一是用累加電路,第二是乘法電路,第三是演算法電路。
slide35
乘法器電路
  • 乘法電路是直接設計兩數相乘的邏輯電路,在兩數相乘時,乘數的位元逐一與被乘數相乘,這是及閘運算,然後做相加的計算,可以看出乘法電路是及閘與加法器的組合。
slide37
乘法器電路的問題
  • 乘法器的設計可使乘法計算迅速,但固定電路的設計方式,會造成不同資料大小的相乘,不能適用的問題;譬如四位元乘法器,若是執行八位元、十六位元或三十二位元相乘,在設計上就沒有彈性。可能的做法是設計一個大型乘法器(譬如是六十四位元乘法器),以配合較少位元的相乘動作。
division operation circuit
除法運算電路(Division Operation Circuit)
  • 除法運算的說明,一般採用較大的被除數值,除以普通的除數值;例如11010100/1010,因為假使被除數值與除數值相近,或被除數值較小時,相除結果將會形成帶小數的實數,於此謹討論整數運算電路。
slide39
用累減電路做除法運算的設計
  • 累減電路,利用減法將被除數不斷的減去除數,直到被除數所剩的值小於除數時,即是餘數,而相減的次數為商值。
slide41

除法利用演算法的方式執行

  • 如果除法利用演算法的方式執行,就如同手算一般;將被除數與除數放入暫存器中,然後依除數的位數,對被除數做相減動作,如果被除數大於除數值則相減,商值為1;若被除數小於除數則不減,商值為0;每計算完一位,即向右移位,直到整個被除數已相減而小於除數為止,所剩即是餘數。
slide42
除數值在執行計萛時,左邊位元有0的時候,必須調整後才能計算。除數值在執行計萛時,左邊位元有0的時候,必須調整後才能計算。
  • 第一種是調整除數,其要求是除數的第一個位元必須是1,例如1011010(被除數)/00101(除數),在計算時必須為1011010/101,除數之前的00要消去,否則計算時會佔位數,而造成錯誤運算。
slide43
第二種是調整被除數,其要求是依除數的左邊第一個1位元出現前,有幾個0,就在被除數前加幾個0,例如1011010(被除數)/00101(除數),在計算時必須為001011010/00101,被除數前面要加上00才能計算。第二種是調整被除數,其要求是依除數的左邊第一個1位元出現前,有幾個0,就在被除數前加幾個0,例如1011010(被除數)/00101(除數),在計算時必須為001011010/00101,被除數前面要加上00才能計算。
slide46
組合式算術運算電路
  • 算術電路是由加、減、乘、除四則運算組成的,在ALU設計時可以將這四個電路組合在一起,在執行時選擇所需要的運算電路結果。而這種設計的控制單元,選擇不同的算術指令執行,而一次只能選一種運算結果,卻四種電路都在動作。
slide48
分離式算術電路
  • 分離式的運算電路,每一種計算可以分開執行,所以不同的運算,可以同時執行。
slide50
邏輯運算電路
  • 邏輯運算主要是針對二進制的位元運算,一般用於二進制的編碼、解碼及碼的轉換,控制信號的設定,資料的比較、檢查與傳輸的狀態顯示,邏輯電路(布林代數式)的分析與設計,數值的條件改變等等技巧應用。
slide51
七個基本的邏輯閘
  • 反相閘(NOT Gate)
  • 及閘(AND Gate)
  • 反及閘(NAND Gate)
  • 或閘(OR Gate)
  • 反或閘(NOR Gate)
  • 互斥或閘(XOR Gate)
  • 互斥反或閘(NXOR Gate)
slide54
移位電路
  • 暫存器內數值的移位,是指在暫存器內D正反器的二進制值左移或右移,一般用於計數、乘法、除法或資料傳輸等功能。在C語言中有:

A=B<<5; B變數的值向左移五位存入A中

A=B>>2; B變數的值向右移二位存入A中

slide55
而在低階語言中,移位指令一般分成五種:一般移位、帶進位移位、算術移位、循環移位及帶進位循環移位;其進位位元(Carry Bit)是指在加法運算中,最高位元相加後所產生的進位,而帶進位移位與循環移位,都會移動到進位位元。
slide56
一般移位電路
  • 單純暫存器內的位元做左移或右移一位,在低階語言指令為SHL(Shift Logic Left)左移指令,及SHR(Shift Logic Right)右移指令。
slide58
帶進位移位電路
  • 連同進位位元(Carry Bit)與暫存器的位元,一起做左移或右移一位的動作,在低階語言指令為SCL(Shift Carry Left)帶進位左移指令,及SCR(Shift Carry Right) 帶進位右移指令。
slide60
算術移位電路
  • 四位元的暫存器,做左移或右移一位的動作,但有考慮暫存器最左邊的位元,表示數值的正負號;在低階語言指令為SAL(Shift Arithmetic Left)算術左移指令,及SAR(Shift Arithmetic Right)算術右移指令。
slide62
循環移位電路
  • 四位元的暫存器,做左移或右移一位的動作,但有考慮暫存器移出的位元,補回另一邊的空缺位元;在低階語言指令為ROL(Rotate Left)循環左移指令,及ROR(Rotate Right)循環右移指令。
slide64
帶進位循環移位電路
  • 連同進位位元(Carry Bit)與暫存器的位元,一起做左移或右移一位的動作,但有考慮移出的位元,補回另一邊的空缺位元;在低階語言指令為RCL(Rotate Carry Left)帶進位循環左移指令,及RCR(Rotate Carry Right) 帶進位循環右移指令。
slide66
比較電路
  • 電腦的計算中,有一種是比較兩個數值的大小關係,又稱關係運算,即為兩數是相等、大於還是小於的比較,這需要一個比較電路。
  • 一般用於兩數值的關係比較、條件式、檢查暫存器是大於、等於還是小於0等功能。
slide67
在高階語言就是大於(>)、大於等於(>=)、等於(=)、小於等於(<=)、小於(<)以及不等於(<>,=!),六種比較運算;可用於算術計算式中,也可用於判斷指令(IF)與迴圈指令(WHILE)的條件式中。在高階語言就是大於(>)、大於等於(>=)、等於(=)、小於等於(<=)、小於(<)以及不等於(<>,=!),六種比較運算;可用於算術計算式中,也可用於判斷指令(IF)與迴圈指令(WHILE)的條件式中。
slide68
在低階語言時,多用於關係運算式與條件跳躍指令的條件運算,一般分成對運算狀態的條件檢查,例如運算出是結果是否為0?或是檢查某暫存器的值是否為0?或大於某個值?以及兩個暫存器的關係運算等。在低階語言時,多用於關係運算式與條件跳躍指令的條件運算,一般分成對運算狀態的條件檢查,例如運算出是結果是否為0?或是檢查某暫存器的值是否為0?或大於某個值?以及兩個暫存器的關係運算等。
slide69
相等與不相等電路
  • 一般用於檢查兩個暫存器內的值是否相等,在低階語言指令為EQ(Equal)等於指令與NE(Not Equal)不等於指令,其電路利用互斥反或閘(相等閘)檢查兩值是否相同。
slide71
大於與小於等於電路
  • 一般用於檢查某暫存器內的值,是否大於或小於等於另一暫存器內向值;在低階語言指令為GT(Great)大於指令與LE(Little or Equal)小於等於指令。
slide73
小於與大於等於電路
  • 若檢查某暫存器內的值,是否小於或大於等於另一暫存器內向值,則可將大於與小於等於電路的輸入值更換即可;在低階語言指令為LT(Little)小於指令與GE(Great or Equal)大於等於指令。
slide75
完整的比較運算電路
  • 將相等與不相等、大於與小於等於以及小於與大於等於,三組電路合起來,就形成完整的比較運算電路,判斷A與B值的關係;在程式設計中,除了兩變數的關係運算外,也會有某變數與常數的關係運算;甚至某變數與0的關係運算。
slide77
數值的擴展
  • 在高階語言中有將整數變數(16位元),變成長整數變數(32位元);而低階語言中,有將8位元暫存器值轉成16位元暫存器值(Convert Byte into Word,CBW指令),以及16位元暫存器值轉成32位元暫存器值(Convert Word into Doubleword,CWD指令) 。
  • 這種數值擴展是以原值的正負號位元(最左邊的位元),做擴展位元,用以填滿增加的暫存器部份。
slide81

運算電路的整合

組合式算術邏輯運算電路

分離式算術邏輯運算電路

運算指令

slide82
運算電路的整合
  • 運算電路是配合指令的要求所設計的,在指令的執行時必須有相關的電路負責處理,而運算電路內有整數的算術電路、實數的算術電路、邏輯電路、移位電路、擴展電路以及比較電路,由這些電路組成算術邏輯運算單元。
slide83
運算指令讀入控制單元後,會解碼以瞭解指令需要什麼計算,控制單元會將暫存器內的資料導入解多工器,並控制資料進入所需的運算電路,最後控制多工器將結果傳回暫存器。運算指令讀入控制單元後,會解碼以瞭解指令需要什麼計算,控制單元會將暫存器內的資料導入解多工器,並控制資料進入所需的運算電路,最後控制多工器將結果傳回暫存器。
  • 狀態暫存器是紀錄算術指令在執行時,所產生的進位、溢位、零值及正負值情況,同時也記載比較兩值的大小關係。
slide85
功能式的運算單元設計
  • 內部運算電路上各自獨立,每個運算電路擁有其資料輸入路徑、輸入暫存器與結果寫出的路徑;這樣就可同時執行多個不同運算的指令。
  • CPU會從記憶體先讀入大量指令,至指令緩衝區,然後分配器將不同運算的指令,交給其運算電路執行;而每個運算電路,隨時將計算的結果寫入暫存器,而暫存器的資料也提供給所需要的指令讀取使用。
slide88
運算電路與指令表
  • 一般算術邏輯運算單元(ALU),就是所有運算電路的總稱,在內部設計時,即需考慮各種運算指令的要求;而不同的運算,在控制上有不同的指令碼與組合語言的描述。