JPWO2004077304A1 - データ転送装置 - Google Patents
データ転送装置 Download PDFInfo
- Publication number
- JPWO2004077304A1 JPWO2004077304A1 JP2004568756A JP2004568756A JPWO2004077304A1 JP WO2004077304 A1 JPWO2004077304 A1 JP WO2004077304A1 JP 2004568756 A JP2004568756 A JP 2004568756A JP 2004568756 A JP2004568756 A JP 2004568756A JP WO2004077304 A1 JPWO2004077304 A1 JP WO2004077304A1
- Authority
- JP
- Japan
- Prior art keywords
- buffer
- transfer
- data
- channel
- channel unit
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
本発明は、通常はシングルバッファとして動作し、必要に応じてダブルバッファ方式として動作し高速データ転送を実現可能なデータ転送装置を提供することを目的とする。データ転送装置は、第1の動作モードにおいて第1のバッファを中継して第1のデータ転送を実行する第1のチャネルユニットと、第1の動作モードにおいて第2のバッファを中継して第1のデータ転送とは異なる第2のデータ転送を実行する第2のチャネルユニットを含み、第2の動作モードにおいて少なくとも第1のバッファと第2のバッファを含む複数のバッファを順次選択し、転送元から読み出すデータを順次選択したバッファを中継して転送先に転送することで、転送元からのデータ読み出しと転送先へのデータ書き込みを並行して実行するよう構成される。
Description
本発明は、一般にデータ転送装置に関し、詳しくはデュアルバスシステムにおいてデータをDMA転送するデータ転送装置に関する。
コンピュータシステムにおいては、CPUを介さずに2つのデバイス間のデータ転送を直接に実行するDMA(Direct Memory Access)転送が、高いシステム性能を達成するために必要不可欠な技術である。
一般にコンピュータシステムは、複数のデバイスとそれらを接続するバスから構成される。バスに接続されたデバイスは、ReadやWriteの要求を出力するマスターと呼ばれるデバイスと、マスターが出した要求を受け取るスレーブと呼ばれるデバイスとに分けることができる。DMA(DirectMemoryAccess)転送を制御するDMAC(DMAController)やCPUは、要求を出す側のマスターデバイスである。
DMACは、CPUを介することなくスレーブデバイス間のデータ転送を直接に行なう。バスシステムにおいては、アドレスを用いることで、各スレーブデバイスを特定すると共に各スレーブデバイス内の位置(例えばメモリデバイス内の各アドレス)を特定する。図1は、アドレス空間におけるスレーブデバイスの割り当てを示すアドレスマップである。
DMACは、スレーブデバイスに対してRead要求を出し、アドレスにより指定されるスレーブデバイス内の特定の位置から情報を読み出す。その後DMACは、Write要求を出し、読み出した情報を別のスレーブデバイスへ転送する。このようにして、DMACはReadとWriteの要求を出すことによって、スレーブデバイス間のデータ転送を実現する。
図2は、デュアルバスのシステムにおけるダブルバッファ方式のデータ転送動作を説明するための図である。
図2のデュアルバスシステムは、DMAC10、バス11、バス12、RAM13、ROM14、ビデオディスプレイ15、UART(Universal Asynchronous Receiver Transmitter)16を含む。DMAC10がマスターデバイスであり、RAM13、ROM14、ビデオディスプレイ15、及びUART16がスレーブデバイスである。RAM13及びROM14はバス11を介してDMAC10に接続され、ビデオディスプレイ15及びUART16はバス12を介してDMAC10に接続される。
DMAC10は、2つのバッファ(Buffer1)21及びバッファ(Buffer2)22を含む。例として、RAM13からビデオディスプレイ15へのDMAデータ転送動作について以下に説明する。図3は、RAM13からビデオディスプレイ15へのDMAデータ転送動作を示すタイミング図である。
DMAC10は、まずRAM13へRead要求を送出し、Read要求の結果としてRAM13から送られてきたデータをバッファ21へ格納する。このRead動作は、図3においてRAM−>buffer1として示される。このRead動作が完了すると、DMAC10はバッファ21に格納された情報をビデオディスプレイ15へ書き込む。このWrite動作は、図3においてbuffer1−>videoとして示される。
図2の構成はダブルバッファ方式であるので、もう1つのバッファ(buffer2)22をバッファ21と同時に使用することができる。即ちバッファ21からビデオディスプレイ15への書き込みと平行して、RAM13から次のデータを読み出してバッファ22に格納する(RAM−>buffer2)。バッファ22に格納されたデータは、RAM13からデータを読み出してバッファ21に格納するのと並行して、ビデオディスプレイ15に書き込まれる(buffer2−>video)。
このように、デュアルバスシステムにおけるダブルバッファ方式のデータ転送においては、2つのバスと2つのバッファを利用することにより、1つのバッファを利用するシングルバッファの場合と比較して、スレーブデバイス間の転送速度を2倍にすることができる。
上述のダブルバッファ方式では、シングルバッファ方式と比較して2倍の情報を記憶しておく必要があり、多くのチップ面積を消費することになる。また一般にシステム内に存在するスレーブデバイスのうち、ダブルバッファ方式により初めて実現可能な程の高い転送性能を必要とするデバイスはそれほど多くはない。従ってダブルバッファ方式には、多くのチップ面積を必要とするというデメリットが存在する割には、データ転送の高速性というメリットを享受することができる場合が限られている。
以上を鑑みて、本発明は、通常はシングルバッファとして動作し、必要に応じてダブルバッファ方式として動作し高速データ転送を実現可能なデータ転送装置を提供することを目的とする。
特開平1−229353 特開昭64−78351
一般にコンピュータシステムは、複数のデバイスとそれらを接続するバスから構成される。バスに接続されたデバイスは、ReadやWriteの要求を出力するマスターと呼ばれるデバイスと、マスターが出した要求を受け取るスレーブと呼ばれるデバイスとに分けることができる。DMA(DirectMemoryAccess)転送を制御するDMAC(DMAController)やCPUは、要求を出す側のマスターデバイスである。
DMACは、CPUを介することなくスレーブデバイス間のデータ転送を直接に行なう。バスシステムにおいては、アドレスを用いることで、各スレーブデバイスを特定すると共に各スレーブデバイス内の位置(例えばメモリデバイス内の各アドレス)を特定する。図1は、アドレス空間におけるスレーブデバイスの割り当てを示すアドレスマップである。
DMACは、スレーブデバイスに対してRead要求を出し、アドレスにより指定されるスレーブデバイス内の特定の位置から情報を読み出す。その後DMACは、Write要求を出し、読み出した情報を別のスレーブデバイスへ転送する。このようにして、DMACはReadとWriteの要求を出すことによって、スレーブデバイス間のデータ転送を実現する。
図2は、デュアルバスのシステムにおけるダブルバッファ方式のデータ転送動作を説明するための図である。
図2のデュアルバスシステムは、DMAC10、バス11、バス12、RAM13、ROM14、ビデオディスプレイ15、UART(Universal Asynchronous Receiver Transmitter)16を含む。DMAC10がマスターデバイスであり、RAM13、ROM14、ビデオディスプレイ15、及びUART16がスレーブデバイスである。RAM13及びROM14はバス11を介してDMAC10に接続され、ビデオディスプレイ15及びUART16はバス12を介してDMAC10に接続される。
DMAC10は、2つのバッファ(Buffer1)21及びバッファ(Buffer2)22を含む。例として、RAM13からビデオディスプレイ15へのDMAデータ転送動作について以下に説明する。図3は、RAM13からビデオディスプレイ15へのDMAデータ転送動作を示すタイミング図である。
DMAC10は、まずRAM13へRead要求を送出し、Read要求の結果としてRAM13から送られてきたデータをバッファ21へ格納する。このRead動作は、図3においてRAM−>buffer1として示される。このRead動作が完了すると、DMAC10はバッファ21に格納された情報をビデオディスプレイ15へ書き込む。このWrite動作は、図3においてbuffer1−>videoとして示される。
図2の構成はダブルバッファ方式であるので、もう1つのバッファ(buffer2)22をバッファ21と同時に使用することができる。即ちバッファ21からビデオディスプレイ15への書き込みと平行して、RAM13から次のデータを読み出してバッファ22に格納する(RAM−>buffer2)。バッファ22に格納されたデータは、RAM13からデータを読み出してバッファ21に格納するのと並行して、ビデオディスプレイ15に書き込まれる(buffer2−>video)。
このように、デュアルバスシステムにおけるダブルバッファ方式のデータ転送においては、2つのバスと2つのバッファを利用することにより、1つのバッファを利用するシングルバッファの場合と比較して、スレーブデバイス間の転送速度を2倍にすることができる。
上述のダブルバッファ方式では、シングルバッファ方式と比較して2倍の情報を記憶しておく必要があり、多くのチップ面積を消費することになる。また一般にシステム内に存在するスレーブデバイスのうち、ダブルバッファ方式により初めて実現可能な程の高い転送性能を必要とするデバイスはそれほど多くはない。従ってダブルバッファ方式には、多くのチップ面積を必要とするというデメリットが存在する割には、データ転送の高速性というメリットを享受することができる場合が限られている。
以上を鑑みて、本発明は、通常はシングルバッファとして動作し、必要に応じてダブルバッファ方式として動作し高速データ転送を実現可能なデータ転送装置を提供することを目的とする。
本発明によるデータ転送装置は、第1の動作モードにおいて第1のバッファを中継して第1のデータ転送を実行する第1のチャネルユニットと、該第1の動作モードにおいて第2のバッファを中継して該第1のデータ転送とは異なる第2のデータ転送を実行する第2のチャネルユニットを含み、第2の動作モードにおいて少なくとも該第1のバッファと該第2のバッファを含む複数のバッファを順次選択し、転送元から読み出すデータを該順次選択したバッファを中継して転送先に転送することで、該転送元からのデータ読み出しと該転送先へのデータ書き込みを並行して実行するよう構成されることを特徴とする。
上記データ転送装置では、高速データ転送が必要とされない場合には、第1の動作モードにおいて各チャネルが別個のチャネルとして動作して別々のデータ転送を実現する。そして高速データ転送が必要となった場合には、第2の動作モードにおいてデータ読み出し動作とデータ書き込み動作とを並行して実行し、ダブルバッファ方式データ転送を実現する。従って、高速データ転送の必要がない場合には、シングルバッファ方式の複数のチャネルとして効率的なデータ転送を実現し、高速データ転送が必要な場合には、ダブルバッファ方式の単一のチャネルを実現して高速なデータ転送を実行する。このようにして、ダブルバッファ方式のデメリットを低減しながらも、ダブルバッファ方式のデータ転送の高速性というメリットを享受することができる。
上記データ転送装置では、高速データ転送が必要とされない場合には、第1の動作モードにおいて各チャネルが別個のチャネルとして動作して別々のデータ転送を実現する。そして高速データ転送が必要となった場合には、第2の動作モードにおいてデータ読み出し動作とデータ書き込み動作とを並行して実行し、ダブルバッファ方式データ転送を実現する。従って、高速データ転送の必要がない場合には、シングルバッファ方式の複数のチャネルとして効率的なデータ転送を実現し、高速データ転送が必要な場合には、ダブルバッファ方式の単一のチャネルを実現して高速なデータ転送を実行する。このようにして、ダブルバッファ方式のデメリットを低減しながらも、ダブルバッファ方式のデータ転送の高速性というメリットを享受することができる。
図1は、アドレス空間におけるスレーブデバイスの割り当てを示すアドレスマップである。
図2は、デュアルバスシステムにおけるダブルバッファ方式のデータ転送動作を説明するための図である。
図3は、RAMからビデオディスプレイへのDMAデータ転送動作を示すタイミング図である。
図4は、本発明によるDMAコントローラ(データ転送装置)を説明するための図である。
図5は、RAMからビデオディスプレイへのダブルバッファ方式データ転送動作を示すタイミング図である。
図6は、第1のチャネルがRAMからUARTへのDMAデータ転送を実行し、第2のチャネルがRAMからビデオディスプレイへのDMAデータ転送を実行する動作を説明するための図である。
図7は、図6に示す2つのチャネルによるデータ転送動作を示すタイミング図である。
図8は、2つのチャネルが1つのチャネルとして動作してダブルバッファ方式データ転送を実現する構成の実施例を示す図である。
図9は、図8のデータ転送動作を示すタイミング図である。
図10は、2つのチャネルが1つのチャネルとして動作してダブルバッファ方式データ転送を実現する構成の別の実施例を示す図である。
図11は、図8のデータ転送動作を示すタイミング図である。
図12は、本発明による高速データ転送の別の実施例について説明する図である。
図13は、RAMからビデオディスプレイへのダブルバッファ方式データ転送動作を示すタイミング図である。
図2は、デュアルバスシステムにおけるダブルバッファ方式のデータ転送動作を説明するための図である。
図3は、RAMからビデオディスプレイへのDMAデータ転送動作を示すタイミング図である。
図4は、本発明によるDMAコントローラ(データ転送装置)を説明するための図である。
図5は、RAMからビデオディスプレイへのダブルバッファ方式データ転送動作を示すタイミング図である。
図6は、第1のチャネルがRAMからUARTへのDMAデータ転送を実行し、第2のチャネルがRAMからビデオディスプレイへのDMAデータ転送を実行する動作を説明するための図である。
図7は、図6に示す2つのチャネルによるデータ転送動作を示すタイミング図である。
図8は、2つのチャネルが1つのチャネルとして動作してダブルバッファ方式データ転送を実現する構成の実施例を示す図である。
図9は、図8のデータ転送動作を示すタイミング図である。
図10は、2つのチャネルが1つのチャネルとして動作してダブルバッファ方式データ転送を実現する構成の別の実施例を示す図である。
図11は、図8のデータ転送動作を示すタイミング図である。
図12は、本発明による高速データ転送の別の実施例について説明する図である。
図13は、RAMからビデオディスプレイへのダブルバッファ方式データ転送動作を示すタイミング図である。
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。
図4は、本発明によるDMAコントローラ(データ転送装置)を説明するための図である。
本発明によるDMAコントローラ(DMAC)30は、図4に示されるようにデュアルバスシステムにおいて使用される。図4のバスシステムは、DMAC30、バス11、バス12、RAM13、ROM14、ビデオディスプレイ15、及びUART16を含む。RAM13及びROM14はバス11を介してDMAC30に接続され、ビデオディスプレイ15及びUART16はバス12を介してDMAC30に接続される。
DMAC30には、複数のチャネル(チャネルユニット)31−1乃至31−Nが実装され、チャネル毎にバッファが1つ設けられる。例えば、チャネル31−1にはバッファ32−1が設けられ、チャネル31−2にはバッファ32−2が設けられる。DMACの各チャネルには、アドレスを設定するための2つのレジスタS及びレジスタDが設けられる。レジスタSが転送元であるスレーブデバイス内の位置を示すアドレスを格納し、レジスタDが転送先のスレーブデバイス内の位置を示すアドレスを格納する。
図4の例では、チャネル31−1及びチャネル31−2の双方が、RAM13からビデオディスプレイ15へのDMAデータ転送を実行する。これによりチャネル31−1及びチャネル31−2が仮想的に1つのチャネルとして動作し、2つのバッファ32−1及び32−2を利用したダブルバッファ方式データ転送を実行する。
図5は、RAM13からビデオディスプレイ15へのダブルバッファ方式データ転送動作を示すタイミング図である。
まずDMAC30のチャネル31−1が、RAM13へRead要求を送出し、Read要求の結果としてRAM13から送られてきたデータをバッファ32−1へ格納する。このRead動作は、図5においてRAM−>buffer1として示される。Read転送が完了したところで、チャネル31−1からチャネル31−2に奇数読み出し完了信号を送出し、チャネル31−2にデータ転送を開始するよう指示する(図5の矢印1及び矢印3)。これと同時に、チャネル31−1はバッファ32−1に格納された情報をビデオディスプレイ15へ書き込む動作を開始する(図5の矢印2)。このWrite動作は、図5においてbuffer1−>videoとして示される。
チャネル31−2は、奇数読み出し完了信号のアサートを検知し、RAM13へRead要求を送出する。これにより、RAM13から次のデータを読み出してバッファ32−2に格納する(RAM−>buffer2)。この動作は、チャネル31−1がバッファ32−1に格納された情報をビデオディスプレイ15へ書き込む動作(buffer1−>video)と並行して実行される。RAM13からバッファ32−2への転送が完了すると、チャネル31−2は偶数読み出し完了信号を送出し、チャネル31−1にデータ転送を開始するよう指示する(図5の矢印4及び7)。チャネル31−1は、書き込みの完了(矢印6)と偶数読み出し完了信号のアサート(矢印7)とを契機として、RAM13に対して次のRead要求を出して読み出し動作を開始する。
チャネル31−1がRAM13からデータを読み出してバッファ32−1に格納する(RAM−>Buffer1)のと並行して、チャネル31−2は、バッファ32−2に格納されたデータをビデオディスプレイ15に書き込む(buffer2−>video)。
このようにして2つのチャネルは、交互に自らのバッファを使用することで、仮想的に1つのチャネルとして動作してダブルバッファ方式データ転送を実行する。これにより必要に応じて高い転送性能を実現することができる。
また何れのチャネルによる転送をバスへ送出するかを決める優先順位制御に、ラウンドロビンや回転優先順位を使用している場合、2つのチャネルを1チャネルとして利用する上記データ転送は、他のチャネルによるデータ転送よりも2倍多くの優先権を得ることができる。従って、高い転送レートを確保しなければならないスレーブデバイスについてデータ転送する場合に、確実に2倍の転送レートを実現することができるという利点がある。
図4に示すDMAC30においては、必要に応じて2つのチャネルが仮想的に1つのチャネルとして動作してダブルバッファ方式データ転送を実行する。高速データ転送が必要とされない場合には、各チャネルは、それぞれが別個のチャネルとして別々のデータ転送動作を実行する。
図6は、チャネル31−1がRAM13からUART16へのDMAデータ転送を実行し、チャネル31−2がRAM13からビデオディスプレイ15へのDMAデータ転送を実行する動作を説明するための図である。
図7は、図6に示す2つのチャネルによるデータ転送動作を示すタイミング図である。
まずDMAC30のチャネル31−1は、RAM13へRead要求を出す。Read要求の結果、得られた情報をチャネル31−1のバッファ32−1へ格納する(RAM−>CH1)。その後チャネル31−1は、UART16へWrite要求を出し、バッファ32−1の内容をUART16に書き込む(CH1−>UART)。
チャネル31−1がUART16へ書き込み動作を行なうのと並行して、チャネル31−2がRAM13へRead要求を出し、読み出した情報をバッファ32−2へ格納する(RAM−>CH2)。その後、チャネル31−2は、ビデオディスプレイ15へバッファ32−2の内容を書き込む(CH2−>Video)。
このように、高速データ転送が必要とされない場合には、各チャネルが別個のチャネルとして動作して別々のデータ転送を実現する。そして高速データ転送が必要となった場合には、前述のように、2つのチャネルが仮想的に1つのチャネルとして動作して、ダブルバッファ方式データ転送を実行する。従って、高速データ転送の必要がない場合には、シングルバッファ方式の複数のチャネルとして効率的なデータ転送を実現し、高速データ転送が必要な場合には、ダブルバッファ方式の単一のチャネルを実現して高速なデータ転送を実行する。このようにして、ダブルバッファ方式のデメリットを低減しながらも、ダブルバッファ方式のデータ転送の高速性というメリットを享受することができる。
図8は、2つのチャネルが1つのチャネルとして動作してダブルバッファ方式データ転送を実現する構成の実施例を示す図である。
図8においてDMAC30には、複数のチャネル31−1乃至31−Nが実装され、チャネル毎にバッファが1つ設けられる。また各チャネルには、転送元レジスタ41、転送先レジスタ42、アドレスインクリメントモジュール43、及びアドレスインクリメントモジュール44が設けられる。転送元レジスタ41は当該チャネルが実行するデータ転送の転送元のアドレスを格納し、転送先レジスタ42は当該チャネルが実行するデータ転送の転送先のアドレスを格納する。アドレスインクリメントモジュール43は、転送元レジスタ41の内容を+2して更新する。またアドレスインクリメントモジュール44は、転送先レジスタ42の内容を+2して更新する。
DMACにおいては、転送元アドレス及び転送先アドレスをインクリメントしながらデータの転送を行なう。通常は、1回のバッファ転送動作で読み出し又は書き込みされる転送データサイズの分だけ、アドレスをインクリメント(+1)する。それに対して図8の実施例では、2つのチャネルがそれぞれ転送サイズの2倍づつアドレスをインクリメント(+2)する。
この実施例の構成では、バッファを制御するコントローラの構成を殆ど変えることなく、アドレスインクリメントモジュールを少し改造するだけで、ダブルバッファ動作を実現することができる。なおアドレスインクリメントモジュールは、シングルバッファ方式のデータ転送にも対応するために+1のアドレスインクリメントも実行可能であり、+1のインクリメントと+2のインクリメントとを切り換えられるように構成される。
図9は、図8のデータ転送動作を示すタイミング図である。
なおチャネル31−1の転送元レジスタ41の内容はSrc1として示し、チャネル31−1の転送先レジスタ42の内容はDest1として示す。チャネル31−2の転送元レジスタ41の内容はSrc2として示し、チャネル31−2の転送先レジスタ42の内容はDest2として示す。
図9において、読み出し及び書き込み動作についてのデータの流れは図5と同一である。以下においては、読み出し及び書き込み動作とアドレス生成とを関連付けて説明する。まずチャネル31−1がSrc1のアドレス(0)に対してRead動作を実行する(RAM−>Buffer1)。このRead動作の完了に応答して(矢印1)、Src1の値に2を加算して加算結果(2)でSrc1を更新する。同様に、チャネル31−2がSrc2のアドレス(1)に対してRead動作を行い(RAM−>Buffer2)、その完了に応答して(矢印2)、Src2の値に2を加算して加算結果(3)でSrc2を更新する。
チャネル31−2のRead動作と並行して、チャネル31−1はDest1のアドレス(1000)に対してWrite動作を行う(Buffer1−>Video)。チャネル31−1のWrite動作の完了に応答して(矢印3)、Dest1の値に2を加算して加算結果(1002)でDest1を更新する。同様に、チャネル31−2のWrite動作(Buffer2−>Video)の完了に応答して(矢印4)、Dest2の値に2を加算し加算結果(1003)でDest2を更新する。
図10は、2つのチャネルが1つのチャネルとして動作してダブルバッファ方式データ転送を実現する構成の別の実施例を示す図である。図10において、図8と同一の構成要素は同一の番号で参照し、その説明は省略する。
図10の実施例では、チャネル31−1のみがアドレスを出力するよう構成される。従って、アドレスインクリメントモジュール43は転送元レジスタ41の内容を+1して更新し、アドレスインクリメントモジュール44は転送先レジスタ42の内容を+1して更新する。即ち、1回のバッファ転送動作で読み出し又は書き込みされる転送データサイズの分だけ、アドレスをインクリメント(+1)する。
このようにしてチャネル31−1の転送元レジスタ41及び転送先レジスタ42のみを用いてアドレス指定しながら、チャネル31−1及びチャネル31−2が、バッファ32−1とバッファ32−2とを用いてダブルバッファ方式のデータ転送を実現する。この実施例では、チャネル31−1が双方のバッファを制御可能なようにDMAC30を構成する必要があるが、アドレスインクリメントモジュールには+2のインクリメントの構成を設ける必要がない。
図11は、図8のデータ転送動作を示すタイミング図である。
まずチャネル31−1がSrc1のアドレス(0)に対してRead動作を実行する(RAM−>Buffer1)。このRead動作の完了に応答して(矢印1)、Src1の値に1を加算して加算結果(1)でSrc1を更新する。次にチャネル31−2がSrc1のアドレス(1)に対してRead動作を実行する(RAM−>Buffer2)。その完了に応答して(矢印2)、チャネル31−1がSrc1の値に1を加算して加算結果(2)でSrc1を更新する。この更新は、チャネル31−2からチャネル31−1への偶数読み出し完了信号に応答して実行するようにすればよい。
チャネル31−2のRead動作と並行して、チャネル31−1はDest1のアドレス(1000)に対してWrite動作を行う(Buffer1−>Video)。チャネル31−1のWrite動作の完了に応答して(矢印3)、Dest1の値に1を加算して加算結果(1001)でDest1を更新する。次にチャネル31−2のWrite動作(Buffer2−>Video)が完了すると、これに応答して、チャネル31−2からチャネル31−1へ偶数書き込み完了信号を供給する。この偶数書き込み完了信号のアサートに応答して(矢印4)、チャネル31−1がDest1の値に1を加算し加算結果(1002)でDest1を更新する。
図12は、本発明による高速データ転送の別の実施例について説明する図である。
本発明によるDMAコントローラ(DMAC)50は、図12に示されるようにデュアルバスシステムにおいて使用される。図12のバスシステムは、DMAC50、バス11、バス12、RAM13、ビデオディスプレイ15、UART16、及びCPU60を含む。RAM13はバス11を介してDMAC50に接続され、ビデオディスプレイ15及びUART16はバス12を介してDMAC50に接続される。
DMAC50には、複数のチャネル51−1乃至51−Nが実装され、チャネル毎にバッファ番号キューが1つ設けられる。例えば、チャネル51−1にはバッファ番号キュー52−1が設けられ、チャネル51−2にはバッファ番号キュー52−2が設けられる。また各チャネルとは別に、バッファ53−1乃至53−Nが設けられる。また有効フラグ54−1乃至54−Nが設けられ、対応するバッファ53−1乃至53−Nが利用可能か否かを示す。
図13は、RAM13からビデオディスプレイ15への高速データ転送動作を示すタイミング図である。
まずチャネル51−1が、有効フラグ54−1乃至54−Nをチェックして空いているバッファを見つけ、そのバッファの番号(Buffer1)をバッファ番号キュー52−1へ格納する。更に、RAM13から読み出したデータを当該バッファ(キュー最後尾の番号のバッファ)へ格納する(RAM−>Buffer1)。続いて同様に、チャネル51−1が、有効フラグ54−1乃至54−Nをチェックして空いているバッファを見つけ、そのバッファの番号(Buffer2)をバッファ番号キュー52−1へ格納する。更に、RAM13から読み出した次のデータを当該バッファ(キュー最後尾の番号のバッファ)へ格納する(RAM−>Buffer2)。
ビデオディスプレイ15から書き込み要求が到来すると、チャネル51−1は、ビデオディスプレイ15に対する書き込みを行う。この時、バッファ番号キュー52−1から出力される番号(キューの先頭の番号)が指し示すバッファから、ビデオディスプレイ15にデータを送出する(Buffer1−>Video)。なお図13に示されるように、チャネル51−1は、RAM13からのデータ読み出しと、ビデオディスプレイ15へのデータ書き込みとを並行して実行することができる。
図13の例において、チャネル51−1は、バッファとしてBuffer1、Buffer2、Buffer3を順に使用した後、Buffer1を再度使用し、その後Buffer2を使用してから更にBuffer1を再度使用している。本実施例におけるデータ転送においては、有効フラグをチェックして随時利用可能なバッファを特定するので、状況に応じて使用するバッファが変化していくことになる。
また各チャネルは、独自にバッファを獲得して、別々のデータ転送動作を実行してよい。
上記の実施例では、複数のバッファを包括的に管理し、必要に応じて各チャネルがバッファを獲得して使用する。この方法では、バッファ制御が図8や図10の方式に比較して複雑になるが、2つのバッファが利用可能な状況であれば、ダブルバッファ方式のデータ転送と同様の効果を得ることができる。
また利用可能であれば2つ以上のバッファを使用することが可能である。従って、データ転送途中で他のマスターのアクセス等により邪魔されて転送元からDMAC50への転送が中断されても、複数のバッファに格納されるデータを転送先に送出し続けることが可能である。即ち、図13に示されるように、例えばCPU60によるRAM13へのアクセス(RAM−>CPU)が複数回実行され、RAM13からDMAC50への転送が度々滞った場合でも、ビデオディスプレイ15へのデータ転送が滞る可能性を低減することができる。
この実施例の構成は、あるチャネルが全てのバッファを確保してしまうと、別のチャネルのRead転送が行なえないという問題がある。一般に、転送要求からデータ受け取りまでの動作は所定時間内に実行すべきという制約がある場合が多く、上記問題を解決するためには結局各チャネル毎に1つのバッファが対応するように制御することが簡単な解決策である。この場合には、上記図4及び図6の動作と本質的に同様となる。
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
図4は、本発明によるDMAコントローラ(データ転送装置)を説明するための図である。
本発明によるDMAコントローラ(DMAC)30は、図4に示されるようにデュアルバスシステムにおいて使用される。図4のバスシステムは、DMAC30、バス11、バス12、RAM13、ROM14、ビデオディスプレイ15、及びUART16を含む。RAM13及びROM14はバス11を介してDMAC30に接続され、ビデオディスプレイ15及びUART16はバス12を介してDMAC30に接続される。
DMAC30には、複数のチャネル(チャネルユニット)31−1乃至31−Nが実装され、チャネル毎にバッファが1つ設けられる。例えば、チャネル31−1にはバッファ32−1が設けられ、チャネル31−2にはバッファ32−2が設けられる。DMACの各チャネルには、アドレスを設定するための2つのレジスタS及びレジスタDが設けられる。レジスタSが転送元であるスレーブデバイス内の位置を示すアドレスを格納し、レジスタDが転送先のスレーブデバイス内の位置を示すアドレスを格納する。
図4の例では、チャネル31−1及びチャネル31−2の双方が、RAM13からビデオディスプレイ15へのDMAデータ転送を実行する。これによりチャネル31−1及びチャネル31−2が仮想的に1つのチャネルとして動作し、2つのバッファ32−1及び32−2を利用したダブルバッファ方式データ転送を実行する。
図5は、RAM13からビデオディスプレイ15へのダブルバッファ方式データ転送動作を示すタイミング図である。
まずDMAC30のチャネル31−1が、RAM13へRead要求を送出し、Read要求の結果としてRAM13から送られてきたデータをバッファ32−1へ格納する。このRead動作は、図5においてRAM−>buffer1として示される。Read転送が完了したところで、チャネル31−1からチャネル31−2に奇数読み出し完了信号を送出し、チャネル31−2にデータ転送を開始するよう指示する(図5の矢印1及び矢印3)。これと同時に、チャネル31−1はバッファ32−1に格納された情報をビデオディスプレイ15へ書き込む動作を開始する(図5の矢印2)。このWrite動作は、図5においてbuffer1−>videoとして示される。
チャネル31−2は、奇数読み出し完了信号のアサートを検知し、RAM13へRead要求を送出する。これにより、RAM13から次のデータを読み出してバッファ32−2に格納する(RAM−>buffer2)。この動作は、チャネル31−1がバッファ32−1に格納された情報をビデオディスプレイ15へ書き込む動作(buffer1−>video)と並行して実行される。RAM13からバッファ32−2への転送が完了すると、チャネル31−2は偶数読み出し完了信号を送出し、チャネル31−1にデータ転送を開始するよう指示する(図5の矢印4及び7)。チャネル31−1は、書き込みの完了(矢印6)と偶数読み出し完了信号のアサート(矢印7)とを契機として、RAM13に対して次のRead要求を出して読み出し動作を開始する。
チャネル31−1がRAM13からデータを読み出してバッファ32−1に格納する(RAM−>Buffer1)のと並行して、チャネル31−2は、バッファ32−2に格納されたデータをビデオディスプレイ15に書き込む(buffer2−>video)。
このようにして2つのチャネルは、交互に自らのバッファを使用することで、仮想的に1つのチャネルとして動作してダブルバッファ方式データ転送を実行する。これにより必要に応じて高い転送性能を実現することができる。
また何れのチャネルによる転送をバスへ送出するかを決める優先順位制御に、ラウンドロビンや回転優先順位を使用している場合、2つのチャネルを1チャネルとして利用する上記データ転送は、他のチャネルによるデータ転送よりも2倍多くの優先権を得ることができる。従って、高い転送レートを確保しなければならないスレーブデバイスについてデータ転送する場合に、確実に2倍の転送レートを実現することができるという利点がある。
図4に示すDMAC30においては、必要に応じて2つのチャネルが仮想的に1つのチャネルとして動作してダブルバッファ方式データ転送を実行する。高速データ転送が必要とされない場合には、各チャネルは、それぞれが別個のチャネルとして別々のデータ転送動作を実行する。
図6は、チャネル31−1がRAM13からUART16へのDMAデータ転送を実行し、チャネル31−2がRAM13からビデオディスプレイ15へのDMAデータ転送を実行する動作を説明するための図である。
図7は、図6に示す2つのチャネルによるデータ転送動作を示すタイミング図である。
まずDMAC30のチャネル31−1は、RAM13へRead要求を出す。Read要求の結果、得られた情報をチャネル31−1のバッファ32−1へ格納する(RAM−>CH1)。その後チャネル31−1は、UART16へWrite要求を出し、バッファ32−1の内容をUART16に書き込む(CH1−>UART)。
チャネル31−1がUART16へ書き込み動作を行なうのと並行して、チャネル31−2がRAM13へRead要求を出し、読み出した情報をバッファ32−2へ格納する(RAM−>CH2)。その後、チャネル31−2は、ビデオディスプレイ15へバッファ32−2の内容を書き込む(CH2−>Video)。
このように、高速データ転送が必要とされない場合には、各チャネルが別個のチャネルとして動作して別々のデータ転送を実現する。そして高速データ転送が必要となった場合には、前述のように、2つのチャネルが仮想的に1つのチャネルとして動作して、ダブルバッファ方式データ転送を実行する。従って、高速データ転送の必要がない場合には、シングルバッファ方式の複数のチャネルとして効率的なデータ転送を実現し、高速データ転送が必要な場合には、ダブルバッファ方式の単一のチャネルを実現して高速なデータ転送を実行する。このようにして、ダブルバッファ方式のデメリットを低減しながらも、ダブルバッファ方式のデータ転送の高速性というメリットを享受することができる。
図8は、2つのチャネルが1つのチャネルとして動作してダブルバッファ方式データ転送を実現する構成の実施例を示す図である。
図8においてDMAC30には、複数のチャネル31−1乃至31−Nが実装され、チャネル毎にバッファが1つ設けられる。また各チャネルには、転送元レジスタ41、転送先レジスタ42、アドレスインクリメントモジュール43、及びアドレスインクリメントモジュール44が設けられる。転送元レジスタ41は当該チャネルが実行するデータ転送の転送元のアドレスを格納し、転送先レジスタ42は当該チャネルが実行するデータ転送の転送先のアドレスを格納する。アドレスインクリメントモジュール43は、転送元レジスタ41の内容を+2して更新する。またアドレスインクリメントモジュール44は、転送先レジスタ42の内容を+2して更新する。
DMACにおいては、転送元アドレス及び転送先アドレスをインクリメントしながらデータの転送を行なう。通常は、1回のバッファ転送動作で読み出し又は書き込みされる転送データサイズの分だけ、アドレスをインクリメント(+1)する。それに対して図8の実施例では、2つのチャネルがそれぞれ転送サイズの2倍づつアドレスをインクリメント(+2)する。
この実施例の構成では、バッファを制御するコントローラの構成を殆ど変えることなく、アドレスインクリメントモジュールを少し改造するだけで、ダブルバッファ動作を実現することができる。なおアドレスインクリメントモジュールは、シングルバッファ方式のデータ転送にも対応するために+1のアドレスインクリメントも実行可能であり、+1のインクリメントと+2のインクリメントとを切り換えられるように構成される。
図9は、図8のデータ転送動作を示すタイミング図である。
なおチャネル31−1の転送元レジスタ41の内容はSrc1として示し、チャネル31−1の転送先レジスタ42の内容はDest1として示す。チャネル31−2の転送元レジスタ41の内容はSrc2として示し、チャネル31−2の転送先レジスタ42の内容はDest2として示す。
図9において、読み出し及び書き込み動作についてのデータの流れは図5と同一である。以下においては、読み出し及び書き込み動作とアドレス生成とを関連付けて説明する。まずチャネル31−1がSrc1のアドレス(0)に対してRead動作を実行する(RAM−>Buffer1)。このRead動作の完了に応答して(矢印1)、Src1の値に2を加算して加算結果(2)でSrc1を更新する。同様に、チャネル31−2がSrc2のアドレス(1)に対してRead動作を行い(RAM−>Buffer2)、その完了に応答して(矢印2)、Src2の値に2を加算して加算結果(3)でSrc2を更新する。
チャネル31−2のRead動作と並行して、チャネル31−1はDest1のアドレス(1000)に対してWrite動作を行う(Buffer1−>Video)。チャネル31−1のWrite動作の完了に応答して(矢印3)、Dest1の値に2を加算して加算結果(1002)でDest1を更新する。同様に、チャネル31−2のWrite動作(Buffer2−>Video)の完了に応答して(矢印4)、Dest2の値に2を加算し加算結果(1003)でDest2を更新する。
図10は、2つのチャネルが1つのチャネルとして動作してダブルバッファ方式データ転送を実現する構成の別の実施例を示す図である。図10において、図8と同一の構成要素は同一の番号で参照し、その説明は省略する。
図10の実施例では、チャネル31−1のみがアドレスを出力するよう構成される。従って、アドレスインクリメントモジュール43は転送元レジスタ41の内容を+1して更新し、アドレスインクリメントモジュール44は転送先レジスタ42の内容を+1して更新する。即ち、1回のバッファ転送動作で読み出し又は書き込みされる転送データサイズの分だけ、アドレスをインクリメント(+1)する。
このようにしてチャネル31−1の転送元レジスタ41及び転送先レジスタ42のみを用いてアドレス指定しながら、チャネル31−1及びチャネル31−2が、バッファ32−1とバッファ32−2とを用いてダブルバッファ方式のデータ転送を実現する。この実施例では、チャネル31−1が双方のバッファを制御可能なようにDMAC30を構成する必要があるが、アドレスインクリメントモジュールには+2のインクリメントの構成を設ける必要がない。
図11は、図8のデータ転送動作を示すタイミング図である。
まずチャネル31−1がSrc1のアドレス(0)に対してRead動作を実行する(RAM−>Buffer1)。このRead動作の完了に応答して(矢印1)、Src1の値に1を加算して加算結果(1)でSrc1を更新する。次にチャネル31−2がSrc1のアドレス(1)に対してRead動作を実行する(RAM−>Buffer2)。その完了に応答して(矢印2)、チャネル31−1がSrc1の値に1を加算して加算結果(2)でSrc1を更新する。この更新は、チャネル31−2からチャネル31−1への偶数読み出し完了信号に応答して実行するようにすればよい。
チャネル31−2のRead動作と並行して、チャネル31−1はDest1のアドレス(1000)に対してWrite動作を行う(Buffer1−>Video)。チャネル31−1のWrite動作の完了に応答して(矢印3)、Dest1の値に1を加算して加算結果(1001)でDest1を更新する。次にチャネル31−2のWrite動作(Buffer2−>Video)が完了すると、これに応答して、チャネル31−2からチャネル31−1へ偶数書き込み完了信号を供給する。この偶数書き込み完了信号のアサートに応答して(矢印4)、チャネル31−1がDest1の値に1を加算し加算結果(1002)でDest1を更新する。
図12は、本発明による高速データ転送の別の実施例について説明する図である。
本発明によるDMAコントローラ(DMAC)50は、図12に示されるようにデュアルバスシステムにおいて使用される。図12のバスシステムは、DMAC50、バス11、バス12、RAM13、ビデオディスプレイ15、UART16、及びCPU60を含む。RAM13はバス11を介してDMAC50に接続され、ビデオディスプレイ15及びUART16はバス12を介してDMAC50に接続される。
DMAC50には、複数のチャネル51−1乃至51−Nが実装され、チャネル毎にバッファ番号キューが1つ設けられる。例えば、チャネル51−1にはバッファ番号キュー52−1が設けられ、チャネル51−2にはバッファ番号キュー52−2が設けられる。また各チャネルとは別に、バッファ53−1乃至53−Nが設けられる。また有効フラグ54−1乃至54−Nが設けられ、対応するバッファ53−1乃至53−Nが利用可能か否かを示す。
図13は、RAM13からビデオディスプレイ15への高速データ転送動作を示すタイミング図である。
まずチャネル51−1が、有効フラグ54−1乃至54−Nをチェックして空いているバッファを見つけ、そのバッファの番号(Buffer1)をバッファ番号キュー52−1へ格納する。更に、RAM13から読み出したデータを当該バッファ(キュー最後尾の番号のバッファ)へ格納する(RAM−>Buffer1)。続いて同様に、チャネル51−1が、有効フラグ54−1乃至54−Nをチェックして空いているバッファを見つけ、そのバッファの番号(Buffer2)をバッファ番号キュー52−1へ格納する。更に、RAM13から読み出した次のデータを当該バッファ(キュー最後尾の番号のバッファ)へ格納する(RAM−>Buffer2)。
ビデオディスプレイ15から書き込み要求が到来すると、チャネル51−1は、ビデオディスプレイ15に対する書き込みを行う。この時、バッファ番号キュー52−1から出力される番号(キューの先頭の番号)が指し示すバッファから、ビデオディスプレイ15にデータを送出する(Buffer1−>Video)。なお図13に示されるように、チャネル51−1は、RAM13からのデータ読み出しと、ビデオディスプレイ15へのデータ書き込みとを並行して実行することができる。
図13の例において、チャネル51−1は、バッファとしてBuffer1、Buffer2、Buffer3を順に使用した後、Buffer1を再度使用し、その後Buffer2を使用してから更にBuffer1を再度使用している。本実施例におけるデータ転送においては、有効フラグをチェックして随時利用可能なバッファを特定するので、状況に応じて使用するバッファが変化していくことになる。
また各チャネルは、独自にバッファを獲得して、別々のデータ転送動作を実行してよい。
上記の実施例では、複数のバッファを包括的に管理し、必要に応じて各チャネルがバッファを獲得して使用する。この方法では、バッファ制御が図8や図10の方式に比較して複雑になるが、2つのバッファが利用可能な状況であれば、ダブルバッファ方式のデータ転送と同様の効果を得ることができる。
また利用可能であれば2つ以上のバッファを使用することが可能である。従って、データ転送途中で他のマスターのアクセス等により邪魔されて転送元からDMAC50への転送が中断されても、複数のバッファに格納されるデータを転送先に送出し続けることが可能である。即ち、図13に示されるように、例えばCPU60によるRAM13へのアクセス(RAM−>CPU)が複数回実行され、RAM13からDMAC50への転送が度々滞った場合でも、ビデオディスプレイ15へのデータ転送が滞る可能性を低減することができる。
この実施例の構成は、あるチャネルが全てのバッファを確保してしまうと、別のチャネルのRead転送が行なえないという問題がある。一般に、転送要求からデータ受け取りまでの動作は所定時間内に実行すべきという制約がある場合が多く、上記問題を解決するためには結局各チャネル毎に1つのバッファが対応するように制御することが簡単な解決策である。この場合には、上記図4及び図6の動作と本質的に同様となる。
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
Claims (10)
- 第1の動作モードにおいて第1のバッファを中継して第1のデータ転送を実行する第1のチャネルユニットと、
該第1の動作モードにおいて第2のバッファを中継して該第1のデータ転送とは異なる第2のデータ転送を実行する第2のチャネルユニット
を含み、第2の動作モードにおいて少なくとも該第1のバッファと該第2のバッファを含む複数のバッファを順次選択し、転送元から読み出すデータを該順次選択したバッファを中継して転送先に転送することで、該転送元からのデータ読み出しと該転送先へのデータ書き込みを並行して実行するよう構成されることを特徴とするデータ転送装置。 - 該第2の動作モードにおいて該第1のバッファと該第2のバッファを交互に選択し、該転送元から読み出すデータを該交互に選択したバッファを中継して該転送先に転送することで、該第1のバッファへの該転送元からのデータ読み出し動作と該第2のバッファからの該転送先へのデータ書き込み動作とを並行して実行すると共に、該第2のバッファへの該転送元からのデータ読み出し動作と該第1のバッファからの該転送先へのデータ書き込み動作とを並行して実行するよう構成されることを特徴とする請求項1記載のデータ転送装置。
- 該第2の動作モードにおいて該第1のチャネルと該第2のチャネルとが共同動作することにより単一のチャネルとしてデータ転送することを特徴とする請求項2記載のデータ転送装置。
- 該第2の動作モードにおいて該第1のチャネルと該第2のチャネルは、該転送元からのデータ読み出し動作が完了すると相手側に読み出し動作完了を通知することを特徴とする請求項3記載のデータ転送装置。
- 該第1のチャネルユニットと該第2のチャネルユニットの各々は、
該転送元のアクセス位置を示すアドレスを格納する転送元レジスタと、
該転送先のアクセス位置を示すアドレスを格納する転送先レジスタと、
該転送元レジスタに格納されるアドレスをインクリメントする第1のアドレスインクリメントモジュールと、
該転送先レジスタに格納されるアドレスをインクリメントする第2のアドレスインクリメントモジュール
を含み、
該第2の動作モードにおいて、該第1のアドレスインクリメントモジュールは該転送元のアクセス位置を1つおきにアクセスするようにアドレスをインクリメントし、該第2のアドレスインクリメントモジュールは該転送先のアクセス位置を1つおきにアクセスするようにアドレスをインクリメントし、該第1のチャネルユニットの該転送元レジスタ及び該転送先レジスタと該第2のチャネルユニットの該転送元レジスタ及び該転送先レジスタとが互い違いにアクセス位置を指定することを特徴とする請求項4記載のデータ転送装置。 - 該第1のチャネルユニットと該第2のチャネルユニットの各々は、
該転送元のアクセス位置を示すアドレスを格納する転送元レジスタと、
該転送先のアクセス位置を示すアドレスを格納する転送先レジスタと、
該転送元レジスタに格納されるアドレスをインクリメントする第1のアドレスインクリメントモジュールと、
該転送先レジスタに格納されるアドレスをインクリメントする第2のアドレスインクリメントモジュール
を含み、
該第2の動作モードにおいて、該第1のチャネルの該第1のアドレスインクリメントモジュールは該転送元のアクセス位置を順番に1つずつアクセスするようにアドレスをインクリメントし、該第1のチャネルの該第2のアドレスインクリメントモジュールは該転送先のアクセス位置を順番に1つずつアクセスするようにアドレスをインクリメントし、該第1のチャネルユニットの該転送元レジスタ及び該転送先レジスタによりアクセス位置を指定してデータ転送することを特徴とする請求項4記載のデータ転送装置。 - 該第2のチャネルユニットは、該転送先へのデータ書き込み動作が完了すると該第1のチャネルユニットに書き込み動作完了を通知することを特徴とする請求項6記載のデータ転送装置。
- 該第1のチャネルユニットはバッファを特定する情報を順番に格納する第1のキューを含み、該第2のチャネルユニットはバッファを特定する情報を順番に格納する第2のキューを含み、該第2の動作モードにおいて、該第1のチャネルユニットは、該複数のバッファのうちで利用可能なバッファを順次選択し、該選択されたバッファを特定する情報を該第1のキューに順番に格納し、該第1のキューの最後尾の情報が指定するバッファへの該転送元からのデータ読み出しと該キューの先頭の情報が指定するバッファから該転送先へのデータ書き込みとを並行して実行することを特徴とする請求項1記載のデータ転送装置。
- 第1のチャネルユニットと、
第2のチャネルユニット
を含み、該第1のチャネルユニットは、
第1のバッファと、
転送元のアクセス位置を示す第1の転送元レジスタと、
転送先のアクセス位置を示す第1の転送先レジスタ
を含み該第1のバッファを中継して該第1の転送元レジスタの示す転送元から該第1の転送先レジスタの示す転送先にデータ転送するよう構成され、該第2のチャネルユニットは、
第2のバッファと、
転送元のアクセス位置を示す第2の転送元レジスタと、
転送先のアクセス位置を示す第2の転送先レジスタ
を含み該第2のバッファを中継して該第2の転送元レジスタの示す転送元から該第2の転送先レジスタの示す転送先にデータ転送するよう構成され、該第1のチャネルユニットと該第2のチャネルユニットとが協調動作することで該第1のバッファへの一の転送元からのデータ読み出し動作と該第2のバッファからの一の転送先へのデータ書き込み動作とを並行して実行すると共に、該第2のバッファへの該一の転送元からのデータ読み出し動作と該第1のバッファからの該一の転送先へのデータ書き込み動作とを並行して実行するよう構成されることを特徴とするデータ転送装置。 - 複数のバッファと、
バッファを特定する情報を順番に格納する第1のキューを含む第1のチャネルユニットと、
バッファを特定する情報を順番に格納する第2のキューを含む第2のチャネルユニットと、
を含み、該第1のチャネルユニットは、該複数のバッファのうちで利用可能なバッファを順次選択し、該選択されたバッファを特定する情報を該第1のキューに順番に格納し、該キューの最後尾の情報が指定するバッファへの転送元からのデータ読み出しと該キューの先頭の情報が指定するバッファから転送先へのデータ書き込みとを並行して実行することを特徴とするデータ転送装置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2003/002270 WO2004077304A1 (ja) | 2003-02-27 | 2003-02-27 | データ転送装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2004077304A1 true JPWO2004077304A1 (ja) | 2006-06-08 |
Family
ID=32923110
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004568756A Withdrawn JPWO2004077304A1 (ja) | 2003-02-27 | 2003-02-27 | データ転送装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20050144338A1 (ja) |
JP (1) | JPWO2004077304A1 (ja) |
CN (1) | CN1682202A (ja) |
WO (1) | WO2004077304A1 (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4075898B2 (ja) * | 2005-03-23 | 2008-04-16 | セイコーエプソン株式会社 | データ転送制御装置及び電子機器 |
DE102006004191B4 (de) * | 2006-01-27 | 2007-12-20 | Airbus Deutschland Gmbh | Deterministisches Kommunikations-System |
US8843675B2 (en) * | 2007-03-15 | 2014-09-23 | Broadcom Corporation | Pipelined buffer interconnect |
CN101441610B (zh) * | 2007-11-21 | 2010-09-01 | 中兴通讯股份有限公司 | 一种实现数据并串转换无缝输出的系统及方法 |
JP5458524B2 (ja) * | 2008-08-04 | 2014-04-02 | 富士通モバイルコミュニケーションズ株式会社 | 携帯端末 |
JP5547701B2 (ja) * | 2011-09-21 | 2014-07-16 | 日立オートモティブシステムズ株式会社 | 自動車用電子制御装置 |
CN103593148B (zh) * | 2013-11-08 | 2017-10-27 | 大唐移动通信设备有限公司 | 一种cdf侧离线话单数据快速存取的方法及装置 |
US11983127B2 (en) * | 2019-12-18 | 2024-05-14 | Sony Group Corporation | Information processing system, information processing method, and information processing device to reduce load on an information processing unit |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05250306A (ja) * | 1992-03-05 | 1993-09-28 | Fujitsu Ltd | Dmaコントローラ |
JPH1063607A (ja) * | 1996-08-14 | 1998-03-06 | Oki Electric Ind Co Ltd | Dmaコントローラ |
JPH10307787A (ja) * | 1997-05-09 | 1998-11-17 | Nec Corp | バッファメモリ装置 |
US6067300A (en) * | 1998-06-11 | 2000-05-23 | Cabletron Systems, Inc. | Method and apparatus for optimizing the transfer of data packets between local area networks |
JP3415567B2 (ja) * | 2000-06-21 | 2003-06-09 | エヌイーシーマイクロシステム株式会社 | Usb転送制御方法およびusbコントローラ |
US6985977B2 (en) * | 2002-08-30 | 2006-01-10 | National Instruments Corporation | System and method for transferring data over a communication medium using double-buffering |
-
2003
- 2003-02-27 CN CN03822125.XA patent/CN1682202A/zh active Pending
- 2003-02-27 JP JP2004568756A patent/JPWO2004077304A1/ja not_active Withdrawn
- 2003-02-27 WO PCT/JP2003/002270 patent/WO2004077304A1/ja active Application Filing
-
2005
- 2005-02-24 US US11/064,097 patent/US20050144338A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
WO2004077304A1 (ja) | 2004-09-10 |
CN1682202A (zh) | 2005-10-12 |
US20050144338A1 (en) | 2005-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20040107265A1 (en) | Shared memory data transfer apparatus | |
US20120072618A1 (en) | Memory system having high data transfer efficiency and host controller | |
US6675251B1 (en) | Bridge device for connecting multiple devices to one slot | |
US20020184453A1 (en) | Data bus system including posted reads and writes | |
US20050144338A1 (en) | Data transfer apparatus | |
JP2591502B2 (ja) | 情報処理システムおよびそのバス調停方式 | |
JP2003271574A (ja) | 共有メモリ型マルチプロセッサシステムにおけるデータ通信方法 | |
US8244929B2 (en) | Data processing apparatus | |
KR100704218B1 (ko) | 데이터 전송 장치 | |
US8151015B2 (en) | Systems and methods for effecting DMA data transfers | |
KR20070060854A (ko) | 멀티 채널 직접 메모리 접근 제어기 | |
JP5744206B2 (ja) | 描画制御装置 | |
JP2006285872A (ja) | マルチcpuシステム | |
JP4517741B2 (ja) | 記憶装置 | |
JP4229242B2 (ja) | ダイレクトメモリアクセスコントローラ | |
JP2006048691A (ja) | ストリーミングidメソッドによるdmac発行メカニズム | |
US8296481B2 (en) | Device and method for improving transfer efficiency of odd number of data blocks | |
KR20070081981A (ko) | 중앙처리 장치가 없는 시스템에서의 인터페이스 방법 및장치 | |
CN110399322B (zh) | 一种数据传输方法及乒乓dma架构 | |
JP4647578B2 (ja) | レーダ信号処理装置 | |
JP2005235216A (ja) | ダイレクト・メモリ・アクセス制御 | |
KR101328944B1 (ko) | 제어 정보 처리 장치 및 방법 | |
KR100657294B1 (ko) | 멀터미디어 데이터의 고속전송을 위한 비동기 인터페이스장치 | |
CN118034638A (zh) | 重排序缓冲器、系统、组件、设备及传输方法 | |
JPH02211571A (ja) | 情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20070510 |