目錄
- 總線是什么?
- 常見總線型別有哪些?
- 總線的串行和并行的區別?
- 資料總線
- 地址總線
- CPU的尋址能力
- 32位CPU最大支持4G記憶體?
- 控制總線
- 總線的共享性和獨自性
- 系統總線的結構
- 單總線結構
- 雙總線結構
- 三總線結構
- 總線傳輸的四個階段
- 總線仲裁
- 集中總裁方式
- 分布仲裁方式
- 總線的性能指標
- 尾語
作者:小牛呼嚕嚕 | https://xiaoniuhululu.com
計算機內功、JAVA底層、面試、職業成長相關資料等更多精彩文章在公眾號「小牛呼嚕嚕」
大家好,我是呼嚕嚕,在之前的文章計算機的基本組成是什么樣子的中,我們知道了現代計算機還是沿用了馮·諾依曼計算機架構,分別是運算器、控制器、存盤器、輸入設備、輸出設備
,那么計算機是如何讓這些部件相互通信,傳遞資料的?其實計算機的各個部件就是依賴總線系統,相互協調,連接成一個整體,本文就來詳細聊聊總線系統,
總線是什么?
總線是貫穿整個系統的是一組電子管道,是連接各個部件的資訊傳輸線,是各個部件共享的傳輸介質,稱作總線
,它攜帶資訊位元組并負責在各個計算機部件間傳遞,
在總線出現之前,我們計算機各個設備都是各自單獨互相通信的,如果有n個設備,由于他們都需各自單獨互相通信,其中一個設備需要和其他n-1
個設備通信,那系統的復雜度為N^2
為了降低系統復雜度,工程師們想到了一個辦法,在計算機中設計一個公共的線路,其他的各個設備都不需要各自單獨互相通信,只需和這個公共線路通信,將指令和資料傳送給線路,線路代為轉遞,這樣系統復雜度就可以降為了N
,
這條線路就像一個高速公路,我們把它稱為總線(Bus),總線除了降低了系統復雜性,還提供了一個標準化的資料交換方式,便于介面設計,各個硬體按照總線的標準實作介面,而無需考慮對方介面或總線的作業原理,有利于各個部件模塊化設計,這樣的設計下,注冊在總線上的各個模塊就是低耦合的,方便未來代碼的維護或者擴展,
常見總線型別有哪些?
計算機系統中的總線,按功能可以劃分為以下 3 類:
- 片內總線,片內總線顧名思義就是芯片內部的總線,它是CPU芯片內部暫存器與暫存器之間、暫存器與算術邏輯部件ALU之間、ALU與控制部件之間 傳輸資料所用的公共連接線稱為 片內總線,
- 通信總線,通信總線是在計算機系統之間、計算機系統與外部設備(如遠程通信設備、測驗設備)之間傳送資訊的總線,通信總線也稱外部總線,
- 系統總線,系統總線是計算機系統內各功能部件(CPU、主存、I/O介面)之間互相連接的總線,按系統總線傳輸資訊內容的不同,又可以分為3 種:資料總線、地址總線和控制總線,下文我們將具體看一下這三類總線
內部總線:查閱各種資料發現各種說法都有,比如維基百科的上是指南橋芯片與北橋芯片之間的連線;國內有的資料說芯片內部的總線即片內總線為內部總線,有的說是微機中各插件板與系統板之間的總線等等,概念太亂了,本文就不闡述了,感興趣的話可以留言討論
總線的串行和并行的區別?
在詳細介紹資料總線、地址總線和控制總線
之前,我們還得先了解一下總線的串行和并行的區別
按資料傳輸格式可將總線劃分為并行總線和串行總線
- 串行總線,由于只需一條傳輸線就能實作資料的收發
- 并行總線,就是資料傳輸有多根線,這樣就可以一次發送多位的資料,
同樣一個位元組資料(8位),串行通信要分8次由低位到高位按順序一位位地傳送,而并行通信由于有8根線路,可以一次把8位資料傳送過去,通俗點講,串行如同開一輛車分八次把貨物運走,并行就是同時開8輛車,一口氣把貨物運走,
在早期計算機中,計算機的主頻比較低,串行總線傳輸效率比并行總線慢,畢竟并行一次可以傳多位,肯定比串行快,但并行總線也有一些問題:
- 傳輸線數量多,意味著介面就需要很多針腳,占用更多的布線空間,老式計算機里的并行介面做得很大,接線比較寬,針腳非常多,
- 并行的鏈路越多,對資料傳輸的干擾就越強,因此并行總線需要加強抗干擾的能力,不然傳輸程序中資料就可能被損壞
- 如果并行傳輸程序中資料中有一位故障了,就需要重新對齊資料再次傳輸,
但隨著計算機和材料學的高速發展,計算機的主頻越來越高,并行的信號線之間會產生嚴重干擾,對每條線等長的要求也越高,反過來會限制計算機主頻的提升,而串行總線則沒有這個問題,因此像現在USB介面,讓串行傳輸浴火重生
雖然串行每次傳輸的資料少,但它可以不斷提高作業頻率來提高傳輸速度,最終超過并行總線傳輸效率,
再有如果傳輸程序中有一位的資料出現例外,并行總線就需要重新對齊資料再傳輸過去,而串行總線如果一位資料出錯了,只需要重新傳輸一次就好了,由于串行總線頻率高,很快就可以把錯誤資料重新傳輸過去,串行總線成本較低,還可以節約計算機硬體的布線空間
使用串行總線,在資料發送和接收的時候要進行拆卸和裝配,串行-并行格式需要轉換,
資料總線
資料總線(Data Bus),用來傳輸各功能部件之間的實際資料資訊,它是雙向傳輸的,它既可以把CPU的資料傳送到存盤器或I/O介面等其它部件,也可以將其它部件的資料傳送到CPU,這里的資料的含義是廣義的,它可以是真正的資料,也可以是指令代碼、狀態資訊或者其他,大家不要被繞進去
通常總線被設計成傳送定長的位元組塊
,也就是字(word),字中的位元組數(即字長)是一個基本的系統引數,各個系統中都不盡相同,另外計算機最小的存盤單位
是位元組(Byte),1 位元組等于 8 位(1Byte=8bit),而位/位元(bit)是計算機最小的資料傳輸單位
,1 位元組等于 8 位(1Byte=8bit)這個換算規則大家需要牢記
現在的大多數機器字長(計算機能直接處理的二進制資料的位數)要么是4個位元組(4*8 =32位),要么是8個位元組(64位),本文我們不對字長做任何固定的假設
資料總線的位寬,也就是資料總線的寬度是計算機的一個重要指標,一般情況下:資料總線的位寬 = CPU的位寬 = CPU內部通用暫存器的位寬 = 機器字長,但是資料總線寬度不一定等于機器字長,比如下圖中8088型號處理器,2者就不相等
資料總線的位寬為8位的話,資料總線數量有8條,由于每條傳輸線一次只能傳輸1位二進制資料,所以8根資料線一次可傳送一個8位二進制資料(即一個位元組)
地址總線
地址總線(Address Bus),地址總線專門用于傳輸的是地址信號,指出資料總線上的資料源地址、目的資料在主存單元或I/O 設備 的地址,也就是指向 CPU 將要操作的記憶體地址,地址總線是單向傳輸的(地址只能從CPU傳向外部存盤器或I/O設備的埠),其位數與主存空間的大小有關,
CPU的尋址能力
計算機最小的存盤單位
是位元組(Byte),計算機將8個bit歸為一組,為位元組,每一個位元組都對應一個記憶體地址,記憶體的地址是從0
開始編號的,然后自增排列,最后一個地址為記憶體總位元組數 -1
,CPU只需要知道某個資料型別的地址, 就可以直接去到對應的記憶體位置去提取資料了,
CPU的尋址能力與它的地址總線位寬有關,與資料總線寬度(CPU位寬=資料總線位寬)無關,16位CPU的地址總線位寬可以是20位,也可以是24位,CPU的位寬最好不要小于地址總線位寬,需要通過北橋
進行資料轉換,作業起來比較復雜, 16位 CPU 一次最多只能操作16位寬的地址總線,最好16位CPU和16位的地址總線位寬搭配,但CPU的位寬不能大于地址總線位寬,
地址總線位寬決定了CPU能直接訪問的主存容量大小,CPU 通過地址總線來指定存盤單元的位置(注意是位元組而不是字),地址總線上能傳送多少資訊,CPU 就可以對多少個存盤單元進行尋址,
如果一臺8位計算機,其地址總線為16位的話,有16根地址線來傳遞地址信號,每一條線能夠傳遞的資料都是 0 或 1
則其最大可尋址空間為2^16B= 64*1024B= 64KB
,影響CPU的尋址能力是它的地址總線位寬,與其CPU位寬無關,
32位CPU最大支持4G記憶體?
64位、32位指的是CPU暫存器的資料寬度,也叫 CPU 的位寬,他們最主要區別在于CPU一次能計算多少位元組資料
- 32位CPU,表明處理器 一次可以計算 4 個位元組(Byte),即一次可以計算32位(bit)資料,
- 64位CPU,表明處理器 一次可以計算 8 個位元組(Byte),即一次可以計算64位(bit)資料,
32位CPU最大支持4G記憶體,這是怎么算出來的?它的前提條件是CPU的位寬等于地址總線位寬
32位CPU,其地址總線位寬也是32位,根據地址總線位寬我們可以算出:2^32B = 4GB,2^35b = 4GB
,其最大記憶體尋址能力只能達到是4G,我們就算給這臺32位的電腦裝8G的記憶體條,也無法提高其計算能力,
但是我們剛剛只是舉得最普遍的情況,32位CPU,其地址總線位寬也可以是36位,40位
控制總線
控制總線(Control Bus),用來傳輸的是控制或狀態信號,控制總線是雙向傳輸的,一般用于發送和接收信號,比如存盤器讀、存盤器寫、中斷、設備復位等信號,控制總線的寬度決定了CPU對外部器件的控制能力
總線的共享性和獨自性
總線具有分時和共享性:
分時是指同一時刻只允許有一個部件向總線發送資訊,若系統中有多個部件,則它們只能分時地向總線發送資訊,
共享是指總線上可以掛接多個部件,各個部件之間互相交換地資訊都可通過這組線路分時共享,
也就是在某一時刻只允許有一個部件,占有總線的控制權,可以向總線發送資訊,但多個部件可同時從總線上接收相同的資訊,
系統總線的結構
我們一直說系統總線的設計概念,我們來看下實際上計算機中的總線結構
單總線結構
最初的單總線結構只有一條總線叫做系統總線,把各個部分連接起來,所有設備間的通信都要經過系統總線,單總線結構就會顯得負載比較重,同時只能有兩個設備進行通信,其他設備間想要通信就必須等待,所以負載大,無法支持并發操作
雙總線結構
由于I/O 設備的訪問速度是非常慢的,CPU這么昂貴的資源,不能讓它一直等待I/O 設備的回應,所以增加一條I/O 總線,用于在多個外部設備與通道之間傳送資料,將低速 I/O 設備從單總線上分離出來,另一條是主存總線,用于在 CPU、主存和通道之間傳送資料,
通道是具有特殊功能的處理器,能對I/O設備進行統一管理,
三總線結構
三總線結構在二總線結構上(主存總線, I/O 總線),新增DMA總線
DMA(直接記憶體訪問)是現代計算機一個非常重要的特點,在它出現之前,主存總線和IO總線讀取記憶體和IO設備的資料,都是有CPU所控制的,由于CPU的讀取速度比主存、IO設備、硬碟上的讀取速度差距快的多(完全不是一個量級的),CPU是非常昂貴的資源,不能讓它一直等待主存、IO設備的回應資料,所以有了DMA之后,CPU將總線的控制權交給DMA,讓DMA可以不受CPU的控制,由DMA控制器來實作和完成的,去獨自與主存、IO設備互動,也沒有中斷處理方式那樣保留現場和恢復現場程序,通過硬體為RAM和IO設備開辟一條直接傳輸資料的通道,使得CPU的效率大大提高
我們知道總線的控制權具有分時獨占性,DMA控制器獲得總線控制權后,CPU即刻掛起或只執行內部操作,DMA完成任務后通過歸還總線控制權,由于DMA控制器和CPU都有訪內請求,可將地址、資料等信號送到總線上,甚至都不需要經過"申請-建立-歸還總線控制權"的程序,直接控制權轉移,讓DMA與CPU交替訪問記憶體,由于耗時極短,產生"同時訪問"記憶體的現象
所以DMA總線提高了 I/O 設備的性能,使其更快地回應命令,提高系統吞吐量,
還有四總線結構,PCI總線結構, 雙獨立總線結構等就不介紹了,感興趣的自行去查閱相關資料,
總線傳輸的四個階段
- 申請分配階段:由需要使用總線的主模塊(或主設備)提出申請,經總線仲裁機構決定將下一傳輸周期的總線使用權授予某一申請者,也可將此階段細分為傳輸請求和總線仲裁兩個階段,
- 尋址階段:獲得使用權的主模塊通過總線發出本次要訪問的從模塊的地址及有關命令,啟動參與本次傳輸的從模塊,
- 傳輸階段:主模塊和從模塊進行資料交換,可單向或雙向進行資料傳送,
- 結束階段:主模塊的有關資訊均從系統總線上撤除,讓出總線使用權,
總線仲裁
由于計算機有多個設備,必然會存在多個設備同時競爭總線控制權的問題,這時候就需要總線仲裁,讓某個設備優先獲得總線控制權,獲得了總線控制權的設備,才能開始傳送資料,未獲勝的設備只能等待獲勝的設備處理完成后才能執行,
總線仲裁方式按其仲裁控制機構可分為集中總裁方式和分布仲裁方式兩種,
集中總裁方式
總線控制邏輯基本上集中于一個設備(如 CPU)中,將所有的總線請求集中起來,利用一個特定的裁決演算法進行裁決,稱為集中仲裁方式,集中仲裁方式有鏈式查詢、計數器定時查詢方式和獨立請求方式
,
- 鏈式查詢方式
總線上所有的部件共用一根總線,當有部件請求使用總線時,需經此線發總線請求信號到總線控制器,由總線控制器檢查總線是否忙,若總線不忙,則立即發總線回應信號,經總線回應線 BG 串行地從一個部件傳送到下一個部件,依次查詢,若回應信號到達的部件無總線請求,則該信號立即傳送到下一個部件;若回應信號到達的部件有總線請求,則信號被截住,不再傳下去,也就是說“總線忙”信號的建立者是獲得總線控制權的設備,
在鏈式查詢中,部件離總線控制器越近,其優先級越高;部件離總線控制器越遠,其優先級越低,優點:鏈式查詢只需很少幾根控制線就能按一定優先次序實作總線控制,結構簡單,擴充容易,
缺點:對硬體電路的故障敏感,且優先級不能改變,當優先級高的部件頻繁請求使用總線時,會使優先級較低的部件長期不能使用總線,
- 計時器定時查詢方式
它采用一個計數器控制總線使用權,相對鏈式查詢方式多了一組地址線,少了一根總線回應線 BG,它仍共用一根總線請求線,當總線控制器收到總線請求信號并判斷總線空閑時,計數器開始計數,計數值通過設備地址線發向各個部件,當地址線上的計數值與請求使用總線設備的地址一致時,該設備獲得總線控制權,同時終止計數器的計數及查詢,
優點:計數可從“0”開始,此時一旦設備的優先級次序被固定,設備的優先級就按 0,1,...,n 的順序降序排列,而且固定不變;計數也可從上一次的終點開始,即采用一種回圈方法,此時設備使用總線的優先級相等;計數器的初值還可以由程式設定,故優先級可以改變,且這種電路的故障沒有鏈式查詢方式敏感,
缺點:增加了控制線數(若設備有 n 個,則大致需要 ?log2n? + 2 條控制線),控制也相對比鏈式查詢要復雜,
- 獨立請求方式
每個設備均有一對總線請求線 BR_i_ 和總線允許線 BG_i_,當總線上的部件需要使用總線時,經各自的總線請求線發送總線請求信號,在總線控制器中排隊,當總線控制器按一定的優先次序決定批準某個部件的請求時,給該部件發送總線回應信號,該部件接到此信號就獲得了總線使用權,開始傳送資料,
優點:回應速度快,總線允許信號 BG 直接從控制器發送到有關設備,而不必在設備間傳遞或查詢,而且對優先次序的控制相當靈活,缺點:控制線數量多(設備有 n 個,需要 2n + 1 條控制線,其中加的那條控制線為 BS 線,作用是讓設備向總線控制器部件反饋已使用完總線),總線控制邏輯更復雜,
分布仲裁方式
分布式仲裁方式不需要中央仲裁器,每個潛在的主模塊都有自己的仲裁號和仲裁器,當它們有總線請求時,就會把它們各自唯一的仲裁號發送到共享的仲裁總線上,每個仲裁器將從仲裁總線上得到的仲裁號與自己的仲裁號進行比較,若仲裁總線上的仲裁號優先級高,則它的總線請求不予回應,并撤銷它的仲裁號,最后,獲勝者的仲裁號保留在仲裁總線上,
總線的性能指標
- 總線的傳輸周期,指一次總線操作所需的時間(包括申請階段、尋址階段、傳輸階段和結束階段),簡稱總線周期,總線傳輸周期通常由若干總線時鐘周期構成,
- 總線時鐘周期,即機器的時鐘周期,計算機有一個統一的時鐘,以控制整個計算機的各個部件,總線也要受此時鐘的控制,
- 總線的作業頻率,總線上各種操作的頻率,為總線周期的倒數,實際上指 1 秒內傳送幾次資料,
- 總線寬度,又稱總線位寬,它是總線上同時能夠傳輸的資料位數,通常指資料總線的根數,如 32 根稱為 32 位總線,
- 總線帶寬,可理解為總線的資料傳輸率,即單位時間內總線上同時能夠傳輸的資料位數,通常用每秒傳送的位元組數來衡量,單位可用 B/s 表示,總線帶寬 = 總線作業頻率 * (總線寬度 / 8),
- 總線復用,總線復用是指一種信號線在不同的時間傳輸不同的資訊,因此可以使用較少的線傳輸更多的資訊,從而節省空間和成本,
- 信號線數,地址總線、資料總線和控制總線 3 種總線書的總和稱為信號線數,
其中,總線最主要的性能指標為總線寬度、總線作業頻率、總線帶寬,總線帶寬是指總線本身所能達到的最高傳輸速率,它是衡量總線性能的重要指標,總線帶寬 = 總線寬度 * 總線頻率,例如總線作業頻率為 22 MHz
,總線寬度為 16 位
,則總線帶寬= 22 * (16 / 8)= 44 MB/s
,
尾語
感謝大家讀到最后,想信大家都了解了總線是什么?計算機為什么使用總線?以及總線的設計理念,總線一些通用的特性,總線和記憶體的互動,接著又聊到了總線的結構,DMA等現代計算機的重要技術,最后又介紹總線仲裁和其性能指標,希望大家有所識訓
參考資料:
《深入理解計算機系統 第三版》
《計算機組成原理》
《深入淺出計算機組成原理》
https://blog.csdn.net/qq_42896653/article/details/105329078
https://blog.csdn.net/weixin_42394252/article/details/106073221
https://blog.csdn.net/qq_42896653/article/details/105329078
本篇文章到這里就結束啦,如果我的文章對你有所幫助,還請幫忙一鍵三連:點贊、關注、收藏,你的支持會激勵我輸出更高質量的文章,感謝!
計算機內功、JAVA原始碼、職業成長、專案實戰、面試相關等更多高質量文章,首發于公眾號「小牛呼嚕嚕」,我們下期再見,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/543195.html
標籤:其他
上一篇:Grafana 系列文章(十):為什么應該使用 Loki
下一篇:返回列表