IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ルネサスエレクトロニクス株式会社の特許一覧

<>
  • 特許-半導体装置 図1
  • 特許-半導体装置 図2
  • 特許-半導体装置 図3
  • 特許-半導体装置 図4
  • 特許-半導体装置 図5
  • 特許-半導体装置 図6
  • 特許-半導体装置 図7
  • 特許-半導体装置 図8
  • 特許-半導体装置 図9
  • 特許-半導体装置 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-02-03
(45)【発行日】2022-02-14
(54)【発明の名称】半導体装置
(51)【国際特許分類】
   G06F 13/362 20060101AFI20220204BHJP
   G06F 12/00 20060101ALI20220204BHJP
   G06F 12/0862 20160101ALI20220204BHJP
   G06F 13/38 20060101ALI20220204BHJP
【FI】
G06F13/362 510Z
G06F12/00 570A
G06F12/0862 100
G06F13/362 510D
G06F13/38 310D
【請求項の数】 14
(21)【出願番号】P 2018118689
(22)【出願日】2018-06-22
(65)【公開番号】P2019220060
(43)【公開日】2019-12-26
【審査請求日】2020-11-13
(73)【特許権者】
【識別番号】302062931
【氏名又は名称】ルネサスエレクトロニクス株式会社
(74)【代理人】
【識別番号】100103894
【弁理士】
【氏名又は名称】家入 健
(72)【発明者】
【氏名】早川 雄貴
(72)【発明者】
【氏名】平木 俊行
(72)【発明者】
【氏名】山中 翔
【審査官】打出 義尚
(56)【参考文献】
【文献】国際公開第2017/056132(WO,A1)
【文献】米国特許出願公開第2011/0246688(US,A1)
【文献】特開2011-187069(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/362
G06F 12/00
G06F 12/0862
G06F 13/38
(57)【特許請求の範囲】
【請求項1】
メモリに対してアクセス要求を発行するマスタと、
バスを介して前記マスタに接続され、前記アクセス要求に従って前記メモリにアクセスするメモリコントローラと、
前記マスタの前記メモリに対するアクセス権の付与を通じて、前記マスタが発行した前記アクセス要求の前記メモリコントローラへの出力を制御するアクセス制御を行うアクセス制御部と、を備え、
前記アクセス制御部は、前記アクセス権の権利付与を、前記アクセス権が付与されるマスタが発行するアクセス要求のアクセスサイズに応じた重みに基づいて管理し、重み付けされたアクセス権の権利付与数が、前記アクセス権の最大権利付与数を超えない範囲で前記アクセス権の付与を実施し、
前記アクセス制御部は、前記マスタが発行した前記アクセス要求を受け付けるリクエスト発行制御部を有するサブバスコントローラと、前記リクエスト発行制御部に前記アクセス権を付与することで、前記リクエスト発行制御部が受け付けるアクセス要求の発行元のマスタに対してアクセス権を付与する中央バス制御部とを含み、
前記リクエスト発行制御部は、前記中央バス制御部から前記アクセス権が付与されている場合は前記アクセス要求を前記メモリコントローラへ出力し、前記アクセス権が付与されていない場合は前記アクセス要求の前記メモリコントローラへの出力を抑止し、
前記中央バス制御部は、前記最大権利付与数と前記重み付けされたアクセス権の権利付与数との差を権利付与可能数として、前記マスタに前記アクセス権を付与するたびに、前記アクセス権が付与されるマスタが発行するアクセス要求のアクセスサイズに応じた重みを前記権利付与可能数から減算する半導体装置。
【請求項2】
前記中央バス制御部は、前記マスタに前記アクセス権を付与するたびに、前記アクセス権の付与の対象となるアクセス要求のアクセスサイズに応じた重みを、前記重み付けされたアクセス権の権利付与数に加算する請求項に記載の半導体装置。
【請求項3】
前記中央バス制御部は、前記アクセス権の付与時は、前記マスタが発行すると推定されるアクセス要求のアクセスサイズに応じた重みを、前記重み付けされたアクセス権の権利付与数に加算する請求項に記載の半導体装置。
【請求項4】
前記リクエスト発行制御部は、前記アクセス要求をメモリコントローラへ出力する場合、該メモリコントローラへ出力するアクセス要求のアクセスサイズを前記中央バス制御部に通知し、
前記中央バス制御部は、前記リクエスト発行制御部から通知されたアクセスサイズに基づいて、前記重み付けされたアクセス権の権利付与数を補正する請求項に記載の半導体装置。
【請求項5】
前記中央バス制御部は、前記推定されるアクセス要求のアクセスサイズに応じた重みと、前記リクエスト発行制御部から通知されたアクセスサイズに応じた重みとの差に基づいて、前記重み付けされたアクセス権の権利付与数を補正する請求項に記載の半導体装置。
【請求項6】
前記アクセスサイズと前記重みとを対応付けて記憶するサイズ別重み情報記憶部を更に有し、
前記中央バス制御部は、前記サイズ別重み情報記憶部を参照して前記通知されたアクセスサイズに応じた重みを取得する請求項に記載の半導体装置。
【請求項7】
前記リクエスト発行制御部は、前記アクセス要求をメモリコントローラへ出力する場合、該メモリコントローラへ出力するアクセス要求のアクセスサイズを前記中央バス制御部に通知し、
前記中央バス制御部は、前記リクエスト発行制御部から通知されるアクセスサイズの履歴を取得し、該取得したアクセスサイズの履歴に基づいて、前記マスタが発行すると推定されるアクセス要求のアクセスサイズに応じた重みを生成する請求項に記載の半導体装置。
【請求項8】
前記メモリコントローラは、前記アクセス要求を受け付けて記憶するリクエストバッファを有しており、該リクエストバッファに記憶されたアクセス要求に基づくメモリアクセスが処理されて前記リクエストバッファのエントリが開放されると、前記リクエストバッファが開放された旨を示す開放通知信号を前記中央バス制御部に出力し、かつ前記処理されたアクセス要求のアクセスサイズを前記中央バス制御部に通知し、
前記中央バス制御部は、前記メモリコントローラから前記開放通知信号を受け取ると、前記メモリコントローラから通知されるアクセスサイズに応じた重みを、前記重み付けされたアクセス権の権利付与数から減算する請求項に記載の半導体装置。
【請求項9】
前記リクエスト発行制御部は、前記中央バス制御部から前記アクセス権が付与されている場合で、かつ前記マスタから前記アクセス要求を受け付けていない場合は、前記アクセス権を前記中央バス制御部に返却し、
前記中央バス制御部は、前記リクエスト発行制御部からアクセス権が返却されると、前記推定されるアクセス要求のアクセスサイズに応じた重みを、前記重み付けされたアクセス権の権利付与数から減算する請求項に記載の半導体装置。
【請求項10】
前記マスタ及び前記サブバスコントローラを複数有し、
前記複数のマスタから出力されるアクセス要求を調停して前記メモリコントローラに出力するインターコネクトを更に備え、
前記複数のサブバスコントローラは、前記複数のマスタのそれぞれに対応して、前記マスタと前記インターコネクトとの間に配置される請求項に記載の半導体装置。
【請求項11】
前記メモリコントローラは、キャッシュと、前記アクセス要求がリードの場合に該アクセス要求のアクセスサイズのデータよりもサイズが大きいデータを前記メモリから取得して前記キャッシュに記憶するプリフェッチを制御するプリフェッチ制御部とを更に有し、
前記プリフェッチ制御部は、前記マスタが発行したアクセス要求のアクセスサイズ、及び前記マスタへの前記アクセス権の付与状況に基づいて、プリフェッチを実施するか否かを決定する請求項1に記載の半導体装置。
【請求項12】
メモリに対してアクセス要求を発行する第1及び第2のマスタと、
バスを介して前記第1のマスタ及び前記第2のマスタに接続され、前記アクセス要求に従って前記メモリにアクセスするメモリコントローラと、
前記第1のマスタ及び前記第2のマスタから出力される前記アクセス要求を調停して、前記メモリコントローラへ出力するインターコネクトと、
前記第1のマスタと前記インターコネクトとの間に接続され、前記第1のマスタが発行した前記アクセス要求を受け付ける第1のリクエスト発行制御部を有する第1のサブバスコントローラと、
前記第2のマスタと前記インターコネクトとの間に接続され、前記第2のマスタが発行した前記アクセス要求を受け付ける第2のリクエスト発行制御部を有する第2のサブバスコントローラと、
前記第1のリクエスト発行制御部及び前記第2のリクエスト発行制御部にアクセス権を付与する中央バス制御部と、
を備え、
前記第1のリクエスト発行制御部及び前記第2のリクエスト発行制御部は、前記中央バス制御部から前記アクセス権が付与されている場合は前記アクセス要求を出力し、前記アクセス権が付与されていない場合は前記アクセス要求の出力を抑止し、
前記中央バス制御部は、前記第1のリクエスト発行制御部及び前記第2のリクエスト発行制御部に対する前記アクセス権の権利付与を、前記アクセス権が付与されるアクセス要求のアクセスサイズに応じた重みに基づいて管理し、重み付けされたアクセス権の権利付与数が、前記アクセス権の最大権利付与数を超えない範囲で前記アクセス権の付与を実施し、
前記中央バス制御部は、前記最大権利付与数と前記重み付けされたアクセス権の権利付与数との差を権利付与可能数として、前記第1のリクエスト発行制御部及び前記第2のリクエスト発行制御部に前記アクセス権を付与するたびに、前記アクセス権が付与されるアクセス要求のアクセスサイズに応じた重みを、前記権利付与可能数から減算する半導体装置。
【請求項13】
前記中央バス制御部は、前記第1のリクエスト発行制御部及び前記第2のリクエスト発行制御部に前記アクセス権を付与するたびに、前記アクセス権の付与の対象となるアクセス要求のアクセスサイズに応じた重みを、前記重み付けされたアクセス権の権利付与数に加算する請求項12に記載の半導体装置。
【請求項14】
前記中央バス制御部は、前記アクセス権の付与時は、マスタが発行すると推定されるアクセス要求のアクセスサイズに応じた重みを、前記重み付けされたアクセス権の権利付与数に加算する請求項13に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は半導体装置に関し、例えばメモリへのアクセスを行う半導体装置に関する。
【0002】
また、本発明は、上記半導体装置におけるバスを生成するバスジェネレータに関する。
【背景技術】
【0003】
特許文献1は、複数のバスマスタが共通バスに接続するバスシステムにおけるアクセス制御を開示する。特許文献1に記載される半導体装置は、複数のマスタと、メモリコントローラと、複数のマスタとメモリコントローラとを接続するバスと、中央バス制御部とを有する。特許文献1には、中央バス制御部が、各マスタの転送量をモニタし、各マスタの予約ハンド幅とモニタした転送量と権利付与可能数とに基づいて、アクセス権の付与先のマスタを選択することが記載されている。特許文献1において、アクセス権が付与されていないマスタのリクエストは、メモリコントローラとマスタとの間のバスでマスクされる。
【0004】
特許文献1において、中央バス制御部は、メモリコントローラ内のバッファが開放された場合に、メモリコントローラからバッファ開放通知を受け取る。中央バス制御部は、アクセス権を付与するたびに権利付与可能数を1つ減らし、バッファが解放されるたびに権利付与可能数を1つ増やす。メモリコントローラにおける処理状況に応じてアクセス権の付与を行うことで、バッファが未処理のアクセス要求で一杯になることを避けることができ、低レイテンシが要求されるアクセス要求が、メモリコントローラによって受け付けられない事態を回避することができる。
【先行技術文献】
【特許文献】
【0005】
【文献】国際公開第2017/056132号
【発明の概要】
【発明が解決しようとする課題】
【0006】
ここで、マスタが要求するメモリアクセスのデータサイズ(アクセスサイズ)は常に一定ではなく、あるアクセス要求のアクセスサイズは、他のアクセス要求のアクセスサイズよりも小さいことがあり得る。一般に、メモリアクセスに要する時間(アクセス時間)はアクセスサイズに応じて異なり、アクセスサイズが大きいほどアクセス時間は長くなる。特許文献1では、このようなアクセス時間の違いを考慮しておらず、マスタのアクセスサイズが一定ではない場合に、低レイテンシで効率が高いメモリアクセスを実現できない場合があり得る。
【0007】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【0008】
一実施の形態によれば、半導体装置は、マスタのメモリに対するアクセス権の付与を通じて、マスタが発行したアクセス要求のメモリコントローラへの出力を制御するアクセス制御を行うアクセス制御部を備える。アクセス制御部は、権利付与可能数を、マスタが発行するアクセス要求のアクセスサイズに基づいて管理し、権利付与可能数の範囲内でアクセス権の付与を実施する。
【発明の効果】
【0009】
前記一実施の形態によれば、様々な条件下でも、バス上でのリクエスト滞留をなくし、メモリ効率を上げることができる。
【図面の簡単な説明】
【0010】
図1】実施形態1に係る半導体装置を含む電子装置を示すブロック図。
図2】中央バス制御部の構成例を示すブロック図。
図3】権利付与選択制御部の構成例を示すブロック図。
図4】権利付与可能数の管理に関わる部分の動作手順を示すフローチャート。
図5】実施形態2に係る半導体装置を含む電子装置において用いられる権利付与選択制御部の構成例を示すブロック図。
図6】実施形態3に係る半導体装置を含む電子装置に用いられるメモリコントローラを示すブロック図。
図7】バスジェネレータのハードウェア構成例を示すブロック図。
図8】バス設計の概略的なフローを示すフローチャート。
図9】設定情報の入力における画面例を示す図。
図10】バスジェネレータへの入出力データを示すブロック図。
【発明を実施するための形態】
【0011】
実施の形態の説明に先立って、下記の実施の形態を想到するに至った経緯について説明する。DDR(Double-Data-Rate)メモリへアクセスするマスタを有する実際の製品では、DDRメモリのバンド幅の実効帯域が状況に応じて50%~75%程度とばらつきがあり、高効率化が切望されていた。また、リアルタイム性が要求されるマスタについてはアクセスレイテンシを短くする必要があるが、これもばらつきがあり、常に低レイテンシにする必要があった。ある程度レイテンシが許容される場合、メモリコントローラ内にメモリへのアクセス要求がある程度貯まるまで待機し、その後、メモリアクセスの種別(リード及びライト)やアドレスなどを考慮してアクセス要求の処理順番を入れ替えるスケジューリングなどを行うことで、メモリアクセス効率を高めることができる。しかしながら、優先度が高い低レイテンシが要求されるリクエストを優先する場合、メモリコントローラ内にある程度の数のアクセス要求が貯まるまで待機することができず、スケジューリング対象のアクセス要求の数が少なくなる。このため、効率的なメモリアクセスが実現できず、バンド幅効率が低下する。従って、メモリアクセスシステムでは、これら相反する要求に応える必要があった。
【0012】
本発明者らが検討した結果、マスタに対してアクセス権が付与されてからメモリコントローラのバッファが開放されるまでの時間にはばらつきがあり、これに起因して帯域やレイテンシにばらつきが発生していることがわかった。また、ばらつきの原因のとして、各リクエストのアクセスサイズや種類などがあることが分かった。特許文献1において、マスタとメモリコントローラとの間のデータ転送量は、アクセス権が付与されるアクセス要求の数とアクセスサイズとの積で表される。例えば、アクセスサイズが小さいアクセス要求に対して所定数だけアクセス権が付与される場合、アクセスサイズが大きいアクセス要求に対して所定数だけアクセス権が付与される場合に比べてデータ転送量が少なく、従ってメモリアクセスの効率が低下する。一方で、アクセスサイズが大きいアクセス要求に対して同じ数のアクセス権を付与すると、メモリアクセス効率は向上できるものの、アクセス時間が長くなることで、低レイテンシが実現できない可能性がある。本発明者らは、アクセスサイズが一定ではない場合でも、高効率なメモリアクセスを低レイテンシで実現可能なバスシステムについて検討した結果、下記の実施の形態を想到するに至った。
【0013】
以下、図面を参照しつつ、上記課題を解決するための手段を適用した実施形態を詳細に説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、CPU(Central Processing Unit)、メモリ、又はその他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、又はそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、何れかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【0014】
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスク)、光磁気記録媒体(例えば光磁気ディスク)、CD-ROM(Read Only Memory)CD-R、CD-R/W、及び半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の優先通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【0015】
以下の実施の形態においては便宜上その必要があるときは、複数のセクション又は実施の形態に分割して説明するが、特に明示した場合を除き、それらはお互いに無関係なものではなく、一方は他方の一部又は全部の変形例、応用例、詳細説明、又は補足説明等の関係にある。また、以下の実施の形態において、要素の数等(個数、数値、量、範囲等を含む)に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
【0016】
さらに、以下の実施の形態において、その構成要素(動作ステップ等も含む)は、特に明示した場合及び原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではない。同様に、以下の実施の形態において、構成要素等の形状、又は位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数等(個数、数値、量、範囲等を含む)についても同様である。
【0017】
[実施形態1]
図1は、実施形態1に係る半導体装置を含む電子装置を示す。電子装置10は、マスタA20、マスタB30、マスタX40、サブバスコントローラ22、32、及び42、中央バス制御部50、インターコネクト60、メモリコントローラ70、並びにメモリ80を有する。電子装置10の構成要素のうち、例えば、マスタA20、マスタB30、マスタX40、サブバスコントローラ22、32、及び42、中央バス制御部50、インターコネクト60、並びにメモリコントローラ70は、半導体装置を構成する。半導体装置の構成要素のうち、例えばサブバスコントローラ22、32、及び42、インターコネクト60、並びにメモリコントローラ70は、ハードウェア回路として構成され得る。また、中央バス制御部50は、例えばプロセッサを含んだ回路として構成され得る。
【0018】
マスタA20、マスタB30、及びマスタX40は、メモリ80に対してアクセス要求を発行する。メモリ80は、例えばDDR-SDRAM(Double-Data-Rate Synchronous Dynamic Random Access Memory)などのメモリデバイスとして構成される。マスタA20、マスタB30、及びマスタX40は、バスマスタであり、例えばCPUやGPU(Graphics Processing Unit)などのプロセッサとして構成される。マスタA20、マスタB30、及びマスタX40は、それぞれ対応するバス21、31、及び41を通じてアクセス要求を出力する。
【0019】
ここで、メモリ80に対するアクセス要求は、リード又はライトを示すアクセス種別、アクセス先のアドレス情報、データサイズ(アクセスサイズ)を示す情報などを含む。アクセスサイズは、メモリ80から読み出され、或いはメモリ80に書き込まれるデータのサイズを示す。アクセスサイズは、例えば64Byte、128Byte、及び256Byteなどを含む。
【0020】
マスタA20は、バス21を介して対応するサブバスコントローラ22に接続される。サブバスコントローラ22は、バス24を介してインターコネクト60に接続される。サブバスコントローラ22は、リクエスト発行制御部23を含む。リクエスト発行制御部23は、バス21を介してマスタA20が発行したアクセス要求を受け付け、受け付けたアクセス要求のバス24への出力を制御する。
【0021】
マスタB30は、バス31を介して対応するサブバスコントローラ32に接続される。サブバスコントローラ32は、バス34を介してインターコネクト60に接続される。サブバスコントローラ32は、リクエスト発行制御部33を含む。同様に、マスタX40は、バス41を介して対応するサブバスコントローラ42に接続される。サブバスコントローラ42は、バス44を介してインターコネクト60に接続される。サブバスコントローラ42は、リクエスト発行制御部43を含む。
【0022】
リクエスト発行制御部23は、マスタA20からアクセス要求を受け付ける。リクエスト発行制御部23は、中央バス制御部50からアクセス権が付与されている場合は、マスタA20が発行したアクセス要求を、バス24を介してインターコネクト60に出力する。リクエスト発行制御部23は、アクセス要求をインターコネクト60に出力する場合、そのアクセス要求のアクセスサイズを示す情報(以下、アクセスサイズ情報とも呼ぶ)を中央バス制御部50に出力する。リクエスト発行制御部23は、アクセス権が付与されていない場合は、マスタA20が発行したアクセス要求のインターコネクト60への出力を抑止する。
【0023】
リクエスト発行制御部33及び43の機能は、リクエスト発行制御部23の機能と同様である。リクエスト発行制御部23、33、及び43は、アクセス権が付与された場合で、かつ対応するマスタからアクセス要求を受け取っていなかった場合は、アクセス権返却信号を中央バス制御部50に出力し、アクセス権を返却してもよい。中央バス制御部50は、返却されたアクセス権を、他のリクエスト発行制御部へのアクセス権の付与に使用できる。
【0024】
インターコネクト60は、バス24、34、及び44を介して、マスタA20、マスタB30、及びマスタX40が発行したアクセス要求を受け取る。インターコネクト60は、例えばバスアービタであり、複数のマスタから入力されるアクセス要求を調停する。インターコネクト60は、例えばマスタA20、マスタB30、及びマスタX40からアクセス要求を受け取った場合は、各マスタに設定された優先度に従って、優先度が高いマスタが発行したアクセス要求をメモリコントローラ70に出力する。インターコネクト60は、メモリコントローラ70に出力したアクセス要求に対するレスポンスが得られると、次に優先度が高いマスタのアクセス要求を選択してメモリコントローラ70に出力する。
【0025】
メモリコントローラ70は、バス、及びインターコネクト60などを介してマスタA20、マスタB30、及びマスタX40に接続され、インターコネクト60を通じて受け付けたアクセス要求に従ってメモリ80にアクセスする。なお、図1では電子装置10がマスタを3つ有する例が示されているが、マスタの数は特に限定されない。電子装置10は、メモリコントローラ70に対してメモリ80へのアクセス要求を発行するマスタを少なくとも1つ有していればよい。マスタの数が1つである場合、調停のためのインターコネクト60は不要である。
【0026】
メモリコントローラ70は、バッファ(リクエストバッファ)71を有する。バッファ71は、メモリコントローラ70がインターコネクト60を介して受け付けたアクセス要求を記憶する。バッファ71は、複数のエントリを有しており、複数のアクセス要求を記憶可能に構成される。メモリコントローラ70は、バッファ71以外に、例えば、バッファ71に記憶された複数のアクセス要求の1つを選択するスケジューラと、選択されたアクセス要求に従ってメモリ80にアクセスするためのメモリコマンド(コマンド信号)を生成するメモリコマンド生成部を有している。メモリコントローラ70は、バッファ71からアクセス要求が選択されて処理されると、バッファ71のエントリが解放された旨を示すバッファ解放通知を中央バス制御部50に出力する。また、メモリコントローラ70は、開放されたバッファに記憶されていたアクセス要求のアクセスサイズ情報を、開放アクセスサイズ情報として中央バス制御部50に出力する。
【0027】
中央バス制御部50は、サブバスコントローラ22、32、及び42を用い、各マスタに対するアクセス権の付与を通じて、各マスタが発行したアクセス要求のメモリコントローラ70への出力を制御するアクセス制御を実施する。中央バス制御部50は、リクエスト発行制御部23、33、及び43にアクセス権を付与することで、各リクエスト発行制御部が受け付けるアクセス要求の発行元のマスタに対してアクセス権を付与する。中央バス制御部50は、サブバスコントローラ22、32、及び42と共に、アクセス制御部90を構成する。
【0028】
ユーザは、例えば中央バス制御部50にあらかじめ各マスタの帯域を設定し、一定時間(スロット)内のQoS(Quality of Service)を保証する。本実施形態において、マスタがアクセス種別ごとに存在するものとみなされ、例えばアクセス種別がリードのアクセス要求(以下、リード要求とも呼ぶ)と、アクセス種別がライトのアクセス要求(以下、ライト要求とも呼ぶ)とのそれぞれに対して帯域が設定されていてもよい。中央バス制御部50は、リクエスト発行制御部23、33、及び43のそれぞれに対して、例えば所定のアクセス制御の内容に従ってアクセス権を付与する。アクセス制御の内容は、例えば特許文献1に記載されたものと同様でよい。特許文献1に記載の内容は、参照として本明細書に取り込まれる。
【0029】
中央バス制御部50は、例えば各マスタのリード要求及びライト要求に対して設定されたQoS情報に基づいて、各マスタに対応するリクエスト発行制御部23、33、及び43に対してアクセス権を付与するか否かを決定する。このとき、中央バス制御部50は、バス24、34、及び44から取得されたリクエストモニタ(トランザクションモニタ信号)によってバスを流れるトランザクションを監視し、トランザクションの転送量に基づいてスロットごとに補正しながらアクセス権を付与してもよい。中央バス制御部50は、アクセス権の付与を通じて、各マスタが発行するリード要求及びライト要求のメモリコントローラ70への出力を制御する。
【0030】
中央バス制御部50は、マスタに対してアクセス権を付与することが可能な数を示す権利付与可能数を、アクセス権が付与されるマスタが発行するアクセス要求のアクセスサイズに基づいて管理し、権利付与可能数の範囲内でアクセス権の付与を実施する。中央バス制御部50は、例えば、マスタにアクセス権を付与するたびに、権利付与可能数を、アクセス権が付与されるマスタが発行するアクセス要求のアクセスサイズに応じた重みだけ減少させる。中央バス制御部50は、メモリコントローラ70からバッファ開放通知を受け取ると、権利付与可能数を、開放アクセスサイズ情報が示すアクセスサイズに応じた重みだけ増加させる。アクセスサイズに対する重み(その値)は、例えば設計やシミュレーション結果などに基づいて決定される。
【0031】
[中央バス制御部]
図2は、中央バス制御部50の構成例を示す。中央バス制御部50は、権利付与選択制御部501、QoS情報レジスタ502、及び付与可能最大数設定レジスタ503を有する。なお、図2では、図1に示されるトランザクションモニタ信号は、図示を省略している。
【0032】
QoS情報レジスタ502は、各マスタのQoS情報を記憶する。QoS情報レジスタ502には、例えば一定時間(スロット)を複数の期間で分割した時間をサブスロットとして、各マスタの1サブスロットあたりの予約転送量、及び各マスタの優先レベルが格納される。あるいは、QoS情報レジスタ502には、各マスタについて1サブスロットあたりの目標転送量が格納されてもよい。
【0033】
権利付与選択制御部501は、リクエスト発行制御部23、33、及び43(図1を参照)に対してアクセス権を付与する。権利付与選択制御部501は、アクセス権の付与に際して、どのリクエスト発行制御部にアクセス権を付与するかを決定(選択)する。権利付与選択制御部501は、例えばQoS情報レジスタ502から読み出した予約バンド幅及び優先レベルと、各マスタのサブスロットにおける転送量とを用いて、アクセス権を付与するリクエスト発行制御部を決定する。あるいは、権利付与選択制御部501は、QoS情報レジスタ502から読み出した目標転送量を用いて、アクセス権を付与するリクエスト発行制御部を決定してもよい。
【0034】
権利付与選択制御部501は、アクセス権の付与先のリクエスト発行制御部に、アクセス権を獲得した旨を示すアクセス権付与信号を出力する。権利付与選択制御部501は、例えばアクセス権の付与先のリクエスト発行制御部に出力するアクセス権付与信号をアサートし、アクセス権を付与しないリクエスト発行制御部に出力するアクセス権付与信号はネゲートしたままとする。権利付与選択制御部501は、例えばサブスロットごとに、アクセス権を付与するマスタを決定する。
【0035】
付与可能最大数設定レジスタ503は、権利付与選択制御部501が同時期にアクセス権を付与することが可能なアクセス権の付与可能数の最大数(最大権利付与可能数)を格納する。最大権利付与可能数は、例えば権利付与選択制御部501が、アクセスサイズが最大のアクセス要求に対して最大権利付与可能数だけアクセス権を付与する場合に、バス内にアクセス要求が滞留しない数に設定される。権利付与選択制御部501は、付与可能最大数設定レジスタ503に格納される最大権利付与可能数を上限として、アクセス権の権利付与可能数を計算し、計算した権利付与可能数の範囲で、アクセス権の付与を行う。
【0036】
本実施形態において、権利付与選択制御部501は、各マスタが発行するアクセス要求のアクセスサイズと最大権利付与可能数とに基づいて権利付与可能数を管理する。権利付与選択制御部501は、例えば、アクセスサイズに基づいてアクセス権を付与している権利数(付与中権利数)を管理する。権利付与選択制御部501は、付与可能最大数設定レジスタ503に設定された最大権利付与可能数と付与中権利数との差を、残りの権利付与可能数として管理する。権利付与選択制御部501は、権利付与可能数の範囲内でアクセス権の付与を実施する。
【0037】
[権利付与選択制御部]
図3は、権利付与選択制御部501の構成例を示す。権利付与選択制御部501は、アクセス権付与先決定部551、付与可能判定部552、アクセス権付与部553、補正量計算部554、返却量計算部555、初期重み情報レジスタ581、サイズ別重み情報レジスタ582、及び付与中権利数レジスタ583を有する。なお、図3では、図2のQoS情報レジスタ502などが出力する信号については図示を省略している。
【0038】
初期重み情報レジスタ581は、マスタと、そのマスタが発行すると推定されるアクセス要求のアクセスサイズに応じた重みとを対応付けて記憶する。初期重み情報レジスタ581は、例えばマスタA20と重み「1」とを対応付けて記憶し、マスタB20と重み「0.8」とを対応付けて記憶し、マスタX40と重み「0.9」とを対応付けて記憶する。サイズ別重み情報レジスタ582は、アクセスサイズと、そのアクセスサイズに応じた重みとを対応付けて記憶する。サイズ別重み情報レジスタ582は、例えばアクセスサイズ256Byteと重み「1」とを対応付けて記憶し、アクセスサイズ128Byteと重み0.9とを対応付けて記憶し、アクセスサイズ64Byteと重み「0.8」とを対応付けて記憶する。初期重み情報レジスタ581及びサイズ別重み情報レジスタ582には、図示しないCPUなどを用いて、それぞれマスタごとの重み、及びアクセスサイズごとの重みが設定される。
【0039】
アクセス権付与先決定部551は、アクセス権を付与するマスタを決定する。アクセス権付与先決定部551は、初期重み情報レジスタ581から決定したマスタに対応する重みを取得し、付与可能判定部552に送信する。なお、初期重み情報レジスタ581に代えて、マスタと、そのマスタが発行すると推定されるアクセス要求のアクセスサイズとを記憶する初期サイズ情報レジスタが用いられてもよい。その場合、アクセス権付与先決定部551は、初期サイズ情報レジスタから決定したマスタに対応するアクセスサイズを取得し、取得したアクセスサイズに対応する重みをサイズ別重み情報レジスタ582から取得してもよい。
【0040】
付与中権利数レジスタ583は、付与されているアクセス権の数(付与中権利数)を記憶する。付与可能判定部552は、付与可能最大数設定レジスタ503と付与中権利数レジスタ583とを参照し、アクセス権付与先決定部551がアクセス権の付与先として決定したマスタにアクセス権の付与が可能であるか否かを判定する。より詳細には、付与可能判定部552は、付与可能最大数設定レジスタ503に記憶される最大権利付与可能数と、付与中権利数レジスタ583に記憶される付与中権利数との差(権利付与可能数)を計算する。付与可能判定部552は、計算した権利付与可能数と、アクセス権付与先決定部551から受け取った、アクセス権の付与先として決定されたマスタが発行すると推定されるアクセス要求のアクセスサイズに応じた重みとを比較する。付与可能判定部552は、権利付与可能数がアクセス権付与先決定部551から受け取った重み以上であれば、アクセス権の付与が可能と判定する。付与可能判定部552は、権利付与可能数がアクセス権付与先決定部551から受け取った重みよりも小さい場合は、アクセス権が付与できないと判定する。
【0041】
付与可能判定部552は、アクセス権の付与が可能と判定すると、アクセス権付与部553に、アクセス権付与先決定部551が決定したマスタへのアクセス権の付与を指示する。また、付与可能判定部552は、付与中権利数レジスタ583に記憶される付与中権利数に、アクセス権付与先決定部551から受け取った重みを加算することで、付与中権利数を更新する。付与可能判定部552は、マスタに対してアクセス権が付与されるたびに、アクセス権が付与されるマスタが発行すると推定されるアクセス要求のアクセスサイズに応じた重みを、付与中権利数に加算する。
【0042】
本実施形態において、付与中権利数は、アクセスサイズに応じた重みで重み付けされている。例えば、付与されているアクセス権の数が「10」である場合、アクセス要求のアクセスサイズが全て64Byteであれば、付与中権利数は10×0.8=8となる。付与されているアクセス権の数が「10」で、アクセス要求のアクセスサイズが全て256Byteであれば、付与中権利数は10×1=10となる。本実施形態において、最大権利付与可能数と付与中権利数との差で表される権利付与可能数はアクセスサイズに応じて変化し、アクセスサイズが小さいアクセス要求に対してアクセス権が付与されている場合、アクセスサイズが大きいアクセス要求に対してアクセス権が付与されている場合に比べて権利付与可能数が増加する。
【0043】
リクエスト発行制御部23、33、及び43(図1を参照)は、アクセス権付与部553からアクセス権が付与されている場合で、かつ対応するマスタからアクセス要求を受け取っている場合は、付与されたアクセス権を使用し、インターコネクト60にアクセス要求を出力する。このときリクエスト発行制御部は、アクセスサイズ情報を中央バス制御部50に出力する。中央バス制御部50において、権利付与選択制御部501の補正量計算部554は、リクエスト発行制御部から出力されたアクセスサイズ情報が示すアクセスサイズに基づいて、アクセス権の付与時に初期重み情報レジスタ581に記憶される重みを用いて計算された付与中権利数を補正する。補正量計算部554は、例えば、初期重み情報レジスタ581に記憶される、マスタが発行すると推定されるアクセス要求のアクセスサイズに応じた重みと、リクエスト発行制御部から通知されたアクセスサイズに応じた重みとの差に基づいて、付与中権利数を補正する。
【0044】
より詳細には、例えばマスタA20がアクセス権の付与先である場合、付与可能判定部552は、アクセス権の付与時に、初期重み情報レジスタ581に記憶される重み「1」を付与中権利数に加算する。リクエスト発行制御部23は、実際にマスタA20が発行したアクセス要求のアクセスサイズが128Byteであった場合は、アクセスサイズ情報128Byteを補正量計算部554に通知する。補正量計算部554は、サイズ別重み情報レジスタ582から128Byteに対応する重み「0.9」を取得し、取得した重み「0.9」と初期重み情報レジスタ581に記憶される重み「1」との差の分だけ付与中権利数を補正する。この場合は、推定されたアクセスサイズに対応する重みが、実際のアクセスサイズに対応する重みよりも大きいため、付与中権利数は重みの差「0.1」だけ減少させられる。推定されたアクセスサイズに対応する重みが、実際のアクセスサイズに対応する重みよりも小さい場合は、付与中権利数は重みの差の分だけ増加させられる。このようにすることで、実際にマスタが発行したアクセス要求のアクセスサイズに応じた重みで付与中権利数を管理することができる。
【0045】
一方、リクエスト発行制御部23、33、及び43は、アクセス権付与部553からアクセス権が付与されている場合で、かつ対応するマスタからアクセス要求を受け取っていない場合は、付与されたアクセス権を使用せずに中央バス制御部50に返却する。リクエスト発行制御部は、専用のアクセス権返却信号をアサートすることで、中央バス制御部50にアクセス権を返却してもよいし、アクセスサイズ情報「0」を出力することでアクセス権を返却してもよい。中央バス制御部50において、権利付与選択制御部501の返却量計算部555は、アクセス権が返却された場合に、アクセス権の付与時に初期重み情報レジスタ581に記憶される重みが加算された付与中権利数から、初期重み情報レジスタ581に記憶される重みを減算する。このようにすることで、アクセス権が返却された場合に、付与中権利数をアクセス権の付与前の状態に戻し、その分だけ権利付与可能数を増やすことができる。返却されたアクセス権は、他のマスタに対するアクセス権に使用できる。
【0046】
メモリコントローラ70(図1を参照)は、バッファ71に記憶されたアクセス要求に基づくメモリアクセスが処理されてバッファ71のエントリが開放されると、開放通知信号を中央バス制御部50に出力する。また、メモリコントローラ70は、処理されたアクセス要求のアクセスサイズを示す開放サイズ情報を中央バス制御部50に出力する。中央バス制御部50において、返却量計算部555は、開放通知信号を受信すると、開放サイズ情報が示すアクセスサイズに応じた重みを付与中権利数レジスタ583から減算する。このようにすることで、処理が完了したアクセス要求で使用されたアクセス権を、別のアクセス要求に付与することが可能となる。
【0047】
[動作手順]
次いで、動作手順を説明する。図4は、権利付与可能数の管理に関わる部分の動作手順を示す。電子装置10の運用前に、初期重み情報レジスタ581及びサイズ別重み情報レジスタ582(図3を参照)に、それぞれ必要な情報が設定される。初期重み情報レジスタ581には、マスタごとに、各マスタに予想(推定)される1回のメモリアクセス(アクセス要求)におけるアクセスサイズに対応する重みが設定される。サイズ別重み情報レジスタ582には、アクセスサイズごとに重みが設定される。初期重み情報レジスタ581及びサイズ別重み情報レジスタ582に設定される重みは、各マスタ及び各アクセスサイズのアクセス要求が消費するアクセス権の権利数を示す。
【0048】
アクセス権付与先決定部551は、アクセス権の付与先のマスタ(リクエスト発行制御部)を決定する(ステップA1)。アクセス権付与先決定部551は、初期重み情報レジスタ581から、ステップA1で決定したアクセス権の付与先のマスタに対応する重みを取得する(ステップA2)。アクセス権付与先決定部551は、取得した重みを付与可能判定部552に送信する。
【0049】
付与可能判定部552は、アクセス権付与先決定部551から受け取った重みと、付与可能最大数設定レジスタ503に記憶された最大権利付与可能数と、付与中権利数レジスタ583に記憶された付与中権利数とに基づいて、ステップA1で決定されたマスタにアクセス権を付与することが可能であるか否かを判断する(ステップA3)。付与可能判定部552は、ステップA3では、例えば最大権利付与可能数から付与中権利数を減算した権利付与可能数が、アクセス権付与先決定部551から受け取った重み以上であるか否かを判断する。付与可能判定部552は、権利付与可能数がアクセス権付与先決定部551から受け取った重み以上である場合は、アクセス権の付与が可能であると判定する。付与可能判定部552は、権利付与可能数がアクセス権付与先決定部551から受け取った重みよりも少ない場合は、アクセス権を付与できないと判定する。
【0050】
付与可能判定部552は、ステップA3でアクセス権の付与が可能であると判定すると、アクセス権付与部553にアクセス権の付与を指示する。アクセス権付与部553は、付与可能判定部552からアクセス権の付与を指示されると、ステップA1で決定されたマスタにアクセス権を付与する(ステップA4)。付与可能判定部552は、ステップA1で決定されたマスタにアクセス権が付与されると、アクセス権付与先決定部551から受け取った重みの分だけアクセス権の権利付与可能数を減らす(ステップA5)。付与可能判定部552は、ステップA5では、例えば、付与中権利数レジスタ583に記憶される付与中権利数に、アクセス権付与先決定部551から受け取った重みを加算することで、権利付与可能数を減少させる。ステップA3において、権利付与可能数がアクセス権付与先決定部551から受け取った重みよりも少ないと判断された場合は、アクセス権の付与は保留される。権利付与可能数が変化し、権利付与可能数がアクセス権付与先決定部551から受け取った重み以上になると、アクセス権の付与が行われる。
【0051】
マスタは、アクセス要求を対応するサブバスコントローラのリクエスト発行制御部に出力する。リクエスト発行制御部は、アクセス権が付与された場合で、かつマスタからアクセス要求を受け取っている場合は、アクセス要求をインターコネクト60側に出力する。このとき、リクエスト発行制御部は、インターコネクト60側に出力したアクセス要求のアクセスサイズを示すアクセスサイズ情報を中央バス制御部50に送信する。リクエスト発行制御部は、アクセス権が付与された場合で、かつマスタからアクセス要求を受け取っていない場合は、付与されたアクセス権を中央バス制御部50に返却する。
【0052】
補正量計算部554は、アクセス権が付与されたマスタに対応するリクエスト発行制御部からアクセスサイズ情報を受信したか否かを判断する(ステップA6)。補正量計算部554は、アクセスサイズ情報を受信した場合は、アクセスサイズ情報が示すアクセスサイズに基づいて、ステップA5で減少された権利付与可能数を補正する(ステップA7)。補正量計算部554は、ステップA7では、アクセスサイズ情報が示すアクセスサイズに対応する重みをサイズ別重み情報レジスタ582から取得し、取得した重みとステップA2で取得された重みとの差を計算する。補正量計算部554は、付与中権利数レジスタ583が記憶する付与中権利数を計算した重みの差の分だけ増減することで、権利付与可能数を補正する。計算した重みの差が0の場合、権利付与可能数の補正は行われない。
【0053】
補正量計算部554がアクセスサイズ情報を受信していないと判断した場合、返却量計算部555はリクエスト発行制御部からアクセス権返却信号を受信する。その場合、返却量計算部555は、ステップA5で減少された権利付与可能数を元に戻す(ステップA8)。返却量計算部555は、ステップA8では、付与中権利数レジスタ583に記憶される付与中権利数をステップA2で取得された重みの分だけ減少させることで、権利付与可能数をステップA2で取得された重みの分だけ増加させる。
【0054】
リクエスト発行制御部から出力されたアクセス要求は、インターコネクト60で調停され、メモリコントローラ70のバッファ71に格納される。メモリコントローラ70は、バッファ71に格納されるアクセス要求に従ってメモリ80へのメモリアクセスを行う。メモリコントローラ70は、アクセス要求に基づくメモリアクセスが終了すると、バッファ71のエントリを開放する。その際、メモリコントローラ70は、開放通知信号を中央バス制御部50に送信する。また、メモリコントローラ70は、開放されたアクセス要求のアクセスサイズを示す開放サイズ情報を中央バス制御部50に通知する。
【0055】
返却量計算部555は、メモリコントローラ70から開放通知信号を受信したか否かを判断する(ステップA9)。返却量計算部555は、開放通知信号を受信したと判断すると、メモリコントローラ70から出力される開放サイズ情報が示すアクセスサイズに対応した重みの分だけ、権利付与可能数を増加させる(ステップA10)。返却量計算部555は、ステップA10では、開放サイズ情報が示すアクセスサイズに対応する重みをサイズ別重み情報レジスタ582から取得する。返却量計算部555は、付与中権利数レジスタ583に記憶される付与中権利数を、サイズ別重み情報レジスタ582から取得した重みの分だけ減少させることで、権利付与可能数を開放サイズ情報が示すアクセスサイズに対応した重みの分だけ増加させる。
【0056】
[まとめ]
本実施形態では、中央バス制御部50は、付与可能権利数を、アクセス権が付与されるアクセス要求のアクセスサイズに基づいて管理する。中央バス制御部50は、例えばあるマスタに対してアクセス権を付与する場合、付与されたアクセス権が消費する権利数を、アクセスサイズに応じた重みで重み付けする。例えば、アクセスサイズが大きいほど大きな重みが設定される場合、アクセスサイズが小さいアクセス要求に対して付与されるアクセス権の権利消費数は、アクセスサイズが大きいアクセス要求に対して付与されるアクセス権の権利数よりも小さくなる。このように、権利消費数に、アクセスサイズに応じて差をつけることで、アクセスサイズが小さいアクセス要求が多い場合には消費されていない残りの権利付与可能数を増やすことができ、より多くのアクセス要求に対してアクセス権を付与できる。逆に、アクセスサイズが大きいアクセス要求が多い場合は消費されていない残りの権利付与可能数を減らすことができ、過剰なアクセス要求の付与を抑制することができる。
【0057】
アクセスサイズが小さいアクセス要求は、メモリ80にアクセスする時間が短く、従ってバッファ71における滞留時間が短い。一方、アクセスサイズが大きいアクセス要求は、メモリ80にアクセスする時間が長く、従ってバッファ71におけるアクセス要求の滞留時間が長い。本実施形態では、アクセスサイズに応じた重みを用い、アクセスサイズに応じてアクセス要求が消費するアクセス権の権利数を制御する。このようにすることで、バッファ71におけるアクセス要求の滞留時間の長さに応じて付与することが可能なアクセス権の数を動的に制御することができ、様々な条件下において、バス上でのアクセス要求の滞留をなくし、メモリ効率を上げることができる。
【0058】
特許文献1との比較では、特許文献1では、アクセス権の権利消費数は全て等しく「1」である。例えば、特許文献1において、付与可能最大数設定レジスタに格納される最大権利付与可能数が32である場合、中央バス制御部は、アクセスサイズとは無関係に、32個のアクセス要求に対してアクセス権を付与する。メモリアクセスに要する時間は、アクセスサイズに応じて変化し、例えばアクセスサイズが64Byteの場合のメモリアクセスに要する時間は、アクセスサイズが256Byteの場合のメモリアクセスに要する時間よりも短い。メモリコントローラのバッファに格納されるアクセス要求のアクセスサイズが64Byteである場合、バッファに格納されるアクセス要求が256Byteの場合に比べて、早期にバッファが開放されることが予想される。しかしながら、特許文献1では、アクセス権を32個付与した場合、実際にバッファが開放されるまで、新たなアクセス権が付与されない。アクセス権の付与から実際にバッファにアクセス要求が格納されるまでにはタイムラグがあり、特許文献1では、アクセスサイズが小さいアクセス要求が多い場合に、メモリアクセスが早期に終了することでバッファに空きが生じる時間が長くなる可能性がある。
【0059】
上記に対し、本実施形態では、例えばアクセスサイズが64Byteの場合の重みが0.8に設定され、128Byteの場合は重みが0.9に設定され、256Byteの場合の重みが1に設定される。本実施形態では、例えばアクセスサイズが全て64Byteであれば、最大権利付加可能数「32」に対してアクセス権を40個付与できる。また、アクセスサイズが全て256Byteであれば、最大権利付加可能数「32」と同数のアクセス権を付与できる。本実施形態において、最大権利付与可能数が、アクセスサイズが最大の256Byteのアクセス要求に対してバスにアクセス権が滞留しない値に設定される場合、メモリアクセスに要する時間が短い64Byte及び128Byteのアクセス要求に対しては、最大権利付与可能数を超えるアクセス権の付与が可能となる。このようにすることで、アクセスサイズが小さい場合は、アクセス権の付与数を増やしてバッファに空きが生じる時間を短縮でき、メモリ効率を向上させることができる。一方で、アクセスサイズが大きい場合は、過度にアクセス権を付与することが抑制され、アクセス要求がバスに滞留することを抑制できる。
【0060】
本実施形態では、アクセスサイズに応じた重みを調整することで、効率重視の動作と、レイテンシ改善の動作とのバランスを調整することができる効果もある。例えば、メモリ効率を優先する場合は、アクセスサイズが小さいアクセス要求に対する重みを小さな値に設定することで、アクセスサイズが小さいアクセス要求に付与することができるアクセス権の数を増やすことができ、メモリ効率を重視した動作を実現できる。一方、アクセスサイズが小さいアクセス要求に対する重みを1に近い値に設定した場合は、アクセスサイズが小さいアクセス要求に付与することができるアクセス権の数の増加幅を抑制することができ、アクセス要求がバス内に滞留する可能性を低くしレイテンシ改善を重視した動作を実現できる。
【0061】
[実施形態2]
次いで、実施形態2を説明する。図5は、実施形態2に係る電子装置において用いられる権利付与選択制御部の構成例を示す。本実施形態において、電子装置の構成は、図1に示されるものと同様でよい。また、中央バス制御部の構成は、図2に示されるものと同様でよい。本実施形態において用いられる権利付与選択制御部501aは、図3に示される実施形態1において用いられた権利付与選択制御部501の構成に、アクセスサイズ履歴記憶部584が追加された構成である。また、権利付与選択制御部501における初期重み情報レジスタ581が重み生成部557で置き換えられた構成である。他の点は、実施形態1と同様でよい。
【0062】
アクセスサイズ履歴記憶部584は、リクエスト発行制御部から通知されるアクセスサイズ情報の履歴を記憶する。重み生成部557は、アクセスサイズ履歴記憶部584を参照し、アクセスサイズ履歴記憶部584に記憶されたアクセスサイズ情報の履歴に基づいて、マスタが発行すると推定されるアクセス要求のアクセスサイズに応じた重みを生成する。重み生成部557及びアクセスサイズ履歴記憶部584は、例えば電子装置10に含まれる複数のマスタのそれぞれに対応して配置される。各マスタに対応するアクセスサイズ履歴記憶部584は、それぞれ、各マスタに対応するリクエスト発行制御部から通知されるアクセスサイズ情報の履歴を記憶する。各マスタに対応する重み生成部557は、それぞれ各マスタに対応するアクセスサイズ履歴記憶部584を参照し、各マスタが発行すると推定されるアクセス要求のアクセスサイズに応じた重みを生成する。
【0063】
リクエスト発行制御部23、33、及び43(図1を参照)は、それぞれマスタA20、マスタB30、及びマスタX40が発行したアクセス要求をインターコネクト60側に出力する際に、アクセスサイズ情報を中央バス制御部50に出力する。アクセスサイズ履歴記憶部584は、例えばマスタごとに、所定数分のアクセスサイズ情報を記憶する。アクセスサイズ履歴記憶部584が記憶するアクセスサイズ情報の数は、特に限定されないが、例えば5個分とする。
【0064】
重み生成部557は、例えば、アクセスサイズ履歴記憶部584に記憶されたアクセスサイズ情報の履歴に基づいて、次にマスタが発行するアクセス要求のアクセスサイズを推定する。重み生成部557は、例えば5個分のアクセスサイズ情報を所定の統計手法で統計処理し、次にマスタが発行するアクセス要求のアクセスサイズを推定する。重み生成部557は、例えば直近の5個分のアクセスサイズ情報が示すアクセスサイズの平均値を、次にマスタが発行するアクセス要求のアクセスサイズの推定値とする。あるいは、重み生成部557は、平均値から所定の計算式を用いて算出された値を、次にマスタが発行するアクセス要求のアクセスサイズの推定値としてもよい。さらに、重み生成部557は、5個のアクセスサイズ情報のうちの最新のものが示すアクセスサイズを、次にマスタが発行するアクセス要求のアクセスサイズの推定値としてもよい。重み生成部557におけるアクセスサイズの推定手法は、例えば図示しないレジスタなどを用いて切替可能に構成されていてもよい。
【0065】
重み生成部557は、推定したアクセスサイズに対応した重みを生成する。重み生成部557には、例えば初期重み情報レジスタ581(図3を参照)に設定されるものと同様な重みが、初期値として設定されていてもよい。アクセス権付与先決定部551は、アクセス権の付与先のマスタを決定すると、重み生成部557から、そのマスタが次に発行するアクセス要求のアクセスサイズの推定値に対応した重みを取得する。付与可能判定部552は、アクセス権の付与時に、重み生成部557から取得された重みを用いて、付与中権利数レジスタ583に記憶される付与中権利数を更新する。
【0066】
補正量計算部554は、アクセス権が付与されたリクエスト発行制御部からアクセスサイズ情報が受信された場合、アクセス権の付与時に付与中権利数レジスタ583に加算された重みと、アクセスサイズ情報が示すアクセスサイズに対応した重みとの差に基づいて、付与中権利数レジスタ583に記憶される付与中権利数を補正する。また、返却量計算部555は、アクセス権が付与されたリクエスト発行制御部からアクセス権が返却された場合、付与中権利数レジスタ583に記憶される付与中権利数から、アクセス権の付与時に付与中権利数レジスタ583に加算された重みを減算する。
【0067】
ここで、権利付与選択制御部501aがリクエスト発行制御部にアクセス権を付与するタイミングから、リクエスト発行制御部からアクセスサイズ情報を受信するタイミングには、所定の時間差がある。また、権利付与選択制御部501aがリクエスト発行制御部にアクセス権を付与するタイミングから、リクエスト発行制御部からアクセス権返却信号を受信するタイミングには、所定の時間差がある。これら時間差を調整するために、補正量計算部554及び返却量計算部555は、重み生成部557が生成した重みを、データを所定時間だけ遅延させるためのFIFO(First In, First Out)などを介して受け取ってもよい。その場合、アクセス権の付与からアクセスサイズ情報の受信までの間に重み生成部557が生成する重みが変化した場合でも、補正量計算部554は、アクセス権の付与時に使用された重みを用いて付与中権利数を補正することができる。また、返却量計算部555は、アクセス権の付与時に使用された重みだけ付与中権利数を増加させることができる。
【0068】
[まとめ]
本実施形態では、重み生成部557は、実際に発生したアクセス要求のアクセスサイズに基づいて、マスタが発行するアクセス要求のアクセスサイズを推定し、アクセス権利付与時の重みを生成する。アクセスサイズの履歴情報を用いることで、マスタが発行するアクセス要求のアクセスサイズをより正確に推定することができ、推定したアクセスサイズに応じた重みを用いることで、レイテンシの悪化やメモリ効率の悪化を防止できる。
【0069】
[実施形態3]
続いて、実施形態3を説明する。図6は、実施形態3に係る電子装置に用いられるメモリコントローラを示す。本実施形態において、電子装置の構成は、図1に示されるものと同様でよい。また、中央バス制御部の構成は、図2に示されるものと同様でよい。本実施形態において、メモリコントローラ70bは、バッファ71に加えて、キャッシュ72、プリフェッチ制御部73、及び制御レジスタ74を有する。他の点は、実施形態1又は実施形態2と同様でよい。
【0070】
メモリ80へのメモリアクセスでは、メモリコントローラ70bからメモリ80へのリード時に、実際のアクセスサイズよりも少し余分にリード(プリフェッチ)し、キャッシュ72にためておくことで、余分にリードした部分に対してアクセスがあったとき(リードヒット)、メモリ80へのリードが発生せず、低レイテンシ化することができる。ただし、プリフェッチされたデータが利用されなかった場合や、利用される前にデータがキャッシュから追い出される場合、プリフェッチされたデータは無駄になり、メモリ80へのアクセス効率が下がる。本実施形態では、メモリコントローラ70bは、QoSなどの情報に基づいてプリフェッチを制御する。
【0071】
メモリコントローラ70bのプリフェッチ制御部73は、メモリ80へのリード時に、プリフェッチを行うか否かを決定する。制御レジスタ74には、プリフェッチの対象となるマスタを識別する情報、及びプリフェッチの際の最大アクセスサイズなどが記憶される。プリフェッチは、連続するアドレスに対するアクセス要求が発生する場合に有効であり、マスタのメモリアクセスの特性に応じて、プリフェッチが有効であるか否かが決まる。制御レジスタ74には、連続するアドレスに対してアクセス要求を発生するマスタが、プリフェッチの対象マスタとして設定される。プリフェッチ制御部73は、制御レジスタ74においてプリフェッチ対象として記憶されているマスタについて、プリフェッチを行うか否かを決定する。プリフェッチ制御部73は、プリフェッチを実施する場合は、プリフェッチしたデータをキャッシュ72に一時的に記憶する。プリフェッチ制御部73は、アクセス要求のアクセス種別がリードの場合、アクセスサイズ情報をキャッシュ72の先読みに使用することで、メモリアクセスを高効率化する。
【0072】
より詳細には、プリフェッチ制御部73は、中央バス制御部50bからアクセスサイズ情報を取得し、プリフェッチ対象のマスタが次に発行するアクセスサイズを予測する。また、プリフェッチ制御部73は、QoS情報レジスタ502(図2を参照)に記憶されるQoSの設定情報、及びアクセス権の直近の付与情報などに基づいて、プリフェッチ対象のマスタがこれからたくさんアクセス要求を発行するか否かを判断する。プリフェッチ制御部73は、バッファ71に格納されるアクセス要求の発行元のマスタを調べ、プリフェッチ対象のマスタとは異なるマスタが発行したアクセス要求がどれくらいバッファ71に格納されているかを調べる。プリフェッチ制御部73は、例えば、各マスタの直近のアクセスサイズ、QoS設定から予想される対象マスタのこれからの帯域、QoS設定から予想される他マスタの帯域、バッファ71に格納されている対象マスタが発行したアクセス要求の数、バッファ71に格納されている他マスタが発行したアクセス要求の数を総合的に判断し、プリフェッチを実施するか否かを決定する。
【0073】
例えば、バッファ71に対象マスタが発行したアクセス要求が多数格納されている場合、対象マスタは、それだけ多くのアクセス要求を発行しているため、プリフェッチが有効な可能性が高い。プリフェッチ制御部73は、対象マスタが多数のアクセス要求を発行している場合に、プリフェッチを実施すると決定してもよい。プリフェッチ制御部73は、更に、対象マスタが現在発行しているアクセス要求のアクセスサイズの比率を調べてもよい。マージ効果があるのは、対象マスタが最大のアクセスサイズでアクセス要求を発行している場合であるため、プリフェッチ制御部73は、そのような場合に、プリフェッチを実施すると決定してもよい。
【0074】
QoS設定については、例えば対象マスタの帯域が大きい場合、プリフェッチしたデータが利用される可能性が高い。また、対象マスタ以外の帯域が低い場合、プリフェッチを行った場合にキャッシュ72に記憶されるデータが上書きされるまでの猶予時間が長い。プリフェッチ制御部73は、対象マスタの帯域が大きいか、又は対象マスタ以外のマスタの帯域が低い場合に、プリフェッチを実施すると決定してもよい。プリフェッチ制御部73は、上記した事項などを総合的に判断し、プリフェッチを実施するか否かを決定すればよい。
【0075】
[まとめ]
本実施形態では、プリフェッチ制御部73は、マスタが発行したアクセス要求のアクセスサイズ、及びマスタへのアクセス権の付与状況などに基づいて、プリフェッチを実施するか否かを決定する。例えば、マスタが、連続したアドレスに同じアクセスサイズで多数のリード要求を出力することが見込まれる場合にプリフェッチを行うことで、メモリアクセスを効率的に実施することができる。特に、DDRメモリなどはリードサイズが一定以上ないと効率が著しく低下する場合があるため、プリフェッチがより有効である。
【0076】
[実施形態4]
[バスジェネレータ]
引き続き、実施形態4を説明する。本実施形態では、半導体装置におけるバスの回路情報の生成を、各種設定情報から生成するバスジェネレータを説明する。図7は、バスジェネレータ800のハードウェア構成例を示す。バスジェネレータ800は、例えば、CPU801、メモリ802、キーボード804、マウス805、モニタ806、及びバス807を含むコンピュータ装置として構成される。メモリ802には、コンピュータ装置をバスジェネレータ800として動作させるためのバス生成ツール803が記憶される。コンピュータ装置において、CPU801がメモリ802から読み出されたバス生成ツール803に従って処理を実行することで、コンピュータ装置をバスジェネレータ800として動作させることができる。
【0077】
図8は、バス設計の概略的なフローを示す。まず、市場におけるユースケースなどが想定され(ステップS101)、バスに求められる性能が検討される(ステップS102)。次いで、必要性能などに応じてバス構造が検討される(ステップS103)。バス構造の検討は、例えば中央バス制御部50(図1を参照)を用いるか否かの検討を含む。
【0078】
バス構造が決まると、決定したバス構造に対して必要な設定情報がバスジェネレータに入力される(ステップS104)。バスジェネレータは、バスの回路情報を生成し、出力する(ステップS105)。回路情報は、例えばRTL(Register Transfer Level)で記述される。その後、バスの回路情報は論理合成され(ステップS106)、次いでレイアウト設計が行われる(ステップS107)。ステップS104及びS105は、バスジェネレータを用いて設計が行われるフェーズを示す。
【0079】
図9は、設定情報の入力における画面例を示す。例えばモニタ806(図7参照)には、設定情報の入力を促す画面が表示され、ユーザは、キーボード804やマウス805を用いて、各種設定をバスジェネレータ800に与える。例えば、図9に示される画面において、ユーザがメニュー901から「QoS」を選択すると、サブメニュー902が表示される。ユーザがサブメニュー902において「初期値」を選択すると、マスタごとのアクセスサイズを入力ための入力画面903が表示される。ユーザは、入力画面903において、例えば中央制御方式を選択し、またキャッシュの有無などを選択することができる。ユーザは、入力画面903において、例えば初期重み情報レジスタ581(図3を参照)に設定される情報などを入力することができる。
【0080】
ユーザは、例えばメモリに対するアクセス要求を出力するマスタに関する情報として、マスタのアクセス先の情報、使用するクロックの情報、バス幅に関する情報、及び機能安全に関する情報などをバスジェネレータ800に入力する。また、マスタからアクセスされるスレーブに関する情報として、アドレス領域の情報、使用するクロックの情報、バス幅に関する情報、及び機能安全に関する情報などを入力する。さらに、アービタに関する情報として、QoS方式を指定する情報、及び各方式の詳細設定などを入力する。
【0081】
図10は、バスジェネレータへの入出力データを示す。バスジェネレータ800は、機能ブロックとして、例えば、バス構造情報生成部、バス部品生成部、中央バス制御部生成部、サブバスコントローラ生成部、及びマージ部などを有している。バスジェネレータ800には、クロック情報101、接続情報102、スレーブ情報103、マスタ情報104、QoS方式選択情報105、及びQoS方式の詳細設定情報106が入力される。これら情報は例えば図9に示される設定情報の入力画面を通じて入力される。
【0082】
バスジェネレータ800は、クロック情報101、接続情報102、スレーブ情報103、及びマスタ情報104などを用いて、マスタとスレーブとの間を接続するバスの構造情報を生成する。また、バスジェネレータ800は、生成したバスの構造情報と、例えば各種IPコアを提供するベンダーから提供される各種機能ブロックの回路情報とに基づいて、各種バス部品の回路情報を生成する。
【0083】
バスジェネレータ800は、バスの構造情報と、QoS方式選択情報105、各種機能ブロックの回路情報などを用いて、マスタが出力するアクセス要求に対してアクセス制御を行う中央バス制御部の回路情報を生成する。バスジェネレータ800が生成する中央バス制御部の回路情報は、例えば図2に示される中央バス制御部50の回路構成を示す。
【0084】
バスジェネレータ800は、中央バス制御部の回路情報用いて、中央バス制御部の制御に基づいて動作するサブバスコントローラの回路情報を生成する。サブバスコントローラの回路情報は、例えば図1に示されるサブバスコントローラ22、32、及び42の回路構成を示す。バスジェネレータ800は、バス部品の回路情報と、中央バス制御部の回路情報と、サブバスコントローラの回路情報とをマージし、バスの回路情報113を出力する。バスの回路情報113は、例えば図1に示される電子装置10における、各マスタからメモリ80までの間のバスに関する回路部分をRTLで記述したものである。
【0085】
[まとめ]
本実施形態では、バスシステムの生成にバスジェネレータ800が用いられる。バスジェネレータ800に各種設定情報などを入力することで、例えば図1に示される電子装置10の各マスタからメモリ80までの間のバスシステムを自動生成することができる。
【0086】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【0087】
10:電子装置
20、30、40:マスタA
22、32、42:サブバスコントローラ
23、33、43:リクエスト発行制御部
50:中央バス制御部
60:インターコネクト
70:メモリコントローラ
71:バッファ
72:キャッシュ
73:制御レジスタ
73:プリフェッチ制御部
74:制御レジスタ
80:メモリ
90:アクセス制御部
101:クロック情報
102:接続情報
103:スレーブ情報
104:マスタ情報
105:QoS方式選択情報
106:QoS詳細設定情報
113:回路情報
501:権利付与選択制御部
502:QoS情報レジスタ
503:付与可能最大数設定レジスタ
551:アクセス権付与先決定部
552:付与可能判定部
553:アクセス権付与部
554:補正量計算部
555:返却量計算部
557:重み生成部
581:初期重み情報レジスタ
582:サイズ別重み情報レジスタ
583:付与中権利数レジスタ
584:アクセスサイズ履歴記憶部
800:バスジェネレータ
802:メモリ
803:バス生成ツール
804:キーボード
805:マウス
806:モニタ
807:バス
901:メニュー
902:サブメニュー
903:入力画面
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10