TWI606343B - 支援擴充寫入之記憶體模組控制器 - Google Patents
支援擴充寫入之記憶體模組控制器 Download PDFInfo
- Publication number
- TWI606343B TWI606343B TW103102680A TW103102680A TWI606343B TW I606343 B TWI606343 B TW I606343B TW 103102680 A TW103102680 A TW 103102680A TW 103102680 A TW103102680 A TW 103102680A TW I606343 B TWI606343 B TW I606343B
- Authority
- TW
- Taiwan
- Prior art keywords
- write
- memory
- data
- processor
- memory module
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1471—Saving, restoring, recovering or retrying involving logging of persistent data for recovery
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1405—Saving, restoring, recovering or retrying at machine instruction level
- G06F11/141—Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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
- 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
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/82—Solving problems relating to consistency
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Computer Hardware Design (AREA)
Description
本發明係有關於支援擴充寫入之記憶體模組控制器。
若干電腦系統使用隨機存取記憶體(RAM)裝置作為相當快速存取資料的中間儲存裝置,該資料也係儲存於長期大容量儲存裝置(例如磁性記憶體、光學記憶體、快閃記憶體等)。藉此方式,藉將資料從長期大容量儲存裝置複製至中間RAM裝置,及藉從RAM裝置存取資料,電腦系統能夠執行更快速資料存取。
用於長期儲存的固態記憶體裝置包括非依電性隨機存取記憶體(NVRAM)諸如相變RAM(PCRAM)、憶阻器、及自旋轉移矩隨機存取記憶體(STT-RAM)。NVRAM為即便當去除電力時仍然維持資料儲存於其中的持續性記憶體系統。
依據本發明之一實施例,係特地提出一種方法包括將與一寫請求相聯結的復原資訊儲存於一記憶體而無處
理器的介入,該復原資訊係當該寫被中斷時輔助重做或取消由該寫請求所請求的一寫,該寫請求係接收自一處理器及包含一目的地位址及新資料;及若該寫未被中斷,則將該新資料寫入該記憶體中的該目的地位址而無處理器的介入。
100‧‧‧系統
105‧‧‧寫中斷檢測器
110‧‧‧處理器
112‧‧‧記憶體控制器
120‧‧‧記憶體匯流排
130‧‧‧記憶體模組
140‧‧‧記憶體模組控制器
150‧‧‧記憶體
160‧‧‧日誌
162‧‧‧日誌紀錄
182‧‧‧可定址儲存位置、可定址位置
402‧‧‧記憶體模組控制器匯流排
410‧‧‧匯流排介面
420‧‧‧控制邏輯
430‧‧‧緩衝器
440‧‧‧記憶體介面
450‧‧‧寫中斷檢測器
500、600、700‧‧‧方法
510-560、610-680、710-760‧‧‧處理方塊
P1‧‧‧指令
MMC-1~N‧‧‧記憶體存取操作
圖1A為依據本文揭示之教示,藉具現的記憶體模組控制器之一實施例處理記憶體存取指令之代表性指令流程圖之一實施例。
圖1B為具有圖1A之記憶體模組控制器實施例的一記憶體模組的處理器系統之一實施例。
圖2示例說明藉圖1A及1B之記憶體模組控制器實施例處理的基元寫指令之一實施例的代表性指令格式實施例。
圖3示例說明藉圖1A及1B之記憶體模組控制器實施例處理的寫入時複製(COW)寫指令之一實施例的代表性指令格式實施例。
圖4為圖1A、1B、2及/或3的記憶體模組控制器之一實施例。
圖5為可具現以執行一基元寫指令之一處理程序之代表性流程圖之一實施例。
圖6為可具現以執行一記憶體的復原之一處理程序之代表性流程圖之一實施例。
圖7為可具現以執行一COW-寫指令之一處理程
序之代表性流程圖之一實施例。
此處揭示的方法、裝置、及製造物件之實施例可用以具現處理基元寫入(atomic write)指令及/或寫入時複製(copy-on-write,COW)指令的記憶體模組控制器。此等記憶體模組控制器可登錄與用在處理中斷的指令相聯結的復原資訊。此處揭示之實施例也許可具現記憶體模組控制器,其根據來自處理器的單一指令,及/或使用比較先前系統要求的更少的處理器介入,執行對一記憶體的多記憶體存取過程。揭示的實施例可用以在具有非依電性記憶體(例如快閃裝置、憶阻器裝置、PCRAM裝置、STT-RAM裝置等)及/或依電性記憶體(例如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)等)的記憶體模組中具現記憶體模組控制器。揭示實施例連結任何合宜型別的持續性儲存裝置使用係有用的,包括非依電性記憶體及/或依電性記憶體具有恆定電源(例如電池後備)許可該等依電性記憶體操作為長期儲存裝置,及/或其它虛擬非依電性記憶體[例如具有短期緊急電源(例如來自電池或超電容器)的動態隨機存取記憶體(DRAM)及非依電性後備儲存裝置(例如等於DRAM儲存容量的快閃儲存容量)]。
於此處描述的實施例中,一系統可包括一處理器具有一集積式記憶體控制器、一記憶體匯流排、及具有一記憶體模組控制器及一記憶體的一記憶體模組。該系統許
可使用者儲存與存取資料或電腦可讀取指令於該記憶體,以藉執行該等指令而具現其它方法。該處理器的記憶體控制器控制由該處理器透過記憶體匯流排所執行的記憶體存取操作(例如讀、寫等)。該記憶體模組的記憶體模組控制器控制該記憶體,且可執行記憶體存取操作而無需處理器(或記憶體控制器)的介入。
如此處描述,一處理器乃能夠執行許多計算工作的通用處理單元。相反地,記憶體模組控制器並非通用反而係特別用於控制記憶體。據此,如此處描述,一記憶體模組控制器並非處理器。此外,如此處描述,該記憶體控制器係為該處理器的一代理器。據此,當於此處述及一處理器時,須瞭解相同稱謂可指稱處理器及/或記憶體控制器。
所揭示的實施例許可記憶體模組以自主方式進行操作,比較先前系統所需,要求相對較少的外部處理器或裝置(例如記憶體控制器)的介入。藉此方式,藉由比較先前系統所需,要求與處理器及/或記憶體控制器的較少外部通訊,所揭示的實施例許可記憶體模組相對更有效地執行記憶體操作。
所揭示的記憶體模組控制器實施例可佇列等候,或從處理器及/或記憶體控制器快取記憶體存取請求或指令以隨後執行一或多個記憶體存取操作,而無需處理器及/或記憶體控制器的進一步介入。據此,此處揭示的記憶體模組控制器實施例能夠自主管理與執行記憶體操作,而
無需來自其它處理器及/或記憶體控制器的外部控制及通訊。
此處揭示的實施例當儲存或更新資料(例如透過基元寫(atomic-write)指令或寫入時複製寫(COW寫)指令)於記憶體時,實質上減少來自外部處理器及/或記憶體控制器需要的匯流排通訊量。
此處揭示的記憶體模組控制器實施例可用在具有固態記憶體裝置的記憶體模組。此處揭示的記憶體模組控制器實施例執行基元寫入及/或COW操作而相當少有來自外部處理器及/或記憶體控制器的涉入(例如在一外部記憶體匯流排上的指令及資料的移動較少)。舉例言之,所揭示的記憶體模組控制器可接收來自一處理器的一請求或指令(例如基元寫或COW寫),以在一記憶體模組的一記憶體位置執行該請求或該指令(例如登錄復原資訊,將資料寫入一目的地位址,及抹除復原資訊)俾將資料寫入及/或更新在一目的地位址,而無需要求超越初始接收自該處理器的請求或指令更進一步的處理器介入。
此處揭示的記憶體模組控制器實施例可接收基元指令(atomic command),及回應之,登錄相聯結的復原資訊於一非依電性日誌。當因故障停止事件(例如系統當機、應用程式當機、斷電,於若干實施例中導致系統重新啟動的事件)導致出現相對應基元操作(atomic operation)的中斷時,記憶體模組控制器可取回該復原資訊,及取消或重做該尚待解決的基元寫。於若干實施例中,在故障停止事件(例如在一中斷
之後,涉及一操作的恢復)之後,一處理器檢查一隨機存取記憶體的非依電性登錄區,及指示記憶體模組控制器取消或重做在該日誌內的任何尚待解決的基元寫指令(例如先前未完成者)。於若干實施例中,在重新啟動之後,一記憶體模組控制器可自動地取消或重做儲存在該日誌內的尚待解決的基元寫指令,而無需任何處理器涉入(例如無需該處理器提示該記憶體模組控制器以執行先前未曾完成的基元寫指令)。於其它實施例中,於一故障停止事件之後,該處理器檢查該日誌;若發現一或多個基元寫為尚待解決,則使用在該日誌內的復原資訊(由該記憶體模組控制器提供的)以生成重做或取消各個尚待解決的基元寫所需的指令。然後,可簽發一或多個指令以抹除全部復原資訊(例如日誌內容)或將全部尚待解決的基元寫標記為已完成(例如不再尚待解決)。
此處揭示的方法實施例可涉及登錄與基元寫相聯結的復原資訊於一記憶體模組的一日誌。於若干實施例中,一委付紀錄(commit record)係添附至該日誌以指示一基元寫的執行已經完成,該基元寫的復原資訊係儲存於該日誌。據此,若發生中斷(例如系統當機、斷電等),則相聯結的委付紀錄的存在與否能夠用以決定一特定基元寫指令,其復原資訊已經儲存於該日誌者確定已經完全執行。然後,所揭示的記憶體模組控制器之實施例可取消或重做未知是否已經完全執行的指令。於若干實施例中,所揭示的記憶體模組控制器之實施例根據來自一處理器的指令而取消或重做基元寫指令。於其它實施例中,所揭示的記憶體模組控制器之實
施例自主地取消或重做該尚待解決的基元寫指令而無處理器(或記憶體控制器)的介入。
針對COW寫之方法若干揭示的實施例涉及自一記憶體的第一位址讀取第一資料。於此等實施例中,該第一位址係載明於由得自一處理器的一記憶體模組控制器接收的一COW寫指令中。此等所揭示的實施例方法也涉及使用位在該相同COW寫指令中的修正資料,更新該第一資料,及將已更新資料儲存於該記憶體的第二位址。於此等實施例中,該第二位址係載明於該相同寫指令。於若干實施例中,更新該第一資料包含藉以新資料置換於一給定偏位的第一資料而更新該第一資料。於此等實施例中,該偏位及新資料係載明於該相同寫指令。
若干所揭示的執行指令至一記憶體的裝置實施例包括至少一個記憶體模組(例如隨機存取記憶體(RAM)模組或其它型別固態記憶體模組)。於若干實施例中,記憶體模組包括非依電性記憶體。於若干實施例中,記憶體模組包括非依電性儲存區(例如日誌)。於若干實施例中,記憶體模組係為具有恆定電源(例如電池後備)以於斷電時維持記憶體內容的動態隨機存取記憶體(DRAM)。
圖1A為依據本文揭示之教示,藉具現的記憶體模組130的記憶體模組控制器140之一實施例處理記憶體存取指令之流程圖之一實施例。於該具體實施例中,記憶體模組控制器140實施例係與一寫中斷檢測器105實施例、一處理器110實施例、及一記憶體150實施例通訊。雖然於圖
1A中顯示單一處理器110,除了處理器110之外,一或多個處理器可耦合至記憶體模組控制器140及使用。
寫中斷檢測器105實施例可位在處理器110中、記憶體模組控制器140中或它處。寫中斷檢測器105可決定何時來自處理器110的指令(例如P1)的執行及/或記憶體存取操作(例如MMC-1-MMC-N)已經中斷(例如因斷電、系統當機等所致)。另外,寫中斷檢測器105可檢測在斷電或系統當機之後,何時系統100已經重新啟動。
處理器110實施例發送指令P1之一實施例給記憶體模組控制器140。指令P1可為基元寫指令或COW寫指令。
記憶體模組控制器140接收指令P1,及根據所接收的指令P1,使用多重記憶體存取操作(MMC-1至MMC-N)存取記憶體150。舉例言之,當記憶體模組控制器140接收一基元寫指令時,記憶體模組控制器140可執行多重指令,諸如將與該寫指令相聯結的復原資訊(例如目的地位址及寫指令的新資料)登錄至一日誌區(例如透過MMC-1指令),將新資料寫入目的地位址(例如透過MMC-2指令),及指示(例如藉寫一委付紀錄)該指令完成(例如透過MMC-N指令)。
圖1B示例說明系統100之一實施例。系統100實施例包括圖1A之處理器110實施例具有一集積式記憶體控制器112實施例。於該具體實施例中,處理器110係透過一記憶體匯流排120實施例而與記憶體模組130實施例通訊。記憶體控制器112實施例乃輔助處理器110與記憶體匯流排
120間通訊的介面。於若干實施例中,記憶體控制器112實施例並非含括於處理器110實施例內部,反而係在處理器110外部且通訊式耦合處理器110(例如透過處理器110與分開記憶體匯流排120間之匯流排)。記憶體匯流排120實施例可使用雙倍資料速率(DDR)匯流排或任何其它合宜型別的記憶體匯流排具現。記憶體模組130實施例包括圖1A之記憶體模組控制器140及記憶體150實施例。於若干實施例中,記憶體模組控制器140係使用進階記憶體緩衝器(advanced memory buffer)及/或暫存記憶體中的暫存器具現。
於該具體實施例中,與該具體實施例的記憶體模組控制器140通訊的記憶體150係為固態或IC記憶體裝置,諸如非依電性RAM裝置或依電性RAM裝置。於使用依電性DRAM以具現記憶體150之實施例中,使用電池後備以便當主系統電力中斷及/或系統當機時許可儲存於記憶體150中的資料持續。
記憶體150實施例包括一日誌160實施例及一資料儲存區180實施例。於該具體實施例中,日誌160及資料儲存區180實施例係彼此分開組織(例如於並排組織結構中作為分開的記憶體區)。於若干實施例中,日誌160實施例係含在資料儲存區180實施例內。換言之,日誌160可透過(特別)位址被處理器110存取。日誌160包括定量(L)日誌紀錄(例如日誌紀錄162 LOG_RECORD[0]-LOG_RECORD[1-1])。於該具體實施例中,日誌160為非依電性(例如位在NVRAM)。記憶體150的
日誌160實施例並非必然要求大儲存容量,原因在於該日誌紀錄162典型地只維持到相對應寫指令完成為止。該資料儲存區180包括定量(N)可定址儲存位置182(例如ADDR[0]-ADDR[N-1])。
若干實施例使用多個日誌。各個日誌160可為先進先出(FIFO)資料結構(例如佇列)。新日誌紀錄162可添附至該日誌160的一端,及老舊紀錄可從該日誌160的另一端移開。在回復期間,日誌160的日誌紀錄162可從該日誌的一端至另一端處理,該等日誌紀錄162含有復原資訊及不含相聯結的委付紀錄被用於取消或重做寫。於若干實施例中,日誌160係儲存於記憶體模組控制器140的緩衝器430而非記憶體150。於其它實施例中,復原資訊可儲存於日誌以外的資料結構及/或其它位置。於又其它實施例中,可能不存在有日誌160。
於該具體實施例中,記憶體模組控制器140係乃記憶體模組130的控制中心。記憶體模組控制器140實施例透過記憶體匯流排120從處理器110接收指令(例如圖1A之指令P1)。於此處揭示的實施例中,記憶體模組130可持久性地架設或安裝置於處理器系統100,及/或記憶體模組130可活動式地安裝或附接至該處理器系統100。
於該具體實施例中,記憶體模組控制器140根據接收自處理器110及/或通訊式耦接至記憶體匯流排120的任何其它裝置(例如另一處理器等)的指令而自主控制記憶體150。藉此方式,處理器110能夠將複雜的記憶體處理程
序卸載至記憶體模組控制器140,容後詳述。
於該具體實施例中,記憶體模組控制器140係與記憶體150並置於記憶體模組130。於若干實施例中,記憶體模組130係使用印刷電路板(PCB)具現,及記憶體模組控制器140係連同記憶體150安裝於PCB上。於其它實施例中,記憶體模組130係使用三維(3D)堆疊晶片封裝體具現,其中具現記憶體模組控制器140的一積體電路(IC)裝置及具現記憶體150的一IC裝置係彼此向上堆疊於一晶片內,具有在該封裝體的各層間之實體晶片內互連體。於實施例中其中具現記憶體模組130的3D堆疊晶片封裝體係與處理器110分開,該3D堆疊晶片封裝體係設有與處理器110例如透過記憶體匯流排120通訊的一外部介面。針對其中3D堆疊晶片封裝體係包括處理器110之實施例,記憶體模組130係使用晶片內互連體而連結至110。於又其它實施例中,記憶體模組130可藉多點匯流排記憶體模組(例如小輪廓雙排型記憶體模組(SO-DIMM))、點對點匯流排記憶體模組(例如完整緩衝DIMM(FBDIMM))、焊接其上的記憶體、或多晶粒封裝體(例如單晶片系統(SOC)、封裝體內系統(SiP)等)具現。
圖2示例說明可用以使得圖1A及圖1B的記憶體模組控制器140實施例執行基元寫指令的指令格式實施例。於圖2中,顯示三個不同基元寫(AW)指令格式AW1、AW2、AW3,示例說明可用以使得記憶體模組控制器140執行基元寫處理的不同指令格式。處理器110實施例及記憶體模組控制器140實施例可經組配以使用基元寫指令格式
AW1、AW2、AW3中之任一者或多者。若系統100使用多個基元寫格式(例如指令格式AW1、AW2、AW3中之一或多者,或任何其它基元寫指令格式),可使用不同的指令標示符以讓記憶體模組130區別不同的基元寫格式。基元寫指令格式AW1、AW2、AW3的不同部分係連結由記憶體模組控制器140執行的所得記憶體存取操作(例如MMC-1至MMC-N),容後詳述。於若干實施例中,記憶體模組控制器140檢測得一指令(例如圖1A的指令P1)乃基元寫指令,如此,根據檢測得的在該寫指令中之位址或位址格式而儲存與其相聯結的復原資訊於日誌160;當該等寫指令不含檢測得的位址或位址格式時,記憶體模組控制器140不將寫指令視為請求基元處理。
於圖2之該具體實施例中,基元寫指令格式AW1之實施例係表示為:[atomic-write][addr][data]. 於該具體實施例中,[atomic-write]乃一指令標示符(其載明一類型之指令),[addr]參數載明寫資料於記憶體150的一目的地位址(例如目的地可定址記憶體位置),及[data]參數為欲寫入該目的地位址的新資料。於若干實施例中,指令格式AW1實施例係類似於先前系統內的寫指令格式,但於指令格式AW1實施例中使用不同的指令標示符(亦即[atomic-write])。如此許可處理器混合基元寫與非基元寫(例如正常寫指令)。於若干實施例中,全部寫(all write)係以基元方式處理。
當該具體實施例的記憶體控制器140從處理器110接收於指令格式AW1實施例中的指令(例如圖1A的指令P1)時,該具體實施例的記憶體模組控制器140執行記憶體存取操作MMC-1至MMC-N,以對在該接收指令中所請求的載明位置之資料執行更新。舉例言之,記憶體模組控制器140可執行記憶體存取操作MMC-1以儲存與所接收的基元寫指令相聯結的該復原資訊,含目的地位址[addr](例如相對應於可定址儲存位置182的位址)及新資料[data]於圖1B的日誌分錄162。於此等實施例中,記憶體模組控制器140可執行記憶體存取操作MMC-2以將新資料寫入目的地位址[addr],其係相對應於儲存位置182。記憶體模組控制器140可執行記憶體存取操作MMC-3以將一委付紀錄寫作為在該日誌160一端的新日誌分錄162,指示基元寫操作已經完成。換言之,MMC-3將該委付紀錄添附至日誌160。
如此,記憶體模組控制器140執行記憶體存取操作MMC-1至MMC-N而未由處理器110透過記憶體匯流排120進一步介入超過接收初基元寫指令(例如圖1A的指令P1)。
於該具體實施例中,指令格式AW2表示如下:[atomic-write] [start flag][dest addr 1][length 1][length-1-data-bytes] [dest addr 2][length 2][length-2-data-bytes] ... [dest addr n][length n][length-n-data-bytes] [stop flag]. 基元寫指令格式AW2之實施例包括副-寫(sub-write),副-寫
造成記憶體模組控制器140以基元方式(亦即發生全部副-寫,或未發生任何副-寫)更新/寫資料至多個非鄰接的目的地可定址記憶體位置。如此指令格式AW2表示複合基元寫指令。於該具體實施例中,非鄰接的目的地可定址記憶體位置([dest addr 1]、[dest addr 2]、至[dest addr n])可具有低或無局部性,在於該等位址係位在橫過記憶體150且由其它非目的地可定址記憶體位置分開。
於格式AW2之實施例中,開始旗標([start flag])及停止旗標([stop flag])係用以識別所包圍的副-寫部分的起點及終點(例如副-寫1係以[dest addr 1][length 1][length-1-data-bytes]表示,副-寫2係以[dest addr 2][length 2][length-2-data-bytes]表示,等)。[length i](於該處1in)參數為在該相對應的目的地可定址記憶體位置[dest addr i]欲更新的資料[length-i-data-bytes]之位元組長度(或位元長度)。[length-i-data-bytes]參數為欲寫入目的地可定址記憶體位置的資料。單一指令標示符[atomic-write]及其伴隨的指令格式AW2之實施例的多個副-寫可用以置換多個單一寫指令,以許可記憶體模組控制器140根據具有指令格式AW2的單一複合基元寫指令(例如圖1A的指令P1)執行多重寫操作(例如多個相對應基元寫操作)。於該描述之實施例中,因一複合基元寫指令(例如具有指令格式AW2的一基元寫指令)的副-寫係以基元方式成組進行,單一複合基元寫指令可能不等於一串列基元寫,各自係相對應於副-寫中之一者。
舉例言之,當記憶體模組控制器140於指令格式AW2中接收來自處理器110的一指令時,該具體實施例的記憶體模組控制器140執行記憶體存取操作(例如MMC-1至MMC-N中之至少一者)以對如於所接收的指令中識別的經載明的可定址記憶體位置的資料進行多重更新。於該具體實施例中,記憶體模組控制器140可執行一或多個記憶體存取操作(例如MMC-1至MMC-N中之至少一者)以儲存針對各個副-寫的復原資訊於日誌160。記憶體模組控制器140可針對每個副-寫儲存一個日誌紀錄162,或記憶體模組控制器140可針對全部副-寫儲存單一個日誌紀錄162。據此,與各個副-寫相聯結的復原資訊變成複合寫AW2的復原資訊。然後記憶體模組控制器140可進行額外記憶體存取操作以將[length-1-data-bytes]寫入[dest addr 1],將[length-2-data-bytes]寫入[dest addr 2],...,及然後將[length-n-data-bytes]寫入[dest addr n]。
如此處描述,當描述資料的多塊位元組/字元被讀取或寫自/至單一位址時,該資料實際上係讀取自或寫入一串列的循序位址,始於該給定位址。取決於其粒度,如此可能涉及針對記憶體150的多項記憶體存取操作。例如,從位置100讀取一4位元組項可能涉及從位置100讀取第一位元組,從位置101讀取第二位元組,從位置102讀取第三位元組,及從位置103讀取第四位元組。
於若干實施例中,記憶體模組控制器140執行額外記憶體存取操作以回讀復原資訊而識別其次將執行的副
-寫細節。最後,記憶體模組控制器140可從事一記憶體存取操作以將單一委付紀錄162添附至該日誌160,以標記該複合基元寫為已經完成。如此,記憶體存取操作MMC-1至MMC-N能夠以指令格式AW2,從接收自處理器110的單一複合基元寫指令(例如圖1A的指令P1)執行多重寫操作。如此,記憶體模組控制器140執行記憶體存取操作MMC-1至MMC-N,而無藉處理器110的進一步介入超越接收呈指令格式AW2的初始基元寫指令(例如圖1A的指令P1)。
於若干實施例中,指令格式AW2的開始旗標[start flag]及/或停止旗標[stop flag]可被刪除。於此等實施例中,位址及資料參數的開始及/或結束係根據基元寫指令標示符([atomic-write])的存在,及/或根據檢測何時處理器110已經停止發出一匯流排指令暗示。
於圖2之該具體實施例中,基元寫指令格式AW3係表示為:[write]<special addr> [addr] [write]<special addr+offset> [data].於該具體實施例中,不使用新指令標示符(例如[atomic-write])。取而代之,使用特定位址(例如<special addr>)以指示請求基元寫。於指令格式AW3的第一行中,[write]參數實施例為一指令標示符(載明指令型別)。<special addr>參數並不必要相對應於任何實際實體位址,取而代之,係用作為指標器通知記憶體模組控制器140該寫指令實際上是個基元寫指令。[addr]參數為用以計算將隨後
接收的資料(例如AW3格式第二行中的[data])寫入其中的該目的地位址的基本位址。於AW3格式第二行中,[write]參數為指令標示符,<special addr+offset>指示根據得自AW3格式的第一寫指令之基本位址[addr]計算一目的地位址的一編碼位址偏位值(偏位),及[data]參數為欲寫入該目的地位址的目的地可定址記憶體位置之資料(例如基本位址[addr]+偏位)。於該具體實施例中,當接收到兩個接續寫指令具有特定目標位址(例如<special addr>+N,針對N於0...<limit>)時,記憶體模組控制器140可經組配以將資料[data]寫入目的地可定址記憶體位置之資料(例如基本位址[addr]+偏位)。於該具體實施例中,當記憶體模組控制器140接收到一第一寫指令具有特定目標位址參數(<special addr>)時,其係經組配以等待第二寫指令,其具有特定目標位址參數及一編碼偏位(<special addr+offset>)。記憶體模組控制器140實施例將第一寫指令及第二寫指令視為單一基元寫指令(例如圖1A的指令P1)處理。於若干實施例中,可使用指令格式AW3之一變化例,其中記憶體模組控制器140從處理器110以[write]<special addr+offset>[data]格式接收多個偏位及資料以指令記憶體模組控制器140執行具有副-寫的複合基元寫(類似指令格式AW2)。於此等實施例中,副-寫各自包括一不同目的地可定址記憶體位置,相對應於根據基本位址[addr]及來自隨後寫指令的接續編碼偏位值(偏位)計算得的目的地位址。此外,於此等實施例中,針對特定位址的寫指令可用以給記憶體模組控制器140指示該複
合基元寫已經完成。
當該具體實施例之記憶體模組控制器140以指令格式AW3接收來自處理器110的指令(例如圖1A的指令P1)時,該具體實施例之記憶體模組控制器140從事記憶體存取操作MMC-1至MMC-N,以執行在該所接收的指令中請求的特定可定址記憶體位置之資料的更新。記憶體存取操作MMC-1至MMC-N可以類似指令格式AW1之方式執行,但[addr]此處為[addr]+偏位。如此,記憶體模組控制器140執行記憶體存取操作MMC-1至MMC-N,而無藉處理器110的進一步介入超越接收呈指令格式AW2的初始基元寫指令(例如圖1A的指令P1)。
於圖2之具體實施例中,於指令格式AW2之若干實施例中,於單一複合基元寫指令(例如圖1A的指令P1)中寫指令的多個目的地位址可具有高度空間局部性,在於接續可定址記憶體位置中其為實體上相鄰或彼此接近,或分開達可使用偏位值表示的位址量。據此,於此等實施例中,替代供給多個完整目的地位址,第一副-寫的目的地位址可用作為其餘副-寫的偏位的基本位址,如此於具有足夠空間局部性的小散在寫指令為例節省更多頻寬。據此,記憶體模組控制器140可針對根據偏位值及根據在得自處理器110的一指令(例如圖1A的指令P1)中所提供的基本位址而決定的目的地位址從事一或多個記憶體存取操作(MMC-1至MMC-N)。
任何適當技術皆可用以編碼一指令的資訊。舉例
言之,替代使用一起始位址及一長度,可使用一起始與結束位址,該結束位址為包含或除外。於若干實施例中,資料長度係由預定值、長度欄位、或第一位址與第二位址間之差(例如該長度可為起點-終點或起點-終點+1)中之至少一者決定。此外,於若干實施例中,長度可以不同單位度量(例如位元、位元組、字元等)。
圖3示例說明可用以使得圖1A及圖1B之記憶體模組控制器140實施例執行COW-寫指令的指令格式實施例。圖3中,顯示兩個不同COW-寫指令格式(COW1、COW2)以示例說明可用以使得記憶體模組控制器140執行COW-寫的不同指令格式。處理器110實施例及記憶體模組控制器140實施例可經組配以使用COW-寫指令格式COW1、COW2中之任一者或二者。若使用格式COW1、COW2兩者,則可使用不同指令標示符以區別之。COW-寫指令格式COW1、COW2的不同部分連結由記憶體模組控制器140執行的記憶體存取操作(MMC-1至MMC-N)描述,容後詳述。
於圖3之具體實施例中,COW-寫指令格式COW1係表示為:[cow-write] [addr-old] [addr-new] [sub-offset][sub-len] [data]於該具體實施例中,[cow-write]乃一指令標示符,[addr-old]參數為從其中欲讀取老舊/原先資料的可定址記憶體位置的第一位址,[addr-new]參數為該已更新資料欲寫入其中的可定址記憶體位置之一目的地位址,[sub-len]參數標示[data]的位元組長度(或位元組量),及[data]參數為欲用以更新老
舊/原先資料的資料。[sub-offset]、[sub-len]、及[data]一起組成修正資料。於指令格式COW1中,舊及新資料的長度可為預定值S。於一個實施例中,值S可為快取行的大小。於另一個實施例中,S係藉選擇使用的指令標示符而從一預定值集合中決定。於此等實施例中,指令格式COW1相當於複製[addr-old]...[addr-old]+S-1至[addr-new]...[addr-new]+S-1,及然後將[data]寫入[addr-new]+[sub-offset]...[addr-new]+[sub-offset]+[sub-len]-1。據此,該複製與寫可組合使得舊資料被讀出,已更新資料(例如使用修正資料更新的原先資料)直接地寫入該目的地位址[addr-new]。如此可避免寫入一位址(例如[addr-new]+[sub-offset])兩次,首次寫入原先資料的一部分,及然後寫入[data]部分。
當該具體實施例的記憶體控制器140以指令格式COW1從處理器110接收一指令(例如圖1A的指令P1)時,該具體實施例的記憶體模組控制器140從事記憶體存取操作MMC-1至MMC-N,以執行如所接收的指令中請求在一特定可定址記憶體位置之資料的寫入時複製(COW)。舉例言之,記憶體模組控制器140執行一或多個記憶體存取操作以讀取S位元組資料(原先資料),始於位在第一位址[addr-old]的該可定址記憶體位置。於此等實施例中,記憶體模組控制器140可從事額外記憶體存取操作,以將已更新資料寫入S個目的地可定址記憶體位置,始於該目的地位址[addr-new]。於此等實施例中,在從事寫記憶體存取操作之
前,記憶體模組控制器140藉以[data]置換讀取資料部分始於偏位[sub-offset]及具有長度[sub-len]而更新該所讀取的資料。舉例言之,記憶體模組控制器140可使用控制邏輯420及緩衝器430執行內部更新(參考圖4)。如此,記憶體模組控制器140執行記憶體存取操作MMC-1至MMC-N,而無藉處理器110的進一步介入超越接收呈指令格式COW1的初始COW-寫指令(例如圖1A的指令P1)。
於圖3之具體實施例中,COW-寫指令格式COW2係表示為:[cow-write] [addr-old] [len-old] [addr-new] [sub-offset] [sub-len] [data].於該具體實施例中,[cow-write]乃一指令標示符,[addr-old]參數為從其中欲讀取老舊/原先資料的可定址記憶體位置的第一位址(亦即該可定址記憶體位置中之第一位址),[len-old]參數標示欲從該第一或來源可定址記憶體位置複製的資料之位元組長度(或位元組數量),[addr-new]參數為該已更新資料欲寫入其中的可定址記憶體位置之一目的地位址,[sub-len]參數標示[data]的位元組長度(或位元組量),及[data]參數為欲用以更新老舊/原先資料的資料。[sub-offset]、[sub-len]、及[data]組成修正資料。COW2係類似COW1,但允許明確地載明原先資料/接受更新資料/已更新資料的長度,而非使用預定值S。
當該具體實施例之記憶體控制器140以指令格式COW2從處理器110接收一指令(例如圖1A的指令P1)時,該具體實施例的記憶體模組控制器140執行記憶體存取操作
MMC-1至MMC-N,以如於該所接收的指令中請求,從在一特定可定址記憶體位置至另一特定可定址記憶體位置的資料執行COW。舉例言之,記憶體模組控制器140執行一或多個記憶體存取操作以從來源位址[addr-old]讀取舊/原先資料之長度[len-old]。於此等實施例中,記憶體模組控制器140可從事額外記憶體存取操作以將具有長度[len-old]的已更新資料寫入在目的地位址[addr-new]之該目的地可定址記憶體位置。於此等實施例中,在從事寫記憶體存取操作之前,記憶體模組控制器140藉以[data]置換讀取資料部分始於偏位[sub-offset]及具有長度[sub-len]而更新該所讀取的資料。舉例言之,記憶體模組控制器140可使用控制邏輯420及緩衝器430執行內部更新。如此,記憶體模組控制器140執行記憶體存取操作MMC-1至MMC-N,而無藉處理器110的進一步介入超越接收呈指令格式COW2的初始COW-寫指令(例如圖1A的指令P1)。
指令格式COW1、COW2除外或另外,適當技術可用以具現COW指令格式的其它變化實施例。舉例言之,可暗示[data]長度,或修正資料可含有形式[sub-offset]、[sub-lenth]、[data]的多個重元組,代表應置換原先資料的多個部分。於其它實施例中,修正資料可指示原先資料的一部分,欲藉算術運算對該原先資料做操作,諸如增量或決定或增加供給值。修正資料可用以將新資料插入原先資料的一給定點(例如在原先資料的第一偏位),或從原先資料的一給定點(例如在原先資料的第二偏位)刪除一給定量資
訊。
於此處揭示的實施例中,在適當位置登錄及更新之操作以及複製伴以修正操作係在記憶體模組(例如圖1B的記憶體模組130)內部進行,而非藉處理器(例如圖1A、1B、2及/或3之處理器110)或記憶體控制器(例如圖1B的記憶體控制器112)進行。舉例言之,欲於基元寫(例如圖2之基元寫)寫入之資料係藉處理器110通過記憶體匯流排120發送至記憶體模組130,及記憶體模組控制器140將與基元寫指令相聯結的復原資訊儲存至在記憶體模組130內部的記憶體150之日誌區160。於其它實施例中,在COW-寫(例如圖3之COW-寫)期間,欲複製資料(例如自一來源位址[addr_old]複製的資料,經更新,然後寫入一目的地位址[addr_new])並不從記憶體模組130通過記憶體匯流排120發送至處理器110,反而取而代之在記憶體模組130內部複製(例如讀及寫)。據此,比較先前系統,其使用顯著更大量的外部匯流排通訊以寫入資料,此處揭示的實施例可執行實施例揭示的基元寫操作及COW-寫操作,要求通過外部記憶體匯流排120的相對較少處理器介入及相對較少處理器通訊。
圖4為圖1A、1B、2及3之記憶體模組控制器140的具現實施例之方塊圖。於圖4之具體實施例中,記憶體模組控制器140包括一範例匯流排介面410、範例控制邏輯420(例如邏輯電路)、範例緩衝器430、範例記憶體介面440、及範例寫中斷檢測器450。一範例記憶體模組控制器匯流排
402輔助匯流排介面410、控制邏輯420、緩衝器430、記憶體介面440、及/或寫中斷檢測器450間之通訊。
雖然圖4示例說明具現記憶體模組控制器140之方式之一實施例,但圖4中示例說明的元件、方法、及/或裝置中之一或多者可以任何其它方式而予組合、劃分、重排、刪除、消除、及/或具現。又復,範例匯流排介面410、範例控制邏輯420、範例緩衝器430、範例記憶體介面440、或範例寫中斷檢測器450,及/或更概略言之,範例記憶體模組控制器140可藉硬體、軟體、韌體及/或硬體、軟體、韌體的任一項組合具現。如此,舉例言之,範例匯流排介面410、範例控制邏輯420、範例緩衝器430、範例記憶體介面440、或範例寫中斷檢測器450,及/或更概略言之,範例記憶體模組控制器140可藉一或多個電路、特定應用積體電路(ASIC)、可規劃邏輯裝置(PLD)及/或可現場規劃邏輯裝置(FPLD)等。又復,圖4中示例說明者除外或另外,範例記憶體模組控制器140可包括一或多個元件、方法、及/或裝置,及/或可包括示例說明的元件、方法、及裝置中之任一者或全部中之多於一者。
示例說明實施例的記憶體模組控制器140係設有範例匯流排介面410以通訊式耦合記憶體模組控制器140與圖1B的外部記憶體匯流排120。於該具體實施例中,匯流排介面410管理記憶體模組控制器140與處理器110及/或透過外部記憶體匯流排120而連結其上的任何其它裝置(例如其它處理器)間之通訊。
該示例說明例之記憶體模組控制器140係設有控制邏輯420以管理例如在圖1A、1B、2及3之記憶體150上的記憶體存取方法及操作。該示例說明例之控制邏輯420係經組配以執行如此處描述的複雜記憶體存取操作,其許可所連結的處理器(例如處理器110)卸載記憶體存取程序之操作給記憶體模組控制器140。於該具體實施例中,控制邏輯420係使用一邏輯單元具現。但軟體及/或韌體可額外地或另外地用以具現控制邏輯420。
該具體實施例的記憶體模組控制器140係設置有緩衝器430以暫時性地儲存透過該匯流排介面410接收的輸入資料及/或指令,及/或暫時性地儲存輸出的資料,用以透過該匯流排介面410通訊給其它裝置(例如處理器、外部記憶體控制器等)。於若干實施例中,匯流排介面410係用以暫時性地儲存COW指令的原先資料。
該具體實施例的記憶體模組控制器140係設置有記憶體介面440以通訊式耦合該記憶體模組控制器140至圖1A、1B、2及3的記憶體150。於該具體實施例中,記憶體介面440包括根據一或多個特定技術工業標準記憶體介面(例如由JEDEC固態技術學會採用的記憶體介面標準,諸如NVRAM介面、DRAM介面等)具現的一或多個特定技術記憶體控制器(例如NVRAM控制器、DRAM控制器等)。例如,記憶體介面440可包括一DRAM控制器具有邏輯以控制預充電時間、列位址選通(RAS)時間、行位址選通(CAS)時間、自再新模式、叢訊存取模式、低功率模式等。
於該具體實施例中,記憶體介面440乃特定記憶體介面意圖輔助與記憶體模組130內建的一或多個特定型別的記憶體通訊,而匯流排介面410可以但非必要為任何特定型別記憶體技術的特定介面。
該具體實施例的記憶體介面440可經組配以用在只有依電性DRAM的記憶體模組,或用在只有非電性RAM的記憶體模組。於若干實施例中,記憶體介面440許可具現具有不同型別的記憶體之混成記憶體模組諸如,在單一記憶體模組上不同型別的依電性記憶體(例如DRAM及SRAM)、在單一記憶體模組上不同型別的非依電性記憶體(例如PCRAM及憶阻器)、及/或在單一記憶體模組上不同型別的依電性及非依電性記憶體(例如DRAM及PCRAM、DRAM及憶阻器等)。於若干此等實施例中,為了具現此等混成記憶體模組,記憶體介面440可包括多個型別的特定技術記憶體控制器(例如DRAM控制器、PCRAM控制器、憶阻器控制器、SRAM控制器等),使得記憶體模組控制器140可與在相同記憶體模組上的不同型別的記憶體技術通訊。
圖4之寫中斷檢測器450實施例可用以具現圖1A的寫中斷檢測器105。雖然寫中斷檢測器450係顯示於記憶體模組控制器140內部,但可額外地或另外地設置於圖1A、1B、2及3的處理器110內部,或記憶體模組控制器140及處理器110外部及通訊式耦接至圖1B的記憶體匯流排120,或在與記憶體模組控制器140通訊的任何其它裝置(例如另一處理器)內部。
該具體實施例的寫中斷檢測器450決定一指令(例如一寫指令、一基元寫指令、一COW-寫指令等)是否可已經中斷。另外,寫中斷檢測器450可決定系統100是否剛被重新啟動。於若干實施例中,記憶體模組控制器140使用寫中斷檢測器450決定是否欲執行復原操作(例如在故障停止事件之後)。
表示具現圖1A、1B、2、3及4的記憶體模組控制器140之方法之代表性流程圖係顯示於圖5、6及/或7。於此等實施例中,該等方法可藉圖4之控制邏輯420執行。於若干實施例中,如前述一邏輯電路可具現控制邏輯420以執行該等方法實施例。於若干實施例中,組配該控制邏輯420的一程式或其部分可儲存於一有形電腦可讀取儲存媒體上,諸如固態唯讀記憶體(ROM)裝置、積體電路(IC)記憶體裝置、嵌入式硬體記憶體、邏輯電路、快閃記憶體、快取記憶體、隨機存取記憶體(RAM)、或與控制邏輯420相聯結的及/或具現於韌體或專用硬體的記憶體。又復,雖然該方法實施例係參考圖5、6及/或7示例說明的流程圖揭示,但另可使用具現記憶體模組控制器140的多種其它方法。舉例言之,各方塊的執行順序可改變,及/或所描述的部分方塊可經改變、刪除、或組合。
如前述,圖5、6及/或7之方法實施例可藉控制邏輯420具現。控制邏輯420可運用儲存於有形電腦可讀取儲存媒體上的程式組配,諸如固態唯讀記憶體(ROM)裝置、積體電路(IC)記憶體裝置、嵌入式硬體記憶體、邏輯電路、
快閃記憶體、快取記憶體、隨機存取記憶體(RAM)及/或任何其它儲存媒體,其中資訊係儲存歷經任何時間(例如歷經長週期時間、持久性地、簡短地、用於暫時緩衝,及/或用於資訊的快取)。如此處使用,有形電腦可讀取儲存媒體一詞係明白地界定包括任何型別的電腦可讀取儲存裝置及排除傳播信號。此外或另外,控制邏輯420可使用儲存於非過渡電腦可讀取媒體上的程式組配,諸如硬碟機、快閃記憶體、唯讀記憶體、光碟、數位影音碟、快取記憶體、隨機存取記憶體及/或任何其它儲存媒體其中儲存資訊歷經任何時間週期(例如歷經長週期時間、持久性地、簡短地、用於暫時緩衝,及/或用於資訊的快取)。如此處使用,非過渡電腦可讀取媒體一詞係明白地界定包括任何型別的電腦可讀取儲存媒體及排除傳播信號。如此處使用,當「至少」一詞係用在申請專利範圍一項的前言部分作為過渡術語時,其係為開放端如同「包含」一詞係為開放端一般。如此,申請專利範圍一項使用「至少」在其前言部分作為過渡術語除了於申請專利範圍該項中明白引述者之外也包括其它元件。
圖1A、1B、2及4的記憶體模組控制器140可用以執行接收自處理器110(例如圖1A、1B、2)的基元寫指令的方法500之實施例係藉圖5所示流程圖實施例表示。方法500係為迭代重複。記憶體模組控制器140可使用方法500並列地處理多重指令。
於方法500具體實施例中,記憶體模組控制器140
接收來自處理器110的指令(例如讀接著基元寫諸如圖1A的指令P1)以執行記憶體存取操作。於該具體實施例中,當接收一基元寫指令且不中斷時,記憶體模組控制器140儲存復原資訊,及然後根據該單一基元寫指令從事寫入,而不要求透過外部記憶體匯流排120來自處理器110的進一步指令。
最初,於圖5示例說明之實施例的方塊510,控制邏輯420(圖4)決定透過匯流排介面410(圖4)是否已從處理器110(圖1A及1B)接收一新指令。於若干實施例中,控制邏輯420決定一指令是否等候在緩衝器430的一佇列(圖4)。若已接到一指令(方塊510),則控制前進至方塊520。若尚未接到一指令(方塊510),則控制邏輯420繼續監控匯流排介面410及/或緩衝器430以決定一指令是否已接收自處理器110。
於該具體實施例之方塊520,控制邏輯420決定所接收的指令是否為基元寫指令。舉例言之,控制邏輯420可根據如前文連結圖2描述載明於該所接收指令中的一指含標示符(例如使用基元寫指令格式AW1及AW2)及/或特定位址(例如使用基元寫指令格式AW3)決定指令的型別。若所接收的指令非為基元寫指令(方塊520),則控制前進至方塊525,於該處控制邏輯420及/或記憶體介面440執行所接收指令(例如根據其指令標示符)。舉例言之,控制邏輯420及/或記憶體介面440可執行一讀指令、一非基元寫指令一低功率過渡指令等。若該控制邏輯420決定該所接收指令係為基
元寫指令(方塊520),則控制前進至方塊530。
於方塊530,控制邏輯420造成記憶體介面440儲存與該指令相聯結的復原資訊於記憶體150(圖1A、1B、2)的一或多個日誌紀錄162(圖1B)。復原資訊可包含目的地位址、新資料、及/或目的地位址的先前內容。該復原資訊係用以當寫中斷時輔助取消或重做由該寫指令所請求的寫。
於方塊540,記憶體介面440將該基元寫指令的新資料寫入該記憶體150的與該基元寫指令之目的地位址相對應的目的地位置182。於圖5之實施例中,於方塊540,寫入資料而無來自處理器110的處理器(或記憶體控制器)介入(例如額外寫請求超越原先基元寫指令、指令訊息等)。於方塊540之後之後,控制前進至方塊550。
於該具體實施例之方塊550,記憶體介面440寫一委付紀錄以指示基元寫指令已經完成。於若干實施例中,於方塊550,記憶體模組控制器140可從日誌160去除已不再需要的日誌紀錄162,原因在於該等日誌紀錄162已經不再與尚待解決的基元寫相聯結。如此,與基元寫相聯結的復原資訊最終可被抹除。於若干實施例中,可使用閂鎖以確保添附至日誌160者為一基元操作。於若干實施例中,不使用委付紀錄,使用標記尚待解決的基元寫為不再尚待解決的若干其它方法。
於方塊550之後,控制邏輯420決定是否繼續監控匯流排介面410及/或緩衝器430(方塊570)有關來自處理器110的額外指令。若控制邏輯420決定不再監視指令的接收
(例如系統進入關機或休眠模式,記憶體模組130已經與處理器110通訊中斷等),方法500之實施例結束。但若控制邏輯420決定須繼續監視指令的接收,則控制返回方塊510,於該處控制邏輯420透過外部記憶體匯流排120,等待來自110或其它裝置的下個指令。
圖5之前述基元寫方法可用以確保基元寫指令的基元性。據此,當基元寫處理中斷時(例如因斷電、系統當機等而處理器110重新啟動),例如可使用圖6之方法600進行復原。於若干實施例中,若方法500中斷,則基元寫指令的若干處理可能不被方法500完成。舉例言之,若寫被中斷,則藉方塊540進行的寫新資料至記憶體可能尚未藉方法500完成。
於圖6中,方法600可藉圖1A、1B、2及4的記憶體模組控制器140執行以從寫中斷(例如因當機、斷電等)中復原。於方塊610,控制邏輯420(圖4)決定是否進行復原。於若干實施例中,記憶體模組控制器140根據來自寫中斷檢測器450的指示,決定是否進行中斷寫復原處理。舉例言之,寫中斷檢測器450可決定是否出現系統當機及/或斷電(例如根據系統當機旗標、斷電旗標、重新啟動旗標等)。
於若干實施例中,記憶體模組控制器140根據接收自處理器110的資訊(例如狀態訊息、復原指令等),根據記憶體150的狀態(例如日誌區160包括不完全指令),根據所執行的硬體復原操作(例如碟片重建)等,決定是否進行復原處理。舉例言之,系統當機或斷電可中斷初始嘗試以執行
基元寫指令的記憶體存取操作。
於圖6之具體實施例中,記憶體模組控制器140藉取消或重做任何尚待解決的基元寫執行中斷寫復原處理以復原資訊。於若干實施例中,圖6之方法600可藉處理器110或其它裝置初始化,透過外部記憶體匯流排120發送指令給記憶體模組控制器140以執行復原處理。最初,於圖6之具體實施例中,若記憶體模組控制器140不欲執行中斷寫復原處理(方塊610),控制邏輯420結束中斷寫復原處理600。若記憶體模組控制器140欲執行中斷寫復原,控制前進至方塊620。
於該具體實施例之方塊620,控制邏輯420(圖4)開始掃描日誌160。於若干實施例中,於方塊620,控制邏輯420發送一指標器以指向該日誌160的最早的或最後的日誌紀錄162。於若干實施例中於該處欲重做寫,日誌160可從最舊的至最新的日誌紀錄162掃描。於實施例中於該處取消寫,日誌160可從最新的至最舊的日誌紀錄162掃描。
於圖6之方塊630,控制邏輯420檢查日誌160以決定日誌160的任何更多日誌紀錄162維持處理。若日誌紀錄162不再維持處理,則控制前進至方塊680。若日誌紀錄162確實維持處理,則控制前進至方塊640。
於圖6之方塊640,控制邏輯420檢查掃描之一目前日誌紀錄162以決定該目前日誌紀錄162是否具有復原資訊。若目前日誌紀錄162不具有復原資訊,則控制前進至方塊670。若目前日誌紀錄162確實包括復原資訊,則控制前
進至方塊650。
於圖6之方塊650,控制邏輯420檢查掃描該目前日誌紀錄162是否與一委付紀錄相聯結。若該目前日誌紀錄162係與一委付紀錄相聯結,則該處理繼續該目前日誌紀錄162係與基元寫相聯結,該基元寫已不再尚待解決(例如已經完成),及控制前進至方塊670。若該目前日誌紀錄162係與一委付紀錄不相聯結,則控制前進至方塊660。於若干實施例中,藉各個日誌紀錄162(含委付紀錄)包括日誌紀錄162與其相聯結的多個指令(例如至目前為止接收的指令數目),日誌紀錄162可與委付紀錄相聯結;若一日誌紀錄162及一委付紀錄具有相等的指令數目,則該日誌紀錄162被視為與該委付紀錄相聯結。
於方塊660,控制邏輯420可執行相對應於該目前日誌紀錄162之中斷寫(或副-寫)的重做(例如控制邏輯將含括於復原資訊中的新資料寫入含括於該復原資訊的目的地位址)。另外,控制邏輯420可執行相對應於該目前日誌紀錄162之中斷寫(或副-寫)的取消(例如控制邏輯420將含括於復原資訊中的老舊資料寫入含括於該復原資訊的目的地位址)。於若干實施例中,經常性地使用重做,或經常性地使用取消。
於圖6之方塊670,控制邏輯420前進至日誌160中的下個日誌紀錄162。如此可涉及一指標器於日誌160被掃描的方向前進至目前日誌紀錄162。然後控制返回至方塊630以決定是否有更多個日誌紀錄162有待處理。若沒有個
日誌紀錄162有待處理,則控制前進至方塊680。
若沒有個日誌紀錄有待處理(於方塊630),則已經中斷的全部尚待解決的基元寫已經被重做或取消。據此,於方塊680,控制邏輯420可以基元方式抹除整個日誌160。此種方法抹除全部復原資訊,指示不再有尚待解決的基元寫。於若干實施例中,控制邏輯420在完成針對相對應寫指令的一給定基元寫(或複合基元寫)指令相聯結的全部日誌紀錄162之處理之後,將委付紀錄寫入日誌160。若復原本身被中斷,則此項處理可節省資源。
於若干實施例中,在基元寫中斷之後(例如當與圖1A之P1相聯結的復原資訊登錄在記憶體150的日誌160(圖1B)及/或由記憶體模組控制器140所接收),在處理器110上跑的韌體、軟體及/或硬體可經組配以檢查記憶體150的日誌160。於若干實施例中,處理器110可發送多個指令給記憶體模組控制器140以從事記憶體存取操作以啟動中斷寫復原處理(例如方法600之實施例)。於若干實施例中,於記憶體150的硬體(例如固態裝置、硬碟機等)中的復原工具(例如復原軟體、韌體等),及/或與記憶體150相聯結的硬體自動地在記憶體150復電時或當接到處理器110的命令時獨立地執行從寫中斷的復原處理(例如方法600之實施例)。
於一不同實施例中,方法600不藉記憶體模組控制器140相對自主地進行。取而代之,方法600係藉處理器110使用提供給處理器110用在取消或重做寫的復原資訊進行。換言之,處理器110使用記憶體指令,藉著來自記憶體
模組控制器140之幫助讀取日誌160;在類似方法600的處理之後,處理器110簽發適當非基元寫指令給記憶體150以重做或取消各個尚待解決的基元寫。然後處理器110可使用另一個指令抹除日誌160。於實施例中於該處處理器110將執行復原,記憶體模組控制器140可經組配以執行比較記憶體模組控制器140係將從事復原更少的工作。
可由圖1A、1B、3或4的記憶體模組控制器140執行以從事接收自處理器110(圖1A、1B、3)的COW-寫指令之範例方法700係以圖7所示流程圖表示。於該具體實施例方法700中,處理器110發送單一指令(例如COW-寫)給記憶體模組控制器140以執行多重記憶體存取操作。範例記憶體模組控制器140根據來自處理器110的單一COW-寫指令從事多重記憶體存取操作,而不要求透過外部記憶體匯流排120來自處理器110的進一步指令。
最初,於圖7之該具體實施例的方塊710,控制邏輯420(圖4)決定透過該匯流排介面410(圖4)是否已經從處理器110(圖1A、1B、3)接收一指令。於若干實施例中,控制邏輯420決定一指令是否在緩衝器430(圖4)的佇列中等候。若已經接收一指令(方塊710),則控制前進至方塊720。若尚未接收一指令(方塊710),則於方塊710,控制繼續監視匯流排介面410及/或緩衝器430以決定是否已經從處理器110接收一指令。
於該具體實施例的方塊720,控制邏輯420決定所接收的指令是否為一COW-寫指令。舉例言之,如前文就圖
3所述,控制邏輯420可根據於指令訊息中的指令標示符(例如於圖3之COW指令格式COW1及COW2中的[cow-write]標示符)決定接收得的指令型別。若所接收的指令為非COW-寫指令(方塊720),則控制前進至方塊725,於該處控制邏輯420及/或記憶體介面440執行所接收的指令(例如根據所接收的指令之一指令標示符)。舉例言之,控制邏輯420及/或記憶體介面440可執行讀指令、正常寫指令、或基元寫指令、低功率過渡指令等。若控制邏輯420決定所接收的指令為一COW-寫指令(方塊720),則控制前進至方塊730。
於圖7之方塊730、740及750中,控制邏輯420使用記憶體介面440以執行COW-寫指令而未由處理器110進一步介入。舉例言之,於方塊730,記憶體介面440自第一可定址位置182讀取原先資料。第一可定址位置182(例如圖1B之ADDR[1])係載明於一舊(或來源)位址參數(例如圖3之COW1及COW2格式的[addr-old]參數)。原先資料可維持於緩衝器430,或複製至載明於一新或目的地位址參數(例如圖3之COW1及COW2格式的[addr-new]參數)的一第二可定址位置182(例如圖1B之ADDR[3])。
於方塊740,記憶體介面440使用修正資料以更新原先資料而產生已更新資料。此項更新可在保有於緩衝器430的原先資料上進行,或在於第二可定址位置182的原先資料之一拷貝上進行。更新可藉新資料置換部分原先資料,始於第一偏位完成。
於該具體實施例的方塊750,記憶體介面440根據
COW-寫指令儲存已更新資料於記憶體150的第二可定址位置。如此可涉及從記憶體緩衝器430複製已更新資料。於若干實施例中,方塊740及750係藉首先複製原先資料至記憶體150的第二可定址位置及原位修正而同時進行。於其它實施例中,方塊740及750係藉修正原先資料同時從記憶體150的第一可定址位置複製原先資料至記憶體150的第二可定址位置而同時或實質上同時進行。例如,記憶體介面440可將原先資料從未由第一偏位(例如原先資料的不變部分)所覆蓋的第一可定址位置複製至第二可定址位置,及將該新資料寫入第二可定址位置加該第一偏位。可具現讀取原先資料、修正之、及/或儲存之其它適當技術。
於若干實施例中,於該處原先資料具有相當長度,方塊730、740及750可重複數次。舉例言之,原先資料的第一部分可經讀取、更新、及儲存,接著原先資料的第二部分可經讀取、更新、及儲存。於若干實施例中,此等方塊係並列執行。
於方塊750之後,控制邏輯420決定是否針對所接收的指令繼續監視匯流排介面410及/或緩衝器430(方塊760)。若控制邏輯420決定記憶體模組140不再監視指令的接收(例如系統進入關閉,記憶體模組130已經與處理器110中斷通訊等),則範例方法700結束。但若控制邏輯420決定記憶體模組仍繼續監視指令的接收(方塊760),則控制返回方塊710,於該處控制邏輯420等待來自處理器110或其它裝置透過外部記憶體匯流排120的下個指令。
雖然圖5-7之範例方法彼此獨立地顯示及描述,但於若干實施例中,圖5-7之範例方法中之任一者或多者可在相同系統,使用相同及/或相異記憶體模組或記憶體節點並列或串列進行。舉例言之,圖5及圖7兩者可藉單一記憶體模組控制器140具現,使得圖5係具現以執行基元寫指令,及圖7係具現以執行COW-寫指令。
此處描述之方法及裝置之實施例許可更有效地使用一系統的外部記憶體匯流排,及透過在隨機存取記憶體中之非依電性日誌及/或COW的使用而確保記憶體一致的更新。
雖然此處已經揭示某些範例方法、裝置及製造物件,但本專利案之涵蓋範圍並非囿限於此。相反地,本專利案涵蓋落入於本案申請專利範圍各項之範圍內的全部方法、裝置及製造物件。
105‧‧‧寫中斷檢測器
110‧‧‧處理器
130‧‧‧記憶體模組
140‧‧‧記憶體模組控制器
150‧‧‧記憶體
MMC-1~N‧‧‧記憶體存取操作
P1‧‧‧指令
Claims (22)
- 一種用於記憶體之方法,該方法係包含:將與一寫請求相聯結的復原資訊儲存於該記憶體而無處理器的介入,該復原資訊係當該寫被中斷時輔助重做或取消由該寫請求所請求的一寫,該寫請求係接收自一處理器及包含一目的地位址及新資料;以及若該寫未被中斷,則將該新資料寫入該記憶體中的該目的地位址而無處理器的介入。
- 如請求項1之方法,其中儲存該復原資訊而無處理器的介入係包含儲存該復原資訊於該記憶體的一非依電性日誌而無處理器的介入。
- 如請求項1之方法,其係進一步包含:在一系統當機或一斷電中斷該寫之後,根據該復原資訊,執行重做該寫或取消該寫中之至少一者而無處理器的介入。
- 如請求項2之方法,其係進一步包含:若該寫被中斷,則使用該復原資訊以將該新資料寫入該記憶體中的該目的地位址而無處理器的介入。
- 如請求項1之方法,其係進一步包含:在該寫之一中斷後,提供該復原資訊給該處理器用在取消或重做該寫。
- 一種用於記憶體之裝置,其係包含:一匯流排介面,用以從一處理器接收包含一目的地 位址及新資料欲寫入該記憶體的一寫請求;以及一邏輯電路,用以造成儲存與該寫請求相聯結的復原資訊,該復原資訊係當該寫被中斷時輔助重做或取消與該寫請求相聯結的一寫。
- 如請求項6之裝置,其中若該寫未被中斷,則該邏輯電路係進一步組配以:將該新資料寫入該記憶體中之該目的地位址,以及在將該新資料寫入該目的地位址後,抹除該復原資訊而無處理器的介入。
- 如請求項6之裝置,其中該邏輯電路係進一步組配以:儲存該目的地位址及新資料作為該復原資訊;以及在試圖執行該寫請求的一記憶體存取操作之一中斷之後,將該新資料寫入該記憶體中之該目的地位址。
- 如請求項6之裝置,其中該邏輯電路係進一步組配以:讀取於該記憶體中之該目的地位址的該等內容;儲存該目的地位址及該等讀取內容作為該復原資訊;以及在該寫之一中斷之後,將該等讀取內容寫入該記憶體中之該目的地位址。
- 如請求項6之裝置,其中該邏輯電路及該匯流排介面係並置在該記憶體的一記憶體模組內。
- 如請求項6之裝置,其中該復原資訊係儲存於該記憶體中的一日誌內。
- 一種包含指令的有形電腦可讀儲存媒體,該等指令當執 行時使得一機器至少進行下列動作:發出包含一目的地位址及新資料的一寫請求給一記憶體模組,其中應答於接收到該寫請求,該記憶體模組儲存與該寫請求相聯結的復原資訊以當該寫之一中斷時,協助取消該寫或重做該寫。
- 一種用於記憶體之裝置,其係包含:一匯流排介面,用以從一處理器接收一寫入時複製寫指令,該寫入時複製寫指令係包含一第一位址、一第二位址、及修正資料;以及一邏輯電路,用以從於該記憶體中之該第一位址讀取第一資料,使用該修正資料更新該第一資料,及將該已更新資料儲存於該記憶體中之該第二位址。
- 如請求項13之裝置,其中該修正資料係包含一偏位及新資料,及該邏輯電路係進一步藉以該新資料置換於該偏位的第一資料而使用該修正資料更新該第一資料。
- 如請求項13之裝置,其中該邏輯電路係進一步用以藉由將新資料插入於該第一資料中的一第一偏位或刪除於該第一資料中的一第二偏位之資料中之至少一者而使用該修正資料更新該第一資料。
- 如請求項13之裝置,其中該第一資料之一長度係由一預定值、該寫入時複製寫指令的一長度欄位、或該寫入時複製寫指令之該第一位址與一第三位址間之一差中之至少一者決定。
- 如請求項13之裝置,其中該邏輯電路及該匯流排介面係並置在該記憶體的一記憶體模組內。
- 一種用於記憶體之方法,該方法係包含:從該記憶體中之一第一位址讀取第一資料而無處理器的介入,該第一位址係載明於接收自一處理器的一寫入時複製寫指令;使用該寫入時複製寫指令之修正資料更新該第一資料而無處理器的介入;以及儲存該寫入時複製寫指令之該已更新資料於該記憶體中的一第二位址而無處理器的介入。
- 如請求項18之方法,其中該修正資料係包含一偏位及新資料,及該方法係進一步包含藉以該新資料置換於該偏位的第一資料而使用該修正資料更新該第一資料。
- 如請求項18之方法,其係進一步包含藉由將新資料插入於該第一資料的一第一偏位或刪除於該第一資料的一第二偏位之舊資料中之至少一者而使用該修正資料更新該第一資料。
- 如請求項18之方法,其中該第一資料之一長度係由一預定值、該寫入時複製寫指令的一長度欄位、或該寫入時複製寫指令之該第一位址與一第三位址間之一差中之至少一者決定。
- 一種包含指令的有形電腦可讀儲存媒體,該等指令當執行時使得一機器至少進行下列動作:發送一寫入時複製寫請求給一記憶體模組,該寫入 時複製寫請求係包含一第一位址、一第二位址、及修正資料,其中應答於接收到該寫請求,該記憶體模組從一記憶體中之該第一位址讀取第一資料,使用該修正資料更新該第一資料,及儲存該已更新資料於該記憶體中之該第二位址。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2013/032414 WO2014143023A1 (en) | 2013-03-15 | 2013-03-15 | Memory module controller supporting extended writes |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201502788A TW201502788A (zh) | 2015-01-16 |
TWI606343B true TWI606343B (zh) | 2017-11-21 |
Family
ID=51537374
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103102680A TWI606343B (zh) | 2013-03-15 | 2014-01-24 | 支援擴充寫入之記憶體模組控制器 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20150370655A1 (zh) |
KR (1) | KR20150132101A (zh) |
CN (1) | CN104937577B (zh) |
TW (1) | TWI606343B (zh) |
WO (1) | WO2014143023A1 (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2531011A (en) * | 2014-10-07 | 2016-04-13 | Ibm | Initializing I/O Devices |
TWI596612B (zh) * | 2015-12-04 | 2017-08-21 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置 |
CN106873901B (zh) * | 2015-12-11 | 2020-02-07 | 群联电子股份有限公司 | 存储器管理方法、存储器控制电路单元与存储器存储装置 |
US10296250B2 (en) * | 2016-06-08 | 2019-05-21 | Intel Corporation | Method and apparatus for improving performance of sequential logging in a storage device |
CN108363670B (zh) * | 2017-01-26 | 2020-07-14 | 华为技术有限公司 | 一种数据传输的方法、装置、设备和系统 |
US10387261B2 (en) * | 2017-05-05 | 2019-08-20 | Dell Products L.P. | System and method to capture stored data following system crash |
KR102398201B1 (ko) * | 2017-06-30 | 2022-05-17 | 삼성전자주식회사 | 프로세서의 개입 없이 단순 작업을 관리하는 스토리지 장치 |
US10490245B2 (en) | 2017-10-02 | 2019-11-26 | Micron Technology, Inc. | Memory system that supports dual-mode modulation |
US10355893B2 (en) * | 2017-10-02 | 2019-07-16 | Micron Technology, Inc. | Multiplexing distinct signals on a single pin of a memory device |
US11403241B2 (en) | 2017-10-02 | 2022-08-02 | Micron Technology, Inc. | Communicating data with stacked memory dies |
US10725913B2 (en) | 2017-10-02 | 2020-07-28 | Micron Technology, Inc. | Variable modulation scheme for memory device access or operation |
US10446198B2 (en) | 2017-10-02 | 2019-10-15 | Micron Technology, Inc. | Multiple concurrent modulation schemes in a memory system |
KR102353859B1 (ko) * | 2017-11-01 | 2022-01-19 | 삼성전자주식회사 | 컴퓨팅 장치 및 비휘발성 듀얼 인라인 메모리 모듈 |
KR102415218B1 (ko) * | 2017-11-24 | 2022-07-01 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 이의 동작 방법 |
US11500570B2 (en) * | 2018-09-06 | 2022-11-15 | Pure Storage, Inc. | Efficient relocation of data utilizing different programming modes |
CN111240581B (zh) * | 2018-11-29 | 2023-08-08 | 北京地平线机器人技术研发有限公司 | 存储器访问控制方法、装置和电子设备 |
US10901734B2 (en) | 2019-03-01 | 2021-01-26 | Micron Technology, Inc. | Memory mapping using commands to transfer data and/or perform logic operations |
KR102674032B1 (ko) * | 2019-12-26 | 2024-06-12 | 삼성전자주식회사 | 리페어 동작을 수행하는 메모리 장치, 그것을 포함하는 메모리 시스템 및 그것의 동작 방법 |
CN112667161B (zh) * | 2020-12-25 | 2023-11-10 | 北京科银京成技术有限公司 | 文件系统的数据处理方法、装置、设备及介质 |
US11947839B2 (en) | 2021-05-10 | 2024-04-02 | Samsung Electronics Co., Ltd. | Storage device, system, and method for customizable metadata |
US11704246B2 (en) * | 2021-07-29 | 2023-07-18 | Macronix International Co., Ltd. | Memory system for maintaining data consistency and operation method thereof |
US11650759B2 (en) * | 2021-08-03 | 2023-05-16 | Kioxia Corporation | Method and apparatus of managing a non-volatile memory using an in-memory journal |
JP2023037883A (ja) * | 2021-09-06 | 2023-03-16 | キオクシア株式会社 | 情報処理装置 |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5732238A (en) * | 1996-06-12 | 1998-03-24 | Storage Computer Corporation | Non-volatile cache for providing data integrity in operation with a volatile demand paging cache in a data storage system |
US7130958B2 (en) * | 2003-12-02 | 2006-10-31 | Super Talent Electronics, Inc. | Serial interface to flash-memory chip using PCI-express-like packets and packed data for partial-page writes |
JP3754288B2 (ja) * | 1999-12-27 | 2006-03-08 | 三洋電機株式会社 | 制御装置 |
JP4037605B2 (ja) * | 2000-12-04 | 2008-01-23 | 株式会社東芝 | 不揮発性メモリユニットのコントローラ、同コントローラを有するメモリシステム及び不揮発性メモリユニットの制御方法 |
JP4058322B2 (ja) * | 2002-10-07 | 2008-03-05 | 株式会社ルネサステクノロジ | メモリカード |
US7930589B2 (en) * | 2005-06-17 | 2011-04-19 | Analog Devices, Inc. | Interrupt-responsive non-volatile memory system and method |
US7650459B2 (en) * | 2006-12-21 | 2010-01-19 | Intel Corporation | High speed interface for non-volatile memory |
KR100850515B1 (ko) * | 2007-01-24 | 2008-08-05 | 삼성전자주식회사 | 멀티레벨 셀 플래시 메모리를 갖는 메모리 시스템 및그것의 프로그램 방법 |
US8200914B2 (en) * | 2008-01-03 | 2012-06-12 | International Business Machines Corporation | Apparatus, system, and method for a read-before-write storage controller instruction |
US20090193189A1 (en) * | 2008-01-30 | 2009-07-30 | Formation, Inc. | Block-based Storage System Having Recovery Memory to Prevent Loss of Data from Volatile Write Cache |
US7979626B2 (en) * | 2008-05-13 | 2011-07-12 | Microsoft Corporation | Flash recovery employing transaction log |
JP2010015197A (ja) * | 2008-06-30 | 2010-01-21 | Toshiba Corp | ストレージ制御装置、データ復元装置およびストレージシステム |
JP2010536112A (ja) * | 2008-07-22 | 2010-11-25 | エルエスアイ コーポレーション | 中断された書込みの回復のためのデータ記憶方法、機器およびシステム |
KR20100091379A (ko) * | 2009-02-10 | 2010-08-19 | 삼성전자주식회사 | 반도체 디스크 장치 및 그것의 프로그램 페일 처리 방법 |
JP4660605B2 (ja) * | 2009-05-28 | 2011-03-30 | 株式会社東芝 | 復号装置、復号方法及び磁気ディスク装置 |
JP4660612B2 (ja) * | 2009-07-09 | 2011-03-30 | 株式会社東芝 | 情報再生装置及び情報再生方法 |
US8381059B2 (en) * | 2010-02-17 | 2013-02-19 | Micron Technology, Inc. | Error correction and recovery in chained memory architectures |
US20110296131A1 (en) * | 2010-05-31 | 2011-12-01 | Samsung Electronics Co., Ltd | Nonvolatile memory system and the operation method thereof |
US9047178B2 (en) * | 2010-12-13 | 2015-06-02 | SanDisk Technologies, Inc. | Auto-commit memory synchronization |
US9251005B2 (en) * | 2010-12-20 | 2016-02-02 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Power isolation for memory backup |
US9053809B2 (en) * | 2011-11-09 | 2015-06-09 | Apple Inc. | Data protection from write failures in nonvolatile memory |
TWI480733B (zh) * | 2012-03-29 | 2015-04-11 | Phison Electronics Corp | 資料寫入方法、記憶體控制器與記憶體儲存裝置 |
US8788880B1 (en) * | 2012-08-22 | 2014-07-22 | Western Digital Technologies, Inc. | Efficient retry mechanism for solid-state memory failures |
US9141537B2 (en) * | 2012-10-30 | 2015-09-22 | Mangstor, Inc. | Magnetic random access memory journal |
-
2013
- 2013-03-15 WO PCT/US2013/032414 patent/WO2014143023A1/en active Application Filing
- 2013-03-15 US US14/764,609 patent/US20150370655A1/en not_active Abandoned
- 2013-03-15 KR KR1020157020802A patent/KR20150132101A/ko not_active Application Discontinuation
- 2013-03-15 CN CN201380072007.8A patent/CN104937577B/zh not_active Expired - Fee Related
-
2014
- 2014-01-24 TW TW103102680A patent/TWI606343B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
CN104937577B (zh) | 2018-11-30 |
WO2014143023A1 (en) | 2014-09-18 |
TW201502788A (zh) | 2015-01-16 |
CN104937577A (zh) | 2015-09-23 |
US20150370655A1 (en) | 2015-12-24 |
KR20150132101A (ko) | 2015-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI606343B (zh) | 支援擴充寫入之記憶體模組控制器 | |
US9069474B2 (en) | Retention based defecting in a hybrid memory system | |
US8316257B2 (en) | NAND power fail recovery | |
US8762661B2 (en) | System and method of managing metadata | |
US9632714B2 (en) | Solid-state drive device | |
US9507719B2 (en) | Garbage collection in hybrid memory system | |
JP6341918B2 (ja) | ストレージを含むデータをコピーするためのコンピュータ・プログラム、システム、および方法 | |
US20190324859A1 (en) | Method and Apparatus for Restoring Data after Power Failure for An Open-Channel Solid State Drive | |
US20100235568A1 (en) | Storage device using non-volatile memory | |
US10019179B2 (en) | Memory device that writes data into a block based on time passage since erasure of data from the block | |
TW201007449A (en) | Flash memory storage system and data writing method thereof | |
TW201011767A (en) | NAND error management | |
TWI533127B (zh) | 記憶體模組上之資料管理技術 | |
TW201329700A (zh) | 處理用於具有非揮發性記憶體之一系統之不正常關機 | |
US9990150B2 (en) | Method to provide transactional semantics for updates to data structures stored in a non-volatile memory | |
CN101782875A (zh) | 存储设备和数据存储方法 | |
CN110321249A (zh) | 具有用于元数据的持久dram区域的ssd | |
US11803222B2 (en) | Systems and methods for managing reduced power failure energy requirements on a solid state drive | |
US10915267B2 (en) | Atomic cross-media writes on a storage device | |
TW201327185A (zh) | 記憶體儲存裝置及其記憶體控制器與資料寫入方法 | |
US20050185496A1 (en) | Intelligent solid state disk | |
JP2010122730A (ja) | ストレージ制御装置及びストレージシステム | |
JP2013196646A (ja) | メモリ制御装置、データ記憶装置及びメモリ制御方法 | |
JP2006099802A (ja) | 記憶制御装置およびキャッシュメモリの制御方法 | |
US20240264750A1 (en) | Atomic Operations Implemented using Memory Services of Data Storage Devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |