(57)【要約】【課題】  特定のＤＭＡチャネルがバス権を独占することを防止したＤＭＡＣを提供すること。【解決手段】  ＤＭＡＣ１には、現転送用のレジスタ群２１〜２６に設定された値に応じてＤＭＡ転送を制御する複数のＤＭＡ転送部２０−１〜２０−ｎが設けられる。ＤＭＡＣがバスマスタからバス権を獲得したときに、複数のＤＭＡ転送部２０−１〜２０−ｎからの転送要求に応じて、所定順序で複数のＤＭＡ転送部にバスの使用が許可される。したがって、特定のＤＭＡチャネルがバス権を独占することを防止することが可能となる。【選択図】        図３
2005165508.tif 000002
【特許請求の範囲】
【請求項１】
現転送用のレジスタ群に設定された値に応じてダイレクトメモリアクセス転送を制御する複数のダイレクトメモリアクセス転送部と、
バスマスタからバス権を獲得中に、前記複数のダイレクトメモリアクセス転送部からの転送要求に応じて、チャネル間で所定回数の転送毎にバス使用権が移るように、所定順序で前記複数のダイレクトメモリアクセス転送部にバスの使用を許可する制御部とを含むダイレクトメモリアクセスコントローラ。
【請求項２】
前記ダイレクトメモリアクセスコントローラはさらに、次転送用のレジスタ群を含み、
前記ダイレクトメモリアクセス転送部は、前記次転送用のレジスタ群に設定された値を前記現転送用のレジスタ群に転送して、ダイレクトメモリアクセス転送を制御する、請求項１記載のダイレクトメモリアクセスコントローラ。
【請求項３】
前記次転送用のレジスタ群には、外部メモリに格納されたダイレクトメモリアクセス制御情報が順次転送されて格納される、請求項２記載のダイレクトメモリアクセスコントローラ。
【請求項４】
前記外部メモリから前記次転送用のレジスタ群へのダイレクトメモリアクセス制御情報の転送は、前記次転送用のレジスタ群に格納される値が前記複数のダイレクトメモリアクセス転送部のいずれに転送された後、前記複数のダイレクトメモリアクセス転送部に対するバスの使用権が切替わる前に行なわれる、請求項３記載のダイレクトメモリアクセスコントローラ。
【請求項５】
前記制御部は、ラウンドロビン方式で前記複数のダイレクトメモリアクセス転送部によるバス使用の順序を決定する、請求項１〜４のいずれかに記載のダイレクトメモリアクセスコントローラ。
【請求項６】
前記制御部は、過去の各チャネルのダイレクトメモリアクセス転送回数に応じて、前記複数のダイレクトメモリアクセス転送部によるバス使用の順序を決定する、請求項１〜４のいずれかに記載のダイレクトメモリアクセスコントローラ。
【請求項７】
前記制御部は、１回の連続したバス権の獲得中における各チャネルの転送回数が設定され、該転送回数に応じて前記複数のダイレクトメモリアクセス転送部にバスの使用を許可する、請求項１〜４のいずれかに記載のダイレクトメモリアクセスコントローラ。
【請求項８】
前記制御部は、チャネルが３つ以上ある場合におけるチャネルのバス使用順序が設定され、該バス使用順序に応じて前記複数のダイレクトメモリアクセス転送部にバスの使用を許可する、請求項１〜４のいずれかに記載のダイレクトメモリアクセスコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数チャネルを有するＤＭＡ（Direct Memory Access）コントローラに関し、特に、チャネル間におけるサイクルスチールを可能にしたＤＭＡコントローラに関する。
【背景技術】
【０００２】
近年、ＣＰＵ（Central Processing Unit）などを搭載したシステムの処理速度の高速化に対する要望がますます高まってきている。このような要望に応じた機能の１つとして、Ｉ／Ｏ（Input/Output）デバイスとメモリとの間などで直接データの入出力を行なうＤＭＡ機能を挙げることができる。一般に、ＤＭＡコントローラは、複数チャネルのＤＭＡ転送が行なえるように設計されていることが多い。これに関連する技術として、特開２０００−２０７３５２号公報および特開平９−２５９０７１号公報に開示された発明がある。
【０００３】
特開２０００−２０７３５２号公報に開示されたメモリアクセス競合制御方法においては、何れかのＤＭＡＣによりバスが取得された上、共有メモリとの間で現にＤＭＡ転送処理が行なわれている状態であっても、そのＤＭＡＣよりも優先度が高い他のＤＭＡＣよりバス要求信号があった場合には、現に行なわれているＤＭＡ転送処理を強制的に中断させた上、その他のＤＭＡＣにバスを取得させるようにしたものである。
【０００４】
特開平９−２５９０７１号公報に開示された通信制御装置においては、第１のＤＭＡコントローラチャネルがバスマスタとして動作中に、第１のＤＭＡコントローラチャネルよりも優先順位の高い第２のＤＭＡコントローラチャネルのバス権要求に対して、第１のＤＭＡコントローラチャネルが直ちにバス権を放棄する。そして、放棄直前の第１のＤＭＡコントローラチャネル動作状態を記憶、保持し、第１のＤＭＡコントローラチャネルにバス権が復帰した時、動作状態からＤＭＡ転送を継続して再開する。
【特許文献１】特開２０００−２０７３５２号公報
【特許文献２】特開平９−２５９０７１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来のＤＭＡコントローラにおいては、ＤＭＡＣのある特定チャネルがＤＭＡ転送を開始すると、ＣＰＵアクセスがその間に入り込むことができるものの、他のＤＭＡＣチャネルのＤＭＡ転送がその間に入る込むことができなかった。
【０００６】
また、上述した特開２０００−２０７３５２号公報および特開平９−２５９０７１号公報に開示された発明においては、ＤＭＡＣのあるチャネルがＤＭＡ転送を行なっている途中で、優先順位が高いＤＭＡチャネルのバス権要求がある場合に、その優先順位の高いＤＭＡチャネルにバスの使用権を渡すものである。しかし、その優先順位が高いＤＭＡチャネルのＤＭＡ転送が終了するまで、他のＤＭＡチャネルはＤＭＡ転送を待たなければならない。
【０００７】
本発明は、上記問題点を解決するためになされたものであり、その目的は、特定のＤＭＡＣチャネルがバス権を独占することを防止したＤＭＡＣを提供することである。
【課題を解決するための手段】
【０００８】
本発明のある局面に従えば、ダイレクトメモリアクセスコントローラは、現転送用のレジスタ群に設定された値に応じてダイレクトメモリアクセス転送を制御する複数のダイレクトメモリアクセス転送部と、バスマスタからバス権を獲得中に、複数のダイレクトメモリアクセス転送部からの転送要求に応じて、チャネル間で所定回数の転送毎にバス使用権が移るように、所定順序で複数のダイレクトメモリアクセス転送部にバスの使用を許可する制御部とを含む。
【発明の効果】
【０００９】
本発明のある局面によれば、制御部が、バスマスタからバス権を獲得中に、複数のダイレクトメモリアクセス転送部からの転送要求に応じて、チャネル間で所定回数の転送毎にバス使用権が移るように、所定順序で複数のダイレクトメモリアクセス転送部にバスの使用を許可するので、特定のチャネルがバス権を独占するのを防止することが可能となった。
【発明を実施するための最良の形態】
【００１０】
図１は、本発明の実施の形態におけるＤＭＡＣのバス権獲得状態の遷移を示す図である。図１に示すように、ＤＭＡＣ１〜ＤＭＡＣ３のいずれかがＤＭＡ転送を行なっている場合、ＣＰＵとの間でバス権獲得が遷移することが可能であり、またＤＭＡＣ１〜ＤＭＡＣ３の間でもバス権獲得が遷移することが可能である。
【００１１】
図２は、本発明の実施の形態におけるＤＭＡＣが用いられるシステムの一例を示す図である。このシステムは、ＤＭＡＣ１と、ＣＰＵ２と、ブートコントローラ３と、ＵＡＲＴ（Universal Asynchronous Receiver-Transmitter）４と、内蔵メモリ５と、外部メモリ７０に対するデータの入出力の制御を行なう外部ＩＦ６と、アービタ７と、デコーダ８と、マルチプレクサ（ＭＵＸ）９ａおよび９ｂとを含む。
【００１２】
ＤＭＡＣ１、ＣＰＵ２などは、バスマスタとなるマスタデバイスである。また、ブートコントローラ３、ＵＡＲＴ４、内蔵メモリ５および外部メモリ７０は、マスタデバイスによりアクセス可能なスレーブデバイスである。特に、ＤＭＡＣ１は、スレーブデバイスにもなる。
【００１３】
ＤＭＡＣ１のマスタＷは、後述するＡＨＢマスタＩＦ側の出力信号ＨＷＤＡＴＡｏｕｔ，ＨＡＤＤＲｏｕｔ，ＨＷＲＩＴＥｏｕｔ，ＨＳＩＺＥｏｕｔ，ＨＴＲＡＮＳｏｕｔ，ＨＢＵＲＳＴｏｕｔ，ＨＰＲＯＴｏｕｔ，ＨＬＯＣＫを含む信号群を指す。ＤＭＡＣ１のマスタＲは、後述するＡＨＢマスタＩＦ側の入力信号ＨＲＤＡＴＡｉｎ，ＨＲＥＳＰｉｎ，ＨＲＥＡＤＹｉｎを含む信号群を指す。
【００１４】
ＤＭＡＣ１のスレーブＷは、後述するＡＨＢスレーブＩＦ側の入力信号ＨＷＤＡＴＡｉｎ，ＨＡＤＤＲｉｎ，ＨＷＲＩＴＥｉｎ，ＨＳＩＺＥｉｎ，ＨＴＲＡＮＳｉｎを含む信号群を指す。ＤＭＡＣ１のスレーブＲは、後述するＡＨＢスレーブＩＦ側の出力信号ＨＲＤＡＴＡｏｕｔ，ＨＲＥＳＰｏｕｔ，ＨＲＥＡＤＹｏｕｔを含んだ信号群を指す。
【００１５】
ＣＰＵ２は、内蔵メモリ５、外部メモリ７０などに格納されたプログラムを実行して、システム制御のための演算を行なう。
【００１６】
デコーダ８は、マスタデバイスから出力されるアドレス（ＭＵＸ９ｂからの出力の中のアドレス）を受け、どのデバイスに対するアクセスかを検出し、その検出されたアクセス対象のデバイスにＨＳＥＬ信号を出力する。ＤＭＡＣ１は、ＨＳＥＬ信号をこのデコーダ８から受ける。
【００１７】
ＭＵＸ９ａは、デコーダ８によって選択制御され、ブートコントローラ３、ＵＡＲＴ４、内蔵メモリ５、外部メモリ７０、ＤＭＡＣ１の複数スレーブデバイスからのそれぞれ出力信号群を受け、その１つの出力信号群を選択して出力する。
【００１８】
アービタ７は、ＤＭＡＣ１、ＣＰＵ２等の複数のマスタデバイスからそれぞれバス要求（ＨＢＵＳＲＥＱ）信号を受け、どのマスタデバイスにバス権を与えるかを調停し、バス権獲得を許可するデバイスにＨＧＲＡＮＴ信号を与える。したがって、ＤＭＡＣ１は、ＨＢＵＳＲＥＱ信号をアービタ７に与え、ＨＧＲＡＮＴ信号をアービタ７から受ける。
【００１９】
ＭＵＸ９ｂは、ＤＭＡＣ１およびＣＰＵ２の複数のマスタデバイスのそれぞれから出力信号群を受け、その１つの信号群を選択して出力する。複数のデバイスからＭＵＸ９ａおよび９ｂの入力側への信号伝搬は、それぞれ複数のデバイスに対応する別個のそれぞれ複数のバスによって行なわれる。また、ＭＵＸ９ａおよび９ｂの出力側から複数のデバイスへの信号伝搬は、共通のバスで行なわれる。
【００２０】
内蔵メモリ５は、ＳＲＡＭ（Static Random Access Memory）などによって構成される。また、外部メモリ７０は、ＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）などによって構成され、外部ＩＦ６を介してマスタデバイスからアクセスされる。
【００２１】
ブートコントローラ３は、ＣＰＵ２がブートする際の制御を行なうが、特にＤＭＡＣ１に対しては後述するＢＴ＿ＤＭＡＲＥＱ＿Ｐ信号とＢＴ＿ＲＡＭＳＥＬ信号とを与え、ブートする際に必要なプログラムのロードを行なうようにＤＭＡＣ１を制御する。
【００２２】
ＵＡＲＴ４は、シリアルポートに接続され、パラレルデータをシリアルデータに変換、またはシリアルデータをパラレルデータに変換する。
【００２３】
図３は、本発明の実施の形態におけるＤＭＡＣの概略構成を示すブロック図である。このＤＭＡＣ１は、次転送用のレジスタ群１０と、チャネル数分のＤＭＡ転送部２０−１〜２０−ｎと、ブートＤＭＡ転送要求検出部３０とを含む。なお、図３に示す各信号（ＩＣ＿ＤＭＡＲＱ＿Ｐ信号、ＢＴ＿ＤＭＡＲＱ＿Ｐ信号、ＢＴ＿ＲＡＭＳＥＬ信号を除く）の意味は、文献「ＡＭＢＡＴＭ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  （ＲＥＶ２．０）」に記述されている。この文献は、Ａｄｖａｎｃｅｄ  ＲＩＳＣ  Ｍａｃｈｉｎｅｓ（ＡＲＭ）社からリリースされ、「ｈｔｔｐ：／／ＷＷＷ．ａｒｍ．ｃｏｍ／Ｔｅｃｈ＿Ｓｐｅｃｓ？ＯｐｅｎＤｏｃｕｍｅｎｔ」のウェブサイトから入手可能である。
【００２４】
次転送用のレジスタ群１０は、次転送用の転送元アドレスレジスタ（ＤＭＡＳＡＲ）１１と、次転送用のリロードソースアドレスレジスタ（ＤＭＡＲＳＡ）１２と、次転送用のＤＭＡセッティングレジスタ（ＤＭＡＳＥＴ）１３と、次転送用の転送先アドレスレジスタ（ＤＭＡＤＡＲ）１４と、次転送用のＤＭＡ転送レジスタ（ＤＭＡＴＲＣＮＴ）１５と、次転送用のＤＭＡ完了レジスタ（ＤＭＡＩＮＴ）１６と、ＤＭＡコントロールレジスタ（ＤＭＡＣＮＴ）１７と、次転送用のＤＭＡ要因レジスタ（ＤＭＡＦＣＴ）１８と、チャネル指定レジスタ（ＤＭＡＣＨＡ）１９とを含む。
【００２５】
ＤＭＡ転送部２０−１〜２０−ｎのそれぞれは、現転送用の転送元アドレスレジスタ（ＤＭＡＣＳＡＲ）２１と、現転送用のＤＭＡセッティングレジスタ（ＤＭＡＣＳＥＴ）２２と、現転送用の転送先アドレスレジスタ（ＤＭＡＣＤＡＲ）２３と、現転送用のＤＭＡ転送レジスタ（ＤＭＡＣＴＲＣＮＴ）２４と、現転送用のＤＭＡ完了レジスタ（ＤＭＡＣＩＮＴ）２５と、現転送用のＤＭＡ要因レジスタ（ＤＭＡＣＦＣＴ）２６と、ＤＭＡ転送リクエスト検出部２７と、ＤＭＡ転送制御部２８とを含む。
【００２６】
レジスタ群１１〜１８、２１〜２６は、次転送用のレジスタ群１１〜１８と、現転送用のレジスタ群２１〜２６との２重構造を有しており、現転送用レジスタ群２１〜２６に設定されているＤＭＡ転送が完了したときに、次転送用のレジスタ群１１〜１８に設定されている値が現転送用のレジスタ群２１〜２６に設定されて、次のＤＭＡ転送が行なわれる。
【００２７】
ＣＰＵ２は、ＤＭＡＣ１のＡＨＢスレーブＩＦを用いて、ＨＷＤＡＴＡｉｎ信号の内容をレジスタ１１〜１８に書込み、レジスタ１１〜１８の内容をＨＲＤＡＴＡｏｕｔ信号として読出す。
【００２８】
次転送用の転送元アドレスレジスタ１１は、次転送用のＤＭＡ転送元アドレスを格納する。このレジスタは、読出し／書込みが可能である。
【００２９】
次転送用のリロードソースアドレスレジスタ１２は、次転送用のＤＭＡリロードソースアドレスを格納する。このレジスタは、読出し／書込みが可能である。
【００３０】
次転送用のＤＭＡセッティングレジスタ１３は、ＤＭＡ転送方法を設定するためのレジスタであり、読出し／書込みが可能である。このＤＭＡセッティングレジスタ１３は、転送元アドレスが固定およびインクリメントのいずれであるかを指定する１ビットと、転送先アドレスが固定およびインクリメントのいずれであるかを指定する１ビットと、ＤＭＡ転送サイズ（バイト転送、ハーフワード転送、ワード転送）を指定する２ビットと、バスアクセス割合を指定する４ビットとを含む。
【００３１】
次転送用の転送先アドレスレジスタ１４は、次転送用のＤＭＡ転送先アドレスを格納する。このレジスタは、読出し／書込みが可能である。
【００３２】
次転送用のＤＭＡ転送レジスタ１５は、次転送用のＤＭＡ転送の転送回数を格納する。このレジスタは、読出し／書込みが可能である。
【００３３】
次転送用のＤＭＡ完了レジスタ１６は、次転送用のＤＭＡ転送の完了回数を格納する。このレジスタは、読出し／書込みが可能である。
【００３４】
なお、次転送用のＤＭＡ転送レジスタ１５に設定される転送回数は、ｎバイト単位のデータ転送をＮ回行なう場合のｎおよびＮを指定するものである。また、次転送用のＤＭＡ完了レジスタ１６に設定される完了回数は、次転送用のＤＭＡ転送レジスタ１５に設定された転送を何セット行なうかを指定するものである。
【００３５】
ＤＭＡコントロールレジスタ１７は、ＤＭＡ転送の制御のためのレジスタであり、全てのビットに対して、読出し／書込みが可能である。ＤＭＡ割込みをマスクするか否かを指定する１ビットと、ＤＭＡイネーブルを自動的にクリアするか否かを指定する１ビットと、リロードＤＭＡ転送を可能にするか否かを指定する１ビットと、リロード中であるか否かを示す１ビットと、ＤＭＡ転送中であるか否かを示す１ビットと、ＤＭＡリクエストを受付けるか否かを指定する１ビットと、ＤＭＡ転送のロックを可能にするか否かを指定する１ビットとを含む。
【００３６】
次転送用のＤＭＡ要因レジスタ１８は、ＤＭＡチャネル毎にＤＭＡ転送の要因を設定するためのレジスタであり、ＤＭＡ転送要求を出力するデバイスの種類や、ＤＭＡ転送要求信号がレベルトリガであるか、エッジトリガであるか等の情報が設定される。このレジスタは、読出し／書込みが可能である。
【００３７】
チャネル指定レジスタ１９は、次転送用レジスタ１１〜１８の内容がどのチャネルに対応するＤＭＡ転送部に転送されるかを特定する情報を格納する。したがって、レジスタ１１〜１８の内容は、チャネル指定レジスタ１９の内容により指定されるチャネルに対応するＤＭＡ転送部へ転送される。このチャネル指定レジスタ１９によって、指定できるチャネルを複数個指定することが可能である。
【００３８】
現転送用の転送元アドレスレジスタ２１は、次転送用の転送元アドレスレジスタ１１に設定されている転送元アドレスまたはリロードソースアドレスレジスタ１２に設定されているリロードソースアドレスが設定される。なお、レジスタ２１〜２６は、ＣＰＵ２から読出しも書込みもできず、内部のＤＭＡ制御部２０の制御によってレジスタ１１〜１８の内容がレジスタ２１〜２６に書込まれ、レジスタ２１〜２６の内容がＤＭＡ転送制御部２８に読出される。
【００３９】
現転送用のＤＭＡセッティングレジスタ２２は、次転送用のＤＭＡセッティングレジスタ１３に設定されている値が設定される。
【００４０】
現転送用の転送先アドレスレジスタ２３は、次転送用の転送先アドレスレジスタ１４に設定されている転送先アドレスが設定される。このレジスタは、読出し専用である。
【００４１】
現転送用のＤＭＡ転送レジスタ２４は、次転送用のＤＭＡ転送レジスタ１５に設定されている値が設定される。このレジスタは、読出し専用である。
【００４２】
現転送用のＤＭＡ完了レジスタ２５は、次転送用のＤＭＡ完了レジスタ１６に設定されている値が設定される。このレジスタは、読出し専用である。
【００４３】
現転送用のＤＭＡ要因レジスタ２６は、次転送用のＤＭＡ要因レジスタ１８に設定されている値が設定される。このレジスタは、読出し専用である。
【００４４】
ＤＭＡ転送リクエスト検出部２７は、外部からのＤＭＡ転送要求信号ＩＣ＿ＤＭＲＱ＿Ｐ［３１：０］を受け、現転送用のＤＭＡ要因レジスタ２６に設定されている値に応じてＤＭＡ転送制御部２８にＤＭＡ転送要求を出力する。
【００４５】
ブートＤＭＡ転送要求検出部３０は、ブートコントローラ３からのＤＭＡ転送要求信号ＢＴ＿ＤＭＡＲＥＱ＿Ｐを受け、ブートリクエストを検出する。このブートリクエストに対してチャネル＃１のみが動作する構成となっており、次転送用のレジスタ群１１〜１８にブートリクエストに対応したデータが設定され、チャネル指定レジスタ１９にはチャネル＃１を指定する情報が設定される。
【００４６】
ＤＭＡ転送制御部２８は、現転送用のレジスタ群２１〜２６、ＤＭＡ転送リクエスト検出部２７によって検出されたＤＭＡ転送要求などに応じてＤＭＡ転送を制御する。なお、図３の左側に記載されている信号群は、ＡＨＢ（Advanced High-performance Bus）のスレーブ側Ｉ／Ｆ（Interface）の信号群を示しており、図３の右側に記載されている信号群は、ＡＨＢのマスタ側Ｉ／Ｆの信号群を示している。これらの信号群は、ＡＨＢの規格に準拠している。
【００４７】
図４は、本発明の実施の形態におけるＤＭＡＣのレジスタ群の２重構造を説明するためのブロック図である。ＳＲＡＭに格納されるＤＭＡＣの制御情報が順次次転送用のレジスタ群１０に転送されて、それぞれのレジスタ１１〜１８に書込まれる。この制御情報の転送は、次転送用のレジスタ群１０の情報が現転送用のレジスタ群２１〜２６に転送された後、ＤＭＡＣのチャネル間におけるバス権の切替わり前に行なわれればよい。ＳＲＡＭ５からデータを読出すのに時間を要するが、そのようなプロトコルを用いることによって、ＤＭＡ転送が高速に行なえるようになる。
【００４８】
ＤＭＡ転送部２０−１〜２０−ｎのそれぞれは、マルチプレクサ（ＭＵＸ）３２〜３６、４１〜４６を含む。リロードを行なう場合（ｒｅｆ＿ｆｌｇ＝“０”）に、マルチプレクサ３３は、次転送用のリロードソースアドレスレジスタ１２に設定されたリロードソースアドレスを選択し、マルチプレクサ３２、３４、３５および３６は、リロード固定値を選択する。また、リロードを行なわない場合（ｒｅｆ＿ｆｌｇ＝“１”）には、マルチプレクサ３２〜３６は、次転送用のＤＭＡセッティングレジスタ１３、次転送用の転送元アドレスレジスタ１１、次転送用の転送先アドレスレジスタ１４、次転送用のＤＭＡ転送レジスタ１５およびＤＭＡ完了レジスタ１６の値を選択して出力する。
【００４９】
マルチプレクサ４１〜４６は、現ＤＭＡ転送が継続している場合には（ｅｏｐ＝“０”）、現転送用のＤＭＡ要因レジスタ２６、現転送用のＤＭＡセッティングレジスタ２２、現転送用の転送元アドレスレジスタ２１、現転送用の転送先アドレスレジスタ２３、現転送用のＤＭＡ転送レジスタ２４および現転送用のＤＭＡ完了レジスタ２５の値を選択する。すなわち、現転送用のレジスタ群２１〜２６は、値をそのまま保持する。また、マルチプレクサ４２〜４６は、現ＤＭＡ転送が完了した場合（ｅｏｐ＝“１”）には、マルチプレクサ３２〜３６から出力される値を選択する。このとき、マルチプレクサ４１は、次転送用のＤＭＡ要因レジスタ１８から出力される値を選択する。
【００５０】
なお、ｅｏｐ信号は、対応のＤＭＡ転送制御部２８において生成され、対応のチャネルによるＤＭＡ転送が完了したことを示す。
【００５１】
レジスタ１１〜１９への値の設定は、ＣＰＵ２が内蔵メモリ５へアクセスすることにより、内蔵メモリ５からのデータ転送によりＡＨＢスレーブＩＦを介して設定される。また、ブートリクエストが生じたときには、予め決めておいた固定値がレジスタ１１〜１９に設定される。
【００５２】
図５は、各ＤＭＡチャネルのサイクルスチールを制御するための回路構成を示す図である。以下、ＤＭＡ転送部２０−１〜２０−ｎ内のＤＭＡ転送制御部２８をそれぞれＤＭＡ転送制御部＃１〜＃ｎと呼ぶ。
【００５３】
ここで、サイクルスチールとは、複数のＤＭＡチャネルの少なくとも２つからＤＭＡ転送要求があった場合に、その少なくとも２つのＤＭＡチャネル各々は自身に設定された固有の転送回数のトランザクションを行なう毎に、ＣＰＵなどの他のバスマスタを介することなく、他のＤＭＡチャネルにバス使用権を明け渡すことをいう。
【００５４】
固有の転送回数は、１回に限られるものではなく、複数回のトランザクション毎にバス使用権を変更するようにしてもよい。また、チャネル間で固有の転送回数を同じにする必要はなく、チャネル毎に異なる転送回数を設定することも可能である。たとえば、ＤＭＡＣ１は２回のトランザクションで他のＤＭＡＣにバス使用権を明け渡し、ＤＭＡＣ２は１回のトランザクションで他のＤＭＣＡにバス使用権を明け渡すようにしてもよい。
【００５５】
ＤＭＡ転送制御部＃１〜＃ｎの各々（以下、代表して＃ｋとする。）は、＃ｋＨＷＤＡＴＡｏｕｔ信号、＃ｋＨＡＤＤＲｏｕｔ信号、＃ｋＨＷＲＩＴＥｏｕｔ信号、＃ｋＨＳＩＺＥｏｕｔ信号、＃ｋＨＴＲＡＮＳｏｕｔ信号、＃ｋＨＢＵＲＳＴｏｕｔ信号、＃ｋＨＰＲＯＴｏｕｔ信号、＃ｋＨＬＯＣＫ信号、＃ｋＨＢＵＳＲＥＱ信号を出力信号として出力し、＃ｋＨＲＤＡＴＡｉｎ信号、＃ｋＨＲＥＳＰｉｎ信号、＃ｋＨＲＥＡＤＹｉｎ信号、＃ｋＨＧＲＡＮＴ信号を入力信号として入力する。
【００５６】
サイクルスチール制御回路６０は、アービタ７からのＨＧＲＡＮＴ信号がアクティブになると、＃ｋＨＢＵＳＲＥＱ信号がアクティブとなっているＤＭＡチャネルの＃ｋＨＧＲＡＮＴ信号のうち、いずれか１つをアクティブにしてＤＭＡ転送を許可する。バーストモードでＤＭＡ転送を行なう場合には、１つのチャネルがバス権を独占しないように、所定回のＤＭＡ転送が行なわれると、他のＤＭＡチャネルにバス権を与えるように制御する。このチャネルのバス権獲得順序は、たとえば、ラウンドロビン方式が用いられる。
【００５７】
ラウンドロビンとは、ＤＭＡ転送要求を出している複数のＤＭＡチャネルに対して巡回的に一定のＤＭＡサイクルを与えていく方式であり、たとえば一定のＤＭＡサイクルを終了したＤＭＡチャネルが待ち行列の末尾につながれる。そして、待ち行列の先頭で待機しているＤＭＡチャネルに対してＤＭＡ転送が許可される。これを繰り返すことによって、ＤＭＡ転送要求を出している複数のＤＭＡチャネルに対して公平にＤＭＡサイクルが与えられる。
【００５８】
また、サイクルスチール制御回路６０は、過去の各チャネルのＤＭＡ転送要求の回数をカウントし、ＤＭＡ転送要求の回数が多いチャネルに対して優先的にバス権を与えるようにしてもよい。
【００５９】
ＯＲ回路６３は、＃１ＨＢＵＳＲＥＱ〜＃ｎＨＢＵＳＲＥＱ信号の論理和を演算し、ＨＢＵＳＲＥＱ信号としてアービタ７へ出力する。したがって、チャネル＃１〜＃ｎの中の１つでもＤＭＡ転送要求を出力すれば、アービタ７へＤＭＡ転送要求が出力されることになる。
【００６０】
マルチプレクサ（ＭＵＸ−Ａ）６１は、＃１ＨＷＤＡＴＡｏｕｔ〜＃ｎＨＷＤＡＴＡｏｕｔ信号のいずれか１つを選択してＨＷＤＡＴＡｏｕｔ信号として出力する。各ＤＭＡ転送制御部＃１〜＃ｎの他の出力信号である＃ｋＨＡＤＤＲｏｕｔ信号、＃ｋＨＷＲＩＴＥｏｕｔ信号、＃ｋＨＳＩＺＥｏｕｔ信号、＃ｋＨＴＲＡＮＳｏｕｔ信号、＃ｋＨＢＵＲＳＴｏｕｔ信号、＃ｋＨＰＲＯＴｏｕｔ信号、＃ｋＨＬＯＣＫ信号に対しても、それぞれ対応するマルチプレクサ（ＭＵＸ−Ａ）が設けられ、それぞれＨＡＤＤＲｏｕｔ信号、ＨＷＲＩＴＥｏｕｔ信号、ＨＳＩＺＥｏｕｔ信号、ＨＴＲＡＮＳｏｕｔ信号、ＨＢＵＲＳＴｏｕｔ信号、ＨＰＲＯＴｏｕｔ信号、ＨＬＯＣＫ信号として出力する。
【００６１】
マルチプレクサ（ＭＵＸ−Ｂ）６２は、ＤＭＡ転送制御部＃１〜＃ｎのいずれか１つを選択し、ＨＲＤＡＴＡｉｎ信号を＃１ＨＲＤＡＴＡｉｎ〜＃ｎＨＲＤＡＴＡｉｎ信号のいずれか１つとして選択したＤＭＡ転送制御部へ出力する。各ＤＭＡ転送制御部＃１〜＃ｎの他の入力信号であるＨＲＥＳＰｉｎ信号、ＨＲＥＡＤＹｉｎ信号に対してもそれぞれ対応してマルチプレクサ（ＭＵＸ−Ｂ）が設けられ、それぞれ＃１ＨＲＥＳＰｉｎ〜＃ｎＨＲＥＳＰｉｎ信号の１つ、および＃１ＨＲＥＡＤＹｉｎ〜＃ｎＨＲＥＤＹｉｎ信号の１つとして出力する。
【００６２】
マルチプレクサ６１および６２（図示しないものも含む）の各々の選択制御は、サイクルスチール制御回路６０の出力である＃１ＨＧＲＡＮＴ〜＃ｎＨＧＲＡＮＴ信号からなるｎビットの信号により行なわれる。その１つである＃ｋＨＧＲＡＮＴがアサートされたときに、全てのマルチプレクサ６１および６２はＤＭＡ転送制御部＃ｋに対応した信号を選択する。
【００６３】
図６は、本発明の実施の形態におけるＤＭＡＣのバス権獲得を説明するためのタイミングチャートである。なお、図６に示す各信号は、ＡＨＢマスタＩ／Ｆにおける信号を示している。また、バーストサイクル数が１となっている。また、ＤＭＡＣのバス占有率が２／３程度となっており、ＤＭＡＣ１およびＤＭＡ２に対応したそれぞれ１回のＤＭＡ転送が終了すると、一旦他のマスタにバス権が開放されるものとする。なお、ＤＭＡＣのバス占有率は、メモリのアクセス速度により、すなわちウェイトサイクルが入るか否かによって変動する。
【００６４】
サイクルＴ１において、ＨＧＲＡＮＴ信号がアクティブ（ハイレベル）となり、ＤＭＡＣ１にバス権が与えられる。サイクルＴ２において、ＨＡＤＤＲｏｕｔ［３１：０］に、ＤＭＡＣ１に対応した読出しアドレスが出力されると共に、ＤＭＡＣ２にバス権が与えられる。
【００６５】
サイクルＴ３において、ＤＭＡＣ１にバス権が与えられる。このサイクルで、ＨＡＤＤＲｏｕｔ［３１：０］に、ＤＭＡＣ２に対応した書込みアドレスが出力される。また、ＨＲＤＡＴＡｉｎ［３１：０］を介してＤＭＡＣ１に対応したデータが読出される。なお、このサイクルにおけるＤＭＡＣ２のデータ書込みは、１つ前のＤＭＡＣ２の読出しサイクル（図示せず）で読出されたデータを書込むものである。
【００６６】
サイクルＴ４において、ＨＡＤＤＲｏｕｔ［３１：０］に、ＤＭＡＣ１に対応した書込みアドレスが出力される。このサイクルで、ＨＷＤＡＴＡｏｕｔ［３１：０］を介してＤＭＡＣ２に対応したデータが書込まれる。このサイクルで、ＨＢＵＳＲＥＱ信号が非アクティブ（ロウレベル）となり、一旦他のマスタにバス権が開放される。この他のマスタは、図２のＣＰＵ２に相当する。
【００６７】
サイクルＴ５において、ＨＡＤＤＲｏｕｔ［３１：０］に、ＤＭＡＣ２に対応した読出しアドレスが出力される。また、ＨＲＤＡＴＡｏｕｔ［３１：０］を介してＤＭＡＣ１に対応したデータが書込まれる。
【００６８】
サイクルＴ６において、ＨＷＤＡＴＡｉｎ［３１：０］を介してＤＭＡＣ２に対応したデータが読出される。なお、サイクル１からこのサイクルまで、ＨＲＥＡＤＹｉｎ信号がハイレベルとなる。このＨＲＥＡＤＹｉｎ信号によって、ＤＭＡＣはウェイトサイクルが挿入されていないことを認識する。
【００６９】
サイクルＴ７において、ＨＢＵＳＲＥＱ信号にハイレベルが出力され、再度バス権の獲得要求を出す。サイクルＴ８において、ＨＧＲＡＮＴ信号がハイレベルとなってバス権を獲得すると、ＤＭＡＣ１がＤＭＡ転送を開始する。なお、以降のサイクルはＨＲＥＡＤＹｉｎ信号がロウレベルになって、ウェイトサイクルが挿入される以外は、サイクルＴ１〜Ｔ６と同様である。
【００７０】
なお、サイクルＴ９において、ＨＢＵＳＲＥＱ信号にロウレベルが出力されてバス権を一旦放棄しているが、これはバス占有率を一定に保つためである。
【００７１】
以上説明したＤＭＡコントローラにおいては、ＤＭＡチャネルのそれぞれに設定される固有の転送回数を固定としたが、可変とするようにしてもよい。たとえば、固有の転送回数を可変に設定できるレジスタを図５のサイクルスチール制御回路６０内に設け、そのレジスタに設定された回数のトランザクションを行なう毎に他のＤＭＡチャネルにバス使用権を明け渡すようにしてもよい。図２に示すＣＰＵ２が、ＡＨＢスレーブＩＦを用いてこのレジスタに値を設定する。
【００７２】
また、サイクルスチール制御回路６０内に、過去の各チャネルのＤＭＡ転送要求の回数をカウントし、要求回数の多いチャネルにはより多くの固有の転送回数をレジスタに設定できるような制御回路を設けるようにしてもよい。たとえば、最初は各ＤＭＡチャネルに対して均等に「１回」を設定し、その後、あるＤＭＡチャネルが他のＤＭＡチャネルに比べてＮ回多くＤＭＡアクセス要求があったときに、そのＤＭＡチャネルへの設定を「２回」に変更し、２Ｎ回多くＤＭＡアクセス要求があったときに、そのＤＭＡチャネルへの設定を「３回」に変更する。
【００７３】
また、ＤＭＡチャネルが３つ以上の場合に、バス使用順序を可変とするようにしてもよい。たとえば、３つのＤＭＡチャネルからアクセス要求があった場合に、ＤＭＡ１→ＤＭＡ２→ＤＭＡ３→ＤＭＡ１→ＤＭＡ２→ＤＭＡ３→…とあったものを、ＤＭＡ１→ＤＭＡ３→ＤＭＡ２→ＤＭＡ１→ＤＭＡ３→ＤＭＡ２→…と変更する。また、バス使用順序が均等に与えられるだけでなく、たとえば、ＤＭＡ１のＤＭＡ転送を多くしたい場合には、ＤＭＡ１→ＤＭＡ２→ＤＭＡ１→ＤＭＡ３→ＤＭＡ１→ＤＭＡ２→ＤＭＡ１→ＤＭＡ３…と変えることも可能である。
【００７４】
これを実現する方法として、図５のサイクルスチール制御回路６０に使用順序を設定するレジスタを設け、そのレジスタに設定された順序に従ってＤＭＡ転送要求を出した３つ以上のＤＭＡチャネルのバス使用順序を決定する。
【００７５】
また、過去の各ＤＭＡチャネルのＤＭＡ転送要求をカウントし、要求回数の多いチャネルにはより多く順番がまわってくるような制御回路をサイクルスチール制御回路６０内に設けるようにしてもよい。たとえば、最初は各ＤＭＡチャネルに対してバス使用権が均等に与えられ、その後、あるＤＭＡチャネルが他のＤＭＡチャネルに比べてＮ回多くＤＭＡアクセス要求があったときに、そのＤＭＡチャネルへのバス使用権を増やし、２Ｎ回多くＤＭＡアクセス要求があったときに、そのＤＭＡチャネルへのバス使用権をさらに増やす。
【００７６】
以上説明したように、本実施の形態におけるＤＭＡＣによれば、ＡＨＢマスタからのＨＧＲＡＮＴ信号がアクティブとなったときに、各ＤＭＡＣチャネルに対して順次切替えてバス権を与えるようにしたので、ＤＭＡＣと他のマスタとのサイクルスチールだけでなく、ＤＭＡＣチャネル間のサイクルスチールを実現することが可能となった。
【００７７】
また、サイクルスチール制御回路６０は、各ＤＭＡＣチャネルにバス権を与える順番を、ラウンドロビン方式、過去のＤＭＡ転送回数などに基づいて決定するようにしたので、ＤＭＡＣチャネル間において最適なサイクルスチールを実現することが可能となった。
【００７８】
また、ＳＲＡＭ５０にＤＭＡ制御情報を格納しておき、ＤＭＡＣのチャネル間におけるバス権の切替わり前に、次転送用のレジスタ群１０に順次転送するようにしたので、ＤＭＡ転送を高速に行なうことが可能となった。
【００７９】
今回開示された実施の形態は、すべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【００８０】
【図１】本発明の実施の形態におけるＤＭＡＣのバス権獲得状態の遷移を示す図である。
【図２】本発明の実施の形態におけるＤＭＡＣが用いられるシステムの一例を示す図である。
【図３】本発明の実施の形態におけるＤＭＡＣの概略構成を示すブロック図である。
【図４】本発明の実施の形態におけるＤＭＡＣのレジスタ群の２重構造を説明するためのブロック図である。
【図５】各ＤＭＡチャネルのサイクルスチールを制御するための回路構成を示す図である。
【図６】本発明の実施の形態におけるＤＭＡＣのバス権獲得を説明するためのタイミングチャートである。
【符号の説明】
【００８１】
１  ＤＭＡＣ、２  ＣＰＵ、３  ブートコントローラ、４  ＵＡＲＴ、５  内蔵メモリ、６  外部ＩＦ、７  アービタ、８  デコーダ、９ａ，９ｂ  マルチプレクサ、１０  次転送用のレジスタ群、１１  次転送用の転送元アドレスレジスタ、１２  次転送用のリロードソースアドレスレジスタ、１３  次転送用のＤＭＡセッティングレジスタ、１４  次転送用の転送先アドレスレジスタ、１５  次転送用のＤＭＡ転送レジスタ、１６  次転送用のＤＭＡ完了レジスタ、１７  ＤＭＡコントロールレジスタ、１８  次転送用のＤＭＡ要因レジスタ、１９  チャネル指定レジスタ、２０−１〜２０−ｎ  ＤＭＡ転送部、２１  現転送用の転送元アドレスレジスタ、２２  現転送用のＤＭＡセッティングレジスタ、２３  現転送用の転送先アドレスレジスタ、２４  現転送用のＤＭＡ転送レジスタ、２５  現転送用のＤＭＡ完了レジスタ、２６  現転送用のＤＭＡ要因レジスタ、２７  ＤＭＡ転送リクエスト検出部、２８  ＤＭＡ転送制御部、３０  ブートＤＭＡ転送要求検出部、３１〜３６，４１〜４６，６１，６２  マルチプレクサ、５０  ＳＲＡＭ、６０  サイクルスチール制御回路、６３  ＯＲ回路、７０  外部メモリ。
【図１】
2005165508.tif 000003
【図２】
2005165508.tif 000004
【図３】
2005165508.tif 000005
【図４】
2005165508.tif 000006
【図５】
2005165508.tif 000007
【図６】
2005165508.tif 000008