CN105867945A - 一种bios启动方法及装置 - Google Patents
一种bios启动方法及装置 Download PDFInfo
- Publication number
- CN105867945A CN105867945A CN201610248616.XA CN201610248616A CN105867945A CN 105867945 A CN105867945 A CN 105867945A CN 201610248616 A CN201610248616 A CN 201610248616A CN 105867945 A CN105867945 A CN 105867945A
- Authority
- CN
- China
- Prior art keywords
- node
- address
- space
- access
- mmcfg
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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/177—Initialisation or configuration control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4403—Processor initialisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4405—Initialisation of multiprocessor systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
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)
- Bus Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实施例提供一种BIOS启动方法及装置,涉及计算机领域,实现在大规模的CC‑NUMA***包含的CPU数量扩展的前提下,BIOS启动不影响MMIO空间及可用内存空间在***全局访问地址中第一地址以下的占用容量。具体方案包括:通过在第一访问模式下,本节点在本节点的本地访问地址为第一地址以下的空间中分配本地MMCFG完成内存初始化,在进行***的内存统一编址时,将部分或全部的本节点的MMCFG空间在***的全局访问地址中的地址的位置进行搬移,由原来第一地址以下的空间搬移到第一地址以上且能够在第二访问模式下被访问到的空间。本发明用于BIOS启动。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种基本输入/输出***(BasicInput/Output System,简称BIOS)启动方法及装置。
背景技术
随着科技的发展,高性能服务器越来越多的应用到科学研究和企业经营活动中。其中,x86大规模的缓存一致性非均匀访存架构(CacheCoherence Non-Uniform Memory Access,简称CC-NUMA)***凭借高性能,高扩展性和易于编程的环境等特点,得到了广泛应用。
大规模的CC-NUMA***一般由多个单独的服务器主板(节点板)通过Cache Coherence互联网络进行互联,组成只运行一个操作***的一台大型服务器。一般情况下,大规模x86的CC-NUMA多路***通常先基于2路或者4路的节点板进行各自BIOS的启动,在各自BIOS启动过程中内存统一编址配置全局***的地址空间,后续再在BIOS流程的某一阶段,将各个节点纳入一个BIOS流程中进行管理和启动,BIOS成完整的多路***提供给一个操作***。
在早期的BIOS启动过程中,由于CPU运行在32比特(bit)模式下,只能寻址到4千兆字节(KilomegaByte,简称GB)的地址空间,又由于在内存初始化时,每个节点板都需要访问内存映射配置(Memory Mappedconfig,简称MMCFG)空间,就需要将MMCFG空间的空间编址在4GB以下的位置。
但是,随着大规模的CC-NUMA***包含的中央处理器(CentralProcessing Unit,简称CPU)数量的增加,每个CPU占用的MMCFG空间大小固定,4GB以下的位置的MMCFG空间随之增加,由于4GB以下的位置地址容量固定且有限,一方面导致内存映射输入输出(MemoryMapped Input/Output,简称MMIO)空间随之减少,较少的MMIO空间限制了总线和接口标准(Peripheral Component Interface Express,简称PCIE)设备的数量、功能,造成大规模的CC-NUMA***产品的PCIE设备兼容性不高。另一方面导致4GB以下可用内存的地址空间随之减少,过低的可用内存可能会引起操作***无法启动的兼容性问题。
发明内容
本发明实施例提供一种BIOS启动方法及装置,实现在大规模的CC-NUMA***包含的CPU数量扩展的前提下,BIOS启动不影响MMIO空间及可用内存空间在低位地址中的可用空间,以提高大规模的CC-NUMA***PCIE设备及操作***的兼容性。
为达到上述目的,本发明采用如下技术方案:
第一方面,提供一种BIOS启动方法,应用于本节点,所述本节点为大规模CC-NUMA***中的主节点或者附属节点,所述CC-NUMA***包括一个主节点及至少一个附属节点,所述方法包括:
进入第一访问模式,其中,在所述第一访问模式下,所述本节点访问的最大地址为第一地址,在所述第一访问模式下执行如下步骤:
在所述本节点的本地访问地址为所述第一地址以下的空间中,分配所述本节点的本地内存映射配置MMCFG空间;
通过访问所述本节点的本地MMCFG空间进行内存初始化;
在完成内存初始化后,进行所述***的内存统一编址分配所述本节点的MMCFG空间在所述***的全局访问地址中的地址;其中,所述本节点的MMCFG空间全部或部分在所述全局访问地址为第一地址以上且能够在第二访问模式下被访问到的空间;
在所述***的全局访问地址中为所述本节点分配内存映射输入输出MMIO空间;
与所述***中的至少一个其他节点进行交互,完成所述***的节点合并,构成完整***;
进入所述第二访问模式,其中,在所述第二访问模式下,所述本节点所能访问到的地址空间大于在所述第一访问模式下所述本节点所能访问到的地址空间。
其中,在大规模CC-NUMA***中包括多个节点,多个节点中的一个节点被选择为主节点,其余节点则为附属节点。
在实际应用中,附属节点也可以称之为从节点或者非主节点,在本发明中为可替换的同一概念。
需要说明的是,对于大规模CC-NUMA***中确定主节点及附属节点的过程,本发明不再进行赘述。
其中,MMCFG空间编址在第一地址以下的存储空间称之为MMCFGL,编址在第一地址以上的存储空间称之为MMCFGH。
具体的,分配本节点的本地MMCFG空间及MMCFG空间在***的全局访问地址中的地址,都可以通过配置寄存器来实现。
其中,本节点可以通过配置MMCFG_Rule(内存映射配置空间规则)寄存器,在本节点的本地访问地址为第一地址以下的空间中,分配一部分空间作为一个节点的本地MMCFG空间,可以通过配置MMCFG_Target_LIST(内存映射配置空间目标清单)寄存器设置通过MMCFG_Rule寄存器配置的第一地址以下的空间中的本地MMCFG空间为本节点的本地MMCFG空间。
需要说明的是,配置MMCFG_Target_LIST寄存器,可以用于设置分配的本地MMCFG空间对应哪个节点,也就相当于为哪个节点分配的本地MMCFG空间。
其中,本节点可以通过配置DRAM Rule(内存编址规则)寄存器,进行***的内存统一编址,分配一部分空间作为一个节点的MMCFG空间在***的全局访问地址中的地址,通过配置INTERLEAVE_LIST(内存交织目标清单)寄存器设置通过DRAM Rule寄存器配置的在***的全局访问地址中的地址为本节点的MMCFG空间在***的全局访问地址中的地址。
其中,大规模CC-NUMA***包括的每个节点中,均包括至少一个中央处理器(Central Processing Unit,简称CPU),在一个节点的MMCFG空间(包括本地MMCFG空间或MMCFG空间在***的全局访问地址中的地址)中,每个CPU的MMCFG空间依次连接且不重复,一个CPU的MMCFG空间的首地址为另一个CPU的MMCFG空间的尾地址。
具体的,在根据本节点***设备的需求,为本节点分配MMIO时,可以在***的全局访问地址中的地址中任意位置,分配尽量大的空间以满足本节点***设备的需求。
这样一来,在第一访问模式下,本节点通过在本节点的本地访问地址为第一地址以下的空间中分配本地MMCFG完成内存初始化后,在进行***的内存统一编址时,将部分或全部的本节点的MMCFG空间在***的全局访问地址中的地址的位置进行搬移,由原来第一地址以下的空间搬移到第一地址以上且能够在第二访问模式下被访问到的空间,这样,在第二访问模式下,保证CPU仍然能够访问MMCFG空间在***的全局访问地址中的地址。同时,位于第一地址以下的、通过搬移节省出来的空间,就可以留给一些只能在这些空间使用的设备(例如,留出更多的MMIO空间给只能在4GB以下访问的PCIe卡使用,留出更多的可用内存空间供***使用),即使CC-NUMA***包含的CPU数量不断扩展,MMCFG空间在***的全局访问地址中的地址可以不占用第一地址以下的空间,从而能够支持更多的PCIE设备,因此,实现了在大规模的CC-NUMA***包含的CPU数量扩展的前提下,BIOS启动不影响MMIO空间及可用内存空间在低位地址中的可用空间,提高了大规模的CC-NUMA***PCIE设备及操作***的兼容性。
结合第一方面,在第一方面的第一种可能的实现方式中,
所述第一地址可以为4GB。
其中,第一访问模式可以为x86***中的32位模式,在该模式下,能够访问的最大地址即为4GB。
由此可知,在x86***中的32位模式下,如上述第一方面一样,通过上述第一种可能的实现方式,可以留出更多4GB以下的空间供节点的外设(如PCIE卡)使用,提高了大规模的CC-NUMA***对外设的兼容性。
结合第一方面或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,
在进行***的内存统一编址时,需要将本节点的MMCFG空间在***的全局访问地址中的地址分配在在全局访问地址为第一地址以上且能够在第二访问模式下被访问到的空间,而当前在第一访问模式,因此,此时本节点无法访问本节点的MMCFG空间,主节点可以将其本地MMCFG保留,***中的所有节点通过访问主节点的MMCFG空间,进行***的内存统一编址,分别分配每个节点的MMCFG空间在***的全局访问地址中的地址。
进一步的,若所述本节点为主节点,在通过访问本节点的本地MMCFG空间进行内存初始化后,所述方法还可以包括:
保留主节点的本地MMCFG空间,用于***内的每个节点进行***的内存统一编址分配每个节点的MMCFG空间在***的全局访问地址中的地址。
由此可知,保留的第一地址以下的主节点的本地MMCFG空间,除了可以用于***内的每个节点进行***的内存统一编址分配每个节点的MMCFG空间在***的全局访问地址中的地址,还可以当有一些驱动程序要在第一访问模式下访问一些硬件设备配置寄存器,只能访问第一地址以下的空间时使用,用于提高访问MMCFG时的***兼容性。
结合第一方面或第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,
在进入第二访问模式之前,所述方法还可以包括:
在本节点的本地访问地址为第一地址以下的空间中,配置页表,所述页表指向在第二访问模式中本节点所能访问到且在第一访问模式下本节点不能访问到的地址空间;
在进入所述第二访问模式后,所述方法还可以包括:
按照页表访问本节点的MMCFG空间在***的全局访问地址中的地址。
具体的,在进入至第二访问模式后,才支持访问分配第一地址以上的MMCFG空间,要实现访问第一地址以上的空间,可以在第一地址以下的存储空间中配置页表,该页表指向在第二访问模式中本节点所能访问到且在第一访问模式下本节点不能访问到的地址空间,节点通过访问配置的页表,即可访问到分配的第一地址以上的MMCFG空间。
其中,对于页表的具体内容以及页表在第一地址以下存储空间中的具***置,可以根据实际需求设定,本发明对此不进行具体限定。凡是在大规模CC-NUMA***中,通过页表访问本节点的MMCFG空间在***的全局访问地址中第一地址以上的地址空间,都属于本发明的保护范围。
这样一来,在上述第一方面的第三种可能的实现方式中,通过配置页表以访问上述第一方面或任一种可能的实现方式中分配的第一地址以上的地址,可以更好的实现上述第一方面或任一种可能的实现方式的效果。
结合第一方面或第一方面的第一种可能的实现方式至第一方面的第三种可能的实现方式中任一项,在第一方面的第四种可能的实现方式中,
CC-NUMA***中每个节点的MMCFG空间在***的全局访问地址中的地址相互不重叠。
由于CC-NUMA***中每个节点的MMCFG空间在***的全局访问地址中的地址是各个节点访问外设时需要访问的地址,当相互不重叠时,可以在访问外设时各个节点相互不干扰,提高了***性能。
结合第一方面或第一方面的第一种可能的实现方式至第一方面的第四种可能的实现方式中任一项,在第一方面的第五种可能的实现方式中,
CC-NUMA***中每个节点的MMCFG空间在***的全局访问地址中的地址连续;其中,一个节点的MMCFG空间在所述***的全局访问地址中的地址的首地址是另一个节点的MMCFG空间在所述***的全局访问地址中的地址的尾地址。
当CC-NUMA***中每个节点的MMCFG空间在***的全局访问地址中的地址相互连续时,各个节点可以访问到其他节点的MMCFG空间,进行节点的相互连通,而且访问起来更有规律,即便于统一访问。
结合第一方面或第一方面的第一种可能的实现方式至第一方面的第五种可能的实现方式中任一项,在第一方面的第六种可能的实现方式中,
若本节点为主节点,与所述***中的至少一个其他节点进行交互,完成***的节点合并,构成完整***,可以通过下述过程实现:
向CC-NUMA***中每一个附属节点发送通知消息,通知消息用于指示附属节点向主节点发送自身的***信息;
分别接收每一个附属节点发送的各自的***消息,完成***的节点合并,构成完整***。
第一方面的第六种可能的实现方式提供了主节点完成***的节点合并,构成完整***的具体方法,以达到上述各种可能的实现方式的效果。
结合第一方面或第一方面的第一种可能的实现方式至第一方面的第六种可能的实现方式中任一项,在第一方面的第七种可能的实现方式中,
若本节点为附属节点,与所述***中的至少一个其他节点进行交互,完成***的节点合并,构成完整***,可以通过下述过程实现:
终止自身的BIOS流程;
接收主节点发送的用于指示附属节点向主节点发送自身***信息的通知消息;
向主节点发送自身的***消息,***消息用于主节点完成***的节点合并,构成完整***。
第一方面的第七种可能的实现方式提供了主节点完成***的节点合并,构成完整***的具体方法,以达到上述各种可能的实现方式的效果。
结合第一方面或第一方面的第一种可能的实现方式至第一方面的第七种可能的实现方式中任一项,在第一方面的第八种可能的实现方式中,
所述与所述***中的至少一个其他节点进行交互,完成所述***的节点合并,构成完整***,可以通过下述过程实现:
在最后一次访问CPU寄存器之后,与***中的至少一个其他节点进行交互,完成所述***的节点合并,构成完整***。
这样一来,通过第一方面的第八种可能的实现方式,本节点在最后一次访问CPU寄存器之后,进行BIOS合并,构成完整***,使得各个节点内存初始化均相互独立,也就是说各个节点并行的进行内存初始化,减少了启动时间。
第二方面,提供一种BIOS启动装置,所述启动装置包括于本节点,所述本节点为大规模CC-NUMA***中的主节点或者附属节中,所述CC-NUMA***包括一个主节点及至少一个附属节点,所述启动装置包括:
模式单元,用于控制所述***进入第一访问模式,其中,在所述第一访问模式下,所述本节点访问的最大地址为第一地址;
分配单元,用于在所述第一访问模式下,在所述本节点的本地访问地址为所述第一地址以下的空间中,分配所述本节点的本地内存映射配置MMCFG空间;
初始化单元,用于通过访问所述分配单元分配的所述本节点的本地MMCFG空间进行内存初始化;
所述分配单元还用于,在所述初始化单元完成内存初始化后,进行所述***的内存统一编址分配所述本节点的MMCFG空间在所述***的全局访问地址中的地址;其中,所述本节点的MMCFG空间全部或部分在所述全局访问地址为第一地址以上且能够在第二访问模式下被访问到的空间;
所述分配单元还用于,在所述***的全局访问地址中为所述本节点分配内存映射输入输出MMIO空间;
合并单元,用于与所述***中的至少一个其他节点进行交互,完成所述***的节点合并,构成完整***;
所述模式单元还用于,控制所述***从所述第一访问模式进入第二访问模式,其中,在所述第二访问模式下,所述本节点所能访问到的地址空间大于在所述第一访问模式下所述本节点所能访问到的地址空间。
结合第二方面,在第二方面的第一种可能的实现方式中,
所述第一地址为4GB。
结合第二方面或第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,
所述分配单元具体用于:
通过访问所述主节点的本地MMCFG空间,进行所述***的内存统一编址分配所述本节点的MMCFG空间在所述***的全局访问地址中的地址。
结合第二方面或第二方面的第一种可能的实现方式或第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,
所述装置还包括:
配置单元,用于在所述模式单元控制所述***从所述第一访问模式进入所述第二访问模式之前,在所述本节点的本地访问地址为所述第一地址以下的空间中,配置页表,所述页表指向在所述第二访问模式中所述本节点所能访问到且在所述第一访问模式下所述本节点不能访问到的地址空间;
访问单元,用于在所述模式单元控制所述***从所述第一访问模式进入所述第二访问模式后,按照所述配置单元配置的页表访问所述本节点的MMCFG空间在所述***的全局访问地址中的地址。
结合第二方面或第二方面的第一种可能的实现方式至第二方面的第三种可能的实现方式中任一项,在第二方面的第四种可能的实现方式中,
所述CC-NUMA***中每个节点的MMCFG空间在所述***的全局访问地址中的地址相互不重叠。
结合第二方面或第二方面的第一种可能的实现方式至第二方面的第四种可能的实现方式中任一项,在第二方面的第五种可能的实现方式中,
所述CC-NUMA***中每个节点的MMCFG空间在所述***的全局访问地址中的地址连续;其中,一个节点的MMCFG空间在所述***的全局访问地址中的地址的首地址是另一个节点的MMCFG空间在所述***的全局访问地址中的地址的尾地址。
结合第二方面或第二方面的第一种可能的实现方式至第二方面的第五种可能的实现方式中任一项,在第二方面的第六种可能的实现方式中,
若所述本节点为所述主节点,所述合并单元具体用于:
向所述CC-NUMA***中每一个附属节点发送通知消息,所述通知消息用于指示附属节点向所述主节点发送自身的***信息;
分别接收所述每一个附属节点发送的各自的***消息,完成所述***的节点合并,构成完整***。
结合第二方面或第二方面的第一种可能的实现方式至第二方面的第六种可能的实现方式中任一项,在第二方面的第七种可能的实现方式中,
若所述本节点为所述附属节点,所述合并单元具体用于:
终止自身的BIOS流程;
接收所述主节点发送的用于指示附属节点向所述主节点发送自身***信息的通知消息;
向所述主节点发送自身的***消息,所述***消息用于所述主节点完成所述***的节点合并,构成完整***。
结合第二方面或第二方面的第一种可能的实现方式至第二方面的第七种可能的实现方式中任一项,在第二方面的第八种可能的实现方式中,
所述合并单元具体用于:
在最后一次访问中央处理器CPU寄存器之后,与所述***中的至少一个其他节点进行交互,完成所述***的节点合并,构成完整***。
第二方面或者第二方面任一种可能的实现方式提供的装置,用于实现第一方面或第一方面任一种可能的实现方式中的BIOS启动方法,可以达到相同的技术效果。
第三方面,提供一种BIOS启动装置,所述启动装置包括于本节点,所述本节点为大规模CC-NUMA***中的主节点或者附属节中,所述CC-NUMA***包括一个主节点及至少一个附属节点,所述启动装置包括:
处理器,用于控制所述***进入第一访问模式,其中,在所述第一访问模式下,所述本节点访问的最大地址为第一地址;所述处理器还用于在所述第一访问模式下执行如下步骤:
在所述本节点的本地访问地址为所述第一地址以下的空间中,分配所述本节点的本地内存映射配置MMCFG空间;
通过访问所述本节点的本地MMCFG空间进行内存初始化;
在完成内存初始化后,进行所述***的内存统一编址分配所述本节点的MMCFG空间在所述***的全局访问地址中的地址;其中,所述本节点的MMCFG空间全部或部分在所述全局访问地址为第一地址以上且能够在第二访问模式下被访问到的空间;
在所述***的全局访问地址中为所述本节点分配内存映射输入输出MMIO空间;
与所述***中的至少一个其他节点进行交互,完成所述***的节点合并,构成完整***;
控制所述***从所述第一访问模式进入第二访问模式,其中,在所述第二访问模式下,所述本节点所能访问到的地址空间大于在所述第一访问模式下所述本节点所能访问到的地址空间。
结合第三方面,在第三方面的第一种可能的实现方式中,
所述第一地址为4GB。
结合第三方面或第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,
所述处理器具体用于:
通过访问所述主节点的本地MMCFG空间,进行所述***的内存统一编址分配所述本节点的MMCFG空间在所述***的全局访问地址中的地址。
结合第三方面或第三方面的第一种可能的实现方式或第三方面的第二种可能的实现方式,在第三方面的第三种可能的实现方式中,所述处理器还用于:
在从所述第一访问模式进入所述第二访问模式之前,在所述本节点的本地访问地址为所述第一地址以下的空间中,配置页表,所述页表指向在所述第二访问模式中所述本节点所能访问到且在所述第一访问模式下所述本节点不能访问到的地址空间;
在从所述第一访问模式进入所述第二访问模式后,按照所述配置单元配置的页表访问所述本节点的MMCFG空间在所述***的全局访问地址中的地址。
结合第三方面或第三方面的第一种可能的实现方式至第三方面的第三种可能的实现方式中任一项,在第三方面的第四种可能的实现方式中,
所述CC-NUMA***中每个节点的MMCFG空间在所述***的全局访问地址中的地址相互不重叠。
结合第三方面或第三方面的第一种可能的实现方式至第三方面的第四种可能的实现方式中任一项,在第三方面的第五种可能的实现方式中,
所述CC-NUMA***中每个节点的MMCFG空间在所述***的全局访问地址中的地址连续;其中,一个节点的MMCFG空间在所述***的全局访问地址中的地址的首地址是另一个节点的MMCFG空间在所述***的全局访问地址中的地址的尾地址。
结合第三方面或第三方面的第一种可能的实现方式至第三方面的第五种可能的实现方式中任一项,在第三方面的第六种可能的实现方式中,
若所述本节点为所述主节点,所述处理器具体用于:
向所述CC-NUMA***中每一个附属节点发送通知消息,所述通知消息用于指示附属节点向所述主节点发送自身的***信息;
分别接收所述每一个附属节点发送的各自的***消息,完成所述***的节点合并,构成完整***。
结合第三方面或第三方面的第一种可能的实现方式至第三方面的第六种可能的实现方式中任一项,在第三方面的第七种可能的实现方式中,
若所述本节点为所述附属节点,所述处理器具体用于:
终止自身的BIOS流程;
接收所述主节点发送的用于指示附属节点向所述主节点发送自身***信息的通知消息;
向所述主节点发送自身的***消息,所述***消息用于所述主节点完成所述***的节点合并,构成完整***。
结合第三方面或第三方面的第一种可能的实现方式至第三方面的第七种可能的实现方式中任一项,在第三方面的第八种可能的实现方式中,
所述处理器具体用于:
在最后一次访问中央处理器CPU寄存器之后,与所述***中的至少一个其他节点进行交互,完成所述***的节点合并,构成完整***。
上述第二方面或第三方面或上述任一种可能的实现方式提供的BIOS启动装置,用于实现第一方面或第一方面任一种可能的实现方式中的BIOS启动方法,可以达到相同的技术效果。
本发明实施例提供的BIOS启动方法及装置,应用于大规模CC-NUMA***中的主节点或者附属节点,通过在第一访问模式下,本节点在本节点的本地访问地址为第一地址以下的空间中分配本地MMCFG完成内存初始化,在进行***的内存统一编址时,将部分或全部的本节点的MMCFG空间在***的全局访问地址中的地址的位置进行搬移,由原来第一地址以下的空间搬移到第一地址以上且能够在第二访问模式下被访问到的空间,这样,在第二访问模式下,保证CPU仍然能够访问MMCFG空间在***的全局访问地址中的地址。同时,位于第一地址以下的、通过搬移节省出来的空间,就可以留给一些只能在这些空间使用的设备(例如,留出更多的MMIO空间给只能在4GB以下访问的PCIE卡使用,留出更多的可用内存空间供***使用),即使CC-NUMA***包含的CPU数量不断扩展,MMCFG空间在***的全局访问地址中的地址可以不占用第一地址以下的空间,从而能够支持更多的PCIE设备,因此,实现了在大规模的CC-NUMA***包含的CPU数量扩展的前提下,BIOS启动不影响MMIO空间及可用内存空间在低位地址中的可用空间,提高了大规模的CC-NUMA***PCIE设备及操作***的兼容性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为一种大规模CC-NUMA***架构图;
图2为现有技术提供的BIOS启动阶段编址方案示意图;
图3为本发明实施例提供的一种BIOS启动装置结构图;
图4为本发明实施例提供的一种BIOS启动方法流程示意图;
图5为本发明实施例提供的一种MMCFG空间编址示意图;
图6为本发明实施例提供的另一种MMCFG空间编址示意图;
图7为本发明实施例提供的一种MMIO空间编址示意图;
图8为本发明实施例提供的一种BIOS启动阶段编址方案示意图;
图9为本发明实施例提供的另一种BIOS启动装置结构图;
图10为本发明实施例提供的再一种BIOS启动装置结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
大规模的CC-NUMA***一般由多个单独的服务器主板通过缓存一致性(Cache Coherence)互联网络进行互联,组成只运行一个操作***的一台大型服务器。图1示出的是大规模CC-NUMA***的架构,包括节点1至节点n,每个节点由处理器,内存,***设备和其他模块组成,节点之间通过高速互联来组成一个完整的***。
其中,每个节点可以包括一个或多个处理器(如x86CPU),每个CPU对应一个或多个物理内存,物理内存作为处理器的设备之一跟其他设备(如寄存器、***设备)一起进行统一编址,后续各个CPU通过编址后的地址来访问各自对应的物理内存。如何进行统一编址及访问都为现有技术,本实施例不进行具体介绍。需要说明的是,在图1中,为了方便示意,并没有画出每个CPU对应的一个或多个物理内存,而只用一个内存模块来简单表示节点中的各个物理内存。
其中,节点中的处理器通过与***设备(例如:现阶段广泛使用的PCIE设备)连接,实现大规模CC-NUMA***的多种应用。处理器可以支持的PCIE设备的数量,取决于该处理器的MMIO空间的大小。
PCIE设备都有一个配置空间,保存了设备的基本特性信息,通过对配置空间的配置,完成PCIE设备存储空间的地址分配等功能设置工作。把PCIE设备的配置空间映射至内存的物理地址空间即MMCFG空间。在需要通过处理器访问PCIE设备时,通过访问MMCFG空间,即可实现对PCIE设备的访问。
大规模x86的CC-NUMA***通常包括多个节点板,每个节点板通常可以包括2路或4路(一个CPU称为一路),***总共通常设计成16路、32路或者64路。在BIOS启动阶段,每个节点板先进行各自BIOS启动,后续各路节点板进行节点合并,构成完整的多路***提供给一个操作***。CPU在BIOS启动早期,执行安全认证(Security,简称SEC)阶段及在可扩展固件接口(Extensible Firmware Interface,简称EFI)前的初始化(Pre-EFI Initialization,简称PEI)阶段的绝大部分时间(除末期)里,运行在32位模式下,只能寻址到内存中4GB(2^32)以内的物理地址空间;x86CPU已经将CPU绝大多数配置寄存器当做PCI标准寄存器(即x86CPU将集成的内存控制器以PCIE设备的方式进行管理,***中的软件可以像访问PCIE标准寄存器的方式一样访问内存控制器的寄存器),此阶段需执行快速互联接口(Quick Path Interconnect,简称QPI)初始化程序以及进行内存初始化,这些操作都需要访问MMCFG空间,又由于此时***运行在32位模式下,就需要将MMCFG空间的空间配置在4GB以下的位置,使得CPU能够访问到。需要说明的是,本实施例及以下各实施例中,“访问”某个空间包括对某个空间的读以及写。“访问某个空间”也可以称为“访问某个地址空间”,或者“访问某个地址”,为了说明方便,本实施例及以及各实施例中并不严格区分这些表述。
以大规模CC-NUMA***为32路为例,假设该节点为4路(即包括4个CPU),则该节点启动时,每个节点需使用的MMCFG空间的大小为一个segment(分段),共需要8个segment;一个segment占256兆字节(mega bytes,简称MB),32路的MMCFG空间则需要2GB(8×256MB)。
那么,在4GB以下为各个节点分配256MB大小的MMCFG空间,共2GB大小,地址空间分配如下图2所示。
根据图2所示的地址空间的分配,4GB以下的存储空间被MMCFG占用2GB,再保证***功能所需之后,MMIO空间只有704MB(3GB+256MB~3GB+960MB)可供分配给32颗CPU使用;由于MMIO空间的分配粒度最小为16MB,704MB分配给32颗CPU使用,每个CPU只能分配16MB的MMIO空间。在这种情况下,对于需要MMIO空间超过8MB的部分PCIE设备,每个CPU最多能支持1个类似的PCIE设备,限制了产品的应用;若存在需要MMIO空间超过16MB的PCIE卡,CPU将不能支持,影响了PCIE设备的兼容性。随着x86大规模CC-NUMA***处理器数量的增加,占用的4GB以下的MMCFG空间随之增加,挤压了MMIO的空间和4G以下的可用内存的地址空间,限制了PCIE设备的使用。
本发明实施例提供的BIOS启动方法用于大规模CC-NUMA***中的一个节点的BIOS启动,该启动方法可以由BIOS启动装置来执行,该BIOS启动装置可以包括大规模CC-NUMA***中的一个节点的部分或全部处理器;其中,所述大规模CC-NUMA***中的节点可以为主节点或者附属节点。其中,主节点是指能够在后续节点合并步骤中进行统一控制管理的节点,除主节点外的其他节点称为附属节点。
本发明实施例中,BIOS启动装置位于CC-NUMA***中的本节点(即“本地节点”),本节点可以为CC-NUMA***中的主节点或者任意一个附属节点。BIOS启动装置可以包括本节点中的部分或全部处理器。如图3所示,本实施例中的BIOS启动装置包括处理器301、存储器302以及通信总线303。
处理器301可以是本节点中的一个或多个CPU,用于通过读取存储器的存储的程序代码执行相应的程序;
存储器302可以包括跟一个或多个CPU分别对应的物理内存及一些非易失性存储介质(如flash、磁盘等),用于存储程序代码以及程序运行过程中所产生的各种数据;
通信总线303用于完成处理器与存储器及其他设备(图3中未示出)之间的通信,通信总线可以是工业标准体系结构(Industry StandardArchitecture,简称ISA)总线、外部设备互连(Peripheral Component,简称PCI)总线或扩展工业标准体系结构(Extended Industry StandardArchitecture,简称EISA)总线等。该总线303可以分为地址总线、数据总线、控制总线等。为便于表示,图3中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
实施例一
参见图4,本发明实施例一种BIOS启动方法,由本节点执行,包括:
S401、进入第一访问模式,在第一访问模式下,本节点访问的最大地址为第一地址;在第一访问模式下执行如下S402至S407的步骤;
本实施例中,“访问模式”是指处理器(CPU)通过一定位数的总线进行寻址的方式,例如,现有技术通常通过32位或者64位总线进行寻址。本实施例中,第一访问模式所能寻址到的最大空间要小于后文所要介绍到的第二访问模式所能寻址到的最大空间。例如,本实施例中,第一访问模式为32位访问模式,即通过32位总线进行寻址,最大寻址空间(也即步骤S401中的“第一地址”)为4GB,相应地,第二访问模式可以是64位或者其他位数(比32位大)的访问模式。
S402、在本节点的本地访问地址为第一地址以下的空间中,分配本节点的本地MMCFG空间;
其中,本节点的本地MMCFG空间为连续的空间。由于本节点可以包括一个或多个CPU,当有多个CPU时,这些CPU所对应的本地MMCFG空间为连续的空间。
可选的,一个大规模CC-NUMA***中,每个节点在S402中分配置的本地MMCFG空间,地址可以相同,也可以不同;在实际应用中,可以根据实际需求确定,本发明对此不进行具体限定。
S403、通过访问本节点的本地MMCFG空间进行内存初始化;
可选的,在执行S403进行内存初始化时,可以是本节点中的主CPU的一个自引导处理器(Boot Strap Processor,简称BSP)唤醒其他CPU(具体也是唤醒其他CPU中的一个BSP),让其他CPU来进行各自的内存初始化。其中,BSP可认为是一个CPU中的一个核,该核在CPU上电后通过竞争方式获得代码的执行权,具体实现方式也属于现有技术,这里不再赘述。
内存初始化即本节点中的每个CPU通过读写本节点的本地MMCFG空间(包括内存控制器的寄存器空间)的方式,对连接自身对应的一个或多个物理内存进行侦测,获取连接的内存的基本信息(容量、频率、时序等),然后对连接的内存进行配置(包括配置内存控制器以及内存本身)。
可选的,在执行S403进行内存初始化时,可以是本节点中的主CPU的BSP通过串行(也称“单线程”,由主CPU的BSP来完成其他CPU的内存初始化)或并行(也称“多线程”,由主CPU的BSP唤醒其他CPU的BSP去完成内存初始化)的方式进行。本实施例对于内存初始化的内容及实现过程均为现有技术,本实施例不再赘述。
S404、在完成内存初始化后,进行***的内存统一编址,分配本节点的MMCFG空间在***的全局访问地址中的地址;其中,本节点的MMCFG空间全部或部分在全局访问地址为第一地址以上且能够在第二访问模式下被访问到的空间;
这里的“全局访问地址”是个统一编址的地址,各个节点的各个CPU都通过这个统一编址的地址来访问各种设备(如寄存器、外设、物理内存等)。
进一步的,在进行内存统一编址时,分配的CC-NUMA***中所有节点的MMCFG空间在全局访问地址中的地址相互不重叠,也就是说,每个节点的MMCFG空间在全局访问地址中的地址不可访问冲突。
进一步的,CC-NUMA***中每个节点的MMCFG空间在全局访问地址中的地址连续。这样访问起来更有规律,即便于统一访问。
S405、在***的全局访问地址中为本节点分配MMIO空间;
具体的,可以根据节点连接的外设支持的访问地址,为本节点分配在全局访问地址中,本节点的外设支持的访问地址,作为本节点的MMIO空间。
可选的,为本节点分配的MMIO空间,可以在***的全局访问地址中第一地址以下,或者,也可以在***的全局访问地址中第一地址以上,本发明实施例对此不进行具体限定。
进一步的,由于***中节点的MMCFG空间在全局访问地址中的地址已经部分或全部配置在***的全局访问地址为第一地址以上且能够在第二访问模式下被访问到的空间,因此,***的全局访问地址第一地址以下的存储空间中有大量的空间可分配为MMIO空间。
S406、与***中的至少一个其他节点进行交互,完成***的节点合并,构成完整***;
各个节点一开始都是各自启动的,并没有相互联系,进行本步骤后,通过节点间的相互交互,可以让其中一个主节点收集到其他各节点的信息,从而可以让主节点来进行统一的控制,从而构成一个完整的***,这个过程称之为“节点合并”。
可选的,当本节点的类型不同时,执行S406的过程也不同,具体可以包括下述两种情况:
情况1、所述本节点为主节点。
在情况1中,所述与***中的至少一个其他节点进行交互,完成所述***的节点合并,构成完整***,可以包括:
向本节点所在的大规模CC-NUMA***中每一个附属节点发送通知消息,所述通知消息用于指示附属节点向所述主节点发送自身的***信息;
分别接收所述每一个附属节点发送的各自的***消息,并继续执行剩下的BIOS启动,并在后续唤醒附属节点并分配相应的任务让附属节点执行。
在另一实施例中,各个节点之间可以通过一些互联芯片(也称节点控制器(Node Controller,简称NC))来进行互联,以完成相互之间的通信,如何实现为现有技术,这里不再赘述。
情况2、所述本节点为附属节点。
在情况2中,所述与***中的至少一个其他节点进行交互,完成所述***的节点合并,构成完整***,可以包括:
终止自身的BIOS启动流程,并等待主CPU唤醒,分配相应的任务并执行;
接收主节点发送的用于指示附属节点向主节点发送自身***信息的通知消息;
向主节点发送自身的***消息,***消息用于主节点完成***节点合并,构成完整***。
需要说明的是,本发明实施例对于节点合并的过程不进行具体赘述。
进一步可选的,在执行S406时,可以包括:在最后一次访问中央处理器CPU寄存器之后,与***中的至少一个其他节点进行交互,完成所述***的节点合并,构成完整***。
进一步的,在完成节点合并之后,所有控制将移交至主节点的主CPU的BSP。
S407、进入第二访问模式,在第二访问模式下,本节点所能访问到的地址空间大于在第一访问模式下本节点所能访问到的地址空间。
优选的,在x86***中,第二访问模式可以为64位模式。
在BIOS阶段中的PEI阶段后期,***将从第一访问模式进入第二访问模式,可以寻址到***的全局访问地址中第一地址以上的地址。
可选的,在执行S407之前,所述方法还可以包括:
在本节点的本地访问地址为第一地址(4G)以下的空间中,配置页表,页表指向在第二访问模式中本节点所能访问到且在第一访问模式下本节点不能访问到的地址空间。
示例性的,由于***管理模式(System Manage Mode,简称SMM)只支持32位,把节点的MMCFG空间在***的全局访问地址中的地址分配在4G以上后,SMM中无法访问MMCFG空间,***功能将不完整,本发明通过在32位空间中建立页表,当进入到64位模式时,通过页表的指示就可以访问在***的全局访问地址中4G以上的MMCFG空间。
配置页表及通过页表访问***的全局访问地址中第一地址以上MMCFG空间为现有技术,本实施例不再赘述。
本发明实施例提供的BIOS启动方法,应用于大规模CC-NUMA***中的主节点或者附属节点,通过在第一访问模式下,本节点在本节点的本地访问地址为第一地址以下的空间中分配本地MMCFG完成内存初始化,在进行***的内存统一编址时,将部分或全部的本节点的MMCFG空间在***的全局访问地址中的地址的位置进行搬移,由原来第一地址以下的空间搬移到第一地址以上且能够在第二访问模式下被访问到的空间,这样,在第二访问模式下,保证CPU仍然能够访问MMCFG空间在***的全局访问地址中的地址。同时,位于第一地址以下的、通过搬移节省出来的空间,就可以留给一些只能在这些空间使用的设备(例如,留出更多的MMIO空间给只能在4GB以下访问的PCIE卡使用,留出更多的可用内存空间供***使用),即使CC-NUMA***包含的CPU数量不断扩展,MMCFG空间在***的全局访问地址中的地址可以不占用第一地址以下的空间,从而能够支持更多的PCIE设备,因此,实现了在大规模的CC-NUMA***包含的CPU数量扩展的前提下,BIOS启动不影响MMIO空间及可用内存空间在低位地址中的可用空间,提高了大规模的CC-NUMA***PCIE设备及操作***的兼容性。
实施例二
基于上述各实施例,本实施例对实施例一中的步骤S402进行具体说明。
示例性的,如图5所示,示例本节点中包括4个CPU,分别记录为CPU0、CPU1、CPU2、CPU3,为每一个CPU分配64千字节(kilobyte,简称KB)大小的本地MMCFG空间,分配结果如下:CPU0分配2G~2G+64M的MMCFG空间;CPU1分配2G+64M~2G+64M+64M的MMCFG空间;其余依此类推。
这样一来,4个CPU的本地MMCFG空间连续,CPU0访问2G+64M的地址时就会访问到CPU1的MMCFG空间,则可以操作CPU1的控制与状态寄存器(Control and Status Register,简称CSR)寄存器。CPU1访问2G的地址时就会访问到CPU0的MMCFG空间,操作CPU0的CSR寄存器。其余类推。实现本节点任意CPU可以访问节点内其余CPU的CSR寄存器。
具体的,分配本节点的本地MMCFG空间,可以通过配置寄存器来实现。
其中,本节点可以通过配置MMCFG_Rule寄存器在本节点的本地访问地址为第一地址以下的空间中,分配一段空间作为一个节点的本地MMCFG空间,通过配置MMCFG_Target_LIST寄存器,设置通过配置MMCFG_Rule寄存器分配的本地MMCFG空间为本节点的本地MMCFG空间。
示例性的,MMCFG_Rule是CPU中用于设置MMCFG空间的寄存器,在BIOS启动阶段通过BIOS代码设置MMCFG_Rule寄存器的BaseAddress(基地址)域段指定空间的起始地址,Length(长度)域段指定空间的大小、Rule Enable(规则使能)指定该规则是否有效。
MMCFG_Target_LIST寄存器的Package0~7域段指定MMCFG空间对应的节点标识Node ID,以实现分配的本地MMCFG空间是哪个节点的本地MMCFG空间。
示例性的,下面举例说明图5示例的分配的本节点的本地MMCFG空间,如何通过配置寄存器实现。具体的,其实现过程是对CPU的寄存器eax,xmm2,xmm3,xmm4,xmm5进行配置。
具体的设置过程可以如下:
mov eax,DEFAULT_COLDBOOT_MMCFG_TARGET_LIST
movd xmm2,eax
mov eax,DEFAULT_COLDBOOT_MMCFG_RULE
movd xmm3,eax
mov eax,DEFAULT_COLDBOOT_IIO_BUS_NUMS
movd xmm4,eax
mov eax,DEFAULT_COLDBOOT_UNCORE_BUS_NUMS
movd xmm5,eax
需要说明的是,上述示例中为本节点分配的本地MMCFG空间的基地址(Base Address)为2GB,仅为举例说明,并不是对Base Address的取值的具体限定。在实际应用中,基地址可以根据实际需求变换。
还需要说明的是,上述示例仅以举例的形式说明S402的一种实现手段,并不是对S402的执行方式的具体限定。
实施例三
基于上述各实施例,本实施例对上述实施例中的步骤S404进行具体说明。
示例性的,本节点可以通过配置DRAM Rule寄存器,分配MMCFG空间在全局访问地址中的地址,可以通过配置INTERLEAVE_LIST寄存器设置通过DRAM Rule寄存器分配的MMCFG空间在全局访问地址中的地址为本节点的MMCFG空间。
其中,DRAM Rule寄存器用于从0MB地址至内存最大可寻址空间的地址分配。
具体的,通过设置DRAM_RULE_0~19寄存器的Limit域段指定空间上限地址,attr域段指定空间用于DRAM还是MMCFG空间,RULE_ENABLE域段指定该规则是否有效分配节点内CPU的内存空间。
示例性的,以大规模CC-NUMA***为32路***,第一访问模式为32位模式,第一地址为4GB,本节点为Node0节点,Node0中包括4颗CPU,在全局访问地址中4GB以上的位置为Node0的CPU分配共256MB的MMCFG空间。当切换到64bit模式后,读取全局访问地址中Node0的MMCFG空间存取CPU的CSR。
具体的,配置寄存器内容如下表1示意,为Node0分配了32太字节(Trillion byte,简称TB)+4GB~32TB+4GB+256MB共256MB的MMCFG空间在全局访问地址中的地址,其他节点的MMCFG空间在全局访问地址中的地址为32TB+4GB+256MB~32TB+4GB+2GB。该示例分配的大规模CC-NUMA***中8个节点的MMCFG空间在全局访问地址中的地址如图6所示。
表1
需要说明的是,上述示例中为***中的节点分配的MMCFG空间在全局访问地址中的基地址32T+4G,仅为举例说明,并不是对基地址的取值的具体限定。在实际应用中,基地址可以根据实际需求变换。
其中,表1中除了包括分配***中节点的MMCFG空间在全局访问地址中的寄存器配置,还包括其他寄存器配置;其他寄存器的配置,是根据***规则配置的,表1只是举例说明,并不是具体限定。
需要说明的是,表1的寄存器配置,只是以举例的形式,对通过配置寄存器在分配MMCFG空间在全局访问地址中的地址的示例说明,并不是对此过程的具体限定。
示例性的,通过对INTERLEAVE_LIST_0~N寄存器的Package0~7域段设置,用于指定对每个DRAM_RULE寄存器分配的MMCFG空间指向的节点标识Node ID。
还需要说明的是,上述示例仅以举例的形式说明S404的一种实现手段,并不是对S404的执行方式的具体限定。
进一步的,在执行S404时,需要将本节点的MMCFG空间在***的全局访问地址中的地址分配在在全局访问地址为第一地址以上且能够在第二访问模式下被访问到的空间,而当前在第一访问模式,因此,此时本节点无法访问本节点的MMCFG空间,主节点可以将其本地MMCFG保留,***中的所有节点通过访问主节点的MMCFG空间,进行***的内存统一编址,分别分配每个节点的MMCFG空间在***的全局访问地址中的地址。
进一步的,若所述本节点为主节点,在执行S404之前,所述方法还可以包括:
保留主节点的本地MMCFG空间,用于***内的每个节点进行***的内存统一编址分配每个节点的MMCFG空间在***的全局访问地址中的地址。
进一步的,保留的第一地址以下的主节点的本地MMCFG空间,除了可以用于***内的每个节点进行***的内存统一编址分配每个节点的MMCFG空间在***的全局访问地址中的地址,还可以当有一些驱动程序要在第一访问模式下访问一些硬件设备配置寄存器,只能访问第一地址以下的空间时使用,用于提高访问MMCFG时的***兼容性。
具体的,假设第一地址为4GB以下,第一访问模式为32位模式,保留的4GB以下的主节点的本地MMCFG空间,除了可以用于***内的每个节点进行***的内存统一编址分配每个节点的MMCFG空间在***的全局访问地址中的地址,还可以当有一些驱动程序要在32位模式下访问一些硬件设备配置寄存器只能访问4GB以下空间时使用,很好的提高了访问MMCFG时的***兼容性。
具体的,访问MMCFG的方式包括多种(寄存器方式、端口方式等等),其中一些访问方式仅支持第一地址以下的空间访问(例如端口方式),因此,保留的第一地址以下的主节点的本地MMCFG空间,可以兼顾这些仅支持第一地址以下的空间访问的访问方式,提高了访问MMCFG时的***兼容性。
实施例四
基于上述各实施例,本实施例对上述实施例中的步骤S405进行具体说明。
示例性的,可以通过配置MMIO Rule0~15,MMIO_Target_LIST_0,MMIO_Target_LIST_1寄存器将各个节点的MMIO空间在***的全局访问地址中第一地址以下的地址空间中,进行统一编址,大大提高多路***的PCIE设备兼容性。
其中,MMIO Rule寄存器用于为每个CPU分配MMIO空间。通过设置MMIO Rule寄存器的Base address域段指定空间基地址,Limitaddress域段指定空间上限地址,Rule_Enable指定该规则是否有效。
通过配置MMIO_Target_LIST_0寄存器域段Package0~7指定MMIO_RULE寄存器设置的MMIO区间属于哪个节点,用节点标识NodeID体现。
需要说明的是,各个CPU间可以自由调整MMIO空间大小,MMIO空间的基地址亦可以在***的全局访问地址中第一地址以下变化,也可以在***的全局访问地址中第一地址以上变化,本发明对此均不进行具体限定。
示例性的,假设第一访问模式为32位模式,在***的全局访问地址中4GB以下的空间,为32路CC-NUMA***中节点0的4个CPU分配MMIO空间;其中,为节点0分配了2GB+256MB~2GB+640MB共384MB的MMIO空间,配置的MMIO_RULE寄存器各域段内容如表2所示,该示例分配的MMIO空间如图7所示。
表2
寄存器标识 | Base address | Limita ddress | Enable |
MMIO_RULE6 | 2GB+976MB | 2GB+992MB | 1 |
MMIO_RULE5 | 2GB+960MB | 2GB+976MB | 1 |
MMIO_RULE4 | 2GB+640MB | 2GB+960MB | 1 |
MMIO_RULE3 | 2GB+608MB | 2GB+640MB | 1 |
MMIO_RULE2 | 2GB+576MB | 2GB+608MB | 1 |
MMIO_RULE1 | 2GB+512MB | 2GB+576MB | 1 |
MMIO_RULE0 | 2GB+256MB | 2GB+512MB | 1 |
其中,在表2中,MMIO_RULE0至MMIO_RULE3的配置,用于为节点0分配MMIO空间,MMIO_RULE4~MMIO_RULE6的配置是根据***规则配置,且通过配置MMIO_Target_LIST_0寄存器域段Package4~6指定MMIO_RULE寄存器设置的MMIO区间指向NC,使得后续由NC来进行处理,从而实现节点间的互连。
需要说明的是,表2的寄存器配置,只是以举例的形式,对通过配置寄存器在***的全局访问地址中4GB以下的存储空间分配MMIO空间的示例说明,并不是对此过程的具体限定。
示例性的,以大规模CC-NUMA***为32路,4路基于一个节点进行BIOS启动,根据上述S401~S405中的示例,执行本发明的方案,统一编址后,***的全局访问地址的分配结果可以如图8所示。
实施例五
基于上述各实施例,本发明实施例提供另一种BIOS启动装置90,所述启动装置90包括于本节点,所述本节点为CC-NUMA***中的主节点或者附属节点中,所述CC-NUMA***包括一个主节点及至少一个附属节点。
如图9所示,所述启动装置90可以包括:
模式单元901,用于控制所述***进入第一访问模式,其中,在所述第一访问模式下,所述本节点访问的最大地址为第一地址。
分配单元902,用于在第一访问模式下,在本节点的本地访问地址为所述第一地址以下的空间中,分配本节点的本地MMCFG空间。
初始化单元903,用于通过访问分配单元902分配的本节点的本地MMCFG空间进行内存初始化。
所述分配单元902还用于,在初始化单元903完成内存初始化后,进行***的内存统一编址,分配本节点的MMCFG空间在***的全局访问地址中的地址;其中,本节点的MMCFG空间全部或部分在全局访问地址为第一地址以上且能够在第二访问模式下被访问到的空间。
所述分配单元902还用于,在***的全局访问地址中为本节点分配MMIO空间。
合并单元904,用于与***中的至少一个其他节点进行交互,完成***的节点合并,构成完整***。
优选的,所述第一地址可以为4GB。
进一步的,所述分配单元902具体可以用于:
通过访问主节点的本地MMCFG空间,进行***的内存统一编址分配本节点的MMCFG空间在***的全局访问地址中的地址。
如图10所示,所述启动装置90还可以包括:
配置单元905,用于在模式单元901控制***从第一访问模式进入所述第二访问模式之前,在本节点的本地访问地址为第一地址以下的空间中,配置页表,页表指向在第二访问模式中所述本节点所能访问到且在第一访问模式下本节点不能访问到的地址空间。
访问单元906,用于在所述模式单元901控制***从第一访问模式进入第二访问模式后,按照配置单元905配置的页表访问本节点的MMCFG空间在所述***的全局访问地址中的地址。
进一步的,所述CC-NUMA***中每个节点的MMCFG空间在所述***的全局访问地址中的地址相互不重叠。
进一步的,所述CC-NUMA***中每个节点的MMCFG空间在所述***的全局访问地址中的地址连续;其中,一个节点的MMCFG空间在所述***的全局访问地址中的地址的首地址是另一个节点的MMCFG空间在所述***的全局访问地址中的地址的尾地址。
可选的,所述本节点为所述主节点,所述合并单元904具体可以用于:
向所述CC-NUMA***中每一个附属节点发送通知消息,所述通知消息用于指示附属节点向所述主节点发送自身的***信息;
分别接收所述每一个附属节点发送的各自的***消息,完成***的节点合并,构成完整***。
可选的,所述本节点为所述附属节点,所述合并单元904具体用于:
终止自身的BIOS流程;
接收所述主节点发送的用于指示附属节点向所述主节点发送自身***信息的通知消息;
向所述主节点发送自身的***消息,所述***消息用于所述主节点完成所述***的节点合并,构成完整***。
进一步的,所述合并单元904具体可以用于:
在最后一次访问CPU寄存器之后,与所述***中的至少一个其他节点进行交互,完成所述***的节点合并,构成完整***。
跟前述实施例一样,通过本发明实施例,可以留出更多4GB以下的空间供节点的外设(如PCIE卡)使用,提高了大规模的CC-NUMA***对外设的兼容性。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理包括,也可以两个或两个以上的位置单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (18)
1.一种基本输入/输出***BIOS启动方法,其特征在于,应用于本节点,所述本节点为大规模缓存一致性非均匀访存架构CC-NUMA***中的主节点或者附属节点,所述***包括一个主节点及至少一个附属节点,所述方法包括:
进入第一访问模式,其中,在所述第一访问模式下,所述本节点访问的最大地址为第一地址,在所述第一访问模式下执行如下步骤:
在所述本节点的本地访问地址为所述第一地址以下的空间中,分配所述本节点的本地内存映射配置MMCFG空间;
通过访问所述本节点的本地MMCFG空间进行内存初始化;
在完成内存初始化后,进行所述***的内存统一编址分配所述本节点的MMCFG空间在所述***的全局访问地址中的地址;其中,所述本节点的MMCFG空间全部或部分在所述全局访问地址为第一地址以上且能够在第二访问模式下被访问到的空间;
在所述***的全局访问地址中为所述本节点分配内存映射输入输出MMIO空间;
与所述***中的至少一个其他节点进行交互,完成所述***的节点合并,构成完整***;
进入所述第二访问模式,其中,在所述第二访问模式下,所述本节点所能访问到的地址空间大于在所述第一访问模式下所述本节点所能访问到的地址空间。
2.根据权利要求1所述的方法,其特征在于,所述第一地址为4千兆字节GB。
3.根据权利要求1或2所述的方法,其特征在于,所述进行所述***的内存统一编址分配所述本节点的MMCFG空间在所述***的全局访问地址中的地址,包括:
通过访问所述主节点的本地MMCFG空间,进行所述***的内存统一编址分配所述本节点的MMCFG空间在所述***的全局访问地址中的地址。
4.根据权利要求1-3任一项所述的方法,其特征在于,在所述进入所述第二访问模式之前,所述方法还包括:
在所述本节点的本地访问地址为所述第一地址以下的空间中,配置页表,所述页表指向在所述第二访问模式中所述本节点所能访问到且在所述第一访问模式下所述本节点不能访问到的地址空间;
在所述进入所述第二访问模式后,所述方法还包括:
按照所述页表访问所述本节点的MMCFG空间在所述***的全局访问地址中的地址。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述CC-NUMA***中每个节点的MMCFG空间在所述***的全局访问地址中的地址相互不重叠。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述CC-NUMA***中每个节点的MMCFG空间在所述***的全局访问地址中的地址连续;其中,一个节点的MMCFG空间在所述***的全局访问地址中的地址的首地址是另一个节点的MMCFG空间在所述***的全局访问地址中的地址的尾地址。
7.根据权利要求1-6任一项所述的方法,其特征在于,若所述本节点为所述主节点,所述与所述***中的至少一个其他节点进行交互,完成所述***的节点合并,构成完整***,包括:
向所述CC-NUMA***中每一个附属节点发送通知消息,所述通知消息用于指示附属节点向所述主节点发送自身的***信息;
分别接收所述每一个附属节点发送的各自的***消息,完成所述***的节点合并,构成完整***。
8.根据权利要求1-7任一项所述的方法,其特征在于,若所述本节点为所述附属节点,所述与所述***中的至少一个其他节点进行交互,完成所述***的节点合并,构成完整***,包括:
终止自身的BIOS流程;
接收所述主节点发送的用于指示附属节点向所述主节点发送自身***信息的通知消息;
向所述主节点发送自身的***消息,所述***消息用于所述主节点完成所述***的节点合并,构成完整***。
9.根据权利要求1-8任一项所述的方法,其特征在于,所述与所述***中的至少一个其他节点进行交互,完成所述***的节点合并,构成完整***,包括:
在最后一次访问中央处理器CPU寄存器之后,与所述***中的至少一个其他节点进行交互,完成所述***的节点合并,构成完整***。
10.一种基本输入/输出***BIOS启动装置,其特征在于,所述启动装置包括于本节点,所述本节点为大规模缓存一致性非均匀访存架构CC-NUMA***中的主节点或者附属节中,所述CC-NUMA***包括一个主节点及至少一个附属节点,所述启动装置包括:
模式单元,用于控制所述***进入第一访问模式,其中,在所述第一访问模式下,所述本节点访问的最大地址为第一地址;
分配单元,用于在所述第一访问模式下,在所述本节点的本地访问地址为所述第一地址以下的空间中,分配所述本节点的本地内存映射配置MMCFG空间;
初始化单元,用于通过访问所述分配单元分配的所述本节点的本地MMCFG空间进行内存初始化;
所述分配单元还用于,在所述初始化单元完成内存初始化后,进行所述***的内存统一编址分配所述本节点的MMCFG空间在所述***的全局访问地址中的地址;其中,所述本节点的MMCFG空间全部或部分在所述全局访问地址为第一地址以上且能够在第二访问模式下被访问到的空间;
所述分配单元还用于,在所述***的全局访问地址中为所述本节点分配内存映射输入输出MMIO空间;
合并单元,用于与所述***中的至少一个其他节点进行交互,完成所述***的节点合并,构成完整***;
所述模式单元还用于,控制所述***从所述第一访问模式进入所述第二访问模式,其中,在所述第二访问模式下,所述本节点所能访问到的地址空间大于在所述第一访问模式下所述本节点所能访问到的地址空间。
11.根据权利要求10所述的装置,其特征在于,所述第一地址为4千兆字节GB。
12.根据权利要求10或11所述的装置,其特征在于,所述分配单元具体用于:
通过访问所述主节点的本地MMCFG空间,进行所述***的内存统一编址分配所述本节点的MMCFG空间在所述***的全局访问地址中的地址。
13.根据权利要求10-12任一项所述的装置,其特征在于,所述装置还包括:
配置单元,用于在所述模式单元控制所述***从所述第一访问模式进入所述第二访问模式之前,在所述本节点的本地访问地址为所述第一地址以下的空间中,配置页表,所述页表指向在所述第二访问模式中所述本节点所能访问到且在所述第一访问模式下所述本节点不能访问到的地址空间;
访问单元,用于在所述模式单元控制所述***从所述第一访问模式进入所述第二访问模式后,按照所述配置单元配置的页表访问所述本节点的MMCFG空间在所述***的全局访问地址中的地址。
14.根据权利要求10-13任一项所述的装置,其特征在于,所述CC-NUMA***中每个节点的MMCFG空间在所述***的全局访问地址中的地址相互不重叠。
15.根据权利要求10-14任一项所述的装置,其特征在于,所述CC-NUMA***中每个节点的MMCFG空间在所述***的全局访问地址中的地址连续;其中,一个节点的MMCFG空间在所述***的全局访问地址中的地址的首地址是另一个节点的MMCFG空间在所述***的全局访问地址中的地址的尾地址。
16.根据权利要求10-15任一项所述的装置,其特征在于,若所述本节点为所述主节点,所述合并单元具体用于:
向所述CC-NUMA***中每一个附属节点发送通知消息,所述通知消息用于指示附属节点向所述主节点发送自身的***信息;
分别接收所述每一个附属节点发送的各自的***消息,完成所述***的节点合并,构成完整***。
17.根据权利要求10-16任一项所述的装置,其特征在于,若所述本节点为所述附属节点,所述合并单元具体用于:
终止自身的BIOS流程;
接收所述主节点发送的用于指示附属节点向所述主节点发送自身***信息的通知消息;
向所述主节点发送自身的***消息,所述***消息用于所述主节点完成所述***的节点合并,构成完整***。
18.根据权利要求10-17任一项所述的装置,其特征在于,所述合并单元具体用于:
在最后一次访问中央处理器CPU寄存器之后,与所述***中的至少一个其他节点进行交互,完成所述***的节点合并,构成完整***。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610248616.XA CN105867945B (zh) | 2016-04-20 | 2016-04-20 | 一种bios启动方法及装置 |
PCT/CN2017/079627 WO2017181851A1 (zh) | 2016-04-20 | 2017-04-06 | 一种bios启动方法及装置 |
EP17785336.3A EP3438816B1 (en) | 2016-04-20 | 2017-04-06 | Bios starting method and device |
US16/165,398 US10719333B2 (en) | 2016-04-20 | 2018-10-19 | BIOS startup method and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610248616.XA CN105867945B (zh) | 2016-04-20 | 2016-04-20 | 一种bios启动方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105867945A true CN105867945A (zh) | 2016-08-17 |
CN105867945B CN105867945B (zh) | 2018-11-16 |
Family
ID=56633625
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610248616.XA Active CN105867945B (zh) | 2016-04-20 | 2016-04-20 | 一种bios启动方法及装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10719333B2 (zh) |
EP (1) | EP3438816B1 (zh) |
CN (1) | CN105867945B (zh) |
WO (1) | WO2017181851A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017181851A1 (zh) * | 2016-04-20 | 2017-10-26 | 华为技术有限公司 | 一种bios启动方法及装置 |
CN107748677A (zh) * | 2017-10-17 | 2018-03-02 | 岳西县天鹅电子科技有限公司 | 一种计算机快速启动及执行程序的方法 |
CN108153553A (zh) * | 2018-01-23 | 2018-06-12 | 郑州云海信息技术有限公司 | 一种高端服务器启动方法、***、装置及计算机存储介质 |
CN114691223A (zh) * | 2022-03-21 | 2022-07-01 | 深圳市同泰怡信息技术有限公司 | 一种通过网络传输bios日志的方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060069906A1 (en) * | 2003-10-02 | 2006-03-30 | Zolnowsky Jeffrey D | Method and apparatus for BIOS determination of network information and diagnostics |
CN103475494A (zh) * | 2013-09-12 | 2013-12-25 | 华为技术有限公司 | Cc-numa***及其启动的方法 |
CN103530254A (zh) * | 2013-10-11 | 2014-01-22 | 杭州华为数字技术有限公司 | 多节点***的外部设备互联枚举方法和装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6336185B1 (en) * | 1998-09-24 | 2002-01-01 | Phoenix Technologies Ltd. | Use of other processors during BIOS boot sequence to minimize boot time |
US7392371B2 (en) * | 2001-12-20 | 2008-06-24 | Zimmer Vincent J | Method and apparatus for using a volume top file to boot firmware modules |
US7552319B2 (en) * | 2004-06-30 | 2009-06-23 | Intel Corporation | Methods and apparatus to manage memory access |
US7779244B2 (en) * | 2006-12-28 | 2010-08-17 | Intel Corporation | Multi-socket boot |
US7689755B2 (en) * | 2007-03-07 | 2010-03-30 | Intel Corporation | Apparatus and method for sharing devices between multiple execution domains of a hardware platform |
US7987352B2 (en) * | 2007-11-30 | 2011-07-26 | Intel Corporation | Booting with sub socket partitioning |
US9880858B2 (en) * | 2015-06-25 | 2018-01-30 | Dell Products L.P. | Systems and methods for reducing BIOS reboots |
CN105867945B (zh) * | 2016-04-20 | 2018-11-16 | 华为技术有限公司 | 一种bios启动方法及装置 |
US10289431B2 (en) * | 2016-10-01 | 2019-05-14 | Intel Corporation | Technologies for reduced control and status register access latency |
-
2016
- 2016-04-20 CN CN201610248616.XA patent/CN105867945B/zh active Active
-
2017
- 2017-04-06 WO PCT/CN2017/079627 patent/WO2017181851A1/zh active Application Filing
- 2017-04-06 EP EP17785336.3A patent/EP3438816B1/en active Active
-
2018
- 2018-10-19 US US16/165,398 patent/US10719333B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060069906A1 (en) * | 2003-10-02 | 2006-03-30 | Zolnowsky Jeffrey D | Method and apparatus for BIOS determination of network information and diagnostics |
CN103475494A (zh) * | 2013-09-12 | 2013-12-25 | 华为技术有限公司 | Cc-numa***及其启动的方法 |
CN103530254A (zh) * | 2013-10-11 | 2014-01-22 | 杭州华为数字技术有限公司 | 多节点***的外部设备互联枚举方法和装置 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017181851A1 (zh) * | 2016-04-20 | 2017-10-26 | 华为技术有限公司 | 一种bios启动方法及装置 |
US10719333B2 (en) | 2016-04-20 | 2020-07-21 | Huawei Technologies Co., Ltd. | BIOS startup method and apparatus |
CN107748677A (zh) * | 2017-10-17 | 2018-03-02 | 岳西县天鹅电子科技有限公司 | 一种计算机快速启动及执行程序的方法 |
CN108153553A (zh) * | 2018-01-23 | 2018-06-12 | 郑州云海信息技术有限公司 | 一种高端服务器启动方法、***、装置及计算机存储介质 |
CN114691223A (zh) * | 2022-03-21 | 2022-07-01 | 深圳市同泰怡信息技术有限公司 | 一种通过网络传输bios日志的方法及装置 |
CN114691223B (zh) * | 2022-03-21 | 2023-08-22 | 深圳市同泰怡信息技术有限公司 | 一种通过网络传输bios日志的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US10719333B2 (en) | 2020-07-21 |
EP3438816B1 (en) | 2021-06-09 |
WO2017181851A1 (zh) | 2017-10-26 |
EP3438816A4 (en) | 2019-04-17 |
EP3438816A1 (en) | 2019-02-06 |
CN105867945B (zh) | 2018-11-16 |
US20190050240A1 (en) | 2019-02-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3140749B1 (en) | In-memory lightweight coherency | |
EP3140743B1 (en) | Hybrid memory cube system interconnect directory-based cache coherence methodology | |
KR101090651B1 (ko) | 가상 머신 모니터 및 멀티프로세서 시스템 | |
CN104750624B (zh) | 群集级数据一致性模型和协议 | |
US8078862B2 (en) | Method for assigning physical data address range in multiprocessor system | |
CN105867945A (zh) | 一种bios启动方法及装置 | |
CN109582605A (zh) | 通过PCIe的一致性存储器设备 | |
US20220004488A1 (en) | Software drive dynamic memory allocation and address mapping for disaggregated memory pool | |
CN101216781B (zh) | 一种多处理器***、装置及方法 | |
EP3529702A1 (en) | Programmable cache coherent node controller | |
US7882327B2 (en) | Communicating between partitions in a statically partitioned multiprocessing system | |
EP3619614A1 (en) | Cache coherent node controller for scale-up shared memory systems | |
CN107315694A (zh) | 一种缓存一致性管理方法及节点控制器 | |
US11231927B2 (en) | System, apparatus and method for providing a fabric for an accelerator | |
US10565133B2 (en) | Techniques for reducing accelerator-memory access costs in platforms with multiple memory channels | |
US20090213755A1 (en) | Method for establishing a routing map in a computer system including multiple processing nodes | |
JP7330694B2 (ja) | コンピュータシステム及びその動作方法 | |
Ros et al. | Emc 2: Extending magny-cours coherence for large-scale servers | |
CN106445573A (zh) | 固件升级方法、装置及高速***设备互联集群*** | |
CN106557448B (zh) | 多节点***的内核代码读取方法及*** | |
US20240126469A1 (en) | Apparatus and method for controlling a pooled memory device or a memory expander | |
TW202416145A (zh) | 用於控制池化記憶體裝置或記憶體擴展器的設備和方法 | |
KR100308317B1 (ko) | 다중노드시스템의동적인전역적단일주소공간구성방법 | |
TW202340931A (zh) | 具有雜訊鄰居緩解及動態位址範圍分配的直接交換快取 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |