1. 程式人生 > >漫談計算機組成原理(二)之系統匯流排

漫談計算機組成原理(二)之系統匯流排

在這個系列文章的第一講,漫談計算機組成原理(一)之程式執行的過程 中說過,現代計算機是從馮若伊曼計算機發展起來的。其組成部分有儲存器、運算器、控制器、輸入裝置、輸出裝置,在現代計算機中,人們將運算器與控制器封裝起來成為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的效率過低;如果計算機中有很多的裝置,很難想象這條匯流排要長到什麼程度,匯流排越長,延遲越高;最後,這麼多的裝置,只有一條系統匯流排,典型的狼多肉少,這些裝置之間一定會打架的。

  • 以儲存器為中心的雙匯流排結構
    這裡寫圖片描述
    最後的這種以儲存器為中心的雙系統匯流排結構,也就是在第一講之中提過的現代計算機的結構。這種結構整合了上面兩種方式的結構,做到了揚長避短。雖然和單匯流排結構挺像,但是,它在CPU和主存之間加入了一條儲存匯流排,這樣保證了CPU和主存互動是不佔用系統匯流排,也就避免了CPU的執行被打斷,CPU需要的資料既可以從主存中獲取,又可以從匯流排中獲取,非常強大;另外,系統匯流排和儲存匯流排飛凱,提高了效率的同時,還減輕了系統匯流排的負擔。

匯流排分類

片內匯流排

所謂的片內匯流排,就是CPU內部的匯流排,連線著CPU內部的各個部件。

系統匯流排

  • 資料匯流排:資料匯流排是雙向傳輸的,和機器字長、儲存字長有關係
  • 地址匯流排:地址匯流排是單向的,包括儲存地址、IO地址
  • 控制匯流排:有入、有出,發出各種控制訊號

當然,匯流排分類的內容還有很多,包括一些常見的術語,這裡就不再贅述了,在後面的講解中遇到什麼就會解釋什麼。

匯流排效能指標

  • 匯流排寬度:資料匯流排的根數
  • 匯流排頻寬:匯流排的資料傳輸速率,也就是每秒傳輸的最大位元組數,單位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匯流排分成了高速匯流排和低速擴充套件匯流排。由於四匯流排結構並不是特別常見,這裡就不詳細說明了,感興趣的小夥伴可以自己查閱一下相關的資料。

匯流排控制(重要內容)

接下來的這個內容,可以說是系統匯流排這一講中最為核心的部分。

概述

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

匯流排的判優控制

具體的講,匯流排的判優控制共有兩種方式,一種是集中式,將所有的控制邏輯集中在一個部分;另外一種是分散式,也就是將控制邏輯集中在各個部分。而分散式並不常見,這裡只介紹集中式的判優控制。

  • 鏈式查詢
    這裡寫圖片描述
    首先來說明一下這張圖片上各個英文名稱的意義。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,不過我發現這個作者好像是直接摘抄的唐朔飛教授的《計算機組成原理》這本書。無奈╮(╯▽╰)╭,大家看看就行了。

結語

感謝您的閱讀,歡迎指正部落格中存在的問題,也可以跟我聯絡,一起進步,一起交流!

微信公眾號:進擊的程式狗
郵箱:[email protected]
個人部落格:http://roobtyan.cn

相關推薦

漫談計算機組成原理系統匯流排

在這個系列文章的第一講,漫談計算機組成原理(一)之程式執行的過程 中說過,現代計算機是從馮若伊曼計算機發展起來的。其組成部分有儲存器、運算器、控制器、輸入裝置、輸出裝置,在現代計算機中,人們將運算器與控制器封裝起來成為CPU(中央處理單元)。計算機的各種部

計算機組成原理系統匯流排

在這個系列文章的第一講,漫談計算機組成原理(一)之程式執行的過程 中說過,現代計算機是從馮若伊曼計算機發展起來的。其組成部分有儲存器、運算器、控制器、輸入裝置、輸出裝置,在現代計算機中,人們將運算器與控制器封裝起來成為CPU(中央處理

重學計算機組成原理- 制定學習路線,攀登“效能”

0 學習路線的知識點概括 學習計算機組成原理,就是學習計算機是如何協調執行的 計算機組成原理的英文叫Computer Organization Organization 意"組織機構"。 該組織機構能夠進行各種計算、控制、讀取輸入,進行輸出,達成各種強大的功能。 把整個計算機組成原理的知識點拆分成了

計算機組成原理儲存器

6.1儲存器及半導體儲存器的分類 儲存器是計算機用來儲存資訊的部件。 6.1.1  儲存器的分類 按存取速度和用途可把儲存器分為兩大類:記憶體儲器和外儲存器。 記憶體:把通過系統匯流排直接與CPU相連的儲存器稱為記憶體儲器,簡稱

計算機組成原理 定點數乘法

定點數的乘法:  1.原碼一位乘 (1)  A = – 0.1101       B = 0.1011            (2) 2.原碼二位乘      每次用乘數的2位判斷原部分積是否加或如何加被乘數       兩位乘數共有四種狀態,對應四種狀態如

漫談計算機組成原理I/O系統

本文講什麼? 這個系列的文章其實可以分成兩個部分,計算機系統的其他硬體結構和CPU。 而我們今天要講述的內容,就是其他硬體結構中的最後一個部分——I/O(輸入輸出)系統。 這篇文章主要講述的就是I/O系統的組成以及I/O系統的工作原理,下面就正式開始I/O

漫談計算機組成原理定點數及定點數的運算

本文講什麼?在計算機中,小數點並沒有用專門的器件去表示,而是按照一種約定的方式,統一儲存在暫存器單元中的。算數邏輯運算單元(ALU)是CPU的組成部分,負責算數和邏輯的運算。那麼,ALU究竟是如何工作的呢?這就是本文主要探討的內容: 什麼是定點數?定點數的位移、加、減、乘、除運算是如何進行的?定點數是啥?從字

計算機組成原理7---指令系統

導讀 1.機器指令 2.運算元型別和操作型別 3.定址方式 4.指令格式舉例 機器指令 操作碼比較重要的一點是,任何一個短的操作碼都不能是長的操作碼的字首,上邊的擴充套件避免了這一點。 ACC

計算機組成原理4---儲存器

導讀 4.高速緩衝儲存器 cache (1)cache簡介 (2)cache-主存的地址對映 5.輔助儲存器 高速緩衝儲存器 cache簡介 寫操作 寫直達法:既寫cache又寫主存,比較耗時,寫主存比較慢 寫回法:只寫cac

漫談計算機組成原理九·續定點數的運算方法

本文講什麼? 在上一篇文章中,我們主要講述了定點數的加、減、乘運算,唯獨沒有講解除法運算。原因有兩個,一來上一篇文章的內容確實比較多,二來除法運算比乘法相對複雜。所以,本文將從除法的來歷講起,然後講除法運算的幾種方法。 除法運算的形成 我們來看這樣一個例子

計算機組成原理儲存器的層次結構

組成原理(三)儲存器的層次結構 第三章 儲存器的層次結構 3.1 儲存器分類 按儲存介質分類 (1)半導體儲存器:  &

計算機組成原理2---系統匯流排

導讀 1。分類 2。特性與效能 3。匯流排結構 4。匯流排判優控制 5。匯流排通訊控制 分類 五大部分的互聯方式有兩種,一種是各部分之間單獨連線,稱為分散連線。另一種是將各部分連到一組公共資訊傳輸線上,稱為匯流排連線 按傳送方式分類 並行傳輸匯流排(8位,16

計算機網路實驗Wireshark抓包分析獲取URL列表去重、排序、統計

實驗要求 本試驗要求基於第一次實驗中訪問某官網主頁時所抓取到的資料包,用Python 3語言、Jupyter Notebook和Pyshark編寫程式碼進行協議分析所需的開發環境,編寫程式碼,以輸出的方式列出首頁以及其所包含的所有資源(至少包含如下型別

唐僧大官人的考研筆記——計算機組成原理day01

第一章 計算機系統概論 1.1 計算機系統簡介 1.1.1 計算機的軟硬體概念 計算機系統由硬體和軟體兩大部分組成 硬體:計算機的實體部分 軟體:存在於計算機的主存或輔存內 1.1.2 計算機系統的層次結構 機器語言 早期計算機只有機器語言,使用者必須用二進位

唐僧大官人的考研筆記——計算機組成原理day02

第二篇 計算機系統的硬體結構 計算機硬體系統由中央處理器、儲存器、I/O系統以及連線它們的匯流排組成。 第三章 系統匯流排 3.1 匯流排的基本概念 計算機系統的五大部件之間的互連方式有兩種,一種是各部件之間使用單獨的連線,稱為分散連線;另一種是將各部件連到一組

RISE UP —計算機組成原理

 第一個問題:什麼是計算機?                    現在特指電子計算機,即能夠告訴運轉的電子裝置,目的是用於資料的計算,是對使用者的輸入進行加工,根據使用者的需求和要求進行加工,最後輸出一個結果。 第二個問題:從上面所述的這個簡單的定義來說,猜測一下有哪些

計算機組成原理補碼反碼的加減運算和溢位

補碼的加法運算:    補碼加法的特點:    符號位作為數的一部分參加運算,符號位的進位丟掉。    運算結果為補碼形式 整數  [A]補 + [B]補= [A+B]補    (mod 2n+1) 小數  [A]補 + [B]補= [A+B]補    (mod 2) 補碼的

計算機組成原理6---計算機運算方法未完成

導讀 1.無符號數與有符號數 2.數的定點表示和浮點表示 3.定點運算(移位,加減,乘除) 無符號數與有符號數 整數原碼 +1110 -> 0,1110 -1110->1,1110 小數原碼 +0.1101->0.1101 -0.1101->1.11

計算機組成原理1-計算機系統概述

馮·諾依曼設計思想 馮·諾依曼設計思想可以簡要地概括為以下三點: (1) 計算機應包括運算器、儲存器、控制器、輸入和輸出裝置五大基本部件。 (2) 計算機內部應採用二進位制來表示指令和資料。每條指令一般具有一個操作碼和一個地址碼。其中,操作碼錶示運算性質,地址碼指出運算元在

計算機組成原理4-中央處理器CPU-時序訊號

時序產生器和控制方式 時序訊號:一個用來確定時段執行哪些微操作的標誌。就好比我們每天按時吃飯按時上學的時間的規定。 1.組成計算機硬體的器件特性決定了時序訊號最基本的體制是電位-脈衝制。 2.取指週期和執行週期發生了什麼? 從時間上來說,取指令事件發生在指令週期的第一