(57)【要約】【課題】複数のバスマスタを備えた半導体装置において、バススレーブに対する処理を従来よりも効率的に実行できる半導体装置を提供する。【解決手段】半導体装置１００において、各マスタ装置Ｍ０〜Ｍｎは、複数のバスＢ０〜Ｂ４に接続され、複数のバスのうちの割当てられた１本のバスを介してスレーブ装置３０に対する処理要求をコントローラ２０に出力する。複数のマスタ装置Ｍ０〜Ｍｎの各々には割当優先度が定められる。調停回路１１は、複数のマスタ装置Ｍ０〜Ｍｎのうちバスの割当を要求している１または複数のマスタ装置に対して、バスの割当を要求したタイミングと割当優先度とに基づいて不使用のバスを割当てるとともに、バスを割当てたマスタ装置の処理要求に対して処理順位を設定する。コントローラ２０は、バスが割当てられたマスタ装置から受けた処理要求の内容と処理順位とに基づいて、スレーブ装置３０に対して処理を実行する。【選択図】図２
2011242928.tif 000002
【特許請求の範囲】
【請求項１】
ｍ本（ｍは２以上の整数）のバスと、
前記ｍ本のバスに接続される、スレーブ装置用のコントローラと、
各々が前記ｍ本のバスに接続され、前記ｍ本のバスのうちの割当てられた１本のバスを介して前記スレーブ装置に対する処理要求を前記コントローラに出力する、中央処理装置（ＣＰＵ）を含むｎ個（ｎはｍより大きい整数）のマスタ装置と、
前記ｍ本のバスの割当を調停する調停回路とを備え、
前記ｎ個のマスタ装置の各々には割当優先度が定められ、
前記調停回路は、前記ｎ個のマスタ装置のうちバスの割当を要求している１または複数のマスタ装置に対して、バスの割当を要求したタイミングと割当優先度とに基づいて不使用のバスを割当てるとともに、バスを割当てたマスタ装置が出力する処理要求に対して処理順位を設定し、
前記コントローラは、バスが割当てられたマスタ装置から受けた処理要求の内容と前記調停回路によって設定された処理順位とに基づいて、前記スレーブ装置に対して処理を実行する、半導体装置。
【請求項２】
前記調停回路は、前記ｎ個のマスタ装置のうち１個のマスタ装置が前記ｍ本のバスのうちいずれかの割当を要求しているときに不使用のバスがある場合には、バスの割当を要求しているマスタ装置に対して不使用のバスのうちの１本を割当て、
前記調停回路は、前記ｎ個のマスタ装置のうち複数のマスタ装置が同時に前記ｍ本のバスのうちいずれかの割当を要求しているときに不使用のバスがある場合には、不使用のバスがなくなるまで、バスの割当を要求しているマスタ装置に対して割当優先度の高いほうから順に不使用のバスを１本ずつ割当て、
前記調停回路は、バスを割当てたタイミングが早いマスタ装置の処理要求ほど処理順位を高く設定する、請求項１に記載の半導体装置。
【請求項３】
前記ｍ本のバスは、ｐ本の第１バスと１本の第２バスとを含み（ただし、ｐは２以上の整数、ｐ＋１＝ｍ）、
前記調停回路は、前記ｎ個のマスタ装置のうち１個のマスタ装置が前記ｐ本の第１バスのうちいずれかの割当を要求しているときに不使用の第１バスがある場合には、第１バスの割当を要求しているマスタ装置に対して不使用の第１バスのうちの１本を割当て、
前記調停回路は、前記ｎ個のマスタ装置のうち複数のマスタ装置が同時に前記ｐ本の第１バスのうちいずれかの割当を要求しているときに不使用の第１バスがある場合には、不使用の第１バスがなくなるまで、第１バスの割当を要求しているマスタ装置に対して割当優先度の高いほうから順に不使用の第１バスを１本ずつ割当て、
前記調停回路は、前記ｎ個のマスタ装置のうち１個のマスタ装置が前記第２バスの割当を要求しているときに第２バスが不使用の場合には、第２バスの割当を要求しているマスタ装置に対して前記第２バスを割当て、
前記調停回路は、前記ｎ個のマスタ装置のうち複数のマスタ装置が同時に前記第２バスの割当を要求しているときに第２バスが不使用の場合には、第２バスの割当を要求しているマスタ装置のうち最も割当優先度の高いマスタ装置に対して前記第２バスを割当て、
前記調停回路は、第１バスを割当てた複数のマスタ装置の中では、第１バスを割当てたタイミングが早いマスタ装置の処理要求ほど処理順位を高く設定し、第２バスを割当てたマスタ装置の処理要求は第１バスを割当てたどのマスタ装置の処理要求よりも処理順位を高く設定する、請求項１に記載の半導体装置。
【請求項４】
前記ｍ本のバスは、ｐ本の第１バスとｑ本の第２バスとを含み（ただし、ｐ、ｑは２以上の整数、ｐ＋ｑ＝ｍ）、
前記調停回路は、前記ｎ個のマスタ装置のうち１個のマスタ装置が前記ｐ本の第１バスのうちいずれかの割当を要求しているときに不使用の第１バスがある場合には、第１バスの割当を要求しているマスタ装置に対して不使用の第１バスのうちの１本を割当て、
前記調停回路は、前記ｎ個のマスタ装置のうち複数のマスタ装置が同時に前記ｐ本の第１バスのうちいずれかの割当を要求しているときに不使用の第１バスがある場合には、不使用の第１バスがなくなるまで、第１バスの割当を要求しているマスタ装置に対して割当優先度の高いほうから順に不使用の第１バスを１本ずつ割当て、
前記調停回路は、前記ｎ個のマスタ装置のうち１個のマスタ装置が前記ｑ本の第２バスのうちいずれかの割当を要求しているときに不使用の第２バスがある場合には、第２バスの割当を要求しているマスタ装置に対して不使用の第２バスのうちの１本を割当て、
前記調停回路は、前記ｎ個のマスタ装置のうち複数のマスタ装置が同時に前記ｑ本の第２バスのうちいずれかの割当を要求しているときに不使用の第２バスがある場合には、不使用の第２バスがなくなるまで、第２バスの割当を要求しているマスタ装置に対して割当優先度の高いほうから順に不使用の第２バスを１本ずつ割当て、
前記調停回路は、第１バスを割当てた複数のマスタ装置の中では、第１バスを割当てたタイミングが早いマスタ装置の処理要求ほど処理順位を高く設定し、第２バスを割当てた複数のマスタ装置の中では、第２バスを割当てたタイミングが早いマスタ装置の処理要求ほど処理順位を高く設定し、第２バスを割当てたマスタ装置の処理要求は第１バスを割当てたどのマスタ装置の処理要求よりも処理順位を高く設定する、請求項１に記載の半導体装置。
【請求項５】
前記ｍ本のバスのうちで可変のｋ本（ｋは２以上でｍ以下の整数）のバスが前記ｎ個のマスタ装置に対して割当が可能であり、
前記調停回路は、前記ｎ個のマスタ装置のうち１個のマスタ装置が前記ｋ本の割当可能なバスのうちいずれかの割当を要求しているときに不使用の割当可能なバスがある場合には、バスの割当を要求しているマスタ装置に対して不使用の割当可能なバスの１本を割当て、
前記調停回路は、前記ｎ個のマスタ装置のうち複数のマスタ装置が同時に前記ｋ本の割当可能なバスのうちいずれかの割当を要求しているときに不使用の割当可能なバスがある場合には、前記ｋ本の割当可能なバスのうちで不使用のバスがなくなるまで、バスの割当を要求しているマスタ装置に対して割当優先度の高いほうから順に不使用の割当可能なバスを１本ずつ割当て、
前記調停回路は、バスを割当てたタイミングが早いマスタ装置の処理要求ほど処理順位を高く設定する、請求項１に記載の半導体装置。
【請求項６】
前記コントローラは、バスが割当てられた複数のマスタ装置から複数の処理要求を受けている場合に、最も処理順位の高い処理と並行して実行可能な処理については、最も処理順位の高い処理とともに並行して実行し、最も処理順位の高い処理と並行して実行できない処理については、最も処理順位の高い処理の実行終了後に実行する、請求項１〜５のいずれか１項に記載の半導体装置。
【請求項７】
前記スレーブ装置は、複数のバンクを有するメモリ装置であり、
前記コントローラは、複数の処理要求が同一のバンクに対する処理要求の場合には、これらの処理を処理順位の高いものから順に実行し、
前記コントローラは、複数の処理要求が互いに異なるバンクに対する処理要求の場合には、これらの処理を並行して実行する、請求項１〜５のいずれか１項に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、バスを介して接続されたスレーブ装置をアクセスする複数のマスタ装置を含んだ半導体装置に関し、特に多バンク構成のＤＲＡＭ装置をアクセスする半導体装置に関する。
【背景技術】
【０００２】
複数のバンクを有するＤＲＡＭ（Dynamic  Random  Access  Ｍemory）装置において、アクセス（読出または書込）の効率化のための技術が種々提案されている。
【０００３】
たとえば、特開平１１−１４３７７０号公報（特許文献１）に記載のＤＲＡＭ制御装置は、アクセスの効率化を図るためにＤＲＡＭにアクセスするアドレスの順番を、任意の１つのバンクにプリチャージを行うと同時に他の異なるバンクに書き込み又はプリチャージのアクセスを行えるように入れ替える。または、ＤＲＡＭにアクセスするアドレスの順番を、同一バンクの同一ロウアドレスにおいて、カラムアドレスを変えるだけで順次アクセスできるように入れ替える。
【０００４】
特開２００６−１１５９３号公報（特許文献２）および特開２００６−２６０４７２号公報（特許文献３）に記載の技術では、バンク間でインターリーブアクセスを行なうことによってアクセスの効率化が図られる。このうち特開２００６−１１５９３号公報（特許文献２）に記載のメモリ制御装置は、複数のバンクからなるメモリに対するデータ転送に際して、予め設定された複数のコマンドパターンのうち１のコマンドパターンを順次選択する。ここで、各コマンドパターンは、各バンクに対するコマンドを含む。メモリ制御装置は、連続する２つのコマンドパターンを、メモリに対する所定のアクセス基準を満足するタイミングをもって順次連結する。
【０００５】
特開２００６−２６０４７２号公報（特許文献３）に記載のメモリアクセス装置は、コマンド分割部と、コマンド管理部と、アクセス順最適化部と、コマンド発行部とを備える。コマンド分割部は、外部から入力されるメモリアクセス要求をバンク単位のコマンドに分割する。コマンド管理部は、分割されたコマンドを保持する。アクセス順最適化部は、コマンド管理部に保持されているコマンド発行順序を入替える。コマンド発行部は、アクセス順最適化部による発行順序に従ってコマンドをメモリに発行する。
【０００６】
特開平１０−２９３７４５号公報（特許文献４）の記載の技術では、共通共用バスにアクセスする複数の装置が、バス・コントローラにバス要求とともに優先レベルを渡す。バス・コントローラのアービタは複数の要求を受け取ると、それらの様々なバス要求に関連づけられた優先レベルを比較して、最も高い優先レベルを持つ装置にバスの制御権を付与する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平１１−１４３７７０号公報
【特許文献２】特開２００６−１１５９３号公報
【特許文献３】特開２００６−２６０４７２号公報
【特許文献４】特開平１０−２９３７４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ところで、近年のディジタル機器では、ＣＰＵ（中央処理装置：Central  Processing  Unit）を含む多数のバスマスタがバスに接続され、これら多数のバスマスタが多バンク方式のメモリ装置にアクセスするような構成が一般的となっている。このような装置構成の場合には、多数のバスマスタから出力されたメモリアクセス要求に対してどのようにアクセス順位を決定するかが、メモリアクセスの効率化の点で重要である。
【０００９】
さらに、上記の多数のバスマスタが要求する処理の中には、画像処理のようにリアルタイム処理を必要とするものが多く含まれる。このようなリアルタイム処理においては、処理されるべき時間内に処理を終了させる必要がある。このため、上記の特開平１１−１４３７７０号公報（特許文献１）や特開２００６−２６０４７２号公報（特許文献３）に記載の技術のようにメモリアクセスする順番を入れ替える方法は好ましくない。
【００１０】
この発明の目的は、複数のバスマスタを備えた半導体装置において、メモリ装置などのバススレーブに対する処理を従来よりも効率的に実行できる半導体装置を提供することである。
【課題を解決するための手段】
【００１１】
この発明の実施の一形態による半導体装置は、ｍ本（ｍは２以上の整数）のバスと、ｍ本のバスに接続される、スレーブ装置用のコントローラと、中央処理装置（ＣＰＵ：Central  Processing  Unit）を含むｎ個（ｎはｍより大きい整数）のマスタ装置と、ｍ本のバスの割当を調停する調停回路とを備える。ｎ個のマスタ装置の各々は、ｍ本のバスに接続され、ｍ本のバスのうちの割当てられた１本のバスを介してスレーブ装置に対する処理要求をコントローラに出力する。ｎ個のマスタ装置の各々には割当優先度が定められる。調停回路は、ｎ個のマスタ装置のうちバスの割当を要求している１または複数のマスタ装置に対して、バスの割当を要求したタイミングと割当優先度とに基づいて不使用のバスを割当てるとともに、バスを割当てたマスタ装置が出力する処理要求に対して処理順位を設定する。コントローラは、バスが割当てられたマスタ装置から受けた処理要求の内容と調停回路によって設定された処理順位とに基づいて、スレーブ装置に対して処理を実行する。
【発明の効果】
【００１２】
上記の実施の形態の半導体装置によれば、複数のバスが設けられ、バスの割当要求のタイミングと割当優先度とに基づいて複数のバスの割当が調停されるとともに、スレーブ装置に対する処理要求の内容と調停回路によって設定された処理順位とに基づいて実際の処理が実行されるので、複数のバスマスタから要求された処理を従来よりも効率的に実行することができる。
【図面の簡単な説明】
【００１３】
【図１】この発明の実施の形態１に従う半導体装置１００の構成を概略的に示すブロック図である。
【図２】この発明の実施の形態１に従う半導体装置１００の構成をより詳細に示すブロック図である。
【図３】バスマスタＭからインタコネクト回路１０に投入されるトランザクションについて説明するための図である。
【図４】図２のバスアービタ１１の具体的な動作を示すフローチャートである。
【図５】複数のトランザクションが投入されたときのバスアービタ１１の動作について説明するための図である。
【図６】図５の場合でバスが割当てられた後の半導体装置１００の動作について説明するための図である。
【図７】ＳＤＲＡＭコントローラ２０の動作について説明するためのフローチャートである。
【図８】半導体装置１００の動作の一例を示すタイミング図である。
【図９】図２の半導体装置１００の比較例としての半導体装置９００の構成を示すブロック図である。
【図１０】図２の半導体装置１００のスループットと図９の比較例の半導体装置３００のスループットとを比較して示した図である。
【図１１】この発明の実施の形態２に従う半導体装置２００の構成を示すブロック図である。
【図１２】図１１のバスアービタ１１Ａの動作を示すフローチャートである。
【図１３】複数のトランザクションが投入されたときのバスアービタ１１Ａの動作について説明するための図である。
【図１４】半導体装置２００の動作の一例を示すタイミング図である。
【図１５】この発明の実施の形態３に従う半導体装置３００の構成を示すブロック図である。
【図１６】複数のトランザクションが投入されたときのバスアービタ１１Ｂの動作について説明するための図である。
【発明を実施するための形態】
【００１４】
以下、この発明の実施の形態について図面を参照して詳しく説明する。なお、同一または相当する部分には同一の参照符号を付して、その説明を繰返さない。
【００１５】
＜実施の形態１＞
図１は、この発明の実施の形態１に従う半導体装置１００の構成を概略的に示すブロック図である。
【００１６】
図１を参照して、半導体装置１００は、ＣＰＵ１０１を含む多数のマクロ１０１〜１０８（ＩＰ：Intellectual  Propertyとも称する）と、ＳＤＲＡＭ（Synchronous  Dynamic  Random  Access  Ｍemory）３０を制御するＳＤＲＡＭコントローラ２０と、多数のマクロ１０１〜１０８とＳＤＲＡＭコントローラ２０とを接続するインタコネクト回路１０とを備えたシステムＬＳＩ（Large  Scale  Integration）である。システムＬＳＩ（半導体装置）にＳＤＲＡＭ装置３０まで含めることもできる。半導体装置１００は、１つの半導体チップ上に、必要とされる一連の機能ＩＰ（システム）が集積されているので、ＳｏＣ（System-on-Chip）とも呼ばれる。近年のディジタル機器、たとえば、ディジタルテレビジョン装置、Ｂｌｕｅ−ｒａｙディスクプレーヤ／レコーダ、ディジタルスチルカメラ、携帯電話機、カーナビゲーション装置などに搭載されるＳｏＣは、図１のように多数のマクロがバスに接続される構成が一般的となっている。
【００１７】
ＳＤＲＡＭ装置３０は、複数バンクを有する。ＳＤＲＡＭ装置３０はアクセスする行（ページ）の活性化に時間を要するため、複数バンクを有するＳＤＲＡＭ装置３０を効率良くアクセスするためには、（１）同じ行のデータを連続してアクセスすること、（２）１つ前のアクセスと異なる行をアクセスするときは、異なるバンクにアクセスすることが必要になる。（１）をバーストアクセス、（２）をバンクインタリーブと呼ぶ。
【００１８】
後述するようにインタコネクト回路１０には複数のバスが設けられ、各マクロからＳＤＲＡＭ装置３０にアクセスするときにこれらのバスがマクロに割当てられるので、マクロ１０１〜１０８はバスマスタとも呼ばれる。これに対してＳＤＲＡＭ装置３０はバススレーブと呼ばれる。図１では図示を省略しているが、インタコネクト回路１０には、ＳＤＲＡＭ装置３０以外にも多数のバススレーブが接続されている。
【００１９】
マクロ１０１〜１０８は、リアルタイム型バスマスタ１０３〜１０８とＣＰＵ１０１を含むベストエフォート型バスマスタ１０１，１０２とに分類することができる。リアルタイム型バスマスタとは、バスアクセスリクエストを発行してから、ある制限時間内にデータ転送処理が完了する必要があるバスマスタのことである。一方、ベストエフォート型バスマスタは、バスアクセスリクエストを発行してからデータ転送処理が完了するまでに制限時間がないバスマスタのことである。
【００２０】
図２は、この発明の実施の形態１に従う半導体装置１００の構成をより詳細に示すブロック図である。
【００２１】
図２を参照して、半導体装置１００は、ｎ＋１個のバスマスタＭ０〜Ｍｎと、インタコネクト回路１０と、ＳＤＲＡＭコントローラ２０とを含む。ここで、インタコネクト回路１０は、ｍ＋１本（ｍは１以上ｎ未満の整数、図２ではｍ＝３）のバスＢ０〜Ｂ３と、バスの割当を調停するバスアービタ１１（調停回路）と、ｍ＋１個のバッファｂｕｆ０〜ｂｕｆ３とを含む。ＳＤＲＡＭコントローラ２０は、コマンドコントローラ２１と、ｍ＋１個のキューｑｕｅ０〜ｑｕｅ３とを含む。
【００２２】
バッファｂｕｆ０〜ｂｕｆ３およびキューｑｕｅ０〜ｑｕｅ３は、バスマスタＭ０〜Ｍｎが出力するコマンド信号やライトデータなどを一時的に格納する。コマンドコントローラ２１は、バッファｂｕｆ０〜ｂｕｆ３およびキューｑｕｅ０〜ｑｕｅ３を介して受けたコマンド信号やライトデータなどに応答してＳＤＲＡＭ装置３０にコマンドを発行する。バッファｂｕｆ０〜ｂｕｆ３を設けることによって、バスマスタＭ０〜Ｍｎがコマンド信号やライトデータなどを出力するタイミングと、ＳＤＲＡＭコントローラ２０がこれらの信号を受け取るタイミングとを調整することができる。キューｑｕｅ０〜ｑｕｅ３は、コマンドコントローラ２１が次に受け取る信号を先読みして先行動作を行なうために設けられているが、図２の半導体装置１００の場合には必ずしも必要な構成ではない。各キューを多段構成にすると先行動作を行なうのにより効果的である。
【００２３】
なお、以下の説明で、バスマスタＭ０〜Ｍｎについて総称する場合または不特定ものを示す場合にバスマスタＭと記載する。バスＢ０〜Ｂ３およびバッファｂｕｆ０〜ｂｕｆ３を総称する場合にバス１３およびバッファ１２とそれぞれ記載する。
【００２４】
バスマスタＭ０〜Ｍｎの各々は、全てのバスＢ０〜Ｂ３と接続される。バッファｂｕｆ０〜ｂｕｆ３はバスＢ０〜Ｂ３にそれぞれ対応し、対応関係にあるバッファとバスとが個別に接続される。キューｑｕｅ０〜ｇｕｅ３はバッファｂｕｆ０〜ｂｕｆ３にそれぞれ対応する。各キューは、対応のバッファおよびコマンドコントローラ２１に接続される。上記の接続によって、バスマスタＭ０〜Ｍｎの各々からバス、バッファ、およびキューをそれぞれ経由してコマンドコントローラ２１に至る経路が４つ（ｍ＋１）存在することになる。バスアービタ１１は、各バスマスタＭからＳＤＲＡＭ装置３０へアクセス要求があったときに、これらの４つの経路のうちのいずれか１つをアクセス要求をしているバスマスタＭに割当てる。各バスマスタＭは割当てられた経路を介して、ＳＤＲＡＭ装置３０に対する一連の処理内容（トランザクション）をコマンドコントローラ２１に出力する。
【００２５】
具体的にライトアクセスのときは、バスマスタＭは、アドレスやその他のアクセスに必要な情報とＳＤＲＡＭ装置３０に書込むライトデータとを割当てられた経路を介してＳＤＲＡＭコントローラ２０に転送する。なお、アドレスや他の情報を転送する経路と、ライトデータを転送する経路は別であるが、図２では簡単のため１本の線で示している。リードアクセスのときは、ＳＤＲＡＭコントローラ２０は、バスマスタＭから転送されたアドレスやその他のアクセスに必要な情報に基づいて、ＳＤＲＡＭ装置３０から読み出したリードデータをバスマスタＭに転送する。
【００２６】
図３は、バスマスタＭからインタコネクト回路１０に投入されるトランザクションについて説明するための図である。
【００２７】
図３（Ａ）は、ライトアクセスにおいてバスマスタＭから出力される信号波形の一例を示す。図３（Ａ）のクロックサイクル“１”において、バスマスタＭは、バスの割当を要求するためのバス要求信号（ＲＥＱ）をアサートするとともに、アドレス信号（ＡＤＲ）“Ａ０”、コマンド信号（ＣＭＤ）“Ｃ０”およびライトデータ（ＷＤＡＴＡ）“Ｄ０”の出力を開始する。バスアービタ１１がレディ信号（ＲＥＡＤＹ）をアサートすると、アドレス信号、コマンド信号、およびライトデータが割当てられたバスに転送される。ここで、１度に出力できるライトデータの大きさはバス幅などによって制限される。このため大きなデータを転送する場合には複数のデータに分けて出力する必要がある。たとえば、図３（Ａ）では１〜３のクロックサイクルで３個のライトデータ“Ｄ０”，“Ｄ１”，“Ｄ２”が出力される。
【００２８】
図３（Ｂ）は、図３（Ａ）を簡略化したタイミング図を示す。図３（Ｂ）に示すように、バスマスタＭは、クロックサイクル１〜３の間で連続して、アドレス信号“Ａ０”およびコマンド信号“Ｃ０”の両方を出力し、クロックサイクル１，２，３にそれぞれライトデータ“Ｄ０”，“Ｄ１”，“Ｄ２”を出力する。
【００２９】
図３（Ｃ）は、図３（Ａ）をさらに簡略化したタイミング図を示す。図３（Ｃ）に示すように、バスマスタＭは、クロックサイクル１〜３の間に一連の処理Ｗ００，Ｗ０１，Ｗ０２を出力する。この一連の処理の全体をトランザクションＷ０と称し、各クロックサイクルで出力される個々の処理単位をセルＷ００，Ｗ０１，Ｗ０２と称する。セルＷ００，Ｗ０１，Ｗ０２は、それぞれライトデータ“Ｄ０”，“Ｄ１”，“Ｄ２”をＳＤＲＡＭ装置３０のアドレス“Ａ０”に書込む処理を表わす。バスアービタ１１によって割当てられた経路は、１つのトランザクションＷ０が完了するまで専有される。
【００３０】
次に図２のバスアービタ１１およびＳＤＲＡＭコントローラ２０の具体的な動作について詳しく説明する。
【００３１】
バスアービタ１１は、ＳＤＲＡＭ装置３０へアクセスするためにバス（より一般的には、バスマスタＭとＳＤＲＡＭコントローラ２０との間の経路）の割当を要求しているバスマスタＭに対してバスの割当の調停を行なう。ここで、バスマスタＭ０〜Ｍｎの各々には、割当優先度が予め設定されている。バスアービタ１１は、１つのバスマスタＭがバスの割当を要求しているときに不使用のバスがある場合には、割当優先度によらずそのバスマスタＭに対して不使用のバスの１本を割当てる。一方、バスアービタ１１は、複数のバスマスタＭが同時にバスの割当を要求しているときに不使用のバスがある場合には、不使用のバスがなくなるまで割当優先度が高いほうから順にバスを割当てる。割当優先度は、バスマスタごとに固定されていてもよいし、割当要求をしてからの時間の経過とともに優先度が上がるようにしてもよい。もしくは、プログラムに従ってＣＰＵが割当優先度を設定するようにしてもよい。
【００３２】
バスアービタ１１は、さらに、バスを割当てたバスマスタＭが出力したトランザクションに対して処理順番を設定する。処理順番は、バスを割当てたタイミングが早いバスマスタのトランザクションほど早い処理順番になる（すなわち、処理順位が高くなる）ように設定される。したがって、複数のバスマスタが同時にバスの割当を要求した場合には、割当優先度の高いほうから順にバスが割当てられるので、割当優先度が高いバスマスタＭのトランザクションほど早い処理順番になる。一方、割当優先度が低くても相対的に早いタイミングでバスが割当てられたバスマスタのトランザクションは、相対的に遅いタイミングでバスが割当てられたバスマスタのトランザクションよりも処理順番が早くなる。このように処理順番を決定すれば、画像処理のようなリアルタイム処理が、本来処理されるべき時間内に処理できなくなる可能性をできるだけ回避することができる。
【００３３】
コマンドコントローラ２１は、バスアービタ１１によって設定された処理順番とトランザクションの内容とに基づいて、ＳＤＲＡＭ装置３０に対してコマンドを発行する。
【００３４】
図４は、図２のバスアービタ１１の具体的な動作を示すフローチャートである。図２、図４を参照して、まず、図４のステップＳ１０１で、バスアービタ１１は、処理順番ＩＤを１に初期化する。
【００３５】
次のステップＳ１０２で、バスアービタ１１は、バスの割当要求があるか否かを判定する。バスマスタＭからバスの割当要求がある場合（ステップＳ１０２でＹＥＳ）、バスアービタ１１は、処理をステップＳ１０３に進める。
【００３６】
ステップＳ１０３で、バスアービタ１１は、バスマスタＭとＳＤＲＡＭコントローラ２０との間の経路（すなわち、バスおよびバッファ）に空きがあるか否かを調べる。経路に空きがない場合（ステップＳ１０３でＮＯ）、処理はステップＳ１０２に戻る。経路に空きがある場合（ステップＳ１０３でＹＥＳ）、処理はステップＳ１０４に進む。
【００３７】
ステップＳ１０４で、バスアービタ１１は、バスの割当要求をしているバスマスタＭが１個の場合は、そのバスマスタＭに対して経路を割当てる。バスアービタ１１は、バスの割当要求をしているバスマスタＭが複数の場合は、最も割当優先度が高いバスマスタＭに対して経路を割当てる。そして、バスアービタ１１は、バスを割当てたバスマスタＭが要求している処理内容、すなわち、トランザクションの最初のセルの情報と処理順番ＩＤとを割当てたバッファに転送する。
【００３８】
次のステップＳ１０５で、バスアービタ１１は、処理順番ＩＤをカウントアップした後（すなわち、ＩＤに１を加えた後）、処理をステップＳ１０２に戻す。以下、ステップＳ１０２〜ステップＳ１０５が繰り返される。
【００３９】
図５は、複数のトランザクションが投入されたときのバスアービタ１１の動作について説明するための図である。バスマスタＭ０〜Ｍ２の割当優先度は、Ｍ０＞Ｍ１＞Ｍ２（Ｍ０が最も高く、Ｍ２が最も低い）とする。
【００４０】
図５（Ａ）を参照して、バスマスタＭ０〜Ｍ２が書込トランザクションＷ０〜Ｗ２をそれぞれ同時に発行したとする。まず、バス１３のうちのバスＢ０（図２参照）でバス権の調停が行われ、優先順位が最も高いバスマスタＭ０がバスＢ０のバス権（バスを使用する権利）を得る。バスマスタＭ０は、割当てられたバスＢ０を介してトランザクションＷ０をバッファｂｕｆ０に転送する。このとき同時に、バスアービタ１１は、処理順番ＩＤ＝１を生成してバッファｂｕｆ０に出力する。
【００４１】
次に図５（Ｂ）において、残りのバスマスタＭ１，Ｍ２が書込トランザクションＷ１，Ｗ２をそれぞれ発行している。この場合、バス１３のうちのバスＢ１（図２参照）でバス権の調停が行われ、優先順位が高いほうのバスマスタＭ１がバスＢ１のバス権を得る。バスマスタＭ１は、割当てられたバスＢ１を介してトランザクションＷ１をバッファｂｕｆ１に転送する。このとき同時に、バスアービタ１１は、処理順番ＩＤ＝２を生成してバッファｂｕｆ１に出力する。
【００４２】
次に図５（Ｃ）において、残りのバスマスタＭ２が書込トランザクションＷ２を発行している。この場合、バス１３のバスＢ２（図２参照）でバス権の調停が行われ、バスマスタＭ２がバスＢ２のバス権を得る。バスマスタＭ２は、割当てられたバスＢ２を介してトランザクションＷ２をバッファｂｕｆ２に転送する。このとき同時に、バスアービタ１１は、処理順番ＩＤ＝３を生成してバッファｂｕｆ２に出力する。
【００４３】
図６は、図５の場合でバスが割当てられた後の半導体装置１００の動作について説明するための図である。
【００４４】
図６（Ａ）を参照して、バッファｂｕｆ０に転送されたトランザクションＷ０の最初のセルＷ００の情報と処理順番（ＩＤ＝１）とは、ＳＤＲＡＭコントローラ２０のキューｑｕｅ０を通って、コマンドコントローラ２１に達する。コマンドコントローラ２１はセルＷ００をＳＤＲＡＭ装置３０に対してアクセスするためのコマンドに変換する。２番目以降のセルＷ０１，Ｗ０２についても同様の処理が実行される。
【００４５】
次に図６（Ｂ）を参照して、バッファｂｕｆ１に転送されたトランザクションＷ１の最初のセルＷ１０の情報と処理順番（ＩＤ＝２）とは、ＳＤＲＡＭコントローラ２０のキューｑｕｅ１を通って、コマンドコントローラ２１に達する。コマンドコントローラ２１はセルＷ１０をＳＤＲＡＭ装置３０に対してアクセスするためのコマンドに変換する。２番目以降のセルＷ１１，Ｗ１２についても同様の処理が実行される。
【００４６】
次に図６（ｃ）を参照して、バッファｂｕｆ２に転送されたトランザクションＷ２の最初のセルＷ２０の情報と処理順番（ＩＤ＝３）とは、ＳＤＲＡＭコントローラ２０のキューｑｕｅ２を通って、コマンドコントローラ２１に達する。コマンドコントローラ２１はセルＷ２０をＳＤＲＡＭ装置３０に対してアクセスするためのコマンドに変換する。２番目以降のセルＷ２１，Ｗ２２についても同様の処理が実行される。
【００４７】
図７は、ＳＤＲＡＭコントローラ２０の動作について説明するためのフローチャートである。図７のフローチャートは、ＳＤＲＡＭコントローラ２０が複数のバスマスタＭから書込処理の要求を受けた場合の動作の一例を示している。なお、図２のＳＤＲＡＭコントローラ２０内にはキューが設けられていないとしている。
【００４８】
図２、図７を参照して、ＳＤＲＡＭコントローラ２０は、まず、４個のバッファｂｕｆ０〜ｂｕｆ３に格納された書込トランザクションのうちで処理順番ＩＤが最も早いものを選択する（ステップＳ２０１）。ＳＤＲＡＭコントローラ２０は、当該トランザクションに対応してプリチャージ（ＰＲ）コマンドまたはアクティベート（ＡＣ）コマンドをまだ発行しておらず（ステップＳ２０２でＮＯ）、それらのコマンドを発行可能な場合には（ステップＳ２０３でＹＥＳ）、ＳＤＲＡＭコントローラ２０は、ＰＲコマンドまたはＡＣコマンドを発行する（ステップＳ２０４）。
【００４９】
ここで、プリチャージ（ＰＲ）は、バンクアドレスで指定されたバンクに対して前回のアクセスで読み出したデータをメモリセルに書込むことによって、全ての行をアクティブでない状態にする操作をいう。アクティベート（ＡＣ）は、バンクアドレスで指定されたバンクのうちのロウアドレスで指定された行をアクティブにしてアクセスできるようにする操作をいう。ＳＤＲＡＭ装置３０に対してデータを書き込む場合には、ＰＲコマンド、ＡＣコマンド、書込（ＷＲ）コマンドの順にコマンドを発行する必要がある。一度、ＰＲコマンドおよびＡＣコマンドを発行した後は（ステップＳ２０２でＹＥＳ）、同じ行のアクセスに対しては、ＷＲコマンドを続けて発行することができる（ステップＳ２０６）。ただし、各コマンドを発行した後には待ち時間が必要であり、その間は次のコマンドが発行できない（ステップＳ２０３でＮＯ、ステップＳ２０５でＮＯ）。
【００５０】
待ち時間のためにＡＣコマンドまたはＰＲコマンドを発行できない場合には（ステップＳ２０３でＮＯ）、ＳＤＲＡＭコントローラ２０は、処理順番ＩＤがその次に早いトランザクションのうち（ステップＳ２０８）、同一バンクで実行中の他のトランザクションがないもの（ステップＳ２０９でＮＯ）を選択する。そして、ＳＤＲＡＭコントローラ２０は、当該トランザクションに対してプリチャージ（ＰＲ）コマンドまたはアクティベート（ＡＣ）コマンドをまだ発行しておらず（ステップＳ２１０でＮＯ）、それらのコマンドを発行可能な場合には（ステップＳ２１１でＹＥＳ）、ＰＲコマンドまたはＡＣコマンドを発行する（ステップＳ２１２）。一度、ＰＲコマンドおよびＡＣコマンドを発行した後は（ステップＳ２１０でＹＥＳ）、同じ行のアクセスに対しては、ＷＲコマンドを続けて発行することができる（ステップＳ２１４）。他のトランザクションがない場合には（ステップＳ２０７でＮＯ）、処理はステップＳ２０１に戻る。
【００５１】
待ち時間のためにＷＲコマンドを発行できない場合も（ステップＳ２０５でＮＯ）、ＳＤＲＡＭコントローラ２０は、上記と同様の操作（ステップＳ２１５〜Ｓ２２０）を行なう。ただし、この場合には、処理順番ＩＤの最も早いトランザクションに対応したＷＲコマンドの発行を優先して実行するために、ＷＲコマンドの発行は行なわれない。
【００５２】
このように、ＳＤＲＡＭコントローラ２０は、複数のバスマスタＭから出力された複数のトランザクションが同一のバンクに対するものである場合には、これらのトランザクションを処理順番ＩＤの早いものから順に実行する。一方、ＳＤＲＡＭコントローラ２０は、複数のトランザクションが互いに異なるバンクに対するものである場合には、これらのトランザクションをインターリーブによって並行して実行する。
【００５３】
より一般的に言えば、ＳＤＲＡＭコントローラ２０は、バスが割当てられた複数のバスマスタＭから複数のトランザクションを受けている場合に、最も処理順位の高いトランザクションと並行して実行可能なトランザクションについては、最も処理順位の高いトランザクションとともに並行して実行する。ＳＤＲＡＭコントローラ２０は、最も処理順位の高いトランザクションと並行して実行できないトランザクションについては、最も処理順位の高いトランザクションの実行終了後に実行する。
【００５４】
図８は、半導体装置１００の動作の一例を示すタイミング図である。以下の説明で、バスマスタＭ０〜Ｍ２の割当優先度は、Ｍ０＞Ｍ１＞Ｍ２（Ｍ０が最も高く、Ｍ２が最も低い）とする。説明を簡単化するために、図２のＳＤＲＡＭコントローラ２０内にはキューが設けられていないとする。さらに、コマンド間（ＰＲ−ＡＣ間、ＡＣ−ＷＲ間、ＷＲ−ＷＲ間）の待ち時間（クロックサイクル数）は、使用するＳＤＲＡＭの仕様とクロック周波数によって決まるが、ここでは全て１サイクルであるとしている。
【００５５】
図２、図８を参照して、図８のクロックサイクル“１”で、バスマスタＭ０〜Ｍ２が書込トランザクションＷ０〜Ｗ２をそれぞれ同時に発行したとする。ここで、書込トランザクションＷ０は、バンク０（ＢＫ＝０）に対する書込処理であり、３個のセルＷ００，Ｗ０１，Ｗ０２から構成される。書込トランザクションＷ１は、バンク０（ＢＫ＝０）に対する書込処理であり、３個のセルＷ１０，Ｗ１１，Ｗ１２から構成される。書込トランザクションＷ２は、バンク１（ＢＫ＝１）に対する書込処理であり、３個のセルＷ２０，Ｗ２１，Ｗ２２から構成される。バスアービタ１１は、割当優先度の最も高いバスマスタＭ０に対してバスＢ０およびバッファｂｕｆ０を割当てるとともに、トランザクションＷ０に対して処理順番（ＩＤ＝１）を設定する。この結果、トランザクションＷ０の最初のセルＷ００と処理順番（ＩＤ＝１）がバッファｂｕｆ０に格納される。バッファｂｕｆ０の格納値は次のクロックサイクルで確定する。
【００５６】
次のクロックサイクル“２”で、バスアービタ１１は、割当優先度が次に高いバスマスタＭ１に対してバスＢ１およびバッファｂｕｆ１を割当てるとともに、トランザクションＷ１に対して処理順番（ＩＤ＝２）を設定する。この結果、トランザクションＷ１の最初のセルＷ１０と処理順番（ＩＤ＝２）がバッファｂｕｆ１に格納される。バッファｂｕｆ１の格納値は次のクロックサイクルで確定する。
【００５７】
次のクロックサイクル“３”で、バスアービタ１１は、割当優先度が次に高いバスマスタＭ２に対してバスＢ２およびバッファｂｕｆ２を割当てるとともに、トランザクションＷ２に対して処理順番（ＩＤ＝３）を設定する。この結果、トランザクションＷ２の最初のセルＷ２０と処理順番（ＩＤ＝３）がバッファｂｕｆ２に格納される。バッファｂｕｆ２の格納値は次のクロックサイクルで確定する。ＳＤＲＡＭコントローラ２０は、バッファｂｕｆ０に格納されたセルＷ００の内容に基づいて、バンク０（ＢＫ＝０）に対してＰＲコマンドを発行する（図７のステップＳ２０４）。
【００５８】
次のクロックサイクル“４”では、ＳＤＲＡＭコントローラ２０は、コマンド間の待ち時間のためにセルＷ００の内容に基づいてＡＣコマンドを発行することができない（図７のステップＳ２０３でＮＯ）。さらに、ＳＤＲＡＭコントローラ２０は、トランザクションＷ０とトランザクションＷ１とが同じバンク（ＢＫ＝０）に対する処理であるので、トランザクションＷ０が完了するまでトランザクションＷ１の最初のセルＷ１０の内容に基づいてＰＲコマンドを発行することができない（図７のステップＳ２０９でＹＥＳ）。
【００５９】
次のクロックサイクル“５”で、ＳＤＲＡＭコントローラ２０は、バッファｂｕｆ０に格納されたセルＷ００の内容に基づいて、バンク０（ＢＫ＝０）に対してＡＣコマンドを発行する（図７のステップＳ２０４）。
【００６０】
次のクロックサイクル“６”では、ＳＤＲＡＭコントローラ２０は、コマンド間の待ち時間のためにセルＷ００の内容に基づいてＷＲコマンドを発行することができない（図７のステップＳ２０５でＮＯ）。そこで、この間に、ＳＤＲＡＭコントローラ２０は、バッファｂｕｆ２に格納されたセルＷ２０の内容に基づいて、バンク１（ＢＫ＝１）に対してＰＲコマンドを発行する（図７のステップＳ２２０）。
【００６１】
次のクロックサイクル“７”で、ＳＤＲＡＭコントローラ２０は、バッファｂｕｆ０に格納されたセルＷ００の内容に基づいて、バンク０（ＢＫ＝０）に対してＷＲコマンドを発行する（図７のステップＳ２０６）。以上でトランザクションＷ０の最初のセルＷ００に対する処理は完了したので、第２番目のセルＷ０１と処理順番（ＩＤ＝１）がバッファｂｕｆ０に格納される。
【００６２】
次のクロックサイクル“８”では、ＳＤＲＡＭコントローラ２０は、コマンド間の待ち時間のためにセルＷ０１の内容に基づいてＷＲコマンドを発行することができない（図７のステップＳ２０５でＮＯ）。そこで、この間に、ＳＤＲＡＭコントローラ２０は、バッファｂｕｆ２に格納されたセルＷ２０の内容に基づいて、バンク１（ＢＫ＝１）に対してＡＣコマンドを発行する（ステップＳ２２０）。
【００６３】
次のクロックサイクル“９”で、ＳＤＲＡＭコントローラ２０は、バッファｂｕｆ０に格納されたセルＷ０１の内容に基づいて、バンク０（ＢＫ＝０）に対してＷＲコマンドを発行する図７のステップＳ２０６）。以上でトランザクションＷ０の第２番目のセルＷ０１に対する処理は完了したので、第３番目のセルＷ０２と処理順番（ＩＤ＝１）がバッファｂｕｆ０に格納される。
【００６４】
次のクロックサイクル“１０”では、ＳＤＲＡＭコントローラ２０は、コマンド間の待ち時間のためにトランザクションＷ０の第３番目のセルＷ０２に基づくＷＲコマンドを発行することができない（図７のステップＳ２０５でＮＯ）。なお、トランザクションＷ１は、トランザクションＷ０と同バンクに対する書込処理なので実行できず（図７のステップＳ２１７でＹＥＳ）、トランザクションＷ１についてはＰＲ，ＡＣコマンドを発行済である（図７のステップＳ２１８でＹＥＳ）。
【００６５】
次のクロックサイクル“１１”で、ＳＤＲＡＭコントローラ２０は、バッファｂｕｆ０に格納されたセルＷ０２の内容に基づいて、バンク０（ＢＫ＝０）に対してＷＲコマンドを発行する（図７のステップＳ２０６）。以上でトランザクションＷ０の処理がすべて終了したので、バスＢ０およびバッファｂｕｆ０の割当が解除される。したがって、次のクロックサイクルからは、最も処理順番の早いトランザクションはＷ１であり、次に処理順番の早いトランザクションはＷ２である。
【００６６】
次のクロックサイクル“１２”では、ＳＤＲＡＭコントローラ２０は、コマンド間の待ち時間のためにトランザクションＷ１，Ｗ２に基づくコマンドを発行することができない（図７のステップＳ２０３でＮＯ、ステップＳ２１３でＮＯ）。
【００６７】
次のクロックサイクル“１３”で、ＳＤＲＡＭコントローラ２０は、バッファｂｕｆ１に格納されたセルＷ１０の内容に基づいて、バンク０（ＢＫ＝０）に対してＰＲコマンドを発行する（ステップＳ２０４）。
【００６８】
次のクロックサイクル“１４”では、ＳＤＲＡＭコントローラ２０は、コマンド間の待ち時間のためにセルＷ０１の内容に基づいてＡＣコマンドを発行することができない（ステップＳ２０３でＮＯ）。そこで、この間に、ＳＤＲＡＭコントローラ２０は、バッファｂｕｆ２に格納されたセルＷ２０の内容に基づいて、バンク１（ＢＫ＝１）に対してＷＲコマンドを発行する（ステップＳ２１４）。以上でトランザクションＷ２の最初のセルＷ２０に対する処理は完了したので、第２番目のセルＷ２１と処理順番（ＩＤ＝３）がバッファｂｕｆ２に格納される。
【００６９】
以下、クロックサイクル“１５”，“１７”で、ＳＤＲＡＭコントローラ２０は、バッファｂｕｆ１に格納されたセルＷ１０の内容に基づいて、バンク０（ＢＫ＝０）に対してＡＣコマンド、ＷＲコマンドをそれぞれ発行する。クロックサイクル“１９”，“２１”で、ＳＤＲＡＭコントローラ２０は、トランザクションＷ１のセルＷ１１，Ｗ１２の内容に基づいて、バンク０（ＢＫ＝０）に対してＷＲコマンドをそれぞれ発行する。クロックサイクル“２３”，“２５”で、ＳＤＲＡＭコントローラ２０は、トランザクションＷ２のセルＷ２１，Ｗ２２の内容に基づいて、バンク１（ＢＫ＝１）に対してＷＲコマンドをそれぞれ発行する。以上で、トランザクションＷ０〜Ｗ３の実行が完了する。
【００７０】
上記のとおり実施の形態１の半導体装置１００によれば、複数のバスマスタＭ０〜ＭｎとＳＤＲＡＭコントローラ２０との間のトランザクションの経路を複数にして、複数のトランザクションが並行してＳＤＲＡＭコントローラ２０に供給される。これによって、バンクインタリーブを活用して複数のトランザクションを効率的に処理することができる。さらに、バスアービタ１１がトランザクションの処理順番を生成してＳＤＲＡＭコントローラ２０に伝達することにより、ＳＤＲＡＭコントローラ２０は、トランザクションが本来処理されるべき順番を維持しながら、ＳＤＲＡＭ装置３０にコマンドを発行することができる。以下、比較例の半導体装置９００と対比しながら、図２の半導体装置１００の効果についてさらに説明する。
【００７１】
図９は、図２の半導体装置１００の比較例としての半導体装置９００の構成を示すブロック図である。図２のインタコネクト回路１０はバスおよびバッファを複数組備えていたが、図９の比較例のインタコネクト回路９１０は、１本のバス９１３および１個のバッファｂｕｆのみを含む。したがって、各バスマスタＭからＳＤＲＡＭコントローラ２０に至るトランザクションの伝達経路は１つしかない。
【００７２】
図９において、複数のバスマスタがバスの割当を要求している場合、バスアービタ９１１がそれらの割当要求を調停し、最も優先度が高いバスマスタにバスを使用する権利（バス権）を与える。たとえば、バスマスタＭ０〜Ｍ２の割当優先度を、Ｍ０＞Ｍ１＞Ｍ２（Ｍ０が最も高く、Ｍ２が最も低い）とし、バスマスタＭ０〜Ｍ２が書込トランザクションＷ０〜Ｗ２をそれぞれ同時に発行したとする。この場合、バス権はＭ０，Ｍ１，Ｍ２の順にバスマスタに与えられるので、Ｗ０，Ｗ１，Ｗ２の順でトランザクションがコマンドコントローラ９２１に入力されることになる。
【００７３】
図９の構成で、インタリーブによってＳＤＲＡＭ装置９３０へのアクセス効率を高めるためには、ＳＤＲＡＭコントローラ９２０に設けられたキューｑｕｅの段数ｍ＋１を増やす必要がある。しかしながら、たとえキューｑｕｅの段数を増やしたとしても、図２のように複数の経路を設けることによって複数のトランザクションがコマンドコントローラ２１に並列に入力される場合に比べるとスループットの向上には限界がある。
【００７４】
図１０は、図２の半導体装置１００のスループットと図９の比較例の半導体装置３００のスループットとを比較して示した図である。
【００７５】
図１０では、３種類のＳＤＲＡＭコントローラの各々についてＳＤＲＡＭ装置をアクセスしたときのスループットの値が示されている。スループットの値は確率計算により算出した。前提条件は、（１）ＳＤＲＡＭの複数バンクのうちどのバンクへアクセスするかはランダムである。（２）ＳＤＲＡＭに対する読出と書込の比率は５０％ずつである。ここで、スループットとは、ＳＤＲＡＭの実効バンド幅の、ＳＤＲＡＭの持つ理想のバンド幅に対する比率をいう。
【００７６】
図１０のグラフ（Ｉ）は、バンクインタリーブを行わないＳＤＲＡＭコントローラを用いたときのスループットを示す。グラフ（ＩＩ）は、バンクインタリーブを行う図９に示す比較例のＳＤＲＡＭコントローラ９２０を用いたときのスループットを示す。グラフ（ＩＩＩ）は、図２に示す実施の形態１によるＳＤＲＡＭコントローラ２０を用いたときのスループットを示す。図１０において、縦軸にスループットを示し、横軸にチャンクサイズの平均値を示す。ここでチャンクとは、１つのマスタがＳＤＲＡＭにアクセスするとき、排他的に（他のマスタからの割込みなしに）転送するデータの塊であり、１つのＳＤＲＡＭページ内に配置されるものとする。チャンクサイズは、チャンクデータの塊の大きさ（バイト数）である。
【００７７】
チャンクサイズが小さくなるほど、ＳＤＲＡＭをアクセスするときのオーバヘッド（プリチャージとアクティベートにかかる時間）の割合が相対的に大きくなるためＳＤＲＡＭのスループットが小さくなる。一方、チャンクサイズが小さくなるほど、実施の形態１の場合のグラフ（ＩＩＩ）と比較例の場合のグラフ（ＩＩ）との差が大きくなる。一般に、市販用のディジタル機器では、コストに対する要求により搭載するバッファメモリの容量を小さくする必要があるため、チャンクサイズも小さくなる傾向がある。図１０において、チャンクサイズが２５６バイトのとき、実施の形態１の場合（ＩＩＩ）の比較例（ＩＩ）に対するスループットの向上は約６％である。
【００７８】
リアルタイム型のバスマスタには、決まったアクセス制限時間があるため、スループットの大部分を割り当てることが一般的である。たとえば、チャンクサイズが２５６バイトのときを考える。インタリーブを行なわない場合（Ｉ）のスループットの値である約５５％のうち、９５％（スループット＝５２．２５％）をリアルタイム型のバスマスタに割当てて、残りの５％（スループット＝２．７４％）をベストエフォート型のバスマスタに割当てたとする。リアルタイム型のバスマスタはある決まったスループットしか使わないため、ＳＤＲＡＭのバンクインタリーブによって増えたスループットは全てベストエフォート型マスタに回されることになる。したがって、比較例のＳＤＲＡＭコントローラ９２０を使った場合にベストエフォート型マスタが使用するスループットは、２．７４％に５５％から増加したスループット分（２６．７％）を加えて“２９．４４％”となる。実施の形態１のＳＤＲＡＭコントローラ２０を使った場合にベストエフォート型マスタが使用するスループットは、２．７４％に５５％から増加したスループット分（３２．７３％）を加えて、３５．４７％となる。したがって、実施の形態１の半導体装置１００によれば、ベストエフォート型マスタが使えるＳＤＲＡＭのスループットは、従来よりも“２０％”増加することになる。
【００７９】
上記のメモリアクセスのスループットの改善により、ベストエフォート型バスマスタによる処理速度向上が期待できる。ベストエフォート型バスマスタは、ディジタルテレビジョン装置などのディジタル機器においては、たとえば、ＧＵＩ（グラフィカル・ユーザ・インタフェース）を司っている。したがって、ベストエフォート型マスタの処理速度向上により、たとえばディジタルテレビジョン装置では、チャネルの切り換え時間が速くなったり、番組表の表示が速くなったりといったメリットをユーザが実感できる。
【００８０】
＜実施の形態２＞
実施の形態１の半導体装置１００では、各バスマスタＭからインタコネクト回路１０を経てＳＤＲＡＭコントローラ２０に至る経路が最大４つ（バスＢ０〜Ｂ３、バッファｂｕｆ０〜ｂｕｆ３）あり、最大４つのトランザクションが投入できた。この結果、ＳＤＲＡＭコントローラ２０が４つのトランザクションの処理順番やアクセスするバンクに応じて、バンクインタリーブを活用してＳＤＲＡＭアクセスの効率を高められるという利点があった。しかしながら、その反面、一度４つの経路上にトランザクションが投入されてしまうと、後から緊急度の高い（すなわち、早急なＳＤＲＡＭアクセス処理を必要とする）トランザクションのアクセス要求がバスマスタから出されても、経路上にトランザクションが詰まっているため、これらのトランザクションのいずれかの処理が終了するまで経路の割当が行なわれない。さらに、処理順番は経路が割当てられた順番で決まるので、最悪の場合には、すでに投入されたトランザクションがすべて終了するまでその緊急度の高いトランザクションが待たされてしまうという問題点がある。実施の形態２では、この問題を緩和する半導体装置２００が提供される。
【００８１】
図１１は、この発明の実施の形態２に従う半導体装置２００の構成を示すブロック図である。
【００８２】
図１１の半導体装置２００は、各バスマスタＭからバスアービタ１１Ａに対して出力される最優先信号ＰＳが追加されている点で図２の半導体装置１００と異なる。バスアービタ１１Ａは、最優先信号ＰＳがアサートされていないとき（通常時）には、各バスマスタＭからＳＤＲＡＭコントローラ２０に至る４つの経路のうち、バスＢ０およびバッファｂｕｆ０を経てＳＤＲＡＭコントローラ２０に至る経路は使用せずに空いたままとするようにバスの調停を行なう。バスアービタ１１Ａは、さらに、通常時には処理順番ＩＤを２以上の値に設定する。バスアービタ１１Ａは、最優先信号がアサートされたとき（緊急時）には、バスＢ０およびバッファｂｕｆ０を経てＳＤＲＡＭコントローラ２０に至る経路を、最優先信号ＰＳをアサートしたバスマスタＭに対して割当てる。バスアービタ１１Ａはさらに、緊急時には処理順番ＩＤを１に設定する。具体的には、次の図１２に示す手順によってバスの割当の処理順番の設定とが行なわれる。なお、図１１のその他の点は図２の半導体装置１００と同じであるので、同一または相当する部分には同一の参照符号を付して説明を繰返さない。
【００８３】
図１２は、図１１のバスアービタ１１Ａの動作を示すフローチャートである。図１１、図１２を参照して、まず、ステップＳ３０１で、バスアービタ１１Ａは、処理順番ＩＤを２に初期化する。
【００８４】
次のステップＳ３０２で、バスアービタ１１Ａは、最優先信号ＰＳがアサートされた緊急のバスの割当要求があるか否かを判定する。バスマスタＭからバスの緊急の割当要求がある場合（ステップＳ３０２でＹＥＳ）、バスアービタ１１Ａは、処理をステップＳ３０３に進める。
【００８５】
ステップＳ３０３で、バスアービタ１１Ａは、バスＢ０およびバッファｂｕｆ０を介した緊急経路が空いているか否かを調べる。緊急経路が空いていない場合（ステップＳ３０３でＮＯ）、処理はステップＳ３０３で緊急経路が空くまで待機（ループ）する。緊急経路が空いている場合（ステップＳ３０３でＹＥＳ）、処理はステップＳ３０４に進む。
【００８６】
ステップＳ３０４で、バスアービタ１１Ａは、バスの緊急の割当要求をしているバスマスタＭが１個の場合は、そのバスマスタＭに対して緊急経路を割当てる。バスアービタ１１Ａは、バスの緊急の割当要求をしているバスマスタＭが複数の場合は、最も割当優先度が高いバスマスタＭに対して緊急経路を割当てる。そして、バスアービタ１１Ａは、バスを割当てたバスマスタＭが要求している処理内容、すなわち、トランザクションの最初のセルの情報と処理順番（ＩＤ＝１）とを緊急用のバッファｂｕｆ０に転送する。その後、処理はステップＳ３０２に戻る。
【００８７】
一方、バスの緊急の割当要求がない場合（ステップＳ３０２でＮＯ）、処理はステップＳ３０５に進む。ステップＳ３０５で、バスアービタ１１Ａは、最優先信号ＰＳがネゲートされた通常のバスの割当要求があるか否かを判定する。バスマスタＭからバスの通常の割当要求がある場合（ステップＳ３０５でＹＥＳ）、バスアービタ１１Ａは、処理をステップＳ３０６に進める。通常の割当要求がない場合（ステップＳ３０５でＮＯ）、処理はステップＳ３０２に戻る。
【００８８】
ステップＳ３０６で、バスアービタ１１Ａは、バスＢ１〜Ｂ３およびバッファｂｕｆ１〜ｂｕｆ３を介した通常経路に空きがあるか否かを調べる。通常経路に空きがない場合（ステップＳ３０６でＮＯ）、処理はステップＳ３０２に戻る。経路に空きがある場合（ステップＳ３０３でＹＥＳ）、処理はステップＳ３０７に進む。
【００８９】
ステップＳ３０７で、バスアービタ１１Ａは、バスの通常の割当要求をしているバスマスタＭが１個の場合は、そのバスマスタＭに対して通常経路の１つを割当てる。バスアービタ１１Ａは、バスの割当要求をしているバスマスタＭが複数の場合は、最も割当優先度が高いバスマスタＭに対して通常経路を割当てる。そして、バスアービタ１１Ａは、バスを割当てたバスマスタＭが要求している処理内容、すなわち、トランザクションの最初のセルの情報と現在の処理順番ＩＤとを割当てたバッファに転送する。
【００９０】
次のステップＳ３０８で、バスアービタ１１Ａは、処理順番ＩＤをカウントアップした後（すなわち、ＩＤに１を加えた後）、処理をステップＳ３０２に戻す。以下、ステップＳ３０２〜ステップＳ３０８が繰り返される。
【００９１】
図１３は、複数のトランザクションが投入されたときのバスアービタ１１Ａの動作について説明するための図である。バスマスタの割当優先度は、Ｍ０＞Ｍ１＞Ｍ２＞Ｍ３＞Ｍ４とする。
【００９２】
図１３（Ａ）では、バスマスタＭ０〜Ｍ３がトランザクションＷ０〜Ｗ３を発行して、トランザクションＷ０〜Ｗ２までが受け付けられ、トランザクションＷ０がＳＤＲＡＭコントローラ２０によって処理中である状態を示す。トランザクションＷ０〜Ｗ２に対して、処理順番（ＩＤ）２〜４がそれぞれ割振られる。Ｍ３はトランザクションＷ３を行おうとしているが、最優先信号をアサートしていないために、空いているバスＢ０、バッファｂｕｆ０の経路は使用することができず、待たされた状態にある。
【００９３】
図１３（Ｂ）で新たに、Ｍ４がトランザクションＷ４を行おうとアクセス要求を出力する。この際、Ｍ４は最優先信号をアサートしたとする。最優先信号をアサートしているために、Ｍ４の発行するトランザクションＷ４は、バスＢ０およびバッファｂｕｆ０の経路で受付けられる。バスアービタ１１Ａは処理順番（ＩＤ＝１）を生成しバッファｂｕｆ０に投入する。この後、ＳＤＲＡＭコントローラ２０は、バッファｂｕｆ０〜ｂｕｆ３にあるトランザクションを処理順番ＩＤの値にしたがって処理する。したがって、トランザクションは、Ｗ０、Ｗ４、Ｗ０、Ｗ１、Ｗ２の順番で処理されることになる。Ｗ０、Ｗ４、Ｗ０の順番となるのは、Ｗ０の処理中に処理順番が早いトランザクションＷ０が、バスＢ０−バッファｂｕｆ０−キューｑｕｅ０の緊急経路に割り込まれるためである。実施の形態１の半導体装置１００であれば、Ｗ０、Ｗ１、Ｗ２、Ｗ３、Ｗ４の順番で処理され、緊急を要するＷ４の処理が待たされるのに対し、実施の形態２の半導体装置２００では、緊急度の高いＷ４をＷ０の処理中に割り込ませることができる。
【００９４】
図１４は、半導体装置２００の動作の一例を示すタイミング図である。以下の説明で、バスマスタＭ０〜Ｍ４の割当優先度は、Ｍ０＞Ｍ１＞Ｍ２＞Ｍ３＞Ｍ４とする。説明を簡単化するために、図１１のＳＤＲＡＭコントローラ２０内にはキューが設けられていないとする。さらに、コマンド間（ＰＲ−ＡＣ間、ＡＣ−ＷＲ間、ＷＲ−ＷＲ間）の待ち時間（クロックサイクル数）は、使用するＳＤＲＡＭの仕様とクロック周波数によって決まるが、ここでは全て１サイクルであるとしている。
【００９５】
図１１、図１４を参照して、図１４のクロックサイクル“１”で、バスマスタＭ０〜Ｍ２が、いずれも最優先信号をネゲートした状態で、書込トランザクションＷ０〜Ｗ２をそれぞれ同時に発行したとする。ここで、書込トランザクションＷ０は、バンク０（ＢＫ＝０）に対する書込処理であり、３個のセルＷ００，Ｗ０１，Ｗ０２から構成されるとする。書込トランザクションＷ１は、バンク０（ＢＫ＝０）に対する書込処理であり、３個のセルＷ１０，Ｗ１１，Ｗ１２から構成されるとする。書込トランザクションＷ２は、バンク１（ＢＫ＝１）に対する書込処理であり、３個のセルＷ２０，Ｗ２１，Ｗ２２から構成されるとする。バスアービタ１１Ａは、割当優先度の最も高いバスマスタＭ０に対してバスＢ１およびバッファｂｕｆ１を割当てるとともに、トランザクションＷ０に対して処理順番（ＩＤ＝２）を設定する。この結果、トランザクションＷ０の最初のセルＷ００と処理順番（ＩＤ＝２）とがバッファｂｕｆ１に格納される。バッファｂｕｆ１の格納値は次のクロックサイクルで確定する。
【００９６】
次のクロックサイクル“２”で、バスアービタ１１Ａは、割当優先度が次に高いバスマスタＭ１に対してバスＢ２およびバッファｂｕｆ２を割当てるとともに、トランザクションＷ１に対して処理順番（ＩＤ＝３）を設定する。この結果、トランザクションＷ１の最初のセルＷ１０と処理順番（ＩＤ＝３）とがバッファｂｕｆ２に格納される。バッファｂｕｆ２の格納値は次のクロックサイクルで確定する。
【００９７】
次のクロックサイクル“３”で、ＳＤＲＡＭコントローラ２０は、この時点で処理順番が最も早いバッファｂｕｆ１に格納されたセルＷ００（ＩＤ＝２）の内容に基づいて、バンク０（ＢＫ＝０）に対してＰＲコマンドを発行する（図７のステップＳ２０４）。バスアービタ１１Ａは、残るバスマスタＭ２に対してバスＢ３およびバッファｂｕｆ３を割当てるとともに、トランザクションＷ２に対して処理順番（ＩＤ＝４）を設定する。この結果、トランザクションＷ２の最初のセルＷ２０と処理順番（ＩＤ＝４）がバッファｂｕｆ３に格納される。バッファｂｕｆ３の格納値は次のクロックサイクルで確定する。
【００９８】
次のクロックサイクル“４”で、ＳＤＲＡＭコントローラ２０は、コマンド間の待ち時間のためにセルＷ００の内容に基づいてＡＣコマンドを発行することができない（図７のステップＳ２０３でＮＯ）。さらに、ＳＤＲＡＭコントローラ２０は、トランザクションＷ０とトランザクションＷ１とが同じバンク（ＢＫ＝０）に対する処理であるので、トランザクションＷ０が完了するまでトランザクションＷ１の最初のセルＷ１０の内容に基づいてＰＲコマンドを発行することができない（図７のステップＳ２０９でＹＥＳ）。
【００９９】
次のクロックサイクル“５”で、ＳＤＲＡＭコントローラ２０は、バッファｂｕｆ１に格納されたセルＷ００の内容に基づいて、バンク０（ＢＫ＝０）に対してＡＣコマンドを発行する（図７のステップＳ２０４）。
【０１００】
次のクロックサイクル“６”で、バスマスタＭ４が書込トランザクションＷ４を発行するとともに、最優先信号をアサートする。ここで、書込トランザクションＷ０は、バンク２（ＢＫ＝２）に対する書込処理であり、３個のセルＷ４０，Ｗ４１，Ｗ４２から構成されるとする。バスアービタ１１Ａは、最優先信号がアサートされているので、バスマスタＭ４に対してバスＢ０およびバッファｂｕｆ０を割当てるとともに、トランザクションＷ４に対して処理順番（ＩＤ＝１）を設定する。この結果、トランザクションＷ４の最初のセルＷ４０と処理順番（ＩＤ＝１）とがバッファｂｕｆ０に格納される。バッファｂｕｆ０の格納値は次のクロックサイクルで確定する。
【０１０１】
このクロックサイクル“６”では、ＳＤＲＡＭコントローラ２０は、コマンド間の待ち時間のためにセルＷ００の内容に基づいてＷＲコマンドを発行することができない（図７のステップＳ２０５でＮＯ）。そこで、ＳＤＲＡＭコントローラ２０は、バッファｂｕｆ３に格納されたセルＷ２０の内容に基づいて、バンク１（ＢＫ＝１）に対してＰＲコマンドを発行する（図７のステップＳ２２０）。
【０１０２】
次のクロックサイクル“７”で、ＳＤＲＡＭコントローラ２０は、バッファｂｕｆ１に格納されたセルＷ００の内容に基づいて、バンク０（ＢＫ＝０）に対してＷＲコマンドを発行する（図７のステップＳ２０５）。以上でトランザクションＷ０の最初のセルＷ００に対する処理は完了したので、第２番目のセルＷ０１と処理順番（ＩＤ＝２）がバッファｂｕｆ１に格納される。
【０１０３】
次のクロックサイクル“８”で、ＳＤＲＡＭコントローラ２０は、この時点で処理順番が最も早いバッファｂｕｆ０に格納されたセルＷ４０の内容に基づいて、バンク２（ＢＫ＝２）に対してＰＲコマンドを発行する（図７のステップＳ２０４）。
【０１０４】
次のクロックサイクル“９”では、コマンド間の待ち時間のために、処理順番が最も早いセルＷ４０（ＩＤ＝１）の内容に基づいて、バンク２（ＢＫ＝２）に対してＡＣコマンドを発行することができない（ステップＳ２０３でＮＯ）。そこで、この間に、ＳＤＲＡＭコントローラ２０は、次に処理順番が早いバッファｂｕｆ１に格納されたセルＷ０１（ＩＤ＝２）の内容に基づいて、バンク０（ＢＫ＝０）に対してＷＲコマンドを発行する（図７のステップＳ２１４）。以上でトランザクションＷ０の第２番目のセルＷ０１に対する処理は完了したので、第３番目のセルＷ０２と処理順番（ＩＤ＝２）がバッファｂｕｆ１に格納される。
【０１０５】
次のクロックサイクル“１０”で、ＳＤＲＡＭコントローラ２０は、処理順番が最も早いバッファｂｕｆ０に格納されたセルＷ４０（ＩＤ＝１）の内容に基づいて、バンク２（ＢＫ＝２）に対してＡＣコマンドを発行する（図７のステップＳ２０４）。
【０１０６】
次のクロックサイクル“１１”では、コマンド間の待ち時間のために、処理順番が最も早いバッファｆ０に格納されたセルＷ４０（ＩＤ＝１）の内容に基づいて、バンク２（ＢＫ＝２）に対してＷＲコマンドを発行することができない（図７のステップＳ２０５でＮＯ）。トランザクションＷ４（ＩＤ＝１）の処理を優先するために、処理順番が次に早いバッファｆ１に格納されたセルＷ０２（ＩＤ＝２）に基づいてＷＲコマンドを発行することもできない。そこで、ＳＤＲＡＭコントローラ２０は、バッファｂｕｆ３に格納されたセルＷ２０の内容に基づいて、バンク１（ＢＫ＝１）に対してＡＣコマンドを発行する（ステップＳ２２０）。
【０１０７】
以下、クロックサイクル“１２”、“１４”、“１６”で、ＳＤＲＡＭコントローラ２０は、処理順番が最も早いバッファｆ０に格納されたセルＷ４０，Ｗ４１，Ｗ４２の内容に基づいて、バンク２（ＢＫ＝２）に対してＷＲコマンドを発行する。以上でトランザクションＷ４の処理がすべて終了したので、バスＢ０およびバッファｂｕｆ０の割当が解除される。
【０１０８】
クロックサイクル“１８”で、ＳＤＲＡＭコントローラ２０は、その時点で処理順番が最も早いバッファｆ１に格納されたＷ０２（ＩＤ＝２）の内容に基づいて、バンク０（ＢＫ＝１）に対してＷＲコマンドを発行する。以上でトランザクションＷ０の処理がすべて終了したので、バスＢ１およびバッファｂｕｆ１の割当が解除される。
【０１０９】
トランザクションＷ０が完了したことによって、同じバンク０（ＢＫ＝０）に対するトランザクションＷ１に基づくＰＲコマンド、ＡＣコマンドが、クロックサイクル“２０”、“２２”で発行される。さらに、トランザクションＷ１に基づくＷＲコマンドが、クロックサイクル“２４”、“２６”、“２８”で発行される。
【０１１０】
トランザクションＷ１とは異なるバンク１（ＢＫ＝１）に対するトランザクションＷ２は、インターリーブの態様でトランザクションＷ１と並行して実行される。すわなち、トランザクションＷ２に基づくＷＲコマンドが、クロックサイクル“２１”、“２３”、“３０”で発行される。
【０１１１】
上記のとおり、実施の形態２の半導体装置２００によれば、各バスマスタＭとＳＤＲＡＭコントローラ２０との間の複数のトランザクション経路のうち１つを緊急トランザクション用に空けておく。そして、バスマスタから受ける最優先信号がアサートされたときに、バスアービタ１１Ａは、その緊急経路に最優先信号をアサートしたバスマスタからのトランザクションを投入する。さらに通常のトランザクションに割当てられるどの処理順番よりも早い順番である処理順番（ＩＤ＝１）をこの緊急経路に投入することによって、この緊急トランザクションをＳＤＲＡＭコントローラ２０に優先して処理させる。これにより、緊急を要するトランザクションが発生したときにでも、そのトランザクションを長く待たせることなく処理することができる。
【０１１２】
上記の半導体装置２００では、緊急用の経路が１つに設定されていたが、複数の経路を緊急経路に設定してもよい。この場合、バスアービタは、バスマスタＭ０〜Ｍｎのうち１個のバスマスタが最優先信号をアサートすることによって緊急経路の割当を要求しているときに不使用の緊急経路がある場合には、緊急経路の割当を要求しているバスマスタに対して不使用の緊急経路のうちの１つを割当てる。バスアービタは、バスマスタＭ０〜Ｍｎのうち複数のバスマスタが最優先信号をアサートすることによって緊急経路の割当を要求しているときに不使用の緊急経路がある場合には、不使用の緊急経路がなくなるまで、緊急経路の割当を要求しているバスマスタに対して割当優先度の高いほうから順に不使用の緊急経路を１つずつ割当てる。バスアービタは、さらに、緊急経路を割当てた複数のバスマスタの中では、緊急経路を割当てたタイミングが早いバスマスタのトランザクションほど処理順位を高く設定し、緊急経路を割当てたバスマスタのトランザクションは通常経路を割当てたどのバスマスタのトランザクションよりも処理順位を高く設定する。
【０１１３】
＜実施の形態３＞
図１５は、この発明の実施の形態３に従う半導体装置３００の構成を示すブロック図である。図１５の半導体装置３００では、バスマスタに割当可能なバスおよびバッファの数（経路数）が制限される点で図２の半導体装置１００と異なる。この経路数は、インタコネクト回路１０Ｂの内部（もしくは外部）に設けられたレジスタ１４に格納される。レジスタ１４からは経路数を表わす経路数指示信号ＮＳがバスアービタ１１Ｂに出力される。バスアービタ１１Ｂは、経路数指示信号ＮＳに従って、各バスマスタＭからＳＤＲＡＭコントローラ２０へのトランザクションの転送に用いる経路の数（バスおよびバッファの数）を制限する。レジスタ１４に保持される経路数を表わす情報は、たとえばＣＰＵによって書換可能である。図１５のその他の点は図２の半導体装置１００と同じであるので、同一または相当する部分には同一の参照符号を付して説明を繰返さない。
【０１１４】
図１６は、複数のトランザクションが投入されたときのバスアービタ１１Ｂの動作について説明するための図である。
【０１１５】
図１６（Ａ）を参照して、まず、バスマスタＭ０〜Ｍ３までがトランザクションＷ０〜Ｗ３に対する転送要求を出力したとする。レジスタ１４には経路数＝３が設定されているとする。ここで、バスマスタＭ０〜Ｍ３の優先度は、Ｍ０＞Ｍ１＞Ｍ２＞Ｍ３とする。経路数が３に限定されているため、Ｍ０、Ｍ１、Ｍ２の３つのマスタのトランザクションＷ０、Ｗ１、Ｗ２がバス権を得てトランザクションを開始する。
【０１１６】
次に図１６（Ｂ）を参照して、処理順番が最も早い（ＩＤ＝１）トランザクションＷ０に対するＳＤＲＡＭ装置３０へのアクセス処理が行われている間に、バスマスタＭ４からトランザクションＷ４のデータ転送要求が出力されたとする。ここで、バスマスタＭ４の割当て優先度がバスマスタＭ３よりも高い（すなわち、トランザクションＷ４の緊急度がＷ３よりも高い）とする。トランザクションＷ０を処理していた経路であるバスＢ０およびバッファｂｕｆ０が空いたとき、バスアービタ１１Ｂは、割当優先度が高いバスマスタＭ４からのトランザクションＷ４をこの経路に投入する。
【０１１７】
使用できる経路数が実施の形態１の場合と同じ“４”であれば、トランザクションＷ０〜Ｗ４に設定される処理順番ＩＤは、Ｗ０に対してＩＤ＝１、Ｗ１に対してＩＤ＝２、Ｗ２に対してＩＤ＝３、Ｗ３に対してＩＤ＝４、Ｗ４に対してＩＤ＝５となる。このため、緊急度が高いトランザクションＷ４に対する処理順番ＩＤが、トランザクションＷ３に対する処理順番ＩＤよりも遅くなってしまう。本実施の形態の場合のように、トランザクションを転送する経路の数を“３”に制限していれば、トランザクションＷ０〜Ｗ４に設定される処理順番ＩＤは、Ｗ０に対してＩＤ＝１、Ｗ１に対してＩＤ＝２、Ｗ２に対してＩＤ＝３、Ｗ３に対してＩＤ＝５、Ｗ４に対してＩＤ＝４となる。この結果、緊急度の高いトランザクションＷ４を少しでも早く処理することができる。
【０１１８】
上記のとおり、実施の形態３の半導体装置３００によれば、各バスマスタＭとＳＤＲＡＭコントローラ２０との間の複数のトランザクション経路のうち、使用する経路をＣＰＵなどからの指示により制限することができる。こうすることで、緊急度の高いトランザクションが発生したときに、そのトランザクションの処理が待たされる時間を短くすることができる。もっとも、使用する経路の数が多いほうが、より効率的にバンクインタリーブを活用して、ＳＤＲＡＭのアクセス効率を高めることができることは確かである。したがって、実施の形態３の半導体装置３００の利点は、トランザクション経路の数をソフトウエアで調整することにより、ＳＤＲＡＭのアクセス効率を高めることと、緊急度の高いトランザクションが発生した場合にそのトランザクションが待たされる時間を短くすることとのバランスを調整する点にあると言える。
【０１１９】
前述の実施の形態２の半導体装置２００においても経路数を可変とすることができる。すなわち、実施の形態２において、通常経路の経路数と緊急経路の経路数とをソフトウェアによって変更可能なようにしてもよい。
【０１２０】
今回開示された実施の形態はすべての点で例示であって制限的なものでないと考えられるべきである。この発明の範囲は上記した説明ではなくて請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１２１】
１０，１０Ｂ  インタコネクト回路、１１，１１Ａ，１１Ｂ  バスアービタ、ｂｕｆ０〜ｂｕｆ３  バッファ、Ｂ０〜Ｂ３  バス、１４  レジスタ、２０  ＳＤＲＡＭコントローラ、２１  コマンドコントローラ、３０  ＳＤＲＡＭ装置、１００，２００，３００  半導体装置、Ｍ，Ｍ０〜Ｍｎ  バスマスタ、Ｗ０〜Ｗ４  トランザクション、ｑｕｅ０〜ｑｕｅ３  キュー。
【図１】
2011242928.tif 000003
【図２】
2011242928.tif 000004
【図３】
2011242928.tif 000005
【図４】
2011242928.tif 000006
【図５】
2011242928.tif 000007
【図６】
2011242928.tif 000008
【図７】
2011242928.tif 000009
【図８】
2011242928.tif 000010
【図９】
2011242928.tif 000011
【図１０】
2011242928.tif 000012
【図１１】
2011242928.tif 000013
【図１２】
2011242928.tif 000014
【図１３】
2011242928.tif 000015
【図１４】
2011242928.tif 000016
【図１５】
2011242928.tif 000017
【図１６】
2011242928.tif 000018