(57)【要約】【課題】マスクライト機能を有しないメモリに対して、リード・モディファイ・ライト処理を行うことなく、データの書き込みを行えるデータ転送装置を提供する。【解決手段】転送するデータのサイズがメモリへの書き込みデータ幅の整数倍と異なる場合に、ＤＭＡコントローラ（１７）が、ダミーデータを追加して転送する。その結果、転送するデータ全体のサイズをデータ幅単位とすることができ、メモリコントローラ（１３）によるリード・モデファイ・ライト処理を行わずにデータ転送を行える。【選択図】図２
2005182538.tif 000002
【特許請求の範囲】
【請求項１】
所定のデータ幅を単位としてデータが書き込まれるメモリと、
前記メモリへのデータの書き込みおよび読み出しを制御し、かつ前記メモリに書き込むデータのサイズが前記所定のデータ幅より小さい場合にリード・モディファイ・ライト処理を行うメモリコントローラと、
前記メモリへのＤＭＡデータ転送を制御し、かつ転送するデータのサイズが前記所定のデータ幅の整数倍と異なる場合にダミーデータを追加して転送するＤＭＡコントローラと、
を具備することを特徴とするデータ転送装置。
【請求項２】
前記ＤＭＡコントローラが、
ダミーデータを追加転送する第１の転送モードと、ダミーデータの追加転送を行わない第２の転送モードとを切り替える転送モード切替手段を有する
ことを特徴とする請求項１記載のデータ転送装置。
【請求項３】
前記ＤＭＡコントローラが、
ＤＭＡデータ転送を制御するディスクリプタを記憶するディスクリプタ記憶部と、
前記ディスクリプタ記憶部に記憶されるディスクリプタに基づき実行されるＤＭＡデータ転送中の実行状態を表すステータス情報を記憶するステータス情報記憶部と、
前記ステータス情報記憶部に記憶されるステータス情報を前記メモリに転送するステータス情報転送部と、をさらに有する
ことを特徴とする請求項１記載のデータ転送装置。
【請求項４】
前記ステータス情報転送部が、転送するステータス情報のデータサイズが前記所定のデータ幅の整数倍と異なる場合にダミーデータを追加して転送する
ことを特徴とする請求項３記載のデータ転送装置。
【請求項５】
前記ステータス情報転送部が、ディスクリプタとステータス情報とを一括してメモリに転送すると共に、このディスクリプタとステータス情報とを合わせたデータサイズが前記所定のデータ幅の整数倍と異なる場合にダミーデータを追加して転送する
ことを特徴とする請求項３記載のデータ転送装置。
【請求項６】
前記ディスクリプタ記憶部が、複数のディスクリプタを記憶し、
前記ステータス情報転送部が、前記複数のディスクリプタのいずれかによるＤＭＡデータ転送処理が終了する毎に、前記複数のディスクリプタおよび前記ステータス情報を前記メモリに転送すると共に、転送する前記複数のディスクリプタおよび前記ステータス情報のデータサイズが前記所定のデータ幅の整数倍と異なる場合にダミーデータを追加して転送する
ことを特徴とする請求項３記載のデータ転送装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データをメモリに転送するデータ転送装置に関する。
【背景技術】
【０００２】
コンピュータ等において、記憶装置(メモリ)と入出力装置(Ｉ／Ｏ)との間で中央処理装置(ＣＰＵ)を介さないでデータの転送を行うＤＭＡ（Direct Memory Access）処理が用いられている。
ところで、メモリへの書き込みは所定のデータ幅（例えば、６４bit）を単位として行われる。このため、データ幅に満たないデータをＤＭＡでメモリに書き込むときに、バイト単位でマスクを掛け、データ幅中の一部のデータのみの書き込みを行う技術が開示されている（特許文献１参照）。
【特許文献１】特開２００３−５８４９０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、この技術を適用するには、マスクに対応して書き込みを制御するマスクライト機能を有するメモリ（例えば、DDR-SDRAM）を用いる必要がある。
一方、マスクライト機能を有さないメモリにデータ幅中の一部のデータのみの書き込みを行うにはリード・モディファイ・ライト処理を行うのが通例である。この処理では、メモリからデータを読み出し、その一部を書き換えてメモリに書き戻すことで、結果としてメモリのデータ幅の一部の書き換えを行う。
しかしながら、リード・モディファイ・ライト処理が実行されると、メモリへのアクセス回数が増加し、メモリへの書き込み速度の低下を招く。
以上に鑑み、本発明は、マスクライト機能を有しないメモリに対して、リード・モディファイ・ライト処理を行うことなく、データの書き込みを行えるデータ転送装置を提供することを目的とする。
【課題を解決するための手段】
【０００４】
上記目的を達成するために、本発明に係るデータ転送装置は、所定のデータ幅を単位としてデータが書き込まれるメモリと、前記メモリへのデータの書き込みおよび読み出しを制御し、かつ前記メモリに書き込むデータのサイズが前記所定のデータ幅より小さい場合にリード・モデファイ・ライト処理を行うメモリコントローラと、前記メモリへのＤＭＡデータ転送を制御し、かつ転送するデータのサイズが前記所定のデータ幅の整数倍と異なる場合にダミーデータを追加して転送するＤＭＡコントローラと、を具備することを特徴とする。
【０００５】
転送するデータのサイズがデータ幅の整数倍と異なる場合でも、ダミーデータを追加し転送するデータ全体のサイズをデータ幅単位とすることができる。この結果、メモリコントローラによるリード・モデファイ・ライト処理を行わずにデータ転送を行える。
なお、「所定のデータ幅を単位として」メモリにデータが書き込まれることは、データ幅およびその整数倍でデータ書き込みが可能であることを意味する。即ち、「所定のデータ幅を単位」とする書き込みは、データ幅にバースト数を積算したデータ量が連続的に書き込まれる場合も含まれる。
【０００６】
（１）ここで、前記ＤＭＡコントローラが、ダミーデータを追加転送する第１の動作モードと、ダミーデータの追加転送を行わない第２の動作モードとを切り替える動作モード切替手段を有してもよい。
【０００７】
第１の転送モードでは、ダミーテータを追加してリード・モデファイ・ライト処理を回避し、データ転送速度の向上を図ることができる。第２の転送モードでは、ダミーデータを追加せず（リード・モデファイ・ライト処理を許容）、メモリ空間を有効に利用することが可能となる。転送モード切替手段によって第１、第２の転送モードを切り替えることで、例えば、アプリケーション・ソフトウェアに応じて、書き込み速度と、メモリ空間の有効利用のいずれを優先するかを適宜に選択することが可能となる。
【０００８】
（２）前記ＤＭＡコントローラが、ＤＭＡデータ転送を制御するディスクリプタを記憶するディスクリプタ記憶部と、前記ディスクリプタ記憶部に記憶されたディスクリプタに基づき実行されるＤＭＡデータ転送中の実行状態を表すステータス情報を記憶するステータス情報記憶部と、前記ステータス情報記憶部に記憶されたステータス情報を前記メモリに転送するステータス情報転送部と、をさらに有してもよい。
ディスクリプタによるＤＭＡデータ転送の高速化を図ることができる。
【０００９】
１）前記ステータス情報転送部が、転送するステータス情報のデータサイズが前記所定のデータ幅の整数倍と異なる場合にダミーデータを追加して転送してもよい。
ステータス情報をメモリに転送する場合に、リード・モディファイ・ライト処理を回避して、転送処理の高速化を図ることができる。
【００１０】
２）前記ステータス情報転送部が、ディスクリプタとステータス情報とを一括してメモリに転送すると共に、このディスクリプタとステータス情報とを合わせたデータサイズが前記所定のデータ幅の整数倍と異なる場合にダミーデータを追加して転送してもよい。
ディスクリプタとステータス情報を一括してメモリに転送する場合に、リード・モディファイ・ライト処理を回避して、転送処理の高速化を図ることができる。
【００１１】
３）前記ディスクリプタ記憶部が、複数のディスクリプタを記憶し、前記ステータス情報転送部が、前記複数のディスクリプタのいずれかによるＤＭＡデータ転送処理が終了する毎に、前記複数のディスクリプタおよび前記ステータス情報を前記メモリに転送すると共に、転送する前記複数のディスクリプタおよび前記ステータス情報のデータサイズが前記所定のデータ幅の整数倍と異なる場合にダミーデータを追加して転送してもよい。
複数のディスクリプタでＤＭＡデータ転送を行う場合には、各ディスクリプタでのＤＭＡデータ転送が行われる度にメモリへのステータス情報の転送が行われる。この場合にディスクリプタとステータス情報を一括して転送すると共に、必要に応じてダミーデータを追加することで、リード・モディファイ・ライト処理を回避して、転送処理の高速化を図ることができる。
【発明の効果】
【００１２】
以上説明したように、本発明によればマスクライト機能を有しないメモリに対して、リード・モディファイ・ライト処理を行うことなく、データの書き込みを行えるデータ転送装置を提供できる。
【発明を実施するための最良の形態】
【００１３】
以下、図面を参照して、本発明の実施の形態を詳細に説明する。
（第１の実施の形態）
図１は本発明の第１実施形態に係るコンピュータ１０を表す図である。
コンピュータ１０は、ＣＰＵ１１、メモリ１２，メモリコントローラ１３，ブリッジ１４，バス１５，Ｉ／Ｏ１６、ＤＭＡコントローラ１７を有し、データ転送装置として機能する。
【００１４】
ＣＰＵ１１は、中央処理装置（Central Processing Unit）であり、コンピュータ１０全体の動作を統括する。
【００１５】
メモリ１２は、データを記憶する記憶装置、例えば、ＲＡＭ（Random Access Memory）である。メモリ１２は、所定のデータ幅（例えば、６４bit）単位でデータの書き込み、読み出しが行われる。
ここで、「データ幅単位」での書き込みとは、書き込みがデータ幅そのものに限られず、必要に応じて所定のバースト数（例えば、４バースト）までの範囲でデータを一括して読み書きすることが可能なことを意味する（データ幅の整数倍での読み書きが可能）。例えば、２バーストでは６４bit×２＝１２８bitのデータが連続して読み書きされる。
なお、このメモリ１２は、データ幅の一部のデータに対してのみの書き込みを可能とするライトマスク機能を有しないものとする。
【００１６】
メモリコントローラ１３は、メモリ１２へのデータの書き込み、読み出しを制御する素子である。
メモリコントローラ１３は、データ幅の一部のデータのみの変更を可能とするリード・モディファイ・ライト（Read-Modify-Write）処理を実行できる。リード・モディファイ・ライト処理は、メモリ１２から所定のデータ幅単位でデータを読み出し、読み出したデータの一部を書き換えて、メモリに書き戻す処理である。即ち、メモリ１２から読み出されたデータは、書き換えられたデータ以外は、そのままメモリ１２に重ね書きされる。このため、メモリ１２のデータ幅の一部にデータの書き込みが行われたことと同等の結果になる。
なお、リード・モディファイ・ライト処理では、メモリ１２とメモリコントローラ１３との間で煩雑な処理が行われるために、メモリ１２への書き込み速度は低下する。
【００１７】
ブリッジ１４は、ＣＰＵ１１，メモリコントローラ１３，バス１５を相互に接続して、これらの間でのデータ伝送の橋渡しを行う素子である。
バス１５は、ＣＰＵ１１，メモリ１２と他の入出力装置（Ｉ／Ｏ１６）等間でのデータのやり取りを可能とするデータの伝送路である。
Ｉ／Ｏ１６は、入出力装置（Input／Output）一般であり、例えば、外部記憶装置（ハードディスク、光ディスク等）、画像読取装置（スキャナー）、音声入力装置、音声出力装置が挙げられる。
【００１８】
ＤＭＡコントローラ１７は、メモリ１２とＩ／Ｏ１６間での直接データ転送（ＤＭＡ：Direct Memory Access）を制御する素子である。ＤＭＡコントローラ１７によって、ＣＰＵ１１を介しないデータ転送が可能となり、ＣＰＵ１１のデータ転送負荷が軽減される。ＤＭＡコントローラ１７の詳細は後述する。
なお、図１ではＤＭＡコントローラ１７をＩ／Ｏ１６と別個に表してしているが、ＤＭＡコントローラ１７はＩ／Ｏ１６と一体的に構成されていても差し支えない。
【００１９】
（ＤＭＡコントローラ１７の詳細）
図２は、第１実施形態に係るＤＭＡコントローラ１７の内部構成の詳細を表すブロック図である。
ＤＭＡコントローラ１７は、制御部２１，データバッファ２２，ディスクリプタバッファ２３，ステータスフラグ２４，モードレジスタ２５，アドレスレジスタ２６，ＤＭＡスタートレジスタ２７を有する。
【００２０】
制御部（コントローラ）２１は、ＤＭＡコントローラ１７全体の動作を制御する素子であり、ステータス情報を転送するステータス情報記憶部として機能する。後述するディスクリプタによって制御部２１が動作することで、ＤＭＡデータ転送処理が行われる。
【００２１】
ここで、ディスクリプタにつき説明する。
ディスクリプタは、メモリ１２とＩ／Ｏ１６との間でのデータ伝送の手続き等を記述した一種のプログラム（あるいは、スクリプト）である。ＤＭＡ転送処理に際して、１つのディスクリプタが実行される場合もあるが、複数のディスクリプタが連続して実行される場合もある。
後述するように、ディスクリプタはアプリケーション・プログラム等によりメモリ１２に書き込まれ、ＤＭＡ転送処理の実行時にディスクリプタバッファ２３にも記憶される。また、メモリ１２上のディスクリプタはステータス領域を有し、ＤＭＡ転送処理の実行に伴い、ＤＭＡ転送処理の実行状態を表すステータス情報がこのステータス領域に書き込まれる。
【００２２】
ディスクリプタは、例えば、データの転送を指示するコマンド、転送元アドレス、転送先アドレス、転送データサイズ、次のディスクリプタのあるアドレス（または、最後のディスクリプタであることを表す情報）、およびステータス情報を含む。このうち、ステータス情報を除いたものがディスクリプタの本体である。既述のように、ステータス情報は、ＤＭＡ転送処理の開始前には書き込まれない。
【００２３】
「転送元アドレス」は、転送するデータが格納されているＩ／Ｏ１６のアドレスである。「転送先アドレス」は、データを転送する先のメモリ１２のアドレスである。
一般的には、転送元アドレス、転送先アドレスは、メモリ１２，Ｉ／Ｏ１６のいずれのアドレスでも差し支えなく、ＤＭＡ転送処理によってこれらいずれか一方から他方へのデータ転送を行うことができる。本実施形態では、Ｉ／Ｏ１６からメモリ１２へのデータ転送を想定しているので、転送元、転送先それぞれがＩ／Ｏ１６およびメモリ１２となる。
「転送データサイズ」は、転送するデータのサイズである。
【００２４】
「次のディスクリプタのあるアドレス」は、複数のディスクリプタが連続して実行される場合に、次に実行するディスクリプタが格納されているメモリ１２のアドレスを示す。
「最後のディスクリプタであることを表す情報」は、複数のディスクリプタが連続して実行される場合に、そのディスクリプタが最後に実行されるディスクリプタであることを表す。
【００２５】
「ステータス情報」は、ディスクリプタに基づくＤＭＡデータ転送の実行状態（ステータス）を表す情報であり、例えば、Ｉ／Ｏ１６の状態（ステータス）、転送されたデータのサイズ、データ転送中にエラーが生じた場合のエラーの種別が表される。「ステータス情報」は、データ転送の結果として生じる情報であり、ディスクリプタ本体を構成する他の要素とは区別される。
ディスクリプタがメモリ１２に書き込まれるときに、ステータス情報を書き込むステータス領域が確保され、データ転送の終了後にステータス情報が書き込まれる。
【００２６】
データバッファ２２は、メモリ１２とＩ／Ｏ１６との間で伝送するデータを一時的に記憶する記憶部である。
ディスクリプタバッファ２３は、ディスクリプタ本体を一時的に記憶する記憶部であり、ディスクリプタ記憶部として機能する。既述のように、ディスクリプタによって制御部２１が動作する。
ステータスフラグ２４は、ディスクリプタに基づくＤＭＡデータ転送処理を行ったときのステータス情報を一時的に記憶するための記憶部であり、ステータス情報記憶部として機能する。ステータスフラグ２４に記憶されたステータス情報は、メモリ１２のディスクリプタのステータス領域に書き込まれる。
【００２７】
モードレジスタ２５は、メモリへの書き込みの際に端数メモリ書き込みと一括メモリ書き込みのいずれが用いられるかを表す書き込みモード情報を記憶するための記憶部であり、転送モード切替手段として機能する。
端数メモリ書き込みモードでは、メモリ１２のデータ幅の一部への書き込みが許容される。即ち、このときには、メモリコントローラ１３によるリード・モディファイ・ライト処理が行われ、結果的にメモリ１２のデータ幅中の一部データが書き換えられる。
【００２８】
一括メモリ書き込みモードでは、データ幅を単位としてメモリ１２への書き込みが行われ、メモリコントローラ１３によるリード・モディファイ・ライト処理は行われない。データ幅に満たないデータの書き込みを行おうとする際には、ダミーデータを追加して転送することで書き込むデータをデータ幅単位として、リード・モディファイ・ライト処理が行われないようにする。
図３は、一括メモリ書き込みモードで、データ幅単位と異なるデータの転送を行う場合のデータとダミーデータとの関係を表す模式図である。データとダミーデータのサイズの和がデータ幅とバースト数の積に一致するようにして、リード・モディファイ・ライト処理を回避している。
ダミーデータ（「疑似データ」ともいう）は、特に限定されるものではないが、例えば、”０”の連続や”１”の連続をダミーデータとして採用することができる。
【００２９】
アドレスレジスタ２６は，ディスクリプタが記憶されるメモリ１２のアドレスの情報を記憶する記憶部である。
ＤＭＡスタートレジスタ２７は、ＤＭＡデータ転送処理を開始するか否かを表すＤＭＡ開始情報を記憶する記憶部である。ＤＭＡ開始情報として、ビットの０，１でＤＭＡデータ転送処理の開始／未開始を識別できる。例えば、ビットが０から１に書き換えられたときにＤＭＡデータ転送処理が開始される。
【００３０】
（ＤＭＡデータ転送処理の詳細）
以下、ＤＭＡデータ転送処理の詳細につき説明する。
図４は、本実施形態に係るＤＭＡコントローラ１７によるＤＭＡデータ転送処理の手順を表すフロー図である。
（１）ＣＰＵ１１がメモリ１２上にディスクリプタを書き込む（ステップＳ１１）。
この書き込みは、例えばアプリケーション・プログラムでＣＰＵ１１が動作することによって行われる。
このとき、コマンド、転送元アドレス、転送先アドレス、転送データサイズ、次のディスクリプタのあるアドレス等のディスクリプタ本体がメモリ１２に書き込まれると共に、ステータス領域が確保される。
【００３１】
（２）モードレジスタ２５の書き込みモード情報を設定する（ステップＳ１２）。
書き込み転送モード情報を一括メモリ書き込みモードまたは端数メモリ書き込みモードいずれかに設定する。ここでは、モード情報を一括メモリ書き込みモードに設定し、ＤＭＡデータ転送時でのリード・モディファイ・ライト処理を回避する。
【００３２】
（３）ＣＰＵ１１がＤＭＡコントローラ１７へのＤＭＡデータ転送処理の開始を指示する（ステップＳ１３）。
ＣＰＵ１１が、ディスクリプタが書き込まれたメモリ１２のアドレスをアドレスレジスタ２６に書き込み、ＤＭＡスタートレジスタ２７をＤＭＡ未開始から開始へと書き換える。この書き換えによって、ＤＭＡコントローラ１７にＤＭＡデータ転送処理の開始を指示したことになる。
【００３３】
（４）ＤＭＡコントローラ１７は、アドレスレジスタ２６の情報に従い、メモリ１２からディスクリプタを読み出し、ディスクリプタバッファ２３に格納する（ステップＳ１３）。
【００３４】
（５）制御部２１がディスプリプタの指示に従って動作することで、ＤＭＡデータ転送が行われる（ステップＳ１５）。
制御部２１はＩ／Ｏ１６の転送元アドレスからデータを読み出し、データバッファ２２に一時的に格納し、メモリ１２の転送先アドレスに書き込む。
このデータ転送はデータ幅にバースト数を積算した値を単位として行われる。転送するデータ量が多ければ、転送元、転送先をずらして転送が繰り返される。ディスクリプタに記述された転送データサイズ分のデータが転送されるとデータの転送が終了する。
【００３５】
連続したアドレスのデータを転送するときには、基本的にデータ幅単位でデータ転送が行われる。このとき、最後のデータのみがデータ幅に満たない可能性がある。モードレジスタ２５の書き込みモード情報が一括メモリ書き込みモードである場合、この最後のデータに加えて、データ幅に見合うデータがメモリ１２に転送され、リード・モディファイ・ライト処理は行われない。
【００３６】
図５は、ステップＳ１５でのデータ転送の手順を表すフロー図である。
・モードレジスタ２５のモード情報が一括メモリ書き込みモードでない場合には、そのままデータの転送が行われる（ステップＳ２１，Ｓ２２）。この場合には、リード・モディファイ・ライト処理が許容される。
・制御部２１が、転送するデータがデータ幅単位であるか（データ幅に等しいか、データ幅にバースト数を積算したものに等しい）否かを判断する（ステップＳ２３）。この判断はデータバッファ２２に記憶されたデータのビット数とデータ幅とを比較することで行える。
【００３７】
・転送するデータがデータ幅単位のときには、転送データがそのままメモリ１２に転送される（ステップＳ２２）。
・転送するデータがデータ幅単位でないときには、転送されるデータがデータ幅単位となるために必要なダミーデータのサイズ（量）が算出され（ステップＳ２４）、本来のデータおよび追加されたダミーデータがメモリ１２に転送される（ステップＳ２５および図３参照）。この追加データ転送は、追加データをデータバッファに書き込むことで行っても良いし、データバッファとは別途に追加データを転送してもよい。
【００３８】
（６）データ転送の進行に伴いステータスフラグ２４のステータス情報が更新される（ステップＳ１６）。転送元のＩ／Ｏ１６のステータス、転送が完了したデータのサイズ、転送エラーが発生したときには転送エラーの内容を表す転送エラーステータスがステータスフラグ２４に書き込まれる。
【００３９】
（７）ステータスフラグ２４のステータス情報をメモリ１２上のディスクリプタのステータス領域に書き込む（ステップＳ１７）。
この書き込みは、通常のデータと同様に、モードレジスタ２５の書き込みモード情報に従って行われ、必要に応じてダミーデータが追加転送される（図５参照）。
この書き込みは、ステータス情報のみでも良いし、ディスクリプタ本体とステータス情報とを一括して書き込んでも差し支えない。後者では、メモリ１２にディスクリプタが重ね書きされることになる。このとき、追加転送されるダミーデータのサイズは、転送されるデータ全体のサイズに基づき算出される（前者ではステータス情報のみのサイズに基づき、後者ではディスクリプタとステータス情報とを合わせたサイズに基づく）。
【００４０】
（８）次のディスクリプタがあれば（ステップＳ１８）、そのディスクリプタがメモリ１２からディスクリプタバッファ２３に格納され（ステップＳ１４）、このディスクリプタに基づきデータ転送が行われる（ステップＳ１５〜Ｓ１７）。
【００４１】
（第２の実施の形態）
図６は、ＤＭＡコントローラ１７ａの内部構成の詳細を表すブロック図である。
ＤＭＡコントローラ１７ａは、複数のディスクリプタの本体を記憶することができるディスクリプタバッファ２３ａを有する。図６では、ディスクリプタバッファ２３ａが４つのディスクリプタ１〜４を記憶できる場合を示しているが、記憶できるディスクリプタは適宜に変更可能である。
他の構成は、第１の実施形態と本質的に相違する訳ではないので、説明を省略する。
【００４２】
図７は、本実施形態に係るＤＭＡコントローラ１７ａによるＤＭＡデータ転送処理の手順を表すフロー図である。
本図のＤＭＡデータ転送処理の手順におけるステップＳ３１〜Ｓ３８は、図４のＤＭＡデータ転送処理の手順におけるステップＳ１１〜Ｓ１８に対応する。
【００４３】
以下に、本図と図４でのＤＭＡデータ転送処理手順が相違する点を説明する。
ステップＳ３１では、複数のディスクリプタがメモリ１２に連続的に書き込まれる点が、図４のステップＳ１１（ディスクリプタをメモリ１２に非連続的に書き込んでも差し支えない（連続的な書き込みも許される））と異なる。図８は、このときに書き込まれるディスクリプタの一例を表す模式図である。複数のディスクリプタとダミーデータのサイズの和がデータ幅とバースト数の積に一致するようにして、リード・モディファイ・ライト処理を回避している。
【００４４】
また、ステップＳ３４でディスクリプタバッファ２３ａに複数のディスクリプタが格納される点が、図４のステップＳ１４（ディスクリプタバッファ２３に単一のディスクリプタが格納される）と異なる。このことから、ステップＳ３４は、図４のステップＳ１４と異なり、一回のみ実行される。
【００４５】
ステップＳ３７でのメモリ１２へのステータス情報の書き込みが複数のディスクリプタ全体に対して行われる点が、図４のステップＳ１７（ディスクリプタそれぞれのステータス領域のみを書き込む）と異なる。このときのメモリ１２への書き込みは、複数のディスクリプタに必要に応じてダミーデータを追加して行われる（図８参照）。
このとき、例えば、ｉ番目のディスクリプタに基づくデータ転送が行われた場合には、ｉ番目のディスクリプタのステータス領域が追加して書き換えられたものがメモリ１２に転送される。１〜（ｉ−１）番目のディスクリプタのステータス領域はこれ以前に書き換えられているが、データを一括して転送する関係から、同一のデータが重ね書きされる。
【００４６】
（その他の実施形態）
本発明の実施形態は上記の実施形態に限られず拡張、変更可能であり、拡張、変更した実施形態も本発明の技術的範囲に含まれる。
例えば、上記実施形態では、モードレジスタでデータ一般とディスクリプタの双方の転送モードを纏めて切り替えたが、例えば、モードレジスタを２つ用いて、データ一般とディスクリプタの双方の転送モードを個別的に切り替え可能としてもよい。
【図面の簡単な説明】
【００４７】
【図１】本発明の第１実施形態に係るコンピュータを表すブロック図である。
【図２】本発明の第１実施形態に係るＤＭＡコントローラの内部構成の詳細を表すブロック図である。
【図３】一括メモリ書き込みモードで、データ幅単位と異なるデータの転送を行う場合のデータとダミーデータとの関係を表す模式図である。
【図４】本発明の第１実施形態に係るＤＭＡコントローラによるＤＭＡデータ転送処理の手順を表すフロー図である。
【図５】データ転送処理の手順を表すフロー図である。
【図６】本発明の第２実施形態に係るＤＭＡコントローラの内部構成の詳細を表すブロック図である。
【図７】本発明の第２実施形態に係るＤＭＡコントローラによるＤＭＡデータ転送処理の手順を表すフロー図である。
【図８】ディスクリプタの配置の一例を表す模式図である。
【符号の説明】
【００４８】
１０…コンピュータ、１１…ＣＰＵ、１２…メモリ、１３…メモリコントローラ、１４…ブリッジ、１５…バス、１６…Ｉ／Ｏ、１７…ＤＭＡコントローラ、２１…制御部、２２…データバッファ、２３…ディスクリプタバッファ、２４…ステータスフラグ、２５…モードレジスタ、２６…アドレスレジスタ、２７…ＤＭＡスタートレジスタ
【図１】
2005182538.tif 000003
【図２】
2005182538.tif 000004
【図３】
2005182538.tif 000005
【図４】
2005182538.tif 000006
【図５】
2005182538.tif 000007
【図６】
2005182538.tif 000008
【図７】
2005182538.tif 000009
【図８】
2005182538.tif 000010