(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024156298
(43)【公開日】2024-11-06
(54)【発明の名称】SoCモジュール
(51)【国際特許分類】
G06F 12/084 20160101AFI20241029BHJP
G06F 12/0806 20160101ALI20241029BHJP
【FI】
G06F12/084
G06F12/0806 100
【審査請求】未請求
【請求項の数】3
【出願形態】OL
(21)【出願番号】P 2023070645
(22)【出願日】2023-04-24
(71)【出願人】
【識別番号】000004260
【氏名又は名称】株式会社デンソー
(71)【出願人】
【識別番号】000003207
【氏名又は名称】トヨタ自動車株式会社
(71)【出願人】
【識別番号】520124752
【氏名又は名称】株式会社ミライズテクノロジーズ
(74)【代理人】
【識別番号】110000028
【氏名又は名称】弁理士法人明成国際特許事務所
(72)【発明者】
【氏名】徳江 達也
(72)【発明者】
【氏名】滝澤 哲郎
(72)【発明者】
【氏名】林 文城
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205KK14
5B205MM03
5B205NN73
5B205NN75
5B205VV02
(57)【要約】
【課題】SoCモジュールにおいて、キャッシュメモリに対するアクセス効率の低下の抑制を容易にする。
【解決手段】SoCモジュール100であって、各々に演算処理の優先度が設定されている複数のプロセッサコア111、112と、複数のプロセッサコアによってアクセスされてデータを読み書きされるキャッシュメモリ120と、アクセスプロファイル情報を取得するプロファイル取得部130と、キャッシュメモリに対するアクセスが互いに競合しているか否かを判定することと、優先コアを決定することと、を実行するアクセス競合調整部140と、各プロセッサコアによるアクセスの実行および停止を制御する複数のアクセス抑制部151、152と、を備え、アクセス競合調整部は、優先度がより高い競合コアを優先コアとして決定し、非優先コアに対応して設けられたアクセス抑制部は、該非優先コアによるアクセスを停止させる。
【選択図】
図1
【特許請求の範囲】
【請求項1】
SoCモジュール(100)であって、
各々に演算処理の優先度が予め設定されている複数のプロセッサコア(111、112)と、
前記複数のプロセッサコアによってアクセスされてデータを読み書きされるキャッシュメモリ(120)と、
前記複数のプロセッサコアそれぞれによる前記キャッシュメモリのアクセス先アドレスの時間変化を示すアクセスプロファイル情報を取得するプロファイル取得部(130)と、
前記アクセスプロファイル情報を利用して、前記複数のプロセッサコアのうち、少なくとも2つのプロセッサコアによる前記キャッシュメモリに対するアクセスが互いに競合するか否かを判定することと、互いに競合する複数のプロセッサコアである複数の競合コアのうち、他の前記競合コアよりも優先して前記アクセスを実行させる前記競合コアである優先コアを決定することと、を実行するアクセス競合調整部(140)と、
前記複数のプロセッサコアのそれぞれに対応して設けられた複数のアクセス抑制部であって、各前記プロセッサコアによる前記キャッシュメモリへの前記アクセスの実行および停止を制御する複数のアクセス抑制部(151、152)と、
を備え、
前記アクセス競合調整部は、前記複数の競合コアのうち、前記優先度がより高い競合コアを前記優先コアとして決定し、
前記複数の競合コアのうち、前記優先コアでない前記競合コアである非優先コアに対応して設けられた前記アクセス抑制部は、該非優先コアによる前記アクセスを停止させる、
SoCモジュール。
【請求項2】
請求項1に記載のSoCモジュールであって、
前記アクセス抑制部は、前記優先コアによる前記アクセスの進捗率が予め設定された閾値以上となった場合に、前記非優先コアによる前記アクセスを再開させる、
SoCモジュール。
【請求項3】
請求項1または請求項2に記載のSoCモジュールであって、
前記アクセス抑制部は、前記非優先コアによる前記アクセスを停止させている間、前記非優先コアに対するクロック信号の供給を停止させる、
SoCモジュール。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、SoCモジュールに関する。
【背景技術】
【0002】
従来、複数のプロセッサを備えるSoCモジュールが知られている(特許文献1)。このようなSoCモジュールにおいては、モジュールの省面積化のために、複数のプロセッサ間でキャッシュメモリを共用化することが望まれている。モジュールの省面積化のため、このようなキャッシュメモリの記憶容量は、従来プロセッサごとに設けられていたキャッシュメモリの合計容量よりも少なくなる。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
このようなキャッシュメモリにおいて、キャッシュメモリへのアクセスのプロセッサ間の競合を抑制するために、プロセッサごとにアクセスタイミングやアクセス可能アドレスを予め規定すると複雑な制御が必要となり、ソフトウェア開発のコストの増大が問題となる。
【課題を解決するための手段】
【0005】
本開示は、以下の形態として実現することが可能である。
【0006】
本開示の一形態によれば、SoCモジュール(100)が提供される。このSoCモジュールは、各々に演算処理の優先度が予め設定されている複数のプロセッサコア(111、112)と、前記複数のプロセッサコアによってアクセスされてデータを読み書きされるキャッシュメモリ(120)と、前記複数のプロセッサコアそれぞれによる前記キャッシュメモリのアクセス先アドレスの時間変化を示すアクセスプロファイル情報を取得するプロファイル取得部(130)と、前記アクセスプロファイル情報を利用して、前記複数のプロセッサコアのうち、少なくとも2つのプロセッサコアによる前記キャッシュメモリに対するアクセスが互いに競合するか否かを判定することと、互いに競合する複数のプロセッサコアである複数の競合コアのうち、他の前記競合コアよりも優先して前記アクセスを実行させる前記競合コアである優先コアを決定することと、を実行するアクセス競合調整部(140)と、前記複数のプロセッサコアのそれぞれに対応して設けられた複数のアクセス抑制部であって、各前記プロセッサコアによる前記キャッシュメモリへの前記アクセスの実行および停止を制御する複数のアクセス抑制部(151、152)と、を備え、前記アクセス競合調整部は、前記複数の競合コアのうち、前記優先度がより高い競合コアを前記優先コアとして決定し、前記複数の競合コアのうち、前記優先コアでない前記競合コアである非優先コアに対応して設けられた前記アクセス抑制部は、該非優先コアによる前記アクセスを停止させる。
【0007】
この形態のSoCモジュールによれば、複数の競合コアのうち、設定された優先度がより高い競合コアを優先コアとして決定し、非優先コアによるキャッシュメモリへのアクセスを停止させることにより、プロセッサコア間の競合を抑制できる。このため、プロセッサコアごとにアクセスタイミングやアクセス可能アドレスを予め規定する構成に比べて簡易な制御でプロセッサコア間の競合を抑制でき、ソフトウェア開発のコストの増大を抑制できる。
【図面の簡単な説明】
【0008】
【
図1】本実施形態のSoCモジュールの概略構成を示す説明図である。
【
図2】アクセス先アドレスとアクセスタイミングとの関係の一例を示すチャートである。
【
図3】本実施形態のアクセス制御の手順を示すフローチャートである。
【発明を実施するための形態】
【0009】
A.第1実施形態:
A-1.装置構成:
SoCモジュール100は、主記憶装置200に記憶されたデータにアクセスして、予め定められた演算処理を逐次的に実行する。本実施形態では、SoCモジュール100は、ニューラルネットワークを利用した演算処理を実行する。
図1に示すように本実施形態のSoCモジュール100は、プロセッサコア111、112と、キャッシュメモリ120と、バスBSと、プロファイル取得部130と、アクセス競合調整部140と、アクセス抑制部151、152とを備える。
【0010】
本実施形態では、プロセッサコア111、112は、ニューラルネットワークを利用した演算処理を実行するNPU(Neural network Processing Unit)として構成されている。プロセッサコア111、112は、例えば、車両に搭載されたカメラにより撮像された画像データを対象として、画像データに含まれる歩行者や構造物等を判別するための特徴量を出力する演算処理を行う。プロセッサコア111、112はそれぞれ、SoCモジュール100外に設けられたクロック生成回路CLKからバスBSを介して供給されるクロック信号に従って動作し、演算処理を行う。なお、プロセッサコア111、112は、ニューラルネットワークを利用した演算処理に限らず、予め定められた演算処理を逐次的に実行するCPU(Central Processing Unit)として構成されていてもよい。プロセッサコア111、112の具体的な構成は、既知のNPUの構成と同様であるので説明を省略する。なお、SoCモジュール100が備えるプロセッサコアの数は2つに限らず、3つ以上であってもよい。
【0011】
また、プロセッサコア111、112はそれぞれ、演算処理の優先度が予め設定されている。「演算処理の優先度」は、本実施形態では、プロセッサコア111とプロセッサコア112とのうちのいずれのプロセッサコアにおける演算処理を優先して実行させるかを示す度合いを意味する。演算処理の優先度は、各プロセッサコアにおいて実行される演算処理の種類に応じて決定され、例えば、よりリアルタイム性が要求される演算処理を実行するプロセッサコアの優先度がより高くなるように決定される。以下の説明においては、プロセッサコア111に設定された優先度が、プロセッサコア112に設定された優先度よりも高い場合を例に説明する。
【0012】
主記憶装置200とプロセッサコア111、112のそれぞれとは、バスBSを介して互いに接続されている。主記憶装置200は、プロセッサコア111、112により実行される演算処理においてバスBSを介して入出力される種々のデータ、例えば、画像データや演算処理において用いられる係数等のデータを記憶する。本実施形態では、主記憶装置200は、DRAM(Dynamic Random Access Memory)として構成されている。
【0013】
キャッシュメモリ120は、バスBSにおいて、プロセッサコア111、112と主記憶装置200との間に設けられている。キャッシュメモリ120は、プロセッサコア111、112によりアクセスされてデータを読み書きされる。より具体的には、主記憶装置200からプロセッサコア111またはプロセッサコア112へのデータの読み出しがなされた場合に、キャッシュメモリ120は、当該データを記憶する。プロセッサコア111またはプロセッサコア112から再び同一データの読出し要求がなされた場合には、プロセッサコアは、主記憶装置200ではなくキャッシュメモリ120から当該データを読み出す。これにより、データアクセスに時間がかかるプロセッサコアから主記憶装置200へのアクセス頻度を抑制し、データアクセス効率の低下を抑制できる。本実施形態では、キャッシュメモリ120は、高速でのデータの読み書きが可能なSRAM(Static Random Access Memory)として構成されている。
【0014】
プロファイル取得部130は、バスBSにおいて、プロセッサコア111、112とキャッシュメモリ120との間に設けられている。プロファイル取得部130は、プロセッサコア111、112のそれぞれについてのアクセスプロファイル情報を取得する。「アクセスプロファイル情報」は、各プロセッサコアによりアクセスされるキャッシュメモリ120のアクセス先アドレスの時間変化を示す情報を意味する。本実施形態では、アクセスプロファイル情報は、いずれのプロセッサコアが、いずれのタイミングで、キャッシュメモリ120のいずれのアドレスにアクセスするのかを示す情報を含む。
【0015】
また、本実施形態では、プロファイル取得部130は、取得したアクセスプロファイル情報を利用して、プロセッサコアごとに、
図2に示す例のように、アクセス先アドレスとアクセスタイミングとの関係を示すチャートを作成する。チャートにおいて、縦軸は、プロセッサコアによるキャッシュメモリ120のアクセス先アドレスを示している。横軸は、アクセスタイミングを示している。「アクセスタイミング」は、プロセッサコアがアクセス先アドレスにアクセスするタイミングを意味している。また、黒塗りの円は、プロセッサコア111によるアクセスを示しており、白抜きの点は、プロセッサコア112によるアクセスを示している。なお、
図2では、図示の便宜上、アクセス先アドレスとアクセスタイミングとの関係を示すチャートを模式的に表している。
【0016】
図1に示すアクセス競合調整部140は、アクセスプロファイル情報を取得して、各プロセッサコアによるアクセスが互いに競合しているか否かを判定する。「競合」とは、複数のプロセッサコアにより、キャッシュメモリ120の同一アドレスに対してアクセスされていることを意味する。
図2に示す例では、アクセスタイミングt1、t2、t3において競合が発生している。また、アクセス競合調整部140は、競合が発生している場合に優先コアを決定する。「優先コア」は、互いに競合する複数のプロセッサコア(以下の説明において、「競合コア」とも呼ぶ)のうち、他の競合コアよりも優先してアクセスを実行させる競合コアを意味する。アクセス競合調整部140は、各競合コアに予め設定された優先度を利用して、より高い優先度が設定された競合コアを優先コアとして決定する。また、以下の説明において、複数の競合コアのうち、優先コアでない競合コアを「非優先コア」とも呼ぶ。
【0017】
図1に示すアクセス抑制部151、152は、プロセッサコア111、112にそれぞれ対応して設けられている。各アクセス抑制部は、各プロセッサコアによるキャッシュメモリ120へのアクセスの実行または停止を制御する。また、各アクセス抑制部は、各プロセッサコアに対するクロック信号の供給の実行または停止を制御する。各アクセス抑制部による具体的な制御については、後述するアクセス制御において説明する。
【0018】
A-2.アクセス制御:
本実施形態のSoCモジュール100は、
図3に示すように、各プロセッサコアからキャッシュメモリ120へのアクセスを制御するアクセス制御を実行する。アクセス制御は、SoCモジュール100が起動されると開始され、SoCモジュール100の起動中繰り返し実行される。
図2に示すように、SoCモジュール100は、アクセス制御において、ステップS10およびステップS20の制御と、ステップS30からステップS90の制御とを並列して実行する。
【0019】
ステップS10において、プロファイル取得部130は、各プロセッサコアについてのアクセスプロファイル情報を取得する。本実施形態では、プロファイル取得部130は、各プロセッサコアによるバスBSの利用状況をモニタすることにより、アクセスプロファイル情報を取得できる。
【0020】
ステップS20おいて、プロファイル取得部130は、取得されたアクセスプロファイル情報を利用して、プロセッサコアごとに、アクセス先アドレスとアクセスタイミングとの関係を示すチャートを作成する。プロファイル取得部130は、アクセス制御の実行中、ステップS10およびステップS20を予め定められた時間間隔で繰り返し実行する。
【0021】
ステップS30において、アクセス競合調整部140は、作成されたチャートを利用して、各プロセッサコアによるアクセスが互いに競合しているか否かを判定する。より具体的には、アクセス競合調整部140は、複数のプロセッサコアが、同じタイミングでキャッシュメモリ120の同一アドレスへのアクセスを要求している場合に、各プロセッサコアによるアクセスが互いに競合していると判定する。
【0022】
競合が発生している場合(ステップS30:Yes)、アクセス競合調整部140は、優先コアを決定する(ステップS40)。上述のように、アクセス競合調整部140は、複数のプロセッサコアのうち、予め設定された優先度がより高いプロセッサコアを優先コアとして決定する。上述のように、本実施形態では、プロセッサコア111には、プロセッサコア112よりも高い優先度が設定されているため、プロセッサコア111が優先コアとして決定される。
【0023】
他方、競合が発生していない場合(ステップS30:No)、アクセス競合調整部140は、ステップS30の判定を繰り返し実行する。各プロセッサコアによるアクセスが互いに競合していない場合、各アクセス抑制部は、各プロセッサコアによる演算処理を任意のタイミングで実行させてよい。
【0024】
ステップS50において、アクセス抑制部152は、非優先コアであるプロセッサコア112によるアクセスを停止させる。非優先コアによるアクセスを停止させない場合、優先コアによるアクセスに基づいて主記憶装置200からキャッシュメモリ120にデータが読み出された直後に、非優先コアによるアクセスに基づいて主記憶装置200からキャッシュメモリ120の同一アドレスに異なるデータが読み出されることが起こり得る。かかる場合に、優先コアにおいて、一度読み出したデータを再び読み出すことになっても、当該データは非優先コアによるアクセスによって上書きされてしまっているので、再び主記憶装置200からキャッシュメモリ120にデータを読み出すこととなりレイテンシが増大する。このようなレイテンシの増大を回避するため、アクセス抑制部は、非優先コアによるアクセスを停止させる。
【0025】
ステップS60において、アクセス抑制部152は、非優先コアであるプロセッサコア112に対するクロック信号の供給を停止させる。これにより、非優先コアの動作が停止され、非優先コアにおける動作電力が抑制される。
【0026】
ステップS70において、アクセス競合調整部140は、優先コアによるアクセスの進捗率が予め定められた閾値以上であるか否かを判定する「進捗率」は、プロセッサコアにおいて実行される予定の演算処理全体に対する、既に終了した演算処理の割合を意味する。アクセス競合調整部140は、アクセス先アドレスとアクセスタイミングとの関係を示すチャートを参照することにより、優先コアによるアクセスの進捗率を把握することができる。
【0027】
進捗率が予め定められた割合未満である間(ステップS70:No)、アクセス競合調整部140は、ステップS70の判定を繰り返し実行し、非優先コアによるアクセスおよび非優先コアに対するクロック信号の供給を停止させた状態を維持する。
【0028】
進捗率が予め定められた割合以上である場合(ステップS70:Yes)、アクセス抑制部152は、非優先コアであるプロセッサコア112に対するクロック信号の供給を再開させる(ステップS80)。また、ステップS90において、アクセス抑制部152は、非優先コアであるプロセッサコア112によるアクセスを再開させる。進捗率が閾値以上となったプロセッサコアにおいては、ピーク時に比べてキャッシュメモリ120へのアクセス頻度が低下しているため、上述したようなレイテンシの増大が発生する頻度も抑制されるからである。SoCモジュール100は、以上説明したステップS30からステップS90を繰り返し実行する。
【0029】
以上説明した実施形態のSoCモジュール100によれば、複数の競合コアのうち、設定された優先度がより高い競合コアを優先コアとして決定し、非優先コアによるキャッシュメモリ120へのアクセスを停止させることにより、プロセッサコア間の競合を抑制できる。このため、プロセッサコアごとにアクセスタイミングやアクセス可能アドレスを予め規定する構成に比べて簡易な制御でプロセッサコア間の競合を抑制でき、ソフトウェア開発のコストの増大を抑制できる。
【0030】
また、優先コアによるアクセスの進捗率が予め設定された閾値以上となった場合に非優先コアによるアクセスを再開させるので、優先コアによるキャッシュメモリ120へのアクセス頻度がピーク時に比べて低下したタイミングで、非優先コアによるアクセスを再開できる。このため、競合が発生することによりレイテンシが増大することを抑制できる。
【0031】
また、非優先コアによるアクセスを停止させている間、非優先コアに対するクロック信号の供給を停止させるので、非優先コアの動作が停止され、非優先コアにおける動作電力を抑制できる。
【0032】
B.他の実施形態:
(B1)上記実施形態において、競合が発生した場合に、非優先コアに対応するアクセス抑制部は、非優先コアによるアクセスを停止させるとともに、非優先コアに対するクロック信号の供給を停止させるが、本開示はこれに限定されない。アクセス抑制部は、非優先コアに対するクロック信号の供給は継続し、非優先コアによるアクセスの実行のみを停止させてもよい。かかる構成のSoCモジュール100によっても、複数のプロセッサコアによるキャッシュメモリ120へのアクセスの競合の発生を抑制できる。加えて、アクセス抑制部151は、プロセッサコアによるアクセスの実行および停止のみ制御すればよいので、アクセス抑制部の構成が複雑になることを抑制できる。
【0033】
(B2)上記実施形態において、アクセス競合調整部140は、プロセッサコアごとに、アクセスが互いに競合しているか否かを判定するが、本開示はこれに限定されない。アクセス競合調整部140は、各プロセッサにおいて実行される演算処理を実現する複数のインストラクションごとに、アクセスが互いに競合しているか否かを判定してもよい。この場合、演算処理の優先度も、インストラクションごとに設定されていることが望ましい。かかる構成のSoCモジュール100によっても、上記実施形態と同様の効果を奏する。加えて、プロセッサコア単位よりも小さいインストラクション単位で競合が発生しているか否かを判定できるので、例えば、一方のプロセッサコアによる演算処理の実行中に、当該プロセッサコアがアクセスしないアドレスをアクセス対象とするインストラクションを他のプロセッサコアが実行でき、演算処理の効率の低下を抑制できる。
【0034】
(B3)上記実施形態では、アクセス抑制部151、152は、競合が発生した場合に、非優先コアに対応して設けられたアクセス抑制部のみが非優先コアによるアクセスを停止させるが、本開示はこれに限定されない。競合が発生した場合に、すべてのアクセス抑制部が、すべてのプロセッサコアによるアクセスを一旦停止させ、設定された優先度が高いプロセッサコアから順にアクセスを再開させてもよい。かかる構成のSoCモジュール100によっても、上記実施形態と同様の効果を奏する。
【0035】
(B4)上記実施形態では、アクセス抑制部151、152は、優先コアによるアクセスの進捗率が予め設定された閾値以上となった場合に、非優先コアによるアクセスを再開させるが、本開示はこれに限定されない。アクセス抑制部151、152は、非優先コアによるアクセスを停止させた後、予め定められた時間の経過後に、非優先コアによるアクセスを再開させてもよい。かかる構成のSoCモジュール100によっても、優先コアによるキャッシュメモリ120へのアクセス頻度がピーク時に比べて低下したタイミングで、非優先コアによるアクセスを再開できる。このため、競合が発生することによりレイテンシが増大することを抑制できる。
【0036】
本開示は、上述の実施形態に限られるものではなく、その趣旨を逸脱しない範囲において種々の構成で実現することができる。例えば、発明の概要の欄に記載した形態中の技術的特徴に対応する各実施形態中の技術的特徴は、上述の課題の一部または全部を解決するために、あるいは、上述の効果の一部または全部を達成するために、適宜、差し替えや、組み合わせを行うことが可能である。また、その技術的特徴が本明細書中に必須なものとして説明されていなければ、適宜、削除することが可能である。
【0037】
本開示に記載のSoCモジュール100およびその手法は、コンピュータプログラムにより具体化された一つ乃至は複数の機能を実行するようにプログラムされたプロセッサおよびメモリを構成することによって提供された専用コンピュータにより、実現されてもよい。あるいは、本開示に記載のSoCモジュール100およびその手法は、一つ以上の専用ハードウエア論理回路によってプロセッサを構成することによって提供された専用コンピュータにより、実現されてもよい。もしくは、本開示に記載のSoCモジュール100およびその手法は、一つ乃至は複数の機能を実行するようにプログラムされたプロセッサおよびメモリと一つ以上のハードウエア論理回路によって構成されたプロセッサとの組み合わせにより構成された一つ以上の専用コンピュータにより、実現されてもよい。また、コンピュータプログラムは、コンピュータにより実行されるインストラクションとして、コンピュータ読み取り可能な非遷移有形記録媒体に記憶されていてもよい。
【符号の説明】
【0038】
100…SoCモジュール、111、112…プロセッサコア、120…キャッシュメモリ、130…プロファイル取得部、140…アクセス競合調整部、151、152…アクセス抑制部