(57)【要約】  Ｌ２キャッシュ制御部は、ＣＰＵコア部を介して要求格納部０から投入されたメモリアクセス要求に基づき、キャッシュメモリを検索し、キャッシュミスが発生したメモリアクセス要求を要求格納部１と要求格納部２に保持する。バンクアボート生成部は、要求格納部１と２に保持されたメモリアクセス要求に基づき、主記憶装置に対するメモリアクセス要求の数をバンク毎に計数するとともに、計数したバンク毎のメモリアクセス要求の数のいずれかが所定値を超えた場合、Ｌ２キャッシュ制御部にバンクアボート通知を通知してアクセス中断を指示する。Ｌ２キャッシュ制御部は、この指示に基づいて要求格納部０に保持されたメモリアクセス要求の処理を中断する。主記憶制御部は、要求格納部２に保持されたメモリアクセス要求を主記憶装置に発行する。
2012172683.tif 000002
【特許請求の範囲】
【請求項１】
複数のバンクを有する記憶装置に接続される演算処理装置において、
メモリアクセス要求を発行する命令処理部と、
データを保持するキャッシュラインを複数有するキャッシュメモリと、
前記命令処理部が発行したメモリアクセス要求を投入する第１の要求保持部と、
キャッシュミスが発生したメモリアクセス要求を保持する第２の要求保持部と、
前記第１の要求保持部から投入されたメモリアクセス要求に基づき前記キャッシュメモリを検索し、キャッシュミスが発生したメモリアクセス要求を前記第２の要求保持部に保持するキャッシュ制御部と、
前記第２の要求保持部に保持されたメモリアクセス要求のうち、処理が中断されなかったメモリアクセス要求を保持する第３の要求保持部と、
前記第２の要求保持部と前記第３の要求保持部とに保持されたメモリアクセス要求に基づき前記記憶装置に対するメモリアクセス要求の数をバンク毎に計数し、計数したいずれかのバンクのメモリアクセス要求の数が所定値を超えた場合、前記キャッシュ制御部に前記第１の要求保持部に保持された、メモリアクセス要求の数が所定値を超えたバンクに対するメモリアクセス要求の処理の中断を指示するアクセス計数部と、
前記第３の要求保持部に保持されたメモリアクセス要求を前記記憶装置に発行する主記憶制御部と、
を有することを特徴とする演算処理装置。
【請求項２】
前記アクセス計数部は、さらに、
計数したメモリアクセス要求の数が所定値を超えたバンクに対するメモリアクセス要求の待機通知を前記第１の要求保持部に出力し、
前記第１の要求保持部は、
前記アクセス計数部が出力したメモリアクセス要求の待機通知に基づき、対応するバンクへのメモリアクセス要求の前記キャッシュ制御部への投入を抑止する、
ことを特徴とする請求項１記載の演算処理装置。
【請求項３】
前記アクセス計数部は、
前記キャッシュ制御部が、前記第２の要求保持部に前記メモリアクセス要求を保持した場合、前記メモリアクセス要求に対応するバンクの計数値を増分し、
前記主記憶制御部が、前記第３の要求保持部に保持されたメモリアクセス要求を前記主記憶装置に発行した場合、前記メモリアクセス要求に対応するバンクの計数値を減分する、
ことを特徴とする請求項１記載の演算処理装置。
【請求項４】
複数のバンクを有する主記憶装置に接続される演算処理装置において、
メモリアクセス要求を発行する命令処理部と、
データを保持するキャッシュラインを複数有するキャッシュメモリと、
前記命令処理部が発行したメモリアクセス要求を投入する第１の要求保持部と、
キャッシュミスが発生したメモリアクセス要求を保持する第２の要求保持部と、
前記第１の要求保持部から投入されたメモリアクセス要求に基づき前記キャッシュメモリを検索し、キャッシュミスが発生したメモリアクセス要求を前記第２の要求保持部に保持するキャッシュ制御部と、
前記第２の要求保持部に保持されたメモリアクセス要求に基づき前記主記憶装置に対するメモリアクセス要求の数をバンク毎に計数するとともに、計数したいずれかのメモリアクセス要求の数が所定値を超えた場合、前記キャッシュ制御部に前記第１の要求保持部に保持されたメモリアクセス要求の処理を中断させるアクセス計数部と、
前記第２の要求保持部に保持されたメモリアクセス要求を前記主記憶装置に発行する主記憶制御部と、
を有することを特徴とする演算処理装置。
【請求項５】
前記アクセス計数部は、さらに、
計数したメモリアクセス要求の数が所定値を超えたバンクに対するメモリアクセス要求の待機通知を前記第１の要求保持部に出力し、
前記第１の要求保持部は、
前記アクセス計数部が出力したメモリアクセス要求の待機通知に基づき、対応するバンクへのメモリアクセス要求の前記キャッシュ制御部への投入を抑止する、
ことを特徴とする請求項４記載の演算処理装置。
【請求項６】
前記アクセス計数部は、
前記キャッシュ制御部が、前記第２の要求保持部に前記メモリアクセス要求を保持した場合、前記メモリアクセス要求に対応するバンクの計数値をプラス１し、
前記主記憶制御部が、前記第２の要求保持部に保持されたメモリアクセス要求を前記主記憶装置に発行した場合、前記メモリアクセス要求に対応するバンクの計数値を減分する、
ことを特徴とする請求項４記載の演算処理装置。
【請求項７】
複数のバンクを有する主記憶装置と、前記主記憶装置に接続される演算処理装置とを有する情報処理装置において、
前記演算処理装置は、
メモリアクセス要求を発行する命令処理部と、
データを保持するキャッシュラインを複数有するキャッシュメモリと、
前記命令処理部が発行したメモリアクセス要求を投入する第１の要求保持部と、
キャッシュミスが発生したメモリアクセス要求を保持する第２の要求保持部と、
前記第１の要求保持部から投入されたメモリアクセス要求に基づき前記キャッシュメモリを検索し、キャッシュミスが発生したメモリアクセス要求を前記第２の要求保持部に保持するキャッシュ制御部と、
前記第２の要求保持部に保持されたメモリアクセス要求のうち、処理が中断されなかったメモリアクセス要求を保持する第３の要求保持部と、
前記第２の要求保持部と前記第３の要求保持部に保持されたメモリアクセス要求に基づき、前記主記憶装置に対するメモリアクセス要求の数をバンク毎に計数し、計数したいずれかのバンクのメモリアクセス要求の数が所定値を超えた場合、前記キャッシュ制御部に前記第１の要求保持部に保持されたメモリアクセス要求の処理を中断させるアクセス計数部と、
前記第３の要求保持部に保持されたメモリアクセス要求を前記主記憶装置に発行する主記憶制御部と、
を有することを特徴とする情報処理装置。
【請求項８】
複数のバンクを有する主記憶装置と、前記主記憶装置に接続される演算処理装置とを有する情報処理装置において、
前記演算処理装置は、
メモリアクセス要求を発行する命令処理部と、
データを保持するキャッシュラインを複数有するキャッシュメモリと、
前記命令処理部が発行したメモリアクセス要求を投入する第１の要求保持部と、
キャッシュミスが発生したメモリアクセス要求を保持する第２の要求保持部と、
前記第１の要求保持部から投入されたメモリアクセス要求に基づき前記キャッシュメモリを検索し、キャッシュミスが発生したメモリアクセス要求を前記第２の要求保持部に保持するキャッシュ制御部と、
前記第２の要求保持部に保持されたメモリアクセス要求に基づき前記主記憶装置に対するメモリアクセス要求の数をバンク毎に計数するとともに、計数したいずれかのメモリアクセス要求の数が所定値を超えた場合、前記キャッシュ制御部に前記第１の要求保持部に保持されたメモリアクセス要求の処理を中断させるアクセス計数部（４０１）と、
前記第２の要求保持部に保持されたメモリアクセス要求を前記主記憶装置に発行する主記憶制御部と、
を有することを特徴とする情報処理装置。
【請求項９】
複数のバンクを有する主記憶装置に接続されるとともに、データを保持するキャッシュラインを複数有するキャッシュメモリを有する演算処理装置の制御方法において、
前記演算処理装置が有する命令処理部が、メモリアクセス要求を発行し、
前記演算処理装置が有するキャッシュ制御部が、前記命令処理部が発行したメモリアクセス要求を、前記演算処理装置が有する第１の要求保持部に保持し、
前記キャッシュ制御部が、前記第１の要求保持部から投入されたメモリアクセス要求に基づき前記キャッシュメモリを検索し、
前記キャッシュ制御部が、キャッシュミスが発生したメモリアクセス要求を、前記演算処理装置が有する第２の要求保持部に保持し、
前記キャッシュ制御部が、前記第２の要求保持部に保持されたメモリアクセス要求を、前記演算処理装置が有する第３の要求保持部に保持し、
前記演算処理装置が有するアクセス計数部が、前記第２の要求保持部と前記第３の要求保持部に保持されたメモリアクセス要求に基づき前記主記憶装置に対するメモリアクセス要求の数をバンク毎に計数するとともに、計数したいずれかのメモリアクセス要求の数が所定値を超えた場合、前記キャッシュ制御部に前記第１の要求保持部に保持されたメモリアクセス要求の処理を中断させ、
前記キャッシュ制御部が、前記第３の要求保持部に保持されたメモリアクセス要求を前記主記憶装置に発行する、
ことを特徴とする演算処理装置の制御方法。
【請求項１０】
前記演算処理装置の制御方法において、
前記アクセス計数部は、
計数したメモリアクセス要求の数が所定値を超えたバンクに対するメモリアクセス要求の待機通知を前記第１の要求保持部に出力し、
前記第１の要求保持部は、前記アクセス計数部が出力したメモリアクセス要求の待機通知に基づき、対応するバンクへのメモリアクセス要求の前記キャッシュ制御部への投入を抑止する、
ことを特徴とする請求項９記載の演算処理装置の制御方法。
【請求項１１】
前記演算処理装置の制御方法において、
前記アクセス計数部は、
前記キャッシュ制御部が、前記第２の要求保持部に前記メモリアクセス要求を保持した場合に、前記メモリアクセス要求に対応するバンクの計数値を増分し、
前記主記憶制御部が、前記第３の要求保持部に保持されたメモリアクセス要求を前記主記憶装置に発行した場合に、前記メモリアクセス要求に対応するバンクの計数値を減分する、
ことを特徴とする請求項９記載の演算処理装置の制御方法。
【請求項１２】
複数のバンクを有する主記憶装置と、前記主記憶装置に接続される演算処理装置とを有する情報処理装置の制御方法において、
前記演算処理装置が有する命令処理部が、メモリアクセス要求を発行し、
前記演算処理装置が有するキャッシュ制御部が、前記命令処理部が発行したメモリアクセス要求を前記演算処理装置が有する第１の要求保持部に保持し、
前記キャッシュ制御部が、前記第１の要求保持部から投入されたメモリアクセス要求に基づき、前記キャッシュメモリを検索し、
前記キャッシュ制御部が、キャッシュミスが発生したメモリアクセス要求を、前記演算処理装置が有する第２の要求保持部に保持し、
前記演算処理装置が有するアクセス計数部が、前記第２の要求保持部と保持されたメモリアクセス要求に基づき前記主記憶装置に対するメモリアクセス要求の数をバンク毎に計数するとともに、計数したいずれかのメモリアクセス要求の数が所定値を超えた場合、前記キャッシュ制御部に前記第１の要求保持部に保持されたメモリアクセス要求の処理を中断させ、
前記キャッシュ制御部が、前記アクセス中断指示に基づき、前記第１の要求保持部に保持されたメモリアクセス要求の処理を中断し、
前記キャッシュ制御部が、前記第２の要求保持部に保持されたメモリアクセス要求を前記主記憶装置に発行する、
ことを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明は、演算処理装置、情報処理装置および演算処理装置の制御方法に関する。
【背景技術】
【０００２】
主記憶装置にキャッシュメモリが接続され、キャッシュメモリおよび主記憶装置へのメモリアクセス要求をパイプライン処理する機構を有する演算処理装置としてのＣＰＵ（Ｃｅｎｔｒａｌ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ）が知られている。このような演算処理装置は具体的には例えば、Ｌ２（Ｌｅｖｅｌ-２：２次）キャッシュシステムとして情報処理装置としてのコンピュータシステムに実装されている。【０００３】
命令を処理する命令処理部であるＣＰＵコアが例えばロード命令をミスし、ＣＰＵコアにおけるＬ１（Ｌｅｖｅｌ-１：１次）キャッシュメモリへのアクセスがミスすると、Ｌ２キャッシュ制御部に新規メモリアクセス要求が発行され、新規要求格納部に受信する。新規要求格納部からＬ２キャッシュメモリのパイプラインにメモリアクセス要求が投入される。パイプラインに投入されたメモリアクセス要求がＬ２キャッシュメモリでキャッシュミスを起こすと、キャッシュミスしたメモリアクセス要求は、要求格納部１とさらに主記憶制御機能を有するシステムコントローラ内の要求格納部２に格納される。要求格納部２からメモリアクセス要求が選択されてＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）アクセス処理部へ発行されるとともに、要求格納部２からそのメモリアクセス要求が開放される。ＤＲＡＭアクセス処理部では、パイプライン処理によりＤＲＡＭへアクセスが行われる。ＤＲＡＭからシステムコントローラを経由してＬ２キャッシュ制御部に対して、データ応答が行われる。データ応答を受信したＬ２キャッシュ制御部は、要求応答パイプラインを起動する。 要求応答パイプラインの処理が完了すると、キャッシュタグ部の更新、キャッシュデータ部へのデータ格納、メモリアクセス要求を発行したＣＰＵコアへのデータ応答（ロード要求でプリフェッチ要求でない場合）等が行われる。最後に要求格納部１が開放される。【０００４】
一般にＤＲＡＭで構成される主記憶装置は、所定数のメモリバンク（以下、「バンク」という）に分割された構成がとられている。そして、１つのバンクに対するメモリアクセス要求の処理が開始されると、その同一バンクではある一定時間、次のメモリアクセス要求に対する処理ができないという特性を持っている。このため、上記構成において、あるメモリアクセス要求が要求格納部２から ＤＲＡＭアクセス処理部に投入されると、そのメモリアクセス要求と同一のバンクは一定時間要求格納部２からの取り出しの選択対象から除外される。そして、処理可能なバンクのメモリアクセス要求のうち古いものから順次選択して処理が行われる。【０００５】
従って例えば、複数のＣＰＵコアを実装したシステムにおいて、複数のＣＰＵコアから同一バンクに対するデータのロード要求が連続して発生するケースが考えられる。このような場合に、Ｌ２キャッシュシステムがキャッシュミスを起こすと、主記憶装置上の同一バンクへのメモリアクセス要求が集中し、主記憶装置からＬ２キャッシュメモリおよびＣＰＵコアへのデータ転送効率が悪化する状況が発生し得る。【０００６】
この課題に対して、複数のプロセッサが共用し独立にアクセス可能な複数のバンクに分割された主記憶装置に対するアクセス要求先のバンクに偏りが生じた場合にも、メモリアクセス待ちを短縮して、メモリアクセス性能を向上させることのできる技術が知られている。この従来技術では、 記憶制御装置内に、優先判定回路に対応し、かつ、アクセス要求スタック回路に対応する優先判定待ちスタック回路を記憶バンク対応の優先判定回路とアクセス要求スタック回路との間に設けて構成される。これにより、アクセス要求先の記憶バンクに偏りが生じた場合にも、後続の他記憶バンクへのアクセス要求を待たせることなく処理することを可能としている。また、優先判定待ちスタック回路は、内部にスタックされていないアクセス要求がある場合、入力されるアクセス要求を直接優先判定回路を介して記憶装置へ送ることができるように構成されている。【０００７】
しかし、この従来技術は、Ｌ２キャッシュ制御部を含めたシステム全体としては最適なアクセス制御は実現できていないという問題点を有している。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平成１１−８５６０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明は、キャッシュメモリと複数のメモリバンクを有する主記憶装置を含むシステムでメモリバンクへのアクセスを均等化することを目的とする。
【課題を解決するための手段】
【００１０】
態様の一例では、複数のバンクを有する記憶装置に接続される演算処理装置において、メモリアクセス要求を発行する命令処理部と、データを保持するキャッシュラインを複数有するキャッシュメモリと、前記命令処理部が発行したメモリアクセス要求を投入する第１の要求保持部と、キャッシュミスが発生したメモリアクセス要求を保持する第２の要求保持部と、前記第１の要求保持部から投入されたメモリアクセス要求に基づき前記キャッシュメモリを検索し、キャッシュミスが発生したメモリアクセス要求を前記第２の要求保持部に保持するキャッシュ制御部と、前記第２の要求保持部に保持されたメモリアクセス要求のうち、処理が中断されなかったメモリアクセス要求を保持する第３の要求保持部と、前記第２の要求保持部と前記第３の要求保持部とに保持されたメモリアクセス要求に基づき前記記憶装置に対するメモリアクセス要求の数をバンク毎に計数し、計数したいずれかのバンクのメモリアクセス要求の数が所定値を超えた場合、前記キャッシュ制御部に前記第１の要求保持部に保持された、メモリアクセス要求の数が所定値を超えたバンクに対するメモリアクセス要求の処理の中断を指示するアクセス計数部と、前記第３の要求保持部に保持されたメモリアクセス要求を前記記憶装置に発行する主記憶制御部とを有するように構成する。
【発明の効果】
【００１１】
キャッシュ制御部と複数のメモリバンクを有する主記憶装置が接続された構成において、キャッシュ制御部と主記憶装置に対する要求バンクが均等化され、バンクアクセスの偏りが発生しかかっても、同じバンクのメモリアクセス要求が過剰に発行されないように食い止めることが可能となる。これにより、メモリアクセス要求の発行状態が、常時多様な種類のバンクのメモリアクセス要求がキャッシュ制御部と主記憶制御部のパイプラインに格納される状態にすることができ、メモリバンク毎にバンクアクセスの均等化を図ることが可能となる。
【図面の簡単な説明】
【００１２】
【図１Ａ】Ｌ２キャッシュメモリおよび主記憶装置へのメモリアクセス要求をパイプライン処理する機構を有する情報処理装置の一般的な構成を示す図（その１）である。
【図１Ｂ】Ｌ２キャッシュメモリおよび主記憶装置へのメモリアクセス要求をパイプライン処理する機構を有する情報処理装置の一般的な構成を示す図（その２）である。
【図１Ｃ】Ｌ２キャッシュメモリおよび主記憶装置へのメモリアクセス要求をパイプライン処理する機構を有する情報処理装置の一般的な構成を示す図（その３）である。
【図１Ｄ】Ｌ２キャッシュメモリおよび主記憶装置へのメモリアクセス要求をパイプライン処理する機構を有する情報処理装置の一般的な構成を示す図（その４）である。
【図２】図１Ａおよび図１Ｂの構成を有するＬ２キャッシュシステムのパイプライン処理を示す動作シーケンス図である。
【図３】図１Ａ、図１ＢのＬ２キャッシュシステムのパイプライン処理のイメージを示した図である。
【図４Ａ】第１の実施形態の構成図（その１）である。
【図４Ｂ】第１の実施形態の構成図（その２）である。
【図５Ａ】図４Ａの新規要求格納部１０２（要求格納部０）とバンクアドレス均等制御部（バンク待機制御部）４０２の詳細な回路構成図である。
【図５Ｂ】図４Ａのパイプライン制御部１０３とその周辺回路の詳細な回路構成図である。
【図５Ｃ】図４Ａの要求格納部１  １０４の詳細な回路構成図である。
【図５Ｄ】図４Ａのバンクアドレス均等制御部（バンクアボート生成部）４０１の詳細な回路構成図である。
【図６】第１の実施形態の処理過程を示すフローチャートである。
【図７Ａ】第２の実施形態の構成図（その１）である。
【図７Ｂ】第２の実施形態の構成図（その２）である。
【発明を実施するための形態】
【００１３】
以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。
図１Ａおよび図１Ｂは、主記憶装置にＬ２キャッシュメモリが接続され、Ｌ２キャッシュメモリおよび主記憶装置へのメモリアクセス要求をパイプライン処理する機構を有する情報処理装置の一般的な構成を示す図である。この構成は、ＣＰＵコアの部分と主記憶アクセスを行う部分が、主記憶アクセス機能外付けマルチコアＣＰＵチップ１とシステムコントローラチップ１０７に分かれている構成である。
【００１４】
図１ＡのＣＰＵコア部１００は、演算処理を実行する演算処理プロセッサであり、１つ以上実装され得る。ＣＰＵコア部１００は命令処理部の一例である。
【００１５】
図１Ａの新規要求格納部１０２（「要求格納部０」とも呼ぶ）、パイプライン制御部１０３、および要求格納部１０４（以下単に「要求格納部１」と記載する）は、Ｌ２キャッシュ制御部１０１を構成する。
【００１６】
新規要求格納部１０２は、各ＣＰＵコア部１００に対応して１つ以上のエントリが実装される。新規要求格納部１０２は、ＣＰＵコア部１００内のＬ１（１次）キャッシュがキャッシュミスしたときに、メモリアクセス要求を、Ｌ２（２次）キャッシュメモリでのパイプライン処理のために、そのＣＰＵコア部１００に対応するエントリに保持する。
【００１７】
パイプライン制御部１０３は、新規要求格納部１０２に格納されたメモリアクセス要求のキャッシュアクセスおよび主記憶アクセスをパイプライン処理するための制御を実行する。
【００１８】
図１Ａのキャッシュタグ部１０５とキャッシュデータ部１０６は、Ｌ２キャッシュメモリを構成する。キャッシュタグ部１０５は、キャッシュライン毎にタグを記憶する。キャッシュデータ部１０６は、キャッシュライン毎に、そのキャッシュラインに対応するインデックスとそのキャッシュラインに対応するキャッシュタグ部１０５上のタグとで定まる、主記憶装置としてのＤＩＭＭ（Ｄｕａｌ  Ｉｎｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）１１０（図１Ｂ）上のアドレスのデータを保持する。パイプライン制御部１０３からキャッシュタグ部１０５へは、タグ読み出しコマンドが発行されてタグが読み出され、または、タグ更新コマンドが発行されてタグが更新される。また、パイプライン制御部１０３からキャッシュデータ部１０６へは、データのリードまたはライト指示（Ｒ／Ｗ指示）が発行され、データのリード動作またはライト動作が行われる。
【００１９】
図１Ａの要求格納部１  １０４（以下単に「要求格納部１」と呼ぶ）は、パイプライン制御部１０３によるキャッシュタグ部１０５へのキャッシュアクセスがキャッシュミスした場合に、そのキャッシュミスしたメモリアクセス要求を保持する。要求格納部１は、ＤＩＭＭ１１０（図１Ｂ）へのアクセスが完了し、キャッシュタグ部１０５、キャッシュデータ部１０６が更新され、またはＣＰＵコア部１００へのデータ転送が完了するまで、各メモリアクセス要求を保持する。
【００２０】
図１ＡのＣＰＵ側バスインタフェース部１１１は、主記憶アクセス機能外付けマルチコアＣＰＵチップ１とシステムコントローラチップ１０７を接続するシステムバスの、主記憶アクセス機能外付けマルチコアＣＰＵチップ１側インタフェース回路である。
【００２１】
図１Ｂのシステムコントローラチップ１０７内のシステムコントローラ側バスインタフェース部１１２は、上記システムバスのシステムコントローラチップ１０７側インタフェース回路である。
【００２２】
図１Ｂのシステムコントローラチップ１０７内の要求格納部２  １０８（以下単に「要求格納部２」と呼ぶ）は、図１ＡのＬ２キャッシュ制御部１０１においてキャッシュミスしたメモリアクセス要求を保持する。要求格納部２は、システムコントローラチップ１０７内のＤＩＭＭアクセス制御部１０９にメモリアクセス要求が読み出されて主記憶アクセスのパイプラインに投入されるまで、各メモリアクセス要求を保持する。
【００２３】
要求格納部１および２へのメモリアクセス要求の格納時には、パイプライン制御部１０３から要求格納部１および２に要求格納指示が発行され、要求格納部１および２はこの指示に基づいてメモリアクセス要求の格納動作を実行する。
【００２４】
図１Ｂのシステムコントローラチップ１０７内のＤＩＭＭアクセス制御部１０９は、要求格納部２から投入可能なバンクのメモリアクセス要求を選択し、ＤＩＭＭ１１０に対して、メモリアクセスのコマンドとアドレスを発行する。要求格納部２からＤＩＭＭアクセス制御部１０９に読み出されたときに、要求格納部２からシステムコントローラ側バスインタフェース部１１２と図１ＡのＣＰＵ側バスインタフェース部１１１を介して図１Ａの要求格納部１に対し、要求開放通知が通知される。
【００２５】
図１ＢのＤＩＭＭ１１０は、複数のＤＲＡＭチップをプリント基板上に搭載したメモリモジュールであり、主記憶装置として使用される。
【００２６】
ＤＩＭＭ１１０へのアクセスにより取得された主記憶装置からのデータ応答は、図１Ａの、キャッシュデータ部１０６、要求格納部１、メモリアクセス要求の要求元のＣＰＵコア部１００に応答される。
【００２７】
図１Ａのパイプライン制御部１０３は、上記データ応答に対応して、キャッシュデータ部１０６に対してライトコマンドを発行する。これにより、パイプライン制御部１０３は、主記憶部から応答されたデータを、キャッシュデータ部１０６上の、上記応答データのアドレスに対応するキャッシュラインのうち書き込み可能なキャッシュウェイに書き込む。また、パイプライン制御部１０３は、上記データ応答に対応して、キャッシュタグ部１０５に対してタグ更新コマンドを発行する。これにより、パイプライン制御部１０３は、キャッシュタグ部１０５上の、上記キャッシュラインおよびキャッシュウェイに対応する部分のタグを、上記応答データのアドレスに対応するタグで更新する。
【００２８】
図１Ｃおよび図１Ｄは、図１Ａおよび図１Ｂと同様に、主記憶装置にＬ２キャッシュメモリが接続され、Ｌ２キャッシュメモリおよび主記憶装置へのメモリアクセス要求をパイプライン処理する機構を有する情報処理装置の一般的な構成を示す図である。この構成は、主記憶アクセスを行う部分が、主記憶アクセス機能外付けマルチコアＣＰＵチップ１内に１チップとして実装されている構成である。
【００２９】
この構成では、図１ＡのＣＰＵ側バスインタフェース部１１１、図１Ｂのシステムコントローラ側バスインタフェース部１１２が省略され、さらに、図１Ｂの要求格納部２の機能も省略されて、要求格納部１に統合されている。要求格納部１が要求格納部２の機能を担っており、要求格納部１と要求格納部２の間の通信制御が省略される以外は、図１Ａおよび図１Ｂの場合と同様の制御である。
【００３０】
図２は、図１Ａおよび図１Ｂの構成を有するＬ２キャッシュシステムのパイプライン処理を示す動作シーケンス図である。
【００３１】
まず、ＣＰＵコア部１００が例えばロード命令をミスし、ＣＰＵコアにおけるＬ１（１次）キャッシュメモリへのアクセスがミスすると、Ｌ２キャッシュ制御部１０１に新規メモリアクセス要求が発行される。これにより、メモリアクセス要求が、Ｌ２キャッシュ制御部１０１内の新規要求格納部１０２に受信される（シーケンスＳ１）。
【００３２】
新規要求格納部１０２からＬ２キャッシュメモリのパイプライン（図２中「Ｌ２−ＰＩＰＥ」と記載）にメモリアクセス要求が投入される（シーケンスＳ２）。なお、Ｌ２−ＰＩＰＥは、物理的な回路を示すものではなく、時間経過に沿ったパイプライン処理の状況を示す図である。
【００３３】
Ｌ２−ＰＩＰＥに投入されたメモリアクセス要求がＬ２キャッシュメモリでキャッシュミスを起こすと（シーケンスＳ３）、キャッシュミスしたメモリアクセス要求は、要求格納部１に格納される（シーケンスＳ４）。さらに、そのメモリアクセス要求は、図１Ｂのシステムコントローラチップ１０７内の要求格納部２に格納される（シーケンスＳ５）。要求格納部１から要求格納部２へのメモリアクセス要求の転送は、図１ＡのＣＰＵ側バスインタフェース部１１１からシステムバスを経由して図１Ｂのシステムコントローラ側バスインタフェース部１１２を介して実行される。また、パイプライン制御部１０３から新規要求格納部１０２には、上記メモリアクセス要求に対応するエントリの開放通知が通知される（シーケンスＳ６）。これにより、新規要求格納部１０２は、上記メモリアクセス要求に対応するエントリを開放し、次のメモリアクセス要求を受け付け可能な状態になる。
【００３４】
要求格納部１および要求格納部２は、メモリアクセス要求を保持するエントリをそれぞれ複数備える。パイプライン制御部１０３は、新規要求格納部１０２内の１つのエントリから１つのメモリアクセス要求を取り出してキャッシュアクセスを実行する。この結果、キャッシュヒットとなってＣＰＵコア部１００へのデータ応答が完了する、またはキャッシュミスによりメモリアクセス要求が要求格納部１および２に格納される。
【００３５】
システムコントローラチップ１０７内の要求格納部２に保持されたメモリアクセス要求は、処理可能なバンクアドレスを有するメモリアクセス要求から順にＤＩＭＭ１１０のアクセス用のパイプライン（図２中「主記憶アクセスパイプ」と表記）に投入される。なお、主記憶アクセスパイプは、Ｌ２−ＰＩＰＥと同様に、物理的な回路を示すものではなく、時間経過に沿った主記憶アクセスのパイプライン処理の状況を示す図である。ＤＩＭＭアクセス制御部１０９は、要求格納部２からメモリアクセス要求を取り出すとともに（シーケンスＳ７）、要求格納部２のエントリを開放してその旨を要求格納部１に通知する（シーケンスＳ８）。要求格納部２から要求格納部１への通知は、図１Ｂのシステムコントローラ側バスインタフェース部１１２からシステムバスを経由して図１ＡのＣＰＵ側バスインタフェース部１１１を介して実行される。これにより、要求格納部２は、開放されたエントリに、新たなメモリアクセス要求を受け付け可能な状態になる。ＤＩＭＭアクセス制御部１０９は、取り出したメモリアクセス要求に対応するコマンドとアドレスを生成し、ＤＩＭＭ１１０に対してメモリアクセスを実行する（シーケンスＳ９）。
【００３６】
ＤＩＭＭ１１０におけるメモリアクセスが完了すると、ＤＩＭＭ１１０から要求格納部１に対してデータ応答が送信される（シーケンスＳ１０）。要求格納部２から要求格納部１へのデータ応答は、図１Ｂのシステムコントローラ側バスインタフェース部１１２からシステムバスを経由して図１ＡのＣＰＵ側バスインタフェース部１１１を介して実行される。この結果、要求格納部１からパイプライン制御部１０３を介して、Ｌ２−ＰＩＰＥ上で要求応答パイプが起動される（シーケンスＳ１１）。要求応答パイプにおいて、パイプライン制御部１０３は、キャッシュデータ部１０６への応答データの書き込みとキャッシュタグ部１０５のタグの更新を実行する（シーケンスＳ１２）。さらに、パイプライン制御部１０３は、ＣＰＵコア部１００へのデータ応答を行う（シーケンスＳ１３）。なお、ＣＰＵコア部１００へのデータ応答は、メモリアクセス要求が、ロード要求であって、かつ予めキャッシュメモリに必要なデータを読み込むプリフェッチ要求でない場合に実行される。最後に、要求格納部１に、該当するメモリアクセス要求のエントリの開放を通知する（シーケンスＳ１４）。これにより、要求格納部１の該当するエントリが開放される。
【００３７】
以上の制御動作において、パイプライン制御部１０３は、新規要求格納部１０２の複数のエントリのうちから１つのメモリアクセス要求を取り出してキャッシュアクセスを実行し、新規要求格納部１０２のそのエントリを開放する。その後、パイプライン制御部１０３は、１つのメモリアクセス要求においてキャッシュミスが起こって主記憶アクセスが必要になった場合には、そのメモリアクセス要求を要求格納部１および２に引き渡す。これにより、パイプライン制御部１０３は、Ｌ２−ＰＩＰＥ上で、いったんそのメモリアクセス要求に対応する処理を開放して、他のメモリアクセス要求を新規要求格納部１０２の新たなエントリから読み込むことができる。この結果、ＤＩＭＭアクセス制御部１０９は、新規要求格納部１０２からメモリアクセス要求を次々に読み込んで、各メモリアクセス要求に対応するキャッシュアクセスを連続的にパイプライン処理することができる。
【００３８】
また、システムコントローラチップ１０７内のＤＩＭＭアクセス制御部１０９は、要求格納部２から１つのメモリアクセス要求を取り出した後、要求格納部２の該当するエントリを開放して、そのエントリで次のメモリアクセス要求を受け付け可能な状態にする。そして、ＤＩＭＭアクセス制御部１０９は、同一バンクアドレスでなければ、要求格納部２から次のメモリアクセス要求を取り出して、連続的に処理することができる。このようにして、システムコントローラチップ１０７においても、主記憶アクセスパイプによるパイプライン処理によって、効率的な主記憶アクセスが実現される。
【００３９】
パイプライン制御部１０３は、要求格納部１の使用エントリ数をカウントするカウンタを備えている。そして、パイプライン制御部１０３は、新規要求格納部１０２からメモリアクセス要求を読み出してキャッシュアクセスした結果、キャッシュミスが発生した場合に、要求格納部１に空きがないときには、新規要求格納部１０２に対して差し戻し指示を通知する。この結果、新規要求格納部１０２の該当するエントリは開放されず、待機状態となる。
【００４０】
また、パイプライン制御部１０３から要求格納部１には、パイプライン制御部１０３が現在パイプライン処理しているパイプアドレス（メモリアクセス要求が要求するアドレス）が通知されている。この結果、要求格納部１は、自身のエントリ内のメモリアクセス要求が要求するアドレスとパイプアドレスとの一致を検出すると、アドレスマッチ通知をパイプライン制御部１０３に通知する。この場合には、パイプライン制御部１０３がパイプライン処理を開始しようとするメモリアクセス要求のアドレスのデータは、現在、要求格納部１のエントリに格納されていてそのエントリを占有している状態（仕掛り中）であるため、再度主記憶アクセスを行う必要はない。このため、パイプライン制御部１０３は、アドレスマッチ通知を受信した場合には、新規要求格納部１０２に対して差し戻し指示を通知する。この結果、新規要求格納部１０２の該当するエントリは開放されず、待機状態となる。要求格納部１中の該当するメモリアクセス要求が実行されてキャッシュタグ部１０５とキャッシュデータ部１０６が更新された後に、上記新規要求格納部１０２中の同じアドレスを要求するメモリアクセス要求がパイプライン処理される。これにより、当該メモリアクセス要求がキャッシュヒットし、キャッシュデータ部１０６から該当するデータが要求元のＣＰＵコア部１００にロードされる。
【００４１】
その他、パイプライン制御部１０３においてパイプラインのアボート条件が成立した場合に、パイプライン制御部１０３から新規要求格納部１０２や要求格納部１に対して差し戻し指示を通知する。この結果、新規要求格納部１０２や要求格納部１の該当するエントリは開放されず、待機状態となる。
【００４２】
図１Ａ、図１ＢのＬ２キャッシュシステムの構成において、ＤＲＡＭの一種であるＤＩＭＭ１１０で構成される主記憶装置は、ある数のバンクに分割された構成がとられている。そして、あるバンクに対するメモリアクセス要求の処理が仕掛かると、その同一バンクではある一定時間、次のメモリアクセス要求に対する処理ができないという特性を持っている。このため、メモリアクセス要求が要求格納部２からＤＩＭＭアクセス制御部１０９に投入されると、その要求と同一のバンクアドレスを有するメモリアクセス要求は、一定時間要求格納部２からの取り出しの選択対象から除外される。そして、要求格納部２のエントリ内の処理可能なバンクアドレスを有するメモリアクセス要求のうち、古いものから順次選択して処理が行われる。
【００４３】
図３は、図１Ａ、図１ＢのＬ２キャッシュシステムのパイプライン処理のイメージを示した図である。
【００４４】
いま、図１ＡのＣＰＵコア部１００として、Ｃｏｒｅ０、Ｃｏｒｅ１、Ｃｏｒｅ２、Ｃｏｒｅ３の４つのプロセッサが実装されている場合を考える。また図３で、ＢＡＮＫ：０、ＢＡＮＫ：１、ＢＡＮＫ：２、ＢＡＮＫ：３、ＢＡＮＫ：４、ＢＡＮＫ：５、ＢＡＮＫ：６、ＢＡＮＫ：７は、要求パイプ上では、各ラベルで示されるバンクアドレスのメモリアクセス要求がパイプライン処理されていることを示す。また、これらのラベルは、要求応答パイプ上では、各ラベルで示されるバンクアドレスのデータ応答がパイプライン処理されていることを示す。なお、以下の説明では、「ＢＡＮＫ：０」を単に「０」、「ＢＡＮＫ：１」を単に「１」というように、ラベル「ＢＡＮＫ：」を省略して説明する。
【００４５】
まず、Ｃｏｒｅ０〜３の４つのＣＰＵコア部１００を実装したシステムにおいて、オンライン映像配信などのストリーミングデータを扱うサービスが実行されている場合を考える。この場合に、同じストリーミングデータの再生に対して、ほぼ同時に複数のＣＰＵコア部１００から要求されるケースを考える。このようなケースでは、図３（ａ）の３０１として示されるように、Ｃｏｒｅ０〜３の各ＣＰＵコア部１００から、例えば０→０→０→０→１→１→１→１というように、同一バンクのメモリアクセス要求が連続して要求パイプ上で発行される可能性がある。この場合、Ｌ２キャッシュメモリでキャッシュミスが発生すると、ＤＩＭＭアクセス制御部１０９が要求格納部２から最初のＢＡＮＫ：０のメモリアクセス要求を読み出してＤＩＭＭ１１０へのメモリアクセスを実行する。そしてその後、一定時間は、ＤＩＭＭアクセス制御部１０９は、同じＢＡＮＫ：０のメモリアクセス要求は、要求格納部２から読み出せない。すなわち、図３（ａ）の３０１の例では、最初のＢＡＮＫ：０のメモリアクセス要求が実行された後、一定時間、同じＢＡＮＫ：０を有する続く３つのメモリアクセス要求は要求格納部２に滞留したままとなる。そして、図３（ａ）の３０２として示されるように、要求格納部２からＤＩＭＭアクセス制御部１０９へは、その他のＢＡＮＫ：１やＢＡＮＫ：２のメモリアクセス要求が読み出されてＤＩＭＭ１１０へのメモリアクセスが実行される。この結果、要求応答パイプ上のデータ応答は、図３（ａ）の３０２に示されるように、最初のＢＡＮＫ：０のデータ応答の後に、間隔が空いてＢＡＮＫ：１、ＢＡＮＫ：２などのデータ応答が続く。そして、最初のＢＡＮＫ：０のデータ応答の後一定時間が経ってからやっと、次のＢＡＮＫ：０のデータ応答が現れる。
【００４６】
図３（ａ）に示されるような状況では、同一のバンクに対するデータ応答が大きく遅れるだけでなく、要求格納部１や２上で同一のバンクに対するメモリアクセス要求が多く滞留するようになる。この結果、要求格納部１や２に新たなメモリアクセス要求を格納することができなくなり、要求格納部１および２の使用可能なエントリが枯渇してしまう。すなわち、要求格納部１や２のエントリを無駄に占有し実質的にエントリ数 を縮小させているものといえ、Ｌ２キャッシュ制御部１０１の性能が理論性能から大幅に低下してしまうという問題が発生する。
【００４７】
これを解決する手段としてまず考えられるのは、要求格納部１および２のエントリ数を増大させることである。例えば全ストリームに対してＤＩＭＭ１１０上へのメモリアクセス要求を格納できるだけの多数のエントリ数を用意すれば、局所的な偏りの影響を軽減することが期待できる。しかし、この手段は集積回路上に占める物理面積の増大を招くという問題がある。
【００４８】
従って、物理面積の増大を招くことなく、要求格納部１や２のバンクが常時均等である状態 を保つことが重要である。すなわち、キャッシュミス時の主記憶アクセスのパイプライン上で、メモリアクセス要求が要求する主記憶部上のバンクが特定のバンクに偏ることなく均等に分散するようなアクセス制御を行うことが、キャッシュ制御上重要となる。以下に説明する実施形態では、このようなアクセス制御を、キャッシュ制御部から主記憶装置へのパイプラインアクセスにおけるバンクの均等化と呼ぶ。
【００４９】
図３（ｂ）の３０３として示されるように、１つのＣＰＵコア部１００からは、０→１→２→３→４というように連続したバンクアクセスのストリーミングデータに対するメモリアクセス要求が出力される。しかし、Ｃｏｒｅ０〜３の各ＣＰＵコア部１００を合わせた全体でみると、例えば０→４→２→６→１→５→３→７というように、多様な種類のバンクのメモリアクセス要求が順次要求パイプ上で発行される場合を考える。この場合、Ｌ２キャッシュメモリでたとえキャッシュミスが発生しても、要求格納部２からＤＩＭＭアクセス制御部１０９には、各バンクアドレスのメモリアクセス要求を次々と読み出すことができる。この結果、図３（ｂ）の３０４として示されるように、図２のシーケンス１２として実行される要求応答パイプ上では、要求パイプ上の順と同じ順で、各バンクアドレスに対応するデータ応答を、間断なく処理することができる。この場合には、主記憶部からＬ２キャッシュ制御部１０１およびＣＰＵコア部１００へのデータ転送性能は、最大となる。しかしながら、常時図３（ｂ）に示すように、多様な種類のバンクへのメモリアクセス要求が生じるわけではない。したがって、メモリキャッシュ制御部から主記憶部へのパイプラインアクセスにおけるバンクの均等化がより的確に行われるようにすることが望まれる。
【００５０】
以下に説明する第１の実施形態は、バンクに分割された構成を有する主記憶装置、前記主記憶装置を制御する主記憶制御装置、主記憶装置に対するキャッシュメモリ、および前記キャッシュメモリを制御するキャッシュ制御装置を有する。新規のメモリアクセス要求に対して、キャッシュ制御装置において、新規要求格納部からパイプライン投入部を経て、前記キャッシュメモリの状態を保持するタグをパイプライン処理によって検索する。その結果キャッシュミスが発生したら、要求格納部１にキャッシュライン単位で主記憶装置に対する仕掛り中のメモリアクセス要求として格納するとともに主記憶制御装置に該メモリアクセス要求を発行する。要求格納部１は主記憶装置からのデータ応答を受信後、パイプライン処理により前記キャッシュメモリのタグ部およびデータ格納部を更新するとともに、要求格納部１のエントリを開放する。要求格納部１は後続のメモリアクセス要求に対してパイプラインでアドレスマッチを行い、同じアドレスに対する処理を中断させる。そしてキャッシュ制御装置からのメモリアクセス要求を一時的に主記憶制御装置内の各バンク共有の要求格納部２に格納し、当該要求格納部２から処理中でないバンクの要求を選択して主記憶装置に対する処理を行うこの情報処理装置において、パイプライン処理中の新規のメモリアクセス要求に対応する主記憶装置のバンクについて、当該バンクと一致するメモリアクセス要求が要求格納部１にいくつ格納されているかを計数し、当該計数値があらかじめ定められた閾値を超える場合は処理を中断させ、当該閾値を超えない場合は処理を続行させ、主記憶制御装置の要求格納部２へメモリアクセス要求を発行するものである。そして、計数する要求格納部１内のメモリアクセス要求は、要求格納部１に格納されたメモリアクセス要求のうち要求格納部２の開放通知を未受信であるメモリアクセス要求である。その結果、主記憶制御装置における要求格納部２に格納された要求のバンクが均等になるように導かれ、理論性能に近い主記憶転送性能を得ることを可能にする。
【００５１】
第１の実施形態は、図１Ａ、図１Ｂのシステム構成を基本として、これを改良した図４Ａおよび図４Ｂに示されるシステム構成を有する。図４Ａ、図４Ｂにおいて、図１Ａ、図１Ｂと同様の動作をする部分には同じ番号を付してある。この実施形態の構成は、図１Ａ、図１Ｂの場合と同様に、ＣＰＵコアの部分と主記憶アクセスを行う部分が、主記憶アクセス機能外付けマルチコアＣＰＵチップ１とシステムコントローラチップ１０７に分かれている構成である。
【００５２】
図４Ｂのシステムコントローラチップ１０７の構成は、図１Ｂの構成と同様である。
図４Ａでは、Ｌ２キャッシュ制御部１０１が、バンクアドレス均等制御部（バンクアボート生成部）４０１と、バンクアドレス均等制御部（バンク待機制御部）４０２を備える。
【００５３】
バンクアボート生成部４０１は、要求格納部１と要求格納部２に保持されたメモリアクセス要求に基づき、主記憶部のＤＩＭＭ１１０に対するメモリアクセス要求の数をバンク毎に計数する。これとともに、計数したバンク毎のメモリアクセス要求の数のいずれかが所定値を超えた場合に、パイプライン制御部１０３に主記憶アクセスの中断を指示するバンクアボート通知を通知する。これにより、パイプライン制御部１０３は、新規要求格納部１０２に対して差し戻し指示を通知する。この結果、新規要求格納部１０２の該当するエントリは開放されず、待機状態となって、該当するメモリアクセス要求の実行が遅らされる。
【００５４】
また、バンクアボート生成部４０１は、計数したバンク毎のＤＩＭＭ１１０に対するメモリアクセス要求の数のうち所定値を超えたバンク毎に、要求待機通知を、バンク待機制御部４０２に通知する。
【００５５】
バンク待機制御部４０２は、新規要求格納部１０２のエントリから出力されるメモリアクセス要求のうち、バンクアボート生成部４０１が出力した要求待機通知に対応するバンクアドレスを要求する待機中のメモリアクセス要求の出力を抑止する。この結果、ＤＩＭＭ１１０に対する該当するバンクのメモリアクセス要求の計数値が所定値を下回るまで、該当するメモリアクセス要求のＬ２キャッシュ制御部１０１のパイプラインへの投入が抑止される。
【００５６】
要求格納部２からＤＩＭＭアクセス制御部１０９にメモリアクセス要求が読み出されて実行される毎に、そのメモリアクセス要求に対応するバンクの計数値を−１する。
【００５７】
以上のバンクアボート生成部４０１とバンク待機制御部４０２とからなるバンクアドレス均等制御部により、同じバンクのメモリアクセス要求が過剰に発行されないように食い止めることができる。さらに、他のバンクと比較して発行の頻度が少ないバンクのメモリアクセス要求を優先的に、ＤＩＭＭ１１０に発行させることができる。これにより、メモリアクセス要求の発行状態が、自然に図３（ｂ）に例示したように、常時多様な種類のバンクのメモリアクセス要求が要求格納部１や２に格納される状態にすることができ、バンクアクセスの均等化を図ることが可能となる。
【００５８】
図５Ａは、図４Ａの新規要求格納部１０２（要求格納部０）とバンクアドレス均等制御部（バンク待機制御部）４０２の詳細な回路構成図である。
【００５９】
新規要求格納部１０２は、エントリ部５０１、エントリ出力ゲート５０２、パイプ投入エントリ選択部５０３、リセット用オアゲート５０４を備える。
【００６０】
エントリ部５０１は、１つ以上のＣＰＵコア部１００のそれぞれに対応して実装される。エントリ部５０１は、ＣＰＵコア部１００内のＬ１キャッシュがキャッシュミスしたときに、メモリアクセス要求を、Ｌ２キャッシュメモリでのパイプライン処理のために保持する。このとき、ＣＰＵコア部１００からのメモリアクセス要求によって、ＶＡＬフラグがセット（ｓｅｔ）され、ＰＡ（Ｐｈｙｓｉｃａｌ  Ａｄｄｒｅｓｓ）データとして、アクセスを要求する物理アドレスデータが書き込まれる。ＶＡＬフラグは、そのエントリ部５０１に設定されているメモリアクセス要求が有効であるか否かを示すフラグである。物理アドレスデータは例えば、４０ビットで構成され、３９ビット目から１９ビット目までの２１ビットがタグを表す。また、１８ビット目から７ビット目までの１２ビットがインデックス（＝キャッシュライン数）を表す。すなわち、第１の実施形態におけるＬ２キャッシュメモリのキャッシュライン数は、２の１２乗＝４０９６ラインである。インデックス内の９ビット目から７ビット目までの３ビットがバンクアドレスを表す。すなわち、第１の実施形態におけるＤＩＭＭ１１０のバンク数は２の３乗＝８バンクである。さらに、６ビット目から０ビット目までの７ビットが、同一ライン内のオフセットアドレスを表す。エントリ部５０１において、ＨＬＤフラグおよびＷＡＩＴフラグは、電源投入時にはリセットされる。ＨＬＤフラグは、そのエントリ部５０１のメモリアクセス要求がＬ２キャッシュ制御部において要求格納部１のエントリを占有している状態であることを示すフラグである。ＷＡＩＴフラグは、Ｌ２キャッシュ制御部１０１においてそのメモリアクセス要求がいったんアボートされ、Ｌ２キャッシュ制御部１０１に対して再発行待ちの状態であることを示すフラグである。
【００６１】
エントリ出力ゲート５０２は、１つ以上のエントリ部５０１に対応して設けられ、各エントリ部５０１の出力を有効にするか否かを決定する。エントリ出力ゲート５０２は、エントリ部５０１のＶＡＬフラグがオンで、ＨＬＤフラグがオフで、バンク待機制御部４０２の出力がオフのときにオンとなる。ＣＰＵコア部１００からエントリ部５０１に最初にメモリアクセス要求がセットされたときは、ＨＬＤフラグがオフである。また、ＷＡＩＴフラグもオフであるため、バンク待機制御部４０２内のそのエントリ部５０１に対応するアンドゲート群５１１とアンドゲート５１３が全てオフとなってオアゲート５１２の出力がオフとなる。このようにして、メモリアクセス要求が最初にエントリ部５０１にセットされたときは、そのエントリ部５０１に対応するエントリ出力ゲート５０２は必ずオンとなって、そのメモリアクセス要求をパイプ投入エントリ選択部５０３に出力する。すなわち、新規のメモリアクセス要求は必ず一度は無条件にパイプ処理を行わせる。キャッシュヒットするメモリアクセス要求であれば新規要求格納部１０２おいて待機の必要はないからである。
【００６２】
パイプ投入エントリ選択部５０３は、出力がオンとなっているエントリ出力ゲート５０２に対応するエントリ部５０１に保持されているメモリアクセス要求のうちから、所定の規則に従って（例えば古い順に）メモリアクセス要求を選択する。そして、その選択したメモリアクセス要求を、図４Ａのパイプライン制御部１０３に投入する。このとき、パイプ投入エントリ選択部５０３の出力に従って、該当するエントリ部５０１のＨＬＤフラグがリセット（ｒｓｔ）される。この結果、そのエントリ部５０１に対応するエントリ出力ゲート５０２はオフとなる。そして、パイプライン制御部１０３からのパイプライン差し戻し通知５２８がオンとなってリセット用オアゲート５０４を介してＨＬＤフラグがリセットされない限り、そのエントリ部５０１のメモリアクセス要求は再びパイプライン制御部１０３に投入されることはない。つまり、そのエントリ部５０１では、そのメモリアクセス要求がパイプライン制御部１０３へ投入されてからその実行結果が待たれることになる。
【００６３】
パイプライン制御部１０３において、Ｌ２−ＰＩＰＥ（図２参照）に投入されたメモリアクセス要求のアボート条件が成立すると、パイプライン制御部１０３から新規要求格納部１０２に、パイプライン差し戻し通知５２８が通知される。この結果、リセット用オアゲート５０４を介してＨＬＤフラグがオフされるとともに、ＷＡＩＴフラグがセットされる。これにより、エントリ部５０１内のメモリアクセス要求は待機状態となる。この状態においては、エントリ部５０１に対応するエントリ出力ゲート５０２において、ＶＡＬフラグはオン、ＨＬＤフラグはオフとなっている。従って、エントリ出力ゲート５０２の出力の有無は、バンク待機制御部４０２の出力に依存して決定されることになる。
【００６４】
アンドゲート５１３と、バンク待機制御部４０２は、各エントリ部５０１に対応してそれぞれ設けられている。アンドゲート５１３には、エントリ部５０１のＷＡＩＴフラグと、図４Ａのパイプライン制御部１０３から出力される要求格納部１資源カウンタ値５１５が入力している。要求格納部１資源カウンタ値５１５は、図４Ａの要求格納部１で現在使用中のエントリ数をカウントしている。そして、要求格納部１のエントリ数に空きがあるときには要求格納部１資源カウンタ値５１５は０、空きがないときには要求格納部１資源カウンタ値５１５は１となる。従って、エントリ部５０１のメモリアクセス要求がパイプライン制御部１０３から差し戻されて待機状態となっており、かつ要求格納部１のエントリ数に空きがないときには、次のような制御動作が実行される。アンドゲート５１３の出力がオン（１）となり、オアゲート５１２を介してエントリ出力ゲート５０２がオフ（０）となることにより、待機状態となっているメモリアクセス要求のパイプライン制御部１０３への投入が抑止される。
【００６５】
一方、エントリ部５０１のメモリアクセス要求がパイプライン制御部１０３から差し戻されて待機状態となっており、かつ要求格納部１のエントリ数に空きがあるときには、アンドゲート５１３の出力はオフとなる。この場合にはさらに、アンドゲート群５１１の出力が判定される。アンドゲート群５１１は、例えばバンク（ｂａｎｋ）０から７までの８バンクに対応して８つのアンドゲートから構成されている。アンドゲート群５１１の各アンドゲートには、対応するエントリ部５０１のＰＡデータ中のバンクアドレス（例えば９〜７ビット目）をバンクアドレスデコーダ５１０でデコードした結果が入力される。すなわち、バンクアドレスデコーダ５１０は、上記バンクアドレスをデコードすることによって、バンク０〜７に対応する８本のうちのいずれか１本の出力がオンになるような複数の出力線を有する。これらの出力線のそれぞれが、アンドゲート群５１１の各アンドゲートに入力している。また、アンドゲート群５１１の各アンドゲートには、対応するエントリ部５０１のＷＡＩＴフラグが入力する。さらに、アンドゲート群５１１の各アンドゲートには、バンクアボート生成部４０１が生成した各バンク毎の要求待機通知５１４が入力する。例えば、アンドゲート群５１１中のバンク０に対応するアンドゲートには、ＷＡＩＴフラグと、ＰＡデータのバンクアドレスがバンク０に等しいときにオンとなりそれ以外のときにオフとなる信号と、バンク０に対応する要求待機通知５１４が入力する。
【００６６】
例えば、バンク０に対応する要求待機通知５１４は、バンクアボート生成部４０１によって、現在ＤＩＭＭ１１０に対して要求されているバンク０に対応するメモリアクセス要求の数が所定値を超えたときに、オンとなる。従って、アンドゲート群５１１中のバンク０に対応するアンドゲートは、対応するエントリ部５０１のメモリアクセス要求が待機中で、その要求のバンクアドレスがバンク０で、バンク０への現在の主記憶アクセスが所定数を超えているときにオンとなる。この結果、オアゲート５１２を介して上記エントリ部５０１に対応するエントリ出力ゲート５０２がオフとなり、上記エントリ部５０１で待機中のバンク０を要求するメモリアクセス要求のパイプライン制御部１０３への投入が抑止される。これにより、現在主記憶アクセスが他のバンク１〜バンク７よりも多くなっているバンク０へのメモリアクセス要求の集中が回避される。
【００６７】
バンク１〜７についても、バンク０の場合と同様の制御動作が実行される。
以上のようにして、バンク待機制御部４０２の機能により、エントリ部５０１において待機中のメモリアクセス要求について、一部のバンクへのメモリアクセス要求が集中することを回避して、各バンクへのメモリアクセス要求の投入を均等化することが可能となる。
【００６８】
図５Ｂは、図４Ａのパイプライン制御部１０３とその周辺回路の詳細な回路構成図である。
図５Ａの新規要求格納部１０２内のパイプ投入エントリ選択部５０３から出力されたメモリアクセス要求は、図５Ｂのパイプ投入制御部５２０を介してパイプライン制御部１０３が制御するＬ２−ＰＩＰＥパイプライン（図２参照）に投入される。
【００６９】
パイプライン制御部１０３は、タグ読み出し制御部５２１、その他各種パイプアボート条件生成部５２２と、要求格納部１資源カウンタ５２３と、アボート用オアゲート５２４と、パイプラインコマンド生成部５２５を備える。
【００７０】
タグ読み出し制御部５２１は、パイプ投入制御部５２０からＬ２−ＰＩＰＥのパイプラインに投入されたメモリアクセス要求について、次の処理を実行する。まず、メモリアクセス要求中のアドレスデータをパイプアドレス５３０として、その例えば１８ビット目から７ビット目を取り出してインデックスであるタグ読み出しアドレス５３３を生成する。次に、タグ読み出し制御部５２１は、上記パイプアドレス５３０の例えば３９ビット目から１９ビット目を取り出して要求タグを生成する。そして、タグ読み出し制御部５２１は、キャッシュタグ部１０５にタグ読み出し通知５３２を出力すると共に、タグ読み出しアドレス５３３を出力する。この結果、キャッシュタグ部１０５において、タグ読み出しアドレス５３３に対応するキャッシュラインが指定され、そのキャッシュラインに対応する各キャッシュウェイに記憶されている各タグデータが読み出される。そして、キャッシュタグ部１０５において、各タグデータのいずれかが、タグ読み出し制御部５２１で生成されている要求タグに一致するか否かが比較される。
【００７１】
いずれかのタグデータが要求タグに一致すると、タグ読み出し制御部５２１においてキャッシュヒットが判定され、一致したタグがタグ読み出し出力としてキャッシュタグ部１０５からキャッシュデータ部１０６に出力される。この結果、キャッシュデータ部１０６上で、タグ読み出しアドレス５３３に対応するキャッシュラインの、一致が検出されたタグ読み出し出力に対応するキャッシュウェイから、キャッシュデータが読み出される。そして、このキャッシュデータが、キャッシュデータ部読み出し出力データ５３５として、後述する図５Ｃのデータ応答５６２と連結することにより、ＣＰＵデータ応答５６３として、図５ＡのＣＰＵコア部１００に応答される。このとき、パイプラインコマンド生成部５２５からパイプライン処理成功通知（エントリ開放通知）５２９が図５Ａの新規要求格納部１０２に出力される。この結果、前述した図５Ａの該当するエントリ部５０１において、該当するエントリ部５０１のＶＡＬフラグとＨＬＤフラグとＷＡＩＴフラグがリセットされて、新規要求格納部１０２の該当するエントリが開放される。
【００７２】
いずれのタグデータも要求タグに一致せず、タグ読み出し制御部５２１でキャッシュミスが判定されると、アボート用オアゲート５２４で、要求格納部１へのメモリアクセス要求の発行が可能か否かについて判定される。まず、アボート用オアゲート５２４は、その他各種パイプアボート条件生成部５２２からアボート条件がオンになっているか否かを判定する。また、アボート用オアゲート５２４は、要求格納部１資源カウンタ５２３がカウントフル（ＦＵＬＬ）を示す値１の要求格納部１資源カウンタ値５１５を出力しているか否かを判定する。また、アボート用オアゲート５２４は、図４Ａの要求格納部１から、すでに同一アドレスのメモリアクセス要求を投入済みであることを示すアドレスマッチ通知５５８を通知されているか否かを判定する。さらに、アボート用オアゲート５２４は、図４Ａのバンクアボート生成部４０１から、バンクアボート通知５３９を通知されているか否かを判定する。
【００７３】
アボート用オアゲート５２４は、上記いずれの判定も成立しないときに、パイプラインコマンド生成部５２５に対するアボート出力をオフとする。この結果、パイプラインコマンド生成部５２５は、図４Ａの要求格納部１上の空きエントリを検索し、キャッシュミスを発生させたメモリアクセス要求とともに、要求格納部１エントリ獲得通知５２７を、要求格納部１に通知する。これ以降、要求格納部１および要求格納部２を介して、主記憶アクセスが実行されキャッシュミスしたデータが取得される。上述のキャッシュミスに対するパイプライン処理が成功すると、パイプラインコマンド生成部５２５からパイプライン処理成功通知（エントリ開放通知）５２９が図５Ａの新規要求格納部１０２に出力される。この結果、前述した図５Ａの該当するエントリ部５０１において、該当するエントリ部５０１のＶＡＬフラグとＨＬＤフラグとＷＡＩＴフラグがリセットされて、その新規要求格納部１０２の該当するエントリが開放される。
【００７４】
パイプライン制御部１０３内の要求格納部１資源カウンタ値５１５は、パイプラインコマンド生成部５２５から要求格納部１エントリ獲得通知５２７が発行され要求格納部１にメモリアクセス要求が登録されたときにプラス１（インクリメント）される。また、パイプラインコマンド生成部５２５からパイプライン処理成功通知（エントリ開放通知）５２９が発行され要求格納部１のエントリが開放されたときにマイナス１（デクリメント）される。すなわち、要求格納部１資源カウンタ５２３は、要求格納部１で現在使用中のエントリ数をカウントしている。そして、要求格納部１のエントリ数に空きがあるときには要求格納部１資源カウンタ値５１５は０、空きがないときには要求格納部１資源カウンタ値５１５は１となる。要求格納部１資源カウンタ５２３がカウントフル（ＦＵＬＬ）を示す値１の要求格納部１資源カウンタ値５１５を出力しており、アボート用オアゲート５２４の出力がオンになると、パイプラインコマンド生成部５２５に対してアボートが設定される。この結果、パイプラインコマンド生成部５２５は、図４Ａおよび図５Ａの新規要求格納部１０２に、パイプライン差し戻し通知５２８を出力する。この結果、図５Ａのリセット用オアゲート５０４を介してＨＬＤフラグがリセットされるとともに、ＷＡＩＴフラグがセットされる。これにより、エントリ部５０１内のメモリアクセス要求は待機状態となる。さらに、値１の要求格納部１資源カウンタ値５１５が新規要求格納部１０２に出力される。この結果、前述したようにして、図５Ａにおいて、アンドゲート５１３の出力がオンとなり、オアゲート５１２を介してエントリ出力ゲート５０２がオフとなる。これにより、待機状態となっているメモリアクセス要求のパイプライン制御部１０３への投入が抑止される。以上のようにして、要求格納部１に過剰なメモリアクセス要求の発行が抑止される。
【００７５】
また、図４Ａの要求格納部１から、すでに同一アドレスのメモリアクセス要求を投入済みであることを示すアドレスマッチ通知５５８を通知されると、アボート用オアゲート５２４がオンとなる。この結果、パイプラインコマンド生成部５２５に対して、アボートが設定される。このような場合には、パイプライン制御部１０３が要求格納部１に対して発行しようとするメモリアクセス要求のアドレスのデータは、現在、要求格納部１のエントリに格納されていてそのエントリを占有している状態であるため、再度主記憶アクセスを行う必要はない。このため、パイプラインコマンド生成部５２５は、アドレスマッチ通知５５８を受信した場合には、新規要求格納部１０２に対してパイプライン差し戻し通知５２８を通知する。この結果、図５Ａのリセット用オアゲート５０４を介してＨＬＤフラグがリセットされるとともに、ＷＡＩＴフラグがセットされる。これにより、エントリ部５０１内のメモリアクセス要求は待機状態となる。要求格納部１中の該当するメモリアクセス要求が実行されてキャッシュタグ部１０５とキャッシュデータ部１０６が更新された後に、新規要求格納部１０２中の同じアドレスを要求する待機状態のメモリアクセス要求がパイプラインに再度投入される。これにより、当該メモリアクセス要求がキャッシュヒットし、キャッシュデータ部１０６からキャッシュデータ部読み出し出力データ５３５が要求元のＣＰＵコア部１００にロードされる。
【００７６】
さらに、図４Ａのバンクアボート生成部４０１からバンクアボート通知５３９が通知されると、アボート用オアゲート５２４がオンとなって、パイプラインコマンド生成部５２５にアボートが設定される。バンクアボート生成部４０１は、要求格納部１と要求格納部２に保持されたメモリアクセス要求に基づき、主記憶部のＤＩＭＭ１１０に対するメモリアクセス要求の数をバンク毎に計数する。これとともに、計数したバンク毎のメモリアクセス要求の数のいずれかが所定値を超えた場合に、パイプライン制御部１０３に主記憶アクセスの中断を指示するバンクアボート通知５３９を通知する。これにより、パイプラインコマンド生成部５２５は、新規要求格納部１０２に対してパイプライン差し戻し通知５２８を出力する。この結果、新規要求格納部１０２の該当するエントリ部５０１は開放されず、待機状態となって、該当するメモリアクセス要求の実行が遅らされる。前述した図５Ａのバンク待機制御部４０２の動作と併せて、上述のバンクアボート生成部４０１からのバンクアボート通知５３９を使った制御動作により、同じバンクのメモリアクセス要求が過剰に発行されないように食い止めることができる。さらに、他のバンクと比較して発行の頻度が少ないバンクのメモリアクセス要求を優先的に、ＤＩＭＭ１１０に発行させることができる。これにより、メモリアクセス要求の発行状態が、自然に図３（ｂ）に例示したように、常時多様な種類のバンクのメモリアクセス要求が要求格納部１や２に格納される状態にすることができ、バンクアクセスの均等化を図ることが可能となる。
【００７７】
アボート用オアゲート５２４では、その他各種パイプアボート条件生成部５２２から様々なアボート条件がオンになっているか否かを判定し、その判定結果に応じて、パイプラインコマンド生成部５２５に対してアボートを設定する。
【００７８】
図５Ｃは、図４Ａの要求格納部１  １０４の詳細な回路構成図である。
要求格納部１は、エントリ部５５０、エントリ出力ゲート５５１、パイプ投入エントリ選択部５５２、リセット用オアゲート５５３を備える。エントリ部５５０は、複数のメモリアクセス要求をパイプライン処理可能なように、複数実装される。エントリ出力ゲート５５１およびリセット用オアゲート５５３も、各エントリ部５５０に対応して複数実装される。また、要求格納部１は、各エントリ部５５０に対応して、次の構成を有する。まず、対応するエントリ部５５０のＰＡデータとパイプライン制御部１０３から与えられるパイプアドレス５３０との一致を検出するための比較（一致検出）回路５５４を備える。また、対応するエントリ部５５０のＶＡＬフラグと、パイプライン制御部１０３から与えられるパイプアドレスマッチ検出指示５３１のオンを条件に、比較（一致検出）回路５５４の出力を出力するアンドゲート５５５を備える。さらに、各エントリ部５５０ごとのアンドゲート５５５の出力のオアを演算して、アドレスマッチ通知５５８として図５Ｂのパイプライン制御部１０３内のアボート用オアゲート５２４に与えるアドレスマッチ用オアゲート５５６を備える。さらに、要求格納部１は、主記憶部であるＤＩＭＭ１１０からの主記憶データ応答５６１を一時保持する。その後、主記憶データ応答５６１は、図５Ｂのキャッシュデータ部１０６にキャッシュデータ部書き込みデータ５３８として、または図５ＡのＣＰＵコア部１００にＣＰＵデータ応答５６３として転送される。
【００７９】
図５Ｂのパイプラインコマンド生成部５２５から、要求格納部１エントリ獲得通知５２７と主記憶アクセスのためのメモリアクセス要求が通知されると、次の動作が実行される。要求格納部１の該当するエントリ部５５０において、要求格納部１エントリ獲得通知５２７によって、ＶＡＬフラグがセット（ｓｅｔ）され、ＰＡデータとしてアクセスを要求する物理アドレスデータが書き込まれる。ＶＡＬフラグは、そのエントリ部５５０に設定されているメモリアクセス要求が有効であるか否かを示すフラグである。物理アドレスデータは、前述した図５Ａのエントリ部５０１のＰＡデータと同様の形式を有し、例えば４０ビットで構成される。ＲＤＹフラグおよびＨＬＤフラグは、最初はリセットされる。ＲＤＹフラグは、要求応答パイプ（図２のシーケンスＳ１２参照）への投入準備が完了したことを示すフラグである。ＨＬＤフラグは、そのエントリ部５５０のメモリアクセス要求がＬ２キャッシュ制御部１０１の要求応答パイプにおいて処理中であることを示すフラグである。
【００８０】
上述の要求格納部１のエントリ部５５０への登録と並行して、図５Ｂのパイプラインコマンド生成部５２５から要求格納部１エントリ獲得通知５２７とともに通知された主記憶アクセスのためのメモリアクセス要求が、要求格納部２にも登録される。要求格納部１から要求格納部２へのメモリアクセス要求の転送は、図４ＡのＣＰＵ側バスインタフェース部１１１からシステムバスを経由して図４Ｂのシステムコントローラ側バスインタフェース部１１２を介して実行される。要求格納部１と要求格納部２が連携して動作するための制御は、図２で前述した動作シーケンスと同様である。すなわち、システムコントローラチップ１０７内の要求格納部２に保持されたメモリアクセス要求は、処理可能なバンクアドレスを有するものから順にＤＩＭＭアクセス制御部１０９によって読み出され、ＤＩＭＭ１１０のアクセス用の主記憶アクセスパイプに投入される。ＤＩＭＭアクセス制御部１０９は、要求格納部２から処理可能なバンクアドレスメモリアクセス要求に対応するコマンドとアドレスを生成し、ＤＩＭＭ１１０に対してメモリアクセスを実行する。ＤＩＭＭ１１０におけるメモリアクセスが完了すると、ＤＩＭＭ１１０から要求格納部１内のデータバッファ５５７に対して、主記憶データ応答５６１が送信される。要求格納部２からデータバッファ５５７へのデータ応答は、図４Ｂのシステムコントローラ側バスインタフェース部１１２からシステムバスを経由して図４ＡのＣＰＵ側バスインタフェース部１１１を介して実行される。
【００８１】
上記主記憶データ応答５６１の送信に基づいて、図５Ｃの該当するエントリ部５５０において、ＲＤＹフラグがセットされる。ここで、エントリ出力ゲート５５１は、各エントリ部５５０に対応して設けられ、各エントリ部５５０の出力を有効にするか否かを決定する。エントリ出力ゲート５５１は、エントリ部５５０のＶＡＬフラグがオンで、ＨＬＤフラグがオフで、ＲＤＹフラグがオンのときにオンとなる。上述したように、エントリ部５５０のメモリアクセス要求に対応する主記憶データ応答５６１がＤＩＭＭ１１０から返されたときにＲＤＹフラグがオンとなる。これにより、そのエントリ部５５０に対応するエントリ出力ゲート５５１がオンとなって、そのメモリアクセス要求をパイプ投入エントリ選択部５５２に出力する。
【００８２】
パイプ投入エントリ選択部５５２は、出力がオンとなっているエントリ出力ゲート５５１に対応するエントリ部５５０に保持されているメモリアクセス要求のうちから、所定の規則に従って（例えば古い順に）メモリアクセス要求を選択する。そして、その選択したメモリアクセス要求を、図５Ｂのパイプ投入制御部５２０に投入する。このとき、パイプ投入エントリ選択部５５２の出力に従って、該当するエントリ部５５０のＨＬＤフラグがセットされる。この結果、そのエントリ部５５０に対応するエントリ出力ゲート５５１は必ずオフとなる。そして、パイプライン制御部１０３からのパイプライン差し戻し通知５２８がオンとなってリセット用オアゲート５５３を介してＨＬＤフラグがリセットされない限り、そのエントリ部５５０のメモリアクセス要求は再びパイプ投入制御部５２０に投入されることはない。つまり、そのエントリ部５５０では、そのメモリアクセス要求がパイプライン制御部１０３へ投入されてからその実行結果が待たれることになる。この結果、パイプライン制御部１０３上で、要求応答パイプが起動される（図２のシーケンスＳ１１参照）。
【００８３】
要求応答パイプにおいてアボート（中止）条件が発生しない場合には、パイプライン制御部１０３は、キャッシュデータ部１０６への主記憶データ応答５６１の書き込みとキャッシュタグ部１０５のタグの更新を実行する（図２のシーケンスＳ１２）。より具体的には、図５Ｂのパイプラインコマンド生成部５２５は、図５Ｃのパイプ投入エントリ選択部５５２から図５Ｂのパイプ投入制御部５２０に投入されたメモリアクセス要求に従って、次の動作を実行する。まず、このメモリアクセス要求中のアドレスデータの、例えば１８ビット目から７ビット目を取り出してインデックスであるタグ更新アドレス５３７を生成する。次に、パイプラインコマンド生成部５２５は、上記アドレスデータの例えば３９ビット目から１９ビット目を取り出して要求タグを生成する。そして、パイプラインコマンド生成部５２５は、キャッシュタグ部１０５にタグ更新通知５３６を出力すると共に、タグ更新アドレス５３７を出力する。この結果、キャッシュタグ部１０５において、タグ更新アドレス５３７に対応するキャッシュラインが指定され、そのキャッシュラインに対応する各キャッシュウェイのうちの１つのキャッシュブロックが追い出される。そして、そのキャッシュブロックに、要求タグが新たに上書きされる。これと共に、キャッシュデータ部１０６上の上記キャッシュブロックに対応する領域に、図５Ｃのデータバッファ５５７に一時保持されたデータ応答５６２が、キャッシュデータ部書き込みデータ５３８として書き込まれる。上記動作と共に、上記データ応答５６２は、ＣＰＵデータ応答５６３として、図５ＡのＣＰＵコア部１００へ転送される（図２のシーケンスＳ１３参照）。なお、ＣＰＵコア部１００へのデータ応答は、メモリアクセス要求が、ロード要求であって、かつプリフェッチ要求でない場合に実行される。
【００８４】
以上の要求応答パイプの動作の後、図５Ｂのパイプラインコマンド生成部５２５は、要求格納部１に、該当するメモリアクセス要求のエントリの開放を、パイプライン処理成功通知（エントリ開放通知）５２９として通知する（図２のシーケンスＳ１４参照）。この通知に基づいて、図５Ｃにおいて、該当するエントリ部５５０のＶＡＬフラグとＲＤＹフラグとＨＬＤフラグがリセットされ、要求格納部１の該当するエントリ部５５０が開放される。
【００８５】
パイプライン制御部１０３における要求応答パイプラインが何らかの要因によりアボートした場合、図５Ｂのパイプラインコマンド生成部５２５から図５Ｃの要求格納部１に、パイプライン差し戻し通知５２８が通知される。この結果、図５Ｃのリセット用オアゲート５５３を介して該当するエントリ部５５０のＨＬＤフラグがリセットされる。この結果、そのエントリ部５５０に対応するエントリ出力ゲート５５１が再度そのエントリのメモリアクセス要求を選択可能となり、パイプ投入エントリ選択部５５２を介して図５Ｂのパイプ投入制御部５２０への再度の投入が試行される。
【００８６】
パイプライン制御部１０３から要求格納部１にメモリアクセス要求が登録されたとき、各エントリ部５５０毎に、比較（一致検出）回路５５４が、各エントリ部５５０に登録されているＰＡアドレスとパイプライン制御部１０３から通知されているパイプアドレス５３０との一致を検出する。そして、各アンドゲート５５５が、各エントリ部５５０のＶＡＬフラグと、パイプライン制御部１０３から与えられるパイプアドレスマッチ検出指示５３１のオンを条件に、各比較（一致検出）回路５５４の検出結果を出力する。この結果、いずれかの有効なエントリ部５５０のＰＡアドレスとパイプアドレス５３０が一致した場合、オアゲート５５６を介して出力されるアドレスマッチ通知５５８がオンとなる。前述したように、図５Ｂにおいて、要求格納部１からアドレスマッチ通知５５８を通知されると、アボート用オアゲート５２４がオンとなって、パイプラインコマンド生成部５２５に対して、アボートが設定される。このようにして、重複する無駄な主記憶アクセスの発生が抑止される。
【００８７】
図５Ｄは、図４Ａのバンクアドレス均等制御部（バンクアボート生成部）４０１の詳細な回路構成図である。
バンクアボート生成部４０１は、バンクアドレスデコーダ５４０、カウントアップ用アンドゲート群５４１、カウンタ群５４２、大小比較回路群５４４、バンクアドレスデコーダ５４８、カウントダウン用アンドゲート群５４９を備える。また、バンクアボート生成部４０１は、バンクアドレスデコーダ５４５と、バンクアボート通知用アンドゲート群５４６と、バンクアボート通知用オアゲート５４７を備える。
【００８８】
カウンタ群５４２は、要求格納部１と要求格納部２に保持されたメモリアクセス要求に基づき、主記憶部のＤＩＭＭ１１０に対するメモリアクセス要求の数を、バンク（ｂａｎｋ）０〜７の各バンク毎に計数する。
【００８９】
この計数を実現するために、カウントアップ用アンドゲート群５４１は、例えばバンク（ｂａｎｋ）０から７までの８バンクに対応して８つのアンドゲートから構成されている。カウントアップ用アンドゲート群５４１の各アンドゲートには、図５Ｂのパイプラインコマンド生成部５２５から入力するパイプバンクアドレス５２６をバンクアドレスデコーダ５４０でデコードした結果が入力される。デコード部５４０は、パイプバンクアドレス５２６をデコードすることによって、バンク０〜７に対応する８本のうちのいずれか１本の出力がオンになるような複数の出力線を有する。これらの出力線のそれぞれが、カウントアップ用アンドゲート群５４１の各アンドゲートに入力している。そして、パイプバンクアドレス５２６がバンク０を示していればバンクアドレスデコーダ５４０の出力のうちｂａｎｋ０のみがオンとなり、他のｂａｎｋ１〜７はオフとなる。パイプバンクアドレス５２６がバンク１を示していればバンクアドレスデコーダ５４０の出力のうちｂａｎｋ１のみがオンとなり、他の出力はオフとなる。バンク２〜７についても同様である。また、カウントアップ用アンドゲート群５４１の各アンドゲートには、図５Ｂのパイプラインコマンド生成部５２５から入力する要求格納部１エントリ獲得通知５２７が入力する。この結果、パイプラインコマンド生成部５２５から要求格納部１エントリ獲得通知５２７が発行されたメモリアクセス要求が要求格納部１および２に登録されるタイミングで、次の制御が実行される。上記メモリアクセス要求に対応するパイプバンクアドレス５２６が示すバンクに対応するカウントアップ用アンドゲート群５４１内のアンドゲートの出力がオンとなり、そのバンクに対応するカウンタ群５４２内のカウンタがカウントアップされる。
【００９０】
一方、図５Ｃの要求格納部２からＤＩＭＭアクセス制御部１０９にメモリアクセス要求が読み出されるタイミングで、要求格納部２の開放を示す要求格納部２エントリ開放通知５５９が、図５Ｃの要求格納部２から出力される。また、要求格納部２から、読み出されたメモリアクセス要求のバンクを示す要求格納部２開放バンクアドレス５６０が出力される。これらの、要求格納部２エントリ開放通知５５９と要求格納部２開放バンクアドレス５６０は、図５Ｄのバンクアボート生成部４０１に入力する。要求格納部２からバンクアボート生成部４０１への上記２つのデータの転送は、図４Ｂのシステムコントローラ側バスインタフェース部１１２からシステムバスを経由して図４ＡのＣＰＵ側バスインタフェース部１１１を介して実行される。ここで、カウントダウン用アンドゲート群５４９は、例えばバンク０から７までの８バンクに対応して８つのアンドゲートから構成されている。カウントダウン用アンドゲート群５４９の各アンドゲートには、図５Ｃの要求格納部２から入力する要求格納部２開放バンクアドレス５６０をバンクアドレスデコーダ５４８でデコードした結果が入力される。すなわち、バンクアドレスデコーダ５４８は、要求格納部２開放バンクアドレス５６０をデコードすることによって、ｂａｎｋ０〜７に対応する８本のうちのいずれか１本の出力がオンになるような複数の出力線を有する。これらの出力線のそれぞれが、カウントダウン用アンドゲート群５４９の各アンドゲートに入力している。そして、要求格納部２開放バンクアドレス５６０がバンク０を示していればバンクアドレスデコーダ５４８の出力のうちｂａｎｋ０のみがオンとなり、他のｂａｎｋ１〜７はオフとなる。バンク１〜７についても同様である。また、カウントダウン用アンドゲート群５４９の各アンドゲートには、図５Ｃの要求格納部２から要求格納部２エントリ開放通知５５９が入力する。この結果、要求格納部２からメモリアクセス要求が読み出されて主記憶アクセスされたタイミングで、次の制御が実行される。上記メモリアクセス要求に対応する要求格納部２開放バンクアドレス５６０が示すバンクに対応するカウントダウン用アンドゲート群５４９内のアンドゲートの出力がオンとなり、そのバンクに対応するカウンタ群５４２内のカウンタがカウントダウンされる。
【００９１】
以上のようにして、カウンタ群５４２は、図４ＡのＬ２キャッシュ制御部１０１から図４ＢのＤＩＭＭ１１０に対して現在仕掛かっているメモリアクセス要求の数を、バンク毎に計数することができる。
【００９２】
次に、大小比較回路群５４４内の各大小比較回路は、カウンタ群５４２内のバンク毎の各カウンタ値と、閾値設定レジスタ５４３に設定されている閾値とで、それぞれ大小比較を行う。各大小比較回路の比較結果は各バンク毎の要求待機通知５１４として出力され、図５Ａのバンク待機制御部４０２に出力される。前述したように、図４Ａまたは図５Ａのバンク待機制御部４０２は、新規要求格納部１０２のエントリ部５５０で待機中のメモリアクセス要求のうち、上記要求待機通知５１４に対応するバンクアドレスを要求するメモリアクセス要求の出力を抑止する。この結果、カウンタ群５４２における該当するバンクに対応するメモリアクセス要求の計数値が所定値を下回るまで、該当するメモリアクセス要求のＬ２キャッシュ制御部１０１のパイプラインへの投入が抑止される。
【００９３】
バンクアボート通知用アンドゲート群５４６は、例えばバンク（ｂａｎｋ）０から７までの８バンクに対応して８つのアンドゲートから構成されている。バンクアボート通知用アンドゲート群５４６の各アンドゲートには、図５Ｂのパイプラインコマンド生成部５２５から入力するパイプアドレス５３０のうちパイプバンクアドレス部分をバンクアドレスデコーダ５４５でデコードした結果が入力される。すなわち、バンクアドレスデコーダ５４５は、パイプアドレス５３０のうちパイプバンクアドレス部分をデコードすることによって、バンク０〜７に対応する８本のうちのいずれか１本の出力がオンになるような複数の出力線を有する。これらの出力線のそれぞれが、アンドゲート群５４６の各アンドゲートに入力している。そして、パイプバンクアドレスがバンク０を示していればバンクアドレスデコーダ５４５の出力のうちｂａｎｋ０のみがオンとなり、他のｂａｎｋ１〜７はオフとなる。バンク１〜７についても同様である。また、バンクアボート通知用アンドゲート群５４６の各アンドゲートには、図５Ｂのパイプライン制御部１０３から入力するパイプアドレスマッチ検出指示５３１が入力する。さらに、バンクアボート通知用アンドゲート群５４６の各アンドゲートには、大小比較回路群５４４の各大小比較回路の比較結果出力が入力する。この結果、パイプライン制御部１０３からパイプアドレス５３０が入力したときに、そのバンクに対応するメモリアクセス要求の計数値が所定値を超えているなら、バンクアボート通知用アンドゲート群５４６の該当するアンドゲートの出力がオンとなる。これにより、バンクアボート通知用オアゲート５４７から出力されるバンクアボート通知５３９がオンとなって、図５Ｂのパイプライン制御部１０３内のアボート用オアゲート５２４がオンとなる。これにより、パイプラインコマンド生成部５２５は、アボート状態となり、新規要求格納部１０２に対してパイプライン差し戻し通知５２８を出力する。この結果、前述したように、新規要求格納部１０２の該当するエントリ部５０１は開放されず、待機状態となって、該当するメモリアクセス要求の実行が遅らされる。前述した図５Ａのバンク待機制御部４０２の動作と併せて、上述のバンクアボート生成部４０１からのバンクアボート通知５３９を使った制御動作により、同じバンクのメモリアクセス要求が過剰に発行されないように食い止めることができる。さらに、他のバンクと比較して発行の頻度が少ないバンクのメモリアクセス要求を優先的に、ＤＩＭＭ１１０に発行させることができる。これにより、メモリアクセス要求の発行状態が、自然に図３（ｂ）に例示したように、常時多様な種類のバンクのメモリアクセス要求が要求格納部１や２に格納される状態にすることができ、バンクアクセスの均等化を図ることが可能となる。
【００９４】
このバンクアクセスの均等化について、前述した図３（ｂ）を例にとってより詳細に説明する。Ｃｏｒｅ０〜３の各ＣＰＵコア部１００から、同一バンクのメモリアクセス要求が連続して発行されるとする。この場合、図５Ａの要求格納部０では、パイプ投入エントリ選択部５０３が、各ＣＰＵコア部１００に対応するエントリ部５０１からメモリアクセス要求が選択してＬ２キャッシュメモリのパイプラインに投入する。このとき、図４Ａのバンク待機制御部４０１、４０２が、同じバンクアドレスを有するメモリアクセス要求は一定数以上連続的には投入されないように制御する。例えば、図５Ｄのカウンタ群５４２の各バンクアドレスに対応するカウンタの計数の閾値が１であれば、同じバンクアドレスのメモリアクセス要求が２個以上パイプラインに投入されないように、バンク待機制御部４０１、４０２が制御する。この結果、要求格納部０では、異なるバンクアドレスを有するメモリアクセス要求が格納されているエントリ部５０１が優先的に選択されて、そのメモリアクセス要求がＬ２キャッシュのパイプラインに投入される。例えば、Ｃｏｒｅ０，１，２，３に対応する４つのエントリ部５０１にほぼ同時に同じバンクアドレスの要求が格納された場合を考える。この場合、まずＣｏｒｅ０のエントリ部５０１のバンクアドレス＝０を有するメモリアクセス要求が選択されて、パイプラインに投入される。その直後、Ｃｏｒｅ１，２，３の各エントリ部５０１には、同じバンクアドレス＝０を有するメモリアクセス要求が格納されているなら、それらからの出力が全部抑止される。そして図３（ｂ）に示すように、Ｃｏｒｅ０のエントリ部５０１では、バンクアドレス＝０のメモリアクセス要求がＤＩＭＭ１１０に向けて出力された後にすぐに、Ｃｏｒｅ１のＣＰＵコア部１００から次のバンクアドレス＝４のメモリアクセス要求がＤＩＭＭ１１０に向けて出力される。すなわち、バンクアドレス＝０のメモリアクセス要求が格納されていたＣｏｒｅ０のエントリ部５０１の次に選択されるエントリ部５０１は、バンクアドレス＝４のメモリアクセス要求が格納されたＣｏｒｅ１のエントリ部５０１ということになる。このようにして、バンクアドレス＝０であるメモリアクセス要求の直ぐ後にバンクアドレス＝４であるメモリアクセス要求が出力され、バンクのアクセス制御が均等化されるとともに、Ｌ２キャッシュのパイプラインは、ほぼ間断なく処理を続行できることになる。したがって本実施形態によれば図３（ｂ）に示すようにバンク，０，４，２，６，１，５，３，７が均等にアクセスされ、Ｃｏｒｅ０，１，２，３が均等にアクセスされる。そして、ＣＰＵコア部１００が図３（ｂ）の３０４に示すように間断なくＤＩＭＭ１１０に対してアクセスできる。
【００９５】
従来は、Ｌ２キャッシュのパイプラインに、連続処理できない同じバンクアドレスを有するメモリアクセス要求が多く滞留してしまい、主記憶部へのメモリアクセス要求の発行およびそれに対応するデータ応答も間欠的になってしまって、パイプラインの処理性能が大きく落ちるという結果を招いていた。これに対して本実施形態では、Ｌ２キャッシュのパイプラインは、ほぼ間断なく処理を行うことができるため、Ｌ２キャッシュ制御部１０１のスループットを向上させることが可能となる。
【００９６】
ここで、Ｃｏｒｅ１，２，３のメモリアクセス要求は、バンクアドレス＝０が出力できるようになるまで待たされることになる。しかし、バンクアドレス＝０の出力が可能な期間が経過した後は、次のＣｏｒｅ１のバンクアドレス＝０が優先的に選択された後、今度はそのＣｏｒｅ１のメモリアクセス要求が連続して選択されるように制御すればよい。このようなアルゴリズムを図５Ａのパイプ投入エントリ選択部５５２に持たせておけば、特定のＣＰＵコア部１００に処理が偏ることはない。
【００９７】
図６は、上述した第１の実施形態の動作の処理過程を示すフローチャートである。
ＣＰＵコア１６０２がＬ２キャッシュ制御部１０１へ新規のメモリアクセス要求を発行し、この結果、要求格納部０（新規要求格納部１０２。以下同じ）のエントリ部５０１（図５Ａ参照）にメモリアクセス要求が格納される（ステップＳ６０１）。
【００９８】
その後、図５Ａにおいて、要求格納部０のエントリ部５０１からエントリ出力ゲート５５１、パイプ投入エントリ選択部５５２を介して、図５Ｂのパイプ投入制御部５２０に要求パイプが投入される（ステップＳ６０２）。
【００９９】
パイプライン制御部１０３のタグ読み出し制御部５２１（図５Ｂ参照）では、キャッシュタグ部１０５を検索した結果、キャッシュミスが発生したか否かが判定される（ステップＳ６０３）。
【０１００】
キャッシュヒットとなってステップＳ６０３の判定がＮＯの場合、図５Ｂのパイプラインコマンド生成部５２５において、要求パイプのパイプ処理が成功したか否かが判定される（ステップＳ６０４）。
【０１０１】
パイプ処理が成功しステップＳ６０４の判定がＹＥＳの場合、図５Ｂのパイプラインコマンド生成部５２５から図５Ａの要求格納部０にパイプライン処理成功通知（エントリ開放通知）５２９が通知される。この結果、要求格納部０の該当するエントリ部５０１において、ＶＡＬフラグ、ＨＬＤフラグ、ＷＡＩＴフラグがリセットされ、そのエントリ部５０１が開放される（ステップＳ６０５）。
【０１０２】
パイプ処理が成功せずステップＳ６０４の判定がＮＯの場合、図５Ｂのパイプラインコマンド生成部５２５から図５Ａの要求格納部０にパイプライン差し戻し通知５２８が通知される。この結果、該当するエントリ部５０１において、ＨＬＤフラグがリセット、ＷＡＩＴフラグがセットされ、そのエントリ部５０１のメモリアクセス要求は待機状態となる。これにより、要求格納部０からパイプライン制御部１０３への要求パイプの投入が繰り返し試行される（ステップＳ６０４→Ｓ６０２）。
【０１０３】
パイプライン制御部１０３においてキャッシュミスとなってステップＳ６０３の判定がＹＥＳの場合、要求格納部１に空エントリがあるか否かが判定される（ステップＳ６０６）。この判定機能は、要求格納部１資源カウンタ５２３とアボート用オアゲート５２４により実現される。すなわち、要求格納部１資源カウンタ５２３のカウント値がフルとなって要求格納部１資源カウンタ値５１５が１を示せば、要求格納部１に空エントリがないと判定される。要求格納部１資源カウンタ値５１５が０を示していれば、要求格納部１に空エントリがあると判定される。
【０１０４】
要求格納部１に空エントリがありステップＳ６０６の判定がＹＥＳの場合、要求格納部１が保持するメモリアクセス要求の数が所定の閾値より小さいか否かが判定される（ステップＳ６０７）。具体的には、図５Ｄのバンクアボート生成部４０１の大小比較回路群５４４の要求バンクに対応する大小比較回路で、カウンタ群５４２の要求バンクに対応するカウンタ値が閾値設定レジスタ５４３に記憶された所定の閾値より小さいか否かが判定される。
【０１０５】
ステップＳ６０７の判定がＹＥＳならば、図５Ｄのバンクアボート生成部４０１から図５Ｂのアボート用オアゲート５２４には、バンクアボート通知５３９は発行されない。この結果、図５Ｂのパイプラインコマンド生成部５２５から図５Ａの要求格納部０へ、要求開放指示としてパイプライン処理成功通知（エントリ開放通知）５２９が通知される。これにより、図５の要求格納部０の該当するエントリ部５０１において、ＶＡＬフラグ、ＨＬＤフラグ、ＷＡＩＴフラグがリセットされて、そのエントリ部５０１が開放される。また、図５Ｂのパイプラインコマンド生成部５２５から図５Ｃの要求格納部１のエントリ部５５０と要求格納部２に、メモリアクセス要求とともに要求格納部１エントリ獲得通知５２７が発行される。パイプラインコマンド生成部５２５から要求格納部２への上記通知は、図４Ｂのシステムコントローラ側バスインタフェース部１１２からシステムバスを経由して図４ＡのＣＰＵ側バスインタフェース部１１１を介して実行される。この結果、パイプライン制御部１０３から要求格納部１、要求格納部２へメモリアクセス要求が発行される。また、要求格納部１エントリ獲得通知５２７により、図５Ｄのバンクアボート生成部４０１では、カウンタ群５４２において要求バンクのカウンタのカウント値（バンク格納数）がプラス１（インクリメント）される。この機能は、図５Ｄの、バンクアドレスデコーダ５４０とカウントアップ用アンドゲート群５４１により実現される（以上、ステップＳ６０８）。
【０１０６】
次に、要求格納部１、要求格納部２へのメモリアクセス要求の発行時点で、図５Ｄのバンクアボート生成部４０１からはバンクアボート通知５３９は出力されていないため、要求バンクが処理可能となっている。このため、ＤＩＭＭアクセス制御部１０９が要求格納部２からメモリアクセス要求を選択することができ、ＤＩＭＭ１１０へのアクセスが実行される。これと同時に、図５Ｃの要求格納部２から図５Ｄのバンクアボート生成部４０１へ要求格納部２エントリ開放通知５５９が通知される。この結果、図５Ｄのバンクアボート生成部４０１では、カウンタ群５４２において要求バンクのカウンタのカウント値（バンク格納数）がマイナス１（デクリメント）される。この機能は、図５Ｄの、バンクアドレスデコーダ５４８とカウントダウン用アンドゲート群５４９により実現される（以上、ステップＳ６０９）。
【０１０７】
上記ＤＩＭＭ１１０へのアクセスの結果、主記憶部であるＤＩＭＭ１１０から要求格納部１のデータバッファ５５７に対して主記憶データ応答５６１が転送される（ステップＳ６１０）。
【０１０８】
続いて、主記憶データ応答５６１の転送を受けて、要求格納部１から要求応答パイプが投入される（ステップＳ６１１）。この機能は、図５Ｃの要求格納部１の該当するエントリ部５５０においてＲＤＹフラグがセットされた後、該当するエントリ出力ゲート５５１がオンとなり、パイプ投入エントリ選択部５５２によってそのエントリが選択される動作として実現される。
【０１０９】
この結果、図５Ｂのパイプラインコマンド生成部５２５において、パイプ処理が成功したか否かが判定される（ステップＳ６１２）。
【０１１０】
パイプ処理が成功せずステップＳ６１２の判定がＮＯならば、パイプライン制御部１０３から要求格納部１にパイプライン差し戻し通知５２８が発行される。この結果、図５Ｃの要求格納部１の該当するエントリ部５５０において、ＨＬＤフラグがリセットされることにより、該当するエントリ出力ゲート５５１がオンになる。この結果、要求格納部１のパイプ投入エントリ選択部５５２は、該当するエントリ部５５０のメモリアクセス要求について要求応答パイプへの投入を繰り返し実行する（ステップＳ６１２→Ｓ６１１）。
【０１１１】
パイプ処理が成功しステップＳ６１２の判定がＹＥＳならば、パイプライン制御部１０３がキャシュ(キャッシュタグ部１０５、キャッシュデータ部１０６)にデータを登録する。その後、パイプライン制御部１０３から要求格納部１にパイプライン処理成功通知（エントリ開放通知）５２９が発行される。この結果、図５Ｃの要求格納部１の該当するエントリ部５５０において、ＶＡＬフラグ、ＲＤＹフラグ、ＨＬＤフラグがリセットされ、そのエントリ部５５０が開放される（ステップＳ６１３）。
【０１１２】
そして、ＣＰＵコア１６０２からのメモリアクセス要求が、ロード要求であってかつプリフェッチ要求でない場合に、図５Ｃの要求格納部１内のデータバッファ５５７からメモリアクセス要求を要求した図５ＡのＣＰＵコア１６０２（要求コア）へ、ＣＰＵデータ応答５６３が転送される（ステップＳ６１４）。以上により、１つのメモリアクセス要求に対する処理が終了する。
【０１１３】
前述したステップＳ６０６またはＳ６０７の判定がＮＯの場合には、以下の制御処理が実行される。ステップＳ６０６の判定がＮＯの場合とは、図５Ｂの要求格納部１資源カウンタ５２３のカウント値がフルとなって要求格納部１資源カウンタ値５１５が１を示し、要求格納部１に空エントリがないと判定された場合である。ステップＳ６０７の判定がＮＯの場合とは、次の場合である。図５Ｄのバンクアボート生成部４０１の大小比較回路群５４４の要求バンクに対応する大小比較回路で、カウンタ群５４２の要求バンクに対応するカウンタ値が閾値設定レジスタ５４３に記憶された所定の閾値以上になっていると判定された場合である。
【０１１４】
まず、パイプライン制御部１０３から要求格納部０に、パイプライン差し戻し通知５２８が通知される（ステップＳ６１５）。この結果、図５Ａの要求格納部０において、該当するエントリ部５０１のＷＡＩＴフラグがセットされ、そのエントリ部５０１のメモリアクセス要求が待機状態となる（ステップＳ６１６）。
【０１１５】
次に、上記待機状態において、図５Ｂの要求格納部１資源カウンタ５２３のカウント値がフルとならずに要求格納部１資源カウンタ値５１５が０を示して、要求格納部１に空エントリが生じたか否かが判定される（ステップＳ６１７）。この機能は、図５Ａのアンドゲート５１３によって実現される。
【０１１６】
上記待機状態において、要求格納部１にまだ空エントリが生じておらずステップＳ６１７の判定がＮＯならば、ステップＳ６１６の待機状態が繰り返される（ステップＳ６１７→Ｓ６１６）。この場合には、図５Ａにおいて、要求格納部１資源カウンタ値５１５が１を示し該当するエントリ部５０１のＷＡＩＴフラグも１であるため、アンドゲート５１３の出力がオンとなり、オアゲート５１２の出力がオンとなる。この結果、エントリ出力ゲート５０２がオフとなって、該当するエントリ部５０１からのメモリアクセス要求の出力が抑止され、待機状態が維持される。
【０１１７】
上記待機状態において、要求格納部１に空エントリが生じステップＳ６１７の判定がＹＥＳになると、要求バンクについて、要求格納部１が保持するメモリアクセス要求の数が所定の閾値より小さくなったか否かが判定される（ステップＳ６１８）。具体的には、図５Ａにおいて、まず要求格納部１資源カウンタ値５１５が０となることによりアンドゲート５１３の出力がオフとなる。この結果、アンドゲート群５１１の機能が有効になる。アンドゲート群５１１の各バンクに対応するアンドゲートには、図５Ｄの大小比較回路群５４４の各大小比較回路から、各バンクに対応する要求待機通知５１４が入力している。図５Ｄのバンクアボート生成部４０１の大小比較回路群５４４の各大小比較回路で、カウンタ群５４２の対応するカウンタ値が閾値設定レジスタ５４３に記憶された所定の閾値以上になると、その大小比較回路が出力する要求待機通知５１４がオンになる。また、各アンドゲート群５１１は、各エントリ部５０１に対応して実装されており、各エントリ部５０１に登録されているＰＡアドレスのバンクアドレス部分をバンクアドレスデコーダ５１０でデコードした結果によって、アンドゲート群５１１において、エントリ部５０１のＰＡアドレスのバンクアドレスに対応するアンドゲートのみがオンになる。この結果、現在処理対象となっているエントリ部５０１の要求バンクに対応するアンドゲート群５１１内のアンドゲートにおいて、それに入力している要求待機通知５１４がオフであるかオンであるかが判定される。これにより、要求バンクについて、要求格納部１が保持するメモリアクセス要求の数が所定の閾値より小さくなったか否かが判定される。
【０１１８】
要求格納部１が保持する数が閾値設定レジスタ５４３に記憶された所定の閾値より小さくなっておらずステップＳ６１８の判定がＮＯならば、ステップＳ６１６の待機状態、ステップＳ６１７の判定、ステップＳ６１８の判定が繰り返される。具体的には、現在処理対象となっているエントリ部５０１の要求バンクに対応するアンドゲート群５１１内のアンドゲートにおいて、それに入力している要求待機通知５１４がオンになっていれば、そのアンドゲートがオンになって、オアゲート５１２の出力がオンになる。この結果、該当するエントリ部５０１に対応するエントリ出力ゲート５０２がオフになって、そのエントリ部５０１のメモリアクセス要求の出力が抑止され、待機状態が維持される。
【０１１９】
要求格納部１が保持する数が閾値設定レジスタ５４３に記憶された所定の閾値より小さくなりステップＳ６１８の判定がＹＥＳになると、ステップＳ６０２の処理に移動する。これにより、要求格納部０からパイプライン制御部１０３に要求パイプが投入されＬ２キャッシュ制御が実行される（ステップＳ６１８→Ｓ６０２）。具体的には、現在処理対象となっているエントリ部５０１の要求バンクに対応するアンドゲート群５１１内のアンドゲートにおいて、それに入力している要求待機通知５１４がオフになれば、そのアンドゲートがオフになる。また、アンドゲート群５１１内の他の全てのアンドゲートとアンドゲート５１３もオフになる。この結果、オアゲート５１２の出力がオフになり、該当するエントリ部５０１に対応するエントリ出力ゲート５０２がオンになって、そのエントリ部５０１のメモリアクセス要求が出力可能な状態になる。これにより、パイプ投入エントリ選択部５５２が、該当するエントリ部５０１のメモリアクセス要求を選択して、図５Ｂのパイプ投入制御部５２０に投入することにより、Ｌ２キャッシュ制御が実行される。
【０１２０】
図７Ａおよび図７Ｂは、図４Ａおよび図４Ｂの第１の実施形態の構成を基本として、主記憶アクセスを行う部分が、主記憶アクセス機能外付けマルチコアＣＰＵチップ１内に１チップとして実装されている第２の実施形態の構成図である。
【０１２１】
この構成では、図４ＡのＣＰＵ側バスインタフェース部１１１、図４Ｂのシステムコントローラ側バスインタフェース部１１２が省略され、さらに、図４Ｂの要求格納部２の機能も省略されて、要求格納部１に統合されている。要求格納部１が要求格納部２の機能を担っており、要求格納部１と要求格納部２の間の通信制御が省略される以外は、図４Ａおよび図４Ｂの場合と同じ制御である。図７Ａの新規要求格納部１０２、バンク待機制御部４０２、パイプライン制御部１０３、要求格納部１、およびバンクアボート生成部４０１の詳細な回路構成図は、第１の実施形態の図５Ａ、図５Ｂ、図５Ｃ、図５Ｄと同様である。
【０１２２】
第２の実施形態では、第１の実施形態の要求格納部２エントリ開放通知５５９および要求格納部２開放バンクアドレス５６０相当の情報が、要求格納部１から図７Ａおよび図５Ｄのバンクアボート生成部４０１に出力される。これらの情報は、図７ＢのＤＩＭＭアクセス制御部１０９が図７Ａの要求格納部１からメモリアクセス要求を読み出してＤＩＭＭ１１０へのアクセスを実行する時点で出力される。
【０１２３】
以上説明した第１および第２の実施形態により、主記憶に対する要求バンクが均等化され、何かのきっかけでバンクの偏りが発生しかかっても、同じバンクのメモリアクセス要求が過剰に発行されないように食い止めることができる。さらに、他のバンクと比較して発行の頻度が少ないバンクのメモリアクセス要求を優先的に、主記憶部に発行させることができる。これらの機能は、図５Ｄのバンクアボート生成部４０１と図５Ａのバンク待機制御部４０２とからなる図４Ａまたは図７Ａのバンクアドレス均等制御部４０１、４０２により、実現される。これにより、メモリアクセス要求の発行状態が、自然に図３（ｂ）に例示したように、常時多様な種類のバンクのメモリアクセス要求が要求格納部１や２に格納される高性能状態にすることができ、バンクアクセスの均等化を図ることが可能となる。いったん高性能時の状態に落ち着けば、ストリームアクセスなどにおいて、ＣＰＵコア部１００間でもバンクのフェーズがずれた状態を維持しながら均等に処理される。
【０１２４】
上述の各実施形態の説明では、主記憶部に対するフェッチアクセス動作を中心に説明した。ライトバック制御を導入したキャッシュ制御においては、主記憶部に対するストア要求は、ソフトウエアでストアが発生し書き換えられたブロックが、新規要求によってリプレースされた場合に発生する。つまり要求格納部１にフェッチ要求が格納されると、そのフェッチ要求が確保したキャッシュのインデックス、ウエイに対してリプレース処理が行われる。リプレースされるブロックのバンクは要求格納部１の要求と同一のバンクである。すなわち、主記憶部のフェッチ要求に対するバンクの均等化が実現されると必然的に同時にストア要求に対するバンクの均等化も同時に実現されるので、ストア要求に対するバンクの均等化処理を明示的に導入する必要はない。つまり、上記各実施形態の構成により、十分な性能のバンク均等化処理を実現することが可能になる。
【図１Ａ】
2012172683.tif 000003
【図１Ｂ】
2012172683.tif 000004
【図１Ｃ】
2012172683.tif 000005
【図１Ｄ】
2012172683.tif 000006
【図２】
2012172683.tif 000007
【図３】
2012172683.tif 000008
【図４Ａ】
2012172683.tif 000009
【図４Ｂ】
2012172683.tif 000010
【図５Ａ】
2012172683.tif 000011
【図５Ｂ】
2012172683.tif 000012
【図５Ｃ】
2012172683.tif 000013
【図５Ｄ】
2012172683.tif 000014
【図６】
2012172683.tif 000015
【図７Ａ】
2012172683.tif 000016
【図７Ｂ】
2012172683.tif 000017
【手続補正書】
【提出日】平成25年12月5日(2013.12.5)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のバンクを有する記憶装置に接続される演算処理装置において、
メモリアクセス要求を発行する命令処理部と、
データを保持するキャッシュラインを複数有するキャッシュメモリと、
前記命令処理部が発行したメモリアクセス要求を投入する第１の要求保持部と、
キャッシュミスが発生したメモリアクセス要求を保持する第２の要求保持部と、
前記第１の要求保持部から投入されたメモリアクセス要求に基づき前記キャッシュメモリを検索し、キャッシュミスが発生したメモリアクセス要求を前記第２の要求保持部に保持するキャッシュ制御部と、
前記第２の要求保持部に保持されたメモリアクセス要求のうち、処理が中断されなかったメモリアクセス要求を保持する第３の要求保持部と、
前記第２の要求保持部と前記第３の要求保持部とに保持されたメモリアクセス要求に基づき前記記憶装置に対するメモリアクセス要求の数をバンク毎に計数し、計数したいずれかのバンクのメモリアクセス要求の数が所定値を超えた場合、前記キャッシュ制御部に前記第１の要求保持部に保持された、メモリアクセス要求の数が所定値を超えたバンクに対するメモリアクセス要求の処理の中断を指示するアクセス計数部と、
前記第３の要求保持部に保持されたメモリアクセス要求を前記記憶装置に発行する主記憶制御部と、
を有することを特徴とする演算処理装置。
【請求項２】
前記アクセス計数部は、さらに、
計数したメモリアクセス要求の数が所定値を超えたバンクに対するメモリアクセス要求の待機通知を前記第１の要求保持部に出力し、
前記第１の要求保持部は、
前記アクセス計数部が出力したメモリアクセス要求の待機通知に基づき、対応するバンクへのメモリアクセス要求の前記キャッシュ制御部への投入を抑止する、
ことを特徴とする請求項１記載の演算処理装置。
【請求項３】
前記アクセス計数部は、
前記キャッシュ制御部が、前記第２の要求保持部に前記メモリアクセス要求を保持した場合、前記メモリアクセス要求に対応するバンクの計数値を増分し、
前記主記憶制御部が、前記第３の要求保持部に保持されたメモリアクセス要求を前記主記憶装置に発行した場合、前記メモリアクセス要求に対応するバンクの計数値を減分する、
ことを特徴とする請求項１記載の演算処理装置。
【請求項４】
複数のバンクを有する主記憶装置に接続される演算処理装置において、
メモリアクセス要求を発行する命令処理部と、
データを保持するキャッシュラインを複数有するキャッシュメモリと、
前記命令処理部が発行したメモリアクセス要求を投入する第１の要求保持部と、
キャッシュミスが発生したメモリアクセス要求を保持する第２の要求保持部と、
前記第１の要求保持部から投入されたメモリアクセス要求に基づき前記キャッシュメモリを検索し、キャッシュミスが発生したメモリアクセス要求を前記第２の要求保持部に保持するキャッシュ制御部と、
前記第２の要求保持部に保持されたメモリアクセス要求に基づき前記主記憶装置に対するメモリアクセス要求の数をバンク毎に計数するとともに、計数したいずれかのメモリアクセス要求の数が所定値を超えた場合、前記キャッシュ制御部に前記第１の要求保持部に保持されたメモリアクセス要求の処理を中断させるアクセス計数部と、
前記第２の要求保持部に保持されたメモリアクセス要求を前記主記憶装置に発行する主記憶制御部と、
を有することを特徴とする演算処理装置。
【請求項５】
前記アクセス計数部は、さらに、
計数したメモリアクセス要求の数が所定値を超えたバンクに対するメモリアクセス要求の待機通知を前記第１の要求保持部に出力し、
前記第１の要求保持部は、
前記アクセス計数部が出力したメモリアクセス要求の待機通知に基づき、対応するバンクへのメモリアクセス要求の前記キャッシュ制御部への投入を抑止する、
ことを特徴とする請求項４記載の演算処理装置。
【請求項６】
前記アクセス計数部は、
前記キャッシュ制御部が、前記第２の要求保持部に前記メモリアクセス要求を保持した場合、前記メモリアクセス要求に対応するバンクの計数値をプラス１し、
前記主記憶制御部が、前記第２の要求保持部に保持されたメモリアクセス要求を前記主記憶装置に発行した場合、前記メモリアクセス要求に対応するバンクの計数値を減分する、
ことを特徴とする請求項４記載の演算処理装置。
【請求項７】
複数のバンクを有する主記憶装置に接続されるとともに、データを保持するキャッシュラインを複数有するキャッシュメモリを有する演算処理装置の制御方法において、
前記演算処理装置が有する命令処理部が、メモリアクセス要求を発行し、
前記演算処理装置が有するキャッシュ制御部が、前記命令処理部が発行したメモリアクセス要求を、前記演算処理装置が有する第１の要求保持部に保持し、
前記キャッシュ制御部が、前記第１の要求保持部から投入されたメモリアクセス要求に基づき前記キャッシュメモリを検索し、
前記キャッシュ制御部が、キャッシュミスが発生したメモリアクセス要求を、前記演算処理装置が有する第２の要求保持部に保持し、
前記キャッシュ制御部が、前記第２の要求保持部に保持されたメモリアクセス要求を、前記演算処理装置が有する第３の要求保持部に保持し、
前記演算処理装置が有するアクセス計数部が、前記第２の要求保持部と前記第３の要求保持部に保持されたメモリアクセス要求に基づき前記主記憶装置に対するメモリアクセス要求の数をバンク毎に計数するとともに、計数したいずれかのメモリアクセス要求の数が所定値を超えた場合、前記キャッシュ制御部に前記第１の要求保持部に保持されたメモリアクセス要求の処理を中断させ、
前記キャッシュ制御部が、前記第３の要求保持部に保持されたメモリアクセス要求を前記主記憶装置に発行する、
ことを特徴とする演算処理装置の制御方法。
【請求項８】
複数のバンクを有する主記憶装置と、前記主記憶装置に接続される演算処理装置とを有する情報処理装置の制御方法において、
前記演算処理装置が有する命令処理部が、メモリアクセス要求を発行し、
前記演算処理装置が有するキャッシュ制御部が、前記命令処理部が発行したメモリアクセス要求を前記演算処理装置が有する第１の要求保持部に保持し、
前記キャッシュ制御部が、前記第１の要求保持部から投入されたメモリアクセス要求に基づき、前記キャッシュメモリを検索し、
前記キャッシュ制御部が、キャッシュミスが発生したメモリアクセス要求を、前記演算処理装置が有する第２の要求保持部に保持し、
前記演算処理装置が有するアクセス計数部が、前記第２の要求保持部と保持されたメモリアクセス要求に基づき前記主記憶装置に対するメモリアクセス要求の数をバンク毎に計数するとともに、計数したいずれかのメモリアクセス要求の数が所定値を超えた場合、前記キャッシュ制御部に前記第１の要求保持部に保持されたメモリアクセス要求の処理を中断させ、
前記キャッシュ制御部が、前記アクセス中断指示に基づき、前記第１の要求保持部に保持されたメモリアクセス要求の処理を中断し、
前記キャッシュ制御部が、前記第２の要求保持部に保持されたメモリアクセス要求を前記主記憶装置に発行する、
ことを特徴とする情報処理装置の制御方法。
【国際調査報告】
2012172683.tif 000018
2012172683.tif 000019
2012172683.tif 000020