Pre-arbitration 小辭典

Bus 的 arbitration 通常是指把 bus 的控制權交給哪一個發出需求的 device, 沒拿到控制權的 request 就要排隊.

而 arbitration 就像高速公路的匝道管制, pre-arbitration 就像是匝道的燈號. 當燈號在紅燈的時候, 任何車輛都不准再上高速公路了. 反之, 綠燈的時候, 就依照優先權 (載客量) 或是先到先行 (按排隊順序) 來決定誰先通行.

當一次綠燈過後 (arbitration), 燈號會出現一個特定數字 (pre-arbitration count). 比方說停在 3, 那麼載客 3 人以下的車輛就可以上高速公路. 若是出現了 60, 那麼載客 60 人大客車和 9 人以下小客車都有機會開上來. 至於匝道裡 (command buffer) 的那麼多輛車 (request), 誰可以開上高速公路呢? 就是還是由 arbitratior 決定. 

為何要對高速高路做這樣的管制呢? 因為在系統裡面, 有些 request 可能是 real-time 的, 不管它載客量大還是小, priority 都很高. 因此我們會希望只要看見這些車開上匝道, 就給他們先上路的機會. 因此何時開綠燈就很有學問了.

Pre-arbitration 管制了綠燈開起的時間. 當 pre-arbitration count 的值設到最大, 服務就會最好, 民怨最低. 不過即使救護車可能都一時上不了路. 當這個值設到最小, 就是等於直接綠燈跳紅燈. 每次重新篩選誰可以上路之後, 才把綠燈開給它.