CN114461440B - 隐藏ecc编码延时的存储系统及方法 - Google Patents

隐藏ecc编码延时的存储系统及方法 Download PDF

Info

Publication number
CN114461440B
CN114461440B CN202110073485.7A CN202110073485A CN114461440B CN 114461440 B CN114461440 B CN 114461440B CN 202110073485 A CN202110073485 A CN 202110073485A CN 114461440 B CN114461440 B CN 114461440B
Authority
CN
China
Prior art keywords
write
data
read
register
sram
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.)
Active
Application number
CN202110073485.7A
Other languages
English (en)
Other versions
CN114461440A (zh
Inventor
李颖
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.)
Muxi Integrated Circuit Shanghai Co ltd
Original Assignee
Muxi Integrated Circuit Shanghai Co ltd
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 Muxi Integrated Circuit Shanghai Co ltd filed Critical Muxi Integrated Circuit Shanghai Co ltd
Priority to CN202110073485.7A priority Critical patent/CN114461440B/zh
Priority to US18/273,031 priority patent/US20240126645A1/en
Priority to PCT/CN2021/135510 priority patent/WO2022156386A1/zh
Publication of CN114461440A publication Critical patent/CN114461440A/zh
Application granted granted Critical
Publication of CN114461440B publication Critical patent/CN114461440B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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
    • 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/1064Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in cache or content addressable memories

Landscapes

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

Abstract

本公开涉及隐藏ECC编码延时的存储系统及方法。本公开提出将写数据寄存器的输出配置为两路数据流。一路数据流经ECC编码模块与写数据中间寄存器,将输入写数据和ECC校验码发送到SRAM;另一路数据流经写数据中间寄存器与旁路寄存器模块,将输入写数据经旁路寄存器模块输入到读数据选择器。读数据选择器的另一个输入则是从SRAM读取并经过ECC检错纠错的数据。读数据选择器被配置为将选择的输入数据发送到读数据寄存器。根据本公开的教导,在对同一地址进行写入后立即读取的操作时,读数据选择器选择从旁路寄存器模块接收的写数据输出到读数据寄存器;而在对不同地址进行读写操作时,选择从SRAM读取并检错纠错后的数据输出到读数据寄存器。

Description

隐藏ECC编码延时的存储系统及方法
技术领域
本公开涉及计算数据存储领域,尤其涉及一种隐藏ECC编码延时的存储系统及方法。
背景技术
在高性能计算服务器中,对于可靠性要求很高。静态随机存取存储器(SRAM)中存储的数据如果因为低电压或者宇宙射线等外部影响会产生数据错误。因此,一般会在SRAM存储数据前加上检错纠错(ECC,Error Checking and Correcting)的功能,既能够纠正单比特错误,也能够检测多比特错误。
图1示出了现有技术中带有ECC编码译码检错纠错功能的SRAM存储系统。如图1所示,在写数据时,在SRAM的输入端加入ECC编码模块,ECC编码模块根据写数据寄存器保存的写数据比特产生校验比特,然后将检验比特和写数据比特同步写入SRAM中。在读数据时,ECC译码检错纠错模块同时读出写数据比特和校验比特,然后根据校验比特对写数据比特进行检错,如果有单比特错误直接进行纠错,如果有多比特错误则上报检错。
但是,在加入ECC检错纠错功能后,对SRAM的时序带来了不小的挑战。SRAM写入端的内部延时相对于读出端的内部延时更大,在写入端前留给ECC编码的逻辑级数的空间更小。因此,在同样的工作频率,由ECC编码逻辑带来的输入端时序延时更大,造成在对同一地址进行背靠背的写入后立即读取的操作时读取数据有误的问题。
发明内容
有鉴于此,本公开提出了一种隐藏ECC编码延时的存储系统及方法,通过在输入端增加中间寄存器和在读出端添加旁路寄存器逻辑模块,能够有效隐藏输入端的ECC编码延时,避免ECC编码延时对SRAM写延时的影响,解决了在对同一地址进行背靠背的写入后立即读取的操作时读取数据有误的问题。
根据本公开的一方面,提供了一种隐藏ECC编码延时的存储系统,所述系统包括:
写寄存器模块,用于输出写信号;
写中间寄存器模块,用于从写寄存器模块接收写信号,然后将写信号发送到SRAM的写信号输入端;
写数据寄存器,用于输出写数据;
ECC编码模块,用于从写数据寄存器接收写数据,根据写数据产生ECC检验码;
写数据中间寄存器,用于分别从写数据寄存器和ECC编码模块接收写数据和ECC检验码,将写数据和ECC校验码发送到SRAM的数据输入端;
SRAM,具有数据输入端、写信号输入端、读信号输入端、数据输出端;
旁路寄存器模块,用于从写数据中间寄存器接收写数据;
读寄存器模块,用于将读信号发送到SRAM的读信号输入端;
ECC译码检错模块,用于通过SRAM的数据输出端从SRAM读取数据和ECC检验码,根据读取的数据和ECC检验码对读取的数据进行检错纠错;
读数据选择器,具有第一输入端和第二输入端,第一输入端用于从旁路寄存器模块接收写数据,第二输入端用于从ECC译码检错模块接收从SRAM读取的数据,所述读数据选择器用于从两个输入端输入的数据中选择一种数据进行输出;
读数据寄存器,用于从读数据选择器接收选择的数据,
其中,当所述写中间寄存器模块和所述写数据中间寄存器的时序对齐时,被配置为将所述写信号和写数据同时分别发送到所述SRAM的写信号输入端和数据输入端;
其中,所述读寄存器模块被配置为,在所述写中间寄存器模块和所述写数据中间寄存器的时序对齐时,将读信号发送到所述SRAM的读信号输入端;
其中,所述读数据选择器被配置为,响应于写信号和读信号,在对同一地址进行写入后立即读取的操作时选择从旁路寄存器模块接收的写数据进行输出,在对不同地址进行读写操作时选择从ECC译码检错模块接收的从SRAM读取的检错纠错后的数据进行输出。
在一种可能的实现方式中,所述ECC译码检错模块在检查到多比特错误的情况下进行上报。
在一种可能的实现方式中,所述写寄存器模块包括写使能寄存器和写地址寄存器,所述写中间寄存器模块包括写使能中间寄存器和写地址中间寄存器,所述写信号包括写使能信号和写地址信号,所述SRAM的写信号输入端进一步包括写使能信号输入端和写地址信号输入端;所述写使能寄存器和所述写使能中间寄存器电连接,所述写使能中间寄存器与所述SRAM的写使能信号输入端电连接,用于将所述写使能信号输入到所述SRAM;所述写地址寄存器和所述写地址中间寄存器电连接,所述写地址中间寄存器与所述SRAM的写地址信号输入端电连接,用于将所述写地址信号输入到所述SRAM。
在一种可能的实现方式中,所述旁路寄存器模块包括第一级旁路数据寄存器和第二级旁路数据寄存器。所述第一级旁路数据寄存器用于从写数据中间寄存器接收写数据。所述第二级旁路数据寄存器用于从所述第一级旁路数据寄存器接收写数据。所述读数据选择器的第一输入端用于从所述第二级旁路数据寄存器接收写数据。
在一种可能的实现方式中,在读寄存器模块将读信号发送到SRAM的读信号输入端后,所述写数据由所述写数据中间寄存器发送到所述第一级旁路数据寄存器,并经所述第一级旁路数据寄存器发送到所述第二级旁路数据寄存器,并由所述读数据选择器选中。
在一种可能的实现方式中,所述读寄存器模块包括读使能寄存器和读地址寄存器,所述读信号包括读使能信号和读地址信号,所述SRAM的读信号输入端进一步包括读使能信号输入端和读地址信号输入端;所述的将读信号发送到SRAM的读信号输入端包括将所述读使能信号和所述读地址信号同时分别发送到所述SRAM的读使能信号输入端和读地址信号输入端。
在一种可能的实现方式中,当所述写中间寄存器模块和所述写数据中间寄存器的时序对齐时,判断所述写地址信号和所述读地址信号是否相同;若二者相同,所述读数据选择器被配置为选择从旁路寄存器模块接收的写数据进行输出,否则,被配置为选择从ECC译码检错模块接收的从SRAM读取的检错纠错后的数据进行输出。
根据本公开的另一方面,提出了一种隐藏ECC编码延时的方法,所述方法包括:
接收写信号;
通过写中间寄存器模块将写信号发送到SRAM的写信号输入端;
接收写数据;
根据写数据产生ECC检验码;
通过写数据中间寄存器将写数据和ECC校验码发送到SRAM的数据输入端;
通过旁路寄存器模块从写数据中间寄存器接收写数据;
将读信号发送到SRAM的读信号输入端;
通过SRAM的数据输出端从SRAM读取数据和ECC检验码;
根据读取的数据和ECC检验码对读取的数据进行检错纠错;
从旁路寄存器模块接收写数据;
接收从SRAM读取并检错纠错后的数据;
当所述写中间寄存器模块和所述写数据中间寄存器的时序对齐时,将所述写信号和写数据同时分别发送到所述SRAM的写信号输入端和数据输入端;
当所述写中间寄存器模块和所述写数据中间寄存器的时序对齐时,将读信号发送到所述SRAM的读信号输入端;
响应于写信号和读信号,在对同一地址进行写入后立即读取的操作时,选择从旁路寄存器模块接收的写数据输出,在对不同地址进行读写操作时,选择从SRAM读取并检错纠错后的数据输出。
在一种可能的实现方式中,所述的根据读取的数据和ECC检验码对读取的数据进行检错纠错进一步包括:在检查到多比特错误的情况下进行上报。
在一种可能的实现方式中,所述写中间寄存器模块包括写使能中间寄存器和写地址中间寄存器,所述写信号包括写使能信号和写地址信号,所述SRAM的写信号输入端进一步包括写使能信号输入端和写地址信号输入端。所述的通过写中间寄存器模块将写信号发送到SRAM的写信号输入端进一步包括:通过写使能中间寄存器,将写使能信号发送到所述SRAM的写使能信号输入端;通过写地址中间寄存器,将写地址信号发送到所述SRAM的写地址信号输入端。
在一种可能的实现方式中,所述旁路寄存器模块包括第一级旁路数据寄存器和第二级旁路数据寄存器。通过第一级旁路数据寄存器从写数据中间寄存器接收写数据。通过第二级旁路数据寄存器从所述第一级旁路数据寄存器接收写数据。所述的从旁路寄存器模块接收写数据进一步包括:从所述第二级旁路数据寄存器接收写数据。
在一种可能的实现方式中,在将读信号发送到SRAM的读信号输入端后,所述写数据由所述写数据中间寄存器发送到所述第一级旁路数据寄存器,并经所述第一级旁路数据寄存器发送到所述第二级旁路数据寄存器,并由所述读数据选择器选中。
在一种可能的实现方式中,所述读信号包括读使能信号和读地址信号,所述SRAM的读信号输入端进一步包括读使能信号输入端和读地址信号输入端;所述的将读信号发送到SRAM的读信号输入端包括将所述读使能信号和所述读地址信号同时分别发送到所述SRAM的读使能信号输入端和读地址信号输入端。
在一种可能的实现方式中,当所述写中间寄存器模块和所述写数据中间寄存器的时序对齐时,判断所述写地址信号和所述读地址信号是否相同;若二者相同,选择从旁路寄存器模块接收的写数据输出,否则,选择从SRAM读取并检错纠错后的数据输出。
本公开提出将写数据寄存器的输出配置为两路数据流。一路数据流经ECC编码模块与写数据中间寄存器,将输入写数据和ECC校验码发送到SRAM;另一路数据流经写数据中间寄存器与旁路寄存器模块,将输入写数据经旁路寄存器模块输入到读数据选择器。读数据选择器的另一个输入则是从SRAM读取并经过ECC检错纠错的数据。读数据选择器被配置为将选择的输入数据发送到读数据寄存器。写寄存器模块和写中间寄存器模块电连接,向SRAM发送写信号;读寄存器模块则向SRAM发送读信号。根据本公开的教导,在对同一地址进行写入后立即读取的操作时,读数据选择器选择从旁路寄存器模块接收的写数据输出到读数据寄存器;而在对不同地址进行读写操作时,选择从SRAM读取并检错纠错后的数据输出到读数据寄存器。由此,本公开的存储系统和方法能够有效隐藏输入端的ECC编码延时,避免ECC编码延时对SRAM写延时的影响,解决了在对同一地址进行写入后立即读取操作时读取数据有误的问题。
根据下面参考附图对示例性实施例的详细说明,本公开的其他特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出了现有技术中带有ECC编码译码检错纠错功能的SRAM存储系统;
图2示出了根据本公开一实施例的隐藏ECC编码延时的存储系统的结构框图;
图3示出了根据本公开另一实施例的隐藏ECC编码延时的存储系统的结构框图;
图4示出了根据图3所示例的隐藏ECC编码延时的存储系统的时序图;
图5示出了根据本公开一实施例的隐藏ECC编码延时的方法流程图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其他实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
图2示出了根据本公开一实施例的隐藏ECC编码延时的存储系统的结构框图。如图2所示,该系统可以包括:写数据寄存器、写数据中间寄存器、ECC编码模块、写寄存器模块、写中间寄存器模块、旁路寄存器模块、SRAM、读数据选择器、读寄存器模块、读数据寄存器和ECC译码检错模块。
具体地说,如图2中所示,SRAM可以具有数据输入端、写信号输入端、读信号输入端、数据输出端。
写寄存器模块输出写信号。写中间寄存器模块从写寄存器模块接收写信号,然后将写信号发送到SRAM的写信号输入端。
写数据寄存器输出写数据。ECC编码模块从写数据寄存器接收写数据,根据写数据产生ECC检验码。写数据中间寄存器分别从写数据寄存器和ECC编码模块接收写数据和ECC检验码,将写数据和ECC校验码发送到SRAM的数据输入端。
旁路寄存器模块从写数据中间寄存器接收写数据。
读寄存器模块将读信号发送到SRAM的读信号输入端。
ECC译码检错模块通过SRAM的数据输出端从SRAM读取数据和ECC检验码,根据读取的数据和ECC检验码对读取的数据进行检错纠错。
读数据选择器具有第一输入端和第二输入端。第一输入端用于从旁路寄存器模块接收写数据,第二输入端用于从ECC译码检错模块接收从SRAM读取的数据。读数据选择器从两个输入端输入的数据中选择一种数据进行输出。
读数据寄存器从读数据选择器接收选择的数据。
具体地说,当写中间寄存器模块和写数据中间寄存器的时序对齐时,二者将写信号和写数据同时分别发送到SRAM的写信号输入端和数据输入端。
另一方面,在写中间寄存器模块和写数据中间寄存器的时序对齐时,读寄存器模块将读信号发送到SRAM的读信号输入端。
在对同一地址进行写入后立即读取的操作时,读数据选择器选择从旁路寄存器模块接收的写数据进行输出。在对不同地址进行写操作和读操作时,读数据选择器选择从ECC译码检错模块接收的从SRAM读取的检错纠错后的数据进行输出。
由图2可知,写数据寄存器的输出被配置为两路数据流。第一路数据流经ECC编码模块与写数据中间寄存器电连接;第二路数据流经写数据中间寄存器与旁路寄存器模块电连接。写数据中间寄存器与SRAM的数据输入端电连接,用于将写数据寄存器的写数据比特的ECC校验码发送到写数据中间寄存器中,然后将直接来自写数据寄存器的写数据和ECC校验码同步发送到SRAM。在第二路数据流中,将直接来自写数据寄存器的写数据传送到旁路寄存器模块。旁路寄存器模块与读数据选择器的第一输入端电连接,能够将写数据进一步输入到读数据选择器中。
另一方面,写寄存器模块和写中间寄存器模块电连接,写中间寄存器模块与SRAM的写信号输入端电连接,用于向SRAM发送写信号。在一种可能的实现方式中,当写中间寄存器模块和写数据中间寄存器的时序对齐时,将写信号和写数据同时分别输入到SRAM的写信号输入端和数据输入端。
读寄存器模块与SRAM的读信号输入端电连接,用于向SRAM发送读信号。在一种可能的实现方式中,读寄存器模块被配置为在写中间寄存器模块和写数据中间寄存器的时序对齐时,向SRAM的读信号输入端发送读信号。
如图2所示,ECC译码检错模块的输入端和SRAM的数据输出端电连接,ECC译码检错模块的输出端和读数据选择器的第二输入端电连接。ECC译码检错模块被配置为将从SRAM中读取的数据进行检错纠错,然后将检错纠错后的读取数据发送到读数据选择器中。读数据选择器与读数据寄存器电连接,将选择的输入数据发送到读数据寄存器中。ECC译码检错模块的输出端还和服务器相连接,当检测到读取的数据发生多比特错误时,将错误进行上报。
图3示出了根据本公开另一实施例的隐藏ECC编码延时的存储系统的结构框图。如图3所示,在图3所示的存储系统中,旁路寄存器模块可以包括第一级旁路数据寄存器(在图3中标为④)和第二级旁路数据寄存器(在图3中标为⑤)。第一级旁路数据寄存器的输入端与写数据中间寄存器(图3中标为①)的输出端电连接,用于从写数据中间寄存器接收写数据。第二级旁路数据寄存器的输入端与第一级旁路数据寄存器的输出端电连接,用于从第一级旁路数据寄存器接收写数据。第二级旁路数据寄存器的输出端与读数据选择器(图3中标为⑥)的第一输入端电连接,使得读数据选择器的第一输入端从第二级旁路数据寄存器接收写数据。由此,能够实现将写数据寄存器中的写数据经写数据中间寄存器和旁路寄存器模块输入到读数据选择器中,进而能够被读数据寄存器读出。
在一种可能的实现方式中,在读寄存器模块将读信号发送到SRAM的读信号输入端后,写数据由写数据中间寄存器发送到第一级旁路数据寄存器,并经第一级旁路数据寄存器发送到第二级旁路数据寄存器,并由读数据选择器选中。
在图3所示的存储系统中,写寄存器模块可以包括写使能寄存器和写地址寄存器。相对应地,写中间寄存器模块可以包括写使能中间寄存器(图3中标为③)和写地址中间寄存器(图3中标为②)。写信号可以包括写使能信号和写地址信号。SRAM的写信号输入端进一步包括写使能信号输入端和写地址信号输入端。
写使能寄存器和写使能中间寄存器电连接,写使能中间寄存器与SRAM的写使能信号输入端电连接,用于将写使能信号输入到SRAM中;写地址寄存器和写地址中间寄存器电连接,写地址中间寄存器与SRAM的写地址信号输入端电连接,用于将写地址信号输入到SRAM中。通过写中间寄存器模块能够使写使能信号、写地址信号和写数据的时序对齐,然后同时被输入到SRAM的写输入端口。
在图3所示的存储系统中,读寄存器模块可以包括读使能寄存器和读地址寄存器,读信号包括读使能信号和读地址信号,SRAM的读信号输入端进一步包括读使能信号输入端和读地址信号输入端,能够将读使能信号和读地址信号同时分别发送到SRAM的读使能信号输入端和读地址信号输入端。由此,能够在读使能信号有效时,执行读操作。
在一种可能的实现方式中,当写中间寄存器模块和写数据中间寄存器的时序对齐时,判断写地址信号和读地址信号是否相同。若二者相同,读数据选择器被配置为选择从旁路寄存器模块接收的写数据进行输出,否则,被配置为选择从ECC译码检错模块接收的从SRAM读取的检错纠错后的数据进行输出。
在图2和图3的示例中,将写数据寄存器的输出配置为两路数据流,其中一路数据流经ECC编码模块与写数据中间寄存器电连接,将写数据和ECC校验码发送到SRAM;另一路数据流经写数据中间寄存器与旁路寄存器模块,将写数据经旁路寄存器模块输入到读数据选择器。读数据选择器的另一个输入则是从SRAM读取并经过ECC检错纠错的数据。读数据选择器被配置为将选择的输入数据发送到读数据选择器。写寄存器模块和写中间寄存器模块电连接,向SRAM发送写信号;读寄存器模块则向SRAM发送读信号。在对同一地址进行写入后立即读取的操作时,读数据选择器选择从旁路寄存器模块接收的写数据输出到读数据寄存器;而在对不同地址进行读写操作时,选择从SRAM读取并检错纠错后的数据输出到读数据寄存器。由此,该系统能够有效隐藏SRAM输入端的ECC编码延时,避免ECC编码延时对SRAM写延时的影响,解决了在对同一地址进行写入后立即读取的操作时读取数据有误的问题。
图4示出了根据图3所示例的隐藏ECC编码延时的存储系统的时序图。
如图4所示,时钟信号上方标注的1、2、…、6分别为时钟信号的第1周期、第2周期、…、第6周期,这仅仅是一个示例,时钟信号不止包括这6个时钟周期。写地址寄存器中的地址信号为地址A,写数据寄存器中的写输入数据为数据A’,其中,数据A’为地址A所对应的新输入数据,数据A为地址A所对应的原始数据。
在一种可能的实现方式中,当写中间寄存器模块和写数据中间寄存器的时序对齐时,将写信号和写数据同时输入到所述SRAM的写信号输入端和数据输入端。
如图3所示,为了使写使能信号、写地址信号与写数据对齐,在写使能寄存器和SRAM之间增加写使能中间寄存器、在写地址寄存器和SRAM之间增加写地址中间寄存器、在写数据寄存器与SRAM之间增加写数据中间寄存器,当写使能信号、写地址信号与写数据对齐后,将写使能信号、写地址信号与写数据同时分别输入到SRAM的写信号输入端和数据输入端,能够解决因ECC编码模块的延时所带来的的SRAM写入侧的时序问题。
在一种可能的实现方式中,如图4所示,所述读寄存器模块被配置为在所述写中间寄存器模块和所述写数据中间寄存器的时序对齐时,向所述SRAM的读信号输入端发送读信号。
SRAM读取数据(即,向SRAM写入数据)时,在时钟信号的第1周期时,SRAM读取写使能寄存器中的写使能信号。当写使能信号有效时(如图4中的高电平有效),将地址A和数据A’,同时分别写入到写地址寄存器和写数据寄存器中,进而分别传输到写地址中间寄存器和写数据中间寄存器中。
如图4所示,在写数据寄存器的输出端连接有ECC编码模块,由于ECC编码模块的输出存在延时,在时钟信号的第1周期响应写使能信号时,写数据被延时学入到写数据中间寄存器中。为了避免因ECC编码模块带来SRAM写入侧的延时问题,因此,需要在时钟信号的第2周期,将写使能信号、写地址信号与写数据对齐,即写中间寄存器模块和写数据中间寄存器的时序对齐。
对于SRAM的数据读写操作,在响应写使能信号的下一个时钟周期执行读操作。在时钟信号的第2周期时,即写中间寄存器模块和写数据中间寄存器的时序时,读寄存器模块向SRAM的读信号输入端发送读信号,执行读操作。
在一种可能的实现方式中,在读寄存器模块发送读信号到读数据寄存器读数据后,写数据由写数据中间寄存器发送到第一级旁路数据寄存器,并经第一级旁路数据寄存器发送到第二级旁路数据寄存器,并由读数据选择器选中。
如图4所示,从时钟信号的第2周期到读数据寄存器输出读取数据(时钟信号的第5周期)时,内部时钟信号延时两个时钟周期。
当读寄存器模块执行读操作,内部时钟信号的第4时钟周期可以直接从SRAM读数据端口读取数据A,并将数据A输出到ECC译码解码模块,进行数据比特的检验码的检错纠错,同时将数据A由ECC译码解码模块输入到读数据选择器的第二输入端。然后在时钟信号的第5周期时,由读数据寄存器输出数据A。
如果读地址和写地址(如图4中的地址A)不相同,则数据A(此时的数据A并非地址A所对应的原始数据)即为读数据寄存器输出的目标数据。如果读地址和写地址(如图4中的地址A)相同,由于ECC编码模块存在输出延时,则,由SRAM的输出端口直接输出的数据A为地址A所对应的原始数据,而不是希望读数据寄存器输出的目标数据A’。
为了能够避免因ECC编码模块的延时造成读数据寄存器读取同一地址的数据出现延时出错,在时钟信号的第3周期,将数据A’由写数据中间寄存器输入到第一级旁路数据寄存器。在时钟信号的第4周期,将数据A’由第一级旁路数据寄存器输入到第二级旁路数据寄存器。同时将数据A’输入到读数据选择器的第一输入端。这样,能够在读数据选择器选中来自旁路寄存器模块的输出数据A’,从而在时钟信号的第5周期时,读数据寄存器能够输出数据A’,隐藏了ECC模块逻辑带来的延时问题,以及解决了在对同一地址进行写入后立即读取的操作时读取数据有误的问题。
由于在SRAM读写数据时,读地址和写地址相同或不同时,读数据寄存器输出数据不同,可以通过设置读数据选择器选择输出相应的数据。
在一种可能的实现方式中,当写中间寄存器模块和写数据中间寄存器的时序对齐时,判断写地址信号和读地址信号是否相同;若二者相同,读数据选择器被配置为选择旁路寄存器模块的输出数据,否则,被配置为选择ECC译码检错模块的输出数据。
如图4所示,在时钟信号的第2周期时(写中间寄存器模块和写数据中间寄存器的时序对齐时),将读地址寄存器的地址信号和写地址寄存器的地址A进行比较,当两者相同时,读数据选择器被配置为选择旁路寄存器模块的输出数据,否则,被配置为选择ECC译码检错模块的输出数据。这样能够在SRAM进行数据读取操作时,能够有效的读出写入数据。
图5示出了根据本公开一实施例的隐藏ECC编码延时的方法流程图。如图5中所述,该方法500应用于上述的存储系统,可以包括:
步骤S511:产生写信号;
步骤S512:产生写数据;
步骤S513:根据写数据产生ECC检验码;
步骤S521:通过写中间寄存器模块传送写信号;
步骤S522:通过写数据中间寄存器传送包含ECC检验码的写数据;
步骤S523:产生读信号;
步骤S531:当写中间寄存器模块和写数据中间寄存器的时序对齐(步骤S530)时,将写信号和包含ECC检验码的写数据同时分别发送到SRAM的写信号输入端和数据输入端;
步骤S532:当写中间寄存器模块和写数据中间寄存器的时序对齐(步骤S530)时,将读信号发送到SRAM的读信号输入端;
步骤S540:通过旁路寄存器模块从写数据中间寄存器接收并传送写数据;
步骤S541:通过SRAM的数据输出端从SRAM读取数据和ECC检验码;
步骤S542:根据读取的数据和ECC检验码对读取的数据进行检错纠错;
响应于写信号和读信号,在对同一地址进行写入后立即读取的操作时(步骤S550,分支“是”),选择从旁路寄存器模块接收的写数据输出(步骤S551),在对不同地址进行读写操作时(步骤S550,分支“否”),选择从SRAM读取并检错纠错后的数据输出(步骤S552)。
在步骤S542,根据读取的数据和ECC检验码对读取的数据进行检错纠错,进一步包括:在检查到多比特错误的情况下进行上报。
在图3所示的实现方式中,写中间寄存器模块包括写使能中间寄存器和写地址中间寄存器,写信号包括写使能信号和写地址信号,SRAM的写信号输入端进一步包括写使能信号输入端和写地址信号输入端。由此,步骤S521所述的通过写中间寄存器模块传送写信号进一步包括:通过写使能中间寄存器,将写使能信号传送到所述SRAM的写使能信号输入端;通过写地址中间寄存器,将写地址信号传送到所述SRAM的写地址信号输入端。
在图3所示的实现方式中,旁路寄存器模块包括第一级旁路数据寄存器和第二级旁路数据寄存器。因此,步骤S540所述的从旁路寄存器模块接收并传送写数据进一步包括:通过第一级旁路数据寄存器从写数据中间寄存器接收并传送写数据,通过第二级旁路数据寄存器从所述第一级旁路数据寄存器接收并传送写数据。
更具体地,在将读信号发送到SRAM的读信号输入端后,所述写数据由所述写数据中间寄存器发送到所述第一级旁路数据寄存器,经所述第一级旁路数据寄存器发送到所述第二级旁路数据寄存器,然后经选择后输出。
在图3所示的实现方式中,读信号包括读使能信号和读地址信号,所述SRAM的读信号输入端进一步包括读使能信号输入端和读地址信号输入端。由此,步骤S532所述的将读信号发送到SRAM的读信号输入端包括将所述读使能信号和所述读地址信号同时分别发送到所述SRAM的读使能信号输入端和读地址信号输入端。
具体地说,在步骤S530、S550、S551和S552,当所述写中间寄存器模块和所述写数据中间寄存器的时序对齐时,判断所述写地址信号和所述读地址信号是否相同;若二者相同,选择从旁路寄存器模块接收的写数据输出,否则,选择从SRAM读取并检错纠错后的数据输出。
举例说明如下。如图3和图4所示,在时钟信号的第1周期,SRAM读取写使能信号,当写使能信号高电平有效时,将写使能信号、写地址信号以及写数据分别写入到写使能寄存器、写地址寄存器和写数据寄存器中,同时,写使能信号和写地址信号又分别被写入到写使能中间寄存器和写地址中间寄存器中。写数据寄存器的输入端和ECC编码模块电连接,由于ECC编码模块的逻辑带来写入延时问题,在时钟信号的第2周期,通过写使能中间寄存器、写地址中间寄存器和写数据中间寄存器将写使能信号、写数据信号和写数据的时序对齐,然后一并输入到SRAM的写输入端口。此时读寄存器模块发送读使能信号和读地址信号到SRAM的读信号输入端并执行读操作。
在时钟信号的第3周期时,将写数据由写数据中间寄存器输入到第一级旁路数据寄存器中;在时钟信号的第4周期时,将写数据由第一级旁路数据寄存器输入到第二级旁路数据寄存器中,并输入到读数据选择器中。然后,判断读地址信号和写地址信号是否相同,例如可以用信号00表示读地址信号和写地址信号相同,信号01表示读地址信号和写地址信号不相同。读数据寄存器根据接收到的信号选择相应的数据输出到读数据寄存器中,如果读地址信号和所述写地址信号相同(信号00)时,在时钟信号的第5周期,读数据寄存器读取并输出旁路寄存器模块输出的数据,否则(信号01)读取并输出ECC译码检错模块输出的数据。通过在输入端增加中间寄存器和在读出端添加旁路寄存器逻辑模块,能够有效隐藏输入端的ECC编码延时,避免ECC编码延时对SRAM写延时的影响,解决了在对同一地址进行写入后立即读取的操作时读取数据有误的问题。
本公开所教导的存储系统及方法适用于中央处理单元(CPU),图形处理单元(GPU),现场可编程门阵列(FPGA),数字信号处理器(DSP),人工智能(AI)、视频编解码器(Video Codec)芯片等。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其他普通技术人员能理解本文披露的各实施例。

Claims (4)

1.一种隐藏ECC编码延时的存储系统,其特征在于,所述系统包括:
写寄存器模块,用于输出写信号;
写中间寄存器模块,用于从写寄存器模块接收写信号,然后将写信号发送到SRAM的写信号输入端;
写数据寄存器,用于输出写数据;
ECC编码模块,用于从写数据寄存器接收写数据,根据写数据产生ECC检验码;
写数据中间寄存器,用于分别从写数据寄存器和ECC编码模块接收写数据和ECC检验码,将写数据和ECC校验码发送到SRAM的数据输入端;
SRAM,具有数据输入端、写信号输入端、读信号输入端、数据输出端;
旁路寄存器模块,用于从写数据中间寄存器接收写数据;
读寄存器模块,用于将读信号发送到SRAM的读信号输入端;
ECC译码检错模块,用于通过SRAM的数据输出端从SRAM读取数据和ECC检验码,根据读取的数据和ECC检验码对读取的数据进行检错纠错;
读数据选择器,具有第一输入端和第二输入端,第一输入端用于从旁路寄存器模块接收写数据,第二输入端用于从ECC译码检错模块接收从SRAM读取的数据,所述读数据选择器用于从两个输入端输入的数据中选择一种数据进行输出;
读数据寄存器,用于从读数据选择器接收选择的数据,
其中,当所述写中间寄存器模块和所述写数据中间寄存器的时序对齐时,被配置为将所述写信号和写数据同时分别发送到所述SRAM的写信号输入端和数据输入端;
其中,所述读寄存器模块被配置为,在所述写中间寄存器模块和所述写数据中间寄存器的时序对齐时,将读信号发送到所述SRAM的读信号输入端;
其中,所述读数据选择器被配置为,响应于写信号和读信号,在对同一地址进行写入后立即读取的操作时选择从旁路寄存器模块接收的写数据进行输出,在对不同地址进行读写操作时选择从ECC译码检错模块接收的从SRAM读取的检错纠错后的数据进行输出,
其中,所述写寄存器模块包括写使能寄存器和写地址寄存器,所述写中间寄存器模块包括写使能中间寄存器和写地址中间寄存器,所述写信号包括写使能信号和写地址信号,所述SRAM的写信号输入端进一步包括写使能信号输入端和写地址信号输入端;所述写使能寄存器和所述写使能中间寄存器电连接,所述写使能中间寄存器与所述SRAM的写使能信号输入端电连接,用于将所述写使能信号输入到所述SRAM;所述写地址寄存器和所述写地址中间寄存器电连接,所述写地址中间寄存器与所述SRAM的写地址信号输入端电连接,用于将所述写地址信号输入到所述SRAM,
其中,所述旁路寄存器模块包括第一级旁路数据寄存器和第二级旁路数据寄存器;所述第一级旁路数据寄存器用于从写数据中间寄存器接收写数据,所述第二级旁路数据寄存器用于从所述第一级旁路数据寄存器接收写数据,所述读数据选择器的第一输入端用于从所述第二级旁路数据寄存器接收写数据,
其中,在读寄存器模块将读信号发送到SRAM的读信号输入端后,所述写数据由所述写数据中间寄存器发送到所述第一级旁路数据寄存器,并经所述第一级旁路数据寄存器发送到所述第二级旁路数据寄存器,并由所述读数据选择器选中,
其中,所述读寄存器模块包括读使能寄存器和读地址寄存器,所述读信号包括读使能信号和读地址信号,所述SRAM的读信号输入端进一步包括读使能信号输入端和读地址信号输入端;所述的将读信号发送到SRAM的读信号输入端包括将所述读使能信号和所述读地址信号同时分别发送到所述SRAM的读使能信号输入端和读地址信号输入端,
其中,当所述写中间寄存器模块和所述写数据中间寄存器的时序对齐时,判断所述写地址信号和所述读地址信号是否相同;若二者相同,所述读数据选择器被配置为选择从旁路寄存器模块接收的写数据进行输出,否则,被配置为选择从ECC译码检错模块接收的从SRAM读取的检错纠错后的数据进行输出。
2.根据权利要求1所述的存储系统,其特征在于,所述ECC译码检错模块进一步被配置为在检查到多比特错误的情况下进行上报。
3.一种隐藏ECC编码延时的方法,其特征在于,所述方法包括:
产生写信号;
产生写数据;
根据写数据产生ECC检验码;
通过写中间寄存器模块传送写信号;
通过写数据中间寄存器传送包含ECC检验码的写数据;
产生读信号;
当写中间寄存器模块和写数据中间寄存器的时序对齐时,将写信号和包含ECC检验码的写数据同时分别发送到SRAM的写信号输入端和数据输入端;
当写中间寄存器模块和写数据中间寄存器的时序对齐时,将读信号发送到SRAM的读信号输入端;
通过旁路寄存器模块从写数据中间寄存器接收并传送写数据;
通过SRAM的数据输出端从SRAM读取数据和ECC检验码;
根据读取的数据和ECC检验码对读取的数据进行检错纠错;
响应于写信号和读信号,在对同一地址进行写入后立即读取的操作时,选择从旁路寄存器模块接收的写数据输出,在对不同地址进行读写操作时,选择从SRAM读取并检错纠错后的数据输出,
其中,所述写中间寄存器模块包括写使能中间寄存器和写地址中间寄存器,所述写信号包括写使能信号和写地址信号,所述SRAM的写信号输入端进一步包括写使能信号输入端和写地址信号输入端;所述的通过写中间寄存器模块传送写信号进一步包括:通过写使能中间寄存器,将写使能信号传送到所述SRAM的写使能信号输入端;通过写地址中间寄存器,将写地址信号传送到所述SRAM的写地址信号输入端,
其中,所述旁路寄存器模块包括第一级旁路数据寄存器和第二级旁路数据寄存器;所述的从旁路寄存器模块接收并传送写数据进一步包括:通过第一级旁路数据寄存器从写数据中间寄存器接收并传送写数据,通过第二级旁路数据寄存器从所述第一级旁路数据寄存器接收并传送写数据,
其中,在将读信号发送到SRAM的读信号输入端后,所述写数据由所述写数据中间寄存器发送到所述第一级旁路数据寄存器,经所述第一级旁路数据寄存器发送到所述第二级旁路数据寄存器,然后经选择后输出,
其中,所述读信号包括读使能信号和读地址信号,所述SRAM的读信号输入端进一步包括读使能信号输入端和读地址信号输入端;所述的将读信号发送到SRAM的读信号输入端包括将所述读使能信号和所述读地址信号同时分别发送到所述SRAM的读使能信号输入端和读地址信号输入端,
其中,当所述写中间寄存器模块和所述写数据中间寄存器的时序对齐时,判断所述写地址信号和所述读地址信号是否相同;若二者相同,选择从旁路寄存器模块接收的写数据输出,否则,选择从SRAM读取并检错纠错后的数据输出。
4.根据权利要求3所述的方法,其特征在于,所述的根据读取的数据和ECC检验码对读取的数据进行检错纠错进一步包括:在检查到多比特错误的情况下进行上报。
CN202110073485.7A 2021-01-20 2021-01-20 隐藏ecc编码延时的存储系统及方法 Active CN114461440B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202110073485.7A CN114461440B (zh) 2021-01-20 2021-01-20 隐藏ecc编码延时的存储系统及方法
US18/273,031 US20240126645A1 (en) 2021-01-20 2021-12-03 Storage system and method for hiding error checking and correcting (ecc) encoding delay
PCT/CN2021/135510 WO2022156386A1 (zh) 2021-01-20 2021-12-03 隐藏ecc编码延时的存储系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110073485.7A CN114461440B (zh) 2021-01-20 2021-01-20 隐藏ecc编码延时的存储系统及方法

Publications (2)

Publication Number Publication Date
CN114461440A CN114461440A (zh) 2022-05-10
CN114461440B true CN114461440B (zh) 2022-11-04

Family

ID=81405758

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110073485.7A Active CN114461440B (zh) 2021-01-20 2021-01-20 隐藏ecc编码延时的存储系统及方法

Country Status (3)

Country Link
US (1) US20240126645A1 (zh)
CN (1) CN114461440B (zh)
WO (1) WO2022156386A1 (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5760595A (en) * 1980-09-29 1982-04-12 Toshiba Corp Error corrector
US4726021A (en) * 1985-04-17 1988-02-16 Hitachi, Ltd. Semiconductor memory having error correcting means
CN104331252A (zh) * 2014-10-10 2015-02-04 上海新储集成电路有限公司 异构nand固态硬盘结构及其数据读取管理方法
CN111831404A (zh) * 2019-04-15 2020-10-27 辉达公司 用于dram控制器的高性能内联ecc架构

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2840445B1 (fr) * 2002-06-03 2004-09-10 St Microelectronics Sa Circuit memoire comportant un code correcteur d'erreur
US7447950B2 (en) * 2003-05-20 2008-11-04 Nec Electronics Corporation Memory device and memory error correction method
CN102982849B (zh) * 2012-12-05 2015-10-28 清华大学 用于数据存储的ecc解码控制方法
CN103389924B (zh) * 2013-07-25 2016-04-06 苏州国芯科技有限公司 应用于随机存储器的ecc存储系统
US9280418B2 (en) * 2013-08-01 2016-03-08 Integrated Silicon Solution, Inc. Memory device implementing reduced ECC overhead
CN103886916B (zh) * 2014-03-27 2017-01-25 中国科学院电子学研究所 输入位宽可伸缩的编码/编解码存储系统
CN107195329B (zh) * 2017-05-17 2024-04-02 西安紫光国芯半导体有限公司 在读操作时纠正dram中存储阵列的错误的方法以及dram
CN108665940B (zh) * 2018-05-14 2020-09-04 联芸科技(杭州)有限公司 Ecc编码电路、解码电路以及存储器控制器

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5760595A (en) * 1980-09-29 1982-04-12 Toshiba Corp Error corrector
US4726021A (en) * 1985-04-17 1988-02-16 Hitachi, Ltd. Semiconductor memory having error correcting means
CN104331252A (zh) * 2014-10-10 2015-02-04 上海新储集成电路有限公司 异构nand固态硬盘结构及其数据读取管理方法
CN111831404A (zh) * 2019-04-15 2020-10-27 辉达公司 用于dram控制器的高性能内联ecc架构

Also Published As

Publication number Publication date
CN114461440A (zh) 2022-05-10
WO2022156386A1 (zh) 2022-07-28
US20240126645A1 (en) 2024-04-18

Similar Documents

Publication Publication Date Title
EP1160987B1 (en) Method and apparatus for verifying error correcting codes
US7458004B2 (en) Semiconductor storage device
KR101750662B1 (ko) 데이터 에러 교정용 회로, 장치, 및 방법
KR920002575B1 (ko) 바이트 기입 에러코드 방법 및 장치
KR100680473B1 (ko) 액세스 시간이 감소된 플래시 메모리 장치
US4903268A (en) Semiconductor memory device having on-chip error check and correction functions
US7480847B2 (en) Error correction code transformation technique
JPS6061837A (ja) エラ−訂正装置
US8892963B2 (en) Error detection in high-speed asymmetric interfaces utilizing dedicated interface lines
US7587658B1 (en) ECC encoding for uncorrectable errors
US4926426A (en) Error correction check during write cycles
CN107918571B (zh) 测试储存单元的方法以及使用该方法的装置
US8566685B2 (en) Command control circuit, integrated circuit having the same, and command control method
US8281219B2 (en) Error correction code (ECC) circuit test mode
CN110619920B (zh) 半导体装置和包括该半导体装置的测试系统
US20080082870A1 (en) Parallel bit test device and method using error correcting code
US8321777B2 (en) Cyclic redundancy check code generating circuit, semiconductor memory device, and method of driving semiconductor memory device
CN106528437B (zh) 数据储存系统与其相关方法
CN115482871A (zh) 用于识别多位错误的设备、系统和方法
US8661300B1 (en) Error detection in high-speed asymmetric interfaces
US8161344B2 (en) Circuits and methods for error coding data blocks
CN114461440B (zh) 隐藏ecc编码延时的存储系统及方法
US4905242A (en) Pipelined error detection and correction apparatus with programmable address trap
US10860415B2 (en) Memory architecture including response manager for error correction circuit
CN112349343A (zh) 电路结构、芯片以及电子设备

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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40066977

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant