基于PCI/PCIe总线多CPU系统启动方法及模块技术方案

技术编号:4279349 阅读:472 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开一种基于PCI/PCIe总线多CPU系统启动方法及模块,涉及自动控制领域。所述方法:预先建立数据结构,并选定每条总线组长CPU,主CPU将数据结构加载到自身内存,并将自身内存映射到PCI空间;主CPU加载所述数据结构至各总线的组长CPU;各总线的组长CPU在接收到所述数据结构后,依据数据结构中本CPU的初始化信息启动初始化,并在初始化成功后通知主CPU更新本CPU的状态信息;各总线上,完成初始化的组长CPU在主CPU的控制下,加载数据结构至本总线上其它从CPU;至全部CPU均初始化成功,完成所述系统的启动。大大提高系统启动速度;不用增加新的硬件,节省了成本。

【技术实现步骤摘要】

本专利技术涉及自动控制领域,特别涉及一种基于PCI/PCIe总线多CPU系统启动方法 及模块。
技术介绍
PCI (外部设备互连总线)总线或PCIe (PCI Express,高速外部设备互连总线)上 可以连接好多设备,通常,在同一段总线内最多可接255个设备,每种设备最多只能有8个 功能,不同的PCI总线之间的互连通过PCI to PCI桥接芯片实现。因此每个设备都有BUS 号(总线号),DEV号(设备号),及FUNC号(功能号),一般而言,每个设备只有1个功能, 即只有FUNC0。目前,大型系统中常常会由几百甚至上千个CPU组成,如何让这些CPU全部尽快的 进入工作状态,大大关系到整个系统的性能。现有的启动方法依靠在主控CPU上启用多线 程的方法去初始化系统中的所有CPU,其中,主控CPU针对每个从CPU都启动一个线程,在各 个线程中下载启动对应从CPU初始化所必须的二进制文件。在实施本专利技术过程中,专利技术人发现现有技术中至少存在如下问题现有多线程启 动方法中,因为主控CPU的指令是一条一条顺序执行的,多线程在主控CPU上其实也是串行 的。也就是说,虽然在宏观上看起来是多个线程是并行的,但是在微观上看仍然是串行的。 因此这样仅靠主控CPU来承担整个系统的初始化任务会影响到整个系统的性能。
技术实现思路
为解决上述技术问题,本专利技术提供一种基于PCI/PCIe总线多CPU系统启动方法及 模块。本专利技术提供一种基于PCI/PCIe总线的多CPU系统启动方法,预先建立包括各从 CPU初始化信息、所在PCI空间的基址和PCI拓扑位置、及状态信息的数据结构,并在每条总 线上选定至少一个从CPU作为该总线的组长CPU,所述方法包括主CPU将数据结构加载到自身内存,并将自身内存映射到PCI空间;主CPU加载所述数据结构至各总线的组长CPU ;各总线的组长CPU在接收到所述 数据结构后,依据所述数据结构中本CPU的初始化信息启动初始化,并在初始化成功后通 知主CPU更新本CPU的状态信息;各总线上,完成初始化的组长CPU在主CPU的控制下,加载所述数据结构至本总线 上其它从CPU ;其它从CPU在接收到所述数据结构后,依据所述数据结构中本CPU的初始化 信息启动初始化,并在初始化成功后通知主CPU更新本CPU的状态信息;至全部CPU均初始 化成功,完成所述系统的启动。所述方法还包括主CPU初始化系统中其它从CPU,具体为主CPU查找数据结构中的状态信息,选出一个待初始化CPU,加载数据结构至该待初始化CPU ;该待初始化CPU在接收到所述数据结构后,依据所述数据结构中本CPU的初始 化信息启动初始化,并在初始化成功后通知主CPU更新本CPU的状态信息。其它从CPU在初始化成功后,还包括初始化成功的从CPU获取主CPU赋予其初始化其所在总线上其它从CPU的权利, 并在主CPU的控制下,按照组长CPU初始化其它从CPU的步骤初始化其所在总线上的其它 从 CPU。完成初始化的组长CPU或初始化成功的从CPU在主CPU的控制下,加载所述数据 结构至本总线上其它从CPU具体为完成初始化的组长CPU或初始化成功的从CPU作为请求CPU向主CPU发出请求,主 CPU查找所述数据结构,根据请求CPU的PCI空间的基址和PCI拓扑位置,选出该请求CPU 所在总线上的一个待初始化CPU,判断该待初始化CPU是否已经被其它CPU请求,是则重新 选择一个待初始化CPU再次执行上述判断步骤,否则将该待初始化CPU作为被请求CPU,赋 予该请求CPU初始化该被请求CPU的权利;请求CPU加载所述数据结构至被请求CPU后,继 续向主CPU发出请求。主CPU与各从CPU之间的通讯通过PCI内存读写及PCI中断实现,所述通讯格式 为共享缓冲格式,且保证主CPU与各从CPU的缓冲区不重叠。所述主CPU将自身内存映射到PCI空间具体为通过设置主CPU的用于映射到PCI 空间的寄存器中相关参数,将自身内存映射到PCI空间。在每条总线上选定设备号为0的从CPU作为该总线的组长CPU。本专利技术还提供了一种基于PCI/PCIe总线的多CPU系统启动模块,包括数据结构建立单元,用于建立包括各从CPU初始化信息、所在PCI空间的基址和 PCI拓扑位置、及状态信息的数据结构;组长CPU选定单元,用于在每条总线上选定至少一个从CPU作为该总线的组长 CPU ;主CPU初始化单元,用于主CPU将数据结构加载到自身内存,并将自身内存映射到 PCI空间;组长CPU初始化单元,用于主CPU加载所述数据结构至各总线的组长CPU ;各总线 的组长CPU在接收到所述数据结构后,依据所述数据结构中本CPU的初始化信息启动初始 化,并在初始化成功后通知主CPU更新本CPU的状态信息;其它从CPU初始化单元,用于各总线上,完成初始化的组长CPU在主CPU的控制 下,加载所述数据结构至本总线上其它从CPU ;其它从CPU在接收到所述数据结构后,依据 所述数据结构中本CPU的初始化信息启动初始化,并在初始化成功后通知主CPU更新本CPU 的状态信息;至全部CPU均初始化成功,完成所述系统的启动。所述其它从CPU初始化单元还包括主CPU选择初始化子单元,用于主CPU初始化 系统中其它从CPU,具体用于主CPU查找数据结构中的状态信息,选出一个待初始化CPU,加载数据结构至该待 初始化CPU ;该待初始化CPU在接收到所述数据结构后,依据所述数据结构中本CPU的初始 化信息启动初始化,并在初始化成功后通知主CPU更新本CPU的状态信息。所述其它从CPU初始化单元还包括赋权子单元,用于其它从CPU在初始化成功后,初始化成功的从CPU获取主CPU赋予其初始化其所在总线上其它从CPU的权利,并在主CPU 的控制下,按照组长CPU初始化其它从CPU的步骤初始化其所在总线上的其它从CPU。所述其它 从CPU初始化单元中,完成初始化的组长CPU或初始化成功的从CPU在 主CPU的控制下,加载所述数据结构至本总线上其它从CPU具体为完成初始化的组长CPU或初始化成功的从CPU作为请求CPU向主CPU发出请求,主 CPU查找所述数据结构,根据请求CPU的PCI空间的基址和PCI拓扑位置,选出该请求CPU 所在总线上的一个待初始化CPU,判断该待初始化CPU是否已经被其它CPU请求,是则重新 选择一个待初始化CPU再次执行上述判断步骤,否则将该待初始化CPU作为被请求CPU ;赋 予该请求CPU初始化该被请求CPU的权利;请求CPU加载所述数据结构至被请求CPU后,继 续向主CPU发出请求。主CPU与各从CPU之间的通讯通过PCI内存读写及PCI中断实现,所述通讯格式 为共享缓冲格式,且保证主CPU与各从CPU的缓冲区不重叠。所述主CPU初始化单元中,主CPU将自身内存映射到PCI空间具体为通过设置主 CPU的用于映射到PCI空间的寄存器中相关参数,将自身内存映射到PCI空间。所述组长CPU选定单元具体用于在每条总线上选定设备号为0的从CPU作为该总 线的组长CPU。本专利技术提供的一种基于PCI/PCIe总线多CPU系统启动方法及模块,有益效果是本专利技术运用主CPU、各组长CPU等多CPU并行工作的方式,充分发挥了多本文档来自技高网...

【技术保护点】
一种基于PCI/PCIe总线的多CPU系统启动方法,其特征在于,预先建立包括各从CPU初始化信息、所在PCI空间的基址和PCI拓扑位置、及状态信息的数据结构,并在每条总线上选定至少一个从CPU作为该总线的组长CPU,所述方法包括:主CPU将数据结构加载到自身内存,并将自身内存映射到PCI空间;主CPU加载所述数据结构至各总线的组长CPU;各总线的组长CPU在接收到所述数据结构后,依据所述数据结构中本CPU的初始化信息启动初始化,并在初始化成功后通知主CPU更新本CPU的状态信息;各总线上,完成初始化的组长CPU在主CPU的控制下,加载所述数据结构至本总线上其它从CPU;其它从CPU在接收到所述数据结构后,依据所述数据结构中本CPU的初始化信息启动初始化,并在初始化成功后通知主CPU更新本CPU的状态信息;至全部CPU均初始化成功,完成所述系统的启动。

【技术特征摘要】
CN 2009-11-4 200910209359.9一种基于PCI/PCIe总线的多CPU系统启动方法,其特征在于,预先建立包括各从CPU初始化信息、所在PCI空间的基址和PCI拓扑位置、及状态信息的数据结构,并在每条总线上选定至少一个从CPU作为该总线的组长CPU,所述方法包括主CPU将数据结构加载到自身内存,并将自身内存映射到PCI空间;主CPU加载所述数据结构至各总线的组长CPU;各总线的组长CPU在接收到所述数据结构后,依据所述数据结构中本CPU的初始化信息启动初始化,并在初始化成功后通知主CPU更新本CPU的状态信息;各总线上,完成初始化的组长CPU在主CPU的控制下,加载所述数据结构至本总线上其它从CPU;其它从CPU在接收到所述数据结构后,依据所述数据结构中本CPU的初始化信息启动初始化,并在初始化成功后通知主CPU更新本CPU的状态信息;至全部CPU均初始化成功,完成所述系统的启动。2.根据权利要求1所述的基于PCI/PCIe总线的多CPU系统启动方法,其特征在于,所 述方法还包括主CPU初始化系统中其它从CPU,具体为主CPU查找数据结构中的状态信息,选出一个待初始化CPU,加载数据结构至该待初始 化CPU ;该待初始化CPU在接收到所述数据结构后,依据所述数据结构中本CPU的初始化信 息启动初始化,并在初始化成功后通知主CPU更新本CPU的状态信息。3.根据权利要求2所述的基于PCI/PCIe总线的多CPU系统启动方法,其特征在于,其 它从CPU在初始化成功后,还包括初始化成功的从CPU获取主CPU赋予其初始化其所在总线上其它从CPU的权利,并 在主CPU的控制下,按照组长CPU初始化其它从CPU的步骤初始化其所在总线上的其它从 CPU。4.根据权利要求1、2或3所述的基于PCI/PCIe总线的多CPU系统启动方法,其特征在 于,完成初始化的组长CPU或初始化成功的从CPU在主CPU的控制下,加载所述数据结构至 本总线上其它从CPU具体为完成初始化的组长CPU或初始化成功的从CPU作为请求CPU向主CPU发出请求,主CPU 查找所述数据结构,根据请求CPU的PCI空间的基址和PCI拓扑位置,选出该请求CPU所在 总线上的一个待初始化CPU,判断该待初始化CPU是否已经被其它CPU请求,是则重新选择 一个待初始化CPU再次执行上述判断步骤,否则将该待初始化CPU作为被请求CPU,赋予该 请求CPU初始化该被请求CPU的权利;请求CPU加载所述数据结构至被请求CPU后,继续向 主CPU发出请求。5.根据权利要求1、2或3所述的基于PCI/PCIe总线的多CPU系统启动方法,其特征在 于,主CPU与各从CPU之间的通讯通过PCI内存读写及PCI中断实现,所述通讯格式为共享 缓冲格式,且保证主CPU与各从CPU的缓冲区不重叠。6.根据权利要求1、2或3所述的基于PCI/PCIe总线的多CPU系统启动方法,其特征在 于,所述主CPU将自身内存映射到PCI空间具体为通过设置主CPU的用于映射到PCI空间 的寄存器中相关参数,将自身内存映射到PCI空间。7.根据权利要求1、2或3所述的基于PCI/PCIe总线的多CPU系统启动方法,其特征在 于,在每条总线上选定设备号为0的从CPU作为该总线的组长CPU。8.一种基于PCI/PCIe总线的多CPU系统启动模块,其特征在于,包括数据结构建立单元,用于建立包括各从CP...

【专利技术属性】
技术研发人员:金伟赵先林胡扬忠邬伟琪
申请(专利权)人:杭州海康威视数字技术股份有限公司
类型:发明
国别省市:86[中国|杭州]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利