JP2005128753A - データ転送装置、データ転送方法 - Google Patents
データ転送装置、データ転送方法 Download PDFInfo
- Publication number
- JP2005128753A JP2005128753A JP2003363119A JP2003363119A JP2005128753A JP 2005128753 A JP2005128753 A JP 2005128753A JP 2003363119 A JP2003363119 A JP 2003363119A JP 2003363119 A JP2003363119 A JP 2003363119A JP 2005128753 A JP2005128753 A JP 2005128753A
- Authority
- JP
- Japan
- Prior art keywords
- transfer
- dma
- memory
- dma controller
- data
- 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転送を実現することを課題とする目的とする。
【解決手段】 データ転送装置は、共有バスに接続された第1のデバイスと、前記共有バスに接続された第2のデバイスと、メモリと、DMA転送を実行するDMAコントローラと、前記第1のデバイスと前記第2のデバイス間のデータ転送を制御する制御手段と、を備え、前記制御手段は、前記第1のデバイスから前記第2のデバイスへのデータ転送要求を受け付けると、前記第1のデバイスから前記メモリへのDMA転送をDMAコントローラへ指示し、前記DMAコントローラによるDMA転送が終了すると、前記メモリから第2のデバイスへのDMA転送を前記DMAコントローラへ指示する。
【選択図】 図1
【解決手段】 データ転送装置は、共有バスに接続された第1のデバイスと、前記共有バスに接続された第2のデバイスと、メモリと、DMA転送を実行するDMAコントローラと、前記第1のデバイスと前記第2のデバイス間のデータ転送を制御する制御手段と、を備え、前記制御手段は、前記第1のデバイスから前記第2のデバイスへのデータ転送要求を受け付けると、前記第1のデバイスから前記メモリへのDMA転送をDMAコントローラへ指示し、前記DMAコントローラによるDMA転送が終了すると、前記メモリから第2のデバイスへのDMA転送を前記DMAコントローラへ指示する。
【選択図】 図1
Description
本発明は、デバイス間でDMA転送を行うデータ転送方法の技術に関し、特に、ポート幅が異なるデバイス間でDMA転送を行うデータ転送方法の技術に関する。
従来、共有バスを介してデバイス間でDMA転送を行う場合には、転送元のデバイスのポート幅と転送先のデバイスのポート幅とが等しいものであることが前提であったため、転送元のデバイスのポート幅と転送先のデバイスのポート幅とが異なる場合には、DMA転送を行うことができないという問題があった。
そこで、転送元のデバイスのポート幅と転送先のデバイスのポート幅が異なる場合のデータ転送方法が提案されている。このようなデータ転送方法としては、例えば、特開平5−181785号公報に記載されたようなデータ転送方式がある(特許文献1)。
特開平5−181785号公報に記載されたデータ転送方式は、マスター装置とスレーブ装置のそれぞれに、行方向および列方向に自在にシフト可能な行列形式のレジスタセルを設け、共有バスとの間でデータの授受を行う場合には、列方向のシフトを行い、マスター装置やスレーブ装置との間でデータの授受を行う場合には、行方向のシフトを行うというものである。
特開平5−181785号公報
しかし、上記特開平5−181785号公報に記載されたような従来のデータ転送方式では、マスター装置とスレーブ装置のそれぞれに、行方向および列方向に自在にシフト可能な行列形式のレジスタセルを設ける必要がある。
したがって、ハードウェアであるマスター装置とスレーブ装置を設計する段階で、それぞれの装置にレジスタセルを設けるという作業が必要になる。また、既存のマスター装置やスレーブ装置に対して上記データ転送方式を適用する場合には、それぞれの装置にレジスタセルを追加するというハードウェアの改造作業が必要となる。そのため、従来のようにレジスタセルを設ける方式では、ハードウェア設計時の作業や運用が面倒であり、コスト負担も大きいという問題があった。
そこで、本発明は、転送元のデバイスのポート幅と転送先のデバイスのポート幅が異なる場合に、各デバイスに対して特別なハードウェアを設けることなく、両者の間におけるDMA転送を実現することを課題とする。
上記課題を解決するために、本発明のデータ転送装置は、共有バスに接続された第1のデバイスと、前記共有バスに接続された第2のデバイスと、メモリと、DMA転送を実行するDMAコントローラと、前記第1のデバイスと前記第2のデバイス間のデータ転送を制御する制御手段と、を備え、前記制御手段は、前記第1のデバイスから前記第2のデバイスへのデータ転送要求を受け付けると、前記第1のデバイスから前記メモリへのDMA転送をDMAコントローラへ指示し、前記DMAコントローラによるDMA転送が終了すると、前記メモリから第2のデバイスへのDMA転送を前記DMAコントローラへ指示する。
当該構成によれば、第1のデバイスと第2のデバイス間におけるDMA転送をメモリを用いて段階的に行うこととしたので、各デバイスに対して特別なハードウェアを設けることなくデバイス間のDMA転送を実現することが可能になる。
また、前記制御手段は、前記第1のデバイスから前記メモリへDMA転送を行う場合には、前記第1のデバイスのポート幅単位でDMA転送を行うように前記DMAコントローラへ指示し、前記第1のデバイスから前記メモリへDMA転送を行う場合には、前記第2デバイスのポート幅単位でDMA転送を行うように前記DMAコントローラへ指示することが望ましい。
当該構成によれば、第1のデバイスと第2のデバイスのポート幅がそれぞれ異なる場合であっても、両者の間にメモリを介在させることにより、第1のデバイスから第2のデバイスへのDMA転送を実現することができるようになる。
また、前記制御手段は、前記第1のデバイスから前記第2のデバイスへのデータ転送要求を受け付けると、前記第1のデバイスのポート幅および前記第2のデバイスのポート幅のうちいずれか大きい方のポート幅以上の領域を転送用領域としてメモリ上に確保することを特徴とする。
当該構成によれば、第1のデバイスと第2のデバイスのポート幅がそれぞれ異なる場合に、大きいほうのポート幅にあわせて転送用領域をメモリ上に確保しているので、両方のデバイスを対象にしてDMA転送を行うことができる。
また、前記制御手段は、前記第1のデバイスから前記転送用領域へのDMA転送を第1のDMA転送として前記DMAコントローラへ指示し、前記転送用領域から前記第2のデバイスへのDMA転送を第2のDMA転送として前記DMAコントローラへ指示する場合に、前記転送用領域を第1の領域と第2の領域とに分けて前記メモリ上に確保し、この第1の領域と第2の領域とを切り替えながら前記第1のDMA転送および前記第2のDMA転送を行うように前記DMAコントローラへ指示することを特徴とする。
当該構成によれば、第1の領域と第2の領域とを切り替えながら前記第1のDMA転送および前記第2のDMA転送を行うので、より効率的にデータ転送を行うことが可能になる。
また、前記制御手段は、前記第1のデバイスのポート幅と前記第2のデバイスのポート幅とが一致するか否かを判断し、一致すると判断した場合には、前記第1のデバイスから前記第2のデバイスへのDMA転送を前記DMAコントローラへ指示し、一致しないと判断した場合には、前記第1のデバイスから前記メモリへのDMA転送を前記DMAコントローラへ指示し、前記DMAコントローラによるDMA転送が終了すると、前記メモリから第2のデバイスへのDMA転送を前記DMAコントローラへ指示することを特徴とする。
当該構成によれば、デバイス間のポート幅の状況に応じたDMA転送を実行することが可能になる。
また、本発明は、第1のデバイスと、第2のデバイスと、メモリと、DMA転送を実行するDMAコントローラとを備えるデータ転送装置に所定の機能を実現させるためのプログラムであって、前記第1のデバイスから前記第2のデバイスへのデータ転送要求を受け付けると、前記第1のデバイスから前記第1のデバイスのポート幅単位で前記メモリへDMA転送を行うようにDMAコントローラへ指示する機能と、前記DMAコントローラによるDMA転送が終了すると、前記メモリから前記第2のデバイスのポート幅単位で前記第2のデバイスへのDMA転送を行うように前記DMAコントローラへ指示する機能と、を前記データ転送装置に実現させるためのプログラムである。
当該構成によれば、ポート幅の異なるDMA転送をプログラムによって制御することができるので、各デバイスに対して特別なハードウェアを設けることなくデバイス間のDMA転送を実現することが可能になる。
また、本発明は、共有バスに接続された第1のデバイスと第2のデバイス間におけるデータ転送を実行するデータ転送方法であって、前記第1のデバイスから前記第2のデバイスへのデータ転送要求を受け付ける工程と、前記第1のデバイスのポート幅単位で前記第1のデバイスからメモリへのDMA転送をDMAコントローラへ指示する工程と、前記DMAコントローラによるDMA転送が終了すると、前記第2のデバイスのポート幅単位で前記メモリから前記第2のデバイスへのDMA転送を前記DMAコントローラへ指示する工程と、を実行することを特徴とするデータ転送方法である。
また、本発明は、第1のデバイスの動作を制御するためのデバイスドライバであって、前記第1のデバイスが、第2のデバイス、メモリ、CPUおよびDMA転送を実行するDMAコントローラと共有バスを介して接続されている場合に、前記第1のデバイスから前記第2のデバイスへのデータ転送要求を受け付ける機能と、前記第1のデバイスのポート幅単位で前記第1のデバイスから前記メモリへのDMA転送を前記DMAコントローラへ指示する機能と、前記DMAコントローラによるDMA転送が終了すると、前記第2のデバイスのポート幅単位で前記メモリから前記第2のデバイスへのDMA転送を前記DMAコントローラへ指示する機能と、を前記CPUに実現させるためのデバイスドライバである。
当該構成によれば、転送元と転送先の両方のデバイスに対して特別なハードウェアを設ける必要がないとともに、転送先のデバイスには影響を与えることなく、転送元となるデバイスのデバイスドライバのみによってデバイス間のDMA転送を行うことができるようになる。
なお、本発明のデータ転送方法は、コンピュータにより実施することができるが、そのためのコンピュータプログラムは、CD−ROM、磁気ディスク、半導体メモリ及び通信ネットワークなどの各種の媒体を通じてコンピュータにインストールまたはロードすることができる。また、コンピュータプログラムが、プリンタ用カードやプリンタ用オプションボードに記録されて流通する場合も含む。
本発明によれば、転送元のデバイスのポート幅と転送先のデバイスのポート幅が異なる場合であっても、各デバイスに対して特別なハードウェアを設けることなく両者の間におけるDMA転送を実現することができるようになる。
(第1の実施形態)
(プリンタシステムの構成)
まず、図1及び図2を用いて、本発明の実施形態のデータ転送装置の構成について説明する。図1は、本発明の実施形態のデータ転送装置のハードウェア構成を示すブロック図である。図2は、本発明の実施形態のデバイスドライバ手段の機能構成図を示すブロック図である。
(プリンタシステムの構成)
まず、図1及び図2を用いて、本発明の実施形態のデータ転送装置の構成について説明する。図1は、本発明の実施形態のデータ転送装置のハードウェア構成を示すブロック図である。図2は、本発明の実施形態のデバイスドライバ手段の機能構成図を示すブロック図である。
図1に示すように、データ転送装置100は、デバイスA(転送元デバイス)1と、デバイスB(転送先デバイス)2と、データ転送装置100全体の動作を制御する制御手段としてのCPU3と、処理に必要な各種データを記憶する記憶手段としてのRAM(メモリ)4、CPU3を介することなくデータ転送を行うDMA転送において通信の制御を行うDMAコントローラ5と、制御プログラムなどを格納したROM6とを備え、これらは共有バスを介して接続されている。なお、本実施形態では、デバイスA1を転送元デバイス、デバイスB2を転送先デバイスとして説明するが、デバイスA1を転送先デバイス、デバイスB2を転送元デバイスとした場合でも、同様に本実施形態のデータ転送方法を適用することができる。
デバイスA1とデバイスB2は、それぞれアクセスするためのポート幅が設定されている。本実施形態では、デバイスAのポート幅とデバイスBのポート幅は異なることを前提とする。本実施形態におけるデバイスA1は、たとえばUSBインタフェースを備えるPCIカードであり、ポート幅11は1バイトに設定されている。また、本実施形態におけるデバイスB2は、たとえばデバイスA1から転送されるデータを格納するためのフレームメモリを備えるPCIカードであり、ポート幅21は4バイトに設定されている。なお、デバイスA1およびデバイスB2としては、これらに限られず、また、ポート幅はデバイスの種類に応じて設定されるものとする。
CPU3は、デバイスA1の動作を制御するために必要な通常の制御機能として図2に示すデバイスドライバ手段31を備えている。なお、CPU3は、デバイスB2の動作を制御するためのデバイスドライバ手段も備えているが、ここでは、説明を省略する。
デバイスドライバ手段31は、通常のデバイスドライバと同様の機能構成であり、データ転送要求を受け付ける転送要求受付手段311などを備える。ただし、本実施形態にかかるデバイスドライバ手段31は、転送要求受付手段311が転送要求を受け付けると、転送元デバイスであるデバイスA1から転送先デバイスへのデータ転送をRAM4上に用意した転送用バッファ(転送用領域)を介して実行する転送制御手段312と、転送制御手段312による転送中のデータに対して所定の変換処理を実行するデータ変換手段313をさらに備える。
デバイスドライバ手段31の主な機能について簡単に説明する。デバイスドライバ手段31は、例えば上位アプリケーションから転送要求受付手段311を介してデータ転送要求を受け付けると、RAM4上に、転送データを一時記憶するための転送用バッファを設定する。そして、転送制御手段312は、デバイスA1から転送用バッファへのDMA転送をDMAコントローラ5に指示する。この際、転送制御手段312は、デバイスA1のポート幅単位でDMA転送を行うことを指示する。
DMAコントローラからDMA転送の終了割り込みがあると、次に、転送制御手段312は、転送用バッファからデバイスB2へのDMA転送をDMAコントローラ5に指示する。この際、転送制御手段312は、デバイスB2のポート幅単位でDMA転送を行うことを指示する。このように、ポート幅が異なるためデバイスA1からデバイスB2へ直接DMA転送ができない場合であっても、本実施形態のデバイスドライバ手段31によれば、転送用バッファを介在させることによって、デバイスA1からデバイスB2へDMA転送を利用したデータ転送が可能になる。
なお、これらの各手段は、データ転送装置100内のROMやRAM、外部の記憶媒体等に格納されるプログラムをCPUが実行することにより機能的に実現される。
(データ転送装置における処理)
以下、図3に示すフローチャートおよび図4に示す説明図を参照してデータ転送装置における処理について説明する。図3は、データ転送装置におけるデータ転送の処理を説明するフローチャートである。図4は、デバイスA1からデバイスB2へバッファを介してデータがDMA転送される様子を説明するための図である。なお、各工程(符号が付与されていない部分的な工程を含む)は処理内容に矛盾を生じない範囲で任意に順番を変更して又は並列に実行することができる。
以下、図3に示すフローチャートおよび図4に示す説明図を参照してデータ転送装置における処理について説明する。図3は、データ転送装置におけるデータ転送の処理を説明するフローチャートである。図4は、デバイスA1からデバイスB2へバッファを介してデータがDMA転送される様子を説明するための図である。なお、各工程(符号が付与されていない部分的な工程を含む)は処理内容に矛盾を生じない範囲で任意に順番を変更して又は並列に実行することができる。
転送要求受付手段311は、上位アプリケーションなどからデータ転送要求を受け付けると(STEP300のYes)、転送制御手段312に対して処理の開始を指示する。また、転送要求受付手段311は、データ転送要求に含まれる転送先デバイス、転送すべきデータ量などの情報を、転送制御手段312に対して通知する。ここでは、転送先デバイスとしてデバイスB2が指定されているものとする。
転送制御手段312は、転送要求受付手段311より処理の開始が指示されると、デバイスA1のポート幅を転送元デバイスのポート幅Nに設定し、デバイスB2のポート幅を転送先デバイスのポート幅Mに設定する(STEP301)。
次に、転送制御手段312は、転送用のバッファをRAM4に用意する(STEP302)。ここで、転送用のバッファとしては、任意のサイズを設定することができるが、少なくとも転送元デバイスのポート幅Nバイトおよび転送先デバイスのポート幅Mバイトのうち、いずれか大きい方のバイト数を確保するようにそのサイズを設定する必要がある。
本実施形態では、転送元デバイスのポート幅Nには1バイトが、転送先デバイスのポート幅Mには4バイトがそれぞれ設定されているので、転送用バッファのサイズ(転送用領域)を4バイトに設定したものとする。
転送用のバッファを準備すると、転送制御手段312は、デバイスA1から転送用バッファへのDMA転送をDMAコントローラ5に指示する(STEP303)。ここで、転送制御手段312は、転送元デバイスのポート幅Nバイト単位でDMA転送を行うことを指定する必要がある。たとえば、転送用のバッファのサイズは4バイトに設定されているので、転送用制御手段312は、1バイト単位で4バイト分のデータをデバイスA1から転送用バッファへDMA転送するようDMAコントローラ5に指示する。
DMAコントローラ5は、転送用制御手段312からの指示を受け付けると、1バイト単位で、デバイスA1から転送用バッファへのDMA転送を開始する(図4(1)−1参照)。そして、1バイト単位で4バイト分のデータをデバイスA1から転送用バッファへDMA転送し終えると、転送用制御手段312に対して、終了割り込みをかける。
転送用制御手段312は、DMAコントローラ5からのDMA終了割り込みが発生したと判断すると(STEP304)、所定の条件に従って、転送用バッファに格納されたデータの並び替えが必要か否かを判断する(STEP305)。例えば、デバイスA1上では「1,2,3,4・・・」という順に存在するデータについて、デバイスB2上では「・・・4,3,2,1」という順に格納したいような場合には、データ転送のタイミングでデータの並び替えを行うことが望ましい。
転送用制御手段312は、データ変換が必要であると判断した場合は(STEP305のYes)、データ変換手段313に対してデータ変換を指示する。データ変換手段313は、データ変換の指示を受けると、転送用バッファ内のデータに対してデータの並び替え行う(STEP306)。データの変換としては、たとえばエンディアン変換が該当する。図4に示すように転送用バッファには「1,2,3,4」の順番でデータが格納されている場合に、エンディアン変換を行うと、データの並び順は、「4,3,2,1」となる。
次に、転送用制御手段312は、転送用バッファからデバイスB2へのDMA転送をDMAコントローラ5へ指示する(STEP307)。ここで、転送制御手段312は、転送先デバイスのポート幅Mバイト単位でDMA転送を行うことを指定する必要がある。具体的には、転送用制御手段312は、4バイト単位で4バイト分のデータを転送用バッファからデバイスB2へDMA転送するようにDMAコントローラ5に指示する。
DMAコントローラ5は、転送用制御手段312からの指示を受け付けると、今度は、4バイト単位で、転送用バッファからデバイスB2へのDMA転送を開始する(図4(1)−2参照)。そして、4バイト単位で4バイト分のデータを転送用バッファからデバイスB2へDMA転送し終えると、転送用制御手段312に対して、終了割り込みをかける。
転送用制御手段312は、DMAコントローラ5からのDMA終了割り込みが発生したと判断すると(STEP308のYes)、全データの転送が終了したか否かを判断する(STEP309)。全データの転送が終了したか否かの判断は、例えば、データ転送要求にて指定された転送すべきデータ量と、デバイスA1から転送用バッファへ転送したデータ量(つまり転送用バッファからデバイスB2へ転送したデータ量)とを比較することにより判断することができる。
デバイスA1から転送用バッファへ転送したデータ量が、転送すべきデータ量に満たない場合には、転送用制御手段312は、全データの転送が終了していないと判断し(STEP309のNO)、STEP303〜STEP308に示すデバイスA1から転送用バッファへのDMA転送および転送用バッファからデバイスB2へのDMA転送を繰り返す。
図4に示すように、2回目のDMA転送では、デバイスA1からデータ「5,6,7,8」が1バイト単位で転送用バッファへDMA転送され、その後、転送用バッファからデータが4バイト単位でデバイスB2へDMA転送されていることがわかる(図4(2)−1、(2)−2参照)。
一方、デバイスA1から転送用バッファへ転送したデータ量が、転送すべきデータ量と等しいか転送すべきデータ量よりも多い場合には、転送用制御手段312は、全データの転送が終了したと判断し(STEP309のYes)、データ転送を終了する。
なお、デバイスA1を転送先デバイス、デバイスB2を転送元デバイスとした場合には、転送元デバイスのポート幅Nに4バイトが設定され、転送先デバイスのポート幅Mに1バイトが設定されるが、処理の流れは同様である。
以上の構成によれば、転送元デバイスと転送先デバイスとのポート幅が異なる場合であっても、各デバイスに特定のハードウェアを追加等することなく、デバイス間のDMA転送を実行することができるようになる。
また、転送先のデバイスが変更した場合であっても、転送先デバイスのポート幅Mを変更するだけでよいので、1の転送元デバイスから複数の転送先デバイスへ任意にDMA転送を行うことができるようになる。
(第2の実施形態)
第2の実施形態は、上記第1の実施形態の応用であり、複数の転送用バッファを用意する構成を採用することを特徴とする。複数の転送用バッファを用意し、使用するバッファを切り替えながら複数のDMA転送を行うことでデバイス間のデータ転送をより効率的に行うことができるようになる。
第2の実施形態は、上記第1の実施形態の応用であり、複数の転送用バッファを用意する構成を採用することを特徴とする。複数の転送用バッファを用意し、使用するバッファを切り替えながら複数のDMA転送を行うことでデバイス間のデータ転送をより効率的に行うことができるようになる。
具体的には、第2の実施形態では、複数の転送用バッファとして第1のバッファ、第2のバッファを設け、デバイスAから第1のバッファまたは第2のバッファへは、第1のDMAチャネルを利用するDMA転送(以下、「第1のDMA転送」という)を行い、第1のバッファまたは第2のバッファからデバイスB2へは、第2のDMAチャネルを利用するDMA転送(以下、「第2のDMA転送」という)を行う構成とした。
以下、図5乃至図7に示すフローチャートを参照して第2の実施形態にかかるデータ転送装置における処理について説明する。なお、各工程(符号が付与されていない部分的な工程を含む)は処理内容に矛盾を生じない範囲で任意に順番を変更して又は並列に実行することができる。
転送要求受付手段311は、上位アプリケーションなどからデータ転送要求を受け付けると(STEP500のYes)、転送制御手段312に対して処理の開始を指示する。転送制御手段312は、処理の開始が指示されると、各バッファフラグ(第1のバッファフラグ、第2のバッファフラグ)および各DMA転送フラグ(第1のDMA転送フラグ、第2のDMA転送フラグ)を初期化する(STEP501)。
第1のバッファフラグおよび第2のバッファフラグとは、第1のバッファおよび第2のバッファに対するデータの格納状態を識別するためのもので、各バッファにデータが有るか否か(バッファがFULLの状態か、空の状態か)を示す情報が格納される。例えば、各バッファにデータが有る(バッファがFULL)場合には「1」、各バッファにデータがない(バッファが空)場合には「0」が格納される。
一方、第1のDMA転送フラグおよび第2のDMA転送フラグとは、DMA転送を実行中か否かを識別するためのもので、各DMA転送を実行中か否かを示す情報が格納される。例えば、DMA転送中であれば「ON」、DMA転送中でなければ「OFF」が格納される。
転送制御手段312は、RAM4上に第1のバッファおよび第2のバッファを設定する(STEP502)。各バッファのサイズは、第1の実施形態にて説明したように、デバイスA1のポート幅およびデバイスB2のポート幅を考慮して設定される(少なくとも大きいほうのポート幅以上の領域を確保することが必要である)。
転送用のバッファを準備すると、転送制御手段312は、転送元デバイスのポート幅Nバイト単位でデバイスA1から第1のバッファへDMA転送を行う、第1のDMA転送をDMAコントローラ5に指示する(STEP503)。そして、第1のDMA転送フラグに転送中であることを示すONを設定する(SETP504)。DMAコントローラ5は、転送用制御手段312からの指示を受け付けると、1バイト単位で、デバイスA1から転送用バッファへの第1のDMA転送を開始する。
次に、転送用制御手段312は、DMAコントローラ5からのDMA終了割り込みが発生したと判断すると(STEP505のYes)、DMA終了割り込みの内容に応じて各フラグの内容を更新する(STEP506)。たとえば、デバイスA1から第1のバッファへの第1のDMA転送の終了を示す割り込みである場合には、第1のDMA転送フラグに転送中でないことを示す「OFF」を設定し、第1のバッファフラグにデータが格納された状態を示す「1」を設定する。
次に、転送用制御手段312は、第1のバッファに対するデータの格納状態を判断する処理(STEP507)と、第2のバッファに対するデータの格納状態を判断する処理(STEP508)とを実行する。
図6は、第1のバッファに対するデータの格納状態を判断する処理の流れを示すフローチャートである。転送用制御手段312は、第1のバッファフラグを参照して第1のバッファにデータがあるか否かを判断する(STEP601)。
ここでは、第1のバッファフラグに「1」が設定されているので、データがあると判断し(STEP601のYes)、次に、DMA転送中か否かを判断する(STEP605)。第2のDMA転送フラグにはOFFが設定されているので、DMA転送中でないと判断し、第1のバッファからデバイスB2への第2のDMA転送をDMAコントローラ5へ指示する(STEP606)。そして、第2のDMA転送フラグにONを設定する(STEP607)。
なお、第1のバッファにデータがないと判断した場合には(STEP601のNO)、次に、DMA転送フラグを参照して、DMA転送が実行中か否かを判断する(STEP602)。そして、DMA転送を実行中でないと判断した場合には(STEP602のNO)、デバイスA1から第1のバッファへの第1のDMA転送をDMAコントローラ5へ指示する(STEP603)。そして、第1のDMA転送フラグにONを設定する(STEP604)。
図7は、第2のバッファに対するデータの格納状態を判断する処理の流れを示すフローチャートである。転送用制御手段312は、第2のバッファフラグを参照して第2のバッファにデータがあるか否かを判断する(STEP701)。
ここでは、第2のバッファフラグに「0」が設定されているので、データがないと判断し(STEP701のYes)、次に、DMA転送中か否かを判断する(STEP702)。第1のDMA転送フラグにはOFFが設定されているので、DMA転送中でないと判断し、デバイスA1から第2のバッファへの第1のDMA転送をDMAコントローラ5へ指示する(STEP703)。そして、第1のDMA転送フラグにONを設定する(STEP704)。
なお、第2のバッファにデータがあると判断した場合には(STEP701のNO)、次に、DMA転送フラグを参照して、DMA転送が実行中か否かを判断する(STEP705)。そして、DMA転送を実行中でないと判断した場合には(STEP705のNO)、第2のバッファからデバイスB2への第2のDMA転送をDMAコントローラ5へ指示する(STEP706)。そして、第2のDMA転送フラグにONを設定する(STEP707)。
上記構成においても、第1の実施形態と同様に、第1のバッファおよび第2のバッファへ格納したデータに対する変換処理が必要な場合には、データ変換手段313による変換処理を実行する。
以上の構成によれば、たとえば、デバイスAから第1のバッファへデータをDMA転送(第1のDMA転送)した後に、第1のバッファからデバイスBへデータをDMA転送(第2のDMA転送)している間に、デバイスAから第2のバッファへデータをDMA転送(第1のDMA転送)することができる。このように、2つのバッファを切り替えながらDMA転送を行うことができるので、デバイスAからデバイスBへのデータ転送を効率的に実行することが可能になる。
また、本実施形態では、複数のバッファとして第1および第2のバッファを設ける構成について説明したが、設定するバッファの数やサイズは仕様に応じて適宜これを設定することが可能であり、たとえばバッファを3つ設ける構成としてもよい。また、本実施形態では、複数のDMA転送として第1のDMA転送および第2のDMA転送を用いる場合について説明したが、本発明はこれに限られず、3つのチャネルを利用して第1から第3のDMA転送を行う構成とすることも可能である。
(その他の実施形態)
本発明は上記各実施形態に限定されることなく、種々に変形して適用することが可能である。当業者は、ここに開示された内容に基づいて、本発明の範囲から外れることなしに適宜変更または改良を行うことが可能である。また、このような変更あるいは改良も本発明に含まれる。
本発明は上記各実施形態に限定されることなく、種々に変形して適用することが可能である。当業者は、ここに開示された内容に基づいて、本発明の範囲から外れることなしに適宜変更または改良を行うことが可能である。また、このような変更あるいは改良も本発明に含まれる。
例えば、上記実施形態では、転送元デバイスと転送先デバイスのポート幅がそれぞれ異なるため転送用バッファを介してDMA転送を行う構成としたが、転送元デバイスと転送先デバイスのポート幅が同一か否かを判断する手段を新たにもうけ、転送元デバイスと転送先デバイスのポート幅が同一でないと判断した場合に、転送用バッファを介してDMA転送を行うように制御してもよい。
これによれば、転送元デバイスと転送先デバイスのポート幅が同一である場合には、転送元デバイスから転送先デバイスへのDMA転送を行なうとともに、転送元デバイスと転送先デバイスのポート幅が同一でない場合には、転送用バッファを介して転送元デバイスから転送先デバイスへのDMA転送を行なうようにデータ転送を制御することができるようになるので、各デバイスのポート幅に応じたDMA転送を実現することができるようになる。
1 転送元デバイス、 2 転送先デバイス、 3 CPU、 4 RAM(転送用バッファ)、 5 DMAコントローラ、 6 ROM、 100 データ転送装置、
Claims (8)
- 共有バスに接続された第1のデバイスと、前記共有バスに接続された第2のデバイスと、メモリと、DMA転送を実行するDMAコントローラと、前記第1のデバイスと前記第2のデバイス間のデータ転送を制御する制御手段と、を備え、
前記制御手段は、前記第1のデバイスから前記第2のデバイスへのデータ転送要求を受け付けると、前記第1のデバイスから前記メモリへのDMA転送をDMAコントローラへ指示し、前記DMAコントローラによるDMA転送が終了すると、前記メモリから第2のデバイスへのDMA転送を前記DMAコントローラへ指示することを特徴とするデータ転送装置。 - 前記制御手段は、前記第1のデバイスから前記メモリへDMA転送を行う場合には、前記第1のデバイスのポート幅単位でDMA転送を行うように前記DMAコントローラへ指示し、前記第1のデバイスから前記メモリへDMA転送を行う場合には、前記第2デバイスのポート幅単位でDMA転送を行うように前記DMAコントローラへ指示することを特徴とする請求項1記載のデータ転送装置。
- 前記制御手段は、前記第1のデバイスから前記第2のデバイスへのデータ転送要求を受け付けると、前記第1のデバイスのポート幅および前記第2のデバイスのポート幅のうちいずれか大きい方のポート幅以上の領域を転送用領域としてメモリ上に確保することを特徴とする請求項1または2記載のデータ転送装置。
- 前記制御手段は、前記第1のデバイスから前記転送用領域へのDMA転送を第1のDMA転送として前記DMAコントローラへ指示し、前記転送用領域から前記第2のデバイスへのDMA転送を第2のDMA転送として前記DMAコントローラへ指示する場合に、前記転送用領域を第1の領域と第2の領域とに分けて前記メモリ上に確保し、この第1の領域と第2の領域とを切り替えながら前記第1のDMA転送および前記第2のDMA転送を行うように前記DMAコントローラへ指示することを特徴とする請求項1乃至3いずれか1項に記載のデータ転送装置。
- 前記制御手段は、前記第1のデバイスのポート幅と前記第2のデバイスのポート幅とが一致するか否かを判断し、一致すると判断した場合には、前記第1のデバイスから前記第2のデバイスへのDMA転送を前記DMAコントローラへ指示し、一致しないと判断した場合には、前記第1のデバイスから前記メモリへのDMA転送を前記DMAコントローラへ指示し、前記DMAコントローラによるDMA転送が終了すると、前記メモリから第2のデバイスへのDMA転送を前記DMAコントローラへ指示することを特徴とする請求項1乃至4いずれか1項に記載のデータ転送装置。
- 第1のデバイスと、第2のデバイスと、メモリと、DMA転送を実行するDMAコントローラとを備えるデータ転送装置に所定の機能を実現させるためのプログラムであって、
前記第1のデバイスから前記第2のデバイスへのデータ転送要求を受け付けると、前記第1のデバイスから前記第1のデバイスのポート幅単位で前記メモリへDMA転送を行うようにDMAコントローラへ指示する機能と、
前記DMAコントローラによるDMA転送が終了すると、前記メモリから前記第2のデバイスのポート幅単位で前記第2のデバイスへのDMA転送を行うように前記DMAコントローラへ指示する機能と、
を前記データ転送装置に実現させるためのプログラム。 - 共有バスに接続された第1のデバイスと第2のデバイス間におけるデータ転送を実行するデータ転送方法であって、
前記第1のデバイスから前記第2のデバイスへのデータ転送要求を受け付ける工程と、
前記第1のデバイスのポート幅単位で前記第1のデバイスからメモリへのDMA転送をDMAコントローラへ指示する工程と、
前記DMAコントローラによるDMA転送が終了すると、前記第2のデバイスのポート幅単位で前記メモリから前記第2のデバイスへのDMA転送を前記DMAコントローラへ指示する工程と、
を実行することを特徴とするデータ転送方法。 - 第1のデバイスの動作を制御するためのデバイスドライバであって、
前記第1のデバイスが、第2のデバイス、メモリ、CPUおよびDMA転送を実行するDMAコントローラと共有バスを介して接続されている場合に、
前記第1のデバイスから前記第2のデバイスへのデータ転送要求を受け付ける機能と、
前記第1のデバイスのポート幅単位で前記第1のデバイスから前記メモリへのDMA転送を前記DMAコントローラへ指示する機能と、
前記DMAコントローラによるDMA転送が終了すると、前記第2のデバイスのポート幅単位で前記メモリから前記第2のデバイスへのDMA転送を前記DMAコントローラへ指示する機能と、
を前記CPUに実現させるためのデバイスドライバ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003363119A JP2005128753A (ja) | 2003-10-23 | 2003-10-23 | データ転送装置、データ転送方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003363119A JP2005128753A (ja) | 2003-10-23 | 2003-10-23 | データ転送装置、データ転送方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005128753A true JP2005128753A (ja) | 2005-05-19 |
Family
ID=34642546
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003363119A Pending JP2005128753A (ja) | 2003-10-23 | 2003-10-23 | データ転送装置、データ転送方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005128753A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007241588A (ja) * | 2006-03-08 | 2007-09-20 | Kyocera Mita Corp | データ転送装置及び画像形成装置 |
JP2008152702A (ja) * | 2006-12-20 | 2008-07-03 | Murata Mach Ltd | データ処理装置 |
-
2003
- 2003-10-23 JP JP2003363119A patent/JP2005128753A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007241588A (ja) * | 2006-03-08 | 2007-09-20 | Kyocera Mita Corp | データ転送装置及び画像形成装置 |
JP2008152702A (ja) * | 2006-12-20 | 2008-07-03 | Murata Mach Ltd | データ処理装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2529308B1 (en) | A system and method for read-while-write with nand memory device | |
US7660911B2 (en) | Block-based data striping to flash memory | |
US20080147994A1 (en) | Command scheduling method and apparatus of virtual file system embodied in nonvolatile data storage device | |
JP2004005382A (ja) | データ転送装置および方法 | |
WO2017056725A1 (ja) | 車載制御装置 | |
JP5438371B2 (ja) | 画像処理装置および画像処理方法 | |
US7725621B2 (en) | Semiconductor device and data transfer method | |
JP2000158724A (ja) | 画像処理装置、画像処理方法および記録媒体 | |
EP1513071B1 (en) | Memory bandwidth control device | |
JP4373255B2 (ja) | ダイレクトメモリアクセス制御装置および方法 | |
JP4855864B2 (ja) | ダイレクトメモリアクセスコントローラ | |
JP2005128753A (ja) | データ転送装置、データ転送方法 | |
JP2005182538A (ja) | データ転送装置 | |
JPH08106443A (ja) | データ処理システム及び並列コンピュータ | |
JP2006024134A (ja) | Dma転送装置及びdma転送方法 | |
JP2004227580A (ja) | 直接メモリ接近媒体のデータ伝送装置及び方法 | |
JPS62173526A (ja) | ペ−ジバツフア制御方式 | |
JP2009187337A (ja) | デバイス制御方法、プログラム、制御回路及び電子機器 | |
JP2002149626A (ja) | マイクロコンピュータ | |
JP2002024157A (ja) | Dma処理方法およびdma処理装置 | |
WO2013094913A1 (ko) | 입출력 핀을 이용한 다중 웨이 낸드 플래시 제어 장치 및 방법 | |
JP2007323491A (ja) | ダイレクトメモリアクセス制御装置および制御方法 | |
JP4567373B2 (ja) | データ転送装置及び通信データ処理システム | |
JP2006139416A (ja) | データ転送装置およびデータ転送方法 | |
JP2005316700A (ja) | データ転送方法および装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Effective date: 20060929 Free format text: JAPANESE INTERMEDIATE CODE: A621 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090813 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090929 |
|
A02 | Decision of refusal |
Effective date: 20100126 Free format text: JAPANESE INTERMEDIATE CODE: A02 |