図面 (/)

技術 情報処理装置、ブート方法及びブートプログラム

出願人 富士通株式会社
発明者 橘正純
出願日 2018年8月7日 (1年10ヶ月経過) 出願番号 2018-148530
公開日 2020年2月13日 (4ヶ月経過) 公開番号 2020-024557
状態 未査定
技術分野 ストアードプログラム
主要キーワード オンボードデバイス FCカード デバイスパス FFFF番地 不足判定 拡張基板 ROMプログラム 災害対策
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2020年2月13日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (13)

課題

レガシーブートにおいてMMIO−Lが割り当てられるPCIデバイスの数を減らし、MMIO−L不足の発生を抑えること。

解決手段

前処理部47が、MMIO−Lを割り当てるルートポートを特定し、特定したルートポートの配下のPCIデバイスにMMIO−Lを割り当てる設定を行う。そして、PCI初期化部43が、前処理部47により特定されたルートポートの配下のPCIデバイスへMMIO−Lを割り当て、他のルートポートの配下のPCIデバイスへMMIO−Hを割り当てる。そして、中間処理部48が、MMIO−L不足か否かを判定し、MMIO−L不足でない場合には、ブート処理部45にブート処理を依頼する。そして、ブート処理部45がOSブートを行う。

概要

背景

近年、UEFI(Unified Extensible Firmware Interface)モードでのOS(Operating System)起動であるUEFIブート(UEFI Boot)への移行が進みつつある。ただし、旧ソフトウェア資産等の要件で、現在も旧BIOS(Basic Input/Output System)モードでのOS起動であるレガシーブート(Legacy Boot)が用いられることがある。

BIOSはレガシーブートとUEFIブートの2つの起動モードを持つが、通常はUEFIブートが有効であり、設定によってレガシーブートが有効になる。レガシーブートでは、過去のハードウェアとの互換性から、BIOSは32ビットアドレス空間(0番地〜0xFFFFFFFF番地の4GB(ギガバイト))しかアクセスできない。ただし、OS起動後は64ビットのアドレス空間へのアクセスが可能となる。

レガシーブートでPCI(Peripheral Component Interconnect)デバイスからOSを起動するためには、BIOSは、
(1)PCIデバイスが要求するMMIO(Memory Mapped IO)をアドレス空間に割り当て、
(2)PCIデバイス内に格納されているレガシーブート用のオプションROM(Read Only Memory)プログラムを実行する
ことが必要である。ここで、MMIOは、デバイスのIOをデバイスに割り当てられたメモリアドレスを用いて行うことである。また、オプションROMプログラムは、OSをデバイスから読み込むドライバである。

BIOSが管理するアドレス空間のうち、MMIOを32ビットのアドレス空間に割り当てるための領域はMMIO−L(Low)と表される。また、MMIOを64ビットのアドレス空間に割り当てるための領域はMMIO−H(High)と表される。BIOSはPCIデバイスが要求するMMIOをMMIO−L又はMMIO−Hに割り当てなければならないが、レガシーブート用のオプションROMプログラムの実行はOS起動前であるため、BIOSは32ビットのアドレス空間までしかアクセスできない。したがって、BIOSは、レガシーブート用のPCIデバイスが要求するMMIOをMMIO−Lに割り当てる必要がある。

図12は、BIOSが管理するアドレス空間を示す図である。図12に示すように、32ビットのアドレス空間は、DRAM(Dynamic Random Access Memory)−L、コンフィグレーション空間、MMIO−L、BIOS ROMイメージチップセット領域、SMM(System Management Mode)領域として使われる。このため、MMIO−Lとして使用できるサイズは1.5GB程度である。

一方、近年のPCIデバイスには、32MB(メガバイト)、64MB等のMMIOを要求するものがあり、MMIO−Lが不足する場合がある。MMIO−Lが割り当てられなかったPCIデバイスは、OS起動後も使用不可となる。レガシーブート用のPCIデバイスにはMMIO−Lを割り当て、レガシーブート用でないPCIデバイスにはMMIO−Hを割り当てることが可能であるが、PCIでは、ルートポート(Root Port)単位でMMIO−LかMMIO−Hが割り当てられる必要がある。ここで、ルートポートとは、PCIバスによる複数のデバイのス接続においてルートとなるポートである。サーバシステムは、複数のルートポートを有する。1つのルートポートにMMIO−LのPCIデバイスとMMIO−HのPCIデバイスを混在させることはできない。

なお、BIOSに関する従来技術として、従来の2倍のプログラムサイズを持つシステムBIOSを利用できるようにする技術がある。この技術では、システムBIOSを構成するIRTルーチンとBIOSドライバ群はBIOS ROMの異なる64Kバイトブロックに別個に格納される。そして、OSの起動前はIRTルーチンがメモリアドレス空間のF0000〜FFFFFに割り当てられ、OSの起動後はそこにBIOSドライバ群が割り当てられる。

また、3つのスロットに装着される拡張基板占有するアドレス空間の大きさを認識し、認識結果に基づいて、コンピュータのアドレスと、3つのスロットのいずれかを選択するためのスロット選択信号との対応関係マッピングテーブルに設定する技術がある。この技術によれば、拡張基板が占有するアドレス空間を適応的に割り当てることができる。

概要

レガシーブートにおいてMMIO−Lが割り当てられるPCIデバイスの数を減らし、MMIO−L不足の発生を抑えること。前処理部47が、MMIO−Lを割り当てるルートポートを特定し、特定したルートポートの配下のPCIデバイスにMMIO−Lを割り当てる設定を行う。そして、PCI初期化部43が、前処理部47により特定されたルートポートの配下のPCIデバイスへMMIO−Lを割り当て、他のルートポートの配下のPCIデバイスへMMIO−Hを割り当てる。そして、中間処理部48が、MMIO−L不足か否かを判定し、MMIO−L不足でない場合には、ブート処理部45にブート処理を依頼する。そして、ブート処理部45がOSブートを行う。

目的

本発明は、1つの側面では、各ルートポートにレガシーブート用のデバイスが配置される冗長構成のサーバシステムにおいて、MMIO−L不足の発生を抑えることを目的とする

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

(分野番号表示ON)※整理標準化データをもとに当社作成

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

オペレーティングシステム(OS)がレガシーブートされるブートデバイスを含む複数のデバイスバス接続のルートであるルートポートを複数有する情報処理装置において、複数のブートデバイスの中の1つのブートデバイス及び該1つのブートデバイスが接続された1つのルートポートを特定する特定部と、メモリマップ入出力に用いられるメモリアドレスとして、前記特定部が特定した1つのルートポートに接続するデバイスにレガシーブート中に使用可能なビット幅のメモリアドレスを割り当てる割当部と、前記特定部が特定したルートポートに接続する全デバイスに前記割当部によりメモリアドレスが割り当てられたか否かを判定する第1判定部と、前記第1判定部が前記全デバイスにメモリアドレスが割り当てられたと判定した場合に、前記特定部が特定したブートデバイスからOSをレガシーブートするブート部とを有することを特徴とする情報処理装置。

請求項2

前記ブート部がOSのレガシーブートに失敗した場合に、前記複数のブートデバイスの中の他のブートデバイスについて、前記特定部、前記割当部、前記第1判定部及び前記ブート部の処理を行うことを特徴とする請求項1に記載の情報処理装置。

請求項3

当該情報処理装置の電源投入された場合に当該情報処理装置が有する全てのデバイスに前記ビット幅のメモリアドレスが割り当てられたか否かを判定する第2判定部をさらに有し、前記特定部は、前記第2判定部が前記ビット幅のメモリアドレスが割り当てられなかったデバイスがあると判定した場合に、前記1つのルートポートを特定することを特徴とする請求項1又は2に記載の情報処理装置。

請求項4

ルートポートの情報を含めてブートデバイスを定義する情報及びブートデバイスの優先順位を示す情報を含むブート管理情報を記憶する記憶部をさらに有し、前記特定部は、前記ブート管理情報に基づいて前記1つのルートポートを特定することを特徴とする請求項1、2又は3に記載の情報処理装置。

請求項5

前記デバイスは、PCIデバイスであることを特徴とする請求項1〜4のいずれか1つに記載の情報処理装置。

請求項6

オペレーティングシステム(OS)がレガシーブートされるブートデバイスを含む複数のデバイスのバス接続のルートであるルートポートを複数有する情報処理装置によるブート方法において、複数のブートデバイスの中の1つのブートデバイス及び該1つのブートデバイスが接続された1つのルートポートを特定し、メモリマップ入出力に用いられるメモリアドレスとして、特定した1つのルートポートに接続するデバイスにレガシーブート中に使用可能なビット幅のメモリアドレスを割り当て、特定したルートポートに接続する全デバイスにメモリアドレスが割り当てられたか否かを判定し、前記全デバイスにメモリアドレスが割り当てられたと判定した場合に、特定したブートデバイスからOSをレガシーブートすることを特徴とするブート方法。

請求項7

オペレーティングシステム(OS)がレガシーブートされるブートデバイスを含む複数のデバイスのバス接続のルートであるルートポートを複数有する情報処理装置で実行されるブートプログラムにおいて、複数のブートデバイスの中の1つのブートデバイス及び該1つのブートデバイスが接続された1つのルートポートを特定し、メモリマップ入出力に用いられるメモリアドレスとして、特定した1つのルートポートに接続するデバイスにレガシーブート中に使用可能なビット幅のメモリアドレスを割り当て、特定したルートポートに接続する全デバイスにメモリアドレスが割り当てられたか否かを判定し、前記全デバイスにメモリアドレスが割り当てられたと判定した場合に、特定したブートデバイスからOSをレガシーブートする処理を前記情報処理装置に実行させることを特徴とするブートプログラム。

技術分野

0001

本発明は、情報処理装置ブート方法及びブートプログラムに関する。

背景技術

0002

近年、UEFI(Unified Extensible Firmware Interface)モードでのOS(Operating System)起動であるUEFIブート(UEFI Boot)への移行が進みつつある。ただし、旧ソフトウェア資産等の要件で、現在も旧BIOS(Basic Input/Output System)モードでのOS起動であるレガシーブート(Legacy Boot)が用いられることがある。

0003

BIOSはレガシーブートとUEFIブートの2つの起動モードを持つが、通常はUEFIブートが有効であり、設定によってレガシーブートが有効になる。レガシーブートでは、過去のハードウェアとの互換性から、BIOSは32ビットアドレス空間(0番地〜0xFFFFFFFF番地の4GB(ギガバイト))しかアクセスできない。ただし、OS起動後は64ビットのアドレス空間へのアクセスが可能となる。

0004

レガシーブートでPCI(Peripheral Component Interconnect)デバイスからOSを起動するためには、BIOSは、
(1)PCIデバイスが要求するMMIO(Memory Mapped IO)をアドレス空間に割り当て、
(2)PCIデバイス内に格納されているレガシーブート用のオプションROM(Read Only Memory)プログラムを実行する
ことが必要である。ここで、MMIOは、デバイスのIOをデバイスに割り当てられたメモリアドレスを用いて行うことである。また、オプションROMプログラムは、OSをデバイスから読み込むドライバである。

0005

BIOSが管理するアドレス空間のうち、MMIOを32ビットのアドレス空間に割り当てるための領域はMMIO−L(Low)と表される。また、MMIOを64ビットのアドレス空間に割り当てるための領域はMMIO−H(High)と表される。BIOSはPCIデバイスが要求するMMIOをMMIO−L又はMMIO−Hに割り当てなければならないが、レガシーブート用のオプションROMプログラムの実行はOS起動前であるため、BIOSは32ビットのアドレス空間までしかアクセスできない。したがって、BIOSは、レガシーブート用のPCIデバイスが要求するMMIOをMMIO−Lに割り当てる必要がある。

0006

図12は、BIOSが管理するアドレス空間を示す図である。図12に示すように、32ビットのアドレス空間は、DRAM(Dynamic Random Access Memory)−L、コンフィグレーション空間、MMIO−L、BIOS ROMイメージチップセット領域、SMM(System Management Mode)領域として使われる。このため、MMIO−Lとして使用できるサイズは1.5GB程度である。

0007

一方、近年のPCIデバイスには、32MB(メガバイト)、64MB等のMMIOを要求するものがあり、MMIO−Lが不足する場合がある。MMIO−Lが割り当てられなかったPCIデバイスは、OS起動後も使用不可となる。レガシーブート用のPCIデバイスにはMMIO−Lを割り当て、レガシーブート用でないPCIデバイスにはMMIO−Hを割り当てることが可能であるが、PCIでは、ルートポート(Root Port)単位でMMIO−LかMMIO−Hが割り当てられる必要がある。ここで、ルートポートとは、PCIバスによる複数のデバイのス接続においてルートとなるポートである。サーバシステムは、複数のルートポートを有する。1つのルートポートにMMIO−LのPCIデバイスとMMIO−HのPCIデバイスを混在させることはできない。

0008

なお、BIOSに関する従来技術として、従来の2倍のプログラムサイズを持つシステムBIOSを利用できるようにする技術がある。この技術では、システムBIOSを構成するIRTルーチンとBIOSドライバ群はBIOS ROMの異なる64Kバイトブロックに別個に格納される。そして、OSの起動前はIRTルーチンがメモリアドレス空間のF0000〜FFFFFに割り当てられ、OSの起動後はそこにBIOSドライバ群が割り当てられる。

0009

また、3つのスロットに装着される拡張基板占有するアドレス空間の大きさを認識し、認識結果に基づいて、コンピュータのアドレスと、3つのスロットのいずれかを選択するためのスロット選択信号との対応関係マッピングテーブルに設定する技術がある。この技術によれば、拡張基板が占有するアドレス空間を適応的に割り当てることができる。

先行技術

0010

特開平9−114768号公報
特開平6−139182号公報

発明が解決しようとする課題

0011

PCIでは、ルートポート単位でMMIO−LかMMIO−Hが割り当てられる。したがって、レガシーブート用のPCIデバイスを含むルートポートの配下の全PCIデバイスにMMIO−Lを割り当て、残りのルートポートの配下の全PCIデバイスにMMIO−Hを割り当てることが考えられる。このような割り当てを行うことで、MMIO−Lが割り当てられるPCIデバイスの数を減らすことができる。

0012

しかしながら、冗長構成のサーバシステムでは、PCIデバイスからOSを起動できなくなることを防ぐために、各ルートポートにレガシーブート用のPCIデバイスが配置される。各ルートポートにレガシーブート用のPCIデバイスを配置することで、いずれか1つのルートポートが利用可能であれば、PCIデバイスからのOSの起動が可能になる。このため、いずれのルートポートもレガシーブート用のPCIデバイスを含み、全PCIデバイスにMMIO−Lが割り当てられる。したがって、冗長構成のサーバシステムでは、MMIO−Lが割り当てられるPCIデバイスの数を減らすことができず、MMIO−L不足が発生するという問題がある。

0013

本発明は、1つの側面では、各ルートポートにレガシーブート用のデバイスが配置される冗長構成のサーバシステムにおいて、MMIO−L不足の発生を抑えることを目的とする。

課題を解決するための手段

0014

1つの態様では、情報処理装置は、OSがレガシーブートされるブートデバイスを含む複数のデバイスのバス接続のルートであるルートポートを複数有する。そして、前記情報処理装置は、複数のブートデバイスの中の1つのブートデバイス及び該1つのブートデバイスが接続された1つのルートポートを特定する特定部を有する。また、前記情報処理装置は、メモリマップ入出力に用いられるメモリアドレスとして、前記特定部が特定した1つのルートポートに接続するデバイスにレガシーブート中に使用可能なビット幅のメモリアドレスを割り当てる割当部を有する。また、前記情報処理装置は、前記特定部が特定したルートポートに接続する全デバイスに前記割当部によりメモリアドレスが割り当てられたか否かを判定する第1判定部を有する。また、前記情報処理装置は、前記第1判定部が前記全デバイスにメモリアドレスが割り当てられたと判定した場合に、前記特定部が特定したブートデバイスからOSをレガシーブートするブート部を有する。

発明の効果

0015

1つの側面では、本発明は、MMIO−L不足の発生を抑えることができる。

図面の簡単な説明

0016

図1は、実施例に係るサーバシステムの構成を示す図である。
図2は、MMIO要求サイズの一例を示す図である。
図3は、MMIO−Lの不足を説明するための図である。
図4は、ブート管理テーブルの一例を示す図である。
図5は、サーバシステムのBIOSの機能構成を示す図である。
図6は、MMIO順次割り当て起動ドライバを説明するための図である。
図7は、BIOSの処理フローを示すフローチャートである。
図8は、初期化処理部による初期化処理のフローを示すフローチャートである。
図9は、前処理部による前処理のフローを示すフローチャートである。
図10は、中間処理部による中間処理のフローを示すフローチャートである。
図11は、後処理部による後処理のフローを示すフローチャートである。
図12は、BIOSが管理するアドレス空間を示す図である。

0017

以下に、本願の開示する情報処理装置、ブート方法及びブートプログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。

0018

まず、実施例に係るサーバシステムの構成について説明する。図1は、実施例に係るサーバシステムの構成を示す図である。図1に示すように、実施例に係るサーバシステム1は、システムボード2と、4つの拡張PCIボックス3を有する。なお、ここでは説明の便宜上、4つの拡張PCIボックス3を示したが、拡張PCIボックス3の数は2以上であれば4より少なくても多くてもよい。

0019

システムボード2は、メインメモリ20と、CPU(Central Processing Unit)#1及びCPU#2で表される2つのCPU21と、4つのPCIエクスプレススイッチ22と、NVRAM(Non-Volatile RAM)23と、ROM24とを有する。サーバシステム1はルートポート#1〜ルートポート#4で表される4つのルートポート21aを有し、4つのPCIエクスプレススイッチ22と4つのルートポート21aと4つの拡張PCIボックス3はそれぞれ対応付けられる。各CPU21には2つのルートポート21aが対応付けられる。

0020

なお、システムボード2は、3つ以上のCPU21を有してもよい。また、システムボード2は、2以上であれば4つ以外のPCIエクスプレススイッチ22を有してもよい。また、各CPU21には2つ以外の数のルートポート21aが対応付けられてもよい。

0021

メインメモリ20は、CPU21で実行されるプログラムや実行の途中結果等を記憶する。CPU21は、メインメモリ20からプログラムを読み出して実行する中央処理装置である。PCIエクスプレススイッチ22は、拡張PCIボックス3とCPU21を接続する。NVRAM23は、ブート管理テーブルに登録されるブート管理情報を記憶する。なお、ブート管理テーブルについては後述する。

0022

ROM24は、BIOSを記憶する。サーバシステム1の電源投入されると、CPU21は、ROM24からBIOSを読み出し、メインメモリ20に格納する。そして、CPU21は、メインメモリ20からBIOSを読み出して実行する。

0023

なお、BIOSは、CPU21により読み出し可能な記録媒体の一例であるCD−Rに記憶され、CD−Rから読み出されてメインメモリ20に格納されてもい。あるいは、BIOSは、LAN(Local Area Network)インタフェースを介して接続された他のサーバシステムのデータベース等に記憶され、これらのデータベースから読み出されてメインメモリ20に格納されてもい。

0024

拡張PCIボックス3は、PCIエクスプレススイッチ31と、12個のスロット32を有する。拡張PCIボックス3は、12個以外の個数のスロット32を有してもよい。PCIエクスプレススイッチ31は、対応するPCIエクスプレススイッチ22と接続する。各スロット32には、PCIデバイス33が装着される。

0025

PCIデバイス33には、FC(Fiber Channel)カードLANカード、Raid(Redundant arrays of inexpensive disks)カード、IB(InfiniBand)カードがある。2つの拡張PCIボックス3は、1枚のFCカードと11枚のLANカードを搭載し、残りの2つの拡張PCIボックス3は、1枚のRaidカードと10枚のIBカードと、1枚のLANカードを搭載する。

0026

LANカードは、LANを用いて通信を行う。IBカードは、IBを用いて通信を行う。FCカード及びRaidカードは、レガシーブートに用いられ、オプションROMプログラム及びOSを記憶する。FCカードの1枚は通常時に第1優先でレガシーブートに用いられ、FCカードの他の1枚は通常時に第2優先でレガシーブートに用いられる。Raidカードの1枚は予備のレガシーブート用カードとして用いられ、Raidカードの他の1枚は災害対策時のレガシーブート用カードとして用いられる。

0027

図2は、MMIO要求サイズの一例を示す図である。図2に示すように、FCカードとRaidカードのMMIO要求サイズは16MBである。IBカードのMMIO要求サイズは64MBである。LANカードのMMIO要求サイズは8MBである。

0028

PCIデバイス33全体のMMIO要求サイズは、16MB×4+64MB×20+8MB×24=64MB+1280MB+192MB=1536MBである。この他に、オンボードVGA(Video Graphics Array)のMMIO要求サイズとして32MB、オンボードLANのMMIO要求サイズとして1MB、チップセットデバイスのMMIO要求サイズとして16MBが必要である。したがって、サーバシステム1のMMIO要求サイズは1536MB+32MB+1MB+16MB=1585MBである。

0029

MMIO−Lとして割り当て可能なアドレス空間を1536MBとすると、1585MB−1536MB=49MBのアドレス空間が不足する。アドレス空間の割り当ては、チップセットデバイス→オンボードデバイス→PCIデバイス33の順であるため、PCIデバイス33へ割り当てられるMMIO−Lが不足する。図3は、MMIO−Lの不足を説明するための図である。図3に示すように、1枚のIBカードと1枚のLANカードに対してMMIO−Lが不足する。

0030

そこで、サーバシステム1のBIOSは、レガシーブート用のPCIデバイス33及びルートポート21aをブート管理テーブルを用いて特定し、特定したルートポート21aだけにMMIO−Lを割り当て、他のルートポート21aにはMMIO−Hを割り当てる。

0031

図4は、ブート管理テーブルの一例を示す図である。図4に示すように、ブート管理テーブル23aには、Boot0000〜Boot0003で表される4つのブートデバイス定義23bと、BootOrderで表されるブートオーダー23cと、CurrentNumberで表される現在番号23dが含まれる。

0032

ブートデバイス定義23bは、レガシーブート用のPCIデバイス33をUEFIのデバイスパスにより定義する。ブートデバイス定義23bには、レガシーブート用のPCIデバイス33が接続するルートポート21aの番号が含まれる。例えば、Boot0000のデバイスパス「RootPort3/Slot1/FC」は、ルートポート#3のスロット#1に装着されたFCカードがレガシーブート用のPCIデバイス33であることを定義する。BootXXXX(Xは0〜9の数字)のXXXXは、ブートデバイス定義番号であり、ブートデバイス定義23bを識別する番号である。

0033

ブートオーダー23cは、レガシーブート用のPCIデバイス33の優先順位を定義する。ブートオーダー23cの「0001 0000 0002 0003」は、Boot0001、Boot0000、Boot0002、Boot0003の順番でPCIデバイス33が起動用に用いられることを定義する。ブートオーダー23cのサイズは8バイトである。ブートデバイス定義23b及びブートオーダー23cは、サーバシステム1の管理者による設定により定義される。

0034

現在番号23dは、レガシーブートに用いられるブートデバイス定義番号を示す。現在番号23dの「0001」は、レガシーブートに用いられるブートデバイス定義23bがBoot0001であることを示す。現在番号23dのサイズは2バイトである。

0035

このように、サーバシステム1のBIOSは、レガシーブート用のPCIデバイス33及びルートポート21aをブート管理テーブル23aの現在番号23dとブートデバイス定義23bを用いて特定することができる。また、サーバシステム1のBIOSは、レガシーブート用のPCIデバイス33の優先順位をブートオーダー23cを用いて特定することができる。

0036

次に、サーバシステム1のBIOSの機能構成について説明する。図5は、サーバシステム1のBIOSの機能構成を示す図である。図5に示すように、サーバシステム1のBIOS4は、MC初期化部41と、MMIO管理部42と、PCI初期化部43と、不足判定部44と、ブート処理部45と、初期化処理部46と、前処理部47と、中間処理部48と、後処理部49とを有する。

0037

なお、MC初期化部41、MMIO管理部42、PCI初期化部43及びブート処理部45は、従来のBIOSが有する機能である。不足判定部44、初期化処理部46、前処理部47、中間処理部48及び後処理部49は、実施例に係るBIOS4に追加された機能である。

0038

MC初期化部41は、メインメモリ20とチップセットを初期化する。MMIO管理部42は、各ルートポート21aのデータを管理する。また、MMIO管理部42は、ルートポート21a毎にMMIO−LとMMIO−Hのいずれを割り当てるかを管理する。MMIO管理部42は、レガシーブートの場合には、全てのPCIデバイス33にMMIO−Lを割り当てるように設定する。

0039

PCI初期化部43は、MMIO管理部42又は前処理部47の設定に基づいて、MMIO割り当てを行い、オプションROMプログラムの初期化処理機能を実行する。なお、PCI初期化部43によるMMIO割り当てにおいて、MMIO−Lが不足し、MMIO−Lが割り当てられないPCIデバイス33が発生する場合がある。

0040

ブート処理部45は、OSのブートを行う。具体的には、ブート処理部45は、レガシーブート用のPCIデバイス33からオプションROMプログラムをメインメモリ20に読み出して実行する。オプションROMプログラムは、PCIデバイス33からOSをメインメモリ20に読み出して実行する。

0041

不足判定部44は、MMIO−Lが不足することなく、全てのPCIデバイス33へMMIO−Lを割り当てることができたか否かを判定する。全てのPCIデバイス33へMMIO−Lを割り当てることができたと不足判定部44が判定すると、ブート処理部45は、OSのブートを行う。一方、MMIO−Lが不足する場合には、BIOS4は、レガシーブート用のPCIデバイス33及びルートポート21aを特定し、特定したルートポート21aの配下のPCIデバイス33にだけMMIO−Lを割り当てる処理を行う。

0042

初期化処理部46は、現在番号23dを初期設定する。具体的には、初期化処理部46は、ブートオーダー23cから最優先のブートデバイス定義番号を取得し、取得した番号を現在番号23dに設定する。

0043

前処理部47は、現在番号23dのブートデバイス定義23bからルートポート21aを特定する。そして、前処理部47は、特定したルートポート21aに割り当てられるMMIO−Lのサイズを計算する。具体的には、前処理部47は、MMIO−Lとして割り当て可能なアドレス空間1536MB−チップセット及びオンボードデバイス用のMMIO−L空間49MB=1487MBを計算する。そして、前処理部47は、特定したルートポート21aの配下のPCIデバイス33にMMIO−Lを割り当てる設定と、他のルートポート21aの配下のPCIデバイス33にMMIO−Hを割り当てる設定を行う。

0044

そして、前処理部47は、以下の2つの処理を行うことで、全PCIデバイス33の設定をリセットする。1つ目の処理として、前処理部47は、既に割り当て済みのMMIOリソース消去とPCIデバイス33への設定をクリアするため、PCISecondary Bus Resetを実施する。そして、2つ目の処理として、前処理部47は、オプションROMプログラムの初期化処理機能を再実行できるように、オプションROMプログラムをロードしたメモリ領域、オプションROMプログラム用設定メモリ領域、BIOS4の各データを初期化する。例えば、前処理部47は、BDA(BIOS Data Area)、IVT(Interrupt Vector Table)を初期化する。

0045

なお、後述する図7に示すように、前処理部47が前処理を実行する前に、PCI初期化部43によりMMIO割り当てとオプションROMプログラムの実行が行われているため、前処理部47は、全PCIデバイス33の設定をリセットする必要がある。

0046

中間処理部48は、前処理部47による設定に基づいてPCI初期化部43により行われたMMIO割り当てにおいてMMIO−Lの不足が発生したか否かをPCI初期化部43に問合せて判定する。そして、MMIO−Lの不足が発生した場合は、中間処理部48は、異常処理を行う。具体的には、中間処理部48は、異常処理として、サーバシステム1の管理者に例えばイベントログを用いて通知する。サーバシステム1の管理者は、PCIデバイス33の移設や取り外し等の構成変更あるいは設定変更を行い、MMIO−Lの不足が発生しないような処置を行う。一方、MMIO−Lの不足が発生しなかった場合は、中間処理部48は、ブート処理部45にOSのブートを依頼する。

0047

後処理部49は、ブート処理部45によるOSのブートが失敗した場合に機能する。後処理部49は、ブート管理テーブル23aのブートオーダー23cを現在番号23dで検索し、現在番号23dの次のブートデバイス定義番号を取得し、現在番号23dを更新する。そして、後処理部49は、前処理部47に制御を移す。

0048

現在番号23dの次のブートデバイス定義番号を取得できない場合には、レガシーブート用のPCIデバイス33を全て試みた場合であるので、後処理部49は、BIOSセットアップメニューを起動し、サーバシステム1の管理者に処置をゆだねる。サーバシステム1の管理者は、例えばレガシーブート用のPCIデバイス33の再設定を行う。

0049

なお、前処理部47、中間処理部48及び後処理部49の機能は、MMIO順次割り当て起動ドライバにより実現される。図6は、MMIO順次割り当て起動ドライバを説明するための図である。図6に示すように、BIOS4には、MMIO順次割り当て起動ドライバ40aと、PCI初期化部43の機能を実現するPCIバスドライバ43aと、ブート処理部45の機能を実現するレガシードライバ45aが含まれる。なお、図6に示す前処理は前処理部47による処理に対応し、中間処理は中間処理部48による処理に対応し、後処理は後処理部49による処理に対応する。

0050

MMIO順次割り当て起動ドライバ40aは、前処理として、ブートデバイスのルートポート21aをブート管理テーブル23aのCurrentNumber、BootOrder、BootXXXXから特定する。ここで、ブートデバイスとは、レガシーブート用のPCIデバイス33である。そして、MMIO順次割り当て起動ドライバ40aは、前処理として、特定したルートポート21aにMMIO−L空間を割り当てる設定、他のルートポート21aにMMIO−Hを割り当てる設定を行う。

0051

そして、PCIバスドライバ43aは、設定に基づいて、各PCIデバイス33へMMIOを割り当て、ブートデバイスに含まれるオプションROMプログラムの初期化処理機能を実行する。

0052

そして、MMIO順次割り当て起動ドライバ40aは、中間処理として、CurrentNumberのPCIデバイス33からOS起動をトライする。そして、レガシードライバ45aがOSをブートする。また、ブートが失敗した場合には、MMIO順次割り当て起動ドライバ40aは、後処理として、BootOrderから次のブートデバイス定義番号を取得し、CurrentNumberを更新する。そして、MMIO順次割り当て起動ドライバ40aは、前処理に戻る。

0053

次に、BIOS4の処理フローについて説明する。図7は、BIOS4の処理フローを示すフローチャートである。図7に示すように、BIOS4は、サーバシステム1の電源がONされると、MC初期化部41によりメインメモリ20とチップセットを初期化し(ステップS1)、MMIO管理部42によりMMIO管理処理を行う(ステップS2)。MMIO管理部42は、レガシーブートの場合には、MMIO管理処理において、全てのPCIデバイス33にMMIO−Lを割り当てるように設定する。

0054

そして、BIOS4は、PCI初期化部43によりPCI初期化処理を行う(ステップS3)。PCI初期化部43は、レガシーブートでMMIO管理部42による設定に基づく場合には、PCI初期化処理において、全PCIデバイス33へのMMIO−L割り当てを行う。

0055

そして、BIOS4は、不足判定部44によりMMIO−L不足であるか否かを判定し(ステップS4)、MMIO−L不足でない場合には、ブート処理部45によりブート処理を行う(ステップS5)。ブート処理部45は、ブート処理において、OSブートを行う。

0056

一方、MMIO−L不足の場合には、BIOS4は、初期化処理部46により初期化処理を行う(ステップS6)。初期化処理部46は、初期化処理において、最優先のブートデバイス定義番号を現在番号23dに設定する。そして、BIOS4は、前処理部47により前処理を行う(ステップS7)。前処理部47は、前処理において、MMIO−Lを割り当てるルートポート21aを特定し、特定したルートポート21aの配下のPCIデバイス33にMMIO−Lを割り当てる設定を行う。

0057

そして、BIOS4は、PCI初期化部43によりPCI初期化処理を行う(ステップS8)。PCI初期化部43は、前処理部47による設定に基づく場合には、PCI初期化処理において、前処理により特定されたルートポート21aの配下のPCIデバイス33だけにMMIO−Lを割り当てる。

0058

そして、BIOS4は、中間処理部48により中間処理を行う(ステップS9)。中間処理部48は、中間処理において、MMIO−L不足か否かを判定し、MMIO−L不足でない場合には、ブート処理部45にブート処理を依頼する。そして、BIOS4は、ブート処理部45によりブート処理を行う(ステップS10)。

0059

そして、BIOS4は、OSブートに失敗すると、後処理部49により後処理を行う(ステップS11)。後処理部49は、後処理において、次の優先順位のブートデバイス定義番号を現在番号23dに設定し、前処理部47に制御を移す。

0060

このように、BIOS4は、まず全PCIデバイス33にMMIO−Lを割り当てる。そして、MMIO−L不足が発生すると、BIOS4は、MMIO−Lを割り当てるルートポート21aを特定し、特定したルートポート21aの配下のPCIデバイス33だけにMMIO−Lを割り当てる。したがって、BIOS4は、MMIO−Lを割り当てるPCIデバイス33の数を減らすことができる。

0061

次に、初期化処理部46による初期化処理のフローについて説明する。図8は、初期化処理部46による初期化処理のフローを示すフローチャートである。図8に示すように、初期化処理部46は、ブート管理テーブル23aから最優先のブートデバイス定義番号を取得し(ステップS21)、取得したブートデバイス定義番号をブート管理テーブル23aの現在番号23dに設定する(ステップS22)。

0062

このように、初期化処理部46が最優先のブートデバイス定義番号を現在番号23dに設定するので、前処理部47はMMIO−Lが割り当てられるルートポート21aを現在番号23dに基づいて特定することができる。

0063

次に、前処理部47による前処理のフローについて説明する。図9は、前処理部47による前処理のフローを示すフローチャートである。図9に示すように、前処理部47は、MMIO−Lを割り当てるルートポート21aを特定し(ステップS31)、特定したルートポート21aにMMIO−Lを割り当てるように再設定する(ステップS32)。そして、前処理部47は、全PCIデバイス33の設定をリセットする(ステップS33)。その後、前処理部47の設定に基づいてMMIOの割り当てが行われる。

0064

このように、前処理部47が、MMIO−Lを割り当てるルートポート21aを特定し、特定したルートポート21aにMMIO−Lを割り当てるように再設定する。したがって、PCI初期化部43は、特定のルートポート21aの配下のPCIデバイス33だけにMMIO−Lを割り当てることができる。

0065

次に、中間処理部48による中間処理のフローについて説明する。図10は、中間処理部48による中間処理のフローを示すフローチャートである。図10に示すように、中間処理部48は、MMIO−L不足であるか否かを判定し(ステップS41)、MMIO−L不足でない場合には、ブート処理部45にOSブートを依頼する(ステップS42)。一方、MMIO−L不足である場合には、中間処理部48は、異常処理を行う(ステップS43)。

0066

このように、中間処理部48がMMIO−L不足でない場合にブート処理部45にOSブートを依頼するので、サーバシステム1はレガシーブートを行うことができる。

0067

次に、後処理部49による後処理のフローについて説明する。図11は、後処理部49による後処理のフローを示すフローチャートである。図11に示すように、後処理部49は、次のブートデバイスを取り出し(ステップS51)、次のブートデバイスがないか否かを判定する(ステップS52)。そして、後処理部49は、次のブートデバイスがない場合には、処理を終了し、次のブートデバイスがある場合には、ブート管理テーブル23aの現在番号23dを更新し(ステップS53)、前処理へ制御を移す。

0068

このように、後処理部49が現在番号23dを更新するので、BIOS4は次の優先順位のブートデバイスを用いてOSブートを行うことができる。

0069

上述してきたように、実施例では、前処理部47が、MMIO−Lを割り当てるルートポート21aを特定し、特定したルートポート21aの配下のPCIデバイス33にMMIO−Lを割り当てる設定を行う。そして、PCI初期化部43が、前処理部47により特定されたルートポート21aの配下のPCIデバイス33へMMIO−Lを割り当て、他のルートポート21aの配下のPCIデバイス33へMMIO−Hを割り当てる。そして、中間処理部48が、MMIO−L不足か否かを判定し、MMIO−L不足でない場合には、ブート処理部45にブート処理を依頼する。そして、ブート処理部45がOSブートを行う。したがって、BIOS4は、MMIO−Lが割り当てられるPCIデバイス33の数を減らし、MMIO−L不足の発生を抑えることができる。

0070

また、実施例では、ブート処理部45がOSブートに失敗すると、後処理部49が、ブート管理テーブル23aの現在番号23dに次の優先順位のブートデバイス定義番号を設定し、前処理部47に制御を移す。そして、前処理部47、PCI初期化部43、中間処理部48、ブート処理部45及び後処理部49による処理が繰り返される。したがって、サーバシステム1は、OSブートに失敗する可能性を低減することができる。

0071

また、実施例では、レガシーブートの場合に、まず、MMIO管理部42が、全てのPCIデバイス33にMMIO−Lを割り当てるように設定し、PCI初期化部43が、全てのPCIデバイス33にMMIO−Lを割り当てる。そして、不足判定部44が、MMIO−L不足であるか否かを判定し、MMIO−L不足である場合に、BIOS4は、特定のルートポート21aの配下のPCIデバイス33だけにMMIO−Lを割り当てる処理を行う。一方、MMIO−L不足でない場合には、BIOS4は、直ちにOSブートを行う。したがって、BIOS4は、MMIO−Lの不足が発生するような数のPCIデバイス33がないサーバシステム1については、高速にOSブートを行うことができる。

0072

また、実施例では、ブート管理テーブル23aは、ブートデバイス定義23b、ブートオーダー23c及び現在番号23dを含み、前処理部47は、ブート管理テーブル23aを用いて、MMIO−Lを割り当てるルートポート21aを特定する。したがって、前処理部47は、MMIO−Lを割り当てるルートポート21aを簡単に特定することができる。

0073

なお、実施例では、ブートデバイスがPCIデバイス33である場合について説明したが、PCIバス以外のバスに接続するデバイスをブートデバイスとしてもよい。

0074

以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。

0075

(付記1)オペレーティングシステム(OS)がレガシーブートされるブートデバイスを含む複数のデバイスのバス接続のルートであるルートポートを複数有する情報処理装置において、
複数のブートデバイスの中の1つのブートデバイス及び該1つのブートデバイスが接続された1つのルートポートを特定する特定部と、
メモリマップ入出力に用いられるメモリアドレスとして、前記特定部が特定した1つのルートポートに接続するデバイスにレガシーブート中に使用可能なビット幅のメモリアドレスを割り当てる割当部と、
前記特定部が特定したルートポートに接続する全デバイスに前記割当部によりメモリアドレスが割り当てられたか否かを判定する第1判定部と、
前記第1判定部が前記全デバイスにメモリアドレスが割り当てられたと判定した場合に、前記特定部が特定したブートデバイスからOSをレガシーブートするブート部と
を有することを特徴とする情報処理装置。

0076

(付記2)前記ブート部がOSのレガシーブートに失敗した場合に、前記複数のブートデバイスの中の他のブートデバイスについて、前記特定部、前記割当部、前記第1判定部及び前記ブート部の処理を行うことを特徴とする付記1に記載の情報処理装置。

0077

(付記3)当該情報処理装置の電源が投入された場合に当該情報処理装置が有する全てのデバイスに前記ビット幅のメモリアドレスが割り当てられたか否かを判定する第2判定部をさらに有し、
前記特定部は、前記第2判定部が前記ビット幅のメモリアドレスが割り当てられなかったデバイスがあると判定した場合に、前記1つのルートポートを特定することを特徴とする付記1又は2に記載の情報処理装置。

0078

(付記4)ルートポートの情報を含めてブートデバイスを定義する情報及びブートデバイスの優先順位を示す情報を含むブート管理情報を記憶する記憶部をさらに有し、
前記特定部は、前記ブート管理情報に基づいて前記1つのルートポートを特定することを特徴とする付記1、2又は3に記載の情報処理装置。

0079

(付記5)前記デバイスは、PCIデバイスであることを特徴とする付記1〜4のいずれか1つに記載の情報処理装置。

0080

(付記6)オペレーティングシステム(OS)がレガシーブートされるブートデバイスを含む複数のデバイスのバス接続のルートであるルートポートを複数有する情報処理装置によるブート方法において、
複数のブートデバイスの中の1つのブートデバイス及び該1つのブートデバイスが接続された1つのルートポートを特定し、
メモリマップ入出力に用いられるメモリアドレスとして、特定した1つのルートポートに接続するデバイスにレガシーブート中に使用可能なビット幅のメモリアドレスを割り当て、
特定したルートポートに接続する全デバイスにメモリアドレスが割り当てられたか否かを判定し、
前記全デバイスにメモリアドレスが割り当てられたと判定した場合に、特定したブートデバイスからOSをレガシーブートする
ことを特徴とするブート方法。

0081

(付記7)OSのレガシーブートに失敗した場合に、前記複数のブートデバイスの中の他のブートデバイスについて、前記特定する処理、前記割り当てる処理、前記判定する処理及び前記レガシーブートする処理を行うことを特徴とする付記6に記載のブート方法。

0082

(付記8)前記情報処理装置の電源が投入された場合に該情報処理装置が有する全てのデバイスに前記ビット幅のメモリアドレスが割り当てられたか否かをさらに判定し、
前記特定する処理は、前記ビット幅のメモリアドレスが割り当てられなかったデバイスがあると判定した場合に、前記1つのルートポートを特定することを特徴とする付記6又は7に記載のブート方法。

0083

(付記9)オペレーティングシステム(OS)がレガシーブートされるブートデバイスを含む複数のデバイスのバス接続のルートであるルートポートを複数有する情報処理装置で実行されるブートプログラムにおいて、
複数のブートデバイスの中の1つのブートデバイス及び該1つのブートデバイスが接続された1つのルートポートを特定し、
メモリマップ入出力に用いられるメモリアドレスとして、特定した1つのルートポートに接続するデバイスにレガシーブート中に使用可能なビット幅のメモリアドレスを割り当て、
特定したルートポートに接続する全デバイスにメモリアドレスが割り当てられたか否かを判定し、
前記全デバイスにメモリアドレスが割り当てられたと判定した場合に、特定したブートデバイスからOSをレガシーブートする
処理を前記情報処理装置に実行させることを特徴とするブートプログラム。

0084

(付記10)OSのレガシーブートに失敗した場合に、前記複数のブートデバイスの中の他のブートデバイスについて、前記特定する処理、前記割り当てる処理、前記判定する処理及び前記レガシーブートする処理を前記情報処理装置に実行させることを特徴とする付記9に記載のブートプログラム。

実施例

0085

(付記11)前記情報処理装置の電源が投入された場合に該情報処理装置が有する全てのデバイスに前記ビット幅のメモリアドレスが割り当てられたか否かを判定する処理を前記情報処理装置にさらに実行させ、
前記特定する処理は、前記ビット幅のメモリアドレスが割り当てられなかったデバイスがあると判定した場合に、前記1つのルートポートを特定することを特徴とする付記9又は10に記載のブートプログラム。

0086

1サーバシステム
2システムボード
3拡張PCIボックス
4 BIOS
20メインメモリ
21 CPU
21aルートポート
22PCIエクスプレススイッチ
23 NVRAM
23aブート管理テーブル
23bブートデバイス定義
23c ブートオーダー
23d 現在番号
24 ROM
31 PCIエクスプレススイッチ
32スロット
33PCIデバイス
40a MMIO順次割り当て起動ドライバ
41 MC初期化部
42 MMIO管理部
43 PCI初期化部
43aPCIバスドライバ
44不足判定部
45ブート処理部
45aレガシードライバ
46初期化処理部
47 前処理部
48中間処理部
49 後処理部

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

(分野番号表示ON)※整理標準化データをもとに当社作成

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ