CN112867993A - 用于嵌入式ecc保护的方法及系统 - Google Patents

用于嵌入式ecc保护的方法及系统 Download PDF

Info

Publication number
CN112867993A
CN112867993A CN201980068709.6A CN201980068709A CN112867993A CN 112867993 A CN112867993 A CN 112867993A CN 201980068709 A CN201980068709 A CN 201980068709A CN 112867993 A CN112867993 A CN 112867993A
Authority
CN
China
Prior art keywords
data
ecc
block
address
memory
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
CN201980068709.6A
Other languages
English (en)
Inventor
D·R·博杜安
R·D·索吉特拉
S·P·维萨利
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Texas Instruments Inc
Original Assignee
Texas Instruments Inc
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 Texas Instruments Inc filed Critical Texas Instruments Inc
Publication of CN112867993A publication Critical patent/CN112867993A/zh
Pending legal-status Critical Current

Links

Images

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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation 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/04Addressing variable-length words or parts of words
    • 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/0877Cache access modes
    • G06F12/0879Burst mode
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/409Read-write [R-W] circuits 
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/76Masking faults in memories by using spares or by reconfiguring using address translation or modifications
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/06Address interface arrangements, e.g. address buffers
    • 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/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/306In system interconnect, e.g. between two buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/403Error protection encoding, e.g. using parity or ECC codes
    • 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
    • G11C2029/0411Online error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

本发明涉及一种存储器系统(100),其具有互连件(101),所述互连件经配置以从系统(107)接收命令,以从存储器装置(106)读取数据及/或将数据写入到存储器装置(106)。所述存储器系统(100)还具有桥接器(102),所述桥接器经配置以从所述互连件(101)接收所述命令以管理ECC数据,并通过以下操作在系统地址与物理存储器装置地址之间执行地址翻译:计算用于在具有第一数据地址的第一数据块之后且邻近于所述第一数据块的第一ECC数据块的第一ECC存储器地址,计算在所述第一ECC块之后且邻近于所述第一ECC块的第二ECC存储器地址,以及计算在所述第二ECC块之后且邻近于所述第二ECC块的第二数据地址。所述桥接器(102)也可检查及计算完整数据突发的ECC数据,及/或缓存包含读取及/或写入数据的完整数据突发的ECC数据。

Description

用于嵌入式ECC保护的方法及系统
背景技术
在计算系统中,存储在存储器(例如,动态随机存取存储器(DRAM)或双数据速率(DDR)同步动态随机存取存储器(SDRAM))中的数据在写入或读取操作期间可受到控制器、物理接口(PHY)或电路板中的错误影响,或者当数据存储于存储器阵列中时受到存储器阵列自身中的错误影响。此外,外部存储器通常由第三方制作及/或可未针对功能安全性应用评级或对于应用而言不够可靠。来自存储器的错误数据或指令可导致系统错误地操作。系统的错误操作是不期望的,尤其在其中功能安全性或可靠性至关重要的系统或应用中。
通常存在三种类型的存储器错误:永久性、暂时性及系统性。永久性错误通常是存储器或相关联电路系统的物理损坏或降级的结果,或可为硅或导线中的短路。暂时性错误可归因于粒子撞击且通常导致位翻转状态(例如,在触发器中)。系统性错误是逻辑中的错误,举例来说,系统按设计正确地工作,只是在硬件或软件中存在错误。
发明内容
本文中所描述的实例包含一种集成电路,所述集成电路包含互连件,所述互连件经配置以从系统接收命令,以从存储器装置的物理地址读取数据及/或将数据写入到存储器装置的物理地址。所述集成电路进一步包含桥接器,所述桥接器经配置以从所述互连件接收所述命令并通过以下操作在系统地址与所述物理地址之间执行地址翻译:计算用于在具有第一数据地址的第一数据块之后且邻近于所述第一数据块的第一ECC数据块的第一错误校正码(ECC)存储器地址,计算在所述第一ECC块之后且邻近于所述第一ECC块的第二ECC存储器地址,以及计算在所述第二ECC块之后且邻近于所述第二ECC块的第二数据地址。
本文中所描述的另一例示性集成电路包含互连件,所述互连件经配置以从系统接收命令,用于读取及/或写入数据的一部分。所述集成电路进一步包含桥接器,所述桥接器经配置以从所述互连件接收所述命令并检查及计算包含数据的所述部分的数据突发的ECC数据。
本文中所描述的另一例示性集成电路包含互连件,所述互连件经配置以从系统接收命令,用于读取及/或写入数据的一部分。所述集成电路进一步包含桥接器,所述桥接器经配置以从所述互连件接收所述命令并检查及计算ECC数据,所述桥接器进一步经配置以缓存包含数据的所述部分的完整数据突发的ECC数据。
本文中所描述的实例还包含存储器系统,所述存储器系统具有存储器装置、处理器及互连件,所述互连件经配置以从所述处理器接收命令,以从所述存储器装置的物理地址读取数据及/或将数据写入到所述存储器装置的物理地址。所述存储器装置进一步包含桥接器,所述桥接器经配置以从所述互连件接收所述命令并通过以下操作在系统地址与所述物理地址之间执行地址翻译:计算用于在具有第一数据地址的第一数据块之后且邻近于所述第一数据块的第一ECC数据块的第一ECC存储器地址,计算在所述第一ECC块之后且邻近于所述第一ECC块的第二ECC存储器地址,以及计算在所述第二ECC块之后且邻近于所述第二ECC块的第二数据地址。
本文中所描述的另一例示性存储器装置包含存储器系统,所述存储器系统具有存储器装置、处理器及互连件,所述互连件经配置以从所述处理器接收命令,用于读取数据的一部分及/或将数据的一部分写入到所述存储器装置;以及桥接器,其经配置以从所述互连件接收所述命令并检查及计算ECC数据,所述桥接器进一步经配置以缓存包含数据的所述部分的完整数据突发的ECC数据。
本文中所描述的实例还包含一种将数据写入到外部存储器或从外部存储器读取数据的方法。所述方法包含:从系统接收命令,用于读取及/或写入数据的一部分;及缓存包含数据的所述部分的完整数据突发的ECC数据。
本文中还描述将数据写入到外部存储器或从外部存储器读取数据的例示性方法。所述方法包含:从系统接收命令,用于读取及/或写入数据的一部分,并检查包含数据的所述部分的完整数据突发的ECC数据。
本文中还描述将系统存储器地址翻译成物理存储器地址的例示性方法。所述方法包含:提供与第一数据块相关联的第一ECC块及提供与第二数据块相关联的第二ECC块。所述方法进一步包含:计算用于在具有第一数据地址的所述第一数据块之后且邻近于所述第一数据块的所述第一ECC数据块的第一ECC存储器地址,计算在所述第一ECC块之后且邻近于所述第一ECC块的第二ECC存储器地址,以及计算用于在所述第二ECC块之后且邻近于所述第二ECC块的所述第二数据块的第二数据地址。
附图说明
为详细描述各种实例,现将参考附图,其中:
图1图解说明例示性存储器系统的框图。
图2图解说明例示性ECC桥接器的框图。
图3图解说明例示性读取修改写入块的框图。
图4图解说明例示性嵌入式ECC块的框图。
图5图解说明例示性寻址模式。
图6图解说明图5的例示性寻址模式的例示性部分。
图7图解说明例示性状态机(SM)块的框图。
图8图解说明包含本文中所描述的例示性存储器系统的例示性装置。
具体实施方式
表述“基于”意指“至少部分基于”。因此,如果X基于Y,那么X可随Y及任何数目个额外因素而变化。
本文中所描述的实例跨越突发的每一字计算单错误校正双错误检测(SECDED)ECC。突发的大小取决于存储器装置的要求且通常是2的幂(例如,16、32、64、128、256)。ECC校正子与正常数据混合存储(“嵌入式”),使得数据突发或ECC数据不延伸超过页面边界。通常,存储及检索由两个不同命令组成:一个用于数据且另一个用于ECC校正子。针对数据及ECC校正子的地址计算可自动完成,因此主机系统仍经历平坦、连续的存储器映射。地址计算可使用滚动系统,所述滚动系统确保单个地址上的永久性故障将不因丢失整个数据/ECC组块掩盖。
一些实施例也跨越整个突发计算及检查ECC,而不管写入或读取多少数据,以进一步确保不存在提供错误匹配的ECC校正子的突发或混叠的问题。本文中所描述的例示性系统在写入少于完整ECC数据量同时维持完整数据相干时,自动执行读取修改写入(RMW)操作。本文中所描述的例示性系统还实施ECC缓存,其中写入及读取经存储且经合并以便减少在接收子突发写入时原本将引起的RMW操作,以及在请求子突发读取时将需要的多次读取。
图1展示根据本文中所描述的实例的存储器系统100。存储器系统100包含互连件101,其提供接口以供主装置107从存储器读取及写入到存储器。举例来说,主装置107可包含处理器。互连件101执行任何必要变换并将呼叫从主装置107发送到ECC桥接器102。ECC桥接器102充当计算系统与存储器装置之间的接口。举例来说,ECC桥接器102可处理错误校正码(ECC)检查、系统地址与物理地址之间的地址转换,以及计算系统域与存储器装置域之间的电压转换(以存储器控制器102开始)。存储器域包含:存储器控制器103、物理层(PHY)104、电路板迹线105及存储器装置106本身。举例来说,存储器控制器103、物理层(PHY)104、电路板迹线105及存储器装置106可为SDRAM且可为外部或内部RAM。
图2展示ECC桥接器102的框图。ECC桥接器102使用计算系统电压域201与在计算系统电压上操作的互连件101介接。ECC桥接器102也包含存储器电压域203,其用于与在存储器电压(例如,DDR电压)上操作的存储器装置106介接。ECC桥接器102还包含电压转换器202,其用于在计算系统电压域201与存储器电压域203之间执行电压转换。
存储器电压域203包含命令仲裁器204,所述命令仲裁器从电压转换器202接收经电压转换的读取或写入命令(及伴随数据)并将经接收命令排队。读取修改写入(RMW)块205处置读取修改写入操作,例如,针对不完整ECC量写入命令的读取命令。ECC量是每ECC校正子(例如,8字节的数据)的数据大小。嵌入式ECC块206执行三个主要功能:添加/计算ECC、缓存ECC数据,以及将系统地址翻译为存储器装置中的物理地址。
图3中更详细地展示RMW块205。来自命令仲裁器204的命令及数据由仲裁调度器301接收。仲裁调度器301充当RMW块205的入口,路由传入命令并执行额外必要任务。仲裁调度器301可将不需要由RMW块205额外处理(如下文所描述)及/或不与RMW积压保持队列302(可为先进先出(FIFO)队列)中的任何命令发生地址冲突(相干)的任何命令转发到嵌入式ECC块206。举例来说,仲裁调度器301可在满足以下条件中的任一者的情形下将写入命令转发到嵌入式ECC块206:(1)针对ECC量设定所有写入数据字节使能;(2)系统地址不在ECC保护的区域中,或(3)数据与RMW积压保持队列302中的任何命令不相干。如果数据与RMW积压保持队列302中的任何命令不相干,那么仲裁调度器301可将读取命令转发到嵌入式ECC块206。由仲裁调度器301转发到嵌入式ECC块206的命令可通过多线程FIFO队列304转发。
对于写入部分ECC数据量的命令,仲裁调度器301发出针对完整数据突发的读取命令,并将写入命令放置于RMW积压保持队列302中。当读取数据从状态机(SM)207返回时,其被放置于数据合并块303中,在数据合并块303中所述读取数据与放置于RMW积压保持队列302中的部分量写入数据合并。数据合并块303将经合并数据路由到仲裁调度器301,所述仲裁调度器接着发出针对经合并数据突发的将路由到嵌入式ECC 206的写入命令。
仲裁调度器301还处理RMW积压保持队列302中归因于环境改变而不再相干的命令。在此情形中,可需要如上文所描述地合并数据,或者可简单地将命令传递到嵌入式ECC206。如上文所描述,RMW积压保持队列302保持归因于部分写入而等待相干解析或等待返回数据的命令及数据。
图4中更详细地展示嵌入式ECC块206。发送到嵌入式ECC块206的命令及数据由命令仲裁及产生块401及ECC编码块405接收。ECC编码块405计算待写入于写入命令中的数据量的ECC。ECC编码块405也可将数据的地址任选地编码到每一ECC中。经编码地址可为ECC量、突发或块的地址,且可为系统或虚拟地址,或者可为存储器装置中的物理地址。这些地址中的一个以上地址可被编码到每一ECC校正子中。
对于入站命令,命令仲裁及产生块401基于ECC区域及所有权信息产生命令序列。举例来说,某些缓存条目可由特定CPU“拥有”,且仅供所述CPU使用。ECC缓存缓冲器402中的一小组ECC缓存线可经保留用于所有其它系统启动器。
当读取命令由命令仲裁及产生块401接收时,命令仲裁及产生块401确定相关联数据的ECC是否已在ECC缓存缓冲器402中。如果所述ECC在ECC缓存缓冲器402中,那么命令仲裁及产生块401将把读取命令路由到SM 207并使用经缓存ECC。如果相关联数据的ECC不在ECC缓存缓冲器402中,但ECC缓存缓冲器402有空间来缓存ECC块,那么命令仲裁及产生块401将读取命令路由到SM 207用于数据及ECC块两者。当SM 207返回ECC块时,所述ECC块将被存储在ECC缓存缓冲器402中(任选地经由多线程FIFO队列404)。如果相关联数据的ECC不在ECC缓存缓冲器402中且没有空间可用于额外ECC块,那么ECC缓存缓冲器402将在将读取命令发送到SM 207用于数据及ECC块两者之前移除最早读取的ECC数据。如果经移除ECC数据是“脏”的,这意味着经缓存ECC数据与存储在物理存储器中的ECC数据不同,那么可将ECC块写入到外部存储器。
当写入命令由命令仲裁及产生块401接收时,命令仲裁及产生块401确定相关联数据的ECC是否已在ECC缓存缓冲器402中。如果所述ECC在ECC缓存缓冲器402中,那么所述ECC将被合并到ECC缓存缓冲器402中的经缓存ECC中且将被标记为“脏”的。如果相关联数据的ECC不在ECC缓存缓冲器402中,但ECC缓存缓冲器402有缓存ECC块的空间,那么将分配ECC缓存缓冲器402中最早拥有的条目,并将所述ECC存储在那个空间中且标记为“脏”的。命令仲裁及产生块401将写入命令发到SM 207用于数据块。
如果相关联数据的ECC不在ECC缓存缓冲器402中且ECC缓存缓冲器不拥有任何空间,那么命令仲裁及产生块401将写入命令发到SM 207用于数据块。如果相关联数据的ECC不在ECC缓存缓冲器402中且所有拥有的条目均为脏的,那么将移除ECC缓存缓冲器402中的最早条目,且如果是脏的,那么写入到外部存储器。那个空间将被重新分配,且写入命令的ECC将被写入到ECC缓存缓冲器402中的那个经重新分配空间。
由命令仲裁及产生块401发送到SM 207的命令可通过多线程FIFO队列403发送。
在图4的例示性嵌入式ECC块206中,ECC缓存缓冲器402保持先前读取及写入的ECC块以供将来使用。ECC缓存缓冲器402具有用于ECC数据的每一字节的“脏”旗标,所述“脏”旗标指示经缓存ECC字节是否与存储在物理存储器中的ECC字节不同。在本文中所描述的实例中,ECC缓存缓冲器中的每一条目保持用于八个数据突发的ECC校正子数据。在此情形中,ECC缓存缓冲器保持用于八个连续数据块(512字节)的64字节的ECC校正子数据。
如上文所描述,嵌入式ECC块206还在系统地址与物理存储器地址之间执行地址翻译。命令仲裁及产生块401执行此地址翻译并将经翻译地址插入到发到SM 207的读取及写入命令中。在本文中所描述的实例中,系统地址经变换使得两个64字节ECC块被放置于两个512字节数据块之间(各自具有八个64字节存储器突发)。图5中展示此地址翻译的实例。如在图5中可见,ECC块52及53连续布置于512字节数据块51及54之间。
此地址翻译通过跨越数据及ECC校正子存储错开所有地址位来提供抵抗命令或寻址中的故障的保护。此经错开模式提供存储器空间的有效使用,从而保留8/9的空间供正常数据使用,而仅占用1/9用于ECC校正子,其中几乎没有(如有)浪费的存储器空间。此外,由于每8个数据突发(例如,512字节)共享用于ECC的单个块,因此地址位错误可绝不命中经对准ECC块,从而保护存储器地址以及数据。特定来说,通过将2的幂用于突发计数(例如,在此实例中为八个)并将3的幂用于突发计数加上ECC校正子(例如,在此实例中,突发计数(8)+1=9),任何地址位故障将阻止数据及ECC对准,从而导致错误。此外,两个64字节ECC块经连续布置,使得突发对准将不横越任何128字节页边界。举例来说,此布置可支持128字节突发,从而允许128字节开始于128字节存储器对准的边界上。可使用不同数目及大小的ECC块及数据突发/块,此取决于存储器装置的突发对准配置,且使得数据块加上ECC块的数目具有素数偏置。
图6更详细地图解说明图5的数据块51及54与ECC块52及52之间的关系。数据块51具有八个64字节突发d0到d7。数据块54具有八个64字节突发d8到dF。64字节ECC块52含有用于数据块51的ECC数据e0且64字节ECC块53含有用于数据块54的ECC数据e1。使用图5及6的地址模式,块51及54的第一突发在整个存储器中将始终处于128字节边界上。因此,在此特定实例中,发送到存储器装置的所有读取命令应为经128位对准的,且所有两突发操作始终为经两次突发(在此情形中为128字节)对准的。
本系统涵盖其它对准实例。举例来说,256字节对准可与64突发存储器装置搭配使用。在此情形中,四个64字节ECC块将放置于16个数据块之间。这保证经256字节对准的所有主装置请求也与存储器装置256字节对准。
图7展示状态机(SM)207的框图。仲裁器701负责将命令仲裁到存储器控制器103以确保资源可用。由仲裁器701发送到存储器控制器103的命令可通过多线程FIFO队列704发送。当读取返回FIFO 703响应于读取命令而从存储器装置(例如,图1的存储器装置106)接收数据及ECC时,读取返回FIFO保持所述数据及那个数据的所有权,并将所述ECC数据返回到嵌入式ECC 206。读取返回FIFO 703将数据发送到ECC校正及检测(ECC COR/DET)块702,在SECDED装置的情形中,所述ECC校正及检测(ECC COR/DET)块使用从嵌入式ECC块206接收的ECC数据单错误校正及/或双错误检测存储器的ECC保护区域,并将经校正读取数据返回到RMW块205以供合并。ECC校正及检测块702对从存储器装置接收的整个数据突发执行此ECC检查。由于每突发检查八个ECC块,且由于ECC校正子也含有存储器地址,因此在地址位错误的情况下,命中在ECC校正子上的错误的概率很小。读取返回FIFO 703可将读取ECC数据直接返回到嵌入式ECC 206。
本文中所描述的ECC缓存的实例(例如,ECC缓存缓冲器402的实例)提供事务的有效合并及缓存以避免存储器装置接口上的不太理想突发。某些实施例跨越整个突发检查及计算ECC,而不管所请求的数据,以为命令及地址提供进一步保护。跨越整个数据突发存取(例如,用于DDR存储器的整个64字节数据突发)检查ECC防止命令或寻址故障。一些实例也可通过跨越突发扩展地址的新颖方案来将事务的地址编码到ECC校正子中,从而在不具有额外位的情形下进一步保护事务。一些实例使用例如奇偶校验的额外诊断措施来进一步保护功能(例如,地址翻译、产生ECC等)以便实现更高错误检测率。一些实例可通过添加混淆或加密来保护数据并增强错误检测而进一步扩展。
此说明中所描述的解决方案优于现有解决方案,因为此说明中所描述的解决方案提供对地址空间的更高效使用(潜在地消除了浪费的存储器),通过使用新颖地址翻译方案提供抵抗地址故障(行、列、存储体及排)的更好保护,通过最小化RMW及子突发存取提供存储器接口的更高效使用,通过在两个独立命令进入存储器命令队列之前产生所述两个独立命令来为整个存储器控制器提供保护,且将地址编码到ECC校正子中提供额外保护。
本文中所描述的嵌入式ECC保护技术可在任何类型的电子系统或装置中实施,且对于其中功能安全性至关重要的应用中的系统及装置尤其有用,例如汽车(例如,ADAS或高级驾驶员辅助系统系统)或工业应用。此类装置的实例可包含有助于装置的功能的各种内部及/或外部组件,所述组件可包含硬件元件(包含电路系统)、软件元件(包含存储在有形计算机可读媒体上的计算机代码)或硬件与软件元件两者的组合。装置可包含输入/输出(I/O)端口、输入结构、一或多个处理器、存储器、电源等。
图8展示一个此类例示性装置80,其具有根据本文中所描述的实例的例示性处理器81及存储器装置100。
处理器81可控制装置80的一般操作。例如,处理器81可提供处理能力以执行操作系统、程序、用户及应用接口,以及装置的任何其它功能。处理器81可包含一或多个微处理器,例如一或多个通用微处理器、专用微处理器(ASIC),或此类处理组件的组合。处理器81可包含基于x86或RISC架构的一或多个处理器,以及专用图形处理器(GPU)、图像信号处理器、数字信号处理器、视频处理器、音频处理器及/或相关芯片组。处理器81可包含若干种相同或不同类型的处理核心且可实施为芯片上系统(SOC)装置。
待由处理器81处理的指令或数据可存储于例如存储器装置100的计算机可读媒体中。存储器装置100可包含存储器装置(例如,DRAM、SDRAM或内部存储器),以及实施上文所描述的嵌入式ECC功能的ECC桥接器。
虽然本文中将ECC功能性及地址翻译描述为发生在ECC桥接器102中,但此功能性可替代地以整体方式或部分地实施于另一组件(例如,存储器控制器103)中。
修改在所描述实施例中为可能的,且其它实施例在权利要求书的范围内为可能的。

Claims (28)

1.一种集成电路,其包括:
互连件,其经配置以从系统接收命令,以从存储器装置的物理地址读取数据及/或将数据写入到存储器装置的物理地址;及
桥接器,其经配置以从所述互连件接收所述命令并通过以下操作在系统地址与所述物理地址之间执行地址翻译:计算用于在具有第一数据地址的第一数据块之后且邻近于所述第一数据块的第一ECC数据块的第一ECC存储器地址,计算在所述第一ECC块之后且邻近于所述第一ECC块的第二ECC存储器地址,以及计算在第二ECC块之后且邻近于所述第二ECC块的第二数据地址。
2.根据权利要求1所述的集成电路,其中所述第一ECC数据块含有用于所述第一数据块的ECC数据且所述第二ECC数据块含有用于第二数据块的ECC数据。
3.根据权利要求1所述的集成电路,其中所述第一ECC数据块及第二ECC数据块各自为64字节且所述第一数据块及第二数据块各自为512字节。
4.根据权利要求1所述的集成电路,其中所述第一数据地址、第二数据地址、第一ECC存储器地址及第二ECC存储器地址对应于所述存储器装置中的相连位置。
5.一种集成电路,其包括:
互连件,其经配置以从系统接收命令,用于读取及/或写入数据的一部分;及
桥接器,其经配置以从所述互连件接收所述命令并检查及计算包含数据的所述部分的数据突发的ECC数据。
6.一种用于与外部存储器介接的集成电路,所述集成电路包括:
互连件,其经配置以从系统接收命令,用于读取及/或写入数据的一部分;及
桥接器,其经配置以从所述互连件接收所述命令并检查及计算ECC数据,所述桥接器进一步经配置以缓存包含数据的所述部分的完整数据突发的ECC数据。
7.根据权利要求6所述的集成电路,其中所述命令为第一命令,且其中所述桥接器进一步经配置以:如果所述第一命令为写入命令,那么将部分数据块写入到第一地址,并从所述外部存储器读取在所述第一地址处的数据块及与所述数据块相关联的ECC数据,且
其中所述桥接器包括保持队列,所述保持队列经配置以在所述数据块返回到所述桥接器期间保持所述写入命令及所述部分数据块。
8.根据权利要求7所述的集成电路,其中所述桥接器进一步经配置以从所述外部存储器接收所述数据块及用于所述数据块的ECC数据,将所述部分数据块与所述数据块合并以产生经合并数据,并将所述经合并数据写入到所述外部存储器。
9.根据权利要求8所述的集成电路,其中所述桥接器进一步经配置以缓存用于所述数据块的所述ECC数据。
10.根据权利要求7所述的集成电路,其中所述桥接器进一步经配置以从所述系统接收与第二地址相关联的第二命令,且如果所述第二地址匹配所述保持队列中的任何地址,那么将所述第二命令放置于所述保持队列中。
11.一种存储器系统,其包括:
存储器装置;
处理器;
互连件,其经配置以从所述处理器接收命令,以从所述存储器装置的物理地址读取数据及/或将数据写入到所述存储器装置的物理地址;及
桥接器,其经配置以从所述互连件接收所述命令并通过以下操作在系统地址与所述物理地址之间执行地址翻译:计算用于在具有第一数据地址的第一数据块之后且邻近于所述第一数据块的第一ECC数据块的第一ECC存储器地址,计算在所述第一ECC块之后且邻近于所述第一ECC块的第二ECC存储器地址,以及计算在第二ECC块之后且邻近于所述第二ECC块的第二数据地址。
12.根据权利要求11所述的存储器系统,其中所述第一ECC数据块含有用于所述第一数据块的ECC数据且所述第二ECC数据块含有用于第二数据块的ECC数据。
13.根据权利要求11所述的存储器系统,其中所述第一ECC数据块及第二ECC数据块各自为64字节且所述第一数据块及第二数据块各自为512字节。
14.根据权利要求11所述的存储器系统,其中所述第一数据地址、第二数据地址、第一ECC存储器地址及第二ECC存储器地址对应于所述存储器装置中的相连位置。
15.一种存储器系统,其包括:
存储器装置;
处理器;
互连件,其经配置以从所述处理器接收命令,用于读取数据的一部分及/或将数据的一部分写入到所述存储器装置;及
桥接器,其经配置以从所述互连件接收所述命令并检查及计算ECC数据,所述桥接器进一步经配置以缓存包含数据的所述部分的完整数据突发的ECC数据。
16.根据权利要求15所述的存储器系统,其中所述命令为第一命令,且其中所述桥接器进一步经配置以:如果所述第一命令为写入命令,那么将部分数据块写入到第一地址,并从外部存储器读取在所述第一地址处的数据块及与所述数据块相关联的ECC数据;且
其中所述桥接器包括保持队列,所述保持队列经配置以在所述数据块返回到所述桥接器期间保持所述写入命令及所述部分数据块。
17.根据权利要求16所述的存储器系统,其中所述桥接器进一步经配置以从所述外部存储器接收所述数据块及用于所述数据块的ECC数据,将所述部分数据块与所述数据块合并以产生经合并数据,并将所述经合并数据写入到所述外部存储器。
18.根据权利要求17所述的存储器系统,其中所述桥接器进一步经配置以缓存用于所述数据块的所述ECC数据。
19.根据权利要求16所述的存储器系统,其中所述桥接器进一步经配置以从所述系统接收与第二地址相关联的第二命令,且如果所述第二地址匹配所述保持队列中的任何地址,那么将所述第二命令放置于所述保持队列中。
20.一种将数据写入到外部存储器或从外部存储器读取数据的方法,所述存储器包括:
从系统接收命令,用于读取及/或写入数据的一部分;及
缓存包含数据的所述部分的完整数据突发的ECC数据。
21.根据权利要求20所述的方法,其中如果所述接收步骤包括接收第一写入命令以将部分数据块写入到第一地址,那么所述方法进一步包括:
从所述外部存储器读取包含所述第一地址且包含与数据块相关联的ECC数据的所述数据块;及
将所述第一写入命令及部分数据块放置于队列中。
22.根据权利要求21所述的方法,其进一步包括:
从所述外部存储器接收所述数据块及用于所述数据块的ECC数据;
将所述部分数据块与所述数据块合并以产生经合并数据;及
将所述经合并数据写入到所述外部存储器。
23.根据权利要求22所述的方法,其进一步包括缓存用于所述数据块的所述ECC数据。
24.根据权利要求21所述的方法,其进一步包括:
从所述系统接收与第二地址相关联的第二命令;
如果所述第二地址匹配所述队列中的任何地址,那么将所述第二命令放置于所述队列中。
25.根据权利要求20所述的方法,其中所述缓存步骤包括:缓存包含数据的所述部分的八个相连数据突发的ECC数据。
26.一种将数据写入到外部存储器或从外部存储器读取数据的方法,所述方法包括:
从系统接收命令,用于读取及/或写入数据的一部分;及
检查包含数据的所述部分的完整数据突发的ECC数据。
27.一种将系统存储器地址翻译成物理存储器地址的方法,所述方法包括:
提供与第一数据块相关联的第一ECC块;
提供与第二数据块相关联的第二ECC块;
计算用于在具有第一数据地址的所述第一数据块之后且邻近于所述第一数据块的所述第一ECC数据块的第一ECC存储器地址;
计算在所述第一ECC块之后且邻近于所述第一ECC块的第二ECC存储器地址;及
计算用于在所述第二ECC块之后且邻近于所述第二ECC块的所述第二数据块的第二数据地址。
28.根据权利要求27所述的方法,其中所述第一数据块、第一ECC块、第二ECC块及第二数据块基于所述第一数据地址、第一ECC存储器地址、第二ECC存储器地址及第二数据地址而在存储器中为相连的。
CN201980068709.6A 2018-12-11 2019-12-10 用于嵌入式ecc保护的方法及系统 Pending CN112867993A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862777993P 2018-12-11 2018-12-11
US62/777,993 2018-12-11
US16/590,515 US11119909B2 (en) 2018-12-11 2019-10-02 Method and system for in-line ECC protection
US16/590,515 2019-10-02
PCT/US2019/065416 WO2020123471A1 (en) 2018-12-11 2019-12-10 Method and system for in-line ecc protection

Publications (1)

Publication Number Publication Date
CN112867993A true CN112867993A (zh) 2021-05-28

Family

ID=70972067

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980068709.6A Pending CN112867993A (zh) 2018-12-11 2019-12-10 用于嵌入式ecc保护的方法及系统

Country Status (5)

Country Link
US (3) US11119909B2 (zh)
EP (1) EP3895017A4 (zh)
JP (2) JP7354253B2 (zh)
CN (1) CN112867993A (zh)
WO (1) WO2020123471A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11561857B2 (en) * 2021-05-11 2023-01-24 Robert Bosch Gmbh Method for the secured storing of a data element to be stored by a computer program in an external memory
US11934696B2 (en) 2021-05-18 2024-03-19 Microchip Technology Inc. Machine learning assisted quality of service (QoS) for solid state drives
US11699493B2 (en) 2021-05-24 2023-07-11 Microchip Technology Inc. Method and apparatus for performing a read of a flash memory using predicted retention-and-read-disturb-compensated threshold voltage shift offset values
CN117280328A (zh) 2021-06-01 2023-12-22 微芯片技术股份有限公司 存储器地址保护
DE112022002131T5 (de) 2021-09-28 2024-04-11 Microchip Technology Inc. Ldpc-dekodierung mit trapped-block-management
US20230342240A1 (en) * 2022-04-26 2023-10-26 Nxp Usa, Inc. Data processing system having a memory controller with inline error correction code (ecc) support

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0415547A2 (en) * 1989-08-01 1991-03-06 Digital Equipment Corporation Method of handling nonexistent memory errors
US6804799B2 (en) * 2001-06-26 2004-10-12 Advanced Micro Devices, Inc. Using type bits to track storage of ECC and predecode bits in a level two cache
US7043679B1 (en) * 2002-06-27 2006-05-09 Advanced Micro Devices, Inc. Piggybacking of ECC corrections behind loads
CN104464823A (zh) * 2009-01-23 2015-03-25 美光科技公司 用于管理错误区域的存储器装置及方法
US9417821B2 (en) * 2011-09-30 2016-08-16 Intel Corporation Presentation of direct accessed storage under a logical drive model

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI277869B (en) * 2005-08-23 2007-04-01 Via Tech Inc Architecture and method for storing data
US7676730B2 (en) 2005-09-30 2010-03-09 Quantum Corporation Method and apparatus for implementing error correction coding in a random access memory
JP2007104708A (ja) 2006-11-27 2007-04-19 Renesas Technology Corp データ処理方法
US8135935B2 (en) * 2007-03-20 2012-03-13 Advanced Micro Devices, Inc. ECC implementation in non-ECC components
US8341498B2 (en) * 2010-10-01 2012-12-25 Sandisk Technologies Inc. System and method of data encoding

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0415547A2 (en) * 1989-08-01 1991-03-06 Digital Equipment Corporation Method of handling nonexistent memory errors
US6804799B2 (en) * 2001-06-26 2004-10-12 Advanced Micro Devices, Inc. Using type bits to track storage of ECC and predecode bits in a level two cache
US7043679B1 (en) * 2002-06-27 2006-05-09 Advanced Micro Devices, Inc. Piggybacking of ECC corrections behind loads
CN104464823A (zh) * 2009-01-23 2015-03-25 美光科技公司 用于管理错误区域的存储器装置及方法
US9417821B2 (en) * 2011-09-30 2016-08-16 Intel Corporation Presentation of direct accessed storage under a logical drive model

Also Published As

Publication number Publication date
US11726907B2 (en) 2023-08-15
WO2020123471A1 (en) 2020-06-18
JP2023169327A (ja) 2023-11-29
US20200183826A1 (en) 2020-06-11
EP3895017A1 (en) 2021-10-20
JP2022520150A (ja) 2022-03-29
US20230393975A1 (en) 2023-12-07
EP3895017A4 (en) 2022-06-22
US11119909B2 (en) 2021-09-14
US20210406171A1 (en) 2021-12-30
JP7354253B2 (ja) 2023-10-02

Similar Documents

Publication Publication Date Title
US11726907B2 (en) Method and system for in-line ECC protection
TWI511150B (zh) 具儲存有錯誤校正碼資訊的資料之第一部分及儲存無錯誤校正碼資訊的資料之第二部分的記憶體子系統
KR101500635B1 (ko) 비-ecc 컴포넌트에서의 ecc 구현
US10198310B1 (en) Providing error correcting code (ECC) capability for memory
US8245109B2 (en) Error checking and correction (ECC) system and method
US8959417B2 (en) Providing low-latency error correcting code capability for memory
US7761779B2 (en) Access control apparatus, access control system, processor, access control method, memory access control apparatus, memory access control system, and memory access control method
US9158725B2 (en) Flexible control mechanism for store gathering in a write buffer
US20090157973A1 (en) Storage controller for handling data stream and method thereof
TWI611296B (zh) 記憶體控制器與資料儲存裝置
US11789811B2 (en) Techniques for storing data to enhance recovery and detection of data corruption errors
US9009411B2 (en) Flexible control mechanism for store gathering in a write buffer
US9098425B2 (en) Implementing user mode foreign device attachment to memory channel
US6591393B1 (en) Masking error detection/correction latency in multilevel cache transfers
CN110310693B (zh) 具有缓存的In-Line ECC模块
KR20060073420A (ko) Dma 회로 및 이것을 이용한 디스크 어레이 장치
US20200201559A1 (en) Semiconductor device, memory controller, and memory accessing method
CN115016981A (zh) 存储区域的设置方法、数据读取、写入方法及相关装置
CN110299183B (zh) In-LineECC模块及其实现方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination