(57)【要約】【課題】Ｉ／Ｏの動作遅延による内部システムバスのロックを阻止する。【解決手段】ＬＳＩ回路１０が含んでいるＣＰＵ１１とＤＭＡコントローラ１２は、共用の外部バス２０を介して接続されているＳＤＲＡＭ３０または入出力装置４０をアクセス可能である。共用外部インタフェース１７は、メモリコントローラ１４とＩ／Ｏコントローラ１５との間の外部バスへのアクセスに対するアービトレーションを行う。内部システムバス１３のバスマスタ権を獲得したＤＭＡコントローラ，ＣＰＵは、メモリコントローラ，Ｉ／ＯコントローラがＳＤＲＡＭ，入出力装置をアクセス不可の場合は、バスマスタ権を要求しているＣＰＵ，ＤＭＡコントローラにバスマスタ権を譲渡する。そして、メモリコントローラ，Ｉ／ＯコントローラがＳＤＲＡＭ，入出力装置をアクセスア可になった場合に、優先的にバスマスタ権を獲得する。【選択図】　　　　図２
2004139296.tif 000002
【特許請求の範囲】
【請求項１】
共通のパスを介して外部装置を接続する処理装置における内部バスのバス・アービトレーション装置において、
前記内部バスの対象スレーブ側が前記外部装置をアクセス不可の場合は、前記内部バスのバスマスタはバスマスタ権を要求している別のバスマスタにバスマスタ権を譲渡し、次に前記対象スレーブ側が前記外部装置をアクセス可になった場合に、優先的に前記バスマスタ権を獲得するようにしたことを特徴とするバス・アービトレーション装置。
【請求項２】
共用の外部バスを介して接続されているＳＤＲＡＭまたは入出力装置をアクセス可能な処理装置の内部システムバスに対するバス・アービトレーション装置において、
前記処理装置は、前記ＳＤＲＡＭとのデータの受渡しを制御するメモリコントローラと、前記入出力装置へのアクセスを行いデータの受渡しを制御するＩ／Ｏコントローラと、前記メモリコントローラと前記Ｉ／Ｏコントローラとの間の前記外部バスへのアクセスに対するアービトレーションを行う共用外部インタフェースと、コアとしてのＣＰＵと、ＤＭＡ転送を制御するＤＭＡコントローラと、前記メモリコントローラ，Ｉ／Ｏコントローラ，ＣＰＵおよびＤＭＡコントローラが接続される内部システムバスとを含み、
前記内部システムバスのバスマスタ権を獲得したＤＭＡコントローラ，ＣＰＵは、メモリコントローラ，Ｉ／ＯコントローラがＳＤＲＡＭ，入出力装置をアクセス不可の場合は、前記バスマスタ権を要求しているＣＰＵ，ＤＭＡコントローラにバスマスタ権を譲渡し、次にメモリコントローラ，Ｉ／ＯコントローラがＳＤＲＡＭ，入出力装置をアクセスア可になった場合に、優先的に前記バスマスタ権を獲得するようにしたことを特徴とするバス・アービトレーション装置。
【請求項３】
共用の外部バスを介して接続されているＳＤＲＡＭまたは入出力装置をアクセス可能な処理装置の内部システムバスに対するバス・アービトレーション装置において、
前記処理装置は、前記ＳＤＲＡＭとのデータの受渡しを制御するメモリコントローラと、前記入出力装置へのアクセスを行いデータの受渡しを制御するＩ／Ｏコントローラと、前記メモリコントローラと前記Ｉ／Ｏコントローラとの間の前記外部バスへのアクセスに対するアービトレーションを行う共用外部インタフェースと、コアとしてのＣＰＵと、ＤＭＡ転送を制御するＤＭＡコントローラと、、前記メモリコントローラ，Ｉ／Ｏコントローラ，ＣＰＵおよびＤＭＡコントローラが接続される内部システムバスとを含み、
前記内部システムバスのバスマスタ権を獲得したＤＭＡコントローラ，ＣＰＵは、メモリコントローラ，Ｉ／ＯコントローラがＳＤＲＡＭ，入出力装置をアクセス不可の場合は、前記バスマスタ権を要求しているＣＰＵ，ＤＭＡコントローラにバスマスタ権を譲渡し、次にメモリコントローラ，Ｉ／ＯコントローラがＳＤＲＡＭ，入出力装置をアクセスア可になった場合に、優先的に前記バスマスタ権を獲得する動作モードと、
前記内部システムバスのバスマスタ権を獲得したＤＭＡコントローラ，ＣＰＵは、メモリコントローラ，Ｉ／ＯコントローラがＳＤＲＡＭ，入出力装置をアクセス不可の場合は、アクセス可になるまでリトライアクセスする動作モードとのいずれかを設定可能にしたことを特徴とするバス・アービトレーション装置。
【請求項４】
前記メモリコントローラ，Ｉ／Ｏコントローラが前記ＳＤＲＡＭ，入出力装置をアクセス不可の場合は、アクセス可になっていないかのリトライを所定回数だけ試み、その結果により、アクセス不可の場合は前記バスマスタ権を譲渡し、アクセスア可になった場合には前記ＤＭＡコントローラ，ＣＰＵは前記メモリコントローラ，Ｉ／Ｏコントローラにアクセスすることを特徴とする請求項２または請求項３に記載のバス・アービトレーション装置。
【請求項５】
前記処理装置は、前記ＣＰＵが前記Ｉ／Ｏコントローラによる制御の下に前記入出力装置をアクセスするときに使用するデータバッファとしての内部レジスタを含み、
前記内部レジスタから前記入出力装置へのデータ書込みが行われているときに、前記ＤＭＡコントローラが前記バスマスタ権を獲得した場合には、当該バスマスタ権を前記ＣＰＵに譲渡することを特徴とする請求項２ないし４のいずれかに記載のバス・アービトレーション装置。
【請求項６】
前記ＣＰＵ，ＤＭＡコントローラ，内部システムバス，メモリコントローラ，Ｉ／Ｏコントローラおよび共用外部インタフェースが一つのＬＳＩ回路に収容されたことを特徴とする請求項２ないし５のいずれかに記載のバス・アービトレーション装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、バス・アービトレーション、特に、共通のパスを介して外部装置を接続する処理装置における内部バスのバス・アービトレーションに関する。
【０００２】
【従来の技術】
従来、共用バスに結合された複数の装置において、共用バスに対するバス要求が同時に発生した場合には、優先順位の高い順にバス・アクセスを許可していくようにしている（例えば、特許文献１参照）。この技術は、マルチプロセッサ・システムにおいて、独立して動作している複数のプロセッサが内部システムバスを同一クロック・サイクルでアクセスしようと試みた場合に、バスの制御権を調停するというものである。これにより、共用バスとしての内部システムバスに対する複数のバスマスタ間のアービトレーションを実現している。
【０００３】
ところで、複数のバスマスタに共用される内部システムバスのスレーブが、共用外部インタフェースを介して、共用バスである外部バスに接続されている外部メモリや入出力装置等の外部装置をアクセスするように構成された処理装置が周知である。例えば、近年では、周辺回路内臓の１チップＣＰＵタイプのＬＳＩ回路（Ｌａｒｇｅ　Ｓｃａｌｅ　Ｉｎｔｅｇｒａｔｅｄ　Ｃｉｒｃｕｉｔ）は、端子数の節約のために一つの端子に複数の機能を持たせ、必要に応じて機能を切り替える共用ピンにより、複数の機能ブロックの外部Ｉ／Ｆを共用化することが多い。すなわち、外部メモリや入出力装置に対するインタフェース（以下、インタフェースを「Ｉ／Ｆ」と記す）の一部のアドレスバスやデータバスの端子を共用外部端子とし、適宜に端子機能を切り替えてメモリ系Ｉ／ＦとＩ／Ｏ系Ｉ／Ｆの両方の機能を実現させるのである。
【０００４】
【特許文献１】
特開平１０−２８３３１０（第２頁、図３）
【０００５】
【発明が解決しようとする課題】
このような処理装置では、ＬＳＩ回路内部におけるコアとしてのＣＰＵやＤＭＡコントローラ等の内部バスマスタ間の内部システムバスに対するアービトレーションが実現できたとしても、内部バスマスタから外部バスにアクセスする際に、共用外部Ｉ／Ｆに対するスレーブ（メモリコントローラ，Ｉ／Ｏコントローラ，内部レジスタ等）間のアービトレーションにより、スレーブが直ちに対応できない場合がある。その結果、内部システムバスの制御権（以下、「バスマスタ権」と記す）を取得した内部バスマスタによる外部共用端子を経由した外部のメモリや入出力装置（以下、「Ｉ／Ｏ」と記す）へのアクセスが滞り、システムのデータストリームにとって許されない待ち時間が発生する可能性がある。
【０００６】
例えば、ＣＰＵからＩ／Ｏにデータをライトした直後に、ＤＭＡコントローラが外部のＳＤＲＡＭにアクセスするという状況が考えられる。
【０００７】
このとき、ＣＰＵからＩ／Ｏコントローラにデータがライトされ、Ｉ／Ｏコントローラ内のデータバッファにＣＰＵからのデータが格納される。データバッファにライトデータが格納された後にＩ／Ｏコントローラは外部バスに接続されているＩ／Ｏに対してライト動作を行う。この際、Ｉ／Ｏコントローラは外部バスへのアクセス権を直ちに取得してアクセスを行えるとする。ＣＰＵからＩ／Ｏへの一連のライト動作の内、内部システムバス上においては、Ｉ／Ｏコントローラ内のデータバッファにデータが格納された時点で、ＣＰＵのアクセスは終了するので、ＣＰＵは内部システムバスのバスマスタ権を、バスマスタ権を要求しているＤＭＡコントローラに直ちに渡す。
【０００８】
内部システムバスのバスマスタ権を取得したＤＭＡコントローラは、外部のＳＤＲＡＭにアクセスするために、内部システムバスのスレーブとしてメモリコントローラにアクセスをする。しかし、ＤＭＡコントローラがメモリコントローラにアクセスした時点では、Ｉ／Ｏコントローラが内部のデータバッファのデータを外部のＩ／Ｏにライトしており、外部バスが使用されているので、メモリコントローラは直ちにはＤＭＡコントローラからのアクセスに応えることができない。Ｉ／Ｏコントローラのデータバッファ内のデータが全てＩ／Ｏに書き込まれるまで、メモリコントローラは外部バスにアクセスすることができないので、その間、メモリコントローラはＤＭＡコントローラに対してアクセスのリトライ要求を出し続ける等の状況に陥り、ＤＭＡコントローラとメモリコントローラとで内部システムバスをロックしてしまう。
【０００９】
さらに、内部システムバスが上述の状況でロックしている間に、ＣＰＵから内部レジスタへのアクセスが発生した場合は、Ｉ／Ｏへのライトが終了して内部バスのロックが解消され、ＤＭＡコントローラのアクセスが終了し、内部バスのバスマスタ権をＣＰＵが再度取得できるまで、ＣＰＵはアクセスを行えない。一定時間内にＣＰＵが内部レジスタに対してアクセスする必要があるのに、ＣＰＵが内部システムバスのバスマスタ権を許容時間内に獲得できない場合は致命的である。
【００１０】
このようにして、システムのデータストリームにとって許されない待ち時間が発生する可能性がある。この症状は、ＣＰＵや内部システムバスおよびＳＤＲＡＭが高速で、外部のＩ／Ｏが内部システムバスほど高速に動作ができない場合に顕著になる。
【００１１】
しかしながら、上述した従来技術では、内部バスのアービトレーションに共用外部Ｉ／Ｆのアービトレーションの結果は反映されていないため、内部バスにおいてバスマスタとスレーブの間でバスホールド、またはアクセスのリトライが連続する、といった状態が発生し、あたかも内部バスがロックしてしまうかのような状態が発生する場合があるという問題点があるのである。
【００１２】
そこで、本発明の主な目的は、共通のパスを介して外部装置を接続する処理装置においても、内部システムバスがロックしてシステムのデータストリームにとって許されないような待ち時間が発生しないように、内部システムバスの使用効率を向上させたバス・アービトレーション装置を提供することにある。
【００１３】
【課題を解決するための手段】
本発明のバス・アービトレーション装置は、共通のパスを介して外部装置を接続する処理装置における内部バスのバス・アービトレーション装置において、内部バスの対象スレーブ側が外部装置をアクセス不可の場合は、内部バスのバスマスタはバスマスタ権を要求している別のバスマスタにバスマスタ権を譲渡し、次に対象スレーブ側が外部装置をアクセス可になった場合に、優先的にバスマスタ権を獲得するようにしたことを特徴とするものである。
【００１４】
より詳しくは、本発明のバス・アービトレーション装置は、共用の外部バス（図１の２０）を介して接続されているＳＤＲＡＭ（図１の３０）または入出力装置（図１の４０）をアクセス可能な処理装置（図１の１０）の内部システムバス（図１の１３）に対するバス・アービトレーション装置において、処理装置は、ＳＤＲＡＭとのデータの受渡しを制御するメモリコントローラ（図１の１４）と、入出力装置へのアクセスを行いデータの受渡しを制御するＩ／Ｏコントローラ（図１の１５）と、メモリコントローラとＩ／Ｏコントローラとの間の外部バスへのアクセスに対するアービトレーションを行う共用外部インタフェース（図１の１７）と、コアとしてのＣＰＵ（図１の１１）と、ＤＭＡ転送を制御するＤＭＡコントローラ（図１の１２）と、メモリコントローラ，Ｉ／Ｏコントローラ，ＣＰＵおよびＤＭＡコントローラが接続される内部システムバス（図１の１３）とを含み、内部システムバスのバスマスタ権を獲得したＤＭＡコントローラ，ＣＰＵは、メモリコントローラ，Ｉ／ＯコントローラがＳＤＲＡＭ，入出力装置をアクセス不可の場合は、バスマスタ権を要求しているＣＰＵ，ＤＭＡコントローラにバスマスタ権を譲渡し、次にメモリコントローラ，Ｉ／ＯコントローラがＳＤＲＡＭ，入出力装置をアクセスア可になった場合に、優先的に前記バスマスタ権を獲得するようにしたことを特徴とする。
【００１５】
本発明では、ＣＰＵ，ＤＭＡコントローラ等の複数のバスマスタ候補からのバスマスタ権要求に対して、単純にバスマスタ側のみの都合によるバスマスタ権要求に対しての一連のアービトレーションを行うのではなく、バスマスタ権を獲得した内部システムバスの該バスマスタに対応するスレーブの状態を該バスマスタに確認させ、もし該スレーブが該バスマスタからのアクセスに直ちに応答できないのであれば該バスマスタにバスマスタ権を放棄させて、バスマスタ権を要求している他のバスマスタ候補にバスマスタ権を与え、その後に該スレーブが該バスマスタからのアクセスの準備ができれば、他のバスマスタのアクセスが終了した時点で優先的に該バスマスタがバスマスタ権を取得するようにしている。
【００１６】
すなわち、この内部システムバスのアービトレーションは、複数バスマスタ候補側のバスマスタ権の要求だけによるアービトレーションではなく、バスマスタに対してのスレーブ側の即応性をチェックして、バスマスタ権を与えた該バスマスタに対してスレーブ側として最良の条件でバスマスタ側を極力待たせることなくアクセスに応答できるように、内部システムバスのスレーブの状態も考慮してバスマスタ権のアービトレーション動作をする。
【００１７】
従って、内部バスマスタのあるバスマスタがバスマスタ権をもっている時に、対応するスレーブが直ちに応答できず、該バスマスタを待たせることによって内部システムバスをロックしてしまい、その間、他のバスマスタがバスマスタ権をとれずに待機している状態、すなわち内部システムバスのロック状態が発生し、システム全体がスレーブの状態によって止まってしまう状況を防ぎ、システムのデータストリームにとって許されない待ち時間が発生する可能性を極力防ぐことができるという効果が得られる。
【００１８】
【発明の実施の形態】
次に、本発明の上記および他の目的、特徴および利点を明確にすべく、以下添付した図面を参照しながら、本発明の実施の形態につき詳細に説明する。
【００１９】
【構成の説明】
図１は本発明のバス・アービトレーション装置の一実施例を示すブロック図である。このバス・アービトレーション装置は、周辺回路を内臓する１チップＣＰＵタイプのＬＳＩ回路によるシステム構成例であり、ＬＳＩ回路１０と、ＳＤＲＡＭ３０およびＩ／Ｏ４０とが共用の外部バス２０を介して接続されている。本バス・アービトレーション装置は、このような構成において、外部バス使用時における内部システムバスのアービトレーションの使用効率を高めることにより、内部システムバスがロックすることを極力回避する機能を有する。
【００２０】
ＬＳＩ回路１０は、ＣＰＵ１１の他に、ＤＭＡコントローラ１２，メモリコントローラ１４，Ｉ／Ｏコントローラ１５，内部レジスタ１６等の機能ブロックと、これらの機能ブロックを接続する内部システムバス１３と、ＬＳＩ回路１０の外部に位置するＳＤＲＡＭ３０およびＩ／Ｏ４０と共用端子で接続するための共用外部ＩＦ１７とを内蔵している。
【００２１】
ＣＰＵ１１はコアとしての中央処理装置であり、内部レジスタ１６はＬＳＩ回路１０内部のリード・ライト可能なレジスタである。また、ＤＭＡコントローラ１２はＤＭＡ転送を制御し、メモリコントローラ１４は汎用メモリデバイスであるＳＤＲＡＭ３０とのデータの受渡しを制御し、Ｉ／Ｏコントローラ１５はＩ／Ｏ４０などへのアクセスを行いデータの受渡しを制御する。
【００２２】
この構成例では、ＣＰＵ１１とＤＭＡコントローラ１２が内部システムバス１３のバスマスタ候補であり、メモリコントローラ１４とＩ／Ｏコントローラ１５と内部レジスタ１６とは、内部システムバス１３のバスマスタに対応する内部システムバス１３のスレーブになる。本ＬＳＩ回路１０とＳＤＲＡＭ３０とＩ／Ｏ４０とは、共用外部Ｉ／Ｆ１７によって接続されている。メモリコントローラ１４とＩ／Ｏコントローラ１５のいずれが外部バス２０にアクセスできるかは、共用外部Ｉ／Ｆ１７にてアービトレーションされた結果による。
【００２３】
Ｉ／Ｏコントローラ１５には、内部システムバス１３に比べて動作スピードが遅いＩ／Ｏ４０とのデータの受渡しのためにデータバッファを内臓している。内部システムバス１３のバスマスタから、内部システムバス１３ほど高速で動作できないＩ／Ｏ４０にアクセスする際には、一旦、データをＩ／Ｏコントローラ１５内部のデータバッファに貯めてからＩ／Ｏ４０とデータの受け渡しを行うのである。
【００２４】
これに反して、内部システムバス１３からメモリコントローラ１４を経由してのＳＤＲＡＭ３０へのアクセスは、高速なＣＰＵ１１やＳＤＲＡＭ３０が高いパフォーマンスを発揮して、本システムがなるべく高速で動作できるように、データバッファを介在することなく、内部システムバス１３の動作スピードに合わせて行える構成となっている。
【００２５】
この構成例では、ＬＳＩ回路１０の端子数を節約するために、メモリコントローラ１４およびＩ／Ｏコントローラ１５と、外部とのＩ／Ｆの一部の端子（アドレスバスやデータバス）を兼用端子として、機能を適宜に切替えて使用する共用Ｉ／Ｆである共用外部Ｉ／Ｆ１７で外部バス２０と接続されている。ＳＤＲＡＭ３０およびＩ／Ｏ４０は外部バス２０に接続されて、ＬＳＩ回路１０とデータのやり取りをする。
【００２６】
ＣＰＵ１１またはＤＭＡコントローラ１２が内部システムバス１１３にアクセスする必要が生じた際は、バスマスタ権を内部システムバス１３に要求する。この要求が重なった場合には、内部システムバス１３のアービトレーションに基づいて、いずれか一方のバスマスタ候補にバスマスタ権が与えられる。
【００２７】
また、いずれのバスマスタ候補も、バスマスタ権を獲得した際に、アクセス対象のスレーブ側がアクセスに即座に応答できない場合には、スレーブの応答を待ちつづけることなく、内部システムバス１３へのアクセスサイクルを終了させて、バスマスタ権を放棄するように設定することができる。ここに、メモリコントローラ１４，Ｉ／Ｏコントローラ１５および内部レジスタ１６が内部システムバス１３におけるスレーブであり、バスマスタ候補であるＣＰＵ１１とＤＭＡコントローラ１２のアクセス対象になる。
【００２８】
メモリコントローラ１４はＳＤＲＡＭ３０に対して、Ｉ／Ｏコントローラ１５はＩ／Ｏ４０に対して、それぞれ共用外部Ｉ／Ｆ１７および外部バス２０を介して、データのリード・ライトを行う。共用外部Ｉ／Ｆ１７は、アービトレーションを行って、兼用端子（アドレスバス、データバス）の機能をメモリコントローラ１４用とＩ／Ｏコントローラ１５用とに切替える。内部システムバス１３のスレーブ（メモリコントローラ１４またはＩ／Ｏコントローラ１５）から外部バス２０に対してのアクセスは、共用外部Ｉ／Ｆ１７のアービトレーションにより外部バス２０へのアクセス権が決定され、アクセス権を取得したいずれか一方のスレーブが可能となる。
【００２９】
ＣＰＵ１１，ＤＭＡコントロー１２，ＳＤＲＡＭ３０およびＩ／Ｏ４０は、当業者にとってよく知られており、また、それ自体は本発明とは直接に関係しないので、その詳細な構成は省略する。
【００３０】
【動作の説明】
以下、本実施例の動作について説明する。
【００３１】
先ず、本実施例の特徴的な動作を概説する。内部システムバス１３のバスマスタ側からスレーブ側へのアクセス要求がトリガとなり、内部システムバス１３のスレーブであるメモリコントローラ１４またはＩ／Ｏコントローラ１５から外部バス２０へのアクセス要求が発生する。このアクセス要求が同時に発生した場合には、共用外部Ｉ／Ｆ１７のアービトレーションによって、外部バス２０へのアクセス権が共用外部Ｉ／Ｆ１７から内部システムバス１３のスレーブに与えられる。
【００３２】
内部システムバス１３のバスマスタから、外部バス２０へアクセスする必要のあるスレーブ（メモリコントローラ１４またはＩ／Ｏコントローラ１５）にアクセスする時点で、常にスレーブ側が外部バス２０に対してアクセス可能であるとは限らない。内部システムバス１３のバスマスタからのアクセスをスレーブ側（メモリコントローラ１４またはＩ／Ｏコントローラ１５）が受けられるかどうかの情報をスレーブ側はバスマスタ側に通知する。
【００３３】
バスマスタ側はスレーブ側がアクセスを受けられるどうかを認識して、スレーブ側がアクセス要求に応答できない場合は、バスマスタ権を保持したままで従来と同様にアクセスをやり直す（単純リトライ）か、あるいはアクセスを一時保留してスレーブ側がアクセス要求に応答できる状態になるまでバスマスタ権を譲渡する。バスマスタが、単純にアクセスをやり直すか、バスマスタ権を譲渡するかのどちらかを選択するかは、予めアプリケーションプログラム等によって設定しておく。
【００３４】
バスマスタ権を譲渡する動作の場合、アクセス対象であったスレーブがバスマスタからのアクセスに応答できるようになったら、直ちにそのスレーブはバスマスタ権を譲渡したバスマスタにアクセスＯＫであることを通知する。バスマスタはその時点で、他の内部システムバス１３におけるバスマスタへのアクセスの終了を待って、バスマスタ権を優先的に再取得できる。バスマスタ権を取り戻したら、アクセス対象のスレーブにアクセスを行う。
【００３５】
次に、図２〜図３に示すフローチャートを参照して、図１に示した実施例の動作を詳述する。図２はバスマスタ側からみた動作を示すフローチャートであり、図３は内部システムバス１３側からみた動作を示すフローチャートである。
【００３６】
当初、バスマスタ（ＣＰＵ１１またはＤＭＡコントローラ１２）がバスマスタ権を取得した場合に、スレーブ側がアクセス要求に応答できないときは、単純にアクセスをやり直すか、バスマスタ権を譲渡するかのどちらかを選択するかをアプリケーションプログラム等によってフラグに設定しておく。選択基準は、システム全体のパフォーマンスや制約に基づく。
【００３７】
待機状態にある（図２のステップＡ１）バスマスタからアクセス要求が発生し、内部システムバス１３のバスマスタのアービトレーションにより、そのバスマスタがバスマスタ権を獲得すると（ステップＡ２でＹＥＳ）、予め設定されている単純リトライアクセスか否かによって、それぞれステップＡ１２かステップＡ４のいずれかに分岐する（ステップＡ３）。
【００３８】
ステップＡ１２では、アクセス対象の内部システムバス１３のスレーブが外部バス２０にアクセスができるまでアクセスをリトライし続け、アクセス対象のスレーブの準備ができたら対象スレーブにアクセスする（ステップＡ９）。
【００３９】
ステップＡ４では、アクセス対象の内部システムバス１３のスレーブ側がアクセスＯＫであればバスマスタは該スレーブにアクセスし（ステップＡ９）、またアクセスＯＫでないときは、バスマスタはバスマスタ権を他の内部システムバス１３のバスマスタに譲渡し、内部システムバス１３に対してバスマスタ権獲得の優先予約を入れる（ステップＡ５）。
【００４０】
そして、アクセス対象のスレーブがバスマスタからアクセス可能になるまでループし（ステップＡ６でＮＯ）、アクセス可能になれば（ステップＡ６でＹＥＳ）、他のバスマスタによるアクセスが完了しているを確認して（ステップＡ７でＹＥＳ）、ステップＡ５にて入れておいたバスマスタ権獲得の優先予約に基づき、該バスマスタは、バスマスタ権を取り戻す（ステップＡ８）。この時、他のバスマスタより優先的に該バスマスタにバスマスタ権が与えられ、バスマスタはスレーブにアクセスをする（ステップＡ９）。
【００４１】
スレーブへのアクセスが終了すると（ステップＡ１０でＹＥＳ）、バスマスタ権を開放する（ステップＡ１１）。
【００４２】
次に、図３において、初期のアイドル状態（図３のステップＢ１）からは無条件にステップＢ２に進み、バスマスタからのバスマスタ権要求または優先予約があるかをチェックする（ステップＢ２）。バスマスタ権要求または優先予約のいずれも無い場合は（ステップＢ２でＮＯ）、ＣＰＵ１１にバスマスタ権を与える（ステップＢ２）。
【００４３】
一方、バスマスタ権要求または優先予約のいずれかがあった場合は（ステップＢ２でＹＥＳ）、更に優先予約があるかどうかをチェックする（ステップＢ４）。その結果、優先予約があった場合は（ステップＢ４でＹＥＳ）、内部システムバス１３のバスマスタからの優先予約に対して、先着順でバスマスタにバスマスタ権を与え（ステップＢ５）、バスマスタ権を与えたバスマスタの優先予約をクリアする（ステップＢ６）。
【００４４】
また、優先予約が無かった場合は（ステップＢ４でＮＯ）、通常のバスマスタ権要求によるアービトレーションにより選ばれたバスマスタにバスマスタ権を与える（ステップＢ７）。
【００４５】
最後に、内部システムバス１３のバストランザクションが終了しているかをチェックし（ステップＢ８）、終了していたらステップＢ１へ回帰する。
【００４６】
以上の図２および図３のフローチャートで示した一連の動作において、図２のステップＡ３からステップＡ１２に分岐して対象のスレーブのアクセス準備ができるまでステップＡ９に移れない、すなわち対象スレーブ側の準備ができるまで図１の内部システムバス１３のバスマスタ権を保持しつづけるのが従来形式のアービトレーション動作である。その従来のアービトレーション動作に加えて、本バス・アービトレーションでは、ステップＡ３からステップＡ４に分岐して、対象スレーブの状態によっては、内部システムバス１３のバスマスタがバスマスタ権を他のバスマスタへ譲渡し、対象スレーブがアクセスＯＫになったら優先的にバスマスタ権を取戻すアービトレーション動作を付加している。
【００４７】
【他の実施例】
次に、本発明の他の実施例について図４のフローチャートにより説明する。この実施例は、構成は図１に示したとおりであるが、図１の内部システムバス１３のスレーブ側がバスマスタ側からのアクセスに即座にアクセスに応答できない場合のアービトレーションのモード切替について、さらに工夫している。
【００４８】
図２のフローチャートに示す一連のアービトレーションにおいては、バスマスタ側からのアクセスにスレーブ側が即座に応答できないとき、単純リトライアクセスを繰り返すか、内部システムバスの該バスマスタにバスマスタ権を一時的に譲渡する一連の動作をさせるかアービトレーションのモードは固定的であった。図４の実施例では、このようなモードの設定はせず、バスマス権を獲得してもスレーブ側の準備ができていなかった場合に、所定回数のリトライを実行した上でバスマスタ権を譲渡するようにしている。リトライ回数の限界値は、アプリケーションプログラム等によって設定しておく。
【００４９】
このような構成としたため、図２の実施例では単純リトライアクセスの場合に、対象スレーブ側がアクセスＯＫでないときはアクセスＯＫになるまでリトライを繰返しているが、図４の実施例では、リトライ回数が限界値に達すると他のバスマスタにバスマスタ権を譲渡することになる。一方、図２の実施例では非単純リトライアクセスの場合に、対象スレーブ側がアクセスＯＫでないときは即刻、他のバスマスタにバスマスタ権を譲渡しているが、図４の実施例では、限界値に達するまではリトライを繰り返し、その上で他のバスマスタにバスマスタ権を譲渡することになる。
【００５０】
当初は待機状態であり（ステップＣ１）、図１におけるＣＰＵ１１またはＤＭＡコントローラ１２のバスマスタからアクセス要求が発生した場合に、内部システムバス１３のバスマスタのアービトレーションにより、該バスマスタがバスマスタ権を獲得すると（ステップＣ２でＹＥＳ）、該バスマスタからのアクセスを対象のスレーブ側が受けられるかどうかをチェックする（ステップＣ３）。その結果、スレーブ側がアクセスを受けられる場合は（ステップＣ３でＹＥＳ）、該バスマスタからスレーブにアクセスを行う（ステップＣ９）。
【００５１】
しかし、スレーブ側がアクセスを受けられない場合は（ステップＣ３でＮＯ）、リトライアクセスを行うためにステップＣ４に遷移する。ステップＣ４ではリトライアクセスの回数をカウントしている。リトライアクセスの回数がリトライ限界値に達していなければ（ステップＣ４でＮＯ）、該バスマスタからのアクセスを対象のスレーブ側が受けられるかどうかをチェックする（ステップＣ３）、リトライアクセスを行う。このリトライ回数の限界値はシステム全体の特性、制約などに基づいて適切な値を任意に設定できる。
【００５２】
リトライアクセスの回数がリトライ限界値に達すると（ステップＣ４でＹＥＳ）、バスマスタはバスマスタ権を他の内部システムバス１３のバスマスタに譲渡し、内部システムバス１３に対してバスマスタ権獲得の優先予約を入れる（ステップＣ５）。
【００５３】
そして、アクセス対象のスレーブがバスマスタからアクセス可能になるまでループし（ステップＣ６でＮＯ）、アクセス可能になれば（ステップＣ６でＹＥＳ）、他のバスマスタによるアクセスが完了しているを確認して（ステップＣ７でＹＥＳ）、ステップＣ５にて入れておいたバスマスタ権獲得の優先予約に基づき、該バスマスタは、バスマスタ権を取り戻す（ステップＣ８）。この時、他のバスマスタより優先的に該バスマスタにバスマスタ権が与えられ、バスマスタはスレーブにアクセスをする（ステップＣ９）。
【００５４】
スレーブへのアクセスが終了終了すると（ステップＣ１０でＹＥＳ）、バスマスタ権を開放する（ステップＣ１１）。
【００５５】
このように、図４のフローチャートに示すバス・アービトレーションにおいては、アクセス対象のスレーブ側の状況によって内部システムバス１３がリトライアクセスの繰返しによってロック状態に陥ることを防ぐと共に、アービトレーション動作を図２のように設定によって固定的にせず、リトライアクセスが行われた回数でアービトレーション動作を自動的に切替えるようにしている。
【００５６】
【発明の効果】
以上説明したように、本願発明によれば、内部システムバスに複数のバスマスタ候補を持ち、バスマスタのアクセス対象の複数のスレーブが共用外部Ｉ／ＦにてメモリやＩ／Ｏなどの外部デバイスに接続されているシステムにおいて、ある内部バスマスタがバスマスタ権をもっている時に、対応するスレーブが直ちに応答できず、該バスマスタを待たせることによって内部システムバスをロックしてしまい、その間、他のバスマスタがバスマスタ権をとれずに待機している状態、すなわち内部システムバスのロック状態が発生し、システム全体がスレーブの状態によって止まってしまう状況を防ぎ、システムのデータストリームにとって許されない待ち時間が発生する可能性を極力防ぐことができるという効果が得られる。
【００５７】
なお、本発明が上記各実施例に限定されず、本発明の技術思想の範囲内において、各実施例は適宜変更され得ることは明らかである。
【図面の簡単な説明】
【図１】本発明のバス・アービトレーション装置の一実施例を示すブロック図
【図２】図１に示した実施例のバスマスタ側からみた場合の動作例を示すフローチャート
【図３】図１に示した実施例の内部システムバス側からみた場合の動作例を示すフローチャート
【図４】図１に示した実施例のバスマスタ側からみた場合の他の動作例を示すフローチャート
【符号の説明】
１０　　　ＬＳＩ回路
１１　　　ＣＰＵ
１２　　　ＤＭＡコントローラ
１３　　　内部システムバス
１４　　　メモリコントローラ
１５　　　Ｉ／Ｏコントローラ
１６　　　内部レジスタ
１７　　　共用外部Ｉ／Ｆ
２０　　　外部バス
３０　　　ＳＤＲＡＭ
４０　　　Ｉ／Ｏ
【図１】
2004139296.tif 000003
【図２】
2004139296.tif 000004
【図３】
2004139296.tif 000005
【図４】
2004139296.tif 000006