CN102033768B - 多cpu系统的启动方法及多cpu系统 - Google Patents
多cpu系统的启动方法及多cpu系统 Download PDFInfo
- Publication number
- CN102033768B CN102033768B CN 201010584649 CN201010584649A CN102033768B CN 102033768 B CN102033768 B CN 102033768B CN 201010584649 CN201010584649 CN 201010584649 CN 201010584649 A CN201010584649 A CN 201010584649A CN 102033768 B CN102033768 B CN 102033768B
- Authority
- CN
- China
- Prior art keywords
- cpu
- pcie
- multicast
- multicast group
- address space
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Abstract
本发明涉及计算机技术领域,公开了一种多CPU系统的启动方法及多CPU系统。本发明中,为需要下载不同启动文件的从CPU,设置不同的多播组,需要下载相同启动文件的从CPU,对应同一个多播组,每个多播组分配有PCIe多播地址空间。主控CPU只需把待下载的文件拷贝到事先完成初始化的各多播组的PCIe多播地址空间,支持多播的PCIe交换器就可以自动地把启动文件多播到相应的从CPU的启动内存中。整个多播过程不占用PCIe外部带宽和系统资源,而且数据传输的速度非常快,既可以节约系统资源和PCIe带宽,又能加快从CPU的启动速度。
Description
技术领域
本发明涉及计算机技术领域,特别涉及多CPU的启动技术。
背景技术
当前,在基于外围器件互联(Peripheral Component Interconnect,简称“PCI”)/PCIe(高速外围器件互联)总线的多CPU(中央处理器)系统中,如何让这些CPU快速启动,使系统尽快进入工作状态,事关整个系统启动性能。当CPU数量非常庞大时,更显得尤为重要。
现有的启动方法基本有两种,第一种是从非易失存储介质(如闪存,硬盘)启动,第二种是从PCI启动。PCI启动方法的基本思想是主控CPU通过PCI/PCIe总线,把从CPU启动所需的二进制文件下载到其对应的内存中,下载完成后,从CPU的Bootloader(引导系统启动的引导程序)就会从该内存处引导系统启动。
目前,主控CPU一般采用多线程的方法启动从CPU,为每个从CPU都发起一个线程,各个线程分别下载对应从CPU启动所需的二进制文件,下载完成后启动从CPU;或者稍加改进,主控CPU把从CPU分组,先启动每组的组长CPU,然后由组长CPU再分别启动各组其它的CPU。
然而,本发明的发明人发现,这些方法都需要把待下载的文件拷贝成多份数据,虽然是多线程或分组下载,但本质上数据传输是软件串行处理的,随着从CPU数量地增加,势必会消耗更多的系统资源和PCI e带宽,启动速度也会变得更慢。
发明内容
本发明的目的在于提供一种多CPU系统的启动方法及多CPU系统,节约系统资源和PCIe带宽,加快从CPU的启动速度。
为解决上述技术问题,本发明的实施方式提供了一种多CPU系统的启动方法,该多CPU系统包含:主控CPU、从CPU和PCIe交换器,该方法中,多播组被预先设置,需要下载不同启动文件的从CPU对应不同的多播组,需要下载相同启动文件的从CPU,对应同一个多播组,每个所述多播组分配有PCIe多播地址空间;
在每次启动系统时,执行以下步骤:
对于每个多播组,主控CPU将该多播组所对应的从CPU需要下载的启动文件,拷贝至该多播组的PCIe多播地址空间中;
对于每个多播组,通过PCIe交换器将该多播组的PCIe多播地址空间中存放的启动文件,多播到该多播组所对应的各从CPU的内存空间中;
从CPU根据内存空间中存放的启动文件,进行启动。
本发明的实施方式还提供了一种多CPU系统,包含主控CPU、从CPU和PCIe交换器;
主控CPU用于在每次启动系统时,对每个多播组,将该多播组所对应的从CPU需要下载的启动文件,拷贝至该多播组的PCIe多播地址空间中;其中,多播组被预先设置,需要下载不同启动文件的从CPU对应不同的多播组,需要下载相同启动文件的从CPU,对应同一个多播组,每个多播组分配有PCIe多播地址空间;
PCIe交换器用于对每个多播组,将该多播组的PCIe多播地址空间中存放的启动文件,多播到该多播组所对应的各从CPU的内存空间中;
从CPU用于根据内存空间中存放的启动文件,进行启动。
本发明实施方式与现有技术相比,主要区别及其效果在于:
多播组被预先设置,需要下载不同启动文件的从CPU对应不同的多播组,需要下载相同启动文件的从CPU,对应同一个多播组,每个多播组分配有PCI e多播地址空间。主控CPU只需把待下载的文件拷贝到事先完成初始化的各多播组的PCIe多播地址空间,支持多播的PCIe交换器就可以自动地把启动文件多播到相应的从CPU的启动内存中。通过使用PCIe多播功能下载从CPU所需的启动文件,由于多播过程由硬件完成,因而整个多播过程不占用PCIe外部带宽和系统资源,而且数据传输的速度非常快,既可以节约系统资源和PCIe带宽,又能加快从CPU的启动速度,启动文件越多,从CPU数量越多,就越能体现本发明的优越性。
进一步地,通过将多播组的PCIe多播地址空间映射到从CPU的内存BAR所在的PCI地址空间上,再由内存BAR将映射得到的PCI地址空间,映射到从CPU的内存空间。实现简单,保证了本发明方案的可行性。
进一步地,PCIe交换器可以是一级或多级拓扑结构,使得本发明的实施方式可灵活实现。而且,如果是多级拓扑结构,则底层PCIe交换器只需配置有所需要的多播组的PCIe多播地址空间即可(所需要的多播组的PCIe多播地址空间,为与该底层PCIe交换器连接的从CPU所对应的多播组的PCIe多播地址空间),避免了不必要的数据传输,节约了系统资源。
进一步地,主控CPU设置的启动标志位的有效值,同样通过PCIe交换器多播到各从CPU,进一步节约了系统资源和PCIe带宽,加快了从CPU的启动速度。
附图说明
图1是根据本发明第一实施方式的多CPU系统的启动方法流程图;
图2是根据本发明第二实施方式中的多CPU系统的结构示意图;
图3是根据本发明第二实施方式的多CPU系统的启动方法流程图;
图4是根据本发明第二实施方式中各多播组的PCIe多播地址空间分配示意图;
图5是根据本发明第二实施方式中ulmage文件的多播下载的示意图;
图6是根据本发明第二实施方式中ramdisk文件的多播下载的示意图;
图7是根据本发明第二实施方式中从CPU的启动流程图;
图8是根据本发明第二实施方式中的启动标志位的设置示意图;
图9是根据本发明第三实施方式中的多CPU系统的结构示意图。
具体实施方式
在以下的叙述中,为了使读者更好地理解本申请而提出了许多技术细节。但是,本领域的普通技术人员可以理解,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请各权利要求所要求保护的技术方案。
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的实施方式作进一步地详细描述。
本发明第一实施方式涉及一种多CPU系统的启动方法,在本实施方式中,将PCIe多播技术运用到多CPU系统的启动中,使用PCIe多播功能下载从CPU所需的启动文件。
具体地说,为需要下载不同启动文件的从CPU,预先设置不同的多播组,需要下载相同启动文件的从CPU,对应同一个多播组,每个多播组分配有PCIe多播地址空间。
多CPU系统在每次启动时,具体流程如图1所示。在步骤110中,对于每个多播组,由主控CPU将该多播组所对应的从CPU需要下载的启动文件,拷贝至该多播组的PCIe多播地址空间中。
比如说,多CPU系统中包含4个从CPU,从CPU1和从CPU2因需要下载相同的启动文件对于同一个多播组(如多播组1);从CPU3和从CPU4因需要下载的启动文件相同对于另一个多播组(如多播组2)。多播组1和多播组2各自分配有相应的PCIe多播地址空间。那么,在每次启动系统时,由主控CPU将从CPU1和从CPU2需要下载的启动文件拷贝至多播组1的PCIe多播地址空间中;将从CPU3和从CPU4需要下载的启动文件拷贝至多播组2的PCIe多播地址空间中。
接着,在步骤120中,利用PCIe交换器(PCIe Switch)将每个多播组的PCIe多播地址空间中存放的启动文件,多播到该多播组所对应的各从CPU的内存空间中。由于PCIe Switch支持多播功能,因此可以通过PCIeSwitch,将多播组1的PCIe多播地址空间中存放的启动文件,多播到从CPU1和从CPU2的内存空间中;将多播组2的PCIe多播地址空间中存放的启动文件,多播到从CPU3和从CPU4的内存空间中。
接着,在步骤130中,各从CPU根据内存空间中存放的启动文件,进行启动。针对上述案例,从CP U1、从CPU2、从CPU3和从CPU4,各自根据内存空间中中存放的启动文件,进行启动。
由于有在本实施方式中,通过使用PCIe多播功能下载从CPU所需的启动文件,由于多播过程由硬件完成,因而整个多播过程不占用PCIe外部带宽和系统资源,而且数据传输的速度非常快,既可以节约系统资源和PCIe带宽,又能加快从CPU的启动速度,启动文件越多,从CPU数量越多,就越能体现本发明的优越性。
本发明第二实施方式涉及一种多CPU系统的启动方法。本实施方式在第一实施方式的基础上,进行了细节上的补充说明。
具体地说,本实施方式中的CPU之间通过PCI e总线互联,从CPU作为PCIe设备挂接在底层PCIe Switch(PCIe交换器)上。顶层PCIe Switch0与主控CPU的Root Complex(PCIe根联合体)相连,PCIe Switch 1、PCIe Switch m、PCIe Switch n为底层PCIe Switch,底层PCIe Switch与从CPU相连,如图2所示。每个CPU都运行Linux系统,CPU 0是主控CPU,CPU 1...CPU N是从CPU,从CPU为不支持多播功能的EP(终端PCIe设备)。在本实施方式中,PCIe Switch为二级拓扑结构,但在实际应用中,也可是一级或其他级的拓扑结构。所有PCIe Switch都支持多播功能(MC),一般而言从CPU类型可能不尽相同,不同类型的从CPU通常需要下载不同的启动文件,本实施方式中以多CPU系统中有三种类型(Type 1,Type m,Type n)的从CPU为例进行说明,不同类型的CPU对应不同的多播组,同一类型的CPU挂接在同一个底层PCIe Switch上。当然,在实际应用中,从CPU可多可少,可大于三种,也可少于三种。
本实施方式的具体流程如图3所示,在系统上电后,进入步骤301和301’,在步骤301中,主控CPU加载从CPU的PCI驱动;在步骤301’中,从CPU的Bootloader初始化内存。步骤301和301’相互独立执行。
在步骤302中,主控CPU配置多播功能,通过PCIe交换器将每个多播组的PCI e多播地址空间中存放的启动文件,多播到该多播组所对应的各从CPU的内存空间中。
具体地说,对需要下载不同启动文件的从CPU,预先设置有不同的多播组,需要下载相同启动文件的从CPU,对应同一个多播组,每个多播组分配有PCI e多播地址空间。由于在本实施方式中,同一类型的从CPU需要下载相同的启动文件,不同类型的从CPU需要下载不同的启动文件。如图1所示,CPU1......CPU m-1为Type 1类型的从CPU,CPU m......CPU n-1为Type m类型的从CPU,CPU n......CPU N为Type n类型的从CPU。因此,需要设置3个多播组(MCG):MCG0,MCG 1,MCG2。MCG0与Type n类型的从CPU对应;MCG 1与Type m类型的从CPU对应;MCG2与Type1类型的从CPU对应。MCG0,MCG 1,MCG2的PCIe多播地址空间分配如图4所示,多播地址的基址设为0xF0000000,每个MCG的大小为8M Byes,这三个多播组用来把待下载的三类启动文件多播到对应的从CPU内存中。
一般而言,从CPU启动的必要文件有两种:ramdisk和ul mage。ramdisk是根文件系统,ulmage是系统内核镜像。因此,将Type 1类型的从CPU启动文件命名为:ramdisK_1,ulmage_1;Type m类型的从CPU启动文件命名为:ramdisK_m,ulmage_m;Type n类型的从CPU启动文件命名为:ramdisk_n,ulmage_n。下面对通过PCIe交换器将启动文件下载到对应的从CPU上进行详细阐述。
ulmage文件的下载,是指主控CPU分别把ulmag_1、ulmage_m、ul mage_n内核文件下载到从CPU(Type 1,Type m、Type n)对应的内存区域,如图5所示。
首先主控CPU配置PCIe多播寄存器(与PCIe Switch相关的寄存器)和内存PCI基地址寄存器(BAR)。参考图2所示框图,所有PCIe Switch端口都要使能多播功能,最大多播组数设为64个,多播基地址设为0xF0000000,每个多播组的大小都为8MBytes,BloCk寄存器清零。这样,所有PCIe Switch端口都有相同的多播地址空间。
PCIe Switch 0各端口的receive(接收)寄存器要配置为接收MCG0、MCG1、MCG2的数据,PCIe Switch 1配置为接收MCG2的数据,PCIe
Switch m配置为接收MCG1的数据,PCIe Switch n配置为接收MCG0的数据,这是为了Type 1类型的从CPU只接收来自MCG2的数据,Type m类型的从CPU只接收来自MCG 1的数据,Type n类型的从CPU只接收来自MCG0的数据。各底层PCI e交换器只需配置所需要的多播组的PCIe多播地址空间即可,避免了不必要的数据传输,节约了系统资源。
由于从CPU不支持多播功能,需要配置其对应的PCIe Switch下行端口多播overlay(覆盖)寄存器,overlay寄存器用于将PCIe多播地址空间映射到从CPU的内存BAR所在的PCI地址空间上,而内存BAR则把该PCI地址空间映射到从CPU的内存空间,这样PCIe多播地址空间就与从CPU的内存空间对应起来了,如图5所示,具体映射过程如下:
PCIe Switch 1挂接的是Type 1类型的从CPU,以CPU 1为例,CPU 1对应的下行端口overlay寄存器基址设置为其内存BAR基址0xA0000000,overlay大小和MCG大小相同,同为8M Bytes,内存BAR映射到CPU 1存放ulmage的内存地址为0x08000000。PCIe Switch m挂接的是Type m类型的从CPU,以CPU m为例,CPU m对应的下行端口overlay基址设置为其内存BAR基址0x90000000,overlay大小8MBytes,内存BAR映射到CPU m存放ulmage的内存地址为0x04000000。PCIe Switch n挂接的是Type n类型的从CPU,以CPU n为例,CPU n对应的下行端口overlay基址设置为其内存BAR基址0x80000000,overlay大小8MByes,内存BAR映射到CPU n存放ulmage的内存地址为0x02000000。
因此,主控CPU只需将文件ulmage_1、ul mage m、ulmage_n分别拷贝到MCG2、MCG1、MCG0对应的多播空间,PCIe Switch就会把MCG2的数据多播到Type 1类型所有从CPU的ulmage内存空间,把MCG1的数据多播到Type m类型所有从CPU的ulmage内存空间,把MCG0的数据多播到Type n类型所有从CPU的ulmage内存空间,整个多播过程不占用PCIe外部带宽和系统资源,而且数据传输的速度非常快,这样每个从CPU的ulmage内存区域都很快的收到了对应的内核数据。
ramdisk文件的下载,是指主控CPU分别把ramdisk_1、ramdisk_m、ramdisk_n根文件系统下载到从CPU(Type 1,Type m、Type n)对应的内存区域,如图6所示。ramdisk的下载原理与过程与ulmage的下载相同,下面只对其下载的不同之处进行说明:
PCIe多播寄存器的配置,与上述ulmage文件下载中的PCIe多播寄存器的配置相同,只是内存BAR映射的具体位置有些不同,Type 1、Type m、Type n类型的从CPU内存BAR映射到从CPU的内存区域分别为0x08800000、0x04800000、0x02800000,这些区域都用来存放多播过来的ramdisk数据。配置完成后,主控CPU把文件ramdisK_1、ramdisK_m、ramdisk_n分别拷贝到MCG2、MCG 1、MCG0对应的多播空间,PCIe Switch就会把MCG2、MCG 1、MCG0中的ramdisk数据分别多播到Type 1、Typem、Type n类型所有从CPU对应的内存区域。
通过将多播组的PCIe多播地址空间映射到从CPU的内存BAR所在的PCI地址空间上,再由内存BAR将映射得到的PCI地址空间,映射到从CPU的内存空间。实现简单,保证了本发明方案的可行性。当然,若还有其它种类的启动文件也可以按照上述过程进行下载。另外,下载文件前,从CPU的内存已初始化好,并且主控CPU可以访问从CPU的内存和寄存器BAR。
本领域技术人员可以理解,系统上电后,各从CPU的Bootloader首先会初始化内存,然后轮询检测启动标志位boot_valid,该标志位一旦有效,Bootloader就会从对应的内存处引导系统启动。主控CPU把启动文件多播到从CPU放置启动文件的内存区域后就会设置标志位boot_valid,这样从CPU的Bootloader检测到该标志位有效,于是启动系统。从CPU的启动流程如图7所示。
因此,在步骤301’后,即从CPU在完成内存初始化后,进入步骤302’,轮询检测启动标志位boot_valid,如果检测到该启动标志位有效,则进入步骤303’,根据内存空间中存放的启动文件,进行启动;如果未检测到该启动标志位有效,则继续轮询检测该启动标志位。在步骤302后,即在主控CPU通过PCIe交换器将每个多播组的PCIe多播地址空间中存放的启动文件,多播到该多播组所对应的各从CPU的内存空间中后,进入步骤303,将启动标志位设置为有效值,每个多播组分别对应一个启动标志位。
在步骤303中,待所有的启动文件都下载到从CPU对应的内存区域后,主控CPU设置boot_valid标志位,如图8所示,主控CPU设置boot_valid标志位的操作也由PCIe多播完成。
具体地说,先约定Type 1、Type m、Type n类型的从CPU的启动标志位分别为boot_valid_1、boot_valid_m、boot_Valid_n,大小为四个字节,位于多播组和对应内存区域的前四个字节,有效值分别为0xdeadbeed、0xdeadbeee、0xdeadbeef。
如同上述ulmage文件的下载原理与过程,PCIe多播寄存器的配置不变,Type 1、Type m、Type n类型的从CPU内存BAR映射的内存区域分别为0x09000000、0x05000000、0x03000000,这些区域的前四个字节用来存放boot_valid标志位。
配置完成后,主控CPU对MCG2、MCG1、MCG0的PCIe多播地址空间的前四个字节分别赋值为0xdeadbeed、0xdeadbeee、0xdeadbeef,PCIe Switch会把这些标志位分别多播到Type 1、Type m、Type n类型所有从CPU对应的内存空间。
此时,Type 1类型的所有从CPU的Bootloader会轮询内存地址0x09000000处的值,一旦其值为0xdeadbeed,即检测到启动标志位有效,则进入步骤303’,从0x08000000和0x08800000处加载内核和根文件系统,接着启动系统;Type m类型的所有从CPU的Bootloader会轮询内存地址0x05000000处的值,一旦其值为0xdeadbeee,即检测到启动标志位有效,则进入步骤303’,从0x04000000和0x04800000处加载内核和根文件系统,接着启动系统;Type m类型的所有从CPU的Bootloader会轮询内存地址0x03000000处的值,一旦其值为0xdeadbeef,即检测到启动标志位有效,则进入步骤303’,从0x02000000和0x02800000处加载内核和根文件系统,接着启动系统。
不难发现,本实施方式不但同样能达到第一实施方式的技术效果,而且,主控CPU设置的启动标志位的有效值,同样通过PCIe交换器多播到各从CPU,进一步节约了系统资源和PCIe带宽,加快了从CPU的启动速度。
需要说明的是,PCIe规范最大支持64个多播组(MCG),本实施方式中由于是以三种类型的从CPU为例进行说明,因此使用了三个多播组,但在实际应用中,从CPU的类型可以大于三种或小于三种,相应地就要增加或减少对应的MCG。并且,不同多播组的CPU也可以挂接在同一PCIe交换器上,本实施方式中的同一多播组的从CPU挂接在同一PCIe交换器上只是一种典型情况。
另外,不同类型的从CPU启动文件也可以相同。若相同,这些从CPU对应的PCIe Switch端口要配置为同一MCG,以便接收同一多播组的数据。
另外,本实施方式中给出的多播地址空间、多播映射的PCI空间、BAR映射的内存空间、启动标志位的具体值,只是为方便理解而给出的具体例子,在实际应用中,可以根据据实际情况而设定。
另外,启动文件可以单独下载(针对只有一个从CPU需要下载的情况),也可以是本实施方式中的分组下载。boot_valid标志位可以在内存中,也可以在寄存器BAR中。
本发明第三实施方式涉及一种多CPU系统的启动方法。第三实施方式与第二实施方式基本相同,区别主要在于:PCIe Switch的拓扑结构不同。
在第二实施方式中,PCIe Switch为二级拓扑结构,顶层PCIe交换器中配置有各多播组的PCIe多播地址空间,与顶层PCIe交换器连接的底层PCIe交换器中,配置有该底层PCIe交换器所需要的多播组的PCIe多播地址空间。其中,底层PCIe交换器所需要的多播组的PCIe多播地址空间,为与该底层PCIe交换器连接的从CPU所对应的多播组的PCIe多播地址空间。
然而在第三实施方式中,PCIe Switch为一级拓扑结构,如图9所示,CPU1......CPU N均挂接在PCIe Switch 0上。由PCIe Switch 0为挂接的每个从CPU配置其对应的PCIe Switch下行端口多播overlay(覆盖)寄存器,overlay寄存器用于将PCIe多播地址空间映射到从CPU的内存BAR所在的PCI地址空间上,而内存BAR则把该PCI地址空间映射到从CPU的内存空间。具体实现方式与第二实施方式类似,在此不再赘述。
PCIe交换器可以是一级或多级拓扑结构,使得本发明的实施方式可灵活实现。
本发明的各方法实施方式均可以以软件、硬件、固件等方式实现。不管本发明是以软件、硬件、还是固件方式实现,指令代码都可以存储在任何类型的计算机可访问的存储器中(例如永久的或者可修改的,易失性的或者非易失性的,固态的或者非固态的,固定的或者可更换的介质等等)。同样,存储器可以例如是可编程阵列逻辑(Programmable Array Logic,简称“PAL”)、随机存取存储器(Random Access Memory,简称“RAM”)、可编程只读存储器(Programmable Read Only Memory,简称“PROM”)、只读存储器(Read-Only Memory,简称“ROM”)、电可擦除可编程只读存储器(Electrically Erasable Programmable ROM,简称“EEPROM”)、磁盘、光盘、数字通用光盘(Digital Versatile Disc,简称“DVD”)等等。
本发明第四实施方式涉及一种多CPU系统。该多CPU系统包含主控CPU、从CPU和PCIe交换器。
其中,主控CPU用于在每次启动系统时,对每个多播组,将该多播组所对应的从CPU需要下载的启动文件,拷贝至该多播组的PCIe多播地址空间中。其中,多播组被预先设置,需要下载不同启动文件的从CPU对应不同的多播组,需要下载相同启动文件的从CPU,对应同一个多播组,每个多播组分配有PCIe多播地址空间。
PCIe交换器用于对每个多播组,将该多播组的PCI e多播地址空间中存放的启动文件,多播到该多播组所对应的各从CPU的内存空间中。
从CPU用于根据内存空间中存放的启动文件,进行启动。
不难发现,第一实施方式是与本实施方式相对应的方法实施方式,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。
本发明第五实施方式涉及一种多CPU系统。本实施方式在第四实施方式的基础上,进行了细节上的补充。
具体地说,本实施方式中的多CPU系统包含顶层PCIe交换器和底层PCIe交换器,底层PCIe交换器与顶层PCIe交换器连接,从CPU与底层PCIe交换器相连接。
顶层PCIe交换器中配置有各所述多播组的PCIe多播地址空间,底层PCIe交换器中配置有该底层PCIe交换器所需要的多播组的PCIe多播地址空间。其中,底层PCIe交换器所需要的多播组的PCIe多播地址空间,为与该底层PCIe交换器连接的从CPU所对应的多播组的PCIe多播地址空间。
底层PCIe交换器包含L个多播覆盖寄存器,L为与底层PCIe交换器连接的从CPU的个数,每个多播覆盖寄存器对应一个与PCIe交换器连接的从CPU。多播覆盖寄存器用于将与本多播覆盖寄存器对应的从CPU所属的多播组的PCIe多播地址空间,映射到该从CPU的内存BAR所在的PCI地址空间上。
每个从CPU还用于将经多播覆盖寄存器映射得到的PCI地址空间,再映射到本从CPU的内存空间。
需要说明的是,主控CPU还用于在PCIe交换器将启动文件多播到多播组所对应的各从CPU的内存空间后,设置启动标志位有效,每个多播组分别对应一个启动标志位。
从CPU还用于在完成初始化内存后,轮询检测启动标志位是否有效,并在检测到启动标志位有效时,根据内存空间中存放的启动文件,进行启动。
主控CPU在设置启动标志位有效时,将各多播组的PCIe多播地址空间的前N个字节分别赋值为各多播组对应的启动标志位的有效值。
PCIe交换器还用于将每个多播组的PCIe多播地址空间的前N个字节,多播到该多播组所对应的各从CPU的内存空间的前N个字节。
每个从CPU还用于在轮询检测启动标志位是否有效时,检测本从CPU的内存空间的前N个字节。
在本实施方式中,需要下载相同启动文件的从CPU,为同一类型的从CPU。从CPU需要下载的启动文件,包含根文件系统文件和系统内核镜像文件。
不难发现,第二实施方式是与本实施方式相对应的方法实施方式,本实施方式可与第二实施方式互相配合实施。第二实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第二实施方式中。
本发明第六实施方式涉及一种多CPU系统。第六实施方式与第五实施方式基本相同,区别主要在于:多CPU系统中所包含的PCIe交换器的结构不同。
在第五实施方式中,多CPU系统包含顶层PCIe交换器和底层PCIe交换器,底层PCIe交换器与顶层PCIe交换器连接,从CPU与底层PCIe交换器相连接。也就是说,在第五实施方式中,多CPU系统中所包含的PCIe交换器的结构,为二级拓扑结构。
而在本实施方式中,多CPU系统中所包含的PCIe交换器的结构,为一级拓扑结构。也就是说,在本实施方式中,多CPU系统中包含一个PCIe交换器,PCIe交换器包含L个多播覆盖寄存器,L为与PCIe交换器连接的从CPU的个数(即L为多CPU系统中从CPU的总数),每个多播覆盖寄存器对应一个与PCIe交换器连接的从CPU。与第五实施方式类似,通过将多播组的PCIe多播地址空间映射到从CPU的内存BAR所在的PCI地址空间上,再将内存BAR所在的PCI地址空间,映射到从CPU的内存空间,实现启动文件的多播传输。
不难发现,第三实施方式是与本实施方式相对应的方法实施方式,本实施方式可与第三实施方式互相配合实施。第三实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第三实施方式中。
虽然通过参照本发明的某些优选实施方式,已经对本发明进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
Claims (10)
1.一种多CPU系统的启动方法,该多CPU系统包含:主控CPU、从CPU和PCIe交换器,其特征在于,多播组被预先设置,需要下载不同启动文件的从CPU对应不同的多播组,需要下载相同启动文件的从CPU,对应同一个多播组,每个所述多播组分配有PCIe多播地址空间;
在每次启动系统时,执行以下步骤:
对于每个所述多播组,主控CPU将该多播组所对应的从CPU需要下载的启动文件,拷贝至该多播组的PCIe多播地址空间中;
对于每个所述多播组,PCIe交换器将该多播组的PCIe多播地址空间中存放的启动文件,多播到该多播组所对应的各从CPU的内存空间中;
从CPU根据内存空间中存放的启动文件,进行启动。
2.根据权利要求1所述的多CPU系统的启动方法,其特征在于,所述PCIe交换器将启动文件多播到该多播组所对应的各从CPU的内存空间的步骤中,包含以下子步骤:
PCIe交换器将所述多播组的PCIe多播地址空间,映射到各从CPU的内存PCI基地址寄存器所在的PCI地址空间上;
各从CPU将经所述映射得到的PCI地址空间,再映射到本从CPU的内存空间。
3.根据权利要求1所述的多CPU系统的启动方法,其特征在于,所述PCIe交换器将启动文件多播到该多播组所对应的各从CPU的内存空间的步骤中,包含以下子步骤:
顶层PCIe交换器中配置有各所述多播组的PCIe多播地址空间,与所述顶层PCIe交换器连接的底层PCIe交换器中,配置有该底层PCIe交换器所需要的多播组的PCIe多播地址空间;其中,所述底层PCIe交换器所需要的多播组的PCIe多播地址空间,为与该底层PCIe交换器连接的从CPU所对应的多播组的PCIe多播地址空间;
所述底层PCIe交换器将配置的多播组的PCIe多播地址空间,映射到与该底层PCIe交换器连接的各从CPU的内存PCI基地址寄存器所在的PCI地址空间上;
各从CPU将经所述映射得到的PCI地址空间,再映射到本从CPU的内存空间。
4.根据权利要求1所述的多CPU系统的启动方法,其特征在于,在通过PCIe交换器将启动文件多播到多播组所对应的各从CPU的内存空间的步骤后,还包含以下步骤:
所述主控CPU设置启动标志位有效,每个所述多播组分别对应一个所述启动标志位;
在所述从CPU根据内存空间中存放的启动文件,进行启动之前,还包含以下步骤:
所述从CPU在完成初始化内存后,轮询检测启动标志位是否有效;
所述从CPU在检测到所述启动标志位有效时,再进入所述根据内存空间中存放的启动文件,进行启动的步骤。
5.根据权利要求4所述的多CPU系统的启动方法,其特征在于,所述主控CPU通过以下方式设置所述启动标志位有效:
所述主控CPU将各多播组的PCIe多播地址空间的前N个字节分别赋值为各多播组对应的启动标志位的有效值;
每个多播组的PCIe多播地址空间的前N个字节,通过PCIe交换器多播到该多播组所对应的各从CPU的内存空间的前N个字节;
所述从CPU轮询检测启动标志位是否有效时,检测本从CPU的内存空间的前N个字节。
6.一种多CPU系统,其特征在于,包含:主控CPU、从CPU和PCIe交换器;
所述主控CPU用于在每次启动系统时,对每个多播组,将该多播组所对应的从CPU需要下载的启动文件,拷贝至该多播组的PCIe多播地址空间中;其中,所述多播组被预先设置,需要下载不同启动文件的从CPU对应不同的多播组,需要下载相同启动文件的从CPU,对应同一个多播组,每个所述多播组分配有PCIe多播地址空间;
所述PCIe交换器用于对每个所述多播组,将该多播组的PCIe多播地址空间中存放的启动文件,多播到该多播组所对应的各从CPU的内存空间中;
所述从CPU用于根据内存空间中存放的启动文件,进行启动。
7.根据权利要求6所述的多CPU系统,其特征在于,所述多CPU系统包含一个所述PCIe交换器,所述多CPU系统中的所有从CPU连接在所述PCIe交换器上;
所述PCIe交换器包含L个多播覆盖寄存器,L为与所述PCIe交换器连接的从CPU的个数,每个所述多播覆盖寄存器对应一个从CPU;
所述多播覆盖寄存器用于将与本多播覆盖寄存器对应的从CPU所属的多播组的PCIe多播地址空间,映射到该从CPU的内存PCI基地址寄存器所在的PCI地址空间上;
每个所述从CPU还用于将经所述多播覆盖寄存器映射得到的PCI地址空间,再映射到本从CPU的内存空间。
8.根据权利要求6所述的多CPU系统,其特征在于,所述多CPU系统包含顶层PCIe交换器和底层PCIe交换器,底层PCIe交换器与所述顶层PCIe交换器连接,从CPU与底层PCIe交换器相连接;
所述顶层PCIe交换器中配置有各所述多播组的PCIe多播地址空间,所述底层PCIe交换器中配置有该底层PCIe交换器所需要的多播组的PCIe多播地址空间;其中,所述底层PCIe交换器所需要的多播组的PCIe多播地址空间,为与该底层PCIe交换器连接的从CPU所对应的多播组的PCIe多播地址空间;
所述底层PCIe交换器包含L个多播覆盖寄存器,L为与所述底层PCIe交换器连接的从CPU的个数,每个所述多播覆盖寄存器对应一个与所述底层PCIe交换器连接的从CPU;
所述多播覆盖寄存器用于将与本多播覆盖寄存器对应的从CPU所属的多播组的PCIe多播地址空间,映射到该从CPU的内存PCI基地址寄存器所在的PCI地址空间上;
每个所述从CPU还用于将经所述多播覆盖寄存器映射得到的PCI地址空间,再映射到本从CPU的内存空间。
9.根据权利要求6所述的多CPU系统,其特征在于,所述主控CPU还用于在所述PCIe交换器将启动文件多播到多播组所对应的各从CPU的内存空间后,设置启动标志位有效,每个所述多播组分别对应一个所述启动标志位;
所述从CPU还用于在完成初始化内存后,轮询检测启动标志位是否有效,并在检测到所述启动标志位有效时,根据内存空间中存放的启动文件,进行启动。
10.根据权利要求9所述的多CPU系统,其特征在于,所述主控CPU在设置所述启动标志位有效时,将各多播组的PCIe多播地址空间的前N个字节分别赋值为各多播组对应的启动标志位的有效值;
所述PCIe交换器还用于将每个多播组的PCIe多播地址空间的前N个字节,多播到该多播组所对应的各从CPU的内存空间的前N个字节;
每个所述从CPU还用于在轮询检测启动标志位是否有效时,检测本从CPU的内存空间的前N个字节。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010584649 CN102033768B (zh) | 2010-12-10 | 2010-12-10 | 多cpu系统的启动方法及多cpu系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010584649 CN102033768B (zh) | 2010-12-10 | 2010-12-10 | 多cpu系统的启动方法及多cpu系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102033768A CN102033768A (zh) | 2011-04-27 |
CN102033768B true CN102033768B (zh) | 2013-10-30 |
Family
ID=43886702
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010584649 Active CN102033768B (zh) | 2010-12-10 | 2010-12-10 | 多cpu系统的启动方法及多cpu系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102033768B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102262595B (zh) * | 2011-07-29 | 2014-04-02 | 航天恒星科技有限公司 | 一种微处理器扩展寻址方法 |
CN105335330A (zh) * | 2015-12-09 | 2016-02-17 | 浪潮电子信息产业股份有限公司 | 一种基于主从架构的微服务器集群系统 |
CN107562470B (zh) * | 2017-08-21 | 2021-05-18 | 联想(北京)有限公司 | 一种电子设备启动的优化方法及装置 |
CN111767082A (zh) * | 2019-04-02 | 2020-10-13 | 华为技术有限公司 | 计算芯片启动方法、装置和计算机系统 |
CN112241320B (zh) * | 2019-07-17 | 2023-11-10 | 华为技术有限公司 | 资源分配方法、存储设备和存储系统 |
CN113050976B (zh) * | 2019-12-28 | 2023-06-20 | 浙江宇视科技有限公司 | 基于PCIe总线的FPGA并行升级方法、装置、介质及电子设备 |
CN111880846B (zh) * | 2020-06-04 | 2023-12-15 | 普联国际有限公司 | 嵌入式系统快速启动方法、装置及设备 |
CN113630184A (zh) * | 2021-08-19 | 2021-11-09 | 北京华智信科技发展有限公司 | 一种光纤通信网络系统 |
CN116594953B (zh) * | 2023-07-18 | 2023-09-22 | 北京芯驰半导体科技有限公司 | 一种基于pcie互联的多核异构芯片、启动方法和系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7581038B1 (en) * | 2006-03-16 | 2009-08-25 | Polycom, Inc. | Multicast distribution over one or more addressable buses wherein a switch includes a remapping table for inputting address for one or more destinations |
CN101876911A (zh) * | 2009-11-04 | 2010-11-03 | 杭州海康威视数字技术股份有限公司 | 基于PCI/PCIe总线多CPU系统启动方法及模块 |
-
2010
- 2010-12-10 CN CN 201010584649 patent/CN102033768B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7581038B1 (en) * | 2006-03-16 | 2009-08-25 | Polycom, Inc. | Multicast distribution over one or more addressable buses wherein a switch includes a remapping table for inputting address for one or more destinations |
CN101876911A (zh) * | 2009-11-04 | 2010-11-03 | 杭州海康威视数字技术股份有限公司 | 基于PCI/PCIe总线多CPU系统启动方法及模块 |
Also Published As
Publication number | Publication date |
---|---|
CN102033768A (zh) | 2011-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102033768B (zh) | 多cpu系统的启动方法及多cpu系统 | |
US11513808B2 (en) | Automatic switching and deployment of software or firmware based USB4 connection managers | |
US10372464B2 (en) | Provisioning the hyper-converged infrastructure bare metal systems from the top of the rack switch | |
US8494833B2 (en) | Emulating a computer run time environment | |
US9135080B2 (en) | Dynamically assigning a portion of physical computing resource to logical partitions based on characteristics of executing logical partitions | |
CN102646045B (zh) | 多处理器系统及其并行启动方法 | |
US8918568B2 (en) | PCI express SR-IOV/MR-IOV virtual function clusters | |
CN101980490B (zh) | 虚拟交换机和物理交换机的链路建立方法及其装置 | |
US9531668B2 (en) | Micro server, method of allocating MAC address, and computer readable recording medium | |
US20070005932A1 (en) | Memory management in a multiprocessor system | |
US20080222338A1 (en) | Apparatus and method for sharing devices between multiple execution domains of a hardware platform | |
CN1694079A (zh) | 可配置的PCI Express开关 | |
JP2008541214A (ja) | 動的論理パーティショニングによるコンピューティング環境におけるコンピュータ・メモリの管理 | |
US20170300442A1 (en) | Hot plug method and device for byte addressable persistent memory | |
CN102316043B (zh) | 端口虚拟化方法、交换机及通信系统 | |
US20140280960A1 (en) | Methods and apparatus for dynamically allocating devices between multiple controllers | |
CN101216781B (zh) | 一种多处理器系统、装置及方法 | |
CN104615500A (zh) | 一种服务器计算资源动态分配的方法 | |
JP2023020861A (ja) | ファームウェアの更新 | |
US11803643B2 (en) | Boot code load system | |
CN116389542A (zh) | 具有可配置的池化资源的平台 | |
CN100365574C (zh) | 一种嵌入式芯片及其程序空间扩展的方法 | |
CN110968352A (zh) | 一种pcie设备的复位系统及服务器系统 | |
CN113312141B (zh) | 用于卸载串行端口模拟的计算机系统、存储介质和方法 | |
KR20190046470A (ko) | Arp를 수행하는 슬레이브 장치 및 이의 동작 방법 |
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 |