TWI740009B - 編碼機制及其編碼方法 - Google Patents

編碼機制及其編碼方法 Download PDF

Info

Publication number
TWI740009B
TWI740009B TW107107123A TW107107123A TWI740009B TW I740009 B TWI740009 B TW I740009B TW 107107123 A TW107107123 A TW 107107123A TW 107107123 A TW107107123 A TW 107107123A TW I740009 B TWI740009 B TW I740009B
Authority
TW
Taiwan
Prior art keywords
bits
code
data
encoding
encoder
Prior art date
Application number
TW107107123A
Other languages
English (en)
Other versions
TW201907299A (zh
Inventor
牛迪民
張牧天
鄭宏忠
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 TW201907299A publication Critical patent/TW201907299A/zh
Application granted granted Critical
Publication of TWI740009B publication Critical patent/TWI740009B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • G06F13/4239Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus with asynchronous protocol

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

本揭露提供一種硬體編碼機制。此編碼機制可包括使用 基礎數量的位元以產生第一代碼的第一編碼器,以及使用增補數量的位元以產生第二代碼的第二編碼器。第二代碼與第一代碼並用可比單用所述第一代碼更強。儲存於儲存器中的模式暫存器可指明是否對於第二編碼器的開關開啟或關閉:第一編碼器始終會被使用。

Description

編碼機制及其編碼方法 [相關申請案資料]
本申請案主張於2017年5月8日提交美國暫時專利申請案第62/503,317號的優先權,其揭露以全文參考的方式併入本文中。
本發明概念大體上是有關於一種記憶體模組,且特別是有關於一種支援記憶體事務(memory transaction)中不同級別編/解碼的記憶體模組。
在採用雙倍資料率(Dual Data Rate;DDR)通道的非揮發性雙行記憶體模組(Non-Volatile Dual In-Line Memory Modules;NVDIMM)中,需經由事務導向介面(transaction-based interface)來進行非同步交握(asynchronous handshakes)。此種交握亦可為除NVDIMM以外的其他形式的記憶體所用而有可變的讀/寫時序,並需要來自雙行記憶體模組(DIMM)的回饋資訊。此外,一些系統會有在主機與DIMM間交換元資料(metadata,如請求ID、命中/未中資訊、廠商元資料等)方面的需求。以專屬通道傳遞元資料 需要硬體上的改變,但使用專屬套件來傳遞元資料又會增加效能上的成本(overhead)。
分配給錯誤更正碼(Error Correcting Codes;ECCs)的位元也可用來交換元資料。由Nale等人轉讓給英特爾公司(Intel Corp.)的美國專利公開號2014/0040550中,描述了一種將ECC位元用於元資料的方法。此解決方案中,述及了需要元資料資訊轉送(metadata information transfers)的「近/遠」非同步記憶體階層(“near/far”asynchronous memory hierarchy),以及供元資料交換所用的協定。但是,這種協定不允許廠商為廠商指定功能(vendor-specific functions)實行(implement)元資料。
此外,使用ECC位元來促成元資料交換也意味著這些位元將無法用於ECC。因此,將ECC位元分配給元資料使用會導致ECC系統較弱。使問題越發複雜的是,不同的系統對元資料可能需要不同數目的位元,反而影響到可用於錯誤更正的位元多寡。
因此,仍有待找出一種方法來管理用於ECC及元資料的ECC位元。
根據本發明概念的一實施例,提供一種以硬體實現的編碼機制,其包括:第一編碼器,針對資料產生第一代碼,第一代碼包括基礎數量的位元;第二編碼器,針對所述資料產生第二代碼,第二代碼包括增補數量的位元;儲存器,用於模式暫存器; 以及開關,回應所述模式暫存器而控制是否要使用所述第二編碼器。第一編碼器始終用以產生第一代碼,而第二編碼器可選擇性地用以產生第二代碼。第二代碼與第一代碼並用提供比單用第一代碼時更強的編碼。
根據本發明概念的一實施例,提供一種以硬體實現的編碼機制,其包括:第一解碼器,針對資料及第一代碼產生第一結果,第一代碼包括基礎數量的位元;第二解碼器,針對資料及至少一第二代碼產生第二結果,第二代碼包括增補數量的位元;儲存器,用於模式暫存器;以及開關,回應模式暫存器而控制是否要使用第二解碼器。第一解碼器始終用以產生第一結果,而第二解碼器可選擇性地用以產生第二結果。第二結果與第一結果並用提供比單用第一結果時更強的解碼。
根據本發明概念的一實施例,提供一種方法,其包括:接收用於記憶體事務的資料;於記憶體事務期間,判斷可用於錯誤管理的位元數量,其中可用於錯誤管理的位元數量包括基礎數量的位元以及增補數量的位元;基於基礎數量的位元對資料進行第一錯誤管理編碼;以及基於增補數量的位元對資料進行第二錯誤管理編碼。
110:處理器
115:記憶體
120:儲存裝置
125:記憶體控制器
130:裝置驅動器
205:時鐘
210:網路控制器
215:匯流排
220:使用者介面
225:I/O引擎
305-1、305-2、305-3、305-4、305-5、305-6:晶片
310:DIMM控制器
315:編碼機制
405:接收器/傳送器
410:記憶體模組選擇器
505:基礎數量的位元
510:增補數量的位元
705:第一編碼器
710:第二編碼器
715、825、910、1015:開關
720:儲存器
725:第一代碼
730:第一代碼
735:模式暫存器
805:第一解碼器
810:第一結果
815:第二解碼器
820:第二結果
905:第三編碼器
915:第三代碼
1005:第三解碼器
1010:第三結果
1205、1210、1215、1220、1225、1230、1240、1245、1250、1305、1310、1315、1320、1325、1330、1335、1345、1350、1355、1405、1410、1415、1420:區塊
1235、1340:虛線
圖1示出根據本發明概念實施例一種用於進行多級編/解碼的 機器。
圖2示出圖1的機器的額外細節。
圖3示出圖1的機器中用以進行編/解碼記憶體模組。
圖4示出圖1中用以進行編/解碼的記憶體控制器。
圖5A及5B示出64+8位元寬的記憶體體通道中編/解碼所用錯誤更正碼(ECC)位元的可變數量。
圖6A及6B示出32+8位元寬的記憶體體通道中編/解碼所用ECC位元的可變數量。
圖7示出根據本發明概念第一實施例之圖3至4的編碼機制。
圖8示出根據本發明概念第二實施例之圖3至4的編碼機制。
圖9示出根據本發明概念第三實施例之圖3至4的編碼機制。
圖10示出根據本發明概念第四實施例之圖3至4的編碼機制。
圖11示出根據本發明概念第五實施例之圖3至4的編碼機制。
圖12A及12B示出根據本發明概念實施例的使用圖7、9及11的編碼機制來編碼用於記憶體事務的資料之實例程序的流程圖。
圖13A及13B示出根據本發明概念實施例的使用圖8及10的編碼機制來解碼用於記憶體事務的資料之實例程序的流程圖。
圖14示出使用代碼以支援錯誤檢測及更正之實例程序的流程圖。
現在將詳細參考本發明概念的實施例,其實例在附圖中予以說明。在以下詳細描述中,闡述大量特定細節以使得能夠透徹理解本發明概念。然而,應理解,所屬領域中具通常知識者可在無此等特定細節的情況下實踐本發明概念。在其他情況下,尚未詳細描述眾所周知的方法、程序、組件、電路以及網路,以免不必要地混淆實施例的態樣。
應理解,儘管在本文中可使用術語第一、第二等來描述各種元件,但此等元件不應受限於此等術語。此等術語僅用以將一元件與另一元件區分。舉例而言,第一模組可稱為第二模組,且類似地,第二模組可稱為第一模組,而不會背離本發明概念的範疇。
本文中本發明概念的描述中所使用的術語僅是出於描述特定實施例的目的且並不意欲限制本發明概念。如對本發明概念及所附申請專利範圍的描述中所使用,除非上下文另有清晰指示,否則單數形式「一」及「所述」亦意欲包含複數形式。亦應理解,如本文所使用的術語「及/或」指代且涵蓋相關聯的所列項目中的一或多者的任何及所有可能組合。應進一步理解,術語「包括」在用於本說明書中時指定所敍述特徵、整數、步驟、操作、元件及/或組件的存在,但不排除一或多個其他特徵、整數、步驟、操作、元件、組件及/或其群組的存在或添加。圖式的組件及特徵 未必按比例繪製。
習知的動態隨機存取記憶體(DRAM)是使用一種同步協定(synchronous protocol)來管理雙行記憶體模組(Dual In-Line Memory Modules;DIMMs)與記憶體控制器間的記憶體事務。同步介面具有以下優點:DIMM及記憶體控制器兩者皆確切地知道何時資料可用。另一方面,非揮發性雙行記憶體模組(NVDIMMs)則使用非同步協定(asynchronous protocol;NVDIMM-P)。在非同步協定下,基於所進行的操作及製造NVDIMM所用材料等諸多因素,完成記憶體事務所需的時間量可能會不同。此外,非同步協定可能需要交握,而其需要從NVDIMM到記憶體控制器的回饋。這種回饋可能以元資料的形式被附加在從NVDIMM傳送到記憶體控制器的資料。
此外,主機可指定要與資料共同儲存的元資料。這種元資料往往使用記憶體事務中的一些「備用(spare)」位元(例如,錯誤更正碼(ECC)位元)而被附加到資料中。當從記憶體讀出資料時,這種元資料亦應被讀出且回傳至記憶體控制器。不同廠商可能需要不同方式來配置元資料位元,以及為了支援不同元資料的需求採用各自都有其缺點的習知方法。本質上,支援元資料位元需權衡ECC的位元的可用性(availability),即ECC強度(strength)。
例如,假設記憶體模組在8個資料叢發(bursts of data)中的每一個包含8個用於ECC的位元,則在每個512位元的記憶 體事務中,這種組合將換算出共64個可用於ECC的位元。
若各叢發的這八個位元中有三個是用於元資料,則64個ECC位元中的24個是用於元資料,餘下40個位元可用於ECC。若各叢發中的這八個位元中僅有2個是用於元資料,則64個ECC位元中僅有16個用於元資料,餘下48個位元可用於ECC。前者的組合提供較多位元給元資料,但有較弱的ECC。後者的組合提供較強的ECC,但有較少的位元給元資料。
若記憶體模組是以為元資料和ECC分配特定數量的位元來製造,則需要不同的記憶體模組來支援不同的元資料和ECC需求。而較佳的解決方案是以單一裝置支援多個不同(強弱不一的)演算法,以容許所關聯的元資料在剩餘位元的數量上具有靈活性。
諸如DDR5等未來的記憶體解決方案會導致其他複雜問題。隨著DDR5記憶體中窄通道的改變,需要預取的位元數量增加,並同時增加了錯誤更正上的成本。例如,DDR4記憶體在每16個資料晶片中需用兩個ECC晶片;另一方面,DDR5記憶體在每八個資料晶片中則需用兩個ECC晶片。因此,要在DDR5中維持現有的ECC能力,則需增加ECC成本;而要維持現有的成本,則會削弱的記憶體的ECC能力。
習知的多重ECC編碼(coding)系統需要兩個(或更多)完整的編碼器或解碼器,但同一時間僅有一者可用(主動ECC機制的編碼系統),導致需要更多的電路。在本發明概念的實施例中,編碼器/解碼器可區分為「始終啟用」(always on)部分及可提 供較大覆蓋範圍的可切換部分。
說明本發明概念實施例如何運作的例子中,所述「始終啟用」部分的編碼器/解碼器可實現循環冗餘檢查(Cyclic Redundancy Check;CRC),其可啟動對錯誤的檢測(但不一定要啟動錯誤更正)。所述可切換部分的編碼器/解碼器可使用奇偶資訊(parity information),其亦能啟動錯誤更正。
可切換編碼器/解碼器的操作可藉由在模式暫存器中設定特定數值來變更。
NVDIMMs以及未來基於DDRx介面的DRAM皆可應用此處的設計。
圖1示出根據本發明概念實施例一種具有儲存裝置的機器。圖1中,示出了一種機器105。機器105可為任何所需機器,包括但不限於,桌上型或筆記型電腦、伺服器(獨立伺服器或機架式伺服器),或者能受益於本發明概念實施例的其他裝置。機器105亦可包括專用的行動運算裝置、平板電腦、智慧手機以及其他行動運算裝置。機器105可運行任何所需應用程式:資料庫應用程式雖不失為一良好實例,但本發明概念的實施例可延伸至任何所需應用程式。
無論具體形式為何,機器105可包括處理器110、記憶體115以及儲存裝置120。處理器110可為任何種類的處理器,例如,Intel Xeon、Celeron、Itanium或Atom處理器、AMD Opteron處理器、ARM處理器等。儘管圖1示出了單一處理器,但機器105可包括 任意數量的處理器,且可分別為單核心或多核心的處理器。記憶體115可為任何種類的記憶體,例如,快閃記憶體、靜態隨機存取記憶體(Static Random Access Memory;SRAM)、持久型隨機存取記憶體(Persistent Random Access Memory)、鐵電隨機存取記憶體(Ferroelectric Random Access Memory;FRAM)或非揮發性隨機存取記憶體(Non-Volatile Random Access Memory;NVRAM),例如磁阻隨機存取記憶體(Magnetoresistive Random Access Memory;MRAM)等。記憶體115亦可為不同種類記憶體的任何所需組合。記憶體115可受控於記憶體控制器125,其亦為機器105的一部份。
儲存裝置120可為任何種類的儲存裝置。儲存裝置120可受控於裝置驅動器130,其可內置於機器115中。
圖2示出圖1的機器105的額外細節。參照圖2,通常情況下,機器105包括一或多個處理器110,其各可包括記憶體控制器125以及時鐘205,而兩者可用於協調機器105中組件的操作。處理器110亦可耦接至記憶體115(其可包括,例如,隨機存取記憶體(RAM)、唯讀記憶體(ROM)或其他狀態保存媒體(state preserving media))。處理器110亦可耦接至儲存裝置120及網路連接器210(其可為,例如,乙太網路連接器或無線連接器)。處理器110亦可連接至匯流排215,其可裝設有其他組件之中的使用者介面220以及可使用輸入/輸出引擎225來管理的輸入/輸出介面埠(Input/Output interface ports)。
圖3示出圖1的機器105中用以進行編/解碼的記憶體模 組。圖3中,示出了一種記憶體模組115。記憶體模組115可包括晶片305-1至305-6。儘管圖3示出記憶體模組115包括有六個晶片305-1至305-6,但本發明概念的實施例可支援任何數量的晶片305。
記憶體模組115亦可包括DIMM控制器310。DIMM控制器310可控制晶片305-1至305-6之間的資料移動、支援記憶體模組115中快取(cache,未示於圖3)的快取機制以及其他功能。編碼機制315可為DIMM控制器310的一部份,並可進行及/或使用諸如錯誤更正碼(ECCs)等各種編碼作為記憶體事務部份。例如,編碼機制315可在作為記憶體事務部份的資料上產生或使用錯誤更正碼。以下將參照圖7至9進行說明,其中編碼機制315可支援多重編碼,其可以(部分地或全部地)共享硬體實現(implementation)以減少記憶體模組115中所需空間及記憶體模組115產生的熱能。所述各種編碼也可相互關聯,也就是說,一種編碼可輔助另一種編碼而非與其全然無關。
圖4示出圖1中用以進行編/解碼的記憶體控制器125。圖4中,記憶體控制器125可包括編碼機制315。記憶體控制器125亦可包括其他習知組件,例如用於在圖1的機器105間收發資料的接收器/傳送器405、用於選擇特定記憶體模組以從圖1的機器105接收記憶體事務的記憶體模組選擇器410等。記憶體控制器125中的編碼機制315的運作方式與圖3的記憶體模組115中的編碼機制315類似,惟通常圖3的記憶體模組115與記憶體控制器125 的其中一者是用以編碼資料,而另一者則用以解碼資料。例如,當其中一個編碼機制315用於產生錯誤偵測及更正碼時,此編碼機制315會產生錯誤偵測及更正碼,而另一個編碼機制315則會使用那些代碼判斷(作為記憶體事務部分的)任何資料是否出現錯誤。例如,編碼機制315可為編碼電路或編碼裝置。
圖5A及5B示出用於編/解碼的可變數量的ECC位元。圖5A中,示出了一種寬記憶體通道。在圖5A中(及圖5B中),記憶體事務中的各叢發會傳送72個位元:其中包括64個資料位元以及八個非資料位元。八個叢發一共會在每次記憶體事務傳送512個位元的資料,且會在每次記憶體事務傳送64個位元的非資料。
在各叢發裡,分配給非資料的八個位元中,示有五個位元用於錯誤偵測/更正,且示有三個位元用於元資料。此實例中,用於錯誤偵測/更正的五個位元可視為始終用於錯誤偵測/更正的「基礎數量」(base number)的位元505;剩餘的三個非資料位元可用於錯誤偵測/更正或者用於元資料,端視具體的實現為何而定。
對比圖5A,圖5B中亦示出了相同的72個位元。惟,圖5B中,雖然基礎數量的位元505維持不變(五個位元),然而其他的非資料位元並未全數分配給元資料。取而代之的是,其中兩個位元會分配給元資料,其他的(一個)則分配給錯誤偵測/更正。此實例中,此額外分配給錯誤偵測/更正的位元可稱為「增補數量」(supplementary number)的位元510。由於圖5B中八個ECC位元有六個實際用於錯誤偵測/更正,因此圖5B將提供較之圖5A優異 的錯誤偵測/更正。用於資料、非資料、ECC及元資料的位元數量僅用於舉例說明:上述類別可採用任何數量的位元。
對比圖5A及5B,圖6A及6B示出了一種窄記憶體通道。在圖6A中(及圖6B中),記憶體事務中各叢發會傳送40個位元:其中包括32個資料位元以及八個非資料位元。16個叢發一共會在每次記憶體事務傳送512位元的資料,且會在每次記憶體事務傳送128位元的元資料/ECC。
各叢發中,分配給非資料的八個位元中,四個位元是用於錯誤偵測/更正,且四個位元是用於元資料。此實例中,用於錯誤偵測/更正的四個位元可視為始終用於錯誤偵測/更正的「基礎數量」的位元505;剩餘的非資料位元可用於錯誤偵測/更正或用於元資料,端視具體的實現為何而定。
對比圖6A,圖6B中亦示出了相同的40個位元。惟,圖6B中,雖然基礎數量的位元505維持不變(四個位元),然而其他的非資料位元並未全數分配給元資料。取而代之的是,其中兩個位元會分配給元資料,而其他兩個則分配給錯誤偵測/更正。此實例中,這額外分配給錯誤偵測/更正的兩個位元可視為「增補數量」的位元510。由於圖6B八個非資料位元中的六個實際用於錯誤偵測/更正,因此圖6B將提供較之圖6A優異的錯誤偵測/更正。
圖7示出根據本發明概念第一實施例之圖3至4的編碼機制315。圖7中,所示編碼機制315包括編碼器705及710、開關715以及儲存器720。編碼器705及710可取得輸入資料並從此 資料產生代碼725以730。無論使用編碼器710與否,編碼器705可視為始終用於編碼的初級(primary)編碼器。編碼器710可視為次級(secondary)編碼器,且編碼器710僅會在開關715被關閉時使用。開關715可根據儲存於儲存器720中模式暫存器735的值而開啟或關閉。
例如,編碼器705可基於使用了圖5A至6B的基礎數量的位元505(如圖5A及5B中的五個位元,或圖6A及6B中的四個位元)的輸入資料來產生錯誤偵測碼(error detection code)。之後,取決於圖5A至6B中次級(增補)數量的位元510是否為正值(如圖5B中的一個位元,或圖6B中的兩個位元),(次級)編碼器710可用以產生額外錯誤更正碼的額外位元。
模式暫存器735可設有數值,此數值指示開關要被開啟,或被關閉以啟動編碼器710。由於圖7中僅使用了一個開關,模式暫存器735可能只包括一個位元的資料。例如,若這個位元設為0則開關715可被開啟,且若這個位元設為1則開關715可被關閉。模式暫存器735可使用任何所需方法來指示要開啟或關閉開關715(或任何額外開關,可參照後文圖9及11所述)。
儘管圖7示出了圖3至4的編碼機制315何以能產生可作為錯誤更正碼的代碼,但圖7的編碼機制315並不使用該些代碼來驗證及/或更正已經正確傳送的資料。圖8示出根據本發明概念第二實施例之圖3至4的編碼機制315,其可用以解碼前述代碼。
圖8中,編碼機制接收資料及代碼(如圖7的代碼725 及730),如圖所示。此種資訊會輸入至解碼器805,由其基於圖5A至6B的基礎數量的位元505進行資料的初步解碼(initial decoding),以產生結果810。但是,如果圖5B及6B中的增補數量的位元510不是零,則解碼器805的輸出(可能隨所述資料及代碼輸入至編碼機制315)亦可被傳遞至解碼器815,藉以基於圖5B及6B中增補數量的位元510來進行額外解碼(additional decoding)。第二解碼器815的結果是以結果820來示出。使用第二解碼器815與否可藉由開關825來控制(其會基於模式暫存器735而被開啟或關閉)。若並用結果810及820兩者,則可望能較之單用結果810而對資料有較佳的判斷:例如,錯誤偵測及更正兩者、或改進的錯誤偵測或改進的錯誤更正。
雖然圖7至8示出了編碼機制315是以(兩級的)編碼器與解碼器進行編碼與解碼,但本發明概念的實施例可在使用任何所需配置的任何數量的級別中支援任何數量的編碼器與解碼器。圖9示出根據本發明概念的第三實施例之圖3至4的編碼機制315。圖9中,所示編碼機制311包括編碼器705、710及905、開關715及910,以及儲存器720。編碼器905可如編碼器705及710般取得輸入資料並從此資料915產生代碼915。編碼器710及905可基於開關715及910以任何所需組合來啟動。例如,開關715及910可皆被開啟,而此時僅有編碼器705用以產生代碼725。或者,開關715及910可皆被關閉,而此時編碼器705、710及905則分別用以產生代碼725、730及915。又或,開關715及910中 僅有一者被關閉(而另一者則被開啟),而此時編碼器710及905中僅有一者用以分別地產生代碼730或915。開關715及910可使用模式暫存器735中的數值來管理。
又例如,編碼器705可基於使用了圖5A及5B的基礎數量(五個)的位元505或圖6A及6B的基礎數量(四個)的位元505的輸入資料來產生錯誤偵測碼。之後,取決圖5B及6B的次級(增補)數量的位元510是否為至少一或二,次級編碼器710或905可用以產生錯誤更正碼的額外一或二(或更多)個位元。
由於圖9包括兩個開關715及910,模式暫存器735可能需要一個以上的位元,以支援開關715及910在分別或同時為開啟或關閉等所有相關組合。例如,模式暫存器735的最低順位位元可指定開關715是否要被開啟或關閉,而模式暫存器735的次低順位位元可指定開關910是否要被開啟或關閉,以此類推。模式暫存器735可使用任何所需方法來指示哪個開關要被開啟或關閉。
圖9示出了圖3至4的編碼機制315是使用三個編碼器705、710及905來進行編碼。以類似的方式,圖3至4的編碼機制315亦可以使用兩個以上的解碼器來進行解碼。圖10示出根據本發明概念第四實施例之上述編碼機制的一個實例。
圖10中,編碼機制315接收資料及代碼(如圖7及9的代碼725、730及915),如圖所示。如先前圖8相關說明所述,此種資訊會被輸入至解碼器805,由其基於圖5A至6B的基礎數量的位元505進行初步解碼,以產生結果810。如果圖5B及6B的增 補數量的位元510不是零,則解碼器805的輸出(可能伴隨著資料和代碼)亦可傳遞到解碼器815以基於圖5B及6B的增補數量的位元510來進行額外解碼。第二解碼器815的結果是以結果820來示出。若圖5B及6B的增補數量的位元510包括的位元比僅用解碼器815來產生的位元還多,則解碼器815的輸出(同樣地,可能伴隨著資料和代碼)亦可傳遞至解碼器1005以基於圖5B及6B的增補數量的位元510來進行額外解碼。第三解碼器1005的結果是以結果1010來示出。使用第三解碼器1005與否可藉由開關1015來控制(其會基於模式暫存器735而被開啟或關閉)。較之僅並用結果810及820兩者,並用所有的結果810、820及1010將可望對資料作出更佳的判斷:例如,錯誤偵測及更正兩者、或改進的錯誤偵測或改進的錯誤更正。
在圖7至10所示的本發明概念實施例中,編碼是使用圖7及9中可選擇的並行(parallel)編碼器710及905來實現,而解碼則是使用圖8及10中串接(cascading)的解碼器815及1005來實現。然而,本發明概念的實施例包括圖3至4的編碼機制315亦可使用串接編碼器(或並行與串接編碼器的組合)來進行編碼,且可使用並行解碼器(或並行與串接解碼器的組合)來進行解碼。圖11示出根據本發明概念第五實施例之圖3至4的編碼機制,其使用了串接編碼器。
圖11中,所示編碼機制315包括編碼器705、710及905、開關715及910以及儲存器720,且上述元件之操作皆與圖9所述 類似。除了以編碼器905來替代編碼器710外,編碼器905亦可選擇性地用以輔助編碼器710。也就是說,除非有使用到圖11的編碼器710,否則不會使用到圖11的編碼器905。故,編碼器905僅會在開關715及910兩者皆被關閉時被使用。取決於儲存在儲存器720中的模式暫存器735的數值,開關715及910可因而被開啟或關閉。
又例如,編碼器705可基於使用了圖5A及5B的基礎數量(五個)的位元505或圖6A及6B的基礎數量(四個)的位元505的輸入資料來產生錯誤偵測碼。之後,取決於圖5B及6B的次級(增補)數量的位元510是否為至少一或二,次級編碼器710可用以產生錯誤更正碼的額外一或二(或更多)個位元。在完全不需要元資料位元的情況下一即,圖5B及6B的次級(增補)數量510的位元大於編碼器710所產生的位元數量一則三級(tertiary)編碼器905亦可使用額外的輔助位元來產生更加強的錯誤更正碼。
在使用串接編碼器(如圖8及10的編碼機制315)的本發明概念實施例中,串接中的較下位的編碼器可將較前位的編碼器的輸出作為輸入來接收,且亦有可能接收到原始資料。因此,圖11的編碼器905可接收圖11的代碼730,且亦可接收原始資料,藉以產生圖11的代碼915。
如圖9所示,由於圖11包括兩個開關715及910,模式暫存器735可能需要一個以上的位元來支援開關715及910分別或同時為開啟或關閉等所有相關組合。例如,模式暫存器735的最 低順位位元可指定開關715是否要被開啟或關閉,而模式暫存器735的次低順位位元可指定開關910是否要被開啟或關閉,以此類推。模式暫存器735可使用任何所需方法來指示哪個開關要被開啟或關閉。
為便於論述,術語「代碼器(coder)」意欲作為涵蓋編碼器和解碼器兩者的通用術語。類似地,為便於論述,術語「錯誤管理(error management)」意欲作為涵蓋錯誤偵測及/或更正碼的生成(採用圖7、9及11的編碼機制315)以及使用代碼對任何錯誤進行的偵測及/或更正(採用圖8及10的編碼機制315)兩者的通用術語。此外,術語「錯誤管理」意欲涵蓋各種錯誤偵測及更正。因此,舉例而言,若圖7、9及11中的代碼725提供原始資料內的錯誤偵測功能,且圖7、9及11中的代碼730提供原始資料內錯誤更正功能,兩者皆視為「錯誤管理」。類似地,若圖7、9及115中的代碼725提供弱錯誤偵測或錯誤更正結果,且圖7、9及11中的代碼730提供強錯誤偵測或錯誤更正結果,兩者皆視為「錯誤管理」。
圖7至11舉出了本發明概念的具體實施例。惟,本發明概念的其他實施例可支援編碼器或解碼器的任何所需組合。因此,例如,圖3至4的編碼機制315可以包括一些其他串接代碼器和其他替代用代碼器。或者,圖3至4的編碼機制315可具有一個位於串接頂部的代碼器,以及多個位於該串接較下位的替代用代碼器。本發明概念實施例意欲涵蓋上述串接或替代用代碼器 的所有組合。又,模式暫存器735中的數值可使用任何所需方式將模式暫存器735中的數值與開關715及910作映射,藉以控制哪個開關要被開啟或關閉。此外,本發明概念實施例可在任何所需配置中支援編碼及解碼機制。例如,圖3至4的編碼機制315可包括如圖7、9及11中那些編碼器以及如圖7、9及11中那些解碼器。
此外,圖7示出了僅兩個編碼器705及710,而圖9及11則各自示出了三個編碼器705、710及905。類似地,圖8示出了兩個解碼器805及825,而圖10則示出了三個解碼805、825及1005。本發明概念的實施例實可在任何配置中支援任何數量的代碼器。本發明概念實施例所需的代碼器最小數量為包含兩個代碼器(如編碼器705及710或者解碼器805及815),其中一個代碼器(如編碼器705或解碼器805)為始終啟動,且另一個代碼器(如編碼器710或解碼器815)可用以輔助第一代碼器。
如前文所述,圖7、9及11的編碼器705、710及905,以及圖8及10的解碼器805、815及1005可以共享硬體實現。舉例而言,圖7、9及11的編碼器705、710及905可以能產生所有可能ECC位元的單一編碼器來實現,而後圖7、9及11的開關715及910可選擇要從圖7、9及11的編碼機制315輸出哪些ECC位元,其包括僅僅該些錯誤偵測位元、一些錯誤更正位元及/或所有錯誤更正位元(或者,在支援所述強弱錯誤偵測/更正的本發明概念實施例中,則包括僅僅該些弱錯誤偵測/更正、一些強錯誤偵測/ 更正位元,或所有強錯誤偵測/更正位元)。
圖5B及6B的增補數量的位元510實際上可包括兩個以上的位元組合。例如,假設圖5B及6B中並不需要元資料位元。而圖5B的增補數量的位元510為三,且圖6B的增補數量的位元510為四。又,圖7、9及11的編碼機制315中可能未存在有可支援四個代碼位元之生成的第二代碼器(second coder)。在本發明概念的此一實施例中,圖7、9及11的編碼器710可用以產生圖7、9及11的代碼730,以增加錯誤更正功能的兩個位元,且圖9及11的編碼器905可用以產生圖9及11的代碼910,以增加錯誤更正功能的兩個位元。
在僅存在有一個次級代碼器(其可為編碼器或是解碼器)的情況下,可能單一種圖5B及6B的增補數量的位元510已然足夠。又,在存在有多個次級代碼器(或者,替代使用或結合運用次級代碼器、三級代碼器(tertiary coder)等)的情況下,另有替代方法來管理何時啟動這些不同的代碼器。在本發明概念一些實施例中,可能存在有多種圖5B及6B的增補數量的位元510,來分別管理屬於不同次級代碼器的不同數量的位元。例如,對圖11的編碼機制315而言,編碼器710可作為第二代碼730而用來提供兩個額外代碼位元,編碼器905可作為第三代碼915而用來提供第三個額外代碼位元。要表現這一點,圖5B及6B的增補數量的位元510可實際包括有兩種增補數量的位元。之後,如果系統需要三個元資料的位元,則上述兩者的值皆可設成零,以代表增補錯誤更 正代碼並無可用的位元。但如果系統僅需要一個元資料的位元,增補數量的位元其中之一可設成二。而且,如果系統不需要元資料的位元,增補數量的位元其中之一可設成二,而另一個增補數量的位元可設成一。由上述資訊可知,圖11的模式暫存器735可經設定以配合可用的增補數量的位元來適當啟動圖11的編碼器710及905。
在本發明概念的其他實施例中,圖5B及6B的增補數量的位元510可以單一值來代表所有未用於元資料的額外位元(由圖5A至6B中基礎數量的位元505表示的位元之外的位元)。之後,可適當啟動代碼器以使用所有可用的位元。在本發明概念的此一實施例中,取決於元資料所需位元多寡,圖5B及6B的增補數量的位元510可設成零、二或三(或其他值,端視圖5B及6B的基礎數量的位元505及圖5B及6B的增補數量的位元505的值而定)。之後,藉由將此值與圖11的編碼器710及905產生的已知數量的位元比較,圖11的模式暫存器735可經設定以啟動圖11的編碼器710及905。例如,若圖5B及6B的增補數量的位元510為零,則圖11的模式暫存器735可經設定以不啟動圖11的編碼器710及905。若圖5B及6B的增補數量的位元510為二,則圖11的模式暫存器735可經設定以啟動圖11的編碼器710而不啟動圖11的編碼器905(緣於圖11的編碼器710會在代碼730中產生足夠位元來使用全部可用的增補位元)。而且,若圖5B及6B的增補數量的位元510為三,則圖11的模式暫存器735可經設定以啟動 圖11的編碼器710及905兩者,藉以在代碼730及915中產生全部三個額外位元。圖3至4的編碼機制315通常是硬體來實現,所以可事先得知作為圖7、9及11中代碼730及915一部份而產生的位元數量,從而能夠輕鬆判斷支援最大可能錯誤偵測/更正時需要多少次級代碼器。
在代碼器為串接(如圖11所示)的本發明概念實施例中,代碼器需按特定順序由圖11的模式暫存器735(基於圖5B及6B的增補數量的位元510)來啟動。因此,舉例而言,若圖11的編碼器710及905分別要(在圖11的代碼730及915中)產生兩個代碼位元,但圖5B及6B的增補數量的位元510為三,則圖11的編碼器905不應被啟動(因為會產生比能被用到的位元更多的位元)。然,在代碼器為替代用(如圖9的編碼機制315)的本發明概念實施例中,可選擇並啟動此些代碼器來最大化圖5B及6B的可用的增補數量的位元510。例如,假設圖5B及6B的增補數量的位元510為三,則圖9的代碼730(由圖9的編碼器710產生)會包括兩個額外位元,而圖9的代碼915(由圖9的編碼器905產生)會包括三個額外位元。為了最大化系統的錯誤偵測/更正,圖9的模式暫存器735應經設定以啟動圖9的編碼器905而不啟動圖9的編碼器710。以這種方式,便可產生三個額外錯誤偵測/更正位元而不僅止於(以編碼器710產生的)兩個位元。
如前文所述,不同的主機及記憶體模組製造商對元資料有不同需求。本發明概念的實施例能以圖1的記憶體控制器125 及圖1的記體模組115兩者來支援用於ECC與元資料的可變位元數量。作為其結果,圖1的記憶體控制器125及圖1的記體模組115皆可以支援可變ECC與元資料的對應組件來支援記憶體事務。亦即,本發明概念支持圖3的記憶體模組115的實施例可與圖1的記憶體控制器125進行通信(無論兩者具體元資料需求為何),在考量圖1中記憶體控制器125的元資料需求下提供可用的最佳ECC。而且,支持圖4的記憶體控制器125的本發明概念實施例可與圖1的記憶體模組115進行通信並最大化兩者的原生ECC功能(當然,若機器同時包括圖3的記憶模組115及圖4的記憶體控制器125,則可使用兩者個別所能支援的最佳ECC)。換一種方式來說,例如,在使用NVDIMM記憶體的本發明概念實施例中,NVDIMM記憶體可基於主機所需元資料的位元數量來改變ECC支援的級別。另舉一例而言,在使用DDR5記憶體的本發明概念其他實施例中,圖1的記憶體控制器125可基於DDR5記憶體是否要將ECC功能維持在目前水準或將ECC成本維持在目前水準,藉此來改變ECC支援的級別。
一般來說,用於ECC與元資料的位元數量會在圖1的機器105上電時即判定,且不會在運行期間改變(緣於運行期間的改變將會影響資料被接收時如何被解讀)。然而,本發明概念的一些實施例可支援在運行期間對用於ECC與元資料的位元數量作出的改變。
一旦用於ECC與元資料的位元數量判定後,即可對圖7 至11的模式暫存器735進行設定。例如,若圖6B的增補數量的位元510為零,則圖7至11的模式暫存器735可經設定以開啟圖7至11的開關715及910。如果圖6B的增補數量的位元510不是零,則圖7至11的模式暫存器735可經設定以適當關閉圖7至11的開關715及910,從而適當啟動圖7至11中代碼器710及905來輔助記憶體事務的錯誤更正功能。
圖12A及12B示出根據本發明概念實施例的編碼用於記憶體事務的資料之實例程序的流程圖。圖12A中,於區塊1205處,圖7、9及11的編碼機制315可接收用於記憶體事務的資料。於區塊1210處,圖7、9及11的編碼機制315可判斷可用於錯誤偵測及更正的圖5A及6B的基礎數量的位元505以及圖5B及6B的增補數量的位元510。於區塊1215處,圖7、9及11的第一編碼器705可使用圖5A至6B的基礎數量的位元505來進行第一編碼。
於區塊1220(圖12B)處,圖7、9及11的編碼機制315可判斷是否有任何增補位元可供編碼(或是否所有剩餘的位元皆已用於元資料)。若未有任何增補位元可供編碼,則於區塊1225處可(藉由圖3的記憶體模組115或圖4的記憶體控制器125)使用圖7、9及11的資料及第一代碼725來進行記憶體事務。否則,於區塊1230處將選擇次級編碼器以使用增補數量的位元。區塊1230是非必須的,如虛線1235所示。例如,當使用圖7及11的編碼機制315時,在圖7及11的編碼機制315的任一「級」可能僅有一個編碼器可供選擇。然而,當使用圖9的編碼機制315時, 在圖9的編碼機制315的任一「級」可能會有任何數量的編碼器可供選擇。此時,可能需要從中選擇一種編碼器。該編碼器可根據以下所述任何標準來選擇,例如,其中使用最多可用位元於編碼者,或提供特定種類編碼者。
一旦選定了編碼器,於區塊1240處,可使用所選的編碼器來進行次級編碼。於區塊1245處,圖7、9及11的編碼機制315可判斷是否有剩餘的增補位元可供編碼。若有,則可於區塊1250處進行額外編碼(實質上重複區塊1230及1240)。否則,控制權可傳遞至區塊1225以使用記憶體事務中的資料及代碼。
圖13A及13B示出根據本發明概念實施例的使用圖8及10的編碼機制來解碼用於記憶體事務的資料之實例程序的流程圖。圖13A中,於區塊1305處,圖8及10的編碼機制315可接收用於記憶體事務的資料。於區塊1310處,圖8及10的編碼機制315可接收記憶體事務中用於資料的代碼。需要注意的是,區塊1305及1310可以單一動作來進行而非要以如區塊1305及1310建議的個別動作來進行。於區塊1315處,圖8及10的編碼機制315可判斷可用於錯誤偵測及更正的圖5A至6B的基礎數量的位元505以及圖5B及6B的增補數量的位元510。於區塊1320處,圖8及10的第一解碼器805可使用圖5A至6B的基礎數量的位元505來進行第一解碼。
於區塊1325(圖13B)處,圖8及10的編碼機制315可判斷是否有任何增補位元可供解碼(或者所有剩餘的位元皆已用 於元資料)。若未有任何增補位元可供解碼,則於區塊1330處可(藉由圖3的記憶體模組115或圖4的記憶體控制器125)使用圖8及10的資料及第一結果810來進行記憶體事務。否則,於區塊1335處將選擇次級解碼器以使用增補數量的位元。區塊1335是非必須的,如虛線1340所示。例如,雖然圖8及10的編碼機制315示出在圖8及10的編碼機制315的任一「級」僅有單一個解碼器可供選擇,然而其他實施方式於圖8及10的編碼機制315的任一「級」可能提供有多個解碼器。因此,可能需要從中選擇一種解碼器。該解碼器可根據以下所述任何標準來選擇:例如,其中使用最多可用位元於解碼者,或提供特定種類解碼者。
一旦選定了解碼器,於區塊1345處,即可使用所選的解碼器來進行次級解碼。於區塊1350處,圖8及10的編碼機制315可判斷是否有剩餘的增補數量的位元可供解碼。若有,則可於區塊1355處進行額外解碼(實質上重複區塊1335及1345)。否則,控制權可傳遞至區塊1330來使用記憶體事務中的資料及結果。
圖14示出區塊1320、1345及1355中使用代碼以支援錯誤檢測及更正之實例程序的流程圖。圖14中,於區塊1405處圖7、9及11的代碼725可用以進行錯誤偵測,且於區塊1410處圖7、9及11的代碼725、730及915可用以進行錯誤偵測及更正。或者,於區塊1415處,圖7、9及11的代碼725可用以進行弱編碼(錯誤偵測或錯誤更正),且於區塊1420處圖7、9及11的代碼725、730及915可用以進行強編碼(同樣地,錯誤偵測或錯誤更正)。
圖12A至14中,展示了本發明概念的一些實施例。然而,所屬領域中具通常知識者將認識到,藉由改變區塊的次序、藉由省略區塊或藉由包含圖式中未展示的鏈路,本發明概念亦可能有其他實施例。流程圖的所有此等變化被視為本發明概念的實施例,無論是否明確地描述。
以下論述意欲提供對合適機器或可實施本發明概念的某些態樣的機器的簡要的大體描述。該機器或該些機器可至少部分地以鍵盤、滑鼠等習知的輸入裝置,以及從另一機器接收到的指示、與虛擬實境(virtual reality;VR)環境的互動、生物測定回饋或輸入訊號來控制。如本文中所用,術語「機器」意欲廣泛地涵蓋單一機器、虛擬機器,或者具有通信耦接且共同操作之機器、虛擬機器或裝置的系統。例示性機器包括計算裝置,諸如個人電腦、工作站、伺服器、可攜式電腦、手持裝置、電話、平板電腦等,以及運輸裝置,諸如私人或大眾運輸中的汽車、火車、計程車等。
該機器或該些機器可包括內嵌式控制器,諸如可程式化或非可程式化邏輯裝置或陣列、特殊應用積體電路(Application Specific Integrated Circuit;ASIC)、嵌入式電腦、智慧卡以及類似物。該機器或該些機器可利用至一或多個遠端機器的一或多個連接,諸如經由網路介面、數據機或其他通信耦接。該些機器可藉由以實體及/或邏輯網路方式(諸如內部網路、網際網路、區域網路、廣域網路等)來相互連接。所屬領域中具通常知識者將瞭解, 網路通信可利用各種有線及/或無線的短程或長程載波及協定,包括射頻(radio frequency;RF)、衛星、微波、電機電子工程師學會(Institute of Electrical and Electronics Engineers;IEEE)802.11、藍芽、光學、紅外線、纜線、雷射等。
本發明概念的實施例可藉由參考或結合相關聯資料來描述,所述資料包含功能、程序、資料結構、應用程式等,其在由機器存取時使得機器執行任務或定義抽象的資料類型或低階硬體上下文(context)。相關聯資料可儲存於例如揮發性及/或非揮發性記憶體,例如RAM、ROM等中,或儲存於其他儲存裝置及其相關聯儲存媒體中,包含硬碟機、軟碟、光學儲存器、磁帶、快閃記憶體、記憶棒、數位視訊磁碟、生物儲存器等。相關聯資料可以封包、串列資料、並列資料、經傳播信號等的形式經由傳輸環境,包含實體及/或邏輯網路傳遞,且可以壓縮或加密格式使用。相關聯資料可用於分散式環境中,且儲存於本端及/或遠端以供機器存取。
本發明概念的實施例可包含有形的非暫時性機器可讀媒體,其包括可由一或多個處理器執行的指令,所述指令包括用以執行如本文中所描述的本發明概念的要素的指令。
已參考所說明的實施例描述及說明本發明概念的原理,將認識到,所說明的實施例可修改配置及細節而不會脫離此類原理,且可以任何所要方式組合。又,儘管前述論述已集中於特定實施例,但涵蓋其他組態。特定而言,儘管本文中使用諸如「根 據本發明概念實施例」或類似者的表達,但此等片語通常意欲大體上參考實施例可能性,且並不意欲將本發明概念限制於特定實施例組態。如本文中所使用,此等術語可參考組合至其他實施例中的相同或不同實施例。
前述說明性實施例並不應被解釋為限制其發明概念。儘管已描述了幾個實施例,但所屬領域中具通常知識者將易於瞭解,在不實質上脫離本揭露內容的新穎教示及優點的情況下,對彼等實施例的許多修改是可能的。因此,所有此等修改皆意欲包含於如在申請專利範圍中定義的本發明概念的範疇內。
本發明概念的實施例可非限制性地延伸至以下敍述:
敍述1. 本發明概念的實施例包括一種以硬體實現的編碼機制,其包括:第一編碼器,針對資料產生第一代碼,所述第一代碼包括基礎數量的位元;第二編碼器,針對所述資料產生第二代碼,所述第二代碼包括增補數量的位元;儲存器,用於模式暫存器;以及開關,回應所述模式暫存器而控制是否要使用所述第二編碼器,其中所述第一編碼器始終用以產生所述第一代碼,而所述第二編碼器可選擇性地用以產生所述第二代碼,以及其中所述第二代碼與所述第一代碼並用提供比單用所述第一 代碼時更強的編碼。
敍述2. 本發明概念的實施例包括根據敍述1的編碼機制,其中所述編碼機制體現於記憶體模組中。
敍述3. 本發明概念的實施例包括根據敍述2的編碼機制,其中所述記憶體模組包括非揮發性雙行記憶體模組(NVDIMM)。
敍述4. 本發明概念的實施例包括根據敍述3的編碼機制,其中所述編碼機制使用NVDIMM-P協定進行通信。
敍述5. 本發明概念的實施例包括根據敍述1的編碼機制,其中所述編碼機制體現於記憶體控制器中。
敍述6. 本發明概念的實施例包括根據敍述1的編碼機制,其中:所述編碼機制更包括第三編碼器,其使用所述增補數量的位元針對所述資料產生第三代碼;以及所述開關用以回應所述模式暫存器而選擇要使用所述第二編碼器、使用所述第三編碼器,或者既不使用所述第二編碼器也不使用所述第三編碼器。
敍述7. 本發明概念的實施例包括根據敍述1的編碼機制,其中:所述編碼機制更包括第三編碼器,其使用第二增補數量的位元針對所述資料產生第三代碼;以及所述開關用以回應所述模式暫存器而選擇要使用所述第二編碼器、使用所述第二編碼器及所述第三編碼器兩者,或者既不使 用所述第二編碼器也不使用所述第三編碼器。
敍述8. 本發明概念的實施例包括根據敍述1的編碼機制,其中所述模式暫存器用以儲存代表著所述開關是否要使用所述第二編碼器的數值。
敍述9. 本發明概念的實施例包括根據敍述8的編碼機制,其中所述模式暫存器用以回應所述增補數量的位元是否大於零而儲存代表著所述開關是否要使用所述第二編碼器的所述數值。
敍述10. 本發明概念的實施例包括根據敍述1的編碼機制,其中所述第一編碼器與所述第二編碼器共享部份的硬體實現。
敍述11. 本發明概念的實施例包括一種以硬體實現的編碼機制,其包括:第一解碼器,針對資料及第一代碼產生第一結果,所述第一代碼包括基礎數量的位元;第二解碼器,針對所述資料及至少一第二代碼產生第二結果,所述第二代碼包括增補數量的位元;儲存器,用於模式暫存器;以及開關,回應所述模式暫存器而控制是否要使用所述第二解碼器,其中所述第一解碼器始終用以產生所述第一結果,而所述第二解碼器可選擇性地用以產生所述第二結果,以及其中所述第二結果與所述第一結果並用提供比單用所述第一結果時更強的解碼。
敍述12. 本發明概念的實施例包括根據敍述11的編碼機制,其中所述第二解碼器用以回應所述資料、所述第一代碼以及所述第二代碼而產生所述第二結果。
敍述13. 本發明概念的實施例包括根據敍述11的編碼機制,其中所述編碼機制體現於記憶體模組中。
敍述14. 本發明概念的實施例包括根據敍述13的編碼機制,其中所述記憶體模組包括非揮發性雙行記憶體模組(NVDIMM)。
敍述15. 本發明概念的實施例包括根據敍述14的編碼機制,其中所述編碼機制使用NVDIMM-P協定進行通信。
敍述16. 本發明概念的實施例包括根據敍述11的編碼機制,其中所述編碼機制體現於記憶體控制器中。
敍述17. 本發明概念的實施例包括根據敍述11的編碼機制,其中:所述編碼機制更包括第三解碼器,其使用所述增補數量的位元針對所述資料及至少一第三代碼產生第三結果;以及所述開關用以回應所述模式暫存器而選擇要使用所述第二解碼器、使用所述第三解碼器,或者既不使用所述第二解碼器也不使用所述第三解碼器。
敍述18. 本發明概念的實施例包括根據敍述11的編碼機制,其中:所述編碼機制更包括第三解碼器,其使用第二增補數量的位元針對所述資料及至少一第三代碼產生第三結果;以及 所述開關用以回應所述模式暫存器而選擇要使用所述第二解碼器、使用所述第二解碼器及所述第三解碼器兩者,或者既不使用所述第二解碼器也不使用所述第三解碼器。
敍述19. 本發明概念的實施例包括根據敍述11的編碼機制,其中所述模式暫存器用以儲存代表著所述開關是否要使用所述第二解碼器的數值。
敍述20. 本發明概念的實施例包括根據敍述11的編碼機制,其中所述模式暫存器用以回應所述增補數量的位元是否大於零而儲存代表著所述開關是否要使用所述第二解碼器的所述數值。
敍述21. 本發明概念的實施例包括根據敍述11的編碼機制,其中所述第一解碼器與所述第二解碼器共享部份的硬體實現。
敍述22. 本發明概念的實施例包括一種方法,其包括:接收用於記憶體事務的資料;於所述記憶體事務期間,判斷可用於錯誤管理的位元數量,其中所述可用於錯誤管理的位元數量包括基礎數量的位元以及增補數量的位元;基於所述基礎數量的位元對所述資料進行第一錯誤管理編碼;以及基於所述增補數量的位元對所述資料進行第二錯誤管理編碼。
敍述23. 本發明概念的實施例包括根據敍述22的方法,其中:基於所述基礎數量的位元對所述資料進行所述第一錯誤管理 編碼的步驟包括基於所述基礎數量的位元對所述資料進行第一編碼;以及基於所述增補數量的位元對所述資料進行所述第二錯誤管理編碼的步驟包括基於所述增補數量的位元對所述資料進行第二編碼。
敍述24. 本發明概念的實施例包括根據敍述23的方法,其中:基於所述基礎數量的位元對所述資料進行所述第一編碼的步驟包括產生第一代碼;以及基於所述增補數量的位元對所述資料進行所述第二編碼的步驟包括產生第二代碼。
敍述25. 本發明概念的實施例包括根據敍述24的方法,其中所述第二代碼與所述第一代碼並用提供比單用所述第一代碼時更強的錯誤管理編碼。
敍述26. 本發明概念的實施例包括根據敍述22的方法,其中:基於所述基礎數量的位元對所述資料進行所述第一錯誤管理編碼的步驟包括基於所述基礎數量的位元對所述資料進行第一解碼;以及基於所述增補數量的位元對所述資料進行所述第二錯誤管理編碼的步驟包括基於所述增補數量的位元對所述資料進行第二解碼。
敍述27. 本發明概念的實施例包括根據敍述26的方法,其中:基於所述基礎數量的位元對所述資料進行所述第一解碼的步 驟包括產生第一結果;以及基於所述增補數量的位元對所述資料進行所述第二解碼的步驟包括產生第二結果。
敍述28. 本發明概念的實施例包括根據敍述26的方法,其中:基於所述基礎數量的位元對所述資料進行所述第一解碼的步驟包括基於所述基礎數量的位元,回應所述資料及第一代碼而進行所述第一解碼;以及基於所述增補數量的位元對所述資料進行所述第二解碼的步驟包括回應所述資料及至少一第二代碼而進行所述第二解碼。
敍述29. 本發明概念的實施例包括根據敍述28的方法,其中回應所述資料及所述至少一第二代碼而進行所述第二解碼的步驟包括回應所述資料、所述第一代碼以及所述第二代碼而進行第二解碼。
敍述30. 本發明概念的實施例包括根據敍述28的方法,其中接收用於所述記憶體事務的所述資料的步驟包括接收所述第一代碼及所述至少一第二代碼。
敍述31. 本發明概念的實施例包括根據敍述22的方法,其中所述方法是由雙行記憶體模組(DIMM)及記憶控制器其中之一來執行。
敍述32. 本發明概念的實施例包括根據敍述31的方法,其中所述DIMM包括非揮發性雙行記憶體模組(NVDIMM)。
敍述33. 本發明概念的實施例包括根據敍述22的方法,其中 基於所述增補數量的位元對所述資料進行所述第二錯誤管理編碼的步驟包括僅在所述增補數量的位元大於零時,才基於所述增補數量的位元對所述資料進行所述第二錯誤管理編碼。
敍述34. 本發明概念的實施例包括根據敍述22的方法,其中:基於所述基礎數量的位元對所述資料進行所述第一錯誤管理編碼的步驟包括支援所述資料中的錯誤偵測;以及基於所述增補數量的位元對所述資料進行所述第二錯誤管理編碼的步驟包括支援所述資料中的錯誤更正;以及
敍述35. 本發明概念的實施例包括根據敍述22的方法,其中:基於所述基礎數量的位元對所述資料進行所述第一錯誤管理編碼的步驟包括支援所述資料中的弱錯誤偵測;以及基於所述增補數量的位元對所述資料進行所述第二錯誤管理編碼的步驟包括支援所述資料中的強錯誤偵測。
敍述36. 本發明概念的實施例包括根據敍述22的方法,其中:基於所述基礎數量的位元對所述資料進行所述第一錯誤管理編碼的步驟包括支援所述資料中的弱錯誤更正;以及基於所述增補數量的位元對所述資料進行所述第二錯誤管理編碼的步驟包括支援所述資料中的強錯誤更正。
敍述37. 本發明概念的實施例包括根據敍述22的方法,其中基於所述增補數量的位元對所述資料進行所述第二錯誤管理編碼的步驟包括基於至少來自所述第二錯誤管理編碼以及第三錯誤管理編碼的所述增補數量的位元,對所述資料進行所述第二錯誤管 理編碼。
敍述38. 本發明概念的實施例包括根據敍述37的方法,其中基於至少來自所述第二錯誤管理編碼以及所述第三錯誤管理編碼的所述增補數量的位元對所述資料進行所述第二錯誤管理編碼的步驟包括基於第二增補數量的位元對所述資料進行所述第三錯誤管理編碼。
敍述39. 本發明概念的實施例包括根據敍述38的方法,其中基於所述第二增補數量的位元對所述資料進行所述第三錯誤管理編碼的步驟包括基於所述增補數量的位元對所述資料進行所述第三錯誤管理編碼。
敍述40. 本發明概念的實施例包括一種物品,其包括非暫態儲存媒體,所述非暫態儲存媒體上儲存有指令,其經由機器執行後,可進行以下步驟:接收用於記憶體事務的資料;於所述記憶體事務期間,判斷可用於錯誤管理的位元數量,其中所述可用於錯誤管理的位元數量包括基礎數量的位元以及增補數量的位元;基於所述基礎數量的位元對所述資料進行第一錯誤管理編碼;以及基於所述增補數量的位元對所述資料進行第二錯誤管理編碼。
敍述41. 本發明概念的實施例包括根據敍述40的物品,其中: 基於所述基礎數量的位元對所述資料進行所述第一錯誤管理編碼的步驟包括基於所述基礎數量的位元對所述資料進行第一編碼;以及基於所述增補數量的位元對所述資料進行所述第二錯誤管理編碼的步驟包括基於所述增補數量的位元對所述資料進行第二編碼。
敍述42. 本發明概念的實施例包括根據敍述41的物品,其中:基於所述基礎數量的位元對所述資料進行所述第一編碼的步驟包括產生第一代碼;以及基於所述增補數量的位元對所述資料進行所述第二編碼的步驟包括產生第二代碼。
敍述43. 本發明概念的實施例包括根據敍述42的物品,其中所述第二代碼與所述第一代碼並用提供比單用所述第一代碼時更強的錯誤管理編碼。
敍述44. 本發明概念的實施例包括根據敍述40的物品,其中:基於所述基礎數量的位元對所述資料進行所述第一錯誤管理編碼的步驟包括基於所述基礎數量的位元對所述資料進行第一解碼;以及基於所述增補數量的位元對所述資料進行所述第二錯誤管理編碼的步驟包括基於所述增補數量的位元對所述資料進行第二解碼。
敍述45. 本發明概念的實施例包括根據敍述44的物品,其中: 基於所述基礎數量的位元對所述資料進行所述第一解碼的步驟包括產生第一結果;以及基於所述增補數量的位元對所述資料進行所述第二解碼的步驟包括產生第二結果。
敍述46. 本發明概念的實施例包括根據敍述44的物品,其中:基於所述基礎數量的位元對所述資料進行所述第一解碼的步驟包括基於所述基礎數量的位元,回應所述資料及第一代碼而進行所述第一解碼;以及基於所述增補數量的位元對所述資料進行所述第二解碼的步驟包括回應所述資料及至少一第二代碼而進行所述第二解碼。
敍述47. 本發明概念的實施例包括根據敍述46的物品,其中回應所述資料及所述至少一第二代碼而進行所述第二解碼的步驟包括回應所述資料、所述第一代碼以及所述第二代碼而進行第二解碼。
敍述48. 本發明概念的實施例包括根據敍述46的物品,其中接收用於所述記憶體事務的所述資料的步驟包括接收所述第一代碼及所述至少一第二代碼。
敍述49. 本發明概念的實施例包括根據敍述40的物品,其中所述方法是由雙行記憶體模組(DIMM)及記憶控制器其中之一來執行。
敍述50. 本發明概念的實施例包括根據敍述49的物品,其中所述DIMM包括非揮發性雙行記憶體模組(NVDIMM)。
敍述51. 本發明概念的實施例包括根據敍述40的物品,其中基於所述增補數量的位元對所述資料進行所述第二錯誤管理編碼的步驟包括僅在所述增補數量的位元大於零時,才基於所述增補數量的位元對所述資料進行所述第二錯誤管理編碼。
敍述52. 本發明概念的實施例包括根據敍述40的物品,其中:基於所述基礎數量的位元對所述資料進行所述第一錯誤管理編碼的步驟包括支援所述資料中的錯誤偵測;以及基於所述增補數量的位元對所述資料進行所述第二錯誤管理編碼的步驟包括支援所述資料中的錯誤更正;以及
敍述53. 本發明概念的實施例包括根據敍述40的物品,其中:基於所述基礎數量的位元對所述資料進行所述第一錯誤管理編碼的步驟包括支援所述資料中的弱錯誤偵測;以及基於所述增補數量的位元對所述資料進行所述第二錯誤管理編碼的步驟包括支援所述資料中的強錯誤偵測。
敍述54. 本發明概念的實施例包括根據敍述40的物品,其中:基於所述基礎數量的位元對所述資料進行所述第一錯誤管理編碼的步驟包括支援所述資料中的弱錯誤更正;以及基於所述增補數量的位元對所述資料進行所述第二錯誤管理編碼的步驟包括支援所述資料中的強錯誤更正。
敍述55. 本發明概念的實施例包括根據敍述40的物品,其中基於所述增補數量的位元對所述資料進行所述第二錯誤管理編碼的步驟包括基於至少來自所述第二錯誤管理編碼以及第三錯誤管 理編碼的所述增補數量的位元,對所述資料進行所述第二錯誤管理編碼。
敍述56. 本發明概念的實施例包括根據敍述55的物品,其中基於至少來自所述第二錯誤管理編碼以及所述第三錯誤管理編碼的所述增補數量的位元對所述資料進行所述第二錯誤管理編碼的步驟包括基於第二增補數量的位元對所述資料進行所述第三錯誤管理編碼。
敍述57. 本發明概念的實施例包括根據敍述56的物品,其中基於所述第二增補數量的位元對所述資料進行所述第三錯誤管理編碼的步驟包括基於所述增補數量的位元對所述資料進行所述第三錯誤管理編碼。
因此,考慮到本文中所描述的實施例的廣泛多種改變,此詳細描述及隨附材料僅意欲是說明性的,而不應被視為限制本發明概念的範疇。所主張的本發明概念因此是可在以下申請專利範圍及其等效物的範疇及精神內的所有此等修改。
315:編碼機制
705:第一編碼器
710:第二編碼器
715:開關
720:儲存器
725:第一代碼
730:第二代碼
735:模式暫存器

Claims (20)

  1. 一種以硬體實現的編碼系統,包括:第一編碼器,僅針對儲存在記憶體模組中的資料產生第一代碼,所述第一代碼包括基礎數量的位元;第二編碼器,僅針對儲存在所述記憶體模組中的所述資料產生第二代碼,所述第二代碼包括增補數量的位元,其中所述第一編碼器及所述第二編碼器為同一通道的不同編碼器;儲存器,用於模式暫存器;以及開關,回應所述模式暫存器而控制是否要使用所述第二編碼器,其中所述第一編碼器始終用以產生所述第一代碼,而所述第二編碼器可選擇性地用以產生所述第二代碼,以及其中所述第二代碼與所述第一代碼並用提供比單用所述第一代碼時更強的編碼。
  2. 如申請專利範圍第1項所述的編碼系統,其中所述模式暫存器用以儲存代表著所述開關是否要使用所述第二編碼器的數值,並且所述第一編碼器及所述第二編碼器個別對同一通道的所有的所述資料進行運作。
  3. 如申請專利範圍第2項所述的編碼系統,其中所述模式暫存器用以回應所述增補數量的位元是否大於零而儲存代表著所述開關是否要使用所述第二編碼器的所述數值。
  4. 如申請專利範圍第1項所述的編碼系統,其中所述第一編碼器與所述第二編碼器共享部份的硬體實現。
  5. 一種在記憶體模組中以硬體實現的編碼系統,包括:第一解碼器,僅針對資料及第一代碼產生第一結果,所述第一代碼包括基礎數量的位元;第二解碼器,僅針對所述資料及至少一第二代碼產生第二結果,所述第二代碼包括增補數量的位元;儲存器,用於模式暫存器;以及開關,回應所述模式暫存器而控制是否要使用所述第二解碼器,其中所述第一解碼器始終用以產生所述第一結果,而所述第二解碼器可選擇性地用以產生所述第二結果,以及其中所述第二結果與所述第一結果並用提供比單用所述第一結果時更強的解碼。
  6. 如申請專利範圍第5項所述的編碼系統,其中所述第二解碼器用以回應所述資料、所述第一代碼以及所述第二代碼而產生所述第二結果;以及所述第一編碼器及所述第二編碼器個別對所有的所述資料進行運作。
  7. 如申請專利範圍第5項所述的編碼系統,其中所述模式暫存器用以儲存代表著所述開關是否要使用所述第二解碼器的數值。
  8. 如申請專利範圍第7項所述的編碼系統,其中所述模式暫存器用以回應所述增補數量的位元是否大於零而儲存代表著所述開關是否要使用所述第二解碼器的所述數值。
  9. 如申請專利範圍第5項所述的編碼系統,其中所述第一解碼器與所述第二解碼器共享部份的硬體實現。
  10. 一種編碼方法,包括:接收用於記憶體事務的資料;於所述記憶體事務期間,判斷可用於錯誤管理的位元數量,其中所述可用於錯誤管理的位元數量包括基礎數量的位元以及增補數量的位元;基於所述基礎數量的位元對所述資料進行第一錯誤管理編碼;以及基於所述增補數量的位元對所述資料進行第二錯誤管理編碼,其中所述第一錯誤管理編碼及所述第二錯誤管理編碼執行於同一通道。
  11. 如申請專利範圍第10項所述的方法,其中:基於所述基礎數量的位元對所述資料進行所述第一錯誤管理編碼的步驟包括基於所述基礎數量的位元對所述資料進行第一編碼;以及基於所述增補數量的位元對所述資料進行所述第二錯誤管理編碼的步驟包括基於所述增補數量的位元對所述資料進行第二編碼。
  12. 如申請專利範圍第11項所述的方法,其中:基於所述基礎數量的位元對所述資料進行所述第一編碼的步驟包括產生第一代碼;以及基於所述增補數量的位元對所述資料進行所述第二編碼的步驟包括產生第二代碼。
  13. 如申請專利範圍第12項所述的方法,其中所述第二代碼與所述第一代碼並用提供比單用所述第一代碼時更強的錯誤管理編碼。
  14. 如申請專利範圍第10項所述的方法,其中:基於所述基礎數量的位元對所述資料進行所述第一錯誤管理編碼的步驟包括基於所述基礎數量的位元對所述資料進行第一解碼;以及基於所述增補數量的位元對所述資料進行所述第二錯誤管理編碼的步驟包括基於所述增補數量的位元對所述資料進行第二解碼。
  15. 如申請專利範圍第14項所述的方法,其中:基於所述基礎數量的位元對所述資料進行所述第一解碼的步驟包括基於所述基礎數量的位元,回應所述資料及第一代碼而進行所述第一解碼;以及基於所述增補數量的位元對所述資料進行所述第二解碼的步驟包括回應所述資料及至少一第二代碼而進行所述第二解碼。
  16. 如申請專利範圍第15項所述的方法,其中回應所述資料及所述至少一第二代碼而進行所述第二解碼的步驟包括回應所述資料、所述第一代碼以及所述第二代碼而進行第二解碼。
  17. 如申請專利範圍第10項所述的方法,其中基於所述增補數量的位元對所述資料進行所述第二錯誤管理編碼的步驟包括僅在所述增補數量的位元大於零時,才基於所述增補數量的位元對所述資料進行所述第二錯誤管理編碼。
  18. 如申請專利範圍第10項所述的方法,其中:基於所述基礎數量的位元對所述資料進行所述第一錯誤管理編碼的步驟包括支援所述資料中的錯誤偵測;以及基於所述增補數量的位元對所述資料進行所述第二錯誤管理編碼的步驟包括支援所述資料中的錯誤更正。
  19. 如申請專利範圍第10項所述的方法,其中基於所述增補數量的位元對所述資料進行所述第二錯誤管理編碼的步驟包括基於至少來自所述第二錯誤管理編碼以及第三錯誤管理編碼的所述增補數量的位元,對所述資料進行所述第二錯誤管理編碼。
  20. 如申請專利範圍第19項所述的方法,其中基於至少來自所述第二錯誤管理編碼以及所述第三錯誤管理編碼的所述增補數量的位元對所述資料進行所述第二錯誤管理編碼的步驟包括基於第二增補數量的位元對所述資料進行所述第三錯誤管理編碼。
TW107107123A 2017-05-08 2018-03-02 編碼機制及其編碼方法 TWI740009B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762503317P 2017-05-08 2017-05-08
US62/503,317 2017-05-08
US15/675,679 US10552256B2 (en) 2017-05-08 2017-08-11 Morphable ECC encoder/decoder for NVDIMM over DDR channel
US15/675,679 2017-08-11

Publications (2)

Publication Number Publication Date
TW201907299A TW201907299A (zh) 2019-02-16
TWI740009B true TWI740009B (zh) 2021-09-21

Family

ID=64014811

Family Applications (1)

Application Number Title Priority Date Filing Date
TW107107123A TWI740009B (zh) 2017-05-08 2018-03-02 編碼機制及其編碼方法

Country Status (5)

Country Link
US (1) US10552256B2 (zh)
JP (1) JP7231989B2 (zh)
KR (1) KR102421048B1 (zh)
CN (1) CN108874577B (zh)
TW (1) TWI740009B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080244356A1 (en) * 2007-04-02 2008-10-02 Broadcom Corporation SUPER BLOCK ERROR CORRECTION CODE (ECC) ADAPTABLE TO COMMUNICATION SYSTEMS INCLUDING HARD DISK DRIVES (HDDs) AND OTHER MEMORY STORAGE DEVICES
TW201405568A (zh) * 2012-07-17 2014-02-01 Silicon Motion Inc 讀取快閃記憶體中區塊之資料的方法及相關的記憶裝置
US20140105202A1 (en) * 2004-02-13 2014-04-17 Broadcom Corporation Encoding system and method for a transmitter in wireless communications
US9183085B1 (en) * 2012-05-22 2015-11-10 Pmc-Sierra, Inc. Systems and methods for adaptively selecting from among a plurality of error correction coding schemes in a flash drive for robustness and low latency

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2963093D1 (en) * 1978-11-06 1982-08-05 British Broadcasting Corp Cyclic redundancy data check encoding method and apparatus
CN1220387C (zh) * 2000-07-06 2005-09-21 三星电子株式会社 视频编解码器系统、数据处理方法、编解码控制方法
KR100811184B1 (ko) * 2005-10-21 2008-03-07 삼성전자주식회사 아우터 인코더 및 그 방법
US8055979B2 (en) * 2006-01-20 2011-11-08 Marvell World Trade Ltd. Flash memory with coding and signal processing
JP4925301B2 (ja) 2007-02-07 2012-04-25 株式会社メガチップス 半導体メモリシステム
KR101398200B1 (ko) * 2008-03-18 2014-05-26 삼성전자주식회사 메모리 장치 및 인코딩/디코딩 방법
US8429498B1 (en) * 2009-03-25 2013-04-23 Apple Inc. Dual ECC decoder
US8560918B1 (en) * 2009-04-21 2013-10-15 Marvell International Ltd. Method and apparatus for dynamically selecting an error correction code to be applied to data in a communication system
WO2011159805A2 (en) 2010-06-15 2011-12-22 Fusion-Io, Inc. Apparatus, system, and method for providing error correction
US9311969B2 (en) * 2011-07-22 2016-04-12 Sandisk Technologies Inc. Systems and methods of storing data
EP3382556A1 (en) 2011-09-30 2018-10-03 INTEL Corporation Memory channel that supports near memory and far memory access
US9294132B1 (en) * 2011-11-21 2016-03-22 Proton Digital Systems, Inc. Dual-stage data decoding for non-volatile memories
KR102068030B1 (ko) * 2012-12-11 2020-01-20 삼성전자 주식회사 메모리 컨트롤러 및 그 동작방법
US9344117B2 (en) * 2013-03-15 2016-05-17 Mellanox Technologies, Ltd. Methods and systems for error-correction decoding
US9201728B2 (en) * 2013-09-12 2015-12-01 Seagate Technology Llc Memory device with variable code rate
US9621188B2 (en) * 2014-03-17 2017-04-11 Samsung Electronics Co., Ltd. Soft and hard decision message-passing decoding
US10116336B2 (en) 2014-06-13 2018-10-30 Sandisk Technologies Llc Error correcting code adjustment for a data storage device
US9407294B2 (en) 2014-07-07 2016-08-02 Kabushi Kaisha Toshiba. Non-volatile memory controller with error correction (ECC) tuning via error statistics collection
JP6438763B2 (ja) 2014-12-25 2018-12-19 株式会社メガチップス エラー訂正装置
JP6294251B2 (ja) 2015-02-26 2018-03-14 ファナック株式会社 誤り訂正機能による寿命予測を有する制御装置
US9691505B2 (en) 2015-03-27 2017-06-27 Intel Corporation Dynamic application of error correction code (ECC) based on error type
US9692455B2 (en) * 2015-09-11 2017-06-27 Micron Technology, Inc. Multi channel memory with flexible code-length ECC
US20170288705A1 (en) * 2016-04-05 2017-10-05 Alibaba Group Holding Limited Shared memory with enhanced error correction

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140105202A1 (en) * 2004-02-13 2014-04-17 Broadcom Corporation Encoding system and method for a transmitter in wireless communications
US20080244356A1 (en) * 2007-04-02 2008-10-02 Broadcom Corporation SUPER BLOCK ERROR CORRECTION CODE (ECC) ADAPTABLE TO COMMUNICATION SYSTEMS INCLUDING HARD DISK DRIVES (HDDs) AND OTHER MEMORY STORAGE DEVICES
US9183085B1 (en) * 2012-05-22 2015-11-10 Pmc-Sierra, Inc. Systems and methods for adaptively selecting from among a plurality of error correction coding schemes in a flash drive for robustness and low latency
TW201405568A (zh) * 2012-07-17 2014-02-01 Silicon Motion Inc 讀取快閃記憶體中區塊之資料的方法及相關的記憶裝置

Also Published As

Publication number Publication date
JP2018190416A (ja) 2018-11-29
KR20180123426A (ko) 2018-11-16
JP7231989B2 (ja) 2023-03-02
CN108874577B (zh) 2023-11-03
CN108874577A (zh) 2018-11-23
US10552256B2 (en) 2020-02-04
US20180322007A1 (en) 2018-11-08
KR102421048B1 (ko) 2022-07-14
TW201907299A (zh) 2019-02-16

Similar Documents

Publication Publication Date Title
US10572164B2 (en) Systems and methods for improving efficiencies of a memory system
JP4917671B2 (ja) マスタ装置とスレーブ装置との間でのデータ伝送方法
CN101609418B (zh) 在具有共享错误位码的共同帧中传送数据和数据屏蔽位的系统
TWI703436B (zh) 資料儲存裝置及其操作方法
CN106205728B (zh) 奇偶校验电路及包括该奇偶校验电路的存储器装置
US20220350502A1 (en) Memory addressing methods and associated controller, memory device and host
CN113205839B (zh) 通过时钟调制验证读取数据可靠性的存储器系统及其操作方法
US10860518B2 (en) Integrated circuit system
US20060282757A1 (en) On-the fly error checking and correction codec system and method for supporting non-volatile memory
KR20220083883A (ko) 메모리 장치, 그것의 데이터 출력 방법 및 그것을 갖는 메모리 시스템
KR20170012675A (ko) 컴퓨팅 시스템 및 그것의 데이터 전송 방법
US11675714B2 (en) Memory sub-system including an in package sequencer separate from a controller
KR20210040463A (ko) 오류 정정 및 메모리 테스트 동작을 수행하기 위한 인-패키지 시퀀서를 포함하는 메모리 서브 시스템
JP6342013B2 (ja) 不揮発性メモリ・アレイを含むデータ・ストレージ・システムを動作させるための方法、システム及びコンピュータ・プログラム
CN104346234B (zh) 一种内存访问的方法、设备及系统
TWI740009B (zh) 編碼機制及其編碼方法
US20240004791A1 (en) Controller cache architeture
CN112805688A (zh) 为包含与控制器分离的定序器的存储器子系统提供带宽扩展
CN102568605A (zh) 系统总线检错纠错方法和nand flash控制器
US11403169B2 (en) Data recovery system for memory devices
KR20230131028A (ko) 에러정정동작을 수행하는 메모리컨트롤러 및 메모리시스템
CN117174157A (zh) 错误校正的设备、系统和方法
TW202309916A (zh) 半導體儲存裝置
KR20220021695A (ko) 에러정정동작을 수행하기 위한 전자시스템
CN116504289A (zh) 存储器件