JP2011242928A - 半導体装置 - Google Patents
半導体装置 Download PDFInfo
- Publication number
- JP2011242928A JP2011242928A JP2010113207A JP2010113207A JP2011242928A JP 2011242928 A JP2011242928 A JP 2011242928A JP 2010113207 A JP2010113207 A JP 2010113207A JP 2010113207 A JP2010113207 A JP 2010113207A JP 2011242928 A JP2011242928 A JP 2011242928A
- Authority
- JP
- Japan
- Prior art keywords
- bus
- buses
- allocation
- processing
- master
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Landscapes
- Multi Processors (AREA)
- Bus Control (AREA)
Abstract
【課題】複数のバスマスタを備えた半導体装置において、バススレーブに対する処理を従来よりも効率的に実行できる半導体装置を提供する。
【解決手段】半導体装置100において、各マスタ装置M0〜Mnは、複数のバスB0〜B4に接続され、複数のバスのうちの割当てられた1本のバスを介してスレーブ装置30に対する処理要求をコントローラ20に出力する。複数のマスタ装置M0〜Mnの各々には割当優先度が定められる。調停回路11は、複数のマスタ装置M0〜Mnのうちバスの割当を要求している1または複数のマスタ装置に対して、バスの割当を要求したタイミングと割当優先度とに基づいて不使用のバスを割当てるとともに、バスを割当てたマスタ装置の処理要求に対して処理順位を設定する。コントローラ20は、バスが割当てられたマスタ装置から受けた処理要求の内容と処理順位とに基づいて、スレーブ装置30に対して処理を実行する。
【選択図】図2
【解決手段】半導体装置100において、各マスタ装置M0〜Mnは、複数のバスB0〜B4に接続され、複数のバスのうちの割当てられた1本のバスを介してスレーブ装置30に対する処理要求をコントローラ20に出力する。複数のマスタ装置M0〜Mnの各々には割当優先度が定められる。調停回路11は、複数のマスタ装置M0〜Mnのうちバスの割当を要求している1または複数のマスタ装置に対して、バスの割当を要求したタイミングと割当優先度とに基づいて不使用のバスを割当てるとともに、バスを割当てたマスタ装置の処理要求に対して処理順位を設定する。コントローラ20は、バスが割当てられたマスタ装置から受けた処理要求の内容と処理順位とに基づいて、スレーブ装置30に対して処理を実行する。
【選択図】図2
Description
この発明は、バスを介して接続されたスレーブ装置をアクセスする複数のマスタ装置を含んだ半導体装置に関し、特に多バンク構成のDRAM装置をアクセスする半導体装置に関する。
複数のバンクを有するDRAM(Dynamic Random Access Memory)装置において、アクセス(読出または書込)の効率化のための技術が種々提案されている。
たとえば、特開平11−143770号公報(特許文献1)に記載のDRAM制御装置は、アクセスの効率化を図るためにDRAMにアクセスするアドレスの順番を、任意の1つのバンクにプリチャージを行うと同時に他の異なるバンクに書き込み又はプリチャージのアクセスを行えるように入れ替える。または、DRAMにアクセスするアドレスの順番を、同一バンクの同一ロウアドレスにおいて、カラムアドレスを変えるだけで順次アクセスできるように入れ替える。
特開2006−11593号公報(特許文献2)および特開2006−260472号公報(特許文献3)に記載の技術では、バンク間でインターリーブアクセスを行なうことによってアクセスの効率化が図られる。このうち特開2006−11593号公報(特許文献2)に記載のメモリ制御装置は、複数のバンクからなるメモリに対するデータ転送に際して、予め設定された複数のコマンドパターンのうち1のコマンドパターンを順次選択する。ここで、各コマンドパターンは、各バンクに対するコマンドを含む。メモリ制御装置は、連続する2つのコマンドパターンを、メモリに対する所定のアクセス基準を満足するタイミングをもって順次連結する。
特開2006−260472号公報(特許文献3)に記載のメモリアクセス装置は、コマンド分割部と、コマンド管理部と、アクセス順最適化部と、コマンド発行部とを備える。コマンド分割部は、外部から入力されるメモリアクセス要求をバンク単位のコマンドに分割する。コマンド管理部は、分割されたコマンドを保持する。アクセス順最適化部は、コマンド管理部に保持されているコマンド発行順序を入替える。コマンド発行部は、アクセス順最適化部による発行順序に従ってコマンドをメモリに発行する。
特開平10−293745号公報(特許文献4)の記載の技術では、共通共用バスにアクセスする複数の装置が、バス・コントローラにバス要求とともに優先レベルを渡す。バス・コントローラのアービタは複数の要求を受け取ると、それらの様々なバス要求に関連づけられた優先レベルを比較して、最も高い優先レベルを持つ装置にバスの制御権を付与する。
ところで、近年のディジタル機器では、CPU(中央処理装置:Central Processing Unit)を含む多数のバスマスタがバスに接続され、これら多数のバスマスタが多バンク方式のメモリ装置にアクセスするような構成が一般的となっている。このような装置構成の場合には、多数のバスマスタから出力されたメモリアクセス要求に対してどのようにアクセス順位を決定するかが、メモリアクセスの効率化の点で重要である。
さらに、上記の多数のバスマスタが要求する処理の中には、画像処理のようにリアルタイム処理を必要とするものが多く含まれる。このようなリアルタイム処理においては、処理されるべき時間内に処理を終了させる必要がある。このため、上記の特開平11−143770号公報(特許文献1)や特開2006−260472号公報(特許文献3)に記載の技術のようにメモリアクセスする順番を入れ替える方法は好ましくない。
この発明の目的は、複数のバスマスタを備えた半導体装置において、メモリ装置などのバススレーブに対する処理を従来よりも効率的に実行できる半導体装置を提供することである。
この発明の実施の一形態による半導体装置は、m本(mは2以上の整数)のバスと、m本のバスに接続される、スレーブ装置用のコントローラと、中央処理装置(CPU:Central Processing Unit)を含むn個(nはmより大きい整数)のマスタ装置と、m本のバスの割当を調停する調停回路とを備える。n個のマスタ装置の各々は、m本のバスに接続され、m本のバスのうちの割当てられた1本のバスを介してスレーブ装置に対する処理要求をコントローラに出力する。n個のマスタ装置の各々には割当優先度が定められる。調停回路は、n個のマスタ装置のうちバスの割当を要求している1または複数のマスタ装置に対して、バスの割当を要求したタイミングと割当優先度とに基づいて不使用のバスを割当てるとともに、バスを割当てたマスタ装置が出力する処理要求に対して処理順位を設定する。コントローラは、バスが割当てられたマスタ装置から受けた処理要求の内容と調停回路によって設定された処理順位とに基づいて、スレーブ装置に対して処理を実行する。
上記の実施の形態の半導体装置によれば、複数のバスが設けられ、バスの割当要求のタイミングと割当優先度とに基づいて複数のバスの割当が調停されるとともに、スレーブ装置に対する処理要求の内容と調停回路によって設定された処理順位とに基づいて実際の処理が実行されるので、複数のバスマスタから要求された処理を従来よりも効率的に実行することができる。
以下、この発明の実施の形態について図面を参照して詳しく説明する。なお、同一または相当する部分には同一の参照符号を付して、その説明を繰返さない。
<実施の形態1>
図1は、この発明の実施の形態1に従う半導体装置100の構成を概略的に示すブロック図である。
図1は、この発明の実施の形態1に従う半導体装置100の構成を概略的に示すブロック図である。
図1を参照して、半導体装置100は、CPU101を含む多数のマクロ101〜108(IP:Intellectual Propertyとも称する)と、SDRAM(Synchronous Dynamic Random Access Memory)30を制御するSDRAMコントローラ20と、多数のマクロ101〜108とSDRAMコントローラ20とを接続するインタコネクト回路10とを備えたシステムLSI(Large Scale Integration)である。システムLSI(半導体装置)にSDRAM装置30まで含めることもできる。半導体装置100は、1つの半導体チップ上に、必要とされる一連の機能IP(システム)が集積されているので、SoC(System-on-Chip)とも呼ばれる。近年のディジタル機器、たとえば、ディジタルテレビジョン装置、Blue−rayディスクプレーヤ/レコーダ、ディジタルスチルカメラ、携帯電話機、カーナビゲーション装置などに搭載されるSoCは、図1のように多数のマクロがバスに接続される構成が一般的となっている。
SDRAM装置30は、複数バンクを有する。SDRAM装置30はアクセスする行(ページ)の活性化に時間を要するため、複数バンクを有するSDRAM装置30を効率良くアクセスするためには、(1)同じ行のデータを連続してアクセスすること、(2)1つ前のアクセスと異なる行をアクセスするときは、異なるバンクにアクセスすることが必要になる。(1)をバーストアクセス、(2)をバンクインタリーブと呼ぶ。
後述するようにインタコネクト回路10には複数のバスが設けられ、各マクロからSDRAM装置30にアクセスするときにこれらのバスがマクロに割当てられるので、マクロ101〜108はバスマスタとも呼ばれる。これに対してSDRAM装置30はバススレーブと呼ばれる。図1では図示を省略しているが、インタコネクト回路10には、SDRAM装置30以外にも多数のバススレーブが接続されている。
マクロ101〜108は、リアルタイム型バスマスタ103〜108とCPU101を含むベストエフォート型バスマスタ101,102とに分類することができる。リアルタイム型バスマスタとは、バスアクセスリクエストを発行してから、ある制限時間内にデータ転送処理が完了する必要があるバスマスタのことである。一方、ベストエフォート型バスマスタは、バスアクセスリクエストを発行してからデータ転送処理が完了するまでに制限時間がないバスマスタのことである。
図2は、この発明の実施の形態1に従う半導体装置100の構成をより詳細に示すブロック図である。
図2を参照して、半導体装置100は、n+1個のバスマスタM0〜Mnと、インタコネクト回路10と、SDRAMコントローラ20とを含む。ここで、インタコネクト回路10は、m+1本(mは1以上n未満の整数、図2ではm=3)のバスB0〜B3と、バスの割当を調停するバスアービタ11(調停回路)と、m+1個のバッファbuf0〜buf3とを含む。SDRAMコントローラ20は、コマンドコントローラ21と、m+1個のキューque0〜que3とを含む。
バッファbuf0〜buf3およびキューque0〜que3は、バスマスタM0〜Mnが出力するコマンド信号やライトデータなどを一時的に格納する。コマンドコントローラ21は、バッファbuf0〜buf3およびキューque0〜que3を介して受けたコマンド信号やライトデータなどに応答してSDRAM装置30にコマンドを発行する。バッファbuf0〜buf3を設けることによって、バスマスタM0〜Mnがコマンド信号やライトデータなどを出力するタイミングと、SDRAMコントローラ20がこれらの信号を受け取るタイミングとを調整することができる。キューque0〜que3は、コマンドコントローラ21が次に受け取る信号を先読みして先行動作を行なうために設けられているが、図2の半導体装置100の場合には必ずしも必要な構成ではない。各キューを多段構成にすると先行動作を行なうのにより効果的である。
なお、以下の説明で、バスマスタM0〜Mnについて総称する場合または不特定ものを示す場合にバスマスタMと記載する。バスB0〜B3およびバッファbuf0〜buf3を総称する場合にバス13およびバッファ12とそれぞれ記載する。
バスマスタM0〜Mnの各々は、全てのバスB0〜B3と接続される。バッファbuf0〜buf3はバスB0〜B3にそれぞれ対応し、対応関係にあるバッファとバスとが個別に接続される。キューque0〜gue3はバッファbuf0〜buf3にそれぞれ対応する。各キューは、対応のバッファおよびコマンドコントローラ21に接続される。上記の接続によって、バスマスタM0〜Mnの各々からバス、バッファ、およびキューをそれぞれ経由してコマンドコントローラ21に至る経路が4つ(m+1)存在することになる。バスアービタ11は、各バスマスタMからSDRAM装置30へアクセス要求があったときに、これらの4つの経路のうちのいずれか1つをアクセス要求をしているバスマスタMに割当てる。各バスマスタMは割当てられた経路を介して、SDRAM装置30に対する一連の処理内容(トランザクション)をコマンドコントローラ21に出力する。
具体的にライトアクセスのときは、バスマスタMは、アドレスやその他のアクセスに必要な情報とSDRAM装置30に書込むライトデータとを割当てられた経路を介してSDRAMコントローラ20に転送する。なお、アドレスや他の情報を転送する経路と、ライトデータを転送する経路は別であるが、図2では簡単のため1本の線で示している。リードアクセスのときは、SDRAMコントローラ20は、バスマスタMから転送されたアドレスやその他のアクセスに必要な情報に基づいて、SDRAM装置30から読み出したリードデータをバスマスタMに転送する。
図3は、バスマスタMからインタコネクト回路10に投入されるトランザクションについて説明するための図である。
図3(A)は、ライトアクセスにおいてバスマスタMから出力される信号波形の一例を示す。図3(A)のクロックサイクル“1”において、バスマスタMは、バスの割当を要求するためのバス要求信号(REQ)をアサートするとともに、アドレス信号(ADR)“A0”、コマンド信号(CMD)“C0”およびライトデータ(WDATA)“D0”の出力を開始する。バスアービタ11がレディ信号(READY)をアサートすると、アドレス信号、コマンド信号、およびライトデータが割当てられたバスに転送される。ここで、1度に出力できるライトデータの大きさはバス幅などによって制限される。このため大きなデータを転送する場合には複数のデータに分けて出力する必要がある。たとえば、図3(A)では1〜3のクロックサイクルで3個のライトデータ“D0”,“D1”,“D2”が出力される。
図3(B)は、図3(A)を簡略化したタイミング図を示す。図3(B)に示すように、バスマスタMは、クロックサイクル1〜3の間で連続して、アドレス信号“A0”およびコマンド信号“C0”の両方を出力し、クロックサイクル1,2,3にそれぞれライトデータ“D0”,“D1”,“D2”を出力する。
図3(C)は、図3(A)をさらに簡略化したタイミング図を示す。図3(C)に示すように、バスマスタMは、クロックサイクル1〜3の間に一連の処理W00,W01,W02を出力する。この一連の処理の全体をトランザクションW0と称し、各クロックサイクルで出力される個々の処理単位をセルW00,W01,W02と称する。セルW00,W01,W02は、それぞれライトデータ“D0”,“D1”,“D2”をSDRAM装置30のアドレス“A0”に書込む処理を表わす。バスアービタ11によって割当てられた経路は、1つのトランザクションW0が完了するまで専有される。
次に図2のバスアービタ11およびSDRAMコントローラ20の具体的な動作について詳しく説明する。
バスアービタ11は、SDRAM装置30へアクセスするためにバス(より一般的には、バスマスタMとSDRAMコントローラ20との間の経路)の割当を要求しているバスマスタMに対してバスの割当の調停を行なう。ここで、バスマスタM0〜Mnの各々には、割当優先度が予め設定されている。バスアービタ11は、1つのバスマスタMがバスの割当を要求しているときに不使用のバスがある場合には、割当優先度によらずそのバスマスタMに対して不使用のバスの1本を割当てる。一方、バスアービタ11は、複数のバスマスタMが同時にバスの割当を要求しているときに不使用のバスがある場合には、不使用のバスがなくなるまで割当優先度が高いほうから順にバスを割当てる。割当優先度は、バスマスタごとに固定されていてもよいし、割当要求をしてからの時間の経過とともに優先度が上がるようにしてもよい。もしくは、プログラムに従ってCPUが割当優先度を設定するようにしてもよい。
バスアービタ11は、さらに、バスを割当てたバスマスタMが出力したトランザクションに対して処理順番を設定する。処理順番は、バスを割当てたタイミングが早いバスマスタのトランザクションほど早い処理順番になる(すなわち、処理順位が高くなる)ように設定される。したがって、複数のバスマスタが同時にバスの割当を要求した場合には、割当優先度の高いほうから順にバスが割当てられるので、割当優先度が高いバスマスタMのトランザクションほど早い処理順番になる。一方、割当優先度が低くても相対的に早いタイミングでバスが割当てられたバスマスタのトランザクションは、相対的に遅いタイミングでバスが割当てられたバスマスタのトランザクションよりも処理順番が早くなる。このように処理順番を決定すれば、画像処理のようなリアルタイム処理が、本来処理されるべき時間内に処理できなくなる可能性をできるだけ回避することができる。
コマンドコントローラ21は、バスアービタ11によって設定された処理順番とトランザクションの内容とに基づいて、SDRAM装置30に対してコマンドを発行する。
図4は、図2のバスアービタ11の具体的な動作を示すフローチャートである。図2、図4を参照して、まず、図4のステップS101で、バスアービタ11は、処理順番IDを1に初期化する。
次のステップS102で、バスアービタ11は、バスの割当要求があるか否かを判定する。バスマスタMからバスの割当要求がある場合(ステップS102でYES)、バスアービタ11は、処理をステップS103に進める。
ステップS103で、バスアービタ11は、バスマスタMとSDRAMコントローラ20との間の経路(すなわち、バスおよびバッファ)に空きがあるか否かを調べる。経路に空きがない場合(ステップS103でNO)、処理はステップS102に戻る。経路に空きがある場合(ステップS103でYES)、処理はステップS104に進む。
ステップS104で、バスアービタ11は、バスの割当要求をしているバスマスタMが1個の場合は、そのバスマスタMに対して経路を割当てる。バスアービタ11は、バスの割当要求をしているバスマスタMが複数の場合は、最も割当優先度が高いバスマスタMに対して経路を割当てる。そして、バスアービタ11は、バスを割当てたバスマスタMが要求している処理内容、すなわち、トランザクションの最初のセルの情報と処理順番IDとを割当てたバッファに転送する。
次のステップS105で、バスアービタ11は、処理順番IDをカウントアップした後(すなわち、IDに1を加えた後)、処理をステップS102に戻す。以下、ステップS102〜ステップS105が繰り返される。
図5は、複数のトランザクションが投入されたときのバスアービタ11の動作について説明するための図である。バスマスタM0〜M2の割当優先度は、M0>M1>M2(M0が最も高く、M2が最も低い)とする。
図5(A)を参照して、バスマスタM0〜M2が書込トランザクションW0〜W2をそれぞれ同時に発行したとする。まず、バス13のうちのバスB0(図2参照)でバス権の調停が行われ、優先順位が最も高いバスマスタM0がバスB0のバス権(バスを使用する権利)を得る。バスマスタM0は、割当てられたバスB0を介してトランザクションW0をバッファbuf0に転送する。このとき同時に、バスアービタ11は、処理順番ID=1を生成してバッファbuf0に出力する。
次に図5(B)において、残りのバスマスタM1,M2が書込トランザクションW1,W2をそれぞれ発行している。この場合、バス13のうちのバスB1(図2参照)でバス権の調停が行われ、優先順位が高いほうのバスマスタM1がバスB1のバス権を得る。バスマスタM1は、割当てられたバスB1を介してトランザクションW1をバッファbuf1に転送する。このとき同時に、バスアービタ11は、処理順番ID=2を生成してバッファbuf1に出力する。
次に図5(C)において、残りのバスマスタM2が書込トランザクションW2を発行している。この場合、バス13のバスB2(図2参照)でバス権の調停が行われ、バスマスタM2がバスB2のバス権を得る。バスマスタM2は、割当てられたバスB2を介してトランザクションW2をバッファbuf2に転送する。このとき同時に、バスアービタ11は、処理順番ID=3を生成してバッファbuf2に出力する。
図6は、図5の場合でバスが割当てられた後の半導体装置100の動作について説明するための図である。
図6(A)を参照して、バッファbuf0に転送されたトランザクションW0の最初のセルW00の情報と処理順番(ID=1)とは、SDRAMコントローラ20のキューque0を通って、コマンドコントローラ21に達する。コマンドコントローラ21はセルW00をSDRAM装置30に対してアクセスするためのコマンドに変換する。2番目以降のセルW01,W02についても同様の処理が実行される。
次に図6(B)を参照して、バッファbuf1に転送されたトランザクションW1の最初のセルW10の情報と処理順番(ID=2)とは、SDRAMコントローラ20のキューque1を通って、コマンドコントローラ21に達する。コマンドコントローラ21はセルW10をSDRAM装置30に対してアクセスするためのコマンドに変換する。2番目以降のセルW11,W12についても同様の処理が実行される。
次に図6(c)を参照して、バッファbuf2に転送されたトランザクションW2の最初のセルW20の情報と処理順番(ID=3)とは、SDRAMコントローラ20のキューque2を通って、コマンドコントローラ21に達する。コマンドコントローラ21はセルW20をSDRAM装置30に対してアクセスするためのコマンドに変換する。2番目以降のセルW21,W22についても同様の処理が実行される。
図7は、SDRAMコントローラ20の動作について説明するためのフローチャートである。図7のフローチャートは、SDRAMコントローラ20が複数のバスマスタMから書込処理の要求を受けた場合の動作の一例を示している。なお、図2のSDRAMコントローラ20内にはキューが設けられていないとしている。
図2、図7を参照して、SDRAMコントローラ20は、まず、4個のバッファbuf0〜buf3に格納された書込トランザクションのうちで処理順番IDが最も早いものを選択する(ステップS201)。SDRAMコントローラ20は、当該トランザクションに対応してプリチャージ(PR)コマンドまたはアクティベート(AC)コマンドをまだ発行しておらず(ステップS202でNO)、それらのコマンドを発行可能な場合には(ステップS203でYES)、SDRAMコントローラ20は、PRコマンドまたはACコマンドを発行する(ステップS204)。
ここで、プリチャージ(PR)は、バンクアドレスで指定されたバンクに対して前回のアクセスで読み出したデータをメモリセルに書込むことによって、全ての行をアクティブでない状態にする操作をいう。アクティベート(AC)は、バンクアドレスで指定されたバンクのうちのロウアドレスで指定された行をアクティブにしてアクセスできるようにする操作をいう。SDRAM装置30に対してデータを書き込む場合には、PRコマンド、ACコマンド、書込(WR)コマンドの順にコマンドを発行する必要がある。一度、PRコマンドおよびACコマンドを発行した後は(ステップS202でYES)、同じ行のアクセスに対しては、WRコマンドを続けて発行することができる(ステップS206)。ただし、各コマンドを発行した後には待ち時間が必要であり、その間は次のコマンドが発行できない(ステップS203でNO、ステップS205でNO)。
待ち時間のためにACコマンドまたはPRコマンドを発行できない場合には(ステップS203でNO)、SDRAMコントローラ20は、処理順番IDがその次に早いトランザクションのうち(ステップS208)、同一バンクで実行中の他のトランザクションがないもの(ステップS209でNO)を選択する。そして、SDRAMコントローラ20は、当該トランザクションに対してプリチャージ(PR)コマンドまたはアクティベート(AC)コマンドをまだ発行しておらず(ステップS210でNO)、それらのコマンドを発行可能な場合には(ステップS211でYES)、PRコマンドまたはACコマンドを発行する(ステップS212)。一度、PRコマンドおよびACコマンドを発行した後は(ステップS210でYES)、同じ行のアクセスに対しては、WRコマンドを続けて発行することができる(ステップS214)。他のトランザクションがない場合には(ステップS207でNO)、処理はステップS201に戻る。
待ち時間のためにWRコマンドを発行できない場合も(ステップS205でNO)、SDRAMコントローラ20は、上記と同様の操作(ステップS215〜S220)を行なう。ただし、この場合には、処理順番IDの最も早いトランザクションに対応したWRコマンドの発行を優先して実行するために、WRコマンドの発行は行なわれない。
このように、SDRAMコントローラ20は、複数のバスマスタMから出力された複数のトランザクションが同一のバンクに対するものである場合には、これらのトランザクションを処理順番IDの早いものから順に実行する。一方、SDRAMコントローラ20は、複数のトランザクションが互いに異なるバンクに対するものである場合には、これらのトランザクションをインターリーブによって並行して実行する。
より一般的に言えば、SDRAMコントローラ20は、バスが割当てられた複数のバスマスタMから複数のトランザクションを受けている場合に、最も処理順位の高いトランザクションと並行して実行可能なトランザクションについては、最も処理順位の高いトランザクションとともに並行して実行する。SDRAMコントローラ20は、最も処理順位の高いトランザクションと並行して実行できないトランザクションについては、最も処理順位の高いトランザクションの実行終了後に実行する。
図8は、半導体装置100の動作の一例を示すタイミング図である。以下の説明で、バスマスタM0〜M2の割当優先度は、M0>M1>M2(M0が最も高く、M2が最も低い)とする。説明を簡単化するために、図2のSDRAMコントローラ20内にはキューが設けられていないとする。さらに、コマンド間(PR−AC間、AC−WR間、WR−WR間)の待ち時間(クロックサイクル数)は、使用するSDRAMの仕様とクロック周波数によって決まるが、ここでは全て1サイクルであるとしている。
図2、図8を参照して、図8のクロックサイクル“1”で、バスマスタM0〜M2が書込トランザクションW0〜W2をそれぞれ同時に発行したとする。ここで、書込トランザクションW0は、バンク0(BK=0)に対する書込処理であり、3個のセルW00,W01,W02から構成される。書込トランザクションW1は、バンク0(BK=0)に対する書込処理であり、3個のセルW10,W11,W12から構成される。書込トランザクションW2は、バンク1(BK=1)に対する書込処理であり、3個のセルW20,W21,W22から構成される。バスアービタ11は、割当優先度の最も高いバスマスタM0に対してバスB0およびバッファbuf0を割当てるとともに、トランザクションW0に対して処理順番(ID=1)を設定する。この結果、トランザクションW0の最初のセルW00と処理順番(ID=1)がバッファbuf0に格納される。バッファbuf0の格納値は次のクロックサイクルで確定する。
次のクロックサイクル“2”で、バスアービタ11は、割当優先度が次に高いバスマスタM1に対してバスB1およびバッファbuf1を割当てるとともに、トランザクションW1に対して処理順番(ID=2)を設定する。この結果、トランザクションW1の最初のセルW10と処理順番(ID=2)がバッファbuf1に格納される。バッファbuf1の格納値は次のクロックサイクルで確定する。
次のクロックサイクル“3”で、バスアービタ11は、割当優先度が次に高いバスマスタM2に対してバスB2およびバッファbuf2を割当てるとともに、トランザクションW2に対して処理順番(ID=3)を設定する。この結果、トランザクションW2の最初のセルW20と処理順番(ID=3)がバッファbuf2に格納される。バッファbuf2の格納値は次のクロックサイクルで確定する。SDRAMコントローラ20は、バッファbuf0に格納されたセルW00の内容に基づいて、バンク0(BK=0)に対してPRコマンドを発行する(図7のステップS204)。
次のクロックサイクル“4”では、SDRAMコントローラ20は、コマンド間の待ち時間のためにセルW00の内容に基づいてACコマンドを発行することができない(図7のステップS203でNO)。さらに、SDRAMコントローラ20は、トランザクションW0とトランザクションW1とが同じバンク(BK=0)に対する処理であるので、トランザクションW0が完了するまでトランザクションW1の最初のセルW10の内容に基づいてPRコマンドを発行することができない(図7のステップS209でYES)。
次のクロックサイクル“5”で、SDRAMコントローラ20は、バッファbuf0に格納されたセルW00の内容に基づいて、バンク0(BK=0)に対してACコマンドを発行する(図7のステップS204)。
次のクロックサイクル“6”では、SDRAMコントローラ20は、コマンド間の待ち時間のためにセルW00の内容に基づいてWRコマンドを発行することができない(図7のステップS205でNO)。そこで、この間に、SDRAMコントローラ20は、バッファbuf2に格納されたセルW20の内容に基づいて、バンク1(BK=1)に対してPRコマンドを発行する(図7のステップS220)。
次のクロックサイクル“7”で、SDRAMコントローラ20は、バッファbuf0に格納されたセルW00の内容に基づいて、バンク0(BK=0)に対してWRコマンドを発行する(図7のステップS206)。以上でトランザクションW0の最初のセルW00に対する処理は完了したので、第2番目のセルW01と処理順番(ID=1)がバッファbuf0に格納される。
次のクロックサイクル“8”では、SDRAMコントローラ20は、コマンド間の待ち時間のためにセルW01の内容に基づいてWRコマンドを発行することができない(図7のステップS205でNO)。そこで、この間に、SDRAMコントローラ20は、バッファbuf2に格納されたセルW20の内容に基づいて、バンク1(BK=1)に対してACコマンドを発行する(ステップS220)。
次のクロックサイクル“9”で、SDRAMコントローラ20は、バッファbuf0に格納されたセルW01の内容に基づいて、バンク0(BK=0)に対してWRコマンドを発行する図7のステップS206)。以上でトランザクションW0の第2番目のセルW01に対する処理は完了したので、第3番目のセルW02と処理順番(ID=1)がバッファbuf0に格納される。
次のクロックサイクル“10”では、SDRAMコントローラ20は、コマンド間の待ち時間のためにトランザクションW0の第3番目のセルW02に基づくWRコマンドを発行することができない(図7のステップS205でNO)。なお、トランザクションW1は、トランザクションW0と同バンクに対する書込処理なので実行できず(図7のステップS217でYES)、トランザクションW1についてはPR,ACコマンドを発行済である(図7のステップS218でYES)。
次のクロックサイクル“11”で、SDRAMコントローラ20は、バッファbuf0に格納されたセルW02の内容に基づいて、バンク0(BK=0)に対してWRコマンドを発行する(図7のステップS206)。以上でトランザクションW0の処理がすべて終了したので、バスB0およびバッファbuf0の割当が解除される。したがって、次のクロックサイクルからは、最も処理順番の早いトランザクションはW1であり、次に処理順番の早いトランザクションはW2である。
次のクロックサイクル“12”では、SDRAMコントローラ20は、コマンド間の待ち時間のためにトランザクションW1,W2に基づくコマンドを発行することができない(図7のステップS203でNO、ステップS213でNO)。
次のクロックサイクル“13”で、SDRAMコントローラ20は、バッファbuf1に格納されたセルW10の内容に基づいて、バンク0(BK=0)に対してPRコマンドを発行する(ステップS204)。
次のクロックサイクル“14”では、SDRAMコントローラ20は、コマンド間の待ち時間のためにセルW01の内容に基づいてACコマンドを発行することができない(ステップS203でNO)。そこで、この間に、SDRAMコントローラ20は、バッファbuf2に格納されたセルW20の内容に基づいて、バンク1(BK=1)に対してWRコマンドを発行する(ステップS214)。以上でトランザクションW2の最初のセルW20に対する処理は完了したので、第2番目のセルW21と処理順番(ID=3)がバッファbuf2に格納される。
以下、クロックサイクル“15”,“17”で、SDRAMコントローラ20は、バッファbuf1に格納されたセルW10の内容に基づいて、バンク0(BK=0)に対してACコマンド、WRコマンドをそれぞれ発行する。クロックサイクル“19”,“21”で、SDRAMコントローラ20は、トランザクションW1のセルW11,W12の内容に基づいて、バンク0(BK=0)に対してWRコマンドをそれぞれ発行する。クロックサイクル“23”,“25”で、SDRAMコントローラ20は、トランザクションW2のセルW21,W22の内容に基づいて、バンク1(BK=1)に対してWRコマンドをそれぞれ発行する。以上で、トランザクションW0〜W3の実行が完了する。
上記のとおり実施の形態1の半導体装置100によれば、複数のバスマスタM0〜MnとSDRAMコントローラ20との間のトランザクションの経路を複数にして、複数のトランザクションが並行してSDRAMコントローラ20に供給される。これによって、バンクインタリーブを活用して複数のトランザクションを効率的に処理することができる。さらに、バスアービタ11がトランザクションの処理順番を生成してSDRAMコントローラ20に伝達することにより、SDRAMコントローラ20は、トランザクションが本来処理されるべき順番を維持しながら、SDRAM装置30にコマンドを発行することができる。以下、比較例の半導体装置900と対比しながら、図2の半導体装置100の効果についてさらに説明する。
図9は、図2の半導体装置100の比較例としての半導体装置900の構成を示すブロック図である。図2のインタコネクト回路10はバスおよびバッファを複数組備えていたが、図9の比較例のインタコネクト回路910は、1本のバス913および1個のバッファbufのみを含む。したがって、各バスマスタMからSDRAMコントローラ20に至るトランザクションの伝達経路は1つしかない。
図9において、複数のバスマスタがバスの割当を要求している場合、バスアービタ911がそれらの割当要求を調停し、最も優先度が高いバスマスタにバスを使用する権利(バス権)を与える。たとえば、バスマスタM0〜M2の割当優先度を、M0>M1>M2(M0が最も高く、M2が最も低い)とし、バスマスタM0〜M2が書込トランザクションW0〜W2をそれぞれ同時に発行したとする。この場合、バス権はM0,M1,M2の順にバスマスタに与えられるので、W0,W1,W2の順でトランザクションがコマンドコントローラ921に入力されることになる。
図9の構成で、インタリーブによってSDRAM装置930へのアクセス効率を高めるためには、SDRAMコントローラ920に設けられたキューqueの段数m+1を増やす必要がある。しかしながら、たとえキューqueの段数を増やしたとしても、図2のように複数の経路を設けることによって複数のトランザクションがコマンドコントローラ21に並列に入力される場合に比べるとスループットの向上には限界がある。
図10は、図2の半導体装置100のスループットと図9の比較例の半導体装置300のスループットとを比較して示した図である。
図10では、3種類のSDRAMコントローラの各々についてSDRAM装置をアクセスしたときのスループットの値が示されている。スループットの値は確率計算により算出した。前提条件は、(1)SDRAMの複数バンクのうちどのバンクへアクセスするかはランダムである。(2)SDRAMに対する読出と書込の比率は50%ずつである。ここで、スループットとは、SDRAMの実効バンド幅の、SDRAMの持つ理想のバンド幅に対する比率をいう。
図10のグラフ(I)は、バンクインタリーブを行わないSDRAMコントローラを用いたときのスループットを示す。グラフ(II)は、バンクインタリーブを行う図9に示す比較例のSDRAMコントローラ920を用いたときのスループットを示す。グラフ(III)は、図2に示す実施の形態1によるSDRAMコントローラ20を用いたときのスループットを示す。図10において、縦軸にスループットを示し、横軸にチャンクサイズの平均値を示す。ここでチャンクとは、1つのマスタがSDRAMにアクセスするとき、排他的に(他のマスタからの割込みなしに)転送するデータの塊であり、1つのSDRAMページ内に配置されるものとする。チャンクサイズは、チャンクデータの塊の大きさ(バイト数)である。
チャンクサイズが小さくなるほど、SDRAMをアクセスするときのオーバヘッド(プリチャージとアクティベートにかかる時間)の割合が相対的に大きくなるためSDRAMのスループットが小さくなる。一方、チャンクサイズが小さくなるほど、実施の形態1の場合のグラフ(III)と比較例の場合のグラフ(II)との差が大きくなる。一般に、市販用のディジタル機器では、コストに対する要求により搭載するバッファメモリの容量を小さくする必要があるため、チャンクサイズも小さくなる傾向がある。図10において、チャンクサイズが256バイトのとき、実施の形態1の場合(III)の比較例(II)に対するスループットの向上は約6%である。
リアルタイム型のバスマスタには、決まったアクセス制限時間があるため、スループットの大部分を割り当てることが一般的である。たとえば、チャンクサイズが256バイトのときを考える。インタリーブを行なわない場合(I)のスループットの値である約55%のうち、95%(スループット=52.25%)をリアルタイム型のバスマスタに割当てて、残りの5%(スループット=2.74%)をベストエフォート型のバスマスタに割当てたとする。リアルタイム型のバスマスタはある決まったスループットしか使わないため、SDRAMのバンクインタリーブによって増えたスループットは全てベストエフォート型マスタに回されることになる。したがって、比較例のSDRAMコントローラ920を使った場合にベストエフォート型マスタが使用するスループットは、2.74%に55%から増加したスループット分(26.7%)を加えて“29.44%”となる。実施の形態1のSDRAMコントローラ20を使った場合にベストエフォート型マスタが使用するスループットは、2.74%に55%から増加したスループット分(32.73%)を加えて、35.47%となる。したがって、実施の形態1の半導体装置100によれば、ベストエフォート型マスタが使えるSDRAMのスループットは、従来よりも“20%”増加することになる。
上記のメモリアクセスのスループットの改善により、ベストエフォート型バスマスタによる処理速度向上が期待できる。ベストエフォート型バスマスタは、ディジタルテレビジョン装置などのディジタル機器においては、たとえば、GUI(グラフィカル・ユーザ・インタフェース)を司っている。したがって、ベストエフォート型マスタの処理速度向上により、たとえばディジタルテレビジョン装置では、チャネルの切り換え時間が速くなったり、番組表の表示が速くなったりといったメリットをユーザが実感できる。
<実施の形態2>
実施の形態1の半導体装置100では、各バスマスタMからインタコネクト回路10を経てSDRAMコントローラ20に至る経路が最大4つ(バスB0〜B3、バッファbuf0〜buf3)あり、最大4つのトランザクションが投入できた。この結果、SDRAMコントローラ20が4つのトランザクションの処理順番やアクセスするバンクに応じて、バンクインタリーブを活用してSDRAMアクセスの効率を高められるという利点があった。しかしながら、その反面、一度4つの経路上にトランザクションが投入されてしまうと、後から緊急度の高い(すなわち、早急なSDRAMアクセス処理を必要とする)トランザクションのアクセス要求がバスマスタから出されても、経路上にトランザクションが詰まっているため、これらのトランザクションのいずれかの処理が終了するまで経路の割当が行なわれない。さらに、処理順番は経路が割当てられた順番で決まるので、最悪の場合には、すでに投入されたトランザクションがすべて終了するまでその緊急度の高いトランザクションが待たされてしまうという問題点がある。実施の形態2では、この問題を緩和する半導体装置200が提供される。
実施の形態1の半導体装置100では、各バスマスタMからインタコネクト回路10を経てSDRAMコントローラ20に至る経路が最大4つ(バスB0〜B3、バッファbuf0〜buf3)あり、最大4つのトランザクションが投入できた。この結果、SDRAMコントローラ20が4つのトランザクションの処理順番やアクセスするバンクに応じて、バンクインタリーブを活用してSDRAMアクセスの効率を高められるという利点があった。しかしながら、その反面、一度4つの経路上にトランザクションが投入されてしまうと、後から緊急度の高い(すなわち、早急なSDRAMアクセス処理を必要とする)トランザクションのアクセス要求がバスマスタから出されても、経路上にトランザクションが詰まっているため、これらのトランザクションのいずれかの処理が終了するまで経路の割当が行なわれない。さらに、処理順番は経路が割当てられた順番で決まるので、最悪の場合には、すでに投入されたトランザクションがすべて終了するまでその緊急度の高いトランザクションが待たされてしまうという問題点がある。実施の形態2では、この問題を緩和する半導体装置200が提供される。
図11は、この発明の実施の形態2に従う半導体装置200の構成を示すブロック図である。
図11の半導体装置200は、各バスマスタMからバスアービタ11Aに対して出力される最優先信号PSが追加されている点で図2の半導体装置100と異なる。バスアービタ11Aは、最優先信号PSがアサートされていないとき(通常時)には、各バスマスタMからSDRAMコントローラ20に至る4つの経路のうち、バスB0およびバッファbuf0を経てSDRAMコントローラ20に至る経路は使用せずに空いたままとするようにバスの調停を行なう。バスアービタ11Aは、さらに、通常時には処理順番IDを2以上の値に設定する。バスアービタ11Aは、最優先信号がアサートされたとき(緊急時)には、バスB0およびバッファbuf0を経てSDRAMコントローラ20に至る経路を、最優先信号PSをアサートしたバスマスタMに対して割当てる。バスアービタ11Aはさらに、緊急時には処理順番IDを1に設定する。具体的には、次の図12に示す手順によってバスの割当の処理順番の設定とが行なわれる。なお、図11のその他の点は図2の半導体装置100と同じであるので、同一または相当する部分には同一の参照符号を付して説明を繰返さない。
図12は、図11のバスアービタ11Aの動作を示すフローチャートである。図11、図12を参照して、まず、ステップS301で、バスアービタ11Aは、処理順番IDを2に初期化する。
次のステップS302で、バスアービタ11Aは、最優先信号PSがアサートされた緊急のバスの割当要求があるか否かを判定する。バスマスタMからバスの緊急の割当要求がある場合(ステップS302でYES)、バスアービタ11Aは、処理をステップS303に進める。
ステップS303で、バスアービタ11Aは、バスB0およびバッファbuf0を介した緊急経路が空いているか否かを調べる。緊急経路が空いていない場合(ステップS303でNO)、処理はステップS303で緊急経路が空くまで待機(ループ)する。緊急経路が空いている場合(ステップS303でYES)、処理はステップS304に進む。
ステップS304で、バスアービタ11Aは、バスの緊急の割当要求をしているバスマスタMが1個の場合は、そのバスマスタMに対して緊急経路を割当てる。バスアービタ11Aは、バスの緊急の割当要求をしているバスマスタMが複数の場合は、最も割当優先度が高いバスマスタMに対して緊急経路を割当てる。そして、バスアービタ11Aは、バスを割当てたバスマスタMが要求している処理内容、すなわち、トランザクションの最初のセルの情報と処理順番(ID=1)とを緊急用のバッファbuf0に転送する。その後、処理はステップS302に戻る。
一方、バスの緊急の割当要求がない場合(ステップS302でNO)、処理はステップS305に進む。ステップS305で、バスアービタ11Aは、最優先信号PSがネゲートされた通常のバスの割当要求があるか否かを判定する。バスマスタMからバスの通常の割当要求がある場合(ステップS305でYES)、バスアービタ11Aは、処理をステップS306に進める。通常の割当要求がない場合(ステップS305でNO)、処理はステップS302に戻る。
ステップS306で、バスアービタ11Aは、バスB1〜B3およびバッファbuf1〜buf3を介した通常経路に空きがあるか否かを調べる。通常経路に空きがない場合(ステップS306でNO)、処理はステップS302に戻る。経路に空きがある場合(ステップS303でYES)、処理はステップS307に進む。
ステップS307で、バスアービタ11Aは、バスの通常の割当要求をしているバスマスタMが1個の場合は、そのバスマスタMに対して通常経路の1つを割当てる。バスアービタ11Aは、バスの割当要求をしているバスマスタMが複数の場合は、最も割当優先度が高いバスマスタMに対して通常経路を割当てる。そして、バスアービタ11Aは、バスを割当てたバスマスタMが要求している処理内容、すなわち、トランザクションの最初のセルの情報と現在の処理順番IDとを割当てたバッファに転送する。
次のステップS308で、バスアービタ11Aは、処理順番IDをカウントアップした後(すなわち、IDに1を加えた後)、処理をステップS302に戻す。以下、ステップS302〜ステップS308が繰り返される。
図13は、複数のトランザクションが投入されたときのバスアービタ11Aの動作について説明するための図である。バスマスタの割当優先度は、M0>M1>M2>M3>M4とする。
図13(A)では、バスマスタM0〜M3がトランザクションW0〜W3を発行して、トランザクションW0〜W2までが受け付けられ、トランザクションW0がSDRAMコントローラ20によって処理中である状態を示す。トランザクションW0〜W2に対して、処理順番(ID)2〜4がそれぞれ割振られる。M3はトランザクションW3を行おうとしているが、最優先信号をアサートしていないために、空いているバスB0、バッファbuf0の経路は使用することができず、待たされた状態にある。
図13(B)で新たに、M4がトランザクションW4を行おうとアクセス要求を出力する。この際、M4は最優先信号をアサートしたとする。最優先信号をアサートしているために、M4の発行するトランザクションW4は、バスB0およびバッファbuf0の経路で受付けられる。バスアービタ11Aは処理順番(ID=1)を生成しバッファbuf0に投入する。この後、SDRAMコントローラ20は、バッファbuf0〜buf3にあるトランザクションを処理順番IDの値にしたがって処理する。したがって、トランザクションは、W0、W4、W0、W1、W2の順番で処理されることになる。W0、W4、W0の順番となるのは、W0の処理中に処理順番が早いトランザクションW0が、バスB0−バッファbuf0−キューque0の緊急経路に割り込まれるためである。実施の形態1の半導体装置100であれば、W0、W1、W2、W3、W4の順番で処理され、緊急を要するW4の処理が待たされるのに対し、実施の形態2の半導体装置200では、緊急度の高いW4をW0の処理中に割り込ませることができる。
図14は、半導体装置200の動作の一例を示すタイミング図である。以下の説明で、バスマスタM0〜M4の割当優先度は、M0>M1>M2>M3>M4とする。説明を簡単化するために、図11のSDRAMコントローラ20内にはキューが設けられていないとする。さらに、コマンド間(PR−AC間、AC−WR間、WR−WR間)の待ち時間(クロックサイクル数)は、使用するSDRAMの仕様とクロック周波数によって決まるが、ここでは全て1サイクルであるとしている。
図11、図14を参照して、図14のクロックサイクル“1”で、バスマスタM0〜M2が、いずれも最優先信号をネゲートした状態で、書込トランザクションW0〜W2をそれぞれ同時に発行したとする。ここで、書込トランザクションW0は、バンク0(BK=0)に対する書込処理であり、3個のセルW00,W01,W02から構成されるとする。書込トランザクションW1は、バンク0(BK=0)に対する書込処理であり、3個のセルW10,W11,W12から構成されるとする。書込トランザクションW2は、バンク1(BK=1)に対する書込処理であり、3個のセルW20,W21,W22から構成されるとする。バスアービタ11Aは、割当優先度の最も高いバスマスタM0に対してバスB1およびバッファbuf1を割当てるとともに、トランザクションW0に対して処理順番(ID=2)を設定する。この結果、トランザクションW0の最初のセルW00と処理順番(ID=2)とがバッファbuf1に格納される。バッファbuf1の格納値は次のクロックサイクルで確定する。
次のクロックサイクル“2”で、バスアービタ11Aは、割当優先度が次に高いバスマスタM1に対してバスB2およびバッファbuf2を割当てるとともに、トランザクションW1に対して処理順番(ID=3)を設定する。この結果、トランザクションW1の最初のセルW10と処理順番(ID=3)とがバッファbuf2に格納される。バッファbuf2の格納値は次のクロックサイクルで確定する。
次のクロックサイクル“3”で、SDRAMコントローラ20は、この時点で処理順番が最も早いバッファbuf1に格納されたセルW00(ID=2)の内容に基づいて、バンク0(BK=0)に対してPRコマンドを発行する(図7のステップS204)。バスアービタ11Aは、残るバスマスタM2に対してバスB3およびバッファbuf3を割当てるとともに、トランザクションW2に対して処理順番(ID=4)を設定する。この結果、トランザクションW2の最初のセルW20と処理順番(ID=4)がバッファbuf3に格納される。バッファbuf3の格納値は次のクロックサイクルで確定する。
次のクロックサイクル“4”で、SDRAMコントローラ20は、コマンド間の待ち時間のためにセルW00の内容に基づいてACコマンドを発行することができない(図7のステップS203でNO)。さらに、SDRAMコントローラ20は、トランザクションW0とトランザクションW1とが同じバンク(BK=0)に対する処理であるので、トランザクションW0が完了するまでトランザクションW1の最初のセルW10の内容に基づいてPRコマンドを発行することができない(図7のステップS209でYES)。
次のクロックサイクル“5”で、SDRAMコントローラ20は、バッファbuf1に格納されたセルW00の内容に基づいて、バンク0(BK=0)に対してACコマンドを発行する(図7のステップS204)。
次のクロックサイクル“6”で、バスマスタM4が書込トランザクションW4を発行するとともに、最優先信号をアサートする。ここで、書込トランザクションW0は、バンク2(BK=2)に対する書込処理であり、3個のセルW40,W41,W42から構成されるとする。バスアービタ11Aは、最優先信号がアサートされているので、バスマスタM4に対してバスB0およびバッファbuf0を割当てるとともに、トランザクションW4に対して処理順番(ID=1)を設定する。この結果、トランザクションW4の最初のセルW40と処理順番(ID=1)とがバッファbuf0に格納される。バッファbuf0の格納値は次のクロックサイクルで確定する。
このクロックサイクル“6”では、SDRAMコントローラ20は、コマンド間の待ち時間のためにセルW00の内容に基づいてWRコマンドを発行することができない(図7のステップS205でNO)。そこで、SDRAMコントローラ20は、バッファbuf3に格納されたセルW20の内容に基づいて、バンク1(BK=1)に対してPRコマンドを発行する(図7のステップS220)。
次のクロックサイクル“7”で、SDRAMコントローラ20は、バッファbuf1に格納されたセルW00の内容に基づいて、バンク0(BK=0)に対してWRコマンドを発行する(図7のステップS205)。以上でトランザクションW0の最初のセルW00に対する処理は完了したので、第2番目のセルW01と処理順番(ID=2)がバッファbuf1に格納される。
次のクロックサイクル“8”で、SDRAMコントローラ20は、この時点で処理順番が最も早いバッファbuf0に格納されたセルW40の内容に基づいて、バンク2(BK=2)に対してPRコマンドを発行する(図7のステップS204)。
次のクロックサイクル“9”では、コマンド間の待ち時間のために、処理順番が最も早いセルW40(ID=1)の内容に基づいて、バンク2(BK=2)に対してACコマンドを発行することができない(ステップS203でNO)。そこで、この間に、SDRAMコントローラ20は、次に処理順番が早いバッファbuf1に格納されたセルW01(ID=2)の内容に基づいて、バンク0(BK=0)に対してWRコマンドを発行する(図7のステップS214)。以上でトランザクションW0の第2番目のセルW01に対する処理は完了したので、第3番目のセルW02と処理順番(ID=2)がバッファbuf1に格納される。
次のクロックサイクル“10”で、SDRAMコントローラ20は、処理順番が最も早いバッファbuf0に格納されたセルW40(ID=1)の内容に基づいて、バンク2(BK=2)に対してACコマンドを発行する(図7のステップS204)。
次のクロックサイクル“11”では、コマンド間の待ち時間のために、処理順番が最も早いバッファf0に格納されたセルW40(ID=1)の内容に基づいて、バンク2(BK=2)に対してWRコマンドを発行することができない(図7のステップS205でNO)。トランザクションW4(ID=1)の処理を優先するために、処理順番が次に早いバッファf1に格納されたセルW02(ID=2)に基づいてWRコマンドを発行することもできない。そこで、SDRAMコントローラ20は、バッファbuf3に格納されたセルW20の内容に基づいて、バンク1(BK=1)に対してACコマンドを発行する(ステップS220)。
以下、クロックサイクル“12”、“14”、“16”で、SDRAMコントローラ20は、処理順番が最も早いバッファf0に格納されたセルW40,W41,W42の内容に基づいて、バンク2(BK=2)に対してWRコマンドを発行する。以上でトランザクションW4の処理がすべて終了したので、バスB0およびバッファbuf0の割当が解除される。
クロックサイクル“18”で、SDRAMコントローラ20は、その時点で処理順番が最も早いバッファf1に格納されたW02(ID=2)の内容に基づいて、バンク0(BK=1)に対してWRコマンドを発行する。以上でトランザクションW0の処理がすべて終了したので、バスB1およびバッファbuf1の割当が解除される。
トランザクションW0が完了したことによって、同じバンク0(BK=0)に対するトランザクションW1に基づくPRコマンド、ACコマンドが、クロックサイクル“20”、“22”で発行される。さらに、トランザクションW1に基づくWRコマンドが、クロックサイクル“24”、“26”、“28”で発行される。
トランザクションW1とは異なるバンク1(BK=1)に対するトランザクションW2は、インターリーブの態様でトランザクションW1と並行して実行される。すわなち、トランザクションW2に基づくWRコマンドが、クロックサイクル“21”、“23”、“30”で発行される。
上記のとおり、実施の形態2の半導体装置200によれば、各バスマスタMとSDRAMコントローラ20との間の複数のトランザクション経路のうち1つを緊急トランザクション用に空けておく。そして、バスマスタから受ける最優先信号がアサートされたときに、バスアービタ11Aは、その緊急経路に最優先信号をアサートしたバスマスタからのトランザクションを投入する。さらに通常のトランザクションに割当てられるどの処理順番よりも早い順番である処理順番(ID=1)をこの緊急経路に投入することによって、この緊急トランザクションをSDRAMコントローラ20に優先して処理させる。これにより、緊急を要するトランザクションが発生したときにでも、そのトランザクションを長く待たせることなく処理することができる。
上記の半導体装置200では、緊急用の経路が1つに設定されていたが、複数の経路を緊急経路に設定してもよい。この場合、バスアービタは、バスマスタM0〜Mnのうち1個のバスマスタが最優先信号をアサートすることによって緊急経路の割当を要求しているときに不使用の緊急経路がある場合には、緊急経路の割当を要求しているバスマスタに対して不使用の緊急経路のうちの1つを割当てる。バスアービタは、バスマスタM0〜Mnのうち複数のバスマスタが最優先信号をアサートすることによって緊急経路の割当を要求しているときに不使用の緊急経路がある場合には、不使用の緊急経路がなくなるまで、緊急経路の割当を要求しているバスマスタに対して割当優先度の高いほうから順に不使用の緊急経路を1つずつ割当てる。バスアービタは、さらに、緊急経路を割当てた複数のバスマスタの中では、緊急経路を割当てたタイミングが早いバスマスタのトランザクションほど処理順位を高く設定し、緊急経路を割当てたバスマスタのトランザクションは通常経路を割当てたどのバスマスタのトランザクションよりも処理順位を高く設定する。
<実施の形態3>
図15は、この発明の実施の形態3に従う半導体装置300の構成を示すブロック図である。図15の半導体装置300では、バスマスタに割当可能なバスおよびバッファの数(経路数)が制限される点で図2の半導体装置100と異なる。この経路数は、インタコネクト回路10Bの内部(もしくは外部)に設けられたレジスタ14に格納される。レジスタ14からは経路数を表わす経路数指示信号NSがバスアービタ11Bに出力される。バスアービタ11Bは、経路数指示信号NSに従って、各バスマスタMからSDRAMコントローラ20へのトランザクションの転送に用いる経路の数(バスおよびバッファの数)を制限する。レジスタ14に保持される経路数を表わす情報は、たとえばCPUによって書換可能である。図15のその他の点は図2の半導体装置100と同じであるので、同一または相当する部分には同一の参照符号を付して説明を繰返さない。
図15は、この発明の実施の形態3に従う半導体装置300の構成を示すブロック図である。図15の半導体装置300では、バスマスタに割当可能なバスおよびバッファの数(経路数)が制限される点で図2の半導体装置100と異なる。この経路数は、インタコネクト回路10Bの内部(もしくは外部)に設けられたレジスタ14に格納される。レジスタ14からは経路数を表わす経路数指示信号NSがバスアービタ11Bに出力される。バスアービタ11Bは、経路数指示信号NSに従って、各バスマスタMからSDRAMコントローラ20へのトランザクションの転送に用いる経路の数(バスおよびバッファの数)を制限する。レジスタ14に保持される経路数を表わす情報は、たとえばCPUによって書換可能である。図15のその他の点は図2の半導体装置100と同じであるので、同一または相当する部分には同一の参照符号を付して説明を繰返さない。
図16は、複数のトランザクションが投入されたときのバスアービタ11Bの動作について説明するための図である。
図16(A)を参照して、まず、バスマスタM0〜M3までがトランザクションW0〜W3に対する転送要求を出力したとする。レジスタ14には経路数=3が設定されているとする。ここで、バスマスタM0〜M3の優先度は、M0>M1>M2>M3とする。経路数が3に限定されているため、M0、M1、M2の3つのマスタのトランザクションW0、W1、W2がバス権を得てトランザクションを開始する。
次に図16(B)を参照して、処理順番が最も早い(ID=1)トランザクションW0に対するSDRAM装置30へのアクセス処理が行われている間に、バスマスタM4からトランザクションW4のデータ転送要求が出力されたとする。ここで、バスマスタM4の割当て優先度がバスマスタM3よりも高い(すなわち、トランザクションW4の緊急度がW3よりも高い)とする。トランザクションW0を処理していた経路であるバスB0およびバッファbuf0が空いたとき、バスアービタ11Bは、割当優先度が高いバスマスタM4からのトランザクションW4をこの経路に投入する。
使用できる経路数が実施の形態1の場合と同じ“4”であれば、トランザクションW0〜W4に設定される処理順番IDは、W0に対してID=1、W1に対してID=2、W2に対してID=3、W3に対してID=4、W4に対してID=5となる。このため、緊急度が高いトランザクションW4に対する処理順番IDが、トランザクションW3に対する処理順番IDよりも遅くなってしまう。本実施の形態の場合のように、トランザクションを転送する経路の数を“3”に制限していれば、トランザクションW0〜W4に設定される処理順番IDは、W0に対してID=1、W1に対してID=2、W2に対してID=3、W3に対してID=5、W4に対してID=4となる。この結果、緊急度の高いトランザクションW4を少しでも早く処理することができる。
上記のとおり、実施の形態3の半導体装置300によれば、各バスマスタMとSDRAMコントローラ20との間の複数のトランザクション経路のうち、使用する経路をCPUなどからの指示により制限することができる。こうすることで、緊急度の高いトランザクションが発生したときに、そのトランザクションの処理が待たされる時間を短くすることができる。もっとも、使用する経路の数が多いほうが、より効率的にバンクインタリーブを活用して、SDRAMのアクセス効率を高めることができることは確かである。したがって、実施の形態3の半導体装置300の利点は、トランザクション経路の数をソフトウエアで調整することにより、SDRAMのアクセス効率を高めることと、緊急度の高いトランザクションが発生した場合にそのトランザクションが待たされる時間を短くすることとのバランスを調整する点にあると言える。
前述の実施の形態2の半導体装置200においても経路数を可変とすることができる。すなわち、実施の形態2において、通常経路の経路数と緊急経路の経路数とをソフトウェアによって変更可能なようにしてもよい。
今回開示された実施の形態はすべての点で例示であって制限的なものでないと考えられるべきである。この発明の範囲は上記した説明ではなくて請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
10,10B インタコネクト回路、11,11A,11B バスアービタ、buf0〜buf3 バッファ、B0〜B3 バス、14 レジスタ、20 SDRAMコントローラ、21 コマンドコントローラ、30 SDRAM装置、100,200,300 半導体装置、M,M0〜Mn バスマスタ、W0〜W4 トランザクション、que0〜que3 キュー。
Claims (7)
- m本(mは2以上の整数)のバスと、
前記m本のバスに接続される、スレーブ装置用のコントローラと、
各々が前記m本のバスに接続され、前記m本のバスのうちの割当てられた1本のバスを介して前記スレーブ装置に対する処理要求を前記コントローラに出力する、中央処理装置(CPU)を含むn個(nはmより大きい整数)のマスタ装置と、
前記m本のバスの割当を調停する調停回路とを備え、
前記n個のマスタ装置の各々には割当優先度が定められ、
前記調停回路は、前記n個のマスタ装置のうちバスの割当を要求している1または複数のマスタ装置に対して、バスの割当を要求したタイミングと割当優先度とに基づいて不使用のバスを割当てるとともに、バスを割当てたマスタ装置が出力する処理要求に対して処理順位を設定し、
前記コントローラは、バスが割当てられたマスタ装置から受けた処理要求の内容と前記調停回路によって設定された処理順位とに基づいて、前記スレーブ装置に対して処理を実行する、半導体装置。 - 前記調停回路は、前記n個のマスタ装置のうち1個のマスタ装置が前記m本のバスのうちいずれかの割当を要求しているときに不使用のバスがある場合には、バスの割当を要求しているマスタ装置に対して不使用のバスのうちの1本を割当て、
前記調停回路は、前記n個のマスタ装置のうち複数のマスタ装置が同時に前記m本のバスのうちいずれかの割当を要求しているときに不使用のバスがある場合には、不使用のバスがなくなるまで、バスの割当を要求しているマスタ装置に対して割当優先度の高いほうから順に不使用のバスを1本ずつ割当て、
前記調停回路は、バスを割当てたタイミングが早いマスタ装置の処理要求ほど処理順位を高く設定する、請求項1に記載の半導体装置。 - 前記m本のバスは、p本の第1バスと1本の第2バスとを含み(ただし、pは2以上の整数、p+1=m)、
前記調停回路は、前記n個のマスタ装置のうち1個のマスタ装置が前記p本の第1バスのうちいずれかの割当を要求しているときに不使用の第1バスがある場合には、第1バスの割当を要求しているマスタ装置に対して不使用の第1バスのうちの1本を割当て、
前記調停回路は、前記n個のマスタ装置のうち複数のマスタ装置が同時に前記p本の第1バスのうちいずれかの割当を要求しているときに不使用の第1バスがある場合には、不使用の第1バスがなくなるまで、第1バスの割当を要求しているマスタ装置に対して割当優先度の高いほうから順に不使用の第1バスを1本ずつ割当て、
前記調停回路は、前記n個のマスタ装置のうち1個のマスタ装置が前記第2バスの割当を要求しているときに第2バスが不使用の場合には、第2バスの割当を要求しているマスタ装置に対して前記第2バスを割当て、
前記調停回路は、前記n個のマスタ装置のうち複数のマスタ装置が同時に前記第2バスの割当を要求しているときに第2バスが不使用の場合には、第2バスの割当を要求しているマスタ装置のうち最も割当優先度の高いマスタ装置に対して前記第2バスを割当て、
前記調停回路は、第1バスを割当てた複数のマスタ装置の中では、第1バスを割当てたタイミングが早いマスタ装置の処理要求ほど処理順位を高く設定し、第2バスを割当てたマスタ装置の処理要求は第1バスを割当てたどのマスタ装置の処理要求よりも処理順位を高く設定する、請求項1に記載の半導体装置。 - 前記m本のバスは、p本の第1バスとq本の第2バスとを含み(ただし、p、qは2以上の整数、p+q=m)、
前記調停回路は、前記n個のマスタ装置のうち1個のマスタ装置が前記p本の第1バスのうちいずれかの割当を要求しているときに不使用の第1バスがある場合には、第1バスの割当を要求しているマスタ装置に対して不使用の第1バスのうちの1本を割当て、
前記調停回路は、前記n個のマスタ装置のうち複数のマスタ装置が同時に前記p本の第1バスのうちいずれかの割当を要求しているときに不使用の第1バスがある場合には、不使用の第1バスがなくなるまで、第1バスの割当を要求しているマスタ装置に対して割当優先度の高いほうから順に不使用の第1バスを1本ずつ割当て、
前記調停回路は、前記n個のマスタ装置のうち1個のマスタ装置が前記q本の第2バスのうちいずれかの割当を要求しているときに不使用の第2バスがある場合には、第2バスの割当を要求しているマスタ装置に対して不使用の第2バスのうちの1本を割当て、
前記調停回路は、前記n個のマスタ装置のうち複数のマスタ装置が同時に前記q本の第2バスのうちいずれかの割当を要求しているときに不使用の第2バスがある場合には、不使用の第2バスがなくなるまで、第2バスの割当を要求しているマスタ装置に対して割当優先度の高いほうから順に不使用の第2バスを1本ずつ割当て、
前記調停回路は、第1バスを割当てた複数のマスタ装置の中では、第1バスを割当てたタイミングが早いマスタ装置の処理要求ほど処理順位を高く設定し、第2バスを割当てた複数のマスタ装置の中では、第2バスを割当てたタイミングが早いマスタ装置の処理要求ほど処理順位を高く設定し、第2バスを割当てたマスタ装置の処理要求は第1バスを割当てたどのマスタ装置の処理要求よりも処理順位を高く設定する、請求項1に記載の半導体装置。 - 前記m本のバスのうちで可変のk本(kは2以上でm以下の整数)のバスが前記n個のマスタ装置に対して割当が可能であり、
前記調停回路は、前記n個のマスタ装置のうち1個のマスタ装置が前記k本の割当可能なバスのうちいずれかの割当を要求しているときに不使用の割当可能なバスがある場合には、バスの割当を要求しているマスタ装置に対して不使用の割当可能なバスの1本を割当て、
前記調停回路は、前記n個のマスタ装置のうち複数のマスタ装置が同時に前記k本の割当可能なバスのうちいずれかの割当を要求しているときに不使用の割当可能なバスがある場合には、前記k本の割当可能なバスのうちで不使用のバスがなくなるまで、バスの割当を要求しているマスタ装置に対して割当優先度の高いほうから順に不使用の割当可能なバスを1本ずつ割当て、
前記調停回路は、バスを割当てたタイミングが早いマスタ装置の処理要求ほど処理順位を高く設定する、請求項1に記載の半導体装置。 - 前記コントローラは、バスが割当てられた複数のマスタ装置から複数の処理要求を受けている場合に、最も処理順位の高い処理と並行して実行可能な処理については、最も処理順位の高い処理とともに並行して実行し、最も処理順位の高い処理と並行して実行できない処理については、最も処理順位の高い処理の実行終了後に実行する、請求項1〜5のいずれか1項に記載の半導体装置。
- 前記スレーブ装置は、複数のバンクを有するメモリ装置であり、
前記コントローラは、複数の処理要求が同一のバンクに対する処理要求の場合には、これらの処理を処理順位の高いものから順に実行し、
前記コントローラは、複数の処理要求が互いに異なるバンクに対する処理要求の場合には、これらの処理を並行して実行する、請求項1〜5のいずれか1項に記載の半導体装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010113207A JP2011242928A (ja) | 2010-05-17 | 2010-05-17 | 半導体装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010113207A JP2011242928A (ja) | 2010-05-17 | 2010-05-17 | 半導体装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2011242928A true JP2011242928A (ja) | 2011-12-01 |
Family
ID=45409524
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010113207A Withdrawn JP2011242928A (ja) | 2010-05-17 | 2010-05-17 | 半導体装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2011242928A (ja) |
-
2010
- 2010-05-17 JP JP2010113207A patent/JP2011242928A/ja not_active Withdrawn
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4480427B2 (ja) | リソース管理装置 | |
US8539129B2 (en) | Bus arbitration techniques to reduce access latency | |
JP3898899B2 (ja) | バスシステム | |
US20080162760A1 (en) | Efficient resource arbitration | |
JP6146128B2 (ja) | データ処理装置 | |
JP2010282405A (ja) | データ処理システム | |
US20120144104A1 (en) | Partitioning of Memory Device for Multi-Client Computing System | |
JP6053384B2 (ja) | 情報処理装置、メモリ制御装置およびその制御方法 | |
KR20050058919A (ko) | 멀티 뱅크 메모리의 억세스 효율을 개선한 아비터, 이를구비한 메모리 억세스 중재 시스템 및 그 방법 | |
TW202141291A (zh) | 分級頻寬分配匯流排仲裁器 | |
CN110059035B (zh) | 半导体装置和总线发生器 | |
JP5911548B1 (ja) | 共有メモリへのアクセス要求をスケジューリングするための装置、方法およびコンピュータプログラム | |
US8560784B2 (en) | Memory control device and method | |
KR100973419B1 (ko) | 버스 중재 방법 및 장치 | |
JP2011242928A (ja) | 半導体装置 | |
JP5058116B2 (ja) | ストリーミングidメソッドによるdmac発行メカニズム | |
US20110153892A1 (en) | Access arbitration apparatus, integrated circuit device, electronic apparatus, access arbitration method, and program | |
US8713205B2 (en) | Data transfer device and data transfer method | |
JP3618249B2 (ja) | データ転送装置 | |
JP2007026022A (ja) | バス調停装置及びバス調停方法 | |
KR101013769B1 (ko) | 버스 중재방법 및 장치 | |
JP2012168773A (ja) | バスシステムおよびアクセス制御方法 | |
JP2005518045A (ja) | 多数リクエスト信号間の公正アービトレーションのシステム及び方法 | |
JP2013073297A (ja) | 時分割方式による割り込み制御回路および割り込み制御方法 | |
JP2005332125A (ja) | メモリコントローラ及び共有メモリシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20130806 |