(57)【要約】  【課題】  読み取り−修正−書き込み動作における読み取り動作を行う必要をなくすこと。  【解決手段】  読み取り要求に関連して制御されるバッファおよびタグを利用し、これらの要求に応答してデータを送信すると共にタグ情報を送信して、通信アダプタにおいて行われる読み取り−修正−書き込み動作を回避する。このアダプタの機能は、各々が様々な情報量を有する様々な複数のデータブロックを、別のメモリに送信するため、単一のデータパケットにアセンブルすることである。アダプタのメモリに関連付けた誤り訂正機能が存在すると、本発明を利用しなければ、帯域幅を制限する読み取り−修正−書き込み動作の利用が必要となる。【選択図】  図６
2004260806.tif 000002
【特許請求の範囲】
【請求項１】
様々なサイズのデータブロックを、誤り訂正によって保護されたワードを格納しているアドレス指定可能メモリに転送するための方法であって、
レジスタ内に、前記アドレス指定可能メモリの誤り訂正ワード境界上に位置しない受信データブロックの連続隣接部分を格納するステップと、
前記アドレス指定可能メモリ内に、前記隣接部分とマージしたデータブロックの受信部分を格納して、前記アドレス指定可能メモリの前記誤り訂正ワード境界に対応して前記アドレス指定可能メモリ内にワードを形成するステップと、
を具備する、方法。
【請求項２】
前記レジスタはマルチワードバッファの一部である、請求項１の方法。
【請求項３】
前記バッファは前記データブロックに関連したタグを含んでいる、請求項２の方法。
【請求項４】
複数の異なるサイズのデータブロックを一つのデータパケットにアセンブルするための通信アダプタであって、
誤り訂正符号化によって保護されたワードによってアドレス指定可能なデータを格納するためのメモリと、
複数の受信ワードを格納すると共に、各受信ワードごとにタグを格納するためのバッファと、
前記バッファを制御して、受信データのワードサイズよりも小さい部分を、前記バッファに格納された前記タグが示す、前記メモリに格納されたデータと一致する前記バッファに格納されたデータとマージするための制御回路と、
を具備する、通信アダプタ。
【請求項５】
様々なサイズのデータブロックを、誤り訂正によって保護されたワードを格納しているアドレス指定可能メモリに転送するためのコンピュータ実行可能命令を有するコンピュータ読み取り可能媒体であって、
レジスタ内に、前記アドレス指定可能メモリの誤り訂正ワード境界上に位置しない受信データブロックの連続隣接部分を格納するステップと、
前記アドレス指定可能メモリ内に、前記隣接部分とマージしたデータブロックの受信部分を格納して、前記アドレス指定可能メモリの前記誤り訂正ワード境界に対応して前記アドレス指定可能メモリ内にワードを形成するステップと、
を実行することによって前記転送が行われる、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、様々なサイズの複数のデータブロックを、誤り訂正コード（ＥＣＣ：Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｃｏｄｅ）機能を含むメモリに転送するための方法およびシステムを対象とし、この機能は、新しい格納対象のデータを受信した場合、特に、そのデータがメモリの誤り訂正境界に対応するメモリアドレス境界上に位置しない場合に変更されないメモリ部分に適用される。更に特定すれば、本発明は、書き込まれているデータの量が全ＥＣＣ保護ワードよりも小さい場合、ＥＣＣ保護メモリワードに書き込まれたデータがすでに書き込まれたデータを含むことを確実とするためのシステムおよび方法を対象とする。更に具体的には、本発明は、多数のＥＣＣ保護メモリワードにまたがる場合もあればそうでない場合もあるデータブロックに関連付けてタグを用いるシステムおよび方法を対象とする。
【背景技術】
【０００２】
本発明は、複数のノードを用いるかまたは含むデータ処理システムにおいて特に有用である。これらのノードは各々、１つ以上のプロセッサを含む場合がある。ノードレベルまたはプロセッサレベルのいずれかにおいて、しかし更に典型的にはノードレベルにおいて、データを他の場所へ送出すること、すなわち、同一データ処理システム内の他のノードまたはプロセッサへ、または遠隔のシステム内のノードまたはプロセッサへ送出することが通例行われる。多くのシステムにおいて、「他の場所」へのリンクはアダプタであり、これは通信アダプタとしても知られる。より具体的には、本発明の譲受人によって販売されているシステムにおいて、この機能は、ホストチャネルアダプタ（ＨＣＡ）と呼ばれるものによって提供される。ＨＣＡおよび同様の通信アダプタの機能は、様々な長さの複数のデータブロックを１つのデータパケットにアセンブルすることである。従って、データパケットは、１つ以上、典型的には多数のデータブロックを含む。データブロックは各々、通常、異なるバイト数を含む。ＨＣＡは、アドレス指定可能メモリを含み、このメモリにおいて、アダプタから「他の場所」への送出前にデータパケットがアセンブルされる。
【０００３】
プロセッサ間通信の高速化のため、ホストチャネルアダプタ（ＨＣＡ）上のメモリバファリソースを増大させることも望ましい。このため、ホストチャネルアダプタにおいて用いるメモリデバイスの密度を高めることが望ましいと考えられる。メモリ密度の増大のため、アルファ粒子の相互作用という周知の問題を原因とするビットエラーの可能性が高まる。これによって、格納データのビットエラー率が上がることになるので、ＨＣＡベンダーが誤り訂正コード（ＥＣＣ：Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）を用いてＨＣＡメモリの内容を保護することは理にかなっている。通常、ＥＣＣの実施では、誤り検出および誤り訂正のために用いる単一のＥＣＣチェックビット集合によって、多バイトのデータがカバーされる。例えば、６４ビットのデータを保護するため、すなわち、一つのデータワード（ここで用いる「ワード」の意味については、以下を参照のこと）を保護するため、８ＥＣＣチェックビットの集合が典型的に用いられることがわかっている。
【０００４】
ここで用いる場合、データを受信するメモリに関連した「ワード」という語は、メモリにおいてＥＣＣ回路が用いるチェックビットの計算が行われるバイト数を指す。また、これは、一度に、すなわち一度の書き込みサイクル動作中にメモリ内に書き込まれるデータ量を指す。また、ここでは、一度というのは、常に８ビット長であるデータの「バイト単位」に必ずしも限定されないことを注記しておく。これは、何が「バイト」を構成するかという一般に認められている定義を変更しようとしているわけではなく、単に、一度に受信メモリ内に書き込まれるビット数または受信メモリから読み取られるビット数によって本発明は限定されないということを示すに過ぎない。いずれかの便利な誤り検出および／または誤り訂正法によって提供される冗長ビットを用いて保護されるのが、このデータ量である。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
メモリに書き込まれるデータが、常にメモリのワード境界に該当する量で供給されるならば、何の問題も生じない。しかしながら、本発明によって対処されるような状況においては、ＨＣＡ（またはいずれかの同様のデバイス）の主な機能は、各々が様々な数のバイト（例えば１ないしｍバイト）を含む複数のデータブロック（例えば１ないしｎ個のブロック）から情報パケットをアセンブルすることである。この状況では、あるまとまった量のデータは、送信用パケットがアセンブルされるＨＣＡデバイスのメモリのワード境界に該当しないで到着する。
【０００６】
ＥＣＣ保護メモリにおいてデータワードの一部のみを変更しようとする場合、そのデータワードの新しいチェックビットを計算するため、メモリ内部においてそのデータワードのバイト全てがなお用いられる。このため、通常、読み取り−修正−書き込み動作が行われる。すなわち、メモリから完全なアドレス指定されたデータワードを読み取った後に、新しいＥＣＣを計算し新しいデータワードをメモリ内に書き込む。本発明の目的の一つは、この読み取り動作を行う必要をなくすことである。なぜなら、そうでなければ、これはＨＣＡの帯域幅に対する制約となり、更に、これが用いられるデータ処理システムの帯域幅に対する制約となるからである。
【課題を解決するための手段】
【０００７】
本発明の第１の好適な実施形態によれば、様々なサイズのデータブロックを、誤り訂正によって保護されたワード単位でデータを格納しているアドレス指定可能メモリに転送するための方法およびシステムが提供される。本発明においては、要求されたデータブロックの最初のワードが、ＨＣＡメモリの誤り訂正ワード境界上で開始せずにその境界をまたぐ場合、そのブロックの、ＨＣＡメモリの最初の誤り訂正ワード境界内に含まれるはずの部分を、レジスタまたはバッファ内に格納する。同様に、要求されたブロックの最後のワードが、ＨＣＡメモリの誤り訂正ワード境界上で終了せずにその境界をまたぐ場合、そのブロックの、ＨＣＡメモリの最後の誤り訂正ワード境界内に含まれるはずのワードの部分を、レジスタまたはバッファに格納する。データブロックの受信部分を、バッファまたはレジスタにおいて、隣接部分とマージして、誤り訂正ワード境界に対応して、アドレス指定可能ＨＣＡメモリ内にアドレスによって配列したワードを形成する。このように、データブロックの部分をアドレス指定可能メモリ内に格納するために、部分的なバッファまたはレジスタの内容が常に利用可能であり、読み取り動作を行って変更されていないメモリワード部分を検索する必要がなくなる。また、本発明は、好ましくはタグを用い、これによって、読み取り要求を、読み取り要求に応答して戻されるデータブロックにリンクする。
【０００８】
データブロックが通信メモリ内に（すなわちＨＣＡのメモリ内に）書き込まれる際に、特定のブロックが境界上でちょうど終了していない場合、通常、対象データワードを読み取るのではなく対応するＥＣＣを計算するために読み取り−修正−書き込み動作を必要とするが、最後の部分データワードはメモリ内に書き込まれ、また、そのブロックの「境界ワード」としてサイドバッファに格納される。次のデータブロックをメモリ内に書き込む場合、その前のブロックが境界上で終了していないので、この次のブロックは対応して中途半端な境界上で開始する。最初の部分データワードのＥＣＣチェックビットを計算するために、以前に格納した「境界ワード」を、サイドバッファから検索し、新しいデータとマージして、新しいＥＣＣ値の計算に用いる。
【０００９】
境界ワードを用いて通信メモリへのデータの書き込みを管理することによって、メモリへの帯域幅の改善という大きな利点が得られる。この点で、境界ワードバッファは、特にここで用いる場合、競合なしに単一サイクルでアクセスされる極めて高速のレジスタによって通常実施されることを注記しておく。これに対して、ＨＣＡ上の通信メモリは、通常、アクセスのために数サイクルを要し得るメモリを用いて実施され、いくつかの要素で共有される場合があり、このため、全てのアクセスについて競合が起こる結果となる。ここで境界ワード法を用いることによって、通信メモリに書き込んでいるデータストリームの部分のためのＥＣＣ計算の一部として、遅いメモリからの読み取りを行う必要がなくなる。
【００１０】
従って、本発明の目的は、データパケットのアセンブルに用いられるホストチャネルアダプタならびに同様のデバイスおよびシステムの帯域幅を増大させることである。
【００１１】
本発明の別の目的は、誤り訂正および検出を用いる際に生じ得る欠点の１つをなくすことによって、データ通信の信頼性を高めることである。
【００１２】
本発明の更に別の目的は、ＥＣＣ保護メモリにおいてデータパケットをアセンブルするプロセスで用いられる読み取り−修正−書き込み動作を行わないことである。
【００１３】
本発明の更に別の目的は、メモリ読み取り動作の代わりとして、ＥＣＣ保護アダプタメモリよりも速く動作するバッファ機構を提供することである。
【００１４】
本発明の更に別の目的は、特に様々なサイズ（幅）の多数のブロックから構築されたデータパケットに関して、データパケットのアセンブルに関連した格納動作の柔軟性を高めることである。
【００１５】
最後に、しかしこれに限定されないが、本発明の目的は、プロセッサ間通信の効率および信頼性を高めることである。
【００１６】
本発明の様々な実施形態によって満足される望ましい目的の列挙の詳述は、本発明の最も一般的な実施形態またはいっそう具体的な実施形態において、これらの目的のいずれかまたは全てが、個別にまたは集合的に、不可欠な特徴として存在することを示唆することを意図するものではない。
【発明を実施するための最良の形態】
【００１７】
本発明として見なされる主題は、請求項の部分において特に指摘され、明瞭に主張される。しかしながら、本発明は、実施の機構および方法のいずれに関しても、その更に別の目的および利点と共に、添付の図面に関連付けて論じる以下の説明を参照して最適に理解することができる。
【００１８】
２台のコンピュータ間、２台のプロセッサ間、または２つのデータ処理システム間のデータ通信を容易にするため、各コンピュータは通常、ローカルコンピュータ上のメモリまたはＩ／Ｏチャネルと外部の通信リンクとの間を接続するホストチャネルアダプタ（ＨＣＡ）と呼ばれるハードウエア要素を用いる。ＨＣＡを介して、特定のコンピュータは、そのローカルメモリから遠隔コンピュータにデータを送信し、または、遠隔コンピュータからデータを受信してそのローカルメモリに格納する。この状況を、より具体的に、図１に示す。図１は、本発明を用いる環境の概要を示す。図１のコンピュータ１００は、メモリ１５０を含む。このメモリ１５０に含まれるデータが、パケットへとアセンブルされる。ＨＣＡ２００からの読み取り要求２１０によって、要求されたデータブロックが、メモリ１５０（「コンピュータ」メモリのためのＣＭＥＭ）からＨＣＡ２００に送信され、メモリ２５０（「アダプタ」メモリのためのＡＭＥＭ）において、送信用のデータパケット２９０にアセンブルされる。
【００１９】
送信動作の間、ＨＣＡ２００は、コンピュータメモリ１５０から要求されたデータブロック１１０を集め、それらのブロックをＨＣＡにローカルなメモリ（ＡＭＥＭ２５０）を利用してパケットにアセンブルし、いったんアセンブルが完了すると、出力データパケット２９０を外部通信リンク上に送信するように機能する。所与のパケットについて、前述のように、１ないしｎ個のデータブロックを集め、それらのブロックは各々、１ないしｍバイトまでの異なるサイズである可能性がある。
【００２０】
しかしながら、好適なＨＣＡ設計では、図２に示すように、誤り訂正コード（ＥＣＣ）回路２６０を用いることによって、ＡＭＥＭ２５０内でデータを保護することが望ましい。ＥＣＣ回路は、ＡＭＥＭ２５０の最小アドレス指定可能部分であるＡＭＥＭメモリワードに関連付けて、冗長チェックビットを発生させる。通常、ＥＣＣがカバーするデータワードは、一バイトよりも大きい。例えば、８バイトのデータワードを一つの８ビットＥＣＣバイトによってカバーするＥＣＣ機構が存在する。メモリにおいてＥＣＣを用いて多バイトデータワードを保護することに伴う問題は、メモリ内のデータワードの一部のみを更新しようとする場合、新しいマージされたデータワード用の新しいＥＣＣ値を計算するために、通常、データワード全体を読み取らなければならないということである。図２は、ＨＣＡが部分的なブロックを受信した場合に、上書きされない部分を含むワードの値を入力レジスタ２７０にフィードバックするための機構としてデータ戻り経路２８０が提供されることを示す。この動作は、読み取り−修正−書き込み動作（ＲＭＷ：ｒｅａｄ−ｍｏｄｉｆｙ−ｗｒｉｔｅ）と呼ばれる。ＲＭＷの結果として、ＣＭＥＭ１５０とＡＭＥＭ２５０との間の帯域幅が狭くなる。本発明は、読み取り−修正−書き込み動作の必要をなくし、従ってフィードバック経路２８０の必要をなくす。換言すれば、本発明は、ＡＭＥＭ２５０において部分的なデータワードを更新する場合、ＡＭＥＭ２５０を読み取る必要をなくし、これによってＣＭＥＭとＡＭＥＭとの間の帯域幅を改善する。
【００２１】
パケットのためにＣＭＥＭ１５０からブロックを読み取ることに先立って、ＨＣＡ２００の制御ユニット３５０は、ブロック１１０をパケット２９０にアセンブリするためのＡＭＥＭ２５０内の領域を割り当てる。データブロックに対する各読み取り要求をＣＭＥＭ１５０に発すると、これにトランザクションタグが割り当てられる（読み取り要求の構造およびその関連する読み取り応答については図３を参照のこと）。このタグは、コンピュータ１００によって、またはＣＭＥＭ１５０自体によって、読み取り応答データブロック（図３の参照番号１１０を参照のこと）に付けられる。本発明によれば、ＨＣＡ２００には、読み取り保留トランザクションバッファ（ＲＰＴＢ）４００が設けられる。その構造は、図５に具体的に示されている。制御ユニット３５０の制御のもとで、ＲＰＴＢ４００は、各トランザクションに関する情報を格納し、タグ値によって索引が付けられる。タグ値は、最初、ＨＣＡ２００によって、読み取り要求構造２１０のフィールド２１６に与えられる。この同一のタグ値が、読み取り要求応答構造１１０のフィールド１１４で戻される。ＲＰＴＢ４００のエントリは、以下のものを含む。すなわち、読み取り応答データを格納するＡＭＥＭ２５０のアドレス（ＡＭＥＭ＿ＳＴＡＲＴ＿ＡＤＤＲ）、応答データのサイズ（ＳＩＺＥ）、ＡＭＥＭ＿ＳＴＡＲＴ＿ＡＤＤＲによってアドレス指定されるデータワードの最初のバイトを更新するトランザクションのためのタグを含むフィールド（ＰＲＥＶ＿ＴＡＧ）である。最後に、各タグ値には、境界ワードレジスタ（ＢＷＲ：Ｂｏｕｎｄａｒｙ  Ｗｏｒｄ  Ｒｅｇｉｓｔｅｒ）が関連付けられている。ＢＷＲの目的は、ＡＭＥＭに書き込まれているデータブロックの最後部のサブデータワードフラグメントを格納することである。以下に記載する手順を制御ユニット３５０の指示のもとで実行することで、ＢＷＲを用いて、ＡＭＥＭに書き込まれているデータワードの各々を完了させるので、ブロック境界におけるフラグメントを得るためにＡＭＥＭを読み取る必要はない。
【００２２】
ＡＭＥＭ２５０を読み取るのではなくＢＷＲ４００を用いることの主な利点は、ＢＷＲ４００が、境界ワード機能専用の単一サイクルアクセスメモリとして容易に実施されることである。通常、ＡＭＥＭは密度が高いので、アクセスするために数サイクルを要し、いくつかの要素間で共有される場合があり、結果として、各アクセスごとに衝突が起こる可能性があり、これに伴ってＨＣＡを通じた全帯域幅の低減の恐れがある。
【００２３】
手順
以下の想定は、本発明の好適な実施形態の動作の基盤を成すものである。すなわち、ＣＭＥＭからのブロックをＡＭＥＭにおいてパケットにアセンブリする一方で、パケットは、データワードの最初のバイトに対応するＡＭＥＭアドレスで開始すると想定する。また、アセンブリされるブロックの全長が、１つのデータワードにおけるバイト数の整数倍であるバイト数と等しくない場合、エンドパディングバイトは、送信のためのものではないので、「ドントケア」バイトであると想定される。
【００２４】
１．パケットを構築するためにＣＭＥＭからデータブロックを要求する場合、ＨＣＡは、一連の読み取り要求２１０を発生する。各読み取り要求２１０には、トランザクションタグ（図３のフィールド２１６を参照のこと）が割り当てられる。ＣＭＥＭ１５０（またはコンピュータ１００）が読み取り要求に応答すると、対応する読み取り要求に関連したトランザクションタグを、読み取り応答データと共に戻す（図３のフィールド１１４を参照のこと）。
【００２５】
２．想定されるように、最初のデータブロックのＡＭＡＣ＿ＳＴＡＲＴ＿ＡＤＤＲは半端ではない（ｅｖｅｎ）（すなわち、これは、データワードの最初のバイトのＡＭＥＭアドレスを指す）。所与のタグに対するその後のＡＭＥＭ＿ＳＴＡＲＴ＿ＡＤＤＲ（図５の「ＡＭＥＭスタートアドレス」）値は、前のタグのブロック要求に対するＡＭＥＭ＿ＳＴＡＲＴ＿ＡＤＤＲ＋ＳＩＺＥに等しい。
【００２６】
３．特定のタグについて、ＰＲＥＶ＿ＴＡＧ（図５の「前のタグ」）値は、ＡＭＥＭ＿ＳＴＡＲＴ＿ＡＤＤＲによってアドレス指定されたデータワードの最初のバイトを更新するトランザクションに割り当てられたタグに対応する。この値は、ＡＭＥＭ＿ＳＴＡＲＴ＿ＡＤＤＲがデータワードの最初のバイトをアドレス指定しない場合にのみ意味がある。
【００２７】
４．ＣＭＥＭ１５０から受信した読み取り応答データブロックを転送する際に、ＡＭＥＭ＿ＳＴＡＲＴ＿ＡＤＤＲが半端である（ｕｎｅｖｅｎ）（すなわちアドレスがデータワードの最初のバイトに対応しない）ならば、現在のトランザクションのＰＲＴＢエントリのＰＲＥＶ＿ＴＡＧフィールドに含まれるタグのＢＷＲを、ＡＭＥＭ２５０に書き込むＣＭＥＭデータの最初のサブワードとマージする。次いで、結果として得られるデータワードを、ＡＭＥＭ＿ＳＴＡＲＴ＿ＡＤＤＲによってアドレス指定されるバイトを含むデータワードの最初のバイトに対応するＡＭＥＭアドレスに転送し、また、ＰＲＥＶ＿ＴＡＧのＢＷＲに格納する。
【００２８】
５．ＣＭＥＭ１５０から受信した読み取り応答データ１１０のブロックを転送する際に、ＡＭＥＭに書き込まれるブロックの最後のバイトがＡＭＥＭデータワードの最後のバイトでない場合、および、トランザクションのＡＭＥＭ＿ＳＴＡＲＴ＿ＡＤＤＲがブロック内の最後のバイトを含む同一データワードを参照しない場合、現在のトランザクションのタグのＢＷＲを、ＡＭＥＭ２５０に書き込まれるＣＭＥＭデータの最後のサブワードとマージする。次いで、結果として得られるデータワードを、ＡＭＥＭ２５０に書き込まれる元来のＣＭＥＭデータの最後のバイトを含むデータワードの最初のバイトに対応するＡＭＥＭアドレスに転送し、また、現在のタグのＢＷＲに格納する。
【００２９】
実施例
以下の実施例では、ＡＭＥＭは８バイト幅であり、ＥＣＣは８バイトをカバーするが、アドレス指定されたスペースの一部ではない。また、図４に、この実施例の図を示し、３バイトのみを有する部分的なワードの到着まで、ＡＭＥＭにおいて３ワードが充填されていることを示す。
【００３０】
３３16（下付き文字は十六進数の表記を示す）バイト長（十進数で５１）であるパケットを、ＨＣＡによって送信する。この場合、パケットは、ＣＭＥＭ１５０からの２つのデータブロックから成り、２ブロック間の境界はＡＭＥＭ２５０において中途半端（ｕｎｅｖｅｎ）となる。以下の表Ｉは、ＡＭＥＭ２５０においてデータブロックをアセンブルした場合の構造を示す。表Ｉにおいて、一重引用符内のエントリは、十六進数の値を表す。ブロック＃１の最後のデータワードをＡＭＥＭ２５０に書き込むと、これは、タグ＃１のＢＷＲとマージされ（ＢＷＲ（１））、データワードの最初の３バイトがブロック１の最後の３バイトとなり、最後の５バイトがＢＷＲ（１）の最後の５バイトとなる。ＢＷＲ（１）を更新して、その最初の３バイトがデータブロック＃１からの最後の３バイトであり、その最後の５バイトが不変であるようにする。
【００３１】
ブロック＃２の最初のデータワードを書き込むと、００００16がＡＭＥＭに書き込まれ、これはＢＷＲ（１）とマージされ、データワードの最初の３バイトがＢＷＲ（１）からの最初の３バイトとなり、データワードの最後の５バイトがブロック＃２の最初の５バイトとなる。次いで、ＢＷＲ（１）を更新して、最後の５バイトがブロック２の最初の５バイトであり、最初の３バイトが不変であるようにする。
【００３２】
データブロックをＣＭＥＭ１５０から受信する順序は、アルゴリズムの実行にも、ＡＭＥＭ２５０に構築される最終的なパケットの正確さにも影響を及ぼさないことを注記しておく。
【表１】
2004260806.tif 000003
【００３３】
本発明について、そのいくつかの好適な実施形態に従ってここに詳しく記載したが、当業者によって多くの修正および変更を実施することができる。従って、添付の特許請求の範囲によって、かかる全ての修正および変更を、本発明の真の精神および範囲に該当するものとして包含することを意図するものである。
【００３４】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００３５】
（１）様々なサイズのデータブロックを、誤り訂正によって保護されたワードを格納しているアドレス指定可能メモリに転送するための方法であって、
レジスタ内に、前記アドレス指定可能メモリの誤り訂正ワード境界上に位置しない受信データブロックの連続隣接部分を格納するステップと、
前記アドレス指定可能メモリ内に、前記隣接部分とマージしたデータブロックの受信部分を格納して、前記アドレス指定可能メモリの前記誤り訂正ワード境界に対応して前記アドレス指定可能メモリ内にワードを形成するステップと、
を具備する、方法。
（２）前記レジスタはマルチワードバッファの一部である、請求項１の方法。
（３）前記バッファは前記データブロックに関連したタグを含んでいる、請求項２の方法。
（４）複数の異なるサイズのデータブロックを一つのデータパケットにアセンブルするための通信アダプタであって、
誤り訂正符号化によって保護されたワードによってアドレス指定可能なデータを格納するためのメモリと、
複数の受信ワードを格納すると共に、各受信ワードごとにタグを格納するためのバッファと、
前記バッファを制御して、受信データのワードサイズよりも小さい部分を、前記バッファに格納された前記タグが示す、前記メモリに格納されたデータと一致する前記バッファに格納されたデータとマージするための制御回路と、
を具備する、通信アダプタ。
（５）様々なサイズのデータブロックを、誤り訂正によって保護されたワードを格納しているアドレス指定可能メモリに転送するためのコンピュータ実行可能命令を有するコンピュータ読み取り可能媒体であって、
レジスタ内に、前記アドレス指定可能メモリの誤り訂正ワード境界上に位置しない受信データブロックの連続隣接部分を格納するステップと、
前記アドレス指定可能メモリ内に、前記隣接部分とマージしたデータブロックの受信部分を格納して、前記アドレス指定可能メモリの前記誤り訂正ワード境界に対応して前記アドレス指定可能メモリ内にワードを形成するステップと、
を実行することによって前記転送が行われる、方法。
【図面の簡単な説明】
【００３６】
【図１】本発明を用いる環境の概要を示すブロック図である。
【図２】本発明によって解決される特定の問題の１つを強調して示した、ホストチャネルアダプタの構造を示すブロック図である。
【図３】ホストチャネルアダプタから送出された読み取り要求に関連したフィールド構造および対応するデータ応答に関連したフィールド構造を示すブロック図である。
【図４】戻されたデータ部分が全ワードよりも小さく、その結果、データが重複し、その一部のみがＨＣＡメモリの同一ワードに宛てられたデータとは異なっている場合に生じる問題の性質を示す図である。
【図５】読み取り保留トランザクションバッファ（ＰＲＴＢ：Ｒｅａｄ  Ｐｅｎｄｉｎｇ  Ｔｒａｎｓａｃｔｉｏｎ  Ｂｕｆｆｅｒ）において与えられるフィールド構造を示すブロック図である。
【図６】ＨＣＡメモリからの読み取り動作の必要を回避する、本発明によるシステムのブロック図である。
【図１】
2004260806.tif 000004
【図２】
2004260806.tif 000005
【図３】
2004260806.tif 000006
【図４】
2004260806.tif 000007
【図５】
2004260806.tif 000008
【図６】
2004260806.tif 000009