(57)【特許請求の範囲】
【請求項１】
ＣＰＵと、
外部メモリと、
それぞれがデータ転送リクエスト信号を発生させる複数の外部リクエストデバイスと、
前記ＣＰＵの動作と独立に、前記外部メモリと前記複数の外部リクエストデバイスとの間のＤＭＡ転送を制御するＤＭＡ制御部と、
前記ＣＰＵ、前記外部メモリ、前記複数の外部リクエストデバイス、及び前記ＤＭＡ制御部を接続するバスとを備え、
前記ＤＭＡ制御部は、
前記複数の外部リクエストデバイスのいずれかがデータ転送リクエスト信号を発生したときに、前記ＣＰＵに対してバス開放リクエスト信号を出力してバスの開放を要求し、前記ＣＰＵからバス開放許可信号が返されると、前記データ転送リクエスト信号を発生させた前記外部リクエストデバイスにデータ転送リクエスト確認信号を送出して、前記外部メモリと前記データ転送リクエスト信号を発生させた前記外部リクエストデバイスとの間のＤＭＡ転送を制御する手段と、
前記ＤＭＡ転送によるバス占有状態を制御するように前記データ転送リクエスト信号をマスクすることによってバスリクエスト信号を生成するマスク回路と前記データ転送リクエスト信号をマスクするマスク時間をカウントするカウンタとを有し、前記複数の外部リクエストデバイスごとに設けられたマスク手段と、
前記マスク手段の前記マスク回路のいずれかによって生成された前記バスリクエスト信号に基づいて、前記ＤＭＡ転送を制御する手段による前記ＣＰＵへの前記バス開放リクエスト信号の出力を調整して、前記ＤＭＡ転送を調停する調停手段とを有し、
前記ＣＰＵは、
同時動作可能な前記外部リクエストデバイスの数に応じて前記マスク時間を制御する手段と、
前記ＣＰＵ自身が処理するタスクの処理負荷を管理するタスク管理手段とを有し、
前記タスク管理手段は、
前記ＣＰＵが処理するタスクごとに設定された前記マスク時間に関する情報を保持する手段と、
前記ＣＰＵによって現在処理されているタスクを監視する監視手段と、
前記監視手段によって監視されている前記タスクに応じて、前記マスク時間に関する情報を保持する手段から、前記マスク時間を選択する選択手段と、
選択された前記マスク時間を前記マスク回路が用いるマスク時間として設定する設定手段とを有する
ことを特徴とするＤＭＡ転送装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＤＭＡ（Direct Memory Access）転送装置に係り、詳細には、ＣＰＵの動作と独立に、メモリと外部リクエストデバイス間で直接データを転送するＤＭＡ転送制御を行うＤＭＡ制御部を備えたＤＭＡ転送装置に関する。
【０００２】
【従来の技術】
ＤＭＡ転送は、ＣＰＵを介さずに直接メインメモリとＩ／Ｏ装置（例えば、外部リクエストデバイス）などの周辺機器間でデータ転送を行うものである。これにより高速・大容量のデータ転送がＣＰＵのオーバヘッドを伴わずに可能となる。ＤＭＡ転送は、一般にＤＭＡＣ（Direct Memory Access Controler）がバスを管理して転送を制御する。
【０００３】
従来、ＤＭＡＣと外部リクエストデバイスとの間でＤＭＡ転送を行うシステムにおいて、ＤＭＡＣは、外部リクエストデバイスから出力されるＤＭＡリクエスト（ＤＲＥＱ）信号を受けてメモリデバイスと外部リクエストデバイス間でデータ転送ができるよう他のデバイスを制御する。
【０００４】
図３２は従来のＤＭＡ転送装置の構成を示すブロック図であり、ＤＭＡＣと外部リクエストデバイス間のデータ転送を例としたものである。
【０００５】
図３２において、１はＣＰＵ、２はＤＭＡＣ、３，４は複数の（２つの）外部リクエストデバイス（外部リクエストデバイス１，２）、５は外部メモリである。
【０００６】
外部リクエストデバイス３，４からリクエスト信号ＤＲＥＱ１／ＤＲＥＱ２がＤＭＡＣ２に対して出力される。ＤＭＡＣ２には、それぞれのＤＭＡリクエスト信号ＤＲＥＱ１／ＤＲＥＱ２が入力され、ＤＭＡＣ２は、このＤＲＥＱ信号の入力によって、ＣＰＵ１に対してバスリクエスト（ＢＲＥＱ）信号を出力し、バスの開放を要求する。
【０００７】
ＢＲＥＱを受けたＣＰＵ１は、バス開放許可（ＢＡＣＫ）信号を出力し、バスをＤＭＡＣ２に開放する。ここで、外部リクエストデバイスが複数存在する場合は、各デバイスからのＤＲＥＱの発生回数が増加するため、ＤＭＡＣの内部でＢＲＥＱ信号を発生させる順序を調整（調停）し、各外部リクエストデバイスのＤＭＡ転送を実現している。
【０００８】
【発明が解決しようとする課題】
しかしながら、このような従来のＤＭＡ転送装置にあっては、上述したように複数の外部リクエストデバイスシステムに搭載した場合に、ＤＲＥＱ信号の調停が必要である。また、外部リクエストデバイスの数と外部リクエストデバイスのＤＲＥＱ信号の発生周期によってＤＭＡによるバスの占有率が大きくなり、通常の一連のＣＰＵによる処理が極端に延ばされてしまう可能性があるという問題点があった。
【０００９】
以下、この不具合について説明する。
【００１０】
図３３はＤＭＡＣの調停のタイミングを概念的に示すタイミングチャートである。
【００１１】
３チャンネル持っているＤＭＡＣにおいて、各ＣＨの１回のＤＭＡ転送に所要する時間をＴとする。図３３の場合は、ＤＭＡＣが各チャンネルのＤＭＡの調停を行って、ＣＨ１→ＣＨ２→ＣＨ３→ＣＨ１といったラウンドロビン型の方式でチャンネルを使用している。しかし、この方法を用いると、ＤＭＡ転送にだけバスが占有されることになり、プロセッサがバスを使用して処理している時間が、時間的に極端に延ばされてしまうことがある。
【００１２】
本発明は、外部リクエストデバイスが複数存在する場合、または、ＤＲＥＱ信号の発生周期が短い外部リクエストデバイスが同一のバスに存在する場合、ＤＭＡによるバス占有率を低減し、時間的にバスを有効に利用することができるＤＭＡ転送装置を提供することを目的とする。
【００１４】
【課題を解決するための手段】
本発明に係るＤＭＡ転送装置は、ＣＰＵと、外部メモリと、それぞれがデータ転送リクエスト信号を発生させる複数の外部リクエストデバイスと、前記ＣＰＵの動作と独立に、前記外部メモリと前記複数の外部リクエストデバイスとの間のＤＭＡ転送を制御するＤＭＡ制御部と、前記ＣＰＵ、前記外部メモリ、前記複数の外部リクエストデバイス、及び前記ＤＭＡ制御部を接続するバスとを備え、
前記ＤＭＡ制御部は、前記複数の外部リクエストデバイスのいずれかがデータ転送リクエスト信号を発生したときに、前記ＣＰＵに対してバス開放リクエスト信号を出力してバスの開放を要求し、前記ＣＰＵからバス開放許可信号が返されると、前記データ転送リクエスト信号を発生させた前記外部リクエストデバイスにデータ転送リクエスト確認信号を送出して、前記外部メモリと前記データ転送リクエスト信号を発生させた前記外部リクエストデバイスとの間のＤＭＡ転送を制御する手段と、前記ＤＭＡ転送によるバス占有状態を制御するように前記データ転送リクエスト信号をマスクすることによってバスリクエスト信号を生成するマスク回路と前記データ転送リクエスト信号をマスクするマスク時間をカウントするカウンタとを有し、前記複数の外部リクエストデバイスごとに設けられたマスク手段と、前記マスク手段の前記マスク回路のいずれかによって生成された前記バスリクエスト信号に基づいて、前記ＤＭＡ転送を制御する手段による前記ＣＰＵへの前記バス開放リクエスト信号の出力を調整して、前記ＤＭＡ転送を調停する調停手段とを有し、
前記ＣＰＵは、同時動作可能な前記外部リクエストデバイスの数に応じて前記マスク時間を制御する手段と、前記ＣＰＵ自身が処理するタスクの処理負荷を管理するタスク管理手段とを有し、
前記タスク管理手段は、前記ＣＰＵが処理するタスクごとに設定された前記マスク時間に関する情報を保持する手段と、前記ＣＰＵによって現在処理されているタスクを監視する監視手段と、前記監視手段によって監視されている前記タスクに応じて、前記マスク時間に関する情報を保持する手段から、前記マスク時間を選択する選択手段と、選択された前記マスク時間を前記マスク回路が用いるマスク時間として設定する設定手段とを有することを特徴とする。
【００２１】
【発明の実施の形態】
第１の実施形態
図１は本発明の第１の実施形態に係るＤＭＡ転送装置の構成を示すブロック図である。本実施形態は、外部メモリと外部リクエストデバイスとの間でＤＭＡ転送を行うシステムに適用したものである。
【００２２】
図１において、ＤＭＡ転送装置は、ＣＰＵ１００、ＤＭＡＣ１１０（ＤＭＡ制御部）、外部リクエストデバイス１１１、外部リクエストデバイス１１２、及び外部メモリ１１３から構成される。
【００２３】
ＤＭＡＣ１１０は、２つのＤＭＡチャンネルを搭載しており、それらをＣＨ０，ＣＨ１とする。また、ＣＨ０とＣＨ１はそれぞれ、外部リクエストデバイス１１１、外部リクエストデバイス１１２に接続されている。
【００２４】
外部リクエストデバイス１１１の内部には、ＤＲＥＱ信号マスク回路１２１（マスク手段）が、また外部リクエストデバイス１１２の内部には、ＤＲＥＱ信号マスク回路１２２（マスク手段）が設置され、ＤＲＥＱ信号マスク回路１２１，１２２は、ＣＰＵ１００からのマスク信号ｍａｓｋ＿ｅｎ０，ｍａｓｋ＿ｅｎ１により制御される。
【００２５】
マスク信号ｍａｓｋ＿ｅｎ０，ｍａｓｋ＿ｅｎ１は、ＤＲＥＱ信号マスク回路１２１，１２２のイネーブル／ディセーブルをコントロールする信号であり、両信号ともアクティブ“Ｈ”（“Ｈ”レベルでアクティブな信号）である。
【００２６】
また、ＤＭＡＣ１１０からＣＰＵ１００にＢＲＥＱ（バス開放要求）信号が出力され、ＣＰＵ１００からＤＭＡＣ１１０にＢＡＣＫ（バス開放許可）信号が出力される。
【００２７】
外部メモリ１１３は、ＤＭＡ転送のディスティネーシ（転送先）、または、ソース（転送元）になる。
【００２８】
図２及び図３は上記ＤＲＥＱ信号マスク回路１２１，１２２の構成を示す回路図であり、図２はＤＲＥＱ信号がアクティブ“Ｈ”の場合の回路構成を、図３はＤＲＥＱ信号がアクティブ“Ｌ”（“Ｌ”レベルでアクティブな信号）の場合の回路構成をそれぞれ示す。
【００２９】
図２において、ＤＲＥＱ信号がアクティブ“Ｈ”の場合のＤＲＥＱ信号マスク回路１２１，１２２は、ＡＮＤゲート１３１により構成される。外部リクエストデバイス内部のＤＲＥＱ信号をＤＲＥＱ＿Ｐ＿ｉｎ（アクティブ“Ｈ”の場合）とし、マスクを制御するマスク信号をｍａｓｋ＿ｅｎとする。
【００３０】
ＡＮＤゲート１３１は、マスク信号ｍａｓｋ＿ｅｎの反転信号とＤＲＥＱ＿Ｐ＿ｉｎ信号のＡＮＤ論理をとりＤＲＥＱ＿Ｐを出力する。この場合、ｍａｓｋ＿ｅｎ＝“Ｈ”のときにＤＲＥＱ＿Ｐ＿ｉｎ信号がマスクされて、出力としてＤＲＥＱ＿Ｐが出力される。
【００３１】
同様に、図３において、ＤＲＥＱ信号がアクティブ“Ｌ”の場合のＤＲＥＱ信号マスク回路１２１，１２２は、ＯＲゲート１３２により構成される。
【００３２】
ＯＲゲート１３２は、マスク信号ｍａｓｋ＿ｅｎとＤＲＥＱ＿Ｎ＿ｉｎ信号のＯＲ論理をとりＤＲＥＱ＿Ｎを出力する。この場合、ｍａｓｋ＿ｅｎ＝“Ｈ”のときにＤＲＥＱ＿Ｎ＿ｉｎ信号がマスクされて、出力としてＤＲＥＱ＿Ｎが出力される。
【００３３】
以下、上述のように構成されたＤＭＡ転送装置の動作を説明する。
【００３４】
ここでは、ｍａｓｋ＿ｅｎ０によりＣＨ０のＤＲＥＱ信号マスク回路１２１がイネーブルになり、ｍａｓｋ＿ｅｎ１によりＣＨ１のＤＲＥＱ信号マスク回路１２２がイネーブルになる場合を説明する。
【００３５】
図４は上記ＤＭＡ転送装置のＤＭＡ転送動作を示すタイミングチャートであり、時間Ｔ（例えば、５００ｎｓ）で１回のＤＭＡ転送が行われる。図中、ＣＨ０，ＣＨ１は、ＤＭＡＣ１１０の２つのＤＭＡチャンネルを示す。
【００３６】
図４に示すように、Ｔ１の区間でＣＨ０／ＣＨ１の各々のＤＲＥＧが同時に発生したとする。
【００３７】
Ｔ２の区間においては、ＣＨ０のＤＲＥＱ０信号は、ｍａｓｋ＿ｅｎ０信号によってマスクされているため、ＣＨ１のＤＭＡ転送が行われている。そのとき、ｍａｓｋ＿ｅｎ１信号はディセーブルの状態（“Ｌ”）である。
【００３８】
次に、Ｔ３の区間においては、両方のＤＭＡチャネルがマスクされているため、ＤＭＡ転送が行われない。この区間では、ＣＰＵ１００がバスを占有し、プログラムに応じた処理を行っている。
【００３９】
次に、Ｔ４の区間においては、ｍａｓｋ＿ｅｎ１がイネーブルの状態（“Ｈ”）になっているため、ＣＨ１のＤＲＥＱ１信号がマスクされ、ＤＲＥＱ１が出力されないため、ＤＭＡシーケンスが行われない。この区間では、ＣＨ０のＤＭＡ転送が行われる。
【００４０】
次に、Ｔ５の区間においては、Ｔ３の区間と同様に、ＣＰＵ１００の処理が行われる。よって、ここでもＣＰＵ１００の処理は停止しない。
【００４１】
このように、ｍａｓｋ＿ｅｎ０，ｍａｓｋ＿ｅｎ１を利用して、ＤＲＥＱ信号をマスクしてＤＲＥＱ０／ＤＲＥＱ１信号の発生周期を変えている。
【００４２】
また、ｍａｓｋ＿ｅｎ０／ｍａｓｋ＿ｅｎ１は、ＣＰＵ１００が制御しているが、このような周期的なイネーブル信号は、ＣＰＵ１００の内蔵のタイマを使用して実現することが可能である。例えば、５００ｎｓの割り込み処理で、ｍａｓｋ＿ｅｎ０／ｍａｓｋ＿ｅｎ１を交互にイネーブルにするように設定すれば、各ＣＨのＤＭＡは、２μｓに１回ＤＲＥＱが発生する。さらに、設定間隔を短くする場合には、ＣＰＵ１００から設定するのではなく、外部リクエストデバイスの内部に周期的にイネーブルを制御するタイマを内蔵することによって実現できる。
【００４３】
以上説明したように、第１の実施形態に係るＤＭＡ転送装置は、ＣＰＵ１００、ＤＭＡＣ１１０、外部リクエストデバイス１１１、外部リクエストデバイス１１２及び外部メモリ１１３から構成され、外部リクエストデバイス１１１，１１２は、ＤＲＥＱ信号をマスクするＤＲＥＱ信号マスク回路１２１，１２２を備え、ＤＲＥＱ信号マスク回路１２１，１２２がＤＲＥＱ０／ＤＲＥＱ１信号をマスクしてＤＭＡ転送によるバス占有状態を制御するように構成したので、ＣＰＵ１００からのｍａｓｋ＿ｅｎ０／ｍａｓｋ＿ｅｎ１信号（アクティブ“Ｈ”）により、ＤＲＥＱ信号マスク回路１２１，１２２が、ＤＲＥＱ０／ＤＲＥＱ１信号をマスクすることで、周期的にＤＲＥＱ信号を発生させることにより、ＤＭＡによるシステバス占有率を制御することができる。その結果、ＤＭＡにバスを占有されてＣＰＵの処理ができなくなることを避けることができ、システムのＤＭＡＣの介在による破綻を防止するという効果がある。
【００４４】
また、ＤＭＡＣ側の構成には一切変更がないため、既存のＣＰＵシステムの変更なしにシステム全体のスループットの向上及び信頼性の向上を図ることができる。また、ゲート回路という簡単な部品の追加で実現できるので、低コストで実施できる。
【００４５】
なお、本実施形態では、外部リクエストデバイス１１１，１１２の内部に、ＤＲＥＱ０／ＤＲＥＱ１信号をマスクするＤＲＥＱ信号マスク回路１２１，１２２を設けるようにしているが、これらマスク回路１２１，１２２は外部リクエストデバイス側に設置されていればよく、必ずしも外部リクエストデバイスの内部に設置する構成でなくてもよい。
第２の実施形態
図５は本発明の第２の実施形態に係るＤＭＡ転送装置の構成を示すブロック図である。本実施形態は、ＤＭＡＣを使用して、外部メモリデバイスと外部リクエストデバイスとの間でＤＭＡ転送を行うシステムに適用した例である。本実施形態に係るＤＭＡ転送装置の説明にあたり前記図１と同一構成部分には同一符号を付している。
【００４６】
図５において、ＤＭＡ転送装置は、ＣＰＵ１００、ＤＭＡＣ２００、外部リクエストデバイス２４０、外部リクエストデバイス２４１、及び外部メモリ１１３から構成される。
【００４７】
ＤＭＡＣ２００は、２つのＤＭＡチャンネルを搭載しており、それらをＣＨ０，ＣＨ１とする。また、ＣＨ０とＣＨ１はそれぞれ、外部リクエストデバイス２４０、外部リクエストデバイス２４１に接続されている。
【００４８】
ＤＭＡＣ２００は、各チャンネル毎に設置され、ＣＰＵ１００からのマスク信号ｍａｓｋ＿ｅｎ０，ｍａｓｋ＿ｅｎ１により制御されるＤＲＥＱ信号マスク回路２１０，２２０と、ＤＲＥＱ信号マスク回路２１０，２２０のＢＲＥＱ０信号，ＢＲＥＱ１信号を調停する調停回路２３０とを備える。
【００４９】
マスク信号ｍａｓｋ＿ｅｎ０，ｍａｓｋ＿ｅｎ１は、ＣＨ０とＣＨ１のＤＲＥＱ信号マスク回路２１０，２２０のイネーブル／ディセーブルの切替えをする信号であり、両信号ともアクティブ“Ｈ”である。
【００５０】
なお、前記第１の実施形態のｍａｓｋ＿ｅｎ信号は、マスク信号そのものを意味するが、本実施形態を含む後述する各実施形態で記載されるｍａｓｋ＿ｅｎ信号はマスク回路を動作させるか否かを制御するための信号を意味する。したがって、必ずマスク回路を動作させる場合は、ｍａｓｋ＿ｅｎ信号を省略することができる。
【００５１】
ＣＰＵ１００は、このマスク信号ｍａｓｋ＿ｅｎ０，ｍａｓｋ＿ｅｎ１をＤＲＥＱ信号マスク回路２１０，２２０に出力してＤＲＥＱ信号マスク回路２１０，２２０を制御する。また、ＣＰＵ１００は、ＤＲＥＱ信号マスク回路２１０，２２０に対してタイマカウント値を設定することが可能であり、ＣＰＵ１００が設定するタイマカウント値によって、生成されるマスク信号の長さが変わる。
【００５２】
外部リクエストデバイス２４０がＤＭＡＣ２００に出力するＤＲＥＱ信号をＤＲＥＱ０、外部リクエストデバイス２４１がＤＭＡＣ２００に出力するＤＲＥＱ信号をＤＲＥＱ１とし、ＤＭＡＣ２００から外部リクエストデバイス２４０，２４１に返すＤＲＥＱ０とＤＲＥＱ１に対するＤＡＣＫ信号をそれぞれＤＡＣＫ０，ＤＡＣＫ１とする。
【００５３】
また、ＤＭＡＣ２００からＣＰＵ１００にＢＲＥＱＮ信号（バス開放リクエスト信号：ＣＰＵに対して、バス権の開放を要求する信号／アクティブ“Ｌ”）が出力され、ＣＰＵ１００からＤＭＡＣ２００に対してＢＡＣＫＮ信号（バス・アクノリッジ信号：外部ＤＭＡＣに対して、バス権の開放を許可していることを示す信号／アクティブ“Ｌ”）が出力される。
【００５４】
ここで、ＤＭＡの転送方向は、外部リクエストデバイス→外部メモリ方向と、外部メモリ→外部リクエストデバイス方向の２通りあり、この転送方向は、ＣＰＵ１００がＤＭＡＣ２００に対して設定可能なものとする。
【００５５】
図６は上記ＤＲＥＱ信号マスク回路２１０，２２０の構成を示すブロック図である。各チャンネルのＤＲＥＱ信号マスク回路２１０，２２０は、同一構成をとるため、ＤＲＥＱ信号マスク回路２１０を代表して説明する。
【００５６】
図６において、ＤＲＥＱ信号マスク回路２１０は、サンプリングクロックの立ち上がりエッジでカウント（デクリメント）するカウンタ回路２１１、カウントデータを所定値“０”と比較し、“０”とカウントデータが一致したときサンプリングクロックの周期分のパルス、すなわちカウンタＴＣ（Terminal Count：最終カウントを意味する）信号を出力する比較器２１２、及びマスク回路２１３から構成される。
【００５７】
カウンタ回路２１１には、データバスからカウントするための初期値と、カウントするためのサンプリングクロックが入力される。また、比較器２１２には、カウンタ回路２１１がカウントしたデータである現在のカウント値が入力され、比較器２１２からはカウンタＴＣ信号が出力される。
【００５８】
上記カウンタＴＣ信号は、入力されてくるカウントデータ値が“０”になった区間で１サンプリングクロック分の幅で“Ｈ”のパルスになる信号であり、カウントが終了したことを示す。
【００５９】
また、マスク回路２１３には、比較器２１２から出力されるカウンタＴＣ信号が入力されるとともに、ＤＲＥＱ信号及びＤＡＣＫ信号が入力され、ＢＲＥＱ信号が出力される。
【００６０】
図７は図６のマスク回路２１３の内部の詳細な構成を示す図である。
【００６１】
図７において、マスク回路２１３は、カウンタＴＣ信号を基にＤＡＣＫ信号が入力された時点で内部で生成されたマスク信号がイネーブルになるマスク信号を出力するマスク信号発生回路２１４、及び発生したマスク信号とＤＲＥＱ信号のＯＲ論理をとるＯＲゲート２１５から構成される。
【００６２】
以下、上述のように構成されたＤＭＡ転送装置の動作を説明する。
【００６３】
図８はＤＭＡ転送装置の動作を説明するためのタイミングチャートである。なお、図中、番号(1)〜(5)は動作タイミングまたは動作の区間を説明するための符号である。
【００６４】
２チャンネルＣＨ０，ＣＨ１のうち、まずＣＨ０のＤＲＥＱ０信号マスク回路２１０を例にして説明する。
【００６５】
図８のタイミングチャートにおいて、ＤＲＥＱ０信号は、ＤＡＣＫ０信号がディセーブル（“Ｌ”）になってから、一定時間経過後にイネーブル（“Ｈ”）になるものとする。
【００６６】
図８の(1)のタイミングでＣＰＵ１００はＤＲＥＱ０信号マスク回路２１０に対して、タイマカウント値をライトする。本動作の場合は、“５”をライトするものとする。
【００６７】
次に、図８の(1)−１のタイミングでＣＰＵ１００は、ｍａｓｋ＿ｅｎ０を“Ｈ”にする。ここまでのＣＰＵ１００の動作で、ＤＲＥＱ０信号マスク回路２１０は動作可能状態になる。
【００６８】
次に、外部リクエストデバイス２４０から出力されるＤＲＥＱ０信号がタイマに入力される。このとき、ＤＲＥＱ０信号マスク回路２１０は動作することなしに、ＤＭＡＣ２００はＤＲＥＱ０の入力のタイミングでＢＲＥＱＮ信号をＣＰＵ１００に対して出力する。
【００６９】
ＢＲＥＱＮ信号を受け取ったＣＰＵ１００は、ある決まったタイミング（ＣＰＵの仕様によって異なる）で、ＢＡＣＫＮ信号を出力する（図８の(2)−１の区間参照）。この区間は、ＤＭＡＣ２００がバスを占有する区間であり、この区間ではＣＰＵ１００はバス権を開放している状態になる。
【００７０】
図８の(2)−１区間でＤＭＡＣ２００は、ＢＡＣＫＮ信号からＤＡＣＫ０信号を生成し、外部リクエストデバイス２４０に出力する。この時、ＤＡＣＫ０信号の立ち下がりのタイミング（図８の(3)−１参照）で、マスク信号を“Ｈ”にする。その後、図８の(5)−１のタイミングでＤＲＥＱ０信号は、マスク信号でマスクされる。
【００７１】
ここで、図６及び図７を参照してＤＲＥＱ信号マスク回路２１０，２２０のマスク動作について説明する。
【００７２】
図６において、ＣＰＵ１００がカウンタ回路２１１に対してカウントの初期値（本実施形態では、“５ｈ”）をセットする。このとき、ＤＡＣＫ信号が入力されて初めてカウントが行われる。
【００７３】
サンプリングクロックの立ち上がりエッジでカウント（デクリメント）が行われ、比較器２１２では、このカウントデータを所定値“０”と比較する。“０”とカウントデータが一致した場合は、サンプリングクロックの周期の分だけカウンタＴＣ信号が出力される。
【００７４】
一方、マスク回路２１３では、ＤＡＣＫ信号が入力された時点で、内部のマスク信号発生回路２１４（図７）のマスク信号がイネーブル（アクティブ“Ｈ”）となり、ＯＲゲート２１５でこのマスク信号とＤＲＥＱ信号とのＯＲ論理がとられ、ＢＲＥＱ信号として出力される。マスク信号がディセーブルになるためには、カウンタＴＣ信号を使用し、マスク信号をディセーブルにする。このマスク信号は、マスク信号発生回路２１４で生成される信号で、ＤＡＣＫ信号により“Ｈ”となり、カウンタＴＣ信号で“Ｌ”となる信号である。
【００７５】
図８のタイミングチャートの説明に戻る。
【００７６】
入力にＤＲＥＱ０信号と上記マスク信号から生成された出力を使用してＢＲＥＱＮ信号を作成する。
【００７７】
図８の(3)−１地点からサンプルクロックに同期して、ＤＲＥＱ信号マスク回路２１０のカウンタ回路２１１のカウンタがデクリメントされる。カウンタ値が“０”になった時点で、カウンタＴＣ信号が発生する（アクティブ“Ｈ”）。
【００７８】
このカウンタＴＣ信号の立ち下がりを利用してマスク信号が“Ｌ”となり、マスクがディセーブルになる（図８の(4)−１参照）。マスク信号が“Ｌ”になった時点でマスク回路２１３のマスク信号が“Ｌ”になるので、ＤＲＥＱ０信号がそのままゲートを抜けて出力となる。この出力信号を利用して、ＢＲＥＱＮ信号が出力される（タイミングは図８の(4)−１参照）。
【００７９】
ここで、図８の(5)−１〜(2)−２のＢＡＣＫＮ信号の立ち下がりエッジまでの区間においては、ＢＲＥＱＮが出力されないため、バス権はＣＰＵ１００にあることになる。
【００８０】
図８の(4)−１以降の動作シーケンスに関しては上記説明と同様である。
【００８１】
図８に示すように、区間(2)−１、(2)−２、(2)−３はＤＭＡＣ２００がバス権を所有している区間であり、それ以外の区間はＣＰＵ１００がバス権を所有している区間である。
【００８２】
上記では、外部リクエストデバイス２４０に関しての動作の説明をしたが、外部リクエストデバイス２４１に関しても、同じ動作である。
【００８３】
次に、ＣＨ０とＣＨ１のＤＲＥＱ０／ＤＲＥＱ１信号の調停に関して説明する。
【００８４】
図９はＤＭＡ転送装置のＤＭＡＣ２００の調停動作を説明するためのタイミングチャートである。図中、○印はＣＨ０のＤＭＡシーケンスの開始を、●印はＣＨ０のＤＭＡシーケンスの開始を指し、番号(1)〜(2)は動作タイミングを説明するための符号である。また、ＤＲＥＱ信号監視ＣＨは調停回路２３０の内部にある。
【００８５】
ＤＭＡＣ２００内部でのＤＲＥＱ０／ＤＲＥＱ１信号の調停は、調停回路２３０によって、ＣＨ０→ＣＨ１→ＣＨ０→…の順（ラウンドロビン式）にＤＲＥＱが入力されたかどうかを監視している。
【００８６】
ここではＴ１区間の始まりにＤＲＥＱ０、ＤＲＥＱ１が入力された場合を例にとり説明する。
【００８７】
まず、図９の(1)の箇所で、ＤＲＥＱ監視がＣＨ０を監視しているときに同時にＤＲＥＱ０／ＤＲＥＱ１が入力されたことから、ＤＲＥＱ０が優先される。ＤＲＥＱ０を受けたＢＲＥＱＮ信号は“Ｌ”となる（図９の○の部分参照）。
【００８８】
次に、Ｔ３の区間（(2)の箇所参照）でＣＨ０のＤＭＡシーケンスが終了した時点で、ＤＲＥＱ信号監視ＣＨがＣＨ１を示していて、しかも、ＤＲＥＱ１信号がイネーブルであるために、Ｔ４の区間でＤＲＥＱ１を受けたＢＲＥＱＮ信号が“Ｌ”となる（図９の●部分参照）。ＣＨ１のＤＭＡシーケンスはＴ５区間で終了する。
【００８９】
Ｔ６〜Ｔ８区間では、ＤＲＥＱ信号監視ＣＨが１周期毎に、ＣＨ０／ＣＨ１のＤＲＥＱ０／ＤＲＥＱ１を監視し、ＤＲＥＱ信号が入力されるのを待っている状態である。このとき、マスク信号ＣＨ０とマスク信号ＣＨ１が動作しているために、Ｔ６でＤＲＥＱ０が、Ｔ８でＤＲＥＱ１がマスクされている。
【００９０】
Ｔ９において、マスク信号ＣＨ１が“Ｌ”になるために、Ｔ１０区間でＢＲＥＱＮ信号がイネーブル（“Ｌ”）になり、ＣＨ１のＤＭＡシーケンスが行われ、Ｔ１１区間でそのシーケンスが終了する。
【００９１】
また、Ｔ１２区間においてマスク信号ＣＨ０が“Ｌ”になり、なおかつ、ＤＲＥＱ監視ＣＨが“０”を示しているため、Ｔ１３区間でＤＲＥＱ０を受けたＢＲＥＱＮ信号が“Ｌ”となり、ＣＨ０のＤＭＡシーケンスが行われる。
【００９２】
このように、ＤＲＥＱ監視ＣＨによってＤＲＥＱ信号を監視して、有効になったＤＲＥＱ信号と監視ＣＨが同じくなった場合にＢＲＥＱＮ信号を“Ｌ”にしてＤＭＡシーケンスをスタートさせている。
【００９３】
以上説明したように、第２の実施形態に係るＤＭＡ転送装置は、ＤＭＡＣ２００が、各チャンネル毎に設置され、ＣＰＵ１００からのマスク信号ｍａｓｋ＿ｅｎ０，ｍａｓｋ＿ｅｎ１により制御されるＤＲＥＱ信号マスク回路２１０，２２０と、ＤＲＥＱ信号マスク回路２１０，２２０のＢＲＥＱ０信号，ＢＲＥＱ１信号を調停する調停回路２３０とを備え、ＤＲＥＱ信号マスク回路２１０，２２０がＤＲＥＱ０／ＤＲＥＱ１信号をマスクしてＤＭＡ転送によるバス占有状態を制御するように構成したので、ＤＭＡＣ側（内部）で外部リクエストデバイスのＤＲＥＱ信号をマスクすることによって、周期的にＤＲＥＱ信号を発生させることにより、ＤＭＡによるシステムのバス占有率を制御することができ、ＤＭＡにバスを占有され、ＣＰＵの処理ができなくなることを避けることができ、システムの破綻を防止できるという効果がある。
【００９４】
さらに、本実施形態では、ＤＲＥＱ信号マスク回路２１０，２２０をＤＭＡＣ２００内部に搭載するようにしているので、外部リクエストデバイスを新規に追加した場合に、新規デバイス搭載の度に、上記マスク回路を追加することによるハードウェアの増加を防ぐことができるという効果がある。
【００９５】
また、ＤＭＡＣ側（内部）に調停回路２３０によるＤＲＥＱ監視ＣＨを搭載することで、ＤＭＡ転送チャンネルに優先順位を付与し、均等にＤＭＡのチャネルを配分することが可能になるという効果がある。
【００９６】
なお、本実施形態では、ＤＭＡＣ２００の内部に、ＤＲＥＱ信号をマスクするＤＲＥＱ信号マスク回路２１０，２２０を設けるようにしているが、これらマスク回路２１０，２２０はＤＭＡＣ側に設置されていればよく、必ずしもＤＭＡＣの内部に設置する構成でなくてもよい。
第３の実施形態
図１０は本発明の第３の実施形態に係るＤＭＡ転送装置の構成を示すブロック図である。本実施形態に係るＤＭＡ転送装置の説明にあたり前記図５と同一構成部分には同一符号を付している。
【００９７】
図１０において、ＤＭＡ転送装置は、ＣＰＵ１００、ＤＭＡＣ３００、外部リクエストデバイス３５０、外部リクエストデバイス３５１、外部リクエストデバイス３５２及び外部メモリ１１３から構成され、ＤＭＡＣ３００は、ＢＲＥＱＮ信号をマスクするカウンタ付きマスク回路３１０を備えて構成される。
【００９８】
ＤＭＡＣ３００は、３つのＤＭＡチャンネルを搭載しており、それらをＣＨ０，ＣＨ１，ＣＨ３とする。また、ＣＨ０，ＣＨ１，ＣＨ２はそれぞれ、外部リクエストデバイス３５１、外部リクエストデバイス３５２、外部リクエストデバイス３５３に接続されている。
【００９９】
外部リクエストデバイス３５１のＤＭＡチャンネルをＣＨ１、外部リクエストデバイス３５２のＤＭＡチャンネルをＣＨ２、外部リクエストデバイス３５３のＤＭＡチャンネルをＣＨ３とする。
【０１００】
図１０の破線に示すように、ＣＨ０，ＣＨ１，ＣＨ２毎に、外部リクエストデバイス３５１、外部リクエストデバイス３５２、外部リクエストデバイス３５３からＤＭＡＣ３００にＤＭＡ要求信号ＤＲＥＱ１，ＤＲＥＱ２，ＤＲＥＱ３が出力され、また、ＤＭＡＣ３００から外部リクエストデバイス３５１、外部リクエストデバイス３５２、外部リクエストデバイス３５３にＤＭＡ許可信号ＤＡＣＫ１，ＤＡＣＫ２，ＤＡＣＫ３が出力される。
【０１０１】
ＤＭＡＣ３００は、ＣＰＵ１００に対してバス開放リクエスト信号ＢＲＥＱＮを出力し、ＣＰＵ１００は、ＤＭＡＣ３００に対してバス開放許可信号ＢＡＣＫＮを出力する。
【０１０２】
また、ＣＰＵ１００からＤＭＡＣ３００に出力されるｍａｓｋ＿ｅｎ信号は、ＣＰＵ１００のポートから出力される信号であり、カウンタ付きマスク回路３１０のカウンタ回路をイネーブルにする信号（アクティブ“Ｈ”）である。
【０１０３】
図１１は上記カウンタ付きマスク回路３１０の構成を示すブロック図である。
【０１０４】
図１１において、サンプリングクロックの立ち上がりエッジでカウント（デクリメント）するカウンタ回路３１１と、カウントデータを所定値“０”と比較し、“０”とカウントデータが一致したときサンプリングクロックの周期分のパルス、すなわちカウンタＴＣ信号を出力する比較器３１２と、ＤＭＡＣ３００内部で作成したＢＲＥＱ信号とｍａｓｋ＿ｅｎマスク信号とのＯＲ（論理和）を作成して、ＢＲＥＱＮ信号を作成するマスク回路３１３とから構成される。
【０１０５】
カウンタ回路３１１には、データバス、サンプルクロック、ＢＡＣＫＮ信号が入力され、現在のカウント値が出力される。
【０１０６】
比較器３１２には、カウンタ回路３１１から出力された現在のカウント値のデータが入力され、カウンタＴＣ信号が出力される。
【０１０７】
マスク回路３１３には、ＤＭＡＣ３００内部でＤＲＥＱ信号から作成したＢＲＥＱ信号、ＣＰＵ１００からのＢＡＣＫＮ信号、ｍａｓｋ＿ｅｎ信号、比較器３１２からカウンタＴＣ信号が入力され、ＢＲＥＱＮ信号を出力する。
【０１０８】
図１２は図１１のマスク回路３１３の内部の詳細な構成を示す図である。
【０１０９】
図１２において、マスク回路３１３は、カウンタＴＣ信号を基にＢＡＣＫＮ信号が入力された時点で内部で生成されたマスク信号がイネーブルになるマスク信号を出力するマスク信号発生回路３１４、及び発生したマスク信号とＢＲＥＱ信号のＯＲ論理をとるＯＲゲート３１５から構成される。
【０１１０】
図１３は上記ＤＭＡ要求信号ＤＲＥＱ１，ＤＲＥＱ２，ＤＲＥＱ３からＢＲＥＱＮ信号発生までの構成を示す図である。
【０１１１】
図１３において、３１６は、外部リクエストデバイス３５１、外部リクエストデバイス３５２、外部リクエストデバイス３５３からのＤＲＥＱ１，ＤＲＥＱ２，ＤＲＥＱ３信号を調停し、ＤＭＡＣ３００内部で作成したＢＲＥＱ信号を出力するＤＲＥＱ信号調停回路である。
【０１１２】
ＤＲＥＱ信号調停回路３１６で作成されたＢＲＥＱ信号は、マスク回路３１３（図１１及び図１２）に出力され、マスク回路３１３はＢＲＥＱＮ信号を出力する。
【０１１３】
ここで、本実施形態のマスクカウンタ付きマスク回路３１０は、第２の実施形態のＤＲＥＱ信号マスク回路２１０，２２０と同様に、ハード的なカウンタ（タイマ）を設けてマスク時間を決定する方法をとる。但し、第２の実施形態のようにハード的なカウンタ（タイマ）を設けてマスク時間を決定する方法も可能であるし、ＣＰＵ自体のタイマ割り込みを利用して、ＣＰＵポートを利用してマスク時間を制御することも可能である。
【０１１４】
また、本実施形態では、マスク時間（外部リクエストデバイスの数に応じて選択する）になるように、マスクカウンタ付きマスク回路３１０内のカウンタ回路３１１のカウンタの値をセットするものであり、このカウンタに対して、所定のマスク時間になるようにデータをセットする。これも、ＣＰＵ自体のタイマ割り込みを使ってでも実現可能である。
【０１１５】
以下、上述のように構成されたＤＭＡ転送装置の動作を説明する。
【０１１６】
まず、カウンタ付きマスク回路３１０の動作について述べる。
【０１１７】
図１１に示すように、ＣＰＵ１００はカウンタ回路３１１にカウントすべき初期値をセット（本実施形態の場合は“５ｈ”をセット）する。次に、ＢＡＣＫＮ信号が入力されると、サンプルクロックの立ち上がりエッジでカウント（デクリメント）が行われる。次に、比較器３１２により現在のカウント値を“０”と比較し、一致するとサンプルクロックの１周期分のパルスを出力する。
【０１１８】
一方、マスク回路３１３においては、図１２に示すようにＢＡＣＫＮ信号により内部のマスク信号がイネーブル（アクティブ“Ｈ”）となり、ＤＭＡＣ３００内部でＤＲＥＱから作成したＢＲＥＱ信号と内部のマスク信号とのＯＲゲート３１５の出力をＢＲＥＱＮとして出力する。ここで、内部のマスク信号は、ＢＡＣＫＮ信号にてイネーブル（アクティブ“Ｈ”）となり、カウンタＴＣ信号にてディセーブル（アクティブ“Ｌ”）となる信号である。
【０１１９】
また、図１０に示すように、ｍａｓｋ＿ｅｎ信号はＣＰＵ１００からＤＭＡＣ３００に入力される信号であり、ＣＰＵ１００のポートで制御される。このｍａｓｋ＿ｅｎ信号は、マスクカウンタ付きマスク回路３１０全体をイネーブルにするかディセーブルにするかを制御する信号であり、マスクカウンタ付きマスク回路３１０を使用しないでＢＲＥＱを出力する場合は、ＣＰＵ１００はディセーブル（“Ｌ”）になるように制御する。
【０１２０】
図１４はＤＭＡ転送装置の動作を説明するためのタイミングチャートである。
なお、図中、番号(1)〜(4)は動作タイミングまたは動作の区間を説明するための符号である。
【０１２１】
図１４のタイミングチャートにおいて、ＤＲＥＱ１、ＤＲＥＱ２、ＤＲＥＱ３信号が図１４の(2)のタイミングで同時にイネーブルになるものとする。各ＣＨ（ＣＨ１、ＣＨ２、ＣＨ３）のＤＭＡ要求の優先度は、ＣＨ１→ＣＨ２→ＣＨ３→ＣＨ１というようなラウンドロビン方式である。
【０１２２】
カウンタ付きマスク回路３１０のカウンタ値を“５”に設定した場合を例にする。
【０１２３】
図１４の(1)のタイミングでカウント値“５”がセットされる。
【０１２４】
次に、図１４の(2)のタイミングで、３つのＤＲＥＱ（ＤＲＥＱ１、ＤＲＥＱ２、ＤＲＥＱ３）が同時にイネーブルになる。ここで、図１４の(2)−１の区間はＣＨ１のＤＭＡが実行されている区間である。
【０１２５】
次に、図１４の(3)−１のタイミング（ＢＡＣＫＮ信号の立ち上がり）でマスク信号イネーブルになり、ＢＲＥＱ信号がマスクされる。カウントの開始も、(3)−１の地点つまり、ＢＡＣＫＮ信号が“Ｈ”になったタイミングで開始される。ＢＲＥＱ信号のマスク回路は、前記図１１のマスク回路３１３であり、ＤＭＡＣ３００内部のＢＲＥＱ信号がこのマスク回路３１３のマスク信号にてマスクされる。
【０１２６】
次に、図１４の(4)−１のタイミングでカウンタ値が“０”となり、マスク信号が“Ｌ”（ディセーブル）になり、マスクが解除され、ＢＲＥＱＮ信号がＤＭＡＣ３００外部に出力される。図１４の(2)−２の区間は、ＣＨ２のＤＭＡ転送が行われる。
【０１２７】
次に、図１４の(3)−２のタイミング（ＢＡＣＫＮ信号の立ち上がり）でマスク信号がイネーブルになりＢＲＥＱＮ信号がマスクされる。このマスク動作は、前記図１１に示したマスク回路３１３により行われる。
【０１２８】
次に、図１４の(4)−２のタイミングでカウンタが“０”となり、マスク信号が“Ｌ”（ディセーブル）になり、マスクが解除され、ＢＲＥＱＮ信号がＤＭＡＣ３００外部に出力される。
【０１２９】
このようにして、ＢＲＥＱＮ信号をマスクしてＢＲＥＱＮが発生する周期を調整している。
【０１３０】
以上説明したように、第３の実施形態に係るＤＭＡ転送装置は、ＤＭＡＣ３００は、ＢＲＥＱＮ信号をマスクするカウンタ付きマスク回路３１０を備え、カウンタ付きマスク回路３１０がＢＲＥＱＮ信号をマスクしてＤＭＡ転送によるバス占有状態を制御するように構成したので、第１及び第２の実施形態と同様の効果を得ることができる。
【０１３１】
特に、本実施形態によれば、第２の実施形態のように外部リクエストデバイスから出力されるＤＲＥＱ信号をマスクするのではなく、ＤＭＡＣ３００内部で、ＢＲＥＱＮ信号をマスクしている。このようにすると、第２の実施形態のように、各ＣＨごとにマスク回路を付加するよりも、マスク回路を１個にすることができ、第２の実施形態の場合よりもハードウェアを小さくできる効果がある。
【０１３２】
また、ＢＲＥＱＮ信号をマスクするので、複数の外部リクエストデバイスからのＤＲＥＱ信号が頻繁に重なってきた場合でも、ＢＲＥＱＮ信号を周期的に出力するように制御することが可能になり、ＤＭＡＣ３００によるバス占有率を一定にできる効果がある。
第４の実施形態
図１５は本発明の第４の実施形態に係るＤＭＡ転送装置の構成を示すブロック図である。本実施形態に係るＤＭＡ転送装置の説明にあたり前記図５と同一構成部分には同一符号を付している。
【０１３３】
図１５において、ＤＭＡ転送装置は、ＣＰＵ１００、ＤＭＡＣ４００、複数の外部リクエストデバイス（４５１，４５２，４５３，…，Ｎ−１，Ｎ）、及び外部メモリ１１３から構成される。
【０１３４】
ＤＭＡＣ４００は、複数のＤＭＡチャンネルを搭載しており、それらをＣＨ１，ＣＨ２，ＣＨ３，…，ＣＨＮ−１，ＣＨＮとする。また、ＣＨ１，ＣＨ２，ＣＨ３，…，ＣＨＮ−１，ＣＨＮはそれぞれ、対応する外部リクエストデバイス（４５１，４５２，４５３，…，Ｎ−１，Ｎ）に接続されている。
【０１３５】
ＤＭＡＣ４００は、ＣＨ１，ＣＨ２，ＣＨ３，…，ＣＨＮ−１，ＣＨＮに対応して設置された複数のＤＲＥＱ信号マスク回路４１０，…と、ＤＲＥＱ信号マスク回路４１０，…のＢＲＥＱ信号を調停する調停回路２３０とを備える。
【０１３６】
外部リクエストデバイス４５１、外部リクエストデバイス４５２、外部リクエストデバイス４５３が出力するＤＲＥＱ信号をそれぞれ、ＤＲＥＱ１、ＤＲＥＱ２、ＤＲＥＱ３とし、そのリクエスト信号に対するＤＡＣＫ信号をそれぞれ、ＤＡＣＫ１、ＤＡＣＫ２、ＤＡＣＫ３とする。このとき、外部リクエストデバイス（Ｎ−１），外部リクエストデバイス（Ｎ）は、複数個外部リクエストデバイスがあるという意味で、ＤＭＡＣ４００が対応可能な外部リクエストデバイスの数を示している。外部メモリ１１３は、ＤＭＡシステムのメモリであり、ＤＭＡシステムのソースデバイスにもなり、ディスティネーションデバイスにもなる。
【０１３７】
ＤＭＡＣ４００内部には、マスクカウンタ及びマスク回路を内蔵したマスクカウンタ付きマスク回路（ＤＲＥＱ信号マスク回路）が各チャンネル毎に搭載されている。このマスク回路は、前記図２及び図３と同様な回路構成であり、マスクカウンタに対しては、ＣＰＵ１００がマスク時間に見合ったカウンタ値を設定する。
【０１３８】
ＤＭＡＣ４００の内部のＤＲＥＱ信号の調停回路２３０は、各チャンネルから出力されたＤＲＥＱ信号を調停し、ＢＲＥＱＮ信号をＣＰＵ１００に対して出力する。調停方法は、第２の実施形態と同様であり、ＤＲＥＱ信号の入力順番とＤＲＥＱ信号監視ＣＨ（前記図９の動作説明参照）によりどのＤＭＡシーケンスを行うか決定する。
【０１３９】
また、ＤＭＡＣ４００からＣＰＵ１００にＢＲＥＱＮ信号（バス開放リクエスト信号：ＣＰＵに対して、バス権の開放を要求する信号／アクティブ“Ｌ”）が出力され、ＣＰＵ１００からＤＭＡＣ４００に対してＢＡＣＫＮ信号（バス開放許可信号：外部ＤＭＡＣに対して、バス権の開放を許可していることを示す信号／アクティブ“Ｌ”）が出力される。
【０１４０】
以下、上述のように構成されたＤＭＡ転送装置の動作を説明する。
【０１４１】
図１６はＤＭＡ転送装置の動作を説明するためのタイミングチャートである。
なお、図中、番号(1)〜(12)は動作タイミングまたは動作の区間を説明するための符号である。
【０１４２】
外部リクエストデバイス４５１、外部リクエストデバイス４５２、外部リクエストデバイス４５３からそれぞれＤＲＥＱ１、ＤＲＥＱ２、ＤＲＥＱ３信号が任意のタイミングで同時（図１６の(1)、(7)の地点）に出力された場合の動作について説明する。
【０１４３】
ＣＰＵ１００は、ＤＭＡコントローラ４００内部のマスクタイマー（Ｃｈ１〜ＣｈＮ）に対してマスク時間を設定する。設定値は図１７に示す値である。本実施形態の場合、外部リクエストデバイスの個数が３個なので、図１７に示す表からマスク時間＝２μｓに設定する。
【０１４４】
ＤＭＡＣ４００は、任意のタイミングにおいて、１つのチャネルのＤＭＡのみを有効にするため、チャンネルが有効になる順番をＣｈ１，Ｃｈ２，…，ＣｈＮという順序で有効にする。
【０１４５】
図１６のタイミングチャートにおいて、(1)、(7)地点でＤＲＥＱ１を受けてＢＲＥＱＮが“Ｌ”となり、ＤＭＡシーケンスが開始される。このＤＭＡシーケンスが終了したあと、(2)、(8)地点でＭＡＳＫ１信号がイネーブルになる。マスク時間の設定が２μｓであるため、２μｓ分マスクされる。
【０１４６】
次に、図１６の(3)、(9)のタイミングでＤＲＥＱ２を受けて、ＢＲＥＱＮが“Ｌ”となり、ＤＭＡシーケンスが開始される。図１６の(4)、(10)のタイミングでこのＤＭＡシーケンスが終了するが、このタイミングでマスクが開始される。
ここでも、マスク時間が２μｓ設定であるために、マスクは２μｓ分行われる。
【０１４７】
同様に、図１６の(5)、(11)地点のタイミングでＤＲＥＱ３を受けて、ＤＭＡシーケンスが開始されて、(6)、(12)地点でＤＭＡシーケンスが終了し、マスクが開始される。この一連の流れにおいて、(6)の地点と(13)の地点の間に、ＤＭＡが行われていない区間が存在するが、この区間では、ＣＰＵ１００は、そのシステムのプログラムに準じた処理を行うことができる。この区間は、ＤＲＥＱのマスクがなければ存在しない区間である。この区間はＤＲＥＱ１、ＤＲＥＱ２、ＤＲＥＱ３の発生周期と、外部リクエストデバイスを搭載する個数によって、決まってくる。
【０１４８】
以上説明したように、第４の実施形態に係るＤＭＡ転送装置は、ＤＭＡＣ４００側（内部）に、ＣＨ１，ＣＨ２，ＣＨ３，…，ＣＨＮ−１，ＣＨＮに対応して設置された複数のＤＲＥＱ信号マスク回路４１０，…と、ＤＲＥＱ信号マスク回路４１０，…のＢＲＥＱ信号を調停する調停回路２３０とを設け、各チャネル毎に配置された複数のＤＲＥＱ信号マスク回路４１０，…が、ＣＰＵ１００により同時動作する外部リクエストデバイスの数に応じてマスク時間を制御するように構成したので、各ＤＭＡチャンネルのＤＭＡ転送の機会を時間的に均等に与えることが可能になりＤＭＡチャンネルの時間的調停が可能になる。
【０１４９】
すなわち、複数の動作可能な外部リクエストデバイスが同一のバス上に存在する場合に、システムとしては、ＤＭＡＣ４００がバスを占有する時間は自ずと増加する。つまり、ＤＭＡＣ４００によるバス占有率が増加する。本実施形態では、ＤＲＥＱ信号のマスク時間を外部リクエストデバイスの同時動作する個数により制御することで、平均的なＤＭＡＣのバス占有率を制御することができ、外部リクエストデバイスが複数存在することによる、システムにおけるＤＭＡＣ４００のバス占有率の著しい増加を防止することができる効果がある。
【０１５０】
なお、本実施形態では、ＤＭＡＣ４００のバス占有率制御方法として第２の実施形態の方法を使用した例を示したが、第１の実施形態の方法に示したように、動作可能な外部リクエストデバイス側で制御することも、また第３の実施形態の方法でＤＭＡＣ４００のＢＲＥＱを制御することによっても実現可能である。
第５の実施形態
図１８は本発明の第５の実施形態に係るＤＭＡ転送装置の構成を示すブロック図である。本実施形態に係るＤＭＡ転送装置の説明にあたり前記図１５と同一構成部分には同一符号を付している。
【０１５１】
図１８において、ＤＭＡ転送装置は、ＣＰＵ５００、ＤＭＡＣ４００、複数の外部リクエストデバイス（４５１，４５２，４５３，…，Ｎ−１，Ｎ）、及び外部メモリ１１３から構成される。
【０１５２】
ＣＰＵ５００のプログラムの中には、プログラムの処理タスクを管理するタスク管理機能５１０（管理手段）が搭載されている。
【０１５３】
ＤＭＡＣ４００は、複数のＤＭＡチャンネルを搭載しており、それらをＣＨ１，ＣＨ２，ＣＨ３，…，ＣＨＮ−１，ＣＨＮとする。また、ＣＨ１，ＣＨ２，ＣＨ３，…，ＣＨＮ−１，ＣＨＮはそれぞれ、対応する外部リクエストデバイス（４５１，４５２，４５３，…，Ｎ−１，Ｎ）に接続されている。
【０１５４】
ＤＭＡＣ４００は、ＣＨ１，ＣＨ２，ＣＨ３，…，ＣＨＮ−１，ＣＨＮに対応して設置された複数のＤＲＥＱ信号マスク回路４１０，…と、ＤＲＥＱ信号マスク回路４１０，…のＢＲＥＱ信号を調停する調停回路２３０とを備える。
【０１５５】
外部リクエストデバイス４５１、外部リクエストデバイス４５２、外部リクエストデバイス４５３が出力するＤＲＥＱ信号をそれぞれ、ＤＲＥＱ１、ＤＲＥＱ２、ＤＲＥＱ３とし、そのリクエスト信号に対するＤＡＣＫ信号をそれぞれ、ＤＡＣＫ１、ＤＡＣＫ２、ＤＡＣＫ３とする。このとき、外部リクエストデバイス（Ｎ−１），外部リクエストデバイス（Ｎ）は、複数個外部リクエストデバイスがあるという意味で、ＤＭＡＣ４００が対応可能な外部リクエストデバイスの数を示している。外部メモリ１１３は、ＤＭＡシステムのメモリであり、ＤＭＡシステムのソースデバイスにもなり、ディスティネーションデバイスにもなる。
【０１５６】
また、ＣＰＵ５００から出力されるｍａｓｋ＿ｅｎ１、ｍａｓｋ＿ｅｎ２、ｍａｓｋ＿ｅｎ３はそれぞれＤＲＥＱ信号マスク回路４１０，…（ＤＲＥＱ信号マスク回路ＣＨ１、ＣＨ２、ＣＨ３）のマスクを有効にする信号である。制御は、ＣＰＵ５００自体がポート制御により行う。
【０１５７】
ＤＭＡＣ４００の内部のＤＲＥＱ信号の調停回路２３０は、各チャンネル（ＣＨ１／２／３…）のＤＲＥＱ信号を調停し、ＢＲＥＱＮ信号をＣＰＵ５００に出力する。調停方法は、第２の実施形態と同様である。
【０１５８】
また、ＤＭＡＣ４００からＣＰＵ５００にＢＲＥＱＮ信号（バス開放リクエスト信号：アクティブ“Ｌ”）が出力され、また、このＢＲＥＱＮ信号に応答して、ＣＰＵ５００は、ＤＭＡＣ４００に対して、ＢＡＣＫＮ信号（バス開放許可信号：アクティブ“Ｌ”）を出力する。
【０１５９】
以下、上述のように構成されたＤＭＡ転送装置の動作を説明する。
【０１６０】
ＣＰＵ５００は、通常プログラムに則って処理をしているが、処理するタスクによっては、ＣＰＵに対する処理負荷が異なっている。ＣＰＵ５００の内部にあるタスク管理機能５１０は、現在何のタスクを処理しているかを常に監視し、その情報を保持する機能をもつものである。このタスク管理機能５１０はソフトウェアにより実現されている。
【０１６１】
まず、プログラム上のタスク名Ｔ１〜Ｔ１０とその処理負荷と対応するマスク時間の関係を図１９の表に示す。
【０１６２】
図１９に示すように、ＣＰＵ５００は、タスクをＴ１，Ｔ２，Ｔ３，…，Ｔ１０，Ｔ１，…の順番で処理していくようなプログラムになっている。
【０１６３】
以下、ＤＲＥＱ１が連続して発生する時のＤＲＥＱ１のイネーブル間隔が１μｓである場合を例に挙げて説明する。
【０１６４】
図２０はＤＭＡ転送装置の動作を説明するためのタイミングチャートである。
【０１６５】
まず、図２０に示すように、タスクＴ１が処理されている最中は、マスク時間が１μｓにセットされている（図１９の表参照）。このときＤＲＥＱ１信号がイネーブルされた場合、必ず１μｓ分ＤＲＥＱ１信号がＤＭＡＣ４００内部のマスクでマスクされて、ＤＭＡ転送が行われる。この場合は、マスク設定時間が１μｓであったが、ＤＲＥＱ１のイネーブル間隔が１μｓであるために、マスクタイマが有効であってもまったく効果がない。
【０１６６】
次に、タスクＴ２が処理されている最中について説明する。このときは、マスク時間が２μｓにセットされている（図１９の表参照）。このとき、ＤＲＥＱ１信号がイネーブルされた場合、必ず２μｓ分ＤＲＥＱ１信号がＤＭＡＣ４００内部のＤＲＥＱ信号マスク回路４１０でマスクされ、ＤＭＡ転送が行われる。この場合は、ＤＲＥＱのイネーブル間隔が１μｓであるのに対し、マスク設定時間が２μｓであったため、マスクの効果が１μｓ出すことができたことになる。
【０１６７】
同様にして、タスクＴ３の場合は、マスクの効果が２μｓ、タスクＴ４の場合は３μｓだけマスクの効果が出てくる。
【０１６８】
各チャンネル毎に上記動作を行う。また、各チャンネルの調停動作は第２の実施形態と同様である。
【０１６９】
以上説明したように、第５の実施形態に係るＤＭＡ転送装置は、ＣＰＵ５００が、プログラムの処理タスクを管理するタスク管理機能５１０を備え、ＣＰＵの処理負荷に応じてマスク時間を制御するように構成したので、以下のような効果を得ることができる。
【０１７０】
すなわち、ＣＰＵ処理（タスク）が複雑であり、しかも、所定の時間内に処理を完了させなければならないタスクがシステム上に多くある場合、ＤＭＡＣから出力されるＢＲＥＱ信号はそのＣＰＵ処理を時間的に非効率的にしてしまうことがある。このとき、本実施形態のように、タスクごとのＤＲＥＱ信号のマスク動作を行うことで、ＣＰＵ処理を所定の時間内に完了させることを遂行することができ、システム上のＣＰＵの時間的処理能力の低下を防止することができる効果がある。
【０１７１】
なお、本実施形態では、ＤＭＡＣの動作を第２の実施形態の方法を制御したが、第１の実施形態に示したように、外部リクエストデバイス側で制御する方法でも、また第３の実施形態に示したように、ＤＭＡＣ内部のＢＲＥＱ信号を制御する方法でも実現可能である。
第６の実施形態
図２１は本発明の第６の実施形態に係るＤＭＡ転送装置の構成を示すブロック図である。本実施形態に係るＤＭＡ転送装置の説明にあたり前記図５と同一構成部分には同一符号を付している。
【０１７２】
図２１において、ＤＭＡ転送装置は、ＣＰＵ１００、ＤＭＡＣ６００、外部リクエストデバイス６５０及び外部メモリ１１３から構成され、ＤＭＡＣ６００は、ＤＲＥＱ信号マスク回路６１０（マスク手段）と、ＤＲＥＱ信号の発生周期を検出するＤＲＥＱ周期検出回路６２０（ＤＲＥＱ周期検出手段）とを備えて構成される。
【０１７３】
外部リクエストデバイス６５０からＤＭＡＣ６００にＤＲＥＱ信号が出力され、ＤＭＡＣ６００から外部リクエストデバイス６５０にＤＡＣＫ信号が出力される。
【０１７４】
ＤＭＡＣ６００からＣＰＵ１００にＢＲＥＱ信号が出力され、ＣＰＵ１００からＤＭＡＣ６００にＢＡＣＫ信号が出力される。
【０１７５】
また、外部メモリ１１３は、ＤＭＡ転送のソースデバイス（または、ディスティネーションデバイス）になる。
【０１７６】
ＣＰＵ１００から出力されるｍａｓｋ＿ｅｎ信号は、ＤＲＥＱ信号マスク回路６１０を有効にする信号である。
【０１７７】
ＣＰＵ１００は、このマスク信号ｍａｓｋ＿ｅｎをＤＲＥＱ信号マスク回路６１０に出力してＤＲＥＱ信号マスク回路６１０を制御する。
【０１７８】
図２２は上記ＤＲＥＱ周期検出回路６２０の回路構成を示す図である。
【０１７９】
図２２において、ＤＲＥＱ周期検出回路６２０は、ＤＲＥＱ信号を入力してＤＲＥＱ信号のエッジを論理的に検出するエッジ検出回路６２１、サンプリングクロックの立ち上がりエッジでカウント（デクリメント）するカウンタ６２２、及びカウントデータを格納するデータバッファ６２３から構成される。
【０１８０】
データバッファ６２３は、カウンタ６２３の結果をＣＰＵ１００（図２１）がリードできるようにデータを保持しておくバッファである。
【０１８１】
以下、上述のように構成されたＤＭＡ転送装置の動作を説明する。
【０１８２】
図２３はＤＲＥＱ周期検出回路６２０の動作を示すタイミングチャートである。
【０１８３】
まず、外部リクエストデバイス６５０からＤＲＥＱ信号がＤＭＡＣ６００に入力され、その入力信号が内部のＤＲＥＱ周期検出回路６２０に入力される。
【０１８４】
ＤＲＥＱ周期検出回路６２０の内部回路においては、図２３のタイミングチャートに示すように、エッジ検出部６２１がＤＲＥＱ信号の立ち上がりエッジを検出し、検出したパルスをトリガとして、カウンタ６２２がカウントを開始する。
このカウントは次のＤＲＥＱ信号のエッジまでカウントする。
【０１８５】
カウンタ６２２によりカウントされたカウントデータは、データバッファ６２３に転送され、カウント終了後はデータバッファ６２３はそのデータを保持している。
【０１８６】
図２４はＤＭＡ転送装置の動作を説明するためのタイミングチャートである。
【０１８７】
ＣＰＵ１００は、データバッファ６２３のカウントデータを任意のタイミングで読み出し、そのデータに従ってＣＰＵのポートにより、ｍａｓｋ＿ｅｎ信号のイネーブル／ディセーブルの操作を行う。すなわち、ＣＰＵ１００は、読み出したカウントデータが小さければｍａｓｋ＿ｅｎ信号をイネーブルにしている時間を長くする。
【０１８８】
図２４に示すように、ｍａｓｋ＿ｅｎ信号がイネーブルの場合、ＤＲＥＱ信号は一定期間（区間）マスクされ、マスク解除後、ｍａｓｋ＿ｅｎ信号がディセーブルとなりＢＲＥＱ信号となってＣＰＵ１００に出力される。
【０１８９】
ＢＲＥＱ信号を受け付けたＣＰＵ１００は、バス権を開放したことを知らせるためにＢＡＣＫ信号を出力する。
【０１９０】
図２４に示すように、ｍａｓｋ＿ｅｎ信号がディセーブルの区間は、ＢＲＥＱ信号の発生間隔が短くなっているが、ｍａｓｋ＿ｅｎ信号がイネーブルの区間はＢＲＥＱの発生間隔がディセーブルの区間に比べて長くなっているのがわかる。
この区間（マスク効果が出ている区間）では、ＣＰＵ１００がプログラムに従って処理している区間である。
【０１９１】
以上説明したように、第６の実施形態に係るＤＭＡ転送装置は、ＤＭＡＣ６００が、ＤＲＥＱ信号マスク回路６１０と、ＤＲＥＱ信号の発生周期を検出するＤＲＥＱ周期検出回路６２０とを備え、ＤＲＥＱ周期検出回路６２０が入力されるＤＲＥＱ信号の発生周期を検出し、そのカウンタデータ値を利用してＤＲＥＱ信号をマスクするように構成したので、ＤＭＡの周期（間隔）を広げることができ、しかも、ＤＭＡＣ６００による、システムにおけるバス占有率を低減するという効果がある。
【０１９２】
また、この方法を使用すれば、ＤＭＡ転送のスピードをＣＰＵ１００によって制御することが可能になるため、ＤＲＥＱ信号発生周期が変動するＩ／Ｏ装置（外部リクエストデバイス）がバス上に存在する場合、同じ周期でＢＲＥＱ信号を発生させ、バス占有率を低減させる効果がある。
【０１９３】
なお、本実施形態においては、ＤＭＡＣの動作を第２の実施形態の方法で制御したが、第１の実施形態の方法に示したように、動作可能な外部リクエストデバイス側で制御することも、また第３の実施形態の方法に示したようにＤＭＡＣ内部のＢＲＥＱを制御する方法でも実現可能である。
第７の実施形態
図２５は本発明の第７の実施形態に係るＤＭＡ転送装置の構成を示すブロック図である。本実施形態に係るＤＭＡ転送装置の説明にあたり前記図２１と同一構成部分には同一符号を付している。
【０１９４】
図２５において、ＤＭＡ転送装置は、ＣＰＵ１００、ＤＭＡＣ７００、外部リクエストデバイス７５１、外部リクエストデバイス７５２及び外部メモリ１１３から構成され、ＤＭＡＣ７００は、ＢＲＥＱＮ信号マスク回路７２０（マスク手段）と、動作を許可する複数の外部リクエストデバイスのＤＲＥＱ信号に伴い発生するＢＲＥＱＮ信号の発生周期を検出するＢＲＥＱＮ周期検出回路７２０（ＢＲＥＱＮ周期検出手段）とを備えて構成される。
【０１９５】
ＤＭＡＣ７００は、複数の（２つの）ＤＭＡチャンネルを搭載しており、それらをＣＨ１，ＣＨ２とする。また、ＣＨ１，ＣＨ２はそれぞれ、外部リクエストデバイス７５１、外部リクエストデバイス７５２に接続されている。
【０１９６】
外部リクエストデバイス７５１のＤＭＡチャンネルをＣＨ１、外部リクエストデバイス７５２のＤＭＡチャンネルをＣＨ２とする。
【０１９７】
図２５の破線に示すように、ＣＨ１，ＣＨ２毎に、外部リクエストデバイス７５１、外部リクエストデバイス７５２からＤＭＡＣ７００に対してＤＭＡ要求信号ＤＲＥＱ１，ＤＲＥＱ２（アクテイブ“Ｈ”）が出力され、また、ＤＭＡＣ７００から外部リクエストデバイス７５１、外部リクエストデバイス７５２に対してＤＭＡ許可信号ＤＡＣＫ１，ＤＡＣＫ２が出力される。
【０１９８】
ＤＭＡＣ７００は、ＣＰＵ１００に対してバス開放リクエスト信号ＢＲＥＱＮ（アクティブ“Ｌ”）を出力し、ＣＰＵ１００は、ＤＭＡＣ７００に対してバス開放許可信号ＢＡＣＫＮ（アクティブ“Ｌ”）を出力する。
【０１９９】
また、ＣＰＵ１００からＤＭＡＣ７００に出力されるｍａｓｋ＿ｅｎ信号は、ＣＰＵ１００のポートから出力される信号であり、ＢＲＥＱＮマスク回路７２０のカウンタ回路をイネーブルにする信号（アクティブ“Ｈ”）である。
【０２００】
図２６は上記ＢＲＥＱＮ信号周期検出回路７２０の回路構成を示す図である。
【０２０１】
図２６において、ＢＲＥＱＮ信号周期検出回路７２０は、ＢＲＥＱＮ信号を入力してＢＲＥＱＮ信号のエッジを論理的に検出するエッジ検出回路７２１、サンプリングクロックの立ち上がりエッジでカウント（デクリメント）するカウンタ７２２、及びカウントデータを格納するデータバッファ７２３から構成される。
【０２０２】
エッジ検出回路７２１からカウントパルスがカウンタに対して出力され、カウンタ７２２から、カウントデータがデータバッファ７２３に転送される。
【０２０３】
データバッファ７２３は、カウンタ７２３の結果をＣＰＵ１００（図２５）がリードできるようにデータを保持しておくバッファである。
【０２０４】
以下、上述のように構成されたＤＭＡ転送装置の動作を説明する。
【０２０５】
図２７はＢＲＥＱＮ信号周期検出回路７２０の動作を示すタイミングチャートであり、図２８はＤＭＡ転送装置の動作を説明するためのタイミングチャートである。
【０２０６】
まず、ＣＨ１とＣＨ２のＤＭＡ転送の優先度は、本実施形態の場合、ＣＨ１→ＣＨ２→ＣＨ１→ＣＨ２のようにラウンドするラウンドロビン型をとるものとする。同時にＤＲＥＱ（要求信号）がＤＭＡＣ７００に入力された場合は、ＣＨ１優先とし、その他の場合は、時間的に先にＤＲＥＱ（要求信号）が入ってきた方を優先とする。
【０２０７】
ＤＲＥＱ１とＤＲＥＱ２が同時に図２８の(1)の地点でアクティブになっている場合を例にする。このとき、ＤＭＡは、ＣＨ１のＤＭＡが行われる。
【０２０８】
次に、図２８の(2)の地点で、ＣＨ２のＤＭＡが行われる。このとき、図２８の(1)と(2)のＢＲＥＱＮ信号の立ち下がりエッジで、図２６に示すＢＲＥＱＮ信号周期検出回路７２０が動作し、カウンタ７２２が動作する。そして、図２７のタイミングチャートに示すように、カウントデータがデータバッファ７２３に転送される。
【０２０９】
また、図２８の(3)の地点でＣＨ１のＤＭＡが実行されるが、このときも、ＢＲＥＱＮ信号周期検出回路７２０により図２８の(2)と(3)のＢＲＥＱＮのエッジからエッジの間のカウントが行われる。この時のカウントデータも、データバッファ７２３に上書きされる。
【０２１０】
図２８の(3)のＤＭＡ転送終了した時点でＣＰＵ１００は、データバッファ７２３のデータをリードする。このリードした値で、ＤＭＡＣ７００のＢＲＥＱＮ信号の発生周期をＣＰＵ１００が認識することができる。
【０２１１】
次に、図２８の(4)−１の地点、つまりＢＡＣＫＮ信号が“Ｈ”になった時点で、ＣＰＵ１００は、ｍａｓｋ＿ｅｎ１信号を“Ｈ”にする。ｍａｓｋ＿ｅｎ１を“Ｈ”にした時点で、ＢＲＥＱＮ信号は、マスクされていて、ＤＲＥＱ１、ＤＲＥＱ２が入力されても、ＢＲＥＱＮ信号は外部に出力されない（図２８のマスク効果が出ている区間参照）。
【０２１２】
図２８の(4)−２、(4)−３地点でも同様である。
【０２１３】
ＣＰＵ１００がｍａｓｋ＿ｅｎ１を“Ｈ”にする時間は、先にリードしたＢＲＥＱ信号の発生周期の値をもとに制御する。例えば、データバッファ７２３からリードした数値が極端に短かかった場合は、ｍａｓｋ＿ｅｎ１を“Ｈ”にしている時間を長くして、ＤＭＡＣ１００によるバス占有率を低下させ、逆に、データバッファ７２３からリードした数値が極端に長かった場合には、ｍａｓｋ＿ｅｎ１信号を“Ｈ”にする時間を短めに制御することが可能である。
【０２１４】
このように、ＢＲＥＱの発生周期をＣＰＵ１００が認識することで装置のＤＭＡＣ７００によるバス占有率をＣＰＵ１００が制御することが可能である。
【０２１５】
以上説明したように、第７の実施形態に係るＤＭＡ転送装置は、ＤＭＡＣ７００が、ＢＲＥＱＮ信号マスク回路７２０と、動作を許可する複数の外部リクエストデバイスのＤＲＥＱ信号に伴い発生するＢＲＥＱＮ信号の発生周期を検出するＢＲＥＱＮ周期検出回路７２０とを備え、ＢＲＥＱＮ信号周期検出回路７２０は、ＢＲＥＱＮ信号を入力してＢＲＥＱＮ信号のエッジを論理的に検出するエッジ検出回路７２１、サンプリングクロックの立ち上がりエッジでカウント（デクリメント）するカウンタ７２２、及びカウントデータを格納するデータバッファ７２３により構成したので、ＢＲＥＱＮ信号の発生周期（発生間隔）をＢＲＥＱＮの信号のエッジを使用してカウントし、カウントデータをデータバッファ７２３に保持しておくことで、ＣＰＵ１００が、ＤＭＡＣ７００から入力されるＢＲＥＱの発生周期を認識することできるようになり、ＣＰＵ１００によって、ＤＭＡＣ７００によるバス占有率を制御することが可能になる。
【０２１６】
また、第６の実施形態のように、ＣＨ（チャンネル）ごとに、ＤＲＥＱの発生周期を検出するＤＲＥＱ周期検出回路６２０を搭載すると、外部リクエストデバイスを多数搭載したときに、ＤＲＥＱ周期検出回路を構成するカウンタや、データバッファを新規にＣＨごとに追加する必要がある。本実施形態によれば、ＢＲＥＱＮ信号に対して、ＢＲＥＱＮ周期検出回路７２０を搭載しているために、外部リクエストデバイスが多数搭載されても、ＢＲＥＱＮ周期検出回路を構成するカウンタやデータバッファは１個のみで済むので、ハードウェアの規模を小さくできる効果がある。
【０２１７】
なお、本実施形態では、第３の実施形態の方法でＤＭＡＣの動作を制御したが、制御の方法はＣＰＵによる制御でも、マスク回路にハード的なタイマーを設けて、ハードでマスクすることも可能である。また、第１の実施形態の方法に示したように、動作可能な外部リクエストデバイス側で制御することも、第２の実施形態の方法に示したように、ＤＭＡＣ側で制御することも可能である。
第８の実施形態
図２９は本発明の第８の実施形態に係るＤＭＡ転送装置の構成を示すブロック図である。本実施形態に係るＤＭＡ転送装置の説明にあたり前記図１８及び図２１と同一構成部分には同一符号を付している。
【０２１８】
図２９において、ＤＭＡ転送装置は、ＣＰＵ８００（設定手段）、ＤＭＡＣ６００、外部リクエストデバイス６５０及び外部メモリ１１３から構成され、ＤＭＡＣ６００は、ＤＲＥＱ信号マスク回路６１０と、ＤＲＥＱ周期検出回路６２０とを備えて構成される。
【０２１９】
ＣＰＵ８００のプログラムの中には、プログラムの処理タスクを管理するタスク管理機能８１０（管理手段）が搭載されている。このタスク管理機能８１０はソフトウェアにより実現されている。
【０２２０】
ＤＭＡＣ６００は、外部リクエストデバイス６５０からＤＲＥＱ信号が入力され、マスクイネーブルの場合はＤＲＥＱ信号をｍａｓｋ＿ｅｎ信号の区間分だけマスクしてＢＲＥＱＮ信号をＣＰＵ８００に対して出力する。ＣＰＵ８００がバス権を開放したときにＢＡＣＫＮ信号がＤＭＡＣ６００に出力される。
【０２２１】
そのＢＡＣＫＮ信号を受けてＤＭＡＣ６００は、外部リクエストデバイス６５０に対して、ＤＡＣＫ信号を出力する。
【０２２２】
ＤＲＥＱ周期検出回路６２０は、第６の実施形態の図２２と同じ回路構成である。
【０２２３】
以下、上述のように構成されたＤＭＡ転送装置の動作を説明する。
【０２２４】
まず、システム全体のバス負荷率を規定する。説明を簡単にするために、本実施形態ではシステム全体のバス負荷率を１２％以下とする。また、外部リクエストデバイス６５０のＤＲＥＱ信号発生間隔を５μｓとし、１回（Ｗｏｒｄ分）のＤＭＡ転送のバス占有率を１０％とする。これによりＤＭＡでバスを占有する時間＝５００ｎｓとなる。
【０２２５】
まず、プログラム上のタスク名Ｔ１〜Ｔ１０とその処理負荷と対応するマスク時間及びＤＭＡＣの負荷率の関係を図３０の表に示す。
【０２２６】
図３０に示すように、本実施形態は、タスクＴ１〜Ｔ１０を使って処理するシステムであり、その中のＴ１，Ｔ３，Ｔ５，Ｔ７を図３１に示すタイミングチャートのような順序でタスク処理していく場合を考える。
【０２２７】
図３１はＤＭＡ転送装置の動作を説明するためのタイミングチャートである。
【０２２８】
まず、ＤＲＥＱ信号がタスクＴ１区間で入力される。この場合、図３０の表から計算すると、合計のバス占有率が１１％となり、本実施形態の占有率１２％を超えることはない。そのためマスク回路を動作させる必要はないために、ｍａｓｋ＿ｅｎ信号はディセーブルのままで、何ら問題がない。よってＤＲＥＱ信号と同じ周期でＢＲＥＱ信号が発生する。
【０２２９】
次に、タスクＴ３区間でＤＲＥＱ信号が発生した場合、図３０の表とＤＭＡのバス占有率から計算すると１３％となってしまう。本実施形態のバスの占有率は１２％以下であるため、問題が生じる。このようなことが起きないように、処理がタスクＴ３に入った場合にｍａｓｋ＿ｅｎ信号を図３１に示すタイミングで出力するようにＣＰＵ８００がコントロールする。このとき、ＤＲＥＱ信号はｍａｓｋ＿ｅｎ信号によりマスクされてＢＲＥＱ信号としてＣＰＵ８００に出力される。このＢＲＥＱ信号によってＣＰＵ８００はバス権を開放するためにＢＡＣＫ信号を出力する。このようなやり取りでＤＭＡ転送のシーケンスを実行する。
【０２３０】
次に、タスクＴ５区間にＤＲＥＱ信号が入力された場合を説明する。
【０２３１】
この場合はタスクＴ３の場合と同様にバス占有率を計算すると１５％になってしまう。これもまた、本実施形態のバス占有率１２％以下を満たしていないので、この条件を満たすために、図３０の表を使用してマスク時間を設定する。
【０２３２】
この表によればＴ５の場合は、ｍａｓｋ＿ｅｎがイネーブルの時間が２．１４μｓ＋５μｓとなり、バス占有率が１２％以下になる。この時のマスク時間を満たすようにＣＰＵ８００がｍａｓｋ＿ｅｎを制御する。
【０２３３】
同様に、タスクＴ７の場合も図３０の表からマスク時間を設定して、本実施形態で設定したバス占有率１２％以下になるようにｍａｓｋ＿ｅｎ時間を決め、このマスク時間を満たすようにＣＰＵ８００がｍａｓｋ＿ｅｎを制御する。
【０２３４】
以上説明したように、第８の実施形態に係るＤＭＡ転送装置は、ＣＰＵ８００が、プログラムの処理タスクを管理するタスク管理機能８１０を備え、ＣＰＵの処理負荷に応じて所定のシステムのバス負荷を保持して、マスク時間を制御するように構成したので、各タスクが動作しているときのバス占有率を予め計算しておき、その計算値からシステム全体のバス占有率の限界値を設定し、ＣＰＵ処理が効果的でかつ、ＤＭＡ周期もバス占有率の上限を超えないような値で行うことが可能になり、予め計算していたバス占有率の値まで、確実にバス占有率を低減する効果がある。
【０２３５】
なお、本実施形態は、第２の実施形態の方法でＤＭＡＣを制御していたが、第１の実施形態の方法に示したように、動作可能な外部リクエストデバイス側で制御することも、第３の実施形態の方法でＤＭＡＣ内部のＢＲＥＱ信号を制御することによっても実現可能である。
【０２３６】
また、マスク時間はＣＰＵによって制御することも、マスク回路にハード的なタイマを設けてＣＰＵからタイマの時間をセットすることによって実現することも可能である。
【０２３７】
したがって、このような特長を有するＤＭＡ転送装置を、例えば、プリンタなどに代表されるような、ＰＣ（パーソナルコンピュータ）周辺機器において、ＰＣからのデータ転送速度と周辺機器自身のデータ処理速度がお互いに高速処理が必要な場合で、しかもシステムの破綻を避けることが不可欠なシステムにおいて、データ転送とＣＰＵ処理を時間的に均等に処理したい場合に有効である。また、ＣＰＵを中心としたＤＭＡによるデータ転送を含むすべてのシステムにおいて利用可能である。
【０２３８】
また、上記各実施形態では、外部リクエストデバイスまたはＤＭＡＣ内にマスク回路等を設置するようにしているが、これは一例であり、外部に外付けするように設置してもよい。また、ＤＭＡＣは、専用のＤＭＡコントローラでも汎用のＤＭＡコントローラでもよく、特に、高速性が要求されるときにはカウンタ及びバッファ等の個別部品を用いて構成するものでもよい。
【０２３９】
さらに、上記ＤＭＡ転送装置を構成するレジスタ、カウンタ、各種制御回路等の種類、数などは上述した実施形態に限られないことは言うまでもない。
【０２４０】
【発明の効果】
本発明に係るＤＭＡ転送装置では、外部リクエストデバイスまたはＤＭＡ制御部が、ＤＲＥＱ信号をマスクするマスク手段を備え、マスク手段によりＤＲＥＱ信号をマスクしてＤＭＡ転送によるバス占有状態を制御するように構成したので、外部リクエストデバイスが複数存在する場合、または、ＤＲＥＱ信号の発生周期が短い外部リクエストデバイスが同一のバスに存在する場合、ＤＭＡによるバス占有率を低減でき、時間的にバスを有効に利用することができる。
【図面の簡単な説明】
【図１】本発明を適用した第１の実施形態に係るＤＭＡ転送装置の構成を示すブロック図である。
【図２】上記ＤＭＡ転送装置のＤＲＥＱ信号マスク回路の構成を示す回路図である。
【図３】上記ＤＭＡ転送装置のＤＲＥＱ信号マスク回路の構成を示す回路図である。
【図４】上記ＤＭＡ転送装置のＤＭＡ転送動作を示すタイミングチャートである。
【図５】本発明を適用した第２の実施形態に係るＤＭＡ転送装置の構成を示すブロック図である。
【図６】上記ＤＭＡ転送装置のＤＲＥＱ信号マスク回路の構成を示すブロック図である。
【図７】上記ＤＭＡ転送装置のマスク回路の内部の詳細な構成を示す図である。
【図８】上記ＤＭＡ転送装置の動作を説明するためのタイミングチャートである。
【図９】上記ＤＭＡ転送装置のＤＭＡＣの調停動作を説明するためのタイミングチャートである。
【図１０】本発明を適用した第３の実施形態に係るＤＭＡ転送装置の構成を示すブロック図である。
【図１１】上記ＤＭＡ転送装置のカウンタ付きマスク回路の構成を示すブロック図である。
【図１２】上記ＤＭＡ転送装置のマスク回路の内部の詳細な構成を示す図である。
【図１３】上記ＤＭＡ転送装置のＤＭＡ要求信号ＤＲＥＱ１，ＤＲＥＱ２，ＤＲＥＱ３からＢＲＥＱＮ信号発生までの構成を示す図である。
【図１４】上記ＤＭＡ転送装置の動作を説明するためのタイミングチャートである。
【図１５】本発明を適用した第４の実施形態に係るＤＭＡ転送装置の構成を示すブロック図である。
【図１６】上記ＤＭＡ転送装置の動作を説明するためのタイミングチャートである。
【図１７】上記ＤＭＡ転送装置のマスク時間を設定の表を示す図である。
【図１８】本発明を適用した第５の実施形態に係るＤＭＡ転送装置の構成を示すブロック図である。
【図１９】上記ＤＭＡ転送装置のプログラム上のタスク名とその処理負荷と対応するマスク時間の関係の表を示す図である。
【図２０】上記ＤＭＡ転送装置の動作を説明するためのタイミングチャートである。
【図２１】本発明を適用した第６の実施形態に係るＤＭＡ転送装置の構成を示すブロック図である。
【図２２】上記ＤＭＡ転送装置のＤＲＥＱ周期検出回路の回路構成を示す図である。
【図２３】上記ＤＭＡ転送装置のＤＲＥＱ周期検出回路の動作を示すタイミングチャートである。
【図２４】上記ＤＭＡ転送装置の動作を説明するためのタイミングチャートである。
【図２５】本発明を適用した第７の実施形態に係るＤＭＡ転送装置の構成を示すブロック図である。
【図２６】上記ＤＭＡ転送装置のＢＲＥＱＮ信号周期検出回路の回路構成を示す図である。
【図２７】上記ＤＭＡ転送装置のＢＲＥＱＮ信号周期検出回路の動作を示すタイミングチャートである。
【図２８】上記ＤＭＡ転送装置の動作を説明するためのタイミングチャートである。
【図２９】本発明を適用した第８の実施形態に係るＤＭＡ転送装置の構成を示すブロック図である。
【図３０】上記ＤＭＡ転送装置のプログラム上のタスク名とその処理負荷と対応するマスク時間の関係の表を示す図である。
【図３１】上記ＤＭＡ転送装置の動作を説明するためのタイミングチャートである。
【図３２】従来のＤＭＡ転送装置の構成を示すブロック図である。
【図３３】従来のＤＭＡＣの調停のタイミングを概念的に示すタイミングチャートである。
【符号の説明】
１００，５００，８００  ＣＰＵ、１１０，２００，３００，４００，６００，７００  ＤＭＡＣ（ＤＭＡ制御部）、１１１，１１２，２４０，２４１，３５１，３５２，３５３，４５１，４５２，４５３，７５１，７５２  外部リクエストデバイス、１１３  外部メモリ、１２１，１２２，２１０，２２０，４１０，６１０  ＤＲＥＱ信号マスク回路（マスク手段）、１３１  ＡＮＤゲート、１３２  ＯＲゲート、２３０  調停回路、２１１，３１１  カウンタ回路、２１２，３１２  比較器、２１３，３１３  マスク回路、２１４  マスク信号発生回路、２１５，３１５  ＯＲゲート、３１０  カウンタ付きマスク回路（マスク手段）、３１６  ＤＲＥＱ信号調停回路、３１３  ＢＲＥＱ信号マスク回路、３１４  マスク信号生成回路、５１０，８１０  タスク管理機能（管理手段）、６２０  ＤＲＥＱ周期検出回路（ＤＲＥＱ周期検出手段）、６２１，７２１  エッジ検出回路、６２２，７２２  カウンタ、６２３，７２３  データバッファ、７１０  ＢＲＥＱＮ信号マスク回路（マスク手段）、７２０  ＢＲＥＱＮ周期検出回路（ＢＲＥＱＮ周期検出手段）
【図１】
0004549458.tif 000002
【図２】
0004549458.tif 000003
【図３】
0004549458.tif 000004
【図４】
0004549458.tif 000005
【図５】
0004549458.tif 000006
【図６】
0004549458.tif 000007
【図７】
0004549458.tif 000008
【図８】
0004549458.tif 000009
【図９】
0004549458.tif 000010
【図１０】
0004549458.tif 000011
【図１１】
0004549458.tif 000012
【図１２】
0004549458.tif 000013
【図１３】
0004549458.tif 000014
【図１４】
0004549458.tif 000015
【図１５】
0004549458.tif 000016
【図１６】
0004549458.tif 000017
【図１７】
0004549458.tif 000018
【図１８】
0004549458.tif 000019
【図１９】
0004549458.tif 000020
【図２０】
0004549458.tif 000021
【図２１】
0004549458.tif 000022
【図２２】
0004549458.tif 000023
【図２３】
0004549458.tif 000024
【図２４】
0004549458.tif 000025
【図２５】
0004549458.tif 000026
【図２６】
0004549458.tif 000027
【図２７】
0004549458.tif 000028
【図２８】
0004549458.tif 000029
【図２９】
0004549458.tif 000030
【図３０】
0004549458.tif 000031
【図３１】
0004549458.tif 000032
【図３２】
0004549458.tif 000033
【図３３】
0004549458.tif 000034