CN102648453B - 存储器初始化的方法和装置 - Google Patents

存储器初始化的方法和装置 Download PDF

Info

Publication number
CN102648453B
CN102648453B CN201080055347.6A CN201080055347A CN102648453B CN 102648453 B CN102648453 B CN 102648453B CN 201080055347 A CN201080055347 A CN 201080055347A CN 102648453 B CN102648453 B CN 102648453B
Authority
CN
China
Prior art keywords
processing node
subtask
memory
initialize
initialize memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201080055347.6A
Other languages
English (en)
Other versions
CN102648453A (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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of CN102648453A publication Critical patent/CN102648453A/zh
Application granted granted Critical
Publication of CN102648453B publication Critical patent/CN102648453B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • G06F9/4405Initialisation of multiprocessor systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/177Initialisation or configuration control
    • 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/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs

Landscapes

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

Abstract

在一个具有多个处理节点的系统中,控制节点将任务分成多个子任务并将子任务分配给一个或多个额外的处理节点,所述处理节点执行分配的子任务并将结果返回给控制节点,从而使多个处理节点有效地和快速地执行了存储器初始化及所有分配的子任务的测试。

Description

存储器初始化的方法和装置
技术领域
本发明一般性地涉及数据处理系统。在一方面,本发明涉及用于在系统启动初始化期间进行存储器初始化的方法和装置。
背景技术
数据处理或计算系统被设计为给予一个或多个用户独立的计算能力,可以在包括例如大型机、小型机、工作站、服务器、个人计算机、互联网终端、笔记本计算机和嵌入式系统等许多形式中找到。一般地,计算机系统结构设计为包括提供一个或多个高速高带宽访问所选择的系统组件、相关的存储器和控制逻辑(典型地是在系统板上)的微处理器核和为系统提供输入和/或输出(I/O)的若干外围设备。例如,图1示出了一种用于传统的计算机系统100的举例式结构。计算机系统100包括一个或多个处理器102,其跨越“北”桥104与系统存储器108相连。通常,存储器阵列108包括一个或多个存储器模块,还可包括用于增加或替换存储器模块的存储器插槽。北桥电路104可以编程为与多种存储器模块接口,如图所示,北桥电路104为多个存储器模块108所共享。结果,如果板上组装了不同的存储器模块,北桥电路104就必须用使每一个存储器模块都正常运行的参数进行编程。所绘出的北桥电路104通过高速高带宽的总线(例如,存储器总线107)连接到存储器108,还通过高速高带宽的总线(例如,ALINK或PCI总线)连接到“南”桥112。“南”桥112连接到诸如外设组件互连(PCI)总线110(而它又连接到网络接口卡(NIC)120)、串行AT附件(SATA)接口114、通用串行总线(USB)接口116和低引脚数(LPC)总线118(而它又连接到超级输入/输出控制器芯片(SuperI/O)122和BIOS存储器124)之类一个或多个I/O设备。可以理解,如果需要,可在计算机系统100中包括其它的总线、设备和/或子系统,诸如缓冲存储器、调制解调器、并行或串行接口、SCSI接口等。还有,北桥104和南桥112可以用单个芯片或多个芯片实现,这导致了一个集合式的术语“芯片组”。可替换地,北桥芯片的功能的全部或部分可以存在于处理器102内。
计算机系统典型地包括一组称作基本输入/输出系统(BIOS)的内置的软件例程,它提供了在系统硬件和操作系统软件之间的软件接口,使得程序员和用户可以与系统硬件进行交互。BIOS指令存储于非易失性存储器124(例如ROM(只读存储器)、PROM(可编程ROM)、EPROM(可擦除PROM)、EEPROM(电可擦除PROM)、闪存RAM(随机存取存储器)或类似物)内,并用来控制在上电(powerup)时的重要的计算机系统功能,包括测试和初始化存储器、盘存和初始化系统、测试系统。在上电时的这些功能被称作“系统启动”或“启动系统”,在每次系统上电或复位时会发生。在图1所示的传统的计算机系统100中,BIOS在称为启动纽带处理器的处理器102中的一个上运行,以启动计算系统100。在操作中,启动纽带处理器102通过北桥104与存储器阵列108通信。北桥电路104包括存储器控制器106,存储器控制器106连接到与诸如双倍数据速率(DDR)总线之类存储器总线107接口的一个或多个通道控制器。北桥电路104还在例如是外设组件互连(PCI)总线的标准总线109上与一个或多个南桥112通信。南桥112与一个或多个输入/输出(I/O)设备120、122、124通信,但能够将更多的或更少的设备(未图示)附在南桥112上。
一旦进行系统初始化,启动纽带处理器102就在系统启动期间执行所有的存储器测试和清除,这会占用大量时间。大型服务器系统往往需要若干分钟来启动,同时其它的处理器则处于闲置状态。在所描述的例子中,在启动纽带处理器上执行的BIOS通过从启动纽带处理器102基于来自DIMM存储器108的、在DDR存储器总线107上的信息编程寄存器来初始化北桥电路104的存储器控制器106。存储器初始化可包括核实存储器模块数、验证存储器的正确操作(无卡位)和将存储器初始化或清除为已知值。因为有大容量存储器108(例如,8、16或32GB的存储器),传统系统会需要若干分钟来初始化存储器,特别是在“DDR训练”过程使用启动纽带处理器102通过连续执行按顺序排列的存储器初始化任务而不考虑任务间的依赖关系来初始化存储器的情况下。当有大数目的存储器108附在每个控制器106上时,这一延迟加剧。
因此,存在着对改进型存储器初始化设备、方法和系统的需求,它们解决了上述命名的发明者发现的在本领域的各种问题,在本领域技术人员参考附图和随后的详细说明审阅本发明申请的其余部分后,传统的解决方案和技术的各种局限和不足对他们来说将变得明显,然而,应该理解,本相关技术部分的说明无意于作为对所说明的主题题材是现有技术的认可。
发明内容
从广义上讲,本发明的实施例提供了用于通过在核间分配存储器初始化任务使得执行可以不按顺序且不依赖于前面的任务进行,从而在一个多核计算机系统内进行存储器初始化的系统、方法和装置。在所选择的实施例中,提供了一种包括多个处理节点或多个核和多个系统存储器部件的系统。在所选择的实施例中,选择处理节点或核中的一个来提供控制节点/核功能将存储器初始化任务分成各个由多个CPU节点/核处理的子任务。各个子任务被发送给或分配给其它的“从”核来执行。在每个从核处,子任务被规划为,在从核有资源处理子任务时就执行。结果,在给定从核处的给定的子任务的执行时间可能会或可能不会与在其它从核处的其它子任务的执行重叠。结果,有可能是从核在并行或串行地执行子任务。在子任务处理后,它们被控制核重组以完成原来的任务。这将允许任务执行同时进行,导致了减少的整体执行时间和最佳的性能,因为有可能是从内核并行执行子任务。
根据本发明的各个实施例,提供了一种方法来造成多个处理节点执行诸如存储器初始化任务之类启动过程的任务。在该方法的一个典范实施例中,控制处理节点将启动过程的任务(例如,存储器初始化任务)分成多个启动过程的子任务(例如,存储器初始化子任务)然后在可包括控制处理节点的多个处理节点之间分配子任务,使得每个子任务有相应的处理节点。在分配子任务之前,控制处理节点初始化多个处理节点之间的通讯连接。为了提供子任务分配的一个例子,可将处理节点中的一个分配为从DIMM存储器读取串行存在检测(SPD)值的存储器初始化子任务,而将另一个处理节点分配为执行复杂的初始化任务中的不依赖于SPD值的存储器初始化子任务。每个存储器初始化子任务被规划执行,然后在相应的处理节点执行以生成子任务的结果。在所选择的实施例中,使用软件程序来在相应的处理节点执行存储器初始化子任务。控制处理节点接收有关存储器初始化子任务在相应的处理节点处的执行的状态报告,然后在控制处理节点将来自多个处理节点的子任务的结果结合,其中多个存储器初始化子任务可在多个处理节点并行执行或按顺序执行。例如,处理节点中的一个可以与另一个执行它的相应的存储器初始化子任务的处理节点并行执行分配给它的存储器初始化子任务。
在其它的实施例中,提供了一种计算机系统,其中包括系统存储器(例如,基于DIMM的阵列)和多个处理节点,其中每个处理节点包括处理器核、至其它的处理节点的通讯接口和用于管理来往系统存储器的数据流的存储器控制器。处理节点中的一个是主处理节点,它被配置为通过将存储器初始化任务分成存储器初始化子任务和将存储器初始化子任务分配给一个或多个执行处理节点(其中可包括主处理节点)使得每一个分配的存储器初始化子任务有一个相应的执行处理节点的方式来在系统存储器上执行存储器初始化任务。每个执行处理节点被配置为执行由主处理节点分配给它的每一个存储器初始化子任务并由此产生子任务的结果。主处理节点被配置为从执行处理节点接收存储器初始化子任务的状态并合并来自执行处理节点的子任务,通过基于来自在执行处理节点处执行的多个存储器初始化子任务的结果编程主处理节点的存储器控制器中的一个或多个寄存器以执行存储器初始化任务。在所选择的实施例中,主处理节点划分和分配存储器初始化子任务,以使分配给执行处理节点中的一个的存储器初始化子任务能够不按顺序不依赖于分配给另一个执行处理节点的其它存储器初始化子任务执行。这样,第一执行处理节点可以在另一个执行处理节点执行其相应的存储器初始化子任务时并行执行它的存储器初始化子任务,使得多个存储器初始化子任务可以在执行处理节点并行或按顺序执行。
在另外的实施例中,提供了一种计算机系统,其包括存储器阵列和多个处理节点。在多个双列直插存储器模块通过双数据速率(DDR)总线连接到多个处理节点时,存储器阵列可以实现。每一个处理节点可以作为处理器、用于与存储器阵列通信的存储器控制器和至所述多个处理节点中的至少一个另外的处理节点的通信接口实现。在操作中,第一个处理节点将存储器初始化任务分成多个子任务和将多个子任务分配给处理节点。每个处理节点可以在执行分配的子任务的同时从存储器阵列的任何部分获得信息。另外,每个处理节点将子任务的执行结果返回给第一个处理节点,从而使多个处理节点有效地和快速地执行存储器阵列的存储器初始化。这样,第一个处理节点被配置为通过基于在处理节点处执行的多个子任务的结果编程存储器控制器中的一个或多个寄存器执行存储器初始化任务,从而与通过只在处理节点中的一个上执行存储器初始化任务来启动将需要多少时间相比减少了启动时间要求。
附图说明
通过参考附图,本领域的技术人员可以更好地理解本发明,本发明的众多的目的、特征和优势变得明显。在所有的几个附图中,使用相同的参考编号来指定相似或类似的部件。
图1示出了多核计算机系统的简化的体系结构的框图。
图2示出了根据本发明的选择实施例的、具有分布式多核存储器初始化的计算系统体系结构。
图3示出了根据本发明的选择实施例的典范的处理节点。
图4示出了典范的DIMM(双列直插式存储器模块)。
图5示出了根据本发明的所选择实施例的优化存储器初始化和测试的流程图。
具体实施方式
提供了用于在主核的控制下将存储器初始化任务分成子任务的分布式多核存储器测试和初始化的方法和装置。主核然后发送或分配子任务由多个核单独执行,一旦完成后,就将结果送回主核重组以完成原来的任务。通过将存储器初始化任务分配给各个核,子任务的执行可以不按顺序和不依赖于先前的任务实现。这种分布式的执行允许某些任务不按顺序不等待先前的子任务来完成,从而通过减少存储器初始化时间所需的时间长度提高了设备的性能。
现在将参考附图详细说明本发明的各种说明实施例。虽然在下面的说明中提出了各个细节,但可以理解,本发明可以没有这些具体细节而执行,并且可以对本文说明的发明做出大量与具体实现相关的决定来实现设备设计者的特定目标,如符合在各个实现中会有所不同的工艺技术或与设计相关的限制。尽管这样的开发努力可能是复杂和费时的,但对于得益于本公开的本领域的普通技术人员而言,这仍是常规工作。例如,为了避免使本发明受限或费解,以框图的形式而不是详尽地示出了所选择的方面。以对存储在计算机存储器中的数据进行操作的算法和指令的形式说明了此处提供的详细说明的某些部分。本领域的技术人员使用这样的说明和表述来对本领域的其他技术人员说明和传达他们的工作的实质。一般地,算法是指导致期望的结果的步骤的自洽的(self-consistent)的序列,其中“步骤”是指操纵物理量,但可以,但非必然地需要,采用能存储、传输、结合、比较和进行其它操作的电信号或磁信号的形式。通常的使用是这些信号指位、值、要素(element)、符号、字符、术语、数字或类似信号。这些术语以及类似的术语可与适当的物理量关联,只是应用到这些数量上的方便的标志。可以理解,在下面的讨论中,除非特别明确声明,在整个说明中,使用诸如“处理”或“计算”或“运算”或“确定”或“显示”或类似的术语的讨论是指将在计算机系统的寄存器和存储器中以物理(电子)量表示的数据操作和转换为在计算机系统的存储器或寄存器或其它的这样的信息存储、传输或显示设备中以物理(电子)量类似地表示的其它数据的计算机系统或类似的电子计算设备。
现在参考图2,图2示出了根据本发明的选择实施例的具有分布式多核存储器初始化的计算系统体系结构200。在描绘的计算系统200中有多个通过链接203相互通信的处理节点202[0:3]。例如,每一个处理节点202包括处理器核、存储器控制器和链接接口电路。链接203可以是根据诸如超传输(HyperTransport(HT))协议之类数据分割传输(splittransaction)总线协议的双向点至点链接。链接203可以包括下行数据流和上行数据流。链接信号通常包括诸如时钟、控制、命令、地址和数据信息和对在设备间流动的流量进行资格化和同步化的链接单边带信号。处理节点202的每一个存储器控制器与相应的存储器阵列206[0:3]进行通信。处理节点202和存储器阵列206在系统的“相干”部分内,其中所有的存储器事务操作是一致的。北桥设备可以包含在一个或多个处理节点202内,或者可以作为通过另一个HT链接耦合到处理节点202中的单独的北桥设备208提供。在任一情况下,北桥设备可以通过另一个HT链接耦合到南桥210。此外,一个或多个I/O设备212可以耦合到南桥210。BIOSROM214可以耦合到南桥210。北桥208、南桥210和I/O设备212是在系统的“非相干”部分内。
每一个存储器阵列206可以包括几个板上组装或未组装的存储器插槽来增加或替换存储器模块。例如,在服务器系统200中,每一个存储器插槽可提供512兆字节(MB)的存储能力,使得整个服务器系统200有一个例如32千兆字节(GB)的存储能力的大存储器。每一个处理节点202的存储器控制器可以不同地编程,但必须编程以与耦合到相关处理节点202的存储器模块206的本地化品种接口。可以理解,系统200可以比显示的更复杂。例如,在系统的相干部分202可以有额外的处理节点。虽然处理节点202是以阶梯式体系结构说明的,但处理节点202能够以各种不同的方式互联,能够有通过额外的HT链接的更复杂的相互耦合。
图3示出了根据本发明的选择实施例的典范的处理节点202。如所示的那样,处理节点202包括处理器核302、多HT链接接口304和存储器控制器306。处理器核302为处理器节点执行的存储器初始化和测试任务执行代码指令。例如,如果处理器节点作为控制节点或主节点,那么处理器核302就执行用于将存储器初始化和测试任务分成指定和分配给其它的处理器节点的多个子任务的代码指令。可替换地,如果处理器节点作为执行节点或从节点之一,那么处理器核302就执行用于获取、调度和执行指定的存储器初始化和测试子任务并将结果返回到控制节点/主节点的代码指令。交叉横梁(crossbar)308将请求、响应和广播消息传输给处理器302和/或适当的HT链接接口304。请求、响应和广播消息的传输由位于每一个处理节点的多个配置路由表引导,配置路由表必须通过BIOS配置。此外,存储器控制器306包含必须由BIOS编程的多个用于运行参数的配置寄存器。
图4示出了典范的DIMM(双列直插式存储器模块)400。可以理解,几个(通常是八个)DIMM可以做成存储器阵列206,其中每一个DIMM400含有多个诸如双数据速率(DDR)存储器芯片之类随机存取存储器(RAM)集成电路或芯片402[1:N]。此外,DIMM400能够含有ECC(纠错码)电路404。ECC电路404存储有允许发现和纠正存储器错误的纠错代码。此外,DIMM400能够含有SPD(串行存在检测)电路406。SPD电路406包含指定DIMM400的操作范围的只读信息和与一个人会在数据表中发现的信息类似于的其它信息。例如,SPD电路406标识了DIMM400的存储器的存储容量和诸如最小周期时间、CAS延迟等之类的操作参数。
一旦系统初始化后,每一个存储器模块206必须进行初始化和测试。这可以包括核实存储器模块的板上组装、验证存储器的正确操作(无卡位)和将存储器初始化或清除为已知值。每一个存储器模块可以利用ECC定期擦除以纠正任何存储器错误。
图5示出了根据本发明的选择实施例的、优化的存储器初始化和测试序列500的流程图。序列始于步骤502,通过初始化系统链接,使得每一个处理节点能够与其它的处理节点和存储器通信。这通常是由在启动纽带处理器上运行的BIOS执行的。可替换地,在硬连线系统中,处理节点能够一旦系统上电就自动配置为相互通信和与存储器通信。
在步骤504,被指定为启动纽带处理器(BSP)的处理节点通过将存储器初始化/测试任务分成多个子任务然后将每一个子任务指定给和分配到执行处理节点来导致存储器初始化和/或测试过程开始。例如,BSP能够将开始的消息随指定子任务发送给每一个处理节点。另外或可替换地,能够将一个位写入每一个处理节点来指明存储器初始化和测试过程即将开始,使得所分配的子任务能够由BSP提供或由执行处理节点检索。可替换地,诸如在任意的处理器上执行的代码写入到一个或多个寄存器时,引导的中断能够导致过程开始。写入的值能够引导一个或多个处理器对分配给它的子任务采取具体行动。例如,写入的值能够包括标识引导中断的目标(target)的节点标识器和通过直接或间接指定开始执行代码的地址表明一系列指令和子任务的执行的矢量。如果需要,硬件机制能够将启动消息发送给目标处理器来提示目标处理器开始执行由向量指定的分配的子任务。
在步骤506,每一个处理节点202执行分配给它的可能响应或可能不响应相关联的存储器206的存储器初始化和测试子任务。在图2的一个示例实施中,计算系统200包括四个核、一个控制核202[0]和三个从核202[1:3]。存储器初始化/测试任务由控制核202[1]分成多个子任务(例如,子任务1、子任务2、子任务3等)。控制核202[0]将子任务1发送给第一从核202[1],将子任务2发送给第二从核202[2],和将子任务3发送给第三从核202[3]。在步骤504,每一个从核202[1:3]接收其子任务和规划执行。此外,控制核202[0]可继续执行不同的子任务或等待执行在从核上完成,或者可自己执行单独的子任务。每一个从核202[1:3]在它有资源处理任务时及时在一些点执行子任务,作为结果,执行时间可能会或可能不会与其它的从核重叠。作为结果,取决于在从核上的可用的资源,有可能是分配的存储器初始化/测试子任务由从核202以串行方式或并行来执行。子任务的执行能够由处理节点实施,或由在每一个处理节点的北桥内的电路实施。
可以理解,控制核和从核可位于在独立的平台系统上。在这些实现中,控制核将子任务发送到每一个参与的平台系统,使那个系统上的一个或多个核能够每一个处理分配给它的子任务。在这种情况下,执行可串行或并行进行。作为存储器初始化任务执行的分布性质的结果,是并行执行还是串行执行的事实与任务的完成是不相干的。如果是并行执行任务,任务可能完成得更快,但传输数据的延迟可能会导致在控制核的串行化。
在步骤508,每一个处理节点将状态报告给BSP。状态报告能够例如在存储器初始化和测试期间是连续的,或在存储器初始化和测试完成时是定期式的。此外,状态报告能够以多种方式报告。例如,启动纽带处理器能够定期发送一个查询到每一个处理节点,以询问所分配的子任务是否已经执行。可替换地,每一个处理节点能够发送一条向启动纽带处理器指示它的状态的消息。作为另一替换,每一个处理节点可以向本地寄存器或甚至是启动纽带处理器的本地存储器写入来报告状态。
在所有的处理节点完成所分配的存储器初始化/测试子任务的执行后,启动纽带处理器继续系统启动,其它的处理节点停止,步骤510。如果是存储器初始化/测试任务要执行(决定的肯定结果512),过程就在步骤504重新开始。否则,过程就在步骤514结束。
通过将存储器初始化/测试子任务分配到不同的处理节点,系统启动能够显著加快地完成。即使一些子任务依赖于先前的子任务的完成,其它的任务也能够不按顺序不等待先前的子任务完成来完成,通过不考虑依赖的任务和那些没有依赖的任务而进行分割、指定和分配子任务,能够改善整体性能和启动时间。这源于总的“系统启动”或“启动系统”的时间减少,因为一些子任务由第一节点处理而不必等待出现在它们前面的任务按顺序执行和它们不赖于在它们之前执行。当然,如果启动纽带处理器考虑到对每一个子任务的各自的依赖将存储器初始化/测试任务分成子任务,则存储器初始化可进一步改善。例如,可以向一个或多个指定的处理节点分配依赖于其它的子任务的结果的子任务,而可以向一个或多个指定的处理节点分配可以不按顺序完成不等待前面的子任务完成的子任务。
如本文所述,分布式存储器初始化例程可以由BIOS代码实现,它能够通过将存储器任务分割以由单独的节点分配和执行来配置、初始化和测试在一个多处理器系统的多个节点之间分布的存储器,造成改进的执行时间。例如,能够使一个核做从SMBus(慢总线)读取SPD的任务,而能够使另一个核执行不依赖于SPD的复杂的初始化任务。所公开的分布式处理方法还能够改善某些BIOS算法的准确性。例如,开发了训练算法借以使BIOS优化以更快执行,借以生成能够用于确定延迟设置的最佳位置的数据眼。然而,所生成的数据眼受能够由执行训练算法的核处理的数据量的限制。这里公开的分布式处理方式能够用来通过使用主核收集数据和将数据分割以分布给处理信息的系统中的其它核并将结果返到主核来提高精度。在分配的子任务不按顺序执行时,所公开的分割和分配计划也导致了更快的启动时间。另一种可能的好处是,通过将子任务分配给每个核而不是让启动纽带处理器执行所有的BIOS初始化任务,在BIOS初始化期间处理核可更有效地使用。
为了提供了进一步的例子和解释如何将存储器初始化任务分割和配置给总的子任务st数小于或等于系统中的总的核数的多个处理节点,现在参考以下的存储器初始化程序或算法:
T={st[1]+st[2]+st[3]+…st[X]},其中st是存储器初始化子任务;
C0=负责结合“st”创建“T”的主初始化核;
c[n]=子任务核,其中n={1…N};
N=核的最大数,使得N≥X;
X=对任何T的子任务的最大数;
n–当前的核数;
x-当前的子任务数;
步骤1-将子任务分配给核;
步骤2-为了c[n];
步骤3-为了st[x];
步骤4-将st[x]初始化信息和代码从c0发送到c[n];
步骤5-c[n]开始s[x]的执行;
步骤6-c0从c[n]接收st[x]的结果并开始执行;
步骤7-c0增加n和x;
步骤8-对所有的X,c0重复步骤2至7;
步骤9-在n=N时,移动到步骤10;
步骤10-c0收集分布式子任务的数据;
步骤11-为了c[n];
步骤12-c0从c[n]请求st[x]的数据;
步骤13-c[n]完成执行并将结果发送给c0;
步骤14-c0增加n和x;
步骤15-对所有的X,c0重复步骤11至14,直到所有的n=N为止;
步骤16-c0通过再结合来自所有的st[1-X]的数据生成T;
步骤17-对下一个任务重复所有步骤。
可以理解,上述程序能够以伪代码的形式和/或翻译成用于它们正在使用的特定指令集的体系结构的相应的汇编语言或高层次的语言码表示。此外,本文所述的操作能够包括通过由计算机系统的用户直接输入的指令和/或由软件模块执行的步骤。本文提及的任何步骤的功能可对应于模块或模块的部分的功能。除了软件模块外,上述流或流的部分可以作为应用指令实现。本文所指的操作可以是模块或模块的部分(例如,软件、固件或硬件模块)。例如,本文讨论的软件模块可包括脚本、批处理或其它可执行文件或这样的文件的组合和/或部分。软件模块可包括编码在计算机可读介质上的计算机程序或其子程序。
此外,本领域的技术人员将认识到,模块间的界限只是说明性的,替代的实施例可合并模块或施加可替代的功能模块分解。例如,本文讨论的模块可以分解成作为多个计算机过程执行的子模块。此外,替代的实施例可以结合特定模块或子模块的多个实例。此外,本领域的技术人员将认识到,在典范的实施例中所述的操作仅是为了说明。操作可以合并或操作的功能可以根据本发明分布在额外的操作中。因此,本文所述的流及其操作和因而模块可以在配置为执行流的操作的计算机系统上执行,和/或可从计算机可读介质执行。所述的流可实施在用于配置计算机系统执行所述流的、机器可读和/或计算机可读的介质中。因此,软件模块可以存储在计算机系统的存储器内和/或传送给计算机系统的存储器来配置计算机系统执行模块的功能。
上面公开的具体实施例仅仅是说明性的,不应作为对本发明的限制,这是因为,本发明可以被修改和以不同但对受益于本文的教义的本领域的技术人员而言明显是等同的方式实施。因此,上述说明无意于将本发明限制为规定的特殊形式,与此相反,是为了包括可包括在由附加的权利要求定义的本发明的精神和范围内的这些可替代物、修改和等同物,是以本领域的技术人员应该明白,他们可以在最广泛的形式上不脱离本发明的精神和范围而做出各种改变、变换和替代。

Claims (16)

1.一种导致多个处理节点执行包括存储器初始化任务的启动过程任务的方法,包括:
在控制处理节点将存储器初始化任务分成多个存储器初始化子任务,
通过分配给所述多个处理节点中的一个以DIMM存储器读取串行存在检测值的存储器初始化子任务,和分配给所述多个处理节点中的另一个以执行不依赖于串行存在检测值的复杂的初始化任务的存储器初始化子任务,将所述多个存储器初始化子任务分配在所述多个处理节点之间,使得每一个存储器初始化子任务都有相应的处理节点,
在所述相应的处理节点执行每一个存储器初始化子任务以生成子任务的结果,和
在所述控制处理节点结合来自所述多个处理节点的子任务的结果,其中所述多个存储器初始化子任务可以在所述多个处理节点并行执行或按顺序执行。
2.如权利要求1所述的方法,还包括在分配所述多个存储器初始化子任务之前初始化所述多个处理节点之间的通信链接。
3.如权利要求1所述的方法,在所述相应的处理节点执行每一个存储器初始化子任务包括规划调度每一个存储器初始化子任务在所述相应的处理节点执行。
4.如权利要求1所述的方法,在所述相应的处理节点执行每一个存储器初始化子任务包括执行软件程序。
5.如权利要求1所述的方法,还包括在所述控制处理节点接收关于所述存储器初始化子任务在所述相应的处理节点的执行的状态报告。
6.如权利要求1所述的方法,其中,在所述多个处理节点中的一个与在所述多个处理节点中的另一个并行执行各自相应的存储器初始化子任务。
7.一种计算机系统,包括:
系统存储器;和
多个处理节点,所述处理节点中的每一个都包括处理器核、与所述多个处理节点中的至少另外一个的通信接口和用于管理进出系统存储器的数据流的存储器控制器,所述多个处理节点包括主处理节点和一个或多个执行处理节点,其中所述主处理节点配置为通过将所述存储器初始化任务分成多个存储器初始化子任务和将所述多个存储器初始化子任务分配给所述一个或多个执行处理节点以使每一个被分配的存储器初始化子任务都有相应的执行处理节点来在系统存储器上执行存储器初始化任务,其中所述多个存储器初始化子任务可以在所述一个或多个执行处理节点并行或按顺序执行以便分配给所述多个执行处理节点中一个的存储器初始化子任务不按顺序不依赖于分配给所述多个执行处理节点中的另一个的其它的存储器初始化子任务而执行。
8.如权利要求7所述的计算机系统,其中,每一个执行处理节点配置为执行由主处理节点分配给它的每一个存储器初始化子任务并由此生成子任务的结果。
9.如权利要求7所述的计算机系统,其中,所述主处理节点进一步配置为结合从所述一个或多个执行处理节点来的子任务结果。
10.如权利要求7所述的计算机系统,其中,所述系统存储器包括多个双列直插存储器模块。
11.如权利要求7所述的计算机系统,其中,所述主处理节点进一步配置为接收从所述一个或多个执行处理节点来的所述存储器初始化子任务的状态。
12.如权利要求7所述的计算机系统,其中,所述主处理节点是执行存储器初始化子任务的所述一个或多个执行处理节点中的一个。
13.如权利要求7所述的计算机系统,其中,所述一个或多个执行处理节点中的一个与所述一个或多个执行处理节点中的另一个并行执行各自相应的存储器初始化子任务。
14.如权利要求7所述的计算机系统,其中,所述主处理节点通过基于在所述一个或多个执行处理节点执行所述多个初始化存储器子任务的结果程序化所述主处理节点的所述存储器控制器中的一个或多个寄存器来执行所述存储器初始化任务。
15.一种计算机系统,包括:
存储器阵列;和
多个处理节点,所述处理节点中的每一个都包括处理器、用于与所述存储器阵列通信的存储器控制器和所述多个处理节点中的至少另外一个的通信接口;
其中,所述多个处理节点中的一个将存储器初始化任务分成多个子任务和将所述多个子任务分配给所述多个处理节点;
其中,所述多个处理节点中的每一个能够在执行所分配的子任务的同时从所述存储器阵列的任何部分获取信息和将子任务的执行结果返回给所述多个处理节点中的所述一个,从而使得所述多个处理节点有效地和快速地执行所述存储器阵列的存储器初始化;以及
其中,所述多个处理节点中的所述一个通过基于在所述多个处理节点执行所述多个子任务的结果程序化所述存储器控制器中的一个或多个寄存器来执行存储器初始化任务,从而与通过只在所述多个处理节点中的一个上执行所述存储器初始化任务来启动所需要的时间相比减少了启动时间要求。
16.如权利要求15所述的计算机系统,其中,所述存储器阵列包括通过双数据速率(DDR)总线与所述多个处理节点相连的多个双列直插存储器模块。
CN201080055347.6A 2009-11-24 2010-11-22 存储器初始化的方法和装置 Active CN102648453B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/624,626 US8307198B2 (en) 2009-11-24 2009-11-24 Distributed multi-core memory initialization
US12/624,626 2009-11-24
PCT/US2010/057561 WO2011066202A1 (en) 2009-11-24 2010-11-22 Distributed multi-core memory initialization

Publications (2)

Publication Number Publication Date
CN102648453A CN102648453A (zh) 2012-08-22
CN102648453B true CN102648453B (zh) 2015-11-25

Family

ID=43501297

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080055347.6A Active CN102648453B (zh) 2009-11-24 2010-11-22 存储器初始化的方法和装置

Country Status (6)

Country Link
US (2) US8307198B2 (zh)
EP (1) EP2504761A1 (zh)
JP (1) JP5646644B2 (zh)
KR (1) KR101623892B1 (zh)
CN (1) CN102648453B (zh)
WO (1) WO2011066202A1 (zh)

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101872308A (zh) * 2009-04-25 2010-10-27 鸿富锦精密工业(深圳)有限公司 内存条控制系统及其控制方法
JP5354102B2 (ja) * 2010-06-29 2013-11-27 富士通株式会社 マルチコアプロセッサシステム、通信制御方法、および通信制御プログラム
US9936209B2 (en) * 2011-08-11 2018-04-03 The Quantum Group, Inc. System and method for slice processing computer-related tasks
US8954639B2 (en) * 2011-09-06 2015-02-10 International Business Machines Corporation Integrated link calibration and multi-processor topology discovery
US9710768B2 (en) 2011-09-23 2017-07-18 Elwha Llc Acquiring and transmitting event related tasks and subtasks to interface devices
US20130081049A1 (en) * 2011-09-23 2013-03-28 Elwha LLC, a limited liability company of the State of Delaware Acquiring and transmitting tasks and subtasks to interface devices
US20130081050A1 (en) * 2011-09-23 2013-03-28 Elwha LLC, a limited liability company of the State of Delaware Acquiring and transmitting tasks and subtasks to interface devices
US9336130B2 (en) * 2011-11-30 2016-05-10 Sandisk Technologies Inc. Methods, systems, and computer readable media for providing basic input/output system (BIOS) data and non-BIOS data on the same non-volatile memory
US9367329B2 (en) 2011-12-29 2016-06-14 Intel Corporation Initialization of multi-core processing system
CN104321742B (zh) 2012-03-23 2017-08-29 波利科雷软件股份有限公司 用于提供多核心编程平台的装置和方法
CN102779075B (zh) * 2012-06-28 2014-12-24 华为技术有限公司 一种在多处理器核系统中进行调度的方法、装置及系统
KR20140036731A (ko) * 2012-09-18 2014-03-26 한국전자통신연구원 응용 프로그램 개발 방법 및 시스템
FR2996020A1 (fr) * 2012-09-27 2014-03-28 Thales Sa Dispositif de traitement numerique comportant plusieurs coeurs, systeme radar comportant un tel dispositif et procedes associes de traitement de donnees et de generation d'une table d'evenements
CN102999385B (zh) * 2012-11-06 2016-05-25 国网山东省电力公司枣庄供电公司 计算设备中多处理器协同处理方法
CN103870334B (zh) * 2012-12-18 2017-05-31 中国移动通信集团公司 一种大规模漏洞扫描的任务分配方法及装置
KR102183274B1 (ko) * 2013-01-16 2020-11-26 에스케이플래닛 주식회사 분산 처리 시스템 및 그 방법, 그리고 이에 적용되는 장치
JP2016513839A (ja) * 2013-03-15 2016-05-16 ホアウェイ・テクノロジーズ・カンパニー・リミテッド 複数の中央処理装置を備えたコンピュータシステムの立ち上げ方法
JP5942904B2 (ja) * 2013-03-19 2016-06-29 株式会社デンソー 処理装置
US9846598B2 (en) * 2013-04-03 2017-12-19 Hewlett Packard Enterprise Development Lp Modifying a flow of operations to be executed in a plurality of execution environments
WO2014209406A1 (en) * 2013-06-29 2014-12-31 Intel Corporation On-chip mesh interconnect
US10229043B2 (en) * 2013-07-23 2019-03-12 Intel Business Machines Corporation Requesting memory spaces and resources using a memory controller
US9792112B2 (en) 2013-08-28 2017-10-17 Via Technologies, Inc. Propagation of microcode patches to multiple cores in multicore microprocessor
US9471133B2 (en) 2013-08-28 2016-10-18 Via Technologies, Inc. Service processor patch mechanism
US9465432B2 (en) 2013-08-28 2016-10-11 Via Technologies, Inc. Multi-core synchronization mechanism
WO2015047302A1 (en) * 2013-09-27 2015-04-02 Hewlett-Packard Development Company, L.P. Processing a hybrid flow associated with a service class
US9658858B2 (en) * 2013-10-16 2017-05-23 Xilinx, Inc. Multi-threaded low-level startup for system boot efficiency
JP6206097B2 (ja) 2013-11-01 2017-10-04 富士通株式会社 情報処理装置、起動方法及び起動プログラム
US9239711B1 (en) * 2013-12-31 2016-01-19 Google Inc. Run benchmark or analysis tools against massive repository of archived webpages on machines in the cloud for continuous builds or AD-HOC requests
WO2015116096A2 (en) 2014-01-30 2015-08-06 Hewlett-Packard Development Company, L.P. Multiple compute nodes
EP2962192B1 (en) * 2014-05-09 2017-12-06 Huawei Technologies Co., Ltd. System and method thereof to optimize boot time of computers having multiple cpus
CN104520811B (zh) * 2014-05-09 2017-07-28 华为技术有限公司 优化具有多个中央处理器的计算机的启动时间的系统及方法
CN105100179B (zh) * 2014-05-23 2018-10-19 杭州华为数字技术有限公司 服务器集群系统
US9710381B2 (en) 2014-06-18 2017-07-18 International Business Machines Corporation Method and apparatus for cache memory data processing
CN104298576B (zh) * 2014-09-25 2018-09-04 小米科技有限责任公司 终端测试方法及装置
CN105528199B (zh) * 2014-09-30 2019-04-19 华为技术有限公司 一种节点的处理方法及装置
US10210107B2 (en) 2014-10-29 2019-02-19 Hewlett Packard Enterprise Development Lp Trans-fabric instruction set for a communication fabric
US20160164696A1 (en) * 2014-12-08 2016-06-09 Ebay Inc. Modular internet of things
US10248487B1 (en) * 2015-01-27 2019-04-02 Violin Systems Llc Error recovery for multi-stage simultaneously running tasks
US10528443B2 (en) * 2015-01-30 2020-01-07 Samsung Electronics Co., Ltd. Validation of multiprocessor hardware component
US10193826B2 (en) 2015-07-15 2019-01-29 Intel Corporation Shared mesh
TWI554945B (zh) * 2015-08-31 2016-10-21 晨星半導體股份有限公司 例行工作的分配方法及應用其之多核心電腦
CN106708727B (zh) * 2016-08-03 2020-04-28 腾讯科技(深圳)有限公司 一种分布式病毒特征样本验证方法及系统
WO2019066780A1 (en) * 2017-09-26 2019-04-04 Intel Corporation METHODS AND APPARATUS FOR REDUCING BOOT TIME IN A PROCESSOR AND PROGRAMMABLE LOGIC DEVICE ENVIRONMENT
KR102623918B1 (ko) * 2017-12-25 2024-01-11 인텔 코포레이션 프리-메모리 초기화 멀티스레드 병렬 컴퓨팅 플랫폼
US11042644B2 (en) * 2018-02-01 2021-06-22 Quixant Plc Method and system for security verification in a booting process with a multi-core processor
CN109448777A (zh) * 2018-11-12 2019-03-08 郑州云海信息技术有限公司 一种nvme固态硬盘的测试方法及装置
CN109581925A (zh) * 2018-12-05 2019-04-05 北京和利时系统工程有限公司 一种任务处理方法及装置、计算机可读存储介质
US20200341776A1 (en) * 2020-07-07 2020-10-29 Krishnaprasad H Apparatus for initializing memory using a hardware engine for minimizing boot time
JP7460743B1 (ja) 2022-12-27 2024-04-02 Necプラットフォームズ株式会社 メモリコントローラ及びメモリコントローラ制御方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6158000A (en) * 1998-09-18 2000-12-05 Compaq Computer Corporation Shared memory initialization method for system having multiple processor capability
CN101464813A (zh) * 2007-12-19 2009-06-24 国际商业机器公司 用于多核处理器上的自动工作量分配的系统和方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU5029896A (en) * 1995-03-31 1996-10-16 Intel Corporation Memory testing in a multiple processor computer system
US5768585A (en) * 1995-11-21 1998-06-16 Intel Corporation System and method for synchronizing multiple processors during power-on self testing
US6336185B1 (en) * 1998-09-24 2002-01-01 Phoenix Technologies Ltd. Use of other processors during BIOS boot sequence to minimize boot time
US6766474B2 (en) * 2000-12-21 2004-07-20 Intel Corporation Multi-staged bios-based memory testing
JP3773195B2 (ja) * 2002-10-25 2006-05-10 インターナショナル・ビジネス・マシーンズ・コーポレーション メモリモジュール、情報処理装置、メモリモジュールに関する初期設定方法、並びにプログラム
US7065688B1 (en) 2003-02-19 2006-06-20 Advanced Micro Devices, Inc. Simultaneous multiprocessor memory testing and initialization
US7194660B2 (en) * 2003-06-23 2007-03-20 Newisys, Inc. Multi-processing in a BIOS environment
US7539909B2 (en) * 2003-09-30 2009-05-26 Intel Corporation Distributed memory initialization and test methods and apparatus
US7251744B1 (en) 2004-01-21 2007-07-31 Advanced Micro Devices Inc. Memory check architecture and method for a multiprocessor computer system
US7281127B2 (en) 2004-12-27 2007-10-09 Intel Corporation Concurrent processing of operations in a boot sequence to initialize a storage device including an operating system loader to load
JP4569368B2 (ja) * 2005-04-26 2010-10-27 日本電気株式会社 計算機システム、メモリ初期化方法、および計算機システムのプログラム
WO2007025112A1 (en) * 2005-08-23 2007-03-01 Advanced Micro Devices, Inc. Method for proactive synchronization within a computer system
US7526639B2 (en) * 2006-02-13 2009-04-28 International Business Machines Corporation Method to enhance boot time using redundant service processors
US7779244B2 (en) 2006-12-28 2010-08-17 Intel Corporation Multi-socket boot
JP4234766B1 (ja) * 2007-10-31 2009-03-04 株式会社東芝 電子機器およびその制御方法
JP5068188B2 (ja) * 2008-01-21 2012-11-07 インターナショナル・ビジネス・マシーンズ・コーポレーション メモリのテストを実行する方法、コンピュータ・プログラム、およびシステム
US20090193175A1 (en) 2008-01-28 2009-07-30 Advanced Micro Devices, Inc. Identification of an onboard memory buffer device from a system address
JP5217520B2 (ja) * 2008-03-06 2013-06-19 株式会社リコー 電子機器

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6158000A (en) * 1998-09-18 2000-12-05 Compaq Computer Corporation Shared memory initialization method for system having multiple processor capability
CN101464813A (zh) * 2007-12-19 2009-06-24 国际商业机器公司 用于多核处理器上的自动工作量分配的系统和方法

Also Published As

Publication number Publication date
US8566570B2 (en) 2013-10-22
JP5646644B2 (ja) 2014-12-24
US20130042096A1 (en) 2013-02-14
US20110126209A1 (en) 2011-05-26
US8307198B2 (en) 2012-11-06
KR101623892B1 (ko) 2016-05-24
KR20120112454A (ko) 2012-10-11
EP2504761A1 (en) 2012-10-03
WO2011066202A1 (en) 2011-06-03
CN102648453A (zh) 2012-08-22
JP2013512509A (ja) 2013-04-11

Similar Documents

Publication Publication Date Title
CN102648453B (zh) 存储器初始化的方法和装置
US8954721B2 (en) Multi-chip initialization using a parallel firmware boot process
CN105264506B (zh) 向内存映射配置分配处理器
US9921949B2 (en) Software testing
CN100476837C (zh) 一种支持随机指令测试的微处理器fpga验证装置
US9720704B2 (en) Data driven hardware chips initialization via hardware procedure framework
CN102279766B (zh) 并行模拟多个处理器的方法及系统、调度器
JP2005129053A (ja) フォールトトレラント・マルチコア・マイクロプロセッシング
US8615770B1 (en) System and method for dynamically spawning thread blocks within multi-threaded processing systems
US10761822B1 (en) Synchronization of computation engines with non-blocking instructions
TW201947397A (zh) 多核心系統的記憶體池分配
CN100437485C (zh) 用于配置计算机系统的系统和方法
Van Lunteren et al. Coherently attached programmable near-memory acceleration platform and its application to stencil processing
CN113191114A (zh) 用于验证系统的方法和装置
US10922146B1 (en) Synchronization of concurrent computation engines
US8959497B1 (en) System and method for dynamically spawning thread blocks within multi-threaded processing systems
US10409624B1 (en) Data array compaction in an emulation system
CN111782335A (zh) 通过进程内操作系统的扩展应用机制
US11392325B2 (en) Method and system for parallel flash memory programming
CN113672260B (zh) 一种处理器cpu初始化方法
CN115935870A (zh) 功耗分析方法、装置、电子设备、存储介质
US20100199284A1 (en) Information processing apparatus, self-testing method, and storage medium
US11061654B1 (en) Synchronization of concurrent computation engines
Zykov et al. Application of information processes applicative modelling to virtual machines auto configuration
US20220391309A1 (en) Continuous testing and dependency tracking for java virtual machines

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant