JPWO2008075646A1 - 情報処理システムおよび該システムの起動/リカバリ方法 - Google Patents

情報処理システムおよび該システムの起動/リカバリ方法 Download PDF

Info

Publication number
JPWO2008075646A1
JPWO2008075646A1 JP2008550139A JP2008550139A JPWO2008075646A1 JP WO2008075646 A1 JPWO2008075646 A1 JP WO2008075646A1 JP 2008550139 A JP2008550139 A JP 2008550139A JP 2008550139 A JP2008550139 A JP 2008550139A JP WO2008075646 A1 JPWO2008075646 A1 JP WO2008075646A1
Authority
JP
Japan
Prior art keywords
rom
image
rom image
bios program
information processing
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.)
Granted
Application number
JP2008550139A
Other languages
English (en)
Other versions
JP4456653B2 (ja
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPWO2008075646A1 publication Critical patent/JPWO2008075646A1/ja
Application granted granted Critical
Publication of JP4456653B2 publication Critical patent/JP4456653B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1417Boot up procedures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • G06F11/167Error detection by comparing the memory output
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】 情報処理システムの起動プロセス中にブートブロックが何らかの原因で壊れていてもシステムを支障なく起動させる装置および方法を提供する。【手段】情報処理システムは、ブート可能でBIOSプログラムをそれぞれ含む複数のROMイメージを格納する書き換え可能なROMと、複数のROMイメージの各ROMイメージのデータ内容を比較する比較回路と、該比較回路での各ROMイメージのデータ内容の比較結果の出力により、正常なROMイメージに切り替えるアドレス切り替え器とを備え、正常なROMイメージを用いてシステムを起動させる。さらに、壊れているROMイメージを正常なROMイメージで書き換えて次の起動に備える。

Description

本発明は、パーソナルコンピュータ他の情報処理システムに関するものであり、特に起動時に初期化などを行う基本入出力システム(BIOS)プログラムを格納するROM(リード・オンリー・メモリ)イメージを複数有する情報処理システムに関する。
BIOS(Basic Input Output System:基本入出力システム)プログラムは、一般に各種デバイスの初期化やオペレーティングシステム(OS)のロードなどを行うBIOS本体(コアブロック)と、コンピュータの電源オンやリセット時の直後に起動し、BIOS本体の巡回冗長検査、すなわちCRCチェック(CyclicRedundancy Check)などを行って誤り検出を行い、問題がなければ制御をBIOS本体に戻すブートブロック(Boot Block)とから構成される。BIOSプログラムが正常に動作をしないとコンピュータの起動ができなくなるので、これに対処するためにいくつかの構成が採用されている。
一般的に、CPU(中央演算処理装置)はプログラム・カウンタ(ProgramCounter:PC) に設定されているアドレスより命令を読み込み実行する。電源投入時、プログラム・カウンタは初期値に設定されており、通常は、ROM(リード・オンリー・メモリ)上の初期化コードの先頭を指している。なお、近年ではROMに書き込み可能なフラッシュROMを使うことが多く、この場合プログラムに問題が発生した際にもフラッシュROMを外すことなく書き換えることができるというメリットがある。
フラッシュROMの初期化コードは、それ自体が破損したり消去されたりした場合、システムの起動ができなくなるため、フラッシュROM上でもブートブロック(Boot Block) として特別に扱われ書き換えは極力制限される。そのため、一般的に ブートブロックに収められている初期化コードは、機能ブロック(FunctionBlock)とは独立して動くようにプログラムされており、初期化コードはシステムの初期化が終了した時点で機能ブロックに制御を移し通常の処理を行う。
ブートブロックを有するフラッシュROMの一例を図12に示す。一般的にブートブロックはメモリアドレスの0番地から配置され、機能ブロックはそれ以後に配置される。この配置は、情報処理(コンピュータ)システムに用いるCPUの種類によって異なる場合がある。図12の(a)、図12(b)の例ではブートブロックはそれぞれ1つしかない。しかし、機能ブロックは図12(a)に示す例は1つ、図12(b)に示す例は2つある。機能ブロックが複数、例えば、図12(b)のように2つある場合は、機能ブロック1には新しい機能コード(function code)が、機能ブロック2にはその一つ前の時点の機能コードが入っている。次に書き換える時には、機能ブロック2の古い方のブロックを書き換える。これはもし機能ブロック2の方に入れた機能コードが何らかの問題で書き換えに失敗した場合でも、残っている機能ブロック1の機能コードを用いてCPUを動作させることができるためである。しかし、ブートブロックについては、この機能ブロックのように複数持つことができない。これはCPUがリセットされた後に起動される場合に、最初に0番地から動作しようとするため、この場所にブートブロックを配置する必要があるためである。すなわち、ブートブロックは基本的に1箇所しか配置できない。
図12に示すフラッシュROMを用いる情報処理システムでは次の問題がある。すなわち、ブートブロックにある初期化コードは、電源投入時に実行されるプログラムであるため、プログラム・カウンタが指すアドレス(基本的には0番地)から実行される必要がある。しかし、ROMにはブートブロックは1つしかないため、ROMの内容が何らかの原因で壊れた場合にはシステムが起動できなくなる。初期化コードが入っているブートブロックに障害が発生した場合、そのROM自体を取り外し、正常なブートブロックを有するROMを再実装する必要がある。この作業は時間とコストがかかる。
以上の問題を解決するために、複数のBIOSプログラムを格納するための複数のROMイメージを準備し、これらを切り替える方法として幾つかの方法が開示されている。たとえば特許文献1では、2つのROM領域(BIOS ROMA、BIOS ROMB)とその2つのROMを選択的にアクセス可能とするアドレス切り替え回路を持つシステムにおいて、書き換え時のエラーまたは起動時におけるチェックサム(check sum)を利用してその2つのROM領域のうちの1つのROM領域が不完全であると検知した場合にのみ、ブートブロックによってアドレス切り替え器の状態を変更し問題の無いもう一方のROM領域を起動させる方法が開示されている。しかしながら、この方法ではブートブロック自体に問題があった場合に、ROM領域を切り替えることができないという問題がある。
さらに特許文献2では、フラッシュROMに2つのBIOSプログラム(BIOS本体とブートブロックを含む)、言い換えれば複数のROMイメージを格納し、この複数のROMイメージを選択的にアクセス可能とするアドレス切り替え器およびWDT(ウオッチドックタイマ)を用いる。もし通常起動するROMイメージに問題があり、ブートブロック内の初期化コードが起動できなくても、WDTによって問題を検知し問題の無いROMイメージのBIOSプログラムを起動させる。この場合、WDTが周期的に動作するまでの間にROMに意図しない書き換えが発生した場合に、システムが起動しなくなる可能性がある。
特許文献3では、フラッシュROMに格納された2つのBIOSデータ・ブロック(ブートブロックとコアブロックを含む)を有し、不揮発性メモリ(NRAM)に格納されている情報に基づいて、該フラッシュROM内の2つのBIOSプログラムのアドレスを切り替えるアドレス変換部をさらに備える。NRAMに格納されるどちらのBIOSデータで立ち上がっているかを示すValidフラグおよび書き換えが正常に終了したことを示すUpdateフラグを用いて、どちらのBIOSデータを書き換えるかを決める。すなわち読み込みを行うBIOSデータと書き換えを行うBIOSデータを区別することにより、次回の起動時にBIOSデータの書き換えに失敗してもシステムが正常に起動することを目的としている。この場合、ブートブロック内に有効なBIOSブロックを判別するプログラムを含むため、書き換えできないブートブロックに不具合があるとシステムが起動しなくなる可能性がある。
メモリ装置の異常検出については、特許文献4では、複数のメモリブロックを有するRAM(ランダム・アクセス・メモリ)の各メモリブロックの同一箇所に同時にデータの読み出し書き込みの制御を行い、この制御によって複数のメモリブロック各々の同一箇所から読み出されたデータが同一か否かを排他的論理和回路からの演算結果から判定することによって異常検出を行うことで異常検出のための処理時間を短くできることが開示されている。同様に特許文献5では、複数のRAMを割り当てた記憶装置において、多数決論理回路と排他的論理和回路を用いて、エラーが発生した箇所のRAMのデータについて多数決をもって判断する方法を開示している。これらはRAMへの適用しかできず、またRAMの数が奇数である必要があり、さらに常に正しいデータを奇数(少なくとも3つ)のRAMに入れる必要がある。
特開2000−148467号公報 特開2004−038529号公報 特開2000−163268号公報 特開平5−28056号公報 特開昭61−61299号公報
本発明の目的は、情報処理システムの起動時においてROMに格納されるBIOSプログラムのブートブロックが何らかの原因で壊れるあるいは障害が発生した場合でも、システムを支障なく起動できるようにすることを目的とする。
本発明の別の目的は、システム起動時に障害の発生したROM内のROMイメージを正しいROMイメージに書き換え、壊れたROMイメージをリカバリ(回復)できるようにすることを目的とする。
上記課題を解決するために、本発明は、複数の同じROMイメージを有し、複数のROMイメージのイメージ内容が同じかどうかチェックするための比較回路(たとえば排他的論理和(XOR)回路)とROMイメージ(のアドレス)を切り替える切り替え器とを用いて、ブートブロック等が壊れたROMイメージから他の正常なROMイメージへ切り替えてシステムを起動させるための情報処理システムおよび起動方法を提供する。さらに、壊れたROMイメージを正常なROMイメージに書き換えてリカバリさせるための情報処理システムおよびその方法を提供する。
本発明の情報処理システムは、複数の基本入出力システム(BIOS)プログラムを有し、BIOSプログラムを格納する第1のROMイメージと第1のROMイメージが複製された第2のROMイメージを含む記憶手段と、記憶手段に結合され、記憶手段から出力される第1のROMイメージおよび第2のROMイメージのイメージ内容を比較するための比較手段と、比較手段に結合され、第1のROMイメージのBIOSプログラムによってシステムを起動するように、最初に第1のROMイメージを選択し、比較手段の比較結果においてイメージ内容が異なる場合には選択された前記第1のROMイメージを第2のROMイメージに切り替える切り替え手段と、を備える。
好ましくは、比較手段は排他的論理和回路であり、切り替え手段は各ROMイメージのアドレスを切り替えるアドレス切り替え器である。さらに好ましくは、記憶手段は各ROMイメージのデータ内容を出力するためのプログラム・コードをさらに格納する。
本発明の情報処理システムは、データ内容が異なる場合に、どちらのROMイメージが壊れているかを検出するために、第1および第2のROMイメージ内の誤りデータパターンを検出し、検出結果を前記切り替え手段に入力するための誤りデータパターン検出手段をさらに備える。この誤りデータパターン検出手段によって、第1のROMイメージおよび第2のROMイメージのうちの一方のROMイメージに誤りデータパターンが検出された場合に、切り替え手段が他方のROMイメージに切り替える。
さらに好ましくは、記憶手段はフラッシュROMであり、第1のROMイメージと第2のROMイメージが1つのフラッシュROM内に格納される、あるいは別個のフラッシュROMにそれぞれ格納される。
別の実施形態による本発明の情報処理システムは、複数の基本入出力システム(BIOS)プログラムを有し、BIOSプログラムを格納する第1のROMイメージと第1のROMイメージが複製された第2のROMイメージを備える第1のROMイメージ対と、該BIOSプログラムと同じかまたは異なる別のBIOSプログラムを格納する第3のROMイメージと第3のROMイメージが複製された第4のROMイメージを備える第2のROMイメージ対とを含む記憶手段と、記憶手段から出力される第1のROMイメージ対を受け取るように記憶手段に結合され、第1のROMイメージおよび第2のROMイメージを比較するための第1の比較手段と、記憶手段から出力される第2のROMイメージ対を受け取るように記憶手段に結合され、第3のROMイメージおよび第4のROMイメージを比較するための第2の比較手段と、第1の比較手段および第2の比較手段に結合され、第1の比較手段および第2の比較手段からの比較結果のそれぞれの入力に基づいて、各ROMイメージが同じイメージ内容を有するROMイメージ対を選択するための切り替え手段であって、第1のROMイメージ対に含まれる一方のROMイメージのBIOSプログラムによってシステムを起動するように、最初に第1のROMイメージ対を選択し、第1の比較手段の比較結果において第1のROMイメージおよび第2のROMイメージのイメージ内容が異なる場合には第2のROMイメージ対に切り替える切り替え手段と、切り替え手段に結合され、切り替えが行われたことに応答してシステムをリセットするシステムリセット手段と、を備える。
さらに、第1の比較手段の比較結果においてイメージ内容が同じ場合には第1のROMイメージ対のうち、第1のROMイメージに格納されたBIOSプログラムでシステムの起動処理を続行し、第2のイメージ対の第3のROMイメージおよび第4のROMイメージを第1のROMイメージで書き換えるようにシステムを制御するCPUを備える。
好ましくは、記憶手段は、さらに第1のROMイメージ対と第2のROMイメージ対の各々のデータ内容を出力するためのプログラム・コードを格納する。さらに好ましくは、切り替え手段は選択されているROMイメージ対に対応する番号をカウントするためのカウンタを備える。
本発明の一実施形態は、BIOSプログラムを格納した第1のROMイメージおよび第1のROMイメージが複製された第2のROMイメージを含む情報処理システムにおいて、情報処理システムの起動およびデータの壊れたROMイメージのリカバリを行う方法であって、第1のROMイメージのBIOSプログラムでシステムを起動するステップと、第1のROMイメージおよび第2のROMイメージのイメージ内容を比較するステップと、比較において、イメージ内容が異なる場合は、各ROMイメージ内に誤りデータパターンがあるか検出するステップと、第1のROMイメージにおいて誤りデータパターンを検出した場合は、第2のROMイメージに切り替え、システムをリセットし、第2のROMイメージのBIOSプログラムでシステムを起動するステップと、誤りデータパターンが検出された第1のROMイメージを第2のROMイメージで書き換えるステップと、を含む。
好ましくは、本発明による方法は、第2のROMイメージにおいて誤りデータパターンを検出した場合は、第2のROMイメージを第1のROMイメージで書き換えるステップを含む。また、誤りデータパターンが第1および第2のROMイメージで検出されない場合はシステムエラーの表示を行うステップをさらに含む。
本発明の別の実施形態は、BIOSプログラムを格納した第1のROMイメージと第1のROMイメージが複製された第2のROMイメージを備える第1のイメージ対と、該BIOSプログラムと同じかまたは異なる別のBIOSプログラムを格納した第3のROMイメージと第3のROMイメージが複製された第4のROMイメージを備える第2のイメージ対とを含む情報処理システムにおいて、情報処理システムの起動およびデータの壊れたROMイメージのリカバリを行う方法であって、前記第1のROMイメージ対の前記第1のROMイメージのBIOSプログラムでシステムを起動するステップと、第1のROMイメージおよび第2のROMイメージのイメージ内容を比較するステップと、比較において、イメージ内容が異なる場合は、第2のROMイメージ対に切り替え、システムをリセットし、第2のROMイメージ対のうちの第3のROMイメージのBIOSプログラムでシステムを起動するステップと、第3のROMイメージおよび第4のROMイメージのイメージ内容を比較し、そのイメージ内容が同じ場合は、第1のROMイメージおよび第2のROMイメージを第3のROMイメージで書き換えるステップと、を含む。
さらに、本方法は、第1のROMイメージおよび第2のROMイメージのイメージ内容を比較するステップにおいて、第1および第2のROMイメージのイメージ内容が同じで、かつ第3のROMイメージおよび第4のROMイメージのイメージ内容を比較するステップにおいて、第3および第4のROMイメージのイメージ内容が異なる場合には、第3および第4のROMイメージを第1のROMイメージで書き換えるステップをさらに含む。
本発明は、BIOSプログラムを格納した第1のROMイメージおよび第1のROMイメージが複製された第2のROMイメージを含む情報処理システムにおいて、情報処理システムの起動およびデータの壊れたROMイメージのリカバリをコンピュータにより行うために、第1のROMイメージのBIOSプログラムでシステムを起動する手順と、第1のROMイメージおよび第2のROMイメージのイメージ内容を比較する手順と、比較において、イメージ内容が異なる場合は、各ROMイメージ内に誤りデータパターンがあるか検出する手順と、第1のROMイメージにおいて誤りデータパターンを検出した場合は、第2のROMイメージに切り替え、システムをリセットし、第2のROMイメージのBIOSプログラムでシステムを起動する手順と、誤りデータパターンが検出された第1のROMイメージを第2のROMイメージで書き換える手順と、をコンピュータに実行させるためのプログラムを含む。
さらに本発明は、BIOSプログラムを格納した第1のROMイメージと第1のROMイメージが複製された第2のROMイメージを備える第1のイメージ対と、該BIOSプログラムと同じかまたは異なる別のBIOSプログラムを格納した第3のROMイメージと第3のROMイメージが複製された第4のROMイメージを備える第2のイメージ対とを含む情報処理システムにおいて、情報処理システムの起動およびデータの壊れたROMイメージのリカバリをコンピュータにより行うために、第1のROMイメージ対の第1のROMイメージのBIOSプログラムでシステムを起動する手順と、第1のROMイメージおよび第2のROMイメージのイメージ内容を比較する手順と、比較において、イメージ内容が異なる場合は、第2のROMイメージ対に切り替え、システムをリセットし、第2のROMイメージ対のうちの第3のROMイメージのBIOSプログラムでシステムを起動する手順と、第3のROMイメージおよび第4のROMイメージのイメージ内容を比較し、該イメージ内容が同じ場合は、第1のROMイメージおよび第2のROMイメージを第3のROMイメージで書き換える手順と、をコンピュータに実行させるためのプログラムを含む。
図1に本発明による、BIOSプログラムを格納するROMイメージに障害があった場合にも正常に起動を行い、さらに壊れたROMイメージをリカバリ(回復)し得る、起動/リカバリ機能を有する情報処理システム100を示す。該情報処理システム100は、CPU(中央処理装置)102、BIOSプログラムをそれぞれ格納する複数のROMイメージを含むROM(リード・オンリ・メモリ)200、RAM(ランダム・アクセス・メモリ)および不揮発性RAM(NVRAM)を含むメモリ106、本発明による起動/リカバリ機構300を含み、これらは全てシステム・バス112に接続されている。起動/リカバリ機構300の詳細については後述する。不揮発性RAMはシステム100の電源を遮断した後でも格納した情報を保持することができる。その他、システム・バス112には入出力コントローラであるディスプレイ・コントローラ122を介して外部ディスプレイ124、あるいはハードディスク・ドライブ(HDD)コントローラ126を介して補助記憶装置としてのハードディスク・ドライブ(HDD)128も接続される。ROM200やHDD128などの記憶媒体には、オペレーティングシステム(OS)と協働してCPU102に命令を与え、本発明を実施するためのコンピュータ・プログラムのコードや各種のデータが記録することができる。さらに、システム・バス112は通信アダプタ132を介して通信ネットワーク134に接続することも可能である。
情報処理システム100の電力投入時に、CPU102はその動作パラメータ(その多くは、メモリ106に格納されている)をセットし、メモリ106を初期化し、システムの構成要素(コンポーネント)の検査及び初期化を行い、通常のユーザ動作を開始する前に、オペレーティング・システムをブートする。電力が情報処理システム100に供給されると、システム・プロセッサであるCPU102はパワーオンリセット(POR:Power on Reset)と呼ばれる、BIOSプログラムの一部を実行し始める。
CPU102はメモリ106に書き込まれるコンピュータ・プログラムのコードに従って、情報処理システム全体の制御を行う。またCPU102は、起動時にROM200内に記憶されているBIOSプログラムのデータに従って、メモリ106などにアクセス可能となる。好ましくは、ROM200はリプログラマブルであるフラッシュROMである。フラッシュROMは、読み書きが可能でかつ電源を落としても内容が保持されるメモリであり、情報処理システムの起動時に情報処理システム(以降の説明でコンピュータ・システムとも呼ぶ)の入出力装置の設定など処理を行うBIOSデータが記憶されている。
ROM200としてフラッシュROMを用いて説明する。複数(図では2つ)のBIOSプログラムを含むフラッシュROM200の詳細を図2に示す。フラッシュROM内に格納され、開始アドレスを有し、実行可能なプログラム・コードおよびデータを含むデータブロック全体を「ROMイメージ」と呼ぶ。一般にROMイメージはROM、PROM、EPROMなどのメモリに格納され、ファイル、実行可能なプログラム・コード、データを含み得る。ROM200は、書き換え可能でブート可能な複数のROMイメージを含む。図2のROMイメージ1 202およびROMイメージ2 204は同じ容量で正常時には同じイメージ内容が格納される。すなわちROMイメージ2はROMイメージ1が複製されたものである。ROM内のアドレス空間において、ROMイメージ1は開始(上位側)アドレスAから、ROMイメージ2は開始(下位側)アドレスBから格納されるものとする。
図2のように、たとえばROMイメージ1 202には、(1)起動時にCPU102に最初に読み込まれる初期設定プログラムのコードを有し、書き換え可能な擬似ブートブロック214(通常のブートブロックと同じ機能を果たすが、書き換えが行われる点で通常のブートプログラムとは異なるため、擬似ブートブロックと呼ぶ)と、(2)メモリ106などの周辺装置の初期設定データを有する機能ブロック216と、(3)本発明による起動/リカバリ機能を実行するためのプログラム・コード(たとえばROMイメージを比較するためのプログラム・コード)を格納する起動/リカバリ用ブロック218と、を備えるBIOSプログラム1 210が格納される。これに対し、通常のBIOSプログラムはブートブロックと機能ブロックを含む(図12を参照)。また、ROMイメージ2 204は、ROMイメージ1 202を複製したものであり、正常時にはBOISプログラム1 210と同じ内容のBIOSプログラム2 220が格納される。すなわち、BIOSプログラム2 220は、擬似ブートブロック224、機能ブロック226、および起動/リカバリ用ブロック228を備え、正常時には各ブロックはBIOSプログラム1 210の各ブロックと同じものとなる。図2では、1つのROM内に複数のROMイメージを格納しているが、複数の別個のROMデバイスのそれぞれにROMイメージを格納してもよい。これ以降の説明においては、1つのROM内に複数のROMイメージを格納する場合を用いる。
図3に示すように、本発明による起動/リカバリ機構300の基本構成は、フラッシュROM200から出力される複数のROMイメージを比較するための比較回路302と、ROMイメージのアドレスを切り替えるアドレス切り替え器304と、システムリセット手段306とを含む。以降の説明では、比較回路302として排他的論理和(XOR)回路を用いて説明するが、これに限定されるわけではない。図4に示すように、起動/リカバリ機構400は、起動時にどのROMイメージが壊れているかを検出するために、誤りデータパターン検出回路308を備えることが好ましい。この起動/リカバリ機構はICチップ、たとえばFPGA(FieldProgrammable Gate Array)を用いて実装することができる。
起動/リカバリ機構300の機能は、情報処理システムの起動時に選択された1つのROMイメージが壊れている場合(このとき比較回路において正常時は同じイメージ内容であるべき2つのROMイメージが異なると検出される)においても他のROMイメージを選択し、システムリセット手段によってシステムリセット、具体的にはCPUリセットをかけて、新たに選択されたROMイメージを用いてシステムを起動し直すようにすることである。また、起動/リカバリ機構300の別の機能は、壊れていないROMイメージに格納された起動/リカバリ・プログラムをCPUによって実行して、壊れているROMイメージのデータを正常なROMイメージに置き換える、すなわちイメージ内容を複製(以降の説明でコピーとも呼ぶ)することが可能である。
本発明の第1の実施形態による情報処理システムの構成例を図3に示す。図3のように、正常時において同じデータ内容を含む複数のROMイメージ(ROMイメージ1 202およびROMイメージ2 204)を有する、書き換え可能なフラッシュROM200を用いる。さらに、本発明によるシステムは、該ROM200に結合され、記憶手段であるフラッシュROMから出力される各々のROMイメージを比較するための比較回路302と、該比較回路302からの比較結果に応答して、各々のROMイメージを切り替えるためのアドレス切り替え器304と、アドレス切り替えすなわちROMイメージの切り替えに応答してCPUにリセット(システムリセット)をかけるためのシステムリセット手段306とを含む起動/リカバリ機構300を含む。好ましくは、各ROMイメージを出力するためのプログラム・コードはROM200に格納される。またCPU102がバス112を介してフラッシュROM200内の複数のROMイメージ202、204に格納されたBIOSプログラムのいずれか一方を実行するように、システムが構成されている。
図4に示すように、本発明の第2の実施形態である情報処理システムにおける起動/リカバリ機構400は、図3の構成に加えて各ROMイメージ202、204のどちらが壊れているかを検出するための誤りデータパターン検出回路308を含む。この誤りデータパターン検出回路308は、フラッシュROM200から出力される各ROMイメージ内に誤りデータパターン(たとえばFFデータ)があるか検出する。上記説明においては、正常な場合に、1つのROMデバイス内、たとえばフラッシュROM内に格納される、同じROMイメージの内容を有する複数のROMイメージとして説明したが、代わりに、同じ内容のROMイメージをそれぞれ有する複数のROMデバイスを用いることも可能である。
比較回路302は、たとえばROMに接続される複数の信号線を含むデータバスからのそれぞれのデータ信号の差分をとるための差分回路と、それぞれのデータの差分信号の論理和(OR)を取るOR回路とから構成される。2つのROMイメージが同じデータであれば、全ての差分信号が同じ値0となり、OR回路の出力は値0となるが、2つのROMイメージのデータが異なれば、差分信号のどれかが値1となり、OR回路の出力は値1となる。すなわちOR回路の出力を確認することで2つのROMイメージを比較することができる。なお、比較回路302には回路構成が比較的簡便な排他的論理和(XOR)回路を用いてもよい。このとき一般的な排他的論理和回路(XOR回路)を用いることができる。
アドレス切り替え器304の一例としては、値1または値0のアドレス線Aを選択するチップセレクト(CS)信号を出力する回路で、アウトプットピンから出力する値を反転する機能を持つ回路がある。たとえば、アウトプットピンからアドレス線A(ROMイメージ1の開始アドレスを指す)として値0を出力している状態で比較回路からの信号(値1)を受けとると、アウトプットピンから出力するアドレス線Aの値を1に変更する。ROMイメージ1およびROMイメージ2の切り替えは,これらのROMイメージに対応するアドレス線を選択するためのチップセレクト(CS)信号で制御される。動作としては、最初にROMイメージ1が選択されていた場合、このアドレス線Aは値0となっており、CS信号はROMイメージ1を指している。しかし、アドレス切り替え器304は、各ROMイメージのイメージ内容が異なるために、比較回路から値1が入力されると、ROMイメージ2に切り替えるために、このアドレス線を値1にする。それによってCS信号の出力がROMイメージ2を指し、切り替えが可能になる。アドレス切り替え器304は、例えば、比較回路からの信号を入力する毎に出力値を反転するフリップフロップ回路で実現することができる。
システムリセット手段306はアドレス切り替え器304からのROMイメージを切り替えたことを示す信号を受け取ると、システム100のCPU102にリセットをかけるためのリセット信号を発生する。
また、アドレス切り替え器304からの信号に応答して、ディスプレイ・コントローラ122を介して外部ディスプレイ124などにシステムエラーなどの状況を表示するようにすることも可能である。
図3に示す第1の実施形態である情報処理システムにおける動作を示すフローチャートを図5に示す。この動作では、壊れているROMイメージ1を正常なROMイメージ2に切り替える。これ以降の説明および図において、ROMイメージ1、ROMイメージ2などのROMイメージをROM1、ROM2のように省略して表す。システムの起動が正常に行われる場合においては、ROM2 204にはROM1 202と同じBIOSプログラム、言い換えれば同じデータブロックが入っているものと想定する。
電源投入時または最初のCPUリセット時、すなわちパワーオンリセット(POR)を行う(S501)と、アドレス切り替え器によってアドレスがROM1にセットされることで、ROM1が選択され(S502)、ROM1のデータがCPUに対して出力されることになる。次にROM1およびROM2のデータ出力が比較回路である排他的論理和(XOR)回路に入力され、各データ出力を比較するために排他的論理和(XOR)演算が行われ演算結果によって、次の動作が判断される(S503)。ROM1から正常にCPUにデータが出力されている場合、ROM2の同じアドレスからはROM1と同じデータがXOR回路に出力され、XOR回路302の演算結果による出力は‘0’(値0)となり、正常に起動動作が続けられる(S505)。ステップS503において、もしROM1のデータが壊れている場合には、ROM1のデータとROM2のデータとは一致しない、すなわちデータ内容が異なるために、XOR回路302の出力が‘1’(値1)となり、起動エラーとして検出する。エラーを検出した場合、アドレス切り替え器304はROM2のデータをCPUに出力するために、すなわちROM2のBIOSプログラムに切り替えるために、ROM2のアドレスに切り替える(S504)。次に、アドレス切り替えに応答して、システムリセット手段306を用いてCPU102をリセットし、ROM2のBIOSプログラムを用いてCPU102を再起動する(S506)。この第一の実施形態においては、ROM1に問題があるという予想の元にROM1のイメージ・データをROM2のイメージ・データで書き換えることができる。すなわち、どちらのROMイメージが壊れているかの検出は行われていない。なお、最初にROM2のイメージ・データがCPUに出力される場合には、上記のROM1とROM2を入れ替えた動作が行われる。
図3の構成では、障害の発生あるいは問題となったROMイメージは最初にイメージ・データを出力していたROMイメージであるという想定を前提としており、どのROMイメージに問題があるか判断ができない。このため、起動/リカバリ機構において、各ROMイメージ202、204のどちらが壊れているかを検出するための構成要素をさらに加えた、第2の実施形態である情報処理システムを図4に示す。図4において、本発明による起動/リカバリ機構400は、比較回路によりエラーを検出した際、どのROMイメージに問題があるかを検出するために、誤りデータパターン検出回路(簡単のためにFF検出回路とも呼ぶ)308をさらに含む。すなわち、第2の実施形態による情報処理システムは、同じイメージ内容の複数のROMイメージ202、204(ROM1およびROM2)を有するフラッシュROM200と、各々のROMイメージのイメージ内容を比較するために、フラッシュROMに結合される比較回路302(排他的論理和(XOR)回路で実現可能)と、比較回路302からの比較(演算)結果に応答して複数(ここでは2つ)のROMイメージを切り替えるアドレス切り替え器304と、どのROMイメージが壊れているかを検出するための誤りデータパターン検出回路308と、システムリセット手段306とから構成される。さらにCPU102を含み、このCPU102がシステムリセット手段306を介してアドレス切り替え器304に結合されている。
この誤りデータパターン検出回路(FF検出回路)308の動作の前提となるフラッシュROM中へのデータ(プログラム・コードを含む、以降の説明でも同様)の書き込み方法について説明する。図4の構成におけるROMへのデータの書き込み方法を図6に示す。基本的には以下に示すステップが実行される。
1)現在のROMイメージの領域を消去する(S601)。Eraseコマンドに従ってフラッシュROMはブロック単位でデータを消去される。このとき消去されたブロックは全て '1' 、すなわちFFとなる。
2)新たなROMイメージの初期化コードの先頭部分610を除いた部分をROMに書き込む。(S602)
3)新たなROMイメージの初期化コードの先頭部分610に対する正常なデータをROMに書き込む(S603)。
この書き込み方法の特徴は、ROMに対するデータの書き込みに成功している場合にはデータのすべてが問題なく書き込まれる(S605)。しかし、もし途中で何らかの障害などにより書き込みに問題があった場合には、ROMイメージの先頭610に対する正常なデータが書き込まれず、FFのデータが残ることになる(S604)。もしFFのデータが残っているのがROM1(ROMイメージ1)の領域であり、ROM2(ROMイメージ2)の領域にFFのデータが残っていないとすると、ROM2には正常なデータが書かれていることがわかる。図6では、初期化コードの先頭部分610を除いた部分を用いて最初に書き込む例で説明したが、2つのROM1およびROM2のそれぞれの開始アドレスからみて同じアドレスの任意の場所610’でもよい。すなわち、図4の構成においてXOR回路によってエラーを検出した後、どちらのROMに問題があるかを確認するために先頭610あるいは任意の場所610’にFFのデータがあるかどうかを確認することにより問題となったROMイメージを特定可能となる。
誤りデータパターン検出回路308は、比較回路302と同様に、たとえばROMに接続される複数の信号線を含むデータバスからのそれぞれのデータ信号の差分をとるための差分回路と、それぞれのデータの差分信号の論理和(OR)を取るOR回路とから構成される。正常なROMイメージのデータと誤りデータパターン(たとえば0xFF)を含むROMイメージからのデータ信号のそれぞれの差分をとり、それらの差分信号を入力されたOR回路の出力が値1であれば、各ROMイメージのデー内容が異なることを示し、誤りデータパターンの検出が可能となる。
図4に示す第2の実施形態である情報処理システムを用いる動作を示すフローチャートを図7に示す。ここでは簡単にするために、最初にROM1のデータ(プログラム・コードを含む)がCPUに出力され、ROM1のBIOSプログラムが起動される場合を考える。電源投入時または最初のCPUリセット時、すなわちパワーオンリセット(POR)を行う(S701)と、ROM1とROM2において初期化コードの先頭(または任意場所の同じアドレス)およびイメージがそれぞれ読み込まれる(S702)。次にROM1およびROM2のイメージ出力がXOR回路302に入力され、演算結果によって動作が判断される(S703)。ROM1とROM2の同じアドレスからのイメージ出力が同一である場合、すなわちXOR回路の出力が‘0’(値0)の場合は、そのまま正常に起動が行われる(S712)。XOR回路302の出力が‘1’(値1)の場合、FF検出回路308によって書き込みが失敗して残存しているFFデータ(0xFF)がどのROMにあるか検出する(S704)。ROM1で0xFFを検出した場合、言い換えればROM1のデータが壊れている場合には、アドレス切り替え器304がROM2に切り替え(S706)、その後システムリセット手段306によってCPUをリセットし(S707)、ROM2で通常の起動処理を行う(S708)。次に正常なROM2をデータが壊れているROM1にコピーする、すなわちROM2のイメージでROM1のイメージを書き換える(S709)。FF検出回路308によって、ROM1で0xFFを検出せずにROM2で0xFFを検出した場合は、そのまま通常の起動処理を続ける(S710)。次に正常なROM1をデータなどイメージが壊れているROM2にコピーする(S711)。また、ROM1およびROM2においてともに0xFFを検出しない場合は、システムエラーとして、ディスプレイ・コントローラ122を介して外部ディスプレイ124などに出力する(S705)。
なお、最初にROM2のデータがCPUに出力される場合には、上記のROM1とROM2を入れ替えた動作が行われる。
以降の説明およびフローチャート図において、ROMイメージのBIOSプログラムを用いてシステムを起動することを「ROMx(xは整数)で起動(処理)する」と、さらにあるROMイメージを別のROMイメージに複製することを、たとえば「ROM2をROM1にコピーする」と表現する場合があることに留意されたい。
なお、情報処理システムが動作中にROMイメージの書き込み動作以外の問題でROMイメージが壊れた場合にも問題を検知しかつ、システムリセットを行わずに正常なROMイメージへ切り替えることも可能である。
本発明の第3の実施形態による情報処理システムを図8に示す。この第3の実施形態は図3の基本構成を拡張しかつ誤りデータパターン検出回路(FF検出回路)308を用いずに、正常に情報処理システムを起動させ、壊れているROMイメージをリカバリすることができる、起動/リカバリ機構800を含む。以降の説明および図において、ROMイメージx(xは整数)をROMxと省略して表記する。また各ROMイメージは図2に示すようなBIOSプログラムを格納している。図8のフラッシュROM200は、複数個(偶数個)、ここでは4つのROMイメージを含み、2つのROMイメージで1つのイメージ対を構成する。以降の説明でイメージ対の番号xをイメージ対(x)、xは整数のように表す。図8のように、フラッシュROM200は、(1)2つの同じ容量、同じデータ内容のROMイメージである、ROM1とROM2のペアを有する(換言すれば、ROM2はROM1が複製されたものである)ROMイメージ対(1)810と、(2)2つの同じ容量、同じデータ内容のROMイメージである、ROM3とROM4のペア(換言すれば、ROM4はROM3が複製されたものである)を有するROMイメージ対(2)820とを含む。
図8の情報処理システムは、上記フラッシュROM200に加えて、これらROMイメージ対810、820のROMイメージ(ROM1とROM2、ROM3とROM4)のそれぞれのイメージ出力を比較するために、たとえば排他的論理和で結合する回路である、比較回路1(XOR回路1)812および比較回路2(XOR回路2)822と、2つのROMイメージ対を切り替えるアドレス切り替え器804と、アドレス切り替え器804に結合され、CPU102をリセットするシステムリセット手段306とで構成される。なお、ROM3はROM1と同じROMイメージまたは異なる別のROMイメージであり得る。言い換えれば、ROM3に格納されるBIOSプログラムはROM1に格納されるBIOSプログラムと同じかまたは異なる別のBIOSプログラムであり得る。
ここでは排他的論理和(XOR)回路を用いる例で示したが、他の比較回路を用いることも可能である。また、アドレス切り替え器804はROMイメージ対を選択し、各ROMイメージのBIOSプログラムの起動を行うことができるように、現在選択されているROMイメージ対に対応する番号nをカウントするためのカウンタ(n)805を内蔵している。なお、n番目のROMイメージ対は、2つのROMイメージであるROM2n−1とROM2nから構成される。
最初に起動されるROMイメージ対の2つのROMイメージ(正常時は同じイメージ内容)の片方が壊れている時には、排他的論理和(XOR)回路が‘1’(値1)を出力し、これにより現在起動しているROMイメージ対が壊れていることが検知可能である。そして現在起動しているROMイメージ対が壊れていることが検知された場合には、アドレス切り替え器804に信号(値1)を送り、アドレス切り替え器により他のROMイメージ対のアドレスに切り替え、その切り替えられたROMイメージ対にある一方のROMイメージのBIOSプログラムで起動を試みるという一連の動作が可能となる。
さらに起動エラーを極力なくして情報処理システムの信頼性をあげるために、図8の構成を拡張して、偶数個である2N個(Nは2以上の整数)のROMイメージを有する、図10のような構成に拡張可能である。n個のROMイメージ対1010、1020、・・・1030は、ROM2n−1とROM2n(ここではROM1/ROM2、ROM3/ROM4・・・)のそれぞれのイメージ対に含まれる各ROMイメージが同じROMイメージを持つ。すなわち、正常時には1つのROMイメージ対にある2つのROMイメージは一方のROMイメージを複製したものであり、BIOSプログラムも同じものを有する。また、別のROMイメージ対にあるそれぞれのROMイメージは異なるイメージ、すなわち異なるBIOSプログラムであってもよい。各ROMイメージ対に対応して、それぞれに比較回路1012、1022、・・・1032(XOR回路で実装、総数n)を結合することができる。壊れているROMイメージを含むROMイメージ対(にあるBIOSプログラム)での起動をやめて、正常なROMイメージ対を選択して、そのROMイメージ対にあるROMイメージのBIOSプログラムを用いてシステムを起動する。また、次の起動に備えて、壊れているROMイメージ対の各ROMイメージは、正常なROMイメージで書き換えてリカバリしておくことができる。N=1の場合は、基本構成である図3に相当すると考えることができるが、N=1すなわち2つのROMイメージの場合は、前述のようにROMイメージのどこが壊れているかは判断できない。これに対し、Nが2以上の場合である図8あるいは図10の構成によればどのイメージ対に問題があるか判断できる点で相違する。
第3の実施形態の基本構成である、4個のROMイメージを有する情報処理システムの動作について、図8および図9のフローチャートを参照しながら説明する。図8のように、4個のROMイメージは2つのROMイメージ対を構成する。以降の説明でイメージ対の番号xをイメージ対(x)、xは整数のように表す。すなわちROM1/ROM2からなるイメージ対(1)810およびROM3/ROM4からなるイメージ対(2)820を含むシステム構成を用いる場合について、図9のフローチャートに従って説明する。なお、図9の中で「ROM1/2」とはROMイメージ1(ROM1)とROMイメージ2(ROM2)のイメージ対を表し、「ROM1/2で起動処理」とは該イメージ対の一方のROMイメージのBIOSプログラムで起動処理を行うことを表す。「ROM3/4」についても同様の表記をする。
最初にパワーオンリセットを行う(S901)。起動するROMイメージのあるイメージ対の番号nをカウントするために、最初にカウンタ805をn=1に設定する(S902)。このとき、ROMイメージ2n−1とROMイメージ2n、すなわちROM1、ROM2を含むイメージ対が選択される。次にアドレス切り替え器804をROM1/ROM2のイメージ対(1)810に設定し、CPU102をリセットし(S903)、ROM1/ROM2のイメージ対(1)810のどちらかのROMイメージ、たとえばROM1のBIOSプログラムを用いて起動処理を行う(S904)。またROM1/ROM2のイメージ出力をXOR回路1 812で演算処理(S905)し、出力が‘0’の場合は、ROM1とROM2のイメージ内容が同じで正常であることがチェックできたので、ROM3とROM4のイメージ内容を比較し(S921)、イメージ内容が異なる場合は、ROM3/ROM4の各イメージにROM1のイメージをコピーする(S922)。ROM3とROM4のイメージ内容が同じ場合は、問題がないのでそのまま、たとえばROM1のBIOSプログラムで起動を続ける(S950)。なお、ステップ921でROM3とROM4のイメージ内容を比較するためには、XOR回路2 822を用いることが可能である。または、正常起動されたROM1の起動/リカバリ用ブロックに格納される、ROMイメージを比較するためのプログラム・コードをCPUに実行させることも可能である。
またステップS905でXOR回路1 812の出力が‘1’の場合は、カウンタ(n)805においてカウントを1増やし、n=2に設定し(S906)、アドレス切り替え器804をROMイメージの番号が2n−1と2nのROMイメージを含む、2番目のROM3/ROM4のイメージ対(2)820に設定し、CPU102をリセットし(S907)、ROM3/ROM4のイメージ対(2)820のどちらかのROMイメージ、たとえばROM3のBIOSプログラムを用いて起動処理を行う(S908)。またROM3とROM4のイメージ出力をXOR回路2 822に入力し演算処理を行う(S909)。演算処理の結果が‘0’の場合は、ROM3/ROM4のイメージ対(2)820は正常であるのでROMイメージ3(ROM3)のイメージを、壊れている可能性のあるROMイメージ対(1)810のROMイメージ1およびROMイメージ2(ROM1/ROM2)にコピーする(S931)。さらに、たとえばROM3のBIOSプログラムを用いて起動処理を行う(S950)。ステップS909でXOR回路2の演算処理の結果が‘1’の場合は、2つのROMイメージ対に正しいデータが存在しないものとして、ディスプレイ・コントローラ122を介して外部ディスプレイ124にシステムエラーとして表示する(S910)。
図8の構成および図9のフローチャートに示す動作を一般化すると、図10の構成および図11のフローチャートに示す動作になる。すなわち、図10は図8の構成を拡張した情報処理システムの構成例である。さらに図11はこの一般化された構成を用いて、システムの起動および壊れたROMイメージのリカバリを行う動作を示す。図11に示すように、パワーオンリセット(S1101)後、最初にカウンタ1005のカウントをn=1に設定する(S1102)。次に、基本的に以下の動作を繰り返す。すなわち、システム構成で決まるROMイメージ対の数(N)と現在起動しようとしているROMイメージを含むROMイメージ対の番号(n)について、カウンタ1005を用いてnとNを比較して(S1103)、順番にn番目のROMイメージ対(対応するROMイメージはROM2n−1、ROM2n)に設定するためにアドレス切り替え器1004で切り替え、CPU102をリセットし(S1104)、そのROMイメージ対にあるROM2n−1、ROM2nのどちらか(通常はROM2n−1)のROMイメージのBIOSプログラムを用いて起動処理を行い(S1105)、各イメージ対を構成するROMイメージであるROM2n−1、ROM2nのそれぞれのデータを対応する比較回路n(たとえばXOR回路)1012,1022、・・・1032で演算処理して、ROMイメージ対のデータが壊れているかどうか判定を行い(S1106)、壊れている場合(XOR回路の出力が‘1’)には、次のROMイメージ対での起動処理に移行するためにカウンタを1だけ増分する(S1107)。このように、S1103乃至S1106のステップを繰り返す。ROMイメージ対のデータが壊れていない場合(XOR回路の出力が‘0’)には、該ROMイメージ対の前後の正しく起動できなかったROMイメージ対にあるROMイメージを回復する処理に入る(図11の(a)および(b)のフロー)。
いずれかのROMイメージ対で正しく起動できた場合、図11の(a)に示すステップに従って、次の起動に備えるために、正しく起動できなかったROMイメージ対の番号pが正常に起動できたROMイメージ対の番号nと比較して小さい場合、正しく起動できなかったROMイメージ対p(ROM2p−1、ROM2pを含む)を正しく起動できたROMイメージ対nにあるROM2n−1に書き換える(コピーする)処理を行う(S1121乃至S1124)。たとえば図8のROM1/ROM2のイメージ対(1)810が壊れている場合、正しく起動できたROM3/ROM4のイメージ対(2)820のROM3のイメージをROM1およびROM2にコピーする場合が、図11の(a)に示すステップ1121乃至1124に該当する(n=2,p=1)。
また、正しく起動できたが、起動を試みなかったROMイメージ対が後続にある場合は、図11の(b)に示すステップ(S1131乃至S1135)に従って処理される。起動を試みなかったROMイメージ対mの各ROMイメージ(ROM2m−1とROM2m)のイメージ内容が同じかどうか比較し(S1133)、イメージ内容が異なる場合は、正しく起動できたROMイメージ対nに含まれるROM2n−1をROM2m−1とROM2mにコピーして、書き換える(S1134)。たとえば図8のROM1/ROM2のイメージ対(1)810が正しく起動できたが、後続のROM3とROM4のイメージ対(2)820についても各ROMイメージのイメージ内容をチェックし、イメージ内容が異なる場合は、正しく起動できたROM1のデータ内容をROM3とROM4にコピーする場合が図11の(b)のステップ1131乃至1135に該当する(n=1,m=2)。
図11の(a)、(b)のステップは、p、mのカウントおよびROM2m−1とROM2mのデータ内容の比較などは、ROMイメージに格納される起動/リカバリ用ブロック(図2を参照)のプログラム・コードに組み込むことができる。
以上の実施の形態では、本発明の情報処理システムは図1に示すようにパーソナルコンピュータのようなコンピュータ・システムを想定できるが、本発明はこれに限定されずPCサーバやワークステーション等の情報処理システム全般に適用可能である。また、オペーレーティング・システムとしては、Windows(登録商標) XP,AIX(登録商標),Linux(登録商標)などが好ましいが、本発明は特定のオペレーティング・システム環境に限定されるわけではない。
以上の実施の形態では、アドレス切り替え器の現在の状態を電源断時においても保持し得るようにアドレス切り替え器の現在の切り替え状態をフラッシュROMに保存することも可能であるが不揮発性RAM(NVRAM)等のメモリに保存しておくようにしても良い。
以上の実施の形態では、1つのROM内の複数のROMイメージのうち、BIOSプログラムをそれぞれ格納する2つのROMイメージを切り替えるようにしたが、3つ以上のROMイメージ(それぞれがBIOSプログラムを含む)をグループにして、アドレス切り替え器で順番にグループを切り替えるように構成しても良い。
以上の実施の形態では、BIOSプログラムを記憶するメモリとしてフラッシュROMを用いたが、EEPROM(ElectronicallyErasable and Programmable Read Only Memory)等にBIOSプログラムを記憶させておくようにしても良い。
以上、本発明の実施の形態について説明したが、本発明は上記の実施形態に限定されることはない。その他、本発明は、主旨を逸脱しない範囲で当業者の知識に基づき種々の改良、修正、変更を加えた態様で実施できるものである。
本発明による情報処理システムの全体構成の例を示す図である。 フラッシュROM内のROMイメージを示す図である。 本発明による起動/リカバリ機構を含む、第1の実施形態による情報処理システムを示す図である。 本発明による誤りデータパターン検出回路を有する起動/リカバリ機構を含む、第2の実施形態による情報処理システムを示す図である。 図3の構成による第1の実施形態の動作を示すフローチャートである。 フラッシュROMにデータを書き込む方法と誤りデータパターン(FF)の関係を示す図である。 図4の構成による第2の実施形態の動作を示すフローチャートである。 本発明による2つのROMイメージ対を有する第3の実施形態による情報処理システムを示す図である。 図8の構成による第3実施形態の動作を示すフローチャートである。 本発明によるN個のROMイメージ対を有する情報処理システムを示す図である。 図10の構成による実施形態の動作を示すフローチャートである。 従来技術のBIOSプログラムを格納したROMイメージの例を示す。(a)単一機能ブロック、(b)マルチ機能ブロックの例である。
符号の説明
100:情報処理システム
102:CPU
106:メモリ
112:バス
122:ディスプレイ・コントローラ
124:外部ディスプレイ
126:ハードディスク・ドライブ(HDD)コントローラ
128:ハードディスク・ドライブ(HDD)
132:通信アダプタ
134:通信ネットワーク
200:(フラッシュ)ROM
202:ROMイメージ1
204:ROMイメージ2
210:BIOSプログラム1
220:BIOSプログラム2
300:起動/リカバリ機構
302:比較回路
304:アドレス切り替え器
306:システムリセット手段
308:誤りデータパターン検出回路

Claims (17)

  1. 複数のBIOS(基本入出力システム)プログラムを有する情報処理システムであって、
    BIOSプログラムを格納する第1のROMイメージと前記第1のROMイメージが複製された第2のROMイメージを含む記憶手段と、
    前記記憶手段に結合され、前記記憶手段から出力される前記第1のROMイメージおよび前記第2のROMイメージのイメージ内容を比較するための比較手段と、
    前記比較手段に結合され、前記第1のROMイメージの前記BIOSプログラムによって前記システムを起動するように、最初に前記第1のROMイメージを選択し、前記比較手段の比較結果において前記イメージ内容が異なる場合には選択された前記第1のROMイメージを前記第2のROMイメージに切り替える切り替え手段と、
    を備える情報処理システム。
  2. 前記切り替え手段に結合され、該切り替え手段がROMイメージを切り替えたことに応答して、前記システムをリセットするシステムリセット手段をさらに備える、請求項1記載の情報処理システム。
  3. 前記記憶手段と前記切り替え手段に結合され、前記記憶手段から出力される前記第1および第2のROMイメージ内の誤りデータパターンを検出し、検出結果を前記切り替え手段に入力する、誤りデータパターン検出手段をさらに備える、請求項1記載の情報処理システム。
  4. 前記誤りデータパターン検出手段によって、前記第1のROMイメージおよび前記第2のROMイメージのうちの一方のROMイメージに誤りデータパターンが検出された場合に、前記切り替え手段が他方のROMイメージに切り替える、請求項3記載の情報処理システム。
  5. 前記比較手段が排他的論理和回路であり、前記切り替え手段が各ROMイメージのアドレスを切り替えるアドレス切り替え器である、請求項1記載の情報処理システム。
  6. 前記記憶手段がフラッシュROMであり、前記第1のROMイメージと前記第2のROMイメージが1つのフラッシュROM内に格納される、あるいは別個のフラッシュROMにそれぞれ格納される、請求項1記載の情報処理システム。
  7. 複数のBIOS(基本入出力システム)プログラムを有する情報処理システムであって、
    BIOSプログラムを格納する第1のROMイメージと前記第1のROMイメージが複製された第2のROMイメージを備える第1のROMイメージ対と、前記BIOSプログラムと同じかまたは異なる別のBIOSプログラムを格納する第3のROMイメージと前記第3のROMイメージが複製された第4のROMイメージを備える第2のROMイメージ対とを含む記憶手段と、
    前記記憶手段から出力される前記第1のROMイメージ対を受け取るように前記記憶手段に結合され、前記第1のROMイメージおよび前記第2のROMイメージを比較するための第1の比較手段と、
    前記記憶手段から出力される前記第2のROMイメージ対を受け取るように前記記憶手段に結合され、前記第3のROMイメージおよび前記第4のROMイメージを比較するための第2の比較手段と、
    前記第1の比較手段および前記第2の比較手段に結合され、前記第1の比較手段および前記第2の比較手段からの比較結果のそれぞれの入力に基づいて、各ROMイメージが同じイメージ内容を有するROMイメージ対を選択するための切り替え手段であって、前記第1のROMイメージ対に含まれる一方のROMイメージのBIOSプログラムによって前記システムを起動するように、最初に前記第1のROMイメージ対を選択し、前記第1の比較手段の比較結果において前記第1のROMイメージおよび前記第2のROMイメージのイメージ内容が異なる場合には前記第2のROMイメージ対に切り替える切り替え手段と、
    前記切り替え手段に結合され、切り替えが行われたことに応答して前記システムをリセットするシステムリセット手段と、
    を備える情報処理システム。
  8. 前記切り替え手段が選択されているROMイメージ対に対応する番号をカウントするためのカウンタを備える、請求項7記載の情報処理システム。
  9. 前記第1の比較手段の比較結果において前記イメージ内容が同じ場合には前記第1のROMイメージ対のうち、前記第1のROMイメージに格納されたBIOSプログラムで前記システムの起動処理を行い、前記第2のイメージ対の前記第3のROMイメージおよび前記第4のROMイメージを前記第1のROMイメージで書き換えるように前記システムを制御するCPUをさらに備える、請求項7記載の情報処理システム。
  10. BIOSプログラムを格納した第1のROMイメージおよび前記第1のROMイメージが複製された第2のROMイメージを含む情報処理システムにおいて、前記情報処理システムの起動およびデータの壊れたROMイメージのリカバリを行う方法であって、
    前記第1のROMイメージの前記BIOSプログラムで前記システムを起動するステップと、
    前記第1のROMイメージおよび第2のROMイメージのイメージ内容を比較するステップと、
    前記比較において、前記イメージ内容が異なる場合は、各ROMイメージ内に誤りデータパターンがあるか検出するステップと、
    前記第1のROMイメージにおいて前記誤りデータパターンを検出した場合は、前記第2のROMイメージに切り替え、前記システムをリセットし、前記第2のROMイメージのBIOSプログラムで前記システムを起動するステップと、
    前記誤りデータパターンが検出された前記第1のROMイメージを前記第2のROMイメージで書き換えるステップと、
    を含む方法。
  11. 前記比較するステップで、前記イメージ内容が同じである場合、前記第1のROMイメージの前記BIOSプログラムで前記起動するステップを続ける、請求項10記載の方法。
  12. 前記第2のROMイメージにおいて前記誤りデータパターンを検出した場合は、前記第2のROMイメージを前記第1のROMイメージで書き換えるステップをさらに含む、請求項10記載の方法。
  13. 前記誤りデータパターンが前記第1および第2のROMイメージで検出されない場合はシステムエラーの表示を行うステップをさらに含む、請求項10記載の方法。
  14. BIOSプログラムを格納した第1のROMイメージと前記第1のROMイメージが複製された第2のROMイメージを備える第1のイメージ対と、前記BIOSプログラムと同じかまたは異なる別のBIOSプログラムを格納した第3のROMイメージと前記第3のROMイメージが複製された第4のROMイメージを備える第2のイメージ対とを含む情報処理システムにおいて、前記情報処理システムの起動およびデータの壊れたROMイメージのリカバリを行う方法であって、
    前記第1のROMイメージ対の前記第1のROMイメージの前記BIOSプログラムで前記システムを起動するステップと、
    前記第1のROMイメージおよび第2のROMイメージのイメージ内容を比較するステップと、
    前記比較において、前記イメージ内容が異なる場合は、前記第2のROMイメージ対に切り替え、前記システムをリセットし、前記第2のROMイメージ対のうちの前記第3のROMイメージの前記BIOSプログラムで前記システムを起動するステップと、
    前記第3のROMイメージおよび第4のROMイメージのイメージ内容を比較し、該イメージ内容が同じ場合は、前記第1のROMイメージおよび第2のROMイメージを前記第3のROMイメージで書き換えるステップと、
    を含む方法。
  15. 前記第1のROMイメージおよび第2のROMイメージのイメージ内容を比較する前記ステップにおいて、前記第1および第2のROMイメージの前記イメージ内容が同じで、かつ前記第3のROMイメージおよび第4のROMイメージのイメージ内容を比較する前記ステップにおいて、前記第3および第4のROMイメージの前記イメージ内容が異なる場合には、前記第3および第4のROMイメージを前記第1のROMイメージで書き換えるステップをさらに含む、請求項14記載の方法。
  16. BIOSプログラムを格納した第1のROMイメージおよび前記第1のROMイメージが複製された第2のROMイメージを含む情報処理システムにおいて、前記情報処理システムの起動およびデータの壊れたROMイメージのリカバリをコンピュータにより行うために、
    前記第1のROMイメージのBIOSプログラムで前記システムを起動する手順と、
    前記第1のROMイメージおよび第2のROMイメージのイメージ内容を比較する手順と、
    前記比較において、前記イメージ内容が異なる場合は、各ROMイメージ内に誤りデータパターンがあるか検出する手順と、
    前記第1のROMイメージにおいて前記誤りデータパターンを検出した場合は、前記第2のROMイメージに切り替え、前記システムをリセットし、前記第2のROMイメージのBIOSプログラムで前記システムを起動する手順と、
    前記誤りデータパターンが検出された前記第1のROMイメージを前記第2のROMイメージで書き換える手順と、
    を前記コンピュータに実行させるためのプログラム。
  17. BIOSプログラムを格納した第1のROMイメージと前記第1のROMイメージが複製された第2のROMイメージを備える第1のイメージ対と、前記BIOSプログラムと同じかまたは異なる別のBIOSプログラムを格納した第3のROMイメージと前記第3のROMイメージが複製された第4のROMイメージを備える第2のイメージ対を含む前記情報処理システムにおいて、前記情報処理システムの起動およびデータの壊れたROMイメージのリカバリをコンピュータにより行うために、
    前記第1のROMイメージ対の前記第1のROMイメージの前記BIOSプログラムで前記システムを起動する手順と、
    前記第1のROMイメージおよび第2のROMイメージのイメージ内容を比較する手順と、
    前記比較において、前記イメージ内容が異なる場合は、前記第2のROMイメージ対に切り替え、前記システムをリセットし、前記第2のROMイメージ対のうちの前記第3のROMイメージの前記BIOSプログラムで前記システムを起動する手順と、
    前記第3のROMイメージおよび第4のROMイメージのイメージ内容を比較し、前記イメージ内容が同じ場合は、前記第1のROMイメージおよび第2のROMイメージを前記第3のROMイメージで書き換える手順と、
    を前記コンピュータに実行させるためのプログラム。
JP2008550139A 2006-12-18 2007-12-17 情報処理システムおよび該システムの起動/リカバリ方法 Expired - Fee Related JP4456653B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
JP2006340224 2006-12-18
JP2006340224 2006-12-18
JP2007198183 2007-07-30
JP2007198183 2007-07-30
PCT/JP2007/074230 WO2008075646A1 (ja) 2006-12-18 2007-12-17 情報処理システムおよび該システムの起動/リカバリ方法

Publications (2)

Publication Number Publication Date
JPWO2008075646A1 true JPWO2008075646A1 (ja) 2010-04-08
JP4456653B2 JP4456653B2 (ja) 2010-04-28

Family

ID=39536276

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008550139A Expired - Fee Related JP4456653B2 (ja) 2006-12-18 2007-12-17 情報処理システムおよび該システムの起動/リカバリ方法

Country Status (4)

Country Link
EP (1) EP2124151B1 (ja)
JP (1) JP4456653B2 (ja)
KR (1) KR101107446B1 (ja)
WO (1) WO2008075646A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8392762B2 (en) 2008-02-04 2013-03-05 Honeywell International Inc. System and method for detection and prevention of flash corruption
KR101188711B1 (ko) 2010-10-13 2012-10-09 (주)뉴온시스 트렁크 브이오아이피 게이트웨이 시스템에서 멀티 이미지 구동 장치 및 이를 이용한 구동방법
US8732527B2 (en) 2011-08-16 2014-05-20 Google Inc. Secure recovery apparatus and method
CN104025047B (zh) * 2012-01-05 2017-06-06 三菱电机株式会社 信息处理装置、信息处理方法以及计算机程序
JP5870696B2 (ja) * 2012-01-06 2016-03-01 日本電気株式会社 情報処理装置、情報処理装置のシステム動作設定方法及びプログラム
JP2014089497A (ja) * 2012-10-29 2014-05-15 Mitsubishi Electric Corp 情報処理装置
JP6021597B2 (ja) * 2012-11-15 2016-11-09 三菱電機株式会社 情報処理装置、情報処理方法、およびコンピュータプログラム
TWI474163B (zh) 2012-12-17 2015-02-21 Hon Hai Prec Ind Co Ltd 基本輸入輸出系統的存取系統及方法
US10360148B2 (en) 2013-07-31 2019-07-23 Hewlett-Packard Development Company, L.P. Generating a second code from a first code
WO2023173362A1 (en) * 2022-03-17 2023-09-21 Micron Technology, Inc. Error information storage for boot-up procedures

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000148467A (ja) * 1998-11-05 2000-05-30 Sharp Corp 情報処理装置、情報処理装置の基本システムプログラム書換方法及び情報処理装置の基本システムプログラム書換プログラムを記録した記録媒体
JP2004013719A (ja) * 2002-06-10 2004-01-15 Fujitsu Ltd 多重化された不揮発性メモリの更新回路、及び多重化された不揮発性メモリの更新方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5793943A (en) * 1996-07-29 1998-08-11 Micron Electronics, Inc. System for a primary BIOS ROM recovery in a dual BIOS ROM computer system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000148467A (ja) * 1998-11-05 2000-05-30 Sharp Corp 情報処理装置、情報処理装置の基本システムプログラム書換方法及び情報処理装置の基本システムプログラム書換プログラムを記録した記録媒体
JP2004013719A (ja) * 2002-06-10 2004-01-15 Fujitsu Ltd 多重化された不揮発性メモリの更新回路、及び多重化された不揮発性メモリの更新方法

Also Published As

Publication number Publication date
KR101107446B1 (ko) 2012-01-19
WO2008075646A1 (ja) 2008-06-26
JP4456653B2 (ja) 2010-04-28
EP2124151B1 (en) 2012-06-27
EP2124151A1 (en) 2009-11-25
KR20090091708A (ko) 2009-08-28
EP2124151A4 (en) 2010-09-15

Similar Documents

Publication Publication Date Title
JP4456653B2 (ja) 情報処理システムおよび該システムの起動/リカバリ方法
US7900036B2 (en) System and method for implementing boot/recovery on a data processing sysem
JP4868216B2 (ja) ファームウェア更新回路およびファームウェア更新方法
JP4385215B2 (ja) スナップショットシミュレーション機能を有するディスクアレイ装置
CN111666111B (zh) 多节点储存系统及其固件的更新方法
JP4940599B2 (ja) 情報処理装置、情報処理装置制御プログラム、情報処理装置制御方法
KR101576370B1 (ko) 컴퓨터 시스템의 원격 복원 시스템 및 그 방법, 그리고 기록한 컴퓨터로 읽어 들일 수 있는 기록매체
JP2000010788A (ja) 緊急動作処理機能を有するコンピュータ装置
CN107894894B (zh) 用于更新设备软件的系统和方法
KR101850275B1 (ko) 빠른 부팅을 위한 부트 이미지를 생성하는 방법 및 이를 수행하는 화상형성장치, 부트 이미지를 이용하여 빠른 부팅을 수행하는 방법 및 이를 수행하는 화상형성장치
CN111971650A (zh) 绘图装置、绘图程序及存储介质
JP4648097B2 (ja) レジストリ情報の修復方法および情報処理装置
US11249661B2 (en) Information processing apparatus, control method, and program
KR101845467B1 (ko) 빠른 부팅을 위한 부트 이미지의 에러를 복구하는 방법 및 이를 수행하는 화상형성장치
JP6556980B2 (ja) ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム
KR101850272B1 (ko) 빠른 부팅을 위한 부트 이미지를 업데이트하는 방법 및 이를 수행하는 화상형성장치
JP3547208B2 (ja) マルチプロセッサシステム及びその構成方法
JP4165423B2 (ja) コアi/oカードを実装したシステムボード
TWI775578B (zh) 嵌入式電子裝置、啟動方法及內儲程式之嵌入式電子裝置可讀取記錄媒體
JP4876662B2 (ja) メモリダンプ機能を備えたコンピュータシステム、プログラム及びメモリダンプの方法
JP2023119785A (ja) コンピュータ及びデータ不整合判定方法
JP2008117404A (ja) メモリ書き換え制御システム。
JP2007058505A (ja) 情報処理装置および情報処理装置起動方法
JP2024006308A (ja) Raid構成管理装置、raid構成管理方法及びraid構成管理プログラム
JP6582704B2 (ja) 情報処理装置、デバイス接続管理プログラム及びデバイス接続管理方法

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100202

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100205

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130212

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130212

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140212

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees