close

傳統電腦硬體架構包含了四大元件

CPU、Memory、I/O devices 和 Bus

Bus 是一些平行傳輸線用來負責 CPU、Memory 和 I/O devices 之間的資料傳輸

如圖下所示:

電腦四大元件架構圖

Bus 內的傳輸線又可歸類為三組:控制線(Control Line)、位址線(Address Line)和資料線(Data Line)

我們電腦的硬體單元會被系統指派所謂的位址空間(Address Space)

因此位址線被用來告知資料是傳往何處,而控制線則是用來作一些傳輸控制(Ready、Store、Load等等)

若假設 bus width 是 64 bits(Data Line 有 64 條),而 bus 的時脈為 1GHz,且每次 cycle 傳輸一次資料

則理論上可以達到 64 Gbps 的最大資料量傳輸唷!



至於 Bus 上的資料傳輸,遵循著所謂的 Fetch-Store Paradigm(亦稱 Load-Store Paradigm)

其實可以簡單看成一去一回啦!(例如 CPU 要 store 資料進去記憶體,或是 CPU 要從記憶體 fetch 資料)

當然,由於這些硬體單元是附屬在 bus 上,所以 bus 是個共享媒介

許多硬體單元會想利用 bus 傳輸資料,但一次又只能有一對傳輸

所以啦!這些硬體單元在使用 bus 時就被附有優先權

透過 Bus Arbiter 來決定誰可以取得 bus 使用權



我們是做網際網路的,硬體方面最關心的當然是網路介面卡(NIC)啦!

其實 NIC 就等同於 I/O Device 的地位,為封包的進出閘口

但是封包普遍長度那麼大, bus width 有限(假設是 64 bits),而且根據上段架構

每次 64 bits 的傳輸若都需要 CPU 的幫忙實在是不是什麼好事情呀!

因此有必要把封包的進出和封包的處理隔開來!

那麼 NIC 要做的事情就多起來啦~



首先是第一個:Onboard address recognition and filtering

NIC 必須要判斷這個接受到的封包是不是自己的而不要勞煩 CPU 檢查

不過這個又分為兩種情況:單播/廣播 和 群播

單播/廣播 比較簡單,因為都可以即刻確定是否要把封包收進來

如果是,NIC 再去引發硬體中斷通知 CPU 有封包到達

否則直接丟棄不用通知 CPU

群播比較麻煩,因為電腦隨時隨地都可以 join/leave 一個 group

這部份就必須靠 CPU 去指示 NIC 說哪些群播位址你必須要接收

不過 NIC 在收到封包後去一個一個比較群播位址有點嫌慢

因此這部分一般是透過 hash 來完成

可以想見,若封包的群播位址是我要的,當然經由 hash 可以確定接收

但若不是, hash 的結果有可能會誤認為是我想要的

此時就得需要 CPU 的幫忙去把檢查位址後丟棄封包



第二個是:Onboard Packet Buffering

由於封包傳輸速率不一,我們用 bursty 這個字眼說明封包到達速率的變動是 widely 且 rapidly

再加上,並非 NIC 接收到封包時就可以馬上使用 bus 來傳輸資料

因此 buffer 是需要用來暫存這些封包



第三個是:DMA(Direct Memory Access)

由於網路速度逐漸增高,透過 CPU 幫忙來傳輸封包資料實為不智之舉

因此 DMA 這個技術就是用來做 I/O Device 的大量資料傳輸

DMA 顧名思義就是 I/O Device 直接存取記憶體內容,而不需要 CPU 的參與

因此在資料傳輸的同時,CPU 可是可以做其他事情呢!

那麼我們的 NIC 在透過 DMA 傳輸資料時

只要在整個封包都傳完後(封包的 input 和 output 同法)再打斷 CPU 說我完成了即可



最後則是要講一下 Promiscuous Mode 啦!

小孫我是翻譯作混雜模式,因為是所有封包都混合參雜在一起!

這種模式用在哪裡咧!嘿嘿!封包分析儀(Packet Analyzer)啦!

packet analyzer 若需要 NIC 處於 promiscuous mode

那麼前面說的 onboard address recognition and filtering 就必須是被 disable 的!



參考資料:"Network System Design Using Network Processors",Ch 4, Agere Version, Douglas E. Comer

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 fantasymew 的頭像
    fantasymew

    小孫的狂想世界

    fantasymew 發表在 痞客邦 留言(0) 人氣()