(57)【要約】【課題】クロスババスに接続される各マスタが要求するデータサイズに応じて各マスタに割当てるバスを動的に変更して効率よくデータ転送を行なうデータ処理装置を得ること。【解決手段】バス制御部５が、予め定められた優先制御に基づいてバス要求を行っているマスタ１−１〜１−４の優先順位を決定し、優先順位が高い順に要求されたデータサイズに応じてマスタ１−１〜１−４にクロスババスＢ１〜Ｂ４を割当て、割当てたクロスババスＢ１〜Ｂ４を用いてマスタ１−１〜１−４とマスタ１−１〜１−４がデータを転送するスレーブ３−１〜３−４とを接続する。【選択図】        図１
2006065812.tif 000002
【特許請求の範囲】
【請求項１】
予め定められた最小単位から成るバスを複数本備え、前記バスに複数のマスタと複数のスレーブが接続され、前記複数のマスタと前記複数のスレーブとそれらを接続する前記複数のバスの制御を行なうバス制御部を備え、前記複数のマスタと前記複数のスレーブとがデータを転送するデータ処理装置において、
前記マスタは、
スレーブとの間でデータの転送を行なうためのアクセス要求信号を生成する要求作成部と、
前記バス制御部から入力される第１のバス選択信号に基づいて自装置に割り当てられたバスとデータ転送を行なうバスインタフェース部と、
を備え、
前記バス制御部は、
前記アクセス要求信号に基づいて前記複数のマスタの一部またはすべてに前記バスを割り当て、割り当てたバスを用いて前記マスタと当該マスタがデータを転送するスレーブとを接続するとともに、前記複数のマスタに割り当てられたバスを示す第１のバス選択信号と前記複数のスレーブに接続するバスを示す第２のバス選択信号を出力するマスタ・スレーブ選択部、
を備え、
前記スレーブは、
前記バス制御部から入力される第２のバス選択信号に基づいて自装置に割当てられたバスとデータ転送を行なうバスインタフェース部、
を備えることを特徴とするデータ処理装置。
【請求項２】
前記マスタ・スレーブ選択部は、
複数のマスタからバス要求を受けた場合、バス要求を行っているマスタがデータ転送を要求しているスレーブが異なっているか否かを判定して、異なっているスレーブにアクセスを要求しているすべてのマスタに対して、予め定められた割当ての最小単位のバスを割り当て、
前記要求作成部は、
前記バス選択信号に基づいて自装置が要求したデータサイズのデータが全て転送されたか否かを判定し、未転送のデータがある場合には、データを転送するスレーブのアドレスおよび転送するデータサイズを更新して新たなアクセス要求信号をバス制御部に出力すること、
を特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記マスタ・スレーブ選択部は、
前記最小単位のバスを割当てた後に、割当てていない未割当ての最小単位のバスがある場合、要求しているデータサイズが前記最小単位のバスのデータサイズより大きいマスタに未割当ての最小単位のバスを割当てること、
を特徴とする請求項２に記載のデータ処理装置。
【請求項４】
前記マスタ・スレーブ選択部は、
前記マスタがデータを転送するスレーブとして複数のスレーブを要求した場合、当該マスタと複数のスレーブとを接続すること、
を特徴とする請求項１〜３の何れか一つに記載のデータ処理装置。
【請求項５】
前記マスタ・スレーブ選択部は、
前記各マスタおよび前記各スレーブが転送可能な最大データサイズと、前記各マスタおよび前記各スレーブが接続することができる最小単位のバスの接続状態を記憶しておき、前記最大データサイズおよび前記接続状態に基づいて前記最小単位のバスを割当てること、
を特徴とする請求項１〜４のいずれか１つに記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送処理に関するものであり、特に、複数のマスタ装置と複数のスレーブ装置とがクロスババスで接続されるデータ処理装置に関するものである。
【背景技術】
【０００２】
クロスババスは、クロスポイントに設けられたスイッチを操作することで、複数のプロセッサ（マスタ）と複数のメモリ（スレーブ）がアクセス可能な構成となっている（非特許文献１参照）。
【０００３】
クロスババスを用いて複数のマスタと複数のスレーブとを接続して効率よくデータ転送を行なうために、従来から種々の技術が考えられている。たとえば、特許文献１には、クロスバスイッチを介して複数のノードを接続した構成の並列計算機において、ノードの数やデータの通信パス幅を可変にするコンピュータシステムの技術が開示されている（特許文献１参照）。
【０００４】
【非特許文献１】「並列コンピュータ」  天野英晴著  １９９６−６−５  初版発行  Ｐ９７−９９  ４．３  クロスバ
【特許文献１】特開２００２−５５９６５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載の従来技術では、ノードの接続を物理的に変更することでデータの通信パスのバス幅を可変にするようにしているので、一旦システムを構成するとデータの通信パスのバス幅は固定となり、転送するデータのサイズにあわせて動的に変更することはできないという問題があった。
【０００６】
本発明は、上記に鑑みてなされたものであって、クロスババスに接続される各マスタが要求するデータサイズに応じて各マスタに割当てるバスを動的に変更して効率よくデータ転送を行なうデータ処理装置を得ることを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本発明は、予め定められた最小単位から成るバスを複数本備え、前記バスに複数のマスタと複数のスレーブが接続され、前記複数のマスタと前記複数のスレーブとそれらを接続する前記複数のバスの制御を行なうバス制御部を備え、前記複数のマスタと前記複数のスレーブとがデータを転送するデータ処理装置において、前記マスタは、スレーブとの間でデータの転送を行なうためのアクセス要求信号を生成する要求作成部と、前記バス制御部から入力される第１のバス選択信号に基づいて自装置に割り当てられたバスとデータ転送を行なうバスインタフェース部と、を備え、前記バス制御部は、前記アクセス要求信号に基づいて前記複数のマスタの一部またはすべてに前記バスを割り当て、割り当てたバスを用いて前記マスタと当該マスタがデータを転送するスレーブとを接続するとともに、前記複数のマスタに割り当てられたバスを示す第１のバス選択信号と前記複数のスレーブに接続するバスを示す第２のバス選択信号を出力するマスタ・スレーブ選択部、を備え、前記スレーブは、前記バス制御部から入力される第２のバス選択信号に基づいて自装置に割当てられたバスとデータ転送を行なうバスインタフェース部、を備えることを特徴とする。
【発明の効果】
【０００８】
この発明によれば、バス制御部のマスタ・スレーブ選択部が、アクセス要求信号に基づいて複数のマスタの一部またはすべてに、予め定められた最小単位から成る複数本のバスを割り当て、割り当てたバスを用いてマスタとこれらのマスタがデータを転送するスレーブとを接続するようにしているので、各マスタに割当てるバスを動的に変更して効率よくデータ転送を行なうことができる。
【発明を実施するための最良の形態】
【０００９】
以下に、本発明にかかるデータ処理装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１０】
実施の形態１．
図１〜図１２を用いてこの発明の実施の形態１を説明する。図１は、この発明にかかる実施の形態１のデータ処理装置の構成を示すブロック図である。この発明にかかる実施の形態１のデータ処理装置は、複数（この場合は４つ）のマスタ１−１〜１−４と、複数（この場合は４つ）のスレーブ３−１〜３−４を示すと、バス制御部５と、バスのクロスポイントに設けられバス制御部５によってオン／オフ制御されるスイッチＳＷ１−１〜ＳＷ１−８，ＳＷ２−１〜ＳＷ２−８，ＳＷ３−１〜ＳＷ３−８，ＳＷ４−１〜ＳＷ４−８によりマスタ１−１〜１−４とスレーブ３−１〜３−４とを接続するクロスババスＢ１〜Ｂ４とを備えている。図１では、クロスババスＢ１〜Ｂ４はそれぞれ３２ビット（特許請求の範囲でいうところの最小単位のバス）であり、クロスババスＢ１〜Ｂ４を全て用いると１サイクルで１２８ビットのデータを転送することができる。なお、クロスババスＢ１〜Ｂ４のビット数はこれに限るものではない。
【００１１】
マスタ１は、たとえば、ＣＰＵ（Central Processing Unit）やＤＭＡＣ（Direct Memory Access Controller）などの演算処理装置であり、クロスババスＢ１〜Ｂ４を介してスレーブ３にアクセスする。
【００１２】
マスタ１−１〜１−４は、スレーブ３−１〜３−４に対して１サイクルで最大１２８ビットのデータアクセスが可能であり、スレーブ３−１〜３−４に対してアクセスする際には、クロスババスＢ１〜Ｂ４の使用を要求するバス要求であるバス要求信号、アクセスするスレーブ３−１〜３−４のアドレスを示すアドレス信号、およびアクセスするデータサイズ（ビット数）を示すデータサイズ信号からなるアクセス要求信号ＭＲＥＱ１〜ＭＲＥＱ４をバス制御部５に出力する。
【００１３】
マスタ１−１〜１−４は、バス制御部５から入力される自装置が出力したバス要求が受け付けたか否かを示す要求受付信号、アクセスしたスレーブ３−１〜３−４の処理が終了したことを示す終了信号、および自装置に割当てられたクロスババスＢ１〜Ｂ４を示すバス選択信号を含むアクセス制御信号ＭＡＣＫ１〜ＭＡＣＫ４に基づいてクロスババスＢ１〜Ｂ４を介してスレーブ３−１〜３−４にアクセスしてデータ転送を行なう。
【００１４】
バス制御部５は、マスタ１−１〜１−４から入力されるアクセス要求信号ＭＲＥＱ１〜ＭＲＥＱ４に基づいてマスタ１−１〜１−４にクロスババスＢ１〜Ｂ４を割当て、スイッチＳＷ１−１〜ＳＷ１−８，ＳＷ２−１〜ＳＷ２−８，ＳＷ３−１〜ＳＷ３−８，ＳＷ４−１〜ＳＷ４−８をオン／オフ制御してマスタ１−１〜１−４とスレーブ３−１〜３−４とをクロスババスＢ１〜Ｂ４によって接続するとともに、マスタ１−１〜１−４にアクセス制御信号ＭＡＣＫ１〜ＭＡＣＫ４を出力する。また、バス制御部５は、スレーブ３−１〜３−４にスレーブアドレス信号およびデータサイズ信号からなるスレーブアクセス信号ＳＲＥＱ１〜ＳＲＥＱ４を出力する。
【００１５】
スレーブ３−１〜３−４は、最大１２８ビットのデータアクセスが可能であり、バス制御部５からのスレーブアクセス信号ＳＲＥＱ１〜ＳＲＥＱ４に基づいてクロスババスＢ１〜Ｂ４を介してマスタ１−１〜１〜４とデータの転送を行なう記憶装置である。スレーブ３−１〜３−４は、マスタ１−１〜１−４とのデータ転送の処理が終了すると、処理が終了したことを示すスレーブ終了信号ＳＥＮＤ１〜ＳＥＮＤ４をバス制御部５に出力する。スレーブ終了信号ＳＥＮＤ１〜ＳＥＮＤ４は、スレーブ３−１〜３−４がクロスババスＢ１〜Ｂ４に指定されたアドレスのデータの出力を完了したとき、またはスレーブ３−１〜３−４がクロスババスＢ１〜Ｂ４から入力されたデータの記憶を完了したときに出力される。
【００１６】
図２は、図１に示したマスタ１−１の構成を示すブロック図である。マスタ１−１は、ＣＰＵ１１と、要求作成部１２と、マスタ選択信号生成部１３と、選択部１４−１〜１４−４とを備えている。なお、マスタ選択信号生成部１３と選択部１４−１〜４−４とでバスインタフェース部の機能を実現している。
【００１７】
ＣＰＵ１１は、マスタ１−１を統括的に制御するとともに、スレーブ３−１〜３−４へのアクセスの必要がある場合、クロスババスＢ１〜Ｂ４の使用を要求するバス要求情報、アクセスするスレーブ３−１〜３−４のアドレス情報、および何ビットのデータのアクセスであるのかを示すデータサイズ情報を含むバスアクセス要求を要求作成部１２に出力する。
【００１８】
要求作成部１２は、ＣＰＵ１１から入力されるバスアクセス要求と、バス制御部５から入力されるアクセス制御信号ＭＡＣＫ１に含まれる要求受付信号ＡＣＫ１およびバス選択信号ＢＳ１とに基づいてバス要求信号ＢＲＥＱ１、アドレス信号ＡＤ１、およびデータサイズ信号ＤＳＩＺＥ１を含むアクセス要求信号ＭＲＥＱ１を生成する。
【００１９】
図３は、要求作成部１２の構成を示すブロック図である。要求作成部１２は、ＣＰＵ１１から入力されるバスアクセス要求を受け付けてアクセス要求信号ＭＲＥＱ１を生成する要求検出部１２１と、バス制御部５から入力される要求受付信号ＡＣＫ１およびバス選択信号ＢＳ１とに基づいてアクセス要求信号ＭＲＥＱ１の継続、更新または終了を決定する終了検出部１２２とを備えている。
【００２０】
図２に戻って、マスタ選択信号生成部１３は、バス制御部５から入力されるアクセス制御信号ＭＲＥＱ１に含まれるバス選択信号ＢＳ１および終了信号ＥＮＤ１に基づいて選択部１４−１〜１４−４を制御する選択信号ＳＥＬ１〜ＳＥＬ４を生成して選択部１４−１〜１４−４に出力する。
【００２１】
選択部１４−１〜１４−４は、マスタ選択信号生成部１３から入力される選択信号ＳＥＬ１〜ＳＥＬ４に基づいてクロスババスＢ１〜Ｂ４の１つを選択し、選択したクロスババスＢ１〜Ｂ４から入力されるデータをＣＰＵ１１と図示していないキャッシュメモリや演算器などと接続する内部バスＢＩ１〜ＢＩ４に出力する。
【００２２】
なお、図２では、クロスババスＢ１〜Ｂ４をリードバスとして使用して、クロスババスＢ１〜Ｂ４からデータを読み込むリード時に必要な構成部分のみを記載したが、クロスババスＢ１〜Ｂ４をライトバスとして使用する場合、またはリードバスとライトバスとを独立させて２系統のクロスババスＢ１〜Ｂ４を備える場合には、内部バスＢＩ１〜ＢＩ４の１つを選択してクロスババスＢ１に出力する選択部と、内部バスＢＩ１〜ＢＩ４の１つを選択してクロスババスＢ２に出力する選択部と、内部バスＢＩ１〜ＢＩ４の１つを選択してクロスババスＢ３に出力する選択部と、内部バスＢＩ１〜ＢＩ４の１つを選択してクロスババスＢ４に出力する選択部とを備え、ライト時には、これらの内部バスＢＩ１〜ＢＩ４の１つを選択する選択部を、リード時の選択部１４−１〜１４−４と同様にバス制御部５から入力されるアクセス制御信号ＭＲＥＱ１に含まれるバス選択信号ＢＳ１および終了信号ＥＮＤ１に基づいて制御して、クロスババスＢ１〜Ｂ４に内部バスＢＩ１〜ＢＩ４のデータを出力すればよい。また、リード動作であるのかライト動作であるのかを示すリードライト信号をアクセス要求信号ＭＲＥＱ１に含め、バス制御部５がスレーブ３−１〜３−４にリードライト信号を含めたスレーブアクセス信号ＳＲＥＱ１〜ＳＲＥＱ４に出力すればよい。
【００２３】
図４は、図１に示したバス制御部５の構成を示すブロック図である。バス制御部５は、優先制御部５１、最優先検出部５２、マスタ選択部５３、スレーブ選択部５４、および終了信号生成部５５を備えている。なお、マスタ選択部５３とスレーブ選択部５４とでマスタ・スレーブ選択部の機能を実現している。
【００２４】
優先制御部５１は、ラウンドロビンや予め定められたプライオリティ、固定順などに基づいて、受け付ける優先順位を決定し最優先検出部５２に通知する。
【００２５】
最優先検出部５２は、アクセス要求信号ＭＲＥＱ１〜ＭＲＥＱ４に含まれるバス要求信号ＢＲＥＱ１〜ＢＲＥＱ４の複数がアサート（クロスババスＢ１〜Ｂ４の使用を要求している）場合には、アサートされているバス要求信号ＢＲＥＱ１〜ＢＲＥＱ４のうち、優先制御部５１で決定された優先順位に基づいて、受け付けマスタ１−１〜１−４の順位をマスタ選択部５３に通知する。最優先検出部５２は、バス要求信号ＢＲＥＱ１〜ＢＲＥＱ４の１つのみがアサートの場合には、アサートとなっているバス要求信号ＢＲＥＱ１〜ＢＲＥＱ４を出力しているマスタ１−１〜１−４を優先順位１位とする優先順位をマスタ選択部５３に通知する。
【００２６】
マスタ選択部５３は、アクセス要求信号ＭＲＥＱ１〜ＭＲＥＱ４に含まれるデータサイズ信号ＤＳＩＺＥ１〜ＤＳＩＺＥ４およびアドレス信号ＡＤ１〜ＡＤ４に基づいて、バス要求を受け付けるマスタ１−１〜１−４を選択する。マスタ選択部５３は、バス要求を受け付けたマスタ１−１〜１−４に対してクロスババスＢ１〜Ｂ４を割当てる。マスタ選択部５３は、バス要求を受け付けたか否かを示す要求受付信号ＡＣＫ１〜ＡＣＫ４を優先制御部５１、終了信号生成部５５、およびマスタ１−１〜１−４に出力し、マスタ１−１〜１−４に対して割当てたクロスババスＢ１〜Ｂ４を示すバス選択信号ＢＳ１〜ＢＳ４を終了信号生成部５５とマスタ１−１〜１−４とに出力する。
【００２７】
バス選択信号ＢＳ１〜ＢＳ４はそれぞれ４ビットの信号であり、０ビット目がクロスババスＢ１に対応し、１ビット目がクロスババスＢ２に対応し、２ビット目がクロスババスＢ３に対応し、３ビット目がクロスババスＢ４に対応している。たとえば、マスタ選択部５３が、クロスババスＢ１をマスタ１−１に割当て、クロスババスＢ２をマスタ１−２に割当て、クロスババスＢ３をマスタ１−３に割当て、クロスババスＢ４をマスタ１−４に割当てたとする。この場合、マスタ１−１に対するバス選択信号ＢＳ１の０ビット目をアサートにし、バス選択信号ＢＳ１の１〜３ビットをネゲートにし、マスタ１−２に対するバス選択信号ＢＳ２の１ビット目をアサートにし、バス選択信号ＢＳ２の０，２，３ビット目をネゲートにし、マスタ１−３に対するバス選択信号ＢＳ３の２ビット目をアサートにし、０，１，３ビット目をネゲートにし、マスタ１−４に対するバス選択信号ＢＳ４の３ビット目をアサートにし、バス選択信号ＢＳ４の０〜２ビットをネゲートにする。
【００２８】
また、マスタ選択部５３は、バス要求を受け付けたマスタ１−１〜１−４に対応付けて、当該マスタが要求しているデータサイズ、アクセスするスレーブ３−１〜３−４、および割当てたクロスババスＢ１〜Ｂ４の割当情報を含むマスタ受付情報をスレーブ選択部５４に出力する。マスタ選択部５３は、バス要求を受け付けたマスタ１−１〜１−４に対応付けて当該マスタがアクセスするスレーブ３−１〜３−４の情報を含む接続情報を終了信号生成部５５に出力する。
【００２９】
スレーブ選択部５４は、マスタ選択部５３から入力されるマスタ受付情報に基づいて、スレーブ３−１〜３−４にクロスババスＢ１〜Ｂ４を割当てる。スレーブ選択部５４は、スレーブ３−１〜３−４にそれぞれ割当てたクロスババスＢ１〜Ｂ４を示すバス選択信号ＢＳＳ１〜ＢＳＳ４と、アクセスするアドレスを示すスレーブアドレス信号ＳＡＤ１〜ＳＡＤ４を含むスレーブアクセス信号ＳＲＥＱ１〜ＳＲＥＱ４を出力する。
【００３０】
終了信号生成部５５は、マスタ選択部５３から入力される接続情報に基づいて、スレーブ３−１〜３−４から入力されるスレーブ終了信号ＳＥＮＤ１〜ＳＥＮＤ４をスレーブ３−１〜３−４にアクセスしているマスタ１−１〜１−４に終了信号ＥＮＤ１〜ＥＮＤ４として出力する。
【００３１】
図５は、図１に示したスレーブ３−１の構成を示すブロック図である。スレーブ３−１は、有効データ検出部３１と、スレーブ選択信号生成部３２と、選択部３３−１〜３３−４とを備えている。なお、スレーブ選択信号生成部３２と選択部３３−１〜３３−４とでバスインタフェース部の機能を実現している。
【００３２】
有効データ検出部３１は、バス制御部５から入力されるスレーブアクセス信号ＳＲＥＱ１に含まれるスレーブアドレス信号ＳＡＤ１に基づいて転送するデータが内部バスＳＢＩ１〜ＳＢＩ４に接続される図示していない記憶部のどのデータであるかを判定して位置情報をスレーブ選択信号生成部３２に出力する。
【００３３】
スレーブ選択信号生成部３２は、有効データ検出部３１から入力される位置情報とバス制御部５から入力されるスレーブアクセス信号ＳＲＥＱ１に含まれるバス選択信号ＢＳＳ１とに基づいて選択部３３−１〜３３−４を制御する選択信号ＳＥＬ１１〜ＳＥＬ１４を生成して選択部３３−１〜３３−４に出力する。
【００３４】
選択部３３−１〜３３−４は、スレーブ選択信号生成部３２から入力される選択信号ＳＥＬ１１〜ＳＥＬ１４に基づいて図示していない記憶部に接続されている内部バスＳＢＩ１〜ＳＢＩ４の１つを選択し、選択した内部バスＳＢＩ１〜ＳＢＩ４から入力されるデータをクロスババスＢ１〜Ｂ４に出力する。
【００３５】
なお、図５では、クロスババスＢ１〜Ｂ４をリードバスとして使用して、クロスババスＢ１〜Ｂ４からデータを読み込むマスタのリード時に必要な構成部分のみを記載したが、クロスババスＢ１〜Ｂ４をライトバスとして使用する場合、またはリードバスとライトバスとを独立させて２系統のクロスババスＢ１〜Ｂ４を備える場合には、クロスババスＢ１〜Ｂ４の１つを選択して内部バスＳＢＩ１に出力する選択部と、クロスババスＢ１〜Ｂ４の１つを選択して内部バスＳＢＩ２に出力する選択部と、クロスババスＢ１〜Ｂ４の１つを選択して内部バスＳＢＩ３に出力する選択部と、クロスババスＢ１〜Ｂ４の１つを選択して内部バスＳＢＩ４に出力する選択部とを備え、ライト時には、これらのクロスババスＢ１〜Ｂ４の１つを選択する選択部を、リード時の選択部３３−１〜３３−４と同様にバス制御部５から入力されるスレーブアクセス信号ＳＲＥＱ１に含まれるバス選択信号ＢＳＳ１およびリードライト信号に基づいて制御して、クロスババスＢ１〜Ｂ４のデータを内部バスＳＢＩ１〜ＳＢＩ４に出力すればよい。
【００３６】
つぎに、この発明にかかる実施の形態１のデータ処理装置の動作を説明する。まず、図６のフローチャートを参照して、マスタ１−１を例に挙げて、マスタがバス制御部５にスレーブ３−１〜３−４へのアクセス要求を出力する動作を説明する。
【００３７】
スレーブ３−１〜３−４へのアクセスの必要がある場合、ＣＰＵ１１は、クロスババスＢ１〜Ｂ４の使用を要求するバス要求情報、アクセスするスレーブ３−１〜３−４のアドレス情報、および何ビットのデータのアクセスであるのかを示すデータサイズ情報を含むバスアクセス要求を要求検出部１２１に出力する。
【００３８】
ＣＰＵ１１からバスアクセス要求を受けると、要求検出部１２１は、クロスババスＢ１〜Ｂ４の使用を要求するためにバス要求信号ＢＲＥＱ１をアサートにしてバス制御部５と終了検出部１２２とにバス要求を通知する（ステップＳ１００，Ｓ１０１）。
【００３９】
要求検出部１２１は、ＣＰＵ１１からのアドレス情報からアクセスするスレーブ３−１〜３−４のアドレスを示すアドレス信号ＡＤ１を生成し、データサイズ情報から転送するデータサイズを示すデータサイズ信号ＤＳＩＺＥ１を生成する。要求検出部１２１は、アドレス信号ＡＤ１をバス制御部５に出力してアクセスするスレーブ３−１〜３−４のアドレスを通知し、データサイズ信号ＤＳＩＺＥ１を終了検出部１２２とバス制御部５とに出力して転送するデータサイズを通知する（ステップＳ１０２）。
【００４０】
バス要求のアサートを受けて終了検出部１２２は、バス要求が受け付けられたか否かを判定する（ステップＳ１０３）。バス要求が受け付けられなかった場合、要求検出部１２１は、バス要求の継続を示す要求継続通知を要求検出部１２１に出力する。
【００４１】
要求継続通知を受けると、要求検出部１２１はバス要求信号ＢＲＥＱ１、アドレス信号ＡＤ１、データサイズ信号ＤＳＩＺＥ１を変更することなくバス要求を継続して出力する（ステップＳ１０４）。すなわち、１つ前のサイクルと同じバス要求を出しつづける。
【００４２】
バス要求が受け付けられた場合、終了検出部１２２は、要求したデータサイズのデータが全て転送されたか否かを判定する（ステップＳ１０５）。終了検出部１２２は、バス制御部５から入力されたバス選択信号ＢＳ１から自装置に割当てられたクロスババスＢ１〜Ｂ４を認識する。クロスババスＢ１〜Ｂ４は各３２ビットであるので、終了検出部１２２は、自装置に割当てられたクロスババスの数から実際に転送されたデータサイズを算出し、算出したデータサイズと要求したデータサイズとを比較してデータがすべて転送されたか否かを判定する。
【００４３】
データが全て転送されたと判定した場合、終了検出部１２２は、バス要求の終了を示す要求終了通知を要求検出部１２１に出力する。要求終了通知を受けると、要求検出部１２１は、バス要求信号ＢＲＥＱ１をネゲートにしてバス要求が無いことをバス制御部５に通知する（ステップＳ１０６）。あるいは、つぎの要求を開始する。
【００４４】
未転送のデータがある（データが全て転送されていない）と判定した場合、終了検出部１２２は、未転送のデータサイズの情報を含むバス要求の更新を示す要求更新通知を要求検出部１２１に出力する。要求更新通知を受けると、要求検出部１２１は、未転送のデータサイズ、現在要求しているデータサイズ、および現在要求しているアドレスに基づいて、新たなアドレスを算出する。要求検出部１２１は、算出したアドレスからアドレス信号ＡＤ１を更新し、未転送のデータサイズからデータサイズ信号ＤＳＩＺＥ１を更新して、バス要求を継続する（ステップＳ１０７）。
【００４５】
終了検出部１２２は、要求継続通知または要求更新通知を要求検出部１２１に通知した場合には、要求終了通知を出力するまで次のサイクルでバス要求が受け付けられたか否か、全てのデータが転送されたか否かを判定する動作を繰り返す（ステップＳ１０１〜Ｓ１０７）。
【００４６】
つぎに、マスタ１−１がクロスババスＢ１〜Ｂ４からのデータを取り込む動作を説明する。マスタ１−１のマスタ選択信号生成部１３は、バス制御部５から入力されるバス選択信号ＢＳ１および終了信号ＥＮＤ１によってバス要求信号ＢＲＥＱ１によって自装置にどのクロスババスＢ１〜Ｂ４が割当てられたか、およびアクセスしたスレーブ３−１〜３−４の処理が終了したか（この場合は、スレーブ３−１〜３−４がクロスババスＢ１〜Ｂ４にデータを出力したか）を知ることができる。マスタ選択信号生成部１３は、これらの情報に基づいて選択部１４−１〜１４−４を制御してクロスババスＢ１〜Ｂ４から内部バスＢＩ１〜ＢＩ４にデータを取り込む。
【００４７】
バス制御部５から入力される終了信号ＥＮＤ１がアサートになる（アクセスしたスレーブ３−１〜３−４の処理が終了する）と、マスタ選択信号生成部１３は、バス選択信号ＢＳ１に基づいて選択信号ＳＥＬ１〜ＳＥＬ４を生成する。マスタ選択信号生成部１３は、アサートとなっているバス選択信号ＢＳ１が示すクロスババスＢ１〜Ｂ４（自装置に割当てられたクロスババスＢ１〜Ｂ４）を選択するような選択信号ＳＥＬ１〜ＳＥＬ４を生成する。たとえば、クロスババスＢ１から入力されるデータを上位データとしてビッグエンディアンとなるように選択信号ＳＥＬ１〜ＳＥＬ４を生成する。
【００４８】
具体的には、バス選択信号ＢＳ１の４ビットが全てアサートである場合、すなわちクロスババスＢ１〜Ｂ４が自装置に割当てられた場合、１２８ビットの内部バスの中で０〜３１ビットが割当てられている内部バスＢＩ１にクロスババスＢ１のデータを出力し、３２〜６３ビットが割当てられている内部バスＢＩ２にクロスババスＢ２のデータを出力し、６４〜９５ビットが割当てられている内部バスＢＩ３にクロスババスＢ３のデータを出力し、９６〜１２７ビットが割当てられている内部バスＢＩ４にクロスババスＢ４のデータを出力するような選択信号ＳＥＬ１〜ＳＥＬ４を生成する。
【００４９】
選択部１４−１〜１４−４は、マスタ選択信号生成部１３から入力される選択信号ＳＥＬ１〜ＳＥＬ４に基づいてクロスババスＢ１〜Ｂ４を選択し、選択したクロスババスＢ１〜Ｂ４から入力されるデータを内部バスＢＩ１〜ＢＩ４に出力する。
【００５０】
つぎに、図７〜図１０のフローチャートを参照して、バス制御部５の動作を説明する。バス制御部５は、マスタ１−１〜１−４から入力されるバス要求信号ＢＲＥＱ１〜ＢＲＥＱ４、アドレス信号ＡＤ１〜ＡＤ４、およびデータサイズ信号ＤＳＩＺＥ１〜ＤＳＩＺＥ４によって、マスタ１−１〜１−４がバス要求を行なっているか否か、どのスレーブ３−１〜３−４にアクセス要求しているか、およびデータサイズを認識する。バス制御部５は、これらの情報に基づいてマスタ１−１〜１−４からのバス要求を受け付け、バス要求を受け付けたマスタ１−１〜１−４にクロスババスＢ１〜Ｂ４を割当ててスレーブ３−１〜３−４と接続する。
【００５１】
最優先検出部５２は、バス要求を受け付ける優先順位を決定してマスタ選択部５３に通知する（図７のステップＳ１０）。具体的には、マスタ１−１〜１−４の中でバス要求を行なっているマスタが１つの場合、最優先検出部５２は、バス要求を行なっているマスタ１−１〜１−４を優先順位１位としてマスタ選択部５３に通知する。マスタ１−１〜１−４の中でバス要求を行なっているマスタが複数の場合、優先制御部５１で決定された優先順位に基づいて、受け付けマスタ１−１〜１−４の順位をマスタ選択部５３に通知する。
【００５２】
マスタ選択部５３は、最優先検出部５２から通知された優先順位と、バス要求を行なっているマスタ１−１〜１−４がアクセスするスレーブ３−１〜３−４および転送するデータのデータサイズに基づいて、バス要求を受け付けるマスタ１−１〜１−４を選択するマスタ選択処理を実行する（図７のステップＳ２０）。
【００５３】
図８のフローチャートを参照して、マスタ選択処理の動作を詳細に説明する。マスタ選択部５３は、優先順位１位の最優先マスタのバス要求を受け付ける（図８のステップＳ２００）。マスタ選択部５３は、最優先マスタに対する要求受付信号をアサートにして、バス要求を受け付けたことを最優先マスタ、優先制御部５１、および終了信号生成部５５に通知する。
【００５４】
マスタ選択部５３は、最優先マスタが要求しているデータサイズがデータ転送の最大サイズ（この場合は１２８ビット）であるか否かを判定する（図８のステップＳ２０１）。最優先マスタが要求しているデータサイズが１２８ビットの場合、マスタ選択部５３は、最優先マスタをバス要求を受け付ける唯一のマスタとしてマスタ選択処理を終了する。
【００５５】
最優先マスタが要求しているデータサイズが１２８ビットより小さい場合、マスタ選択部５３は、最優先マスタ以外のマスタ１−１〜１−４からのバス要求があるか（優先順位２位以下のマスタがあるか）否かを判定する（図８のステップＳ２０２）。最優先マスタ以外のマスタ１−１〜１−４からのバス要求がない場合、マスタ選択部５３はマスタ選択処理を終了する。
【００５６】
最優先マスタ以外のマスタ１−１〜１−４からのバス要求がある場合、すなわち最優先検出部５２から通知された優先順位に２〜４位のマスタがある場合、バス要求を受け付けていないマスタ１−１〜１−４の中で優先順位の高いマスタ１−１〜１−４（選択対象マスタ）が要求しているデータサイズのデータが転送可能であるか否かを判定する（図８のステップＳ２０３）。具体的には、マスタ選択部５３は、バス要求を受け付けたマスタ１−１〜１−４が要求しているデータサイズの合計を最大サイズから減算して割当可能なデータサイズを算出し、算出したデータサイズと選択対象マスタが要求しているデータサイズとを比較して、データが転送可能であるかを判定する。ただし、クロスババスＢ１〜Ｂ４は各３２ビットであり、クロスババスＢ１〜Ｂ４をマスタ１−１〜１−４に割当てるため、マスタ１−１〜１−４が要求しているデータサイズが、たとえば、８ビット、１６ビットなどの場合でもクロスババスＢ１〜Ｂ４の１つを占有することになる。マスタ選択部５３は、このようなことを考慮した上で選択対象マスタが要求するデータサイズのデータ転送が可能であるか否かを判定する。
【００５７】
データが転送可能であると判定した場合、選択対象マスタがアクセスを要求しているスレーブ３−１〜３−４とバス要求を受け付けたマスタ１−１〜１−４がアクセスを要求しているスレーブ３−１〜３−４とで衝突がないか（選択対象マスタがアクセスを要求しているスレーブ３−１〜３−４がバス要求を受け付けたマスタ１−１〜１−４がアクセスを要求しているスレーブ３−１〜３−４と異なっているか）否かを判定する（図８のステップＳ２０４）。
【００５８】
選択対象マスタが要求しているデータサイズのデータが転送可能であり、かつアクセスするスレーブ３−１〜３−４が異なる場合、マスタ選択部５３は、選択対象マスタの要求受付信号をアサートにして、バス要求を受け付けたことを選択対象マスタ、優先制御部５１、および終了信号生成部５５に通知する（図８のステップＳ２０５）。
【００５９】
マスタ選択部５３は、優先順位が定められた（バス要求を行なっている）マスタ１−１〜１−４を選択対象マスタとして、選択対象マスタが要求しているデータサイズのデータが転送可能であるか否か、アクセスを要求しているスレーブ３−１〜３−４が異なっているか否かを判定して、バス要求を受け付けるマスタ１−１〜１−４を選択する処理を繰り返す（図８のステップ２０３〜Ｓ２０６）。マスタ選択部５３は、バス要求を行なっている全てのマスタ１−１〜１−４に対してバス要求を受け付けるか否かの判定を行なってバス要求を受け付けるマスタ１−１〜１−４を選択して、マスタ選択処理を終了する。
【００６０】
図７に戻って、バス要求を受け付けるマスタ１−１〜１−４を選択するマスタ選択処理が終了すると、マスタ選択部５３は、マスタ選択処理によってバス要求を受け付けたマスタ１−１〜１−４にクロスババスＢ１〜Ｂ４を割当てるバス割当処理を実行する（図７のステップＳ３０）。
【００６１】
図９のフローチャートを参照して、バス割当処理の詳細な動作を説明する。マスタ選択部５３は、バス要求を受け付けたマスタが１つで、かつ当該マスタが要求するデータサイズが最大サイズ（この場合は１２８ビット）であるか否かを判定する（図９のステップＳ３００）。バス要求を受け付けたマスタが１つで、かつ当該マスタが要求するデータサイズが最大サイズの場合、マスタ選択部５３は、全てのクロスババスＢ１〜Ｂ４をバス要求を受け付けたマスタに割当てる（図９のステップＳ３０１）。
【００６２】
マスタ選択部５３は、バス要求を受け付けたマスタ１−１〜１−４に対するバス選択信号ＢＳ１〜ＢＳ４の全てのビットをアサートにして、クロスババスＢ１〜Ｂ４を割当てたことをバス要求を受け付けたマスタ１−１〜１−４と、終了信号生成部５５とに通知してバス割当処理を終了する。
【００６３】
バス要求を受け付けたマスタが１つで、かつ当該マスタが要求するデータサイズが最大サイズではない場合、または複数のマスタのバス要求を受け付けている場合、マスタ選択部５３は、バス要求を受け付けたマスタ１−１〜１−４が要求するデータサイズに応じた数のバスを割当てる（図９のステップＳ３０２，Ｓ３０３）。
【００６４】
マスタ選択部５３は、バス要求を受け付けたマスタ１−１〜１−４に対するバス選択信号ＢＳ１〜ＢＳ４のビットのうち割当てたクロスババスＢ１〜Ｂ４を示すビットをアサートにして、割当てたクロスババスＢ１〜Ｂ４をバス要求を受け付けたマスタ１−１〜１−４と、終了信号生成部５５とに通知してバス割当処理を終了する。
【００６５】
図７に戻って、バス要求を受け付けたマスタ１−１〜１−４にクロスババスＢ１〜Ｂ４を割当てるバス割当処理が終了すると、マスタ選択部５３は、バス要求を受け付けたマスタ１−１〜１−４に対応付けて、当該マスタが要求しているデータサイズ、アクセスするスレーブ３−１〜３−４、および割当てたクロスババスＢ１〜Ｂ４の割当情報を含むマスタ受付情報をスレーブ選択部５４に出力する。マスタ選択部５３は、バス要求を受け付けたマスタ１−１〜１−４に対応付けて当該マスタがアクセスするスレーブ３−１〜３−４の情報を含む接続情報を終了信号生成部５５に出力する。
【００６６】
スレーブ選択部５４は、マスタ受付情報に基づいてスレーブ３−１〜３−４にクロスババスＢ１〜Ｂ４を割当てるスレーブ選択処理を実行する（図７のステップＳ４０）。
【００６７】
図１０のフローチャートを参照して、スレーブ選択処理の詳細な動作を説明する。スレーブ選択部５４は、マスタ受付情報に基づいてバス要求を受け付けたマスタが１つで、かつ当該マスタが要求しているデータサイズが最大サイズであるか否かを判定する（図１０のステップＳ４００）。バス要求を受け付けたマスタが１つで、かつ当該マスタが要求しているデータサイズが最大サイズである場合、スレーブ選択部５４は、全てのクロスババスＢ１〜Ｂ４をバス要求を受け付けたマスタがアクセスを要求するスレーブ３−１〜３−４に割当てる（図１０のステップＳ４０１）。
【００６８】
スレーブ選択部５４は、バス要求を受け付けたマスタ１−１〜１−４がアクセスを要求するスレーブ３−１〜３−４に対するバス選択信号ＢＳＳ１〜ＢＳＳ４の全てのビットをアサートにして、クロスババスＢ１〜Ｂ４を割当てたことをバス要求を受け付けたマスタ１−１〜１−４がアクセス要求しているスレーブ３−１〜３−４に通知してスレーブ選択処理を終了する。
【００６９】
バス要求を受け付けたマスタが１つで、かつ当該マスタが要求するデータサイズが最大サイズではない場合、または複数のマスタ１−１〜１−４のバス要求を受け付けている場合、スレーブ選択部５４は、バス要求を受け付けたマスタ１−１〜１−４がアクセスを要求するスレーブ３−１〜３−４に対して、バス要求を受け付けたマスタ１−１〜１−４に割当てたクロスババスＢ１〜Ｂ４を割当てる（図１０のステップＳ４０２，Ｓ４０３）。
【００７０】
スレーブ選択部５４は、スレーブ３−１〜３−４に対するバス選択信号ＢＳＳ１〜ＢＳＳ４のビットのうち割当てたクロスババスＢ１〜Ｂ４を示すビットをアサートにして、割当てたクロスババスＢ１〜Ｂ４をスレーブ３−１〜３−４に通知してスレーブ選択処理を終了する。たとえば、マスタ１−１がスレーブ３−３にアクセスを要求しており、バス割当処理によってクロスババスＢ２が割当てられているとする。この場合、スレーブ選択部５４は、スレーブ３−３にクロスババスＢ２を割当てて、バス選択信号ＢＳＳ３の２ビット目をアサートにし、１，３，４ビット目をネゲートにする。
【００７１】
つぎに、スレーブ３−１がクロスババスＢ１〜Ｂ４にデータを出力する動作を説明する。スレーブ３−１は、バス制御部５から入力されるスレーブアドレス信号ＳＡＤ１およびバス選択信号ＢＳＳ１によってアクセス要求されている記憶部のアドレスおよび割当てられているクロスババスＢ１〜Ｂ４を認識することができる。スレーブ３−１は、これらの情報に基づいて、要求されているデータをクロスババスＢ１〜Ｂ４に出力する。
【００７２】
有効データ検出部３１は、スレーブアドレス信号ＳＡＤ１に基づいて転送するデータが内部バスＳＢＩ１〜ＳＢＩ４に接続される図示していない記憶部のどのデータであるかを判定して位置情報をスレーブ選択信号生成部３２に出力する。
【００７３】
スレーブ選択信号生成部３２は、有効データ検出部３１から入力される位置情報とバス制御部５から入力されるスレーブアクセス信号ＳＲＥＱ１に含まれるバス選択信号ＢＳＳ１とに基づいて選択部３３−１〜３３−４を制御する選択信号ＳＥＬ１１〜ＳＥＬ１４を生成して選択部３３−１〜３３−４に出力する。
【００７４】
スレーブ選択信号生成部３２は、記憶部からデータが読み出されて自装置に割当てられたクロスババスＢ１〜Ｂ４にデータを出力すると、処理終了を示すスレーブ終了信号ＳＥＮＤ１をアサートにして、処理が終了したことをバス制御部５に通知する。
【００７５】
つぎに、図１１および図１２のタイミングチャートを参照して、この実施の形態１のデータ処理装置の動作を説明する。図１１は、マスタ１−１のみがバス要求を行った場合のタイミングチャートである。マスタ１−２〜１−３のバス要求信号ＢＲＥＱ２〜ＢＲＥＱ４はネゲートになっているものとする。
【００７６】
サイクルＴ１において、マスタ１−１は、アドレス信号ＡＤ１にスレーブ３−１のアドレスｓ１を出力し、データサイズ信号ＤＳＩＺＥ１に最大サイズ「１２８ｂｉｔ」を出力し、バス要求信号ＢＲＥＱ１をアサート（この場合は“Ｈ”）にして、スレーブ３−１に１２８ビットでアクセスするバス要求を行なう。
【００７７】
バス制御部５は、マスタ１−１のみがバス要求を行なっているので、マスタ１−１を最優先マスタとしてバス要求を受け付けて、マスタ１−１に対する要求受付信号ＡＣＫ１をアサート（この場合は“Ｈ”）にする。バス制御部５は、マスタ１−１およびスレーブ３−１にクロスババスＢ１〜Ｂ４を割当て、マスタ１−１のバス選択信号ＢＳ１の各ビットをアサート（この場合は“Ｈ”）にし、スレーブ３−１のバス選択信号ＢＳＳ１の各ビットをアサート（この場合は“Ｈ”）にし、選択されていないスレーブ３−２〜３−４のバス選択信号ＢＳＳ２〜ＢＳＳ４の各ビットをネゲート（この場合は“Ｌ”）にする。
【００７８】
サイクルＴ２において、マスタ１−１は、サイクルＴ１で要求したバス要求のデータ転送が受け付けられているのでバス要求信号ＢＲＥＱ１をネゲート（この場合は“Ｌ”）にする。バス制御部５は、受け付けるべきバス要求が無いので、マスタ１−１〜１−４の要求受付信号ＡＣＫ１〜ＡＣＫ４をネゲート（この場合は“Ｌ”）にする。
【００７９】
スレーブ３−１は、サイクルＴ１におけるデータ転送の要求を受けて、クロスババスＢ１〜Ｂ４にデータを出力する。すなわち、マスタ１−１がサイクルＴ１において要求したスレーブ３−１からの１２８ビットのデータ「Ｄ１」が、バス要求を受け付けられた次のサイクルでクロスババスＢ１〜Ｂ４に出力され、終了信号ＥＮＤ１がアサート（この場合は“Ｈ”）になる。マスタ１−１は、バス要求が受け付けられたサイクルＴ１におけるバス選択信号ＢＳ１に基づいてクロスババスＢ１〜Ｂ４からデータを読み込む。
【００８０】
サイクルＴ３において、マスタ１−１は、アドレス信号ＡＤ１にスレーブ３−２のアドレスｓ２を出力し、データサイズ信号ＤＳＩＺＥ１に最大サイズ「１２８ｂｉｔ」を出力し、バス要求信号ＢＲＥＱ１をアサートにして、スレーブ３−２に１２８ビットでアクセスするバス要求を行なう。
【００８１】
バス制御部５は、マスタ１−１を最優先マスタとしてバス要求を受け付けて、マスタ１−１に対する要求受付信号ＡＣＫ１をアサートにする。バス制御部５は、マスタ１−１およびスレーブ３−２にクロスババスＢ１〜Ｂ４を割当て、マスタ１−１のバス選択信号ＢＳ１の各ビットをアサートにし、スレーブ３−２のバス選択信号ＢＳＳ２の各ビットをアサートにし、選択されていないスレーブ３−１，３−３，３−４のバス選択信号ＢＳＳ１，ＢＳＳ３，ＢＳＳ４の各ビットをネゲートにする。
【００８２】
サイクルＴ４において、マスタ１−１は、サイクルＴ３で要求したバス要求のデータ転送が受け付けられているが、スレーブ３−１に１２８ビットのアクセスを要求するために、アドレス信号ＡＤ１にスレーブ３−１のアドレスｓ１を出力し、データサイズ信号ＤＳＩＺＥ１に最大サイズ「１２８ｂｉｔ」を出力し、バス要求信号ＢＲＥＱ１をアサートにする。
【００８３】
バス制御部５は、マスタ１−１を最優先マスタとしてバス要求を受け付けて、マスタ１−１に対する要求受付信号ＡＣＫ１をアサートにする。バス制御部５は、マスタ１−１およびスレーブ３−１にクロスババスＢ１〜Ｂ４を割当て、マスタ１−１のバス選択信号ＢＳ１の各ビットをアサートにし、スレーブ３−１のバス選択信号ＢＳＳ１の各ビットをアサートにし、選択されていないスレーブ３−２〜３−４のバス選択信号ＢＳＳ１〜ＢＳＳ４の各ビットをネゲートにする。
【００８４】
一方、スレーブ３−２は、サイクルＴ３におけるデータ転送の要求を受けて、クロスババスＢ１〜Ｂ４にデータ「Ｄ２」を出力し、マスタ１−１は終了信号ＥＮＤ１がアサートになるとクロスババスＢ１〜Ｂ４からデータ「Ｄ２」を読み込む。
【００８５】
サイクルＴ５において、マスタ１−１は、スレーブ３−３に３２ビットのアクセスを要求するために、アドレス信号ＡＤ１にスレーブ３−３のアドレスｓ３を出力し、データサイズ信号ＤＳＩＺＥ１に「３２ｂｉｔ」を出力し、バス要求信号ＢＲＥＱ１をアサートにする。
【００８６】
バス制御部５は、マスタ１−１を最優先マスタとしてバス要求を受け付けて、マスタ１−１に対する要求受付信号ＡＣＫ１をアサートにする。バス制御部５は、マスタ１−１およびスレーブ３−３にクロスババスＢ１を割当て、マスタ１−１のバス選択信号ＢＳ１のクロスババスＢ１を示す０ビットのみをアサートにし、クロスババスＢ２〜Ｂ４を示す１〜３ビットをネゲートにする。バス制御部５は、スレーブ３−３のバス選択信号ＢＳＳ３のクロスババスＢ１を示す０ビットのみをアサートにし、クロスババスＢ２〜Ｂ４を示す１〜３ビットと選択されていないスレーブ３−２〜３−４のバス選択信号ＢＳＳ２〜ＢＳＳ４の各ビットとをネゲートにする。
【００８７】
一方、スレーブ３−１は、サイクルＴ４におけるデータ転送の要求を受けて、クロスババスＢ１〜Ｂ４にデータ「Ｄ１」を出力し、マスタ１−１は終了信号ＥＮＤ１がアサートになると、クロスババスＢ１〜Ｂ４からデータ「Ｄ１」を読み込む。
【００８８】
サイクルＴ６において、マスタ１−１は、スレーブ３−４に１２８ビットのアクセスを要求するために、アドレス信号ＡＤ１にスレーブ３−４のアドレスｓ４を出力し、データサイズ信号ＤＳＩＺＥ１に「１２８ｂｉｔ」を出力し、バス要求信号ＢＲＥＱ１をアサートにする。
【００８９】
バス制御部５は、マスタ１−１を最優先マスタとしてバス要求を受け付けて、マスタ１−１に対する要求受付信号ＡＣＫ１をアサートにする。バス制御部５は、マスタ１−１およびスレーブ３−４にクロスババスＢ１〜Ｂ４を割当て、マスタ１−１のバス選択信号ＢＳ１の各ビットをアサートにし、スレーブ３−４のバス選択信号ＢＳＳ４の各ビットをアサートにし、選択されていないスレーブ３−１〜３−３のバス選択信号ＢＳＳ１〜ＢＳＳ３の各ビットをネゲートにする。
【００９０】
一方、スレーブ３−３は、サイクルＴ５におけるデータ転送の要求を受けて、クロスババスＢ１にデータ「Ｄ３」を出力し、マスタ１−１は終了信号ＥＮＤ１がアサートになるとクロスババスＢ１のデータ「Ｄ３」を読み込む。
【００９１】
サイクルＴ７において、サイクルＴ６で要求したバス要求のデータ転送が受け付けられており、新たなアクセス要求が無いのでバス要求信号ＢＲＥＱ１をネゲートにする。バス制御部５は、受け付けるべきバス要求が無いので、マスタ１−１〜１−４の要求受付信号ＡＣＫ１〜ＡＣＫ４をネゲート（この場合は“Ｌ”）にする。
【００９２】
スレーブ３−４は、サイクルＴ６におけるデータ転送の要求を受けて、クロスババスＢ１〜Ｂ４にデータ「Ｄ４」を出力し、マスタ１−１は終了信号ＥＮＤ１がアサートになるとクロスババスＢ１〜Ｂ４からデータ「Ｄ４」を読み込む。
【００９３】
つぎに、図１２のタイミングチャートを参照して、マスタ１−１とマスタ１−２とが同じサイクルにバス要求を行った場合のデータ処理装置の動作を説明する。なお、マスタ１−３，１−４のバス要求信号ＢＲＥＱ３，ＢＲＥＱ４はネゲートになっているものとする。
【００９４】
サイクルＴ１において、マスタ１−１は、アドレス信号ＡＤ１にスレーブ３−１のアドレスｓ１を出力し、データサイズ信号ＤＳＩＺＥ１に「１２８ｂｉｔ」を出力し、バス要求信号ＢＲＥＱ１をアサートにして、スレーブ３−１に１２８ビットでアクセスするバス要求を行なう。マスタ１−２は、アドレス信号ＤＡ２にスレーブ３−２のアドレスｓ２を出力し、データサイズ信号ＤＳＩＺＥ２に「１２８ｂｉｔ」を出力し、バス要求信号ＢＲＥＱ２をアサートにして、スレーブ３−２に１２８ビットでアクセスするバス要求を行なう。
【００９５】
バス制御部５は、マスタ１−１とマスタ１−２とがバス要求を行なっているので、優先順位を決定する。ここでは、マスタ１−１が優先順位１位の最優先マスタとして選択され、マスタ１−２が優先順位２位となる。最優先マスタであるマスタ１−１が最大サイズである１２８ビットのデータ転送を要求しているので、バス制御部５は、マスタ１−１のバス要求のみを受け付けて、マスタ１−１に対する要求受付信号ＡＣＫ１をアサートにして、マスタ１−２に対する要求受付信号ＡＣＫ２をネゲートにする。
【００９６】
バス制御部５は、マスタ１−１およびスレーブ３−１にクロスババスＢ１〜Ｂ４を割当てて、マスタ１−１のバス選択信号ＢＳ１の各ビットおよびスレーブ３−１のバス選択信号ＢＳＳ１の各ビットをアサートにし、バス要求を受け付けていないマスタ１−２のバス選択信号ＢＳ２および選択されていないスレーブ３−２〜３−４のバス選択信号ＢＳＳ２〜ＢＳＳ４の各ビットをネゲートにする。
【００９７】
マスタ１−１は、サイクルＴ１で要求したバス要求が受け付けられて全データの転送要求が終了する。サイクルＴ２においては、つぎの３２ビットのアクセスを要求するために、アドレス信号ＡＤ１にスレーブ３−３のアドレスｓ３を出力し、データサイズ信号ＤＳＩＺＥ１に「３２ｂｉｔ」を出力してバス要求信号ＢＲＥＱ１をアサートにする。
【００９８】
マスタ１−２は、サイクルＴ１で要求したバス要求が受け付けられていないのでスレーブ３−２に１２８ビットでアクセスするバス要求を継続する。
【００９９】
バス制御部５は、マスタ１−１とマスタ１−２との優先順位を決定する。一つ前のサイクルＴ１で最優先マスタとしてマスタ１−１を選択したので、バス制御部５は、このサイクルでは優先制御によってマスタ１−２を最優先マスタとして選択し、マスタ１−２を優先順位２位とする。マスタ１−２が１２８ビットのデータ転送を要求しているので、バス制御部５は、マスタ１−２のバス要求のみを受け付けて、マスタ１−２に対する要求受付信号ＡＣＫ２をアサートにして、マスタ１−１に対する要求受付信号ＡＣＫ１をネゲートにする。
【０１００】
バス制御部５は、マスタ１−２およびスレーブ３−２にクロスババスＢ１〜Ｂ４を割当てて、マスタ１−２のバス選択信号ＢＳ１およびスレーブ３−２のバス選択信号ＢＳＳ２の各ビットをアサートにし、マスタ１−１のバス選択信号ＢＳ１およびスレーブ３−１，３−３，３−４のバス選択信号ＢＳＳ１，ＢＳＳ３，ＢＳＳ４の各ビットをネゲートにする。
【０１０１】
一方、スレーブ３−１は、サイクルＴ１におけるデータ転送の要求を受けて、クロスババスＢ１〜Ｂ４にデータ「Ｄ１」を出力する。スレーブ３−１がクロスババスＢ１〜Ｂ４にデータ「Ｄ１」を出力したことを通知するスレーブ終了信号ＳＥＮＤ１を受けてバス制御部５が出力する終了信号ＥＮＤ１がアサートになると、マスタ１−１は、クロスババスＢ１〜Ｂ４のデータ「Ｄ１」を読み込む。
【０１０２】
サイクルＴ３において、マスタ１−１は、サイクルＴ２で要求したバス要求が受け付けられていないのでスレーブ３−３に３２ビットでアクセスするバス要求を継続する。マスタ１−２は、サイクルＴ２で要求したバス要求のデータ転送が受け付けられて全データの転送要求が終了する。マスタ１−１−２は、スレーブ３−２に３２ビットのアクセスを要求するために、アドレス信号ＡＤ２にスレーブ３−２のアドレスｓ２を出力し、データサイズ信号ＤＳＩＺＥ２に「３２ｂｉｔ」を出力して、バス要求信号ＢＲＥＱ２をアサートにする。
【０１０３】
１つ前のサイクルで最優先マスタとしてマスタ１−２を選択したので、バス制御部５は、マスタ１−１を優先マスタとして選択し、マスタ１−２を優先順位２位とする。マスタ１−１はスレーブ３−３に３２ビットのアクセスを要求しており、マスタ１−２はスレーブ３−２に３２ビットのアクセスを要求している。マスタ１−１とマスタ１−２とのデータサイズの合計は６２ビットであり、かつアクセスするスレーブが異なっているので、バス制御部５は、マスタ１−１とマスタ１−２の両マスタのバス要求を受け付けて、マスタ１−１，１−２に対する要求受付信号ＡＣＫ１，２をアサートにする。
【０１０４】
バス制御部５は、マスタ１−１およびスレーブ３−３にクロスババスＢ１を割当てて、マスタ１−１のバス選択信号ＢＳ１およびスレーブ３−３のバス選択信号ＢＳＳ３のクロスババスＢ１を示す０ビットをアサートにし、１〜３ビットをネゲートにする。バス制御部５は、マスタ１−２およびスレーブ３−２にクロスババスＢ２を割当てて、マスタ１−２のバス選択信号ＢＳ２およびスレーブ３−２のバス選択信号ＢＳＳ２のクロスババスＢ２を示す１ビットをアサートにし、０，２，３ビットをネゲートにする。また、バス制御部５は、選択されなかったスレーブ３−１，３−４のバス選択信号ＢＳＳ１，ＢＳＳ４の各ビットをネゲートにする。
【０１０５】
一方、スレーブ３−２は、サイクルＴ２におけるデータ転送の要求を受けて、クロスババスＢ１〜Ｂ４にデータ「Ｄ２」を出力する。スレーブ３−２がクロスババスＢ１〜Ｂ４にデータ「Ｄ２」を出力したことを通知するスレーブ終了信号ＳＥＮＤ２を受けてバス制御部５が出力する終了信号ＥＮＤ２がアサートになると、マスタ１−２は、クロスババスＢ１〜Ｂ４のデータ「Ｄ２」を読み込む。
【０１０６】
サイクルＴ４において、マスタ１−１，１−２は、サイクルＴ３で要求したバス要求のデータ転送が受け付けられており、新たなアクセス要求が無いのでバス要求信号ＢＲＥＱ１，２をネゲートにする。バス制御部５は、受け付けるべきバス要求が無いので、マスタ１−１〜１−４の要求受付信号ＡＣＫ１〜ＡＣＫ４をネゲートにする。
【０１０７】
スレーブ３−２は、サイクルＴ３におけるデータ転送の要求を受けて、クロスババスＢ２にデータ「Ｄ２」を出力する。スレーブ３−３は、サイクルＴ３におけるデータ転送の要求を受けて、クロスババスＢ１にデータ「Ｄ３」を出力する。
【０１０８】
スレーブ３−２がクロスババスＢ２にデータ「Ｄ２」を出力したことを通知するスレーブ終了信号ＳＥＮＤ２を受けてバス制御部５が出力する終了信号ＥＮＤ２がアサートになると、マスタ１−２は、クロスババスＢ２のデータ「Ｄ２」を読み込む。スレーブ３−３がクロスババスＢ１にデータ「Ｄ３」を出力したことを通知するスレーブ終了信号ＳＥＮＤ３をうけてバス制御部５が出力する終了信号ＥＮＤ１がアサートになると、マスタ１−１は、クロスババスＢ１のデータ「Ｄ１」を読み込む。
【０１０９】
サイクルＴ６において、バス制御部５は、スレーブ３−２に１２８ビットのアクセスを要求するマスタ１−２のバス要求を受け付けてクロスババスＢ１〜Ｂ４を割当てて、要求受付信号ＡＣＫ２およびバス選択信号ＢＳ２，ＢＳＳ２の各ビットをアサートにし、その他の信号をネゲートにする。
【０１１０】
サイクルＴ７において、バス制御部５は、スレーブ３−１に３２ビットのアクセスを要求するマスタ１−１のバス要求と、スレーブ３−４に３２ビットのアクセスを要求するマスタ１−２のバス要求とを受け付けて、要求受付信号ＡＣＫ１，ＡＣＫ２をアサートにする。
【０１１１】
バス制御部５は、マスタ１−１およびスレーブ３−１にクロスババスＢ１を割当て、マスタ１−２およびスレーブ３−４にクロスババスＢ２を割当てる。バス制御部５は、バス選択信号ＢＳ１，ＢＳＳ１の０ビット目と、バス選択信号ＢＳ２，ＢＳＳ４の１ビット目とをアサートにし、バス選択信号ＢＳ１，ＢＳＳ１の１〜３ビットとバス選択信号ＢＳ２，ＢＳＳ４の０，２，３ビットをネゲートにする。また、バス制御部５は、選択されなかったスレーブ３−２，３−３のバス選択信号ＢＳＳ２，３の各ビットをネゲートにする。
【０１１２】
サイクルＴ８において、スレーブ３−１は、サイクルＴ７におけるデータ転送の要求を受けて、クロスババスＢ１にデータ「Ｄ１」を出力する。スレーブ３−４は、サイクルＴ７におけるデータ転送の要求を受けて、クロスババスＢ２にデータ「Ｄ４」を出力する。
【０１１３】
スレーブ３−１がクロスババスＢ１にデータ「Ｄ１」を出力したことを通知するスレーブ終了信号ＳＥＮＤ１を受けてバス制御部５が出力する終了信号ＥＮＤ１がアサートになると、マスタ１−１は、クロスババスＢ１のデータ「Ｄ１」を読み込む。スレーブ３−４がクロスババスＢ２にデータ「Ｄ４」を出力したことを通知するスレーブ終了信号ＳＥＮＤ４をうけてバス制御部５が出力する終了信号ＥＮＤ２がアサートになると、マスタ１−２は、クロスババスＢ２のデータ「Ｄ４」を読み込む。
【０１１４】
このようにこの実施の形態１では、バス制御部５が、バス要求を行なっているマスタ１−１〜１−４の優先順位を決定し、優先順位の高いマスタ１−１〜１−４から順に、要求されたデータサイズのデータ転送ができるようにクロスババスＢ１〜Ｂ４を割当てるようにしているので、要求したデータサイズのデータを複数サイクルに分けることなく、１サイクルでデータを転送することができる。
【０１１５】
実施の形態２．
図１３〜図１５を参照して、この発明の実施の形態２を説明する。実施の形態１では、複数のマスタからバス要求を受けた場合、最優先マスタの要求を受け付けた後に、クロスババスＢ１〜Ｂ４に空きがあって、かつアクセスするスレーブが異なっていれば優先順位に従って複数のマスタのバス要求を受け付けるようにした。すなわち、要求されたデータを１サイクルで転送するようにした。この実施の形態２では、複数のマスタからのアクセス要求があった場合、アクセスするスレーブが異なっていれば、クロスババスを１つずつ割当ててデータを分割して転送（複数サイクルで転送）し、複数のマスタからのバス要求を直ちに受け付けるものである。
【０１１６】
この発明にかかる実施の形態２のデータ処理装置は、図１に示した実施の形態１のデータ処理装置と同じであるのでここではその説明を省略する。
【０１１７】
つぎに、この発明にかかる実施の形態２のデータ処理装置の動作を説明する。マスタ１−１〜１−４およびスレーブ３−１〜３−４の動作は、実施の形態１と同じであるのでここではその説明を省略する。
【０１１８】
この実施の形態２のバス制御部５の動作は、図７のフローチャートを用いて実施の形態１で説明したように、バス要求を受け付ける優先順位を決定した後に、マスタ選択処理によってバス要求を受け付けるマスタ１−１〜１−４を選択して、バス割当処理によって選択したマスタ１−１〜１−４にクロスババスＢ１〜Ｂ４を割当て、スレーブ選択処理によって選択したマスタ１−１〜１−４がアクセスするスレーブ３−１〜３−４にクロスババスＢ１〜Ｂ４を割当てる（ステップＳ１０〜Ｓ４０）ものであるが、マスタ選択処理（ステップＳ２０）およびバス割当処理（ステップＳ３０）の詳細が実施の形態１とは異なる。
【０１１９】
まず、図１３のフローチャートを参照して、この発明にかかる実施の形態２のバス制御部５のマスタ選択処理の動作を詳細に説明する。マスタ選択部５３は、最優先検出部５２から入力される優先順位の中で優先順位１位の最優先マスタのバス要求を受け付ける（ステップＳ５００）。マスタ選択部５３は、最優先マスタに対する要求受付信号をアサートにして、バス要求を受け付けたことを最優先マスタ、優先制御部５１、および終了信号生成部５５に通知する。
【０１２０】
マスタ選択部５３は、最優先マスタ以外のマスタ１−１〜１−４からのバス要求があるか（優先順位２位以下のマスタがあるか）否かを判定する（ステップＳ５０１）。最優先マスタ以外のマスタ１−１〜１−４からのバス要求がない場合、マスタ選択部５３はマスタ選択処理を終了する。
【０１２１】
最優先マスタ以外のマスタ１−１〜１−４からのバス要求がある場合、すなわち最優先検出部５２から通知された優先順位に２〜４位のマスタがある場合、バス要求を受け付けていないマスタ１−１〜１−４の中で優先順位の高いマスタ１−１〜１−４（選択対象マスタ）がアクセスを要求しているスレーブ３−１〜３−４とバス要求を受け付けたマスタ１−１〜１−４がアクセスを要求しているスレーブ３−１〜３−４とで衝突がないか否かを判定する（ステップＳ５０２）。
【０１２２】
選択対象マスタがアクセスを要求しているスレーブ３−１〜３−４とバス要求を受け付けたマスタ１−１〜１−４がアクセスを要求しているスレーブ３−１〜３−４とで衝突がない場合、マスタ選択部５３は、選択対象マスタの要求受付信号をアサートにして、バス要求を受け付けたことを選択対象マスタ、優先制御部５１、および終了信号生成部５５に通知する（ステップＳ５０３）。
【０１２３】
マスタ選択部５３は、優先順位が定められた（バス要求を行なっている）マスタ１−１〜１−４を選択対象マスタとして、選択対象マスタがアクセスを要求しているスレーブ３−１〜３−４がバス要求を受け付けたマスタ１−１〜１−４がアクセスを要求しているスレーブ３−１〜３−４と衝突しているか否かを判定して、バス要求を受け付けるマスタ１−１〜１−４を選択する処理を繰り返す（ステップＳ５０２〜Ｓ５０４）。マスタ選択部５３は、バス要求を行なっている全てのマスタ１−１〜１−４に対してバス要求を受け付けるか否かの判定を行なってバス要求を受け付けるマスタ１−１〜１−４を選択して、マスタ選択処理を終了する。
【０１２４】
つぎに、図１４のフローチャートを参照して、この実施の形態２のバス制御部５のバス割当処理の動作を詳細に説明する。バス要求を受け付けたマスタが１つで、かつ当該マスタが要求するデータサイズが最大サイズ（この場合は１２８ビット）であるか否かを判定する（ステップＳ６００）。バス要求を受け付けたマスタが１つで、かつ当該マスタが要求するデータサイズが最大サイズの場合、マスタ選択部５３は、全てのクロスババスＢ１〜Ｂ４をバス要求を受け付けたマスタに割当てる（ステップＳ６０１）。
【０１２５】
マスタ選択部５３は、バス要求を受け付けたマスタ１−１〜１−４に対するバス選択信号ＢＳ１〜ＢＳ４の全てのビットをアサートにして、クロスババスＢ１〜Ｂ４を割当てたことをバス要求を受け付けたマスタ１−１〜１−４と、終了信号生成部５５とに通知してバス割当処理を終了する。
【０１２６】
バス要求を受け付けたマスタが１つで、かつ当該マスタが要求するデータサイズが最大サイズではない場合、または複数のマスタのバス要求を受け付けている場合、マスタ選択部５３は、バス要求を受け付けたマスタ１−１〜１−４にクロスババスＢ１〜Ｂ４の１つを割当てる（図８のステップＳ４０２，Ｓ４０３）。すなわち、マスタ選択部５３は、バス要求を行なっているマスタ１−１〜１−４の要求するデータサイズに依存することなく、バス要求を行なっているマスタ１−１〜１−４に３２ビットのデータ転送ができるようにクロスババスＢ１〜Ｂ４を１つずつ割当てる。
【０１２７】
マスタ選択部５３は、バス要求を受け付けたマスタ１−１〜１−４に対するバス選択信号ＢＳ１〜ＢＳ４のビットのうち割当てたクロスババスＢ１〜Ｂ４を示すビットをアサートにして、割当てたクロスババスＢ１〜Ｂ４をバス要求を受け付けたマスタ１−１〜１−４と、終了信号生成部５５とに通知してバス割当処理を終了する。
【０１２８】
この実施の形態２のバス制御部５のスレーブ選択処理は、図９のフローチャートを参照して実施の形態１で説明したスレーブ選択処理と同じであるので、ここではその説明を省略する。
【０１２９】
つぎに、図１５のタイミングチャートを参照して、この発明にかかる実施の形態２のデータ処理装置の動作を説明する。サイクルＴ１において、マスタ１−１は、アドレス信号ＡＤ１にスレーブ３−１のアドレスｓ１を出力し、データサイズ信号ＤＳＩＺＥ１に「１２８ｂｉｔ」を出力し、バス要求信号ＢＲＥＱ１をアサートにして、スレーブ３−１に１２８ビットでアクセスするバス要求を行なう。マスタ１−２〜１−４は、バス要求を行なわないのでバス要求信号ＢＲＥＱ２〜ＢＲＥＱ４はネゲートにする。
【０１３０】
バス制御部５は、マスタ１−１のみがバス要求を行なっているので、マスタ１−１のバス要求を受け付けて、要求受付信号ＡＣＫ１をアサートにする。バス制御部５は、マスタ１−１およびスレーブ３−１にクロスババスＢ１〜Ｂ４を割当てる。バス制御部５は、バス選択信号ＢＳ１，ＢＳＳ１の各ビットをアサートにし、バス選択信号ＢＳ２〜ＢＳ４，ＢＳＳ２〜ＢＳＳ４の各ビットをネゲートにする。
【０１３１】
サイクルＴ２において、マスタ１−１は、アドレス信号ＡＤ１にスレーブ３−３のアドレスｓ３を出力し、データサイズ信号ＤＳＩＺＥ１に「１２８ビット」を出力し、バス要求信号ＢＲＥＱ１をアサートにして、スレーブ３−３に１２８ビットでアクセスするバス要求を行なう。
【０１３２】
マスタ１−２は、アドレス信号ＡＤ２にスレーブ３−２のアドレスｓ２を出力し、データサイズ信号ＤＳＩＺＥ２に「１２８ビット」を出力し、バス要求信号ＢＲＥＱ２をアサートにして、スレーブ３−２に１２８ビットでアクセスするバス要求を行なう。
【０１３３】
マスタ１−３は、アドレス信号ＡＤ３にスレーブ３−１のアドレスｓ１を出力し、データサイズ信号ＤＳＩＺＥ３に「３２ビット」を出力し、バス要求信号ＢＲＥＱ３をアサートにして、スレーブ３−１に３２ビットでアクセスするバス要求を行なう。
【０１３４】
マスタ１−４は、アドレス信号ＡＤ４にスレーブ３−４のアドレスｓ４を出力し、データサイズ信号ＤＳＩＺＥ４に「３２ビット」を出力し、バス要求信号ＢＲＥＱ４をアサートにして、スレーブ３−４に３２ビットでアクセスするバス要求を行なう。
【０１３５】
バス制御部５は、マスタ１−１〜１−４がアクセスを要求しているスレーブが全て異なるので、マスタ１−１〜１−４のバス要求を全て受け付けて、要求受付信号ＡＣＫ１〜ＡＣＫ４をアサートにする。バス制御部５は、マスタ１−１およびスレーブ３−３にクロスババスＢ１を割当て、マスタ１−２およびスレーブ３−２にクロスババスＢ２を割当て、マスタ１−３およびスレーブ３−１にクロスババスＢ３を割当て、マスタ１−４およびスレーブ３−４にクロスババスＢ４を割当てる。バス制御部５は、バス選択信号ＢＳ１〜ＢＳ４，ＢＳＳ１〜ＢＳＳ４のビットのうち割当てたクロスババスＢ１〜Ｂ４を示すビットのみをアサートにする。
【０１３６】
一方、スレーブ３−１は、サイクルＴ１におけるデータ転送の要求を受けて、クロスババスＢ１〜Ｂ４にデータ「Ｄ１」を出力する。スレーブ３−１がクロスババスＢ１〜Ｂ４にデータ「Ｄ１」を出力したことを通知するスレーブ終了信号ＳＥＮＤ１を受けてバス制御部５が出力する終了信号ＥＮＤ１がアサートになると、マスタ１−１は、クロスババスＢ１〜Ｂ４のデータ「Ｄ１」を読み込む。
【０１３７】
サイクルＴ３において、マスタ１−１は、バス選択信号ＢＳ１によってサイクルＴ２において自装置にクロスババスＢ１が割当てられたことを認識しており、自装置が要求したデータの一部しか転送されないことを認識して、未転送のデータのアドレスｓ３ａをアドレス信号ＡＤ１に出力し、未転送のデータのビット数（この場合は、９６ｂｉｔ）をデータサイズ信号ＤＳＩＺＥ１に出力して、バス要求信号ＢＲＥＱ１をアサートにしてバス要求を更新する。
【０１３８】
マスタ１−２も、マスタ１−１と同様にバス選択信号ＢＳ２によってサイクルＴ２において自装置にクロスババスＢ２が割当てられたことから自装置が要求したデータの一部しか転送されないことを認識する。マスタ１−２は、未転送のデータのアドレスｓ２ａをアドレス信号ＡＤ２に出力し、未転送のデータのビット数（この場合は、９６ｂｉｔ）をデータサイズ信号ＤＳＩＺＥ２に出力して、バス要求信号ＢＲＥＱ２をアサートにしてバス要求を更新する。
【０１３９】
マスタ１−３は、バス要求を行なわないのでバス要求信号ＢＲＥＱ３をネゲートにし、マスタ１−４は、アドレス信号ＡＤ４にスレーブ３−４のアドレスｓ４を出力し、データサイズ信号ＤＳＩＺＥ４に「３２ビット」を出力し、バス要求信号ＢＲＥＱ４をアサートにして、スレーブ３−４に３２ビットでアクセスするバス要求を行なう。
【０１４０】
バス制御部５は、マスタ１−１，１−２，１−４がアクセスを要求しているスレーブが全て異なるので、マスタ１−１，１−２，１−４のバス要求を受け付けて、要求受付信号ＡＣＫ１，ＡＣＫ２，ＡＣＫ４をアサートにする。バス制御部５は、マスタ１−１およびスレーブ３−３にクロスババスＢ１を割当て、マスタ１−２およびスレーブ３−２にクロスババスＢ２を割当てて、マスタ１−４およびスレーブ３−４にクロスババスＢ４を割当てる。バス制御部５は、バス選択信号ＢＳ１〜ＢＳ４，ＢＳＳ１〜ＢＳＳ４のビットのうち割当てたクロスババスＢ１〜Ｂ４を示すビットのみをアサートにする。
【０１４１】
一方、サイクルＴ２におけるデータ転送の要求を受けて、スレーブ３−１はクロスババスＢ３にデータ「Ｄ１」を出力し、スレーブ３−２はクロスババスＢ２にデータ「Ｄ２」を出力し、スレーブ３−３はクロスババスＢ１にデータ「Ｄ３」を出力し、スレーブ３−４はクロスババスＢ４にデータ「Ｄ４」を出力する。
【０１４２】
マスタ１−１〜１−４は、終了信号ＥＮＤ１〜ＥＮＤ４がアサートになると、それぞれに割当てられたクロスババスＢ１〜Ｂ４のデータを読み込む。ここでは、マスタ１−１はクロスババスＢ１のデータを読み込み、マスタ１−２はクロスババスＢ２のデータを読み込み、マスタ１−３はクロスババスＢ３のデータを読み込み、マスタ１−４はクロスババスＢ４のデータを読み込む。
【０１４３】
サイクルＴ４において、マスタ１−１は自装置が要求したデータの一部しか転送されないことを認識して、未転送のデータのアドレスｓ３ｂをアドレス信号ＡＤ１に出力し、未転送のデータのビット数（この場合は、６４ｂｉｔ）をデータサイズ信号ＤＳＩＺＥ１に出力して、バス要求信号ＢＲＥＱ１をアサートにしてバス要求を更新する。
【０１４４】
マスタ１−２は自装置が要求したデータの一部しか転送されないことを認識して、未転送のデータのアドレスｓ２ｂをアドレス信号ＡＤ２に出力し、未転送のデータのビット数（この場合は、６４ｂｉｔ）をデータサイズ信号ＤＳＩＺＥ２に出力して、バス要求信号ＢＲＥＱ２をアサートにしてバス要求を更新する。
【０１４５】
マスタ１−３は、アドレス信号ＡＤ３にスレーブ３−１のアドレスｓ１を出力し、データサイズ信号ＤＳＩＺＥ３に「３２ビット」を出力し、バス要求信号ＢＲＥＱ３をアサートにして、スレーブ３−１に３２ビットでアクセスするバス要求を行なう。マスタ１−４は、バス要求を行なわないのでバス要求信号ＢＲＥＱ４をネゲートにする。
【０１４６】
バス制御部５は、マスタ１−１〜１−３がアクセスを要求しているスレーブが全て異なるので、マスタ１−１〜１−３のバス要求を全て受け付けて、要求受付信号ＡＣＫ１〜ＡＣＫ３をアサートにする。バス制御部５は、マスタ１−１およびスレーブ３−３にクロスババスＢ１を割当て、マスタ１−２およびスレーブ３−２にクロスババスＢ２を割当て、マスタ１−３およびスレーブ３−１にクロスババスＢ３を割当てる。バス制御部５は、バス選択信号ＢＳ１〜ＢＳ４，ＢＳＳ１〜ＢＳＳ４のビットのうち割当てたクロスババスＢ１〜Ｂ４を示すビットのみをアサートにする。
【０１４７】
一方、サイクルＴ３におけるデータ転送の要求を受けて、スレーブ３−２はクロスババスＢ２にデータ「Ｄ２」を出力し、スレーブ３−３はクロスババスＢ１にデータ「Ｄ３」を出力し、スレーブ３−４はクロスババスＢ４にデータ「Ｄ４」を出力する。
【０１４８】
マスタ１−１，１−２，１−４は、終了信号ＥＮＤ１、ＥＮＤ２，ＥＮＤ４がアサートになると、それぞれに割当てられたクロスババスＢ１，Ｂ２，Ｂ４のデータを読み込む。ここでは、マスタ１−１はクロスババスＢ１のデータを読み込み、マスタ１−２はクロスババスＢ２のデータを読み込み、マスタ１−４はクロスババスＢ４のデータを読み込む。
【０１４９】
サイクルＴ５において、マスタ１−１は自装置が要求したデータの一部しか転送されないことを認識して、未転送のデータのアドレスｓ３ｃをアドレス信号ＡＤ１に出力し、未転送のデータのビット数（この場合は、３２ｂｉｔ）をデータサイズ信号ＤＳＩＺＥ１に出力して、バス要求信号ＢＲＥＱ１をアサートにしてバス要求を更新する。
【０１５０】
マスタ１−２は自装置が要求したデータの一部しか転送されないことを認識して、未転送のデータのアドレスｓ２ｃをアドレス信号ＡＤ２に出力し、未転送のデータのビット数（この場合は、３２ｂｉｔ）をデータサイズ信号ＤＳＩＺＥ２に出力して、バス要求信号ＢＲＥＱ２をアサートにしてバス要求を更新する。
【０１５１】
マスタ１−３，１−４は、バス要求を行なわないのでバス要求信号ＢＲＥＱ１をネゲートにする。
【０１５２】
バス制御部５は、マスタ１−１，１−２がアクセスを要求しているスレーブが異なるので、マスタ１−１，１−２のバス要求を受け付けて、要求受付信号ＡＣＫ１，ＡＣＫ２をアサートにする。バス制御部５は、マスタ１−１およびスレーブ３−３にクロスババスＢ１を割当て、マスタ１−２およびスレーブ３−２にクロスババスＢ２を割当てる。バス制御部５は、バス選択信号ＢＳ１〜ＢＳ４，ＢＳＳ１〜ＢＳＳ４のビットのうち割当てたクロスババスＢ１〜Ｂ４を示すビットのみをアサートにする。
【０１５３】
一方、サイクルＴ４におけるデータ転送の要求を受けて、スレーブ３−１はクロスババスＢ３にデータ「Ｄ１」を出力し、スレーブ３−２はクロスババスＢ２にデータ「Ｄ２」を出力し、スレーブ３−３はクロスババスＢ１にデータ「Ｄ３」を出力する。
【０１５４】
マスタ１−１〜１−３は、終了信号ＥＮＤ１〜ＥＮＤ３がアサートになると、それぞれに割当てられたクロスババスＢ１〜Ｂ３のデータを読み込む。ここでは、マスタ１−１はクロスババスＢ１のデータを読み込み、マスタ１−２はクロスババスＢ２のデータを読み込み、マスタ１−３はクロスババスＢ３のデータを読み込む。
【０１５５】
サイクルＴ６において、マスタ１−１，１−２は、サイクルＴ５で要求したバス要求のデータ転送が受け付けられており、新たなアクセス要求が無いのでバス要求信号ＢＲＥＱ１，２をネゲートにする。バス制御部５は、受け付けるべきバス要求が無いので、マスタ１−１〜１−４の要求受付信号ＡＣＫ１〜ＡＣＫ４をネゲートにする。
【０１５６】
一方、サイクルＴ５におけるデータ転送の要求を受けて、スレーブ３−２はクロスババスＢ２にデータ「Ｄ２」を出力し、スレーブ３−３はクロスババスＢ１にデータ「Ｄ３」を出力する。
【０１５７】
マスタ１−１，１−２は、終了信号ＥＮＤ１，ＥＮＤ２がアサートになると、それぞれに割当てられたクロスババスＢ１，Ｂ２のデータを読み込む。ここでは、マスタ１−１はクロスババスＢ１のデータを読み込み、マスタ１−２はクロスババスＢ２のデータを読み込む。
【０１５８】
このようにこの実施の形態２では、バス制御部５が、バス要求を行なっているマスタ１−１〜１−４の優先順位を決定し、複数のマスタ１−１〜１−４からバス要求がある場合には、バス要求を行なっているマスタ１−１〜１−４がデータ転送を要求しているスレーブ３−１〜３−４が異なっているか否かを判定し、異なっているスレーブ３−１〜３−４にアクセスを要求している全てのマスタ１−１〜１−４に対して、予め定められた割当ての最小単位のクロスババスＢ１〜Ｂ４を割当てるようにしているので、複数のマスタ１−１〜１−４がバス要求を行った場合でも、バス要求をホールドすることなく複数サイクルで各マスタにデータを転送することができる。
【０１５９】
実施の形態３．
図１６〜図１７を参照して、この発明の実施の形態３を説明する。実施の形態２では、複数のマスタからのアクセス要求があった場合、アクセスするスレーブが異なっていれば、クロスババスを１つずつ割当てた。しかしながら、クロスババスを１つずつ割当てるようにしているため、クロスババスの数よりも少ない数の複数のマスタからバス要求があった場合、クロスババスに空きができてしまい無駄になってしまうという問題があった。
【０１６０】
このような問題を改善するために、この実施の形態３では、複数のマスタからのアクセス要求があった場合、アクセスするスレーブが異なっていれば、バス要求を行なっているマスタに全てのクロスババスを割当てるものである。
【０１６１】
この発明にかかる実施の形態３のデータ処理装置は、図１に示した実施の形態１のデータ処理装置と同じであるのでここではその説明を省略する。
【０１６２】
つぎに、この発明にかかる実施の形態３のデータ処理装置の動作を説明する。マスタ１−１〜１−４およびスレーブ３−１〜３−４の動作は、実施の形態１と同じであるのでここではその説明を省略する。
【０１６３】
この実施の形態３のバス制御部５の動作は、図７のフローチャートを用いて実施の形態１で説明したように、バス要求を受け付ける優先順位を決定した後に、マスタ選択処理によってバス要求を受け付けるマスタ１−１〜１−４を選択して、バス割当処理によって選択したマスタ１−１〜１−４にクロスババスＢ１〜Ｂ４を割当て、スレーブ選択処理によって選択したマスタ１−１〜１−４がアクセスするスレーブ３−１〜３−４にクロスババスＢ１〜Ｂ４を割当てる（ステップＳ１０〜Ｓ４０）ものである。
【０１６４】
マスタ選択処理（ステップＳ２０）は、図１３のフローチャートを参照して実施の形態２で説明した動作と同じ動作であり、スレーブ選択処理（ステップＳ４０）は、図９のフローチャートを参照して実施の形態１で説明した動作と同じ動作であるので、ここではその説明を省略する。
【０１６５】
図１６のフローチャートを参照して、この発明にかかる実施の形態３のバス制御部５のバス割当処理の動作を詳細に説明する。なお、マスタ選択部５３が、バス要求を受け付けたマスタが１つで、かつ当該マスタが要求するデータサイズが最大サイズの場合には、バス要求を受け付けたマスタに全てのクロスババスＢ１〜Ｂ４を割当て、バス要求を受け付けたマスタが１つで、かつ当該マスタが要求するデータサイズが最大サイズでない場合、または複数のマスタのバス要求を受け付けた場合に、バス要求を受け付けたマスタにクロスババスを１つずつ割当てるステップＳ７００〜Ｓ７０３は、図１４のフローチャートを参照して説明したバス割当処理のステップＳ６００〜Ｓ６０３と同じ動作であるので、詳細な説明は省略する。
【０１６６】
マスタ選択部５３は、バス要求を受け付けたマスタが１つで、かつ当該マスタが要求するデータサイズが最大サイズの場合には、バス要求を受け付けたマスタ１−１〜１−４に全てのクロスババスＢ１〜Ｂ４を割当て、バス要求を受け付けたマスタ１−１〜１−４に対するバス選択信号ＢＳ１〜ＢＳ４の全てのビットをアサートにして、クロスババスＢ１〜Ｂ４を割当てたことをバス要求を受け付けたマスタ１−１〜１−４と、終了信号生成部５５とに通知してバス割当処理を終了する（ステップＳ７００，Ｓ７０１）。
【０１６７】
マスタ選択部５３は、バス要求を受け付けたマスタが１つで、かつ当該マスタが要求するデータサイズが最大サイズでない場合、または複数のマスタのバス要求を受け付けた場合に、バス要求を受け付けたマスタにクロスババスを１つずつ割当てる（ステップＳ７００〜Ｓ７０３）。
【０１６８】
マスタ選択部５３は、未使用の（マスタ１−１〜１−４に割当てていない）クロスババスＢ１〜Ｂ４があるか否かを判定する（ステップＳ７０４）。未使用のクロスババスＢ１〜Ｂ４がない（全てのクロスババスＢ１〜Ｂ４を割当てた）と判定した場合、マスタ選択部５３は、バス要求を受け付けたマスタ１−１〜１−４に対するバス選択信号ＢＳ１〜ＢＳ４のビットのうち割当てたクロスババスＢ１〜Ｂ４を示すビットをアサートにして、割当てたクロスババスＢ１〜Ｂ４をバス要求を受け付けたマスタ１−１〜１−４と、終了信号生成部５５とに通知してバス割当処理を終了する。
【０１６９】
未使用のクロスババスＢ１〜Ｂ４がある（割当てていないクロスババスＢ１〜Ｂ４がある）と判定した場合、マスタ選択部５３は、バス要求を受け付けたマスタ１−１〜１−４の中で現在割当てたクロスババスＢ１〜Ｂ４では転送されないデータがあるか否かを判定する（ステップＳ７０５）。具体的には、バス要求のあったマスタ１−１〜１−４に割り当てたクロスババスＢ１〜Ｂ４のビット数が要求サイズより小さいか否かを判定する。
【０１７０】
転送されないデータがある場合、マスタ選択部５３は、転送されていないデータのあるマスタ１−１〜１−４に未使用のクロスババスＢ１〜Ｂ４を割当てて、バス要求を受け付けたマスタ１−１〜１−４に対するバス選択信号ＢＳ１〜ＢＳ４の割当てたクロスババスＢ１〜Ｂ４を示すビットをアサートにして、割当てたクロスババスＢ１〜Ｂ４をバス要求を受け付けたマスタ１−１〜１−４と、終了信号生成部５５とに通知してバス割当処理を終了する（ステップＳ７０６）。
【０１７１】
つぎに、図１７のタイミングチャートを参照して、この発明にかかる実施の形態３のデータ処理装置の動作を説明する。なお、図１７に示したタイミングチャートのサイクルＴ１，Ｔ２の動作は、実施の形態２で説明した図１５に示したタイミングチャートのサイクルＴ１，Ｔ２と同じ動作であるので、ここではその説明を省略する。
【０１７２】
サイクルＴ３において、マスタ１−１は、バス選択信号ＢＳ１によってサイクルＴ２において自装置にクロスババスＢ１が割当てられたことを認識しており、自装置が要求したデータの一部しか転送されないことを認識して、未転送のデータのアドレスｓ３ａをアドレス信号ＡＤ１に出力し、未転送のデータのビット数（この場合は、９６ｂｉｔ）をデータサイズ信号ＤＳＩＺＥ１に出力して、バス要求信号ＢＲＥＱ１をアサートにしてバス要求を更新する。
【０１７３】
マスタ１−２も、マスタ１−１と同様にバス選択信号ＢＳ２によってサイクルＴ２において自装置にクロスババスＢ２が割当てられたことから自装置が要求したデータの一部しか転送されないことを認識する。マスタ１−２は、未転送のデータのアドレスｓ２ａをアドレス信号ＡＤ２に出力し、未転送のデータのビット数（この場合は、９６ｂｉｔ）をデータサイズ信号ＤＳＩＺＥ２に出力して、バス要求信号ＢＲＥＱ２をアサートにしてバス要求を更新する。
【０１７４】
マスタ１−３は、バス要求を行なわないのでバス要求信号ＢＲＥＱ３をネゲートにし、マスタ１−４は、アドレス信号ＡＤ４にスレーブ３−４のアドレスｓ４を出力し、データサイズ信号ＤＳＩＺＥ４に「３２ビット」を出力し、バス要求信号ＢＲＥＱ４をアサートにして、スレーブ３−４に３２ビットでアクセスするバス要求を行なう。
【０１７５】
バス制御部５は、マスタ１−１，１−２，１−４がアクセスを要求しているスレーブが全て異なるので、マスタ１−１，１−２，１−４のバス要求を受け付けて、要求受付信号ＡＣＫ１，ＡＣＫ２，ＡＣＫ４をアサートにする。バス制御部５は、マスタ１−１にクロスババスＢ１を割当て、マスタ１−２にクロスババスＢ２を割当てて、マスタ１−４にクロスババスＢ４を割当てる。
【０１７６】
バス要求を行っているマスタ１−１，１−２，１−４に１つずつクロスババスを割り当てたが、クロスババスＢ３が未使用となっている。マスタ１−１，１−２は、９６ビットのデータ転送を要求しているので、バス制御部５は、優先順位の高いマスタ１−２に未使用のクロスババスＢ３を割り当てる。
【０１７７】
クロスババスＢ１〜Ｂ４をマスタ１−１，１−２，１−４に割り当てた後に、バス制御部５は、スレーブ３−２にクロスババスＢ２，Ｂ３を割当て、スレーブ３−３にクロスババスＢ１を割当て、スレーブ３−４にクロスババスＢ４を割当てる。バス制御部５は、バス選択信号ＢＳ１〜ＢＳ４，ＢＳＳ１〜ＢＳＳ４のビットのうち割当てたクロスババスＢ１〜Ｂ４を示すビットのみをアサートにする。
【０１７８】
一方、サイクルＴ２におけるデータ転送の要求を受けて、スレーブ３−１はクロスババスＢ３にデータ「Ｄ１」を出力し、スレーブ３−２はクロスババスＢ２にデータ「Ｄ２」を出力し、スレーブ３−３はクロスババスＢ１にデータ「Ｄ３」を出力し、スレーブ３−４はクロスババスＢ４にデータ「Ｄ４」を出力する。
【０１７９】
マスタ１−１〜１−４は、終了信号ＥＮＤ１〜ＥＮＤ４がアサートになると、それぞれに割当てられたクロスババスＢ１〜Ｂ４のデータを読み込む。ここでは、マスタ１−１はクロスババスＢ１のデータを読み込み、マスタ１−２はクロスババスＢ２のデータを読み込み、マスタ１−３はクロスババスＢ３のデータを読み込み、マスタ１−４はクロスババスＢ４のデータを読み込む。
【０１８０】
サイクルＴ４において、マスタ１−１は自装置が要求したデータの一部しか転送されないことを認識して、未転送のデータのアドレスｓ３ｂをアドレス信号ＡＤ１に出力し、未転送のデータのビット数（この場合は、６４ｂｉｔ）をデータサイズ信号ＤＳＩＺＥ１に出力して、バス要求信号ＢＲＥＱ１をアサートにしてバス要求を更新する。
【０１８１】
マスタ１−２は自装置が要求したデータの一部しか転送されないことを認識して、未転送のデータのアドレスｓ２ｃをアドレス信号ＡＤ２に出力し、未転送のデータのビット数（この場合は、３２ｂｉｔ）をデータサイズ信号ＤＳＩＺＥ２に出力して、バス要求信号ＢＲＥＱ２をアサートにしてバス要求を更新する。
【０１８２】
マスタ１−３は、アドレス信号ＡＤ３にスレーブ３−１のアドレスｓ１を出力し、データサイズ信号ＤＳＩＺＥ３に「３２ビット」を出力し、バス要求信号ＢＲＥＱ３をアサートにして、スレーブ３−１に３２ビットでアクセスするバス要求を行なう。マスタ１−４は、バス要求を行なわないのでバス要求信号ＢＲＥＱ４をネゲートにする。
【０１８３】
バス制御部５は、マスタ１−１〜１−３がアクセスを要求しているスレーブが全て異なるので、マスタ１−１〜１−３のバス要求を全て受け付けて、要求受付信号ＡＣＫ１〜ＡＣＫ３をアサートにする。バス制御部５は、マスタ１−１にクロスババスＢ１を割当て、マスタ１−２にクロスババスＢ２を割当て、マスタ１−３にクロスババスＢ３を割当てる。
【０１８４】
バス要求を行っているマスタ１−１〜１−３に１つずつクロスババスを割り当てたが、クロスババスＢ３が未使用となっている。マスタ１−１が６４ビットのデータ転送を要求しているので、バス制御部５は、マスタ１−１に未使用のクロスババスＢ４を割り当てる。
【０１８５】
クロスババスＢ１〜Ｂ４をマスタ１−１〜１−３に割り当てた後に、バス制御部５は、スレーブ３−１にクロスババスＢ３を割当て、スレーブ３−２にクロスババスＢ２を割当て、スレーブ３−３にクロスババスＢ１，Ｂ４を割当てる。バス制御部５は、バス選択信号ＢＳ１〜ＢＳ４，ＢＳＳ１〜ＢＳＳ４のビットのうち割当てたクロスババスＢ１〜Ｂ４を示すビットのみをアサートにする。
【０１８６】
一方、サイクルＴ３におけるデータ転送の要求を受けて、スレーブ３−２はクロスババスＢ２，Ｂ３にデータ「Ｄ２」を出力し、スレーブ３−３はクロスババスＢ１にデータ「Ｄ３」を出力し、スレーブ３−４はクロスババスＢ４にデータ「Ｄ４」を出力する。
【０１８７】
マスタ１−１，１−２，１−４は、終了信号ＥＮＤ１、ＥＮＤ２，ＥＮＤ４がアサートになると、それぞれに割当てられたクロスババスＢ１〜Ｂ４のデータを読み込む。ここでは、マスタ１−１はクロスババスＢ１のデータを読み込み、マスタ１−２はクロスババスＢ２，Ｂ３のデータを読み込み、マスタ１−４はクロスババスＢ４のデータを読み込む。
【０１８８】
サイクル５Ｔにおいて、マスタ１−１〜１−３は、バス選択信号ＢＳ１〜ＢＳ３によってサイクルＴ４において自装置に割り当てられたクロスババスＢ１〜Ｂ４から要求したデータがすべて転送されたことを認識しており、さらに新たに転送するデータがないのでバス要求信号ＢＲＥＱ１〜ＢＲＥＱ３をネゲートにする。バス制御部５は、バス要求信号ＢＲＥＱ１〜ＢＲＥＱ４がネゲートであるので、クロスババスＢ１〜Ｂ４の割り当てを行なわない。
【０１８９】
一方、サイクルＴ４におけるデータ転送の要求を受けて、スレーブ３−１はクロスババスＢ３にデータ「Ｄ１」を出力し、スレーブ３−２はクロスババスＢ２にデータ「Ｄ２」を出力し、スレーブ３−３はクロスババスＢ１，Ｂ４にデータ「Ｄ３」を出力する。
【０１９０】
マスタ１−１〜１−３は、終了信号ＥＮＤ１〜ＥＮＤ３がアサートになると、それぞれに割当てられたクロスババスＢ１〜Ｂ４のデータを読み込む。ここでは、マスタ１−１はクロスババスＢ１，Ｂ４のデータを読み込み、マスタ１−２はクロスババスＢ２のデータを読み込み、マスタ１−３はクロスババスＢ３のデータを読み込む。
【０１９１】
サイクルＴ６において、マスタ１−１は、アドレス信号ＡＤ１にスレーブ３−１のアドレスｓ１を出力し、データサイズ信号ＤＳＩＺＥ１に「１２８ｂｉｔ」を出力し、バス要求信号ＢＲＥＱ１をアサートにして、スレーブ３−１に１２８ビットでアクセスするバス要求を行なう。
【０１９２】
マスタ１−２は、アドレス信号ＡＤ１にスレーブ３−２のアドレスｓ２を出力し、データサイズ信号ＤＳＩＺＥ１に「１２８ｂｉｔ」を出力し、バス要求信号ＢＲＥＱ２をアサートにして、スレーブ３−２に１２８ビットでアクセスするバス要求を行なう。
【０１９３】
バス制御部５は、マスタ１−１，１−２がアクセスを要求しているスレーブが異なるので、マスタ１−１，１−２のバス要求を受け付けて、要求受付信号ＡＣＫ１，ＡＣＫ２をアサートにする。バス制御部５は、マスタ１−１にクロスババスＢ１を割当て、マスタ１−２にクロスババスＢ２を割当てる。
【０１９４】
バス要求を行っているマスタ１−１，１−２に１つずつクロスババスを割り当てたが、クロスババスＢ３，Ｂ４が未使用となっている。マスタ１−１，１−２は、１２８ビットのデータ転送を要求しているので、バス制御部５は、マスタ１−１，１−２に未使用のクロスババスＢ３，Ｂ４を割り当てる。
【０１９５】
クロスババスＢ１〜Ｂ４をマスタ１−１，１−２に割り当てた後に、バス制御部５は、スレーブ３−１にクロスババスＢ１，Ｂ４を割当て、スレーブ３−２にクロスババスＢ２，Ｂ３を割当てる。バス制御部５は、バス選択信号ＢＳ１〜ＢＳ４，ＢＳＳ１〜ＢＳＳ４のビットのうち割当てたクロスババスＢ１〜Ｂ４を示すビットのみをアサートにする。
【０１９６】
サイクルＴ７において、マスタ１−１は、バス選択信号ＢＳ１によってサイクルＴ２において自装置にクロスババスＢ１，Ｂ３が割当てられたことを認識しており、自装置が要求したデータの一部しか転送されないことを認識して、未転送のデータのアドレスｓ１ｂをアドレス信号ＡＤ１に出力し、未転送のデータのビット数（この場合は、６４ｂｉｔ）をデータサイズ信号ＤＳＩＺＥ１に出力して、バス要求信号ＢＲＥＱ１をアサートにしてバス要求を更新する。
【０１９７】
マスタ１−２も、マスタ１−１と同様にバス選択信号ＢＳ２によってサイクルＴ２において自装置にクロスババスＢ２，Ｂ３が割当てられたことから自装置が要求したデータの一部しか転送されないことを認識する。マスタ１−２は、未転送のデータのアドレスｓ２ｂをアドレス信号ＡＤ２に出力し、未転送のデータのビット数（この場合は、３２ｂｉｔ）をデータサイズ信号ＤＳＩＺＥ２に出力して、バス要求信号ＢＲＥＱ２をアサートにしてバス要求を更新する。
【０１９８】
バス制御部５は、サイクルＴ６と同様に、マスタ１−１，１−２がアクセスを要求しているスレーブが異なるので、マスタ１−１，１−２のバス要求を受け付けて、要求受付信号ＡＣＫ１，ＡＣＫ２をアサートにする。バス制御部５は、マスタ１−１にクロスババスＢ１を割当て、マスタ１−２にクロスババスＢ２を割当てた後に、マスタ１−１，１−２に未使用のクロスババスＢ４，Ｂ３を割り当てる。
【０１９９】
クロスババスＢ１〜Ｂ４をマスタ１−１，１−２に割り当てた後に、バス制御部５は、スレーブ３−１にクロスババスＢ１，Ｂ４を割当て、スレーブ３−２にクロスババスＢ２，Ｂ３を割当てる。バス制御部５は、バス選択信号ＢＳ１〜ＢＳ４，ＢＳＳ１〜ＢＳＳ４のビットのうち割当てたクロスババスＢ１〜Ｂ４を示すビットのみをアサートにする。
【０２００】
一方、サイクルＴ６におけるデータ転送の要求を受けて、スレーブ３−１はクロスババスＢ１，Ｂ４にデータ「Ｄ１」を出力し、スレーブ３−２はクロスババスＢ２，Ｂ３にデータ「Ｄ２」を出力する。
【０２０１】
マスタ１−１，１−２は、終了信号ＥＮＤ１，ＥＮＤ２がアサートになると、それぞれに割当てられたクロスババスＢ１〜Ｂ４のデータを読み込む。ここでは、マスタ１−１はクロスババスＢ１，Ｂ４のデータを読み込み、マスタ１−２はクロスババスＢ２，Ｂ３のデータを読み込む。
【０２０２】
サイクルＴ８において、マスタ１−１，１−２は、バス選択信号ＢＳ１，ＢＳ２によってサイクルＴ７において自装置に割り当てられたクロスババスＢ１〜Ｂ４から要求したデータがすべて転送されたことを認識しており、さらに新たに転送するデータがないのでバス要求信号ＢＲＥＱ１，ＢＲＥＱ２をネゲートにする。バス制御部５は、バス要求信号ＢＲＥＱ１〜ＢＲＥＱ４がネゲートであるので、クロスババスＢ１〜Ｂ４の割り当てを行なわない。
【０２０３】
一方、サイクルＴ７におけるデータ転送の要求を受けて、スレーブ３−１はクロスババスＢ１，Ｂ４にデータ「Ｄ１」を出力し、スレーブ３−２はクロスババスＢ２，Ｂ３にデータ「Ｄ２」を出力する。
【０２０４】
マスタ１−１，１−２は、終了信号ＥＮＤ１，ＥＮＤ２がアサートになると、それぞれに割当てられたクロスババスＢ１〜Ｂ４のデータを読み込む。ここでは、マスタ１−１はクロスババスＢ１，Ｂ４のデータを読み込み、マスタ１−２はクロスババスＢ２，Ｂ３のデータを読み込む。
【０２０５】
このようにこの実施の形態３では、バス制御部５が、バス要求を行なっているマスタの優先順位を決定し、複数のマスタ１−１〜１−４からバス要求がある場合には、バス要求を行なっているマスタ１−１〜１−４がデータ転送を要求しているスレーブ３−１〜３−４が異なっているか否かを判定し、異なっているスレーブ３−１〜３−４にアクセスを要求している全てのマスタ１−１〜１−４に対して、予め定められた割当ての最小単位のクロスババスＢ１〜Ｂ４を１つずつを割当てたのちに、割当てていない未割当の最小単位のクロスババスＢ１〜Ｂ４がある場合、要求しているデータサイズが最小単位のクロスババスＢ１〜Ｂ４のデータサイズより大きいマスタ１−１〜１−４に未割当の最小単位のクロスババスＢ１〜Ｂ４を割当てるようにしているので、要求しているデータサイズが大きいマスタ１−１〜１−４のデータ転送を効率よく行ない、データ転送によるデータ処理の遅延を抑制することができる。
【０２０６】
具体的には、たとえば、図１７に示したタイミングチャートのサイクルＴ６のように、マスタ１−１とマスタ１−２とから最大サイズのバス要求があった場合、マスタ１−１のバス要求を受け付けた後にマスタ１−２のバス要求を受け付けても、サイクルＴ７，Ｔ８の２サイクルで２つのマスタ１−１，１−２のデータ転送を行なうことは可能である。しかしながら、マスタ１−１〜１−４のＣＰＵ１１がキャッシュメモリを内蔵している場合、最初に転送されたデータが実際の処理に用いられ、残りのデータはキャッシュメモリに登録しておくことが多い。すなわち、１サイクルで全てのデータが必要なわけではなく、複数サイクルに分割しても、バス要求を行なってから直ちに最初のデータが転送された方がデータ処理としては効率がよくなる。
【０２０７】
なお、複数のマスタ１−１〜１−４からバス要求があった場合に、実施の形態２のバス割当処理を用いるのか、実施の形態３のバス割当処理を用いるのかを、外部から設定して選択するようにしてもよい。この場合、図１に示したデータ処理装置のバス制御部５の代わりに、図１８に示したバス制御部５ａを用いればよい。図１８に示したバス制御部５ａは、図４に示したバス制御部５に外部からモード信号によってモードを設定可能なクロスババス制御レジスタ５６が追加されている。バス制御部５と同じ機能を持つ構成部分には同一符号を付し、重複する説明は省略する。
【０２０８】
たとえば、マスタ選択部５３は、クロスババス制御レジスタ５６が「０」であれば実施の形態２のバス割当処理を行い、クロスババス制御レジスタ５６が「１」であれば実施の形態３のバス割当処理を行うようにする。このように外部からのモード設定によってクロスババスＢ１〜Ｂ４の割当てを変更することにより、柔軟にクロスババスＢ１〜Ｂ４を割当てることができる。
【０２０９】
実施の形態４．
図１９を参照して、この発明の実施の形態４を説明する。実施の形態１〜３では、１つのマスタが１つのスレーブにアクセスする場合を説明した。この実施の形態４では、１つのマスタが複数のスレーブにアクセスしてブロードキャストのデータ転送を行なう場合を説明する。
【０２１０】
この発明にかかる実施の形態４のデータ処理装置は、図１に示した実施の形態１のデータ処理装置と同じであるのでここではその説明を省略する。なお、マスタ１−１〜１−４は、ブロードキャストを要求するアドレスを出力する機能を備えており、バス制御部５は、マスタ１−１〜１−４が１つのスレーブにアクセス要求をしているのか、ブロードキャストの要求をしているのかを判定して、ブロードキャストの要求をしていると判定した場合にはすべてのスレーブ３−１〜３−４にアクセス要求を出力する機能を備えている。
【０２１１】
つぎに、図１９のタイミングチャートを参照して、この発明の実施の形態４のデータ処理装置の動作を説明する。サイクルＴ１において、マスタ１−１は、アドレス信号ＡＤ１にブロードキャストを要求するアドレスｂｃを出力し、データサイズ信号ＤＳＩＺＥ１に「１２８ｂｉｔ」を出力し、バス要求信号ＢＲＥＱ１をアサートにして、ブロードキャストでスレーブ３−１〜３−４にアクセスするバス要求を行なう。マスタ１−２〜１−４は、バス要求を行なわないのでバス要求信号ＢＲＥＱ２〜ＢＲＥＱ４はネゲートにする。
【０２１２】
バス制御部５は、マスタ１−１のみがバス要求を行なっているので、マスタ１−１のバス要求を受け付けて、要求受付信号ＡＣＫ１をアサートにする。バス制御部５のマスタ選択部５３は、マスタ１−１のアドレス信号ＡＤ１によってマスタ１−１がブロードキャストのデータ転送を要求していることを認識して、マスタ１−１にクロスババスＢ１〜Ｂ４を割当てる。スレーブ選択部５４は、スレーブ３−１〜３−４にクロスババスＢ１〜Ｂ４を割当てる。バス制御部５は、バス選択信号ＢＳ１〜ＢＳ４，ＢＳＳ１〜ＢＳＳ４のビットのうち割当てたクロスババスＢ１〜Ｂ４を示すビットのみをアサートにする。
【０２１３】
サイクルＴ２において、マスタ１−１は、アドレス信号ＡＤ１にスレーブ３−１のアドレスｓ１を出力し、データサイズ信号ＤＳＩＺＥ１に「３２ｂｉｔ」を出力し、バス要求信号ＢＲＥＱ１をアサートにして、スレーブ３−１に３２ビットでアクセスするバス要求を行なう。
【０２１４】
マスタ１−２は、アドレス信号ＡＤ２にスレーブ３−２のアドレスｓ２を出力し、データサイズ信号ＤＳＩＺＥ２に「３２ｂｉｔ」を出力し、バス要求信号ＢＲＥＱ２をアサートにして、スレーブ３−２に３２ビットでアクセスするバス要求を行なう。
【０２１５】
マスタ１−３は、アドレス信号ＡＤ３にスレーブ３−３のアドレスｓ３を出力し、データサイズ信号ＤＳＩＺＥ３に「３２ｂｉｔ」を出力し、バス要求信号ＢＲＥＱ３をアサートにして、スレーブ３−３に３２ビットでアクセスするバス要求を行なう。
【０２１６】
マスタ１−４は、アドレス信号ＡＤ４にスレーブ３−４のアドレスｓ４を出力し、データサイズ信号ＤＳＩＺＥ４に「３２ｂｉｔ」を出力し、バス要求信号ＢＲＥＱ４をアサートにして、スレーブ３−４に３２ビットでアクセスするバス要求を行なう。
【０２１７】
バス制御部５は、マスタ１−１〜１−４がアクセスを要求しているスレーブが全て異なるので、マスタ１−１〜１−４のバス要求を受け付けて、要求受付信号ＡＣＫ１〜ＡＣＫ４をアサートにする。バス制御部５は、マスタ１−１およびスレーブ３−１にクロスババスＢ１を割当て、マスタ１−２およびスレーブ３−２にクロスババスＢ２を割当てて、マスタ１−３およびスレーブ３−３にクロスババスＢ３を割当てて、マスタ１−４およびスレーブ３−４にクロスババスＢ４を割当てる。バス制御部５は、バス選択信号ＢＳ１〜ＢＳ４，ＢＳＳ１〜ＢＳＳ４のビットのうち割当てたクロスババスＢ１〜Ｂ４を示すビットのみをアサートにする。
【０２１８】
一方、サイクルＴ１におけるデータ転送の要求を受けて、スレーブ３−１はクロスババスＢ１にデータ「Ｄ１」を出力し、スレーブ３−２はクロスババスＢ２にデータ「Ｄ２」を出力し、スレーブ３−３はクロスババスＢ３にデータ「Ｄ３」を出力し、スレーブ３−４はクロスババスＢ４にデータ「Ｄ４」を出力する。マスタ１−１は、終了信号ＥＮＤ１〜ＥＮＤ４がアサートになると、クロスババスＢ１〜Ｂ４のデータを読み込む。
【０２１９】
サイクルＴ３において、マスタ１−１〜１−４はサイクルＴ１で要求したバス要求のデータ転送が受け付けられているのでバス要求信号ＢＲＥＱ１〜ＢＲＥＱ４をネゲートにする。
【０２２０】
バス制御部５は、バス要求信号ＢＲＥＱ１〜ＢＲＥＱ４がネゲートであるので、クロスババスＢ１〜Ｂ４の割り当てを行なわない。
【０２２１】
一方、サイクルＴ２におけるデータ転送の要求を受けて、スレーブ１−１はクロスババスＢ１にデータ「Ｄ１」を出力し、スレーブ１−２はクロスババスＢ２にデータ「Ｄ２」を出力し、スレーブ１−３はクロスババスＢ３にデータ「Ｄ３」を出力し、スレーブ１−４はクロスババスＢ４にデータ「Ｄ４」を出力する。
【０２２２】
マスタ１−１〜１−４は、終了信号ＥＮＤ１〜ＥＮＤ４がアサートになると、クロスババスＢ１〜Ｂ４のデータを読み込む。ここでは、マスタ１−１がクロスババスＢ１のデータ「Ｄ１」を読み込み、マスタ１−２がクロスババスＢ２のデータ「Ｄ２」を読み込み、マスタ１−３がクロスババスＢ３のデータ「Ｄ３」を読み込み、マスタ１−４がクロスババスＢ４のデータ「Ｄ４」を読み込む。
【０２２３】
このようにこの実施の形態４では、バス制御部５は、マスタ１−１〜１−４がデータを転送するスレーブ３−１〜３−４として複数のスレーブ３−１〜３−４を要求するブロードキャストの要求を行っている場合、ブロードキャストの要求を行なっているマスタ１−１〜１−４の１つと全てのスレーブ３−１〜３−４とを接続するようにクロスババスＢ１〜Ｂ４を割当てるようにしているので、マスタ１−１〜１−４の１つが複数のスレーブ３−１〜３−４に同時にアクセスすることができ、たとえば、ベクトルプロセッサをスレーブ３−１〜３−４とした場合にマスタ１−１〜１−４の中の１つの管理下で複数のベクトルプロセッサを並列に動作させることができ、データ処理の性能を上げることができる。
【０２２４】
なお、この実施の形態４では、ブロードキャストのデータ転送としてすべてのスレーブ３−１〜３−４にアクセスする場合を例に挙げて説明したが、アドレス信号ＡＤ１〜ＡＤ４に任意のスレーブを指定するための信号を追加して、任意のスレーブ３−１〜３−４に対してブロードキャストのデータ転送を行なうようにしてもよい。
【０２２５】
実施の形態５．
図２０〜図２２を参照して、この発明の実施の形態５を説明する。図２０は、この発明にかかる実施の形態５のデータ処理装置の構成を示すブロック図である。この発明にかかる実施の形態５のデータ処理装置は、複数（この場合は４つ）のマスタ１−１，１−２，１ａ−１，１ａ−２と、複数（この場合は４つ）のスレーブ３−１，３−２，３ａ−１，３ａ−２と、バス制御部５と、バス制御部５によってオン／オフ制御されるスイッチＳＷ１−１〜ＳＷ１−４，ＳＷ１−９，ＳＷ１−１０，ＳＷ２−１〜ＳＷ２−４，ＳＷ２−９，ＳＷ２−１０，ＳＷ３−１〜ＳＷ３−４，ＳＷ３−９，ＳＷ３−１０，ＳＷ４−１〜ＳＷ４−４，ＳＷ４−９〜ＳＷ４−１２によりマスタ１−１，１−２，１ａ−１，１ａ−２とスレーブ３−１，３−２，３ａ−１，３ａ−２とを接続するクロスババスＢ１〜Ｂ４とを備えている。図１に示したデータ処理装置と同じ構成部分には同一符号を付し、重複する説明を省略する。
【０２２６】
マスタ１ａ−１，１ａ−２は、マスタ１−１と同様に、たとえば、ＣＰＵやＤＭＡＣなどの演算処理装置であるが、スレーブ３−１，３−２，３ａ−１，３ａ−２に対して１サイクルで最大３２ビットのデータアクセスが可能である。すなわち、マスタ１−１，１−２との違いは、１サイクルの最大転送ビット数のみである。したがって、図２に示したマスタ１−１の内部バスＢＩ２〜ＢＩ３および選択部１４−２〜１４−４が削除された構成となる。図２０では、マスタ１ａ−１は、スイッチＳＷ１−９，ＳＷ２−９，ＳＷ３−９，ＳＷ４−９によってクロスババスＢ１〜Ｂ４の何れか１つに接続し、マスタ１ａ−２は、スイッチＳＷ４−１１によってクロスババスＢ４にのみ接続する構成となっている。また、マスタ１ａ−１，１ａ−２と図１に示したマスタ１−３，１−４とは１サイクルの最大転送ビットのみの違いであるので、以後マスタ１ａ−１，１ａ−２の入出力信号についてはマスタ１−３，１−４と同一符号を用いて説明する。
【０２２７】
スレーブ３ａ−１，３ａ−２は、スレーブ１−１，１−２と同様の記憶装置であるが、マスタ１−１，１−２，１ａ−１，１ａ−２に対して１サイクルで最大３２ビットのデータアクセスが可能である。すなわち、スレーブ３−１，３−２との違いは、１サイクルの最大転送ビット数のみである。したがって、図５に示したスレーブ３−１の内部バスＳＢＩ２〜ＳＢＩ４および選択部３３−２〜３３−４が削除された構成となる。図２０では、スレーブ３ａ−１は、スイッチＳＷ１−１０，ＳＷ２−１０，ＳＷ３−１０，ＳＷ４−１０によってクロスババスＢ１〜Ｂ４の何れか１つに接続し、スレーブ３ａ−２は、スイッチＳＷ４−１２によってクロスババスＢ４にのみ接続する構成となっている。また、スレーブ３ａ−１，３ａ−２と図１に示したスレーブ３−３，１−４とは１サイクルの最大転送ビットのみの違いであるので、以後スレーブ３ａ−１，３ａ−２の入出力信号についてはマスタ１−３，１−４と同一符号を用いて説明する。
【０２２８】
この実施の形態５のバス制御部５の動作は、図７のフローチャートを用いて実施の形態１で説明したように、バス要求を受け付ける優先順位を決定した後に、マスタ選択処理によってバス要求を受け付けるマスタ１−１〜１−４を選択して、バス割当処理によって選択したマスタ１−１〜１−４にクロスババスＢ１〜Ｂ４を割当て、スレーブ選択処理によって選択したマスタ１−１〜１−４がアクセスするスレーブ３−１〜３−４にクロスババスＢ１〜Ｂ４を割当てる（ステップＳ１０〜Ｓ４０）ものであるが、マスタ選択処理（ステップＳ２０）およびバス割当処理（ステップＳ３０）の詳細が実施の形態１とは異なる。
【０２２９】
まず、図２１のフローチャートを参照して、この発明にかかる実施の形態５のマスタ選択処理の動作を説明する。マスタ選択部５３は、最優先検出部５２から入力される優先順位の中で優先順位１位の最優先マスタのバス要求を受け付ける（ステップＳ８００）。マスタ選択部５３は、最優先マスタに対する要求受付信号をアサートにして、バス要求を受け付けたことを最優先マスタ、優先制御部５１、および終了信号生成部５５に通知する。
【０２３０】
マスタ選択部５３は、最優先マスタがアクセスを要求しているスレーブ３−１，３−２，３ａ−１，３ａ−２に１サイクルでデータを転送可能か否かを判定する（ステップＳ８０１）。具体的には、マスタ選択部５３は、予めスレーブ３−１，３−２，３ａ−１，３ａ−２の最大サイズを記憶しておき、最優先マスタが要求しているデータサイズのデータをスレーブ３−１，３−２，３ａ−１，３ａ−２が受け付けられるか否かを判定する。
【０２３１】
最優先マスタがアクセスを要求しているスレーブ３−１，３−２，３ａ−１，３ａ−２に１サイクルでデータを転送可能である場合、マスタ選択部５３は、最優先マスタが要求しているデータサイズが最大サイズ（この場合は１２８ビット）であるか否かを判定する（ステップＳ８０２）。最優先マスタが要求しているデータサイズが１２８ビットの場合、マスタ選択部５３は、マスタ選択処理を終了する。
【０２３２】
最優先マスタが要求しているデータサイズが１２８ビットでないまたは１サイクルで転送できず未使用バスが発生する場合、マスタ選択部５３は、最優先マスタ以外のマスタ１−１，１−２，１ａ−１，１ａ−２からのバス要求があるか（優先順位２位以下のマスタがあるか）否かを判定する（ステップＳ８０３）。最優先マスタ以外のマスタ１−１，１−２，１ａ−１，１ａ−２からのバス要求がない場合、マスタ選択部５３はマスタ選択処理を終了する。
【０２３３】
最優先マスタ以外のマスタ１−１，１−２，１ａ−１，１ａ−２からのバス要求がある場合、すなわち最優先検出部５２から通知された優先順位に２〜４位のマスタがある場合、バス要求を受け付けていないマスタ１−１〜１−４の中で優先順位の高いマスタ１−１，１−２，１ａ−１，１ａ−２（選択対象マスタ）がアクセスを要求しているスレーブ３−１，３−２，３ａ−１，３ａ−２とバス要求を受け付けたマスタ１−１，１−２，１ａ−１，１ａ−２がアクセスを要求しているスレーブ３−１，３−２，３ａ−１，３ａ−２とで衝突がないか否かを判定する（ステップＳ８０４）。
【０２３４】
選択対象マスタがアクセスを要求しているスレーブ３−１，３−２，３ａ−１，３ａ−２とバス要求を受け付けたマスタ１−１，１−２，１ａ−１，１ａ−２がアクセスを要求しているスレーブ３−１，３−２，３ａ−１，３ａ−２とで衝突がない場合、マスタ選択部５３は、選択対象マスタの要求受付信号をアサートにして、バス要求を受け付けたことを選択対象マスタ、優先制御部５１、および終了信号生成部５５に通知する（ステップＳ８０５）。
【０２３５】
なお、マスタ１ａ−２およびスレーブ３ａ−２はクロスババスＢ４のみに接続可能であるので、スレーブ３ａ−２以外のスレーブ３−１，３−２，３ａ−１にアクセスするマスタ１ａ−２のバス要求を受け付けた場合には、スレーブ３ａ−２へのアクセスを要求しているマスタ１−１，１−２，１ａ−１の要求はスレーブ３−１，３−２，３ａ−１，３ａ−２の衝突がなくても、クロスババスＢ４の衝突が発生するため受け付けない。また、スレーブ３ａ−２へのアクセスを要求しているマスタ１−１，１−２，１ａ−１のバス要求を受け付けている場合には、スレーブ３−１，３−２，３ａ−１，３ａ−２の衝突がなくてもマスタ１ａ−２のバス要求は受け付けない。
【０２３６】
マスタ選択部５３は、優先順位が定められた（バス要求を行なっている）マスタ１−１，１−２，１ａ−１，１ａ−２を選択対象マスタとして、選択対象マスタがアクセスを要求しているスレーブ３−１，３−２，３ａ−１，３ａ−２がバス要求を受け付けたマスタ１−１，１−２，１ａ−１，１ａ−２がアクセスを要求しているスレーブ３−１，３−２，３ａ−１，３ａ−２と衝突しているか否かを判定して、バス要求を受け付けるマスタ１−１，１−２，１ａ−１，１ａ−２を選択する（ステップＳ８０２〜Ｓ８０３）。マスタ選択部５３は、バス要求を行なっている全てのマスタ１−１，１−２，１ａ−１，１ａ−２に対してバス要求を受け付けるか否かの判定を行なってバス要求を受け付けるマスタ１−１，１−２，１ａ−１，１ａ−２を選択して、マスタ選択処理を終了する。
【０２３７】
つぎに、この実施の形態５のバス制御部５のバス割当処理を説明する。この実施の形態５のバス制御部５のバス割当処理は、実施の形態２で説明した図１４のフローチャートのバス割当処理、または実施の形態３で説明した図１６のフローチャートのバス割当処理とほぼ同じであるが、複数のマスタ１からのバス要求を受け付けた場合のステップＳ６０２またはＳ７０２の処理が異なる。
【０２３８】
マスタ選択部５３は、予めマスタ１ａ−２，およびスレーブ３ａ−２がクロスババスＢ４のみに接続可能であることを記憶している。マスタ選択部５３は、マスタ１ａ−２、またはスレーブ３ａ−２へのアクセスを要求しているマスタ１−１，１−２，１ａ−１を優先してクロスババスＢ４に割当てる。すなわち、マスタ選択部５３は、マスタ１−１，１−２，１ａ−１，１ａ−２およびスレーブ３−１，３−２，３ａ−１，３ａ−２が転送可能な最大データサイズと、マスタ１−１，１−２，１ａ−１，１ａ−２およびスレーブ３−１，３−２，３ａ−１，３ａ−２が接続することができるクロスババスＢ１〜Ｂ４の接続状態を記憶しておき、転送可能な最大データサイズ、および接続状態に基づいてマスタ１−１，１−２，１ａ−１，１ａ−２にクロスババスＢ１〜Ｂ４を割当てる。
【０２３９】
つぎに、図２２のタイミングチャートを参照して、この発明にかかる実施の形態５のデータ処理装置の動作を説明する。
【０２４０】
サイクルＴ２において、マスタ１−１は、アドレス信号ＡＤ１にスレーブ３ａ−２のアドレスｓ４を出力し、データサイズ信号ＤＳＩＺＥ１に「３２ｂｉｔ」を出力し、バス要求信号ＢＲＥＱ１をアサートにして、スレーブ３ａ−２に３２ビットでアクセスするバス要求を行なう。
【０２４１】
マスタ１−２は、アドレス信号ＡＤ２にスレーブ３−２のアドレスｓ２を出力し、データサイズ信号ＤＳＩＺＥ２に「３２ｂｉｔ」を出力し、バス要求信号ＢＲＥＱ２をアサートにして、スレーブ３−２に３２ビットでアクセスするバス要求を行なう。
【０２４２】
マスタ１ａ−１は、アドレス信号ＡＤ３にスレーブ３ａ−１のアドレスｓ３を出力し、データサイズ信号ＤＳＩＺＥ３に「３２ｂｉｔ」を出力し、バス要求信号ＢＲＥＱ３をアサートにして、スレーブ３ａ−１に３２ビットでアクセスするバス要求を行なう。
【０２４３】
マスタ１ａ−２は、アドレス信号ＡＤ４にスレーブ３−１のアドレスｓ１を出力し、データサイズ信号ＤＳＩＺＥ４に「１２８ｂｉｔ」を出力し、バス要求信号ＢＲＥＱ４をアサートにして、スレーブ３−１に１２８ビットでアクセスするバス要求を行なう。
【０２４４】
バス制御部５は、マスタ１−１がスレーブ３ａ−２へのアクセスを要求しており、マスタ１ａ−２がスレーブ３−１へのアクセス要求していることを認識する。スレーブ３ａ−２とマスタ１ａ−２とはクロスババスＢ４のみに接続可能であるため、優先順位の高いマスタからの要求を受け付ける。ここでは、マスタ１ａ−２のバス要求を受け付けて、要求受付信号ＡＣＫ４をアサートにする。バス制御部５は、マスタ１−２，１ａ−１が要求しているスレーブが異なっているのでマスタ１−２，１ａ−１のバス要求も受け付けて、要求受付信号ＡＣＫ２，ＡＣＫ３をアサートにする。バス制御部５は、マスタ１ａ−２およびスレーブ３−１に優先的にクロスババスＢ４を割当てて、マスタ１−２およびスレーブ３−２にクロスババスＢ２を割当てて、マスタ１ａ−１およびスレーブ３ａ−２にクロスババスＢ３を割当てる。バス制御部５は、バス選択信号ＢＳ１〜ＢＳ４，ＢＳＳ１〜ＢＳＳ４のビットのうち割当てたクロスババスＢ１〜Ｂ４を示すビットのみをアサートにする。
【０２４５】
サイクルＴ３において、マスタ１−１はサイクルＴ１で要求したバス要求が受け付けられていないので、サイクルＴ１と同じバス要求を継続する。マスタ１−２，１ａ−１は、サイクルＴ１で要求したバス要求が受け付けられてデータが転送されたのでバス要求信号ＢＲＥＱ２，ＢＲＥＱ３をネゲートにする。
【０２４６】
マスタ１ａ−２は、自装置が要求したデータの一部しか転送されないことを認識して、未転送のデータのアドレスｓ１ａをアドレス信号ＡＤ４に出力し、未転送のデータのビット数（この場合は、９４ｂｉｔ）をデータサイズ信号ＤＳＩＺＥ４に出力して、バス要求信号ＢＲＥＱ４をアサートにしてバス要求を更新する。
【０２４７】
バス制御部５は、マスタ１−１がスレーブ３ａ−２へのアクセスを要求しており、マスタ１ａ−２がスレーブ３−１へのアクセス要求していることを認識する。スレーブ３ａ−２とマスタ１ａ−２とはクロスババスＢ４のみに接続可能であるため、優先順位の高いマスタからの要求を受け付ける。ここでは、マスタ１ａ−２のバス要求を受け付けて、要求受付信号ＡＣＫ４をアサートにする。バス制御部５は、マスタ１ａ−２およびスレーブ３−１にクロスババスＢ４を割当てる。バス制御部５は、バス選択信号ＢＳ１〜ＢＳ４，ＢＳＳ１〜ＢＳＳ４のビットのうち割当てたクロスババスＢ１〜Ｂ４を示すビットのみをアサートにする。
【０２４８】
一方、サイクルＴ２におけるデータ転送の要求を受けて、スレーブ３−１はクロスババスＢ４にデータ「Ｄ１」を出力し、スレーブ３−２はクロスババスＢ２にデータ「Ｄ２」を出力し、スレーブ３ａ−１はクロスババスＢ３にデータ「Ｄ３」を出力する。
【０２４９】
マスタ１−２，１ａ−１，１ａ−２は、終了信号ＥＮＤ２〜ＥＮＤ４がアサートになるとそれぞれに割当てられたクロスババスＢ２〜Ｂ４のデータを読み込む。ここでは、マスタ１−２はクロスババスＢ２のデータを読み込み、マスタ１ａ−１はクロスババスＢ３のデータを読み込み、マスタ１ａ−２はクロスババスＢ４のデータを読み込む。
【０２５０】
サイクルＴ４において、マスタ１−１は、サイクルＴ３で要求したバス要求が受け付けられていないので、サイクルＴ３と同じバス要求を継続する。マスタ１−２は、アドレス信号ＡＤ２にスレーブ３ａ−１のアドレスｓ３を出力し、データサイズ信号ＤＳＩＺＥ２に「１２８ｂｉｔ」を出力し、バス要求信号ＢＲＥＱ２をアサートにして、スレーブ３ａ−１に１２８ビットでアクセスするバス要求を行なう。
【０２５１】
マスタ１ａ−２は、自装置が要求したデータの一部しか転送されないことを認識して、未転送のデータのアドレスｓ３ｂをアドレス信号ＡＤ４に出力し、未転送のデータのビット数（この場合は、６４ｂｉｔ）をデータサイズ信号ＤＳＩＺＥ４に出力して、バス要求信号ＢＲＥＱ４をアサートにしてバス要求を更新する。
【０２５２】
バス制御部５は、サイクルＴ３と同様に、マスタ１ａ−２のバス要求を受け付け、マスタ１−１のバス要求は受け付けない。バス制御部５は、マスタ１ａ−２とマスタ１−２がアクセスを要求しているスレーブが異なるのでマスタ１−２のバス要求を受け付ける。バス制御部５は、要求受付信号ＡＣＫ２，ＡＣＫ４をアサートにする。バス制御部５は、マスタ１ａ−２およびスレーブ３−１にクロスババスＢ４を割当てる。バス制御部５は、マスタ１−２は１２８ビットのデータ転送を要求しているが、スレーブ３ａ−１は最大３２ビットのデータ転送しかできないため、マスタ１−２とスレーブ３ａ−１にクロスババスＢ３を割当てる。バス制御部５は、バス選択信号ＢＳ１〜ＢＳ４，ＢＳＳ１〜ＢＳＳ４のビットのうち割当てたクロスババスＢ１〜Ｂ４を示すビットのみをアサートにする。
【０２５３】
一方、サイクルＴ３におけるデータ転送の要求を受けて、スレーブ３−１はクロスババスＢ４にデータ「Ｄ１」を出力し、マスタ１ａ−２は、終了信号ＥＮＤ４がアサートになるとクロスババスＢ４のデータを読み込む。
【０２５４】
サイクルＴ５において、バス要求を受け付けられていないマスタ１−１はバス要求を継続し、バス要求を受け付けられたが要求したデータが全て転送されていないマスタ１−２，マスタ１ａ−２は、アドレスおよびデータサイズを更新したバス要求を行なう。
【０２５５】
バス制御部５は、サイクルＴ４と同様に、マスタ１−２，１ａ−２のバス要求のみを受け付けて、要求受付信号ＡＣＫ２，ＡＣＫ４をアサートにする。バス制御部５は、マスタ１−２およびスレーブ３ａ−１にクロスババスＢ３を割当てて、マスタ１ａ−２およびスレーブ３−１にクロスババスＢ４を割当てる。バス制御部５は、バス選択信号ＢＳ１〜ＢＳ４，ＢＳＳ１〜ＢＳＳ４のビットのうち割当てたクロスババスＢ１〜Ｂ４を示すビットのみをアサートにする。
【０２５６】
一方、サイクルＴ４におけるデータ転送の要求を受けて、スレーブ３−１はクロスババスＢ４にデータ「Ｄ１」を出力し、スレーブ３ａ−１はクロスババスＢ３にデータ「Ｄ３」を出力する。マスタ１−２，１ａ−２は、終了信号ＥＮＤ２，ＥＮＤ４がアサートになるとクロスババスＢ３，Ｂ４のデータを読み込む。
【０２５７】
サイクルＴ６において、バス要求を受け付けられていないマスタ１−１はバス要求を継続し、バス要求を受け付けられたが要求したデータが全て転送されていないマスタ１−２はアドレスおよびデータサイズを更新したバス要求を行なう。マスタ１ａ−２は要求したデータが全て転送されているのでバス要求信号ＢＲＥＱ４をネゲートにする。
【０２５８】
バス制御部５は、クロスババスＢ４にのみ接続可能なマスタ１ａ−２からのバス要求が無いので、クロスババスＢ４にのみ接続可能なスレーブ３ａ−２にアクセスを要求しているマスタ１−１のバス要求を受け付けて、要求受付信号ＡＣＫ１をアサートにする。また、マスタ１−１とマスタ１−２とがアクセスを要求しているスレーブが異なるので、マスタ１−２のバス要求を受け付けて、要求受付信号ＡＣＫ２をアサートにする。
【０２５９】
バス制御部５は、マスタ１−１およびスレーブ３ａ−２にクロスババスＢ４を割当て、マスタ１−２とスレーブ３ａ−１にクロスババスＢ３を割当てる。バス制御部５は、バス選択信号ＢＳ１〜ＢＳ４，ＢＳＳ１〜ＢＳＳ４のビットのうち割当てたクロスババスＢ１〜Ｂ４を示すビットのみをアサートにする。
【０２６０】
一方、サイクルＴ５におけるデータ転送要求を受けて、スレーブ３−１はクロスババスＢ４にデータ「Ｄ４」を出力し、スレーブ３ａ−１はクロスババスＢ３にデータ「Ｄ３」を出力する。マスタ１−２，１ａ−２は、終了信号ＥＮＤ２，ＥＮＤ４がアサートになるとクロスババスＢ３，Ｂ４のデータを読み込む。
【０２６１】
サイクルＴ７において、マスタ１−１は要求したデータが全て転送されているのでバス要求信号ＢＲＥＱ１をネゲートにする。マスタ１−２は要求したデータがすべて転送されていないので、アドレスおよびデータサイズを更新したバス要求を行なう。
【０２６２】
バス制御部５は、マスタ１−２のバス要求を受け付けて要求受付信号ＡＣＫ２をアサートにする。バス制御部５は、マスタ１−２およびスレーブ３ａ−１にクロスババスＢ３を割当てて、バス選択信号ＢＳ１〜ＢＳ４，ＢＳＳ１〜ＢＳＳ４のビットのうち割当てたクロスババスＢ１〜Ｂ４を示すビットのみをアサートにする。
【０２６３】
一方、サイクルＴ６におけるデータ転送の要求を受けて、スレーブ３ａ−１はクロスババスＢ３にデータ「Ｄ３」を出力し、スレーブ３ａ−２はクロスババスＢ４にデータ「Ｄ４」を出力する。マスタ１−１，１ａ−２は、終了信号ＥＮＤ１，ＥＮＤ２がアサートになるとクロスババスＢ４，Ｂ３のデータを読み込む。
【０２６４】
サイクルＴ８において、マスタ１−１，１−２，１ａ−１，１ａ−２からのバス要求は無いので、バス制御部５はクロスババスＢ１〜Ｂ４の割当てを行わない。
【０２６５】
スレーブ３ａ−１は、サイクルＴ７におけるデータ転送の要求を受けて、クロスババスＢ３にデータ「Ｄ３］を出力し、マスタ１−２は終了信号ＥＮＤ２がアサートになるとクロスババスＢ３のデータを読み込む。
【０２６６】
このようにこの実施の形態５では、バス制御部５が、マスタ１−１，１−２，１ａ−１，１ａ−２およびスレーブ３−１，３−２，３ａ−１，３ａ−２が転送可能な最大データサイズと、マスタ１−１，１−２，１ａ−１，１ａ−２およびスレーブ３−１，３−２，３ａ−１，３ａ−２が接続することができるクロスババスＢ１〜Ｂ４の接続状態を記憶しておき、転送可能な最大データサイズ、および接続状態に基づいてマスタ１−１，１−２，１ａ−１，１ａ−２にクロスババスＢ１〜Ｂ４を割当てるようにしているので、異なる仕様のマスタおよびスレーブを用いた場合でも、要求したデータサイズに応じて効率よくデータを転送することができる。
【産業上の利用可能性】
【０２６７】
以上のように、本発明にかかるデータ処理装置は、並列処理をおこなうデータ処理のデータ転送に有用であり、特に、データ転送のデータサイズが複数あるデータのデータ転送に適している。
【図面の簡単な説明】
【０２６８】
【図１】この発明にかかる実施の形態１のデータ処理装置の構成を示すブロック図である。
【図２】図１に示したマスタの構成を示すブロック図である。
【図３】図２の示した要求作成部の構成を示すブロック図である。
【図４】図１に示したバス制御部の構成を示すブロック図である。
【図５】図１に示したスレーブの構成を示すブロック図である。
【図６】この発明にかかる実施の形態１のマスタがバス制御部にスレーブへのアクセス要求を出力する動作を説明するためのフローチャートである。
【図７】この発明にかかる実施の形態１のバス制御部の動作を説明するためのフローチャートである。
【図８】この発明にかかる実施の形態１のバス制御部のマスタ選択処理を説明するためのフローチャートである。
【図９】この発明にかかる実施の形態１のバス制御部のバス割当処理を説明するためのフローチャートである。
【図１０】この発明にかかる実施の形態１のバス制御部のスレーブ選択処理を説明するためのフローチャートである。
【図１１】この発明にかかる実施の形態１のデータ処理装置の動作を説明するためのタイミングチャートである。
【図１２】この発明にかかる実施の形態１のデータ処理装置の動作を説明するためのタイミングチャートである。
【図１３】この発明にかかる実施の形態２のバス制御部のマスタ選択処理を説明するためのフローチャートである。
【図１４】この発明にかかる実施の形態２のバス制御部のバス割当処理を説明するためのフローチャートである。
【図１５】この発明にかかる実施の形態２のデータ処理装置の動作を説明するためのタイミングチャートである。
【図１６】この発明にかかる実施の形態３のバス制御部のバス割当処理を説明するためのフローチャートである。
【図１７】この発明にかかる実施の形態３のデータ処理装置の動作を説明するためのタイミングチャートである。
【図１８】この発明にかかる実施の形態３のデータ処理装置の別の構成を示すブロック図である。
【図１９】この発明にかかる実施の形態４のデータ処理装置の動作を説明するためのタイミングチャートである。
【図２０】この発明にかかる実施の形態５のデータ処理装置の構成を示すブロック図である。
【図２１】この発明にかかる実施の形態５のバス制御部のマスタ選択処理を説明するためのフローチャートである。
【図２２】この発明にかかる実施の形態５のデータ処理装置の動作を説明するためのタイミングチャートである。
【符号の説明】
【０２６９】
１−１，１−２，１−３，１−４，１ａ−１，１ａ−２  マスタ
３−１，３−２，３−３，３−４，３ａ−１，３ａ−２  スレーブ
１１  ＣＰＵ
１２  要求作成部
１３  マスタ選択信号生成部
１４−１，１４−２，１４−３，１４−４，３３−１，３３−２，３３−３，３３−４  選択部
３１  有効データ検出部
３２  スレーブ選択信号生成部
５  バス制御部
５１  優先制御部
５２  最優先検出部
５３  マスタ選択部
５４  スレーブ選択部
５５  終了信号生成部
１２１  要求検出部
１２２  終了検出部
【図１】
2006065812.tif 000003
【図２】
2006065812.tif 000004
【図３】
2006065812.tif 000005
【図４】
2006065812.tif 000006
【図５】
2006065812.tif 000007
【図６】
2006065812.tif 000008
【図７】
2006065812.tif 000009
【図８】
2006065812.tif 000010
【図９】
2006065812.tif 000011
【図１０】
2006065812.tif 000012
【図１１】
2006065812.tif 000013
【図１２】
2006065812.tif 000014
【図１３】
2006065812.tif 000015
【図１４】
2006065812.tif 000016
【図１５】
2006065812.tif 000017
【図１６】
2006065812.tif 000018
【図１７】
2006065812.tif 000019
【図１８】
2006065812.tif 000020
【図１９】
2006065812.tif 000021
【図２０】
2006065812.tif 000022
【図２１】
2006065812.tif 000023
【図２２】
2006065812.tif 000024