CN116932275B - 一种数据刷洗控制方法、ddr控制器和片上*** - Google Patents
一种数据刷洗控制方法、ddr控制器和片上*** Download PDFInfo
- Publication number
- CN116932275B CN116932275B CN202311175982.3A CN202311175982A CN116932275B CN 116932275 B CN116932275 B CN 116932275B CN 202311175982 A CN202311175982 A CN 202311175982A CN 116932275 B CN116932275 B CN 116932275B
- Authority
- CN
- China
- Prior art keywords
- brushing
- data
- module
- read
- command queue
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 53
- 238000005201 scrubbing Methods 0.000 title claims abstract description 49
- 230000001680 brushing effect Effects 0.000 claims abstract description 123
- 238000012795 verification Methods 0.000 claims description 26
- 238000012545 processing Methods 0.000 claims description 13
- 230000004044 response Effects 0.000 claims description 6
- 230000001360 synchronised effect Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000012937 correction Methods 0.000 description 3
- 238000003672 processing method Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1044—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1048—Adding 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
- G06F11/106—Correcting systematically all correctable errors, i.e. scrubbing
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请公开了一种数据刷洗控制方法、DDR控制器和片上***,该方法包括:当寄存器接收到刷洗使能指令时,寄存器将刷洗使能指令发送给刷洗模块;刷洗模块根据刷洗使能指令,生成针对目标存储空间中的各个地址空间的读请求,并向命令队列连续发送读请求;命令队列将读请求发送给目标存储空间中的各个地址空间,以使地址空间根据读请求返回读数据。本方案在接收到刷洗使能指令时,对目标存储空间中的各个地址空间连续发送读请求,以根据返回的读数据进行刷洗操作。本方案连续向命令队列发送读请求,使得整个目标存储空间的刷洗过程仅需使能指令触发一次即可自动执行,后续无需软件介入,提高了操作效率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据刷洗控制方法、DDR控制器和片上***。
背景技术
ECCScrub(ECC刷洗)功能是DRAM(DynamicRandomAccessMemory,动态随机存取内存)的RAS(Reiabiity、AvaiabiityandServiceabiity,可靠性、可用性和可维护性)技术的重要一环,该功能会定期读取DRAM的每个位置并进行ECC校验。通过遍历整个DRAM,可以保持内存完整性,并降低出现不可纠正错误的可能性。
发明人在研究相关技术过程中发现,目前市面上大多数的ECCScrub功能解决方案中,ECCScrub操作的触发只能由软件来进行触发,触发完成一次之后无法再次自动进行ECCScrub操作。这在一些环境较为恶劣,数据被打翻的可能性较大的场景中需要多次软件介入,降低了操作效率。
发明内容
本申请旨在至少解决现有技术中存在的技术问题,为此,本申请第一方面提出一种数据刷洗控制方法,应用于DDR控制器,所述DDR控制器包括寄存器、刷洗模块和命令队列,所述方法包括:
当所述寄存器接收到刷洗使能指令时,所述寄存器将所述刷洗使能指令发送给所述刷洗模块;
所述刷洗模块根据所述刷洗使能指令,生成针对目标存储空间中的各个地址空间的读请求,并向所述命令队列连续发送所述读请求;所述目标存储空间为预先指定的需要进行刷洗操作的存储空间;
所述命令队列将所述读请求发送给所述目标存储空间中的各个地址空间,以使所述地址空间根据所述读请求返回读数据。
在本申请实施例中,当所述寄存器接收到刷洗使能指令时,所述寄存器将所述刷洗使能指令发送给所述刷洗模块;所述刷洗模块根据所述刷洗使能指令,生成针对目标存储空间中的各个地址空间的读请求,并向所述命令队列连续发送所述读请求;所述目标存储空间为预先指定的需要进行刷洗操作的存储空间;所述命令队列将所述读请求发送给所述目标存储空间中的各个地址空间,以使所述地址空间根据所述读请求返回读数据。本方案在接收到刷洗使能指令时,对目标存储空间中的各个地址空间连续发送读请求,以根据返回的读数据进行刷洗操作。本方案连续向命令队列发送读请求,使得整个目标存储空间的刷洗过程仅需使能指令触发一次即可自动执行,后续无需软件介入,提高了操作效率。
在一种可能的实施方式中,所述向所述命令队列连续发送所述读请求,包括:
当所述刷洗模块确定当前处于空闲状态时,所述刷洗模块向所述命令队列连续发送所述读请求;
所述空闲状态为所述命令队列当前未接收到新的读写请求,且已接收到的读写请求已响应完成、所述命令队列为空的状态。
在本申请实施例中,在连续执行刷洗操作的过程中,读请求的请求量比较大,会影响主通路的带宽。为了保证尽可能少的影响主通路的带宽,优先采用空闲模式发送读请求,以降低频繁的刷洗操作对带宽的影响。
在一种可能的实施方式中,所述向所述命令队列连续发送所述读请求,包括:
所述刷洗模块周期性地向所述命令队列连续发送所述读请求,其中,每隔一个周期所述读请求对应的地址空间递增,直至遍历所述目标存储空间的各个地址空间。
在一种可能的实施方式中,在所述刷洗模块向所述命令队列连续发送所述读请求之后,还包括:
当所述命令队列接收到来自主通路的读写请求时,所述刷洗模块停止向所述命令队列发送读请求,直至所述刷洗模块确定当前处于所述空闲状态;所述主通路为用于访问处理器数据的通路。
在本申请实施例中,当命令队列接收到来自主通路的读写请求时,刷洗模块停止向命令队列发送读请求,直至刷洗模块确定当前处于空闲状态,这样,可以保证刷洗操作尽可能少的影响主通路的带宽,保证计算机***的正常数据访问。
在一种可能的实施方式中,在所述寄存器将所述刷洗使能指令发送给所述刷洗模块之前,还包括:
所述寄存器获取通过配置信道输入的寄存器配置指令;
所述寄存器根据所述配置指令确定需要进行刷洗操作的存储空间,得到目标存储空间。
在本申请实施例中,预先对目标存储空间进行配置,方便了后续直接根据目标存储空间中的地址范围生成读请求,提高了刷洗操作的效率。
在一种可能的实施方式中,所述DDR控制器还包括ECC校验模块,在所述命令队列将所述读请求发送给所述目标存储空间中的各个地址空间之后,还包括:
所述ECC校验模块接收所述地址空间根据所述读请求返回的读数据;
所述ECC校验模块对所述读数据进行ECC校验,并根据所述ECC校验的结果对所述读数据执行处理操作。
在本申请实施例中,通过ECC校验模块检测和纠正读数据中的错误,可以确保数据的准确性和完整性。
在一种可能的实施方式中,所述对所述读数据进行ECC校验,包括:
每次获取所述读数据中的目标字节的数据作为待校验数据进行ECC校验,直至所述读数据被校验完成;
在所述校验过程中,若校验结果为所述目标字节的数据中含有一个比特位的错误数据,则将所述一个比特位的错误数据确定为可纠正的错误数据;
若所述校验结果为所述目标字节的数据中含有两个或两个以上的比特位的错误数据,则将所述两个或两个以上的比特位的错误数据确定为不可纠正的错误数据。
在本申请实施例中,根据校验结果确定可纠正的错误数据和不可纠正的错误数据,以便于后续对这两种类型的数据执行不同的处理操作。
在一种可能的实施方式中,所述根据所述ECC校验的结果对所述读数据执行处理操作,包括:
若通过所述ECC校验检测到所述读数据存在可纠正的错误数据,则将所述可纠正的错误数据发送至处理器,并将所述处理器更正后的正确数据写回所述错误数据对应的地址空间。
在本申请实施例中,将可纠正的错误数据发送至处理器,并将处理器更正后的正确数据写回错误数据对应的地址空间,可以确保内存数据的可靠性和完整性。
在一种可能的实施方式中,所述根据所述ECC校验的结果对所述读数据执行处理操作,还包括:
若通过所述ECC校验检测到所述读数据存在不可纠正的错误数据,则将所述不可纠正的错误数据进行上报。
在本申请实施例中,将不可纠正的错误数据及时上报,可以使不可纠正的错误数据被及时掌控和得到处理。
本申请第二方面提出一种DDR控制器,所述DDR控制器包括寄存器、刷洗模块和命令队列;其中,所述寄存器用于:
当接收到刷洗使能指令时,将所述刷洗使能指令发送给所述刷洗模块;
所述刷洗模块用于:
根据所述刷洗使能指令,生成针对目标存储空间中的各个地址空间的读请求,并向所述命令队列连续发送所述读请求;所述目标存储空间为预先指定的需要进行刷洗操作的存储空间;
所述命令队列用于:
将所述读请求发送给所述目标存储空间中的各个地址空间,以使所述地址空间根据所述读请求返回读数据。
在一种可能的实施方式中,所述刷洗模块具体用于:
当确定当前处于空闲状态时,向所述命令队列连续发送所述读请求;
所述空闲状态为所述命令队列当前未接收到新的读写请求,且已接收到的读写请求已响应完成、所述命令队列为空的状态。
在一种可能的实施方式中,所述刷洗模块具体用于:
周期性地向所述命令队列连续发送所述读请求,其中,每隔一个周期所述读请求对应的地址空间递增,直至遍历所述目标存储空间的各个地址空间。
在一种可能的实施方式中,所述刷洗模块具体用于:
当所述命令队列接收到来自主通路的读写请求时,停止向所述命令队列发送读请求,直至确定当前处于所述空闲状态;所述主通路为用于访问处理器数据的通路。
在一种可能的实施方式中,所述寄存器具体用于:
获取通过配置信道输入的寄存器配置指令;
根据所述配置指令确定需要进行刷洗操作的存储空间,得到目标存储空间。
在一种可能的实施方式中,所述DDR控制器还包括ECC校验模块,所述ECC校验模块具体用于:
接收所述地址空间根据所述读请求返回的读数据;
对所述读数据进行ECC校验,并根据所述ECC校验的结果对所述读数据执行处理操作。
在一种可能的实施方式中,所述刷洗模块具体用于:
每次获取所述读数据中的目标字节的数据作为待校验数据进行ECC校验,直至所述读数据被校验完成;
在所述校验过程中,若校验结果为所述目标字节的数据中含有一个比特位的错误数据,则将所述一个比特位的错误数据确定为可纠正的错误数据;
若所述校验结果为所述目标字节的数据中含有两个或两个以上的比特位的错误数据,则将所述两个或两个以上的比特位的错误数据确定为不可纠正的错误数据。
在一种可能的实施方式中,所述刷洗模块具体用于:
若通过所述ECC校验检测到所述读数据存在可纠正的错误数据,则将所述可纠正的错误数据发送至处理器,并将所述处理器更正后的正确数据写回所述错误数据对应的地址空间。
在一种可能的实施方式中,所述刷洗模块具体用于:
若通过所述ECC校验检测到所述读数据存在不可纠正的错误数据,则将所述不可纠正的错误数据进行上报。
本申请第三方面提出一种片上***,包括:
DDR控制器及使能模块;
所述使能模块,用于向所述DDR控制器的寄存器发送刷洗使能指令;
所述DDR控制器,用于执行第一方面所述的数据刷洗控制方法。
附图说明
图1为本申请实施例提供的一种微控制器的示意图;
图2为本申请实施例提供的一种数据刷洗控制方法的步骤流程图;
图3为本申请实施例提供的一种DDR控制器的结构框图;
图4为本申请实施例提供的一种片上***的结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本公开实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。另外,“基于”或“根据”的使用意味着开放和包容性,因为“基于”或“根据”一个或多个所述条件或值的过程、步骤、计算或其他动作在实践中可以基于额外条件或超出所述的值。
首先简单介绍本申请应用的***架构或场景。
本申请针对使用SDRAM(SynchronousDynamicRandomAccessMemory,同步动态随机存取内存)的所有产品,只要用到DDR或LPDDR的***都可以使用,包括核心网、路由器、服务器、PC等。
ECCScrub功能是内存控制器的RAS技术的重要一环,该功能会定期读取SDRAM的每个位置并进行ECC校验。通过遍历整个SDRAM,可以保持内存完整性,并降低出现不可纠正错误的可能性。
在相关技术中,软件每次进行ECCscrub操作需要查看上次ECCscrub操作的状态,若上次操作已完成,则可进行下一次的触发。因此,ECCScrub操作的触发只能由软件来进行触发,触发完成一次之后无法再次自动进行。在一些环境较为恶劣,数据被打翻的可能性较大的场景中,需要密集的执行scrub操作,因此需要软件多次访问寄存器来触发ECCScrub操作,从而降低了ECCScrub操作的效率。
本申请实施例为了解决相关技术中ECCscrub操作效率较低的问题,提出一种数据刷洗控制方法,该方法在当寄存器接收到刷洗使能指令时,寄存器将所述刷洗使能指令发送给刷洗模块;刷洗模块根据刷洗使能指令,生成针对目标存储空间中的各个地址空间的读请求,并向命令队列连续发送读请求;命令队列将读请求发送给目标存储空间中的各个地址空间,以使地址空间根据读请求返回读数据。该方法连续向各个地址空间发送读请求,整个过程仅需刷洗使能指令触发一次即可自动执行,后续无需软件介入,提高了操作效率。
本申请实施例应用于DDR控制器,该DDR控制器中设置有寄存器(ConfigRegisters)、刷洗模块(Scrubber)、ECC校验模块和命令队列(CommendQueue)。寄存器、刷洗模块和命令队列均为DDR控制器中的硬件模块。命令队列是DDR控制器中所缓存的对同步动态随机存取内存进行访问的命令,DDR控制器可对这些命令进行执行调度。
图1为本申请实施例提供的一种微控制器的示意图。
如图1所示,微控制器包括DDR控制器、同步动态随机存取内存和ECC错误中断。DDR控制器包括寄存器、刷洗模块、命令队列和ECC校验模块。其中,寄存器可以接收使能模块的使能指令,以及接收通过配置信道输入的配置指令,刷洗模块可以接收寄存器的使能指令并根据使能指令生成读请求,发送给命令队列。命令队列将读请求发送给同步动态随机存取内存,使同步动态随机存取内存根据读请求返回读数据。ECC校验模块接收读数据,并对读数据进行ECC校验,根据ECC校验结果对读数据执行处理操作。
对于ECC校验中发现的不可纠正错误,由刷洗模块上报给ECC错误中断进行处理。
下文为了表述方便,将ECCscrub操作统一称为刷洗操作,将SDRAM统一称为同步动态随机存取内存。
图2为本申请实施例提供的一种数据刷洗控制方法的步骤流程图。如图2所示,该方法可以包含如下步骤:
步骤101、当所述寄存器接收到刷洗使能指令时,所述寄存器将所述刷洗使能指令发送给所述刷洗模块。
刷洗使能指令由使能模块发出,使能模块为软件模块,使能模块认为需要进行刷洗操作时,向寄存器发送刷洗使能指令。一般使能模块在***上电且完成初始化后即开始使能操作。
寄存器在接收到刷洗使能指令后,将该指令发送给刷洗模块。
步骤102、所述刷洗模块根据所述刷洗使能指令,生成针对目标存储空间中的各个地址空间的读请求,并向所述命令队列连续发送所述读请求;所述目标存储空间为预先指定的需要进行刷洗操作的存储空间。
目标存储空间是寄存器在接收刷洗使能指令之前,软件通过配置寄存器来指定的需要进行刷洗操作的同步动态随机存取内存中的存储空间。
刷洗模块在接收到刷洗使能指令后,从寄存器中获取待进行刷洗操作的目标存储空间的首地址和地址范围,并根据该地址范围生成针对目标存储空间中的各个地址空间的读请求。
具体地,根据DDR协议,每次与处理器交换的数据是一个burst操作的数据大小,一个burst一般为64B。因此,每次访问请求的地址以64B为单位递增。也就是说,目标字节一般为64字节。
可以理解,在其他实施例中,可以根据处理器的数据交换特点重新确定目标字节的取值,此处不限定目标字节的具体大小。
刷洗模块从首地址开始,每次发送针对目标字节大小的地址空间的读请求,以满足一次DDR协议的数据交换操作的数据大小。每次读请求包含的访问地址以目标字节为单位递增。
刷洗模块向命令队列连续发送该读请求。
步骤103、所述命令队列将所述读请求发送给所述目标存储空间中的各个地址空间,以使所述地址空间根据所述读请求返回读数据。
命令队列按照各个读请求中包括的地址空间标识,将各个读请求分别发送给对应的地址空间。各个地址空间在接收到读请求后,向DDR控制器返回读数据。
相比于相关技术中只能在确认上一次刷洗操作完成后,才能由软件来触发下一次刷洗操作,本申请连续向命令队列发送读请求,整个过程仅需使能模块触发一次即可自动执行,后续无需软件介入,提高了操作效率。
综上,在本申请实施例中,当所述寄存器接收到刷洗使能指令时,所述寄存器将所述刷洗使能指令发送给所述刷洗模块;所述刷洗模块根据所述刷洗使能指令,生成针对目标存储空间中的各个地址空间的读请求,并向所述命令队列连续发送所述读请求;所述目标存储空间为预先指定的需要进行刷洗操作的存储空间;所述命令队列将所述读请求发送给所述目标存储空间中的各个地址空间,以使所述地址空间根据所述读请求返回读数据。本方案在接收到刷洗使能指令时,对目标存储空间中的各个地址空间连续发送读请求,以根据返回的读数据进行刷洗操作。本方案连续向命令队列发送读请求,使得整个目标存储空间的刷洗过程仅需使能指令触发一次即可自动执行,后续无需软件介入,提高了操作效率。
在本申请实施例中,刷洗模块向命令队列发送读请求的方式有空闲模式和间隔模式两种,两者都可以实现连续发送读请求的目的。将空闲模式和间隔模式预先写入刷洗模块的配置程序中,在具体执行时,根据实际需求选择其一即可。以下步骤1021为空闲模式,步骤1022为间隔模式。
步骤1021、当所述刷洗模块确定当前处于空闲状态时,所述刷洗模块向所述命令队列连续发送所述读请求;所述空闲状态为所述命令队列当前未接收到新的读写请求,且已接收到的读写请求已响应完成、所述命令队列为空的状态。
在空闲模式时,刷洗模块只会在DDR控制器处于空闲状态时向命令队列发送读请求,且为连续发送。
具体地,空闲状态是指命令队列当前未接收到新的读请求和写请求,且之前已接收到的读请求和写请求已响应完成。其中,之前已接收到的读请求和写请求具体是指已出命令队列的读请求和写请求。
步骤1022、所述刷洗模块周期性地向所述命令队列连续发送所述读请求,其中,每隔一个周期所述读请求对应的地址空间递增,直至遍历所述目标存储空间的各个地址空间。
在间隔模式时,刷洗模块会周期性的以固定的时间间隔向命令队列发送读请求,即上一个读请求发送之后,相隔固定时间间隔再发送下一个读请求。
其中,上一个读请求和下一个读请求对应的地址空间是递增的,这样,直至遍历完成目标存储空间的各个地址空间,则所有的读请求发送完成。
在本申请实施例中,在连续执行刷洗操作的过程中,读请求的请求量比较大,会影响主通路的带宽。为了保证尽可能少的影响主通路的带宽,优先采用空闲模式发送读请求,以降低频繁的刷洗操作对带宽的影响。
在一种可能的实施方式中,在步骤1021之后还包括:
步骤1023、当所述命令队列接收到来自主通路的读写请求时,所述刷洗模块停止向所述命令队列发送读请求,直至所述刷洗模块确定当前处于所述空闲状态;所述主通路为用于访问处理器数据的通路。
在本申请实施例中,一旦DDR控制器不再处于空闲模式,刷洗模块停止向命令队列发送读写请求。
命令队列中的命令一般有两个来源,一个是来自片上网络的主通路的请求,一个是来自于刷洗模块的请求。
主通路是用于保证处理器正常数据访问的通路,其优先级相比刷洗模块较高。当命令队列接收到来自主通路的读写请求时,DDR控制器当前不再处于空闲状态。为了保证处理器的正常数据访问,刷洗模块停止向命令队列发送读请求,直至DDR控制器再次处于空闲状态。
这样,可以保证刷洗操作尽可能少的影响主通路的带宽,保证计算机***的正常数据访问。
在一种可能的实施方式中,在步骤101之前,还包括:
步骤201、所述寄存器获取通过配置信道输入的寄存器配置指令;
步骤202、所述寄存器根据所述配置指令确定需要进行刷洗操作的存储空间,得到目标存储空间。
在步骤201-步骤202中,软件通过配置寄存器来指定需要进行刷洗操作的存储空间。具体地,软件通过配置信道向寄存器输入配置指令,该配置指令中包括需要进行刷洗操作的存储空间。寄存器接收并解析配置指令的具体内容,得到目标存储空间信息。
在本申请实施例中,预先对目标存储空间进行配置,方便了后续直接根据目标存储空间中的地址范围生成读请求,提高了刷洗操作的效率。
在一种可能的实施方式中,所述DDR控制器还包括ECC校验模块,在步骤103之后,还包括:
步骤104、所述ECC校验模块接收所述地址空间根据所述读请求返回的读数据;
步骤105、所述ECC校验模块对所述读数据进行ECC校验,并根据所述ECC校验的结果对所述读数据执行处理操作。
在本申请实施例中,各个地址空间在接收到读请求后,读取存储在该地址空间内的数据,得到读数据,并向ECC校验模块返回读数据。读数据具体为地址空间中存储的数据。
ECC校验模块采用ECC(ErrorCheckingandCorrection,差错检测和纠正)技术对读数据进行差错检测和纠正。ECC是一种用于检测和纠正数据错误的编码技术,其通过在数据中添加冗余位来实现错误检测和纠正。
具体实践中,ECC校验模块对接收到的读数据进行解码和检测,如果发现检测到读数据中存在错误数据,则采用冗余位对可纠正的错误数据进行纠正,对不可纠正的错误数据进行上报。
在本申请实施例中,通过ECC校验模块检测和纠正读数据中的错误,可以确保数据的准确性和完整性。
在一种可能的实施方式中,步骤105中对所述读数据进行ECC校验,包括以下步骤:
步骤1051、每次获取所述读数据中的目标字节的数据作为待校验数据进行ECC校验,直至所述读数据被校验完成;
步骤1052、在所述校验过程中,若校验结果为所述目标字节的数据中含有一个比特位的错误数据,则将所述一个比特位的错误数据确定为可纠正的错误数据;
步骤1053、若所述校验结果为所述目标字节的数据中含有两个或两个以上的比特位的错误数据,则将所述两个或两个以上的比特位的错误数据确定为不可纠正的错误数据。
在步骤1051-步骤1053中,根据DDR协议,每次与处理器交换的数据是一个burst操作的数据大小, ECC校验每次对一个burst的数据进行校验。
一个burst包含目标字节的数据。
ECC校验每次对目标字节的数据进行操作。ECC校验通过在数据尾部增加ECC校验码的方式检测和纠正数据中的错误。ECC校验码采用汉明码编码。
ECC能检测和纠正一个比特位的错误,对两个比特位的错误能够检测但无法纠正,对两个比特以上的错误不保证能检测。
因此,当执行ECC校验之后,存在两种校验结果。若校验结果为目标字节的数据中含有一个比特位的错误数据,则将一个比特位的错误数据确定为可纠正的错误数据;若校验结果为目标字节的数据中含有两个或两个以上的比特位的错误数据,则将两个或两个以上的比特位的错误数据确定为不可纠正的错误数据。
在本申请实施例中,根据校验结果确定可纠正的错误数据和不可纠正的错误数据,以便于后续对这两种类型的数据执行不同的处理操作。
在一种可能的实施方式中,由于ECC校验结果包括两种结果,因此,步骤105中根据所述ECC校验的结果对所述读数据执行处理操作,分别包括以下步骤1054和步骤1055两种处理方法。
步骤1054、若通过所述ECC校验检测到所述读数据存在可纠正的错误数据,则将所述可纠正的错误数据发送至处理器,并将所述处理器更正后的正确数据写回所述错误数据对应的地址空间。
若ECC校验结果为目标字节中存在可纠正的错误数据,则将该错误数据发送给处理器,以使处理器根据ECC校验的原理对错误数据进行纠正。该处理器可以为计算机的主处理器,也可以为计算机的协处理器。
处理器将更正后的正确数据发给刷洗模块,刷洗模块将正确数据写回错误数据对应的地址空间,从而实现了对错误数据的纠正。
在本申请实施例中,将可纠正的错误数据发送至处理器,并将处理器更正后的正确数据写回错误数据对应的地址空间,可以确保内存数据的可靠性和完整性。
步骤1055、若通过所述ECC校验检测到所述读数据存在不可纠正的错误数据,则将所述不可纠正的错误数据进行上报。
若ECC校验结果为目标字节中存在不可纠正的错误数据,则将该错误数据上报给ECC错误中断,以使ECC错误中断分析错误原因并进行后续操作。
在本申请实施例中,将不可纠正的错误数据及时上报,可以使不可纠正的错误数据被及时掌控和得到处理。
本申请实施例根据两种校验结果对读数据执行两种不同的处理方法,使得可纠正错误得到了及时的更正,不可纠正错误被及时上报,提高了对错误数据的处理效率。
图3为本申请实施例提供的一种DDR控制器的结构框图。如图3所示,所述DDR控制器包括寄存器301、刷洗模块302和命令队列303。
其中,所述寄存器301用于:
当接收到刷洗使能指令时,将所述刷洗使能指令发送给所述刷洗模块;
所述刷洗模块302用于:
根据所述刷洗使能指令,生成针对目标存储空间中的各个地址空间的读请求,并向所述命令队列连续发送所述读请求;所述目标存储空间为预先指定的需要进行刷洗操作的存储空间;
所述命令队列303用于:
将所述读请求发送给所述目标存储空间中的各个地址空间,以使所述地址空间根据所述读请求返回读数据。
在一种可能的实施方式中,所述刷洗模块302具体用于:
当确定当前处于空闲状态时,向所述命令队列连续发送所述读请求;
所述空闲状态为所述命令队列当前未接收到新的读写请求,且已接收到的读写请求已响应完成、所述命令队列为空的状态。
在一种可能的实施方式中,所述刷洗模块302具体用于:
周期性地向所述命令队列连续发送所述读请求,其中,每隔一个周期所述读请求对应的地址空间递增,直至遍历所述目标存储空间的各个地址空间。
在一种可能的实施方式中,所述刷洗模块302具体用于:
当所述命令队列接收到来自主通路的读写请求时,停止向所述命令队列发送读请求,直至确定当前处于所述空闲状态;所述主通路为用于访问处理器数据的通路。
在一种可能的实施方式中,所述寄存器301具体用于:
获取通过配置信道输入的寄存器配置指令;
根据所述配置指令确定需要进行刷洗操作的存储空间,得到目标存储空间。
在一种可能的实施方式中,所述DDR控制器还包括ECC校验模块304,所述ECC校验模块304具体用于:
接收所述地址空间根据所述读请求返回的读数据;
对所述读数据进行ECC校验,并根据所述ECC校验的结果对所述读数据执行处理操作。
在一种可能的实施方式中,所述刷洗模块302具体用于:
每次获取所述读数据中的目标字节的数据作为待校验数据进行ECC校验,直至所述读数据被校验完成;
在所述校验过程中,若校验结果为所述目标字节的数据中含有一个比特位的错误数据,则将所述一个比特位的错误数据确定为可纠正的错误数据;
若所述校验结果为所述目标字节的数据中含有两个或两个以上的比特位的错误数据,则将所述两个或两个以上的比特位的错误数据确定为不可纠正的错误数据。
在一种可能的实施方式中,所述刷洗模块302具体用于:
若通过所述ECC校验检测到所述读数据存在可纠正的错误数据,则将所述可纠正的错误数据发送至处理器,并将所述处理器更正后的正确数据写回所述错误数据对应的地址空间。
在一种可能的实施方式中,所述刷洗模块302具体用于:
若通过所述ECC校验检测到所述读数据存在不可纠正的错误数据,则将所述不可纠正的错误数据进行上报。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的DDR控制器的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
图4为本申请实施例提供的一种片上***的结构框图。
如图4所示,该片上***包括:
DDR控制器300及使能模块400;
所述使能模块400,用于向所述DDR控制器的寄存器发送刷洗使能指令;
所述DDR控制器300,用于执行图2中的数据刷洗控制方法。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的片上***的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
上述主要从设备的角度对本申请实施例提供的方案进行了介绍。可以理解的是,设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种数据刷洗控制方法,其特征在于,应用于DDR控制器,所述DDR控制器包括寄存器、刷洗模块、命令队列,所述方法包括:
S1:当所述寄存器接收到刷洗使能指令时,所述寄存器将所述刷洗使能指令发送给所述刷洗模块;所述刷洗使能指令由使能模块发出,所述使能模块为软件模块;
S2:所述刷洗模块根据所述刷洗使能指令,生成针对目标存储空间中的各个地址空间的读请求,并向所述命令队列连续发送所述读请求;所述目标存储空间为预先指定的需要进行刷洗操作的存储空间;
S3:所述命令队列将所述读请求发送给所述目标存储空间中的各个地址空间,以使所述地址空间根据所述读请求返回读数据;
其中,S1-S3仅需所述刷洗使能指令触发一次即可自动执行。
2.根据权利要求1所述的方法,其特征在于,所述向所述命令队列连续发送所述读请求,包括:
当所述刷洗模块确定当前处于空闲状态时,所述刷洗模块向所述命令队列连续发送所述读请求;
所述空闲状态为所述命令队列当前未接收到新的读写请求,且已接收到的读写请求已响应完成、所述命令队列为空的状态。
3.根据权利要求1所述的方法,其特征在于,所述向所述命令队列连续发送所述读请求,包括:
所述刷洗模块周期性地向所述命令队列连续发送所述读请求,其中,每隔一个周期所述读请求对应的地址空间递增,直至遍历所述目标存储空间的各个地址空间。
4.根据权利要求2所述的方法,其特征在于,在所述刷洗模块向所述命令队列连续发送所述读请求之后,还包括:
当所述命令队列接收到来自主通路的读写请求时,所述刷洗模块停止向所述命令队列发送读请求,直至所述刷洗模块确定当前处于所述空闲状态;所述主通路为用于访问处理器数据的通路。
5.根据权利要求1所述的方法,其特征在于,在所述寄存器将所述刷洗使能指令发送给所述刷洗模块之前,还包括:
所述寄存器获取通过配置信道输入的寄存器配置指令;
所述寄存器根据所述配置指令确定需要进行刷洗操作的存储空间,得到目标存储空间。
6.根据权利要求1所述的方法,其特征在于,所述DDR控制器还包括ECC校验模块,在所述命令队列将所述读请求发送给所述目标存储空间中的各个地址空间之后,还包括:
所述ECC校验模块接收所述地址空间根据所述读请求返回的读数据;
所述ECC校验模块对所述读数据进行ECC校验,并根据所述ECC校验的结果对所述读数据执行处理操作。
7.根据权利要求6所述的方法,其特征在于,所述对所述读数据进行ECC校验,包括:
每次获取所述读数据中的目标字节的数据作为待校验数据进行ECC校验,直至所述读数据被校验完成;
在所述校验过程中,若校验结果为所述目标字节的数据中含有一个比特位的错误数据,则将所述一个比特位的错误数据确定为可纠正的错误数据;
若所述校验结果为所述目标字节的数据中含有两个或两个以上的比特位的错误数据,则将所述两个或两个以上的比特位的错误数据确定为不可纠正的错误数据。
8.根据权利要求6所述的方法,其特征在于,所述根据所述ECC校验的结果对所述读数据执行处理操作,包括:
若通过所述ECC校验检测到所述读数据存在可纠正的错误数据,则将所述可纠正的错误数据发送至处理器,并将所述处理器更正后的正确数据写回所述错误数据对应的地址空间;
若通过所述ECC校验检测到所述读数据存在不可纠正的错误数据,则将所述不可纠正的错误数据进行上报。
9.一种DDR控制器,其特征在于,所述DDR控制器包括寄存器、刷洗模块、命令队列;其中,所述寄存器用于:
S1:当接收到刷洗使能指令时,将所述刷洗使能指令发送给所述刷洗模块;所述刷洗使能指令由使能模块发出,所述使能模块为软件模块;
所述刷洗模块用于:
S2:根据所述刷洗使能指令,生成针对目标存储空间中的各个地址空间的读请求,并向所述命令队列连续发送所述读请求;所述目标存储空间为预先指定的需要进行刷洗操作的存储空间;
所述命令队列用于:
S3:将所述读请求发送给所述目标存储空间中的各个地址空间,以使所述地址空间根据所述读请求返回读数据;
其中,S1-S3仅需所述刷洗使能指令触发一次即可自动执行。
10.一种片上***,其特征在于,包括:
DDR控制器及使能模块;
所述使能模块,用于向所述DDR控制器的寄存器发送刷洗使能指令;
所述DDR控制器,用于执行权利要求1-8任一所述的数据刷洗控制方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311175982.3A CN116932275B (zh) | 2023-09-13 | 2023-09-13 | 一种数据刷洗控制方法、ddr控制器和片上*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311175982.3A CN116932275B (zh) | 2023-09-13 | 2023-09-13 | 一种数据刷洗控制方法、ddr控制器和片上*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116932275A CN116932275A (zh) | 2023-10-24 |
CN116932275B true CN116932275B (zh) | 2023-12-29 |
Family
ID=88386261
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311175982.3A Active CN116932275B (zh) | 2023-09-13 | 2023-09-13 | 一种数据刷洗控制方法、ddr控制器和片上*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116932275B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6636216B1 (en) * | 1997-07-15 | 2003-10-21 | Silverbrook Research Pty Ltd | Digital image warping system |
US10037246B1 (en) * | 2016-07-25 | 2018-07-31 | Cadence Design Systems, Inc. | System and method for memory control having self writeback of data stored in memory with correctable error |
CN116382991A (zh) * | 2023-04-28 | 2023-07-04 | 飞腾信息技术有限公司 | 一种存储设备测试方法、装置、计算机设备及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6845472B2 (en) * | 2000-01-25 | 2005-01-18 | Hewlett-Packard Development Company, L.P. | Memory sub-system error cleansing |
US6715116B2 (en) * | 2000-01-26 | 2004-03-30 | Hewlett-Packard Company, L.P. | Memory data verify operation |
US7496823B2 (en) * | 2005-03-16 | 2009-02-24 | Hewlett-Packard Development Company, L.P. | Hardware based memory scrubbing |
US8775865B2 (en) * | 2009-06-24 | 2014-07-08 | Headway Technologies, Inc. | Method and apparatus for scrubbing accumulated disturb data errors in an array of SMT MRAM memory cells including rewriting reference bits |
JP2018508906A (ja) * | 2015-03-04 | 2018-03-29 | トゥルソナ,インコーポレイテッド | カード認証読み取りを実行するためのシステムおよび方法 |
-
2023
- 2023-09-13 CN CN202311175982.3A patent/CN116932275B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6636216B1 (en) * | 1997-07-15 | 2003-10-21 | Silverbrook Research Pty Ltd | Digital image warping system |
US10037246B1 (en) * | 2016-07-25 | 2018-07-31 | Cadence Design Systems, Inc. | System and method for memory control having self writeback of data stored in memory with correctable error |
CN116382991A (zh) * | 2023-04-28 | 2023-07-04 | 飞腾信息技术有限公司 | 一种存储设备测试方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116932275A (zh) | 2023-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2811392B1 (en) | Method and device for reducing read delay | |
US8140940B2 (en) | Method and apparatus for controlling memory | |
US20110047440A1 (en) | Systems and Methods to Respond to Error Detection | |
TWI541817B (zh) | 隨機存取記憶體再新率技術 | |
US20120079346A1 (en) | Simulated error causing apparatus | |
WO2021135280A1 (zh) | 一种分布式存储***的数据校验方法及相关装置 | |
JP4349532B2 (ja) | メモリ制御装置、メモリ制御方法、情報処理システム、そのプログラム及び記憶媒体 | |
WO2024055611A1 (zh) | 基于固件仿真的故障现场回溯方法、设备及可读存储介质 | |
US8566689B2 (en) | Data integrity units in nonvolatile memory | |
CN115587055A (zh) | 总线的传输方法、***、设备及存储介质 | |
US8689079B2 (en) | Memory device having multiple channels and method for accessing memory in the same | |
CN115729746A (zh) | 一种基于crc和ecc存储数据保护方法 | |
US8438452B2 (en) | Poison bit error checking code scheme | |
US20040250028A1 (en) | Method and apparatus for data version checking | |
CN113220221B (zh) | 存储器控制器与数据处理方法 | |
CN116932275B (zh) | 一种数据刷洗控制方法、ddr控制器和片上*** | |
TWI442406B (zh) | 針對一快閃記憶體的控制器之錯誤管理機制來提升驗證效率之方法以及相關之記憶裝置及其控制器 | |
CN115729477A (zh) | 分布式存储io路径数据写入、读取方法、装置和设备 | |
US20080155193A1 (en) | Staging method for disk array apparatus | |
US9251054B2 (en) | Implementing enhanced reliability of systems utilizing dual port DRAM | |
CN111124742A (zh) | Flash数据校验方法及Flash控制器、存储介质、设备 | |
CN114518972B (zh) | 内存错误处理方法、装置、内存控制器及处理器 | |
US11809272B2 (en) | Error correction code offload for a serially-attached memory device | |
CN114116530B (zh) | 存储控制方法及装置、数据处理方法及装置以及存储介质 | |
CN118113207A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |