两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

具有增強能力的關(guān)聯(lián)存儲器的制作方法

文檔序號:6465859閱讀:189來源:國知局
專利名稱:具有增強能力的關(guān)聯(lián)存儲器的制作方法
技術(shù)領(lǐng)域
本發(fā)明特別涉及計算機和通信系統(tǒng)、尤其是網(wǎng)絡(luò)路由器和交換機;更 具體地說,本發(fā)明涉及用于使用關(guān)聯(lián)存儲器執(zhí)行查找操作的方法和裝置, 所述關(guān)聯(lián)存儲器包括但不限于二進制和三進制內(nèi)容可尋址存儲器,所述査 找操作可選地包括修改檢索關(guān)鍵字以生成查找字,響應(yīng)于匹配特定條目強 制生成未命中指示,選擇性地確定使用哪些關(guān)聯(lián)存儲器塊來識別結(jié)果,和/ 或傳播錯誤指示。
背景技術(shù)
通信業(yè)正在迅速地發(fā)生著變化,以適應(yīng)新興的技術(shù)和日益增長的用戶 需求。這種對于新應(yīng)用和現(xiàn)有應(yīng)用的增強性能的用戶需求促使通信網(wǎng)絡(luò)和 系統(tǒng)供應(yīng)商采用具有更高速度和容量(例如,更大帶寬)的網(wǎng)絡(luò)和系統(tǒng)。 為了實現(xiàn)這些目標(biāo),許多通信供應(yīng)商常用的方法是使用分組交換技術(shù)。目 前,正越來越多地使用例如因特網(wǎng)協(xié)議(IP)的各種分組技術(shù)來建立和擴 展公共通信網(wǎng)絡(luò)和專用通信網(wǎng)絡(luò)。
例如交換機或路由器的網(wǎng)絡(luò)設(shè)備一般基于一個或多個標(biāo)準(zhǔn)接收、處理 以及轉(zhuǎn)發(fā)或丟棄分組,所述一個或多個分組包括分組使用的協(xié)議類型、分 組地址(例如,源、目的地、群)和所要求服務(wù)的類型或質(zhì)量。此外,一 般對每個分組執(zhí)行一項或多項安全操作。但是在可以執(zhí)行這些操作之前, 一般必須對分組執(zhí)行分組分類操作。
訪問控制列表(ACL)和轉(zhuǎn)發(fā)判決等所需的分組分類是交換機和路由
器設(shè)計中的要求很高的部分。由于日益增大的分組速率和分組分類數(shù)目,
接收分組的分組分類正變得越來越難。例如,ACL要求以順序檢索ACL 規(guī)則的語義,在分組流標(biāo)簽的字段子集上匹配分組。IP轉(zhuǎn)發(fā)要求最長前綴 匹配。
已知的分組分類的方法包括使用定制專用集成電路(ASIC)、定制電 路、軟件或固件控制處理器和關(guān)聯(lián)存儲器,所述關(guān)聯(lián)存儲器包括但不限于 二進制內(nèi)容可尋址存儲器(二進制CAM)和三進制內(nèi)容可尋址存儲器 (三進制CAM或TCAM)。每個二進制CAM的條目一般包括用于匹配 的值,而每個TCAM條目一般包括值和掩碼。關(guān)聯(lián)存儲器并行的將查找字 與所有條目相比較,并一般生成匹配査找字的最高優(yōu)先級的條目的指示。 在二進制CAM中如果查找字和條目值相同則條目匹配査找字,而在 TCAM中如果査找字和條目值中不被掩碼所指示的比特相同,則條目匹配 查找字,其中,被掩碼所指示的比特與比較操作不相關(guān)。
關(guān)聯(lián)存儲器在執(zhí)行分組分類操作中是非常有用的。在執(zhí)行分組分類 中,經(jīng)常主要基于同樣的檢索關(guān)鍵字或其變量使用多個關(guān)聯(lián)存儲器并行地 或串行地執(zhí)行多個查找操作,因為一個查找操作可能與分組轉(zhuǎn)發(fā)有關(guān)而另 一個與服務(wù)質(zhì)量的確定有關(guān)。人們期望關(guān)聯(lián)存儲器中新的功能、特征和機 制支持分組分類和其他的應(yīng)用。
此外,所有的系統(tǒng)都可能發(fā)生錯誤。例如,在某些內(nèi)容可尋址存儲器 中,作為記次失效(failure-in-time)錯誤的結(jié)果,可能發(fā)生數(shù)組奇偶校驗 錯誤,記次失效錯誤是半導(dǎo)體器件中常見的錯誤。此外,可能發(fā)生通信和 其他錯誤?,F(xiàn)有的系統(tǒng)已知能夠檢測某些錯誤并給出信號標(biāo)明己發(fā)生了某 些錯誤條件,但是一般不能提供足夠的信息以識別并隔離錯誤。人們期望 新的功能以執(zhí)行錯誤檢測和識別。

發(fā)明內(nèi)容
本發(fā)明公開了使用關(guān)聯(lián)存儲器執(zhí)行査找操作的方法和裝置。在一個實 施例中,接收檢索關(guān)鍵字,并識別修改映射。基于修改映射修改檢索關(guān)鍵 字以生成查找字?;跂苏易謱Χ鄠€關(guān)聯(lián)存儲器條目執(zhí)行査找操作。在一
個實施例中,接收用戶ID (profile ID)并基于用戶ID識別修改映射,例 如從存儲器中獲取修改映射。在一個實施例中,還接收修改數(shù)據(jù),并通過 基于修改映射以來自所述修改數(shù)據(jù)的數(shù)據(jù)替換檢索關(guān)鍵字中的一個或多個 比特或字節(jié)來修改檢索關(guān)鍵字。
在一個實施例中,每個關(guān)聯(lián)存儲器條目包括第一字段和第二字段,其 中,第一字段包括用于對查找字的匹配操作中的值,第二字段包括指示對 條目的成功匹配應(yīng)當(dāng)或不應(yīng)當(dāng)強制生成未命中結(jié)果的數(shù)據(jù)。在一個實施例 中,當(dāng)執(zhí)行査找操作并且包括強制未命中指示的特定條目被識別為關(guān)聯(lián)存 儲器條目集(例如, 一個或多個條目、關(guān)聯(lián)存儲器塊、關(guān)聯(lián)存儲器等)中 的最高優(yōu)先級匹配條目時,基于該特定條目被識別為強制未命中條件,對 該集合的查找操作的結(jié)果或中間結(jié)果被解釋為未命中結(jié)果(即,不是對特 定條目的成功命中或匹配)。
在一個實施例中, 一般對于關(guān)聯(lián)存儲器的每個輸出,從存儲器中獲取 要選擇的關(guān)聯(lián)存儲器條目子集的指示以確定最終的查找結(jié)果。在一個實施 例中,通過一個或多個下游級聯(lián)關(guān)聯(lián)存儲器傳播所識別的錯誤條件指示。


所附權(quán)利要求具體闡明了本發(fā)明的特征。從下面結(jié)合附圖的詳細(xì)描述 中,可以最好地理解本發(fā)明及其優(yōu)點,在附圖中
圖1A-E是包括一個或多個使用關(guān)聯(lián)存儲器執(zhí)行査找操作的實施例的 各種示例性系統(tǒng)的方框圖。
圖2是包括一個或多個執(zhí)行査找操作的實施例的關(guān)聯(lián)存儲器的方框
圖3A-D圖示了用于一個執(zhí)行查找操作的實施例中的控制的各方面; 圖4A-G圖示了用于一個執(zhí)行査找操作的實施例中的關(guān)聯(lián)存儲器塊的 各方面;以及
圖5A-C圖示了用于一個執(zhí)行查找操作的實施例中的輸出選擇器的各 方面。
具體實施例方式
本發(fā)明公開了使用關(guān)聯(lián)存儲器執(zhí)行查找操作的方法和裝置,所述査找 操作包括但不限于基于修改映射修改關(guān)聯(lián)存儲器內(nèi)的檢索關(guān)鍵字、響應(yīng)于 包括強制未命中指示的最高優(yōu)先級匹配條目強制生成未命中條件、在各個 關(guān)聯(lián)存儲器塊或集或關(guān)聯(lián)存儲器條目庫中選擇以確定査找結(jié)果以及檢測并 傳輸錯誤條件。這里描述的實施例包括各種因素和限制,其中沒有一個因 素和限制是不可或缺的。每個權(quán)利要求獨立地從整體上陳述了本發(fā)明的某 一方面。而且,除了其他以外,描述的某些實施例可包括但不限于系統(tǒng)、 網(wǎng)絡(luò)、集成電路芯片、嵌入式處理器、ASIC、方法和包含指令的計算機可 讀介質(zhì)。下文中描述的實施例實施了本發(fā)明范圍和精神內(nèi)的各個方面和各 種配置,而附示了示例性的和非限制性的配置。
術(shù)語"分組"在這里被用來指所有類型的分組或任何其他的信息或數(shù) 據(jù)單位,包括但不限于固定長度單元和可變長度分組,其中的每一個都可 以被分割為更小的分組或單元,也可以不被分割為更小的分組或單元。術(shù) 語"分組"在這里也用來指分組自身以及分組指示,例如但不限于分組或 分組頭的全部或部分、數(shù)據(jù)結(jié)構(gòu)值、指針或索引、或者分組的任何其他的 部分或標(biāo)識。而且,這些分組可包含一種或多種類型的信息,包括但不限 于語音、數(shù)據(jù)、視頻和音頻信息。術(shù)語"項"在這里被用來指分組或任何 其他的信息或數(shù)據(jù)單位或塊。短語"處理分組"和"分組處理" 一般指的 是基于分組執(zhí)行某些步驟或動作,并且所述某些步驟或動作可以包括修改 和/或轉(zhuǎn)發(fā)分組,也可以不包括修改和/或轉(zhuǎn)發(fā)分組。
術(shù)語"系統(tǒng)"在這里一般被用來描述任何數(shù)目的組件、元件、子系 統(tǒng)、設(shè)備、分組交換元件、分組交換機、路由器、網(wǎng)絡(luò)、計算機和/或通信 設(shè)備或機制,或者這些組件的組合。術(shù)語"計算機"在這里一般被用來描 述任何數(shù)目的計算機,包括但不限于個人計算機、嵌入式處理元件和系
統(tǒng)、控制邏輯、ASIC、芯片、工作站、主機等等。術(shù)語"處理元件"在 這里一般被用來描述任何類型的處理機制或設(shè)備,例如處理器、ASIC、現(xiàn) 場可編程門陣列、計算機等等。術(shù)語"設(shè)備"在這里一般被用來描述任何 類型的機制,包括計算機或系統(tǒng)或其組件。術(shù)語"任務(wù)"和"過程"在這
里一般被用來描述任何類型的運行程序,包括但不限于計算機進程、任 務(wù)、線程、執(zhí)行應(yīng)用、操作系統(tǒng)、用戶進程、設(shè)備驅(qū)動、本地代碼、機器 或其他語言等等,并且可以是交互式的和/或非交互式的、可以在本地和/ 或遠(yuǎn)程執(zhí)行、可以在前臺和/或后臺執(zhí)行、可以在用戶端和/或操作系統(tǒng)地 址空間中執(zhí)行、可以是程序庫和/或孤立應(yīng)用,并且不限于任何具體的存儲 器分區(qū)技術(shù)。附圖中圖示的步驟、連接以及信號和信息的處理包括但不限 于任何方框和流程圖以及消息序列圖,這些步驟、連接以及信號和信息的 處理可以相同的或不同的串行或并行順序執(zhí)行,以及/或者由不同的組件和 /或進程、線程等執(zhí)行,以及/或者經(jīng)由不同的連接執(zhí)行,并且這些步驟、 連接以及信號和信息的處理可以與其他實施例中的其他功能組合,仍然在 本發(fā)明的范圍和精神內(nèi)。
而且,術(shù)語"網(wǎng)絡(luò)"和"通信機制"在這里一般被用來描述一個或多 個網(wǎng)絡(luò)、通信介質(zhì)或通信系統(tǒng)和例如消息傳遞、進程間通信、共享存儲器 等的內(nèi)部通信機制,其中,所述通信介質(zhì)或通信系統(tǒng)包括但不限于因特 網(wǎng)、個人或公共電話、蜂窩的、無線的、衛(wèi)星的、電纜的局域、城域和/或 廣域網(wǎng)絡(luò),電纜的、電氣的連接、總線等等。
術(shù)語"存儲機制"包括任何類型的存儲器、存儲設(shè)備或者用來以任何 格式維持指令或數(shù)據(jù)的其他機制。"計算機可讀介質(zhì)"是一個可擴展術(shù) 語,其包括任何存儲器、存儲設(shè)備、存儲機制和其他存儲和信令機制,所 述其他存儲和信令機制包括例如為網(wǎng)絡(luò)接口卡及其中的緩沖器的接口和設(shè) 備、任何通信設(shè)備與所接收和發(fā)送的信號、以及計算機化的系統(tǒng)可以中 斷、接收和/或發(fā)送的其他當(dāng)前技術(shù)和正在發(fā)展的技術(shù)。術(shù)語"存儲器"包
括任何隨機存取存儲器(RAM)、只讀存儲器(ROM)、閃存、集成電 路和/或其他存儲器組件或元件。術(shù)語"存儲設(shè)備"包括任何固態(tài)存儲介 質(zhì)、磁盤驅(qū)動器、磁盤、網(wǎng)絡(luò)化服務(wù)、磁帶驅(qū)動器和其他存儲設(shè)備。存儲 器和存儲設(shè)備可以存儲將由處理元件和/或控制邏輯執(zhí)行的計算機可讀指 令,以及由處理元件和/或控制邏輯操作的數(shù)據(jù)。術(shù)語"數(shù)據(jù)結(jié)構(gòu)"是可擴 展的術(shù)語,其指任何數(shù)據(jù)元素、變量、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)庫和/或一種或多種 組織方案,所述方案可以被應(yīng)用到數(shù)據(jù),來使得便于解釋該數(shù)據(jù),或者便
于對數(shù)據(jù)執(zhí)行操作,所述方案例如但不限于存儲單元(memory location),或者設(shè)備、集合、隊列、樹、堆、列表、鏈接表、數(shù)組、表、 指針等。數(shù)據(jù)結(jié)構(gòu)一般維持在存儲機制內(nèi)。
術(shù)語"指針"和"鏈接"在這里一般被用來識別某些用于引用或者識 別另一個元件、組件或其他實體的機制,這些可以包括,但又不限于對存 儲器或者其他存儲機制或者其中的存儲單元、數(shù)據(jù)結(jié)構(gòu)中的索引、值等的 引用。術(shù)語"關(guān)聯(lián)存儲器"指任何類型已知的或者將來會開發(fā)出來的關(guān)聯(lián) 存儲器,包括但不限于二進制和三進制內(nèi)容可尋址存儲器、哈希表、TRIE 和其他數(shù)據(jù)結(jié)構(gòu)等。
術(shù)語"一個實施例"在這里用來指一個具體實施例,其中每次引用 "一個實施例"可以指不同的實施例,并且在這里使用該術(shù)語描述相關(guān)聯(lián) 的特征、元素和/或限制時,盡管一個實施例一般可以包括所有這些特征、 元素和/或限制,但是反復(fù)使用該術(shù)語并不建立每個實施例都必須包括的相 關(guān)聯(lián)特征、元素和/或限制的累加集合。另外,短語"用于xxx的裝置"一 般包括計算機可讀介質(zhì),所述介質(zhì)包含有用于執(zhí)行xxx的計算機可執(zhí)行指
另外,術(shù)語"第一"、"第二"等在這里一般被用來表示不同的單元 (例如,第一元件、第二元件)。這里使用這些術(shù)語并不必然意味著具有 順序,例如一個單元或者事件在另一個之前發(fā)生或者到來,而是提供了一 種區(qū)分具體單元的機制。此外,名詞單數(shù)時態(tài)的使用是非限制性的,其使 用一般包括一個或多個具體的項,而不是剛好一個(例如,使用詞"存儲 器" 一般指一個或多個存儲器,而不用必須指定"存儲器或多個存儲 器"、或"一個或多個存儲器"、或"至少一個存儲器"等)。而且,短 語"基于x"和"響應(yīng)于x"被用來指出項x的最小集合,從該項x的最 小集合中可導(dǎo)出或?qū)е履呈禄蚰澄?,其?x"是可擴展的,而且沒有必 要描述在其上執(zhí)行操作等的項的完整列表。此外,短語"耦合到"被用來 指示兩個元件或設(shè)備之間的某種級別的直接連接或間接連接,耦合的一個 設(shè)備或者多個設(shè)備修改或不修改所耦合的信號或所傳輸?shù)男畔?。術(shù)語"子 集"被用來指示一組集合的所有元素或不到所有的元素。而且,術(shù)語"或
者"在這里被用來識別一個或多個連接項、包括所有連接項的可替代選 擇。
本發(fā)明公開了使用關(guān)聯(lián)存儲器執(zhí)行査找操作的方法和裝置,所述查找 操作包括但不限于基于修改映射修改關(guān)聯(lián)存儲器內(nèi)的檢索關(guān)鍵字、響應(yīng)于 包括強制未命中指示的最高優(yōu)先級匹配條目強制生成未命中條件、在各個 關(guān)聯(lián)存儲器塊或集或關(guān)聯(lián)存儲器條目庫中選擇以確定查找結(jié)果以及檢測并 傳輸錯誤條件。在一個實施例中,每個塊從本地存儲器中獲取修改映射, 并基于該映射和接收的修改數(shù)據(jù)修改所接收的檢索關(guān)鍵字。在一個實施例 中,每個關(guān)聯(lián)存儲器條目包括指示對條目的成功匹配應(yīng)當(dāng)或不應(yīng)當(dāng)強制生 成未命中結(jié)果的字段。在一個實施例中,從存儲器中獲取在具體查找操作 中使用哪些關(guān)聯(lián)存儲器集或庫或條目的指示。
一個實施例通過識別、處理和傳送錯誤執(zhí)行錯誤檢測和處理,所述錯 誤可包括但不限于關(guān)聯(lián)存儲器條目中的數(shù)組奇偶校驗錯誤和通信錯誤,所 述通信錯誤例如是協(xié)議錯誤和輸入端口上的接口錯誤。數(shù)組奇偶校驗錯誤 的發(fā)生可能是記次失效錯誤的結(jié)果,所述記次失效錯誤一般存在于半導(dǎo)體 器件中。 一個實施例包括一種機制,所述機制在后臺掃描關(guān)聯(lián)存儲器條 目,并且識別出任何檢測的錯誤,并將其發(fā)送回控制處理器,以重寫或更 新有缺陷的條目。在一個實施例中,某些識別出的錯誤或接收的錯誤條件 是致命性的,在其中不能執(zhí)行任何處理。例如在一個實施例中,致命錯誤 導(dǎo)致異常中斷條件。作為響應(yīng),該器件停止進行中的査找操作,并僅僅轉(zhuǎn) 發(fā)錯誤和可能未命中信號。 一般地說,在包括關(guān)聯(lián)存儲器的系統(tǒng)中,如果 進行中的査找操作未被中斷,則在查找操作生成其結(jié)果時生成錯誤和可能 未命中信號,以維持器件之間的時序。
在一個實施例中,傳輸包括級聯(lián)或連接的關(guān)聯(lián)存儲器設(shè)備、指示任何 錯誤類型的錯誤狀態(tài)消息以及其對應(yīng)源的信息以指示到下一個設(shè)備和/或控 制處理器的錯誤狀態(tài)。另外,傳送的信號可指示并在接收設(shè)備中生成異常 中斷條件。在一個實施例中,接收設(shè)備不執(zhí)行其下一個操作或接收指令, 或者接收設(shè)備可能中斷其當(dāng)前操作或指令。而且,接收設(shè)備可能延時,也 可能不延時這樣的時間量以盡可能地維持操作的事務(wù)序列的時序,所述時
間量對應(yīng)于接收設(shè)備的處理執(zhí)行或完成該操作或指令所需的時間。
圖1A-E是各種示例性系統(tǒng)和其配置的方框圖,這些示例性系統(tǒng)包括 使用關(guān)聯(lián)存儲器執(zhí)行査找操作的一個或多個實施例。首先,圖1圖示了系 統(tǒng)的一個實施例,所述系統(tǒng)可以是路由器或者其他通信或計算機系統(tǒng),用 于執(zhí)行查找操作以產(chǎn)生可用在分組處理中的結(jié)果。在一個實施例中,控制
邏輯110經(jīng)由信號111對一個或多個關(guān)聯(lián)存儲器115進行編程和更新,所 述一個或多個關(guān)聯(lián)存儲器115例如但不限于一個或多個關(guān)聯(lián)存儲器設(shè)備、 庫(bank)和/或關(guān)聯(lián)存儲器條目集,所述關(guān)聯(lián)存儲器條目可以是也可以不 是相同的關(guān)聯(lián)存儲器設(shè)備和/或庫的一部分。在一個實施例中,控制邏輯 110還經(jīng)由信號123對存儲器120編程。在一個實施例中,控制邏輯110 包括定制電路,所述定制電路例如但不限于分立電路、ASIC、存儲器設(shè) 備、處理器等。
在一個實施例中,分組處理器105接收分組101。除了其他操作(例 如,分組路由、安全等)之外,分組處理器105 —般基于一個或多個接收 的分組101中的一個或多個字段以及可能從存儲在數(shù)據(jù)結(jié)構(gòu)中或從其他來 源獲得的信息,生成包括但不限于一種或多種分組流標(biāo)識符的一個或多個 項。分組處理器105 —般產(chǎn)生査找值103,查找值103被提供給控制邏輯 110以向一個或多個關(guān)聯(lián)存儲器115提供控制和數(shù)據(jù)信息(例如,査找 字、修改數(shù)據(jù)、用戶(profile) ID等), 一個或多個關(guān)聯(lián)存儲器115執(zhí)行 查找操作并生成一個或多個結(jié)果117。在一個實施例中,結(jié)果117被存儲 器120用來產(chǎn)生結(jié)果125。然后,控制邏輯110基于結(jié)果117和/或結(jié)果 125,轉(zhuǎn)發(fā)結(jié)果107到分組處理器105。作為響應(yīng), 一個或多個接收的分組 被分組處理器105操作和轉(zhuǎn)發(fā),如分組109所指示的那樣。注意,結(jié)果 117、 125和107可包括錯誤條件的指示。
圖1B圖示了一個使用關(guān)聯(lián)存儲器執(zhí)行査找操作的實施例,所述查找 操作包括但不限于基于修改映射修改關(guān)聯(lián)存儲器內(nèi)的檢索關(guān)鍵字、響應(yīng)于 包括強制未命中指示的最高優(yōu)先級匹配條目強制生成未命中條件、在各個 關(guān)聯(lián)存儲器塊或集或關(guān)聯(lián)存儲器條目庫中選擇以確定查找結(jié)果以及檢測并 傳輸錯誤條件。控制邏輯130經(jīng)由信號132對一個或多個關(guān)聯(lián)存儲器136
編程。另外,控制邏輯130向一個或多個關(guān)聯(lián)存儲器136提供控制和數(shù)據(jù) 信息(例如,査找字、修改數(shù)據(jù)、用戶ID等), 一個或多個關(guān)聯(lián)存儲器 136執(zhí)行査找操作以生成結(jié)果和錯誤信號134,結(jié)果和錯誤信號134由控 制邏輯130接收。
圖1C圖示了一個使用關(guān)聯(lián)存儲器執(zhí)行查找操作的實施例,所述查找 操作包括但不限于基于修改映射修改關(guān)聯(lián)存儲器內(nèi)的檢索關(guān)鍵字、響應(yīng)于 包括強制未命中指示的最高優(yōu)先級匹配條目強制生成未命中條件、在各個 關(guān)聯(lián)存儲器塊或集或關(guān)聯(lián)存儲器條目庫中選擇以確定查找結(jié)果以及檢測并 傳播錯誤條件。控制邏輯140經(jīng)由信號141-143對關(guān)聯(lián)存儲器146-148編 程。另外,控制邏輯140向關(guān)聯(lián)存儲器146-148提供控制和數(shù)據(jù)信息(例 如,査找字、修改數(shù)據(jù)、用戶ID等),關(guān)聯(lián)存儲器146-148執(zhí)行査找操作 以生成結(jié)果和錯誤信號144-145。如圖所示每個累進級轉(zhuǎn)發(fā)錯誤消息到下 一級關(guān)聯(lián)存儲器或控制邏輯140。例如,關(guān)聯(lián)存儲器148經(jīng)由信號145轉(zhuǎn) 發(fā)錯誤指示到控制邏輯140,其中,錯誤指示經(jīng)由信號144接收。
而且,在一個實施例中,在器件140和146-148之間傳送的消息141-145中包括同步比特字段,其值以預(yù)定的周期間隔設(shè)置或改變,從而使得 每個器件140、 146-148都可預(yù)期該變化。 一個實施例使用單個同歩比特, 如果該比特在到器件146-148的請求或輸入數(shù)據(jù)141-145中設(shè)置,則器件 146-148將在對應(yīng)的回復(fù)或輸出數(shù)據(jù)143-145中設(shè)置該比特。例如,在一個 實施例中,控制處理器或邏輯140在其請求數(shù)據(jù)141中周期性地設(shè)置同步 比特,也即每八個請求一次??刂铺幚砥骰蜻壿?40也在回復(fù)數(shù)據(jù)145中 監(jiān)視同步比特。如果有任意種類的錯誤改變了控制處理器或邏輯140與關(guān) 聯(lián)存儲器146-148之間的請求-回復(fù)關(guān)聯(lián)(或事務(wù)時序),則控制處理器或 邏輯140可檢測到該錯誤,并從該錯誤恢復(fù)(通過刷新流水線等)。
以這種方式,器件尤其是那些作為事務(wù)序列的一部分的器件,可以彼 此之間保持同步。當(dāng)例如發(fā)生錯誤條件時,如傳送的指令信號中的未檢測 出的奇偶校驗錯誤(例如,奇偶校驗錯誤數(shù)超過了錯誤檢測機制),器件 之間的再同步是很重要的。存在這樣的可能性,即指令中的奇偶校驗錯誤 未被檢測出,且完全改變了事務(wù)時序。同樣地,可能存在其他類型的"未
知"錯誤,使得控制處理器或邏輯與關(guān)聯(lián)存儲器鏈之間脫離同步。
圖ID圖示了一個使用關(guān)聯(lián)存儲器執(zhí)行查找操作的實施例,所述查找 操作包括但不限于基于修改映射修改關(guān)聯(lián)存儲器內(nèi)的檢索關(guān)鍵字、響應(yīng)于 包括強制未命中指示的最高優(yōu)先級匹配條目強制生成未命中條件、在各個 關(guān)聯(lián)存儲器塊或集或關(guān)聯(lián)存儲器條目庫中選擇以確定査找結(jié)果以及檢測并
傳播錯誤條件??刂七壿?50經(jīng)由信號151-153對關(guān)聯(lián)存儲器156-158編 程。另外,控制邏輯150向關(guān)聯(lián)存儲器156-158提供控制和數(shù)據(jù)信息(例 如,查找字、修改數(shù)據(jù)、用戶ID等),關(guān)聯(lián)存儲器156-158執(zhí)行查找操作 以生成結(jié)果和錯誤信號154-155,結(jié)果和錯誤信號154-155被傳送到控制邏 輯150。
圖1E圖示了系統(tǒng)180,系統(tǒng)180可以是路由器或者其他通信或計算機 系統(tǒng)的一部分,在一個實施例中,系統(tǒng)180用于當(dāng)執(zhí)行查找操作時在多個 關(guān)聯(lián)存儲器單元之間分發(fā)條目并選擇性地使能部分的關(guān)聯(lián)存儲器單元。在 一個實施例中,系統(tǒng)180包括處理元件181、存儲器182、存儲設(shè)備183、 一個或多個關(guān)聯(lián)存儲器184以及連接到其他設(shè)備的接口 185,這些組件經(jīng) 由一種或多種通信機制189 (為了說明目的,圖示為總線)耦合在一起。
系統(tǒng)180的各種實施例可包括或多或少的元件。系統(tǒng)180的操作一般 由處理元件181使用存儲器182和存儲設(shè)備183控制,以執(zhí)行一個或多個 任務(wù)或進程,例如使用一個或多個關(guān)聯(lián)存儲器184編程以及執(zhí)行査找操 作。存儲器182是一種類型的計算機可讀介質(zhì), 一般包括隨機存取存儲器 (RAM)、只讀存儲器(ROM)、閃存、集成電路和/或其他存儲器組 件。根據(jù)本發(fā)明的一個實施例,存儲器182—般存儲要被處理元件181執(zhí) 行的計算機可執(zhí)行指令和/或被處理元件181操作的數(shù)據(jù)以實現(xiàn)功能。存儲 設(shè)備183是另一種類型的計算機可讀介質(zhì), 一般包括固態(tài)存儲介質(zhì)、磁盤 驅(qū)動器、磁盤、網(wǎng)絡(luò)化服務(wù)、磁帶驅(qū)動器和其他存儲設(shè)備。根據(jù)本發(fā)明的 一個實施例,存儲設(shè)備183 —般存儲要被處理元件181執(zhí)行的計算機可執(zhí) 行指令和/或被處理元件181操作的數(shù)據(jù)以實現(xiàn)功能。
在一個實施例中,處理元件181向一個或多個關(guān)聯(lián)存儲器184提供控 制和數(shù)據(jù)信息(例如,查找字、修改數(shù)據(jù)、用戶ID等), 一個或多個關(guān)
聯(lián)存儲器184執(zhí)行查找操作以生成查找結(jié)果和可能錯誤指示,査找結(jié)果和
可能錯誤指示被處理元件181接收并使用以及/或者經(jīng)由接口 185被傳送到 其他設(shè)備。
圖2圖示了用在一個使用關(guān)聯(lián)存儲器執(zhí)行查找操作的實施例中的關(guān)聯(lián) 存儲器200,所述查找操作包括但不限于基于修改映射修改關(guān)聯(lián)存儲器內(nèi) 的檢索關(guān)鍵字、響應(yīng)于包括強制未命中指示的最高優(yōu)先級匹配條目強制生 成未命中條件、在各個關(guān)聯(lián)存儲器塊或集或關(guān)聯(lián)存儲器條目庫中選擇以確 定查找結(jié)果以及檢測并傳播錯誤條件。如圖所示,控制邏輯210接收可包 括編程信息的輸入控制信號202??刂七壿?10可依次地更新其內(nèi)部的信 息和數(shù)據(jù)結(jié)構(gòu),對關(guān)聯(lián)存儲器塊218-219和/或輸出選擇器231-232編程/更 新。注意,在一個實施例中,每個關(guān)聯(lián)存儲器塊218-219包括一個或多個 關(guān)聯(lián)存儲器集或關(guān)聯(lián)存儲器條目庫以及用于執(zhí)行査找操作的邏輯或電路。
在一個實施例中,輸入數(shù)據(jù)210被關(guān)聯(lián)存儲器200接收,并被分發(fā)至 關(guān)聯(lián)存儲器塊218-219,并且在級聯(lián)配置中可能被轉(zhuǎn)發(fā)至其他的下游關(guān)聯(lián) 存儲器,其中,輸入數(shù)據(jù)210可包括但不限于檢索關(guān)鍵字和修改數(shù)據(jù)。另 外,輸入控制信息202被控制邏輯接收,并且在級聯(lián)配置中可能被轉(zhuǎn)發(fā)至 其他的下游關(guān)聯(lián)存儲器,其中,輸入控制信息202可包括但不限于用戶ID (例如,值)、指令、編程信息。另外,在一個實施例中,在級聯(lián)配置中 從前級的關(guān)聯(lián)存儲器接收前級的查找結(jié)果和/或錯誤指示或者由控制邏輯 210從其他設(shè)備接收前級的査找結(jié)果和/或錯誤指示。注意,在一個實施例 中,輸入數(shù)據(jù)201、輸入控制202、前級結(jié)果和錯誤203和/或其中的一部 分被直接傳送到關(guān)聯(lián)存儲器塊218-219和/或輸出選擇器231 -232。
控制邏輯210可能處理接收的信息,并且/或者經(jīng)由塊控制信號211-212將接收的信息轉(zhuǎn)發(fā)至關(guān)聯(lián)存儲器塊218-219,以及經(jīng)由選擇器控制信號 和前級結(jié)果215 (—般包括接收的用戶ID)將接收的信息轉(zhuǎn)發(fā)至輸出選擇 器231-232。另外,控制邏輯210可基于在接收的信息中檢測到的錯誤或 者響應(yīng)于接收的錯誤條件指示,生成錯誤信號216。注意,在一個實施例 中,控制邏輯210僅僅分割或重新生成整個接收的輸入控制202和可選前 級結(jié)果和錯誤203的一部分,作為選擇器控制信號和前級結(jié)果信號215和/
或錯誤信號216。另外,控制邏輯210可以啟動異常中斷操作,其中,由
于檢測到的或接收到的錯誤條件通知,不會發(fā)生査找操作。
在一個實施例中,控制邏輯210識別這樣的數(shù)據(jù),所述數(shù)據(jù)代表了使 能哪些關(guān)聯(lián)存儲器塊218-219、每個輸出選擇器231-232應(yīng)當(dāng)考慮哪些關(guān)聯(lián) 存儲器塊218-219以確定其査找結(jié)果、和/或每個關(guān)聯(lián)存儲器塊218-219在 修改輸入檢索關(guān)鍵字時應(yīng)當(dāng)使用的修改映射。在一個實施例中,基于接收 的輸入控制信息202 (例如,用戶ID或其他指示),從一個或多個存儲 器、數(shù)據(jù)結(jié)構(gòu)和/或其他存儲機制中獲取該數(shù)據(jù)。然后,該信息經(jīng)由塊控制 信號211-212被適當(dāng)?shù)貍魉偷疥P(guān)聯(lián)存儲器塊218-219,以及/或者經(jīng)由選擇 器控制信號和前級結(jié)果信號215被傳送到輸出選擇器231-232。
在一個實施例中,每個關(guān)聯(lián)存儲器塊218-219經(jīng)由信號201接收檢索 關(guān)鍵字和可能修改數(shù)據(jù),并且經(jīng)由塊控制信號211-212接收可能控制信 息。然后,每個使能的關(guān)聯(lián)存儲器塊218-219基于接收的檢索關(guān)鍵字執(zhí)行 查找操作,査找操作可包括基于接收的修改數(shù)據(jù)和/或修改映射,通過修改 檢索關(guān)鍵字的某些部分生成查找字。每個關(guān)聯(lián)存儲器218-219 —般生成結(jié) 果228-229,每個結(jié)果228-229被傳送到輸出選擇器231-232中的每一個。 在一個實施例中,每個未被使能的關(guān)聯(lián)存儲器塊218-219生成未命中信號 作為其相應(yīng)結(jié)果228-229。在一個實施例中,輸出選擇器231-232接收未被 使能的關(guān)聯(lián)存儲器塊218-219的指示。
輸出選擇器231估計關(guān)聯(lián)存儲器結(jié)果228-229以產(chǎn)生結(jié)果240。在一 個實施例中,每個輸出選擇器具有對應(yīng)的已識別出的關(guān)聯(lián)存儲器結(jié)果228-229的靜態(tài)或動態(tài)的子集,以估計確定結(jié)果240。在一個實施例中,該對 應(yīng)子集的標(biāo)識經(jīng)由選擇器控制信號215被提供給每個輸出選擇器231-232。在一個實施例中,每個輸出選擇器231-232經(jīng)由選擇器控制信號215 接收用戶ID,并基于接收的用戶ID執(zhí)行存儲器查找操作,以獲取具體關(guān) 聯(lián)存儲器結(jié)果228-229的指示來估計確定結(jié)果240。
而且,在一個實施例中,結(jié)果240經(jīng)由一個或多個輸出總線240輸 出,所述一個或多個輸出總線240中的每一個連接到關(guān)聯(lián)存儲器芯片的一 個或多個管腳的不同集合。在一個實施例中,所使用的輸出總線數(shù)目和它
們到輸出選擇器231-232的連接是靜態(tài)的,而在另一個實施例中,所使用 的輸出總線數(shù)目和它們到輸出選擇器231-232的連接是可配置的,例如, 在初始化時或者對于每次或多個査找。在一個實施例中,輸出選擇器231-232接收輸出總線指示,并使用輸出總線指示來確定使用哪一個或哪幾個 輸出總線。例如,該判決可包括但不限于直接解釋接收的輸出總線指示、 基于接收的輸出總線指示執(zhí)行存儲器讀操作等等。在一個實施例中,輸出 選擇器231-232基于用戶ID執(zhí)行存儲器存取操作以確定對于特定査找操作 使用哪一個或哪幾個輸出總線。從而,取決于配置,可以選擇性地使用單 個或多個輸出總線/管腳以傳送結(jié)果240,并且可能基于同時接收的多個結(jié) 果相對于所需要的管腳數(shù)之間的平衡而作出該判決。
關(guān)聯(lián)存儲器200提供了許多強大功能以同時產(chǎn)生一個或多個結(jié)果 240。例如,在一個實施例中,控制邏輯210基于接收的用戶ID識別使能 一個或多個關(guān)聯(lián)存儲器塊中的哪些,然后將其使能,并向輸出選擇器231 提供用戶ID以在多個關(guān)聯(lián)存儲器塊218-219之間選擇査找結(jié)果。每個關(guān)聯(lián) 存儲器塊218-219可基于用戶ID接收/識別修改映射,該修改映射對于該 關(guān)聯(lián)存儲器塊可能是唯一的。然后,該修改映射可與接收的修改數(shù)據(jù)一起 被用來改變接收的檢索關(guān)鍵字中的一部分,以產(chǎn)生被用于查找操作中的實 際的査找字。同樣地,如果對應(yīng)的條目被識別為匹配查找字的最高優(yōu)先級 條目,則對于對應(yīng)的關(guān)聯(lián)存儲器塊218-219,可以強制未命中指示對這些 條目編程以生成未命中結(jié)果。這些被使能的關(guān)聯(lián)存儲器218-219中的每一 個一般生成這樣的結(jié)果(例如,未命中、命中最高優(yōu)先級匹配條目或其位 置被識別),所述結(jié)果一般被傳送至輸出選擇器231-232中的每一個。注 意,在一個實施例中,這些結(jié)果只被傳送到這樣的特定輸出選擇器231-232,所述特定輸出選擇器231-232將在選擇接收自關(guān)聯(lián)存儲器塊218-219 的各個最高優(yōu)先級結(jié)果和來自前級關(guān)聯(lián)存儲器的其他可能査找結(jié)果時,考 慮該具體結(jié)果。另外,在某些配置中,多個關(guān)聯(lián)存儲器200被以其他方法 級聯(lián)或耦合,從而使得來自一個或多個級的結(jié)果可依賴于前級結(jié)果,從而 可編程使得跨過多個關(guān)聯(lián)存儲器200執(zhí)行查找。由關(guān)聯(lián)存儲器200提供的 這些和其他的構(gòu)造及其配置使用一級或多級關(guān)聯(lián)存儲器200,提供了強大
的可編程査找檢索能力和結(jié)果選擇機制,其中,每個關(guān)聯(lián)存儲器200包括
N個關(guān)聯(lián)存儲器塊218-219和M個輸出選擇器231-232。在一個實施例 中,在各個關(guān)聯(lián)存儲器200中N和M的實際值可以不同。
圖3A圖示了用在一個實施例中的關(guān)聯(lián)存儲器的控制300 (可以對應(yīng) 于圖2的控制邏輯210,也可以不對應(yīng)于圖2的控制邏輯210)。如圖所 示,控制300包括控制邏輯310和存儲器311。在一個實施例中,接收編 程信號303,并且作為響應(yīng),更新存儲器311中的一個或多個數(shù)據(jù)結(jié)構(gòu)。 另外,控制邏輯生成編程信號318。在一個實施例中,編程318與編程信 號303相同,從而可使用物理連接,而不是經(jīng)過控制邏輯310傳輸。編程 過程的一個實施例如圖3C所示,該處理開始于過程框380。然后,處理前 進到過程框382,在其中接收編程信號。下一步,在過程框384,更新數(shù) 據(jù)結(jié)構(gòu)和其他元件(例如,關(guān)聯(lián)存儲器塊、輸出選擇器等)。過程框386 指示處理完成。
返回圖3A,在執(zhí)行查找操作時,控制邏輯310接收輸入數(shù)據(jù)301、輸 入控制302和可選的前級結(jié)果和錯誤304 (如在級聯(lián)的關(guān)聯(lián)存儲器配置 中)。作為響應(yīng),引用存儲器311中的一個或多個數(shù)據(jù)結(jié)構(gòu)??刂七壿?310生成輸入數(shù)據(jù)314、塊控制信號315、輸出選擇器控制信號和(可選 地)前級結(jié)果316,還可能生成錯誤信號319,錯誤信號319指示檢測的 錯誤條件或接收的錯誤指示符。在一個實施例中,輸入數(shù)據(jù)314與輸入數(shù) 據(jù)301相同,從而可使用物理連接,而不是經(jīng)過控制邏輯310傳輸。
圖3B圖示了用在一個實施例中的一種數(shù)據(jù)結(jié)構(gòu)集。對于使用的每個 用戶ID 321,以關(guān)聯(lián)存儲器塊使能指示符325對使能數(shù)組320編程。每個 關(guān)聯(lián)存儲器塊使能指示符325標(biāo)識對于給定查找操作使能哪些關(guān)聯(lián)存儲器 塊。從而,基于經(jīng)由輸入控制302 (圖3A)接收的用戶ID321,可以從存 儲器311 (圖3A)中獲取使能數(shù)組320,然后使能數(shù)組320可被用來生成 包括在塊控制信號315 (圖3A)中的關(guān)聯(lián)存儲器塊使能信號。在一個實施 例中,關(guān)聯(lián)存儲器塊使能指示符325是位圖數(shù)據(jù)結(jié)構(gòu),而在另一個實施例 中,關(guān)聯(lián)存儲器塊使能指示符325是列表、集合、數(shù)組或任何其他的數(shù)據(jù) 結(jié)構(gòu)。
用輸出選擇器ID 335對輸出選擇器數(shù)組330編程,輸出選擇器ID 335 用于標(biāo)識對于每個元組(tuple)(用戶ID 331、關(guān)聯(lián)存儲器塊ID 332)是 哪個輸出選擇器,所述輸出選擇器例如但不限于輸出選擇器231-232 (圖 2)。從而,基于經(jīng)由輸入控制302 (圖3A)接收的用戶ID 331,對于每 個關(guān)聯(lián)存儲器塊ID 332可識別出輸出選擇器ID 335。在一個實施例中,輸 出選擇器ID 335是數(shù)值標(biāo)識符,而在另一個實施例中,輸出選擇器ID335 是任意值或數(shù)據(jù)結(jié)構(gòu)。
對于每個元組(用戶ID341、輸出選擇器ID 342)以修改映射345對 修改映射數(shù)組340編程。從而,基于經(jīng)由輸入控制302 (圖3A)接收的用 戶ID 341,對于每個輸出選擇器ID 342可識別出修改映射345。在一個實 施例中,每個修改映射是這樣的數(shù)據(jù)結(jié)構(gòu),所述數(shù)據(jù)結(jié)構(gòu)標(biāo)識如何以接收 的修改數(shù)據(jù)修改接收的檢索關(guān)鍵字。
圖3D圖示了用在一個實施例中的用于啟動?xùn)苏也僮鞯奶幚怼L幚黹_ 始于過程框360,并前進到過程框362,在過程框362接收輸入數(shù)據(jù)和控 制信號。下一步,在過程框364,接收任何前級結(jié)果和錯誤指示。如在過 程框366所確定的,如果應(yīng)當(dāng)執(zhí)行異常中斷操作,例如但不限于響應(yīng)于接 收到的致命錯誤指示或識別出的致命錯誤指示,則處理前進到過程框374
(將在下文中論述)。否則,在過程框368,基于用戶ID接收使能位圖、 輸出選擇器配置和修改映射。下一步,在過程框370,基于獲取和接收的 信息,將數(shù)據(jù)和控制信號轉(zhuǎn)發(fā)至關(guān)聯(lián)存儲器塊和輸出選擇器。如在過程框 372所確定的,如果識別出錯誤條件或已接收到錯誤條件,則在過程框 374,生成或轉(zhuǎn)發(fā)錯誤指示,所述錯誤指示一般包括錯誤類型和其來源的 指示。過程框376指示處理完成。
圖4A圖示了用在一個實施例中的關(guān)聯(lián)存儲器塊400。關(guān)聯(lián)存儲器塊 400 —般包括控制邏輯410與關(guān)聯(lián)存儲器條目、全局掩碼寄存器(global mask registers)、運行邏輯和優(yōu)先級編碼器412 (例如,對接收的查找字 執(zhí)行關(guān)聯(lián)存儲器匹配操作的元件)。在一個實施例中,關(guān)聯(lián)存儲器條目的 集合被歸集為關(guān)聯(lián)存儲器條目庫。在一個實施例中,接收編程信號401, 并且作為響應(yīng),更新方框412中的一個或多個關(guān)聯(lián)存儲器條目和/或全局掩
碼寄存器。在一個實施例中,關(guān)聯(lián)存儲器塊400對應(yīng)于一個關(guān)聯(lián)存儲器條 目集或庫以及一種對該關(guān)聯(lián)存儲器條目集或庫執(zhí)行查找操作以產(chǎn)生一個或
多個結(jié)果的機制。在一個實施例中,關(guān)聯(lián)存儲器塊400中不包括掩碼寄存 器°
而且,關(guān)聯(lián)存儲器塊400的一個實施例包括存儲配置信息的存儲器 413,這樣可允許關(guān)聯(lián)存儲器塊400從存儲器413獲取信息,而不是從另 外的來源處接收信息。例如,在一個實施例中,修改映射數(shù)據(jù)(例如,圖 3B的修改映射345)或其他信息被編程進存儲器413中。然后,關(guān)聯(lián)存儲 器塊400例如基于接收的用戶ID (例如,而不是接收修改映射信號404) 獲取修改映射信息。
另外,在一個實施例中,接收檢索關(guān)鍵字402、修改數(shù)據(jù)403、修改 映射404、使能信號405、全局掩碼使能信號406和全局掩碼選擇信號 407。響應(yīng)于執(zhí)行査找操作和/或檢測錯誤條件,例如一個關(guān)聯(lián)存儲器條目 中的奇偶校驗故障,生成結(jié)果和錯誤指示411。在一個實施例中,在后臺 檢查關(guān)聯(lián)存儲器條目的奇偶校驗錯誤。聯(lián)系圖4B-4G進一步描述了在一個 實施例中這些信號和信息的使用。
轉(zhuǎn)到圖4B, 一個實施例包括用于對關(guān)聯(lián)存儲器條目416的查找操作中 的多個全局掩碼寄存器415。全局掩碼使能信號406使能全局掩碼寄存器 的使用,而全局掩碼選擇407標(biāo)識對于每個關(guān)聯(lián)存儲器條目應(yīng)用多個掩碼 中的哪一個。査找字414被應(yīng)用到關(guān)聯(lián)存儲器條目416,并且可能使用一 個或多個存儲在全局掩碼寄存器415中的全局掩碼,以生成命中/未命中指 示417與可能命中位置418和/或錯誤指示419, 417、 418和/或419被直接 或非直接地合并進結(jié)果和錯誤指示411中(圖4A)。
圖4C圖示了用在一個實施例中的錯誤指示420。如圖所示,錯誤指示 420包括錯誤指示421,錯誤指示421用于標(biāo)識其中是否有錯誤指示或可 能的錯誤指示的數(shù)目。對于任何識別的錯誤指示或接收的錯誤指示,在一 個或多個錯誤描述符422-423中包括有每個錯誤的編碼描述。在一個實施 例中,位圖被用于一個或多個錯誤描述符422-423,其中,每個比特代表 可能的錯誤條件,且比特值指示對應(yīng)的錯誤是否已被識別(包括從在先的 組件或級接收)。在一個實施例中,每個錯誤描述符422-423對應(yīng)于不同 的組件、接口或前級。在一個實施例中,錯誤指示420被其他組件用于傳 送錯誤條件或其不足。
圖4D圖示了用在一個實施例中的關(guān)聯(lián)存儲器條目430。如圖所示, 關(guān)聯(lián)存儲器條目430包括值431、可選掩碼432、強制未命中指示433、有 效/無效標(biāo)記434和錯誤檢測值435。錯誤檢測值435可以是一個或多個奇 偶校驗比特、循環(huán)冗余校驗和或者對應(yīng)于任何其他用于檢測數(shù)據(jù)損壞錯誤 的機制的值。在一個實施例中,值431的寬度可配置。在一個實施例中, 該可配置寬度包括80比特、160比特和320比特。在一個實施例中,例如 在二進制內(nèi)容可尋址存儲器中,不包括掩碼字段432。在一個實施例中, 掩碼字段432的寬度是可變的,并且一般與值字段431的寬度相匹配,盡 管這一點不作要求。在一個實施例中,字段431-435存儲在單個物理存儲 器中;而在另一個實施例中,字段431-435存儲在多個物理存儲器中。
圖4E圖示了用在一個實施例中的基于修改映射和修改信息修改檢索 關(guān)鍵字的機制。如圖所示,修改映射比特443被用來控制選擇器440,選 擇器440選擇檢索關(guān)鍵字單位(例如, 一個或多個比特、字節(jié)等)441或 者修改數(shù)據(jù)單位442中的任一個作為査找單位445的值,在查找操作中, 查找單位445 —般是用在匹配關(guān)聯(lián)存儲器條目中的實際查找字的一部分。
圖4F圖示了用在一個實施例中的基于修改映射450和修改數(shù)據(jù)454 修改檢索關(guān)鍵字456的機制。在一個實施例中,修改映射450對應(yīng)于修改 映射345 (圖3B)。如圖4F所示,修改映射450包括源部分451和目的 地部分452。參照圖4F靠下的部分,修改數(shù)據(jù)454包括四個字節(jié),檢索關(guān) 鍵字456包括八個字節(jié)。修改映射450的源部分451標(biāo)識修改數(shù)據(jù)454的 哪些字節(jié)被用于生成査找字458,而修改映射450的目的地部分452標(biāo)識 修改數(shù)據(jù)454使用的對應(yīng)字節(jié)被放置在查找字458中的何處,查找字458 中的其余字節(jié)來自檢索關(guān)鍵字456。換句話說,修改映射450和修改數(shù)據(jù) 454被用來替換檢索關(guān)鍵字456中某些指定的數(shù)據(jù)單元,以產(chǎn)生將被用于 匹配關(guān)聯(lián)存儲器條目的值。當(dāng)然,對于修改映射450和修改數(shù)據(jù)454,各 個實施例使用不同的比特數(shù)和字節(jié)數(shù)。在一個實施例中,修改映射450包
括檢索關(guān)鍵字456要修改部分(例如,在一個實施例中為J的值,高位字 節(jié)、低位字節(jié)等)的指示。
圖4G圖示了用在一個實施例中的執(zhí)行查找操作的關(guān)聯(lián)存儲器處理過 程。處理開始于過程框470,并前進到過程框472。如果關(guān)聯(lián)存儲器未被 使能,則處理前進到過程框490,在過程框490生成未命中指示的結(jié)果, 并且處理繼續(xù)前進到過程框484。否則,在過程框474, 一般基于檢索關(guān) 鍵字、修改映射和修改數(shù)據(jù)確定查找字。注意,在一個實施例中,檢索關(guān) 鍵字被用作査找字,并且不存在修改映射或修改數(shù)據(jù)的概念。下一步,在 過程框476,如果有所選擇和使能的全局掩碼,則考慮到該全局掩碼,使 用查找字來匹配關(guān)聯(lián)存儲器條目。注意,在一個實施例中,不存在全局掩 碼的概念。
如在過程框478所確定的,如果識別出至少一個匹配,則處理前進到 過程框480,否則前進到過程框490,在過程框490生成帶有未命中指示 的結(jié)果,并且處理前進到過程框484。否則,如在過程框480所確定的, 如果具有最高優(yōu)先級的匹配條目包括強制未命中指示,則處理前進到過程 框490,在過程框490生成帶有未命中指示的結(jié)果,并且處理前進到過程 框484。否則,在過程框482,生成指示命中(即,成功匹配)且識別出 具有最高優(yōu)先級的匹配條目的結(jié)果。
在過程框484,將結(jié)果傳送至至少已識別出的單個或多個輸出選擇 器。在一個實施例中,要向其傳送結(jié)果的輸出選擇器由輸出選擇器ID 335
(圖3B)標(biāo)識。如在過程框486所確定的,如果識別或接收到錯誤條件, 則在過程框492生成指示錯誤類型和位置的信號。在一個實施例中,使用 錯誤指示420 (圖4C)。過程框499指示處理完成。
圖5A圖示了用在一個實施例中的輸出選擇器500 (可以對應(yīng)于圖2的 輸出選擇器231-232,也可以不對應(yīng)于圖2的輸出選擇器231-232)。如圖 所示,輸出選擇器500包括控制邏輯510和存儲器511。在一個實施例 中,接收編程信號504,并且作為響應(yīng),更新存儲器511中的一個或多個 數(shù)據(jù)結(jié)構(gòu)。
圖5B圖示了用在一個實施例中的一個數(shù)據(jù)結(jié)構(gòu)。對于使用的每個用
戶ID 521,以可用的關(guān)聯(lián)存儲器塊和可選的前級結(jié)果指示符525對可用數(shù) 組520編程。每個指示符525標(biāo)識如果有任何的關(guān)聯(lián)存儲器塊、條目集或 關(guān)聯(lián)存儲器庫存在,則考慮其中的哪些來確定選擇哪個匹配關(guān)聯(lián)條目作為 最終的最高優(yōu)先級匹配關(guān)聯(lián)存儲器條目。在一個實施例中,指示符525還 標(biāo)識考慮哪些前級結(jié)果。從而,基于經(jīng)由選擇器控制信號501 (圖5A)接 收的用戶ID 521,可從存儲器511 (圖5A)中獲取可用數(shù)組520。在一個 實施例中,關(guān)聯(lián)存儲器塊和任何前級結(jié)果的優(yōu)先級次序是隱含的,而在另 一個實施例中,用于確定最終的最高優(yōu)先級匹配條目的該優(yōu)先級次序是可 編程的以及/或者是每次查找操作可變的。在一個實施例中,可用的關(guān)聯(lián)存 儲器塊指示符525位圖數(shù)據(jù)結(jié)構(gòu),而在另一個實施例中,可用的關(guān)聯(lián)存儲 器塊指示符525是列表、集合、數(shù)組或任何其他數(shù)據(jù)結(jié)構(gòu)。
回到圖5A,在査找操作的執(zhí)行過程中,輸出選擇器500接收可包括 用戶ID的選擇器控制信號501。另外,輸出選擇器500從零個或多個關(guān)聯(lián) 存儲器塊中接收任何相關(guān)的前級結(jié)果502和結(jié)果503,其中,將從零個或 多個關(guān)聯(lián)存儲器塊中選擇最高優(yōu)先級的條目,并且如果存在的話,將在生 成的結(jié)果515中標(biāo)識。
而且,在一個實施例中,選擇器控制信號501包括使能指示,使能指 示包括被使能的或不被使能的值,從而使得無論何時當(dāng)接收不被使能的值 時,輸出選擇器500都不被使能,且不從來自塊l-N的結(jié)果503或可選前 級結(jié)果502中選擇。在一個實施例中,當(dāng)不被使能時,輸出選擇器500生 成結(jié)果信號515,結(jié)果信號515告知未命中、不被使能、或某些其他的預(yù) 定或浮點值。
另外,在一個實施例中,結(jié)果515通過固定的輸出總線傳送,該結(jié)果 515可以與其他輸出選擇器500生成的其他結(jié)果515復(fù)用,也可以不復(fù) 用。在一個實施例中,關(guān)聯(lián)存儲器可包括一個或多個輸出總線,每個輸出 總線一般連接到關(guān)聯(lián)存儲器芯片的單個管腳,具體輸出總線的選擇可能是 硬連線的或可配置的,配置可能基于每次査找進行,例如可以從接收值或 從存儲器中獲取的配置信息確定(例如,基于當(dāng)前用戶ID)。在這樣的配 置中,控制邏輯510 (或其他機制) 一般選擇對于具體或所有的結(jié)果
515,使用哪個輸出總線(和發(fā)送結(jié)果515的時序)。
圖5C圖示了用在一個實施例中的用于接收并選擇最高優(yōu)先級關(guān)聯(lián)存 儲器條目的處理過程,如果該條目存在的話。處理開始于過程框540,并 前進到過程框542,在過程框542接收來自關(guān)聯(lián)存儲器塊的結(jié)果和用戶 ID。在過程框544,基于用戶ID從數(shù)據(jù)結(jié)構(gòu)/存儲器中獲取在確定結(jié)果時 要考慮的關(guān)聯(lián)存儲器塊的集合。在過程框546,從耦合的關(guān)聯(lián)存儲器中接 收任何相關(guān)的前級結(jié)果。下一步,在過程框548,從可用的關(guān)聯(lián)存儲器塊 和前級結(jié)果中識別出最高優(yōu)先級匹配,如果存在的話。然后,在過程框 550,結(jié)果通過固定的或識別出的輸出總線/管腳傳送,或者被傳送到某些 其他目的地,該結(jié)果一般包括未命中指示或命中指示以及最終的最高優(yōu)先 級匹配關(guān)聯(lián)存儲器條目的標(biāo)識。過程框552指示處理完成。
考慮到本發(fā)明的原理可以被應(yīng)用到許多可能的實施例,應(yīng)當(dāng)理解,這 里參照附圖描述的本發(fā)明的實施例和各方面僅是說明性的,不應(yīng)當(dāng)被用作 限制本發(fā)明的范圍。例如,對于本領(lǐng)域的技術(shù)人員來說以下是很清楚的, 即可以對許多的過程框操作重新排序,以在其他操作之前執(zhí)行、在其他操 作之后執(zhí)行或者與其他操作實質(zhì)上同時執(zhí)行。同樣地,在各種實施例中可 以使用許多不同形式的數(shù)據(jù)結(jié)構(gòu)。這里描述的本發(fā)明企圖將所有這些實施 例都囊括在所附權(quán)利要求及其等同物的范圍內(nèi)。
權(quán)利要求
1.一種關(guān)聯(lián)存儲器,包括多個關(guān)聯(lián)存儲器條目,所述多個關(guān)聯(lián)存儲器條目中的每一特定關(guān)聯(lián)存儲器條目包括用于在查找操作中與查找字相匹配的值,以及用于標(biāo)識所述關(guān)聯(lián)存儲器條目被判定為所述查找操作的最高優(yōu)先級匹配條目時是否強制生成未命中結(jié)果的值;以及控制邏輯,所述控制邏輯用于執(zhí)行基于所述查找字的對所述多個關(guān)聯(lián)存儲器條目的查找操作,以識別特定最高優(yōu)先級匹配條目;其中所述控制邏輯被配置為當(dāng)所述特定最高優(yōu)先級匹配條目包含用于標(biāo)識了強制生成未命中結(jié)果的值時,發(fā)出未命中指示信號。
2. —種關(guān)聯(lián)存儲器條目,包括第一字段,所述第一字段包括用在對查找字的匹配操作中的值;以及 第二字段,所述第二字段包括所述關(guān)聯(lián)存儲器條目是最高優(yōu)先級匹配 條目時強制生成未命中結(jié)果的數(shù)據(jù)。
3. 如權(quán)利要求2所述的關(guān)聯(lián)存儲器條目,其中,所述關(guān)聯(lián)存儲器條目 包括第三字段,所述第三字段包括用在對所述查找字的匹配操作中的掩 碼。
4. 如權(quán)利要求2所述的關(guān)聯(lián)存儲器條目,其中,所述關(guān)聯(lián)存儲器條目 包括第三字段,所述第三字段指示所述條目是否有效。
5. 如權(quán)利要求2所述的關(guān)聯(lián)存儲器條目,其中,所述關(guān)聯(lián)存儲器條目 包括第三字段,所述第三字段指示所述條目的錯誤檢測值。
6. —種設(shè)備,包括用于基于査找字對包含要被匹配的值的多個關(guān)聯(lián)存儲器條目執(zhí)行査找 操作以識別作為最高優(yōu)先級匹配條目的特定條目的裝置,所述多個條目中 的特定條目至少包括強制未命中指示,所述強制未命中指示標(biāo)識對所述特定條目的成功匹配應(yīng)當(dāng)或不應(yīng)當(dāng)強制生成未命中結(jié)果;以及用于響應(yīng)于特定條目被識別為所述最高優(yōu)先級匹配條目并且所述特定 條目包括所述強制未命中指示,生成未命中信號的裝置。
7. 如權(quán)利要求6所述的裝置,其中,所述多個關(guān)聯(lián)存儲器條目中的每 一個是三進制或二進制內(nèi)容可尋址存儲器條目。
8. 如權(quán)利要求7所述的裝置,包括用于編程具有所述強制未命中指 示并且具有被與所述查找字匹配的值的所述多個關(guān)聯(lián)存儲器條目的裝置。
9. 如權(quán)利要求6所述的裝置,包括用于編程具有所述強制未命中指 示并且具有被與所述査找字匹配的值的所述多個關(guān)聯(lián)存儲器條目的裝置。
10. —種用于生成查找結(jié)果的方法,所述方法包括基于查找字對包含要被匹配的值的多個關(guān)聯(lián)存儲器條目執(zhí)行査找操 作,以識別作為最高優(yōu)先級匹配條目的特定條目,所述多個條目中的特定 條目至少包括包括強制未命中指示,所述強制未命中指示標(biāo)識對所述特定條目的成功匹配應(yīng)當(dāng)或不應(yīng)當(dāng)強制生成未命中結(jié)果;以及響應(yīng)于特定條目被識別為所述最高優(yōu)先級匹配條目并且所述特定條目 包括所述強制未命中指示,生成未命中信號。
11. 如權(quán)利要求IO所述的方法,其中,所述多個關(guān)聯(lián)存儲器條目中的 每一個是三進制或二進制內(nèi)容可尋址存儲器條目。
12. 如權(quán)利要求11所述的方法,包括編程具有所述強制未命中指示并且具有被與所述查找字匹配的值的所述多個關(guān)聯(lián)存儲器條目。
13. 如權(quán)利要求10所述的方法,包括編程具有所述強制未命中指示并且具有所述被與所述査找字匹配的值的所述多個關(guān)聯(lián)存儲器條目。
14. 一種用于生成査找結(jié)果的方法,所述方法包括基于第一查找字對第一多個關(guān)聯(lián)存儲器條目執(zhí)行査找操作以識別作為 所述第一多個關(guān)聯(lián)存儲器條目中的最高優(yōu)先級匹配條目的第一特定條目, 以及基于第二査找字對第二多個關(guān)聯(lián)存儲器條目執(zhí)行査找操作以識別作為 所述第二多個關(guān)聯(lián)存儲器條目中的最高優(yōu)先級匹配條目的第二特定條目; 其中,在判定査找結(jié)果時,所述第一多個關(guān)聯(lián)存儲器條目具有比所述第二多個關(guān)聯(lián)存儲器條目更高的優(yōu)先級;響應(yīng)于所述第一多個關(guān)聯(lián)存儲器條目被識別為所述第一特定條目中的 最高優(yōu)先級匹配條目并且所述第一特定條目包含強制未命中指示,為所述第一多個關(guān)聯(lián)存儲器條目產(chǎn)生第一未命中信號;以及響應(yīng)于所述第二特定 條目被識別為所述第二多個關(guān)聯(lián)存儲器條目中的所述最高優(yōu)先級匹配條 目,產(chǎn)生識別所述第二特定條目的第二最高優(yōu)先級信號;以及響應(yīng)于所述第一未命中信號和所述第二最高優(yōu)先級信號,識別所述第 二特定條目作為所述査找結(jié)果。
15. 如權(quán)利要求14所述的方法,其中,第一關(guān)聯(lián)存儲器庫包括所述第 一多個關(guān)聯(lián)存儲器條目,第二關(guān)聯(lián)存儲器庫包括所述第二多個關(guān)聯(lián)存儲器 條目。
16. 如權(quán)利要求15所述的方法,其中,所述第一查找字和所述第二查 找字是相同的。
17. 如權(quán)利要求14所述的方法,其中,所述第一査找字和所述第二査 找字是相同的。
全文摘要
本發(fā)明公開了使用關(guān)聯(lián)存儲器執(zhí)行查找操作的方法和裝置,所述查找操作包括但不限于基于修改映射來修改關(guān)聯(lián)存儲器內(nèi)的檢索關(guān)鍵字、響應(yīng)于包括強制未命中指示的最高優(yōu)先級匹配條目強制生成未命中條件、在各個關(guān)聯(lián)存儲器條目集或庫中選擇以確定查找結(jié)果以及檢測并傳輸錯誤條件。在一種實施方式中,每個塊從本地存儲器中獲取修改映射,并基于該映射和接收的修改數(shù)據(jù)修改接收的檢索關(guān)鍵字。在一種實施方式中,每個關(guān)聯(lián)存儲器條目包括指示對條目的成功匹配應(yīng)當(dāng)或不應(yīng)當(dāng)強制生成未命中結(jié)果的字段。在一種實施方式中,從存儲器中獲取在特定查找操作中使用哪些關(guān)聯(lián)存儲器塊或條目集的指示。
文檔編號G06F17/30GK101354719SQ20081013494
公開日2009年1月28日 申請日期2003年7月19日 優(yōu)先權(quán)日2002年8月10日
發(fā)明者休·韋伯·霍爾布魯克, 威廉·N·伊瑟頓, 布尚·曼格什·卡內(nèi)卡爾, 文卡特斯瓦爾·拉奧·普萊拉, 普里揚克·拉梅什·瓦爾科和德, 班加洛·L·普里亞達(dá)爾尚, 若恩·李, 菲松·埃爾馬普, 迪利普·庫馬爾·德維銳迪 申請人:思科技術(shù)公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
信宜市| 宁南县| 扶余县| 六枝特区| 香格里拉县| 琼中| 山阴县| 固安县| 五常市| 济南市| 宁海县| 南平市| 汝阳县| 乐平市| 汾阳市| 正定县| 登封市| 射阳县| 河北区| 苗栗市| 冕宁县| 炎陵县| 山阴县| 太仆寺旗| 方山县| 丘北县| 铜梁县| 兴城市| 区。| 洮南市| 奉贤区| 灵武市| 碌曲县| 余姚市| 垣曲县| 南丹县| 松桃| 七台河市| 仙游县| 黄平县| 丰台区|