在這個系列文章的第一講,漫談計算機組成原理(一)之程序運行的過程 中說過,現代計算機是從馮若伊曼計算機發展起來的。其組成部分有存儲器、運算器、控制器、輸入設備、輸出設備,在現代計算機中,人們將運算器與控制器封裝起來成爲CPU(中央處理單元)。計算機的各類部件想要進行數據交互,就必須讓這些部件造成必定的鏈接關係,以便數據交互的進行。 鏈接的方式有兩種,一種是各個部件之間使用不一樣的線相互鏈接,很明顯,這種交互方式有很大的弊端,如連線複雜形成的控制複雜,還有就是當部件較多的狀況下,簡直就是個災難。因此就催生了另一種鏈接方式——總線鏈接,也就是咱們這一講要講述的東西。 總線鏈接是指,將全部就的部件鏈接在一組公共的信息傳輸線上,這樣作就避免了上面那種傳輸方式的弊端。現代計算機幾乎全部的都是採用總線鏈接。緩存
概述
從引言中,咱們基本上可以瞭解到總線在計算機系統中的做用。可是上面的說法只是一個概論,咱們須要給出更加詳細的總線的做用:**總線是計算機中各個部件的信息傳輸線。**在計算機中,幾乎全部須要信息傳輸的地方,都是存在總線的。 那麼,總線傳輸的信息具體來說是什麼呢?總的來說,總線傳輸的信息可使數據、地址(詳情請看第一講https://blog.csdn.net/yanmiao0715/article/details/80338802)等,接下來會詳細介紹。 另外,從傳輸方式上來說,共有兩種傳輸方式。一種是並行的,另一種串行的方式,兩種方式各有利弊。微信
總線的傳輸方式
-
並行方式 異步
並行傳輸方式很簡單,就是在同一時間內,傳輸多位數據,而計算機的位數,就是按照系統總線傳輸的數據位數劃分的,常見的有32位、64位等。 注意,並行方式並不合適遠距離數據傳輸,由於並行傳輸方式,一旦距離過長,那麼各條總線的相互干擾則十分強大,數據丟失、錯誤也就成了必然。 因此,並行傳輸用在計算機內部,就很是可靠了。既保證了傳輸速度,又保證了數據傳輸的可靠性。
-
串行方式 分佈式
串行方式很明顯不適用於計算機內部的數據傳輸,一來一條總線傳輸速度實在是慢,另外會致使計算機的總線分佈過於複雜。 不過,與上面的方式正好相反的是,這種方式能夠避免遠距離傳輸的數據干擾。 ###總線的結構框圖 在瞭解了基本的總線傳輸方式後,咱們將從比單根總線更大的方面來介紹總線的具體結構。 所謂的總線結構,就是總線在計算機中的具體分佈位置,這個位置的不一樣,會致使計算機的各個方面的不一樣,下面就來一一介紹。
-
面向CPU的雙總線結構 性能
在這種結構中,包括了M總線(CPU與主存之間的數據傳輸總線)、I/O總線。優勢是多條總總線,並行傳輸,效率高。缺點也很明顯,其一是事件執行過程容易被打斷,好比當前IO設備正在佔用總線,與CPU或者主存之間在傳輸數據,而另一個設備此時卻發起了佔用請求,IO總線還要停下來處理佔用請求;其二是IO設備沒法直接與主存進行信息交互,只能經過CPU這個介質,可是這就無故端的佔用了CPU,CPU徹底能夠在被佔用的這段時間處理數據,因此,就須要改進。
-
單總線結構 操作系統
這種結構中,只有一條總線:系統總線。計算機中的全部設備都鏈接在這條總線上。這種方式的優勢基本能夠忽略了,缺點太多: 當CPU進行數據處理的時候,很是容易被打斷,相似於上面的狀況,就致使了CPU的效率太低;若是計算機中有不少的設備,很難想象這條總線要長到什麼程度,總線越長,延遲越高;最後,這麼多的設備,只有一條系統總線,典型的狼多肉少,這些設備之間必定會打架的。
-
以存儲器爲中心的雙總線結構 .net
最後的這種以存儲器爲中心的雙系統總線結構,也就是在第一講之中提過的現代計算機的結構。這種結構整合了上面兩種方式的結構,作到了揚長避短**。雖然和單總線結構挺像,可是,它在CPU和主存之間加入了一條存儲總線,這樣保證了CPU和主存交互是不佔用系統總線,也就避免了CPU的執行被打斷,CPU須要的數據既能夠從主存中獲取,又能夠從總線中獲取,很是強大;另外,系統總線和存儲總線飛凱,提升了效率的同時,還減輕了系統總線的負擔。**
總線分類
片內總線
所謂的片內總線,就是CPU內部的總線,鏈接着CPU內部的各個部件。3d
系統總線
- 數據總線:數據總線是雙向傳輸的,和機器字長、存儲字長有關係
- 地址總線:地址總線是單向的,包括存儲地址、IO地址
- 控制總線:有入、有出,發出各類控制信號
固然,總線分類的內容還有不少,包括一些常見的術語,這裏就再也不贅述了,在後面的講解 中遇到什麼就會解釋什麼。cdn
總線性能指標
- 總線寬度:數據總線的根數
- 總線帶寬:總線的數據傳輸速率,也就是每秒傳輸的最大字節數,單位MBp/S
- 總線複用:一條信號線上分時傳送兩種信號
- 信號線數:地址總線、數據總線 、控制總線的數目總和
- 總線控制方式 #總線結構 ##單總線結構 單總線結構在總線結構框圖中其實已經說過了。就是上面那種問題特別多的總線結構。這裏就再也不贅述。 ##多總線結構 ###雙總線結構
能夠看到,這種方式,是將I/O接口接在了與主存總線通訊的通道上,那麼這個通道是什麼呢?這個通道其實是由計算機操做系統控制的一個特殊的處理器,用來對I/O設備進行管理。 圖中所示只有一個通道,其實是有不少通道的。人爲的將不一樣速度的I/O設備換分爲不一樣的組,進而將這些組分別接在不一樣的通道上,能夠預見,這種結構的總線數據吞吐量是十分高的,就實現了一個至關強大的計算機系統。 而這種結構,一般被用在大型計算機上。
三總線結構
這種結構的總線包括:主存總線、DMA總線(直接存儲器訪問,顧名思義,使用這條總線的I/O設備能夠直接向主存的讀寫數據)、I/O總線。 其中,DMA總線鏈接的是告訴I/O設備,最好可以和主存(內存條)的速度在必定程度上匹配。 在這種結構中,任意時刻,只有一條總線被佔用。主存總線確定不能和DMA總線同時被佔用,而I/O設備只在CPU調用I/O指令的時候纔會被用到。 我以爲你有可能會有這麼個疑問:I/O總線會不會和DMA總線同時被佔用?確定是不能的,由於前面說了,I/O總線只有在調用I/O指令的時候纔會被佔用,在佔用的過程當中,沒有CPU的控制,高速I/O設備怎麼可能會和主存交互。
這種結構,是將CPU和Cache(緩存設備)之間加入了局部總線,不只如此,主存和Cache都鏈接在系統總線上,去掉了CPU和主存的信息傳輸,此時與CPU直接進行信息傳輸的是Cache,咱們知道,Cache是一種比主存更快的設備,Cache能夠直接經過總線讀取主存中的信息,而後交給CPU,這樣就速度就會飛起。另外,擴展總線的存在,使得設備擴展變得極爲容易。
四總線結構
對比三總線結構,四總線就是將三總線更加細分,將I/O總線分紅了高速總線和低速擴展總線。因爲四總線結構並非特別常見,這裏就不詳細說明了,感興趣的小夥伴能夠本身查閱一下相關的資料。blog
總線控制(重要內容)
接下來的這個內容,能夠說是系統總線這一講中最爲核心的部分。
概述
總線的控制主要是兩個方面的內容。 首先,咱們能夠想象到,當某一個時間點上,有了多個設備同時發出總線的佔用請求,那麼總線應該去響應哪個設備的佔用請求呢?再者,咱們講了,在信息傳輸的過程當中,不可避免的會出現信息丟失,如何保證數據傳輸的完整性呢?這就是咱們要討論的第一個問題——總線的判優控制。 其次,雖然總線的判優控制解決了總線應該與哪個設備交互的問題,可是仍是存在這樣一個問題的:兩個設備,一個主設備(對總線有控制權的設備)和一個從設備(只能響應從總線發來的命令)進行交互的時候,主設備什麼時候佔用傳輸數據?從設備什麼時候發送響應數據?這就是咱們要講的第二個問題,也就是總線的通訊控制。它的做用就是解決通訊雙方的協調配合的問題。
總線的判優控制
具體的講,總線的判優控制共有兩種方式,一種是集中式,將全部的控制邏輯集中在一個部分;另一種是分佈式,也就是將控制邏輯集中在各個部分。而分佈式並不常見,這裏只介紹集中式的判優控制。
而咱們接下來要討論的內容就是數據傳輸階段的通訊過程。
通訊方式
- 同步通訊:由統一時標控制通訊的數據傳輸
這張圖片表示的是某個設備向CPU傳輸數據的過程。 整個的傳輸過程以下:
- 在T1時間的上升沿(上升沿這個詞其實不難理解,就是時鐘向上走的部分,對應降低沿就是時鐘線向下走的過程),主設備(CPU)給出讀數據的目的地址
- 在T2上升沿,主設備(CPU)給出讀命令
- 在T3上升沿,從設備給出數據信息,執行讀數據操做
- T3降低沿,讀命令、數據信號撤銷
- T4,地址線撤銷
這種方式,比較中規中矩,就是說在每個時間段,執行固定的操做,模塊間的配合較爲簡單。缺點也很明顯,就是中規中矩的缺點,不夠靈活,設備必須在規定的時間內執行完成相應的操做。 在這中方式中,主從模塊的操做按照統一的時標操做。主從設備的速度若是相差較大,那麼速度快的設備必須等待速度慢的設備執行。 【適用範圍】適用於總線長度較短、各部件存取時間比較一致的場合。
- 異步通訊
異步通訊就比較靈活了,沒有統一的時標,只須要主設備發出請求,從設備發出響應便可。異步通訊分紅了三種方式:
- 不互鎖 想象這樣的一個場景,一我的向另一我的打招呼,打完招呼就去忙本身的事情了,無論那我的是否聽到了本身的問候,都去作本身的事情。類比這種狀況:主設備發出請求,發完請求後就去執行其餘的操做了,無論從設備是否收到了回答。理想的情況下確定是須要從設備回答的,這就衍生了另一種方式。
- 半互鎖 再想象一個場景,A向B打招呼,若是B和A沒有仇的話,B確定是會回覆A的,若是A發現B沒有搭理他,那麼他通常會再和B打招呼,若是B依然不迴應,那麼這個過程就會持續下去。 到這裏也是同樣的,當主設備向從設備發出信號時,若是從設備接收到這個信號,那麼就會向主設備發送響應信息。若是主設備一直沒有接收到這個信號,就會一直向從設備發送信息。
- 全互鎖 全互鎖,就是半互鎖的升級版本。在半互鎖中,若是主設備沒有收到從設備發出的響應信號,除了是從設備沒有接收到主設備的信號外,還有多是由於從設備發送的信號主設備沒有收到,若是是這種狀況,主設備也會一直請求下去。 在全互鎖的狀況中,若是主設備發出信號後,從設備也收到了信號,則會向主設備發送響應信號;若是主設備接收到了信號,那麼就會再從設備發送一個表示接收到了的信號,此時從設備就能夠撤銷響應信號了。若是沒有收到,則從設備就會保持這個響應信號。 總結一句話就是,主設備一直請求,從設備一直應答。
- 半同步通訊(同步、異步結合)
爲何說半同步通訊是同步通訊和異步通訊相互結合的方式呢?由於半同步通訊保留了同步通訊的時鐘週期,又繼承了異步通訊的可以使得不一樣速度的設備協調工做的優勢,能夠說是十分的強大。 從圖中能夠看到,半同步通訊不一樣於同步通訊的一個重要的特色就是:增長了兩個Tw週期,還增長了WAIT信號。下面咱們就來講一下它的具體狀況。 首先,和同步通訊相同,都是在T1給出地址信號,T2給出讀命令,讀命令給出後,緊接着的並不必定是數據信號。若是從設備的速度很慢,不能在T3時間給出數據,則會通知主設備,我如今尚未準備好。隨後主設備就會給出WAIT信號,插入等待週期,當從設備說我已經準備好了的時候,主設備就會撤銷掉等待信號,開始讀數據。後面的狀況就和同步通訊一致了。
- 分離式通訊:充分發揮系統總線每瞬間的潛力 這種通訊方式比較複雜,咱們很難在通常的計算機上見到,這裏就很少說了,只須要知道它的這個特性就能夠了。感興趣的能夠看看這片博文:https://blog.csdn.net/ce123_zhouwei/article/details/6936047,不過我發現這個做者好像是直接摘抄的唐朔飛教授的《計算機組成原理》這本書。無奈╮(╯▽╰)╭,你們看看就好了。
結語
感謝您的閱讀,歡迎指正博客中存在的問題,也能夠跟我聯繫,一塊兒進步,一塊兒交流!
郵箱:roobtyan@outlook.com
我的博客:http://roobtyan.cn
微信公衆號:最高權限比特流