CN115291957B - 多处理器主板的初始化方法和装置 - Google Patents

多处理器主板的初始化方法和装置 Download PDF

Info

Publication number
CN115291957B
CN115291957B CN202211219671.8A CN202211219671A CN115291957B CN 115291957 B CN115291957 B CN 115291957B CN 202211219671 A CN202211219671 A CN 202211219671A CN 115291957 B CN115291957 B CN 115291957B
Authority
CN
China
Prior art keywords
processing unit
software
hardware configuration
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.)
Active
Application number
CN202211219671.8A
Other languages
English (en)
Other versions
CN115291957A (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.)
Beijing Dayu Zhixin Technology Co ltd
Original Assignee
Beijing Dayu Zhixin Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Dayu Zhixin Technology Co ltd filed Critical Beijing Dayu Zhixin Technology Co ltd
Priority to CN202211219671.8A priority Critical patent/CN115291957B/zh
Publication of CN115291957A publication Critical patent/CN115291957A/zh
Application granted granted Critical
Publication of CN115291957B publication Critical patent/CN115291957B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06F9/4403Processor initialisation

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)
  • Stored Programmes (AREA)
  • Multi Processors (AREA)

Abstract

本申请提供一种多处理器主板的初始化方法与装置,属于计算机技术领域,所述多处理器主板包括一个主处理单元和至少一个从处理单元,主处理单元和从处理单元均包括处理器和对应的外围器件,主处理器和从处理器型号相同,所述方法包括:在主板上电启动的情况下从CPLD的寄存器中获取各处理单元的软硬件配置指示信息,基于各处理单元的软硬件配置指示信息确定各处理单元的软硬件配置信息,基于BIOS固件和各处理单元的软硬件配置信息确定各处理单元的初始化参数,基于各处理单元的初始化参数同时对主处理单元和各从处理器进行初始化,在主处理单元初始化完成时,对各从处理单元中的外围器件进行初始化,能避免初始化过程中的同步错误问题。

Description

多处理器主板的初始化方法和装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种多处理器主板的初始化方法和装置。
背景技术
计算机设备主板在上电启动过程中会通过BIOS固件进行初始化,现有技术会根据主板中处理器的功能设置针对性设计BIOS固件,对于包括多个处理器的主板,由于各处理器的功能设置存在差异,导致同一台设备中需要维护多套BIOS固件代码,主板在上电启动过程中,多个处理器基于各自对应的BIOS固件代码进行初始化,可能导致同步错误。同时随着计算机技术的高速迭代,主板功能不断更新,主板中各处理器的功能设置也在不断变化,这将导致BIOS固件代码需要频繁修改,BIOS固件的频繁更新进一步增加了初始化过程中出现同步错误的概率,严重影响主板性能,甚至会造成计算机设备故障。
发明内容
本申请提供一种多处理器主板的初始化方法和装置,以用于避免多处理器主板初始化过程中出现同步错误的问题,降低计算机设备的故障率。
本申请提供一种多处理器主板的初始化方法,所述多处理器主板包括一个复杂可编程逻辑器件CPLD、一个主处理单元和至少一个从处理单元,所述主处理单元包括主处理器和对应的第一外围器件,所述从处理单元包括从处理器和对应的第二外围器件,所述外围器件包括内存、硬盘和网口,所述主处理器和所述从处理器型号相同,所述方法包括:
在主板上电启动的情况下,从CPLD的寄存器中获取各处理单元的软硬件配置指示信息,并基于各处理单元的软硬件配置指示信息确定各处理单元的软硬件配置信息;
基于基本输入输出系统BIOS固件和各处理单元的软硬件配置信息分别确定各处理单元的初始化参数;所述BIOS固件中包括与处理单元的软硬件配置信息匹配的多组初始化参数;
基于各处理单元的初始化参数同时对所述主处理单元和各从处理器进行初始化,在所述主处理单元初始化完成的情况下,响应于所述主处理器的控制指令对各从处理单元中的第二外围器件进行初始化。
根据本申请提供的一种多处理器主板的初始化方法,所述CPLD的寄存器中包括用于存储主板中不同处理单元的软硬件配置指示信息的多个存储区域,每个存储区域中包括用于存储处理单元中各软硬件模块的配置指示信息的多个地址段,相应的,所述从CPLD的寄存器中获取各处理单元的软硬件配置指示信息,并基于各处理单元的软硬件配置指示信息确定各处理单元的软硬件配置信息,具体包括:
基于不同处理单元的软硬件配置指示信息与存储区域的对应关系,确定目标处理单元对应的目标存储区域;
基于不同模块的配置指示信息与地址段的对应关系,从所述目标存储区域的目标地址段中读取目标处理单元中各软硬件模块的配置指示信息;
基于所述目标处理单元中各软硬件模块的配置指示信息,生成所述目标处理单元的软硬件配置信息表。
根据本申请提供的一种多处理器主板的初始化方法,所述基于BIOS固件和各处理单元的软硬件配置信息分别确定各处理单元的初始化参数,具体包括:
基于处理单元的软硬件配置信息与BIOS固件中的多组初始化参数的对应关系,确定目标处理单元对应的目标初始化参数。
根据本申请提供的一种多处理器主板的初始化方法,所述各处理单元的软硬件配置指示信息是在主板设计完成时预先设置并存储于所述CPLD的寄存器中的,相应的,所述BIOS固件是基于处理器的功能组合预先生成并在主板设计完成时存储于主板中的。
根据本申请提供的一种多处理器主板的初始化方法,在将各处理单元的软硬件配置指示信息存储于所述CPLD的寄存器中之后,所述方法还包括:
对所述CPLD的寄存器中的各处理单元的软硬件配置指示信息进行正确性校验,若校验不通过,则对存在错误的软硬件配置指示信息进行修正,直至校验通过。
根据本申请提供的一种多处理器主板的初始化方法,所述对所述CPLD的寄存器中的各处理单元的软硬件配置指示信息进行正确性校验,具体包括:
读取所述CPLD的寄存器中的各处理单元的软硬件配置指示信息,并基于各处理单元的软硬件配置指示信息生成对应的软硬件配置信息表;
判断所述软硬件配置信息表中的配置信息是否与主板的设计指标匹配,若匹配,则校验通过;若不匹配,则校验不通过。
根据本申请提供的一种多处理器主板的初始化方法,所述各处理单元的初始化参数可通过所述BIOS固件的应用程序接口API获取。
本申请还提供一种多处理器主板的初始化装置,所述多处理器主板包括一个复杂可编程逻辑器件CPLD、一个主处理单元和至少一个从处理单元,所述主处理单元包括主处理器和对应的第一外围器件,所述从处理单元包括从处理器和对应的第二外围器件,所述外围器件包括内存、硬盘和网口,所述主处理器和所述从处理器型号相同,所述装置包括:
软硬件配置信息确定模块,用于在主板上电启动的情况下,从CPLD的寄存器中获取各处理单元的软硬件配置指示信息,并基于各处理单元的软硬件配置指示信息确定各处理单元的软硬件配置信息;
初始化参数确定模块,用于基于BIOS固件和各处理单元的软硬件配置信息分别确定各处理单元的初始化参数;所述BIOS固件中包括与处理单元的软硬件配置信息匹配的多组初始化参数;
主板初始化模块,用于基于各处理单元的初始化参数同时对所述主处理单元和各从处理器进行初始化,在所述主处理单元初始化完成的情况下,响应于所述主处理器的控制指令对各从处理单元中的第二外围器件进行初始化。
本申请还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述多处理器主板的初始化方法的步骤。
本申请还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述多处理器主板的初始化方法的步骤。
本申请提供的多处理器主板的初始化方法与装置,在主板上电启动的情况下,从CPLD的寄存器中获取各处理单元的软硬件配置指示信息,并基于各处理单元的软硬件配置指示信息确定各处理单元的软硬件配置信息;基于基本输入输出系统BIOS固件和各处理单元的软硬件配置信息分别确定各处理单元的初始化参数;所述BIOS固件中包括与处理单元的软硬件配置信息匹配的多组初始化参数;基于各处理单元的初始化参数同时对所述主处理单元和各从处理器进行初始化,在所述主处理单元初始化完成的情况下,响应于所述主处理器的控制指令对各从处理单元中的第二外围器件进行初始化,能够避免同一台设备中维护多套BIOS固件代码的情形,进而避免多个处理器基于各自对应的BIOS固件代码进行初始化导致同步错误的问题。同时也能避免BIOS固件的频繁更新导致同步错误的问题,最大限度保证了主板性能,降低了计算机设备的故障率。
附图说明
为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的多处理器主板的结构示意图;
图2是本申请提供的多处理器主板的初始化方法的流程示意图;
图3是本申请提供的软硬件配置信息的确定流程示意图;
图4是本申请提供的软硬件配置指示信息的正确性校验流程示意图;
图5是本申请提供的多处理器主板的初始化装置的结构示意图;
图6是本申请提供的电子设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1为本申请提供的多处理器主板的结构示意图,如图1所示,所述多处理器主板包括一个复杂可编程逻辑器件CPLD(Complex Programmable Logic Device)、一个主处理单元和至少一个从处理单元,所述主处理单元包括主处理器和对应的第一外围器件,所述从处理单元包括从处理器和对应的第二外围器件,可以理解的是,所述“第一”和“第二”仅是为了方便区分,并不构成对外围器件的限定。所述主处理单元和从处理单元均包括至少一种外围器件,所述外围器件包括内存、硬盘和网口等,主处理单元和从处理单元中的外围器件类型和数量可以根据主板的设计需要进行调整,本申请实施例对其不作具体限定。值得注意的是,出于保证兼容性和整体性能的考虑,所述主处理器和所述从处理器通常采用相同型号的处理器。
基于前述内容可知,现有技术会根据主板中处理器的功能设置针对性设计BIOS固件,对于包括多个处理器的主板,由于各处理器的功能设置存在差异,导致同一台设备中需要维护多套BIOS固件代码,主板在上电启动过程中,多个处理器基于各自对应的BIOS固件代码进行初始化,即各处理器的初始化过程完全独立。但对于包括主从处理器的主板,主处理器需要与从处理器协同工作,若各处理器的初始化过程完全独立,将导致主处理器无法获知从处理器的配置信息,进而导致同步错误。同时随着计算机技术的高速迭代,主板功能不断更新,主板中各处理器的功能设置也在不断变化,这将导致BIOS固件代码需要频繁修改,BIOS固件的频繁更新可能会引起未知错误,从而进一步增加了初始化过程中出现同步错误的概率,严重影响主板性能,甚至会造成计算机设备故障。基于此,本申请提出一种多处理器主板的初始化方法和装置,以用于避免多处理器主板初始化过程中出现同步错误的问题,降低计算机设备的故障率。
图2为本申请提供的多处理器主板的初始化方法的流程示意图,如图2所示,该方法包括:
步骤101,在主板上电启动的情况下,从CPLD的寄存器中获取各处理单元的软硬件配置指示信息,并基于各处理单元的软硬件配置指示信息确定各处理单元的软硬件配置信息。
具体的,本申请发明人通过研究发现,对于主板的初始化实质上就是对主板上各处理单元的初始化,而各处理单元的初始化参数是由处理器的软硬件配置参数决定的,各处理单元的软硬件配置参数是由处理器的功能设计决定的,而处理器的功能设计取决于处理器自身的功能参数。因此,对于同一型号的处理器而言,由于其各项功能参数已知,因此,其能够支持的功能设计也能够预期,进一步的,其全部功能设计对应的软硬件配置参数也可以预先确定。例如,内存类型为内存条或颗粒,硬盘类型为nand、sata、emmc、USB或hdd,、网口类型为sgmii、rgmii或使用端口。基于此,本申请实施例对于主处理器和从处理器型号相同的主板,预先基于当前型号的处理器的功能参数确定其能够支持的全部功能,再基于其能够支持的全部功能确定对应的软硬件配置参数,进而基于不同的软硬件配置参数开发BIOS固件。采用该设计开发的BIOS固件中将包括与当前型号处理器的不同软硬件配置参数匹配的多组初始化参数,因此,只要主板处理单元中的处理器型号不变,无论处理单元的功能如何变化,只要确定了处理单元的软硬件配置信息(即前述软硬件配置参数),所述BIOS固件均能支持对其进行初始化。
进一步的,对于处理单元的软硬件配置信息的获取方式,现有技术通常在BIOS固件中预先存储主板ID与软硬件配置信息的映射关系,基于此,可以基于主板ID确定对应的软硬件配置信息,进行确定初始化参数。但随着计算机技术的高速迭代,主板功能更新的速度也越来越快,只要主板功能存在更新,对应的主板ID也会更新,这将导致BIOS固件代码也需要不断更新,基于前述内容可知,BIOS固件的频繁更新可能会引起未知错误,从而进一步增加了初始化过程中出现同步错误的概率,严重影响主板性能,甚至会造成计算机设备故障。针对该问题,本申请实施例进一步对处理单元的软硬件配置信息的获取方式进行改进。具体的,由于主板设计完成时,其对应的软硬件配置已经固定,可以直接确定其对应的软硬件配置信息。基于此,本申请实施例在主板设计完成时,根据既定的主板软硬件配置信息,预先设置各处理单元的软硬件配置指示信息并存储于所述CPLD的寄存器中。所述软硬件配置指示信息为CPLD的寄存器中的值,不同寄存器地址用于存储不同处理单元的软硬件配置指示信息。下面以某一处理单元的内存模块的配置指示信息为例进行解释说明:
内存模块的配置信息通常包括内存类型以及spd(SERIAL PRESENCE DETECT,模组存在的串行检测)信息获取方式,本申请实施例通过寄存器地址0x0010处的寄存器值表征内存类型,例如0x01表示内存条,0x02表示内存颗粒。如果处理单元的内存类型为内存条,则意味着spd信息从内存条读取,因此,本申请实施例通过在寄存器0x0011处设置内存条的spd地址。如果处理单元的内存类型为贴片内存颗粒,则意味着需要使用软件模拟spd信息,因此,本申请实施例通过在寄存器0x0012设置软件模拟spd信息编号。基于此,在内存模块初始化过程中能够通过CPLD寄存器中的软硬件配置指示信息快速确定内存模块的配置参数,进而获取内存模块的初始化参数,完成高效初始化。可以理解的是,其它软硬件模块的配置指示信息的设置方式与内存模块类似,在此不再一一列举。
综上所述,在主板上电启动的情况下,能够从CPLD的寄存器中快速获取各处理单元的软硬件配置指示信息,并基于各处理单元的软硬件配置指示信息确定各处理单元的软硬件配置信息,不但提高了主板的初始化效率,也避免了同一台设备中维护多套BIOS固件代码的情形,同时也能避免BIOS固件的频繁更新导致同步错误的问题,最大限度保证了主板性能,降低了计算机设备的故障率。
步骤102,基于基本输入输出系统BIOS固件和各处理单元的软硬件配置信息分别确定各处理单元的初始化参数;所述BIOS固件中包括与处理单元的软硬件配置信息匹配的多组初始化参数。
具体的,基于前述内容可知,由于所述BIOS固件中包括与处理单元的软硬件配置信息匹配的多组初始化参数,因此,确定了各处理单元的软硬件配置信息之后,即可基于软硬件配置信息与BIOS固件中多组初始化参数的对应关系确定各处理单元的初始化参数,保证了主板的初始化效率,降低了出错概率。
步骤103,基于各处理单元的初始化参数同时对所述主处理单元和各从处理器进行初始化,在所述主处理单元初始化完成的情况下,响应于所述主处理器的控制指令对各从处理单元中的第二外围器件进行初始化。
具体的,基于前述内容可知,对于包括主从处理器的主板,主处理器需要与从处理器协同工作,若各处理器的初始化过程完全独立,将导致主处理器无法获知从处理器的配置信息,进而导致同步错误。基于此,本申请实施例对各处理单元的初始化流程进行改进,具体的:首先基于各处理单元的初始化参数同时对所述主处理单元和各从处理器进行初始化,基于此,可以尽可能保证初始化效率。值得注意的是,对于主处理单元,本申请实施例直接基于对应的初始化参数进行初始化,即对主处理器和对应的第一外围器件进行初始化,但对于从处理单元,本申请实施例仅对各从处理器进行初始化。因此,若各从处理器的初始化进度比主处理单元的初始化进度快,所述从处理器完成初始化之后将等待主处理单元初始化。由于主处理单元完成初始化后将可以正常执行各项功能,为了避免主处理器无法获知从处理器的配置信息,进而导致同步错误的情况,本申请实施例将在所述主处理单元初始化完成后,响应于所述主处理器的控制指令对各从处理单元中的第二外围器件进行初始化,基于此,主处理单元将能够实时掌握各从处理单元的配置信息,进而避免同步错误的情况发生。可以理解的是,对各从处理单元中的第二外围器件进行初始化仍然是基于所述从处理单元的初始化参数进行,所述主处理器仅用于对初始化过程进行控制,基于此,能在避免同步错误的基础上,保证从处理单元的第二外围器件的初始化过程正常高效进行。
本申请实施例提供的方法,在主板上电启动的情况下,从CPLD的寄存器中获取各处理单元的软硬件配置指示信息,并基于各处理单元的软硬件配置指示信息确定各处理单元的软硬件配置信息;基于基本输入输出系统BIOS固件和各处理单元的软硬件配置信息分别确定各处理单元的初始化参数;所述BIOS固件中包括与处理单元的软硬件配置信息匹配的多组初始化参数;基于各处理单元的初始化参数同时对所述主处理单元和各从处理器进行初始化,在所述主处理单元初始化完成的情况下,响应于所述主处理器的控制指令对各从处理单元中的第二外围器件进行初始化,能够避免同一台设备中维护多套BIOS固件代码的情形,进而避免多个处理器基于各自对应的BIOS固件代码进行初始化导致同步错误的问题。同时也能避免BIOS固件的频繁更新导致同步错误的问题,最大限度保证了主板性能,降低了计算机设备的故障率。
基于上述实施例,图3是本申请提供的软硬件配置信息的确定流程示意图,如图3所示,所述CPLD的寄存器中包括用于存储主板中不同处理单元的软硬件配置指示信息的多个存储区域,每个存储区域中包括用于存储处理单元中各软硬件模块的配置指示信息的多个地址段,相应的,所述从CPLD的寄存器中获取各处理单元的软硬件配置指示信息,并基于各处理单元的软硬件配置指示信息确定各处理单元的软硬件配置信息,具体包括:
步骤201,基于不同处理单元的软硬件配置指示信息与存储区域的对应关系,确定目标处理单元对应的目标存储区域;
步骤202,基于不同模块的配置指示信息与地址段的对应关系,从所述目标存储区域的目标地址段中读取目标处理单元中各软硬件模块的配置指示信息;
步骤203,基于所述目标处理单元中各软硬件模块的配置指示信息,生成所述目标处理单元的软硬件配置信息表。
具体的,基于前述实施例可知,本申请在主板设计完成时,会根据既定的主板软硬件配置信息,预先设置各处理单元的软硬件配置指示信息并存储于所述CPLD的寄存器中。更具体的,为了保证各处理单元的软硬件配置信息的快速获取,本申请实施例将CPLD的寄存器中存储空间划分为用于存储主板中不同处理单元的软硬件配置指示信息的多个存储区域,并进一步将每个存储区域划分为用于存储处理单元中各软硬件模块的配置指示信息的多个地址段。基于此,基于不同处理单元的软硬件配置指示信息与存储区域的对应关系,即可确定目标处理单元对应的目标存储区域,进一步的,基于不同模块的配置指示信息与地址段的对应关系,即可从所述目标存储区域的目标地址段中读取目标处理单元中各软硬件模块的配置指示信息,进而基于所述目标处理单元中各软硬件模块的配置指示信息,生成所述目标处理单元的软硬件配置信息表。基于该方式,能够保证目标处理单元中各软硬件模块的配置指示信息的准确高效获取,进而保证初始化效率。可以理解的是,所述目标处理单元可以是主处理单元,也可以从处理单元。
本申请实施例提供的方法,所述CPLD的寄存器中包括用于存储主板中不同处理单元的软硬件配置指示信息的多个存储区域,每个存储区域中包括用于存储处理单元中各软硬件模块的配置指示信息的多个地址段,相应的,所述从CPLD的寄存器中获取各处理单元的软硬件配置指示信息,并基于各处理单元的软硬件配置指示信息确定各处理单元的软硬件配置信息,具体包括:基于不同处理单元的软硬件配置指示信息与存储区域的对应关系,确定目标处理单元对应的目标存储区域;基于不同模块的配置指示信息与地址段的对应关系,从所述目标存储区域的目标地址段中读取目标处理单元中各软硬件模块的配置指示信息;基于所述目标处理单元中各软硬件模块的配置指示信息,生成所述目标处理单元的软硬件配置信息表,能够快速确定各处理单元的软硬件配置信息,保证了主板初始化的效率。
基于上述任一实施例,所述基于BIOS固件和各处理单元的软硬件配置信息分别确定各处理单元的初始化参数,具体包括:
基于处理单元的软硬件配置信息与BIOS固件中的多组初始化参数的对应关系,确定目标处理单元对应的目标初始化参数。
具体的,其对应的实现原理和效果在前述实施例已经进行了详细说明,在此不再赘述。
本申请实施例提供的方法,所述基于BIOS固件和各处理单元的软硬件配置信息分别确定各处理单元的初始化参数,具体包括:基于处理单元的软硬件配置信息与BIOS固件中的多组初始化参数的对应关系,确定目标处理单元对应的目标初始化参数,能够保证目标处理单元对应的目标初始化参数的高效准确获取,进而保证主板初始化的效率,同时避免初始化出错。
基于上述任一实施例,所述各处理单元的软硬件配置指示信息是在主板设计完成时预先设置并存储于所述CPLD的寄存器中的,相应的,所述BIOS固件是基于处理器的功能组合预先生成并在主板设计完成时存储于主板中的。
具体的,基于前述实施例可知,所述各处理单元的软硬件配置指示信息是在主板设计完成时预先设置并存储于所述CPLD的寄存器中的,基于此,能够保证初始化过程中快速获取各处理单元的软硬件配置指示信息,同时,将各处理单元的软硬件配置指示信息存储于所述CPLD的寄存器中,也能保证信息的稳定性。所述BIOS固件是基于处理器的功能组合预先生成并在主板设计完成时存储于主板中的,保证BIOS固件能够支持同一型号不同功能的处理单元的初始化过程,避免BIOS固件的频繁更新导致同步错误的问题。
本申请实施例提供的方法,所述各处理单元的软硬件配置指示信息是在主板设计完成时预先设置并存储于所述CPLD的寄存器中的,相应的,所述BIOS固件是基于处理器的功能组合预先生成并在主板设计完成时存储于主板中的,能够保证初始化过程中快速获取各处理单元的准确的软硬件配置指示信息,同时避免BIOS固件的频繁更新导致同步错误的问题,最大限度保证了主板性能,降低了计算机设备的故障率。
基于上述任一实施例,在将各处理单元的软硬件配置指示信息存储于所述CPLD的寄存器中之后,所述方法还包括:
对所述CPLD的寄存器中的各处理单元的软硬件配置指示信息进行正确性校验,若校验不通过,则对存在错误的软硬件配置指示信息进行修正,直至校验通过。
具体的,本申请实施例考虑到处理单元的软硬件配置指示信息是相应的硬件设计人员人工设置的,可能会存在设置错误的情况,因此,本申请实施例在将各处理单元的软硬件配置指示信息存储于所述CPLD的寄存器中之后,进一步对所述CPLD的寄存器中的各处理单元的软硬件配置指示信息进行正确性校验,若校验不通过,则对存在错误的软硬件配置指示信息进行修正,直至校验通过。基于此,能够保证各处理单元的软硬件配置指示信息的正确性,进而避免初始化过程异常。对于软硬件配置指示信息的修正,可以通过人工完成,也可以通过软件程序自动完成,本申请实施例对此不作具体限定。
本申请实施例提供的方法,在将各处理单元的软硬件配置指示信息存储于所述CPLD的寄存器中之后,所述方法还包括:对所述CPLD的寄存器中的各处理单元的软硬件配置指示信息进行正确性校验,若校验不通过,则对存在错误的软硬件配置指示信息进行修正,直至校验通过,能够保证各处理单元的软硬件配置指示信息的正确性,进而避免初始化过程异常。
基于上述任一实施例,图4是本申请提供的软硬件配置指示信息的正确性校验流程示意图,如图4所示,所述对所述CPLD的寄存器中的各处理单元的软硬件配置指示信息进行正确性校验,具体包括:
步骤301,读取所述CPLD的寄存器中的各处理单元的软硬件配置指示信息,并基于各处理单元的软硬件配置指示信息生成对应的软硬件配置信息表;
步骤302,判断所述软硬件配置信息表中的配置信息是否与主板的设计指标匹配,若匹配,则校验通过;若不匹配,则校验不通过。
具体的,与初始化过程中软硬件配置信息表的获取方式相同,在进行各处理单元的软硬件配置指示信息的正确性校验时,本申请实施例首先读取所述CPLD的寄存器中的各处理单元的软硬件配置指示信息,再基于各处理单元的软硬件配置指示信息生成对应的软硬件配置信息表。得到软硬件配置信息表之后,即可判断所述软硬件配置信息表中的配置信息是否与主板的设计指标匹配,例如主板设计的内存频率是2900MHz,但软硬件配置信息表中显示的内存频率是2400 MHz,则说明不匹配,反之,若两者相同,则表示匹配。基于此,能够对各处理单元的软硬件配置指示信息进行准确的正确性校验,避免软硬件配置指示信息错误导致的初始化过程异常。
本申请实施例提供的方法,所述对所述CPLD的寄存器中的各处理单元的软硬件配置指示信息进行正确性校验,具体包括:读取所述CPLD的寄存器中的各处理单元的软硬件配置指示信息,并基于各处理单元的软硬件配置指示信息生成对应的软硬件配置信息表;判断所述软硬件配置信息表中的配置信息是否与主板的设计指标匹配,若匹配,则校验通过;若不匹配,则校验不通过,能够对各处理单元的软硬件配置指示信息进行准确的正确性校验,避免软硬件配置指示信息错误导致的初始化过程异常。
基于上述任一实施例,所述各处理单元的初始化参数可通过所述BIOS固件的应用程序接口API获取。
具体的,所述BIOS固件可以提供统一的对外接口API(Application ProgramInterface,应用程序接口),各处理单元通过调用相应的API接口即可获取相应的初始化参数,能够进一步提高各处理单元的初始化参数的获取效率,进而提高主板初始化效率。
本申请实施例提供的方法,所述各处理单元的初始化参数可通过所述BIOS固件的应用程序接口API获取,能够进一步提高各处理单元的初始化参数的获取效率,进而提高主板初始化效率。
下面对本申请提供的多处理器主板的初始化装置进行描述,下文描述的多处理器主板的初始化装置与上文描述的多处理器主板的初始化方法可相互对应参照。
基于上述任一实施例,图5是本申请提供的多处理器主板的初始化装置的结构示意图,如图5所示,所述多处理器主板包括一个复杂可编程逻辑器件CPLD、一个主处理单元和至少一个从处理单元,所述主处理单元包括主处理器和对应的第一外围器件,所述从处理单元包括从处理器和对应的第二外围器件,所述外围器件包括内存、硬盘和网口,所述主处理器和所述从处理器型号相同,该装置包括:
软硬件配置信息确定模块401,用于在主板上电启动的情况下,从CPLD的寄存器中获取各处理单元的软硬件配置指示信息,并基于各处理单元的软硬件配置指示信息确定各处理单元的软硬件配置信息;
初始化参数确定模块402,用于基于基本输入输出系统BIOS固件和各处理单元的软硬件配置信息分别确定各处理单元的初始化参数;所述BIOS固件中包括与处理单元的软硬件配置信息匹配的多组初始化参数;
主板初始化模块403,用于基于各处理单元的初始化参数同时对所述主处理单元和各从处理器进行初始化,在所述主处理单元初始化完成的情况下,响应于所述主处理器的控制指令对各从处理单元中的第二外围器件进行初始化。
本申请实施例提供的装置,软硬件配置信息确定模块401用于在主板上电启动的情况下,从CPLD的寄存器中获取各处理单元的软硬件配置指示信息,并基于各处理单元的软硬件配置指示信息确定各处理单元的软硬件配置信息;初始化参数确定模块402用于基于基本输入输出系统BIOS固件和各处理单元的软硬件配置信息分别确定各处理单元的初始化参数;所述BIOS固件中包括与处理单元的软硬件配置信息匹配的多组初始化参数;主板初始化模块403用于基于各处理单元的初始化参数同时对所述主处理单元和各从处理器进行初始化,在所述主处理单元初始化完成的情况下,响应于所述主处理器的控制指令对各从处理单元中的第二外围器件进行初始化,能够避免同一台设备中维护多套BIOS固件代码的情形,进而避免多个处理器基于各自对应的BIOS固件代码进行初始化导致同步错误的问题。同时也能避免BIOS固件的频繁更新导致同步错误的问题,最大限度保证了主板性能,降低了计算机设备的故障率。
基于上述实施例,所述CPLD的寄存器中包括用于存储主板中不同处理单元的软硬件配置指示信息的多个存储区域,每个存储区域中包括用于存储处理单元中各软硬件模块的配置指示信息的多个地址段,所述软硬件配置信息确定模块401具体用于执行以下步骤:
基于不同处理单元的软硬件配置指示信息与存储区域的对应关系,确定目标处理单元对应的目标存储区域;
基于不同模块的配置指示信息与地址段的对应关系,从所述目标存储区域的目标地址段中读取目标处理单元中各软硬件模块的配置指示信息;
基于所述目标处理单元中各软硬件模块的配置指示信息,生成所述目标处理单元的软硬件配置信息表。
基于上述任一实施例,所述基于BIOS固件和各处理单元的软硬件配置信息分别确定各处理单元的初始化参数,具体包括:
基于处理单元的软硬件配置信息与BIOS固件中的多组初始化参数的对应关系,确定目标处理单元对应的目标初始化参数。
基于上述任一实施例,所述各处理单元的软硬件配置指示信息是在主板设计完成时预先设置并存储于所述CPLD的寄存器中的,相应的,所述BIOS固件是基于处理器的功能组合预先生成并在主板设计完成时存储于主板中的。
基于上述任一实施例,所述装置还包括配置指示信息校验模块,用于在将各处理单元的软硬件配置指示信息存储于所述CPLD的寄存器中之后,对所述CPLD的寄存器中的各处理单元的软硬件配置指示信息进行正确性校验,若校验不通过,则对存在错误的软硬件配置指示信息进行修正,直至校验通过。
基于上述任一实施例,所述对所述CPLD的寄存器中的各处理单元的软硬件配置指示信息进行正确性校验,具体包括:
读取所述CPLD的寄存器中的各处理单元的软硬件配置指示信息,并基于各处理单元的软硬件配置指示信息生成对应的软硬件配置信息表;
判断所述软硬件配置信息表中的配置信息是否与主板的设计指标匹配,若匹配,则校验通过;若不匹配,则校验不通过。
基于上述任一实施例,所述各处理单元的初始化参数可通过所述BIOS固件的应用程序接口API获取。
图6示例了一种电子设备的实体结构示意图,如图6所示,该电子设备可以包括:处理器(processor)501、通信接口(Communications Interface)502、存储器(memory)503和通信总线504,其中,处理器501,通信接口502,存储器503通过通信总线504完成相互间的通信。处理器501可以调用存储器503中的逻辑指令,以执行上述各方法所提供的多处理器主板的初始化方法,所述多处理器主板包括一个复杂可编程逻辑器件CPLD、一个主处理单元和至少一个从处理单元,所述主处理单元包括主处理器和对应的第一外围器件,所述从处理单元包括从处理器和对应的第二外围器件,所述外围器件包括内存、硬盘和网口,所述主处理器和所述从处理器型号相同,所述方法包括:在主板上电启动的情况下,从CPLD的寄存器中获取各处理单元的软硬件配置指示信息,并基于各处理单元的软硬件配置指示信息确定各处理单元的软硬件配置信息;基于基本输入输出系统BIOS固件和各处理单元的软硬件配置信息分别确定各处理单元的初始化参数;所述BIOS固件中包括与处理单元的软硬件配置信息匹配的多组初始化参数;基于各处理单元的初始化参数同时对所述主处理单元和各从处理器进行初始化,在所述主处理单元初始化完成的情况下,响应于所述主处理器的控制指令对各从处理单元中的第二外围器件进行初始化。
此外,上述的存储器503中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本申请还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的多处理器主板的初始化方法,所述多处理器主板包括一个复杂可编程逻辑器件CPLD、一个主处理单元和至少一个从处理单元,所述主处理单元包括主处理器和对应的第一外围器件,所述从处理单元包括从处理器和对应的第二外围器件,所述外围器件包括内存、硬盘和网口,所述主处理器和所述从处理器型号相同,所述方法包括:在主板上电启动的情况下,从CPLD的寄存器中获取各处理单元的软硬件配置指示信息,并基于各处理单元的软硬件配置指示信息确定各处理单元的软硬件配置信息;基于基本输入输出系统BIOS固件和各处理单元的软硬件配置信息分别确定各处理单元的初始化参数;所述BIOS固件中包括与处理单元的软硬件配置信息匹配的多组初始化参数;基于各处理单元的初始化参数同时对所述主处理单元和各从处理器进行初始化,在所述主处理单元初始化完成的情况下,响应于所述主处理器的控制指令对各从处理单元中的第二外围器件进行初始化。
又一方面,本申请还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的多处理器主板的初始化方法,所述多处理器主板包括一个复杂可编程逻辑器件CPLD、一个主处理单元和至少一个从处理单元,所述主处理单元包括主处理器和对应的第一外围器件,所述从处理单元包括从处理器和对应的第二外围器件,所述外围器件包括内存、硬盘和网口,所述主处理器和所述从处理器型号相同,所述方法包括:在主板上电启动的情况下,从CPLD的寄存器中获取各处理单元的软硬件配置指示信息,并基于各处理单元的软硬件配置指示信息确定各处理单元的软硬件配置信息;基于基本输入输出系统BIOS固件和各处理单元的软硬件配置信息分别确定各处理单元的初始化参数;所述BIOS固件中包括与处理单元的软硬件配置信息匹配的多组初始化参数;基于各处理单元的初始化参数同时对所述主处理单元和各从处理器进行初始化,在所述主处理单元初始化完成的情况下,响应于所述主处理器的控制指令对各从处理单元中的第二外围器件进行初始化。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (10)

1.一种多处理器主板的初始化方法,其特征在于,所述多处理器主板包括一个复杂可编程逻辑器件CPLD、一个主处理单元和至少一个从处理单元,所述主处理单元包括主处理器和对应的第一外围器件,所述从处理单元包括从处理器和对应的第二外围器件,所述外围器件包括内存、硬盘和网口,所述主处理器和所述从处理器型号相同,所述方法包括:
在主板上电启动的情况下,从CPLD的寄存器中获取各处理单元的软硬件配置指示信息,并基于各处理单元的软硬件配置指示信息确定各处理单元的软硬件配置信息;
基于基本输入输出系统BIOS固件和各处理单元的软硬件配置信息分别确定各处理单元的初始化参数;所述BIOS固件中包括与处理单元的软硬件配置信息匹配的多组初始化参数;
基于各处理单元的初始化参数同时对所述主处理单元和各从处理器进行初始化,对于主处理单元,直接基于对应的初始化参数对主处理器和对应的第一外围器件进行初始化,对于从处理单元,仅对各从处理器进行初始化;若各从处理器的初始化进度比主处理单元的初始化进度快,所述从处理器完成初始化之后将等待主处理单元初始化;在所述主处理单元初始化完成的情况下,响应于所述主处理器的控制指令对各从处理单元中的第二外围器件进行初始化。
2.根据权利要求1所述的多处理器主板的初始化方法,其特征在于,所述CPLD的寄存器中包括用于存储主板中不同处理单元的软硬件配置指示信息的多个存储区域,每个存储区域中包括用于存储处理单元中各软硬件模块的配置指示信息的多个地址段,相应的,所述从CPLD的寄存器中获取各处理单元的软硬件配置指示信息,并基于各处理单元的软硬件配置指示信息确定各处理单元的软硬件配置信息,具体包括:
基于不同处理单元的软硬件配置指示信息与存储区域的对应关系,确定目标处理单元对应的目标存储区域;
基于不同模块的配置指示信息与地址段的对应关系,从所述目标存储区域的目标地址段中读取目标处理单元中各软硬件模块的配置指示信息;
基于所述目标处理单元中各软硬件模块的配置指示信息,生成所述目标处理单元的软硬件配置信息表。
3.根据权利要求2所述的多处理器主板的初始化方法,其特征在于,所述基于BIOS固件和各处理单元的软硬件配置信息分别确定各处理单元的初始化参数,具体包括:
基于处理单元的软硬件配置信息与BIOS固件中的多组初始化参数的对应关系,确定目标处理单元对应的目标初始化参数。
4.根据权利要求3所述的多处理器主板的初始化方法,其特征在于,所述各处理单元的软硬件配置指示信息是在主板设计完成时预先设置并存储于所述CPLD的寄存器中的,相应的,所述BIOS固件是基于处理器的功能组合预先生成并在主板设计完成时存储于主板中的。
5.根据权利要求4所述的多处理器主板的初始化方法,其特征在于,在将各处理单元的软硬件配置指示信息存储于所述CPLD的寄存器中之后,所述方法还包括:
对所述CPLD的寄存器中的各处理单元的软硬件配置指示信息进行正确性校验,若校验不通过,则对存在错误的软硬件配置指示信息进行修正,直至校验通过。
6.根据权利要求5所述的多处理器主板的初始化方法,其特征在于,所述对所述CPLD的寄存器中的各处理单元的软硬件配置指示信息进行正确性校验,具体包括:
读取所述CPLD的寄存器中的各处理单元的软硬件配置指示信息,并基于各处理单元的软硬件配置指示信息生成对应的软硬件配置信息表;
判断所述软硬件配置信息表中的配置信息是否与主板的设计指标匹配,若匹配,则校验通过;若不匹配,则校验不通过。
7.根据权利要求1所述的多处理器主板的初始化方法,其特征在于,所述各处理单元的初始化参数可通过所述BIOS固件的应用程序接口API获取。
8.一种多处理器主板的初始化装置,其特征在于,所述多处理器主板包括一个复杂可编程逻辑器件CPLD、一个主处理单元和至少一个从处理单元,所述主处理单元包括主处理器和对应的第一外围器件,所述从处理单元包括从处理器和对应的第二外围器件,所述外围器件包括内存、硬盘和网口,所述主处理器和所述从处理器型号相同,所述装置包括:
软硬件配置信息确定模块,用于在主板上电启动的情况下,从CPLD的寄存器中获取各处理单元的软硬件配置指示信息,并基于各处理单元的软硬件配置指示信息确定各处理单元的软硬件配置信息;
初始化参数确定模块,用于基于基本输入输出系统BIOS固件和各处理单元的软硬件配置信息分别确定各处理单元的初始化参数;所述BIOS固件中包括与处理单元的软硬件配置信息匹配的多组初始化参数;
主板初始化模块,用于基于各处理单元的初始化参数同时对所述主处理单元和各从处理器进行初始化,对于主处理单元,直接基于对应的初始化参数对主处理器和对应的第一外围器件进行初始化,对于从处理单元,仅对各从处理器进行初始化;若各从处理器的初始化进度比主处理单元的初始化进度快,所述从处理器完成初始化之后将等待主处理单元初始化;在所述主处理单元初始化完成的情况下,响应于所述主处理器的控制指令对各从处理单元中的第二外围器件进行初始化。
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述多处理器主板的初始化方法的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述多处理器主板的初始化方法的步骤。
CN202211219671.8A 2022-10-08 2022-10-08 多处理器主板的初始化方法和装置 Active CN115291957B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211219671.8A CN115291957B (zh) 2022-10-08 2022-10-08 多处理器主板的初始化方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211219671.8A CN115291957B (zh) 2022-10-08 2022-10-08 多处理器主板的初始化方法和装置

Publications (2)

Publication Number Publication Date
CN115291957A CN115291957A (zh) 2022-11-04
CN115291957B true CN115291957B (zh) 2022-12-30

Family

ID=83834638

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211219671.8A Active CN115291957B (zh) 2022-10-08 2022-10-08 多处理器主板的初始化方法和装置

Country Status (1)

Country Link
CN (1) CN115291957B (zh)

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7984446B1 (en) * 2003-09-18 2011-07-19 Nvidia Corporation Method and system for multitasking BIOS initialization tasks
CN1916849A (zh) * 2006-09-04 2007-02-21 华为技术有限公司 一种多处理器系统的初始化方法和多处理器系统
CN101609406B (zh) * 2009-07-17 2012-07-04 浪潮电子信息产业股份有限公司 一种多bios映像并行初始化的方法
CN102880477B (zh) * 2011-07-14 2016-08-17 联想(北京)有限公司 一种实现计算机启动的方法和计算机
CN103136019A (zh) * 2011-11-29 2013-06-05 国际商业机器公司 用于加载配置信息的方法和装置
TWI479420B (zh) * 2013-01-16 2015-04-01 Wistron Corp 電腦裝置及其開機方法
CN103488498B (zh) * 2013-09-03 2017-02-22 华为技术有限公司 一种计算机启动方法及计算机
BR112016026264B1 (pt) * 2014-05-09 2022-01-18 Huawei Technologies Co., Ltd Método implementado por computador para otimizar um tempo de inicialização de um sistema de computador e sistema de computador
CN106155706B (zh) * 2015-03-22 2021-10-22 联想(北京)有限公司 保存电子设备启动信息的系统及方法
CN106990958B (zh) * 2017-03-17 2019-12-24 联想(北京)有限公司 一种扩展组件、电子设备及启动方法
CN113656076A (zh) * 2021-07-16 2021-11-16 新华三技术有限公司合肥分公司 一种基于硬件复用通道的bios启动方法及装置
CN114035842B (zh) * 2022-01-07 2022-04-08 飞腾信息技术有限公司 固件配置方法、计算系统配置方法、计算装置以及设备

Also Published As

Publication number Publication date
CN115291957A (zh) 2022-11-04

Similar Documents

Publication Publication Date Title
WO2016206514A1 (zh) 启动处理方法及装置
US20180088932A1 (en) Multi-platform installer
CN107111595B (zh) 用于检测早期引导错误的方法、设备及系统
US20180101458A1 (en) System on chip integrity verification method and system
CN116932010B (zh) 系统固件升级方法、装置及服务器
CN113504932B (zh) 一种固件数据更新方法和装置
WO2022156512A1 (zh) 一种固件更新方法、装置、设备及存储介质
WO2024139423A1 (zh) 故障检测方法及计算机设备
CN117687695A (zh) 信息处理方法、装置、电子设备及存储介质
US6751569B2 (en) System and method for receiving information from a test apparatus
CN115291957B (zh) 多处理器主板的初始化方法和装置
US11061689B2 (en) Synchronization method for performing bi-directional data synchronization for bios
CN109582334B (zh) 可编程逻辑器件的升级方法及装置
CN116841629A (zh) 一种网卡功能配置方法、装置及其介质
US20240289294A1 (en) Pcie device positioning method and apparatus, and related device
US20020104040A1 (en) System and method for initiating a manufacturing mode
US20220188221A1 (en) Regression testing method and regression testing apparatus
CN113900934B (zh) 多镜像混合刷新测试方法、系统、终端及存储介质
CN113672260B (zh) 一种处理器cpu初始化方法
US11354109B1 (en) Firmware updates using updated firmware files in a dedicated firmware volume
CN113553110A (zh) 一种服务器的硬件基线自动化修正方法、装置及系统
TWI554876B (zh) 節點置換處理方法與使用其之伺服器系統
CN115016987B (zh) 一种操作系统检查方法、计算设备及存储介质
CN111177055A (zh) Pcie槽的配置设置方法、系统、介质及装置
CN110908725A (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