用于多硬件平台的飞腾服务器的机器类型识别方法

文档序号:6367547阅读:394来源:国知局
专利名称:用于多硬件平台的飞腾服务器的机器类型识别方法
技术领域
本发明涉及飞腾服务器的虚拟化技术领域,具体涉及ー种用于多硬件平台的飞腾服务器的机器类型识别方法。
背景技术
飞腾服务器(FT服务器)是由中国人民解放军国防科学技术大学研制的、基于FT1000处理器的服务器计算机平台,其中FT1000处理器是国防科大研制、兼容spare指令集的通用64位处理器。目前的飞腾服务器包含多种硬件平台类型,例如nanga平台、meili平台以及nc平台等,Nanga平台、meili平台和nc平台都是基于FT1000处理器的飞腾计算机,由于现有的硬件厂商和接ロ不同等原因,其外围设备并不完全相同。各硬件平台所使用的PCIe交换单元不完全相同(如nanga平台PCIe交换单元采用PEX8664实现,meili平台PCIe交换单元采用PEX8648实现,nc平台PCIe交换单元采用PEX8632实现)、其外围设备如实时时钟(RTC)芯片和监控芯片等不相同。由于飞腾服务器各平台的硬件配置不完全相同,不同的硬件配置所需的驱动软件不一样,因此导致在不同的飞腾服务器平台上部署不同的操作系统,因此在将飞腾服务器进行虚拟化时,就会受到特定硬件平台的约束,不能实现多种硬件平台之间的相互兼容,给用户带来了不便,不利于飞腾服务器的应用推广。

发明内容
本发明要解决的技术问题是提供一种兼容性好、使用方便、操作简单的用于多硬件平台的飞腾服务器的机器类型识别方法。为了解决上述技术问题,本发明采用的技术方案为
一种用于多硬件平台的飞腾服务器的机器类型识别方法,其实施步骤如下
1)在计算机的扩展ROM中建立用于存储硬件平台类型信息的平台信息字段地址,虚拟机监控器将所述平台信息字段地址的读写接ロ函数进行封装并提供给操作系统内核调用;
2)在操作系统启动过程中,首先获取操作系统接收的引导装入程序命令并分析引导装入程序命令中的硬件平台參数,如果引导装入程序命令中包含硬件平台參数则将所述硬件平台參数对应的硬件平台类型信息通过所述平台信息字段地址读写接ロ函数写入所述扩展ROM中的平台信息字段地址中;
3)通过所述平台信息字段地址读写接ロ函数读取所述硬件平台字段地址中的硬件平台类型信息,根据所述硬件平台类型信息识别当前飞腾虚拟服务器的硬件平台。作为本发明上述技术方案的进ー步改进
所述步骤I)中虚拟机监控器将所述平台信息字段地址的读写接ロ函数进行封装并提供给操作系统内核调用的详细步骤如下 A)虚拟机监控器将平台信息字段地址的读写接ロ函数封装并提供给操作系统;B)操作系统将所述步骤A)中封装好的读写接ロ函数进ー步封装并提供给操作系统的内核子模块;
C)操作系统的内核子模块将所述步骤B)中封装好的读写接ロ函数进ー步封装得到所述平台信息字段地址读写接ロ函数。所述虚拟机监控器将0xFFF(F00000到OxFFFlOOOOOO的地址范围映射为计算机的扩展ROM地址,且所述平台信息字段地址占用所述扩展ROM映射地址范围的第17个字节 第20个字节。所述步骤2)的详细步骤为
I )预设ー组硬件平台參数数组,所述硬件平台參数数组的每ー项包括字符类型的硬件平台參数和对应的整数值;
II)在操作系统启动过程中读取引导装入程序命令中的硬件平台參数;
III)将读取的硬件平台參数与硬件平台參数数组中字符类型的硬件平台參数进行逐一比较,如果找到匹配的硬件平台參数,则将匹配的硬件平台參数对应的整数值通过所述平台信息字段地址读写接ロ函数写入所述扩展ROM中的平台信息字段地址中。本发明具有下述优点
I、本发明在扩展ROM设置用于存储硬件平台类型信息的平台信息字段地址,通过引导装入程序命令带入硬件平台參数的形式来实现对平台信息字段地址的配置或者修改,并在系统启动过程中读取扩展ROM中的值来判断机器类型,实现了对多种硬件平台飞腾服务器的机器类型识别的支持,可以在不同硬件平台的飞腾虚拟服务器上部署同一套系统,具有兼容性好,使用方便、操作简单的优点,有利于飞腾服务器的推广。2、本发明在计算机的扩展ROM中建立用于存储硬件平台类型信息的平台信息字段地址,虚拟机监控器将平台信息字段地址的读写接ロ函数进行封装并提供给操作系统内核调用,因此通过虚拟机监控器操作扩展ROM的物理地址,并提供了读写该地址的读写接ロ函数并由操作系统对其进行封装再提供给其他子模块使用,保证了虚拟机的安全性和健壮性。


图I为本发明实施例的基本流程示意图。图2为本发明实施例的硬件框架结构示意图。图3为本发明实施例扩展ROM的地址空间分布示意图。
具体实施例方式如图I所示,本实施例用于多硬件平台的飞腾服务器的机器类型识别方法的实施步骤如下
1)在计算机的扩展ROM(bootoom)中设置用于存储硬件平台类型信息的平台信息字段地址(ft_type),虚拟机监控器(hypervisor)将平台信息字段地址(ft_type)的读写接ロ函数进行封装并提供给操作系统内核调用;
2)在操作系统启动过程中,首先获取操作系统接收的引导装入程序(silo)命令井分析silo命令中的硬件平台參数(ft_type參数),如果silo命令中包含硬件平台參数则将硬件平台參数对应的硬件平台类型信息通过平台信息字段地址读写接ロ函数写入bootoom中的平台信息字段地址中;
3)通过平台信息字段地址读写接ロ函数读取硬件平台字段地址中的硬件平台类型信息,根据所述硬件平台类型信息识别当前飞腾虚拟服务器的硬件平台。如图2所示,bootrom存储在flash存储器中,flash存储器具有可擦写,并断电保留数据的特点,本实施例能够实现对ft_type參数的读写,Bootrom在启动时被映射为飞腾服务器CPU物理地址空间内,不同的硬件平台中飞腾服务器CPU分别与不同的PCIe交換単元相连,不同的硬件平台中PCIe交换单元所连接的外围设备、关机控制器也各不相同。飞腾虚拟服务器通过hypervisor管理系统物理资源并为操作系统提供系统服务,本实施例通过hypervisor直接控制读写平台信息字段地址并提供接ロ函数给操作系统,能够提高虚拟机的安全性和健壮性。
本实施例步骤I)中虚拟机监控器将平台信息字段地址的读写接ロ函数进行封装并提供给操作系统内核调用的详细步骤如下
A)hypervisor将平台信息字段地址的读写接ロ函数封装并提供给操作系统;
B)操作系统将步骤A)中封装好的读写接ロ函数进ー步封装并提供给操作系统的内核子模块。C)操作系统的内核子模块将步骤B)中封装好的读写接ロ函数进ー步封装得到平台信息字段地址读写接ロ函数。本实施例中,步骤A)中虚拟机监控器将平台信息字段地址的读写接ロ函数封装为 extern int sun4v_ilash_rw(unsigned long command,
unsigned long address, unsigned long size, unsigned long buffer)。步骤B)中操作系统进ー步将平台信息字段地址的读写接ロ函数封装为 u32 bootrom_read (mt reg);
int bootrom_write ui32 data, int regノ。步骤C)中内核子模块进一步将平台信息字段地址的读写接ロ函数封装为bootrom_read 和 bootrom_write 函数
u32 bootrom_reaa_tt_type (,void);
int bootrom_write_tt_type(struct ft_bootrom 氺bootrom)。silo命令通过命令行的形式负责加载内核映像,并将控制权传递给内核映像,本实施例的操作系统内核可以接收到来自Silo命令行參数并对其进行解析,在系统第一次安装或者需要修改硬件平台类型信息时,则可以通过Silo命令传递ft_type參数,操作系统将ft_type參数对应的值写入bootrom对应的地址空间。在实际的操作系统启动过程中,对bootrom的操作分为两种情况第一,系统接收到来自silo命令传递的ft_type參数;第ニ,系统没有接收到来自silo命令传递的ft_type參数;对于第一种情况,在获取机器类型的子模块中,操作系统内核通过bootrom_write_ft_type将ft_type的值写到bootrom中,然后内核通过bootrom_read_ft_type读出ft_type的值,即得到硬件平台类型信息的值, 该情况一般发生在第一次安装系统或者需要更改硬件平台类型信息时;对于第二种情況,在获取机器类型子模块中,操作系统内核通过bootrom_read_ft_type读出ft_type的值,即得到硬件平台类型信息的值。本实施例实现机器类型识别的功能,除了硬件基础外,还要有软件支持,特别是操作系统的软件支持。Hypervisor将操作bootrom的物理地址,并提供给操作系统读取该地址段的接ロ函数,操作系统将机器类型保存到该空间。如图3所示,本实施例中虚拟机监控器将OxFFF(M)OOOO到OxFFFlOOOOOO的地址范围映射为计算机的bootrom地址,且所述平台信息字段地址占用bootrom映射地址范围的第17个字节 第20个字节。Bootrom的映射地址范围中,前6个字节留给MAC地址使用,然后保留10个字节,接下来的4个字节(第17个字节 第20个字节)即为平台信息字段地址(ft_type),用来保存硬件平台类型信息的值。因此,操作系统将硬件结构的bootrom用软件结构struct ft_bootrom表ホ
struct tt_b°°trom { uint8_t mac[6]; uint8_t reserved_0[10]; uint32_t ft_type;uint8_t reserved_l[12];
し本实施例步骤2)的详细步骤为
I)预设ー组硬件平台參数数组,硬件平台參数数组的每ー项包括字符类型的硬件平台參数和对应的整数值;
II)在操作系统启动过程中读取silo命令中的硬件平台參数;
III)将读取的硬件平台參数与硬件平台參数数组中字符类型的硬件平台參数进行逐一比较,如果找到匹配的硬件平台參数,则将匹配的硬件平台參数对应的整数值通过平台信息字段地址读写接ロ函数写入bootrom中的平台信息字段地址中。本实施例中,硬件平台參数数组(machine_ft)的结构如下 static char *machine_ft[] = {
[FT_UNKN0WN]"unknown",
[FT_NANGA2WAY]〃nanga2way",
[FT_NANGA1WAY]〃nangalway",
[FT_MEILI]"meili",
[FT_NC]"nc",
[FT_706ZJ]"zj_706",
[FT_32ZJ]"zj_32",
[FT_END]NULL
し其中,左侧的[FT_UNKN0WN]、[FT_NANGA2WAY]、[FT_NANGA1WAY]、[FT_MEILI]、[FT_NC]、[FT_706ZJ]、[FT_32ZJ]、[FT_END]均对应为各个硬件平台对应的整数值,其右侧对应的字符串则为操作系统可接受silo命令中的硬件平台參数。步骤3)中则根据读取的硬件平台类型信息来识别当前飞腾虚拟服务器的硬件平台,如果读取的硬件平台类型信息为[FT_MEILI]对应的整数值,则当前飞腾虚拟服务器的硬件平台为meili平台,如果读取的硬件平台类型信息为[FT_NC]对应的整数值,则当前飞腾虚拟服务器的硬件平台为nc平台,以此类推。本实施例通过hypervisor操作bootrom的物理地址,并提供了读写该地址的接ロ函数,作系统对其进行封装,再提供给其他内核子模块使用,限制用户空间对其访问,保证其安全性和健壮性。本实施例通过silo命令传递參数的方式来修改bootrom中机器类型的值,并在系统启动过程中读取bootrom中的值来判断机器类型,判断方式简单方便。例如meili平台通过silo命令行传參数ft_type=meili ;nc平台通过silo命令行传參数ft_type=nc ;内核将得到的字符串“meili”或者“nc”与对应的整型值相匹配,并将相应的整型值通过bootrom_write_ft_type写入到bootrom对应的地址空间,从而保存了 ft_type的值。内核再读取bootrom中ft_type的值,从而得到机器类型。本发明只需要在系统安装 或者修改bootrom中机器类型的值时,传递命令行參数,修改bootrom中的值。实现了对多种硬件平台飞腾服务器的机器类型识别的支持,可以在不同硬件平台的飞腾服务器上部署同一套系统,具有兼容性好,使用方便、操作简单的优点,有利于飞腾服务器的推广。本实施例分别通过安装有银河麒麟飞腾版操作系统的基于nanga平台(nangalway)、meili平台、nc平台三种硬件平台的飞腾服务器进行验证,验证结果发现操作系统能够有效识别不同的硬件平台类型,并能够根据识别出来的硬件平台加载不同的驱动程序和控制程序,成功地实现了银河麒麟飞腾版操作系统的正确启动。以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
权利要求
1.一种用于多硬件平台的飞腾服务器的机器类型识别方法,其特征在于其实施步骤如下 1)在计算机的扩展ROM中建立用于存储硬件平台类型信息的平台信息字段地址,虚拟机监控器将所述平台信息字段地址的读写接口函数进行封装并提供给操作系统内核调用; 2)在操作系统启动过程中,首先获取操作系统接收的引导装入程序命令并分析引导装入程序命令中的硬件平台参数,如果引导装入程序命令中包含硬件平台参数则将所述硬件平台参数对应的硬件平台类型信息通过所述平台信息字段地址读写接口函数写入所述扩展ROM中的平台信息字段地址中; 3)通过所述平台信息字段地址读写接口函数读取所述硬件平台字段地址中的硬件平台类型信息,根据所述硬件平台类型信息识别当前飞腾虚拟服务器的硬件平台。
2.根据权利要求I所述的用于多硬件平台的飞腾服务器的机器类型识别方法,其特征在于,所述步骤I)中虚拟机监控器将所述平台信息字段地址的读写接口函数进行封装并提供给操作系统内核调用的详细步骤如下 A)虚拟机监控器将平台信息字段地址的读写接口函数封装并提供给操作系统; B)操作系统将所述步骤A)中封装好的读写接口函数进一步封装并提供给操作系统的内核子模块; C)操作系统的内核子模块将所述步骤B)中封装好的读写接口函数进一步封装得到所述平台信息字段地址读写接口函数。
3.根据权利要求I所述的用于多硬件平台的飞腾服务器的机器类型识别方法,其特征在于所述虚拟机监控器将OxFFFiFOOOOO到OxFFFlOOOOOO的地址范围映射为计算机的扩展ROM地址,且所述平台信息字段地址占用所述扩展ROM映射地址范围的第17个字节 第20个字节。
4.根据权利要求I或2或3所述的用于多硬件平台的飞腾服务器的机器类型识别方法,其特征在于所述步骤2)的详细步骤为 I )预设一组硬件平台参数数组,所述硬件平台参数数组的每一项包括字符类型的硬件平台参数和对应的整数值; II)在操作系统启动过程中读取引导装入程序命令中的硬件平台参数; III)将读取的硬件平台参数与硬件平台参数数组中字符类型的硬件平台参数进行逐一 比较,如果找到匹配的硬件平台参数,则将匹配的硬件平台参数对应的整数值通过所述平台信息字段地址读写接口函数写入所述扩展ROM中的平台信息字段地址中。
全文摘要
本发明公开了一种用于多硬件平台的飞腾服务器的机器类型识别方法,其实施步骤如下1)在计算机的扩展ROM中建立平台信息字段地址,虚拟机监控器将平台信息字段地址的读写接口函数进行封装并提供给操作系统内核调用;2)在操作系统启动过程中,首先获取操作系统接收的引导装入程序命令并分析引导装入程序命令的硬件平台参数,如果包含硬件平台参数则将硬件平台参数对应的硬件平台类型信息写入扩展ROM中的平台信息字段地址中;3)通过平台信息字段地址读写接口函数读取硬件平台字段地址中的硬件平台类型信息,根据硬件平台类型信息识别飞腾虚拟服务器的硬件平台。本发明具有兼容性好、使用方便、操作简单的优点。
文档编号G06F13/10GK102662883SQ201210095029
公开日2012年9月12日 申请日期2012年3月31日 优先权日2012年3月31日
发明者何易泽, 孔金珠, 张卫华, 董攀, 薛晋泽, 赵江涛, 赵自成, 邵立松 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1