




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
總線與輸入/輸出系統8.1概述8.2總線技術8.3輸入/輸出接口8.4輸入/輸出技術
8.1概述
8.1.1總線
一臺計算機由CPU、存儲器、I/O設備三類模塊組成,它們通過適當的通路進行連接,連接三類模塊的通路的集合稱為互連結構(或互連網絡)。僅在兩個部件之間傳遞信息的通路稱為專用通路,而在不同時刻傳遞不同部件之間信息的通路稱為共享(公用)總線。更廣義地講,總線就是計算機系統中多個部件或設備共用的傳遞信息的數據通路(電子通道)。
現代計算機系統的典型互連結構是總線。一個總線結構的計算機是指其內部的各種子系統和模塊通過公用總線相互連接、通信而構成的計算機系統,它的基本架構如圖8.1所示。系統中的所有功能模塊均連接在總線上,CPU利用總線對存儲器、I/O資源進行管理和操作。圖8.1利用單總線進行連接通信的計算機系統
例如,將計算機系統主存中的數據輸出到外設的過程如下:
(1)CPU送出存儲單元地址到AB(地址總線),并通過AB送到主存模塊,主存模塊對接收到的主存地址進行譯碼,從而選中指定的存儲單元。
(2)CPU發出讀控制信號(RD)至CB(控制總線),并通過CB送到主存模塊,使主存芯片對指定的主存單元進行讀出操作。
(3)從主存指定單元中讀出的數據被加載至DB(數據總線)。
(4)CPU送出I/O地址到AB,I/O接口對AB上的I/O地址進行譯碼,以確定待操作的I/O設備(接口)。
(5)CPU發出寫控制信號(WR)至CB,并通過CB送到選定的I/O設備(接口),使I/O設備(接口)對DB上的數據(從主存中讀出的)進行接收操作。至此,完成了將主存中的數據輸出到外設的傳輸過程
從上述過程可以看出,任何模塊間的信息(地址、數據、控制)都是通過總線來傳遞的,總線成為系統的中樞、信息的通路,自然而然地成為了影響系統性能的一個重要的組成部分。
8.1.2輸入/輸出系統
當利用總線將計算機系統中的各模塊連接在一起之后,計算機如何與外部世界發生聯系,輸入/輸出設備如何與計算機有效連接便成為輸入/輸出系統設計要解決的關鍵問題。輸入/輸出系統由輸入/輸出設備、輸入/輸出接口、輸入/輸出控制器、輸入/輸出控制管理軟件等部分組成,它主要實現如下功能:
(1)將各種輸入/輸出設備有效地接入到計算機系統中。
(2)將計算機外部輸入設備的信息輸入到計算機內部,以便能夠得到加工處理,該功能簡稱為輸入操作。
(3)將計算機內部存儲或加工處理的信息輸出到計算機之外,以提供給計算機外部的輸出設備使用,該功能簡稱為輸出操作。也就是說,輸入/輸出系統主要負責完成計算機系統與輸入/輸出設備之間的信息交換。
輸入/輸出系統的設計目標主要有兩點:
①使CPU與外部設備在處理速度上相互匹配;
②盡可能實現CPU與外部設備并行工作,提高系統工作效率。
8.1.3外部設備
輸入/輸出設備與外部存儲器統稱為外部設備,簡稱外設。外設種類繁多,差異很大。一種非常有用的分類方法是將外設分為字符設備(CharacterDevice)和塊設備(BlockDevice)。字符設備以字符為單位做數據輸入或輸出,顯示器、打印機、鼠標、(游戲)操縱桿屬于此類。塊設備以數據塊為單位做數據輸入或輸出,塊的大小一般為512~32768字節,硬盤、光盤、磁帶屬于此類。無論是I/O設備的輸入/輸出操作,還是外存的讀寫操作,輸入/輸出系統對外設的管理都是通過采用適當的輸入/輸出技術來實現的。
輸入設備有多種,最常用的有鼠標、鍵盤、觸摸屏和游戲控制器等。
(1)鼠標:按工作原理可分為機械鼠標、光學鼠標和激光鼠標等,現在最常見的是光學鼠標;按接口可分為PS2、USB、無線鼠標等。
(2)鍵盤:按工作原理可分為機械鍵盤、塑料薄膜鍵盤、電容鍵盤等;按接口可分為PS2、USB、無線鍵盤等。
(3)觸摸屏:近十幾年引入的新輸入方式,廣泛用于平板電腦、手機、電子書閱讀器等,按工作原理可分為紅外型、電阻型和電容型等。
(4)游戲控制器:專用于視頻游戲操作的輸入設備。典型示例如任天堂的Wiimote和微軟的Kinect,它們都采用了計算機視覺技術來捕捉人體的動作。
輸出設備也有多種,最常用的有打印機、顯示器等。
(1)打印機:將計算機的運行結果、存儲信息等打印在紙或其他介質上的常用輸出設備。常見的打印機有針式打印機、噴墨打印機、激光打印機等。
(2)顯示器:常見的顯示器是液晶顯示器,而有機發光二極管(OrganicLight-EmittingDiode,OLED)顯示器是發展趨勢。顯示器接口主要有VGA、DVI、HDMI、DP等。
8.2總線技術
總線是計算機系統的互連機構,是連接兩個或多個總線設備的公共通信線路,是一組有定義的、可共享的、可傳遞0/1邏輯信號的連接線。總線設備是總線上連接的各種器件、部件、模塊等計算機功能部件的統稱,它分為主設備(Master)和從屬設備(Slave)。主設備是總線上的主控器,是發布控制命令的設備,典型示例是CPU。而從屬設備是總線上的被控對象,是接受控制命令的設備,典型示例是存儲器和I/O設備。
8.2.1總線類型與結構
1.總線類型
為了適應各種連接對象,達到有效連接的目的,總線被設計成多種類型。以下是常用的幾種分類方法。
1)按連接層次劃分
按照總線連接對象在計算機系統中所處的層次不同,總線可分為:
(1)片內總線:連接CPU內部各寄存器、運算器等功能部件的公共連接線。片內總線可以使CPU內部設計、功能擴展和升級更容易。
(2)系統總線:連接計算機內部CPU、主存、I/O接口等各功能模塊的公共連接線,它由地址總線、數據總線、控制總線組成。系統總線也稱為內總線,是構成計算機的重要組成部分。
(3)通信總線:計算機之間、計算機與外設之間進行連接的連接線。通信總線也稱為外總線或I/O總線,是構成計算機系統的重要組成部分。
2)按數據位數劃分按照總線中數據線的多少不同,總線可分為:
(1)并行總線:含有多條雙向數據線的總線。
(2)串行總線:只含有一條雙向數據線或兩條單向數據線的總線。
3)按用法劃分按照總線的使用方式不同,總線可分為:
(1)專用總線:只連接一對功能部件的總線。
(2)公用(共享)總線:多個部件、模塊、設備共用的互連線。
共享總線也有很多好處。通過標準化共享總線,可以使系統結構模塊化,總線接口標準化,部件選用更靈活,成本造價更低廉。
系統總線是典型的共享總線,計算機中的CPU、存儲器模塊、各種外設就是通過共享系統總線互連在一起的。
2.總線特性
總線不是簡單的一組連接線,在所有標準化的總線規范中,總線是被全方位加以規定的。
1)總線的特性通常總線規范中會詳細描述總線各方面的特性,如機械特性、電氣特性、功能特性和時間特性。
(1)機械特性:規定了總線的線數,傳輸線采用的材料,總線插頭、插座的形狀、尺寸和信號線的排列等要素。
(2)電氣特性:規定了總線中每條信號線的有效形式、電流或電壓的變化范圍、信號傳送的方向(輸入或輸出)、信號采用單端或雙端(差動)表示、信號是單向傳輸或雙向傳輸、信號上拉電阻阻值、驅動電路等要素。
(3)功能特性:規定了總線中每條信號線的功能及數據傳輸協議。總線信號按功能分為:地址信號、數據信號和控制信號三類,所有地址信號線組成地址總線,所有數據信號線組成數據總線,所有控制信號線組成控制總線。
(4)時間特性:規定了總線的工作時序,即在總線上完成各種操作時,相關信號狀態變化與時鐘節拍(時間)之間的關系。
2)總線的性能指標
我們可以多方面設計和評價一個總線的性能,如總線是否具有即插即用(PlugandPlay,PNP)功能,是否支持總線設備的熱插拔,是否支持多主控設備,是否具有錯誤檢測能力,是否依賴特定的CPU等,但以下參數是衡量總線性能很重要的指標。
(1)總線帶寬:即總線的最大數據傳輸率(數據傳輸率定義為每秒傳輸的字節數)。在同步通信方式中,總線的帶寬與總線時鐘密不可分,總線時鐘頻率的高低決定了總線帶寬的大小。總線的實際帶寬會受到總線長度(總線延遲)、總線負載、總線收發器性能(總線反射、終端匹配)等多方面因素的影響。
例8.1PCI總線的時鐘頻率為33MHz/66MHz,當該總線進行32/64位數據傳送時,總線帶寬是多少?
解假設一個總線時鐘周期T完成一個數據的傳送,時鐘頻率為f,數據位為n,則總線帶寬B為
總線帶寬如表8.1所示。
(2)總線寬度:即總線的線數,它決定了總線所占的物理空間和成本。對總線寬度最直接的影響是地址線和數據線的數量。主存空間和I/O空間的擴充使地址線數量增加,并行傳輸要求有足夠的數據線。如64位的數據線和64位的地址線在高檔微機中已較為普遍,在大型高性能計算機中數據線和地址線更多。對于并行總線,數據線和地址線的復用是減少總線線數的有效方法;對于串行總線,則通過定義極少的(甚至沒有)控制信號及1位(或2位單向)數據線來大幅減少總線線數,其代價是需要較復雜的數據傳輸格式和協議。如USB總線只有4條線,即2條數據線(差動傳輸)、1條電源線和1條地線,但它的數據傳輸格式比較復雜,如圖8.2所示。圖8.2USB包格式
例8.2使用ISA總線的20條地址線時,允許尋址的主存空間有多大?使用PCI總線的32條地址線時,允許尋址的主存空間又有多大?
解
(3)總線負載:連接在總線上的設備的最大數量。大多數總線的負載能力是有限的,如CompactPCI總線最多可以支持7個PCI設備,USB總線利用Hub(集線器)支持最多127個USB設備的連接。PCI總線允許在一條總線中最多接入32個物理部件(總線設備,早期版本限制為10個),每一個物理部件可以含有最多8個不同的功能部件(稱為功能)。除去用于生成廣播消息的一個功能部件地址外,在一條PCI總線上最多可有255個可尋址功能部件。
3.總線結構
在早期的計算機系統中,總線只有一個,稱為單總線結構,如圖8.1所示。系統中的所有部件都連接在唯一的系統總線上,當總線上一對功能部件(如CPU與存儲器)進行信息交換時,其他所有部件的信息傳送操作都必須停止,單總線結構使許多操作無法并行進行,嚴重影響了計算機速度的提高。因此,單總線結構是早期計算機系統速度提高的瓶頸。另外,總線設備性能不一,差別巨大,單總線結構要想適應大量總線設備的連接,勢必出現復雜性增加而性能可能下降的狀況。
多總線結構是由兩種以上總線組成的系統互連結構。多總線結構有多種結構形式,如圖8.3所示的是其中一種。它由三種功能的總線集合而成,即系統總線、內存總線、I/O總線。利用不同功能的總線,可以實現不同模塊間的相互連接和不同功能的并行處理。例如,當CPU利用內存總線訪問某主存區域時,DMA控制器(一種總線主設備)可以利用I/O總線控制另一個主存區域與I/O設備間的數據交換。圖8.3多總線結構示例
PCI(PeripheralComponentInterconnect,外部組件互連)總線結構是一種典型的多總線結構。圖8.4是一個基于PCI總線的系統示意圖。利用專用的CPU總線和存儲器(M)總線實現處理器、Cache和主存(MM)的連接。橋接器是PCI總線接口器件,是PCI總線上的一種特殊PCI設備,在將系統中的設備連接到PCI總線上起關鍵作用。圖8.4一個基于PCI的系統示意圖
多總線結構中的專用總線在設計上可以與連接設備實現最佳匹配,所以每條總線都可以是精干、快速的。更重要的是,多總線結構的核心優勢是支持并行操作,而并行技術是當前計算機提高速度或吞吐量的最有效手段。
8.2.2總線信息傳輸方式
1.總線操作
在計算機系統中,所有功能的實現基本上是由兩類操作相互配合而達成的,其一是數據在功能部件內部進行加工處理,其二是數據在功能部件之間進行有效傳輸。在總線結構中,各功能部件(總線設備)之間為實現各種功能所需要的控制、狀態、數據等信息是利用共享總線來傳輸的,所以在總線上為配合某種功能的實現而進行的各種信息的傳輸稱為總線操作。
總線操作有兩種:讀操作和寫操作。總線讀操作是從屬設備通過總線向主設備傳送數據。總線寫操作是主設備通過總線向從屬設備傳送數據。總線操作的具體實現與采用哪種總線通信方式、地址/數據總線是否復用等密切相關,通常用時序圖來描述。
圖8.5、圖8.6為PCI總線的讀/寫操作時序圖。圖8.5PCI總線的基本讀操作時序圖8.6PCI總線的基本寫操作時序
總線上除了讀/寫操作之外,通常還有中斷請求/響應、總線請求/授權等操作。圖8.7是PCI總線的中斷響應時序。與傳統的中斷控制器8259(見8.4.2節)雙周期響應不同,PCI運行的是單周期響應。將x86CPU的兩周期中斷響應形式轉換為PCI的一周期形式是很容易由橋(Bridge)來完成的,橋丟棄了來自處理器的第一個中斷響應周期。圖8.7PCI總線的中斷響應時序
2.數據傳輸方式
總線上進行一次傳輸的過程大致分為5個階段:傳輸請求、總線仲裁、部件/設備尋址、數據傳輸和總線釋放。其中數據傳輸的基本方式有并行傳送方式、串行傳送方式、分時傳送方式和消息傳送方式。
1)并行傳送方式
并行傳送方式主要是針對數據傳輸而言的,當一個數據的每一位利用多條數據線同時傳輸時構成并行傳送。
并行傳送的傳輸速率高,一般在高速傳輸的場合使用。
2)串行傳送方式
串行傳送方式也是針對數據傳輸而言的,當一個數據的各位利用一條數據線依次進行傳輸時構成串行傳送。
串行傳送距離遠,所以在計算機系統之間、計算機系統與設備之間常采用串行數據傳送方式。串行傳送需要最少的數據線,傳輸成本低。但串行傳送的傳輸速率相對較低,一般在中、低速傳輸的場合使用。
串行傳送對數據傳輸的控制可以采用同步通信方式,也可以采用異步通信方式。
3)分時傳送方式
分時傳送方式是指在不同時段利用總線上同一個信號線傳送不同信息。
分時復用的信號需要時間信息或控制信號來加以分辨,且不能同時有效,所以,分時傳送方式會使總線操作速度有所下降,控制復雜度有所增加。但總線線數的顯著減少可以極大地降低總線成本。
4)消息傳送方式
消息(Message)是一種規定格式的數據包,該數據包包含地址、數據或控制等信息。消息傳送以猝發方式傳遞消息包。猝發方式(BurstMode)是在一個總線周期中利用一個地址段和多個數據段連續傳輸數據的一種手段,也稱為并發或成組傳輸。消息傳送使一次傳輸實現更快、更多的信息傳遞,所以是現代總線廣泛使用的數據傳輸方式,如PCI、USB等總線均采用消息傳送方式。
3.總線通信方式
在總線上通信需要收發雙方的時間配合或控制,這種時間配合或控制稱為總線定時或總線通信,其實質是一種協議或規則,它有兩種基本方案:同步(Synchronous)通信和異步(Asynchronous)通信。
1)同步通信方式
一個同步通信總線包括一個收、發雙方公用的時鐘(在控制線中)和一個固定的協議(Protocol),該協議用于與時鐘相關聯的通信。在同步通信方式中,利用時鐘的邊沿(如上升沿)來確定其他總線信號有效或被識別的時刻。
同步通信總線有兩個主要的缺點:其一,總線上的每個設備必須以相同的時鐘速率運行,且時鐘速率由慢速設備決定;其二,由于時鐘偏移(ClockSkew)問題,使得同步通信總線若快速就不能太長。
2)異步通信方式
異步通信總線不用公共時鐘定時,總線中沒有時鐘線,也因此克服了同步通信總線的兩個主要缺點,進而可以連接更廣泛的設備。為協調發送設備和接收設備之間的數據傳遞,異步通信總線使用了握手協議(HandshakingProtocol),該協議利用一組附加的控制線來實現。握手協議由一系列操作步驟組成,從當前步驟進入到下一個步驟必須在收、發雙方確認當前步驟已經完成時才能進行。
典型的握手信號有數據就緒(DATARDY)/請求(REQ)和應答(ACK),兩握手信號有三種協議方式:非互鎖、半互鎖、全互鎖。圖8.8是由發送設備發起的異步數據傳輸握手時序,握手信號為發送設備發出的DATARDY和接收設備發出的ACK。圖8.9是由接收設備發起的異步數據傳輸握手時序(全互鎖),握手信號為接收設備發出的DATAREQ和發送設備發出的ACK。圖8.8由發送設備發起的異步數據傳輸握手時序圖8.9由接收設備發起的異步數據傳輸握手時序(全互鎖)
在串行異步通信中,采用了一種更為簡單的通信方式,即在串行異步通信總線中,既不用握手信號,也沒有時鐘線,它利用收、發雙方事先約定的數據傳輸格式和傳輸速率來協調數據的傳輸。例如,在早期計算機系統中普遍使用的RS232串行異步通信總線上,收、發雙方使用各自的時鐘,采用最簡單的3線(發送線、接收線和地線)連接結構或7/9線連接結構,按照事先約定的數據傳輸格式(如圖8.10所示)和相同的串行傳輸波特率,收、發雙方就可以實現數據的發送或接收。圖8.10串行異步通信數據格式
8.2.3總線仲裁
在共享總線上,允許連接多個總線主設備和從屬設備,有可能出現多個主設備同時要求使用總線的情形。由于所有的總線操作都是由主設備發起或控制的,因此為了防止總線競爭,共享總線上某時刻只允許一個主設備使用總線,并實施對總線的控制。哪個主設備可以使用總線的選擇機制稱為總線仲裁(BusArbitration)。仲裁依據是主設備使用總線的優先級。仲裁機制可分為集中式仲裁和分布式仲裁兩類。
1.集中式仲裁
集中式仲裁采用一個中央總線仲裁器(也稱為總線控制器),由它來決定總線上同時提出使用請求的主設備的總線使用優先級。許多系統將總線仲裁器置于CPU內部,也有些系統將其做成一個集成芯片。集中式仲裁有典型的三種方式:菊花鏈(DaisyChaining)仲裁方式、輪詢(Polling)仲裁方式和獨立請求(IndependentRequesting)仲裁方式。這三種方式的不同在于所需控制線的數量和仲裁的速度。為了優勢互補,有些系統將幾種仲裁方式加以組合。
1)菊花鏈仲裁方式
圖8.11所示為菊花鏈仲裁方式。該方式使用三個控制信號:總線請求BR(BusRe-quest)、總線授權BG(BusGrant)、總線忙BB(BusBusy)。參與仲裁的所有總線設備的請求信號BRi與BR線連接,當BR有效時,表示有一個或多個總線設備請求使用總線。總線仲裁器僅在BB無效(總線不忙)時響應BR,使BG有效。接收到BG有效的設備將自身連接到總線上,并在其使用總線期間將BB線置為有效。圖8.11菊花鏈仲裁方式
菊花鏈仲裁邏輯可表示為(假設BR、BG、BB均為高有效)
其中,BRj為設備Dj發出的總線請求信號,BBj為設備Dj發出的總線忙信號,它們是通過集電極開路門輸出到BR或BB線上的,稱為“線或(Wired-OR)”。
菊花鏈仲裁只需要三個控制線和簡單的仲裁電路,對參與仲裁的設備數量基本無限制。由于優先級是由BG鏈路的連線確定的,因此不能更改。在高優先級的設備有足夠高的請求率時,可能會封鎖低優先級設備對總線使用的請求。若BG鏈路出現問題,將會嚴重影響正常的仲裁。
2)輪詢仲裁方式
在輪詢(也稱計數查詢)仲裁方式中,先為每一個參與仲裁的設備分配唯一的設備地址,所有的設備地址是連續的,然后利用一組與所有設備直接連接的輪詢計數(Poll-Count)線替代菊花鏈的BG線,如圖8.12所示。所有設備的請求信號仍然接到公共的BR線上,仲裁器響應BR時,在輪詢計數線上生成一組順序的數值(與設備地址一致),每一個設備用自己的設備地址與計數線上的數值作比較,比較結果相等且有總線請求的設備獲得總線使用權。獲得總線使用權的設備使BB有效,并將自身連接到總線上。圖8.12輪詢仲裁方式
輪詢仲裁邏輯可表示為
其中,Addj為設備Dj的設備地址,poll_count為仲裁器輸出的輪詢計數值。
總線設備的優先級由其設備地址在輪詢順序的位置決定。當用計數器生成輪詢計數值時,計數器有兩種設計方法:
一是循環計數,
二是采用總線忙信號復位計數器。
方法一使各仲裁設備具有相同的優先級,
方法二使各仲裁設備優先級由計數查詢順序決定。
3)獨立請求仲裁方式
獨立請求仲裁方式要求共享總線的每個設備有獨立的BR線和BG線,如圖8.13所示。總線仲裁器可以直接識別所有的請求設備,并做出快速的響應。總線仲裁器決定設備的優先級,且優先級可編程。總線仲裁器內部的優先級比較電路對同時提出總線請求的設備優先級進行比較,優先級高的設備先得到BG信號而獲得總線使用權。只有獲得總線使用權的設備才能使BB有效,并將自身連接到總線上。圖8.13獨立請求仲裁方式
獨立請求仲裁邏輯可表示為
獨立請求方式的主要缺陷是,為了控制n個設備需要2n條BR線和BG線連接到仲裁器上。相比較而言,菊花鏈仲裁方式僅需2條線,輪詢仲裁方式需lbn+2條線。
2.分布式仲裁
分布式仲裁不需要中央仲裁器,仲裁邏輯分布在各個設備中。
圖8.14所示的是自舉分布式仲裁方式,所有設備的忙信號采用“線或”方式連在一起,所有設備可以監聽總線忙BB和比它優先級高的設備發出的總線請求BRi,各設備僅在總線不忙且沒有高優先級設備請求的情況下獲得總線使用權。圖8.14自舉分布式仲裁方式
假設圖8.14中設備的優先級從高到低依次為D1D2…Dn,則設備仲裁邏輯可表示為
與集中式仲裁相比,圖8.14提供的自舉分布式仲裁在信號線數量上并沒有優勢,并且連接到共享總線上的設備數量還受到總線請求線數量的限制,但分布式仲裁防止了總線潛在的浪費。NuBus(MacintoshⅡ的底板式總線)和SCSI總線采用此方案。圖8.15鏈式分布式仲裁方式
圖8.15所示的是一種鏈式分布式仲裁方案,它除了沒有中央仲裁器外,與菊花鏈仲裁方式十分相似。它的仲裁邏輯為
圖8.15的鏈式分布式仲裁方式對總線上連接的設備數量沒有限制,且仲裁所需的信號線極少,所以它是一種廉價的、高速的方式。又因為不用中央仲裁器,所以不會導致仲裁失敗。
Ethernet(以太網)總線采用的是沖突檢測分布式仲裁方式。當某設備要使用總線時,它首先檢查是否有其他設備正在使用總線,如果沒有,它就置總線忙,然后使用總線。若兩個以上設備同時檢測到總線空閑,它們就可能會立即使用總線而發生沖突。一個設備在傳輸過程中,它會偵聽總線以檢測是否發生了沖突,當沖突發生時,所有設備都會停止傳輸,延遲一個隨機時間后再重新使用總線。各設備經過不同的隨機延遲后,總會有一個設備先使用總線,從而使沖突得到解決。
Futurebus+(未來總線)總線采用的則是并行競爭分布式仲裁方式。這個方式規定總線上的每個設備都有唯一的仲裁號,需要使用總線的主設備把自己的仲裁號發送到仲裁線上,這個仲裁號將用于并行競爭算法中。每個設備根據競爭算法的結果決定在一定時間后是占用總線還是撤銷仲裁號。并行競爭分布式仲裁是一種較復雜但有效的裁決方案。
8.2.4典型的總線
為了支持越來越強大的計算機系統,對總線的性能要求越來越高,總線的設計及數據傳輸協議也越來越復雜。總線寬度(線數)、總線時鐘、總線仲裁、總線操作等問題都會對總線性能有直接的影響。所以從性價比、適用性等多方面考慮,目前還無法設計一種萬能總線,總線設計領域仍然是百花齊放、不斷發展的局面。在眾多的標準總線中,PCI總線、PCIe總線和USB總線可以說是當代總線的佼佼者。
1.PCI總線
由于圖形界面及高速音頻、視頻數據傳輸的需求,Intel公司于1991年首先提出了PCI總線的概念。之后,Intel聯合IBM、Compaq等100多家公司共同開發PCI總線,并成立了PCI特別興趣組(PCISpecialInterestGroup,PCI-SIG)來管理、制定PCI總線標準。1992年PCI總線1.0版本正式發布。為了同步推進PCI總線的應用,Intel等公司開始研發各種面向PCI標準的總線接口芯片,使PCI總線很快就成為了PC中的主流系統總線。隨后2.0版本(1993年4月)、3.0版本(2004年4月)的發布使PCI總線完全占據了PC中的系統總線市場。
PCI總線是一種并行同步的系統總線,總線寬度為120或184線。PCI總線具有如下特征:
(1)不依賴處理器;
(2)每條總線支持256個功能設備;
(3)支持多達256條PCI總線;
(4)低功耗;
(5)支持猝發式事務處理(數據傳輸);
(6)最高時鐘頻率為33/66MHz;
(7)數據總線寬度為32/64位;
(8)訪問時間為2時鐘周期寫,3時鐘周期讀;
(9)并發的總線操作;
(10)支持總線主設備;
(11)隱藏的總線仲裁:集中式的獨立請求仲裁方式,PCI規范未規定仲裁算法;
(12)低的管腳數目:49個必備信號、52個可選信號;
(13)事務處理完整性檢驗;
(14)三個地址空間:存儲器空間(4GB,可達到16EB)、I/O空間(64KB,可達到4GB)和配置空間(用于PnP);
(15)自動配置,實現即插即用(PnP);
(16)軟件透明;
(17)具有不同尺寸的插件卡。
2.PCIExpress
為了進一步提高傳輸速度,英特爾公司于2001年提出了PCIExpress(即PCIe)標準,旨在替代之前的PCI、PCI-X等總線標準。PCIe與PCI總線有本質區別,PCIe是一種點到點的互聯機構,借鑒了計算機網絡,特別是交換式以太網的思路,將CPU、主存和各種輸入/輸出接口芯片作為端結點,通過交換網絡進行連接。每一個輸入/輸出接口芯片通過專門的點到點連線連接到交換網絡,而點到點連線由若干信道(Lane)組成,每個信道由兩條雙向的串行線路構成,因此,在本質上PCIe是串行總線,并非和PCI一樣是并行總線。
圖8.16為PCIe拓撲結構示意圖。根復合體(RootComplex)用于將CPU和主存與PCIe交換網絡連接起來,一般用芯片組實現。PCIe端結點(Endpoint)為輸入/輸出設備或接口控制器,例如網卡、顯卡等,通過點到點線路連接到交換網絡。交換網絡(Switch)負責將PCIe信息流從一個端結點傳送到另一個端結點。圖8.16PCIe拓撲結構圖
在PCIe的網絡中,信息以數據包的形式傳送。數據包從發送端結點發出,經過交換網絡的轉發,最終傳送到接收端結點。每個終端結點和交換結點的PCIe端口(Port)都有協議棧,類似于計算機網絡領域的TCP/IP協議棧。PCIe協議棧如圖8.17所示,其包括以下四層。圖8.17PCIe協議棧
1)物理層
物理層(PhysicalLayer)在最底層,它負責將信息流從一個結點傳送到相鄰結點。
2)數據鏈路層
數據鏈路層(DataLinkLayer)的主要任務是在相鄰結點之間的PCIe鏈路上正確傳送數據包。
3)事務層
事務層(TransactionLayer)主要根據軟件層的讀寫請求生成TLP并發送以實現數據的讀寫操作。
表8.2列出了常用操作的Posted或Non-Posted屬性,觀察該表可以發現,僅有主存寫和消息是Posted,而其他操作都是Non-Posted,其原因在于將主存寫操作設計為Posted可以提高傳送效率。
每個事務使用以下四種地址空間:
(1)主存空間:包括主存和PCIe設備I/O地址空間,主存空間的一部分映射到I/O設備。
(2)I/O空間:用于兼容舊的PCI設備。
(3)配置空間:用于讀寫I/O設備中的配置寄存器。
(4)消息空間:用于傳送控制信號,例如中斷、錯誤處理或功耗管理等。
其中,前三種地址空間是從PCI/PCI-X總線繼承過來的,而第四種消息空間是PCIe獨有的。消息空間取代了PCI總線中控制信號的作用。對四種地址空間操作的事務類型如表8.3所示,其主存讀鎖定請求事務的目的是實現對數據的原子讀寫操作,用于兼容PCI設備;Type0和Type1配置讀寫事務,也是為了兼容PCI總線。
4)軟件層
軟件層是操作系統與PCIe的接口,它可以模仿PCI總線,使得已有操作系統可以不經修改直接運行于PCIe之上,這是PCIe兼容PCI總線的基本方式。
典型的事務層報文TLP如圖8.18所示。其中,報頭、數據和ECRC的TLP核心部分由事務層建立,報頭和數據部分根據軟件層傳來的命令確定。圖8.18事務層報文TLP結構
3.USB總線
USB(UniversalSerialBus,通用串行總線)是由Compaq、Hewlett-Packard、Intel、Lucent、Microsoft、NEC、Philips這7家公司聯合開發的通用串行總線,其總線規范幾經修訂,形成了現在廣泛使用的3.0版本。
產生USB的原始動力是PC與電話連接的需求,易于使用及端口膨脹的需求,而對USB的現行推動力是PC性能的不斷提高、大數據量傳輸的要求以及外設性能與功能的增長。
在USB2.0規范中,USB允許以三種速率傳輸數據:
(1)高速(High-speed),其傳輸位速率為480Mb/s。
(2)全速(Full-speed),其傳輸位速率為12Mb/s。
(3)低速(Low-speed),其傳輸位速率為1.5Mb/s。
USB總線具有如下特征:
(1)性能優良。USB是一種快速的、雙向的、低成本的、可熱插拔的串行通信總線。
(2)即插即用。USB連接模式單一,不需要用戶了解詳細的電氣特性;能夠自我識別外設,能自動在驅動器與配置間進行功能映射;可動態地加入與重新配置外設。
(3)適用范圍寬。USB適用于帶寬范圍從幾千位每秒到幾百兆位每秒的設備;支持同一束電纜以同步或異步方式傳輸信息;支持多設備的并行操作;支持最多127個物理設備;支持主機與設備間的多數據和消息流傳輸;允許接入復合設備。因為協議的額外開銷較低,所以總線利用率很高。
(4)支持實時數據操作。USB對電話、音頻、視頻等設備提供了足夠的帶寬和極低的等待時間。
(5)靈活。USB允許傳送不同大小的包,并根據包的大小與等待時間來確定設備數據傳輸率的變化范圍;它在協議中建立了用于緩沖處理的流控制。
(6)健壯。USB在協議中建立了錯誤處理/故障恢復機制;可實時識別動態加入和移走的設備,支持故障設備的識別。
(7)與PC工業有協同作用。USB協議對于設計與集成來說是簡單的;它與PC的即插即用結構相一致;對現有的操作系統接口具有影響力。
(8)提供低成本實現方案。提供低成本電纜和連接器,適應低成本外設的開發。
(9)USB結構可以升級為在一個系統中支持多個USB主機控制器。
4.總線的應用
作為總線應用的一個示例,圖8.19給出的是采用Intel955芯片組的PC系統。該系統采用了先進的Core2雙核處理器,內含PCI、PCIe、USB2.0、SMBus(SystemManagementBus)等多種總線。與以PCI總線為核心構建系統架構(參見圖8.4)的情形不同,該系統架構的核心是芯片組,系統完全是圍繞著955芯片組(MCH955+ICH7組合)來組建的,PCI總線在此扮演的僅僅是與USB等總線類似的角色。圖8.19采用Intel955芯片組的PC系統
8.3輸入/輸出接口
CPU或I/O處理器、總線、I/O接口、I/O設備、I/O管理控制軟件等構成了輸入/輸出系統,該系統的任務是將各種I/O設備的信息輸入到計算機系統或將計算機系統的信息輸出給I/O設備。輸入/輸出系統作為計算機系統與外界聯系不可缺少的重要組成部分,它的工作方式直接影響到計算機系統的性能。對輸入/輸出系統的研究涉及兩個方面:
一是如何將I/O設備與計算機相連接;
二是如何快速、有效地使I/O設備與計算機進行信息交換。本節重點討論I/O設備與計算機連接的問題,8.4節重點討論I/O設備與計算機通信的問題。
I/O設備種類繁多,在功能、操作方式、速度、信號等方面差異巨大,它們中的絕大多數與總線信號、速度等不相符而不能直接和總線相連接。一種普遍采用的有效的方式是利用I/O接口連接,如圖8.20所示,該模型也適用于硬盤、光盤等外存與系統總線的連接。
圖8.20I/O設備與總線連接的一般模型
1.I/O接口的作用及模型
I/O接口不是I/O設備與總線之間簡單的連接線,它除了在I/O設備與總線之間提供基本的信息傳輸通道傳遞數據之外,還負責I/O設備與總線之間的設備選擇、設備控制、信號形式轉換、速度匹配、數據緩存、錯誤檢測、負載匹配、支持中斷等功能的實現,甚至對于某些復雜的外設,I/O接口還是“智能”的控制器。
簡單I/O接口和智能I/O接口在硬件邏輯的復雜性上相差很大,但從程序員的角度來看,所有I/O接口可以隱藏外設的定時、機電、數據格式等細節,它們的差別僅僅在于接口內部可讀/寫的寄存器或緩沖器的數量不同。
典型的I/O接口模型如圖8.21所示。圖8.21I/O接口模型
2.I/O接口設計
I/O接口設計是輸入/輸出系統硬件設計的重要一環。I/O設備不同,其接口電路有很大差別。對于簡單的I/O設備,可以使用廠家提供的某些設備芯片(如三態緩沖器、鎖存器、可編程并行接口芯片、可編程串行接口芯片等)設計滿足接口要求的I/O接口電路。對于復雜的I/O設備,可以利用廠家提供的單片機、微控制器(MCU)、嵌入式處理器等設計滿足設備要求的I/O控制器,I/O控制器實質就是一個微小型的計算機系統。
在圖8.21中,對端口寄存器的尋址是對地址總線AB上CPU發出的I/O地址進行譯碼來實現的,地址譯碼器是I/O接口中IO控制邏輯的一部分。采用接口芯片設計I/O接口電路時,地址譯碼器設計是I/O接口設計的重要內容之一。
例8.3發光二極管是一種非常簡單且常用的外設,假設將發光二極管連接在計算機系統中的ISA總線上,且為該外設分配的I/O地址為8820H,試設計發光二極管的接口電路。
解用鎖存器作為接口芯片可以非常方便地將發光二極管接入到計算機系統總線上。鎖存器有多種型號,在此選用74LS273。
發光二極管的接口電路如圖8.22所示,譯碼電路對I/O地址8820H進行譯碼。在圖8.22發光二極管接口電路
如果外設是數字化的并行設備,接口芯片應選擇三態緩沖器、鎖存器、可編程并行接口芯片等能夠提供并行數據傳輸的器件;如果外設是數字化的串行設備,接口芯片應選擇可編程串行接口芯片等能夠提供串并數據轉換的器件;如果外設是模擬設備,接口電路中應加入A/D或D/A轉換器。如果外設速度較快或希望與計算機并行工作,則接口電路最好設計為具有“智能”的I/O控制器(或稱設備控制器)。
8.4輸入/輸出技術
面對復雜的I/O設備,應采用不同的輸入/輸出技術以滿足各種I/O設備與計算機進行信息交換的要求。目前可以采用的輸入/輸出技術有:程序查詢(ProgrammedI/O)方式、中斷(Interrupt-drivenI/O)方式、直接存儲器存取(DirectMemoryAccess,DMA)方式、I/O通道(I/OChannel)方式。
選擇I/O技術的基本原則是:
①能滿足用戶的數據傳送速度要求且不丟失數據;
②系統開銷盡量小;
③能充分發揮硬件資源的能力(使I/O設備與CPU盡可能并行工作)。
8.4.1程序查詢方式
程序查詢方式是最簡單的輸入/輸出技術,每個計算機系統都具備。利用程序查詢I/O,可以實現處理器(通過接口)與I/O設備之間的數據交換。
程序查詢方式的實現不是僅有軟件(程序)就可以了,它必須有硬件的支持。實現程序查詢方式的前提是必須有I/O接口,I/O接口中必須要有狀態寄存器,該狀態寄存器中要能夠記錄I/O設備的工作狀態或與輸入/輸出操作關聯的接口的工作狀態。
程序查詢方式要求所有的I/O操作必須在CPU的直接控制下完成,也就是說,每個數據傳輸操作都由CPU執行指令來實現。圖8.23描述的就是程序查詢方式下CPU要執行的一段程序。首先,CPU讀取狀態端口寄存器獲得I/O設備當前的工作狀態,如果I/O設備未準備就緒,則CPU等待并不斷查詢I/O設備的狀態;如果I/O設備已準備就緒,則CPU發出讀或寫數據寄存器的命令,完成將I/O設備的數據讀入CPU內部寄存器或將CPU內部寄存器的數據輸出到I/O設備中的I/O操作。圖8.23程序查詢I/O流程
例8.4某外設與80386DX微機系統的連接電路如圖8.24所示,當外設不忙(BUSY=0)時,可以從外設獲取數據;當外設忙(正在準備新數據)時,不可以操作外設。請利用程序查詢方式編寫從外設獲取1000個數據并存于以BUFFER為首地址的主存區域的程序段。圖8.24程序查詢I/O操作示例
解圖中74LS244為三態緩沖器,是外設與80386DX微機系統總線之間的輸入接口器件,上邊的74LS244為8位數據輸入端口寄存器,端口地址為7CH,下邊的74LS244為狀態端口寄存器,端口地址為7DH。80386DX微機的32位I/O系統的地址空間分為4個體(Bank),每個體支持8位數據的輸入/輸出,分別用BE0、BE1、BE2、BE3選擇。
8.4.2中斷方式
程序查詢方式主要有以下限制:
(1)I/O數據傳輸速率低。CPU測試I/O設備狀態,為I/O設備服務(進行I/O操作),通常需要執行若干條指令,當連續傳輸一批數據時,至少執行7條指令(參見例8.4)才能完成一個數據的傳輸,這極大地限制了I/O數據傳輸率的提高。
(2)CPU工作效率較低。由于CPU花費較多的時間進行I/O設備狀態的查詢,因此在單位時間內完成的任務數量較少,導致工作效率不高。
(3)不能保證及時響應I/O設備的I/O服務請求。當I/O設備較多時,由于CPU只能輪詢I/O設備的狀態,會出現設備已準備就緒但還未輪到被查詢的情況,這樣CPU就不能為這個已準備就緒的設備及時進行輸入/輸出操作。
中斷是解決上述問題的有效方式之一,是I/O設備獲得CPU服務的主要方式。讓CPU擺脫檢測I/O設備狀態轉而執行其他任務,且僅在I/O設備準備就緒時CPU才直接、快速訪問I/O設備,中斷可以極大改善計算機的I/O特性
中斷是指中斷源在需要得到CPU服務時,請求CPU暫停現行工作轉向為中斷源服務,服務完成后,再讓CPU回到原工作狀態繼續完成被打斷的工作。從程序運行的角度來看,中斷是一種程序控制流的變化,如圖8.25所示。當中斷發生時,CPU暫停當前正在執行的程序,將控制權交給中斷處理程序,由中斷處理程序執行中斷源希望的操作;當中斷處理程序執行完畢,控制權又交回被中斷的程序。對控制權交換的基本要求是被中斷的程序重新運行時必須處于和被中斷前完全相同的狀態。圖8.25中斷過程示意圖
中斷源就是引起中斷發生的源頭,它來自CPU內部或外部,它可以是某個事件或某個設備,如計算機系統工作異常、運算溢出、功能調用等是內部中斷源,而系統電源掉電、設備或線路故障、定時器時間到、啟動或停止I/O設備、I/O設備輸入/輸出操作等是外部中斷源。廣義地說,任意一個需要CPU特別處理(服務)的事件都可以成為中斷源。大部分系統將外部中斷源分為兩類,即非屏蔽中斷源和可屏蔽中斷源。非屏蔽中斷源的中斷請求是不可屏蔽的,是CPU必須要響應的;可屏蔽中斷源的中斷請求是可以被屏蔽的,只有在未被屏蔽(中斷允許)的情況下CPU才有可能響應它。
由內部中斷源引發的中斷稱為內中斷或軟件中斷,由外部中斷源引發的中斷稱為外中斷或硬件中斷。通常,內中斷是不可屏蔽的,而外中斷分為可屏蔽和非屏蔽兩類。
1.中斷過程
中斷一旦發生,中斷源首先要利用中斷請求信號INT-REQ向CPU提出中斷請求,該請求被記錄在CPU內部寄存器中,CPU在每條指令執行結束時檢測中斷請求是否有效,當有效的中斷請求被識別與接受后,CPU便執行一個特定的中斷處理程序(Interrupt-HandlingRoutine),以此實現對中斷源的服務。
一個典型的中斷過程(如圖8.25所示)如下:
(1)若某中斷事件發生,中斷源向CPU發出有效的INT-REQ。
(2)CPU結束當前指令的執行,進入對中斷請求信號的檢測。
(3)如果CPU檢測到有效的中斷請求信號且滿足響應條件(CPU允許中斷且該中斷未被屏蔽),則向提出請求的中斷源發出中斷響應信號INT-ACK,轉向(4);否則,CPU繼續執行下一條指令,轉向(2)。
(4)CPU進行斷點保護,即將現行程序被打斷處的處理器狀態PSW和斷點(返回)地址(程序計數器PC的內容)保存在堆棧中;同時,獲得有效INTACK信號的中斷源撤銷它發出的中斷請求信號,并為CPU提供它的中斷處理程序入口地址的相關信息。
(5)如果有多個中斷源,則CPU要先識別高優先級的中斷源,然后根據中斷源提供的相關信息獲得中斷處理程序入口地址(首地址),并將其裝入PC,再依據PC轉向執行中斷處理程序。
(6)CPU執行中斷處理程序,對獲得響應的中斷源進行服務,例如,對I/O設備進行I/O操作,系統掉電時進行重要數據的保護等。
(7)中斷處理完成時,恢復被保存在堆棧中的斷點信息。
(8)CPU執行中斷返回指令(IRET),使CPU回到之前被中斷的程序斷點處繼續執行原程序。
在中斷過程中,中斷系統需要解決一系列問題,包括中斷響應的條件和時機、斷點信息保護與恢復、中斷服務程序入口地址的獲得、中斷處理的具體實現等,其中有兩個需要著力解決的問題:一是中斷源的選擇;二是中斷源的識別。
2.中斷源的選擇與識別
1)基本原則當系統中有多個中斷源時,會發生兩種情況:
(1)多個中斷源同時提出中斷請求,CPU先選擇哪個中斷請求進行響應?
(2)當CPU正在進行中斷處理時,又有新的中斷源提出請求,CPU是否選擇對新的中斷請求進行服務?
解決中斷源選擇的方法是采用中斷優先級(InterruptPriorityLevel,IPL)。首先,根據中斷事件的重要性及響應的實時性為每個中斷源分配不同級別的優先級,重要的、需及時響應的中斷源優先級高,次重要的、慢速的中斷源優先級低。內部中斷(或異常)優先級高于外部中斷,非屏蔽中斷優先級高于可屏蔽中斷,然后設計中斷優先權仲裁邏輯,使得:
(1)當多個中斷源同時提出中斷請求時,只有優先級最高的中斷源的請求被選擇,并被CPU處理。
(2)當高優先級中斷正被CPU服務時,所有低優先級中斷請求被禁止;高優先級中斷請求可以打斷低優先級中斷服務,即允許中斷嵌套(InterruptNesting)或多重中斷。
2)一般方法
中斷優先和仲裁分為軟件和硬件兩大類方案。軟件仲裁方案簡單,可以靈活地修改中斷源的優先級別,但查詢、判優完全靠程序實現,占用CPU時間,判優速度慢。硬件仲裁方案能自動封鎖優先級低的中斷請求,判優速度快,節省CPU時間,但是成本較高,一旦設計完成,將難以改變其優先級別。圖8.26為基本的中斷優先權硬件仲裁方案。圖8.26基本的中斷優先權硬件仲裁方案
圖8.27所示為一種中斷優先權軟件仲裁方案。所有中斷源的請求信號以“線或”的方式通過總線加載至CPU,如果CPU接受中斷請求,則暫停現行程序,轉而執行一個公共的中斷服務程序(放置在主存的固定位置)。該服務程序首先讀取中斷請求寄存器的內容,按照從低位到高位(或相反順序)逐位檢查是否存在有效的中斷源請求信號,若Di-1位有效(假設為1),表示中斷源i發出了中斷請求,此時中斷源i既是當前優先級最高的中斷源,也是識別出的中斷源,則服務程序發送清除相應中斷圖8.27中斷優先權軟件仲裁方案
圖8.27所示仲裁方案的優點是中斷請求電路較簡單,缺點是中斷仲裁、響應速度慢,因為軟件查詢正在請求的中斷源、執行公共的中斷服務程序均需要一定的時間。一種替代方案如圖8.28所示,該方案用硬件電路取代了軟件查詢功能。圖8.28向量中斷優先權仲裁方案
例8.5某計算機系統主存地址為32位,無條件跳轉指令(JUMP)由5字節組成,中斷系統有12個中斷源,優先權仲裁采用圖8.28所示的方案,試為12個中斷源設計中斷向量,使中斷向量表空間最小。
解12個中斷源需要優先級編碼/比較器有12條中斷請求輸入線,經編碼、比較產生k=4位地址輸出。當程序計數器PC為32位時,可以實現對32位主存地址空間的訪問。中斷響應時,可按如圖8.29所示的方式生成中斷向量。此時,中斷向量表空間為最小,占12×8字節主存單元。圖8.29例8.5中斷向量生成方式之一
例8.6某計算機系統有5級中斷:L0、L1、L2、L3、L4,硬件優先級由高至低的順序為L0→L1→L2→L3→L4。現希望設置屏蔽字將中斷響應優先順序改為L3→L1→L4→L0→L2。
(1)試給出各級中斷在屏蔽寄存器中設置的屏蔽字(假設“1”表示屏蔽);
(2)首先L0、L1級中斷源發出中斷請求,在CPU處理L1級中斷時,L2、L3、L4級中斷源又提出了中斷請求,試畫出優先級修改前、后的中斷響應以及處理過程程序運行軌跡示意圖。
解(1)各級中斷屏蔽字設置如表8.4所示。
(2)優先級修改前中斷響應、處理過程的程序運行軌跡如圖8.30所示。優先級修改后中斷響應、處理過程的程序運行軌跡如圖8.31所示。8.30例8.6優先級修改前程序運行軌跡圖8.31例8.6優先級修改后的程序運行軌跡
3)可編程中斷控制器PIC
另一種更靈活、更通用的向量中斷方案是使用功能更強大的可編程中斷控制器(ProgrammableInterruptController,PIC)取代優先級編碼/比較器。圖8.32所示是采用PIC的系統結構,PIC在中斷系統中起著管理者的作用。它接受來自外部設備的中斷請求,確定哪個請求是當前最重要(最高優先權)的,是否比當前正被服務的請求具有更高的優先級別,并且基于這些判斷向CPU發出中斷請求信號INT。在CPU接受中斷請求時,PIC能夠為CPU提供信息,用于識別中斷源。圖8.32采用PIC的系統結構
PIC的典型范例是可編程中斷控制器82C59A,它能夠管理多達8個中斷源(IR0~IR7),優先級仲裁方案有:
(1)固定優先級。IR0~IR7的優先級按順序由高(IR0)至低(IR7)。
(2)自動循環優先級。規定剛被服務完的中斷源具有最低優先級,其他依序排列。
(3)特殊循環優先級。指定某中斷源具有最低優先級,其他依序排列。
3.中斷方式的實現
中斷方式由中斷系統或中斷機構實現,它包括硬件和軟件兩部分,與程序查詢方式相比要復雜許多。
與程序查詢方式下的I/O接口相比,中斷方式下的I/O接口不需要狀態端口;當外部中斷源本身不能發出中斷請求信號時,應該在接口中加入中斷請求與響應電路(可以利用D觸發器構成)。
軟件包括初始化程序和中斷處理程序。初始化程序負責中斷過程中可能使用的中斷向量表、可編程中斷控制器PIC、可編程接口芯片的初始設置,它應在中斷系統運行前執行。中斷處理程序負責信息保護與恢復,對中斷源進行實質性的處理。每個中斷源必須有自己的中斷處理程序。
盡管各中斷處理程序不同,但其架構基本一致。圖8.33是中斷處理程序的基本框架,實線框表示必需的操作,虛線框表示可能需要的操作。圖8.33中斷處理程序的基本框架
在現代計算機的中斷系統中,對某些中斷源有另外一個名稱———異常(Exception)。所謂異常,就是計算機系統在運行過程中由于硬件設備故障、軟件運行錯誤等導致的程序或系統異常事件。對異常處理采用的基本方法就是中斷方式。對于大多數處理器而言,并不特別區別異常與中斷,通常將兩者統稱為中斷。
4.RISC-V和x86處理器中的異常與中斷
對RISC-V處理器而言,只有來自外部I/O設備的請求事件稱為中斷,而除此之外的所有能夠打斷處理器正常執行流程的事件統稱為異常。RISC-V中具體事件與中斷或異常之間的對應關系見表8.5。
在RISC-V中,當異常或中斷發生時,處理器首先將被中斷的指令地址保存在SEPC寄存器中,并將異常或中斷發生的原因、來源記錄在SCAUSE寄存器中,然后將控制權交給操作系統中指定地址處的指令。操作系統中該指定地址處的指令根據SCAUSE寄存器中記錄的異常或中斷來源執行相應的處理程序,來處理此異常或中斷事件,如為用戶程序調用相應的系統功能,或針對硬件故障執行相應的處理程序,或停止程序的執行并報告錯誤等。異常或中斷處理完畢后,根據SEPC寄存器中的地址將CPU控制權交還給原先被中斷的指令。
5.中斷處理速度
中斷的快速響應特性使其可以應用于實時系統(Real-TimeSystem),但執行中斷處理程序會影響中斷的效率。一次中斷過程需要有響應時間、信息保護與恢復時間,也許還需要中斷源識別時間(非向量中斷),這些非實質中斷處理時間統稱為中斷額外開銷時間,所以一次中斷過程所需的完整時間是對中斷源實質的處理時間與中斷額外開銷時間之和。因為中斷額外開銷時間不會為零,所以中斷頻率(單位時間內響應中斷的次數)受到一定限制。更快速地響應中斷、盡可能地縮短中斷處理時間是提高中斷處理速度的兩個重要環節,是中斷方式實現中的關注點。
例8.7某中斷系統響應中斷需要50ns,執行中斷處理程序至少需要150ns,其中有60ns用于軟件額外開銷。那么,該系統的中斷頻率最大是多少?中斷額外開銷時間占中斷時間的比例是多少?有一個字節設備,數據傳輸率為10MB/s,如果以中斷方式且每次中斷傳送一個數據,那么該系統能實現這個傳輸要求嗎?
8.4.3直接存儲器存取方式
中斷利用中斷請求消除了CPU對I/O設備狀態查詢的操作,加快了I/O操作的速度。然而,由于中斷處理速度的限制,面對高速外設的批量數據傳輸時,可能會出現中斷無法及時響應高速的數據傳輸而造成數據丟失,或頻繁中斷使CPU忙于應付I/O操作的情況。
一種更有效的輸入/輸出技術可以應對高速外設與計算機系統之間的數據交換,該技術采用I/O設備接口控制器在需要的時候替代CPU作為總線主設備,在不受CPU干預的情況下,由I/O設備接口控制器控制I/O設備與系統主存之間的直接數據傳輸,該技術就是直接存儲器存取方式,而I/O設備接口控制器稱為DMA控制器(DMAController,DMAC)。
1.DMA過程DMA方式主要實現計算機主存與I/O設備間的高速數據傳輸,實現DMA方式需要DMAC。假設總線主設備(如CPU、DMAC)通過共享系統總線訪問主存,I/O設備通過DMAC連接到系統總線上,DMAC內部邏輯及與系統連接如圖8.34所示。通常,DMAC被設計成獨立的可編程芯片,其內部的地址寄存器DMAAR、數據計數器DC可以在DMA開始前由CPU設置;數據寄存器DMADR在數據總線與I/O設備間提供了一條僅在DMA傳送時有效的數據通路;控制單元是DMAC的核心,它控制整個DMA過程的實現,包括請求/響應操作、對主存和I/O設備的讀/寫、DMAAR加1、DC減1、判斷DMA結束及發出中斷請求等。圖8.34DMAC內部邏輯及與系統連接示意圖
典型的DMA傳輸過程如下:
(1)CPU執行初始化DMAC的程序,設置數據傳輸方向、數據傳送模式等DMAC操作信息,并將DMAAR初始設置為用于數據傳輸的主存緩沖區首地址(基地址),DC初始設置為本次DMA傳送數據的數量。
(2)I/O設備在需要時向DMAC發出DMA請求信號DREQ,如果DMAC接受該請求(或在多I/O設備請求時選擇優先級最高的請求),則向CPU提出DMA請求DMA-REQ。當系統中有多個非級聯的DMAC時,應將它們先加入到總線仲裁電路中進行仲裁,將優先級最高的DMA-REQ信號提交給CPU。
(3)若CPU允許,則在DMA斷點處(見圖8.35)響應DMA請求,放棄地址、數據線的控制,使DMA-ACK有效。DMA-REQ和DMA-ACK實質上就是用于總線仲裁的BR和BG。圖8.35中斷和DMA響應時刻
(4)當DMAC接收到有效的DMA-ACK信號時,它使DACK有效,通知提出請求的I/O設備做好數據傳輸的準備,同時DMAC接管總線,開始控制I/O設備與主存之間直接的數據傳輸。
(5)DMA傳輸期間,每傳送一個數據,DMAAR加1,DC減1。
(6)當(DC)=0時,DMAC使DMA傳輸正常結束;當(DC)≠0時,重復執行步驟(5)。但如果I/O設備不準備繼續發送或接收數據,I/O設備可給DMAC發一個特殊的結束信號或使DREQ無效來通知DMAC,DMAC可使DMA傳輸中止,使本次DMA傳輸結束。
(7)DMA傳輸結束時,DMAC發出完成信號或中斷請求INTR通知CPU,并放棄對系統總線的控制。CPU通過使I/O設備停止工作或啟動一次新的DMA傳輸來響應DMAC的中斷請求。
上述步驟(1)為預處理,步驟(7)為結束處理,步驟(2)~(6)為數據傳輸處理。在步驟(5)傳送數據時,數據寄存器DMADR是作為I/O設備與數據總線DB間的數據通路的,這樣,I/O設備與主存之間的數據通路即為:
I/O設備←→DMADR←→DB←→主存,而不需要經過CPU。在實際系統中,DMADR既可以在DMAC中,也可以從DMAC中獨立出來,放在設備與總線間的I/O接口中。
2.DMA工作機制
1)DMAC與CPU的總線控制權交換方式DMAC與CPU同為總線主設備,在共享系統總線上,CPU和DMAC的沖突主要發生在同時爭用總線、訪問主存時。引入Cache,使Cache-CPU和I/O-MM訪問通路相互獨立(如采用圖8.4所示系統),可以減少沖突。但在Cache失效時,如果CPU與DMAC恰好同時訪問主存,沖突仍然會發生。解決沖突的方法就是使CPU和DMAC分時使用總線。
(1)周期挪用(竊取)方式(CycleStealingMode)。
在常規程序運行中,CPU要花費很多時間執行CPU內部操作指令(例如ADDR0,R1),在這些指令執行期間,CPU既不控制總線,也不訪問主存。周期挪用方式利用CPU做內部操作或指令譯碼等未使用總線的時間,由DMAC迅速“竊取”一個總線周期的總線控制權,做一個數據的傳輸,然后立即將總線控制權交還給CPU,如圖8.36(a)所示。此狀況不會延誤CPU時間,效率很高,亦稱為隱藏周期DMA(HiddenCycleDMA)。
若DMA操作時恰好遇到CPU存取同一個存儲器,周期挪用方式則強迫CPU暫停一個總線周期,等DMAC存取完一個數據后再令CPU繼續工作,故亦稱為暫停CPU方式(SuspendCPUMethod),如圖8.36(b)所示。這種DMA方式可以說是用“搶”總線而不是用“竊取”總線的方式獲得總線控制權的,它會使CPU的速度稍微變慢,但DMA存取速率卻可以不與CPU的時鐘同步(是非同步的)。圖8.36周期挪用方式
(2)存儲器分時方式。
存儲器分時方式又稱為交替訪存方式,它是把原來的一個存取周期分成兩個時間片,一片分給CPU,一片分給DMAC,使CPU和DMAC交替訪問主存,如圖8.37所示。圖8.37存儲器分時法
(3)停止CPU方式(StopCPUMethod)。
停止CPU方式可在一次DMA周期中傳輸一個數據或一塊數據,塊數據傳輸方式又稱突發或猝發方式(BurstMode)。當I/O設備需要DMA服務時,DMAC與CPU以總線仲裁方式來協調使用總線的時機,在CPU允許且釋放總線后,DMAC占用總線,開始連續若干個總線周期(存取周期)的全速數據傳輸,直到數據傳輸完畢后總線控制權才再交回CPU,所以停止CPU方式又稱為獨占總線方式。圖8.38是停止CPU方式的示意圖,在DMA期間,CPU完全處于停止狀態。圖8.38停止CPU方式
(4)擴展時鐘周期方式(StretchPeriodMethod)。擴展時鐘周期方式利用一組時鐘控制電路(見圖8.39(a))將系統時鐘拉長,以“欺騙”CPU的方式在這段延長時間里使用總線做DMA操作,操作時序如圖8.39(b)所示。圖8.39擴展時鐘周期方式
2)DMAC的數據傳輸模式DMAC通常有三種數據傳輸模式,即字節傳輸模式、數據塊傳輸模式、請求傳輸模式。
(1)字節傳輸模式。字節傳輸模式就是DMAC每次僅控制一個數據的傳輸,之后便結束DMA的工作周期,回到空閑周期,將系統總線控制權還給CPU。
(2)數據塊傳輸模式。在數據塊傳輸模式下,當DMAC得到系統總線的控制權后,就一直使用總線進行數據傳輸,直到整個數據塊傳輸完畢(字計數為零)或DMAC中止傳輸信號有效才將系統總線歸還給CPU。
(3)請求傳輸模式。請求傳輸模式類似于塊傳輸。在請求傳輸模式下,數據連續不斷地傳輸,直到整個數據塊被傳輸完畢(字計數為零),或是接收到外部中止信號,或當I/O設備的請求
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 微量泵使用與護理
- 2-14邏輯函數的化簡-卡諾圖法3
- 臺州科技職業學院《全科醫學概論理論》2023-2024學年第二學期期末試卷
- 鐵門關職業技術學院《礦物加工技術基礎》2023-2024學年第二學期期末試卷
- 南京醫科大學康達學院《學前兒童游戲與指導》2023-2024學年第一學期期末試卷
- 四川省宜賓市翠屏區2025年初三十月月考化學試題試卷含解析
- 上海民遠職業技術學院《物流配送中心設計》2023-2024學年第二學期期末試卷
- 遼寧省阜新二高2025屆高三第二學期入學檢測試題試卷英語試題含解析
- 江西生物科技職業學院《分子生物學實驗技術與原理》2023-2024學年第二學期期末試卷
- 江蘇省揚州市梅嶺2025屆中考第二次模擬考試語文試題理試題含解析
- 醫療設備采購投標方案技術標
- 職業技術學院環境監測技術專業人才培養方案
- 核輻射加工技術在食品安全監管中的應用
- 教育培訓合同糾紛起訴狀模板
- 入職心理測試題目及答案300道
- 英文版中國故事繪本愚公移山
- 聲吶技術介紹
- 2023廣州美術學院附屬中等美術學校(廣美附中)入學招生測試卷數學模擬卷
- 國家糧食和物資儲備局招聘考試試題及答案
- 高中物理【實驗:探究向心力大小的表達式】學案及練習題
- 城管整治占道經營方案
評論
0/150
提交評論