多cpu系统的启动方法及多cpu系统的制作方法

文档序号:6338307阅读:413来源:国知局
专利名称:多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,从CPUl和从CPU2因需要下载相同的启动 文件对于同一个多播组(如多播组1);从CPU3和从CPU4因需要下载的启动文件相同对于 另一个多播组(如多播组2)。多播组1和多播组2各自分配有相应的PCIe多播地址空间。 那么,在每次启动系统时,由主控CPU将从CPUl和从CPU2需要下载的启动文件拷贝至多播 组1的PCIe多播地址空间中;将从CPU3和从CPU4需要下载的启动文件拷贝至多播组2的 PCIe多播地址空间中。
接着,在步骤120中,利用PCIe交换器(PCIe Switch)将每个多播组的PCIe多播 地址空间中存放的启动文件,多播到该多播组所对应的各从CPU的内存空间中。由于PCIe Switch支持多播功能,因此可以通过PCIeSwitch,将多播组1的PCIe多播地址空间中存放 的启动文件,多播到从CPUl和从CPU2的内存空间中;将多播组2的PCIe多播地址空间中 存放的启动文件,多播到从CPU3和从CPU4的内存空间中。
接着,在步骤130中,各从CPU根据内存空间中存放的启动文件,进行启动。针对 上述案例,从CP Ul、从CPU2、从CPU3和从CPU4,各自根据内存空间中中存放的启动文件,进 行启动。
由于有在本实施方式中,通过使用PCIe多播功能下载从CPU所需的启动文件,由 于多播过程由硬件完成,因而整个多播过程不占用PCIe外部带宽和系统资源,而且数据传 输的速度非常快,既可以节约系统资源和PCIe带宽,又能加快从CPU的启动速度,启动文件 越多,从CPU数量越多,就越能体现本发明的优越性。
本发明第二实施方式涉及一种多CPU系统的启动方法。本实施方式在第一实施方 式的基础上,进行了细节上的补充说明。
具体地说,本实施方式中的CPU之间通过PCI e总线互联,从CPU作为PCIe设 备挂接在底层PCIe Switch(PCIe交换器)上。顶层PCIe SwitchO与主控CPU的Root Complex (PCIe 根联合体)相连,PCIe Switch 1、PCIe Switch m、PCIe Switch η 为底层 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系统中有三种6类型(Type 1,Type m, Type η)的从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所示,CPUl......CPU m-1为Type 1类型的从CPU,CPUm......CPU n-1 为 Type m 类型的从 CPU,CPU η......CPU N 为 Type η 类型的从 CPU。因此,需要设置3个多播组(MCG) =MCGO, MCG 1,MCG2。MCGO与Type η类型的从CPU对应; MCG 1与Type m类型的从CPU对应;MCG2与Typel类型的从CPU对应。MCGO,MCG 1,MCG2 的PCIe多播地址空间分配如图4所示,多播地址的基址设为OxFOOOOOOO,每个MCG的大小 为8M Byes,这三个多播组用来把待下载的三类启动文件多播到对应的从CPU内存中。
一般而言,从CPU启动的必要文件有两种ramdisk和ul mage。ramdisk是根文件 系统,ulmage是系统内核镜像。因此,将Type 1类型的从CPU启动文件命名为ramdisK_l, ulmage_l ;Type m类型的从CPU启动文件命名为ramdisK_m,ulmage_m ;Type η类型的从 CPU启动文件命名为ramdiSk_n,ulmage_n。下面对通过PCIe交换器将启动文件下载到对 应的从CPU上进行详细阐述。
ulmage文件的下载,是指主控CPU分别把ulmag_l、ulmage_m、ul mage_n内核文 件下载到从CPU(Type 1, Type m、Type η)对应的内存区域,如图5所示。
首先主控CPU配置PCIe多播寄存器(与PCIe Switch相关的寄存器)和内存PCI 基地址寄存器(BAR)。参考图2所示框图,所有PCIe Switch端口都要使能多播功能,最大 多播组数设为64个,多播基地址设为0XF0000000,每个多播组的大小都为8MBytes,BloCk 寄存器清零。这样,所有PCIe Switch端口都有相同的多播地址空间。
PCIe Switch 0各端口的receive (接收)寄存器要配置为接收MCGO、MCGl、MCG2 的数据,PCIe Switch 1配置为接收MCG2的数据,PCIe
Switch m配置为接收MCGl的数据,PCIe Switch η配置为接收MCGO的数据,这是 为了 Type 1类型的从CPU只接收来自MCG2的数据,Type m类型的从CPU只接收来自MCG 1的数据,Type η类型的从CPU只接收来自MCGO的数据。各底层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基址OxAOOOOOOO,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 η挂接的是Type η类型的从CPU,以CPU η为例,CPU η对应的下行端口 overlay基址设置为其内存BAR基址0x80000000,overlay 大小8MByes,内存BAR映射到CPU η存放ulmage的内存地址为0x02000000。
因此,主控CPU只需将文件ulmage」、ul mage m、ulmage_n分别拷贝到MCG2、 MCGU MCGO对应的多播空间,PCIe Switch就会把MCG2的数据多播到Type 1类型所有从 CPU的ulmage内存空间,把MCGl的数据多播到Type m类型所有从CPU的ulmage内存空 间,把MCGO的数据多播到Type η类型所有从CPU的ulmage内存空间,整个多播过程不占 用PCIe外部带宽和系统资源,而且数据传输的速度非常快,这样每个从CPU的ulmage内存 区域都很快的收到了对应的内核数据。
ramdisk 文件的下载,是指主控 CPU 分别把 ramdisk_l、ramdisk_m、ramdisk_n 根 文件系统下载到从CPU (Type 1,Type m、Type η)对应的内存区域,如图6所示。ramdisk 的下载原理与过程与ulmage的下载相同,下面只对其下载的不同之处进行说明
PCIe多播寄存器的配置,与上述ulmage文件下载中的PCIe多播寄存器的配置相 同,只是内存BAR映射的具体位置有些不同,Type UType m、Type η类型的从CPU内存BAR 映射到从CPU的内存区域分别为0x08800000、0x04800000、0x02800000,这些区域都用来存 放多播过来的ramdi sk数据。配置完成后,主控CPU把文件ramdi sK_l、ramdi sK_m、ramdi sk_ η分别拷贝到MCG2、MCG 1、MCGO对应的多播空间,PCIe Switch就会把MCG2、MCG UMCGO 中的ramdisk数据分别多播到Type UTypem, Type η类型所有从CPU对应的内存区域。
通过将多播组的PCIe多播地址空间映射到从CPU的内存BAR所在的PCI地址空 间上,再由内存BAR将映射得到的PCI地址空间,映射到从CPU的内存空间。实现简单,保 证了本发明方案的可行性。当然,若还有其它种类的启动文件也可以按照上述过程进行下 载。另外,下载文件前,从CPU的内存已初始化好,并且主控CPU可以访问从CPU的内存和 寄存器BAR。
本领域技术人员可以理解,系统上电后,各从CPU的Bootloader首先会初始化内 存,然后轮询检测启动标志位boot_Valid,该标志位一旦有效,Bootloader就会从对应的 内存处引导系统启动。主控CPU把启动文件多播到从CPU放置启动文件的内存区域后就会 设置标志位bootjalid,这样从CPU的Bootloader检测到该标志位有效,于是启动系统。 从CPU的启动流程如图7所示。
因此,在步骤301’后,即从CPU在完成内存初始化后,进入步骤302’,轮询检测启 动标志位boot_valid,如果检测到该启动标志位有效,则进入步骤303’,根据内存空间中 存放的启动文件,进行启动;如果未检测到该启动标志位有效,则继续轮询检测该启动标志 位。在步骤302后,即在主控CPU通过PCIe交换器将每个多播组的PCIe多播地址空间中 存放的启动文件,多播到该多播组所对应的各从CPU的内存空间中后,进入步骤303,将启 动标志位设置为有效值,每个多播组分别对应一个启动标志位。
在步骤303中,待所有的启动文件都下载到从CPU对应的内存区域后,主控CPU设置bootjalid标志位,如图8所示,主控CPU设置bootjalid标志位的操作也由PCIe多 播完成。
具体地说,先约定Type 1、Type m、Type η类型的从CPU的启动标志位分别为 boot_valid_l、boot_valid_m、boot_Valid_n,大小为四个字节,位于多播组和对应内存区 域的前四个字节,有效值分别为0xdeadbeed、0xdeadbeee、0xdeadbeef。
如同上述ulmage文件的下载原理与过程,PCIe多播寄存器的配置不变,Type 1、 Type m、Type η类型的从CPU内存BAR映射的内存区域分别为0x09000000,0x05000000, 0x03000000,这些区域的前四个字节用来存放bootjalid标志位。
配置完成后,主控CPU对MCG2、MCGl、MCGO的PCIe多播地址空间的前四个字节分 别赋值为0xdeadbeed、0xdeadbeee、0xdeadbeef,PCIe Switch会把这些标志位分别多播到 Type UType m、Type η类型所有从CPU对应的内存空间。
此时,Type 1类型的所有从CPU的Bootloader会轮询内存地址0x09000000处 的值,一旦其值为Oxdeadbeed,即检测到启动标志位有效,则进入步骤303,,从0x08000000 和0x08800000处加载内核和根文件系统,接着启动系统;Type m类型的所有从CPU的 Bootloader会轮询内存地址0x05000000处的值,一旦其值为Oxdeadbeee,即检测到启动 标志位有效,则进入步骤303,,从0x04000000和0x04800000处加载内核和根文件系统,接 着启动系统;Type m类型的所有从CPU的Bootloader会轮询内存地址0x03000000处的 值,一旦其值为Oxdeadbeef,即检测到启动标志位有效,则进入步骤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需要下载的情况),也可以是 本实施方式中的分组下载。bootjalid标志位可以在内存中,也可以在寄存器BAR中。
本发明第三实施方式涉及一种多CPU系统的启动方法。第三实施方式与第二实施 方式基本相同,区别主要在于PCIe Switch的拓扑结构不同。
在第二实施方式中,PCIe Switch为二级拓扑结构,顶层PCIe交换器中配置有各 多播组的PCIe多播地址空间,与顶层PCIe交换器连接的底层PCIe交换器中,配置有该底 层PCIe交换器所需要的多播组的PCIe多播地址空间。其中,底层PCIe交换器所需要的多播组的PCIe多播地址空间,为与该底层PCIe交换器连接的从CPU所对应的多播组的PCIe 多播地址空间。
然而在第三实施方式中,PCIe Switch为一级拓扑结构,如图9所示,CPUl......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,简 称“EEPR0M”)、磁盘、光盘、数字通用光盘(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。多播覆盖寄存器用于10将与本多播覆盖寄存器对应的从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的内存空间,实现启动文件的多播传输。
不难发现,第三实施方式是与本实施方式相对应的方法实施方式,本实施方式可 与第三实施方式互相配合实施。第三实施方式中提到的相关技术细节在本实施方式中依然 有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用 在第三实施方式中。
虽然通过参照本发明的某些优选实施方式,已经对本发明进行了图示和描述,但 本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本发 明的精神和范围。
权利要求
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的内存BAR所在的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个字节。
全文摘要
本发明涉及计算机技术领域,公开了一种多CPU系统的启动方法及多CPU系统。本发明中,为需要下载不同启动文件的从CPU,设置不同的多播组,需要下载相同启动文件的从CPU,对应同一个多播组,每个多播组分配有PCIe多播地址空间。主控CPU只需把待下载的文件拷贝到事先完成初始化的各多播组的PCIe多播地址空间,支持多播的PCIe交换器就可以自动地把启动文件多播到相应的从CPU的启动内存中。整个多播过程不占用PCIe外部带宽和系统资源,而且数据传输的速度非常快,既可以节约系统资源和PCIe带宽,又能加快从CPU的启动速度。
文档编号G06F9/445GK102033768SQ201010584649
公开日2011年4月27日 申请日期2010年12月10日 优先权日2010年12月10日
发明者栾焕志, 胡扬忠, 赵先林, 邬伟琪, 黄毅 申请人:杭州海康威视数字技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1