CN102033768B - 多cpu系统的启动方法及多cpu系统 - Google Patents

多cpu系统的启动方法及多cpu系统 Download PDF

Info

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
Application number
CN 201010584649
Other languages
English (en)
Other versions
CN102033768A (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.)
Hangzhou Hikvision Digital Technology Co Ltd
Original Assignee
Hangzhou Hikvision Digital 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 Hangzhou Hikvision Digital Technology Co Ltd filed Critical Hangzhou Hikvision Digital Technology Co Ltd
Priority to CN 201010584649 priority Critical patent/CN102033768B/zh
Publication of CN102033768A publication Critical patent/CN102033768A/zh
Application granted granted Critical
Publication of CN102033768B publication Critical patent/CN102033768B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明涉及计算机技术领域,公开了一种多CPU系统的启动方法及多CPU系统。本发明中,为需要下载不同启动文件的从CPU,设置不同的多播组,需要下载相同启动文件的从CPU,对应同一个多播组,每个多播组分配有PCIe多播地址空间。主控CPU只需把待下载的文件拷贝到事先完成初始化的各多播组的PCIe多播地址空间,支持多播的PCIe交换器就可以自动地把启动文件多播到相应的从CPU的启动内存中。整个多播过程不占用PCIe外部带宽和系统资源,而且数据传输的速度非常快,既可以节约系统资源和PCIe带宽,又能加快从CPU的启动速度。

Description

多CPU系统的启动方法及多CPU系统
技术领域
本发明涉及计算机技术领域,特别涉及多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个字节。
CN 201010584649 2010-12-10 2010-12-10 多cpu系统的启动方法及多cpu系统 Active CN102033768B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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系统启动方法及模块

Patent Citations (2)

* Cited by examiner, † Cited by third party
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