計算機組成與實現(xiàn) 課件 第8、9章-輸入輸出-集成MIPS微系統(tǒng)_第1頁
計算機組成與實現(xiàn) 課件 第8、9章-輸入輸出-集成MIPS微系統(tǒng)_第2頁
計算機組成與實現(xiàn) 課件 第8、9章-輸入輸出-集成MIPS微系統(tǒng)_第3頁
計算機組成與實現(xiàn) 課件 第8、9章-輸入輸出-集成MIPS微系統(tǒng)_第4頁
計算機組成與實現(xiàn) 課件 第8、9章-輸入輸出-集成MIPS微系統(tǒng)_第5頁
已閱讀5頁,還剩175頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

輸入輸出計算機組成與實現(xiàn)目錄典型的輸入輸出系統(tǒng)總線I/O接口基本功能與結(jié)構(gòu)程序訪問設(shè)備PCI總線概述P&P的原理中斷3種數(shù)據(jù)傳輸方式異常計算機內(nèi)部結(jié)構(gòu)CPU內(nèi)存控制器(MC)集成顯卡系統(tǒng)芯片(主板芯片)SATA、音頻PCI-E/PCI總線控制器32位PCI總線USB2.0/3.0串口/并口定時器、中斷控制器網(wǎng)卡芯片(主板芯片)串口(控制器)并口(控制器)USB(控制器)DDR3DDR3系統(tǒng)芯片PCI、PCI-E顯卡音頻SATA千兆顯卡設(shè)備:信息傳輸?shù)耐ǖ繡PU:信息處理內(nèi)存:程序/數(shù)據(jù)設(shè)備:信息交換的通道信息從設(shè)備輸入信息通過設(shè)備輸出輸入設(shè)備鼠標、鍵盤、手寫筆輸出設(shè)備顯示器、打印機輸入輸出設(shè)備硬盤、網(wǎng)卡串口(控制器)并口(控制器)USB(控制器)DDR3DDR3系統(tǒng)芯片PCI、PCI-E顯卡音頻SATA千兆顯卡目錄典型的輸入輸出系統(tǒng)總線I/O接口基本功能與結(jié)構(gòu)程序訪問設(shè)備PCI總線概述P&P的原理中斷3種數(shù)據(jù)傳輸方式異常什么是總線?共享的信息通道一組連接各個部件的導線構(gòu)造大型復雜計算機系統(tǒng)的基本方法總線的優(yōu)點靈活功能易于增加/撤出設(shè)備符合標準的設(shè)備可以在不同計算機上互換低成本只需要一組導線主存處理器I/O設(shè)備I/O設(shè)備I/O設(shè)備總線的缺點通訊瓶頸系統(tǒng)I/O吞吐受限于總線最大帶寬總線性能難以大幅度提高總線長度越長,總線速率就越低總線上的設(shè)備總數(shù)越多,總線負載能力越低需要支持多種類型設(shè)備傳輸延遲變化巨大數(shù)據(jù)傳輸速率變化巨大總線層次現(xiàn)代計算機中多采用多層次總線只在低端系統(tǒng)中存在單一總線CPU總線:最大化CPU帶寬;支持多CPU為Cache塊傳輸優(yōu)化(Cache塊傳輸、Burst)多CPU支持(Cache一致性協(xié)議)距離短、掛載少、位數(shù)多、頻率高存儲器總線:最大化存儲器帶寬為SDRAM傳輸優(yōu)化(Burst、Page、刷新)距離短、點-點、位數(shù)多、頻率高系統(tǒng)總線(也稱I/O總線):匹配大量各類設(shè)備標準化總線接口適度工作頻率通過Bridge連接至CPU總線距離長、掛載多、位數(shù)相對少、頻率相對低總線層次現(xiàn)代計算機中涉及大量的總線類型和層次由于存在多層次總線,因此總線之間必須有Bridge(橋)進行總線轉(zhuǎn)接串口(連接器)并口(連接器)1394(連接器)USB(連接器)DDR2/3DDR2/3南橋SATA音頻PCI北橋顯卡PCI-Ex16PCI-Ex1CPU總線存儲器總線系統(tǒng)總線PCI-Ex16系統(tǒng)總線PCI-Ex1系統(tǒng)總線PCI設(shè)備角色:Master和SlaveMaster-主設(shè)備能夠主動發(fā)起總線周期(讀周期、寫周期)的設(shè)備Slave-從設(shè)備響應(yīng)總線周期的設(shè)備網(wǎng)卡:Slave&MasterSlave:響應(yīng)CPU對網(wǎng)卡上寄存器的讀寫Master:主動發(fā)起PCI總線周期進行DMA傳輸讀周期:從主存中讀取數(shù)據(jù)

發(fā)送報文寫周期:接收報文寫數(shù)據(jù)至主存同步總線vs異步總線同步總線控制信號中包含一個時鐘信號控制信號的有效/無效與時鐘相關(guān)同步由時鐘界定,無需對方響應(yīng),減少握手延遲接口控制器通常包含高速FIFO以最大化傳輸帶寬總線的設(shè)備必須以相同的時鐘頻率工作高速總線距離要短,否則會導致時鐘歪斜傳輸帶寬高異步總線無時鐘可以寬范圍的匹配多種設(shè)備總線長度很長,不存在時鐘歪斜使用握手協(xié)議典型的同步總線協(xié)議信號有效與無效,都與時鐘上升沿同步BReqBGCmd+AddrR/WAddressData1Data2DataData1Wait#異步總線寫操作T0:主設(shè)備(Master)獲得總線(control/address/direction/data)等待一個規(guī)定的時間(slave譯碼)T1:Master發(fā)出請求T2:Slave給出應(yīng)答,表明數(shù)據(jù)被接收T3:Master撤消請求T4:Slave撤消請求AddressDataReadReqAckMasterAssertsAddressMasterAssertsDataNextAddressT0T1T2T3T4T5異步總線讀操作T0:主設(shè)備(Master)獲得總線(control/address/direction/data)等待一個規(guī)定的時間(slave譯碼)T1:Master發(fā)出請求T2:Slave給出應(yīng)答,指示數(shù)據(jù)已經(jīng)放到總線上了T3:Master撤消請求,表明數(shù)據(jù)已經(jīng)被接收T4:Slave撤消請求AddressDataReadReqAckMasterAssertsAddressNextAddressT0T1T2T3T4SlaveData仲裁:多個潛在的Master總線仲裁框架要求使用總線的Master發(fā)出總線請求Master直到收到仲裁器的確認前不能使用總線Master完成總線傳輸后必須通知仲裁器總線仲裁必須平衡兩個因素優(yōu)先級:最高優(yōu)先級的設(shè)備應(yīng)首先被響應(yīng)公平:即使最低優(yōu)先級的設(shè)備也應(yīng)能使用總線總線仲裁方式分布式集中式常見的仲裁架構(gòu)鏈式查詢方式:適用于小型系統(tǒng)獨立請求方式:適用于復雜系統(tǒng),廣泛應(yīng)用與現(xiàn)代計算機系統(tǒng)目錄典型的輸入輸出系統(tǒng)總線I/O接口基本功能與結(jié)構(gòu)程序訪問設(shè)備PCI總線概述P&P的原理中斷3種數(shù)據(jù)傳輸方式異常實例1:硬盤SATA硬盤接口控制器SATA總線接口磁盤接口…盤體(盤片/磁頭/電機)+=實例2:U盤USB接口控制器USB總線接口FLASH存儲器接口…大容量FLASH存儲器FLASH存儲器U盤接口控制器設(shè)備通過接口控制器與主機連接設(shè)備實際上包括兩部分接口控制器(也稱為接口芯片)設(shè)備主體設(shè)備主體不直接與主機連接,而是通過接口控制器與主機連接為什么設(shè)備必須通過接口控制器與主機相連?速率不匹配主機:Inteli7四核3.2GHz鍵盤:100Hz協(xié)議及時序不匹配主機:FSB、PCI-E、PCI硬盤:SATAWLAN:802.11a/b/g數(shù)據(jù)格式不匹配主機:32位/16位/8位,Bps網(wǎng)絡(luò):1位,bps信號電平不匹配主機:TTL、CMOS、。。。電機:24V接口控制器的功能1/2地址譯碼接受CPU編程設(shè)置模式、控制過程、查詢狀態(tài)緩沖(或緩存)數(shù)據(jù)解決CPU與設(shè)備間速度不匹配的矛盾時序控制匹配主機端總線工作要求匹配設(shè)備端信號工作要求接口控制器的功能2/2與設(shè)備主體交換數(shù)據(jù)信號變換功能信號電平、邏輯極性中斷管理功能以中斷方式接收和發(fā)送數(shù)據(jù),降低CPU無效開銷原因數(shù)據(jù)接收/發(fā)送過程必然涉及設(shè)備狀態(tài)檢查與判斷CPU工作頻率極高。相對于設(shè)備一次數(shù)據(jù)傳輸時間,CPU能夠執(zhí)行大量指令接口控制器的基本組成總線接口邏輯地址譯碼時序控制總線驅(qū)動寄存器組(或內(nèi)部存儲器)寄存器組:數(shù)據(jù)、狀態(tài)、控制存儲器:緩沖區(qū)、隊列等設(shè)備數(shù)據(jù)傳輸控制與特定設(shè)備的傳輸協(xié)議相關(guān)總線-接口控制器-設(shè)備接口邏輯、寄存器組是必須具備的存儲器是可選的主要用途:增強數(shù)據(jù)傳輸性能不同類型設(shè)備的數(shù)據(jù)傳輸控制差異極大接口邏輯地址譯碼時序控制總線驅(qū)動寄存器組數(shù)據(jù)狀態(tài)控制地址控制數(shù)據(jù)存儲器FIFOSRAM數(shù)據(jù)傳輸控制主機總線狀態(tài)控制數(shù)據(jù)接口控制器設(shè)備主體接口控制器與總線間的接口信息標準總線接口主機內(nèi)部總線:PCI-E、PCI主機擴展總線:USB、1394主機內(nèi)部總線地址信號數(shù)據(jù)信號控制信號接口控制器與設(shè)備間的接口信息數(shù)據(jù)信息數(shù)字量、模擬量狀態(tài)信息反映設(shè)備當前工作狀態(tài)(輸入是否就緒,輸出是否空閑)通常狀態(tài)寄存器(SR)存儲上述信息控制信息按照預定工作時序工作,完成控制器設(shè)備間數(shù)據(jù)交互目錄典型的輸入輸出系統(tǒng)總線I/O接口基本功能與結(jié)構(gòu)程序訪問設(shè)備寄存器表示PCI總線概述P&P的原理中斷3種數(shù)據(jù)傳輸方式異常示例:調(diào)節(jié)顯示器分辨率例如通過顯卡控制LCDR分辨率:調(diào)節(jié)分辨率R色彩:調(diào)節(jié)色彩寄存器:主機與設(shè)備的交互界面從信息處理的角度:主機=程序,即指令序列指令的基礎(chǔ)功能是讀寫某個單元接口控制器的寄存器具備可讀可寫特性部分設(shè)備包括存儲器。如顯卡的幀緩存接口邏輯地址譯碼時序控制總線驅(qū)動寄存器組數(shù)據(jù)狀態(tài)控制設(shè)備主體地址控制數(shù)據(jù)存儲器FIFOSRAM數(shù)據(jù)傳輸控制主機總線狀態(tài)控制數(shù)據(jù)接口控制器目錄典型的輸入輸出系統(tǒng)總線I/O接口基本功能與結(jié)構(gòu)程序訪問設(shè)備寄存器地址PCI總線概述P&P的原理中斷3種數(shù)據(jù)傳輸方式異常程序員眼中的設(shè)備Q:0x80000000是什么?Q:地址對應(yīng)的是什么?A1:某個內(nèi)存單元A2:顯卡某個寄存器CPU必須通過地址訪問內(nèi)存(或設(shè)備)unsignedint*p;p=(unsignedint*)

0x80000000;*p=0xABCDEF12;程序通過對某個地址訪問設(shè)備CPU取指令及讀寫操作均需要給出地址從程序員角度出發(fā),地址=主存單元地址是CPU要訪問主存單元的唯一定位信息當CPU發(fā)出某個地址,意味著CPU要讀寫對應(yīng)主存單元與主存類似,設(shè)備也必須擁有相應(yīng)的地址設(shè)備地址實例NVIDIAGTX280顯卡資源內(nèi)存范圍:F6000000–F6FFFFFF內(nèi)存范圍:E0000000–EFFFFFFF內(nèi)存范圍:F4000000–F5FFFFFF通訊端口(COM1)–串口輸入/輸出范圍:03F8–03FFPS/2鍵盤輸入/輸出范圍:0060–0060輸入/輸出范圍:0064–0064地址圖地址圖:將CPU地址空間劃分為若干區(qū)域區(qū)域?qū)?yīng)了設(shè)備主存:大量的地址范圍顯存:較大的地址范圍串口:極少的地址范圍地址分配基本原則:任意兩個部件的地址范圍不能重疊地址圖串口(連接器)并口(連接器)1394(連接器)USB(連接器)I/O控制器SATA音頻PCI內(nèi)存控制器顯卡PCI-Ex16PCI-Ex14GB地址空間DDR2/32GBDDR22MBHighBIOSPCI設(shè)備空間1GB(未安裝存儲器)32MB顯存0000_0000h000F_FFFFh0010_0000hBFFF_FFFFhC000_0000hFFFF_FFFFhFFDF_FFFFhD400_0000hD5FF_FFFFh2GB內(nèi)存3GB內(nèi)存空間1GB設(shè)備空間DOS保留區(qū)域設(shè)備地址的具體內(nèi)容Q:設(shè)備中哪些組成要素需要分配地址?A:寄存器組某些設(shè)備也包括隸屬于接口的存儲器,如FIFO、幀緩存接口邏輯地址譯碼時序控制總線驅(qū)動寄存器組數(shù)據(jù)狀態(tài)控制設(shè)備主體地址控制數(shù)據(jù)存儲器FIFOSRAM數(shù)據(jù)傳輸控制主機總線狀態(tài)控制數(shù)據(jù)接口控制器設(shè)備編址:存儲映射編址(MemoryMapping)基本方法將設(shè)備的寄存器(或存儲器)視為主存單元,并分配地址與主存單元一起在CPU地址空間統(tǒng)一分配地址特點系統(tǒng)中只有一個尋址空間,即內(nèi)存尋址空間CPU所有的存儲操作類指令均可應(yīng)用于設(shè)備訪問視圖單一,模型簡單設(shè)備編址:獨立編址CPU有兩個地址空間:存儲器空間、I/O空間除存儲類指令外,有專用的I/O類指令(IN,OUT)必須設(shè)置特殊信號來區(qū)分當前地址是訪內(nèi)存單元還是訪問I/O端口(80x86CPU:M/IO信號)主存儲器內(nèi)存空間:I/O設(shè)備64KB1MBI/O空間:早期x86處理器地址空間模型存儲映射編址的優(yōu)點無需專用指令,復用load/store類指令模型簡單,軟件可移植性好由于地址圖略大,系統(tǒng)譯碼略微復雜些對于現(xiàn)代IC技術(shù)來說已經(jīng)不再是問題主流編址方式(PowerPC、MIPS…)X86也采用存儲映射方式X86仍然保留獨立編址,其目的在于兼容性目錄典型的輸入輸出系統(tǒng)總線I/O接口基本功能與結(jié)構(gòu)程序訪問設(shè)備設(shè)備判斷當前地址PCI總線概述P&P的原理中斷3種數(shù)據(jù)傳輸方式異常地址譯碼判斷是否是某個特定地址假設(shè)8位地址:A=?=25h判斷是否屬于某個特定區(qū)域假設(shè)8位地址:A∈{20h~28h}地址譯碼:與特定地址比較判斷A=?=25hA=A7,A6,…,A0;25h=0010_0101bCS=!A7&!A6&A5&!A4&!A3

&A2&!A1&A0&A5CSA7A6A4A3A2A1A0地址譯碼:與特定區(qū)域比較1/2判斷A∈{28h~2Fh}由于是判斷是否屬于屬于某個區(qū)域,不需要判斷具體是哪8個單元(28h~2Fh)因此A[2:0]這3位地址無需考慮推廣到一般:基地址(Base)+偏移范圍(Offset)地址譯碼主要是比較Base部分offset:用于內(nèi)部尋址地址區(qū)間{28h~2Fh}基地址:28h偏移范圍:0~7,共計8個單元地址譯碼:與特定區(qū)域比較2/2A∈{28h~2Fh},base=28h=0010_1000b由于最低3位地址不參與比較,因此base=0010_1xxxb判斷A∈{28h~2Fh}A[7:3]=?=0_0101bCS=!A7&!A6&A5&!A4&A3例3:地址譯碼(與特定區(qū)域比較)Q:判斷A∈{C0h~D7h}起始地址:1100_0000b結(jié)束地址:1101_0111b問題:偏移區(qū)域不是滿的(即空間不是2的整數(shù)冪)!A7,A6,A5:不變;A4變;A3:不變方法:拆分區(qū)域為若干滿偏移區(qū)域等價于判斷A∈{C0h~CFh}|A∈{D0h~D7h}CS=A7&A6&!A5&!A4|

A7&A6&!A5&A4&!A3

=A7&A6&!A5&(!A4|A4&!A3)目錄典型的輸入輸出系統(tǒng)總線I/O接口基本功能與結(jié)構(gòu)程序訪問設(shè)備軟硬件集成PCI總線概述P&P的原理中斷3種數(shù)據(jù)傳輸方式異常示例:程序?qū)戯@卡寄存器過程分解假設(shè)R分辨率的地址是D500_0000h通過編程R分辨率設(shè)置分辨率1:800*6002:1024*768…0000_0000h000F_FFFFh0010_0000hBFFF_FFFFhC000_0000hFFFF_FFFFhFFDF_FFFFhD400_0000hD5FF_FFFFh4GB地址空間2MBHighBIOSPCI設(shè)備空間1GB(未安裝存儲器)32MB顯存2GB內(nèi)存3GB內(nèi)存空間1GB設(shè)備空間DOS保留區(qū)域unsignedint*p;p=(unsignedint*)0xD5000000

;*p=0x00000002;讀寫顯卡寄存器的基本過程S1:取指令CPU輸出地址,主存返回數(shù)據(jù)(實際為指令)S2:譯碼S3:取操作數(shù)操作數(shù)在寄存器中S4:ALU計算地址S5:寫顯卡寄存器CPU輸出地址及數(shù)據(jù)設(shè)備響應(yīng)寫入操作S5:寫顯卡寄存器~~CPU的工作CPU產(chǎn)生CPU的寫周期地址總線:0xD5000000數(shù)據(jù)總線:0x00000002控制總線:R/W#為L主存總線控制器系統(tǒng)總線地址=D500_0000數(shù)據(jù)=0000_0002S5:寫顯卡寄存器~~總線控制器的工作響應(yīng)CPU總線寫周期查看地址圖本質(zhì)上也是譯碼產(chǎn)生系統(tǒng)總線寫周期地址總線:0xD5000000數(shù)據(jù)總線:0x00000002控制總線:R/W#為L主存總線控制器系統(tǒng)總線地址=D500_0000數(shù)據(jù)=0000_0002S5:寫顯卡寄存器~~顯卡的工作假設(shè)顯卡已經(jīng)知道自己的地址范圍P&P部分會介紹顯卡是如何知道自己的地址與其他所有設(shè)備同時偵聽總線,分析地址從地址總線獲取地址發(fā)現(xiàn)地址==D500_0000h,表明讀寫自己將數(shù)據(jù)寫入內(nèi)部寄存器主存總線控制器系統(tǒng)總線地址=D500_0000數(shù)據(jù)=0000_0002目錄典型的輸入輸出系統(tǒng)總線I/O接口基本功能與結(jié)構(gòu)程序訪問設(shè)備PCI總線概述P&P的原理中斷3種數(shù)據(jù)傳輸方式異常PCI總線PCI總線由Intel公司于20世紀90年代提出,后成為工業(yè)標準PCI總線具有諸多新特性,奠定了現(xiàn)代計算機系統(tǒng)總線的基礎(chǔ)PCI總線特點總線時鐘頻率33MHz/66MHz總線寬度

32位(5V)/64位(3.3V)峰值數(shù)據(jù)傳輸速率132MB/s、264MB/s、528MB/s時鐘同步方式與CPU時鐘頻率無關(guān)支持Plug&Play(P&P,即插即用)PCI讀寫操作基本特點所有的信號在時鐘上升沿采樣集中仲裁仲裁與當前傳輸重疊(overlap)地址與數(shù)據(jù)復用FRAME#指示地址傳輸Burst傳輸當滿足下列條件時,數(shù)據(jù)傳輸完成Master有效IRDY#Slave有效TRDY#FRAME#無效表示傳輸最后一個數(shù)據(jù)字

PCI總線規(guī)定信號名后#表示該信號為低電平(L)有效讀操作時序分析寫操作時序分析目錄典型的輸入輸出系統(tǒng)總線I/O接口基本功能與結(jié)構(gòu)程序訪問設(shè)備PCI總線概述P&P的原理中斷3種數(shù)據(jù)傳輸方式異常即插即用(P&P,PlugandPlay)PCI總線系統(tǒng)完整的支持了P&P擺脫了人工配置設(shè)備的繁瑣,減少了錯誤設(shè)備互換性得到質(zhì)變奠定了現(xiàn)代系統(tǒng)總線的基礎(chǔ)如果總線不支持P&P設(shè)備在插入計算機前必須仔細的設(shè)置跳線必須手工配置設(shè)備的基地址設(shè)備缺乏良好的互換性對于計算機使用人員具有較高的要求容易出現(xiàn)錯誤,導致死機P&P要解決的核心問題是什么?設(shè)備能被CPU訪問的基本前提:必須在CPU地址空間中分配一個地址范圍地址范圍:Base+LengthLength是設(shè)備自身的屬性,易于解決關(guān)鍵是Base如果設(shè)備的基地址固定,則:無法保證任意兩個設(shè)備的基地址是不沖突的,特別是當新設(shè)備接入主機時P&P要解決的問題無需靜態(tài)分配base上電后初始化階段分配base傳統(tǒng)方式vs.P&P傳統(tǒng)方式Base由人工設(shè)置跳線實質(zhì):通過電阻上拉或下拉P&P解決思路配置階段:系統(tǒng)軟件(BIOS)設(shè)置各設(shè)備基地址工作階段:設(shè)備對基地址進行譯碼P&P基本工作過程CPU在每次上電后初始化階段完成如下工作S1:CPU按照某種策略讀寫所有設(shè)備的配置信息設(shè)備返回CPU所需地址空間的大小等信息S2:CPU按照某種算法對地址空間進行劃分S3:CPU把每個設(shè)備的基地址寫入設(shè)備設(shè)備如何支持P&P?支持兩階段工作模式配置階段:系統(tǒng)軟件(BIOS)設(shè)置各設(shè)備基地址工作階段:設(shè)備對基地址進行譯碼配置2個寄存器:Base寄存器和Length寄存器Base寄存器:存儲CPU分配的base。R/WLength寄存器:存儲設(shè)備所需空間大小。ROnly配置譯碼比較電路總線地址=?=Base實現(xiàn)P&P的基礎(chǔ)-Base的設(shè)置方式條件1:必須是寄存器類型因為寄存器具有可以被讀寫的特性條件2:Base寄存器能夠由CPU設(shè)置CPU能讀寫寄存器,則意味著系統(tǒng)具有了靈活性問題轉(zhuǎn)變?yōu)椋篊PU要能夠讀寫base寄存器雞生蛋?蛋生雞?CPU配置設(shè)備的基礎(chǔ)是:CPU必須讀寫設(shè)備中的配置相關(guān)寄存器(base、length)設(shè)備響應(yīng)總線讀寫周期的前提是:設(shè)備必須對總線地址譯碼地址譯碼的核心是:設(shè)備要把總線地址與某個基地址比較但是,基地址是在完成設(shè)備配置后才生效的!目錄典型的輸入輸出系統(tǒng)總線I/O接口基本功能與結(jié)構(gòu)程序訪問設(shè)備PCI總線概述P&P的原理PCI設(shè)備的配置空間與工作空間中斷3種數(shù)據(jù)傳輸方式異常PCI設(shè)備必須具備2個地址空間配置空間:支持自動配置的地址空間僅由若干與配置任務(wù)相關(guān)的寄存器組成工作空間:支持用戶功能的地址空間寄存器:命令/狀態(tài)/數(shù)據(jù)寄存器存儲器:如顯存PCI配置空間PCI規(guī)范定義配置空間為64B,由一組寄存器構(gòu)成PCI設(shè)備可以根據(jù)需要實現(xiàn)部分寄存器必須實現(xiàn)的寄存器設(shè)備/廠商狀態(tài)/命令基地址寄存器組最多支持6個基地址寄存器至少實現(xiàn)1個基地址寄存器310DeviceIDVendorID00hStatusCommand04hClassCodeRevisionID08hBISTHeaderTypeLatencyTimerCache

LineSize0ChBaseAddressRegisters10hBaseAddressRegisters14hBaseAddressRegisters18hBaseAddressRegisters1ChBaseAddressRegisters20hBaseAddressRegisters24hCardbusCISPointer28hSubsystemIDSubsystemVendorID2ChExpansionROMBaseAddress30hReservedCapabilitiesPointer34hReserved38hMax_LatMin_GntInterruptPinInterruptLine3ChPCI設(shè)備如何區(qū)分cpu讀寫兩個空間?首先,每個PCI設(shè)備都有獨立的IDSEL信號IDSEL有效,表明當前總線周期是cpu讀寫設(shè)備的配置空間其次,設(shè)備通過分析總線周期來區(qū)分對兩個空間的操作PCI總線有2種總線周期,一種是常規(guī)周期,一種是配置周期2種周期除了C/BE[3:0]#的編碼不同外,更重要的是如果當前是配置周期,則IDSEL一定有效反之,如果IDSEL無效,則即便C/BE[3:0]#是配置周期讀寫編碼,設(shè)備也不應(yīng)響應(yīng)該周期第三,只有完成了配置后,設(shè)備才能響應(yīng)常規(guī)讀寫周期1)配置完成前,禁止PCI設(shè)備響應(yīng)常規(guī)周期BIOS復位command寄存器中的MemorySpace和I/OSpace這2個使能位被復位2)配置完成后,允許PCI設(shè)備響應(yīng)常規(guī)周期BIOS置位上述2個使能位工作空間配置空間配置空間與工作空間的關(guān)系配置空間:響應(yīng)BIOS的配置操作,包括1)禁止和使能工作空間的譯碼2)響應(yīng)BIOS對BaseAddressRegister的設(shè)置AD[31:00]寄存器或存儲器FRAME#設(shè)備基地址其他電路Base譯碼譯碼(1)IDSEL配置寄存器C/BE[3:0]#使能工作空間:接受配置空間的控制1)使能:是否允許譯碼總線周期2)基地址:與總線地址進行比較以響應(yīng)常規(guī)總線周期目錄典型的輸入輸出系統(tǒng)總線I/O接口基本功能與結(jié)構(gòu)程序訪問設(shè)備PCI總線概述P&P的原理訪問配置空間的基本原理中斷3種數(shù)據(jù)傳輸方式異常基本思路1/2Cpu的配置空間:每個PCI設(shè)備在CPU地址空間有對應(yīng)的配置空間將cpu地址空間中某一固定地址的小容量空間劃分為若干份,每份對應(yīng)一個PCI設(shè)備的配置空間cpu讀寫該區(qū)域則意味著進行配置操作(包括設(shè)置基地址)PCI設(shè)備:IDSEL信號每個PCI設(shè)備都有一個IDSEL信號,其有效表明當前總線周期為配置周期每個PCI設(shè)備都有一組特定寄存器(配置寄存器),其容量大小與前述的系統(tǒng)橋芯片為PCI芯片/PCI插槽產(chǎn)生一個獨立的IDSEL信號譯碼CPU對各個配置空間的讀寫,并產(chǎn)生相應(yīng)的配置周期和IDSEL系統(tǒng)軟件設(shè)計讀寫設(shè)備配置空間來判定PCI設(shè)備存在及需求分配地址基本思路2/2系統(tǒng)橋為每個PCI設(shè)備提供獨立IDSEL,包括:主板上已安裝芯片PCI插槽目錄典型的輸入輸出系統(tǒng)總線I/O接口基本功能與結(jié)構(gòu)程序訪問設(shè)備PCI總線概述P&P的原理系統(tǒng)與設(shè)備中斷3種數(shù)據(jù)傳輸方式異常系統(tǒng)橋譯碼系統(tǒng)的配置空間系統(tǒng)橋了解cpu的地址空間的分配情況當BIOS要讀寫某個設(shè)備配置寄存器時,系統(tǒng)橋產(chǎn)生相應(yīng)的配置周期最重要的是,系統(tǒng)橋根據(jù)配置空間分配情況只有效該設(shè)備的IDSEL系統(tǒng)橋CPU地址空間?設(shè)備2寄存器/存儲器設(shè)備2工作空間設(shè)備1寄存器/存儲器設(shè)備1工作空間

設(shè)備N配置空間系統(tǒng)配置空間?設(shè)備1配置空間?設(shè)備N的配置寄存器CPU=IDSEL1=設(shè)備1配置基地址IDSELNA[31:00]基地址設(shè)備1的配置寄存器?設(shè)備N配置基地址BIOS設(shè)置BaseAddressRegister的基本過程S1)清除Command使能位以禁止設(shè)備譯碼S2)向BaseAddressRegister寫0xFFFFFFFF寫0xFFFFFFFF是一個信號,表明CPU希望獲取地址空間需求信息設(shè)備檢測到該事件后,應(yīng)該在內(nèi)部置位一個標志S3)讀BaseAddress注意,此時設(shè)備返回的基地址寄存器值代表的是地址空間容量地址空間容量的表示方法:高位置1,低位置0(0的位數(shù)取決于空間大?。├?:1MB0xFFF00000例2:16MB0xFF000000S4)向BaseAddressRegister寫分配好的基地址S5)置位Command使能位以允許允許設(shè)備譯碼目錄典型的輸入輸出系統(tǒng)總線I/O接口基本功能與結(jié)構(gòu)程序訪問設(shè)備PCI總線概述P&P的原理中斷為什么需要中斷3種數(shù)據(jù)傳輸方式異常程序查詢I/O一般來說設(shè)備上都有2個寄存器狀態(tài)寄存器(Status):Ready位指示是否就緒,即是否可以輸入/輸出數(shù)據(jù)寄存器(Data):用于傳輸數(shù)據(jù)程序查詢(Polling)I/O的基本原理:1)cpu循環(huán)的讀取status寄存器,直到Ready置位(01)2)cpu用load指令(或store指令)讀(或?qū)懀〥ata寄存器設(shè)備譯碼并執(zhí)行完cpu的操作后,會復位Ready位(10)程序查詢I/O示例輸入:讀取鍵盤值到$v0

lui $t0,0xffff#ffff0000,基地址

Waitloop:

lw $t1,0($t0)#status寄存器

andi $t1,$t1,0x1

beq $t1,$zero,Waitloop

lw $v0,4($t0)#datareg輸出:把$a0寫入設(shè)備

lui $t0,0xffff#ffff0000,基地址

Waitloop:

lw $t1,8($t0)#status寄存器

andi $t1,$t1,0x1

beq $t1,$zero,Waitloop

sw

$a0,12($t0)#datareg常見I/O設(shè)備的性能參數(shù)I/O設(shè)備間的性能差距巨大:LAN與鼠標有7個數(shù)量級的性能差距設(shè)備行為人機交互帶寬(KB/s)鍵盤輸入是0.01鼠標輸入是0.02音頻輸出輸出是5.00打印機輸出是100.00硬盤存儲否10,000.00WLAN輸入/輸出否10,000.00顯示輸出是30,000.00千兆LAN輸入/輸出否125,000.00處理器/設(shè)備性能不匹配在程序查詢模式中,由于設(shè)備太慢,cpu大量執(zhí)行低效的循環(huán)假設(shè)cpu的主頻為1GHz,則cpu可以每秒執(zhí)行109條load/store指令

cpu:相當于帶寬為4,000,000KB/sI/O設(shè)備:帶寬從0.01KB/s到125,000KB/s輸入:當cpu讀取數(shù)據(jù)時,設(shè)備很難及時提供數(shù)據(jù)另外,很多時候,人機交互型設(shè)備還必須等待人的操作,例如鍵盤輸入輸出:當cpu寫數(shù)據(jù)時,設(shè)備很難及時接收并存儲數(shù)據(jù)需要一種非計劃型的過程調(diào)用,它能夠在設(shè)備就緒后自動被調(diào)用1)當設(shè)備就緒后,設(shè)備向cpu發(fā)出一個信號2)cpu在接收到該信號后,首先完成當前指令,然后自動去執(zhí)行預先設(shè)置的一個特定過程3)該特定過程執(zhí)行結(jié)束后,cpu再返回至被打斷的位置恢復執(zhí)行目錄典型的輸入輸出系統(tǒng)總線I/O接口基本功能與結(jié)構(gòu)程序訪問設(shè)備PCI總線概述P&P的原理中斷中斷處理的硬件機制3種數(shù)據(jù)傳輸方式異常中斷(Interrupt)中斷是由I/O設(shè)備產(chǎn)生的異步事件產(chǎn)生原因:設(shè)備處于某種狀態(tài),需要cpu進行必要的處理例如,準備接收或發(fā)送數(shù)據(jù)、某些特殊情況(如出錯)通知機制:中斷請求信號設(shè)備使該信號從無效變?yōu)橛行硗ㄖ猚pu異步含義:I/O中斷與當前指令流無關(guān)聯(lián)關(guān)系(或因果關(guān)系)I/O中斷是在當前指令流在執(zhí)行過程中產(chǎn)生的中斷處理:cpu執(zhí)行一段被稱為中斷服務(wù)程序(interruptserviceroutine,ISR)來處理設(shè)備請求cpu接收到中斷請求后,首先執(zhí)行完當前指令,然后自動轉(zhuǎn)入ISR執(zhí)行完ISR后,cpu再返回到被中斷的位置繼續(xù)執(zhí)行中斷處理基本過程示例1)設(shè)備向cpu發(fā)出中斷請求信號2)cpu執(zhí)行完sub后,將sub下一條指令的PC值保存好3)cpu自動將ISR的首地址加載到PC中,從而實現(xiàn)跳轉(zhuǎn)4)cpu執(zhí)行ISR完成輸入輸出等操作5)cpu執(zhí)行eret指令實現(xiàn)從ISR返回eret功能之一是將保存的PC值寫入PCadd用戶程序subandorlwISRstore...eret1)中斷請求有效2)保存PC3)跳轉(zhuǎn)ISR4)執(zhí)行ISRCpu中的硬件機制1/3保存被中斷指令的下一條指令的地址cpu要執(zhí)行完當前指令才響應(yīng)中斷,因此要保存的值是PC+4該值被保存在EPC(ExceptionProgramCounter)中固定的ISR首條指令地址(即入口地址)由于cpu自動跳轉(zhuǎn)至ISR,因此ISR入口地址必須是固定值,即BFC00000hCpu中的硬件機制2/3增加32位的EPC寄存器,其輸入來自PC由于cpu是在執(zhí)行完當前指令后才跳轉(zhuǎn)的,,PC已經(jīng)被更新為下一條指令的地址了NPC1)當執(zhí)行eret指令時,NPC選擇將EPC的值送至PC2)內(nèi)部設(shè)置一個固定地址BFC00000h,用于跳轉(zhuǎn)至ISRIMARDPCIRABRFA1A2A3WD3RD1RD2ALUZeroEXT01DMARDWD0121F012M1NPCNPCIMMRAEPCPCPC4M2M3C1215:1120:1620:1625:21DR15:0025:00AREPCCpu中的硬件機制3/3Int是設(shè)備的中斷請求信號狀態(tài)機中增加INT狀態(tài)INT狀態(tài)用于將下一條指令地址寫入EPC,以及將ISR入口地址寫入PC狀態(tài)機在每條指令的最后一個狀態(tài)檢查Int是否有效,如果有效則跳轉(zhuǎn)這樣就保證當前指令執(zhí)行結(jié)束后才轉(zhuǎn)入ISRPC寫使能需增加2種情況:一種與INT狀態(tài)相關(guān),一種與eret相關(guān)同理,NPC控制信號也需要考慮上述2種情況S1S2S3S4jal|eretbeqsw|add|sub|ori|luiresetINTS5(jal|eret)&Intbeq&IntInt(sw|add|sub|ori|lui)&Int目錄典型的輸入輸出系統(tǒng)總線I/O接口基本功能與結(jié)構(gòu)程序訪問設(shè)備PCI總線概述P&P的原理中斷中斷服務(wù)程序框架3種數(shù)據(jù)傳輸方式異常中斷服務(wù)程序框架首先,保存現(xiàn)場將可能會破壞的寄存器都保存在堆棧中第2,執(zhí)行與設(shè)備功能相關(guān)的代碼主要包括讀取設(shè)備狀態(tài)寄存器、數(shù)據(jù)讀寫等第3,恢復現(xiàn)場從堆棧中恢復所有寄存器最后,執(zhí)行eret指令從中斷返回目錄典型的輸入輸出系統(tǒng)總線I/O接口基本功能與結(jié)構(gòu)程序訪問設(shè)備PCI總線概述P&P的原理中斷防止中斷重入3種數(shù)據(jù)傳輸方式異常為什么會發(fā)生中斷重入?一般來說,設(shè)備會保持中斷請求信號有效,直至ISR中某條指令設(shè)置了設(shè)備上的某個寄存器為止很顯然,ISR初始的若干條指令是與設(shè)備功能無關(guān)的一般來說,設(shè)備可能因為多種原因而產(chǎn)生中斷除了保存現(xiàn)場等指令外,ISR需要首先了解設(shè)備到底發(fā)生了什么這就必然涉及一段指令問題就發(fā)生在cpu跳轉(zhuǎn)到ISR的入口地址開始執(zhí)行ISR的首條指令上cpu剛執(zhí)行完首條指令,但由于中斷請求信號保持有效,cpu再次跳轉(zhuǎn)至中斷入口重新開始執(zhí)行中斷服務(wù)程序防止中斷重入防止中斷重入的辦法就是設(shè)置一個狀態(tài)(ExceptionLevel,EXL)0:cpu未進入ISR1:cpu已進入ISR

MIPS中有一個與EPC配合的特殊寄存器SR(status),其位1就是EXL工作機制:進入ISR:當中斷請求有效時,cpu視EXL是否為0決定是否跳轉(zhuǎn)如果為0,則cpu跳轉(zhuǎn)入口地址的同時將EXL置為1如果為1,則表明cpu已經(jīng)在ISR中了,則cpu不再跳轉(zhuǎn)退出ISR:eret指令除了將EPC寫入PC外,還需要將EXL清0如果eret不執(zhí)行該功能,則ISR將只能進入一次!目錄典型的輸入輸出系統(tǒng)總線I/O接口基本功能與結(jié)構(gòu)程序訪問設(shè)備PCI總線概述P&P的原理中斷軟硬件協(xié)同3種數(shù)據(jù)傳輸方式異常中斷響應(yīng)機制分析:軟硬件協(xié)同設(shè)備EPC/EXL控制器中斷服務(wù)程序IntReq=f(Int,EXL)最后一個周期檢測IntReqIntEPCPC值PC

硬件中斷服務(wù)程序入口EXL置位信號保存現(xiàn)場中斷處理恢復現(xiàn)場ERETEPCPCEXL清除信號目錄典型的輸入輸出系統(tǒng)總線I/O接口基本功能與結(jié)構(gòu)程序訪問設(shè)備PCI總線概述P&P的原理中斷3種數(shù)據(jù)傳輸方式異常DMA概述程序I/O與中斷I/O的不足程序I/O過于低效中斷I/O有改進,但對于每一次I/O傳送,cpu仍然必須執(zhí)行一些指令DMA(DirectMemoryAccess)DMA控制器直接控制數(shù)據(jù)直接在存儲器與外設(shè)之間高速交換CPU不再介入具體的I/O操作DMA控制器提供存儲器地址信號、讀寫控制信號等CPU與I/O設(shè)備在更大的程度上并行工作,效率更高DMA方式適合高速批量的數(shù)據(jù)傳輸如視頻顯示刷新、磁盤存儲系統(tǒng)的讀寫、存儲器到存儲器的傳輸?shù)菵MA控制器的內(nèi)部基本結(jié)構(gòu)在DMA系統(tǒng)中,DMA控制器是核心部件,內(nèi)部包含:Counter寄存器:保存?zhèn)鬏旈L度每傳輸一個數(shù)據(jù),自動減1。減為0,則傳輸結(jié)束Address寄存器:保存?zhèn)鬏旊p方的地址每傳輸一個數(shù)據(jù),地址會自動加1Control寄存器:保存?zhèn)鬏敺较?、是否允許中斷等Status寄存器:DMA傳輸狀態(tài),如傳輸結(jié)束等緩沖區(qū):用于緩存數(shù)據(jù)接口邏輯:產(chǎn)生總線讀寫周期DMA的基本過程1/31)CPU初始化DMA控制器設(shè)置數(shù)據(jù)傳送方向:是請求讀還是請求寫(對存儲器而言)設(shè)置設(shè)備地址:DMA操作所涉及的設(shè)備地址設(shè)置存儲器起始地址:讀或?qū)懘鎯ζ鞯钠鹗紗卧刂吩O(shè)置傳送的數(shù)據(jù)數(shù)量:傳送數(shù)據(jù)的字數(shù)有關(guān)中斷方式的設(shè)置:DMA結(jié)束后通過中斷方式請求CPU處理DMA的基本過程2/32)DMA傳輸申請總線:DMA向cpu(或總線仲裁器)提出總線請求一旦DMA控制器獲得總線,則cpu就無法訪問主存了總線讀周期:從源端(主存或設(shè)備)讀取一個(或一批)數(shù)據(jù)讀取的數(shù)據(jù)暫存在DMA控制器內(nèi)部的緩沖區(qū)中總線寫周期:向目的(設(shè)備或主存)寫入一個(或一批)數(shù)據(jù)

重復上述過程,直至傳輸結(jié)束DMA的基本過程3/33)DMA傳輸后處理中斷請求:一塊數(shù)據(jù)傳輸結(jié)束后,DMA控制器向cpu發(fā)出中斷請求響應(yīng)中斷:cpu響應(yīng)該請求,然后視需求決定是否再啟動一次數(shù)據(jù)傳輸DMA的演化早期計算機系統(tǒng)采用集中式的DMA控制器因為芯片技術(shù)水平相對落后,難以在單一芯片中實現(xiàn)多重功能系統(tǒng)整體性能低傳輸一個數(shù)據(jù)需要2個總線周期DMA傳輸與cpu爭用,cpu效率低現(xiàn)代計算機系統(tǒng)采用層次化總線;芯片技術(shù)提高是的每個設(shè)備都能實現(xiàn)DMA傳輸功能系統(tǒng)整體性能高減少了總線周期數(shù),提高傳輸性能設(shè)備-設(shè)備間傳輸不影響cpu性能A.早期計算機系統(tǒng)B.現(xiàn)代計算機系統(tǒng)DMA帶來的cache一致性產(chǎn)生cache一致性的原因DMA寫主存:cache存儲的是過去的副本;主存數(shù)據(jù)已經(jīng)被DMA更新了DMA讀主存:cache存儲的可能是最新數(shù)據(jù),而DMA從主存中獲取是過去的副本方案1:由cache系統(tǒng)確保一致性該方案要求I/O數(shù)據(jù)傳輸通道必須經(jīng)過cache,這樣就能確保數(shù)據(jù)一致性了。對于cache來說,DMA類似于另一個CPU需要采用類似多CPU系統(tǒng)中的cache一致性協(xié)議方案2:需要操作系統(tǒng)介入DMA傳輸前,OS將相應(yīng)的物理頁面的PTE設(shè)置為cache不可訪問當CPU訪問該物理頁面時,由于不能被cache,故cpu會從主存讀取數(shù)據(jù)DMA傳輸后,OS恢復PTE為cache可以訪問CPU再訪問相應(yīng)的物理頁面時cache就會發(fā)生效力目錄典型的輸入輸出系統(tǒng)總線I/O接口基本功能與結(jié)構(gòu)程序訪問設(shè)備PCI總線概述P&P的原理中斷3種數(shù)據(jù)傳輸方式異常異常(Exception)異常是由于cpu執(zhí)行指令而產(chǎn)生非特殊事件產(chǎn)生原因:指令執(zhí)行出現(xiàn)“不期望”狀態(tài),需要cpu進行處理例如:溢出、除0、TLB缺失等通知機制:數(shù)據(jù)通路中的功能部件向控制器產(chǎn)生請求信號可以理解為cpu內(nèi)部的中斷請求信號異常處理由于是指令執(zhí)行出現(xiàn)了問題,因此cpu停止繼續(xù)執(zhí)行當前指令,類似中斷處理一樣轉(zhuǎn)入特定的異常處理程序執(zhí)行完異常處理程序后,cpu再重新執(zhí)行出問題的指令異常與中斷的區(qū)別雖然異常與中斷的處理機制高度類似,但兩者也具有明顯的不同1)同步與異步異常:與指令流是同步關(guān)系(有因果關(guān)系)中斷:與指令流是異步關(guān)系(無因果關(guān)系)2)受害指令(即發(fā)生異?;蛑袛鄷r的那條指令)異常:停止執(zhí)行受害指令,然后轉(zhuǎn)入異常處理程序中斷:執(zhí)行完受害指令,然后轉(zhuǎn)入中斷處理程序3)PC保存異常:由于當前指令未執(zhí)行完,因此當前指令地址保存到EPC中斷:由于當前指令執(zhí)行完了,因此下一條指令地址保存到EPC同時支持中斷與異常1)為支持異常,狀態(tài)機增加一個新的狀態(tài):EXC2)S2狀態(tài):增加了對非法指令異常的支持控制器在S2狀態(tài)譯碼指令,因此可以發(fā)現(xiàn)是否存在非法指令3)S3狀態(tài):增加了對溢出的支持對于add等溢出敏感型指令,ALU在S3狀態(tài)進行計算因此如果發(fā)生溢出,則溢出信號也會在S3狀態(tài)產(chǎn)生集成MIPS微系統(tǒng)計算機組成與實現(xiàn)目錄概述MIPS體系結(jié)構(gòu)定時概述串行通訊概述完善cpu設(shè)計通過系統(tǒng)橋連接設(shè)備定時器設(shè)計MiniUART設(shè)計軟件開發(fā)動機有助于培養(yǎng)系統(tǒng)思維有助于深刻理解軟硬件協(xié)同通過復雜的調(diào)試有助于訓練思維寬度、深度和縝密程度有助于理解現(xiàn)代計算機系統(tǒng)的基本特征—并行與并發(fā)增強對計算機系統(tǒng)的感性認識學習和掌握多種工具主動學習!目標ISR()……系統(tǒng)橋定時器UARTCPU(含存儲器)ABCDEFGH12345678main()……軟件硬件PC機多周期,支持中斷接收到主機發(fā)送的字符就產(chǎn)生中斷在一個ISR中,同時支持UART中斷和定時中斷主程序初始化后,就循環(huán)檢測UART是否有數(shù)據(jù),并設(shè)置定時器產(chǎn)生周期性定時中斷實驗環(huán)境FPGA:cpu、UART控制器x2、定時器、LED/7段數(shù)碼管驅(qū)動RS-232:連接器,與FPGA實現(xiàn)的UART控制器連接存儲器:存儲代碼與數(shù)據(jù)LED:適合按位顯示7段數(shù)碼管:適合顯示完整的數(shù)字波動開關(guān):允許簡單輸入FPGA存儲器存儲器存儲器

最小實驗系統(tǒng)FPGA+1個UART目錄概述MIPS體系結(jié)構(gòu)地址空間分配定時概述串行通訊概述完善cpu設(shè)計通過系統(tǒng)橋連接設(shè)備定時器設(shè)計MiniUART設(shè)計軟件開發(fā)地址空間分配微系統(tǒng)參考了MARS的地址空間規(guī)范,實際使用空間遠小于4GB現(xiàn)代計算機cpu地址空間遠大于4GB,而且劃分方案非常復雜1)雖然IM和DM分別只有4KB和8KB,但能編寫小規(guī)模程序了2)ISR只有256B是肯定不夠的,這里僅用于部署跳轉(zhuǎn)指令256B對應(yīng)64條跳轉(zhuǎn)指令,也就是最多可以對應(yīng)64個硬件中斷序號地址范圍容量映射對象描述100000000H~00001FFFH8KB數(shù)據(jù)存儲器容量8KB。數(shù)據(jù)位寬:32位200003000H~00003FFFH4KB指令存儲器容量4KB。數(shù)據(jù)位寬:32位300004180H~000041FFH256B硬件中斷入口所有硬件中斷的入口區(qū)400007F00H~00007F0FH16B定時器用于映射定時器的寄存器500007F10H~00007F2FH32BUART用于映射UART的寄存器600007F30H~00007F3FH16BSWITCH用于映射FPGA實驗板上的用戶開關(guān)700007F40H~00007F4FH16BLED用于映射FPGA實驗板上的LED目錄概述MIPS體系結(jié)構(gòu)協(xié)處理器定時概述串行通訊概述完善cpu設(shè)計通過系統(tǒng)橋連接設(shè)備定時器設(shè)計MiniUART設(shè)計軟件開發(fā)協(xié)處理器現(xiàn)代cpu除了計算功能(如計算、存儲訪問、分支、跳轉(zhuǎn)等),還包含龐雜的管理功能cpu管理(包括中斷、cache、MMU等)、浮點運算等MIPS采用協(xié)處理器(Co-Processor)方案實現(xiàn)上述特殊功能MIPS共定義了4個CP(CP0至CP3),其中CP0是體系結(jié)構(gòu)中必須實現(xiàn)的協(xié)處理器方案的價值使得計算與管理彼此獨立,相互干擾少使得MIPS實現(xiàn)者可以根據(jù)具體需求靈活選擇實現(xiàn)方案CP0CP0是所謂的系統(tǒng)控制協(xié)處理器它是MIPS的精髓之一,也是打開MIPS特權(quán)級模式的大門CP0內(nèi)部包含32個特殊寄存器,我們只實現(xiàn)12號至15號編號寄存器描述R/W12SR狀態(tài)寄存器從名字上看應(yīng)該是系統(tǒng)狀態(tài),但大部分可寫的位卻是用于控制R/W13Cause導致異?;蛑袛嗟脑騌14EPC異常返回地址R/W15PRId處理器識別標識原則上,MIPS公司決定處理器標識編碼信息分配方案R

R代表只讀;R/W代表可讀可寫

關(guān)于協(xié)處理器的更多內(nèi)容,請閱讀《SeeMIPSRunLinux》第3章SR寄存器SR包含大量的控制位,微系統(tǒng)僅保留與中斷相關(guān)的4個寄存器位IE是全局性中斷開關(guān)當軟件置位IE后,CPU將不再響應(yīng)外部中斷IM[7:2]:6位中斷屏蔽位,分別對應(yīng)6個外部中斷1-允許中斷,0-禁止中斷IE:全局中斷使能1-允許中斷;0-禁止中斷EXL:異常級(用于防止中斷重入)1-進入異常,不允許再中斷;0-允許中斷IM7-2

IM[7:2]實現(xiàn)了中斷使能的精細化管理

微系統(tǒng)只實現(xiàn)IM3和IM2,分別對應(yīng)UART和定時器CAUSE寄存器IP[7:2]:6位待決的中斷位,分別對應(yīng)6個外部中斷記錄當前哪些硬件中斷正在有效1-有中斷;0-無中斷ExcCode[6:2]:異常編碼,記錄當前發(fā)生的是什么異常包括中斷等在內(nèi),共計32種編碼微系統(tǒng)最多實現(xiàn)3種即可ExcCode助記符描述0Int中斷10RI不識別(非法)指令12Ov算數(shù)指令導致的異常(如add)

微系統(tǒng)只實現(xiàn)IP3和IP2,分別對應(yīng)UART和定時器EPCEPC:保存中斷/異常時的PC以便從中斷/異常服務(wù)程序返回至被中斷指令Eret是可以訪問EPC的指令之一,其功能之一是將EPC寫入PC,從而實現(xiàn)從異常(或中斷)處理程序返回只受害指令編碼31262521201615

1110

650COP00100008000010000000000000000000eret0110006206格式eret描述eret將保存在CP0的EPC寄存器中的現(xiàn)場(被中斷指令的下一條地址)寫入PC,從而實現(xiàn)從中斷、異?;蛑噶顖?zhí)行錯誤的處理程序中返回。操作PC

CP0[epc]示例eret其他當程序被硬件中斷、指令執(zhí)行異常(如除0、算數(shù)溢出)時,PC+4將被保存在EPC中。PrID用于對公司/指令集版本等進行標識Intel處理器也有ID,CPU-Z就可以讀取目前可以任意選則用一個4字節(jié)的編碼值,如0x1234_5678名字:IntelXeonE31230v3代號:Haswell-WS

上述名字與代號是軟件根據(jù)讀取的寄存器值進行相應(yīng)解讀目錄概述MIPS體系結(jié)構(gòu)協(xié)處理器指令定時概述串行通訊概述完善cpu設(shè)計通過系統(tǒng)橋連接設(shè)備定時器設(shè)計MiniUART設(shè)計軟件開發(fā)協(xié)處理器指令及用途軟件不能直接修改CP0寄存器,必須借助通用寄存器mfc0:讀取CP0寄存器至通用寄存器SR:獲取處理器的控制信息Cause:獲取處理器當前所處于的狀態(tài)EPC:獲取被異常/中斷的指令地址PRId:讀取處理器ID(可以讀取你的個性簽名

)mtc0:通用寄存器值寫入CP0寄存器SR:對處理器進行控制,例如關(guān)閉中斷EPC:操作系統(tǒng)中將用于多任務(wù)切換目錄概述MIPS體系結(jié)構(gòu)協(xié)處理器指令定時概述串行通訊概述完善cpu設(shè)計通過系統(tǒng)橋連接設(shè)備定時器設(shè)計MiniUART設(shè)計軟件開發(fā)定時概述存在大量需要知道當前的時間或流逝了多長時間的場景使用者需要了解當前時間,例如日期:時:分:秒:毫秒:微秒應(yīng)用程序(

例如鬧鐘程序)需要等待一個固定的時間應(yīng)用程序(例如視頻播放軟件)需要按某種時間節(jié)拍推進內(nèi)部的計算工作OS調(diào)度進程的策略之一就是按時間片調(diào)度網(wǎng)絡(luò)通信中需要為報文發(fā)送和接收設(shè)置超時計時/定時的基本思路定時器周期性的產(chǎn)生中斷ISR讀取并記錄定時器的計數(shù)值在現(xiàn)代計算機系統(tǒng)中,一般是由ISR調(diào)度OS內(nèi)部的相關(guān)代碼完成上述及更復雜的時間管理功能為關(guān)機后能繼續(xù)計時,很多計算機系統(tǒng)為定時器提供了電池供電定時器工作特性定時器的核心是計數(shù)器,它在某個時鐘驅(qū)動下不斷計數(shù),然后根據(jù)計數(shù)器的時鐘頻率和計數(shù)值來推算出時間一般來說,計數(shù)器具有靈活的工作特性計數(shù)模式,例如:

正計數(shù);

倒計數(shù)加載模式,例如:

計數(shù)結(jié)束后等待軟件重置;計數(shù)結(jié)束后自動重置中斷模式,例如:計數(shù)結(jié)束后不允許中斷;計數(shù)結(jié)束后不允許中斷

簡化設(shè)計目錄概述MIPS體系結(jié)構(gòu)協(xié)處理器指令定時概述串行通訊概述完善cpu設(shè)計通過系統(tǒng)橋連接設(shè)備定時器設(shè)計MiniUART設(shè)計軟件開發(fā)串行通信基本特點單一傳輸線:即傳輸控制信息又傳輸數(shù)據(jù)信息通訊協(xié)議:異步通信、同步通信傳輸方向:全雙工、半雙工、單工串行通信基本特點信號調(diào)制與解調(diào)計算機內(nèi)部傳輸通常采用數(shù)字信號;計算機遠程通信通常依賴公用電話網(wǎng)公用電話網(wǎng)適合傳輸300~3400Hz的音頻信號(模擬信號)直接傳輸二進制數(shù)據(jù)會引起高次諧波,致使二進制數(shù)據(jù)信號嚴重失真調(diào)制(二進制信號

音頻信號)與解調(diào)(音頻信號

數(shù)字信號)多種調(diào)制模式:ASK(振幅調(diào)制)、PSK(相移調(diào)制)、FSK(頻移調(diào)制)…信息檢錯與糾錯MODEM:調(diào)制解調(diào)器波特率與字符速率波特率:串行通信中的位傳輸速率(bps)例如,1秒鐘能夠傳輸1000個二進制位,則波特率為1000bps常見波特率:9600、19200、38400、57600、115200等字符速率:字符數(shù)/s1個字符由n位組成(字符幀)有效載荷:n位協(xié)議開銷:起始位、停止位、校驗位字符幀格式字符幀包括起始位、數(shù)據(jù)位、停止位和校驗位起始位:1位;值恒為0數(shù)據(jù)位:最多為8位停止位:1、1.5或2位;值衡為1校驗位:可選字符幀發(fā)送首先,發(fā)送1位起始位然后,將數(shù)據(jù)按從最低位到最高位的順序逐位發(fā)送第三,發(fā)送校驗位(可選)最后,發(fā)送停止位波特率與時鐘

波特率除數(shù)因子波特率與時鐘

波特率除數(shù)因子數(shù)據(jù)發(fā)送與接收1/2發(fā)送電路發(fā)送時鐘:頻率與波特率相同即可移位寄存器:并行加載字符;在發(fā)送時鐘驅(qū)動下逐位發(fā)送接收電路接收時鐘:N倍于波特率(一般為為8倍或16倍)移位寄存器:在接收時鐘驅(qū)動下在字符中間位置采樣信號并接收數(shù)據(jù)發(fā)送與接收2/2如何找到字符的中間位置?首先,檢測傳輸是否開始檢測接收信號線是否從10一旦檢測到0,則意味著一個字符開始了然后,計數(shù)N/2個周期,這樣就到達了字符的中間位置從該位置開始,每N個周期采樣一次UART控制器接口cpu側(cè)接口;RS-232側(cè)接口串并轉(zhuǎn)換為cpu側(cè)提供并行數(shù)據(jù)訪問接口;為RS-232側(cè)提供串行收發(fā)接口波特率生成錯誤檢測中斷MODEM連接CPUUART控制器RS-232驅(qū)動電路RxDTxDUART控制器RS-232驅(qū)動電路RxDTxDCPU必備必備必備可選可選可選MiniUART基本特性波特率:9600、19200、38400、57600及115200共5種波特率數(shù)據(jù)幀:1位起始位、8位數(shù)據(jù)位、1位停止位,無奇偶校驗位中斷:支持MODEM:不支持信號:RxD、TxD、GND偏移寄存器描述R/W00hDATA數(shù)據(jù)寄存器。讀出時,返回內(nèi)部的數(shù)據(jù)接收寄存器值。寫入時,將待發(fā)送數(shù)據(jù)寫入到內(nèi)部的數(shù)據(jù)發(fā)送寄存器R/W04hIER中斷允許寄存器R/W08hIIR中斷識別寄存器R0ChLSR線路狀態(tài)寄存器R10hDIV波特率除數(shù)因子寄存器R/WRS-232接口RS-232是美國電子工業(yè)協(xié)會(EIA)等多家單位于1970年制定的RS-232有兩種標準(9針或25針),常用的是9針接口RS-232(9針接口)中最常用的信號是:RxD(Receiveddata):串行接收數(shù)據(jù)TxD(Transmitteddata):串行發(fā)送數(shù)據(jù)GND:地線CPUUART控制器RS-232驅(qū)動電路RxDTxDUART控制器RS-232驅(qū)動電路RxDTxDCPU短距離通信時,交叉連接兩臺計算機的RxD與TxD目錄概述MIPS體系結(jié)構(gòu)協(xié)處理器指令定時概述串行通訊概述完善cpu設(shè)計通過系統(tǒng)橋連接設(shè)備定時器設(shè)計MiniUART設(shè)計軟件開發(fā)CP0模塊接口信號名方向描述備注A[4:0]ICP0寄存器索引支持mfc0和mtc0這兩條指令WD[31:0]I寫入CP0的數(shù)據(jù)RD[31:0]OCP0寄存器輸出WrIEPC寫使能PC[31:2]I發(fā)生異常時,需要保存的PC值異常/中斷時保存EPCWrEPCI發(fā)生異常時,EPC的寫使能EPC[31:2]OEPC保存的發(fā)生異常時的PC值輸出EPC寄存器的值EXL_ClrISR寄存器EXL位復位支持EXL位EXL_SetISR寄存器EXL位置位IP[3:2]I外部設(shè)備中斷輸入對應(yīng)定時器中斷和UART中斷INTO中斷請求

ClkI時鐘系統(tǒng)信號ResetI復位信號設(shè)計CP0:SR由于無用位較多,因此只定義有用位reg[15:10]im;regexl,ie;SR整體表示為:{16’b0,im,8’b0,exl,ie}im,ie:行為很簡單if(當Wen有效&&Sel為對應(yīng)的寄存器編號){im,exl,ie}<={DIn[15:10],DIn[1],DIn[0]};exl:除了類似im/ie的行為外,還必須有置位和清除的功能。以置位為例:if(EXLSet)exl<=1’b1;reg[5:0]im與reg[15:10]im是等價的,但后者可讀性更好設(shè)計CP0:CauseCause:只定義2位寄存器,在clock上升沿不斷的保存外部2中斷reg[11:10]hwint_pend;Cause整體表示為:{20’b0,hwint_pend,10’b0}設(shè)計CP0:EPC定義30位寄存器reg[32:2]epc;為什么不需要32位?設(shè)計CP0:輸出CP0寄存器除了SR/Cause/EPC/PRId外,不用的寄存器一律輸出0可以設(shè)計5選1的MUX,或者用行為描述(如樣例代碼)assignDOut=(Sel==12)?{16’b0,im,8’b0,exl,ie}:(Sel==13)?{xxxxxxxxxxxxxxxxxxxxxxxx}:(Sel==14)?EPC:(Sel==15)?PrID32’b0;數(shù)據(jù)通路與控制器數(shù)據(jù)通路:增加cp0模塊控制器Wr:mtc0指令的譯碼結(jié)果WrEPC與EXL_Set:多周期CPU處于INT狀態(tài)的函數(shù)EXL_Clr:eret指令的譯碼結(jié)果數(shù)據(jù)通路與控制器數(shù)據(jù)通路:增加cp0模塊控制器:Wr是mtc0指令的譯碼結(jié)果;WrEPC與EXL_Set都是多周期CPU處于INT狀態(tài)的函數(shù);EXL_Clr是eret指令的譯碼結(jié)果。請讀者根據(jù)這些分析自行構(gòu)造這些控制信號的表達式。IMARDPCIRABRFA1A2A3WD3RD1RD2ALUZeroEXT01DMARDWD01231F012M1NPCNPCIMMRAEPCPCPC4M2M3C1215:1120:1620:1625:21DR15:0025:00ARCP0RDWDAPCEPCIP3IP2INT20:16支持設(shè)備ADD[31:0]:設(shè)備的地址DI/DO[31:0]:設(shè)備的數(shù)據(jù)輸入與輸出內(nèi)部外部ADD[31:0]DO[31:0]DI[31:0]IMARDPCIRABRFA1A2A3WD3RD1RD2ALUZeroEXT01DMARDWD1F012M1NPCNPCIMMRAEPCPCPC4M2M3C1215:1120:1620:1625:21DR15:0025:00ARCP0RDWDAPCEPCIP3IP2INT20:1601234目錄概述MIPS體系結(jié)構(gòu)協(xié)處理器指令定時概述串行通訊概述完善cpu設(shè)計通過系統(tǒng)橋連接設(shè)備定時器設(shè)計MiniUART設(shè)計軟件開發(fā)設(shè)備Cpu如何連接多個設(shè)備?每個設(shè)備都有自己的ADD、DI、DOCpu不能為每個設(shè)備都提供一套地址/數(shù)據(jù)否則cpu設(shè)計會變得復雜152接口邏輯BridgeBridge:類似與網(wǎng)絡(luò)switchCPU側(cè):1組接口;設(shè)備側(cè):N組接口1組地址/寫數(shù)據(jù),N組讀數(shù)據(jù)CPU讀:數(shù)據(jù)匯聚CPU寫:數(shù)據(jù)派發(fā)153CPU橋PrADDPrRDPrWDPrWrPrRdADDWDRD1……RDnCS1……CS2R/W#ADDDIDOWrRd設(shè)備ADDDODICSR/W#...設(shè)備ADDDODICSR/W#Bridge功能及內(nèi)部結(jié)構(gòu)完成地址、數(shù)據(jù)轉(zhuǎn)換,控制信號的產(chǎn)生地址讀數(shù)據(jù)寫數(shù)據(jù)橋PrADDPrRDPrWDPrWrPrRdADDWDRD1……RDnCS1……CS2R/W#PrAddrPrRDPrWDAddRD1RD2…RDnWD譯碼地址圖地址圖:存儲器及設(shè)備在地址空間的分布區(qū)域CPU讀寫設(shè)備(其實是程序員)必須知道設(shè)備地址Bridge也必須知道地址圖,否則無法完成譯碼示例:假設(shè)設(shè)備0~3均需要256B的地址空間需求設(shè)備MIPS地址范圍占用空間DEV0A0000000H~A00000FFH256字節(jié)DEV1A0000100H~A00001FFH256字節(jié)DEV2A0000200H~A00002FFH256字節(jié)DEV3A0000300H~A00003FFH256字節(jié)Bridge的地址譯碼1/2設(shè)備地址:基地址+偏移偏移:位數(shù)由空間大小決定,即log2(空間)基地址:高位部分注意:cpu讀寫某設(shè)備的地址空間時,發(fā)出的地址的基地址部分是不變的。變化的是偏移!31X+1X0基地址偏移設(shè)備地址范圍占用空間DEV0A0000000H~A00000FFH256字節(jié)DEV1A0000100H~A00001FFH256字節(jié)DEV2A0000200H~A00002FFH256字節(jié)DEV3A0100000H~A01FFFFFH1MB字節(jié)設(shè)備基地址偏移

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論