1 總線的基本概念
計算機系統的五大部件之間的互聯方式有兩種
- 分散連接:各部件之間使用單獨的連線
- 總線連接:將各部件連到一組公共信息傳輸線上
1.1 早期的計算機 大多數用分散連接方式
該圖是以運算器為中心的結構,其內部連線復雜,當I/O與存儲器交換信息的時,都需經過運算器,致使運算器停止運算,嚴重影響了CPU的工作效率
該圖是改進為以存儲器為中心的結構,I/O與主存交換信息可以不經過運算器,又采取了中斷,DMA等技術,使CPU工作效率得到很大的提高,但是仍無法解決I/O設備與主機之間連接的靈活性,隨着計算機應用領域的不斷擴大,I/O設備的種類和數量也原來越多,人們希望隨時增添或減撤設備,用分散連接方式簡直是一籌莫展,由此出現了總線連接方式
1.2 總線連接
總線是連接多個部件的信息傳輸線,是各部件共享的傳輸介質。當多個部件與總線相連時,如果兩個或以上部件同時向總線發送信息會導致信號沖突,傳輸無效。因此,在某一時刻,只允許有一個部件向總線發送信息,而多個部件可以同時從總線接收相同的信息。
總線實際上是由許多傳輸線或通路組成,每條線可一位一位地傳輸二進制代碼,一串二進制代碼可在一段時間內逐一傳輸完成。
若干條傳輸線可以同時傳輸若干位二進制代碼,列如:16條傳輸線組成的總線可同時傳輸16位二進制代碼。
1.2.1 以CPU為中心的雙總線結構
其中一組總線連接CPU和主存,稱為存儲總線(M總線),另一組用來建立CPU和各I/O設備之間交換信息的通道,稱為輸入輸出總線(I/O總線)。各種I/O設備通過I/O接口掛到I/O總線上,更便於增刪設備。這種結構在I/O設備與主存交換信息時仍然要占用CPU,因此還會影響CPU的工作效率。
1.2.2 單總線結構
與上圖相比,最明顯的特點是當I/O設備與主存交換信息時,原則上不影響CPU的工作,CPU仍可繼續處理不訪問主存或I/O設備的操作,這使COU工作效率有所提高。但是,因為只有一組總線,因此必須設置總線判優邏輯,讓各部件按優先級高低來占用總線,否則當各部件同時會占用總線時會發生沖突。這樣也會影響整機的工作速度。
1.2.3 以存儲器為中心的雙總線結構
在單總線基礎上又開辟出一條CPU與主存之間的總線,稱為存儲總線,這組總線速度高,只供主存與CPU之間傳輸信息。這樣既提高了傳輸效率,又減輕了系統總線的負擔,還保留了I/O設備與存儲器交換信息時不經過CPU的特點。
2 總線的分類
按數據傳送方式可分為並行傳輸總線和串行傳輸總線。在並行傳輸總線中,又可按傳輸數據寬度分為8位,16位,32位,64位等傳輸總線。
若按總線的使用范圍划分,則又有計算機(包括外設)總線,測控總線,網絡通信總線等。
下面按連接部件不同,介紹三類總線
2.1 片內總線
- 片內總線是指芯片內部的總線,如在CPU芯片內部,寄存器與寄存器之間,寄存器與算邏單元ALU之間都由片內總線連接
2.2 系統總線
- 系統總線是指CPU,主存,I/O設備(通過I/O接口)各大部件之間的信息傳輸線。由於這些部件通常安放在主板或各個插件版(插卡)上,故又稱板級總線(在一塊電路板上各芯片間的連線)或板間總線。
- 按系統總線傳輸信息的不同,又可分為三類:數據總線,地址總線和控制總線
- 2.2.1數據總線
- 數據總線用來傳輸各功能部件之間的數據信息,它是雙向傳輸總線,其位數與機器字長,存儲字長有關,一般為8位,16位或32位
- 數據總線的位數稱為數據總線寬度,它是衡量系統性能的一個重要參數
- 如果數據總線的寬度為8位,指令字長為16位,那么,CPU在取指階段必須兩次訪問主存
- 2.2.2 地址總線
- 地址總線主要用來指出數據總線上的源數據或目的數據在主存單元的地址或I/O設備的地址
- 例如:欲從存儲器讀出一個數據,則CPU要將此數據所在存儲單元的地址送到地址線上
- 又如,欲將某數據經I/O設備輸出,則CPU除了需將數據送到數據總線外,還需將該輸出設備的地址(通常都經I/O接口)送到地址總線上
- 可見,地址總線上的代碼是用來指明CPU欲訪問的存儲單元或I/O端口的地址,由CPU輸出,單向傳輸。地址總線的位數與存儲單元的個數有關,如地址線為20根,則對應存儲單元為220
- 2.2.3 控制總線
- 控制總線是用來發出各種控制信號的傳輸線
- 通常對任一控制線而言,它的傳輸是單向的。如:存儲器讀/寫命令,I/O設備讀/寫命令都是由CPU發出的
- 對於控制總線總體來說,又可認為是雙向的。如:當某設備准備就緒時,便向CPU發中斷請求。當某部件(如DMA接口)需獲得總線使用權時,也向CPU發出總線請求
- 控制總線還起到監視各部件狀態的作用。如:查詢該設備處於“忙”還是“閑”,是否出錯等。因此對CPU而言,控制信號既有輸出,又有輸入。
- 常見的控制信號如下:
- 時鍾:用來同步各種操作
- 復位:初始化所有部件
- 總線請求:表示某一部件需獲得總線使用權
- 總線允許:表示需要獲得總線使用權的部件已獲得了控制權
- 中斷請求:表示某部件提出中斷請求
- 中斷響應:表示中斷請求已被接收
- 存儲器寫:將數據總線上的數據寫至存儲器的指定地址單元內
- 存儲器讀:將指定存儲單元中的數據讀到數據總線上
- I/O讀:從指定的I/O端口將數據讀到數據總線上
- I/O寫:將數據總線上的數據輸出到指定的I/O端口內
- 傳輸響應:表示數據已被接收,或已將數據送至數據總線上
2.3 通信總線
- 這類總線用於計算機系統之間或計算機系統與其他系統(如控制儀表、移動通信等)之間的通信。
- 通信總線的類別很多,但按傳輸方式可分為兩種:串行通信和並行通信。
- 2.3.1 串行通信
- 串行通信是指數據在單條1位寬的傳輸線上,一位一位地按順序分時傳送。如1字節的數據,在串行傳送中,1字節的數據要通過一條傳輸線分8次由低位到高位按順序逐位傳
- 2.3.2 並行通信
- 並行通信是指數據在多條並行1位寬的傳輸線上,同時由源傳送到目的地。如1字節的數據,在並行傳送中,要通過8條並行傳輸線同時由源傳送到目的地
- 2.3.3 串行通信與並行通信的對比
串行通信 | 並行通信 | |
適宜距離 | 遠距離傳送(可以從幾米達數千公里 | 近距離的數據傳輸(通常小於30m) |
數據傳輸速率 | 低 | 高 |
通信線路費用 | 低(還可利用現有的電話網絡來實現遠程通信) | 高 |
3 總線特性及性能指標
3.1 總線特性
從物理角度來看,總線是由許多導線直接印制在電路板上,延伸到各個部件
為了保證機械上的可靠連接,必須規定其機械特性,為了確保電氣上正確連接,必須規定其電氣特性,為保證正確地連接不同部件,還需規定其功能特性和時間特性。
3.1.1 機械特性
- 機械特性是指總線在機械連接方式上的一些性能,如插頭與插座使用的標准,它們的幾何尺寸,形狀,引腳的個數以及排列的順序,接頭處的可靠接觸等
3.1.2 電氣特性
- 電氣特性是指總線的每一根傳輸線上信號的傳遞方向和有效的電平范圍
- 通常規定由CPU發出的信號稱為輸出信號,送入CPU的信號稱為輸入信號
3.1.3 功能特性
- 功能特性是指總線中每根傳輸線的功能
- 列如,地址總線用來指出地址碼,數據總線用來傳遞數據,控制總線發出的控制信號
3.1.4 時間特性
- 時間特性是指總線中的任一根線在什么時間內有效
- 每條總線上的各種信號互相存在一種有效時序的關系,因此,時間特性一般可用信號時序圖來描述
3.2 總線性能指標
- 總線寬度:通常是指數據總線的根數,用bit(位)表示,如8位,16位,32位,64位(即8根,16根,32根,64根)
- 總線寬帶:總線帶寬可理解為總線的數據傳輸速率,即單位時間內總線上傳輸數據的位數,通常用每秒傳輸信息的字節數來衡量,單位可用MBps(兆字節每秒)表示,列如,總線工作頻率為33MHz,總線寬度為32位(4B),則總線帶寬為33×(32÷8)=132MBps
- 時鍾同步/異步:總線上的數據與時鍾同步工作的總線稱為同步總線,與時鍾不同步工作的總線稱為異步總線
- 總線復用:一條信號線上分時傳送兩種信號。例如 地址總線與數據總線共用一組物理線路,在這組物理線路上分時傳輸地址信號和數據信號
- 信號線數:地址總線,數據總線和控制總線三種總線數的總和
- 其他指標:如負載能力,電源電壓,總線寬度能否擴展等,總線的負載能力即驅動能力,是指當總線接上負載后,總線輸入輸出的邏輯電平是否能保持在正常的額定范圍內。
3.3 總線標准
- 總線標准,可視為系統與各模塊、模塊與模塊之間的一個互連的標准界面。
- 這個界面對它兩端的模塊都是透明的,即界面的任一方只需根據總線標准的要求完成自身一方接口的功能需求,而無須了解對方接口與總線的連接要求。
- 因此,按總線標准設計的接口可視為通用接口。
- 目前流行的總線標准有以下幾種:
- ISA總線
- EISA總線
- VESA(VL-BUS)總線
- PCI總線
- AGP總線
- RS-232C總線
- USB總線
4 總線結構
- 總線結構通常可分為單總線結構和多總線結構兩種
4.1 單總線結構
- 單總線結構是將CPU,主存,I/O設備(通過I/O接口)都掛在一組總線上,允許所有部件之間直接交換信息。這種結構簡單,也便於擴充,但所有的傳送都通過這組共享總線,因此極易形成計算機系統的瓶頸。它也不允許兩個以上的部件在同一時刻向總線傳輸信息,這必然會影響系統工作效率的提高,這類總線多數被小型計算機或微型計算機所采用
- 為了根本解決數據傳送速率,解決CPU、主存與I/O設備之間傳輸速率的不匹配,實現CPU與其他設備相對同步,不得不采用多總線結構。
4.2 多總線結構
- 雙總線結構的特點是 將速度較低的I/O設備從單總線上分離出來,形成主存總線與I/O總線分開的結構。
- 圖中通道是一個具有特殊功能的處理器,CPU將一部分功能下放給通道,使其對I/O設備具有統一管理的功能,以完成外部設備與主存儲器之間的數據傳送,其系統的吞吐能力可以相當大。這種結構大多用於大,中型計算機系統
圖中主存總線用於CPU與主存之間的傳輸,I/O總線供CPU與各類I/O設備之間傳遞信息,DMA總線用於高速I/O設備(磁盤,磁帶等)與主存之間直接交換信息。在三總線結構中,任一時刻只能使用一種總線。主存總線與DMA總線不能同時對主存進行存取,I/O總線只有在CPU執行I/O指令時才能用到
由圖可見,處理器與Cache之間有一條局部總線,它將CPU與Cache或與更多的局部設備連接。Cache的控制機構不僅將Cache連到局部總線上,而且還直接連到系統總線上,這樣Cache就可通過系統總線與主存傳輸信息,而且I/O設備與主存之間的傳輸也不必通過CPU。還有一條擴展總線,它將局域網,小型計算機接口(SCSI),調制解調器(Modem)以及串行接口等都連接起來,並且通過這些接口又可與各類I/O設備相連,因此它可支持相當多的I/O設備。與此同時,擴展總線又通過擴展總線接口與系統總線相連,由此可實現這兩種總線之間的信息傳遞,可見其系統的工作效率明顯提高
這里又增加了一條與計算機系統緊密相連的高速總線。
- 在高速總線上掛接了一些高速I/O設備,如高速局域網,圖形工作站,多媒體,SCSI等,它們通過Cache控制機構中的高速總線橋或高速緩沖器與系統總線和局部總線相連,使得這些高速設備與CPU更密切。而一些較低速的設備如圖文傳真FAX,調制解調器及串行接口仍然掛在擴展總線上,並由擴展總線接口與高速總線相連。
- 這種結構對高速設備而言,其自身的工作可以很少依賴CPU,同時它們又比擴展總線上的設備更貼近CPU,可見對於高性能設備與CPU來說,各自的效率將獲得更大的提高。在這種結構中,CPU,高速總線的速度以及各自信號線的定義完全可以不同,以至各自改變其結構也不會影響高速總線的正常工作,反之亦然
5 總線控制
5.1 總線判優控制
- 總線上所連接的各類設備,按其對總線有無控制功能可分為主設備(模塊)和從設備(模塊)兩種。主設備對總線有控制權,從設備只能響應從主設備發來的總線命令,對總線沒有控制權。總線上信息的傳送是由主設備啟動的,如某個主設備欲與另一個設備(從設備)進行通信時,首先由主設備發出總線請求信號,若多個主設備同時要使用總線時,就由總線控制器的判優,仲裁邏輯按一定的優先等級順序確定哪個主設備能使用主線。只有獲得總線使用權的主設備才能開始傳送數據。
- 總線判優控制可分集中式和分布式兩種,前者將控制邏輯集中在一處(如在CPU),后者將控制邏輯分散在與總線連接的各個部件或設備上。
- 常見的集中控制優先仲裁方式有以下三種
- 5.1.1 鏈式查詢
- 離總線控制部件最近的設備具有最高的優先級
- 特點:
- 只需很少幾根線就能按一定優先次序實現總線控制
- 很容易擴充設備
- 對電路故障很敏感
- 優先級別低的設備可能很難獲得請求
- 5.1.2 計數器定時查詢
與鏈式查詢相比,多了一組設備地址線,少了一根總線同意線BG。總線控制部件接到由BR送來的總線請求信號后,在總線未被使用(BS=0)的情況下,總線控制部件中的計數器開始計數,並通過設備地址線,向各設備發出一組地址信號。當某個請求占用總線的設備地址與計數值一致時,便獲得總線使用權,此時終止計數查詢。計數可以從0開始也可以從上次計數的終點開始,計數器的初始值可由程序設置,故優先次序可以改變。
- 這種方式對電路故障不如鏈式查詢方式敏感,但增加了控制線(設備地址)數,控制也較復雜
- 5.1.3 獨立請求方式
由圖可見,每一台設備均有一對總線請求線BR和總線同意線BG。當設備要求使用總線時,便發出該設備的請求信號。總線控制部件中有一排隊電路,可根據優先次序確定響應哪一台設備的請求。
-
這種方式的特點是:響應速度快,優先次序控制靈活(通過程序改變),但控制線數量多,總線控制更復雜。
- 鏈式查詢中僅用兩根線確定總線使用權屬於哪個設備,在計數器查詢中大致用log2n根線,其中n是允許接納的最大設備數,而獨立請求方式需采用2n根線
5.2 總線通信控制
- 眾多部件共享總線,在爭奪總線使用權時,應按各部件的優先等級來解決。在通信時間上,則應按分時方式來處理,即以獲得總線使用權的先后順序分時占用總線,即哪一個部件獲得使用權,此刻就由它傳送,下一部件獲得使用權,接着下一時刻傳送。這樣一個接一個輪流交替傳送
- 通常將完成一次總線操作的時間稱為總線周期,可分為以下4個階段
- 申請分配階段:由需要使用總線的主模塊(或主設備)提出申請,經總線仲裁機構決定下一傳輸周期的總線使用權授予某一申請者
- 尋址階段:取得了使用權的主模塊通過總線發出本次要訪問的從模塊(或從設備)的地址及有關命令,啟動參與本次傳輸的從模塊
- 傳數階段:主模塊和從模塊進行數據交換,數據由源模塊發出,經數據總線流入目的模塊
- 結束階段:主模塊的有關信息均從系統總線上撤除,讓出總線使用權
- 對於僅有一個主模塊的簡單系統,無須申請,分配和撤除,總線使用權始終歸它占有。對於包含中斷,DMA控制或多處理器的系統,還需要有其他管理機構來參與。
- 總線通信控制主要解決通信雙方如何獲知傳輸開始和傳輸結束,以及通信雙方如何協調如何配合。
- 通常用四種方式:同步通信,異步通信,半同步通信和分離式通信
-
同步通信
- 通信雙方由統一時標控制數據傳送稱為同步通信,時標通常由CPU的總線控制部件發出,送到總線上的所有部件,也可以由每個部件各種的時序發生器發出,但必須由總線控制部件發出的時鍾信號對它們進行同步。
- 這種通信的優點是規定明確,統一,模塊間的配合簡單一致。其缺點是主,從模塊時間配合屬於強制性“同步”,必須在限定時間內完成規定的要求。並且對所有從模塊都用同一限時,這就勢必造成,對各不相同速度的部件而言,必須按最慢速度的部件來設計公共時鍾,嚴重影響總線的工作效率,也給設計帶來了局限性,缺乏靈活性。
- 同步通信一般用於總線長度較短,各部件存取時間比較一致的場合
- 在同步通信的總線系統中,總線傳輸周期越短,數據線的位數越多,直接影響總線的數據傳輸率
-
異步通信
- 異步通信克服了同步通信的缺點,允許各模塊速度的不一致性,給設計者充分的靈活性和選擇余地。它沒有公共的時鍾標准,不要求所有部件嚴格的統一操作時間,而是采用應答方式(又稱握手方式),即當主模塊發出請求信號時,一直等待從模塊反饋回來響應信號后才開始通信。這要求主,從模塊之間增加兩條應答線(握手交互信號線)
- 異步通信的應答方式又可分為不互鎖,半互鎖,全互鎖三種
- 不互鎖方式
- 主模塊發出請求信號后,不必等待接到從模塊的回答信號,而是經過一段時間,確認從模塊已收到請求信號后,便撤銷其請求信號,從模塊接到請求信號后,在條件允許時發出回答信號,並且經過一段時間確認主模塊已收到回答信號后,自動撤銷回答信號。可見雙方並無互鎖關系
- 半互鎖方式
- 主模塊發出請求信號,必須待接到從模塊回答后再撤銷其請求信號,有互鎖關系。而從模塊在接到請求信號后發出回答信號,但不必等待獲知主模塊的請求信號已經撤銷,而是隔一段時間后自動撤銷其回答信號,並無互鎖關系。由於一方存在互鎖,一方不存在互鎖,故稱半互鎖方式。
- 全互鎖方式
- 主模塊發出請求信號,必須待從模塊回答后再撤銷其請求信號,從模塊發出回答信號,必須待獲知主模塊請求信號已撤銷后,再撤銷其回答信號。雙方存在互鎖關系,故稱為全互鎖方式
- 異步通信可用於並行通信或串行通信
- 異步串行通信時約定字符格式為:1個起始位(低電平)、5 ~ 8個數據位、1個奇偶校驗位(作檢測用)、1或1.5或2個終止位(高電平)
- 傳送時起始位后面緊跟的是要傳送字符的最低位,每個字符的結束時一個高電平的終止位。
- 異步串行通信的數據傳送速率用波特率來衡量
- 波特率是指單位時間內傳送二進制數據的位數,單位用bps(位/秒)表示,記作波特
-
半同步通信
- 半同步通信既保留了同步通信的基本特點
- 同時又像異步通信那樣,允許不同速度的模塊和諧地工作
- 為此增設了一條“等待”(WAIT)響應信號線,采用插入時鍾(等待)周期的措施來協調通行雙方的配合問題
- 半同步通信適用於系統工作速度不高但又包含了由許多工作速度差異較大的各類設備組成的簡單系統。
- 半同步通信控制方式比異步通信簡單,在全系統內各模塊又在統一的系統時鍾控制下同步工作,可靠性高,同步結構較方便
- 其缺點是對系統時鍾頻率不能要求太高,故從整體來看,系統工作的速度還不是很高
-
分離式通信
- 以上三種通信方式都是從主模塊發出地址和讀寫命令開始,直到數據傳輸結束。在整個傳輸周期中,系統總線的使用權完全由占有使用權的主模塊和由它選中的從模塊占據。進一步分析讀命令傳輸周期,發現除了申請總線這一階段外,其余時間主要花費在如下3個方面。
- 主模塊通過傳輸總線向從模塊發送地址和命令
- 從模塊按照命令進行讀數據的必要准備
- 從模塊經數據總線向主模塊提供數據
- 由2可見,對系統總線而言,從模塊內部讀數據過程並無實質性的信息傳輸,總線純屬空閑等待。
- 為了克服和利用這種消極等待,尤其在大型計算機系統中,總線的負載已處於飽和狀態,充分挖掘系統總線每瞬間的潛力,對提高系統性能起到極大作用
- 為此提出了分離式通信:其基本思想是將一個傳輸周期(或總線周期)分解為兩個子周期
-
在第一個字周期中,主模塊A在獲得總線使用權后將命令、地址以及其他有關信息,包括該主模塊編號(當有多個主模塊時,此標號尤為重要)發到系統總線上,經總線傳輸后,由有關的從模塊B接收下來。主模塊A向系統總線發布這些信息只占用總線很短的時間,一旦發送完,立即放棄總線使用權,以便其他模塊使用
- 在第二個子周期中,當B模塊收到A模塊發來的有關命令信號后,經選擇、譯碼、讀取等一系列內部操作,將A模塊所需的數據准備好,便由B模塊申請總線使用權,一旦獲准,B模塊便將A模塊的編號、B模塊的地址、A模塊所需的數據等一系列信息送到總線上,供A接受
- 述兩個傳輸子周期都只有單方向的信息流,每個模塊都變成了主模塊
- 特點:
- 各模塊欲占用總線使用權都必須提出申請
- 在得到總線使用權后,主模塊在限定時間內向對方傳送信息,采用同步方式傳送,不再等待對方的回答信號
- 各模塊在准備數據的過程中都不用占用總線,使總線可接受其他模塊的請求
- 總線被占用時都在做有效工作,不存在空閑等待時間,充分利用了總線的有效占用,從而實現了總線在多個主從模塊間進行信息交叉重疊並行式傳送,這對大型計算機系統是極為重要的
- 這種方式控制比較復雜,一般在微型計算機系統中很少采用