(57)【要約】【課題】アラインされていないデータユニットのデータ転送と並行して特定のデータ処理をハードウェア回路にて行うにあたり論理規模が増大しないようにする。【解決手段】データユニットの転送経路とは別の位置に、データ処理回路と、このデータ処理回路用のアライナとが備えられる。データ処理回路用のアライナは、アライン後のデータユニットの先頭部分に非転送対象のデータが含まれることが無いように、このアライナに入力されたデータユニットのアドレスをアラインするよう構成されている。データ転送に並行して、データ処理回路用のアライナに、転送されるデータユニットが入力され、入力されたデータユニットにおけるデータのアドレスがアラインされ、アライン後のデータユニットがデータ処理回路の入力データ幅単位でデータ処理回路に入力され、データ処理回路に入力されたアライン後のデータユニットが処理される。【選択図】図１
2010140127.tif 000002
【特許請求の範囲】
【請求項１】
転送元から転送先へ所定の転送単位で転送されるデータユニットの転送経路とは別の位置に、入力されたデータユニットを処理するデータ処理回路と、このデータ処理回路用のアライナとを備え、
前記データ処理回路用のアライナは、アライン後のデータユニットの先頭部分に非転送対象のデータが含まれることが無いように、このアライナに入力されたデータユニットのアドレスをアラインするよう構成されており、
前記転送元から前記転送先へのデータ転送に並行して、
（Ａ）前記データ処理回路用のアライナに、転送されるデータユニットが入力され、
（Ｂ）前記データ処理回路用のアライナに入力されたデータユニットにおけるデータのアドレスがアラインされ、
（Ｃ）前記データ処理回路用のアライナによるアライン後のデータユニットが前記データ処理回路の入力データ幅単位で前記データ処理回路に入力され、
（Ｄ）前記データ処理回路に入力されたアライン後のデータユニットが処理される、
データ転送処理装置。
【請求項２】
前記転送経路上に、データ転送用のアライナが設けられており、
前記データ転送用のアライナと前記データ処理回路用のアライナとの両方に、アラインされていないデータユニットが所定の転送単位で入力され、
前記データ処理回路は、ＤＩＦ（Data Integrity Field）回路であり、
前記ＤＩＦ回路の入力データ幅は、固定長、且つ、前記固定長のデータブロックのサイズの約数であり、
前記転送単位のサイズが前記入力データ幅のＮ倍（Ｎは自然数）、或いは、前記入力データ幅が前記転送単位のサイズのＭ倍（Ｍは自然数）であり、
前記データ転送と、前記（Ａ）乃至（Ｄ）の処理が、同時期に発せられたクロックに同期して行われ、
前記転送単位のサイズが前記入力データ幅のＮ倍の場合、前記データ転送のためのクロックサイクルは、前記（Ｃ）の処理のためのクロックサイクルの１／Ｎ倍であり、
前記入力データ幅が前記転送単位のサイズのＭ倍の場合、前記（Ｃ）の処理のためのクロックサイクルは、前記データ転送のためのクロックサイクルの１／Ｍ倍である、
請求項１記載のデータ転送処理装置。
【請求項３】
前記データ転送処理装置は、外部記憶装置と通信するために情報処理装置に備えられるホストバスアダプタである、
請求項２記載のデータ転送処理装置。
【請求項４】
前記データ処理回路は、固定長のデータブロックのサイズ毎に対応したチェックコードを生成するチェックコード生成回路であり、
前記チェックコード生成回路の入力データ幅は、固定長、且つ、前記固定長のデータブロックのサイズの約数である、
請求項１記載のデータ転送処理装置。
【請求項５】
転送元から転送先への所定の転送単位でのデータ転送に並行して、
（Ａ）転送されるデータユニットをデータ処理回路用にアラインし、
（Ｂ）データ処理回路用にアラインされた後のデータユニットを、前記データ処理回路の入力データ幅単位で前記データ処理回路に入力し、
（Ｃ）前記データ処理回路が、入力されたアライン後のデータユニットを処理する、
データ転送処理方法。
【請求項６】
ＣＰＵ及びメモリを含んだ情報処理部と、
前記情報処理部が外部記憶装置と通信するための通信インタフェース装置と
を備え、
前記通信インタフェース装置が、前記外部記憶装置から読み出されたデータブロックが流れる読出し部と、前記外部記憶装置に書き込まれるデータブロックが流れる書込み部との少なくともいずれかにおいて、所定の転送単位で転送されるデータユニットが流れる経路とは別の位置に、入力されたデータユニットを処理するデータ処理回路と、このデータ処理回路用のアライナとを備え、
前記データ処理回路用のアライナは、アライン後のデータユニットの先頭部分に非転送対象のデータが含まれることが無いように、このアライナに入力されたデータユニットのアドレスをアラインするよう構成されており、
前記転送元から前記転送先へのデータ転送に並行して、
（Ａ）前記データ処理回路用のアライナに、転送されるデータユニットが入力され、
（Ｂ）前記データ処理回路用のアライナに入力されたデータユニットにおけるデータのアドレスがアラインされ、
（Ｃ）前記データ処理回路用のアライナによるアライン後のデータユニットが前記データ処理回路の入力データ幅単位で前記データ処理回路に入力され、
（Ｄ）前記データ処理回路に入力されたアライン後のデータユニットが処理される、
情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの転送処理に関し、具体的には、例えば、サーバ等の情報処理装置に備えられるホストバスアダプタ（ＨＢＡ）等の通信インタフェース装置におけるデータ転送処理に関する。
【背景技術】
【０００２】
サーバ等の情報処理装置には、例えば特許文献１に開示されているような、通信インタフェース装置が搭載される。情報処理装置は、通信インタフェース装置を介して、外部記憶装置等の外部の装置と通信する。
【０００３】
【特許文献１】特開２００２−１８３０７２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
情報処理装置には、情報処理装置全体の性能向上の観点から、ダイレクトメモリアクセスコントローラ（ＤＭＡＣ）と呼ばれるデータ転送処理装置が備えられることがある。ＤＭＡＣでは、ＣＰＵ（Central Processing Unit）に代わってデータ転送が行われる。
【０００５】
図１０に、ＤＭＡＣの構成の一例を示す。
【０００６】
ＤＭＡＣ１０は、例えば、外部記憶装置（例えばディスクアレイ装置）２０と通信するための通信インタフェース装置（例えばホストバスアダプタ（ＨＢＡ））である。ＤＭＡＣ１０は、外部記憶装置２０と通信し、且つ、ＣＰＵ３１及びメインメモリ２２を含んだ情報処理資源と内部バス３２を介して通信する。
【０００７】
ＤＭＡＣ１０は、例えば、下記構成要素（１）乃至（５）、
（１）外部記憶装置２０から読み出されたデータブロックを一時的に記憶するための受信バッファ１１；
（２）受信バッファ１１に格納されているデータブロックを所定の転送単位で情報処理資源（例えばメインメモリ２２）に転送するＤＭＡ制御部２１；
（３）外部記憶装置２０に書き込まれるデータブロックを一時的に記憶するための送信バッファ１２；
（４）情報処理資源（例えばメインメモリ２２）に格納されているデータブロックを所定の転送単位で送信バッファ１２に転送するＤＭＡ制御部２２；
（５）ＤＭＡＣ１０の動作を制御するマイクロプログラム制御部１３；
を備える。受信バッファ１１及び送信バッファ１２のうちの一方又は両方が、送受信の多重度をあげてデータ転送性能の向上を図る観点から、複数個備えられる。マイクロプログラム制御部１３は、ＣＰＵやローカルメモリ等を備えている。マイクロプログラム制御部１３は、データ転送起動コマンドをＤＭＡ制御部２１又は２２に設定する。これにより、ＤＭＡ制御部２１又は２２が、その起動コマンドを解釈しデータ転送を行う。このため、マイクロプログラム制御部１３は別の処理を行うことが可能となり、情報処理装置３０全体の性能が向上する。
【０００８】
送受信バッファ１１及び１２は、外部記憶装置２０とデータをやり取りするため、各種インタフェース規格ごとにデータ以外にも制御用の情報が付加されることになる。このため、送受信バッファ１１及び１２内のデータはアラインされているとは限らない。
【０００９】
また、データの転送先または転送元となる情報処理装置３０内のメモリアドレスは、情報処理資源におけるアプリケーションプログラムによって指定される。このため、送受信バッファ１１及び１２と転送先または転送元となる情報処理資源内のメモリアドレスがずれて、アラインされない可能性がある。
【００１０】
以上の理由から、アラインされない場合に対応したデータ転送を行う必要がある。そこで、図１０のＤＭＡ制御部２１（２２）に示すように、データの転送経路上にアライナ１４（１５）が設けられ、転送元から転送先へのデータユニットがアライナ１４（１５）を経由する。これにより、データユニットにおけるデータのアドレスが、転送先が指定するアドレスにアラインされて、アライン後のデータユニットが転送先へ転送されることになる。具体的には、例えば、図２に示すように、転送元から「    ＡＢ」、「ＣＤＥＦ」、「ＧＨＩＪ」、「ＫＬＭＮ」、「ＯＰ    」の順にデータユニットが読み出され、アライナ１４（１５）を通して、転送先へアライン後のデータユニット「  ＡＢＣ」、「ＤＥＦＧ」、「ＨＩＪＫ」、「ＬＭＮＯ」、「Ｐ      」が転送されることになる。なお、ここで言う「データユニット」とは、転送単位のサイズのデータのことであり、具体的には、４つの４Ｂｙｔｅのデータの集合であり、故に、データユニットのサイズは１６Ｂｙｔｅである。また、前述したＡ〜Ｐのそれぞれ４Ｂｙｔｅのデータ（図２で灰色のブロックで表示されているデータ）は、転送先で必要とされるデータ（転送対象データ）であり、一つのデータユニットにおける転送対象データ以外のデータ（図２で白色のブロックで表示されているデータ）は、転送先で必要とされないデータ（非転送対象データ）である。
【００１１】
また、データ転送においては、データの検査を行うことが信頼性向上のために求められている。データの検査の代表的な手法の一つに、巡回冗長検査がある。巡回冗長検査では、所定サイズのデータブロックに対して生成多項式を適用し、チェックコードが生成される。例えば、転送元で、所定サイズのデータブロックに別の所定サイズのチェックコードが付加され、データブロックとチェックコードとのセット（以下、データ／コードセット）が転送先に送られる。転送先では、送られて来たデータ／コードセットにおけるデータブロックに対して生成多項式が適用され、それ故、再度チェックコードが生成され、生成されたチェックコードが、データ／コードセットにおけるチェックコードと一致するか否かが判定される。このようにして、データの完全性が保証される。
【００１２】
巡回冗長検査は、各種インタフェース規格において定められており、チェックコード生成のための生成多項式や計算方法がそれぞれ定められている。
【００１３】
巡回冗長検査の一例として、ＳＣＳＩ（Small Computer System Interface）インタフェースのＤＩＦ（Data Integrity Field）がある。ＤＩＦでは、例えば、５１２Ｂｙｔｅごとのデータブロックに対して８Ｂｙｔｅのチェックコードが付加される。８Ｂｙｔｅのチェックコードは、６Ｂｙｔｅの任意のタグ情報と、２Ｂｙｔｅの巡回冗長検査符号で構成され、巡回冗長検査符号は、５１２Ｂｙｔｅのデータブロックに対して次の生成多項式を適用することで生成可能である（x１６+x１５+x１１+x９+x８+x７+x５+x４+x２+x+１）。
【００１４】
図１０に示したＤＭＡＣ１０では、バッファ１１（１２）にデータ／コードセットが一時的に格納されているため、データ転送の前にマイクロプログラム制御部１３がバッファ１１（１２）からデータ／コードセットを読み出すことで、ＤＩＦによるチェックコードの検査または生成を行うことが可能である。
【００１５】
しかし、マイクロプログラム制御部１３でＤＩＦによるチェックコードの検査または生成を実施すると、その処理の間、バッファ１１（１２）を占有してしまい、送受信の多重度を下げてしまうことと、これまで行わなかったマイクロプログラム処理を実施することによるＤＭＡＣ１０の性能低下が想定される。
【００１６】
ＤＭＡＣ１０の性能低下を防ぐための方法として、データ転送とチェックコードの検査または生成を並行して行うことが考えられる。
【００１７】
データ転送と並行してＤＩＦのチェックコードの検査または生成を行うためには、チェックコードの検査または生成を行うハードウェア回路（以下、ＤＩＦ回路）を設け、転送元からデータユニットを読み出す際、または転送先にデータユニットを書き込む際に、それと同じタイミングでＤＩＦ回路にデータユニットを入力する方法が考えられる。言い換えれば、データ転送経路上の、図１０に示すアライナ１４（１５）の上流側（転送元側）又は下流側（転送先側）に、ＤＩＦ回路を設ける方法が考えられる。
【００１８】
図３に、転送先へデータユニットを書き込む際にそのデータユニットをＤＩＦ回路に入力する例を示す。最初のデータユニット「  ＡＢＣ」に対しては、１２Ｂｙｔｅ幅のデータに対するＤＩＦ回路が必要となる。なぜなら、転送対象データの数は３つであるため３×４Ｂｙｔｅ＝１２Ｂｙｔｅが転送対象データ群のサイズであるからである。同様の理由から、続くデータユニット「ＤＥＦＧ」、「ＨＩＪＫ」、「ＬＭＮＯ」のデータユニットに対しては、１６Ｂｙｔｅ幅のデータに対するＤＩＦ回路が必要となり、最後の「Ｐ      」のデータユニットについては４Ｂｙｔｅのデータ幅のＤＩＦ回路が必要となる。
【００１９】
このように、アラインされていないデータユニットに対してチェックコードの検査または生成をデータ転送と同じタイミングで行おうとすると、各データブロックにつき、転送の最初のデータユニットと最後のデータユニットに端数データ（非転送対象データ）が現れる場合がある。このため、図６に示すように、複数種類の端数データ幅（端数データ群のサイズ、言い換えれば端数データの数）に応じた複数種類のＤＩＦ回路を用意する必要が生じ、回路実現のための論理規模の増大が課題となる。
【００２０】
以上の課題は、ＤＩＦ回路以外のチェックコード生成回路、或いは、チェックコード生成回路以外のデータ処理回路（例えば、暗号化処理を行うためのハードウェア回路）での処理を、転送元から転送先へのデータ転送と同じタイミングで行おうとした場合に生じ得る課題である。
【００２１】
従って、本発明の目的は、アラインされていないデータユニットのデータ転送と並行して特定のデータ処理をハードウェア回路にて行うにあたり論理規模が増大しないようにすることにある。
【課題を解決するための手段】
【００２２】
転送元から転送先へ所定の転送単位で転送されるデータユニットの転送経路とは別の位置に、入力されたデータユニットを処理するデータ処理回路と、このデータ処理回路用のアライナとが備えられる。データ処理回路用のアライナは、アライン後のデータユニットの先頭部分に非転送対象のデータが含まれることが無いように、このアライナに入力されたデータユニットのアドレスをアラインするよう構成されている。データ転送に並行して、データ処理回路用のアライナに、転送されるデータユニットが入力され、入力されたデータユニットにおけるデータのアドレスがアラインされ、アライン後のデータユニットがデータ処理回路の入力データ幅単位でデータ処理回路に入力され、データ処理回路に入力されたアライン後のデータユニットが処理される。
【００２３】
データ処理回路としては、誤り検出回路や、暗号化処理回路など、種々の回路を採用可能である。暗号化処理回路としては、例えば、ＣＦＢ（Cipher FeedBack）で暗号化する回路を採用することができる。
【発明を実施するための最良の形態】
【００２４】
以下、図面を参照して、本発明の一実施形態を説明する。
【００２５】
図１は、本発明の一実施形態に係る情報処理装置を示す。
【００２６】
情報処理装置３００に、内部バス３２０に接続されている情報処理資源（ＣＰＵ３１０及びメインメモリ２２０等）と、外部記憶装置２００と情報処理装置３００とを接続しデータ転送を実施するＤＭＡＣ１００を備える。外部記憶装置２００は、例えば、複数の物理記憶媒体（例えばハードディスク或いはフラッシュメモリ）を備えたストレージシステム（一例としてディスクアレイ装置）である。情報処理装置３００は、例えば、外部記憶装置２００から提供される論理ボリュームにブロック単位でデータを読み書きするホスト装置（例えばサーバ）である。ＤＭＡＣ１００は、例えば、ホストバスアダプタ（ＨＢＡ）である。
【００２７】
ＤＭＡＣ１００は、受信バッファ１１０と、送信バッファ１２０と、ＤＩＦ回路１５２と、マイクロプログラム制御部１３０と、ＤＭＡ制御部２１０及び２１１とを備える。
【００２８】
受信バッファ１１０は、外部記憶装置２００から読み出されたデータを受信し、受信したデータを記憶し、データをすべて受信し記憶したところでマイクロプログラム制御部１３０に受信の完了報告を行う機能を持つ。一方、送信バッファ１２０は、外部記憶装置２００に書き込まれるデータを記憶し、バッファ１２０内のデータをすべて送信したところでマイクロプログラム制御部１３０に送信の完了報告を行う機能を持つ。受信バッファ１１０及び送信バッファ１２０の少なくとも一方が、複数個備えられ、それにより、送信及び／又は受信においてバッファ不足のため送信／受信が不能とならないようになっている。なお、本実施形態では、受信バッファ１１０には、５１２Ｂｙｔｅ単位のデータブロックに８Ｂｙｔｅのチェックコードが付加されたデータ／コードセットが格納されるとする。
【００２９】
マイクロプログラム制御部１３０は、ＣＰＵやローカルメモリ等を含んでおり、ＤＭＡＣ１００を制御するマイクロプログラムをＣＰＵで実行する。マイクロプログラムの機能の一つとして、受信や送信の完了報告を受けたところで、送受信バッファ１１０、１２０とメインメモリ２２０との間のデータ転送指示を行う機能がある。
【００３０】
ＤＩＦ回路１５２は、送信されるデータブロックにチェックコードを付加するための回路である。ＤＩＦ回路１５２は、送信バッファ１２０から読み出されたデータブロックを基にチェックコードを生成する。生成されたチェックコードは、送信バッファ１２０から読み出されデータ転送経路を流れるデータブロックに付加されて、外部記憶装置２００に送信される。ＤＩＦ回路１５２は、データ転送経路と別の位置に設けられている。送信バッファ１２０から読み出されたデータブロックが、データ転送経路に加えてＤＩＦ回路１５２を並行して経由するか否かは、マイクロプログラム制御部１２０によって制御される。
【００３１】
本実施形態の一つの特徴として、ＤＭＡ制御部２１０（２１１）の構成にある。すなわち、ＤＭＡ制御部２１０（２１１）には、データ転送経路上に設けられたデータ転送用のアライナ１４０（１４２）の他に、データ転送経路とは別の位置に、ＤＩＦ回路１５０（１５１）と、ＤＩＦ回路用のアライナ１４１（１４３）が設けられている。このような構成は、受信系のＤＭＡ制御部２１０と送信系のＤＭＡ制御部２１１の一方にだけ採用されて良く他方は例えば図１０に示したＤＭＡ制御部２１又は２２の構成であっても良い。なお、以下、データ転送用のアライナを「第一のアライナ」と言い、ＤＩＦ回路用のアライナを「第二のアライナ」と言う。データブロックが、第一のアライナ１４０（１４２）と第二のアライナ１４１（１４３）の両方に並行して入力されるか否かは、マイクロプログラム制御部１２０によって制御される。
【００３２】
第一のアライナ１４０（１４２）は、転送先に合わせたアラインを実施する。本実施形態では、転送単位のサイズは、１６Ｂｙｔｅである。
【００３３】
ＤＩＦ回路１５０（１５１）は、チェックコードを検査又は生成するためのハードウェア回路である。ＤＩＦ回路１５０（１５１）の入力データ幅は、固定長、且つ、固定長のデータブロックのサイズの約数である。本実施形態では、データブロックのサイズは５１２Ｂｙｔｅであり、入力データ幅としては、転送単位のサイズと同じ１６Ｂｙｔｅが採用されている。つまり、転送単位のサイズと同じである。
【００３４】
第二のアライナ１４１（１４３）は、転送先ではなくＤＩＦ回路１５０（１５１）に合わせたアラインを実施する。具体的には、第二のアライナ１４１（１４３）は、ＤＩＦ回路１５０（１５１）の入力データ幅に合わせたアラインを実施する。第二のアライナ１４１（１４３）は、ＤＩＦ回路１５０（１５１）の上流側（例えば直前）に設けられている。すなわち、受信系のＤＭＡ制御部２１０では、第二のアライナ１４１は、ＤＩＦ回路１５０よりも受信バッファ１１０側に存在し、送信系のＤＭＡ制御部２１１では、第二のアライナ１４３は、ＤＩＦ回路１５１よりもメインメモリ２２０側に存在する。
【００３５】
図４に、第一のアライナ１４０（１４２）と第二のアライナ１４１（１４３）が同時に使用される例を示す。
【００３６】
すなわち、転送元（受信バッファ１１０又はメインメモリ２２０）から転送先（メインメモリ２２０又は送信バッファ１２０）へのデータ転送では、転送元から転送先へ転送単位でデータユニットが転送され、そのデータユニットは、第一のアライナ１４０（１４２）を経由するため、転送先に合わせたアラインが実施される。すなわち、転送元から「    ＡＢ」、「ＣＤＥＦ」、「ＧＨＩＪ」、「ＫＬＭＮ」、「ＯＰ    」の順に読み出されたデータユニットが、「  ＡＢＣ」、「ＤＥＦＧ」、「ＨＩＪＫ」、「ＬＭＮＯ」、「Ｐ      」のようにアラインされる。
【００３７】
転送元から転送先へのデータ転送に並行して、下記（Ａ）乃至（Ｄ）の処理、
（Ａ）第二のアライナ１４１（１４３）に、転送元から読み出されたデータユニットが入力される；
（Ｂ）第二のアライナ１４１（１４３）によって、第二のアライナ１４１（１４３）に入力されたデータユニットにおけるデータのアドレスがアラインされる；
（Ｃ）第二のアライナ１４１（１４３）によるアライン後のデータユニットがＤＩＦ回路１５０（１５１）の入力データ幅単位でＤＩＦ回路１５０（１５１）に入力される；
（Ｄ）ＤＩＦ回路１５０（１５１）に入力されたアライン後のデータユニットが処理される；
が行われる。すなわち、同時期に発生したクロックに同期して、データ転送と、前述の（Ａ）乃至（Ｄ）の処理が行われる。
【００３８】
第二のアライナ１４１（１４３）は、転送元から「    ＡＢ」、「ＣＤＥＦ」、「ＧＨＩＪ」、「ＫＬＭＮ」、「ＯＰ    」の順に読み出されたデータユニットを、「ＡＢＣＤ」、「ＥＦＧＨ」、「ＩＪＫＬ」、「ＭＮＯＰ」のようにアラインする。すなわち、第二のアライナ１４１（１４３）は、アライン後のデータユニットの先頭部分に端数データ（非転送対象データ）が含まれることが無いように、このアライナ１４１（１４３）に入力されたデータユニットのアドレスをアラインするよう構成されている。端数データとしては、例えば、フレームのヘッダ情報などがある。
【００３９】
ＤＩＦでは、５１２Ｂｙｔｅ単位のデータブロックに対して、８Ｂｙｔｅのチェックコードが付加される。従って、１６Ｂｙｔｅの入力データ幅のＤＩＦ回路１５０（１５１）に合わせて、本実施形態のように、データユニットの先頭部分に端数データが含まれることが無いようにアラインされれば、５１２Ｂｙｔｅ÷１６Ｂｙｔｅ＝３２個のデータユニットの全てに、端数データが含まれることが無い。また、５１２Ｂｙｔｅのデータブロックに８Ｂｙｔｅのチェックコードが付加されているが、８Ｂｙｔｅのチェックコードは、本実施形態では、必ず、３３個目の１６Ｂｙｔｅのデータユニットの前半部分（上位半分）に存在する。このため、ＤＩＦ回路１５０（１５１）は、３２個のデータユニットが入力される都度に、その次に入力されるデータユニットの前半部分に、それら３２個のデータユニットで構成されるデータブロックに付属しているチェックコードが存在していることが分かる。これらの理由から、本実施形態では、複数種類の端数データ幅に対応した複数種類のＤＩＦ回路を用意する必要は無く、図５及び図７に示すように、一種類のＤＩＦ回路１５０（１５１）、つまり、入力データ幅が１６ＢｙｔｅのＤＩＦ回路１５０（１５１）があれば足りる。
【００４０】
図７によれば、レジスタ７０１に、ＤＩＦ計算の初期値ｓが記憶されており、一つのデータブロックについて、アライン後の先頭のデータユニット（実施例で言う「ＡＢＣＤ」）が入力された場合、そのデータユニットと初期値ｓとを基に計算され、その計算結果を表す値が、レジスタ７０１に格納される。次に、その値と、次のアライン後のデータユニット（実施例で言う「ＥＦＧＨ」）とを基に計算され、その計算結果を表す値が、レジスタ７０１に格納される。以上の処理が、３２個のデータユニットについて行われ、３３個目のデータユニットについては、比較器７０３で、レジスタ３０１に記憶されている値（すなわち、５１２Ｂｙｔｅのデータブロックを基に生成されたチェックコード）と、３３個目のデータユニットの前半部分に存在する値（つまり、５１２Ｂｙｔｅのデータブロックに付加されているチェックコード）とが比較される。前述したように、８Ｂｙｔｅのチェックコードは、本実施形態では、必ず、３３個目の１６Ｂｙｔｅのデータユニットの前半部分（上位半分）に存在するので、チェックコードの位置の判定が容易である。
【００４１】
以上のことから、アラインされていないデータユニットのデータ転送と並行してチェックコードの検査又は生成をＤＩＦ回路にて行うにあたり論理規模が増大しないようにすることができる。
【００４２】
図８は、外部記憶装置２００から受信バッファ１１０に格納されたデータ／コードセットを情報処理装置３００へ転送するフローを示す。
【００４３】
受信バッファ１１０は、データ格納完了をマイクロプログラム制御部１３０に報告し（ステップ８０１）、マイクロプログラム制御部１３０は、その報告を受けて、ＤＭＡの起動指示並びにチェックコードの検査指示をＤＭＡ制御部２１０に対して行う（ステップ８０２）。これにより、受信バッファ１１０からメインメモリ２２０へのデータ転送と、そのデータ転送に並行して、前述した（Ａ）乃至（Ｄ）の処理（チェックコードの検査）が行われる（ステップ８０３）。それらの処理が終わると、ＤＭＡ制御部２１０からマイクロプログラム制御部１３０に完了報告が入力され（ステップ８０４）、マイクロプログラム制御部１３０は、ＤＭＡ終了処理を行う（ステップ８０５）。
【００４４】
図９は、情報処理装置３００から外部記憶装置２００へデータを送出するために送信バッファ１２０へデータを転送するフローを示す。
【００４５】
マイクロプログラム制御部１３０は、送信バッファ１２０に対してバッファの確保を依頼し（ステップ９０１）、バッファの確保の完了を受け（ステップ９０２）、ＤＭＡ起動指示を行う（ステップ９０３）。これにより、メインメモリ２２０から送信バッファ１２０へのデータ転送と、そのデータ転送に並行して、前述した（Ａ）乃至（Ｄ）の処理（チェックコードの検査）が行われる（ステップ９０４）。それらの処理が終わると、ＤＭＡ制御部２１１からマイクロプログラム制御部１３０に完了報告が入力され（ステップ９０５）、マイクロプログラム制御部１３０は、ＤＭＡ終了処理を行う（ステップ９０６）。
【００４６】
なお、ステップ８０３及び９０４の少なくともいずれかでは、必ずしもチェックコードの検査が行われなくても良い。換言すれば、チェックコードの検査を行うか否かは、マイクロプログラム制御部１３０からＤＭＡ制御部２１０（２１１）への指示で制御される。
【００４７】
例えば、転送元からのデータブロックにチェックコードが付加されていない場合、マイクロプログラム制御部１３０は、送信元からのデータユニットを、第二のアライナ１４１又は１４３に入力しないように制御しても良い。
【００４８】
また、例えば、転送元からのデータブロックにチェックコードが付加されていない場合、マイクロプログラム制御部１３０は、送信元からのデータユニットを、第二のアライナ１４１又は１４３に入力し、且つ、ＤＩＦ回路１５１で生成されたチェックコードを第一のアライナ１４０又は１４２を経由したデータブロックに付加するようＤＭＡ制御部２１０又は２１１を制御しても良い。
【００４９】
また、例えば、転送元からのデータブロックにチェックコードが付加されている場合、マイクロプログラム制御部１３０は、送信元からのデータユニットを、第二のアライナ１４１又は１４３に入力し、且つ、ＤＩＦ回路１５１で検査されたチェックコードを転送対象のデータブロックから削除するようＤＭＡ制御部２１０又は２１１を制御しても良い。なお、このケースでは、ＤＩＦ回路１５１でチェックコードの検査は行われなくても良い。
ＤＩＦチェックは不要ならしない。
【００５０】
以上、本発明の好適な実施形態を説明したが、本発明は、この実施形態に限定されるものでなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【００５１】
例えば、転送単位のサイズが入力データ幅のＮ倍（Ｎは自然数）であれば、データ転送のためのクロックサイクルは、上記（Ｃ）の処理（第二のアライナ１４１（１４３）によるアライン後のデータユニットがＤＩＦ回路１５０（１５１）の入力データ幅単位でＤＩＦ回路１５０（１５１）に入力される処理）のためのクロックサイクルの１／Ｎ倍である。このため、例えば、転送単位のサイズが入力データ幅の２倍であれば、データ転送のためのクロックサイクルは、上記（Ｃ）の処理のためのクロックサイクルの１／２倍である。一方、入力データ幅が前記転送単位のサイズのＭ倍（Ｍは自然数）であれば、上記（Ｃ）の処理のためのクロックサイクルは、データ転送のためのクロックサイクルの１／Ｍ倍である。このため、例えば、入力データ幅が転送単位のサイズの２倍であれば、上記（Ｃ）の処理のためのクロックサイクルは、データ転送のためのクロックサイクルの１／２倍である。
【図面の簡単な説明】
【００５２】
【図１】本発明の一実施形態に係る情報処理装置を示す。
【図２】アラインされていないデータユニットの転送の例を示した図である。
【図３】図２のデータ転送において転送先に書き込む際にＤＩＦ回路にデータを入力する例を示した図である。
【図４】本発明の一実施形態でＤＩＦ回路用のアラインを実施した場合のデータ転送の例を示した図である。
【図５】図４に示したアラインを実施した際のＤＩＦ計算を行う例を示した図である。
【図６】図３に示したＤＩＦ計算に関わるハードウェア構成を示した図である。
【図７】図５に示したＤＩＦ計算に関わるハードウェア構成を示した図である。
【図８】受信バッファからメインメモリへのデータ転送フローを示した図である。
【図９】メインメモリから送信バッファへのデータ転送フローを示した図である。
【図１０】マイクロプログラム制御部がＤＩＦ計算を行なうＤＭＡＣを備えた情報処理装置を示す。
【符号の説明】
【００５３】
１００・・・ＤＭＡＣ（ダイレクトメモリアクセスコントローラ）、１１０・・・受信バッファ、１２０・・・送信バッファ、１３０・・・マイクロプログラム制御部、１４０・・・アライナ、１４１・・・アライナ、１４２・・・アライナ、１４３・・・アライナ、１５０・・・ＤＩＦ回路、１５１・・・ＤＩＦ回路、１５２・・・ＤＩＦ回路、２００・・・外部記憶装置、３００・・・情報処理装置、３１０・・・中央処理装置、３２０・・・メインメモリ
【図１】
2010140127.tif 000003
【図２】
2010140127.tif 000004
【図３】
2010140127.tif 000005
【図４】
2010140127.tif 000006
【図５】
2010140127.tif 000007
【図６】
2010140127.tif 000008
【図７】
2010140127.tif 000009
【図８】
2010140127.tif 000010
【図９】
2010140127.tif 000011
【図１０】
2010140127.tif 000012