漫談計算機組成原理(二)之系統總線

在這個系列文章的第一講,漫談計算機組成原理(一)之程序運行的過程 中說過,現代計算機是從馮若伊曼計算機發展起來的。其組成部分有存儲器、運算器、控制器、輸入設備、輸出設備,在現代計算機中,人們將運算器與控制器封裝起來成爲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

總線控制(重要內容)

接下來的這個內容,能夠說是系統總線這一講中最爲核心的部分。

概述

總線的控制主要是兩個方面的內容。 首先,咱們能夠想象到,當某一個時間點上,有了多個設備同時發出總線的佔用請求,那麼總線應該去響應哪個設備的佔用請求呢?再者,咱們講了,在信息傳輸的過程當中,不可避免的會出現信息丟失,如何保證數據傳輸的完整性呢?這就是咱們要討論的第一個問題——總線的判優控制。 其次,雖然總線的判優控制解決了總線應該與哪個設備交互的問題,可是仍是存在這樣一個問題的:兩個設備,一個主設備(對總線有控制權的設備)和一個從設備(只能響應從總線發來的命令)進行交互的時候,主設備什麼時候佔用傳輸數據?從設備什麼時候發送響應數據?這就是咱們要講的第二個問題,也就是總線的通訊控制。它的做用就是解決通訊雙方的協調配合的問題。

總線的判優控制

具體的講,總線的判優控制共有兩種方式,一種是集中式,將全部的控制邏輯集中在一個部分;另一種是分佈式,也就是將控制邏輯集中在各個部分。而分佈式並不常見,這裏只介紹集中式的判優控制。

  • 鏈式查詢

    這裏寫圖片描述
    首先來講明一下這張圖片上各個英文名稱的意義。BS:總線忙,也就是當前總線正在被使用;BR:總線請求:設備的總線請求信號就是從這條線上發出的;BG:總線贊成,當總線贊成設備的佔用請求時,贊成信號將會從這裏發出。 鏈式查詢方式,顧名思義,就是將全部設備像鏈子同樣串聯起來。 工做流程以下:某一個設備檢測到當前總線空閒,則經過BR線向總線發出佔用請求,當總線控制部件收到了佔用請求後,他只知道收到了佔用請求,殊不知道是哪一個設備發出的佔用請求;此時就會經過總線贊成BS線查詢,直到查找到發送總線佔用請求的設備即中止。 能夠看到,這種判優控制中,設備的優先級是按照位置肯定的,老是離總線最近的那個設備會有限被查找到。也就是說,最後一個設備可能永遠沒法佔用到總線。這就很是坑了,若是沒法佔用總線,也就表明着沒法正常工做,那還要這個設備作什麼呢? 還有一點,前面說了,這些設備是串聯起來的,經過一根BS線,那麼,當BS線某處發生了損壞,則查詢將沒法進行。

  • 計數器定時查詢

    這裏寫圖片描述
    很明顯,第一種鏈式查詢方式在實際使用中確定是各類問題,這種方式可以大大的改進種種狀況。 相比較於鏈式查詢方式,這種方式去掉了BG(總線贊成)線,而增長了設備地址線,也就是定時查詢計數所指示的那條線。 當總線接收到BR線的請求信號後,在總線未被佔用的狀況下,總線控制部件中的計時器開始計數,經過設備地址線向設備發送地址,當某設備地址與發送請求的設備地址一致時,設備則得到總線控制權,計數器中止計數。 若是在查找過程當中,當前計數地址與發送請求的設備地址沒匹配上,則計數器+1,直到找到這個設備爲止。 這個計數器的值是能夠經過軟件來設定的,這樣,就可以人爲的肯定設備的優先級。 【注】這種方式的設備地址線的條數爲[log2n]條(n爲設備數)。

  • 獨立請求方式

    這裏寫圖片描述
    這種方式就很是有意思思了,簡單的講,就是將總線請求(BR)和總線贊成(BG)線給每一個設備都分配一下,固然,每一個設備都須要鏈接一下地址線和數據線。 總的過程和上面的方式沒有太大區別,主要的區別在於,這裏的優先權控制變成了排隊器,給每一個請求排隊,而後再執行。固然,這種方式是頗有好處的,最起碼執行速度很是的快,可是,一旦設備過多,那又變成了災難。 ##總線的通訊控制 因爲總線的通訊控制主要解決的就是:通訊雙方的協調配合問題,那麼在不一樣時間段,就會出現不一樣的狀態。因此咱們這裏引入一個總線生命週期的概念。 ###總線的生命週期 總線生命週期,是指主從設備完成一次完整的信息通信的過程。這個過程包括三個階段:

  • 申請分配階段 就是主設備申請總線控制權的過程

  • 尋址階段 也就是總線控制器尋找究竟是哪一個設備發起的控制請求的過程。

  • 數據傳輸階段

  • 結束階段

而咱們接下來要討論的內容就是數據傳輸階段的通訊過程。

通訊方式

  • 同步通訊:由統一時標控制通訊的數據傳輸
    這裏寫圖片描述
    這張圖片表示的是某個設備向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

微信公衆號:最高權限比特流

相關文章
相關標籤/搜索