JP2005209224A - ダイレクトメモリアクセス装置 - Google Patents

ダイレクトメモリアクセス装置 Download PDF

Info

Publication number
JP2005209224A
JP2005209224A JP2005069817A JP2005069817A JP2005209224A JP 2005209224 A JP2005209224 A JP 2005209224A JP 2005069817 A JP2005069817 A JP 2005069817A JP 2005069817 A JP2005069817 A JP 2005069817A JP 2005209224 A JP2005209224 A JP 2005209224A
Authority
JP
Japan
Prior art keywords
data
transfer
data transfer
address
bus width
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
Application number
JP2005069817A
Other languages
English (en)
Inventor
Norifumi Fukawa
典文 府川
Nobuhiko Akasaka
伸彦 赤坂
Koichi Yamamoto
幸一 山本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2005069817A priority Critical patent/JP2005209224A/ja
Publication of JP2005209224A publication Critical patent/JP2005209224A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Bus Control (AREA)

Abstract

【課題】 データ転送を効率的に制御してダイレクトメモリアクセスを行うことを課題とする。
【解決手段】 データ転送元及びデータ転送先のデータバス幅が異なるか否かを判断する判断手段と、データ転送元の方がデータ転送先よりもデータバス幅が狭いときには、データ転送元からのデータをデータ転送先のデータバス幅分蓄積されるまでデータ転送元のデータバス幅ずつ入力し、その後該データ転送先のデータバス幅分のデータをデータ転送先に出力することによりダイレクトメモリアクセスデータ転送を行う転送手段とを有するダイレクトメモリアクセス装置が提供される。
【選択図】 図10

Description

本発明は、ダイレクトメモリアクセス装置に関し、特にデータ転送を制御するダイレクトメモリアクセス装置に関する。
図13は、従来技術によるダイレクトメモリアクセス方法を示す。ダイレクトメモリアクセス(DMA)は、入出力機器及びメモリ間又はメモリ同士間のデータ転送を行う。クロックCKは、DMAの同期クロックである。アドレスADは、例えば、0〜99番地がデータ転送元のアドレスであり、100〜199番地がデータ転送先のアドレスである。1〜3番地には、それぞれデータD0〜D2が格納されている。データD0〜D2は、それぞれ1バイトであり、全部で3バイトである。データバスDTは、1ワード(16ビット)幅である。そのデータバスDTは、0〜7ビットが第1のバイトであり、8〜15ビットが第2のバイトである。リード信号RDのパルスは読み込み指示を示し、ライト信号WRのパルスは書き込み指示を示す。転送方式B/Wは、ローレベルがバイト転送を示し、ハイレベルがワード転送を示す。以下、3バイト(奇数バイト)長のデータD0〜D2の転送を行う場合を例に説明する。
まず、タイミングt1で、アドレスADの1番地からデータD0を読み出し、タイミングt2で、そのデータD0をアドレスADの101番地に書き込む。次に、タイミングt3で、アドレスADの2番地からデータD1を読み出し、タイミングt4で、そのデータD1をアドレスADの102番地に書き込む。最後に、タイミングt5で、アドレスADの3番地からデータD2を読み出し、タイミングt6で、そのデータD2をアドレスADの103番地に書き込んで終了となる。
偶数アドレススタートのデータ転送のときには、ワード転送が可能であるが、上記のように奇数アドレス(1番地)スタートのデータ転送のときには、すべてバイト転送により行われる。読み出し及び書き込みのセットを1サイクルとすると、この転送では3サイクルかかることとなる。
図14は、従来技術による他のDMA方法を示す。ここでは、1番地(奇数アドレス)スタート及び4バイト(偶数バイト)長のデータ転送の場合を例に説明する。
まず、タイミングt1でアドレスADの1番地からデータD0を読み出し、タイミングt2でそのデータD0を101番地に書き込む。次に、タイミングt3で2番地からデータD1を読み出し、タイミングt4でそのデータD1を102番地に書き込む。続いて、タイミングt5で3番地からデータD2を読み出し、タイミングt6でそのデータD2を103番地に書き込む。最後に、タイミングt7で4番地からデータD3を読み出し、タイミングt8でそのデータD3を104番地に書き込んで終了となる。
この場合も、奇数アドレス(1番地)スタートのデータ転送であるため、すべてバイト転送により行われる。読み出し及び書き込みのセットを1サイクルとすると、この転送では4サイクルかかることとなる。
バイト単位でデータ転送するよりもワード単位で転送した方が、半分の転送回数で済む。転送回数が減ればそれだけ速く転送できるが、奇数アドレススタートのデータ転送ではワード転送を行うことができず、バイト転送を行うことになる。
また、データバス幅が異なる機器間での転送は、データバス幅が小さい方に合わせてデータ転送を行う。これにより、頻繁にバスを使用することになり、効率的なバスの使用を妨げることになる。
本発明の目的は、データ転送を効率的に制御してダイレクトメモリアクセスを行うことである。
本発明の一観点によれば、データ転送元及びデータ転送先のデータバス幅が異なるか否かを判断する判断手段と、データ転送元の方がデータ転送先よりもデータバス幅が狭いときには、データ転送元からのデータをデータ転送先のデータバス幅分蓄積されるまでデータ転送元のデータバス幅ずつ入力し、その後該データ転送先のデータバス幅分のデータをデータ転送先に出力することによりダイレクトメモリアクセスデータ転送を行う転送手段とを有するダイレクトメモリアクセス装置が提供される。
データ転送を適切に制御することにより、データ転送の際に使用するバスの使用時間を短縮し、効率的にバスを使用することができる。
図1は、本発明の実施形態によるダイレクトメモリアクセス(DMA)装置の構成を示す。バス101には、中央処理装置(CPU)102、DMAコントローラ(DMAC)103、メモリ104及び入出力(I/O)機器105が接続される。メモリ104は、データバス111を介してバス101に接続される。入出力機器105は、データバス112を介してバス101に接続される。
DMA転送について説明する。入出力(I/O)機器105又はメモリ104から、データの転送要求信号がバス101に出されると、それは本来CPU102に送られて処理されるが、その信号をDMA103が受け取り、CPU102ではなくDMAC103が処理をする。そのため、バス101の使用権をCPU102からDMAC103に移し、DMAC103の動作時にはCPU102が止まっている。DMAC103は、転送処理を始める時に、データ転送方向、転送回数等の転送情報(図2参照)をメモリ104から読み込み、その情報に沿って転送処理を開始する。転送が終了又は中断すると、バス101の使用権をCPU102に戻して転送処理を終了する。以上がDMA転送の一連の動作である。
DMAC103は、入出力機器105及びメモリ104間のデータ転送をダイレクトメモリアクセスにより行う。また、バス101に2つのメモリ104を接続すれば、メモリ104同士間のデータ転送を行うこともできる。DMAC103は、例えば入出力機器105からデータ転送の指示を受けると、そのデータのうちの最初及び最後のデータはバイト転送又はワード転送を行い、残りのデータはすべてワード転送を行うように転送方式を指示し、その指示による転送方式によりデータ転送元(例えば入出力機器105)からデータ転送先(例えばメモリ104)へのダイレクトメモリアクセスによるデータ転送を行う。
図2は、メモリ104に記憶されるDMAディスクリプタ201を示す。DMAディスクリプタ201は、転送元アドレス202、転送先アドレス203、データカウンタ204及び転送データ長指定ビット205を有する。データカウンタ204は、合計転送データ長を格納し、転送を行う毎にその転送データ長をダウンカウントする。転送データ長指定ビット205は、0がバイト転送を示し、1がワード転送を示す。
図3は、本実施形態によるダイレクトメモリアクセス方法を示す。ダイレクトメモリアクセス(DMA)は、入出力機器及びメモリ間又はメモリ同士間のデータ転送を行う。クロックCKは、DMAの同期クロックである。アドレスADは、例えば、0〜99番地がデータ転送元のアドレスであり、100〜199番地がデータ転送先のアドレスである。1〜3番地には、それぞれデータD0〜D2が格納されている。データD0〜D2は、それぞれ1バイトであり、全部で3バイトである。データバスDTは、1ワード(16ビット)幅である。そのデータバスDTは、0〜7ビットが第1のバイトであり、8〜15ビットが第2のバイトである。図1において、転送元及び転送先のデータバス111,112が共に16ビット幅の場合を説明する。リード信号RDのパルスは読み込み指示を示し、ライト信号WRのパルスは書き込み指示を示す。転送方式B/Wは、図2の転送データ長指定ビット205に相当し、ローレベルがバイト転送を示し、ハイレベルがワード転送を示す。以下、図13に対応し、奇数アドレス(1番地)スタート及び3バイト(奇数バイト)長のデータD0〜D2の転送を行う場合を例に説明する。
まず、タイミングt1で、アドレスADの1番地から1バイトのデータD0を読み出し、タイミングt2で、その1バイトのデータD0をアドレスADの101番地に書き込む。すなわち、バイト転送を行う。次に、タイミングt3で、アドレスADの2番地から1ワードのデータD1,D2を読み出し、タイミングt4で、その1ワードのデータD1,D2をアドレスADの102番地に書き込む。すなわち、ワード転送を行う。以上、読み出し及び書き込みのセットを1サイクルとすると、この転送では2サイクルかかることとなる。
上記の図13に示す方法では、奇数アドレス(1番地)スタートのデータ転送のときにはすべてバイト転送により行われる。これに対し、本実施形態では、最初の1バイトのデータのみをバイト転送で行い、その後のデータをワード転送する。これにより、高速な転送を行うことができる。
なお、偶数アドレススタート及び奇数バイト長のデータ転送の場合は、最後の1バイトデータのみバイト転送になり、その他のデータはワード転送になる。また、奇数アドレススタート及び偶数バイト長のデータ転送の場合は、最初及び最後のデータのみがバイト転送になり、その他のデータはワード転送になる。以上、本実施形態(図3)は、図13の場合に比べ、バス101を占拠することなく、より効率的にバス101を使用することができる。
図4は、本実施形態による他のDMA方法を示す。ここでは、図14に対応し、1番地(奇数アドレス)スタート及び4バイト(偶数バイト)長のデータ転送の場合を例に説明する。
まず、タイミングt1でアドレスADの1番地から1バイトのデータD0を読み出し、タイミングt2でそのデータD0を101番地に書き込む。すなわち、バイト転送を行う。次に、タイミングt3で2番地から1ワードのデータD1,D2を読み出し、タイミングt4でそのデータD1,D2を102番地に書き込む。すなわち、ワード転送を行う。最後に、タイミングt5で4番地から1バイトのデータD3を読み出し、タイミングt6でそのデータD3を104番地に書き込む。すなわち、バイト転送を行う。
上記のように、奇数アドレススタート及び偶数バイト長のデータ転送の場合は、最初及び最後のデータを共にバイト転送し、残りはすべてワード転送を行う。このデータ転送は3サイクルで終了したことになる。本実施形態(図4)は、図14の場合に比べ、高速に転送を行い、バス101を占拠することなく、より効率的にバス101を使用することができる。
図1のDMAC103は、レジスタRe[0]及びRe[1]を有し、これらのレジスタに応じて最初及び最後のデータの転送方式を決定する。レジスタRe[0]は、1が最初のデータをバイト転送することを示し、0が最初のデータをワード転送することを示す。レジスタRe[1]は、1が最後のデータをバイト転送することを示し、0が最後のデータをワード転送することを示す。
図5は、DMAC103がレジスタRe[0]及びRe[1]の値を決定する処理を示すフローチャートである。ステップS501では、奇数アドレススタートか否かを判断する。奇数アドレススタートであればステップS506へ進み、偶数アドレススタートであればステップS502へ進む。
ステップS502では、レジスタRe[0]に0を設定し、ステップS503へ進む。ステップS506では、レジスタRe[0]に1を設定し、ステップS507へ進む。
ステップS503では、最後の転送アドレスが奇数アドレス(奇数アドレスエンド)か否かをチェックする。奇数アドレスエンドであればステップS505へ進み、偶数アドレスエンドであればステップS504へ進む。ステップS504では、レジスタRe[1]に0を設定する。ステップS505では、レジスタRe[1]に1を設定する。
ステップS507では、奇数アドレスエンドか否かをチェックする。奇数アドレスエンドであればステップS509へ進み、偶数アドレスエンドであればステップS508へ進む。ステップS508では、レジスタRe[1]に0を設定する。ステップS509では、レジスタRe[1]に1を設定する。
なお、ステップS503及びS507の判断は、最終データ転送時に行われる。すなわち、図2のデータカウンタ204の値が1になった時点で判断する。
図6は、DMAによるデータ転送処理を示すフローチャートである。
ステップS601では、転送元(例えば入出力機器105)がデータ転送要求をバス101に出力する。ステップS602では、DMAC103がデータ転送要求に応じたバス使用権の要求を入力する。ステップS603では、DMAC103がバス使用権を確保する。図2のDMAディスクリプタ201には、転送情報が書き込まれる。ステップS604では、DMAC103がDMAディスクリプタ201から転送情報を読み込む。転送元アドレスを参照して、奇数アドレススタートか偶数アドレススタートかを判定し、判定結果に応じて、レジスタRe[0]の値を設定する。すなわち、図5のステップS501、及びS502又はS506が行われる。
ステップS605では、レジスタRe[0]が1か否かをチェックする。1であればステップS606へ進み、0であればステップS607へ進む。ステップS606では、転送データ長指定ビット205(図2)を0にしてバイト転送を指示する。その後、ステップS609へ進む。ステップS607では、データカウンタ204(図2)が1、かつレジスタRe[1]が1であることの条件を満たすか否かをチェックする。データカウンタ204は、残りのデータ転送数を示す。最終データ転送時は、データカウンタ204が1になる。上記の条件を満たすときにはステップS606へ進み、満たさないときにはステップS608へ進む。ステップS608では、転送データ長指定ビット205(図2)を1にしてワード転送を指示する。その後、ステップS609へ進む。
以上のように、レジスタRe[0]の値に応じて、最初のデータがバイト転送方式又はワード転送方式のいずれかが指示される。その転送方式に従い、ステップS609で転送元アドレス202からデータを読み込み、ステップS610で転送先アドレス203にそのデータを書き込む。すなわち、転送元から転送先へのバイト転送又はワード転送を行う。
次に、ステップS611では、転送情報の書き換えを行う。具体的には、図2の転送元アドレス202、転送先アドレス203を増加させ、データカウンタ204を減少させる。なお、最初の転送時には、レジスタRe[0]を0に設定する。最後の転送の時には、転送元アドレスを参照し、奇数アドレスエンドか偶数アドレスエンドかを判定し、判定結果に応じて、レジスタRe[1]の値を設定する。すなわち、図5のステップS503〜S505又はS507〜S509が行われる。
次に、ステップS612では、転送回数終了又は転送中断の指示があるか否かをチェックする。データカウンタ204が0であれば、転送回数終了であると判断することができる。上記の指示があるときにはステップS613へ進み、転送処理を終了する。指示がないときにはステップS605へ戻る。
その後、ステップS605及びS607を介して、ステップS608でワード転送が指示され、ワード転送が繰り返し行われる。そして、最後の転送時には、ステップS607にて、レジスタRe[1]が1か否かチェックされる。レジスタRe[1]が1であればバイト転送が行われ、0であればワード転送が行われる。
上記では、図1において、メモリ104のデータバス111の幅及び入出力機器105のデータバス112の幅が同じ16ビットの場合を説明した。次に、例えばメモリのデータバス111が16ビット幅で、入出力機器のデータバス112が8ビット幅のように、転送元及び転送先のデータバス幅が異なる場合を説明する。
図7は、DMAC103内のデータ保持用レジスタ701を示す。データ保持用レジスタ701は、複数のバイトレジスタを有する。ビット長703は、1個のバイトレジスタのビット長である。ビット長702は、すべてのバイトレジスタの合計ビット長である。ビット長703は、例えば入出力機器のデータバス112に対応し、8ビットである。ビット長702は、例えばメモリのデータバス111に対応し、16ビットである。
入出力機器105からメモリ104への転送時、入出力機器105のデータバス幅を8ビット、メモリ104のデータバス幅を16ビットとする。その場合、入出力機器105のデータバス幅に合わせて8ビット毎に転送を行うのではなく、入出力機器105からのデータをDMAC103内のレジスタ701に一時的に保持し、転送先であるメモリ104のデータバス幅に対応する16ビット分蓄積されたらメモリ104に出力する。逆に、メモリ104から入出力機器105への転送時、メモリ104からの16ビットのデータをDMAC103内のレジスタ701に保持し、転送先の入出力機器105のデータバス幅である8ビットずつ入出力機器105へ出力する。以上から、常にデータバス幅の小さい入出力機器105のデータバス幅に合わせて8ビット転送でバスを使用するのではなく、DMAC103内のレジスタ701に一時的にデータを保持することにより、データ転送時のバス101の占有時間を短縮し、効率的にバス101を使用することを可能としている。
図8は、データバス幅が異なる転送元及び転送先間のデータ転送のタイミングチャートである。転送元のデータバス幅が16ビットで、転送先のデータバス幅が8ビットの場合を示す。
まず、タイミングt1で、転送元の1番地から16ビットのデータD0,D1をワード転送で読み出し、16ビットのレジスタRegに書き込む。レジスタRegは、図7のレジスタ701に対応する。
次に、タイミングt2で、レジスタRegの下位8ビットのデータD0を転送先の101番地にバイト転送で書き込む。
次に、タイミングt3で、レジスタRegの上位8ビットのデータD1を転送先の102番地にバイト転送で書き込む。
次に、タイミングt4で、転送元の2番地から16ビットのデータD2,D3をワード転送で読み出し、レジスタRegに書き込む。
次に、タイミングt5で、レジスタRegの下位8ビットのデータD2を転送先の103番地にバイト転送で書き込む。
次に、タイミングt6で、レジスタRegの上位8ビットのデータD3を転送先の104番地にバイト転送で書き込む。
次に、タイミングt7で、転送元の3番地から16ビットのデータD4,D5をワード転送で読み出し、レジスタRegに書き込む。
図9は、データバス幅が8ビットの転送元からデータバス幅が16ビットの転送先へのデータ転送のタイミングチャートである。
まず、タイミングt1で、転送元の101番地から8ビットのデータD0をバイト転送で読み出し、レジスタRegの下位8ビットに書き込む。
次に、タイミングt2で、転送元の102番地から8ビットのデータD1をバイト転送で読み出し、レジスタRegの上位8ビットに書き込む。
次に、タイミングt3で、レジスタRegの16ビットデータD0,D1を転送先の1番地にワード転送により書き込む。
次に、タイミングt4で、転送元の103番地から8ビットのデータD2をバイト転送で読み出し、レジスタRegの下位8ビットに書き込む。
次に、タイミングt5で、転送元の104番地から8ビットのデータD3をバイト転送で読み出し、レジスタRegの上位8ビットに書き込む。
次に、タイミングt6で、レジスタRegの16ビットデータD2,D3を転送先の2番地にワード転送により書き込む。
次に、タイミングt7で、転送元の105番地から8ビットのデータD4をバイト転送で読み出し、レジスタRegの下位8ビットに書き込む。
図10は、データ保持用レジスタ1005を内蔵するDMAC103の詳細図である。データ保持用レジスタ1005は、2個のバイトレジスタ1005a,1005bを有する。各レジスタ1005a,1005bはそれぞれ8ビット長である。データ保持用レジスタ1005は、16ビット長のワードレジスタであり、異なるデータバス幅間のDMA転送を行う場合、一時データを保持するために必要なものである。
バスコントローラ1001は、バス101を介して必要なデータを転送制御部1004及びアドレス格納部1002に入出力する。アドレス格納部1002は、デコーダを有し、図2のディスクリプタ201から供給される転送元アドレスSRC_add及び転送先アドレスDST_addを格納する。アドレス格納部1002は、転送元アドレスSRC_add及び転送先アドレスDST_addに応じて、信号SA及びDAを転送制御部1004に出力する。信号SAは、転送元アドレスSRC_addが奇数アドレスであれば1、偶数アドレスであれば0である。信号DAは、転送先アドレスDST_addが奇数アドレスであれば1、偶数アドレスであれば0である。
ビット判定レジスタ1003は、アドレス格納部1002でデコードされたアドレスSRC_add,DST_addのデータバス幅に応じて、信号SB及びDBを転送制御部1004に出力する。信号SBは、転送元のアドレスSRC_addのデータバス幅が8ビットであれば0、16ビットであれば1である。信号DBは、転送先のアドレスDST_addのデータバス幅が8ビットであれば0、16ビットであれば1である。
図11は、データバス幅の判断方法を示す。アドレス空間1101は、例えば200番地より小さいアドレス空間1102、及び200番地以降のアドレス空間1103を有する。アドレス空間1102は、データバスが16ビット幅のリソースのアドレス空間であり、例えばメモリ104のアドレス空間である。アドレス空間1103は、データバスが8ビット幅のリソースのアドレス空間であり、例えば入出力機器105のアドレス空間である。このように、アドレス空間を区分することにより、図10のアドレス格納部1002内のデコーダは、アドレスSRC_add,DST_addに応じて、そのアドレスのリソースのデータバス幅を判断し、ビット判定レジスタ1003は信号SB及びDBを出力する。
図10において、転送制御部1004は、信号SA,DA,SB,DBに応じて、図12に示す転送方式を制御してデータ転送を行う。信号(SB,DB)が(0,0)又は(1,1)のときは、上記の図6に示す通常のDMA転送を行う。信号(SB,DB)が(1,0)又は(0,1)のときは、データバス幅が異なる時のDMA転送を行う。ここで、(1,0)ならば転送元が16ビットで、転送先が8ビットを表しており、広いデータバス幅から狭いデータバス幅への転送となる。この場合、まず広いデータバス幅の転送元から、データ保持用レジスタ1005に16ビットのデータを転送する。そして次に、そのレジスタ1005から狭いデータバス幅の転送先へ8ビットずつデータの転送が行われる。一方、(0,1)のときには、逆に転送元が8ビットで、転送先が16ビットを表しており、狭いデータバス幅から広いデータバス幅への転送となる。この場合、まず狭いデータバス幅の転送元から、データ保持用レジスタ1005に8ビットずつ16ビットになるまで転送する。そして次に、そのレジスタ1005から広いデータバス幅の転送先に16ビットデータの転送が行われる。
次に、図12を参照しながら、具体的な転送方法を説明する。この転送方式の選択は、転送元から転送先への転送を行う度に、図2の転送元アドレス202及び転送先アドレス203が変化するので、その度に転送元アドレス信号SA及び転送先アドレス信号DAを判断する。
(A)SA=0,DA=0,SB=0,DB=1の場合
転送元が8ビットバス幅、転送先が16ビットバス幅である。転送元の偶数アドレスの8ビットデータをデータ保持用レジスタの下位バイトレジスタ1005aに転送する。
(B)SA=0,DA=1,SB=0,DB=1の場合
転送元が8ビットバス幅、転送先が16ビットバス幅である。転送元の偶数アドレスの8ビットデータをデータ保持用レジスタの上位バイトレジスタ1005bに転送する。
(C)SA=1,DA=0,SB=0,DB=1の場合
転送元が8ビットバス幅、転送先が16ビットバス幅である。転送元の奇数アドレスの8ビットのデータをデータ保持用レジスタの上位バイトレジスタ1005bに転送する。
(D)SA=1,DA=1,SB=0,DB=1の場合
転送元が8ビットバス幅、転送先が16ビットバス幅である。転送元の奇数アドレスの8ビットのデータをデータ保持用レジスタの下位バイトレジスタ1005aに転送する。
(E)SA=0,DA=0,SB=1,DB=0の場合
転送元が16ビットバス幅、転送先が8ビットバス幅である。転送元から送られたデータ保持用レジスタ1005内の16ビットデータのうちの下位バイトレジスタ1005aの8ビットデータを転送先に転送する。
(F)SA=0,DA=1,SB=1,DB=0の場合
転送元が16ビットバス幅、転送先が8ビットバス幅である。転送元から送られたデータ保持用レジスタ1005内の16ビットデータのうちの上位バイトレジスタ1005bの8ビットデータを転送先に転送する。
(G)SA=1,DA=0,SB=1,DB=0の場合
転送元が16ビットバス幅、転送先が8ビットバス幅である。転送元から送られたデータ保持用レジスタ1005内の16ビットデータのうちの上位バイトレジスタ1005bの8ビットデータを転送先に転送する。
(H)SA=1,DA=1,SB=1,DB=0の場合
転送元が16ビットバス幅、転送先が8ビットバス幅である。転送元から送られたデータ保持用レジスタ1005内の16ビットデータのうちの下位バイトレジスタ1005aの8ビットデータを転送先に転送する。
以上のように、本実施形態のDMA装置は、データ転送の指示を受けると、そのデータのうちの最初及び最後のデータはバイト転送又はワード転送を行い、残りのデータはすべてワード転送を行うように転送方式を指示する指示手段と、その指示による転送方式によりデータ転送元からデータ転送先へのダイレクトメモリアクセスによるデータ転送を行う転送手段とを有する。これにより、図13及び図14の転送の場合よりも効率的にバスを使用し、高速にDMA転送を行うことができる。また、奇数アドレス時のワード転送に対する問題(データ破壊等)を回避できる。
また、本実施形態のDMA装置は、データ転送元及びデータ転送先のデータバス幅が異なるか否かを判断する判断手段を有し、データ転送元の方がデータ転送先よりもデータバス幅が狭いときには、データ転送元からのデータをデータ転送先のデータバス幅分蓄積されるまでデータ転送元のデータバス幅ずつ入力し、その後該データ転送先のデータバス幅分のデータをデータ転送先に出力することによりダイレクトメモリアクセスデータ転送を行う。逆に、データ転送元の方がデータ転送先よりもデータバス幅が広いときには、データ転送元のデータバス幅分のデータをデータ転送元から入力し、該データをデータ転送先のデータバス幅ずつデータ転送先に出力することによりダイレクトメモリアクセスデータ転送を行う。図10のレジスタ1005を用いて転送を行うことにより、バスを効率的に使用し、転送能力を向上させることができる。
その際、図11に示すように、判断手段は、そのデータバス幅に応じてデータ転送元及びデータ転送先のアドレスを決めておき、データ転送元アドレス及びデータ転送先アドレスを基にデータ転送元のデータバス幅及びデータ転送先のデータバス幅を判断し、両者のデータバス幅が異なるか否かを判断する。
また、図10に示すように、判断手段は、データ転送元及びデータ転送先のデータバス幅が異なるか否か、及びデータ転送元アドレス及びデータ転送先アドレスがそれぞれ偶数アドレス又は奇数アドレスのいずれかを判断し、転送制御部1004がその判断結果に応じて、データ転送元からデータ転送先へのダイレクトメモリアクセスによるデータ転送方式を制御する。
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
本発明の実施形態は、例えば以下のように種々の適用が可能である。
(付記1)データ転送の指示を受けると、そのデータのうちの最初及び最後のデータはバイト転送又はワード転送を行い、残りのデータはすべてワード転送を行うように転送方式を指示する指示手段と、
前記指示による転送方式によりデータ転送元からデータ転送先へのダイレクトメモリアクセスによるデータ転送を行う転送手段と
を有するダイレクトメモリアクセス装置。
(付記2)前記指示手段は、前記転送方式をレジスタに書き込むことにより指示する付記1記載のダイレクトメモリアクセス装置。
(付記3)前記レジスタは、前記最初のデータがバイト転送又はワード転送のいずれか、及び前記最後のデータがバイト転送又はワード転送のいずれかを指示するための情報を含む付記2記載のダイレクトメモリアクセス装置。
(付記4)前記レジスタは、前記最初のデータがバイト転送又はワード転送のいずれかを指示するための第1のビット、及び前記最後のデータがバイト転送又はワード転送のいずれかを指示するための第2のビットを含む付記3記載のダイレクトメモリアクセス装置。
(付記5)前記指示手段は、前記最初及び最後のデータの転送元アドレス及び転送先アドレスがそれぞれ奇数アドレス又は偶数アドレスのいずれかに応じて、前記最初及び最後のデータについてそれぞれバイト転送又はワード転送のいずれかを指示する付記4記載のダイレクトメモリアクセス装置。
(付記6)前記指示手段は、奇数アドレススタート及び偶数バイト長のデータ転送の場合は、最初及び最後のデータを共にバイト転送し、残りはすべてワード転送を行うように指示する付記4記載のダイレクトメモリアクセス装置。
(付記7)前記転送手段は、入出力機器及びメモリ間又はメモリ同士間のデータ転送を行う付記5記載のダイレクトメモリアクセス装置。
(付記8)前記指示手段は、前記最初及び最後のデータの転送元アドレス及び転送先アドレスがそれぞれ奇数アドレス又は偶数アドレスのいずれかに応じて、前記最初及び最後のデータについてそれぞれバイト転送又はワード転送のいずれかを指示する付記1記載のダイレクトメモリアクセス装置。
(付記9)データ転送元及びデータ転送先のデータバス幅が異なるか否かを判断する判断手段と、
データ転送元の方がデータ転送先よりもデータバス幅が狭いときには、データ転送元からのデータをデータ転送先のデータバス幅分蓄積されるまでデータ転送元のデータバス幅ずつ入力し、その後該データ転送先のデータバス幅分のデータをデータ転送先に出力することによりダイレクトメモリアクセスデータ転送を行う転送手段と
を有するダイレクトメモリアクセス装置。
(付記10)データ転送元及びデータ転送先のデータバス幅が異なるか否かを判断する判断手段と、
データ転送元の方がデータ転送先よりもデータバス幅が広いときには、データ転送元のデータバス幅分のデータをデータ転送元から入力し、該データをデータ転送先のデータバス幅ずつデータ転送先に出力することによりダイレクトメモリアクセスデータ転送を行う転送手段と
を有するダイレクトメモリアクセス装置。
(付記11)前記転送手段は、データ転送元の方がデータ転送先よりもデータバス幅が狭いときには、データ転送元からのデータをデータ転送先のデータバス幅分蓄積されるまでデータ転送元のデータバス幅ずつ入力し、その後該データ転送先のデータバス幅分のデータをデータ転送先に出力することによりダイレクトメモリアクセスデータ転送を行う付記10記載のダイレクトメモリアクセス装置。
(付記12)前記判断手段は、そのデータバス幅に応じてデータ転送元及びデータ転送先のアドレスを決めておき、データ転送元アドレス及びデータ転送先アドレスを基にデータ転送元のデータバス幅及びデータ転送先のデータバス幅を判断し、両者のデータバス幅が異なるか否かを判断する付記11記載のダイレクトメモリアクセス装置。
(付記13)前記転送手段は、入出力機器及びメモリ間又はメモリ同士間のデータ転送を行う付記12記載のダイレクトメモリアクセス装置。
(付記14)データ転送元及びデータ転送先のデータバス幅が異なるか否か、及びデータ転送元アドレス及びデータ転送先アドレスがそれぞれ偶数アドレス又は奇数アドレスのいずれかを判断する判断手段と、
前記判断手段の判断結果に応じて、データ転送元からデータ転送先へのダイレクトメモリアクセスによるデータ転送方式を制御する転送手段と
を有するダイレクトメモリアクセス装置。
(付記15)前記転送手段は、バイト転送又はワード転送のデータ転送方式を制御する付記14記載のダイレクトメモリアクセス装置。
(付記16)前記転送手段は、上位バイトレジスタ及び下位バイトレジスタを含むワードレジスタを有し、前記判断手段の判断結果に応じて、データ転送元から入力したデータを上位バイトレジスタ及び/又は下位バイトレジスタに入力し、上位バイトレジスタ及び/又は下位バイトレジスタのデータをデータ転送先へ出力する付記15記載のダイレクトメモリアクセス装置。
(付記17)前記転送手段は、入出力機器及びメモリ間又はメモリ同士間のデータ転送を行う付記16記載のダイレクトメモリアクセス装置。
本発明の実施形態によるDMA装置の構成を示すブロック図である。 DMAディスクリプタを示す図である。 本実施形態によるDMA転送を示すタイミングチャートである。 本実施形態による他のDMA転送を示すタイミングチャートである。 レジスタRe[0]及びRe[1]の値を決定する処理を示すフローチャートである。 DMAの転送処理を示すフローチャートである。 DMAコントローラ内のデータ保持用レジスタを示す図である。 データバス幅が16ビットの転送元からデータバス幅が8ビットの転送先へのデータ転送のタイミングチャートである。 データバス幅が8ビットの転送元からデータバス幅が16ビットの転送先へのデータ転送のタイミングチャートである。 データ保持用レジスタを内蔵するDMAコントローラの構成を示す図である。 データバス幅により区分されたアドレス空間を示す図である。 転送方式を示す図である。 従来技術によるDMA転送を示すタイミングチャートである。 従来技術による他のDMA転送を示すタイミングチャートである。
符号の説明
101 バス
102 CPU
103 DMAコントローラ
104 メモリ
105 入出力機器
201 DMAディスクリプタ
202 転送元アドレス
203 転送先アドレス
204 データカウンタ
205 転送データ長指定ビット
701 データ保持用レジスタ
1001 バスコントローラ
1002 アドレス格納部
1003 ビット判定レジスタ
1004 転送制御部
1005 データ保持用レジスタ

Claims (5)

  1. データ転送元及びデータ転送先のデータバス幅が異なるか否かを判断する判断手段と、
    データ転送元の方がデータ転送先よりもデータバス幅が狭いときには、データ転送元からのデータをデータ転送先のデータバス幅分蓄積されるまでデータ転送元のデータバス幅ずつ入力し、その後該データ転送先のデータバス幅分のデータをデータ転送先に出力することによりダイレクトメモリアクセスデータ転送を行う転送手段と
    を有するダイレクトメモリアクセス装置。
  2. データ転送元及びデータ転送先のデータバス幅が異なるか否かを判断する判断手段と、
    データ転送元の方がデータ転送先よりもデータバス幅が広いときには、データ転送元のデータバス幅分のデータをデータ転送元から入力し、該データをデータ転送先のデータバス幅ずつデータ転送先に出力することによりダイレクトメモリアクセスデータ転送を行う転送手段と
    を有するダイレクトメモリアクセス装置。
  3. 前記転送手段は、データ転送元の方がデータ転送先よりもデータバス幅が狭いときには、データ転送元からのデータをデータ転送先のデータバス幅分蓄積されるまでデータ転送元のデータバス幅ずつ入力し、その後該データ転送先のデータバス幅分のデータをデータ転送先に出力することによりダイレクトメモリアクセスデータ転送を行う請求項2記載のダイレクトメモリアクセス装置。
  4. 前記判断手段は、そのデータバス幅に応じてデータ転送元及びデータ転送先のアドレスを決めておき、データ転送元アドレス及びデータ転送先アドレスを基にデータ転送元のデータバス幅及びデータ転送先のデータバス幅を判断し、両者のデータバス幅が異なるか否かを判断する請求項3記載のダイレクトメモリアクセス装置。
  5. 前記転送手段は、入出力機器及びメモリ間又はメモリ同士間のデータ転送を行う請求項4記載のダイレクトメモリアクセス装置。
JP2005069817A 2005-03-11 2005-03-11 ダイレクトメモリアクセス装置 Pending JP2005209224A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005069817A JP2005209224A (ja) 2005-03-11 2005-03-11 ダイレクトメモリアクセス装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005069817A JP2005209224A (ja) 2005-03-11 2005-03-11 ダイレクトメモリアクセス装置

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2002077220A Division JP2003281074A (ja) 2002-03-19 2002-03-19 ダイレクトメモリアクセス装置

Publications (1)

Publication Number Publication Date
JP2005209224A true JP2005209224A (ja) 2005-08-04

Family

ID=34909726

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005069817A Pending JP2005209224A (ja) 2005-03-11 2005-03-11 ダイレクトメモリアクセス装置

Country Status (1)

Country Link
JP (1) JP2005209224A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012123717A (ja) * 2010-12-10 2012-06-28 Mitsubishi Electric Corp データ処理装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012123717A (ja) * 2010-12-10 2012-06-28 Mitsubishi Electric Corp データ処理装置

Similar Documents

Publication Publication Date Title
KR100381957B1 (ko) 비휘발성 반도체 메모리 장치 및 그것의 데이터 입/출력제어 방법
US7165126B2 (en) Direct memory access device
US10289596B2 (en) Memory and method for operating a memory with interruptible command sequence
JPWO2004057481A1 (ja) Dma制御装置、dma制御方法、dma制御プログラム
JP5287301B2 (ja) ディスクリプタ転送装置、i/oコントローラ、及びディスクリプタ転送方法
US20080034132A1 (en) Memory interface for controlling burst memory access, and method for controlling the same
JPH05265922A (ja) ダイレクト・メモリ・アクセス・コントローラ
US7698475B2 (en) DMA transfer control apparatus for performing direct memory access transfer from a transfer source to a transfer destination
JP4855864B2 (ja) ダイレクトメモリアクセスコントローラ
US6545942B2 (en) Semiconductor memory device and information processing unit
US20060010263A1 (en) Direct memory access (DMA) devices, data transfer systems including DMA devices and methods of performing data transfer operations using the same
JP2005209224A (ja) ダイレクトメモリアクセス装置
JP2007079715A (ja) データ転送方法、プログラムおよび装置
JP4892852B2 (ja) シリアルインターフェースの制御方法
JP4723334B2 (ja) Dma転送システム
JP2009110551A (ja) 外部記憶装置およびそのメモリアクセス制御方法
JP2007206924A (ja) 演算処理システム
JP4549073B2 (ja) メモリ制御回路
JP2007334600A (ja) 半導体集積回路装置
JP2003187583A (ja) 半導体記憶装置及び制御装置
JPH0567035A (ja) Dma転送におけるデータアライメント方式
TWI405215B (zh) 位址訊號傳輸方法及記憶體系統
JPH02136951A (ja) Dma転送方式
JP2007179560A (ja) 外部記憶装置およびそのメモリアクセス制御方法
JP2010067167A (ja) データ転送装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080219

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20080624