JP2011138213A - 演算処理装置、情報処理装置及びキャッシュメモリ制御方法 - Google Patents

演算処理装置、情報処理装置及びキャッシュメモリ制御方法 Download PDF

Info

Publication number
JP2011138213A
JP2011138213A JP2009296262A JP2009296262A JP2011138213A JP 2011138213 A JP2011138213 A JP 2011138213A JP 2009296262 A JP2009296262 A JP 2009296262A JP 2009296262 A JP2009296262 A JP 2009296262A JP 2011138213 A JP2011138213 A JP 2011138213A
Authority
JP
Japan
Prior art keywords
address
instruction
unit
cache memory
data
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
JP2009296262A
Other languages
English (en)
Other versions
JP5482197B2 (ja
Inventor
Takahito Hirano
孝仁 平野
Iwao Yamazaki
巌 山崎
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 JP2009296262A priority Critical patent/JP5482197B2/ja
Priority to US12/929,027 priority patent/US8856478B2/en
Priority to EP20100196545 priority patent/EP2339472B1/en
Publication of JP2011138213A publication Critical patent/JP2011138213A/ja
Application granted granted Critical
Publication of JP5482197B2 publication Critical patent/JP5482197B2/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • G06F12/0859Overlapped cache accessing, e.g. pipeline with reload from main memory
    • 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/30043LOAD or STORE instructions; Clear instruction
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing

Landscapes

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

Abstract

【課題】主記憶装置の初期化または主記憶装置内において一のアドレスのデータを他のアドレスにデータコピーする処理を高速に処理することを課題とする。
【解決手段】プロセッサは、主記憶装置が保持するデータの一部を、複数のキャッシュラインにそれぞれ保持する。また、プロセッサは、キャッシュラインに保持されるデータの検索に用いるタグアドレスと、キャッシュラインに保持されるデータの有効性を示すフラグとを、前記複数のキャッシュラインにそれぞれ保持する。そして、プロセッサは、指定アドレスに対応するキャッシュラインに対してキャッシュライン充填命令を実行する。そして、プロセッサは、キャッシュライン充填命令を実行した場合に、キャッシュメモリにおける指定アドレスに対応するタグアドレスのキャッシュラインに所定データを登録するとともに、指定アドレスに対応するタグアドレスのキャッシュラインに対応するフラグを有効にする。
【選択図】図1

Description

本発明は、演算処理装置、情報処理装置及びキャッシュメモリ制御方法に関する。
従来、情報処理装置としてのサーバに搭載される演算処理装置としてのプロセッサキャッシュメモリの制御方式として、ライトスルー方式とも言われるストアスルー方式とライトバック方式とも言われるストアイン方式とが利用されている。両方式について、プロセッサに接続される主記憶装置、プロセッサに内蔵される2次キャッシュメモリおよび1次キャッシュメモリを有する二階層のキャッシュメモリ構成を例にして説明する。
ストアスルー方式を用いるプロセッサは、プロセッサ内部の2次キャッシュメモリにデータを書き込むたびに、そのデータを主記憶装置にも書き込む。このため、2次キャッシュメモリへのアクセスと比較してアクセスタイムが遅い主記憶装置へのアクセスが頻発する。したがって、ストアスルー方式を用いるプロセッサは、主記憶装置よりも高速な2次キャッシュメモリへの書き込みが常に主記憶装置への書き込み完了を待つ必要があり、2次キャッシュメモリへの書き込み自体も遅くなる。
ストアイン方式を用いるプロセッサは、ストア命令を実行する場合、1次または2次キャッシュメモリにのみデータを書き込み、主記憶装置には書き込まない。このため、ストアイン方式では、2次キャッシュメモリ上においてデータが存在する場所に、別のデータを格納するのに際して、それまでキャッシュラインに登録されていたデータを退避する必要が生じる。このタイミングで、プロセッサは、当該キャッシュラインに保持されていたデータを主記憶装置に書き込む。この場合、プロセッサは、当該キャッシュラインに登録されていたデータを主記憶装置に書き込んでキャッシュラインを無効化し、無効化されたキャッシュラインに別のキャッシュラインを新たに登録する。この結果、ストアイン方式を用いるプロセッサは、キャッシュラインに書き込んだデータを主記憶装置に反映することができる。さらに、プロセッサは、主記憶装置への書き込みを待たずに2次キャッシュメモリへの書き込みを完了することができる。
ところが、ストアイン方式では、「主記憶装置の初期化を実施する」場合と「主記憶装置内において一のアドレスのデータを他のアドレスにデータコピーを行う」場合に、主記憶装置の連続した領域にデータを書き込む処理が発生する。なお、「主記憶装置内において一のアドレスのデータを他のアドレスにデータコピーを行う」場合の一例を図12に示す。図12は、主記憶装置内において一のアドレスのデータを他のアドレスにデータコピーを行う例を示す図である。図12に示すように、「主記憶装置内において一のアドレスのデータを他のアドレスにデータコピーを行う」場合とは、主記憶の一のアドレス0x1000のデータAを他のアドレスである0x1080、0x1100、0x1180にそれぞれコピーする場合などである。すなわち、「主記憶装置内において一のアドレスのデータを他のアドレスにデータコピーを行う」場合の一例としては、主記憶装置のある領域から別の領域にデータをコピーする場合などがある。
つまり、これらの場合には、ストアイン方式よりもストアスルー方式の方が、キャッシュメモリよりも低速な主記憶装置の参照回数、言い換えると、主記憶装置へのアクセス回数が少なく、高速に処理できる場合がある。
例えば、主記憶装置へアクセスするデータ単位を64バイトとして説明する。ストアスルー方式を用いるプロセッサでは、「主記憶装置の初期化を行う」場合に、初期化対象の主記憶装置に64バイトの初期化データを直接書き込むので、主記憶装置へのアクセスが1回発生する。また、「主記憶装置内において一のアドレスのデータを他のアドレスにデータコピーを行う」場合には、プロセッサでは、コピー元の主記憶装置から64バイトのデータを取出すアクセスと、コピー先の主記憶装置に64バイトのデータを書き込むアクセスの計2回のアクセスが発生する。
一方、ストアイン方式を用いるプロセッサでは、ストアデータの書き込みをキャッシュメモリに対してのみ行うので、キャッシュメモリへの書き込みに先立って、書き込み先の主記憶領域をキャッシュメモリに事前に登録しておく必要がある。このため、ストアイン方式を用いるプロセッサでは、「主記憶装置の初期化を行う」場合に、主記憶装置へのアクセスが2回発生する。具体的には、ストアイン方式を用いるプロセッサでは、キャッシュメモリに事前登録する必要がある初期化対象の主記憶領域から64バイトのデータを取出すアクセスが発生する。さらに、当該プロセッサでは、キャッシュメモリ上で書き込みがされた64バイトのデータを主記装置憶に書き込むアクセスが発生する。
また、「主記憶装置内において一のアドレスのデータを他のアドレスにデータコピーを行う」場合には、ストアイン方式を用いるプロセッサでは、主記憶装置へのアクセスが3回発生する。具体的には、ストアイン方式を用いるプロセッサでは、コピー元の主記憶装置から64バイトのデータを取出すアクセスと、キャッシュメモリに事前登録する必要があるコピー先の主記憶装置の領域から64バイトデータを取出すアクセスが発生する。さらに、プロセッサでは、キャッシュメモリ上で書き込みがされた64バイトのデータを主記憶装置に書き込むアクセスが発生する。
図13を用いて、ストアイン方式による「主記憶装置内において一のアドレスのデータを他のアドレスにデータコピーを行う」場合の例を説明する。図13は、従来技術に係る主記憶装置内において一のアドレスのデータを他のアドレスにデータコピーを行う例を示す図である。図13では、主記憶装置のアドレス0x1000に記憶されるデータAをアドレス0x1080にコピーする例を説明する。
図13に示すように、プロセッサは、まず、コピー元のアドレス0x1000からデータAをロードして、1次キャッシュメモリのアドレス0x1000と2次キャッシュメモリのアドレス0x1000にそれぞれ登録する。次に、プロセッサは、コピー先のアドレス0x1080にデータを書き込むストア命令を実行する。すなわち、プロセッサは、主記憶装置のアドレス0x1080からデータBをロードして1次キャッシュメモリのアドレス0x1080と2次キャッシュメモリのアドレス0x1080にそれぞれ登録する。そして、プロセッサは、1次キャッシュメモリのアドレス0x1080と2次キャッシュメモリのアドレス0x1080にそれぞれにデータAを登録する。その後、プロセッサは、ストアイン動作(ライトバック動作)によって、2次キャッシュメモリのアドレス0x1080に登録されるデータAを、主記憶装置のアドレス0x1080に登録する。このように、ストアイン方式の場合、主記憶装置内でのデータコピーでは、主記憶装置へのアクセスが3回必要である。
上述してきたように、ストアイン方式を用いるプロセッサは、主記憶装置の初期化の場合に、ストアスルー方式に比べて2倍の主記憶装置へアクセス回数が発生し、データのコピーの場合に、ストアスルー方式に比べて1.5倍の主記憶装置へアクセス回数が発生する。また、同じ量のデータを処理するにあたって必要となる主記憶アクセス回数に比例して、データ処理に要する時間が延びることから、短時間でデータ処理を完了することが重要である。すなわち、高速にデータを処理するためには主記憶アクセス回数を減らすことが重要となる。
そして、近年では、ストアイン方式を用いるプロセッサにおける主記憶装置へのアクセス回数を減らす技術として、1命令で例えば64バイトのデータブロックであるブロックストアを主記憶装置に直接書き込む命令であるブロックストア命令が利用されている。例えば、ストアイン方式を用いるプロセッサでは、「主記憶装置の初期化」又は「主記憶装置内において一のアドレスのデータを他のアドレスにデータコピーを行う」処理を実施する場合に、ブロックストア命令が利用されている。ストアイン方式を用いるプロセッサは、ブロックストア命令を実行すると、主記憶装置上の書き込み対象領域がキャッシュメモリに登録されている場合には、キャッシュメモリにデータを書き込む。また、ストアイン方式を用いるプロセッサは、ブロックストア命令を実行すると、主記憶装置上の書き込み対象領域がキャッシュメモリに登録されていない場合には、主記憶装置にデータを直接書き込む。
ブロックストア命令を実施することで、ストアイン方式を用いた場合に必須であった「書き込み先の主記憶領域をキャッシュメモリに一旦登録するために、主記憶装置からデータを読み出す」という主記憶装置へのアクセスを省略することができる。
特開2000−76205号公報 特開平10−301849号公報 特開2003−29967号公報
しかしながら、従来の技術では、ブロックストア命令を用いた場合であっても、主記憶装置の初期化または主記憶装置内において一のアドレスのデータを他のアドレスにデータコピーする処理を高速に処理できない場合があるという課題があった。具体的には、ストアイン方式を用いたプロセッサでは、ブロックストア命令を実行し、キャッシュラインのデータ幅とアクセスした主記憶装置のデータ幅とが一致する場合には、高速な処理を実施することができる。ところが、ストアイン方式を用いたプロセッサでは、キャッシュラインのデータ幅が例えば128バイトで、主記憶のデータ幅が例えば64バイトの場合のように、データ幅が異なる場合には高速動作ができない。
例えば、複数のプロセッサコアを有し、複数の1次キャッシュメモリが1つの2次キャッシュメモリから接続されている場合に、ブロックストア対象となるキャッシュラインがいずれかの1次キャッシュメモリに登録されていたとする。この場合に、キャッシュラインのデータ幅とブロックストアのデータ幅が一致している場合、プロセッサは、1次キャッシュメモリにキャッシュラインの無効化を指示する。そして、プロセッサは、2次キャッシュメモリ上のデータをブロックストアのデータで上書きして、ブロックストア命令の処理は完了する。
一方、ブロックストア対象のキャッシュラインのデータ幅がブロックストアのデータ幅より大きい場合は、ブロックストアのデータで上書きできない領域が存在する。この場合、プロセッサは、1次キャッシュメモリ上のデータをロードして2次キャッシュメモリにストアし、その後ブロックストアのデータを2次キャッシュメモリにストアする。そして、プロセッサは、ブロックストアのデータをストアした2次キャッシュメモリ上のデータを1次キャッシュメモリにストアするなどの処理を行う必要がある。
このように、ブロックストア命令を実施するプロセッサは、キャッシュラインのサイズが例えば128バイトなどブロックストアより大きくなった場合に、通常のブロックストア命令による処理以外の処理を実施する必要がある。この結果、2次キャッシュメモリ等の設計が困難なものになると同時に、性能低下を来たすおそれがあった。
開示の技術は、上記に鑑みてなされたものであって、主記憶装置の初期化または主記憶装置内において一のアドレスのデータを他のアドレスにデータコピーする処理を高速に処理することが可能である演算処理装置、情報処理装置及びキャッシュメモリ制御方法を提供することを目的とする。
本願の開示する演算処理装置、情報処理装置及びキャッシュメモリ制御方法は、主記憶装置に接続される演算処理装置において、前記主記憶装置が保持するデータの一部を、複数のキャッシュラインにそれぞれ保持するキャッシュメモリ部と、前記キャッシュラインに保持されるデータの検索に用いるタグアドレスと、前記キャッシュラインに保持されるデータの有効性を示すフラグとを、前記複数のキャッシュラインにそれぞれ保持するタグメモリ部と、指定アドレスに対応するキャッシュラインに対してキャッシュライン充填命令を実行する命令実行部と、前記命令実行部が前記キャッシュライン充填命令を実行した場合に、前記キャッシュメモリ部における前記指定アドレスに対応するタグアドレスのキャッシュラインに所定データを登録するとともに、前記指定アドレスに対応するタグアドレスのキャッシュラインに対応するフラグを有効にするキャッシュメモリ制御部を有する。
本願の開示する演算処理装置、情報処理装置及びキャッシュメモリ制御方法の一つの態様によれば、主記憶装置の初期化または主記憶装置内において一のアドレスのデータを他のアドレスにデータコピーする処理を高速に処理することが可能であるという効果を奏する。
図1は、実施の形態1に係るプロセッサの構成を示すブロック図である。 図2は、実施の形態1に係る記憶ユニットの詳細を示す図である。 図3は、2次キャッシュメモリの構成を示す図である。 図4は、実施の形態1に係るプロセッサによる処理の流れを示すフローチャートである。 図5は、XFILL命令の処理の流れを示すフローチャートである。 図6は、XFILL後の判定処理の流れを示すフローチャートである。 図7は、ストア命令による処理の流れを示すフローチャートである。 図8は、実施の形態1に係るプロセッサによる主記憶装置内において一のアドレスのデータを他のアドレスにデータコピーする処理を説明する図である。 図9は、先行命令のXFILL命令の完了を待たずに後続のストア命令を実行した場合の例を示す図である。 図10は、先行命令のXFILL命令の完了を待って後続のストア命令を実行した場合の例を示す図である。 図11は、サーバの構成を示す図である。 図12は、主記憶装置内において一のアドレスのデータを他のアドレスにデータコピーを行う例を示す図である。 図13は、従来技術に係る主記憶装置内において一のアドレスのデータを他のアドレスにデータコピーを行う例を示す図である。
以下に、本願の開示する演算処理装置、情報処理装置及びキャッシュメモリ制御方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
[実施の形態1]
(プロセッサの構成)
図1は、実施の形態1に係るプロセッサの構成を示すブロック図である。図1に示すように、プロセッサ10は、命令制御ユニット(IU:Instruction Control Unit)11と実行ユニット(EU:Execution Unit)12とを有する。また、プロセッサ10は、記憶ユニット(SU:Storage Unit)13と外部接続ユニット(SX:Secondary Cache and External Access Unit)16とを有する。また、このプロセッサ10は、命令パイプラインを有し、主記憶装置(メインメモリ)20と接続される。なお、主記憶装置20は、キャッシュメモリと比較して大容量のデータが登録可能なRAM(Random Access Memory)であり、命令やデータを記憶する記憶装置である。
プロセッサ10は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)やDSP(Digital Signal Processor)などの演算処理装置であり、後述する1次キャッシュメモリおよび2次キャッシュメモリをストアイン方式で制御する。なお、ここで示したプロセッサの構成はあくまで例示であり、これに限定されるものではない。
命令制御ユニット11は、コンパイラ(プログラム)によりあらかじめ定義された命令列を命令順に発行するユニットである。例えば、命令制御ユニット11は、ストア命令やロード命令を記憶ユニット13に発行する。また、命令制御ユニット11は、XFILL命令を記憶ユニット13に発行する。XFILL命令とは、主記憶装置20の所定の領域を初期化する際のストア命令又は主記憶装置20の所定の領域に記憶されるデータを他の領域にコピーする際のストア命令を実行する前の前処理を実行する命令である。したがって、命令制御ユニット11は、上記ストア命令を出力する場合には、上記ストア命令の出力の前処理として、当該ストア命令の対象となるアドレスに対するXFILL命令を出力する。
このXFILL命令では、初期化の対象となる主記憶装置の領域又はコピー先の領域に記憶されるデータが、ストアイン方式で制御される2次キャッシュメモリ16aに記憶されているか否かを判定する処理が実行される。続いて、XFILL命令では、2次キャッシュメモリ16aに記憶されていないと判定された場合に、主記憶装置20の初期化対象又はコピー先の領域に対応するキャッシュラインに所定データを登録し、当該キャッシュラインのタグメモリのフラグを有効にする処理が実行される。
なお、命令制御ユニット11は、命令を順次発行するので、XFILL命令の後続のストア命令についても、XFILL命令を記憶ユニット13に発行した後、後続のストア命令も記憶ユニット13に順次発行する。ところが、命令の実行は、後述する記憶ユニット13によって制御される。また、XFILL命令の後続のストア命令で対象となるストアデータは、例えば、OS等のプログラムや起動時に実行されるファームウェアの実行に先立って主記憶装置20の所定領域を初期化する初期化データや、主記憶装置内でデータをコピーする場合のコピー対象データである。
実行ユニット12は、算術演算、論理演算、アドレス計算などの各種演算を行うユニットであり、演算結果を記憶ユニット13の1次データキャッシュメモリ15に格納する。記憶ユニット13は、命令制御ユニット11から出力された命令や実行ユニット12が演算した演算結果を記憶するユニットであり、制御部13aと1次命令キャッシュメモリ14と1次データキャッシュメモリ15とを有する。
制御部13aは、命令制御ユニット11から受け付けたXFILL命令を外部接続ユニット16に出力して命令の実行などを要求する制御部である。この制御部13aは、図2に示すように、命令選択/パイプ処理部13bとアドレス保持部13cとアドレス選択/パイプ処理部13fとアドレス比較部13gとを有する。さらに、制御部13aは、アドレス比較部13hとアドレス管理部13iと命令完了通知部13jと命令再投入管理部13kとを有する。そして、この制御部13aは、これらの制御部によってXFILL命令の後続命令を抑止する。図2は、実施の形態1に係る記憶ユニットの詳細を示す図である。
命令選択/パイプ処理部13bは、命令制御ユニット11から出力された新規命令に対応する命令を1次命令キャッシュメモリ14から選択して、命令パイプラインに投入する。例えば、命令選択/パイプ処理部13bは、命令制御ユニット11から出力されたストア命令やロード命令を1次命令キャッシュメモリ14から選択して、命令パイプラインに投入して、命令を実行する。また、命令選択/パイプ処理部13bは、命令制御ユニット11からXFILL命令が出力された場合には、XFILL命令を命令パイプラインに投入して、命令を実行する。
この命令選択/パイプ処理部13bは、命令を命令パイプラインに投入する際に、後述するアドレス比較部13gによる比較結果が一致した場合に、命令を命令パイプラインに投入して命令を実行する。例えば、命令選択/パイプ処理部13bは、XFILL命令投入後にストア命令を投入する場合に、アドレス比較部13gによる比較結果が不一致の間はストア命令を抑止(保留状態に)し、命令を命令再投入管理部13kに出力する。つまり、命令選択/パイプ処理部13bは、XFILL命令投入後のストア命令については、XFILL命令の完了を待って投入する。
アドレス保持部13cは、XFILLフラグ保持部13dとXFILLアドレス保持部13eとを有する。例えば、XFILLフラグ保持部13dは、命令制御ユニット11からXFILL命令が出力され、外部接続ユニット16によってXFILL命令が実行されている場合に、例えばXFILLフラグが有効(ON)であることを示す「1」を保持する。また、XFILLフラグ保持部13dは、XFILL命令が実行されていない場合に、例えばXFILLフラグが無効(OFF)であることを示す「0」を保持する。XFILLアドレス保持部13eは、キャッシュライン充填命令の指定アドレスに対応するタグアドレスのキャッシュラインへの所定データの登録と、指定アドレスに対応するタグアドレスのキャッシュラインに対応するフラグの有効化が完了するまで、指定アドレスを保持する。つまり、XFILLアドレス保持部13eは、命令制御ユニット11からXFILL命令が出力された場合に、XFILL命令の対象となるアドレスを保持する。
また、アドレス保持部13cは、後述する命令完了通知部13jからXFILL命令の完了通知を受信した場合に、XFILLアドレス保持部13eに保持されるXFILL命令の対象アドレスを解放する。さらに、XFILL命令の対象アドレスを解放したアドレス保持部13cは、XFILLフラグ保持部13dに保持されるXFILLフラグを無効にする。
アドレス選択/パイプ処理部13fは、命令制御ユニット11から出力された命令の対象となるアドレスを命令パイプラインに投入する。例えば、アドレス選択/パイプ処理部13fは、命令の対象となるアドレスをアドレス比較部13gやアドレス管理部13iに出力する。そして、アドレス選択/パイプ処理部13fは、アドレス管理部13iから投入指示を受信した場合には、アドレスを命令パイプラインに投入し、アドレス管理部13iから抑止指示を受信した場合には、アドレスの命令パイプラインへの投入を抑止する。
アドレス比較部13gは、アドレス保持部13cのXFILLアドレス保持部13eで保持されるXFILL命令の対象アドレスと、アドレス選択/パイプ処理部13fによって命令パイプラインへの投入対象となっているアドレスとを比較する。そして、アドレス比較部13gは、比較対象のアドレスが一致する場合には、アドレス選択/パイプ処理部13fによって命令パイプラインへの投入対象となっているアドレスに対応する命令を抑止する指示を命令選択/パイプ処理部13bに出力する。同様に、アドレス比較部13gは、アドレス選択/パイプ処理部13fによって命令パイプラインへの投入対象となっているアドレスの投入を抑止する指示をアドレス管理部13iに出力する。より具体的に説明すると、アドレス比較部13gは、XFILL命令の対象となっているアドレスと一致したロード命令又はストア命令の実行を抑止する。
一方、アドレス比較部13gは、比較対象のアドレスが一致しない場合には、アドレス選択/パイプ処理部13fによって命令パイプラインへの投入対象となっているアドレスに対応する命令の実行指示を命令選択/パイプ処理部13bに出力する。同様に、アドレス選択/パイプ処理部13fによって命令パイプラインへの投入対象となっているアドレスの投入指示をアドレス管理部13iに出力する。
アドレス比較部13hは、アドレス保持部13cのXFILLアドレス保持部13eで保持されるXFILL命令の対象アドレスと、アドレス管理部13iで管理され抑止されているアドレスとを比較して一致するか否かを判定する。そして、アドレス比較部13hは、比較対象のアドレスが一致する場合には、抑止されているアドレスに対応する命令の抑止状態を維持する指示を命令再投入管理部13kに出力する。同様に、アドレス比較部13hは、抑止されているアドレスの投入の抑止を維持する指示をアドレス管理部13iに出力する。
より具体的に説明すると、アドレス比較部13hは、XFILL命令の対象となっているアドレスと一致した抑止されているロード命令又はストア命令の抑止を引き続き維持する。
一方、アドレス比較部13hは、比較対象のアドレスが一致しない場合には、アドレス管理部13iで管理され抑止されているアドレスに対応する命令を、命令パイプラインに投入する指示を命令再投入管理部13kに出力する。同様に、アドレス比較部13hは、抑止されているアドレスの投入する指示をアドレス管理部13iに出力する。
アドレス管理部13iは、アドレス選択/パイプ処理部13fから出力されたアドレスを管理する。例えば、アドレス管理部13iは、アドレス比較部13gからアドレスの投入指示を受信した場合には、アドレスの投入指示をアドレス選択/パイプ処理部13fに出力する。また、アドレス管理部13iは、アドレス比較部13gからアドレスの抑止指示を受信した場合には、アドレスの投入の抑止指示をアドレス選択/パイプ処理部13fに出力する。
さらに、アドレス管理部13iは、アドレス比較部13hからアドレスの投入指示を受信した場合には、抑止されているアドレスの投入指示をアドレス選択/パイプ処理部13fに出力する。また、アドレス管理部13iは、アドレス比較部13hから抑止されているアドレスの抑止状態を維持する指示を受信した場合には、抑止されているアドレスの投入抑止指示をアドレス選択/パイプ処理部13fに出力する。
命令完了通知部13jは、命令選択/パイプ処理部13bや命令再投入管理部13kによって命令パイプラインに投入された命令の実行が完了したかを監視する。そして、命令完了通知部13jは、命令の実行が完了した場合には、命令完了通知を命令選択/パイプ処理部13bやアドレス保持部13c等に出力する。
命令再投入管理部13kは、アドレス比較部13gの比較結果によって抑止されている命令に対して、アドレス比較部13hによる比較によってアドレスが一致していると判定された場合に、抑止されていた命令を命令パイプラインに投入する。
図1に戻り、1次命令キャッシュメモリ14は、高速なアクセスが可能なキャッシュメモリであって、比較的使用頻度の高い命令を記憶する。1次データキャッシュメモリ15は、2次キャッシュメモリ16aよりも高速なアクセスが可能なキャッシュメモリであって、局所性の高いデータを記憶する。なお、1次命令キャッシュメモリ14または1次データキャッシュメモリ15は、容量が異なるものの、後述する2次キャッシュメモリ16a(図3参照)と同様、タグメモリ部16bとデータ部16cとを有する。なお、1次命令キャッシュメモリ14または1次データキャッシュメモリ15の構成も、後述する2次キャッシュメモリ16a(図3参照)と同様、本実施の形態に開示したものに限定されるものではない。
外部接続ユニット16は、2次キャッシュメモリ16aを有するとともに、記憶ユニット13や主記憶装置20との間の各種制御を実施する。2次キャッシュメモリ16aは、プロセッサ10に参照される命令やデータとして、主記憶装置20に保持される命令やデータの一部を記憶する。
例えば、2次キャッシュメモリ16aは、1〜4Mバイトの容量を有し、図3に示すように、タグメモリ部16bとデータ部16cとを有する。例えば、タグメモリ部16bは、キャッシュラインに保持されるデータの検索に用いる40ビットのタグアドレスと、キャッシュラインに保持されるデータの有効性を示す1ビットのフラグ(valid bit)とを有する。また、データ部16cは、外部接続ユニット16が実行する命令の対象となっている指定アドレスがタグメモリ部16bのタグアドレスと一致し、かつ、フラグが有効である場合に、命令の実行対象として処理される128バイトのデータを保持するデータフィールドを有する。なお、図3は、2次キャッシュメモリの構成を示す図である。また、図3に開示したものに限定されることはない。つまり、ここで示したバイト数やビット数、ウェイ数などは、あくまで例示でありこれに限定されるものではない。
また、外部接続ユニット16は、記憶ユニット13の命令選択/パイプ処理部13bが2次キャッシュメモリ充填命令を実行した場合に、2次キャッシュメモリ16aにおける指定アドレスに対応するタグアドレスのデータフィールドに所定データを登録する。そして、外部接続ユニット16は、指定アドレスに対応するタグアドレスのキャッシュラインに対応するフラグを有効にする。
例えば、外部接続ユニット16は、記憶ユニット13の命令選択/パイプ処理部13bからXFILL命令を受信した場合には、XFILL命令による処理を実行する。例えば、外部接続ユニット16は、XFILL命令の対象アドレスに対応するデータが、2次キャッシュメモリ16aに登録されているか否かを判定する。そして、外部接続ユニット16は、2次キャッシュメモリ16aに登録されていないと判定された場合に、主記憶装置20の初期化対象又はコピー先の領域に対応するデータ部16cに初期化データとしてオールゼロを登録する。そして、外部接続ユニット16は、当該キャッシュラインのタグメモリ部16bのフラグ(valid bit)を有効にする。その後、外部接続ユニット16は、XFILL命令を実行したことを記憶ユニット13に通知する。また、外部接続ユニット16は、2次キャッシュメモリ16aに登録されていると判定された場合に、何も実施することなく、XFILL命令を実行したことを記憶ユニット13に通知する。
具体的に例を挙げると、外部接続ユニット16は、XFILL命令の対象となっているアドレス0x1050に対応するデータBが、2次キャッシュメモリ16aの0xアドレス1050に登録されているか否かを判定する。すなわち、外部接続ユニット16は、アドレス0x1050がキャッシュヒットするか否かを判定する。そして、外部接続ユニット16は、キャッシュヒットしなかった場合にのみ、0xアドレス1050のデータ部16cにオールゼロの初期化データを登録し、キャッシュラインのタグメモリ部16bのフラグを有効にする。
また、外部接続ユニット16は、2次キャッシュメモリ16aから主記憶装置20へのライトバックを実行する。例えば、外部接続ユニット16は、2次キャッシュメモリ16aと主記憶装置20とを常に監視する。そして、外部接続ユニット16は、2次キャッシュメモリ16aに登録されるデータが、主記憶装置20には登録されていない状態が発生した場合には、ライトバック処理を実行してデータを2次キャッシュメモリ16aからロードし、主記憶装置20に登録する。例えば、2次キャッシュメモリ16aのアドレス0x1000のデータ部16cに登録されるデータXが、主記憶装置20の0xアドレス1000に登録されていないとする。この場合、外部接続ユニット16は、データXを2次キャッシュメモリ16aのデータ部16cからロードして、主記憶装置のアドレス0x1000に登録する。
[プロセッサの処理]
次に、図4〜図7を用いて、実施の形態1に係るプロセッサの処理の流れを説明する。ここでは、図4を用いて全体的な処理の流れを説明し、図5を用いてXFILL命令による処理の流れを説明し、図6を用いてXFILL後にストア命令を実行するか否かを判定する判定処理の流れを説明し、図7を用いてストア命令による処理の流れを説明する。
(全体的な処理の流れ)
図4を用いて全体的な処理の流れを説明する。図4は、実施の形態1に係るプロセッサによる処理の流れを示すフローチャートである。なお、ここでは、命令制御ユニット11がコンパイラ(プログラム)に従って、XFILL命令を実行する場合の処理の流れを説明する。すなわち、ここでは、主記憶装置20内において一のアドレスのデータを他のアドレスにデータコピーを行う命令又は主記憶装置20の初期化を実施する命令のいずれかを実行する場合の例について説明する。
図4に示すように、命令制御ユニット11は、命令を発行する場合に(ステップS101肯定)、発行対象の命令が主記憶装置20内において一のアドレスのデータを他のアドレスにデータコピーを行う命令を発行する(ステップS102)。なお、命令制御ユニット11は、命令を順次発行するので、XFILL命令の後続のストア命令についても、XFILL命令を記憶ユニット13に発行した後、記憶ユニット13に発行する。
続いて、命令制御ユニット11が発行対象の命令が主記憶装置20内において一のアドレスのデータを他のアドレスにデータコピーを行う命令である場合には(ステップS102肯定)、外部接続ユニット16は、データをロードする(ステップS103)。すなわち、外部接続ユニット16は、コピー元の主記憶装置20の領域からデータをロードして2次キャッシュメモリ16aに登録する。そして、記憶ユニット13は、2次キャッシュメモリ16aに登録されたコピー元のデータをロードして、1次データキャッシュメモリ15に登録する。
そして、命令制御ユニット11がXFILL命令を発行し、外部接続ユニット16は、XFILL命令による処理を実行する(ステップS104)。続いて、XFILL命令が完了すると、記憶ユニット13は、命令制御ユニット11により発行されたXFILL命令の後続のストア命令を実行するか否かを判定する判定処理を実行する(ステップS105)。このため、XFILL命令の後続のストア命令は、XFILL命令の完了までは実行されずに抑止される。また、XFILL命令の後続のストア命令で対象となるストアデータは、プログラムやソフトウエアの実行に先立って主記憶装置20の所定領域を初期化する際に用いられる初期化データや、主記憶装置でデータをコピーする場合のコピー対象データである。
続いて、記憶ユニット13は、命令制御ユニット11が発行したXFILL命令の後続のストア命令による処理を実行する(ステップS106)。その後、外部接続ユニット16は、主記憶装置20へのライトバックを実行する契機が発生すると(ステップS107肯定)、主記憶装置20にライトバックを実行する(ステップS108)。
一方、発行対象の命令が主記憶装置20内において一のアドレスのデータを他のアドレスにデータコピーを行う命令でない場合には(ステップS102否定)、外部接続ユニット16は、ステップ103を実行することなくステップS104を実行する。すなわち、外部接続ユニット16は、発行対象の命令が主記憶装置20の初期化を実施すると判定された場合には、主記憶装置20からロードすることなく、XFILL命令を実行する。
(XFILL命令による処理の流れ)
図5を用いて、図4に示したステップS104におけるXFILL命令による処理の流れを説明する。図5は、XFILL命令の処理の流れを示すフローチャートである。
図5に示すように、記憶ユニット13は、命令制御ユニット11から発行されたXFILL命令を外部接続ユニット16に対して出力する(ステップS201)。この場合、命令制御ユニット11は、後述するストア命令の対象となっているアドレスをXFILL命令の対象アドレスとして発行する。
XFILL命令を実行した記憶ユニット13は、XFILLフラグ保持部13dに保持されるXFILLフラグを有効にし、対象となっているアドレスをアドレス保持部13cのXFILLアドレス保持部13eに保持する(ステップS202)。
その後、XFILL命令を受信した外部接続ユニット16は、対象アドレスがキャッシュヒットするか否か、すなわち、対象アドレスが2次キャッシュメモリ16aに登録されているか否かを判定する(ステップS203)。
そして、外部接続ユニット16は、対象アドレスがキャッシュミスした場合(ステップS203否定)、対象アドレスのデータ部16cにゼロデータを登録し、ゼロデータを登録したキャッシュラインのタグメモリ部16bのフラグを有効にする(ステップS204)。続いて、記憶ユニット13は、XFILL命令が完了したことを示すXFILL完了通知を記憶ユニット13内の命令完了通知部13jなどの各部に出力する(ステップS205)。そして、記憶ユニット13は、アドレス保持部13cのXFILLフラグ保持部13dに保持されるXFILLフラグを無効にする(ステップS206)。
一方、外部接続ユニット16は、対象アドレスが2次キャッシュメモリ16aにキャッシュヒットした場合(ステップS203肯定)、ステップS204を実行することなく、ステップS205を実行する。
(XFILL後にストア命令を実行するか否かを判定する判定処理の流れ)
図6を用いて、図4に示したステップS105における判定処理の流れを説明する。図6は、XFILL後の判定処理の流れを示すフローチャートである。
図6に示すように、記憶ユニット13は、XFILL命令の後続のストア命令を実行/投入する際に、アドレス保持部13cのXFILLフラグ保持部13dに保持されるXFILLフラグが有効であるか否かを判定する(ステップS301)。そして、記憶ユニット13は、XFILLフラグが有効である場合に(ステップS301肯定)、アドレスマッチを実行する(ステップS302)。すなわち、記憶ユニット13は、アドレス保持部13cのXFILLアドレス保持部13eで保持されるアドレスと、XFILL命令の後続のストア命令の対象アドレスとが一致するか否かを判定する。
そして、XFILLフラグが有効であり、アドレスマッチによりアドレスが一致した場合(ステップS302肯定)、記憶ユニット13は、XFILL命令の受信後に、命令制御ユニット11から受信したストア命令の実行を抑止する(ステップS303)。すなわち、アドレス保持部13cのXFILLアドレス保持部13eで保持されるアドレスと、XFILL命令の後続のストア命令の対象アドレスとが一致した場合は、後続のストア命令を抑止する。
一方、XFILLフラグが無効になり、アドレスが一致した後続のストア命令が実行できる状態になった場合(ステップS301否定)、記憶ユニット13は、XFILL命令終了まで抑止されていたストア処理の再開処理を実行する(ステップS304)。
一方、XFILLフラグが有効であり、アドレスマッチによりアドレスが一致しない場合(ステップS302否定)、記憶ユニット13は、XFILL命令終了まで抑止されていたストア処理の再開処理を実行する(ステップS304)。例えば、記憶ユニット13は、アドレス保持部13cのXFILLアドレス保持部13eで保持されるアドレスと、XFILL命令の後続のストア命令の対象アドレスとが一致しない場合、アドレスマッチの結果を不一致と判定する。同様に、記憶ユニット13は、アドレス保持部13cのXFILLアドレス保持部13eにアドレスが保持されていない場合にも、アドレスマッチの結果を不一致と判定する。
(ストア命令による処理の流れ)
図7を用いて、図4に示したステップS106におけるストア命令による処理の流れを説明する。図7は、ストア命令による処理の流れを示すフローチャートである。
図7に示すように、ストア命令を実行した記憶ユニット13は、ストア対象のアドレスに記憶されるデータが1次データキャッシュメモリ15にキャッシュヒットするか否かを判定する(ステップS401)。すなわち、記憶ユニット13は、ストア対象のデータが1次データキャッシュメモリ15に記憶されているか否か判定する。
そして、記憶ユニット13は、1次データキャッシュメモリ15にキャッシュヒットする場合(ステップS401肯定)、ストア対象データをキャッシュヒットしたアドレスに登録する処理であるストア命令を実行する(ステップS402)。
一方、1次データキャッシュメモリ15にキャッシュヒットしない場合(ステップS401否定)、外部接続ユニット16は、ストア対象のアドレスに記憶されるデータが2次キャッシュメモリ16aにヒットするか否かを判定する(ステップS403)。すなわち、外部接続ユニット16は、ストア対象のデータが2次キャッシュメモリ16aに記憶されているか否か判定する。
そして、外部接続ユニット16は、2次キャッシュメモリ16aにキャッシュヒットする場合(ステップS403肯定)、2次キャッシュメモリ16aのデータを1次データキャッシュメモリ15に登録する(ステップS404)。その後、プロセッサ10は、ステップS401に戻って、以降の処理を実行する。
一方、外部接続ユニット16は、2次キャッシュメモリ16aにキャッシュミスした場合(ステップS403否定)、主記憶装置20からストア対象アドレスのデータをロードする(ステップS405)。続いて、外部接続ユニット16は、主記憶装置20からロードしたデータを、1次データキャッシュメモリ15及び2次キャッシュメモリ16aそれぞれにおけるストア対象アドレスに登録する(ステップS406)。その後、プロセッサ10は、ステップS401に戻って、以降の処理を実行する。
[処理の具体例]
ここで、上述した処理について、具体的な例として、主記憶装置20の所定領域を初期化する例と、主記憶装置内において一のアドレスのデータを他のアドレスにデータコピーする例とについて説明する。
(主記憶装置の初期化)
まず、主記憶装置20の所定アドレスを初期化する例について説明する。ここでは、初期化対象のアドレスを0x1000とする。命令制御ユニット11は、初期化するストア命令を発行する前に、ストア対象のアドレス0x1000に対するXFILL命令を記憶ユニット13に発行する。続いて、命令制御ユニット11は、主記憶装置20の所定領域を初期化するデータ(オールゼロ)のストアを要求するストア命令を記憶ユニット13に発行する。
そして、記憶ユニット13は、命令制御ユニット11から受信したXFILL命令(アドレス1000)を実行し、外部接続ユニット16にXFILL命令の実行を依頼する。続いて、外部接続ユニット16は、アドレス0x1000に対してXFILL命令を実行する。すなわち、外部接続ユニット16は、アドレス0x1000が2次キャッシュメモリ16aにキャッシュミスする場合には、アドレス0x1000のデータ部16cにオールゼロデータを登録する。そして、外部接続ユニット16は、アドレス0x1000のタグメモリ部16bのフラグを有効、言い換えると、アドレス0x1000のタグメモリ部16bのタグアドレスを有効にする。一方、外部接続ユニット16は、アドレス0x1000が2次キャッシュメモリ16aにキャッシュヒットした場合には、オールゼロデータの登録を実施せず、タグの有効化も実施しない。
一方で、記憶ユニット13は、XFILL命令を実行する際に、XFILL命令の対象となっているアドレス1000をアドレス保持部13cのXFILLアドレス保持部13eに格納する。そして、記憶ユニット13は、アドレス保持部13cのXFILLアドレス保持部13eに記憶されるアドレスと、XFILL命令を発行した後の命令の対象となるアドレスとが一致するか否かを判定するアドレスマッチを行う。この結果、記憶ユニット13は、XFILL命令を発行した後の命令がアドレス0x1000に対する命令である場合、すなわち、アドレスがマッチすると判定した場合には、XFILLの後続命令の実行を抑止する。したがって、記憶ユニット13は、XFILL命令の後続のストア命令、言い換えると、アドレス0x1000のデータ部16cに初期化データを格納するストア命令の実行を抑止できる。なお、記憶ユニット13は、XFILL命令が完了するまで、XFILL命令の後続のストア命令を抑止する。
その後、外部接続ユニット16は、アドレス0x1000のデータ部16cにオールゼロデータを登録し、アドレス0x1000のタグメモリ部16bのフラグを有効にすると、XFILL命令完了通知を記憶ユニット13に出力する。XFILL命令完了通知を受信した記憶ユニット13は、アドレス保持部13cのXFILLフラグ保持部13dのフラグを無効にする。この結果、記憶ユニット13は、アドレス保持部13cに記憶されるアドレスとマッチしないと判定し、XFILL命令の後続のストア命令であるアドレス0x1000のデータ部16cに初期化データを格納するストア命令を実行する。
具体的には、記憶ユニット13は、アドレス0x1000が1次データキャッシュメモリ15にキャッシュヒットする場合には、1次データキャッシュメモリ15のアドレス0x1000に初期化データを登録する。また、記憶ユニット13は、アドレス0x1000が1次データキャッシュメモリ15にキャッシュミスした場合には、外部接続ユニット16に対してストア命令の実行を要求する。この要求を受信した外部接続ユニット16は、アドレス0x1000が2次キャッシュメモリ16aにキャッシュヒットするか否かを判定する。そして、外部接続ユニット16は、キャッシュヒットする場合には、2次キャッシュメモリ16aのアドレス0x1000のデータ部16cに初期化データを登録する。そして、プロセッサ10は、主記憶装置20にアクセスすることなく、初期化データをキャッシュメモリに登録することができる。
その後、外部接続ユニット16は、主記憶装置20へライトバックするタイミングで、2次キャッシュメモリ16aのアドレス0x1000のデータ部16cに登録した初期化データを、主記憶装置20のアドレス0x1000に登録する。この結果、外部接続ユニット16は、主記憶装置20へのアクセスを1回行うだけで、初期化データを所定アドレスに登録することができる。また、例えば、初期化対象の開始アドレスを0x1000、終了アドレスを0x1010などのように、所定領域を初期化する場合、各対象アドレスに対して上述したXFILL命令およびストア命令を実行する。この結果、アドレス0x1000から0x1010を初期化することができる。
(データコピー)
次に、図8を用いて、主記憶装置内において一のアドレスのデータを他のアドレスにデータコピーする例について説明する。図8は、実施の形態1に係るプロセッサによる主記憶装置内において一のアドレスのデータを他のアドレスにデータコピーする処理を説明する図である。ここでは、コピー元のアドレスを0x1000、コピー先のアドレスを0x1080とする。
命令制御ユニット11は、コピー元のデータをロードするため、アドレス0x1000のロード命令を発行する。そして、外部接続ユニット16は、図8に示すように、コピー元である主記憶装置20のアドレス0x1000のデータAをロードし、1次データキャッシュメモリ15のアドレス0x1000と2次キャッシュメモリ16aのアドレス0x1000それぞれにデータAを登録する。
その後、データAのロード処理が終了したことを外部接続ユニット16から受信した命令制御ユニット11は、コピーする処理ストア命令を発行する前に、ストア対象のアドレス0x1080に対するXFILL命令を記憶ユニット13に発行する。そして、命令制御ユニット11は、主記憶装置20におけるコピーの対象領域に対するストア命令を記憶ユニット13に発行する。
そして、記憶ユニット13は、命令制御ユニット11から受信したXFILL命令(アドレス0x1080)を実行し、外部接続ユニット16にXFILL命令の実行を依頼する。そして、外部接続ユニット16は、アドレス0x1080に対してXFILL命令を実行する。すなわち、外部接続ユニット16は、アドレス0x1080が2次キャッシュメモリ16aにキャッシュミスした場合には、アドレス0x1008のデータ部16cにオールゼロデータを登録し、アドレス0x1080のタグメモリ部16bのフラグを有効にする。一方、外部接続ユニット16は、アドレス0x1080が2次キャッシュメモリ16aにキャッシュヒットした場合には、オールゼロデータの登録を実施せず、タグの有効化も実施しない。
一方で、記憶ユニット13は、XFILL命令を実行する際に、XFILL命令の対象となっているアドレス0x1080をアドレス保持部13cのXFILLアドレス保持部13eに格納する。そして、記憶ユニット13は、XFILLアドレス保持部13eに記憶されるアドレスと、XFILL命令を発行した後の命令の対象となるアドレスとが一致するか否かを判定するアドレスマッチを行う。この結果、記憶ユニット13は、XFILL命令を発行した後の命令がアドレス0x1080に対する命令である場合、すなわち、アドレスがマッチすると判定した場合には、命令の実行を抑止する。したがって、記憶ユニット13は、XFILL命令の後続のストア命令、言い換えると、アドレス0x1080のデータ部16cにデータAをコピーするストア命令の実行を抑止できる。なお、記憶ユニット13は、XFILL命令が完了するまで、XFILL命令の後続のストア命令を抑止する。
その後、外部接続ユニット16は、アドレス0x1080のデータ部16cにオールゼロデータを登録し、アドレス0x1080のタグメモリ部16bのフラグを有効にすると、XFILL命令完了通知を記憶ユニット13に出力する。XFILL命令完了通知を受信した記憶ユニット13は、XFILLアドレス保持部13eからアドレス0x1080を削除する。この結果、記憶ユニット13は、XFILLアドレス保持部13eに記憶されるアドレスとマッチしないと判定し、XFILL命令の後続のストア命令であるアドレス0x1080にデータAをコピーするストア命令を実行する。
具体的には、記憶ユニット13は、アドレス0x1080が1次データキャッシュメモリ15にキャッシュヒットするか否かを判定し、キャッシュヒットする場合には、1次データキャッシュメモリ15のアドレス0x1080にデータAを登録する。また、記憶ユニット13は、アドレス0x1080が1次データキャッシュメモリ15にキャッシュミスした場合には、外部接続ユニット16に対してストア命令の実行を要求する。この要求を受信した外部接続ユニット16は、アドレス0x1080が2次キャッシュメモリ16aにキャッシュヒットするか否かを判定する。そして、外部接続ユニット16は、キャッシュヒットする場合には、2次キャッシュメモリ16aのアドレス0x1080のデータ部16cにデータAを登録する。この結果、プロセッサ10は、主記憶装置20にアクセスすることなく、データAをキャッシュメモリに登録することができる。
その後、外部接続ユニット16は、ライトバックするタイミングで、2次キャッシュメモリ16aのアドレス0x1080に登録したデータAを、主記憶装置20のアドレス0x1080に登録する。この結果、外部接続ユニット16は、コピー先のアドレス0x1080のデータBをロードすることなく、コピー元のアドレス0x1000のデータAをコピー先のアドレス0x1080に登録することができる。
また、例えば、コピー元の対象アドレスが0x1000であり、コピー先のアドレスが0x1010から0x1015などのように、複数の領域にデータコピーを行うこともできる。この場合、プロセッサ10は、上述した処理と同様、まずアドレス0x1000からデータをロードする。そして、プロセッサ10は、コピー先の各アドレスに対して、上述したXFILL命令およびストア命令を実行することで、コピー元のデータをコピーすることができる。
[実施の形態1による効果]
このように、実施の形態1に係るプロセッサ10は、主記憶装置20の初期化の場合には、主記憶装置20へのアクセスをライトバック時の1回に抑えることができる。また、プロセッサ10は、主記憶装置20間のコピーの場合には、主記憶装置20へのアクセスを、コピー元データをロードする時とライトバック時の2回に抑えることができる。この結果、プロセッサ10は、ブロックストア命令を用いる場合と比較しても、主記憶装置20の初期化又は主記憶装置20から主記憶装置20にデータコピーを高速に処理することが可能である。
(実施の形態1における命令順序制御による効果)
また、従来から利用されているブロックストア命令は、プロセッサが1次キャッシュメモリ、2次キャッシュメモリ、メインメモリ等のメモリからデータをロードまたはメモリにデータをストアする順序の規約であるメモリオーダリングを保証できない。例えば、ブロックストアを行った領域に対して、その後にストアを行った場合、最終的にその領域にブロックストアで書き込んだデータが残るのかストア命令で書き込んだデータが残るのか、どちらが残るかは命令仕様上保証されていない。また、ブロックストアを行った領域に対して、ロードを行った場合、ブロックストアを行う前にそこに存在していたデータが読み出されるか、ブロックストアで書き込んだデータが読み出されるか、どちらのデータが読み出されるかはプログラム上保証されていない。
このため、ブロックストア命令を実施するプロセッサは、ブロックストア命令との間でロード命令またはストア命令の実行結果を保証する手法として、メモリアクセスの逐次化を行うmembar(memory barrier)命令を実行していた。プロセッサは、ブロックストア命令を実行した後に、membar命令を実行する。この結果、その後に実行される命令は、ブロックストア命令の実行が完了してから実行されることが保証される。
ところが、membar命令を実行することにより逐次化処理が発生し、プロセッサの処理速度の低下を引き起こす場合がある。また、プログラムを作成する際にmembar命令の挿入を忘れるケースがある。この場合、ロード命令又はストア命令の実行結果が保証されず、状況によって逐次化されたように見えたり、逐次化されなかったように見えたりする動作の不安定さから、プログラムバグの原因となっていた。
これに対して、実施の形態1に係るプロセッサ10は、XFILL命令と後続のストア命令の順序を制御することができる。また、プロセッサ10は、順序制御にあたって、membar命令の実行によるメモリバリア制御による逐次化処理を行う必要もないので、不要な逐次処理の発生も抑止し、動作の不安定さを解消し、プログラムバグの原因を取り除くことができる。
例えば、実施の形態1に係るプロセッサ10は、アドレス保持部13cによってXFILL命令対象のアドレスを保持してアドレスマッチを行うことで、XFILL命令に後続するストア命令の実行を抑止することができる。例えば、図9と図10を用いて、XFILL命令によってオールゼロが登録された領域にデータAをストアする場合について説明する。図9は、先行命令のXFILL命令の完了を待たずに後続のストア命令を実行した場合の例を示す図であり、図10は、先行命令のXFILL命令の完了を待って後続のストア命令を実行した場合の例を示す図である。
図9に示す先行命令のXFILL命令の完了を待たずに後続のストア命令を実行した場合とは、ストア命令(データA)がXFILL命令抑止中に主記憶装置20に掃きだされて、2次キャッシュメモリ16aのタグメモリ部16bのフラグが無効(invalid)になった場合である。この場合、XFILL命令よりも先に、ストア命令(データA)が実行される。したがって、図9に示すように、先に登録されたデータAをXFILL命令のオールゼロデータで上書きすることになり、最終的に登録したいデータAが登録できない。
これに対して、図10に示すように、先行命令のXFILL命令の完了を待って後続のストア命令を実行した場合、XFILL命令よりも先に、ストア命令(データA)が実行されることがない。したがって、図10に示すように、先に登録されたXFILL命令のオールゼロデータをデータAで上書きすることになり、最終的に登録したいデータAが登録できる。
このように、実施の形態1に係るプロセッサ10は、XFILL命令と後続のストア命令の順序を制御することができる。また、プロセッサ10は、順序制御にあたって、membar命令の実行によるメモリバリア制御による逐次化処理を行う必要もないので、不要な逐次処理の発生も抑止することができる。さらに、このように不要な逐次処理の発生も抑止できるので、より高速なメモリ制御が可能である。
また、実施の形態1に係るプロセッサ10は、XFILL命令の対象となった主記憶装置20の領域が2次キャッシュメモリ16aに登録されていた場合は、2次キャッシュメモリ16aにゼロクリア(ゼロデータ登録)を実行せずに処理を完了する。また、プロセッサ10は、2次キャッシュメモリ16aのタグメモリ部16bのフラグを有効にする作業も行わない。すなわち、何もせずにこの処理の実行を完了する。
つまり、2次キャッシュメモリ16aに登録されていたということは、1次データキャッシュメモリ15にも処理対象となった主記憶装置20のデータが登録されている可能性がある。したがって、プロセッサ10は、処理対象領域を2次キャッシュメモリ16a上でゼロクリアをする場合、そのデータが1次データキャッシュメモリ15に登録されているかどうかを検索する。そして、プロセッサ10は、1次データキャッシュメモリ15に登録されていれば、その1次データキャッシュメモリ15上のキャッシュラインを無効化し、すべての1次データキャッシュメモリ15で無効化されている状態にあることを確認する。その上で、プロセッサ10は、2次キャッシュメモリ16a上でゼロクリアを実行しなければならない。
また、プロセッサ10は、処理完了に当たって、2次キャッシュメモリ16a上でのゼロクリア処理と1次データキャッシュメモリ15の無効化完了待ち処理のすれ違いが起きないように制御する必要もある。そうしないと、1次データキャッシュメモリ15と2次キャッシュメモリ16aとの間で不正なデータの不一致が生じる可能性がある。こうした設計を正しく実装するにはそれなりの検証工数を要し、また出荷後にバグを発生させる危険性も存在する。
こうした危険を回避するために、実施の形態1に係るプロセッサ10は、キャッシュヒットしている場合は、2次キャッシュメモリ16a上でのゼロクリア処理は行わないように制御する。この結果、実施の形態1に係るプロセッサ10は、処理対象となる主記憶装置20の領域に対して、1次データキャッシュメモリ15の無効化やすれ違いの監視処理が不要となり、2次キャッシュメモリ16aの制御の簡略化が可能となる。なお、2次キャッシュメモリ16a上でゼロクリア処理を行わない場合であっても、キャッシュヒットしていることは、その領域が元々自身のメモリ管理ユニット(Memory Management Unit)管理下に置かれていたため参照可能な領域を参照したことを意味する。また、XFILL命令対象と同一データ領域をアクセスする先行ロード/ストア処理の完了を保証するために、XFILL命令の処理の実行は先行するロード/ストア処理の完了を待たせる。
(レジスタの有効活用)
また、ブロックストア命令では、例えば64バイトのデータを演算器等の実行ユニット12のレジスタ上に用意し、これをストアデータとして使用していた。ブロックストア命令を単純に拡張すると、例えば128バイト又は例えば256バイトのデータを扱う命令となる。この場合、キャッシュラインの拡大に応じて、演算器のレジスタに用意するデータ量が増加し、そのデータは1つのブロックストア命令に対して一括して準備する必要があるため、実行ユニット12にデータを供給するレジスタファイルの枯渇が起きやすくなる。さらに、キャッシュラインサイズが変わるたびに命令が処理するデータ幅を定義しなおすアラインを実施する必要が生じるため、計算機装置を構成するプロセッサのキャッシュサイズに応じて、ブロックストア命令をすべて用意する必要がある。
実施の形態1に係るプロセッサ10では、メモリの高速制御をブロックストア命令を用いずに実現できるので、レジスタの領域をブロックストアで使用することもなく、レジスタを効率的に利用できる。また、実施の形態1に係るプロセッサ10では、キャッシュラインサイズが変わるたびに命令が処理するデータ幅を定義しなおす必要もないので、プロセッサ等の設計時間を大幅に短縮できる。
[実施の形態2]
さて、これまで本願の開示するキャッシュメモリ制御装置の実施の形態について説明したが、本願は上述した実施の形態以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下に異なる実施の形態を説明する。
(キャッシュメモリの階層)
上述した実施の形態1では、2つの1次キャッシュメモリと1つの2次キャッシュメモリを用いた場合について説明したが、キャッシュメモリの数はこれに限定されるものではない。また、実施の形態1では、2階層のキャッシュメモリを例にしたが、階層を限定するものではない。例えば、1次キャッシュメモリと2次キャッシュメモリと3次キャッシュメモリとの3階層であっても、3次キャッシュメモリをXFILL対象とすれば、本願の開示するキャッシュメモリ制御装置を適用することができる。つまり、最も主記憶装置に近いキャッシュメモリをXFILL対象とすることで、どのような階層のキャッシュメモリでも、実施の形態1と同様に処理することができる。
(XFILL命令で登録するデータ)
上述した実施の形態1では、XFILL命令でオールゼロを登録する例について説明したが、これに限定されるものではない。例えば、主記憶装置20にあるストア対象のデータは、すべてストアデータにより置き換えられるので、データはエラーが無い状態であれば何でも良い。
(適応プロセッサ)
また、本願の開示するキャッシュメモリ制御装置には、プロセッサ上に複数のプロセッサコアおよび複数の1次キャッシュメモリが存在してもよい。例えば、単一のプロセッサを有するシステムに適用した場合の方が、SMP(Symmetrical Multi−Processing)など複数のプロセッサを有するシステムの場合よりも高速に処理できる。また、複数のプロセッサを有するシステムの場合、キャッシュラインを登録する前に、他のプロセッサにキャッシュラインの無効化を要求し、無効化完了通知を待たなければならない。したがって、単一のプロセッサを用いたシステムにおいては、他のプロセッサが存在しないので、この処理を省力することが可能となり、より高速にメモリ制御が実施できる。
(プリフェッチ機構への適用)
最近のプロセッサは、ハードウエアプリフェッチ機構というものを実装しているものが多く存在する。ハードウエアプリフェッチ機構は、ロード・ストア命令の実行アドレスを監視して、将来ロード・ストア命令が実行されそうな領域を主記憶装置20からあらかじめ取り出す機能が働く。本願の開示するキャッシュメモリ制御装置を実装する場合、ハードウエアプリフェッチの実行禁止を指示してストア命令を実行することにより、ストア対象領域がXFILL命令に先立ってハードウエアプリフェッチで2次キャッシュメモリに登録される事態を回避する。こうすることで、本願の開示するキャッシュメモリ制御装置は、ハードウエアプリフェッチ機構を有するプロセッサにも適用することができる。
(サーバの構成)
本実施の形態で開示するプロセッサが組み込まれたサーバの構成を図11に示す。図11は、サーバの構成を示す図である。図11に示すように、サーバは、バックプレーン100に複数のクロスバスイッチとしてXB101、XB102などを有し、クロスバスイッチそれぞれにシステムボードとしてSB110〜SB113と入出力システムボード(IOSB)150とを有する。なお、クロスバスイッチ、システムボード、入出力システムボードの数はあくまで例示であり、これに限定されるものではない。
バックプレーン100は、複数のコネクタ等を相互接続するバスを形成する回路基板である。XB101、XB102は、システムボードと入出力システムボードとの間でやり取りされるデータの経路を動的に選択するスイッチである。
また、XB101、XB102それぞれに接続されるSB110、SB111、SB112、SB113は、電子機器を構成する電子回路基板であり同様の構成を有するので、ここではSB110についてのみ説明する。SB110は、システムコントローラ(System Controller:SC)と、4台のCPUと、メモリアクセスコントローラ(Memory Access Controller:MAC)と、DIMM(Dual Inline Memory Module)とを有する。
SC110aは、SB110に搭載されるCPU110b〜110eとMAC110f、MAC110gとの間におけるデータ転送などの処理を制御し、SB100全体を制御する。CPU110b〜110eそれぞれは、SCを介して他の電子機器と接続され、本実施の形態で開示したキャッシュメモリ制御方法を実現するプロセッサである。MAC110fは、DIMM110hとSCとの間に接続され、DIMM110hへのアクセスを制御する。MAC110gは、DIMM110iとSCとの間に接続され、DIMM110iへのアクセスを制御する。DIMM110hは、SCを介して他の電子機器と接続され、メモリを装着してメモリ増設などを行うメモリモジュールである。DIMM110iは、SCを介して他の電子機器と接続され、メモリを装着してメモリ増設などを行うメモリモジュールである。
IOSB150は、XB101を介してSB110〜SB113それぞれと接続されるとともに、SCSI(Small Computer System Interface)、FC(Fibre Channel)、イーサネット(登録商標)などを介して入出力デバイスと接続される。IOSB150は、入出力デバイスとXB101との間におけるデータ転送などの処理を制御する。なお、SB110に搭載されるCPU、MAC、DIMMなどの電子機器はあくまで例示であり、電子機器の種類又は電子機器の数が図示したものに限定されるものではない。
(システム)
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。例えば、アドレス比較部13gとアドレス比較部13hを統合するなど各装置の分散・統合の具体的形態は図示のものに限られない。その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUやMPUおよび当該CPUやMPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
10 プロセッサ
11 命令制御ユニット
12 実行ユニット
13 記憶ユニット
13a 制御部
13b 命令選択/パイプ処理部
13c アドレス保持部
13d XFILLフラグ保持部
13e XFILLアドレス保持部
13f アドレス選択/パイプ処理部
13g アドレス比較部
13h アドレス比較部
13i アドレス管理部
13j 命令完了通知部
13k 命令再投入管理部
14 1次命令キャッシュメモリ
15 1次データキャッシュメモリ
16 外部接続ユニット
16a 2次キャッシュメモリ
16b タグメモリ部
16c データ部
20 主記憶装置

Claims (12)

  1. 主記憶装置に接続される演算処理装置において、
    前記主記憶装置が保持するデータの一部を、複数のキャッシュラインにそれぞれ保持するキャッシュメモリ部と、
    前記キャッシュラインに保持されるデータの検索に用いるタグアドレスと、前記キャッシュラインに保持されるデータの有効性を示すフラグとを、前記複数のキャッシュラインにそれぞれ保持するタグメモリ部と、
    指定アドレスに対応するキャッシュラインに対してキャッシュライン充填命令を実行する命令実行部と、
    前記命令実行部が前記キャッシュライン充填命令を実行した場合に、前記キャッシュメモリ部における前記指定アドレスに対応するタグアドレスのキャッシュラインに所定データを登録するとともに、前記指定アドレスに対応するタグアドレスのキャッシュラインに対応するフラグを有効にするキャッシュメモリ制御部を有することを特徴とする演算処理装置。
  2. 前記演算処理装置はさらに、
    前記キャッシュメモリ部において、
    前記指定アドレスに対応するタグアドレスのキャッシュラインへの所定データの登録と、前記指定アドレスに対応するタグアドレスのキャッシュラインに対応するフラグの有効化が完了するまで、前記対象アドレスを保持するアドレス保持部と、
    前記アドレス保持部が前記対象アドレスを保持する間、前記命令実行部による前記対象アドレスに対するメモリアクセス命令の実行を抑止する命令抑止部をさらに有することを特徴とする請求項1記載の演算処理装置。
  3. 前記演算処理装置において、
    前記命令抑止部は、前記キャッシュメモリ制御部による前記指定アドレスに対応するタグアドレスのキャッシュラインへの所定データの登録と、前記指定アドレスに対応するタグアドレスのキャッシュラインに対応するフラグの有効化が完了した場合に、前記命令実行部による前記対象アドレスに対するメモリアクセス命令の実行の抑止を解除し、
    前記命令実行部は、前記命令実行部による前記対象アドレスに対するメモリアクセス命令の実行の抑止の解除後に、前記対象アドレスに対してストア命令を実行することを特徴とする請求項2記載の演算処理装置。
  4. 前記演算処理装置はさらに、
    前記キャッシュメモリ部が保持するデータの一部を保持する第2のキャッシュメモリ部と、
    前記第2のキャッシュメモリ部にデータを登録するデータ登録部を有し、
    前記データ登録部は、前記キャッシュメモリ制御部による前記指定アドレスに対応するタグアドレスのキャッシュラインへの所定データの登録と、前記指定アドレスに対応するタグアドレスのキャッシュラインに対応するフラグの有効化が完了した場合に、前記所定データを前記第2のキャッシュメモリ部に登録し、
    前記命令実行部は、前記所定データの前記第2のキャッシュメモリ部への登録後に、前記対象アドレスに対してストア命令を実行することを特徴とする請求項3記載の演算処理装置。
  5. 主記憶装置と前記主記憶装置に接続される演算処理装置を有する情報処理装置において、
    前記演算処理装置は、
    前記主記憶装置が保持するデータの一部を、複数のキャッシュラインにそれぞれ保持するキャッシュメモリ部と、
    前記キャッシュラインに保持されるデータの検索に用いるタグアドレスと、前記キャッシュラインに保持されるデータの有効性を示すフラグとを、前記複数のキャッシュラインにそれぞれ保持するタグメモリ部と、
    指定アドレスに対応するキャッシュラインに対してキャッシュライン充填命令を実行する命令実行部と、
    前記命令実行部が前記キャッシュライン充填命令を実行した場合に、前記キャッシュメモリ部における前記指定アドレスに対応するタグアドレスのキャッシュラインに所定データを登録するとともに、前記指定アドレスに対応するタグアドレスのキャッシュラインに対応するフラグを有効にするキャッシュメモリ制御部を有することを特徴とする情報処理装置。
  6. 前記演算処理装置はさらに、
    前記キャッシュメモリにおいて、
    前記指定アドレスに対応するタグアドレスのキャッシュラインへの所定データの登録と、前記指定アドレスに対応するタグアドレスのキャッシュラインに対応するフラグの有効化が完了するまで、前記対象アドレスを保持するアドレス保持部と、
    前記アドレス保持部が前記対象アドレスを保持する間、前記命令実行部による前記対象アドレスに対するメモリアクセス命令の実行を抑止する命令抑止部をさらに有することを特徴とする請求項5記載の情報処理装置。
  7. 前記演算処理装置において、
    前記命令抑止部は、前記キャッシュメモリ制御部による前記指定アドレスに対応するタグアドレスのキャッシュラインへの所定データの登録と、前記指定アドレスに対応するタグアドレスのキャッシュラインに対応するフラグの有効化が完了した場合に、前記命令実行部による前記対象アドレスに対するメモリアクセス命令の実行の抑止を解除し、
    前記命令実行部は、前記命令実行部による前記対象アドレスに対するメモリアクセス命令の実行の抑止の解除後に、前記対象アドレスに対してストア命令を実行することを特徴とする請求項6記載の情報処理装置。
  8. 前記演算処理装置はさらに、
    前記キャッシュメモリ部が保持するデータの一部を保持する第2のキャッシュメモリ部と、
    前記第2のキャッシュメモリ部にデータを登録するデータ登録部を有し、
    前記データ登録部は、前記キャッシュメモリ制御部による前記指定アドレスに対応するタグアドレスのキャッシュラインへの所定データの登録と、前記指定アドレスに対応するタグアドレスのキャッシュラインに対応するフラグの有効化が完了した場合に、前記所定データを前記第2のキャッシュメモリ部に登録し、
    前記命令実行部は、前記所定データの前記第2のキャッシュメモリ部への登録後に、前記対象アドレスに対してストア命令を実行することを特徴とする請求項7記載の情報処理装置。
  9. 主記憶装置が保持するデータの一部を、複数のキャッシュラインにそれぞれ保持するキャッシュメモリ部と、前記キャッシュラインに保持されるデータの検索に用いるタグアドレスと、前記キャッシュラインに保持されるデータの有効性を示すフラグとを、前記複数のキャッシュラインにそれぞれ保持するタグメモリ部と、を有する演算処理装置のキャッシュメモリ制御方法において、
    前記演算処理装置が有する命令実行部が、指定アドレスに対応するキャッシュラインに対してキャッシュライン充填命令を実行するステップと、
    前記命令実行部が前記キャッシュライン充填命令を実行した場合に、前記演算処理装置が有するキャッシュメモリ制御部が、前記キャッシュメモリ部における前記指定アドレスに対応するタグアドレスのキャッシュラインに所定データを登録するとともに、前記指定アドレスに対応するタグアドレスのキャッシュラインに対応するフラグを有効にするステップを有することを特徴とするキャッシュメモリ制御方法。
  10. 前記キャッシュメモリ制御方法はさらに、
    前記演算処理装置が有するアドレス保持部が、前記キャッシュメモリ部において、前記指定アドレスに対応するタグアドレスのキャッシュラインへの所定データの登録と、前記指定アドレスに対応するタグアドレスのキャッシュラインに対応するフラグの有効化が完了するまで、前記対象アドレスを保持するステップと、
    前記演算処理装置が有する命令抑止部が、前記アドレス保持部が前記対象アドレスを保持する間、前記命令実行部による前記対象アドレスに対するメモリアクセス命令の実行を抑止するステップをさらに有することを特徴とする請求項9記載のキャッシュメモリ制御方法。
  11. 前記キャッシュメモリ制御方法において、
    前記命令抑止部は、前記キャッシュメモリ制御部による前記指定アドレスに対応するタグアドレスのキャッシュラインへの所定データの登録と、前記指定アドレスに対応するタグアドレスのキャッシュラインに対応するフラグの有効化が完了した場合に、前記命令実行部による前記対象アドレスに対するメモリアクセス命令の実行の抑止を解除し、
    前記命令実行部は、前記命令実行部による前記対象アドレスに対するメモリアクセス命令の実行の抑止の解除後に、前記対象アドレスに対してストア命令を実行することを特徴とする請求項10記載のキャッシュメモリ制御方法。
  12. 前記演算処理装置はさらに、
    前記キャッシュメモリ部が保持するデータの一部を保持する第2のキャッシュメモリ部と、
    前記第2のキャッシュメモリ部にデータを登録するデータ登録部を有し、
    前記キャッシュメモリ制御方法はさらに、
    前記データ登録部が、前記キャッシュメモリ制御部による前記指定アドレスに対応するタグアドレスのキャッシュラインへの所定データの登録と、前記指定アドレスに対応するタグアドレスのキャッシュラインに対応するフラグの有効化が完了した場合に、前記所定データを前記第2のキャッシュメモリ部に登録するステップと、
    前記命令実行部が、前記所定データの前記第2のキャッシュメモリ部への登録後に、前記対象アドレスに対してストア命令を実行するステップを有することを特徴とする請求項11記載のキャッシュメモリ制御方法。
JP2009296262A 2009-12-25 2009-12-25 演算処理装置、情報処理装置及びキャッシュメモリ制御方法 Expired - Fee Related JP5482197B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2009296262A JP5482197B2 (ja) 2009-12-25 2009-12-25 演算処理装置、情報処理装置及びキャッシュメモリ制御方法
US12/929,027 US8856478B2 (en) 2009-12-25 2010-12-22 Arithmetic processing unit, information processing device, and cache memory control method
EP20100196545 EP2339472B1 (en) 2009-12-25 2010-12-22 Arithmetic processing unit, information processing device, and cache memory control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009296262A JP5482197B2 (ja) 2009-12-25 2009-12-25 演算処理装置、情報処理装置及びキャッシュメモリ制御方法

Publications (2)

Publication Number Publication Date
JP2011138213A true JP2011138213A (ja) 2011-07-14
JP5482197B2 JP5482197B2 (ja) 2014-04-23

Family

ID=43837932

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009296262A Expired - Fee Related JP5482197B2 (ja) 2009-12-25 2009-12-25 演算処理装置、情報処理装置及びキャッシュメモリ制御方法

Country Status (3)

Country Link
US (1) US8856478B2 (ja)
EP (1) EP2339472B1 (ja)
JP (1) JP5482197B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018206175A (ja) * 2017-06-07 2018-12-27 富士通株式会社 コンパイラ、情報処理装置及びコンパイル方法

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2696289B1 (en) * 2011-04-07 2016-12-07 Fujitsu Limited Information processing device, parallel computer system, and computation processing device control method
US9916252B2 (en) * 2015-05-19 2018-03-13 Linear Algebra Technologies Limited Systems and methods for addressing a cache with split-indexes
WO2018211122A1 (en) 2017-05-19 2018-11-22 Movidius Ltd. Methods, systems and apparatus to reduce memory latency when fetching pixel kernels
KR20180127707A (ko) * 2017-05-22 2018-11-30 에스케이하이닉스 주식회사 메모리 모듈 및 이의 동작 방법
KR102490104B1 (ko) * 2017-10-30 2023-01-19 삼성전자주식회사 데이터 보호를 사용하는 인-밴드 메모리에 액세스하기 위한 장치 및 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05143451A (ja) * 1991-11-20 1993-06-11 Kisaburo Nakazawa データ処理装置
JP2009157612A (ja) * 2007-12-26 2009-07-16 Fujitsu Microelectronics Ltd キャッシュメモリシステム及びキャッシュメモリの制御方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63240650A (ja) * 1987-03-28 1988-10-06 Toshiba Corp キヤツシユメモリ装置
US5455924A (en) * 1993-02-09 1995-10-03 Intel Corporation Apparatus and method for partial execution blocking of instructions following a data cache miss
US5897654A (en) * 1995-02-10 1999-04-27 International Business Machines Corporation Method and system for efficiently fetching from cache during a cache fill operation
IT1288153B1 (it) 1996-04-10 1998-09-11 Roces Srl Telaio per pattini, in particolare pattini a rotelle longitudinalmente allineate e procedimento per realizzare il telaio.
US6374330B1 (en) 1997-04-14 2002-04-16 International Business Machines Corporation Cache-coherency protocol with upstream undefined state
US6000015A (en) * 1997-09-16 1999-12-07 Unisys Corporation Processor bus traffic optimization system for multi-level cache utilizing reflection status bit to indicate data inclusion in a higher level cache
JP2000076205A (ja) 1998-08-28 2000-03-14 Hitachi Ltd マルチプロセッサ
US6360298B1 (en) 2000-02-10 2002-03-19 Kabushiki Kaisha Toshiba Load/store instruction control circuit of microprocessor and load/store instruction control method
JP2002366433A (ja) * 2001-06-11 2002-12-20 Nec Microsystems Ltd キャッシュメモリ制御装置およびプロセッサ
JP2003029967A (ja) 2001-07-17 2003-01-31 Fujitsu Ltd マイクロプロセッサ
US6895475B2 (en) * 2002-09-30 2005-05-17 Analog Devices, Inc. Prefetch buffer method and apparatus
US20110131381A1 (en) * 2009-11-27 2011-06-02 Advanced Micro Devices, Inc. Cache scratch-pad and method therefor

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05143451A (ja) * 1991-11-20 1993-06-11 Kisaburo Nakazawa データ処理装置
JP2009157612A (ja) * 2007-12-26 2009-07-16 Fujitsu Microelectronics Ltd キャッシュメモリシステム及びキャッシュメモリの制御方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018206175A (ja) * 2017-06-07 2018-12-27 富士通株式会社 コンパイラ、情報処理装置及びコンパイル方法
US10452368B2 (en) 2017-06-07 2019-10-22 Fujitsu Limited Recording medium having compiling program recorded therein, information processing apparatus, and compiling method

Also Published As

Publication number Publication date
EP2339472A2 (en) 2011-06-29
EP2339472A3 (en) 2012-02-15
JP5482197B2 (ja) 2014-04-23
US8856478B2 (en) 2014-10-07
US20110161600A1 (en) 2011-06-30
EP2339472B1 (en) 2013-07-10

Similar Documents

Publication Publication Date Title
US9513904B2 (en) Computer processor employing cache memory with per-byte valid bits
US8706973B2 (en) Unbounded transactional memory system and method
US7493452B2 (en) Method to efficiently prefetch and batch compiler-assisted software cache accesses
US9886397B2 (en) Load and store ordering for a strongly ordered simultaneous multithreading core
US9367348B2 (en) Protecting the footprint of memory transactions from victimization
US9798577B2 (en) Transactional storage accesses supporting differing priority levels
US8423736B2 (en) Maintaining cache coherence in a multi-node, symmetric multiprocessing computer
US7620954B2 (en) Mechanism for handling load lock/store conditional primitives in directory-based distributed shared memory multiprocessors
US20160062892A1 (en) Cache backing store for transactional memory
JP5482197B2 (ja) 演算処理装置、情報処理装置及びキャッシュメモリ制御方法
JPH0239254A (ja) データ処理システム及びそのキヤツシユ記憶システム
JPH10283261A (ja) キャッシュ・エントリの予約処理方法及び装置
GB2507759A (en) Hierarchical cache with a first level data cache which can access a second level instruction cache or a third level unified cache
JP4577729B2 (ja) ライトバックキャッシュにおいてスヌーププッシュ処理やスヌープキル処理が同時発生しているときのライトバック処理をキャンセルするためのシステムおよび方法
JP5625809B2 (ja) 演算処理装置、情報処理装置及び制御方法
JP3550092B2 (ja) キャッシュ装置及び制御方法
JP2007058349A (ja) キャッシュシステム
US9027009B2 (en) Protecting the integrity of binary translated code
US9558119B2 (en) Main memory operations in a symmetric multiprocessing computer
JP2007207224A (ja) データ・ラインをキャッシュに書き込む方法
US8327070B2 (en) Method for optimizing sequential data fetches in a computer system
WO2023239671A1 (en) Virtual memory paging system and translation lookaside buffer with pagelets
CN115098409A (zh) 进行阶层式高速缓存系统回存且无效的处理器以及方法
JP2010204933A (ja) キャッシュシステムおよびこれを用いるコンピュータ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120910

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131016

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131105

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131225

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: 20140121

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140203

R150 Certificate of patent or registration of utility model

Ref document number: 5482197

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees