JP2005182538A - データ転送装置 - Google Patents
データ転送装置 Download PDFInfo
- Publication number
- JP2005182538A JP2005182538A JP2003423492A JP2003423492A JP2005182538A JP 2005182538 A JP2005182538 A JP 2005182538A JP 2003423492 A JP2003423492 A JP 2003423492A JP 2003423492 A JP2003423492 A JP 2003423492A JP 2005182538 A JP2005182538 A JP 2005182538A
- Authority
- JP
- Japan
- Prior art keywords
- data
- memory
- transfer
- status information
- descriptor
- 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.)
- Pending
Links
Images
Landscapes
- Bus Control (AREA)
Abstract
【課題】マスクライト機能を有しないメモリに対して、リード・モディファイ・ライト処理を行うことなく、データの書き込みを行えるデータ転送装置を提供する。
【解決手段】転送するデータのサイズがメモリへの書き込みデータ幅の整数倍と異なる場合に、DMAコントローラ(17)が、ダミーデータを追加して転送する。その結果、転送するデータ全体のサイズをデータ幅単位とすることができ、メモリコントローラ(13)によるリード・モデファイ・ライト処理を行わずにデータ転送を行える。
【選択図】図2
【解決手段】転送するデータのサイズがメモリへの書き込みデータ幅の整数倍と異なる場合に、DMAコントローラ(17)が、ダミーデータを追加して転送する。その結果、転送するデータ全体のサイズをデータ幅単位とすることができ、メモリコントローラ(13)によるリード・モデファイ・ライト処理を行わずにデータ転送を行える。
【選択図】図2
Description
本発明は、データをメモリに転送するデータ転送装置に関する。
コンピュータ等において、記憶装置(メモリ)と入出力装置(I/O)との間で中央処理装置(CPU)を介さないでデータの転送を行うDMA(Direct Memory Access)処理が用いられている。
ところで、メモリへの書き込みは所定のデータ幅(例えば、64bit)を単位として行われる。このため、データ幅に満たないデータをDMAでメモリに書き込むときに、バイト単位でマスクを掛け、データ幅中の一部のデータのみの書き込みを行う技術が開示されている(特許文献1参照)。
特開2003−58490号公報
ところで、メモリへの書き込みは所定のデータ幅(例えば、64bit)を単位として行われる。このため、データ幅に満たないデータをDMAでメモリに書き込むときに、バイト単位でマスクを掛け、データ幅中の一部のデータのみの書き込みを行う技術が開示されている(特許文献1参照)。
しかしながら、この技術を適用するには、マスクに対応して書き込みを制御するマスクライト機能を有するメモリ(例えば、DDR-SDRAM)を用いる必要がある。
一方、マスクライト機能を有さないメモリにデータ幅中の一部のデータのみの書き込みを行うにはリード・モディファイ・ライト処理を行うのが通例である。この処理では、メモリからデータを読み出し、その一部を書き換えてメモリに書き戻すことで、結果としてメモリのデータ幅の一部の書き換えを行う。
しかしながら、リード・モディファイ・ライト処理が実行されると、メモリへのアクセス回数が増加し、メモリへの書き込み速度の低下を招く。
以上に鑑み、本発明は、マスクライト機能を有しないメモリに対して、リード・モディファイ・ライト処理を行うことなく、データの書き込みを行えるデータ転送装置を提供することを目的とする。
一方、マスクライト機能を有さないメモリにデータ幅中の一部のデータのみの書き込みを行うにはリード・モディファイ・ライト処理を行うのが通例である。この処理では、メモリからデータを読み出し、その一部を書き換えてメモリに書き戻すことで、結果としてメモリのデータ幅の一部の書き換えを行う。
しかしながら、リード・モディファイ・ライト処理が実行されると、メモリへのアクセス回数が増加し、メモリへの書き込み速度の低下を招く。
以上に鑑み、本発明は、マスクライト機能を有しないメモリに対して、リード・モディファイ・ライト処理を行うことなく、データの書き込みを行えるデータ転送装置を提供することを目的とする。
上記目的を達成するために、本発明に係るデータ転送装置は、所定のデータ幅を単位としてデータが書き込まれるメモリと、前記メモリへのデータの書き込みおよび読み出しを制御し、かつ前記メモリに書き込むデータのサイズが前記所定のデータ幅より小さい場合にリード・モデファイ・ライト処理を行うメモリコントローラと、前記メモリへのDMAデータ転送を制御し、かつ転送するデータのサイズが前記所定のデータ幅の整数倍と異なる場合にダミーデータを追加して転送するDMAコントローラと、を具備することを特徴とする。
転送するデータのサイズがデータ幅の整数倍と異なる場合でも、ダミーデータを追加し転送するデータ全体のサイズをデータ幅単位とすることができる。この結果、メモリコントローラによるリード・モデファイ・ライト処理を行わずにデータ転送を行える。
なお、「所定のデータ幅を単位として」メモリにデータが書き込まれることは、データ幅およびその整数倍でデータ書き込みが可能であることを意味する。即ち、「所定のデータ幅を単位」とする書き込みは、データ幅にバースト数を積算したデータ量が連続的に書き込まれる場合も含まれる。
なお、「所定のデータ幅を単位として」メモリにデータが書き込まれることは、データ幅およびその整数倍でデータ書き込みが可能であることを意味する。即ち、「所定のデータ幅を単位」とする書き込みは、データ幅にバースト数を積算したデータ量が連続的に書き込まれる場合も含まれる。
(1)ここで、前記DMAコントローラが、ダミーデータを追加転送する第1の動作モードと、ダミーデータの追加転送を行わない第2の動作モードとを切り替える動作モード切替手段を有してもよい。
第1の転送モードでは、ダミーテータを追加してリード・モデファイ・ライト処理を回避し、データ転送速度の向上を図ることができる。第2の転送モードでは、ダミーデータを追加せず(リード・モデファイ・ライト処理を許容)、メモリ空間を有効に利用することが可能となる。転送モード切替手段によって第1、第2の転送モードを切り替えることで、例えば、アプリケーション・ソフトウェアに応じて、書き込み速度と、メモリ空間の有効利用のいずれを優先するかを適宜に選択することが可能となる。
(2)前記DMAコントローラが、DMAデータ転送を制御するディスクリプタを記憶するディスクリプタ記憶部と、前記ディスクリプタ記憶部に記憶されたディスクリプタに基づき実行されるDMAデータ転送中の実行状態を表すステータス情報を記憶するステータス情報記憶部と、前記ステータス情報記憶部に記憶されたステータス情報を前記メモリに転送するステータス情報転送部と、をさらに有してもよい。
ディスクリプタによるDMAデータ転送の高速化を図ることができる。
ディスクリプタによるDMAデータ転送の高速化を図ることができる。
1)前記ステータス情報転送部が、転送するステータス情報のデータサイズが前記所定のデータ幅の整数倍と異なる場合にダミーデータを追加して転送してもよい。
ステータス情報をメモリに転送する場合に、リード・モディファイ・ライト処理を回避して、転送処理の高速化を図ることができる。
ステータス情報をメモリに転送する場合に、リード・モディファイ・ライト処理を回避して、転送処理の高速化を図ることができる。
2)前記ステータス情報転送部が、ディスクリプタとステータス情報とを一括してメモリに転送すると共に、このディスクリプタとステータス情報とを合わせたデータサイズが前記所定のデータ幅の整数倍と異なる場合にダミーデータを追加して転送してもよい。
ディスクリプタとステータス情報を一括してメモリに転送する場合に、リード・モディファイ・ライト処理を回避して、転送処理の高速化を図ることができる。
ディスクリプタとステータス情報を一括してメモリに転送する場合に、リード・モディファイ・ライト処理を回避して、転送処理の高速化を図ることができる。
3)前記ディスクリプタ記憶部が、複数のディスクリプタを記憶し、前記ステータス情報転送部が、前記複数のディスクリプタのいずれかによるDMAデータ転送処理が終了する毎に、前記複数のディスクリプタおよび前記ステータス情報を前記メモリに転送すると共に、転送する前記複数のディスクリプタおよび前記ステータス情報のデータサイズが前記所定のデータ幅の整数倍と異なる場合にダミーデータを追加して転送してもよい。
複数のディスクリプタでDMAデータ転送を行う場合には、各ディスクリプタでのDMAデータ転送が行われる度にメモリへのステータス情報の転送が行われる。この場合にディスクリプタとステータス情報を一括して転送すると共に、必要に応じてダミーデータを追加することで、リード・モディファイ・ライト処理を回避して、転送処理の高速化を図ることができる。
複数のディスクリプタでDMAデータ転送を行う場合には、各ディスクリプタでのDMAデータ転送が行われる度にメモリへのステータス情報の転送が行われる。この場合にディスクリプタとステータス情報を一括して転送すると共に、必要に応じてダミーデータを追加することで、リード・モディファイ・ライト処理を回避して、転送処理の高速化を図ることができる。
以上説明したように、本発明によればマスクライト機能を有しないメモリに対して、リード・モディファイ・ライト処理を行うことなく、データの書き込みを行えるデータ転送装置を提供できる。
以下、図面を参照して、本発明の実施の形態を詳細に説明する。
(第1の実施の形態)
図1は本発明の第1実施形態に係るコンピュータ10を表す図である。
コンピュータ10は、CPU11、メモリ12,メモリコントローラ13,ブリッジ14,バス15,I/O16、DMAコントローラ17を有し、データ転送装置として機能する。
(第1の実施の形態)
図1は本発明の第1実施形態に係るコンピュータ10を表す図である。
コンピュータ10は、CPU11、メモリ12,メモリコントローラ13,ブリッジ14,バス15,I/O16、DMAコントローラ17を有し、データ転送装置として機能する。
CPU11は、中央処理装置(Central Processing Unit)であり、コンピュータ10全体の動作を統括する。
メモリ12は、データを記憶する記憶装置、例えば、RAM(Random Access Memory)である。メモリ12は、所定のデータ幅(例えば、64bit)単位でデータの書き込み、読み出しが行われる。
ここで、「データ幅単位」での書き込みとは、書き込みがデータ幅そのものに限られず、必要に応じて所定のバースト数(例えば、4バースト)までの範囲でデータを一括して読み書きすることが可能なことを意味する(データ幅の整数倍での読み書きが可能)。例えば、2バーストでは64bit×2=128bitのデータが連続して読み書きされる。
なお、このメモリ12は、データ幅の一部のデータに対してのみの書き込みを可能とするライトマスク機能を有しないものとする。
ここで、「データ幅単位」での書き込みとは、書き込みがデータ幅そのものに限られず、必要に応じて所定のバースト数(例えば、4バースト)までの範囲でデータを一括して読み書きすることが可能なことを意味する(データ幅の整数倍での読み書きが可能)。例えば、2バーストでは64bit×2=128bitのデータが連続して読み書きされる。
なお、このメモリ12は、データ幅の一部のデータに対してのみの書き込みを可能とするライトマスク機能を有しないものとする。
メモリコントローラ13は、メモリ12へのデータの書き込み、読み出しを制御する素子である。
メモリコントローラ13は、データ幅の一部のデータのみの変更を可能とするリード・モディファイ・ライト(Read-Modify-Write)処理を実行できる。リード・モディファイ・ライト処理は、メモリ12から所定のデータ幅単位でデータを読み出し、読み出したデータの一部を書き換えて、メモリに書き戻す処理である。即ち、メモリ12から読み出されたデータは、書き換えられたデータ以外は、そのままメモリ12に重ね書きされる。このため、メモリ12のデータ幅の一部にデータの書き込みが行われたことと同等の結果になる。
なお、リード・モディファイ・ライト処理では、メモリ12とメモリコントローラ13との間で煩雑な処理が行われるために、メモリ12への書き込み速度は低下する。
メモリコントローラ13は、データ幅の一部のデータのみの変更を可能とするリード・モディファイ・ライト(Read-Modify-Write)処理を実行できる。リード・モディファイ・ライト処理は、メモリ12から所定のデータ幅単位でデータを読み出し、読み出したデータの一部を書き換えて、メモリに書き戻す処理である。即ち、メモリ12から読み出されたデータは、書き換えられたデータ以外は、そのままメモリ12に重ね書きされる。このため、メモリ12のデータ幅の一部にデータの書き込みが行われたことと同等の結果になる。
なお、リード・モディファイ・ライト処理では、メモリ12とメモリコントローラ13との間で煩雑な処理が行われるために、メモリ12への書き込み速度は低下する。
ブリッジ14は、CPU11,メモリコントローラ13,バス15を相互に接続して、これらの間でのデータ伝送の橋渡しを行う素子である。
バス15は、CPU11,メモリ12と他の入出力装置(I/O16)等間でのデータのやり取りを可能とするデータの伝送路である。
I/O16は、入出力装置(Input/Output)一般であり、例えば、外部記憶装置(ハードディスク、光ディスク等)、画像読取装置(スキャナー)、音声入力装置、音声出力装置が挙げられる。
バス15は、CPU11,メモリ12と他の入出力装置(I/O16)等間でのデータのやり取りを可能とするデータの伝送路である。
I/O16は、入出力装置(Input/Output)一般であり、例えば、外部記憶装置(ハードディスク、光ディスク等)、画像読取装置(スキャナー)、音声入力装置、音声出力装置が挙げられる。
DMAコントローラ17は、メモリ12とI/O16間での直接データ転送(DMA:Direct Memory Access)を制御する素子である。DMAコントローラ17によって、CPU11を介しないデータ転送が可能となり、CPU11のデータ転送負荷が軽減される。DMAコントローラ17の詳細は後述する。
なお、図1ではDMAコントローラ17をI/O16と別個に表してしているが、DMAコントローラ17はI/O16と一体的に構成されていても差し支えない。
なお、図1ではDMAコントローラ17をI/O16と別個に表してしているが、DMAコントローラ17はI/O16と一体的に構成されていても差し支えない。
(DMAコントローラ17の詳細)
図2は、第1実施形態に係るDMAコントローラ17の内部構成の詳細を表すブロック図である。
DMAコントローラ17は、制御部21,データバッファ22,ディスクリプタバッファ23,ステータスフラグ24,モードレジスタ25,アドレスレジスタ26,DMAスタートレジスタ27を有する。
図2は、第1実施形態に係るDMAコントローラ17の内部構成の詳細を表すブロック図である。
DMAコントローラ17は、制御部21,データバッファ22,ディスクリプタバッファ23,ステータスフラグ24,モードレジスタ25,アドレスレジスタ26,DMAスタートレジスタ27を有する。
制御部(コントローラ)21は、DMAコントローラ17全体の動作を制御する素子であり、ステータス情報を転送するステータス情報記憶部として機能する。後述するディスクリプタによって制御部21が動作することで、DMAデータ転送処理が行われる。
ここで、ディスクリプタにつき説明する。
ディスクリプタは、メモリ12とI/O16との間でのデータ伝送の手続き等を記述した一種のプログラム(あるいは、スクリプト)である。DMA転送処理に際して、1つのディスクリプタが実行される場合もあるが、複数のディスクリプタが連続して実行される場合もある。
後述するように、ディスクリプタはアプリケーション・プログラム等によりメモリ12に書き込まれ、DMA転送処理の実行時にディスクリプタバッファ23にも記憶される。また、メモリ12上のディスクリプタはステータス領域を有し、DMA転送処理の実行に伴い、DMA転送処理の実行状態を表すステータス情報がこのステータス領域に書き込まれる。
ディスクリプタは、メモリ12とI/O16との間でのデータ伝送の手続き等を記述した一種のプログラム(あるいは、スクリプト)である。DMA転送処理に際して、1つのディスクリプタが実行される場合もあるが、複数のディスクリプタが連続して実行される場合もある。
後述するように、ディスクリプタはアプリケーション・プログラム等によりメモリ12に書き込まれ、DMA転送処理の実行時にディスクリプタバッファ23にも記憶される。また、メモリ12上のディスクリプタはステータス領域を有し、DMA転送処理の実行に伴い、DMA転送処理の実行状態を表すステータス情報がこのステータス領域に書き込まれる。
ディスクリプタは、例えば、データの転送を指示するコマンド、転送元アドレス、転送先アドレス、転送データサイズ、次のディスクリプタのあるアドレス(または、最後のディスクリプタであることを表す情報)、およびステータス情報を含む。このうち、ステータス情報を除いたものがディスクリプタの本体である。既述のように、ステータス情報は、DMA転送処理の開始前には書き込まれない。
「転送元アドレス」は、転送するデータが格納されているI/O16のアドレスである。「転送先アドレス」は、データを転送する先のメモリ12のアドレスである。
一般的には、転送元アドレス、転送先アドレスは、メモリ12,I/O16のいずれのアドレスでも差し支えなく、DMA転送処理によってこれらいずれか一方から他方へのデータ転送を行うことができる。本実施形態では、I/O16からメモリ12へのデータ転送を想定しているので、転送元、転送先それぞれがI/O16およびメモリ12となる。
「転送データサイズ」は、転送するデータのサイズである。
一般的には、転送元アドレス、転送先アドレスは、メモリ12,I/O16のいずれのアドレスでも差し支えなく、DMA転送処理によってこれらいずれか一方から他方へのデータ転送を行うことができる。本実施形態では、I/O16からメモリ12へのデータ転送を想定しているので、転送元、転送先それぞれがI/O16およびメモリ12となる。
「転送データサイズ」は、転送するデータのサイズである。
「次のディスクリプタのあるアドレス」は、複数のディスクリプタが連続して実行される場合に、次に実行するディスクリプタが格納されているメモリ12のアドレスを示す。
「最後のディスクリプタであることを表す情報」は、複数のディスクリプタが連続して実行される場合に、そのディスクリプタが最後に実行されるディスクリプタであることを表す。
「最後のディスクリプタであることを表す情報」は、複数のディスクリプタが連続して実行される場合に、そのディスクリプタが最後に実行されるディスクリプタであることを表す。
「ステータス情報」は、ディスクリプタに基づくDMAデータ転送の実行状態(ステータス)を表す情報であり、例えば、I/O16の状態(ステータス)、転送されたデータのサイズ、データ転送中にエラーが生じた場合のエラーの種別が表される。「ステータス情報」は、データ転送の結果として生じる情報であり、ディスクリプタ本体を構成する他の要素とは区別される。
ディスクリプタがメモリ12に書き込まれるときに、ステータス情報を書き込むステータス領域が確保され、データ転送の終了後にステータス情報が書き込まれる。
ディスクリプタがメモリ12に書き込まれるときに、ステータス情報を書き込むステータス領域が確保され、データ転送の終了後にステータス情報が書き込まれる。
データバッファ22は、メモリ12とI/O16との間で伝送するデータを一時的に記憶する記憶部である。
ディスクリプタバッファ23は、ディスクリプタ本体を一時的に記憶する記憶部であり、ディスクリプタ記憶部として機能する。既述のように、ディスクリプタによって制御部21が動作する。
ステータスフラグ24は、ディスクリプタに基づくDMAデータ転送処理を行ったときのステータス情報を一時的に記憶するための記憶部であり、ステータス情報記憶部として機能する。ステータスフラグ24に記憶されたステータス情報は、メモリ12のディスクリプタのステータス領域に書き込まれる。
ディスクリプタバッファ23は、ディスクリプタ本体を一時的に記憶する記憶部であり、ディスクリプタ記憶部として機能する。既述のように、ディスクリプタによって制御部21が動作する。
ステータスフラグ24は、ディスクリプタに基づくDMAデータ転送処理を行ったときのステータス情報を一時的に記憶するための記憶部であり、ステータス情報記憶部として機能する。ステータスフラグ24に記憶されたステータス情報は、メモリ12のディスクリプタのステータス領域に書き込まれる。
モードレジスタ25は、メモリへの書き込みの際に端数メモリ書き込みと一括メモリ書き込みのいずれが用いられるかを表す書き込みモード情報を記憶するための記憶部であり、転送モード切替手段として機能する。
端数メモリ書き込みモードでは、メモリ12のデータ幅の一部への書き込みが許容される。即ち、このときには、メモリコントローラ13によるリード・モディファイ・ライト処理が行われ、結果的にメモリ12のデータ幅中の一部データが書き換えられる。
端数メモリ書き込みモードでは、メモリ12のデータ幅の一部への書き込みが許容される。即ち、このときには、メモリコントローラ13によるリード・モディファイ・ライト処理が行われ、結果的にメモリ12のデータ幅中の一部データが書き換えられる。
一括メモリ書き込みモードでは、データ幅を単位としてメモリ12への書き込みが行われ、メモリコントローラ13によるリード・モディファイ・ライト処理は行われない。データ幅に満たないデータの書き込みを行おうとする際には、ダミーデータを追加して転送することで書き込むデータをデータ幅単位として、リード・モディファイ・ライト処理が行われないようにする。
図3は、一括メモリ書き込みモードで、データ幅単位と異なるデータの転送を行う場合のデータとダミーデータとの関係を表す模式図である。データとダミーデータのサイズの和がデータ幅とバースト数の積に一致するようにして、リード・モディファイ・ライト処理を回避している。
ダミーデータ(「疑似データ」ともいう)は、特に限定されるものではないが、例えば、”0”の連続や”1”の連続をダミーデータとして採用することができる。
図3は、一括メモリ書き込みモードで、データ幅単位と異なるデータの転送を行う場合のデータとダミーデータとの関係を表す模式図である。データとダミーデータのサイズの和がデータ幅とバースト数の積に一致するようにして、リード・モディファイ・ライト処理を回避している。
ダミーデータ(「疑似データ」ともいう)は、特に限定されるものではないが、例えば、”0”の連続や”1”の連続をダミーデータとして採用することができる。
アドレスレジスタ26は,ディスクリプタが記憶されるメモリ12のアドレスの情報を記憶する記憶部である。
DMAスタートレジスタ27は、DMAデータ転送処理を開始するか否かを表すDMA開始情報を記憶する記憶部である。DMA開始情報として、ビットの0,1でDMAデータ転送処理の開始/未開始を識別できる。例えば、ビットが0から1に書き換えられたときにDMAデータ転送処理が開始される。
DMAスタートレジスタ27は、DMAデータ転送処理を開始するか否かを表すDMA開始情報を記憶する記憶部である。DMA開始情報として、ビットの0,1でDMAデータ転送処理の開始/未開始を識別できる。例えば、ビットが0から1に書き換えられたときにDMAデータ転送処理が開始される。
(DMAデータ転送処理の詳細)
以下、DMAデータ転送処理の詳細につき説明する。
図4は、本実施形態に係るDMAコントローラ17によるDMAデータ転送処理の手順を表すフロー図である。
(1)CPU11がメモリ12上にディスクリプタを書き込む(ステップS11)。
この書き込みは、例えばアプリケーション・プログラムでCPU11が動作することによって行われる。
このとき、コマンド、転送元アドレス、転送先アドレス、転送データサイズ、次のディスクリプタのあるアドレス等のディスクリプタ本体がメモリ12に書き込まれると共に、ステータス領域が確保される。
以下、DMAデータ転送処理の詳細につき説明する。
図4は、本実施形態に係るDMAコントローラ17によるDMAデータ転送処理の手順を表すフロー図である。
(1)CPU11がメモリ12上にディスクリプタを書き込む(ステップS11)。
この書き込みは、例えばアプリケーション・プログラムでCPU11が動作することによって行われる。
このとき、コマンド、転送元アドレス、転送先アドレス、転送データサイズ、次のディスクリプタのあるアドレス等のディスクリプタ本体がメモリ12に書き込まれると共に、ステータス領域が確保される。
(2)モードレジスタ25の書き込みモード情報を設定する(ステップS12)。
書き込み転送モード情報を一括メモリ書き込みモードまたは端数メモリ書き込みモードいずれかに設定する。ここでは、モード情報を一括メモリ書き込みモードに設定し、DMAデータ転送時でのリード・モディファイ・ライト処理を回避する。
書き込み転送モード情報を一括メモリ書き込みモードまたは端数メモリ書き込みモードいずれかに設定する。ここでは、モード情報を一括メモリ書き込みモードに設定し、DMAデータ転送時でのリード・モディファイ・ライト処理を回避する。
(3)CPU11がDMAコントローラ17へのDMAデータ転送処理の開始を指示する(ステップS13)。
CPU11が、ディスクリプタが書き込まれたメモリ12のアドレスをアドレスレジスタ26に書き込み、DMAスタートレジスタ27をDMA未開始から開始へと書き換える。この書き換えによって、DMAコントローラ17にDMAデータ転送処理の開始を指示したことになる。
CPU11が、ディスクリプタが書き込まれたメモリ12のアドレスをアドレスレジスタ26に書き込み、DMAスタートレジスタ27をDMA未開始から開始へと書き換える。この書き換えによって、DMAコントローラ17にDMAデータ転送処理の開始を指示したことになる。
(4)DMAコントローラ17は、アドレスレジスタ26の情報に従い、メモリ12からディスクリプタを読み出し、ディスクリプタバッファ23に格納する(ステップS13)。
(5)制御部21がディスプリプタの指示に従って動作することで、DMAデータ転送が行われる(ステップS15)。
制御部21はI/O16の転送元アドレスからデータを読み出し、データバッファ22に一時的に格納し、メモリ12の転送先アドレスに書き込む。
このデータ転送はデータ幅にバースト数を積算した値を単位として行われる。転送するデータ量が多ければ、転送元、転送先をずらして転送が繰り返される。ディスクリプタに記述された転送データサイズ分のデータが転送されるとデータの転送が終了する。
制御部21はI/O16の転送元アドレスからデータを読み出し、データバッファ22に一時的に格納し、メモリ12の転送先アドレスに書き込む。
このデータ転送はデータ幅にバースト数を積算した値を単位として行われる。転送するデータ量が多ければ、転送元、転送先をずらして転送が繰り返される。ディスクリプタに記述された転送データサイズ分のデータが転送されるとデータの転送が終了する。
連続したアドレスのデータを転送するときには、基本的にデータ幅単位でデータ転送が行われる。このとき、最後のデータのみがデータ幅に満たない可能性がある。モードレジスタ25の書き込みモード情報が一括メモリ書き込みモードである場合、この最後のデータに加えて、データ幅に見合うデータがメモリ12に転送され、リード・モディファイ・ライト処理は行われない。
図5は、ステップS15でのデータ転送の手順を表すフロー図である。
・モードレジスタ25のモード情報が一括メモリ書き込みモードでない場合には、そのままデータの転送が行われる(ステップS21,S22)。この場合には、リード・モディファイ・ライト処理が許容される。
・制御部21が、転送するデータがデータ幅単位であるか(データ幅に等しいか、データ幅にバースト数を積算したものに等しい)否かを判断する(ステップS23)。この判断はデータバッファ22に記憶されたデータのビット数とデータ幅とを比較することで行える。
・モードレジスタ25のモード情報が一括メモリ書き込みモードでない場合には、そのままデータの転送が行われる(ステップS21,S22)。この場合には、リード・モディファイ・ライト処理が許容される。
・制御部21が、転送するデータがデータ幅単位であるか(データ幅に等しいか、データ幅にバースト数を積算したものに等しい)否かを判断する(ステップS23)。この判断はデータバッファ22に記憶されたデータのビット数とデータ幅とを比較することで行える。
・転送するデータがデータ幅単位のときには、転送データがそのままメモリ12に転送される(ステップS22)。
・転送するデータがデータ幅単位でないときには、転送されるデータがデータ幅単位となるために必要なダミーデータのサイズ(量)が算出され(ステップS24)、本来のデータおよび追加されたダミーデータがメモリ12に転送される(ステップS25および図3参照)。この追加データ転送は、追加データをデータバッファに書き込むことで行っても良いし、データバッファとは別途に追加データを転送してもよい。
・転送するデータがデータ幅単位でないときには、転送されるデータがデータ幅単位となるために必要なダミーデータのサイズ(量)が算出され(ステップS24)、本来のデータおよび追加されたダミーデータがメモリ12に転送される(ステップS25および図3参照)。この追加データ転送は、追加データをデータバッファに書き込むことで行っても良いし、データバッファとは別途に追加データを転送してもよい。
(6)データ転送の進行に伴いステータスフラグ24のステータス情報が更新される(ステップS16)。転送元のI/O16のステータス、転送が完了したデータのサイズ、転送エラーが発生したときには転送エラーの内容を表す転送エラーステータスがステータスフラグ24に書き込まれる。
(7)ステータスフラグ24のステータス情報をメモリ12上のディスクリプタのステータス領域に書き込む(ステップS17)。
この書き込みは、通常のデータと同様に、モードレジスタ25の書き込みモード情報に従って行われ、必要に応じてダミーデータが追加転送される(図5参照)。
この書き込みは、ステータス情報のみでも良いし、ディスクリプタ本体とステータス情報とを一括して書き込んでも差し支えない。後者では、メモリ12にディスクリプタが重ね書きされることになる。このとき、追加転送されるダミーデータのサイズは、転送されるデータ全体のサイズに基づき算出される(前者ではステータス情報のみのサイズに基づき、後者ではディスクリプタとステータス情報とを合わせたサイズに基づく)。
この書き込みは、通常のデータと同様に、モードレジスタ25の書き込みモード情報に従って行われ、必要に応じてダミーデータが追加転送される(図5参照)。
この書き込みは、ステータス情報のみでも良いし、ディスクリプタ本体とステータス情報とを一括して書き込んでも差し支えない。後者では、メモリ12にディスクリプタが重ね書きされることになる。このとき、追加転送されるダミーデータのサイズは、転送されるデータ全体のサイズに基づき算出される(前者ではステータス情報のみのサイズに基づき、後者ではディスクリプタとステータス情報とを合わせたサイズに基づく)。
(8)次のディスクリプタがあれば(ステップS18)、そのディスクリプタがメモリ12からディスクリプタバッファ23に格納され(ステップS14)、このディスクリプタに基づきデータ転送が行われる(ステップS15〜S17)。
(第2の実施の形態)
図6は、DMAコントローラ17aの内部構成の詳細を表すブロック図である。
DMAコントローラ17aは、複数のディスクリプタの本体を記憶することができるディスクリプタバッファ23aを有する。図6では、ディスクリプタバッファ23aが4つのディスクリプタ1〜4を記憶できる場合を示しているが、記憶できるディスクリプタは適宜に変更可能である。
他の構成は、第1の実施形態と本質的に相違する訳ではないので、説明を省略する。
図6は、DMAコントローラ17aの内部構成の詳細を表すブロック図である。
DMAコントローラ17aは、複数のディスクリプタの本体を記憶することができるディスクリプタバッファ23aを有する。図6では、ディスクリプタバッファ23aが4つのディスクリプタ1〜4を記憶できる場合を示しているが、記憶できるディスクリプタは適宜に変更可能である。
他の構成は、第1の実施形態と本質的に相違する訳ではないので、説明を省略する。
図7は、本実施形態に係るDMAコントローラ17aによるDMAデータ転送処理の手順を表すフロー図である。
本図のDMAデータ転送処理の手順におけるステップS31〜S38は、図4のDMAデータ転送処理の手順におけるステップS11〜S18に対応する。
本図のDMAデータ転送処理の手順におけるステップS31〜S38は、図4のDMAデータ転送処理の手順におけるステップS11〜S18に対応する。
以下に、本図と図4でのDMAデータ転送処理手順が相違する点を説明する。
ステップS31では、複数のディスクリプタがメモリ12に連続的に書き込まれる点が、図4のステップS11(ディスクリプタをメモリ12に非連続的に書き込んでも差し支えない(連続的な書き込みも許される))と異なる。図8は、このときに書き込まれるディスクリプタの一例を表す模式図である。複数のディスクリプタとダミーデータのサイズの和がデータ幅とバースト数の積に一致するようにして、リード・モディファイ・ライト処理を回避している。
ステップS31では、複数のディスクリプタがメモリ12に連続的に書き込まれる点が、図4のステップS11(ディスクリプタをメモリ12に非連続的に書き込んでも差し支えない(連続的な書き込みも許される))と異なる。図8は、このときに書き込まれるディスクリプタの一例を表す模式図である。複数のディスクリプタとダミーデータのサイズの和がデータ幅とバースト数の積に一致するようにして、リード・モディファイ・ライト処理を回避している。
また、ステップS34でディスクリプタバッファ23aに複数のディスクリプタが格納される点が、図4のステップS14(ディスクリプタバッファ23に単一のディスクリプタが格納される)と異なる。このことから、ステップS34は、図4のステップS14と異なり、一回のみ実行される。
ステップS37でのメモリ12へのステータス情報の書き込みが複数のディスクリプタ全体に対して行われる点が、図4のステップS17(ディスクリプタそれぞれのステータス領域のみを書き込む)と異なる。このときのメモリ12への書き込みは、複数のディスクリプタに必要に応じてダミーデータを追加して行われる(図8参照)。
このとき、例えば、i番目のディスクリプタに基づくデータ転送が行われた場合には、i番目のディスクリプタのステータス領域が追加して書き換えられたものがメモリ12に転送される。1〜(i−1)番目のディスクリプタのステータス領域はこれ以前に書き換えられているが、データを一括して転送する関係から、同一のデータが重ね書きされる。
このとき、例えば、i番目のディスクリプタに基づくデータ転送が行われた場合には、i番目のディスクリプタのステータス領域が追加して書き換えられたものがメモリ12に転送される。1〜(i−1)番目のディスクリプタのステータス領域はこれ以前に書き換えられているが、データを一括して転送する関係から、同一のデータが重ね書きされる。
(その他の実施形態)
本発明の実施形態は上記の実施形態に限られず拡張、変更可能であり、拡張、変更した実施形態も本発明の技術的範囲に含まれる。
例えば、上記実施形態では、モードレジスタでデータ一般とディスクリプタの双方の転送モードを纏めて切り替えたが、例えば、モードレジスタを2つ用いて、データ一般とディスクリプタの双方の転送モードを個別的に切り替え可能としてもよい。
本発明の実施形態は上記の実施形態に限られず拡張、変更可能であり、拡張、変更した実施形態も本発明の技術的範囲に含まれる。
例えば、上記実施形態では、モードレジスタでデータ一般とディスクリプタの双方の転送モードを纏めて切り替えたが、例えば、モードレジスタを2つ用いて、データ一般とディスクリプタの双方の転送モードを個別的に切り替え可能としてもよい。
10…コンピュータ、11…CPU、12…メモリ、13…メモリコントローラ、14…ブリッジ、15…バス、16…I/O、17…DMAコントローラ、21…制御部、22…データバッファ、23…ディスクリプタバッファ、24…ステータスフラグ、25…モードレジスタ、26…アドレスレジスタ、27…DMAスタートレジスタ
Claims (6)
- 所定のデータ幅を単位としてデータが書き込まれるメモリと、
前記メモリへのデータの書き込みおよび読み出しを制御し、かつ前記メモリに書き込むデータのサイズが前記所定のデータ幅より小さい場合にリード・モディファイ・ライト処理を行うメモリコントローラと、
前記メモリへのDMAデータ転送を制御し、かつ転送するデータのサイズが前記所定のデータ幅の整数倍と異なる場合にダミーデータを追加して転送するDMAコントローラと、
を具備することを特徴とするデータ転送装置。 - 前記DMAコントローラが、
ダミーデータを追加転送する第1の転送モードと、ダミーデータの追加転送を行わない第2の転送モードとを切り替える転送モード切替手段を有する
ことを特徴とする請求項1記載のデータ転送装置。 - 前記DMAコントローラが、
DMAデータ転送を制御するディスクリプタを記憶するディスクリプタ記憶部と、
前記ディスクリプタ記憶部に記憶されるディスクリプタに基づき実行されるDMAデータ転送中の実行状態を表すステータス情報を記憶するステータス情報記憶部と、
前記ステータス情報記憶部に記憶されるステータス情報を前記メモリに転送するステータス情報転送部と、をさらに有する
ことを特徴とする請求項1記載のデータ転送装置。 - 前記ステータス情報転送部が、転送するステータス情報のデータサイズが前記所定のデータ幅の整数倍と異なる場合にダミーデータを追加して転送する
ことを特徴とする請求項3記載のデータ転送装置。 - 前記ステータス情報転送部が、ディスクリプタとステータス情報とを一括してメモリに転送すると共に、このディスクリプタとステータス情報とを合わせたデータサイズが前記所定のデータ幅の整数倍と異なる場合にダミーデータを追加して転送する
ことを特徴とする請求項3記載のデータ転送装置。 - 前記ディスクリプタ記憶部が、複数のディスクリプタを記憶し、
前記ステータス情報転送部が、前記複数のディスクリプタのいずれかによるDMAデータ転送処理が終了する毎に、前記複数のディスクリプタおよび前記ステータス情報を前記メモリに転送すると共に、転送する前記複数のディスクリプタおよび前記ステータス情報のデータサイズが前記所定のデータ幅の整数倍と異なる場合にダミーデータを追加して転送する
ことを特徴とする請求項3記載のデータ転送装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003423492A JP2005182538A (ja) | 2003-12-19 | 2003-12-19 | データ転送装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003423492A JP2005182538A (ja) | 2003-12-19 | 2003-12-19 | データ転送装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005182538A true JP2005182538A (ja) | 2005-07-07 |
Family
ID=34784009
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003423492A Pending JP2005182538A (ja) | 2003-12-19 | 2003-12-19 | データ転送装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005182538A (ja) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100813267B1 (ko) | 2006-09-19 | 2008-03-13 | 삼성전자주식회사 | 데이터 처리시스템의 전송단위 설정방법 및 장치 |
JP2010061220A (ja) * | 2008-09-01 | 2010-03-18 | Sony Computer Entertainment Inc | データ転送装置、データ転送方法およびプロセッサ |
US8386696B2 (en) | 2007-02-13 | 2013-02-26 | Samsung Electronics Co., Ltd. | Methods of writing partial page data in a non-volatile memory device |
US20130304948A1 (en) * | 2012-05-14 | 2013-11-14 | International Business Machines Corporation | Managing A Direct Memory Access ('DMA') Injection First-In-First-Out ('FIFO') Messaging Queue In A Parallel Computer |
US11086568B2 (en) | 2019-03-22 | 2021-08-10 | Toshiba Memory Corporation | Memory system for writing fractional data into nonvolatile memory |
US11226915B2 (en) | 2020-02-19 | 2022-01-18 | Hitachi, Ltd. | Data transfer system |
US11385832B2 (en) | 2018-05-02 | 2022-07-12 | Canon Kabushiki Kaisha | Memory controller and method performed by the memory controller |
US11435951B2 (en) | 2019-08-30 | 2022-09-06 | Canon Kabushiki Kaisha | DRAM access technique to reduce latency due to write command length |
-
2003
- 2003-12-19 JP JP2003423492A patent/JP2005182538A/ja active Pending
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100813267B1 (ko) | 2006-09-19 | 2008-03-13 | 삼성전자주식회사 | 데이터 처리시스템의 전송단위 설정방법 및 장치 |
US8386696B2 (en) | 2007-02-13 | 2013-02-26 | Samsung Electronics Co., Ltd. | Methods of writing partial page data in a non-volatile memory device |
JP2010061220A (ja) * | 2008-09-01 | 2010-03-18 | Sony Computer Entertainment Inc | データ転送装置、データ転送方法およびプロセッサ |
US8719542B2 (en) | 2008-09-01 | 2014-05-06 | Sony Corporation | Data transfer apparatus, data transfer method and processor |
US20130304948A1 (en) * | 2012-05-14 | 2013-11-14 | International Business Machines Corporation | Managing A Direct Memory Access ('DMA') Injection First-In-First-Out ('FIFO') Messaging Queue In A Parallel Computer |
US8990450B2 (en) * | 2012-05-14 | 2015-03-24 | International Business Machines Corporation | Managing a direct memory access (‘DMA’) injection first-in-first-out (‘FIFO’) messaging queue in a parallel computer |
US11385832B2 (en) | 2018-05-02 | 2022-07-12 | Canon Kabushiki Kaisha | Memory controller and method performed by the memory controller |
US12032856B2 (en) | 2018-05-02 | 2024-07-09 | Canon Kabushiki Kaisha | Memory controller and method performed by the memory controller |
US11086568B2 (en) | 2019-03-22 | 2021-08-10 | Toshiba Memory Corporation | Memory system for writing fractional data into nonvolatile memory |
US11435951B2 (en) | 2019-08-30 | 2022-09-06 | Canon Kabushiki Kaisha | DRAM access technique to reduce latency due to write command length |
US11842079B2 (en) | 2019-08-30 | 2023-12-12 | Canon Kabushiki Kaisha | Memory controller and memory control method that decides an order of issuing dram commands based on whether a command has a penalty period |
US11226915B2 (en) | 2020-02-19 | 2022-01-18 | Hitachi, Ltd. | Data transfer system |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3892851B2 (ja) | メモリカード及び半導体装置 | |
JP4820566B2 (ja) | メモリアクセス制御回路 | |
JP2001216194A (ja) | 演算処理装置 | |
US6684267B2 (en) | Direct memory access controller, and direct memory access control method | |
JP4254932B2 (ja) | メモリコントローラ及びフラッシュメモリシステム | |
JP4085983B2 (ja) | 情報処理装置およびメモリアクセス方法 | |
JP2005182538A (ja) | データ転送装置 | |
JP2007286813A (ja) | メモリ制御装置、メモリ制御方法 | |
JP5108690B2 (ja) | Dma装置及びdma転送方法 | |
JP3803196B2 (ja) | 情報処理装置、情報処理方法および記録媒体 | |
JP4471947B2 (ja) | データ処理装置及びデータ処理方法 | |
JP2007233838A (ja) | メモリシステムの制御方法 | |
JP2007206924A (ja) | 演算処理システム | |
JP7225904B2 (ja) | ベクトル演算処理装置、ベクトル演算処理装置による配列変数初期化方法、及び、ベクトル演算処理装置による配列変数初期化プログラム | |
JPH0192851A (ja) | アドレス空間切替装置 | |
JP4229242B2 (ja) | ダイレクトメモリアクセスコントローラ | |
JP7346883B2 (ja) | ベクトルプロセッサ装置及び生成方法 | |
JP2024124037A (ja) | 半導体メモリ装置 | |
JP2007066119A (ja) | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 | |
JP2007018440A (ja) | アーキテクチャ検証装置 | |
JP2003187583A (ja) | 半導体記憶装置及び制御装置 | |
JP4498341B2 (ja) | メモリシステム | |
JP4841314B2 (ja) | データ転送回路 | |
JP2845746B2 (ja) | マイクロプログラム制御装置 | |
JP2000029508A (ja) | プログラマブルコントローラ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060201 |
|
A977 | Report on retrieval |
Effective date: 20081031 Free format text: JAPANESE INTERMEDIATE CODE: A971007 |
|
A131 | Notification of reasons for refusal |
Effective date: 20081202 Free format text: JAPANESE INTERMEDIATE CODE: A131 |
|
A02 | Decision of refusal |
Effective date: 20090407 Free format text: JAPANESE INTERMEDIATE CODE: A02 |