(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-23
(45)【発行日】2024-05-31
(54)【発明の名称】バスシステムおよびその制御方法
(51)【国際特許分類】
G06F 13/36 20060101AFI20240524BHJP
G06F 12/06 20060101ALI20240524BHJP
G06F 13/16 20060101ALI20240524BHJP
G06F 13/42 20060101ALI20240524BHJP
【FI】
G06F13/36 530B
G06F12/06 550A
G06F13/16 520B
G06F13/42 320Z
(21)【出願番号】P 2019113919
(22)【出願日】2019-06-19
【審査請求日】2022-06-10
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】白石 大介
(72)【発明者】
【氏名】落合 渉
【審査官】田名網 忠雄
(56)【参考文献】
【文献】特開2012-073851(JP,A)
【文献】米国特許第06728816(US,B1)
【文献】国際公開第2011/065354(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/36
G06F 13/16
G06F 12/06
G06F 13/42
(57)【特許請求の範囲】
【請求項1】
マスタと、第1のスレーブと、第2のスレーブと、前記マスタと前記第1のスレーブと前記第2のスレーブとを接続するバスと、を含むバスシステムであって、
前記マスタは、前記第1のスレーブに対して第1のリクエストを発行した後、前記第1のリクエストに対するレスポンスを受信する前に、前記第2のスレーブに対して第2のリクエストを発行可能に構成されており、
前記バスは、
前記第2のリクエストを受信したとき該第2のリクエストの前記第2のスレーブへの転送を許可するか否かを判定する判定手段と、
前記判定手段により前記転送を許可しないと判定されている間、前記第2のリクエストの前記第2のスレーブへの転送を保留する保留手段と、
を有し、
前記判定手段は、前記第1のリクエストに対する第1のレスポンスの返信
の予測タイミングと前記第2のリクエストに対する第2のレスポンスの返信
の予測タイミングとの比較に基づき、前記転送を許可するか否かを判定する
ことを特徴とするバスシステム。
【請求項2】
前記第1のスレーブは、前記第1のリクエストに対する第1のレスポンスの返信タイミングが確定したとき、該確定した旨を示す確定情報を前記判定手段に送信するよう構成されており、
前記判定手段は、前記第1のスレーブから前記確定情報を受信した場合、所与の情報に基づいて、前記第1のレスポンスの返信
の予測タイミングと前記第2のリクエストに対する第2のレスポンスの返信
の予測タイミングとを算出し、前記第2のレスポンスの返信
の予測タイミングが前記第1のレスポンスの返信
の予測タイミングの後になることが保証される場合、前記転送を許可する
ことを特徴とする請求項1に記載のバスシステム。
【請求項3】
前記所与の情報は、
前記第1のスレーブが前記確定情報を送信してから前記第1のレスポンスを返信するまでのレイテンシに関する第1の情報と、
前記判定手段により前記転送が許可されてから前記第2のスレーブが前記第2のレスポンスを返信するまでのレイテンシに関する第2の情報と、
を含む
ことを特徴とする請求項2に記載のバスシステム。
【請求項4】
前記バスは、
前記第1の情報を記憶する第1の記憶手段と、
前記第2の情報を記憶する第2の記憶手段と、
を有する
ことを特徴とする請求項3に記載のバスシステム。
【請求項5】
前記第1のスレーブは、前記第1のスレーブが前記第1のリクエストに対する処理を開始してから前記第1のレスポンスを返信するまでのレイテンシに関する第3の情報と、前記処理に関するタイミング制約に関する第4の情報と、に基づいて前記第1の情報を決定し、該第1の情報を前記確定情報に含めて前記バスに送信するよう構成され、
前記バスは、前記第2の情報を記憶する記憶手段を有する、
ことを特徴とする請求項3に記載のバスシステム。
【請求項6】
前記第1のスレーブは、前記第1のリクエストに対する第1のレスポンスの返信タイミングが前記第2のリクエストに対する第2のレスポンスの返信
の予測タイミングより前になることが確定したとき、該確定した旨を示す確定情報を前記判定手段に送信するよう構成されており、
前記判定手段は、前記第1のスレーブから前記確定情報を受信した場合、前記転送を許可する
ことを特徴とする請求項1に記載のバスシステム。
【請求項7】
前記判定手段は、前記第2のリクエストに対するレスポンスの返信
の予測タイミングが前記第1のリクエストに対するレスポンスの返信
の予測タイミングの後になることを保証する必要がない場合、転送を許可する
ことを特徴とする請求項1に記載のバスシステム。
【請求項8】
前記第1のスレーブおよび前記第2のスレーブはDRAMコントローラであり、
前記第1のリクエスト及び前記第2のリクエストは、両方がDRAMからのデータのリードであるか、又は、両方がDRAMに対するデータのライトである
ことを特徴とする請求項1乃至3及び6の何れか1項に記載のバスシステム。
【請求項9】
マスタと、第1のスレーブと、第2のスレーブと、前記マスタと前記第1のスレーブと前記第2のスレーブとを接続するバスと、を含むバスシステムの制御方法であって、
前記マスタは、前記第1のスレーブに対して第1のリクエストを発行した後、前記第1のリクエストに対するレスポンスを受信する前に、前記第2のスレーブに対して第2のリクエストを発行可能に構成されており、
前記バスが、前記第2のリクエストを受信したとき該第2のリクエストの前記第2のスレーブへの転送を許可するか否かを判定する判定工程と、
前記バスが、前記判定工程により前記転送を許可しないと判定されている間、前記第2のリクエストの前記第2のスレーブへの転送を保留する保留工程と、
を含み、
前記判定工程では、前記第1のリクエストに対する第1のレスポンスの返信
の予測タイミングと前記第2のリクエストに対する第2のレスポンスの返信
の予測タイミングとの比較に基づき、前記転送を許可するか否かを判定する
ことを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、バス制御に関し、特に、マスタによる複数スレーブへの並列アクセスを許容したバスにおける各スレーブからのレスポンスを制御する技術に関するものである。
【背景技術】
【0002】
近年、バスシステムにおいては、データ転送を要求するリクエストと実際のデータ転送であるレスポンスを独立して制御するスプリットトランザクションが導入されている。スプリットトランザクションでは、マスタは複数のスレーブに対して並列にリクエストを発行することが可能になり、データの転送効率を向上させることができる。一方、リクエストを受け取った複数のスレーブは独立して動作しているため、各スレーブがマスタにレスポンスを返すタイミングは異なる。そのため、マスタがリクエストの発行順序と同じ順序(インオーダ)でレスポンスが返されることを想定する場合であっても、リクエストの発行順序とは異なる順序でレスポンスが返されるおそれがある。
【0003】
そこで、レスポンスの順序保証を行うべく、マスタが先行して発行したリクエストに対するレスポンスがスレーブから返されるまで異なるスレーブへのリクエスト発行を保留するバスがある。ただし、先行するリクエストに対するレスポンスがスレーブから返されるまで次のリクエスト発行を保留するため、データの転送効率が低下してしまうことになる。また、特許文献1では、バッファを有し、スレーブから返されたレスポンスを期待する順序に並び替えるバスシステムが提案されている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
上述の特許文献1に記載の技術では、バッファを利用してスレーブからのレスポンスを期待する順序に並び替えることで順序保証をする。しかしながら、近年のマスタは一度のリクエストで大量のデータ転送を要求することが多いため、バッファによりバスの回路規模が大幅に増加してしまうことになる。
【0006】
本発明は、このような問題に鑑みてなされたものであり、複数のリクエストに対するレスポンスの順序を保証可能とするバス制御技術を提供することを目的としている。
【課題を解決するための手段】
【0007】
上述の問題点を解決するため、本発明に係るバスシステムは以下の構成を備える。すなわち、マスタと、第1のスレーブと、第2のスレーブと、前記マスタと前記第1のスレーブと前記第2のスレーブとを接続するバスと、を含むバスシステムであって、
前記マスタは、前記第1のスレーブに対して第1のリクエストを発行した後、前記第1のリクエストに対するレスポンスを受信する前に、前記第2のスレーブに対して第2のリクエストを発行可能に構成されており、
前記バスは、
前記第2のリクエストを受信したとき該第2のリクエストの前記第2のスレーブへの転送を許可するか否かを判定する判定手段と、
前記判定手段により前記転送を許可しないと判定されている間、前記第2のリクエストの前記第2のスレーブへの転送を保留する保留手段と、
を有し、
前記判定手段は、前記第1のリクエストに対する第1のレスポンスの返信の予測タイミングと前記第2のリクエストに対する第2のレスポンスの返信の予測タイミングとの比較に基づき、前記転送を許可するか否かを判定する。
【発明の効果】
【0008】
本発明によれば、複数のリクエストに対するレスポンスの順序を保証可能とするバス制御技術を提供することができる。
【図面の簡単な説明】
【0009】
【
図1】第1実施形態に係るバスシステムの全体構成を示す図である。
【
図3】リクエスト保留判定アルゴリズムのフローチャートである。
【
図6】第2実施形態におけるスレーブの構成を示す図である。
【
図7】第2実施形態における保留判定部の構成を示す図である。
【発明を実施するための形態】
【0010】
以下、添付図面を参照して実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものでするものではない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
【0011】
(第1実施形態)
本発明に係るバスシステムの第1実施形態として、DRAMにアクセスするためのバスシステムを例に挙げて以下に説明する。
【0012】
<システム構成>
図1は、第1実施形態に係るバスシステム100の全体構成を示す図である。バスシステム100では、マスタ110、スレーブ(A)120、スレーブ(B)130がバス140を介して接続されている。
【0013】
スレーブ(A)120とスレーブ(B)130はDRAMコントローラであり、それぞれDRAM(A)121とDRAM(B)131へのアクセスを制御する。なお、ここでは、スレーブ(A)120とスレーブ(B)はDRAMコントローラとしているが、マスタ110からのリクエストを処理してレスポンスを返すスレーブであればDRAMコントローラに限らない。
【0014】
マスタ110は、リクエストをバス140に発行する。バスシステム100では、複数スレーブへの同時(並列)アクセスが許容されている。すなわち、マスタ110は、スレーブ(A)120に対してリクエストを発行した後、当該リクエストに対するレスポンスを受信する前に、スレーブ(B)130に対してリクエストを発行可能に構成されている。リクエストには、「アドレス情報」「Dir」「転送識別子」が含まれる。ここで、Dirは、リクエストがリードかライトかを示すアクセス種別情報である。マスタ110は、同じDirかつ同じ転送識別子を持つ複数のリクエストに対する複数のレスポンスについては、当該複数のリクエストを発行した順序で返されることを期待する。それ以外のリクエストに対するレスポンスは順不同で返されてもよい。
【0015】
バス140は、マスタ110から受信したリクエストをリクエストに含まれるアドレス情報に基づいてスレーブ(A)120またはスレーブ(B)130に転送する。スレーブ(A)120とスレーブ(B)130は、バス140から受信したリクエストからDRAMコマンドを生成し、接続されたDRAM(A)121、DRAM(B)131にアクセスする。また、スレーブ(A)120とスレーブ(B)130は、リクエストの処理が完了するとレスポンスをバス140に送信し、バス140は受信したレスポンスをマスタ110に転送する。
【0016】
バス140は、アクセス管理部141、保留判定部142、保留制御部143を含んでいる。
【0017】
アクセス管理部141は、マスタ110からリクエストを受信すると、受信したリクエストに含まれるアドレス情報から宛先スレーブをデコードし、リクエストを宛先スレーブ毎に振り分けて保留制御部143に転送する。また、アクセス管理部141は、リクエストに関する情報(リクエスト情報)を保留判定部142に通知する。ここで、リクエスト情報は、デコードした宛先スレーブ、転送識別子、Dirを含む。
【0018】
また、アクセス管理部141は、スレーブ(A)120とスレーブ(B)130からレスポンスを受信すると、受信したレスポンスをマスタ110に転送する。レスポンスには対応するリクエストと同じ転送識別子が付与されており、アクセス管理部141はレスポンスに関する情報(レスポンス情報)を保留判定部142に通知する。ここで、リクエスト情報は、転送識別子、Dirを含む。
【0019】
保留判定部142は、リクエスト情報、レスポンス情報、スレーブから通知される確定情報に基づいて、アクセス管理部141が受信したリクエストのスレーブへの転送を保留するか否かを判定する。この結果は、保留判定結果として保留制御部143に通知される。保留判定部142の詳細については、
図2及び
図3を参照して後述する。
【0020】
保留制御部143は、保留判定部142からリクエストの転送を保留することが通知されると、アクセス管理部141から受信したリクエストの宛先スレーブへの転送を保留する。保留判定部142から保留しないことが通知されると、アクセス管理部141から受信したリクエストを宛先スレーブへ転送する。
【0021】
スレーブ(A)120は、保留判定部142に通知されることになる確定情報を生成する確定情報生成部122を含む。確定情報生成部122は、スレーブ(A)120が受信したリクエストに対するレスポンスを返すまでの時間が確定したタイミングで、確定情報を保留判定部142に送信する。確定情報の詳細については、
図4を参照して後述する。
【0022】
図2は、第1実施形態における保留判定部142の構成を示す図である。保留判定部142は、リクエスト情報テーブル1430、レスポンスタイミング確定時レイテンシテーブル1431、アクセス最短レイテンシテーブル1432を含む。また、レスポンスタイミング計測部1433、保留信号生成部1434を更に含む。
【0023】
リクエスト情報テーブル1430は、スレーブに転送されたリクエスト、かつ、対応するレスポンスがスレーブから受信されていないアウトスタンディングリクエストのリクエスト情報を保持する。上述のように、各リクエスト情報は、リクエストのDir、転送識別子、宛先スレーブを含む。
【0024】
保留判定部142は、アクセス管理部141から通知されたリクエスト情報に対するリクエストが宛先スレーブへ転送されると、当該リクエスト情報をリクエスト情報テーブル1430に登録する。また、アクセス管理部141からレスポンス情報が通知されると、当該レスポンス情報に含まれる転送識別子およびDirと同じ転送識別子とDirを持つ最も古いエントリをリクエスト情報テーブル1430から削除する。
【0025】
レスポンスタイミング確定時レイテンシテーブル1431は、バス140に接続される各スレーブについて、スレーブが確定情報を送信してからレスポンスを返すまでのレイテンシ(レスポンスタイミング確定時レイテンシ:第1の情報)を格納する。アクセス最短レイテンシテーブル1432は、バス140に接続される各スレーブについて、保留制御部143でリクエストの転送が許可されてからスレーブがレスポンスを返し始めるまでの最短レイテンシ(アクセス最短レイテンシ:第2の情報)を格納する。ここでは、レスポンスタイミング確定時レイテンシとアクセス最短レイテンシは、スレーブとDirの組み合わせ毎に保持することを想定するが、スレーブやDirにいてレイテンシに違いがない場合は保持する組み合わせを削減してもよい。レスポンスタイミング確定時レイテンシテーブル1431及びアクセス最短レイテンシテーブル1432は、それぞれ、保留判定部142に確保される記憶部に所与の情報として記憶される。
【0026】
レスポンスタイミング計測部1433は、リクエスト情報テーブル1430の各エントリに対応する複数のカウンタと各カウンタのステータスを管理する。レスポンスタイミング計測部1433は、スレーブから確定情報が通知されるとリクエスト情報テーブル1430を検索する。そして、確定情報に含まれる転送識別子およびDirと同じ転送識別子とDirを持ち、かつ、対応するカウンタのステータスが「IDLE」である最も古いエントリを選択する。そして、選択したエントリに対応するカウンタに、対応するエントリの宛先スレーブ、Dirに対応するレスポンスタイミング確定時レイテンシを設定し、カウンタを起動する。この際、起動したカウンタのステータスを「BUSY」に更新する。カウンタはカウントダウンを実行し、カウント値が「0」になると停止する。リクエスト情報テーブル1430からエントリが削除されると、そのエントリに対応するカウンタのステータスを「IDLE」に戻す。
【0027】
<保留判定部142の動作>
図3は、保留判定部142が実行するリクエスト保留判定アルゴリズムのフローチャートである。保留信号生成部1434は、アクセス管理部141からリクエスト情報が通知されると、対応するリクエストの宛先スレーブへの転送について保留判定を行い、保留判定結果を保留制御部143へ通知する。
【0028】
S301では、保留判定部142は、通知されたリクエスト情報と同じDir、同じ転送識別子、異なる宛先スレーブを持つエントリがリクエスト情報テーブル1430にあるか判定する。同じDirであるとは、例えば、両方がDRAMからのデータのリードであるか、又は、両方がDRAMに対するデータのライトであることを意味する。該当するエントリがなければS302に進み、該当するエントリがあればS303に進む。
【0029】
S302では、保留判定部142は、リクエストの転送を許可する。一方、S303では、保留判定部142は、該当するエントリの内で最も新しく登録されたエントリを選択する。
【0030】
S304では、保留判定部142は、選択したエントリに対応するレスポンスタイミング計測部1433のカウンタのステータスが「BUSY」であるか否かを確認する。「BUSY」である場合はS305に進み、「BUSY」でない場合はS307に進む。
【0031】
S305では、保留判定部142は、リクエスト情報のDir、宛先スレーブに対応するアクセス最短レイテンシを入手する。S306では、保留判定部142は、選択したエントリに対応するカウンタ値がアクセス最短レイテンシ以下か否かを判定する。すなわち、新規(後続)のリクエストに対するレスポンスの返信タイミングと、選択したエントリに対するレスポンスの返信タイミングとを算出して比較する。そして、新規のリクエストに対するレスポンスの返信タイミングが、選択したエントリに対するレスポンスの返信タイミングの後になることが保証されるか否かを判定する。カウンタ値がアクセス最短レイテンシ以下である場合はS302に進み、カウンタ値がアクセス最短レイテンシ以下で無い場合はS307に進む。
【0032】
S307では、保留判定部142は、リクエストの転送を保留する。
【0033】
図4は、スレーブの構成を示す図である。ここでは、スレーブ(A)120の構成を示している。
【0034】
リクエスト受信バッファ1200は、バス140から受信したリクエストを格納する。リオーダ部1201は、リクエスト受信バッファ1200に格納されたリクエストをDRAM転送効率が向上する順番で取り出し、リオーダ後リクエストFIFO1202に格納する。このため、リクエストが処理される順番は、リオーダ後リクエストFIFO1202に格納されるまで確定しない。
【0035】
DRAMコマンド生成部1203は、リオーダ後リクエストFIFO1202の先頭リクエストからDRAMコマンドを生成してDRAM(A)121へ送信する。DRAMコマンドには、DRAMのページを制御するためのアクティブコマンドやプリチャージコマンドも含まれ、アクセスするDRAMバンクの状態に応じて生成される。生成し送信したDRAMコマンドがライトコマンドであった場合、DRAMコマンド生成部1203は、レスポンス生成部1206にライトレスポンスの生成を要求する。
【0036】
リフレッシュ要求生成部1204及びキャリブレーション要求生成部1205は、リフレッシュ要求およびキャリブレーション要求をDRAM規格が満たされるように定期的に生成する。DRAMコマンド生成部1203はそれらの要求が生成されると、リオーダ後リクエストFIFO1202に格納されるリクエストの処理に優先して、DRAM(A)121にリフレッシュコマンドやキャリブレーションコマンドを送信する。
【0037】
レスポンス生成部1206は、DRAM(A)121からDRAMリードデータを受信するとリードレスポンスを生成してバス140に送信する。また、DRAMコマンド生成部1203からライトレスポンスの生成を要求されるとライトレスポンスを生成してバス140に送信する。
【0038】
確定情報生成部122は、DRAMコマンド生成部1203がDRAMリードコマンドまたはDRAMライトコマンドをDRAM(A)121に送信するタイミングで、確定情報をバス140に通知する。上述のように、確定情報は、リクエストに対するレスポンスを返すまでの時間が確定したタイミングで通知される。具体的には、リクエストが処理される順番が確定し、当該リクエストに対するコマンドが生成されたタイミングで通知される。確定情報は、対応するリクエストの転送識別子とDirを含む。
【0039】
図5は、第1実施形態におけるバスシステム100の挙動を示す波形図である。
図5は、マスタ110がスレーブ(A)120にリードリクエストを発行し対応するレスポンスを受信する前に、マスタ110がスレーブ(B)130に同じ転送識別子を持つリードリクエストを発行した状況を示している。
【0040】
ここでは、スレーブ(A)120が確定情報(A)を通知してからバス140がレスポンス(A)を受信するまでの「レスポンスタイミング確定時レイテンシ」が「23サイクル」であるとしている。また、スレーブ(B)130にリードであるリクエスト(B)を発行して最短でバス140がレスポンス(B)を受信するまでの「アクセス最短レイテンシ」が「15サイクル」であるとしている。
【0041】
時刻T2において、バス140は、マスタ110からスレーブ(B)130へのリードリクエストを受信する。しかし、同じ転送識別子を持つリードリクエストが既にスレーブ(A)120に発行されているため、バス140は保留判定結果をアサートしてスレーブ(B)130へのリードリクエスト転送を保留する。
【0042】
時刻T3において、スレーブ(A)は、先行するリードリクエストに対するDRAMコマンド(A)をDRAMに送信し、確定情報(A)をバス140に通知する。バス140は、確定情報(A)を受信すると対応するカウンタのステータスを「BUSY」に変更する。そして、カウンタにレスポンスタイミング確定時レイテンシである「23サイクル」を設定してカウントダウンを開始する。
【0043】
時刻T12において、保留判定部142は、カウンタ値がスレーブ(B)130のリード時のアクセス最短レイテンシ(=15サイクル)以下であると判定する。そのため、バス140は、保留判定結果をデアサートして、スレーブ(B)130へリードリクエストを転送する。
【0044】
これにより、マスタ110は、時刻T24~T27においてスレーブ(A)からのレスポンスを受信し、時刻T28~T31においてスレーブ(B)からのレスポンスを受信することになる。
【0045】
なお、バス140が先行リクエストに対するレスポンスがスレーブから返されるまで次のリクエスト発行を保留する場合、スレーブ(B)130へのリードリクエストの発行タイミングはT27となる。一方、本実施形態によれば、スレーブ(B)130へのリードリクエストをT12で発行することが出来る。そのため、データ転送効率の低下を抑制することができる。
【0046】
以上説明したとおり第1実施形態によれば、マスタからスレーブへのリクエストの転送をバスにおいて制御する。特に、先行するリクエストに対応するレスポンスタイミング確定時レイテンシ及び後続のリクエストに対応するアクセス最短レイテンシに基づいて、後続のリクエストの保留期間を決定する。これにより、データ転送効率の低下を抑制しつつ、マスタ110は、期待する順序でレスポンスを受信することができる。また、転送保留の対象となるのはリクエストであるため、バス140は大きなバッファを持つ必要はない。すなわち、複数スレーブへの同時(並列)アクセスを許容したバスシステムにおいて、異なるスレーブからのレスポンスの順序保証を、データ転送効率の低下を抑制しつつ少ない回路規模で実現することが可能になる。
【0047】
なお、上述の説明では、マスタ110が発行するリクエストのバースト長が固定である前提で説明してきたが、バースト長はリクエスト毎に異なってもよい。その場合、レスポンスタイミング確定時レイテンシは、バス140が確定情報を受信してからレスポンスの先頭を受信するまでのレイテンシであるとする。また、リクエスト情報テーブル1430にリクエストのバースト長を保持するフィールドを追加する。レスポンスタイミング計測部1433はカウンタを起動する際、「レスポンスタイミング確定時レイテンシ+バースト長-1」の値をカウンタに設定する。
【0048】
また、保留判定部142が持っているレスポンスタイミング確定時レイテンシテーブルは、スレーブ(A)120およびスレーブ(B)に分けて持ってもよい。その場合、確定情報にはレスポンスタイミング確定時レイテンシが含まれる。
【0049】
(第2実施形態)
第2実施形態では、本発明に係る他の形態のバスシステムについて説明する。バスシステムの全体構成は第1実施形態(
図1)とほぼ同様であるが、スレーブ(A)120と保留判定部142の構成が第1実施形態と異なる。
【0050】
<装置構成>
図6は、第2実施形態におけるスレーブの構成を示す図である。ここでは、スレーブ(A)120の構成を示している。
【0051】
リクエスト受信バッファ1200は、バス140から受信したリクエストを格納する。リオーダ部1201は、リクエスト受信バッファ1200に格納されたリクエストをDRAM転送効率が向上する順番で取り出し、リオーダ後リクエストFIFO1202に格納する。このため、リクエストが処理される順番は、リオーダ後リクエストFIFO1202に格納されるまで確定しない。
【0052】
リオーダ後リクエストFIFO1202は、リクエストを処理される順番で保持する。また、各エントリのリクエストに対して確定情報を送信したかを示す確定情報送信フラグを持つ。リクエストがリオーダ後リクエストFIFO1202に格納されるタイミングで、確定情報送信フラグは未送信であることを示す「NO」が設定される。
【0053】
DRAMコマンド生成部1203は、リオーダ後リクエストFIFO1202の先頭リクエストからDRAMコマンドを生成してDRAM(A)121へ送信する。DRAMコマンドには、DRAMのページを制御するためのアクティブコマンドやプリチャージコマンドも含まれ、アクセスするDRAMバンクの状態に応じて生成される。生成し送信したDRAMコマンドがライトコマンドであった場合、DRAMコマンド生成部1203は、レスポンス生成部1206にライトレスポンスの生成を要求する。
【0054】
リフレッシュ要求生成部1204及びキャリブレーション要求生成部1205は、リフレッシュ要求およびキャリブレーション要求をDRAM規格が満たされるように定期的に生成する。DRAMコマンド生成部1203はそれらの要求が生成されると、リオーダ後リクエストFIFO1202に格納されるリクエストの処理に優先して、DRAM(A)121にリフレッシュコマンドやキャリブレーションコマンドを送信する。
【0055】
レスポンス生成部1206は、DRAM(A)121からDRAMリードデータを受信するとリードレスポンスを生成してバス140に送信する。また、DRAMコマンド生成部1203からライトレスポンスの生成を要求されるとライトレスポンスを生成してバス140に送信する。
【0056】
DRAMコマンド発行時レイテンシテーブル1207は、DRAMコマンドを発行してからバス140にレスポンスを返すまでのレイテンシ(DRAMコマンド発行時レイテンシ)を格納する。DRAMタイミング制約テーブル1208は、DRAMコマンド間のタイミング制約に関する情報を格納する。
【0057】
確定情報生成部122は、リオーダ後リクエストFIFO1202から確定情報送信フラグが「NO」である最も古いエントリを選択する。そして、選択したエントリとそれ以前に格納されたエントリについて、それらに格納されているリクエストから生成されるDRAMコマンドを発行する順番に並べたDRAMコマンドシーケンスを生成する。DRAMコマンドシーケンスは、リードコマンド、ライトコマンド、アクティブコマンド、プリチャージコマンドで構成される。
【0058】
次に、確定情報生成部122は、生成したDRAMコマンドシーケンスが完了するまでの時間を示すDRAMコマンドシーケンス完了時間を生成する。具体的には、DRAMタイミング制約テーブル1208とDRAMコマンド生成部1203におけるコマンド発行状況に基づいて、DRAMコマンドシーケンス完了時間を生成する。最後に、確定情報生成部122は、リフレッシュ要求生成部1204とキャリブレーション要求生成部1205の状態に基づいて、DRAMコマンドシーケンス完了時間内にリフレッシュ要求とキャリブレーション要求が生成されるか否かを判定する。
【0059】
DRAMコマンドシーケンス完了時間内にリフレッシュ要求とキャリブレーション要求が生成される場合、確定情報生成部122は、確定情報をバス140へ通知しない。リフレッシュ要求とキャリブレーション要求が生成されない場合、確定情報生成部122は、選択したエントリのリクエストに対する確定情報をバス140に通知する。確定情報は、対応するリクエストの転送識別子、Dir、レスポンスタイミング確定時レイテンシを含む。ここで、レスポンスタイミング確定時レイテンシは、DRAMコマンドシーケンス完了時間とリクエストのDirに対応するDRAMコマンド発行時レイテンシの和である。また、確定情報生成部122は、確定情報をバス140へ通知する際に、選択したエントリの確定情報送信フラグを「YES」に更新する。
【0060】
図7は、第2実施形態における保留判定部142の構成を示す図である。上述のように、第2実施形態における確定情報にはレスポンスタイミング確定時レイテンシが含まれる。そのため、保留判定部142にレスポンスタイミング確定時レイテンシテーブル1431は不要である。また、レスポンスタイミング計測部1433は、カウンタを起動する際に、スレーブから通知される確定情報に含まれるレスポンスタイミング確定時レイテンシをカウンタに設定する。上述した挙動以外は第1実施形態と同様であるため、説明を省略する。
【0061】
以上説明したとおり第2実施形態によれば、マスタからスレーブへのリクエストの転送をバスにおいて制御する。特に、DRAMコマンド発行時レイテンシ及びDRAMコマンド間のタイミング制約に基づいて、確定情報をバスに通知する。これにより、データ転送効率の低下を抑制しつつ、マスタ110は、期待する順序でレスポンスを受信することができる。また、転送保留の対象となるのはリクエストであるため、バス140は大きなバッファを持つ必要はない。すなわち、複数スレーブへの同時(並列)アクセスを許容したバスシステムにおいて、異なるスレーブからのレスポンスの順序保証を、データ転送効率の低下を抑制しつつ少ない回路規模で実現することが可能になる。
【0062】
なお、上述の説明では、マスタ110が発行するリクエストのバースト長が固定である前提で説明してきたが、バースト長はリクエスト毎に異なってもよい。その場合、DRAMコマンド発行時レイテンシは、スレーブ(A)120がDRAMコマンドを発行してからレスポンスの先頭をバス140に送信するまでのレイテンシであるとする。また、確定情報生成部122は、レスポンスタイミング確定時レイテンシを「DRAMコマンドシーケンス完了時間+DRAMコマンド発行時レイテンシ+バースト長-1」として計算する。
【0063】
(変形例)
第1及び第2実施形態では、リードとライトともに、異なるスレーブからのレスポンスの順序を保証するバスシステムについて説明した。しかしながら、ポステッドライト方式などのバスプロトコルの特性に応じて、リードとライトの何れか一方のみを保証するように一部の構成を削減してもよい。
【0064】
また、各スレーブについて、自スレーブ以外の他スレーブのアクセス最短レイテンシが一意に決まる場合、レスポンスを返すまでの時間がそのアクセス最短レイテンシ以下になったタイミングで確定情報をバス140に通知してもよい。バス140は、順序保証が必要なアウトスタンディングリクエスト全てに確定情報が通知されたかを確認して、通知されていない場合はリクエストの転送を保留する。
【0065】
(その他の実施例)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【0066】
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
【符号の説明】
【0067】
100 バスシステム; 110 マスタ; 120 スレーブ(A); 121 DRAM(A); 130 スレーブ(B); 131 DRAM(B); 140 バス; 141 アクセス管理部; 142 保留判定部; 143 保留制御部