(57)【要約】      （修正有）【課題】DMA転送を行うデータの全部に対して演算処理を行う場合と、転送データの一部について演算処理を行う場合とで、それぞれに好適な演算処理方法を提供する。【解決手段】レジスタと、第１のメモリ１１５に格納されているデータを第２のメモリ１１６に転送する転送器１０２と、転送器が転送しているデータに対するチェックサム演算を行う演算器１０３とを備える。第１のモードが設定されている場合、演算器はチェックサム演算の結果を転送器に送出し、転送器は該結果を第２のメモリに転送する。第２のモードが設定されている場合、演算器は、データのうちチェックサム演算の対象として指定された部分データに対するチェックサム演算を行い、該部分データに対するチェックサム演算の結果をレジスタに送出する。【選択図】図１
2015207223.tif 000002
【特許請求の範囲】
【請求項１】
レジスタと、
第１のメモリに格納されているデータを第２のメモリに転送する転送器と、
前記転送器が転送しているデータに対するチェックサム演算を行う演算器と
を備え、
第１のモードが設定されている場合、
前記演算器は、前記チェックサム演算の結果を前記転送器に送出し、
前記転送器は、該結果を前記第２のメモリに転送し、
前記第１のモードとは異なる第２のモードが設定されている場合、
前記演算器は、前記データのうちチェックサム演算の対象として指定された部分データに対するチェックサム演算を行い、該部分データに対するチェックサム演算の結果を前記レジスタに送出する
ことを特徴とする情報処理装置。
【請求項２】
前記第１のモードが設定されている場合、
前記転送器は、前記データの転送の前に該データのサイズを前記演算器に送出し、
前記演算器は、該サイズの分だけのデータのチェックサム演算を行ってから、該チェックサム演算の結果を前記転送器に送出し、
前記転送器は更に、前記第２のメモリに転送したデータの末尾に前記演算器から受けたチェックサム演算の結果を付加する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第２のモードが設定されている場合、
前記演算器は、前記部分データを規定するための情報を前記レジスタから取得し、該情報を用いて、前記データから前記部分データをチェックサム演算の対象として指定し、該指定した部分データに対するチェックサム演算を行い、該部分データに対するチェックサム演算の結果を前記レジスタに送出する
ことを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
制御部と、
前記第１のメモリと、
前記第２のメモリと、
請求項１乃至３の何れか１項に記載の情報処理装置と、
を備えることを特徴とするシステム。
【請求項５】
前記制御部は、前記部分データを規定するための情報を前記レジスタに登録することを特徴とする請求項４に記載のシステム。
【請求項６】
レジスタと、
第１のメモリに格納されているデータを第２のメモリに転送する転送器と、
前記転送器が転送しているデータに対するチェックサム演算を行う演算器と
を備える情報処理装置の制御方法であって、
第１のモードが設定されている場合、
前記演算器は、前記チェックサム演算の結果を前記転送器に送出し、
前記転送器は、該結果を前記第２のメモリに転送し、
前記第１のモードとは異なる第２のモードが設定されている場合、
前記演算器は、前記データのうちチェックサム演算の対象として指定された部分データに対するチェックサム演算を行い、該部分データに対するチェックサム演算の結果を前記レジスタに送出する
ことを特徴とする情報処理方法。
【請求項７】
レジスタと、
第１のメモリに格納されているデータを第２のメモリに転送する転送器と、
前記転送器が転送しているデータに対するチェックサム演算を行う演算器と
を備えるコンピュータに、
第１のモードが設定されている場合、
前記演算器に、前記チェックサム演算の結果を前記転送器に送出させ、
前記転送器に、該結果を前記第２のメモリに転送させ、
前記第１のモードとは異なる第２のモードが設定されている場合、
前記演算器に、前記データのうちチェックサム演算の対象として指定された部分データに対するチェックサム演算を行わせ、該部分データに対するチェックサム演算の結果を前記レジスタに送出させる
ことを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理技術に関するもので、特に、DMA転送と同時に転送データのチェックサム演算を実行する技術に関するものである。
【背景技術】
【０００２】
TCP（Transmission Control Protocol）／IP（Internet Protocol）の通信プロトコルを使用してネットワークに接続し、通信相手とデータ転送を行う通信機器がある。近年、このような通信機器間で高解像度、高精細の映像データを転送するような利用形態が増えてきている。そこで、広帯域なデータ転送を可能とするためには、通信機器における通信プロトコル処理の高速化が不可欠となってくる。
【０００３】
TCP／IPの通信プロトコルは、転送するデータに送信先のアドレスや誤り訂正符号等のヘッダを付加してパケットを形成し、このパケット単位で通信を行うものである。この誤り訂正符合にはチェックサムが使用され、パケット全体に対して１の補数として和を求めて、さらに１の補数を取ることで計算される。
【０００４】
このように、TCP／IPの通信プロトコルではチェックサムを得るためにパケット全体に対して演算処理を実行しなければならない。そのため、通信プロトコル処理の高速化を行うためには、この演算処理を高速に実行する必要がある。
【０００５】
上記のようなチェックサム演算を高速に実行するために、様々な装置や制御方法がこれまで提案されており、その中に特許文献１に記載されている演算回路がある。この演算回路は、ディスクリプタに記載された内容に従ってDMA転送を用いて任意回数の入力データを演算して結果を出力するものであり、任意回数の入力データを一度に演算せずに、複数に分割して演算処理する。演算回路は、分割した演算毎の途中結果を一旦外部記憶装置に格納し、次の演算処理にて途中結果を読み込んで演算処理し、その繰り返しにより最終結果を得るものである。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開2008-129632号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１に記載の演算回路では、演算処理を実行するためにDMA転送を行うこととなっており、DMA転送されるデータ全部に対して演算処理を行うことになっている。しかしながら、DMA転送を行うデータの一部分（例えば、ヘッダとフッダを除いた部分）について演算処理を行う場合は、上記従来例では対応できないという課題があった。
【０００８】
本発明はこのような問題に鑑みてなされたものであり、DMA転送を行うデータの全部に対して演算処理を行う場合と、転送データの一部について演算処理を行う場合と、でそれぞれに好適な演算処理方法を提供するための技術を提供する。
【課題を解決するための手段】
【０００９】
本発明の一様態は、レジスタと、第１のメモリに格納されているデータを第２のメモリに転送する転送器と、前記転送器が転送しているデータに対するチェックサム演算を行う演算器とを備え、第１のモードが設定されている場合、前記演算器は、前記チェックサム演算の結果を前記転送器に送出し、前記転送器は、該結果を前記第２のメモリに転送し、前記第１のモードとは異なる第２のモードが設定されている場合、前記演算器は、前記データのうちチェックサム演算の対象として指定された部分データに対するチェックサム演算を行い、該部分データに対するチェックサム演算の結果を前記レジスタに送出することを特徴とする。
【発明の効果】
【００１０】
本発明の構成により、DMA転送を行うデータの全部に対して演算処理を行う場合と、転送データの一部について演算処理を行う場合と、でそれぞれに好適な演算処理方法を提供することができる。
【図面の簡単な説明】
【００１１】
【図１】システムの構成例を示すブロック図。
【図２】ディスクリプタの構成例を示す図。
【図３】レジスタ部１０４の構成例を示す図。
【図４】通常モードの動作例を示す図。
【図５】レジスタモードの動作例を示す図
【図６】システムの動作を示すフローチャート。
【発明を実施するための形態】
【００１２】
以下、添付図面を参照し、本発明の好適な実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載した構成の具体的な実施例の１つである。
【００１３】
［第１の実施形態］
本実施形態では、第１のメモリから第２のメモリにデータ転送（ＤＭＡ転送）を行うと共に、転送中のデータに対してチェックサム演算を行う情報処理装置として機能するデータ処理装置を有するシステムの一例について説明する。先ず、本実施形態に係るシステムの構成例について、図１のブロック図を用いて説明する。
【００１４】
図１に示す如く、本実施形態に係るシステムは、データ処理装置１０１、ＣＰＵ１１４、転送元メモリ１１５、転送先メモリ１１６、ディスクリプタ用メモリ１１７、を有し、それぞれは共通のバス１１３に接続されている。
【００１５】
先ず、ＣＰＵ１１４について説明する。ＣＰＵ１１４は、システム全体の動作制御を行う制御部の一例であり、例えば、バス１１３及びレジスタＩ／Ｆ１０７を介して、データ処理装置１０１に対して様々な動作指示を行ったり設定を行ったりする。
【００１６】
次に、転送元メモリ１１５及び転送先メモリ１１６について説明する。転送元メモリ１１５には、転送対象となるデータが格納されており、このデータは、データ処理装置１０１によって転送先メモリ１１６に転送される。
【００１７】
次に、ディスクリプタ用メモリ１１７について説明する。データ処理装置１０１にデータ転送（転送元メモリ１１５から転送先メモリ１１６へのデータ転送）を行わせるためには、ＣＰＵ１１４は、ディスクリプタ用メモリ１１７にディスクリプタと呼ばれる記述子を登録すると共に、該ディスクリプタ用メモリ１１７におけるディスクリプタの格納アドレスをデータ処理装置１０１に登録する必要がある。然るにディスクリプタ用メモリ１１７は、このＣＰＵ１１４により登録されるディスクリプタを登録するためのメモリとして機能するものである。
【００１８】
ここで、ディスクリプタについて図２を用いて説明する。ディスクリプタは、転送元に係るディスクリプタである転送元用ディスクリプタ、転送先に係るディスクリプタである転送先用ディスクリプタ、の２種類から成り、ＣＰＵ１１４は、１以上の転送元用ディスクリプタと１以上の転送先用ディスクリプタとを生成することになる。
【００１９】
転送元用ディスクリプタのフォーマットを図２（Ａ）に示す。Ｄａｔａ Ｓｔａｒｔ Ａｄｄｒｅｓｓ（ＳＲＣ＿ＤＳＡ２０１）は、転送対象となるデータの（転送元メモリ１１５における）先頭アドレスである。Ｄａｔａ  Ｌｅｎｇｔｈ（ＳＲＣ＿ＤＬ２０２）は、転送対象となるデータのサイズ（データ長）である。Ｎｅｘｔ  Ｄｅｓｃｒｉｐｔｏｒ  Ｅｎａｂｌｅ（ＳＲＣ＿ＮＤＥ２０３）は、次の転送元用ディスクリプタが存在するか否かを示すフラグ値であり、ＳＲＣ＿ＮＤＥ２０３＝「１」の場合は存在することを示し、ＳＲＣ＿ＮＤＥ２０３＝「０」であれば存在しないことを示す。Ｎｅｘｔ  Ｄｅｓｃｒｉｐｔｏｒ  Ａｄｄｒｅｓｓ（ＳＲＣ＿ＮＤＡ２０４）は、次の転送元用ディスクリプタが存在する場合（ＳＲＣ＿ＮＤＥ２０３＝「１」の場合）に使用されるフィールドであり、該次の転送元用ディスクリプタの（ディスクリプタ用メモリ１１７における）先頭アドレスである。
【００２０】
転送先用ディスクリプタのフォーマットを図２（Ｂ）に示す。Ｄａｔａ Ｓｔａｒｔ Ａｄｄｒｅｓｓ（ＤＳＴ＿ＤＳＡ２１１）は、転送先メモリ１１６において転送対象となるデータを格納するための領域（格納領域）の先頭アドレスである。Ｄａｔａ  Ｌｅｎｇｔｈ（ＤＳＴ＿ＤＬ２１２）は、格納領域のサイズである。Ｎｅｘｔ  Ｄｅｓｃｒｉｐｔｏｒ  Ｅｎａｂｌｅ（ＤＳＴ＿ＮＤＥ２１３）は、次の転送先用ディスクリプタが存在するか否かを示すフラグ値である。ＤＳＴ＿ＮＤＥ２１３＝「１」の場合は存在することを示し、ＤＳＴ＿ＮＤＥ２１３＝「０」であれば存在しないことを示す。Ｎｅｘｔ  Ｄｅｓｃｒｉｐｔｏｒ  Ａｄｄｒｅｓｓ（ＤＳＴ＿ＮＤＡ２１４）は、次の転送先用ディスクリプタが存在する場合（ＤＳＴ＿ＮＤＥ２１３＝「１」の場合）に使用されるフィールドであり、該次の転送先用ディスクリプタの（ディスクリプタ用メモリ１１７における）先頭アドレスである。Ｃｈｅｃｋｓｕｍ  Ｅｎａｂｌｅ（ＣＳ＿ＥＮ２１５）は、本システムにおける動作モードに応じた値（モード値）である。通常モードが設定されている場合には、ＣＳ＿ＥＮ２１５＝「１」となり、レジスタモードが設定されている場合には、ＣＳ＿ＥＮ２１５＝「０」となる。通常モード、レジスタモード、については後述する。
【００２１】
このように転送元用ディスクリプタ、転送先用ディスクリプタを構成することで、たとえ転送元用ディスクリプタ、転送先用ディスクリプタのそれぞれを複数生成し、ディスクリプタ用メモリ１１７に格納したとしても（ＳＲＣ＿ＮＤＥ＝ＤＳＴ＿ＮＤＥ＝「１」）、データ処理装置１０１には、複数の転送元用ディスクリプタのうち先頭の転送元用ディスクリプタの先頭アドレス、複数の転送先用ディスクリプタのうち先頭の転送先用ディスクリプタの先頭アドレス、さえ登録しておけば良く、Ｎ（Ｎは２以上の整数）番目の転送元用ディスクリプタの先頭アドレスは、（Ｎ−１）番目の転送元用ディスクリプタのＳＲＣ＿ＮＤＡ２０４から取得することができ、Ｎ（Ｎは２以上の整数）番目の転送先用ディスクリプタの先頭アドレスは、（Ｎ−１）番目の転送先用ディスクリプタのＤＳＴ＿ＮＤＡ２１４から取得することができる。
【００２２】
なお、転送元用ディスクリプタ、転送先用ディスクリプタのフォーマットはそれぞれ図２（Ａ）、（Ｂ）に示したフォーマットに限るものではない。例えば、転送元用ディスクリプタ、転送先用ディスクリプタを別個にするのではなく、連結させて１つのディスクリプタとしても構わない。
【００２３】
次に、データ処理装置１０１について説明する。データ処理装置１０１は、ＤＭＡ転送制御部１０２、演算部１０３、レジスタ部１０４、を有している。また、ＤＭＡ転送制御部１０２は、リードデータＩ／Ｆ１０５及びライトデータＩ／Ｆ１０６を介してバス１１３に接続されており、レジスタ部１０４はレジスタＩ／Ｆ１０７を介してバス１１３に接続されている。
【００２４】
ＤＭＡ転送制御部１０２は、データ処理装置１０１全体の動作制御を行うためのものであり、主に、転送元メモリ１１５から転送先メモリ１１６へのデータ転送を制御する。演算部１０３は、ライトデータＩ／Ｆ１０６を介して転送先メモリ１１６に転送中のデータに対してチェックサム演算を行う。レジスタ部１０４は、ＣＰＵ１１４から設定された様々な情報等を保持するためのメモリである。
【００２５】
ここで、レジスタ部１０４の構成例について、図３を用いて説明する。
【００２６】
SRC Descriptor Address（ＳＲＣ＿ＤＡ３０１）は、ディスクリプタ用メモリ１１７に登録されている転送元用ディスクリプタのうち先頭の転送元用ディスクリプタの先頭アドレスを登録するための領域である。
【００２７】
DST Descriptor Address（ＤＳＴ＿ＤＡ３０２）は、ディスクリプタ用メモリ１１７に登録されている複数の転送先用ディスクリプタのうち先頭の転送先用ディスクリプタの先頭アドレスを登録するための領域である。
【００２８】
non-Checksum Header（ＮＣＳ＿ＨＤ３０３）、non-Checksum Footer（ＮＣＳ＿ＦＤ３０４）、Checksum Length（ＣＳ＿ＤＬ３０５）は何れも、本システムにおける動作モードがレジスタモードの場合に使用される領域である。
【００２９】
ＮＣＳ＿ＨＤ３０３は、転送対象のデータの先頭部分にチェックサム演算の対象外とする部分データが存在する場合に、該転送対象のデータにおいて該部分データを規定する情報を登録するための領域である。例えば、転送対象のデータの先頭から該部分データの後端までの間のデータサイズ（データ長）がＮＣＳ＿ＨＤ３０３に登録される。なお、本システム（特にデータ処理装置１０１）が初期化された場合には、ＮＣＳ＿ＨＤ３０３には「０」が登録されているものとする。
【００３０】
ＮＣＳ＿ＦＤ３０４は、転送対象のデータの末尾部分にチェックサム演算の対象外とする部分データが存在する場合に、該転送対象のデータにおいて該部分データを規定する情報を登録するための領域である。例えば、該部分データの先頭から該転送対象のデータの後端までの間のデータサイズ（データ長）がＮＣＳ＿ＦＤ３０４に登録される。なお、本システム（特にデータ処理装置１０１）が初期化された場合には、ＮＣＳ＿ＦＤ３０４には「０」が登録されているものとする。
【００３１】
ＣＳ＿ＤＬ３０５は、転送先メモリ１１６において転送対象となるデータを格納するための領域のサイズを登録するための領域であり、ＤＳＴ＿ＤＬ２１２の値と同じ値が登録されることになる。なお、本システム（特にデータ処理装置１０１）が初期化された場合には、ＣＳ＿ＤＬ３０５には適当な値が登録されているものとする。
【００３２】
Register-Mode Enable（ＲＥＧ＿ＥＮ３０６）は、本システムの動作モードを表す値を登録するための領域であり、通常モードを設定する場合には、ＲＥＧ＿ＥＮ３０６に「１」を登録し、レジスタモードを設定する場合には、ＲＥＧ＿ＥＮ３０６に「０」を登録する。なお、本システム（特にデータ処理装置１０１）が初期化された場合には、ＲＥＧ＿ＥＮ３０６には「１」が登録されているものとする。
【００３３】
Status（ＳＴＳ３０７）は、データ処理装置１０１側でデータ転送処理やチェックサム演算が完了しているか否かを示す値を書き込むための領域である。データ処理装置１０１がスタンバイ状態であったり、データ転送処理中であったり、チェックサム演算中であったりする場合、ＳＴＳ３０７には「０」が登録される。一方、データ処理装置１０１がデータ転送処理及びチェックサム演算を完了させた場合には、ＳＴＳ３０７には「１」が登録される。なお、本システム（特にデータ処理装置１０１）の初期状態では、ＳＴＳ３０７には「０」が登録されている。
【００３４】
Checksum FIFO（ＣＳ＿ＦＩＦＯ３０８）は、チェックサム演算の結果を格納するための領域であり、内部は８段のFIFOで構成され、チェックサム演算の結果をFIFOに保持しているかどうかを示すフラグ情報を示す任意のビットも保持している。該フラグ情報が「０」であれば読み出すチェックサム演算結果があることを示し、「１」であれば読み出すチェックサム演算結果が無いことを示す。
【００３５】
なお、レジスタ部１０４の構成は図３に示した構成に限るものではなく、更に以下のようなフィールドを設けても構わない。
【００３６】
・  アボート設定フィールド
このフィールドは、「１」をセットすることでチェックサム演算を中止することができるフィールドである。通常モード実行中であればチェックサム演算結果として“0000”を出力し、レジスタモードであればチェックサム演算結果としては何も出力しない。初期状態は、「０」である。
【００３７】
・  インバース設定フィールド
このフィールドは、チェックサム演算結果の表記方法を選択できるフィールドである。TCP／IPの通信プロトコルで使用されるチェックサムは、パケット全体に対して１の補数として和を求めて、さらに1の補数を取ることで計算される。そのため、このフィールドに「０」と入力した場合はチェックサム演算結果として１の補数としての和とし、「１」と入力した場合はチェックサム演算結果として１の補数としての和の補数とする。
【００３８】
・  フリーラン設定フィールド
このフィールドは、レジスタモードで動作した場合にチェックサム演算結果が出力されるＣＳ＿ＦＩＦＯ３０８において、FIFOがFullの場合にチェックサム演算結果を上書きするかどうかを設定するフィールドである。このフィールドに「０」と入力した場合はＣＳ＿ＦＩＦＯ３０８のFIFOがFullの場合は書き込みを停止し、「１」と入力した場合はそのまま上書きする。
【００３９】
次に、上記の構成を有するシステムの動作について、図６のフローチャートを用いて説明する。
【００４０】
＜ステップＳ６０１＞
ＣＰＵ１１４は、１以上の転送元用ディスクリプタ及び１以上の転送先用ディスクリプタを、バス１１３を介してディスクリプタ用メモリ１１７に登録する。
【００４１】
＜ステップＳ６０２＞
ＣＰＵ１１４は、ディスクリプタ用メモリ１１７に登録した１以上の転送元用ディスクリプタのうち先頭の転送元用ディスクリプタのディスクリプタ用メモリ１１７における先頭アドレスを、バス１１３及びレジスタＩ／Ｆ１０７を介して、レジスタ部１０４のＳＲＣ＿ＤＡ３０１に登録する。
【００４２】
また、ＣＰＵ１１４は、ディスクリプタ用メモリ１１７に登録した１以上の転送先用ディスクリプタのうち先頭の転送先用ディスクリプタのディスクリプタ用メモリ１１７における先頭アドレスを、バス１１３及びレジスタＩ／Ｆ１０７を介して、レジスタ部１０４のＤＳＴ＿ＤＡ３０２に登録する。また、ＣＰＵ１１４は、通常モード及びレジスタモードのどちらの動作モードで起動するかを示すために、ＲＥＧ＿ＥＮ３０６に「１」あるいは「０」を登録する。
【００４３】
＜ステップＳ６０３＞
ＣＰＵ１１４が、動作モードとして通常モードを登録した場合には、処理はステップＳ６０４に進み、レジスタモードを登録した場合には、処理はステップＳ６０５に進む。
【００４４】
＜ステップＳ６０４＞
ＣＰＵ１１４は、ＮＣＳ＿ＨＤ３０３、ＮＣＳ＿ＦＤ３０４、ＣＳ＿ＤＬ３０５のそれぞれを初期化して、それぞれの領域の初期値を登録する。ＲＥＧ＿ＥＮ３０６には、通常モードを示す値が登録されている。なお、これらの領域がすでに初期化されているのであれば、本ステップにおける処理は省略することができる。
【００４５】
＜ステップＳ６０５＞
ＣＰＵ１１４は、ＮＣＳ＿ＨＤ３０３、ＮＣＳ＿ＦＤ３０４、ＣＳ＿ＤＬ３０５のそれぞれに対して値を登録する。これによりＮＣＳ＿ＨＤ３０３には、これから転送されるデータの先頭部分（チェックサム演算の対象外とする部分データ）を規定する値が登録されることになる。また、ＮＣＳ＿ＦＤ３０４には、これから転送されるデータの末尾部分（チェックサム演算の対象外とする部分データ）を規定する値が登録されることになる。また、ＣＳ＿ＤＬ３０５には、ＤＳＴ＿ＤＬ２１２の値と同じ値が登録されることになる。また、ＲＥＧ＿ＥＮ３０６には、レジスタモードを示す値が登録されている。
【００４６】
＜ステップＳ６０６＞
演算部１０３は、レジスタ信号１１０を介してレジスタ部１０４から、ＲＥＧ＿ＥＮ３０６に登録されている値を取得する。
【００４７】
＜ステップＳ６０７＞
ステップＳ６０７における処理は、第１回目と第Ｎ（Ｎは２以上の整数）目とで異なる。
【００４８】
第１回目のステップＳ６０７では、ＤＭＡ転送制御部１０２は、レジスタ信号１０９を介してＳＲＣ＿ＤＡ３０１及びＤＳＴ＿ＤＡ３０２から先頭アドレスを取得する。
【００４９】
第Ｎ回目のステップＳ６０７では、ＤＭＡ転送制御部１０２は、第（Ｎ−１）回目のステップＳ６０８で取得した転送元用ディスクリプタ中のＳＲＣ＿ＮＤＥ２０３の値が「１」であれば、ＳＲＣ＿ＮＤＡ２０４から先頭アドレスを取得する。同様に、ＤＭＡ転送制御部１０２は、第（Ｎ−１）回目のステップＳ６０８で取得した転送先用ディスクリプタ中のＤＳＴ＿ＮＤＥ２１３の値が「１」であれば、ＤＳＴ＿ＮＤＡ２１４から先頭アドレスを取得する。
【００５０】
＜ステップＳ６０８＞
ＤＭＡ転送制御部１０２は、ステップＳ６０７で取得した（ディスクリプタ用メモリ１１７における）転送元用ディスクリプタの先頭アドレスにリードデータＩ／Ｆ１０５及びバス１１３を介してアクセスし、該転送元用ディスクリプタを読み出す。また、ＤＭＡ転送制御部１０２は、ステップＳ６０７で取得した（ディスクリプタ用メモリ１１７における）転送先用ディスクリプタの先頭アドレスにリードデータＩ／Ｆ１０５及びバス１１３を介してアクセスし、該転送先用ディスクリプタを読み出す。
【００５１】
＜ステップＳ６０９＞
ＤＭＡ転送制御部１０２は、ステップＳ６０８で取得した転送元用ディスクリプタ中のＳＲＣ＿ＤＳＡ２０１が示すアドレスを先頭アドレスとし、該転送元用ディスクリプタ中のＳＲＣ＿ＤＬ２０２が示すデータ長ぶんのデータをデータリードＩ／Ｆ１０５を介して転送元メモリ１１５から読み出す。そしてＤＭＡ転送制御部１０２は、この読み出したデータを、ステップＳ６０８で取得した転送先用ディスクリプタ中のＤＳＴ＿ＤＳＡ２１１を先頭アドレスとし、該転送先用ディスクリプタ中のＤＳＴ＿ＤＬ２１２をサイズとする転送先メモリ１１６中の格納領域に、ライトデータＩ／Ｆ１０６を介して書き込む。
【００５２】
このようにして、ステップＳ６０８で取得したディスクリプタ（転送元用ディスクリプタ及び転送先用ディスクリプタ）に基づいて、転送元メモリ１１５から転送先メモリ１１６へのデータ転送を行う。
【００５３】
＜ステップＳ６１２＞
ＣＰＵ１１４がデータ処理装置１０１を通常モードで起動した場合には、処理はステップＳ６１３に進み、レジスタモードで起動した場合には、処理はステップＳ６１７に進む。
【００５４】
＜ステップＳ６１３＞
ＤＭＡ転送制御部１０２は、転送先用ディスクリプタ中のＣＳ＿ＥＮ２１５の値が「１」であることを確認し、転送先用ディスクリプタ中のＤＳＴ＿ＤＬ２１２を、通知信号１１１を介して演算部１０３に通知する。
【００５５】
＜ステップＳ６１４＞
演算部１０３は、ライトデータＩ／Ｆ１０６を介して転送先メモリ１１６に転送されるデータをスヌープＩ／Ｆ１１２を介して取得し、該取得したデータに対して一定のデータ幅で１の補数の和を求める計算、即ちチェックサム演算を行う。そして、演算部１０３は、チェックサム演算を行った対象のデータの量が、ＤＭＡ転送制御部１０２から通知信号１１１を介して通知されたＤＳＴ＿ＤＬ２１２の値に達したか否かを判断し、達した場合には、チェックサム演算が完了したものと判断し、通知信号１１１を介してその旨をＤＭＡ転送制御部１０２に通知してから処理はステップＳ６１５に進む。
【００５６】
＜ステップＳ６１５＞
演算部１０３は、ステップＳ６１４において行ったチェックサム演算の結果を、通知信号１１１を介してＤＭＡ転送制御部１０２に通知する。
【００５７】
＜ステップＳ６１６＞
ＤＭＡ転送制御部１０２は、通知信号１１１を介して演算部１０３から受けたチェックサム演算の結果を、ステップＳ６０９で転送先メモリ１１６に転送したデータの末尾に付加すべく、該チェックサム演算の結果をライトデータＩ／Ｆ１０６及びバス１１３を介して転送先メモリ１１６に対して送出する。
【００５８】
＜ステップＳ６１７＞
ＤＭＡ転送制御部１０２は、転送先用ディスクリプタ中のＣＳ＿ＥＮ２１５の値が「０」であることを確認し、演算部１０３は、レジスタ信号１１０を介してレジスタ部１０４から、ＮＣＳ＿ＨＤ３０３、ＮＣＳ＿ＦＤ３０４、ＣＳ＿ＤＬ３０５のそれぞれに登録されている値を取得する。
【００５９】
＜ステップＳ６１８＞
ステップＳ６０８で取得したディスクリプタに基づくデータ転送が開始されると、転送先メモリ１１６にはライトデータＩ／Ｆ１０６を介してデータが転送されるので、演算部１０３は、このライトデータＩ／Ｆ１０６を介して転送されるデータを規定の単位でスヌープＩ／Ｆ１１２を介して取得する。また、演算部１０３は、ステップＳ６０８で取得したディスクリプタに基づくデータ転送の開始後にスヌープＩ／Ｆ１１２を介して取得したデータの量をカウントしている。そして演算部１０３は、このカウント値（データ転送の開始後に取得したデータの総量）が、ＮＣＳ＿ＨＤ３０３が示すデータ長を超えるまではチェックサム演算を開始せず、超えると、それ以降にスヌープＩ／Ｆ１１２を介して取得したデータに対してチェックサム演算を行う。このチェックサム演算は、「ＤＳＴ＿ＤＬ２１２の値からＮＣＳ＿ＨＤ３０３の値とＮＣＳ＿ＦＤ３０４の値とを差し引いた残りの値」が示すデータ量分だけ行う。
【００６０】
これにより、演算部１０３は、ステップＳ６０８で取得したディスクリプタに基づくデータ転送により転送される全データのうち先頭からＮＣＳ＿ＨＤ３０３が示すデータ長分のデータ及び末尾からＮＣＳ＿ＦＤ３０４が示すデータ長分のデータ、についてはチェックサム演算は行わず、残りの部分についてチェックサム演算を行うことになる。
【００６１】
そして、演算部１０３は、チェックサム演算を行った対象のデータの量が、「ＤＳＴ＿ＤＬ２１２の値からＮＣＳ＿ＨＤ３０３の値とＮＣＳ＿ＦＤ３０４の値とを差し引いた残りの値」が示すデータ量に達したか否かを判断し、達した場合には、チェックサム演算が完了したものと判断し、処理はステップＳ６１９に進む。
【００６２】
＜ステップＳ６１９＞
演算部１０３は、ステップＳ６１８において行ったチェックサム演算の結果を、レジスタ信号１１０を介してレジスタ部１０４のＣＳ＿ＦＩＦＯ３０８に登録する。
【００６３】
＜ステップＳ６１０＞
ＤＭＡ転送制御部１０２は、転送元用ディスクリプタ中のＳＲＣ＿ＮＤＥ２０３の値が０且つ転送先用ディスクリプタ中のＤＳＴ＿ＮＤＥ２１３の値が０であるか否かを判断し、共に０の場合は、全てのディスクリプタに基づくデータ転送が完了したものと判断して、処理はステップＳ６１１に進む。
【００６４】
一方、転送元用ディスクリプタ中のＳＲＣ＿ＮＤＥ２０３の値、転送先用ディスクリプタ中のＤＳＴ＿ＮＤＥ２１３の値、のうち少なくとも一方が「１」であれば、処理はステップＳ６０７に戻る。
【００６５】
＜ステップＳ６１１＞
本ステップでは、それぞれのディスクリプタに応じたデータ転送の完了やそれぞれのデータ転送に対するチェックサム演算の完了を示す値をレジスタ部１０４のＳＴＳ３０７に登録する。この登録の仕方は、通常モード、レジスタモードのそれぞれで異なる。
【００６６】
通常モードの場合、ＤＭＡ転送制御部１０２は、データ転送が完了し且つ演算部１０３から通知信号１１１を介してチェックサム演算の完了通知を受けると、ＤＭＡ転送及びチェックサム演算の完了を検知し、その旨をレジスタ部１０４のＳＴＳ３０７に登録する。
【００６７】
レジスタモードの場合、ＤＭＡ転送制御部１０２は、データ転送が完了すると、ＤＭＡ転送が完了した旨をレジスタ部１０４に通知する。また、演算部１０３は、チェックサム演算が完了すると、チェックサム演算が完了した旨をレジスタ部１０４に通知する。これにより、レジスタ部１０４のＳＴＳ３０７には、それぞれのディスクリプタに応じたデータ転送の完了及びそれぞれのデータ転送に対するチェックサム演算の完了を示す値が登録されることになる。
【００６８】
そして、これに応じてレジスタ部１０４は、それぞれのディスクリプタに応じたデータ転送の完了及びそれぞれのデータ転送に対するチェックサム演算の完了を示す値を、割り込み信号１０８を介してＣＰＵ１１４に通知する。
【００６９】
次に、図６のフローチャートに従った処理を、具体例を挙げて説明する。先ず、通常モードにおける処理について、図４の具体例を用いて説明する。図４では、転送対象となる３つのデータ（Ｄａｔａ１，Ｄａｔａ２，Ｄａｔａ３）が隣接して転送元メモリ１１５内（領域４０８内）に格納されており、Ｄａｔａ１，Ｄａｔａ２，Ｄａｔａ３をそれぞれ、転送先メモリ１１６において隣接していない領域（領域４０９，４１０，４１１）にＤＭＡ転送すると共に、それぞれのデータに対するチェックサムの結果を転送先メモリ１１６（領域４０１，４０２，４０３）に格納するケースについて説明する。
【００７０】
このようなＤＭＡ転送を実現するためにＣＰＵ１１４が生成する転送元用ディスクリプタ、転送先用ディスクリプタについては次の通りである。すなわち、上記の通り、Ｄａｔａ１，Ｄａｔａ２，Ｄａｔａ３は、転送元メモリ１１５において連続するアドレスに書き込まれている一塊のデータ群であるため、ＣＰＵ１１４は、この一塊のデータ群に対して１つの転送元用ディスクリプタ４０４を生成する。転送元用ディスクリプタ４０４におけるＳＲＣ＿ＤＳＡ２０１には、この一塊のデータ群の転送元メモリ１１５における先頭アドレス（すなわち、Ｄａｔａ１の先頭アドレス）が格納されている。また、転送元用ディスクリプタ４０４におけるＳＲＣ＿ＤＬ２０２には、この一塊のデータ群のデータサイズ（即ち、Ｄａｔａ１，Ｄａｔａ２，Ｄａｔａ３のそれぞれのデータサイズの合計値）が格納されている。また、転送元メモリ１１５には、この一塊のデータ群（Ｄａｔａ１，Ｄａｔａ２，Ｄａｔａ３）だけが転送対象として格納されており、転送元用ディスクリプタも転送元用ディスクリプタ４０４だけとなるため、転送元用ディスクリプタ４０４におけるＳＲＣ＿ＮＤＥ２０３には「０」が格納され、ＳＲＣ＿ＮＤＡ２０４にはＮＵＬＬなどの無効値が格納されることになる。
【００７１】
また、上記の通り、転送先メモリ１１６には、Ｄａｔａ１，Ｄａｔａ２，Ｄａｔａ３のそれぞれを、転送先メモリ１１６において隣接していない領域に転送するため、転送先用ディスクリプタは、Ｄａｔａ１，Ｄａｔａ２，Ｄａｔａ３のそれぞれについて生成することになる。図４では、Ｄａｔａ１，Ｄａｔａ２，Ｄａｔａ３のそれぞれに対する転送先用ディスクリプタとして、転送先用ディスクリプタ４０５，４０６，４０７が生成されている。
【００７２】
転送先用ディスクリプタ４０５のＤＳＴ＿ＤＳＡ２１１には、転送先メモリ１１６においてＤａｔａ１を格納するための領域（格納領域）の先頭アドレスが格納されており、ＤＳＴ＿ＤＬ２１２には、転送先メモリ１１６においてＤａｔａ１を格納するための領域のサイズが格納されている。また、転送先用ディスクリプタ４０５のＤＳＴ＿ＮＤＥ２１３には、次の転送対象データであるＤａｔａ２に対する転送先用ディスクリプタ４０６が存在するために「１」が格納され、ＤＳＴ＿ＮＤＡ２１４には、転送先用ディスクリプタ４０６のディスクリプタ用メモリ１１７における先頭アドレスが格納されている。
【００７３】
転送先用ディスクリプタ４０６のＤＳＴ＿ＤＳＡ２１１には、転送先メモリ１１６においてＤａｔａ２を格納するための領域（格納領域）の先頭アドレスが格納されており、ＤＳＴ＿ＤＬ２１２には、転送先メモリ１１６においてＤａｔａ２を格納するための領域のサイズが格納されている。また、転送先用ディスクリプタ４０６のＤＳＴ＿ＮＤＥ２１３には、次の転送対象データであるＤａｔａ３に対する転送先用ディスクリプタ４０７が存在するために「１」が格納され、ＤＳＴ＿ＮＤＡ２１４には、転送先用ディスクリプタ４０７のディスクリプタ用メモリ１１７における先頭アドレスが格納されている。
【００７４】
転送先用ディスクリプタ４０７のＤＳＴ＿ＤＳＡ２１１には、転送先メモリ１１６においてＤａｔａ３を格納するための領域（格納領域）の先頭アドレスが格納されており、ＤＳＴ＿ＤＬ２１２には、転送先メモリ１１６においてＤａｔａ３を格納するための領域のサイズが格納されている。また、転送先用ディスクリプタ４０７のＤＳＴ＿ＮＤＥ２１３には、次の転送対象データが存在しないために「０」が格納され、ＤＳＴ＿ＮＤＡ２１４にはＮＵＬＬなどの無効値が格納されている。
【００７５】
通常モードであるため、ＲＥＧ＿ＥＮ３０６には通常モードを示す値が登録されている。ＣＰＵ１１４は、転送元用ディスクリプタ４０４及び転送先用ディスクリプタ４０５，４０６，４０７をディスクリプタ用メモリ１１７に登録すると共に、転送元用ディスクリプタ４０４及び転送先用ディスクリプタ４０５のディスクリプタ用メモリ１１７における先頭アドレスをレジスタ部１０４のＳＲＣ＿ＤＡ３０１、ＤＳＴ＿ＤＡ３０２のそれぞれに登録する。
【００７６】
ＤＭＡ転送制御部１０２は、ＳＲＣ＿ＤＡ３０１及びＤＳＴ＿ＤＡ３０２から先頭アドレスを取得し、該取得した先頭アドレスを用いてディスクリプタ用メモリ１１７から転送元用ディスクリプタ４０４及び転送先用ディスクリプタ４０５を取得する。そしてＤＭＡ転送制御部１０２は、転送元メモリ１１５において、転送元用ディスクリプタ４０４中のＳＲＣ＿ＤＳＡ２０１とＳＲＣ＿ＤＬ２０２で指定された領域（領域４０８）内のデータを転送対象のデータとして読み出すことになる。そしてＤＭＡ転送制御部１０２は、読み出したデータの先頭から順に、転送先メモリ１１６において、転送先用ディスクリプタ４０５中のＤＳＴ＿ＤＳＡ２１１及びＤＳＴ＿ＤＬ２１２で指定された領域（領域４０９）に転送する。この転送されたデータがＤａｔａ１である。演算部１０３は、このＤａｔａ１の転送中に該Ｄａｔａ１に対してチェックサム演算を行い、ＤＭＡ転送制御部１０２は、該チェックサム演算の結果を取得して転送先メモリ１１６の領域４０１に登録する。そして転送先用ディスクリプタ４０５中のＤＳＴ＿ＮＤＥ２１３の値が「１」であるので、ＤＭＡ転送制御部１０２は、転送先用ディスクリプタ４０５中のＤＳＴ＿ＮＤＡ２１４のアドレスにアクセスして、転送先用ディスクリプタ４０６を取得する。
【００７７】
ＤＭＡ転送制御部１０２は、未転送のデータ（Ｄａｔａ２，Ｄａｔａ３）の先頭から順に、転送先メモリ１１６において、転送先用ディスクリプタ４０６中のＤＳＴ＿ＤＳＡ２１１及びＤＳＴ＿ＤＬ２１２で指定された領域（領域４１０）に転送する。この転送されたデータがＤａｔａ２である。演算部１０３は、このＤａｔａ２の転送中に該Ｄａｔａ２に対してチェックサム演算を行い、ＤＭＡ転送制御部１０２は、該チェックサム演算の結果を取得して転送先メモリ１１６の領域４０２に登録する。そして転送先用ディスクリプタ４０６中のＤＳＴ＿ＮＤＥ２１３の値が「１」であるので、ＤＭＡ転送制御部１０２は、転送先用ディスクリプタ４０６中のＤＳＴ＿ＮＤＡ２１４のアドレスにアクセスして、転送先用ディスクリプタ４０７を取得する。
【００７８】
ＤＭＡ転送制御部１０２は、未転送のデータ（Ｄａｔａ３）の先頭から順に、転送先メモリ１１６において、転送先用ディスクリプタ４０７中のＤＳＴ＿ＤＳＡ２１１及びＤＳＴ＿ＤＬ２１２で指定された領域（領域４１１）に転送する。この転送されたデータがＤａｔａ３である。演算部１０３は、このＤａｔａ３の転送中に該Ｄａｔａ３に対してチェックサム演算を行い、ＤＭＡ転送制御部１０２は、該チェックサム演算の結果を取得して転送先メモリ１１６の領域４０３に登録する。そして転送元用ディスクリプタ４０４中のＳＲＣ＿ＮＤＥ２０３の値及び転送先用ディスクリプタ４０７中のＤＳＴ＿ＮＤＥ２１３の値が共に「０」であるので、ＤＭＡ転送制御部１０２は、データ転送の完了及びチェックサム演算の完了を示す値を、レジスタ信号１０９を介してレジスタ部１０４のＳＴＳ３０７に登録する。これに応じてレジスタ部１０４は、データ転送の完了及びチェックサム演算の完了を示す値を、割り込み信号１０８を介してＣＰＵ１１４に通知する。
【００７９】
次に、レジスタモードにおける処理について、図５の具体例を用いて説明する。図５では、転送対象となるデータ（Ｄａｔａ４）が転送元メモリ１１５内（領域５０２内）に格納されており、このＤａｔａ４を、転送先メモリ１１６内の領域（領域５０４）にＤＭＡ転送すると共に、Ｄａｔａ４に対するチェックサムの結果をレジスタ部１０４に格納するケースについて説明する。
【００８０】
このようなＤＭＡ転送を実現するためにＣＰＵ１１４が生成する転送元用ディスクリプタ、転送先用ディスクリプタはそれぞれ、Ｄａｔａ４に対する転送元用ディスクリプタ５０１及び転送先用ディスクリプタ５０３である。
【００８１】
転送元用ディスクリプタ５０１におけるＳＲＣ＿ＤＳＡ２０１には、Ｄａｔａ４の転送元メモリ１１５における先頭アドレスが格納されている。また、転送元用ディスクリプタ５０１におけるＳＲＣ＿ＤＬ２０２には、Ｄａｔａ４のデータサイズが格納されている。また、転送元メモリ１１５には、Ｄａｔａ４だけが転送対象として格納されており、転送元用ディスクリプタも転送元用ディスクリプタ４０４だけとなるため、転送元用ディスクリプタ４０４におけるＳＲＣ＿ＮＤＥ２０３には「０」が格納され、ＳＲＣ＿ＮＤＡ２０４にはＮＵＬＬなどの無効値が格納されることになる。
【００８２】
転送先用ディスクリプタ５０３のＤＳＴ＿ＤＳＡ２１１には、転送先メモリ１１６においてＤａｔａ４を格納するための領域（格納領域）の先頭アドレスが格納されており、ＤＳＴ＿ＤＬ２１２には、転送先メモリ１１６においてＤａｔａ４を格納するための領域のサイズが格納されている。また、転送先用ディスクリプタ５０３のＤＳＴ＿ＮＤＥ２１３には「０」が格納され、ＤＳＴ＿ＮＤＡ２１４には、ＮＵＬＬなどの無効値が格納されることになる。
【００８３】
また、演算部１０３は、Ｄａｔａ４全体に対してチェックサム演算を行うのではなく、図５の場合、Ｈｅａｄｅｒ（ＮＣＳ＿ＨＤ３０３が示すサイズ）とＦｏｏｔｅｒ（ＮＣＳ＿ＦＤ３０４が示すサイズ）とを省いた残りの部分（部分データ５０５）に対してチェックサム演算を行う。
【００８４】
レジスタモードであるため、レジスタ部１０４のＮＣＳ＿ＨＤ３０３、ＮＣＳ＿ＦＤ３０４、ＣＳ＿ＤＬ３０５にはそれぞれ、Ｈｅａｄｅｒのサイズ、Ｆｏｏｔｅｒのサイズ、ＤＳＴ＿ＤＬ２１２と同じ値が登録され、ＲＥＧ＿ＥＮ３０６にはレジスタモードを表す値が登録される。ＣＰＵ１１４は、転送元用ディスクリプタ５０１及び転送先用ディスクリプタ５０３をディスクリプタ用メモリ１１７に登録すると共に、転送元用ディスクリプタ５０１及び転送先用ディスクリプタ５０３のディスクリプタ用メモリ１１７における先頭アドレスをレジスタ部１０４のＳＲＣ＿ＤＡ３０１、ＤＳＴ＿ＤＡ３０２のそれぞれに登録する。
【００８５】
ＤＭＡ転送制御部１０２は、ＳＲＣ＿ＤＡ３０１及びＤＳＴ＿ＤＡ３０２から先頭アドレスを取得し、該取得した先頭アドレスを用いてディスクリプタ用メモリ１１７から転送元用ディスクリプタ５０１及び転送先用ディスクリプタ５０３を取得する。そしてＤＭＡ転送制御部１０２は、転送元メモリ１１５において、転送元用ディスクリプタ５０１中のＳＲＣ＿ＤＳＡ２０１とＳＲＣ＿ＤＬ２０２で指定された領域（領域５０２）内のデータ、即ちＤａｔａ４を転送対象のデータとして読み出すことになる。そしてＤＭＡ転送制御部１０２は、読み出したＤａｔａ４を、転送先メモリ１１６において、転送先用ディスクリプタ５０３中のＤＳＴ＿ＤＳＡ２１１及びＤＳＴ＿ＤＬ２１２で指定された領域（領域５０４）に転送する。演算部１０３は、このＤａｔａ４の転送中に、該Ｄａｔａ４においてＮＣＳ＿ＨＤ３０３及びＮＣＳ＿ＦＤ３０４によって規定されるＨｅａｄｅｒ及びＦｏｏｔｅｒを除く部分データ５０５に対してチェックサム演算を行い、該チェックサム演算の結果を取得してレジスタ部１０４のＣＳ＿ＦＩＦＯ３０８に登録する。
【００８６】
そして転送元用ディスクリプタ５０１中のＳＲＣ＿ＮＤＥ２０３の値及び転送先用ディスクリプタ５０３中のＤＳＴ＿ＮＤＥ２１３の値が共に「０」であるので、データ転送の完了及びチェックサム演算の完了を示す値がレジスタ部１０４のＳＴＳ３０７に登録され、これに応じてレジスタ部１０４は、データ転送の完了及びチェックサム演算の完了を示す値を、割り込み信号１０８を介してＣＰＵ１１４に通知する。
【００８７】
このように、通常モードでＤＭＡ転送とチェックサム演算とを行う場合は、ＤＭＡ転送制御部１０２がチェックサム演算を実行する主な制御を担う仕組みとなっている。一方、レジスタモードでＤＭＡ転送とチェックサム演算とを行う場合は、演算部１０３がチェックサム演算を実行する主な制御を担う仕組みとなっている。
【００８８】
以上説明した実施形態により、通常モードでチェックサム演算を実施する場合は、チェックサム演算を含むDMA転送設定手順を簡素化してオーバヘッドを少なく実行できる。一方、レジスタモードでチェックサム演算を実施する場合には、内部レジスタにチェックサム演算内容を設定する手順を追加するだけでチェックサム演算を含むDMA転送設定を可能とする。これにより、レジスタモードでチェックサム演算を実施する場合でも通常モードで使用したディスクリプタ構成を拡張しなくても良くなる。これにより、複数のディスクリプタをチェーンしてDMA転送を連続して実行し、かつレジスタモードをサポートする場合でも、ディスクリプタを格納するメモリエリアを小さく抑えることができる。
【００８９】
なお、以上説明した情報処理装置の構成は以下に示す構成の一例に過ぎず、以下に示す構成と同等以上の構成であれば、如何なる変形／変更を行っても構わない。すなわち、レジスタと、第１のメモリに格納されているデータを第２のメモリに転送する転送器と、転送器が転送しているデータに対するチェックサム演算を行う演算器と、を備える構成において、第１のモードが設定されている場合は次のように動作する。
【００９０】
すなわち、第１のモードが設定されている場合、演算器は、チェックサム演算の結果を転送器に送出し、転送器は、該結果を第２のメモリに転送する。一方、第１のモードとは異なる第２のモードが設定されている場合、演算器は、データのうちチェックサム演算の対象として指定された部分データに対するチェックサム演算を行い、該部分データに対するチェックサム演算の結果をレジスタに送出する。
【００９１】
［第２の実施形態］
第１の実施形態では、図１に示した構成を有するシステムによってデータ転送及びチェックサム演算を実行する実施形態について説明した。しかし、レジスタと、第１のメモリに格納されているデータを第２のメモリに転送する転送器と、転送器が転送しているデータに対するチェックサム演算を行う演算器と、を備えるコンピュータを上記のシステムの代わりに用いても構わない。この場合、このコンピュータのメモリに以下の処理を実行させるためのコンピュータプログラムをインストールし、該コンピュータのＣＰＵ等の制御部に該コンピュータプログラムを実行させることで、該コンピュータに以下の処理を実行させても構わない。
【００９２】
すなわち、第１のモードが設定されている場合、演算器にチェックサム演算の結果を転送器に送出させ、転送器に該結果を第２のメモリに転送させる。一方、第１のモードとは異なる第２のモードが設定されている場合、演算器に上記データのうちチェックサム演算の対象として指定された部分データに対するチェックサム演算を行わせ、該部分データに対するチェックサム演算の結果をレジスタに送出させる。
【００９３】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【００９４】
１０４：レジスタ部  １０２：ＤＭＡ転送制御部  １０３：演算部
【図１】
2015207223.tif 000003
【図２】
2015207223.tif 000004
【図３】
2015207223.tif 000005
【図４】
2015207223.tif 000006
【図５】
2015207223.tif 000007
【図６】
2015207223.tif 000008