CN108665939A - 为存储器提供ecc的方法与装置 - Google Patents

为存储器提供ecc的方法与装置 Download PDF

Info

Publication number
CN108665939A
CN108665939A CN201710211851.4A CN201710211851A CN108665939A CN 108665939 A CN108665939 A CN 108665939A CN 201710211851 A CN201710211851 A CN 201710211851A CN 108665939 A CN108665939 A CN 108665939A
Authority
CN
China
Prior art keywords
data
write order
memory
verification
verification data
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.)
Granted
Application number
CN201710211851.4A
Other languages
English (en)
Other versions
CN108665939B (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.)
Xiamen Xin Yi News Technology Co Ltd
Original Assignee
Xiamen Xin Yi News Technology 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 Xiamen Xin Yi News Technology Co Ltd filed Critical Xiamen Xin Yi News Technology Co Ltd
Priority to CN201710211851.4A priority Critical patent/CN108665939B/zh
Publication of CN108665939A publication Critical patent/CN108665939A/zh
Application granted granted Critical
Publication of CN108665939B publication Critical patent/CN108665939B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请提供了为存储器提供ECC的方法与装置。所提供的为存储器提供ECC的方法包括:接收并缓存来自主设备的第一写命令;将接收的第一写命令的数据写入存储器中;对缓存的第一写命令的数据计算校验数据;生成用于将第一写命令的校验数据写入存储器的第二写命令,并发送给存储器;响应于将第一写命令的数据和校验数据均写入存储器,向主设备告知第一写命令处理完成。

Description

为存储器提供ECC的方法与装置
技术领域
本申请涉及集成电路技术领域,尤其涉及存储器子系统中的错误检查与校正。
背景技术
一些存储器子系统中提供错误检查与校正(Error Checking and Correction,ECC)功能,用来检测存储器中的数据错误,以及可选地,对错误数据进行校正。提供ECC特征的存储器中,存储器中存储数据以及基于数据计算出的校验数据。数据与其校验数据构成数据保护单元。例如,一个数据保护单元中,校验数据的大小是数据的12.5%。
发明内容
提供ECC功能的存储器价格相对昂贵。希望使用相对便宜的普通的存储器,并同时提供ECC功能。
根据本申请的第一方面,提供了根据本申请第一方面的第一写命令处理方法,包括:接收并缓存来自主设备的第一写命令;将接收的第一写命令的数据写入存储器中;对缓存的第一写命令的数据计算校验数据;生成用于将第一写命令的校验数据写入存储器的第二写命令,并发送给存储器;响应于将第一写命令的数据和校验数据均写入存储器,向主设备告知第一写命令处理完成。
根据本申请的第一方面的第一写命令处理方法,提供了根据本申请第一方面的第二写命令处理方法,包括:若第一写命令的数据长度大于校验数据保护单元的数据长度,将第一写命令拆分为多个子写命令,每一个子写命令的长度等于校验数据保护单元的数据长度;对每个子写命令的数据分别计算校验数据;生成用于将每个子写命令的校验数据写入存储器的第三写命令,并发送给存储器;响应于将属于第一写命令的多个子写命令的数据和对应每个子写命令的校验数据均写入存储器后,向主设备告知第一写命令处理完成。
根据本申请的第一方面的第二写命令处理方法,提供了根据本申请第一方面的第三写命令处理方法,还包括:若拆分后的第一子写命令的数据小于一个校验数据保护单元对应的数据长度,则暂停处理第一子写命令;直到用其他写命令的数据将第一子写命令补足到一个校验数据保护单元的数据长度。
根据本申请的第一方面的第一写命令处理方法,提供了根据本申请第一方面的第四写命令处理方法,还包括:若第一写命令的数据长度大于校验数据保护单元的数据长度,将第一写命令的数据拆分为多段数据,每段数据的长度等于校验数据保护单元的数据长度;为每段数据分别计算校验数据;生成用于将由多段数据计算得到的多段校验数据一起写入存储器的第四写命令,并发送给存储器。
根据本申请的第一方面的第一至第四之一的写命令处理方法,提供了根据本申请第一方面的第五写命令处理方法,其中,写命令的数据与其校验数据在存储器中具有不同的体地址以及相同的页地址。
根据本申请的第一方面的第五写命令处理方法,提供了根据本申请第一方面的第六写命令处理方法,其中,使用单一的预充电命令,将第一写命令的数据与校验数据写入存储器。
根据本申请的第一方面的第五或第六的写命令处理方法,提供了根据本申请第一方面的第七写命令处理方法,其中,写命令的数据与其校验数据在存储器中的体地址的差为指定值。
根据本申请的第一方面的第五至第七之一的写命令处理方法,提供了根据本申请第一方面的第八写命令处理方法,其中,写命令的数据被写入存储器的M个体,而写命令的数据的校验数据被写入存储器的其余N个体。
根据本申请的第一方面的第五至第八之一的写命令处理方法,提供了根据本申请第一方面的第九写命令处理方法,还包括:将第一写命令指示的行地址的高位部分作为写命令的数据的体地址;而将校验数据的体地址设为指定值;将第一写命令指示的行地址的低位部分与第一写命令指示的体地址组合作为写命令的数据及其校验数据的行地址;将第一写命令指示的列地址作为写命令的数据的列地址;以及将第一写命令指示的行地址的高位部分与第一写命令指示的列地址的高位部分作为校验数据的列地址。
根据本申请的第一方面的第五至第八之一的写命令处理方法,提供了根据本申请第一方面的第十写命令处理方法,还包括:将第一写命令指示的列地址的高位部分作为写命令的数据的体地址;而将写命令的数据的体地址增加指定值作为校验数据的体地址;将第一写命令指示的行地址的低位部分与第一写命令指示的体地址组合作为写命令的数据及其校验数据的行地址;将第一写命令指示的行地址的高位部分与第一写命令指示的列地址的低位部分组合作为写命令的数据的列地址,以及将指定值、第一写命令指示的行地址的高位部分与第一写命令指示的列地址的高位部分作为校验数据的列地址。
根据本申请的第一方面的第十写命令处理方法,提供了根据本申请第一方面的第十一写命令处理方法,其中,指定值是第一写命令指示的行地址的高位不会使用的值。
根据本申请的第一方面的第五至第八之一的写命令处理方法,提供了根据本申请第一方面的第十二写命令处理方法,还包括:将第一写命令指示的地址的第一部分作为写命令的数据的体地址;而将写命令的数据的体地址的高位作为校验数据的体地址的高位,而将校验数据的体地址的低位设为指定值;将第一写命令指示的行地址的低位部分与第一写命令指示的体地址组合作为写命令的数据及其校验数据的行地址;将第一写命令指示的行地址的高位部分与第一写命令指示的列地址的低位部分组合作为写命令的数据的列地址,以及将指定值、第一写命令指示的行地址的高位部分与第一写命令指示的列地址的高位部分作为校验数据的列地址。
根据本申请的第二方面,提供了根据本申请第二方面的第一读命令处理方法,包括:接收来自主设备的读命令;根据读命令指示的地址计算校验数据的地址;根据读命令指示的地址读取要访问的数据,以及从校验数据的地址中读取校验数据;依据所读取的校验数据对要访问的数据进行校验计算,并将校验结果提供给主设备。
根据本申请的第二方面的第一读命令处理方法,提供了根据本申请第二方面的第二读命令处理方法,还包括:若校验结果指示要访问的数据正确,主设备不作数据正确的指示。
根据本申请的第二方面的第一或第二读命令处理方法,提供了根据本申请第二方面的第三读命令处理方法,还包括:若读命令要访问的数据长度小于一个校验数据保护单元对应的数据长度,或者跨越了校验数据保护单元的长度边界,需对完整的校验数据单元所存储的数据和/或校验数据进行读取。
根据本申请的第三方面,提供了根据本申请第三方面的第一不完全写命令的处理方法,包括:接收并缓存来自主设备的第一写命令;根据第一写命令的无效数据和/或空缺数据的地址,从存储器中读出第一数据和第一校验数据;根据第一校验数据对第一数据做校验计算,得到该无效数据和/或空缺数据的地址所对应的正确数据;将该无效数据和/或空缺数据的地址所对应的正确数据与第一写命令要写入的数据合并,生成第二数据;对第二数据计算校验数据,以及将第二数据和第二校验数据写入存储器。
根据本申请的第三方面的第一不完全写命令的处理方法,提供了根据本申请第三方面的第二不完全写命令的处理方法,还包括:生成用于将第二数据和第二校验数据写入存储器的第二写命令,并发送给存储器;以及响应于将第二数据和第二校验数据写入存储器,向主设备告知第一写命令处理完成。
根据本申请的第三方面的第一或第二不完全写命令的处理方法,提供了根据本申请第三方面的第三不完全写命令的处理方法,还包括:若第一写命令的长度大于校验数据保护单元的数据长度,将第一写命令拆分为多个子写命令,每一个子写命令的长度等于校验数据保护单元的数据长度。
根据本申请的第三方面的第三不完全写命令的处理方法,提供了根据本申请第三方面的第四不完全写命令的处理方法,其中,若拆分后的第一子写命令的数据小于一个校验数据保护单元对应的数据长度,则暂停处理第一子写命令;直到用其他写命令的数据将第一子写命令补足到一个校验数据保护单元的数据长度。
根据本申请的第三方面的第三或第四不完全写命令的处理方法,提供了根据本申请第三方面的第五不完全写命令的处理方法,还包括:若第一子写命令包括无效数据和/或空缺数据,则根据第一子写命令的无效数据和/或空缺数据的地址,从存储器中读出第三数据和第三校验数据;根据第三校验数据对第三数据做校验计算,得到该无效数据和/或空缺数据的地址所对应正确数据;将该无效数据和/或空缺数据的地址所对应正确数据与第一子写命令要写入的数据合并,生成第四数据;对第四数据计算校验数据,以及将第四数据和第四校验数据写入存储器。
根据本申请的第三方面的第五不完全写命令的处理方法,提供了根据本申请第三方面的第六不完全写命令的处理方法,还包括:生成用于将第四数据和第四校验数据写入存储器的第三写命令,并发送给存储器。
根据本申请的第三方面的第五或第六不完全写命令的处理方法,提供了根据本申请第三方面的第七不完全写命令的处理方法,还包括:响应于将属于第一写命令的所有子写命令均处理完成,向主设备告知第一写命令处理完成。
根据本申请的第三方面的第一至第七之一的不完全写命令的处理方法,提供了根据本申请第三方面的第八不完全写命令的处理方法,通过监视高级扩展协议总线的用于指示数据有效位的WSTRB信号来识别写命令中的无效数据。
根据本申请的第三方面的第一或第二不完全写命令的处理方法,提供了根据本申请第三方面的第九不完全写命令的处理方法,还包括:若第二数据的长度大于校验数据保护单元的数据长度,将第二数据拆分为多段数据,每段数据的长度等于校验数据保护单元的数据长度;为每段数据分别计算校验数据;生成用于将由多段数据计算得到的多段校验数据一起写入存储器的第四写命令,并发送给存储器。
根据本申请的第三方面的第一至第九之一的不完全写命令的处理方法,提供了根据本申请第三方面的第十不完全写命令的处理方法,其中,写命令的数据与其校验数据在存储器中具有不同的体地址以及相同的页地址。
根据本申请的第三方面的第十不完全写命令的处理方法,提供了根据本申请第三方面的第十一不完全写命令的处理方法,其中,使用单一的预充电命令,将第一写命令的数据与校验数据写入存储器。
根据本申请的第三方面的第十或第十一不完全写命令的处理方法,提供了根据本申请第三方面的第十二不完全写命令的处理方法,其中,写命令的数据与其校验数据在存储器中的体地址的差为指定值。
根据本申请的第三方面的第十至第十二之一的不完全写命令的处理方法,提供了根据本申请第三方面的第十三不完全写命令的处理方法,其中,写命令的数据被写入存储器的M个体,而写命令的数据的校验数据被写入存储器的其余N个体。
根据本申请的第三方面的第十至第十三之一的不完全写命令的处理方法,提供了根据本申请第三方面的第十四不完全写命令的处理方法,还包括:将第一写命令指示的行地址的高位部分作为写命令的数据的体地址;而将校验数据的体地址设为指定值;将第一写命令指示的行地址的低位部分与第一写命令指示的体地址组合作为写命令的数据及其校验数据的行地址;将第一写命令指示的列地址作为写命令的数据的列地址;以及将第一写命令指示的行地址的高位部分与第一写命令指示的列地址的高位部分作为校验数据的列地址。
根据本申请的第三方面的第十至第十三之一的不完全写命令的处理方法,提供了根据本申请第三方面的第十五不完全写命令的处理方法,还包括:将第一写命令指示的列地址的高位部分作为写命令的数据的体地址;而将写命令的数据的体地址增加指定值作为校验数据的体地址;将第一写命令指示的行地址的低位部分与第一写命令指示的体地址组合作为写命令的数据及其校验数据的行地址;将第一写命令指示的行地址的高位部分与第一写命令指示的列地址的低位部分组合作为写命令的数据的列地址,以及将指定值、第一写命令指示的行地址的高位部分与第一写命令指示的列地址的高位部分作为校验数据的列地址。
根据本申请的第三方面的第十五不完全写命令的处理方法,提供了根据本申请第三方面的第十六不完全写命令的处理方法,其中,指定值是第一写命令指示的行地址的高位不会使用的值。
根据本申请的第三方面的第十至第十三之一的不完全写命令的处理方法,提供了根据本申请第三方面的第十七不完全写命令的处理方法,还包括:将第一写命令指示的地址的第一部分作为写命令的数据的体地址;而将写命令的数据的体地址的高位作为校验数据的体地址的高位,而将校验数据的体地址的低位设为指定值;将第一写命令指示的行地址的低位部分与第一写命令指示的体地址组合作为写命令的数据及其校验数据的行地址;将第一写命令指示的行地址的高位部分与第一写命令指示的列地址的低位部分组合作为写命令的数据的列地址,以及将指定值、第一写命令指示的行地址的高位部分与第一写命令指示的列地址的高位部分作为校验数据的列地址。
根据本申请的第四方面,提供了根据本申请第四方面的第一快速处理写命令的方法,包括:接收并缓存来自主设备的第一写命令;将接收的第一写命令的数据写入存储器中;对缓存的第一写命令的数据计算校验数据;根据生成的校验数据查询用于存储校验数据及其索引的高速缓存;若查询结果为命中,则用生成的校验数据对高速缓存中的校验数据进行更新;以及响应于将第一写命令的数据写入存储器,向主设备告知第一写命令处理完成。
根据本申请的第四方面的第一快速处理写命令的方法,提供了根据本申请第四方面的第二快速处理写命令的方法,还包括:若查询结果为未命中,则用生成的校验数据对高速缓存进行替换。
根据本申请的第四方面的第二快速处理写命令的方法,提供了根据本申请第四方面的第三快速处理写命令的方法35.根据权利要求34所述的方法,其特征在于,对高速缓存进行替换包括:选取高速缓存行;将该高速缓存行中的校验数据写入存储器;以及将生成的校验数据写入该高速缓存行。
根据本申请的第四方面的第一至第三之一的快速处理写命令的方法,提供了根据本申请第四方面的第四快速处理写命令的方法还包括:若第一写命令的数据长度大于校验数据保护单元的数据长度,将第一写命令拆分为多个子写命令,每一个子写命令的长度等于校验数据保护单元的数据长度;为每一个子写命令生成用于将该子写命令的数据写入存储器的第二写命令;对每个子写命令的数据分别计算校验数据;根据生成的校验数据查询用于存储每个子写命令对应的校验数据及其索引的高速缓存;若查询结果为命中,则用生成的校验数据更新高速缓存中的校验数据;以及响应于将属于第一写命令所有子写命令的数据均写入存储器,向主设备告知第一写命令处理完成。
根据本申请的第四方面的第四快速处理写命令的方法,提供了根据本申请第四方面的第五快速处理写命令的方法还包括:若拆分后的第一子写命令的数据小于一个校验数据保护单元对应的数据长度,则暂停处理第一子写命令;直到用其他写命令的数据将第一子写命令补足到一个校验数据保护单元的数据长度。
根据本申请的第四方面的第四或第五快速处理写命令的方法,提供了根据本申请第四方面的第六快速处理写命令的方法,还包括:若查询结果为未命中,则用生成的校验数据对高速缓存进行替换。
根据本申请的第四方面的第六快速处理写命令的方法,提供了根据本申请第四方面的第七快速处理写命令的方法,其中对高速缓存进行替换包括:选取一个高速缓存行;将该高速缓存行中的校验数据写入存储器中;以及将生成的校验数据写入该高速缓存行中。
根据本申请的第五方面,提供了根据本申请第五方面的第一快速处理读命令的方法,包括:接收来自主设备的读命令;根据读命令指示的地址读取要访问的数据;根据读命令指示的地址作为索引查询用于存储校验数据及其索引的高速缓存;若查询结果为命中,从高速缓存中读取命中的校验数据;根据所读取的命中的校验数据对要访问的数据进行校验,以及将要访问的数据提供给主设备。
根据本申请的第五方面的第一快速处理读命令的方法,提供了根据本申请第五方面的第二快速处理读命令的方法,还包括:若查询结果为未命中,则用从根据读命令指示的地址计算出的校验数据的地址读取校验数据,并用所读取的校验数据对高速缓存进行替换;以及依据所读取的校验数据对要访问的数据进行校验。
根据本申请的第五方面的第二快速处理读命令的方法,提供了根据本申请第五方面的第三快速处理读命令的方法,其中对高速缓存进行替换还包括:选取高速缓存行;将该高速缓存行中的校验数据写入存储器中;以及将从根据读命令指示的地址计算出的校验数据的地址中所读取的校验数据写入该高速缓存行。
根据本申请的第六方面,提供了根据本申请第六方面的第一写命令处理装置,包括:命令缓存模块,用于接收并缓存来自主设备的第一写命令;数据写入模块,用于将接收的第一写命令的数据写入存储器中;校验数据计算模块,用于对缓存的第一写命令的数据计算校验数据;命令生成模块,用于生成将第一写命令的校验数据写入存储器的第二写命令,并发送给存储器;数据写入模块,还用于将第一写命令的校验数据写入存储器,以及响应于将第一写命令的数据和校验数据均写入存储器,向主设备告知第一写命令处理完成。
根据本申请的第七方面,提供了根据本申请第七方面的第一读命令处理装置,包括:命令接收模块,用于接收来自主设备的读命令;校验数据地址计算模块,用于根据读命令指示的地址计算校验数据的地址;数据读取模块,用于根据读命令指示的地址读取要访问的数据,以及从校验数据的地址中读取校验数据;校验数据计算模块,用于依据所读取的校验数据对要访问的数据进行校验计算,并将校验结果提供给主设备。
根据本申请的第八方面,提供了根据本申请第八方面的第一不完全写命令的处理装置,包括:命令缓存模块,用于接收并缓存来自主设备的第一写命令;数据读取模块,用于根据第一写命令的无效数据和/或空缺数据的地址,从存储器中读出第一数据和第一校验数据;校验数据计算模块,用于根据第一校验数据对第一数据做校验计算,得到该无效数据和/或空缺数据的地址所对应的正确数据;数据合并模块,用于将该无效数据和/或空缺数据的地址所对应的正确数据与第一写命令要写入的数据合并,生成第二数据;校验数据计算模块,还用于对第二数据计算校验数据,以及数据写入模块,用于将第二数据和第二校验数据写入存储器。
根据本申请的第九方面,提供了根据本申请第九方面的第一快速处理写命令的装置,包括:命令缓存模块,用于接收并缓存来自主设备的第一写命令;数据写入模块,用于将接收的第一写命令的数据写入存储器中;校验数据计算模块,用于对缓存的第一写命令的数据计算校验数据;校验数据查询模块,用于根据生成的校验数据查询用于存储校验数据及其索引的高速缓存;校验数据更新模块,用于若查询结果为命中,则用生成的校验数据对高速缓存中的校验数据进行更新;以及数据写入模块,用于将第一写命令的数据写入存储器,以及响应于将第一写命令的数据写入存储器,向主设备告知第一写命令处理完成。
根据本申请的第十方面,提供了根据本申请第十方面的第一快速处理读命令的装置,包括:命令接收模块,用于接收来自主设备的读命令;数据读取模块,用于根据读命令指示的地址读取要访问的数据;校验数据查询模块,用于根据读命令指示的地址作为索引查询用于存储校验数据及其索引的高速缓存;校验数据读取模块,用于若查询结果为命中,从高速缓存中读取命中的校验数据;数据校验模块,用于根据所读取的命中的校验数据对要访问的数据进行校验,以及将要访问的数据提供给主设备。
根据本申请的第十一方面,提供了根据本申请第十一方面的第一固态存储设备,包括存储器子系统,主设备与存储器子系统耦合到总线,存储器子系统包括存储器控制器和存储器,存储器控制器将存储器耦合到总线,存储器子系统还包括错误数据校验模块,错误数据校验模块分别耦合到总线与存储器控制器,并桥接总线与存储器控制器,错误数据校验模块与总线按总线协议交互,错误数据校验模块与存储器控制器也按总线协议交互。其中,错误数据校验模块,还用于执行根据本申请第一方面、第二方面或第三方面的方法。
根据本申请的第十一方面的第一固态存储设备,提供了根据本申请第十一方面的第二固态存储设备,还包括:校验数据高速缓存模块,用于存储校验数据及其索引。错误数据校验模块,还用于执行根据本申请第五方面或第六方面的方法。
根据本申请的第十二方面,提供了根据本申请第十二方面的第一存储有程序代码的计算机可读存储介质,当所述程序代码被载入固态存储设备并在固态存储设备上执行时,所述程序代码使所述固态存储设备执行根据本申请第一方面的写命令处理方法。
根据本申请的第十三方面,提供了根据本申请第十三方面的第一存储有程序代码的计算机可读存储介质,当所述程序代码被载入固态存储设备并在固态存储设备上执行时,所述程序代码使所述固态存储设备执行根据本申请第二方面的读命令处理方法。
根据本申请的第十四方面,提供了根据本申请第十四方面的第一存储有程序代码的计算机可读存储介质,当所述程序代码被载入固态存储设备并在固态存储设备上执行时,所述程序代码使所述固态存储设备执行根据本申请第三方面的不完全写命令处理方法。
根据本申请的第十五方面,提供了根据本申请第十五方面的第一存储有程序代码的计算机可读存储介质,当所述程序代码被载入固态存储设备并在固态存储设备上执行时,所述程序代码使所述固态存储设备执行根据本申请第四方面的快速处理写命令的方法。
根据本申请的第十六方面,提供了根据本申请第十六方面的第一存储有程序代码的计算机可读存储介质,当所述程序代码被载入固态存储设备并在固态存储设备上执行时,所述程序代码使所述固态存储设备执行根据本申请第五方面的快速处理读命令的方法。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为根据本申请实施例的电子系统的框图;
图2为根据本申请实施例的ECC模块处理写命令与读命令的流程图;
图3是根据本申请实施例的ECC模块处理不完全写命令(Partial Write)的流程图;
图4为现有技术的存储器中的原始数据与校验数据的排布示意图;
图5为根据本申请一个实施例的地址映射方式的示意图;
图6为根据本申请另一实施例的地址映射方式的示意图;
图7为根据本申请又一实施例的地址映射方式的示意图;
图8为根据本申请实施例的又一电子系统的框图;
图9为根据本申请实施例的带ECC高速缓存的ECC模块的处理写命令与读命令的流程图;
图10为根据本申请又一实施例的带ECC高速缓存的ECC模块的处理写命令与读命令的流程图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
实施例一
图1为根据本申请实施例的电子系统的框图。在图1示出的电子系统中,主设备101与存储器子系统耦合到总线(例如AXI(Advanced Extensible Interface)总线102)。存储器子系统包括ECC模块103、SDRAM(Synchronous Dynamic Random Access Memory)控制器104与SDRAM105。SDRAM控制器104将SDRAM105耦合到总线。SDRAM控制器104与SDRAM105均不具备ECC功能。ECC模块103耦合到总线与SDRAM控制器104,并桥接总线与SDRAM控制器104。ECC模块103与总线按总线协议交互,而ECC模块103与SDRAM控制器104也按总线协议交互,从而无须修改原本直接耦合到总线的SDRAM控制器104。
可选地,ECC模块103集成到总线,并按总线协议与SDRAM控制器104交互,从而依然无须修改原本直接耦合到总线的SDRAM控制器104。
实施例二
图2为根据本申请实施例的ECC模块处理写命令与读命令的流程图。图2示出了主设备101、ECC模块103和SDRAM控制器104。根据本申请的实施例,ECC模块103用于实现存储器的错误检查与校正功能,通过ECC模块103与主设备101和SDRAM控制器104的交互来实现对写命令与读命令的处理。.图2中的各交互步骤按照从上向下逐渐递增的时序进行。
根据本申请实施例的一个例子,ECC模块103对写命令进行处理。ECC模块103接收并缓存来自主设备101的写命令(参看图2,步骤(1)),若写命令为长的突发(burst)写命令,例如写命令的数据(原始数据)长度大于8字节(8字节是例如总线宽度,或者数据保护单元的数据部分大小),将长的突发(burst)写命令拆分为多个8字节的短的突发(burst)写命令。接下来,ECC模块为每8字节原始数据计算1字节校验数据。ECC模块还为每8字节原始数据,生成用于将每8字节原始数据写入SDRAM的写命令,并发送给SDRAM控制器104(参看图2,步骤(2));以及为每1字节校验数据生成用于将每一字节校验数据写入SDRAM的写命令,并发送给SDRAM控制器104(参看图2,步骤(3))。
响应于将步骤(1)的写命令的所有原始数据与校验数据均写入SDRAM(参看图2,步骤(4)和步骤(5)),ECC模块103向主设备101告知写命令处理完成(参看图2,步骤(6))。
可选地,ECC模块103将从多个8字节原始数据得到的1字节校验数据组合。并为组合后的校验数据生成用于将校验数据写入SDRAM的写命令,并发送给SDRAM控制器104(参看图2,步骤(3))。例如,ECC模块103将8个1字节校验数据组合在一起,通过一条写命令发送给SDRAM控制器104,从而充分利用总线的位宽。
可选地,若写命令的数据长度不足一个数据保护单元的数据部分的大小(例如,8字节),则ECC模块103依据该写命令所指示的地址,从存储器中该地址所指示的完整的数据保护单元中读出数据及其校验数据,得到该地址的正确数据;然后将该地址的正确数据同写命令要写入的数据合并,以补足数据保护单元的数据部分的大小。接下来,ECC模块103生成用于将合并后的8字节数据写入SDRAM的写命令,并发送给SDRAM控制器104;以及对合并后的8字节数据计算校验数据,生成用于将校验数据写入SDRAM的写命令,并发送给SDRAM控制器104。
根据本申请实施例的又一个例子,ECC模块103对读命令进行处理。ECC模块103接收来自主设备101的读命令,读命令中指示了要访问的数据的地址(参看图2,步骤(7))。然后ECC模块103根据读命令指示的地址,计算对应校验数据的存储地址,并从读命令指示的地址读取数据(参看图2,步骤(8)),以及从存储校验数据的存储地址读取校验数据(参看图2,步骤(9))。响应于对读命令要访问的数据及其校验数据均读取完成后(参看图2,步骤(10)和步骤(11)),ECC模块103依据读取的校验数据对要访问的数据进行校验,并将正确的数据提供给主设备101(参看图2,步骤(12))。可选地,若校验结果指示数据错误,ECC模块103向主设备101指示发生ECC校验错误。
可选地,若读命令要读取的数据不足一个数据保护单元的数据部分的大小(例如8字节),或者跨越了数据保护单元的边界,ECC模块根据读命令指示的地址读取完整的数据保护单元(包括校验数据),对读取的数据进行校验,并将读命令要读取的正确数据提供给主设备101。
实施例三
图3是根据本申请实施例的ECC模块处理不完全写命令(Partial Write)的流程图。图3示出了主设备101、ECC模块103和SDRAM控制器104,根据本申请的实施例,ECC模块103用于实现存储器的错误检查与校正功能,由ECC模块103与主设备和SDRAM控制器104交互,来实现对不完全写命令的处理。图3中的各交互步骤按照从上向下逐渐递增的时序进行。
在根据本申请的实施例中,ECC模块103对不完全写命令进行处理。ECC模块103接收并缓存来自主设备101的写命令(参看图3,步骤(1))。若写命令为长的突发(burst)写命令,将长的突发(burst)写命令拆分为多个8字节的短的突发(burst)写命令。若每个8字节原始数据中有部分数据是无效(或空缺)的,例如,连续的8字节原始数据中第3字节是无效(或空缺)的,无效数据不应被写入存储器。其中,可以通过监视AXI总线的WSTRB信号而识别无效数据。ECC模块103依据无效(或空缺)数据的地址,从存储器读出对应的数据以及校验数据,得到该地址的正确数据(参看图3,步骤(2)至步骤(5));并将该地址的正确数据同写命令要写入的原始数据合并(参看图3,步骤(6)),以用该地址的正确数据填充原始数据中的无效(或空缺)部分。
可选地,虽然连续的8字节原始数据中仅第3字节是无效(或空缺)的,在图3的步骤(4)中从存储器读出8字节数据,并用其中对应于原始数据的第3字节的部分填充原始数据中的无效(或空缺)部分。
接下来,ECC模块103为每8字节(作为举例)要写入的数据,生成用于将每8字节原始数据或合并后的数据写入SDRAM的写命令,并发送给SDRAM控制器104(参看图3,步骤(7));以及对每8字节数据计算校验数据,以及生成用于将校验数据写入SDRAM的写命令,发送给SDRAM控制器104(参看图3,步骤(8))。
可选地,ECC模块103将从多个8字节原始数据得到的1字节校验数据组合。并为组合后的校验数据生成用于将校验数据写入SDRAM的写命令,并发送给SDRAM控制器104(参看图3,步骤(8))。
响应于将写命令的所有原始数据与校验数据均写入SDRAM(参看图3,步骤(9)和步骤(10)),ECC模块103向主设备101告知写命令处理完成(参看图3,步骤(11))。
若写入数据不足一个数据保护单元的数据部分的大小,等待其他命令的写数据来补足。或者若写入数据不足一个数据保护单元的数据部分的大小,依据写入数据的地址从存储器中读出数据及其校验数据,并将经过校验的正确的读出数据与写入数据合并,来将写入数据补足数据保护单元大小。
实施例四
现有技术中提供了原始数据与校验数据的地址映射方案,将校验数据与原始数据写入相同的存储器页,从而减少向存储器写入数据过程中的预充电(PreCharge)命令执行次数,以降低数据写入存储器过程的延迟。
图4为现有技术的存储器中的原始数据与校验数据的排布示意图。图4展示了存储器的1个存储器页中的数据,按从下到上的方向存储器地址单调递增。原始数据402与校验数据ECC 412组成一个数据保护单元,其中由ECC模块根据主设备写入的原始数据(402)生成校验数据(ECC 412)。类似地,原始数据404与校验数据ECC 414是一个数据保护单元,原始数据406与校验数据ECC 416是一个数据保护单元,原始数据408与校验数据ECC 418是一个数据保护单元。作为举例,数据保护单元具有相同的大小,原始数据402的大小是8字节,而校验数据ECC 412的大小是1字节。组成一个数据保护单元的原始数据与其校验数据不相邻存储,且位于相同的存储器页内。通过交换地址的部分比特来确定组成数据保护单元的原始数据与其校验数据在存储器中的地址。
然而,将原始数据与校验数据放置在相同的存储器页内,使得对原始数据与校验数据的访问串行化。以及一些应用已经为存储器的页大小做了优化。例如,存储器的页大小是2KB(千字节),而应用产生的数据大小同为2KB,或者数据大小的倍数为2KB,例如,SATA(Serial Advanced Technology Attachment,串行高级技术附件)、NVMe(Non-VolatileMemory express,非易失性存储器标准)等存储协议支持的扇区大小为512字节。当存储页的部分被用于存储校验数据时,应用为存储器的页大小所做的优化将引入负面影响。
在根据本申请的实施例中,对校验数据与原始数据在存储器中的布置方式做出优化,以提升存储器的使用效率。
图5展示了根据本申请一个实施例的地址映射方式的示意图。ECC模块根据接收到的原始地址生成存储原始数据的数据地址以及存储校验数据的校验数据地址。原始地址的部分地址空间是用户不可使用的,作为举例,原始地址的最高三位A[28:26]=3’b111的部分地址空间被保留用于存储校验数据,因而接收到的原始地址的第26到28位不会等于“111”。
图5的例子中,将原始地址的第26到28位作为存储原始数据的数据地址的体(Bank)地址部分,而将存储校验数据的校验数据地址的体(Bank)地址部分设置为全1(“111”)。从而将原始数据与校验数据放置在存储器的不同的体(Bank)中,而存储器的每个页(行)的存储空间被完整用于存储原始数据,从而应用为存储器的页大小所做的优化可得以实施。
参看图5,存储原始数据的数据地址的行地址部分,同存储校验数据的校验数据地址的行地址部分可以相同,从而原始数据与校验数据被存储在相同的行地址处,可由一条预充电(Precharge)命令操作原始数据与校验数据被存储的行。
还参看图5,存储校验数据的校验数据地址的列地址部分,由存储原始数据的数据地址的体地址(A28、A27与A26)部分以及存储原始数据的原始地址的列地址的高位(A11-A5)部分组成。作为举例,为每8字节原始数据提供1字节校验数据,因而校验数据地址的列地址中不包括原始地址的列地址的低3位(8=2^3)。若为每16字节原始数据提供1字节校验数据,则校验数据地址的列地址中不包括原始地址的列地址的低4位。
以及,图5的例子中,将原始地址的A28-A26位为“111”的地址空间保留给校验数据。可以理解地,可将原始地址空间的任意部分保留给校验数据,例如,A[28:26]=3’b000或者A[11:9]=3’b111。以及将原始地址空间的被保留给校验数据的部分所对应的地址范围用作校验数据地址的体地址。
实施例五
图6展示了根据本申请另一实施例的地址映射方式的示意图。原始地址的部分地址空间是用户不可使用的,作为举例,原始地址的最高三位A[28:26]=3’b111的部分地址空间被保留用于存储校验数据,因而接收到的原始地址的第26到28位不会等于“111”。
在图6的例子中,将原始地址的A11到A9位作为存储原始数据的数据地址的体(Bank)地址部分,而将存储校验数据的校验数据地址的体(Bank)地址部分设置原始地址的A11到A9位的值加1(或其他指定值m,其中,m为正整数)。从而将原始数据与校验数据放置在存储器的相邻的体(Bank)中。
参看图6,存储原始数据的数据地址的行地址部分,同存储校验数据的校验数据地址的行地址部分可以相同,从而原始数据与校验数据被存储在相同的行地址处,可由一条预充电(Precharge)命令操作原始数据与校验数据被存储的行。
还参看图6,存储校验数据的校验数据地址的列地址,由原始地址空间被保留用于存储校验数据的部分的地址位(在本例中,对应于A[28:26]的“111”)同存储原始数据的数据地址的列地址的高位(A28-A26与A8-A5)部分组成。
实施例六
图7展示了根据本申请又一实施例的地址映射方式的示意图。原始地址的部分地址空间是用户不可使用的,作为举例,原始地址的最高三位A[28:26]=3’b111的部分地址空间被保留用于存储校验数据,因而接收到的原始地址的第26到28位不会等于“111”。
在图7的例子中,将原始地址的A11、A10与A26作为存储原始数据的数据地址的体(Bank)地址部分,而将存储校验数据的校验数据地址的体(Bank)地址部分设置为原始地址的A11到A10位,以及将存储校验数据的地址的体地址的最低(一或多)位固定为“1”(或其他指定值m,其中,m为正整数)。可以理解地,若原始地址空间的A[28:26]=3’b110的部分被保留用于存储校验数据,则可将存储校验数据的校验数据地址的体地址的最低位固定为“0”(原始地址被保留给校验数据的A[26]的值)。
参看图7,存储原始数据的数据地址的行地址,同存储校验数据的校验数据地址的行地址可以相同,从而原始数据与校验数据被存储在相同的行地址处,可由一条预充电(Precharge)命令操作原始数据与校验数据被存储的行。
还参看图7,存储原始数据的数据地址的列地址,由对应于原始地址空间被保留用于存储校验数据的部分的地址位的部分(在本例中,对应于A[28:27]的“11”)、存储原始数据的数据地址的体地址的部分(A26)以及存储原始数据的数据地址的列地址的高位部分(A28、A27、A9-A5)组成。
在图7的例子中,对于原始地址A26为0的访问请求,其原始数据与校验数据存储在不同的存储器体(Bank)的相同页(行)中;而对于原始地址A26为1的访问请求,其原始数据与校验数据存储在相同存储器体的相同页(行)中。对于这两种情况,存储器访问性能会不同。
实施例七
图8为根据本申请实施例的又一电子系统的框图。在图8示出的电子系统中,主设备101与存储器子系统耦合到总线(例如AXI总线102)。存储器子系统包括ECC模块103、SDRAM控制器104与SDRAM105。SDRAM控制器104将SDRAM105耦合到总线。SDRAM控制器104与SDRAM 105均不具备ECC功能。ECC模块103耦合到总线与SDRAM控制器104,并桥接总线与SDRAM控制器104。ECC模块103与总线按总线协议交互,而ECC模块103与SDRAM控制器104也按总线协议交互,从而无须修改原本直接耦合到总线的SDRAM控制器104。
可选地,ECC模块103集成到总线,并按总线协议与SDRAM控制器104交互,从而依然无须修改原本直接耦合到总线的SDRAM控制器104。
ECC模块103还包括ECC高速缓存106。ECC高速缓存106中存储校验数据及其地址,以地址作为索引,可以快速获取校验数据。依据主设备101发出的写命令或读命令,ECC高速缓存106可指示是否命中。ECC高速缓存106中存储校验数据而不存储原始数据。通过提供ECC高速缓存106,减少了ECC模块103与SDRAM控制器104之间用于校验数据的读、写命令。
实施例八
图9为根据本申请实施例的带ECC高速缓存的ECC模块的处理写命令与读命令的流程图。图9示出了主设备101、ECC模块103和SDRAM控制器104。ECC模块103用于实现存储器的错误检查与校正功能。ECC模块103包括ECC高速缓存106(也参看图8)。根据本申请的实施例,由ECC模块103与主设备101和SDRAM控制器104交互,实现对访问SDRAM105的写命令与读命令的处理。图9中的各交互步骤按照从上向下逐渐递增的时序进行。
根据本申请实施例的一个例子,ECC模块103对写命令进行处理。ECC模块103接收并缓存来自主设备101的写命令(参看图9,步骤(1)),若写命令为长的突发(burst)写命令,将长的突发(burst)写命令拆分为多个8字节的短的突发(burst)写命令。接下来,ECC模块103为每8字节原始数据,生成用于将每8字节原始数据写入SDRAM 105的写命令,并发送给SDRAM控制器104(参看图9,步骤(2));以及为每8字节原始数据计算1字节校验数据,并根据写命令指示的原始地址、从原始地址得到的数据地址(参看图5到图7)和/或从原始地址得到的校验数据地址查询ECC高速缓存106,若ECC高速缓存106命中,将生成的校验数据更新ECC高速缓存106(参看图9,步骤(3))。
响应于将写命令的所有原始数据写入SDRAM 105(参看图9,步骤(4)),ECC模块103向主设备101告知写命令处理完成(参看图9,步骤(5))。
根据本申请实施例的又一个例子,ECC模块103对读命令进行处理。ECC模块103接收来自主设备101的读命令,读命令中指示了要访问的数据的地址(参看图9,步骤(6))。ECC模块103根据读命令指示的原始地址,计算SDRAM中对应的数据地址,并从数据地址读取数据(参看图9,步骤(7))。ECC模块103还根据读命令指示的原始地址、从原始地址得到的数据地址(参看图5到图7)和/或从原始地址得到的校验数据地址查询ECC高速缓存106,若ECC高速缓存106命中,从ECC高速缓存106读取命中的校验数据(参看图9,步骤(8))。响应于对读命令要访问的数据读取完成后(参看图9,步骤(9)),ECC模块103依据从ECC高速缓存106获取的校验数据对从SDRAM 105读取的数据进行校验(参看图9,步骤(10)),并将正确的数据提供给主设备101(参看图9,步骤(11))。可选地,若校验结果指示数据错误,ECC模块103向主设备101指示发生ECC校验错误。
实施例九
图10为根据本申请又一实施例的带ECC高速缓存的ECC模块的处理写命令与读命令的流程图。图10示出了主设备101、ECC模块103和SDRAM控制器104。ECC模块103用于实现存储器的错误检查与校正功能。ECC模块103包括ECC高速缓存106(也参看图8)。根据本申请的实施例,由ECC模块103与主设备101和SDRAM控制器104交互,实现对访问SDRAM105的写命令与读命令的处理。图10中的各交互步骤按照从上向下逐渐递增的时序进行。
根据本申请实施例的一个例子,ECC模块103对写命令进行处理。ECC模块103接收并缓存来自主设备101的写命令(参看图10,步骤(1)),若写命令为长的突发(burst)写命令,将长的突发(burst)写命令拆分为多个8字节的短的突发(burst)写命令。接下来,ECC模块103为每8字节原始数据,生成用于将每8字节原始数据写入SDRAM 105的写命令,并发送给SDRAM控制器104(参看图10,步骤(2));以及对缓存的8字节数据计算校验数据,并根据写命令指示的原始地址、从原始地址得到的数据地址(参看图5到图7)和/或从原始地址得到的校验数据地址查询ECC高速缓存106,若ECC高速缓存106未命中(参看图10,步骤(3)),对ECC高速缓存106进行替换(参看图10,步骤(4))。
为对ECC高速缓存106进行替换,ECC模块103选择ECC高速缓存106的高速缓存行之一,将其中存储的校验数据写入SDRAM 105,并将依据缓存的8字节原始数据生成的校验数据写入被替换的高速缓存行(参看图10,步骤(5))。
响应于将写命令的所有原始数据写入SDRAM 105(参看图10,步骤(6)),ECC模块103向主设备101告知写命令处理完成(参看图10,步骤(7))。
根据本申请实施例的又一个例子,ECC模块103对读命令进行处理。ECC模块103接收来自主设备101的读命令,读命令中指示了要访问的数据的原始地址(参看图10,步骤(8))。ECC模块103根据读命令指示的原始地址,计算SDRAM中对应的数据地址,并从数据地址读取数据(参看图10,步骤(9))。ECC模块103还根据读命令指示的原始地址、从原始地址得到的数据地址(参看图5到图7)和/或从原始地址得到的校验数据地址查询ECC高速缓存106,若ECC高速缓存106未命中(参看图10,步骤(10)),对ECC高速缓存106进行替换(参看图10,步骤(11))。
为对ECC高速缓存106进行替换,ECC模块103选择ECC高速缓存106的高速缓存行之一,将其中存储的校验数据写入SDRAM105,依据从读命令指示的原始地址得到的校验数据地址从SDRAM105获取校验数据(参看图10,步骤(12)),并用获取的校验数据更新被替换的高速缓存行(参看图10,步骤(13))。
接下来,ECC模块103依据从SDRAM105或ECC高速缓存106获取的校验数据对从SDRAM 105读取的数据进行校验(参看图10,步骤(14)),并将正确的数据提供给主设备101(参看图10,步骤(15))。可选地,若校验结果指示数据错误,ECC模块103向主设备101指示发生ECC校验错误。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (10)

1.一种写命令的处理方法,其特征在于,包括:
接收并缓存来自主设备的第一写命令;
将接收的第一写命令的数据写入存储器中;
对缓存的第一写命令的数据计算校验数据;
生成用于将第一写命令的校验数据写入存储器的第二写命令,并发送给存储器:
响应于将第一写命令的数据和校验数据均写入存储器,向主设备告知第一写命令处理完成。
2.根据权利要求1所述的方法,其特征在于,还包括:
若第一写命令的数据长度大于校验数据保护单元的数据长度,将第一写命令的数据拆分为多段数据,每段数据的长度等于校验数据保护单元的数据长度;
为每段数据分别计算校验数据;
生成用于将由多段数据计算得到的多段校验数据一起写入存储器的第四写命令,并发送给存储器。
3.根据权利要求1-2之一所述的方法,其中,写命令的数据与其校验数据在存储器中具有不同的体地址以及相同的页地址。
4.一种读命令的处理方法,其特征在于,包括:
接收来自主设备的读命令;
根据读命令指示的地址计算校验数据的地址;
根据读命令指示的地址读取要访问的数据,以及从校验数据的地址中读取校验数据;
依据所读取的校验数据对要访问的数据进行校验计算,并将校验结果提供给主设备。
5.一种不完全写命令的处理方法,其特征在于,包括:
接收并缓存来自主设备的第一写命令;
根据第一写命令的无效数据和/或空缺数据的地址,从存储器中读出第一数据和第一校验数据;
根据第一校验数据对第一数据做校验计算,得到该无效数据和/或空缺数据的地址所对应的正确数据;
将该无效数据和/或空缺数据的地址所对应的正确数据与第一写命令要写入的数据合并,生成第二数据;
对第二数据计算校验数据,以及将第二数据和第二校验数据写入存储器。
6.根据权利要求5所述的方法,其特征在于,还包括:
若第二数据的长度大于校验数据保护单元的数据长度,将第二数据拆分为多段数据,每段数据的长度等于校验数据保护单元的数据长度;
为每段数据分别计算校验数据;
生成用于将由多段数据计算得到的多段校验数据一起写入存储器的第四写命令,并发送给存储器。
7.快速处理写命令的方法,其特征在于,包括:
接收并缓存来自主设备的第一写命令;
将接收的第一写命令的数据写入存储器中;
对缓存的第一写命令的数据计算校验数据;
根据生成的校验数据查询用于存储校验数据及其索引的高速缓存;
若查询结果为命中,则用生成的校验数据对高速缓存中的校验数据进行更新;以及
响应于将第一写命令的数据写入存储器,向主设备告知第一写命令处理完成。
8.根据权利要求7所述的方法,其特征在于,还包括:
若第一写命令的数据长度大于校验数据保护单元的数据长度,将第一写命令拆分为多个子写命令,每一个子写命令的长度等于校验数据保护单元的数据长度;
为每一个子写命令生成用于将该子写命令的数据写入存储器的第二写命令;
对每个子写命令的数据分别计算校验数据;
根据生成的校验数据查询用于存储每个子写命令对应的校验数据及其索引的高速缓存;
若查询结果为命中,则用生成的校验数据更新高速缓存中的校验数据;以及
响应于将属于第一写命令所有子写命令的数据均写入存储器,向主设备告知第一写命令处理完成。
9.一种写命令处理装置,其特征在于,包括:
命令缓存模块,用于接收并缓存来自主设备的第一写命令;
数据写入模块,用于将接收的第一写命令的数据写入存储器中;
校验数据计算模块,用于对缓存的第一写命令的数据计算校验数据;
命令生成模块,用于生成将第一写命令的校验数据写入存储器的第二写命令,并发送给存储器;
数据写入模块,还用于将第一写命令的校验数据写入存储器,以及响应于将第一写命令的数据和校验数据均写入存储器,向主设备告知第一写命令处理完成。
10.一种固态存储设备,包括存储器子系统,主设备与存储器子系统耦合到总线,存储器子系统包括存储器控制器和存储器,存储器控制器将存储器耦合到总线,其特征在于,存储器子系统还包括错误数据校验模块,错误数据校验模块分别耦合到总线与存储器控制器,并桥接总线与存储器控制器,错误数据校验模块与总线按总线协议交互,错误数据校验模块与存储器控制器按总线协议交互;错误数据校验模块,用于接收并缓存来自主设备的第一写命令;将接收的第一写命令的数据写入存储器中;对缓存的第一写命令的数据计算校验数据;生成用于将第一写命令的校验数据写入存储器的第二写命令,并发送给存储器;响应于将第一写命令的数据和校验数据均写入存储器,向主设备告知第一写命令处理完成。
CN201710211851.4A 2017-03-31 2017-03-31 为存储器提供ecc的方法与装置 Active CN108665939B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710211851.4A CN108665939B (zh) 2017-03-31 2017-03-31 为存储器提供ecc的方法与装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710211851.4A CN108665939B (zh) 2017-03-31 2017-03-31 为存储器提供ecc的方法与装置

Publications (2)

Publication Number Publication Date
CN108665939A true CN108665939A (zh) 2018-10-16
CN108665939B CN108665939B (zh) 2021-01-05

Family

ID=63784234

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710211851.4A Active CN108665939B (zh) 2017-03-31 2017-03-31 为存储器提供ecc的方法与装置

Country Status (1)

Country Link
CN (1) CN108665939B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110299183A (zh) * 2018-12-26 2019-10-01 贵阳忆芯科技有限公司 In-LineECC模块及其实现方法
CN110310693A (zh) * 2018-12-26 2019-10-08 贵阳忆芯科技有限公司 具有缓存的In-Line ECC模块
WO2021139443A1 (zh) * 2020-01-06 2021-07-15 支付宝(杭州)信息技术有限公司 数据访问控制方法及装置、数据访问设备及系统
EP4276640A1 (en) * 2022-05-11 2023-11-15 Horizon (Shanghai) Artificial Intelligence Technology Co., Ltd Storage device and method, electronic device, and storage medium

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10177800A (ja) * 1996-10-21 1998-06-30 Texas Instr Inc <Ti> エラー訂正ダイナミック・メモリ及びそのエラー訂正方法
US5959914A (en) * 1998-03-27 1999-09-28 Lsi Logic Corporation Memory controller with error correction memory test application
CN101715575A (zh) * 2006-12-06 2010-05-26 弗森多系统公司(dba弗森-艾奥) 采用数据管道管理数据的装置、系统和方法
CN102129873A (zh) * 2011-03-29 2011-07-20 西安交通大学 提高计算机末级高速缓存可靠性的数据压缩装置及其方法
CN102541678A (zh) * 2011-12-30 2012-07-04 中国人民解放军国防科学技术大学 多通道与非型快闪并行存储控制器
CN103279401A (zh) * 2013-05-31 2013-09-04 华为技术有限公司 一种访问存储器的方法及装置
US8555143B2 (en) * 2008-12-22 2013-10-08 Industrial Technology Research Institute Flash memory controller and the method thereof
CN104298572A (zh) * 2013-07-19 2015-01-21 杨凤兰 一种纠错方法、装置和系统
CN104991833A (zh) * 2015-06-15 2015-10-21 联想(北京)有限公司 一种错误检测方法及电子设备
CN105788648A (zh) * 2014-12-25 2016-07-20 研祥智能科技股份有限公司 基于异构混合内存的nvm坏块识别处理及纠错方法和系统
CN105931673A (zh) * 2015-02-27 2016-09-07 爱思开海力士有限公司 数据储存器件及其操作方法
CN106021035A (zh) * 2016-05-25 2016-10-12 浪潮电子信息产业股份有限公司 一种实现在内存颗粒进行故障校验以增强模组条稳定性的方法
CN106033681A (zh) * 2015-03-16 2016-10-19 群联电子股份有限公司 存储器控制电路单元、存储器储存装置及数据存取方法

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10177800A (ja) * 1996-10-21 1998-06-30 Texas Instr Inc <Ti> エラー訂正ダイナミック・メモリ及びそのエラー訂正方法
US5959914A (en) * 1998-03-27 1999-09-28 Lsi Logic Corporation Memory controller with error correction memory test application
CN101715575A (zh) * 2006-12-06 2010-05-26 弗森多系统公司(dba弗森-艾奥) 采用数据管道管理数据的装置、系统和方法
US8555143B2 (en) * 2008-12-22 2013-10-08 Industrial Technology Research Institute Flash memory controller and the method thereof
CN102129873A (zh) * 2011-03-29 2011-07-20 西安交通大学 提高计算机末级高速缓存可靠性的数据压缩装置及其方法
CN102541678A (zh) * 2011-12-30 2012-07-04 中国人民解放军国防科学技术大学 多通道与非型快闪并行存储控制器
CN103279401A (zh) * 2013-05-31 2013-09-04 华为技术有限公司 一种访问存储器的方法及装置
CN104298572A (zh) * 2013-07-19 2015-01-21 杨凤兰 一种纠错方法、装置和系统
CN105788648A (zh) * 2014-12-25 2016-07-20 研祥智能科技股份有限公司 基于异构混合内存的nvm坏块识别处理及纠错方法和系统
CN105931673A (zh) * 2015-02-27 2016-09-07 爱思开海力士有限公司 数据储存器件及其操作方法
CN106033681A (zh) * 2015-03-16 2016-10-19 群联电子股份有限公司 存储器控制电路单元、存储器储存装置及数据存取方法
CN104991833A (zh) * 2015-06-15 2015-10-21 联想(北京)有限公司 一种错误检测方法及电子设备
CN106021035A (zh) * 2016-05-25 2016-10-12 浪潮电子信息产业股份有限公司 一种实现在内存颗粒进行故障校验以增强模组条稳定性的方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110299183A (zh) * 2018-12-26 2019-10-01 贵阳忆芯科技有限公司 In-LineECC模块及其实现方法
CN110310693A (zh) * 2018-12-26 2019-10-08 贵阳忆芯科技有限公司 具有缓存的In-Line ECC模块
CN110310693B (zh) * 2018-12-26 2021-01-08 上海忆芯实业有限公司 具有缓存的In-Line ECC模块
CN112530509A (zh) * 2018-12-26 2021-03-19 上海忆芯实业有限公司 为存储设备提供ecc的方法、ecc模块及存储设备
CN110299183B (zh) * 2018-12-26 2024-01-30 贵阳忆芯科技有限公司 In-LineECC模块及其实现方法
WO2021139443A1 (zh) * 2020-01-06 2021-07-15 支付宝(杭州)信息技术有限公司 数据访问控制方法及装置、数据访问设备及系统
EP4276640A1 (en) * 2022-05-11 2023-11-15 Horizon (Shanghai) Artificial Intelligence Technology Co., Ltd Storage device and method, electronic device, and storage medium

Also Published As

Publication number Publication date
CN108665939B (zh) 2021-01-05

Similar Documents

Publication Publication Date Title
US10296224B2 (en) Apparatus, system and method for increasing the capacity of a storage device available to store user data
US10496334B2 (en) Solid state drive using two-level indirection architecture
US10481837B2 (en) Data storage device and method for operating data storage device with efficient trimming operations
US8417914B2 (en) Memory address translation
US8266385B2 (en) Technique and apparatus for identifying cache segments for caching data to be written to main memory
CN108665939A (zh) 为存储器提供ecc的方法与装置
US20080189490A1 (en) Memory mapping
CN109582214B (zh) 数据访问方法以及计算机系统
US20150039907A1 (en) Method of Adapting a Uniform Access Indexing Process to a Non-Uniform Access Memory, and Computer System
CN107818052B (zh) 内存访问方法及装置
CN109952565B (zh) 内存访问技术
CN103999057B (zh) 具有开关的相变存储器(pcms)的元数据管理和支持
CN110018971B (zh) 缓存替换技术
JP2017519286A5 (zh)
CN102792284A (zh) 存储器设备耗损均衡技术
US8892816B1 (en) System and method for writing data to a memory
AU2247492A (en) Improving computer performance by simulated cache associativity
JP2007048296A (ja) 複数のアドレス・キャッシュ・エントリーを無効にする方法、装置およびシステム
JP2020154603A (ja) メモリシステム
JP3929872B2 (ja) キャッシュメモリ、プロセッサ及びキャッシュ制御方法
JP4743174B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP2012058770A (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4737223B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US9934150B1 (en) Data caching circuit and method
CN214376421U (zh) Ftl加速器及控制部件

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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 361000 Xiamen, Fujian, China (Fujian) free trade trial area Xiamen area (bonded port area), South Sea Road two Road 45, 4 Building 03 unit F0100

Applicant after: Xiamen Jingcun Semiconductor Technology Co., Ltd

Address before: 361000 China (Fujian) free trade pilot area Xiamen area (bonded port area) two South Sea Road 45 Road 4 Building 03 unit F0100

Applicant before: XIAMEN KINGBLAZE TECHNOLOGY Co.,Ltd.

GR01 Patent grant
GR01 Patent grant