數據存儲產業服務平臺

2.1 IO的通路--總線

2.1  IO的通路–總線

現代計算機中,IO是通過共享一條總線的方式來實現的,如圖2.1所示??偩€也就是一條或者多條物理上的導線,每個部件都接到這些導線上,導線上的電位每個時刻都是相等的,這樣總線上的所有部件都會收到相同的信號。也就是說,這條總線是共享的,同一時刻只能有一個部件在接收或者發送,是全單工的工作模式。

所有部件按照另一條總線,也就是仲裁總線或者中斷總線上給出的信號來判斷這個時刻總線可以由哪個部件來使用。產生仲裁總線或者中斷電位的可以是CPU,也可以是總線上的其他設備。如果CPU要向某個設備做輸出操作,那么就由CPU主動做中斷。如果某個設備請求向CPU發送信號,則由這個設備來主動產生中斷信號來通知CPU。CPU運行操作系統內核的設備管理程序,從而產生了這些信號。

如圖2.1所示,主板上的每個部件都是通過總線連接起來的。圖中只畫了8條導線,而實際中,導線的數目遠遠不止8條,可能是16條、32條、64條甚至128條。這些導線密密麻麻地印刷在電路板上,由于導線之間非常密集,在高頻振蕩時會產生很大干擾,所以人們將這些導線分組印刷到不同電路板上,然后再將這些電路板壓合起來,形成一塊板,這就是多層印刷電路板(多層PCB)。這樣,每張板上的導線數量降低了,同時板與板之間的信號屏蔽性很好,不會相互干擾。這些導線之中,有一些是部件之間交互數據用的數據總線,有些則是它們互相傳遞控制信號用的控制總線,有些則是中斷與仲裁用的中斷總線,還有一些則是地址總線,用來確認通信時的目標設備。一般按照數據總線的條數來確認一個總線或設備的位寬(CPU是按照其內部寄存器到運算單元之間的總線數目來確定位數的)。比如32位PCI總線,則表明這條總線共有32根導線用于傳遞數據信號。PCI總線可以終結在一個插槽,用于將PCI接口的板卡接入PCI總線,也可以直接與設備連接。后者一般用于集成在主板上的設備,因為它們之間無需使用插槽來連接。

1. PCI總線

PCI總線是目前臺式機與服務器所普遍使用的一種南橋與外設連接的總線技術。

PCI總線的地址總線與數據總線是分時復用的。這樣的好處是,一方面可以節省接插件的管腳數,另一方面便于實現突發數據傳輸。在數據傳輸時,一個PCI設備作為發起者(主控,Initiator或Master),而另一個PCI設備作為目標(從設備、Target或Slave)??偩€上的所有時序的產生與控制,都由Master來發起。PCI總線在同一時刻只能供一對設備完成傳輸,這就要求有一個仲裁機構(Arbiter),來決定誰有權力拿到總線的主控權。

當PCI總線進行操作時,發起者(Master)先置REQ#信號(REQ#,Master用來請求總線使用權的信號),當得到仲裁器(Arbiter)的許可時(GNT#信號),會將FRAME#信號(傳輸開始或者結束信號)置低,并在地址總線(也就是數據總線,地址線和數據線是共享的)上放置Slave地址,同時C/BE#(命令信號)放置命令信號,說明接下來的傳輸類型。

所有PCI總線上的設備都需對此地址譯碼,被選中的設備要置DEVSEL#(被選中信號)以聲明自己被選中。當IRDY#(Master可以發送數據)與TRDY#(Slave可以發送數據)都置低時,可以傳輸數據。當Master數據傳輸結束前,將FRAME#置高以標明只剩最后一組數據要傳輸,并在傳完數據后放開IRDY#以釋放總線控制權。

2. PCI總線的中斷共享

PCI總線可以實現中斷共享,即不同的設備使用同一個中斷而不發生沖突。

硬件上,采用電平觸發的辦法:中斷信號在系統一側用電阻接高,而要產生中斷的板卡上利用三極管的集電極將信號拉低。這樣不管有幾塊板產生中斷,中斷信號都是低;而只有當所有板卡的中斷都得到處理后,中斷信號才會回復高電平。

軟件上,采用中斷鏈的方法:假設系統啟動時,發現板卡A用了中斷7,就會將中斷7對應的內存區指向A卡對應的中斷服務程序入口ISR_A;然后系統發現板卡B也用中斷7,這時就會將中斷7對應的內存區指向ISR_B,同時將ISR_B的結束指向ISR_A。以此類推,就會形成一個中斷鏈。而當有中斷發生時,系統跳轉到中斷7對應的內存,也就是ISR_B。ISR_B就要檢查是不是B卡的中斷,如果是則處理,并將板卡上的拉低電路放開;如果不是則呼叫ISR_A。這樣就完成了中斷的共享。

未經允許不得轉載:存儲在線-存儲專業媒體 » 2.1 IO的通路--總線
精品国产午夜肉伦伦影院,双性老师灌满浓jing上课h,天天做天天爱夜夜爽,攵女乱h边做边走