中央處理器(2-4)數(shù)據(jù)通路結(jié)構(gòu)描述.ppt
《中央處理器(2-4)數(shù)據(jù)通路結(jié)構(gòu)描述.ppt》由會員分享,可在線閱讀,更多相關(guān)《中央處理器(2-4)數(shù)據(jù)通路結(jié)構(gòu)描述.ppt(102頁珍藏版)》請在裝配圖網(wǎng)上搜索。
Datapaths 1 指令周期 算術(shù)邏輯單元 狀態(tài)條件寄存器 程序計數(shù)器PC 地址寄存器AR 地址總線ABUS 數(shù)據(jù)總線DBUS 累加器AC 緩沖寄存器DR ALU 指令寄存器IR 指令譯碼器 操作控制器時序產(chǎn)生器 時鐘 狀態(tài)反饋 取指控制 執(zhí)行控制 c c c c 1 20 21 22 23 24 30 40 CLA ADD30 STA40 NOP JMP21 000006 000024 JMP21 JMP21 000024 000021 000006 000006 000025 000021 Datapaths 2 具體步驟如下 1 根據(jù)程序計數(shù)器PC的內(nèi)容從內(nèi)存中取出一條指令 放置于指令寄存器IR中 2 分析IR中的操作碼 決定應(yīng)執(zhí)行的操作 3 根據(jù)IR的地址碼取出參加運算的操作數(shù) 4 對操作數(shù)進行運算 5 根據(jù)IR的地址碼把運算結(jié)果存入指定地址 6 本條指令執(zhí)行完畢 修改PC內(nèi)容決定下一條指令所在的地址 Datapaths 3 時序與控制方式控制器在時鐘脈沖驅(qū)動下產(chǎn)生節(jié)拍 一般情況下一個節(jié)拍對應(yīng)于一個時鐘脈沖 如下圖所示 圖中用step i代表第i個節(jié)拍 其寬度與時鐘周期相等 節(jié)拍電位和其他信號相互組合用于控制操作 引導(dǎo)數(shù)據(jù)在數(shù)據(jù)通路中流動 而在節(jié)拍的末尾處則由時鐘脈沖把運算結(jié)果 或中間結(jié)果 打入寄存器 Datapaths 4 同步控制方式 Datapaths 5 有限狀態(tài)機 FiniteStateMachine FSM Datapaths 6 結(jié)構(gòu)描述 Datapaths 7 組合邏輯控制器 Datapaths 8 Datapaths 9 Datapaths 10 Datapaths 11 CPU設(shè)計 CPU的設(shè)計可分為三部分 數(shù)據(jù)通路datapath實現(xiàn)真正的數(shù)據(jù)處理 指令集instructionset實現(xiàn)程序和CPU之間的接口 控制器controlunit使用程序員的指令告訴數(shù)據(jù)通路做什么 數(shù)據(jù)通路 ALU 寄存器 可讀寫的內(nèi)存 Datapaths 12 CPU 處理器是一個很大規(guī)模的時序電路 寄存器保存值 組成系統(tǒng)的狀態(tài)ALU對存儲在寄存器中的數(shù)據(jù) 進行數(shù)據(jù)處理 結(jié)構(gòu)描述 Datapaths 13 寄存器傳送 本質(zhì)上 處理器只是在寄存器間傳送數(shù)據(jù) 可能在ALU中做一些計算 引入寄存器傳送語言 對象為寄存器 基本的操作為傳送 將數(shù)據(jù)從一個寄存器復(fù)制到另一個寄存器 在傳送中 利用ALU做運算 Datapaths 14 用兩個字符表示寄存器 如R0 R1 DR 或SA 箭頭表示數(shù)據(jù)傳送 如在一個時鐘周期內(nèi)復(fù)制源寄存器R2到目標寄存器R1 R1 R2條件傳送 僅當條件滿足時進行傳送如K 1 傳送R3至R2表示為K 1 R2 R3在同一時鐘周期內(nèi)進行的多個傳送 R1 R2 K R2 R3 寄存器傳送語言 Datapaths 15 表示算術(shù)操作 R1 R2 R3R3 R1 1表示邏輯操作 R2 R1 R2bitwiseANDR3 R0 R1bitwiseOR表示移位 R2 slR1leftshiftR2 srR1rightshift Registertransferoperations Datapaths 16 寄存器的方框圖 如上表示一個n bit的寄存器 數(shù)據(jù) 當Load 1 數(shù)據(jù)輸入 當Load 0 寄存器保存當前值 寄存器的輸出總是有效 省去時鐘信號 Datapaths 17 寄存器文件 寄存器文件 當代處理器通常將多個寄存器組織到一起稱為registerfile 與RAM類似 寄存器用地址區(qū)分 右圖為2kxn的寄存器文件 有2k個寄存器 寄存器的地址線為kbits長 每個寄存器存放一個n bit的字 數(shù)據(jù)輸入輸出為nbits寬 Datapaths 18 訪問寄存器文件 假設(shè) 同時給出AA和BA 則數(shù)據(jù)同時出現(xiàn)在A和B輸出 當WR 1 利用DA和D寫入寄存器 方框圖中省去了時鐘信號 任何時候可以讀出 但只在時鐘的上升沿寫入 n n n k k k Ddata Write Daddress Aaddress Baddress Adata Bdata RegisterFile D WR DA AA A B BA Datapaths 19 寄存器文件的內(nèi)部 4個n位的寄存器文件 Datapaths 20 ALU ALU的方框圖 A B是2個n bit的數(shù)值輸入 FS是m bit的功能選擇碼 可表示2m個功能 F為n bit的計算結(jié)果 狀態(tài)位表示對應(yīng)當前輸出F的附加狀態(tài) V 1溢出 C進位 N 1結(jié)果為負 Z 1結(jié)果為0 Datapaths 21 ALU的功能 功能選擇碼為5bits長定義15種不同的功能 Datapaths 22 第1個數(shù)據(jù)通路 最基本的數(shù)據(jù)通路 ALU的2個輸入來自于寄存器文件 ALU計算 結(jié)果存回寄存器 WR DA AA BA FS為控制信號 決定數(shù)據(jù)通路的具體動作 如使用哪個寄存器及執(zhí)行何種運算 Datapaths 23 R0 R1 R3AA 01且BA 11 R1給Adata R3給Bdata ALU功能選擇碼為FS 00010 A B DA 00且WR 1 在下一個時鐘的上升沿 ALU結(jié)果 R1 R3 存入R0 Ddata Write Daddress Aaddress Baddress Adata Bdata RegisterFile WR DA AA BA A B ALU F Z N C V FS FS 00010 01 11 00 1 Datapaths 24 Twoquestions 需要更多的存儲單元 誰來決定讀寫哪個寄存器及執(zhí)行何種ALU功能 Datapaths 25 訪問內(nèi)存 在數(shù)據(jù)通路中加入RAM 寫RAM 需給出地址ADRS和數(shù)據(jù)DATA 分別取自寄存器的Adata 和Bdata當MW 1時寫入RAM Ddata Write Daddress Aaddress Baddress Adata Bdata RegisterFile WR DA AA BA A B ALU F Z N C V FS FS MD 1 Datapaths 26 讀RAM 讀RAM Adata提供地址 MW 0結(jié)果存入寄存器 Ddata有2個來源ALU或RAM 多路選擇器MD選擇數(shù)據(jù)源 當MD 0 ALU輸出存入寄存器 當MD 1 RAM輸出存入寄存器 Ddata Write Daddress Aaddress Baddress Adata Bdata RegisterFile WR DA AA BA A B ALU F Z N C V FS RAM ADRS DATA CS WR OUT MW 5V n n FS MD 0 Datapaths 27 數(shù)據(jù)可在內(nèi)存與寄存器文件之間傳送 ALU不能直接訪問內(nèi)存 內(nèi)存的容量受寄存器的限制 對于字長為n bit的寄存器 只能使用2nxn的內(nèi)存 假設(shè)RAM與CPU時鐘一樣快 Datapaths 28 地址為X的內(nèi)存單元的內(nèi)容可表示為M X 例如 RAM中的第1個字為M 0 若R1中包含內(nèi)存地址 則M R1 表示該單元的內(nèi)容 Datapaths 29 寄存器傳送 R3 M R0 R3 R3 1M R0 R3地址為R0的RAM的數(shù)據(jù) 1 ALU只能對寄存器運算 RAM必須先裝入寄存器 運算后再存回RAM 假設(shè)R0包含內(nèi)存單元的地址 數(shù)據(jù)通路如何完成該操作 Datapaths 30 R3 M R0 AA 00 讀R0 R0作為RAM的地址 M R0 出現(xiàn)在RAM的OUT MD 1 RAM輸出送到寄存器 DA 11且WR 1 結(jié)果存入R3MW 0 防止意外寫入RAM 沒有ALU FS 和BA 1 11 00 1 0 Ddata Write Daddress Aaddress Baddress Adata Bdata RegisterFile WR DA AA BA A B ALU F Z N C V FS RAM ADRS DATA CS WR OUT MW 5V n n FS n MD Datapaths 31 R3 R3 1 AA 11 R3送入ALU的A輸入端 FS 00001 實現(xiàn)A 1 R3 1出現(xiàn)在ALU輸出端F MD 0 ALU輸出送回寄存器 DA 11且WR 1結(jié)果寫回到R3MW 0 避免意外寫入內(nèi)存沒有使用BA Ddata Write Daddress Aaddress Baddress Adata Bdata RegisterFile WR DA AA BA A B ALU F Z N C V FS n QD1 D0 S RAM ADRS DATA CS WR OUT MW 5V n FS MD 1 11 11 0 0 00001 Datapaths 32 M R0 R3 將R3存回RAM中 其地址為R0 AA 00且BA 11 R0給ADRS R3給DATA MW 1 內(nèi)存寫 WR 0 無需寫寄存器 MD和DA沒有用 不使用ALU 忽略FS Ddata Write Daddress Aaddress Baddress Adata Bdata RegisterFile WR DA AA BA A B ALU F Z N C V FS RAM ADRS DATA CS WR OUT MW 5V n n FS MD 0 00 1 11 Datapaths 33 加入常量 加入常量 增加控制信號MB 這樣可以用任意值初始化寄存器和內(nèi)存 MD SD1D0Q Constant MB Datapaths 34 Controlunits 數(shù)據(jù)通路的控制信號不同將執(zhí)行不同的操作 誰提供控制信號 在真實的計算機中 數(shù)據(jù)通路的行為是由裝入且正在執(zhí)行的程序決定的 控制器controlunit負責依據(jù)程序代碼為數(shù)據(jù)通路產(chǎn)生正確的控制信號 Datapaths 35 小結(jié) 數(shù)據(jù)通路是處理器的一部分 完成真正的計算 基本元件為ALU 寄存器文件和內(nèi)存 ALU完成計算 寄存器文件和內(nèi)存提供對ALU的操作數(shù)和結(jié)果的存儲 不同的控制信號控制著數(shù)據(jù)通路的行為 Datapaths 36 Instructionsetarchitectures指令集體系結(jié)構(gòu) 數(shù)據(jù)通路最終由程序員控制 Datapaths 37 編程與CPUs 用高級語言如C 必須編譯成可執(zhí)行程序 可執(zhí)行程序是面向CPU的機器語言 machinelanguage 程序 可裝入內(nèi)存由處理器執(zhí)行 機器語言是軟硬件間的接口interface 討論虛線以下的內(nèi)容 Datapaths 38 高級語言 High levellanguages提供很多有用的編程結(jié)構(gòu) For while loopsIf then else函數(shù)和過程變量和數(shù)組許多語言提供一些很有用的安全性質(zhì) 靜態(tài)和動態(tài)類型檢查垃圾收集高級語言相對來說是可移植的 理論上你可以編寫一個高級語言程序 然后在不同的處理器上運行 當與低級語言比較后 你才能體會到高級語言的 高級 Datapaths 39 低級語言 每個CPU有自己的低級指令集instructionset 即機器語言 反映了CPU s的設(shè)計 這也意味著人類很難直接使用 表現(xiàn)在 控制流限于 jump 和 branch 必須以此為基礎(chǔ)構(gòu)造loops和conditionals 對函數(shù)和過程的支持很有限 內(nèi)存尋址方式必須明確顯式指出 而不能簡單地聲明變量然后使用它們 很少提供錯誤檢查 很難讓機器語言程序在不同的處理器上運行 Datapaths 40 匯編語言與機器語言 機器語言是二進制位串 人們使用assemblylanguage 加入助記符 助記符與機器指令有一對一的關(guān)系 匯編程序到機器程序的轉(zhuǎn)換容易 Datapaths 41 數(shù)據(jù)操作類指令 對應(yīng)于ALU的運算加法類似于高級語言中的R0 R1 R2操作數(shù)為寄存器 Datapaths 42 NOTR0 R1R0 R1 ADDR3 R3 1R3 R3 1SUBR1 R2 5R1 R2 5NOT只有一個操作數(shù) 表示常數(shù) Datapaths 43 與數(shù)據(jù)通路的關(guān)系 指令反映了數(shù)據(jù)通路的設(shè)計 每條指令最多有兩個數(shù)據(jù)源 因為ALU只有兩個輸入 兩個數(shù)據(jù)源可以是兩個寄存器 也可以一個是寄存器 一個是常量 復(fù)雜的操作 如 R0 R1 R2 3必須由多條指令完成 指令只有一個目的操作數(shù) 還必須是寄存器類型 Datapaths 44 RAM ALU能夠直接訪問的是寄存器文件 必須把RAM的內(nèi)容復(fù)制到寄存文件后 才能作為ALU的操作數(shù) ALU的結(jié)果必須經(jīng)過寄存器才能存入內(nèi)存 必須依賴于數(shù)據(jù)傳送類指令將數(shù)據(jù)在內(nèi)存與寄存器文件之間傳送 Datapaths 45 從RAM中傳送數(shù)據(jù)到寄存器 load指令從內(nèi)存中傳送數(shù)據(jù)到寄存器 LDR1 R3 R1 M R3 RAM的地址來自于寄存器 括號表示R3中存放的是一個內(nèi)存單元的地址 Ddata Write Daddress Aaddress Baddress Adata Bdata RegisterFile WR DA AA BA RAM ADRS DATA CS WR OUT MW 5V MD SD1D0Q Constant MB Datapaths 46 將寄存器中的數(shù)據(jù)存入RAM store指令將寄存器中的內(nèi)容傳送到內(nèi)存RAM ST R3 R1M R3 R1RAM地址存放在R3中 寫入RAM的數(shù)據(jù)存放在R1中 MD SD1D0Q Constant MB Datapaths 47 給寄存器賦值 初始化寄存器LDR1 0R1 0ALU FS 10000 傳送B 操作 Ddata Write Daddress Aaddress Baddress Adata Bdata RegisterFile WR DA AA BA RAM ADRS DATA CS WR OUT MW 5V MD SD1D0Q Constant MB Datapaths 48 常量存入內(nèi)存 初始化內(nèi)存 ST R3 0M R3 0 MD SD1D0Q Constant MB Datapaths 49 和 和 表明了不同的尋址方式 尋址方式?jīng)Q定了如何尋找操作數(shù) 數(shù)據(jù)通路的設(shè)計決定了可以采用何種尋址方式 數(shù)據(jù)通路不支持第二個例子的尋址方式 Whynot Datapaths 50 示例 M 1000 M 1000 1等價的匯編語言 需多條指令 必須先將內(nèi)存地址1000裝入寄存器 然后通過寄存器訪問內(nèi)存 受數(shù)據(jù)通路的限制 ALU只能以寄存器的常量為操作數(shù) CISC與RISC Datapaths 51 程序由指令組成 并存于內(nèi)存 每條指令有一個地址 指令順序存放 程序計數(shù)器programcounter PC 跟蹤當前指令的地址 通常 PC 1 有時需要改變程序串行執(zhí)行的軌跡 需要控制流指令controlflowinstructions 控制流指令 Datapaths 52 jump指令總是修改PC的值 操作數(shù)表示應(yīng)如何修改 通常用標號labels表示真正的地址 例如 例如 重復(fù) LDR1 10LDR2 3JMPLKLDR1 20 這兩條指令被跳過LDR2 4 LADDR3 R3 R2ST R1 R3 Jumps LDR1 0FADDR1 R1 1JMPF 無限循環(huán) Datapaths 53 分支指令 branch指令可能修改PC的值 依賴于條件是否成立 LDR1 10LDR2 3BZR4 L JumptoLifR4 0KLDR1 20 這兩條指令可能被跳過 依賴于R4LDR2 4 LADDR3 R3 R2ST R1 R3 Datapaths 54 分支指令 Branch條件通常根據(jù)ALU的狀態(tài) 其它分支條件 如大于 等于 小于 可以從ALU運算及以上條件中得出 Datapaths 55 jumps和branches比起高級語言的控制流結(jié)構(gòu)簡單得多Conditionalstatements Loops 高級語言的控制流 Datapaths 56 用branch指令轉(zhuǎn)換高級語言的條件語句 Cif then語句的轉(zhuǎn)換 Datapaths 57 Cforloop的轉(zhuǎn)換 用BGTbranch轉(zhuǎn)換 Datapaths 58 小結(jié) 機器語言是軟硬件的接口 有三類主要的指令 數(shù)據(jù)操作類指令數(shù)據(jù)傳送類指令控制流指令指令集ISA高度依賴于CPU的設(shè)計 Datapaths 59 處理器結(jié)構(gòu) 控制器controlunit連接程序和數(shù)據(jù)通路 controlunit將匯編語言的指令轉(zhuǎn)換成數(shù)據(jù)通路所需的信號controlwords包括WR DA AA BA MB FS MW MD 以一種正確的順序執(zhí)行程序 為數(shù)據(jù)通路提供持續(xù)的輸入 數(shù)據(jù)通路也某些信息返回給控制器 例如ALU狀態(tài)位V C N Z branch指令將檢測這些狀態(tài)信息 以修改控制流 ControlUnit Datapath Controlsignals Statussignals Program Datapaths 60 從匯編語言到機器語言 machinelanguage 處理器支持的匯編語言的二進制表示 上述CPU支持三類指令 它們有不同的操作數(shù) 因而需要不同的表示形式 Registerformat需要兩個源寄存器做操作數(shù) Immediateformat需要一個源寄存器和一個常量操作數(shù) Jumpandbranchformat需要一個源寄存器和一個常量地址 三種不同格式的指令使它們的二進制表示形式盡量類似 有利于使控制器的硬件設(shè)計簡單 假設(shè)指令長為16位 Datapaths 61 Registerformat 例如 ADDR1 R2 R3指令格式 7 bitopcode操作碼 指定操作 例如ADD 3 bitdestinationregister目的操作數(shù)DR 兩個3 bitsourceregisters源操作數(shù)SA和SB 159865320 Datapaths 62 Immediateformat 例如 ADDR1 R2 3指令格式 7 bitopcode 3 bit目的寄存器DR 3 bit源寄存器SA 3 bitconstantoperand立即數(shù)OP 159865320 Datapaths 63 使用PC相對地址表示jumps和branches 即操作數(shù)表示的轉(zhuǎn)移地址是相對于當前指令的 假設(shè)每條指令占一個內(nèi)存字長 操作數(shù)為有符號數(shù) jump和branch可能向前或向后轉(zhuǎn)移 向后轉(zhuǎn)移可用于實現(xiàn)循環(huán) 相對于PC的jumps和branches Datapaths 64 Jump和branchformat 例如 BZR3 24JMP18指令格式 7 bit操作碼 3 bit源寄存器SA表示轉(zhuǎn)移條件 6 bitaddressfield 地址域AD 保存jump或branch的偏移量 159865320 Datapaths 65 地址域AD AD被視為6 bit有符號數(shù) 轉(zhuǎn)移范圍為 25 1 25 AD分成兩部分 以使SA在三種不同格式中占有同樣的位置 159865320 Datapaths 66 指令格式的一致性 不同類型指令的格式類似 Opcode位置相同 bits15 9 DR位置相同 SA位置相同 159865320 Datapaths 67 指令格式和數(shù)據(jù)通路 指令格式與數(shù)據(jù)通路是密切相關(guān)的 由于寄存器地址 DR SA SB 是三位長 指令集只能支持8個寄存器常量OP3位長 如果ALU的I O的數(shù)據(jù)寬度超過3位 常量在送入ALU前需進行符號擴展 顯然 支持更多的寄存器和更大的常量將增加機器語言指令的長度 159865320 Datapaths 68 組織指令 如何選擇操作碼 通常 類似 的指令應(yīng)該選擇類似的操作碼 以簡化控制器硬件的設(shè)計 指令分成八類 每類具有類似的數(shù)據(jù)通路控制信號 Datapaths 69 Registerformat的ALU操作 ADDR1 R2 R3所有的registerformatALU操作需要以下相同的控制信號 MB 0 因為操作數(shù)來自于寄存器文件 MD 0且WR 1 因為需將結(jié)果寫回寄存器 MW 0 因為無需修改RAM WR1 Datapaths 70 內(nèi)存寫操作 ST R0 R1所有的內(nèi)存寫操作需要以下相同的控制信號 MB 0 因為數(shù)據(jù)源是寄存器文件 MD X且WR 0 因為無需修改寄存器 MW 1 更新RAM WR0 Datapaths 71 挑選操作碼 指令分成八類 同類型的指令應(yīng)具有類似的操作碼 同類型指令操作碼的bits15 13高三位相同 Datapaths 72 ALU與shiftinstructions 對于ALU和shift操作 用操作碼的bits12 9表示ALU的功能選擇碼FS3 FS0 例如 基于寄存器操作的XOR指令 其操作碼0001100 高三位表示000表示是基于寄存器的ALU指令 1100表示是ALUXOR操作 立即數(shù)移位指令的操作碼1011000 101表示是立即數(shù)移位操作 1000表示為左移位 Datapaths 73 Branch指令 實現(xiàn)八種不同條件的轉(zhuǎn)移指令 操作碼的位11 9表示轉(zhuǎn)移條件 bit12不用 例如 為0時轉(zhuǎn)移指令BZ的操作碼為110 x011 高3位110表示是轉(zhuǎn)移指令 011表明為0時轉(zhuǎn)移 Datapaths 74 操作碼示例 指令集中的部分指令及其操作碼 某些操作碼的部分位沒有使用 可用于指令集在未來的擴展 如增加新指令或新的尋址方式 Datapaths 75 匯編指令到機器碼的轉(zhuǎn)換 bits8 0取決于指令格式 Datapaths 76 小結(jié) 指令集到機器語言的轉(zhuǎn)換 不同的指令有不同的操作數(shù)和格式 盡量一致的格式有利于簡化硬件的設(shè)計 同類型的指令盡量采用相似的操作碼 指令的二進制編碼與數(shù)據(jù)通路密切相關(guān) 例如指令的長度限制了能夠訪問的寄存器的數(shù)目 一個關(guān)于如何定義機器語言的例子 Datapaths 77 Controlunits 控制器controlunit將指令的二進制代碼轉(zhuǎn)換成數(shù)據(jù)通路需要的控制信號 Datapaths 78 數(shù)據(jù)通路 WR 1寫入寄存器 DA寫入寄存器的地址 AA和BA選擇源寄存器 MB選擇寄存器或常量 FS選擇ALU的功能 MW 1寫入內(nèi)存 MD選擇ALU的結(jié)果或RAM輸出 V C N Z狀態(tài)位 Datapaths 79 指令格式review 三種指令格式 指令16位長 7位操作碼 9位操作數(shù) 指令的高3位表示指令的類型 159865320 Datapaths 80 處理器結(jié)構(gòu) 控制器controlunit連接程序和數(shù)據(jù)通路 controlunit將匯編語言的指令轉(zhuǎn)換成數(shù)據(jù)通路所需的信號controlwords包括WR DA AA BA MB FS MW MD 以一種正確的順序執(zhí)行程序 為數(shù)據(jù)通路提供持續(xù)的輸入 數(shù)據(jù)通路也某些信息返回給控制器 例如ALU狀態(tài)位V C N Z branchinstructions將檢測這些狀態(tài)信息 以修改控制流 ControlUnit Datapath Controlsignals Statussignals Program Datapaths 81 程序放在哪兒 哈佛結(jié)構(gòu)Harvardarchitecture 包含兩種內(nèi)存 指令存儲器instructionmemory存放程序 數(shù)據(jù)存儲器datamemory用于計算 存放數(shù)據(jù) 好處是對于指令的讀和對數(shù)據(jù)的讀寫可以在同一時鐘周期進行 省略指令RAM的WR和DATA輸入信號 當代CPU的Caches通常采用類似的Harvardarchitecture 即存放程序也存放數(shù)據(jù)的內(nèi)存結(jié)構(gòu) 稱為VonNeumannarchitecture Datapaths 82 程序計數(shù)器Programcounter 程序計數(shù)器programcounter即PC用于尋址指令內(nèi)存 跟蹤當前執(zhí)行指令 每個時鐘周期 計數(shù)器完成下列工作之一 若Load 0 PC 1 指向下一條指令 若Load 1 PC更新為Data DATA實際為jump或branch指令給定的轉(zhuǎn)移地址 ADRSInstructionRAMOUT PC Load Data Datapaths 83 指令譯碼器 instructiondecoder是一個組合電路 輸入為機器語言 輸出為數(shù)據(jù)通路的控制信號 tothedatapath Datapaths 84 Jumps和branches 轉(zhuǎn)移控制單元branchcontrolunit決定PC的下一個值 對于jumps PC裝入指令中給出目標地址 對于branch指令 當相應(yīng)的狀態(tài)位滿足條件時 PC裝入指令中的目標地址 對于其它指令 PC 1 Datapaths 85 控制器的基本結(jié)構(gòu) 在每個時鐘周期 1 從指令內(nèi)存中讀入指令 2 指令譯碼器產(chǎn)生對應(yīng)該指令數(shù)據(jù)通路所需的控制字 3 數(shù)據(jù)通路的寄存器讀入ALU或數(shù)據(jù)內(nèi)存 4 ALU或RAM的輸出寫回到寄存器 5 修改PC PC 1或依據(jù)branches或jumps指令裝入新值 Datapaths 86 processor ControlUnit Datapath Datapaths 87 實現(xiàn)指令譯碼器 如何構(gòu)造指令譯碼器 instructiondecoder是一個組合電路 輸入為機器語言16 bit長的二進制指令 輸出為數(shù)據(jù)通路的控制信號 譯碼器的輸出稱為控制字 包括 WR DA AA BA MD FS MW MB Datapaths 88 MB MD WR和MW 不同類型指令的MB MD WR和MW信號 Datapaths 89 八類指令 表中 可看出 MW 1僅當內(nèi)存寫入時 MB 1僅對立即數(shù)指令有效 MD無用 當WR 0時 Jumps和branches指令即不修改寄存器 也不修改內(nèi)存 Datapaths 90 生成MB MD WR MW信號 MB I15MD I14WR I14 I15 I13MW I15 I14I13 Datapaths 91 生成FS信號 例如 XOR的操作碼0001100 000表示ALU指令 1100表示XOR功能 根據(jù)對操作碼的定義 ALU sFS的控制信號可以直接取自于指令的操作碼 Datapaths 92 branch指令的FS 對于loads stores和jumps等不包含ALU運算的指令 FS無關(guān)緊要 但對于branch條件轉(zhuǎn)移等依賴于ALU狀態(tài)的指令 需要考慮FS例如 BZR3 24R3必須經(jīng)過ALU Z必須正確設(shè)置 ALU需選擇功能 G A FS 00000或00111 Datapaths 93 生成DA AA BA DA AAandBA直接取自16 bit長二進制指令 bits8 6為目的寄存器 DA Bits5 3為第1個源寄存器AA Bits2 0為第2個源寄存器BA Datapaths 94 無關(guān)條件 對于immediate format指令 bits2 0保存立即數(shù) 而不是第2個源寄存器 然而 立即數(shù)指令只使用1個源源寄存器 所以BA無關(guān) 同樣 jump和branch指令即不使用目的寄存器 也不使用第2個源寄存器 所以 DA2DA1DA0 I8I7I6AA2AA1AA0 I5I4I3BA2BA1BA0 I2I1I0 Datapaths 95 Branchcontrolunit Branchcontrol的輸入信號 PL JB BC AD為譯碼器的輸出信號 包含了當前指令相關(guān)的信息狀態(tài)位V C N Z 當前的PC值Branchcontrol的輸出信號 Load裝入信號PC 當Load 1 目標地址信號targetaddress Datapaths 96 Branchcontrolunit的輸入信號 譯碼器輸出 PL JB表明指令類型 BC編碼轉(zhuǎn)移條件AD表示目標地址 Datapaths 97 生成PL和JB 指令譯碼器根據(jù)操作碼生成PL和JB信號 PL I15I14JB I13 Datapaths 98 生成BC和AD BC2BC1BC0 I11I10I9AD5AD4AD3AD2AD1AD0 I8I7I6I2I1I0 Datapaths 99 Jumps 若PL 1且JB 1 當前指令必為jump 將jump的偏移量 offset AD 與當前PC相加 再存回PC branchcontrolunit應(yīng)包含一個加法器 計算目標地址 AD為有符號數(shù) 實現(xiàn)雙向跳轉(zhuǎn) Datapaths 100 Branches 如果PL 1且JB 0 當前指令必為條件轉(zhuǎn)移指令 branchcontrolunit首先決定是否實現(xiàn)轉(zhuǎn)移 檢查轉(zhuǎn)移類型即BC和狀態(tài)位VCNZ 例如當BC 011且Z 1 則轉(zhuǎn)移條件為真 應(yīng)當實現(xiàn)轉(zhuǎn)移 然后 branchcontrolunit設(shè)置PC值 如果轉(zhuǎn)移為真 將AD與PC相加 與jumps一樣 否則PC 1 順序執(zhí)行 Datapaths 101 小結(jié) 控制器 PC指向指令存儲器 指令譯碼器根據(jù)指令生成數(shù)據(jù)通路的控制信號 轉(zhuǎn)移控制單元處理指令執(zhí)行的順序 控制器的實現(xiàn)依賴于指令集的結(jié)構(gòu)和數(shù)據(jù)通路仔細選擇操作碼和指令格式 可簡化控制器的設(shè)計 Datapaths 102 組合邏輯控制器- 1.請仔細閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認領(lǐng)!既往收益都歸您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 中央處理器 數(shù)據(jù) 通路 結(jié)構(gòu) 描述
鏈接地址:http://www.820124.com/p-10991265.html