TWI519963B - 用以完成可變寬度資料輸入之方法及系統 - Google Patents

用以完成可變寬度資料輸入之方法及系統 Download PDF

Info

Publication number
TWI519963B
TWI519963B TW098137443A TW98137443A TWI519963B TW I519963 B TWI519963 B TW I519963B TW 098137443 A TW098137443 A TW 098137443A TW 98137443 A TW98137443 A TW 98137443A TW I519963 B TWI519963 B TW I519963B
Authority
TW
Taiwan
Prior art keywords
data
bytes
receiving
byte
search
Prior art date
Application number
TW098137443A
Other languages
English (en)
Other versions
TW201022950A (en
Inventor
哈洛德B 諾耶思
Original Assignee
美光科技公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美光科技公司 filed Critical 美光科技公司
Publication of TW201022950A publication Critical patent/TW201022950A/zh
Application granted granted Critical
Publication of TWI519963B publication Critical patent/TWI519963B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4009Coupling between buses with data restructuring
    • G06F13/4018Coupling between buses with data restructuring with data-width conversion

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

用以完成可變寬度資料輸入之方法及系統
本發明之實施例概言之係關於數位資料處理,且更具體而言,在某些實施例中,係關於向一固定寬度裝置提供可變寬度資料輸入。
在計算領域中,型樣辨識任務越來越具有挑戰性。電腦之間傳輸之資料量不斷增大,且使用者期望識別之型樣之數目日益增加。舉例而言,通常藉由搜尋一資料流中之型樣(例如,特定短語或程式碼片段)來偵測垃圾郵件及/或惡意軟體。型樣數目隨著垃圾郵件及惡意軟體之變化而增加,乃因可實施新型樣以搜尋新變體。針對此等型樣中之每一者對一資料流進行搜尋可形成一計算瓶頸。通常,在接收到該資料流時,針對每一型樣對其進行搜尋,一次一個。在系統準備對該資料流之下一部分進行搜尋之前的延遲隨著型樣之數目增加。因此,型樣辨識可使資料之接收減慢。
可將包含所關注型樣之資料流提供至一「固定寬度」裝置以供處理。亦即,該裝置接收並處理具有一特定大小(諸如一個位元組)之資料單元。在此例項中,該裝置可稱作一「位元組導向」裝置,其一次接收一個位元組,即,8個位元。在某些系統中,該裝置可耦合至一寬於8個位元之匯流排,諸如一16位元匯流排、32位元匯流排等。現有機制允許在此等16位元、32位元或更寬匯流排中存取個別位元組。然而,存取諸如可由一個位元組資料流提供至該裝置之個別位元組並不使用16位元、32位元或其他更寬匯流排之全容量,因此使效能減慢下來。「位元組導向」裝置一次僅能夠接收一個位元組,而無論匯流排之寬度如何。舉例而言,具有4個位元組之資料將需要4個位元組寬之循環來傳輸該等位元組,即,每一循環一個位元組。此外,某些裝置可處理大量位元組且亦可處理一序列中之每一位元組。此等特性可導致匯流排擁擠並導致該裝置減慢下來。
圖1繪示對一資料流12進行搜尋之一系統10之一實例。系統10可包含一型樣辨識處理器14,該型樣辨識處理器根據搜尋準則16對資料流12進行搜尋。
每一搜尋準則可規定一個或多個目標表達(亦即,型樣)。短語「目標表達」係指型樣辨識處理器14正搜尋之一資料序列。目標表達之實例包含拼寫某一字之一字元序列、詳細說明一基因之一遺傳鹼基對序列、形成一影像之一部分之一圖像或視訊檔案中之一位元序列、形成一程式之一部分之一可執行檔案中之一位元序列或形成一歌曲或一口語短語之一部分之一音訊檔案中之一位元序列。
一搜尋準則可規定多於一個目標表達。舉例而言,一搜尋準則可規定以字母序列「cl」開頭之所有五個字母之字、以字母序列「cl」開頭之任一字、包含字「cloud」多於三次之一段落等。可能組之目標表達之數目係任意大的,例如,可存在與資料流可呈現之資料排列同樣多之目標表達。搜尋準則可以各種格式來表達,包含正規表達、簡明地規定若干組目標表達而不必列舉每一目標表達之一程式化語言。
每一搜尋準則可由一或多個搜尋項構成。因此,一搜尋準則之每一目標表達可包含一個或多個搜尋項且某些目標表達可使用共同搜尋項。如本文中所使用,短語「搜尋項」係指在一單個搜尋循環期間所搜尋之一資料序列。該資料序列可包含呈一二進制格式或其他格式(例如,十進位、ASCII等)之多個資料位元。該序列可對具有一單個數位或多個數位(例如,數個二進制數位)之資料進行編碼。舉例而言,型樣辨識處理器14可一次一個字元地對一文字資料流12進行搜尋,且搜尋項可規定一組單字元,例如,字母「a」,字母「a」或「e」,或規定一組所有單字元之一通配符搜尋項。
搜尋項可小於或大於規定一字元(或其他字形-亦即,資料流所表達之資訊之基礎單元,例如,一音符、一遺傳鹼基對、一10進位數位或一子像素))之位元之數目。舉例而言,一搜尋項可係8個位元且一單個字元可係16個位元,在此情況下,兩個連續搜尋項可規定一單個字元。
搜尋準則16可由一編譯器18進行格式化以用於型樣辨識處理器14。格式化可包含自該等搜尋準則解構出搜尋項。舉例而言,若資料流12所表達之字形大於該等搜尋項,則該編譯器可將搜尋準則解構成多個搜尋項以搜尋一單個字形。類似地,若資料流12所表達之字形小於該等搜尋項,則編譯器18可針對每一單獨字形為一單個搜尋項提供未使用位元。編譯器18亦可對搜尋準則16進行格式化以支援型樣辨識處理器14未本機支援之各種正規表達運算子。
型樣辨識處理器14可藉由評估來自資料流12之每一新項來對資料流12進行搜尋。此處,字「項」係指可匹配一搜尋項之資料量。在一搜尋循環期間,型樣辨識處理器14可確定當前所呈現之項是否匹配搜尋準則中之當前搜尋項。若該項匹配該搜尋項,則評估被「推進」,亦即,將下一項與搜尋準則中之下一搜尋項進行比較。若該項不匹配,則將下一項與搜尋準則中之第一項進行比較,藉此重設搜尋。
可將每一搜尋準則編譯至型樣辨識處理器14中之一不同有限狀態機中。該等有限狀態機可平行運行,從而根據搜尋準則16對資料流12進行搜尋。當資料流12匹配在前搜尋項時,該等有限狀態機可藉由一搜尋準則中之每一連續搜尋項反覆,或若未匹配該搜尋項,則該等有限狀態機可開始搜尋該搜尋準則之第一搜尋項。
型樣辨識處理器14可在約相同時間(例如,在一單個裝置循環期間)根據數個搜尋準則及其各別搜尋項評估每一新項。該等平行有限狀態機可在約相同時間各自接收來自資料流12之項,且該等平行有限狀態機中之每一者可確定該項是否將該平行有限狀態機推進至其搜尋準則中之下一搜尋項。該等平行有限狀態機可根據一相對大數目之搜尋準則(例如,多於100、多於1000或多於10,000)來評估項。由於其平行運作,因此其可將該等搜尋準則應用至具有一相對高頻寬之一資料流12(例如,大於或大體等於每秒64MB或每秒128MB之一資料流12)。在某些實施例中,搜尋循環持續時間不隨搜尋準則之數目按比例調整,因此搜尋準則之數目對型樣辨識處理器14之效能可幾乎沒有影響。
當滿足一搜尋準則時(亦即,在推進至最後一個搜尋項且與其匹配之後),型樣辨識處理器14可將對該準則之滿足報告給一處理單元,諸如,一中央處理單元(CPU) 20。中央處理單元20可控制系統10之型樣辨識處理器14及其他部分。
系統10可係對一資料流進行搜尋之各種系統或裝置中之任一者。舉例而言,系統10可係監視資料流12之一桌上型電腦、膝上型電腦、手持式或其他類型之電腦。系統10亦可係一網路節點,例如,一路由器、一伺服器或一用戶端(例如,先前所闡述類型之電腦中之一者)。系統10可係某一其他類別之電子裝置,例如,一複印機、一掃描器、一列印機、一遊戲控制臺、一電視、一機上視訊分佈或記錄系統、一電纜盒、一個人數位媒體播放器、一工廠自動化系統、一汽車電腦系統或一醫療裝置。(用來闡述系統之此等各種實例之術語(如同本文中所使用之諸多其他術語)可共用某些參照物,且因此不應僅根據所列舉之其他物項來理解)。
資料流12可係一使用者或其他實體可期望進行搜尋之各種類型之資料流中之一者或多者。舉例而言,資料流12可係在一網路上接收之一資料流,例如,在網際網路上接收之封包或在一蜂巢式網路上接收之語音或資料。資料流12可係自與系統10進行通信之一感測器(諸如一成像感測器、一溫度感測器、一加速度計或類似物或其組合物)接收之資料。資料流12可作為一串列資料流由系統10接收,其中資料係以具有意義之一次序(例如,以一明顯的時間、詞法或語義次序)被接收。另一選擇係,資料流12可平行地或無序地被接收,且然後(例如)藉由將在網際網路上接收之封包重新排序而將資料流12轉換成一串列資料流。在某些實施例中,資料流12可以串列方式呈現項,但表達該等項中之每一者之位元可平行地被接收。資料流12可係自在系統10外部之一源接收,或可藉由訊問一記憶體裝置且由所儲存之資料形成資料流12來形成。
端視資料流12中之資料之類型,一設計者可挑選不同類型之搜尋準則。舉例而言,搜尋準則16可係一病毒定義檔案。可表徵病毒或其他惡意軟體,且可使用惡意軟體之態樣來形成指示資料流12是否可能正在遞送惡意軟體之搜尋準則。可將所得搜尋準則儲存於一伺服器上,且一用戶端系統之一操作者可預訂將該等搜尋準則下載至系統10之一服務。在不同類型之惡意軟體出現時,搜尋準則16可自該伺服器週期性地更新。該等搜尋準則亦可用來規定可在一網路上接收之不期望之內容,舉例而言,不需要之電子郵件(通常稱為垃圾郵件)或一使用者發現係令人反感之其他內容。
資料流12可由對系統10正在接收之資料感興趣之一第三方來搜尋。舉例而言,可針對在一版權作品中出現之文字、一音訊序列或一視訊序列而監視資料流12。可針對與一刑事調查或民事訴訟有關或一雇主感興趣之言論而監視資料流12。
搜尋準則16亦可包含資料流12中之型樣,例如,在可由CPU 20或型樣辨識處理器14定址之記憶體中可得到該等型樣之一轉譯。舉例而言,搜尋準則16可各自規定一英語字,對於該英語字,一對應西班牙語字儲存於記憶體中。在另一實例中,搜尋準則16可規定資料流12之經編碼版本,例如,MP3、MPEG 4、FLAC、Ogg Vorbis等,對於該等經編碼版本,可得到資料流12之一經解碼版本,或反之亦然。
型樣辨識處理器14可係與CPU 20一起整合至一單個組件(例如,一單個裝置)中之硬體裝置或可形成為一單獨組件。舉例而言,型樣辨識處理器14可係一單獨積體電路。型樣辨識處理器14可稱為一「共處理器」或一「型樣辨識共處理器」。
圖2繪示型樣辨識處理器14之一實例。型樣辨識處理器14可包含一辨識模組22及一聚合模組24。辨識模組22可經組態以將所接收之項與搜尋項進行比較,且辨識模組22與聚合模組24兩者可協作以確定將一項與一搜尋項匹配是否滿足一搜尋準則。
辨識模組22可包含一列解碼器28及複數個特徵胞30。每一特徵胞30可規定一搜尋項,特徵胞30群組可形成一形成一搜尋準則之平行有限狀態機。特徵胞30之組件可形成一搜尋項陣列32、一偵測陣列34及一啟動路由矩陣36。搜尋項陣列32可包含複數個輸入導體37,其每一者皆可使特徵胞30中之每一者與列解碼器28通信。
列解碼器28可基於資料流12之內容在該複數個輸入導體37中選擇特定導體。舉例而言,列解碼器28可係一一位元組至256列解碼器,其基於可表示一個項之一所接收位元組之值啟動256個列中之一者。一一位元組項0000 0000可對應於該複數個輸入導體37中之頂列,且一一位元組項1111 1111可對應於該複數個輸入導體37中之底列。因此,端視自資料流12接收到哪些項,可選擇不同輸入導體37。在接收到不同項時,列解碼器28可去啟動對應於先前項之列且啟動對應於新項之列。
偵測陣列34可耦合至一偵測匯流排38,該偵測匯流排將指示搜尋準則之全部或部分滿足之信號輸出至聚合模組24。啟動路由矩陣36可基於一搜尋準則中之已被匹配之搜尋項之數目選擇性地啟動及去啟動特徵胞30。
聚合模組24可包含一鎖存器矩陣40、一聚合路由矩陣42、一臨限邏輯矩陣44、一邏輯積矩陣46、一邏輯和矩陣48及一初始化路由矩陣50。
鎖存器矩陣40可實施某些搜尋準則之部分。某些搜尋準則(例如,某些規則表達)僅計數一匹配或一匹配群組之第一次出現。鎖存器矩陣40可包含記錄是否已發生一匹配之鎖存器。可在初始化期間對鎖存器進行清除,且在運作期間週期性地重新初始化,此乃因經確定滿足了或不再滿足搜尋準則-亦即,一較早搜尋項可需要在可滿足該搜尋準則之前被再次匹配。
聚合路由矩陣42可類似於啟動路由矩陣36地運行。聚合路由矩陣42可在偵測匯流排38上接收指示匹配之信號且可將該等信號路由至連接至臨限邏輯矩陣44之不同群組邏輯線53。聚合路由矩陣42亦可將初始化路由矩陣50之輸出路由至偵測陣列34以在經確定已滿足了或不再滿足一搜尋準則時重設偵測陣列34之部分。
臨限邏輯矩陣44可包含複數個計數器,例如,經組態以遞增計數或遞減計數之32位元計數器。臨限邏輯矩陣44可載入有一初始計數且其可基於由辨識模組發訊之匹配而自該計數遞增計數或遞減計數。舉例而言,臨限邏輯矩陣44可計數某一長度之文字中一字之出現數目。
臨限邏輯矩陣44之輸出可係邏輯積矩陣46之輸入。邏輯積矩陣46可選擇性地產生「積」結果(例如,布林邏輯(Boolean logic)中之「AND」函數)。邏輯積矩陣46可實施為一正方形矩陣,其中輸出積之數目等於來自臨限邏輯矩陣44之輸入線之數目,或邏輯積矩陣46可具有數目不同於輸出之輸入。可將所得積值輸出至邏輯和矩陣48。
邏輯和矩陣48可選擇性地產生和(例如,布林邏輯中之「OR」函數)。邏輯和矩陣48亦可係一正方形矩陣,或邏輯和矩陣48可具有數目不同於輸出之輸入。由於該等輸入係邏輯積,因此邏輯和矩陣48之輸出可係邏輯積和(例如,布林邏輯積和(SOP)形式)。邏輯和矩陣48之輸出可由初始化路由矩陣50接收。
初始化路由矩陣50可經由聚合路由矩陣42重設偵測陣列34及聚合模組24之部分。初始化路由矩陣50亦可實施為一正方形矩陣,或初始化路由矩陣50可具有數目不同於輸出之輸入。初始化路由矩陣50可回應於來自邏輯和矩陣48之信號且重新初始化型樣辨識處理器14之其他部分(例如,在已滿足了一搜尋準則或經確定不再滿足該搜尋準則時)。
聚合模組24可包含一輸出緩衝器51,其接收臨限邏輯矩陣44、聚合路由矩陣42及邏輯和矩陣48之輸出。聚合模組24之輸出可在輸出匯流排26上自輸出緩衝器51傳輸至CPU 20(圖1)。在某些實施例中,一輸出多工器可對來自此等組件42、44及48之信號進行多工處理且將指示準則之滿足或搜尋項之匹配之信號輸出至CPU 20(圖1)。在其他實施例中,可在不將該等信號傳輸通過該輸出多工器之情況下報告來自型樣辨識處理器14之結果,此並非暗示亦不可省略本文中所闡述之任一其他特徵。舉例而言,可將來自臨限邏輯矩陣44、邏輯積矩陣46、邏輯和矩陣48或初始化路由矩陣50之信號在輸出匯流排26上平行傳輸至該CPU。
圖3圖解說明搜尋項陣列32(圖2)中之一單個特徵胞30之一部分(本文中稱為一搜尋項胞54之一組件)。搜尋項胞54可包含一輸出導體56及複數個記憶體胞58。記憶體胞58中之每一者皆可耦合至輸出導體56及複數個輸入導體37中之導體中之一個導體兩者。回應於其輸入導體37被選擇,記憶體胞58中之每一者可輸出指示其所儲存值之一值,從而透過輸出導體56輸出資料。在某些實施例中,該複數個輸入導體37可稱為「字線」,且輸出導體56可稱為一「資料線」。
記憶體胞58可包含各種類型之記憶體胞中之一者。舉例而言,記憶體胞58可係揮發性記憶體,諸如,具有一電晶體及一電容器之動態隨機存取記憶體(DRAM)胞。該電晶體之源極與汲極可分別連接至該電容器之一板及輸出導體56,且該電晶體之閘極可連接至輸入導體37中之一者。在揮發性記憶體之另一實例中,記憶體胞58中之每一者可包含一靜態隨機存取記憶體(SRAM)胞。該SRAM胞可具有一輸出,該輸出藉由受輸入導體37中之一者控制之一存取電晶體選擇性地耦合至輸出導體56。記憶體胞58亦可包含非揮發性記憶體,例如,相變記憶體(例如,一雙向裝置)、快閃記憶體、矽-氧化物-氮化物-氧化物-矽(SONOS)記憶體、磁阻式記憶體或其他類型之非揮發性記憶體。記憶體胞58亦可包含正反器,例如,由邏輯閘極製成之記憶體胞。
圖4及圖5繪示運作中之搜尋項胞54之一實例。圖4圖解說明搜尋項胞54接收不匹配該胞之搜尋項之一項,且圖5圖解說明一匹配。
如圖4所圖解說明,搜尋項胞54可經組態以藉由將資料儲存於記憶體胞58中來搜尋一個或多個項。記憶體胞58各自可表示資料流12可呈現之一項,例如,在圖3中,每一記憶體胞58表示一單個字母或數字,以字母「a」開始且以數字「9」結束。表示滿足搜尋項之項之記憶體胞58可經程式化以儲存一第一值,且不表示滿足搜尋項之項之記憶體胞58可經程式化以儲存一不同值。在所圖解說明之實例中,搜尋項胞54經組態以搜尋字母「b」。表示「b」之記憶體胞58可儲存一1或邏輯高,且不表示「b」之記憶體胞58可經程式化以儲存一0或邏輯低。
為將來自資料流12之一項與搜尋項進行比較,列解碼器28可選擇耦合至表示所接收項之記憶體胞58之輸入導體37。在圖4中,資料流12呈現一小寫「e」。此項可由資料流12以一八位元ASCII程式碼之形式呈現,且列解碼器28可將此位元組解譯為一列位址,從而藉由給導體60通電而在其上輸出一信號。
作為回應,由導體60控制之記憶體胞58可輸出指示記憶體胞58所儲存之資料之一信號,且該信號可由輸出導體56傳達。在此情況下,由於字母「e」不係由搜尋項胞54規定之項中之一者,因此其未匹配搜尋項,且搜尋項胞54輸出一0值,從而指示未發現匹配。
在圖5中,資料流12呈現一字元「b」。同樣,列解碼器28可將此項解譯為一位址,且列解碼器28可選擇導體62。作為回應,表示字母「b」之記憶體胞58輸出其所儲存值,在此情況下,其係一1,從而指示一匹配。
搜尋項胞54可經組態以一次搜尋多於一個項。多個記憶體胞58可經程式化以儲存一1,從而規定與多於一個項匹配之一搜尋項。舉例而言,表示小寫字母「a」及大寫字母「A」之記憶體胞58可經程式化以儲存一1,且搜尋項胞54可搜尋任一項。在另一實例中,搜尋項胞54可經組態以在接收到任一字元之情況下輸出一匹配。所有記憶體胞58可經程式化以儲存一1,以使得搜尋項胞54可充當一搜尋準則中之一通配符項。
圖6至圖8繪示辨識模組22根據一多項搜尋準則進行搜尋(例如,搜尋一字)。具體而言,圖6圖解說明辨識模組22偵測一字之第一字母,圖7圖解說明第二字母之偵測,且圖8圖解說明最後一個字母之偵測。
如圖6所圖解說明,辨識模組22可經組態以搜尋字「big」。對三個毗鄰特徵胞63、64及66進行圖解說明。特徵胞63經組態以偵測字母「b」。特徵胞64經組態以偵測字母「i」。特徵胞66經組態以既偵測字母「g」又指示滿足搜尋準則。
圖6亦繪示偵測陣列34之額外細節。偵測陣列34可包含特徵胞63、64及66中之每一者中之一偵測胞68。偵測胞68中之每一者皆可包含一記憶體胞70(諸如,上述類型之記憶體胞中之一者(例如,一正反器)),其指示特徵胞63、64或66是在作用中還是在不作用中。偵測胞68可經組態以將指示偵測胞68是否係在作用中且已自其相關聯搜尋項胞54接收到指示一匹配之一信號之一信號輸出至啟動路由矩陣36。不在作用中特徵胞63、64及66可忽視匹配。偵測胞68中之每一者皆可包含一AND閘,其具有來自記憶體胞70及輸出導體56之輸入。可將該AND閘之輸出路由至偵測匯流排38及啟動路由矩陣36兩者或一者或另一者。
轉而,啟動路由矩陣36可藉由向偵測陣列34中之記憶體胞70寫入來選擇性地啟動特徵胞63、64及66。啟動路由矩陣36可根據搜尋準則及接下來在資料流12中搜尋哪個搜尋項來啟動特徵胞63、64或66。
在圖6中,資料流12呈現字母「b」。作為回應,特徵胞63、64及66中之每一者可在其輸出導體56上輸出指示儲存於連接至導體62(其表示字母「b」)之記憶體胞58中之值之一信號。然後,偵測胞56各自可確定其等是否已接收到指示一匹配之一信號及其等是否係在作用中。由於特徵胞63經組態以偵測字母「b」且係在作用中(如其記憶體胞70所指示),因此特徵胞63中之偵測胞68可將指示已匹配搜尋準則之第一搜尋項之一信號輸出至啟動路由矩陣36。
如圖7所圖解說明,在匹配第一搜尋項之後,啟動路由矩陣36可藉由將一1寫入至下一特徵胞64之偵測胞68中之其記憶體胞70來啟動該特徵胞。在下一項滿足第一搜尋項之情況下(例如,若接收到項序列「bbig」),啟動路由矩陣36亦可維持特徵胞63之在作用中狀態。在對資料流12進行搜尋期間之一部分時間或大致所有時間期間,搜尋準則之第一搜尋項可維持處於一在作用中狀態中。
在圖7中,資料流12將字母「i」呈現給辨識模組22。作為回應,特徵胞63、64及66中之每一者可在其輸出導體56上輸出指示儲存於連接至導體72(其表示字母「i」)之記憶體胞58中之值之一信號。然後,偵測胞56各自可確定其等是否已接收到指示一匹配之一信號及其等是否係在作用中。由於特徵胞64經組態以偵測字母「i」且係在作用中(如其記憶體胞70所指示),因此特徵胞64中之偵測胞68可將指示已匹配其搜尋準則之下一搜尋項之一信號輸出至啟動路由矩陣36。
接下來,啟動路由矩陣36可啟動特徵胞66,如圖8所圖解說明。在評估下一項之前,可去啟動特徵胞64。特徵胞64可由在偵測循環之間重設其記憶體胞70之其偵測胞68去啟動或啟動路由矩陣36可去啟動特徵胞64(舉例而言)。
在圖8中,資料流12將項「g」呈現給列解碼器28,該列解碼器選擇表示項「g」之導體74。作為回應,特徵胞63、64及66中之每一者可在其輸出導體56上輸出指示儲存於連接至導體74(其表示字母「g」)之記憶體胞58中之值之一信號。然後,偵測胞68各自可確定其等是否已接收到指示一匹配之一信號及其等是否係在作用中。由於特徵胞66經組態以偵測字母「g」且係在作用中(如其記憶體胞70所指示),因此特徵胞66中之偵測胞68可將指示已匹配其搜尋準則之最後一個搜尋項之一信號輸出至啟動路由矩陣36。
一搜尋準則之末端或一搜尋準則之一部分可由啟動路由矩陣36或偵測胞68來識別。此等組件36或68可包含指示其特徵胞63、64或66是規定一搜尋準則之最後一個搜尋項還是一搜尋準則之一組分之記憶體。舉例而言,一搜尋準則可規定其中字「cattle」出現兩次之所有句子,且辨識模組可將指示「cattle」在一句子內之每一出現之一信號輸出至聚合模組,該聚合模組可計數該等出現以確定是否滿足該搜尋準則。
可在數個條件下啟動特徵胞63、64或66。一特徵胞63、64或66可係「始終在作用中」,此意指其在整個或大致整個搜尋期間保持在作用中。一始終在作用中特徵胞63、64或66之一實例係搜尋準則之第一特徵胞(例如,特徵胞63)。
一特徵胞63、64或66可係「在請求時在作用中」,此意指特徵胞63、64或66在匹配某一在前條件時(例如,在匹配一搜尋準則中之在前搜尋項時)係在作用中。一實例係在由圖6至8中之特徵胞63請求時係在作用中之特徵胞64及在由特徵胞64請求時係在作用中之特徵胞66。
一特徵胞63、64或66可係「自啟動」,此意指一旦其被啟動,則只要匹配其搜尋項其即啟動其自身。舉例而言,具有由任一數值數位匹配之一搜尋項之一自啟動特徵胞可在序列「123456xy」中保持在作用中直至到達字母「x」為止。每當匹配該自啟動特徵胞之搜尋項時,其可啟動搜尋準則中之下一特徵胞。因此,一始終在作用中特徵胞可由一自啟動特徵胞及一在請求時係在作用中之特徵胞形成。該自啟動特徵胞可與其儲存一1之所有記憶體胞58一起程式化,且其可在每一項後重複啟動在請求時係在作用中之特徵胞。在某些實施例中,每一特徵胞63、64及66可在其偵測胞68中或在啟動路由矩陣36中包含規定該特徵胞是否係始終在作用中之一記憶體胞,藉此由一單個特徵胞形成一始終在作用中特徵胞。
圖9繪示經組態以根據一第一搜尋準則75及一第二搜尋準則76平行進行搜尋之一辨識模組22之一實例。在此實例中,第一搜尋準則75規定字「big」,且第二搜尋準則76規定字「cab」。來自資料流12之指示當前項之一信號可在大體相同時間傳遞至每一搜尋準則75及76中之特徵胞。輸入導體37中之每一者皆跨越搜尋準則75及76兩者。因此,在某些實施例中,搜尋準則75及76兩者可大體同時評估當前項。據信,此加速對搜尋準則之評估。其他實施例可包含經組態以平行評估更多搜尋準則之更多特徵胞。舉例而言,某些實施例可包含平行運作之多於100、500、1000、5000、10,000個特徵胞。此等特徵胞可大體同時評估數百個或數千個搜尋準則。
具有不同數目之搜尋項之搜尋準則可藉由將更多或更少之特徵胞分配至該等搜尋準則來形成。簡單搜尋準則可消耗比複雜搜尋準則更少之呈特徵胞形式之資源。據信,相對於具有大量大體相同之核心之處理器(全部經組態以評估複雜搜尋準則),此減小型樣辨識處理器14(圖2)之成本。
圖10至圖12繪示一更複雜搜尋準則之一實例及啟動路由矩陣36之特徵兩者。啟動路由矩陣36可包含複數個啟動路由胞78,其群組可與特徵胞63、64、66、80、82、84及86中之每一者相關聯。舉例而言,該等特徵胞中之每一者皆可包含5、10、20、50個或更多個啟動路由胞78。啟動路由胞78可經組態以在匹配一搜尋準則中之一在前搜尋項時將啟動信號傳輸至下一搜尋項。啟動路由胞78可經組態以將啟動信號路由至毗鄰特徵胞或相同特徵胞內之其他啟動路由胞78。啟動路由胞78可包含指示哪些特徵胞對應於一搜尋準則中之下一搜尋項之記憶體。
如圖10至圖12所圖解說明,辨識模組22可經組態以根據複雜搜尋準則而非規定單個字之準則進行搜尋。舉例而言,辨識模組22可經組態以搜尋以一前綴88開頭且以兩個後綴90或92中之一者結束之字。所圖解說明之搜尋準則規定按順序以字母「c」及「l」開頭且以字母序列「ap」或字母序列「oud」結束之字。此係規定多個目標表達(例如,字「clap」或字「cloud」)之一搜尋準則之一實例。
在圖10中,資料流12將字母「c」呈現給辨識模組22,且特徵胞63既係在作用中又偵測一匹配。作為回應,啟動路由矩陣36可啟動下一特徵胞64。啟動路由矩陣36亦可維持特徵胞63之在作用中狀態,此乃因特徵胞63係搜尋準則中之第一搜尋項。
在圖11中,資料流12呈現一字母「l」,且特徵胞64辨識一匹配且係在作用中。作為回應,啟動路由矩陣36可將一啟動信號傳輸至第一後綴90之第一特徵胞66及第二後綴92之第一特徵胞82兩者。在其他實例中,可啟動更多後綴,或多個前綴可啟動一個或多個後綴。
接下來,如圖12所圖解說明,資料流12將字母「o」呈現給辨識模組22,且第二後綴92之特徵胞82偵測一匹配且係在作用中。作為回應,啟動路由矩陣36可啟動第二後綴92之下一特徵胞84。在允許特徵胞66變成不在作用中時,對第一後綴90之搜尋可停止。圖10至圖12所圖解說明之步驟可繼續通過字母「u」及「d」,或搜尋可停止直至下一次匹配前綴88為止。
如上文所闡述,型樣辨識處理器14可以順序資料單元接收並對搜尋資料流12進行搜尋。舉例而言,一特定數目之單元(例如位元)可表示一項,且若干連續項可表示較大單元,諸如字元、字、短語等。在一個實施例中,型樣辨識處理器14可接收並對為8個位元(一個位元組)寬之項進行搜尋。在此一實施例中,可將傳入資料流12作為一個位元組寬之資料流呈現給該處理器,其中將較大單元劃分成連續之8個位元搜尋項。如上文所闡述,包含型樣辨識處理器14之系統10可係各種類型系統中之一者,諸如網路節點、電腦、電子裝置等。此等系統可經由一匯流排或其他通信耦合件提供資料流12,該匯流排或其他通信耦合件具有不同於由型樣辨識處理器14接收及進行搜尋之8個位元寬之資料流之一寬度。
圖13至19闡述可將任一寬度資料流提供至上文所闡述之固定寬度型樣辨識處理器14之一「可變寬度資料輸入系統」。圖13係繪示根據本發明一實施例之一可變寬度資料輸入系統之邏輯圖。應瞭解,該邏輯圖圖解說明輸入至可用於上文所闡述之實施例中之型樣辨識處理器14之位址信號及其他信號。
如在圖13中所示,型樣辨識處理器14經由可耦合至資料流12之源(諸如一網路、感測器、記憶體或任一其他資料源)之一資料匯流排100接收資料流12。在圖13中所圖解說明之實施例中,資料匯流排100具有32個位元之寬度,即,能夠在一個匯流排循環中載送四個位元組之一32位元匯流排。在其他實施例中,資料匯流排100可係一16位元匯流排、64位元匯流排、128位元匯流排或任一其他寬度匯流排。資料匯流排100可係用於電子裝置或系統(諸如電腦、路由器、防火牆等)中之任一匯流排,且可係PCI、PCIe、HyperTransport、PATA、SATA、SCSI、USB、Firewire、CAN或任一其他匯流排技術及/或協定。此外,在某些實施例中,資料匯流排100可將系統10之任一組件(諸如I/O卡、記憶體、微處理器等)連接至型樣辨識處理器14。
在所圖解說明之實施例中,經由32位元資料匯流排100傳送之四個位元組中之每一者可稱為位元組0、位元組1、位元組2及位元組3。此外,該等位元組位元組0、位元組1、位元組2及位元組3中之每一者圖解說明為分別包含標示為D7-D0、D13-D8、D23-D16及D31-D24之8個資料位元。型樣辨識處理器14自資料匯流排100接收該四個位元組位元組0、位元組1、位元組2及位元組3,如線102所圖解說明。來自32位元資料匯流排100之資料流12中之每一位元組可不表示一項。亦即,若一個匯流排循環中之一項僅由一個、兩個或三個位元組來表示,則不使用彼匯流排循環中之資料流12中之其他位元組。表示該項之彼等位元組可稱為「有效」位元組。資料流12中與型樣辨識處理器14無關之彼等位元組可稱為「無效」位元組。
圖13亦圖解說明一晶片選擇匯流排104、一控制匯流排106及將位址信號提供至型樣辨識處理器14之位址匯流排108。圖13亦圖解說明一位址解碼器110解碼來自位址匯流排108之信號且輸出晶片選擇信號112。控制匯流排106將一讀取選通114及一寫入選通116提供至型樣辨識處理器14。位址匯流排114可將三個位址信號A5、A6、及A7提供至位址解碼器110,該位址解碼器110輸出經解碼之晶片選擇信號112,如線CSel1至CSel8所指示。然後,晶片選擇匯流排104將晶片選擇信號112(諸如晶片選擇CSel7)提供至型樣辨識處理器14。
在某些實施例中,晶片選擇邏輯(例如位址解碼器110)可包含「通用選擇」邏輯。在此一實施例中,一通用選擇信號可由位址匯流排108及位址解碼器110提供,如一第四位址信號A8所圖解說明,且提供至一反相器118。此外,可包含第四位址信號A8以指示通用選擇(1)或一晶片選擇(0)之使用。
位址匯流排108亦在位址線A0、A1、A2、A3、及A4上將信號提供至型樣辨識處理器14,如線120所圖解說明。如下文進一步論述,在線A0、A1、A2、A3、及A4上提供之信號用於發訊在資料匯流排100上傳送之位元組0、位元組1、位元組2及位元組3固有之有效性。位址線A0、A1、A2、A3、及A4可稱為「位元組有效」線。
在圖13中繪示且在上文論述之位址信號A0至A8概述於圖14中所示之表122中。應瞭解,位址信號A0至A8僅表示一個實施例,且其他實施例可使用不同數目、配置及名稱之位址線及信號來實施本文所闡述之技術。
如上文所闡述,型樣辨識處理器14可係一「位元組導向」處理器,以使得該處理器按順序處理以輸入資料流輸入之每一位元組(8個位元)寬之資料。然而,資料匯流排100將四個位元組位元組0、位元組1、位元組2及位元組3提供至型樣辨識處理器14。為達成與32位元資料匯流排100之可交互運作性,位址信號A3、A2、A1、及A0指示該32位元資料之該等位元組位元組0、位元組1、位元組2及位元組3中之哪些位元組係有效的。藉由在位址線A3、A2、A1、及A0中之每一者上提供一信號(例如使每一位址線在作用中或不在作用中),指示每一位元組位元組0、位元組1、位元組2及位元組3之有效性。可由型樣辨識處理器14之一可變寬度資料控制邏輯124處理「位元組有效」信號A3、A2、A1、A0及資料信號102。
舉例而言,若將在一匯流排循環中經由資料匯流排100傳送之資料流12中欲搜尋之資料表示為一個位元組,則位址信號A0係在作用中,且位址信號A1、A2及A3係不在作用中。若將在一匯流排循環中經由資料匯流排100傳送之資料流12中欲搜尋之資料表示為兩個資料位元組,則位址信號A1係在作用中,且位址信號A0、A2及A3係不在作用中。類似地,若在一匯流排循環中經由資料匯流排100傳送之資料係三個位元組,則位址信號A2係在作用中,且若該資料係四個位元組,則位址信號A3係接通。圖15係圖解說明用於「位元組有效」信號A3、A2、A1、及A0之此圖解之一表126。
在圖15之表126中圖解說明且在上文論述之此圖解允許經由32位元資料匯流排100傳送任何一個位元組、兩個位元組、三個位元組或四個位元組或更大資料且然後型樣辨識處理器14可按順序處理該資料之每一位元組。使用表126中之A0、A1、A2、及A3位址信號圖解來指示連續有效位元組,資料流12中大於四個位元組之資料可由連續32位元匯流排循環表示。舉例而言,可按照以下傳送五個可搜尋資料位元組:在一個匯流排循環上傳送四個位元組,由一在作用中位址信號A3指示,且在下一匯流排循環上傳送一後續位元組,由一在作用中位址信號A0指示。
以一類似方式,亦可將資料流12中小於32位元寬資料匯流排100之資料「封包化」在一起以達成資料匯流排100之全寬度使用。舉例而言,可在一個32位元匯流排循環上傳送一一位元組項及一三位元組項,其中位址信號A3在作用中以指示彼匯流排循環中之四個有效位元組。
應瞭解,本文中所論述之技術適用於任一大小資料匯流排。一16位元資料匯流排可使用兩個「位元組有效」信號來指示該匯流排循環中之一個位元組是否有效或該匯流排循環中之兩個位元組是否有效。類似地,一64位元資料匯流排可使用八個「位元組有效」信號來指示在每一匯流排循環上傳送之資料中有效位元組之數目。該「位元組有效」信號圖解可按比例調整至任一匯流排大小及裝置。
圖16係用於型樣辨識處理器14之一個潛在的可變寬度資料控制邏輯124之一邏輯圖。在一個實施例中,資料控制邏輯124可實施於型樣辨識處理器14中。可變寬度資料控制邏輯124經由32位元資料匯流排接收資料流12,如線100所指示。如上文所論述,可使用任一寬度資料匯流排。32位元寬資料匯流排100傳送四個位元組位元組0、位元組1、位元組2及位元組3。
圖13之位址匯流排108將位址信號A0、A1、A2、A3、及A4提供至可變寬度資料控制邏輯124,從而指示該資料流中有效位元組之數目。可變寬度資料控制邏輯124可處理該等位址信號且端視在位址線A0、A1、A2及A3上供應之信號來提供指示該資料流中位元組之數目之一計數128,諸如1、2、3、或4。此外,可變寬度資料控制邏輯124包含一控制單元130,該控制單元130接收計數128且根據計數128所指示之有效位元組之數目處理資料流12。舉例而言,為將資料提供至型樣辨識處理器14之辨識模組22,控制單元130可按順序處理該資料流之每一位元組,諸如藉由使用一移位暫存器或一先進/先出(FIFO)暫存器。為指示有效位元組之數目,控制單元130可藉由使用計數128所提供之「位元組有效」資訊將該等有效位元組寫入至移位暫存器或FIFO暫存器。因此,可變寬度資料控制邏輯124確定哪些位元組係有效的且可繼續按順序處理該等有效位元組。
在上文所闡述及在圖15中所圖解說明之圖解中,表示資料流12之位元組經配置以使得所有有效位元組係連續且在該等位元組之間不存在未使用空間。在此配置中,該等位元組可稱為「經封包化」,意指資料流12中之所有有效位元組之項以最低位置至最高位置地配置,或另一選擇係自最高位置至最低位置地配置。任何無效位元組皆保持在有效位元組之後,在最高位置處或另一選擇係在最低位置處。
圖17係根據本發明另一實施例之可變寬度資料輸入之一替代圖解之一表140。如上文所闡述,該圖解使用位址信號A3、A2、A1、及A0及一晶片選擇信號(A4)(例如「位元組有效」信號120)來指示經由一32位元資料匯流排100傳送之資料流12中位元組之有效性。亦如上文所陳述,該簡圖可擴展至任一寬度匯流排,諸如16位元、64位元等。然而,與圖15中所繪示之圖解相比,圖17之圖解在不如上文所闡述將有效位元組「封包化」於資料流中之情況下達成資料經由資料匯流排100之傳輸。如在圖17中所繪示,位址信號A3、A2、A1、及A0指示32位元寬資料流12中之四個位元組中之哪些位元組係有效的,從而消除對自一最低位置至最高位置(或反之亦然)連續「封包化」該等有效位元組之需要。
如圖17之列142中所圖解說明,若該等位元組中無任一者係有效的,則位址信號A0、A1、A2及A3皆不在作用中。位址信號A0、A1、A2、及A3各自分別指示位元組0、位元組1、位元組2及位元組3之有效性。然而,除位元組0、位元組1、位元組2及位元組3之個別有效性之外,亦可使用位址信號A0、A1、A2、及A3之組合來指示位元組0、位元組1、位元組2及位元組3之任一組合之有效性。舉例而言,若該32位元資料之位元組0及位元組1係有效的,則A0位址信號係在作用中,且A1位址信號係在作用中,而A2位址信號及A3位址信號係不在作用中,如在列144中所指示。在另一實例中,若位元組0及位元組3係有效的且位元組1及位元組2係無效的,則A0位址信號及A3位址信號係在作用中,且A1位址信號及A2位址信號係不在作用中,如在列146中所指示。
若經由32位元資料匯流排100發送四個有效位元組,則所有四個位元組位元組0、位元組1、位元組2及位元組3係有效的。在此例項中,所有四個位址信號A0、A1、A2、及A3皆係在作用中,從而指示位元組0、位元組1、位元組2及位元組3係有效的,如列148所指示。以此方式,有效位元組之任一組合可由位址信號A0、A1、A2、及A3之組合表示。應瞭解,此圖解僅表示一個實施例,且其他實施例可使用位址信號之不同圖解或組合來指示在資料匯流排100上傳送之位元組之有效性。
與使用圖15中所繪示之圖解之一實施例相比,圖17中所繪示之圖解允許使用位元組位元組0、位元組1、位元組2及位元組3中之一者或多者來表示未由型樣辨識處理器14進行搜尋之額外資料。舉例而言,若資料匯流排100自一網路處理器接收資料,則可保留一個或多個位元組用於一指示一網路識別或傳輸狀態之傳輸位元組。在此一實施例中,可在不將位元組移位至不同位置以「封包化」有效位元組之情況下將資料寫入至資料匯流排100,從而消除對此額外處理之需要。舉例而言,可將一傳輸位元組寫入至32位元資料匯流排100之位元組位元組0、位元組1、位元組2或位元組3中之任一者。使用圖17中所闡述之圖解,可將此傳輸位元組指示為無效而無論其在資料流12中之位置如何,且將該資料流中之其他位元組指示為有效。
圖17中之實施例亦可使用一順序暫存器或FIFO暫存器結合由位址信號A0、A1、A2、及A3指示之位元組之有效性來按順序處理資料匯流排100上之傳入位元組中之每一者。舉例而言,在以上論述之實例中之一者中,若位元組0及位元組3係有效的,且位元組1及位元組2係無效的,則可變寬度資料控制邏輯124可提供位元組0、忽略位元組1、忽略位元組2且提供位元組3。在某些實施例中,可變寬度資料控制邏輯124之控制單元130可包含一「等待」或「忙碌」信號以指示其正在處理位元組。在其他實施例中,若型樣辨識處理器14以比資料匯流排100提供位元組之速度更快地處理位元組,則不需要此信號。
除上文所闡述之技術之外,某些實施例亦可包含一FIFO緩衝器,該FIFO緩衝器能夠接受資料「叢發」以儲存經由資料匯流排100傳送之資料之諸多寫入。此一實施例圖解說明於圖18中。一FIFO緩衝器150可用於資料匯流排100與可變寬度控制邏輯124之間,且如下文進一步所論述,可儲存來自資料匯流排100之資料(線102)及來自控制匯流排106之「位元組有效」信號A0、A1、A2及A3(由線120指示)。舉例而言,在具有一32位元資料匯流排100之實施例中,FIFO緩衝器150可係一36位元緩衝器。
FIFO緩衝器150接收來自資料匯流排100及位址匯流排108之輸入且將來自資料流12之資料及「位元組有效」位址信號120輸出至可變寬度資料控制邏輯124。FIFO緩衝器150可接收來自資料匯流排100之資料「叢發」、緩衝該資料,直至可變寬度資料控制邏輯124準備接受下一資料循環。應瞭解,FIFO緩衝器150可與任一寬度資料匯流排(諸如16位元、64位元或更寬資料匯流排)一起使用,且FIFO緩衝器150可經按比例調整以匹配資料匯流排之寬度。
圖19圖解說明根據本發明一實施例之FIFO緩衝器150之進一步細節。FIFO緩衝器150可包含FIFO寫入控制邏輯152及FIFO讀取控制邏輯154。儲存於該緩衝器中之資料藉由「列」(例如空間) 156來指示。FIFO緩衝器150中之「列」156可經由一系列移位暫存器來實施。如在圖19中所圖解說明,FIFO緩衝器150中之每一「列」156可儲存自資料匯流排100接收之每一位元組(即,位元組0、位元組1、位元組2及位元組3)且亦可儲存自位址匯流排108接收之「位元組有效指示符」。舉例而言,在上文所論述之圖解中,位元組有效指示符可包含來自位址信號A0、A1、A2、及A3之指示符,該等指示符指示資料中有效位元組之數目或位元組0、位元組1、位元組2及位元組3中之每一者之有效性。可變寬度控制邏輯124及控制單元130接收來自FIFO緩衝器150之FIFO讀取控制154之輸出。
FIFO緩衝器150自32位元資料匯流排100接收同樣稱為位元組0、位元組1、位元組2及位元組3之四個位元組且自位址匯流排108接收位址信號A0、A1、A2、及A3。FIFO寫入控制邏輯152控制自資料匯流排100接收之資料且將該所接收之資料寫入至FIFO緩衝器150中之下一可用「列」或空間中。FIFO讀取控制邏輯154將包含由位址信號A0、A1、A2及A3供應之位元組有效位元之第一FIFO「列」輸出至包含控制單元130之可變寬度資料控制邏輯124。可變寬度資料控制邏輯124及控制單元130可將該32位元寬資料之有效位元組按順序提供至型樣辨識處理器14之辨識模組或其他組件。
FIFO緩衝器150之FIFO寫入控制邏輯152亦可向資料匯流排100指示該緩衝器係滿或能夠自資料匯流排100接受更多資料。FIFO緩衝器150之使用提供型樣辨識處理器14之獨立於來自使用處理器14之一系統中之其他組件之運作,乃因FIFO緩衝器150確保處理器14在不與資料匯流排100或向型樣辨識處理器14提供資料之任一其他組件同步之情況下被供應資料(即,有效位元組)。
儘管可易於對本發明作出各種修改及替代形式,但特定實施例已經以實例方式顯示於圖式中並詳細闡述於本文中。然而,應理解,並不意欲將本發明限定於所揭示的特定形式。而是,本發明將涵蓋歸屬於下文隨附申請專利範圍所界定之本發明精神及範疇內之所有修改、等效內容及替代方案。
10...系統
12...資料流
14...型樣辨識處理器
16...搜尋準則
18...編譯器
20...中央處理單元
22...辨識模組
24...聚合模組
26...輸出匯流排
28...列解碼器
30...特徵胞
32...搜尋項陣列
34...偵測陣列
36...啟動路由矩陣
37...輸入導體
38...偵測匯流排
40...鎖存器矩陣
42...聚合路由矩陣
44...臨限邏輯矩陣
46...邏輯積矩陣
48...邏輯和矩陣
50...初始化路由矩陣
51...輸出緩衝器
53...群組邏輯線
54...搜尋項胞
56...輸出導體
58...記憶體胞
60...導體
62...導體
63...特徵胞
64...特徵胞
66...特徵胞
68...偵測胞
70...記憶體胞
72...導體
75...搜尋準則
76...搜尋準則
78...啟動路由胞
80...特徵胞
82...特徵胞
84...特徵胞
86...特徵胞
88...前綴
90...後綴
92...後綴
100...資料匯流排
102...線
104...晶片選擇匯流排
106...控制匯流排
108...位址匯流排
110...位址解碼器
112...晶片選擇信號
114...讀取選通
116...寫入選通
118...反相器
120...信號
124...可變寬度資料控制邏輯
128...計數
130...控制單元
142...列
144...列
146...列
148...列
150...FIFO緩衝器
152...FIFO寫入控制邏輯
154...FIFO讀取控制邏輯
156...列
圖1繪示對一資料流進行搜尋之系統之一實例;
圖2繪示圖1之系統中之一型樣辨識處理器之一實例;
圖3繪示圖2之型樣辨識處理器中之一搜尋項胞之一實例;
圖4及圖5繪示圖3之搜尋項胞針對一單個字元對資料流進行搜尋;
圖6至圖8繪示包含數個搜尋項胞之一辨識模組針對一字對資料流進行搜尋;
圖9繪示經組態以針對兩個字平行地對資料流進行搜尋之辨識模組;
圖10至12繪示根據規定具有相同前綴之多個字之一搜尋準則進行搜尋之辨識模組;
圖13係繪示根據本發明一實施例之一可變寬度資料輸入系統之一邏輯圖;
圖14係概述根據本發明一實施例之圖13中所示之位址解碼信號線之一表;
圖15係圖解說明根據本發明一實施例之「位元組有效」信號之一圖解之一表;
圖16係圖解說明根據本發明一實施例之圖13之可變寬度資料控制塊之一邏輯圖;
圖17係圖解說明根據本發明另一實施例之「位元組有效」信號之一圖解之一表;
圖18係圖解說明根據本發明一實施例之與圖13之可變寬度資料系統一起使用之一緩衝器之一邏輯圖;及
圖19係圖解說明根據本發明一實施例之圖18之緩衝器之運作之一邏輯圖。
14...型樣辨識處理器
32...搜尋項陣列
100...資料匯流排
102...線
104...晶片選擇匯流排
106...控制匯流排
108...位址匯流排
110...位址解碼器
112...晶片選擇信號
114...讀取選通
116...寫入選通
118...反相器
120...信號
124...可變寬度資料控制邏輯

Claims (31)

  1. 一種用於處理資料之方法,其包括:經由具有一第一寬度之一通信耦合件接收一個或多個資料單元;接收指示該一個或多個資料單元中之一每一者之有效性之複數個信號,其中該複數個信號係平行地被接收;及經由具有一第二寬度之一通信耦合件按順序提供該等有效資料單元,其中該第二寬度不同於該第一寬度。
  2. 如請求項1之方法,其中該第一寬度包括16個位元、32個位元或64個位元中之一者。
  3. 如請求項1之方法,其中該第二寬度包括8個位元。
  4. 如請求項1之方法,其包括指示該一個或多個單元中之哪一者係有效的。
  5. 如請求項1之方法,其包括在按順序提供該等有效單元之前儲存該等有效資料單元。
  6. 如請求項1之方法,其中接收該複數個信號包括接收用以指示該一個或多個資料單元中之一第一單元之有效性之一第一信號。
  7. 如請求項6之方法,其中接收該複數個信號包括接收用以指示該一個或多個單元中之一第一及第二單元之有效性之一第二信號。
  8. 如請求項7之方法,其中接收該複數個信號包括接收用以指示該一個或多個單元中之一第一、第二及第三信號 之有效性之一第三信號。
  9. 如請求項8之方法,其中接收該複數個信號包括接收用以指示該一個或多個單元中之一第一、第二、第三及第四單元之有效性之一第四信號。
  10. 如請求項6之方法,其中接收該複數個信號包括接收用以指示該一個或多個單元中之一第二單元之有效性之一第二信號。
  11. 如請求項10之方法,其中接收該複數個信號包括接收用以指示該一個或多個單元中之一第三單元之有效性之一第三信號。
  12. 如請求項11之方法,其中接收該複數個信號包括接收用以指示該一個或多個單元中之一第四單元之有效性之一第四信號。
  13. 一種用於處理資料之方法,其包括:自具有一第一寬度之一匯流排接收一個或多個位元組;經由被平行接收的複數個信號而確定該一個或多個位元組中之每一者是否係有效的;及按順序處理該一個或多個位元組中之每一有效位元組。
  14. 如請求項13之方法,其中一個或多個有效位元組包括欲由一型樣辨識處理器進行搜尋之一個或多個項。
  15. 如請求項13之方法,其中確定該一個或多個位元組中之每一者係有效的包括基於該複數個信號中之一對應信號確定一單個位元組係有效的。
  16. 如請求項13之方法,其包括儲存該一個或多個位元組及該複數個信號。
  17. 如請求項13之方法,其包括將一個或多個有效位元組提供至一型樣辨識處理器之一辨識模組。
  18. 一種用於處理資料之系統,其包括:複數個信號線,其經組態以提供複數個信號,該複數個信號指示經由具有一寬度之一通信耦合件所接收之一個或多個資料單元中之每一者之有效性;及控制邏輯,其經組態以平行地接收該複數個信號,並按順序處理該等有效資料單元。
  19. 如請求項18之系統,其中該控制邏輯包括一個或多個順序暫存器。
  20. 如請求項18之系統,其包括經組態以儲存該一個或多個資料單元之一緩衝器。
  21. 如請求項20之系統,其中該緩衝器包括一包括複數個順序暫存器之FIFO緩衝器。
  22. 如請求項18之系統,其包括經組態以處理該等有效資料單元之一型樣辨識處理器。
  23. 如請求項18之系統,其中該通信耦合件包括一資料匯流排。
  24. 如請求項20之系統,其中該緩衝器經組態以向該通信耦合件指示該緩衝器之一狀態。
  25. 如請求項18之系統,其中該控制邏輯經組態以將一等待信號提供至該通信耦合件以指示該控制邏輯正處理該等 有效資料單元。
  26. 如請求項23之系統,其中該資料匯流排將一I/O介面、一記憶體、一處理器或其任一組合耦合至該型樣辨識處理器。
  27. 如請求項18之系統,其中該控制邏輯係一型樣辨識處理器之部分。
  28. 一種資料處理系統,其包括:一匯流排,其具有一第一寬度且經組態以傳送一資料流;一型樣辨識處理器,其耦合至該匯流排,該型樣辨識處理器包括:控制邏輯,其經組態以接收經由該匯流排傳送之包括一個或多個位元組之資料、平行地接收指示該一個或多個位元組中之每一者之有效性之複數個信號且在具有一第二寬度之一資料流中按順序提供該一個或多個位元組,其中該第二寬度不同於該第一寬度。
  29. 如請求項28之系統,其中該型樣辨識處理器進一步包括一緩衝器,該緩衝器經組態以在按順序提供該一個或多個位元組之前儲存該一個或多個位元組。
  30. 一種在一型樣辨識處理器中進行處理之方法,其包括:經由具有一第一寬度之一匯流排接收一個或多個位元組;接收該一個或多個位元組之有效性之一指示符,其中接收該指示符包含平行地接收複數個信號; 在具有一第二寬度之一資料流中按順序提供該一個或多個有效位元組;及將該一個或多個有效位元組與一搜尋準則之一搜尋項進行比較。
  31. 如請求項30之方法,其包括儲存該一個或多個位元組及該等有效性指示符。
TW098137443A 2008-11-05 2009-11-04 用以完成可變寬度資料輸入之方法及系統 TWI519963B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12/265,421 US7970964B2 (en) 2008-11-05 2008-11-05 Methods and systems to accomplish variable width data input

Publications (2)

Publication Number Publication Date
TW201022950A TW201022950A (en) 2010-06-16
TWI519963B true TWI519963B (zh) 2016-02-01

Family

ID=42026295

Family Applications (1)

Application Number Title Priority Date Filing Date
TW098137443A TWI519963B (zh) 2008-11-05 2009-11-04 用以完成可變寬度資料輸入之方法及系統

Country Status (3)

Country Link
US (4) US7970964B2 (zh)
TW (1) TWI519963B (zh)
WO (1) WO2010053712A1 (zh)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8209521B2 (en) 2008-10-18 2012-06-26 Micron Technology, Inc. Methods of indirect register access including automatic modification of a directly accessible address register
US8938590B2 (en) 2008-10-18 2015-01-20 Micron Technology, Inc. Indirect register access method and system
US7917684B2 (en) 2008-11-05 2011-03-29 Micron Technology, Inc. Bus translator
US8402188B2 (en) 2008-11-10 2013-03-19 Micron Technology, Inc. Methods and systems for devices with a self-selecting bus decoder
US20100138575A1 (en) 2008-12-01 2010-06-03 Micron Technology, Inc. Devices, systems, and methods to synchronize simultaneous dma parallel processing of a single data stream by multiple devices
US10007486B2 (en) 2008-12-01 2018-06-26 Micron Technology, Inc. Systems and methods to enable identification of different data sets
US8214672B2 (en) 2009-01-07 2012-07-03 Micron Technology, Inc. Method and systems for power consumption management of a pattern-recognition processor
US8281395B2 (en) 2009-01-07 2012-10-02 Micron Technology, Inc. Pattern-recognition processor with matching-data reporting module
US20100174887A1 (en) 2009-01-07 2010-07-08 Micron Technology Inc. Buses for Pattern-Recognition Processors
US9323994B2 (en) 2009-12-15 2016-04-26 Micron Technology, Inc. Multi-level hierarchical routing matrices for pattern-recognition processors
US9501705B2 (en) 2009-12-15 2016-11-22 Micron Technology, Inc. Methods and apparatuses for reducing power consumption in a pattern recognition processor
US8489534B2 (en) 2009-12-15 2013-07-16 Paul D. Dlugosch Adaptive content inspection
US8766666B2 (en) 2010-06-10 2014-07-01 Micron Technology, Inc. Programmable device, hierarchical parallel machines, and methods for providing state information
US8601013B2 (en) 2010-06-10 2013-12-03 Micron Technology, Inc. Analyzing data using a hierarchical structure
WO2012103146A2 (en) 2011-01-25 2012-08-02 Micron Technology, Inc. Utilizing special purpose elements to implement a fsm
KR101640295B1 (ko) 2011-01-25 2016-07-15 마이크론 테크놀로지, 인크. 정규 표현을 컴파일하기 위한 방법 및 장치
EP2668577B1 (en) 2011-01-25 2019-08-14 Micron Technology, INC. Unrolling quantifications to control in-degree and/or out degree of automaton
WO2012103151A2 (en) 2011-01-25 2012-08-02 Micron Technology, Inc. State grouping for element utilization
US8648621B2 (en) 2011-12-15 2014-02-11 Micron Technology, Inc. Counter operation in a state machine lattice
US8680888B2 (en) 2011-12-15 2014-03-25 Micron Technologies, Inc. Methods and systems for routing in a state machine
US8593175B2 (en) 2011-12-15 2013-11-26 Micron Technology, Inc. Boolean logic in a state machine lattice
US9443156B2 (en) 2011-12-15 2016-09-13 Micron Technology, Inc. Methods and systems for data analysis in a state machine
US8782624B2 (en) 2011-12-15 2014-07-15 Micron Technology, Inc. Methods and systems for detection in a state machine
WO2013095422A1 (en) 2011-12-21 2013-06-27 Intel Corporation Dynamic link width adjustment
US20130275709A1 (en) 2012-04-12 2013-10-17 Micron Technology, Inc. Methods for reading data from a storage buffer including delaying activation of a column select
US9235798B2 (en) 2012-07-18 2016-01-12 Micron Technology, Inc. Methods and systems for handling data received by a state machine engine
US9524248B2 (en) 2012-07-18 2016-12-20 Micron Technology, Inc. Memory management for a hierarchical memory system
US9389841B2 (en) 2012-07-18 2016-07-12 Micron Technology, Inc. Methods and systems for using state vector data in a state machine engine
US9304968B2 (en) 2012-07-18 2016-04-05 Micron Technology, Inc. Methods and devices for programming a state machine engine
US9501131B2 (en) 2012-08-31 2016-11-22 Micron Technology, Inc. Methods and systems for power management in a pattern recognition processing system
US9075428B2 (en) 2012-08-31 2015-07-07 Micron Technology, Inc. Results generation for state machine engines
US9448965B2 (en) 2013-03-15 2016-09-20 Micron Technology, Inc. Receiving data streams in parallel and providing a first portion of data to a first state machine engine and a second portion to a second state machine
US9703574B2 (en) 2013-03-15 2017-07-11 Micron Technology, Inc. Overflow detection and correction in state machine engines
WO2016109571A1 (en) 2014-12-30 2016-07-07 Micron Technology, Inc Devices for time division multiplexing of state machine engine signals
US10430210B2 (en) 2014-12-30 2019-10-01 Micron Technology, Inc. Systems and devices for accessing a state machine
US11366675B2 (en) 2014-12-30 2022-06-21 Micron Technology, Inc. Systems and devices for accessing a state machine
US10977309B2 (en) 2015-10-06 2021-04-13 Micron Technology, Inc. Methods and systems for creating networks
US10846103B2 (en) 2015-10-06 2020-11-24 Micron Technology, Inc. Methods and systems for representing processing resources
US10691964B2 (en) 2015-10-06 2020-06-23 Micron Technology, Inc. Methods and systems for event reporting
US10146555B2 (en) 2016-07-21 2018-12-04 Micron Technology, Inc. Adaptive routing to avoid non-repairable memory and logic defects on automata processor
US10019311B2 (en) 2016-09-29 2018-07-10 Micron Technology, Inc. Validation of a symbol response memory
US10268602B2 (en) 2016-09-29 2019-04-23 Micron Technology, Inc. System and method for individual addressing
US10929764B2 (en) 2016-10-20 2021-02-23 Micron Technology, Inc. Boolean satisfiability
US10592450B2 (en) 2016-10-20 2020-03-17 Micron Technology, Inc. Custom compute cores in integrated circuit devices

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5293381A (en) 1992-03-27 1994-03-08 Advanced Micro Devices Byte tracking system and method
US5300830A (en) 1992-05-15 1994-04-05 Micron Semiconductor, Inc. Programmable logic device macrocell with an exclusive feedback and exclusive external input lines for registered and combinatorial modes using a dedicated product term for control
US5331227A (en) 1992-05-15 1994-07-19 Micron Semiconductor, Inc. Programmable logic device macrocell with an exclusive feedback line and an exclusive external input line
US5528550A (en) 1993-05-28 1996-06-18 Texas Instruments Incorporated Apparatus, systems and methods for implementing memory embedded search arithmetic logic unit
US6880087B1 (en) 1999-10-08 2005-04-12 Cisco Technology, Inc. Binary state machine system and method for REGEX processing of a data stream in an intrusion detection system
US6240003B1 (en) 2000-05-01 2001-05-29 Micron Technology, Inc. DRAM content addressable memory using part of the content as an address
US6892252B2 (en) * 2000-09-21 2005-05-10 Michael Tate Asymmetric data path media access controller
US6856981B2 (en) * 2001-09-12 2005-02-15 Safenet, Inc. High speed data stream pattern recognition
US7146643B2 (en) 2002-10-29 2006-12-05 Lockheed Martin Corporation Intrusion detection accelerator
US7089352B2 (en) 2002-12-23 2006-08-08 Micron Technology, Inc. CAM modified to be used for statistic calculation in network switches and routers
US6944710B2 (en) 2002-12-30 2005-09-13 Micron Technology, Inc. Multiple category CAM
US20040190506A1 (en) * 2003-03-24 2004-09-30 International Business Machines Corp. Method and apparatus for performing complex pattern matching in a data stream within a computer network
US6906938B2 (en) 2003-08-15 2005-06-14 Micron Technology, Inc. CAM memory architecture and a method of forming and operating a device according to a CAM memory architecture
US20050050237A1 (en) 2003-08-28 2005-03-03 Jeddeloh Joseph M. Memory module and method having on-board data search capabilities and processor-based system using such memory modules
US7228432B2 (en) * 2003-09-11 2007-06-05 Angelo Michael F Method and apparatus for providing security for a computer system
US7487542B2 (en) 2004-01-14 2009-02-03 International Business Machines Corporation Intrusion detection using a network processor and a parallel pattern detection engine
DE102005014837B4 (de) * 2004-08-02 2007-08-30 Mahltig, Holger Sicherheitsmodul und Verfahren zum Steuern und Kontrollieren eines Datenverkehrs eines Personalcomputers
US7574541B2 (en) * 2004-08-03 2009-08-11 Lsi Logic Corporation FIFO sub-system with in-line correction
US7392229B2 (en) 2005-02-12 2008-06-24 Curtis L. Harris General purpose set theoretic processor
US20060218332A1 (en) 2005-03-25 2006-09-28 Via Technologies, Inc. Interface circuit, system, and method for interfacing between buses of different widths
FR2891075B1 (fr) 2005-09-21 2008-04-04 St Microelectronics Sa Circuit de memoire pour automate de reconnaissance de caracteres de type aho-corasick et procede de memorisation de donnees dans un tel circuit
TW200734866A (en) 2006-03-03 2007-09-16 Mitac Int Corp Bus data searching method
US20070283440A1 (en) * 2006-05-03 2007-12-06 Anchiva Systems, Inc. Method And System For Spam, Virus, and Spyware Scanning In A Data Network
US7512634B2 (en) 2006-06-05 2009-03-31 Tarari, Inc. Systems and methods for processing regular expressions
US8065249B1 (en) 2006-10-13 2011-11-22 Harris Curtis L GPSTP with enhanced aggregation functionality
US7774286B1 (en) 2006-10-24 2010-08-10 Harris Curtis L GPSTP with multiple thread functionality
US8286246B2 (en) * 2007-08-10 2012-10-09 Fortinet, Inc. Circuits and methods for efficient data transfer in a virus co-processing system
US8938590B2 (en) 2008-10-18 2015-01-20 Micron Technology, Inc. Indirect register access method and system
US8209521B2 (en) 2008-10-18 2012-06-26 Micron Technology, Inc. Methods of indirect register access including automatic modification of a directly accessible address register
US7917684B2 (en) 2008-11-05 2011-03-29 Micron Technology, Inc. Bus translator
US9639493B2 (en) 2008-11-05 2017-05-02 Micron Technology, Inc. Pattern-recognition processor with results buffer
US8402188B2 (en) 2008-11-10 2013-03-19 Micron Technology, Inc. Methods and systems for devices with a self-selecting bus decoder
US9348784B2 (en) 2008-12-01 2016-05-24 Micron Technology, Inc. Systems and methods for managing endian mode of a device
US8766666B2 (en) 2010-06-10 2014-07-01 Micron Technology, Inc. Programmable device, hierarchical parallel machines, and methods for providing state information
US8601013B2 (en) 2010-06-10 2013-12-03 Micron Technology, Inc. Analyzing data using a hierarchical structure
WO2012103146A2 (en) 2011-01-25 2012-08-02 Micron Technology, Inc. Utilizing special purpose elements to implement a fsm
WO2012103151A2 (en) 2011-01-25 2012-08-02 Micron Technology, Inc. State grouping for element utilization
EP2668577B1 (en) 2011-01-25 2019-08-14 Micron Technology, INC. Unrolling quantifications to control in-degree and/or out degree of automaton
KR101640295B1 (ko) 2011-01-25 2016-07-15 마이크론 테크놀로지, 인크. 정규 표현을 컴파일하기 위한 방법 및 장치

Also Published As

Publication number Publication date
US20110258360A1 (en) 2011-10-20
US20140223044A1 (en) 2014-08-07
TW201022950A (en) 2010-06-16
US20100115158A1 (en) 2010-05-06
US8713223B2 (en) 2014-04-29
US20120324130A1 (en) 2012-12-20
US9164940B2 (en) 2015-10-20
WO2010053712A1 (en) 2010-05-14
US8260987B2 (en) 2012-09-04
US7970964B2 (en) 2011-06-28

Similar Documents

Publication Publication Date Title
TWI519963B (zh) 用以完成可變寬度資料輸入之方法及系統
US10466966B2 (en) Systems and methods to enable identification of different data sets
TWI436271B (zh) 具有結果緩衝器之型樣辨識處理器
TWI409695B (zh) 用於配置裝置之系統、方法及裝置
TWI489300B (zh) 用於傳達平行型樣搜尋引擎之型樣匹配結果之裝置、系統及方法
TWI442318B (zh) 間接暫存器存取之系統及方法
TWI414998B (zh) 型樣辨識處理器之電力消耗管理之方法及系統
TWI488108B (zh) 用以同步一單一資料串流之平行處理的裝置、系統及方法
TWI416332B (zh) 藉由多個裝置同步化單一資料串流之同時直接記憶體存取平行處理之裝置、系統及方法
US9734876B2 (en) Indirect register access method and system
TWI426390B (zh) 用於直接將裝置連接至微控制器之方法及系統
TWI590059B (zh) 用於型樣辨識處理器之匯流排
TWI524203B (zh) 用於保存及/或復原圖型辨識處理器之狀態之方法及裝置