分案申請的相關(guān)信息
本申請是國際申請日為2010年12月7日、國際申請?zhí)枮閜ct/us2010/059310、發(fā)明名稱為“用于模式辨識處理器的多級層次路由矩陣”的pct申請進入中國國家階段申請?zhí)枮?01080062217.5的發(fā)明專利申請的分案申請。
本發(fā)明的實施例大體來說涉及模式辨識處理器,且更具體來說,在某些實施例中,涉及此些處理器的連接架構(gòu)。
背景技術(shù):
在計算領(lǐng)域中,模式辨識任務(wù)越來越具有挑戰(zhàn)性。計算機之間傳輸?shù)臄?shù)據(jù)量不斷增大,且用戶希望識別的模式數(shù)目日益增加。舉例來說,通常通過搜索數(shù)據(jù)流中的模式(例如,特定短語或代碼片段)來檢測垃圾郵件或惡意軟件。模式的數(shù)目隨著垃圾郵件及惡意軟件的變化而增加,因為可實施新模式以搜索新變體。搜索數(shù)據(jù)流以找到這些模式中的每一者可形成計算瓶頸。通常,在接收到數(shù)據(jù)流時,搜索數(shù)據(jù)流以一次一個地找到每一模式。在系統(tǒng)準備搜索數(shù)據(jù)流的下一部分之前的延遲隨著模式數(shù)目而增加。因此,模式辨識可使數(shù)據(jù)的接收減慢。
此些模式辨識處理器可包含在處理輸入時在不同狀態(tài)間移動的大量有限狀態(tài)機(fsm)。常規(guī)處理器的內(nèi)部連接依賴于連接到觸發(fā)器或其它存儲器元件的物理導線。然而,此些連接可能不能夠滿足模式搜索處理器的性能。此外,此些連接通常不可配置為或不能夠滿足所期望的功能性。用硅實施模式辨識處理器中的連接的距離、速度及可配置性可能具有挑戰(zhàn)性。
技術(shù)實現(xiàn)要素:
附圖說明
圖1描繪搜索數(shù)據(jù)流的系統(tǒng)的實例;
圖2描繪圖1的系統(tǒng)中的模式辨識處理器的實例;
圖3描繪圖2的模式辨識處理器中的搜索項單元的實例;
圖4及5描繪圖3的搜索項單元搜索數(shù)據(jù)流以找到單個字符;
圖6到8描繪搜索數(shù)據(jù)流以找到一詞的包含數(shù)個搜索項單元的辨識模塊;
圖9描繪經(jīng)布置以搜索數(shù)據(jù)流以并行找到兩個詞的辨識模塊;
圖10到12描繪根據(jù)規(guī)定具有同一前綴的多個詞的搜索準則進行搜索的辨識模塊;
圖13到16描繪根據(jù)本發(fā)明的實施例的模式辨識處理器的特征單元的層次布置;
圖17到20描繪根據(jù)本發(fā)明的實施例的模式辨識處理器的多級層次路由矩陣;
圖21描繪根據(jù)本發(fā)明的實施例停用模式辨識處理器的特征單元的一部分;且
圖22是根據(jù)本發(fā)明的實施例用于編程多級層次路由矩陣的連接的過程的流程圖。
具體實施方式
圖1描繪搜索數(shù)據(jù)流12的系統(tǒng)10的實例。系統(tǒng)10可包含模式辨識處理器14,其根據(jù)搜索準則16搜索數(shù)據(jù)流12。
每一搜索準則可規(guī)定一個或一個以上目標表達(即,模式)。短語“目標表達”是指模式辨識處理器14正在搜索的數(shù)據(jù)序列。目標表達的實例包含拼寫某一詞的字符序列、詳細說明基因的遺傳堿基對序列、形成圖像的一部分的圖片或視頻文件中的位序列、形成程序的一部分的可執(zhí)行文件中的位序列或形成歌曲或口語短語的一部分的音頻文件中的位序列。
搜索準則可規(guī)定一個以上目標表達。舉例來說,搜索準則可規(guī)定以字母序列“cl”開始的所有五個字母的詞、以字母序列“cl”開始的任一詞、包含詞“cloud”三次以上的段落等??赡苣繕吮磉_集合的數(shù)目為任意大的,例如,可存在與數(shù)據(jù)流可呈現(xiàn)的數(shù)據(jù)排列同樣多的目標表達。搜索準則可以各種格式來表達,包含正則表達、簡明地規(guī)定若干目標表達集合而不必列舉每一目標表達的程序設(shè)計語言。
每一搜索準則可由一個或一個以上搜索項構(gòu)造而成。因此,搜索準則的每一目標表達可包含一個或一個以上搜索項且一些目標表達可使用共用搜索項。如本文中所使用,短語“搜索項”是指在單個搜索循環(huán)期間所搜索的數(shù)據(jù)序列。所述數(shù)據(jù)序列可包含呈二進制格式或其它格式(例如,十進制、ascii等)的多個數(shù)據(jù)位。所述序列可用單個數(shù)字或多個數(shù)字(例如,數(shù)個二進制數(shù)字)編碼數(shù)據(jù)。舉例來說,模式辨識處理器14可一次一個字符地搜索文本數(shù)據(jù)流12,且搜索項可規(guī)定具有單個字符的集合,例如,字母“a”,字母“a”或“e”,或規(guī)定具有所有單個字符的集合的通配符搜索項。
搜索項可小于或大于規(guī)定字符(或數(shù)據(jù)流所表達的信息的其它語義符—即,基本單位,例如,音符、遺傳堿基對、10進制數(shù)字或子像素)的位的數(shù)目。舉例來說,搜索項可為8個位且單個字符可為16個位,在此情況下,兩個相連搜索項可規(guī)定單個字符。
搜索準則16可由編譯器18格式化以用于模式辨識處理器14。格式化可包含從所述搜索準則解構(gòu)出搜索項。舉例來說,如果數(shù)據(jù)流12所表達的語義符大于所述搜索項,那么所述編譯器可將搜索準則解構(gòu)成多個搜索項以搜索單個語義符。類似地,如果數(shù)據(jù)流12所表達的語義符小于所述搜索項,那么編譯器18可為每一單獨語義符提供具有未使用位的單個搜索項。編譯器18還可對搜索準則16進行格式化以支持模式辨識處理器14本機不支持的各種正則表達運算符。
模式辨識處理器14可通過評估來自數(shù)據(jù)流12的每一新項來搜索數(shù)據(jù)流12。此處,詞“項”是指可匹配搜索項的數(shù)據(jù)量。在搜索循環(huán)期間,模式辨識處理器14可確定當前所呈現(xiàn)的項是否匹配搜索準則中的當前搜索項。如果所述項匹配所述搜索項,那么使評估“前進”,即,將下一項與搜索準則中的下一搜索項進行比較。如果所述項不匹配,那么將下一項與搜索準則中的第一項進行比較,借此對搜索進行復位。
可將每一搜索準則編譯到模式辨識處理器14中的不同有限狀態(tài)機(fsm)中。所述有限狀態(tài)機可并行運行,從而根據(jù)搜索準則16來搜索數(shù)據(jù)流12。在前面的搜索項由數(shù)據(jù)流12匹配時,所述有限狀態(tài)機可步進經(jīng)過搜索準則中的每一連續(xù)搜索項,或如果所述搜索項未被匹配,那么所述有限狀態(tài)機可開始搜索所述搜索準則的第一搜索項。
模式辨識處理器14可在約相同時間(例如,在單個裝置循環(huán)期間)根據(jù)數(shù)個搜索準則及其相應(yīng)搜索項評估每一新項。所述并行有限狀態(tài)機可各自在約相同時間接收來自數(shù)據(jù)流12的項,且所述并行有限狀態(tài)機中的每一者可確定所述項是否使所述并行有限狀態(tài)機前進到其搜索準則中的下一搜索項。所述并行有限狀態(tài)機可根據(jù)相對大數(shù)目個搜索準則(例如,多于100、多于1000或多于10,000)來評估項。由于其并行操作,因此其可將所述搜索準則應(yīng)用到具有相對高帶寬的數(shù)據(jù)流12(例如,大于或大體等于每秒64mb或每秒128mb的數(shù)據(jù)流12)而不會使所述數(shù)據(jù)流減慢。在一些實施例中,搜索循環(huán)持續(xù)時間不隨搜索準則的數(shù)目按比例縮放,因此搜索準則的數(shù)目對模式辨識處理器14的性能可幾乎沒有影響。
當滿足搜索準則時(即,在前進到最后一個搜索項且匹配其之后),模式辨識處理器14可將所述準則的滿足報告給處理單元,例如,中央處理單元(cpu)20。中央處理單元20可控制模式辨識處理器14及系統(tǒng)10的其它部分。
系統(tǒng)10可為搜索數(shù)據(jù)流的各種系統(tǒng)或裝置中的任一者。舉例來說,系統(tǒng)10可為搜索數(shù)據(jù)流12的桌上型、膝上型、手持式或其它類型的計算機。系統(tǒng)10還可為網(wǎng)絡(luò)節(jié)點,例如,路由器、服務(wù)器或客戶端(例如,先前所述類型的計算機中的一者)。系統(tǒng)10可為某一其它類別的電子裝置,例如,復印機、掃描儀、打印機、游戲控制臺、電視、機頂視頻分配或記錄系統(tǒng)、電纜盒、個人數(shù)字媒體播放器、工廠自動化系統(tǒng)、汽車計算機系統(tǒng)或醫(yī)療裝置。(用來描述系統(tǒng)的這些各種實例的術(shù)語(如同本文中所使用的許多其它術(shù)語)可共享某些所指物,且如此不應(yīng)僅根據(jù)所列舉的其它物項來理解)。
數(shù)據(jù)流12可為用戶或其它實體可希望搜索的各種類型的數(shù)據(jù)流中的一者或一者以上。舉例來說,數(shù)據(jù)流12可為在網(wǎng)絡(luò)上接收的數(shù)據(jù)流,例如,在因特網(wǎng)上接收的包或在蜂窩式網(wǎng)絡(luò)上接收的話音或數(shù)據(jù)。數(shù)據(jù)流12可為從與系統(tǒng)10通信的傳感器(例如,成像傳感器、溫度傳感器、加速度計或類似物或其組合物)接收的數(shù)據(jù)。數(shù)據(jù)流12可作為串行數(shù)據(jù)流由系統(tǒng)10接收,其中數(shù)據(jù)是以具有意義的次序(例如,以在時間上、在詞法上或在語義上有效的次序)被接收?;蛘撸刹⑿械鼗驘o序地接收數(shù)據(jù)流12,且接著(例如)通過將在因特網(wǎng)上接收的包重新排序?qū)?shù)據(jù)流12轉(zhuǎn)換成串行數(shù)據(jù)流。在一些實施例中,數(shù)據(jù)流12可以串行方式呈現(xiàn)項,但可并行地接收表達所述項中的每一者的位。數(shù)據(jù)流12可從系統(tǒng)10外部的源接收,或可通過詢問存儲器裝置且由所存儲的數(shù)據(jù)形成數(shù)據(jù)流12來形成。
取決于數(shù)據(jù)流12中的數(shù)據(jù)的類型,設(shè)計者可選擇不同類型的搜索準則。舉例來說,搜索準則16可為病毒定義文件??杀碚鞑《净蚱渌鼝阂廛浖铱墒褂脨阂廛浖姆矫鎭硇纬芍甘緮?shù)據(jù)流12是否可能正在遞送惡意軟件的搜索準則。可將所得搜索準則存儲于服務(wù)器上,且客戶端系統(tǒng)的操作者可訂閱將搜索準則下載到系統(tǒng)10的服務(wù)。由于會出現(xiàn)不同類型的惡意軟件,因此可從所述服務(wù)器周期性地更新搜索準則16。搜索準則還可用來規(guī)定可在網(wǎng)絡(luò)上接收的不合意內(nèi)容,舉例來說,不想要的電子郵件(通常稱為垃圾郵件)或用戶發(fā)現(xiàn)是令人反感的其它內(nèi)容。
數(shù)據(jù)流12可由對系統(tǒng)10正在接收的數(shù)據(jù)感興趣的第三方來搜索。舉例來說,可針對在版權(quán)作品中出現(xiàn)的文本、音頻序列或視頻序列而搜索數(shù)據(jù)流12??舍槍εc刑事調(diào)查或民事訴訟有關(guān)或雇主感興趣的言論而搜索數(shù)據(jù)流12。在其它實施例中,針對感興趣的數(shù)據(jù)監(jiān)視數(shù)據(jù)流可為搜索的實例。
搜索準則16還可包含數(shù)據(jù)流12中的若干模式,例如,在可由cpu20或模式辨識處理器14尋址的存儲器中,可對所述模式進行翻譯。舉例來說,搜索準則16可各自規(guī)定英語詞,對于所述英語詞,對應(yīng)西班牙語詞存儲于存儲器中。在另一實例中,搜索準則16可規(guī)定數(shù)據(jù)流12的經(jīng)編碼版本,例如,mp3、mpeg4、flac、oggvorbis等,對于所述經(jīng)編碼版本,可得到數(shù)據(jù)流12的經(jīng)解碼版本,或反之亦然。
模式辨識處理器14可為與cpu20一起集成到單個組件(例如,單個裝置)中或可形成為單獨組件的硬件。舉例來說,模式辨識處理器14可為單獨集成電路。模式辨識處理器14可稱為“協(xié)處理器”或“模式辨識協(xié)處理器”。
圖2描繪模式辨識處理器14的實例。模式辨識處理器14可包含辨識模塊22及聚合模塊24。辨識模塊22可經(jīng)配置以將所接收的項與搜索項進行比較,且辨識模塊22與聚合模塊24兩者可協(xié)作以確定將項與搜索項匹配是否滿足搜索準則。
辨識模塊22可包含行解碼器28及多個特征單元30。每一特征單元30可規(guī)定一搜索項,且特征單元30的群組可形成形成搜索準則的并行有限狀態(tài)機。特征單元30的組件可形成搜索項陣列32、檢測陣列34及激活路由矩陣36。搜索項陣列32可包含多個輸入導體37,其中的每一者可使特征單元30中的每一者與行解碼器28通信。
行解碼器28可基于數(shù)據(jù)流12的內(nèi)容而在多個輸入導體37當中選擇特定導體。舉例來說,行解碼器28可為1字節(jié)/256行解碼器,其基于可表示一個項的所接收字節(jié)的值而激活256個行中的一者。1字節(jié)項00000000可對應(yīng)于多個輸入導體37當中的頂部行,且1字節(jié)項11111111可對應(yīng)于多個輸入導體37當中的底部行。因此,取決于從數(shù)據(jù)流12接收到哪些項,可選擇不同輸入導體37。在接收到不同項時,行解碼器28可去激活對應(yīng)于先前項的行且激活對應(yīng)于新項的行。
檢測陣列34可耦合到檢測總線38,檢測總線38將指示全部或部分滿足搜索準則的信號輸出到聚合模塊24。激活路由矩陣36可基于(舉例來說)搜索準則中的已被匹配的搜索項的數(shù)目而選擇性地激活及去激活特征單元30。
聚合模塊24可包含鎖存器矩陣40、聚合路由矩陣42、閾值邏輯矩陣44、邏輯積矩陣46、邏輯和矩陣48及初始化路由矩陣50。
鎖存器矩陣40可實施某些搜索準則的若干部分。一些搜索準則(例如,一些正則表達)僅計數(shù)匹配或匹配群組的第一次出現(xiàn)。鎖存器矩陣40可包含記錄是否已出現(xiàn)匹配的鎖存器。所述鎖存器可在初始化期間經(jīng)清除,且在操作期間周期性地經(jīng)重新初始化,因為經(jīng)確定將滿足或不可進一步滿足搜索準則—即,較早搜索項可需要在可滿足所述搜索準則之前被再次匹配。
聚合路由矩陣42可類似于激活路由矩陣36地發(fā)揮作用。聚合路由矩陣42可在檢測總線38上接收指示匹配的信號且可將所述信號路由到連接到閾值邏輯矩陣44的不同群組邏輯線53。聚合路由矩陣42還可將初始化路由矩陣50的輸出路由到檢測陣列34,以在經(jīng)確定將滿足或不可進一步滿足搜索準則時對檢測陣列34的若干部分進行復位。
閾值邏輯矩陣44可包含多個計數(shù)器,例如,經(jīng)配置以遞增計數(shù)或遞減計數(shù)的32位計數(shù)器。閾值邏輯矩陣44可加載有初始計數(shù)且其可基于由辨識模塊用信號通知的匹配而從所述計數(shù)遞增計數(shù)或遞減計數(shù)。舉例來說,閾值邏輯矩陣44可計數(shù)某一長度的文本中一詞的出現(xiàn)數(shù)目。
閾值邏輯矩陣44的輸出可為到邏輯積矩陣46的輸入。邏輯積矩陣46可選擇性地產(chǎn)生“積”結(jié)果(例如,布爾邏輯(booleanlogic)中的“與”函數(shù))。邏輯積矩陣46可實施為正方形矩陣,其中輸出積的數(shù)目等于來自閾值邏輯矩陣44的輸入線的數(shù)目,或邏輯積矩陣46可具有數(shù)目不同于輸出的輸入??蓪⑺梅e值輸出到邏輯和矩陣48。
邏輯和矩陣48可選擇性地產(chǎn)生和(例如,布爾邏輯中的“或”函數(shù))。邏輯和矩陣48也可為正方形矩陣,或邏輯和矩陣48可具有數(shù)目不同于輸出的輸入。由于所述輸入為邏輯積,因此邏輯和矩陣48的輸出可為邏輯積和(例如,布爾邏輯積和(sop)形式)。邏輯和矩陣48的輸出可由初始化路由矩陣50接收。
初始化路由矩陣50可經(jīng)由聚合路由矩陣42對檢測陣列34及聚合模塊24的若干部分進行復位。初始化路由矩陣50也可實施為正方形矩陣,或初始化路由矩陣50可具有數(shù)目不同于輸出的輸入。初始化路由矩陣50可響應(yīng)于來自邏輯和矩陣48的信號且重新初始化模式辨識處理器14的其它部分(例如,在滿足搜索準則或經(jīng)確定不可進一步滿足所述搜索準則時)。
聚合模塊24可包含輸出緩沖器51,其接收閾值邏輯矩陣44、聚合路由矩陣42及邏輯和矩陣48的輸出。聚合模塊24的輸出可在輸出總線26上從輸出緩沖器51傳輸?shù)絚pu20(圖1)。在一些實施例中,輸出多路復用器可對來自這些組件42、44及48的信號進行多路復用且將指示準則的滿足或搜索項的匹配的信號輸出到cpu20(圖1)。在其它實施例中,可在不通過所述輸出多路復用器傳輸所述信號的情況下報告來自模式辨識處理器14的結(jié)果,此并非暗示也不可省略本文中所描述的任一其它特征。舉例來說,可將來自閾值邏輯矩陣44、邏輯積矩陣46、邏輯和矩陣48或初始化路由矩陣50的信號在輸出總線26上并行傳輸?shù)剿鯿pu。
圖3圖解說明搜索項陣列32(圖2)中的單個特征單元30的一部分(本文中稱為搜索項單元54的組件)。搜索項單元54可包含輸出導體56及多個存儲器單元58。存儲器單元58中的每一者可耦合到輸出導體56及多個輸入導體37當中的導體中的一者兩者。響應(yīng)于其輸入導體37被選擇,存儲器單元58中的每一者可輸出指示其所存儲值的值,從而通過輸出導體56輸出數(shù)據(jù)。在一些實施例中,多個輸入導體37可稱為“字線”,且輸出導體56可稱為“數(shù)據(jù)線”。
存儲器單元58可包含各種類型的存儲器單元中的任一者。舉例來說,存儲器單元58可為易失性存儲器,例如,具有晶體管及電容器的動態(tài)隨機存取存儲器(dram)單元。所述晶體管的源極與漏極可分別連接到所述電容器的板及輸出導體56,且所述晶體管的柵極可連接到輸入導體37中的一者。在易失性存儲器的另一實例中,存儲器單元58中的每一者可包含靜態(tài)隨機存取存儲器(sram)單元。所述sram單元可具有輸出,其通過受輸入導體37中的一者控制的存取晶體管選擇性地耦合到輸出導體56。存儲器單元58還可包含非易失性存儲器,例如,相變存儲器(例如,雙向裝置)、快閃存儲器、硅-氧化物-氮化物-氧化物-硅(sonos)存儲器、磁阻式存儲器或其它類型的非易失性存儲器。存儲器單元58還可包含觸發(fā)器,例如,由邏輯門制成的存儲器單元。
圖4及5描繪操作中的搜索項單元54的實例。圖4圖解說明搜索項單元54接收不匹配所述單元的搜索項的項,且圖5圖解說明匹配。
如圖4所圖解說明,搜索項單元54可經(jīng)配置以通過將數(shù)據(jù)存儲于存儲器單元58中來搜索一個或一個以上項。存儲器單元58可各自表示數(shù)據(jù)流12可呈現(xiàn)的項,例如,在圖3中,每一存儲器單元58表示單個字母或數(shù)字,以字母“a”開始且以數(shù)字“9”結(jié)束。表示滿足搜索項的項的存儲器單元58可經(jīng)編程以存儲第一值,且不表示滿足搜索項的項的存儲器單元58可經(jīng)編程以存儲不同值。在所圖解說明的實例中,搜索項單元54經(jīng)配置以搜索字母“b”。表示“b”的存儲器單元58可存儲1或邏輯高,且不表示“b”的存儲器單元58可經(jīng)編程以存儲0或邏輯低。
為了將來自數(shù)據(jù)流12的項與搜索項進行比較,行解碼器28可選擇耦合到表示所接收項的存儲器單元58的輸入導體37。在圖4中,數(shù)據(jù)流12呈現(xiàn)小寫“e”。此項可由數(shù)據(jù)流12以八位ascii代碼的形式呈現(xiàn),且行解碼器28可將此字節(jié)解釋為行地址,從而通過給導體60通電而在其上輸出信號。
作為響應(yīng),由導體60控制的存儲器單元58可輸出指示存儲器單元58所存儲的數(shù)據(jù)的信號,且所述信號可由輸出導體56傳達。在此情況下,由于字母“e”并非由搜索項單元54規(guī)定的項中的一者,因此其不匹配搜索項,且搜索項單元54輸出0值,從而指示未發(fā)現(xiàn)匹配。
在圖5中,數(shù)據(jù)流12呈現(xiàn)字符“b”。同樣,行解碼器28可將此項解釋為地址,且行解碼器28可選擇導體62。作為響應(yīng),表示字母“b”的存儲器單元58輸出其所存儲值,在此情況下,其為1,從而指示匹配。
搜索項單元54可經(jīng)配置以一次搜索一個以上項。多個存儲器單元58可經(jīng)編程以存儲1,從而規(guī)定與一個以上項匹配的搜索項。舉例來說,表示小寫字母“a”及大寫字母“a”的存儲器單元58可經(jīng)編程以存儲1,且搜索項單元54可搜索任一項。在另一實例中,搜索項單元54可經(jīng)配置以在接收到任一字符的情況下輸出匹配。所有存儲器單元58可經(jīng)編程以存儲1,使得搜索項單元54可用作搜索準則中的通配符項。
圖6到8描繪辨識模塊22根據(jù)多項搜索準則進行搜索(例如,以找到一詞)。具體來說,圖6圖解說明辨識模塊22檢測詞的第一字母,圖7圖解說明第二字母的檢測,且圖8圖解說明最后一個字母的檢測。
如圖6所圖解說明,辨識模塊22可經(jīng)配置以搜索詞“big”。圖解說明三個鄰近特征單元63、64及66。特征單元63經(jīng)配置以檢測字母“b”。特征單元64經(jīng)配置以檢測字母“i”。且特征單元66經(jīng)配置以既檢測字母“g”又指示搜索準則得到滿足。
圖6還描繪檢測陣列34的額外細節(jié)。檢測陣列34可包含特征單元63、64及66中的每一者中的檢測單元68。檢測單元68中的每一者可包含存儲器單元70(例如,上述存儲器單元類型中的一者(例如,觸發(fā)器)),其指示特征單元63、64或66是活動還是不活動。檢測單元68可經(jīng)配置以將指示所述檢測單元是否為活動的及是否已從其相關(guān)聯(lián)搜索項單元54接收到指示匹配的信號兩者的信號輸出到激活路由矩陣36。不活動特征單元63、64及66可忽視匹配。檢測單元68中的每一者可包含具有來自存儲器單元70及輸出導體56的輸入的“與”門。可將所述“與”門的輸出路由到檢測總線38及激活路由矩陣36兩者或者一者或另一者。
激活路由矩陣36又可通過向檢測陣列34中的存儲器單元70寫入來選擇性地激活特征單元63、64及66。激活路由矩陣36可根據(jù)搜索準則及接下來在數(shù)據(jù)流12中搜索哪個搜索項來激活特征單元63、64或66。
在圖6中,數(shù)據(jù)流12呈現(xiàn)字母“b”。作為響應(yīng),特征單元63、64及66中的每一者可在其輸出導體56上輸出指示存儲于連接到導體62的存儲器單元58(其表示字母“b”)中的值的信號。接著,檢測單元56可各自確定其是否已接收到指示匹配的信號及其是否為活動的。由于特征單元63經(jīng)配置以檢測字母“b”且為活動的(如其存儲器單元70所指示),因此特征單元63中的檢測單元68可將指示搜索準則的第一搜索項已被匹配的信號輸出到激活路由矩陣36。
如圖7所圖解說明,在匹配第一搜索項之后,激活路由矩陣36可通過將1寫入到下一特征單元64的檢測單元68中的存儲器單元70來激活所述特征單元。激活路由矩陣36還可維持特征單元63的活動狀態(tài),以防下一項滿足第一搜索項(例如,在接收到項序列“bbig”的情況下)。在搜索數(shù)據(jù)流12期間的一部分時間或大致所有時間期間,搜索準則的第一搜索項可維持于活動狀態(tài)中。
在圖7中,數(shù)據(jù)流12將字母“i”呈現(xiàn)給辨識模塊22。作為響應(yīng),特征單元63、64及66中的每一者可在其輸出導體56上輸出指示存儲于連接到導體72的存儲器單元58(其表示字母“i”)中的值的信號。接著,檢測單元56可各自確定其是否已接收到指示匹配的信號及其是否為活動的。由于特征單元64經(jīng)配置以檢測字母“i”且為活動的(如其存儲器單元70所指示),因此特征單元64中的檢測單元68可將指示其搜索準則的下一搜索項已被匹配的信號輸出到激活路由矩陣36。
接下來,激活路由矩陣36可激活特征單元66,如圖8所圖解說明。在評估下一項之前,可去激活特征單元64。舉例來說,特征單元64可由其檢測單元68在檢測循環(huán)之間對其存儲器單元70進行復位來去激活或激活路由矩陣36可去激活特征單元64。
在圖8中,數(shù)據(jù)流12將項“g”呈現(xiàn)給行解碼器28,所述行解碼器選擇表示項g”的導體74。作為響應(yīng),特征單元63、64及66中的每一者可在其輸出導體56上輸出指示存儲于連接到導體74的存儲器單元58(其表示字母“g”)中的值的信號。接著,檢測單元56可各自確定其是否已接收到指示匹配的信號及其是否為活動的。由于特征單元66經(jīng)配置以檢測字母“g”且為活動的(如其存儲器單元70所指示),因此特征單元66中的檢測單元68可將指示其搜索準則的最后一個搜索項已被匹配的信號輸出到激活路由矩陣36。
搜索準則的末端或搜索準則的一部分可由激活路由矩陣36或檢測單元68來識別。這些組件36或68可包含指示其特征單元63、64或66是規(guī)定搜索準則的最后一個搜索項還是搜索準則的分量的存儲器。舉例來說,搜索準則可規(guī)定其中詞“cattle”出現(xiàn)兩次的所有句子,且辨識模塊可將指示“cattle”在句子內(nèi)的每一次出現(xiàn)的信號輸出到聚合模塊,所述聚合模塊可計數(shù)所述出現(xiàn)以確定所述搜索準則是否得到滿足。
可在數(shù)個條件下激活特征單元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可為“自激活的”,此意味著一旦其被激活,只要其搜索項得到匹配其即激活其自身。舉例來說,具有由任一數(shù)值數(shù)字匹配的搜索項的自激活特征單元可在序列“123456xy”中保持活動直到到達字母“x”為止。每當所述自激活特征單元的搜索項得到匹配時,其即可激活搜索準則中的下一特征單元。因此,始終活動特征單元可由自激活特征單元及在請求時活動的特征單元形成:所述自激活特征單元可經(jīng)編程而使所有其存儲器單元58均存儲1,且其可在每一項之后重復激活在請求時活動的特征單元。在一些實施例中,每一特征單元63、64及66可在其檢測單元68中或在激活路由矩陣36中包含規(guī)定所述特征單元是否為始終活動的存儲器單元,借此由單個特征單元形成始終活動的特征單元。
圖9描繪經(jīng)配置以根據(jù)第一搜索準則75及第二搜索準則76并行進行搜索的辨識模塊22的實例。在此實例中,第一搜索準則75規(guī)定詞“big”,且第二搜索準則76規(guī)定詞“cab”。指示來自數(shù)據(jù)流12的當前項的信號可在大體相同時間被傳遞到每一搜索準則75及76中的特征單元。輸入導體37中的每一者跨越搜索準則75及76兩者。因此,在一些實施例中,搜索準則75及76兩者可大體同時評估當前項。相信此會加速搜索準則的評估。其它實施例可包含經(jīng)配置以并行評估更多搜索準則的更多特征單元。舉例來說,一些實施例可包含并行操作的100、500、1000、5000、10,000個以上特征單元。這些特征單元可大體同時評估數(shù)百個或數(shù)千個搜索準則。
具有不同數(shù)目個搜索項的搜索準則可通過將更多或更少的特征單元分配到所述搜索準則來形成。簡單搜索準則可消耗比復雜搜索準則更少的呈特征單元形式的資源。相信,相對于具有大數(shù)目個大體等同的核心的處理器(全部經(jīng)配置以評估復雜搜索準則),此會減少模式辨識處理器14(圖2)的成本。
圖10到12描繪更復雜搜索準則的實例及激活路由矩陣36的特征兩者。激活路由矩陣36可包含多個激活路由單元78,其群組可與特征單元63、64、66、80、82、84及86中的每一者相關(guān)聯(lián)。舉例來說,所述特征單元中的每一者可包含5個、10個、20個、50個或50個以上激活路由單元78。激活路由單元78可經(jīng)配置以在搜索準則中前面的搜索項得到匹配時將激活信號傳輸?shù)较乱凰阉黜?。激活路由單?8可經(jīng)配置以將激活信號路由到鄰近特征單元或同一特征單元內(nèi)的其它激活路由單元78。激活路由單元78可包含指示哪些特征單元對應(yīng)于搜索準則中的下一搜索項的存儲器。
如圖10到12所圖解說明,辨識模塊22可經(jīng)配置以根據(jù)比規(guī)定單個詞的準則復雜的搜索準則進行搜索。舉例來說,辨識模塊22可經(jīng)配置以搜索以前綴88開始且以兩個后綴90或92中的一者結(jié)束的詞。所圖解說明的搜索準則規(guī)定依序以字母“c”及“l(fā)”開始且以字母序列“ap”或字母序列“oud”結(jié)束的詞。此為規(guī)定多個目標表達(例如,詞“clap”或詞“cloud”)的搜索準則的實例。
在圖10中,數(shù)據(jù)流12將字母“c”呈現(xiàn)給辨識模塊22,且特征單元63既活動又檢測匹配。作為響應(yīng),激活路由矩陣36可激活下一特征單元64。激活路由矩陣36還可維持特征單元63的活動狀態(tài),因為特征單元63為搜索準則中的第一搜索項。
在圖11中,數(shù)據(jù)流12呈現(xiàn)字母“l(fā)”,且特征單元64辨識匹配且為活動的。作為響應(yīng),激活路由矩陣36可將激活信號傳輸?shù)降谝缓缶Y90的第一特征單元66及第二后綴92的第一特征單元82兩者。在其它實例中,可激活更多后綴,或多個前綴可激活一個或一個以上后綴。
接下來,如圖12所圖解說明,數(shù)據(jù)流12將字母“o”呈現(xiàn)給辨識模塊22,且第二后綴92的特征單元82檢測匹配且為活動的。作為響應(yīng),激活路由矩陣36可激活第二后綴92的下一特征單元84。在允許特征單元66變成不活動時,對第一后綴90的搜索可停止。圖10到12所圖解說明的步驟可繼續(xù)經(jīng)過字母“u”及“d”,或搜索可停止直到下一次前綴88得到匹配為止。
模式辨識處理器14的實施例可包含特征單元30的任一布置。圖13到16描繪根據(jù)本發(fā)明的實施例的特征單元30的層次布置。在一個實施例中,如圖13中所描繪,層次的第一層級可包含布置成兩個特征單元30(特征單元1與特征單元0)的群組94的特征單元30。每一特征單元30可接收一輸入(例如,啟用狀態(tài)信號)且可將下一狀態(tài)信號輸出到另一特征單元群組。群組94中的每一特征單元30可耦合到基于每一特征單元30的輸出而從群組94提供輸出的輸出驅(qū)動選擇96。舉例來說,在一個實施例中,輸出驅(qū)動選擇96可經(jīng)配置以輸出從特征單元30所接收的下一狀態(tài)輸出“0”信號、下一狀態(tài)輸出“1”信號或兩個下一狀態(tài)輸出信號的邏輯“或”。
如圖14中所示,第二層次層級可包含布置成群組94的一行98的每一特征單元群組94。每一行98可包含任一數(shù)目個特征單元30群組94。舉例來說,在圖14中所示的實施例中,行98可包含兩個特征單元30的八個群組94,例如,群組0到群組7。
如圖15中所示,層次的第三層級可包含聚集成若干塊100的多個行98,其中每一塊100包含一個或一個以上行98。在處理器14的一個實施例中,每一塊100可包含16個行98,例如,行0到行15。接著,模式辨識處理器14可包含用于實施上文所述的經(jīng)編程狀態(tài)機及模式搜索的任一數(shù)目個塊100。如圖16中所示,在一個實施例中,模式辨識處理器14可包含512個塊,例如,塊0到塊512。
上文所圖解說明的群組94、行98及塊100描述特征單元的層次布置。經(jīng)編程狀態(tài)機可包含任一數(shù)目個特征單元30。因此,每一群組、行或塊可包含多個經(jīng)編程狀態(tài)機。在模式辨識處理器14的操作期間,例如在上文所述的搜索循環(huán)期間,通過從每一特征單元30輸出且由每一群組94的輸出驅(qū)動選擇96選擇的下一狀態(tài)信號將經(jīng)編程狀態(tài)機(例如,一個或一個以上特征單元)的每一狀態(tài)路由到所述經(jīng)編程狀態(tài)機的下一狀態(tài)(稱為“下一狀態(tài)路由”)。
圖17到21描述根據(jù)本發(fā)明的實施例提供下一狀態(tài)路由、可編程性及高吞吐量的多級層次路由矩陣。如本文中所用,術(shù)語“路由矩陣”是指用于在模式辨識處理器14的組件之間路由通信的多個連接。下文所述的“路由矩陣”可在功能上不同于上文在圖1到12中所述的矩陣。如下文進一步描述,路由矩陣可提供在上文所述的模式辨識處理器14的層次的每一層級處、每一層級中及每一層級之間的可編程及/或不可編程連接。所述連接可連接模式辨識處理器14的特征單元、群組、行及塊之間的路由線。所述連接可包含但不限于以下類型的連接:可編程及不可編程;單向及雙向;邏輯組合(“或”、“與”、“異或”等);選擇器(例如,多者中的一者);及隔離器(斷開到線的連接)??删幊踢B接可經(jīng)配置以執(zhí)行上文所列舉的功能性中的任一者。舉例來說,可編程連接可編程為單向、雙向、任一邏輯組合、選擇器、隔離器等。不可編程連接可執(zhí)行上文所述的功能性中的任一者,但不能夠編程有不同功能性。
圖17到21中的連接由下文在表1中所概述的連接符號描繪:
表1:連接
圖17描繪包含上文在圖13中所述的特征單元30的群組94且根據(jù)本發(fā)明的實施例的層次層級。如上文所提及,每一特征單元30可接收將特征單元啟用為下一狀態(tài)的輸入。還如上文所提及,基于對照編程于特征單元30中的搜索準則所執(zhí)行的模式匹配,特征單元30可產(chǎn)生啟用下一活動狀態(tài)(下一狀態(tài)信號)的輸出。
特征單元30的輸入及輸出信號的路由由連接確定。群組94的特征單元30可通過局部路由線102(局部路由0及局部路由1)互連。群組94的特征單元30的輸出通過輸出連接104耦合到局部路由線102及輸出驅(qū)動選擇96。舉例來說,特征單元0通過第一輸出連接104a耦合到局部路由線0且特征單元1通過第二輸出連接104b耦合到局部路由線1。如圖17中所描繪,在一個實施例中,輸出連接為不可編程“第1層級”連接。在此實施例中,連接104為不可移除的且為不可配置的。在其它實施例中,輸出連接104可為可編程的。
輸出驅(qū)動選擇96可經(jīng)編程以驅(qū)動來自特征單元30的所接收輸出的任一數(shù)目或類型的信號。如上文所提及,在一個實施例中,輸出驅(qū)動選擇96可經(jīng)配置以輸出以下三個可能邏輯輸出中的一者:“下一狀態(tài)輸出0”;“下一狀態(tài)輸出1”;或兩個下一狀態(tài)輸出信號的邏輯“或”。在其它實施例中,輸出驅(qū)動選擇96可經(jīng)配置以輸出其它邏輯組合,例如“與”、“非或”及/或“異或”。
局部路由線102可通過輸入連接106耦合到特征單元30的輸入105(其可表示一個或一個以上輸入信號)。舉例來說,特征單元0可分別通過輸入連接106a及106b耦合到局部路由線0及1。類似地,特征單元1可分別通過輸入連接106c及106d耦合到局部路由線0及局部路由線1。如圖17中所描繪,輸入連接106可為可編程“第1層級”連接。在此實施例中,輸入連接106可經(jīng)配置以提供連接輸入105中的任一者的邏輯“或”。
圖18描繪具有如上文在圖14中所述的群組94的行98且根據(jù)本發(fā)明的實施例的層次層級。如上文所提及,每一行98可包含任一數(shù)目個特征單元30群組94,例如,圖18中所示的群組0到群組7。行98的群組可通過行路由線108互連。在一個實施例中,可為塊100的每一行提供行路由線108。因此,在每塊100具有16個行98的實施例中,可提供16個行路由線,例如,行路由線0到行路由線15。
來自每一群組94的輸出驅(qū)動選擇96的輸出可通過輸出連接110耦合到每一行路由線108。在一個實施例中,所述輸出連接可為可編程“第2層級”連接。如圖18中所示,舉例來說,群組0可分別通過輸出連接110a及110b耦合到行路由線0及15。群組7可分別通過輸出連接110c及110d耦合到行路由線0及15。所有其它行路由線(未展示)可通過輸出連接110耦合到群組0到群組7的輸出驅(qū)動選擇。輸出連接110可經(jīng)配置以使得群組94的輸出驅(qū)動選擇96能夠驅(qū)動或不驅(qū)動特定行路由線108。
另外,行路由線108可通過輸入連接112耦合到每一特征單元30的輸入105。在一個實施例中,輸入連接112可為可編程“第2層級”連接。舉例來說,行路由線108可通過輸入連接112a及112b耦合到群組0的特征單元0的輸入,且行路由線108可通過輸入連接112c及112d耦合到群組0的特征單元1的輸入。類似地,還如圖18中所示,行路由線108可通過輸入連接112e及112f耦合到群組7的特征單元0的輸入,且行路由線108可通過輸入連接112g及112h耦合到群組7的特征單元1。其它行路由線(未展示)可耦合到行98的每一群組94的每一特征單元30的輸入。在此實施例中,輸入連接112可編程為到特征單元30的任何所連接輸入的邏輯“或”。在其它實施例中,所述連接可為不可編程及/或雙向連接。
接下來,圖19描繪具有如上文在圖15中所述的多個行98且根據(jù)本發(fā)明的實施例的塊100的層次層級。如上文所述,塊100可包含任一數(shù)目個行98,例如,行0到行15。塊100的行98可通過塊內(nèi)路由線114連接。塊內(nèi)路由線114可通過雙向連接116耦合到行路由線112。在一個實施例中,所述雙向連接可為可編程“第3層級”連接。舉例來說,塊內(nèi)線路由線0可通過雙向連接116a耦合到行0的行路由線0且通過雙向連接116b耦合到行0的行路由線15。塊內(nèi)線路由線0可通過雙向連接116c耦合到行15的行路由線0且通過雙向連接116d耦合到行15的行路由線15。類似地,塊內(nèi)路由線23可通過雙向連接116e耦合到行0的行路由線0且通過雙向連接116f耦合到行0的行路由線15。此外,還如圖19中所示,塊內(nèi)路由線23可通過雙向連接116g耦合到行15的行路由線0且通過雙向連接116h耦合到行15的行路由線15。其它塊內(nèi)線(未展示)可通過雙向連接116耦合到每一行98的每一行路由線116。
如上文所述,雙向連接116可為可編程的。因此,雙向連接116可經(jīng)編程以使得塊內(nèi)路由線114中的一者或一者以上能夠驅(qū)動相應(yīng)行路由線112或使得一個或一個以上行路由線112能夠驅(qū)動相應(yīng)塊內(nèi)路由線114。可個別地編程每一雙向連接116,從而使得能夠在逐線的基礎(chǔ)上配置行路由線112與塊內(nèi)路由線114之間的連接。在其它實施例中,所述連接可為不可編程及/或單向連接。
圖20描繪根據(jù)本發(fā)明的實施例的具有塊100的路由矩陣的頂部層次層級117。在一個實施例中,如圖20中所示,頂部層級117可包含512個塊100,例如塊0到塊511。塊100可通過頂部層級路由線118互連。頂部層級路由線118可通過雙向連接120連接到塊內(nèi)路由線114。因此,如圖20中所示,頂部層級路由線0可分別通過雙向連接120a及120b耦合到塊0的塊內(nèi)路由線0及塊內(nèi)路由線23。類似地,頂部層級路由線0可分別通過雙向連接120c及120d耦合到塊511的塊內(nèi)線0及塊內(nèi)線23。如圖20中所示,頂部層級路由線23可分別通過雙向連接120e及120f耦合到塊0的塊內(nèi)路由線0及塊內(nèi)路由線23。此外,頂部層級路由線23可分別通過雙向連接120g及120h耦合到塊511的塊內(nèi)線0及塊內(nèi)線23。所有其它頂部層級路由線(未展示)可通過雙向連接120耦合到塊100的塊內(nèi)線114。
如圖20中所示,雙向連接120可為可編程“第4層級連接”。雙向連接可經(jīng)編程以使得一個或一個以上塊內(nèi)路由線114能夠驅(qū)動相應(yīng)頂部層級路由線118或使得一個或一個以上頂部層級路由線118能夠驅(qū)動相應(yīng)塊內(nèi)路由線114。因此,連接120可在逐線的基礎(chǔ)上編程及配置。在其它實施例中,所述連接可為不可編程及/或單向連接。
有利地,上文所述的多級層次路由矩陣可提供裝置的可編程性的規(guī)則性、用于改進生產(chǎn)及制造合格率的冗余實施方案、不同應(yīng)用的可變性以及邏輯改變的較容易形象化及實施方案。
如上文所提及,所述連接可為能夠“斷開”線使得不在線上路由任何信號從而使得能夠停用模式辨識處理器14的冗余區(qū)段的隔離器。圖21描繪根據(jù)本發(fā)明的實施例的模式辨識處理器14的一個或一個以上特征單元30的隔離。舉例來說,模式辨識處理器14可包含特征單元30塊130,其提供比模式辨識處理器14所使用的容量更多的容量。也就是說,在制造期間,為了增加合格率,模式辨識處理器14可制造有比針對處理器14的功能所規(guī)定的容量過量的存儲器容量(過量的特征單元30)。在處理器14的制造及測試期間,可通過移除可用于處理器14所使用的經(jīng)編程狀態(tài)機的特征單元來“停用”過量的特征單元30。一些實施例可并不使用所有特征單元30塊。在此些實施例中,可停用不使用的塊。經(jīng)停用的塊可不被“激活”及/或“通電”且在刷新循環(huán)期間可不被刷新。
塊130可通過頂部層級路由線與塊內(nèi)路由線之間的連接132耦合到模式辨識處理器14的其它部分。在此實施例中,連接132可為可編程“第4層級連接”,其可編程到任何所期望的功能性。因此,如果塊130提供過量的容量,那么連接132可經(jīng)編程以將塊130與路由線的剩余部分隔離。因此,可編程連接132可“斷開”頂部層級路由線118與塊內(nèi)路由線114之間的連接。塊130可稱為“經(jīng)停用”。另外,可(例如)通過在塊130中設(shè)定適當編程位來將未使用的塊130“斷電”。
相比之下,用以提供用于模式辨識處理器14的經(jīng)編程狀態(tài)機的存儲器容量的其它塊可經(jīng)由頂部層級路由線118及塊內(nèi)路由線114進行存取。舉例來說,如圖21中所示,塊134也通過連接136連接到與經(jīng)停用塊132相同的頂部層級路由線118。如圖21中所示,連接136可為可編程第4層級連接。然而,連接136可經(jīng)編程以(例如)通過允許頂部層級路由線驅(qū)動塊內(nèi)路由線(或反之亦然)而使得能夠存取由塊134提供的存儲器容量。在其它實施例中,可(例如)通過編程塊內(nèi)路由線114與行路由線112之間的連接138而在行層級處及/或(例如)通過編程行路由線112與局部路由線102之間的連接140而在群組層級處停用特征單元30。
此外,在其它實施例中,上文所述的多級層次路由矩陣可基于模式辨識處理器14中所實施的模式匹配功能性而在層級、連接等方面變化。舉例來說,其它實施例可在層次中包含不同數(shù)目個層級,及/或在層級、群組、行及/或塊之間包含不同數(shù)目個連接。另外,其它實施例可包含可用于可編程連接的不同可編程功能、層次中的不同類型的連接及不同點、按程序?qū)⑦B接線斷成多個線的能力及在層次中的不同層級處添加及/或刪除不同功能性的能力。
圖22描繪根據(jù)本發(fā)明的實施例的上文所述多級層次路由矩陣的配置的過程142。在模式辨識處理器14的配置期間,可以任一次序編程層次的每一層級處及每一層級之間的連接。此外,可基于模式辨識處理器14中所期望的特定模式匹配實施方案而手動地或自動地編程此些連接。還應(yīng)了解,矩陣的層級處或?qū)蛹壷g的連接的編程可取決于編程到矩陣的其它層級中的功能性。首先,可編程第一層次層級處的連接(框144)。舉例來說,此可包含編程特征單元30的輸出與局部路由線102及編程特征單元30的輸入與局部路由線102之間的連接,例如編程上文在圖17中所述的連接106。在一些實施例中,來自特征單元30的輸入及/或輸出連接可為不可編程連接且可不被編程。舉例來說,還如上文在圖17中所述,在一個實施例中,輸出連接104可為不可編程連接。
接下來,可編程所述層次的第二層級處的連接(框146)。在一個實施例中,此編程可包含編程行路由線108與群組94之間的輸入連接,如上文在圖18中所述。舉例來說,到特征單元30的輸入與行路由線108之間的連接112可編程為到特征單元30的輸入105的邏輯“或”(或其它函數(shù))。類似地,輸出連接110可經(jīng)編程以提供行路由線與群組94的輸出驅(qū)動選擇96之間的所期望的功能性。
另外,可編程層次路由矩陣的第三層級處的連接(框148)。如上文在圖19中所論述,在一個實施例中,可編程行路由線112與塊內(nèi)路由線114之間的連接116。舉例來說,連接116可經(jīng)編程以提供塊內(nèi)路由線114與行路由線112之間的所期望的功能性以隔離(停用)某些特征單元或提供任一其它可編程功能。
接下來,可編程第四層次層級處的連接(框150)。在上文圖20中所描繪的實施例中,此編程可包含編程塊內(nèi)路由線114與頂部層級路由線118之間的連接。舉例來說,上文在圖20中所示的連接120可經(jīng)編程以提供頂部層級路由線118與塊內(nèi)路由線114之間的所期望的功能性。還如上文在圖21中所論述,在一些實施例中,此編程可包含停用模式辨識處理器14的冗余容量(例如,特征單元)。如圖22中所示,對連接的此編程可繼續(xù)直到路由矩陣的第n層級(框152)。通過編程路由矩陣的連接,模式辨識處理器14可經(jīng)配置以提供特征單元(及狀態(tài)機)之間的所期望的邏輯及下一狀態(tài)路由。如上文所提及,對連接的編程提供對模式辨識處理器14的配置的了解,而又提供不同實施方案的路由靈活性及可變性。