您好,登錄后才能下訂單哦!
由于昨晚實在太困了,解釋問題的時候眼睛就花了,腦子也短路了。早上起來,發現家人都還在睡,就想繼續述說昨晚沒有說帶勁的東西了。
再次給出我的硬件轉發原理圖:
請
注意,沒有任何優化,你可以試著用一些小技巧將其進一步的優化,也可以直接用標準的TCAM來映射它。此圖里,我詳細展示了“最長前綴”邏輯是怎么做的,
而在TCAM路由轉發表的實例中,往往被畫成了黑盒子,叫做“優先級邏輯控制器”,不過,這個邏輯電路比較簡單,相信大家稍微思考都可以自己設計出來的。
其實,在上圖中,有一個容器叫做“反掩碼”,將這個反掩碼逐位地安排在譯碼器后面的位線比較鍵旁邊,這就是一個標準的TCAM做法了。
我們都知道cache比較貴所以不能太大,而內容就可以做很大,因為它比較便宜。
但是能否從技術層面解釋一下呢?其實,貴與便宜的差異就是技術原因造成的,我們先看一下內存的存儲陣列的電路:
這是個非常典型的矩陣,也很簡單。但是對于CAM電路,就不是這么簡單了,下圖所示:
對于TCAM,需要加一個care邏輯,就更加復雜了,不光是電路復雜了,功耗也增加了,要知道,在CAM/TCAM匹配的過程中,電路的所有部分都是同時工作的。
很
多人都說CPU
cache里面有一個硬件HASH,比如取地址的第n到m位,事實上就是一個移位,取模操作!這在程序員看來只能呵呵了,程序員們知道的最簡單的HASH
算法都比這個復雜。其實硬件工程師對程序員的呵呵是不屑一顧的,因為他們的關注點是如何使得電路同時工作時功耗最低,電路規模更小。CAM/TCAM都用
了硬件HASH,很簡單的硬件HASH,然而電路是可以同時工作的。這可是軟件hash的大難題,軟件hash旨在使得hash分布更加均勻,平均性能更
好。這樣沖突鏈表長度的平均方差最小。軟件hash旨在解決沖突,而硬件HASH不需要這么做,因為在軟件看來必須串行遍歷沖突鏈表的時候,硬件卻是可以
同時進行的。
計算機被設計之初,就是一個順序執行的模型,指令是一條接一條執行的。這是因為它是完全模擬真實
世界中人的行為的。這就意味著所有的跑在計算機上的算法步驟都是要時間流逝中串行實施的,一個好的算法旨在讓時間花費最短。然而硬件電路的設計并不遵循真
實世界的人做事的樣子,起碼說不是太像。一個人不可能同時做很多事,硬件電路的執行流程更像是洪水泛濫的過程,由于勢能,洪水同時往(注意,同時!)所有
它可以去的地方沖去,瞬時就吞噬了一切。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。