因為電腦的任何設備都是依靠一定的時鐘頻率(Clock Rate)工作的﹐今天的 CPU 很明顯比其他任何的週邊都要快得多﹐就算是和它交往最密的 RAM 也最快只有 333MHz而已(寫這篇文章的時候)﹐這樣就造成了CPU 和周邊的不協調了。Cache 的出現﹐就是為了解決這問題而來的。
前面提到的chips﹐它管轄著三種主要的Bus類型﹕
通往 CPU 的高速 Bus
通往其他 I/O 的低速 Bus
以及通往記憶體的高速 Bus
但記憶體 Bus 的速度和 CPU 的 Bus 速度還是有差別的。如果 CPU 處理好資料﹐要等其他設備來接走資料才可以進行下一個運算﹔或是其它設備要等 CPU 處理完才可以送下一個資料的話﹐這樣系統的效率就給拖慢了。那麼我們在 CPU 和 chips 之間的 Bus 增加一種靜態記憶體 SRAM(Static RAM)﹐其速度比普通的 RAM 要快得多﹐來做為 CPU 和 chips 之間的緩衝﹐將所有 CPU 輸出的資料先接下來﹐再等其他設備能反應過來再接走﹐這樣 CPU 就可以繼續其工作了﹔或先將週邊送來的資料接下來﹐等 CPU 有時間再運算。
嗯~~~ 恐怕這也不是個容易解說清楚的題目。簡單來說﹐一般 PC 使用的 Bus 有兩種類型: ISA (Industry Standard Architecture) 和 PCI (Peripheral Component Interconnect)。當然還有諸如 MCA、EISA、VESA、和 PCMCIA (Personal Computer Memory Card International Association﹐主要是給 notebook 電腦用的)、等等﹐但因為比較少碰到﹐這裡也不做說明了。
如果觀察主機板﹐ISA 通常都是黑色﹐較寬較長的插槽。再仔細點看的話﹐它應該會分為兩段﹐前面一段有 31 對接觸頭(contact)﹐後面一段則有 18 對接觸頭。如果您有一張卡只用到前面的那段﹐那麼它所使用的是 8bit 的 ISA 了﹔如果同時還用到後面那段﹐那麼﹐這應該是一張16bit 的 ISA 卡了。
以前的 ISA 運行於不同的速度上面: 4.77Mz、6 MHz和 8 MHz﹐不過後來一致公認的最快速度只能有 8.33MHz。而且﹐任何 ISA 都需要 2 周到 8 周時鐘運算(cycle)來傳送資料。那麼﹐理論上 ISA BUS 傳輸速度最快只有每妙 8 MB:8MHz x 16bit = 128 megabit/每秒 = 16 megabyte(MB)/每秒 /2(cycles) = 8MB/每秒。
這裡還要一提的是 Local Bus。最早期的 PC,其 I/O 和 CPU 速度差不多﹐但後來 CPU 的速度不斷提高﹐遠遠拋離 I/O 速度。然而 I/O (ISA) 還只能停留在原來的低速﹐因為實在太大數量的插卡和 ISA 設備只能工作在低速上面(想象一下您敲鍵盤的速度能有多快呢﹖)。這樣當 CPU 要和 IO 交換大量數據的時候就造成瓶頸了。這時候工程師們將一些較高速的 I/O 設備搬到高速的 Processor Bus 之上﹐這樣的安排就是所謂的 Local Bus 了。但原先的低速 ISA 設備﹐仍然是經過低速的 I/O Bus 然後連到 System Bus 和 CPU 交換資料﹐(當然也不能離開 Bus Controller Chips 啦)。
[ Last edited by TCG on 2006-5-8 at 10:26 AM ]作者: adsl730802 時間: 2006-5-6 05:12 PM 標題: 主機板2
和 ISA 插槽並列的還有一些白色的較短的密密麻麻都是小接觸頭的插槽﹐就是 PCI 插槽了。 PCI 在傳統的 Bus 之上再增加了一層 PCI Local Bus 來繞過 I/O Bus 而直接連上 System Bus上面去。同時也使到 Bus 時鐘得以提昇﹐及可以完全發揮到 CPU 的資料路徑優點。
話說 CPU 在剛開始的時候很神氣﹐自以為精力旺盛﹐每隔一定時間到處問其它的周邊設備﹕“您有工作要我處理嗎﹖”。一個一個的輪著問下去﹐周而復始。如果週邊有東西要處理﹐就回答﹕“啊~~您來得正好﹐這些都是孝敬您老人家的啦﹗”﹔要是沒有東西要處理﹐就回說﹕“您老真是忙﹐最好不要增加您負擔啦﹐您還是問問下一位吧 ^_^ ”。
俗話說路不轉人轉嘛﹐大家於是坐下來商量一個法子來解決這個矛盾。CPU 首先發難﹕“以後我只處理運算好了﹐再也不去求您們、看您們的臉色啦﹐我忙都忙死了還要受您們氣哦﹖﹗”說完翹起二郎腿抽煙去了。這下周邊們可就緊張了﹐都過去求 CPU 老人家給條生路﹐否則它們的飯碗也難保了耶。最先是系統時鐘求說﹕“ CPU 老哥﹐行行好吧﹐我也知道您老很忙﹐以後也就不要勞動您老來找我啦﹐我有事情自會登們拜訪的啦。不過﹐您得給個通道我才行啊﹐要不怎麼找您啊﹖”CPU 白了它一眼說﹕“憑什麼要給您開這後後門啊﹖”系統時鐘就說﹕“哎呀﹐您老也不是不知道啊﹐如果沒有我﹐大家都不知道時間﹐也都不會幹活啦﹐所以我是一定要這麼一個通道的﹐要不然還是您來找我好了~~”也一副耍賴樣子。CPU 想想也倒有道理﹐就說﹕“好吧﹐不過也不用您親自送來啦﹐我開一條專線給您﹐就像克林頓和江澤民那種﹐只要這電話一響﹐我就知道是您了。然後等我有空就過去拿好了﹐您這麼慢吞吞的我也受不了啦。”於是CPU給系統時鐘開了第一條專線﹐號碼為“0”。
從那時候各自也相安無事﹐誰要有東西要處理﹐就撥通專線通知 CPU 有資料傳送﹐然後 CPU 就把資料拿來處理。這裡的專線請求就是 IRQ 了﹐專線號碼就是 IRQ 號碼﹐專線總機就是 IRQ 控制器。相信現在容易理解了吧 ^_^
現在的週邊,若是遇到 IRQ 資源不足的情況下,還可以透過 IRQ Sharing 的方法公同使用同一個 IRQ 來取得 CPU 的連係。
DMA 和 Bus Mastering
如果您玩過音效卡﹐或許您還知道一個設定叫 DMA ﹐那又是什麼東東呢﹖
如果知道 IRQ 的功能就是為了減輕 CPU 負擔的話﹐用相同的理念來了解 DMA (Direct Memoy Access) 也就正確了。在不引入 DMA 之前﹐周邊要是有什麼東西需要傳給 RAM 的話﹐都得請求 CPU 來幫忙。這個工作由內建於 CPU 裡面的 PIO (Programbable Input Output) 來處理﹐但畢竟還要將 CPU 從運算中抽時間來處理。
有見及此﹐在 80 年代中期﹐在主機板上加入了一個 DMA chips﹐如果周邊設備需要將資料運送到 RAM ﹐會先發一個 IRQ 給 CPU ﹐然後 CPU 只需將這請求轉發給 DMA ﹐那麼運送工作就由 DMA 來處理了﹐CPU 則可以繼續其運算﹔然後等 DMA 完成了搬運﹐再報告給 CPU 工作完成則可。和 IRQ 相似的是: DMA 也有各自的通道(channel) 來給周邊設備使用。有些插卡﹐還會用到兩個通道來運送資料呢。
或許您還聽過 Bus Mastering 這名字。其實 Bus Mastering 可以說是 DMA 的延伸技術。只不過 DMA 的 chips 是直接安裝在設備上面﹐而且是自己就可以處理資料的運送﹐所以稱 mastering 就是這意思了。