CN112612608B - 一种内存训练的方法及*** - Google Patents
一种内存训练的方法及*** Download PDFInfo
- Publication number
- CN112612608B CN112612608B CN202011490385.6A CN202011490385A CN112612608B CN 112612608 B CN112612608 B CN 112612608B CN 202011490385 A CN202011490385 A CN 202011490385A CN 112612608 B CN112612608 B CN 112612608B
- Authority
- CN
- China
- Prior art keywords
- memory training
- subtask
- preset
- result
- central controller
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Feedback Control In General (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明提供一种内存训练的方法及***。所述方法包括有中央控制器,与中央控制器连接的至少两个并行连接的存储控制器,以及设置在所述存储控制器中的至少一个微处理单元;中央控制器启动时序参数的内存训练;由微处理单元在存储控制器内执行至少一个内存训练子任务,得出第一子任务结果并将所述第一子任务结果发送给中央控制器;中央控制器接收第一子任务结果后,根据所述第一子任务结果执行至少一个内存训练子任务,确定出所述时序参数的配置值。本发明能够充分发挥中央处理器和微处理单元各自优势配合完成内存训练,大大提高了多存储控制器***的内存训练效率;大幅提升了多存储控制器***的内存训练速度,推动人工智能、高性能计算的发展。
Description
技术领域
本发明涉及芯片技术领域,尤其涉及一种内存训练的方法及***。
背景技术
随着人工智能、高性能计算的发展,处理器、显卡等计算单元对内存的容量、带宽提出了更高的要求。由于内存自身的高工作频率(GHz级)、并行同步总线(并行数据线、命令地址线,与时钟、采样信号同步)、封装工艺差异或PCB走线差异,以及外部应用环境如温度、电压变化的影响,内存信号极容易被干扰导致数据收发错误。
内存训练是通过循环尝试调整存储控制器(memory controller,简称MC,所述存储控制器可按照一定的时序规则对存储器的访问进行必要控制的模块,包括地址信号、数据信号以及各种命令信号的控制,使主设备能够根据自己的要求使用存储器上的存储资源。)中相关时序参数值,如ADDR/CMD信号对CLK,DQ信号对DQS的延时参数,测试出可以保证各个信号在信号采样前有足够的建立时间,采样后有足够的保持时间,从而信号能被正确采样的延时参数。从这些可以工作的延时参数中选取最优值,配置到存储控制器中,保证存储设备工作在最稳定的状态。所以处理器或显卡在开机过程中可选择地对存储进行内存训练,找到最优参数,配置到存储控制器中,保证内存稳定工作。
在实现本发明的过程中,发明人发现现有技术中至少存在如下技术问题:
现有技术中主要针对一个存储控制器进行内存训练;而随着计算单元对存储单元的容量和带宽要求越来越高,一般***中会集成多个存储控制器,以便管理更多存储单元,且各个存储控制器可以并发运行,提高存储带宽。并且现有技术也并没有提供对多个存储控制器应该如何进行内存训练的方案。
而通过最简单方式,对集成多个存储控制器的***,简单扩充现有技术,依次串行对多个存储控制器进行内存训练。同时该方案也不能够发挥各个存储控制器的并行性,效率非常低下,严重影响内存训练速度。
如果CPU发起多个线程,并行方式控制存储控制器进行内存训练,则需要CPU和多个存储控制器之间进行频繁地小数据传输(内存训练过程是一个多重循环迭代的小数据收发过程),且使用间接模式通信(CPU与存储控制器之间一般需要跨越多个总线和模块进行数据交互),进而该方案的内存训练效率也比较低下。
发明内容
本发明提供的内存训练的方法及***,能够充分发挥中央处理器和微处理单元各自优势配合完成内存训练,大大提高了多存储控制器***的内存训练效率;大幅提升了多存储控制器***的内存训练速度,推动人工智能、高性能计算的发展。
第一方面,本发明提供一种内存训练的方法,包括有中央控制器,与中央控制器连接的至少两个并行连接的存储控制器,以及设置在所述存储控制器中的至少一个微处理单元;
中央控制器启动时序参数的内存训练;
由微处理单元在存储控制器内执行至少一个内存训练子任务,得出第一子任务结果并将所述第一子任务结果发送给中央控制器;
中央控制器接收第一子任务结果后,根据所述第一子任务结果执行至少一个内存训练子任务,确定出所述时序参数的配置值。
可选地,所述时序参数的内存训练可预设为至少两个子任务,并由指定的中央控制器或者微处理单元进行执行;
或者,所述时序参数的内存训练由中央控制器根据预设条件将时序参数的内存训练动态划分为至少两个子任务,并指定对应的中央控制器或者微处理单元进行执行。
可选地,所述内存训练的子任务包括有下述至少之一:循环迭代运算子任务、时序参数的最佳配置值计算子任务、内存训练结果分析子任务、内存训练结果记录子任务、内存训练优选的训练区间计算子任务。
可选地,在所述中央控制器启动时序参数的内存训练之前,所述方法还包括:
中央控制器通过通信单元与微处理单元进行通信交互;
优选地,所述通信单元为下述之一:设置于存储控制器中的通信寄存器、与存储控制器和中央控制器连接的存储单元、预设的通信机制。
可选地,在所述中央控制器启动时序参数的内存训练之后,所述方法包括:
微处理单元获取通信单元中存储的当前状态值,当所述当前状态值为第一预设值时,则由微处理单元在存储控制器内执行预设时序参数的至少一个内存训练子任务,得出第一子任务结果并将所述第一子任务结果发送给中央控制器;
或者,中央处理器获取通信单元中存储的当前状态值,当所述当前状态值为第二预设值时,则中央控制器接收第一子任务结果后,根据所述第一子任务结果执行预设时序参数的至少一个内存训练子任务,确定出所述预设时序参数的配置值。
可选地,所述微处理单元获取通信单元中存储的当前状态值,当所述当前状态值为第一预设值时,则由微处理单元在存储控制器内执行预设时序参数的至少一个内存训练子任务,得出第一子任务结果并将所述第一子任务结果发送给中央控制器包括:
所述微处理单元获取通信单元中存储的当前状态值,判断所述当前状态值是否为第一预设值;
当所述当前状态值为第一预设值时,根据所述第一预设值确定待内存训练的预设参数;
根据所述预设参数,在微处理单元中配置待训练参数区间;
微处理单元遍历所述待训练参数区间中各个参数值进行内存训练;
确定符合所述预设参数内存训练要求的结果位图,并将所述结果位图作为第一子任务结果写入存储控制器的预设寄存器中。
可选地,所述中央处理器获取通信单元中存储的当前状态值,当所述当前状态值为第二预设值时,则中央控制器接收第一子任务结果后,根据所述第一子任务结果执行预设时序参数的至少一个内存训练子任务,确定出所述预设时序参数的配置值包括:
所述中央处理器获取通信单元中存储的当前状态值,判断所述当前状态值是否为第二预设值;
当所述当前状态值为第二预设值时,根据所述第二预设值判断是否需要从存储控制器的预设寄存器中读取已完成内存训练的时序参数对应结果位图;
所述中央控制器记录所述第一子任务结果;
所述中央控制器根据已完成内存训练的时序参数对应结果位图和所述第一子任务结果执行预设时序参数的至少一个内存训练子任务;
确定出所述预设时序参数的配置值。
第二方面,本发明提供一种内存训练的***,包括:中央控制器,与中央控制器连接的至少两个并行连接的存储控制器,以及设置在所述存储控制器中的至少一个微处理单元;其中:
所述微处理单元,用于在中央控制器启动时序参数的内存训练之后,通过在存储控制器内执行至少一个内存训练子任务,得出第一子任务结果并将所述第一子任务结果发送给中央控制器;
所述中央控制器:用于启动时序参数的内存训练,以及接收第一子任务结果后,根据所述第一子任务结果执行至少一个内存训练子任务,确定出所述时序参数的配置值。
可选地,所述***还包括有:
通信单元,用于在中央控制器与微处理单元之间进行通信交互;
优选地,所述通信单元为设置于存储控制器中的通信寄存器、或者与存储控制器、中央控制器连接的存储单元、或预设的通信机制。
可选地,所述微处理单元包括:
获取模块,用于获取通信单元中存储的当前状态值;
判断模块,用于判断所述当前状态值是否为第一预设值;
确定模块,用于根据所述第一预设值确定待内存训练的预设参数、待训练参数区间;
配置模块,用于配置待训练参数区间;
第一内存训练模块,用于遍历所述待训练参数区间中各个参数值进行内存训练。
可选地,所述中央控制器包括:
获取模块,用于获取通信单元中存储的当前状态值;
判断模块,用于判断所述当前状态值是否为第二预设值;
读取模块,用于当所述当前状态值为第二预设值时,根据所述第二预设值判断是否需要从存储控制器的预设寄存器中读取已完成内存训练的时序参数对应结果位图;
记录模块,用于记录所述第一子任务结果;
第二内存训练模块,用于根据已完成内存训练的时序参数对应结果位图和所述第一子任务结果执行预设时序参数的至少一个内存训练子任务;确定出所述预设时序参数的配置值。
本发明实施例提供的内存训练的方法及***,不仅为了克服现有技术无法解决多个存储控制器***内存训练的问题,还可以解决只通过简单扩展现有技术适应多存储控制器***导致内存训练效率不高的问题,本发明实施例利用***中至少两个微处理单元(即micro-processor,缩写为MP,所述微处理单元能够执行控制和算术逻辑运算的集成电路,能够完成取指令、执行指令,以及访问存储部件的功能。)和中央控制器(简称CPU)组成一套分布式***,将内存训练中计算难度小、但计算量大的内存训练子任务交给可以快速访问存储控制器寄存器的微处理单元进行,例如内存训练中循环迭代运算子任务;而将计算难度大的内存训练子任务交给可以执行高级语言,实现复杂逻辑的中央控制器进行,例如内存训练结果的分析和记录子任务。
因此,本发明实施例所述方法及***能够充分发挥中央处理器和微处理单元各自优势配合完成内存训练,大大提高了多存储控制器***的内存训练效率;大幅提升了多存储控制器***的内存训练速度,推动人工智能、高性能计算的发展。
附图说明
图1为本发明一实施例内存训练的方法的流程图;
图2为本发明另一实施例内存训练的方法的流程图;
图3为本发明另一实施例内存训练的方法的流程图;
图4为本发明一实施例内存训练的***的结构示意图;
图5为本发明另一实施例内存训练的***的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种内存训练的方法,如图1所示,包括有中央控制器,与中央控制器连接的至少两个并行连接的存储控制器,以及设置在所述存储控制器中的至少一个微处理单元;所述方法包括:
S11、中央控制器启动时序参数的内存训练;
S12、由微处理单元在存储控制器内执行至少一个内存训练子任务,得出第一子任务结果并将所述第一子任务结果发送给中央控制器;
S13、中央控制器接收第一子任务结果后,根据所述第一子任务结果执行至少一个内存训练子任务,确定出所述时序参数的配置值。
本发明实施例提供的内存训练的方法,不仅为了克服现有技术无法解决多个存储控制器***内存训练的问题,还可以解决只通过简单扩展现有技术适应多存储控制器***导致内存训练效率不高的问题,本发明实施例利用***中至少两个微处理单元(即micro-processor,缩写为MP,所述微处理单元是能够执行控制和算术逻辑运算的集成电路,能够完成取指令、执行指令,以及访问存储部件的功能。)和中央控制器(简称CPU)组成一套分布式***,将内存训练中计算难度小、但计算量大的内存训练子任务交给可以快速访问存储控制器寄存器的微处理单元进行,例如内存训练中循环迭代运算子任务;而将计算难度大的内存训练子任务交给可以执行高级语言,实现复杂逻辑的中央控制器进行,例如内存训练结果的分析和记录子任务。
因此,本发明实施例所述方法能够充分发挥中央处理器和微处理单元各自优势配合完成内存训练,大大提高了多存储控制器***的内存训练效率;大幅提升了多存储控制器***的内存训练速度,推动人工智能、高性能计算的发展。
可选地,所述时序参数的内存训练可预设为至少两个子任务,并由指定的中央控制器或者微处理单元进行执行;
或者,所述时序参数的内存训练由中央控制器根据预设条件将时序参数的内存训练动态划分为至少两个子任务,并指定对应的中央控制器或者微处理单元进行执行。
可选地,所述内存训练的子任务包括有下述至少之一:循环迭代运算子任务、时序参数的最佳配置值计算子任务、内存训练结果分析子任务、内存训练结果记录子任务、内存训练优选的训练区间计算子任务。
本发明实施例所述方法可简单的通过将内存训练直接预设为多个子任务,并根据微处理单元和中央控制器的运行特点、能力等指定最优者进行执行;比如将循环迭代运算子任务指定、或者时序参数的最佳配置值计算子任务给微处理单元执行,而将内存训练结果分析子任务、或者内存训练结果记录子任务、或者内存训练优选的训练区间计算子任务指定给中央控制器进行执行。
再比如,根据同一个设备上内存训练的测试通过参数窗口和历史训练的测试通过参数窗口相近的原理,将历史训练的测试通过参数窗口信息交由中央控制器进行计算得出内存训练优选的训练区间,然后由中央控制器将内存训练优选的训练区间发送给微处理单元,微处理单元参考该区间进行内存训练,进而大大减少内存训练的参数测试次数,大幅提升内存训练速度。
进一步地,所述中央控制器还可以根据内存训练的具体需求,中央控制器和微处理单元的计算速率,动态划分和分配所述时序参数的内存训练,还可根据其具体需求或者条件指定对应的中央控制器或者微处理单元进行执行。例如,当有两个存储控制器时,其中第一个存储控制器仅需对一个时序参数进行内存训练且仅找到参数区间中间值;而第二个存储控制器需要对N个时序参数进行内存训练,还需根据特定算法计算得出参数的配置值;则可以由第一个存储控制器中的微处理单元完成该时序参数完整的内存训练;而由中央控制器将N个时序参数的内存训练进行划分,并和第二个存储控制器中的微处理单元分步完成N个时序参数进行内存训练。所述方法能够根据实际情况实时调整内存训练子任务划分方法,进一步提高多存储控制器***的内存训练效率。
可选地,在所述中央控制器启动时序参数的内存训练之前,所述方法还包括:
中央控制器通过通信单元与微处理单元进行通信交互;
优选地,所述通信单元为下述之一:设置于存储控制器中的通信寄存器、与存储控制器和中央控制器连接的存储单元、预设的通信机制。
具体的,本发明实施例所述方法还能够在中央控制器和微处理单元之间通过存储控制器内部的通用寄存器通信协调完成整个内存训练过程。主要利用多个微处理单元的并行性,以及微处理单元本地访问存储控制器寄存器的高效性,提供了一套针对多存储控制器***的高效内存训练方案,能够大幅提高了多存储控制器***的内存效率。
或者,所述通信单元可设置为其他可实现存储控制器和中央控制器之间进行通信的预设机制。
可选地,在所述中央控制器启动时序参数的内存训练之后,所述方法包括:
微处理单元获取通信单元中存储的当前状态值,当所述当前状态值为第一预设值时,则由微处理单元在存储控制器内执行预设时序参数的至少一个内存训练子任务,得出第一子任务结果并将所述第一子任务结果发送给中央控制器;
或者,中央处理器获取通信单元中存储的当前状态值,当所述当前状态值为第二预设值时,则中央控制器接收第一子任务结果后,根据所述第一子任务结果执行预设时序参数的至少一个内存训练子任务,确定出所述预设时序参数的配置值。
可选地,所述微处理单元获取通信单元中存储的当前状态值,当所述当前状态值为第一预设值时,则由微处理单元在存储控制器内执行预设时序参数的至少一个内存训练子任务,得出第一子任务结果并将所述第一子任务结果发送给中央控制器包括:
所述微处理单元获取通信单元中存储的当前状态值,判断所述当前状态值是否为第一预设值;
当所述当前状态值为第一预设值时,根据所述第一预设值确定待内存训练的预设参数;
根据所述预设参数,在微处理单元中配置待训练参数区间;
微处理单元遍历所述待训练参数区间中各个参数值进行内存训练;
确定符合所述预设参数内存训练要求的结果位图,并将所述结果位图作为第一子任务结果写入存储控制器的预设寄存器中。
可选地,所述中央处理器获取通信单元中存储的当前状态值,当所述当前状态值为第二预设值时,则中央控制器接收第一子任务结果后,根据所述第一子任务结果执行预设时序参数的至少一个内存训练子任务,确定出所述预设时序参数的配置值包括:
所述中央处理器获取通信单元中存储的当前状态值,判断所述当前状态值是否为第二预设值;
当所述当前状态值为第二预设值时,根据所述第二预设值判断是否需要从存储控制器的预设寄存器中读取已完成内存训练的时序参数对应结果位图;
所述中央控制器记录所述第一子任务结果;
所述中央控制器根据已完成内存训练的时序参数对应结果位图和所述第一子任务结果执行预设时序参数的至少一个内存训练子任务;
确定出所述预设时序参数的配置值。
比如,所述当前状态值可设置为S,通过判断S的奇偶来控制中央控制器或微处理单元执行下一步。
再比如,所述当前状态值可以设置为MN,判断M是否为第一预设值,或者判断N是否为第二预设值。
具体的,如图2所示,本实施例中所述方法可采用以下步骤实现多存储控制器的高效内存训练:
具体的,所述内存训练一般需要对多个参数进行训练,假设需要对P个参数进行训练。在完成第1个参数的训练后,分析得到该参数的最优配置值,将其配置到当前微处理单元(以下简称:MP)中,在此基础上进行第2个参数的训练,以提高第2个参数训练的准确性,后续参数依次类推。在状态寄存器中定义了2*P个状态,便于CPU和MP进行协调配合,完成内存训练过程,定义如下:
0---由CPU写入,表示开始参数0的训练。MP检测到后,开始进行参数0训练;
1---由MP写入,表示参数0训练结束,且将结果位图写入到数据寄存器中。CPU检测到后,读取结果位图;
2---由CPU写入,表示已经对读取到的参数0训练结果位图进行分析,找到参数0的最优配置值,写入到数据寄存器中。MP检测到后,使用参数0的最优配置值更新参数表,开始进行参数1的训练;
……
2*P-2---由CPU写入,表示已经对读取到的参数P-2结果位图进行分析,找到该参数的最优的配置值,写入到数据寄存器中。MP检测到后,使用该参数的最优配置值更新参数表,开始进行参数P-1的训练;
2*P-1---由MP写入,表示参数P-1训练结束,且将结果位图写入到数据寄存器中。CPU检测到后,读取结果位图,进行分析,找到参数P-1的最优配置值。
具体的M个MC并行工作,对于CPU端,运行M个线程分别处理与M个MP的交互,其中1个CPU线程的运行流程图如图2所示:
S301:向状态寄存器写状态0,向MP发起参数0的训练。
S302:读取状态寄存器,得到状态S。
S303:判断S是否为奇数,如果是,表示MP完成了参数(S-1)/2的训练,跳转到S304步骤,否则跳转到S302步骤,继续读取状态机状态。
S304:从数据寄存器读取MP写入的参数(S-1)/2的训练结果位图。
S305:记录当前MC的该类型参数的结果位图,以便进行二次分析。
S306:判断参数是否为最后一种参数,如果是,则结束流程,否则跳转到S307步骤。
S307:根据结果位图分析出该类参数的最佳配置值,写回到数据寄存器,向状态寄存器写状态S+1,以通知MP:CPU端已经完成当前参数的分析和记录,并发送该参数的最佳配置值,MP可在次基础上进行下一个参数的训练。
另外,如图3所示,本实施例中所述方法中微处理单元侧(即MP端)线程的流程具体可采用以下步骤实现快速内存训练;例如,对于MP端的运行流程可如图3所示:
S401:使用默认参数表中的时序参数配置当前MC,默认参数表中存储的是各个时序参数比较理想的配置值。
S402:读取状态寄存器,得到状态S。
S403:判断S是否为偶数,如果是,表示CPU完成了参数S/2的结果位图的读取和分析,并将分析出的最优参数值写入到数据寄存器中,跳转到S404步骤,否则跳转到S402步骤,继续读取状态机状态。
S404:设置当前参数种类序号为S/2,并在当前MC中配置当前参数为该类型参数的最小合法值A。
S405:向内存发送多个格式的数据。
S406:从内存中读取数据。
S407:判断发送和接收的数据是否一致。如果一致,则跳转到S408步骤,否则跳转到S409步骤。
S408:每种参数均有一个结果位图,位图长度等于参数合法配置值范围长度。对参数配置值A的结果,写入位图bit0中,配置值A+1的结果,写入位图bit1中,依次类推。该步骤表示数据传输成功,所以向位图对应位写1。
S409:表示数据传输失败,向位图对应位写0。
S410:判断当前配置值是否为最大合法值B。如果不是,跳转到步骤S411,否则跳转到步骤S412。
S411:递增参数配置值,以便进行下一个参数值的尝试。
S412:将当前参数的结果位图写入到数据寄存器,向状态寄存器写状态S+1,以通知CPU:MP端已经完成参数S/2的训练,并将结果位图写入到数据寄存器,CPU端可在此基础上读取该参数的结果位图。
S413:判断当前参数类型是否最后一个参数类型。如果不是,跳转到步骤S402,继续下一个参数类型的训练,否则结束流程。
通过以上对多MC***高效内存训练的结构和流程分析可知,M个MC的内存训练并行进行。在内存训练过程中,CPU虽然也需要间接访问MC内的通用寄存器,但只是进行少量的状态和结果数据传输,而内存训练中大量循环迭代过程中对MC控制寄存器的访问都是通过MP进行本地直接访问,效率大幅提高。
本发明实施例还提供一种内存训练的***,如图4所示,所述***包括:中央控制器,与中央控制器连接的至少两个并行连接的存储控制器,以及设置在所述存储控制器中的至少一个微处理单元;其中:
所述微处理单元,用于在中央控制器启动时序参数的内存训练之后,通过在存储控制器内执行至少一个内存训练子任务,得出第一子任务结果并将所述第一子任务结果发送给中央控制器;
所述中央控制器:用于启动时序参数的内存训练,以及接收第一子任务结果后,根据所述第一子任务结果执行至少一个内存训练子任务,确定出所述时序参数的配置值。
本发明实施例提供的内存训练的***,不仅为了克服现有技术无法解决多个存储控制器***内存训练的问题,还可以解决只通过简单扩展现有技术适应多存储控制器***导致内存训练效率不高的问题,本发明实施例利用***中至少两个微处理单元和中央控制器组成一套分布式***,将内存训练中计算难度小、但计算量大的内存训练子任务交给可以快速访问存储控制器寄存器的微处理单元进行,例如内存训练中循环迭代运算子任务;而将计算难度大的内存训练子任务交给可以执行高级语言,实现复杂逻辑的中央控制器进行,例如内存训练结果的分析和记录子任务。
因此,本发明实施例所述***能够充分发挥中央处理器和微处理单元各自优势配合完成内存训练,大大提高了多存储控制器***的内存训练效率;大幅提升了多存储控制器***的内存训练速度,推动人工智能、高性能计算的发展。
可选地,所述***还包括有:
通信单元,用于在中央控制器与微处理单元之间进行通信交互;
优选地,所述通信单元为设置于存储控制器中的通信寄存器、或者与存储控制器、中央控制器连接的存储单元、或预设的通信机制。
可选地,所述微处理单元包括:
获取模块,用于获取通信单元中存储的当前状态值;
判断模块,用于判断所述当前状态值是否为第一预设值;
确定模块,用于根据所述第一预设值确定待内存训练的预设参数、待训练参数区间;
配置模块,用于配置待训练参数区间;
第一内存训练模块,用于遍历所述待训练参数区间中各个参数值进行内存训练。
可选地,所述中央控制器包括:
获取模块,用于获取通信单元中存储的当前状态值;
判断模块,用于判断所述当前状态值是否为第二预设值;
读取模块,用于当所述当前状态值为第二预设值时,根据所述第二预设值判断是否需要从存储控制器的预设寄存器中读取已完成内存训练的时序参数对应结果位图;
记录模块,用于记录所述第一子任务结果;
第二内存训练模块,用于根据已完成内存训练的时序参数对应结果位图和所述第一子任务结果执行预设时序参数的至少一个内存训练子任务;确定出所述预设时序参数的配置值。
具体的,如图5所示,本实施例所述***可采用以下***结构实现多存储控制器的高效内存训练:
本发明的多存储控制器***内存训练方案采用分布式模式,由1个CPU和M个MP组成,所述MP是MC中的微处理单元,其可以执行微码,直接对MC寄存器进行配置和读取操作,以及进行简单逻辑运算。如图5所示:
其中虚线双向箭头表示CPU/MP对自定义的状态寄存器和数据寄存器的访问,实线双向箭头表示对MP对MC控制寄存器的访问和数据传输回路。
将内存训练功能使用微码实现后,和初始化微码一起编译,运行在MP中。当CPU需要发起内存训练时,CPU通知MP调用对应功能,开始内存训练。
CPU和MP之间通过MC内部的通用寄存器进行通信同步,定义一个通用寄存器作为状态寄存器,定义若干个通用寄存器作为数据寄存器。CPU和MP根据状态寄存器中的当前状态,同一时刻只能有一方可以进行状态寄存器和数据寄存器的写操作,所以不会发生写竞争的问题,不用特别的机制进行保护。
CPU负责发起内存训练,对内存训练结果位图进行分析,分发最优参数配置值。M个MP通过本地访问MC寄存器进行内存训练,并将内存训练结果位图传递给CPU,得到CPU下发的最优参数值,更新参数表,为下一个参数的训练做准备。之所以内存训练结果位图数据的分析处理由CPU端处理,而不是由MP自行处理,是因为MP端运行的是汇编微码,较难实现复杂的数据处理功能,且无法实现数据保存记录功能。
本实施例的***,可以用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本领域普通技术人员可以理解实现上述方法实施例中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (11)
1.一种内存训练的方法,其特征在于,包括有中央控制器,与中央控制器连接的至少两个并行连接的存储控制器,以及设置在所述存储控制器中的至少一个微处理单元;
中央控制器启动时序参数的内存训练;
由微处理单元在存储控制器内执行至少一个内存训练子任务,得出第一子任务结果并将所述第一子任务结果发送给中央控制器;
中央控制器接收第一子任务结果后,根据所述第一子任务结果执行至少一个内存训练子任务,确定出所述时序参数的配置值。
2.根据权利要求1所述的方法,其特征在于,所述时序参数的内存训练可预设为至少两个子任务,并由指定的中央控制器或者微处理单元进行执行;
或者,所述时序参数的内存训练由中央控制器根据预设条件将时序参数的内存训练动态划分为至少两个子任务,并指定对应的中央控制器或者微处理单元进行执行。
3.根据权利要求1或2所述的方法,其特征在于,所述内存训练的子任务包括有下述至少之一:循环迭代运算子任务、时序参数的最佳配置值计算子任务、内存训练结果分析子任务、内存训练结果记录子任务、内存训练优选的训练区间计算子任务。
4.根据权利要求1所述的方法,其特征在于,在所述中央控制器启动时序参数的内存训练之前,所述方法还包括:
中央控制器通过通信单元与微处理单元进行通信交互;
所述通信单元为下述之一:设置于存储控制器中的通信寄存器、与存储控制器和中央控制器连接的存储单元、预设的通信机制。
5.根据权利要求4所述的方法,其特征在于,在所述中央控制器启动时序参数的内存训练之后,所述方法包括:
微处理单元获取通信单元中存储的当前状态值,当所述当前状态值为第一预设值时,则由微处理单元在存储控制器内执行预设时序参数的至少一个内存训练子任务,得出第一子任务结果并将所述第一子任务结果发送给中央控制器;
或者,中央处理器获取通信单元中存储的当前状态值,当所述当前状态值为第二预设值时,则中央控制器接收第一子任务结果后,根据所述第一子任务结果执行预设时序参数的至少一个内存训练子任务,确定出所述预设时序参数的配置值。
6.根据权利要求5所述的方法,其特征在于,所述微处理单元获取通信单元中存储的当前状态值,当所述当前状态值为第一预设值时,则由微处理单元在存储控制器内执行预设时序参数的至少一个内存训练子任务,得出第一子任务结果并将所述第一子任务结果发送给中央控制器包括:
所述微处理单元获取通信单元中存储的当前状态值,判断所述当前状态值是否为第一预设值;
当所述当前状态值为第一预设值时,根据所述第一预设值确定待内存训练的预设参数;
根据所述预设参数,在微处理单元中配置待训练参数区间;
微处理单元遍历所述待训练参数区间中各个参数值进行内存训练;
确定符合所述预设参数内存训练要求的结果位图,并将所述结果位图作为第一子任务结果写入存储控制器的预设寄存器中。
7.根据权利要求5或6所述的方法,其特征在于,所述中央处理器获取通信单元中存储的当前状态值,当所述当前状态值为第二预设值时,则中央控制器接收第一子任务结果后,根据所述第一子任务结果执行预设时序参数的至少一个内存训练子任务,确定出所述预设时序参数的配置值包括:
所述中央处理器获取通信单元中存储的当前状态值,判断所述当前状态值是否为第二预设值;
当所述当前状态值为第二预设值时,根据所述第二预设值判断是否需要从存储控制器的预设寄存器中读取已完成内存训练的时序参数对应结果位图;
所述中央控制器记录所述第一子任务结果;
所述中央控制器根据已完成内存训练的时序参数对应结果位图和所述第一子任务结果执行预设时序参数的至少一个内存训练子任务;
确定出所述预设时序参数的配置值。
8.一种内存训练的***,其特征在于,包括:中央控制器,与中央控制器连接的至少两个并行连接的存储控制器,以及设置在所述存储控制器中的至少一个微处理单元;其中:
所述微处理单元,用于在中央控制器启动时序参数的内存训练之后,通过在存储控制器内执行至少一个内存训练子任务,得出第一子任务结果并将所述第一子任务结果发送给中央控制器;
所述中央控制器:用于启动时序参数的内存训练,以及接收第一子任务结果后,根据所述第一子任务结果执行至少一个内存训练子任务,确定出所述时序参数的配置值。
9.根据权利要求8所述的***,其特征在于,所述***还包括有:
通信单元,用于在中央控制器与微处理单元之间进行通信交互;
所述通信单元为设置于存储控制器中的通信寄存器、或者与存储控制器和中央控制器连接的存储单元、或预设的通信机制。
10.根据权利要求8或9所述的***,其特征在于,所述微处理单元包括:
获取模块,用于获取通信单元中存储的当前状态值;
判断模块,用于判断所述当前状态值是否为第一预设值;
确定模块,用于根据所述第一预设值确定待内存训练的预设参数、待训练参数区间;
配置模块,用于配置待训练参数区间;
第一内存训练模块,用于遍历所述待训练参数区间中各个参数值进行内存训练。
11.根据权利要求8或9所述的***,其特征在于,所述中央控制器包括:
获取模块,用于获取通信单元中存储的当前状态值;
判断模块,用于判断所述当前状态值是否为第二预设值;
读取模块,用于当所述当前状态值为第二预设值时,根据所述第二预设值判断是否需要从存储控制器的预设寄存器中读取已完成内存训练的时序参数对应结果位图;
记录模块,用于记录所述第一子任务结果;
第二内存训练模块,用于根据已完成内存训练的时序参数对应结果位图和所述第一子任务结果执行预设时序参数的至少一个内存训练子任务;确定出所述预设时序参数的配置值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011490385.6A CN112612608B (zh) | 2020-12-16 | 2020-12-16 | 一种内存训练的方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011490385.6A CN112612608B (zh) | 2020-12-16 | 2020-12-16 | 一种内存训练的方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112612608A CN112612608A (zh) | 2021-04-06 |
CN112612608B true CN112612608B (zh) | 2022-07-29 |
Family
ID=75239848
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011490385.6A Active CN112612608B (zh) | 2020-12-16 | 2020-12-16 | 一种内存训练的方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112612608B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117076081A (zh) * | 2023-08-22 | 2023-11-17 | 上海合芯数字科技有限公司 | 存储器训练方法、设备、存储介质及程序产品 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103605591A (zh) * | 2013-11-27 | 2014-02-26 | 华为技术有限公司 | 一种终端***内存初始化的控制方法及装置 |
CN107393578A (zh) * | 2016-05-16 | 2017-11-24 | 中国长城科技集团股份有限公司 | 一种内存训练的方法和装置 |
CN111221582A (zh) * | 2020-01-02 | 2020-06-02 | 深圳中电长城信息安全***有限公司 | 一种内存训练的方法及*** |
CN111966410A (zh) * | 2020-07-31 | 2020-11-20 | 龙芯中科技术有限公司 | 启动处理方法、装置、电子设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10503523B2 (en) * | 2017-06-30 | 2019-12-10 | Intel Corporation | Technologies to improve system boot performance and reliability |
-
2020
- 2020-12-16 CN CN202011490385.6A patent/CN112612608B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103605591A (zh) * | 2013-11-27 | 2014-02-26 | 华为技术有限公司 | 一种终端***内存初始化的控制方法及装置 |
CN107393578A (zh) * | 2016-05-16 | 2017-11-24 | 中国长城科技集团股份有限公司 | 一种内存训练的方法和装置 |
CN111221582A (zh) * | 2020-01-02 | 2020-06-02 | 深圳中电长城信息安全***有限公司 | 一种内存训练的方法及*** |
CN111966410A (zh) * | 2020-07-31 | 2020-11-20 | 龙芯中科技术有限公司 | 启动处理方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112612608A (zh) | 2021-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102011092B1 (ko) | 프로그래머블 지연을 가진 동적 랜덤 액세스 메모리(dram) 명령을 생성하기 위한 메모리 물리 계층 인터페이스 로직 | |
US8225064B2 (en) | Storage region allocation system, storage region allocation method, and control apparatus | |
US20150100744A1 (en) | Methods and apparatuses for requesting ready status information from a memory | |
US10657039B2 (en) | Control device for a motor vehicle | |
CN107391400B (zh) | 一种支持复杂访存指令的内存扩展方法和*** | |
CN111190842A (zh) | 直接存储器访问、处理器、电子设备和数据搬移方法 | |
CN112612608B (zh) | 一种内存训练的方法及*** | |
EP4167080A1 (en) | Memory initialisation apparatus and method, and computer system | |
US11829640B2 (en) | Asynchronous arbitration across clock domains for register writes in an integrated circuit chip | |
CN113033785B (zh) | 芯片、神经网络训练***、内存管理方法及装置、设备 | |
US11803447B2 (en) | Transaction processing method, apparatus, and electronic device for blockchain | |
JP5801158B2 (ja) | Ram記憶装置 | |
Akesson et al. | Automatic generation of efficient predictable memory patterns | |
US7945718B2 (en) | Microcontroller waveform generation | |
CN102063308B (zh) | 一种用于地震勘探资料处理流程控制的方法 | |
KR20170009000A (ko) | 메모리 콘트롤러, 이를 포함하는 메모리 시스템 및 메모리 콘트롤러의 동작 방법 | |
US10776139B2 (en) | Simulation apparatus, simulation method, and computer readable medium | |
KR102254715B1 (ko) | 소프트웨어 프로그래밍을 위한 레지스터 방법 및 장치 | |
CN116401990B (zh) | 处理中断事件的方法、装置、***和存储介质 | |
US20230069032A1 (en) | Data processing apparatus, chip, and data processing method | |
US20230342083A1 (en) | Data writing method, test method, writing apparatus, medium, and electronic device | |
US20230133490A1 (en) | Memory initialization apparatus and method, and computer system | |
US20240231699A9 (en) | Asynchronous arbitration across clock domains for register writes in an integrated circuit chip | |
CN117809731A (zh) | 一种轮换式交替访问3d nand存储器可靠性并行测试方法 | |
JPH03181093A (ja) | マルチポートメモリ装置 |
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 |