(57)【要約】【課題】付加回路を設けたりＤＭＡ転送周期をプログラムで考慮することなくデータ転送を効率的に行う。【解決手段】インターバルレジスタ９に記憶されているＤＭＡ動作許可期間毎にＤＭＡ動作イネーブル信号がＯＮ／ＯＦＦされる。バスアービタ１３は、ＯＮ状態のバス使用要求信号が供給されている間、ＤＭＡ動作イネーブル信号の状態を調べ、ＯＮ状態であればシステムバス１４の使用権をＤＭＡコントローラ１５に優先的に与え、メモリ１１と入出力装置１２の間で複数のブロックを継続してデータ転送させる。一方、ＤＭＡ動作イネーブル信号がＯＦＦ状態となると、システムバス１４の使用権をＣＰＵ１０に優先的に与えることによって、ＤＭＡデータ転送は中断されると共に、システムバス１４の使用権をＣＰＵ１０に開放する。このときでも、ＣＰＵ１０のシステムバスへのアクセスが無くなれば、ＤＭＡコントローラ１５がシステムバスを使用できる。【選択図】　　　　図１
2004038333.tif 000002
【特許請求の範囲】
【請求項１】
それぞれがバスに接続されたプロセッサと、主記憶装置と、周辺装置と、前記プロセッサと前記バスの使用権を競合し前記主記憶装置と前記周辺装置との間の前記バスを介したデータ転送を制御するダイレクトメモリアクセス制御装置とを備えるデータ転送システムにおいて、
前記ダイレクトメモリアクセス制御装置が発生するダイレクトメモリアクセスイネーブル信号がオン状態になったと判定したときに、前記バスの使用権をＣＰＵ優先からＤＭＡ優先に切り替える手段と、
前記ダイレクトメモリアクセスイネーブル信号がオフ状態になったと判定したときに、前記バスの使用権をＤＭＡ優先からＣＰＵ優先に切り替える手段とを備えて前記バスの使用権を調停するバスアービタを設け、
前記ダイレクトメモリアクセス制御装置は、
所定の周期毎にオン状態とオフ状態とが繰り返されるダイレクトメモリアクセスイネーブル信号を発生するダイレクトメモリアクセスイネーブル信号発生手段と、
前記主記憶装置と前記周辺装置との間のダイレクトメモリアクセスによるデータ転送が外部から要求されているときに、前記優先権にしたがって前記バスの使用権を獲得するバス使用権獲得手段と、
前記バス使用権獲得手段が前記バスの使用権を獲得しているときに、前記主記憶装置と前記周辺装置との間で要求に従ってデータ転送をさせるデータ転送手段を備えることを特徴とするデータ転送システム。
【請求項２】
前記ダイレクトメモリアクセスイネーブル信号の所定の周期は、前記主記憶装置と前記周辺装置との間で１ブロックのデータを転送するのに必要な期間の少なくとも２倍あり、
前記データ転送手段は、前記バス使用権獲得手段が前記バスの使用権を獲得している間、複数のブロックのデータ転送を継続して行わせることを特徴とする請求項１に記載のデータ転送システム。
【請求項３】
前記ダイレクトメモリアクセスイネーブル信号のオン状態とオフ状態との繰返し周期を外部から受け取る周期受取手段と、
前記周期受取手段が受け取った前記繰返し周期を記憶する周期記憶手段とを備え、
前記ダイレクトメモリアクセスイネーブル信号発生手段は、前記周期記憶手段に記憶されている前記繰返し周期に従ってオン状態とオフ状態とが繰り返される前記ダイレクトメモリアクセスイネーブル信号を発生することを特徴とする請求項１または請求項２に記載のデータ転送システム。
【請求項４】
プロセッサとバスの使用権を競合し主記憶装置と周辺装置との間のバスを介したデータ転送を制御するダイレクトメモリアクセス制御方法であって、
所定の周期毎にオン状態とオフ状態とが繰り返されるダイレクトメモリアクセスイネーブル信号を発生する手順と、
前記ダイレクトメモリアクセスイネーブル信号がオン状態になったと判定したときに、前記バスの使用権をＣＰＵ優先からＤＭＡ優先に切り替える手順と、
前記ダイレクトメモリアクセスイネーブル信号がオフ状態になったと判定したときに、前記バスの使用権をＤＭＡ優先からＣＰＵ優先に切り替える手順と、
前記主記憶装置と前記周辺装置との間のダイレクトメモリアクセスによるデータ転送が要求されているときに、前記優先権にしたがって前記バスの使用権を獲得する手順と、
前記バスの使用権を獲得しているときに、前記主記憶装置と前記周辺装置との間で要求に従ってデータ転送をさせる手順とを含むことを特徴とするダイレクトメモリアクセス制御方法。
【請求項５】
プロセッサとダイレクトメモリアクセス制御装置との間におけるバス使用権を調停するバスアービタを構成するコンピュータで実行されるプログラムであって、
前記ダイレクトメモリアクセス制御装置からのバス使用要求の有無を判定するステップと、
前記ダイレクトメモリアクセス制御装置からのバス使用要求があるときに、前記ダイレクトメモリアクセス制御装置が発生するダイレクトメモリアクセスイネーブル信号がオン状態であるかオフ状態であるかを判定するステップと、
前記ダイレクトメモリアクセス制御装置からのバス使用要求が無いか、または前記ダイレクトメモリアクセスイネーブル信号がオフ状態であるときに、前記プロセッサからのバス使用要求の有無を判定するステップと、
前記ダイレクトメモリアクセスイネーブル信号がオン状態であるか、または前記プロセッサからのバス使用要求が無いときに、前記ダイレクトメモリアクセス制御装置に前記バスの使用を許可するステップと、
前記プロセッサからのバス使用要求があるときに前記プロセッサに前記バスの使用を許可するステップとを有することを特徴とするプログラム。
【請求項６】
プロセッサとの間でバスの使用権を競合しバスアービタによる調停の下に前記バスを介したデータ転送を制御するダイレクトメモリアクセス制御装置を構成するコンピュータで実行されるプログラムであって、
データ転送要求があると前記バスアービタへのバス使用要求信号をオンにするステップと、
前記データ転送要求時に設定されるダイレクトメモリアクセス動作許可周期で前記バスアービタへのダイレクトメモリアクセス動作イネーブル信号をオン状態にするステップと、
前記バスアービタからのバス使用許可信号がオン状態になると前記データ転送を実行するステップと、
データ転送が終了すると前記バス使用要求信号をオフ状態にするステップとを有することを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、主記憶装置と周辺装置間のデータ転送をダイレクトメモリアクセス（Ｄｉｒｅｃｔ　Ｍｅｍｏｒｙ　Ａｃｃｅｓｓ：ＤＭＡ）方式で行うデータ転送システムに関する。
【０００２】
【従来の技術】
パーソナルコンピュータやワークステーションなどに利用されているプロセッサでは、一般に、主記憶装置と周辺装置との間のデータ転送にＤＭＡ方式を用いている。ＤＭＡ方式では、ＣＰＵはダイレクトメモリアクセス制御装置にデータ転送を要求すれば、主記憶装置と周辺装置との間のデータ転送はダイレクトメモリアクセス制御装置が制御することとなり、ＣＰＵはデータ転送に関与する必要がなく、他の処理を行うことができるようになる。
【０００３】
ＤＭＡ方式において、連続するメモリアドレスにわたって一連のデータ転送をシングル転送モードで実行することも可能である。しかし、シングル転送モードでは、１ブロックのデータの転送を終了する度にＣＰＵにバスを開放するため、特にＤＭＡ転送するデータ量が大きい場合には、主記憶装置と周辺装置間でのデータ転送を終了するまでに時間がかかり、データ転送を効率的に行えないという問題がある。
【０００４】
連続するメモリアドレスにわたって一連のデータ転送を実行する場合のデータ転送を高速化するため、バースト転送モードと呼ばれる技法が知られている。ところで、ＤＭＡ方式においては、ＣＰＵとダイレクトメモリアクセス制御装置とが共有しているバスの取得についてはＣＰＵよりもダイレクトメモリアクセス制御装置に優先権があるが、バースト転送モードでは全ブロックのデータの転送を終了するまでＣＰＵにバスを開放しない。このため、ダイレクトメモリアクセス制御装置がバスの使用権を独占してしまい、ＣＰＵが割込み処理にてデータ転送を行うことができず、データを損失してしまうということが生じ得る。
【０００５】
そこで、バースト転送モードでデータ転送を行いつつ、ＣＰＵにもバスを開放することによって、この種の問題の解消を図った技法が考案されてきている。特開平４−３０６７４５に記載されている「半導体メモリ装置」（従来技術１）では、ダイレクトメモリアクセス制御装置は、データ転送中に割込み信号が入ると、ＤＭＡによるデータ転送を中断し、ＣＰＵに所定の信号を送ってバスを開放する。これにより、ＣＰＵが直ちに割り込み処理に取りかかることができる。
【０００６】
ＣＰＵが割込み処理を行っている間、ダイレクトメモリアクセス制御装置において、ＤＭＡ実行セットフラグをセット状態のままとしておき、レングスカウンタ，ソースアドレス発生部，ディスティネーションアドレス発生部は、データ転送の中断直前のデータ（パラメータ）を保持し続ける。そして、割込み処理が終了して、ＣＰＵからＤＭＡ実行指令信号が与えられると、ダイレクトメモリアクセス制御装置の制御部はＤＭＡ実行フラグ（ここでは、セット状態）を参照し、このフラグの状態に従って中断直前のパラメータを基にデータ転送を再開する。
【０００７】
また、特開２０００−９００４５に記載されている「データ転送システム、ダイレクトメモリアクセス制御装置及び方法、並びに記録媒体」では、ダイレクトメモリアクセス制御装置は、設定したＤＭＡ動作許可期間に合わせてＤＭＡ動作イネーブル信号を生成し、ＣＰＵからＯＮ状態のＤＭＡ転送要求信号が供給されている間、ＤＭＡ動作イネーブル信号の状態を調べ、ＯＮ状態であればバスの使用権をＣＰＵに対して要求してデータ転送を行う。一方、ＤＭＡ動作イネーブル信号がＯＦＦ状態となると、ＤＭＡ転送中断信号によりデータ転送を中断すると共に、バスの使用権をＣＰＵに開放する。
【０００８】
【発明が解決しようとする課題】
しかしながら、上述の従来技術１では、例えば、センサが一定期間ＯＮしたらとか、複数の条件が真となったらとかいうイベント毎にＣＰＵによる処理が必要な場合には、それを割込み処理として行うには、ハードウェアによる回路を設け、その回路でイベントを認識し、割込み信号としてＣＰＵおよびＤＭＡコントローラに入力する必要があるため、回路が大型となり、高コストとなるという問題がある。一方、割込み処理をソフトウェアで処理するとした場合には、イベントが起こる周期に合わせてＤＭＡ転送回数を設定し、この転送回数でデータ転送を終了し、バスをＣＰＵに開放しなくてはならない。このため、プログラムの作成時に、これらの配慮が必要となり、そのプログラムを作成するプログラマに負担がかかるという問題点がある。
【０００９】
また、従来技術２では、バスの使用権は、ＤＭＡ動作イネーブル信号がＯＮ状態であればダイレクトメモリアクセス制御装置、ＤＭＡ動作イネーブル信号がＯＦＦ状態であればＣＰＵと定まっているため、ＤＭＡ動作イネーブル信号がＯＦＦ状態でＣＰＵにバスが開放される間は、ＣＰＵ処理が終了してもＤＭＡ転送を行えないので、データ転送の効率化という点で問題がある。
【００１０】
本発明は、上記全ての従来技術の問題点を解消するためになされたものであり、データ転送を効率的に行うと共に、ＤＭＡ転送周期をプログラムで考慮したりしなくてもバスを独占することなくＤＭＡ方式でのデータ転送を可能とするデータ転送システムを提供することを目的とする。
【００１１】
【課題を解決するための手段】
上記目的を達成するため、本発明のデータ転送システムは、それぞれがバスに接続されたプロセッサと、主記憶装置と、周辺装置と、プロセッサとバスの使用権を競合し主記憶装置と周辺装置との間のバスを介したデータ転送を制御するＤＭＡ制御装置とを備えるデータ転送システムにおいて、ＤＭＡ制御装置が発生するＤＭＡイネーブル信号がオン状態になったと判定したときに、バスの使用権をＣＰＵ優先からＤＭＡ優先に切り替える手段と、ＤＭＡイネーブル信号がオフ状態になったと判定したときに、バスの使用権をＤＭＡ優先からＣＰＵ優先に切り替える手段とを備えてバスの使用権を調停するバスアービタを設け、ＤＭＡ制御装置は、所定の周期毎にオン状態とオフ状態とが繰り返されるＤＭＡイネーブル信号を発生するＤＭＡイネーブル信号発生手段と、主記憶装置と周辺装置との間のＤＭＡによるデータ転送が要求されているときに、優先権にしたがってバスの使用権を獲得するバス使用権獲得手段と、バス使用権獲得手段がバスの使用権を獲得しているときに、主記憶装置と周辺装置との間で要求に従ってデータ転送をさせるデータ転送手段を備えることを特徴とする。
【００１２】
上記データ転送システムでは、バスアービタは、ＤＭＡイネーブル信号に従って、周期的にバスの使用権の優先順位を切り替える。データ転送手段は、ＤＭＡイネーブル信号がオン状態になっていれば、バスの使用権がＤＭＡ優先となるため、バスの使用権を獲得し続け、複数ブロックのデータ転送を継続して行うことも可能である。このため、主記憶装置と周辺装置との間のデータ転送を効率的に行うことができる。
【００１３】
また、ＤＭＡイネーブル信号がオフ状態となれば、バスの使用権がプロセッサ優先となるため、一連のデータ転送の途中でプロセッサに割込みが生じたとしても、一連のデータ転送の終了を待つことなく、プロセッサがその割込み処理を行えることとなる。さらに、一連のデータ転送途中でのバスの使用権の開放のため、データ転送の周期を考慮する必要もなく、プログラムの作成が容易になる。そして、ＤＭＡイネーブル信号がオフ状態でもプロセッサのアクセスが無くなれば、バスの使用権はＤＭＡコントローラへ切り替えられる。
【００１４】
【発明の実施の形態】
以下、添付図面を参照して本発明の実施の形態について説明する。
【００１５】
【実施例の構成】
図１は、本発明のデータ転送システムの一実施例を示すブロック図である。図示するように、このデータ転送システムは、システムバス１４にそれぞれ接続された、ＣＰＵ（Ｃｅｎｔｒａｌ　Ｐｒｏｃｅｓｓｉｎｇ　Ｕｎｉｔ）１０と、メモリ１１と、入出力装置（以下、「Ｉ／Ｏ」と記す）１２と、バスアービタ１３と、ＤＭＡコントローラ１５とから構成されている。ＣＰＵ１０，バスアービタ１３およびＤＭＡコントローラ１５はバスインタフェース１を介してシステムバス１４に接続される。
【００１６】
バスアービタ１３は、システムバス１４の使用権をＣＰＵ１０とＤＭＡコントローラ１５とのいずれに与えるかを調停する。ＣＰＵ１０は、メモリ１１に格納されている命令の一部を格納するキャッシュメモリを有し、ＤＭＡコントローラ１５がシステムバス１４の使用権を獲得しているときでも、このキャッシュメモリ中の命令を実行することができる。ＣＰＵ１０は、所定の命令の実行時、あるいはキャッシュミス発生時などにおいてシステムバス１４の使用が必要となる。
【００１７】
メモリ１１は、半導体メモリなどによって構成され、ＣＰＵ１０が実行するプログラムやプログラムの実行に必要となるデータを格納する。Ｉ／Ｏ１２は、例えば、磁気ディスク装置，プリンタあるいは外部のネットワークとの通信を行う通信装置などによって構成される。
【００１８】
バスインタフェース部１は、ＣＰＵ１０からのアクセスにより各レジスタ３，５，７，９のデータをリード／ライトする。バスインタフェース部１は、システムバス１４に対しＣＰＵ１０から受け取ったアドレスへデータをリード／ライトするための制御信号を出力してデータの転送を行う。同様に、ＤＭＡコントローラ１５から受け取ったアドレスへ転送すべきデータをリード／ライトするための制御信号を出力し、このデータの転送時に、メモリ１１またはＩ／Ｏ１２から読み出したデータを保持し、また、保持したデータを出力してメモリ１１またはＩ／Ｏ１２に書き込む。
【００１９】
ＤＭＡコントローラ１５は、バスインタフェース部１を使用してメモリ１１とＩ／Ｏ１２との間のＤＭＡデータ転送を制御するもので、それぞれ専用のハードウェアによって構成されるアドレス制御部２と、転送アドレスレジスタ３と、カウント制御部４と、転送回数レジスタ５と、ＤＭＡユニット制御部６と、制御レジスタ７と、イネーブル制御部８と、インターバルレジスタ９とを備えている。
【００２０】
転送アドレスレジスタ３は、ＤＭＡ転送要求信号ＴＹに先だちバスインタフェース１を介して、ＣＰＵ１０から渡された、転送すべきデータの転送元（メモリ１１またはＩ／Ｏ１２）のアドレスと、転送先（Ｉ／Ｏ１２またはメモリ１１）のアドレスとを格納する。
【００２１】
アドレス制御部２は、転送アドレスレジスタ３に格納されているデータの転送元および転送先のアドレスを、データのリード／ライト動作に合わせてバスインタフェース部１に出力する。アドレス制御部２は、転送アドレスレジスタ３に格納されているデータの転送元および転送先のアドレスを、データの転送に合わせて変化（インクリメント／デクリメント）または固定させる。
【００２２】
転送回数レジスタ５は、ＤＭＡ転送要求信号に先だちバスインタフェース部１を介して、ＣＰＵ１０から渡されたリード／ライト動作の回数、すなわち転送すべきデータの個数を格納する。
【００２３】
カウント制御部４は、リード／ライト動作の回数、すなわち転送されたデータのブロックの個数をカウントする。カウント制御部４は、カウントしたリード／ライト動作の回数が転送回数レジスタ５に格納されている値と等しくなったときに、データの転送を終了させＤＭＡ転送終了信号ＴＳをＣＰＵ１０に出力する。ＤＭＡ転送終了信号ＴＳは、後述するＤＭＡユニット制御部６にも供給され、これによりＤＭＡユニット制御部６はバスアービタ１３へのＤＭＡバス使用要求信号Ｙ２を取り下げる。
【００２４】
制御レジスタ７は、ＤＭＡ転送要求信号ＴＹに先だってバスインタフェース１を介してＣＰＵ１０から渡された転送モード（シングル転送モード／バースト転送モード）を格納する。
【００２５】
ＤＭＡユニット制御部６は、ＣＰＵ１０からのＤＭＡ転送要求信号ＴＹを受け付け、制御レジスタ７に格納されている転送モードに従って、メモリ１１とＩ／Ｏ１２との間のデータ転送を制御する。ＤＭＡユニット制御部６は、ＤＭＡ転送要求信号ＴＹの状態によってデータ転送を行わせるために必要となるシステムバス１４の使用権の獲得をバスアービタ１３に対して要求する。
【００２６】
インターバルレジスタ９は、イネーブル制御部８によって参照されるイネーブル制御ＯＮ／ＯＦＦビットを有している。インターバルレジスタ９は、システムの初期化時などにＣＰＵ１０から予め渡されたＤＭＡ動作許可周期を格納する。
【００２７】
イネーブル制御部８は、インターバルレジスタ９に格納されたＤＭＡ動作許可周期とＤＭＡ転送要求信号ＴＹに応じてＤＭＡ動作イネーブル信号ＥＮをＯＮにする。イネーブル制御部８は、ＤＭＡイネーブル信号ＥＮをバスアービタ１３に供給し、ＤＭＡ方式によるデータ転送の期間に制限をかける。イネーブル制御部８は、イネーブル制御ＯＮ／ＯＦＦビットがＯＮで、インターバルレジスタ９にＤＭＡ動作許可周期が格納されているときに、ＤＭＡ動作イネーブル信号ＥＮをＯＮにする。なお、イネーブル制御ＯＮ／ＯＦＦビットがＯＦＦの時は、ＤＭＡ動作イネーブル信号ＥＮはＯＮ状態になる。
【００２８】
【実施例の動作】
以下、本実施例によるＤＭＡデータ転送動作について、図２のタイミングチャートと図３および図４のフローチャートとを参照して説明する。図３はバスアービタ１３、図４はＤＭＡコントローラ１５の処理を示す。
【００２９】
ＣＰＵ１０は、プログラムを実行すると、ＤＭＡコントローラ１５のＤＭＡユニット制御部６にＤＭＡ転送要求信号ＴＹを送る。また、ＣＰＵ１０は、転送元と転送先のアドレス，リード／ライト動作の回数，転送モードおよびＤＭＡ動作許可周期をＤＭＡコントローラ１５に送る。これらのデータは、バスインタフェース部１によって、それぞれ対応するレジスタ３，５，７，９に書き込まれる。
【００３０】
先ず、ＯＮ状態のＤＭＡ転送要求信号ＴＹがＤＭＡコントローラ１５に入力すると（図４のステップＢ１でＹＥＳ）、イネーブル制御部８はＤＭＡ動作イネーブル信号ＥＮの生成を開始し（ステップＢ１５）、ＤＭＡユニット制御部６はＯＮ状態のバス使用要求信号Ｙ２をバスアービタ１３に送る（ステップＢ３）。当初は、ＤＭＡ動作イネーブル信号ＥＮを生成中ではない（ステップＢ２でＮＯ）からである。
【００３１】
バスアービタ１３は、ＤＭＡコントローラ１５からのバス使用要求信号（以下、「ＤＭＡバス使用要求信号」と記す）Ｙ２がＯＮの場合（図３のステップＡ１でＹＥＳ）、ＤＭＡ動作イネーブル信号ＥＮの状態を監視する。そして、ＤＭＡ動作イネーブル信号ＥＮがＯＮの場合には（ステップＡ２でＹＥＳ）、ＤＭＡコントローラ１５にシステムバス１４の使用優先権を付与し、ＤＭＡコントローラ１５に対するバス使用許可信号（以下、「ＤＭＡバス使用許可信号」と記す）Ｋ２をＯＮとする（ステップＡ３）。
【００３２】
ＤＭＡコントローラ１５では、バスアービタ１３からのＤＭＡバス使用許可信号Ｋ２（ステップＡ３）はＤＭＡユニット制御部６に入力する。ＯＮ状態のＤＭＡバス使用許可信号Ｋ２を受け取った（図４のステップＢ４でＹＥＳ）ＤＭＡユニット制御部６は、ＤＭＡ動作が終了するまでの間（ステップＢ８でＮＯ）、アドレス制御部２から転送アドレスをバスインタフェース部１経由でメモリ１１およびＩ／Ｏ１２に出力し（ステップＢ５）、１ブロックのデータ転送（ステップＢ６）を繰り返す。
【００３３】
この間、アドレス制御部２は、転送アドレスレジスタ３からデータの転送元および転送先のアドレスを読み出し、バスインタフェース部１に出力する。バスインタフェース部１は、メモリ１１とＩ／Ｏ１２のうちの転送元アドレスから１ブロック分のデータを、Ｉ／Ｏ１２とメモリ１１のうちの転送先アドレスに転送させる。
【００３４】
そして、バスインタフェース部１から１ブロック分のデータ転送の終了が伝えられると、アドレス制御部２は、転送アドレスレジスタ３に格納されている転送元および転送先のアドレスを１ブロック分インクリメントする（ステップＢ７）。なお、場合によってはインクリメントする代わりに、デクリメントしたり、一方が固定とする例もある。また、カウント制御部４に対して、転送回数レジスタ５に格納されているリード／ライト動作の回数をカウントさせる。
【００３５】
カウント制御部４は、カウントしたリード／ライト動作の回数と転送回数レジスタ５に格納されているリード／ライト動作の回数とが等しくなったかどうかを調べることによって、転送すべきデータをすべて転送終了したかどうかを判定する（ステップＢ８）。その結果、転送すべきデータを全て転送し終えていない場合は（ステップＢ８でＮＯ）、更に、制御レジスタ７に格納されているモードがシングル転送モードであるかどうかを判定する（ステップＢ９）。そして、シングル転送モードでない場合には（ステップＢ９でＮＯ）、ステップＢ１に回帰して上述の処理を繰り返す（ステップＢ１〜ステップＢ９）。なお、この場合には、ＤＭＡ動作イネーブル信号ＥＮは生成中（ステップＢ２でＹＥＳ）である。
【００３６】
これに対して、シングル転送モードである場合には（ステップＢ９でＹＥＳ）、ＤＭＡユニット制御部６はイネーブル制御部８によるＤＭＡ動作イネーブル信号ＥＮの生成を終了させるとともに（ステップＢ１０）、ＤＭＡバス使用要求信号Ｙ２をＯＦＦとしてから（ステップＢ１１）、ステップＢ１に回帰する。これは、複数ブロックのデータ転送を複数回のシングル転送によって実行するケースである。
【００３７】
また、ＤＭＡ動作が終了すると（ステップＢ８でＹＥＳ）、カウント制御部４はＯＮ状態のＤＭＡ転送終了信号ＴＳをＣＰＵ１０に出力し（ステップＢ１２）、ＤＭＡユニット制御部６はバス使用要求信号Ｙ２をＯＦＦにし（ステップＢ１３）、イネーブル制御部８はＤＭＡ動作イネーブル信号ＥＮの生成を終了する（ステップＢ１４）。これにより、バスアービタ１３は、システムバス１４の使用権をＤＭＡコントローラ１５からＣＰＵ１０に開放する。そして、一連の処理を終了する。
【００３８】
一方、ＤＭＡバス使用要求信号Ｙ２がＯＦＦの場合は（図３のステップＡ１でＮＯ）、ＣＰＵ１０にシステムバス１４の使用の優先権を付与する。この場合には、ＣＰＵ１０からのバス使用要求信号（以下、「ＣＰＵバス使用要求信号」と記す）Ｙ１がＯＮになると（ステップＡ６でＹＥＳ）、ＣＰＵ１０に対するバス使用許可信号（以下、「ＣＰＵバス使用許可信号」と記す）Ｋ１をＯＮとする（ステップＡ５）。なお、バス使用要求信号Ｙ１がないときは（ステップＡ６でＮＯＳ）、システムバス１４は使用されない。
【００３９】
また、ＤＭＡバス使用要求信号Ｙ２がＯＮであり（図３のステップＡ１でＹＥＳ）、かつＤＭＡ動作イネーブル信号ＥＮがＯＦＦの場合は（ステップＡ２でＮＯ）、ＣＰＵ１０にシステムバス１４の使用の優先権を付与する。この場合には、ＤＭＡコントローラ１５はシステムバス１４を使用不可であるので、システムバス１４の使用権をＤＭＡコントローラ１５からＣＰＵ１０に開放して、バスアービタ１３のシステムバス使用権の調停により、ＤＭＡコントローラ１５がシステムバス１４を使用できるまで待機するのである。
【００４０】
この状態下で、バス使用要求信号Ｙ１がＯＮの場合（ステップＡ４でＹＥＳ）、バス使用許可信号Ｋ１をＯＮとする（ステップＡ５）。ＣＰＵバス使用要求信号Ｙ１がないときは（ステップＡ４でＮＯ）、ＤＭＡバス使用許可信号Ｋ２がＯＮとされる（ステップＡ５）。このように、ＤＭＡイネーブル信号ＥＮがＯＦＦ状態であっても、ＣＰＵ１０からのアクセスが無くなれば、システムバス１４の使用権はＤＭＡコントローラ１５へ切り替えられるため、データ転送をより一層効率的に行うことができる。
【００４１】
次に、システムバス１４の使用権がＣＰＵ１０とＤＭＡコントローラ１５とのいずれに与えられるかを、図２のタイミングチャートを参照して時系列的に説明する。
【００４２】
先ず、ＤＭＡ転送要求信号ＴＹがＯＦＦ状態であるタイミングｔ１以前は、ＣＰＵ１０にシステムバス１４の使用権が割り当てられている。タイミングｔ１においてＤＭＡ転送要求信号ＴＹがＯＮ状態となり、ＤＭＡユニット制御部６に入力すると、インターバルレジスタ９にセットされているＤＭＡ動作許可周期によって、イネーブル制御部８はＤＭＡ動作イネーブル信号ＥＮをＯＮ状態にする。これにより、バスアービタ１３が、バス使用権をＤＭＡ優先に切り替えることによって、システムバス１４の使用権がＤＭＡコントローラ１５に割り当てられる。
【００４３】
ＤＭＡ動作許可期間が経過するタイミングｔ２になると、イネーブル制御部８は、ＤＭＡ動作イネーブル信号ＥＮをＯＦＦ状態にする。これにより、バスアービタ１３が、バス使用権をＣＰＵ優先に切り替えることによってデータ転送を中断すると共に、システムバス１４の使用権がＣＰＵ１０に割り当てられる。再びＤＭＡ動作許可期間が経過するタイミングｔ３になると、イネーブル制御部８は、ＤＭＡイネーブル信号ＥＮをＯＮ状態にする。これにより、バスアービタ１３が、バス使用権をＤＭＡ優先に切り替えることによってシステムバス１４の使用権がＤＭＡコントローラ１５に割り当てられる。
【００４４】
同様にして、タイミングｔ３〜ｔ４の間はＤＭＡコントローラ１５優先に、タイミングｔ４〜ｔ５の間はＣＰＵ１０優先に、タイミングｔ５〜ｔ６の間はＤＭＡコントローラ１５優先に、それぞれシステムバス１４の使用権が割り当てられる。そして、タイミングｔ６においてリード／ライト動作の回数が規定回数に達すると、カウント制御部４は、ＤＭＡ転送終了信号ＴＳを出力する。
【００４５】
ここで、ＤＭＡ方式でのデータ転送が行われている期間であるタイミングｔ１〜ｔ６の間のいずれかのタイミングにおいて、例えば、キャッシュミスなどによってＣＰＵ１０にバス使用要因が発生したとする。この場合、ＣＰＵ１０は、システムバス１４の使用権が割り当てられているタイミングｔ２〜ｔ３、あるいはタイミングｔ４〜ｔ５の間にキャッシュリプレースの処理を行うことができる。また、ＤＭＡ動作許可期間を１ブロックのデータを転送するのに必要な時間の２倍以上に設定することで、タイミングｔ１〜ｔ２、タイミングｔ３〜ｔ４、あるいはタイミングｔ５〜ｔ６のそれぞれの間に複数ブロックのデータを連続して転送することができる。
【００４６】
そして、バス使用権がＣＰＵ優先となっているタイミングｔ２〜ｔ３、あるいはタイミングｔ４〜ｔ５の間であっても、ＣＰＵ１０のシステムバス１４へのアクセスが無くなれば、ＤＭＡコントローラ１５がシステムバス１４を使用することも可能であるため、システムバス１４を有効に活用できる。図２では、タイミングｔ７〜ｔ９の間はＤＭＡ動作イネーブル信号ＥＮがＯＦＦのため、バス使用権がＣＰＵ優先の筈であるが、それまでＯＮ状態を維持してきたＣＰＵバス使用要求信号Ｙ１がタイミングｔ８でＯＦＦとなっっている。このため、ＯＮ状態を維持しているＤＭＡ転送要求信号ＴＹの存在により、タイミングｔ８〜ｔ９の間もバスの使用権はＤＭＡとなる。
【００４７】
以上説明したように、この実施の形態のコンピュータ装置では、ハードウェア的に付加回路を設けなくても、また、ソフトウェア的にＤＭＡ転送周期を考慮しなくても、ＤＭＡコントローラ１５がメモリ１１とＩ／Ｏ１２との間でデータをバースト転送している間に、システムバス１４の使用権をＣＰＵ１０に開放することができる。これにより、バーストモードでのデータ転送の間にＣＰＵ１０に割り込みなどの要因が発生したとしても、ＣＰＵ１０は、データ転送の終了まで待機させられることなく、割り込み処理などの処理を行うことができる。
【００４８】
また、ＤＭＡ動作イネーブル信号ＥＮがＯＮ状態である間は、複数ブロックのデータを連続して転送することが可能である。このため、シングル転送に比べて、システムバス１４の使用権の獲得と開放に要する時間を全体として短くすることができる。したがって、メモリ１１とＩ／Ｏ１２との間のデータ転送をシングル転送よりも効率よく行うことができる。
【００４９】
なお、上記の実施例では、メモリ１１とＩ／Ｏ１２との間におけるＤＭＡ転送について説明したが、本発明は、メモリとメモリと間のＤＭＡ転送にも適用することができる。また、ＤＭＡ転送要求信号ＴＹはＣＰＵ１０とＩ／Ｏ１２のいずれからも入力し得る。
【００５０】
また、上述のバスアービタ１３の処理とＤＭＡコントローラ１５の処理は、それぞれを構成するコンピュータにおいてプログラムを実行することによって行うことができる。各プログラムの処理内容は、図３と図４のフローチャートに示すとおりである。
【００５１】
【発明の効果】
以上説明したように、本発明によれば、バスアービタがＤＭＡ動作イネーブル信号に基づいてシステムバスの使用優先権を調停する構成としたため、付加回路を設けたりＤＭＡ転送周期をプログラムで考慮することなく、主記憶装置と周辺装置間等のデータ転送を効率的に行うことができるという効果を得ることができる。
【図面の簡単な説明】
【図１】本発明のデータ転送装置の一実施例を示すブロック図
【図２】図１に示した実施例においてシステムバスの使用権の割り当てを示すタイミングチャート
【図３】図１に示した実施例におけるバスアービタの処理を示すフローチャート
【図４】図１に示した実施例におけるＤＭＡコントローラの処理を示すフローチャート
【符号の説明】
１　　　　バスインタフェース部
２　　　　アドレス制御部
３　　　　転送アドレスレジスタ
４　　　　カウント制御部
５　　　　転送回数レジスタ
６　　　　ＤＭＡユニット制御部
７　　　　制御レジスタ
８　　　　イネーブル制御部
９　　　　インターバルレジスタ
１０　　　ＣＰＵ
１１　　　メモリ
１２　　　入出力装置（Ｉ／Ｏ）
１３　　　バスアービタ
１４　　　システムバス
１５　　　ＤＭＡコントローラ
【図１】
2004038333.tif 000003
【図２】
2004038333.tif 000004
【図３】
2004038333.tif 000005
【図４】
2004038333.tif 000006