JP2007188357A - データ転送装置 - Google Patents

データ転送装置 Download PDF

Info

Publication number
JP2007188357A
JP2007188357A JP2006006741A JP2006006741A JP2007188357A JP 2007188357 A JP2007188357 A JP 2007188357A JP 2006006741 A JP2006006741 A JP 2006006741A JP 2006006741 A JP2006006741 A JP 2006006741A JP 2007188357 A JP2007188357 A JP 2007188357A
Authority
JP
Japan
Prior art keywords
data
transfer
storage area
storage unit
ram
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
JP2006006741A
Other languages
English (en)
Inventor
和久 ▲高▼山
Kazuhisa Takayama
Noriyuki Shimada
紀幸 嶋田
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 JP2006006741A priority Critical patent/JP2007188357A/ja
Publication of JP2007188357A publication Critical patent/JP2007188357A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Bus Control (AREA)

Abstract

【課題】データ転送処理が始まってから、バスを使用する優先度の高い他の処理による割り込みが発生した場合、その優先度の高い他の処理を可能な限り早く実行させることが可能なデータ転送装置を提供することである。
【解決手段】本発明のデータ転送装置は、要求元からのデータ転送要求に基づいて、転送元記憶領域のデータを転送先記憶領域に転送する。そして、装置に内蔵された一次記憶領域と、上記転送元記憶領域と上記一次記憶領域との間に設けられた第1アライナと、上記一次記憶領域と上記転送先記憶領域との間に設けられた第2アライナを備える。上記第1アライナは、上記一次記憶領域の先頭位置以降に転送元記憶領域のデータを連続して格納するようにシフト処理を行い、上記第2アライナは、上記データ転送要求で指定された転送先記憶領域の先頭位置以降に上記一次記憶領域のデータを格納するようにシフト処理を行う。
【選択図】図1

Description

本発明は、データ転送装置に関し、特に、CPU(Central Processing Unit)からのデータ転送要求に基づいて、転送元記憶領域のデータを転送先記憶領域にDMA(Direct Memory Access)転送するデータ転送装置に関する。
CPUからのデータ転送要求に基づいて、転送元記憶領域のデータを転送先記憶領域にDMA転送するデータ転送装置が知られている。
DMA転送については、以下に示すような技術が開示されている。
まず、特許文献1には、DMA転送することが指示されたパケットが、RAMの離れたメモリ領域に格納されている場合、そのパケットを構成するデータのそれぞれに対してDMAを起動し、それぞれのデータ毎にアシンクロナスFIFOに書き込むことで、アシンクロナスパケット(IEEE(Institute of Electrical and Electronics Engineers)1394の非同期通信パケット)をより好適に転送できる技術が示されている。
特許文献2には、通信フレームをヘッダ部とデータ部で別々の領域にDMA転送する場合に、データアライメントの不一致が検出された場合でも、最大バス幅での転送を可能とする技術が示されている。
特許文献3には、記憶装置と入出力装置との間のDMA転送において、データの先頭アドレスまたはデータの転送バイト数がメインバスのデータ長の倍数でない場合に、データ転送時間を短縮する技術が示されている。
特許文献4には、DMA転送中のデータ入れ替えを高速に実行可能なデータ転送装置が示されている。
特許文献5には、ミスアライメント状態でのデータ転送を高速に実行することを可能としたDMAコントローラが示されている。
特開2002−366508号公報「データ転送方法」 特開2003−67321号公報「データ転送装置及び該データ転送装置内に具備されるアライナ」 特開平5−67035号公報「DMA転送におけるデータアライメント方式」 特開平10−334038号公報「データ転送装置」 特開平3−244059号公報「DMAコントローラ」
しかし、DMA転送処理が始まってから、バスを使用する優先度の高い他の処理による割り込みが発生した場合、その優先度の高い他の処理を可能な限り早く実行させることについては、上記した技術には示されていない。
本発明の課題は、DMA転送処理が始まってから、バスを使用する優先度の高い他の処理による割り込みが発生した場合、その優先度の高い他の処理を可能な限り早く実行させることが可能なデータ転送装置を提供することである。
本発明の第1態様のデータ転送装置は、要求元からのデータ転送要求に基づいて、転送元記憶領域のデータを転送先記憶領域に転送するデータ転送装置において、装置に内蔵された一次記憶領域と、前記転送元記憶領域と前記一次記憶領域との間に設けられた第1アライナと、前記一次記憶領域と前記転送先記憶領域との間に設けられた第2アライナを備え、前記第1アライナは、前記一次記憶領域の先頭位置以降に転送元記憶領域のデータを連続して格納するようにシフト処理を行い、前記第2アライナは、前記データ転送要求で指定された転送先記憶領域の先頭位置以降に前記一次記憶領域のデータを格納するようにシフト処理を行う、ことを特徴とするデータ転送装置である。
ここで、データ転送処理が始まってから、バスを使用する優先度の高い他の処理による割り込みが発生した場合、その割り込みが転送元記憶領域から一次記憶領域へのデータ転送処理の終了までに発生していると、その一次記憶領域へのデータ転送処理が終了した時点でバスが空くので、そのデータ転送処理が終わるまで待つことなく、その優先度の高い他の処理を実行することができる。
本発明の第2態様のデータ転送装置は、要求元からのデータ転送要求に基づいて、転送元記憶領域のデータを転送先記憶領域に転送するデータ転送装置において、装置に内蔵された一次記憶領域と、前記転送元記憶領域と前記一次記憶領域との間に設けられたアライナを備え、前記アライナは、前記データ転送要求で指定された転送先領域の先頭位置に対応する前記一次記憶領域の位置以降に転送元記憶領域のデータを連続して格納するようにシフト処理を行い、前記一次記憶領域に格納されるデータは、前記一次記憶領域から前記転送先記憶領域にそのまま転送される、ことを特徴とするデータ転送装置である。
本発明の第3態様のデータ転送装置は、要求元からのデータ転送要求に基づいて、転送元記憶領域のデータを転送先記憶領域に転送するデータ転送装置において、装置に内蔵された一次記憶領域と、前記一次記憶領域と前記転送先記憶領域との間に設けられたアライナを備え、前記転送元記憶領域のデータは、前記転送元記憶領域から前記一次記憶領域にそのまま転送され、前記アライナは、前記データ転送要求で指定された転送先領域の先頭位置以降に前記一次記憶領域に格納された転送元領域のデータを連続して格納するようにシフト処理を行う、ことを特徴とするデータ転送装置である。
本発明によれば、内蔵RAMへのデータの格納が終了したタイミング、または、転送先記憶領域へのその回のデータの格納が終了したタイミングでバスが空くので、待機中の他のバス処理をパイプライン的に実行できる。
また、本発明によれば、DMA転送実行中のデータのアライメントの入れ替えや、アドレス操作はハードウェアで処理するため、DMA転送処理が高速に行える。
また、本発明によれば、内蔵RAMおよび設定レジスタ部をデータ転送装置内に設けることにより、内蔵RAMおよび設定レジスタ部に直接アクセスできなくなるため、そのデータ転送装置の耐タンパ性、すなわち、非正規な手段によるデータ読み取りを防ぐ能力を向上させることができる。
以下、本発明の実施の形態を、図面を参照しながら詳細に説明する。
図1は、本発明の各実施形態に共通するDMAコントローラ(データ転送装置)を含む全体構成を示すブロック図である。
図1において、DMAコントローラ1は、CPU2からのデータ転送要求に基づいて、転送元記憶領域3のデータをバス5を介して転送先記憶領域4にDMA転送する。
転送元記憶領域3としては、RAM(Random Access Memory)、通信FIFO(First-In First-Out)、ROM(Read Only Memory)、等が考えられる。また、転送先記憶領域4としては、RAM、通信FIFO、等が考えられる。
図2は、本発明の第1実施形態のデータ転送装置(DMAコントローラ)10の構成を示すブロック図である。
図2において、データ転送装置(DMAコントローラ)10は、RAM11と、転送制御部12を備える。転送制御部12は、RAM11への書き込み時にデータ長L1のデータが書き込まれる第1データ記憶部13、第2データ記憶部14、第3データ記憶部15、RAM11からの読み出し時にデータ長L2のデータが書き込まれる第4データ記憶部16、第5データ記憶部17、第6データ記憶部18を備える。
データ長L1は、例えばデータ長L2に一致するが、データ長L1とL2が一致しない場合もある。
RAM11は、データ転送装置10に内蔵される。本実施形態においては、CPU2からのデータ転送要求に基づいて実行されるDMA転送において、転送元記憶領域3からのデータは、まず、RAM11に書き込まれる。そして、その後、RAM11から転送先記憶領域4へのデータ転送が実行される。
すなわち、転送元記憶領域3から読み出されたデータ長L1のデータは、第1データ記憶部13に書き込まれる。第1データ記憶部13は、保持するデータ長L1を持つデータを第2データ記憶部14に出力する。転送制御部12は、データの読み出し元(転送元記憶領域3)と書き込み先(RAM11)アドレスを基に、第1データ記憶部13と第2データ記憶部14から第3データ記憶部15へのデータ書き込み時のシフトパターン(並べ替えパターン)を決定する。そして、転送制御部12は、その決定されたシフトパターンを基に、第1データ記憶部13と第2データ記憶部14から第3データ記憶部15へのデータ書き込みを実行する。第3データ記憶部15は、保持するデータ長L1のデータをRAM11に出力する。
また、RAM11から読み出されたデータ長L2のデータは、第4データ記憶部16に書き込まれる。第4データ記憶部16は、保持するデータ長L2を持つデータを第5データ記憶部17に出力する。転送制御部12は、データの読み出し元(RAM11)と書き込み先(転送先記憶領域4)アドレスを基に、第4データ記憶部16と第5データ記憶部17から第6データ記憶部18へのデータ書き込み時のシフトパターン(並べ替えパターン)を決定する。そして、転送制御部12は、その決定されたシフトパターンを基に、第4データ記憶部16と第5データ記憶部17から第6データ記憶部18へのデータ書き込みを実行する。第6データ記憶部18は、保持するデータ長L2のデータを転送先記憶領域4に出力する。
RAM11へのデータ書き込みの場合、図2の第1データ記憶部13は、図8A〜図8Dの「リードデータバス上のデータ受け初段(FF)」に対応し、第2データ記憶部14は、図8A〜図8Dの「リードデータバス上のデータ受け2段目(FF)」に対応し、第3データ記憶部15は、図8A〜図8Dの「内蔵RAM書き込み(FF)」に対応する。
また、図2の転送制御部12は、図3の内蔵RAMコントローラ22、バスマスタインタフェース部23、FF24、25、28、29の組み合わせに対応する。図2の第1データ記憶部13は、例えば、図3のFF24に対応する。図2の第2データ記憶部14は、例えば、図3のバスマスタインタフェース部23内に設けられるが、内蔵RAMコントローラ22内に設けることもできる。図2の第3データ記憶部15は、例えば、図3のFF25に対応する。
図2の第4データ記憶部16は、例えば、図3のFF28に対応する。図2の第5データ記憶部17は、例えば、図3のバスマスタインタフェース部23内に設けられるが、内蔵RAMコントローラ22内に設けることもできる。図2の第6データ記憶部18は、例えば、図3のFF29に対応する。
図3は、図2のDMAコントローラ10のより具体的なハードウェア構成を示すブロック図である。
図3において、DMAコントローラ10は、内蔵RAM11、内蔵RAMコントローラ22、バスマスタインタフェース部23、フリップフロップ(以下、FF)24、25、28、29、設定レジスタ部31、バススレーブインタフェース部32、から構成される。
CPU2からのデータ転送要求は、バススレーブインタフェース部32を介して設定レジスタ部31に書き込まれる。転送元記憶領域3からのデータは、FF24、バスマスタインタフェース部23、内蔵RAMコントローラ22、FF25を介して、内蔵RAM11に書き込まれる。また、内蔵RAM11に書き込まれたデータは、FF28、内蔵RAMコントローラ22、バスマスタインタフェース部23、FF29を介して、転送先記憶領域4に書き込まれる。
なお、図中、信号HGRANTは、バスの使用を調整するアービタ(不図示)からDMAコントローラ10に出力される、バスへのアクセス権を付与する信号である。この信号HGRANTは、バスマスタインタフェース部23からアービタに対し出力される、バスの使用を要求する信号HBUSREQ(図中は不図示)に対応してアービタからDMAコントローラ10に出力される信号である。また、信号HREADYは、アービタからDMAコントローラ10に出力されるDMA転送処理が終了したことを示す信号である。
内蔵RAM11のサイズは、用途に応じて設定される。この内蔵RAM11のサイズとしては、Ethernet(登録商標)の最大フレームサイズ(約1.5KB)等が考えられる。
なお、バスマスタインタフェース部23、内蔵RAMコントローラ22はいずれもステートマシンを有するが、互いに独立して動作する訳ではなく、バスマスタインタフェース部23のステートマシンが内蔵RAMコントローラ22のステートマシンの上位に位置する。すなわち、内蔵RAMコントローラ22のステートマシンは、バスマスタインタフェース部23のステートマシンから呼び出されるサブステートマシンということができる。
図4は、本発明の第1実施形態のデータ転送装置(DMAコントローラ)の構成を示すブロック図を、転送元記憶領域、転送先記憶領域とともに示した図である。
図4では、第1実施形態のデータ転送装置(DMAコントローラ)10の構成が機能ブロックとして示されている。図3のFF24、バスマスタインタフェース部23、内蔵RAMコントローラ22、FF25の組み合わせにより、転送元記憶領域3と内蔵RAM11の間に設けられた第1アライナ41が構成される。また、図3のFF28、内蔵RAMコントローラ22、バスマスタインタフェース部23、FF29の組み合わせにより、内蔵RAM11と転送先記憶領域4の間に設けられた第2アライナ42が構成される。なお、第1アライナ41は、図2の転送制御部12、第1データ記憶部13、第2データ記憶部14、第3データ記憶部15の組み合わせに対応し、第2アライナ42は、図2の転送制御部12、第4データ記憶部16、第5データ記憶部17、第6データ記憶部18の組み合わせに対応する。
第1アライナ41は、内蔵RAM11の先頭位置以降に転送元記憶領域3のデータを連続して格納するようにシフト処理を行い、第2アライナ42は、CPUからのデータ転送要求で指定された転送先記憶領域4の先頭位置以降に内蔵RAM11に格納されたデータを格納するようにシフト処理を行う。
設定レジスタ部31は、例えば、前回のDMA転送処理が終わるタイミングにその内容(データ転送要求)をクリアする。そして、新たなCPUからのデータ転送要求が設定レジスタ部31に上書きされると、ハードウェア上の処理によって、転送元記憶領域3のいくつの不連続な領域にデータが分散しているかを示す分散データ数と、分散しているデータのデータサイズの総和である総データ長を算出し、分散データ数用レジスタ、総データ長用レジスタに算出結果を設定する。
分散データ数や総データ長のように、通常、ソフトウェアの処理によって算出する量をハードウェアを用いて算出することで、本実施形態では、DMA転送処理を一層高速に行うことができる。
図5は、本発明の第1実施形態のDMA転送処理のフローチャートである。この処理は、図3のデータ転送装置(DMAコントローラ)10によって実行される。
CPUからのデータ転送要求が設定レジスタ部31に上書きされたことをトリガとして、一連の処理が開始される。なお、このデータ転送処理で転送されるデータは、転送元記憶領域3の不連続な領域に分散しているものとする。また、このフローチャートの処理では、バス幅を32bit(=1ワード)としている。
まず、ステップS101で、バスマスタインタフェース部23によって、設定レジスタ部31に設定された転送対象のデータのうちの先頭のデータの転送元アドレス、転送サイズがリードされる。
続く、ステップS102で、内蔵RAMコントローラ22によって、リードされた転送元アドレスの下位(末尾)2ビットと、内蔵RAM11上の転送先アドレスの下位2ビットを基に、第1アライナ41が備える第1データ記憶部13および第2データ記憶部14から第3データ記憶部15へのデータ書き込み時のシフトパターンである並べ替えパターンが決定される。
ステップS103では、バスマスタインタフェース部23および内蔵RAMコントローラ22によって、決定された並べ替えパターンにしたがった第1アライナ41による並べ替えを介して、転送元記憶領域3から内蔵RAM11へデータがDMA転送される。
このDMA転送処理では、第1アライナ41内の第1データ記憶部13(例えば、FF24)にラッチされているデータを第2データ記憶部14にラッチする第1のデータラッチ処理と、図6に示すように、転送元記憶領域3から第1アライナ41内の第1データ記憶部13へ、データを常にワード単位で転送して、その第1データ記憶部13にラッチする第2のデータラッチ処理と、決定された並べ替えパターンを基に、第1アライナ41内の第1データ記憶部13および第2データ記憶部14から第3データ記憶部15(例えば、FF25)にデータを書き込むデータ書き込み処理が実行される。なお、第3データ記憶部15に書き込まれたデータは、第3データ記憶部15から内蔵RAM11に出力される。
続く、ステップS104では、バスマスタインタフェース部23によって、現在転送しているデータの転送が完了したかが判定される。すなわち、ステップS101でリードされた転送サイズ(バイト単位)からステップS103で内蔵RAM11に書き込まれた有効データ数が減算され、その減算結果が「0」より大きいかが判定される。
ステップS104で、現在転送しているデータの転送が完了していないと判定された場合、ステップS103に戻り、再度、その決定された並べ替えパターンにしたがった並べ替えを介して、転送元記憶領域3から内蔵RAM11へデータがDMA転送される。
ステップS104で、現在転送しているデータの転送が完了したと判定された場合、ステップS105で、バスマスタインタフェース部23によって、転送すべきデータの組がすべて完了したかが判定される。すなわち、ステップS105に制御が移る毎に、転送されるデータが転送元記憶領域3のいくつの不連続な領域に分散しているかを示す分散データ数を1ずつ減算し、その減算結果が「0」であるかどうかを判定する。
ステップS105で、転送すべきデータの組がすべて完了していないと判定された場合、ステップS101に戻る。ステップS101では、バスマスタインタフェース部23によって、設定レジスタ部31に設定された転送対象のデータのうちの次のデータの転送元アドレス、転送サイズがリードされる。
ステップS105で、転送すべきデータの組がすべて完了したと判定された場合、その時点で、バスを使用する、より優先度の高い他の処理が実行待ちの状態でなければ、ステップS106に進んで、内蔵RAM11から転送先記憶領域4へのDMA転送処理を実行する。
また、その時点ではバスが空いているので、より優先度の高い他の処理が実行待ちの状態であれば、そのより優先度の高い他の処理を実行させてから、ステップS106に進む。
より具体的には、次のような場合がある。
1.CPU2は、DMA転送指示を1回だけ出す場合。この場合、DMAコントローラ10側で、この1回の転送指示を基に、転送元記憶領域3から内蔵RAM11、内蔵RAM11から転送先記憶領域4までのDMA転送処理を実行する。
2.CPU2は、転送元記憶領域3から内蔵RAM11へのデータ転送、内蔵RAM11から転送先記憶領域4へのデータ転送、それぞれについてその都度、転送指示を出す場合。
上記1.の場合、DMAコントローラ10は、内蔵RAM11までのデータ転送処理が完了すると、その内蔵RAM11までのデータ転送処理が完了したことを示す割り込みをCPU2に出力する。CPU2は、その割り込みを受け取った時点で、バスを使用する、より優先度の高い他の処理(バス処理)が実行待ちの状態でない場合は、そのまま何もしない。この場合、DMAコントローラ10は、内蔵RAM11から転送先記憶領域4までのデータ転送処理に移る。一方、CPU2は、その割り込みを受け取った時点で、バス処理が実行待ちの状態の場合、CPU2は、DMAコントローラ10に対し、DMA転送処理を中断する指示を出すとともに、そのバス処理に起動指示を出す。その後、そのバス処理が完了したことを示す割り込みをCPU2は受け取ると、CPU2は、DMAコントローラ10に対し、DMA転送処理を再開する指示を出す。
上記2.の場合、DMAコントローラ10は、内蔵RAM11までのデータ転送処理が完了すると、その内蔵RAM11までのデータ転送処理が完了したことを示すフラグを、DMAコントローラ10内の予め決められたレジスタ(不図示)に設定する。CPU2は、そのレジスタのフラグを参照する。その参照が行われた時点で、バス処理が実行待ちの状態でない場合、CPU2は、DMAコントローラ10に対し、内蔵RAM11から転送先記憶領域4までのDMA転送処理の実行指示を出す。一方、その参照が行われた時点で、バス処理が実行待ちの状態の場合、CPU2は、そのバス処理に起動指示を出す。その後、そのバス処理が完了したことを示す割り込みをCPU2は受け取ると、CPU2は、DMAコントローラ10に対し、内蔵RAM11から転送先記憶領域4までのDMA転送処理の実行指示を出す。
内蔵RAM11から転送先記憶領域4へのDMA転送処理(ステップS106〜ステップS115の処理)について以下に説明する。
まず、ステップS106で、バスマスタインタフェース部23によって、転送先記憶領域4における転送先アドレスの下位2ビットが参照され、その値によって処理が分岐する。
ステップS106で転送先アドレスの下位2ビットが「01」または「11」であると判定された場合、ステップS107で、転送先アドレスの下位2ビットを基に、第2アライナ42が備える第4データ記憶部16(例えば、FF28)および第5データ記憶部17から第6データ記憶部18(例えば、FF29)へのデータ書き込み時のシフトパターンである並べ替えパターンが決定される。そして、バスマスタインタフェース部23および内蔵RAMコントローラ22によって、決定された並べ替えパターンにしたがった第2アライナ42による並べ替えを介して、内蔵RAM11から転送先記憶領域4へ対象となる1バイト分のデータがDMA転送される。
なお、ステップS107以降の処理の説明では、第5データ記憶部17に第4データ記憶部16のデータをラッチする第1のデータラッチ処理や、内蔵RAM11からのワード単位のデータを第4データ記憶部16にラッチする第2のデータラッチ処理については説明を省略する。これらのラッチ処理は、先頭や末尾に3バイトのデータが残った場合、すなわち、ステップS107からステップS109に進む場合、ステップS115からステップS113に進む場合、を除いては、各ステップのDMA転送処理の間に実行される。各ステップのDMA転送処理において、転送された有効データのバイト数は総データ長から減算される。減算結果の値は、ステップS111やステップS112の判定で用いられる。
続く、ステップS108では、バスマスタインタフェース部23によって、転送先アドレスの下位2ビットの上位側、すなわち、daddr[1]が「0」であるかが判定される。
ステップS108で、その転送先アドレスの下位2ビットの上位側が「0」でないと判定された場合、ステップS109において、ステップS107で決定された並べ替えパターン中の未転送のハーフワード分のデータについて転送先記憶領域4へのDMA転送が実行され、ステップS110に進む。
ステップS108で、その転送先アドレスの下位2ビットの上位側が「0」であると判定された場合、ステップS110に進む。
ステップS106で転送先アドレスの下位2ビットが「10」であると判定された場合、ステップS109で、転送先アドレスの下位2ビットを基に、第2アライナ42が備える第4データ記憶部16(例えば、FF28)および第5データ記憶部17から第6データ記憶部18(例えば、FF29)へのデータ書き込み時のシフトパターンである並べ替えパターンが決定される。そして、バスマスタインタフェース部23および内蔵RAMコントローラ22によって、決定された並べ替えパターンにしたがった第2アライナ42による並べ替えを介して、内蔵RAM11から転送先記憶領域4へ対象となるハーフワード分のデータがDMA転送される。そして、ステップS110に進む。
ステップS106で転送先アドレスの下位2ビットが「00」であると判定された場合、ステップS110に進む。
ステップS110では、ステップS106から制御が移った場合は、転送先アドレスの下位2ビットを基に、並べ替えパターンを決定する。それ以外のステップS108、S109、等のステップS106以外のステップからステップS110に制御が移った場合は、並べ替えパターンは既に決定しているので、並べ替えパターンの決定処理は行わない。そして、バスマスタインタフェース部23および内蔵RAMコントローラ22によって、決定された、または、既に決定している並べ替えパターンにしたがった第2アライナ42による並べ替えを介して、内蔵RAM11から転送先記憶領域4へ対象となる1ワード分のデータがDMA転送される。
ステップS111では、バスマスタインタフェース部23によって、転送データのうち、未転送のデータのバイト数が4バイト以上あるかが判定される。
ステップS111で、未転送のデータのバイト数が4バイト以上あると判定された場合、ステップS110に戻り、対象となる1ワード分のデータに対するDMA転送が実行される。
一方、ステップS111で、未転送のデータのバイト数が4バイト未満であると判定された場合、ステップS112で、バスマスタインタフェース部23によって、未転送のデータのバイト数が判定され、その判定結果により処理が分岐される。
ステップS112で、未転送のデータのバイト数が「00(0バイト)」と判定された場合、一連の処理を終了する。
ステップS112で、未転送のデータのバイト数が「01(1バイト)」と判定された場合、ステップS113で、バスマスタインタフェース部23および内蔵RAMコントローラ22によって、既に決定している並べ替えパターンにしたがった第2アライナ42による並べ替えを介して、内蔵RAM11から転送先記憶領域4へ対象となる1バイト分のデータがDMA転送され、一連の処理を終了する。
ステップS112で、未転送のデータのバイト数が「10(2バイト)」または「11(3バイト)」と判定された場合、ステップS114で、バスマスタインタフェース部23および内蔵RAMコントローラ22によって、既に決定している並べ替えパターンにしたがった第2アライナ42による並べ替えを介して、内蔵RAM11から転送先記憶領域4へ対象となるハーフワード分のデータがDMA転送される。ステップS112で、未転送のデータのバイト数が「11(3バイト)」と判定された場合、まず、ハーフワード分のデータが転送されるのは、その3バイト分のデータが内蔵RAM11上で左詰めに格納されているからである。
ステップS114に続く、ステップS115では、バスマスタインタフェース部23によって、未転送のデータのバイト数が「01(1バイト)」であるかが判定される。
ステップS115では、未転送のデータのバイト数が「01(1バイト)」でないと判定された場合、一連の処理を終了する。
ステップS115では、未転送のデータのバイト数が「01(1バイト)」であると判定された場合、ステップS113で、バスマスタインタフェース部23および内蔵RAMコントローラ22は、ステップS114で未転送だった1バイト分のデータについて、内蔵RAM11から転送先記憶領域4へDMA転送を実行し、一連の処理を終了する。
図7は、第2アライナから転送先記憶領域へのデータ転送を説明する図である。
図7に示すように、転送されるデータの先頭部分や末尾部分では、ワード転送以外のバイト転送やハーフワード転送が発生し得る。
図8A〜図8Dは、アライナが備える第1および第2データ記憶部から書き込み先(第3データ記憶部)へのデータ書き込み時のシフトパターンである並べ替えパターンを示す図である。この並べ替えパターンは、上記したように、転送元アドレスの下位2ビットと、転送先アドレスの下位2ビットによって決定される。なお、これらの図中、第1データ記憶部は「リードデータバス上のデータ受け初段(FF)」、第2データ記憶部は「リードデータバス上のデータ受け2段目(FF)」、第3データ記憶部は「内蔵RAM書き込み(FF)」と表記されている。
本実施形態の場合、並べ替えパターンは全部で16パターンあり、そのうちの4パターンが、図8A、図8B、図8C、図8Dにそれぞれ示されている。
図8Aは書き込み先(内蔵RAM11または転送先記憶領域4)アドレスの下位2ビットが「00」の場合、図8Bは書き込み先アドレスの下位2ビットが「01」の場合、図8Cは書き込み先アドレスの下位2ビットが「10」の場合、図8Dは書き込み先アドレスの下位2ビットが「11」の場合、の並べ替えパターンをそれぞれ示している。
図8A、図8B、図8C、図8Dのいずれの図も、データの読み出し元アドレス(ソースアドレス)の下位2ビットが「00」の場合を1行目、「01」の場合を2行目、「10」の場合を3行目、「11」の場合を4行目に示している。
図9は、初段FF(FF24またはFF28)に有効データを受けた場合、転送先(第3データ記憶部15または第6データ記憶部18)へ書き込みを1サイクル後に行うか2サイクル後に行うかを示す図である。
図9では、転送先として内蔵RAM11が想定されている。
図9において、sadd[1:0]は転送元下位2ビットを、RAM_add[1:0]は転送先のRAMの下位2ビットを示している。例えば、sadd[1:0]=00とRAM_add[1:0]=00とが交差する位置での書き込みタイミングを示す値は「2」になっているので、図8Aの第1行に示す並べ替えパターンは、初段FFに有効データを受けた2サイクル後に転送先へ書き込みを行うパターンとなっている。
また、例えば、sadd[1:0]=00とRAM_add[1:0]=01とが交差する位置での書き込みタイミングを示す値は「1」になっているので、図8Bの第1行に示す並べ替えパターンは、初段FFに有効データを受けた1サイクル後に転送先へ書き込みを行うパターンとなっている。
図4のデータ(データa、データb、データc)が転送元記憶領域3から内蔵RAM11に転送される様子を図10Aおよび図10Bを用いて説明する。
まず、バスマスタインタフェース部23によって、設定レジスタ部31に設定された転送対象のデータのうちの先頭のデータであるデータaの転送元アドレス、転送サイズがリードされる。
第1実施形態の場合、内蔵RAM11の先頭からデータは書き込まれるので、書き込み先アドレスの下位2ビットは「00」に初期化されている。また、データaの転送元記憶領域3での先頭位置の下位2ビットは「01」である。これにより、図8Aの第2行の並び替えパターンが第1アライナ41が備える第1データ記憶部13および第2データ記憶部14から第3データ記憶部(図10Aでは不図示)15へのデータ書き込み時のシフトパターンとして決定される。
図10Aに先立って、第1データ記憶部13にラッチされているデータを第2データ記憶部14にラッチする第1のデータラッチ処理が実行されるが、この時点では、第1データ記憶部13に有効データはラッチされていないので、このラッチ処理の結果として第2データ記憶部14にも有効データはラッチされない。
続いて、図10Aの(1)で、転送元記憶領域3から第1データ記憶部13へのワード単位のデータ転送により、1ワード分のデータ「?,a1,a2,a3」を、その第1データ記憶部13でラッチする第2のデータラッチ処理が実行される。ここで、「?」、「a1」、「a2」、「a3」はいずれも1バイトのデータを示している。このうち、「?」は、有効データでないデータである。残りの「a1」以降のデータは有効データである。
上記図8Aの第2行の並び替えパターンに対応する図9中の位置、すなわち、sadd[1:0]=01とRAM_add[1:0]=00とが交差する位置では、書き込みタイミングを示す値は「2」になっている。このため、図8Aの第2行に示す並べ替えパターン(データaの書き込み時に使用する並べ替えパターン)は、第1データ記憶部13に有効データをラッチした2サイクル後に転送先(内蔵RAM11)へ書き込みを行うパターンとなっている。したがって、この時点では、内蔵RAM11への書き込みは開始されない。
続いて、(2)で、第1データ記憶部13にラッチされているデータを第2データ記憶部14にラッチする第1のデータラッチ処理が実行される。このラッチ処理によって、第2データ記憶部14の内容が「?,a1,a2,a3」に変更される。また、転送元記憶領域3から第1データ記憶部13への(次の)ワード単位のデータ転送により、1ワード分のデータ「a4,a5,a6,?」を、その第1データ記憶部13でラッチする第2のデータラッチ処理が実行される。
この時点で、有効データ(「?,a1,a2,a3」)が第1データ記憶部13にラッチされてから2サイクル後となり、(3)で、図8Aの第2行の並び替えパターンを基に、第1データ記憶部13および第2データ記憶部14から不図示の第3データ記憶部15へデータの書き込みが実行され、その後、第3データ記憶部15から内蔵RAM11へデータが書き込まれる。
(4)では、第1データ記憶部13にラッチされているデータを第2データ記憶部14にラッチする第1のデータラッチ処理が実行される。このラッチ処理によって、第2データ記憶部14の内容が「a4,a5,a6,?」に変更される。なお、この時点では、データaを第1データ記憶部13を介してすべて読み込み済みであるが、内蔵RAM11へのデータaの書き込みは終了していない。このような場合、転送元記憶領域3から第1データ記憶部13への(次の)ワード単位のデータ転送は行われない。
そして、(5)で、図8Aの第2行の並び替えパターンを基に、第1データ記憶部13および第2データ記憶部14から(第3データ記憶部15を介して)内蔵RAM11へデータの書き込みが実行される。図10Aに示すように、この内蔵RAM11へのデータの書き込みにおける書き込み先アドレス(書き込み開始位置)は、前回、すなわち、(3)の内蔵RAM11へのデータ書き込みにおける有効データが書き込まれた末尾位置の次の位置である。
上述したように、DMAコントローラ11は、内蔵RAM11へのデータ書き込みを行う毎に、その回に書き込んだ有効データ数(バイト数)をリードしたデータサイズから減算している。よって、図10Aに示す(5)の書き込みが完了した状態で、内蔵RAM11上の「a6」を書き込んだ位置で、データaの書き込みが完了したことをDMAコントローラ11側では認識している。すなわち、内蔵RAM11に次に書き込むデータの書き込み先アドレスは、内蔵RAM11上の「a6」を書き込んだ位置の次の位置である。
以上の(1)〜(5)の処理によって、データaの内蔵RAM11への書き込みが終了したと判断され、次のデータであるデータbの処理が開始される。
まず、バスマスタインタフェース部23によって、設定レジスタ部31に設定された転送対象のデータのうちの次のデータであるデータbの転送元アドレス、転送サイズがリードされる。
データbの内蔵RAM11への書き込みによって、内蔵RAM11への書き込み先アドレスの下位2ビットは「10」に設定されている。これは、内蔵RAM11上の「a6」を書き込んだ位置の次の位置に対応する下位2ビットの値である。また、データbの転送元記憶領域3での先頭位置の下位2ビットは「01」である。これにより、図8Cの第2行の並び替えパターンが第1アライナ41が備える第1データ記憶部13および第2データ記憶部14から第3データ記憶部(図10Bでは不図示)15へのデータ書き込み時の並べ替えパターンとして決定される。
図10Bの(6)で、次のデータであるデータbの第1データ記憶部13への第2のデータラッチ処理が開始される。なお、(6)の直前の状態では、第1データ記憶部13と第2データ記憶部14にラッチされるデータがいずれも「a4,a5,a6,?」である。このため、この第2のデータラッチ処理の直前の第1のデータラッチ処理において、第1データ記憶部13のデータを第2データ記憶部14にラッチしても、第2データ記憶部14の内容は変更されない。
そして、(6)の第2のデータラッチ処理によって、第1データ記憶部13の内容が「?,b1,b2,b3」に変更される。
上記図8Cの第2行の並び替えパターンに対応する図9中の位置、すなわち、sadd[1:0]=01とRAM_add[1:0]=10とが交差する位置では、書き込みタイミングを示す値は「1」になっている。このため、図8Cの第2行に示す並べ替えパターン(データbの書き込み時に使用する並べ替えパターン)は、第1データ記憶部13に有効データを受けた1サイクル後に転送先(内蔵RAM11)へ書き込みを行うパターンとなっている。
すなわち、次の(7)で、図8Cの第2行の並び替えパターンを基に、第1データ記憶部13および第2データ記憶部14から不図示の第3データ記憶部15へデータの書き込みが実行され、その後、第3データ記憶部から内蔵RAM11へデータが書き込まれる。
DMAコントローラ11側では、前回のデータaの書き込みで、内蔵RAM11の「a6」の位置まで有効データが書き込まれたことを把握している。したがって、(7)のうち、破線で示される書き込みは、有効データを上書きするものとして例えばマスク処理が行われて禁止される。
そして、(8)で、第1データ記憶部13にラッチされているデータを第2データ記憶部14にラッチする第1のデータラッチ処理が実行される。このラッチ処理によって、第2データ記憶部14の内容が「?,b1,b2,b3」に変更される。なお、この時点では、データbを第1データ記憶部13を介してすべて読み込み済みであるが、内蔵RAM11へのデータbの書き込みは終了していない。このような場合、転送元記憶領域3から第1データ記憶部13への(次の)ワード単位のデータ転送は行われない。
そして、(9)で、図8Cの第2行の並び替えパターンを基に、第1データ記憶部13および第2データ記憶部14から(不図示の第3データ記憶部を介した)内蔵RAM11へデータの書き込みが実行される。図10Bに示すように、この内蔵RAM11へのデータの書き込みにおける書き込み先アドレス(書き込み開始位置)は、前回、すなわち、(7)の内蔵RAM11へのデータ書き込みにおける有効データが書き込まれた末尾位置の次の位置である。
上述したように、DMAコントローラ11は、内蔵RAM11へのデータ書き込みを行う毎に、その回に書き込んだ有効データ数(バイト数)をリードしたデータサイズから減算している。よって、図10Bに示す(9)の書き込みが完了した状態で、内蔵RAM11上の「b3」を書き込んだ位置で、データbの書き込みが完了したことをDMAコントローラ11側では認識している。すなわち、内蔵RAM11に次に書き込むデータの書き込み先アドレスは、内蔵RAM11上の「b3」を書き込んだ位置の次の位置である。
後続のデータ(データc)についても同様に処理が行われる。
内蔵RAM11に格納された図4のデータ(データa、データb、データc)が、内蔵RAM11から転送先記憶領域4に転送される様子を図11Aおよび図11Bを用いて説明する。
まず、バスマスタインタフェース部23によって、設定レジスタ部31に設定された転送先記憶領域4の転送先アドレスがリードされる。
上述の図10Aおよび図10Bに示される処理によって、内蔵RAM11の先頭位置以降に連続して書き込まれた、転送元記憶領域3からのデータ(データa、データb、データc)は、今回の転送処理で、内蔵RAM11から読み出され、第2アライナ42を介して、転送先記憶領域4に書き込まれる。
今回の転送処理では、内蔵RAM11はデータの読み出し元になる。内蔵RAM11の読み出し元アドレスの下位2ビットは、第1実施形態では、常に「00」である。よって、第1実施形態における、内蔵RAM11から転送先記憶領域4へのデータ転送時に用いる並べ替えパターンは、転送先記憶領域4の書き込み先アドレスの下位2ビットが「00」、「01」、「10」、「11」のいずれであるかによって、4通り存在することになる。
図12は、第1実施形態の内蔵RAM11から転送先記憶領域4へのデータ転送時に用いる並べ替えパターンを示す図である。この並べ替えパターンは、図8A〜図8Dから、それぞれ第2行を抽出することで得られる。以降の説明では、書き込みタイミングを示す図9との対応がより明確であるという理由から、この転送処理においても、図8A〜図8Dを用いて説明する。
転送するデータ(データa+データb+データc)の内蔵RAM11での先頭位置の下位2ビットは「00」である。また、転送先記憶領域4の書き込み先アドレスの下位2ビットは、この場合、「01」である。これにより、図8Bの第1行の並び替えパターンが第2アライナ42が備える第4データ記憶部16(例えば、FF28)および第5データ記憶部17から第6データ記憶部18(例えば、FF28、図11Aでは不図示)への書き込み時のシフトパターンとして決定される。第6データ記憶部18に書き込まれたデータは、転送先記憶領域4に出力される。
図11Aに先立って、第4データ記憶部16にラッチされているデータを第5データ記憶部17にラッチする第1のデータラッチ処理が実行されるが、この時点では、第4データ記憶部16に有効データはラッチされていないので、このラッチ処理の結果として第5データ記憶部17にも有効データはラッチされない。
続いて、図11Aの(1)で、内蔵RAM11から第4データ記憶部16へのワード単位のデータ転送により、1ワード分のデータ「a1,a2,a3,a4」を、その第4データ記憶部16でラッチする第2のデータラッチ処理が実行される。
上記図8Bの第1行の並び替えパターンに対応する図9中の位置、すなわち、sadd[1:0]=00とRAM_add[1:0]=01とが交差する位置では、書き込みタイミングを示す値は「1」になっている。このため、図8Bの第1行に示す並べ替えパターン(転送するデータの転送先記憶領域4への書き込み時に使用する並べ替えパターン)は、第4データ記憶部16に有効データを受けた1サイクル後に転送先(転送先記憶領域4)へ書き込みを行うパターンとなっている。このため、次のサイクル、すなわち、(2)で、転送先記憶領域4への書き込みが実行される。この書き込み処理では、1バイト分の「a1」のデータのDMA転送処理が実行される。なお、転送先記憶領域4は、内蔵RAM11とは異なり、DMA転送用のデータを一時的に記憶する領域ではない。このため、並べ替えパターンに基づく書き込みによって、転送先記憶領域4内の転送されるデータが書き込まれる範囲を外れた場所に、データが上書きされることがあってはならない。
このため、(2)では、第5データ記憶部17からの適正範囲を外れたデータの書き込みを禁止している。
続く、(3)では、第4データ記憶部16および第5データ記憶部17の状態は(2)と同じ状態に保ちつつ、(2)で書き込まなかった残りのデータ、すなわち、ハーフワード分の「a2」と「a3」のデータの転送先記憶領域4へのDMA転送処理が実行される。
図11Bに移り、続く、(4)では、第4データ記憶部16のデータ(「a1,a2,a3,a4」)を第5データ記憶部17にラッチする第1ラッチ処理と、内蔵RAM11からの次の1ワード分のデータ(「a5,a6,b1,b2」)を第4データ記憶部16でラッチする第2ラッチ処理とが実行される。
この例では、転送されるデータは、「a1,a2,a3,a4,a5,a6,b1,b2,b3,c1,c2,c3,c4,c5」である。よって、14バイトのデータが内蔵RAM11から転送先記憶領域4に転送されることになる。この時点では、「a1,a2,a3」のデータが転送先記憶領域4に書き込まれているので、未転送データのバイト数=「11バイト」である。この値は「1ワード=4バイト」より大きいので、続く、(5)で、決定された図8Bの第1行の並び替えパターンを基に、1ワード分のデータ転送が実行される。
以下、同様に処理が続くが、転送されるデータの末尾付近での処理について説明する。
(6)では、転送されるデータの末尾を含む1ワード分のデータ(「c4,c5,?,?」)が第4データ記憶部16にラッチされている。前回までの転送先記憶領域4への書き込み処理によって、転送先記憶領域4には、「a1,a2,a3,a4,a5,a6,b1,b2,b3,c1,c2」の11バイト分のデータを転送済みである。つまり、この時点では、未転送データのバイト数=「3バイト」である。この値は「1ワード=4バイト」未満なので、続く、(7)で、決定された図8Bの第1行の並び替えパターンを基に、この3バイトのうちのハーフワード分のデータ(「c3,c4」)のデータ転送が実行される。そして、(8)で、この3バイトの残りの1バイトである(「c5」)のデータを転送して内蔵RAM11から転送先記憶領域4へのDMA転送処理が終了する。
なお、転送先記憶領域4上のデータ末尾位置(「c5」)以降の図8Bの第1行の並び替えパターンに基づくデータ書き込みは適正範囲外の書き込みとなり禁止される。
図13は、第1実施形態の効果を説明する図である。
図13の上側は、第1実施形態のDMA転送処理の流れを、下側は、従来技術のDMA転送処理の流れをそれぞれ示している。
第1実施形態の場合、DMA転送処理が始まってから、バスを使用する優先度の高い他の処理による割り込みが発生した場合、その割り込みが転送元から内蔵RAMへのデータ転送処理の終了までに発生していると、その内蔵RAMへのデータ転送処理が終了した時点(図中、t1の時点)でバスが空くので、その優先度の高い他の処理を実行することができる。
これに対し、従来技術の場合、DMA転送処理が始まってから、バスを使用する優先度の高い他の処理による割り込みが発生した場合、そのDMA転送処理が終了した時点(図中、t2の時点)までバスが空かないので、そのDMA転送処理の終了時点以降でなければ、その優先度の高い他の処理を実行することはできない。すなわち、第1実施形態の方が従来技術より、その差(t2−t1)だけ早く、その優先度の高い他の処理を実行することができるという利点を有する。
続いて、第2実施形態について説明する。
図14は、本発明の第2実施形態のデータ転送装置(DMAコントローラ)50の構成を示すブロック図である。
図14において、データ転送装置(DMAコントローラ)50は、RAM11と、転送制御部52を備える。転送制御部52は、RAM11への書き込み時にデータ長L3のデータが書き込まれる第1データ記憶部53、第2データ記憶部54、第3データ記憶部55を備える。
RAM11は、データ転送装置50に内蔵される。本実施形態においては、CPU2からのデータ転送要求に基づいて実行されるDMA転送において、転送元記憶領域3からのデータは、まず、RAM11に書き込まれる。そして、その後、RAM11から転送先記憶領域4へのデータ転送が実行される。
すなわち、転送元記憶領域3から読み出されたデータ長L3のデータは、第1データ記憶部53に書き込まれる。第1データ記憶部53は、保持するデータ長L3を持つデータを第2データ記憶部54に出力する。転送制御部52は、データの読み出し元(転送元記憶領域3)と書き込み先(RAM11)アドレスを基に、第1データ記憶部53と第2データ記憶部54から第3データ記憶部55へのデータ書き込み時のシフトパターン(並べ替えパターン)を決定する。そして、転送制御部52は、その決定されたシフトパターンを基に、第1データ記憶部53と第2データ記憶部54から第3データ記憶部55へのデータ書き込みを実行する。第3データ記憶部55は、保持するデータ長L3のデータをRAM11に出力する。
また、転送制御部52は、RAM11から読み出されたデータ長L4のデータに対し、(シフト処理を施すことなく)そのまま、転送先記憶領域4に出力する。
データ長L4は、例えば上記データ長L3に一致するが、データ長L4とL3が一致しない場合もある。
RAM11へのデータ書き込みの場合、図14の第1データ記憶部53は、図8A〜図8Dの「リードデータバス上のデータ受け初段(FF)」に対応し、第2データ記憶部54は、図8A〜図8Dの「リードデータバス上のデータ受け2段目(FF)」に対応し、第3データ記憶部55は、図8A〜図8Dの「内蔵RAM書き込み(FF)」に対応する。
図14のDMAコントローラ50のより具体的なハードウェア構成は、第1実施形態の図3と同様である。すなわち、図14の転送制御部52は、図3の内蔵RAMコントローラ22、バスマスタインタフェース部23、FF24、25、28、29の組み合わせに対応する。図14の第1データ記憶部53は、例えば、図3のFF24に対応する。図14の第2データ記憶部54は、例えば、図3のバスマスタインタフェース部23内に設けられるが、内蔵RAMコントローラ22内に設けることもできる。図14の第3データ記憶部55は、例えば、図3のFF25に対応する。
図15は、本発明の第2実施形態のデータ転送装置(DMAコントローラ)の構成を示すブロック図を、転送元記憶領域、転送先記憶領域とともに示した図である。
第1実施形態では、転送元記憶領域3と内蔵RAM11の間、内蔵RAM11と転送先記憶領域4の間に第1アライナ41と第2アライナ42がそれぞれ設けられているが、第2実施形態では、転送元記憶領域3と内蔵RAM11の間にのみアライナ58が設けられている。このアライナ58は、図3のFF24、バスマスタインタフェース部23、内蔵RAMコントローラ22、FF25の組み合わせによって構成される。なお、アライナ58は、図14の第1データ記憶部53、第2データ記憶部54、第3データ記憶部55を備える転送制御部52に対応する。
第2実施形態では、内蔵RAM11と転送先記憶領域4の間でデータを転送する際にシフト処理(並べ替え)を行わなくて済むように、アライナ58は、CPU2からのデータ転送要求で指定された転送先記憶領域4の先頭位置に対応する内蔵RAM11の位置以降に転送元記憶領域3からのデータを連続して格納するようにシフト処理を行う。
すなわち、第1実施形態の図5のフローチャートのステップS102で、リードされた転送元アドレスの下位(末尾)2ビットと、内蔵RAM11上の転送先アドレスの下位2ビットを基に、アライナ58が備える第1データ記憶部53(例えば、FF24)および第2データ記憶部54から(第3データ記憶部55を介した)転送先記憶領域(この場合、内蔵RAM11)への書き込み時のシフトパターンである並べ替えパターンを決定する際に、内蔵RAM11上の転送先アドレスとして、設定レジスタ部31に設定されている転送先記憶領域4の転送先アドレスを用いている。
このため、第2実施形態では、図3のFF28、内蔵RAMコントローラ22、バスマスタインタフェース部23、FF29の組み合わせは、アライナとしての機能を有さない。内蔵RAM11から転送先記憶領域4へのデータ転送に用いる並べ替えパターン(この並べ替えパターンは、図8Aの第1行、図8Bの第2行、図8Cの第3行、図8Dの第4行のいずれかのパターンである)にしたがって書き込みを行ったとき、その書き込み先が、転送先記憶領域4において転送対象のデータが書き込まれる範囲から外れた場合にそのデータ書き込みを禁止する以外は、FF28、FF29は、転送対象となるデータのうちの1ワード分をその都度、ラッチするだけである。
第2実施形態においても、第1実施形態同様に、DMA転送処理が始まってから、バスを使用する優先度の高い他の処理による割り込みが発生した場合、その割り込みが転送元から内蔵RAMへのデータ転送処理の終了までに発生していると、その内蔵RAMへのデータ転送処理が終了した時点でバスが空くので、その優先度の高い他の処理を実行することができる。
続いて、第3実施形態について説明する。
図16は、本発明の第3実施形態のデータ転送装置(DMAコントローラ)60の構成を示すブロック図である。
図16において、データ転送装置(DMAコントローラ)60は、RAM11と、転送制御部62を備える。転送制御部62は、RAM11からの読み出し時にデータ長L6のデータが書き込まれる第1データ記憶部63、第2データ記憶部64、第3データ記憶部65を備える。
RAM11は、データ転送装置10に内蔵される。本実施形態においては、CPU2からのデータ転送要求に基づいて実行されるDMA転送において、転送元記憶領域3からのデータは、まず、RAM11に書き込まれる。そして、その後、RAM11から転送先記憶領域4へのデータ転送が実行される。
すなわち、転送元記憶領域3から読み出されたデータ長L5のデータは、転送制御部62を介して、(シフト処理を施されることなく)そのまま、RAM11に書き込まれる。
データ長L5は、例えば上記データ長L6に一致するが、データ長L5とL6が一致しない場合もある。
また、RAM11から読み出されたデータ長L6のデータは、第1データ記憶部63に書き込まれる。第1データ記憶部63は、保持するデータ長L6を持つデータを第2データ記憶部64に出力する。転送制御部62は、データの読み出し元(RAM11)と書き込み先(転送先記憶領域4)アドレスを基に、第1データ記憶部63と第2データ記憶部64から第3データ記憶部65へのデータ書き込み時のシフトパターン(並べ替えパターン)を決定する。そして、転送制御部62は、その決定されたシフトパターンを基に、第1データ記憶部63と第2データ記憶部64から第3データ記憶部65へのデータ書き込みを実行する。第3データ記憶部65は、保持するデータ長L6のデータを転送先記憶領域4に出力する。
RAM11へのデータ書き込みの場合、図2の第1データ記憶部63は、図8A〜図8Dの「リードデータバス上のデータ受け初段(FF)」に対応し、第2データ記憶部64は、図8A〜図8Dの「リードデータバス上のデータ受け2段目(FF)」に対応し、第3データ記憶部65は、図8A〜図8Dの「内蔵RAM書き込み(FF)」に対応する。
図16のDMAコントローラ60のより具体的なハードウェア構成は、第1実施形態の図3と同様である。すなわち、図16の転送制御部62は、図3の内蔵RAMコントローラ22、バスマスタインタフェース部23、FF24、25、28、29の組み合わせに対応する。図16の第1データ記憶部63は、例えば、図3のFF28に対応する。図16の第2データ記憶部64は、例えば、図3のバスマスタインタフェース部23内に設けられるが、内蔵RAMコントローラ22内に設けることもできる。図16の第3データ記憶部65は、例えば、図3のFF29に対応する。
図17は、本発明の第3実施形態のデータ転送装置(DMAコントローラ)の構成を示すブロック図を、転送元記憶領域、転送先記憶領域とともに示した図である。
第1実施形態では、転送元記憶領域3と内蔵RAM11の間、内蔵RAM11と転送先記憶領域4の間に第1アライナ41と第2アライナ42がそれぞれ設けられているが、第3実施形態では、内蔵RAM11と転送先記憶領域4の間にのみアライナ68が設けられている。このアライナ68は、図3のFF28、内蔵RAMコントローラ22、バスマスタインタフェース部23、FF29の組み合わせによって構成される。アライナ68は、CPU2からのデータ転送要求で指定された転送先記憶領域4の先頭位置以降に内蔵RAM11に格納された転送元記憶領域3のデータを連続して格納するようにシフト処理を行う。なお、アライナ68は、図16の第1データ記憶部63、第2データ記憶部64、第3データ記憶部65を備える転送制御部52に対応する。
第3実施形態では、内蔵RAM11と転送先記憶領域4の間でデータを転送する際には、図3のFF24、FF25は、転送対象となるデータのうちの1ワード分をその都度、ラッチするだけである。この結果、第3実施形態では、内蔵RAM11にも、転送元記憶領域3同様、不連続なデータが分散して格納される。
第3実施形態の内蔵RAM11から転送先記憶領域4にデータを転送する処理は、図5のフローチャートに変更を加えて得られる。
すなわち、ステップS103とS104の処理を、ステップS106〜S115の処理で置き換える。具体的には、図5のステップS102からステップS106に制御が渡るようにする。そして、ステップS112で残りバイト数が「00(0バイト)」の場合、ステップS115で、内蔵RAMに残っている転送データのバイト数が「1」ではないと判定された場合、ステップS113が実行された場合は、ステップS105に制御が移るようにする。
第3実施形態の場合も、ステップS106〜ステップS115の処理において、ステップS107からステップS109に進む場合、ステップS115からステップS113に進む場合を除いて、各ステップのDMA転送処理の間には、第2データ記憶部64に第1データ記憶部63のデータをラッチする第1のデータラッチ処理、内蔵RAM11からのワード単位のデータを第1データ記憶部63にラッチする第2のデータラッチ処理が実行される。
第3実施形態では、ステップS106〜S115の処理は、内蔵RAM11上に不連続に分散して存在するそれぞれのデータ(図16のデータ例であれば、データa、データb、データc)について実行される。よって、各ステップのDMA転送処理において、転送された有効データのバイト数は現在転送しているデータの転送サイズから減算され、ステップS111やステップS112の判定で用いられる。
第3実施形態においても、第1実施形態同様に、DMA転送処理が始まってから、バスを使用する優先度の高い他の処理による割り込みが発生した場合、その割り込みが転送元から内蔵RAMへのデータ転送処理の終了までに発生していると、その内蔵RAMへのデータ転送処理が終了した時点でバスが空くので、その優先度の高い他の処理を実行することができる。
なお、以上の説明ではバス幅は32bit(4バイト)としたが、64bit、128bit、等のそれ以外のビット数であってもよい。例えば、バス幅を64bit(8バイト)とした場合、転送元アドレスの下位3ビットと、転送先アドレスの下位3ビットを基に、アライナが備える第1および第2データ記憶部から書き込み先(第3データ記憶部)への書き込み時のシフトパターン(64通り(=8×8))が決定される。
すなわち、並べ替えパターンとは、転送されるデータの転送元記憶領域での先頭位置を識別する情報と、転送されるデータの転送先記憶領域での先頭位置を識別する情報を基づく、アライナが備える第1および第2データ記憶部から書き込み先(第3データ記憶部)への書き込み時のシフトパターンである。
また、転送元記憶領域3内に保持されるデータの総サイズが内蔵RAM11に収まらない場合も考えられる。この場合、複数回に分けて、転送元記憶領域3、内蔵RAM11、転送先記憶領域4の順にデータが移動することになるが、優先度の高い他の処理による割り込みがどのタイミングで発生しても、その直後の区切りがいいところ(内蔵RAM11へのデータの格納が終了したタイミング、または、転送先記憶領域4へのその回のデータの格納が終了したタイミング)でバスが空くので、DMA転送処理が終わるまで待つことなく、その優先度の高い他の処理を実行することができる。
本発明は下記構成でもよい。
(付記1) 要求元からのデータ転送要求に基づいて、転送元記憶領域のデータを転送先記憶領域に転送するデータ転送装置において、
装置に内蔵された一次記憶領域と、
前記転送元記憶領域と前記一次記憶領域との間に設けられた第1アライナと、
前記一次記憶領域と前記転送先記憶領域との間に設けられた第2アライナを備え、
前記第1アライナは、前記一次記憶領域の先頭位置以降に転送元記憶領域のデータを連続して格納するようにシフト処理を行い、
前記第2アライナは、前記データ転送要求で指定された転送先記憶領域の先頭位置以降に前記一次記憶領域のデータを格納するようにシフト処理を行う、ことを特徴とするデータ転送装置。
(付記2) 前記第1および第2アライナは、前記一次記憶領域へのアクセス時にデータが書き込まれる第1、第2、および第3データ記憶部をそれぞれ備え、
前記第1アライナは、転送されるデータの前記転送元記憶領域での先頭位置を識別する情報と、転送されるデータの前記一次記憶領域での書き込み開始位置を識別する情報を基に、前記第1および第2データ記憶部から前記第3データ記憶部へのデータ書き込み時のシフトパターンを決定し、そのパターンを基に前記第3データ記憶部へのデータ書き込みを実行し、該第3データ記憶部は書き込まれたデータを前記一次記憶領域に出力し、
前記第2アライナは、転送されるデータの前記一次記憶領域での先頭位置を識別する情報と、転送されるデータの前記転送先記憶領域での先頭位置を識別する情報を基に、前記第1および第2データ記憶部から前記第3データ記憶部へのデータ書き込み時のシフトパターンを決定し、そのパターンを基に前記第3データ記憶部へのデータ書き込みを実行し、該第3データ記憶部は書き込まれたデータを前記転送先記憶領域に出力することを特徴とする付記1記載のデータ転送装置。
(付記3) 前記データ転送の要求元からの1回の転送指示を基に、前記転送元記憶領域から前記一次記憶領域、前記一次記憶領域から前記転送先記憶領域までのデータ転送処理が実行され、
転送されるデータが、前記一次記憶領域に格納された時点で、前記データ転送の要求元に対し、その一次記憶領域までのデータ転送が完了したことを示す割り込みを出力することを特徴とする付記1記載のデータ転送装置。
(付記4) 前記データ転送の要求元は、前記転送元記憶領域から前記一次記憶領域へのデータ転送、前記一次記憶領域から前記転送先記憶領域へのデータ転送、それぞれについてその都度、転送指示を出し、
転送されるデータが、前記一次記憶領域に格納された時点で、その一次記憶領域までのデータ転送が完了したことを示すフラグが装置内の予め決められたレジスタに設定されることを特徴とする付記1記載のデータ転送装置。
(付記5) 要求元からのデータ転送要求に基づいて、転送元記憶領域のデータを転送先記憶領域に転送するデータ転送装置において、
装置に内蔵された一次記憶領域と、
前記転送元記憶領域と前記一次記憶領域との間に設けられたアライナを備え、
前記アライナは、前記データ転送要求で指定された転送先領域の先頭位置に対応する前記一次記憶領域の位置以降に転送元記憶領域のデータを連続して格納するようにシフト処理を行い、
前記一次記憶領域に格納されるデータは、前記一次記憶領域から前記転送先記憶領域にそのまま転送される、ことを特徴とするデータ転送装置。
(付記6) 前記アライナは、前記一次記憶領域へのアクセス時にデータが書き込まれる第1、第2、および第3データ記憶部を備え、
前記アライナは、転送されるデータの前記転送元記憶領域での先頭位置を識別する情報と、転送されるデータの前記一次記憶領域での書き込み開始位置を識別する情報を基に、前記第1および第2データ記憶部から前記第3データ記憶部へのデータ書き込み時のシフトパターンを決定し、そのパターンを基に、前記第3データ記憶部へのデータ書き込みを実行し、該第3データ記憶部は書き込まれたデータを前記一次記憶領域に出力することを特徴とする付記5記載のデータ転送装置。
(付記7) 要求元からのデータ転送要求に基づいて、転送元記憶領域のデータを転送先記憶領域に転送するデータ転送装置において、
装置に内蔵された一次記憶領域と、
前記一次記憶領域と前記転送先記憶領域との間に設けられたアライナを備え、
前記転送元記憶領域のデータは、前記転送元記憶領域から前記一次記憶領域にそのまま転送され、
前記アライナは、前記データ転送要求で指定された転送先領域の先頭位置以降に前記一次記憶領域に格納された転送元領域のデータを連続して格納するようにシフト処理を行う、ことを特徴とするデータ転送装置。
(付記8) 前記アライナは、前記一次記憶領域へのアクセス時にデータが書き込まれる第1、第2、および第3データ記憶部を備え、
前記アライナは、転送されるデータの前記一次記憶領域での先頭位置を識別する情報と、転送されるデータの前記転送先記憶領域での書き込み開始位置を識別する情報を基に、前記第1および第2データ記憶部から前記前記第3データ記憶部へのデータ書き込み時のシフトパターンを決定し、そのパターンを基に、前記第3データ記憶部へのデータ書き込みを実行し、該第3データ記憶部は書き込まれたデータを前記転送先記憶領域に出力することを特徴とする付記7記載のデータ転送装置。
本発明の各実施形態に共通するDMAコントローラ(データ転送装置)を含む全体構成を示すブロック図である。 本発明の第1実施形態のDMAコントローラの構成を示すブロック図である。 図2のDMAコントローラのより具体的なハードウェア構成を示すブロック図である。 本発明の第1実施形態のDMAコントローラの構成を示すブロック図を、転送元記憶領域、転送先記憶領域とともに示した図である。 本発明の第1実施形態のDMA転送処理のフローチャートである。 転送元記憶領域から第1アライナへのデータ転送を説明する図である。 第2アライナから転送先記憶領域へのデータ転送を説明する図である。 第1および第2データ記憶部から書き込み先(第3データ記憶部)への並び替えパターンを示す図(その1)である。 第1および第2データ記憶部から書き込み先(第3データ記憶部)への並び替えパターンを示す図(その2)である。 第1および第2データ記憶部から書き込み先(第3データ記憶部)への並び替えパターンを示す図(その3)である。 第1および第2データ記憶部から書き込み先(第3データ記憶部)への並び替えパターンを示す図(その4)である。 図8A〜図8Dの並べ替えパターンによる書き込みのタイミングを示す図である。 図4のデータ(データa、データb、データc)が転送元記憶領域から内蔵RAMに転送される様子を説明する図(その1)である。 図4のデータ(データa、データb、データc)が転送元記憶領域から内蔵RAMに転送される様子を説明する図(その2)である。 内蔵RAMに格納された図4のデータ(データa、データb、データc)が、内蔵RAMから転送先記憶領域に転送される様子を説明する図(その1)である。 内蔵RAMに格納された図4のデータ(データa、データb、データc)が、内蔵RAMから転送先記憶領域に転送される様子を説明する図(その2)である。 第1実施形態の内蔵RAMから転送先記憶領域へのデータ転送時に用いる並べ替えパターンを示す図である。 第1実施形態の効果を説明する図である。 本発明の第2実施形態のDMAコントローラの構成を示すブロック図である。 本発明の第2実施形態のDMAコントローラの構成を示すブロック図を、転送元記憶領域、転送先記憶領域とともに示した図である。 本発明の第3実施形態のDMAコントローラの構成を示すブロック図である。 本発明の第3実施形態のDMAコントローラの構成を示すブロック図を、転送元記憶領域、転送先記憶領域とともに示した図である。
符号の説明
1,10,50,60 DMAコントローラ
2 CPU
3 転送元記憶領域
4 転送先記憶領域
5 バス
11 内蔵RAM
12,52,62 転送制御部
13,53,63 第1データ記憶部
14,54,64 第2データ記憶部
15,55,65 第3データ記憶部
16 第4データ記憶部
17 第5データ記憶部
18 第6データ記憶部
22 内蔵RAMコントローラ
23 バスマスタインタフェース部
24,25,28,29 FF
31 設定レジスタ部
32 バススレーブインタフェース部
41 第1アライナ
42 第2アライナ
58,68 アライナ

Claims (5)

  1. 要求元からのデータ転送要求に基づいて、転送元記憶領域のデータを転送先記憶領域に転送するデータ転送装置において、
    装置に内蔵された一次記憶領域と、
    前記転送元記憶領域と前記一次記憶領域との間に設けられた第1アライナと、
    前記一次記憶領域と前記転送先記憶領域との間に設けられた第2アライナを備え、
    前記第1アライナは、前記一次記憶領域の先頭位置以降に転送元記憶領域のデータを連続して格納するようにシフト処理を行い、
    前記第2アライナは、前記データ転送要求で指定された転送先記憶領域の先頭位置以降に前記一次記憶領域のデータを格納するようにシフト処理を行う、ことを特徴とするデータ転送装置。
  2. 前記データ転送の要求元からの1回の転送指示を基に、前記転送元記憶領域から前記一次記憶領域、前記一次記憶領域から前記転送先記憶領域までのデータ転送処理が実行され、
    転送されるデータが、前記一次記憶領域に格納された時点で、前記データ転送の要求元に対し、その一次記憶領域までのデータ転送が完了したことを示す割り込みを出力することを特徴とする請求項1記載のデータ転送装置。
  3. 前記データ転送の要求元は、前記転送元記憶領域から前記一次記憶領域へのデータ転送、前記一次記憶領域から前記転送先記憶領域へのデータ転送、それぞれについてその都度、転送指示を出し、
    転送されるデータが、前記一次記憶領域に格納された時点で、その一次記憶領域までのデータ転送が完了したことを示すフラグが装置内の予め決められたレジスタに設定されることを特徴とする請求項1記載のデータ転送装置。
  4. 要求元からのデータ転送要求に基づいて、転送元記憶領域のデータを転送先記憶領域に転送するデータ転送装置において、
    装置に内蔵された一次記憶領域と、
    前記転送元記憶領域と前記一次記憶領域との間に設けられたアライナを備え、
    前記アライナは、前記データ転送要求で指定された転送先領域の先頭位置に対応する前記一次記憶領域の位置以降に転送元記憶領域のデータを連続して格納するようにシフト処理を行い、
    前記一次記憶領域に格納されるデータは、前記一次記憶領域から前記転送先記憶領域にそのまま転送される、ことを特徴とするデータ転送装置。
  5. 要求元からのデータ転送要求に基づいて、転送元記憶領域のデータを転送先記憶領域に転送するデータ転送装置において、
    装置に内蔵された一次記憶領域と、
    前記一次記憶領域と前記転送先記憶領域との間に設けられたアライナを備え、
    前記転送元記憶領域のデータは、前記転送元記憶領域から前記一次記憶領域にそのまま転送され、
    前記アライナは、前記データ転送要求で指定された転送先領域の先頭位置以降に前記一次記憶領域に格納された転送元領域のデータを連続して格納するようにシフト処理を行う、ことを特徴とするデータ転送装置。
JP2006006741A 2006-01-13 2006-01-13 データ転送装置 Pending JP2007188357A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006006741A JP2007188357A (ja) 2006-01-13 2006-01-13 データ転送装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006006741A JP2007188357A (ja) 2006-01-13 2006-01-13 データ転送装置

Publications (1)

Publication Number Publication Date
JP2007188357A true JP2007188357A (ja) 2007-07-26

Family

ID=38343476

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006006741A Pending JP2007188357A (ja) 2006-01-13 2006-01-13 データ転送装置

Country Status (1)

Country Link
JP (1) JP2007188357A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010140127A (ja) * 2008-12-10 2010-06-24 Hitachi Ltd データ転送処理装置及び方法

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02110758A (ja) * 1988-10-20 1990-04-23 Fujitsu Ltd Dma転送方式
JPH03260750A (ja) * 1990-03-09 1991-11-20 Fujitsu Ltd Dma転送方式
JPH04109351A (ja) * 1989-12-15 1992-04-10 Nec Corp Dmaコントローラ
JPH0736821A (ja) * 1993-07-23 1995-02-07 Nec Corp Dma転送制御装置
JPH07141288A (ja) * 1993-11-15 1995-06-02 Fuji Xerox Co Ltd Dma転送方式
JPH0991243A (ja) * 1995-09-25 1997-04-04 Nec Corp データ転送制御装置
JP2003316721A (ja) * 2002-04-24 2003-11-07 Oki Electric Ind Co Ltd データ転送制御装置、データ転送装置及びデータ転送制御方法
JP2005004624A (ja) * 2003-06-13 2005-01-06 Ricoh Co Ltd Dma制御装置、画像形成装置、dma転送制御方法、コンピュータプログラムおよび記録媒体
JP2006003981A (ja) * 2004-06-15 2006-01-05 Sony Corp 情報処理装置および方法、記録媒体、並びにプログラム

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02110758A (ja) * 1988-10-20 1990-04-23 Fujitsu Ltd Dma転送方式
JPH04109351A (ja) * 1989-12-15 1992-04-10 Nec Corp Dmaコントローラ
JPH03260750A (ja) * 1990-03-09 1991-11-20 Fujitsu Ltd Dma転送方式
JPH0736821A (ja) * 1993-07-23 1995-02-07 Nec Corp Dma転送制御装置
JPH07141288A (ja) * 1993-11-15 1995-06-02 Fuji Xerox Co Ltd Dma転送方式
JPH0991243A (ja) * 1995-09-25 1997-04-04 Nec Corp データ転送制御装置
JP2003316721A (ja) * 2002-04-24 2003-11-07 Oki Electric Ind Co Ltd データ転送制御装置、データ転送装置及びデータ転送制御方法
JP2005004624A (ja) * 2003-06-13 2005-01-06 Ricoh Co Ltd Dma制御装置、画像形成装置、dma転送制御方法、コンピュータプログラムおよび記録媒体
JP2006003981A (ja) * 2004-06-15 2006-01-05 Sony Corp 情報処理装置および方法、記録媒体、並びにプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010140127A (ja) * 2008-12-10 2010-06-24 Hitachi Ltd データ転送処理装置及び方法

Similar Documents

Publication Publication Date Title
JP5429572B2 (ja) チェーン化デバイスシステムにおいてパラメータを設定し待ち時間を決定する方法
US7433977B2 (en) DMAC to handle transfers of unknown lengths
JP2004171209A (ja) 共有メモリデータ転送装置
JPWO2004057481A1 (ja) Dma制御装置、dma制御方法、dma制御プログラム
JP2006338538A (ja) ストリームプロセッサ
JP5287301B2 (ja) ディスクリプタ転送装置、i/oコントローラ、及びディスクリプタ転送方法
WO2023093334A1 (zh) 用于执行原子操作的系统、原子操作方法及装置
JP2007034392A (ja) 情報処理装置及びデータ処理方法
JP5057360B2 (ja) 半導体装置、データ処理装置、及び記憶装置へのアクセス方法
JP2009502072A (ja) FlexRay通信モジュール及びFlexRay通信制御装置、並びにFlexRay通信接続とFlexRay加入者装置との間でメッセージを伝送する方法
JP4855864B2 (ja) ダイレクトメモリアクセスコントローラ
JP2007027951A (ja) Dmaコントローラおよび通信処理装置
JP2007188357A (ja) データ転送装置
JP4990262B2 (ja) バッファ装置
JP2008146541A (ja) Dma転送システム、dmaコントローラ及びdma転送方法
EP3588319B1 (en) Memory module
CN115238642A (zh) 一种基于FPGA的外设总线的crossbar设计系统和方法
JP5360594B2 (ja) Dma転送装置及び方法
KR100622800B1 (ko) 버스를 통한 데이터 전송을 제어하는 방법, 시스템 및 컴퓨터 시스템
JP5441219B2 (ja) 半導体装置及びシリアルインタフェース回路
JP2011118744A (ja) 情報処理装置
JP5387155B2 (ja) Dma転送制御装置およびdma転送制御方法
JP2008250496A (ja) エンジン・プロセッサ連携システム及び連携方法
JP4567373B2 (ja) データ転送装置及び通信データ処理システム
JP5505963B2 (ja) ベクトル処理装置及びベクトル演算処理方法

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20080730

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080917

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110726

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110829

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20111018