(57)【要約】【課題】複数のプロセッサが共有リソースにアクセスする際の調停頻度を、キャッシュやバッファを抑制するアクセス管理装置、情報処理装置及びアクセス管理方法を提供すること。【解決手段】複数のプロセッサ１１から要求された共通のリソース１６へのアクセス要求を制御するアクセス管理装置１００であって、複数のプロセッサ１１から受け付けたリードアクセスの複数のアドレスを比較するアドレス比較手段１３と、複数のアドレスのうち一致したアドレスのデータをリソース１６からリードするデータリード手段１４と、データリード手段１４がリードしたデータを、一致した複数のアドレスを出力した複数のプロセッサ１１に同じタイミングで出力するデータ出力手段１５と、を有することを特徴とする。【選択図】図２
2011221569.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサから要求された共通のリソースへのアクセス要求を制御するアクセス管理装置であって、
複数の前記プロセッサから受け付けたリードアクセスの複数のアドレスを比較するアドレス比較手段と、
前記複数のアドレスのうち一致したアドレスのデータを前記リソースからリードするデータリード手段と、
前記データリード手段がリードしたデータを、一致した前記複数のアドレスを出力した複数の前記プロセッサに同じタイミングで出力するデータ出力手段と、
を有することを特徴とするアクセス管理装置。
【請求項２】
前記データリード手段がデータリードした前記リソースのアドレスを記憶するアドレスキャッシュ手段と、
前記データリード手段がデータリードしたデータを記憶するデータキャッシュ手段と、を有し、
前記プロセッサから受け付けたリードアクセスのアドレスが前記アドレスキャッシュ手段に記憶されている場合、前記データ出力手段は、前記データキャッシュ手段に記憶されているデータを該リードアクセスを要求した前記プロセッサに出力する、
ことを特徴とする請求項１記載のアクセス管理装置。
【請求項３】
前記プロセッサから受け付けたリードアクセスのアドレスが前記アドレスキャッシュ手段に記憶されているか否かに関係なく、
前記データリード手段は、前記複数のアドレスのうち一致した前記リソースのアドレスからデータをリードし、
前記データ出力手段は、リードされたデータを一致した前記複数のアドレスを出力した複数の前記プロセッサに同じタイミングで出力する、
ことを特徴とする請求項２記載のアクセス管理装置。
【請求項４】
前記プロセッサから受け付けたリードアクセスのアドレスが前記アドレスキャッシュ手段に記憶されている場合、
前記データリード手段は、前記複数のアドレスのうち一致した前記リソースのアドレスからデータをリードすることなく、
前記データ出力手段は、前記データキャッシュ手段に記憶されているデータを該リードアクセスを要求した前記プロセッサに出力する、
ことを特徴とする請求項２記載のアクセス管理装置。
【請求項５】
前記データリード手段は、前記プロセッサのいずれかからストアアクセスを検出した場合、
前記アドレスキャッシュ手段を初期化する、
ことを特徴とする請求項２〜４いずれか1項記載のアクセス管理装置。
【請求項６】
前記データリード手段がデータをリードした場合、前記アドレスキャッシュ手段に記憶されたアドレスを更新し、
前記データ出力手段は、前記データキャッシュ手段に記憶されたデータを更新する、
ことを特徴とする請求項２〜４いずれか1項記載のアクセス管理装置。
【請求項７】
前記アドレスキャッシュ手段は、所定数のアドレスのうち古いアドレスから上書きするリングバッファであり、前記データキャッシュ手段は前記所定数のデータのうち古いデータから上書きするリングバッファである、
ことを特徴とする請求項６記載のアクセス管理装置。
【請求項８】
異なる前記リソースへの複数のリードアクセスを、同時並行的に実行するインターコネクタを有する、
ことを特徴とする請求項１〜７いずれか１項記載のアクセス管理装置。
【請求項９】
前記リソースは、ＲＡＭ、ＲＯＭ、又は、レジスタである、
ことを特徴とする請求項１〜８いずれか１項記載のアクセス管理装置。
【請求項１０】
請求項１〜９いずれか1項記載のアクセス管理装置と、
前記複数のプロセッサと、
アドレスバスと
データバスと、
共通の前記リソースと、
を有する情報処理装置。
【請求項１１】
複数のプロセッサから要求された共通のリソースへのアクセス要求を制御するアクセス管理方法であって、
複数の前記プロセッサから受け付けたリードアクセスの複数のアドレスを比較するアドレス比較ステップと、
前記複数のアドレスのうち一致したアドレスのデータを前記リソースからリードするデータリードステップと、
前記データリード手段がリードしたデータを、一致した前記複数のアドレスを出力した複数の前記プロセッサに同じタイミングで出力するデータ出力ステップと、
を有することを特徴とするアクセス管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
複数のプロセッサから要求された共通のリソースへのアクセス要求を制御するアクセス管理装置、情報処理装置及びアクセス管理方法に関する。
【背景技術】
【０００２】
複数のプロセッサが、各種のメモリなど１つのリソースを共有することがある。複数のプロセッサによるリソースへのアクセスを調停するため、複数のプロセッサとリソースの間にアービタが設けられることが多い（例えば、特許文献１参照。）。特許文献１には、複数の情報処理ユニットと１つの共有リソースの間を、アービタを介して接続した情報処理装置が開示されている。アービタは情報処理ユニットから要求された複数のアクセス要求を調停する。
【０００３】
図１（ａ）は、アービタによる複数のプロセッサのアクセス要求の調停を説明する図の一例である。プロセッサであるＰＥ_ｎ（ｎ：１〜４）は、命令のデコード結果に応じて、共有リソースへのアクセス要求をアービタに出力する。図１（ｂ）は、各ＰＥ＿ｎが実行する命令を時系列に示す図である。時刻ｔ２にＰＥ＿１〜ＰＥ＿４が実行する命令が全て、同じリソース（例えばＲＡＭ）からデータを読み出すＬＤＲ（ロード命令）であるので、アービタはＰＥ＿１〜ＰＥ＿４のアクセスを調停する。アービタは、例えば、ＰＥ＿１のロード命令を時刻ｔ２に、ＰＥ＿２のロード命令を時刻ｔ３に、ＰＥ＿３のロード命令を時刻ｔ４に、ＰＥ＿４のロード命令を時刻ｔ５に、それぞれ遅らせることで、共有リソースへの同時アクセスを調停する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】再表2006/030650号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、図１のようにアービタが調停することは、共有リソースへのアクセスを待たされるＰＥ＿ｎが生じることになるので、情報処理装置全体の処理速度を低下させるという問題がある。図１（ｂ）の例では、ＰＥ_４には３動作クロックの遅延が生じている。
【０００６】
共有リソースへのアクセス調停の頻度を極力抑えるため、ＰＥ＿ｎにローカルキャッシュを設けることが考えられる。特許文献１においても、アービタの手前に、リードバッファと、ライトバッファとを備えたバスインタフェースを設け、バスインタフェースにキャッシュの機能を搭載している。バスインタフェースは、情報処理ユニットからのアクセス要求を受信すると、該アクセス要求によるアクセス先のアドレスとリードバッファ及びライトバッファで既に保持されたデータに対応するアクセス先のアドレスを比較する。そして、リードバッファで保持されたリードデータに対応するアクセス先のアドレスと同じアドレスに対するアクセス要求である場合は、共有リソースから該リードデータを読み出すことなく、リードバッファで保持されたリードデータを該情報処理ユニットへ返送する。
【０００７】
したがって、ロード命令であれば、ＰＥ＿ｎがキャッシュを持つことで、共有リソースへのアクセス頻度を低減できる。しかし、いずれかのＰＥ＿ｎがストア命令を実行し、共有リソースのデータが変更された場合、複数のＰＥ＿ｎのキャッシュとメモリとのコヒーレンシを保つため、複数のＰＥ＿ｎが共有リソースにアクセスする必要が生じる。
【０００８】
したがって、キャッシュを備えるだけでは、ＰＥ＿ｎ間で生じるロード命令の調停の頻度を低減するには限界がある。
【０００９】
キャッシュサイズを大きくすることで、共有リソースへのアクセス頻度を低減できるが、チップ面積が増大するという別の不都合をもたらす。
【００１０】
本発明は、上記課題に鑑み、複数のプロセッサが共有リソースにアクセスする際の調停頻度を抑制するアクセス管理装置、情報処理装置及びアクセス管理方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明は、複数のプロセッサから要求された共通のリソースへのアクセス要求を制御するアクセス管理装置であって、複数の前記プロセッサから受け付けたリードアクセスの複数のアドレスを比較するアドレス比較手段と、前記複数のアドレスのうち一致したアドレスのデータを前記リソースからリードするデータリード手段と、前記データリード手段がリードしたデータを、一致した前記複数のアドレスを出力した複数の前記プロセッサに同じタイミングで出力するデータ出力手段と、を有することを特徴とする。
【発明の効果】
【００１２】
複数のプロセッサが共有リソースにアクセスする際の調停頻度を、キャッシュやバッファを抑制するアクセス管理装置、情報処理装置及びアクセス管理方法を提供することができる。
【図面の簡単な説明】
【００１３】
【図１】アービタによる複数のプロセッサのアクセス要求の調停を説明する図の一例である（従来図）。
【図２】情報処理装置の概略構成図の一例である。
【図３】ＲＡＣの構成図の一例である。
【図４】データセレクタを用いたロード命令の実行時間を模式的に説明する図の一例である。
【図５】アクセスアドレスが一致しないＰＥ＿ｎを含めたデータリードの時間を説明する図の一例である。
【図６】ＲＡＣがデータリードを制御する手順を示すフローチャート図の一例である。
【図７】ＲＡＣの構成図の一例である（実施例２）。
【図８】アドレス履歴キャッシュとデータ履歴キャッシュを模式的に示す図の一例である。
【図９】キャッシュを用いたロード命令の実行時間を模式的に説明する図の一例である。
【図１０】ＲＡＣがデータリードを制御する手順を示すフローチャート図の一例である（実施例２）。
【発明を実施するための形態】
【００１４】
以下、本発明を実施するための形態について図面を参照しながら実施例を挙げて説明する。
【実施例１】
【００１５】
図２は、情報処理装置２００の概略構成図の一例を示す。ＰＥ（processor  Element）＿ｎ（ｎ：１〜４）１１がＲＡＣ（リソース・アクセス・コントローラ）１００と接続されている。ＲＡＣ１００は共有リソース１６と接続されている。本実施例ではＲＡＣ１００が比較器と、アドレスセレクタと、データセレクタとを有することが特徴の１つとなる。
（１）まず、比較器１３はＰＥ＿１〜ＰＥ＿４のアクセス先のアドレスに２つ以上同じアクセスアドレスがあることを検出する。
（２）比較器１３は、同じアクセスアドレスにアクセスするＰＥ＿１〜ＰＥ＿４をアドレスセレクタ及びデータセレクタに通知する。
（３）アドレスセレクタは同じアクセスアドレスのいずれか１つをアドレスバスに出力する。これにより共有リソース１６からデータセレクタにデータが出力される。
（４）データセレクタは、共有リソース１６から読み出したデータを同じタイミングで、同じアクセスアドレスにアクセス要求した２つ以上のＰＥ＿ｎに出力する。
【００１６】
したがって、複数のＰＥ＿ｎが同じアドレス（同じ共有リソース１６）にアクセスする際、調停することなく、複数のＰＥ＿ｎが同じタイミングでデータをロードすることができる。調停しないので、アクセス調停による処理速度の低下が生じることもない。
【００１７】
〔ＲＡＣ１００の詳細〕
図３は、ＲＡＣ１００の構成図の一例を示す。ＰＥ＿１〜ＰＥ＿４がアドレスデコーダｎ（ｎ：１〜４）１２と、それぞれアクセス先選択バスｂ１を介して接続されている。また、アドレスデコーダ１〜４と比較器１３はそれぞれアドレスバスｂ２を介して接続されている。同様に、アドレスデコーダ１〜４とアドレスセレクタ１４は、それぞれアドレスバスｂ３を介して接続されている。また、アドレスセレクタ１４は、１本のアドレスバスｂ４を介して共有リソース１６と接続されている。
【００１８】
一方、ＲＡＣ１００のデータセレクタ１５は、データバスｂ５を介して共有リソース１６と接続されている。データセレクタ１５は、内部データバスｂ６を介してＰＥ_１〜ＰＥ＿４と接続されている。なおアドレスバスｂ２〜ｂ４やデータバスｂ５，ｂ６は、所定の本数（例えば３２本）の信号線を有している。
【００１９】
比較器１３は、アドレスセレクタ１４及びデータセレクタ１５と制御信号線（点線で示す）ｃ１を介して接続されている。比較器１３は、制御信号線ｃ１により比較結果（ＰＥ＿ｎを識別する識別信号）をアドレスセレクタ１４及びデータセレクタ１５に通知する。
【００２０】
情報処理装置２００は、例えば、車載装置を電子制御するＥＣＵ（Electronic  control  unit）に搭載されるマイコンであるが、パソコンやワークステーションのようなコンピュータにも適用できる。
【００２１】
＜ＰＥ＿ｎ＞
ＰＥ＿ｎは、例えば、マルチコア型のプロセッサの各ＣＰＵ、ＤＳＰ、ＬＳＩ、ＩＣ、ＤＭＡ、周辺機器コントローラ等、共有リソース１６にアクセスする可能性のある手段である。また、ＰＥ＿ｎが全て同じものである必要はなく、ＣＰＵとＤＳＰのように異なるＰＥ＿ｎが含まれていてもよい。
【００２２】
ＰＥ＿ｎがプロセッサの場合、ＰＥ＿ｎの命令デコーダが命令をデコードしてオペコードとオペランドを演算ユニットに出力する。この後、ＰＥ＿ｎが命令を実行するが、この命令が共有リソース１６へのアクセス命令の場合、ＰＥ＿ｎがオペランドの一部又は全部をアドレスデコーダ１〜４に出力する。
【００２３】
ここで、共有リソース１６へアクセスする命令は、ロード命令に代表されるデータのリード、ストア命令に代表されるデータのライトに大別できる。共有リソース１６に周辺機器が含まれる場合も、周辺機器からデータを受け取るか、周辺機器に出力するかに大別できる。本実施例では、命令がデータのリードアクセス（以下、データリードという）の場合に効果的に遅延を抑制することができる。
【００２４】
ＲＡＣ１００が効果的なのはリードアクセスの場合なので、ＰＥ＿ｎはデータリードかデータストアかをアドレスデコーダ１〜４に通知することが好ましい。これにより、アドレスデコーダ１〜４は、命令がデータストアの場合、比較器１３にアクセスアドレスを出力しないなどの処置や、比較器１３がアドレスセレクタ１４にデータストアの命令が実行されたことを検出できる。なお、命令がデータストアの場合、ＰＥ＿ｎはＲＡＣ１００を介さずに又はＲＡＣ１００の一部の機能のみを利用して、共有リソース１６にデータを格納する。
【００２５】
＜アドレスデコーダ＞
アドレスデコーダ１〜４は、ＰＥ＿ｎがアクセス先選択バスｂ１によって指定するアクセス先をデコードする。アクセス先は、例えばメモリマップドＩ／Ｏのアクセス方式により、アクセス対象の共有リソース１６の選択信号を含め（例えば、上位ａ bit）、共有リソース１６のアドレス（残りのb bit）にデコードされる。選択信号を含むアドレスがアクセスアドレスである。なお、メモリマップドＩ／Ｏを用いないアクセス方式の場合、アドレスデコーダ１〜４は、周辺機器を指定する入力命令や出力命令に付随するアクセス先をデコードして、共有リソース１６のアクセスアドレスを出力する。
【００２６】
アクセスアドレスは、アドレスバスｂ２、ｂ３に出力され、比較器１３とアドレスセレクタ１４に入力される。なお、ＰＥ＿ｎが共有リソース１６にアクセス要求しない命令を実行する場合には、そのＰＥ＿ｎに接続されたアドレスデコーダ１〜４からアクセスアドレスは出力されない。
【００２７】
＜比較器＞
比較器１３は、アドレスバスｂ２に出力された複数のアクセスアドレスを比較して、複数のアクセスアドレスから同じアクセスアドレスを検出する。ＰＥ＿ｎが４つの場合、２つのＰＥ＿ｎのアクセスアドレスが一致する場合、３つのＰＥ＿ｎのアクセスアドレスが一致する場合、及び、４つのアクセスアドレスが一致する場合がある。比較器１３は、アクセスアドレスが一致したＰＥ＿ｎを識別する識別信号を、制御信号線ｃ１を介してアドレスセレクタ１４及びデータセレクタ１５に通知する。例えば、２つのＰＥ＿ｎのアクセスアドレスが一致した場合、その２つのＰＥ＿ｎの識別信号が、アドレスセレクタ１４及びデータセレクタ１５に通知される。
【００２８】
なお、特殊な比較結果として、２つ以上のＰＥ＿ｎのアクセスアドレスが、２組以上一致する場合がある。これは、例えば、ＰＥ＿１とＰＥ＿２のアクセスアドレスが一致すると共に、ＰＥ＿３とＰＥ＿４のアクセスアドレスが一致する場合である。このような場合は、比較器１３が順番にＰＥ＿ｎを識別する識別信号をアドレスセレクタ１４及びデータセレクタ１５に通知するなどして調停する。
【００２９】
＜アドレスセレクタ＞
アドレスセレクタ１４は、一致したアクセスアドレスのいずれか１つ（どれを選択しても同じ）をアドレスバスｂ４に出力すると共に、不図示のコントロールバスをリードにする。こうすることで、共有リソース１６毎に決まったレイテンシの後、共有リソース１６からデータバスｂ５を介してデータセレクタ１５にデータが入力される。
【００３０】
＜データセレクタ＞
データセレクタ１５は、ＰＥ＿ｎを識別する識別信号に基づき、共有リソース１６からリードされたデータをＰＥ＿ｎに出力する。例えば、ＰＥ＿１とＰＥ＿２のアクセスアドレスが一致していた場合、データセレクタ１５はＰＥ＿１とＰＥ＿２にだけデータを出力し、ＰＥ＿１〜ＰＥ＿３のアクセスアドレスが一致していた場合、データセレクタ１５はＰＥ＿１〜ＰＥ＿３にだけデータを出力し、ＰＥ＿１〜ＰＥ＿４のアクセスアドレスが一致していた場合、データセレクタ１５はＰＥ＿１〜ＰＥ＿４にだけデータを出力する。
【００３１】
ここで、データセレクタ１５は、レイテンシだけ待機した後、同じタイミングで各ＰＥ＿ｎにデータを出力する。「同じタイミング」とは、「１動作クロック」と同義であり「同時」といってもよい。したがって、アクセスアドレスが同じＰＥ＿ｎの数が多いほど、遅延の抑制効果が高い。
【００３２】
＜共有リソース１６＞
共有リソース１６は、例えば、レジスタ（汎用レジスタ、特殊レジスタ）、ＲＡＭ、フラッシュメモリ、タイマ、通信回路や入出力Ｉ／Ｆ等の周辺機器である。通信回路は、例えば、車載された他のＥＣＵと通信するためのＣＡＮやＦｌｅｘＲａｙなどのプロトコルに対応した通信コントローラである。また、入出力Ｉ／Ｆは、例えば、センサからのセンサ信号を取り込むＩ／Ｆ、アクチュエータを制御する信号を出力するＩ／Ｆ等である。車載されるセンサは多種多様であるが、例えば、車速センサ、Ｎｅセンサ、アクセル開度センサ、スロット開度センサ等であり、アクチュエータは、例えばインジェクタ駆動アクチュエータ、スロットルアクチュエータ等である。
【００３３】
このように、情報処理装置２００は車載されるＥＣＵに好適に適用できる。これまで、車載装置毎に設計されていた複数のＥＣＵを、１つのＥＣＵに統合することが検討されており、複数のＰＥ＿ｎが搭載されたＥＣＵが増えることが予想される。本実施例の情報処理装置２００では、異なるＥＣＵに搭載されていたＰＥが１つの情報処理装置に搭載された場合にも効果的である。すなわち、各ＰＥ＿ｎが共有リソース１６を共有して同じアドレスからデータをロードする際、複数のＰＥ＿ｎが少ない遅延で（調停の頻度を低減して）データをロードすることができる。
【００３４】
なお、２つ以上のＰＥ＿ｎが同じアドレスにアクセスする場合には次のような状況がある。例えば、あるＰＥ＿ｎの演算結果を他の残りのＰＥ＿ｎが読み出すような場合、情報処理装置２００の起動時にフラッシュメモリから複数のＰＥ＿ｎが初期値を読み出すような場合、周辺機器（ＣＡＮの通信コントローラが他のＥＣＵからデータを受信した場合、センサがセンサ信号を検出した場合）が割り込みを通知して複数のＰＥ＿ｎがいっせいにそのデータを読み出すような場合、等である。
【００３５】
〔作用・効果〕
図４は、データセレクタ１５を用いたロード命令の実行時間を模式的に説明する図の一例である。時刻ｔ２のＰＥ＿１〜ＰＥ＿４の命令が全て、同じリソース（例えば、ＲＡＭ）からデータを読み出すＬＤＲ（ロード命令）である。そして、アドレスデコーダ１〜４がデコードしたロード命令のアクセスアドレスが全て同じであったとする。この場合、データセレクタ１５が１動作クロックでリードしたデータを、同じタイミングでＰＥ_１〜４に出力することができる。よって、ＰＥ＿１〜４のロード命令の全てが、時刻ｔ２で完了している。ＰＥ＿ｎの数が５以上であっても、全てのアクセスアドレスが同じであれば、１動作クロックでデータリードを完了させることができる。
【００３６】
＜アクセスアドレスが一致しないＰＥ＿ｎのデータリードについて＞
ここで、複数のＰＥ＿ｎのアクセスアドレスの全てが一致しない場合について説明する。結論から言えば、２つ以上のＰＥ＿ｎのアクセスアドレスが一致する限り、従来よりもデータリードの時間を短縮できる。
【００３７】
アクセス先の共有リソース１６が異なっても（レジスタ、ＲＡＭ又はＦｌａｓｈＲＯＭにアクセスが分散しても）データバスｂ５が共通であれば、同じタイミングで共有リソース１６にアクセスが発生する限り、ＰＥ＿ｎ間で調停が必要になる。
【００３８】
しかしながら、マルチコア型の情報処理装置２００では、共有リソース１６とＲＡＣ１００の間にマルチプレクサ型のインターコネクタを設け、異なる共有リソース１６に同時並行的にアクセスすることを可能にすることが多い。インターコネクタは、例えば、アクセスアドレスに基づき、共有リソース１６のレジスタ、ＲＡＭ、ＦｌａｓｈＲＯＭ、又は、周辺機器等へのアクセスを制御する（調停する）。
【００３９】
インターコネクタを備えた場合の情報処理装置２００を例にして説明する。
・４つのアクセスアドレが一致する場合
既に説明したようにデータリードに遅延がないのでＲＡＣ１００の効果が最も高い。
・３つのＰＥ＿ｎのアクセスアドレスが一致する場合
残りの１つのＰＥ＿ｎのアクセス先の共有リソース１６が、アクセスアドレスが一致した３つのＰＥ＿ｎと同じ場合（ａ）と異なる場合（ｂ）がある。
・２つのＰＥ＿ｎのアクセスアドレスが一致する場合
残りの２つのＰＥ＿ｎのアクセス先の共有リソース１６が共に、アクセスアドレスが一致した２つのＰＥ＿ｎと同じ場合（ｃ）と、異なる場合（ｄ）がある。（ｄ）の異なる場合は、さらに、残りの一方のＰＥ＿ｎと他方のＰＥ＿ｎのアクセス先が同じ場合（ｄ１）と異なる場合（ｄ２）がある。
【００４０】
図５は、アクセスアドレスが一致しないＰＥ＿ｎを含めたデータリードの時間を説明する図の一例である。
（ａ）の場合、４つのＰＥ＿ｎのアクセス先が同じ共有リソース１６なので、インターコネクタが、アクセスアドレスが一致した３つのＰＥ＿ｎのアクセスと、残りの１つのＰＥ＿ｎのアクセスを調停する。この場合の４つのＰＥ＿ｎがデータリードするまでの動作クロックは、「１（３つのＰＥ＿１〜３の分）＋１（残りの１つのＰＥ＿４の分）＝２」である。したがって、従来技術と比較しても、半分の動作クロックでデータリードできる。
（ｂ）の場合、アクセスアドレスが一致した３つのＰＥ＿ｎと、残りの１つのＰＥ＿ｎのアクセス先が異なる共有リソース１６なので、インターコネクタはアクセスアドレスが一致した３つのＰＥ＿ｎのアクセスと、残りの１つのＰＥ＿ｎのアクセスを同時並行的に許可できる。この場合の４つのＰＥ＿ｎがデータリードするまでの動作クロックは、「１（３つのＰＥ＿１〜３の分）＝１（残りの１つのＰＥ＿４の分）＝１」である。したがって、４つのアクセスアドレが一致する場合と同じ効果が得られる。
（ｃ）の場合、４つのＰＥ＿ｎのアクセス先が同じ共有リソース１６なので、インターコネクタが、アクセスアドレスが一致した２つのＰＥ＿ｎのアクセスと、残りの２つ以上のＰＥ＿ｎのアクセスを調停する。この場合の４つのＰＥ＿ｎがデータリードするまでの動作クロックは、「１（２つのＰＥ＿１，２の分）＋１（残りの１つのＰＥ＿３の分）＋１（残りの１つのＰＥ＿４の分）＝３」である。したがって、従来技術と比較しても動作クロックが少ない。
（ｄ１）の場合、アクセスアドレスが一致した２つのＰＥ＿ｎと、残りの２つ以上のＰＥ＿ｎの共有リソースが異なり、残りの２つのＰＥ＿ｎのアクセス先が同じ共有リソース１６なので、インターコネクタはアクセスアドレスが一致した２つのＰＥ＿ｎのアクセスと、残りの一方のＰＥ＿ｎのアクセスを同時並行的に許可できる。この場合の４つのＰＥ＿ｎがデータリードするまでの動作クロックは、「｛１（２つのＰＥ＿１、２の分）or  １（残りの一方のＰＥ＿３の分）  ＋  １（残りの他方のＰＥ＿４の分）｝＝２」である。したがって、従来技術と比較しても、半分の動作クロックでデータリードできる。
（ｄ２）の場合、アクセスアドレスが一致した２つのＰＥ＿ｎと、残りの２つ以上のＰＥ＿ｎの共有リソース１６が異なり、残りの２つ以上のＰＥ＿ｎのアクセス先がそれぞれ異なる共有リソース１６なので、インターコネクタは、アクセスアドレスが一致した２つのＰＥ＿ｎのアクセスと、残りの２つのＰＥ＿ｎのアクセスを同時並行的に許可できる。この場合の４つのＰＥ＿ｎがデータリードするまでの動作クロックは、「１（２つのＰＥ＿１，２の分）＝１（残りの１つのＰＥ＿３の分）＝１（残りの１つのＰＥ＿４の分）＝１」である。したがって、４つのアクセスアドレが一致する場合と同じ効果が得られる。
【００４１】
インターコネクタを設けることで、複数のＰＥ＿ｎ間が時間的に重複してアクセスできる可能性が高まり、ＲＡＣ１００がより効果的であることが分かる。
【００４２】
なお、インターコネクタがない場合は、アドレスアドレスが一致するか否かにだけ着目すればよい。（ａ）の場合は「１（３つのＰＥ＿１〜３の分）＋１（残りの１つのＰＥ＿４の分）＝２」、（ｂ）の場合は「１（３つのＰＥ＿１〜３の分）＋１（残りの１つのＰＥ＿４の分）＝２」、（ｃ）の場合は「１（２つのＰＥ＿１，２の分）＋１（残りの一方のＰＥ＿３の分）＋１（残りの他方のＰＥ＿４の分）＝３」、（ｄ１）の場合は「１（２つのＰＥ＿１，２の分）＋１（残りの一方のＰＥ＿３の分）＋１（残りの他方のＰＥ＿４の分）＝３」、（ｄ２）の場合「１（２つのＰＥ＿１，２の分）＋１（残りの一方のＰＥ＿３の分）＋１（残りの他方のＰＥ＿４の分）＝３」である。インターコネクタがない場合も、従来技術と比較すれば、より少ない動作クロックでデータリードできる。
【００４３】
このように、データリードにおいて２つ以上のＰＥ＿ｎのアクセスアドレスが一致すれば、データリードまでの時間を短縮できる。
【００４４】
＜動作手順＞
図６は、ＲＡＣ１００がデータリードを制御する手順を示すフローチャート図の一例である。まず、命令をデコードした各ＰＥ＿ｎは、アクセス先をアドレスデコーダ１〜４に出力する（Ｓ１０）。ここでは、データリード命令のアクセス先であるとする。  
アドレスデコーダ１〜４は比較器１３にアクセスアドレスを出力する（Ｓ２０）。比較器１３が、各ＰＥ＿ｎのアクセスアドレスに一致するものがあるか否かを判定する（Ｓ３０）。
【００４５】
一致するアクセスアドレスがない場合（Ｓ３０のＮｏ）、一般的なデータリードを行えばよいので、ステップＳ１００以下に進み、アドレスセレクタ１４は順番にアクセスアドレスにアクセスする。
【００４６】
一致するアクセスアドレスがある場合（Ｓ３０のＹｅｓ）、一致したアクセスアドレスについて一度にデータリードできるので、比較器１３は、アドレスセレクタ１４とデータセレクタ１５にＰＥ＿ｎの識別信号を出力する（Ｓ４０）。これにより、アドレスセレクタ１４は複数の中からアクセスアドレスを特定でき、データセレクタ１５はリードしたデータを複数の特定のＰＥ＿ｎに出力できる。
【００４７】
アドレスセレクタ１４は、比較器１３から通知されたＰＥ＿ｎのアクセスアドレスをアドレスバスｂ４に出力する（Ｓ５０）。これにより、データセレクタ１５には所定のレイテンシの後、データがリードされる（Ｓ６０）。
【００４８】
そして、データセレクタ１５は、比較器１３から通知されている、アクセスアドレスが一致したＰＥ＿ｎに同じタイミングでデータを出力する（Ｓ７０）。
【００４９】
次に、処理はステップ１００に移り、アクセスすべきアクセスアドレスがある場合（Ｓ１００のＹｅｓ）、アドレスセレクタ１４はアクセスアドレスをアドレスバスｂ４に出力する（Ｓ１１０）。「アクセスすべきアクセスアドレス」とは、複数のＰＥ_ｎ間でアクセスアドレスが一致しなかったアクセスアドレスである。
【００５０】
そして、データセレクタ１５が共有リソース１６からデータをリードする（Ｓ１２０）。ステップＳ１００〜Ｓ１２０を繰り返すことで、アドレスセレクタ１４はアクセスアドレスが一致しなかった全てのＰＥ＿ｎのデータリードを行うことができる。
【００５１】
以上説明したように、本実施例の情報処理装置２００は、複数のＰＥ＿ｎが同じ共有リソース１６の同じアドレスからデータリードする場合、アクセス調停による処理速度の低下が生じることなく、データリードの時間を短縮できる。
【実施例２】
【００５２】
本実施例では、複数のＰＥ＿ｎのロード命令が同時に同じアクセスアドレスでなくても、ある程度の時間内に同じアクセスアドレスであれば共有リソースへのリードアクセスを省略可能な、ＲＡＣ１００について説明する。
【００５３】
図７は、ＲＡＣ１００の概略構成図の一例を示す。本実施例ではアドレスセレクタ１４がアドレス履歴キャッシュ２１を、データセレクタ１５がデータ履歴キャッシュ２２を、それぞれ有することが特徴の１つとなる。
（１）まず、比較器１３はＰＥ＿１〜ＰＥ＿４のアクセスアドレスが２つ以上同じであることを検出する。
（２）比較器１３は、同じアクセスアドレスにアクセスするＰＥ＿１〜ＰＥ＿４をアドレスセレクタ１４及びデータセレクタ１５に通知する。
（３）アドレスセレクタ１４は、共有リソース１６にアクセスしたアクセスアドレスの履歴をアドレス履歴キャッシュ２１に記憶する。アドレス履歴キャッシュ２１には過去の数個〜１０個程度のアドレス履歴が記憶される。
（４）アドレスセレクタ１４は、アドレス履歴キャッシュ２１にＰＥ＿ｎから要求のあったアクセスアドレスが記憶されている場合、ＰＥ＿ｎの識別信号とそのアクセスアドレスの識別信号（例えば、アドレス履歴キャッシュ２１内のアドレス）をデータセレクタ１５に通知する（この通知をキャッシュ利用信号という）。
（５）同じアクセスアドレスにアクセスする複数のＰＥ＿ｎがある場合、データセレクタ１５は、共有リソース１６から読み出したデータを同じタイミングで、アクセス要求した２つ以上のＰＥ＿ｎに出力する。
（６）データセレクタ１５は、共有リソース１６から読み出したデータの履歴をデータ履歴キャッシュ２２に記憶する。
（７）データセレクタ１５は、アドレスセレクタ１４からキャッシュ利用信号を受け付けると、データ履歴キャッシュ２２に記憶されたデータをアクセス要求したＰＥ＿ｎに出力する。
【００５４】
したがって、実施例１と同様に、複数のＰＥ＿ｎが同じアドレスアクセスにアクセスする場合にデータリードの時間を短縮できるだけでなく、アドレス履歴キャッシュ２１に記憶されたアクセスアドレスを検出した場合、ＲＡＣ１００は共有リソース１６からデータリードする必要がなく、データ履歴キャッシュ２２からＰＥ＿ｎにデータを出力できるので、さらにデータリードの時間を短縮できる。
【００５５】
〔アドレス履歴キャッシュ・データ履歴キャッシュ〕
以下、詳細に説明する。
図８は、アドレス履歴キャッシュ２１とデータ履歴キャッシュ２２を模式的に示す図の一例である。アドレスセレクタ１４は、実際にアクセスしたアクセスアドレスをアドレス履歴キャッシュ２１に順番に記憶していく。本実施例のアクセスもデータリードのアクセスである。
【００５６】
アドレス履歴キャッシュ２１は、例えばリングバッファのような構造を有し、アドレスセレクタ１４は古いアクセスアドレスから順番に上書きする。図８のポインタＰ１（矢印）が次に上書きするアクセスアドレスのアドレス（アドレス履歴キャッシュ２１内のアドレスである）を示す。
【００５７】
同じタイミングでＰＥ＿ｎからアドレスセレクタ１４に入力された複数のアクセスアドレスが一致した場合、アドレスセレクタ１４は同じアクセスアドレスは１つだけアドレス履歴キャッシュ２１に記憶すればよい。一方、アドレスセレクタ１４は、異なるアクセスアドレスを全てアドレス履歴キャッシュ２１に記憶する。こうすることで、決まった数のアクセスアドレスがアドレス履歴キャッシュ２１に記憶された状態となる。なお、どのＰＥ＿ｎのアクセス履歴かをアドレス履歴キャッシュ２１に記憶する必要性は少ないため、本実施例では記憶しないが、記憶してもよい。
【００５８】
アドレス履歴キャッシュ２１の容量（アクセスアドレスの数）は、どのくらいの頻度で同じアクセスアドレスが発生するかに応じて定める。したがって、ＰＥ＿ｎのアプリケーションに応じて適切な容量は異なる。各ＰＥ＿ｎが短時間に同じアクセスアドレスにアクセスするほど、本実施例の情報処理装置２００が有効になる。
【００５９】
データセレクタ１５は、共有リソース１６からリードしたデータをデータ履歴キャッシュ２２に順番に記憶していく。データ履歴キャッシュ２２も、例えばリングバッファのような構造を有し、データセレクタ１５は古いデータから順番に上書きする。
【００６０】
データ履歴キャッシュ２２のデータの個数と、アドレス履歴キャッシュ２１のアクセスアドレスの個数は同じである。これは、アドレス履歴キャッシュ２１にだけアクセスの履歴が残っていても、データ履歴キャッシュ２２にデータが記憶されていなければ、共有リソース１６からデータを読み出す必要があるためである。したがって、データ履歴キャッシュ２２のポインタＰ２は、アドレス履歴キャッシュ２１のポインタＰ１と連動して移動し、ポインタＰ１とＰ２は、常に、基準となる位置（例えば、一番上のアドレス）に対し同じ位置を示すか、又は、両者の差であるオフセットが決まっている。
【００６１】
〔アドレス履歴キャッシュ・データ履歴キャッシュの変形例〕
アドレス履歴キャッシュ２１の容量は、数個〜10個程とした。これは、この程度の数のデータアクセスの間なら、共有リソース１６のデータとデータ履歴キャッシュ２２のデータとのコヒーレンスが保てるからである。しかし、データ履歴キャッシュ２２をより活用するため、十分な容量のデータ履歴キャッシュ２２を確保した場合、共有リソース１６のデータとデータ履歴キャッシュ２２のデータとのコヒーレンスが保てなくなるおそれもある。
【００６２】
コヒーレンスを保てなくなる原因の１つは、レジスタやＲＡＭへのストア命令である。そこで、アドレスセレクタ１４はストア命令を検出した場合に、アドレス履歴キャッシュ２１及びデータ履歴キャッシュ２２を初期化する（例えば「０ｘ００００」や「０ｘＦＦＦＦ」のような特別な値を記憶する）。こうすることで、アドレス履歴キャッシュ２１の容量に関係なく、共有リソース１６のデータとデータ履歴キャッシュ２２のデータとのコヒーレンスを保つことができる。
【００６３】
なお、ストア命令が実行され、ＰＥ＿ｎが保持する不図示のキャッシュを更新しようとＰＥ＿ｎがデータリードしても、実施例１，２のＲＡＣ１００の作用により、遅延を生じさせることがない。
【００６４】
〔比較器１３が一致するアクセスアドレスを検出する場合としない場合の処理〕
図７のＲＡＣ１００において生じるいくつかの状況を説明する。状況としては、比較器１３が一致するアクセスアドレスを検出する場合としない場合、アドレス履歴キャッシュ２１にアドレスの履歴が残っている場合と残っていない場合、を組み合わせた状況がある。ここで、比較器１３が一致するアクセスアドレスを検出した場合、複数のＰＥ_ｎが同じタイミングでデータリードできるので、データ履歴キャッシュ２２のデータを利用する必要性は低い。したがって、本実施例では、比較器１３が一致するアクセスアドレスを検出しない場合に、アドレスセレクタ１４が、アドレス履歴キャッシュ２１にアドレスの履歴が残っているか否かを判定するものとする。
【００６５】
ただし、比較器１３が一致するアクセスアドレスを検出した場合に、データ履歴キャッシュ２２のデータを利用する上での不都合はないので、比較器１３が一致するアクセスアドレスを検出した場合に、アドレス履歴キャッシュ２１にアドレスの履歴が残っているか否かを判定してもよい。アドレス履歴キャッシュ２１にアドレスの履歴が残っていれば、共有リソース１６からデータリードすることなく、データセレクタ１５はデータ履歴キャッシュ２２から複数のＰＥ＿ｎに同じタイミングでデータを出力する。
【００６６】
（Ｉ）比較器１３がアクセスアドレスが一致するＰＥ＿ｎをアドレスセレクタ１４に通知した場合の処理は、実施例１と同様である。すなわち、アドレスセレクタ１４はアドレスバスｂ４にアクセスアドレスを出力する。そして、アドレスセレクタ１４は、アドレス履歴キャッシュ２１の最も古い（ポインタＰ１が示す）アクセスアドレスを、アクセスアドレスで更新する。
【００６７】
また、データセレクタ１５は、共有リソース１６から読み出したデータを、比較器１３が通知したＰＥ＿ｎに同じタイミングで出力し、データ履歴キャッシュ２２の最も古い（ポインタＰ２が示す）データを、共有リソース１６から読み出したデータで更新する。
【００６８】
（II）比較器１３がアクセスアドレスが一致するＰＥ＿ｎがないと判定した場合、アドレスセレクタ１４は順番に各ＰＥ＿ｎのアクセスアドレスがアドレス履歴キャッシュ２１に記憶されているか否かを判定する。
【００６９】
アクセスアドレスがアドレス履歴キャッシュ２１に記憶されている場合、アドレスセレクタ１４はキャッシュ利用信号をデータセレクタ１５に通知する。上記のとおり、キャッシュ利用信号は、アドレス履歴キャッシュ２１に記憶されているアクセスアドレスへのアクセスを要求したＰＥ＿ｎの識別信号、及び、データ履歴キャッシュ２２のデータを特定するための、アドレス履歴キャッシュ２１に記憶されたアクセスアドレスの識別信号（例えば、アドレス履歴キャッシュ２１内のアドレス）である。
【００７０】
データセレクタ１５はキャッシュ利用信号により、データ履歴キャッシュ２２から読み出すデータを特定し、ＰＥ＿ｎに出力する。この場合、アドレスセレクタ１４は共有リソース１６にアクセスしないので、アドレスセレクタ１４はアドレス履歴キャッシュ２１を更新せず、データセレクタ１５はデータ履歴キャッシュ２２を更新しない。
【００７１】
アクセスアドレスがアドレス履歴キャッシュ２１に記憶されていない場合、アドレスセレクタ１４はアドレスバスにアクセスアドレスを出力する。そして、アドレスセレクタ１４は、アドレス履歴キャッシュ２１の最も古い（ポインタが示す）アクセスアドレスを、アクセスアドレスで更新する。
【００７２】
また、データセレクタ１５は、共有リソース１６から読み出したデータを、１つずつＰＥ＿ｎに出力し、データ履歴キャッシュ２２の最も古い（ポインタが示す）データを、共有リソース１６から読み出したデータで更新する。
【００７３】
したがって、本実施例の情報処理装置２００は、複数のＰＥ＿ｎが同じ動作クロックで共有リソース１６にアクセスしない場合でも、複数のＰＥ＿ｎが短時間に同じアドレスアクセスにアクセスする処理を実行する場合、共有リソース１６にアクセスする必要性を低減できるので、データリードの時間を低減することができる。
【００７４】
〔本実施例のＲＡＣの効果〕
図９は、キャッシュを用いたロード命令の実行時間を模式的に説明する図の一例である。比較のため、図９（ａ）に従来のアービタによる調停結果を示す。図において、２重線で囲まれたアクセスはアクセスアドレスＡへのアクセスを、点線で囲まれたアクセスはアクセスアドレスＢへのアクセスをそれぞれ示す。アクセスアドレスＡ、Ｂは同じ共有リソース１６のアドレスである。インターコネクタがあっても、同じ共有リソース１６へは同時に１つのＰＥ＿ｎしかアクセスできないので、同じ動作クロックでは複数のＰＥ＿ｎが「ロード命令（ＬＤＲ）」を実行することはできない。
【００７５】
このため、時刻ｔ４に実行されるべきＬＤＲ３は時刻５に遅れ、時刻ｔ３に実行されるべきＬＤＲ５は時刻９に遅れ、時刻ｔ７に実行されるべきＬＤＲ６は時刻１１に遅れ、時刻ｔ３に実行されるべきＬＤＲ４は時刻７に遅れ、時刻ｔ５に実行されるべきＬＤＲ７は時刻１３に遅れている。このような、遅れは、各ＰＥ＿ｎのパイプライン制御にストールを発生させ、大きな遅延をもたらす。
【００７６】
図９（ｂ）は、本実施例のＲＡＣ１００によるロード命令の実行時間を模式的に示す。図９（ｂ）では、ＬＤＲ１の実行により、時刻１の時点でアクセスアドレスＡがアドレス履歴キャッシュ２１に登録され、データ履歴キャッシュ２２にアクセスアドレスＡのデータが記憶されているとする。
【００７７】
ＬＤＲ２，３は、同じアクセスアドレスＢへのリードアクセスなので、ＲＡＣ１００が一度のアクセスで共有リソース１６からデータを読み出すことができる。このため、時刻３に２つのロード命令が実行されている。そして、このアクセスにより、アドレス履歴キャッシュ２１にアクセスアドレスＢが登録され、データ履歴キャッシュ２２にアクセスアドレスＢのデータが記憶される。
【００７８】
また、時刻３のＬＤＲ４は、アクセスアドレスＡへのアクセスであるが、アクセスアドレスＡはアドレス履歴キャッシュ２１に記憶されているので、ＬＤＲ４は、ＬＤＲ２，３と同時に実行できる。このため、ＰＥ＿１、３，４は同時にロード命令を実行することができる。
【００７９】
時刻４では、ＰＥ＿２がアクセスアドレスＡへアクセスするＬＤＲ５を実行するが、アクセスアドレスＡはアドレス履歴キャッシュ２１に記憶されており、データ履歴キャッシュ２２にアクセスアドレスＡのデータが記憶されている。このため、ＰＥ＿２は、実行タイミングが一部重複する、ＰＥ＿４のＬＤＲ４の完了を待つことなく、ＬＤＲ５を実行することができる。
【００８０】
また、アクセスアドレスＢへアクセスするＬＤＲ６とＬＤＲ７も実行時間の一部が重複しているが、アクセスアドレスＢはすでにアドレス履歴キャッシュ２１に記憶され、データ履歴キャッシュ２２にアクセスアドレスＢのデータが記憶されているので、ＰＥ＿２とＰＥ＿７は重複して実行することができる。
【００８１】
ＬＤＲ４とＬＤＲ５、及び、ＬＤＲ６とＬＤＲ７のように、同じタイミングのアクセスでなくても、若干の時間差内なら、ＰＥ＿ｎ間で待機時間が生じない点が、実施例1に対する効果となる。
【００８２】
〔動作手順〕
図１０は、ＲＡＣ１００がデータリードを制御する手順を示すフローチャート図の一例である。図１０ではステップ７０までの処理は実施例１と同様である。すなわち、ステップＳ３０において、一致するアクセスアドレスがある場合（Ｓ３０のＹｅｓ）、比較器１３は、アドレスセレクタ１４とデータセレクタ１５にＰＥ＿ｎの識別信号を出力する（Ｓ４０）。アドレスセレクタ１４は、比較器１３から通知されたＰＥ＿ｎのアクセスアドレスをアドレスバスに出力する（Ｓ５０）。これにより、データセレクタ１５には所定のレイテンシの後、データがリードされる（Ｓ６０）。
【００８３】
そして、データセレクタ１５は、比較器１３から通知されている、アクセスアドレスが一致したＰＥ＿ｎに同じタイミングでデータを出力する（Ｓ７０）。この場合、ＲＡＣ１００は、共有リソース１６にアクセスしたので、アドレスセレクタ１４はアドレス履歴キャッシュ２１を更新し、データセレクタ１５はデータ履歴キャッシュ２２を更新する（Ｓ８０）。
【００８４】
そして、処理はステップＳ１００に移る。アドレスセレクタ１４は、アクセスすべきアクセスアドレスがある場合（Ｓ１００のＹｅｓ）、そのアクセスアドレスがアドレス履歴キャッシュ２１に記憶されているか否かを判定する（Ｓ１０２）。
【００８５】
アクセスアドレスがアドレス履歴キャッシュ２１に記憶されている場合（Ｓ１０２のＹｅｓ）、ＲＡＣ１００が共有リソース１６にアクセスする必要がないので、アドレスセレクタ１４はキャッシュ利用信号をデータセレクタ１５に通知する（Ｓ１０４）。これにより、データセレクタ１５は、データ履歴キャッシュ２２のデータをＰＥ＿ｎに出力することができる（Ｓ１０６）。
【００８６】
アクセスアドレスがアドレス履歴キャッシュ２１に記憶されていない場合（Ｓ１０２のＮｏ）、実施例１と同様に、アドレスセレクタ１４はアクセスアドレスをアドレスバスｂ４に出力する（Ｓ１１０）。そして、データセレクタ１５が共有リソース１６からデータをリードする（Ｓ１２０）。また、この場合、ＲＡＣ１００は、共有リソース１６にアクセスしたので、アドレスセレクタ１４はアドレス履歴キャッシュ２１を更新し、データセレクタ１５はデータ履歴キャッシュ２２を更新する（Ｓ８０）。
【００８７】
以上説明したように、本実施例の情報処理装置２００は、実施例１の効果に加え、同じタイミングのアクセスでなくても、若干の時間差内の同じアクセスアドレスへのリードアクセスならＰＥ＿ｎ間で待機時間を生じさせないことで、処理時間をより短縮することができる。
【符号の説明】
【００８８】
１１      ＰＥ（プロセッサエレメント）
１２      アドレスデコーダ
１３      比較器
１４      アドレスセレクタ
１５      データセレクタ
１６      共有リソース
２０      インターコネクタ
２１      アドレス履歴キャッシュ
２２      データ履歴キャッシュ
１００    ＲＡＣ（リソース・アクセス・コントローラ）
２００    情報処理装置
【図１】
2011221569.tif 000003
【図２】
2011221569.tif 000004
【図３】
2011221569.tif 000005
【図４】
2011221569.tif 000006
【図５】
2011221569.tif 000007
【図６】
2011221569.tif 000008
【図７】
2011221569.tif 000009
【図８】
2011221569.tif 000010
【図９】
2011221569.tif 000011
【図１０】
2011221569.tif 000012