CN113867803A - 一种内存初始化装置、方法及计算机系统 - Google Patents

一种内存初始化装置、方法及计算机系统 Download PDF

Info

Publication number
CN113867803A
CN113867803A CN202010621216.5A CN202010621216A CN113867803A CN 113867803 A CN113867803 A CN 113867803A CN 202010621216 A CN202010621216 A CN 202010621216A CN 113867803 A CN113867803 A CN 113867803A
Authority
CN
China
Prior art keywords
memory
processor core
channel
initialization
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202010621216.5A
Other languages
English (en)
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202010621216.5A priority Critical patent/CN113867803A/zh
Priority to EP21833200.5A priority patent/EP4167080A4/en
Priority to PCT/CN2021/103355 priority patent/WO2022002095A1/zh
Publication of CN113867803A publication Critical patent/CN113867803A/zh
Priority to US18/147,936 priority patent/US20230133490A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4403Processor initialisation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/4072Circuits for initialization, powering up or down, clearing memory or presetting
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/023Detection or location of defective auxiliary circuits, e.g. defective refresh counters in clock generator or timing circuitry
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/028Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
    • 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/50Marginal testing, e.g. race, voltage or current testing
    • G11C29/50012Marginal testing, e.g. race, voltage or current testing of timing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0407Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals on power on

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)

Abstract

本申请提供一种内存初始化装置、方法及计算机系统,其中,内存初始化装置主要包括第一处理器核和包括至少一个第二处理器核的内存控制系统。在内存初始化过程中,第一处理器核可以调用第二处理器核以执行内存初始化。本申请实施例有利于缩短内存初始化用时。

Description

一种内存初始化装置、方法及计算机系统
技术领域
本申请涉及计算机处理领域,尤其涉及一种内存初始化装置、方法及计算机系统。
背景技术
计算机启动过程中往往需要对计算机内部各个功能系统(如内存系统、显卡系统等)进行初始化,其中内存初始化是启动过程中的重要一环。由于计算机对其内部一些功能系统的初始化需要内存的参与才能实现,因此计算机需要在完成内存初始化之后,才可以对计算机中的这些功能系统进行初始化。
一般来说,内存初始化主要是由计算机中处理器的处理器核实现的。处理器包括内存控制器,处理器核可以通过该内存控制器,控制其所连接的至少一个内存芯片的工作状态。示例性的,内存控制器可以是双倍数据速率(double data rate,DDR)子系统。处理器核执行内存初始化的过程主要是针对上述内存控制器和内存芯片的初始化,一般可以分为初始化配置、内存训练、内存测试和系统配置等阶段。
然而,随着内存芯片工作频率日渐提高(如新一代的DDR5内存芯片的工作频率最高可以达到6400MHz),导致内存初始化用时越来越长,进而影响了计算机的启动速度。例如,由于工作频率的提高,内存芯片对时序精度的要求也越来越高。在内存训练过程中,处理器核需要不断调节内存控制器中的相关参数,以调节提供给内存芯片的多种信号(如时钟信号、数据信号等)之间的时序关系,使经过内存训练之后的多种信号能够满足内存芯片的工作要求。由于内存芯片对时序精度的要求提高,使处理器核的调节次数大幅增加,进而延长了内存初始化用时。
因此,目前存在着内存初始化所需时间过长的问题。
发明内容
有鉴于此,本申请提供一种内存初始化装置、方法及计算机系统,有利于缩短内存初始化用时。
第一方面,本申请实施例提供一种内存初始化装置,该内存初始化装置主要包括:第一处理器核和内存控制器,其中,内存控制器中包括至少一个第二处理器核。在内存初始化过程中,处理器核可以调用上述至少一个第二处理器核,以执行内存初始化。
需要指出的是,上述内存初始化装置既可以是处理器,也可以是集成有处理器的处理器芯片。在上述示例中,处理器核可以包括处理器中的一个或多个内核,也就是说,既可以由单个内核调用至少一个第二处理器核,也可以由多个内核并行调用至少一个第二处理器核。其中,各个第二处理器核可以是具有逻辑计算能力的逻辑电路(或模块),能够基于第一处理器核的调用执行内存初始化中的全部或部分任务。此外,本申请实施例也不限制第二处理器核的数量,即,内存控制器中可以包括一个或多个第二处理器核。
内存初始化过程中,内存控制器会接收到大量的控制信息(如调节信息、读写信息)等。内存初始化用时严重受到这些控制信息的时延的影响,控制信息的时延越小,越有利于缩短内存初始化用时。
在本申请实施例所提供的内存初始化装置中,由于上述至少一个第二处理器核设置于内存控制器中,因此,与第一处理器核相比,上述至少一个第二处理器核与内存控制器中各结构(如内存通道)之间的物理链路更短,传输控制信息的链路时延更小。因此,通过调用至少一个第二处理器核执行内存初始化,有利于缩短内存初始化用时。而且,在上述至少一个第二处理器核执行内存初始化的部分任务期间,第一处理器核还可以并行执行其它内存初始化任务,从而有利于进一步缩短内存初始化用时。
示例性的,内存控制器还包括至少一个内存通道,其中,每个内存通道用于连接至少一个内存芯片。第一处理器核在调用上述至少一个第二处理器核时,具体可以调用上述至少一个第二处理器核对上述至少一个内存通道进行通道初始化。其中,通道初始化可以理解为与单个内存通道相关的初始化任务,例如,通道初始化可以包括内存训练、内存测试等任务中的一个或多个。
在内存初始化的用时中,通道初始化的用时占据了较大的部分,且通道初始化的用时严重受到控制信息的时延的影响。因此,本申请实施例中由内存控制器中的至少一个第二处理器核执行通道初始化,更有利于发挥第二处理器核的控制信息传输时延较小的优势,从而有利于进一步缩短内存初始化用时。
示例性的,内存控制器中的至少一个第二处理器核可以与内存控制器中的至少一个内存通道对应连接,该对应关系可以是一对一、一对多或多对一中的任意类型,本申请实施例对此并不多做限制。
本申请实施例中第一处理器核还可以在内存控制器中的每个内存通道皆完成通道初始化后,对内存控制器和上述至少一个内存通道所连接的内存芯片进行系统配置,从而生成管理信息,该管理信息可以用于第一处理器核管理上述至少一个内存通道连接的内存芯片。例如,系统配置可以包括内存交织配置、NUMA设置、memory map资源管理等。
可以理解,由于本申请实施例中的至少一个第二处理器核能够代替第一处理器核执行通道初始化,因此可以释放第一处理器核的时间,使得在至少一个第二处理器核执行通道初始化期间,第一处理器核可以并行执行其它组件的初始化。示例性的,该其它组件可以是除了与内存控制器耦合的内存芯片之外的任意组件,例如该组件可以是显卡、网卡等外设。第一处理器核还可以在内存控制器中任一内存通道完成通道初始化后,使用该已完成通道初始化的内存通道和该内存通道连接的至少一个内存芯片对除至少一个内存通道连接的内存芯片之外的其它组件进行初始化。采用该实现方式,可以并行执行内存初始化和其它组件的初始化,从而有利于进一步缩短电子设备(内存初始化装置)的开机时间。
在一种可能的实现方式中,第一处理器核可以在对第一内存通道和该第一内存通道连接的至少一个第一内存芯片完成初始化配置后,再调用第一内存通道对应连接的第二处理器核,该第一内存通道可以是内存控制器的至少一个内存通道中的任一内存通道。
在初始化配置中,第一处理器核可以对第一内存通道和第一内存通道连接的至少一个第一内存芯片完成基础的配置,使第一内存通道和内存芯片能够支持后续的通道初始化。例如,在初始化配置阶段,第一处理器核可以配置上述至少一个第一内存芯片的读写频率和第一内存通道的工作频率,使上述至少一个内存芯片的读写频率与第一内存通道的工作频率相适配。
本申请实施例中,第一处理器核既可以先对内存控制器中的至少一个内存通道皆完成初始化配置后,再统一调用至少一个第二处理器核。第一处理器核也可以并行初始化配置和调用第二处理器核。具体来说:
第一处理器核在调用第一内存通道对应连接的第二处理器核之后,还可以继续对第二内存通道和第二内存通道连接的至少一个第二内存芯片进行初始化配置,该第二内存通道可以是至少一个内存通道中未启动通道初始化的任一内存通道。采用该实现方式,可以并行执行初始化配置和通道初始化,从而有利于进一步缩短内存初始化用时。
为了实现第一处理器核对上述至少一个第二处理器核的调用,在一种可能的实现方式中,内存控制器还可以包括至少一个存储电路,该至少一个存储电路可以与内存控制器中的至少一个第二处理器核对应连接。示例性的,至少一个存储电路和至少一个第二处理器核之间的对应关系可以是一对一、一对多或多对一中的任意类型。
第一处理器核可以分别向上述至少一个存储电路写入调用信息,该调用信息可以是用于实现内存初始化的信息。上述至少一个第二处理器核中的任一第二处理器核,可以从与其对应连接的存储电路中读取调用信息,并执行调用信息。示例性的,该调用信息可以以程序代码的形式写入存储电路,第二处理器核通过执行调用信息,可以实现内存初始化。在上述示例中,上述存储电路可以包括寄存器、静态随机存储器等具备存储功能的电子器件中的一个或多个。
在一种可能的实现方式中,第一处理器核在向任一第二处理器核对应连接的存储电路写入调用信息之后,还可以向该存储电路写入解复位信息;上述任一第二处理器核在读取到解复位信息后,意味着第一处理器核已经向该任一第二处理器核对应连接的存储电路写入了解复位信息,因此该任一第二处理器核继而可以从存储电路读取上述调用信息,并执行上述调用信息。
一般来说,第一处理器核可以将解复位信息和调用信息写入上述任一第二处理器核对应连接的存储电路的不同位置。示例性的,该存储电路可以包括寄存器和静态随机存储器。第一处理器核可以将解复位信息写入寄存器的标志位,将调用信息写入静态随机存储器。
为了实现更为灵活的调用,在一种可能的实现方式中,调用信息可以包括至少一个指令。第一处理器核可以通过指令序号,调用任一第二处理器核执行该指令序号对应的指令。
在上例中,每个指令可以对应内存初始化中的一个或多个步骤。第一处理器核可以通过指令序号,灵活控制任一第二处理器核在接下来所要执行的步骤。
由于部分指令在运行时,还需要特定的执行参数。因此第一处理器核还可以向任一第二处理器核对应连接的存储电路写入执行参数。在此情况下,该任一第二处理器核可以根据对应连接的存储电路中的执行参数执行指令序号对应的指令。例如,第一处理器核调用任一第二处理器核对内存通道中的PHY进行配置时,第一处理器核可以向该任一第二处理器核对应连接的存储电路写入终结电阻的电阻值,该任一第二处理器核在对PHY进行配置的过程中,可以基于存储电路中终结电阻的电阻值配置PHY中的终结电阻。
在一种可能的实现方式中,上述任一第二处理器核还可以向第一处理器核反馈指令的执行结果。例如,向第一处理器核反馈该指令是否执行成功,使第一处理器核能够掌握该任一第二处理器核的执行情况。
一般来说,上述任一第二处理器核的固件存储于非易失性存储器中且可被更新,该固件包括上述调用信息。需要指出的是,内存控制器中的至少一个第二处理器核可以共用同一个固件,也可以分别对应不同的固件,本申请实施例对此并不多做限制。在本申请实施例中,可以通过升级上述任一第二处理器核的固件来更新调用信息,例如可以新增、减少、修改调用信息中的指令,从而可以实现内存初始化的拓展和灵活配置。
一般来说,第一处理器核在将调用信息写入任一第二处理器核对应连接的存储电路之前,还可以为该存储电路分配通信地址,第一处理器核可以通过该通信地址向上述存储电路读取或写入数据。
需要指出的是,本申请实施例所提供的内存初始化装置不仅有利于缩短内存初始化用时,还有利于对内存控制器进行功能拓展,使内存控制器能够灵活适应不同的应用需求。
例如:
1、电源管理
在执行完内存初始化之后,第一处理器核还可以调用第一内存通道对应连接的第二处理器核管理电源的输出功率,该第一内存通道可以是内存控制器中的任一内存通道,该电源可以为该第一内存通道所连接的至少一个第一内存芯片供电。第一内存通道对应连接的第二处理器核则可以监控上述至少一个第一内存芯片的工作状态;以及,根据该至少一个第一内存芯片的工作状态,调节电源的输出功率。
其中,第一内存芯片的工作状态可以包括第一内存芯片在单位时间内的读写次数、第一内存芯片可纠正错误出现次数等等。以第一内存芯片在单位时间内的读写次数为例,在第一内存芯片在单位时间内的读写次数大于第一次数阈值时,第一内存通道对应连接的第二处理器核可以增大电源的输出功率,也可以理解为增大电源的输出电压,和/或,增大电源的输出电流。在第一内存芯片在单位时间内的读写次数小于第二次数阈值时,第一内存通道对应连接的第二处理器核可以降低电源的输出功率,也可以理解为降低电源的输出电压,和/或,降低电源的输出电流。
采用该实现方式,第一内存通道对应连接的第二处理器核可以根据第一内存芯片的工作状态灵活调节电源的输出功率,从而有利于降低第一内存芯片的功耗。
2、重复内存训练
在执行完内存初始化之后,第一处理器核还可以调用内存控制器中的至少一个第二处理器核执行内存训练。具体来说,在内存使用过程中,内存通道中的时序有可能会出现偏移,使内存读写的稳定性降低。有鉴于此,第一处理器核调用至少一个第二处理器核执行内存训练,有利于使内存通道的时序始终保持较为精确的对齐效果,有利于提高内存读写的稳定性。
3、故障处理
在执行完内存初始化之后,第一处理器核还可以调用内存控制器中的至少一个第二处理器核进行故障处理。上述至少一个第二处理器核可以在内存控制器故障时,确定内存控制器中的故障节点,并向第一处理器核反馈该故障节点的位置信息。
4、固件升级
第一处理器核还可以升级至少一个第二处理器核的固件,从而更新至少一个第二处理器核的功能。例如,第一处理器核可以通过升级至少一个第二处理器核的固件,使上述至少一个第二处理器核可以具备故障处理、电源管理等功能。又例如,第一处理器核还可以通过升级至少一个第二处理器核的固件以更新固件中的调用信息,从而优化上述至少一个第二处理器核所执行的内存初始化过程。采用该实现方式,无需改变内存初始化装置的硬件架构,便可以灵活拓展及优化内存控制器的功能。
第二方面,本申请实施例提供一种内存初始化方法,该方法可以应用于包括第一处理器核和内存控制器的装置,其中,该内存控制器包括至少一个第二处理器核。第二方面中相应方案的技术效果可以参照第一方面中对应方案可以得到的技术效果,重复之处不予详述。示例性的,本申请实施例所提供的内存初始化方法主要包括:第一处理器核调用内存控制器中的至少一个第二处理器核,以执行内存初始化。
示例性的,内存控制器还包括至少一个内存通道,其中,每个内存通道用于连接至少一个内存芯片。第一处理器核在调用上述至少一个第二处理器核时,具体可以调用上述至少一个第二处理器核对内存控制器中的至少一个内存通道进行通道初始化。示例性的,通道初始化可以包括内存训练,和/或,内存测试。
示例性的,内存控制器中的至少一个第二处理器核可以与上述至少一个内存通道对应连接。
第一处理器核还可以在内存控制器中的每个内存通道皆完成通道初始化后,对内存控制器和上述至少一个内存通道所连接的内存芯片进行系统配置,从而生成管理信息,该管理信息可以用于第一处理器核管理上述至少一个内存通道连接的内存芯片。例如系统配置可以包括内存交织配置、NUMA设置、memory map资源管理等。
可以理解,由于本申请实施例中至少一个第二处理器核能够代替第一处理器核执行通道初始化,因此可以释放第一处理器核的时间,使得在至少一个第二处理器核执行通道初始化期间,第一处理器核可以并行执行其它组件的初始化。示例性的,第一处理器核还可以在任一内存通道完成通道初始化后,使用该已完成通道初始化的任一内存通道和该任一内存通道连接的至少一个内存芯片对除至少一个内存通道连接的内存芯片之外的其它组件进行初始化。
在一种可能的实现方式中,第一处理器核可以在对第一内存通道和第一内存通道连接的至少一个第一内存芯片完成初始化配置后,调用第一内存通道对应连接的第二处理器核,该第一内存通道可以是内存控制器的至少一个内存通道中的任一内存通道。
本申请实施例中,第一处理器核既可以先对内存控制器中的至少一个内存通道皆完成初始化配置后,再统一调用至少一个第二处理器核。第一处理器核也可以并行初始化配置和调用第二处理器核。具体来说:
第一处理器核可以在调用第一内存通道对应连接的第二处理器核之后,继续对第二内存通道和第二内存通道连接的至少一个第二内存芯片进行初始化配置,第二内存通道为至少一个内存通道中未启动通道初始化的任一内存通道。
为了实现第一处理器核对上述至少一个第二处理器核的调用,在一种可能的实现方式中,内存控制器还可以包括至少一个存储电路,该至少一个存储电路可以与内存控制器中的至少一个第二处理器核对应连接。
第一处理器核可以分别向上述至少一个存储电路写入调用信息,该调用信息可以是用于实现内存初始化的信息。上述至少一个第二处理器核中的任一第二处理器核,可以从与其对应连接的存储电路中读取该调用信息,并执行该调用信息。示例性的,上述存储电路可以包括寄存器,和/或,静态随机存储器中的任一个或多个。
在一种可能的实现方式中,第一处理器核在向任一第二处理器核对应连接的存储电路写入调用信息之后,还可以向该存储电路写入解复位信息。上述任一第二处理器核则可以在读取到解复位信息后,从与其对应连接的存储电路读取上述调用信息,并执行上述调用信息。
为了实现更为灵活的调用,在一种可能的实现方式中,调用信息可以包括至少一个指令。第一处理器核可以通过指令序号,调用任一第二处理器核执行该指令序号对应的指令。
由于部分指令在运行时,还需要特定的执行参数。因此,第一处理器核还可以先向任一第二处理器核对应连接的存储电路写入执行参数,再通过指令序号,调用该任一第二处理器核根据该执行参数执行指令序号对应的指令。
在一种可能的实现方式中,上述任一第二处理器核还可以向第一处理器核反馈指令的执行结果。
一般来说,上述任一第二处理器核的固件存储于非易失性存储器中且可被更新,该固件包括上述调用信息。
一般来说,第一处理器核在向任一第二处理器核对应连接的存储电路写入调用信息之前,还可以为该存储电路分配通信地址,第一处理器核可以通过该通信地址向该存储电路读取或写入数据。
需要指出的是,本申请实施例所提供的内存初始化装置不仅有利于缩短内存初始化用时,还有利于对内存控制器进行功能拓展,使内存控制器能够灵活适应不同的应用需求。
例如:
1、电源管理
在执行完内存初始化之后,第一处理器核还可以调用第一内存通道对应连接的第二处理器核管理电源的输出功率,该第一内存通道可以是内存控制器中的任一内存通道,该电源可以为至少一个第一内存芯片供电;第一内存通道对应连接的第二处理器核则可以监控至少一个第一内存芯片的工作状态;以及,第一内存通道对应连接的第二处理器核可以根据至少一个第一内存芯片的工作状态,调节电源的输出功率。
2、重复内存训练
在执行完内存初始化之后,第一处理器核还可以调用内存控制器中的至少一个第二处理器核执行内存训练。
3、故障处理
在执行完内存初始化之后,第一处理器核还可以调用内存控制器中的至少一个第二处理器核进行故障处理。在内存控制器故障时,上述至少一个第二处理器核可以确定内存控制器中的故障节点,并向第一处理器核反馈故障节点的位置信息。
4、固件升级
第一处理器核还可以升级至少一个第二处理器核的固件,从而更新第二处理器核的功能。例如,第一处理器核可以通过升级至少一个第二处理器核的固件,使上述至少一个第二处理器核可以具备故障处理、电源管理等功能。又例如,第一处理器核还可以通过升级至少一个第二处理器核的固件以更新固件中的调用信息,从而优化上述至少一个第二处理器核所执行的内存初始化过程。
第三方面,本申请实施例提供一种计算机系统,该计算机系统包括如第一方面中任一项所提供的内存初始化装置,以及与该内存初始化装置耦合的内存芯片。示例性的,该计算机系统既可以是电脑主板,也可以是笔记本电脑、手机、数码相机等电子设备,本申请实施例对此并不多作限制。
本申请的这些方面或其它方面在以下实施例的描述中会更加简明易懂。
附图说明
图1为一种电子设备结构示意图;
图2为一种内存训练前后DQS信号和数据信号之间的时序关系对比示意图;
图3为本申请实施例提供的一种内存初始化装置结构示意图;
图4为本申请实施例提供的一种具体的内存初始化装置结构示意图;
图5为本申请实施例提供的另一种具体的内存初始化装置结构示意图;
图6为本申请实施例提供的一种从核子系统结构示意图;
图7为本申请实施例提供的一种第二处理器核调用方式示意图;
图8为本申请实施例提供的一种SRAM中的数据存储结构示意图;
图9为本申请实施例提供的一种内存初始化方法流程示意图;
图10为本申请实施例提供的一种非易失性存储器的存储结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述。方法实施例中的具体操作方法也可以应用于装置实施例或系统实施例中。需要说明的是,在本申请的描述中“至少一个”是指一个或多个,其中,多个是指两个或两个以上。鉴于此,本发明实施例中也可以将“多个”理解为“至少两个”。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。另外,需要理解的是,在本申请的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
电子设备的启动速度是衡量电子设备性能的重要指标,以计算机为例,计算机启动速度越快,越可以缩短用户的等待时间,从而越有利于提高用户使用体验。计算机中存在多种功能系统,如内存系统、显卡系统等等,计算机需要对大多数功能系统皆完成初始化之后,才可以完成启动。
一般来说,在计算机启动过程中,计算机往往需要先对内存系统完成初始化,才可以利用已完成初始化的内存系统对其它功能系统进行初始化。因此,对内存系统的初始化(也就是内存初始化)是电子设备启动过程中的重要环节,内存初始化用时越短,便越有利于加快电子设备的启动速度。
通常,可以由电子设备中的处理器,如中央处理器(central processing unit,CPU),实现内存初始化。图1示例性示出了一种电子设备结构示意图。如图1所示,该电子设备100包括处理器101和至少一个内存芯片(内存芯片0至L-1),L为大于或等于1的整数。
处理器101包括至少一个内核(core),如图1中所示的内核0至内核N-1,N为大于或等于1的整数。其中,每个内核皆可以实现逻辑计算功能。当N大于1时,处理器101也可以称为多核处理器,在此情况下,处理器101中的多个内核可以进行并行逻辑计算,以提高处理器101整体的运算速度。
如图1所示,处理器101还可以包括内存控制器102,该内存控制器102可以控制内存芯片0至内存芯片L-1,例如,内存控制器102可以执行对内存芯片0至内存芯片L-1的读写操作、刷新操作等。示例性的,该内存控制器102可以是双倍数据速率(double data rate,DDR)子系统。
具体来说,如图1所示,内存控制器102可以包括至少一个内存通道,如内存通道1至内存通道M,M为大于或等于1的整数。每个内存通道可以连接至少一个内存芯片,每个内存通道皆可以控制与其连接的至少一个内存芯片。
如图1中内存通道1连接内存芯片0和内存芯片1,且内存通道1可以控制内存芯片0和内存芯片1。又例如内存通道M连接内存芯片L-2和内存芯片L-1,且内存通道M可以控制内存芯片L-2和内存芯片L-1。
其中,内存通道1包括DDR管理控制器(DDR management controller,DMC)1和物理层接口(physical interface,PHY)1。以读写操作为例,DMC1可以解析内核0至内核N-1发送的读写请求,并根据解析结果,通过PHY1从内存芯片0和内存芯片1中读写数据。类似的,内存通道2也可以包括DMC2和PHY2,内存通道M也可以包括DMCM和PHYM,对此不再赘述。
在电子设备上电后,处理器101可以在完成基础的系统组件初始化后,便执行内存初始化。例如,处理器101可以在完成系统锁相环(system phase locked loop,systemPLL)初始化、串口和集成总线(inter-integrated circuit,I2C)接口等系统组件的初始化后,再执行内存初始化。
通常,在进行内存初始化的过程中,处理器101不仅需要对内存芯片0至内存芯片L-1进行初始化,还需要对内存控制器102进行初始化。所谓内存初始化,可以理解为对内存芯片0至内存芯片L-1,和内存控制器102中多个参数的配置与调节。
以单核初始化方式为例,处理器101中存在一个内核为主核,由该主核执行对内存控制器102和内存芯片0至内存芯片L-1的初始化。
在一个具体示例中,假设内核0为主核。内核0可以按照预设顺序依次初始化内存控制器102中的M个内存通道,以及内存芯片0至内存芯片L-1。例如,内核0可以先初始化内存通道1、内存芯片0和内存芯片1,再初始化内存通道2、内存芯片2和内存芯片3,……,最后初始化内存通道M、内存芯片L-2和内存芯片L-1。
以对内存通道1、内存芯片0和内存芯片1的初始化为例,该过程主要包括初始化配置、内存训练和内存测试等阶段。具体来说:
初始化配置
在初始化配置期间,内核0可以对内存控制器102中的M个内存通道和内存芯片0至内存芯片L-1进行基础的配置,使内存控制器102和内存芯片0至内存芯片L-1能够支持后续的通道初始化。
示例性的,内核0可以分别读取内存芯片I0和内存芯片1中的串行存在检测(serial presence detect,SPD)信息。SPD信息存储于内存芯片中的一个小容量的存储器中,其中包括了内存芯片的内存容量、读写频率等信息。内核0可以通过尝试读取SPD信息确定内存通道1是否连接有内存芯片0和内存芯片1。在确定内存通道1连接有内存芯片0和内存芯片1后,内核0还可以根据SPD信息对内存通道1、内存芯片0和内存芯片1进行初始化配置。
示例性的,内存芯片0和内存芯片1通常具有相同的读写频率。内核0可以根据内存芯片0和内存芯片1的读写频率,配置与内存芯片0和内存芯片1适配的锁相环(phaselocked loop,PLL)的工作频率,该PLL可以为内存芯片0和内存芯片1提供时钟信号。再例如,内核0还可以根据内存芯片0和内存芯片1的读写频率配置内存通道1的工作频率,使内存通道1的工作频率与内存芯片0和内存芯片1的读写频率相适配,从而使内存通道1所输出的控制信号能够被内存芯片0和内存芯片1识别。
内存训练
内存通道1所输出的控制信号包括数据选通信号(data strobe signal,DQS)和数据信号,其中,DQS的上升沿或下降沿可以触发内存芯片0和内存芯片1接收数据信号。示例性的,DQS的上升沿可以触发内存芯片0和内存芯片1接收数据信号。如图2所示,DQS与数据信号具有相同的周期T。在一个周期T内,根据DQS的上升沿进一步可以分为两部分,其中,上升沿之前的部分可以称为建立(setup)时间,上升沿之后的部分可以称为保持(hold)时间。
如图2所示的内存训练前的DQS,根据内存训练前的DQS的上升沿,可以将一个周期T分为setup时间t1和hold时间t2。其中,setup时间t1较短,使得内存芯片0(内存芯片1同理)会过早开始接收数据信号,而数据信号本身的电平变化也需要一定的时延,在此情况下,便会导致内存芯片0有可能出现误读。
例如,内存芯片0在数据信号上升至高电平之前便开始接收数据信号,则有可能将高电平的数据信号误读为低电平的数据信号。由此可见,内存训练前的DQS不利于提高内存通道1、内存芯片0和内存芯片1的稳定性。同理,若hold时间t2较短,则有可能使内存芯片0来不及读取数据信号的电平状态,同样也会出现稳定性问题。
而如图2所示的内存训练后的DQS,根据内存训练后的DQS的上升沿,可以将一个周期T分为setup时间t3和hold时间t4。其中,setup时间t3和hold时间t4具有相同或相近的时长。其中相近可以理解为setup时间t3与hold时间t4之间的差值不大于设定阈值。在此情况下,内存芯片0可以读到数据信号的较为准确的电平状态,有利于保障内存通道1、内存芯片0和内存芯片1的稳定性。
需要指出的是,调节DQS与数据信号之间的时序关系通常只是内存训练中的一部分任务。除了DQS信号和数据信号的对齐之外,还需要进行DQS和时钟信号等多种信号之间的时序对齐。此外,在内存训练期间,内核0还可以调节内存通道1中终结电阻的大小、参考电压值等等,本申请实施例对此不再一一列举。通过内存训练,可以使内存通道1与内存芯片0和内存芯片1相匹配,进而使得内存通道1、内存芯片0和内存芯片1可以在后续内存控制过程中稳定运行。
内存测试
在对内存通道1、内存芯片0和内存芯片1完成内存训练之后,内核0还可以对内存通道1、内存芯片0和内存芯片1进行内存测试,以验证内存训练结果。一般来说,内存测试主要包括边缘测试(test margin)、扫描眼图(scan eye)、存储测试(test memory)和存储清零(clean memory)等步骤。
待内存测试通过之后,便完成了对内存通道1、内存芯片0和内存芯片1的通道初始化。内核0可以按照以上过程,依次完成对内存通道1、内存芯片0和内存芯片,至内存通道M、内存芯片L-2和内存芯片L-1的初始化。
在此之后,内核0还可以对内存控制器102和内存芯片0至内存芯片L-1进行系统配置,从而生成管理信息,该管理信息可以用于内核0至内核N-1管理内存芯片0至内存芯片L-1。例如,系统配置可以包括内存交织配置、非统一内存访问(non uniform memory access,NUMA)NUMA设置等等。
虽然采用上述过程可以实现内存初始化,但随着内存芯片容量的提升和内存芯片读写频率的提高,采用上述过程实现内存初始化的用时越来越长。例如,在进行图2所示的内存训练的过程中,由于内存芯片0和内存芯片1的读写频率提高,使得周期时长T缩短,内核0需要执行更为精细的调节才可以使setup时间t3和hold时间t4相同或相近,这便导致内核0需要向内存通道1发送更多数量的调节信息。
而如图1所示,内核0与内存通道1之间间隔有较长的物理链路,该物理链路中还包括本地代理(home agent,HA)等元件,使得内核0与内存通道1之间时延较长。在此基础上附加调节信息的数量叠加效果,便会大大延长对内存通道1进行内存训练的用时,而对其它内存通道的内存训练也存在的同样的问题,因此会极大延长内存初始化用时。此外,由于内存芯片的读写频率提高,还可能会增大在内存训练过程中需要进行时序对齐的信号数量,这又进一步延长了内存初始化用时。
又例如,在内存测试过程中,内核0会向内存芯片0写入数据(存储测试),在测试完成之后,还需要将测试过程中写入的数据清零(存储清零)。由于内存芯片0容量增加,使得内核0需要在存储测试中,向内存芯片0写入更多的数据,并在存储清零中,清除掉更多的数据。可见,随着内存芯片容量的增加,也会增加内核0与内存通道1之间读写信息的数量,因此也会导致内存初始化用时延长。
综上所述,受内存控制器102接收到的控制信息(如上述调节信息、读写信息)时延的影响,随着内存芯片容量的提升和内存芯片工作频率的提高,内存初始化用时越来越长。
有鉴于此,本申请实施例提供一种内存初始化装置和方案,通过在内存控制器中增加第二处理器核,以缩短内存初始化用时。需要指出的是,本申请实施例所提供的内存初始化装置既可以是用于控制内存的处理器,也可以是集成有处理器的芯片,如CPU、片上系统(system on chip,SoC)、电子控制单元(electronic control unit)等等。
示例性的,如图3所示,在本申请实施例所提供的处理器30中包括第一处理器核31和内存控制器32,该内存控制器32中包括第二处理器核321。在执行内存初始化的过程中,
第一处理器核31可以调用第二处理器核321,以执行内存初始化。
由于第二处理器核321设置于内存控制器32中,因此与第一处理器核31相比,第二处理器核321与内存控制器32中各结构(如内存通道)之间的物理链路更短,信号传输的链路时延更小。因此,通过调用第二处理器核321执行内存初始化中的部分或全部任务,有利于缩短初始化用时。而且,第二处理器核321在执行内存初始化的部分任务期间,第一处理器核31还可以并行执行其它内存初始化任务,从而有利于进一步缩短内存初始化的用时。
接下来,分别对第二处理器核321、第一处理器核31的具体实现方式作进一步的示例性说明:
1、第二处理器核321
第二处理器核321可以是具有逻辑计算能力的逻辑电路(或模块),能够基于第一处理器核的调用执行内存初始化中的全部或部分任务。
在一种可能的实现方式中,第二处理器核321可以主要用于执行与单个内存通道相关的初始化任务,也就是通道初始化。例如,通道初始化可以包括内存训练、内存测试等任务中的一个或多个。
在目前的内存初始化方案中,第一处理器核31需要向内存控制器32发送大量的控制信息(如上述内存测试过程中发送的读写信息、上述内存训练过程中发送的调节信息等)。受第一处理器核31与内存控制器32之间链路时延的影响,使得通道初始化在内存初始化中占据了较大的用时。
相较于第一处理器核31与内存控制器32之间的链路时延,第二处理器核321由于位于内存控制器32内部,因此可以实现更小的链路时延。进而使得调用第二处理器核321进行通道初始化,可以较为显著的缩短通道初始化用时,进而可以缩短内存初始化的整体用时。
需要指出的是,本申请实施例并不限制内存控制器32中第二处理器核321的数量。例如图4中,内存控制器32可以包括一个第二处理器核321,该第二处理器核321分别与M个内存通道连接。在此情况下,第一处理器核31可以调用该第二处理器核321对M个内存通道进行通道初始化。
又例如,内存控制器32中可以包括多个第二处理器核,每个第二处理器核可以连接一个或多个内存通道。具体来说,每个第二处理器核与内存通道之间的连接关系可以是一对一、一对多或多对一中的任意一种。
在一个第二处理器核连接多个内存通道的情况下,处理器核31可以调用该第二处理器核对其所连接的多个内存通道进行通道初始化。在多个第二处理器核连接一个内存通道的情况下,第一处理器核31可以调用该多个第二处理器核对该内存通道进行通道初始化。
在一个第二处理器核连接一个内存通道的情况下,示例性的,如图5所示。内存控制器32包括M个第二处理器核(第二处理器核321-1至第二处理器核321-M),该M个第二处理器核与内存控制器32中的M个内存通道分别一一对应连接。
其中,每一个第二处理器核皆可以基于处理器核31的调用,对其所连接的内存通道进行通道初始化。也就是说,第一处理器核31可以调用任一第二处理器核,对该第二处理器核连接的内存通道进行通道初始化。例如,第一处理器核31可以调用第二处理器核321-1对内存通道1进行通道初始化,调用第二处理器核321-M对内存通道M进行通道初始化。
为了便于理解,在未特别说明的情况下,本申请实施例接下来以图5所示的处理器30为例进行说明。
2、第一处理器核31
本申请实施例中,第一处理器核31既可以包括处理器30中的一个内核(如内核0作为主核),也可以包括处理器30中的多个内核。也就是说,既可以由处理器30中的一个内核调用内存控制器32中的M个第二处理器核,也可以由处理器30中的多个内核并行调用内存控制器32中的M个第二处理器核。
例如,M取值为8,即内存控制器32包括8个内存通道和8个第二处理器核(第二处理器核321-1至第二处理器核321-8)。其中,可以由内核0调用第二处理器核321-1至第二处理器核321-3,对内存通道1至内存通道3进行通道初始化。由内核1调用第二处理器核321-4至第二处理器核321-8,对内存通道4至内存通道8进行通道初始化。采用该实现方式,内核0和内核1可以并行调用第二处理器核,有利于进一步缩短初始化用时。
本申请实施例中,第一处理器核31可以调用第二处理器核。有鉴于此,如图3所示,内存控制器32还可以包括存储电路322,存储电路322可以作为第一处理器核31调用第二处理器核321的接口。
需要指出的是,本申请实施例并不限制存储电路322的数量,内存控制器32可以包括一个或多个存储电路。每个存储电路与第二处理器核之间的对应关系可以是一对一、一对多或多对一中的任一种。例如,在一对一的情况下,一个存储电路可以作为一个第二处理器核的调用接口。在一对多的情况下,一个存储电路可以作为多个第二处理器核的调用接口。在多对一的情况下,多个存储电路共同作为一个第二处理器核的调用接口。
为了便于理解,本申请实施例接下来以一对一的对应关系为例进行说明。如图4中,第二处理器核321对应连接存储电路322。又例如图5中,第二处理器核321-1与存储电路322-1对应连接,……,第二处理器核321-M与存储电路322-M对应连接。
在存储电路与第二处理器核一一对应连接的情况下,存储电路与第二处理器核也可以理解为一从核子系统。如图6所示,从核子系统600为图5中第二处理器核321-1和存储电路322-1构成的从核子系统。其中,存储电路322-1分别与第一处理器核31和第二处理器核321-1连接,第二处理器核321-1与内存通道1连接。
第一处理器核31在调用第二处理器核321-1时,可以向存储电路322-1写入调用信息,第二处理器核321-1可以从存储电路322-1读取该调用信息,并执行该调用信息,从而实现了对第二处理器核321-1的调用。其中,该调用信息可以是用于实现内存初始化的信息。示例性的,调用信息可以以程序代码的形式写入存储电路322-1,第二处理器核321-1通过执行调用信息,以执行内存初始化。例如,第二处理器核321-1可以通过执行调用信息,以实现对内存通道1的通道初始化。
在一种可能的实现方式中,第一处理器核31在向存储电路322-1写入调用信息之后,还可以向存储电路322-1写入解复位信息。第二处理器核321-1在读取到解复位信息后,从存储电路322-1读取并执行该调用信息。
一般来说,第一处理器核31可以将解复位信息和调用信息写入存储电路322-1的不同位置。例如图6所示,存储电路322-1包括寄存器611和静态随机存储器(static randomaccess memory,SRAM)612。第一处理器核31可以将解复位信息可以写入寄存器611的标志位,将调用信息写入SRAM612。
示例性的,寄存器611中标志位的初始电平状态可以是0,写入解复位信息之后,该标志位的电平状态变为1。第二处理器核321-1可以周期性读取标志位的电平状态。当标志位的电平状态变为1后,便意味着第一处理器核31向SRAM612中写入了调用信息。第二处理器核321-1便可以从SRAM612中读取并执行调用信息。
一般来说,第一处理器核31在调用第二处理器核321-1之前,还可以先为存储电路322-1分配通信地址,继而,第一处理器核31可以通过通信地址向存储电路322-1读取或写入数据。例如,第一处理器核31可以将存储电路322-1的寄存器611和SRAM612在第一处理器核31的寻址范围内统一编址,使得第一处理器核31可以向寄存器611和SRAM612读取或写入数据。
接下来,对调用信息作进一步的示例性说明。
在一种可能的实现方式中,调用信息可以以完整的代码的形式写入第二处理器核321-1,第二处理器核321-1执行该完整的代码,可以自行完成对内存通道1的通道初始化。
在另一种可能的实现方式中,为了实现更为灵活的调用,调用信息可以包括至少一个指令。其中,每个指令可以对应内存初始化中的一个或多个步骤。第一处理器核31在调用第二处理器核321-1时,可以通过指令序号,灵活调用第二处理器核321-1执行指令序号对应指令,从而灵活控制第二处理器核321-1所执行的步骤。
示例性的,调用信息至少可以分为配置功能信息、训练功能信息和测试功能信息。其中,配置功能信息所包括的指令对应通道配置的相关步骤,第二处理器核321-1可以通过运行配置功能信息,完成对内存通道1、内存芯片0和内存芯片1的配置。训练功能信息所包括的指令对应内存训练的相关步骤,第二处理器核321-1可以通过运行训练功能信息,对内存通道1进行内存训练。测试功能信息所包括的指令对应内存测试的相关步骤,第二处理器核321-1通过运行测试功能信息,对内存通道1进行内存测试。
以配置功能信息为例,指令序号与指令之间的对应关系可以如下表一所示:
表一
指令序号 指令
f1 配置RCD
f2 配置DB
f3 配置PHY
f4 配置DMC
f5 配置MR
f6 配置其它
其中,指令序号f1对应的指令为配置注册时钟驱动器(registered clockdriver,RCD)。RCD位于内存芯片0和内存芯片1中,第一处理器核31可以通过指令序号f1调用第二处理器核321-1对内存芯片0和内存芯片1中的RCD进行配置。
指令序号f2对应的指令为配置数据缓冲(data buffer,DB)。DB位于内存芯片0和内存芯片1中,第一处理器核31可以通过指令序号f2调用第二处理器核321-1对内存芯片0和内存芯片1中的DB进行配置。
指令序号f3对应的指令为配置PHY,处理器核31可以通过指令序号f3调用第二处理器核321-1对PHY进行配置。
指令序号f4对应的指令为配置DMC,处理器核31可以通过指令序号f4调用第二处理器核321-1对DMC进行配置。
指令序号f5对应的指令为配置模式寄存器(mode register,MR),处理器核31可以通过指令序号f5调用第二处理器核321-1对MR进行配置。
由于部分指令在运行时,还需要特定的执行参数。因此,处理器核31在调用第二处理器核321-1执行某一指令时,还可以向存储电路322-1写入该指令对应的执行参数,使第二处理器核321-1可以执行该指令。
例如,第一处理器核31通过指令序号f3调用第二处理器核321-1对PHY进行配置。处理器核31可以向存储电路322-1写入终结电阻的电阻值,第二处理器核321-1在对PHY进行配置的过程中,可以基于存储电路322-1中终结电阻的电阻值配置PHY中的终结电阻。
在一种可能的实现方式中,第二处理器核321-1在执行完任一指令后,还可以向第一处理器核31反馈该指令的执行结果。例如,向第一处理器核31反馈该指令是否执行成功。
在一种可能的实现方式中,如图7所示,第一处理器核31可以将指令序号写入寄存器611,将指令对应的执行参数写入SRAM612。第二处理器核321-1在从寄存器611读取到指令序号后,从SRAM612中读取与该指令序号对应的指令,和该指令对应的执行参数。进而,第二处理器核321-1可以根据读取到的执行参数执行该目标指令。
在执行完目标指令之后,第二处理器核321-1还可以将指令的执行结果写入SRAM612,第一处理器核31进而可以从SRAM612读取到该指令的执行结果,从而使第一处理器核31能够掌握第二处理器核321-1的执行情况。在另一种可能的实现方式中,第一处理器核31也可以将指令序号写入SRAM612。
本申请实施例中,由存储电路322-1作为第一处理器核31与第二处理器核321-1之间的交互接口,通过约定交互接口格式,使得在内存初始化过程中,第一处理器核31可以通过写存储电路322-1的寄存器或者SRAM空间调用第二处理器核321-1执行内存初始化中的部分或全部任务,对其它第二处理器核的调用同理。通过第一处理器核31与各个第二处理器核之间的协同交互执行内存初始化。
其中,“交互接口格式”可以理解为不同类型的数据与存储电路322-1中不同存储区间之间的对应关系。例如,SRAM612中的存储结构可以如图8所示。其中,0-76K区间用于存储调用信息,由第一处理器核31写入,第二处理器核321-1读取。在一种可能的实现方式中,调用信息可以是第二处理器核321-1的固件中的信息,即第二处理器核321-1的固件包括调用信息。SRAM612中0-76K区间可以用于存储第二处理器核321-1的固件。
76K-78K区间用于存储指令序号队列,由第一处理器核31写入,第二处理器核321-1读取。可以理解,若由寄存器611存储指令序号,则可以省略存储指令序号队列的部分。78K-84K区间用于存储反馈信息,由第二处理器核321-1写入,第一处理器核31读取。
本申请实施例中,反馈信息可以包括打印信息、事件信息、指令执行结果等等。示例性的,80K至84K的区间可以用于存储打印信息,例如,第二处理器核321-1在执行通道初始化期间,可以将当前的执行进度作为打印信息反馈给第一处理器核31。78K至80K的区间可以用于存储事件队列,例如,第二处理器核321-1可以通过该事件队列上报内存通道1的故障信息。84K-96K的区间用于存储内存通道1的基础数据,由第一处理器核31写入,第二处理器核321-1读取。所谓基础数据,可以理解为第二处理器核321-1在运行期间可能会用到的数据,例如可以是处理器30的工作频率、内存初始化的启动模式等全局数据。
接下来,以图9所示的内存初始化流程为例,对本申请实施例所提供的内存初始化装置(处理器30)作进一步的示例性说明。
一、初始化配置阶段
与常规内存初始化过程类似,本申请实施例中,初始化配置阶段主要对内存控制器32和内存芯片0至内存芯片L-1完成基础的配置,使内存控制器32和内存芯片0至内存芯片L-1能够执行后续的初始化过程。
在一种可能的实现方式中,第一处理器核31可以调用第二处理器核321-1,由第二处理器核321-1对应内存通道1、内存芯片0和内存芯片1进行初始化配置。在另一种可能的实现方式中,第一处理器核31也可以直接对内存通道1、内存芯片0和内存芯片1进行初始化配置,本申请实施例对此并不多作限制。
示例性的,以内存通道1为例,如图9所示,初始化配置阶段主要包括以下步骤:
S901:第一处理器核31获取SPD信息。
S902:第一处理器核31根据SPD信息配置内存芯片0、内存芯片1的读写频率,和内存通道1的工作频率。
S901和S902的具体实现皆可以参考常规内存初始化过程,对此不再赘述。
示例性的,如图3所示,处理器30还可以包括输入/输出(input/utput,I/O)控制器33,I/O控制器33的一端与处理器核31连接,I/O控制器33的另一端与非易失性存储器40连接。
其中,非易失性存储器40可以是闪存(flash)、磁盘等存储器,非易失性存储器40存储有第一处理器核31的固件,例如第一处理器核31的固件可以包括统一可扩展固件接口(unified extensible firmware interface,UEFI)代码。
处理器30上电后,第一处理器核31可以从非易失性存储器40中读取第一处理器核31的固件,并执行该固件。例如,第一处理器核31可以通过执行该固件实现上述初始化配置。
需要指出的是,在第一处理器核31直接进行初始化配置的情况下,在一种可能的实现方式中,第一处理器核31可以先对内存通道1至内存通道M,以及内存芯片0至内存芯片L-1统一完成初始化配置,之后,第一处理器核31再统一调用第二处理器核321-1至第二处理器核321-M进行通道初始化。
在另一种可能的实现方式中,第一处理器核31可以在对内存通道1、内存芯片0和内存芯片1完成初始化配置后,调用第二处理器核321-1。第二处理器核321-1基于第一处理器核31的调用,对内存通道1进行通道初始化的过程中,第一处理器核31可以继续对内存通道2、内存芯片2和内存芯片3进行初始化配置。也就是说,第一处理器核31可以与第二处理器核并行进行内存初始化,采用该实现方式有利于进一步缩短内存初始化用时。
二、内存训练阶段
本申请实施例中,第一处理器核31可以调用第二处理器核321-1进行内存训练。示例性的,如图9所示,内存训练阶段主要包括以下步骤:
S903:第一处理器核31向第二处理器核321-1写入调用信息。
在本申请实施例中,调用信息也可以存储于非易失性存储器40中。具体来说,非易失性存储器40中还可以存储有第二处理器核321-1的固件,第二处理器核321-1的固件中包括该调用信息。
需要指出的是,不同的第二处理器核的固件可以相同,也可以不同,本申请实施例对此并不多做限制。一般来说,内存控制器32中的至少一个第二处理器核可以具有相同的固件,以减少对非易失性存储器40的占用。
在S903中,第一处理器核31可以将第二处理器核321-1的固件拷贝到SRAM612对应的存储空间,如图8中0-76K的空间,使第二处理器核能够启动。然后,第一处理器核31通过写寄存器611和SRAM612给第二处理器核321-1下指令序号来执行内存初始化。
示例性的,如图10所示,固件1为第一处理器核31的固件,固件2为第二处理器核321-1的固件,固件1和固件2可以分别存储在非易失性存储器40中的不同区域。采用该实现方式,固件1和固件2之间可以采用相同或不同的编译方式,即使第一处理器核31和第二处理器核321-1采用了不同的架构,第一处理器核31依旧可以调用第二处理器核321-1。
例如,第一处理器核31采用了高级精简指令集机器(advanced RISC machine,ARM)架构,而第二处理器核321-1采用了第五代精简指令集(reduced instruction setcomputing-five,RISC-V)架构。在此情况下,固件1可以基于ARM架构进行编译,使得第一处理器核31能够执行该固件1。而固件2则可以采用RISC-V架构进行编译,使得第二处理器核321-1可以执行该固件2。
S904:第一处理器核31在写入调用信息之后,向存储电路322-1写入解复位信息,使得第二处理器核321-1开始执行该调用信息。在一种可能的实现方式中,第二处理器核321-1在读取到解复位信息后,还通过执行第二处理器核321-1的固件中完成自身的初始化。之后,第二处理器核321-1可以进入准备(ready)状态,并向第一处理器核31反馈其当前的状态信息。
S905:第一处理器核31在第二处理器核321-1进入准备状态后,通过指令序号调用第二处理器核321-1执行内存训练。具体调用过程可以参考上述实施例,对此不再赘述。
S906:第二处理器核321-1基于第一处理器核31的调用,执行内存训练。该过程与常规内存训练过程类似,区别在于本申请实施例由第二处理器核321-1执行,具体过程不再赘述。
三、内存测试阶段
如图9所示,内存测试阶段主要包括以下步骤:
S907:边缘测试。
S908:扫描眼图。
S909:存储测试。
S910:上报配置信息。具体来说,第二处理器核321-1可以在S907至S909等测试皆通过后,将通道初始化之后,内存通道1的配置信息上报给第一处理器核31。其中,内存通道1的配置信息可以包括内存通道1的实际可用的内存容量等信息。
S911:存储清零。
其中,S907至S909,以及S911的具体实现过程皆与常规内存初始化中的内存测试过程类似,区别在于,本申请实施例由第二处理器核321-1执行。具体过程不再赘述。
至此,便执行完了对内存通道1的通道初始化。
本申请实施例中,由于第二处理器核321-1可以代替第一处理器核31执行内存初始化,因此可以释放第一处理器核31的时间,也就是说,在第二处理器核321-1执行通道初始化时,第一处理器核31可以并行处理其它任务。例如,第一处理器核31可以对其它内存通道和内存芯片进行初始化配置。又例如,第一处理器核31还可以执行其它组件(如显卡、网卡等外设)的初始化。
具体来说,其它组件的初始化需要内存参与。当任意一个或多个内存通道完成通道初始化之后,第一处理器核31便可以利用已完成通道初始化的内存通道,并行执行对其它组件的初始化。以内存通道1为例,在内存通道1完成通道初始化之后,内存通道1便具备对内存芯片0和内存芯片1的稳定的读写能力。也就是说,第一处理器核31可以通过内存通道1对内存芯片0和内存芯片1进行读写。因此,第一处理器核31可以利用内存通道1、内存芯片0核内存芯片1对其它组件进行初始化。
采用该实现方式,可以并行内存初始化和其它组件的初始化,从而有利于进一步缩短电子设备开机时间,有利于进一步提高用户使用体验。
四、系统配置阶段
对于多通道的内存控制器32,在对每个内存通道皆完成通道初始化之后,第一处理器核31往往还需要进行系统配置,以生成管理信息,该管理信息可以用于第一处理器核31管理内存控制器32耦合的内存芯片,具体实现不再赘述。
示例性的,如图9所示,系统配置阶段主要包括以下步骤:
S912:内存交织配置。具体来说,第一处理器核31可以为不同内存通道所连接的内存芯片配置连续的存储地址,使得在数据读写时,可以并行访问多个内存通道,进而有利于增大读写带宽。
例如,第一处理器核31配置内存芯片1中部分存储空间的地址为0-20,配置内存芯片2中部分存储空间的地址为21-40。则,第一处理器核31可以通过内存通道1和内存通道2向地址区间0-40写入数据,期间,内存通道1和内存通道2并行执行写入操作,从而大大加快了数据写入速度。
可以理解,第一处理器核31还可以在单个内存芯片内部的不同库(bank)之间进行内存交织配置,具体实现不再赘述。
S913:非一致内存访问(non uniform memory access,NUMA)设置。具体来说,第一处理器核31可以为每个内核配置多个内存通道的访问优先级。以内核0为例,第一处理器核31可以按照物理链路的时延为内核0配置多个内存通道的访问优先级,其中,与内核0之间物理链路的时延最小的内存通道优先级最高。采用该实现方式,可以使内核0在后续读写过程中优先访问时延最小的物理链路对应的内存通道,从而有利于加快访问速度。
S914:内存地址划分(memory map)资源管理。例如,确定操作系统或应用的数据在内存中的存储区域,确定当前内存占用情况等等。
至此,便执行完了内存初始化。
需要指出的是,本申请实施例除了有利于缩短内存初始化用时之外,还有利于对内存控制器32进行功能拓展,使内存控制器32能够灵活适应不同的应用需求。例如:
1、电源管理
在执行完内存初始化之后,第一处理器核31还可以调用第二处理器核321进行电源管理。
以图5中的第二处理器核321-1为例,第一处理器核31可以调用第二处理器核321-1管理为内存芯片0和内存芯片1供电的电源。假设内存芯片0和内存芯片1共用同一电源,第二处理器核321-1可以监控内存芯片0和内存芯片1的工作状态。例如,第二处理器核321-1可以监控内存芯片0和内存芯片1在单位时间内的读写次数、内存芯片0和内存芯片1的可纠正错误出现次数等等。
第二处理器核321-1进而可以根据内存芯片0和内存芯片1的工作状态,调节为内存芯片0和内存芯片1供电的电源的输出功率。例如,若内存芯片0和内存芯片1在单位时间内的读写次数大于第一次数阈值,则增大电源的输出功率,也可以理解为增大电源的输出电压,和/或,增大电源的输出电流。若内存芯片0和内存芯片1在单位时间内的读写次数小于第二次数阈值,则降低电源的输出功率。
采用该实现方式,使内存控制器32能够根据各内存芯片的工作状态动态调节内存芯片的电源,有利于降低内存芯片的功耗。
2、重复内存训练
在执行完内存初始化之后,第一处理器核31还可以调用第二处理器核321执行内存训练。
以图5中的第二处理器核321-1为例,随着时间的推移,内存通道1中的部分信号的延迟会出现偏移,进而使内存通道1的时序偏移,影响了内存读写的稳定性。
有鉴于此,第一处理器核31可以调用第二处理器核321周期性重复执行内存训练,使内存通道1的时序始终保持较为精确的对齐效果,有利于提高内存读写的稳定性。
3、故障处理
在执行完内存初始化之后,第一处理器核31还可以调用第二处理器核321对内存控制器32进行故障处理。例如,第二处理器核321可以在内存控制器32故障时,确定内存控制器32中的故障节点,并向第一处理器核31反馈该故障节点的位置信息。
以图5中的第二处理器核321-1为例,第二处理器核321-1可以在内存通道1故障时,确定内存通道1中的故障节点,并将该故障节点的位置信息上报给第一处理器核31。
4、固件升级
本申请实施例中,第一处理器核31还可以更新各个第二处理器核的固件,从而更新第二处理器核的功能。示例性的,第二处理器核321-1的固件中包括上述用于实现内存初始化的调用信息,可以通过升级第二处理器核321-1的固件来更新调用信息,例如可以新增、减少、修改调用信息中的指令,从而可以实现内存初始化的拓展和灵活配置。
又例如,第二处理器核321-1的固件中还可以包括用于为第二处理器核增加除内存初始化之外的其它功能的拓展信息,可以通过升级第二处理器核321-1的固件来更新调用信息,从而优化第二处理器核321-1的拓展功能,该拓展功能可以是上述故障处理、电源管理等功能。通过升级第二处理器核321-1的固件,可以为第二处理器核321-1增加新的拓展功能,也可以优化第二处理器核321-1的现有的拓展功能。
由此可见,本申请实施例在内存控制器32中增设第二处理器核,不仅有利于缩短内存初始化用时,还可以在无需修改硬件架构的情况下,对内存控制器进行功能拓展、优化,使内存控制器能够灵活适应不同的应用需求。
基于相同的技术构思,本申请实施例提供一种内存初始化方法,该方法可以应用于上述实施例所提供的内存初始化装置。示例性的,本申请实施例所提供的内存初始化方法主要包括:第一处理器核调用内存控制器中的至少一个第二处理器核,以执行内存初始化。
示例性的,内存控制器还包括至少一个内存通道,其中,每个内存通道用于连接至少一个内存芯片。第一处理器核在调用上述至少一个第二处理器核时,具体可以调用上述至少一个第二处理器核对内存控制器中的至少一个内存通道进行通道初始化,其中,内存初始化包括该通道初始化。示例性的,通道初始化可以包括内存训练,和/或,内存测试。例如图9中的S903至S911,第一处理器核可以调用第二处理器核执行内存训练,和/或,调用第二处理器核执行内存测试。
示例性的,内存控制器中的至少一个第二处理器核可以与上述至少一个内存通道对应连接,例如可以是一对一连接,或者一对多连接,或者多对一连接。
一般来说,在内存初始化过程中,还需要对内存控制器进行系统配置,例如内存交织配置、NUMA设置、memory map资源管理等。有鉴于此,如图9中的S912至S914所示,第一处理器核在内存控制器中的每个内存通道皆完成通道初始化后,对内存控制器32和上述至少一个内存通道连接的内存芯片进行系统配置,以生成管理信息,该管理信息可以用于第一处理器核管理上述至少一个内存通道连接的内存芯片。
可以理解,由于本申请实施例中内存控制器内的至少一个第二处理器核能够代替第一处理器核执行通道初始化,因此可以释放第一处理器核的时间,使得在该至少一个第二处理器核执行通道初始化期间,第一处理器核可以并行执行其它组件的初始化。示例性的,在任一内存通道完成通道初始化后,第一处理器核还可以使用该已完成通道初始化的任一内存通道和该任一内存通道连接的至少一个内存芯片对其它组件进行初始化。
在一种可能的实现方式中,如图9中的S901和S902所示,第一处理器核可以在对第一内存通道和第一内存通道连接的至少一个第一内存芯片完成初始化配置后,再调用第一内存通道对应连接的第二处理器核,该第一内存通道可以是内存控制器的至少一个内存通道中的任一内存通道。
本申请实施例中,第一处理器核既可以先对内存控制器中的至少一个内存通道皆完成初始化配置后,再统一调用至少一个第二处理器核。第一处理器核也可以并行初始化配置和调用第二处理器核。具体来说:
第一处理器核可以在调用第一内存通道对应连接的第二处理器核之后,继续对第二内存通道和第二内存通道连接的至少一个第二内存芯片进行初始化配置,第二内存通道为至少一个内存通道中未启动通道初始化的任一内存通道。
为了实现第一处理器核对上述至少一个第二处理器核的调用,在一种可能的实现方式中,内存控制器还可以包括至少一个存储电路,该至少一个存储电路可以与内存控制器中的至少一个第二处理器核对应连接。
第一处理器核调用任一第二处理器核时,第一处理器核可以向该任一第二处理器核对应连接的存储电路写入调用信息。该任一第二处理器核可以从对应连接的存储电路中读取调用信息,并执行该调用信息。示例性的,上述存储电路可以包括寄存器,和/或,静态随机存储器中的任一个或多个。
在一种可能的实现方式中,第一处理器核在向任一第二处理器核对应连接的存储电路写入调用信息之后,第一处理器核还可以向该存储电路写入解复位信息。该任一第二处理器核则可以在读取到解复位信息后,从对应连接的存储电路读取调用信息,并执行上述调用信息。
为了实现更为灵活的调用,在一种可能的实现方式中,调用信息可以包括至少一个指令,第一处理器核可以通过指令序号,调用上述任一第二处理器核执行该指令序号对应的指令。
由于部分指令在运行时,还需要特定的执行参数。因此,第一处理器核还可以先向上述任一第二处理器核对应连接存储电路写入指令对应的执行参数,再通过指令序号,调用该任一第二处理器核执行指令序号对应的指令。
在一种可能的实现方式中,上述任一第二处理器核还可以向第一处理器核反馈指令的执行结果。
一般来说,上述任一第二处理器核的固件存储于非易失性存储器中且可被更新,该固件包括上述调用信息。
一般来说,第一处理器核在向任一第二处理器核对应连接的存储电路写入调用信息之前,还可以为该存储电路分配通信地址,第一处理器核可以通过该通信地址向存储电路读取或写入数据。
需要指出的是,本申请实施例所提供的内存初始化装置不仅有利于缩短内存初始化用时,还有利于对内存控制器进行功能拓展,使内存控制器能够灵活适应不同的应用需求。
例如:
1、电源管理
在执行完内存初始化之后,第一处理器核还可以调用第一内存通道对应连接的第二处理器核管理电源的输出功率,该第一内存通道可以是内存控制器中的任一内存通道,该电源可以为第一内存通道对应连接的至少一个第一内存芯片供电;第一内存通道对应连接的第二处理器核则可以监控至少一个第一内存芯片的工作状态,以及,第一内存通道对应连接的第二处理器核根据至少一个第一内存芯片的工作状态,调节电源的输出功率。
2、重复内存训练
在执行完内存初始化之后,第一处理器核还可以调用内存控制器中的至少一个第二处理器核执行内存训练。
3、故障处理
在执行完内存初始化之后,第一处理器核还可以调用内存控制器中的至少一个第二处理器核进行故障处理。该至少一个第二处理器核可以在内存控制器故障时,确定内存控制器中的故障节点,并向第一处理器核反馈故障节点的位置信息。
4、固件升级
本申请实施例中,第一处理器核还可以更新各个第二处理器核的固件,从而更新第二处理器核的功能。示例性的,第二处理器核的固件中包括用于为第二处理器核增加拓展功能的信息,可以通过更新第二处理器核的固件,使第二处理器核能够实现更多的功能,如上述故障处理、电源管理等等。此外,还可以通过更新第二处理器核的固件,以优化第二处理器核的现有功能。
又例如,第二处理器核的固件包括上述用于实现内存初始化的调用信息,还可以通过更新第二处理器核的固件以优化内存初始化过程中第二处理器核所执行的步骤,例如增加或减少某些指令,又例如,修改某些指令对应的初始化步骤等等。
第一处理器核在上电后,可以将更新后的第二处理器核的固件写入第二处理器核的存储器,从而完成第二处理器核的固件升级。
由此可见,本申请实施例在内存控制器中增设第二处理器核,不仅有利于缩短内存初始化用时,还可以在无需修改硬件架构的情况下,对内存控制器进行功能拓展、优化,使内存控制器能够灵活适应不同的应用需求。
基于相同的技术构思,本申请实施例还提供一种计算机系统,该计算机系统该可以包括如上述任一实施例所提供的内存初始化装置,以及与该内存初始化装置耦合的内存芯片。示例性的,该计算机系统既可以是电脑主板,也可以是笔记本电脑、手机、数码相机等电子设备,本申请实施例对此并不多作限制。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (31)

1.一种内存初始化装置,其特征在于,包括:
第一处理器核和内存控制器,所述内存控制器包括至少一个第二处理器核;
所述第一处理器核,用于调用所述至少一个第二处理器核,以执行内存初始化。
2.根据权利要求1所述的内存初始化装置,其特征在于,所述内存控制器还包括至少一个内存通道,其中,每个内存通道用于连接至少一个内存芯片;
所述第一处理器核,具体用于:
调用所述至少一个第二处理器核对所述至少一个内存通道进行通道初始化。
3.根据权利要求2所述的内存初始化装置,其特征在于,所述通道初始化包括内存训练,和/或,内存测试。
4.根据权利要求2或3所述的内存初始化装置,其特征在于,所述第一处理器核,还用于:
在所述至少一个内存通道中的每个内存通道完成通道初始化后,对所述内存控制器和所述至少一个内存通道连接的内存芯片进行系统配置以生成管理信息,所述管理信息用于所述第一处理器核管理所述至少一个内存通道连接的内存芯片。
5.根据权利要求2至4中任一项所述的内存初始化装置,其特征在于,所述第一处理器核还用于:
在任一内存通道完成通道初始化后,使用所述任一内存通道和所述任一内存通道连接的至少一个内存芯片对除所述至少一个内存通道连接的内存芯片之外的其它组件进行初始化。
6.根据权利要求2至5中任一项所述的内存初始化装置,其特征在于,所述至少一个第二处理器核与所述至少一个内存通道对应连接;
所述第一处理器核,具体用于:
在对第一内存通道和所述第一内存通道连接的至少一个第一内存芯片完成初始化配置后,调用所述第一内存通道对应连接的第二处理器核,所一内存通道为所述至少一个内存通道中的任一内存通道。
7.根据权利要求6所述的内存初始化装置,其特征在于,所述第一处理器核,具体用于:
调用所述第一内存通道对应连接的第二处理器核之后,继续对第二内存通道和所述第二内存通道连接的至少一个第二内存芯片进行初始化配置,所述第二内存通道为所述至少一个内存通道中未启动通道初始化的任一内存通道。
8.根据权利要求6或7所述的内存初始化装置,其特征在于,所述第一处理器核,还用于:
在执行完所述内存初始化之后,调用所述第一内存通道对应连接的第二处理器核管理电源的输出功率,所述电源用于为所述至少一个第一内存芯片供电。
9.根据权利要求8所述的内存初始化装置,其特征在于,所述第一内存通道对应连接的第二处理器核,还用于:
监控所述至少一个第一内存芯片的工作状态;
根据所述至少一个第一内存芯片的工作状态,调节所述电源的输出功率。
10.根据权利要求1至9中任一项所述的内存初始化装置,其特征在于,所述内存控制器还包括至少一个存储电路,所述至少一个存储电路与所述至少一个第二处理器核对应连接;
所述第一处理器核,具体用于分别向所述至少一个存储电路写入调用信息,所述调用信息为用于实现所述内存初始化的信息;
所述至少一个第二处理器核中的任一第二处理器核,用于从对应连接的存储电路中读取所述调用信息并执行所述调用信息。
11.根据权利要求10所述的内存初始化装置,其特征在于,所述调用信息包括至少一个指令;
所述第一处理器核,具体用于:
通过指令序号,调用所述任一第二处理器核执行与所述指令序号对应的指令。
12.根据权利要求10或11所述的内存初始化装置,其特征在于,所述任一第二处理器核的固件存储于非易失性存储器中且可被更新,所述固件包括所述调用信息。
13.根据权利要求1至12中任一项所述的内存初始化装置,其特征在于,所述第一处理器核,还用于:
在执行完所述内存初始化之后,调用所述至少一个第二处理器核执行内存训练。
14.根据权利要求1至13中任一项所述的内存初始化装置,其特征在于,所述第一处理器核,还用于:
在执行完所述内存初始化之后,调用所述至少一个第二处理器核进行故障处理。
15.根据权利要求14所述的内存初始化装置,其特征在于,所述至少一个第二处理器核,还用于:
在所述内存控制器故障时,确定所述内存控制器中的故障节点,并向所述第一处理器核反馈所述故障节点的位置信息。
16.一种内存初始化方法,其特征在于,应用于包括第一处理器核和内存控制器的装置,所述内存控制器包括至少一个第二处理器核,所述方法包括:
第一处理器核调用所述至少一个第二处理器核,以执行内存初始化。
17.根据权利要求16所述的内存初始化方法,其特征在于,所述内存控制器还包括至少一个内存通道,其中,每个内存通道用于连接至少一个内存芯片;
第一处理器核调用所述至少一个第二处理器核,以执行内存初始化,包括:
所述第一处理器核调用所述至少一个第二处理器核对所述至少一个内存通道进行通道初始化。
18.根据权利要求17所述的内存初始化方法,其特征在于,所述通道初始化包括内存训练,和/或,内存测试。
19.根据权利要求17或18所述的内存初始化方法,其特征在于,所述第一处理器核调用所述至少一个第二处理器和对所述至少一个内存通道进行通道初始化之后,还包括:
在所述至少一个内存通道中的每个内存通道完成通道初始化后,所述第一处理器核对所述内存控制器和所述至少一个内存通道连接的内存芯片进行系统配置以生成管理信息,所述管理信息用于所述第一处理器核管理所述至少一个内存通道连接的内存芯片。
20.根据权利要求17至19中任一项所述的内存初始化方法,其特征在于,所述第一处理器核调用所述至少一个第二处理器核对所述至少一个内存通道进行通道初始化后,还包括:
在任一内存通道完成通道初始化后,所述第一处理器核使用所述任一内存通道和所述任一内存通道连接的至少一个内存芯片对除所述至少一个内存通道连接的内存芯片之外的其它组件进行初始化。
21.根据权利要求17至20中任一项所述的内存初始化方法,其特征在于,所述至少一个第二处理器核与所述至少一个内存通道对应连接;
所述第一处理器核调用所述至少一个第二处理器核对所述至少一个内存通道进行通道初始化,包括:
所述第一处理器核在对第一内存通道和所述第一内存通道连接的至少一个第一内存芯片完成初始化配置后,调用所述第一内存通道对应连接的第二处理器核,所述第一内存通道为所述至少一个内存通道中的任一内存通道。
22.根据权利要求21所述的内存初始化方法,其特征在于,所述第一处理器核调用所述至少一个第二处理器核对所述至少一个内存通道进行通道初始化,包括:
所述第一处理器核调用所述第一内存通道对应连接的第二处理器核之后,继续对第二内存通道和所述第二内存通道连接的至少一个第二内存芯片进行初始化配置,所述第二内存通道为所述至少一个内存通道中未启动通道初始化的任一内存通道。
23.根据权利要求21或22所述的内存初始化方法,其特征在于,在执行完所述内存初始化之后,所述方法还包括:
所述第一处理器核调用所述第一内存通道对应连接的第二处理器核管理电源的输出功率,所述电源用于为所述至少一个第一内存芯片供电。
24.根据权利要求23所述的内存初始化方法,其特征在于,还包括:
所述第一内存通道对应连接的第二处理器核监控所述至少一个第一内存芯片的工作状态;
所述第一内存通道对应连接的第二处理器核根据所述至少一个第一内存芯片的工作状态,调节所述电源的输出功率。
25.根据权利要求16至24中任一项所述的内存初始化方法,其特征在于,所述内存控制器还包括至少一个存储电路,所述至少一个存储电路与所述至少一个第二处理器核对应连接;
所述第一处理器核调用所述至少一个第二处理器核,包括:
所述第一处理器核分别向所述至少一个存储电路写入调用信息,所述调用信息为用于实现所述内存初始化的信息;
所述至少一个第二处理器核中的任一第二处理器核从对应连接的存储电路中读取所述调用信息,并执行所述调用信息。
26.根据权利要求25所述的内存初始化方法,其特征在于,所述调用信息包括至少一个指令;
所述至少一个第二处理器核中的任一第二处理器核从对应连接的存储电路中读取所述调用信息,包括:
所述第一处理器核通过指令序号,调用所述任一第二处理器核执行所述指令序号对应的指令。
27.根据权利要求25或26所述的内存初始化方法,其特征在于,所述任一第二处理器核的固件存储于非易失性存储器中且可被更新,所述固件包括所述调用信息。
28.根据权利要求16至27中任一项所述的内存初始化方法,其特征在于,在执行完所述内存初始化之后,所述方法还包括:
所述第一处理器核调用所述至少一个第二处理器核执行内存训练。
29.根据权利要求16至28中任一项所述的内存初始化方法,其特征在于,在执行完所述内存初始化之后,所述方法还包括:
所述第一处理器核调用所述至少一个第二处理器核进行故障处理。
30.根据权利要求29所述的内存初始化方法,其特征在于,还包括:
所述至少一个第二处理器核在所述内存控制器故障时,确定所述内存控制器中的故障节点,并向所述第一处理器核反馈所述故障节点的位置信息。
31.一种计算机系统,其特征在于,包括如权利要求1至30中任一项所述的内存初始化装置,和与所述内存初始化装置耦合的内存芯片。
CN202010621216.5A 2020-06-30 2020-06-30 一种内存初始化装置、方法及计算机系统 Pending CN113867803A (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN202010621216.5A CN113867803A (zh) 2020-06-30 2020-06-30 一种内存初始化装置、方法及计算机系统
EP21833200.5A EP4167080A4 (en) 2020-06-30 2021-06-30 MEMORY INITIALIZATION APPARATUS AND METHOD AND COMPUTER SYSTEM
PCT/CN2021/103355 WO2022002095A1 (zh) 2020-06-30 2021-06-30 一种内存初始化装置、方法及计算机系统
US18/147,936 US20230133490A1 (en) 2020-06-30 2022-12-29 Memory initialization apparatus and method, and computer system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010621216.5A CN113867803A (zh) 2020-06-30 2020-06-30 一种内存初始化装置、方法及计算机系统

Publications (1)

Publication Number Publication Date
CN113867803A true CN113867803A (zh) 2021-12-31

Family

ID=78982015

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010621216.5A Pending CN113867803A (zh) 2020-06-30 2020-06-30 一种内存初始化装置、方法及计算机系统

Country Status (3)

Country Link
EP (1) EP4167080A4 (zh)
CN (1) CN113867803A (zh)
WO (1) WO2022002095A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117076081A (zh) * 2023-08-22 2023-11-17 上海合芯数字科技有限公司 存储器训练方法、设备、存储介质及程序产品
JP7460743B1 (ja) 2022-12-27 2024-04-02 Necプラットフォームズ株式会社 メモリコントローラ及びメモリコントローラ制御方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101379454A (zh) * 2005-08-29 2009-03-04 晟碟以色列有限公司 配置内存控制器的装置和方法
CN101520766A (zh) * 1998-11-03 2009-09-02 英特尔公司 配置和初始化存储器及存储通道的方法与设备
CN101815990A (zh) * 2007-10-02 2010-08-25 高通股份有限公司 用于执行存储器块初始化及复制的存储器控制器
US20150378603A1 (en) * 2014-06-27 2015-12-31 Advanced Micro Devices, Inc. Integrated controller for training memory physical layer interface
CN105446911A (zh) * 2014-05-29 2016-03-30 展讯通信(上海)有限公司 终端设备的内存访问控制方法与装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5768585A (en) * 1995-11-21 1998-06-16 Intel Corporation System and method for synchronizing multiple processors during power-on self testing
US9558041B2 (en) * 2014-09-05 2017-01-31 Telefonaktiebolaget L M Ericsson (Publ) Transparent non-uniform memory access (NUMA) awareness
CN107346267A (zh) * 2017-07-13 2017-11-14 郑州云海信息技术有限公司 一种基于numa架构的cpu性能优化方法和装置
CN109901957B (zh) * 2017-12-09 2020-12-25 英业达科技有限公司 以可扩展固件接口进行内存测试的计算装置及其方法
CN108388490B (zh) * 2018-02-28 2021-12-03 郑州云海信息技术有限公司 一种测试高端服务器内存的方法及系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101520766A (zh) * 1998-11-03 2009-09-02 英特尔公司 配置和初始化存储器及存储通道的方法与设备
CN101379454A (zh) * 2005-08-29 2009-03-04 晟碟以色列有限公司 配置内存控制器的装置和方法
CN101815990A (zh) * 2007-10-02 2010-08-25 高通股份有限公司 用于执行存储器块初始化及复制的存储器控制器
CN105446911A (zh) * 2014-05-29 2016-03-30 展讯通信(上海)有限公司 终端设备的内存访问控制方法与装置
US20150378603A1 (en) * 2014-06-27 2015-12-31 Advanced Micro Devices, Inc. Integrated controller for training memory physical layer interface

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7460743B1 (ja) 2022-12-27 2024-04-02 Necプラットフォームズ株式会社 メモリコントローラ及びメモリコントローラ制御方法
CN117076081A (zh) * 2023-08-22 2023-11-17 上海合芯数字科技有限公司 存储器训练方法、设备、存储介质及程序产品

Also Published As

Publication number Publication date
WO2022002095A1 (zh) 2022-01-06
EP4167080A1 (en) 2023-04-19
EP4167080A4 (en) 2023-11-22

Similar Documents

Publication Publication Date Title
US9824004B2 (en) Methods and apparatuses for requesting ready status information from a memory
US7058945B2 (en) Information processing method and recording medium therefor capable of enhancing the executing speed of a parallel processing computing device
US20050108469A1 (en) Buffered memory module with implicit to explicit memory command expansion
US7302518B2 (en) Method and system for managing a suspend request in a flash memory
CN109863481B (zh) 用于平台裕度调节和调试的软件模式寄存器访问
US7594046B2 (en) Data processing in which concurrently executed processes communicate via a FIFO buffer
KR20100077026A (ko) 직렬 인터페이스 nand
EP4167080A1 (en) Memory initialisation apparatus and method, and computer system
US20230176751A1 (en) Processor, signal adjustment method and computer system
CN113849433A (zh) 一种总线控制器的执行方法、装置、总线控制器、计算机设备和存储介质
US20070038795A1 (en) Asynchronous bus interface and processing method thereof
US10496422B2 (en) Serial device emulator using two memory levels with dynamic and configurable response
CN115562738A (zh) 一种端口配置方法、组件及硬盘扩展装置
US20030233536A1 (en) Automatic selection of firmware for a computer that allows a plurality of process types
US5657467A (en) Non-volatile semiconductor memory device with instruction issue during busy cycle
CN111383704B (zh) 一种存储器内建自测试电路和对存储器的测试方法
CN110874333B (zh) 存储设备及存储方法
CN103902301A (zh) 读取bios的方法、装置以及处理器
US20230133490A1 (en) Memory initialization apparatus and method, and computer system
US10997087B2 (en) Direct memory access
EP3891594B1 (en) Memory control system with a sequence processing unit
CN102141967B (zh) 总线时序参数配置方法和装置
CN115176313A (zh) 内存启动和初始化系统和方法
JP7202225B2 (ja) 半導体装置及びデバッグシステム
US9658982B2 (en) Data structure product and method for interface transmission

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