下一代的系統(tǒng)架構(gòu)將解決CAM和cache不能解決的問題
Aeroflex UTMC公司Tim Melchior著/雷天石 譯
---- 工程師希望能出現(xiàn)有更強處理能力的計算機。這些年來,處理器設(shè)計師為我們帶來了領(lǐng)先的速度,與1971年Intel的108kHz 4004處理器相比,處理器的速度增加了10000倍。與此相反,DRAM的存取時間在這段時期內(nèi)只降低了相差甚遠(yuǎn)的10倍。 ---- 處理器速度與內(nèi)存速度之間日趨擴大的鴻溝使得內(nèi)存成為提高計算機系統(tǒng)性能的一種主要障礙。通常把處理器與內(nèi)存之間的差距稱為內(nèi)存瓶頸。 | 圖1:Aerofilex UTMC公司聽e.Card基于CAM技術(shù),把標(biāo)準(zhǔn)的RAM變成聯(lián)想存儲器,很快減輕處理的負(fù)擔(dān),可以達(dá)到每秒鐘1千萬次數(shù)據(jù)庫查找。
|
改善存取速度
---- 長期以來,為了減輕或消除內(nèi)存瓶頸現(xiàn)象,電信工程師求助于內(nèi)容定址存儲器(CAM)。通過在CAM芯片中設(shè)計并行查找,工程師們可以使得找到與關(guān)鍵字相聯(lián)系的數(shù)據(jù)非常迅速。這種方法取得了很好的效果,而且也依然是很多應(yīng)用中一種很好的方法。 ---- 但是,CAM有兩個主要的缺點。它們比較貴,而且容量比較小。進(jìn)行查找所需要的電路消耗掉芯片上的硅資源,這當(dāng)然轉(zhuǎn)換成不菲的成本以及降低了存儲器的容量。由于CAM的生產(chǎn)量相對較低,這樣帶來的額外成本更加使得采用CAM的代價進(jìn)一步提高。 ----用于減輕內(nèi)存瓶頸問題的另一種通常的辦法是采用高速緩存(cache)。這種存儲器用高速的SRAM來制作,它比CAM的密度要高,但是距DRAM的密度仍相去甚遠(yuǎn)。盡管SRAM的價格是DRAM的十倍,它通過存儲不久前用過的、從較慢的DRAM中取得的數(shù)據(jù),可以大大改善系統(tǒng)的性能。 ----計算機指令和控制數(shù)據(jù)是在cache中存儲的上乘之選,因為這種類型的數(shù)據(jù)常常在隨后的程序中被訪問,而且,cache控制器也能很好地保持cache在所需數(shù)據(jù)被使用之前得到及時的更新。 ---- Cache存儲器出現(xiàn)問題是在訪問大型數(shù)據(jù)庫的時候。如果數(shù)據(jù)訪問要求無法預(yù)測,而且數(shù)據(jù)庫的容量大大超過cache的數(shù)量,在cache中找到所需數(shù)據(jù)的概率就非常低。 ----如果在cache中找不到數(shù)據(jù),就出現(xiàn)一次cache落空,在緩慢的DRAM中進(jìn)行訪問時系統(tǒng)必需等待。電信工程師對速度的要求非常高,無法容許化費50個或更多CPU時鐘周期去等待由于cache落空引起的延誤時間。 處理解決方案
---- 工程師們除了要求增加傳輸速率之外,同時更要求設(shè)計出可以滿足電信服務(wù)需求提高與擴大的系統(tǒng)。為這些系統(tǒng)提供支撐的數(shù)據(jù)庫在容量與復(fù)雜性方面都在呈爆炸性增長。 ---- 在這些系統(tǒng)中,CAM、cache、FPGA,甚至ASIC都無法解決涉及大型數(shù)據(jù)集合的查找密集的高性能問題。迫切需要的是一種處理解決方案,它通過挖掘并行分布處理、流水線和聯(lián)想存儲器技術(shù)來解決處理器內(nèi)存瓶頸問題。 ---- 這種解決方案的第一步是將基本的數(shù)據(jù)操作功能卸載到智能內(nèi)存控制器中去執(zhí)行。此控制器需要了解數(shù)據(jù)庫的結(jié)構(gòu),而且必須設(shè)計得可以發(fā)揮當(dāng)前內(nèi)存技術(shù)的能力。 ----與當(dāng)今CPU使用的通用內(nèi)存控制器不同,這種內(nèi)存控制器必須以減少內(nèi)存訪問次數(shù)為首要目標(biāo),非常適合于執(zhí)行數(shù)據(jù)庫管理。通過縮減內(nèi)存訪問的次數(shù),控制器立即對減輕內(nèi)存瓶頸作出了貢獻(xiàn)。 ----從硬件的角度看,這個內(nèi)存控制器讓普通的低價、高密度DRAM像傳統(tǒng)的CAM一樣工作。正是基于這個原因,這種類型的內(nèi)存控制器被稱為CAM引擎。 ---- 作為有效CAM引擎的內(nèi)存控制器的主要特征是,它必須被設(shè)計成與自身的另外復(fù)制平行地工作。實現(xiàn)這點的最簡單方法是在控制器內(nèi)執(zhí)行輸入與輸出FIFO(參考圖2)。它允許由CPU或另一個邏輯器件內(nèi)核對數(shù)據(jù)操作命令進(jìn)行流水線處理。 | 圖2:FIFO提供執(zhí)行并處理的簡單方法
|
---- 另外的特點是包括一個第2型的Compactflash插座以及PCI和ISA插槽。 ----圖3表示采用通用處理器進(jìn)行典型的hash查找的時間順序:a. hash關(guān)鍵字,b. 找出hash地址散列單元,c. 用初始散列單元充填cache行,d. 讀第一個地址散列單元,e. 比較第一個地址散列單元(不匹配),f. 讀第二個地址散列單元,g. 比較第二個地址散列單元(不匹配),h. 讀第三個地址散列單元,i. 比較第三個地址散列單元(不匹配),j. 讀溢出指針,k. 用溢出地址散列單元充填cache行,l. 讀第一個溢出地址散列單元,m. 比較第一個溢出地址散列單元(匹配),n. 獲得相關(guān)數(shù)據(jù)的指針,o. 用相關(guān)數(shù)據(jù)充填cache行,p. 讀相關(guān)數(shù)據(jù)。 ----由于通常有多個關(guān)鍵字對應(yīng)到一個給定值,每次查找都必須解決hash碰撞問題。為了完成一次查找通常處理器必須多次讀主內(nèi)存,這是造成內(nèi)存瓶頸的重要原因。 ROM化的實時操作系統(tǒng)保護(hù)存儲器
---- 從主內(nèi)存充填cache行通常把4個字從主內(nèi)存讀入處理器的高速cache存儲器中。這些操作非常占用時鐘周期,因為從SDRAM存儲器新的一行中進(jìn)行第一次讀時,首先必須激活該行。充填4個字的cache行化費掉10個時鐘周期一點都不算過份。如果處理器正在同一個100MHz的總線進(jìn)行操作,這就相當(dāng)于每次cache行充填需要1μs時間。 | 圖3:為了完成一次查找,通用處理器必須多次讀主內(nèi)存。
|
緩解瓶頸現(xiàn)象
---- 緩解瓶頸現(xiàn)象的一個關(guān)鍵是把用于執(zhí)行非I/O操作的時鐘周期與執(zhí)行I/O操作的時鐘周期重疊起來。如果這點能夠?qū)崿F(xiàn),就可以100%地利用內(nèi)存總線帶寬。實現(xiàn)它的最簡單方法是通過在內(nèi)存控制器中的FIFO隊列使生成I/O的命令形成流水線。 ---- 圖4給出了采用FIFO交錯的CAM引擎內(nèi)存控制器進(jìn)行4流水線查找的時間表:a. 寫關(guān)鍵詞1至內(nèi)存控制器1,b. 寫關(guān)鍵詞2至內(nèi)存控制器1,c. 寫關(guān)鍵詞3至內(nèi)存控制器2,d. 寫關(guān)鍵詞4至內(nèi)存控制器2,e. 從內(nèi)存控制器1讀關(guān)聯(lián)詞1,f. 從內(nèi)存控制器2讀關(guān)聯(lián)詞3,g. 從內(nèi)存控制器1讀關(guān)聯(lián)詞2,h. 從內(nèi)存控制器2讀關(guān)聯(lián)詞4。內(nèi)存控制器與系統(tǒng)中其它的處理器并行工作。因為內(nèi)存控制器有自己的存儲器及存儲器總線,它執(zhí)行的I/O操作并不減少系統(tǒng)中其它處理器的I/O帶寬。此外,FIFO的設(shè)計必須達(dá)到與調(diào)用的處理器進(jìn)行交互可以同在它的存儲器總線上執(zhí)行的I/O操作可以并行地執(zhí)行。