第五章 FPGA 的實現
5.2 管線推測預先過濾器 推測預先過濾器方塊圖
5.2 管線推測預先過濾器 推測預先過濾器方塊圖
圖 5.9 Pipeline 推測預先過濾器方塊圖
在此實現中將輸入文字字串分為四個部分以 pipeline 的概念,在四個相位 中分別處理四個部份的個別功能,在此情況下可以不增加記憶體的條件下產生搜 尋可疑字串的功能,其方塊圖如圖 5.9 所示,目前使用到記憶體的部分為輸入文 字字串記憶單元(Text Ram)、雜湊計算單元(Hash function)以及可一字串位址 記憶單元(Jail Ram),所以這三部分的輸入訊號和方塊功能與推測預先過濾器相 同,而雜湊計算單元內與輸入位址計算單元為避免危障(hazard)產生而多出八組 暫存記憶體。
5.2.1 管線推測預先過濾器 輸入字串記憶單元的產生與設計
輸入文字字串的儲存方式與推測預先過濾器相同,如圖 5.10 所示,為了同 時取出四個字元的搜尋方塊資料所以以雙埠記憶體的架構,將輸入文字字串分為 四個部份儲存。由於使用管線(Pipeline)架構時也將輸入文字字串分成四個部份
處理,在實體儲存輸入文字字串上並無異變,但在個別取出四個輸入文字字串的 子集合的搜尋方塊資料時,會如圖 5.10 所示般存取不同的位置,其實際位址在 輸入位址計算單元中產生。雖然資料存取架構與推測預先過濾器無異但是因為使 用管線(pipeline)的緣故,使得資料存取速度較無管線設計的預先過濾器快上四 倍。圖 5.11 為推測預先過濾器讀出搜尋方塊資料時的時脈圖,從圖中可顯示每 四個時脈才會對雙埠記憶體存取一次。5.12 為管線推測預先過濾器讀取搜尋方 塊資料的時脈圖,因為使用管線所以使得每個時脈都會有資料被讀取,其讀取會 依照輸入文字字串子集合順序做讀出處理。四個輸入文字子集合處理偵測可疑字 串的行為是獨立的所以在正常情況下有可能會發生其中某一子集合先行處理完 後產生 ending 訊號,此時當前的搜尋視窗位址會維持在 ending 時的狀態直至所 有子集合處理完成。
圖 5.10 管線推測預先過濾器輸入字串記憶單元
圖 5.11 推測預先過濾器輸入字串記憶單元的時脈圖
圖 5.12 管線推測預先過濾器推測預先過濾器輸入字串記憶單元的時脈圖
5.2.2 管線雜湊計算單元的產生與設計
圖 5.13 管線推測預先過濾器雜湊計算單元方塊圖
雜湊計算單元分為兩個部份其一為詢問模塊結果產生單元,其二為計算位移 量。雜湊值產生單元其中的雜湊表與推測預先過濾器無異使用相同的尋找字串。
與前者不同的是每個時脈都會產生新的詢問模塊結果,每產生新的詢問模塊結果 都會將其值儲存在對應的子集合所在的暫存記憶體分別為第一子集合的 Qa1、
Qa2,第二子集合的 Qb1、Qb2,第三子集合的 Qc1、Qc2,第四子集合的 Qd1、Qd2。
個別依照相同的位移準則產生個別子集的視窗位移量 g 與 sum,提供給輸入位址
即可。四組位址在絕對位址上的範圍分別為位址 0~514,位址 512~1026,
1024~1538 以即 1536~2050。位址產生器產生的範圍則為 0~514,將位址產生器 之結果與絕對差值相加總即為在 Text 上的絕對位址,此作法不但模組化使程式
目前需處理的位址,例如在 phase 4 時 Addr1 與 Addr2 分別為 Addr_a1 與 Addr_a2,phase1 時則分別為 Addr_b1 與 Adddr_b2,phase 2 時分別為 Addr_c1 與 Addr_c2,phase 3 時則分別為 Addr_d1 與 Addr_d2。
5.2.4 管線預先過濾器 可疑位址儲存記憶單元的產生與設計
在此方塊中有 r0 與 r1 訊號作為通知有嫌疑字串事件發生,在推測預先過 濾器中 r0 與 r1 在不同 phase 產生,所以可將兩者做加總表示嫌疑發生的總和,
但是在 pipeline 架構中若第一子集 Qa2 偵測到可疑字串產生 r1,而同一時間第 四子集有可能因 Qd1 同時偵測到可疑字串使得 r0 同時被觸發,所以在管線 (pipeline)架構中 r0 與 r1 訊號需各別處理。將儲存可疑位址的記憶體分為兩部 份,第一部分儲存 r0 偵測到的可疑位址,第二部份儲存 r1 偵測到的可疑位置。
可疑位址的總和為兩部份的數量總和。