JP2011150691A - 演算処理装置、情報処理装置及び制御方法 - Google Patents

演算処理装置、情報処理装置及び制御方法 Download PDF

Info

Publication number
JP2011150691A
JP2011150691A JP2010264381A JP2010264381A JP2011150691A JP 2011150691 A JP2011150691 A JP 2011150691A JP 2010264381 A JP2010264381 A JP 2010264381A JP 2010264381 A JP2010264381 A JP 2010264381A JP 2011150691 A JP2011150691 A JP 2011150691A
Authority
JP
Japan
Prior art keywords
unit
information
cache
hit
arithmetic processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2010264381A
Other languages
English (en)
Other versions
JP5625809B2 (ja
Inventor
Iwao Yamazaki
巌 山崎
Hiroyuki Imai
裕之 今井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2010264381A priority Critical patent/JP5625809B2/ja
Priority to EP10196437.7A priority patent/EP2339453B1/en
Priority to US12/929,021 priority patent/US8707014B2/en
Publication of JP2011150691A publication Critical patent/JP2011150691A/ja
Application granted granted Critical
Publication of JP5625809B2 publication Critical patent/JP5625809B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

【課題】専用転送バスを設けずに、キャッシュヒットチェックの結果を容易に読み出すことを課題とする。
【解決手段】演算処理装置10は、キャッシュの状態をチェックするキャッシュヒットチェックを実行するか否かを示すデバッグフラグビット31aを有する。そして、キャッシュヒットチェックを実行する旨が記憶されており、かつ、プリフェッチ命令を受信した場合に、プリフェッチ命令を拡張してキャッシュヒットチェック処理を実行する。そして、演算処理装置10は、キャッシュヒットチェックが実行された場合に、キャッシュヒットチェックの結果をL1ヒット情報レジスタ32に記憶し、ヒット情報レジスタ23、32に記憶されたキャッシュヒットチェックの結果を読み出すように制御する。
【選択図】図1

Description

本発明は、演算処理装置、情報処理装置及び制御方法に関する。
従来、演算処理装置であるCPU(Central Processing Unit)に内蔵され、当該CPUに内蔵される演算部としてのコア部とメインメモリとの間にあって、メインメモリよりも高速なキャッシュメモリを有する情報処理装置であるサーバが知られている。このようなキャッシュメモリは、アクセス頻度の高いデータや命令を記憶する。演算処理装置は、メインメモリよりも高速なキャッシュメモリからデータや命令を読み込むことで、メモリアクセスの時間を短縮でき、情報処理装置の性能が向上する。
このようなキャッシュメモリの一つとして、キャッシュメモリを複数のセクタと呼ばれる部分に分けたセクタキャッシュが知られている。かかるセクタキャッシュでは、キャッシュメモリがセクタごとに分割され、一方のセクタに繰り返し利用されるデータを記憶させ、他方のセクタには利用される頻度がより低いデータを記憶させる。
また、このようなセクタキャッシュのデバッグを行う場合、任意のメモリアドレスのデータがキャッシュメモリに記憶させているかどうかを確認するキャッシュヒットチェック機能が利用されている。例えば、キャッシュヒットチェック機能の用途として、コンパイラのデバッグや、ハードウェアのデバッグなどがある。
このようなキャッシュヒットチェックの結果を読み出す方法として、キャッシュメモリの読み出しバスを利用してキャッシュヒットチェック結果を読み出す方法と、専用転送バスを利用してキャッシュヒットチェック結果を読み出す方法が利用されている。
ここで、図10の例を用いて、キャッシュヒットチェックの結果を読み出すパイプライン動作を実行するキャッシュユニットの構成を説明する。図10に示すように、キャッシュユニットは、キャッシュメモリ、命令セット記憶部、命令制御部、プライオリティ論理回路、キャッシュアクセス回路、タグマッチ回路、LRU(Least−Recently−Used)回路、セクタ情報決定回路、バッファ、外部インタフェースを有する。
命令セット記憶部は、プリフェッチ命令コードやキャッシュヒットチェック命令コードなどの命令セットを記憶する。命令制御部は、命令セット記憶部からキャッシュヒットチェック命令コードを読み出して、読み出された命令をプライオリティ論理回路に発行する。プライオリティ論理回路は、入力された命令の処理の優先順位を決定する。キャッシュアクセス回路は、アクセス対象のアクセスアドレスを用いて、キャッシュメモリにアクセスし、タグ、LRU情報を読み出す。
タグマッチ回路は、キャッシュアクセス回路によって読み出されたタグとアクセス対象のアクセスアドレスのタグとを比較する。セクタ情報決定回路は、キャッシュヒットしたと判定した場合には、セクタを0にするか1にするか決定する。LRU回路は各キャッシュWAYの使用頻度と使用セクタを記憶する。バッファは、キャッシュヒットチェック結果を記憶する。バッファに格納されたキャッシュヒットチェック結果は、外部インタフェースに転送される。
ここで、図11を用いてキャッシュメモリの読み出しバスを利用してキャッシュヒットチェック結果を読み出す方法について説明する。図11に示すように、Hitビット、hit_wayビット、sector0/1_numビット、sectorビットをパイプライン動作でバスから読み出す。ここで、パイプライン動作とは、プライオリティ論理回路が実行する命令の優先順位を決める「P」、キャッシュメモリにアクセスしてタグを読み出す「T」、タグのマッチングを行う「M」、データを選択してバッファに格納する「B」、データの転送を行う「R」の順に行う動作のことをいう。
図11に示すように、タグのマッチング処理を行う「M」において、タグマッチの結果、キャッシュヒットした場合には、Hitビットを「1」に決定し、キャッシュヒットしたウェイ番号であるhit_wayビットが決定する。そして、データを選択してバッファに格納する「B」において、Hitビットおよびhit_wayビットのデータ選択が有効であるが、キャッシュヒット情報のセクタ情報(図11の例では、sector0/1_numビット、sectorビット)が参照可能になるタイミングがデータ選択サイクルに対して1サイクル遅いため、パイプライン動作を2回行っている。
また、図12を用いて、専用転送バスを利用してキャッシュヒットチェック結果を読み出す方法について説明する。図12に示すように、専用転送バスを用いてキャッシュヒットチェック結果を転送するので、データ選択のタイミングを考慮することなく、1回のパイプライン動作でキャッシュヒットチェック結果を読み出す。
特開平8−335177号公報
しかしながら、上記のキャッシュメモリの読み出しバスを利用してキャッシュヒットチェック結果を読み出す方法では、2回続けてパイプライン動作を行う必要があり、キャッシュヒットチェック結果の読み出し処理が複雑になるという課題があった。また、上記の専用転送バスを利用してキャッシュヒットチェック結果を読み出す技術では、専用転送バスを設ける必要があるので、コストが高くなるという課題があった。
開示の技術は、上記に鑑みてなされたものであって、専用転送バスを設けるコストを削減し、キャッシュヒットチェックの結果を容易に読み出すことを目的とする。
また、本願の開示する演算処理装置は、一つの態様において、記憶装置が記憶するデータの一部を保持する第1のキャッシュメモリ部と、アドレスを保持するアドレスレジスタ部と、フラグ情報を格納するフラグレジスタ部と、記憶装置におけるアドレスに記憶されるデータを取得するプリフェッチ命令をデコードするデコード部とを有する。また、演算処理装置は、フラグ情報が保持されている場合、デコードの結果に基づいて、第1のキャッシュメモリ部をアドレスで検索することにより、記憶装置におけるアドレスに記憶されるデータが、第1のキャッシュメモリに保持されている旨の第1のキャッシュヒット判定を行うキャッシュヒットチェック命令を、プリフェッチ命令の代わりに実行する命令実行部を有する。
本願の開示する装置の一つの態様によれば、専用転送バスを設けるコストを削減し、キャッシュヒットチェックの結果を容易に読み出すという効果を奏する。
図1は、実施例1に係る演算処理装置の構成を示すブロック図である。 図2は、セクタキャッシュでのセクタ0/1の配置例を示す図である。 図3は、L1ヒット情報レジスタのフォーマットの一例を示す図である。 図4は、L2ヒット情報レジスタのフォーマットの一例を示す図である。 図5は、Readコマンドによる読み出し処理を説明するタイムチャートである。 図6は、実施例1に係る演算処理装置の処理手順を説明するフローチャートである。 図7は、実施例2に係る演算処理装置の構成を示すブロック図である。 図8は、実施例2に係る演算処理装置の処理手順を説明するフローチャートである。 図9は、サーバ構成を示す図である。 図10は、キャッシュヒットチェックの結果を読み出すパイプライン動作を実行するL1キャッシュユニットの構成を示すブロック図である。 図11は、キャッシュヒットチェック結果の読み出しにキャッシュメモリの読み出しバスを利用した場合のタイムチャートである。 図12は、キャッシュヒットチェック結果の読み出しに専用バスを利用した場合のタイムチャートである。
以下に添付図面を参照して、この発明に係る演算処理装置、情報処理装置及び制御方法の実施例を詳細に説明する。
以下の実施例1では、実施例1に係る演算処理装置の構成および処理の流れを順に説明し、最後に実施例1による効果を説明する。
[演算処理装置の構成]
図1を用いて、演算処理装置10の構成を説明する。図1は、実施例1に係る演算処理装置10の構成を示すブロック図である。同図に示すように、この演算処理装置10は、第1のキャッシュメモリであって2次キャッシュメモリとしてのL2(Level−2)キャッシュユニット20、第2のキャッシュメモリであって1次キャッシュメモリとしてのL1(Level−1)キャッシュユニット30、外部インタフェース40を有する。以下にこれらの各部の処理を説明する。
L1キャッシュユニット30は、命令セット記憶部33と、アーキテクチャレジスタコマンド記憶部34と、アーキテクチャレジスタ36と、アクセスアドレス記憶部37と、制御部38と、TAGマッチ回路39aと、セクタ情報決定回路39bと、キャッシュアクセス回路39cと、命令制御部3Aと、デコーダ3Bと、L1キャッシュメモリ30aと、読み出しカウンタ31bと、初期設定部31cと、LRU回路39dとを有する。なお、アクセスアドレス記憶部37は、特許請求の範囲の「アドレスレジスタ部」に対応し、デコーダ3Bは、特許請求の範囲に記載の「デコード部」に対応する。L1キャッシュメモリ30aは、特許請求の範囲の「第2のキャッシュメモリ部」に対応する。
命令セット記憶部33は、プリフェッチ命令コードやストア命令コードなどの命令セットを記憶しており、プリフェッチ命令コード記憶部33a、フェッチ命令コード記憶部33dを有する。プリフェッチ命令コード記憶部33aは、プリフェッチ命令コードを記憶し、発行されたプリフェッチ命令を蓄積するプリフェッチポート33bを有する。プリフェッチポート33bは、発行されたプリフェッチ命令を蓄積し、ストア命令がすべて完了しているか否かを示すロックビット33cを有する。ロックビット33cは、ストア命令が完了していない場合に「1」となり、ストア命令が完了すると「0」となるビットである。フェッチ命令コード記憶部33dは、フェッチ命令コードを記憶し、発行されたロード命令を蓄積するフェッチポート33eを有する。プリフェッチポート33bは、特許請求の範囲に記載の「プリフェッチ記憶部」に対応し、ロックビット33cは、特許請求の範囲に記載の「ロック情報部」に対応し、フェッチポート33eは、特許請求の範囲に記載の「フェッチ記憶部」に対応する。
命令制御部3Aは、命令セット記憶部33から命令コードを読み出し、プリフェッチ命令コードをデコーダ3Bに入力する。例えば、命令制御部3Aは、プリフェッチ命令コードをプリフェッチ命令コード記憶部33aから読み出して、デコーダ3Bに入力する。デコーダ3Bは、命令制御部3Aにより入力された命令コードをデコードして、制御部38に入力する。
アーキテクチャレジスタ36は、キャッシュ制御情報、アドレス制御情報、エラー情報、エラー時の割り込み情報などを記憶し、レジスタ31と、L1ヒット情報レジスタ32とを有する。具体的には、アーキテクチャレジスタ36は、キャッシュヒットチェックを開始する場合には、ストア命令が発行され、デコーダ3Bによってデコードされたストア命令によりデバッグフラグビット31aがセットされる。アーキテクチャレジスタ36は、キャッシュヒットチェックを終了する場合には、レジスタ31へのストア命令によりデバッグフラグビット31aを0に戻す。
L1キャッシュメモリ30aは、セクタごとに分割されたセクタキャッシュであり、一方のセクタに繰り返し利用されるデータを記憶させ、他方のセクタには利用される頻度がより低いデータを記憶させる。具体的には、図2に例示するように、L1キャッシュメモリ30aは、セクタ「0」とセクタ「1」に分割されており、繰り返し利用されるデータをセクタ「0」に、利用される頻度がより低いデータをセクタ「1」に記憶させる。例えば、図2の例を用いて説明すると、L1キャッシュメモリ30aは、index「0」のway「1」には、セクタ「0」に分類されたデータを記憶しており、index「0」のway「2」には、セクタ「1」に分類されたデータを記憶している。
L2キャッシュメモリ20aは、セクタごとに分割されたセクタキャッシュであり、一方のセクタに繰り返し利用されるデータを記憶させ、他方のセクタには利用される頻度がより低いデータを記憶させる。具体的には、L2キャッシュメモリ20aは、セクタ「0」とセクタ「1」に分割されており、繰り返し利用されるデータをセクタ「0」に、利用される頻度がより低いデータをセクタ「1」に記憶させる。なお、L2キャッシュメモリ20aは、特許請求の範囲に記載の「第1のキャッシュメモリ部」に対応する。
レジスタ31は、1ビットフラグのデバッグフラグビット31aを保持する。デバックフラグビット31aは、プリフェッチ命令を変更し、キャッシュヒットチェック命令として機能させるためのフラグ情報を格納する。デバッグフラグビット31aは、既存のストア命令がデコーダ3Bによってデコードされ、デコードされたストア命令によりセットされる。デバッグフラグビット31aが「1」のとき、プリフェッチ命令を変更し、キャッシュヒットチェック命令として機能させる。また、デバッグフラグビット31aが「0」のとき、プリフェッチ命令として機能させる。なお、デバッグフラグビット31aは、特許請求の範囲に記載の「フラグレジスタ部」に対応する。
L1ヒット情報レジスタ32は、L1キャッシュメモリ30aのキャッシュヒットチェック結果を保持するレジスタである。L1ヒット情報レジスタ32は、CPUが複数のコア部を有する場合にはコア部ごとに独立して設置される。ここで、図3を用いて、L1ヒット情報レジスタ32のフォーマットの一例を説明する。図3に示すように、L1ヒット情報レジスタ32は、64ビットのフォーマットでキャッシュヒットチェック結果を保持しており、15ビット目から12ビット目にsector1_numビット、11ビット目から8ビット目にsector0_numビット、7ビット目にL1 hitビット、6ビット目にsectorビット、3ビット目から0ビット目にhit_wayビットを保持する。なお、sector1_numビットおよびsector0_numビットは、特許請求の範囲に記載の「第4のセクタ情報レジスタ部」に対応し、sectorビットは、特許請求の範囲に記載の「第2のセクタ情報レジスタ部」に対応し、hit_wayビットは、特許請求の範囲に記載の「第2のヒットウェイ情報レジスタ部」に対応する。
L1 Hitビットは、キャッシュヒットチェックを行ってタグマッチした場合には、「1」となり、タグマッチしなかった場合には「0」となる。LRU回路からは、全キャッシュWAYのセクタ情報を読み出し、各セクタが保持するWAY数を数え上げる。その結果としてのsector0_numビットは、L1 Hitビットが「0」であるか「1」であるかにかかわりなく、プリフェッチ命令で指示されたメモリアドレスと同一インデクス上にあるセクタ0データのウェイ数が表示される。また、sector1_numビットは、L1 Hitビットが「0」であるか「1」であるかにかかわりなく、プリフェッチ命令で指示されたメモリアドレスと同一インデクス上にあるセクタ1データのウェイ数が表示される。
sectorビットは、L1 Hitビットが「1」のときプリフェッチ命令で指示されたメモリアドレスのセクタ情報が表示される。hit_wayビットは、L1 Hitビットが1のときプリフェッチ命令で指示されたメモリアドレスのキャッシュヒットウェイ番号が表示される。また、L1 Hitビットが「0」のときは、sectorビット、hit_wayビットのビットデータを無効な値(例えば、全ての値を「0」)が表示される。
また、L2ヒット情報レジスタ23も同様に、L2キャッシュメモリ20aのキャッシュヒットチェック結果を保持するレジスタであり、複数コアの場合にはコアごとに独立して設置される。L2ヒット情報レジスタ23は、L2キャッシュメモリ20aのキャッシュヒットチェック結果を退避させるレジスタである。ここで、図4を用いて、L2ヒット情報レジスタ23のフォーマットの一例を説明する。図4に示すように、L2ヒット情報レジスタ23は、64ビットのフォーマットでキャッシュヒットチェック結果を保持しており、15ビット目から12ビット目にsector1_numビット、11ビット目から8ビット目にsector0_numビット、7ビット目にL2 hitビット、6ビット目にsectorビット、3ビット目から0ビット目にhit_wayビットを保持する。なお、sector1_numビットおよびsector0_numビットは、特許請求の範囲に記載の「第3のセクタ情報レジスタ部」に対応し、sectorビットは、特許請求の範囲に記載の「第1のセクタ情報レジスタ部」に対応し、hit_wayビットは、特許請求の範囲に記載の「第1のヒットウェイ情報レジスタ部」に対応する。
L2 Hitビットは、キャッシュヒットチェックを行ってタグマッチした場合には、「1」となり、タグマッチしなかった場合には「0」となる。LRU回路からは、全キャッシュWAYのセクタ情報を読み出し、各セクタが保持するWAY数を数え上げる。その結果としてのsector0_numビットは、L2 Hitビットが「0」であるか「1」であるかにかかわりなく、プリフェッチ命令で指示されたメモリアドレスと同一インデクス上にあるセクタ0データのウェイ数が表示される。また、sector1_numビットは、L2 Hitビットが「0」であるか「1」であるかにかかわりなく、プリフェッチ命令で指示されたメモリアドレスと同一インデクス上にあるセクタ1データのウェイ数が表示される。
sectorビットは、L2 Hitビットが「1」のときプリフェッチ命令で指示されたメモリアドレスのセクタ情報が表示される。hit_wayビットは、L2 Hitビットが1のときプリフェッチ命令で指示されたメモリアドレスのキャッシュヒットウェイ番号が表示される。また、L2 Hitビットが「0」のときは、sectorビット、hit_wayビットのビットデータを無効な値(例えば、全ての値を「0」)が表示される。
読み出しカウンタ31bは、キャッシュヒットチェックを行う回数を記憶する。読み出しカウンタ31bは、後述する初期値設定部31cに初期値が設定される。そして、読み出しカウンタ31bは、キャッシュヒットチェックを行うたびに、カウンタの値がデクリメントされ、カウンタの値が「0」になった場合には、キャッシュヒットチェック処理が終了となる。初期値設定部31cは、読み出しカウンタ31bに初期値を設定する。なお、読出しカウンタ31bに設定する初期値には、キャッシュヒットチェックを行う回数として、任意の値を設定することができる。
アーキテクチャレジスタコマンド記憶部34は、アーキテクチャレジスタ36に対するReadコマンドやWriteコマンドを記憶しており、L1ヒット情報レジスタ32およびL2ヒット情報レジスタ23に記憶されたキャッシュヒットチェック結果を読み出すReadコマンドを記憶するReadコマンド記憶部34aを有する。Readコマンド記憶部34aは、L1ヒット情報レジスタ32およびL2ヒット情報レジスタ23からヒット情報を読み出すReadコマンドを記憶する。
ここで、図5を用いて、Readコマンドの実行について具体的に説明する。図5に示すように、演算処理装置10は、プリフェッチ、ストア、ロードを一つのパイプライン動作として行う。そして、演算処理装置10では、Readコマンドは、所定の条件が揃うまで実行を待つ仕組みとなっている。つまり、プログラム実行中にキャッシュヒットチェックを行ってキャッシュヒットチェックを実行する前に発行されたロード命令、ストア命令、プリフェッチ命令の何れかの命令が未完了の状態であった場合に、キャッシュヒットチェックが完了した後に未完了の命令が実行されてしまう。この結果、キャッシュヒットチェックの結果と実際のキャッシュ状態が異なってしまう。このため、演算処理装置10は、Readコマンドをセットすることで、ロード命令、ストア命令、プリフェッチ命令がすべて完了した後に、キャッシュヒットチェックを実行する。
具体的には、演算処理装置10は、図5に示すように、Readコマンドをセットした場合に、未実行のロード命令があれば、ロード命令をすべて完了させて未実行のロード命令がない状態にし、フェッチポートを空にする。また、演算処理装置10は、Readコマンドをセットした場合に、未実行のプリフェッチ命令があれば、プリフェッチ命令をすべて完了させて未実行のプリフェッチ命令がない状態にし、プリフェッチポートを空にする。そして、演算処理装置10は、未実行のストア命令がなくなった場合には、ロックビットを「0」にする。ここで、ロックビットとは、事前に発行されたストア命令が完了していない場合に「1」となり、事前に発行されたストア命令が完了すると「0」となるビットである。
そして、演算処理装置10は、ロックビットが「0」であり、かつ、すべてのプリフェッチポートおよびフェッチポートが空であることを実行条件とし、実行条件が揃った場合には、Readコマンドを実行する。ここで、すべてのプリフェッチポートおよびフェッチポートが空である状態とは、プリフェッチポートに未実行のプリフェッチ命令がない状態であり、フェッチポートに未実行のロード命令がない状態である。
つまり、ロックビットが0であることは、事前のストア命令がすべて完了していることを示し、先行する命令を保持するフェッチポートが空であることは、事前のロード命令がすべて完了していることを示している。また、プリフェッチポートが空であることは、事前のプリフェッチ命令がすべて完了していることを示している。このため、演算処理装置10は、ヒット情報の読み出しとして、Readコマンドをセットした後、Readコマンドをセットするより前に発行された命令の完了を待ち、Readコマンドをセットするより前に発行された命令が完了すると、ヒット情報レジスタを読み出す。このため、上記した実行条件が揃ってReadコマンドが実行される場合には、Readコマンドをセットするより前に発行された命令がすべて完了したことを保証する。
アクセスアドレス記憶部37は、プリフェッチ命令の対象となるプリフェッチ命令の命令アドレスを記憶し、制御部38の命令拡張判定回路38aに通知する。
制御部38は、命令拡張判定回路38aを有する。命令拡張判定回路38aは、プリフェッチ命令が発行されると、デバッグフラグビット31aが「1」であるか判定し、デバッグフラグビット31aが「1」である場合には、命令拡張によりプリフェッチ命令をキャッシュヒットチェック命令として機能させる。その後、デコーダ3Bにキャッシュヒットチェック命令を入力する。つまり、命令拡張判定回路38aがプリフェッチ命令の命令コードへの変更を行い、キャッシュヒットチェック命令のデコード論理を有するデコーダ3Bがデコードを行う。その後、キャッシュアクセス回路39cにメモリアドレスを入力する。また、命令拡張判定回路38aは、デバッグフラグビット31aが「0」である場合には、命令拡張せずに、プリフェッチ動作を行うように制御する。
キャッシュアクセス回路39cは、命令拡張判定回路38aからメモリアドレスが入力されると、入力されたメモリアドレスを用いてL1キャッシュメモリ30aにアクセスして、タグを読み出す。そして、キャッシュアクセス回路39cは、L1キャッシュメモリ30aから読み出されたタグをTAGマッチ回路39aに入力する。
TAGマッチ回路39aは、キャッシュアクセス回路39cからタグが入力されると、L1キャッシュメモリ30aに登録されているタグとアクセスアドレスのタグとを比較する。そして、TAGマッチ回路39aは、この比較の結果から、L1キャッシュメモリ30aにヒットしたか否かを示す検索結果をセクタ情報決定回路39bに入力する。
セクタ情報決定回路39bは、TAGマッチ回路39aによる検索結果からキャッシュヒットしたか否かを判定する。さらにLRU回路39dを読み出し、プリフェッチ命令で指示されたメモリアドレスと同一インデックス上にある全WAYのセクタ情報を取り出す。この結果、セクタ情報決定回路39bは、キャッシュヒットしたと判定した場合には、セクタを0にするか1にするか決定する。そして、キャッシュヒットしたと判定した場合には、セクタ情報決定回路39bは、L1ヒット情報レジスタ32のL1 Hitビットを「1」とし、sector0_numビットと、sector1_numビットと、sectorビットと、hit_wayビットを更新する。
具体的には、セクタ情報決定回路39bは、L1ヒット情報レジスタ32のL1 Hitビットが「1」である場合には、L1ヒット情報レジスタ32において、「sector0_num」にプリフェッチ命令で指示されたメモリアドレスと同一インデクス上にあるセクタ0データのウェイ数を記憶させ、「sector1_num」にプリフェッチ命令で指示されたメモリアドレスと同一インデクス上にあるセクタ0データのウェイ数を記憶させ、「sector」にセクタが0か1かを示すセクタ情報を記憶させ、「hit_way」にヒットしたウェイ番号を記憶させる。
また、セクタ情報決定回路39bは、キャッシュミスしたと判定した場合には、L1ヒット情報レジスタ32のL1 Hitビットを「0」とし、sector0_numビットと、sector1_numビットを更新する。具体的には、セクタ情報決定回路39bは、L1ヒット情報レジスタ32のL1 Hitビットが「0」である場合には、L1ヒット情報レジスタ32において、「sector0_num」にプリフェッチ命令で指示されたメモリアドレスと同一インデクス上にあるセクタ0データのウェイ数を記憶させ、「sector1_num」にプリフェッチ命令で指示されたメモリアドレスと同一インデクス上にあるセクタ0データのウェイ数を記憶する。「sector」と「hit_way」には、キャッシュミスしたときには有効な情報は記憶されない。つまり、L1ヒット情報レジスタ32では、L1 Hitビットが「1」の場合には、sector0_numビットと、sector1_numビットと、sectorビットと、hit_wayビットの値が有効となる。また、L1ヒット情報レジスタ32では、L1 Hitビットが「0」の場合には、sector0_numビットと、sector1_numビットが有効となり、sectorビットとhit_wayビットの値が無効となる。また、L1キャッシュメモリ30aのヒットチェックと同時に、L2キャッシュメモリ20aのヒットチェックも行われる。
また、演算処理装置10では、命令コードを追加しないため、命令セット記憶部33の変更を必要とせず、プリフェッチ命令コードを拡張してキャッシュヒットチェック命令とすることで制御部38の制御変更だけで済む。
L2キャッシュユニット20は、TAGマッチ回路21、セクタ情報決定回路22、LRU回路22a、L2ヒット情報レジスタ23、キャッシュアクセス回路24、アーキテクチャレジスタ27、L2キャッシュメモリ20aを有する。
キャッシュアクセス回路24は、命令拡張判定回路38aからメモリアドレスが入力されると、入力されたメモリアドレスを用いてL2キャッシュメモリ20aにアクセスして、タグを読み出す。そして、キャッシュアクセス回路24は、L2キャッシュメモリ20aから読み出されたタグをTAGマッチ回路21に入力する。
TAGマッチ回路21は、キャッシュアクセス回路24からタグが入力されると、L2キャッシュメモリ20aに登録されているタグとアクセスアドレスのタグとを比較する。そして、TAGマッチ回路21は、この比較の結果から、L2キャッシュメモリ20aにヒットしたか否かを示す検索結果をセクタ情報決定回路22に入力する。
セクタ情報決定回路22は、TAGマッチ回路21による検索結果からキャッシュヒットしたか否かを判定する。さらにLRU回路22aを読み出し、プリフェッチ命令で指示されたメモリアドレスと同一インデックス上にある全WAYのセクタ情報を取り出す。この結果、セクタ情報決定回路22は、キャッシュヒットしたと判定した場合には、セクタを0にするか1にするか決定する。そして、キャッシュヒットしたと判定した場合には、セクタ情報決定回路22は、L2ヒット情報レジスタ23のL2 Hitビットを「1」とし、sector0_numビットと、sector1_numビットと、sectorビットと、hit_wayビットを更新する。また、セクタ情報決定回路22は、キャッシュミスしたと判定した場合には、L2ヒット情報レジスタ23のL2 Hitビットを「0」とし、sector0_numビットと、sector1_numビットを更新し、sectorビットとhit_wayビットの値を無効とする。
アーキテクチャレジスタ27は、各種処理に必要なデータを記憶するが、特に、L2ヒット情報レジスタ23を有する。L2ヒット情報レジスタ23は、L2キャッシュメモリ20aのヒット情報を退避する場合に用いられるレジスタである。L2ヒット情報レジスタ23のフォーマットは、L1ヒット情報レジスタ32と同様に、L2 Hitビットが「0」であるか「1」であるかにかかわりなく、プリフェッチ命令で指示されたメモリアドレスと同一インデクス上にあるセクタ0データのウェイ数が表示されるsector0_numビットを保持する。また、L2ヒット情報レジスタ23は、L2 Hitビットが「0」であるか「1」であるかにかかわりなく、プリフェッチ命令で指示されたメモリアドレスと同一インデクス上にあるセクタ1データのウェイ数が表示されるsector1_numビットを保持する。
L2 Hitビットが「1」のときプリフェッチ命令で指示されたメモリアドレスのセクタ情報が表示されるsectorビットと、L2 Hitビットが「1」のときにおけるL2キャッシュメモリ20aにおいてヒットしたウェイのウェイ番号が表示されるhit_wayビットを保持する。
このように、演算処理装置10では、ヒット情報レジスタ32、23へのストア命令と、ヒット情報レジスタ32、23からのロード命令との2命令に分けてキャッシュヒットチェックを行っている。具体的には、演算処理装置10では、まずL1キャッシュメモリ30aおよびL2キャッシュメモリ20a両方のキャッシュヒットチェックを行い、キャッシュヒットチェック結果をL1ヒット情報レジスタ32およびL2ヒット情報レジスタ23に書き込む。次に、演算処理装置10は、L1ヒット情報レジスタ32およびL2ヒット情報レジスタ23から読み出す。
例えば、演算処理装置10は、L2キャッシュメモリ20aにヒットしたがL1キャッシュメモリ30aにミスした場合には、L1ヒット情報レジスタ32に記憶されるキャッシュヒットチェック結果として、ヒットビットを「0」とし、「sector0_num」にプリフェッチ命令で指示されたメモリアドレスと同一インデクス上にあるセクタ0データのウェイ数を記憶させ、「sector1_num」にプリフェッチ命令で指示されたメモリアドレスと同一インデクス上にあるセクタ1データのウェイ数を記憶させ、「sector」、「hit_way」のビットデータを無効な値(例えば、全ての値を「0」)とする。また、L2ヒット情報レジスタ23に記憶されるキャッシュヒットチェック結果として、ヒットビットを「1」とし、「sector0_num」にプリフェッチ命令で指示されたメモリアドレスと同一インデクス上にあるセクタ0データのウェイ数を記憶させ、「sector1_num」にプリフェッチ命令で指示されたメモリアドレスと同一インデクス上にあるセクタ1データのウェイ数を記憶させ、「sector」にセクタが0か1かを示すセクタ情報を記憶させ、「hit_way」にヒットしたウェイ番号を記憶させる。
つまり、演算処理装置10は、キャッシュヒット情報を待避するL1ヒット情報レジスタ32およびL2ヒット情報レジスタ23がアーキテクチャレジスタ36、27に追加されているため、既存のストア命令とロード命令でL1ヒット情報レジスタ32およびL2ヒット情報レジスタ23に読み書きすることができ、専用のコマンドを用意する必要がない。
また、演算処理装置10は、キャッシュメモリがキャッシュヒットするかキャッシュミスするかの状態に関りなく、1回のキャッシュヒットチェックを行うごとに、L1キャッシュメモリ30aおよびL2キャッシュメモリ20a両方の64ビットのキャッシュヒットチェック結果(図3、図4参照)をヒット情報レジスタへ待避させて、キャッシュヒットチェック結果を読み出せる。なお、キャッシュヒットチェックの使用用途には、ハードウェアのデバッグが一例としてあげられ、プログラム実行完了後のキャッシュ状態を調べることなどに有効である。
[演算処理装置による処理]
次に、図6を用いて、実施例1に係る演算処理装置10による処理を説明する。図6は、実施例1に係る演算処理装置10の処理動作を示すフローチャートである。
図6に示すように、演算処理装置10は、初期値設定部31cが読み出しカウンタ31bに初期値を設定する(ステップS101)。そして、演算処理装置10は、アーキテクチャレジスタ36の内容に対するストア命令により、デバッグフラグビット31aを1とし(ステップS102)、Readコマンドを発行してL2ヒット情報レジスタ23から読み出す(ステップS103)。そして、演算処理装置10は、デバッグフラグビット31aを1とした状態でプリフェッチ命令を発行すると、命令拡張によりプリフェッチ命令がキャッシュヒットチェック命令として機能し、プリフェッチ命令アドレスでL1キャッシュメモリ30aの検索を行う(ステップS104)。
そして、演算処理装置10は、検索の結果、キャッシュヒットしたか判定し(ステップS105)、キャッシュヒットした場合には(ステップS105肯定)、L1ヒット情報レジスタ32のL1 Hitビットを「1」とし、sector0_numビットと、sector1_numビットと、Sectorビットと、hit_wayビットを更新する(ステップS106)。また、演算処理装置10は、キャッシュミスしたと判定した場合には(ステップS105否定)、L1ヒット情報レジスタ32のL1 Hitビットを「0」とし、sector0_numビットと、sector1_numビットを更新し、Sectorビットと、hit_wayビットを無効とする(ステップS107)。
続いて、演算処理装置10は、プリフェッチ命令アドレスでL2キャッシュメモリ20aの検索を行う(ステップS108)。そして、演算処理装置10は、検索の結果、キャッシュヒットしたか否かを判定し(ステップS109)、キャッシュヒットした場合には(ステップS109肯定)、L2ヒット情報レジスタ23のL2 Hitビットを「1」とし、sector0_numビットと、sector1_numビットと、Sectorビットと、hit_wayビットを更新する(ステップS110)。また、演算処理装置10は、キャッシュミスしたと判定した場合には(ステップS109否定)、L2ヒット情報レジスタ23のL2 Hitビットを「0」とし、sector0_numビットと、sector1_numビットを更新し、Sectorビットとhit_wayビットを無効とする(ステップS111)。
その後、演算処理装置10は、Readコマンドを発行し、ヒット情報レジスタの値を読み出し(ステップS112)、読み出しカウンタ31bの値が「0」であるか判定する(ステップS113)。その結果、演算処理装置10は、読み出しカウンタ31bの値が「0」でない場合には(ステップS113否定)、読み出しカウンタ31bの値をデクリメントして(ステップS115)、ステップS104に戻る。また、演算処理装置10は、今回取得しようとした全キャッシュラインのキャッシュのヒット情報の取得が完了した場合には(ステップS113肯定)、デバッグフラグビット31aを「0」に戻して(ステップS114)、処理を終了する。
[実施例1の効果]
上述してきたように、演算処理装置10は、キャッシュの状態をチェックするキャッシュヒットチェックを実行するか否かを示すデバッグフラグビット31aを有する。そして、キャッシュヒットチェックを実行する旨が記憶されており、かつ、プリフェッチ命令を受信した場合に、プリフェッチ命令を拡張してキャッシュヒットチェック処理を実行する。そして、演算処理装置10は、キャッシュヒットチェックが実行された場合に、キャッシュヒットチェックの結果をL1ヒット情報レジスタ32およびL2ヒット情報レジスタ23に記憶し、ヒット情報レジスタ32、23に記憶されたキャッシュヒットチェックの結果を読み出すように制御する。このため、演算処理装置10は、セクタ情報決定回路と外部インタフェースとの間に専用転送バスを設けることなく、キャッシュヒットチェックの結果を容易に読み出すことが可能である。さらに、キャッシュヒットの有無に関わらず、検査対象としたいキャッシュインデックスのセクタ使用状況を一度に取り出すことが可能である。
また、演算処理装置10は、キャッシュヒット情報レジスタをアーキテクチャレジスタ36として設けているから、既存のロード命令とストア命令で読み書き可能である。また、アーキテクチャレジスタ36を使わない場合は、直接キャッシュヒット情報を読み出すための専用パスを必要とするが、アーキテクチャレジスタ36を使っているので、セクタ情報決定回路と外部インタフェースとの間に専用転送バスを設ける必要がない。
また、実施例1によれば、演算処理装置10は、キャッシュヒットチェック処理を実行する旨が記憶されており、かつ、プリフェッチ命令を受信した場合に、プリフェッチ命令を拡張してキャッシュヒットチェック処理を実行する。このため、プリフェッチ命令コードを拡張し、キャッシュヒットチェック命令とすることで、デバッグ用の新しい命令コードを必要とすることなく、キャッシュヒットチェックを実行することが可能である。なお、プリフェッチ命令は、アーキテクチャレジスタ36の変更を要しない命令コードであるから、デバッグ命令との併用が容易に行える。
また、実施例1によれば、演算処理装置10は、キャッシュの事前の命令が完了した場合に、ヒット情報レジスタ32、23に記憶されたキャッシュヒットチェック処理の結果を読み出すように制御する。このため、演算処理装置10は、L1/2キャッシュの事前命令がすべて完了したことを保証してから、適切なキャッシュヒットチェック処理の結果を読み出すことが可能である。
また、実施例1によれば、演算処理装置10は、デバッグフラグビット31aがストア命令を受信した場合に、キャッシュヒットチェック処理を実行する旨を記憶する。そして、演算処理装置10は、ヒット情報レジスタ32、23がReadコマンドを受信した場合に、ヒット情報レジスタ32、23に記憶されたキャッシュヒットチェック処理の結果を読み出すように制御する。このため、ヒット情報レジスタ32、23から、既存のRead命令とストア命令で読み書き可能である。
ところで、キャッシュヒットチェックを行いたいメモリアドレスをセットするアドレスレジスタを用意し、プリフェッチ命令アドレスとメモリアドレスを比較して、一致したときにのみキャッシュヒットチェックを行うようにしてもよい。
そこで、以下の実施例2では、プリフェッチ命令アドレスとメモリアドレスを比較して、一致したときにのみキャッシュヒットチェックを行う場合として、図7および図8を用いて、説明する。図7は、実施例2に係る演算処理装置の構成を示すブロック図である。図8は、実施例2に係る演算処理装置の処理手順を説明するフローチャートである。
まず最初に、実施例2に係る演算処理装置10Aは、図1に示した演算処理装置10と比較して、アドレスレジスタ35およびアドレス一致チェック回路38bを新たに有する点が相違する。かかる演算処理装置10Aにおいて、アドレスレジスタ35は、キャッシュヒットチェックの対象となるメモリアドレスを記憶するレジスタである。
アドレス一致チェック回路38bは、プリフェッチ命令アドレスとメモリアドレスを比較して、一致したときにのみキャッシュヒットチェックを行う。具体的には、アドレス一致チェック回路38bは、アクセスアドレス記憶部37からプリフェッチ命令の対象となるプリフェッチ命令アドレスを取得し、アドレスレジスタ35からキャッシュヒットチェックを行う対象のメモリアドレスを読み出す。そして、アドレス一致チェック回路38bは、プリフェッチ命令アドレスとキャッシュヒットチェックを行いたいメモリアドレスとを比較して、一致した場合には、キャッシュヒットチェックを行う旨の命令を命令拡張判定回路38aに入力する。
次に、実施例2にかかる演算処理装置10Aの処理について説明する。実施例2の演算処理装置10Aは、図6に示した実施例1にかかる演算処理装置10の処理と比較して、プリフェッチ命令アドレスとメモリアドレスを比較して、一致したときにのみキャッシュヒットチェックを行う点が相違する。
すなわち、図8に示すように、演算処理装置10Aは、Readコマンドを発行してL2ヒット情報レジスタ23から読み出した後に(ステップS202)、アドレスレジスタ35にストア命令を発行し、キャッシュヒットチェックを行いたいメモリアドレスをセットする(ステップS203)。
そして、演算処理装置10Aは、アドレスレジスタ35に記憶されたメモリアドレスでキャッシュアクセスを行う(ステップS204)。そして、演算処理装置10Aは、アドレスレジスタ35のメモリアドレスとプリフェッチ命令のメモリアドレスが一致するか判定する(ステップS205)。この結果、演算処理装置10Aは、アドレスレジスタ35のメモリアドレスとプリフェッチ命令のメモリアドレスが一致する場合には、キャッシュヒットチェックを実施する。キャッシュヒットチェックを行ってキャッシュヒットした場合には(ステップS205肯定)、L1ヒット情報レジスタ32のL1 Hitビットを「1」とし、sector0_numビットと、sector1_numビットと、Sectorビットと、hit_wayビットを更新する(ステップS206)。
また、演算処理装置10Aは、キャッシュヒットチェックを行ってキャッシュヒットしなかった場合には(ステップS205否定)、L1ヒット情報レジスタ32のL1 Hitビットを「0」とし、sector0_numビットと、sector1_numビットを更新し、sectorビット、hit_wayビットのビットデータを無効な値(例えば、全ての値を「0」)とする(ステップS207)。
その後、演算処理装置10Aは、L1キャッシュメモリ30aのヒット、ミスにかかわらず、実施例1の演算処理装置10と同様に、L2キャッシュメモリ20aの検索も行い、L2ヒット情報レジスタ23の情報を更新する(ステップS208〜S212)。その後、演算処理装置10Aは、キャッシュのヒット情報の取得が完了したか判定する(ステップS213)。その結果、演算処理装置10Aは、キャッシュのヒット情報の取得が完了していない場合には(ステップS213否定)、ステップS203に戻る。また、演算処理装置10Aは、キャッシュのヒット情報の取得が完了した場合には(ステップS213肯定)、デバッグフラグビットを「0」に戻して(ステップS214)、処理を終了する。
このように実施例2によれば、演算処理装置10Aは、アドレスレジスタ35およびアドレス一致チェック回路38bを有する。アドレスレジスタ35は、キャッシュヒットのチェック対象であるチェック対象アドレスを記憶する。また、アドレス一致チェック回路38bは、チェック対象アドレスとプリフェッチ命令の対象となるプリフェッチ命令アドレスとが一致するか比較する。そして、演算処理装置10Aは、比較の結果、チェック対象アドレスとプリフェッチ命令アドレスとが一致する場合であり、かつ、デバッグフラグビットによってキャッシュヒットチェック処理を実行する旨が記憶されている場合に、プリフェッチ命令を拡張してキャッシュヒットチェック処理を実行する。このため、プログラム中のある1命令に着目して、プログラム動作中のキャッシュ状態の変化を知ることが可能となる。
さて、これまで本実施例について説明したが、本実施例は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では実施例3として本発明に含まれる他の実施例を説明する。
(1)システム構成等
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、命令拡張判定回路とアドレス一致チェック回路とを統合してもよい。
(2)サーバの構成
本実施例で開示する演算処理装置であるCPUが組み込まれたサーバの構成例を図9に示す。図9は、サーバの構成を示す図である。図9に示すように、サーバは、バックプレーン100に複数の切換装置としてのクロスバとしてXB101、XB102などを有し、クロスバそれぞれにシステムボードとしてSB110〜SB113と入出力システムボードIOSB150とを有する。なお、クロスバ、システムボード、入出力システムボードの数はあくまで例示であり、これに限定されるものではない。
バックプレーン100は、複数のコネクタ等を相互接続するバスを形成する回路基板である。XB101、XB102は、システムボードと入出力システムボードとの間でやり取りされるデータの経路を動的に選択するスイッチである。
また、XB101に接続されるSB110、SB111、SB112、SB113は、電子機器を構成する電子回路基板であり同様の構成を有するので、ここではSB110についてのみ説明する。SB110は、システムコントローラ(System Controller:SC)110aと、4台のCPUと、メモリアクセスコントローラ(Memory Access Controller:MAC)と、DIMM(Dual Inline Memory Module)とを有する。
SCは、SB110に搭載されるCPU110b〜110eとMAC110h、MAC110iとの間におけるデータ転送などの処理を制御し、SB110全体を制御する。CPU110b〜110eそれぞれは、SCを介して他のLSIと接続され、本実施の形態で開示したキャッシュメモリ制御方法を実現するプロセッサである。MAC110hは、DIMM110fとSCとの間に接続され、DIMM110fへのアクセスを制御する。MAC110iは、DIMM110gとSCとの間に接続され、DIMM110gへのアクセスを制御する。DIMM110fは、SCを介して他の電子機器と接続され、メモリを装着してメモリ増設などを行うメモリモジュールである。DIMM110gは、SCを介して他の電子機器と接続され、メモリを装着してメモリ増設などを行う主記憶装置(メインメモリ)としてのメモリモジュールである。
IOSB150は、XB101を介してSB110〜SB113それぞれと接続されるとともに、SCSI(Small Computer System Interface)、FC(Fibre Channel)、イーサネット(登録商標)などを介して入出力デバイスと接続される。IOSB150は、入出力デバイスとXB101との間におけるデータ転送などの処理を制御する。なお、SB110に搭載されるCPU、MAC、DIMMなどの電子機器はあくまで例示であり、電子機器の種類又は電子機器の数が図示したものに限定されるものではない。
10、10A 演算処理装置
20 L2キャッシュユニット
20a L2キャッシュメモリ
23 L2ヒット情報レジスタ
30 L1キャッシュユニット
30a L1キャッシュメモリ
31 レジスタ
32 L1ヒット情報レジスタ
33 命令セット記憶部
33a プリフェッチ命令コード
34 アーキテクチャレジスタコマンド記憶部
34a Readコマンド記憶部
35 アドレスレジスタ
27、36 アーキテクチャレジスタ
37 アクセスアドレス記憶部
38 制御部
38a 命令拡張判定回路
38b アドレス一致チェック回路
21、39a TAGマッチ回路
22、39b セクタ情報決定回路
24、39c キャッシュアクセス回路
22a、39d LRU回路

Claims (17)

  1. データを記憶する記憶装置に接続される演算処理装置において、
    前記記憶装置が記憶するデータの一部を保持する第1のキャッシュメモリ部と、
    アドレスを保持するアドレスレジスタ部と、
    フラグ情報を格納するフラグレジスタ部と、
    前記記憶装置における前記アドレスに記憶されるデータを取得するプリフェッチ命令をデコードするデコード部と、
    前記フラグ情報が保持されている場合、前記デコードの結果に基づいて、前記第1のキャッシュメモリ部を前記アドレスで検索することにより、前記記憶装置における前記アドレスに記憶されるデータが、前記第1のキャッシュメモリに保持されている旨の第1のキャッシュヒット判定を行うキャッシュヒットチェック命令を、前記プリフェッチ命令の代わりに実行する命令実行部を有することを特徴とする演算処理装置。
  2. 前記演算処理装置はさらに、
    前記第1のキャッシュメモリ部が保持するデータの一部を保持する第2のキャッシュメモリ部を有し、
    前記命令実行部はさらに、前記キャッシュヒットチェック命令を実行する場合、前記第2のキャッシュメモリ部を前記アドレスで検索することにより、前記記憶装置における前記アドレスに記憶されるデータが、前記第2のキャッシュメモリ部に保持されている旨の第2のキャッシュヒット判定を行うことを特徴とする請求項1記載の演算処理装置。
  3. 前記演算処理装置はさらに、
    前記キャッシュヒットチェック命令に先行する命令を保持するフェッチ記憶部と、
    前記プリフェッチ命令により取得されるデータを保持するプリフェッチ記憶部と、
    前記キャッシュヒットチェック命令に先行するストア命令が全て完了していない旨のロック情報を保持するロック情報部を有し、
    前記命令実行部は、前記フェッチ記憶部と前記プリフェッチ記憶部のいずれにも有効なデータが保持されておらず、且つ、前記ロック情報部が前記先行するストア命令が全て完了している旨を表す場合、前記キャッシュヒットチェック命令を実行することを特徴とする請求項1又は2記載の演算処理装置。
  4. 前記演算処理装置はさらに、
    前記命令実行部が、前記キャッシュヒットチェック命令を実行した場合、
    前記第1のキャッシュヒット判定の結果である第1のキャッシュヒット情報を格納する第1のヒット情報レジスタ部と、
    前記第2のキャッシュヒット判定の結果である第2のキャッシュヒット情報を格納する第2のヒット情報レジスタ部を有することを特徴とする請求項2又は3記載の演算処理装置。
  5. 前記演算処理装置はさらに、
    前記第1のキャッシュヒット情報が前記第1のヒット情報レジスタ部に格納されている場合、前記記憶装置における前記アドレスに記憶されるデータが保持されている前記第1のキャッシュメモリ部の第1のウェイ情報を表示する第1のヒットウェイ情報レジスタ部と、
    前記第2のキャッシュヒット情報が前記第2のヒット情報レジスタ部に格納されている場合、前記記憶装置における前記アドレスに記憶されるデータが保持されている前記第2のキャッシュメモリ部の第2のウェイ情報を表示する第2のヒットウェイ情報レジスタ部を有することを特徴とする請求項4記載の演算処理装置。
  6. 前記演算処理装置において、
    前記第1のキャッシュメモリ部は、前記第1のキャッシュメモリ部のメモリ領域が分割された第1のセクタを複数有し、
    前記第2のキャッシュメモリ部は、前記第2のキャッシュメモリ部のメモリ領域が分割された第2のセクタを複数有し、
    前記演算処理装置はさらに、
    前記第1のキャッシュヒット情報が前記第1のヒット情報レジスタ部に格納されている場合、前記記憶装置における前記アドレスに記憶されるデータが保持されている前記第1のキャッシュメモリ部の第1のセクタ情報を表示する第1のセクタ情報レジスタ部と、
    前記第2のキャッシュヒット情報が前記第2のヒット情報レジスタ部に格納されている場合、前記記憶装置における前記アドレスに記憶されるデータが保持されている前記第2のキャッシュメモリ部の第2のセクタ情報を表示する第2のセクタ情報レジスタ部を有することを特徴とする請求項4又は5記載の演算処理装置。
  7. 前記演算処理装置はさらに、
    前記第1のキャッシュヒット情報が前記第1のヒット情報レジスタ部に格納されているか否かに関わらず、前記第1のセクタ情報を表示する第3のセクタ情報レジスタ部と、
    前記第1のキャッシュヒット情報が前記第1のヒット情報レジスタ部に格納されているか否かに関わらず、前記第2のセクタ情報を表示する第4のセクタ情報レジスタ部を有することを特徴とする請求項6記載の演算処理装置。
  8. 前記演算処理装置において、
    前記フラグレジスタ部は、前記先行するストア命令のいずれかが実行されることにより前記フラグ情報が格納されることを特徴とする請求項3〜7のいずれか1項に記載の演算処理装置。
  9. データを記憶する記憶装置と、前記記憶装置に接続される演算処理装置を有する情報処理装置において、
    前記演算処理装置は、
    前記記憶装置が記憶するデータの一部を保持する第1のキャッシュメモリ部と、
    アドレスを保持するアドレスレジスタ部と、
    フラグ情報を格納するフラグレジスタ部と、
    前記記憶装置における前記アドレスに記憶されるデータを取得するプリフェッチ命令をデコードするデコード部と、
    前記フラグ情報が保持されている場合、前記デコードの結果に基づいて、前記第1のキャッシュメモリ部を前記アドレスで検索することにより、前記記憶装置における前記アドレスに記憶されるデータが、前記第1のキャッシュメモリに保持されている旨の第1のキャッシュヒット判定を行うキャッシュヒットチェック命令を、前記プリフェッチ命令の代わりに実行する命令実行部を有することを特徴とする情報処理装置。
  10. 前記情報処理装置において、
    前記演算処理装置はさらに、
    前記第1のキャッシュメモリ部が保持するデータの一部を保持する第2のキャッシュメモリ部を有し、
    前記命令実行部はさらに、前記キャッシュヒットチェック命令を実行する場合、前記第2のキャッシュメモリ部を前記アドレスで検索することにより、前記記憶装置における前記アドレスに記憶されるデータが、前記第2のキャッシュメモリ部に保持されている旨の第2のキャッシュヒット判定を行うことを特徴とする請求項9記載の情報処理装置。
  11. 前記情報処理装置において、
    前記演算処理装置はさらに、
    前記キャッシュヒットチェック命令に先行する命令を保持するフェッチ記憶部と、
    前記プリフェッチ命令により取得されるデータを保持するプリフェッチ記憶部と、
    前記キャッシュヒットチェック命令に先行するストア命令が全て完了していない旨のロック情報を保持するロック情報部を有し、
    前記命令実行部は、前記フェッチ記憶部と前記プリフェッチ記憶部のいずれにも有効なデータが保持されておらず、且つ、前記ロック情報部が前記先行するストア命令が全て完了している旨を表す場合に、前記キャッシュヒットチェック命令を実行することを特徴とすることを特徴とする請求項9又は10記載の情報処理装置。
  12. 前記情報処理装置において、
    前記演算処理装置はさらに、
    前記命令実行部が、前記キャッシュヒットチェック命令を実行した場合、
    前記第1のヒット判定の結果である第1のキャッシュヒット情報を格納する第1のキャッシュヒット情報レジスタ部と、
    前記第2のヒット判定の結果である第2のキャッシュヒット情報を格納する第2のキャッシュヒット情報レジスタ部を有することを特徴とする請求項10又は11記載の情報処理装置。
  13. 前記情報処理装置において、
    前記演算処理装置はさらに、
    前記第1のキャッシュヒット情報が前記第1のヒット情報レジスタ部に格納されている場合、前記記憶装置における前記アドレスに記憶されるデータが保持されている前記第1のキャッシュメモリ部の第1のウェイ情報を表示する第1のヒットウェイ情報レジスタ部と、
    前記第2のキャッシュヒット情報が前記第2のヒット情報レジスタ部に格納されている場合、前記記憶装置における前記アドレスに記憶されるデータが保持されている前記第2のキャッシュメモリ部の第2のウェイ情報を表示する第2のヒットウェイ情報レジスタ部を有することを特徴とする請求項12記載の情報処理装置。
  14. 前記情報処理装置の前記演算処理装置において、
    前記第1のキャッシュメモリ部は、前記第1のキャッシュメモリ部のメモリ領域が分割された第1のセクタを複数有し、
    前記第2のキャッシュメモリ部は、前記第2のキャッシュメモリ部のメモリ領域が分割された第2のセクタを複数有し、
    前記演算処理装置はさらに、
    前記第1のキャッシュヒット情報が前記第1のヒット情報レジスタ部に格納されている場合、前記記憶装置における前記アドレスに記憶されるデータが保持されている前記第1のキャッシュメモリ部の第1のセクタ情報を表示する第1のセクタ情報レジスタ部と、
    前記第2のキャッシュヒット情報が前記第2のヒット情報レジスタ部に格納されている場合、前記記憶装置における前記アドレスに記憶されるデータが保持されている前記第2のキャッシュメモリ部の第2のセクタ情報を表示する第2のセクタ情報レジスタ部を有することを特徴とする請求項12又は13記載の情報処理装置。
  15. 前記情報処理装置において、
    前記演算処理装置はさらに、
    前記第1のキャッシュヒット情報が前記第1のヒット情報レジスタ部に格納されているか否かに関わらず、前記第1のセクタ情報を表示する第3のセクタ情報レジスタ部と、
    前記第1のキャッシュヒット情報が前記第1のヒット情報レジスタ部に格納されているか否かに関わらず、前記第2のセクタ情報を表示する第4のセクタ情報レジスタ部を有することを特徴とする請求項14記載の情報処理装置。
  16. 前記情報処理装置の前記演算処理装置において、
    前記フラグレジスタ部は、前記先行するストア命令のいずれかが実行されることにより前記フラグ情報が格納されることを特徴とする請求項12〜15のいずれか1項に記載の情報処理装置。
  17. データを記憶する記憶装置に接続される演算処理装置の制御方法において、
    前記演算処理装置が有するデコード部が、前記記憶装置におけるアドレスレジスタ部が保持するアドレスに記憶されるデータを取得するプリフェッチ命令をデコードするステップと、
    前記演算処理装置が有する命令実行部が、前記フラグ情報が保持されている場合、前記デコードの結果に基づいて、前記記憶装置が記憶するデータの一部を保持する第1のキャッシュメモリ部を前記アドレスで検索することにより、前記記憶装置における前記アドレスに記憶されるデータが、前記第1のキャッシュメモリに保持されている旨の第1のキャッシュヒット判定を行うキャッシュヒットチェック命令を、前記プリフェッチ命令の代わりに実行するステップを有することを特徴とする演算処理装置の制御方法。
JP2010264381A 2009-12-25 2010-11-26 演算処理装置、情報処理装置及び制御方法 Expired - Fee Related JP5625809B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2010264381A JP5625809B2 (ja) 2009-12-25 2010-11-26 演算処理装置、情報処理装置及び制御方法
EP10196437.7A EP2339453B1 (en) 2009-12-25 2010-12-22 Arithmetic processing unit, information processing device, and control method
US12/929,021 US8707014B2 (en) 2009-12-25 2010-12-22 Arithmetic processing unit and control method for cache hit check instruction execution

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2009296263 2009-12-25
JP2009296263 2009-12-25
JP2010264381A JP5625809B2 (ja) 2009-12-25 2010-11-26 演算処理装置、情報処理装置及び制御方法

Publications (2)

Publication Number Publication Date
JP2011150691A true JP2011150691A (ja) 2011-08-04
JP5625809B2 JP5625809B2 (ja) 2014-11-19

Family

ID=43608134

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010264381A Expired - Fee Related JP5625809B2 (ja) 2009-12-25 2010-11-26 演算処理装置、情報処理装置及び制御方法

Country Status (3)

Country Link
US (1) US8707014B2 (ja)
EP (1) EP2339453B1 (ja)
JP (1) JP5625809B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105453041A (zh) * 2013-09-24 2016-03-30 英特尔公司 用于高速缓存占据确定和指令调度的方法和装置
US9824016B2 (en) 2015-01-14 2017-11-21 Fujitsu Limited Device and processing method

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9201806B2 (en) * 2013-01-04 2015-12-01 International Business Machines Corporation Anticipatorily loading a page of memory
US10169239B2 (en) 2016-07-20 2019-01-01 International Business Machines Corporation Managing a prefetch queue based on priority indications of prefetch requests
US10452395B2 (en) 2016-07-20 2019-10-22 International Business Machines Corporation Instruction to query cache residency
US10521350B2 (en) 2016-07-20 2019-12-31 International Business Machines Corporation Determining the effectiveness of prefetch instructions
US10621095B2 (en) 2016-07-20 2020-04-14 International Business Machines Corporation Processing data based on cache residency

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05204709A (ja) * 1992-01-24 1993-08-13 Mitsubishi Electric Corp プロセッサ
JPH08335177A (ja) * 1995-06-07 1996-12-17 Oki Electric Ind Co Ltd プロセッサ動作観察方法及び装置
JPH1011320A (ja) * 1996-06-19 1998-01-16 Matsushita Electric Ind Co Ltd 計算機等の処理装置におけるromプログラムモニタ装置
JP2002014868A (ja) * 2000-06-28 2002-01-18 Hitachi Ltd メモリ参照動作検出機構を有するマイクロプロセッサおよびコンパイル方法
US6499116B1 (en) * 1999-03-31 2002-12-24 International Business Machines Corp. Performance of data stream touch events
US20040268045A1 (en) * 2003-06-27 2004-12-30 Microsoft Corporation Cache residency test instruction
JP2005316842A (ja) * 2004-04-30 2005-11-10 Nec Corp キャッシュメモリおよびキャッシュ制御方法
JP2009020696A (ja) * 2007-07-11 2009-01-29 Toshiba Corp 情報処理装置及びシステム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6925535B2 (en) * 2001-08-29 2005-08-02 Hewlett-Packard Development Company, L.P. Program control flow conditioned on presence of requested data in cache memory
US7493452B2 (en) * 2006-08-18 2009-02-17 International Business Machines Corporation Method to efficiently prefetch and batch compiler-assisted software cache accesses
CN101325063B (zh) * 2007-06-12 2011-02-16 建兴电子科技股份有限公司 全息储存系统中寻找定位点位置的方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05204709A (ja) * 1992-01-24 1993-08-13 Mitsubishi Electric Corp プロセッサ
JPH08335177A (ja) * 1995-06-07 1996-12-17 Oki Electric Ind Co Ltd プロセッサ動作観察方法及び装置
JPH1011320A (ja) * 1996-06-19 1998-01-16 Matsushita Electric Ind Co Ltd 計算機等の処理装置におけるromプログラムモニタ装置
US6499116B1 (en) * 1999-03-31 2002-12-24 International Business Machines Corp. Performance of data stream touch events
JP2002014868A (ja) * 2000-06-28 2002-01-18 Hitachi Ltd メモリ参照動作検出機構を有するマイクロプロセッサおよびコンパイル方法
US20040268045A1 (en) * 2003-06-27 2004-12-30 Microsoft Corporation Cache residency test instruction
JP2005316842A (ja) * 2004-04-30 2005-11-10 Nec Corp キャッシュメモリおよびキャッシュ制御方法
JP2009020696A (ja) * 2007-07-11 2009-01-29 Toshiba Corp 情報処理装置及びシステム

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105453041A (zh) * 2013-09-24 2016-03-30 英特尔公司 用于高速缓存占据确定和指令调度的方法和装置
JP2016534476A (ja) * 2013-09-24 2016-11-04 インテル・コーポレーション キャッシュ占有決定および命令スケジューリングのための方法および装置
US10140210B2 (en) 2013-09-24 2018-11-27 Intel Corporation Method and apparatus for cache occupancy determination and instruction scheduling
CN105453041B (zh) * 2013-09-24 2019-10-01 英特尔公司 用于高速缓存占据确定和指令调度的方法和装置
US9824016B2 (en) 2015-01-14 2017-11-21 Fujitsu Limited Device and processing method

Also Published As

Publication number Publication date
EP2339453B1 (en) 2013-05-29
JP5625809B2 (ja) 2014-11-19
EP2339453A1 (en) 2011-06-29
US8707014B2 (en) 2014-04-22
US20110161631A1 (en) 2011-06-30

Similar Documents

Publication Publication Date Title
JP6507435B2 (ja) 命令エミュレーションプロセッサ、方法、およびシステム
JP5625809B2 (ja) 演算処理装置、情報処理装置及び制御方法
US5941981A (en) System for using a data history table to select among multiple data prefetch algorithms
US6401192B1 (en) Apparatus for software initiated prefetch and method therefor
US8370575B2 (en) Optimized software cache lookup for SIMD architectures
US7219185B2 (en) Apparatus and method for selecting instructions for execution based on bank prediction of a multi-bank cache
US6542990B1 (en) Array access boundary check by executing BNDCHK instruction with comparison specifiers
US8296518B2 (en) Arithmetic processing apparatus and method
KR20120070584A (ko) 데이터 스트림에 대한 저장 인식 프리페치
US11886882B2 (en) Pipelines for secure multithread execution
CN104978284A (zh) 处理器子程序高速缓冲存储器
GB2545061A (en) Cache sparing
JP2001195304A (ja) キャッシュ記憶装置
JP5630568B2 (ja) 演算処理装置、情報処理装置及び演算処理装置の制御方法
JP2011138213A (ja) 演算処理装置、情報処理装置及びキャッシュメモリ制御方法
US11327768B2 (en) Arithmetic processing apparatus and memory apparatus
CN112395000B (zh) 一种数据预加载方法和指令处理装置
CN114691551A (zh) 自动化转换后备缓冲器集合再平衡
CN114661358A (zh) 基于分支指令信息来访问分支目标缓冲器
CN113568663A (zh) 代码预取指令
TWI774474B (zh) 處理器電路以及資料處理方法
US11822652B1 (en) Prime and probe attack mitigation
CN115686624A (zh) 处理器电路以及数据处理方法
EP4034990A1 (en) Systems and methods for processing instructions having wide immediate operands
US20160124859A1 (en) Computing system with tiered fetch mechanism and method of operation thereof

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130904

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140430

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140507

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140707

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140902

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140915

R150 Certificate of patent or registration of utility model

Ref document number: 5625809

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees