(57)【要約】【課題】様々な条件下でも、バス上でのリクエスト滞留をなくし、メモリ効率を上げることを可能とする。【解決手段】マスタＡ２０、マスタＢ３０、及びマスタＸ４０は、それぞれメモリ８０に対するアクセス要求を発行する。メモリコントローラ７０は、バスを介してアクセス要求を受け付ける。中央バス制御部５０は、マスタのメモリ８０に対するアクセス権の付与を通じて、マスタが発行したアクセス要求のメモリコントローラ７０への出力を制御する。中央バス制御部５０は、アクセス権を付与することが可能な数を示す権利付与可能数を、アクセス権が付与されるマスタが発行するアクセス要求のアクセスサイズに基づいて管理し、権利付与可能数の範囲内でアクセス権の付与を実施する。【選択図】図１
2019220060.tif 000002
【特許請求の範囲】
【請求項１】
メモリに対してアクセス要求を発行するマスタと、
バスを介して前記マスタに接続され、前記アクセス要求に従って前記メモリにアクセスするメモリコントローラと、
前記マスタの前記メモリに対するアクセス権の付与を通じて、前記マスタが発行した前記アクセス要求の前記メモリコントローラへの出力を制御するアクセス制御を行うアクセス制御部と、を備え、
前記アクセス制御部は、前記アクセス権を付与することが可能な数を示す権利付与可能数を、前記アクセス権が付与されるマスタが発行するアクセス要求のアクセスサイズに基づいて管理し、該権利付与可能数の範囲内で前記アクセス権の付与を実施する半導体装置。
【請求項２】
前記アクセス制御部は、前記マスタが発行した前記アクセス要求を受け付けるリクエスト発行制御部を有するサブバスコントローラと、前記リクエスト発行制御部に前記アクセス権を付与することで、前記リクエスト発行制御部が受け付けるアクセス要求の発行元のマスタに対してアクセス権を付与する中央バス制御部とを含み、
前記リクエスト発行制御部は、前記中央バス制御部から前記アクセス権が付与されている場合は前記アクセス要求を前記メモリコントローラへ出力し、前記アクセス権が付与されていない場合は前記アクセス要求の前記メモリコントローラへの出力を抑止する請求項１に記載の半導体装置。
【請求項３】
前記中央バス制御部は、前記マスタに前記アクセス権を付与するたびに、前記アクセス権が付与されるマスタが発行するアクセス要求のアクセスサイズに応じた重みを前記権利付与可能数から減算する請求項２に記載の半導体装置。
【請求項４】
前記中央バス制御部は、前記マスタに対して前記アクセス権を付与している数を示す付与中権利数を、前記アクセス権が付与されるマスタが発行するアクセス要求のアクセスサイズに基づいて管理し、
前記権利付与可能数は、前記アクセス権の最大付与数を示す権利付与最大数と前記付与中権利数との差で表される請求項２に記載の半導体装置。
【請求項５】
前記中央バス制御部は、前記マスタに前記アクセス権を付与するたびに、前記アクセス権の付与の対象となるアクセス要求のアクセスサイズに応じた重みを前記付与中権利数に加算する請求項４に記載の半導体装置。
【請求項６】
前記中央バス制御部は、前記アクセス権の付与時は、前記マスタが発行すると推定されるアクセス要求のアクセスサイズに応じた重みを前記付与中権利数に加算する請求項５に記載の半導体装置。
【請求項７】
前記リクエスト発行制御部は、前記アクセス要求をメモリコントローラへ出力する場合、該メモリコントローラへ出力するアクセス要求のアクセスサイズを前記中央バス制御部に通知し、
前記中央バス制御部は、前記リクエスト発行制御部から通知されたアクセスサイズに基づいて前記付与中権利数を補正する請求項６に記載の半導体装置。
【請求項８】
前記中央バス制御部は、前記推定されるアクセス要求のアクセスサイズに応じた重みと、前記リクエスト発行制御部から通知されたアクセスサイズに応じた重みとの差に基づいて、前記付与中権利数を補正する請求項７に記載の半導体装置。
【請求項９】
前記アクセスサイズと前記重みとを対応付けて記憶するサイズ別重み情報記憶部を更に有し、
前記中央バス制御部は、前記重み情報記憶部を参照して前記通知されたアクセスサイズに応じた重みを取得する請求項８に記載の半導体装置。
【請求項１０】
前記リクエスト発行制御部は、前記アクセス要求をメモリコントローラへ出力する場合、該メモリコントローラへ出力するアクセス要求のアクセスサイズを前記中央バス制御部に通知し、
前記中央バス制御部は、前記リクエスト発行制御部から通知されるアクセスサイズの履歴を取得し、該取得したアクセスサイズの履歴に基づいて、前記マスタが発行すると推定されるアクセス要求のアクセスサイズに応じた重みを生成する請求項６に記載の半導体装置。
【請求項１１】
前記メモリコントローラは、前記アクセス要求を受け付けて記憶するリクエストバッファを有しており、該リクエストバッファに記憶されたアクセス要求に基づくメモリアクセスが処理されて前記リクエストバッファのエントリが開放されると、前記リクエストバッファが開放された旨を示す開放通知信号を前記中央バス制御部に出力し、かつ前記処理されたアクセス要求のアクセスサイズとを前記中央バス制御部に通知し、
前記中央バス制御部は、前記メモリコントローラから前記開放通知信号を受け取ると、前記メモリコントローラから通知されるアクセスサイズに応じた重みを前記付与中権利数から減算する請求項７に記載の半導体装置。
【請求項１２】
前記リクエスト発行制御部は、前記中央バス制御部から前記アクセス権が付与されている場合で、かつ前記マスタから前記アクセス要求を受け付けていない場合は、前記アクセス権を前記中央バス制御部に返却し、
前記中央バス制御部は、前記リクエスト発行制御部からアクセス権が返却されると、前記推定されるアクセス要求のアクセスサイズに応じた重みを前記付与中権利数から減算する請求項７に記載の半導体装置。
【請求項１３】
前記マスタ及び前記サブバスコントローラを複数有し、
前記複数のマスタから出力されるアクセス要求を調停して前記メモリコントローラに出力するインターコネクトを更に備え、
前記複数のサブバスコントローラは、前記複数のマスタのそれぞれに対応して、前記マスタと前記インターコネクトとの間に配置される請求項２に記載の半導体装置。
【請求項１４】
前記メモリコントローラは、キャッシュと、前記アクセス要求がリードの場合に該アクセス要求のアクセスサイズのデータよりもサイズが大きいデータを前記メモリから取得して前記キャッシュに記憶するプリフェッチを制御するプリフェッチ制御部とを更に有し、
前記プリフェッチ制御部は、前記マスタが発行したアクセス要求のアクセスサイズ、及び前記マスタへの前記アクセス権の付与状況に基づいて、プリフェッチを実施するか否かを決定する請求項１に記載の半導体装置。
【請求項１５】
メモリに対してアクセス要求を発行する第１及び第２のマスタと、
バスを介して前記第１のマスタ及び前記第２のマスタに接続され、前記アクセス要求に従って前記メモリにアクセスするメモリコントローラと、
前記第１のマスタ及び前記第２のマスタから出力される前記アクセス要求を調停して、前記メモリコントローラへ出力するインターコネクトと、
前記第１のマスタと前記インターコネクトとの間に接続され、前記第１のマスタが発行した前記アクセス要求を受け付ける第１のリクエスト発行制御部を有する第１のサブバスコントローラと、
前記第２のマスタと前記インターコネクトとの間に接続され、前記第２のマスタが発行した前記アクセス要求を受け付ける第２のリクエスト発行制御部を有する第２のサブバスコントローラと、
前記第１のリクエスト発行制御部及び前記第２のリクエスト発行制御部にアクセス権を付与する中央バス制御部と、
を備え、
前記第１のリクエスト発行制御部及び前記第２のリクエスト発行制御部は、前記中央バス制御部から前記アクセス権が付与されている場合は前記アクセス要求を出力し、前記アクセス権が付与されていない場合は前記アクセス要求の出力を抑止し、
前記アクセス制御部は、前記第１のリクエスト発行制御部及び前記第２のリクエスト制御部に対して前記アクセス権を付与することが可能な数を示す権利付与可能数を、前記アクセス権が付与されるアクセス要求のアクセスサイズに基づいて管理し、該権利付与可能数の範囲内で前記アクセス権の付与を実施する半導体装置。
【請求項１６】
前記中央バス制御部は、前記第１のリクエスト発行制御部及び前記第２のリクエスト発行制御部に前記アクセス権を付与するたびに、前記アクセス権が付与されるアクセス要求のアクセスサイズに応じた重みを前記権利付与可能数から減算する請求項１５に記載の半導体装置。
【請求項１７】
前記中央バス制御部は、前記第１のリクエスト発行制御部及び前記第２のリクエスト発行制御部に対して前記アクセス権を付与している数を示す付与中権利数を、前記アクセス権が付与されるアクセス要求のアクセスサイズに基づいて管理し、
前記権利付与可能数は、前記アクセス権の最大付与数を示す権利付与最大数と前記付与中権利数との差で表される請求項１５に記載の半導体装置。
【請求項１８】
前記中央バス制御部は、前記第１のリクエスト発行制御部及び前記第２のリクエスト発行制御部に前記アクセス権を付与するたびに、前記アクセス権の付与の対象となるアクセス要求のアクセスサイズに応じた重みを前記付与中権利数に加算する請求項１７に記載の半導体装置。
【請求項１９】
前記中央バス制御部は、前記アクセス権の付与時は、前記マスタが発行すると推定されるアクセス要求のアクセスサイズに応じた重みを前記付与中権利数に加算する請求項１８に記載の半導体装置。
【請求項２０】
半導体装置におけるバスを生成するバスジェネレータであって、
メモリに対するアクセス要求を出力するマスタに関する情報と、前記マスタからアクセスされるスレーブの情報とに基づいて、前記マスタと前記スレーブとの間を接続するバスの構造情報を生成するバス構造情報生成部と、
前記バスの構造情報、前記マスタのサービス品質情報、前記アクセス要求のアクセスサイズに関する情報、及び機能ブロックの回路情報を用いて、前記マスタが出力するアクセス要求に対してアクセス制御を行う中央バス制御部の回路情報を生成する中央バス制御部生成部と、
前記中央バス制御部の回路情報を用いて、前記中央バス制御部の制御に基づいて動作するサブバスコントローラの回路情報を生成するサブバスコントローラ生成部と、
前記バスの構造情報、及び機能ブロックの回路情報を用いて、バス部品の回路情報を生成するバス部品生成部と、
前記中央バス制御部の回路情報、前記サブバスコントローラの回路情報、及び前記バス部品の回路情報をマージし、前記バスの回路情報を生成するマージ部と、を備えるバスジェネレータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体装置に関し、例えばメモリへのアクセスを行う半導体装置に関する。
【０００２】
また、本発明は、上記半導体装置におけるバスを生成するバスジェネレータに関する。
【背景技術】
【０００３】
特許文献１は、複数のバスマスタが共通バスに接続するバスシステムにおけるアクセス制御を開示する。特許文献１に記載される半導体装置は、複数のマスタと、メモリコントローラと、複数のマスタとメモリコントローラとを接続するバスと、中央バス制御部とを有する。特許文献１には、中央バス制御部が、各マスタの転送量をモニタし、各マスタの予約ハンド幅とモニタした転送量と権利付与可能数とに基づいて、アクセス権の付与先のマスタを選択することが記載されている。特許文献１において、アクセス権が付与されていないマスタのリクエストは、メモリコントローラとマスタとの間のバスでマスクされる。
【０００４】
特許文献１において、中央バス制御部は、メモリコントローラ内のバッファが開放された場合に、メモリコントローラからバッファ開放通知を受け取る。中央バス制御部は、アクセス権を付与するたびに権利付与可能数を１つ減らし、バッファが解放されるたびに権利付与可能数を１つ増やす。メモリコントローラにおける処理状況に応じてアクセス権の付与を行うことで、バッファが未処理のアクセス要求で一杯になることを避けることができ、低レイテンシが要求されるアクセス要求が、メモリコントローラによって受け付けられない事態を回避することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第２０１７／０５６１３２号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ここで、マスタが要求するメモリアクセスのデータサイズ（アクセスサイズ）は常に一定ではなく、あるアクセス要求のアクセスサイズは、他のアクセス要求のアクセスサイズよりも小さいことがあり得る。一般に、メモリアクセスに要する時間（アクセス時間）はアクセスサイズに応じて異なり、アクセスサイズが大きいほどアクセス時間は長くなる。特許文献１では、このようなアクセス時間の違いを考慮しておらず、マスタのアクセスサイズが一定ではない場合に、低レイテンシで効率が高いメモリアクセスを実現できない場合があり得る。
【０００７】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００８】
一実施の形態によれば、半導体装置は、マスタのメモリに対するアクセス権の付与を通じて、マスタが発行したアクセス要求のメモリコントローラへの出力を制御するアクセス制御を行うアクセス制御部を備える。アクセス制御部は、権利付与可能数を、マスタが発行するアクセス要求のアクセスサイズに基づいて管理し、権利付与可能数の範囲内でアクセス権の付与を実施する。
【発明の効果】
【０００９】
前記一実施の形態によれば、様々な条件下でも、バス上でのリクエスト滞留をなくし、メモリ効率を上げることができる。
【図面の簡単な説明】
【００１０】
【図１】実施形態１に係る半導体装置を含む電子装置を示すブロック図。
【図２】中央バス制御部の構成例を示すブロック図。
【図３】権利付与選択制御部の構成例を示すブロック図。
【図４】権利付与可能数の管理に関わる部分の動作手順を示すフローチャート。
【図５】実施形態２に係る半導体装置を含む電子装置において用いられる権利付与選択制御部の構成例を示すブロック図。
【図６】実施形態３に係る半導体装置を含む電子装置に用いられるメモリコントローラを示すブロック図。
【図７】バスジェネレータのハードウェア構成例を示すブロック図。
【図８】バス設計の概略的なフローを示すフローチャート。
【図９】設定情報の入力における画面例を示す図。
【図１０】バスジェネレータへの入出力データを示すブロック図。
【発明を実施するための形態】
【００１１】
実施の形態の説明に先立って、下記の実施の形態を想到するに至った経緯について説明する。ＤＤＲ（Double-Data-Rate）メモリへアクセスするマスタを有する実際の製品では、ＤＤＲメモリのバンド幅の実効帯域が状況に応じて５０％〜７５％程度とばらつきがあり、高効率化が切望されていた。また、リアルタイム性が要求されるマスタについてはアクセスレイテンシを短くする必要があるが、これもばらつきがあり、常に低レイテンシにする必要があった。ある程度レイテンシが許容される場合、メモリコントローラ内にメモリへのアクセス要求がある程度貯まるまで待機し、その後、メモリアクセスの種別（リード及びライト）やアドレスなどを考慮してアクセス要求の処理順番を入れ替えるスケジューリングなどを行うことで、メモリアクセス効率を高めることができる。しかしながら、優先度が高い低レイテンシが要求されるリクエストを優先する場合、メモリコントローラ内にある程度の数のアクセス要求が貯まるまで待機することができず、スケジューリング対象のアクセス要求の数が少なくなる。このため、効率的なメモリアクセスが実現できず、バンド幅効率が低下する。従って、メモリアクセスシステムでは、これら相反する要求に応える必要があった。
【００１２】
本発明者らが検討した結果、マスタに対してアクセス権が付与されてからメモリコントローラのバッファが開放されるまでの時間にはばらつきがあり、これに起因して帯域やレイテンシにばらつきが発生していることがわかった。また、ばらつきの原因のとして、各リクエストのアクセスサイズや種類などがあることが分かった。特許文献１において、マスタとメモリコントローラとの間のデータ転送量は、アクセス権が付与されるアクセス要求の数とアクセスサイズとの積で表される。例えば、アクセスサイズが小さいアクセス要求に対して所定数だけアクセス権が付与される場合、アクセスサイズが大きいアクセス要求に対して所定数だけアクセス権が付与される場合に比べてデータ転送量が少なく、従ってメモリアクセスの効率が低下する。一方で、アクセスサイズが大きいアクセス要求に対して同じ数のアクセス権を付与すると、メモリアクセス効率は向上できるものの、アクセス時間が長くなることで、低レイテンシが実現できない可能性がある。本発明者らは、アクセスサイズが一定ではない場合でも、高効率なメモリアクセスを低レイテンシで実現可能なバスシステムについて検討した結果、下記の実施の形態を想到するに至った。
【００１３】
以下、図面を参照しつつ、上記課題を解決するための手段を適用した実施形態を詳細に説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、ＣＰＵ（Central Processing Unit）、メモリ、又はその他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、又はそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、何れかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００１４】
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスク）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Read Only Memory）ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、及び半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ（Random Access Memory））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の優先通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００１５】
以下の実施の形態においては便宜上その必要があるときは、複数のセクション又は実施の形態に分割して説明するが、特に明示した場合を除き、それらはお互いに無関係なものではなく、一方は他方の一部又は全部の変形例、応用例、詳細説明、又は補足説明等の関係にある。また、以下の実施の形態において、要素の数等（個数、数値、量、範囲等を含む）に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
【００１６】
さらに、以下の実施の形態において、その構成要素（動作ステップ等も含む）は、特に明示した場合及び原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではない。同様に、以下の実施の形態において、構成要素等の形状、又は位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数等（個数、数値、量、範囲等を含む）についても同様である。
【００１７】
［実施形態１］
図１は、実施形態１に係る半導体装置を含む電子装置を示す。電子装置１０は、マスタＡ２０、マスタＢ３０、マスタＸ４０、サブバスコントローラ２２、３２、及び４２、中央バス制御部５０、インターコネクト６０、メモリコントローラ７０、並びにメモリ８０を有する。電子装置１０の構成要素のうち、例えば、マスタＡ２０、マスタＢ３０、マスタＸ４０、サブバスコントローラ２２、３２、及び４２、中央バス制御部５０、インターコネクト６０、並びにメモリコントローラ７０は、半導体装置を構成する。半導体装置の構成要素のうち、例えばサブバスコントローラ２２、３２、及び４２、インターコネクト６０、並びにメモリコントローラ７０は、ハードウェア回路として構成され得る。また、中央バス制御部５０は、例えばプロセッサを含んだ回路として構成され得る。
【００１８】
マスタＡ２０、マスタＢ３０、及びマスタＸ４０は、メモリ８０に対してアクセス要求を発行する。メモリ８０は、例えばＤＤＲ−ＳＤＲＡＭ（Double-Data-Rate Synchronous Dynamic Random Access Memory）などのメモリデバイスとして構成される。マスタＡ２０、マスタＢ３０、及びマスタＸ４０は、バスマスタであり、例えばＣＰＵやＧＰＵ（Graphics Processing Unit）などのプロセッサとして構成される。マスタＡ２０、マスタＢ３０、及びマスタＸ４０は、それぞれ対応するバス２１、３１、及び４１を通じてアクセス要求を出力する。
【００１９】
ここで、メモリ８０に対するアクセス要求は、リード又はライトを示すアクセス種別、アクセス先のアドレス情報、データサイズ（アクセスサイズ）を示す情報などを含む。アクセスサイズは、メモリ８０から読み出され、或いはメモリ８０に書き込まれるデータのサイズを示す。アクセスサイズは、例えば６４Ｂｙｔｅ、１２８Ｂｙｔｅ、及び２５６Ｂｙｔｅなどを含む。
【００２０】
マスタＡ２０は、バス２１を介して対応するサブバスコントローラ２２に接続される。サブバスコントローラ２２は、バス２４を介してインターコネクト６０に接続される。サブバスコントローラ２２は、リクエスト発行制御部２３を含む。リクエスト発行制御部２３は、バス２１を介してマスタＡ２０が発行したアクセス要求を受け付け、受け付けたアクセス要求のバス２４への出力を制御する。
【００２１】
マスタＢ３０は、バス３１を介して対応するサブバスコントローラ３２に接続される。サブバスコントローラ３２は、バス３４を介してインターコネクト６０に接続される。サブバスコントローラ３２は、リクエスト発行制御部３３を含む。同様に、マスタＸ４０は、バス４１を介して対応するサブバスコントローラ４２に接続される。サブバスコントローラ４２は、バス４４を介してインターコネクト６０に接続される。サブバスコントローラ４２は、リクエスト発行制御部４３を含む。
【００２２】
リクエスト発行制御部２３は、マスタＡ２０からアクセス要求を受け付ける。リクエスト発行制御部２３は、中央バス制御部５０からアクセス権が付与されている場合は、マスタＡ２０が発行したアクセス要求を、バス２４を介してインターコネクト６０に出力する。リクエスト発行制御部２３は、アクセス要求をインターコネクト６０に出力する場合、そのアクセス要求のアクセスサイズを示す情報（以下、アクセスサイズ情報とも呼ぶ）を中央バス制御部５０に出力する。リクエスト発行制御部２３は、アクセス権が付与されていない場合は、マスタＡ２０が発行したアクセス要求のインターコネクト６０への出力を抑止する。
【００２３】
リクエスト発行制御部３３及び４３の機能は、リクエスト発行制御部２３の機能と同様である。リクエスト発行制御部２３、３３、及び４３は、アクセス権が付与された場合で、かつ対応するマスタからアクセス要求を受け取っていなかった場合は、アクセス権返却信号を中央バス制御部５０に出力し、アクセス権を返却してもよい。中央バス制御部５０は、返却されたアクセス権を、他のリクエスト発行制御部へのアクセス権の付与に使用できる。
【００２４】
インターコネクト６０は、バス２４、３４、及び４４を介して、マスタＡ２０、マスタＢ３０、及びマスタＸ４０が発行したアクセス要求を受け取る。インターコネクト６０は、例えばバスアービタであり、複数のマスタから入力されるアクセス要求を調停する。インターコネクト６０は、例えばマスタＡ２０、マスタＢ３０、及びマスタＸ４０からアクセス要求を受け取った場合は、各マスタに設定された優先度に従って、優先度が高いマスタが発行したアクセス要求をメモリコントローラ７０に出力する。インターコネクト６０は、メモリコントローラ７０に出力したアクセス要求に対するレスポンスが得られると、次に優先度が高いマスタのアクセス要求を選択してメモリコントローラ７０に出力する。
【００２５】
メモリコントローラ７０は、バス、及びインターコネクト６０などを介してマスタＡ２０、マスタＢ３０、及びマスタＸ４０に接続され、インターコネクト６０を通じて受け付けたアクセス要求に従ってメモリ８０にアクセスする。なお、図１では電子装置１０がマスタを３つ有する例が示されているが、マスタの数は特に限定されない。電子装置１０は、メモリコントローラ７０に対してメモリ８０へのアクセス要求を発行するマスタを少なくとも１つ有していればよい。マスタの数が１つである場合、調停のためのインターコネクト６０は不要である。
【００２６】
メモリコントローラ７０は、バッファ（リクエストバッファ）７１を有する。バッファ７１は、メモリコントローラ７０がインターコネクト６０を介して受け付けたアクセス要求を記憶する。バッファ７１は、複数のエントリを有しており、複数のアクセス要求を記憶可能に構成される。メモリコントローラ７０は、バッファ７１以外に、例えば、バッファ７１に記憶された複数のアクセス要求の１つを選択するスケジューラと、選択されたアクセス要求に従ってメモリ８０にアクセスするためのメモリコマンド（コマンド信号）を生成するメモリコマンド生成部を有している。メモリコントローラ７０は、バッファ７１からアクセス要求が選択されて処理されると、バッファ７１のエントリが解放された旨を示すバッファ解放通知を中央バス制御部５０に出力する。また、メモリコントローラ７０は、開放されたバッファに記憶されていたアクセス要求のアクセスサイズ情報を、開放アクセスサイズ情報として中央バス制御部５０に出力する。
【００２７】
中央バス制御部５０は、サブバスコントローラ２２、３２、及び４２を用い、各マスタに対するアクセス権の付与を通じて、各マスタが発行したアクセス要求のメモリコントローラ７０への出力を制御するアクセス制御を実施する。中央バス制御部５０は、リクエスト発行制御部２３、３３、及び４３にアクセス権を付与することで、各リクエスト発行制御部が受け付けるアクセス要求の発行元のマスタに対してアクセス権を付与する。中央バス制御部５０は、サブバスコントローラ２２、３２、及び４２と共に、アクセス制御部９０を構成する。
【００２８】
ユーザは、例えば中央バス制御部５０にあらかじめ各マスタの帯域を設定し、一定時間（スロット）内のＱｏＳ（Quality of Service）を保証する。本実施形態において、マスタがアクセス種別ごとに存在するものとみなされ、例えばアクセス種別がリードのアクセス要求（以下、リード要求とも呼ぶ）と、アクセス種別がライトのアクセス要求（以下、ライト要求とも呼ぶ）とのそれぞれに対して帯域が設定されていてもよい。中央バス制御部５０は、リクエスト発行制御部２３、３３、及び４３のそれぞれに対して、例えば所定のアクセス制御の内容に従ってアクセス権を付与する。アクセス制御の内容は、例えば特許文献１に記載されたものと同様でよい。特許文献１に記載の内容は、参照として本明細書に取り込まれる。
【００２９】
中央バス制御部５０は、例えば各マスタのリード要求及びライト要求に対して設定されたＱｏＳ情報に基づいて、各マスタに対応するリクエスト発行制御部２３、３３、及び４３に対してアクセス権を付与するか否かを決定する。このとき、中央バス制御部５０は、バス２４、３４、及び４４から取得されたリクエストモニタ（トランザクションモニタ信号）によってバスを流れるトランザクションを監視し、トランザクションの転送量に基づいてスロットごとに補正しながらアクセス権を付与してもよい。中央バス制御部５０は、アクセス権の付与を通じて、各マスタが発行するリード要求及びライト要求のメモリコントローラ７０への出力を制御する。
【００３０】
中央バス制御部５０は、マスタに対してアクセス権を付与することが可能な数を示す権利付与可能数を、アクセス権が付与されるマスタが発行するアクセス要求のアクセスサイズに基づいて管理し、権利付与可能数の範囲内でアクセス権の付与を実施する。中央バス制御部５０は、例えば、マスタにアクセス権を付与するたびに、権利付与可能数を、アクセス権が付与されるマスタが発行するアクセス要求のアクセスサイズに応じた重みだけ減少させる。中央バス制御部５０は、メモリコントローラ７０からバッファ開放通知を受け取ると、権利付与可能数を、開放アクセスサイズ情報が示すアクセスサイズに応じた重みだけ増加させる。アクセスサイズに対する重み（その値）は、例えば設計やシミュレーション結果などに基づいて決定される。
【００３１】
［中央バス制御部］
図２は、中央バス制御部５０の構成例を示す。中央バス制御部５０は、権利付与選択制御部５０１、ＱｏＳ情報レジスタ５０２、及び付与可能最大数設定レジスタ５０３を有する。なお、図２では、図１に示されるトランザクションモニタ信号は、図示を省略している。
【００３２】
ＱｏＳ情報レジスタ５０２は、各マスタのＱｏＳ情報を記憶する。ＱｏＳ情報レジスタ５０２には、例えば一定時間（スロット）を複数の期間で分割した時間をサブスロットとして、各マスタの１サブスロットあたりの予約転送量、及び各マスタの優先レベルが格納される。あるいは、ＱｏＳ情報レジスタ５０２には、各マスタについて１サブスロットあたりの目標転送量が格納されてもよい。
【００３３】
権利付与選択制御部５０１は、リクエスト発行制御部２３、３３、及び４３（図１を参照）に対してアクセス権を付与する。権利付与選択制御部５０１は、アクセス権の付与に際して、どのリクエスト発行制御部にアクセス権を付与するかを決定（選択）する。権利付与選択制御部５０１は、例えばＱｏＳ情報レジスタ５０２から読み出した予約バンド幅及び優先レベルと、各マスタのサブスロットにおける転送量とを用いて、アクセス権を付与するリクエスト発行制御部を決定する。あるいは、権利付与選択制御部５０１は、ＱｏＳ情報レジスタ５０２から読み出した目標転送量を用いて、アクセス権を付与するリクエスト発行制御部を決定してもよい。
【００３４】
権利付与選択制御部５０１は、アクセス権の付与先のリクエスト発行制御部に、アクセス権を獲得した旨を示すアクセス権付与信号を出力する。権利付与選択制御部５０１は、例えばアクセス権の付与先のリクエスト発行制御部に出力するアクセス権付与信号をアサートし、アクセス権を付与しないリクエスト発行制御部に出力するアクセス権付与信号はネゲートしたままとする。権利付与選択制御部５０１は、例えばサブスロットごとに、アクセス権を付与するマスタを決定する。
【００３５】
付与可能最大数設定レジスタ５０３は、権利付与選択制御部５０１が同時期にアクセス権を付与することが可能なアクセス権の付与可能数の最大数（最大権利付与可能数）を格納する。最大権利付与可能数は、例えば権利付与選択制御部５０１が、アクセスサイズが最大のアクセス要求に対して最大権利付与可能数だけアクセス権を付与する場合に、バス内にアクセス要求が滞留しない数に設定される。権利付与選択制御部５０１は、付与可能最大数設定レジスタ５０３に格納される最大権利付与可能数を上限として、アクセス権の権利付与可能数を計算し、計算した権利付与可能数の範囲で、アクセス権の付与を行う。
【００３６】
本実施形態において、権利付与選択制御部５０１は、各マスタが発行するアクセス要求のアクセスサイズと最大権利付与可能数とに基づいて権利付与可能数を管理する。権利付与選択制御部５０１は、例えば、アクセスサイズに基づいてアクセス権を付与している権利数（付与中権利数）を管理する。権利付与選択制御部５０１は、付与可能最大数設定レジスタ５０３に設定された最大権利付与可能数と付与中権利数との差を、残りの権利付与可能数として管理する。権利付与選択制御部５０１は、権利付与可能数の範囲内でアクセス権の付与を実施する。
【００３７】
［権利付与選択制御部］
図３は、権利付与選択制御部５０１の構成例を示す。権利付与選択制御部５０１は、アクセス権付与先決定部５５１、付与可能判定部５５２、アクセス権付与部５５３、補正量計算部５５４、返却量計算部５５５、初期重み情報レジスタ５８１、サイズ別重み情報レジスタ５８２、及び付与中権利数レジスタ５８３を有する。なお、図３では、図２のＱｏＳ情報レジスタ５０２などが出力する信号については図示を省略している。
【００３８】
初期重み情報レジスタ５８１は、マスタと、そのマスタが発行すると推定されるアクセス要求のアクセスサイズに応じた重みとを対応付けて記憶する。初期重み情報レジスタ５８１は、例えばマスタＡ２０と重み「１」とを対応付けて記憶し、マスタＢ２０と重み「０．８」とを対応付けて記憶し、マスタＸ４０と重み「０．９」とを対応付けて記憶する。サイズ別重み情報レジスタ５８２は、アクセスサイズと、そのアクセスサイズに応じた重みとを対応付けて記憶する。サイズ別重み情報レジスタ５８２は、例えばアクセスサイズ２５６Ｂｙｔｅと重み「１」とを対応付けて記憶し、アクセスサイズ１２８Ｂｙｔｅと重み０．９とを対応付けて記憶し、アクセスサイズ６４Ｂｙｔｅと重み「０．８」とを対応付けて記憶する。初期重み情報レジスタ５８１及びサイズ別重み情報レジスタ５８２には、図示しないＣＰＵなどを用いて、それぞれマスタごとの重み、及びアクセスサイズごとの重みが設定される。
【００３９】
アクセス権付与先決定部５５１は、アクセス権を付与するマスタを決定する。アクセス権付与先決定部５５１は、初期重み情報レジスタ５８１から決定したマスタに対応する重みを取得し、付与可能判定部５５２に送信する。なお、初期重み情報レジスタ５８１に代えて、マスタと、そのマスタが発行すると推定されるアクセス要求のアクセスサイズとを記憶する初期サイズ情報レジスタが用いられてもよい。その場合、アクセス権付与先決定部５５１は、初期サイズ情報レジスタから決定したマスタに対応するアクセスサイズを取得し、取得したアクセスサイズに対応する重みをサイズ別重み情報レジスタ５８２から取得してもよい。
【００４０】
付与中権利数レジスタ５８３は、付与されているアクセス権の数（付与中権利数）を記憶する。付与可能判定部５５２は、付与可能最大数設定レジスタ５０３と付与中権利数レジスタ５８３とを参照し、アクセス権付与先決定部５５１がアクセス権の付与先として決定したマスタにアクセス権の付与が可能であるか否かを判定する。より詳細には、付与可能判定部５５２は、付与可能最大数設定レジスタ５０３に記憶される最大権利付与可能数と、付与中権利数レジスタ５８３に記憶される付与中権利数との差（権利付与可能数）を計算する。付与可能判定部５５２は、計算した権利付与可能数と、アクセス権付与先決定部５５１から受け取った、アクセス権の付与先として決定されたマスタが発行すると推定されるアクセス要求のアクセスサイズに応じた重みとを比較する。付与可能判定部５５２は、権利付与可能数がアクセス権付与先決定部５５１から受け取った重み以上であれば、アクセス権の付与が可能と判定する。付与可能判定部５５２は、権利付与可能数がアクセス権付与先決定部５５１から受け取った重みよりも小さい場合は、アクセス権が付与できないと判定する。
【００４１】
付与可能判定部５５２は、アクセス権の付与が可能と判定すると、アクセス権付与部５５３に、アクセス権付与先決定部５５１が決定したマスタへのアクセス権の付与を指示する。また、付与可能判定部５５２は、付与中権利数レジスタ５８３に記憶される付与中権利数に、アクセス権付与先決定部５５１から受け取った重みを加算することで、付与中権利数を更新する。付与可能判定部５５２は、マスタに対してアクセス権が付与されるたびに、アクセス権が付与されるマスタが発行すると推定されるアクセス要求のアクセスサイズに応じた重みを、付与中権利数に加算する。
【００４２】
本実施形態において、付与中権利数は、アクセスサイズに応じた重みで重み付けされている。例えば、付与されているアクセス権の数が「１０」である場合、アクセス要求のアクセスサイズが全て６４Ｂｙｔｅであれば、付与中権利数は１０×０．８＝８となる。付与されているアクセス権の数が「１０」で、アクセス要求のアクセスサイズが全て２５６Ｂｙｔｅであれば、付与中権利数は１０×１＝１０となる。本実施形態において、最大権利付与可能数と付与中権利数との差で表される権利付与可能数はアクセスサイズに応じて変化し、アクセスサイズが小さいアクセス要求に対してアクセス権が付与されている場合、アクセスサイズが大きいアクセス要求に対してアクセス権が付与されている場合に比べて権利付与可能数が増加する。
【００４３】
リクエスト発行制御部２３、３３、及び４３（図１を参照）は、アクセス権付与部５５３からアクセス権が付与されている場合で、かつ対応するマスタからアクセス要求を受け取っている場合は、付与されたアクセス権を使用し、インターコネクト６０にアクセス要求を出力する。このときリクエスト発行制御部は、アクセスサイズ情報を中央バス制御部５０に出力する。中央バス制御部５０において、権利付与選択制御部５０１の補正量計算部５５４は、リクエスト発行制御部から出力されたアクセスサイズ情報が示すアクセスサイズに基づいて、アクセス権の付与時に初期重み情報レジスタ５８１に記憶される重みを用いて計算された付与中権利数を補正する。補正量計算部５５４は、例えば、初期重み情報レジスタ５８１に記憶される、マスタが発行すると推定されるアクセス要求のアクセスサイズに応じた重みと、リクエスト発行制御部から通知されたアクセスサイズに応じた重みとの差に基づいて、付与中権利数を補正する。
【００４４】
より詳細には、例えばマスタＡ２０がアクセス権の付与先である場合、付与可能判定部５５２は、アクセス権の付与時に、初期重み情報レジスタ５８１に記憶される重み「１」を付与中権利数に加算する。リクエスト発行制御部２３は、実際にマスタＡ２０が発行したアクセス要求のアクセスサイズが１２８Ｂｙｔｅであった場合は、アクセスサイズ情報１２８Ｂｙｔｅを補正量計算部５５４に通知する。補正量計算部５５４は、サイズ別重み情報レジスタ５８２から１２８Ｂｙｔｅに対応する重み「０．９」を取得し、取得した重み「０．９」と初期重み情報レジスタ５８１に記憶される重み「１」との差の分だけ付与中権利数を補正する。この場合は、推定されたアクセスサイズに対応する重みが、実際のアクセスサイズに対応する重みよりも大きいため、付与中権利数は重みの差「０．１」だけ減少させられる。推定されたアクセスサイズに対応する重みが、実際のアクセスサイズに対応する重みよりも小さい場合は、付与中権利数は重みの差の分だけ増加させられる。このようにすることで、実際にマスタが発行したアクセス要求のアクセスサイズに応じた重みで付与中権利数を管理することができる。
【００４５】
一方、リクエスト発行制御部２３、３３、及び４３は、アクセス権付与部５５３からアクセス権が付与されている場合で、かつ対応するマスタからアクセス要求を受け取っていない場合は、付与されたアクセス権を使用せずに中央バス制御部５０に返却する。リクエスト発行制御部は、専用のアクセス権返却信号をアサートすることで、中央バス制御部５０にアクセス権を返却してもよいし、アクセスサイズ情報「０」を出力することでアクセス権を返却してもよい。中央バス制御部５０において、権利付与選択制御部５０１の返却量計算部５５５は、アクセス権が返却された場合に、アクセス権の付与時に初期重み情報レジスタ５８１に記憶される重みが加算された付与中権利数から、初期重み情報レジスタ５８１に記憶される重みを減算する。このようにすることで、アクセス権が返却された場合に、付与中権利数をアクセス権の付与前の状態に戻し、その分だけ権利付与可能数を増やすことができる。返却されたアクセス権は、他のマスタに対するアクセス権に使用できる。
【００４６】
メモリコントローラ７０（図１を参照）は、バッファ７１に記憶されたアクセス要求に基づくメモリアクセスが処理されてバッファ７１のエントリが開放されると、開放通知信号を中央バス制御部５０に出力する。また、メモリコントローラ７０は、処理されたアクセス要求のアクセスサイズを示す開放サイズ情報を中央バス制御部５０に出力する。中央バス制御部５０において、返却量計算部５５５は、開放通知信号を受信すると、開放サイズ情報が示すアクセスサイズに応じた重みを付与中権利数レジスタ５８３から減算する。このようにすることで、処理が完了したアクセス要求で使用されたアクセス権を、別のアクセス要求に付与することが可能となる。
【００４７】
［動作手順］
次いで、動作手順を説明する。図４は、権利付与可能数の管理に関わる部分の動作手順を示す。電子装置１０の運用前に、初期重み情報レジスタ５８１及びサイズ別重み情報レジスタ５８２（図３を参照）に、それぞれ必要な情報が設定される。初期重み情報レジスタ５８１には、マスタごとに、各マスタに予想（推定）される１回のメモリアクセス（アクセス要求）におけるアクセスサイズに対応する重みが設定される。サイズ別重み情報レジスタ５８２には、アクセスサイズごとに重みが設定される。初期重み情報レジスタ５８１及びサイズ別重み情報レジスタ５８２に設定される重みは、各マスタ及び各アクセスサイズのアクセス要求が消費するアクセス権の権利数を示す。
【００４８】
アクセス権付与先決定部５５１は、アクセス権の付与先のマスタ（リクエスト発行制御部）を決定する（ステップＡ１）。アクセス権付与先決定部５５１は、初期重み情報レジスタ５８１から、ステップＡ１で決定したアクセス権の付与先のマスタに対応する重みを取得する（ステップＡ２）。アクセス権付与先決定部５５１は、取得した重みを付与可能判定部５５２に送信する。
【００４９】
付与可能判定部５５２は、アクセス権付与先決定部５５１から受け取った重みと、付与可能最大数設定レジスタ５０３に記憶された最大権利付与可能数と、付与中権利数レジスタ５８３に記憶された付与中権利数とに基づいて、ステップＡ１で決定されたマスタにアクセス権を付与することが可能であるか否かを判断する（ステップＡ３）。付与可能判定部５５２は、ステップＡ３では、例えば最大権利付与可能数から付与中権利数を減算した権利付与可能数が、アクセス権付与先決定部５５１から受け取った重み以上であるか否かを判断する。付与可能判定部５５２は、権利付与可能数がアクセス権付与先決定部５５１から受け取った重み以上である場合は、アクセス権の付与が可能であると判定する。付与可能判定部５５２は、権利付与可能数がアクセス権付与先決定部５５１から受け取った重みよりも少ない場合は、アクセス権を付与できないと判定する。
【００５０】
付与可能判定部５５２は、ステップＡ３でアクセス権の付与が可能であると判定すると、アクセス権付与部５５３にアクセス権の付与を指示する。アクセス権付与部５５３は、付与可能判定部５５２からアクセス権の付与を指示されると、ステップＡ１で決定されたマスタにアクセス権を付与する（ステップＡ４）。付与可能判定部５５２は、ステップＡ１で決定されたマスタにアクセス権が付与されると、アクセス権付与先決定部５５１から受け取った重みの分だけアクセス権の権利付与可能数を減らす（ステップＡ５）。付与可能判定部５５２は、ステップＡ５では、例えば、付与中権利数レジスタ５８３に記憶される付与中権利数に、アクセス権付与先決定部５５１から受け取った重みを加算することで、権利付与可能数を減少させる。ステップＡ３において、権利付与可能数がアクセス権付与先決定部５５１から受け取った重みよりも少ないと判断された場合は、アクセス権の付与は保留される。権利付与可能数が変化し、権利付与可能数がアクセス権付与先決定部５５１から受け取った重み以上になると、アクセス権の付与が行われる。
【００５１】
マスタは、アクセス要求を対応するサブバスコントローラのリクエスト発行制御部に出力する。リクエスト発行制御部は、アクセス権が付与された場合で、かつマスタからアクセス要求を受け取っている場合は、アクセス要求をインターコネクト６０側に出力する。このとき、リクエスト発行制御部は、インターコネクト６０側に出力したアクセス要求のアクセスサイズを示すアクセスサイズ情報を中央バス制御部５０に送信する。リクエスト発行制御部は、アクセス権が付与された場合で、かつマスタからアクセス要求を受け取っていない場合は、付与されたアクセス権を中央バス制御部５０に返却する。
【００５２】
補正量計算部５５４は、アクセス権が付与されたマスタに対応するリクエスト発行制御部からアクセスサイズ情報を受信したか否かを判断する（ステップＡ６）。補正量計算部５５４は、アクセスサイズ情報を受信した場合は、アクセスサイズ情報が示すアクセスサイズに基づいて、ステップＡ５で減少された権利付与可能数を補正する（ステップＡ７）。補正量計算部５５４は、ステップＡ７では、アクセスサイズ情報が示すアクセスサイズに対応する重みをサイズ別重み情報レジスタ５８２から取得し、取得した重みとステップＡ２で取得された重みとの差を計算する。補正量計算部５５４は、付与中権利数レジスタ５８３が記憶する付与中権利数を計算した重みの差の分だけ増減することで、権利付与可能数を補正する。計算した重みの差が０の場合、権利付与可能数の補正は行われない。
【００５３】
補正量計算部５５４がアクセスサイズ情報を受信していないと判断した場合、返却量計算部５５５はリクエスト発行制御部からアクセス権返却信号を受信する。その場合、返却量計算部５５５は、ステップＡ５で減少された権利付与可能数を元に戻す（ステップＡ８）。返却量計算部５５５は、ステップＡ８では、付与中権利数レジスタ５８３に記憶される付与中権利数をステップＡ２で取得された重みの分だけ減少させることで、権利付与可能数をステップＡ２で取得された重みの分だけ増加させる。
【００５４】
リクエスト発行制御部から出力されたアクセス要求は、インターコネクト６０で調停され、メモリコントローラ７０のバッファ７１に格納される。メモリコントローラ７０は、バッファ７１に格納されるアクセス要求に従ってメモリ８０へのメモリアクセスを行う。メモリコントローラ７０は、アクセス要求に基づくメモリアクセスが終了すると、バッファ７１のエントリを開放する。その際、メモリコントローラ７０は、開放通知信号を中央バス制御部５０に送信する。また、メモリコントローラ７０は、開放されたアクセス要求のアクセスサイズを示す開放サイズ情報を中央バス制御部５０に通知する。
【００５５】
返却量計算部５５５は、メモリコントローラ７０から開放通知信号を受信したか否かを判断する（ステップＡ９）。返却量計算部５５５は、開放通知信号を受信したと判断すると、メモリコントローラ７０から出力される開放サイズ情報が示すアクセスサイズに対応した重みの分だけ、権利付与可能数を増加させる（ステップＡ１０）。返却量計算部５５５は、ステップＡ１０では、開放サイズ情報が示すアクセスサイズに対応する重みをサイズ別重み情報レジスタ５８２から取得する。返却量計算部５５５は、付与中権利数レジスタ５８３に記憶される付与中権利数を、サイズ別重み情報レジスタ５８２から取得した重みの分だけ減少させることで、権利付与可能数を開放サイズ情報が示すアクセスサイズに対応した重みの分だけ増加させる。
【００５６】
［まとめ］
本実施形態では、中央バス制御部５０は、付与可能権利数を、アクセス権が付与されるアクセス要求のアクセスサイズに基づいて管理する。中央バス制御部５０は、例えばあるマスタに対してアクセス権を付与する場合、付与されたアクセス権が消費する権利数を、アクセスサイズに応じた重みで重み付けする。例えば、アクセスサイズが大きいほど大きな重みが設定される場合、アクセスサイズが小さいアクセス要求に対して付与されるアクセス権の権利消費数は、アクセスサイズが大きいアクセス要求に対して付与されるアクセス権の権利数よりも小さくなる。このように、権利消費数に、アクセスサイズに応じて差をつけることで、アクセスサイズが小さいアクセス要求が多い場合には消費されていない残りの権利付与可能数を増やすことができ、より多くのアクセス要求に対してアクセス権を付与できる。逆に、アクセスサイズが大きいアクセス要求が多い場合は消費されていない残りの権利付与可能数を減らすことができ、過剰なアクセス要求の付与を抑制することができる。
【００５７】
アクセスサイズが小さいアクセス要求は、メモリ８０にアクセスする時間が短く、従ってバッファ７１における滞留時間が短い。一方、アクセスサイズが大きいアクセス要求は、メモリ８０にアクセスする時間が長く、従ってバッファ７１におけるアクセス要求の滞留時間が長い。本実施形態では、アクセスサイズに応じた重みを用い、アクセスサイズに応じてアクセス要求が消費するアクセス権の権利数を制御する。このようにすることで、バッファ７１におけるアクセス要求の滞留時間の長さに応じて付与することが可能なアクセス権の数を動的に制御することができ、様々な条件下において、バス上でのアクセス要求の滞留をなくし、メモリ効率を上げることができる。
【００５８】
特許文献１との比較では、特許文献１では、アクセス権の権利消費数は全て等しく「１」である。例えば、特許文献１において、付与可能最大数設定レジスタに格納される最大権利付与可能数が３２である場合、中央バス制御部は、アクセスサイズとは無関係に、３２個のアクセス要求に対してアクセス権を付与する。メモリアクセスに要する時間は、アクセスサイズに応じて変化し、例えばアクセスサイズが６４Ｂｙｔｅの場合のメモリアクセスに要する時間は、アクセスサイズが２５６Ｂｙｔｅの場合のメモリアクセスに要する時間よりも短い。メモリコントローラのバッファに格納されるアクセス要求のアクセスサイズが６４Ｂｙｔｅである場合、バッファに格納されるアクセス要求が２５６Ｂｙｔｅの場合に比べて、早期にバッファが開放されることが予想される。しかしながら、特許文献１では、アクセス権を３２個付与した場合、実際にバッファが開放されるまで、新たなアクセス権が付与されない。アクセス権の付与から実際にバッファにアクセス要求が格納されるまでにはタイムラグがあり、特許文献１では、アクセスサイズが小さいアクセス要求が多い場合に、メモリアクセスが早期に終了することでバッファに空きが生じる時間が長くなる可能性がある。
【００５９】
上記に対し、本実施形態では、例えばアクセスサイズが６４Ｂｙｔｅの場合の重みが０．８に設定され、１２８Ｂｙｔｅの場合は重みが０．９に設定され、２５６Ｂｙｔｅの場合の重みが１に設定される。本実施形態では、例えばアクセスサイズが全て６４Ｂｙｔｅであれば、最大権利付加可能数「３２」に対してアクセス権を４０個付与できる。また、アクセスサイズが全て２５６Ｂｙｔｅであれば、最大権利付加可能数「３２」と同数のアクセス権を付与できる。本実施形態において、最大権利付与可能数が、アクセスサイズが最大の２５６Ｂｙｔｅのアクセス要求に対してバスにアクセス権が滞留しない値に設定される場合、メモリアクセスに要する時間が短い６４Ｂｙｔｅ及び１２８Ｂｙｔｅのアクセス要求に対しては、最大権利付与可能数を超えるアクセス権の付与が可能となる。このようにすることで、アクセスサイズが小さい場合は、アクセス権の付与数を増やしてバッファに空きが生じる時間を短縮でき、メモリ効率を向上させることができる。一方で、アクセスサイズが大きい場合は、過度にアクセス権を付与することが抑制され、アクセス要求がバスに滞留することを抑制できる。
【００６０】
本実施形態では、アクセスサイズに応じた重みを調整することで、効率重視の動作と、レイテンシ改善の動作とのバランスを調整することができる効果もある。例えば、メモリ効率を優先する場合は、アクセスサイズが小さいアクセス要求に対する重みを小さな値に設定することで、アクセスサイズが小さいアクセス要求に付与することができるアクセス権の数を増やすことができ、メモリ効率を重視した動作を実現できる。一方、アクセスサイズが小さいアクセス要求に対する重みを１に近い値に設定した場合は、アクセスサイズが小さいアクセス要求に付与することができるアクセス権の数の増加幅を抑制することができ、アクセス要求がバス内に滞留する可能性を低くしレイテンシ改善を重視した動作を実現できる。
【００６１】
［実施形態２］
次いで、実施形態２を説明する。図５は、実施形態２に係る電子装置において用いられる権利付与選択制御部の構成例を示す。本実施形態において、電子装置の構成は、図１に示されるものと同様でよい。また、中央バス制御部の構成は、図２に示されるものと同様でよい。本実施形態において用いられる権利付与選択制御部５０１ａは、図３に示される実施形態１において用いられた権利付与選択制御部５０１の構成に、アクセスサイズ履歴記憶部５８４が追加された構成である。また、権利付与選択制御部５０１における初期重み情報レジスタ５８１が重み生成部５５７で置き換えられた構成である。他の点は、実施形態１と同様でよい。
【００６２】
アクセスサイズ履歴記憶部５８４は、リクエスト発行制御部から通知されるアクセスサイズ情報の履歴を記憶する。重み生成部５５７は、アクセスサイズ履歴記憶部５８４を参照し、アクセスサイズ履歴記憶部５８４に記憶されたアクセスサイズ情報の履歴に基づいて、マスタが発行すると推定されるアクセス要求のアクセスサイズに応じた重みを生成する。重み生成部５５７及びアクセスサイズ履歴記憶部５８４は、例えば電子装置１０に含まれる複数のマスタのそれぞれに対応して配置される。各マスタに対応するアクセスサイズ履歴記憶部５８４は、それぞれ、各マスタに対応するリクエスト発行制御部から通知されるアクセスサイズ情報の履歴を記憶する。各マスタに対応する重み生成部５５７は、それぞれ各マスタに対応するアクセスサイズ履歴記憶部５８４を参照し、各マスタが発行すると推定されるアクセス要求のアクセスサイズに応じた重みを生成する。
【００６３】
リクエスト発行制御部２３、３３、及び４３（図１を参照）は、それぞれマスタＡ２０、マスタＢ３０、及びマスタＸ４０が発行したアクセス要求をインターコネクト６０側に出力する際に、アクセスサイズ情報を中央バス制御部５０に出力する。アクセスサイズ履歴記憶部５８４は、例えばマスタごとに、所定数分のアクセスサイズ情報を記憶する。アクセスサイズ履歴記憶部５８４が記憶するアクセスサイズ情報の数は、特に限定されないが、例えば５個分とする。
【００６４】
重み生成部５５７は、例えば、アクセスサイズ履歴記憶部５８４に記憶されたアクセスサイズ情報の履歴に基づいて、次にマスタが発行するアクセス要求のアクセスサイズを推定する。重み生成部５５７は、例えば５個分のアクセスサイズ情報を所定の統計手法で統計処理し、次にマスタが発行するアクセス要求のアクセスサイズを推定する。重み生成部５５７は、例えば直近の５個分のアクセスサイズ情報が示すアクセスサイズの平均値を、次にマスタが発行するアクセス要求のアクセスサイズの推定値とする。あるいは、重み生成部５５７は、平均値から所定の計算式を用いて算出された値を、次にマスタが発行するアクセス要求のアクセスサイズの推定値としてもよい。さらに、重み生成部５５７は、５個のアクセスサイズ情報のうちの最新のものが示すアクセスサイズを、次にマスタが発行するアクセス要求のアクセスサイズの推定値としてもよい。重み生成部５５７におけるアクセスサイズの推定手法は、例えば図示しないレジスタなどを用いて切替可能に構成されていてもよい。
【００６５】
重み生成部５５７は、推定したアクセスサイズに対応した重みを生成する。重み生成部５５７には、例えば初期重み情報レジスタ５８１（図３を参照）に設定されるものと同様な重みが、初期値として設定されていてもよい。アクセス権付与先決定部５５１は、アクセス権の付与先のマスタを決定すると、重み生成部５５７から、そのマスタが次に発行するアクセス要求のアクセスサイズの推定値に対応した重みを取得する。付与可能判定部５５２は、アクセス権の付与時に、重み生成部５５７から取得された重みを用いて、付与中権利数レジスタ５８３に記憶される付与中権利数を更新する。
【００６６】
補正量計算部５５４は、アクセス権が付与されたリクエスト発行制御部からアクセスサイズ情報が受信された場合、アクセス権の付与時に付与中権利数レジスタ５８３に加算された重みと、アクセスサイズ情報が示すアクセスサイズに対応した重みとの差に基づいて、付与中権利数レジスタ５８３に記憶される付与中権利数を補正する。また、返却量計算部５５５は、アクセス権が付与されたリクエスト発行制御部からアクセス権が返却された場合、付与中権利数レジスタ５８３に記憶される付与中権利数から、アクセス権の付与時に付与中権利数レジスタ５８３に加算された重みを減算する。
【００６７】
ここで、権利付与選択制御部５０１ａがリクエスト発行制御部にアクセス権を付与するタイミングから、リクエスト発行制御部からアクセスサイズ情報を受信するタイミングには、所定の時間差がある。また、権利付与選択制御部５０１ａがリクエスト発行制御部にアクセス権を付与するタイミングから、リクエスト発行制御部からアクセス権返却信号を受信するタイミングには、所定の時間差がある。これら時間差を調整するために、補正量計算部５５４及び返却量計算部５５５は、重み生成部５５７が生成した重みを、データを所定時間だけ遅延させるためのＦＩＦＯ（First In, First Out）などを介して受け取ってもよい。その場合、アクセス権の付与からアクセスサイズ情報の受信までの間に重み生成部５５７が生成する重みが変化した場合でも、補正量計算部５５４は、アクセス権の付与時に使用された重みを用いて付与中権利数を補正することができる。また、返却量計算部５５５は、アクセス権の付与時に使用された重みだけ付与中権利数を増加させることができる。
【００６８】
［まとめ］
本実施形態では、重み生成部５５７は、実際に発生したアクセス要求のアクセスサイズに基づいて、マスタが発行するアクセス要求のアクセスサイズを推定し、アクセス権利付与時の重みを生成する。アクセスサイズの履歴情報を用いることで、マスタが発行するアクセス要求のアクセスサイズをより正確に推定することができ、推定したアクセスサイズに応じた重みを用いることで、レイテンシの悪化やメモリ効率の悪化を防止できる。
【００６９】
［実施形態３］
続いて、実施形態３を説明する。図６は、実施形態３に係る電子装置に用いられるメモリコントローラを示す。本実施形態において、電子装置の構成は、図１に示されるものと同様でよい。また、中央バス制御部の構成は、図２に示されるものと同様でよい。本実施形態において、メモリコントローラ７０ｂは、バッファ７１に加えて、キャッシュ７２、プリフェッチ制御部７３、及び制御レジスタ７４を有する。他の点は、実施形態１又は実施形態２と同様でよい。
【００７０】
メモリ８０へのメモリアクセスでは、メモリコントローラ７０ｂからメモリ８０へのリード時に、実際のアクセスサイズよりも少し余分にリード（プリフェッチ）し、キャッシュ７２にためておくことで、余分にリードした部分に対してアクセスがあったとき（リードヒット）、メモリ８０へのリードが発生せず、低レイテンシ化することができる。ただし、プリフェッチされたデータが利用されなかった場合や、利用される前にデータがキャッシュから追い出される場合、プリフェッチされたデータは無駄になり、メモリ８０へのアクセス効率が下がる。本実施形態では、メモリコントローラ７０ｂは、ＱｏＳなどの情報に基づいてプリフェッチを制御する。
【００７１】
メモリコントローラ７０ｂのプリフェッチ制御部７３は、メモリ８０へのリード時に、プリフェッチを行うか否かを決定する。制御レジスタ７４には、プリフェッチの対象となるマスタを識別する情報、及びプリフェッチの際の最大アクセスサイズなどが記憶される。プリフェッチは、連続するアドレスに対するアクセス要求が発生する場合に有効であり、マスタのメモリアクセスの特性に応じて、プリフェッチが有効であるか否かが決まる。制御レジスタ７４には、連続するアドレスに対してアクセス要求を発生するマスタが、プリフェッチの対象マスタとして設定される。プリフェッチ制御部７３は、制御レジスタ７４においてプリフェッチ対象として記憶されているマスタについて、プリフェッチを行うか否かを決定する。プリフェッチ制御部７３は、プリフェッチを実施する場合は、プリフェッチしたデータをキャッシュ７２に一時的に記憶する。プリフェッチ制御部７３は、アクセス要求のアクセス種別がリードの場合、アクセスサイズ情報をキャッシュ７２の先読みに使用することで、メモリアクセスを高効率化する。
【００７２】
より詳細には、プリフェッチ制御部７３は、中央バス制御部５０ｂからアクセスサイズ情報を取得し、プリフェッチ対象のマスタが次に発行するアクセスサイズを予測する。また、プリフェッチ制御部７３は、ＱｏＳ情報レジスタ５０２（図２を参照）に記憶されるＱｏＳの設定情報、及びアクセス権の直近の付与情報などに基づいて、プリフェッチ対象のマスタがこれからたくさんアクセス要求を発行するか否かを判断する。プリフェッチ制御部７３は、バッファ７１に格納されるアクセス要求の発行元のマスタを調べ、プリフェッチ対象のマスタとは異なるマスタが発行したアクセス要求がどれくらいバッファ７１に格納されているかを調べる。プリフェッチ制御部７３は、例えば、各マスタの直近のアクセスサイズ、ＱｏＳ設定から予想される対象マスタのこれからの帯域、ＱｏＳ設定から予想される他マスタの帯域、バッファ７１に格納されている対象マスタが発行したアクセス要求の数、バッファ７１に格納されている他マスタが発行したアクセス要求の数を総合的に判断し、プリフェッチを実施するか否かを決定する。
【００７３】
例えば、バッファ７１に対象マスタが発行したアクセス要求が多数格納されている場合、対象マスタは、それだけ多くのアクセス要求を発行しているため、プリフェッチが有効な可能性が高い。プリフェッチ制御部７３は、対象マスタが多数のアクセス要求を発行している場合に、プリフェッチを実施すると決定してもよい。プリフェッチ制御部７３は、更に、対象マスタが現在発行しているアクセス要求のアクセスサイズの比率を調べてもよい。マージ効果があるのは、対象マスタが最大のアクセスサイズでアクセス要求を発行している場合であるため、プリフェッチ制御部７３は、そのような場合に、プリフェッチを実施すると決定してもよい。
【００７４】
ＱｏＳ設定については、例えば対象マスタの帯域が大きい場合、プリフェッチしたデータが利用される可能性が高い。また、対象マスタ以外の帯域が低い場合、プリフェッチを行った場合にキャッシュ７２に記憶されるデータが上書きされるまでの猶予時間が長い。プリフェッチ制御部７３は、対象マスタの帯域が大きいか、又は対象マスタ以外のマスタの帯域が低い場合に、プリフェッチを実施すると決定してもよい。プリフェッチ制御部７３は、上記した事項などを総合的に判断し、プリフェッチを実施するか否かを決定すればよい。
【００７５】
［まとめ］
本実施形態では、プリフェッチ制御部７３は、マスタが発行したアクセス要求のアクセスサイズ、及びマスタへのアクセス権の付与状況などに基づいて、プリフェッチを実施するか否かを決定する。例えば、マスタが、連続したアドレスに同じアクセスサイズで多数のリード要求を出力することが見込まれる場合にプリフェッチを行うことで、メモリアクセスを効率的に実施することができる。特に、ＤＤＲメモリなどはリードサイズが一定以上ないと効率が著しく低下する場合があるため、プリフェッチがより有効である。
【００７６】
［実施形態４］
［バスジェネレータ］
引き続き、実施形態４を説明する。本実施形態では、半導体装置におけるバスの回路情報の生成を、各種設定情報から生成するバスジェネレータを説明する。図７は、バスジェネレータ８００のハードウェア構成例を示す。バスジェネレータ８００は、例えば、ＣＰＵ８０１、メモリ８０２、キーボード８０４、マウス８０５、モニタ８０６、及びバス８０７を含むコンピュータ装置として構成される。メモリ８０２には、コンピュータ装置をバスジェネレータ８００として動作させるためのバス生成ツール８０３が記憶される。コンピュータ装置において、ＣＰＵ８０１がメモリ８０２から読み出されたバス生成ツール８０３に従って処理を実行することで、コンピュータ装置をバスジェネレータ８００として動作させることができる。
【００７７】
図８は、バス設計の概略的なフローを示す。まず、市場におけるユースケースなどが想定され（ステップＳ１０１）、バスに求められる性能が検討される（ステップＳ１０２）。次いで、必要性能などに応じてバス構造が検討される（ステップＳ１０３）。バス構造の検討は、例えば中央バス制御部５０（図１を参照）を用いるか否かの検討を含む。
【００７８】
バス構造が決まると、決定したバス構造に対して必要な設定情報がバスジェネレータに入力される（ステップＳ１０４）。バスジェネレータは、バスの回路情報を生成し、出力する（ステップＳ１０５）。回路情報は、例えばＲＴＬ（Register Transfer Level）で記述される。その後、バスの回路情報は論理合成され（ステップＳ１０６）、次いでレイアウト設計が行われる（ステップＳ１０７）。ステップＳ１０４及びＳ１０５は、バスジェネレータを用いて設計が行われるフェーズを示す。
【００７９】
図９は、設定情報の入力における画面例を示す。例えばモニタ８０６（図７参照）には、設定情報の入力を促す画面が表示され、ユーザは、キーボード８０４やマウス８０５を用いて、各種設定をバスジェネレータ８００に与える。例えば、図９に示される画面において、ユーザがメニュー９０１から「ＱｏＳ」を選択すると、サブメニュー９０２が表示される。ユーザがサブメニュー９０２において「初期値」を選択すると、マスタごとのアクセスサイズを入力ための入力画面９０３が表示される。ユーザは、入力画面９０３において、例えば中央制御方式を選択し、またキャッシュの有無などを選択することができる。ユーザは、入力画面９０３において、例えば初期重み情報レジスタ５８１（図３を参照）に設定される情報などを入力することができる。
【００８０】
ユーザは、例えばメモリに対するアクセス要求を出力するマスタに関する情報として、マスタのアクセス先の情報、使用するクロックの情報、バス幅に関する情報、及び機能安全に関する情報などをバスジェネレータ８００に入力する。また、マスタからアクセスされるスレーブに関する情報として、アドレス領域の情報、使用するクロックの情報、バス幅に関する情報、及び機能安全に関する情報などを入力する。さらに、アービタに関する情報として、ＱｏＳ方式を指定する情報、及び各方式の詳細設定などを入力する。
【００８１】
図１０は、バスジェネレータへの入出力データを示す。バスジェネレータ８００は、機能ブロックとして、例えば、バス構造情報生成部、バス部品生成部、中央バス制御部生成部、サブバスコントローラ生成部、及びマージ部などを有している。バスジェネレータ８００には、クロック情報１０１、接続情報１０２、スレーブ情報１０３、マスタ情報１０４、ＱｏＳ方式選択情報１０５、及びＱｏＳ方式の詳細設定情報１０６が入力される。これら情報は例えば図９に示される設定情報の入力画面を通じて入力される。
【００８２】
バスジェネレータ８００は、クロック情報１０１、接続情報１０２、スレーブ情報１０３、及びマスタ情報１０４などを用いて、マスタとスレーブとの間を接続するバスの構造情報を生成する。また、バスジェネレータ８００は、生成したバスの構造情報と、例えば各種ＩＰコアを提供するベンダーから提供される各種機能ブロックの回路情報とに基づいて、各種バス部品の回路情報を生成する。
【００８３】
バスジェネレータ８００は、バスの構造情報と、ＱｏＳ方式選択情報１０５、各種機能ブロックの回路情報などを用いて、マスタが出力するアクセス要求に対してアクセス制御を行う中央バス制御部の回路情報を生成する。バスジェネレータ８００が生成する中央バス制御部の回路情報は、例えば図２に示される中央バス制御部５０の回路構成を示す。
【００８４】
バスジェネレータ８００は、中央バス制御部の回路情報用いて、中央バス制御部の制御に基づいて動作するサブバスコントローラの回路情報を生成する。サブバスコントローラの回路情報は、例えば図１に示されるサブバスコントローラ２２、３２、及び４２の回路構成を示す。バスジェネレータ８００は、バス部品の回路情報と、中央バス制御部の回路情報と、サブバスコントローラの回路情報とをマージし、バスの回路情報１１３を出力する。バスの回路情報１１３は、例えば図１に示される電子装置１０における、各マスタからメモリ８０までの間のバスに関する回路部分をＲＴＬで記述したものである。
【００８５】
［まとめ］
本実施形態では、バスシステムの生成にバスジェネレータ８００が用いられる。バスジェネレータ８００に各種設定情報などを入力することで、例えば図１に示される電子装置１０の各マスタからメモリ８０までの間のバスシステムを自動生成することができる。
【００８６】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【００８７】
１０：電子装置
２０、３０、４０：マスタＡ
２２、３２、４２：サブバスコントローラ
２３、３３、４３：リクエスト発行制御部
５０：中央バス制御部
６０：インターコネクト
７０：メモリコントローラ
７１：バッファ
７２：キャッシュ
７３：制御レジスタ
７３：プリフェッチ制御部
７４：制御レジスタ
８０：メモリ
９０：アクセス制御部
１０１：クロック情報
１０２：接続情報
１０３：スレーブ情報
１０４：マスタ情報
１０５：ＱｏＳ方式選択情報
１０６：ＱｏＳ詳細設定情報
１１３：回路情報
５０１：権利付与選択制御部
５０２：ＱｏＳ情報レジスタ
５０３：付与可能最大数設定レジスタ
５５１：アクセス権付与先決定部
５５２：付与可能判定部
５５３：アクセス権付与部
５５４：補正量計算部
５５５：返却量計算部
５５７：重み生成部
５８１：初期重み情報レジスタ
５８２：サイズ別重み情報レジスタ
５８３：付与中権利数レジスタ
５８４：アクセスサイズ履歴記憶部
８００：バスジェネレータ
８０２：メモリ
８０３：バス生成ツール
８０４：キーボード
８０５：マウス
８０６：モニタ
８０７：バス
９０１：メニュー
９０２：サブメニュー
９０３：入力画面
【図１】
2019220060.tif 000003
【図２】
2019220060.tif 000004
【図３】
2019220060.tif 000005
【図４】
2019220060.tif 000006
【図５】
2019220060.tif 000007
【図６】
2019220060.tif 000008
【図７】
2019220060.tif 000009
【図８】
2019220060.tif 000010
【図９】
2019220060.tif 000011
【図１０】
2019220060.tif 000012