TWI526829B - 電腦系統、用於存取儲存裝置之方法及電腦可讀儲存媒體 - Google Patents

電腦系統、用於存取儲存裝置之方法及電腦可讀儲存媒體 Download PDF

Info

Publication number
TWI526829B
TWI526829B TW099115556A TW99115556A TWI526829B TW I526829 B TWI526829 B TW I526829B TW 099115556 A TW099115556 A TW 099115556A TW 99115556 A TW99115556 A TW 99115556A TW I526829 B TWI526829 B TW I526829B
Authority
TW
Taiwan
Prior art keywords
memory
cache
data
auxiliary
processor
Prior art date
Application number
TW099115556A
Other languages
English (en)
Other versions
TW201107974A (en
Inventor
桑基弗 凱畢爾
瑞奇C 海勒林頓
Original Assignee
甲骨文股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 甲骨文股份有限公司 filed Critical 甲骨文股份有限公司
Publication of TW201107974A publication Critical patent/TW201107974A/zh
Application granted granted Critical
Publication of TWI526829B publication Critical patent/TWI526829B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/683Invalidation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

電腦系統、用於存取儲存裝置之方法及電腦可讀儲存媒體
本發明係關於電腦系統,且特定言之,係關於用以支援快閃記憶體之記憶體子系統硬體。
為增加電腦系統的效能,系統設計者可使用一階層配置之儲存裝置以利用通常藉由電腦程式展現之記憶體局域性。如本文中所使用的記憶體局域性,係指在一相對較短持續時間中或極接近範圍內,電腦程式頻繁存取若干相同或相關儲存位置之傾向。例如,在一虛擬記憶體實施方案中,可使用分頁以自一輔助儲存裝置每次一頁地將頻繁存取的資料帶入至主記憶體。假定存取主記憶體比存取該輔助記憶體快,然而一輔助記憶體裝置可以每儲存單元較少成本地儲存資料。或者或此外,頻繁存取之一資料複本可儲存於由具有一相對小總容量之若干更快裝置組成之一快取記憶體中。資料可儲存於一快取記憶體中(每次一快取行),其中一快取行通常小於一頁。
一般言之,現代的電腦系統使用一記憶體裝置階層,該記憶體裝置階層包含一或多個快取記憶體級(其中一次複製一快取行之資料)、一主記憶體區域(其中每次儲存一頁資料)、若干輔助儲存裝置級。快取記憶體裝置可緊密耦合至一處理單元及/或可包含於一處理單元內。主記憶體通常經由一快系統匯流排直接耦合至一或多個處理單元。輔助儲存裝置可經由一通用I/O介面系統(諸如並列ATA(PATA)、串列ATA(SATA)、小電腦系統介面(SCSI)、通用串列匯流排(USB)、周邊組件互連(PCI)及作為一I/O系統階層之部分之類似物)耦合至一或多個處理單元,而非為更直接耦合之記憶體裝置。當在主記憶體中未尋找到一所需頁面時(稱為一分頁錯誤(page fault)),則可使用被稱為直接記憶體存取(DMA)之一技術自輔助儲存裝置擷取該頁面。在DAM中,一輔助裝置可直接存取記憶體,可獨立於其他處理單元將一頁面傳送至主記憶體或自主記憶體傳送頁面。然而,該記憶體階層內之大多數資料的傳送需要一中央處理單元的參與。
除了上述考慮之外,電腦系統可(例如)藉由在該系統內提供多個處理單元(亦稱為多核心處理器),或藉由經由一網路或其他類型的互連將多個離散系統或子系統整合在一起以產生一又更複雜平行系統,而實施若干類型的平行處理。在提供對共用記憶體之存取之多核心系統中,存在兩個或兩個以上獨立、並行執行之處理器任務可嘗試在記憶體中並行存取相同可定址位置之可能性。例如,一任務可嘗試在其他任務嘗試讀取該位置之同時並行寫入該位置。在缺少預測順序或調節此等並行記憶體存取之某些技術(通常稱為一連貫性協定)的情況下,可能產生不可預測或錯誤的執行行為。例如,上述之兩個任務可取決於該寫入相對於該讀取之發生順序(其或者可完全隨機)而產生不同的計算結果。若一多核心系統中之不同處理單元嘗試局域地快取共用之資料,則可發生類似的問題。
當輔助裝置已經由DMA或其他方式存取記憶體時,亦可存在連貫性問題。當一處理單元存取一特定記憶體位置時,該處理單元將來自該特定位置之當前值儲存於快取記憶體中。若對該快取記憶體之更新不傳播至該輔助裝置,則下次存取該特定位置時,可自該輔助裝置載入該資料之一過時版本,覆寫該等更新。電腦系統使用各種連貫性協定以確保處理單元不使用一過時資料複本操作。在DMA實施方案中,可在清空已藉由一DMA存取而變得無效之快取行之硬體或軟體中保持快取記憶體連貫性。
可期望將低成本儲存裝置(諸如快閃記憶體)加至一電腦系統的記憶體階層,以相比於輔助裝置(諸如硬磁碟儲存裝置)降低總系統成本及增加效能。不幸的是,在無此等儲存裝置與主記憶體之間之DMA存取之情況下,可能出現連貫性問題。此外,此等儲存裝置可能需要專用、多指令存取操作。使用一中央處理單元實施此等存取操作係低效率的。因此,需要的是解決此等問題之用於將快閃記憶體類型的儲存裝置併入至一電腦系統的記憶體階層中之系統及方法。
本文揭示電腦系統及方法之若干實施例。在一實施例中,一種電腦系統包含經由一記憶體控制器耦合至一記憶體階層之一處理器。該記憶體階層包含隨機存取記憶體之一第一記憶體區域及快閃記憶體之一輔助記憶體區域。該記憶體控制器係經由一第一緩衝器耦合至該第一記憶體區域,且該輔助記憶體區域係經由一快閃記憶體控制器耦合至該記憶體控制器。該第一緩衝器及該快閃記憶體控制器係經由一單一介面耦合至該記憶體控制器。該記憶體控制器接收一請求以在該第一記憶體區域中存取一特定頁面。該處理器偵測對應於該請求之一分頁錯誤且回應於偵測該分頁錯誤,自該輔助記憶體區域將一頁面交換至該第一記憶體區域。
在一進一步實施例中,該處理器包含一命令序列器,該命令序列器經組態以在該輔助記憶體區域與該第一記憶體區域之間移動資料。為在該輔助記憶體區域與該第一記憶體區域之間移動資料,該命令序列器執行儲存於該第一記憶體區域中之一序列微命令。
在一又進一步實施例中,該電腦系統包含一快取記憶體,且該處理器包含一連貫性引擎。該連貫性引擎偵測對應於該請求之一分頁錯誤且回應於偵測該分頁錯誤,使該快取記憶體中之對應於該特定頁面之快取行無效,且清空該等無效快取行。在一又進一步實施例中,該連貫性引擎在該命令序列器在該輔助記憶體區域與該第一記憶體區域之間移動資料之前清空該等快取行。
在一又進一步實施例中,該第一記憶體區域及該輔助記憶體區域係透過一快取緩衝器而互連。為將資料自該第一記憶體區域移動至該輔助記憶體區域,該處理器自該第一記憶體區域讀取資料至該快取緩衝器,且將資料自該快取緩衝器寫入至該輔助記憶體區域。為將資料自該輔助記憶體區域移動至該第一記憶體區域,該處理器自該輔助記憶體區域讀取資料至該快取緩衝器,且將資料自該快取緩衝器寫入至該第一記憶體區域。
在一又進一步實施例中,該電腦系統中之一雙列直插記憶體模組包含該第一記憶體區域、該輔助記憶體區域、該第一緩衝器及該快閃記憶體控制器。在另一實施例中,該電腦系統進一步包含共用該第一記憶體區域及該輔助記憶體區域之至少兩個處理器。
在考慮以下描述及隨附圖式之後,此等及其他實施例將變得更顯而易見。
雖然本發明易於以若干修飾及替代性形式呈現,但是在圖式中藉由實例展示且在本文中詳細描述若干特定實施例。然而,應瞭解此等圖式及詳細描述不旨在將本發明限制於所揭示的特定形式,而相反,本發明係旨在涵蓋屬於如藉由隨附申請專利範圍所定義之本發明之精神及範疇內之所有修飾、等效物及替代。
多執行緒處理器架構之概述
圖1中展示繪示一多執行緒處理器10之一實施例之一方塊圖。在所繪示的實施例中,處理器10包含許多處理器核心100a-n,其等亦命名為「核心0」至「核心n」。處理器10之若干實施例可包含可變數目個核心100,諸如8個、16個,或任何其他合適的數目。核心100之各者係耦合至一對應L2快取記憶體105a-n,L2快取記憶體105a-n繼而經由一交叉開關(crossbar)110耦合至L3快取記憶體120。核心100a-n及L2快取記憶體105a-n通常分別可(共同地或個別地)稱為核心100及L2快取記憶體105。
藉由交叉開關110及L3快取記憶體120,核心100可耦合至可定位於處理器10的外部之多種裝置。在所繪示的實施例中,一或多個記憶體介面130可經組態以耦合至系統記憶體之一或多個記憶體庫(圖中未展示)。一或多個連貫性處理器介面140可經組態以將處理器10耦合至其他處理器(例如,在採用多個單元之處理器10的一多處理器環境中)。此外,系統互連器125將核心100耦合至一或多個周邊介面150及網路介面160。如下文更詳細描述,此等介面可經組態以將處理器10耦合至若干周邊裝置及網路。
核心100可經組態以執行指令且經組態以根據一特定指令集架構(ISA)處理資料。在一實施例中,核心100可經組態以實施SPARC ISA之一版本,(舉例而言)諸如SPARC V9、UltraSPARC架構2005、UltraSPARC架構2007,或UltraSPARC架構2009。然而,在其他實施例中,預期可採用任何期望的ISA,(舉例而言)諸如x86(32位元或64位元版本)、PowerPC或MIPS
在所繪示的實施例中,核心100之各者可經組態以獨立於其他者而操作,使得所有的核心100可平行執行。此外,如下文結合圖2之描述所述,在某些實施例中,核心100之各者可經組態以並行執行多個執行緒,其中一給定執行緒可包含可獨立於來自另一執行緒之指令執行之一指令集。(例如,一個別軟體處理程序(諸如一應用程式)可由可經排程用以藉由一作業系統執行之一或多個執行緒組成)。一此種核心100亦可被稱為一多執行緒(MT)核心。在一實施例中,核心100之各者可經組態以並行執行來自可變數目個執行緒(至多八個並行執行之執行緒)之指令。在一16核心實施方案中,處理器10因此可並行執行至多128個執行緒。然而,在其他實施例中,預期可提供其他數目個核心100,且預期核心100可並行處理不同數目個執行緒。
此外,如下文更詳細描述,在某些實施例中,核心100之各者可經組態以執行無程式順序之特定指令,其在本文中亦可被稱為無序執行或簡單地稱為OOO(out-of-order)。作為一特定執行緒之無序執行之一實例,可存在其等在程式順序上係隨一給定指令之後而又不取決於該給定指令之指令。若該給定指令之執行因某些原因(例如,由於一快取未命中)而延遲,則可在該給定指令完成之前執行後續指令,此可改良所執行之執行緒的整體執行。
如圖1中所示,在一實施例中,每一核心100可具有一專用對應L2快取記憶體105。在一實施例中,L2快取記憶體105可組態成為一集合關聯、回寫式快取記憶體,其係完全包含第一級快取記憶體狀態(例如,在核心100內快取記憶體之指令及資料)。為保持與第一級快取記憶體連貫,L2快取記憶體105之實施例可實施保持該第一級快取記憶體標記之一虛擬複本之一反向目錄。L2快取記憶體105可實施一連貫性協定(例如,MESI協定)以保持與處理器10中之其他快取記憶體連貫。在一實施例中,L2快取記憶體105可實施執行之一全儲存排序(TSO)模型,其中來自相同的執行緒之所有儲存指令必須按程式順序完成。
在各項實施例中,L2快取記憶體105可包含經組態以支援快取記憶體功能性及效能之多種結構。例如,L2快取記憶體105可包含:一未命中緩衝器,其經組態以儲存未命中該L2快取記憶體之請求;一填充緩衝器,其經組態以暫時儲存自L3快取記憶體120傳回之資料;一回寫式緩衝器,其經組態以暫時儲存有更動之收回資料(dirty evicted data)及窺探(snoop)複本回存資料;及/或一窺探緩衝器,其經組態以儲存自L3快取記憶體120接收之窺探請求。在一實施例中,L2快取記憶體105可實施一基於歷史預取器,其可嘗試分析L2未命中行為且對應地產生至L3快取記憶體120之預取請求。
交叉開關110可經組態以管理L2快取記憶體105與共用L3快取記憶體120之間之資料流。在一實施例中,交叉開關110可包含邏輯(舉例而言,諸如多工器或一交換組構(switch fabric)),其允許任何L2快取記憶體105存取L3快取記憶體120之任何記憶體庫,且其相反地允許資料自任何L3記憶體庫傳回至任何L2快取記憶體105。即,交叉開關110可組態成為允許通用點對點通信之M對N交叉開關。然而,在其他實施例中,可採用L2快取記憶體105與L3快取記憶體120之間之其他互連方案。例如,可利用網狀結構、環狀結構,或其他合適拓撲結構。
交叉開關110可經組態以並行處理來自L2快取記憶體105至L3快取記憶體120之資料請求以及來自L3快取記憶體120至L2快取記憶體105之資料回應。在某些實施例中,交叉開關110可包含邏輯以將資料請求及/或回應排入佇列,使得請求及回應在等待服務的同時不妨礙其他活動。此外,在一實施例中,交叉開關110可經組態以仲裁其可在多個L2快取記憶體105嘗試存取L3快取記憶體120之一單一記憶體庫時發生之衝突,或反之亦然。
L3快取記憶體120可經組態以快取用於由核心100快取記憶體使用的指令及資料。在所繪示的實施例中,L3快取記憶體120可組織成其各者可獨立存取之八個個別可定址記憶體庫,使得在無衝突的情況下,每一記憶體庫可並行地將資料傳回至一各自L2快取記憶體105。在某些實施例中,每一個別記憶體庫可使用集合關聯或直接映射技術實施。例如,在一實施例中,L3快取記憶體120可為一8百萬位元組(MB)快取記憶體,其中每1 MB記憶體庫係具有一64位元組行大小之16向集合關聯。在某些實施例中,L3快取記憶體120可實施為一回寫式快取記憶體,其中在收回一對應快取行之前,不將經寫入(有更動)之資料寫入至系統記憶體。然而,預期在其他實施例中,可以任何合適的方式組態L3快取記憶體120。例如,L3快取記憶體120可:使用更多或更少記憶體庫,或以不採用可獨立存取記憶體庫之一方案實施;可採用其他記憶體庫大小或快取記憶體幾何結構(例如,不同行大小或不同集合關聯程度);可採用直寫式代替回寫式行為;及可配置或可不配置於一寫入未命中。可實行及預期L3快取記憶體120組態之其他變更。
在某些實施例中,L3快取記憶體120可針對來自交叉開關110之請求及待發送至交叉開關110之結果實施佇列。此外,在某些實施例中,L3快取記憶體120可實施:一填充緩衝器,其經組態以儲存來自記憶體介面130之填充資料;一回寫式緩衝器,其經組態以儲存待寫入至記憶體之有更動收回資料;及/或一未命中緩衝器,其經組態以儲存不能作為簡單快取命中(例如,L3快取未命中、匹配較舊未命中之快取存取,諸如原子(atomic)操作之快取記憶體,其等可能需要多個快取存取等等)處理之L3快取記憶體存取。L3快取記憶體120可視情況地不同而實施為單一埠或多埠(亦即,能夠處理多個並行讀取及/或寫入存取)。無論係何種情形,L3快取記憶體120可實施仲裁邏輯以排定若干快取讀取及寫入請求器中之快取存取的優先順序。
並非所有來自核心100之外部存取必須透過L3快取記憶體120進行。在所繪示的實施例中,非快取記憶體單元(NCU)122可經組態以針對非快取記憶體資料(諸如,如下文關於周邊介面150及網路介面160所述之來自I/O裝置之資料)處理來自核心100之請求。
記憶體介面130可經組態以(例如)回應於快取記憶體填充請求及資料收回來管理L3快取記憶體120與系統記憶體之間之資料傳送。在某些實施例中,可實施記憶體介面130之多個例項,而每一例項經組態以控制系統記憶體之一各自記憶體庫。記憶體介面130可經組態以介接任何合適類型的系統記憶體,舉例而言,諸如全緩衝雙列直插記憶體模組(FB-DIMM)、雙倍資料速率或雙倍資料速率2、3或4同步動態隨機存取記憶體(DDR/DDR2/DDR3/DDR4 SDRAM),或Rambus DRAM(RDRAM)。在某些實施例中,記憶體介面130可經組態以支援介接多個不同類型的系統記憶體。
在所繪示的實施例中,處理器10亦可經組態以自除系統記憶體外之其他來源接收資料。系統互連器125可經組態以提供一中央介面用於此等來源與核心100、L2快取記憶體105及/或L3快取記憶體120之間之資料交換。在某些實施例中,系統互連器125可經組態以協調往返於系統記憶體之資料之直接記憶體存取(DMA)傳送。例如,經由記憶體介面130,系統互連器125可協調介於系統記憶體與經由網路介面160附接之一網路裝置之間之DMA傳送,或協調介於系統記憶體與經由周邊介面150附接之一周邊裝置之間之DMA傳送。
處理器10可經組態以於具有處理器10之其他例項或其他相容處理器之一多處理器環境中使用。在所繪示的實施例中,連貫性處理器介面140可經組態用以依保持各種處理器中之記憶體連貫性(例如,根據控管記憶體異動之一連貫性協定)之一方式實施不同處理器之間之高頻寬、直接晶片對晶片通信。
周邊介面150可經組態以協調處理器10與一或多個周邊裝置之間之資料傳送。此等周邊裝置可包含(例如且不限於)儲存裝置(例如,以磁媒體或光學媒體為主之儲存裝置,包含硬碟驅動器、磁帶驅動器、CD驅動器、DVD驅動器等等)、顯示裝置(例如,圖形子系統)、多媒體裝置(例如,音訊處理子系統),或任何其他合適類型的周邊裝置。在一實施例中,周邊介面150可實施一標準周邊介面之一或多個例項。例如,周邊介面150之一實施例可根據第1.x代、第2代、第3代周邊組件介面快速標準(PCI ExpressTM或PCIe)或該標準之另一合適變體以任何合適數目個I/O單工通道(lane)實施該標準。然而,預期可採用任何合適的介面標準或標準之組合。例如,在某些實施例中,周邊介面150可經組態以除了實施PCI ExpressTM以外或代替實施PCI ExpressTM,實施通用串列匯流排(USB)協定或IEEE 1394(Firewire)協定之一版本。
網路介面160可經組態以協調處理器10與經由一網路耦合至處理器10之一或多個網路裝置(例如,網路電腦系統或周邊裝置)之間之資料傳送。在一實施例中,網路介面160可經組態以執行實施一乙太網路(IEEE 802.3)標準(舉例而言,諸如十億位元乙太網路或100億位元乙太網路)所需之資料處理。然而,預期可實施任何合適的網路標準,包含即將推出的標準,諸如4百億位元乙太網路及1000億位元乙太網路。在某些實施例中,網路介面160可經組態以實施其他類型的網路協定,諸如光纖通道、乙太網路光纖通道(FCoE)、資料中心乙太網路、Infiniband,及/或其他合適的網路協定。在某些實施例中,網路介面160可經組態以實施多個離散網路介面埠。
動態多執行緒處理器核心之概述
如上所述,在一實施例中,核心100之各者可經組態用於多執行緒、無序執行。更特定言之,在一實施例中,核心100之各者可經組態以執行動態多執行緒。一般言之,在動態多執行緒之情況下,核心100之執行資源可經組態以有效地處理展現不同效能特性及資源需求之不同類型的計算工作負荷。此等工作負荷可因強調個別執行緒及多個執行緒執行之不同組合之一連續體(continuum)而改變。
在該連續體之一端,一計算工作負荷可包含許多獨立的任務,其中在特定效能準則內(例如,每秒總任務數目)完成總任務集合係系統效能中之比完成任何特定任務之速率更重要之一因素。例如,在特定類型的伺服器或交易處理環境中,可存在大量的個別用戶端或客戶請求(諸如網頁請求或檔案系統存取)。在此內容背景中,個別請求對處理器效能並非特別敏感。例如,請求可為I/O導向(I/O-bound)而非處理器導向型(processor-bound);完成一個別請求所需要之I/O存取(例如,至相對慢記憶體、網路,或儲存裝置)相對於所涉及之處理器作業時間在完成該請求所需總時間中佔用大部分時間。因此,能夠並行處理許多此等任務(例如,如獨立執行的執行緒)之一處理器在此種工作負荷可展現比強調僅執行一個或較小數目個並行任務之一處理器更佳之效能。
在該連續體之另一端,一計算工作負荷可包含個別任務,執行該等任務對處理器高度敏感。例如,包含重要數學分析及/或變換(例如,密碼編譯、圖形處理,科學計算)之一任務可為處理器導向多於I/O導向。此等任務可(例如)透過臆測執行(speculative execution)及採用指令級平行度而收益於強調單一任務執行之處理器。
動態多執行緒表示嘗試以靈活地適應於沿著上述之該連續體改變之工作負荷之一方式分配處理器資源。在一實施例中,核心100可經組態以實施精細微化多執行緒(fine-grained multithreading),其中每一核心可自對應於多個執行緒之一指令集區(pool of instruction)中選擇待執行之指令,使得來自不同執行緒之指令可經排程以相鄰執行。例如,在採用精細微化多執行緒之核心100之一管線實施例中,來自不同執行緒之指令可佔用相鄰管線級,使得來自數個執行緒之指令在一給定核心處理循環期間可處於各種執行級。透過使用精細微化多執行緒,核心100可經組態以有效地處理取決於並行執行緒處理比取決於個別執行緒執行多之工作負荷。
在一實施例中,核心100亦可經組態以實施改良處理器相依性工作負荷之效能之無序處理、臆測執行、暫存器重新命名及/或其他特徵。此外,核心100可經組態以在於一給定時間主動執行之執行緒之間中動態地分配多種硬體資源,使得若愈少執行緒正在執行中,則每一個別執行緒可能夠利用愈大地共用可用硬體資源。這可導致正在執行較少執行緒時增加個別執行緒效能,同時保持對支援展現更大數目個在其等之效能方面為較不相依於處理器之執行緒之工作負荷之靈活性。在若干實施例中,一給定核心100之資源(可在變化數目個執行緒之間動態分配該等資源)可包含分支資源(例如,分支預測器結構)、載入/儲存資源(例如,載入/儲存緩衝器及佇列)、指令完成資源(例如,重新排序緩衝器結構及提交邏輯)、指令發出(instruction issue)資源(例如,指令選擇及排程結構)、暫存器重新命名資源(例如,暫存器映射表),及/或記憶體管理單元資源(例如,轉譯後備緩衝器、頁面查核行程(page walk)資源)。
現參考圖2,其展示繪示耦合至一處理器210之一記憶體系統200之一實施例之一方塊圖。在所繪示的實施例中,處理器210包含記憶體控制器220及230,記憶體控制器220及230之各者係經由兩個單獨通道或鏈路耦合至記憶體模組。在一實施例中,每一通道或鏈路可包含每一方向中之一或多個單工通道,形成介於該記憶體控制器與若干記憶體裝置之間之一雙向資料路徑。在一替代性實施例中,每一記憶體控制器可支援一個、二個或更多個通道,且處理器210可包含多於兩個或少於兩個記憶體控制器。在所繪示的實施例中,展示記憶體控制器220經由一通道222耦合至一DRAM控制器241及一快閃記憶體控制器242(DRAM控制器241及快閃記憶體控制器242繼而耦合至一記憶體模組243)。展示記憶體控制器220經由一通道224耦合至一DRAM控制器251及一快閃記憶體控制器252(其等繼而耦合至一記憶體模組253)。記憶體控制器230亦可經由通道232及234耦合至額外地記憶體組件(圖中未展示)。
在操作期間,可藉由記憶體控制器220將以記憶體模組243內之一記憶體區域為目標之一記憶體請求放置於通道222上。DRAM控制器241或快閃記憶體控制器242可回應於偵測該記憶體請求係以記憶體模組243內之一記憶體區域為目標來處理該記憶體請求。下文陳述DRAM控制器241及快閃記憶體控制器242之操作之進一步細節。
圖3係記憶體系統200之一部分之一實施例之一更詳細方塊圖。在所繪示的實施例中,展示經由DRAM控制器251及快閃記憶體控制器252耦合至通道224之記憶體模組253。記憶體模組253包含一DRAM 340、一快閃記憶體330,及一雙向緩衝器350(快取記憶體)。在所繪示的實施例中,展示透過緩衝器350互連之快閃記憶體330及DRAM 340。
DRAM 340表示多種隨機存取儲存裝置之任一者,(舉例而言)諸如雙倍資料速率或雙倍資料速率2同步動態隨機存取記憶體(DDR/DDR2 SDRAM),或Rambus DRAM(RDRAM)。(Rambus及RDRAM係Rambus公司的註冊商標)。DRAM 340可包含以如熟習此項技術者已知之多種實體佈局之任一者配置之一或多個獨立儲存裝置集合(陣序)。在一實施例中,DRAM 340可具有10億位元組-80億位元組之一總容量。在一實施例中,DRAM控制器251可提供符合JEDEC之介面至DRAM 340。例如,DRAM控制器251及DRAM 340可包括一全緩衝DIMM(FB_DIMM),其中DRAM控制器251係一高階記憶體緩衝器(AMD)。
快閃記憶體330可包含以一陣列配置之一或多個電可擦除可程式唯讀記憶體(EEPROM)儲存裝置(晶片)。在一實施例中,快閃記憶體330可包括可依區塊為單位存取之一或多個NAND裝置。在一實施例中,快閃記憶體330可具有625億位元組(GB)至32兆位元組(terabyte)之一總容量。某些實例區塊大小係16千位元組(KB)、128千位元組、256千位元組、512千位元組等等,其中每一區塊可包含多個儲存頁面。緩衝器350可包含多種隨機存取儲存裝置之任一者,諸如DRAM或SRAM。在一實施例中,緩衝器350可具有8百萬位元組(MB)至128百萬位元組之一總容量。
在一替代性實施例中,記憶體模組253可為一單一設備,諸如包含DRAM 340、快閃記憶體330,及一雙向緩衝器350之一DIMM。在此實施例中,DRAM控制器251及快閃記憶體控制器252可實施為一單一主動控制器,DRAM控制器251及快閃記憶體控制器252與記憶體模組253分開或包含於記憶體模組253之上且經組態以協調快閃記憶體330與DRAM 340之間之傳送用於DRAM空間中未命中之記憶體存取。在操作期間,可透過緩衝器350緩衝DRAM 340與快閃記憶體330之間之資料傳送,以便調適介於DRAM 340與快閃記憶體330之間之存取速率差。例如,為將資料自快閃記憶體330傳送至DRAM 340,可將資料自快閃記憶體330傳送至緩衝器350並隨後自緩衝器350傳送至DRAM 340。類似地,為將資料自DRAM 340傳送至快閃記憶體330,可將資料自DRAM 340傳送至緩衝器350並隨後自緩衝器350傳送至快閃記憶體330。在一實施例中,緩衝器350可為具有兩個讀取/寫入埠之一單一儲存裝置。在一替代性實施例中,緩衝器350可實施為兩個單獨實體裝置。在任一實施例中,在一資料傳送期間,可針對從DRAM 340至快閃記憶體330之一傳送而分配一相異實體位址,且可針對從快閃記憶體330至DRAM 340之一傳送而分配一不同實體位址,從而允許該兩個傳送同時發生。
圖4繪示可在記憶體系統200中實施之一記憶體映射之一實施例。在所繪示的實施例中,一快閃記憶體虛擬位址空間430之一或多個區域可透過一緩衝器450映射至一DRAM實體位址空間440。DRAM實體位址空間440包含用於資料移動組態微程式碼之一空間411、用於移動狀態資訊之一空間412,及用於快閃記憶體位址佈局資訊及一平均抹寫損耗(wear leveling)映射之一空間413。用於快閃記憶體位址佈局資訊及一平均抹寫損耗映射之空間413可用於處置正常快閃記憶體操作且本文中將不進行進一步描述。下文描述DRAM實體位址空間440之其他部分之用途。
在一實施例中,可藉由執行一系列微程式碼指令來執行自快閃記憶體330傳送資料。例如,快閃記憶體控制器252可執行微程式碼指令,其等係在系統初始化時儲存於一預定DRAM 340區域中,例如,如圖4中所繪示之資料移動組態空間411。可藉由主機處理器使用一預定義格式將指令寫入至資料移動組態空間411中。表1中列出了針對快閃記憶體相關命令提供之微程式碼。
表1中列出的命令可編碼於一64位元訊框中,該訊框:使用4個位元以指示四個通用類別中之一類別;使用4個位元以指示每一命令類型中之一命令標註(flavor)(子類型);使用3個位元以指示一多層快閃記憶體裝置中之一層;及使用48個位址位元以指示該快閃記憶體虛擬記憶體空間中之一虛擬位址。在一實施例中,該48位元位址欄位可細分為用於一DIMM ID、一裝置ID、一區塊ID,及一頁面ID之若干欄位。表2繪示每一命令類別中之命令類別及標註。
在操作期間,該主機處理器的記憶體控制器可發出如旨在寫入至資料移動組態空間411中之一組態命令之上述命令之任一者。快閃記憶體控制器252可經組態以截取上述命令且解譯該命令之位元欄位。在一實施例中,該等上述命令之各者可藉由作為特定快閃記憶體之其之目標位址進行區分以便藉由快閃記憶體控制器252而非藉由DRAM控制器251進行解碼。
在一實施例中,表2中展示的該等命令之各者可實施為一序列微命令。例如,從快閃記憶體至DRAM之一移動命令可解碼為自快閃記憶體之一讀取,其後接著至DRAM之一寫入;且從DRAM至快閃記憶體之一移動命令可解碼為自DRAM之讀取,其後接著至快閃記憶體之一寫入。在電源開啟時間藉由初始化碼建構之每一微命令序列可以微命令之一命令結構(諸如,一連結清單或環形緩衝器)儲存於資料移動組態空間411中。在一連結清單實施方案中,該清單之最後節點可為一空值(null)節點以指示該序列之結束。在一緩衝器實施方案中,該清單節點可回指至第一節點以指示該序列之結束。在任一實施方案中,頭節點之位址可用於在資料移動組態空間中定位一給定序列。在一實施例中,在主機處理器210中之包含一狀態機或微序列器之一命令引擎可自資料移動組態空間411提取微命令並解碼微命令。純DRAM特定之經解碼之資料移動命令可寫入至一記憶體控制器佇列,以藉由一記憶體控制器排程器予以處置。因為具有來自2級快取記憶體或I/O DMA操作之其他命令,所以該記憶體控制器排程器可對此等命令執行相依性檢查。每一命令結構可包含儲存於移動狀態空間412中之指示對應序列之完成之一完成位元。一完成位元之確證可引起一設陷(trap)傳回至該主機處理器中之初始執行緒。若未確證該完成位元,狀態機的序列流可進入下一微命令。在一替代性實施例中,回應於一分頁錯誤之所有快閃記憶體相關操作(包含至DRAM或自DRAM之資料移動以及最後級快取記憶體連貫性操作)可實施於利用快閃記憶體控制器252之似DMA能力之一軟體驅動程式中。
在一實施例中,可在包含一有效負載之DRAM寫入命令待寫入至包含一微命令序列之資料移動組態空間411時發出快閃記憶體相關命令。快閃記憶體控制器252可解碼該有效負載以判定該等微命令以及快閃記憶體及DRAM中之位址值。
此外,在一實施例中,如上所述,將資料自快閃記憶體330移動至DRAM 340之一命令可實施為將資料自快閃記憶體330移動至快取緩衝器350,其後接著將資料自該緩衝器移動至DRAM 340。在將資料自快閃記憶體330傳送至該快取緩衝器350期間,可無需停止主機處理器之運作。該主機處理器可發出週期性查詢至記憶體模組,以判定從快閃記憶體330至該快取緩衝器350之資料傳送是否完成。一旦完成從快閃記憶體330至該快取緩衝器350之資料傳送,從快取緩衝器350至DRAM 340之資料移動可實施為自該主機處理器發出之指令以自快取緩衝器350讀取隨後接著寫入至DRAM 340。儘管在自快取緩衝器350傳送資料至DRAM 340期間,需要停止該主機處理器之運作,然而由此操作引起的延時量可遠小於包含於從快閃記憶體330至快取緩衝器350之資料移動之該延時或包含於從一系統(其中磁碟儲存裝置係提供於I/O階層中)中之一磁碟或一固態磁碟之資料移動中之延時。
在如本文中描述之某些實施例中,該主機處理器可能沒有察覺到快閃記憶體係存在於該記憶體階層中。此外,以上定義的方法消除來自該主機處理器(記憶體控制器)之快閃記憶體相關DRAM命令與其他DRAM命令之間之非同步性。該主機處理器可察覺到在其之命令執行序列中之兩種類型命令。在一實施例中,若該快取緩衝器350變滿,則該主機處理器在快取緩衝器350變空時停止運作。在I/O階層中之一磁碟或固態磁碟包含儲存於快閃記憶體中之頁面的一替代性實施例中,若快取緩衝器350中不存在足夠的可用空間用以容納一頁面,則該主機處理器可經由I/O階層修正一分頁錯誤。
在一實施例中,若因為一分頁錯誤而需要在快閃記憶體與DRAM之間交換一頁面,則一硬體執行緒可將待自快閃記憶體傳送至DRAM或自DRAM傳送至快閃記憶體之一區塊之一開始位址及一結束位址填入一程式化I/O(PIO)儲存。接著,該執行緒可發出該PIO儲存至定位於主機處理器210中之一連貫性引擎之該組態空間。該連貫性引擎可經組態以確保該主機處理器中之最後級快取記憶體(例如,圖1之L3快取記憶體120)在修正分頁錯誤時仍保持連貫性。該連貫性引擎可針對對應於受害頁面之每一快取行發出一全域無效。例如,在一實施例中,一8千位元組頁面可對應於128個快取行。該全域無效可引起所對應地快取行被標記為有更動。隨後,可自該快取記憶體清空所有的有更動快取行。一旦已清空該等快取記憶體,該連貫性引擎可將一認可傳回至啟動該引擎之該主機處理器的硬體執行緒,以指示完成該PIO儲存。在一實施例中,該PIO儲存可用作為對與同一硬體執行緒相關聯之較年輕載入及儲存實施一排序限制之一記憶體屏障(memory barrier)指令。在一替代性實施例中,操作該主機處理器之作業系統可選擇一頁面以自快取記憶體/DRAM收回並分配實體位址空間用於自快閃記憶體複製一新頁面至DRAM,其被宣告為非共用或非連貫性。
回應於第一PIO儲存之連貫性引擎的認可,該主機處理器可發出一第二PIO儲存至一命令引擎之組態空間,以開始自快閃記憶體傳送資料至DRAM或自DRAM傳送資料至快閃記憶體之處理程序。傳送可利用在系統初始化時儲存於資料移動組態空間411中之命令引擎微程式碼。第二PIO儲存可定義該快閃記憶體至DRAM或DRAM至快閃記憶體傳送微程式碼之開始位址及結束位址。在一實施例中,開始位址及結束位址可分別包括一連結清單之頭指標及尾指標。或者,開始位址及結束位址可指微程式碼命令之一環形緩衝器中之一開始點及結束點。接著,該主機處理器中之呼叫執行緒可發出另一PIO儲存至該命令引擎以自DRAM/L3快取記憶體讀取微程式碼命令。在擷取最後微程式碼命令之後,該命令引擎可發出一認可至該主機處理器執行緒,發信號至該主機處理器執行緒以使其離開停止運作之狀態。接著,所擷取的微程式碼命令可經解碼並分派至記憶體控制器220以經排入佇列作為至資料移動組態空間411之寫入。一快閃記憶體來源位址或目的地位址及一快閃記憶體傳送命令係放置於該寫入命令之資料部分中。接著,該主機處理器可執行快閃記憶體控制器242可使用預定義規則偵測及解碼之經排入佇列之寫入命令。
圖5繪示可用於修正一分頁錯誤之一處理程序500之一實施例。處理程序500可開始於宣告一分頁錯誤(方塊530)。在一實施例中,可回應於偵測一轉譯後備緩衝器(TLB)快取記憶體中之一未命中及/或一轉譯儲存緩衝器(TSB)記憶體中之一未命中而在一虛擬分頁系統中宣告一分頁錯誤。若該TSB係滿的且用於一新項目之空間僅可藉由自DRAM收回一近來最少使用(LRU)項目實現,則可需要一收回。若該TSB中存在足夠數目個無效項目,則一TLB未命中可分配此等項目用於一所請求頁面之分配且不需要自DRAM收回一頁面。若需要一收回(判定方塊540),則可保持DRAM訊務(方塊542)並可開始將所收回(舊)頁面自DRAM複製至一緩衝器之處理程序(方塊544)。在一實施例中,用於保持DRAM訊務之支援可內建於該記憶體控制器中。或者,在舊型系統(其中對該記憶體控制器之修改係不為人所期望的)中,可保持訊務且可針對每一快取行傳送(而非針對一全頁面傳送)讀取狀態。在此種情形下,可允許諸快取行傳送之間之其他DRAM訊務。用於保持DRAM訊務及狀態輪詢之支援可作為自DRAM之一正常讀取及至快取緩衝器之寫入而內建於一軟體驅動程式中。此等讀取及寫入可透通地透過該記憶體控制器。在複製處理程序期間,可自DRAM位址空間讀取該處理程序之狀態(方塊546)。例如,可依定期間隔(諸如以DRAM刷新速率)輪詢該狀態。若未完成該複製處理程序(判定方塊548),則該複製處理程序可繼續(方塊550)且可重新讀取該狀態(方塊546)。若完成該複製處理程序(判定方塊548),則可結束保持該DRAM訊務(方塊551)。隨後,可解映射一TLB及/或TSB中之一頁面轉譯項目(方塊552)且可將對應於目標頁面之局域快取行標記為有更動(方塊554)。此外,可使其他、非局域快取記憶體中之對應快取行無效(方塊556)。接著,可使有更動快取行無效(方塊558)。一旦完成上述之該等快取記憶體操作,便可執行資料移動命令以將舊頁面自緩衝器傳送至快閃記憶體(方塊560)。
在完成一頁面收回之後,或若不需要一頁面收回(判定方塊540),處理程序500可進入至執行資料移動命令以將一新頁面自該快閃記憶體傳送至一緩衝器(方塊570)。隨後,可執行在快閃記憶體與DRAM之間交換頁面之命令(方塊560)。可保持DRAM訊務(方塊572)並可開始自該緩衝器複製新頁面至DRAM之處理程序(方塊574)。在該複製處理程序期間,可自DRAM位址空間讀取該處理程序之狀態(方塊576)。若未完成該複製處理程序(判定方塊578),則該複製處理程序可繼續(方塊580)且可重新讀取該狀態(方塊576)。若完成該複製處理程序(判定方塊578),則可結束保持該DRAM訊務(方塊582)且可將一新頁面轉譯項目添加至該TLB及/或TSB(方塊590),完成該分頁錯誤處理。
圖6繪示可用於在快速記憶體與DRAM之間移動資料之一處理程序600之一實施例。可藉由判定需要傳送資料至快閃記憶體還是需要自快閃記憶體傳送資料開始處理程序600(方塊610)。若所需的傳送係將一資料區塊自DRAM移動至快閃記憶體(判定方塊620),則首先將該區塊自DRAM移動至一快取緩衝器(方塊630)。一旦完成移動至該快取緩衝器,便可發出一程式化I/O(PIO)儲存至一命令引擎,該命令引擎指定該DRAM內之一快閃記憶體組態空間(其包含用於執行至快閃記憶體之一寫入之微程式碼命令)中之一位址範圍(方塊632)。接著,可發出一PIO載入以引起該命令引擎擷取所指定的微程式碼命令(方塊634)。在完成擷取該等微程式碼命令之後,該命令引擎可發出一認可至該傳送之起始器及對應的PIO載入(方塊636)。接著,該命令引擎可發出作為一寫入命令之每一微程式碼命令至一記憶體控制器(方塊638)。該記憶體控制器可將該等寫入命令排入佇列作為至該DRAM內之該快閃記憶體組態空間之寫入,包含該命令之資料部分中之快閃記憶體中之一目的地位址(方塊640)。接著,該等排入佇列之命令可經執行以將資料區塊自該快取緩衝器傳送至快閃記憶體(方塊642),完成處理程序600。
若所需的傳送係將一資料區塊自快閃記憶體移動至DRAM(判定方塊620),則可將一PIO儲存發出至該命令引擎,該命令引擎指定該DRAM內之一快閃記憶體組態空間(其包含用於執行自快閃記憶體之一讀取之微程式碼命令)中之一位址範圍(方塊650)。接著,可發出一額外PIO儲存以引起該命令引擎擷取所指定的微程式碼命令(方塊652)。在完成擷取該等微程式碼命令之後,該命令引擎可發出一認可(方塊654)。接著,該命令引擎可發出作為一寫入命令之每一微程式碼命令至一記憶體控制器(方塊656)。該記憶體控制器可將該等寫入命令排入佇列作為至該DRAM內之該快閃記憶體組態空間之寫入,包含該命令之資料部分中之快閃記憶體中之一目的地位址(方塊658)。接著,該等排入佇列之命令可經執行以將該資料區塊自快閃記憶體傳送至一快取緩衝器(方塊660)。接著,將該區塊自該快取緩衝器移動至DRAM(方塊662),完成處理程序600。
應注意,在一替代性實施例中,以上詳細描述之處理程序500及600中所繪示的該等個別方塊可以一不同的順序執行及/或某些方塊可與其他者並行執行。進一步應注意,上述實施例可包括軟體。例如,可用硬體、軟體、韌體,或上述者之某些組合實施電腦系統200之功能性。在此等實施例中,可於一電腦可讀媒體上運載或儲存實施該等方法及機制之程式指令。經組態以儲存程式指令之許多類型的媒體係可用的且包含硬磁碟、軟碟片、CD-ROM、DVD、快閃記憶體、可程式化ROM(PROM)、隨機存取記憶體(RAM),及揮發性儲存器或非揮發性儲存器之若干其他形式。
儘管上文已相當詳細地描述該等實施例,然一旦完全瞭解本發明,熟習此項技術者將清楚許多變更及修飾。希望以下申請專利範圍解釋為包含所有此等變更及修飾。
10...處理器
100a-n...核心
105a-n...L2快取記憶體
110...交叉開關
120...L3快取記憶體
122...非快取記憶體單元(NCU)
125...系統互連器
130‧‧‧記憶體介面
140‧‧‧連貫性處理器介面
150‧‧‧周邊介面
160‧‧‧網路介面
200‧‧‧系統
210‧‧‧處理器
220‧‧‧記憶體控制器
222‧‧‧通道
224‧‧‧通道
230‧‧‧記憶體控制器
232‧‧‧通道
234‧‧‧通道
241‧‧‧DRAM控制器
242‧‧‧快閃記憶體控制器
243‧‧‧記憶體模組
251‧‧‧DRAM控制器
252‧‧‧快閃記憶體控制器
253‧‧‧記憶體模組
330‧‧‧快閃記憶體
340‧‧‧DRAM
350‧‧‧緩衝器
400‧‧‧記憶體映射
411‧‧‧用於資料移動組態微程式碼之空間
412‧‧‧用於移動狀態之空間
413‧‧‧用於快閃記憶體位址佈局及平均抹寫損耗映射之空間
430‧‧‧快閃記憶體虛擬位址空間
440‧‧‧DDRAM實體位址空間
450‧‧‧緩衝器
500‧‧‧處理程序
530‧‧‧宣告方塊
540‧‧‧確認頁面收回方塊
542‧‧‧保持方塊
544‧‧‧複製方塊
546‧‧‧讀取方塊
548‧‧‧確認複製完成方塊
550‧‧‧繼續複製方塊
551‧‧‧結束方塊
552‧‧‧解映射方塊
554‧‧‧標記方塊
556‧‧‧無效方塊
558‧‧‧無效方塊
560‧‧‧傳送方塊
570‧‧‧載入方塊
572‧‧‧保持方塊
574‧‧‧複製方塊
576‧‧‧讀取方塊
578‧‧‧確認複製完成方塊
580‧‧‧繼續複製方塊
582‧‧‧結束方塊
590‧‧‧新項目添加方塊
600‧‧‧處理程序
610‧‧‧判定方塊
620‧‧‧確認移動方塊
630‧‧‧傳送方塊
632‧‧‧發出方塊
634‧‧‧發出方塊
636‧‧‧接收方塊
638‧‧‧發出方塊
640‧‧‧排入方塊
642‧‧‧執行方塊
650‧‧‧發出方塊
652‧‧‧發出方塊
654‧‧‧接收方塊
656‧‧‧發出方塊
658‧‧‧排入方塊
660‧‧‧執行方塊
662‧‧‧傳送方塊
圖1係可耦合至包含快閃記憶體之若干儲存裝置之一處理器之一實施例之一通用方塊圖;
圖2係繪示耦合至一處理器之一記憶體系統之一實施例之一方塊圖;
圖3係一記憶體系統之一部分之一實施例之一更詳細方塊圖;
圖4繪示可在一記憶體系統中實施之一記憶體映射之一實施例;
圖5繪示可用於修正一分頁錯誤之一處理程序之一實施例;及
圖6繪示可用於在快閃記憶體與DRAM之間移動資料之一處理程序之一實施例。
200...系統
210...處理器
220...記憶體控制器
222...通道
224...通道
230...記憶體控制器
232...通道
234...通道
241...DRAM控制器
242...快閃記憶體控制器
243...記憶體模組
251...DRAM控制器
252...快閃記憶體控制器
253...記憶體模組

Claims (17)

  1. 一種電腦系統,其包括:一處理器,其經由一記憶體控制器耦合至一記憶體階層;其中該記憶體階層包含一第一記憶體區域及一輔助記憶體區域,該第一記憶體區域包括隨機存取記憶體,該輔助記憶體區域包括快閃記憶體,其中該第一記憶體區域及該輔助記憶體區域係透過一快取緩衝器互連;其中該記憶體控制器係經由一快閃記憶體控制器耦合至該輔助記憶體區域;其中回應於偵測一分頁錯誤,該處理器經組態以自該輔助記憶體區域將一頁面交換至該第一記憶體區域;其中為將資料自該第一記憶體區域移動至該輔助記憶體區域,該處理器經組態以:自該第一記憶體區域讀取資料至該快取緩衝器;及將資料自該快取緩衝器寫入至該輔助記憶體區域;及其中為將資料自該輔助記憶體區域移動至該第一記憶體區域,該處理器經組態以:自該輔助記憶體區域讀取資料至該快取緩衝器;及將資料自該快取緩衝器寫入至該第一記憶體區域。
  2. 如請求項1之電腦系統,其中該處理器包括一命令序列器,該命令序列器經組態以在該輔助記憶體區域與該第一記憶體區域之間移動資料。
  3. 如請求項2之電腦系統,其中該命令序列器執行儲存於 該第一記憶體區域中之一序列微命令,以在該輔助記憶體區域與該第一記憶體區域之間移動該資料。
  4. 如請求項2之電腦系統,其進一步包括至少一快取記憶體,其中該處理器進一步包括一連貫性引擎,其經組態以:偵測對應於一請求之一分頁錯誤,及回應於偵測該分頁錯誤,使該至少一快取記憶體中之對應於該特定頁面之一或多個快取行無效;及清空該一或多個快取行。
  5. 如請求項4之電腦系統,其中在該移動之前,該連貫性引擎經組態以清空該一或多個快取行。
  6. 如請求項1之電腦系統,其中該第一記憶體區域、該輔助記憶體區域,及該快閃記憶體控制器構成一雙列直插模組。
  7. 如請求項1之電腦系統,其中該處理器包含共用該第一記憶體區域及該輔助記憶體區域之至少兩個處理器。
  8. 一種用於存取儲存裝置之方法,其包括:自一處理器接收一請求以在一記憶體階層之一第一記憶體區域中存取一特定頁面,該第一記憶體區域包括隨機存取記憶體;偵測對應於該請求之一分頁錯誤,及回應於偵測該分頁錯誤,將一頁面自該記憶體階層之一輔助記憶體區域交換至該第一記憶體區域,該輔助區域包括快閃記憶體; 其中該第一記憶體區域及該輔助記憶體區域係透過一快取緩衝器互連;其中將資料自該第一記憶體區域移動至該輔助記憶體區域進一步包括:自該第一記憶體區域讀取資料至該快取緩衝器;及將資料自該快取緩衝器寫入至該輔助記憶體區域;及其中將資料自該輔助記憶體區域移動至該第一記憶體區域進一步包括:自該輔助記憶體區域讀取資料至該快取緩衝器;及將資料自該快取緩衝器寫入至該第一記憶體區域。
  9. 如請求項8之方法,其中交換一頁面進一步包括:該處理器內之一命令序列器在該輔助記憶體區域與該第一記憶體區域之間移動資料。
  10. 如請求項9之方法,其中在該輔助記憶體區域與該第一記憶體區域之間移動資料包括:執行儲存於該第一記憶體區域中之一序列微命令。
  11. 如請求項9之方法,其中該處理器包含至少一快取記憶體,且該方法回應於偵測該分頁錯誤,包含使該至少一快取記憶體中之對應於該特定頁面之一或多個快取行無效;及清空該一或多個快取行。
  12. 如請求項11之方法,其中在該輔助記憶體區域與該第一記憶體區域之間移動資料之前清空該一或多個快取行。
  13. 如請求項8之方法,其中該第一記憶體區域、該輔助記憶體區域,及該快閃記憶體控制器構成一雙列直插模 組。
  14. 如請求項8之方法,其進一步包括由至少兩個處理器共用該第一記憶體區域及該輔助記憶體區域。
  15. 一種包含用於致能一記憶體控制器之指令之電腦可讀儲存媒體,當執行該等指令時,使該記憶體控制器能夠:自一處理器接收一請求以在一記憶體階層之一第一記憶體區域中存取一特定頁面,該第一記憶體區域包括隨機存取記憶體;偵測對應於該請求之一分頁錯誤;及回應於偵測該分頁錯誤,將一頁面自該記憶體階層之一輔助記憶體區域交換至該第一記憶體區域,該輔助區域包括快閃記憶體;其中該第一記憶體區域及該輔助記憶體區域係透過一快取緩衝器互連;其中將資料自該第一記憶體區域移動至該輔助記憶體區域進一步包括:自該第一記憶體區域讀取資料至該快取緩衝器;及將資料自該快取緩衝器寫入至該輔助記憶體區域;及其中將資料自該輔助記憶體區域移動至該第一記憶體區域進一步包括:自該輔助記憶體區域讀取資料至該快取緩衝器;及將資料自該快取緩衝器寫入至該第一記憶體區域。
  16. 如請求項15之電腦可讀儲存媒體,其進一步包括該處理器中之一命令序列器,其執行儲存於該第一記憶體區域 中之一序列微命令以交換該頁面。
  17. 如請求項15之電腦可讀儲存媒體,其中該處理器包含至少一快取記憶體且該等指令可藉由該處理器中之一連貫性引擎進一步執行以:偵測對應於該請求之一分頁錯誤;回應於偵測該分頁錯誤,使該至少一快取記憶體中之對應於該特定頁面之一或多個快取行無效;及清空該一或多個快取行。
TW099115556A 2009-05-15 2010-05-14 電腦系統、用於存取儲存裝置之方法及電腦可讀儲存媒體 TWI526829B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/466,643 US8180981B2 (en) 2009-05-15 2009-05-15 Cache coherent support for flash in a memory hierarchy
PCT/US2010/034697 WO2010132655A2 (en) 2009-05-15 2010-05-13 Cache coherent support for flash in a memory hierarchy

Publications (2)

Publication Number Publication Date
TW201107974A TW201107974A (en) 2011-03-01
TWI526829B true TWI526829B (zh) 2016-03-21

Family

ID=43069483

Family Applications (1)

Application Number Title Priority Date Filing Date
TW099115556A TWI526829B (zh) 2009-05-15 2010-05-14 電腦系統、用於存取儲存裝置之方法及電腦可讀儲存媒體

Country Status (5)

Country Link
US (1) US8180981B2 (zh)
EP (1) EP2430551B1 (zh)
CN (1) CN102804152B (zh)
TW (1) TWI526829B (zh)
WO (1) WO2010132655A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI743400B (zh) * 2017-11-06 2021-10-21 南韓商三星電子股份有限公司 用以避免負載填充衝突的設備以及系統

Families Citing this family (103)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8307180B2 (en) 2008-02-28 2012-11-06 Nokia Corporation Extended utilization area for a memory device
US9720616B2 (en) * 2008-06-18 2017-08-01 Super Talent Technology, Corp. Data-retention controller/driver for stand-alone or hosted card reader, solid-state-drive (SSD), or super-enhanced-endurance SSD (SEED)
US20100262979A1 (en) * 2009-04-08 2010-10-14 Google Inc. Circular command queues for communication between a host and a data storage device
US8595572B2 (en) 2009-04-08 2013-11-26 Google Inc. Data storage device with metadata command
US8874824B2 (en) 2009-06-04 2014-10-28 Memory Technologies, LLC Apparatus and method to share host system RAM with mass storage memory RAM
US8296496B2 (en) * 2009-09-17 2012-10-23 Hewlett-Packard Development Company, L.P. Main memory with non-volatile memory and DRAM
US8176220B2 (en) 2009-10-01 2012-05-08 Oracle America, Inc. Processor-bus-connected flash storage nodes with caching to support concurrent DMA accesses from multiple processors
US8595411B2 (en) * 2009-12-30 2013-11-26 Sandisk Technologies Inc. Method and controller for performing a sequence of commands
US8694737B2 (en) 2010-06-09 2014-04-08 Micron Technology, Inc. Persistent memory for processor main memory
US9448938B2 (en) * 2010-06-09 2016-09-20 Micron Technology, Inc. Cache coherence protocol for persistent memories
US8751714B2 (en) * 2010-09-24 2014-06-10 Intel Corporation Implementing quickpath interconnect protocol over a PCIe interface
US8613074B2 (en) 2010-09-30 2013-12-17 Micron Technology, Inc. Security protection for memory content of processor main memory
US8755221B2 (en) * 2010-10-18 2014-06-17 Avalanche Technology, Inc. Emulation of static random access memory (SRAM) by magnetic random access memory (MRAM)
US8793419B1 (en) * 2010-11-22 2014-07-29 Sk Hynix Memory Solutions Inc. Interface between multiple controllers
TWI417727B (zh) * 2010-11-22 2013-12-01 Phison Electronics Corp 記憶體儲存裝置、其記憶體控制器與回應主機指令的方法
US20120236010A1 (en) * 2011-03-15 2012-09-20 Boris Ginzburg Page Fault Handling Mechanism
US9323458B2 (en) * 2011-04-11 2016-04-26 Inphi Corporation Memory buffer with one or more auxiliary interfaces
US9170878B2 (en) 2011-04-11 2015-10-27 Inphi Corporation Memory buffer with data scrambling and error correction
US9324433B2 (en) * 2011-04-25 2016-04-26 Microsoft Technology Licensing, Llc Intelligent flash reprogramming
US8825944B2 (en) 2011-05-23 2014-09-02 International Business Machines Corporation Populating strides of tracks to demote from a first cache to a second cache
WO2013028849A1 (en) 2011-08-24 2013-02-28 Rambus Inc. Methods and systems for mapping a peripheral function onto a legacy memory interface
US9098209B2 (en) 2011-08-24 2015-08-04 Rambus Inc. Communication via a memory interface
US9317429B2 (en) * 2011-09-30 2016-04-19 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy over common memory channels
WO2013048493A1 (en) 2011-09-30 2013-04-04 Intel Corporation Memory channel that supports near memory and far memory access
EP2761464B1 (en) 2011-09-30 2018-10-24 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy having different operating modes
EP3712774B1 (en) 2011-09-30 2023-02-15 Tahoe Research, Ltd. Apparatus and method for implementing a multi-level memory hierarchy
DE112011106032B4 (de) * 2011-12-22 2022-06-15 Intel Corporation Energieeinsparung durch Speicherkanal-Abschaltung
WO2013095525A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Content-aware caches for reliability
US8825957B2 (en) 2012-01-17 2014-09-02 International Business Machines Corporation Demoting tracks from a first cache to a second cache by using an occupancy of valid tracks in strides in the second cache to consolidate strides in the second cache
US8966178B2 (en) * 2012-01-17 2015-02-24 International Business Machines Corporation Populating a first stride of tracks from a first cache to write to a second stride in a second cache
US8825953B2 (en) 2012-01-17 2014-09-02 International Business Machines Corporation Demoting tracks from a first cache to a second cache by using a stride number ordering of strides in the second cache to consolidate strides in the second cache
US9021201B2 (en) 2012-01-17 2015-04-28 International Business Machines Corporation Demoting partial tracks from a first cache to a second cache
US9417998B2 (en) 2012-01-26 2016-08-16 Memory Technologies Llc Apparatus and method to provide cache move with non-volatile mass memory system
US9311226B2 (en) 2012-04-20 2016-04-12 Memory Technologies Llc Managing operational state data of a memory module using host memory in association with state change
US9665375B2 (en) * 2012-04-26 2017-05-30 Oracle International Corporation Mitigation of thread hogs on a threaded processor and prevention of allocation of resources to one or more instructions following a load miss
US9164804B2 (en) 2012-06-20 2015-10-20 Memory Technologies Llc Virtual memory module
US9524248B2 (en) 2012-07-18 2016-12-20 Micron Technology, Inc. Memory management for a hierarchical memory system
US9116820B2 (en) 2012-08-28 2015-08-25 Memory Technologies Llc Dynamic central cache memory
US9582276B2 (en) 2012-09-27 2017-02-28 Apple Inc. Processor and method for implementing barrier operation using speculative and architectural color values
CN102999441B (zh) * 2012-11-15 2015-06-17 清华大学 一种细粒度内存访问的方法
US11037625B2 (en) 2012-11-20 2021-06-15 Thstyme Bermuda Limited Solid state drive architectures
CA2891355C (en) * 2012-11-20 2022-04-05 Charles I. Peddle Solid state drive architectures
KR102011135B1 (ko) 2012-12-11 2019-08-14 삼성전자주식회사 모바일 장치 및 그것의 스왑을 통한 데이터 관리 방법
US10910025B2 (en) * 2012-12-20 2021-02-02 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Flexible utilization of block storage in a computing system
US9244841B2 (en) * 2012-12-31 2016-01-26 Advanced Micro Devices, Inc. Merging eviction and fill buffers for cache line transactions
US8938561B2 (en) * 2013-01-10 2015-01-20 Skymedi Corporation Time-sharing buffer access system
US9081666B2 (en) 2013-02-15 2015-07-14 Seagate Technology Llc Non-volatile memory channel control using a general purpose programmable processor in combination with a low level programmable sequencer
JP2014178804A (ja) * 2013-03-14 2014-09-25 Sony Corp キャッシュ制御装置、プロセッサ、情報処理システム、および、その制御方法
CN103226526A (zh) * 2013-04-19 2013-07-31 无锡云动科技发展有限公司 一种存储器访问控制装置
US9367472B2 (en) * 2013-06-10 2016-06-14 Oracle International Corporation Observation of data in persistent memory
EP3025237A4 (en) * 2013-07-26 2017-04-19 Intel Corporation Methods and apparatus for supporting persistent memory
US9898410B2 (en) * 2013-09-10 2018-02-20 Intel Corporation Hybrid main memory using a fine-grain level of remapping
US20150106547A1 (en) * 2013-10-14 2015-04-16 Micron Technology, Inc. Distributed memory systems and methods
WO2015070110A2 (en) * 2013-11-07 2015-05-14 Netlist, Inc. Hybrid memory module and system and method of operating the same
US11182284B2 (en) 2013-11-07 2021-11-23 Netlist, Inc. Memory module having volatile and non-volatile memory subsystems and method of operation
US9558124B2 (en) * 2013-11-08 2017-01-31 Seagate Technology Llc Data storage system with passive partitioning in a secondary memory
US9135184B2 (en) * 2013-12-12 2015-09-15 International Business Machines Corporation Load-through fault mechanism
US9632832B2 (en) * 2014-02-27 2017-04-25 Empire Technology Development Llc Thread and data assignment in multi-core processors based on cache miss data
WO2015130314A1 (en) 2014-02-28 2015-09-03 Hewlett-Packard Development Company, L.P. Mapping mode shift
US10445025B2 (en) * 2014-03-18 2019-10-15 Micron Technology, Inc. Apparatuses and methods having memory tier structure and recursively searching between tiers for address in a translation table where information is only directly transferred between controllers
WO2015165055A1 (zh) * 2014-04-30 2015-11-05 华为技术有限公司 存储数据的方法、内存控制器和中央处理器
US9734066B1 (en) * 2014-05-22 2017-08-15 Sk Hynix Memory Solutions Inc. Workload-based adjustable cache size
US10248567B2 (en) 2014-06-16 2019-04-02 Hewlett-Packard Development Company, L.P. Cache coherency for direct memory access operations
US9659636B2 (en) * 2014-07-22 2017-05-23 Peter Wung Lee NAND memory array with BL-hierarchical structure for concurrent all-BL, all-threshold-state program, and alternative-WL program, odd/even read and verify operations
US10402319B2 (en) * 2014-07-25 2019-09-03 Micron Technology, Inc. Apparatuses and methods for concurrently accessing different memory planes of a memory
US20170192886A1 (en) * 2014-07-31 2017-07-06 Hewlett Packard Enterprise Development Lp Cache management for nonvolatile main memory
CN104298620A (zh) * 2014-10-10 2015-01-21 张维加 一种耐擦写低能耗的外接计算机加速设备
US9658976B2 (en) * 2014-11-07 2017-05-23 Mediatek Inc. Data writing system and method for DMA
US20160188468A1 (en) * 2014-12-26 2016-06-30 Intel Corporation Implementation of data coherence among devices
US9639276B2 (en) * 2015-03-27 2017-05-02 Intel Corporation Implied directory state updates
US10824362B2 (en) 2015-03-27 2020-11-03 Hewlett Packard Enterprise Development Lp File migration to persistent memory
US10204047B2 (en) 2015-03-27 2019-02-12 Intel Corporation Memory controller for multi-level system memory with coherency unit
WO2016160027A1 (en) * 2015-04-02 2016-10-06 Hewlett Packard Enterprise Development Lp Page cache on persistent memory
US20170017420A1 (en) * 2015-07-15 2017-01-19 Innovium, Inc. System And Method For Enabling High Read Rates To Data Element Lists
US10185501B2 (en) * 2015-09-25 2019-01-22 Intel Corporation Method and apparatus for pinning memory pages in a multi-level system memory
US10303372B2 (en) 2015-12-01 2019-05-28 Samsung Electronics Co., Ltd. Nonvolatile memory device and operation method thereof
US20170206172A1 (en) * 2016-01-19 2017-07-20 SK Hynix Inc. Tehcniques with os- and application- transparent memory compression
US20170262378A1 (en) * 2016-03-11 2017-09-14 Qualcomm Incorporated System and method for ram capacity optimization using rom-based paging
US10055358B2 (en) * 2016-03-18 2018-08-21 Oracle International Corporation Run length encoding aware direct memory access filtering engine for scratchpad enabled multicore processors
US10176241B2 (en) * 2016-04-26 2019-01-08 Servicenow, Inc. Identification and reconciliation of network resource information
WO2018080783A1 (en) 2016-10-31 2018-05-03 Rambus Inc. Hybrid memory module
US10795592B2 (en) * 2017-05-05 2020-10-06 Dell Products, L.P. System and method for setting communication channel equalization of a communication channel between a processing unit and a memory
US11947814B2 (en) 2017-06-11 2024-04-02 Pure Storage, Inc. Optimizing resiliency group formation stability
US11561906B2 (en) * 2017-12-12 2023-01-24 Advanced Micro Devices, Inc. Rinsing cache lines from a common memory page to memory
US10891228B2 (en) * 2018-02-12 2021-01-12 International Business Machines Corporation Cache line states identifying memory cache
EP4345635A3 (en) * 2018-06-18 2024-05-29 FLC Technology Group Inc. Method and apparatus for using a storage system as main memory
JP7075067B2 (ja) * 2018-06-22 2022-05-25 日本電気株式会社 ストレージ装置
US11055226B2 (en) * 2018-06-29 2021-07-06 Intel Corporation Mitigation of cache-latency based side-channel attacks
US11500570B2 (en) 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
US11354058B2 (en) * 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system
US11133076B2 (en) * 2018-09-06 2021-09-28 Pure Storage, Inc. Efficient relocation of data between storage devices of a storage system
US11520514B2 (en) 2018-09-06 2022-12-06 Pure Storage, Inc. Optimized relocation of data based on data characteristics
CN108829618B (zh) * 2018-09-14 2023-09-29 河南中光学集团有限公司 一种高速数据实时交换处理装置
US11188472B2 (en) 2019-02-13 2021-11-30 Google Llc Caching streams of memory requests
US11061670B2 (en) * 2019-03-05 2021-07-13 Marvell Asia Pte, Ltd. Dual-interface flash memory controller with execute-in-place cache control
US12001684B2 (en) 2019-12-12 2024-06-04 Pure Storage, Inc. Optimizing dynamic power loss protection adjustment in a storage system
KR20210079637A (ko) * 2019-12-20 2021-06-30 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법
US11275687B2 (en) * 2020-07-07 2022-03-15 Micron Technology, Inc. Memory cache management based on storage capacity for parallel independent threads
KR20220023649A (ko) * 2020-08-21 2022-03-02 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US11681448B2 (en) 2020-09-08 2023-06-20 Pure Storage, Inc. Multiple device IDs in a multi-fabric module storage system
US20220318040A1 (en) * 2021-03-31 2022-10-06 Ati Technologies Ulc System and method for providing page migration
US11832410B2 (en) 2021-09-14 2023-11-28 Pure Storage, Inc. Mechanical energy absorbing bracket apparatus
US11994723B2 (en) 2021-12-30 2024-05-28 Pure Storage, Inc. Ribbon cable alignment apparatus

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5590076A (en) 1995-06-21 1996-12-31 Advanced Micro Devices, Inc. Channel hot-carrier page write
DE69615332T2 (de) * 1996-01-12 2002-07-04 Tdk Corp "Flash"-Speichersystem
US5899994A (en) 1997-06-26 1999-05-04 Sun Microsystems, Inc. Flexible translation storage buffers for virtual address translation
US5956743A (en) 1997-08-25 1999-09-21 Bit Microsystems, Inc. Transparent management at host interface of flash-memory overhead-bytes using flash-specific DMA having programmable processor-interrupt of high-level operations
US6263398B1 (en) 1998-02-10 2001-07-17 Ramtron International Corporation Integrated circuit memory device incorporating a non-volatile memory array and a relatively faster access time memory cache
US6418516B1 (en) 1999-07-30 2002-07-09 International Business Machines Corporation Method and system for managing speculative requests in a multi-level memory hierarchy
US7243185B2 (en) 2004-04-05 2007-07-10 Super Talent Electronics, Inc. Flash memory system with a high-speed flash controller
US6510499B1 (en) * 2000-06-22 2003-01-21 International Business Machines Corporation Method, apparatus, and article of manufacture for providing access to data stored in compressed files
US6910107B1 (en) * 2000-08-23 2005-06-21 Sun Microsystems, Inc. Method and apparatus for invalidation of data in computer systems
ATE504446T1 (de) * 2002-12-02 2011-04-15 Silverbrook Res Pty Ltd Totdüsenausgleich
KR100493884B1 (ko) 2003-01-09 2005-06-10 삼성전자주식회사 시리얼 플래시 메모리에서의 현지 실행을 위한 제어 장치및 그 방법, 이를 이용한 플래시 메모리 칩
US7058784B2 (en) 2003-07-04 2006-06-06 Solid State System Co., Ltd. Method for managing access operation on nonvolatile memory and block structure thereof
US7269708B2 (en) * 2004-04-20 2007-09-11 Rambus Inc. Memory controller for non-homogenous memory system
KR100567912B1 (ko) 2004-05-28 2006-04-05 주식회사 하이닉스반도체 플래시 메모리 장치의 페이지 버퍼 및 이를 이용한 데이터프로그램 방법
KR100642911B1 (ko) 2004-11-30 2006-11-08 주식회사 하이닉스반도체 페이지 버퍼 및 이를 이용한 플래쉬 메모리 소자의 검증방법
KR100626392B1 (ko) 2005-04-01 2006-09-20 삼성전자주식회사 읽기 속도를 향상시킬 수 있는 플래시 메모리 장치
EP1712985A1 (en) * 2005-04-15 2006-10-18 Deutsche Thomson-Brandt Gmbh Method and system for storing logical data blocks into flash-blocks in multiple non-volatile memories which are connected to at least one common data I/O bus
JP4961693B2 (ja) 2005-07-29 2012-06-27 ソニー株式会社 コンピュータシステム
US8291295B2 (en) * 2005-09-26 2012-10-16 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
KR100678913B1 (ko) 2005-10-25 2007-02-06 삼성전자주식회사 가상 메모리 시스템에서 페이지 폴트를 줄이는 장치 및방법
US7543123B2 (en) 2005-11-07 2009-06-02 International Business Machines Corporation Multistage virtual memory paging system
US7657699B2 (en) 2005-11-09 2010-02-02 Sandisk Il Ltd. Device and method for monitoring operation of a flash memory
US7644224B2 (en) 2005-11-15 2010-01-05 Sandisk Il Ltd. Flash memory device and method
KR100772863B1 (ko) * 2006-01-13 2007-11-02 삼성전자주식회사 요구 페이징 기법을 적용한 시스템에서 페이지 교체 수행시간을 단축시키는 방법 및 장치
JP4842719B2 (ja) 2006-06-28 2011-12-21 株式会社日立製作所 ストレージシステム及びそのデータ保護方法
KR100799687B1 (ko) * 2006-09-19 2008-02-01 삼성전자주식회사 비휘발성 메모리를 공유하는 두 개 이상의 콘트롤러를내장한 시스템
US8074022B2 (en) * 2006-09-28 2011-12-06 Virident Systems, Inc. Programmable heterogeneous memory controllers for main memory with different memory modules
US7512743B2 (en) * 2006-11-07 2009-03-31 Spansion Llc Using shared memory with an execute-in-place processor and a co-processor
EP1939751A1 (en) * 2006-12-22 2008-07-02 Telefonaktiebolaget LM Ericsson (publ) Storing compressed data
KR100850515B1 (ko) 2007-01-24 2008-08-05 삼성전자주식회사 멀티레벨 셀 플래시 메모리를 갖는 메모리 시스템 및그것의 프로그램 방법
US7525842B2 (en) 2007-01-25 2009-04-28 Micron Technology, Inc. Increased NAND flash memory read throughput
US20080201540A1 (en) * 2007-02-16 2008-08-21 Ravi Sahita Preservation of integrity of data across a storage hierarchy
US7592830B2 (en) * 2007-08-03 2009-09-22 Qimonda Ag Integrated circuit device for receiving differential and single-ended signals
WO2009048707A1 (en) 2007-10-12 2009-04-16 Rambus Inc. Managing flash memory in computer systems
TW200933385A (en) * 2008-01-22 2009-08-01 Sonix Technology Co Ltd Microcontroller having dual-core architecture

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI743400B (zh) * 2017-11-06 2021-10-21 南韓商三星電子股份有限公司 用以避免負載填充衝突的設備以及系統

Also Published As

Publication number Publication date
US20100293420A1 (en) 2010-11-18
WO2010132655A2 (en) 2010-11-18
CN102804152A (zh) 2012-11-28
US8180981B2 (en) 2012-05-15
WO2010132655A3 (en) 2011-02-17
EP2430551A4 (en) 2015-01-07
TW201107974A (en) 2011-03-01
EP2430551A2 (en) 2012-03-21
EP2430551B1 (en) 2020-02-19
CN102804152B (zh) 2015-11-25

Similar Documents

Publication Publication Date Title
TWI526829B (zh) 電腦系統、用於存取儲存裝置之方法及電腦可讀儲存媒體
US11803486B2 (en) Write merging on stores with different privilege levels
US6918015B2 (en) Scalable directory based cache coherence protocol
US8706973B2 (en) Unbounded transactional memory system and method
US7657710B2 (en) Cache coherence protocol with write-only permission
TWI397813B (zh) 用於虛擬化交易式記憶體的總體溢位之裝置、方法與系統
US7305522B2 (en) Victim cache using direct intervention
US8838906B2 (en) Evict on write, a management strategy for a prefetch unit and/or first level cache in a multiprocessor system with speculative execution
US7305523B2 (en) Cache memory direct intervention
US9798590B2 (en) Post-retire scheme for tracking tentative accesses during transactional execution
US20150106567A1 (en) Computer Processor Employing Cache Memory With Per-Byte Valid Bits
US8099557B2 (en) Push for sharing instruction
US20140281299A1 (en) Opportunistic migration of memory pages in a unified virtual memory system
US6567900B1 (en) Efficient address interleaving with simultaneous multiple locality options
CN110959154A (zh) 用于线程本地存储数据访问的私有高速缓存
US20220066940A1 (en) Limited propagation of unnecessary memory updates
EP3736700B1 (en) Hybrid directory and snoopy-based coherency to reduce directory update overhead in two-level memory
US7024520B2 (en) System and method enabling efficient cache line reuse in a computer system
US11237960B2 (en) Method and apparatus for asynchronous memory write-back in a data processing system
JP3836836B2 (ja) メモリ複製オペレーション時の不正確なキャッシュ・ライン保護機構
JP2001043133A (ja) マルチプロセッサ・システムにおいてライトスルー・ストア・オペレーションでキャッシュ・コヒーレンシを維持するための方法およびシステム
US20230418758A1 (en) Tag processing for external caches
JP2009151457A (ja) キャッシュメモリシステムおよびキャッシュメモリ制御方法