実施の形態1.
図1は、本発明の実施の形態1に係るアクセス制御装置の構成を示すブロック図である。図1に示されるように、本実施の形態1に係るアクセス制御装置は、バススレーブBS0,BS1と、バススレーブBS0,BS1に対してアクセスを行うバスマスタBM0,BM1と、バスマスタBM0,BM1間のバススレーブBS0,BS1に対するアクセス要求を調停するアクセス調停回路ACと、記憶回路MEMとを備えており、バスマスタBM0,BM1は、共通のバスを利用してバススレーブBS0,BS1にアクセスする。バスマスタBM0,BM1は、例えばCPUやDMAコントローラであり、バススレーブBS0,BS1は、例えばメモリ、UART、あるいはDRAMコントローラである。
図2は、記憶回路MEM及びアクセス調停回路ACの構成を示すブロック図である。図2に示されるように、記憶回路MEMはレジスタREG0,REG1を備えており、アクセス調停回路ACは、許容待ち時間更新回路AWCと、アクセス要求受付け回路ARRとを備えている。レジスタREG0,REG1は、バスマスタBM0が出力する許容待ち時間情報AWI0,AWI1をそれぞれ記憶する。そして、バスマスタBM0は、レジスタREG0内の許容待ち時間情報AWI0及びレジスタREG1内の許容待ち時間情報AWI1を書き換え可能であり、それらの内容を制御する。
許容待ち時間更新回路AWCはカウンタCT0,CT1を備えており、許容待ち時間情報AWI0,AWI1に基づいて、各バスマスタBM0,BM1のアクセス要求の許容待ち時間を更新する。ここで、許容待ち時間とは、バスマスタから発行されたバススレーブに対するアクセス要求が受付けられるまでの許容時間である。例えば、ある時点での許容待ち時間が100μsであれば、バスマスタのアクセス要求は以後100μs以内に受付けられれば良いことになる。従って、アクセス要求が出力されてからそれが受付けられるまでの間においては、許容待ち時間は時間の経過とともに小さくなる。
また、許容待ち時間情報AWI0は、バスマスタBM0からアクセス要求が発行された際の当該アクセス要求の許容待ち時間を決定するための時間情報であって、許容待ち時間情報AWI1は、バスマスタBM1からアクセス要求が発行された際の当該アクセス要求の許容待ち時間を決定するための時間情報である。
アクセス要求受付け回路ARRは、比較器COMと、リクエストセレクタRQSと、制御信号セレクタCSSとを備えており、バスマスタBM0,BM1のアクセス要求が競合する際に、許容待ち時間更新回路AWCで更新された各バスマスタBM0,BM1の許容待ち時間を比較し、その比較結果に基づいて当該アクセス要求を調停する。
カウンタCT0には、レジスタREG0が出力する許容待ち時間情報AWI0と、バスマスタBM0が出力するアクセス要求信号RQ0と、リクエストセレクタRQSが出力するグラント信号GRT0が入力される。一方、カウンタCT1には、レジスタREG1が出力する許容待ち時間情報AWI1と、バスマスタBM1が出力するアクセス要求信号RQ1と、リクエストセレクタRQSが出力するグラント信号GRT1が入力される。そして、カウンタCT0,CT1は、図示しないシステムクロックCLKに基づいてクロック入力ごとに、つまりシステムクロックCLKの立ち上がりごとにカウンタ値をダウンカウントする。
なお、バスマスタBM0は、アクセス要求信号RQ0を“1”に設定することによってバススレーブBS0,BS1に対するアクセス要求を出力する。また、バスマスタBM1は、アクセス要求信号RQ1を“1”に設定することによってバススレーブBS0,BS1に対するアクセス要求を出力する。
アクセス要求受付け回路ARRの比較器COMは、カウンタCT0からのカウンタ出力値COUT0と、カウンタCT1からカウンタ出力値COUT1とを比較して、その比較結果に基づいて、バスマスタBM0,BM1のどちらのアクセス要求の受付けを優先させるかを示す優先順位値PRVを生成して出力する。リクエストセレクタRQSは、バスマスタBM0からのアクセス要求信号RQ0と、バスマスタBM1からのアクセス要求信号RQ1と、比較器COMからの優先順位値PRVと、後述するグラント信号GRT10とが入力され、それらの信号に基づいて、グラント信号GRT0,GRT1を生成して出力する。グラント信号GRT0が“1”のとき、バスマスタBM0のアクセス要求が受付けられ、グラント信号GRT1が“1”のとき、バスマスタBM1のアクセス要求が受付けられる。
制御信号セレクタCSSは、リクエストセレクタRQSからのグラント信号GRT0,GRT1に基づいて、バスマスタBM0が出力する制御信号CNT0と、バスマスタBM1が出力する制御信号CNT1とのどちらか一方を制御信号CNT10として出力する。これにより、バスマスタBM0,BM1のどちらか一方のアクセス要求が受付けられる。また、制御信号セレクタCSSはアクセス要求信号RQ10も出力する。なお、制御信号CNT0,CNT1は、バススレーブBS0,BS1を制御するための信号であって、それぞれライトデータ信号、アドレス信号、リード信号及びライト信号などが含まれている。
図1に示されるように、本実施の形態1に係るアクセス制御装置には、アドレスデコーダADとAND回路10とリードセレクタRSが更に設けられている。アドレスデコーダADは、制御信号セレクタCSSからのアクセス要求信号RQ10が“1”を示すと、制御信号CNT10に含まれるアドレス信号のうちの上位アドレス信号をデコードしてチップセレクト信号CS0,CS1を生成して出力する。
バススレーブBS0にはチップセレクト信号CS0が入力され、当該信号が“1”のときバススレーブBS0が選択される。一方、バススレーブBS1にはチップセレクト信号CS1が入力され、当該信号が“1”のときバススレーブBS1が選択される。そして、各バススレーブBS0,BS1には、制御信号CNT10に含まれる上位アドレス信号以外の信号が入力される。
また、バススレーブBS0は、自身の動作状態に基づいてグラント信号GRT20を出力し、バススレーブBS1も、自身の動作状態に基づいてグラント信号GRT21を出力する。例えば、バススレーブBS0,BS1は、バスマスタBM0,BM1からアクセスされている場合や初期動作を行っている場合に、グラント信号GRT20,GRT21を“0”に設定して、その設定期間はアクセス要求の受付けを行わない。
AND回路10は、グラント信号GRT20,GRT21の論理積を演算してその結果をグラント信号GRT10としてリクエストセレクタRQSに出力する。従って、グラント信号GRT10が“0”を示す際、バススレーブBS0,BS1の両方に対するアクセスが禁止されていることになる。
本実施の形態1では、バスマスタBM0,BM1は、アクセス調停回路ACとバススレーブBS0,BS1との間の信号線の束を共通バスとして利用し、当該共通バスを利用してバススレーブBS0,BS1にアクセスする。
また、リードセレクタRSは、アドレスデコーダADが出力する、アクセス中のバススレーブを示す制御信号CNTSに基づいて、バススレーブBS0,BS1がそれぞれ出力するリードデータ信号RDD20,RDD21のどちらか一方をリードデータRDD10としてバスマスタBM0,BM1に出力する。
次に、許容待ち時間更新回路AWC及びアクセス要求受付け回路ARRの動作について詳細に説明する。図3は許容待ち時間更新回路AWCのカウンタCT0の動作を、図4はアクセス要求受付け回路ARRの比較器COMの動作を、図5はリクエストセレクタRQSの動作を、図6は制御信号セレクタCSSの動作をそれぞれ示している。なお、図中の「−」は任意の値で良いことを示している。
図3の動作1に示されるように、アクセス要求信号RQ0が“0”のときには、カウンタCT0のカウンタ出力値COUT0は“0”となり、次のクロックが入力された際のカウンタ値も“0”となる。後述の説明からも理解できるように、アクセス要求信号RQ0が“0”のときには、カウンタ出力値COUT0はリクエストセレクタRQSの出力に影響を与えないため、カウンタ出力値COUT0の値は“0”以外でも問題とならない。
また、図3の動作2,3に示されるように、アクセス要求信号RQ0が“1”の場合では、1クロック前のアクセス要求信号RQ0及びグラント信号GRT0がともに“0”のとき、あるいは1クロック前のアクセス要求信号RQ0及びグラント信号GRT0がともに“1”のときには、カウンタCT0は、許容待ち時間情報AWI0が示す値βをカウンタ値に設定して、それをカウンタ出力値COUT0として出力する。そして、次のクロックが入力された際にはカウンタ値をダウンカウントして(β−1)に設定する。なお、β=0のときには、次のクロックが入力された際のカウンタ値は“0”となる。また、本実施の形態1では、許容待ち時間情報AWI0,AWI1は、システムクロックCLKのクロック数で表現されている。
図3の動作4に示されるように、アクセス要求信号RQ0が“1”の場合であって、1クロック前のアクセス要求信号RQ0及びグラント信号GRT0がそれぞれ“1”,“0”の場合には、カウンタCT0は、カウンタ出力値COUT0として現状態のカウンタ値αを出力する。そして、次のクロックが入力された際には、カウンタ値をダウンカウントして(α−1)に設定する。なお、現状態のカウンタ値αが“0”のときには、次のクロックが入力された際のカウンタ値は“0”のままである。
上述の動作2では1クロック前のアクセス要求信号RQ0が“0”であるため、この動作2は、バスマスタBM0から新たなアクセス要求が出力された際の動作を示していることになる。また、上述のように、グラント信号GRT0の“1”はバスマスタBM0のアクセス要求が受付けられることを示しており、1クロック前のグラント信号GRT0が“1”である動作3も、バスマスタBM0から新たなアクセス要求が出力された際の動作を示していることになる。
一方、動作4では、1クロック前のアクセス要求信号RQ0が“1”であるにも関わらず、1クロック前のグラント信号GRT0は“0”であるため、1クロック前ではバスマスタBM0のアクセス要求は受付けられなかったことになる。従って、動作4は、バスマスタBM0のアクセス要求が受付けられなかった際の次のクロック入力での動作を示していることになる。
以上のことから、バスマスタBM0から新たなアクセス要求が出力された際には、カウンタCT0ではカウンタ出力値COUT0として許容待ち時間情報AWI0の値βが出力される。そして、このアクセス要求が受付けられない間は、許容待ち時間情報AWI0の値βがクロック入力ごとにダウンカウントされて、その値がカウンタ出力値COUT0として出力される。その後、当該アクセス要求が受付けられると、次のクロック入力では、アクセス要求信号RQ0の値によってカウンタ出力値COUT0が“0”となったり、許容待ち時間情報AWI0の値βとなったりする。
本実施の形態1では、許容待ち時間情報AWI0が示す値を、バスマスタBM0からアクセス要求が発行された時点での当該アクセス要求の許容待ち時間としている。そして、カウンタCT0は、バスマスタBM0からアクセス要求が発行されてからそれが受付けられるまでの間、時間の経過とともに許容待ち時間情報AWI0が示す値を減少させることによって当該アクセス要求の許容待ち時間を更新している。
なお、許容待ち時間情報AWI1についても同様であり、それが示す値を、バスマスタBM1からアクセス要求が発行された時点での当該アクセス要求の許容待ち時間としている。そして、カウンタCT1もカウンタCT0と同様に動作し、バスマスタBM1からアクセス要求が発行されてからそれが受付けられるまでの間、時間の経過とともに、許容待ち時間情報AWI1が示す値を減少させることによって、バスマスタBM1に関する許容待ち時間を更新している。従って、比較器COMにおいて、カウンタ出力値COUT0,COUT1を比較することによって、その時点でのバスマスタBM0,BM1の許容待ち時間のどちらが少ないかを比較することができ、どちらのアクセス要求を優先させるべきかを判断することができる。その結果、バスマスタBM0,BM1間のアクセス要求の待ち時間を調整できる。
図4に示されるように、比較器COMは、カウンタ出力値COUT0,COUT1を比較し、カウンタ出力値COUT1がカウンタ出力値COUT0以上の場合には、バスマスタBM0のアクセス要求の受付けを優先させるべきと判断して、優先順位値PRVを“0”に設定する。一方、カウンタ出力値COUT1がカウンタ出力値COUT0よりも小さい場合には、バスマスタBM1のアクセス要求の受付けを優先させるべきと判断して、優先順位値PRVを“1”に設定する。なお、本実施の形態1では、カウンタ出力値COUT0とカウンタ出力値COUT1とが同じ値のときには優先順位値PRVを“0”に設定しているが、“1”に設定しても良い。
リクエストセレクタRQSは、図5に示されるように、グラント信号GRT10が“0”のとき、グラント信号GRT0,GRT1をともに“0”に設定する。これにより、バススレーブBS0,BS1の少なくとも一方がアクセス禁止のときには、バスマスタBM0,BM1のアクセス要求はともに受付けられなくなる。
リクエストセレクタRQSは、グラント信号GRT10が“1”であって、バススレーブBS0,BS1の両方に対してアクセスが可能の場合には、アクセス要求信号RQ0,RQ1のどちらか一方が“1”、つまりバスマスタBM0,BM1のどちらか一方がアクセス要求を発行すると、グラント信号GRT0,GRT1のうち、そのアクセス要求を発行しているバスマスタに対応した信号を“1”に設定し、当該アクセス要求を受付ける。
そして、リクエストセレクタRQSは、グラント信号GRT10が“1”の場合には、アクセス要求信号RQ0,RQ1の両方が“1”となり、バスマスタBM0,BM1のアクセス要求が競合すると、優先順位値PRVに基づいてグラント信号GRT0,GRT1のどちらか一方を“1”に設定する。具体的には、バスマスタBM0のアクセス要求の許容待ち時間がバスマスタBM1のそれ以下であって優先順位値PRVが“0”のときには、グラント信号GRT0を“1”に設定して、バスマスタBM0のアクセス要求を受付ける。そして、バスマスタBM1のアクセス要求の許容待ち時間がバスマスタBM0のそれよりも小さく、優先順位値PRVが“1”のときには、グラント信号GRT1を“1”に設定して、バスマスタBM1のアクセス要求を受付ける。
リクエストセレクタRQSからのグラント信号GRT0,GRT1は、バスマスタBM0,BM1にそれぞれ入力される。従って、各バスマスタBM0,BM1は、発行したアクセス要求が受付けられたかどうかを認識することができ、アクセス要求が受付けられなかった場合にはアクセス要求信号を“1”の状態で保持する。
制御信号セレクタCSSは、図6に示されるように、グラント信号GRT0,GRT1の両方が“0”のとき、アクセス要求信号RQ10を“0”に設定する。このとき、制御信号CNT10の値は、バススレーブBS0,BS1やアドレスデコーダADで使用されないため特に規定しない。図6中の「X」はそのことを意味している。また制御信号セレクタCSSは、グラント信号GRT0が“1”のときには、バスマスタBM0のアクセス要求が受付けられているため、アクセス要求信号RQ10を“1”に設定し、制御信号CNT0を制御信号CNT10として出力する。一方、グラント信号GRT1が“1”のときには、バスマスタBM1のアクセス要求が受付けられているため、アクセス要求信号RQ10を“1”に設定し、制御信号CNT1を制御信号CNT10として出力する。なお、図6中の符号“A”は制御信号CNT0の内容を説明の便宜上示す符号であり、符号“B”は制御信号CNT1の内容を説明の便宜上示す符号である。
アドレスデコーダADは、アクセス要求信号RQ10が“0”ときには、バススレーブBS0,BS1に対するアクセス要求は無いものと判断して、チップセレクト信号CS0,CS1をともに“0”に設定する。従って、このときには、バススレーブBS0,BS1は両方とも読み出し又は書き込みのアクセス動作を行わない。そして、アドレスデコーダADは、アクセス要求信号RQ10が“1”のときには、制御信号CNT10に含まれる上位アドレスをデコードして、チップセレクト信号CS0,CS1のうちその値に応じた方を“1”に設定する。これにより、バススレーブBS0,BS1のどちらか一方が読み出し又は書き込みのアクセス動作を行う。また、バススレーブBS0,BS1のそれぞれには、制御信号CNT10に含まれる信号のうち上位アドレスを除く信号が入力される。
バススレーブに対するデータの読み出し動作においては、制御信号CNT10に含まれるリード信号が“1”を示すと、バススレーブBS0,BS1のうちのチップセレクト信号CS0,CS1で選択された方は、入力された下位アドレス信号が示す記憶領域に格納されているデータを出力する。そして、アクセス要求を出力したバスマスタは、バススレーブから出力されたデータを受け取る。一方、バススレーブに対するデータの書き込み動作においては、制御信号CNT10に含まれるライト信号が“1”を示すと、バススレーブBS0,BS1のうちのチップセレクト信号CS0,CS1で選択された方は、入力された下位アドレス信号が示す記憶領域に、受け取ったデータ信号を書き込む。
次に、図7を参照して、バスマスタBM0,BM1のアクセス要求が調停されるまでの本実施の形態1に係るアクセス制御装置の一連の動作について説明する。図7は、本アクセス制御装置内で生成される信号の波形を示すタイミングチャートである。図7では、説明の便宜上、制御信号CNT0の内容を符号A0〜A2で示し、制御信号CNT1の内容を符号B0,B1で示している。以下では、許容待ち時間情報AWI0が示す値が“8”に設定され、許容待ち時間情報AWI1が示す値が“11”に設定されている場合の動作例について説明する。
図7に示されるように、クロックT2においては、バスマスタBM0から新たなアクセス要求が発行されているため、許容待ち時間情報AWI0が示す値がそのときの許容待ち時間に採用され、カウンタCT0はカウンタ出力値COUT0として許容待ち時間情報AWI0の値“8”を出力する。
また、クロックT2においては、バスマスタBM1からも新たなアクセス要求が発行されているため、許容待ち時間情報AWI1が示す値がそのときの許容待ち時間に採用され、カウンタCT1はカウンタ出力値COUT1として許容待ち時間情報AWI1の値“11”を出力する。
そして、クロックT2においては、バススレーブ側からのグラント信号GRT10が“1”の状態で、アクセス要求信号RQ0,RQ1がともに“1”を示しているため、リクエストセレクタRQSは、優先順位値PRVに基づいてグラント信号GRT0,GRT1のどちらを“1”に設定するかを決定する。クロックT2では、カウンタ出力値COUT0の方がカウンタ出力値COUT1よりも小さいため、優先順位値PRVは“0”を示す。従って、グラント信号GRT0が“1”となり、グラント信号GRT1が“0”となり、バスマスタBM0のアクセス要求が受付けられる。その結果、制御信号セレクタCSSからは、制御信号CNT10として、バスマスタBM0の制御信号CNT0が出力される。
一方、バスマスタBM1のアクセス要求はクロックT2では受付けられなかったため、クロックT3では、カウンタ出力値COUT1が“11”から“10”に減少する。これにより、クロックT2で発行されたバスマスタBM1のアクセス要求の許容待ち時間が更新される。この許容待ち時間の更新は、当該バスマスタBM1のアクセス要求が受付けられるまで、本例ではクロックT9まで実行される。
クロックT5においては、バスマスタBM0から新たなアクセス要求が発行されるため、カウンタ出力値COUT0は再び“8”に設定される。クロックT5,T6においては、バススレーブ側のグラント信号GRT10が“0”であるため、バスマスタBM0のアクセス要求は受付けられない。従って、クロックT6では、バスマスタBM0のアクセス要求の許容待ち時間が更新される。そして、クロックT7においては、バススレーブ側のグラント信号GRT10が“1”であるため、優先順位値PRVに基づいてバスマスタBM0,BM1のアクセス要求が調停される。本例では、クロックT7におけるカウンタ出力値COUT0,COUT1はともに“6”であるため優先順位値PRVは“0”となり、バスマスタBM0のアクセス要求が受付けられる。そして、クロックT8では、バスマスタBM0から新たなアクセス要求が発行されるため、カウンタ出力値COUT0は“8”に設定される。
クロックT9では、グラント信号GRT10が“1”であるため、優先順位値PRVに基づいてバスマスタBM0,BM1のアクセス要求が調停される。本例では、クロックT9におけるカウンタ出力値COUT0,COUT1はそれぞれ“7”,“4”であるため、優先順位値PRVは“1”となる。従って、バスマスタBM1のアクセス要求が受付けられる。
クロックT11では、バスマスタBM1から新たなアクセス要求が発行されるため、カウンタ出力値COUT1には“11”が設定される。クロックT12では、グラント信号GRT10が“1”であり優先順位値PRVが“0”であるため、クロックT8で発行されたバスマスタBM0のアクセス要求が受付けられる。そして、クロックT13では、バスマスタBM0からのアクセス要求が出力されていないため、バスマスタBM1のアクセス要求が受付けられる。
以上のように、本実施の形態1に係るアクセス制御装置では、バスマスタBM0,BM1での許容待ち時間を比較して、その比較結果に基づいてバスマスタBM0,BM1のどちらかのアクセス要求が受付けられる。そのため、アクセス要求が競合した際に許容待ち時間が少ないバスマスタにアクセス権を付与することができる。その結果、バスマスタBM0,BM1とバススレーブBS0,BS1間のデータ転送性能を犠牲にすることなく、各バスマスタBM0,BM1のバススレーブBS0,BS1に対するアクセスに要する時間(アクセスレイテンシ)を許容範囲内に収めることができる。
更に、許容待ち時間情報AWI0,AWI1は、記憶情報が書き換え可能な記憶回路MEMに記憶されるため、システム仕様やシステムの動作状態に応じて許容待ち時間情報AWI0,AWI1を更新することができる。従って、バスマスタBM0,BM1とバススレーブBS0,BS1間において、最適なデータ転送性能を実現できる。これにより、例えば、各バスマスタBM0,BM1が動画像データ等の大量のデータをリアルタイムに取り扱う場合であっても、画像表示が不能となる等のシステム破綻を引き起こすことを防止できる。
更に、許容待ち時間情報AWI0,AWI1はバスマスタBM0によって制御されるため、各バスマスタBM0,BM1の動作状況やシステム全体の動作状況に応じて許容待ち時間情報AWI0,AWI1をソフトウェア等で適切に制御することができる。例えば、バスマスタBM0の動作モードとして、バススレーブBS0,BS1との間で頻繁にデータの受け渡しを行うモードM1と、それほどデータの受け渡しを行わないモードM2とが存在する場合、モードM1のときには許容待ち時間情報AWI0が示す値を小さくして、バスマスタBM0のアクセス要求が頻繁に受付けられるようにし、モードM2の場合には、許容待ち時間情報AWI0が示す値を大きくして、バスマスタBM1のアクセス要求が受付けられやすくすることができる。
また、バスマスタBM0は、バスマスタBM1からの指示を受けて、許容待ち時間情報AWI1をも最適に制御することができるし、本アクセス制御装置が組み込まれるシステムの全体を管理する上位の制御装置からの指示を受けて許容待ち時間情報AWI0,AWI1を制御し、バスマスタBM0,BM1間のアクセス要求の待ち時間の調整をシステム全体の動作状況に応じて適切に制御することもできる。
また、本実施の形態1では、許容待ち時間情報AWI0,AWI1が示す値をアクセス要求が発行された時点での許容待ち時間とし、時間の経過とともにそれを減少させて許容待ち時間を更新している。そのため、毎回のアクセス要求の待ち時間を許容待ち時間情報AWI0,AWI1が示す時間内に収めることができる。図7の例では、バスマスタBM0の毎回のアクセス要求の待ち時間を8クロック以内にすることができるし、バスマスタBM1の毎回のアクセス要求の待ち時間を11クロック以内にすることができる。
なお、本実施の形態1では、バスマスタBM0が許容待ち時間情報AWI0,AWI1の両方を制御しているが、バスマスタBM0がレジスタREG0内の許容待ち時間情報AWI0を、バスマスタBM1がレジスタREG1内の許容待ち時間情報AWI1をそれぞれ制御してもよい。更に、バスマスタBM1が許容待ち時間情報AWI0,AWI1の両方を制御しても良い。
また、本実施の形態1では、バスマスタが2つの場合について説明したが、本発明はこれに限定されるわけではなく、それよりも多いバスマスタが存在する場合にも適用することができる。以下に、4つのバスマスタBM0〜BM3を備えるアクセス制御装置に本発明を適用する場合について説明する。図8は、本実施の形態1に係るアクセス制御装置の変形例を示すブロック図であって、具体的には記憶回路MEM及びアクセス調停回路ACの構成を示している。
図8に示されるように、4つのバスマスタBM0〜BM3が存在する場合には、記憶回路MEMにはレジスタREG2,REG3が追加される。レジスタREG2,REG3は、バスマスタBM0が出力する許容待ち時間情報AWI2,AWI3をそれぞれ記憶する。本例では、許容待ち時間情報AWI2は、バスマスタBM2からアクセス要求が発行された際の当該アクセス要求の許容待ち時間を決定するための時間情報であって、許容待ち時間情報AWI2の値を、バスマスタBM2からアクセス要求が発行された時点での当該アクセス要求の許容待ち時間として採用する。また、許容待ち時間情報AWI3は、バスマスタBM3からアクセス要求が発行された際の当該アクセス要求の許容待ち時間を決定するための時間情報であって、許容待ち時間情報AWI3の値を、バスマスタBM3からアクセス要求が発行された時点での当該アクセス要求の許容待ち時間として採用する。
許容待ち時間更新回路AWCにはカウンタCT2,CT3が追加される。カウンタCT2には、レジスタREG2が出力する許容待ち時間情報AWI2と、バスマスタBM2が出力するアクセス要求信号RQ2と、リクエストセレクタRQSが出力するグラント信号GRT2が入力される。一方、カウンタCT3には、レジスタREG3が出力する許容待ち時間情報AWI3と、バスマスタBM3が出力するアクセス要求信号RQ3と、リクエストセレクタRQSが出力するグラント信号GRT3が入力される。
カウンタCT2,CT3は、カウンタCT0,CT1と同様に動作する。つまり、カウンタCT2は、バスマスタBM2からアクセス要求が発行されてからそれが受付けられるまでの間、時間の経過とともに許容待ち時間情報AWI2が示す値を減少させることによって当該アクセス要求の許容待ち時間を更新し、その更新した許容待ち時間をカウンタ出力値COUT2として出力する。また、カウンタCT3は、バスマスタBM3からアクセス要求が発行されてからそれが受付けられるまでの間、時間の経過とともに許容待ち時間情報AWI3が示す値を減少させることによって許容待ち時間を更新し、その更新した許容待ち時間をカウンタ出力値COUT3として出力する。
図8に示されるように、比較器COMには、カウンタCT0〜CT3から出力されるカウンタ出力値COUT0〜COUT3が入力される。そして、比較器COMは、4つのカウンタ出力値COUT0〜COUT3における任意の2つの値の比較を全組み合わせについて行い、それらの比較結果を優先順位値PRVxyとして出力する。ここで、優先順位値の符号に含まれるx,yは変数であって、優先順位値が示す比較結果のもとになる2つのカウンタ出力値の末尾の符号に対応している。例えば、優先順位値PRV03は、カウンタ出力値COUT0とカウンタ出力値COUT3との比較結果を示し、優先順位値PRV23は、カウンタ出力値COUT2とカウンタ出力値COUT3との比較結果を示している。そして、(x,y)の組みとしては、(0,1),(0,2),(0,3),(1,2),(1,3),(2,3)の6通り存在する。
図9は、比較器COMが出力する優先順位値PRVxyの値を示す図である。図9に示されるように、比較器COMは、カウンタ出力値COUTxがカウンタ出力値COUTy以下の場合には、バスマスタBMxのアクセス要求の受付けを優先させるべきと判断して、優先順位値PRVxyを“0”に設定する。そして、カウンタ出力値COUTxがカウンタ出力値COUTyよりも大きい場合には、バスマスタBMyのアクセス要求の受付けを優先させるべきと判断して、優先順位値PRVxyを“1”に設定する。
このように優先順位値PRVxyが“0”のときには、バスマスタBMxのアクセス要求の優先順位がバスマスタBMyよりも勝っており、優先順位値PRVxyが“1”のときには、バスマスタBMyのアクセス要求の優先順位がバスマスタBMxよりも勝っている。
リクエストセレクタRQSは、図8に示されるように、比較器COMからの優先順位値PRVxyと、バスマスタBM0〜BM3からのアクセス要求信号RQ0〜RQ3と、グラント信号GRT10とに基づいて、グラント信号GRT0〜GRT3を出力する。グラント信号GRT0が“1”のとき、バスマスタBM0のアクセス要求が優先して受付けられ、グラント信号GRT1が“1”のとき、バスマスタBM1のアクセス要求が優先して受付けられ、グラント信号GRT2が“1”のとき、バスマスタBM2のアクセス要求が優先して受付けられ、グラント信号GRT3が“1”のとき、バスマスタBM3のアクセス要求が優先して受付けられる。
図10は図8のリクエストセレクタRQSの動作を示す図であって、図10(a)〜10(d)はグラント信号GRT0〜GRT3の値をそれぞれ示している。図10(a)に示されるように、バススレーブBS0,BS1についてアクセスが禁止されておりグラント信号GRT10が“0”を示すとき、あるいはバスマスタBM0からアクセス要求が発行されずにアクセス要求信号RQ0が“0”のときには、グラント信号GRT0は“0”を示す。また、アクセス要求信号RQ1が“1”かつ優先順位値PRV01が“1”のとき、又はアクセス要求信号RQ2が“1”かつ優先順位値PRV02が“1”のとき、又はアクセス要求信号RQ3が“1”かつ優先順位値PRV03が“1”のときのいずれかを満たす場合には、グラント信号GRT0は“0”となる。そして、それ以外の場合には、グラント信号GRT0が“1”となる。つまり、バスマスタBM1〜BM3の各々について、アクセス要求が出力されずにアクセス要求信号RQz0が“0”の場合か、バスマスタBM0のアクセス要求の優先順位が、他のバスマスタBMz0よりも勝っている場合のいずれかを満たす場合は、バスマスタBM0のアクセス要求を受付ける。ここで符号RQz0,BMz0の“z0”は、バスマスタBM1〜BM3に対応した1〜3を示す。
図10(b)〜(d)に示されるように、グラント信号GRT1〜GRT3が示す値についてもグラント信号GRT0と同様である。従って、バスマスタBM0,BM2,BM3の各々について、アクセス要求信号RQz1(z1=0,2,3)が“0”の場合か、バスマスタBM1のアクセス要求の優先順位が、他のバスマスタBMz1よりも勝っている場合のいずれかを満たす場合は、バスマスタBM1のアクセス要求が受付けられる。同様に、バスマスタBM0,BM1,BM3の各々について、アクセス要求が出力されずにアクセス要求信号RQz2(z2=0,1,3)が“0”の場合か、バスマスタBM2のアクセス要求の優先順位が、他のバスマスタBMz2よりも勝っている場合のいずれかを満たす場合は、バスマスタBM2のアクセス要求が受付けられ、バスマスタBM0〜BM2の各々について、アクセス要求が出力されずにアクセス要求信号RQz3(z3=0〜2)が“0”の場合か、バスマスタBM3のアクセス要求の優先順位が、他のバスマスタBMz3よりも勝っている場合のいずれかを満たす場合は、バスマスタBM3のアクセス要求が受付けられる。
図11は図8の制御信号セレクタCSSの動作を示す図である。なお図11では、説明の便宜上、制御信号CNT0〜CNT3の内容を符号A〜Dでそれぞれ示している。図11に示されるように、制御信号セレクタCSSは、グラント信号GRT0〜GRT3のすべてが“0”の場合には、アクセス要求信号RQ10を“0”に設定する。このとき、制御信号CNT10の値は、バススレーブBS0,BS1やアドレスデコーダADで使用されていないため特に規定しない。図11中の“X”はそれを意味している。そして、グラント信号GRT0〜GRT3のいずれか一つが“1”の場合には、アクセス要求信号RQ10を“1”に設定し、バスマスタBM0〜BM3からそれぞれ出力される制御信号CNT0〜CNT3のうち、“1”を示すグラント信号に対応したバスマスタからの制御信号を制御信号CNT10として出力する。
以上の構成により、バスマスタが3つ以上存在する場合であっても、上述のような効果を得ることができる。
実施の形態2.
上述の実施の形態1に係るアクセス制御装置では、バスマスタから出力される毎回のアクセス要求の待ち時間が許容待ち時間情報が示す時間以内になるように制御されている。しかしながら、本発明が適用されるアプリケーションによっては、毎回のアクセス要求の待ち時間はそれほど問題とならず、アクセス要求が受付けられる平均的な時間間隔が所定時間内に収まっていれば良いような場合も存在する。このような場合においては、実施の形態1のように毎回のアクセス要求の待ち時間を所定時間内に収める必要はなく、逆にそのように制御した場合には、必要以上の頻度で特定のバスマスタからのアクセス要求が受付けられるようになり、複数のバスマスタ間のアクセス権獲得回数のバランスが悪化し、結果的にシステム性能を低下させる場合がある。
例えば、許容待ち時間情報AWI0が示す値が“5”であって、許容待ち時間情報AWI1が示す値が“15”である場合、各バスマスタBM0,BM1から同時に新たなアクセス要求が発行された場合には、バスマスタBM0の許容待ち時間の方が小さいため、バスマスタBM0のアクセス要求がまず優先的に受付けられる。そして、バスマスタBM1のアクセス要求は受付けられなかったため、次のクロック入力においては、バスマスタBM1における許容待ち時間は“14”となる。つまり、カウンタ出力値COUT1は“14”となる。このときに、バスマスタBM0から新たなアクセス要求が出力された場合にはカウンタ出力値COUT0は“5”となる。このカウンタ出力値COUT0とカウンタ出力値COUT1とを比較すると、カウンタ出力値COUT0の方が小さいため、バスマスタBM1のアクセス要求が受付けられずに、再びバスマスタBM0のアクセス要求が受付けられる。
そして、バスマスタBM1のアクセス要求は受付けられなかったため、次のクロック入力においてはカウンタ出力値COUT1は“13”となるが、このときに、バスマスタBM0から新たなアクセス要求が出力された場合には、カウンタ出力値COUT1の方がカウンタ出力値COUT0よりもまだ大きいので、再びバスマスタBM0のアクセス要求が受付けられる。
このように、実施の形態1のように毎回のアクセス要求の待ち時間を所定時間内に収めるように制御した場合には、必要以上の頻度で特定のバスマスタからのアクセス要求が受付けられるようになり、複数のバスマスタ間のアクセス権獲得回数のバランスが悪化する。そこで、本実施の形態2では、毎回のアクセス要求の待ち時間は問題とならず、アクセス要求が受付けられる平均時間間隔が所定時間内に収まっていれば良いようなアプリケーションに適したアクセス制御装置を提供する。
図12は、本実施の形態2に係るアクセス制御装置におけるカウンタCT0の動作を示す図である。本実施の形態2に係るアクセス制御装置は、実施の形態1に係るアクセス制御装置と比較して、基本的には、カウンタCT0,CT1の動作が異なるだけである。以下では、実施の形態1との相違点だけを説明する。
図12に示されるように、本実施の形態2に係るカウンタCT0は、バスマスタBM0からアクセス要求が出力されない場合(動作5)、あるいはアクセス要求が受付けられずに待たされている場合(動作8)には、現状態のカウンタ値αをカウンタ出力値COUT0として出力し、次のクロックが入力された際にはカウンタ値αをダウンカウントする。一方、バスマスタBM0から新たなアクセス要求が出力された際には(動作6,7)、現状態のカウンタ値αに許容待ち時間情報AWI0が示す値βを足し合わせた値(α+β)を新たなカウンタ値として設定し、それをカウンタ出力値COUT0として出力する。そして、次のクロックが入力された際にはカウンタ値をダウンカウントする。
なお、動作5,8において、現状態のカウンタ値が“0”の場合には、次のクロック入力でのカウンタ値も“0”となる。また、動作6,7においては、値(α+β)がカウンタCT0に設定可能な値の最大値を越える場合には、カウンタ出力値COUT0は当該最大値となる。更に、動作6,7においては、カウンタ出力値COUT0の値(α+β)が“0”の場合には、次のクロックが入力された際にはカウンタ値は“0”となり変化しない。
このように、本実施の形態2に係るカウンタCT0は、バスマスタBM0から新たなアクセス要求が発行された際には、許容待ち時間情報AWI0の値に現在のカウンタ値を足し合わせている。本実施の形態2では、この足し合わせた値を、新たなアクセス要求が発行された時点での許容待ち時間として採用している。そして、上述の動作8に示されるように、アクセス要求が待たされている間は、当該足し合わせた値を時間の経過とともに減少させ、これによって許容待ち時間を更新し、それをカウンタ出力値COUT0として出力している。
なお、本実施の形態2に係るカウンタCT1もカウンタCT0と同様に動作し、バスマスタBM1から新たなアクセス要求が発行された際には、許容待ち時間情報AWI1の値に現在のカウンタ値を足し合わせ、この足し合わせた値を時間の経過とともに減少させることによって当該アクセス要求の許容待ち時間を更新している。そして、更新した許容待ち時間をカウンタ出力値COUT1として出力している。
また、本実施の形態2に係るカウンタCT0,CT1では、上記動作5からも理解できるように、対応するバスマスタのアクセス要求が受付けられた後も、当該対応するバスマスタが次のアクセス要求を発行するまで、カウンタ値を継続してダウンカウントしている。
以上のように、本実施の形態2では、バスマスタから新たなアクセス要求が発行された際には、許容待ち時間情報が示す値に現在のカウンタのカウンタ値を足し合わせた値をその時点での許容待ち時間としているため、前回のアクセス要求が受付けられた際に残存していた許容待ち時間の少なくとも一部を、新たなのアクセス要求が発行された時点での許容待ち時間に組み入れることができる。その結果、特定のバスマスタのアクセス要求が必要以上の頻度で受付けられることを防止できるとともに、アクセス要求が受付けられる平均時間間隔を所定時間以内にすることができる。以下に、このことについて詳細に説明する。
図13は、本実施の形態2に係るアクセス制御装置内で生成される信号の波形を示すタイミングチャートである。図13では、許容待ち時間情報AWI0の値が“8”に設定され、許容待ち時間情報AWI1の値が“11”に設定されている場合のタイミングチャートが示されている。
図13に示されるように、クロックT2においては、バスマスタBM0から新たなアクセス要求が発行されているため、カウンタCT0は、現在のカウンタ値“0”に許容待ち時間情報AWI0の値“8”を足し合わせた値“8”をカウンタ出力値COUT0として出力する。また、クロックT2においては、バスマスタBM1からも新たなアクセス要求が発行されているため、カウンタCT1は、現在のカウンタ値“0”に許容待ち時間情報AWI1の値“11”を足し合わせた値“11”をカウンタ出力値COUT1として出力する。そして、クロックT2においては、バススレーブ側からのグラント信号GRT10が“1”の状態で、アクセス要求信号RQ0,RQ1がともに“1”を示しているため、リクエストセレクタRQSは優先順位値PRVに基づいてグラント信号GRT0,GRT1のどちらを“1”に設定するかを決定する。クロックT2では、カウンタ出力値COUT0の方がカウンタ出力値COUT1よりも小さいため、優先順位値PRVは“0”を示す。従って、グラント信号GRT0が“1”となり、グラント信号GRT1が“0”となる。その結果、バスマスタBM0のアクセス要求が受付けられる。
一方、バスマスタBM1のアクセス要求はクロックT2では受付けられなかったため、クロックT3では、カウンタ出力値COUT1が“11”から“10”に減少する。これにより、クロックT2で発行されたバスマスタBM1のアクセス要求の許容待ち時間が更新される。また、クロックT3ではカウンタCT0のカウンタ値はダウンカウントされて、カウンタ出力値COUT0は“8”から“7”に減少する。
クロックT5においては、バスマスタBM0から新たなアクセス要求が発行されるため、カウンタCT0は、現在のカウンタ値“5”に許容待ち時間情報AWI0の値“8”を加算した値“13”をこの時点での許容待ち時間として、カウンタ出力値COUT0に“13”を設定している。クロックT5,T6においては、バススレーブ側のグラント信号GRT10が“0”であるため、バスマスタBM0のアクセス要求は受付けられない。従って、クロックT6では、バスマスタBM0のアクセス要求の許容待ち時間が更新される。
クロックT7においては、バススレーブ側のグラント信号GRT10が“1”であるため、優先順位値PRVに基づいてバスマスタBM0,BM1のアクセス要求が調停される。本例では、クロックT7におけるカウンタ出力値COUT0,COUT1はそれぞれ“11”,“6”であるため優先順位値PRVは“1”となり、バスマスタBM1のアクセス要求が受付けられる。
クロックT7ではバスマスタBM0のアクセス要求は受付けられなかったため、クロックT8においてはカウンタ出力値COUT0は減少する。また、クロックT8ではカウンタCT1のカウンタ値はダウンカウントされて、カウンタ出力値COUT0は“6”から“5”に減少する。
クロックT9では、グラント信号GRT10が“1”であり、バスマスタBM1からアクセス要求は発行されていないため、バスマスタBM0のアクセス要求が受付けられる。そして、クロックT10では、バスマスタBM0から新たなアクセス要求が発行されるため、許容待ち時間情報AWI0の値“8”にカウンタCT0の現在のカウンタ値“8”が加算された値“16”がこの時点での許容待ち時間として採用され、カウンタ出力値COUT0は“16”となる。
クロックT11では、バスマスタBM1から新たなアクセス要求が発行されるため、許容待ち時間情報AWI1の値“11”にカウンタCT1の現在のカウンタ値“2”が加算された値“13”がこの時点での許容待ち時間として採用され、カウンタ出力値COUT1は“13”となる。そして、クロックT12では、グラント信号GRT10が“1”であるため、バスマスタBM0,BM1における許容待ち時間が比較され、その比較結果に基づいてアクセス要求が調停される。本例では、優先順位値PRVが“1”であるため、クロックT11で発行されたバスマスタBM1のアクセス要求が受付けられる。
クロックT13では、グラント信号GRT10が“1”であり、バスマスタBM1からはアクセス要求が発行されていないため、バスマスタBM0のアクセス要求が受付けられる。
このように、本実施の形態2に係るアクセス制御装置では、新たなアクセス要求が発行された時点での許容待ち時間には、前回のアクセス要求が受付けられた際に残存していた許容待ち時間の少なくとも一部が組み込まれるため、実施の形態1と比較して、特定のバスマスタのアクセス要求が集中して受付けられられることを回避することができるとともに、バスマスタのアクセス要求が受付けられる時間間隔の平均値が、許容待ち時間情報が示す値以内となる。従って、本実施の形態2に係るアクセス制御装置は、アクセス要求ごとの待ち時間は問題とならず、各バスマスタが所定の平均時間間隔以内でアクセスすれば良いようなアプリケーションに好適である。
なお、図8に示される装置のように、バスマスタが3つ以上存在する場合であっても、各バスマスタに対応するカウンタの機能を同様に変更することによって本発明を適用することができる。
実施の形態3.
一般的に、コスト削減のためにバスのデータ幅を低減するなどによってバスのデータ転送性能にほとんど余裕を持たせることができない場合には、全てのバスマスタのバススレーブに対するアクセスレイテンシを許容範囲内に収めることはできない場合がある。このような場合においては、アクセスレイテンシを許容範囲内に収めることができないことにより生じるシステム破綻を確実に防止するために、当該システム破綻に結びつくバスマスタのアクセス要求を最優先して受付ける必要がある。
実施の形態1,2に係るアクセス制御装置において、このような問題を解決するためには、例えば、システム破綻に結びつくバスマスタに関する許容待ち時間情報の値を適当な分だけ差し引き、この差し引いた値を用いてアクセス調停を行う方法が考えられる。しかしながら、このような方法では、値を小さくした許容待ち時間情報に対応するバスマスタのアクセス要求における許容待ち時間が小さくなるため、当該バスマスタに必要以上の頻度でアクセス権が付与されることになり、他のバスマスタのバススレーブに対するアクセスが受付けられる頻度が低下することがある。
そこで、本実施の形態3では、バスのデータ転送性能に余裕が無い場合であっても、確実にシステム破綻を防止できるとともに、特定のバスマスタのアクセス要求が受付けられる頻度が極端に高くなることを防止することが可能なアクセス制御装置を提供する。
図14は、本実施の形態3に係るアクセス制御装置の比較器COMの動作を示す図である。本実施の形態3に係るアクセス制御装置は、上述の実施の形態2に係るアクセス制御装置と比較して、基本的には、比較器COMの動作が異なるだけである。以下では、実施の形態2との相違点だけを説明する。
本実施の形態3では、バスマスタBM0がシステム破綻に結びつくバスマスタであって、バスマスタBM0,BM1のアクセス要求の受付けに関して予め固定優先順位が定められている。具体的には、バスマスタBM0の方がバスマスタBM1よりもアクセス要求が受付けられる固定優先順位が高い。
図14に示されるように、本実施の形態3に係る比較器COMは、カウンタ出力値COUT0が所定のしきい値th以下の場合には、優先順位値PRVを“0”に設定する。これにより、固定優先順位の高いバスマスタBM0における許容待ち時間がしきい値th以下になると、バスマスタBM0のアクセス要求が優先的に受付けられる。
一方、カウンタ出力値COUT0がしきい値thよりも大きい場合には、実施の形態2と同様に、カウンタ出力値COUT0,COUT1を比較し、その比較結果に基づいて優先順位値PRVを決定する。具体的には、カウンタ出力値COUT0がしきい値thよりも大きい場合であって、カウンタ出力値COUT0がカウンタ出力値COUT1以下の場合には優先順位値PRVを“0”に設定し、カウンタ出力値COUT0がしきい値thよりも大きい場合であって、カウンタ出力値COUT0がカウンタ出力値COUT1よりも大きい場合には優先順位値PRVを“1”に設定する。なお、図14中の「○」はカウンタ出力値COUT0がしきい値th以下であることを示し、「×」はカウンタ出力値COUT0がしきい値thよりも大きいことを示している。
本実施の形態3では、カウンタ出力値COUT0がしきい値th以下の場合には、優先順位値PRVを“0”に設定し、カウンタ出力値COUT0がしきい値thよりも大きい場合には、カウンタ出力値COUT0,COUT1の比較結果に基づいて優先順位値PRVを決定しているが、カウンタ出力値COUT0がしきい値thより小さい場合には優先順位値PRVを“0”に設定し、カウンタ出力値COUT0がしきい値th以上の場合には、カウンタ出力値COUT0,COUT1の比較結果に基づいて優先順位値PRVを決定しても良い。
本実施の形態3に係るしきい値thは比較器COM内でハードウェア的に固定された値である。また、バスマスタBM0,BM1に関する固定優先順位の情報も、本実施の形態3に係るアクセス制御装置内でハードウェア的に固定された値である。なお、記憶情報が書き換え可能なレジスタにしきい値thや固定優先順位の情報を記憶させ、バスマスタBM0,BM1などによってその値を書き換え可能にしても良い。
次に、図15を参照して、バスマスタBM0,BM1のアクセス要求が調停されるまでの本実施の形態3に係るアクセス制御装置の一連の動作について説明する。図15は、本アクセス制御装置内で生成される信号の波形を示すタイミングチャートである。なお以下では、許容待ち時間情報AWI0の値が“8”、許容待ち時間情報AWI1の値が“11”、しきい値thの値が“7”にそれぞれ設定されている場合の動作例について説明する。
図15に示されるように、クロックT2においては、バスマスタBM0,BM1から新たなアクセス要求が発行されているため、カウンタCT0は、現在のカウンタ値“0”に許容待ち時間情報AWI0の値“8”を足し合わせた値“8”を出力し、カウンタCT1は、現在のカウンタ値“0”に許容待ち時間情報AWI1の値“11”を足し合わせた値“11”を出力する。そして、クロックT2においては、バススレーブ側からのグラント信号GRT10が“1”の状態で、アクセス要求信号RQ0,RQ1がともに“1”を示しているため、リクエストセレクタRQSは、優先順位値PRVに基づいてグラント信号GRT0,GRT1のどちらを“1”に設定するかを決定する。クロックT2では、カウンタ出力値COUT0はしきい値thの値“7”よりも大きく、カウンタ出力値COUT0がカウンタ出力値COUT1よりも小さいため、優先順位値PRVは“0”を示す。従って、グラント信号GRT0が“1”となり、グラント信号GRT1が“0”となる。その結果、バスマスタBM0のアクセス要求が受付けられる。
クロックT5においては、バスマスタBM0から新たなアクセス要求が発行されるため、カウンタCT0は、現在のカウンタ値“5”に許容待ち時間情報AWI0の値“8”を加算した値“13”をこの時点での許容待ち時間として出力する。クロックT5〜T11においては、バススレーブ側のグラント信号GRT10が“0”であるため、バスマスタBM0のアクセス要求も、バスマスタBM1のアクセス要求も受付けられない。従って、この間は、バスマスタBM0,BM1のアクセス要求の許容待ち時間は更新される。
クロックT12では、バススレーブ側のグラント信号GRT10が“1”であるため、バスマスタBM0,BM1のアクセス要求のどちらかが受付けられる。クロックT12では、カウンタ出力値COUT1はカウンタ出力値COUT0よりも小さいが、カウンタ出力値COUT0がしきい値thよりも小さくなっているため、優先順位値PRVは“0”となり、バスマスタBM0のアクセス要求が受付けられる。そして、クロックT13では、バスマスタBM0からのアクセス要求は出力されていないため、バスマスタBM1のアクセス要求が受付される。
このように、本実施の形態3では、バスマスタBM0,BM1のうち、アクセス要求の受付けの固定優先順位が高いバスマスタについての許容待ち時間がしきい値thよりも大きい場合には、バスマスタBM0,BM1のアクセス要求の許容待ち時間を比較して、その比較結果に基づいてバスマスタBM0,BM1のいずれかのアクセス要求が受付けられる。そして、固定優先順位が高いバスマスタについての許容待ち時間がしきい値thと同じかそれよりも小さくなると、当該固定優先順位が高いバスマスタのアクセス要求が優先して受け付けられる。従って、本実施の形態3のように、システム破綻を起こす可能性があるバスマスタに高い固定優先順位を割り付けることによって、当該バスマスタのアクセス要求を優先して受付けることができる。その結果、バスのデータ転送性能、言い換えればバスマスタとバススレーブ間のデータ転送性能に余裕が無い場合であっても、確実にシステム破綻を防止できる。更に、許容待ち時間情報AWI0の値を予め小さくする必要がないことから、バスマスタBM0のアクセス要求が受付けられる頻度が極端に高くなることもない。
なお、本実施の形態3では、実施の形態2に係るアクセス制御装置を変形して本発明を説明したが、実施の形態1に係る比較器COMの機能を同様に変更することによって、実施の形態1に係るアクセス制御装置にも本発明を適用することができる。
また、本実施の形態3では、バスマスタが2つの場合について説明したが、図8に示されるように、3つ以上のバスマスタが存在する場合にも本発明を適用することは可能である。図16は、この場合の比較器COMの動作を示す図である。なお、図16に示される例では、カウンタ出力値COUTxに対応するバスマスタBMxよりも、カウンタ出力値COUTyに対応するバスマスタBMyの方が固定優先順位が高いものとする。
図16に示されるように、比較器COMは、固定優先順位の高い方のバスマスタBMxに対応するカウンタ出力値COUTxとしきい値thとを比較する。そして、カウンタ出力値COUTxがしきい値th以下であれば、バスマスタCOUTxの優先順位が勝るように優先順位値PRVxyの値を“0”に設定する。
一方、カウンタ出力値COUTxがしきい値thよりも大きければ、カウンタ出力値COUTxとカウンタ出力値COUTyとを比較し、カウンタ出力値COUTxがカウンタ出力値COUTy以下であれば優先順位値PRVxyを“0”に設定し、カウンタ出力値COUTxがカウンタ出力値COUTyよりも大きければ優先順位値PRVxyを“1”に設定する。
例えば、バスマスタBM0〜BM3の順でアクセス要求の固定優先順位が高く、バスマスタBM0の固定優先順位が最も高い場合、比較器COMは、バスマスタBM0に対応するカウンタ出力値COUT0がしきい値th以下であれば優先順位値PRV01,PRV02,PRV03のすべてを“0”に設定して、バスマスタBM0のアクセス要求の受付けを最優先させる。
また、比較器COMは、カウンタ出力値COUT0がしきい値thよりも大きく、2番目に固定優先順位が高いバスマスタBM1に対応するカウンタ出力値COUT1がしきい値th以下であれば、優先順位値PRV12,PRV13の両方を“0”に設定して、バスマスタBM1〜BM3の間ではバスマスタBM1のアクセス要求の受付けを優先させる。従って、この場合、しきい値thとの比較結果より明らかな様に、カウンタ出力値COUT1がカウンタ出力値COUT0よりも小さいので、リクエストセレクタRQSではバスマスタBM1のアクセス要求の受付けが最優先される。
また、比較器COMは、カウンタ出力値COUT0,COUT1がともにしきい値thよりも大きく、3番目に固定優先順位が高いバスマスタBM2に対応するカウンタ出力値COUT2がしきい値th以下であれば、優先順位値PRV23を“0”に設定して、バスマスタBM2,BM3の間ではバスマスタBM2のアクセス要求の受付けを優先させる。従って、この場合、しきい値thとの比較結果より明らかな様に、カウンタ出力値COUT2がカウンタ出力値COUT0よりも小さく、カウンタ出力値COUT1よりも小さいので、バスマスタBM2のアクセス要求の受付けが最優先される。
以上の説明から理解できるように、バスマスタが3つ以上存在する場合であっても、複数のバスマスタのうち許容待ち時間がしきい値thよりも小さいバスマスタが存在する場合、許容待ち時間がしきい値thよりも小さいバスマスタのうち、固定優先順位が最も高いバスマスタのアクセス要求が最優先して受付けられる。従って、システム破綻を起こす可能性があるバスマスタに最も高い固定優先順位を割り付けることによって、当該バスマスタのアクセス要求を最優先して受付けることができる。その結果、バスマスタとバススレーブ間のデータ転送性能に余裕が無い場合であっても確実にシステム破綻を防止できるとともに、特定のバスマスタのアクセス要求が受付けられる頻度が極端に高くなることも防止できる。
実施の形態4.
上述の実施の形態1〜3に係るアクセス制御装置では、各バスマスタのアクセス要求の許容待ち時間に基づいてアクセス要求を調停しているため、同一のバスマスタからの複数回のアクセス要求を連続して受付けたい場合であっても、その間に他のバスマスタのアクセス要求の受付けが割り込まれることがある。
例えば、バススレーブの一つがSDRAMであって、あるバスマスタが当該SDRAMの同一ロウアドレスに連続してアクセスしたい場合であっても、他のバスマスタからのアクセスがその間に割り込むことがある。その結果、オーバーヘッド時間が増加して、バスマスタとバススレーブ間のデータ転送性能が劣化することがある。
そこで、本実施の形態4では、同一のバスマスタからの複数回のアクセス要求を、他のバスマスタのアクセス要求の受付けを割り込ませること無く連続して受付けることによって、データ転送性能を向上させることが可能なアクセス制御装置を提供する。
図17は、本発明の実施の形態4に係るアクセス制御装置の記憶回路MEM及びアクセス調停回路ACの構成を示すブロック図である。本実施の形態4に係るアクセス制御装置は、上述の実施の形態2に係るアクセス制御装置と比較して、基本的には、アクセス要求受付け回路ARRにロック制御部LC0,LC1が更に設けられ、アクセス要求信号RQ0の代わりにロック制御部LC0が出力するアクセス要求信号RQ00が、アクセス要求信号RQ1の代わりにロック制御部LC1が出力するアクセス要求信号RQ11がリクエストセレクタRQSに入力されているものである。以下では、実施の形態2との相違点について説明する。
図17に示されるように、ロック制御部LC0は、バスマスタBM0が出力するアクセス要求信号RQ0及びロック信号LK0と、ロック制御部LC1が出力するロックフラグLF1と、リクエストセレクタRQSが出力するグラント信号GRT0と、図示しないシステムクロックCLKとが入力され、これらの信号に基づいてアクセス要求信号RQ00をリクエストセレクタRQSに出力する。
また、ロック制御部LC1は、バスマスタBM1が出力するアクセス要求信号RQ1及びロック信号LK1と、ロック制御部LC0が出力するロックフラグLF0と、リクエストセレクタRQSが出力するグラント信号GRT1と、図示しないシステムクロックCLKとが入力され、これらの信号に基づいてアクセス要求信号RQ11をリクエストセレクタRQSに出力する。
ロック信号LK0の“1”は、バスマスタBM0のバススレーブBS0,BS1に対する連続アクセスの要求を示しており、ロック信号LK1の“1”は、バスマスタBM1のバススレーブBS0,BS1に対する連続アクセスの要求を示している。また、ロックフラグLF0の“1”は、バスマスタBM0が排他的に連続してバススレーブBS0,BS1にアクセスしている旨を示し、ロックフラグLF1の“1”は、バスマスタBM1が排他的に連続してバススレーブBS0,BS1にアクセスしている旨を示す。
本実施の形態4に係るリクエストセレクタRQSでは、実施の形態2に係るリクエストセレクタRQSと比較して、グラント信号GRT0,GRT1の値を決定する際に、アクセス要求信号RQ0の値の代わりにアクセス要求信号RQ00の値が使用され、アクセス要求信号RQ1の値の代わりにアクセス要求信号RQ11の値が使用される。
図18はロック制御部LC0の動作説明図である。なお、ロック制御部LC1はロック制御部LC0と同様に動作し、その動作説明図は、図18中のロックフラグLF0,LF1、アクセス要求信号RQ0,RQ00、ロック信号LK0及びグラント信号GRT0を、ロックフラグLF1,LF0、アクセス要求信号RQ1,RQ11、ロック信号LK1及びグラント信号GRT1にそれぞれ置き換えたものとなる。
図18の動作11に示されるように、ロック制御部LC0は、ロックフラグLF1が“1”を示しバスマスタBM1が排他的にバススレーブBS0,BS1に対して連続アクセスしている場合には、バスマスタBM0がアクセス要求を出力しアクセス要求信号RQ0が“1”が示すときであっても、アクセス要求信号RQ00を“0”に設定し、バスマスタBM0のアクセス要求が受付けられないようにする。この場合、次のクロック入力でもロックフラグLF0は“0”のままである。
動作12に示されるように、アクセス要求信号RQ0が“0”を示しバスマスタBM0からアクセス要求が発行されていない場合には、ロック制御部LC0はアクセス要求信号RQ00を“0”に設定する。この場合、次のクロック入力でもロックフラグLF0は“0”のままである。
動作13〜15に示されるように、ロックフラグLF1が“0”の状態で、バスマスタBM0からアクセス要求が発行された場合には、ロック制御部LC0は、アクセス要求信号RQ00を“1”に設定する。動作13のように、ロック信号LK0が“0”でありバスマスタBM0が連続アクセスの要求を行っていない場合には、次のクロック入力でもロックフラグLF0は“0”のままである。また動作14のように、ロック信号LK0が“1”を示すものの、グラント信号GRT0が“0”でありバスマスタBM0のアクセス要求が受付けられなかった場合には、次のクロック入力でもロックフラグLF0は“0”のままである。一方、動作15のように、ロック信号LK0及びグラント信号GRT0がともに“1”を示し、バスマスタBM0が連続アクセスする際の最初のアクセス要求が受付けられた場合には、次のクロック入力ではロックフラグLF0が“1”に設定される。この“1”を示すロックフラグLF0はロック制御部LC1に入力され、以後のバスマスタBM1のアクセス要求は受付けられなくなる。その結果、バスマスタBM0のアクセス要求が排他的に連続して受付けられるようになる。
動作16に示されるように、ロックフラグLF0が“1”の状態で、バスマスタBM0からのアクセス要求が発行されない場合には、アクセス要求信号R00は“0”に設定され、次のクロック入力でのロックフラグLF0は“1”のままである。
動作17〜19に示されるように、ロックフラグLF1が“0”であって、バスマスタBM0からアクセス要求が発行されると、アクセス要求信号RQ00は“1”を示す。動作17に示されるように、ロックフラグLF0が“1”の状態で、ロック信号LK0が“0”を示すものの、グラント信号GRT0が“0”でありバスマスタBM0のアクセス要求が受付けられなかった場合、次のクロック入力でのロックフラグLF0は“1”の状態を保持する。一方、動作18に示されるように、ロック信号LK0及びグラント信号GRT0がそれぞれ“0”,“1”であり、連続アクセスする必要の無い場合のバスマスタBM0のアクセス要求が受付けられたときには、次のクロック入力ではロックフラグLF0が“1”から“0”に変化して、バスマスタBM0の排他的なアクセスは終了する。また、動作19に示されるように、ロックフラグLF0及びロック信号LK0がともに“1”を示し、バスマスタBM0の連続アクセスが実行中である場合には、次のクロック入力ではロックフラグLF0は“1”の状態を保持する。
次に、図18を参照して、バスマスタBM0,BM1のアクセス要求が調停されるまでの本実施の形態4に係るアクセス制御装置の一連の動作について説明する。図18は、本アクセス制御装置内で生成される信号の波形を示すタイミングチャートである。図18では、許容待ち時間情報AWI0の値が“8”に設定され、許容待ち時間情報AWI1の値が“11”に設定されている場合のタイミングチャートが示されている。
図18に示されるように、クロックT5においては、バスマスタBM0から新たなアクセス要求が発行される。それと同時にロック信号LK0が“1”となり、バスマスタBM0のバススレーブBS0,BS1に対する連続アクセスの要求がロック制御部LC0に通知される。そして、クロックT9において、クロックT5で発行されたバスマスタBM0のアクセス要求が受付けられると、次のクロックT10でロックフラグLF0が“1”となり、バスマスタBM0が連続アクセス中であることがロック制御部LC1に通知される。ロック制御部LC1は、ロックフラグLF0が“1”を示す場合には、バスマスタBM1からアクセス要求が発行されたとしても、それを無視して、アクセス要求信号RQ11を“0”に設定する。
クロックT10では、バスマスタBM0から新たなアクセス要求が発行される。このアクセス要求は、クロックT10,T11ではグラント信号GRT10が“0”であるため受付けられないが、クロックT12では、グラント信号GRT10が“1”であり、ロックフラグLF0が“1”であるため、カウンタ出力値COUT0がカウンタ出力値COUT1よりも大きいにも関わらず受付けられている。これにより、バスマスタBM0の複数回のアクセス要求が排他的に連続して受付けられる。
クロックT12では、クロックT10で発行された、連続アクセスを実行する必要がない場合のアクセス要求が受付けられているため、次のクロックT13ではロックフラグLF0は“1”から“0”に変化し、バスマスタBM0の連続アクセスが終了する。
以上のように、本実施の形態4では、カウンタ出力値COUT0,COUT1の比較結果と、バスマスタBM0,BM1の連続アクセスの要求とに基づいて、バスマスタBM0,BM1のいずれか一つのアクセス要求を、他のバスマスタのアクセス要求を割り込ませること無く連続して受付けている。従って、各バスマスタの意思表示に応じて、同一のバスマスタの複数回のアクセス要求を排他的に連続して受付けることができ、その結果、例えばSDRAMへのアクセスにおいて、あるバスマスタが同一ロウアドレスに連続アクセスする場合などでオーバーヘッド時間を短縮でき、バスマスタとバススレーブ間のデータ転送性能を向上させることができる。
なお、本実施の形態4では、実施の形態2に係るアクセス制御装置に本発明を適用する場合について説明したが、実施の形態1や実施の形態3に係るアクセス制御装置に対して同様の変更を加えることにより、実施の形態1や実施の形態3に係るアクセス制御装置にも本発明を適用することができる。
実施の形態3に係るアクセス制御装置に本発明を適用した場合には、固定優先順位の最も高いバスマスタBM0の許容待ち時間がしきい値thよりも小さくなり優先順位値PRVが“0”となった場合であっても、その際にロックフラグLF1が“1”の場合には、アクセス要求信号R00は“0”であるため、バスマスタBM1のアクセス要求が優先して受付けられる。従って、本発明を実施の形態3に係るアクセス制御装置に適用した場合には、複数のバスマスタのそれぞれが連続アクセスを行っていない状態で、許容待ち時間がしきい値thよりも小さいバスマスタが存在する場合、許容待ち時間がしきい値時間thよりも小さいバスマスタのうち、固定優先順位が最も高いバスマスタのアクセス要求が最優先して受け付けられることになる。
また、バスマスタが3つ以上存在するアクセス制御装置にも本発明を適用することができる。例えば、図8のアクセス制御装置に本発明を適用するためには、まず、上述のロック制御部LC0,LC1と、当該ロック制御部LC0,LC1と同様に動作するロック制御部LC2,LC3を設ける。そして、ロック制御部LC1〜LC3から出力されるロックフラグLF1〜LF3の論理和をロック制御部LC0に入力する。この論理和が“1”を示す場合にはバスマスタBM1〜BM3のいずれかが連続アクセスしていることになることから、ロック制御部LC0はアクセス要求信号RQ0の値に関わらずアクセス要求信号RQ00を“0”に設定する。
同様に、ロックフラグLF0,LF2,LF3の論理和をロック制御部LC1に入力し、ロックフラグLF0,LF1,LF3の論理和をロック制御部LC2に入力し、ロックフラグLF0〜LF2の論理和をロック制御部LC3に入力する。ロック制御部LC1は入力された論理和が“1”のときにはアクセス要求信号RQ1の値に関わらずアクセス要求信号RQ11を“0”に設定し、ロック制御部LC2は入力された論理和が“1”のときにはアクセス要求信号RQ2の値に関わらずアクセス要求信号RQ22を“0”に設定し、ロック制御部LC3は入力された論理和が“1”のときにはアクセス要求信号RQ3の値に関わらずアクセス要求信号RQ33を“0”に設定する。そして、リクエストセレクタRQSは、アクセス要求信号RQ0〜RQ3の値の代わりにアクセス要求信号RQ00〜RQ33の値を用いてグラント信号GRT0〜GRT3の値を決定する。
以上のように構成することにより、バスマスタが3つ以上存在する場合であっても、本実施の形態3に係るアクセス制御装置と同様の効果を得ることができる。
AC アクセス調停回路、ARR アクセス要求受付け回路、AWC 許容待ち時間更新回路、AWI0〜AWI3 許容待ち時間情報、BM0〜BM3 バスマスタ、BS0,BS1 バススレーブ、LK0,LK1 ロック信号、MEM 記憶回路、RQ0〜RQ3 アクセス要求信号。