TWI499909B - 階層式不可改變的內容可定址的記憶體處理器 - Google Patents
階層式不可改變的內容可定址的記憶體處理器 Download PDFInfo
- Publication number
- TWI499909B TWI499909B TW102135737A TW102135737A TWI499909B TW I499909 B TWI499909 B TW I499909B TW 102135737 A TW102135737 A TW 102135737A TW 102135737 A TW102135737 A TW 102135737A TW I499909 B TWI499909 B TW I499909B
- Authority
- TW
- Taiwan
- Prior art keywords
- block
- memory
- data
- physical
- blocks
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C15/00—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C15/00—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
- G11C15/04—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
- G06F12/0261—Garbage collection, i.e. reclamation of unreferenced memory using reference counting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Storage Device Security (AREA)
Description
本發明係相關於電腦記憶體管理。
在習知Von Neumann(馮紐曼)電腦架構中,記憶體被構造成以循序位址索引之固定尺寸的胞元(cell)之線性陣列。圖1圖示此習知架構的例子。指令102的執行產生如所示之記憶體104的內容。雖然此方法實施簡易且相當容易用於固定尺寸的應用程式資料單元,但是軟體結構和技術需要處理可變尺寸和構造資料。
欲處理可變尺寸資料,軟體典型上實施動態記憶體配置器,此配置器定位至少與所要求的一般大之記憶體的連續區域。然而,在延伸執行過程中,記憶體空間可變得分段成多個較小區域,使得即使可利用的記憶體總量仍充裕,記憶體配置要求還是會失敗。諸如世代垃圾收集器等機構可藉由拷貝區域使它們彼此連續以週期性重新緊密(re-compact)記憶體,但是此種垃圾收集在召喚時可能與正在執行的應用程式相互干擾,此係即時系統中尤其無法接受的觀點或係通常需要可預測反應者。而且,若可變尺寸資料項目長度變長,則軟體必須配置該所需尺寸的新連續區域,及拷貝該資料到新位置,及將指向舊位置的所有參考改成指向新位置的目前點(now point)。為了有助於後者之此一動作,某些軟體經由提供實際指標給可變尺寸資料的確定尺寸定位來採用額外位準的間接指標,如此具有單一位置更新,但
是以各個存取上的額外的間接指標為代價。
可變尺寸資料的另一方式係使用指標(即、使用構造資料)從非連續記憶體單元來建構該可變尺寸資料類型。構造資料是處理的一大挑戰,因為其在複雜的構造資料之指標參考特徵存在時,難以決定何時記憶體區是有空的。構造資料代表中的資料存取亦導致須間接經由指標以確定可變尺寸資料項目中的下一登錄點的負擔。
就在多個分開處理中執行的應用程式而言,構造資料採用更多的負擔,因為其通常需要串列化構造資料且拷貝結果到分開的位址空間,然後將其去串列化以共享結構資料。用於提供處理之間之隔離的虛擬位址轉譯,使得用於構造該資料的位址對各位址空間須是唯一,係此之產生原因。與典型應用程式資料單元(如、32-128位元組)比較,用於位址轉譯的記憶體頁(如、8千位元組或更大)的大顆粒進一步阻礙共享。結果,應用程式被組織成一處理內的多個執行緒(thread),須放棄保護分離的位址或為串列化、拷貝、和去串列化位址空間之間的結構資料而付出相當大的代價。
近來可預期的技術發展使此標準Von Neumann模型的不利點更加有問題。首先,記憶體系統性能無法跟上日益增加的處理器性能,使得記憶體性能成為電腦性能逐漸侷限的因素。因此,諸如拷貝和垃圾收集等記憶體密集的操作在比例上變得更加昂貴。快取已變成處理處理器/記憶體速度失配的主要機制。然而,隨著日益增加的記憶體尺寸、更大和更複雜的應用程式物件、及更資料密集的應用程式,使用此習知記憶體模型,快取已變得明顯較無效率。
當作第二方向,電腦硬體逐漸依賴平行執行以達成性能優點。尤其是,在單一微晶片上實施多個”核心”,在共享記憶體控制器和快取記憶體的同時提高成本效率是可行的。然而,由於構造資料所造成的額外拷貝,導致重複資料而造成快取記憶體的使用無效率。而且,
諸如參考計數更新和使用更新之快取線之錯誤共享等額外更新導致記憶體和快取記憶體更加無效率。
當作最後的趨勢,增加的記憶體尺寸和處理器性能使應用程式能夠變得較大且較複雜,但是增加維持軟體正確性的困難,尤其是不斷改良和特徵的需求。同時,應用程式在時間、任務、甚至使用壽命上的急迫性功能日益要求,使其可靠性更為重要。
就這些和其他理由,已考慮其他記憶體架構。例如,在US4,989,137中,使用者處理器藉由記憶體管理系統的一部分之連結暫存器單元,專門地存取記憶體。以此方式,記憶體管理系統可對使用者處理器隱藏實體記憶體組織的低階細節,取而代之,以邏輯記憶體抽象化呈現給使用者處理器。在US4,695,949中,說明區塊取向記憶體,其中為各個區塊維持參考計數,藉以減輕經常性垃圾收集的需要。
在US5,784,699中,考慮具有幾個標準區塊尺寸之區塊取向記憶體系統。聚集記憶體配置要求到最接近的標準區塊尺寸。在US5,950,231中,考慮以堆疊指標控制的區塊取向記憶體管理系統。在US5,247,634及US5,864,867中,考慮依據使用樹的記憶體管理。
然而,這些方式及標準Von Neumann快取方式二者都有困難度,特別是構造資料而言。因此,提出改良的記憶體管理,尤其是針對可變尺寸和構造資料在技術上應是一大發展。
根據階層式不可改變的內容可定址之記憶體處理器(HICAMP)架構來提供改良的記憶體管理。在HICAMP中,實體記憶體被組織成兩或更多個實體記憶體區塊,各個實體記憶體區塊具有固定儲存容量。提供任一時間點中哪一些實體記憶體區塊是有效的指示。記憶體控制器提供非重複寫入能力,其中在寫入時將欲寫入至實體記憶體之
資料與所有有效實體記憶體區塊的內容比較,藉以確保在完成非重複寫入之後沒有兩有效記憶體區塊具有相同資料。在重複的案例中,則使用現存的區塊而不產生具有相同值的另一區塊。
102‧‧‧指令
104‧‧‧記憶體
202‧‧‧實體記憶體
204‧‧‧區塊Id/Offset(位移量)擷取器
206‧‧‧虛擬對實體區塊Id(blockId)映射
208‧‧‧區塊資料目錄
210‧‧‧處理器
212‧‧‧處理器
214‧‧‧處理器
220‧‧‧記憶體控制器
230‧‧‧處理器
302‧‧‧指令
304‧‧‧記憶體
306‧‧‧指令
308‧‧‧記憶體
310‧‧‧指令
312‧‧‧記憶體
314‧‧‧指令
316‧‧‧記憶體
602‧‧‧指令
604‧‧‧記憶體
606‧‧‧記憶體內容
圖1為習知電腦記憶體使用的例子圖。
圖2為根據本發明的一實施例之電腦系統的概要區塊圖。
圖3a-d為根據本發明的一實施例之電腦記憶體使用的例子圖。
圖4為與本發明的一實施例一起使用的虛擬對實體區塊ID映射(VPBIM)之適當邏輯結構的例子圖。
圖5a-d為對應於圖3a-d的例子之VPBIM例子圖。
圖6a-b為能夠以兩不同方式在記憶體中代表相同多區塊物件之例子圖。
為了更加瞭解本發明,首先以比較抽象、實施獨立的方式來考慮本發明的實施例之主要型態,然後經由圖解例子提供一些其他的實施細節是有幫助的。
1)主要型態
為了簡潔,參考本發明的各種實施例當作階層式不可改變的內容可定址之記憶體處理器(HICAMP)架構之例子是方便的。該HICAMP架構與標準的Von Neumann架構不同於幾個基本方面。
第一,在HICAMP中,實體記憶體被組織成兩或更多個實體記憶體區塊,各個實體記憶體區塊具有固定儲存容量。第二、提供任一時間點中哪一些實體記憶體區塊是有效的指示。第三、記憶體控制器提供非重複寫入能力,其中在寫入時將欲寫入至實體記憶體之資料與所有有效實體記憶體區塊的內容比較,藉以確保在完成非重複寫入之後沒有兩有效記憶體區塊具有相同資料。
從HICAMP架構的這些型態可具有幾個主要的優點。
1)消除有關記憶體分段儲存的習知問題,因為記憶體的配置係經由固定尺寸的實體記憶體區塊。重複抑制使這些區塊能夠被有效定位和管理。
2)因為重複抑制,指定量的應用程式資料所需之記憶體的量能夠依照應用程式資料的尺寸被分析和連結。
3)因為資料區塊在有效之時無法被修改,所以無論在位址空間內和在位址空間之間都能夠安全地共享資料使得可以減少記憶體拷貝。
4)可有效實施記憶體中的兩物件之相等/不相等比較,因為它們只有代表相同實體區塊才是相等的。
5)重複的抑制使可利用的實體記憶體更有效的使用。
6)使同時程式化簡化且更有效率,因為在許多共有的資料結構上可微量地執行非區塊更新。
在較佳的HICAMP實施例中,將非重複寫入的概念延伸到亦包括需要一個以上的實體記憶體區塊來儲存之資料項目(簡稱多區塊資料)。此可藉由提供一多區塊資料規約加以完成,該多區塊資料規約替任何需要二或更多實體區塊以儲存的資料項目指定一唯一代表。然後,當將多區塊資料寫入至記憶體時可執行該多區塊資料規約,使得非重複寫入可確保沒有多區塊資料的任何實例之重複存在於該組有效實體記憶體區塊中。
當作多區塊非重複寫入的效果之一簡單例子,試想在一系統中之一字串”abcde”的代表,該系統中之實體區塊具有三字元的儲存容量。由總共三區塊來代表該字串,其中區塊1包含字串的頭,區塊2包含字串的尾,及區塊3包含到區塊1及2的指標。沒有多區塊唯一性提供規約,則該例示字串可被代表為(”abc”,“de”)或代表為(”ab”,“cde”),其中第一項目是區塊1的內容而第二項目是區塊2的內容。藉
由執行(或支援)此種多區塊唯一性規約(如、首先填充頭,或首先填充尾),可去掉此種多種代表的可能性。結果,具有到區塊1及2的指標之區塊3是記憶體中字串”abcde”的唯一代表,藉以提供多區塊重複的抑制。
較佳的是,各個實體記憶體區塊具有相同儲存容量,以簡化記憶體管理。再者,相對於諸如藉由磁性或光媒體所實行之檔案系統的持續記憶體,該實體記憶體以揮發性記憶體為較佳(例如、電腦主記憶體,諸如動態RAM等)。
圖2為藉由設置與實體記憶體202通訊之記憶體控制器220來實施HICAMP的較佳實施例圖。一或多個處理器230可經由記憶體控制器220來存取實體記憶體202,記憶體控制器220提供HICAMP組織的記憶體模型給處理器。在此例中,具有三個處理器,210、212、及214。因此,HICAMP可應用到單一處理器或多處理器內文。下面將說明此例中有關記憶體控制器220的其他細節。
可利用硬體及/或軟體的組合來提供哪一些實體記憶體區塊是有效的指示。此外,在實施本發明時可利用”有效區塊”的各種定義。例如,若在整個系統初始化後,已由HICAMP系統配置或初始化,則實體區塊可被視作有效的。利用此種方式,無法回收利用先前已使用過但目前未使用中之實體記憶體區塊。因為某些電腦系統被設計成當記憶體變低時重新初始化,所以此種相對較小的”有效”指示已可滿足此種系統。
提供”有效”指示的另一方式係為各個記憶體區塊維持指示其是否有效的旗標。可根據前述之HICAMP法的初始化/配置來設定此種旗標。另一選擇是,可以分開操作來設定用於區塊活動性的旗標,藉以決定哪一些區塊是有效的(例如、在標記清掃垃圾收集中所進行的一般)。
提供”有效”指示的另一方式係為各個實體記憶體區塊維持參考計數,其中有效區塊具有對應的參考計數>0,及失效區塊具有參考計數=0。在某些例子中,此種參考計數可區別具有各種位置的參考,諸如處理器暫存器中的參考,實體記憶體區塊中的參考,及/或虛擬對實體區塊ID映射中(VPBIM)的參考等。
在較佳實施例中,每一區塊提供一組標記,指示哪一些區塊包含相對於原始資料的實體和虛擬區塊參考,使此種區塊參考能夠被處理成參考計數,標記清掃垃圾收集或類似”有效”決定計畫的一部分,及能夠防止應用程式位準處理在沒有HICAMP實施例的知識之下就製造區塊參考。其他標記可支援偵測循環參考和提供專門更新語意,諸如用於高內容資料區塊的更新時合併等。
在HICAMP的較佳實施例中,提供VPBIM以替實體記憶體的一些或所有內容映射虛擬區塊ID至實體區塊ID。藉由提供此種映射,能夠在限制負擔的同時自動更新構造資料的代表。例如,物件中的字元字串描述欄位可被實施當作區塊中的記憶體胞元,以儲存虛擬區塊ID。藉由以根實體區塊來產生修正的字元字串資料項目且將用於此實體區塊的識別符號儲存在對應於虛擬區塊ID的映射登錄點中,以更新此敘述。
圖3a-d為與虛擬和實體區塊ID(在圖式中分別縮寫成VID和PID)有關的HICAMP記憶體使用之一些例子圖。為了說明簡單,此例子每一區塊儲存單一值。在圖3a上,指令302的執行產生如所示之記憶體304的內容。具體而言,指令302中的第一指定使值37儲存在新的實體區塊(即、PID1)中,及使VID1與PID1相關,因為指定係到VID,而非PID。同樣地,指令302中的第二指定使值125儲存在新的實體區塊(即、PID2)中,及使VID2到PID2相關。指令302中的第三指定只使VID3相關到PID1,因為用於VID3的值是已儲存之值的重
複。此重複的抑制與圖1的習知記憶體模型成強烈對比,在圖1中係使用PID做記憶體存取,且重複值係儲存在記憶體中。
在圖3b上,指令306的執行產生如所示之記憶體308的內容。指令306不同於指令302之處只在於藉由VID1的最後指定的添加以具有值25。此第四指令使值25儲存在新的實體區塊(即、PID3)中,及使VID1與PID3相關。
在圖3c上,指令310的執行產生如所示之記憶體312的內容。指令310不同於指令306之處只在於VID3的最後指定的添加以具有值125。此第五指令只使VID3與PID2相關,因為值125已在記憶體中。
在圖3d上,指令314的執行產生如所示之記憶體316的內容。指令314不同於指令310之處只在於用於VID4的最後指令的添加以指向VID3。此第六指令使位址VID3儲存在新的實體記憶體區塊PID4中,及使VID4相關到PID4。
此例子顯示出藉由參考具有VID的記憶體內容,在消除所有重複的實體儲存同時,可提供指定陳述和指標的通常邏輯。一旦產生實體區塊,則其內容不可改變。在圖3a-d的例子中,字母”A”出現在有效的實體記憶體區塊旁邊,而字母”F”出現在釋放的(即、可用於配置)記憶體區塊旁邊。在圖3c-d上,實體區塊PID1被標記成釋放,因為沒有參考到它。
圖4為用以實施VPBIM的適當邏輯結構之例子。在此例中,VPBIM中的各個登錄點包括VID,對應PID,及那VID的參考數目。圖5a-d分別圖示具有此結構和對應於圖3a-d的例子之VPBIM例子。VPBIM通常是VID對PID的多對一映射,因為同一PID可對應於幾個VID,如這些例子所示一般。因此,VID的使用可被視作管理多個連至同一實體資料區塊的不同參考之系統方法,這是由於在HICAMP的記憶體特性中消除實體重複所自然產生的情況。在另一實施例中,
VID不需要是VPBIM中的明確登錄點。取而代之的是,映射可以是不言明的。例如,(PID、參考計數)配對的陣列可當作具有充當VID之陣列索引的VPBIM。可利用與任何其他多區塊資料項目相同的方式將VPBIM儲存在HICAMP組織記憶體中。
在較佳實施例中,HICAMP非重複寫入能力係經由以內容來區塊擷取(BFBC)指令來提供的,此指令具有區塊資料當作輸入且提供區塊識別符號當作輸出。可考慮兩種情況。若輸入區塊資料是存在於有效實體記憶體區塊中之資料的重複,則由BFBC指令所傳回的識別符號是此現存的有效記憶體區塊之位址。
若輸入區塊資料非存在於有效實體記憶體區塊中之資料的重複,則由記憶體控制器配置新的實體資料區塊,其內容被設定成輸入區塊資料,及此新的有效實體記憶體區塊之區塊位址係由BFBC指令傳回。
藉由經由BFBC指令來建構記憶體存取,可藉由記憶體控制器來執行管理重複抑制的處理,及不需要在應用程式位準中分開考慮上述兩情況。具體而言,經由BFBC記憶體存取所代表的應用程式演算法不需要考慮記憶體重複抑制的細節,因為係由BFBC抽象的實施所處理。在利用VPBIM映射的例子中,由BFBC指令所傳回的區塊位址可以是實體區塊ID或虛擬區塊ID。典型上,對應用程式位準BFBC指令而言,傳回虛擬區塊Id較為有用。
在較佳實施例中,有效實體記憶體區塊被組織成兩或更多個直接非環式圖形(DAGs)。在此種例子中,各個多區塊資料項目具有其自己的DAG,由非環式的條件排除DAG內部之參考的閉環,及DAG的方向性提供清楚的根區塊以供整個多區塊資料項目參照。為了排除總體的循環參考迴圈,一組DAGs不包括多DAG循環參考迴圈較佳(如、包括兩或更多的DAGs之指標參考的閉環)。HICAMP的實施依
賴提供實體記憶體的內容可定址性之各種方法。其中一方式係提供循序讀取和比較能力給實體記憶體的一些或所有內容。另一方式係提供平行讀取和比較能力給實體記憶體的一些或所有內容。例如,可利用單一比較器來實施循序方法,該單一比較器配置成循序讀取有效實體記憶體區塊的內容和比較它們以輸入資料。同樣地,可藉由設置(如、在硬體中)對應各個實體記憶體區塊的分開比較器以實施平行方法,使得可同時執行有效區塊內容的所有比較以輸入資料。因此,在速度和成本之間要有所權衡以考慮何時決定利用循序或平行比較(或混合方式)來提供內容可定址性。
在一較佳實施例中,藉由將實體記憶體分成N個記憶庫來提供用於HICAMP的內容可定址性,其中N是整數>1。當將資料寫入至此記憶體時,將具有N個可能輸出的雜湊函數應用到區塊資料以提供雜湊值。雜湊值被用於選擇對應的記憶庫,此對應的記憶庫將根據慣常的HICAMP規約(即、只有在記憶庫中不會因此而產生重複的情況,才可以在該相關的記憶庫中產生新的區塊)來儲存資料。以此方式,用於內容定址的讀取和比較能力一次只要處理一記憶庫,而非整個實體記憶體。以此種規劃,如果各個記憶庫具有M個區塊和M個比較器,則可提供快速平行比較,如此實際上比實施全區塊位準平行(即、NM比較器)來得不昂貴。
例如,設想根據上述規劃將字串”abc”儲存到記憶體。假設”abc”雜湊成3,則在實體記憶體中,只有在記憶庫3中,可將”abc”儲存在一有效實體記憶體區塊。因此,避免重覆,只要檢查記憶庫3中的區塊即可。
圖6a-b為多區塊資料物件的簡單例子。圖6a為在本發明的一實施例中由指令602指定三元素串列[1,2,3]給VID1之結果圖。記憶體604的最後內容可瞭解如下。各個串列元素得到它自己的實體區塊,因位在
此例中沒有元素被重複,及虛擬ID VID3、VID4、及VID5對應於陣列元素。串列的根是在VID1所參考的區塊中,及其內容是到串列的第一元素之指標(即、VID3),及到串列的剩餘部分(即、到串列[2,3])之指標(即、VID2)。在VID2中,具有到串列[2,3]的第一元素之指標(即、VID4),及到串列[2,3]的第二元素之指標(即、VID5)。
圖6b的例子類似於圖6a的例子。圖6b的記憶體內容606和圖6a的604之間不同處只在VID1及VID2的區塊參考之內容中。具體而言,在圖6a的例子中從其尾端建立串列,而圖6b的例子中從其一開始建立串列。為了消除多區塊重複,對多區塊唯一性提供規約(如上述)而言,指定唯一組織給任何指定系統所支援的所有多區塊資料結構是重要的。適當利用此種規約,同一物件不可能具有如圖6a-b所示一般的兩種不同記憶體代表。
2)實施細節
區塊組織
在一例示實施例中HICAMP實體記憶體區塊可被建構如下:
refCOunt | tags | inLevel | exLevel | data
refCount(參考計數)欄位包含此區塊的充分參考之數目。下面所說明的backRef並不視作”充分參考”。零的refCount代表區塊釋放且可用於重新使用。
tags欄位用以指示相關data欄位的各自的子欄位:
i)00-資料
ii)01-intraRef-包含代表在多區塊數結構中是在內部且隸屬於此區塊的區塊之區塊Id。即子樹參考,可計入此區塊中的參考計數的增加。若任一子欄位是intraRef,則區塊中的所有子欄位需要都是intraRef。
iii)11-extraRef-包含代表另一區塊的區塊Id,可計入此種另一區塊中的參考計數的增加。
iv)10-backRef-包含代表另一物件的區塊Id,但是不代表可作為此另一物件的參考計數增加。
extraRef和backRef值是虛擬區塊Id。tags欄位可包括單一”合併更新”旗標,此旗標指示區塊應在更新時與目前區塊內容合併,而非取代這些內容。
inLevel欄位指示從此節點藉由intraRefs直到一不包含intraRefs的節點之最大距離。例如,在可變尺寸物件的典型階層式(樹或DAG)代表中,此位準(level)是此樹或DAG中的高度。
exLevel欄位需要是比其所連接至的任何具有extraRef之節點的exLevel大一者,經由節點直接或間接到由intraRef可到達者。例如,若此節點是代表多區塊物件之樹的根,則該之exLevel大於此物件所有具有extraRef(等同習知程式化中的智慧型指標)的節點之exLevel。執行exLevel的此限制是確保在HICAMP記憶體組織中沒有有害的循環參考迴圈之一方法。
分析
為了評估HICAMP對各種情況的可應用性,限制添加到記憶體系統和控制器之欄位的尺寸是有幫助的,如下述。
不同於習知記憶體系統,其藉由系統中的各個內容至多只能具有單一拷貝來約束指定區塊的參考數目。尤其是,最糟的情況是所有DAG均具有同一區塊的單一共同字首(prefix),如此此一區塊具有最大的參考數目。各個DAG必須具有內節點區塊以參考此共有區塊,加上各個DAG必須具有至少一特有區塊以確保各個根區塊是可區別的。而且,各個內節點需要被另一內節點參考直到一些根節點。然後,利用64位元組區塊和兆位元組(240
)位元組記憶體(及因此233
區塊),
最糟情況的參考數目被侷限在232
,此種根節點,假設它使用2區塊來產生最小額外唯一參考DAG,及每一最小DAG使用另一區塊內節點來參考這些根節點(即、32位元refCount是足夠的)。在此結構中,樹葉是共有區塊和特有區塊的另一順序,及其他N使用當作整個DAG內的內節點。
藉由每一區塊儲存inLevel和exLevel來避免參考循環。inLevel欄位需要足夠大以容納最大的intraRef建構物件。該位元數是loglogN/B,其中N是最大的單一物件及B是每一區塊的位元組數目。因此,6位元將容納物件達B*263
。exLevel需要容納extraRef的深度,此深度通常遠小於100。例如,指向具有子物件的物件之目錄基本上是在exLevel3。因此,8位元似乎更適合此欄位。
在一實施例中,區塊是20位元組的資料,4位元組的RefCount,2位元組的levels(inLevel以及exLevel),1位元組的標記,導致其負擔近乎25百分比。較大的區塊能夠每一區塊儲存4區塊Id,支援四重樹當作階層式資料代表。其他實施例可支援較大的區塊尺寸和多區塊尺寸以進一步減少負擔。
記憶體控制器
在一例子中,圖2的記憶體控制器220包括3主要組件。一區塊Id/位移擷取器204,其回應處理器要求,定位並傳回在記憶體儲存中對應該指定位移的資料區塊,該位移係以一階層式區塊結構中之藉由區塊Id識別的區塊為根。一VPBIM 206,按照維持用於PIDs的參考計數,轉譯虛擬區塊IDs(v區塊Ids或VIDs)及實體區塊IDs(p區塊Ids或PIDs)之間的彼此轉換並管理配置及釋放這些映射。一區塊資料目錄208,實施指定資料和標記規格給區塊(如上述),若區塊尚未存在,則配置和初始化此種區塊。實施此映射的各種技術是眾所皆知的。在一實施例中,二元內容可定址的記憶體可被使用當作資料儲存
體。在此例中,refCount及level可分開儲存於較不昂貴的DRAM中。在另一實施例中,映射可使用自查閱資料結構的選出者,諸如先前說明的以樹或雜湊表為主的實施。
在例示實施例中,記憶體控制器管理被組織成B位元組的區塊之記憶體的DRAM記憶庫,其中B被預期是在16到64位元組的範圍中,但是B在每一系統中是固定的(至少在系統操作期間)。其亦具有32位元參考計數欄位的陣列,每一區塊一個。其中一實例是於系統中各個實體區塊具有一登錄點的DRAM。記憶體控制器提供用以以指定指數來自動增加和減少參考計數欄位的操作,及如下述,當參考計數被減至零時釋放該區塊。
可使用釋放區塊的參考計數欄位來處理區塊配置以將其鏈結到釋放的區塊表。也就是說,釋放的記憶體區塊之參考計數欄位包含釋放串列中之下一釋放記憶體區塊的索引。當系統初始化時,所有釋放區塊被佇列到此釋放串列上。當需要新區塊時,由記憶體控制器從釋放串列的頭解佇列,且將其參考計數重設成1,對應於新的參考。當區塊的參考計數成為零時,記憶體控制器增加區塊到釋放表的頭。對應地,可從釋放串列去除不良的記憶體區塊,如此避免配置它們,此與頁位準的習知技術相同,但是具有更精密的顆粒。藉由維持釋放串列尾指標,釋放的區塊可被添加到釋放串列的尾端,如此只要可能就不會重新用到它們。在記憶體晶片的使用壽命期間支援有限的寫入次數之諸如快閃記憶體等技術來實施記憶體時,此非必要的精鍊提供遍及區塊的”穿戴整平”之形式。
結合額外位元與參考計數機構來指示其在此形式中當作釋放”下一”欄位之使用以保護免於諸如對釋放區塊的錯誤參考等錯誤行為是可行的。
在此方式中,參考計數欄位需要足夠大到能夠儲存數個區塊Id。
另一選擇是,可具有K個釋放串列,使得第i釋放串列中的所有區塊具有i在其低階位元中,去除儲存它們的需要。下面進一步說明使用遍及K個釋放串列劃分區塊來當作實施內容可定址的查閱或以內容來區塊擷取(BFBC)之部分。
與習知記憶體相同地執行以實體區塊id來區塊擷取。記憶體控制器解碼到DRAM記憶庫的區塊Id,及在此記憶庫內的列/行,發出此區塊的讀取和傳回資料。最不尋常的型態是支援以內容來區塊擷取(BFBC),如下述。
在理想或邏輯實施例中,主記憶體被實施當作對應於不包括參考計數欄位之區塊尺寸寬度的二元內容可定址記憶體(CAM)。因此,以內容來區塊擷取(BFBC)記憶體控制器操作傳遞區塊資料到CAM,及若存在的話,則接收回區塊或”列”id,否則就指示不存在。在後一例子中,其如上配置區塊及以相關資料書寫區塊。依據遍及整個記憶體系統之資料的唯一性(即、不會有兩命中(hit)),利用在各個記憶庫中平行執行的查閱可將記憶體分成多個記憶庫。藉由建立比較邏輯到個別DRAM晶片內,此方式是可行的。然而,二元CAM記憶體目前非常昂貴,且相對習知DRAM而言非常耗電。
能夠使用習知DRAM的實施可降低比較器的數量,使得在記憶庫中各個K列具有單一比較器,而非每列一個。然後,將區塊內容雜湊成0到K-1,比如說h,及各個比較器被要求比較資料與其第h相關列。若區塊匹配的話,則比較器報告命中和區塊數。為了準確地進行此工作,在K個釋放串列中維持釋放區塊。雜湊成h之未命中資料時,由第h釋放串列配置區塊來儲存資料。
使用上述方式,記憶體控制器能夠包含C個比較器和在C個獨立記憶庫中存取記憶體,各個係由習知DRAM晶片來實施。然後,記憶體控制器值行平行記憶體擷取和比較,加上對未命中的區塊之配置。
利用適當的雜湊函數,在用完所有釋放串列之前應該不可能明顯地用完一釋放串列。相反地,釋放串列的劃分不會明顯降低記憶體的有效尺寸。當如上述被使用當作釋放串列中的”下一”鏈結時,K個釋放串列可被用於降低欲儲存在參考計數欄位中所需的位元數。
對一HICAMP的特定實例而言,K的尺寸和比較器的數目可以是特定的,對軟體而言是易懂的。其依賴記憶體控制器上可行的I/O接腳數目。而且,在某些例子中,每一BFBC要求從DRAM每一記憶庫發出多個讀取是可行的,藉由每一BFBC操作中多次使用它們可有效增加比較器數目。
VPBIM機構
虛擬對實體區塊Id映射(VPBIM)可被實施當作以虛擬區塊id(v區塊Id)來檢索之記憶體陣列。各個登錄點具有欄位:
[p區塊Id|refCount]
使用p區塊Id欄位將釋放登錄點鏈結在一起,類似於為p區塊s所說明的規劃。利用用於區塊Id的40位元和每一參考計數的32位元,各個登錄點是9位元組。記憶體控制器被組配成相對於p區塊s支援足夠的登錄點,如此VPBIM登錄點不是有限的資源。假設記憶體之每4字元1指標的比例,及每區塊4字元的資料,則記憶體控制器可每區塊提供一VPBIM登錄點,如此p區塊Id欄位足夠大到用於釋放串列。理想上,記憶體控制器可被組配成支援不同尺寸的VPBIM。
就VPBIM而言,記憶體控制器支援操作成:
a)配置VPBIM登錄點且以指定p區塊Id和參考計數1來初始化,增加相關p區塊Id的參考計數。此簡單包含解佇列釋放的VPBIM登錄點和使其初始化。
b)傳回對應於指定v區塊Id的p區塊Id。此僅由v區塊Id來索引VPBIM陣列及傳回那登錄點中的p區塊Id。
c)為指定v區塊Id增加參考計數。此僅由v區塊Id來索引VPBIM陣列及增加那位置的參考計數。
d)為指定v區塊Id減少參考登錄點及若參考計數是零,則使登錄點釋放,減少p區塊Id和增加此VPBIM登錄點到釋放串列。
可使用韌體和用於諸如配置等綜合操作的內部微控制器來實施上述記憶體控制器操作。簡單的性能緊要操作可使用硬導線邏輯。記憶體控制器性能係侷限於DRAM性能,如同習知架構一般。因此,HICAMP處理性能高度依賴處理器元件位準中快取的有效使用,如下述。
快取
HICAMP處理器元件係依據實施習知暫存器對暫存器演算法、邏輯等指令的CPU區塊與記憶體暫存器載入操作,但是須再增加該新的HICAMP記憶體系統結合之特定操作。此處理器元件包括處理器快取記憶體以提供到資料的有效存取,該資料係利用時間和空間的局部性加以存取,在習知架構中被證明良好。與習知處理器元件競爭之下,HICAMP的主要性能挑戰是提供到記憶體的快速存取。習知處理器元件的主要觀點是有效快取。
HICAMP處理器快取記憶體被建構成快取線的集合,其被量身定作成可與記憶體區塊尺寸相容,典型上匹配此區塊尺寸,與習知處理器快取記憶體相同。同樣地,其包括習知快取記憶體目錄,映射區塊Id到快取線,大概具有一些合理的設定關聯性,諸如4或8等。可利用HICAMP資料對區塊Id映射(即內容可定址性)來擴大此快取記憶體機構。此映射係藉由記憶體控制器而非要求快取記憶體中的資料,而實施類似於BFBC操作。快取記憶體中的區塊又構成到記憶體控制器的參考。當從快取刪除區塊時,在記憶體控制器中減少其參考計數(如此取代必須跳過由暫存器所參考的任何區塊)。
該快取記憶體支援回收一實體區塊Id的資料區塊之操作,若該實體區塊Id存在的話。其亦支援傳回指定資料區塊的p區塊Id,若該實體區塊Id存在的話,或可依賴記憶體控制器以執行此映射。從經過比較的資料,快取記憶體分別地儲存區塊的實體區塊Id。這是p區塊Id的寬度之個別記憶庫,具有用於各個具有R列的C個記憶庫之R*C登錄點,即、每一快取線一個。只要支援從區塊到p區塊Id的映射,可將此與支援p區塊Id的查閱之快取記憶體目錄加以組合。
在未命中(miss)的例子中,快取記憶體也支援在被稱為”打開”的暫時狀態中之一區塊的配置,該狀態在快取記憶體目錄中以額外的位元來代表。如此使區塊能夠追加地寫入快取記憶體中,然後當完成時”固定(committed)”到記憶體,此操作僅在決定該系統p區塊Id對應區塊資料之時被允許。尤其是,當從最初配置暫存器移動其p區塊Id時或當其被儲存到記憶體內時,或當其正從快取記憶體去除時,方可固定區塊到記憶體。固定必須決定資料的系統指定p區塊Id及可能須移動該線到該資料所雜湊的列。固定可以決定具有此資料的區塊已存在於快取記憶體中,並藉由現存的區塊和快取線在區段中取代原有資料使原有資料釋放。
快取記憶體支援”打開”新或現存的快取線來寫入。若新的,則新線被配置旗標為打開。若現存且線已具有額外參考,則資料被拷貝到新快取線且此新的快取線被配置旗標為打開。固定快取線以關上修改,及依據上述內容來決定其區塊Id。
快取記憶體在任何指定時間中只曾經包含至多一資料區塊的拷貝之事實提高習知處理器快取記憶體的快取記憶體利用性。具有各種軟體技術,諸如在區塊邊界上校直資料和碼及使用標準化指令順序等,期待增加快取記憶體中的共享。
記憶體操作
處理器經由v區塊Id和位移量來存取資料。例如,習知程式的碼區段可參考本身,如此程式計數器是由區塊Id所指出的碼區段中之位移量。硬體橫貫物件的階層式結構以利用特定位移量來定位資料及傳回資料,或若沒有的話,則指出記憶體例外。當傳回資料時,其被載入到處理器暫存器內,其保留指出資料是否為區塊Id的標記。若是,則其是參考的類型。因為硬體查閱經由intraRef區塊Id來進行,所以反應於存取所傳回的資料中之區塊Id不是extraRef就是backRef,即、其是有效的應用程式位準指標或參考。
在硬體中可提供資料擷取當作索引載入操作,指定區塊Id和位移量,傳回特定位置的資料或區塊Id,或拋出例外/中斷。此操作向下遞迴出此樹,若存在的話以傳回在特定位移量的資料不然拋出例外並代表存取失敗。
在一實施例中,處理器支援一或多個重複暫存器,一或多個重複暫存器各個維持必須的狀態,以便經由多區塊資料DAG有效率地映射到目前記憶體位置且有效率地映射到下一位置的增加量。類似於習知電腦處理器中位址暫存器的使用,藉由經由重複暫存器來間接讀取和寫入而使讀取和寫入存取發生。
在較佳實施例中,由內容(BFBC)操作所擷取的硬體區塊,使用指定想要之區塊的資料和標記之參數,且傳回虛擬區塊Id給區塊。若BFBC參數指定區塊Id,則只能從已保有這些區塊Id的暫存器產生。當使用BFBF操作在新區塊中指定其區塊Id時,用於區塊的參考計數亦增加。
讀取包含區塊Id和BFBC的現存區塊是處理器能夠使區塊Id存在於暫存器中之唯一方法。因為無法從計算產生區塊Id。結果,無論藉由有效指定其內容或藉由傳遞(直接或間接)區塊Id,硬體系統可在各個區塊上維持準確的參數計數,及處理只能夠存取已接收區塊Id的
物件。
為了圖解說明一實施例中的基本操作,藉由產生字串的字元到區塊暫存器內,然後進行BFBC操作以得到用於包含那些字元的區塊之區塊Id,以零填充在尾端,使得HICAMP程式產生字串。若字串長於能夠塞進區塊的資料部位之字元B的數目,則程式遞迴地替字串中之每B個字元產生一區塊,且使用BFBC操作有效地將區塊連在一起以取得包含用於字串的字首和字尾的區塊Id之區塊。任何大於單一區塊尺寸的連續資料物件能以類似方式說明,例如,一陣列。
在一實施例中,大於區塊的物件可被視作包含用於字首樹的區塊Id和用於字尾樹的區塊Id之具有根節點的二元樹。區塊Id 0可被保留以代表資料是0。在另一實施例中,樹可以是四重樹,具有每一內節點達4子節點。我們意指區塊樹代表一狀態,其在邏輯上係連續部分而作為一物件,無論其是單一區塊或非簡易樹。
藉由具有用於另一物件的根節點之extraRef,被儲存當作虛擬區塊Id,且由VPBIM映射到實體區塊Id,使得物件有效包含到另一物件的指標。因此,藉由自動更新VPBIM以映射虛擬區塊Id到新物件的實體區塊Id,使得物件可被改成指向不同物件。在一實施例中,在包含特定實體區塊Id的目前映射上,比較交換操作支援此自動更新條件。因此,可藉由產生欲更新之物件的”虛擬”拷貝(到原有物件的另一實體區塊Id參考剛好有效),修正此拷貝,藉以產生具有新實體區塊Id的新物件來達成自動更新,然後若其尚未從虛擬拷貝改變,則自動更新VPBIM映射以映射到新實體區塊Id,及否則中止更新。然後,軟體可再重試操作,遵循與鎖定-釋放程式化類似的模式。
當產生具有對v區塊Id的新參考之區塊時,增加對應的v區塊Id上之參考計數。同樣地,當包含v區塊Id的區塊是釋放的時,減少對應的v區塊Id上之參考計數,當參考計數變成零時,有效使其釋放並且
去除其對對應實體區塊Id的參考。以更熟悉的字眼陳述,VPBIM為HICAMP中的”智慧型指標”同等物(即、extraRefs)維持參考計數。
I/O需要經過上述機構。即、沒有直接寫入至記憶體。各個DMA I/O僅以既定資料要求區塊,建立諸如上述一般的封包緩衝程式或碟區塊等物件。此消除預先配置I/O緩衝器的需要。若想要的話,只需要限制所接收的量。通常,可大量去除與網路建立有關的拷貝,尤其是若在網路酬載已達區塊限界之下啟動時。
現在已根據幾個例示實施例說明本發明,這幾個例示實施例係用於圖解說明所有型態而非限制。因此,無論在精於本技藝之人士從此處所包含的說明所衍生的硬體及/或軟體中,本發明都能夠在細節實施上具有許多變化。其中一變化係相關於將HICAMP實現當作經由單一邏輯記憶體控制器所操作的多處理器之實施例,如圖2所示。亦可藉由在區塊的配置上之不同單元之間的適當同步化及對VPBIM的更新,利用多記憶體控制器和處理器晶片來實現本發明。在另一變化中,雖然說明用於通用電腦,但是本發明亦可應用到網路封裝開關,使胞元/區塊配置具有重複抑制,在無須多重播放的特別最佳化之下就能提供內容的共享。亦可應用到具有記憶體系統的其他裝置。在另一變化中,歸屬於硬體的機構亦可取代成以微碼或受保護的軟體或甚至在可靠性上有些微耗損之未受保護的機構來實施。所有此種變化和其他變化被視作在本發明的範圍和精神內。
302‧‧‧指令
304‧‧‧記憶體
Claims (20)
- 一種電腦系統,包含:一內容可定址的實體記憶體,其包括複數個實體記憶體區塊,其中當該等記憶體區塊之一記憶體區塊係藉由將該記憶體區塊設定為一有效狀態而產生時,該記憶體區塊之內容被認為是不可改變的;及一記憶體控制器,其中將待寫入至該實體記憶體之資料與在寫入時間被指示為在一有效狀態中之該等記憶體區塊之一集合之內容相比較,以避免將資料寫入至被認為是不可改變的一記憶體區塊。
- 根據申請專利範圍第1項之系統,其中該記憶體控制器提供一多區塊資料規約,該多區塊資料規約為需要該等實體區塊之兩個或更多個來儲存之資料項目指定一代表,其中該記憶體控制器避免寫入被認為是不可改變的多區塊資料。
- 根據申請專利範圍第1項之系統,其中該等記憶體區塊之每一者具有相同之儲存容量。
- 根據申請專利範圍第1項之系統,其進一步包含與該記憶體控制器通信之一處理器,其中該處理器能夠僅藉由避免將資料寫入至被認為是不可改變的一記憶體區塊而將資料寫入至該實體記憶體。
- 根據申請專利範圍第1項之系統,其中該實體記憶體係揮發性的。
- 根據申請專利範圍第1項之系統,其中經比較之該等記憶體區塊之該集合包括在寫入時間被指示為在一有效狀態中之所有該等記憶體區塊。
- 一種電腦系統記憶體管理之方法,包含:在包括複數個實體記憶體區塊之一內容可定址實體記憶體中,藉由將該等記憶體區塊之一記憶體區塊設定為一有效狀態而產生該記憶體區塊,使得該記憶體區塊之內容被認為是不可變的;及使用一記憶體控制器以比較在寫入時間被指示為在一有效狀態中之該等記憶體區塊之一集合之內容,以避免將資料寫入至被認為是不可改變的一記憶體區塊。
- 根據申請專利範圍第7項之方法,其進一步包含:根據一多區塊資料規約而為需要該等實體區塊之兩個或更多個來儲存之資料項目指定一代表,其中該記憶體控制器避免寫入被認為是不可改變的多區塊資料。
- 根據申請專利範圍第7項之方法,其中指示該等記憶體區塊之某些係在一有效狀態中包含:若一實體記憶體區塊已經初始化或已經配置,則將該實體記憶體區塊視作有效。
- 根據申請專利範圍第7項之方法,其中指示該等記憶體區塊之某些係在一有效狀態中包含:維持用於該等實體記憶體區塊之每一者之一旗標,該旗標指示該實體記憶體區塊是否有效。
- 根據申請專利範圍第7項之方法,其中指示該等記憶體區塊之某些係在一有效狀態中包含:為該等實體記憶體區塊之每一者維持一參考計數,該參考計數指示每一該實體記憶區塊之有效參考的數目;及識別具有大於零之一對應參考計數之實體記憶體區塊作為有效實體記憶體區塊。
- 根據申請專利範圍第7項之方法,其進一步包含對於該等有效實 體區塊之某些或全部,將虛擬區塊識別(ID)映射至實體區塊識別(ID)。
- 根據申請專利範圍第12項之方法,其中該記憶體控制器藉由具有作為一輸入之區塊資料及作為一輸出之一區塊位址之一以內容來區塊擷取(BFBC)指令以寫入資料,其中在執行該BFBC指令之前,若該區塊資料是該集合之一者中的資料之一重複,則該區塊位址是一有效實體記憶體區塊的一位址,及其中在執行該BFBC指令之前,若該區塊資料不是該集合之一者中的資料之一重複,則該區塊位址是一重新配置的實體記憶體區塊之一位址。
- 根據申請專利範圍第13項之方法,其中該區塊位址係一實體區塊ID或一對應的虛擬區塊ID。
- 根據申請專利範圍第7項之方法,其中該等有效實體記憶體區塊被組織成複數個直接非環式圖形(DAG)。
- 根據申請專利範圍第15項之方法,其中該複數個DAG被限制成未包括多DAG循環參考迴圈。
- 根據申請專利範圍第7項之方法,其中對於該實體記憶體的一些或所有內容之一循序讀取和比較能力提供內容可定址性。
- 根據申請專利範圍第7項之方法,其中對於該實體記憶體的一些或所有內容之一平行讀取和比較能力提供內容可定址性。
- 根據申請專利範圍第7項之方法,其進一步包含:將該實體記憶體劃分成N個記憶庫,其中N是大於1之一整數;根據具有N個可能輸出的一雜湊函數來雜湊區塊資料以對該區塊資料提供一雜湊值。
- 根據申請專利範圍第7項之方法,其中經比較之該等記憶體區塊 之該集合包括在寫入時間被指示為在一有效狀態中之所有該等記憶體區塊。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US89777307P | 2007-01-26 | 2007-01-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201403322A TW201403322A (zh) | 2014-01-16 |
TWI499909B true TWI499909B (zh) | 2015-09-11 |
Family
ID=39669252
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW097102657A TWI417722B (zh) | 2007-01-26 | 2008-01-24 | 階層式不可改變的內容可定址的記憶體處理器 |
TW102135737A TWI499909B (zh) | 2007-01-26 | 2008-01-24 | 階層式不可改變的內容可定址的記憶體處理器 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW097102657A TWI417722B (zh) | 2007-01-26 | 2008-01-24 | 階層式不可改變的內容可定址的記憶體處理器 |
Country Status (5)
Country | Link |
---|---|
US (7) | US7650460B2 (zh) |
EP (1) | EP2115593B1 (zh) |
CN (2) | CN103473181B (zh) |
TW (2) | TWI417722B (zh) |
WO (1) | WO2008094455A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI610219B (zh) * | 2016-08-09 | 2018-01-01 | 捷鼎國際股份有限公司 | 資料儲存系統 |
Families Citing this family (120)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7644239B2 (en) | 2004-05-03 | 2010-01-05 | Microsoft Corporation | Non-volatile memory cache performance improvement |
US7490197B2 (en) | 2004-10-21 | 2009-02-10 | Microsoft Corporation | Using external memory devices to improve system performance |
US7421453B2 (en) * | 2005-08-16 | 2008-09-02 | International Business Machines Corporation | Asynchronous linked data structure traversal |
US8914557B2 (en) | 2005-12-16 | 2014-12-16 | Microsoft Corporation | Optimizing write and wear performance for a memory |
US7533236B1 (en) | 2006-05-11 | 2009-05-12 | Nvidia Corporation | Off-chip out of order memory allocation for a unified shader |
US7533237B1 (en) * | 2006-05-11 | 2009-05-12 | Nvidia Corporation | Off-chip memory allocation for a unified shader |
US9601199B2 (en) * | 2007-01-26 | 2017-03-21 | Intel Corporation | Iterator register for structured memory |
WO2008094455A2 (en) | 2007-01-26 | 2008-08-07 | Cheriton David R | Hierarchical immutable content-addressable memory processor |
US8407428B2 (en) | 2010-05-20 | 2013-03-26 | Hicamp Systems, Inc. | Structured memory coprocessor |
US8504791B2 (en) | 2007-01-26 | 2013-08-06 | Hicamp Systems, Inc. | Hierarchical immutable content-addressable memory coprocessor |
US8112594B2 (en) * | 2007-04-20 | 2012-02-07 | The Regents Of The University Of Colorado | Efficient point-to-point enqueue and dequeue communications |
US7716192B2 (en) * | 2007-05-08 | 2010-05-11 | Microsoft Corporation | Concurrent, lock-free object copying |
US8631203B2 (en) | 2007-12-10 | 2014-01-14 | Microsoft Corporation | Management of external memory functioning as virtual cache |
US8032707B2 (en) | 2008-09-15 | 2011-10-04 | Microsoft Corporation | Managing cache data and metadata |
US9032151B2 (en) | 2008-09-15 | 2015-05-12 | Microsoft Technology Licensing, Llc | Method and system for ensuring reliability of cache data and metadata subsequent to a reboot |
US7953774B2 (en) | 2008-09-19 | 2011-05-31 | Microsoft Corporation | Aggregation of write traffic to a data store |
US20100082564A1 (en) * | 2008-10-01 | 2010-04-01 | Navteq North America, Llc | Spatial Index for Locating Geographic Data Parcels Stored on Physical Storage Media |
US10152504B2 (en) * | 2009-03-11 | 2018-12-11 | Actian Netherlands B.V. | Column-store database architecture utilizing positional delta tree update system and methods |
US9442846B2 (en) | 2009-03-17 | 2016-09-13 | Cisco Technology, Inc. | High speed memory systems and methods for designing hierarchical memory systems |
US8433880B2 (en) | 2009-03-17 | 2013-04-30 | Memoir Systems, Inc. | System and method for storing data in a virtualized high speed memory system |
US8266408B2 (en) * | 2009-03-17 | 2012-09-11 | Memoir Systems, Inc. | System and method for storing data in a virtualized high speed memory system |
EP2460078A4 (en) * | 2009-07-28 | 2014-10-29 | Oricane Ab | METHOD FOR MANAGING MULTILAYER DATA STRUCTURES IN A PIPELINE MEMORY ARCHITECTURE |
US8473501B2 (en) * | 2009-08-25 | 2013-06-25 | Ontochem Gmbh | Methods, computer systems, software and storage media for handling many data elements for search and annotation |
US8205062B2 (en) * | 2009-10-14 | 2012-06-19 | Inetco Systems Limited | Tiered data management method and system for high performance data monitoring |
US8346812B2 (en) * | 2009-10-23 | 2013-01-01 | Intellidimension, Inc. | Indexing in a resource description framework environment |
US8380688B2 (en) * | 2009-11-06 | 2013-02-19 | International Business Machines Corporation | Method and apparatus for data compression |
US8504792B2 (en) * | 2009-12-22 | 2013-08-06 | Apple Inc. | Methods and apparatuses to allocate file storage via tree representations of a bitmap |
US8417733B2 (en) * | 2010-03-04 | 2013-04-09 | Oracle International Corporation | Dynamic atomic bitsets |
US8478543B2 (en) | 2010-04-05 | 2013-07-02 | California Institute Of Technology | System and method for nucleic acid sequence design |
US8307153B2 (en) * | 2010-05-05 | 2012-11-06 | Juniper Networks, Inc. | Power efficient and rule movement optimized TCAM management |
US8225065B2 (en) * | 2010-06-03 | 2012-07-17 | Microsoft Corporation | Hierarchical scalable memory allocator |
US9218135B2 (en) | 2010-06-16 | 2015-12-22 | Microsoft Technology Licensing, Llc | Hierarchical allocation for file system storage device |
US9834439B2 (en) | 2010-07-20 | 2017-12-05 | California Institute Of Technology | Biomolecular self-assembly |
KR101649925B1 (ko) * | 2010-10-13 | 2016-08-31 | 삼성전자주식회사 | 멀티 트레드 프로그램에서 변수의 단독 메모리 접근여부를 분석하는 방법 |
US9104663B1 (en) * | 2011-03-18 | 2015-08-11 | Emc Corporation | Dynamic allocation of memory for memory intensive operators |
US9501421B1 (en) * | 2011-07-05 | 2016-11-22 | Intel Corporation | Memory sharing and page deduplication using indirect lines |
JP5762878B2 (ja) * | 2011-08-08 | 2015-08-12 | 株式会社東芝 | key−valueストアを有するメモリシステム |
US9009436B2 (en) | 2011-08-09 | 2015-04-14 | SanDisk Technologies, Inc. | Flushed data alignment with physical structures |
WO2012167533A1 (zh) * | 2011-10-31 | 2012-12-13 | 华为技术有限公司 | 一种构建内存访问模型的方法及装置 |
JP5967967B2 (ja) * | 2012-02-13 | 2016-08-10 | キヤノン株式会社 | 情報処理装置およびその制御方法 |
US9747363B1 (en) * | 2012-03-01 | 2017-08-29 | Attivio, Inc. | Efficient storage and retrieval of sparse arrays of identifier-value pairs |
US9208082B1 (en) * | 2012-03-23 | 2015-12-08 | David R. Cheriton | Hardware-supported per-process metadata tags |
US20130275699A1 (en) * | 2012-03-23 | 2013-10-17 | Hicamp Systems, Inc. | Special memory access path with segment-offset addressing |
TWI480733B (zh) * | 2012-03-29 | 2015-04-11 | Phison Electronics Corp | 資料寫入方法、記憶體控制器與記憶體儲存裝置 |
CN103377129B (zh) * | 2012-04-11 | 2016-04-06 | 群联电子股份有限公司 | 数据写入方法、存储器控制器与存储器储存装置 |
US8830714B2 (en) | 2012-06-07 | 2014-09-09 | International Business Machines Corporation | High speed large scale dictionary matching |
CN103513958B (zh) * | 2012-06-27 | 2017-01-25 | 上海芯豪微电子有限公司 | 高性能指令缓存***和方法 |
US9015428B2 (en) | 2012-09-28 | 2015-04-21 | Hewlett-Packard Development Company, L.P. | Physical and logical counters |
CN103150124B (zh) * | 2013-01-29 | 2016-01-27 | 深圳市硅格半导体股份有限公司 | 一种解决sd协议超时的方法及装置 |
US9009203B2 (en) * | 2013-02-19 | 2015-04-14 | Sap Se | Lock-free, scalable read access to shared data structures using garbage collection |
CN104035838B (zh) * | 2013-03-08 | 2018-08-14 | 英特尔公司 | 硬件支持的存储日志记录 |
US9477558B2 (en) | 2013-03-08 | 2016-10-25 | Intel Corporation | Hardware supported memory logging |
CN105229980B (zh) | 2013-04-11 | 2018-11-16 | 马维尔以色列(M.I.S.L.)有限公司 | 利用可变关键字大小的精确匹配查找的方法及设备 |
US9323774B2 (en) | 2013-05-03 | 2016-04-26 | Nvidia Corporation | Compressed pointers for cell structures |
US9690837B1 (en) * | 2013-06-28 | 2017-06-27 | EMC IP Holding Company LLC | Techniques for preserving redundant copies of metadata in a data storage system employing de-duplication |
KR20150020385A (ko) * | 2013-08-13 | 2015-02-26 | 에스케이하이닉스 주식회사 | 데이터 저장 장치, 그것의 동작 방법 및 그것을 포함하는 데이터 처리 시스템 |
US9367449B2 (en) * | 2013-09-11 | 2016-06-14 | Owtware Holdings Limited, BVI | Hierarchical garbage collection in an object relational database system |
US9898501B2 (en) * | 2013-09-12 | 2018-02-20 | Neustar, Inc. | Method and system for performing transactional updates in a key-value store |
US9489409B2 (en) * | 2013-10-17 | 2016-11-08 | Sybase, Inc. | Rollover strategies in a N-bit dictionary compressed column store |
US9600551B2 (en) | 2013-10-24 | 2017-03-21 | Sap Se | Coexistence of message-passing-like algorithms and procedural coding |
US9684685B2 (en) | 2013-10-24 | 2017-06-20 | Sap Se | Using message-passing with procedural code in a database kernel |
FR3022372B1 (fr) * | 2014-06-13 | 2016-06-24 | Bull Sas | Recherche de correspondance d'element dans une liste |
KR20160025377A (ko) * | 2014-08-27 | 2016-03-08 | 에스케이하이닉스 주식회사 | 반도체 메모리 장치, 그것의 동작 방법 및 그것을 포함하는 데이터 저장 장치 |
US10296611B2 (en) | 2014-11-25 | 2019-05-21 | David Wein | Optimized rollover processes to accommodate a change in value identifier bit size and related system reload processes |
US10474648B2 (en) | 2014-11-25 | 2019-11-12 | Sap Se | Migration of unified table metadata graph nodes |
US10255309B2 (en) * | 2014-11-25 | 2019-04-09 | Sap Se | Versioned insert only hash table for in-memory columnar stores |
US10552402B2 (en) | 2014-11-25 | 2020-02-04 | Amarnadh Sai Eluri | Database lockless index for accessing multi-version concurrency control data |
US10042552B2 (en) | 2014-11-25 | 2018-08-07 | Sap Se | N-bit compressed versioned column data array for in-memory columnar stores |
US10725987B2 (en) | 2014-11-25 | 2020-07-28 | Sap Se | Forced ordering of a dictionary storing row identifier values |
US10558495B2 (en) | 2014-11-25 | 2020-02-11 | Sap Se | Variable sized database dictionary block encoding |
US9965504B2 (en) | 2014-11-25 | 2018-05-08 | Sap Se | Transient and persistent representation of a unified table metadata graph |
CN104503924B (zh) * | 2014-12-16 | 2018-02-13 | 华为技术有限公司 | 一种分层存储***中的区域分配方法及装置 |
JP6818982B2 (ja) * | 2015-06-01 | 2021-01-27 | エスゼット ディージェイアイ テクノロジー カンパニー リミテッドSz Dji Technology Co.,Ltd | ファイルを格納する方法 |
CN108139967B (zh) * | 2015-10-09 | 2021-07-20 | 华为技术有限公司 | 将数据流转换为阵列 |
US10528284B2 (en) | 2016-03-29 | 2020-01-07 | Samsung Electronics Co., Ltd. | Method and apparatus for enabling larger memory capacity than physical memory size |
US10678704B2 (en) | 2016-03-29 | 2020-06-09 | Samsung Electronics Co., Ltd. | Method and apparatus for enabling larger memory capacity than physical memory size |
US10437785B2 (en) | 2016-03-29 | 2019-10-08 | Samsung Electronics Co., Ltd. | Method and apparatus for maximized dedupable memory |
US9983821B2 (en) | 2016-03-29 | 2018-05-29 | Samsung Electronics Co., Ltd. | Optimized hopscotch multiple hash tables for efficient memory in-line deduplication application |
US10496543B2 (en) | 2016-03-31 | 2019-12-03 | Samsung Electronics Co., Ltd. | Virtual bucket multiple hash tables for efficient memory in-line deduplication application |
US9966152B2 (en) | 2016-03-31 | 2018-05-08 | Samsung Electronics Co., Ltd. | Dedupe DRAM system algorithm architecture |
US10204044B2 (en) * | 2016-05-18 | 2019-02-12 | Sap Se | Memory management process using data sheet |
US10101935B2 (en) | 2016-06-03 | 2018-10-16 | Samsung Electronics Co., Ltd. | System and method for providing expandable and contractible memory overprovisioning |
CA3029625A1 (en) | 2016-07-05 | 2018-01-11 | California Institute Of Technology | Fractional initiator hybridization chain reaction |
US10372606B2 (en) | 2016-07-29 | 2019-08-06 | Samsung Electronics Co., Ltd. | System and method for integrating overprovisioned memory devices |
US10515006B2 (en) | 2016-07-29 | 2019-12-24 | Samsung Electronics Co., Ltd. | Pseudo main memory system |
US10162554B2 (en) | 2016-08-03 | 2018-12-25 | Samsung Electronics Co., Ltd. | System and method for controlling a programmable deduplication ratio for a memory system |
US10268541B2 (en) * | 2016-08-15 | 2019-04-23 | Samsung Electronics Co., Ltd. | DRAM assist error correction mechanism for DDR SDRAM interface |
IL264831B (en) | 2016-08-30 | 2022-09-01 | California Inst Of Techn | Immunohistochemistry by hybridization chain reaction |
US10282436B2 (en) | 2017-01-04 | 2019-05-07 | Samsung Electronics Co., Ltd. | Memory apparatus for in-place regular expression search |
US10379939B2 (en) | 2017-01-04 | 2019-08-13 | Samsung Electronics Co., Ltd. | Memory apparatus for in-chip error correction |
US10831775B2 (en) | 2017-01-06 | 2020-11-10 | International Business Machines Corporation | Efficient representation, access and modification of variable length objects |
US10496311B2 (en) | 2017-01-19 | 2019-12-03 | International Business Machines Corporation | Run-time instrumentation of guarded storage event processing |
US10452288B2 (en) | 2017-01-19 | 2019-10-22 | International Business Machines Corporation | Identifying processor attributes based on detecting a guarded storage event |
US10732858B2 (en) | 2017-01-19 | 2020-08-04 | International Business Machines Corporation | Loading and storing controls regulating the operation of a guarded storage facility |
US10496292B2 (en) | 2017-01-19 | 2019-12-03 | International Business Machines Corporation | Saving/restoring guarded storage controls in a virtualized environment |
US10725685B2 (en) * | 2017-01-19 | 2020-07-28 | International Business Machines Corporation | Load logical and shift guarded instruction |
US10579377B2 (en) | 2017-01-19 | 2020-03-03 | International Business Machines Corporation | Guarded storage event handling during transactional execution |
US10489288B2 (en) | 2017-01-25 | 2019-11-26 | Samsung Electronics Co., Ltd. | Algorithm methodologies for efficient compaction of overprovisioned memory systems |
US10268413B2 (en) | 2017-01-27 | 2019-04-23 | Samsung Electronics Co., Ltd. | Overflow region memory management |
US10521143B2 (en) | 2017-03-23 | 2019-12-31 | Netapp Inc. | Composite aggregate architecture |
US10552042B2 (en) | 2017-09-06 | 2020-02-04 | Samsung Electronics Co., Ltd. | Effective transaction table with page bitmap |
US10713238B2 (en) | 2017-11-14 | 2020-07-14 | Snowflake Inc. | Database metadata in immutable storage |
TWI714003B (zh) * | 2018-10-11 | 2020-12-21 | 力晶積成電子製造股份有限公司 | 可執行人工智慧運算的記憶體晶片及其操作方法 |
US11347714B2 (en) | 2018-11-06 | 2022-05-31 | Snowflake Inc. | Tracking changes in database data |
US11106658B2 (en) | 2018-11-28 | 2021-08-31 | Snowflake Inc. | Task scheduling in database systems |
US11079955B2 (en) | 2018-12-17 | 2021-08-03 | Intel Corporation | Concept for approximate deduplication in storage and memory |
CN109885259B (zh) * | 2019-02-21 | 2022-05-06 | 缀初网络技术(上海)有限公司 | 基于有向无环图的轻量级容量证明方法及存储介质 |
CN111625180B (zh) * | 2019-02-27 | 2021-05-28 | 英韧科技(上海)有限公司 | 数据写入方法及装置、存储介质 |
CN110096453B (zh) * | 2019-04-11 | 2020-01-03 | 北京华三通信技术有限公司 | 数据处理方法及装置 |
US10910057B2 (en) | 2019-04-22 | 2021-02-02 | Western Digital Technologies, Inc. | CAM storage schemes and CAM read operations for detecting matching keys with bit errors |
JP7069455B2 (ja) * | 2019-04-26 | 2022-05-18 | 株式会社アクセル | 情報処理装置 |
US11615029B2 (en) * | 2019-12-30 | 2023-03-28 | Micron Technology, Inc. | Full multi-plane operation enablement |
WO2021231234A1 (en) * | 2020-05-12 | 2021-11-18 | Google Llc | Zero copy optimization for select * queries |
US11586439B2 (en) | 2020-10-20 | 2023-02-21 | Micron Technology, Inc. | Detecting infinite loops in a programmable atomic transaction |
US11740929B2 (en) | 2020-10-20 | 2023-08-29 | Micron Technology, Inc. | Registering a custom atomic operation with the operating system |
US11693690B2 (en) | 2020-10-20 | 2023-07-04 | Micron Technology, Inc. | Method of completing a programmable atomic transaction by ensuring memory locks are cleared |
US12020062B2 (en) | 2020-10-20 | 2024-06-25 | Micron Technology, Inc. | Method of executing programmable atomic unit resources within a multi-process system |
US11436187B2 (en) * | 2020-10-20 | 2022-09-06 | Micron Technology, Inc. | Method of notifying a process or programmable atomic operation traps |
EP4284925A1 (en) | 2021-01-26 | 2023-12-06 | California Institute of Technology | Allosteric conditional guide rnas for cell-selective regulation of crispr/cas |
US11947568B1 (en) * | 2021-09-30 | 2024-04-02 | Amazon Technologies, Inc. | Working set ratio estimations of data items in a sliding time window for dynamically allocating computing resources for the data items |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW457424B (en) * | 1998-05-11 | 2001-10-01 | Netlogic Microsystems Inc | Method and apparatus for implementing a learn instruction in a content addressable memory device |
US20030093616A1 (en) * | 2001-11-01 | 2003-05-15 | Slavin Keith R. | Low power, hash-content addressable memory architecture |
TWI260636B (en) * | 2001-12-28 | 2006-08-21 | Mosaid Technologies Inc | Low power content addressable memory architecture |
US20070022246A1 (en) * | 2002-12-30 | 2007-01-25 | Alon Regev | Distributed programmable priority encoder capable of finding the longest match in a single operation |
Family Cites Families (59)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4989137A (en) | 1984-07-12 | 1991-01-29 | Texas Instruments Incorporated | Computer memory system |
US4695949A (en) | 1984-07-19 | 1987-09-22 | Texas Instruments Incorporated | Method for efficient support for reference counting |
US5247634A (en) | 1990-03-20 | 1993-09-21 | Hewlett-Packard Company | Method of managing memory allocation by association of memory blocks with a tree structure |
WO1992006436A2 (en) | 1990-10-03 | 1992-04-16 | Thinking Machines Corporation | Parallel computer system |
JP3129440B2 (ja) * | 1992-04-16 | 2001-01-29 | シーメンス アクチエンゲゼルシヤフト | 冗長装置を有する集積半導体メモリ |
US5548775A (en) | 1993-12-30 | 1996-08-20 | International Business Machines Corporation | System and method for adaptive active monitoring of high speed data streams using finite state machines |
US5822749A (en) | 1994-07-12 | 1998-10-13 | Sybase, Inc. | Database system with methods for improving query performance with cache optimization strategies |
GB9417314D0 (en) | 1994-08-27 | 1994-10-19 | Int Computers Ltd | Method for performing joins in a database system |
DE59410112D1 (de) | 1994-09-19 | 2002-06-06 | Siemens Ag | Speicherverwaltungssystem eines Rechnersystems |
US5652864A (en) | 1994-09-23 | 1997-07-29 | Ibm | Concurrent storage allocations or returns without need to lock free storage chain |
US5685005A (en) | 1994-10-04 | 1997-11-04 | Analog Devices, Inc. | Digital signal processor configured for multiprocessing |
US6041389A (en) * | 1995-11-16 | 2000-03-21 | E Cirrus Logic, Inc. | Memory architecture using content addressable memory, and systems and methods using the same |
US5784699A (en) | 1996-05-24 | 1998-07-21 | Oracle Corporation | Dynamic memory allocation in a computer using a bit map index |
US5950231A (en) | 1996-11-25 | 1999-09-07 | Northern Telecom Limited | Memory manager system |
CN1202653A (zh) * | 1997-06-13 | 1998-12-23 | 精英电脑股份有限公司 | 存储器读取加速方法 |
US6389507B1 (en) * | 1999-01-15 | 2002-05-14 | Gigabus, Inc. | Memory device search system and method |
US6349372B1 (en) | 1999-05-19 | 2002-02-19 | International Business Machines Corporation | Virtual uncompressed cache for compressed main memory |
US6477544B1 (en) * | 1999-07-16 | 2002-11-05 | Microsoft Corporation | Single instance store for file systems |
US6848029B2 (en) | 2000-01-03 | 2005-01-25 | Dirk Coldewey | Method and apparatus for prefetching recursive data structures |
US20030236961A1 (en) * | 2000-11-07 | 2003-12-25 | Qiu Chaoxin C. | Systems and methods for management of memory in information delivery environments |
US6453403B1 (en) * | 2000-05-19 | 2002-09-17 | Sun Microsystems, Inc. | System and method for memory management using contiguous fixed-size blocks |
US6718425B1 (en) | 2000-05-31 | 2004-04-06 | Cummins Engine Company, Inc. | Handheld computer based system for collection, display and analysis of engine/vehicle data |
US7051078B1 (en) | 2000-07-10 | 2006-05-23 | Cisco Technology, Inc. | Hierarchical associative memory-based classification system |
US6643755B2 (en) | 2001-02-20 | 2003-11-04 | Koninklijke Philips Electronics N.V. | Cyclically sequential memory prefetch |
US7032158B2 (en) | 2001-04-23 | 2006-04-18 | Quickshift, Inc. | System and method for recognizing and configuring devices embedded on memory modules |
US6754776B2 (en) | 2001-05-17 | 2004-06-22 | Fujitsu Limited | Method and system for logical partitioning of cache memory structures in a partitoned computer system |
US6789156B1 (en) | 2001-05-22 | 2004-09-07 | Vmware, Inc. | Content-based, transparent sharing of memory units |
US6868476B2 (en) * | 2001-08-27 | 2005-03-15 | Intel Corporation | Software controlled content addressable memory in a general purpose execution datapath |
US7734811B2 (en) | 2001-12-07 | 2010-06-08 | Cisco Technology, Inc. | Multi-feature classification memory structure for associative matching |
US7245623B1 (en) | 2002-01-08 | 2007-07-17 | Cisco Technology, Inc. | System and method using hierarchical parallel banks of associative memories |
US7114152B2 (en) | 2002-01-08 | 2006-09-26 | International Business Machines Corporation | Method, apparatus, and program to determine the mutability of an object at loading time |
US7237075B2 (en) | 2002-01-22 | 2007-06-26 | Columbia Data Products, Inc. | Persistent snapshot methods |
US6934796B1 (en) | 2002-02-01 | 2005-08-23 | Netlogic Microsystems, Inc. | Content addressable memory with hashing function |
US6748504B2 (en) * | 2002-02-15 | 2004-06-08 | International Business Machines Corporation | Deferred copy-on-write of a snapshot |
US7269542B2 (en) | 2002-10-16 | 2007-09-11 | Sun Microsystems, Inc. | System and method for determining a cache optimized ordering of cells in an unstructured graph |
US7574423B2 (en) | 2003-03-20 | 2009-08-11 | International Business Machines Corporation | Partial data model exposure through client side caching |
US7293155B2 (en) | 2003-05-30 | 2007-11-06 | Intel Corporation | Management of access to data from memory |
US20050065955A1 (en) * | 2003-08-27 | 2005-03-24 | Sox Limited | Method of building persistent polyhierarchical classifications based on polyhierarchies of classification criteria |
US7096322B1 (en) * | 2003-10-10 | 2006-08-22 | Unisys Corporation | Instruction processor write buffer emulation using embedded emulation control instructions |
US7254748B1 (en) * | 2003-10-14 | 2007-08-07 | Netlogic Microsystems, Inc. | Error correcting content addressable memory |
US7257693B2 (en) * | 2004-01-15 | 2007-08-14 | Intel Corporation | Multi-processor computing system that employs compressed cache lines' worth of information and processor capable of use in said system |
KR100606812B1 (ko) | 2004-03-08 | 2006-08-01 | 엘지전자 주식회사 | 비디오 디코딩 시스템 |
US7594081B2 (en) | 2004-09-10 | 2009-09-22 | Cavium Networks, Inc. | Direct access to low-latency memory |
US20070055835A1 (en) * | 2005-09-06 | 2007-03-08 | Reldata, Inc. | Incremental replication using snapshots |
WO2008055269A2 (en) | 2006-11-04 | 2008-05-08 | Virident Systems, Inc. | Asymmetric memory migration in hybrid main memory |
US7590826B2 (en) | 2006-11-06 | 2009-09-15 | Arm Limited | Speculative data value usage |
WO2008094455A2 (en) * | 2007-01-26 | 2008-08-07 | Cheriton David R | Hierarchical immutable content-addressable memory processor |
US8504791B2 (en) | 2007-01-26 | 2013-08-06 | Hicamp Systems, Inc. | Hierarchical immutable content-addressable memory coprocessor |
US8407428B2 (en) | 2010-05-20 | 2013-03-26 | Hicamp Systems, Inc. | Structured memory coprocessor |
US9601199B2 (en) * | 2007-01-26 | 2017-03-21 | Intel Corporation | Iterator register for structured memory |
US9413825B2 (en) | 2007-10-31 | 2016-08-09 | Emc Corporation | Managing file objects in a data storage system |
CN101903869B (zh) * | 2007-12-21 | 2013-12-18 | 海坎普***公司 | 用于统一处理结构化数据和数据压缩的分层区块标识的数据通信 |
US8099541B2 (en) | 2008-01-22 | 2012-01-17 | Globalfoundries Inc. | Minivisor entry point in virtual machine monitor address space |
US7849293B2 (en) | 2008-01-31 | 2010-12-07 | International Business Machines Corporation | Method and structure for low latency load-tagged pointer instruction for computer microarchitechture |
JP5497754B2 (ja) | 2008-06-23 | 2014-05-21 | サンディスク アイエル リミテッド | アドホックフラッシュメモリ基準セル |
US8335889B2 (en) | 2008-09-11 | 2012-12-18 | Nec Laboratories America, Inc. | Content addressable storage systems and methods employing searchable blocks |
US8627471B2 (en) | 2008-10-28 | 2014-01-07 | Freescale Semiconductor, Inc. | Permissions checking for data processing instructions |
US8386750B2 (en) | 2008-10-31 | 2013-02-26 | Cray Inc. | Multiprocessor system having processors with different address widths and method for operating the same |
WO2011076120A1 (en) * | 2009-12-25 | 2011-06-30 | Shanghai Xin Hao Micro Electronics Co. Ltd. | High-performance cache system and method |
-
2008
- 2008-01-24 WO PCT/US2008/000983 patent/WO2008094455A2/en active Search and Examination
- 2008-01-24 CN CN201310403763.6A patent/CN103473181B/zh not_active Expired - Fee Related
- 2008-01-24 EP EP08724801.9A patent/EP2115593B1/en active Active
- 2008-01-24 TW TW097102657A patent/TWI417722B/zh not_active IP Right Cessation
- 2008-01-24 TW TW102135737A patent/TWI499909B/zh not_active IP Right Cessation
- 2008-01-24 CN CN2008800101541A patent/CN101652758B/zh not_active Expired - Fee Related
- 2008-01-25 US US12/011,311 patent/US7650460B2/en not_active Expired - Fee Related
-
2009
- 2009-12-17 US US12/653,889 patent/US8065476B2/en active Active
-
2011
- 2011-10-11 US US13/271,137 patent/US8230168B2/en active Active
-
2012
- 2012-06-26 US US13/533,125 patent/US8612673B2/en not_active Expired - Fee Related
-
2013
- 2013-10-24 US US14/062,301 patent/US8938580B2/en active Active
-
2014
- 2014-12-12 US US14/569,007 patent/US9520193B2/en active Active
-
2016
- 2016-10-26 US US15/335,178 patent/US10282122B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW457424B (en) * | 1998-05-11 | 2001-10-01 | Netlogic Microsystems Inc | Method and apparatus for implementing a learn instruction in a content addressable memory device |
US20030093616A1 (en) * | 2001-11-01 | 2003-05-15 | Slavin Keith R. | Low power, hash-content addressable memory architecture |
TWI260636B (en) * | 2001-12-28 | 2006-08-21 | Mosaid Technologies Inc | Low power content addressable memory architecture |
US20070022246A1 (en) * | 2002-12-30 | 2007-01-25 | Alon Regev | Distributed programmable priority encoder capable of finding the longest match in a single operation |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI610219B (zh) * | 2016-08-09 | 2018-01-01 | 捷鼎國際股份有限公司 | 資料儲存系統 |
Also Published As
Publication number | Publication date |
---|---|
WO2008094455A3 (en) | 2008-09-25 |
CN103473181B (zh) | 2017-06-13 |
US20120096221A1 (en) | 2012-04-19 |
US20150194213A1 (en) | 2015-07-09 |
US20080183958A1 (en) | 2008-07-31 |
TWI417722B (zh) | 2013-12-01 |
TW200900930A (en) | 2009-01-01 |
US20170109049A1 (en) | 2017-04-20 |
WO2008094455A2 (en) | 2008-08-07 |
US20140149656A1 (en) | 2014-05-29 |
EP2115593A2 (en) | 2009-11-11 |
CN103473181A (zh) | 2013-12-25 |
CN101652758B (zh) | 2013-10-16 |
US7650460B2 (en) | 2010-01-19 |
EP2115593B1 (en) | 2018-10-24 |
US9520193B2 (en) | 2016-12-13 |
EP2115593A4 (en) | 2013-01-09 |
US8938580B2 (en) | 2015-01-20 |
TW201403322A (zh) | 2014-01-16 |
US8230168B2 (en) | 2012-07-24 |
US20100100673A1 (en) | 2010-04-22 |
US8612673B2 (en) | 2013-12-17 |
US8065476B2 (en) | 2011-11-22 |
CN101652758A (zh) | 2010-02-17 |
US20120265931A1 (en) | 2012-10-18 |
US10282122B2 (en) | 2019-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI499909B (zh) | 階層式不可改變的內容可定址的記憶體處理器 | |
KR100959014B1 (ko) | Tlb 록 표시자 | |
AU2010265984C1 (en) | Scalable indexing in a non-uniform access memory | |
CN109952565B (zh) | 内存访问技术 | |
CN111858404B (zh) | 地址转换的方法和***、以及计算机可读介质 | |
KR20130018602A (ko) | Key-value 스토어를 포함하는 메모리 시스템 | |
US9208082B1 (en) | Hardware-supported per-process metadata tags | |
US20130297877A1 (en) | Managing buffer memory | |
CN112148217A (zh) | 全闪存储***的重删元数据的缓存方法、装置及介质 | |
US7562204B1 (en) | Identifying and relocating relocatable kernel memory allocations in kernel non-relocatable memory | |
CN114281719A (zh) | 用于通过地址映射来扩展命令编排的***及方法 | |
EP4348453A1 (en) | Tree-based data structure | |
CN111742304B (zh) | 当调试要在处理电路上执行的程序时访问元数据的方法 | |
US20230103230A1 (en) | Translation lookaside buffer entry allocation system and method | |
US20240241873A1 (en) | Tree-based data structure | |
Wang et al. | SCMKV: A Lightweight Log-Structured Key-Value Store on SCM |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |