標籤:
- 匯流排幹嘛的?說白了就是用來傳輸資料的,在電腦的各個組件之間。比如我主存裡存的資料CPU要用,需要一條線路傳過去吧,CPU內部各個寄存器之間、寄存器與ALU、CU與各個組件之間等等等等很多地方,總之就是組件之間需要傳輸資料
- 傳輸的資料分為三種,對應著三種功能的匯流排
- 那麼為何稱為“總”線?那是因為大部分情況下,我們沒辦法把任意兩個組件之間都連起來,因為組件的數量太多太多了
- 所以我們只用一根匯流排來傳輸, 那麼面臨的第一個問題就是,怎麼區分資料、地址、控制這三類呢??
- 確實對於資料和地址有一種技術叫做匯流排複用,因為電腦是在時序的控制下工作,所以一根匯流排上的資料在不同的時間段內被規定為“資料”還是“地址”。對於控制訊號還沒有這樣做的,,,
- 還是分三根匯流排來吧
- 那麼又有一個問題,只有三根線的話,雖然可以區分是資料還是地址還是控制訊號,但是對於眾多的組件來說,它如何知道當前匯流排上傳輸的資料是不是給它的?因為一條資料線串連了所有的組件,A給B發送資料的時候上面的資料是給B的,對於其他組件是沒用的、是錯誤的資料。
- 所以說,就需要控制訊號來控制嘛。A發送資料的時候,控制訊號就只讓B從資料匯流排接收資料,其他組件是不接收的。
- 突然想到一個比喻,只是用來解釋匯流排的工作原理,並非曆史發展
- 匯流排大概就像自來水管,自來水廠沒辦法給所有的家庭都鋪設一條專門的管道,所以就只鋪設一條管道串連起所有的家庭。每個家庭都有自己家庭的工作用來給社會做貢獻,哪家需要用水,就可以隨時開啟自來水管取水。
- 後來自來水廠買下了加油站,但是不想再鋪設更多的線路,所以就仍舊用一根管道,但是告訴所有的家庭,只有在你收到了自來水的訊號,從管道上才能取出你需要的自來水,收到的是汽油訊號,取出來的就是汽油。訊號的傳輸也需要一條線,所以就鋪設了一條電線來傳輸訊號
- 事實證明這做是明智的,因為自來水廠經濟越來越發達,逐漸買下了食用油廠、瓦斯廠、鹽廠、漢堡廠等等等等,但是依舊使用一根管道就可以服務所有的家庭了,只不過需要傳輸的控制訊號多一點,這比多鋪設管道要省錢多了
- 後來發現家庭之間的交換也比較頻繁,既然有這麼方便的總管道為什麼不用呢?於是大家都在控制訊號的控制下,被告知可以往管道上放東西的家庭就可以往管道上放東西,然後再通知誰來取東西。這些管道就變成了雙向的通行,可以取也可以放。
- 所以匯流排的一個很重要的特徵就是,對掛在上面的組件是共用的。
- 如果兩個家庭之間達成私下交換的協議,或一個家庭和自來水廠有關係可以讓人把東西專門開車送來,那相當於專門的通訊通道,不能稱之為匯流排
- 對應到電腦上,這種匯流排就是“以分時形式共用一組電導線”來實現。
- 廢話太多了…
匯流排組成與特性組成
- 傳輸線、介面和匯流排控制器
- 除了傳輸資料、地址和控制訊號的資訊線外,還有電源線和接地線來串連到每個組件,也有可能會有備用線來預防匯流排出故障
- 介面由三態門和緩衝寄存器組成。三態門可以決定當前匯流排與這個組件的聯通狀態,三態門的輸出可以是1、0和高阻抗三個狀態,多一個EO使能來控制
- 由於匯流排的共用性,所以需要一個匯流排控制器來控制匯流排的使用和分配,
特性
功能特性
電氣特性
- 也就是傳輸方向了啦
- 單向匯流排:只能一個方向傳輸資料。地址線單向就夠了=、=
- 雙向匯流排:全雙工系統和半雙工
- 全雙工系統:同時可以雙向的傳輸資料
- 半雙工:一個時刻只能按照一個方向來傳輸資料
- 別問我怎麼實現的,我不知道。我猜應該是在數字電路這門課上,,,,,,搞得我好想學
時間特性
- 按照時序來規定了每根傳輸線上的訊號在什麼時間才是有效
- 不在指定的時間內讀資料的話,大概是(沒錯我又開始猜了),要麼讀不到、要麼讀錯掉
匯流排設計與實現
- 說到這還只是單匯流排的結構,即所有的模組共用一個匯流排。
- 但是
- 一個匯流排上接入的模組是有限的,太多的模組會讓匯流排的負荷太高,降低通訊效率
- 每個模組的工作頻率也可看作速度不盡相同,比如CPU明顯要快於I/O介面,這樣在工作慢的模組佔用匯流排的時候,工作快的模組幹完了獲要使用匯流排,但是匯流排被慢模組佔用所以不得不等待。
- 所以出現了帶局部匯流排的多匯流排結構
- 然各個組件之間的工作頻率也不相同,這就很難協調,結果就是效率降低,於是就出現了層次匯流排結構,來處理組件之間的協調性
- 進一步還有
- 帶局部匯流排的層次匯流排結構
- 使用橋接器串連的多匯流排結構
- 具有更強容錯能力的多重匯流排結構
匯流排控制
匯流排仲裁
通訊控制
通訊需要發送方和接收方的配合,發送資料叫“源組件”,接受資料叫“目的組件”
- 同步通訊
- 即根據時序的控制
- 源組件在固定的時間內發送資料並保持訊號,到點就撤,不確認目的組件是否收到了資料
- 目的組件在固定的時間讀取資料,不管能不能讀到資料(匯流排上是否有資料),也不管讀到的資料對不對(讀到的是源組件發送的資料還是其他的雜亂資料)
- 時序哪裡來?可以由中央時標來控制,也可以每個組件內建時標,但是需要和中央時標同步,就好比我們手機、電腦上的時間,每次開啟網路就會在網路上和標準時間同步
- 如8086微處理器採用同步通訊讀取儲存空間的資料的時候
-
- T1CPU發送訪存地址
- T2CPU發送讀訊號
- T3主存把資料放上去
- T4CPU讀取資料
- 非同步通訊
- 就是需要雙方互相確認操作,這種確認是通過“握手”協議來實現,種類很多但大致分成單邊控制和雙邊控制
- 單邊控制
- 再分就是,目的組件控制還是源組件控制
- 目的控制
-
- 目的組件先發送資料請求,經過 t 時間的延遲到達源組件,源組件把資料放到資料匯流排,經過 t 時間的延遲資料到達目的組件
- 圖
- 源組件先發送資料,隔 t1 時間再發送資料就緒訊號(防止資料就緒訊號比資料更早到達目的組件),目的組件收到資料就緒訊號就讀取資料匯流排上的資料。兩次資料的發送間隔 t2 時間,這短時間內完成 源組件 向資料緩衝器裝載資料,匯流排仲裁邏輯完成仲裁。
- 雙邊控制
- 雙方都參與到確認中,但依然分主次,且進一步分為“非互鎖”、“半互鎖”、“全互鎖”
- 書上只講了以源組件為主……我也沒再查更多的資料……
- 只看圖吧。應該很容易看懂
-
- 半同步通訊
- 兩種極端的方式優點明顯,但是缺點也明顯
- 人們就很喜歡綜合幾種極端的方法來實現更好的平衡
- 宏觀上按照同步通訊來組織,局部上來用非同步應答的方式
匯流排效能評價
- 位寬
- 匯流排一次傳輸資料的位元,也就是匯流排的線數,一根線只能穿1位(我猜是線上有電還是沒電。沒電其實說不太過去,因為我一直看到的都是“高電平”還是“低電平”。)
- 工作時鐘頻率
- 即控制匯流排的時鐘訊號的頻率,單位一般是HZ,即一秒鐘被分成了多少個節拍
- KHZ = 1000HZ
- MHZ = 1000KHZ
- ……
- 單個資料的傳送周期
- 資料轉送的方式分為正常傳輸和突發傳輸
- 正常傳輸
- 突發傳輸
- 一個刻度即為一個節拍的長度
- 負載能力
- 匯流排上可掛在的組件的最大數目,其實一般不會太大,太大在仲裁的時候會有比較久的延遲,而且匯流排本身也負載不起
- 資料轉送速率
- 匯流排一秒可穩定傳送資料的位元組數
- 單位為KB/s、MB/s
- 最大資料轉送速率又稱為頻寬
- 匯流排頻寬 = 匯流排位寬 * 匯流排工作頻率 / 8
電腦群組成.零件之間的通訊.匯流排BUS