説明

半導体装置

【課題】オンチップバスにおけるイニシエータによる実際の転送開始タイミングを把握することなくイニシエータのアクセス競合に対して的確な優先制御を行う。
【解決手段】イニシエータ(101_0〜101_2)、ターゲット(102)及び調停回路(103)を有する半導体装置(10)であって、調停のための処理単位の時間と前記処理単位の時間に許容される最大転送量とをレジスタ(109、110)に格納し、当該格納した値に基づき、前記処理単位の時間毎に、夫々のイニシエータの残り時間(202)と残りデータ量(302)を演算し、当該演算結果から優先度(113_0〜113_2)を繰り返し生成する。ターゲットに対するイニシエータのアクセス要求が競合した場合には、夫々のイニシエータの前記優先度を比較し、いずれかのイニシエータに対してアクセスの許可を発行する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体装置に関し、特に複数のイニシエータとターゲットを有する半導体装置に係り、例えばパケット交換方式のスプリットトランザクションバスを採用するマイクロコンピュータに適用して有効な技術に関する。
【背景技術】
【0002】
複数のバスマスタとバススレーブが接続される共通バスにおいて、バスマスタがバススレーブにデータ転送のアクセス要求を発行する場合、バスマスタ毎に、時分割でバススレーブへのアクセス許可が発行されることになる。このとき、複数バスマスタのアクセス要求が競合している場合には、バスマスタにアクセス許可を発行する順番を調停する必要がある。従来の調停方法として、例えば下記の特許文献1にて開示されている。
【0003】
特許文献1に記載の方法では、各バスマスタのデータ転送開始のタイミングを検出し、データ転送の期限までの残り時間と、前記期限までに転送すべき残り転送量に基づいて優先度を算出し、当該優先度に基づいてバスマスタにアクセス許可を発行する。前記経過時間は、アクセス要求の調停を行う調停回路内にある、データ転送開始のタイミングと同期して計数を行うカウンタの計数値に基づいて算出される。特許文献1に記載の方法では、各バスマスタがデータ転送の開始を示す転送開始信号を、前記調停回路に対して通知し、これによって、各バスマスタのデータ転送開始のタイミングを検出する。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2007−122483号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1に記載の方法を、アクセスを要求する複数のイニシエータと前記イニシエータによってアクセスされるターゲットが接続されるスプリットトランザクションバスに適用する際に、どのような問題があるのか、を発明者は考えた。特許文献1に記載の方法では、データ転送開始のタイミングを検出するため、転送開始信号を必要としているが、通常、スプリットトランザクションバスでは、前記転送開始信号を備えていないため、新たに前記転送開始信号を通知する手段を必要とする。また、特許文献1では、前記転送開始信号をどのようなタイミングで生成するか、といった具体的な記述がなく、各イニシエータの転送開始のタイミングと前記カウンタの同期が困難となる場合がある。すなわち、各イニシエータは、所要のデータ処理に要する制限時間に対して常に同じタイミングでデータ転送要求を発行するわけではないため、前記データ転送要求の発行タイミングのばらつき(以下、「転送要求ジッタ」という。)が発生する場合には、前記制限時間内にデータ転送が完了しない場合がある。
【0006】
また、発明者が考えたところによると、特許文献1に記載の方法以外の他の方法として、OS等のソフトウェアによって各イニシエータの優先度に基づいてイニシエータにアクセス許可を発行する方法もある。この方法は、CPU等の制御装置が、前記調停回路内の転送開始レジスタにアクセスすることでデータ転送開始のタイミングを検出するものであり、前記転送開始レジスタは、ソフトウェアによって各イニシエータの前記制限時間毎に制御される。しかしながら、この方法では、各イニシエータの前記制限時間毎に、データ転送を制御するソフトウェアが必要となる。
【0007】
発明者が検討した、以上の内容によれば、スプリットトランザクションバスに適用する際の問題点としては、第一に転送開始のタイミングの検出を必要とする点、第二にイニシエータの前記転送要求ジッタに対応できない点、第三に前記制限時間毎にデータ転送を制御するOS等の上位ソフトウェアを必要とする点、が挙げられる。これらの問題に対処したとしても、イニシエータのIPコアの再利用性、すなわち特定の機能を有しないイニシエータの利用が阻害されることになる。
【0008】
本発明の目的は、オンチップバスにおけるイニシエータによる実際の転送開始タイミングを把握することなくイニシエータのアクセス競合に対して的確な優先制御を行うことができる半導体装置を提供することにある。
【0009】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【0010】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【0011】
すなわち、半導体装置は、調停のための処理単位の時間と前記処理単位の時間に許容される最大転送量とをレジスタに格納し、当該格納した値に基づき、前記処理単位の時間毎に、夫々のイニシエータの残り時間と残りデータ量を演算し、当該演算結果から優先度を繰り返し生成する。ターゲットに対するイニシエータのアクセス要求が競合した場合には、夫々のイニシエータの前記優先度を比較し、いずれかのイニシエータに対してアクセスの許可を発行する。
【発明の効果】
【0012】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【0013】
すなわち、オンチップバスにおけるイニシエータによる実際の転送開始タイミングを把握することなくイニシエータのアクセス競合に対して的確な優先制御を行うことができる。
【図面の簡単な説明】
【0014】
【図1】図1は、本発明の実施の形態1に係る半導体装置のブロック図である。
【図2】図2は、本発明の実施の形態1に係る優先度の生成についての概略図である。
【図3】図3は、本発明の実施の形態1に係る残り時間のタイミングチャートである。
【図4】図4は、本発明の実施の形態1に係る残りデータ量のタイミングチャートである。
【図5】図5は、本発明の実施の形態1に係る優先度のタイミングチャートである。
【図6A】図6Aは、本発明の実施の形態1に係るスロット時間とスロット内最大転送量の設定例である。
【図6B】図6Bは、本発明の実施の形態1に係るスロット時間とスロット内最大転送量の設定の具体例である。
【図7】図7は、本発明の実施の形態2に係る半導体装置のブロック図である。
【図8】図8は、本発明の実施の形態3に係る半導体装置のブロック図である。
【発明を実施するための形態】
【0015】
1.実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【0016】
〔1〕本発明の代表的な実施の形態に係る半導体装置(10、11)は、アクセスを要求する複数のイニシエータ(101_0〜101_2)と、前記イニシエータによってアクセスされるターゲット(102)と、アクセス要求を調停する調停回路(103、740)と、を有する半導体装置であって、前記調停回路は、前記イニシエータ毎に優先度を生成する優先度生成部(104_0〜104_2、750_0〜750_2)と、イニシエータ毎の前記優先度とイニシエータからのアクセス要求とを入力して、前記ターゲットに対するイニシエータのアクセス要求が競合した場合には、前記優先度を考慮して一つのイニシエータのアクセスを許可する選択部(130)と、を有し、前記優先度生成部は、前記調停のための処理単位の時間を規定する第1の値(203)が、書き換え可能に設定される第1レジスタ(109)と、前記処理単位の時間に許容される最大転送量を規定する第2の値(303)が、書き換え可能に設定される第2レジスタ(110)と、第1レジスタに設定されている前記処理単位の時間毎に、残り時間(202)と残りデータ量(302)と、を前記第1の値と前記第2の値に基づいて演算し、当該演算結果に基づいて優先度(113_0〜113_2)を生成する演算部(120、730)と、を有する。これによれば、夫々の優先度生成部は前記処理単位の時間毎に前記レジスタの設定値に基づいて残り時間と残りデータ量を演算するときにはイニシエータによる実際の転送開始タイミングを必要とせず、イニシエータの転送要求ジッタも問題としない。この残り時間と残りデータ量を演算することによって前記処理単位の時間毎にイニシエータによるアクセスの優先度をダイナミックに把握することができ、イニシエータによるアクセス要求が競合したときは、そのときに把握されている優先度に従って優先制御を行えばよい。それらの処理は前記処理単位の時間毎に繰り返されるから、他のイニシエータとのアクセス競合によってある処理単位の時間で必要なアクセスを行うことができない場合であっても、当該イニシエータは後続の処理単位の時間で必要なアクセスを要求すれば、再度同じ条件で生成されるアクセスの優先度にしたがってアクセスを行うことができる機会を得る。これにより、レジスタに対する値の設定次第で、イニシエータは処理に破綻を招くことなく前記処理単位の時間の複数倍の時間の範囲で必要なアクセスを行うことが可能になる。
【0017】
〔2〕項1の半導体装置において、前記演算部は、前記残り時間に対して前記残りデータ量が大きいほど高い優先度を生成する。これによれば、夫々のイニシエータのデータ転送要求の緊急度を容易に把握することができる。
【0018】
〔3〕項2の半導体装置において、前記イニシエータの少なくとも一つはプログラム処理回路であり、前記第1レジスタ及び前記第2レジスタは、前記プログラム処理回路によって初期設定される。これによれば、夫々のイニシエータの処理能力に応じた優先度を生成して、データ転送を管理することができる。
【0019】
〔4〕項3の半導体装置において、前記最大転送量の一時的な増加分を規定する第3の値(707)が設定される第3のレジスタ(701)と、前記残り時間が零となる毎に、対応する残りデータ量を夫々の優先度生成部から入力し、入力した値が最も大きいものに対応する前記優先度生成部の前記演算部に、前記第3の値を与える、余剰割当部(720)を更に有し、前記演算部は、前記第2の値と前記余剰割当部から供給される第3の値を加算した値(708)と、前記第1の値とに基づいて、前記優先度を生成する。これによれば、前記処理時間に転送しなかったデータ量が多かったイニシエータに対しては、次の処理単位時間において、より優先度が高くなるように設定することができる。
【0020】
〔5〕項4の半導体装置において、前記演算部は、前記残り時間が所定の時間になったときに、前記残りデータ量が所定のデータ量を超える場合には、最高の優先度を生成し、前記残りデータ量が零となったら、最低の優先度を生成する。
【0021】
〔6〕項1の半導体装置において、該当するイニシエータによる所要のデータ処理に要する制限時間をT、前記制限時間内にイニシエータのデータ処理に要するデータ量をD、処理時間を決めるための所要の数をN(Nは2以上の整数)とし、Nよりも小さい所要の数をiとしたときに、前記第1の値をT/Nとし、前記第2の値をD/(N−i)とする。これにより、前記処理単位の時間に割当てる転送量に余裕を持たせた設定に基づき優先制御を行うから、イニシエータの処理の破綻を招く可能性を低くすることができる。
【0022】
〔7〕本発明の代表的な実施の形態に係る半導体装置(12)は、アクセスを要求する複数のイニシエータと、前記イニシエータによってアクセスされるターゲットと、アクセス要求を調停する調停回路(805)と、を有する半導体装置であって、前記調停回路は、前記イニシエータ毎に優先度を生成する優先度生成部(804_0〜804_2)と、イニシエータ毎の前記優先度とイニシエータからのアクセス要求とを入力して、前記ターゲットに対するイニシエータのアクセス要求が競合した場合には、前記優先度を考慮して一つのイニシエータのアクセスを許可する選択部とを有し、前記優先度生成部は、所要の時間情報(807)が、書き換え可能に設定される第1レジスタ(802)と、所要のデータ量情報(808)が、書き換え可能に設定される第2レジスタ(803)と、所要の分割数が、書き換え可能に設定される第3レジスタ(800)と、前記第1レジスタに設定された前記時間情報を前記第3レジスタに設定された前記分割数で除算して、前記調停のための処理単位の時間を規定する第1の値を取得するとともに、前記第2レジスタに設定された前記データ量情報を前記第3レジスタに設定された前記分割数で除算して、前記処理単位の時間に許容される最大転送量を規定する第2の値を取得し、前記処理単位の時間毎に、残り時間と残りデータ量とを前記第1の値と前記第2の値に基づいて演算し、当該演算結果に基づいて優先度を生成する演算部(806)と、を有する。これによれば、前記処理時間と前記最大演算量を算出するための複雑なソフトウェアが不要となり、且つ項1と同様の作用を奏する。
【0023】
〔8〕項7の半導体装置において、前記演算部は、前記残り時間に対して前記残りデータ量が大きいほど高い優先度を生成する。これによれば、夫々のイニシエータのデータ転送要求の緊急度を容易に把握することができる。
【0024】
〔9〕項8の半導体装置において、前記イニシエータの少なくとも一つはプログラム処理回路であり、前記第1レジスタ、前記第2レジスタ及び前記第3レジスタは、前記プログラム処理回路によって初期設定される。これによれば、夫々のイニシエータの処理能力に応じた優先度を生成して、データ転送を管理することができる。
【0025】
〔10〕項9の半導体装置において、前記最大転送量の一時的な増加分を規定する第3の値(707)が設定される第4のレジスタ(701)と、前記残り時間が零となる毎に、対応する残りデータ量を夫々の優先度生成部から入力し、入力した値が最も大きいものに対応する前記優先度生成部の前記演算部に、前記第3の値を与える余剰割当部(720)を更に有し、前記演算部は、前記第2の値と前記余剰割当部から供給される第3の値を加算した値と、前記第1の値とに基づいて、前記優先度を生成する。これによれば、前記処理時間に転送しなかったデータ量が多かったイニシエータに対しては、次の処理単位時間において、より優先度が高くなるように設定することができる。
【0026】
〔11〕項10の半導体装置において、前記演算部は、前記残り時間が所定の時間になったときに、前記残りデータ量が所定のデータ量を超える場合には、最高の優先度を生成し、前記残りデータ量が零となったら、最低の優先度を生成する。
【0027】
〔12〕項11の半導体装置において、前記所要の時間情報は、該当するイニシエータによる所要のデータ処理に要する制限時間であり、前記所要のデータ量情報は、前記制限時間内に要求される転送量である。これによれば、夫々のイニシエータに要求される転送時間及び転送量に基づいた前記処理時間と最大演算量を設定することができる。
【0028】
2.実施の形態の詳細
実施の形態について更に詳述する。
【0029】
《実施の形態1》
図1は、スプリットトランザクションバスを採用するマイクロコンピュータに係り、本発明に係る半導体装置の実施の形態に係る調停回路を備えた半導体装置を示す。同図に示される半導体装置10は、特に制限されないが、公知のCMOS集積回路の製造技術によって1個の単結晶シリコンのような半導体基板に形成されている。
【0030】
半導体装置10は、イニシエータ101_0〜101_2、ターゲット102、オンチップバス100、及び調停回路(以下、「ルータ」という。)103を備え、オンチップバス100とルータ103はスプリットトランザクションバスを構成している。
【0031】
なお、図1に示す半導体装置10は、3個のイニシエータ101_0〜101_2と1個のターゲット102を代表的に明示しており、これらのイニシエータの数やターゲットの数に特に制限はない。また、図1において、ルータ103は説明のために、オンチップバス100から切り離して図示してある。
【0032】
図1におけるスプリットトランザクションバスにおいて、イニシエータ101_0〜101_2とターゲット102との間のアクセスは、前記イニシエータ101_0〜101_2と前記ターゲット102間のオンチップバス上に存在するルータ103を介して行われ、前記ルータ103が前記イニシエータ101_1〜101_2とターゲット102間のデータ転送の経路を決定(ルーティング)する。
【0033】
前記イニシエータ101_0〜101_2は、アクセス要求の際に、要求内容を含むリクエストパケットをルータ103に与える。前記イニシエータ101_0〜101_2は、例えばCPU、FPU、画像処理用のコントローラ及びアクセラレータ等の装置である。前記リクエストパケットは、アクセス要求先や要求の内容を示す情報等を含むパケットデータである。具体的には、前記リクエストパケットの中には、アクセス要求を示すリクエスト信号、アクセスを要求するターゲット102のアドレス情報、データの読み出しや書き込みといった処理の種類とデータサイズを示すオペコード、前記処理の対象となるデータ、及びアクセス要求をしたイニシエータの識別情報等、が含まれている。なお、図1では、前記リクエストパケット中のリクエスト信号をリクエスト信号111_0〜111_2として明示している。
【0034】
前記ルータ103は、前記イニシエータ101_0〜101_2から与えられる前記リクエストパケットを解読し、アクセスを要求されたターゲット102を特定して、リクエストパケット内の上記アドレス情報等の所定データを、ターゲット102に与える。前記ターゲット102は、例えば、メモリやレジスタ等である。また、前記アクセラレータ等はアクセス要求をするイニシエータであるが、CPUによって初期設定等がされるので、ターゲット102にもなり得る。
【0035】
ルータ103から所定データが与えられたターゲット102は、前記所定データに応答し、レスポンスパケットを前記ルータ103に与える。前記レスポンスパケットは、前記イニシエータ101_0〜101_2が要求する処理対象のデータや当該データの送信先を示す情報等を含むパケットデータである。具体的には、前記レスポンスパケットの中には、前記処理の結果を示すレスポンスオペコード、前記処理で要求されるデータ、及びレスポンスパケットの送信先となるイニシエータの識別情報等、が含まれている。例えば、イニシエータからのターゲット102への要求内容が書き込み処理であったならば、書き込みが完了したことを示すレスポンスオペコード等を含むレスポンスパケットを、要求内容が読み出し処理であれば、読み出しデータ等を含むレスポンスパケットを、ターゲット102はルータ103に与える。
【0036】
レスポンスパケットが与えられた前記ルータ103は、前記レスポンスパケットを解読し、送信先のイニシエータ101_0〜101_2を特定して、リクエストパケット内の上記レスポンスオペコード等の所定データを、イニシエータ101_0〜101_2に送信するとともに、転送完了を示す転送完了信号112_0〜112_2を送信する。
【0037】
以上のように、オンチップバス上のルータ103は、イニシエータ101_0〜101_2とターゲット102間の転送経路の制御を行うが、その制御とともに、前記イニシエータ101_0〜101_2のターゲット102に対するアクセス要求の競合を調停する機能を有する。すなわち、本実施の形態1に係るルータ103は、各イニシエータのターゲット102に対するアクセス要求の緊急度を示す優先度を生成して、前記アクセス要求が競合した場合には、その優先度に基づきアクセス要求を調停する優先制御を行う機能を有する。
【0038】
前記ルータ103は、ルーティングを行う制御ロジック回路108とイニシエータの優先度を生成する優先度生成部104_0〜104_2とから構成される。前記制御ロジック回路108は、バッファ132、コマンドデコーダ131及び選択部130から構成される。前記制御ロジック回路108は、イニシエータ101_0〜101_2から、リクエストパケットを受け取ると、当該リクエストパケットをバッファ132に格納するとともに、コマンドデコーダ131が、当該リクエストパケット中の、前述したアクセス要求先や要求の内容等を示す情報を解読し、解読した結果に基づき選択部130がルーティングを行う。この際、ターゲット102に対するリクエスト信号111_0〜111_2が競合していることがわかると、前記ルータ103は前記優先制御を行う。
【0039】
優先制御は前述のように、前記優先度に基づいて行われる。前記優先度は、優先度生成部104_0〜104_2が生成する。前記優先度生成部104_0〜104_2は、夫々のイニシエータ101_0〜101_2に対応し、イニシエータの数がM個であれば、対応するM個の優先度生成部が必要となる。なお、前記優先度生成部104_0〜104_2はすべて、同一の機能を有するため、以下の説明においては、代表して一つの優先度生成部104_0について行うこととする。
【0040】
図2に前記優先度の生成についての概略図を示す。図2では、3つのイニシエータ(INTR0〜INTR2)を一例とし、それらにおける所要のデータ処理に要する制限時間を夫々T0〜T2とし、これらの制限時間T0〜T2を夫々分割した時間ts0〜ts2を優先制御のための処理単位の時間(以下、「スロット時間」という。)としている。なお、前記制限時間は必要に応じてマージンを見込んだ値としてもよい。前記優先度の管理は、夫々のイニシエータに対して、これらのスロット時間ts0〜ts2毎に行われる。また、夫々のイニシエータは、前記制限時間T0〜T2内に必要とするデータ量が決まっているので、前記制限時間T0〜T2内に必要なデータの転送が完了するように優先制御を行う必要がある。例えば、動画像の復号処理において、1フレームの復号に割り当てられた時間内に復号処理が完了するように、圧縮された1フレームの動画像データを所定時間内にメモリから読み出す必要がある。このような場合に、前記所定時間内にデータの転送が完了しないと、復号処理が破綻してしまう。そこで、前記制限時間T0〜T2内に必要なデータのアクセスが完了するように、各スロット時間ts0〜ts2内で転送に割当てる最大転送量(以下、「スロット内最大転送量」という。)を設定する。ここでは、夫々のイニシエータのスロット内最大転送量をds0〜ds2としている。なお、前記スロット内転送量は必要に応じてマージンを見込んだ値としてもよい。前記優先度は、夫々のスロット時間ts0〜ts2における残り時間と、当該スロット時間に割り当てられたスロット内最大転送量ds0〜ds2に対する残りデータ量とに基づいて生成され、優先度の管理は、前記スロット時間ts0〜ts2毎に行われる。
【0041】
優先度生成部104_0による前記優先度の生成の具体的な方法ついて説明する。
【0042】
前記優先度生成部104_0は、残り時間カウンタ105、残りデータ量カウンタ106及び比較器107、を有する演算部120と、時間情報レジスタ109及びデータ量情報レジスタ110から構成される。
【0043】
始めに、残り時間の算出について説明する。
【0044】
残り時間の算出に際し、前記残り時間カウンタ105が、前記時間情報レジスタ109に設定されている値を初期値として入力する。前記時間情報レジスタ109には、予め、前記スロット時間をスロット時間203として設定しておく。前記レジスタ109の設定は、前述のターゲットに対するアクセスと同様に行われる。例えば、前記半導体装置10内のイニシエータ101_0〜101_2の内の一つであるプログラム処理回路としての中央演算処理装置(CPU)から、前記レジスタ109にスロット時間を設定するためのリクエストパケットが前記ルータ103に送られる。そして、前記制御ロジック回路108において、当該リクエストパケットが解読され、図示されない経路で前記レジスタ109にスロット時間が設定される。
【0045】
前記残り時間カウンタ105は、前記スロット時間203を残り時間の初期値とし、バスサイクル毎に、当該初期値からダウンカウントすることで残り時間202を算出し、比較部107に与える。前記カウンタ105は、当該残り時間が零になったときに、再度初期値がプリセットされ、残り時間の計測が繰り返される。
【0046】
図3は、残り時間のタイミングチャートである。図3において、所要のデータ処理に要する制限時間200を20バスサイクル数とし、201_0〜201_2に示されるスロット時間は、前記制限時間200を2つに分割した10バスサイクルとする。また、前記カウンタ105に設定する残りデータ量の初期値を“9”とプリセットしている。残り時間は、201_0に示されるスロット時間の開始から、バスサイクル毎にダウンカウントして、カウント値が“0”になったら、201_1に示される次のスロット時間から、残り時間のカウント値を“9”に再度設定して、ダウンカウントすることを繰り返し行う。これにより、イニシエータのスロット時間における残り時間を把握することができる。
【0047】
次に、残りデータ量の算出について説明する。
【0048】
残りデータ量の算出に際し、前記残りデータ量カウンタ106が、前記データ量情報レジスタ110に設定されている値を初期値として入力する。前記データ量情報レジスタ110には、予め、前記スロット内最大転送量をスロット内最大転送量303として設定しておく。前記レジスタ110の設定は、前述の前記時間情報レジスタ109の設定と同様の方法で行われる。
【0049】
前記残りデータ量カウンタ106は、イニシエータ101_0が要求したアクセスが完了したときに、前記制御ロジック回路108から当該転送完了したデータのデータ語長117_0が与えられる。前記データ語長117_0は、イニシエータ101_0とターゲット102間のアクセスに際し、前記コマンドデコーダ131により、レスポンスパケットのレスポンスオペコードから解読された転送データのサイズである。前記制御ロジック回路108は、イニシエータ101_0への転送完了信号112_0の通知とともに、解読した当該転送データのデータ語長117_0を、転送元のイニシエータ101_0に対応する前記データ量カウンタ106に与える。
【0050】
前記残りデータ量カウンタ106は、前記スロット内最大転送量303を初期値とし、イニシエータ101_0が要求したアクセスが完了する毎に、前記データ語長117_0を当該初期値から減算することで残りデータ量302を算出する。そして、前記残り時間が零となるタイミングで、前記残りデータ量の値が再度初期値としてプリセットされ、上記の算出が繰り返される。
【0051】
図4は、残りデータ量のタイミングチャートである。図4において、前記レジスタ110に設定するスロット内最大転送量を“4”とし、この値を残りデータ量の初期値として、前記カウンタ106にプリセットしている。201_0に示されるスロット時間において、2回の転送が行われ、当該スロット時間内の残りデータ量が“0”となるが、201_1に示される次のスロット時間において、残りデータ量を再度初期値の“4”に設定して、残りデータ量を算出することを繰り返し行う。これにより、イニシエータのスロット時間おける前記残りデータ量を把握することができる。
【0052】
以上の方法により演算された、残り時間202と残りデータ量302に基づいて、比較部107が演算をすることで優先度を生成し、当該優先度を前記制御ロジック108に与える。前記比較部107は、前記残り時間202から前記残りデータ量302を減算する演算によって、優先度113_0を生成する。
【0053】
優先度は、前述のようにイニシエータのアクセス要求の緊急度を表すものであり、残り時間が少なく、残りデータ量が多い程、データ転送の緊急度が高いと考えられる。本実施の形態1では、優先度を生成するための演算方法として、残り時間から残りデータ量を減算する演算方法を採用する。なお、他の演算方法として、残りデータ量を残り時間で除算する方法等を採用してもよい。
【0054】
図5は、前記優先度のタイミングチャートである。図5では、前記制限時間200の値を20バスサイクルとし、前記制限時間を2つに分割した10バスサイクルを201_0〜201_2に示されるスロット時間とし、当該スロット時間に割当てる前記スロット内最大転送量のデータ量を“4”としている。また、カウンタ105に設定する残り時間の初期値を“9”とし、前記カウンタ106に設定する残りデータ量の初期値を“4”としている。夫々のスロット時間201_0〜201_2において、優先度は、残り時間カウンタ105で計測された残り時間から残りデータ量カウンタ106で計測された残りデータ量を減算することで得られる。図5においては、前記優先度は値が小さい程、優先度が高くなり、“0”が最高の優先度を表す。また、図5においては、残りデータ量が“0”になったときは、その優先度を、初期値であって最低の優先度を示す“9”とし、残り時間の値が“3”となったときに、残りデータ量が“3”以上である場合には、優先度を、最高の優先度を示す“0”、とする演算方法も併せて採用している。なお、優先度の演算方法は、上記の例に限られず、前記残りデータ量の値が前記残り時間の値以上となったら優先度を上げるような演算方法を採用してもよい。
【0055】
最後に、上記の方法により生成された、夫々のイニシエータ101_0〜101_2の優先度に基づく優先制御について説明する。
【0056】
上記の方法により生成された、夫々のイニシエータ101_0〜101_2の優先度113_0〜113_2が、前記制御ロジック部108に与えられる。前記制御ロジック108内にある前記選択部130は、夫々のイ二シータ101_0〜101_2の優先度と、夫々のイニシエータ101_0〜101_2のターゲット102に対する前記リクエスト信号111_0〜111_2を入力する。前述のように、3つのイニシエータ101_0〜101_2のアクセス要求が競合している場合には、選択部130は、3つの前記リクエスト信号111_0〜111_2が入力されるので、当該3つのイニシエータに対応する優先度113_0〜113_2を比較して、最も優先度の高いイニシエータを選択する。図5の場合は、生成された優先度の値の小さいほうが、優先度は高くなるので、優先度の値がもっとも小さいイニシエータに対してアクセスが許可される。なお、前記優先度113_0〜113_2が同一であった場合には、イニシエータに対して優先させて転送許可をする優先順を予め決めておき、当該優先順に基づいてアクセスの許可をしてもよいし、また、当該判別される優先度に対応するスロット時間203の前のスロット時間203におけるイニシエータの転送の有無や転送したデータ量等により、選択するようにしてもよい。
【0057】
前記制御ロジック部108は、当該判別結果に基づき、イニシエータ101_0〜101_2から制御ロジック部108に与えられたリクエストパケットのうち、選択されたイニシエータのリクエストパケットから所定のデータを取り出し、ターゲット102に対して前記所定のデータを送信する。一方、前記イニシエータ101_0〜101_2のターゲット102に対するアクセス要求が競合しない場合、例えば、イニシエータ101_0のみがターゲット102に対してアクセス要求している場合は以下のようになる。前記選択部130には、すべてのイニシエータの優先度113_0〜113_2が入力され、1つのリクエスト信号111_0が入力される。この場合は、1つのリクエスト信号111_0だけが入力されているので、アクセス要求が競合していないと判断され、前記優先度113_0〜113_2を判別することなく、前記制御ロジック部108は、イニシエータ101_0のリクエストパケットから所定のデータを取り出し、ターゲット102に対して前記所定のデータを送信する。
【0058】
なお、以上の優先度の生成において、スロット時間内で転送に割当てる最大転送量であるスロット内最大転送量は、イニシエータがターゲットに対してアクセスする際に、制限時間内に必要とするデータ量に対して余裕を持って前記レジスタ110に設定している。例えば、ターゲットに対して制限時間Tの間にデータ量Dの転送が必要なイニシエータがあるとする。このとき、前記レジスタ109とレジスタ110に設定するスロット時間とスロット内最大転送量を以下のように設定する。
【0059】
図6Aは、当該イニシエータのスロット時間とスロット内最大転送量の設定を示したものである。図6Aにおいて、前記制限時間Tを分割する分割数をN(Nは2以上の整数)として、スロット時間tsをT/Nと設定する。また、Nよりも小さい所要の数をi、スロット内最大転送量をdsとすると、前記スロット内最大転送量dsは、ds≧D/(N−i)となるように設定する。前記スロット内最大転送量dsをこのように設定するのは、以下の理由からである。制限時間Tにデータ量Dを転送しなければいけないイニシエータに対して、前記スロット内最大転送量dsをD/Nとしてしまうと、他のイニシエータとのアクセス競合によってあるスロット時間で必要なアクセスを行うことができない場合には、制限時間内でのアクセスができず、イニシエータの処理が破綻してしまう可能性がある。そこで、前記スロット内最大転送量dsを上記のように設定すると、前記制限時間Tの間に要求される転送量Dに対して、最低でもスロット時間i個分の転送量D/(N−i)を余裕として確保することができる。
【0060】
図6Bは、図6Aの具体例である。図6Bでは、前記制限時間Tの間に要求される転送量Dを“20”、前記分割数Nを“5”、前記所定の数iを“1”とすると、前記スロット内最大転送量dsはds≧5より、“ds=5”と設定する。これにより、前記制限時間Tの間に要求される転送量D(=20)に対して前記スロット内最大転送量ds(=5)、すなわち スロット時間1個分だけ余裕を確保することができる。
【0061】
なお、前記スロット時間及びスロット内最大転送量のレジスタの設定は、前述のようにCPUがパワーオンリセット直後に行ってもよいし、或いはその他適宜のタイミングでCPUやアクセラレータ等が行ってもよい。又は、CPU以外にハードウェアロジック等を用いて行ってもよい。
【0062】
以上のことから、レジスタデータ転送要求の発行タイミングのばらつきである転送要求ジッタが生じても、前記レジスタ109及びレジスタ110に対する値の設定次第で、イニシエータは処理に破綻を招くことなく前記処理単位の時間の複数倍の時間の範囲で必要なアクセスを行うことが可能になる。
【0063】
以上の前記優先制御によれば、バスサイクル毎に優先度が生成されるから、イニシエータのアクセス要求の優先度をダイナミックに把握することが可能となり、イニシエータによる実際の転送開始タイミングを必要とせず、イニシエータの転送要求ジッタも問題としない。また、前記スロット時間毎に優先度制御が繰り返し行われるから、他のイニシエータとのアクセス競合によってあるスロット時間で必要なアクセスを行うことができない場合であっても、当該イニシエータは後続のスロット時間で必要なアクセスを要求すれば、再度同じ条件で生成されるアクセスの優先度にしたがってアクセスを行うことができる機会を得る。
【0064】
《実施の形態2》
図7は、スプリットトランザクションバスを採用するマイクロコンピュータに係り、本発明に係る半導体装置の別の実施の形態に係る調停回路を備えた半導体装置を示す。同図に示される半導体装置11は、特に制限されないが、公知のCMOS集積回路の製造技術によって1個の単結晶シリコンのような半導体基板に形成されている。
【0065】
各イニシエータは、所要のデータ処理に要する制限時間に対して常に同じタイミングでデータ転送要求を発行するわけではないため、前述の転送要求ジッタが発生する。そこで、実施の形態1に係る半導体装置10では、前記スロット時間に割当てる前記スロット内最大転送量を、制限時間内に必要とするデータ量に対して余裕を持って前記レジスタ110を設定している。実施の形態2に係る半導体装置11では、上記のレジスタ設定に加え、あるスロット時間において、転送しなかったデータ量が多かったイニシエータに対しては、次のスロット時間において、データ転送要求の増加に対応するため、スロット内最大転送量を一時的に増加させる手段を備える。
【0066】
半導体装置11は、イニシエータ101_0〜101_2、ターゲット102、オンチップバス100、及びルータ740を備え、オンチップバス100とルータ740はスプリットトランザクションバスを構成している。なお、図7に示す半導体装置11における構成要素について、実施の形態1と同様の機能を有するものには同一の符号を付して、その詳細な説明を省略する。
【0067】
前記ルータ740は、ルーティングを行う制御ロジック回路108とイニシエータの優先度を生成する優先度生成部750_0〜750_2とに加え、余剰割当部720と余剰転送量レジスタ701を備える。
【0068】
前記優先度生成部750_0〜750_2における構成要素について、実施の形態1と同様の機能を有するものは、同一の符号を付して、詳細な説明を省略する。
【0069】
前記余剰転送量レジスタ701には、予め所望の余剰転送量707が設定される。前記余剰転送量707の設定に際しては、各スロット時間における各イニシエータのスロット内最大転送量と前記余剰転送量707の和が、オンチップバスの転送能力を超えないように設定し、オンチップバスにおける前記イニシエータ101_0〜101_2のアクセスの処理が破綻しないようにする。なお、前記レジスタ701の設定は、前述の前記時間情報レジスタ109等と同様のタイミング及び方法で行われる。
【0070】
余剰割当部720は、余剰転送量判定回路702と余剰割当選択回路700から構成され、前記余剰転送量判定回路702は、前記優先度生成部750_0〜750_2における前記残り時間カウンタ105が計測する残り時間が零となる毎に、前記残りデータ量カウンタ106が計測する残りデータ量を余りデータ量704_0〜704_2として入力する。前記余剰割当判定回路702は、入力した前記余りデータ量704_0〜704_2の内、最も大きいものに対応するイニシエータを判定し、判定信号706を余剰割当選択回路700に入力する。なお、前記判定に際し、前記余りデータ量704_0〜704_2の値が同一であるイニシエータが複数あった場合には、その前のスロット時間において前記余剰転送量が割り当てられていないイニシエータを選択するようにしてもよいし、又は、優先的に余剰転送量を割り当てるイニシエータを予め設定しておいてもよい。
【0071】
余剰割当選択回路700は、余剰転送量判定回路702から与えられた前記判定信号706に基づいて、当該判定信号706によって判定された前記イニシエータ101_0〜101_2に対応する前記優先度生成部750_0〜750_2に対し、前記余剰転送量レジスタ701に格納されている余剰転送量707を、余剰転送量信号705_0〜705_1として与える。ここでは、説明のため、前記優先度生成部750_0に、余剰転送量信号705_0が与えられたとする。
【0072】
前記優先度生成部750_0は、加算器703を有する演算部730を備える。前記加算器703は、前記データ量情報レジスタ110に設定されたスロット内最大転送量303と、余剰割当選択回路700から与えられた前記余剰転送量信号705_0とを加算し、当該加算したデータをスロット内加算転送量708として残りデータ量カウンタ106に与える。
【0073】
残りデータ量カウンタ106は、前記スロット内加算転送量708を初期値として設定する。そして、実施の形態1と同様の方法により、イニシエータ101_0が要求したアクセスが完了する毎に、前記データ語長117_0を当該初期値から減算することで残りデータ量302を算出し、前記比較部107に与える。
【0074】
以上より、実施の形態2は、実施の形態1と同様の作用を奏し、且つあるスロット時間に転送ができなかったデータの量が多かったイニシエータに対しては、次のスロット時間において、より優先度が高くなるように設定することができる。すなわち、あるスロットでは当該スロットに割り当てられた最大転送量よりも、イニシエータの要求するデータ量が少なく、またあるスロットでは当該スロットに割り当てられた最大転送量よりもイニシエータの要求するデータ量が多くなるような場合でも柔軟に対応することができる。
【0075】
《実施の形態3》
図8は、スプリットトランザクションバスを採用するマイクロコンピュータに係り、本発明に係る半導体装置の別の実施の形態に係る調停回路を備えた半導体装置を示す。同図に示される半導体装置12は、特に制限されないが、公知のCMOS集積回路の製造技術によって1個の単結晶シリコンのような半導体基板に形成されている。
【0076】
前述の実施の形態1に係る半導体装置10、及び実施の形態2に係る半導体装置11は、優先制御のための処理単位の時間であるスロット時間と、当該スロット時間に割当てられるスロット内最大転送量とを予め前記時間情報レジスタ109とデータ量情報レジスタ110に設定しておく必要があった。これに対して、実施の形態3に係る半導体装置12は、前記スロット時間を所要の時間に基づいて演算し、前記スロット内最大転送量を所要のデータ量に基づいて演算する手段を備える。
【0077】
図8に示される半導体装置12は、イニシエータ101_0〜101_2、ターゲット102、オンチップバス100、及びルータ805を備え、オンチップバス100とルータ805はスプリットトランザクションバスを構成している。図8において、実施の形態1と同一の機能を有する構成要素については、同一の符号を付して詳細な説明を省略する。
【0078】
前記ルータ805は、ルーティングを行う制御ロジック回路108とイニシエータの優先度を生成する優先度生成部804_0〜804_2とを備える。
【0079】
前記優先度生成部804_0は、残り時間カウンタ105、残りデータ量カウンタ106、比較器107、分割演算部801及び分割数レジスタ800を有する演算部806と、時間情報レジスタ802及びデータ量情報レジスタ803から構成される。
【0080】
前記時間情報レジスタ802には、所望の時間情報を格納する。本実施の形態3では、例えば、該当するイニシエータの所要のデータ処理に要する制限時間807を前記時間情報レジスタ802に設定する。
【0081】
前記データ量情報レジスタ803は、所望のデータ量情報を格納する。本実施の形態3では、例えば、前記イニシエータが前記制限時間に必要とするデータ量808を前記データ量情報レジスタ803に設定する。
【0082】
なお、前記レジスタ802及びレジスタ803の設定は、前述の前記時間情報レジスタ109等と同様のタイミング及び方法で行われる。また、前記制限時間807と前記データ量808は、必要に応じてマージンを見込んだ値にしてもよい。
【0083】
前記分割演算部801は、前記分割レジスタ800に設定されている値、前記制限時間807及び前記データ量808を入力する。前記分割レジスタ800には、予め前記制限時間807と前記データ量808を夫々分割する所望の数N(Nは2以上の整数)を設定しておく。前記レジスタ800の設定は、前述の前記時間情報レジスタ802の設定と同様に行われる。分割演算部801は、前記制限時間807を前記所望の数Nで除算して、当該除算した値を優先制御のための処理単位の時間となるスロット時間203とし、前記残り時間カウンタ105に与える。また、前記データ量808を前記所望の数Nで除算して、当該除算した値を前記スロット時間に割当てる最大転送量となるスロット内最大転送量303とし、前記残りデータ量カウンタ106に与える。なお、前記分割演算部801は、前述の除算方法として例えば、シフト演算を採用する。
【0084】
前記実施の形態1と同様の方法により、前記スロット時間203が与えられた前記残り時間カウンタ105と、前記スロット内最大転送量303が与えられた前記残りデータ量カウンタ106は、前記残り時間202と前記残りデータ量302を演算し、それらの演算結果に基づいて比較部107が優先度113_0を生成する。
【0085】
以上より、実施の形態3は、前記実施の形態1と同様の効果を奏し、且つ前記スロット時間および前記スロット内最大転送量をCPUに演算させるためのプログラム等が不要となるので、ソフトウェアの変更が不要となる。
【0086】
なお、上記の実施の形態3では、前記所望の数Nによって前記制限時間807と前記データ量808を除算する方法であるが、この代わりに前記制限時間807と前記データ量808を夫々別の数で除算する方法でもよい。例えば、前記制限時間807は、前記所望の数Nで分割し、前記データ量808は、所望の数(N−i)で分割する。ただし、iはNよりも小さい整数である。
【0087】
上記の説明では、実施の形態1に係る半導体装置10に対して前述の分割する演算手段を適用する例を示したが、当該手段を実施の形態2に係る半導体装置11に適用することもできる。
【0088】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【0089】
例えば、本発明はスプリットトランザクションバスのプロトコルに適用することを例に説明したが、それ以外のプロトコルに適用してもよい。
【符号の説明】
【0090】
10 半導体装置
11 半導体装置
12 半導体装置
100 オンチップバス
101_0、101_1、101_2 イニシエータ
102 ターゲット
103 ルータ
104_0、104_1、104、2 優先度生成部
105 残り時間カウンタ
106 残りデータ量カウンタ
107 比較部
108 制御ロジック
109 時間情報レジスタ
110 データ量情報レジスタ
111_0、111_1、111_2 リクエスト信号
112_0、112_1、112_2 転送完了信号
113_0、113_1、113_2 優先度
114 パケット転送経路
115 パケット転送経路
117_0、117_1、117_2 データ語長
120 演算部
130 選択部
131 コマンドデコーダ
132 バッファ
200 制限時間
201_0、201_1、201_2 スロット時間
202 残り時間
203 スロット時間
302 残りデータ量
303 スロット内最大転送量
700 余剰割当選択回路
701 余剰転送量レジスタ
702 余剰転送量判定回路
703 加算器
704_0、704_1、704_2 余りデータ量
705_0、705_1、705_2 余剰転送量信号
706 判定信号
707 余剰転送量
708 スロット内加算転送量
720 余剰割当部
730 演算部
740 ルータ
750_0、750_1、750_2 優先度生成部
800 分割レジスタ
801 分割演算部
802 時間情報レジスタ
803 データ量情報レジスタ
804_0、804_1、804_2 優先度生成部
805 ルータ
806 演算部
807 制限時間
808 制限時間に必要とするデータ量

【特許請求の範囲】
【請求項1】
アクセスを要求する複数のイニシエータと、
前記イニシエータによってアクセスされるターゲットと、
アクセス要求を調停する調停回路と、を有する半導体装置であって、
前記調停回路は、前記イニシエータ毎に優先度を生成する優先度生成部と、
イニシエータ毎の前記優先度とイニシエータからのアクセス要求とを入力して、前記ターゲットに対するイニシエータのアクセス要求が競合した場合には、前記優先度を考慮して一つのイニシエータのアクセスを許可する選択部と、を有し、
前記優先度生成部は、前記調停のための処理単位の時間を規定する第1の値が、書き換え可能に設定される第1レジスタと、
前記処理単位の時間に許容される最大転送量を規定する第2の値が、書き換え可能に設定される第2レジスタと、
第1レジスタに設定されている前記処理単位の時間毎に、残り時間と残りデータ量とを前記第1の値と前記第2の値に基づいて演算し、当該演算結果に基づいて優先度を生成する演算部と、を有する半導体装置。
【請求項2】
前記演算部は、前記残り時間に対して前記残りデータ量が大きいほど高い優先度を生成する、請求項1記載の半導体装置。
【請求項3】
前記イニシエータの少なくとも一つはプログラム処理回路であり、前記第1レジスタ及び前記第2レジスタは、前記プログラム処理回路によって初期設定される、請求項2記載の半導体装置。
【請求項4】
前記最大転送量の一時的な増加分を規定する第3の値が設定される第3のレジスタと、
前記残り時間が零となる毎に、対応する残りデータ量を夫々の優先度生成部から入力し、入力した値が最も大きいものに対応する前記優先度生成部の前記演算部に、前記第3の値を与える余剰割当部を更に有し、
前記演算部は、前記第2の値と前記余剰割当部から供給される第3の値を加算した値と、前記第1の値とに基づいて、前記優先度を生成する、請求項3記載の半導体装置。
【請求項5】
前記演算部は、前記残り時間が所定の時間になったときに、前記残りデータ量が所定のデータ量を超える場合には、最高の優先度を生成し、前記残りデータ量が零となったら、最低の優先度を生成する、請求項4記載の半導体装置。
【請求項6】
該当するイニシエータによる所要のデータ処理に要する制限時間をT、前記制限時間内にイニシエータのデータ処理に要するデータ量をD、処理時間を決めるための所要の数をN(Nは2以上の整数)とし、Nよりも小さい所要の数をiとしたときに、前記第1の値をT/Nとし、前記第2の値をD/(N−i)とする、請求項1記載の半導体装置。
【請求項7】
アクセスを要求する複数のイニシエータと、
前記イニシエータによってアクセスされるターゲットと、
アクセス要求を調停する調停回路と、を有する半導体装置であって、
前記調停回路は、前記イニシエータ毎に優先度を生成する優先度生成部と、
イニシエータ毎の前記優先度とイニシエータからのアクセス要求とを入力して、前記ターゲットに対するイニシエータのアクセス要求が競合した場合には、前記優先度を考慮して一つのイニシエータのアクセスを許可する選択部と、を有し、
前記優先度生成部は、所要の時間情報が、書き換え可能に設定される第1レジスタと、
所要のデータ量情報が、書き換え可能に設定される第2レジスタと、
所要の分割数が、書き換え可能に設定される第3レジスタと、
前記第1レジスタに設定された前記時間情報を前記第3レジスタに設定された前記分割数で除算して、前記調停のための処理単位の時間を規定する第1の値を取得するとともに、前記第2レジスタに設定された前記データ量情報を前記第3レジスタに設定された前記分割数で除算して、前記処理単位の時間に許容される最大転送量を規定する第2の値を取得し、前記処理単位の時間毎に、残り時間と残りデータ量とを前記第1の値と前記第2の値に基づいて演算し、当該演算結果に基づいて優先度を生成する演算部と、を有する半導体装置。
【請求項8】
前記演算部は、前記残り時間に対して前記残りデータ量が大きいほど高い優先度を生成する、請求項7記載の半導体装置。
【請求項9】
前記イニシエータの少なくとも一つはプログラム処理回路であり、前記第1レジスタ、前記第2レジスタ及び前記第3レジスタは、前記プログラム処理回路によって初期設定される、請求項8記載の半導体装置。
【請求項10】
前記最大転送量の一時的な増加分を規定する第3の値が設定される第4のレジスタと、
前記残り時間が零となる毎に、対応する残りデータ量を夫々の優先度生成部から入力し、入力した値が最も大きいものに対応する前記優先度生成部の前記演算部に、前記第3の値を与える余剰割当部を更に有し、
前記演算部は、前記第2の値と前記余剰割当部から供給される第3の値を加算した値と、前記第1の値とに基づいて、前記優先度を生成する、請求項9記載の半導体装置。
【請求項11】
前記演算部は、前記残り時間が所定の時間になったときに、前記残りデータ量が所定のデータ量を超える場合には、最高の優先度を生成し、前記残りデータ量が零となったら、最低の優先度を生成する、請求項10記載の半導体装置。
【請求項12】
前記所要の時間情報は、該当するイニシエータによる所要のデータ処理に要する制限時間であり、前記所要のデータ量情報は、前記制限時間内に要求される転送量である、請求項11記載の半導体装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6A】
image rotate

【図6B】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2011−59915(P2011−59915A)
【公開日】平成23年3月24日(2011.3.24)
【国際特許分類】
【出願番号】特願2009−207869(P2009−207869)
【出願日】平成21年9月9日(2009.9.9)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】