前言
總線是多個系統部件之間進行數據傳輸的公共通路。所謂總線就是指能爲多個功能部件服務的一組公用信息線,並且能夠分時地發送和接收信息。通過總線連接,計算機可在各系統部件之間實現傳輸地址、數據和控制信息等操作。
計算機系統中存儲器、CPU等功能部件之間必須互聯才能組成計算機系統。部件之間可以通過單讀的連線互聯,這種方式是分散連接,缺點是當部件較多時,連線會錯綜複雜,並且難以支撐新增部件的場景。還有一種就是總線連接的方式,將各個部件連接到一組公用信息傳輸線上,優點是可以靈活的新加部件可以使用相同的總線的計算機系統之間互換,現代計算機普遍使用的都是總線互聯結構。
一、總線的概念
1.1、總線的結構
總線(Bus)是計算機用於傳輸信息的公用通道,爲多個部件服務的組信息傳輸連接線。任意時刻在總線上只能傳輸一種信息,也就是隻能有一個部件在發送信息、但可以有多個部件同時接收信息。
按傳輸信息的屬性分類主要有以下三種信號線
1、數據總線(Data Bus,DB)
數據總線用於在各部件之間傳輸數據信息,數據總線條數(總線寬度)一般就是計算機字長。計算機字長是指一臺計算機CPU中的運算器、寄存器和指令集等採用的信息單位。常見字長有8位、16位、32位和64位等。
2、地址總線(Address Bus,AB)
地址總線用於傳輸各部件相互訪問用的地址信息,地址總線寬度就是能傳輸的地址碼位數,決定了CPU能夠直接讀寫主存儲器的範圍大小
3、控制總線(Control Bus,CB)
控制總線用於傳輸控制各部件操作的控制信息,如CPU對存儲器的讀寫命令、CPU對外設的啓動和停止命令等。
按信息傳輸的方向區分可以將總線分爲單向總線和雙向總線
例如運算器與存儲器之間的數據信號線是雙向的;讀寫主存的控制線一般是由CPU把讀寫命令控制信號送至存儲器,是單向總線
按連接部件的不同,總線分爲內部總線、系統總線和通信總線(I/O總線)
內部總線:芯片內部連接各元件的總線
系統總線:連接CPU、存儲器和I/O模塊等主要部件等總線,通常是主板式或底板式總線
I/O總線:用於主機和I/O設備之間或計算機系統之間的通信
1.2、總線的組成
一個系統總線通常由一組控制線、一組數據線和一組地址線構成,也可以沒有單獨的地址線,採用數據線和地址線複用的方式。
數據線用來承載在源部件和目的部件之間傳輸的信息,信息可能是數據、命令、地址。
數據線的條數稱爲數據總線的寬度,決定了每次能同時傳輸的信息的位數,因爲數據總線的寬度是決定系統總體性能的關鍵因素。
地址線用來給源數據或目的數據所在的主存單元或I/O端口的地址,例如要從主存單元讀一個數據,CPU必須將主存單元的地址送到地址線上。若要輸出一個數據到外設,那麼CPU頁必須把該外設的地址送到地址線上。地址線是單向的,它的位數決定了可尋址的地址空間的大小。
控制線用來控制對數據線和地址線的訪問和使用,因爲數據線和地址線是被連接在其上的所有設備共享的,如何使各個部件在需要時使用總線,需要靠控制線來協調,控制線用來傳輸定時信號和命令信息。
1.3、總線的連接方式
由於外設種類比較多且速度不同,不能簡單將外設和速度很快的CPU連接起來,所以需要由適配器部件來完成,通過適配器可以實現高速CPU和低速外設之間在工作速度上的匹配和同步,並完成計算機和外設之間的所有數據傳輸和控制,適配器通常叫做接口。
1.3.1、單總線結構
單總線結構中CPU、主存和I/O設備使用一條單一的系統總線連接,各部件之間可以直接互聯進行通信。在單總線結構中要求連接到總線上的部件必須高速運行,以便其他部件需要使用總線時可以很快得到總線控制權,避免導致時間延遲。
比如當CPU取一條指令時,首先把程序計數器PC中的地址同控制信息一起發送到總線上,該地址會傳輸至總線上所有部件,包括存儲器和外設,只有與總線上的地址匹配的設備才能執行數據傳輸操作,所以取指令的響應部件是存儲器,存儲器將指令的信息在傳輸給CPU,其他部件不響應。相同的邏輯當CPU需要從外設中取數據時,只有外設會響應,其他部件不會響應。
單總線結構簡單,增減設備方便,但是因爲所有部件都連在單總線上,不允許兩個設備同時使用總線發送信息,所以會產生總線的爭用而影響性能。
1.3.2、雙總線結構
單總線只能分時工作,同一時間只允許一對部件之間傳輸數據,信息傳輸的吞吐量會有所限制,而雙總線結構中存在兩種總線,分別是存儲總線和I/O總線。
存儲總線:用於CPU和存儲器之間的信息傳輸
I/O總線:用於CPU和外設之間的信息傳輸
存儲器和I/O設備之間想要信息傳輸時必須要通過CPU,一切信息傳輸全由CPU直接控制。當前也可以由存儲器作爲中心部件的雙總線結構,CPU和外設分別和存儲器連接,CPU和外設之間信息傳輸需要通過存儲器來實現。
1.3.3、多總線結構
在雙總線結構的基礎上,爲了使高速外設能夠高速的與主存儲器進行數據交換,在高速外設與主存儲器之間可以增設直接存儲器訪問(Direct Memory Access,DMA)方式的高速總線(DMA總線),從而形成多總線結構。
在DMA方式中,外設和存儲器之間數據交換不需要經過CPU,從而減輕了CPU對數據輸入輸出的控制,減輕了CPU的負擔,從而提升了整個系統的效率,但是會增加更多的硬件代價。
二、總線的控制和數據傳輸
總線的控制的一個重要問題是進行通信的設備如何獲取總線的使用權,因爲總線是被多個連接在其上的所有設備共享的,所以需要一個協議來表明哪個設備可以使用總線,如果沒有任何控制,當多個設備需要進行通信時,每個設備都試圖爲各自的傳輸而將信號送到總線上,就會產生混亂。決定哪個總線主設備在下次得到總線使用權的過程稱爲總線裁決,主要的裁決方式由集中式裁決和分佈式裁決兩種。集中式裁決將控制邏輯坐在一個專門的總線控制器或總線裁決器中,通過將所有的總線請求集中起來利用一個特定的裁決算法進行裁決;分佈式裁決中沒有專門的總線控制器,其控制邏輯分散在各個部件或設備中。
2.1、集中式裁決方式
常有的集中式裁決方式有以下三種:
1、菊花鏈查詢方式
2、計數器定時查詢方式
3、獨立請求方式
2.2、分佈式裁決方式
常有的分佈式裁決方式有以下兩種:
1、自舉分佈式裁決
2、衝突檢測分佈式裁決
總線的數據傳輸方式有串行傳輸和並行傳輸兩種
串行傳輸
串行總線的數據在數據線上按位進行傳輸,因此只需要一根數據線,線路成本低,在進行傳輸時按順序傳輸一個數據的所有二進制的脈衝信號,每次一位,被傳輸的數據在發送部件中必須進行並行數據到串行數據的轉換,這個過程稱爲拆卸;接收部件中則需要將串行數據轉換成並行數據,這個過程稱爲裝配。
並行傳輸
並行總線的數據在數據線上同時由多位一起傳輸,每一位要有一根數據線,因爲需要多根數據線,並行傳輸比串行傳輸速度要快很多,但是需要更多的傳輸線。衡量並行總線速度的指標是最大數據傳輸率,即單位時間內在總線上傳輸的最大信息量。
一般用每秒多少兆字節(MB/s)來表示,比如總線的工作頻率爲33MHz,總線寬度爲32位,那麼最大數據傳輸率爲:33 X 32 / 8 = 132MB/s