(57)【要約】【課題】  レジスタスライス挿入後も最適なパフォーマンスを得ることが可能な、ポイント・トゥ・ポイント通信を行うバスシステムの技術を提供する。【解決手段】  ポイント・トゥ・ポイント通信を行う１以上のバスマスタと１以上のバススレーブとがチャネルにより接続され、該チャネルにレジスタスライスが挿入された、バスシステムを有する半導体集積回路は、バスマスタとバススレーブとの組毎に、バスマスタとバススレーブとを接続するチャネルに挿入されたレジスタスライスの個数を記憶し、バスマスタの少なくともいずれかと、バススレーブの少なくともいずれかとを用いて所定の処理を行う場合に、個数に基づいて、使用するバスマスタとバススレーブとを割り付ける。ここで、使用するバスマスタとバススレーブとを接続するチャネルに挿入されたレジスタスライスの個数が最小となるように、バスマスタとバススレーブとを割り付ける。【選択図】  図５
2009026150.tif 000002
【特許請求の範囲】
【請求項１】
ポイント・トゥ・ポイント通信を行う１以上のバスマスタと１以上のバススレーブとがチャネルにより接続され、該チャネルにレジスタスライスが挿入された、バスシステムを有する半導体集積回路であって、
前記１以上のバスマスタと前記１以上のバススレーブとの組毎に、バスマスタとバススレーブとを接続するチャネルに挿入された前記レジスタスライスの個数を記憶する個数記憶手段と、
前記１以上のバスマスタの少なくともいずれかと、前記１以上のバススレーブの少なくともいずれかとを用いて所定の処理を行う場合に、前記個数に基づいて、使用するバスマスタとバススレーブとを割り付ける割付手段と、
を備え、
前記割付手段は、使用するバスマスタとバススレーブとを接続するチャネルに挿入された前記レジスタスライスの個数が最小となるように、バスマスタとバススレーブとを割り付ける
ことを特徴とする半導体集積回路。
【請求項２】
前記１以上のバスマスタ毎に、バスマスタが動作中であるか否かを示す動作状況を記憶する動作状況記憶手段を更に備え、
前記割付手段は、前記動作状況に基づいて、動作中のバスマスタを使用しない範囲で前記レジスタスライスの個数が最小となるように、バスマスタとバススレーブとを割り付ける
ことを特徴とする請求項１に記載の半導体集積回路。
【請求項３】
前記割付手段は、
前記動作中のバスマスタが使用しているバススレーブを使用しない範囲で、前記レジスタスライスの個数が最小となるようにバスマスタとバススレーブとを割り付ける
ことを特徴とする請求項２に記載の半導体集積回路。
【請求項４】
前記所定の処理はバススレーブ間でデータを転送する処理であることを特徴とする請求項１乃至３のいずれか１項に記載の半導体集積回路。
【請求項５】
前記１以上のバススレーブはそれぞれデータを記憶するデータ記憶手段を備え、
前記１以上のバススレーブ毎に、前記データ記憶手段の記憶容量を示す容量情報を記憶する容量記憶手段を更に備え、
前記割付手段は、前記容量情報に基づいて、前記所定の処理が必要とする記憶容量を確保するためのスレーブを割り付ける
ことを特徴とする請求項１乃至３のいずれか１項に記載の半導体集積回路。
【請求項６】
前記所定の処理は、前記１以上のバスマスタのいずれかで行う画像処理であることを特徴とする請求項５に記載の半導体集積回路。
【請求項７】
請求項１乃至６のいずれか１項に記載の半導体集積回路を備える情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体集積回路及び情報処理装置に関し、特に、パフォーマンスを最適化する技術に関する。
【背景技術】
【０００２】
近年、高スループットを必要とする半導体ＩＰ（Intellectual Property）コアが急増している。例えば、ＵＳＢ１．１からＵＳＢ２．０へ、あるいはＰＣＩからＰＣＩ−Ｅｘｐｒｅｓｓへといったように高スループットを要するバス技術が発展している。これに伴い、高速なスループット転送を可能とするオンチップバスの需要が急速に高まっている。ただし、ＵＳＢはUniversal Serial Busの略称であり、ＰＣＩはPeripheral Component Interconnectの略称である。
【０００３】
２００３年６月にＡＲＭ社が次世代オンチップバス規格としてＡＭＢＡ３．０のＡＸＩプロトコルを発表し、注目を集めている。ただし、ＡＭＢＡはAdvanced Microcontroller Bus Architectureの略称であり、ＡＸＩはAdvanced eXtensible Interfaceの略称である。
【０００４】
ＡＸＩでは、データ転送のスループットを上げるために、従来のＡＨＢ（Advanced High-Performance Bus）にはなかったチャネルという概念が導入されている。チャネルによる転送を行うことでアドレスフェーズとデータフェーズの独立転送方式やアウトオブオーダ転送方式がサポートされている（特許文献１）。
【０００５】
ここでチャネルについて、図７を参照して説明する。図７は、ポイント・トゥ・ポイント通信を行うバスマスタとバススレーブにおける、ハンドシェーク例を示すブロック図である。
【０００６】
チャネルとは、図７のようにバスマスタ９０１とバススレーブ９０２がそれぞれｖａｌｉｄ９０３とｒｅａｄｙ９０４という信号を用いてデータｄａｔａ９０５を２線ハンドシェークで転送する一連の転送経路をいう。ｄａｔａ転送元がｖａｌｉｄを出力し、転送先がｒｅａｄｙを出力する。
【０００７】
図８は、ポイント・トゥ・ポイント通信を行うバスマスタとバススレーブにおける、別のハンドシェーク例を示すブロック図である。ＡＸＩでは、図８のようにａｄｄｒｅｓｓ９１３、ｒｅａｄ＿ｄａｔａ９１４、ｗｒｉｔｅ＿ｄａｔａ９１５、ｗｒｉｔｅ＿ｒｅｓｐｏｎｓｅ９１６の４つのチャネルを用いてバスマスタ９１１、バススレーブ９１２間でデータ転送を行う。このため、アドレスチャネルとデータチャネルとで独立に転送することができる。従って、アドレス処理を次々と発行することが可能となり、バスを有効に活用できる。さらに、アウトオブオーダをサポートすることで、レイテンシが小さいスレーブからのデータを先に返すことを可能にしている。このようなことからＡＸＩではバスの利用効率を向上することができる。
【０００８】
その一方で、ＬＳＩ内部に、複数のＣＰＵ、メモリやＩ／Ｏを有するシステムが一般的になってきている。このようなシステムでは各デバイスを相互接続する必要がある。しかし、各デバイスを接続するためのバスマスタ、バススレーブがＬＳＩ内部に均等に配置配線されるとは限らない。このため、いくつかの接続網、特にアドレスやデータのような高負荷のバスにおいては期待する動作周波数で動作できないことがレイアウト工程の段階で判明することがある。
【０００９】
いったん設計した後でいずれかのパスが必要な動作周波数で動作しないことが判明した場合、従来は、レイアウトを何度もやり直すことで期待する周波数でのタイミング保証を行っていた。このため、従来は、バスの動作タイミングを保証するために、時間と労力を費やしていた。また最悪の場合、動作周波数を落として動作させたり、チップサイズを大きくしたりすることが余儀なくされることもあった。
【００１０】
そこで、このような問題を解決するために、クリティカルパスであるマスタとスレーブとの間の信号群にレジスタを挿入し、パスを分割することでレジスタ−レジスタ間の遅延を減少させることが知られている。ＡＸＩのようなポイント・トゥ・ポイント接続の場合、２線ハンドシェイクでプロトコルが規定されており、またそのハンドシェークで受け渡す情報の流れが単一方向であるため、比較的レジスタの挿入が容易である。ＡＸＩではこの方式をレジスタスライスと呼んでいる。
【００１１】
図９は、図８のポイント・トゥ・ポイント接続に対してレジスタスライスを挿入した接続例を示す図である。ここではａｄｄｒｅｓｓ９１３とｒｅａｄ＿ｄａｔａ９１４のチャネルにレジスタスライス９１７、９１８を一段挿入してパスを分離している。これによりマスタの、アドレス発行からリードデータの取り込みまでのレイテンシが２サイクル分だけ大きくなるが、最大で２倍の周波数での動作が可能となる。
【特許文献１】特開２００７−０１８２６５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
しかし、ポイント・トゥ・ポイント通信を行うバスマスタとバススレーブの間に、上記のような高周波動作のためのレジスタスライスが挿入されると、シリコンのレイアウト上の距離に応じて各マスタ・スレーブ間のレジスタスライスの挿入段数が増える。レジスタスライスの挿入段数が増えると、一般にレイテンシが増大する。このため、各マスタ・スレーブ間のレイテンシが論理設計時と異なると共に、一定でなくなり、特定のマスタ−スレーブ間の転送においてレイテンシが増大し、データ転送（ＤＭＡ転送等）のパフォーマンスが低下する。
【００１３】
本発明は上記課題に鑑みなされたものであり、レジスタスライス挿入後も最適なパフォーマンスを得ることが可能な、ポイント・トゥ・ポイント通信を行うバスシステムの技術を提供することを目的とする。
【課題を解決するための手段】
【００１４】
上記目的を達成するため、本発明による半導体集積回路は以下の構成を備える。即ち、
ポイント・トゥ・ポイント通信を行う１以上のバスマスタと１以上のバススレーブとがチャネルにより接続され、該チャネルにレジスタスライスが挿入された、バスシステムを有する半導体集積回路であって、
前記１以上のバスマスタと前記１以上のバススレーブとの組毎に、バスマスタとバススレーブとを接続するチャネルに挿入された前記レジスタスライスの個数を記憶する個数記憶手段と、
前記１以上のバスマスタの少なくともいずれかと、前記１以上のバススレーブの少なくともいずれかとを用いて所定の処理を行う場合に、前記個数に基づいて、使用するバスマスタとバススレーブとを割り付ける割付手段と、
を備え、
前記割付手段は、使用するバスマスタとバススレーブとを接続するチャネルに挿入された前記レジスタスライスの個数が最小となるように、バスマスタとバススレーブとを割り付ける
ことを特徴とする。
【発明の効果】
【００１５】
本発明によれば、レジスタスライス挿入後も最適なパフォーマンスを得ることが可能な、ポイント・トゥ・ポイント通信を行うバスシステムの技術を提供することができる。
【発明を実施するための最良の形態】
【００１６】
以下、添付図面を参照して本発明に係る実施の形態を詳細に説明する。ただし、この実施の形態に記載されている構成要素はあくまでも例示であり、本発明の範囲をそれらのみに限定する趣旨のものではない。また、本実施の形態で説明されている特徴の組み合わせの全てが発明の解決手段に必須のものとは限らない。
【００１７】
（半導体集積回路の構成）
本実施形態に係る半導体集積回路は、ポイント・トゥ・ポイント通信を行う１以上のバスマスタと１以上のバススレーブとがチャネルにより接続され、該チャネルにレジスタスライスが挿入された、バスシステムを有する。図１は、本実施形態に係る半導体集積回路１００の構成を表すブロック図である。半導体集積回路１００は、３つのバスマスタＭ０（１）、Ｍ１（２）、Ｍ２（３）と、３つのバススレーブＳ０（７）、Ｓ１（８）、Ｓ２（９）を備えている。これらのバスマスタ、バススレーブは、インターコネクトＩＣ０（４）、ＩＣ１（５）、ＩＣ２（６）を介して、互いにポイント・トゥ・ポイント接続されている。
【００１８】
３つのバスマスタＭ０（１）、Ｍ１（２）、Ｍ２（３）には、各々画像処理を行うための構成が内蔵されており、３つのバススレーブＳ０（７）、Ｓ１（８）、Ｓ２（９）には、各々記憶装置（データ記憶手段）が内蔵されている。そして各バスマスタ１〜３は、所定のバススレーブに内蔵された記憶装置から画像処理すべきデータを取得し、所定のバススレーブに内蔵された記憶装置へ画像処理結果を格納する。画像処理結果を格納する記憶装置は、画像処理すべきデータを取得した記憶装置と同一でもよいし、異なってもよい。また各バスマスタ１〜３は、あるバススレーブに内蔵された記憶装置から別のバススレーブに内蔵された記憶装置へ、ＤＭＡ（Direct Memory Access）転送のようなデータ転送処理のみを行う場合もある。
【００１９】
次に、各バスマスタ（インターコネクト）とバススレーブの間に挿入されたレジスタスライスの配置について説明する。インターコネクトＩＣ０（４）とバススレーブＳ０（７）との間には、レジスタスライスは挿入されておらず、インターコネクトＩＣ０（４）とバススレーブＳ１（８）との間には、２つのレジスタスライスＲＳ１（１１）、ＲＳ２（１２）が挿入されている。インターコネクトＩＣ０（４）とバススレーブＳ２（９）との間には、レジスタスライスＲＳ３（１３）が挿入されている。
【００２０】
また、インターコネクトＩＣ１（５）とバススレーブＳ１（８）との間には、レジスタスライスは挿入されておらず、インターコネクトＩＣ１（５）とバススレーブＳ０（７）との間には、レジスタスライスＲＳ４（１４）が挿入されている。インターコネクトＩＣ１（５）とバススレーブＳ２（９）との間には、レジスタスライスＲＳ５（１５）が挿入されている。
【００２１】
さらに、インターコネクトＩＣ２（６）とバススレーブＳ２（９）との間には、レジスタスライスは挿入されておらず、インターコネクトＩＣ２（６）とバススレーブＳ０（７）との間には、レジスタスライスＲＳ６（１６）が挿入されている。インターコネクトＩＣ２（６）とバススレーブＳ１（８）との間には、２つのレジスタスライスＲＳ７（１７）、ＲＳ８（１８）が挿入されている。これらのレジスタスライスは、論理設計時には存在せず、レイアウト工程の過程で挿入されたものである。
【００２２】
図２は、個数記憶手段としての経路情報格納部２１に格納された経路情報の一例を示す図である。経路情報は、各バスマスタ（インターコネクト）と各バススレーブの間に挿入された、レジスタスライスの段数（個数）を表している。また、経路情報格納部２１は、本実施形態においてはレイアウト工程完了後にハードのデコード回路を埋め込むことによって実現している。例えば、レイアウト工程時には、デコード回路が埋め込まれるスペースを予め空けておくことを想定する。このように、経路情報格納部２１は、バスマスタ及びバススレーブ毎に、バスマスタとバススレーブとを接続するチャネルに挿入されたレジスタスライスの個数を記憶する。
【００２３】
容量記憶手段としての記憶容量情報格納部２２は、前記の、３つのバススレーブＳ０（７）、Ｓ１（８）、Ｓ２（９）に各々内蔵されたデータを記憶装置の記憶容量の値（容量情報）を格納している。図３は、記憶容量情報格納部２２が記憶する、記憶容量を示す容量情報を例示する図である。図３の例では、バススレーブＳ０（７）、Ｓ１（８）、Ｓ２（９）の記憶容量は、それぞれ、１０２４ビット、４０９６ビット、１０２４ビットであり、各記憶装置の比は、Ｓ０：Ｓ１：Ｓ２＝１：４：１となっている。
【００２４】
動作状況記憶手段としてのバスマスタ動作状況格納部２３は、バスマスタ毎に処理内容と必要な記憶装置の容量を格納するレジスタを具備する。この処理内容には、バスマスタが動作中であるか否かを示す動作状況が含まれる。図４は、バスマスタ動作状況格納部２３が記憶する動作状況を例示する図である。図４の例では、バスマスタＭ０（１）、Ｍ１（２）がｉｄｌｅ（非動作中）、Ｍ２（３）がｂｕｓｙ（動作中）となっている。各バスマスタは、処理の開始時にバスマスタが行う処理内容と必要な記憶装置の容量を前記のレジスタに書き込み、処理が完了すると前記の処理内容を格納するレジスタにｉｄｌｅ状態を表す値を書き込む。
【００２５】
割付手段としての割付部２４は、バスマスタの少なくともいずれかとバススレーブの少なくともいずれかとを用いて所定の処理を行う場合に、レジスタスライスの個数に基づいて、使用するバスマスタとバススレーブとを割り付ける。ここで、割付部２４は、使用するバスマスタとバススレーブとを接続するチャネルに挿入されたレジスタスライスの個数が最小となるように、バスマスタとバススレーブとを割り付ける。このため、レジスタスライスを挿入した場合でもレイテンシの最も小さいパフォーマンスの高い処理を行うことができる。また、割付部２４は、記憶容量情報格納部２２、バスマスタ動作状況格納部２３を参照してバスマスタ並びにバススレーブを割付けるため、更にパフォーマンスの最適化を図ることができる。
【００２６】
（割付部２４の処理）
次に、割付部２４が実行する処理について、図５を参照して説明する。図５は割付部２４の処理の流れを示すフローチャートである。
【００２７】
まず、ステップＳ５０１において、半導体集積回路１００が実行する処理内容を判定する。本実施形態では、半導体集積回路１００が実行する処理として、バスマスタにおける画像処理と、２つのスレーブ間でのデータ転送がある場合を例示的に説明する。処理内容が画像処理の場合（ステップＳ５０１で「画像処理」）はステップＳ５０２へ進み、データ転送の場合（ステップＳ５０１で「データ転送」）はステップＳ５０７へ進む。
【００２８】
ステップＳ５０２では、画像処理を実行しようとしているバスマスタに対応するデフォルトのバススレーブが有する記憶装置の記憶容量で、画像処理を実行できるか否かを判定する。なお、本実施形態では、バスマスタとチャネルを介して接続されたバススレーブであって、チャネル上に挿入されたレジスタスライスの個数が最小のバススレーブを、そのバスマスタのデフォルトのバススレーブとする。即ち、バスマスタとのレイテンシが最も小さいバススレーブがデフォルトのバススレーブである。デフォルトのマスタスレーブは、経路情報格納部２１を参照して決定することができ、バススレーブの記憶容量は記憶容量情報格納部２２を参照して取得することができる。
【００２９】
実行しようとしている画像処理に必要な記憶容量を、デフォルトのバススレーブで確保できる場合（ステップＳ５０２でＹＥＳ）は処理可能であるとしてステップＳ５０５へ進む。確保できない場合（ステップＳ５０２でＮＯ）は処理可能でないとしてステップＳ５０３へ進む。
【００３０】
ステップＳ５０３以降では、他のバスマスタが使用していないバススレーブを、実行しようとしている画像処理において使用するための処理を行う。ステップＳ５０３では、次にレイテンシの低いバススレーブをデフォルトのバススレーブとするバスマスタが非動作中であるか否かを判定する。非動作中であればそのバススレーブは他のバスマスタに使用されていないため、そのバススレーブを使用することができる。非動作中の場合（ステップＳ５０３でＹＥＳ）はステップＳ５０６へ進み、動作中の場合（ステップＳ５０３でＮＯ）はステップＳ５０４へ進む。
【００３１】
ステップＳ５０４では、全てのバススレーブについてステップＳ５０２又はＳ５０３の判定を行ったか否かを判定する。全てのバススレーブについて判定している場合（ステップＳ５０４でＹＥＳ）はデフォルトのバススレーブ以外で使用できるバススレーブは存在しないためステップＳ５０５へ進む。全てのバススレーブについて判定していない場合（ステップＳ５０４でＮＯ）は再度ステップＳ５０３へ戻って、他のバススレーブについて検討する。
【００３２】
ステップＳ５０５では、使用するバススレーブとして、デフォルトのバススレーブのみを選択する。そして、ステップＳ５１１へ進む。
【００３３】
一方、ステップＳ５０６では、使用するバススレーブとして、デフォルトのバススレーブに加えてステップＳ５０３で評価したバススレーブを追加する。そして、ステップＳ５１１へ進む。
【００３４】
実行する処理がデータ転送の場合は、ステップＳ５０７において、データ転送を行うスレーブ間でとりうる経路のうち、レイテンシが最も低い経路に含まれるバスマスタが非動作中であるか否かを判定する。非動作中の場合（ステップＳ５０７でＹＥＳ）はステップＳ５１０へ進み、動作中の場合（ステップＳ５０７でＮＯ）はステップＳ５０８へ進む。  ステップＳ５０８では、データ転送を行うスレーブ間でとりうる経路のうち、次にレイテンシが低い経路に含まれるバスマスタが非動作中であるか否かを判定する。非動作中の場合（ステップＳ５０８でＹＥＳ）はステップＳ５１０へ進み、動作中の場合（ステップＳ５０８でＮＯ）はステップＳ５０９へ進む。
【００３５】
ステップＳ５０９では、全てのバスマスタについてステップＳ５０７又はＳ５０８の判定を行ったか否かを判定する。全てのバスマスタについて判定している場合（ステップＳ５０９でＹＥＳ）は使用できるバスマスタは存在しないため処理を終了する。全てのバスマスタについて判定していない場合（ステップＳ５０９でＮＯ）は再度ステップＳ５０８へ戻って、他のバスマスタについて検討する。
【００３６】
ステップＳ５１０では、ステップＳ５０７又はＳ５０８で評価したバスマスタを選択してステップＳ５１１へ進む。
【００３７】
ステップＳ５１１では、ステップＳ５０５、Ｓ５０６、Ｓ５１０で選択・追加されたバスマスタ、バススレーブを使用する素子として決定し、当該素子を割り付ける。そして、処理を終了する。
【００３８】
図６は、上記のフローに基づき動作する割付部２４の処理内容例を示した図である。図６において、各バスマスタと各バススレーブのデフォルトの（基本的な）組合せは、バスマスタＭ０（１）に対してはバススレーブＳ０（７）を割り付けている（条件１）。同様に、バスマスタＭ１（２）に対してはバススレーブＳ１（８）を、バスマスタＭ２（３）に対してはバススレーブＳ２（９）を割付けている（条件２、３）。また、図２の経路情報に示す通り、前記３組のバスマスタ―バススレーブ間のレジスタスライス挿入段数は、各々０になるよう（即ち、最小レイテンシとなるよう）、レイアウト的な考慮もなされた設計となっている。以下、前記のデフォルトの割付け動作と異なる例外的なバスマスタ並びにバススレーブの割付け動作として、画像処理を行う場合の動作例（動作例１）とデータ転送を行う場合の動作例（動作例２）について、図６を参照して説明する。
【００３９】
（動作例１）
例外的なバスマスタ並びにバススレーブの割付けを行う第１の例として、バスマスタが画像処理を行う場合を説明する。このような場合、バスマスタは、一定の記憶容量を必要とする。例えば、バスマスタＭ０（１）の行う画像処理が、バススレーブＳ０（７）の容量だけでは不足する場合がある。例えば、通常は入力画像データと画像処理結果の両方をバススレーブＳ０（７）の記憶装置に格納可能だが、ある種の画像処理の時のみ、画像処理結果をバススレーブＳ０（７）の記憶装置に格納できない場合がある。このような場合、バスマスタＭ２（３）がｉｄｌｅ状態であれば、バススレーブＳ０（７）の次にレイテンシの小さいバススレーブＳ２（９）の記憶装置も同時に使用する（図６の条件４）。これは、図２の経路情報に示す通り、バスマスタＭ０（１）と各バススレーブの間に挿入されたレジスタスライスの段数は、バススレーブＳ０（７）が０段、バススレーブＳ１（８）が２段、バススレーブＳ２（９）が１段であるためである。
【００４０】
同様に、バスマスタＭ２（３）の画像処理がバススレーブＳ２（９）の容量だけでは不足する場合は、バスマスタＭ０（１）がｉｄｌｅ状態ならばバススレーブＳ２（９）の次にレイテンシの小さいバススレーブＳ０（７）の記憶装置も使用する（条件５）。図２の経路情報に示す通り、バスマスタＭ２（３）と各バススレーブの間に挿入されたレジスタスライスの段数は、バススレーブＳ０（７）が１段、バススレーブＳ１（８）が２段、バススレーブＳ２（９）が０段であるためである。
【００４１】
また、バスマスタＭ０（１）とバスマスタＭ２（３）が同時に画像処理を行っている場合で、かつ、バスマスタＭ１（２）がｉｄｌｅ状態の場合を考える。このような場合は、バスマスタＭ０（１）に対してはバススレーブＳ０（７）とバススレーブＳ１（８）を、バスマスタＭ２（３）に対してはバススレーブＳ２（９）とバススレーブＳ１（８）を割付ける（条件６、条件７）。
【００４２】
さらに、バスマスタＭ０（１）とバスマスタＭ２（３）が同時に画像処理を行っている場合で、かつ、バスマスタＭ１（２）も同時に画像処理または外部との通信処理を行っている場合を考える。このような場合は、記憶装置のリソースが互いに競合することになるため、バスマスタＭ０（１）に対してはバススレーブＳ０（７）のみを、バスマスタＭ２（３）に対してはバススレーブＳ２（９）のみを割付ける（条件８）。
【００４３】
上記のように、割付部２４は、動作中のバスマスタが使用しているバススレーブを使用しない範囲で、前記レジスタスライスの個数が最小となるようにバスマスタとバススレーブとを割り付ける。このため、このため、すでに素子が使用されている場合でも、最大限レイテンシの低い処理を行うことができるため、複数の処理を高パフォーマンスで実行することが可能である。
【００４４】
また、割付部２４は、記憶容量情報格納部２２に記憶された容量情報に基づいて、所定の処理が必要とする記憶容量を確保するためのスレーブを割り付ける。このため、必要な記憶容量を確保してパフォーマンスの高い処理を実行することができる。
【００４５】
（動作例２）
次に、例外的なバスマスタ並びにバススレーブの割付けを行う第２の例として、各バスマスタが２つのバススレーブ間のデータ転送処理を行う場合について説明する。
【００４６】
例えば、バススレーブＳ０（７）からバススレーブＳ１（８）へデータ転送処理を行う場合、バスマスタＭ１（２）がバスマスタとなるのが最も低レイテンシとなる。これは、図２の経路情報に示す通り、バススレーブＳ０（７）からバススレーブＳ１（８）の間に挿入されたレジスタスライスの段数は以下の通りであるからである。
・バスマスタＭ０（１）を使用する場合は２段。
・バスマスタＭ１（２）を使用する場合は１段。
・バスマスタＭ２（３）を使用する場合は３段。
【００４７】
従って、バススレーブＳ０（７）からバススレーブＳ１（８）へデータ転送処理を行う場合は次のように動作する。即ち、データ転送元のバススレーブＳ０（７）のデフォルトのバスマスタであるバスマスタＭ０（１）が、バススレーブＳ１（８）へのデータ転送処理要求を割付部２４に対して発行する。するとと、割付部２４は、バスマスタＭ１（２）がｉｄｌｅ状態である場合には最も低レイテンシでデータ転送が行えるバスマスタＭ１（２）をバスマスタとして割付ける（図６の条件９）。
【００４８】
この場合、割付部２４は、バスマスタＭ０（１）に対して他のバスマスタに転送許可を与えることを通知する。これを受けてバスマスタＭ０（１）は、前記データ転送に必要な設定値（転送先アドレス、転送元アドレス、転送長等）を割付部２４に対して転送する。その後、割付部２４はバスマスタＭ０（１）から転送された前記設定値をバスマスタＭ１（２）に対して設定するとともに、バススレーブＳ０（７）からバススレーブＳ１（８）へのデータ転送処理を起動する。
【００４９】
一方、バスマスタＭ１（２）が外部との通信等でｂｕｓｙ状態である場合は、バスマスタＭ１（２）の次に低レイテンシであるバスマスタはバスマスタＭ０（１）である。このため、割付部２４は、バスマスタＭ０（１）に対して前記のデータ転送処理の許可を与える（図６の条件１１）。
【００５０】
バススレーブＳ２（９）からバススレーブＳ１（８）へデータ転送処理を行う場合も、バスマスタＭ１（２）がバスマスタとなるのが最も低レイテンシとなる。これは、図２の経路情報に示す通り、バススレーブＳ２（９）からバススレーブＳ１（８）の間に挿入されたレジスタスライスの段数は、以下の通りであるからである。
・バスマスタＭ０（１）を使用する場合は３段。
・バスマスタＭ１（２）を使用する場合は１段。
・バスマスタＭ２（３）を使用する場合は２段。
【００５１】
このため、バススレーブＳ２（９）からバススレーブＳ１（８）へデータ転送処理を行う場合は次のように動作する。即ち、まず、データ転送元のバススレーブＳ２（９）のデフォルトのバスマスタであるバスマスタＭ２（３）が、バススレーブＳ１（８）へのデータ転送処理要求を割付部２４に対して発行する。これに応じて、割付部２４は、バスマスタＭ１（２）がｉｄｌｅ状態である場合には最も低レイテンシでデータ転送が行えるバスマスタＭ１（２）をバスマスタとして割付ける（図６の条件１０）。
【００５２】
この場合、割付部２４は、バスマスタＭ２（３）に対して他のバスマスタに転送許可を与えることを通知する。これを受けてバスマスタＭ２（３）は、前記データ転送に必要な設定値（転送先アドレス、転送元アドレス、転送長等）を割付部２４に対して転送する。その後、割付部２４はバスマスタＭ２（３）から転送された前記設定値をバスマスタＭ１（２）に対して設定するとともに、バススレーブＳ２（９）からバススレーブＳ１（８）へのデータ転送処理を起動する。
【００５３】
一方、バスマスタＭ１（２）が外部との通信等でｂｕｓｙ状態である場合は、バスマスタＭ１（２）の次に低レイテンシであるバスマスタはバスマスタＭ２（３）である。このため、割付部２４は、バスマスタＭ２（３）に対して前記のデータ転送処理の許可を与える（図６の条件１２）。
【００５４】
上記のように、割付部２４は、バスマスタ動作状況格納部２３を参照し、バスマスタの動作状況に基づいて、動作中のバスマスタを使用しない範囲でレジスタスライスの個数が最小となるように、バスマスタとバススレーブとを割り付ける。このため、すでに素子が使用されている場合でも、最大限レイテンシの低い処理を行うことができるため、複数の処理を項パフォーマンスで実行することが可能である。
【００５５】
以上のように、構成並びに処理を行うことにより、最適なバスマスタ並びにバススレーブを決定することが可能となり、これにより各バスマスタが実行する処理やデータ転送のパフォーマンスの最適化を行うことが可能となる。
【００５６】
なお、上記の半導体集積回路１００を備える情報処理装置も、同様にパフォーマンスの高い処理を実行することができる。このような情報処理装置は、パーソナルコンピュータ（ＰＣ）、ワークステーション（ＷＳ）、携帯情報端末、携帯電話等種類を問わない。
【図面の簡単な説明】
【００５７】
【図１】半導体集積回路の構成を表すブロック図である。
【図２】経路情報格納部に格納された経路情報の一例を示す図である。
【図３】記憶容量情報格納部が記憶する、記憶容量を示す容量情報を例示する図である。
【図４】バスマスタ動作状況格納部が記憶する動作状況を例示する図である。
【図５】割付部の処理の流れを示すフローチャートである。
【図６】割付部の処理内容例を示した図である。
【図７】ポイント・トゥ・ポイント通信を行うバスマスタとバススレーブにおける、ハンドシェーク例を示すブロック図である。
【図８】ポイント・トゥ・ポイント通信を行うバスマスタとバススレーブにおける、別のハンドシェーク例を示すブロック図である。
【図９】ポイント・トゥ・ポイント接続に対してレジスタスライスを挿入した接続例を示す図である。
【図１】
2009026150.tif 000003
【図２】
2009026150.tif 000004
【図３】
2009026150.tif 000005
【図４】
2009026150.tif 000006
【図５】
2009026150.tif 000007
【図６】
2009026150.tif 000008
【図７】
2009026150.tif 000009
【図８】
2009026150.tif 000010
【図９】
2009026150.tif 000011