計(jì)算機(jī)組成與系統(tǒng)結(jié)構(gòu)課件:總線與輸入輸出系統(tǒng)_第1頁(yè)
計(jì)算機(jī)組成與系統(tǒng)結(jié)構(gòu)課件:總線與輸入輸出系統(tǒng)_第2頁(yè)
計(jì)算機(jī)組成與系統(tǒng)結(jié)構(gòu)課件:總線與輸入輸出系統(tǒng)_第3頁(yè)
計(jì)算機(jī)組成與系統(tǒng)結(jié)構(gòu)課件:總線與輸入輸出系統(tǒng)_第4頁(yè)
計(jì)算機(jī)組成與系統(tǒng)結(jié)構(gòu)課件:總線與輸入輸出系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩184頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

總線與輸入/輸出系統(tǒng)8.1概述8.2總線技術(shù)8.3輸入/輸出接口8.4輸入/輸出技術(shù)

8.1概述

8.1.1總線

一臺(tái)計(jì)算機(jī)由CPU、存儲(chǔ)器、I/O設(shè)備三類模塊組成,它們通過適當(dāng)?shù)耐愤M(jìn)行連接,連接三類模塊的通路的集合稱為互連結(jié)構(gòu)(或互連網(wǎng)絡(luò))。僅在兩個(gè)部件之間傳遞信息的通路稱為專用通路,而在不同時(shí)刻傳遞不同部件之間信息的通路稱為共享(公用)總線。更廣義地講,總線就是計(jì)算機(jī)系統(tǒng)中多個(gè)部件或設(shè)備共用的傳遞信息的數(shù)據(jù)通路(電子通道)。

現(xiàn)代計(jì)算機(jī)系統(tǒng)的典型互連結(jié)構(gòu)是總線。一個(gè)總線結(jié)構(gòu)的計(jì)算機(jī)是指其內(nèi)部的各種子系統(tǒng)和模塊通過公用總線相互連接、通信而構(gòu)成的計(jì)算機(jī)系統(tǒng),它的基本架構(gòu)如圖8.1所示。系統(tǒng)中的所有功能模塊均連接在總線上,CPU利用總線對(duì)存儲(chǔ)器、I/O資源進(jìn)行管理和操作。圖8.1利用單總線進(jìn)行連接通信的計(jì)算機(jī)系統(tǒng)

例如,將計(jì)算機(jī)系統(tǒng)主存中的數(shù)據(jù)輸出到外設(shè)的過程如下:

(1)CPU送出存儲(chǔ)單元地址到AB(地址總線),并通過AB送到主存模塊,主存模塊對(duì)接收到的主存地址進(jìn)行譯碼,從而選中指定的存儲(chǔ)單元。

(2)CPU發(fā)出讀控制信號(hào)(RD)至CB(控制總線),并通過CB送到主存模塊,使主存芯片對(duì)指定的主存單元進(jìn)行讀出操作。

(3)從主存指定單元中讀出的數(shù)據(jù)被加載至DB(數(shù)據(jù)總線)。

(4)CPU送出I/O地址到AB,I/O接口對(duì)AB上的I/O地址進(jìn)行譯碼,以確定待操作的I/O設(shè)備(接口)。

(5)CPU發(fā)出寫控制信號(hào)(WR)至CB,并通過CB送到選定的I/O設(shè)備(接口),使I/O設(shè)備(接口)對(duì)DB上的數(shù)據(jù)(從主存中讀出的)進(jìn)行接收操作。至此,完成了將主存中的數(shù)據(jù)輸出到外設(shè)的傳輸過程

從上述過程可以看出,任何模塊間的信息(地址、數(shù)據(jù)、控制)都是通過總線來傳遞的,總線成為系統(tǒng)的中樞、信息的通路,自然而然地成為了影響系統(tǒng)性能的一個(gè)重要的組成部分。

8.1.2輸入/輸出系統(tǒng)

當(dāng)利用總線將計(jì)算機(jī)系統(tǒng)中的各模塊連接在一起之后,計(jì)算機(jī)如何與外部世界發(fā)生聯(lián)系,輸入/輸出設(shè)備如何與計(jì)算機(jī)有效連接便成為輸入/輸出系統(tǒng)設(shè)計(jì)要解決的關(guān)鍵問題。輸入/輸出系統(tǒng)由輸入/輸出設(shè)備、輸入/輸出接口、輸入/輸出控制器、輸入/輸出控制管理軟件等部分組成,它主要實(shí)現(xiàn)如下功能:

(1)將各種輸入/輸出設(shè)備有效地接入到計(jì)算機(jī)系統(tǒng)中。

(2)將計(jì)算機(jī)外部輸入設(shè)備的信息輸入到計(jì)算機(jī)內(nèi)部,以便能夠得到加工處理,該功能簡(jiǎn)稱為輸入操作。

(3)將計(jì)算機(jī)內(nèi)部存儲(chǔ)或加工處理的信息輸出到計(jì)算機(jī)之外,以提供給計(jì)算機(jī)外部的輸出設(shè)備使用,該功能簡(jiǎn)稱為輸出操作。也就是說,輸入/輸出系統(tǒng)主要負(fù)責(zé)完成計(jì)算機(jī)系統(tǒng)與輸入/輸出設(shè)備之間的信息交換。

輸入/輸出系統(tǒng)的設(shè)計(jì)目標(biāo)主要有兩點(diǎn):

①使CPU與外部設(shè)備在處理速度上相互匹配;

②盡可能實(shí)現(xiàn)CPU與外部設(shè)備并行工作,提高系統(tǒng)工作效率。

8.1.3外部設(shè)備

輸入/輸出設(shè)備與外部存儲(chǔ)器統(tǒng)稱為外部設(shè)備,簡(jiǎn)稱外設(shè)。外設(shè)種類繁多,差異很大。一種非常有用的分類方法是將外設(shè)分為字符設(shè)備(CharacterDevice)和塊設(shè)備(BlockDevice)。字符設(shè)備以字符為單位做數(shù)據(jù)輸入或輸出,顯示器、打印機(jī)、鼠標(biāo)、(游戲)操縱桿屬于此類。塊設(shè)備以數(shù)據(jù)塊為單位做數(shù)據(jù)輸入或輸出,塊的大小一般為512~32768字節(jié),硬盤、光盤、磁帶屬于此類。無論是I/O設(shè)備的輸入/輸出操作,還是外存的讀寫操作,輸入/輸出系統(tǒng)對(duì)外設(shè)的管理都是通過采用適當(dāng)?shù)妮斎?輸出技術(shù)來實(shí)現(xiàn)的。

輸入設(shè)備有多種,最常用的有鼠標(biāo)、鍵盤、觸摸屏和游戲控制器等。

(1)鼠標(biāo):按工作原理可分為機(jī)械鼠標(biāo)、光學(xué)鼠標(biāo)和激光鼠標(biāo)等,現(xiàn)在最常見的是光學(xué)鼠標(biāo);按接口可分為PS2、USB、無線鼠標(biāo)等。

(2)鍵盤:按工作原理可分為機(jī)械鍵盤、塑料薄膜鍵盤、電容鍵盤等;按接口可分為PS2、USB、無線鍵盤等。

(3)觸摸屏:近十幾年引入的新輸入方式,廣泛用于平板電腦、手機(jī)、電子書閱讀器等,按工作原理可分為紅外型、電阻型和電容型等。

(4)游戲控制器:專用于視頻游戲操作的輸入設(shè)備。典型示例如任天堂的Wiimote和微軟的Kinect,它們都采用了計(jì)算機(jī)視覺技術(shù)來捕捉人體的動(dòng)作。

輸出設(shè)備也有多種,最常用的有打印機(jī)、顯示器等。

(1)打印機(jī):將計(jì)算機(jī)的運(yùn)行結(jié)果、存儲(chǔ)信息等打印在紙或其他介質(zhì)上的常用輸出設(shè)備。常見的打印機(jī)有針式打印機(jī)、噴墨打印機(jī)、激光打印機(jī)等。

(2)顯示器:常見的顯示器是液晶顯示器,而有機(jī)發(fā)光二極管(OrganicLight-EmittingDiode,OLED)顯示器是發(fā)展趨勢(shì)。顯示器接口主要有VGA、DVI、HDMI、DP等。

8.2總線技術(shù)

總線是計(jì)算機(jī)系統(tǒng)的互連機(jī)構(gòu),是連接兩個(gè)或多個(gè)總線設(shè)備的公共通信線路,是一組有定義的、可共享的、可傳遞0/1邏輯信號(hào)的連接線。總線設(shè)備是總線上連接的各種器件、部件、模塊等計(jì)算機(jī)功能部件的統(tǒng)稱,它分為主設(shè)備(Master)和從屬設(shè)備(Slave)。主設(shè)備是總線上的主控器,是發(fā)布控制命令的設(shè)備,典型示例是CPU。而從屬設(shè)備是總線上的被控對(duì)象,是接受控制命令的設(shè)備,典型示例是存儲(chǔ)器和I/O設(shè)備。

8.2.1總線類型與結(jié)構(gòu)

1.總線類型

為了適應(yīng)各種連接對(duì)象,達(dá)到有效連接的目的,總線被設(shè)計(jì)成多種類型。以下是常用的幾種分類方法。

1)按連接層次劃分

按照總線連接對(duì)象在計(jì)算機(jī)系統(tǒng)中所處的層次不同,總線可分為:

(1)片內(nèi)總線:連接CPU內(nèi)部各寄存器、運(yùn)算器等功能部件的公共連接線。片內(nèi)總線可以使CPU內(nèi)部設(shè)計(jì)、功能擴(kuò)展和升級(jí)更容易。

(2)系統(tǒng)總線:連接計(jì)算機(jī)內(nèi)部CPU、主存、I/O接口等各功能模塊的公共連接線,它由地址總線、數(shù)據(jù)總線、控制總線組成。系統(tǒng)總線也稱為內(nèi)總線,是構(gòu)成計(jì)算機(jī)的重要組成部分。

(3)通信總線:計(jì)算機(jī)之間、計(jì)算機(jī)與外設(shè)之間進(jìn)行連接的連接線。通信總線也稱為外總線或I/O總線,是構(gòu)成計(jì)算機(jī)系統(tǒng)的重要組成部分。

2)按數(shù)據(jù)位數(shù)劃分按照總線中數(shù)據(jù)線的多少不同,總線可分為:

(1)并行總線:含有多條雙向數(shù)據(jù)線的總線。

(2)串行總線:只含有一條雙向數(shù)據(jù)線或兩條單向數(shù)據(jù)線的總線。

3)按用法劃分按照總線的使用方式不同,總線可分為:

(1)專用總線:只連接一對(duì)功能部件的總線。

(2)公用(共享)總線:多個(gè)部件、模塊、設(shè)備共用的互連線。

共享總線也有很多好處。通過標(biāo)準(zhǔn)化共享總線,可以使系統(tǒng)結(jié)構(gòu)模塊化,總線接口標(biāo)準(zhǔn)化,部件選用更靈活,成本造價(jià)更低廉。

系統(tǒng)總線是典型的共享總線,計(jì)算機(jī)中的CPU、存儲(chǔ)器模塊、各種外設(shè)就是通過共享系統(tǒng)總線互連在一起的。

2.總線特性

總線不是簡(jiǎn)單的一組連接線,在所有標(biāo)準(zhǔn)化的總線規(guī)范中,總線是被全方位加以規(guī)定的。

1)總線的特性通??偩€規(guī)范中會(huì)詳細(xì)描述總線各方面的特性,如機(jī)械特性、電氣特性、功能特性和時(shí)間特性。

(1)機(jī)械特性:規(guī)定了總線的線數(shù),傳輸線采用的材料,總線插頭、插座的形狀、尺寸和信號(hào)線的排列等要素。

(2)電氣特性:規(guī)定了總線中每條信號(hào)線的有效形式、電流或電壓的變化范圍、信號(hào)傳送的方向(輸入或輸出)、信號(hào)采用單端或雙端(差動(dòng))表示、信號(hào)是單向傳輸或雙向傳輸、信號(hào)上拉電阻阻值、驅(qū)動(dòng)電路等要素。

(3)功能特性:規(guī)定了總線中每條信號(hào)線的功能及數(shù)據(jù)傳輸協(xié)議??偩€信號(hào)按功能分為:地址信號(hào)、數(shù)據(jù)信號(hào)和控制信號(hào)三類,所有地址信號(hào)線組成地址總線,所有數(shù)據(jù)信號(hào)線組成數(shù)據(jù)總線,所有控制信號(hào)線組成控制總線。

(4)時(shí)間特性:規(guī)定了總線的工作時(shí)序,即在總線上完成各種操作時(shí),相關(guān)信號(hào)狀態(tài)變化與時(shí)鐘節(jié)拍(時(shí)間)之間的關(guān)系。

2)總線的性能指標(biāo)

我們可以多方面設(shè)計(jì)和評(píng)價(jià)一個(gè)總線的性能,如總線是否具有即插即用(PlugandPlay,PNP)功能,是否支持總線設(shè)備的熱插拔,是否支持多主控設(shè)備,是否具有錯(cuò)誤檢測(cè)能力,是否依賴特定的CPU等,但以下參數(shù)是衡量總線性能很重要的指標(biāo)。

(1)總線帶寬:即總線的最大數(shù)據(jù)傳輸率(數(shù)據(jù)傳輸率定義為每秒傳輸?shù)淖止?jié)數(shù))。在同步通信方式中,總線的帶寬與總線時(shí)鐘密不可分,總線時(shí)鐘頻率的高低決定了總線帶寬的大小??偩€的實(shí)際帶寬會(huì)受到總線長(zhǎng)度(總線延遲)、總線負(fù)載、總線收發(fā)器性能(總線反射、終端匹配)等多方面因素的影響。

例8.1PCI總線的時(shí)鐘頻率為33MHz/66MHz,當(dāng)該總線進(jìn)行32/64位數(shù)據(jù)傳送時(shí),總線帶寬是多少?

解假設(shè)一個(gè)總線時(shí)鐘周期T完成一個(gè)數(shù)據(jù)的傳送,時(shí)鐘頻率為f,數(shù)據(jù)位為n,則總線帶寬B為

總線帶寬如表8.1所示。

(2)總線寬度:即總線的線數(shù),它決定了總線所占的物理空間和成本。對(duì)總線寬度最直接的影響是地址線和數(shù)據(jù)線的數(shù)量。主存空間和I/O空間的擴(kuò)充使地址線數(shù)量增加,并行傳輸要求有足夠的數(shù)據(jù)線。如64位的數(shù)據(jù)線和64位的地址線在高檔微機(jī)中已較為普遍,在大型高性能計(jì)算機(jī)中數(shù)據(jù)線和地址線更多。對(duì)于并行總線,數(shù)據(jù)線和地址線的復(fù)用是減少總線線數(shù)的有效方法;對(duì)于串行總線,則通過定義極少的(甚至沒有)控制信號(hào)及1位(或2位單向)數(shù)據(jù)線來大幅減少總線線數(shù),其代價(jià)是需要較復(fù)雜的數(shù)據(jù)傳輸格式和協(xié)議。如USB總線只有4條線,即2條數(shù)據(jù)線(差動(dòng)傳輸)、1條電源線和1條地線,但它的數(shù)據(jù)傳輸格式比較復(fù)雜,如圖8.2所示。圖8.2USB包格式

例8.2使用ISA總線的20條地址線時(shí),允許尋址的主存空間有多大?使用PCI總線的32條地址線時(shí),允許尋址的主存空間又有多大?

(3)總線負(fù)載:連接在總線上的設(shè)備的最大數(shù)量。大多數(shù)總線的負(fù)載能力是有限的,如CompactPCI總線最多可以支持7個(gè)PCI設(shè)備,USB總線利用Hub(集線器)支持最多127個(gè)USB設(shè)備的連接。PCI總線允許在一條總線中最多接入32個(gè)物理部件(總線設(shè)備,早期版本限制為10個(gè)),每一個(gè)物理部件可以含有最多8個(gè)不同的功能部件(稱為功能)。除去用于生成廣播消息的一個(gè)功能部件地址外,在一條PCI總線上最多可有255個(gè)可尋址功能部件。

3.總線結(jié)構(gòu)

在早期的計(jì)算機(jī)系統(tǒng)中,總線只有一個(gè),稱為單總線結(jié)構(gòu),如圖8.1所示。系統(tǒng)中的所有部件都連接在唯一的系統(tǒng)總線上,當(dāng)總線上一對(duì)功能部件(如CPU與存儲(chǔ)器)進(jìn)行信息交換時(shí),其他所有部件的信息傳送操作都必須停止,單總線結(jié)構(gòu)使許多操作無法并行進(jìn)行,嚴(yán)重影響了計(jì)算機(jī)速度的提高。因此,單總線結(jié)構(gòu)是早期計(jì)算機(jī)系統(tǒng)速度提高的瓶頸。另外,總線設(shè)備性能不一,差別巨大,單總線結(jié)構(gòu)要想適應(yīng)大量總線設(shè)備的連接,勢(shì)必出現(xiàn)復(fù)雜性增加而性能可能下降的狀況。

多總線結(jié)構(gòu)是由兩種以上總線組成的系統(tǒng)互連結(jié)構(gòu)。多總線結(jié)構(gòu)有多種結(jié)構(gòu)形式,如圖8.3所示的是其中一種。它由三種功能的總線集合而成,即系統(tǒng)總線、內(nèi)存總線、I/O總線。利用不同功能的總線,可以實(shí)現(xiàn)不同模塊間的相互連接和不同功能的并行處理。例如,當(dāng)CPU利用內(nèi)存總線訪問某主存區(qū)域時(shí),DMA控制器(一種總線主設(shè)備)可以利用I/O總線控制另一個(gè)主存區(qū)域與I/O設(shè)備間的數(shù)據(jù)交換。圖8.3多總線結(jié)構(gòu)示例

PCI(PeripheralComponentInterconnect,外部組件互連)總線結(jié)構(gòu)是一種典型的多總線結(jié)構(gòu)。圖8.4是一個(gè)基于PCI總線的系統(tǒng)示意圖。利用專用的CPU總線和存儲(chǔ)器(M)總線實(shí)現(xiàn)處理器、Cache和主存(MM)的連接。橋接器是PCI總線接口器件,是PCI總線上的一種特殊PCI設(shè)備,在將系統(tǒng)中的設(shè)備連接到PCI總線上起關(guān)鍵作用。圖8.4一個(gè)基于PCI的系統(tǒng)示意圖

多總線結(jié)構(gòu)中的專用總線在設(shè)計(jì)上可以與連接設(shè)備實(shí)現(xiàn)最佳匹配,所以每條總線都可以是精干、快速的。更重要的是,多總線結(jié)構(gòu)的核心優(yōu)勢(shì)是支持并行操作,而并行技術(shù)是當(dāng)前計(jì)算機(jī)提高速度或吞吐量的最有效手段。

8.2.2總線信息傳輸方式

1.總線操作

在計(jì)算機(jī)系統(tǒng)中,所有功能的實(shí)現(xiàn)基本上是由兩類操作相互配合而達(dá)成的,其一是數(shù)據(jù)在功能部件內(nèi)部進(jìn)行加工處理,其二是數(shù)據(jù)在功能部件之間進(jìn)行有效傳輸。在總線結(jié)構(gòu)中,各功能部件(總線設(shè)備)之間為實(shí)現(xiàn)各種功能所需要的控制、狀態(tài)、數(shù)據(jù)等信息是利用共享總線來傳輸?shù)?所以在總線上為配合某種功能的實(shí)現(xiàn)而進(jìn)行的各種信息的傳輸稱為總線操作。

總線操作有兩種:讀操作和寫操作。總線讀操作是從屬設(shè)備通過總線向主設(shè)備傳送數(shù)據(jù)??偩€寫操作是主設(shè)備通過總線向從屬設(shè)備傳送數(shù)據(jù)。總線操作的具體實(shí)現(xiàn)與采用哪種總線通信方式、地址/數(shù)據(jù)總線是否復(fù)用等密切相關(guān),通常用時(shí)序圖來描述。

圖8.5、圖8.6為PCI總線的讀/寫操作時(shí)序圖。圖8.5PCI總線的基本讀操作時(shí)序圖8.6PCI總線的基本寫操作時(shí)序

總線上除了讀/寫操作之外,通常還有中斷請(qǐng)求/響應(yīng)、總線請(qǐng)求/授權(quán)等操作。圖8.7是PCI總線的中斷響應(yīng)時(shí)序。與傳統(tǒng)的中斷控制器8259(見8.4.2節(jié))雙周期響應(yīng)不同,PCI運(yùn)行的是單周期響應(yīng)。將x86CPU的兩周期中斷響應(yīng)形式轉(zhuǎn)換為PCI的一周期形式是很容易由橋(Bridge)來完成的,橋丟棄了來自處理器的第一個(gè)中斷響應(yīng)周期。圖8.7PCI總線的中斷響應(yīng)時(shí)序

2.數(shù)據(jù)傳輸方式

總線上進(jìn)行一次傳輸?shù)倪^程大致分為5個(gè)階段:傳輸請(qǐng)求、總線仲裁、部件/設(shè)備尋址、數(shù)據(jù)傳輸和總線釋放。其中數(shù)據(jù)傳輸?shù)幕痉绞接胁⑿袀魉头绞?、串行傳送方式、分時(shí)傳送方式和消息傳送方式。

1)并行傳送方式

并行傳送方式主要是針對(duì)數(shù)據(jù)傳輸而言的,當(dāng)一個(gè)數(shù)據(jù)的每一位利用多條數(shù)據(jù)線同時(shí)傳輸時(shí)構(gòu)成并行傳送。

并行傳送的傳輸速率高,一般在高速傳輸?shù)膱?chǎng)合使用。

2)串行傳送方式

串行傳送方式也是針對(duì)數(shù)據(jù)傳輸而言的,當(dāng)一個(gè)數(shù)據(jù)的各位利用一條數(shù)據(jù)線依次進(jìn)行傳輸時(shí)構(gòu)成串行傳送。

串行傳送距離遠(yuǎn),所以在計(jì)算機(jī)系統(tǒng)之間、計(jì)算機(jī)系統(tǒng)與設(shè)備之間常采用串行數(shù)據(jù)傳送方式。串行傳送需要最少的數(shù)據(jù)線,傳輸成本低。但串行傳送的傳輸速率相對(duì)較低,一般在中、低速傳輸?shù)膱?chǎng)合使用。

串行傳送對(duì)數(shù)據(jù)傳輸?shù)目刂瓶梢圆捎猛酵ㄐ欧绞?也可以采用異步通信方式。

3)分時(shí)傳送方式

分時(shí)傳送方式是指在不同時(shí)段利用總線上同一個(gè)信號(hào)線傳送不同信息。

分時(shí)復(fù)用的信號(hào)需要時(shí)間信息或控制信號(hào)來加以分辨,且不能同時(shí)有效,所以,分時(shí)傳送方式會(huì)使總線操作速度有所下降,控制復(fù)雜度有所增加。但總線線數(shù)的顯著減少可以極大地降低總線成本。

4)消息傳送方式

消息(Message)是一種規(guī)定格式的數(shù)據(jù)包,該數(shù)據(jù)包包含地址、數(shù)據(jù)或控制等信息。消息傳送以猝發(fā)方式傳遞消息包。猝發(fā)方式(BurstMode)是在一個(gè)總線周期中利用一個(gè)地址段和多個(gè)數(shù)據(jù)段連續(xù)傳輸數(shù)據(jù)的一種手段,也稱為并發(fā)或成組傳輸。消息傳送使一次傳輸實(shí)現(xiàn)更快、更多的信息傳遞,所以是現(xiàn)代總線廣泛使用的數(shù)據(jù)傳輸方式,如PCI、USB等總線均采用消息傳送方式。

3.總線通信方式

在總線上通信需要收發(fā)雙方的時(shí)間配合或控制,這種時(shí)間配合或控制稱為總線定時(shí)或總線通信,其實(shí)質(zhì)是一種協(xié)議或規(guī)則,它有兩種基本方案:同步(Synchronous)通信和異步(Asynchronous)通信。

1)同步通信方式

一個(gè)同步通信總線包括一個(gè)收、發(fā)雙方公用的時(shí)鐘(在控制線中)和一個(gè)固定的協(xié)議(Protocol),該協(xié)議用于與時(shí)鐘相關(guān)聯(lián)的通信。在同步通信方式中,利用時(shí)鐘的邊沿(如上升沿)來確定其他總線信號(hào)有效或被識(shí)別的時(shí)刻。

同步通信總線有兩個(gè)主要的缺點(diǎn):其一,總線上的每個(gè)設(shè)備必須以相同的時(shí)鐘速率運(yùn)行,且時(shí)鐘速率由慢速設(shè)備決定;其二,由于時(shí)鐘偏移(ClockSkew)問題,使得同步通信總線若快速就不能太長(zhǎng)。

2)異步通信方式

異步通信總線不用公共時(shí)鐘定時(shí),總線中沒有時(shí)鐘線,也因此克服了同步通信總線的兩個(gè)主要缺點(diǎn),進(jìn)而可以連接更廣泛的設(shè)備。為協(xié)調(diào)發(fā)送設(shè)備和接收設(shè)備之間的數(shù)據(jù)傳遞,異步通信總線使用了握手協(xié)議(HandshakingProtocol),該協(xié)議利用一組附加的控制線來實(shí)現(xiàn)。握手協(xié)議由一系列操作步驟組成,從當(dāng)前步驟進(jìn)入到下一個(gè)步驟必須在收、發(fā)雙方確認(rèn)當(dāng)前步驟已經(jīng)完成時(shí)才能進(jìn)行。

典型的握手信號(hào)有數(shù)據(jù)就緒(DATARDY)/請(qǐng)求(REQ)和應(yīng)答(ACK),兩握手信號(hào)有三種協(xié)議方式:非互鎖、半互鎖、全互鎖。圖8.8是由發(fā)送設(shè)備發(fā)起的異步數(shù)據(jù)傳輸握手時(shí)序,握手信號(hào)為發(fā)送設(shè)備發(fā)出的DATARDY和接收設(shè)備發(fā)出的ACK。圖8.9是由接收設(shè)備發(fā)起的異步數(shù)據(jù)傳輸握手時(shí)序(全互鎖),握手信號(hào)為接收設(shè)備發(fā)出的DATAREQ和發(fā)送設(shè)備發(fā)出的ACK。圖8.8由發(fā)送設(shè)備發(fā)起的異步數(shù)據(jù)傳輸握手時(shí)序圖8.9由接收設(shè)備發(fā)起的異步數(shù)據(jù)傳輸握手時(shí)序(全互鎖)

在串行異步通信中,采用了一種更為簡(jiǎn)單的通信方式,即在串行異步通信總線中,既不用握手信號(hào),也沒有時(shí)鐘線,它利用收、發(fā)雙方事先約定的數(shù)據(jù)傳輸格式和傳輸速率來協(xié)調(diào)數(shù)據(jù)的傳輸。例如,在早期計(jì)算機(jī)系統(tǒng)中普遍使用的RS232串行異步通信總線上,收、發(fā)雙方使用各自的時(shí)鐘,采用最簡(jiǎn)單的3線(發(fā)送線、接收線和地線)連接結(jié)構(gòu)或7/9線連接結(jié)構(gòu),按照事先約定的數(shù)據(jù)傳輸格式(如圖8.10所示)和相同的串行傳輸波特率,收、發(fā)雙方就可以實(shí)現(xiàn)數(shù)據(jù)的發(fā)送或接收。圖8.10串行異步通信數(shù)據(jù)格式

8.2.3總線仲裁

在共享總線上,允許連接多個(gè)總線主設(shè)備和從屬設(shè)備,有可能出現(xiàn)多個(gè)主設(shè)備同時(shí)要求使用總線的情形。由于所有的總線操作都是由主設(shè)備發(fā)起或控制的,因此為了防止總線競(jìng)爭(zhēng),共享總線上某時(shí)刻只允許一個(gè)主設(shè)備使用總線,并實(shí)施對(duì)總線的控制。哪個(gè)主設(shè)備可以使用總線的選擇機(jī)制稱為總線仲裁(BusArbitration)。仲裁依據(jù)是主設(shè)備使用總線的優(yōu)先級(jí)。仲裁機(jī)制可分為集中式仲裁和分布式仲裁兩類。

1.集中式仲裁

集中式仲裁采用一個(gè)中央總線仲裁器(也稱為總線控制器),由它來決定總線上同時(shí)提出使用請(qǐng)求的主設(shè)備的總線使用優(yōu)先級(jí)。許多系統(tǒng)將總線仲裁器置于CPU內(nèi)部,也有些系統(tǒng)將其做成一個(gè)集成芯片。集中式仲裁有典型的三種方式:菊花鏈(DaisyChaining)仲裁方式、輪詢(Polling)仲裁方式和獨(dú)立請(qǐng)求(IndependentRequesting)仲裁方式。這三種方式的不同在于所需控制線的數(shù)量和仲裁的速度。為了優(yōu)勢(shì)互補(bǔ),有些系統(tǒng)將幾種仲裁方式加以組合。

1)菊花鏈仲裁方式

圖8.11所示為菊花鏈仲裁方式。該方式使用三個(gè)控制信號(hào):總線請(qǐng)求BR(BusRe-quest)、總線授權(quán)BG(BusGrant)、總線忙BB(BusBusy)。參與仲裁的所有總線設(shè)備的請(qǐng)求信號(hào)BRi與BR線連接,當(dāng)BR有效時(shí),表示有一個(gè)或多個(gè)總線設(shè)備請(qǐng)求使用總線??偩€仲裁器僅在BB無效(總線不忙)時(shí)響應(yīng)BR,使BG有效。接收到BG有效的設(shè)備將自身連接到總線上,并在其使用總線期間將BB線置為有效。圖8.11菊花鏈仲裁方式

菊花鏈仲裁邏輯可表示為(假設(shè)BR、BG、BB均為高有效)

其中,BRj為設(shè)備Dj發(fā)出的總線請(qǐng)求信號(hào),BBj為設(shè)備Dj發(fā)出的總線忙信號(hào),它們是通過集電極開路門輸出到BR或BB線上的,稱為“線或(Wired-OR)”。

菊花鏈仲裁只需要三個(gè)控制線和簡(jiǎn)單的仲裁電路,對(duì)參與仲裁的設(shè)備數(shù)量基本無限制。由于優(yōu)先級(jí)是由BG鏈路的連線確定的,因此不能更改。在高優(yōu)先級(jí)的設(shè)備有足夠高的請(qǐng)求率時(shí),可能會(huì)封鎖低優(yōu)先級(jí)設(shè)備對(duì)總線使用的請(qǐng)求。若BG鏈路出現(xiàn)問題,將會(huì)嚴(yán)重影響正常的仲裁。

2)輪詢仲裁方式

在輪詢(也稱計(jì)數(shù)查詢)仲裁方式中,先為每一個(gè)參與仲裁的設(shè)備分配唯一的設(shè)備地址,所有的設(shè)備地址是連續(xù)的,然后利用一組與所有設(shè)備直接連接的輪詢計(jì)數(shù)(Poll-Count)線替代菊花鏈的BG線,如圖8.12所示。所有設(shè)備的請(qǐng)求信號(hào)仍然接到公共的BR線上,仲裁器響應(yīng)BR時(shí),在輪詢計(jì)數(shù)線上生成一組順序的數(shù)值(與設(shè)備地址一致),每一個(gè)設(shè)備用自己的設(shè)備地址與計(jì)數(shù)線上的數(shù)值作比較,比較結(jié)果相等且有總線請(qǐng)求的設(shè)備獲得總線使用權(quán)。獲得總線使用權(quán)的設(shè)備使BB有效,并將自身連接到總線上。圖8.12輪詢仲裁方式

輪詢仲裁邏輯可表示為

其中,Addj為設(shè)備Dj的設(shè)備地址,poll_count為仲裁器輸出的輪詢計(jì)數(shù)值。

總線設(shè)備的優(yōu)先級(jí)由其設(shè)備地址在輪詢順序的位置決定。當(dāng)用計(jì)數(shù)器生成輪詢計(jì)數(shù)值時(shí),計(jì)數(shù)器有兩種設(shè)計(jì)方法:

一是循環(huán)計(jì)數(shù),

二是采用總線忙信號(hào)復(fù)位計(jì)數(shù)器。

方法一使各仲裁設(shè)備具有相同的優(yōu)先級(jí),

方法二使各仲裁設(shè)備優(yōu)先級(jí)由計(jì)數(shù)查詢順序決定。

3)獨(dú)立請(qǐng)求仲裁方式

獨(dú)立請(qǐng)求仲裁方式要求共享總線的每個(gè)設(shè)備有獨(dú)立的BR線和BG線,如圖8.13所示。總線仲裁器可以直接識(shí)別所有的請(qǐng)求設(shè)備,并做出快速的響應(yīng)??偩€仲裁器決定設(shè)備的優(yōu)先級(jí),且優(yōu)先級(jí)可編程。總線仲裁器內(nèi)部的優(yōu)先級(jí)比較電路對(duì)同時(shí)提出總線請(qǐng)求的設(shè)備優(yōu)先級(jí)進(jìn)行比較,優(yōu)先級(jí)高的設(shè)備先得到BG信號(hào)而獲得總線使用權(quán)。只有獲得總線使用權(quán)的設(shè)備才能使BB有效,并將自身連接到總線上。圖8.13獨(dú)立請(qǐng)求仲裁方式

獨(dú)立請(qǐng)求仲裁邏輯可表示為

獨(dú)立請(qǐng)求方式的主要缺陷是,為了控制n個(gè)設(shè)備需要2n條BR線和BG線連接到仲裁器上。相比較而言,菊花鏈仲裁方式僅需2條線,輪詢仲裁方式需lbn+2條線。

2.分布式仲裁

分布式仲裁不需要中央仲裁器,仲裁邏輯分布在各個(gè)設(shè)備中。

圖8.14所示的是自舉分布式仲裁方式,所有設(shè)備的忙信號(hào)采用“線或”方式連在一起,所有設(shè)備可以監(jiān)聽總線忙BB和比它優(yōu)先級(jí)高的設(shè)備發(fā)出的總線請(qǐng)求BRi,各設(shè)備僅在總線不忙且沒有高優(yōu)先級(jí)設(shè)備請(qǐng)求的情況下獲得總線使用權(quán)。圖8.14自舉分布式仲裁方式

假設(shè)圖8.14中設(shè)備的優(yōu)先級(jí)從高到低依次為D1D2…Dn,則設(shè)備仲裁邏輯可表示為

與集中式仲裁相比,圖8.14提供的自舉分布式仲裁在信號(hào)線數(shù)量上并沒有優(yōu)勢(shì),并且連接到共享總線上的設(shè)備數(shù)量還受到總線請(qǐng)求線數(shù)量的限制,但分布式仲裁防止了總線潛在的浪費(fèi)。NuBus(MacintoshⅡ的底板式總線)和SCSI總線采用此方案。圖8.15鏈?zhǔn)椒植际街俨梅绞?/p>

圖8.15所示的是一種鏈?zhǔn)椒植际街俨梅桨?它除了沒有中央仲裁器外,與菊花鏈仲裁方式十分相似。它的仲裁邏輯為

圖8.15的鏈?zhǔn)椒植际街俨梅绞綄?duì)總線上連接的設(shè)備數(shù)量沒有限制,且仲裁所需的信號(hào)線極少,所以它是一種廉價(jià)的、高速的方式。又因?yàn)椴挥弥醒胫俨闷?所以不會(huì)導(dǎo)致仲裁失敗。

Ethernet(以太網(wǎng))總線采用的是沖突檢測(cè)分布式仲裁方式。當(dāng)某設(shè)備要使用總線時(shí),它首先檢查是否有其他設(shè)備正在使用總線,如果沒有,它就置總線忙,然后使用總線。若兩個(gè)以上設(shè)備同時(shí)檢測(cè)到總線空閑,它們就可能會(huì)立即使用總線而發(fā)生沖突。一個(gè)設(shè)備在傳輸過程中,它會(huì)偵聽總線以檢測(cè)是否發(fā)生了沖突,當(dāng)沖突發(fā)生時(shí),所有設(shè)備都會(huì)停止傳輸,延遲一個(gè)隨機(jī)時(shí)間后再重新使用總線。各設(shè)備經(jīng)過不同的隨機(jī)延遲后,總會(huì)有一個(gè)設(shè)備先使用總線,從而使沖突得到解決。

Futurebus+(未來總線)總線采用的則是并行競(jìng)爭(zhēng)分布式仲裁方式。這個(gè)方式規(guī)定總線上的每個(gè)設(shè)備都有唯一的仲裁號(hào),需要使用總線的主設(shè)備把自己的仲裁號(hào)發(fā)送到仲裁線上,這個(gè)仲裁號(hào)將用于并行競(jìng)爭(zhēng)算法中。每個(gè)設(shè)備根據(jù)競(jìng)爭(zhēng)算法的結(jié)果決定在一定時(shí)間后是占用總線還是撤銷仲裁號(hào)。并行競(jìng)爭(zhēng)分布式仲裁是一種較復(fù)雜但有效的裁決方案。

8.2.4典型的總線

為了支持越來越強(qiáng)大的計(jì)算機(jī)系統(tǒng),對(duì)總線的性能要求越來越高,總線的設(shè)計(jì)及數(shù)據(jù)傳輸協(xié)議也越來越復(fù)雜??偩€寬度(線數(shù))、總線時(shí)鐘、總線仲裁、總線操作等問題都會(huì)對(duì)總線性能有直接的影響。所以從性價(jià)比、適用性等多方面考慮,目前還無法設(shè)計(jì)一種萬能總線,總線設(shè)計(jì)領(lǐng)域仍然是百花齊放、不斷發(fā)展的局面。在眾多的標(biāo)準(zhǔn)總線中,PCI總線、PCIe總線和USB總線可以說是當(dāng)代總線的佼佼者。

1.PCI總線

由于圖形界面及高速音頻、視頻數(shù)據(jù)傳輸?shù)男枨?Intel公司于1991年首先提出了PCI總線的概念。之后,Intel聯(lián)合IBM、Compaq等100多家公司共同開發(fā)PCI總線,并成立了PCI特別興趣組(PCISpecialInterestGroup,PCI-SIG)來管理、制定PCI總線標(biāo)準(zhǔn)。1992年P(guān)CI總線1.0版本正式發(fā)布。為了同步推進(jìn)PCI總線的應(yīng)用,Intel等公司開始研發(fā)各種面向PCI標(biāo)準(zhǔn)的總線接口芯片,使PCI總線很快就成為了PC中的主流系統(tǒng)總線。隨后2.0版本(1993年4月)、3.0版本(2004年4月)的發(fā)布使PCI總線完全占據(jù)了PC中的系統(tǒng)總線市場(chǎng)。

PCI總線是一種并行同步的系統(tǒng)總線,總線寬度為120或184線。PCI總線具有如下特征:

(1)不依賴處理器;

(2)每條總線支持256個(gè)功能設(shè)備;

(3)支持多達(dá)256條PCI總線;

(4)低功耗;

(5)支持猝發(fā)式事務(wù)處理(數(shù)據(jù)傳輸);

(6)最高時(shí)鐘頻率為33/66MHz;

(7)數(shù)據(jù)總線寬度為32/64位;

(8)訪問時(shí)間為2時(shí)鐘周期寫,3時(shí)鐘周期讀;

(9)并發(fā)的總線操作;

(10)支持總線主設(shè)備;

(11)隱藏的總線仲裁:集中式的獨(dú)立請(qǐng)求仲裁方式,PCI規(guī)范未規(guī)定仲裁算法;

(12)低的管腳數(shù)目:49個(gè)必備信號(hào)、52個(gè)可選信號(hào);

(13)事務(wù)處理完整性檢驗(yàn);

(14)三個(gè)地址空間:存儲(chǔ)器空間(4GB,可達(dá)到16EB)、I/O空間(64KB,可達(dá)到4GB)和配置空間(用于PnP);

(15)自動(dòng)配置,實(shí)現(xiàn)即插即用(PnP);

(16)軟件透明;

(17)具有不同尺寸的插件卡。

2.PCIExpress

為了進(jìn)一步提高傳輸速度,英特爾公司于2001年提出了PCIExpress(即PCIe)標(biāo)準(zhǔn),旨在替代之前的PCI、PCI-X等總線標(biāo)準(zhǔn)。PCIe與PCI總線有本質(zhì)區(qū)別,PCIe是一種點(diǎn)到點(diǎn)的互聯(lián)機(jī)構(gòu),借鑒了計(jì)算機(jī)網(wǎng)絡(luò),特別是交換式以太網(wǎng)的思路,將CPU、主存和各種輸入/輸出接口芯片作為端結(jié)點(diǎn),通過交換網(wǎng)絡(luò)進(jìn)行連接。每一個(gè)輸入/輸出接口芯片通過專門的點(diǎn)到點(diǎn)連線連接到交換網(wǎng)絡(luò),而點(diǎn)到點(diǎn)連線由若干信道(Lane)組成,每個(gè)信道由兩條雙向的串行線路構(gòu)成,因此,在本質(zhì)上PCIe是串行總線,并非和PCI一樣是并行總線。

圖8.16為PCIe拓?fù)浣Y(jié)構(gòu)示意圖。根復(fù)合體(RootComplex)用于將CPU和主存與PCIe交換網(wǎng)絡(luò)連接起來,一般用芯片組實(shí)現(xiàn)。PCIe端結(jié)點(diǎn)(Endpoint)為輸入/輸出設(shè)備或接口控制器,例如網(wǎng)卡、顯卡等,通過點(diǎn)到點(diǎn)線路連接到交換網(wǎng)絡(luò)。交換網(wǎng)絡(luò)(Switch)負(fù)責(zé)將PCIe信息流從一個(gè)端結(jié)點(diǎn)傳送到另一個(gè)端結(jié)點(diǎn)。圖8.16PCIe拓?fù)浣Y(jié)構(gòu)圖

在PCIe的網(wǎng)絡(luò)中,信息以數(shù)據(jù)包的形式傳送。數(shù)據(jù)包從發(fā)送端結(jié)點(diǎn)發(fā)出,經(jīng)過交換網(wǎng)絡(luò)的轉(zhuǎn)發(fā),最終傳送到接收端結(jié)點(diǎn)。每個(gè)終端結(jié)點(diǎn)和交換結(jié)點(diǎn)的PCIe端口(Port)都有協(xié)議棧,類似于計(jì)算機(jī)網(wǎng)絡(luò)領(lǐng)域的TCP/IP協(xié)議棧。PCIe協(xié)議棧如圖8.17所示,其包括以下四層。圖8.17PCIe協(xié)議棧

1)物理層

物理層(PhysicalLayer)在最底層,它負(fù)責(zé)將信息流從一個(gè)結(jié)點(diǎn)傳送到相鄰結(jié)點(diǎn)。

2)數(shù)據(jù)鏈路層

數(shù)據(jù)鏈路層(DataLinkLayer)的主要任務(wù)是在相鄰結(jié)點(diǎn)之間的PCIe鏈路上正確傳送數(shù)據(jù)包。

3)事務(wù)層

事務(wù)層(TransactionLayer)主要根據(jù)軟件層的讀寫請(qǐng)求生成TLP并發(fā)送以實(shí)現(xiàn)數(shù)據(jù)的讀寫操作。

表8.2列出了常用操作的Posted或Non-Posted屬性,觀察該表可以發(fā)現(xiàn),僅有主存寫和消息是Posted,而其他操作都是Non-Posted,其原因在于將主存寫操作設(shè)計(jì)為Posted可以提高傳送效率。

每個(gè)事務(wù)使用以下四種地址空間:

(1)主存空間:包括主存和PCIe設(shè)備I/O地址空間,主存空間的一部分映射到I/O設(shè)備。

(2)I/O空間:用于兼容舊的PCI設(shè)備。

(3)配置空間:用于讀寫I/O設(shè)備中的配置寄存器。

(4)消息空間:用于傳送控制信號(hào),例如中斷、錯(cuò)誤處理或功耗管理等。

其中,前三種地址空間是從PCI/PCI-X總線繼承過來的,而第四種消息空間是PCIe獨(dú)有的。消息空間取代了PCI總線中控制信號(hào)的作用。對(duì)四種地址空間操作的事務(wù)類型如表8.3所示,其主存讀鎖定請(qǐng)求事務(wù)的目的是實(shí)現(xiàn)對(duì)數(shù)據(jù)的原子讀寫操作,用于兼容PCI設(shè)備;Type0和Type1配置讀寫事務(wù),也是為了兼容PCI總線。

4)軟件層

軟件層是操作系統(tǒng)與PCIe的接口,它可以模仿PCI總線,使得已有操作系統(tǒng)可以不經(jīng)修改直接運(yùn)行于PCIe之上,這是PCIe兼容PCI總線的基本方式。

典型的事務(wù)層報(bào)文TLP如圖8.18所示。其中,報(bào)頭、數(shù)據(jù)和ECRC的TLP核心部分由事務(wù)層建立,報(bào)頭和數(shù)據(jù)部分根據(jù)軟件層傳來的命令確定。圖8.18事務(wù)層報(bào)文TLP結(jié)構(gòu)

3.USB總線

USB(UniversalSerialBus,通用串行總線)是由Compaq、Hewlett-Packard、Intel、Lucent、Microsoft、NEC、Philips這7家公司聯(lián)合開發(fā)的通用串行總線,其總線規(guī)范幾經(jīng)修訂,形成了現(xiàn)在廣泛使用的3.0版本。

產(chǎn)生USB的原始動(dòng)力是PC與電話連接的需求,易于使用及端口膨脹的需求,而對(duì)USB的現(xiàn)行推動(dòng)力是PC性能的不斷提高、大數(shù)據(jù)量傳輸?shù)囊笠约巴庠O(shè)性能與功能的增長(zhǎng)。

在USB2.0規(guī)范中,USB允許以三種速率傳輸數(shù)據(jù):

(1)高速(High-speed),其傳輸位速率為480Mb/s。

(2)全速(Full-speed),其傳輸位速率為12Mb/s。

(3)低速(Low-speed),其傳輸位速率為1.5Mb/s。

USB總線具有如下特征:

(1)性能優(yōu)良。USB是一種快速的、雙向的、低成本的、可熱插拔的串行通信總線。

(2)即插即用。USB連接模式單一,不需要用戶了解詳細(xì)的電氣特性;能夠自我識(shí)別外設(shè),能自動(dòng)在驅(qū)動(dòng)器與配置間進(jìn)行功能映射;可動(dòng)態(tài)地加入與重新配置外設(shè)。

(3)適用范圍寬。USB適用于帶寬范圍從幾千位每秒到幾百兆位每秒的設(shè)備;支持同一束電纜以同步或異步方式傳輸信息;支持多設(shè)備的并行操作;支持最多127個(gè)物理設(shè)備;支持主機(jī)與設(shè)備間的多數(shù)據(jù)和消息流傳輸;允許接入復(fù)合設(shè)備。因?yàn)閰f(xié)議的額外開銷較低,所以總線利用率很高。

(4)支持實(shí)時(shí)數(shù)據(jù)操作。USB對(duì)電話、音頻、視頻等設(shè)備提供了足夠的帶寬和極低的等待時(shí)間。

(5)靈活。USB允許傳送不同大小的包,并根據(jù)包的大小與等待時(shí)間來確定設(shè)備數(shù)據(jù)傳輸率的變化范圍;它在協(xié)議中建立了用于緩沖處理的流控制。

(6)健壯。USB在協(xié)議中建立了錯(cuò)誤處理/故障恢復(fù)機(jī)制;可實(shí)時(shí)識(shí)別動(dòng)態(tài)加入和移走的設(shè)備,支持故障設(shè)備的識(shí)別。

(7)與PC工業(yè)有協(xié)同作用。USB協(xié)議對(duì)于設(shè)計(jì)與集成來說是簡(jiǎn)單的;它與PC的即插即用結(jié)構(gòu)相一致;對(duì)現(xiàn)有的操作系統(tǒng)接口具有影響力。

(8)提供低成本實(shí)現(xiàn)方案。提供低成本電纜和連接器,適應(yīng)低成本外設(shè)的開發(fā)。

(9)USB結(jié)構(gòu)可以升級(jí)為在一個(gè)系統(tǒng)中支持多個(gè)USB主機(jī)控制器。

4.總線的應(yīng)用

作為總線應(yīng)用的一個(gè)示例,圖8.19給出的是采用Intel955芯片組的PC系統(tǒng)。該系統(tǒng)采用了先進(jìn)的Core2雙核處理器,內(nèi)含PCI、PCIe、USB2.0、SMBus(SystemManagementBus)等多種總線。與以PCI總線為核心構(gòu)建系統(tǒng)架構(gòu)(參見圖8.4)的情形不同,該系統(tǒng)架構(gòu)的核心是芯片組,系統(tǒng)完全是圍繞著955芯片組(MCH955+ICH7組合)來組建的,PCI總線在此扮演的僅僅是與USB等總線類似的角色。圖8.19采用Intel955芯片組的PC系統(tǒng)

8.3輸入/輸出接口

CPU或I/O處理器、總線、I/O接口、I/O設(shè)備、I/O管理控制軟件等構(gòu)成了輸入/輸出系統(tǒng),該系統(tǒng)的任務(wù)是將各種I/O設(shè)備的信息輸入到計(jì)算機(jī)系統(tǒng)或?qū)⒂?jì)算機(jī)系統(tǒng)的信息輸出給I/O設(shè)備。輸入/輸出系統(tǒng)作為計(jì)算機(jī)系統(tǒng)與外界聯(lián)系不可缺少的重要組成部分,它的工作方式直接影響到計(jì)算機(jī)系統(tǒng)的性能。對(duì)輸入/輸出系統(tǒng)的研究涉及兩個(gè)方面:

一是如何將I/O設(shè)備與計(jì)算機(jī)相連接;

二是如何快速、有效地使I/O設(shè)備與計(jì)算機(jī)進(jìn)行信息交換。本節(jié)重點(diǎn)討論I/O設(shè)備與計(jì)算機(jī)連接的問題,8.4節(jié)重點(diǎn)討論I/O設(shè)備與計(jì)算機(jī)通信的問題。

I/O設(shè)備種類繁多,在功能、操作方式、速度、信號(hào)等方面差異巨大,它們中的絕大多數(shù)與總線信號(hào)、速度等不相符而不能直接和總線相連接。一種普遍采用的有效的方式是利用I/O接口連接,如圖8.20所示,該模型也適用于硬盤、光盤等外存與系統(tǒng)總線的連接。

圖8.20I/O設(shè)備與總線連接的一般模型

1.I/O接口的作用及模型

I/O接口不是I/O設(shè)備與總線之間簡(jiǎn)單的連接線,它除了在I/O設(shè)備與總線之間提供基本的信息傳輸通道傳遞數(shù)據(jù)之外,還負(fù)責(zé)I/O設(shè)備與總線之間的設(shè)備選擇、設(shè)備控制、信號(hào)形式轉(zhuǎn)換、速度匹配、數(shù)據(jù)緩存、錯(cuò)誤檢測(cè)、負(fù)載匹配、支持中斷等功能的實(shí)現(xiàn),甚至對(duì)于某些復(fù)雜的外設(shè),I/O接口還是“智能”的控制器。

簡(jiǎn)單I/O接口和智能I/O接口在硬件邏輯的復(fù)雜性上相差很大,但從程序員的角度來看,所有I/O接口可以隱藏外設(shè)的定時(shí)、機(jī)電、數(shù)據(jù)格式等細(xì)節(jié),它們的差別僅僅在于接口內(nèi)部可讀/寫的寄存器或緩沖器的數(shù)量不同。

典型的I/O接口模型如圖8.21所示。圖8.21I/O接口模型

2.I/O接口設(shè)計(jì)

I/O接口設(shè)計(jì)是輸入/輸出系統(tǒng)硬件設(shè)計(jì)的重要一環(huán)。I/O設(shè)備不同,其接口電路有很大差別。對(duì)于簡(jiǎn)單的I/O設(shè)備,可以使用廠家提供的某些設(shè)備芯片(如三態(tài)緩沖器、鎖存器、可編程并行接口芯片、可編程串行接口芯片等)設(shè)計(jì)滿足接口要求的I/O接口電路。對(duì)于復(fù)雜的I/O設(shè)備,可以利用廠家提供的單片機(jī)、微控制器(MCU)、嵌入式處理器等設(shè)計(jì)滿足設(shè)備要求的I/O控制器,I/O控制器實(shí)質(zhì)就是一個(gè)微小型的計(jì)算機(jī)系統(tǒng)。

在圖8.21中,對(duì)端口寄存器的尋址是對(duì)地址總線AB上CPU發(fā)出的I/O地址進(jìn)行譯碼來實(shí)現(xiàn)的,地址譯碼器是I/O接口中IO控制邏輯的一部分。采用接口芯片設(shè)計(jì)I/O接口電路時(shí),地址譯碼器設(shè)計(jì)是I/O接口設(shè)計(jì)的重要內(nèi)容之一。

例8.3發(fā)光二極管是一種非常簡(jiǎn)單且常用的外設(shè),假設(shè)將發(fā)光二極管連接在計(jì)算機(jī)系統(tǒng)中的ISA總線上,且為該外設(shè)分配的I/O地址為8820H,試設(shè)計(jì)發(fā)光二極管的接口電路。

解用鎖存器作為接口芯片可以非常方便地將發(fā)光二極管接入到計(jì)算機(jī)系統(tǒng)總線上。鎖存器有多種型號(hào),在此選用74LS273。

發(fā)光二極管的接口電路如圖8.22所示,譯碼電路對(duì)I/O地址8820H進(jìn)行譯碼。在圖8.22發(fā)光二極管接口電路

如果外設(shè)是數(shù)字化的并行設(shè)備,接口芯片應(yīng)選擇三態(tài)緩沖器、鎖存器、可編程并行接口芯片等能夠提供并行數(shù)據(jù)傳輸?shù)钠骷?如果外設(shè)是數(shù)字化的串行設(shè)備,接口芯片應(yīng)選擇可編程串行接口芯片等能夠提供串并數(shù)據(jù)轉(zhuǎn)換的器件;如果外設(shè)是模擬設(shè)備,接口電路中應(yīng)加入A/D或D/A轉(zhuǎn)換器。如果外設(shè)速度較快或希望與計(jì)算機(jī)并行工作,則接口電路最好設(shè)計(jì)為具有“智能”的I/O控制器(或稱設(shè)備控制器)。

8.4輸入/輸出技術(shù)

面對(duì)復(fù)雜的I/O設(shè)備,應(yīng)采用不同的輸入/輸出技術(shù)以滿足各種I/O設(shè)備與計(jì)算機(jī)進(jìn)行信息交換的要求。目前可以采用的輸入/輸出技術(shù)有:程序查詢(ProgrammedI/O)方式、中斷(Interrupt-drivenI/O)方式、直接存儲(chǔ)器存取(DirectMemoryAccess,DMA)方式、I/O通道(I/OChannel)方式。

選擇I/O技術(shù)的基本原則是:

①能滿足用戶的數(shù)據(jù)傳送速度要求且不丟失數(shù)據(jù);

②系統(tǒng)開銷盡量小;

③能充分發(fā)揮硬件資源的能力(使I/O設(shè)備與CPU盡可能并行工作)。

8.4.1程序查詢方式

程序查詢方式是最簡(jiǎn)單的輸入/輸出技術(shù),每個(gè)計(jì)算機(jī)系統(tǒng)都具備。利用程序查詢I/O,可以實(shí)現(xiàn)處理器(通過接口)與I/O設(shè)備之間的數(shù)據(jù)交換。

程序查詢方式的實(shí)現(xiàn)不是僅有軟件(程序)就可以了,它必須有硬件的支持。實(shí)現(xiàn)程序查詢方式的前提是必須有I/O接口,I/O接口中必須要有狀態(tài)寄存器,該狀態(tài)寄存器中要能夠記錄I/O設(shè)備的工作狀態(tài)或與輸入/輸出操作關(guān)聯(lián)的接口的工作狀態(tài)。

程序查詢方式要求所有的I/O操作必須在CPU的直接控制下完成,也就是說,每個(gè)數(shù)據(jù)傳輸操作都由CPU執(zhí)行指令來實(shí)現(xiàn)。圖8.23描述的就是程序查詢方式下CPU要執(zhí)行的一段程序。首先,CPU讀取狀態(tài)端口寄存器獲得I/O設(shè)備當(dāng)前的工作狀態(tài),如果I/O設(shè)備未準(zhǔn)備就緒,則CPU等待并不斷查詢I/O設(shè)備的狀態(tài);如果I/O設(shè)備已準(zhǔn)備就緒,則CPU發(fā)出讀或?qū)憯?shù)據(jù)寄存器的命令,完成將I/O設(shè)備的數(shù)據(jù)讀入CPU內(nèi)部寄存器或?qū)PU內(nèi)部寄存器的數(shù)據(jù)輸出到I/O設(shè)備中的I/O操作。圖8.23程序查詢I/O流程

例8.4某外設(shè)與80386DX微機(jī)系統(tǒng)的連接電路如圖8.24所示,當(dāng)外設(shè)不忙(BUSY=0)時(shí),可以從外設(shè)獲取數(shù)據(jù);當(dāng)外設(shè)忙(正在準(zhǔn)備新數(shù)據(jù))時(shí),不可以操作外設(shè)。請(qǐng)利用程序查詢方式編寫從外設(shè)獲取1000個(gè)數(shù)據(jù)并存于以BUFFER為首地址的主存區(qū)域的程序段。圖8.24程序查詢I/O操作示例

解圖中74LS244為三態(tài)緩沖器,是外設(shè)與80386DX微機(jī)系統(tǒng)總線之間的輸入接口器件,上邊的74LS244為8位數(shù)據(jù)輸入端口寄存器,端口地址為7CH,下邊的74LS244為狀態(tài)端口寄存器,端口地址為7DH。80386DX微機(jī)的32位I/O系統(tǒng)的地址空間分為4個(gè)體(Bank),每個(gè)體支持8位數(shù)據(jù)的輸入/輸出,分別用BE0、BE1、BE2、BE3選擇。

8.4.2中斷方式

程序查詢方式主要有以下限制:

(1)I/O數(shù)據(jù)傳輸速率低。CPU測(cè)試I/O設(shè)備狀態(tài),為I/O設(shè)備服務(wù)(進(jìn)行I/O操作),通常需要執(zhí)行若干條指令,當(dāng)連續(xù)傳輸一批數(shù)據(jù)時(shí),至少執(zhí)行7條指令(參見例8.4)才能完成一個(gè)數(shù)據(jù)的傳輸,這極大地限制了I/O數(shù)據(jù)傳輸率的提高。

(2)CPU工作效率較低。由于CPU花費(fèi)較多的時(shí)間進(jìn)行I/O設(shè)備狀態(tài)的查詢,因此在單位時(shí)間內(nèi)完成的任務(wù)數(shù)量較少,導(dǎo)致工作效率不高。

(3)不能保證及時(shí)響應(yīng)I/O設(shè)備的I/O服務(wù)請(qǐng)求。當(dāng)I/O設(shè)備較多時(shí),由于CPU只能輪詢I/O設(shè)備的狀態(tài),會(huì)出現(xiàn)設(shè)備已準(zhǔn)備就緒但還未輪到被查詢的情況,這樣CPU就不能為這個(gè)已準(zhǔn)備就緒的設(shè)備及時(shí)進(jìn)行輸入/輸出操作。

中斷是解決上述問題的有效方式之一,是I/O設(shè)備獲得CPU服務(wù)的主要方式。讓CPU擺脫檢測(cè)I/O設(shè)備狀態(tài)轉(zhuǎn)而執(zhí)行其他任務(wù),且僅在I/O設(shè)備準(zhǔn)備就緒時(shí)CPU才直接、快速訪問I/O設(shè)備,中斷可以極大改善計(jì)算機(jī)的I/O特性

中斷是指中斷源在需要得到CPU服務(wù)時(shí),請(qǐng)求CPU暫?,F(xiàn)行工作轉(zhuǎn)向?yàn)橹袛嘣捶?wù),服務(wù)完成后,再讓CPU回到原工作狀態(tài)繼續(xù)完成被打斷的工作。從程序運(yùn)行的角度來看,中斷是一種程序控制流的變化,如圖8.25所示。當(dāng)中斷發(fā)生時(shí),CPU暫停當(dāng)前正在執(zhí)行的程序,將控制權(quán)交給中斷處理程序,由中斷處理程序執(zhí)行中斷源希望的操作;當(dāng)中斷處理程序執(zhí)行完畢,控制權(quán)又交回被中斷的程序。對(duì)控制權(quán)交換的基本要求是被中斷的程序重新運(yùn)行時(shí)必須處于和被中斷前完全相同的狀態(tài)。圖8.25中斷過程示意圖

中斷源就是引起中斷發(fā)生的源頭,它來自CPU內(nèi)部或外部,它可以是某個(gè)事件或某個(gè)設(shè)備,如計(jì)算機(jī)系統(tǒng)工作異常、運(yùn)算溢出、功能調(diào)用等是內(nèi)部中斷源,而系統(tǒng)電源掉電、設(shè)備或線路故障、定時(shí)器時(shí)間到、啟動(dòng)或停止I/O設(shè)備、I/O設(shè)備輸入/輸出操作等是外部中斷源。廣義地說,任意一個(gè)需要CPU特別處理(服務(wù))的事件都可以成為中斷源。大部分系統(tǒng)將外部中斷源分為兩類,即非屏蔽中斷源和可屏蔽中斷源。非屏蔽中斷源的中斷請(qǐng)求是不可屏蔽的,是CPU必須要響應(yīng)的;可屏蔽中斷源的中斷請(qǐng)求是可以被屏蔽的,只有在未被屏蔽(中斷允許)的情況下CPU才有可能響應(yīng)它。

由內(nèi)部中斷源引發(fā)的中斷稱為內(nèi)中斷或軟件中斷,由外部中斷源引發(fā)的中斷稱為外中斷或硬件中斷。通常,內(nèi)中斷是不可屏蔽的,而外中斷分為可屏蔽和非屏蔽兩類。

1.中斷過程

中斷一旦發(fā)生,中斷源首先要利用中斷請(qǐng)求信號(hào)INT-REQ向CPU提出中斷請(qǐng)求,該請(qǐng)求被記錄在CPU內(nèi)部寄存器中,CPU在每條指令執(zhí)行結(jié)束時(shí)檢測(cè)中斷請(qǐng)求是否有效,當(dāng)有效的中斷請(qǐng)求被識(shí)別與接受后,CPU便執(zhí)行一個(gè)特定的中斷處理程序(Interrupt-HandlingRoutine),以此實(shí)現(xiàn)對(duì)中斷源的服務(wù)。

一個(gè)典型的中斷過程(如圖8.25所示)如下:

(1)若某中斷事件發(fā)生,中斷源向CPU發(fā)出有效的INT-REQ。

(2)CPU結(jié)束當(dāng)前指令的執(zhí)行,進(jìn)入對(duì)中斷請(qǐng)求信號(hào)的檢測(cè)。

(3)如果CPU檢測(cè)到有效的中斷請(qǐng)求信號(hào)且滿足響應(yīng)條件(CPU允許中斷且該中斷未被屏蔽),則向提出請(qǐng)求的中斷源發(fā)出中斷響應(yīng)信號(hào)INT-ACK,轉(zhuǎn)向(4);否則,CPU繼續(xù)執(zhí)行下一條指令,轉(zhuǎn)向(2)。

(4)CPU進(jìn)行斷點(diǎn)保護(hù),即將現(xiàn)行程序被打斷處的處理器狀態(tài)PSW和斷點(diǎn)(返回)地址(程序計(jì)數(shù)器PC的內(nèi)容)保存在堆棧中;同時(shí),獲得有效INTACK信號(hào)的中斷源撤銷它發(fā)出的中斷請(qǐng)求信號(hào),并為CPU提供它的中斷處理程序入口地址的相關(guān)信息。

(5)如果有多個(gè)中斷源,則CPU要先識(shí)別高優(yōu)先級(jí)的中斷源,然后根據(jù)中斷源提供的相關(guān)信息獲得中斷處理程序入口地址(首地址),并將其裝入PC,再依據(jù)PC轉(zhuǎn)向執(zhí)行中斷處理程序。

(6)CPU執(zhí)行中斷處理程序,對(duì)獲得響應(yīng)的中斷源進(jìn)行服務(wù),例如,對(duì)I/O設(shè)備進(jìn)行I/O操作,系統(tǒng)掉電時(shí)進(jìn)行重要數(shù)據(jù)的保護(hù)等。

(7)中斷處理完成時(shí),恢復(fù)被保存在堆棧中的斷點(diǎn)信息。

(8)CPU執(zhí)行中斷返回指令(IRET),使CPU回到之前被中斷的程序斷點(diǎn)處繼續(xù)執(zhí)行原程序。

在中斷過程中,中斷系統(tǒng)需要解決一系列問題,包括中斷響應(yīng)的條件和時(shí)機(jī)、斷點(diǎn)信息保護(hù)與恢復(fù)、中斷服務(wù)程序入口地址的獲得、中斷處理的具體實(shí)現(xiàn)等,其中有兩個(gè)需要著力解決的問題:一是中斷源的選擇;二是中斷源的識(shí)別。

2.中斷源的選擇與識(shí)別

1)基本原則當(dāng)系統(tǒng)中有多個(gè)中斷源時(shí),會(huì)發(fā)生兩種情況:

(1)多個(gè)中斷源同時(shí)提出中斷請(qǐng)求,CPU先選擇哪個(gè)中斷請(qǐng)求進(jìn)行響應(yīng)?

(2)當(dāng)CPU正在進(jìn)行中斷處理時(shí),又有新的中斷源提出請(qǐng)求,CPU是否選擇對(duì)新的中斷請(qǐng)求進(jìn)行服務(wù)?

解決中斷源選擇的方法是采用中斷優(yōu)先級(jí)(InterruptPriorityLevel,IPL)。首先,根據(jù)中斷事件的重要性及響應(yīng)的實(shí)時(shí)性為每個(gè)中斷源分配不同級(jí)別的優(yōu)先級(jí),重要的、需及時(shí)響應(yīng)的中斷源優(yōu)先級(jí)高,次重要的、慢速的中斷源優(yōu)先級(jí)低。內(nèi)部中斷(或異常)優(yōu)先級(jí)高于外部中斷,非屏蔽中斷優(yōu)先級(jí)高于可屏蔽中斷,然后設(shè)計(jì)中斷優(yōu)先權(quán)仲裁邏輯,使得:

(1)當(dāng)多個(gè)中斷源同時(shí)提出中斷請(qǐng)求時(shí),只有優(yōu)先級(jí)最高的中斷源的請(qǐng)求被選擇,并被CPU處理。

(2)當(dāng)高優(yōu)先級(jí)中斷正被CPU服務(wù)時(shí),所有低優(yōu)先級(jí)中斷請(qǐng)求被禁止;高優(yōu)先級(jí)中斷請(qǐng)求可以打斷低優(yōu)先級(jí)中斷服務(wù),即允許中斷嵌套(InterruptNesting)或多重中斷。

2)一般方法

中斷優(yōu)先和仲裁分為軟件和硬件兩大類方案。軟件仲裁方案簡(jiǎn)單,可以靈活地修改中斷源的優(yōu)先級(jí)別,但查詢、判優(yōu)完全靠程序?qū)崿F(xiàn),占用CPU時(shí)間,判優(yōu)速度慢。硬件仲裁方案能自動(dòng)封鎖優(yōu)先級(jí)低的中斷請(qǐng)求,判優(yōu)速度快,節(jié)省CPU時(shí)間,但是成本較高,一旦設(shè)計(jì)完成,將難以改變其優(yōu)先級(jí)別。圖8.26為基本的中斷優(yōu)先權(quán)硬件仲裁方案。圖8.26基本的中斷優(yōu)先權(quán)硬件仲裁方案

圖8.27所示為一種中斷優(yōu)先權(quán)軟件仲裁方案。所有中斷源的請(qǐng)求信號(hào)以“線或”的方式通過總線加載至CPU,如果CPU接受中斷請(qǐng)求,則暫?,F(xiàn)行程序,轉(zhuǎn)而執(zhí)行一個(gè)公共的中斷服務(wù)程序(放置在主存的固定位置)。該服務(wù)程序首先讀取中斷請(qǐng)求寄存器的內(nèi)容,按照從低位到高位(或相反順序)逐位檢查是否存在有效的中斷源請(qǐng)求信號(hào),若Di-1位有效(假設(shè)為1),表示中斷源i發(fā)出了中斷請(qǐng)求,此時(shí)中斷源i既是當(dāng)前優(yōu)先級(jí)最高的中斷源,也是識(shí)別出的中斷源,則服務(wù)程序發(fā)送清除相應(yīng)中斷圖8.27中斷優(yōu)先權(quán)軟件仲裁方案

圖8.27所示仲裁方案的優(yōu)點(diǎn)是中斷請(qǐng)求電路較簡(jiǎn)單,缺點(diǎn)是中斷仲裁、響應(yīng)速度慢,因?yàn)檐浖樵冋谡?qǐng)求的中斷源、執(zhí)行公共的中斷服務(wù)程序均需要一定的時(shí)間。一種替代方案如圖8.28所示,該方案用硬件電路取代了軟件查詢功能。圖8.28向量中斷優(yōu)先權(quán)仲裁方案

例8.5某計(jì)算機(jī)系統(tǒng)主存地址為32位,無條件跳轉(zhuǎn)指令(JUMP)由5字節(jié)組成,中斷系統(tǒng)有12個(gè)中斷源,優(yōu)先權(quán)仲裁采用圖8.28所示的方案,試為12個(gè)中斷源設(shè)計(jì)中斷向量,使中斷向量表空間最小。

解12個(gè)中斷源需要優(yōu)先級(jí)編碼/比較器有12條中斷請(qǐng)求輸入線,經(jīng)編碼、比較產(chǎn)生k=4位地址輸出。當(dāng)程序計(jì)數(shù)器PC為32位時(shí),可以實(shí)現(xiàn)對(duì)32位主存地址空間的訪問。中斷響應(yīng)時(shí),可按如圖8.29所示的方式生成中斷向量。此時(shí),中斷向量表空間為最小,占12×8字節(jié)主存單元。圖8.29例8.5中斷向量生成方式之一

例8.6某計(jì)算機(jī)系統(tǒng)有5級(jí)中斷:L0、L1、L2、L3、L4,硬件優(yōu)先級(jí)由高至低的順序?yàn)長(zhǎng)0→L1→L2→L3→L4?,F(xiàn)希望設(shè)置屏蔽字將中斷響應(yīng)優(yōu)先順序改為L(zhǎng)3→L1→L4→L0→L2。

(1)試給出各級(jí)中斷在屏蔽寄存器中設(shè)置的屏蔽字(假設(shè)“1”表示屏蔽);

(2)首先L0、L1級(jí)中斷源發(fā)出中斷請(qǐng)求,在CPU處理L1級(jí)中斷時(shí),L2、L3、L4級(jí)中斷源又提出了中斷請(qǐng)求,試畫出優(yōu)先級(jí)修改前、后的中斷響應(yīng)以及處理過程程序運(yùn)行軌跡示意圖。

解(1)各級(jí)中斷屏蔽字設(shè)置如表8.4所示。

(2)優(yōu)先級(jí)修改前中斷響應(yīng)、處理過程的程序運(yùn)行軌跡如圖8.30所示。優(yōu)先級(jí)修改后中斷響應(yīng)、處理過程的程序運(yùn)行軌跡如圖8.31所示。8.30例8.6優(yōu)先級(jí)修改前程序運(yùn)行軌跡圖8.31例8.6優(yōu)先級(jí)修改后的程序運(yùn)行軌跡

3)可編程中斷控制器PIC

另一種更靈活、更通用的向量中斷方案是使用功能更強(qiáng)大的可編程中斷控制器(ProgrammableInterruptController,PIC)取代優(yōu)先級(jí)編碼/比較器。圖8.32所示是采用PIC的系統(tǒng)結(jié)構(gòu),PIC在中斷系統(tǒng)中起著管理者的作用。它接受來自外部設(shè)備的中斷請(qǐng)求,確定哪個(gè)請(qǐng)求是當(dāng)前最重要(最高優(yōu)先權(quán))的,是否比當(dāng)前正被服務(wù)的請(qǐng)求具有更高的優(yōu)先級(jí)別,并且基于這些判斷向CPU發(fā)出中斷請(qǐng)求信號(hào)INT。在CPU接受中斷請(qǐng)求時(shí),PIC能夠?yàn)镃PU提供信息,用于識(shí)別中斷源。圖8.32采用PIC的系統(tǒng)結(jié)構(gòu)

PIC的典型范例是可編程中斷控制器82C59A,它能夠管理多達(dá)8個(gè)中斷源(IR0~IR7),優(yōu)先級(jí)仲裁方案有:

(1)固定優(yōu)先級(jí)。IR0~IR7的優(yōu)先級(jí)按順序由高(IR0)至低(IR7)。

(2)自動(dòng)循環(huán)優(yōu)先級(jí)。規(guī)定剛被服務(wù)完的中斷源具有最低優(yōu)先級(jí),其他依序排列。

(3)特殊循環(huán)優(yōu)先級(jí)。指定某中斷源具有最低優(yōu)先級(jí),其他依序排列。

3.中斷方式的實(shí)現(xiàn)

中斷方式由中斷系統(tǒng)或中斷機(jī)構(gòu)實(shí)現(xiàn),它包括硬件和軟件兩部分,與程序查詢方式相比要復(fù)雜許多。

與程序查詢方式下的I/O接口相比,中斷方式下的I/O接口不需要狀態(tài)端口;當(dāng)外部中斷源本身不能發(fā)出中斷請(qǐng)求信號(hào)時(shí),應(yīng)該在接口中加入中斷請(qǐng)求與響應(yīng)電路(可以利用D觸發(fā)器構(gòu)成)。

軟件包括初始化程序和中斷處理程序。初始化程序負(fù)責(zé)中斷過程中可能使用的中斷向量表、可編程中斷控制器PIC、可編程接口芯片的初始設(shè)置,它應(yīng)在中斷系統(tǒng)運(yùn)行前執(zhí)行。中斷處理程序負(fù)責(zé)信息保護(hù)與恢復(fù),對(duì)中斷源進(jìn)行實(shí)質(zhì)性的處理。每個(gè)中斷源必須有自己的中斷處理程序。

盡管各中斷處理程序不同,但其架構(gòu)基本一致。圖8.33是中斷處理程序的基本框架,實(shí)線框表示必需的操作,虛線框表示可能需要的操作。圖8.33中斷處理程序的基本框架

在現(xiàn)代計(jì)算機(jī)的中斷系統(tǒng)中,對(duì)某些中斷源有另外一個(gè)名稱———異常(Exception)。所謂異常,就是計(jì)算機(jī)系統(tǒng)在運(yùn)行過程中由于硬件設(shè)備故障、軟件運(yùn)行錯(cuò)誤等導(dǎo)致的程序或系統(tǒng)異常事件。對(duì)異常處理采用的基本方法就是中斷方式。對(duì)于大多數(shù)處理器而言,并不特別區(qū)別異常與中斷,通常將兩者統(tǒng)稱為中斷。

4.RISC-V和x86處理器中的異常與中斷

對(duì)RISC-V處理器而言,只有來自外部I/O設(shè)備的請(qǐng)求事件稱為中斷,而除此之外的所有能夠打斷處理器正常執(zhí)行流程的事件統(tǒng)稱為異常。RISC-V中具體事件與中斷或異常之間的對(duì)應(yīng)關(guān)系見表8.5。

在RISC-V中,當(dāng)異?;蛑袛喟l(fā)生時(shí),處理器首先將被中斷的指令地址保存在SEPC寄存器中,并將異?;蛑袛喟l(fā)生的原因、來源記錄在SCAUSE寄存器中,然后將控制權(quán)交給操作系統(tǒng)中指定地址處的指令。操作系統(tǒng)中該指定地址處的指令根據(jù)SCAUSE寄存器中記錄的異?;蛑袛鄟碓磮?zhí)行相應(yīng)的處理程序,來處理此異?;蛑袛嗍录?如為用戶程序調(diào)用相應(yīng)的系統(tǒng)功能,或針對(duì)硬件故障執(zhí)行相應(yīng)的處理程序,或停止程序的執(zhí)行并報(bào)告錯(cuò)誤等。異?;蛑袛嗵幚硗戤吅?根據(jù)SEPC寄存器中的地址將CPU控制權(quán)交還給原先被中斷的指令。

5.中斷處理速度

中斷的快速響應(yīng)特性使其可以應(yīng)用于實(shí)時(shí)系統(tǒng)(Real-TimeSystem),但執(zhí)行中斷處理程序會(huì)影響中斷的效率。一次中斷過程需要有響應(yīng)時(shí)間、信息保護(hù)與恢復(fù)時(shí)間,也許還需要中斷源識(shí)別時(shí)間(非向量中斷),這些非實(shí)質(zhì)中斷處理時(shí)間統(tǒng)稱為中斷額外開銷時(shí)間,所以一次中斷過程所需的完整時(shí)間是對(duì)中斷源實(shí)質(zhì)的處理時(shí)間與中斷額外開銷時(shí)間之和。因?yàn)橹袛囝~外開銷時(shí)間不會(huì)為零,所以中斷頻率(單位時(shí)間內(nèi)響應(yīng)中斷的次數(shù))受到一定限制。更快速地響應(yīng)中斷、盡可能地縮短中斷處理時(shí)間是提高中斷處理速度的兩個(gè)重要環(huán)節(jié),是中斷方式實(shí)現(xiàn)中的關(guān)注點(diǎn)。

例8.7某中斷系統(tǒng)響應(yīng)中斷需要50ns,執(zhí)行中斷處理程序至少需要150ns,其中有60ns用于軟件額外開銷。那么,該系統(tǒng)的中斷頻率最大是多少?中斷額外開銷時(shí)間占中斷時(shí)間的比例是多少?有一個(gè)字節(jié)設(shè)備,數(shù)據(jù)傳輸率為10MB/s,如果以中斷方式且每次中斷傳送一個(gè)數(shù)據(jù),那么該系統(tǒng)能實(shí)現(xiàn)這個(gè)傳輸要求嗎?

8.4.3直接存儲(chǔ)器存取方式

中斷利用中斷請(qǐng)求消除了CPU對(duì)I/O設(shè)備狀態(tài)查詢的操作,加快了I/O操作的速度。然而,由于中斷處理速度的限制,面對(duì)高速外設(shè)的批量數(shù)據(jù)傳輸時(shí),可能會(huì)出現(xiàn)中斷無法及時(shí)響應(yīng)高速的數(shù)據(jù)傳輸而造成數(shù)據(jù)丟失,或頻繁中斷使CPU忙于應(yīng)付I/O操作的情況。

一種更有效的輸入/輸出技術(shù)可以應(yīng)對(duì)高速外設(shè)與計(jì)算機(jī)系統(tǒng)之間的數(shù)據(jù)交換,該技術(shù)采用I/O設(shè)備接口控制器在需要的時(shí)候替代CPU作為總線主設(shè)備,在不受CPU干預(yù)的情況下,由I/O設(shè)備接口控制器控制I/O設(shè)備與系統(tǒng)主存之間的直接數(shù)據(jù)傳輸,該技術(shù)就是直接存儲(chǔ)器存取方式,而I/O設(shè)備接口控制器稱為DMA控制器(DMAController,DMAC)。

1.DMA過程DMA方式主要實(shí)現(xiàn)計(jì)算機(jī)主存與I/O設(shè)備間的高速數(shù)據(jù)傳輸,實(shí)現(xiàn)DMA方式需要DMAC。假設(shè)總線主設(shè)備(如CPU、DMAC)通過共享系統(tǒng)總線訪問主存,I/O設(shè)備通過DMAC連接到系統(tǒng)總線上,DMAC內(nèi)部邏輯及與系統(tǒng)連接如圖8.34所示。通常,DMAC被設(shè)計(jì)成獨(dú)立的可編程芯片,其內(nèi)部的地址寄存器DMAAR、數(shù)據(jù)計(jì)數(shù)器DC可以在DMA開始前由CPU設(shè)置;數(shù)據(jù)寄存器DMADR在數(shù)據(jù)總線與I/O設(shè)備間提供了一條僅在DMA傳送時(shí)有效的數(shù)據(jù)通路;控制單元是DMAC的核心,它控制整個(gè)DMA過程的實(shí)現(xiàn),包括請(qǐng)求/響應(yīng)操作、對(duì)主存和I/O設(shè)備的讀/寫、DMAAR加1、DC減1、判斷DMA結(jié)束及發(fā)出中斷請(qǐng)求等。圖8.34DMAC內(nèi)部邏輯及與系統(tǒng)連接示意圖

典型的DMA傳輸過程如下:

(1)CPU執(zhí)行初始化DMAC的程序,設(shè)置數(shù)據(jù)傳輸方向、數(shù)據(jù)傳送模式等DMAC操作信息,并將DMAAR初始設(shè)置為用于數(shù)據(jù)傳輸?shù)闹鞔婢彌_區(qū)首地址(基地址),DC初始設(shè)置為本次DMA傳送數(shù)據(jù)的數(shù)量。

(2)I/O設(shè)備在需要時(shí)向DMAC發(fā)出DMA請(qǐng)求信號(hào)DREQ,如果DMAC接受該請(qǐng)求(或在多I/O設(shè)備請(qǐng)求時(shí)選擇優(yōu)先級(jí)最高的請(qǐng)求),則向CPU提出DMA請(qǐng)求DMA-REQ。當(dāng)系統(tǒng)中有多個(gè)非級(jí)聯(lián)的DMAC時(shí),應(yīng)將它們先加入到總線仲裁電路中進(jìn)行仲裁,將優(yōu)先級(jí)最高的DMA-REQ信號(hào)提交給CPU。

(3)若CPU允許,則在DMA斷點(diǎn)處(見圖8.35)響應(yīng)DMA請(qǐng)求,放棄地址、數(shù)據(jù)線的控制,使DMA-ACK有效。DMA-REQ和DMA-ACK實(shí)質(zhì)上就是用于總線仲裁的BR和BG。圖8.35中斷和DMA響應(yīng)時(shí)刻

(4)當(dāng)DMAC接收到有效的DMA-ACK信號(hào)時(shí),它使DACK有效,通知提出請(qǐng)求的I/O設(shè)備做好數(shù)據(jù)傳輸?shù)臏?zhǔn)備,同時(shí)DMAC接管總線,開始控制I/O設(shè)備與主存之間直接的數(shù)據(jù)傳輸。

(5)DMA傳輸期間,每傳送一個(gè)數(shù)據(jù),DMAAR加1,DC減1。

(6)當(dāng)(DC)=0時(shí),DMAC使DMA傳輸正常結(jié)束;當(dāng)(DC)≠0時(shí),重復(fù)執(zhí)行步驟(5)。但如果I/O設(shè)備不準(zhǔn)備繼續(xù)發(fā)送或接收數(shù)據(jù),I/O設(shè)備可給DMAC發(fā)一個(gè)特殊的結(jié)束信號(hào)或使DREQ無效來通知DMAC,DMAC可使DMA傳輸中止,使本次DMA傳輸結(jié)束。

(7)DMA傳輸結(jié)束時(shí),DMAC發(fā)出完成信號(hào)或中斷請(qǐng)求INTR通知CPU,并放棄對(duì)系統(tǒng)總線的控制。CPU通過使I/O設(shè)備停止工作或啟動(dòng)一次新的DMA傳輸來響應(yīng)DMAC的中斷請(qǐng)求。

上述步驟(1)為預(yù)處理,步驟(7)為結(jié)束處理,步驟(2)~(6)為數(shù)據(jù)傳輸處理。在步驟(5)傳送數(shù)據(jù)時(shí),數(shù)據(jù)寄存器DMADR是作為I/O設(shè)備與數(shù)據(jù)總線DB間的數(shù)據(jù)通路的,這樣,I/O設(shè)備與主存之間的數(shù)據(jù)通路即為:

I/O設(shè)備←→DMADR←→DB←→主存,而不需要經(jīng)過CPU。在實(shí)際系統(tǒng)中,DMADR既可以在DMAC中,也可以從DMAC中獨(dú)立出來,放在設(shè)備與總線間的I/O接口中。

2.DMA工作機(jī)制

1)DMAC與CPU的總線控制權(quán)交換方式DMAC與CPU同為總線主設(shè)備,在共享系統(tǒng)總線上,CPU和DMAC的沖突主要發(fā)生在同時(shí)爭(zhēng)用總線、訪問主存時(shí)。引入Cache,使Cache-CPU和I/O-MM訪問通路相互獨(dú)立(如采用圖8.4所示系統(tǒng)),可以減少?zèng)_突。但在Cache失效時(shí),如果CPU與DMAC恰好同時(shí)訪問主存,沖突仍然會(huì)發(fā)生。解決沖突的方法就是使CPU和DMAC分時(shí)使用總線。

(1)周期挪用(竊取)方式(CycleStealingMode)。

在常規(guī)程序運(yùn)行中,CPU要花費(fèi)很多時(shí)間執(zhí)行CPU內(nèi)部操作指令(例如ADDR0,R1),在這些指令執(zhí)行期間,CPU既不控制總線,也不訪問主存。周期挪用方式利用CPU做內(nèi)部操作或指令譯碼等未使用總線的時(shí)間,由DMAC迅速“竊取”一個(gè)總線周期的總線控制權(quán),做一個(gè)數(shù)據(jù)的傳輸,然后立即將總線控制權(quán)交還給CPU,如圖8.36(a)所示。此狀況不會(huì)延誤CPU時(shí)間,效率很高,亦稱為隱藏周期DMA(HiddenCycleDMA)。

若DMA操作時(shí)恰好遇到CPU存取同一個(gè)存儲(chǔ)器,周期挪用方式則強(qiáng)迫CPU暫停一個(gè)總線周期,等DMAC存取完一個(gè)數(shù)據(jù)后再令CPU繼續(xù)工作,故亦稱為暫停CPU方式(SuspendCPUMethod),如圖8.36(b)所示。這種DMA方式可以說是用“搶”總線而不是用“竊取”總線的方式獲得總線控制權(quán)的,它會(huì)使CPU的速度稍微變慢,但DMA存取速率卻可以不與CPU的時(shí)鐘同步(是非同步的)。圖8.36周期挪用方式

(2)存儲(chǔ)器分時(shí)方式。

存儲(chǔ)器分時(shí)方式又稱為交替訪存方式,它是把原來的一個(gè)存取周期分成兩個(gè)時(shí)間片,一片分給CPU,一片分給DMAC,使CPU和DMAC交替訪問主存,如圖8.37所示。圖8.37存儲(chǔ)器分時(shí)法

(3)停止CPU方式(StopCPUMethod)。

停止CPU方式可在一次DMA周期中傳輸一個(gè)數(shù)據(jù)或一塊數(shù)據(jù),塊數(shù)據(jù)傳輸方式又稱突發(fā)或猝發(fā)方式(BurstMode)。當(dāng)I/O設(shè)備需要DMA服務(wù)時(shí),DMAC與CPU以總線仲裁方式來協(xié)調(diào)使用總線的時(shí)機(jī),在CPU允許且釋放總線后,DMAC占用總線,開始連續(xù)若干個(gè)總線周期(存取周期)的全速數(shù)據(jù)傳輸,直到數(shù)據(jù)傳輸完畢后總線控制權(quán)才再交回CPU,所以停止CPU方式又稱為獨(dú)占總線方式。圖8.38是停止CPU方式的示意圖,在DMA期間,CPU完全處于停止?fàn)顟B(tài)。圖8.38停止CPU方式

(4)擴(kuò)展時(shí)鐘周期方式(StretchPeriodMethod)。擴(kuò)展時(shí)鐘周期方式利用一組時(shí)鐘控制電路(見圖8.39(a))將系統(tǒng)時(shí)鐘拉長(zhǎng),以“欺騙”CPU的方式在這段延長(zhǎng)時(shí)間里使用總線做DMA操作,操作時(shí)序如圖8.39(b)所示。圖8.39擴(kuò)展時(shí)鐘周期方式

2)DMAC的數(shù)據(jù)傳輸模式DMAC通常有三種數(shù)據(jù)傳輸模式,即字節(jié)傳輸模式、數(shù)據(jù)塊傳輸模式、請(qǐng)求傳輸模式。

(1)字節(jié)傳輸模式。字節(jié)傳輸模式就是DMAC每次僅控制一個(gè)數(shù)據(jù)的傳輸,之后便結(jié)束DMA的工作周期,回到空閑周期,將系統(tǒng)總線控制權(quán)還給CPU。

(2)數(shù)據(jù)塊傳輸模式。在數(shù)據(jù)塊傳輸模式下,當(dāng)DMAC得到系統(tǒng)總線的控制權(quán)后,就一直使用總線進(jìn)行數(shù)據(jù)傳輸,直到整個(gè)數(shù)據(jù)塊傳輸完畢(字計(jì)數(shù)為零)或DMAC中止傳輸信號(hào)有效才將系統(tǒng)總線歸還給CPU。

(3)請(qǐng)求傳輸模式。請(qǐng)求傳輸模式類似于塊傳輸。在請(qǐng)求傳輸模式下,數(shù)據(jù)連續(xù)不斷地傳輸,直到整個(gè)數(shù)據(jù)塊被傳輸完畢(字計(jì)數(shù)為零),或是接收到外部中止信號(hào),或當(dāng)I/O設(shè)備的請(qǐng)求

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論