JP2005215980A - バス制御システムおよびバス制御方法 - Google Patents
バス制御システムおよびバス制御方法 Download PDFInfo
- Publication number
- JP2005215980A JP2005215980A JP2004021648A JP2004021648A JP2005215980A JP 2005215980 A JP2005215980 A JP 2005215980A JP 2004021648 A JP2004021648 A JP 2004021648A JP 2004021648 A JP2004021648 A JP 2004021648A JP 2005215980 A JP2005215980 A JP 2005215980A
- Authority
- JP
- Japan
- Prior art keywords
- time slot
- bus
- slot value
- module
- cpu
- 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.)
- Pending
Links
Images
Landscapes
- Bus Control (AREA)
Abstract
【課題】本発明は、時分割バス制御方式を採用したシステムLSIにおいて、バスのデータ転送レートを向上できるようにすることを最も主要な特徴としている。
【解決手段】たとえば、システムメモリ17のライトバックを実行する場合、CPU13が、ライトバックを実行するためのプログラムにあらかじめ定義されている設定情報をもとに、バスアービター12のタイムスロット設定記憶部12aにタイムスロット制御情報を設定する。そして、CPU13が他のモジュールに優先して多量のデータをバス11上に出力できるようにするために、タイムスロット生成部12bによって生成されるタイムスロット値IDを、単位サイクルに占めるCPU13のタイムスロット値IDの数が多くなるように、上記タイムスロット制御情報をもとに制御する構成とされている。
【選択図】 図2
【解決手段】たとえば、システムメモリ17のライトバックを実行する場合、CPU13が、ライトバックを実行するためのプログラムにあらかじめ定義されている設定情報をもとに、バスアービター12のタイムスロット設定記憶部12aにタイムスロット制御情報を設定する。そして、CPU13が他のモジュールに優先して多量のデータをバス11上に出力できるようにするために、タイムスロット生成部12bによって生成されるタイムスロット値IDを、単位サイクルに占めるCPU13のタイムスロット値IDの数が多くなるように、上記タイムスロット制御情報をもとに制御する構成とされている。
【選択図】 図2
Description
本発明は、バス制御システムおよびバス制御方法に関するもので、特に、CPU(Central Processing Unit)やその周辺装置が接続されているシステムバスの制御方式に関するものである。
周知のように、CPUやその周辺装置を1チップ上に搭載してなる、いわゆるSOC(System On Chip)構造のシステムLSI(Large Scale Integrated Circuit)が開発されている。この種のシステムLSIにおいては、各種のバス制御方式が提案されている(たとえば、特許文献1参照)。
すなわち、プロセッサモジュールやその周辺モジュールによって構成されるシステムLSIにおいて、モジュール間を接続するバスのデータ転送レートの低下は、システムLSIの性能の低下を招く要因の一つとなっている。また、システムLSIを構成する各モジュールは、動作周波数や機能の相違によりアクセスレイテンシが異なる場合が多い。したがって、低速で動作するモジュールからの応答時間の遅れが、そのモジュールに対するリードアクセスにおけるバスストールの発生やデータ転送レートの低下の原因となっている。このように、従来のシステムLSIにおいては、バスのデータ転送レートの低下を改善するためのバス制御方式がいろいろと模索されている。
図13は、従来のシステムLSI(SOC構造)の構成例を示すものである。このシステムLSIの場合、たとえば、チップ上に搭載された4つのモジュール0〜3がバス(BUS)101に接続されている。つまり、上記バス101には、イニシエータ(Initiator)モジュール0として、たとえばCPU103が接続されている。また、上記バス101には、イニシエータモジュール1として、たとえばDMAC(Direct Memory Access Controller)105が接続されている。また、上記バス101には、ターゲット(Target)モジュール2として、たとえばメモリコントローラ(MemCtl)107が接続されている。このメモリコントローラ107にはメモリ(Memory)111が接続されている。さらに、上記バス101には、ターゲットモジュール3として、たとえばIO(入出力装置)109が接続されている。
上記した構成のシステムLSIにおいて、1回のバストランザクションが、上記CPU103(イニシエータモジュール0)または上記DMAC105(イニシエータモジュール1)からのコマンド発行によって開始され、上記メモリコントローラ107(ターゲットモジュール2)または上記IO109(ターゲットモジュール3)による応答によって終了すると仮定する。このようなバス制御方式のシステムLSIの場合、上記メモリコントローラ107または上記IO109の応答準備(データの出力準備)が整うまでの期間、上記バス101はストール状態になる。たとえば、上記CPU103が、上記IO109に対してデータのリード要求(コマンド発行)を行ったとする。これに対し、上記IO109が直ちにリードデータを出力することができない場合、上記CPU103は上記IO109からの応答を待ち続けることになる。すなわち、上記IO109がリードデータを出力するまで、上記バス101はストール状態となる。
このバスストールを防ぐ方法として、すでに、“リトライ”および“スプリット”というバス制御方式が確立されている。上記“リトライ”とは、応答準備のできていないターゲットモジュールが、イニシエータモジュールに対してリトライ(コマンド再実行)を要求する。これにより、現在のバストランザクションを終了させて、ターゲットモジュールの応答準備が整うまでの期間、バスがストール状態となるのを回避するものである。
しかしながら、上記の“リトライ”には以下のような問題点がある。つまり、ターゲットモジュールからのリトライ要求を検出すると、イニシエータモジュールは実行中のサイクルを終了し、その直後または一定時間経過後にコマンドの再発行を行う。ところが、このコマンドの再発行までの間に応答準備が整わなかった場合、そのターゲットモジュールは、再度、リトライを要求することになる。このようなリトライ要求の多発は、バスのデータ転送レートを低下させる。
一方、上記“スプリット”とは、データを転送する一連のサイクル(トランザクション)のうち、データ転送を要求するフェイズと実際にデータを転送するフェイズとを分離したものである。これにより、データを要求されたデバイス側(ターゲット)の反応が遅れても、それを待つことなく、データを要求する側(イニシエータ)は別のトランザクションを次々と開始することができる。
しかし、この“スプリット”方式には、バスがストールする状態となることを回避する一方で、バスアービトレーションの複雑性が増すという問題点がある。
図14は、一般的な時分割バス制御方式を採用したシステムLSIの構成例を示すものである。このシステムLSIの場合、たとえば、チップ上に搭載された4つのモジュール0〜3がバス(BUS)201に接続されている。つまり、上記バス201には、イニシエータ(Initiator)モジュール0として、たとえばCPU203が接続されている。また、上記バス201には、イニシエータモジュール1として、たとえばCPU205が接続されている。また、上記バス201には、イニシエータモジュール2として、たとえばDMAC(Direct Memory Access Controller)207が接続されている。さらに、上記バス201には、ターゲット(Target)モジュール3として、たとえばメモリコントローラ(MemCtl)209が接続されている。このメモリコントローラ209にはメモリ(Memory)211が接続されている。
一般的な時分割バス制御方式のシステムLSIの場合、たとえば図15に示すように、全てのイニシエータモジュール0〜2(CPU203,CPU205,DMAC207)に対し、時分割にバス使用権(タイムスロット値)が与えられる。各イニシエータモジュール0〜2は、バス使用権が与えられている一定の期間内にデータの転送を行う。そのため、この時分割バス制御方式には、同一のバス201上に接続されるイニシエータモジュールの数が増えると、それに比例して、1つのイニシエータモジュールに与えられるバス使用権の間隔(次のバス使用権までの時間)dが増大し、システムのスループットが低下するという問題がある。また、あるイニシエータモジュールにバス使用権が与えられている間は、他のイニシエータモジュールはバス201を使用することができない。したがって、バス使用権が与えられているイニシエータモジュール(たとえば、DMAC207)が転送するデータをもたない場合にも、他のイニシエータモジュールはバス201を使用することができず、システムのスループットを低下させるという問題があった。
その他、バスのバンド幅を広げることにより、システムバスのデータ転送レートの低下を改善することが可能な方法が知られている。しかしながら、バスのバンド幅を広げるためには、データ幅(バス幅)を大きくする、もしくは、バスの動作周波数を上げる必要がある。よって、この方法には、バス幅の増加によるチップ面積の増大や動作周波数の高周波数化にともなう消費電力の増加およびタイミングマージンの劣化などのデメリットがある。
上記したように、従来のシステムLSIにおいては、各種のバス制御方式が提案されているものの、システムバスのデータ転送レートの向上にとって、より有効なバス制御方式が望まれていた。
特開2002−91903
この発明は、システムバスのデータ転送レートの向上を図ることが可能なバス制御システムおよびバス制御方法を提供することを目的としている。
本願発明の一態様によれば、バスにつながる複数のモジュールにそれぞれ割り付けられた識別値に応じた所定の期間内に、前記各モジュールによる前記バス上へのデータの出力が可能とされた時分割バス制御方式のバス制御システムであって、前記識別値を生成する際に、少なくとも識別値の生成に関する優先順位やタイミングを、システムが実行しようとしている処理に応じて制御する生成部を具備したことを特徴とするバス制御システムが提供される。
また、本願発明の一態様によれば、バスにつながる複数のモジュールにそれぞれ割り付けられた識別値に応じた所定の期間内に、前記各モジュールによる前記バス上へのデータの出力が可能とされた時分割バス制御方式のバス制御システムのバス制御方法であって、前記識別値を生成する際に、少なくとも識別値の生成に関する優先順位やタイミングを、システムが実行しようとしている処理に応じて制御するようにしたことを特徴とするバス制御方法が提供される。
また、本願発明の一態様によれば、バスにつながる複数のモジュールにそれぞれ割り付けられた識別値に応じた所定の期間内に、前記各モジュールによる前記バス上へのデータの出力が可能とされた時分割バス制御方式のバス制御システムであって、前記識別値を生成する際に、少なくとも識別値の生成に関する優先順位やタイミングを、前記バスのアクセス状況に応じて制御する生成部を具備したことを特徴とするバス制御システムが提供される。
さらに、本願発明の一態様によれば、バスにつながる複数のモジュールにそれぞれ割り付けられた識別値に応じた所定の期間内に、前記各モジュールによる前記バス上へのデータの出力が可能とされた時分割バス制御方式のバス制御システムのバス制御方法であって、前記識別値を生成する際に、少なくとも識別値の生成に関する優先順位やタイミングを、前記バスのアクセス状況に応じて制御するようにしたことを特徴とするバス制御方法が提供される。
上記の構成とした場合、低速で動作するモジュールからの応答を待つことなく、バスの使用が可能となる。これにより、システムが実行しようとしている処理の要求や処理の状況に応じて最適なデータ転送レートを確保できるようになるものである。
この発明によれば、システムバスのデータ転送レートの向上を図ることが可能なバス制御システムおよびバス制御方法を提供できる。
以下、本発明の実施の形態について図面を参照して説明する。
[第1の実施形態]
図1は、この発明の第1の実施形態にしたがった、システムLSIの基本構成を示すものである。ここでは、時分割バス制御方式において、各モジュールに対応するタイムスロット(Time Slot)値の、単位サイクルあたりの割り当てを、プログラマブルに制御するようにした場合を例に説明する。つまり、システムバスにつながる全てのモジュールにタイムスロット値IDが割り付けられ、それぞれのモジュールがタイムスロット値IDに応じた所定の期間内にバス上にデータを転送する時分割バス制御方式において、システムLSIが実行しようとしている処理プログラムにあらかじめ定義されている設定情報をもとに、各モジュールのバス使用権が任意の優先順位およびタイミングになるように、上記タイムスロット値IDの生成を制御するようにした場合の例である。
図1は、この発明の第1の実施形態にしたがった、システムLSIの基本構成を示すものである。ここでは、時分割バス制御方式において、各モジュールに対応するタイムスロット(Time Slot)値の、単位サイクルあたりの割り当てを、プログラマブルに制御するようにした場合を例に説明する。つまり、システムバスにつながる全てのモジュールにタイムスロット値IDが割り付けられ、それぞれのモジュールがタイムスロット値IDに応じた所定の期間内にバス上にデータを転送する時分割バス制御方式において、システムLSIが実行しようとしている処理プログラムにあらかじめ定義されている設定情報をもとに、各モジュールのバス使用権が任意の優先順位およびタイミングになるように、上記タイムスロット値IDの生成を制御するようにした場合の例である。
このシステムLSIの場合、たとえば図1に示すように、バス(BUS)11には、上記バス11のアービトレーションを行うバスアービター(Bus Arbiter)12が接続されている。また、上記バス11には、イニシエータ(Initiator)モジュール0として、たとえばCPU13が接続されている。また、上記バス11には、イニシエータモジュール1として、たとえばCPU14が接続されている。また、上記バス11には、イニシエータモジュール2として、たとえばイニシエータ15が接続されている。また、上記バス11には、ターゲット(Target)モジュール3として、たとえばメモリコントローラ(MemCtl)16が接続されている。このメモリコントローラ16には、たとえばSDRAMなどのシステムメモリ(Memory)17が接続されている。さらに、上記バス11には、ターゲットモジュール4として、たとえばターゲット18が接続されている。
これらバスアービター12および5つのモジュール0〜4(CPU13,CPU14,イニシエータ15,メモリコントローラ16,ターゲット18)は、同一チップ上に搭載されている。つまり、このシステムLSIの場合、上記バス11にそれぞれ接続された上記バスアービター12および上記各モジュール0〜4が同一チップ上に搭載されて、SOC(System On Chip)構造が実現されている。また、このシステムLSIでは、DMA(Direct Memory Access)方式によるデータの転送が可能とされている。
上記バスアービター12および上記各モジュール0〜4には、たとえば図1に示すように、それぞれに固有のタイムスロット値(識別値)IDが割り付けられている。つまり、上記CPU13(イニシエータモジュール0)には、タイムスロット値IDである(1)が割り付けられている。また、上記CPU14(イニシエータモジュール1)には、タイムスロット値IDである(2)が割り付けられている。また、上記イニシエータ15(イニシエータモジュール2)には、タイムスロット値IDである(3)が割り付けられている。また、上記メモリコントローラ16(ターゲットモジュール3)には、タイムスロット値IDである(4)が割り付けられている。また、上記ターゲット18(ターゲットモジュール4)には、タイムスロット値IDである(5)が割り付けられている。さらに、上記バスアービター12には、タイムスロット値IDである(6)が割り付けられている。
なお、本実施形態の場合、上記CPU13が、このシステムLSIによって実行される各種の処理プログラムを管理するようになっている。処理プログラムとしては、たとえば、上記CPU13の内部のキャッシュメモリから、システムメモリ17のライトバックを実行するための処理プログラム、および、上記システムメモリ17から上記イニシエータ15に多量のデータを転送するQoS(Quality of Servics)を実行するための処理プログラムなどが挙げられる。上記各処理プログラムには、それぞれ、上記タイムスロット値IDの生成を制御するのに必要な設定情報があらかじめ定義されている。前記設定情報とは、たとえばタイムスロット値IDの生成に関する優先順位やタイミングを制御するためのものである。
図2は、図1に示したシステムLSIを構成する各モジュールの構成を、より具体的に示すものである。本実施形態の場合、上記バスアービター12は、たとえば図2に示すように、タイムスロット設定記憶部12a、タイムスロット生成部12b、および、その他12cを有して構成されている。上記タイムスロット設定記憶部12aは、後述するタイムスロット制御情報の設定および記憶を行うものである。上記タイムスロット生成部12bは、上記タイムスロット制御情報をもとに、所定数のタイムスロット値IDを1単位とする単位サイクル(一定のサイクル間)ごとに、上記タイムスロットIDの生成を行うものである。
上記CPU13,上記CPU14および上記イニシエータ15は、たとえば図2に示すように、コマンド記憶部1a、タイムスロット判定部1b、および、その他1cを有して構成されている。上記コマンド記憶部1aは、発行したコマンド(リード/ライト)の履歴を保持するものである。上記タイムスロット判定部1bは、タイムスロット値IDを監視し、その判定を行うものである。
上記メモリコントローラ16および上記ターゲット18は、たとえば図2に示すように、コマンド記憶部2a、タイムスロット判定部2b、および、その他2cを有して構成されている。上記コマンド記憶部2aは、要求されたコマンドの履歴を保持するものである。上記タイムスロット判定部2bは、タイムスロット値IDを監視し、その判定を行うものである。
図3は、上記した構成のシステムLSIにおける、単位サイクルの一例を示すものである。本実施形態の場合、単位サイクルは10のタイムスロット値IDからなり、各タイムスロット値IDの生成が単位サイクルごとに制御されるようになっている。この単位サイクルにおいては、上記CPU13のためのタイムスロット値IDの数を「5」、上記CPU14のためのタイムスロット値IDの数を「1」、上記イニシエータ15のためのタイムスロット値IDの数を「1」、上記メモリコントローラ16のためのタイムスロット値IDの数を「1」、上記ターゲット18のためのタイムスロット値IDの数を「1」、上記バスアービター12のためのタイムスロット値IDの数を「1」とした場合を例に示している。
すなわち、単位サイクルとしては、上記バスアービター12および上記各モジュール0〜4に割り付けられているそれぞれのタイムスロット値IDが、システムLSIが実行しようとする処理に応じて、図に示すような任意の優先順位およびタイミングにより自動的に割り当てられる。
以下に、上記した構成のシステムLSIの動作(バス制御方式)について、具体的に説明する。まずは、たとえば図1に示した構成のシステムLSIにおいて、システムメモリ17のライトバックにより、CPU13が多量のデータをバス11上に出力する場合の処理の流れについて説明する。
すなわち、上記ライトバックを実行する場合、たとえば図4に示すように、ステップST01において、上記CPU13により上記バスアービター12のタイムスロット設定記憶部12aに、上記ライトバックを実行するのに必要なタイムスロット制御情報が設定される。つまり、ライトバックを実行するための処理プログラムにあらかじめ定義されている設定情報をもとにした、上記バスアービター12や上記各モジュール0〜4の単位サイクルに占めるタイムスロット値IDの数やその生成のタイミングなどの情報により、上記タイムスロット設定記憶部12aの設定が更新される。この例(ライトバック)の場合、上記タイムスロット設定記憶部12aに設定される上記タイムスロット制御情報は、たとえば、上記CPU13のためのタイムスロット値IDの数が「7」、上記CPU14のためのタイムスロット値IDの数が「2」、および、上記イニシエータ15のためのタイムスロット値IDの数が「1」となる。また、それら以外のモジュールのタイムスロット値IDの数はいずれも「0」となる。
次のステップST02では、上記バスアービター12により、実行中の単位サイクルの終了が判断される。終了していない場合には、たとえば上記図3に示したような実行中の単位サイクルが終了するまで、その単位サイクルの残りのタイムスロット値IDが、更新される前の設定にしたがって上記タイムスロット生成部12bにより生成される。
一方、実行中の単位サイクルが終了していると判断された場合には、ステップST03において、上記タイムスロット設定記憶部12aに設定されている上記タイムスロット制御情報をもとに、上記タイムスロット生成部12bによりライトバックのためのタイムスロット値IDが生成されて、順に発行される。
次のステップST04では、たとえば、上記タイムスロット生成部12bにより生成されたタイムスロット値IDに応じた所定の期間内に、上記CPU13から多量のデータが上記バス11上に出力される。つまり、生成されたタイムスロット値IDが上記CPU13のためのものであることが上記タイムスロット判定部1bによって判定されると、上記CPU13からは、バス使用権が与えられている一定の期間内にデータ転送が行われる。上記CPU13から上記バス11上に出力された多量のデータは、上記メモリコントローラ16によって取り込まれた後、上記システムメモリ17のライトバックに供される。
こうして、全てのデータの転送が終了したことが上記CPU13によって判断されるまで(ステップST05)、上記ステップST03〜が繰り返される。つまり、生成されたタイムスロット値IDが上記CPU13のためのものであることが上記タイムスロット判定部1bによって判定されるごとに、上記CPU13からのデータ転送が行われる。
また、上記CPU13によって、全てのデータの転送が終了したことが判断される、つまり、上記システムメモリ17のライトバックのための多量のデータを上記バス11上に出力する処理が完了したとする。すると、上述したステップST01において、上記バスアービター12のタイムスロット設定記憶部12aに対し、次の単位サイクルのためのタイムスロット制御情報の設定が、上記CPU13によって行われる。
図5は、上記ライトバックを実行する際の、上記単位サイクルの構築例を示すものである。ここでは、10のタイムスロット値IDからなる単位サイクルにおいて、上記CPU13のためのタイムスロット値IDの数を「7」、上記CPU14のためのタイムスロット値IDの数を「2」、上記イニシエータ15のためのタイムスロット値IDの数を「1」とした場合を例に示している。なお、上記メモリコントローラ16のためのタイムスロット値IDの数、上記ターゲット18のためのタイムスロット値IDの数、および、上記バスアービター12のためのタイムスロット値IDの数は、いずれも「0」となっている。
このように、ライトバックの実行時には、ライトバックを実行するための処理プログラムにあらかじめ定義されている設定情報をもとにして、上記CPU13の単位サイクルに占めるタイムスロット値IDの数が多くなるように、タイムスロット設定記憶部12aの設定(タイムスロット制御情報)を更新するとともに、その設定にもとづいてタイムスロット値IDの生成のタイミングを単位サイクルごとに制御する。これにより、上記CPU13は、他のモジュールに優先してバス11を使用することが可能となる。
次に、たとえば図1に示した構成のシステムLSIにおいて、QoSのための多量のデータを、システムメモリ17からイニシエータ15に転送する場合の処理の流れについて説明する。すなわち、上記QoSを実行する場合、たとえば図6に示すように、ステップST11において、上記CPU13により上記バスアービター12のタイムスロット設定記憶部12aに、上記QoSを実行するのに必要なタイムスロット制御情報が設定される。つまり、QoSを実行するための処理プログラムにあらかじめ定義されている設定情報をもとにした、上記バスアービター12や上記各モジュール0〜4の単位サイクルに占めるタイムスロット値IDの数やその生成のタイミングなどの情報により、上記タイムスロット設定記憶部12aの設定が更新される。この例(QoS)の場合、上記タイムスロット設定記憶部12aに設定される上記タイムスロット制御情報は、たとえば、上記CPU13のためのタイムスロット値IDの数が「2」、上記CPU14のためのタイムスロット値IDの数が「1」、および、上記メモリコントローラ16のためのタイムスロット値IDの数が「7」となる。また、それら以外のモジュールのタイムスロット値IDの数はいずれも「0」となる。
次のステップST12では、上記イニシエータ15からのリードコマンドが、上記メモリコントローラ16に対して発行される。上記リードコマンドの発行は、上記イニシエータ15のタイムスロット値IDに応じた所定の期間内にバス11を介して行われる。この上記イニシエータ15からのリードコマンドは、上記メモリコントローラ16内の上記コマンド記憶部2aで保持される。
次のステップST13においては、上記バスアービター12により、実行中の単位サイクルの終了が判断される。終了していない場合には、たとえば上記図3に示したような実行中の単位サイクルが終了するまで、その単位サイクルの残りのタイムスロット値IDが、更新される前の設定にしたがって上記タイムスロット生成部12bにより生成される。
一方、実行中の単位サイクルが終了していると判断された場合には、ステップST14において、上記タイムスロット設定記憶部12aに設定されている上記タイムスロット制御情報をもとに、上記タイムスロット生成部12bによりQoSのためのタイムスロット値IDが生成されて、順に発行される。
次のステップST15では、たとえば、上記メモリコントローラ16におけるリードデータの出力(応答)準備が整っている場合、上記タイムスロット生成部12bにより生成されたタイムスロット値IDに応じた所定の期間内に、上記システムメモリ17内より読み出された多量のデータが、上記メモリコントローラ16から上記バス11上に出力される。つまり、生成されたタイムスロット値IDが上記メモリコントローラ16のためのものであることが上記タイムスロット判定部2bによって判定されると、上記メモリコントローラ16からは、バス使用権が与えられている一定の期間内にデータのDMA転送が行われる。上記メモリコントローラ16から上記バス11上に出力された多量のデータは、上記イニシエータ15によって取り込まれる。
こうして、全てのデータの転送が終了したことが上記イニシエータ15から上記CPU13に通知されるまで(ステップST16)、上記ステップST14〜が繰り返される。つまり、生成されたタイムスロット値IDが上記メモリコントローラ16のためのものであることが上記タイムスロット判定部2bによって判定されるごとに、上記メモリコントローラ16からのデータのDMA転送が行われる。
また、上記CPU13によって、全てのデータの転送が終了したことが判断される、つまり、上記QoSのための多量のデータが上記システムメモリ17から上記イニシエータ15に転送する処理が完了したとする。すると、上述したステップST11において、上記バスアービター12のタイムスロット設定記憶部12aに対し、次の単位サイクルのためのタイムスロット制御情報の設定が、上記CPU13によって行われる。
なお、図6に示したフローチャートにおいて、ステップST11での上記タイムスロット設定記憶部12aに対する上記タイムスロット制御情報の設定によっては、上述したステップST12およびステップST13での処理が前後する場合もある。
図7は、上記QoSを実行する際の、上記単位サイクルの構築例を示すものである。ここでは、10のタイムスロット値IDからなる単位サイクルにおいて、上記CPU13のためのタイムスロット値IDの数を「2」、上記CPU14のためのタイムスロット値IDの数を「1」、上記メモリコントローラ16のためのタイムスロット値IDの数を「7」とした場合を例に示している。なお、上記イニシエータ15のためのタイムスロット値IDの数、上記ターゲット18のためのタイムスロット値IDの数、および、上記バスアービター12のためのタイムスロット値IDの数は、いずれも「0」となっている。
このように、QoSの実行時には、QoSを実行するための処理プログラムにあらかじめ定義されている設定情報をもとにして、上記メモリコントローラ16の単位サイクルに占めるタイムスロット値IDの数が多くなるように、タイムスロット設定記憶部12aの設定(タイムスロット制御情報)を更新するとともに、その設定にもとづいてタイムスロット値IDの生成のタイミングを単位サイクルごとに制御する。これにより、上記メモリコントローラ16は、他のモジュールに優先してバス11を使用することが可能となる。
ここで、上記バスアービター12のタイムスロット設定記憶部12aおよびタイムスロット生成部12bについて、さらに説明する。
実際には、たとえば、タイムスロット値IDの1つ1つの設定に3ビットが必要で、1単位サイクルが10のタイムスロット値IDからなる場合、3(ビット)*10のレジスタを用意する。そして、3(ビット)*10のレジスタには、3ビットごとにアドレスを割り付ける。すなわち、3(ビット)*10のレジスタは、上記CPU13,14によるタイムスロット値IDの書き込みが可能に構成される。なお、各タイムスロット値IDのビット数(ここでは、3ビット)と、そのレジスタの数(ここでは、10個)には余裕を持たせ、変更できるようにしておく。これを、上記バスアービター12のタイムスロット設定記憶部12aとする。
これに対し、上記バスアービター12のタイムスロット生成部12bは、1単位サイクルの中の各サイクルにおいて、上記タイムスロット設定記憶部12aである、各レジスタに書き込まれたタイムスロット値IDを参照しながら、バス11の使用許可を与えるモジュールを決定する。
上記バス11の使用許可を与える場合、たとえば、上記バスアービター12から上記各モジュール0〜4に供給されるグラント(Grant)信号が利用される。すなわち、グラント信号とはバス11の使用リクエストに対する許可信号であり、バス11の使用許可を与える場合には、上記レジスタに書き込まれたタイムスロット値IDを持つモジュールに供給されるグラント信号がアクティブにされる。より具体的には、図3に示した単位サイクルにおいて、たとえば6番目のサイクルでは、上記タイムスロット設定記憶部12aの6番目のレジスタの値(この例では(ID=4))を読む。そして、そのタイムスロット値IDを持つモジュール、つまり、上記メモリコントローラ16へのグラント信号をアクティブにする。
上記したように、単位サイクルあたりのタイムスロット値IDの生成(優先順位およびタイミング)を、システムLSIが実行しようとする処理プログラムにあらかじめ定義されている設定情報にもとづいてプログラマブルに制御できるようにしている。すなわち、システムバスにつながる全てのモジュールにタイムスロット値IDが割り付けられ、それぞれのモジュールがタイムスロット値IDに応じた所定の期間内にバス上にデータを転送する時分割バス制御方式において、システムLSIが実行しようとしている処理に応じて、各モジュールのバス使用権が任意の優先順位およびタイミングになるように、タイムスロット値IDの生成を制御できるようにしている。これにより、システムLSIが実行しようとする処理に応じて、必要なモジュールに対し、必要なサイクル数のタイムスロット値IDを割り当てることが可能となる。その結果、低速で動作するモジュールからの応答を待つことなく、バスの使用が可能となる。したがって、その処理に要求されるデータ転送レートを十分に確保することができ、システムLSIのスループットを向上させることが可能となるものである。
[第2の実施形態]
図8は、この発明の第2の実施形態にしたがった、システムLSIを構成する各モジュールの他の構成例を示すものである。ここでは、システムLSIの構成を、図1と同一とした場合について示している。また、時分割バス制御方式において、各モジュールに対応するタイムスロット(Time Slot)値の、単位サイクルあたりの割り当てを、コマンドの発行状況に応じてダイナミックに制御するようにした場合を例に説明する。つまり、システムバスにつながる全てのモジュールにタイムスロット値IDが割り付けられ、それぞれのモジュールがタイムスロット値IDに応じた所定の期間内にバス上にデータを転送する時分割バス制御方式において、バス上でのアクセス状況をもとに、各モジュールのバス使用権が任意の優先順位およびタイミングになるように、上記タイムスロット値IDの生成を制御するようにした場合の例である。
図8は、この発明の第2の実施形態にしたがった、システムLSIを構成する各モジュールの他の構成例を示すものである。ここでは、システムLSIの構成を、図1と同一とした場合について示している。また、時分割バス制御方式において、各モジュールに対応するタイムスロット(Time Slot)値の、単位サイクルあたりの割り当てを、コマンドの発行状況に応じてダイナミックに制御するようにした場合を例に説明する。つまり、システムバスにつながる全てのモジュールにタイムスロット値IDが割り付けられ、それぞれのモジュールがタイムスロット値IDに応じた所定の期間内にバス上にデータを転送する時分割バス制御方式において、バス上でのアクセス状況をもとに、各モジュールのバス使用権が任意の優先順位およびタイミングになるように、上記タイムスロット値IDの生成を制御するようにした場合の例である。
すなわち、本実施形態の場合、上記バスアービター12は、たとえば図8に示すように、タイムスロット制御部12-1、タイムスロット生成部12-2、コマンド監視部12-3、および、その他12-4を有して構成されている。上記タイムスロット制御部12-1は、上記タイムスロット値IDを生成するための初期値などの設定情報を保持するものである。上記タイムスロット生成部12-2は、上記タイムスロット制御部12-1に保持されている設定情報をもとに、上記タイムスロット値IDの生成を行うものである。上記コマンド監視部12-3は、コマンド(リード/ライト)の発行状況を監視するものである。このコマンド監視部12-3は、たとえば、単位サイクル(本実施形態の場合、12タイムスロット)の期間内に発行されるコマンドを常に監視し、上記CPU13(イニシエータモジュール0),上記CPU14(イニシエータモジュール1)および上記イニシエータ15(イニシエータモジュール2)からのリードコマンドの発行状況に応じて、次の単位サイクルにおけるタイムスロット値IDの割り当てを再計算(再割り当て)するようになっている。
上記CPU13,上記CPU14および上記イニシエータ15は、たとえば図8に示すように、コマンド記憶部1a、タイムスロット判定部1b、および、その他1cを有して構成されている。上記コマンド記憶部1aは、発行したコマンド(リード/ライト)の履歴を保持するものである。上記タイムスロット判定部1bは、タイムスロット値IDの判定を行うもので、たとえば、自己のタイムスロット値IDか、もしくは、自己が以前にリード要求した他のモジュールのタイムスロット値IDかどうかの判定を行う。また、上記CPU13,上記CPU14および上記イニシエータ15からは、上記バスアービター12に対して、バスリクエスト(Bus Request)信号が出力される。
上記メモリコントローラ16(ターゲットモジュール3)および上記ターゲット18(ターゲットモジュール4)は、たとえば図8に示すように、コマンド記憶部2a、タイムスロット判定部2b、および、その他2cを有して構成されている。上記コマンド記憶部2aは、要求されたコマンドの履歴を保持するものである。上記タイムスロット判定部2bは、タイムスロット値IDの判定を行うもので、たとえば、自己のタイムスロット値IDかどうかの判定を行う。また、上記メモリコントローラ16および上記ターゲット18からは、上記バスアービター12に対して、データレディ(Data Ready)信号が出力される。
図9は、上記した構成のシステムLSIにおける、単位サイクルの一例を示すものである。本実施形態の場合、単位サイクルは12のタイムスロット値IDからなっている。また、この単位サイクルは、いくつかのタイムスロット群によって構築されている。本実施形態においては、たとえば3つのタイムスロット群によって、1つの単位サイクルが構築されている。たとえば、1つのタイムスロット群には、上記CPU13のためのタイムスロット値ID(ID=1)が割り当てられている。たとえば、他の1つのタイムスロット群には、上記CPU14のためのタイムスロット値ID(ID=2)が割り当てられている。そして、残りの1つのタイムスロット群に対し、上記タイムスロット生成部12-2によって発行されるタイムスロット値ID(ID=×)が割り当てられるようになっている。つまり、3つのタイムスロット群のうちの、1つのタイムスロット群に対するタイミングで、上記バスアービター12のタイムスロット生成部12-2によって生成されたタイムスロット値IDが発行されるようになっている。
なお、単位サイクルを構築するタイムスロットの数、タイムスロット群の数、および、各タイムスロット群に対するモジュール(タイムスロット値ID)の割り当てに関する初期値などの設定情報は、たとえば上記CPU13の制御により、上記バスアービター12のタイムスロット制御部12-1内に保持されるようになっている。これにより、システムLSIでの各処理に適した単位サイクルの構築が可能となる。
ここで、あるタイムスロット群で発行される上記タイムスロット値IDの生成は、以下の方法1または方法2にしたがって制御されるようになっている。たとえば、“以前の単位サイクルの期間内にリード要求されたターゲットモジュール”のタイムスロット値IDおよび“特定のイニシエータモジュール”のタイムスロット値IDを出力させる方法1と、“以前の単位サイクルの期間内にリード要求され、データの出力準備が整ったターゲットモジュール”のタイムスロット値IDおよび“バス11の使用権を要求しているイニシエータモジュール”のタイムスロット値IDを出力させる方法2とがある。
以下に、上記した構成のシステムLSIの動作(バス制御方式)について、具体的に説明する。なお、本実施形態において、単位サイクルの構築およびタイムスロット値IDの生成は、以下のルールにもとづいて行われる。たとえば、ターゲットモジュールへのリードコマンドが発行される以前は、特定のイニシエータモジュールのタイムスロット値IDを生成する。また、単位サイクルごとに、タイムスロット値IDの割り当てを制御する(つまり、ターゲットモジュールへのリードコマンドが発行された後は、以降の単位サイクルの期間内にリード要求されたターゲットモジュールを含めて、タイムスロット値IDの再割り当てを行う)。
図10は、たとえば図8に示した構成のシステムLSIにおいて、バス上のアクセス状況に応じてタイムスロット値IDの生成を制御する場合の方法として、上記の方法1を用いた場合の処理の流れを示すものである。すなわち、方法1によってタイムスロット値IDの生成を制御する場合、たとえば図10に示すように、上記バスアービター12のタイムスロット制御部12-1に設定されたタイムスロット値IDの生成に必要な設定情報をもとに、タイムスロット生成部12-2により特定のイニシエータモジュールのタイムスロット値IDが生成される(ステップST21)。
リードコマンドが発行されていない状況、たとえば図11に示すサイクルAにおいては、上記CPU13(イニシエータモジュール0)および上記CPU14(イニシエータモジュール1)を除くタイムスロット群に対し、あらかじめ設定スイッチなどによって設定されたデフォルト値に対応するモジュールのタイムスロット値IDが発行される。つまり、この例の場合には、単位サイクル上に、上記CPU13のタイムスロット値ID(ID=1)および上記CPU14のタイムスロット値ID(ID=2)とともに、イニシエータ15(イニシエータモジュール2)のタイムスロット値ID(ID=3)が発行されている。
上記サイクルAの状況において、たとえば、上記CPU13から上記メモリコントローラ16(ターゲットモジュール3)に対して、リードコマンドが発行されたとする。すると、上記バスアービター12のコマンド監視部12-3によって、そのコマンドはリードコマンドかどうかが判断される(ステップST22)。上記ステップST22において、リードコマンドでないと判断された場合、処理はステップST24に移行される。リードコマンドが判断されると、そのコマンドの情報が、上記コマンド監視部12-3および上記メモリコントローラ16のコマンド記憶部2aに記憶される(ステップST23)。
ステップST24では、上記CPU13によって、次がRB(ラウンドロビン)サイクルかどうかが判断される。RBサイクルであれば、ステップST25において、データ転送の終了していないリードコマンドがあるかどうかが、上記コマンド監視部12-3によって判断される。リードコマンドがあると判断された場合、上記コマンド監視部12-3に記憶されている情報にしたがって、上記バスアービター12のタイムスロット生成部12-2により、上記メモリコントローラ16のタイムスロット値ID(ID=4)が生成される(ステップST26)。これにより、たとえば図11に示すように、上記タイムスロット値ID(ID=3)が発行されているタイムスロット群に対し、さらに、上記メモリコントローラ16のタイムスロット値ID(ID=4)が発行されて、次の単位サイクルにおける、タイムスロット値IDの再割り当てが行われる(サイクルB参照)。
上記サイクルBの状況において、たとえばリードコマンドに対する上記メモリコントローラ16の応答として、上記システムメモリ17からのリードデータがバス11上に出力されたとする。つまり、生成されたタイムスロット値IDが上記メモリコントローラ16のためのものであることが上記タイムスロット判定部2bによって判定されると、上記メモリコントローラ16からは、バス使用権が与えられている一定の期間内にデータのDMA転送が行われる。そして、データ転送の終了が上記CPU13によって判断されると(ステップST27)、このデータ転送が終了したリードコマンドの情報が、上記コマンド監視部12-3および上記メモリコントローラ16のコマンド記憶部2aより削除される(ステップST28)。その後、処理は上記ステップST21に移行され、上述したステップST21〜の処理(サイクルA,B)が繰り返される。
なお、上記ステップST24でRBサイクルでないと判断された場合、および、上記ステップST25でリードコマンドがないと判断された場合には、いずれの場合も処理が上記ステップST21に移行される。
上記した方法1の場合、リードコマンドが発行されているか否かによって、あらかじめ設定された特定のイニシエータモジュールのタイムスロット値ID、または、リード要求のあったターゲットモジュールのタイムスロット値IDを発行できるようになる。これにより、データの出力(応答)準備が整っているターゲットモジュールのタイムスロット値IDを優先的に発行することが可能となる結果、バスのデータ転送レートを向上できるものである。
なお、上記ステップST28の後に、上記ステップST22〜の処理を追加することも可能である。つまり、上記メモリコントローラ16に対するリードコマンドの、その応答としてのデータ転送の終了が判断された際に、たとえば、上記CPU14(イニシエータモジュール1)による上記ターゲット18(ターゲットモジュール4)へのリードコマンドがあると判断されたとする。その場合に、単位サイクル上の、上記メモリコントローラ16のためのタイムスロット値ID(ID=4)に代えて、上記ターゲット18のためのタイムスロット値ID(ID=5)を発行させるようにすることもできる。
図12は、たとえば図8に示した構成のシステムLSIにおいて、バス上のアクセス状況に応じてタイムスロット値IDの生成を制御する場合の方法として、上記の方法2を用いた場合の処理の流れを示すものである。なお、ステップST31〜ステップST35は、上述した方法1のステップST21〜ステップST25(図10参照)と同様であるため、詳しい説明は割愛する。すなわち、方法2によってタイムスロット値IDの生成を制御する場合、たとえば図12に示すように、ステップST35において、データ転送の終了していないリードコマンドがあるかどうかが、上記コマンド監視部12-3によって判断される。リードコマンドがあると判断された場合、たとえばリード要求があったターゲットモジュール(この例では、上記メモリコントローラ16)において、リードデータの出力準備が整っているかどうかが判断される(ステップST36)。出力準備が整っていないと判断された場合には、処理がステップST31に移行される。
出力準備が整っているならば、上記コマンド監視部12-3に記憶されている情報にしたがって、上記バスアービター12のタイムスロット生成部12-2により、上記メモリコントローラ16のタイムスロット値ID(ID=4)が発行される(ステップST37)。これにより、たとえば図11に示したように、上記タイムスロット値ID(ID=3)が発行されているタイムスロット群に対し、さらに、上記メモリコントローラ16のタイムスロット値ID(ID=4)が発行されて、次の単位サイクルにおける、タイムスロット値IDの再割り当てが行われる(サイクルB参照)。
ステップST38では、上記タイムスロット値IDの発行に用いられたリードコマンドの情報が、上記コマンド監視部12-3および上記メモリコントローラ16のコマンド記憶部2aより削除される。その後、処理は移行され、上記ステップST31〜の処理(サイクルA,B参照)が繰り返される。
上記した方法2の場合、RBサイクル以前にリード要求され、データの出力準備が整っているターゲットモジュール、および、バスの使用権を要求しているイニシエータモジュールに対し、タイムスロット値IDの割り当てを優先的に行うことが可能となる。これにより、直ちに応答が可能なターゲットモジュールのタイムスロット値IDを生成できるようになる結果、上述の方法1と比較しても、よりデータ転送レートの高いバス制御方式とすることができる。
上記したように、単位サイクルあたりのタイムスロット値IDの生成(優先順位およびタイミング)を、リードコマンドの発行状況に応じてダイナミックに制御できるようにしている。すなわち、システムバスにつながる全てのモジュールにタイムスロット値IDが割り付けられ、それぞれのモジュールがタイムスロット値IDに応じた所定の期間内にバス上にデータを転送する時分割バス制御方式において、単位サイクルの期間内に発行されたリードコマンドを監視し、バス上でのアクセス状況に応じて、次の単位サイクルのタイムスロット値IDを自動的に生成できるようにしている。これにより、バス上でのアクセス状況に応じて、必要なモジュールに対し、順次、タイムスロット値IDを発行することが可能となり、システムLSIの処理の状況に適した単位サイクルの構築が可能となる。その結果、低速で動作するモジュールからの応答を待つことなく、バスの使用が可能となる。したがって、その処理の状況に応じて最適なデータ転送レートを確保することができ、システムLSIのスループットを向上させることが可能となるものである。
その他、本願発明は、上記(各)実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。さらに、上記(各)実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。たとえば、(各)実施形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題(の少なくとも1つ)が解決でき、発明の効果の欄で述べられている効果(の少なくとも1つ)が得られる場合には、その構成要件が削除された構成が発明として抽出され得る。
1a…コマンド記憶部、1b…タイムスロット判定部、1c…その他、2a…コマンド記憶部、2b…タイムスロット判定部、2c…その他、11…バス、12…バスアービター、12a…タイムスロット設定記憶部、12b…タイムスロット生成部、12c…その他、12-1…タイムスロット制御部、12-2…タイムスロット生成部、12-3…コマンド監視部、12-4…その他、13…CPU(イニシエータモジュール0)、14…CPU(イニシエータモジュール1)、15…イニシエータ(イニシエータモジュール2)、16…メモリコントローラ(ターゲットモジュール3)、17…システムメモリ、18…ターゲット(ターゲットモジュール4)、ID…タイムスロット値。
Claims (4)
- バスにつながる複数のモジュールにそれぞれ割り付けられた識別値に応じた所定の期間内に、前記各モジュールによる前記バス上へのデータの出力が可能とされた時分割バス制御方式のバス制御システムであって、
前記識別値を生成する際に、少なくとも識別値の生成に関する優先順位やタイミングを、システムが実行しようとしている処理に応じて制御する生成部を具備したことを特徴とするバス制御システム。 - バスにつながる複数のモジュールにそれぞれ割り付けられた識別値に応じた所定の期間内に、前記各モジュールによる前記バス上へのデータの出力が可能とされた時分割バス制御方式のバス制御システムのバス制御方法であって、
前記識別値を生成する際に、少なくとも識別値の生成に関する優先順位やタイミングを、システムが実行しようとしている処理に応じて制御するようにしたことを特徴とするバス制御方法。 - バスにつながる複数のモジュールにそれぞれ割り付けられた識別値に応じた所定の期間内に、前記各モジュールによる前記バス上へのデータの出力が可能とされた時分割バス制御方式のバス制御システムであって、
前記識別値を生成する際に、少なくとも識別値の生成に関する優先順位やタイミングを、前記バスのアクセス状況に応じて制御する生成部を具備したことを特徴とするバス制御システム。 - バスにつながる複数のモジュールにそれぞれ割り付けられた識別値に応じた所定の期間内に、前記各モジュールによる前記バス上へのデータの出力が可能とされた時分割バス制御方式のバス制御システムのバス制御方法であって、
前記識別値を生成する際に、少なくとも識別値の生成に関する優先順位やタイミングを、前記バスのアクセス状況に応じて制御するようにしたことを特徴とするバス制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004021648A JP2005215980A (ja) | 2004-01-29 | 2004-01-29 | バス制御システムおよびバス制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004021648A JP2005215980A (ja) | 2004-01-29 | 2004-01-29 | バス制御システムおよびバス制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005215980A true JP2005215980A (ja) | 2005-08-11 |
Family
ID=34905220
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004021648A Pending JP2005215980A (ja) | 2004-01-29 | 2004-01-29 | バス制御システムおよびバス制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005215980A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009524952A (ja) * | 2006-01-27 | 2009-07-02 | エフテーエス コンピューターテヒニク ゲゼルシャフト ミット ベシュレンクテル ハフツング | 時間制御型のセキュアな通信 |
-
2004
- 2004-01-29 JP JP2004021648A patent/JP2005215980A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009524952A (ja) * | 2006-01-27 | 2009-07-02 | エフテーエス コンピューターテヒニク ゲゼルシャフト ミット ベシュレンクテル ハフツング | 時間制御型のセキュアな通信 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7032046B2 (en) | Resource management device for managing access from bus masters to shared resources | |
JP6321807B2 (ja) | 車両のための制御装置 | |
JP2008097084A (ja) | プロセッサ及びデータ転送ユニット | |
JP2006195823A (ja) | Dma装置 | |
JP5102789B2 (ja) | 半導体装置及びデータプロセッサ | |
JP5578713B2 (ja) | 情報処理装置 | |
JP2007200245A (ja) | システムバス制御装置、集積回路およびデータ処理システム | |
JP6053384B2 (ja) | 情報処理装置、メモリ制御装置およびその制御方法 | |
JP2011154556A (ja) | 半導体記憶装置 | |
JP2008009817A (ja) | 半導体装置及びデータ転送方法 | |
JP4233373B2 (ja) | データ転送制御装置 | |
WO2015194133A1 (ja) | 演算装置、演算装置の制御方法、及び、演算装置の制御プログラムが記録された記憶媒体 | |
JP2010520519A (ja) | 自律または共通制御されるpeアレイを有するシステムのためのデータ転送ネットワークおよび制御装置 | |
US7913013B2 (en) | Semiconductor integrated circuit | |
JP2005215980A (ja) | バス制御システムおよびバス制御方法 | |
JP2004029898A (ja) | データプロセッサ | |
JP2010086456A (ja) | データ処理システム及び半導体集積回路 | |
JP2006215621A (ja) | Dma制御装置 | |
US20050138251A1 (en) | Arbitration of asynchronous and isochronous requests | |
JP4245852B2 (ja) | ダイレクトメモリアクセス装置 | |
JP2009037639A (ja) | ストリーミングidメソッドによるdmac発行メカニズム | |
JP2008217623A (ja) | データプロセッサ | |
JPWO2007007599A1 (ja) | メモリ制御装置 | |
JP3094944B2 (ja) | アービトレーション方法及びその装置 | |
JP3674670B2 (ja) | バス制御装置及び半導体装置 |