(57)【特許請求の範囲】
【請求項１】
コンピュータシステム上でのＤＭＡ転送を制御するＤＭＡコントローラと、
ＤＭＡ転送の転送元または転送先となりＤＭＡ転送の実行を要求する一つ以上の周辺装置であって、各周辺装置で所定のイベントが発生したとき、周辺装置の識別情報とイベントの内容とを含む通知信号を送信する周辺装置と、
ＤＭＡ転送を許可すべき周辺装置における監視対象となるイベントの内容を登録するためのイベントレジスタと、各周辺装置から前記通知信号を受け取り、該通知信号および前記イベントレジスタに含まれる周辺装置の識別情報およびイベントの内容が一致するとき、前記ＤＭＡコントローラを起動して前記識別情報で特定される周辺装置に関するＤＭＡ転送を実行するイベント監視部と、を有する起動処理装置と、
を備えることを特徴とするＤＭＡ転送システム。
【請求項２】
相互に機能の異なる周辺装置を複数備え、
前記起動処理装置は二つ以上のイベントレジスタを有し、それぞれに異なる周辺装置に関連するイベントを登録可能であることを特徴とする請求項１に記載のＤＭＡ転送システム。
【請求項３】
前記周辺装置は、前記ＤＭＡコントローラの制御下におけるＤＭＡ転送の終了をイベントの内容として含む通知信号を前記イベント監視部に送信することを特徴とする請求項１または２に記載のＤＭＡ転送システム。
【請求項４】
連続して転送すべきデータブロックに関する情報がＤＭＡ転送の対象として前記ＤＭＡコントローラに書き込まれており、
あるデータブロックのＤＭＡ転送の終了が、次のデータブロックに対応するＤＭＡ転送を起動するためのイベントの内容として前記イベントレジスタに登録されることを特徴とする請求項３に記載のＤＭＡ転送システム。
【請求項５】
前記イベント監視部は、前記周辺装置と前記起動処理装置とを接続する専用線を介して前記周辺装置から通知信号を受け取ることを特徴とする請求項１ないし４のいずれかに記載のＤＭＡ転送システム。
【請求項６】
中央処理装置を介さずに一つ以上の周辺装置と記憶装置間でＤＭＡ転送を実行するＤＭＡコントローラを含むコンピュータシステムにおいて、相互に関連する複数のデータブロックを連続してＤＭＡ転送する方法であって、
中央処理装置が、ＤＭＡ転送を許可すべき周辺装置における監視対象となるイベントの内容をイベントレジスタに登録し、
各周辺装置が、所定のイベントが発生したとき、周辺装置の識別情報とイベントの内容とを含む通知信号を送信し、
ＤＭＡ起動処理装置が、各周辺装置から前記通知信号を受け取り、該通知信号および前記イベントレジスタに含まれる周辺装置の識別情報およびイベントの内容が一致するとき、前記ＤＭＡコントローラを起動して前記識別情報で特定される周辺装置に関するＤＭＡ転送を実行することを含み、
中央処理装置が前記複数のデータブロックの情報を予め前記ＤＭＡコントローラに記憶させておき、第１のイベントの発生に対応して起動されたデータブロックのＤＭＡ転送の終了を、次に連なるべきデータブロックのＤＭＡ転送を起動させるための第２のイベントとして登録することを特徴とするＤＭＡ転送方法。
【請求項７】
ＤＭＡ転送を実行するための情報を格納する複数のレジスタからなるレジスタセットを二組以上有し、コンピュータシステム上のＤＭＡ転送を制御するＤＭＡコントローラと、
ＤＭＡ転送の転送元または転送先となりＤＭＡ転送の実行を要求する一つ以上の周辺装置であって、各周辺装置で所定のイベントが発生したとき、周辺装置の識別情報とイベントの内容とを含む通知信号を送信する周辺装置と、
前記レジスタセットに対応づけられＤＭＡ転送を許可すべき周辺装置における監視対象となるイベントの内容を登録するための複数のイベントレジスタを有し、前記周辺装置から受け取る通知信号に基づき前記ＤＭＡコントローラを起動するか否かを判定する起動処理装置と、
を備え、
前記起動処理装置は、前記通知信号および前記複数のイベントレジスタのいずれかに含まれる周辺装置の識別情報およびイベントの内容の両方が一致するとき、一致したイベントを登録していたイベントレジスタに対応するレジスタセット内の情報を参照してＤＭＡ転送を実行するよう前記ＤＭＡコントローラを起動することを特徴とするＤＭＡ転送システム。
【請求項８】
ＤＭＡ転送を実行するための情報を格納する複数のレジスタからなる第１レジスタセットを少なくとも一組有し、コンピュータシステム上のＤＭＡ転送を制御するＤＭＡコントローラと、
ＤＭＡ転送の転送元または転送先となりＤＭＡ転送の実行を要求する一つ以上の周辺装置であって、各周辺装置で所定のイベントが発生したとき、周辺装置の識別情報とイベントの内容とを含む通知信号を送信する周辺装置と、
前記周辺装置から受け取る通知信号に基づき前記ＤＭＡコントローラを起動するか否かを判定する起動処理装置と、
を備え、
前記起動処理装置は、ＤＭＡ転送を許可すべき周辺装置における監視対象となるイベントの内容が登録されるイベントレジスタと、該イベントレジスタに対応づけられたＤＭＡ転送を実行するための情報が格納される複数のレジスタとからなる第２レジスタセットを二組以上有し、
前記起動処理装置は、各周辺装置から前記通知信号を受け取り、該通知信号およびいずれかのイベントレジスタに含まれる周辺装置の識別情報およびイベントの内容が一致するとき、一致したイベントを登録していたイベントレジスタに対応する第２レジスタセット内の情報を前記ＤＭＡコントローラ内の第１レジスタセットに書き込み、その後該第１レジスタセット内の情報を参照してＤＭＡ転送を実行するよう前記ＤＭＡコントローラを起動することを特徴とするＤＭＡ転送システム。
【請求項９】
中央処理装置を介さずに一つ以上の周辺装置と記憶装置間でＤＭＡ転送を実行するＤＭＡコントローラを含むコンピュータシステムにおいて、
中央処理装置が、ＤＭＡ転送を許可すべき周辺装置における監視対象となるイベントの内容をイベントレジスタに登録し、
各周辺装置が、所定のイベントが発生したとき、周辺装置の識別情報とイベントの内容とを含む通知信号を送信し、
ＤＭＡ起動処理装置が、各周辺装置から前記通知信号を受け取り、該通知信号および前記イベントレジスタに含まれる周辺装置の識別情報およびイベントの内容が一致するとき、前記ＤＭＡコントローラを起動して前記識別情報で特定される周辺装置に関するＤＭＡ転送を実行することを特徴とするＤＭＡ転送方法。
【請求項１０】
中央処理装置を介さずに一つ以上の周辺装置と記憶装置間でＤＭＡ転送を実行するＤＭＡコントローラを起動させる処理をＤＭＡ起動処理装置に実行させるプログラムであって、
ＤＭＡ転送を許可すべき周辺装置における監視対象となるイベントの内容をイベントレジスタに登録する処理と、
各周辺装置で所定のイベントが発生したときに各周辺装置から発信される周辺装置の識別情報とイベントの内容とを含む通知信号を受け取る処理と、
前記通知信号および前記イベントレジスタに含まれる周辺装置の識別情報およびイベントの内容が一致するとき、前記ＤＭＡコントローラを起動して前記識別情報で特定される周辺装置に関するＤＭＡ転送を実行する処理と、
を含むことを特徴とするＤＭＡ転送処理プログラム。
【請求項１１】
請求項１０に記載のプログラムを格納したコンピュータにて読取可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ＤＭＡを用いたデータ転送技術に関する。
【背景技術】
【０００２】
ゲーム機を初めとするマルチメディア端末では、画像データや音声データを頻繁にメモリに読み書きする必要がある。そこで、ＣＰＵ（Cetnral Processing Unit）の負荷を軽減するため、メモリと外部の入出力装置との間のデータ転送はＤＭＡ（Direct Memory Access）転送によって行われることが多い。ＤＭＡ転送は、ＣＰＵを介することなく、メモリと入出力装置間でデータの受け渡しを高速に実行する方法である。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
割り込みを用いてＤＭＡ転送を実装するシステムにおいては、一回の転送処理のためにＣＰＵへの割り込みが二回発生するのが一般的である。すなわち、入出力装置からＤＭＡ転送要求があったときと、ＤＭＡ転送が終了したときである。ＣＰＵへの割り込みが発生すると、ＣＰＵは割り込み処理を行わなければならない。したがって、割り込みが多いほどＣＰＵの負荷が増大する。
【０００４】
本発明はこうした課題に鑑みてなされたものであり、その目的は、割り込み回数を減らしてＣＰＵにかかる負荷を軽減するデータ転送技術を提供することにある。
【課題を解決するための手段】
【０００５】
本発明のある態様は、コンピュータシステム上で発生するイベントを取得し、取得したイベントと予め登録されたイベントとを比較し、イベントが一致したときに、周辺装置と記憶装置間のデータ転送を制御するＤＭＡコントローラを起動するようにした。
【０００６】
ここで「イベント」とは、周辺装置、記憶装置、ＤＭＡコントローラにおける任意の処理の発生または終了のことをいう。
この態様によれば、コンピュータシステムで発生するＤＭＡ要求のうち、いずれに応答するかをイベントによって選択できるので、ＣＰＵを介することなく、所望のＤＭＡ転送を開始することができる。
【０００７】
本発明の別の態様は、相互に関連する複数のデータブロックを連続してＤＭＡ転送する方法である。この方法では、複数のデータブロックの情報を予め前記ＤＭＡコントローラに記憶させておく。そして、第１のイベントの発生に対応して起動されたデータブロックのＤＭＡ転送の終了を、次に連なるべきデータブロックのＤＭＡ転送を起動させるための第２のイベントとして登録するようにした。
【０００８】
これによると、ＤＭＡ転送をイベント駆動の方式で起動する場合に、ひとつのＤＭＡ転送の終了を別のＤＭＡ転送を起動させるイベントとして登録するので、データの連続転送をＣＰＵの介在なしで実現することができる。
【０００９】
なお、本発明の構成要素や表現を方法、システム、コンピュータプログラム、コンピュータプログラムを格納した記録媒体などの間で相互に置換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１０】
本発明によれば、ＤＭＡ転送の際のＣＰＵへの割り込み回数を低減することができる。
【発明を実施するための最良の形態】
【００１１】
まず、従来のＤＭＡ転送方法について概略を説明し、その後、本発明の特徴について説明する。
【００１２】
従来、メインメモリと各種入出力デバイスとの間のデータ転送を高速に実行するために、コンピュータ全体を制御するＣＰＵを介さずにデータ転送を行うＤＭＡ転送が用いられることが多い。通常、ＤＭＡ転送は以下のような手順で行われる。入出力デバイスからＤＭＡ転送要求が発せられると、ＣＰＵに割り込みが入り、割り込みハンドラが呼び出される。割り込みハンドラは、ＤＭＡ転送に必要な情報、例えば転送元のデバイスのアドレス指定、転送先のデバイスのアドレス指定、および転送するデータのバイト数（サイズ）などの情報をＤＭＡコントローラに設定する。ＤＭＡコントローラがバスアービタに対してバス使用要求を出力し、その後ＣＰＵがＤＭＡコントローラをキックすると、ＤＭＡコントローラがアドレスバスおよびデータバスを占有してＤＭＡ転送制御を開始する。ＤＭＡ転送が終了すると、再びＣＰＵに対して割り込みが入り、メインメモリに新たなデータが準備される。このような処理を繰り返し実行することにより、ＤＭＡコントローラがメインメモリとデバイス間のデータ転送制御を行う。
しかし、この方法では、ＣＰＵに対し頻繁に割り込みが入ることになり、ＣＰＵの処理効率が低下する。
そこで、本願発明者は、ＤＭＡ転送の実行に当たり、ＣＰＵへの割り込み回数を減らして処理効率を向上させることに想到した。以下、本発明について、いくつかの実施形態を参照して詳細に説明する。
【００１３】
実施の形態１．
図１は、実施の形態１に係る情報処理システム１００のハードウェア構成図である。情報処理システム１００は、メインＣＰＵ１０、メインメモリ１４、ＤＭＡコントローラ４８、およびＤＭＡコントローラ起動処理装置（以下、「ＤＭＡＣ起動処理装置」と表記する）７０を備える。これらは、システムバス１６を介して相互に接続される。
ＣＰＵ１０は、情報処理システム１００の全体を制御するとともに、外部記憶装置や記録媒体からメインメモリ１４にロードされたプログラムにしたがって、各種の処理を実行する。メインメモリ１４には、ＣＰＵ１０が各種の処理を実行する上で必要となるデータなども適宜記憶される。
【００１４】
入出力デバイス２０、３０は、ディスプレイなどの出力装置、ハードディスクドライブなどの外部記憶装置、モデムやターミナルアダプタ（ＴＡ）などの通信装置、ＴＶチューナ、プリンタなどが含まれる。磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリなどのリムーバブル記録媒体を使用するドライブ装置であってもよい。通信装置は、インターネットを一例とするネットワークを介して、他の情報処理システムなどとの通信処理を実行する。
【００１５】
入出力デバイス２０、３０は、Ｉ／Ｏバス４６を介して接続される。システムバス１６とＩ／Ｏバス４６の間には、両者間のトランシーバとして機能するバスブリッジ４２が設けられる。
入出力デバイス２０、３０は、データの入出力を管理する図示しないコプロセッサとバッファ２２、３２とを有し、メインメモリ１４とバッファとの間でデータの読み書きが実行される。なお、図１には２つの入出力デバイスが描かれるが、入出力デバイスはひとつであっても３つ以上であってもよい。
【００１６】
情報処理システム１００では、ＣＰＵ１０と高速で接続するＤＭＡコントローラ４８がバスブリッジ４２の動作を制御する。図示しないバスアービタにより、システムバス１６上で、ＣＰＵ１０、ＤＭＡコントローラ４８および他のバスマスタ間でバス使用権の譲渡が行われる。ＤＭＡコントローラ４８は、ＣＰＵ１０と同一のバス上で、入出力デバイス２０、３０とメモリ等の記憶装置間のデータ転送をＣＰＵ１０を介さずに直接実行するＤＭＡ転送を制御する。
【００１７】
ＤＭＡコントローラ４８は、制御レジスタ（図中「ＫＩＣＫ」と表す）５２、転送元アドレスレジスタ（図中「ＳＡ」と表す）５４、転送先アドレスレジスタ（図中「ＤＡ」と表す）５６、サイズレジスタ（図中「ＳＩＺＥ」と表す）５８からなるレジスタセット５０を一組備える。
制御レジスタ５２は、ＤＭＡコントローラ４８の制御のための設定値を格納するレジスタであり、この制御レジスタに開始ビットがセットされることでＤＭＡコントローラ４８が起動する。転送元アドレスレジスタ５４には、データの転送元のアドレス（ソースアドレス）がセットされる。転送先アドレスレジスタ５６には、データの転送先のアドレス（ディスティネーションアドレス）がセットされる。アドレスは、データ転送毎にインクリメントされていく。サイズレジスタ５８には、転送データサイズがセットされ、データ転送毎に転送カウント値をデクリメントされていく。
【００１８】
ＣＰＵ１０は、ＤＭＡコントローラ４８内の転送元アドレスレジスタ５４に転送元アドレスを、転送先アドレスレジスタ５６内に転送先アドレスを、およびサイズレジスタ５８にデータサイズをセットする。設定後、ＤＭＡコントローラ４８内の制御レジスタ５２に開始ビットがセットされると、ＤＭＡコントローラ４８が起動する。
【００１９】
ＤＭＡコントローラ４８は、セットされたアドレスにしたがって、データを転送元から転送先に転送する。ＤＭＡコントローラ４８が、転送元アドレスをアドレスバス上に出力し、読み出し信号を出力すると、転送元アドレスに格納されたデータが転送元のデバイスからデータバス上に出力される。続いて、転送先アドレスをアドレスバス上に出力し、書き込み信号を出力すると、転送先のデバイスの転送先アドレスに対し、データバス上のデータが書き込まれる。データの転送を実行するたびに、転送元アドレスと転送先アドレスは加算され、データサイズは転送カウント値だけ減算される。残りのデータサイズがゼロになると、ＣＰＵ１０に割り込みを発生させる。
【００２０】
ＤＭＡ転送の転送元または転送先となる入出力デバイス２０、３０は、イベントの発生を通知するイベント通知信号をバスを介してＤＭＡＣ起動処理装置７０に送る。また、入出力デバイスは、ＤＭＡコントローラ４８の制御下におけるＤＭＡ転送の終了もイベントとしてＤＭＡＣ起動処理装置７０に通知する。イベントは、各入出力デバイスを識別する符号と、イベントの内容を表す符号とがコード化されて記述される。
【００２１】
ＤＭＡＣ起動処理装置７０は、イベント監視部６０と、イベントレジスタ（図中「ＥＶＥＮＴ」と表す）７２を含む。イベントレジスタ７２には、応答対象のイベントが登録される。イベント監視部６０は、入出力デバイス２０、３０からイベント通知信号を受け取り、いずれのデバイスのＤＭＡ転送に応答するかを決定する。具体的には、入出力デバイスから通知されたイベントと予めイベントレジスタ７２に登録されているイベントとを比較し、イベントが一致したときＤＭＡコントローラ４８を起動する。
【００２２】
別の例として、イベント監視部６０は、入出力デバイス２０、３０とＤＭＡＣ起動処理装置７０とを接続する専用線を介して入出力デバイスで発生するイベントの通知を受け取ってもよい。この専用線をすべての入出力デバイスで共通にして、オープンドレイン方式でハードワイアードされていてもよい。
【００２３】
図２は、図１のイベント監視部６０のより詳細なブロック図である。イベント監視部６０は、発生イベント取得部６２と、イベント比較部６４と、ＤＭＡ起動部６６と、イベント書き換え部６８を含む。
発生イベント取得部６２は、入出力デバイス２０、３０から送られてくるイベント通知信号を受け取る。イベント比較部６４は、イベントレジスタ７２に定義されているイベントと、受け取ったイベントとが一致するか否かを比較する。ＤＭＡ起動部６６は、イベントが一致したとき、ＤＭＡコントローラ４８の制御レジスタ５２に開始ビットをセットして、ＤＭＡコントローラ４８を起動する。イベント書き換え部６８は、一定の条件が成立したときに、イベントレジスタ７２の内容を書き換える。
【００２４】
本実施の形態では、入出力デバイス２０、３０がイベント監視部６０にイベントを通知し、これに応じてＣＰＵ１０ではなくイベント監視部６０がＤＭＡコントローラ４８を起動する。したがって、ＣＰＵ１０を介することなくＤＭＡ転送を開始することができる。
【００２５】
例えば、ＣＰＵ１０は、特定の入出力デバイスとの間のＤＭＡ転送を許可する場合には、その入出力デバイスに関するイベントを予めイベントレジスタ７２に登録しておく。入出力デバイス２０、３０からイベントが通知されると、イベント監視部６０はそのイベントに応答するか否かを判断し、応答すると判断したときはＤＭＡコントローラ４８を起動する。応答しないと判断したときは、そのイベント通知を無視する。ＤＭＡ転送が終了すると、ＤＭＡコントローラ４８は転送の終了をＣＰＵ１０に通知する。したがって、ＣＰＵ１０は、予めＤＭＡ転送を許可すべき入出力デバイスに対応するイベントをＤＭＡＣ起動処理装置７０のイベントレジスタ７２に登録し、そのＤＭＡ転送に必要なアドレスなどの情報をＤＭＡコントローラ４８のレジスタセット５０に登録しておけば、転送の実行に関わる必要がなく、転送の開始の際に割り込みを受けることもない。したがって、ＤＭＡ転送に際してＣＰＵ１０に割り込みの入る回数が減少する。
【００２６】
図３は、イベント監視部６０におけるＤＭＡコントローラ起動処理のフローチャートである。初期状態として、メインメモリ１４または入出力デバイス２０、３０のバッファに、転送すべきデータが格納されているとする。
【００２７】
まず、ＣＰＵ１０は、ＤＭＡコントローラ４８内のレジスタセット５０にＤＭＡ転送の転送元アドレス、転送先アドレス、およびデータサイズをセットするとともに、ＤＭＡＣ起動処理装置７０のイベントレジスタ７２にＤＭＡ転送を許可するイベントをセットしておく（Ｓ１０）。セットするイベントは、例えば、入出力デバイス内のバッファのバッファフル（バッファオーバーフローともいう）、またはバッファエンプティ（バッファアンダーフローともいう）である。
【００２８】
次に、イベント監視部６０の発生イベント取得部６２は、入出力デバイス２０、３０で発生したイベントの通知を受け取る（Ｓ１２）。続いて、イベント比較部６４は、イベントレジスタ７２に設定されているイベントと受け取ったイベントとを比較し（Ｓ１４）、それらが一致するか否かを判定する（Ｓ１６）。一致しない場合（Ｓ１６のＮ）、このフローチャートを終了する。一致する場合（Ｓ１６のＹ）、イベント監視部６０のＤＭＡ起動部６６は、ＤＭＡコントローラ４８の制御レジスタ５２に開始ビットを立てて、ＤＭＡコントローラをキックする（Ｓ１８）。ＤＭＡコントローラ４８は、レジスタセット５０に設定されている情報にしたがって、ＤＭＡ転送を開始する。イベント書き換え部６８は、必要に応じてイベントレジスタ７２を再設定する（Ｓ２０）。
ＤＭＡ転送が終了すると、ＤＭＡの終了割り込みがＣＰＵ１０に入力される。このＤＭＡ終了割り込みにより、メインメモリ１４への新しいデータの準備が開始される。
【００２９】
以上説明したように、実施の形態１によれば、ＤＭＡ転送要求に応答するか否かの判断を実行する機能をＣＰＵの外部に設けることによって、ＣＰＵへの割り込み回数が減少し、ＣＰＵの負荷が低減される。これにより、ＣＰＵはＤＭＡ転送以外の他の処理を担当することが可能となり、情報処理システム全体としての処理効率が向上すると期待される。また、ＣＰＵの負荷が減ることで、消費電力も削減されうる。
【００３０】
また、イベントレジスタにイベントを登録しておき、イベント監視部に通知されてくるイベントと比較する構成をとることによって、ＤＭＡ転送を受け付ける入出力デバイスを限定することができる。例えば、複数の入出力デバイスが情報処理システムに含まれる場合に、イベントレジスタに特定の入出力デバイスに関連するイベントを登録しておけば、一部の入出力デバイスとの間でのみデータの読み書きを実施することができる。複数の入出力デバイスからイベントが通知された場合でも、あるいは、ひとつの入出力デバイスから複数のイベントが通知された場合でも、いずれのイベントに応答してＤＭＡ転送を許可するかは、イベントレジスタに登録されたイベントによって決定される。これによって、外部装置からメインメモリにアクセスしてデータを引き出そうとする不正行為を防止できるので、イベント登録によってセキュリティも向上する。
【００３１】
ＣＰＵにおける処理内容に応じて、ＤＭＡ転送を受け付ける入出力デバイスを使い分けることも可能である。イベントレジスタの内容に応じて応答すべきイベントを決定できるので、あるときは外部記憶装置からメインメモリへのＤＭＡ転送を優先し、あるときはネットワーク通信装置からメインメモリへのＤＭＡ転送を優先するといったように、アプリケーション側の割り込みハンドラを設計することも可能である。このように、アプリケーションの設計の自由度が向上する。また、異なる機能を有する入出力デバイスがシステム内に存在する場合、各入出力デバイスに対応するイベントを登録しておくことで、様々な状況に応じてＤＭＡ転送を実行できる。
【００３２】
実施の形態２．
図２では、ＤＭＡＣ起動処理装置がひとつのイベントレジスタを備える場合について説明したが、複数のイベントレジスタを備える場合であっても同様の手法で対応できる。複数のイベントレジスタと上述のＤＭＡ転送方法とを組み合わせることによって、データの連続転送時にＣＰＵへの割り込み回数をさらに低減することが可能となる。
【００３３】
図４は、実施の形態２に係る情報処理システム２００のハードウェア構成図である。ＣＰＵ１０、キャッシュメモリ１２、メインメモリ１４、入出力デバイス２０、３０については、図１と同様の機能を有するので説明を省略する。ＤＭＡコントローラ１１０は、情報処理システム２００上でのＤＭＡ転送を制御する。入出力デバイス２０、３０は、ＤＭＡ転送の転送元または転送先となる。
【００３４】
ＤＭＡコントローラ１１０には、制御レジスタ１２２、転送元アドレスレジスタ１２４、転送先アドレスレジスタ１２６およびサイズレジスタ１２８から構成されるレジスタセットが複数設けられる。図４には、４セットのレジスタセット１２０、１３０、１４０、１５０（以下、「レジスタセット＃１〜４」と表記する」）が描かれている。
ＤＭＡＣ起動処理装置１７０は、イベント監視部６０と、ＤＭＡコントローラ１１０内のレジスタセット数と同数のイベントレジスタ１７２を備える。そして、イベントレジスタ１７２とレジスタセット＃１〜４とは、一対一に対応づけられている。
【００３５】
実施の形態１と同様に、イベント監視部６０は、入出力デバイス２０、３０からイベント通知信号を受け取る。イベント監視部６０は、受け取ったイベントとイベントレジスタ１７２内のいずれかのイベントとが一致するか否かを判定する。そして、一致したイベントを登録していたイベントレジスタを特定する。そして、そのイベントレジスタに対応づけられたレジスタセット内の制御レジスタに開始ビットをセットする。ＤＭＡコントローラ１１０は、開始ビットがセットされたレジスタセットの情報にしたがって、ＤＭＡ転送を実行する。
【００３６】
このような複数のイベントレジスタを活用すると、より複雑なＤＭＡ転送制御が可能になる。ここでは、一例としてデータのカスケード転送について説明する。
【００３７】
従来、入出力デバイスのバッファとメインメモリとの間でデータを転送するには、ＣＰＵがＤＭＡコントローラに転送先アドレス、転送元アドレス、転送データサイズを設定する。ＣＰＵがＤＭＡコントローラをキックすることにより、ＤＭＡ転送を開始させる。複数ブロックのデータを転送するためには、上記の手順を転送ブロック数分繰り返す必要がある。しかしながら、この従来の方法では、連続転送すべき複数のデータブロックを転送するときにブロック毎に割り込みが入り、ＣＰＵがＤＭＡコントローラをキックしなければならず、ＣＰＵの負担が大きくなってしまうという問題があった。
以下では、上記問題点に鑑み、実施の形態２の情報処理システム２００の構成を利用して、ＣＰＵに割り込みすることなくデータブロックを連続してカスケード状に転送できるＤＭＡ転送方法を提供する。
【００３８】
図５は、データのカスケード転送の概念図である。ここでは、４つのデータブロックをメインメモリから入出力デバイスのひとつに連続して転送する例を考える。この場合、連続して転送すべきデータブロックに関する情報が、ＤＭＡ転送の対象としてＤＭＡコントローラ内のレジスタセット＃１〜４に書き込まれる。また、ＤＭＡＣ起動処理装置１７０の４つのイベントレジスタには、ひとつのデータブロックのＤＭＡ転送の終了イベントが、次のデータブロックに対応するＤＭＡ転送を起動するためのイベントとして登録される。
【００３９】
具体的には、連続転送すべきデータブロック１〜４について、ＤＭＡコントローラ１１０内の４つのレジスタセット＃１〜４に以下の情報を登録する。
レジスタセット＃１：  データブロック１の転送元アドレス、転送先アドレス、データサイズ
レジスタセット＃２：  データブロック２の転送元アドレス、転送先アドレス、データサイズ
レジスタセット＃３：  データブロック３の転送元アドレス、転送先アドレス、データサイズ
レジスタセット＃４：  データブロック４の転送元アドレス、転送先アドレス、データサイズ
【００４０】
ＤＭＡＣ起動処理装置１７０内の４つのイベントレジスタ＃１〜４には以下のようなイベントを登録する。なお、イベントレジスタ＃１〜４は、レジスタセット＃１〜４と一対一に対応づけられている。
イベントレジスタ＃１：  転送先の入出力デバイスのバッファエンプティ
イベントレジスタ＃２：  データブロック１のＤＭＡ転送終了
イベントレジスタ＃３：  データブロック２のＤＭＡ転送終了
イベントレジスタ＃４：  データブロック３のＤＭＡ転送終了
【００４１】
つまり、データブロック１の次に転送すべきデータブロック２の転送先アドレス、転送元アドレスおよびデータサイズを２番目のレジスタセットに登録するとともに、データブロック１の転送終了イベントを２番目のレジスタセットに対応づけられたイベントレジスタ２に登録する。以下のデータブロックについても同様である。
【００４２】
これによって、図５に示すようなカスケード状の転送が実行される。
まず、転送先の入出力デバイスのバッファエンプティを検出すると（Ｓ３２）、イベント監視部６０は、ＤＭＡコントローラ内のレジスタセット＃１の制御レジスタ１２２に開始ビットをセットし（Ｓ３４）、これによりレジスタセット＃１の情報にしたがってＤＭＡコントローラ１１０がＤＭＡ転送を開始する（Ｓ３６）。この転送が終了すると、イベント監視部６０に、レジスタセット＃１で設定されたＤＭＡ転送終了のイベント、つまり、メモリのエンプティイベントが通知される（Ｓ４２）。イベント監視部６０は、イベントレジスタ＃２に登録されているイベントと、通知されたイベントが一致すると判定し、レジスタセット＃２の制御レジスタに開始ビットをセットし（Ｓ４４）、レジスタセット＃２の情報にしたがってＤＭＡコントローラ１１０がＤＭＡ転送を開始する（Ｓ４６）。同様にして、データブロック２の転送が終了すると、イベント発生（Ｓ５２）、レジスタセット＃３の制御レジスタのセット（Ｓ５４）、データブロック３のＤＭＡ転送（Ｓ５６）と続き、さらにデータブロック３の転送が終了すると、イベント発生（Ｓ６２）、レジスタセット＃４の制御レジスタのセット（Ｓ６４）、データブロック４のＤＭＡ転送（Ｓ６６）が続く。
【００４３】
以上のように、前のデータブロックのＤＭＡ転送終了のイベント通知をトリガとして、ＤＭＡコントローラが次々にキックされ転送が行われる。このように、ＤＭＡ転送の終了をイベントとしてイベントレジスタに登録することで、レジスタセット数分だけのデータをＣＰＵを介さずに連続的にＤＭＡ転送することができる。
なお、Ｓ３２において、イベント監視部６０がバッファエンプティを検出してＤＭＡ転送を開始する代わりに、最初のデータブロックについてはＣＰＵ１０がＤＭＡコントローラを起動してもよい。
【００４４】
図６は、図５のカスケード転送を実現するための処理を説明するフローチャートである。まず、ＣＰＵ１０は、ＤＭＡコントローラ１１０内の複数のレジスタセット＃１〜４にＤＭＡ転送に必要な情報をセットするとともに、ＤＭＡＣ起動処理装置１７０のイベントレジスタ１７２にイベントを登録する（Ｓ７０）。次に、転送先のバッファエンプティイベントを受け取ると、イベント監視部６０がレジスタセット＃１の制御レジスタ１２２に開始ビットを立てることによってＤＭＡコントローラ１１０が起動し（Ｓ７２）、レジスタセット＃１の情報にしたがったＤＭＡ転送が開始される（Ｓ７４）。ＤＭＡ転送が終了すると、イベント監視部６０はＤＭＡ転送終了のイベントを受け取る（Ｓ７６）。イベントレジスタ１７２のいずれかと今回のイベントが一致すると（Ｓ７８のＹ）、イベント監視部６０は、そのイベントに対応する次のレジスタセットの制御レジスタに開始ビットをセットする（Ｓ８０）。
【００４５】
連続転送すべきデータブロックがＤＭＡコントローラ１１０内のレジスタセット数（図４では、４つ）より多くあるときは、ひとつのＤＭＡ転送終了後に、空きができたＤＭＡコントローラ内のレジスタセットに、後続するひとつ分のデータブロックに関する情報を登録すればよい。または、４回のＤＭＡ転送終了後に、ＤＭＡコントローラ内の全レジスタセットに後続するデータブロックに関する情報をまとめて登録してもよい。
【００４６】
図７は、メモリ内の不連続データの転送を説明する概念図である。図６で説明したように、データブロックの転送がカスケード状につながるようにイベントレジスタにイベントを設定することで、転送元デバイス８０のデータブロック８２〜８８の実アドレスが不連続であっても、転送先デバイス９０では、連続した宛先にデータブロックを転送することができる。
【００４７】
以上説明したように、実施の形態２によれば、ＤＭＡＣ起動処理装置に複数のイベントレジスタを備え、ＤＭＡ転送の終了をイベントとしてイベントレジスタに登録することによって、レジスタセット数分のデータをＣＰＵを介さずに連続的にＤＭＡ転送することができる。
【００４８】
従来は、ひとつのデータブロックの転送が終了するたびにＣＰＵに割り込みが入り、一回ずつアドレスやデータサイズ等をＤＭＡコントローラに設定する必要があったため、ＣＰＵへの割り込み頻度が高くなっていた。それに対し、本実施の形態では、一回目のイベント発生の前に、ＣＰＵがＤＭＡコントローラ内の複数のレジスタセットにアドレス等の設定をしておけば、その後はデータブロックの転送の終了がイベントとなって発生し、ＤＭＡ監視部がＤＭＡコントローラを起動するので、ＣＰＵが介在する必要がない。
【００４９】
一般に、外部記憶装置とメモリ間のデータ転送は、連続して記憶されているストリームデータをある程度まとまった大きさのブロック単位で読み出している。したがって、上述したようなカスケード状のＤＭＡ転送は、映像データや音声データなどのビットレートが高くかつデータ量の大きいストリームデータを連続的に転送するのに適している。
【００５０】
実施の形態３．
図８は、実施の形態３に係る情報処理システム３００のハードウェア構成図である。ＣＰＵ１０、キャッシュメモリ１２、メインメモリ１４、入出力デバイス２０、３０については、図１と同様の機能を有するので説明を省略する。ＤＭＡコントローラ２１０は、情報処理システム３００上でのＤＭＡ転送を制御する。入出力デバイス２０、３０は、ＤＭＡ転送の転送元または転送先となる。
【００５１】
ＤＭＡコントローラ２１０には、制御レジスタ２２２、転送元アドレスレジスタ２２４、転送先アドレスレジスタ２２６およびサイズレジスタ２２８から構成される第１レジスタセット２２０が少なくともひとつ設けられる。ＤＭＡＣ起動処理装置２３０は、イベント監視部６０の他に、イベントレジスタ２４２、転送元アドレスレジスタ２４４、転送先アドレスレジスタ２４６、およびサイズレジスタ２４８から構成される第２レジスタセットが複数設けられる。図８では、４組の第２レジスタセット２４０、２５０、２６０、２７０を備える。
【００５２】
イベント監視部６０は、入出力デバイス２０、３０からイベント通知信号を受け取る。イベント監視部６０は、受け取ったイベントとイベントレジスタのセット２８０内のいずれかのイベントとが一致するか否かを判定し、一致したイベントを登録していたイベントレジスタを特定する。
続いて、イベント監視部６０は、一致したイベントを登録していたイベントレジスタに対応する第２レジスタセット内の情報、すなわち、転送元アドレス、転送先アドレスおよびデータサイズを、ＤＭＡコントローラ内の空の第１レジスタセット２２０の対応するレジスタに書き込む。その後、イベント監視部６０は、第１レジスタセット内の情報を参照してＤＭＡ転送を実行するように、制御レジスタ２２２に開始ビットをセットする。
【００５３】
以上、本発明をいくつかの実施形態について説明した。従来のＤＭＡコントローラでは、ＤＭＡ転送に伴いＣＰＵに対し頻繁に割り込みが発生する。割り込みが発生するたびに、ＣＰＵは割り込み処理に時間を取られる。これに対し、本発明によれば、ＤＭＡ要求をＣＰＵに発信する代わりに、イベント監視部でイベントを検出し、予め設定されているイベントとのマッチングを取って、それに応答するか否かを決定する。ＤＭＡに応答すると決定された場合にのみ、レジスタセットに設定されている条件にしたがって、ＤＭＡコントローラが起動される。したがって、ＤＭＡコントローラは起動されるのを待機していればよく、またＣＰＵへの割り込み回数が減少する。また、ＤＭＡ転送によりバスが占有されている間であっても、状況いかんでは、ＣＰＵにおいてキャッシュメモリ内のデータを使用した他の作業を継続できる場合もあるので、情報処理システム全体としての処理効率が向上しうる。
また、データブロックを複数の場所に転送するようなときに、ＣＰＵが一回の転送毎に介在する必要がないので、ＣＰＵの処理負荷を減らすことができる。
【００５４】
以上、実施の形態をもとに本発明を説明した。これらの実施の形態は例示であり、各構成要素またはプロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。以下、そのような変形例について述べる。
【００５５】
入出力デバイスでのエンプティイベントは、転送先デバイスのひとつのバッファに空きができたときに発生させてもよいし、連続転送に必要な複数のバッファすべてに空きができたときに発生させてもよい。このように、エンプティイベントを発生させる方法はいくつか考えられる。
【００５６】
実施の形態では、入出力デバイスからイベント通知信号が発せられることとしたが、イベント監視部が入出力デバイスで発生するイベントを随時監視するように構成してもよい。
【００５７】
実施の形態では、ＤＭＡコントローラ内の制御レジスタに開始ビットをセットすることでＤＭＡコントローラを起動したが、ＤＭＡコントローラに制御レジスタを設けず、ＤＭＡ監視部が直接ＤＭＡコントローラを起動するように構成してもよい。
【００５８】
実施の形態では、予めイベントレジスタに登録されたＤＭＡ要求に対してのみ、ＤＭＡ監視部が応答し、登録されていないＤＭＡ要求が検出された場合には無視するものとした。しかしながら、単に無視するに留まらず、そうした予期しないＤＭＡ要求が発生したとき、これをシステム側で記録して後のシステムエラー解析やデバッグなどに利用してもよい。そのために、以下図示しないが、発生したＤＭＡ要求と登録されているＤＭＡ要求とをそれぞれ比較するコンパレータと、ＤＭＡ要求が発生したにもかかわらず、いずれのコンパレータの出力もインアクティブであるとき、予期しないＤＭＡ要求が発生したとみなしてこの事実を記録するシステムレジスタとをＤＭＡＣ起動処理装置内に設けておき、ＣＰＵがこのシステムレジスタの内容を読み出すようにすればよい。
【００５９】
実施の形態で述べた構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、記録媒体などの間で変換したものもまた、本発明の態様として有効である。また、本明細書にフローチャートとして記載した方法は、その順序にそって時系列的に実行される処理のほか、並列的または個別に実行される処理をも含む。
【００６０】
本発明の一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが専用のハードウェアに組み込まれているコンピュータとして実現してもよいし、あるいは、各種のプログラムをインストールすることで各種の機能を実行することが可能な汎用のコンピュータに、ネットワークや記録媒体からソフトウェアをインストールすることによって実現してもよい。
【図面の簡単な説明】
【００６１】
【図１】実施の形態１に係る情報処理システムのハードウェア構成図である。
【図２】ＤＭＡＣ起動処理装置の機能ブロック図である。
【図３】ＤＭＡＣ起動処理装置における処理を示すフローチャートである。
【図４】実施の形態２に係る情報処理システムのハードウェア構成図である。
【図５】ＤＭＡのカスケード処理を説明する図である。
【図６】ＤＭＡＣ起動処理装置における処理を示すフローチャートである。
【図７】データのブロック転送の概念図である。
【図８】実施の形態３に係る情報処理システムのハードウェア構成図である。
【符号の説明】
【００６２】
１０  ＣＰＵ、  １４  メインメモリ、  ２０、３０  入出力デバイス、  ４８  ＤＭＡコントローラ、  ５０  レジスタセット、  ５２  制御レジスタ、  ５４  転送元アドレスレジスタ、  ５６  転送先アドレスレジスタ、  ５８  サイズレジスタ、  ６０  イベント監視部、  ６２  発生イベント取得部、  ６４  イベント比較部、  ６６  ＤＭＡ起動部、  ６８  イベント書き換え部、  ７０  ＤＭＡＣ起動処理装置、  ７２  イベントレジスタ、  １００  情報処理システム、  １１０  ＤＭＡコントローラ、  １２０  レジスタセット、  １７０  ＤＭＡＣ起動処理装置、  １７２  イベントレジスタ、  ２００  情報処理システム、  ２１０  ＤＭＡコントローラ、  ２２０  第１レジスタセット、  ２３０  ＤＭＡＣ起動処理装置、  ２４０  第２レジスタセット、  ２５０  第２レジスタセット、  ３００  情報処理システム。
【図１】
0004530971.tif 000002
【図２】
0004530971.tif 000003
【図３】
0004530971.tif 000004
【図４】
0004530971.tif 000005
【図５】
0004530971.tif 000006
【図６】
0004530971.tif 000007
【図７】
0004530971.tif 000008
【図８】
0004530971.tif 000009