説明

データ処理装置

【課題】 LSIの内部バスに接続されたデータ処理部がバスを使用する使用権優先度の変更を、バスアービタの設計変更を行わず、かつ汎用的なバスアービタを用いずに簡単な方法で実現する。
【解決手段】 LSIの内部バスに接続されたバスマスタのリードデータを保持するFIFOの有効段数を変更することでバス使用権の要求頻度を変更する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のデータ転送要求を効率よく処理するデータ処理装置に関するもので、特に複数のマスタデバイスがバスを介してDMA転送を行うデータ処理装置に関する。
【背景技術】
【0002】
近年、電子機器が取り扱うデータの大きさは、飛躍的に増大の一途をたどっている。静止画像や動画像を扱う機器だけでなく、プリンタや複写機においてもより高精細、高画質が求められると同時に高速化も望まれている。従って、電子機器内部のデータ処理装置においてもデータ量の増大と高速化を実現するために、処理の効率化を計ることが必須である。
【0003】
従来、バスに接続された複数のバスマスタがバスを共有して動作する場合、バスマスタはまずバスの使用権を要求し、バス権を獲得した後、バスを使用していた。バスの使用権はバスアービタが管理し、バスアービタはバスマスタからのバス使用権要求に対し、適切な優先順位でバス使用権を与えるよう構成されていた。このような従来例の1例を図3に示す。ここではCPUをチップ内に搭載するLSIであるSOCを例としている。301はSOCチップである。CPU、ROMコントローラ、RAMコントローラ、バスマスタ1、バスマスタ2、バスマスタ3、バスアービタから構成されている。また、ROMコントローラにはROMデバイス304が、RAMコントローラにはRAMデバイス306が接続されている。CPU302はROM304に格納されたプログラムに従って動作し、SOC搭載機器の制御を行う。ROMコントローラ303は接続されたROM304とのインタフェースを行う。RAMコントローラ305は接続されたRAM306とのインタフェースを行い、RAMアクセスタイミングを制御しながら、CPU303や他のブロックからの要求に従い、RAMへのデータ入出力を行う。バスマスタ1 308、バスマスタ2 309、バスマスタ3 310はそれぞれ様々なデータ処理を行うブロックであり、例えば画像処理ブロック、データ圧縮伸張ブロックなどが該当し、バスマスタとなってDMA転送を行い、RAM307から所望のデータを読み出してデータ処理を行い、RAM307へ結果を書き出す。CPU302、ROMコントローラ303、RAMコントローラ305、バスマスタ1 308、バスマスタ2 309、バスマスタ3 310は内部バスに接続され、バスマスタとして動作するCPU307、バスマスタ1 308、バスマスタ2 309、バスマスタ3 310はバスアービタ307へ内部バス使用権要求を各々REQC、REQ1、REQ2、REQ3信号によって出力し、GNTC、GNT1、GNT2、GNT3のいずれかの信号がバスアービタによって有効とされることにより、該当するバスマスタにバスの使用権が与えられる。バスの使用権を得たバスマスタは所望のデバイスに対してバスを介してアクセスを行うことができる。特定のバスマスタに優先的にバスの使用権を与える必要が無ければ、公平にバス権を許可する例としてラウンドロビンアルゴリズムでバスアービタを動作させる方法が広く知られている。一方、バスの使用効率を高めたり、あるバスマスタに対してバスを優先的に使わせることによって特定のデータ処理を速く実行するなどのアプリケーションの要求仕様に応じて、バスアービタのアービトレーションアルゴリズムを変更することによって対応することが可能である。
【0004】
バスの使用権に優先順位をつける方法として、バスアービタを優先順位付きアービトレーションアルゴリズムで動作させる例が広く知られている。ただし、優先順位を固定的に決定してしまうと、異なる用途で異なるバスマスタに優先的にバスを使用させたい場合には対応できなかった。
【0005】
バスの使用効率を高めるために、スプリットトランザクションをサポートするバスを持つシステムにおいてバススレーブ側の受信バッファの段数に応じてバスマスタ内のDMAコマンドバッファの段数を最適化することでバスの有効利用を図るようにした例がある(例えば、特許文献1参照)。
【特許文献1】特開平10−11387号公報(第10頁、図2)
【発明の開示】
【発明が解決しようとする課題】
【0006】
従来例として挙げたシステム図3ではCPUを含めて4つのバスマスタが接続されているが、異なるアプリケーション用のLSIを考えると、バスマスタ数やバスマスタの種類が異なってくることに加え、どのデータ処理を優先的に行うかが変わるとどのバスマスタに優先的にバスを使用させるかというアービトレーションポリシーも変わってくる。一方、近年、LSIの回路規模の増大化に伴い、開発期間が長くなる傾向があるため既存の回路ブロックをIPとして扱い、再利用することが開発期間短縮のための一要素として不可欠になってきている。従来システムで用いられているバスアービタを回路ブロックのIPとして考えた時、上述したように異なるアプリケーション用のLSIでは、アービトレーションポリシーが変わってくると単純な再利用は難しく、アービタを新規設計または設計変更することが必要になる。バスアービタはシステムの根幹となるブロックであり、新規設計または設計変更によって不具合が残るとシステムにとって致命的となるため、十分な検証が必要であるが、その分LSIの開発期間増大の大きな要因である検証負荷の増加が避けられない。
【0007】
また、あるLSIを使用する機器上でのデータ処理の種類や使用条件等によって、バスマスタの優先順位を動的に変更したい場合があるが、このような機能をバスアービタへ実装することはバスアービタの複雑度が増し、検証負荷がさらに大きくなる方向にある。
【0008】
また、上述したような様々なアプリケーション用LSIや動的な優先順位変更に対応できるようにバスマスタ数や優先順位を幅広く設定できるようバスアービタを汎用的に設計しておき、この汎用的なバスアービタをIPとして再利用するという方法も考えられるが、バスアービタ自体が複雑化し、全ての設定条件での動作を完全に検証すること自体も難しくなる。
【0009】
特許文献1では、リトライ機能を有するスプリット方式を採用したバスを介してDMA転送を行う情報処理装置に関して、リトライ回数を低減させ、ピーク時のスループットを向上させるため、マスタ側のDMAコマンドバッファの段数を変更設定可能なように構成している。しかしながら、DMAコマンドバッファのどのバッファのコマンドが有効かを示す有効ビット、コマンドパケット識別用のシリアルIDを格納するコマンドIDレジスタ、アドレス・データを格納するDMAバッファから構成され、機構が複雑である。
【0010】
本発明は上記従来例に鑑みてなされたものであり、バスアービタを高機能化せずに、様々なアプリケーションの要求に応じてバス使用権の優先順位を容易に変更できる簡単な制御機構を提供することを目的とする。
【課題を解決するための手段】
【0011】
このような課題を解決するために、本発明における請求項1記載のデータ処理装置は、バスを介して接続されたデータ処理部の間でデータ転送を行うものであって、前記バスを介して転送されたデータを複数個保持するデータ保持手段と前記複数のデータ保持手段のうち有効とするデータ保持手段の段数を設定する段数設定手段と前記有効と設定されたデータ保持手段の空き状態に応じて前記バスへバス使用権を要求するバス使用権要求手段とを備えたバスマスタを有することを特徴とする。
【0012】
このような課題を解決するために、本発明における請求項2記載のデータ処理装置は、前記バスマスタに対するバス使用権の優先度を高くする場合は前記データ保持手段のうち有効とするデータ保持手段の段数を大きく設定し、バス使用権の優先度を低くする場合は前記データ保持手段のうち有効とするデータ保持手段の段数を小さく設定することを特徴とする。
【0013】
このような課題を解決するために、本発明における請求項3記載のデータ処理装置は、前記バスマスタと同等の機能を持つバスマスタを複数有することを特徴とする。
【0014】
このような課題を解決するために、本発明における請求項4記載のデータ処理装置は、前記複数のバスマスタに対してバス使用権の優先度を高くするバスマスタには前記データ保持手段のうち有効とするデータ保持手段の段数を大きく設定し、バス使用権の優先度を低くするバスマスタには前記データ保持手段のうち有効とするデータ保持手段の段数を小さく設定することを特徴とする。
【発明の効果】
【0015】
本発明によれば、バスマスタのリードデータ用FIFOの段数を変更可能なように構成したので、データ処理内容の違いや実行するアプリケーションの違いによってバスマスタ間のバス使用権優先順位を変更したい場合、バスの使用権の優先度を上げたいバスマスタのリードデータ用FIFOの有効段数は大きな値に、バスの使用権の優先度を下げたいバスマスタのリード用FIFOの有効段数は小さな値に設定することで、バス使用権獲得頻度を変更可能とし、バスアービトレーションの優先順位を変更する場合と同等の効果を持たせることができる。従って、バスアービタの設計変更を不要とし、チップ開発の検証負荷を大きく引き下げることによって開発期間の短縮が可能となる。また、DMA転送開始前に上述したリードデータ用FIFOの有効段数設定を行うことができるので、データ処理内容に合わせて各DMA転送毎にFIFOの有効段数設定を行うことにより、きめ細かくバス使用権の優先度を変更することが可能である。さらに、リードデータ用FIFOの有効段数設定を変更することによって、リードデータがバスマスタ内部のデータ処理に対して不足してくると、データ処理結果が生成されなくなるため、メモリへ書き出すライトデータが少なくなり、結果としてメモリへのライトアクセスのためのバス権要求頻度も下げることができるという効果がある。
【0016】
また、特許文献1で示されているDMAコマンドバッファ段数を変更する場合に比べ、より簡単な機構で同等の効果が得られるので、チップ開発期間のさらなる短縮、コストダウンに貢献することができるという効果がある。
【発明を実施するための最良の形態】
【0017】
以下図面を参照して本発明の第一の実施例を説明する。本実施例を構成するSOCチップのブロック図は従来例を示した図3と基本的には同じである。バスアービタは従来例にあるバスアービタをそのまま使用して構わない。
【0018】
図3のバスマスタ1、バスマスタ2、バスマスタ3はリードデータデータを受信するRD−FIFOの有効段数の設定を変更できるように構成されている。
【0019】
本実施例の典型的なバスマスタの内部ブロックを図1に示す。101はバスマスタ全体であり、102はDMAコントローラブロックである。以後DMACと呼ぶ。RD−FIFO103はリードデータを受信するFIFOである。この図では6段で構成されている。FIFOの1段の容量は内部バスと接続されているデータバス幅のデータを保持できるbit幅の容量を持っており、例えば内部バスが128bitの時、RD−FIFOの1段は128bitのフリップフロップで構成することができる。FIFO段数設定部104はRD−FIFO103の有効な段数を設定するブロックである。この図に示すRD−FIFOにおいて有効な段数が“6”と設定されると実装されている全ての段数を使って動作し、リードデータを6段分受信した時点でFIFOは“FULL”となる。一方有効な段数が“4”と設定されると、リードデータを4段分受信した時点でFIFOは“FULL”状態となり、それ以上データは受信できなくなる。図1中のRD−FIFO103の斜線がかかっていない部分が有効な段、斜線部分は無効な段を示している。この図では有効な段数が“4”と設定された状態を示している。WR−FIFO 106はバスマスタ101がRAM306へデータを出力する時のライトデータFIFOである。ライトデータはFIFOの段数を設定する機構は備えていない。この図では6段構成のFIFOであるが、WR−FIFO106の段数は特に何段であっても差し支えない。制御部104はバスマスタ101の動作を制御するブロックである。CPU302から設定されたRD−FIFO103の有効段数をFIFO段数設定部105に設定する。CPU302からデータ処理動作を指示されると、内部バス使用権を獲得するためにバスアービタ108にバス権要求信号BREQをアサートし、内部バス使用許可信号BGNTがアサートされるのを待つ。バスに対して転送コマンドとアドレス情報をAD/CMD信号へ出力する。RD−FIFO103からのRD−FIFO内部状態を示す信号からFIFOの空き情報を監視する。また、データライト時はWR−FIFOの内部状態を示す信号からFIFOの空き情報を監視する。107はデータ処理部であり、DMAC102からリードデータを受け取り、内部でデータ処理を行った結果をDMCA102へ渡す。バスマスタは図3に示すようにSOCの内部バスとバスアービタ108に接続されている。バスアービタ108はバスマスタ102からバス権獲得要求信号BREQを受け取り、他のバスマスタからのバス獲得要求との間でアービトレーションを行い、バス権を渡すバスマスタデバイスに接続されているバス権使用許可信号BGNTをアサートすることでバスの使用を許可する。バスの使用を許可しない他のバスマスタに対してはBGNT信号はネゲートした状態を維持する。
【0020】
次に本実施例図1に示したバスマスタのリード処理動作の流れを図2のフローチャートを参照して説明する。
【0021】
CPU302からバスマスタ1に対してデータ処理のための各種設定がなされ、データ処理の開始が指示されると、本処理を開始する。
【0022】
制御部104はFIFO段数設定部105に対して、RD−FIFO有効段数の設定(S201)を行う。ここでは図1にあるように“4”段を有効段数として設定するものとする。次に、制御部104はRD−FIFO103の状態を示す信号とリードアクセス許可済みのリー-ドアクセスに伴うリードデータ数とから、RD−FIFOに有効段数すなわちリードデータを後何段受信できるかを判定する。RD−FIFOがまだ受信できる状態にある場合、S203へ進み、制御部104はバスアービタ108に対してBREQ信号をアサートすることによってバス使用権を要求する。次に、バス使用権が獲得できたかどうかをバスアービタ108からの信号BGNTがアサートされたかどうかで判定する(S204)。バス使用権が獲得できるまで待ち、バス使用権が獲得できるとS205でAD/CMD信号線にアクセス先のアドレス、リード動作かライト動作かを示すコマンド信号を出力し、バス動作を開始する。アドレス、コマンド出力を終了すると全データ転送要求が許可されたかどうかをS206で判定し、まだ転送すべきデータがある場合はS202へ戻る。全データ転送が終了した場合は処理を終了する。S202でRD−FIFO103に有効段数がないと判定されると、S207へ進み、BREQ信号をネゲートしてバス使用権要求を取り下げる。
【0023】
本実施例のバスマスタはS202にあるようにRD−FIFO103にデータを受信できる段数がある場合は、バス使用権を要求し、リードコマンドを出力してデータを要求し続けるので、RD−FIFOの有効段数を大きな値に設定すると、バス権使用要求を出す頻度が高くなり、逆にRD−FIFOの有効段数を小さな値に設定すると、バス権使用要求を出す頻度が低くなる。本実施例に示した機構を図3に示すバスマスタ1、2、3の各バスマスタに実装することにより、バスアービタが従来と同じアービトレーションアルゴリズムで動作していてもSOC301全体で見ると、バス権使用要求を出す頻度が高いバスマスタほどバス使用権を多く獲得することができるようになるため、結果としてバスアービトレーションに優先度を付ける場合と同等の効果が得られることがわかる。
【0024】
また、DMA転送を起動する前に、RD−FIFO103の有効段数を設定できるので、各DMA転送毎にバス使用権の優先度を変更することが可能となり、実行するアプリケーションの変化、データ処理内容の変化に対して非常に柔軟に対応することが可能となる。
【図面の簡単な説明】
【0025】
【図1】本発明の実施例におけるバスマスタの内部構成を示すブロック図である。
【図2】本発明の実施例におけるバスマスタの処理動作を示すフローチャートである。
【図3】本発明の実施例及び従来例におけるLSIの内部構成を示すブロック図である。
【符号の説明】
【0026】
101 バスマスタ
102 DMAC
103 RD−FIFO
104 制御部
105 FIFO段数設定部
106 WR−FIFO
107 データ処理部
108 バスアービタ

【特許請求の範囲】
【請求項1】
バスを介して接続されたデータ処理部の間でデータ転送を行うデータ処理装置において
前記バスを介して転送されたデータを複数個保持するデータ保持手段と
前記複数のデータ保持手段のうち有効とするデータ保持手段の段数を設定する段数設定手段と
前記有効と設定されたデータ保持手段の空き状態に応じて前記バスへバス使用権を要求するバス使用権要求手段とを備えたバスマスタを有することを特徴とするデータ処理装置。
【請求項2】
前記データ処理装置において、前記バスマスタに対するバス使用権の優先度を高くする場合は前記データ保持手段のうち有効とするデータ保持手段の段数を大きく設定し、バス使用権の優先度を低くする場合は前記データ保持手段のうち有効とするデータ保持手段の段数を小さく設定することを特徴とする請求項1記載のデータ処理装置。
【請求項3】
前記データ処理装置において、前記バスマスタと同等の機能を持つバスマスタを複数有することを特徴とする請求項2記載のデータ処理装置。
【請求項4】
前記データ処理装置において、前記複数のバスマスタに対してバス使用権の優先度を高くするバスマスタには前記データ保持手段のうち有効とするデータ保持手段の段数を大きく設定し、バス使用権の優先度を低くするバスマスタには前記データ保持手段のうち有効とするデータ保持手段の段数を小さく設定することを特徴とする請求項3記載のデータ処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate