早上太燥熱,突然想起三周前有人跟我交流了TSO的問題,我也描述了其原理,這個原理說來也是特別簡單,無非就是靠網(wǎng)卡硬件來分段,計算
checksum,從而解放CPU周期。其實只要說一個就夠了,既然靠硬件來分段,那么只能由硬件來計算checksum了,因為你根本就不知道硬件的分
段細節(jié),所以你也沒法在分段前計算好每一個段的checksum....
TSO的原理幾乎每個人都知道,事實上它是怎么實現(xiàn)的這個問題也不難,難的是細節(jié)。在做完了正事之后,我想把這個原理展現(xiàn)出來,當然可能和實際的實現(xiàn)有超級大的出入,不管怎樣,它是一個原理框圖,仔細觀察,應(yīng)該也能自己實現(xiàn)一個比我這個更好的TSO了。
這個設(shè)計是一個數(shù)字邏輯,時序電路的范疇,而這個領(lǐng)域十分地高大上,并不是普通的軟件程序員能hold住的,像我這樣的半瓶子也一樣。所以我依然是按照老
樣子,試圖直接給出一個結(jié)果,而不是要求聽書的人事先做一些準備,往往在人們做這些準備工作的時候,就已經(jīng)厭倦放棄了。
基礎(chǔ)知識不難,就是一些門電路,與門,非門,比較器,譯碼器,觸發(fā)器之類的,這些東西隨便找一本計算機組成原理,都很齊全。關(guān)鍵是怎么組合它們,這是另一
個領(lǐng)域的編程。此時,我想起了15年前我的高中物理老濕劉丹青在講電路的時候說過的一句話:讓電流流一下。這句話在科班人看來完全不符合電路設(shè)計的基本原
則,他們可能更傾向于首先建模,然后分析,然后使用描述語言VHDL寫出代碼,最后再給出電路,我覺得這適合于設(shè)計本身,但是不適合于對一個門外漢講述其
精彩。對于一個門外漢來講,他唯一所知道的就是,讓電流流一下,然后沖過這個門,沖過那個管,好了,高電平變成低電平了....在我看來,就是這么回事。
在一張白紙上,畫出一堆的門電路,然后隨性隨意組合它們,慢慢的,我突然發(fā)現(xiàn),這個電路就是TSO的框架了。我記得上周幫人固化了路由轉(zhuǎn)發(fā)表,然而那種固
化行為可能會因為成本過高而被pass掉,畢竟如今的軟實現(xiàn)已經(jīng)夠用了吧。所以只有核心傳輸網(wǎng)才需要這種固化的轉(zhuǎn)發(fā)表,然而TSO卻是服務(wù)器領(lǐng)域的首推,
服務(wù)器太多了,遠比核心轉(zhuǎn)發(fā)設(shè)備多,它們的CPU需要減負,確實,CPU去計算一些固定模式的東西,有點浪費,它應(yīng)該花更多的精力去處理一些不可控的東
西。所以TCP分段這種事情自然而然就由網(wǎng)卡代勞了。你,我,他,我們都遇到過TSO,但是我們只會開啟,關(guān)閉它,如果你想知道它到底是怎么
Offload的,請看下圖,讓電流流一流:
TCP分段和IP分片的區(qū)別很大,這個事你一定要明白。然后才可以看懂上面的圖。
以上的解析只是一個特例,事實上,所有的硬件加速機制無非都是一樣的機制。當我在看Intel千兆/萬兆網(wǎng)卡的手冊時,我想到在芯片的內(nèi)部,這種電路的元
件幾乎是海量的,實現(xiàn)了RSS,硬件hash分類等。這就是我所謂的江河泛濫,沿著溝壑瞬間吞噬大地,我們該如何挖溝填壑,這不是本文的目的,本文只是描
述了這種可能性。這也是這種專用電路和通用CPU之間的本質(zhì)區(qū)別。CPU存在著一個指令集,這意味著它是關(guān)注于外部如何調(diào)用的,而專用電路的關(guān)注點在于內(nèi)
部的執(zhí)行邏輯,它幾乎不對外提供任何接口,唯一的就是設(shè)置幾個寄存器的值,比如MTU,數(shù)據(jù)包長度,數(shù)據(jù)包頭長度等,其它的執(zhí)行邏輯,外部無權(quán)過問。這是
串行編程和并行執(zhí)行的本質(zhì)區(qū)別。
對于指令系統(tǒng),也有一些要說的。在內(nèi)部控制邏輯上,有一個統(tǒng)一的指令分發(fā)系統(tǒng),實際上就是發(fā)射出一系列的0和1的組合,這個組合中的0和1作用于各種門電
路,這些門電路接受了這些不同的輸入后,產(chǎn)生不同的輸出,然后再作為另外的門電路的輸入,造成不同的輸出,如此反復(fù)...難道事實不是這樣子嗎?你很難否
則定。
讓電流流一流,如果你覺得比較抽象,那就觀察洪水泛濫的過程吧,大河決堤的地點不同,造成的災(zāi)難也不同,關(guān)鍵在于決堤處的地勢以及其所連接的各種地形,這
一切都是同時發(fā)生的,和電流一樣,水流在經(jīng)過一個彎道或者一道拱橋的時候,也會有一些延時和分流,這就可以類比電路中的各種門。
吃飯了,吃飯了,真煩!
公司主營業(yè)務(wù):網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)建站是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)建站推出銅官免費做網(wǎng)站回饋大家。