JP4530971B2 - 起動処理装置、dma転送システム、dma転送方法 - Google Patents

起動処理装置、dma転送システム、dma転送方法 Download PDF

Info

Publication number
JP4530971B2
JP4530971B2 JP2005322278A JP2005322278A JP4530971B2 JP 4530971 B2 JP4530971 B2 JP 4530971B2 JP 2005322278 A JP2005322278 A JP 2005322278A JP 2005322278 A JP2005322278 A JP 2005322278A JP 4530971 B2 JP4530971 B2 JP 4530971B2
Authority
JP
Japan
Prior art keywords
event
dma
dma transfer
peripheral device
transfer
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.)
Expired - Fee Related
Application number
JP2005322278A
Other languages
English (en)
Other versions
JP2007128425A (ja
Inventor
伸夫 佐々木
馨 山上
良和 高橋
真一 本多
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.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Computer Entertainment Inc
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 Sony Computer Entertainment Inc filed Critical Sony Computer Entertainment Inc
Priority to JP2005322278A priority Critical patent/JP4530971B2/ja
Priority to US11/515,396 priority patent/US7779172B2/en
Publication of JP2007128425A publication Critical patent/JP2007128425A/ja
Application granted granted Critical
Publication of JP4530971B2 publication Critical patent/JP4530971B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/32Handling requests for interconnection or transfer for access to input/output bus using combination of interrupt and burst mode transfer

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)

Description

この発明は、DMAを用いたデータ転送技術に関する。
ゲーム機を初めとするマルチメディア端末では、画像データや音声データを頻繁にメモリに読み書きする必要がある。そこで、CPU(Cetnral Processing Unit)の負荷を軽減するため、メモリと外部の入出力装置との間のデータ転送はDMA(Direct Memory Access)転送によって行われることが多い。DMA転送は、CPUを介することなく、メモリと入出力装置間でデータの受け渡しを高速に実行する方法である。
割り込みを用いてDMA転送を実装するシステムにおいては、一回の転送処理のためにCPUへの割り込みが二回発生するのが一般的である。すなわち、入出力装置からDMA転送要求があったときと、DMA転送が終了したときである。CPUへの割り込みが発生すると、CPUは割り込み処理を行わなければならない。したがって、割り込みが多いほどCPUの負荷が増大する。
本発明はこうした課題に鑑みてなされたものであり、その目的は、割り込み回数を減らしてCPUにかかる負荷を軽減するデータ転送技術を提供することにある。
本発明のある態様は、コンピュータシステム上で発生するイベントを取得し、取得したイベントと予め登録されたイベントとを比較し、イベントが一致したときに、周辺装置と記憶装置間のデータ転送を制御するDMAコントローラを起動するようにした。
ここで「イベント」とは、周辺装置、記憶装置、DMAコントローラにおける任意の処理の発生または終了のことをいう。
この態様によれば、コンピュータシステムで発生するDMA要求のうち、いずれに応答するかをイベントによって選択できるので、CPUを介することなく、所望のDMA転送を開始することができる。
本発明の別の態様は、相互に関連する複数のデータブロックを連続してDMA転送する方法である。この方法では、複数のデータブロックの情報を予め前記DMAコントローラに記憶させておく。そして、第1のイベントの発生に対応して起動されたデータブロックのDMA転送の終了を、次に連なるべきデータブロックのDMA転送を起動させるための第2のイベントとして登録するようにした。
これによると、DMA転送をイベント駆動の方式で起動する場合に、ひとつのDMA転送の終了を別のDMA転送を起動させるイベントとして登録するので、データの連続転送をCPUの介在なしで実現することができる。
なお、本発明の構成要素や表現を方法、システム、コンピュータプログラム、コンピュータプログラムを格納した記録媒体などの間で相互に置換したものもまた、本発明の態様として有効である。
本発明によれば、DMA転送の際のCPUへの割り込み回数を低減することができる。
まず、従来のDMA転送方法について概略を説明し、その後、本発明の特徴について説明する。
従来、メインメモリと各種入出力デバイスとの間のデータ転送を高速に実行するために、コンピュータ全体を制御するCPUを介さずにデータ転送を行うDMA転送が用いられることが多い。通常、DMA転送は以下のような手順で行われる。入出力デバイスからDMA転送要求が発せられると、CPUに割り込みが入り、割り込みハンドラが呼び出される。割り込みハンドラは、DMA転送に必要な情報、例えば転送元のデバイスのアドレス指定、転送先のデバイスのアドレス指定、および転送するデータのバイト数(サイズ)などの情報をDMAコントローラに設定する。DMAコントローラがバスアービタに対してバス使用要求を出力し、その後CPUがDMAコントローラをキックすると、DMAコントローラがアドレスバスおよびデータバスを占有してDMA転送制御を開始する。DMA転送が終了すると、再びCPUに対して割り込みが入り、メインメモリに新たなデータが準備される。このような処理を繰り返し実行することにより、DMAコントローラがメインメモリとデバイス間のデータ転送制御を行う。
しかし、この方法では、CPUに対し頻繁に割り込みが入ることになり、CPUの処理効率が低下する。
そこで、本願発明者は、DMA転送の実行に当たり、CPUへの割り込み回数を減らして処理効率を向上させることに想到した。以下、本発明について、いくつかの実施形態を参照して詳細に説明する。
実施の形態1.
図1は、実施の形態1に係る情報処理システム100のハードウェア構成図である。情報処理システム100は、メインCPU10、メインメモリ14、DMAコントローラ48、およびDMAコントローラ起動処理装置(以下、「DMAC起動処理装置」と表記する)70を備える。これらは、システムバス16を介して相互に接続される。
CPU10は、情報処理システム100の全体を制御するとともに、外部記憶装置や記録媒体からメインメモリ14にロードされたプログラムにしたがって、各種の処理を実行する。メインメモリ14には、CPU10が各種の処理を実行する上で必要となるデータなども適宜記憶される。
入出力デバイス20、30は、ディスプレイなどの出力装置、ハードディスクドライブなどの外部記憶装置、モデムやターミナルアダプタ(TA)などの通信装置、TVチューナ、プリンタなどが含まれる。磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリなどのリムーバブル記録媒体を使用するドライブ装置であってもよい。通信装置は、インターネットを一例とするネットワークを介して、他の情報処理システムなどとの通信処理を実行する。
入出力デバイス20、30は、I/Oバス46を介して接続される。システムバス16とI/Oバス46の間には、両者間のトランシーバとして機能するバスブリッジ42が設けられる。
入出力デバイス20、30は、データの入出力を管理する図示しないコプロセッサとバッファ22、32とを有し、メインメモリ14とバッファとの間でデータの読み書きが実行される。なお、図1には2つの入出力デバイスが描かれるが、入出力デバイスはひとつであっても3つ以上であってもよい。
情報処理システム100では、CPU10と高速で接続するDMAコントローラ48がバスブリッジ42の動作を制御する。図示しないバスアービタにより、システムバス16上で、CPU10、DMAコントローラ48および他のバスマスタ間でバス使用権の譲渡が行われる。DMAコントローラ48は、CPU10と同一のバス上で、入出力デバイス20、30とメモリ等の記憶装置間のデータ転送をCPU10を介さずに直接実行するDMA転送を制御する。
DMAコントローラ48は、制御レジスタ(図中「KICK」と表す)52、転送元アドレスレジスタ(図中「SA」と表す)54、転送先アドレスレジスタ(図中「DA」と表す)56、サイズレジスタ(図中「SIZE」と表す)58からなるレジスタセット50を一組備える。
制御レジスタ52は、DMAコントローラ48の制御のための設定値を格納するレジスタであり、この制御レジスタに開始ビットがセットされることでDMAコントローラ48が起動する。転送元アドレスレジスタ54には、データの転送元のアドレス(ソースアドレス)がセットされる。転送先アドレスレジスタ56には、データの転送先のアドレス(ディスティネーションアドレス)がセットされる。アドレスは、データ転送毎にインクリメントされていく。サイズレジスタ58には、転送データサイズがセットされ、データ転送毎に転送カウント値をデクリメントされていく。
CPU10は、DMAコントローラ48内の転送元アドレスレジスタ54に転送元アドレスを、転送先アドレスレジスタ56内に転送先アドレスを、およびサイズレジスタ58にデータサイズをセットする。設定後、DMAコントローラ48内の制御レジスタ52に開始ビットがセットされると、DMAコントローラ48が起動する。
DMAコントローラ48は、セットされたアドレスにしたがって、データを転送元から転送先に転送する。DMAコントローラ48が、転送元アドレスをアドレスバス上に出力し、読み出し信号を出力すると、転送元アドレスに格納されたデータが転送元のデバイスからデータバス上に出力される。続いて、転送先アドレスをアドレスバス上に出力し、書き込み信号を出力すると、転送先のデバイスの転送先アドレスに対し、データバス上のデータが書き込まれる。データの転送を実行するたびに、転送元アドレスと転送先アドレスは加算され、データサイズは転送カウント値だけ減算される。残りのデータサイズがゼロになると、CPU10に割り込みを発生させる。
DMA転送の転送元または転送先となる入出力デバイス20、30は、イベントの発生を通知するイベント通知信号をバスを介してDMAC起動処理装置70に送る。また、入出力デバイスは、DMAコントローラ48の制御下におけるDMA転送の終了もイベントとしてDMAC起動処理装置70に通知する。イベントは、各入出力デバイスを識別する符号と、イベントの内容を表す符号とがコード化されて記述される。
DMAC起動処理装置70は、イベント監視部60と、イベントレジスタ(図中「EVENT」と表す)72を含む。イベントレジスタ72には、応答対象のイベントが登録される。イベント監視部60は、入出力デバイス20、30からイベント通知信号を受け取り、いずれのデバイスのDMA転送に応答するかを決定する。具体的には、入出力デバイスから通知されたイベントと予めイベントレジスタ72に登録されているイベントとを比較し、イベントが一致したときDMAコントローラ48を起動する。
別の例として、イベント監視部60は、入出力デバイス20、30とDMAC起動処理装置70とを接続する専用線を介して入出力デバイスで発生するイベントの通知を受け取ってもよい。この専用線をすべての入出力デバイスで共通にして、オープンドレイン方式でハードワイアードされていてもよい。
図2は、図1のイベント監視部60のより詳細なブロック図である。イベント監視部60は、発生イベント取得部62と、イベント比較部64と、DMA起動部66と、イベント書き換え部68を含む。
発生イベント取得部62は、入出力デバイス20、30から送られてくるイベント通知信号を受け取る。イベント比較部64は、イベントレジスタ72に定義されているイベントと、受け取ったイベントとが一致するか否かを比較する。DMA起動部66は、イベントが一致したとき、DMAコントローラ48の制御レジスタ52に開始ビットをセットして、DMAコントローラ48を起動する。イベント書き換え部68は、一定の条件が成立したときに、イベントレジスタ72の内容を書き換える。
本実施の形態では、入出力デバイス20、30がイベント監視部60にイベントを通知し、これに応じてCPU10ではなくイベント監視部60がDMAコントローラ48を起動する。したがって、CPU10を介することなくDMA転送を開始することができる。
例えば、CPU10は、特定の入出力デバイスとの間のDMA転送を許可する場合には、その入出力デバイスに関するイベントを予めイベントレジスタ72に登録しておく。入出力デバイス20、30からイベントが通知されると、イベント監視部60はそのイベントに応答するか否かを判断し、応答すると判断したときはDMAコントローラ48を起動する。応答しないと判断したときは、そのイベント通知を無視する。DMA転送が終了すると、DMAコントローラ48は転送の終了をCPU10に通知する。したがって、CPU10は、予めDMA転送を許可すべき入出力デバイスに対応するイベントをDMAC起動処理装置70のイベントレジスタ72に登録し、そのDMA転送に必要なアドレスなどの情報をDMAコントローラ48のレジスタセット50に登録しておけば、転送の実行に関わる必要がなく、転送の開始の際に割り込みを受けることもない。したがって、DMA転送に際してCPU10に割り込みの入る回数が減少する。
図3は、イベント監視部60におけるDMAコントローラ起動処理のフローチャートである。初期状態として、メインメモリ14または入出力デバイス20、30のバッファに、転送すべきデータが格納されているとする。
まず、CPU10は、DMAコントローラ48内のレジスタセット50にDMA転送の転送元アドレス、転送先アドレス、およびデータサイズをセットするとともに、DMAC起動処理装置70のイベントレジスタ72にDMA転送を許可するイベントをセットしておく(S10)。セットするイベントは、例えば、入出力デバイス内のバッファのバッファフル(バッファオーバーフローともいう)、またはバッファエンプティ(バッファアンダーフローともいう)である。
次に、イベント監視部60の発生イベント取得部62は、入出力デバイス20、30で発生したイベントの通知を受け取る(S12)。続いて、イベント比較部64は、イベントレジスタ72に設定されているイベントと受け取ったイベントとを比較し(S14)、それらが一致するか否かを判定する(S16)。一致しない場合(S16のN)、このフローチャートを終了する。一致する場合(S16のY)、イベント監視部60のDMA起動部66は、DMAコントローラ48の制御レジスタ52に開始ビットを立てて、DMAコントローラをキックする(S18)。DMAコントローラ48は、レジスタセット50に設定されている情報にしたがって、DMA転送を開始する。イベント書き換え部68は、必要に応じてイベントレジスタ72を再設定する(S20)。
DMA転送が終了すると、DMAの終了割り込みがCPU10に入力される。このDMA終了割り込みにより、メインメモリ14への新しいデータの準備が開始される。
以上説明したように、実施の形態1によれば、DMA転送要求に応答するか否かの判断を実行する機能をCPUの外部に設けることによって、CPUへの割り込み回数が減少し、CPUの負荷が低減される。これにより、CPUはDMA転送以外の他の処理を担当することが可能となり、情報処理システム全体としての処理効率が向上すると期待される。また、CPUの負荷が減ることで、消費電力も削減されうる。
また、イベントレジスタにイベントを登録しておき、イベント監視部に通知されてくるイベントと比較する構成をとることによって、DMA転送を受け付ける入出力デバイスを限定することができる。例えば、複数の入出力デバイスが情報処理システムに含まれる場合に、イベントレジスタに特定の入出力デバイスに関連するイベントを登録しておけば、一部の入出力デバイスとの間でのみデータの読み書きを実施することができる。複数の入出力デバイスからイベントが通知された場合でも、あるいは、ひとつの入出力デバイスから複数のイベントが通知された場合でも、いずれのイベントに応答してDMA転送を許可するかは、イベントレジスタに登録されたイベントによって決定される。これによって、外部装置からメインメモリにアクセスしてデータを引き出そうとする不正行為を防止できるので、イベント登録によってセキュリティも向上する。
CPUにおける処理内容に応じて、DMA転送を受け付ける入出力デバイスを使い分けることも可能である。イベントレジスタの内容に応じて応答すべきイベントを決定できるので、あるときは外部記憶装置からメインメモリへのDMA転送を優先し、あるときはネットワーク通信装置からメインメモリへのDMA転送を優先するといったように、アプリケーション側の割り込みハンドラを設計することも可能である。このように、アプリケーションの設計の自由度が向上する。また、異なる機能を有する入出力デバイスがシステム内に存在する場合、各入出力デバイスに対応するイベントを登録しておくことで、様々な状況に応じてDMA転送を実行できる。
実施の形態2.
図2では、DMAC起動処理装置がひとつのイベントレジスタを備える場合について説明したが、複数のイベントレジスタを備える場合であっても同様の手法で対応できる。複数のイベントレジスタと上述のDMA転送方法とを組み合わせることによって、データの連続転送時にCPUへの割り込み回数をさらに低減することが可能となる。
図4は、実施の形態2に係る情報処理システム200のハードウェア構成図である。CPU10、キャッシュメモリ12、メインメモリ14、入出力デバイス20、30については、図1と同様の機能を有するので説明を省略する。DMAコントローラ110は、情報処理システム200上でのDMA転送を制御する。入出力デバイス20、30は、DMA転送の転送元または転送先となる。
DMAコントローラ110には、制御レジスタ122、転送元アドレスレジスタ124、転送先アドレスレジスタ126およびサイズレジスタ128から構成されるレジスタセットが複数設けられる。図4には、4セットのレジスタセット120、130、140、150(以下、「レジスタセット#1〜4」と表記する」)が描かれている。
DMAC起動処理装置170は、イベント監視部60と、DMAコントローラ110内のレジスタセット数と同数のイベントレジスタ172を備える。そして、イベントレジスタ172とレジスタセット#1〜4とは、一対一に対応づけられている。
実施の形態1と同様に、イベント監視部60は、入出力デバイス20、30からイベント通知信号を受け取る。イベント監視部60は、受け取ったイベントとイベントレジスタ172内のいずれかのイベントとが一致するか否かを判定する。そして、一致したイベントを登録していたイベントレジスタを特定する。そして、そのイベントレジスタに対応づけられたレジスタセット内の制御レジスタに開始ビットをセットする。DMAコントローラ110は、開始ビットがセットされたレジスタセットの情報にしたがって、DMA転送を実行する。
このような複数のイベントレジスタを活用すると、より複雑なDMA転送制御が可能になる。ここでは、一例としてデータのカスケード転送について説明する。
従来、入出力デバイスのバッファとメインメモリとの間でデータを転送するには、CPUがDMAコントローラに転送先アドレス、転送元アドレス、転送データサイズを設定する。CPUがDMAコントローラをキックすることにより、DMA転送を開始させる。複数ブロックのデータを転送するためには、上記の手順を転送ブロック数分繰り返す必要がある。しかしながら、この従来の方法では、連続転送すべき複数のデータブロックを転送するときにブロック毎に割り込みが入り、CPUがDMAコントローラをキックしなければならず、CPUの負担が大きくなってしまうという問題があった。
以下では、上記問題点に鑑み、実施の形態2の情報処理システム200の構成を利用して、CPUに割り込みすることなくデータブロックを連続してカスケード状に転送できるDMA転送方法を提供する。
図5は、データのカスケード転送の概念図である。ここでは、4つのデータブロックをメインメモリから入出力デバイスのひとつに連続して転送する例を考える。この場合、連続して転送すべきデータブロックに関する情報が、DMA転送の対象としてDMAコントローラ内のレジスタセット#1〜4に書き込まれる。また、DMAC起動処理装置170の4つのイベントレジスタには、ひとつのデータブロックのDMA転送の終了イベントが、次のデータブロックに対応するDMA転送を起動するためのイベントとして登録される。
具体的には、連続転送すべきデータブロック1〜4について、DMAコントローラ110内の4つのレジスタセット#1〜4に以下の情報を登録する。
レジスタセット#1: データブロック1の転送元アドレス、転送先アドレス、データサイズ
レジスタセット#2: データブロック2の転送元アドレス、転送先アドレス、データサイズ
レジスタセット#3: データブロック3の転送元アドレス、転送先アドレス、データサイズ
レジスタセット#4: データブロック4の転送元アドレス、転送先アドレス、データサイズ
DMAC起動処理装置170内の4つのイベントレジスタ#1〜4には以下のようなイベントを登録する。なお、イベントレジスタ#1〜4は、レジスタセット#1〜4と一対一に対応づけられている。
イベントレジスタ#1: 転送先の入出力デバイスのバッファエンプティ
イベントレジスタ#2: データブロック1のDMA転送終了
イベントレジスタ#3: データブロック2のDMA転送終了
イベントレジスタ#4: データブロック3のDMA転送終了
つまり、データブロック1の次に転送すべきデータブロック2の転送先アドレス、転送元アドレスおよびデータサイズを2番目のレジスタセットに登録するとともに、データブロック1の転送終了イベントを2番目のレジスタセットに対応づけられたイベントレジスタ2に登録する。以下のデータブロックについても同様である。
これによって、図5に示すようなカスケード状の転送が実行される。
まず、転送先の入出力デバイスのバッファエンプティを検出すると(S32)、イベント監視部60は、DMAコントローラ内のレジスタセット#1の制御レジスタ122に開始ビットをセットし(S34)、これによりレジスタセット#1の情報にしたがってDMAコントローラ110がDMA転送を開始する(S36)。この転送が終了すると、イベント監視部60に、レジスタセット#1で設定されたDMA転送終了のイベント、つまり、メモリのエンプティイベントが通知される(S42)。イベント監視部60は、イベントレジスタ#2に登録されているイベントと、通知されたイベントが一致すると判定し、レジスタセット#2の制御レジスタに開始ビットをセットし(S44)、レジスタセット#2の情報にしたがってDMAコントローラ110がDMA転送を開始する(S46)。同様にして、データブロック2の転送が終了すると、イベント発生(S52)、レジスタセット#3の制御レジスタのセット(S54)、データブロック3のDMA転送(S56)と続き、さらにデータブロック3の転送が終了すると、イベント発生(S62)、レジスタセット#4の制御レジスタのセット(S64)、データブロック4のDMA転送(S66)が続く。
以上のように、前のデータブロックのDMA転送終了のイベント通知をトリガとして、DMAコントローラが次々にキックされ転送が行われる。このように、DMA転送の終了をイベントとしてイベントレジスタに登録することで、レジスタセット数分だけのデータをCPUを介さずに連続的にDMA転送することができる。
なお、S32において、イベント監視部60がバッファエンプティを検出してDMA転送を開始する代わりに、最初のデータブロックについてはCPU10がDMAコントローラを起動してもよい。
図6は、図5のカスケード転送を実現するための処理を説明するフローチャートである。まず、CPU10は、DMAコントローラ110内の複数のレジスタセット#1〜4にDMA転送に必要な情報をセットするとともに、DMAC起動処理装置170のイベントレジスタ172にイベントを登録する(S70)。次に、転送先のバッファエンプティイベントを受け取ると、イベント監視部60がレジスタセット#1の制御レジスタ122に開始ビットを立てることによってDMAコントローラ110が起動し(S72)、レジスタセット#1の情報にしたがったDMA転送が開始される(S74)。DMA転送が終了すると、イベント監視部60はDMA転送終了のイベントを受け取る(S76)。イベントレジスタ172のいずれかと今回のイベントが一致すると(S78のY)、イベント監視部60は、そのイベントに対応する次のレジスタセットの制御レジスタに開始ビットをセットする(S80)。
連続転送すべきデータブロックがDMAコントローラ110内のレジスタセット数(図4では、4つ)より多くあるときは、ひとつのDMA転送終了後に、空きができたDMAコントローラ内のレジスタセットに、後続するひとつ分のデータブロックに関する情報を登録すればよい。または、4回のDMA転送終了後に、DMAコントローラ内の全レジスタセットに後続するデータブロックに関する情報をまとめて登録してもよい。
図7は、メモリ内の不連続データの転送を説明する概念図である。図6で説明したように、データブロックの転送がカスケード状につながるようにイベントレジスタにイベントを設定することで、転送元デバイス80のデータブロック82〜88の実アドレスが不連続であっても、転送先デバイス90では、連続した宛先にデータブロックを転送することができる。
以上説明したように、実施の形態2によれば、DMAC起動処理装置に複数のイベントレジスタを備え、DMA転送の終了をイベントとしてイベントレジスタに登録することによって、レジスタセット数分のデータをCPUを介さずに連続的にDMA転送することができる。
従来は、ひとつのデータブロックの転送が終了するたびにCPUに割り込みが入り、一回ずつアドレスやデータサイズ等をDMAコントローラに設定する必要があったため、CPUへの割り込み頻度が高くなっていた。それに対し、本実施の形態では、一回目のイベント発生の前に、CPUがDMAコントローラ内の複数のレジスタセットにアドレス等の設定をしておけば、その後はデータブロックの転送の終了がイベントとなって発生し、DMA監視部がDMAコントローラを起動するので、CPUが介在する必要がない。
一般に、外部記憶装置とメモリ間のデータ転送は、連続して記憶されているストリームデータをある程度まとまった大きさのブロック単位で読み出している。したがって、上述したようなカスケード状のDMA転送は、映像データや音声データなどのビットレートが高くかつデータ量の大きいストリームデータを連続的に転送するのに適している。
実施の形態3.
図8は、実施の形態3に係る情報処理システム300のハードウェア構成図である。CPU10、キャッシュメモリ12、メインメモリ14、入出力デバイス20、30については、図1と同様の機能を有するので説明を省略する。DMAコントローラ210は、情報処理システム300上でのDMA転送を制御する。入出力デバイス20、30は、DMA転送の転送元または転送先となる。
DMAコントローラ210には、制御レジスタ222、転送元アドレスレジスタ224、転送先アドレスレジスタ226およびサイズレジスタ228から構成される第1レジスタセット220が少なくともひとつ設けられる。DMAC起動処理装置230は、イベント監視部60の他に、イベントレジスタ242、転送元アドレスレジスタ244、転送先アドレスレジスタ246、およびサイズレジスタ248から構成される第2レジスタセットが複数設けられる。図8では、4組の第2レジスタセット240、250、260、270を備える。
イベント監視部60は、入出力デバイス20、30からイベント通知信号を受け取る。イベント監視部60は、受け取ったイベントとイベントレジスタのセット280内のいずれかのイベントとが一致するか否かを判定し、一致したイベントを登録していたイベントレジスタを特定する。
続いて、イベント監視部60は、一致したイベントを登録していたイベントレジスタに対応する第2レジスタセット内の情報、すなわち、転送元アドレス、転送先アドレスおよびデータサイズを、DMAコントローラ内の空の第1レジスタセット220の対応するレジスタに書き込む。その後、イベント監視部60は、第1レジスタセット内の情報を参照してDMA転送を実行するように、制御レジスタ222に開始ビットをセットする。
以上、本発明をいくつかの実施形態について説明した。従来のDMAコントローラでは、DMA転送に伴いCPUに対し頻繁に割り込みが発生する。割り込みが発生するたびに、CPUは割り込み処理に時間を取られる。これに対し、本発明によれば、DMA要求をCPUに発信する代わりに、イベント監視部でイベントを検出し、予め設定されているイベントとのマッチングを取って、それに応答するか否かを決定する。DMAに応答すると決定された場合にのみ、レジスタセットに設定されている条件にしたがって、DMAコントローラが起動される。したがって、DMAコントローラは起動されるのを待機していればよく、またCPUへの割り込み回数が減少する。また、DMA転送によりバスが占有されている間であっても、状況いかんでは、CPUにおいてキャッシュメモリ内のデータを使用した他の作業を継続できる場合もあるので、情報処理システム全体としての処理効率が向上しうる。
また、データブロックを複数の場所に転送するようなときに、CPUが一回の転送毎に介在する必要がないので、CPUの処理負荷を減らすことができる。
以上、実施の形態をもとに本発明を説明した。これらの実施の形態は例示であり、各構成要素またはプロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。以下、そのような変形例について述べる。
入出力デバイスでのエンプティイベントは、転送先デバイスのひとつのバッファに空きができたときに発生させてもよいし、連続転送に必要な複数のバッファすべてに空きができたときに発生させてもよい。このように、エンプティイベントを発生させる方法はいくつか考えられる。
実施の形態では、入出力デバイスからイベント通知信号が発せられることとしたが、イベント監視部が入出力デバイスで発生するイベントを随時監視するように構成してもよい。
実施の形態では、DMAコントローラ内の制御レジスタに開始ビットをセットすることでDMAコントローラを起動したが、DMAコントローラに制御レジスタを設けず、DMA監視部が直接DMAコントローラを起動するように構成してもよい。
実施の形態では、予めイベントレジスタに登録されたDMA要求に対してのみ、DMA監視部が応答し、登録されていないDMA要求が検出された場合には無視するものとした。しかしながら、単に無視するに留まらず、そうした予期しないDMA要求が発生したとき、これをシステム側で記録して後のシステムエラー解析やデバッグなどに利用してもよい。そのために、以下図示しないが、発生したDMA要求と登録されているDMA要求とをそれぞれ比較するコンパレータと、DMA要求が発生したにもかかわらず、いずれのコンパレータの出力もインアクティブであるとき、予期しないDMA要求が発生したとみなしてこの事実を記録するシステムレジスタとをDMAC起動処理装置内に設けておき、CPUがこのシステムレジスタの内容を読み出すようにすればよい。
実施の形態で述べた構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、記録媒体などの間で変換したものもまた、本発明の態様として有効である。また、本明細書にフローチャートとして記載した方法は、その順序にそって時系列的に実行される処理のほか、並列的または個別に実行される処理をも含む。
本発明の一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが専用のハードウェアに組み込まれているコンピュータとして実現してもよいし、あるいは、各種のプログラムをインストールすることで各種の機能を実行することが可能な汎用のコンピュータに、ネットワークや記録媒体からソフトウェアをインストールすることによって実現してもよい。
実施の形態1に係る情報処理システムのハードウェア構成図である。 DMAC起動処理装置の機能ブロック図である。 DMAC起動処理装置における処理を示すフローチャートである。 実施の形態2に係る情報処理システムのハードウェア構成図である。 DMAのカスケード処理を説明する図である。 DMAC起動処理装置における処理を示すフローチャートである。 データのブロック転送の概念図である。 実施の形態3に係る情報処理システムのハードウェア構成図である。
符号の説明
10 CPU、 14 メインメモリ、 20、30 入出力デバイス、 48 DMAコントローラ、 50 レジスタセット、 52 制御レジスタ、 54 転送元アドレスレジスタ、 56 転送先アドレスレジスタ、 58 サイズレジスタ、 60 イベント監視部、 62 発生イベント取得部、 64 イベント比較部、 66 DMA起動部、 68 イベント書き換え部、 70 DMAC起動処理装置、 72 イベントレジスタ、 100 情報処理システム、 110 DMAコントローラ、 120 レジスタセット、 170 DMAC起動処理装置、 172 イベントレジスタ、 200 情報処理システム、 210 DMAコントローラ、 220 第1レジスタセット、 230 DMAC起動処理装置、 240 第2レジスタセット、 250 第2レジスタセット、 300 情報処理システム。

Claims (11)

  1. コンピュータシステム上でのDMA転送を制御するDMAコントローラと、
    DMA転送の転送元または転送先となりDMA転送の実行を要求する一つ以上の周辺装置であって、各周辺装置で所定のイベントが発生したとき、周辺装置の識別情報とイベントの内容とを含む通知信号を送信する周辺装置と
    DMA転送を許可すべき周辺装置における監視対象となるイベントの内容を登録するためのイベントレジスタと、周辺装置から前記通知信号を受け取り、該通知信号および前記イベントレジスタに含まれる周辺装置の識別情報およびイベントの内容が一致するとき、前記DMAコントローラを起動して前記識別情報で特定される周辺装置に関するDMA転送を実行するイベント監視部と、を有する起動処理装置と、
    を備えることを特徴とするDMA転送システム。
  2. 相互に機能の異なる周辺装置を複数備え、
    前記起動処理装置は二つ以上のイベントレジスタを有し、それぞれに異なる周辺装置に関連するイベントを登録可能であことを特徴とする請求項に記載のDMA転送システム。
  3. 前記周辺装置は、前記DMAコントローラの制御下におけるDMA転送の終了をイベントの内容として含む通知信号を前記イベント監視部に送信することを特徴とする請求項またはに記載のDMA転送システム。
  4. 連続して転送すべきデータブロックに関する情報がDMA転送の対象として前記DMAコントローラに書き込まれており、
    あるデータブロックのDMA転送の終了が、次のデータブロックに対応するDMA転送を起動するためのイベントの内容として前記イベントレジスタに登録されることを特徴とする請求項に記載のDMA転送システム。
  5. 前記イベント監視部は、前記周辺装置と前記起動処理装置とを接続する専用線を介して前記周辺装置から通知信号を受け取ることを特徴とする請求項ないしのいずれかに記載のDMA転送システム。
  6. 中央処理装置を介さずに一つ以上の周辺装置と記憶装置間でDMA転送を実行するDMAコントローラを含むコンピュータシステムにおいて、相互に関連する複数のデータブロックを連続してDMA転送する方法であって、
    中央処理装置が、DMA転送を許可すべき周辺装置における監視対象となるイベントの内容をイベントレジスタに登録し、
    各周辺装置が、所定のイベントが発生したとき、周辺装置の識別情報とイベントの内容とを含む通知信号を送信し、
    DMA起動処理装置が、各周辺装置から前記通知信号を受け取り、該通知信号および前記イベントレジスタに含まれる周辺装置の識別情報およびイベントの内容が一致するとき、前記DMAコントローラを起動して前記識別情報で特定される周辺装置に関するDMA転送を実行することを含み、
    中央処理装置が前記複数のデータブロックの情報を予め前記DMAコントローラに記憶させておき、第1のイベントの発生に対応して起動されたデータブロックのDMA転送の終了を、次に連なるべきデータブロックのDMA転送を起動させるための第2のイベントとして登録することを特徴とするDMA転送方法。
  7. DMA転送を実行するための情報を格納する複数のレジスタからなるレジスタセットを二組以上有し、コンピュータシステム上のDMA転送を制御するDMAコントローラと、
    DMA転送の転送元または転送先となりDMA転送の実行を要求する一つ以上の周辺装置であって、各周辺装置で所定のイベントが発生したとき、周辺装置の識別情報とイベントの内容とを含む通知信号を送信する周辺装置と、
    前記レジスタセットに対応づけられDMA転送を許可すべき周辺装置における監視対象となるイベントの内容を登録するための複数のイベントレジスタを有し、前記周辺装置から受け取る通知信号に基づき前記DMAコントローラを起動するか否かを判定する起動処理装置と、
    を備え、
    前記起動処理装置は、前記通知信号および前記複数のイベントレジスタのいずれかに含まれる周辺装置の識別情報およびイベントの内容の両方が一致するとき、一致したイベントを登録していたイベントレジスタに対応するレジスタセット内の情報を参照してDMA転送を実行するよう前記DMAコントローラを起動することを特徴とするDMA転送システム。
  8. DMA転送を実行するための情報を格納する複数のレジスタからなる第1レジスタセットを少なくとも一組有し、コンピュータシステム上のDMA転送を制御するDMAコントローラと、
    DMA転送の転送元または転送先となりDMA転送の実行を要求する一つ以上の周辺装置であって、各周辺装置で所定のイベントが発生したとき、周辺装置の識別情報とイベントの内容とを含む通知信号を送信する周辺装置と、
    前記周辺装置から受け取る通知信号に基づき前記DMAコントローラを起動するか否かを判定する起動処理装置と、
    を備え、
    前記起動処理装置は、DMA転送を許可すべき周辺装置における監視対象となるイベントの内容が登録されるイベントレジスタと、該イベントレジスタに対応づけられたDMA転送を実行するための情報が格納される複数のレジスタとからなる第2レジスタセットを二組以上有し、
    前記起動処理装置は、各周辺装置から前記通知信号を受け取り、該通知信号およびいずれかのイベントレジスタに含まれる周辺装置の識別情報およびイベントの内容が一致するとき、一致したイベントを登録していたイベントレジスタに対応する第2レジスタセット内の情報を前記DMAコントローラ内の第1レジスタセットに書き込み、その後該第1レジスタセット内の情報を参照してDMA転送を実行するよう前記DMAコントローラを起動することを特徴とするDMA転送システム。
  9. 中央処理装置を介さずに一つ以上の周辺装置と記憶装置間でDMA転送を実行するDMAコントローラを含むコンピュータシステムにおいて、
    中央処理装置が、DMA転送を許可すべき周辺装置における監視対象となるイベントの内容をイベントレジスタに登録し、
    各周辺装置が、所定のイベントが発生したとき、周辺装置の識別情報とイベントの内容とを含む通知信号を送信し、
    DMA起動処理装置が、各周辺装置から前記通知信号を受け取り、該通知信号および前記イベントレジスタに含まれる周辺装置の識別情報およびイベントの内容が一致するとき、前記DMAコントローラを起動して前記識別情報で特定される周辺装置に関するDMA転送を実行することを特徴とするDMA転送方法。
  10. 中央処理装置を介さずに一つ以上の周辺装置と記憶装置間でDMA転送を実行するDMAコントローラを起動させる処理をDMA起動処理装置に実行させるプログラムであって、
    DMA転送を許可すべき周辺装置における監視対象となるイベントの内容をイベントレジスタに登録する処理と、
    各周辺装置で所定のイベントが発生したときに各周辺装置から発信される周辺装置の識別情報とイベントの内容とを含む通知信号を受け取る処理と、
    前記通知信号および前記イベントレジスタに含まれる周辺装置の識別情報およびイベントの内容が一致するとき、前記DMAコントローラを起動して前記識別情報で特定される周辺装置に関するDMA転送を実行する処理と、
    を含むことを特徴とするDMA転送処理プログラム。
  11. 請求項10に記載のプログラムを格納したコンピュータにて読取可能な記録媒体。
JP2005322278A 2005-11-07 2005-11-07 起動処理装置、dma転送システム、dma転送方法 Expired - Fee Related JP4530971B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2005322278A JP4530971B2 (ja) 2005-11-07 2005-11-07 起動処理装置、dma転送システム、dma転送方法
US11/515,396 US7779172B2 (en) 2005-11-07 2006-09-01 Activator, DMA transfer system, DMA transfer method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005322278A JP4530971B2 (ja) 2005-11-07 2005-11-07 起動処理装置、dma転送システム、dma転送方法

Publications (2)

Publication Number Publication Date
JP2007128425A JP2007128425A (ja) 2007-05-24
JP4530971B2 true JP4530971B2 (ja) 2010-08-25

Family

ID=38120120

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005322278A Expired - Fee Related JP4530971B2 (ja) 2005-11-07 2005-11-07 起動処理装置、dma転送システム、dma転送方法

Country Status (2)

Country Link
US (1) US7779172B2 (ja)
JP (1) JP4530971B2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4791909B2 (ja) * 2006-08-21 2011-10-12 株式会社東芝 高速入出力機能を備える制御装置、及びその制御データの制御方法
US8117475B2 (en) * 2006-12-15 2012-02-14 Microchip Technology Incorporated Direct memory access controller
US9141572B2 (en) 2006-12-15 2015-09-22 Microchip Technology Incorporated Direct memory access controller
JP5407631B2 (ja) * 2009-07-21 2014-02-05 富士ゼロックス株式会社 回路情報生成装置、機能実行システム、及びプログラム
US20110022767A1 (en) * 2009-07-27 2011-01-27 Electronics And Telecommunications Research Institute Dma controller with interrupt control processor
GB2495959A (en) * 2011-10-26 2013-05-01 Imagination Tech Ltd Multi-threaded memory access processor
US20150186311A1 (en) * 2013-12-28 2015-07-02 Ming Kiat Yap Smart direct memory access
JP2018116550A (ja) 2017-01-19 2018-07-26 Necプラットフォームズ株式会社 転送制御装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005202767A (ja) * 2004-01-16 2005-07-28 Toshiba Corp プロセッサシステム、dma制御回路、dma制御方法、dmaコントローラの制御方法、画像処理方法および画像処理回路

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5850529A (en) * 1995-08-11 1998-12-15 Kabushiki Kaisha Toshiba Method and apparatus for detecting a resource lock on a PCI bus
SG77135A1 (en) * 1996-04-26 2000-12-19 Texas Instruments Inc Method and system for assigning a channel number to a received data packet
US6202107B1 (en) * 1998-11-19 2001-03-13 Sun Microsystems, Inc. Host controller interface descriptor fetching unit
US6654819B1 (en) * 1999-07-15 2003-11-25 Texas Instruments Incorporated External direct memory access processor interface to centralized transaction processor

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005202767A (ja) * 2004-01-16 2005-07-28 Toshiba Corp プロセッサシステム、dma制御回路、dma制御方法、dmaコントローラの制御方法、画像処理方法および画像処理回路

Also Published As

Publication number Publication date
US20070130381A1 (en) 2007-06-07
JP2007128425A (ja) 2007-05-24
US7779172B2 (en) 2010-08-17

Similar Documents

Publication Publication Date Title
JP4530971B2 (ja) 起動処理装置、dma転送システム、dma転送方法
CA3062336C (en) Apparatus and method for controlling data acceleration
US8266340B2 (en) DMA controller
JP2006522414A (ja) 仮想周辺コンポーネントインターコネクト多重ファンクション装置
JP2005202767A (ja) プロセッサシステム、dma制御回路、dma制御方法、dmaコントローラの制御方法、画像処理方法および画像処理回路
US6697906B1 (en) Semiconductor device supporting integrated data transfer bridging between CPU memory and I/O device
JP3055917B2 (ja) データ転送制御装置
JP2006338538A (ja) ストリームプロセッサ
US6496878B1 (en) Transfer progress alert module
JPH03129448A (ja) データ転送制御装置
JP2002245022A (ja) マルチプロセッサシステムとその共有メモリ制御方法、及び共有メモリ制御プログラム
US8756356B2 (en) Pipe arbitration using an arbitration circuit to select a control circuit among a plurality of control circuits and by updating state information with a data transfer of a predetermined size
WO2024113838A1 (zh) 处理器设置方法、装置、电子设备及存储介质
JP3446653B2 (ja) データ転送装置
JP2007310735A (ja) ダイレクトメモリアクセスコントローラ
JP2005258509A (ja) ストレージ装置
US20190121761A1 (en) Bit Manipulation Capable Direct Memory Access
JP2008108126A (ja) データ転送制御装置及びそのバスアクセス調停方法
US20060136617A1 (en) Data transfer apparatus and data transfer method
JP2002278918A (ja) Dma装置
JP2000089971A (ja) 割込み順位制御方法及び割込み順位制御装置
JP2765267B2 (ja) ダイレクトメモリアクセス転送制御装置
JP2006155488A (ja) データ処理装置およびデータ処理方法
JP2004355543A (ja) 情報処理装置および割り込み通知方法
JP2972557B2 (ja) データ転送制御装置および制御方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090805

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090818

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091006

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100608

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100608

R150 Certificate of patent or registration of utility model

Ref document number: 4530971

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130618

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees