JP4675541B2 - データ転送および受信方法、マルチ・ノードコンピュータシステム、およびコンピュータ読取り可能な記録媒体 - Google Patents
データ転送および受信方法、マルチ・ノードコンピュータシステム、およびコンピュータ読取り可能な記録媒体 Download PDFInfo
- Publication number
- JP4675541B2 JP4675541B2 JP2002179168A JP2002179168A JP4675541B2 JP 4675541 B2 JP4675541 B2 JP 4675541B2 JP 2002179168 A JP2002179168 A JP 2002179168A JP 2002179168 A JP2002179168 A JP 2002179168A JP 4675541 B2 JP4675541 B2 JP 4675541B2
- Authority
- JP
- Japan
- Prior art keywords
- node
- data
- inter
- nodes
- data transfer
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17356—Indirect interconnection networks
- G06F15/17368—Indirect interconnection networks non hierarchical topologies
- G06F15/17375—One dimensional, e.g. linear array, ring
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Stored Programmes (AREA)
Description
関連出願
本発明は、その主題が本明細書の全体に亘って参考として取り入れられている、Yukio Nishimura et al.により2001年6月19日付けで出願された「マルチ・ノードシステムにおけるノード内ファームウェアとノード間ファームウェアとの間での最小のハードウェア資源を用いた正常条件およびエラー条件中の単純なデータ転送方法」の名称の、同時係属米国暫定特許出願第60/299,579号に対し、35U.S.C§119(e)に基づく優先権を主張するものである。
【0002】
【発明に属する技術分野】
本発明は一般に、マルチ・ノードコンピュータシステム,より特定的には、マルチ・ノードコンピュータシステムのノード内ファームウェアとノード間ファームウェアの間でデータを転送するための方法およびシステムに関する。
【0003】
【従来の技術および発明が解決しようとする課題】
マルチ・ノードコンピュータシステムは、図8に示すような多数の中央処理装置(CPU)ノード、メモリノード、および入出力(IO)ノードを含む。これらのCPUノード、メモリノードおよびIOノードは、相互接続を通して結合され得る。
【0004】
マルチCPUノードは通常、さまざまなシステム管理タスクに関連するデータまたはメッセージを転送するため、ノード間コントローラに接続している。従来のマルチ・ノードコンピュータシステムは通常、データ転送を制御および完了するため各CPUノードとノード間コントローラとの間に直接チャネルを樹立する。これを行うためには、従来のシステムにおけるCPUノードは、1バイトコマンドレジスタ、1バイト状態レジスタ、1バイトデータ−インレジスタおよび1バイトデータ−アウトレジスタを含む、共用4バイトレジスタを使用する。しかしながら、かかるハードウェア構成は、ハードウェア資源を浪費し、マルチ・ノードコンピュータシステムのその他の実現上の問題をひき起こす。たとえば、従来のCPUノードは、データを送受信するためにそのスクラッチレジスタを使用する。その結果、各CPUノード内のスクラッチレジスタは、その他のいずれの目的のためにも利用できない可能性がある。従って、最小限のハードウェア資源を使用し、従来のマルチ・ノードコンピュータシステムで遭遇する問題点をなくするような、マルチ・ノードコンピュータシステム内のノード間コントローラおよびCPUノードのための単純なデータ転送メカニズムを提供することが望まれる。
【0005】
【課題を解決するための手段】
本発明の好ましい実施形態は、従来のコマンドレジスタと状態レジスタを1バイトモジュールの形に統合し、データインレジスタとデータアウトレジスタを1バイトデータモジュールの形に統合する。こうして、ノード内ファームウェアとノード間ファームウェアの間のデータ転送を可能にするために2バイトハードウェアを用いることによってハードウェア資源は実質的に削減される。
【0006】
さらに、2バイトデータモジュールおよび制御モジュールを用いてデータを転送するようノード内ファームウェアとノード間ファームウェアに命令すべく複数の制御コードおよびデータ転送機能を用いるための方法が提供されている。該データ転送メカニズムは、ノード内ファームウェアとノード間ファームウェアとの間で多数の優先順位決定済データを取扱う能力をもつ。より高い優先順位にあるデータ転送ルーチンは、優先順位のより高いデータの転送を確保すべく、より低い優先順位にある現行データ転送を中断または延期することができる。中断されたデータ転送は、後で再開または再試行され得る。
【0007】
【発明の実施の形態】
図1は、マルチ・ノードコンピュータシステム100を示している。該システム100は、中央処理装置(CPU)ノード114,メモリ(MEM)ノード107および入出力(IO)ノード106といった複数のノード、相互接続スイッチ102およびノード間コントローラ104を含む。CPUノード114およびIOノード106といったようなノード素子は、相互接続スイッチ102を介して接続されている。CPUノード114は以下で示すようにチャネル接続を介してノード間コントローラ104に接続されている。IOノード106は少なくとも1つのIOデバイス108を収納する。マルチ・ノードコンピュータシステム100においては、各ノード114,106は、別々のコンピュータチップ,コンピュータボードまたは独立型ユニット上に実現することができる。相互接続スイッチ102は例えば、さまざまなコンピュータアプリケーションのために要求およびデータをノード114,106間で切換えるべくグローバルインターコネクトであるかまたはルーターを含むことができる。システム100のアプリケーション例としては、サーバアプリケーションがある。
【0008】
図1はまた、ノード内ファームウェア116としてCPUノード114内に含まれる全てのソフトウェアおよびハードウェアにも関するものである。ノード内ファームウェア116は、分散型計算、IOデバイス108を用いた入出力読取り/書込みオペレーションといった意図された機能を各CPUノード114が履行できるようにする。かかるノード内ファームウェアは従来のものであってよいが、マルチ・ノードコンピュータアーキテクチュア内で有効に動作するため、各ノード内ファームウェア116は、標準的に、システム初期化、エラー取扱い、ドメイン分割などを履行するノード間コントローラ104に結合される。説明のために、ノード間コントローラ104内の全てのソフトウェアおよび関係するハードウェアは、ノード間ファームウェア118と称する。ノード間ファームウェア118は、CPUノード114およびIOノード106の動作を管理する能力をもつ。例えば、ノード間ファームウェア118はシステム初期化およびエラーログを担当する。ノード間ファームウェア118はメモリノード107,IOノード106およびノード間コントローラ104を初期化することができる。ノード間ファームウェア118はまた、ノード温度または電圧ファンなどを観察することもできる。これらのタスクを達成するために、ノード間ファームウェア118およびノード内ファームウェア116は標準的に、図1および2を参照して以下で詳細に記述するようなデータおよび制御チャネルを通して互いに通信する。
【0009】
図1は、2つのタイプのデータおよび制御チャネル、すなわち正規チャネル110と直接チャネル112を示している。マルチ・ノードコンピュータシステム100内の正規チャネル110には、相互接続スイッチ102,IOノード106およびIOデバイス108が関与している。標準的には、正規チャネル110は、ノード間ファームウェア118をIOノード106内でIOデバイス108と結合する。マルチ・ノードコンピュータシステム内での正規チャネル110の現行の実現は信頼性の高いものではなく、その動作にはシステム100の初期化が必要である。かくして、システム100の好ましい実施形態においては、ノード間ファームウェア118をノード内ファームウェア116と結合させるために直接チャネル112が具備されている。ノード内ファームウェア116とノード間ファームウェア118との間の直接チャネル112は、エラーロギングおよびシステム管理情報収集といったようなさまざまな目的のために信頼性の高いデータ転送メカニズムを提供する。
【0010】
図2は、直接チャネル112を通してノード間ファームウェア118と結合する1つのノード内ファームウェア116を例示する概略図である。マルチ・ノードシステム100においては、直接チャネル112の数は、CPUノード106の数と等しい。すなわち、各CPUノード106は、1つの直接チャネル112を通してノード間コントローラ104に結合される。通信を確立するために、ノード内ファームウェア116は、データモジュール120と制御モジュール122を含む。データモジュール120は、ノード内ファームウェア116とノード間ファームウェア118との間で転送されるべきデータを記憶する。かかるデータは、エラー情報、ノード性能レベル、ノード構成情報、フロントパネルメッセージ情報およびウォッチドッグ情報であってよく、これらは、ノード間ファームウェア118に報告される必要がある。ノード間ファームウェア118はまた、システム管理の必要性に応じて、特定のオペレーションを履行するためにノード内ファームウェア116にデータを送信することもできる。制御モジュール122は、ノード内ファームウェア116と相互接続コントローラ104の間のデータ転送に関する状態情報およびさまざまなコマンドに対応する複数の制御コードを記憶する。以下で例示するように、本発明の実施形態によって提供されている制御コードは、マルチ・ノードコンピュータシステム100のために最小限のハードウェアコストしか用いずに多数の優先順位決定済みデータを取り扱うデータ転送メカニズムを有効化する。
【0011】
好ましい一実施形態においては、各、データモジュール120および制御モジュール122のサイズはちょうど1バイトである。この実施形態を実現するためには、モジュール120および122は、CPUノード114内で共通使用されるスクラッチレジスタ、あるいはCPUノード114のその他のコンポーネントと共用されるその他のあらゆる従来のメモリーデバイスであってよい。各直接チャネル112について、本発明によると、わずか2バイトのレジスタまたはメモリしか必要でない。こうすることによって、本発明は、ノード内ファームウェア116とノード間ファームウェア118との間のデータ転送を履行するために4バイトレジスタを使用するという必要条件をなくしている。こうして、CPUノード116のためのハードウェア必要条件は容易になり、結果として、多重優先順位決定済みデータ転送の100%の能力を提供する一方で、ハードウェアコストは実質的にさらに低いものとなる。
【0012】
図3および4を参照しながら以下でより詳細に記述するように、システム100の動作中、ノード内ファームウェア116がノード間ファームウェア118に対しより優先順位の高いデータ、例えばCPUノード114によるエラーレポートを送信する必要がある場合、本明細書で提供されているデータ転送メカニズムは中断ルーチンを開始させ、ファームウェア116とファームウェア118の間で進捗する間に現行のデータ転送ルーチンを中断または延期させることができる。一実施形態においては、データ通信を開始するため、ノード内ファームウェア116は、ノード間ファームウェア118に対し中断信号を送信する。ノード間ファームウェア118は、このとき制御モジュール122から制御コマンドを読取り、データモジュール120からデータを検索するか、データモジュール120からデータを送信する。ノード間ファームウェア118が、制御コマンドによって指示されたとおりに1つのオペレーションを終了した後、ノード間ファームウェア118は、ノード内ファームウェア116が次になすべきことを知ることができるように状態コードを制御モジュール122に戻すことができる。こうすることによって、より優先順位の高い中断ルーチンは、その後より高い優先順位決定済みデータをファームウェア118に送達あるいは、ファームウェアからそれを受信することができる。同時に、延期されたデータ転送のコンテキストを、以下で図5および6を参照しながら記述するように一時的に記憶し、かつその後、より高い優先順位のデータ転送が完了した後で回復させることができる。
【0013】
好ましい一実施形態においては、2つのモジュール120,122を通してのデータ転送を可能にすべく一組の制御コードが提供される。ファームウェア116および118はこれらの制御コードを、データ転送の必要性によって決定されるように、制御モジュール122内にアサートすることができる。一実施形態においては、データ転送を制御するために使用される制御コードのカテゴリーは少なくとも4つ存在し得る。すなわち、
(1)トランザクションなしを表わす制御コード。例えば、制御コード「0」は、ファームウェア116と118の間にいかなるトランザクションも発生していないことを示す。
【0014】
(2)ノード内ファームウェア116からノード間ファームウェア118へ発出されるコマンドに対応する制御コード。例えば制御コード 0x01−0x7F16進数は、ノード内ファームウェア116がノード間ファームウェア118に対し送信することのできる複数のコマンドに対応する。
【0015】
(3)ノード間ファームウェア118からノード内ファームウェア116に送信される状態情報に対応する制御コード。例えば制御コード、0×C0−0×EF 16進数は、ノード内ファームウェア116によって発出されたコマンドを履行するノード間ファームウェア118のさまざまな状態を表わす。(4)ノード内ファームウェア116によって設定された状態情報に対応する制御コード。ある条件下、例えばデータ転送にエラーが発生している場合などには、ノード内ファームウェア116は、中断されたデータ転送を再開せず、ファームウェア116とファームウェア118との間のかかる中断されたデータ転送を打ち切ることを選択する可能性がある。後に、ファームウェア116はこの打ち切られたデータ転送を再試行することができる。
【0016】
本発明の上述の実施形態は、ノード内ファームウェア116に対してコマンドを発出すべくノード間ファームウェア118のための特定の一組の制御コードを規定していないという点に留意されたい。これは、ファームウェアの実現を単純化させる上で一助となる。ノード間ファームウェア118は、データ転送を指令(コマンド)する必要がある場合、ノード内ファームウェア116に対し中断信号を送信することができる。このとき、ノード内ファームウェア116は、ノード間ファームウェア118がどのようなタイプのオペレーションを要望しているかを見い出すため、ノード間ファームウェア118からのデータを受信することになる。
【0017】
下記の表1は、本発明の一実施形態による制御コードリストを示している。表1の左欄には、制御コードの名前が含まれている。中央欄は、それぞれの制御コードを実現する実施形態としての16進コードに対応する。右欄は、4つのカテゴリーのうちのいずれにその制御コードが属するかを表わしている。
【0018】
【表1】
【0019】
16進数の0で表現されている表1中の制御コード、「NO_TRANSACTION」は、ファームウェア116と118の間に現行の相互作用が全く存在しないことを表わしている。ノード内ファームウェア116は、コマンドが履行され完了したときに制御モジュール122内にこのコードを書込む。新しい中断ルーチンがこの制御コードを読取ったときに、かかる中断ルーチンは、その他のデータ転送を全く打切ることなしに 制御モジュール122に対してコマンドを発出することができる。
【0020】
16進数の0x01で表現された制御コード、「CMD_ABORT」は、現行コマンドを打切るよう、ノード内ファームウェア116がノード間ファームウェア118に依頼していることを表わしている。かかる制御コードは、より高い優先順位のデータ転送のために現行データ転送を中断するために必要とされる。この制御コードを読取った時点で、ノード間ファームウェア118は、現行コマンドのコンテキストを一掃する。コマンドのコンテキストは、送信または受信された最後のデータおよび状態情報を含むことができる。
【0021】
標準的には、256バイト以下の長さのデータを送信するのに用いられる16進数の0x20で表現される制御コード「CMD_SSND_FST」は、ノード内ファームウェア116がノード間ファームウェア118に転送されたデータの第1のバイトを送信していることを表わす。一実施形態においては、転送されたデータの第1のバイトは、1つのセッション内で転送すべきデータのバイト長の情報を含んでいる。データ転送全体の実際の長さは、最初のデータを考慮に入れてバイト長に1を加えたものとなる。一実施形態においては、転送されたデータの最小の長さは、1バイトであり、最大長は256バイトである。この制御コードを読取った時点で、ノード間ファームウェア118は、データモジュール120から第1のバイトを読取り、入データを受信するためメモリまたはレジスタを割当てることになる。「CMD_SSND_FST」コマンドに対応する関連オペレーションが完了した後、ノード間ファームウェア118は、標準的には、状態コード「STS_NXT_OK」を用いて制御モジュール122に応答し、ノード内ファームウェア116が以下に記述するように次のコマンドを送り続けることができるようにする。
【0022】
標準的に256バイト以下の長さのデータを送信する上で使用される、16進数の0x21で表現される制御コード、「CMD_SSND_CNT」は、ノード内ファームウェア116がノード間ファームウェア118に第2またはそれ以降のデータバイトを送っていることを表わす。このコマンドは、現在データモジュール120内で利用可能であるデータをノード内ファームウェア116が読取ることを可能にする。データがそのメッセージの最後のバイトでない場合、ノード間ファームウェア118は状態コード「STS_NXT_OK」で応答し、次にノード内ファームウェア116が次のデータを送信し続ける。ノード間ファームウェア118は、ノード内ファームウェア116からこのセッション内の全てのデータを受信したときに、状態「STS_CMPLT」で応答することになる。
【0023】
標準的に256バイト以上の長さのデータを送信する上で使用される、16進数の0x22で表現される制御コード、「CMD_LSND_FST」は、ノード内ファームウェア116がノード間ファームウェア118に第1のデータバイトを送っていることを表わす。「CMD_SSND_FST」と同様、ノード間ファームウェア118は、コマンドが正常終了で完了したときに「STS_NXT_OK」で応答する。
【0024】
標準的に256バイト以上の長さのデータを送信する上で使用される、16進数の0x23で表現される制御コード、「CMD_LSND_CNT」は、ノード内ファームウェア116がノード間ファームウェア118に第2またはそれ以降のデータバイトを送っていることを表わす。ノード間ファームウェア118は、コマンドが正常終了で完了したときに「STS_NXT_OK」で応答する。
【0025】
標準的に256バイト以上の長さのデータを送信する上で使用される、16進数の0x24で表現される制御コード、「CMD_LSND_END」は、ノード内ファームウェア116がノード間ファームウェア118に、そのデータ転送の最後のバイトを送っていることを表わす。ノード間ファームウェア118は、それがこのセッションの全てのデータを受信したときに、STS_CMPLTで応答する。
【0026】
標準的に256バイト以下の長さのデータを送信する上で使用される、16進数の0x40で表現される制御コード、「CMD_SRCV_FST」は、ノード内ファームウェア116がノード間ファームウェア118から第1のデータバイトを受信する準備ができていることを表わす。ここでもまた、一実施形態においては、第1のバイトは、ノード間ファームウェア118から受信すべきデータのバイト長に対応する。最小長は1バイトであり、最大長は256バイトである。ノード間ファームウェア118は、このコマンドを読取った後、第1のバイトをノード内ファームウェア116のデータモジュール120に送り、次に状態コード「STS_NXT_OK」で制御モジュール122に応答することになる。ノード内ファームウェア116は、データモジュール120から第1のバイトを読取り、ノード間ファームウェア118から残りのデータを受信するよう準備する。
【0027】
標準的に256バイト以下の長さのデータを送信する上で使用される、16進数の0x41で表現される制御コード、「CMD_SRCV_CNT」は、ノード内ファームウェア116がノード間ファームウェア118から第2またはそれ以降のデータバイトを受信していることを表わす。ノード間ファームウェア118は、それが情報の最後のバイトを送信する前は「STS_NXT_OK」で応答し、データを全て送信し切ったときに「STS_CMPLT」で応答する。
【0028】
標準的に256バイト以上の長さのデータを受信する上で使用される、16進数の0x42で表現される制御コード、「CMD_LRCV_FST」は、ノード内ファームウェア116がノード間ファームウェア118から第1のデータバイトを受信していることを表わす。ノード間ファームウェア118は、コマンドが完了したときに「STS_NXT_OK」で応答する。
【0029】
標準的に256バイト以上の長さのデータを受信する上で使用される、16進数の0x43で表現される制御コード、「CMD_LRCV_CNT」は、ノード内ファームウェア116がノード間ファームウェア118から第2またはそれ以降のデータバイトを受信していることを表わす。ノード間ファームウェア118は、それが情報の最後のバイトを送信する前は「STS_NXT_OK」で応答し、データを全て送信し切ったときに「STS_CMPLT」で応答する。
【0030】
16進数の0×C0で表現される制御コード、「STS_CMPLT」は、ノード間ファームウェア118が、正常終了でコマンドシーケンスを完了することを表わす。ノード間ファームウェア118は、コマンドシーケンスを完了すべく付加的なコマンドを有する場合、「STS_NXT_OK」で応答する。制御コード「NO_transaction」と同様、ノード内ファームウェア116の中断ルーチンは、そのルーチンがSMEMスクラッチレジスタの先行するデータレジスタをセーブ/復旧させるかぎり、この値を読取ったときに、いかなる打切りもなく、コマンドを発出することができる。
【0031】
16進数の0xC1で表現される制御コード、「STS_NXT_OK」は、ノード間ファームウェア118が正常終了でコマンドシーケンスの最初または中間のコマンドを完了したことを表わす。ノード内ファームウェア116の中断ルーチンが、制御モジュール122において「STS_NXT_OK」を読取った場合、中断ルーチンは、より高い優先順位のデータ転送を開始するため、いずれかの新しいコマンドを発出する前に現行データ転送を打切るべく「CMD_ABORT」を発出する必要がある。
【0032】
16進数の0−D0で表現される制御コード「STS_SDN_CNT_CMD」は、ノード間ファームウェア118が、第1のコマンドなしでコマンドシーケンスの第2またはそれ以降のコマンドを受信したことを表わす。この状況下では、ノード間ファームウェア118は、不完全なコマンドコンテキストが存在する場合、これを一掃しなければならない。
【0033】
16進数の0xF0により表現される制御コード「STS_ABORTED_BY_SF」は、ノード内ファームウェア116自体によって発出される状態情報の例である。前述のように、この制御コードは、ノード内ファームウェア116がある状況下で中断されたデータ転送ルーチンを後に再開するのではなく、むしろ打切ることを決定していることを表わしている。例えば、中断されたデータ転送に何らかのエラーが起こった場合または中断されたデータ転送のコンテキストをセーブできない場合などがそれである。従って、より効率がよいのは、中断されたデータ転送を打切ることである。この状態制御コードを受信した時点で、中断されたノード内ファームウェア116は、打切られたコマンドを再試行してデータ転送を再度開始させることができる。
【0034】
制御コードについての前述の説明が単に、1バイトのデータモジュール120および制御モジュール122を通してデータ転送を実現するために使用されるコマンドおよび状態コードの一例にすぎないという点に留意されたい。それぞれのノード内ファームウェア116およびとノード間ファームウェア118との間のデータ転送を可能にできる代替的制御コードセットが存在する。
【0035】
図3は、ノード内ファームウェア116からノード間ファームウェア118へデータを送信するための方法を例示するフローチャートである。かかる方法は、ファームウェア116によるデータ転送を開始させるべく、新しい中断ルーチンによって毎回呼出され得る関数(function)SMreceive として実現可能である。図3に示すように、ノード内ファームウェア116における中断ルーチンが、この関数を呼出した場合、ノード内ファームウェア116とノード間ファームウェア118との間の現行データ転送のコンテキストはセーブされる(202)。現在ノード間ファームウェア118が取扱っている現行データ転送のコンテキストのセーブは、以下で詳述する図5に記述されているような関数saveSMEMcontext によって実現され得る。中断されたデータ転送ルーチンのコンテキストセービングは、その後、より高い優先順位のデータ転送が完了した後そのデータ転送を再開することを可能にする。
【0036】
コンテキストがセーブされた後、ノード内ファームウェア116は、制御モジュール122内にコマンドを書込む(201)。一例としては、コマンドは、上述したように、ノード間ファームウェア118から第1のデータバイトを受理するコマンドを表わすコード「CMD_SRCV_FST」であり得る。その後、ノード内ファームウェア116は、データモジュール120にデータを送るべくノード間ファームウェア118に要請するため、中断信号(SM.INT#と称する)を送信する(203)。ノード間ファームウェア118がこのSM.INT#に反応しデータを送信する一方、ノード内ファームウェア116は、制御モジュール122から現行コマンドの状態を表わす制御コードを読取るまで待機する(203)。
【0037】
ノード間ファームウェア118の側では、中断信号SM.INT#を受信した時点(205)で、ノード間ファームウェア118は制御モジュール122からコマンドを読取る(207)。コマンド「CMD_SRCV_FST」はデータの第1のバイトを受信するよう命令することから、ノード間ファームウェア118は、データの第1のバイトをデータモジュール120内に書き戻す(209)。前述のように、データの第1のバイトは、1つのセッション内でノード内ファームウェア116に送達するよう意図されているデータの長さに対応する。ノード内ファームウェア116は、データの第1のバイトに基づいて、ノード間ファームウェア116からどれだけのデータを受理することが予想されるかを知ることになる。
【0038】
同時に、ノード間ファームウェア118はまた、モジュール120内への第1のデータバイトの書込み完了後、制御モジュール122内に状態コードを戻す(209)ことになる。コマンド「CMD_SRCV_FST」の場合においては、ノード間ファームウェア118は、状態「STS_NXT_OK」を制御モジュール122内に挿入して、ノード内ファームウェア116が残りのデータを受信するべく、次のコマンドを書込み続けるようにする。
【0039】
ノード内ファームウェア116は、状態「STS_NXT_OK」を受信した後、データモジュール120からデータを読取る(210)。「STS_NXT_OK」は、データ転送がなおも完了していないことを意味することから、ノード内ファームウェア116は、次のデータ転送を要求すべく制御モジュール122に別のコマンドを出すために戻る。例えば、ファームウェア116はここで、コマンド「CMD_SRCV_CNT」を制御モジュール122内に入れる。ファームウェア118はこのコマンドをモジュール122から読取り続け、キュー内の残りのデータを送信することによって応答する。このセッションについて全てのデータを送信し切った後、ファームウェア118は、完了状態「STS_CMLT」を戻すことになる。ノード内ファームウェア116は、制御モジュール122内でこの完了状態コードをひとたび読取った(208)ならば次に進むことができ、ノード内ファームウェア116は制御モジュール122をクリアし、以前に中断されたコマンドを復旧させる。中断されたデータ転送の回復は、図6に記述されているような関数restoreSMEMcontextを呼出すことによって実現可能である。
【0040】
図4は、ノード内ファームウェア116からノード間ファームウェア118までデータを送信するための方法を示すフローチャートである。この方法は、ノード内ファームウェア116の新しい中断ルーチンによって呼出されるべき関数SMsendとして実現できる。中断ルーチンがノード間ファームウェア116からノード内ファームウェア118まで、より優先順位の高いデータを送るためにひとたび呼出しを行うと、現行データ転送は中断され、そのコンテキストがセーブされる(300)。上述のように、コンテキストセーブは、saveSMEMcontext関数を呼出すことによって履行できる。このとき、ノード内ファームウェア116はデータモジュール120内に第1のデータを書込み(301)、コマンドを制御モジュール122に書込んで(303)、ノード間ファームウェア118にデータをノード内ファームウェア116から読取るよう命令する。例えば、コマンドは、ノード間ファームウェア118にこのセッションで転送されようとしている第1のデータバイトを受信するように要求する「CMD_SSND_FST」である。コマンドが書込まれた後、ノード内ファームウェア116は次にノード間ファームウェア118に対し中断信号、SM.INT#を発出する(305)。
【0041】
ノード間ファームウェア118の側では、ノード間ファームウェア118が取扱っている現行データ転送は、SM.INT#により中断される(307)。中断信号に応答して、ノード間ファームウェア118は次に、制御モジュール122からコマンドを読取る(309)。例を挙げると、「CMD_SSND_FST」というコマンドの場合、ノード間ファームウェア118は、データモジュール120から第1のデータバイトを読取り(311)、「STS_NXT_OK」状態を制御モジュール122内に書き戻す。上述のように、第1のデータバイトは、転送されるべきデータの長さを表わす。その結果、ノード間ファームウェア118は、このセッションについての残りのデータを受信する準備をすることができ、ノード内ファームウェア116から全てのデータが受信されたことをひとたび検出した時点で、「STS_CMPLT」を戻す。
【0042】
ノード内ファームウェア116の側では、中断ルーチンは制御モジュール122から状態情報を読取り、それが「STS_CMLT」であるか否かを検出する(313)。そうでない場合には、ノード内ファームウェア116は、第2のデータバイトをデータモジュール120に書込み続け(301),第2のデータバイトをノード間ファームウェア118に送ることができるように制御モジュール122に対して例えば「CMD_SSND_CNT」といった別のコマンドを書込む。ノード間ファームウェア118が状態「STS_CMPLT」を戻したときに、ノード内ファームウェア116は、制御モジュール122をクリアし(317)、前に中断されたデータ転送を回復させる(319)。
【0043】
本発明を実現するのにSM.INT#を使用する必要はないという点に留意されたい。変形実施形態においては、中断信号は制御モジュール122をポーリングすべく、ノード間ファームウェア118とノード内ファームウェア116との両方を周期的に構成することによって、省略可能である。かかるポーリングプロセスは、ノード間ファームウェア118およびノード内ファームウェア116に、制御モジュール122内の新たにアサートされたコマンドまたは状態の存在に関する通知を与えることができる。その結果、ノード間ファームウェア118およびノード内ファームウェア116は、制御モジュール122内のコマンドおよび状態情報を読取って、上述したようにデータ転送関数SMsendまたはSMreceiveを履行することができる。
【0044】
図5は、中断されたルーチンのコンテキストをセーブするための方法を例示するフローチャートである。上述したように、この方法は、中断ルーチン内の関数 saveSMEMcontextを呼出すことによって実現可能である。
【0045】
一実施形態においては、関数 saveSMEMcontextは、全ての中断されたデータ転送が後に回復されるべきであるということを推定する、「No_Abort」にコンテキスト値をセットする(401)ことによって開始する。かかるコンテキスト値は、特殊な状況下で「打切る」ように変えることができる。例えば、現行データ転送に何か異常なことが発生した場合、中断ルーチンが完了した後,かかるデータ転送を復旧させる必要性は全くなくなるかもしれない。saveSMEMcontextはただ単に、ノード間ファームウェア118に現行データ転送の打切りについて知らせるような形で、値を「Abort」となるようセットし、制御モジュール122に対してコマンド「CMD_ABORT」を書込むことができる。次にノード内ファームウェア116がかかるデータ転送を復旧させるべく再試行し、値「Abort」を読取った場合、ノード内ファームウェア116は、中断された場所から再開する代わりに中断されたデータ転送を単純に再試行することができる。
【0046】
別のケースにおいては、より優先順位の高いデータ転送が確実に間に合うように行えるようにするため、saveSMEMcontext関数は、必要とあらば、受信するファームウェア118が状態コードを書き戻すまで待つのではなくむしろ、ノード間ファームウェア118に対し打切りコマンドを発出することができる。より優先順位の高いデータ転送のために打切られたかかるルーチンは、その後再開されることはないという点に留意されたい。以下で記述するように、restoreSMEMcontext関数は、この打切られたルーチンを後に正に再試行できるような形で、制御モジュール122内に「STS_ABORTED_BY_SF」を単にセットすることができる。
【0047】
値「No_Abort」をセットした後、中断されたルーチンが進行中である場合、ノード内ファームウェア116は、ノード間ファームウェア118が任意の状態情報を制御モジュール122内に書込むまで待つ。状態が制御モジュール122内に書込まれ、中断されたルーチンの新しいコマンドが制御モジュール122で出された後、ノード内ファームウェア116は、SM.INT#を「On」になるようセットし(407)、これは、ノード間ファームウェア118に対しこのコマンドを送るプロセスを中断するかまたは、ノード間ファームウェア118が任意の状態コードを制御モジュール122内に戻すのを妨げる。さらにノード内ファームウェア116は次に、制御モジュール122内の現行制御コードおよびデータモジュール120内の現行データを所定の場所にセーブすることによって、現行データ転送のコンテキストをセーブする(407)。かかる所定の場所は、CPUノード114における共用メモリまたはレジスタであってよい。これらのセーブされた情報はその後、中断されたルーチンを再開するために検索されることになる。
【0048】
ステップ409では、上述の通り、中断されたルーチンに付随する何らかの異常条件が存在するか否かが決定される。制御モジュール122内に何らかのエラー情報が存在する場合、この中断されたルーチンを打切るために値「Abort」をセットすることができる。中断されたルーチンのコンテキストがセーブされた後、saveSMEMcontextは、中断ルーチンにまで戻り、このルーチンは優先順位決定済みデータ転送を履行し始める。
【0049】
図6は、中断されたルーチンのコンテキストを復旧させるための方法を例示するフローチャートである。図4および5で上述したように、優先順位の高いデータ転送が完了した後、前に中断されたものを復旧させることが好ましい。それを行うためには、中断されたデータ転送のコンテキストは、データモジュール120および制御モジュール122へ復旧させられる(501)。
【0050】
一方では、中断されたルーチンのコンテキストが値「Abort」を含む場合(503)、その中断されたルーチンは再開されない。その代わり、状態「STS_ABORTED_BY_SF」が制御モジュール122内に書込まれる(505)。上述のように、状態コード「STS_ABORTED_BY_SF」は、ノード内ファームウェア116に対しデータ転送を再開せず、そのデータ転送全体を再試行するよう命令することになる。そうすることにより、中断されたデータ転送に関連する潜在的エラーが回避される。
【0051】
回復されたルーチンが状態に関する知識を全くもたないように、中断されたルーチンを復旧させるときに後続コマンドを状態「STS_ABORTED_BY_SF」に重ね書きすることができる変形実施形態においては、ノード間ファームウェア118は、状態コード「STS_ABORTED_BY_SF」に続くあらゆる後続コマンドをエラーとして処理することができる。ノード間ファームウェア118はかくして、その第1のコマンドから中断されたルーチンの再試行を指図するよう、上述のとおり状態コード「STS_SDN_CNT_CMD」を戻す。
【0052】
本発明は、別の変形実施形態において、実現を単純化するためいかなる現行データ転送も中断しないようにノード内ファームウェア116を構成することができる。新しいまたさらに優先順位がより高いあらゆるデータ転送は、現行データ転送が正常終了で完了するまで待機する。この実施形態においては、本発明はコンテキストをセーブまたは復旧させる関数を必要としない。
【0053】
図7は、ノード内ファームウェア116により初期化された要求を処理するため、ノード間ファームウェア118がノード内ファームウェア116とインタフェースする方法を詳細に示すフローチャートである。この方法は、ノード内ファームウェア116からのあらゆる要求を取扱うため、ノード間ファームウェア118によって呼出され得る関数(function)SMEMINTOUTintとして実現できる。理解するため、図7は、ノード内ファームウェア116からのデータ受信を例示している。上述のようなノード内ファームウェア116からデータを受信する標準的プロセスにおいては、ノード内ファームウェア116においてモジュール120,122をインタフェースするため、ノード間ファームウェア118はまず最初に制御モジュール122からコマンドを検索する(601)。コマンドが「CMD_SSND_FST」である場合(601)、ノード間ファームウェア118はデータモジュール120から第1のデータバイトを読取り、その後第1のデータバイトに基づいてデータ転送の長さの値をセットする(603)。上述のように、第1のデータバイトは、セッションにおいて転送されようとしているデータの長さである。かくして、ノード間ファームウェア118は、このセッションにおいてノード内ファームウェア116から受信されることになるデータ量に対し警告を受ける。
【0054】
データ長がセットされた後、ノード間ファームウェア118は、ノード間ファームウェア118が次のデータを受信する準備ができていることを表示すべく、制御モジュール122に対して状態「STS_NXT_OK」を戻す(605)。次に、ファームウェア118は、制御モジュール122から読取られたコマンドが「CMD_SSND_CNT」であるか否かを検出する(605)。「CMD_SSND_CNT」の場合、ノード間ファームウェア118はデータモジュール120から第2またはそれ以降のデータバイトを読取り続ける。これに対応して、データ長カウンタは、1つだけ減少させられることになる(611)。データ長カウンタがゼロ、すなわち転送されたデータが最後のものである場合、ファームウェア118は単に状態「STS_CMPLT」を戻す(617)。ファームウェア118は、データ全体を受信しなかった場合、状態「STS_NXT_OK」を戻す(615)。
【0055】
ファームウェア118がコマンド「CMD_ABORT」を受信した場合(619)、それは、現行のデータ転送が打切られることを意味する。このときファームウェア118は、ファームウェア116とのトランザクションをクリアし、次のデータ転送またはその他のオペレーションのために初期化する。
【0056】
ファームウェア118と116との間のデータ転送をさらに例示する目的で、以下の例は、データを転送するために上述の方法を使用したファームウェア118に対するメッセージ「BSPSelection done!」の転送について記述している。表2は、転送すべきデータ列全体を示す。第1のデータ「12h」は、メッセージ「BSP Selection Done」の長さを表わす。かくして、転送すべき実際のデータ長は16進数で13hである。
【0057】
一実施形態においては、表2中でメッセージを表示するため、ファームウェア116上で実行中であるメッセージ表示関数が、図3に関して上述したようなSMsend関数を呼出す。
【0058】
【表2】
【0059】
SMsend関数は、第1のデータ(12h)をデータモジュール120内に送り込み、CMD_SSND_FST、すなわち16進数20hを制御モジュール122内に書込むために作用する。このとき、SMsend関数は、中断信号SM.INT#信号をノード間ファームウェア118に対してもたらす。ノード内ファームウェア116は、制御モジュール122を定期的にポーリングすることにより、ノード間ファームウェア118から戻された状態情報を待つ。ノード間ファームウェア118側では、図7に関して上述した通りのSMEMINTOUTintは、ファームウェア118とファームウェア116との間のインタフェースプロセスを取扱う。それは、SM.INT#により中断され、その後、制御モジュール122からコマンドCMD_SSND_FST(20h)を読取るようノード間ファームウェア118に指示する。次に、ノード間ファームウェア118は、CMD_SSND_FSTによって要求されるようにデータモジュール120からデータ(12h)を読取る。上述のように、ノード間ファームウェア118は、13h(12h+1)でメッセージ長をセットするべくコマンドCMD_SSND_FST(20h)を知るように構成される。このときSMEMINTOUTintは、次に進んで制御コード STS_NXT_OK(C1h)を制御モジュール122内に書込む。ノード内ファームウェア116が制御モジュール122をポーリングし、状態(C1h)を読取った後で、ノード内ファームウェア116がSM.INT#信号をデアサートする。
【0060】
次に、ファームウェア116は、表示されるべきメッセージの中の最初の文字である第2のデータ「B」を送る。図3に関して上述したように、SMsendは第2のデータ(「B」)をデータモジュール120内に書込む。SMsend関数は、CMD_SSND_CNT(21h)を制御モジュール122内に書込み、別の中断信号SM.INT#信号をノード間ファームウェア118に対してもたらす。SMEMINTOUTint 関数は、SM.INT#によって中断され、その後制御モジュール122からコマンド(21h)を読取る。コマンド(21h)を受信した時点で、SMEMINTOUTint 関数は、データモジュール120からデータ(「B」)を読取るべくコマンドに従って作用し、13hを12hまで差し引くことにより残りのメッセージを減少させる。メッセージ長の調整の後、ノード間ファームウェア118は、STS_NXT_OK(C1h)を制御モジュール122内に書込んで、次のデータを送信するようノード内ファームウェア116に通知する。ノード内ファームウェア116は、制御モジュール122から状態(C1h)を読取り、SM.INT#信号をデアサートし、次のデータを送信するよう準備する。
【0061】
同様にして、SMsend関数は、ノード間ファームウェア118に対するメッセージの中で表2に示されているようなその他の文字「s」〜「e」を送るように作用する。ファームウェア118は、データの各々を受信し、メッセージ長を減少させる。特に最後のデータ「_」を受信すると、ノード間ファームウェア118は、残りのメッセージ長を1から0まで減少させることにより、そのプロセスを完了する。データ長は「ゼロ」であることから、ファームウェア118は、制御モジュール122内に制御コードSTS_CMPLT(C0h)を書込む。従って、メッセージ全体は、ノード内ファームウェア116からノード間ファームウェア118までうまく転送される。以上で分かるように、かかるデータ転送は、正常条件中でもエラー条件中でも行うことができる。かかるデータ転送がより高い優先順位に置かれた場合、ノード間ファームウェア118がこのメッセージを確実に間に合うように受信するようにするため、現行データ転送を中断することができる。
【0062】
従って、本発明は、ハードウェアの開発およびハードウェア動作上の問題を同時に低減させながら、マルチ・ノードコンピュータシステム内でのデータ転送に必要とされるハードウェア資源を低減させる。これはまた、例えばデータ転送のためにビジービットを配置することといった従来の特殊メカニズムを不要にする。さらに本発明は、より高い優先順位をもつデータの転送を取扱う能力をも有している。
【0063】
本発明による好ましい実施形態は、以下の通りである。
【0064】
(付記1) マルチ・ノードコンピュータシステム内のノード内ファームウェアからノード間ファームウェアへデータを転送するための方法であって、該ノード内ファームウェアが直接チャネルを通して該ノード間ファームウェアに結合され、該ノード内ファームウェアが制御モジュールおよびデータモジュールを有する方法において、
前記ノード内ファームウェアにより前記データモジュールに第1のデータを送信する段階と、
前記ノード内ファームウェアにより前記制御モジュールに対し第1のデータ転送コマンドを送る段階であって、該第1のデータ転送コマンドが、前記ノード間ファームウェアに対する第1のデータの転送を可能にする段階と、
前記ノード間ファームウェアにより前記制御モジュールから前記第1のデータ転送コマンドを読取る段階と、
前記第1のデータ転送コマンドに応答して前記ノード間ファームウェアにより前記データモジュールから前記第1のデータを読取る段階と、
前記データモジュールからの前記第1のデータ読取りの完了に応答して、前記ノード間ファームウェアにより前記制御モジュール内に第1のデータ転送状態コードを書込む段階と、
前記ノード内ファームウェアにより前記制御モジュールから前記第1のデータ転送状態コードを読取る段階と、
前記第1のデータ転送状態コードに応答して前記のデータ転送を続行すべきか否かを決定する段階と、
を含んでなる方法。
【0065】
(付記2) 前記ノード内ファームウェアによる前記制御モジュールに対する前記データ転送コマンドの送信に続いて、前記ノード内ファームウェアから前記ノード間ファームウェアまで中断信号を送信する段階をさらに含んでなる付記1に記載の方法。
【0066】
(付記3) 前記制御モジュールからの転送コマンドの読取りに先立ち、前記データ転送コマンドの存在を見極めるべく前記ノード内ファームウェアにより前記制御モジュールをポーリングする段階をさらに含んでなる付記1に記載の方法。
【0067】
(付記4) 前記第1のデータ転送コマンドが、転送されるべきデータ長を表わすコマンドを送信することに対応する付記1に記載の方法。
【0068】
(付記5) 前記ノード間ファームウェアに対し全てのデータが送信されたことに応答して、該ノード間ファームウェアによって前記制御モジュール内にデータ転送完了状態制御コードを書込む段階をさらに含んでなる付記1に記載の方法。
【0069】
(付記6) 前記第1のデータ転送状態コードがデータ転送続行状態に対応する付記1に記載の方法。
【0070】
(付記7) 前記第1のデータを前記データモジュールに送信する前に、前記データモジュールおよび制御モジュールのコンテキストを記憶する段階をさらに含んでなる付記1に記載の方法。
【0071】
(付記8) 全てのデータが前記ノード間ファームウェアに送信された後、前記データモジュールおよび制御モジュールの前記記憶されたコンテキストを復旧させる段階をさらに含んでなる付記7に記載の方法。
【0072】
(付記9) マルチ・ノードコンピュータシステム内でノード間ファームウェアからノード内ファームウェアによってデータを受信するための方法であって、該ノード内ファームウェアが直接チャネルを通して該ノード間ファームウェアに結合されており、該ノード内ファームウェアが制御モジュールおよびデータモジュールを有する方法において、
前記ノード内ファームウェアにより前記制御モジュール内に第1のデータ転送コマンドを書込む段階と、
前記ノード間ファームウェアにより前記制御モジュールから前記第1のデータ転送コマンドを読取る段階と、
前記第1のデータ転送コマンドに応答して、前記ノード間ファームウェアにより前記データモジュール内に第1のデータを書込む段階と、
前記データモジュール内への前記第1のデータの書込みに応答して、前記制御モジュール内に第1のデータ転送状態コードを書込む段階と、
前記第1のデータ転送状態コードの読取りに応答して、前記のデータ転送を続行すべきか否かを決定する段階と、
を含んでなる方法。
【0073】
(付記10) 前記制御モジュールに対する前記第1のデータ転送コマンドの送信に応答して、前記ノード内ファームウェアから前記ノード間ファームウェアまで中断信号を送信する段階をさらに含んでなる付記9に記載の方法。
【0074】
(付記11) 前記第1のデータ転送コマンドが、転送されるべきデータ長を表わすコマンドを送信することに対応する付記9に記載の方法。
【0075】
(付記12) 前記第1のデータ転送状態コードが、データ転送続行状態に対応する付記9に記載の方法。
【0076】
(付記13) 前記ノード間ファームウェアに対し全てのデータが送信されたことに応答して、該ノード間ファームウェアによって前記制御モジュール内にデータ転送完了状態制御コードを書込む段階と、
をさらに含んでなる付記9に記載の方法。
【0077】
(付記14) 前記第1のデータ転送コマンドを前記制御モジュールに送信する前に、前記データモジュールおよび制御モジュールの前記コンテキストを記憶する段階をさらに含んでなる付記9に記載の方法。
【0078】
(付記15) 全てのデータが前記ノード間ファームウェアに送信された後、前記データモジュールおよび制御モジュールの前記記憶されたコンテキストを復旧させる段階をさらに含んでなる付記6に記載の方法。
【0079】
(付記16) マルチ・ノードコンピュータシステムの動作を管理するためのノード間ファームウェアと、
各々、1バイトのデータモジュールおよび1バイトの制御モジュールを備え、該データモジュールおよび制御モジュールを通して優先順位決定済みデータ転送ルーチンが動作することができるようにする、複数のノード内ファームウェアであって、前記優先順位決定済みデータ転送ルーチンが前記ノード間ファームウェアと通信すべく動作可能である、複数のノード内ファームウェアと、
を含んでなるマルチ・ノードコンピュータシステム。
【0080】
(付記17) マルチ・ノードコンピュータシステム内のノード内ファームウェアからノード間ファームウェアへデータを転送するための方法であって、該ノード内ファームウェアが直接チャネルを通して該ノード間ファームウェアに結合され、該ノード内ファームウェアが制御モジュールおよびデータモジュールを有する方法において、
前記データモジュールに第1のデータを送信する段階と、
前記ノード間ファームウェアに対する前記第1のデータの転送を可能にするため、前記制御モジュールに対し第1のデータ転送コマンドを送信する段階と、
前記ノード間ファームウェアによる前記第1のデータ転送コマンドの履行状態に対応する第1のデータ転送状態コードを前記制御モジュールが受信しているか否かを監視する段階と、
前記第1のデータ転送状態コードの受信に応答して、前記のデータ転送を続行するか否かを決定する段階と、
を含んでなる方法。
【0081】
(付記18) マルチ・ノードコンピュータシステム内でノード間ファームウェアからノード内ファームウェアによってデータを受信するための方法であって、該ノード内ファームウェアが直接チャネルを通して該ノード間ファームウェアに結合されており、該ノード内ファームウェアが制御モジュールおよびデータモジュールを有する方法において、
前記第1のデータ転送コマンドに応答して前記ノード間ファームウェアが前記データモジュールにデータを送信できるようにするため、前記制御モジュール内に第1のデータ転送コマンドを書込む段階と、
前記ノード間ファームウェアによる前記第1のデータ転送コマンドの履行状態に対応する第1のデータ転送状態コードを前記制御モジュールが受信しているか否かを監視する段階と、
前記第1のデータ転送状態コードに応答して、前記のデータ転送を続行するか否かを決定する段階と、
を含んでなる方法。
【0082】
(付記19) マルチ・ノードコンピュータシステム内でノード内ファームウェアとノード間ファームウェアとの間の通信を可能にするためのコンピュータプログラムを含むコンピュータ読取り可能な記録媒体において、該ノード内ファームウェアがデータモジュールと制御モジュールを含み、前記コンピュータプログラムは該ノード内ファームウェアによって実行された場合に、該ノード内ファームウェアに、
前記データモジュールに第1のデータを送信する段階と、
前記ノード間ファームウェアに対する前記第1のデータの転送を可能にするため前記制御モジュールに対し第1のデータ転送コマンドを送信する段階と、
前記ノード間ファームウェアによる前記第1のデータ転送コマンドの履行状態に対応する第1のデータ転送状態コードを前記制御モジュールが受信しているか否かを監視する段階と
前記第1のデータ転送状態コードの受信に応答して前記のデータ転送を続行するか否かを決定する段階と、
を履行させるコンピュータ読取り可能な記録媒体。
【0083】
(付記20) マルチ・ノードコンピュータシステム内でノード内ファームウェアとノード間ファームウェアとの間の通信を可能にするためのコンピュータプログラムを含むコンピュータ読取り可能な記録媒体において、該ノード内ファームウェアがデータモジュールと制御モジュールを含み、前記コンピュータプログラムは該ノード内ファームウェアによって実行された場合に該ノード内ファームウェアに、
前記第1のデータ転送コマンドに応答して、前記ノード間ファームウェアが前記データモジュールにデータを送信できるようにするため、前記制御モジュール内に第1のデータ転送コマンドを書込む段階と、
前記ノード間ファームウェアによる前記第1のデータ転送コマンドの履行状態に対応する第1のデータ転送状態コードを前記制御モジュールが受信しているか否かを監視する段階と、
前記第1のデータ転送状態コードに応答して前記のデータ転送を続行するか否かを決定する段階と、
を履行させるコンピュータ読取り可能な記録媒体。
【図面の簡単な説明】
【図1】本発明によるマルチ・ノードコンピュータシステムの実施形態の概略図である。
【図2】本発明の実施形態によるマルチ・ノードコンピュータシステム内のノード内ファームウェアとノード間ファームウェアとの間のデータ転送構造を表すブロック図である。
【図3】ノード内ファームウェアがノード間ファームウェアからのデータを受信するための方法を表すフローチャートである。
【図4】ノード内ファームウェアからノード間ファームウェアまでデータを送信するための方法を表すフローチャートである。
【図5】中断されたルーチンのコンテキストをセーブするための方法を表すフローチャートである。
【図6】中断されたルーチンのコンテキストを復旧させるための方法を表すフローチャートである。
【図7】ノード間ファームウェアによるインタフェース取扱い方法を表すフローチャートである。
【図8】従来の相互接続ベースのマルチ・ノードコンピュータシステムを表す図である。
【符号の説明】
100…マルチ・ノードコンピュータシステム
102…相互接続スイッチ
104…ノード間コントローラ
106…入出力(IO)ノード
107…メモリ(MEM)ノード
108…IOデバイス
110…正規チャネル
112…直接チャネル
114…中央処理装置(CPU)ノード
116…ノード内ファームウェア
118…ノード間ファームウェア
120…データモジュール
122…制御モジュール
Claims (12)
- 複数のノードと、前記複数のノードと通信可能に接続されたノード間コントローラと、を少なくとも有し、
各前記ノードと前記ノード間コントローラとの間で転送されるべきデータを記憶する、1バイトのデータモジュールと、各前記ノードと前記ノード間コントローラとの間におけるデータ転送に関する状態情報およびコマンドを記憶する、1バイトの制御モジュールとが、各前記ノード内に設けられ、
前記複数のノードの各々から前記ノード間コントローラとの間の通信が、前記ノード毎に対応して設けられる各前記ノードと前記ノード間コントローラに直接結合する直接チャネルを通して実行されるマルチ・ノードコンピュータシステムにおけるデータを転送する方法において、
前記ノードが、前記データモジュールに第1のデータを書込む段階と、
前記ノードが、前記制御モジュールに対し第1のデータ転送コマンドを書込む段階と、
前記ノード間コントローラが、前記制御モジュールから前記第1のデータ転送コマンドを読取る段階と、
前記第1のデータ転送コマンドに応答して、前記ノード間コントローラが前記データモジュールから前記第1のデータを読取る段階と、
前記ノード間コントローラによる前記データモジュールからの前記第1のデータ読取りの完了に応答して、前記ノード間コントローラが前記制御モジュール内に第1のデータ転送状態コードを書込む段階と、
前記ノードが、前記制御モジュールから前記第1のデータ転送状態コードを読取る段階と、
前記第1のデータ転送状態コードに応答して、前記ノードが前記のデータ転送を続行すべきか否かを決定する段階と、を含んでなる方法。 - 前記ノードによる前記制御モジュールに対する前記データ転送コマンドの書込みに続いて、前記ノードから前記ノード間コントローラに対して中断信号を送信する段階をさらに含んでなる請求項1に記載の方法。
- 前記制御モジュールからの転送コマンドの読取りに先立ち、前記データ転送コマンドの存在を見極めるべく前記ノードが前記制御モジュールをポーリングする段階をさらに含んでなる請求項1に記載の方法。
- 前記ノード間コントローラに対し全てのデータが送信されたことに応答して、該ノード間コントローラが前記制御モジュール内にデータ転送完了状態制御コードを書込む段階をさらに含んでなる請求項1に記載の方法。
- 前記第1のデータを前記データモジュールに書込む前に、前記ノードが、前記データモジュールおよび制御モジュールのコンテキストを記憶する段階をさらに含んでなる請求項1に記載の方法。
- 全てのデータが前記ノード間コントローラに送信された後、前記ノードが、前記データモジュールおよび制御モジュールの前記記憶されたコンテキストを復旧させる段階をさらに含んでなる請求項5に記載の方法。
- 複数のノードと、前記複数のノードと通信可能に接続されたノード間コントローラと、を少なくとも有し、
各前記ノードと前記ノード間コントローラとの間で転送されるべきデータを記憶する、1バイトのデータモジュールと、各前記ノードと前記ノード間コントローラとの間におけるデータ転送に関する状態情報およびコマンドを記憶する、1バイトの制御モジュールとが、各前記ノード内に設けられ、
前記複数のノードの各々から前記ノード間コントローラとの間の通信が、前記ノード毎に対応して設けられ各前記ノードと前記ノード間コントローラに直接結合する直接チャネルを通して実行されるマルチ・ノードコンピュータシステムにおける、
前記ノード間コントローラから各前記ノードへデータを転送する方法において、
前記ノードが、前記制御モジュール内に第1のデータ転送コマンドを書込む段階と、
前記ノード間コントローラが、前記制御モジュールから前記第1のデータ転送コマンドを読取る段階と、
前記第1のデータ転送コマンドに応答して、前記ノード間コントローラが前記データモジュール内に第1のデータを書込む段階と、
前記データモジュール内への前記第1のデータの書込みに応答して、前記ノード間コントローラが前記制御モジュール内に第1のデータ転送状態コードを書込む段階と、
前記制御モジュール内に書込まれた前記第1のデータ転送状態コードの読取りに応答して、前記ノードが前記のデータ転送を続行すべきか否かを決定する段階と、を含んでなる方法。 - 前記制御モジュールに対する前記第1のデータ転送コマンドの書き込みに応答して、前記ノードから前記ノード間コントローラに対して中断信号を送信する段階をさらに含んでなる請求項7に記載の方法。
- 複数のノードと、前記複数のノードと通信可能に接続されたノード間コントローラと、を少なくとも有し、
各前記ノードと前記ノード間コントローラとの間で転送されるべきデータを記憶する、1バイトのデータモジュールと、各前記ノードと前記ノード間コントローラとの間におけるデータ転送に関する状態情報およびコマンドを記憶する、1バイトの制御モジュールとが、各前記ノード内に設けられ、
前記複数のノードの各々から前記ノード間コントローラとの間の通信が、前記ノード毎に対応して設けられ各前記ノードと前記ノード間コントローラに直接結合する直接チャネルを通して実行されるマルチ・ノードコンピュータシステムにおける、
各前記ノードから前記ノード間コントローラへデータを転送する方法において、
前記ノードが、前記データモジュールに第1のデータを書込む段階と、
前記ノード間コントローラに対する前記第1のデータの転送を可能にするため、前記ノードが前記制御モジュールに対し第1のデータ転送コマンドを書込む段階と、
前記ノード間コントローラによる前記第1のデータ転送コマンドの履行状態に対応する第1のデータ転送状態コードを、前記制御モジュールが受信しているか否かを、前記ノードが監視する段階と、
前記第1のデータ転送状態コードの受信に応答して、前記ノードが前記のデータ転送を続行するか否かを決定する段階と、を含んでなる方法。 - 複数のノードと、前記複数のノードと通信可能に接続されたノード間コントローラと、を少なくとも有し、
各前記ノードと前記ノード間コントローラとの間で転送されるべきデータを記憶する、1バイトのデータモジュールと、各前記ノードと前記ノード間コントローラとの間におけるデータ転送に関する状態情報およびコマンドを記憶する、1バイトの制御モジュールとが、各前記ノード内に設けられ、
前記複数のノードの各々から前記ノード間コントローラとの間の通信が、前記ノード毎に対応して設けられ各前記ノードと前記ノード間コントローラに直接結合する直接チャネルを通して実行されるマルチ・ノードコンピュータシステムにおける、
前記ノード間コントローラから前記ノードにおいてデータを受信するための方法であって、
第1のデータ転送コマンドに応答して前記ノード間コントローラが前記データモジュールにデータを送信できるようにするため、前記制御モジュール内に前記第1のデータ転送コマンドを書込む段階と、
前記ノード間コントローラによる前記第1のデータ転送コマンドの履行状態に対応する第1のデータ転送状態コードを前記制御モジュールが受信しているか否かを監視する段階と、
前記第1のデータ転送状態コードに応答して、前記のデータ転送を続行するか否かを前記ノードが決定する段階と、を含んでなる方法。 - 複数のノードと、前記複数のノードと通信可能に接続されたノード間コントローラと、を少なくとも有し、
各前記ノードと前記ノード間コントローラとの間で転送されるべきデータを記憶する、1バイトのデータモジュールと、各前記ノードと前記ノード間コントローラとの間におけるデータ転送に関する状態情報およびコマンドを記憶する、1バイトの制御モジュールとが、各前記ノード内に設けられ、
前記複数のノードの各々から前記ノード間コントローラとの間の通信が、前記ノード毎に対応して設けられ各前記ノードと前記ノード間コントローラに直接結合する直接チャネルを通して実行されるマルチ・ノードコンピュータシステム内で、前記ノードが前記ノード間コントローラとの間の通信を可能にするためのコンピュータプログラムを含むコンピュータ読取り可能な記録媒体において、
前記データモジュールに第1のデータを書込む段階と、
前記ノード間コントローラに対する前記第1のデータの転送を可能にするため、前記制御モジュールに対し第1のデータ転送コマンドを書込む段階と、
前記ノード間コントローラによる前記第1のデータ転送コマンドの履行状態に対応する第1のデータ転送状態コードを前記制御モジュールが受信しているか否かを監視する段階と、
前記第1のデータ転送状態コードの受信に応答して、前記のデータ転送を続行するか否かを決定する段階と、
を履行させるコンピュータ読取り可能な記録媒体。 - 複数のノードと、前記複数のノードと通信可能に接続されたノード間コントローラと、を少なくとも有し、
各前記ノードと前記ノード間コントローラとの間で転送されるべきデータを記憶する、1バイトのデータモジュールと、各前記ノードと前記ノード間コントローラとの間におけるデータ転送に関する状態情報およびコマンドを記憶する、1バイトの制御モジュールとが、各前記ノード内に設けられ、
前記複数のノードの各々から前記ノード間コントローラとの間の通信が、前記ノード毎に対応して設けられ各前記ノードと前記ノード間コントローラに直接結合する直接チャネルを通して実行されるマルチ・ノードコンピュータシステム内で、前記ノードが前記ノード間コントローラとの間の通信を可能にするためのコンピュータプログラムを含むコンピュータ読取り可能な記録媒体において、
前記第1のデータ転送コマンドに応答して、前記ノード間コントローラが前記データモジュールにデータを送信できるようにするため、前記制御モジュール内に前記第1のデータ転送コマンドを書込む段階と、
前記ノード間コントローラによる前記第1のデータ転送コマンドの履行状態に対応する第1のデータ転送状態コードを前記制御モジュールが受信しているか否かを監視する段階と、
前記第1のデータ転送状態コードに応答して前記のデータ転送を続行するか否かを決定する段階と、
を履行させるコンピュータ読取り可能な記録媒体。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US29957901P | 2001-06-19 | 2001-06-19 | |
US60/299579 | 2001-06-19 | ||
US10/114,525 US7076576B2 (en) | 2001-06-19 | 2002-04-01 | Data transfer in multi-node computer system |
US10/114525 | 2002-04-01 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007178861A Division JP4498389B2 (ja) | 2001-06-19 | 2007-07-06 | マルチ・ノードコンピュータシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003067355A JP2003067355A (ja) | 2003-03-07 |
JP4675541B2 true JP4675541B2 (ja) | 2011-04-27 |
Family
ID=26812294
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002179168A Expired - Fee Related JP4675541B2 (ja) | 2001-06-19 | 2002-06-19 | データ転送および受信方法、マルチ・ノードコンピュータシステム、およびコンピュータ読取り可能な記録媒体 |
JP2007178861A Expired - Lifetime JP4498389B2 (ja) | 2001-06-19 | 2007-07-06 | マルチ・ノードコンピュータシステム |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007178861A Expired - Lifetime JP4498389B2 (ja) | 2001-06-19 | 2007-07-06 | マルチ・ノードコンピュータシステム |
Country Status (2)
Country | Link |
---|---|
US (1) | US7076576B2 (ja) |
JP (2) | JP4675541B2 (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7717863B2 (en) * | 2002-04-19 | 2010-05-18 | Pelikan Technologies, Inc. | Method and apparatus for penetrating tissue |
JP4542308B2 (ja) * | 2002-12-16 | 2010-09-15 | 株式会社ソニー・コンピュータエンタテインメント | 信号処理用デバイス及び情報処理機器 |
JP4641151B2 (ja) * | 2004-01-19 | 2011-03-02 | 株式会社リコー | Simd型プロセッサ及び画像処理プロセッサ |
US7814479B2 (en) * | 2005-12-14 | 2010-10-12 | International Business Machines Corporation | Simultaneous download to multiple targets |
MX2008001141A (es) * | 2007-02-09 | 2009-02-24 | Rohm & Haas | Metodo para reducir el olor en pinturas de latex. |
US7761734B2 (en) * | 2007-04-13 | 2010-07-20 | International Business Machines Corporation | Automated firmware restoration to a peer programmable hardware device |
US7761735B2 (en) * | 2007-04-13 | 2010-07-20 | International Business Machines Corporation | Automated firmware restoration to a peer programmable hardware device |
US10942820B2 (en) * | 2019-06-27 | 2021-03-09 | EMC IP Holding Company LLC | Stream level uninterrupted restore operation using an interrupt service routine approach |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB8718056D0 (en) * | 1987-07-30 | 1987-09-03 | Int Computers Ltd | Data processing system |
JPH06332864A (ja) * | 1993-05-27 | 1994-12-02 | Fujitsu Ltd | マルチプロセッサシステムにおけるcpu間通信方式 |
JPH06337847A (ja) * | 1993-05-28 | 1994-12-06 | Canon Inc | マルチプロセッサ装置 |
JP3647055B2 (ja) * | 1993-11-17 | 2005-05-11 | キヤノン株式会社 | 情報処理システム、管理方法および管理装置 |
US6301256B1 (en) * | 1997-09-17 | 2001-10-09 | Sony Corporation | Selection technique for preventing a source port from becoming a destination port in a multi-port bridge for a local area network |
GB9909196D0 (en) * | 1999-04-21 | 1999-06-16 | Texas Instruments Ltd | Transfer controller with hub and ports architecture |
US6389526B1 (en) * | 1999-08-24 | 2002-05-14 | Advanced Micro Devices, Inc. | Circuit and method for selectively stalling interrupt requests initiated by devices coupled to a multiprocessor system |
JP3959914B2 (ja) * | 1999-12-24 | 2007-08-15 | 株式会社日立製作所 | 主記憶共有型並列計算機及びそれに用いるノード制御装置 |
US6772298B2 (en) * | 2000-12-20 | 2004-08-03 | Intel Corporation | Method and apparatus for invalidating a cache line without data return in a multi-node architecture |
US7035210B2 (en) * | 2001-07-12 | 2006-04-25 | Telefonaktiebolaget Lm Ericsson (Publ) | Media stream delay monitoring for node |
-
2002
- 2002-04-01 US US10/114,525 patent/US7076576B2/en not_active Expired - Fee Related
- 2002-06-19 JP JP2002179168A patent/JP4675541B2/ja not_active Expired - Fee Related
-
2007
- 2007-07-06 JP JP2007178861A patent/JP4498389B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JP4498389B2 (ja) | 2010-07-07 |
JP2003067355A (ja) | 2003-03-07 |
JP2007265439A (ja) | 2007-10-11 |
US7076576B2 (en) | 2006-07-11 |
US20030023906A1 (en) | 2003-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4498389B2 (ja) | マルチ・ノードコンピュータシステム | |
US5878205A (en) | Method and system for processing complex recovery using polling signals in a shared medium | |
US5640541A (en) | Adapter for interfacing a SCSI bus with an IBM system/360/370 I/O interface channel and information system including same | |
EP0621713B1 (en) | Communication of local area network based applications on a switched network | |
US5632016A (en) | System for reformatting a response packet with speed code from a source packet using DMA engine to retrieve count field and address from source packet | |
US6067628A (en) | Method to monitor universal serial bus hub overcurrent | |
EP0475080B1 (en) | Distributed messaging system and method | |
US5483647A (en) | System for switching between two different operating systems by invoking the server to determine physical conditions to initiate a physical connection transparent to the user | |
US8103813B2 (en) | Method and system for hardware based implementation of USB 1.1 over a high speed link | |
US5890015A (en) | Method and apparatus for implementing a wireless universal serial bus host controller by interfacing a universal serial bus hub as a universal serial bus device | |
US6715099B1 (en) | High-availability architecture using high-speed pipes | |
JP2000099448A (ja) | ディジタル・デ―タ処理システムにおいて複数のホスト・コンピュ―タ間で記憶サブシステムなどの資源の共用を容易にするためのシステムおよび方法。 | |
US20070006020A1 (en) | Inter-host data transfer method, program, and system | |
JP2012018699A (ja) | クライアントとサーバ間の接続を管理するためのシステムおよび方法 | |
WO1992006431A1 (en) | Message control method for data communication system | |
US6856619B1 (en) | Computer network controller | |
JP4592242B2 (ja) | サーバ/クライアントシステム | |
JP2001519060A (ja) | コントローラレスモデム | |
JPH11502341A (ja) | プロセッサ間のデータ伝送用のリンクプロトコル | |
JPH07143202A (ja) | システムを構成する方法、デバイスを構成する方法、制御装置およびシステム | |
JP3512146B2 (ja) | デバイスドライバ装置 | |
JP3176472B2 (ja) | データ転送方式 | |
CN113468081B (zh) | 基于ebi总线的串口转udp的装置及方法 | |
US6493779B1 (en) | Method and system for interrupt handling using device pipelined packet transfers | |
JPH0756842A (ja) | チャネルサブシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050527 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070427 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070508 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070706 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080708 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20101210 |
|
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: 20110126 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140204 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |