匯流排競爭(Bus contention)也稱匯流排爭用,是計算機設計中匯流排的不良狀態——匯流排上的多個設備同時嘗試在匯流排上放置值。
基本介紹
- 中文名:匯流排競爭
- 外文名:Bus contention
- 又稱:匯流排爭用
- 領域:計算機
簡介,後果,解決方法,存儲器映射輸入輸出,
簡介
大多數匯流排架構要求其設備遵循精心設計的仲裁協定,以使競爭的可能性可以忽略不計。但是,當匯流排上的設備有邏輯錯誤、製造缺陷或超出其設計速度運行時,仲裁可能會故障,從而導致競爭。在具有可程式記憶體映射的系統上控制映射的暫存器被寫入非法值後,也可能發生競爭。
後果
競爭可能導致錯誤的操作,並且在異常情況下會損壞硬體——例如匯流排接線的熔斷。
有時會通過緩衝記憶體映射設備的輸出應對匯流排競爭。但是,已經觀察到一個設備的高阻抗仍會干擾其他設備的匯流排值。目前來說,沒有標準的解決方案來應對記憶體設備(如EEPROM和SRAM)之間的數據匯流排爭用。
解決方法
大多數小型計算機系統經過精心設計避免系統匯流排上的匯流排爭用。它們使用一個稱為匯流排仲裁器的設備控制哪個設備在目前可以驅動匯流排,因此匯流排競爭在正常運作中永遠不會發生。
例如令牌環等部分網路也被設計為避免匯流排競爭,因此匯流排競爭在正常運作中永遠不會發生。
大多數網路被設計為容忍網路上偶爾的匯流排爭用。CAN匯流排、ALOHAnet、乙太網等在正常運作中偶爾會遇到匯流排爭用,但會使用一些協定(例如避免碰撞的多路訪問、具有碰撞檢測的載波偵聽多路訪問、自動重發請求)最小化爭用時間,並重新傳送在數據包衝突中被破壞的數據。
存儲器映射輸入輸出
記憶體映射輸入輸出(英語:Memory-mapped I/O, MMIO,簡稱為記憶體映射IO),以及連線埠映射輸入輸出(port-mapped I/O, PMIO,也叫作獨立輸入輸出(isolated I/O),是PC機在中央處理器(CPU)和外部設備之間執行輸入輸出操作的兩種方法,這兩種方法互為補充。除此之外,執行輸入輸出操作也可以使用專用輸入輸出處理器(dedicated I/O processors)——這通常是指大型電腦上的通道輸入輸出(Channel I/O),這些專用處理器執行自有的指令集。
記憶體映射IO(不要和記憶體映射檔案的輸入輸出混淆)使用相同的地址匯流排來定址記憶體和輸入輸出設備(簡稱IO設備),前提是IO設備上的設備記憶體和暫存器都已經被映射到記憶體空間的某個地址。這樣當CPU訪問某個地址的時候,可能是要訪問某一部分物理記憶體,也可能是要訪問IO設備上的記憶體。因此,設備記憶體也可以通過記憶體訪問指令來完成讀寫。每個IO設備監測CPU的地址匯流排,並且在發現CPU訪問被分配到本設備的地址區域的時候做出回響,建立數據匯流排和相應設備暫存器之間的連線。為了實現CPU對MMIO設備的訪問,相應的地址空間必須給這些設備保留, 並且不能再分配給系統物理記憶體。這可以是永久保留,也可以是暫時性的保留。通常來說X86架構都是永久保留的,而在Commodore 64中,由於採用了IO設備和普通記憶體之間的堆交換技術(bank switching),可以做到暫時性保留。