(57)【要約】【課題】  ＬＳＩの内部バスに接続されたデータ処理部がバスを使用する使用権優先度の変更を、バスアービタの設計変更を行わず、かつ汎用的なバスアービタを用いずに簡単な方法で実現する。【解決手段】  ＬＳＩの内部バスに接続されたバスマスタのリードデータを保持するＦＩＦＯの有効段数を変更することでバス使用権の要求頻度を変更する。【選択図】  図１
2007108857.tif 000002
【特許請求の範囲】
【請求項１】
バスを介して接続されたデータ処理部の間でデータ転送を行うデータ処理装置において
前記バスを介して転送されたデータを複数個保持するデータ保持手段と
前記複数のデータ保持手段のうち有効とするデータ保持手段の段数を設定する段数設定手段と
前記有効と設定されたデータ保持手段の空き状態に応じて前記バスへバス使用権を要求するバス使用権要求手段とを備えたバスマスタを有することを特徴とするデータ処理装置。
【請求項２】
前記データ処理装置において、前記バスマスタに対するバス使用権の優先度を高くする場合は前記データ保持手段のうち有効とするデータ保持手段の段数を大きく設定し、バス使用権の優先度を低くする場合は前記データ保持手段のうち有効とするデータ保持手段の段数を小さく設定することを特徴とする請求項１記載のデータ処理装置。
【請求項３】
前記データ処理装置において、前記バスマスタと同等の機能を持つバスマスタを複数有することを特徴とする請求項２記載のデータ処理装置。
【請求項４】
前記データ処理装置において、前記複数のバスマスタに対してバス使用権の優先度を高くするバスマスタには前記データ保持手段のうち有効とするデータ保持手段の段数を大きく設定し、バス使用権の優先度を低くするバスマスタには前記データ保持手段のうち有効とするデータ保持手段の段数を小さく設定することを特徴とする請求項３記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のデータ転送要求を効率よく処理するデータ処理装置に関するもので、特に複数のマスタデバイスがバスを介してＤＭＡ転送を行うデータ処理装置に関する。
【背景技術】
【０００２】
近年、電子機器が取り扱うデータの大きさは、飛躍的に増大の一途をたどっている。静止画像や動画像を扱う機器だけでなく、プリンタや複写機においてもより高精細、高画質が求められると同時に高速化も望まれている。従って、電子機器内部のデータ処理装置においてもデータ量の増大と高速化を実現するために、処理の効率化を計ることが必須である。
【０００３】
従来、バスに接続された複数のバスマスタがバスを共有して動作する場合、バスマスタはまずバスの使用権を要求し、バス権を獲得した後、バスを使用していた。バスの使用権はバスアービタが管理し、バスアービタはバスマスタからのバス使用権要求に対し、適切な優先順位でバス使用権を与えるよう構成されていた。このような従来例の１例を図３に示す。ここではＣＰＵをチップ内に搭載するＬＳＩであるＳＯＣを例としている。３０１はＳＯＣチップである。ＣＰＵ、ＲＯＭコントローラ、ＲＡＭコントローラ、バスマスタ１、バスマスタ２、バスマスタ３、バスアービタから構成されている。また、ＲＯＭコントローラにはＲＯＭデバイス３０４が、ＲＡＭコントローラにはＲＡＭデバイス３０６が接続されている。ＣＰＵ３０２はＲＯＭ３０４に格納されたプログラムに従って動作し、ＳＯＣ搭載機器の制御を行う。ＲＯＭコントローラ３０３は接続されたＲＯＭ３０４とのインタフェースを行う。ＲＡＭコントローラ３０５は接続されたＲＡＭ３０６とのインタフェースを行い、ＲＡＭアクセスタイミングを制御しながら、ＣＰＵ３０３や他のブロックからの要求に従い、ＲＡＭへのデータ入出力を行う。バスマスタ１ ３０８、バスマスタ２ ３０９、バスマスタ３ ３１０はそれぞれ様々なデータ処理を行うブロックであり、例えば画像処理ブロック、データ圧縮伸張ブロックなどが該当し、バスマスタとなってＤＭＡ転送を行い、ＲＡＭ３０７から所望のデータを読み出してデータ処理を行い、ＲＡＭ３０７へ結果を書き出す。ＣＰＵ３０２、ＲＯＭコントローラ３０３、ＲＡＭコントローラ３０５、バスマスタ１ ３０８、バスマスタ２ ３０９、バスマスタ３ ３１０は内部バスに接続され、バスマスタとして動作するＣＰＵ３０７、バスマスタ１ ３０８、バスマスタ２ ３０９、バスマスタ３ ３１０はバスアービタ３０７へ内部バス使用権要求を各々ＲＥＱＣ、ＲＥＱ１、ＲＥＱ２、ＲＥＱ３信号によって出力し、ＧＮＴＣ、ＧＮＴ１、ＧＮＴ２、ＧＮＴ３のいずれかの信号がバスアービタによって有効とされることにより、該当するバスマスタにバスの使用権が与えられる。バスの使用権を得たバスマスタは所望のデバイスに対してバスを介してアクセスを行うことができる。特定のバスマスタに優先的にバスの使用権を与える必要が無ければ、公平にバス権を許可する例としてラウンドロビンアルゴリズムでバスアービタを動作させる方法が広く知られている。一方、バスの使用効率を高めたり、あるバスマスタに対してバスを優先的に使わせることによって特定のデータ処理を速く実行するなどのアプリケーションの要求仕様に応じて、バスアービタのアービトレーションアルゴリズムを変更することによって対応することが可能である。
【０００４】
バスの使用権に優先順位をつける方法として、バスアービタを優先順位付きアービトレーションアルゴリズムで動作させる例が広く知られている。ただし、優先順位を固定的に決定してしまうと、異なる用途で異なるバスマスタに優先的にバスを使用させたい場合には対応できなかった。
【０００５】
バスの使用効率を高めるために、スプリットトランザクションをサポートするバスを持つシステムにおいてバススレーブ側の受信バッファの段数に応じてバスマスタ内のＤＭＡコマンドバッファの段数を最適化することでバスの有効利用を図るようにした例がある（例えば、特許文献１参照）。
【特許文献１】特開平１０−１１３８７号公報（第１０頁、図２）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従来例として挙げたシステム図３ではＣＰＵを含めて４つのバスマスタが接続されているが、異なるアプリケーション用のＬＳＩを考えると、バスマスタ数やバスマスタの種類が異なってくることに加え、どのデータ処理を優先的に行うかが変わるとどのバスマスタに優先的にバスを使用させるかというアービトレーションポリシーも変わってくる。一方、近年、ＬＳＩの回路規模の増大化に伴い、開発期間が長くなる傾向があるため既存の回路ブロックをＩＰとして扱い、再利用することが開発期間短縮のための一要素として不可欠になってきている。従来システムで用いられているバスアービタを回路ブロックのＩＰとして考えた時、上述したように異なるアプリケーション用のＬＳＩでは、アービトレーションポリシーが変わってくると単純な再利用は難しく、アービタを新規設計または設計変更することが必要になる。バスアービタはシステムの根幹となるブロックであり、新規設計または設計変更によって不具合が残るとシステムにとって致命的となるため、十分な検証が必要であるが、その分ＬＳＩの開発期間増大の大きな要因である検証負荷の増加が避けられない。
【０００７】
また、あるＬＳＩを使用する機器上でのデータ処理の種類や使用条件等によって、バスマスタの優先順位を動的に変更したい場合があるが、このような機能をバスアービタへ実装することはバスアービタの複雑度が増し、検証負荷がさらに大きくなる方向にある。
【０００８】
また、上述したような様々なアプリケーション用ＬＳＩや動的な優先順位変更に対応できるようにバスマスタ数や優先順位を幅広く設定できるようバスアービタを汎用的に設計しておき、この汎用的なバスアービタをＩＰとして再利用するという方法も考えられるが、バスアービタ自体が複雑化し、全ての設定条件での動作を完全に検証すること自体も難しくなる。
【０００９】
特許文献１では、リトライ機能を有するスプリット方式を採用したバスを介してＤＭＡ転送を行う情報処理装置に関して、リトライ回数を低減させ、ピーク時のスループットを向上させるため、マスタ側のＤＭＡコマンドバッファの段数を変更設定可能なように構成している。しかしながら、ＤＭＡコマンドバッファのどのバッファのコマンドが有効かを示す有効ビット、コマンドパケット識別用のシリアルＩＤを格納するコマンドＩＤレジスタ、アドレス・データを格納するＤＭＡバッファから構成され、機構が複雑である。
【００１０】
本発明は上記従来例に鑑みてなされたものであり、バスアービタを高機能化せずに、様々なアプリケーションの要求に応じてバス使用権の優先順位を容易に変更できる簡単な制御機構を提供することを目的とする。
【課題を解決するための手段】
【００１１】
このような課題を解決するために、本発明における請求項１記載のデータ処理装置は、バスを介して接続されたデータ処理部の間でデータ転送を行うものであって、前記バスを介して転送されたデータを複数個保持するデータ保持手段と前記複数のデータ保持手段のうち有効とするデータ保持手段の段数を設定する段数設定手段と前記有効と設定されたデータ保持手段の空き状態に応じて前記バスへバス使用権を要求するバス使用権要求手段とを備えたバスマスタを有することを特徴とする。
【００１２】
このような課題を解決するために、本発明における請求項２記載のデータ処理装置は、前記バスマスタに対するバス使用権の優先度を高くする場合は前記データ保持手段のうち有効とするデータ保持手段の段数を大きく設定し、バス使用権の優先度を低くする場合は前記データ保持手段のうち有効とするデータ保持手段の段数を小さく設定することを特徴とする。
【００１３】
このような課題を解決するために、本発明における請求項３記載のデータ処理装置は、前記バスマスタと同等の機能を持つバスマスタを複数有することを特徴とする。
【００１４】
このような課題を解決するために、本発明における請求項４記載のデータ処理装置は、前記複数のバスマスタに対してバス使用権の優先度を高くするバスマスタには前記データ保持手段のうち有効とするデータ保持手段の段数を大きく設定し、バス使用権の優先度を低くするバスマスタには前記データ保持手段のうち有効とするデータ保持手段の段数を小さく設定することを特徴とする。
【発明の効果】
【００１５】
本発明によれば、バスマスタのリードデータ用ＦＩＦＯの段数を変更可能なように構成したので、データ処理内容の違いや実行するアプリケーションの違いによってバスマスタ間のバス使用権優先順位を変更したい場合、バスの使用権の優先度を上げたいバスマスタのリードデータ用ＦＩＦＯの有効段数は大きな値に、バスの使用権の優先度を下げたいバスマスタのリード用ＦＩＦＯの有効段数は小さな値に設定することで、バス使用権獲得頻度を変更可能とし、バスアービトレーションの優先順位を変更する場合と同等の効果を持たせることができる。従って、バスアービタの設計変更を不要とし、チップ開発の検証負荷を大きく引き下げることによって開発期間の短縮が可能となる。また、ＤＭＡ転送開始前に上述したリードデータ用ＦＩＦＯの有効段数設定を行うことができるので、データ処理内容に合わせて各ＤＭＡ転送毎にＦＩＦＯの有効段数設定を行うことにより、きめ細かくバス使用権の優先度を変更することが可能である。さらに、リードデータ用ＦＩＦＯの有効段数設定を変更することによって、リードデータがバスマスタ内部のデータ処理に対して不足してくると、データ処理結果が生成されなくなるため、メモリへ書き出すライトデータが少なくなり、結果としてメモリへのライトアクセスのためのバス権要求頻度も下げることができるという効果がある。
【００１６】
また、特許文献１で示されているＤＭＡコマンドバッファ段数を変更する場合に比べ、より簡単な機構で同等の効果が得られるので、チップ開発期間のさらなる短縮、コストダウンに貢献することができるという効果がある。
【発明を実施するための最良の形態】
【００１７】
以下図面を参照して本発明の第一の実施例を説明する。本実施例を構成するＳＯＣチップのブロック図は従来例を示した図３と基本的には同じである。バスアービタは従来例にあるバスアービタをそのまま使用して構わない。
【００１８】
図３のバスマスタ１、バスマスタ２、バスマスタ３はリードデータデータを受信するＲＤ−ＦＩＦＯの有効段数の設定を変更できるように構成されている。
【００１９】
本実施例の典型的なバスマスタの内部ブロックを図１に示す。１０１はバスマスタ全体であり、１０２はＤＭＡコントローラブロックである。以後ＤＭＡＣと呼ぶ。ＲＤ−ＦＩＦＯ１０３はリードデータを受信するＦＩＦＯである。この図では６段で構成されている。ＦＩＦＯの１段の容量は内部バスと接続されているデータバス幅のデータを保持できるｂｉｔ幅の容量を持っており、例えば内部バスが１２８ｂｉｔの時、ＲＤ−ＦＩＦＯの１段は１２８ｂｉｔのフリップフロップで構成することができる。ＦＩＦＯ段数設定部１０４はＲＤ−ＦＩＦＯ１０３の有効な段数を設定するブロックである。この図に示すＲＤ−ＦＩＦＯにおいて有効な段数が“６”と設定されると実装されている全ての段数を使って動作し、リードデータを６段分受信した時点でＦＩＦＯは“ＦＵＬＬ”となる。一方有効な段数が“４”と設定されると、リードデータを４段分受信した時点でＦＩＦＯは“ＦＵＬＬ”状態となり、それ以上データは受信できなくなる。図１中のＲＤ−ＦＩＦＯ１０３の斜線がかかっていない部分が有効な段、斜線部分は無効な段を示している。この図では有効な段数が“４”と設定された状態を示している。ＷＲ−ＦＩＦＯ １０６はバスマスタ１０１がＲＡＭ３０６へデータを出力する時のライトデータＦＩＦＯである。ライトデータはＦＩＦＯの段数を設定する機構は備えていない。この図では６段構成のＦＩＦＯであるが、ＷＲ−ＦＩＦＯ１０６の段数は特に何段であっても差し支えない。制御部１０４はバスマスタ１０１の動作を制御するブロックである。ＣＰＵ３０２から設定されたＲＤ−ＦＩＦＯ１０３の有効段数をＦＩＦＯ段数設定部１０５に設定する。ＣＰＵ３０２からデータ処理動作を指示されると、内部バス使用権を獲得するためにバスアービタ１０８にバス権要求信号ＢＲＥＱをアサートし、内部バス使用許可信号ＢＧＮＴがアサートされるのを待つ。バスに対して転送コマンドとアドレス情報をＡＤ／ＣＭＤ信号へ出力する。ＲＤ−ＦＩＦＯ１０３からのＲＤ−ＦＩＦＯ内部状態を示す信号からＦＩＦＯの空き情報を監視する。また、データライト時はＷＲ−ＦＩＦＯの内部状態を示す信号からＦＩＦＯの空き情報を監視する。１０７はデータ処理部であり、ＤＭＡＣ１０２からリードデータを受け取り、内部でデータ処理を行った結果をＤＭＣＡ１０２へ渡す。バスマスタは図３に示すようにＳＯＣの内部バスとバスアービタ１０８に接続されている。バスアービタ１０８はバスマスタ１０２からバス権獲得要求信号ＢＲＥＱを受け取り、他のバスマスタからのバス獲得要求との間でアービトレーションを行い、バス権を渡すバスマスタデバイスに接続されているバス権使用許可信号ＢＧＮＴをアサートすることでバスの使用を許可する。バスの使用を許可しない他のバスマスタに対してはＢＧＮＴ信号はネゲートした状態を維持する。
【００２０】
次に本実施例図１に示したバスマスタのリード処理動作の流れを図２のフローチャートを参照して説明する。
【００２１】
ＣＰＵ３０２からバスマスタ１に対してデータ処理のための各種設定がなされ、データ処理の開始が指示されると、本処理を開始する。
【００２２】
制御部１０４はＦＩＦＯ段数設定部１０５に対して、ＲＤ−ＦＩＦＯ有効段数の設定（Ｓ２０１）を行う。ここでは図１にあるように“４”段を有効段数として設定するものとする。次に、制御部１０４はＲＤ−ＦＩＦＯ１０３の状態を示す信号とリードアクセス許可済みのリー-ドアクセスに伴うリードデータ数とから、ＲＤ−ＦＩＦＯに有効段数すなわちリードデータを後何段受信できるかを判定する。ＲＤ−ＦＩＦＯがまだ受信できる状態にある場合、Ｓ２０３へ進み、制御部１０４はバスアービタ１０８に対してＢＲＥＱ信号をアサートすることによってバス使用権を要求する。次に、バス使用権が獲得できたかどうかをバスアービタ１０８からの信号ＢＧＮＴがアサートされたかどうかで判定する（Ｓ２０４）。バス使用権が獲得できるまで待ち、バス使用権が獲得できるとＳ２０５でＡＤ／ＣＭＤ信号線にアクセス先のアドレス、リード動作かライト動作かを示すコマンド信号を出力し、バス動作を開始する。アドレス、コマンド出力を終了すると全データ転送要求が許可されたかどうかをＳ２０６で判定し、まだ転送すべきデータがある場合はＳ２０２へ戻る。全データ転送が終了した場合は処理を終了する。Ｓ２０２でＲＤ−ＦＩＦＯ１０３に有効段数がないと判定されると、Ｓ２０７へ進み、ＢＲＥＱ信号をネゲートしてバス使用権要求を取り下げる。
【００２３】
本実施例のバスマスタはＳ２０２にあるようにＲＤ−ＦＩＦＯ１０３にデータを受信できる段数がある場合は、バス使用権を要求し、リードコマンドを出力してデータを要求し続けるので、ＲＤ−ＦＩＦＯの有効段数を大きな値に設定すると、バス権使用要求を出す頻度が高くなり、逆にＲＤ−ＦＩＦＯの有効段数を小さな値に設定すると、バス権使用要求を出す頻度が低くなる。本実施例に示した機構を図３に示すバスマスタ１、２、３の各バスマスタに実装することにより、バスアービタが従来と同じアービトレーションアルゴリズムで動作していてもＳＯＣ３０１全体で見ると、バス権使用要求を出す頻度が高いバスマスタほどバス使用権を多く獲得することができるようになるため、結果としてバスアービトレーションに優先度を付ける場合と同等の効果が得られることがわかる。
【００２４】
また、ＤＭＡ転送を起動する前に、ＲＤ−ＦＩＦＯ１０３の有効段数を設定できるので、各ＤＭＡ転送毎にバス使用権の優先度を変更することが可能となり、実行するアプリケーションの変化、データ処理内容の変化に対して非常に柔軟に対応することが可能となる。
【図面の簡単な説明】
【００２５】
【図１】本発明の実施例におけるバスマスタの内部構成を示すブロック図である。
【図２】本発明の実施例におけるバスマスタの処理動作を示すフローチャートである。
【図３】本発明の実施例及び従来例におけるＬＳＩの内部構成を示すブロック図である。
【符号の説明】
【００２６】
１０１  バスマスタ
１０２  ＤＭＡＣ
１０３  ＲＤ−ＦＩＦＯ
１０４  制御部
１０５  ＦＩＦＯ段数設定部
１０６  ＷＲ−ＦＩＦＯ
１０７  データ処理部
１０８  バスアービタ
【図１】
2007108857.tif 000003
【図２】
2007108857.tif 000004
【図３】
2007108857.tif 000005