(57)【要約】複数のメモリブロックは、リクエスト元からのデータリクエストに対して、それぞれ異なるレイテンシでデータを返送する。リクエスト先のメモリブロックがリクエスト元に近いほど、短いレイテンシでデータが返送される。
2004025478.tif 000002
【特許請求の範囲】
【請求項１】
データリクエストを発行するリクエスト元と、
前記データリクエストに対してそれぞれ異なるレイテンシを有し、該データリクエストを受け取ってリクエストされたデータを出力する複数のメモリブロックと、
前記複数のメモリブロックから前記リクエスト元に対してそれぞれデータを転送する複数の転送パスと、
前記複数の転送パスのうち、前記データリクエストの発行先のメモリブロックから前記リクエスト元への転送パスを選択するセレクタと
を備えることを特徴とするデータ処理装置。
【請求項２】
前記リクエスト元は、前記データリクエストと先行する他のデータリクエストの間でデータ出力の競合が発生するとき、前記データリクエストを発行するタイミングを遅らせることを特徴とする請求項１記載のデータ処理装置。
【請求項３】
前記複数の転送パスのうち最短レイテンシを有するメモリブロックから前記リクエスト元への転送パスは、該リクエスト元と該複数の転送パスの間に設けられたバスにデータを出力するタイミングを変化させる可変長バッファを含むことを特徴とする請求項１記載のデータ処理装置。
【請求項４】
前記可変長バッファは、前記データリクエストと先行する他のデータリクエストの間で前記バスに対するデータ出力の競合が発生するとき、前記データを出力するタイミングを遅らせることを特徴とする請求項３記載のデータ処理装置。
【請求項５】
前記複数の転送パスのうち少なくとも一部の転送パスは、前記リクエスト元と該複数の転送パスの間に設けられたバスにデータを出力するタイミングを変化させる可変長バッファを含むことを特徴とする請求項１記載のデータ処理装置。
【請求項６】
前記可変長バッファは、該可変長バッファを含む転送パスに属するメモリブロックのレイテンシを最長レイテンシと同じ値にまで引き伸ばす回路を含むことを特徴とする請求項５記載のデータ処理装置。
【請求項７】
前記可変長バッファは、前記データリクエストと先行する他のデータリクエストの間で前記バスに対するデータ出力の競合が発生するとき、前記データを出力するタイミングを遅らせることを特徴とする請求項５記載のデータ処理装置。
【請求項８】
リクエスト元から発行されたデータリクエストに対してそれぞれ異なるレイテンシを有し、該データリクエストを受け取ってリクエストされたデータを出力する複数のメモリブロックと、
前記複数のメモリブロックから前記リクエスト元に対してそれぞれデータを転送する複数の転送パスと、
前記複数の転送パスのうち、前記データリクエストの発行先のメモリブロックから前記リクエスト元への転送パスを選択するセレクタと
を備えることを特徴とするデータ処理装置。
【請求項９】
データリクエストを発行するリクエスト元と、
前記データリクエストを受け取ってリクエストされたデータのタグを出力するタグメモリと、該データリクエストを受け取ってリクエストされたデータを出力するデータメモリとを含み、該データリクエストに対してそれぞれ異なるデータレイテンシを有する複数のキャッシュメモリブロックと、
出力されたタグを用いてキャッシュ制御を行う制御回路と、
前記複数のキャッシュメモリブロックから前記制御回路に対してそれぞれタグを転送する複数のタグ転送パスと、
前記複数のキャッシュメモリブロックから前記リクエスト元に対してそれぞれデータを転送する複数のデータ転送パスと、
前記複数のタグ転送パスのうち、前記データリクエストの発行先のキャッシュメモリブロックから前記制御回路へのタグ転送パスを選択する第１のセレクタと、
前記複数のデータ転送パスのうち、前記発行先のキャッシュメモリブロックから前記リクエスト元へのデータ転送パスを選択する第２のセレクタと
を備えることを特徴とするデータ処理装置。
【請求項１０】
前記リクエスト元は、前記データリクエストと先行する他のデータリクエストの間で前記制御回路に対するタグ出力の競合が発生するとき、前記データリクエストを発行するタイミングを遅らせることを特徴とする請求項９記載のデータ処理装置。
【請求項１１】
前記複数のタグ転送パスのうち最短データレイテンシを有するキャッシュメモリブロックから前記制御回路へのタグ転送パスは、該制御回路にタグを供給するタイミングを変化させる第１の可変長バッファを含み、前記複数のデータ転送パスのうち該最短データレイテンシを有するキャッシュメモリブロックから前記リクエスト元へのデータ転送パスは、該リクエスト元と該複数のデータ転送パスの間に設けられたバスにデータを出力するタイミングを変化させる第２の可変長バッファを含むことを特徴とする請求項９記載のデータ処理装置。
【請求項１２】
前記第１の可変長バッファは、前記データリクエストと先行する他のデータリクエストの間で前記制御回路に対するタグ出力の競合が発生するとき、前記タグを供給するタイミングを遅らせることを特徴とする請求項１１記載のデータ処理装置。
【請求項１３】
前記複数のタグ転送パスのうち少なくとも一部のタグ転送パスは、前記制御回路にタグを供給するタイミングを変化させる第１の可変長バッファを含み、前記複数のデータ転送パスのうち該一部のタグ転送パスに属するキャッシュメモリブロックから前記リクエスト元へのデータ転送パスは、該リクエスト元と該複数のデータ転送パスの間に設けられたバスにデータを出力するタイミングを変化させる第２の可変長バッファを含むことを特徴とする請求項９記載のデータ処理装置。
【請求項１４】
前記第１の可変長バッファは、前記複数のキャッシュメモリブロックが前記データリクエストに対してそれぞれ異なるタグレイテンシを有するとき、該第１の可変長バッファを含むタグ転送パスに属するキャッシュメモリブロックのタグレイテンシを最長タグレイテンシと同じ値にまで引き伸ばす回路を含み、前記第２の可変長バッファは、該第２の可変長バッファを含むデータ転送パスに属するキャッシュメモリブロックのデータレイテンシを最長データレイテンシと同じ値にまで引き伸ばす回路を含むことを特徴とする請求項１３記載のデータ処理装置。
【請求項１５】
前記第１の可変長バッファは、前記データリクエストと先行する他のデータリクエストの間で前記制御回路に対するタグ出力の競合が発生するとき、前記タグを供給するタイミングを遅らせることを特徴とする請求項１３記載のデータ処理装置。
【請求項１６】
リクエスト元から発行されたデータリクエストを受け取ってリクエストされたデータのタグを出力するタグメモリと、該データリクエストを受け取ってリクエストされたデータを出力するデータメモリとを含み、該データリクエストに対してそれぞれ異なるデータレイテンシを有する複数のキャッシュメモリブロックと、
出力されたタグを用いてキャッシュ制御を行う制御回路と、
前記複数のキャッシュメモリブロックから前記制御回路に対してそれぞれタグを転送する複数のタグ転送パスと、
前記複数のキャッシュメモリブロックから前記リクエスト元に対してそれぞれデータを転送する複数のデータ転送パスと、
前記複数のタグ転送パスのうち、前記データリクエストの発行先のキャッシュメモリブロックから前記制御回路へのタグ転送パスを選択する第１のセレクタと、
前記複数のデータ転送パスのうち、前記発行先のキャッシュメモリブロックから前記リクエスト元へのデータ転送パスを選択する第２のセレクタと
を備えることを特徴とするデータ処理装置。
【請求項１７】
リクエスト元から発行されたデータリクエストに対してそれぞれ異なるレイテンシを有する複数のメモリブロックのうち、該データリクエストの発行先のメモリブロックに対して該データリクエストを転送し、
前記複数のメモリブロックから前記リクエスト元に対してそれぞれデータを転送する複数の転送パスのうち、前記発行先のメモリブロックから前記リクエスト元への転送パスを選択し、
前記発行先のメモリブロックから出力されたデータを、選択された転送パスを用いて前記リクエスト元に転送する
ことを特徴とするデータ処理方法。
【請求項１８】
リクエスト元から発行されたデータリクエストを受け取ってリクエストされたデータのタグを出力するタグメモリと、該データリクエストを受け取ってリクエストされたデータを出力するデータメモリとを含み、該データリクエストに対してそれぞれ異なるデータレイテンシを有する複数のキャッシュメモリブロックのうち、該データリクエストの発行先のキャッシュメモリブロックに対して該データリクエストを転送し、
前記複数のキャッシュメモリブロックからキャッシュ制御を行う制御回路に対してそれぞれタグを転送する複数のタグ転送パスのうち、前記発行先のキャッシュメモリブロックから該制御回路へのタグ転送パスを選択し、
前記複数のキャッシュメモリブロックから前記リクエスト元に対してそれぞれデータを転送する複数のデータ転送パスのうち、前記発行先のキャッシュメモリブロックから該リクエスト元へのデータ転送パスを選択し、
前記発行先のキャッシュメモリブロックから出力されたタグを、選択されたタグ転送パスを用いて前記制御回路に転送し、
前記発行先のキャッシュメモリブロックから出力されたデータを、選択されたデータ転送パスを用いて前記リクエスト元に転送する
ことを特徴とするデータ処理方法。
【発明の詳細な説明】
【技術分野】  本発明は、複数のブロックからなるメモリを有するデータ処理装置と、そのようなメモリのデータを処理する方法に関する。
【背景技術】  マイクロプロセッサをはじめとしてＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）の集積度および高速化の向上は目覚しいものがある。ＬＳＩの高速化が進む一方で主記憶装置等の外部メモリとの速度差は拡大しており、その差を埋めるために、大容量の（つまり、面積の大きな）キャッシュメモリをＬＳＩに搭載するという手法が一般化している。
また、携帯電話やＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｃｅ）をはじめとした小型だがデータ処理能力を要求される装置では、ＬＳＩ内部にプロセッサと主記憶が封入されている。今後も、集積度の向上に伴い、ＬＳＩ内部のメモリは大容量化の一途をたどるものと容易に想像できる。
従来のメモリ制御では、ＬＳＩ内部に搭載された大容量メモリへのアクセスはすべて単一のレイテンシで行われている（例えば、特許文献１および２参照）。
【特許文献１】  特開平０９−０４５０７５号公報
【特許文献２】  特開２０００−２９８９８３号公報
ここでのレイテンシとは、データリクエストを発行してからリクエストされたデータが帰ってくるまでの時間を意味し、レイテンシの単位としては、回路の同期に用いられるクロックのサイクル数が用いられる。
単一のレイテンシを用いると、リクエスト元から物理的に遠い位置にあるメモリへのアクセスも近いメモリへのアクセスも、レイテンシには差がなくなる。このような制御を行う理由は、主として次の２つである。
（１）単一のレイテンシとした方が制御が簡単になる。
（２）従来は、ＬＳＩ内における遅延時間のうち配線遅延時間が占める割合は小さく、ゲート遅延時間が主である。このため、ＬＳＩ内部でのメモリの配置位置により配線遅延時間が多少大きくなっても、それを１サイクル内に収めることができる。したがって、遅延時間が多少異なるメモリ間においても、同一のレイテンシを用いることが容易である。
しかし、半導体のプロセス技術が進歩しＬＳＩの速度（クロック周波数）がさらに向上するにつれ、ＬＳＩ内部の配線遅延時間が支配的になり、ＬＳＩ内での配置位置の差によるディレイ差が無視できなくなってきた。このような状況で、従来通り単一のレイテンシで制御を行うと、結果的に最も遠いメモリに合わせざるを得ず、メモリアクセスのレイテンシが大幅に伸びて処理性能に悪影響を与える。
図１は、単一のレイテンシによるメモリ制御をＬＳＩに搭載された大容量メモリに適用した場合の仮想的な構成を示している。図１のＬＳＩは、リクエスト元１１およびメモリ１２からなり、メモリ１２は４つのメモリブロックＭ１、Ｍ２、Ｍ３、およびＭ４にブロック化されている。リクエスト元１１からの距離は、Ｍ１、Ｍ２、Ｍ３、およびＭ４の順に遠くなっている。
各メモリブロックは、フリップフロップ回路（ＦＦ）２１、２２、データを格納するＲＡＭ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）２３、およびセレクタ２４を含む。ＦＦ２１および２２は、それぞれ１段（１サイクル）のバッファ回路として機能する。セレクタ２４は、同じブロック内のＲＡＭ２３からの出力パス、またはより遠くのブロックからの出力パスを選択し、選択されたパスのデータを出力する。
この場合、リクエスト元１１と各ブロックとの距離は、レイテンシに換算すると、リクエスト元１１から発行されたデータリクエストを発行先のＲＡＭ２３に転送するパスと、ＲＡＭ２３から出力されたデータをリクエスト元１１に転送するパスとに含まれるＦＦ２１の数で表される。ここでは、ブロックＭ１、Ｍ２、Ｍ３、およびＭ４までの距離は、それぞれ２サイクル、４サイクル、６サイクル、および８サイクルである。
ブロック間でレイテンシに差をつけない場合、最も遠いブロックＭ４に合わせて他のブロックにＦＦ２２が追加され、平均レイテンシは以下のようになる。
平均レイテンシ＝最大レイテンシ＝８サイクル
したがって、Ｍ４以外のメモリブロックに対するリクエストの処理が大幅に遅れることになる。
【発明の開示】
本発明の課題は、ＬＳＩのような半導体集積回路に大容量のメモリを搭載した場合のメモリアクセスを高速化するデータ処理装置および方法を提供することである。
本発明の第１のデータ処理装置は、複数のメモリブロック、複数の転送パス、およびセレクタを備える。
複数のメモリブロックは、リクエスト元から発行されたデータリクエストに対してそれぞれ異なるレイテンシを有し、そのデータリクエストを受け取ってリクエストされたデータを出力する。複数の転送パスは、これらのメモリブロックからリクエスト元に対してそれぞれデータを転送する。そして、セレクタは、これらの転送パスのうち、データリクエストの発行先のメモリブロックからリクエスト元への転送パスを選択する。
本発明の第２のデータ処理装置は、複数のキャッシュメモリブロック、制御回路、複数のタグ転送パス、複数のデータ転送パス、第１のセレクタ、および第２のセレクタを備える。
複数のキャッシュメモリブロックは、リクエスト元から発行されたデータリクエストを受け取ってリクエストされたデータのタグを出力するタグメモリと、そのデータリクエストを受け取ってリクエストされたデータを出力するデータメモリとを含み、データリクエストに対してそれぞれ異なるデータレイテンシを有する。制御回路は、出力されたタグを用いてキャッシュ制御を行う。
複数のタグ転送パスは、これらのキャッシュメモリブロックから制御回路に対してそれぞれタグを転送し、複数のデータ転送パスは、これらのキャッシュメモリブロックからリクエスト元に対してそれぞれデータを転送する。
第１のセレクタは、これらのタグ転送パスのうち、データリクエストの発行先のキャッシュメモリブロックから制御回路へのタグ転送パスを選択し、第２のセレクタは、これらのデータ転送パスのうち、データリクエストの発行先のキャッシュメモリブロックからリクエスト元へのデータ転送パスを選択する。
【図面の簡単な説明】  図１は、複数のメモリブロックを有する仮想的なＬＳＩの構成図である。
図２は、本発明のデータ処理装置の分類を示している。
図３は、第１の基本構成を示す図である。
図４は、第２の基本構成を示す図である。
図５は、２つのリクエスト間におけるデータ出力の競合を示す図である。
図６は、リクエスト発行を遅らせる第１の例を示す図である。
図７は、リクエスト発行を遅らせる第２の例を示す図である。
図８は、第１の応用構成を示す図である。
図９は、データ出力を遅らせる例を示す図である。
図１０は、第２の応用構成を示す図である。
図１１は、第１の可変長バッファの構成図である。
図１２は、第２の可変長バッファの構成図である。
図１３は、第３の可変長バッファの構成図である。
図１４は、アクセス投入制御回路の構成図である。
図１５は、第２の応用構成の詳細を示す図である。
図１６は、可変長バッファ段数選択回路の構成図である。
図１７は、データ有効フラグ応答回路の構成図である。
図１８は、キャッシュメモリ基本構成を示す図である。
図１９は、リクエスト発行を遅らせる第３の例を示す図である。
図２０は、第１のキャッシュメモリ応用構成を示す図である。
図２１は、タグ出力とデータ出力を遅らせる例を示す図である。
図２２は、第２のキャッシュメモリ応用構成を示す図である。
図２３は、チップレベルマルチプロセッサの構成図である。
【発明を実施するための最良の形態】  以下、図面を参照しながら、本発明の実施の形態を詳細に説明する。
本実施形態では、ＬＳＩ内のメモリをレイテンシの差に応じて複数のブロックに分割し、レイテンシの短いブロック（つまり、物理的にリクエスト元に近い位置のブロック）へのアクセスに対しては早く結果を返すようにする。これにより、レイテンシ差を有効利用して平均レイテンシを短縮し、ＬＳＩの性能向上を図ることができる。
本実施形態のデータ処理装置の構成は、大別すると、図２に示すような６つの構成に分類できる。基本構成３１は、リクエスト元の位置とメモリ内のデータの配置位置との関係を考慮し、メモリ内のデータをレイテンシ差に応じてブロック化した構成であり、応用構成３２は、基本構成３１に対して、最短レイテンシのブロックに１段の可変長バッファを追加した構成である。
また、応用構成３３は、基本構成３１に対して、最短レイテンシのブロックのみならず、より長いレイテンシのブロックに対しても、可変長バッファを追加した構成である。この場合、最長レイテンシのブロックと同じレイテンシを実現可能な複数段の可変長バッファが、各ブロックに追加される。
次に、構成３４、３５、および３６は、それぞれ構成３１、３２、および３３をキャッシュメモリに拡張した実施形態を表している。
キャッシュメモリ基本構成３４は、キャッシュのデータおよびタグをレイテンシ差に応じてブロック化した構成であり、キャッシュメモリ応用構成３５は、キャッシュメモリ基本構成３４に対して、最短レイテンシのブロックに１段の可変長バッファを追加した構成である。また、キャッシュメモリ応用構成３６は、キャッシュメモリ基本構成３４に対して、各ブロックに複数段の可変長バッファを追加した構成である。
以下、図３から図２３までを参照しながら、各構成の具体例について説明する。
まず、図１のＬＳＩに本発明の基本構成３１を適用した場合、ＬＳＩの構成は図３のようになる。図３のＬＳＩは、リクエスト元４１およびメモリ４２からなり、メモリ４２は４つのメモリブロックＭ１、Ｍ２、Ｍ３、およびＭ４にブロック化されている。
リクエスト元４１は、例えば、ＣＰＵ（中央処理装置）内のメインパイプライン、演算器等に対応し、メモリ４２の各ブロックに対してデータリクエストを発行し、メモリ４２から出力バス５１を介してデータを受け取る。この場合、ブロック毎に異なるレイテンシを用いてメモリ制御が行われるため、ＦＦ２２は不要となる。
ブロックＭ１、Ｍ２、Ｍ３、およびＭ４のレイテンシは、それぞれ２サイクル、４サイクル、６サイクル、および８サイクルであるから、メモリアクセスの平均レイテンシは次のようになる。
平均レイテンシ＝（２＋４＋６＋８）／４＝５サイクル
したがって、図１の場合と比べて３サイクル分の性能向上となる。図３の構成では、各メモリブロックにセレクタ２４を設けて、同じブロック内のＲＡＭ２３から出力されたデータ、またはより遠くのブロックから出力されたデータのいずれかを選択している。しかし、このような出力データの選択を、出力バス５１の直前で一括して行うことも可能である。
図４は、このようなＬＳＩの構成を示している。図４のメモリブロックＭ１、Ｍ２、およびＭ３には、セレクタ２４の代わりに、よりレイテンシの長いブロックから出力されたデータを転送するＦＦ２１が追加されている。セレクタ５２は、４つのメモリブロックの外側に設けられ、それらのブロックからの４つのデータ転送パスの１つを選択して、選択されたパスのデータを出力バス５１に出力する。実際には、データリクエストに含まれるブロック識別情報に応じて、対応する転送パスが選択される。
この場合も、ブロックＭ１、Ｍ２、Ｍ３、およびＭ４のレイテンシは、それぞれ２サイクル、４サイクル、６サイクル、および８サイクルであり、平均レイテンシは５サイクルとなる。
ところで、レイテンシの異なるブロックからのデータをリクエスト元に返す際には、レイテンシ差に起因する出力バス５１の競合に注意しなければならない。
例えば、図５に示すように、レイテンシ＝４サイクルであるブロックＭ２へのリクエストＲ１が発行されてから２サイクル後に、レイテンシ＝２サイクルであるブロックＭ１へのリクエストＲ２を発行した場合を考える。リクエストＲ１およびＲ２がそれぞれサイクル０１および０３において発行されると、それらのリクエストに対するデータはともにサイクル０４において出力バス５１に出力されるので、出力バス５１の競合が発生する。
この競合を抑止する最も単純な解決策は、図６に示すように、後続のリクエストＲ２の発行を１サイクル遅らせる方法である。この場合、リクエストＲ２に対するデータは、サイクル０４ではなく、サイクル０５において出力バス５１に出力されるので競合は発生しない。
このようなメモリ制御を実現するために、ＬＳＩ内には以下のような機構（回路）が付加される。
（ａ）固定レイテンシではないため、リクエスト元に対して非同期にデータの転送を指示する指示機構が必要となる。この指示機構は、アクセスするブロックに応じて各リクエストのレイテンシを計算し、その結果に応じて出力バス５１上のデータが有効であることをリクエスト元に通知する。
（ｂ）レイテンシに差がある複数のブロックへのリクエストが連続して発生する場合、出力バス５１上へのデータ出力が競合するのを回避する必要がある。このため、各リクエストのレイテンシを求める上記（ａ）の指示機構とともに、現在実行中のリクエストのレイテンシを記憶しておき、出力が競合すると判断される場合には後続のリクエストの発行を抑止する（遅らせる）抑止機構が必要となる。
これらの指示機構および抑止機構の具体例については、後述することにする。図６において、例えば、リクエストＲ２のすぐ後にブロックＭ２へのリクエストＲ３が続いていた場合には、抑止機構により図７に示すようなスケジューリングが行われる。
この場合、リクエストＲ３の発行先のレイテンシは４サイクルであるから、サイクル０４においてリクエストＲ３を発行すれば、サイクル０７においてメモリ４２からデータが出力され、リクエストＲ２との間で出力の競合は発生しない。それにもかかわらず、リクエストＲ２の発行が遅れたため、後続のリクエストＲ３の発行も遅れ、実際のデータはサイクル０８において出力されることになる。その結果、実質的なレイテンシも引きずられて伸びてしまい、全体のスループットが悪化する。
そこで、図２の基本構成３１の代わりに応用構成３２を採用することで、レイテンシの異なる複数のブロックからのデータ出力の調停を行うことが考えられる。この場合、以下のような機能が追加される。
（ｃ）最短レイテンシのメモリブロックの出力に、１段の可変長バッファを付加する。
（ｄ）前述した（ｂ）の抑止機構の機能を拡張して、最短レイテンシのメモリブロックへのアクセスについては、以下の２つの判断を同時に行うようにする。
−１段のバッファを使用しない場合の競合状況の判断
−１段のバッファを使用する場合の競合状況の判断
バッファを使用しなくても出力が競合しない場合には、バッファを使用しないように転送パスを選択する。一方、バッファを使用しないと競合が生じ、使用すると競合が生じない場合には、バッファを使用するように転送パスを選択する。バッファの有無によらず出力が競合する場合には、リクエストの発行を遅らせる。
例えば、図４において最短レイテンシ（２サイクル）を有するブロックＭ１に可変長バッファを付加すると、ＬＳＩの構成は図８のようになる。図８のブロックＭ１にはセレクタ５３とＦＦ５４からなる１段の可変長バッファが設けられている。セレクタ５３は、ＦＦ５４をバッファとして使用する場合の競合状況とそれを使用しない場合の競合状況に基づいて、ＲＡＭ２３から直接データを転送するパスとＦＦ５４を介して転送するパスのいずれかを選択する。
ＦＦ５４を通るパスを選択すればブロックＭ１からのデータ出力を１サイクルだけ遅らせることができるので、ブロックＭ１のレイテンシは２〜３サイクルの範囲で可変となる。
これにより、図７のリクエストＲ２およびＲ３の発行とデータのレイテンシは、図９に示すように改善される。この場合、サイクル０３においてリクエストＲ２を発行しても、転送パスとしてＦＦ５４を通るパスを選択すればデータ出力を１サイクル遅らせることができるので、サイクル０４におけるリクエストＲ１に対するデータ出力と競合することはない。したがって、次のリクエストＲ３の発行を遅らせる必要がなくなり、サイクル０４においてＲ３を発行し、サイクル０７においてデータを出力することが可能となる。
上述した応用構成３２は、物量の増大を最小限に抑えるために、最短レイテンシのメモリブロックについてのみ可変長バッファを付加した限定的な対処である。物量が許すならばこの構成をさらに拡張し、最長レイテンシのメモリブロックを除くすべてのブロックについて、最長レイテンシとの差を埋めることが可能な可変長バッファを用意することにより、あらゆる状況に対処することが可能となる。このような構成が図２の応用構成３３である。
応用構成３３では、各メモリブロックのレイテンシを最長レイテンシのメモリブロックと同じレイテンシにまで引き伸ばすことができるような可変長バッファを、各メモリブロックに付加する。これにより、レイテンシの調節範囲が拡大し、出力の競合による性能低下を完全に防ぐことができるようになる。
例えば、図４においてブロックＭ１〜Ｍ３にこのような可変長バッファを付加すると、ＬＳＩの構成は図１０のようになる。図１０のブロックＭ１、Ｍ２、およびＭ３にはそれぞれ可変長バッファ５５、５６、および５７が設けられている。
可変長バッファ５５は、図１１に示すように、セレクタ６１、６２、および６３と６個のＦＦ５４からなる。各ＦＦ５４は１段のバッファとして用いられ、各セレクタは、ＲＡＭ２３から直接データを転送するパスとＦＦ５４を介して転送するパスのいずれかを選択する。
この可変長バッファ５５は、０段、２段、４段、および６段の４つのバッファ長を設定することができ、これらのバッファ長はデータ出力をそれぞれ０サイクル、２サイクル、４サイクル、および６サイクルだけ遅らせることができる。０段の場合、セレクタ６１は入力Ｉ２を選択し、２段の場合、セレクタ６１、６２はそれぞれ入力Ｉ１、Ｉ４を選択する。４段の場合、セレクタ６１、６２、６３はそれぞれ入力Ｉ１、Ｉ３、Ｉ６を選択し、６段の場合、セレクタ６１、６２、６３はそれぞれ入力Ｉ１、Ｉ３、Ｉ５を選択する。
可変長バッファ５６は、図１２に示すように、セレクタ６１および６２と４個のＦＦ５４からなる。この可変長バッファ５６は、０段、２段、および４段の３つのバッファ長を設定することができる。０段の場合、セレクタ６１は入力Ｉ２を選択し、２段の場合、セレクタ６１、６２はそれぞれ入力Ｉ１、Ｉ４を選択し、４段の場合、セレクタ６１、６２はそれぞれ入力Ｉ１、Ｉ３を選択する。
可変長バッファ５７は、図１３に示すように、セレクタ６１と２個のＦＦ５４からなる。この可変長バッファ５７は、０段および２段の２つのバッファ長を設定することができる。０段の場合、セレクタ６１は入力Ｉ２を選択し、２段の場合、セレクタ６１は入力Ｉ１を選択する。
これらの可変長バッファを設けることで、ブロックＭ１、Ｍ２、およびＭ３のレイテンシはそれぞれ２〜８サイクル、４〜８サイクル、および６〜８サイクルの範囲で可変となり、いずれのブロックもブロックＭ４のレイテンシである８サイクルを実現可能となっている。メモリ４２の最長レイテンシは８サイクルであるから、どのような状況であってもデータ出力を最大８サイクル遅らせれば出力の競合が発生することはない。
図１４は、前述した抑止機構の一例に対応するアクセス投入制御回路の構成図である。図１４のアクセス投入制御回路は、リクエスト元４１とメモリ４２の間に設けられ、リクエスト元４１からリクエスト信号Ｒを受け取って、アクセス信号Ａをリクエスト元４１に返送する。
アクセス信号Ａは、論理“１”のときメモリ４２へのアクセス投入が可能であることを表し、論理“０”のときアクセス投入が不可能であることを表す。リクエスト元４１は、アクセス信号Ａが論理“１”となるまでリクエストの発行を遅らせる。
また、ブロック出力選択信号Ｏ１〜Ｏ４は、セレクタ５２の制御信号として用いられる。セレクタ５２は、信号Ｏｉ（ｉ＝１，２，３，４）が論理“１”のときブロックＭｉからの転送パスを選択する。
デコーダ６４は、リクエスト信号Ｒをデコードして発行先のアドレスを取得し、ブロック選択信号Ｓ１〜Ｓ４を出力する。信号Ｓｉ（ｉ＝１，２，３，４）は、発行先がブロックＭｉであるときに論理“１”となる。
信号Ｓ４は８個のＦＦ５４が直列に接続された回路に入力され、８サイクル後に信号Ｏ４として出力される。ＡＮＤ回路６５の出力は、信号Ｓ３が論理“１”であり、かつ、６サイクル先で信号Ｏ４が論理“０”である場合に、論理“１”となる。ＡＮＤ回路６５の出力は、６個のＦＦ５４が直列に接続された回路に入力され、６サイクル後に信号Ｏ３として出力される。
ＡＮＤ回路６６の出力は、信号Ｓ２が論理“１”であり、かつ、４サイクル先で信号Ｏ３およびＯ４がともに論理“０”である場合に、論理“１”となる。ＡＮＤ回路６６の出力は、４個のＦＦ５４が直列に接続された回路に入力され、４サイクル後に信号Ｏ２として出力される。
ＡＮＤ回路６７の出力は、信号Ｓ１が論理“１”であり、かつ、２サイクル先で信号Ｏ２、Ｏ３、およびＯ４がともに論理“０”である場合に、論理“１”となる。ＡＮＤ回路６７の出力は、２個のＦＦ５４が直列に接続された回路に入力され、２サイクル後に信号Ｏ１として出力される。そして、ＯＲ回路６８は、信号Ｓ４とＡＮＤ回路６５〜６７の出力の論理和をアクセス信号Ａとして出力する。
このようなアクセス投入制御回路によれば、ブロックＭ４を発行先とするリクエストはそのままメモリ４２に投入される。しかし、他のブロックを発行先とするリクエストは、先行するリクエストとの間でデータ出力が競合するかどうかがチェックされ、競合する場合にはリクエストの発行が抑止される。
図１５は、図１０のＬＳＩのより詳細な構成図である。図１５では、図１０の構成に対してさらにデータ有効フラグ応答回路７１と可変長バッファ段数選択回路７２が追加されている。可変長バッファ段数選択回路７２は、発行されたリクエストに対するデータ出力のタイミングを表す出力バッファ予約情報を保持しており、以下のような制御を行う。
（１）リクエストのアドレスからアクセス先のブロック識別情報を得る。ブロック識別情報としては、例えば、ブロック番号が用いられる。ブロックが分かればその最低必要レイテンシが分かるので、それをｎサイクルとする。可変長バッファの使用段数ｍの初期値として０をセットする。
（２）出力バッファ予約情報から（ｎ＋ｍ）サイクル後の出力バス５１の空きを検査する。出力バス５１が空いていない場合は（３）の処理を行い、空いている場合は（４）の処理を行う。
（３）ｍに２を加算して（２）の処理を行う。
（４）アクセス先のブロックの可変長バッファの段数をｍ段に設定して、データをアクセスする。また、（ｎ＋ｍ）サイクル後にデータが出力されることを出力バッファ予約情報に追加し、後続のリクエストに備える。同時に、得られた（ｎ＋ｍ）サイクルの値をデータ有効フラグ応答回路７１に通知する。
データ有効フラグ応答回路７１は、前述した指示機構の一例に対応し、（ｎ＋ｍ）サイクル後にデータ有効フラグをリクエスト元４１に転送する。これにより、（ｎ＋ｍ）サイクル後のサイクルにおいて出力バス５１上のデータが有効であることを、リクエスト元４１に通知する。
図１６は、可変長バッファ段数選択回路７２の例を示している。デコーダ６４、リクエスト信号Ｒ、およびブロック選択信号Ｓ１〜Ｓ４については、図１４と同様である。
８個のＦＦ５４が直列に接続された回路は、先行リクエスト表示ビットマップを形成し、出力バッファ予約情報を記憶する。最終段のＦＦ５４から出力されるタイミング信号ＯＵＴは、データ出力が行われるサイクルで論理“１”となる。
バッファ段数選択信号Ｃ１−０〜Ｃ１−６は、ブロックＭ１の可変長バッファ５５の制御信号して用いられる。信号Ｃ１−ｉ（ｉ＝０，２，４，６）が論理“１”のとき、可変長バッファ５５にはｉ段のバッファ長が設定される。ただし、図１６では、信号Ｃ１−４は省略されている。
また、図１６では、ブロックＭ１のバッファ段数選択信号を生成する回路のみが示されているが、他のブロックのバッファ段数選択信号も同様の回路により生成される。信号Ｓ２からは、ブロックＭ２の可変長バッファ５６のバッファ段数選択信号Ｃ２−ｉ（ｉ＝０，２，４）が生成され、信号Ｓ３からは、ブロックＭ３の可変長バッファ５７のバッファ段数選択信号Ｃ３−ｉ（ｉ＝０，２）が生成される。
ＡＮＤ回路９１の出力は、以下の２つの条件が満たされた場合に論理“１”となる。
・信号Ｓ１が論理“１”
・２サイクル先で信号ＯＵＴが論理“０”
ＡＮＤ回路９１の出力は、最後から２番目のＦＦ５４に入力され、２サイクル後に信号ＯＵＴとして出力される。
ＡＮＤ回路９２の出力は、以下の３つの条件が満たされた場合に論理“１”となる。
・信号Ｓ１が論理“１”
・２サイクル先で信号ＯＵＴが論理“１”
・３サイクル先で信号ＯＵＴが論理“０”
ＡＮＤ回路９２の出力は、最後から３番目のＦＦ５４に入力され、３サイクル後に信号ＯＵＴとして出力される。そして、ＯＲ回路９６は、ＡＮＤ回路９１および９２の出力の論理和をバッファ段数選択信号Ｃ１−０として出力する。
このような回路によれば、出力バス５１が２サイクル先で空いていれば、可変長バッファ５５のバッファ長は０段に設定される。また、出力バス５１が２サイクル先で空いていなくても、３サイクル先で空いていれば、可変長バッファ５５のバッファ長は０段に設定される。この場合、リクエストされたデータの出力を１サイクル遅らせれば、出力の競合は発生しない。
ＡＮＤ回路９３の出力は、以下の４つの条件が満たされた場合に論理“１”となる。
・信号Ｓ１が論理“１”
・２サイクル先で信号ＯＵＴが論理“１”
・３サイクル先で信号ＯＵＴが論理“１”
・４サイクル先で信号ＯＵＴが論理“０”
ＯＲ回路８５は、ＡＮＤ回路９３の出力と他のブロック用に設けられたＡＮＤ回路（不図示）の出力の論理和を出力する。ＯＲ回路８５の出力は、最後から４番目のＦＦ５４に入力され、４サイクル後に信号ＯＵＴとして出力される。
ＡＮＤ回路９４の出力は、以下の５つの条件が満たされた場合に論理“１”となる。
・信号Ｓ１が論理“１”
・２サイクル先で信号ＯＵＴが論理“１”
・３サイクル先で信号ＯＵＴが論理“１”
・４サイクル先で信号ＯＵＴが論理“１”
・５サイクル先で信号ＯＵＴが論理“０”
ＯＲ回路８４は、ＡＮＤ回路９４の出力と他のブロック用に設けられたＡＮＤ回路（不図示）の出力の論理和を出力する。ＯＲ回路８４の出力は、最後から５番目のＦＦ５４に入力され、５サイクル後に信号ＯＵＴとして出力される。また、ＯＲ回路９７は、ＡＮＤ回路９３および９４の出力の論理和をバッファ段数選択信号Ｃ１−２として出力する。
このような回路によれば、出力バス５１が４サイクル先で空いていれば、可変長バッファ５５のバッファ長は２段に設定される。また、出力バス５１が４サイクル先で空いていなくても、５サイクル先で空いていれば、可変長バッファ５５のバッファ長は２段に設定される。この場合も、データの出力を１サイクル遅らせれば、出力の競合は発生しない。
ＡＮＤ回路９５の出力は、以下の７つの条件が満たされた場合に論理“１”となる。
・信号Ｓ１が論理“１”
・２サイクル先で信号ＯＵＴが論理“１”
・３サイクル先で信号ＯＵＴが論理“１”
・４サイクル先で信号ＯＵＴが論理“１”
・５サイクル先で信号ＯＵＴが論理“１”
・６サイクル先で信号ＯＵＴが論理“１”
・７サイクル先で信号ＯＵＴが論理“１”
ＯＲ回路８１は、ＡＮＤ回路９５の出力と他のブロック用に設けられたＡＮＤ回路（不図示）の出力の論理和を出力する。ＯＲ回路８１の出力は、最初のＦＦ５４に入力され、８サイクル後に信号ＯＵＴとして出力される。また、ＡＮＤ回路９５の出力は、バッファ段数選択信号Ｃ１−６として用いられる。
このような回路によれば、出力バス５１が２〜７サイクル先で空いていなければ、可変長バッファ５５のバッファ長は６段に設定される。この場合、レイテンシは最長の８サイクルとなるので、出力の競合は発生しない。
同様にして、ＯＲ回路８２および８３も、不図示のＡＮＤ回路の出力の論理和を出力する。ＯＲ回路８３の出力は、最後から６番目のＦＦ５４に入力され、６サイクル後に信号ＯＵＴとして出力される。ＯＲ回路８２の出力は、最後から７番目のＦＦ５４に入力され、７サイクル後に信号ＯＵＴとして出力される。また、バッファ段数選択信号Ｃ１−４も、他の選択信号と同様にして生成される。
このような可変長バッファ段数選択回路７２によれば、発行先のブロック番号と先行するリクエストのデータ出力タイミングとに応じて、最適なバッファ長が選択される。したがって、ブロック間のレイテンシ差を活用しながら、データ出力の競合を防止することができる。
図１７は、データ有効フラグ応答回路７１のうちメモリブロックＭ１用の制御回路の例を示している。図１７の制御回路は、図１１の可変長バッファの入力側と出力側にそれぞれＦＦ５４を追加した構成を有し、リクエスト信号Ｒを入力側から出力側に向かって順次シフトし、データ有効フラグＦとして出力する。メモリブロックＭ１の場合、ｎ＝２、ｍ＝０，２，４，６であるから、ｎ＋ｍ＝２，４，６，８となる。
セレクタ６１、６２、および６３は、可変長バッファ段数選択回路７２からの選択信号Ｃ（信号Ｃ１−０〜Ｃ１−６に相当する）により、図１１の可変長バッファと同様の論理で制御される。したがって、メモリブロックＭ１からデータが出力されるタイミングに合わせて、データ有効フラグＦをリクエスト元４１に転送することができる。他のメモリブロック用の制御回路の構成についても、図１７の回路と同様である。
ところで、データ有効フラグ応答回路７１が生成するデータ有効フラグＦの代わりに、図１６に示したタイミング信号ＯＵＴを用いることも可能である。この場合、信号ＯＵＴがリクエスト元４１に対して転送されるので、データ有効フラグ応答回路７１は不要となる。
図１５の構成では、すべての状況に対処できるように、最長レイテンシのメモリブロックＭ４を除くすべてのメモリブロックに可変長バッファを設けている。しかしながら、限定的な状況にのみ対処できればよい場合は、一部のメモリブロックにのみ可変長バッファを設けるようにしてもよい。
図８の構成は、図１５の構成を簡略化したものとみなすことができるので、図１５のデータ有効フラグ応答回路７１と可変長バッファ段数選択回路７２と同様の制御回路により制御することができる。この場合の制御回路の構成は、図１６および図１７から容易に推定できる。
以上説明した基本構成３１、応用構成３２、および応用構成３３は、一般的なメモリの場合の構成であるが、このメモリがキャッシュメモリである場合に、キャッシュのタグについてもデータと同様のレイテンシ差を持たせることができる。図２の基本構成３１、応用構成３２、および応用構成３３をそれぞれキャッシュメモリに拡張した構成が、キャッシュメモリ基本構成３４、キャッシュメモリ応用構成３５、およびキャッシュメモリ応用構成３６である。
ＬＳＩ内のキャッシュメモリについて本発明を適用するには、タグの構造についての考慮が必要となる。データに比べてタグの物量が少なく、すべてのブロックのタグをリクエスト元に近い場所にまとめて配置できるのであれば、基本構成３１、応用構成３２、および応用構成３３で対処可能である。しかし、タグの物量が無視できないほど大きい場合には、それも分散配置する必要がある。そこで、キャッシュメモリ基本構成３４では、以下のような追加構成／機能により、大容量のキャッシュメモリに対処する。
（ｅ）データをキャッシュライン毎に分散配置する。これにより、タグもブロック毎に分散配置可能となる。
（ｆ）前述の（ｂ）の抑止機構を拡張し、出力バスへのデータ出力が競合する場合、またはタグからの出力が競合する場合に、リクエストの発行を抑止する。
キャッシュメモリでは、タグの出力を用いてキャッシュラインのヒット／ミス等のデータの有効性を判定している。上記（ｆ）の抑止機構がない場合には、各ブロック毎にタグ出力を判定／処理する制御論理が必要となる。例えば、キャッシュミスにより外部へのアクセスを要するリクエストが複数発生することがあり得るので、それらのリクエストの調停のための制御や回路が新たに必要となる。したがって、（ｆ）の抑止機構を採用した方が制御が簡単になると考えられる。
図１８は、このようなキャッシュメモリを搭載したＬＳＩの構成例を示している。図１８のＬＳＩは、リクエスト元４１およびキャッシュメモリ１０１からなり、キャッシュメモリ１０１は４つのキャッシュメモリブロックＣ１、Ｃ２、Ｃ３、およびＣ４にブロック化されている。
各キャッシュメモリブロックは、ＦＦ２１、タグＲＡＭ１１１、およびデータＲＡＭ１１２を含み、リクエスト元４１からのリクエストに応じてタグおよびデータを出力する。
セレクタ１０３は、４つのブロックからのタグ転送パスの１つを選択して、選択されたパスのタグをキャッシュ制御回路１０２に出力する。キャッシュ制御回路１０２は、受け取ったタグのヒット／ミス判定を行い、判定結果に応じてキャッシュメモリ１０１の動作を制御する。また、セレクタ５２は、４つのブロックからのデータ転送パスの１つを選択して、選択されたパスのデータを出力バス５１に出力する。
このようにキャッシュのタグ部とデータ部を一体化した構成には、次のような実装上の利点がある。
（１）反復性：１つのキャッシュメモリブロックをコピーして、容易に他のキャッシュメモリブロックを作成することができる。
（２）ディレイ解析の局所化：１つのキャッシュメモリブロックについてディレイ解析を行えば、解析結果を他のキャッシュメモリブロックにも応用することができる。
図１８の構成では、データおよびタグのレイテンシは次のようになる。
ブロックＣ１：  データレイテンシ＝２，タグレイテンシ＝１
ブロックＣ２：  データレイテンシ＝４，タグレイテンシ＝３
ブロックＣ３：  データレイテンシ＝６，タグレイテンシ＝５
ブロックＣ４：  データレイテンシ＝８，タグレイテンシ＝７
ここで、図７と同様に、ブロックＣ２に対するリクエストＲ１の発行の２サイクル後にブロックＣ１に対するリクエストＲ２が発行され、その直後にブロックＣ２に対するリクエストＲ３が発行されたとする。この場合、図１９に示すように、リクエストＲ１およびＲ２がそれぞれサイクル０１および０３において発行されると、サイクル０３においてそれらのリクエストに対するタグ出力が競合するので、抑止機構はリクエストＲ２の発行を１サイクル遅らせる。これに伴って、リクエストＲ３の発行も１サイクル遅れることになる。
そこで、このような性能低下を防ぐために、キャッシュメモリ応用構成３５が用いられる。この構成では、最短レイテンシのブロックからのタグ出力とデータ出力の両方について、図８と同様の１段の可変長バッファを追加する。これにより、タグを分散配置したキャッシュメモリにおいてもリクエスト発行の自由度が増し、後続するリクエストの起動を１サイクル早くすることができる。したがって、平均レイテンシを短縮して、より効率の良いスケジューリングを行うことが可能となる。
図１８のキャッシュメモリブロックＣ１のタグＲＡＭ１１１およびデータＲＡＭ１１２の出力に対して、それぞれ図８と同様の可変長バッファを追加すると、ＬＳＩの構成は図２０のようになる。
タグＲＡＭ１１１の出力側の可変長バッファにおいて、セレクタ５３は、タグＲＡＭ１１１から直接データを転送するパスとＦＦ５４を介して転送するパスのいずれかを選択する。また、データＲＡＭ１１２の出力側の可変長バッファにおいて、セレクタ５３は、データＲＡＭ１１２から直接データを転送するパスとＦＦ５４を介して転送するパスのいずれかを選択する。
このような構成によれば、図１９の３つのリクエストに対して、図２１に示すようなスケジューリングが可能となる。この場合、サイクル０３においてリクエストＲ２を発行しても、タグの転送パスとしてＦＦ５４を通るパスを選択すればタグ出力を１サイクル遅らせることができるので、サイクル０３におけるリクエストＲ１に対するタグ出力と競合することはない。したがって、リクエストＲ２、Ｒ３の発行を遅らせる必要がなくなる。
キャッシュメモリ応用構成３６では、各キャッシュメモリブロックのレイテンシを最長レイテンシにまで引き伸ばすことができるような可変長バッファを、各キャッシュメモリブロックからのタグ出力とデータ出力の両方に付加する。これにより、あらゆる状況に対処することが可能となり、最も良い平均レイテンシが得られる。
例えば、図１８においてブロックＣ１〜Ｃ３のタグＲＡＭ１１１およびデータＲＡＭ１１２の出力に対して、このような可変長バッファをそれぞれ付加すると、ＬＳＩの構成は図２２のようになる。
ブロックＣ１のタグＲＡＭ１１１およびデータＲＡＭ１１２の出力側には、それぞれ可変長バッファ５５が設けられており、ブロックＣ２のタグＲＡＭ１１１およびデータＲＡＭ１１２の出力側には、それぞれ可変長バッファ５６が設けられている。また、ブロックＣ３のタグＲＡＭ１１１およびデータＲＡＭ１１２の出力側には、それぞれ可変長バッファ５７が設けられている。
可変長バッファ５５、５６、５７、データ有効フラグ応答回路７１、および可変長バッファ段数選択回路７２の構成と動作については、前述した通りである。この場合、各ブロック内の２つの可変長バッファは、可変長バッファ段数選択回路７２からの同じ選択信号により制御され、セレクタ１０３とセレクタ５２も同じ選択信号により制御される。
これらの可変長バッファを設けることで、ブロックＣ１、Ｃ２、およびＣ３のタグレイテンシはそれぞれ１〜７サイクル、２〜７サイクル、および５〜７サイクルの範囲で可変となり、いずれのブロックもブロックＣ４のタグレイテンシである７サイクルを実現可能となっている。キャッシュメモリ１０１の最長タグレイテンシは７サイクルであるから、どのような状況であってもタグ出力を最大７サイクル遅らせればタグ出力が競合することはない。データレイテンシの調節範囲については、図１５の場合と同様である。
図２３は、キャッシュメモリ応用構成３６をチップレベルマルチプロセッサ（Ｃｈｉｐ−ｌｅｖｅｌ  Ｍｕｌｔｉ  Ｐｒｏｃｅｓｓｏｒ，ＣＭＰ）に適用した場合の構成例を示している。ＣＭＰは、ＬＳＩチップ内に複数のプロセッサ（ＣＰＵ  ＣＯＲＥ）を持つシステムであり、従来は複数個のチップを使って実現していたマルチプロセッサ構成を１チップで実現することができる。
図２３の構成では、４つのＣＰＵ  ＣＯＲＥ１２１、１２２、１２３、および１２４がチップ上に搭載され、これらのＣＰＵ  ＣＯＲＥが大容量のオンチップキャッシュ（ｏｎ−ｃｈｉｐ  ｃａｃｈｅ）を共有している。このオンチップキャッシュは、４つのキャッシュメモリブロックＣ１、Ｃ２、Ｃ３、およびＣ４からなる。可変長バッファ５５、５６、および５７の機能については、図２２の場合と同様である。各セレクタ２４は、直近の可変長バッファからの出力パス、またはより遠くのブロックからの出力パスを選択する。
ここでは簡単のため、ＣＰＵ  ＣＯＲＥ１２１からのリクエストを各ブロックのデータＲＡＭ１１２に転送するパスと、各データＲＡＭ１１２からのデータをＣＰＵ  ＣＯＲＥ１２１に転送するパスのみが示されており、タグＲＡＭとそれに付随する転送パスは省略されている。しかしながら、各ブロックには、図２２の構成と同様に、これらの回路も設けられている。他のＣＰＵ  ＣＯＲＥに対しても、ＣＰＵ  ＣＯＲＥ１２１と同様の回路が設けられる。
ただし、物理的な配置から明らかなように、ＣＰＵ  ＣＯＲＥ１２１からはブロックＣ１が最も近く、ブロックＣ４は最も遠い。このため、ＣＰＵ  ＣＯＲＥ１２１にとって、ブロックＣ１、Ｃ２、Ｃ３、およびＣ４の最短データレイテンシは、それぞれ２サイクル、４サイクル、６サイクル、および８サイクルとなる。
逆に、ＣＰＵ  ＣＯＲＥ１２４からはブロックＣ１が最も遠く、ブロックＣ４は最も近い。このため、ＣＰＵ  ＣＯＲＥ１２４にとって、ブロックＣ１、Ｃ２、Ｃ３、およびＣ４の最短データレイテンシは、それぞれ８サイクル、６サイクル、４サイクル、および２サイクルとなる。
ＣＰＵ  ＣＯＲＥ１２２からはブロックＣ２が最も近く、ブロックＣ１およびＣ３は次に近く、ブロックＣ４は最も遠い。このため、ＣＰＵ  ＣＯＲＥ１２２にとって、ブロックＣ１、Ｃ２、Ｃ３、およびＣ４の最短データレイテンシは、それぞれ４サイクル、２サイクル、４サイクル、および６サイクルとなる。
また、ＣＰＵ  ＣＯＲＥ１２３からはブロックＣ３が最も近く、ブロックＣ２およびＣ４は次に近く、ブロックＣ１は最も遠い。このため、ＣＰＵ  ＣＯＲＥ１２３にとって、ブロックＣ１、Ｃ２、Ｃ３、およびＣ４の最短データレイテンシは、それぞれ６サイクル、４サイクル、２サイクル、および４サイクルとなる。
このようなＣＭＰ構成によれば、チップ上のメモリを共有する複数のプロセッサのそれぞれについて、メモリアクセスの平均レイテンシを最適化することが可能となる。
【産業上の利用可能性】  本発明によれば、半導体集積回路に大容量のメモリを搭載した場合に、データの格納位置に応じたレイテンシ差を活用して、メモリアクセスを高速化することができる。
【図１】
2004025478.tif 000003
【図２】
2004025478.tif 000004
【図３】
2004025478.tif 000005
【図４】
2004025478.tif 000006
【図５】
2004025478.tif 000007
【図６】
2004025478.tif 000008
【図７】
2004025478.tif 000009
【図８】
2004025478.tif 000010
【図９】
2004025478.tif 000011
【図１０】
2004025478.tif 000012
【図１１】
2004025478.tif 000013
【図１２】
2004025478.tif 000014
【図１３】
2004025478.tif 000015
【図１４】
2004025478.tif 000016
【図１５】
2004025478.tif 000017
【図１６】
2004025478.tif 000018
【図１７】
2004025478.tif 000019
【図１８】
2004025478.tif 000020
【図１９】
2004025478.tif 000021
【図２０】
2004025478.tif 000022
【図２１】
2004025478.tif 000023
【図２２】
2004025478.tif 000024
【図２３】
2004025478.tif 000025
【国際調査報告】
2004025478.tif 000026
2004025478.tif 000027
2004025478.tif 000028
2004025478.tif 000029