JP4620430B2 - アダプタの高速ロードのための装置、システム、方法、記録媒体、およびプログラム - Google Patents

アダプタの高速ロードのための装置、システム、方法、記録媒体、およびプログラム Download PDF

Info

Publication number
JP4620430B2
JP4620430B2 JP2004331079A JP2004331079A JP4620430B2 JP 4620430 B2 JP4620430 B2 JP 4620430B2 JP 2004331079 A JP2004331079 A JP 2004331079A JP 2004331079 A JP2004331079 A JP 2004331079A JP 4620430 B2 JP4620430 B2 JP 4620430B2
Authority
JP
Japan
Prior art keywords
code image
load
module
new code
old
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.)
Expired - Fee Related
Application number
JP2004331079A
Other languages
English (en)
Other versions
JP2005166043A (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 JP2005166043A publication Critical patent/JP2005166043A/ja
Application granted granted Critical
Publication of JP4620430B2 publication Critical patent/JP4620430B2/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
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Facsimiles In General (AREA)

Description

本発明は、マイクロコードなどの埋め込みコードに関し、より詳細には、通信アダプタ上でコード・イメージを更新するための装置、システムおよび方法に関する。
ユーザは、コンピュータ・システムおよびコンピュータ・サブシステムの高い可用性を必要とし続ける。ウェブ・サーバ、データベース・サーバ、アプリケーション・サーバなどは、24時間使用可能であるものと期待されている。こうしたシステムのメンテナンスおよびアップグレードでは、システムがオフラインである時間を最小限に抑えるべきである。
コンピュータ・システムまたはサブシステムは、操作を実施するための基本的な命令セットを含む。この基本的な命令セットは、コンピュータ・システムまたはサブシステムがどのように機能するかを定義するオペレーティング・システムに類似している、基本的な1組のコンピュータ命令を含む。一般に、この基本的な命令セットは、コード・イメージ、マイクロコード、埋め込みコードなどと称される。コード・イメージは一般に、アセンブリ・コード命令、または特定のマイクロプロセッサまたはハードウェア・セットあるいはその両方のために最適化される生のマシン言語のバイナリ・コード命令を含む。
一般に、コンピュータ・システムに電源が入ると、基本入出力システム(BIOS:BasicInput Output System)プログラムは、コード・イメージを揮発性RAMにロードする。あるいは、コード・イメージは、不揮発性RAMまたは他の形のメモリに格納される。コンピュータ・システムが適切に初期化されると、コード・イメージ内の命令の実行が開始する。
コード・イメージは、改善された機能の提供、プログラミングのバグの解決、および新しいハードウェアのサポートの全てまたはそれらの何れかのために、定期的に更新されなければならない。旧コード・イメージを並列に実行しているコンピュータ・システムの中断を最小限に抑えながら、旧コード・イメージが新コード・イメージで更新されることが望ましい。さらに、新コード・イメージが、旧コード・イメージとおよそ同じメモリ位置に格納されることが望ましい。具体的には、新コード・イメージは、旧コード・イメージより大きいことも小さいこともあるが、一般に、少なくとも一部は、旧コード・イメージ上に格納される。コード・イメージの更新では、時間が最小限に抑えられることを必要とし、複雑さが最小限に抑えられた操作を含み、また更新の完了直後、通常の操作を開始する際に、最小限の遅延がもたらされるべきである。
従来、コード・イメージの更新は、ブートストラップ・コードとして知られている旧コード・イメージのあるセクションによって実施される。ブートストラップ・コードは、コード・イメージ更新操作を知らせる割込みに応答して実行される。一般に、ブートストラップ・コードは、ディスク・ドライブなどのソースから、旧コード・イメージが占めている同じ空間に、新コード・イメージを直接にコピーする。コピー操作は部分的に、または全体的に、旧コード・イメージを新コード・イメージで上書きする。このプロセスは、コード・オーバーレイとして知られている。
典型的なコード・オーバーレイ・プロセスは、影響を受けるハードウェア装置が、比較的に大きな時間の間、オフラインであることを必要とする。ホスト・バス・アダプタなどのI/Oアダプタの場合、このプロセスは、完了するのに数分間かかることがあり、この時間の間に、ホストは、アダプタに障害が発生したと判断し、代替パスに切り換えることができる。代替パスが存在しない場合は、この長いプロセスの間、システム全体が停止することがある。タイムアウトおよびフェイルオーバの時間の間に、システムを停止するにしろ、コード・オーバーレイのプロセスの間に、システムを完全にオフラインにするにしろ、I/Oパスの中断およびユーザのシステム可用性が損なわれることによって、大きな損害が及ぼされ得る。
したがって、コード・オーバーレイ・プロセスの間に発生し得る、I/Oの中断を最小限に抑える装置、システムおよび方法が求められている。こうした装置、システムおよび方法が、複数のパスの必要性を克服し、またタイムアウト、障害、および回復時間の必要性を回避して、許容できる閾値内にまで、中断時間を低減することが有益である。
本発明は、当技術分野の現状に応えて、また具体的には、現在使用可能な通信アダプタおよびシステムによってまだ十分に解決されていない、当技術分野の問題およびニーズに応えて、開発されてきた。したがって、本発明は、上記で論じた、当技術分野における欠点の多くまたはすべてを克服する、通信アダプタ上で高速ロード・コード・イメージ更新を行うための装置、システムおよび方法を提供するために開発されてきた。
通信アダプタ上で高速ロード・コード・イメージ更新を行うための装置に、通信アダプタ上での高速ロード・コード・イメージ更新に必要なステップを、機能的に実行するように構成された複数のモジュールを含む論理装置を設ける。説明する実施形態内のこうしたモジュールは、クエリ・モジュール、イメージ・ロード・モジュール、イメージ・ブリッジ・モジュール、メモリ初期化モジュール、イメージ・オーバーレイ・モジュール、高速ロード・キー・モジュール、標準アダプタ初期化モジュール、および高速ロード・アダプタ初期化モジュールを含む。
ある実施形態では、クエリ・モジュールは、旧コード・イメージの特徴を識別し、旧コード・イメージと新コード・イメージの間の差または非互換性を判断するように構成される。イメージ・ロード・モジュールは、新コード・イメージのコピーを、ホスト上のホスト・バス・アダプタなど、通信アダプタ内のメモリにロードするように構成される。イメージ・ブリッジ・モジュールは、旧コード・イメージと新コード・イメージの間の非互換性を照合調整するように構成される。
別の実施形態では、メモリ初期化モジュールは、メモリ初期化操作を実施するために、新コード・イメージを起動するように構成される。イメージ・オーバーレイ・モジュールは、旧コード・イメージに新コード・イメージをオーバーレイするように構成される。高速キー・モジュールは、通信アダプタ上の高速ロード・コード・イメージ更新を示すための高速ロード・キーを作成し格納するように構成される。標準アダプタ初期化モジュールは、高速ロード・キーへのアクセスの失敗に応答して、標準初期化シーケンスを使用して、通信アダプタを初期化するように構成される。あるいは、高速ロード・アダプタ初期化モジュールは、高速ロード・コード・イメージ更新、ならびに高速ロード初期化シーケンスを起動する前に、高速ロード・キーに首尾よくアクセスしたことに応答して、高速ロード初期化シーケンスを使用して、通信アダプタを初期化するように構成される。別の実施形態では、高速ロード初期化シーケンスの1つまたは複数の部分を、標準の初期化方法のステップとインターリーブし、またはそれで置き換えることができ、したがって、高速ロード・キーの存在に動的に反応する、単一の初期化バスだけが必要になる。
通信アダプタ上の高速ロード・コード・イメージ更新を容易にするためのストレージ・システムも提示される。ある実施形態では、記載のシステムは、ストレージ・サーバであり、ソース入力装置、ストレージ・システム・プロセッサ、およびストレージ・システム通信アダプタを含む。ソース入力装置は、新コード・イメージを格納する、ソース電子記憶媒体装置を受け入れるように構成される。ストレージ・システム・プロセッサは、高速ロード・コード・イメージ更新を開始し、ホスト通信アダプタに、高速ロード・コード・イメージ更新について通知するように構成される。ストレージ・システム通信アダプタは、ホスト通信アダプタに、新コード・イメージを送信するように構成される。
通信アダプタ上で高速ロード・コード・イメージ更新を行うための本発明の方法もまた、提示される。開示する実施形態では、この方法は、記載の装置およびシステムの操作に関して、上記で提示した機能を実施するのに必要なステップを実質的に含む。具体的には、記載の方法の一実施形態は、新コード・イメージのコピーを、通信アダプタ内のメモリにロードするステップと、メモリ初期化操作を実施するために、新コード・イメージを起動するステップと、旧コード・イメージに新コード・イメージをオーバーレイするステップとを含む。この方法は、本明細書で述べる追加のステップをも含み得る。
本発明の一実施形態では、有益に、コード・イメージ更新時に、ホスト・バス・アダプタなどの通信アダプタがオフラインでいる時間を最小限に抑える。別の実施形態では、ホストが、コマンドのタイムアウト、不適切なポートの指定、パスの削除、回復シーケンスの必要性などを回避することができるように、通信アダプタがオフラインになる時間を有利に低減する。さらに、ある実施形態では、本発明は、単一ホストからストレージ・システムへのマルチパス接続の現在の必要性をなくし、または少なくとも大幅に減少させる。
別の実施形態では、有益に、本発明によって、旧コードの更新は、並列に新コードをロードし、または通信アダプタにステージングしながら、I/O要求の処理を継続することができる。さらに、本発明の一実施形態では、新コード・イメージまたは少なくともそのブートストラップ・モジュールが、準備のコード・イメージ更新機能を含めて、1つまたは複数のブートストラップ操作を並列に実行する一方で、旧コード・イメージが、I/O要求の処理を継続できるようにする。
本明細書を通して、特徴、利点または類似の言語への言及は、本発明によって実現され得るすべての特徴および利点が、本発明のいずれの単一の実施形態にも、存在すべきであり、または存在することを示唆するものではない。そうではなく、特徴および利点に言及する言語は、一実施形態に関連して述べた具体的な特徴、利点または特性が、本発明の少なくとも1つの実施形態に含まれることを意味するものと理解されよう。したがって、本明細書を通して、特徴、利点および類似の言語についての議論は、同じ実施形態について言及するものであり得るが、必ずしもそうであるとは限らない。
さらに、記載する本発明の特徴、利点および特性は、1つまたは複数の実施形態において、任意の適切なやり方で、組み合わせることができる。特定の実施形態の1つまたは複数の具体的な特徴または利点なしに、本発明が実施され得ることが、関連分野の技術者には理解されよう。他の場合では、本発明のすべての実施形態に必ずしも存在しないことがあり得る追加の特徴および利点が、一部の実施形態で
認識され得る。
本発明のこうした特徴および利点は、以下の説明および添付の特許請求の範囲から、より完全に明らかになり、または以下で述べる本発明を実施することによって知ることができる。
本発明の利点が容易に理解されるように、上記で簡潔に述べた本発明のより具体的な説明を、添付の図面に図示される特定の実施形態を参照して示す。これらの図面は、本発明の典型的な実施形態を示すものにすぎず、したがって、その範囲を限定するものと見なすべきでないという理解のもとに、本発明について、添付の図面を用いて、さらに具体的にかつ詳細に示し説明する。
本明細書で述べる機能ユニットの多くは、実装の独立性をより特別に強調するために、モジュールと称されている。たとえば、あるモジュールは、カスタムのVLSI回路またはゲート・アレイ、論理チップ、トランジスタまたは他の個別部品などの既成半導体を含む、ハードウェア回路として実装され得る。モジュールは、フィールド・プログラマブル・ゲート・アレイ、プログラマブル・アレイ論理、プログラマブル論理装置など、プログラマブルなハードウェア装置で実装することもできる。
モジュールは、様々なタイプのプロセッサによって実行するためのソフトウェアで実装することもできる。実行可能コードのある識別されたモジュールは、たとえば、オブジェクト、プロシージャまたは関数などとして構成され得る、コンピュータ命令の1つまたは複数の物理的なまたは論理的なブロックを含み得る。しかし、識別されたモジュールの実行可能コードは、物理的に共に位置する必要はなく、しかし、それぞれ異なる位置に格納された、全く異なる命令を含むことができ、この命令は、論理的に組み合わせられると、そのモジュールを含んでおり、モジュールの定められた目的を達成する。
実際に、実行可能コードのモジュールは、単一の命令であることも、多数の命令であることもあり、さらに、様々なプログラム間で、また複数のメモリ装置に渡って、複数の異なるコード・セグメントに分散され得る。同様に、本明細書では、モジュール内で、オペレーショナル・データを、識別し示すことができ、任意の適切な形で実装し、また任意の適切なタイプのデータ構造体内で構成することができる。オペレーショナル・データは、単一のデータ・セットとして収集されることがあり、それぞれ異なる記憶装置を含めて、異なる場所に分散されることもあり、また少なくとも部分的には、システムまたはネットワーク上の単なる電子信号として存在し得る。
この明細書を通して、「ある実施形態」、「一実施形態」、または類似の言語への言及は、実施形態に関連して述べる具体的な特徴、構造または特性が、本発明の少なくとも1つの実施形態に含まれることを意味する。したがって、この明細書を通して、表現「ある実施形態における」、「一実施形態における」、または類似の言語が現れる場合は、同じ実施形態に言及するものであり得るが、必ずしもすべてがそうであるとは限らない。
さらに、記載する本発明の特徴、構造または特性は、1つまたは複数の実施形態で、任意の適切なやり方で組み合わせることができる。以下の説明では、本発明の実施形態について、完全な理解をもたらすために、プログラミング、ソフトウェア・モジュール、ユーザ選択、ネットワーク・トランザクション、データベース・クエリ、データベース構造体、ハードウェア・モジュール、ハードウェア回路、ハードウェア・チップの例など、多くの具体的な詳細を提供する。しかし、こうした具体的な詳細のうちの1つまたは複数の詳細なしに、または他の方法、構成要素、材料などを用いて、本発明を実施できることが関連分野の技術者には理解されよう。他の場合では、本発明の側面を不明瞭にすることを避けるために、周知の構造体、材料または操作については、詳細には示しまたは説明していない。
図1に、従来のコード・イメージ更新方法100を示す。従来のコード・オーバーレイを実施し、I/Oアダプタを再ロードするための標準の技法は、ホスト・バス・アダプタ(HBA:host bus adapter)をオフラインにし104、したがって、I/Oを休止することから開始する102。次いで、従来のコード・イメージ更新方法100は、新コード・イメージをホスト・バス・アダプタにロードし106、旧コード・イメージをオーバーレイする。コード・オーバーレイは従来、たとえば旧コードまたはフラッシュ・イメージに格納されたブートストラップ・コードによって実施される。さらに、新コード・イメージは、必要に応じて、いずれかのフラッシュに書き込み108、電源投入時自己診断(POST:power-onself-test)を実行する110。
次いで、新コード・イメージは、いずれかのコード構造体を初期化し112、ホスト・バス・アダプタをオンラインに戻し114、I/Oが再開できるようにする。次いで、図示する従来のコード・イメージ更新方法100は、終了する116。この説明は、コード・イメージ更新方法100を正確に示すものであるが、図示するステップが実行される順序、および追加のステップは、実装によって異なり得る。
ホスト・バス・アダプタが位置するホストは、ホスト・バス・アダプタがオフラインでいる時間、たとえば約2分またはそれ以上などの間に、I/Oの送信を再試行することがある。ホストが再試行の閾値時に、I/Oを送信することができない場合、コマンドは、ある時間、たとえば通常30秒から60秒の間、タイムアウトになり得る。ここで述べるオフラインおよびタイムアウトの時間枠は、おおよそのものであり、特定のハードウェアまたはアプリケーションの構成によって異なり得る。タイムアウトになると、ホストは、ホスト・バス・アダプタが機能していないと見なし、そのポートを「不良」とラベル付けし、パス・グループから、そのパスを削除し得る。ホストは、パスを再び確立するために、回復シーケンスを実施しなければならない可能性が高い。したがって、従来のコード・イメージ更新方法100では、2分またはそれ以上に渡るホストの停止を引き起こし得る。
図2に、本発明を実施するのに適した通信システム200の一実施形態を示す。図示する通信システム200は、ストレージ・システム208に接続された、3つのホスト202、204、206を含む。ある実施形態では、ストレージ・システム208は、データを格納するように構成されたストレージ・サーバである。第1および第2のホスト202、204は、交換機210を介してストレージ・システム208に、重複して接続される。あるいは、第3のホスト206は、ストレージ・システム208に直接に接続される。分かりやすくするために、他の接続装置は省略してある。
図示する実施形態では、3つのホスト202、204、206が示されているが、通信システム200は、それより多いまたは少ないホスト202、204、206およびストレージ・システム208で動作し得る。さらに、ホスト202、204、206は、冗長性および直接性が様々である、代替構成のストレージ・システム208に接続され得る。さらに、図示するケーブル接続は、ファイバ・チャネル、エンタープライズ・システム接続(ESCON:Enterprise System Connection(R))、ファイバ接続(FICON:Fiber Connection)チャネル、小型コンピュータ・システム・インターフェイス(SCSI:SmallComputer System Interface)などを含み得る。
図示するホスト202、204、206は、1つまたは複数のホスト・バス・アダプタ(HBS)212、214、216を含む。HBA212、214、216はそれぞれ、対応するホスト202、204、206とストレージ・システム208の間でデータを転送するのに必要な、I/O操作の大部分を管理するように構成される。具体的には、ホスト・バス・アダプタ212、214、216はそれぞれ、ほとんどまたは全くホスト202、204、206が介在しない状態で、非常に高速に多くのI/O操作を実施するように最適化され、ホスト202、204、206の作業負荷が最小限に抑えられる。
図示するストレージ・システム208は、複数の冗長ホスト・アダプタ218、220およびクラスタ222、224を含む。ホスト・アダプタ218、220は、上述のホスト・バス・アダプタ212、214、216に実質的に類似している。クラスタ222、224はそれぞれ、1つまたは複数のマルチプロセッサ226、228および複数の論理装置番号(LUN:logical unit number)230、232、234、236への接続を含み得る。ある特定の実施形態では、1つのクラスタ222は主に、偶数のLUN230、234にアクセスすることができ、他のクラスタ224は主に、奇数のLUN232、236にアクセスすることができる。ホスト・アダプタ218、220とクラスタ222、224の間、ならびにマルチプロセッサ226、228とLUN230、232、234、236の間の冗長パスによって、ハードウェア障害などの障害の場合に、データの格納およびアクセスが可能になる。さらに、ストレージ・システム208は、RAIDアレイ(redundantarray of independent disk:独立ディスクの冗長アレイ)を使用することができ、格納されたデータをたぶんミラーリングおよびストライピングし、またパリティ・データを計算し格納する。
図示するホスト202、204、206のうちの1つについてのどんな言及も、特に明記しない限り、ホスト202、204、206のうちのいずれかまたはすべてについての言及であると理解されよう。同様に、図示するホスト・バス・アダプタ212、214、216のうちの1つについてのどんな言及も、特に明記しない限り、ホスト・バス・アダプタ212、214、216またはホスト・アダプタ218、220のうちのいずれか1つまたはすべてについての言及であると理解されよう。また重複して図示するクラスタ222、224、マルチプロセッサ226、228、またはLUN230、232、234、236のうちの1つについての言及も、特に明記しない限り、それぞれ単一の対応する装置についての言及であると理解されよう。
本発明を説明するに当たって、簡潔で分かりやすくするために、この明細書を通して、本発明の様々な実施形態について、具体的には、ホスト・バス・アダプタ212、214、216およびホスト・アダプタ218、220で使用されるプロセッサおよびメモリに関連して説明する。本明細書で述べる諸実施形態は、代表的な例にすぎず、特許請求の範囲で定義される本発明の範囲を限定するためのものではない。本発明は、コード・イメージを実行し、またコード・オーバーレイを使用して、コード・イメージを更新することができる、マイクロプロセッサなどのプロセッサ、特定用途向け集積回路(ASIC:Application Specific Integrated Circuit)などを含む、任意のコンピュータまたは電気システムで実装され得ることが当業者には理解されよう。
図3に、図2のホスト・アダプタ218、220に実質的に類似している、ホスト・バス・アダプタ(HBA)300の一実施形態を示す。図示するホスト・アダプタ300は、プロセッサ(CPU)302、1つまたは複数のフラッシュ・メモリ装置304、1つまたは複数のプログラマブル論理アレイ(PLA:programmable logic array)306、I/Oポート308、ローカル・メモリ装置310および並列コード・ロード装置312を含む。既存のコード・イメージ314は、ローカル・メモリ装置310に格納される。既存のコード・イメージ314は、新コード・イメージ316によって置き換えられ、または他の方法で、新コード・イメージ316によって廃棄され得るので、旧コード・イメージ314と称される。新コード・イメージ316は、ローカル・メモリ装置310にロードされ、格納され得る。
CPU302は、旧コード・イメージ314内の操作命令を実行するように構成される。ある実施形態では、旧コード・イメージ314は、ホスト・アダプタ300がホスト202とストレージ・システム208の間などの高速I/O操作を実施することを可能にするように構成される。フラッシュ・メモリ装置304およびPLA306は、I/O操作を適切に実施するために、CPU302と対話する。さらに、I/Oポート308は、ホスト・アダプタ300が、ホスト202などの他の装置と、データおよび制御情報を通信できるようにする。
ある実施形態では、新コード・イメージ316は、ローカル・メモリ装置310内の一時的なメモリ位置に格納される。好ましくは、一時的なメモリ位置は、CPU302が一時的なメモリ位置に格納される命令を実行することができるように構成される。ある実施形態では、一時的なメモリ位置は、メモリ310内のバッファである。好ましくは、一時的なメモリ位置を含む、ローカル・メモリ装置310は、ランダム・アクセス・メモリ(RAM:random access memory)、不揮発性ランダム・アクセス・メモリ(NVRAM:non-volatile randomaccess memory)などの高速メイン・メモリである。
ある実施形態では、旧コード・イメージ314および新コード・イメージ316は、ローカル・メモリ装置310内の連続したブロック内に格納される。あるいは、旧コード・イメージ314および新コード・イメージ316は、ローカル・メモリ装置310内の別個のブロックに格納されることも、それぞれ異なるメモリ装置に格納されることもある。さらに、ローカル・メモリ装置310は、旧コード・イメージ314および新コード・イメージ316とは別個の1つまたは複数のデータ構造体306を格納するように構成され得る。
図示する並列コード・ロード装置312は、クエリ・モジュール318、イメージ・ロード・モジュール320、イメージ・ブリッジ・モジュール322、メモリ初期化モジュール324、イメージ・オーバーレイ・モジュール326、高速ロード・キー・モジュール328、標準アダプタ初期化モジュール330、および高速ロード・アダプタ初期化モジュール332を含む。並列コード・ロード装置312は、ホスト・アダプタ300内に図示されているが、並列コード・ロード装置312、あるいは1つまたは複数のモジュールは、ストレージ・システム208内のプロセッサ226内に格納されることも、別の装置内に格納されることもある。
ある実施形態では、クエリ・モジュール318は、旧コード・イメージ314の特徴を識別し、旧コード・イメージ314と新コード・イメージ316の間の差または非互換性があるかどうかを判断するように構成される。旧コード・イメージ314と新コード・イメージ316の間に非互換性が存在するかどうかを判断するために、クエリ・モジュール318は、旧コード・イメージ314のバージョンが新コード・イメージ316のバージョンと異なるかどうかを判断することができる。あるいはクエリ・モジュール318は、旧コード・イメージ314のサイズ、場所または他の特徴が、新コード・イメージ316のそれと異なるかどうかを判断することができる。
ある実施形態では、イメージ・ロード・モジュール320は、新コード・イメージ316のコピーを、ローカル・メモリ装置310または別の類似のメモリ装置にロードするように構成される。別の実施形態では、イメージ・ロード・モジュール320は、新コード・イメージ316を、旧コード・イメージ314の一部によって占有されていない、ローカル・メモリ装置310内のある位置にロードすることができる。新コード・イメージ316は、磁気ディスクまたは光ディスクなどのソース媒体からロードすることができ、またある実施形態では、ストレージ・システム208にロードされ、ホスト・アダプタ218に送信される。あるいは、ホスト・バス・アダプタ212上で、旧コード・イメージ314を更新するために、新コード・イメージ316をホスト202にロードすることもできる。
ある実施形態では、イメージ・ブリッジ・モジュール322は、旧コード・イメージ314と新コード・イメージ316の間の非互換性を照合調整するように構成される。非互換性を照合調整するために実行され得る厳密な命令は、照合調整される非互換性のタイプに依存する。ある場合では、非互換性の照合調整は、記憶レジスタ、メモリ、またはハードウェア装置のための初期化の順序を変更することを含み得る。別の場合では、非互換性の照合調整は、新コード・イメージ316がデータ構造体を使用するために、そのデータ構造体のフォーマットを変換することを含み得る。さらに他のタイプの操作が、別のタイプの非互換性を照合調整するために実行され得る。
ある実施形態では、メモリ初期化モジュール324は、旧コード・イメージ314に新コード・イメージ316をオーバーレイすることに備えて、ローカル・メモリ装置310、またはその一部を初期化するように構成される。メモリ初期化モジュール324は、新コード・イメージ316内の実行可能コードが、一時的なメモリ位置から実行され得るように、ローカル・メモリ装置310、またはその一部を初期化するようにさらに構成される。別の実施形態では、メモリ初期化モジュール324は、フラッシュ・メモリ装置304およびPLA306を初期化するように構成され得る。
ある実施形態では、イメージ・オーバーレイ・モジュール326は、旧コード・イメージ314に新コード・イメージ316をオーバーレイするように構成される。こうしたオーバーレイでは、新コード・イメージ316を、旧コード・イメージ314のすべてまたは一部の上にコピーし得る。さらに、こうしたオーバーレイでは、旧コード・イメージ314によって占有されていない位置に、新コード・イメージ316の一部をコピーし得る。さらに、イメージ・オーバーレイ・モジュール326は、新コード・イメージ316がうまくコピーされたことを確認するために、エラー検出およびエラー訂正を実施するように構成され得る。代替実施形態では、新コード・イメージ316のコピーを、一時的なメモリ位置から削除することも、削除しないこともある。
ある実施形態では、高速ロード・キー・モジュール328は、高速ロード・キーを作成し格納するように構成される。高速ロード・キーによって、高速ロード・コード・オーバーレイを使用して、ホスト・アダプタ218内の旧コード・イメージ314が、高速ロード・コード・オーバーレイを用いて、新コード・イメージ316によってうまくオーバーレイされたことを示すことができる。ある実施形態では、高速ロード・キーは、新コード・イメージ316のメタデータ・セグメント502内に格納され得る。高速ロード・キー・モジュール328は、高速ロード・コード・オーバーレイの後に、I/O通信が再確立されると、標準初期化シーケンスではなく、高速ロード・初期化シーケンスを使用して、ホスト・アダプタ218を初期化できるかどうかを判断することもできる。ある実施形態では、高速ロード初期化シーケンスは、標準アダプタ初期化シーケンスのすべてまたは一部を含み得る。
ある実施形態では、標準アダプタ初期化モジュール330は、従来の初期化シーケンスを使用して、ホスト・アダプタ218を初期化するように構成される。ホスト・アダプタ218は、初期化されて、その後に、I/O通信を開始し、たとえば、ホスト・アダプタ218は、オフラインにされ、オンラインに戻される。標準アダプタ初期化モジュール330は、新コード・イメージ316のメタデータ・セグメント502内に、高速ロード・キーが見つからない場合には、通常のブート・ハンドシェークおよびPOSTを含めて、従来の初期化シーケンスを使用して、ホスト・アダプタ218を初期化することができる。
ある実施形態では、高速ロード・アダプタ初期化モジュール332は、高速ロード初期化シーケンスを使用して、ホスト・アダプタ218を初期化するように構成される。高速ロード初期化シーケンスは、たとえば、コード・オーバーレイの前に、状態が確認されるので、メモリまたはハードウェアあるいはその両方が既に有効な状態であると見なすことによって、ホスト・アダプタ300を初期化するのに必要な時間を最小限に抑える。ある実施形態では、コード更新プロセスで、ローカル・メモリ装置310内の初期化変数が初期化される。別の実施形態では,ハードウェア・マシン状態が有効であり、すなわちコード更新プロセスの開始前に、良好なエラー訂正コード(ECC:error correction code)を有することが確認される。ある特定の実施形態では、高速ロード・アダプタ初期化モジュール332は、適切な高速ロード・キーが提供される場合にだけ、高速ロード初期化シーケンスを起動する。さらに、高速ロード・アダプタ初期化モジュール332は、従来の初期化シーケンス時、実施されるべき高速ロード初期化シーケンスの1つまたは複数の部分を起動することができる。このようにして、標準初期化シーケンスが、高速ロード初期化シーケンスからの1つまたは複数のステップを含むように修正され得る。たとえば、高速ロード・アダプタ初期化モジュール332は、従来の初期化シーケンスの実施時に、1つまたは複数の高速ロード初期化操作を起動することができ、それによって、高速ロード初期化シーケンスを実施する。
図4に、図3に示すホスト・アダプタ300のローカル・メモリ装置310に格納され得る、旧コード・イメージ314の一実施形態を示す。図示する旧コード・イメージ314は、メタデータ・セグメント402、ランタイム・セグメント404およびデータ・セグメント406を含む。メタデータ・セグメント402は、旧コード・イメージ314およびその内容を表すメタデータを含み得る。ある実施形態では、ランタイム・セグメント404は、CPU302によって実行可能な1つまたは複数の命令を含む。ランタイム・セグメント404内の命令は、「テキスト」と称され得る。データ・セグメント406は、ランタイム・セグメント404内の実行可能コードによって使用され得る、いずれのデータまたはデータ構造体あるいはその両方をも含む。メタデータ・セグメント402、ランタイム・セグメント404およびデータ・セグメント406はそれぞれ、単一のデータ・ブロックとして示されているが、こうしたセグメント402、404、406を分割し、ローカル・メモリ装置310内に、様々な構成で、互いに分散させることができる。
ある実施形態では、ランタイム・セグメント404は、更新モジュール408を含み得る。更新モジュール408は、ロード・モジュール410および分岐モジュール412を含み得る。ある実施形態では、ロード・モジュール410は、新コード・イメージ316を、ローカル・メモリ装置310にロードするように構成される。ロード・モジュール410は、マニュアルまたは自動のコード更新コマンドまたは割込みに応答して、新コード・イメージ316をロードすることができる。
上述のように、新コード・イメージ316は、バッファ、一時的な記憶場所または別の類似の場所に格納することができる。別の実施形態では、ロード・モジュール410は、新コード・イメージ316をローカル・メモリ装置310にロードした後に、エラー・チェック、および新コード・イメージ316の他の有効性チェックを実施するように構成され得る。さらに、ロード・モジュール410は、一時的なメモリ位置から、新コード・イメージ316内の命令を実行することを可能にするように、ローカル・メモリ装置310を構成することができる。
従来のコード・イメージ更新では、旧コード・イメージ314内のブートストラップ・コード(図示せず)が実行され得る。しかし、本発明では、分岐モジュール412が、CPU302に、旧コード・イメージ314ではなく、新コード・イメージ316内に位置する命令の実行を開始させることができる。したがって、旧コード・イメージ314および新コード・イメージ316が、ローカル・メモリ装置310または他の装置内の重複しない場所に格納されるので、新コード・イメージ316からの命令が、一次的な場所から実行される一方で、旧コード・イメージ314のランタイム・セグメント404およびデータ・セグメント406を保持することができる。
図5に、図3に示すホスト・アダプタ300のローカル・メモリ装置310内に格納され得る、新コード・イメージ316の一実施形態を示す。図示する新コード・イメージ316は、メタデータ・セグメント502、ランタイム・セグメント504およびデータ・セグメント506を含む。メタデータ・セグメント502は、新コード・イメージ316およびその内容を表すメタデータを含み得る。ある実施形態では、ランタイム・セグメント504は、CPU302によって実行可能な1つまたは複数の命令を含む。データ・セグメント506は、ランタイム・セグメント504内の実行可能コードによって使用され得る、いずれのデータまたはデータ構造体あるいはその両方をも含む。メタデータ・セグメント502、ランタイム・セグメント504およびデータ・セグメント506はそれぞれ、単一のデータ・ブロックとして示されているが、こうしたセグメント502、504、506を分割し、ローカル・メモリ装置310内に、様々な構成で、互いに分散させることができる。
ある実施形態では、メタデータ・セグメント502は、図3を参照して述べた高速ロード・キー508を含み得る。ある実施形態では、ランタイム・セグメント504は、ブートストラップ・モジュール510を含み得る。ブートストラップ・モジュール510は、変換モジュール512およびコピー・モジュール514を含み得る。
ある実施形態では、変換モジュール512は、旧コード・イメージ314と新コード・イメージ316の間の潜在的な非互換性を照合調整するように構成される。非互換性は、新コード・イメージ316が、旧コード・イメージ314のパフォーマンス・レベルにまで、少なくとも1つの機能を実施できない原因になる、旧コード・イメージ314と新コード・イメージ316の間の差を含み得る。したがって、非互換性は、様々な形で表れ得る。まず第1に、新コード・イメージ316のバージョンが旧コード・イメージ314のバージョンとは異なることが知られている場合、非互換性は、黙示的であり得る。ある実施形態では、新コード・イメージ316のバージョンは、新コード・イメージ316のメタデータ・セグメント502内に格納され得る。同様に、旧コード・イメージ314のバージョンは、旧コード・イメージ314のメタデータ・セグメント402内に格納され得る。
少なくとも1つの非互換性は、旧コード・イメージ314によって使用されるデータ構造体と、新コード・イメージ316によって使用されるデータ構造体の間の差を含み得る。データ構造体間の差は、異なる値、異なるフォーマットなどであり得る。データ構造体は、旧コード・イメージ314または新コード・イメージ316内に格納されるデータ構造体であり得る。
別の実施形態では、別の非互換性は、旧コード・イメージ314とは異なる、新コード・イメージ316の初期化要件を含み得る。初期化要件は、レジスタの再設定、バッファまたはキャッシュあるいはその両方の消去などを含み得る。さらに、新コード・イメージ316がデータ構造体を追加する場合、こうしたデータ構造体もまた、初期化される必要がある。
変換モジュール512は、識別されるどんな非互換性をも照合調整するように構成することもできる。たとえば、変換モジュール512は、新コード・イメージ316が旧コード・イメージ314と少なくとも同じ機能を十分に実施することができるように、データ構造体および構成設定を調整するように構成することもできる。さらに、新コード・イメージ316は、追加の機能を実施し、旧コード・イメージ314よりも改良された点をもたらし得る。
ある実施形態では、ブートストラップ・モジュール510のコピー・モジュール514は、旧コード・イメージ314の少なくとも1部に、新コード・イメージ316をオーバーレイするように構成される。好ましくは、旧コード・イメージ314が開始したのと同じローカル・メモリ装置310のアドレスで開始するために、新コード・イメージ316がオーバーレイされる。このようにして、不都合な影響が、ローカル・メモリ装置310の事前に定義されまたは固定のアドレス位置に依存し得る、他のマイクロコードおよびハードウェアの割込み部分までに、最小限に抑えられる。ある特定の実施形態では、コピー・モジュール514は、オーバーレイされたコピーにエラーがないことを確認するために、新コード・イメージ316のコピーについて、保全性および有効性チェックを実施することができる。さらに、コピー・モジュール514は、新コード・イメージ316が一時的に格納された、ローカル・メモリ装置310をフラッシュすることができる。別の実施形態では、コピー・モジュール514または変換モジュール512は、フラッシュ・メモリ装置304、PLA306、または新コード・イメージ316にインターフェイスすることができる他のモジュールを更新することもできる。
以下の概略フローチャートでは、論理フローチャートとして、一般的に説明している。したがって、図示する順序およびラベル付けされたステップは、提示するプロセスの一実施形態を示すものである。図示するプロセスの機能、論理、あるいは1つまたは複数のステップ、またはその一部に対する効果において等価である、他のステップおよびプロセスが考案され得る。さらに、使用するフォーマットおよび記号体系は、プロセスの論理ステップを説明するために示されており、プロセスの範囲を限定するものではないことが理解されよう。様々な矢印タイプおよび直線タイプがフローチャート内で使用され得るが、それらは、対応するプロセスの範囲を限定するものではないことが理解されよう。実際、一部の矢印または他の結合子を使用して、プロセスの論理フローだけを示すことができる。たとえば、矢印は、図示するプロセスの列挙されたステップ間の特定されていない継続時間の待機または監視期間を示し得る。さらに、特定のプロセスが発生する順序は、図の対応するステップの順序に厳密に従うことも、従わないこともある。
図6に、ホスト・アダプタ300またはホスト・バス・アダプタ212で使用され得る、コード・イメージ準備方法600の一実施形態を示す。図示するコード・イメージ準備方法600は、ホスト・アダプタ300に、マシン状態、コード・レベルおよび更新について問い合わせる604ことから開始する602。ある実施形態では、クエリ・モジュール318は、ホスト・アダプタ300に問い合わせるクエリ604。クエリ・モジュール318は、高速ロード・コード更新がホスト・アダプタ300によってサポートされているかどうかを判断することもできる606。こうしたサポートは、旧コード・イメージ314のバージョン、新コード・イメージ316のバージョン、ホスト・アダプタ300のハードウェア・コンポーネントなどに依存し得る。
ホスト・アダプタ300上で、高速ロード・コード更新がサポートされる場合、ある実施形態では、イメージ・ロード・モジュール320は、次いで、新コード・イメージ316を、ローカル・メモリ装置310にロードする608。イメージ・ロード・モジュール320は、新コード・イメージ316が適切にロードされた608ことを確認するために、新コード・イメージ316を検査することもできる610。ある実施形態では、イメージ・ロード・モジュール320は、エラー検出およびエラー訂正技術を使用して、新コード・イメージ316を検査することができる610。
次いで、図示するコード・イメージ準備方法600は、新コード・イメージ316内のレベルを、現在はたとえばフラッシュ・メモリ装置304内にあるレベルと比較して継続する。ある実施形態では、次いで、イメージ・ブリッジ・モジュール322は、フラッシュ・メモリ装置304を更新する必要があるかどうかを判断し614、そうである場合は、フラッシュ・メモリ装置304を更新する616。フラッシュ・メモリ装置304の更新616について、図7を参照して、より詳しく論じる。別の実施形態では、イメージ・ブリッジ・モジュール322は、いずれかのPLA306またはホスト・アダプタ300内の他のハードウェア・コンポーネントを更新する必要があるかどうかを判断することもできる。別の実施形態では、イメージ・ブリッジ・モジュール322は、旧コード・イメージ314と新コード・イメージ316の間の非互換性を照合調整することもできる。
ある実施形態では、ホスト・アダプタ300が、たとえばホスト202とのI/O通信を処理し続けながら、上記ステップのすべてが実行される。これは、旧コード・イメージ314とは別個のメモリ位置に格納される、新コード・イメージ316内のブートストラップ・モジュール510に、更新モジュール408が分岐するときに、旧コード・イメージ314をそのまま維持することによって、少なくとも一部、可能になる。換言すると、ホスト・アダプタ300が、ホスト202からのI/Oを受け付け続ける間、ブートストラップ・モジュール510は、上記機能の多くまたはすべてを実施することができる。
ある実施形態では、上記ステップが完了した後にだけ、ホスト・アダプタ300がオフラインにされ618、I/Oが休止(中断)される。ある実施形態では、ホスト・アダプタ300は、こうしたコマンドを処理せずに、ホストから、I/Oコマンドを引き続き受け付けることができる。こうした機能を実施する前に、ホスト・アダプタ300をオフラインにすることと比べると、図示するコード・イメージ準備方法600では、ホスト・アダプタ300がオフラインにされ、I/O要求を処理できない時間を、大きく最小限に抑えることができる。次いで、図示するコード・イメージ準備方法600は、終了する620。
図7に、フラッシュ更新方法700の一実施形態を図示するが、これは、図6のコード・イメージ準備方法600で提示したフラッシュ・メモリ装置304の更新616を例示するために示すものである。ある実施形態では、フラッシュ・メモリ装置304の更新は、小さいセグメント内で実施される。図示するフラッシュ更新方法700は、フラッシュ・メモリ装置304のあるセグメントを消去し704、次いで、その消去704の完了を確認する706ことから開始する702。フラッシュ更新方法700は続けて、消去されたセグメントを更新し708、更新710が適切に完了したことを確認する710。次いで、フラッシュ更新方法700は、追加のセグメントを更新する必要があるかどうかを判断し712、そうである場合は、戻って、次のセグメントを消去する704。
すべてのセグメントが適切に更新され708、確認されると710、図示するフラッシュ更新方法700は次いで、終了する714。上述のように、ホスト・アダプタ300が並行にI/O要求を受け付ける間に、1つまたは複数のフラッシュ・メモリ装置304を更新することができる。このように、それぞれのセグメントの消去704および更新708に比較的に長い時間が必要であっても、フラッシュ・メモリ装置304の更新によって、ホスト・アダプタ300がオフラインでいる時間が増加されない。別の実施形態では、並列I/O処理時に、PLA306および他のハードウェアを更新することもできる。
図8に、ホスト・バス・アダプタ300上で使用することができる、コード・イメージ・コピー方法800の一実施形態を示す。ある実施形態では、コード・イメージ・コピー方法800は、コード・イメージ準備方法600が完了し、ホスト・バス・アダプタ300がオフラインにされた618後のある時点に行われる。図示するコード・イメージ・コピー方法800は、たとえばホスト・バス・アダプタ300のローカル・メモリ装置310内で、新コード・イメージ316を見つける804ことから開始する802。次いで、メモリ初期化モジュール324は、必要に応じて、ローカル・メモリ装置310を初期化する806。
次いで、イメージ・オーバーレイ・モジュール326は、図3を参照して上記で論じたように、旧コード・イメージ314に新コード・イメージ316をオーバーレイする。ある実施形態では、イメージ・オーバーレイ・モジュール326は、いずれのコード・イメージ・データ参照をもフラッシュし810、またキャッシュから、命令参照をフラッシュし得る812。これは、こうした参照が、オーバーレイされた808、旧コード・イメージ314に対応しているからである。しかし、一部の実施形態では、イメージ・オーバーレイ・モジュール326は、新コード・イメージ316または旧コード・イメージ314のどんな部分または参照をも削除する必要はない。次いで、高速ロード・キー・モジュール328は、高速ロード・キーを生成して、たとえば新コード・イメージ316のメタデータ・セグメント502内に、それを格納して814、高速ロード・コード更新が実施されることを示すことができる。次いで、ブートストラップ・モジュール510は、初期化に分岐し816、図示するコード・イメージ・コピー方法800は、次いで、終了する818。
図9に、ホスト・バス・アダプタ300上で使用することができる、コード・イメージ初期化方法900の一実施形態を示す。ある実施形態では、コード・イメージ初期化方法は、図7のコード・イメージ・コピー方法700によって起動される。図示するコード・イメージ初期化方法900は、ホスト・アダプタ300の「ライトを消す」904ことから開始する902。この時点まで、ホスト・アダプタ300は、短い間、I/O処理を中断していたが、光ファイバ伝送ハードウェアを含めて、いずれのハードウェアをもシャットダウンしていない。この時点で、ホスト・バス・アダプタ300は、通信装置の少なくとも一部をシャットダウンして、「ライトをオフにする」904。代替実施形態では、「ライトをオフにする」904ことが不要であり得る。実際、ある特定の実施形態では、ライトが「オン」であるか、「オフ」であるかは、重要でない。
次いで、コード・イメージ初期化方法900は、高速ロード・コード更新が実施されたことを意味する、高速ロード・キーが存在するかどうかを判断する906。ある実施形態では、高速ロード・キー・モジュール328が、新コード・イメージ316内に、適切な高速ロード・キー508を見つけると、高速ロード・アダプタ初期化モジュール332は、高速ロード初期化シーケンスを実行する。そうでない場合は、標準初期化モジュール330は、高速ロード初期化シーケンスよりも長い時間を要し得る、従来の初期化シーケンスを実施し得る。高速ロードまたは標準の初期化シーケンスが完了した後に、ホスト・バス・アダプタ300は、「ライトをオンにし」912、I/O要求の処理を再開する。
別の実施形態では、高速ロード初期化モジュール332は、標準初期化シーケンスを補完する、一部の高速ロード初期化ステップを実行することができる。このようにして、標準初期化モジュール330は、一部の従来のステップを、高速ロード初期化シーケンスからのステップで置き換えて、従来の初期化シーケンスを実施することができる。代替実施形態では、高速ロード初期化モジュール332は、従来の初期化シーケンスを補完するように、1つまたは複数の高速ロード初期化ステップを実施することができる。
高速ロード・コード更新および初期化シーケンスを使用して、ホスト・アダプタ300は、上記プロセスのほとんどを通じて、I/O処理を継続することができる。たとえば、ある実施形態では、ホスト・アダプタ300がオフラインでいる合計時間は、ライトが「オフ」であるおよそ1秒を含めて、およそ2〜3秒であり得る。ライトが「オフになる」904と、ホスト212は、状態変化を認識し、再びログインする。ホスト・アダプタ300は、従来の技術を用いた2分間以上ではなく、「許容できる欠陥」であると見え得る間、オフラインであるにすぎないので、ホスト212は、タイムアウト時間を使い果たす前に、再びログインすることができる。別の実施形態では、通信システム200の特定のトポロジ、およびホスト・アダプタ300によって使用されるプロトコル次第で、コード・イメージ初期化方法900の時に、ライトを「オフにする」904ことが不要であり得る。
上記の説明で、ストレージ・システムおよびストレージ・エリア・ネットワークの範囲内において、用語「ホスト・アダプタ」および「ホスト・バス・アダプタ」を使用しているが、本発明の範囲は、マイクロコードが更新され得る、すべての通信アダプタにまで及ぶことが理解されよう。本発明は、コード・イメージ更新時の最小限のオフライン時間または最大限のI/O処理時間によって利益を得る、通信システムの一部を形成する通信アダプタ上で、コード・イメージを更新することに特に適用することができる。
本発明は、その精神または基本的な特徴から逸脱せずに、他の特定の形で実施することができる。上述の諸実施形態は、すべての点において、限定的ではなく、例示的なものにすぎないと見なすべきである。したがって、本発明の範囲は、上記の説明ではなく、添付の特許請求の範囲によって示される。特許請求の範囲の等価物の意味および範囲内に含まれるすべての変更は、その範囲内に包含されるべきである。
従来のコード・イメージ更新方法を示す概略フローチャートである。 本発明による通信システムの一実施形態を示す概略ブロック図である。 本発明によるホスト・バス・アダプタの一実施形態を示す概略ブロック図である。 本発明による旧コード・イメージの一実施形態を示す概略ブロック図である。 本発明による新コード・イメージの一実施形態を示す概略ブロック図である。 本発明によるコード・イメージ準備方法の一実施形態を示す概略フローチャートである。 本発明によるフラッシュ更新方法の一実施形態を示す概略フローチャートである。 本発明によるコード・イメージ・コピー方法の一実施形態を示す概略フローチャートである。 本発明によるコード・イメージ初期化方法の一実施形態を示す概略フローチャートである。
符号の説明
100 コード・イメージ更新方法
200 通信システム
202 ホスト
204 ホスト
206 ホスト
208 ストレージ・システム
210 交換機
212 ホスト・バス・アダプタ
214 ホスト・バス・アダプタ
216 ホスト・バス・アダプタ
218 ホスト・アダプタ
220 ホスト・アダプタ
222 クラスタ
224 クラスタ
226 マルチプロセッサ
228 マルチプロセッサ
230 論理装置番号
232 論理装置番号
234 論理装置番号
236 論理装置番号
300 ホスト・アダプタ
302 CPU
304 フラッシュ・メモリ装置
306 プログラマブル論理アレイ
308 I/Oポート
310 ローカル・メモリ装置
312 並列コード・ロード装置
314 旧コード・イメージ
316 新コード・イメージ
318 クエリ・モジュール
320 イメージ・ロード・モジュール
322 イメージ・ブリッジ・モジュール
324 メモリ初期化モジュール
326 イメージ・オーバーレイ・モジュール
328 高速ロード・キー・モジュール
330 標準アダプタ初期化モジュール
332 高速ロード・アダプタ初期化モジュール
402 メタデータ・セグメント
404 ランタイム・セグメント
406 データ・セグメント
408 更新モジュール
410 ロード・モジュール
412 分岐モジュール
502 メタデータ・セグメント
504 ランタイム・セグメント
506 データ・セグメント
508 高速ロード・キー
510 ブートストラップ・モジュール
512 変換モジュール
514 コピー・モジュール
600 コード・イメージ準備方法
700 フラッシュ更新方法
800 コード・イメージ・コピー方法
900 コード・イメージ初期化方法

Claims (9)

  1. 通信アダプタ上で高速ロード・コード・イメージ更新を行うための並列コード・ロード装置であって、
    前記通信アダプタ上の高速ロード・コード・イメージ更新を示すための高速ロード・キーを作成し格納するように構成された高速キー・モジュールと、
    新コード・イメージのコピーを前記通信アダプタ内のメモリにロードするように構成されたイメージ・ロード・モジュールであって、前記メモリが前記通信アダプタによって使用された旧コード・イメージのコピーを並列に格納するイメージ・ロード・モジュールと、
    前記旧コード・イメージのデータ構造体の値、フォーマット、前記新コード・イメージのレジスタ再設定、バッファ、キャッシュまたはバッファおよびキャッシュの消去を含む初期化要件を識別し、前記旧コード・イメージと前記新コード・イメージの間の差を判断するように構成されたクエリ・モジュールと、
    メモリ初期化操作を実施するために、前記新コード・イメージを起動するように構成されたメモリ初期化モジュールと、
    標準初期化シーケンスを使用して、前記通信アダプタを初期化するように構成された標準アダプタ初期化モジュールと、
    前記標準初期化シーケンスの一部に対応する高速ロード初期化シーケンスを実施することにより、前記新コード・イメージを起動するように構成された高速ロード・アダプタ初期化モジュールと、
    前記旧コード・イメージに前記新コード・イメージをオーバーレイするように構成されたイメージ・オーバーレイ・モジュールとを含み、
    前記高速ロード・キーが存在する場合に、前記高速ロード初期化シーケンスを使用し、前記高速ロード・キーが存在しない場合に、前記標準初期化シーケンスを使用して、前記通信アダプタを初期化するように構成され、
    前記旧コード・イメージには、旧コード・イメージ更新を制御するように構成され、かつ前記旧コード・イメージから前記新コード・イメージに分岐するように構成された分岐モジュールが含まれ、
    前記新コード・イメージには、前記旧コード・イメージと前記新コード・イメージの間の非互換性を照合調整するように構成された変換モジュールを使用して、ブートストラップ操作を定義するように構成され、前記ブートストラップ操作によりコード・イメージ更新を実行するブートストラップ・モジュールが含まれる、並列コード・ロード装置。
  2. 前記高速ロード・アダプタ初期化モジュールは、さらに、前記高速ロード初期化シーケンスを使用する前に、高速ロード・キーにアクセスする、請求項1に記載の装置。
  3. コード・イメージ更新モジュールが、前記新コード・イメージを前記メモリにロードするように構成されたロード・モジュールを含む、請求項1に記載の装置。
  4. イメージ・ブリッジ・モジュールが前記旧コード・イメージと前記新コード・イメージの間のデータ構造体の値、フォーマット、前記新コード・イメージのレジスタ再設定、バッファ、キャッシュまたはバッファおよびキャッシュの消去を含む初期化要件についての非互換性を照合調整するように構成される、請求項1に記載の装置。
  5. 前記ブートストラップ・モジュールがコピー・モジュールを含み、前記イメージ・オーバーレイ・モジュールが、前記コピー・モジュールを使用して、前記旧コード・イメージに前記新コード・イメージをオーバーレイするように構成される、請求項1に記載の装置。
  6. 請求項1〜5のいずれか1項に記載の並列コード・ロード装置を含むソース通信アダプタ上での高速ロード・コード・イメージ更新するためのストレージ・システムであって、
    ソース電子記憶媒体装置を受け入れるように構成されたソース入力装置であって、前記ソース電子記憶媒体装置が新コード・イメージを格納するように構成されるソース入力装置と、
    前記高速ロード・コード・イメージ更新を開始し、前記ソース通信アダプタに、前記高速ロード・コード・イメージ更新について通知するように構成されるストレージ・システム・プロセッサと、
    前記新コード・イメージをローカル・メモリ装置にコピーし、前記高速ロード・コード・イメージ更新を実施するように構成される前記ソース通信アダプタとを含むストレージ・システム。
  7. 請求項1〜5のいずれか1項に記載の並列コード・ロード装置を含む通信アダプタ上で高速ロード・コード・イメージ更新を行う並列コード・ロード装置が実行する方法であって、前記並列コード・ロード装置が、
    前記通信アダプタ上の高速ロード・コード・イメージ更新を示すための高速ロード・キーを作成し格納するステップと、
    新コード・イメージのコピーを前記通信アダプタ内のメモリにロードするステップであって、前記メモリが前記通信アダプタによって使用された新コード・イメージのコピーを並列に格納するステップと、
    前記旧コード・イメージの特徴を識別し、前記旧コード・イメージと前記新コード・イメージの間の差を判断するステップと、
    前記旧コード・イメージと前記新コード・イメージの間のデータ構造体の値、フォーマット、前記新コード・イメージのレジスタ再設定、バッファ、キャッシュまたはバッファおよびキャッシュの消去を含む初期化要件についての非互換性を照合調整するステップと、
    メモリ初期化操作を実施するために、前記新コード・イメージを起動するステップと、
    前記高速ロード・キーが存在する場合に、高速ロード初期化シーケンスを使用して、前記通信アダプタを初期化するステップと、
    前記高速ロード・キーが存在しない場合に標準初期化シーケンスを使用して、前記通信アダプタを初期化するステップと、
    前記旧コード・イメージに前記新コード・イメージをオーバーレイするステップと、
    を含む方法。
  8. 請求項7に記載の高速ロード・コード・イメージ更新を行うための方法を実行するプログラムを記録したコンピュータ可読な記憶媒体。
  9. 請求項7に記載の高速ロード・コード・イメージ更新を行うための方法を実行するためのコンピュータ実行可能なプログラム。
JP2004331079A 2003-11-20 2004-11-15 アダプタの高速ロードのための装置、システム、方法、記録媒体、およびプログラム Expired - Fee Related JP4620430B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/717,822 US7313681B2 (en) 2003-11-20 2003-11-20 Apparatus, system, and method for adapter fastload

Publications (2)

Publication Number Publication Date
JP2005166043A JP2005166043A (ja) 2005-06-23
JP4620430B2 true JP4620430B2 (ja) 2011-01-26

Family

ID=34633206

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004331079A Expired - Fee Related JP4620430B2 (ja) 2003-11-20 2004-11-15 アダプタの高速ロードのための装置、システム、方法、記録媒体、およびプログラム

Country Status (5)

Country Link
US (1) US7313681B2 (ja)
JP (1) JP4620430B2 (ja)
CN (1) CN100349118C (ja)
SG (1) SG112105A1 (ja)
TW (1) TWI322356B (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112004002797B4 (de) 2004-03-19 2015-12-31 Zakrytoe Aktsionernoe Obschestvo "Intel A/O" Ausfallsicherung und Lastausgleich
US7760626B2 (en) * 2004-03-31 2010-07-20 Intel Corporation Load balancing and failover
US7428635B2 (en) * 2004-03-31 2008-09-23 Emulex Design & Manufacturing Corporation Method of writing non-volatile memory that avoids corrupting the vital initialization code
US8229301B2 (en) * 2004-09-07 2012-07-24 Finisar Corporation Configuration of optical transceivers to perform custom features
US7801449B2 (en) * 2004-09-07 2010-09-21 Finisar Corporation Off-module optical transceiver firmware paging
US7974538B2 (en) * 2004-10-29 2011-07-05 Finisar Corporation Transaction for transceiver firmware download
US7957651B2 (en) * 2004-10-29 2011-06-07 Finisar Corporation Configurable optical transceiver feature specific cost transaction
US7802124B2 (en) * 2004-10-29 2010-09-21 Finisar Corporation Microcode configurable frequency clock
US7454605B2 (en) * 2004-11-18 2008-11-18 International Business Machines Corporation Method for adapter code image update
US7805392B1 (en) 2005-11-29 2010-09-28 Tilera Corporation Pattern matching in a multiprocessor environment with finite state automaton transitions based on an order of vectors in a state transition table
US8886929B2 (en) * 2006-03-29 2014-11-11 Intel Corporation Generating a chain of trust for a virtual endpoint
US7877401B1 (en) * 2006-05-24 2011-01-25 Tilera Corporation Pattern matching
US8578335B2 (en) 2006-12-20 2013-11-05 International Business Machines Corporation Apparatus and method to repair an error condition in a device comprising a computer readable medium comprising computer readable code
US8898653B2 (en) 2007-06-27 2014-11-25 International Business Machines Corporation Non-disruptive code update of a single processor in a multi-processor computing system
US8402259B2 (en) * 2009-11-30 2013-03-19 International Business Machines Corporation Accelerating wake-up time of a system
US8495351B2 (en) * 2010-10-13 2013-07-23 International Business Machines Corporation Preparing and preserving a system configuration during a hot upgrade
GB2515554A (en) 2013-06-28 2014-12-31 Ibm Maintaining computer system operability
US10666540B2 (en) * 2017-07-17 2020-05-26 International Business Machines Corporation Dynamic time-domain reflectometry analysis for field replaceable unit isolation in a running system
US10860333B1 (en) * 2019-10-14 2020-12-08 Western Digital Technologies, Inc. Interleaved host reset and next re-initialization operations

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0695944A (ja) 1992-09-14 1994-04-08 Fujitsu Ltd ファイル入替方法
JPH0799674A (ja) 1993-09-27 1995-04-11 Fujitsu Ltd 情報処理装置の部分ファイル更新方式
JPH0895772A (ja) 1994-09-22 1996-04-12 Toshiba Corp 計算機システム及びプログラム置換方法
JPH0954690A (ja) 1995-08-11 1997-02-25 Fujitsu Ltd ファイル入替方式
US5727177A (en) * 1996-03-29 1998-03-10 Advanced Micro Devices, Inc. Reorder buffer circuit accommodating special instructions operating on odd-width results
US5960445A (en) * 1996-04-24 1999-09-28 Sony Corporation Information processor, method of updating a program and information processing system
KR100298420B1 (ko) * 1997-03-10 2001-10-24 윤종용 롬바이오스의업데이트방법
KR100258966B1 (ko) * 1997-05-02 2000-06-15 윤종용 시리얼 통신을 이용한 바이오스 업그레이드 방법
US6684393B1 (en) * 1999-01-29 2004-01-27 International Business Machines Corporation Compilation method and system to reuse memory storage instead of allocating it
US6438688B1 (en) * 1999-03-24 2002-08-20 Dell Usa, L.P. Method and computer for locally and remotely updating a basic input output system (BIOS) utilizing one update file
US6658659B2 (en) * 1999-12-16 2003-12-02 Cisco Technology, Inc. Compatible version module loading
US6732267B1 (en) * 2000-09-11 2004-05-04 Dell Products L.P. System and method for performing remote BIOS updates
US6990577B2 (en) * 2001-08-10 2006-01-24 Intel Corporation Updating a BIOS image by replacing a portion of the BIOS image with a portion of another BIOS image
US20040003377A1 (en) * 2002-06-28 2004-01-01 Di Loreto Michael A. Converting byte code instructions to a new instruction set
US7185331B2 (en) * 2002-08-27 2007-02-27 Inrange Technologies Corporation Method and apparatus for downloading executable code in a non-disruptive manner

Also Published As

Publication number Publication date
SG112105A1 (en) 2005-06-29
CN100349118C (zh) 2007-11-14
CN1627261A (zh) 2005-06-15
JP2005166043A (ja) 2005-06-23
US7313681B2 (en) 2007-12-25
TWI322356B (en) 2010-03-21
US20050125650A1 (en) 2005-06-09
TW200528991A (en) 2005-09-01

Similar Documents

Publication Publication Date Title
JP4620430B2 (ja) アダプタの高速ロードのための装置、システム、方法、記録媒体、およびプログラム
US7752617B2 (en) Apparatus, system, and method for updating an embedded code image
US7711989B2 (en) Storage system with automatic redundant code component failure detection, notification, and repair
US6442067B1 (en) Recovery ROM for array controllers
US7475282B2 (en) System and method for rapid restoration of server from back up
US7523350B2 (en) Timer-based apparatus and method for fault-tolerant booting of a storage controller
US7640409B1 (en) Method and apparatus for data migration and failover
US7765393B1 (en) Method and system of embedding a boot loader as system firmware
US10303459B2 (en) Electronic system with update control mechanism and method of operation thereof
US9389960B2 (en) Recovering from a defective boot image
US7661018B2 (en) Method, apparatus and program storage device for providing automatic recovery from premature reboot of a system during a concurrent upgrade
US7870375B2 (en) Apparatus, system, and method for updating a code image for a communication adapter
US11221927B2 (en) Method for the implementation of a high performance, high resiliency and high availability dual controller storage system
US20040153738A1 (en) Redundancy management method for BIOS, data processing apparatus and storage system for using same
US7293138B1 (en) Method and apparatus for raid on memory
US11726879B2 (en) Multiple block error correction in an information handling system
US11210024B2 (en) Optimizing read-modify-write operations to a storage device by writing a copy of the write data to a shadow block
US11226875B2 (en) System halt event recovery
US5878202A (en) I/O device having check recovery function
KR101850272B1 (ko) 빠른 부팅을 위한 부트 이미지를 업데이트하는 방법 및 이를 수행하는 화상형성장치
JP2023119785A (ja) コンピュータ及びデータ不整合判定方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070717

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20070921

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071017

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20070921

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080108

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080402

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20080508

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20080613

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100928

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20101026

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: 20101028

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

Free format text: PAYMENT UNTIL: 20131105

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: 20131105

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

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

Free format text: PAYMENT UNTIL: 20131105

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S202 Request for registration of non-exclusive licence

Free format text: JAPANESE INTERMEDIATE CODE: R315201

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

Free format text: PAYMENT UNTIL: 20131105

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D02

LAPS Cancellation because of no payment of annual fees