JP4234361B2 - 記憶制御装置およびデータ格納方法 - Google Patents

記憶制御装置およびデータ格納方法 Download PDF

Info

Publication number
JP4234361B2
JP4234361B2 JP2002191456A JP2002191456A JP4234361B2 JP 4234361 B2 JP4234361 B2 JP 4234361B2 JP 2002191456 A JP2002191456 A JP 2002191456A JP 2002191456 A JP2002191456 A JP 2002191456A JP 4234361 B2 JP4234361 B2 JP 4234361B2
Authority
JP
Japan
Prior art keywords
data
store
memory
write
unit
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.)
Expired - Fee Related
Application number
JP2002191456A
Other languages
English (en)
Other versions
JP2004038341A (ja
Inventor
巌 山崎
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 JP2002191456A priority Critical patent/JP4234361B2/ja
Priority to US10/349,022 priority patent/US7281091B2/en
Publication of JP2004038341A publication Critical patent/JP2004038341A/ja
Application granted granted Critical
Publication of JP4234361B2 publication Critical patent/JP4234361B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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/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/30181Instruction operation extension or modification
    • 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
    • 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
    • G06F9/3834Maintaining memory consistency
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Executing Machine-Instructions (AREA)

Description

【0001】
【発明の属する技術分野】
本発明はデータ処理装置における制御方式に係わり、更に詳しくは演算ユニットから送られ、キャッシュメモリなどに格納されるべきストアデータを保持するストアポートを備えるプロセッサなどにおける記憶制御方式に関する。
【0002】
【従来の技術と発明が解決しようとする課題】
主にアウトオブオーダ方式を採用するスーパースカラプロセッサなどにおいては、命令処理装置の管理下におかれ、キャッシュメモリやメモリ、例えば主記憶に格納すべきデータを一時的に保持するための、例えばストアポートやライトバッファに、ストアリクエストが割り当てられて、ストア要求の処理が行われる。
【0003】
このようなライトバッファなどを利用する従来技術として次の文献がある。
文献1)特開平6−4402号公報「データ処理装置」
文献2)特開平10−55303公報「メモリシステム」
文献1では、中央処理装置と主記憶装置との間にキャッシュ記憶装置を備えるデータ処理装置において、中央処理装置とキャッシュの間に、少なくとも単数の書き込みアドレスおよびデータを保持するライトバッファを備え、ストア命令の実行時に書き込みデータをまずライトバッファに書き込み、その後キャッシュ記憶装置に書き込む技術が開示されている。
【0004】
文献2においては、命令バスとデータバスを分離し、CPUと主記憶装置との間に、並列に組み込まれ、アドレス比較器を持たない4つのライトバッファを備え、データライトはライトバッファを介してメモリにデータをライトすることにより、システム全体のスピードの向上を図るメモリシステムが開示されている。
【0005】
このように従来においては、ライトバッファあるいはストアポートから直接1次キャッシュにデータの書き込みが行われていた。また専用のライトバッファが2次キャッシュメモリ用に装備されていることもあったが、この場合にも1次キャッシュへの書き込みは、ライトバッファあるいはストアポートから直接に実施されていた。
【0006】
しかしながら最近では、処理性能向上のために命令の先取り実行をより多く可能とすることが求められるようになっており、例えばストアポート(またはライトバッファ)の数を増加する必要が生じてきている。このような要求に対応して、処理性能向上のためにストアポートの数を増加すると、処理対象となるストアポート(またはライトバッファ)の数が増加し、例えばデータをどのストアポートからキャッシュメモリに格納するかを選択するために時間がかかかることになり、1サイクルでそのような処理を行うためには1サイクルの時間を長くしなければならないということになり、ストアポートの数の増大によって処理性能の向上が望まれなくなってしまう。そこで処理性能をおとさずに命令の先取り実行をより多く可能とする方式が求められている。
【0007】
本発明の課題は、基本的にはストアポートの数を増加させることなく、記憶制御装置によるストア命令の処理性能を向上させることである。
【0008】
【課題を解決するための手段】
図1は本発明における記憶制御装置の原理構成ブロック図である。同図は、命令処理装置から送られるストア要求に対応して、演算ユニットから送られ、そのストア要求によってキャッシュメモリ2またはメモリ、例えば主記憶に書き込まれるべきストアデータを保持するストアポート3を備える記憶制御装置1の原理構成ブロック図である。
【0009】
図1において、記憶制御装置1はキャッシュメモリ2、およびストアポート3に加えて、データ格納手段4、およびデータ書き込み制御手段5を備える。データ格納手段4は、例えばライトバッファであり、ストアポート3とキャッシュメモリ2またはメモリとの間で、ストアデータをストアポート3から受け取り、一時的に格納するものであり、データ書き込み制御手段5は、ストアポート3からデータ格納手段4へのストアデータの書き込みを制御するものである。
【0010】
発明の実施の形態においては、データ格納手段3は命令処理装置がストア要求の実行をコミットした後に、ストアポート3からストアデータを受け取ることもできる。
【0011】
実施の形態においては、データ格納手段4がストアポートから受け取ったストアデータをそれぞれ格納する複数のライトバッファを備え、命令処理装置が、n=1の場合を含めて、n個のストア要求の実行を同時にコミットした時、複数のライトバッファのうちで最も新しくデータが格納されたライトバッファから、データが格納されるべき順位でn個先のライトバッファまでの範囲のライトバッファに限定して、データ書き込み制御手段5が限定されたライトバッファへのデータ書き込みを制御することもできる。この時、データを出力したストアポートを解放することができる。
【0012】
また記憶制御装置において、データ格納手段4からキャッシュメモリ2またはメモリへのデータの書き込みを、命令処理装置とは独立して制御するメモリ書き込み制御手段を更に備えることもできる。
【0013】
また記憶制御装置は、前記のライトバッファをキャッシュメモリまたはメモリの応答性能に応じた個数だけ、ストアポートを命令処理装置の性能に応じた個数だけ備えることもできる。
【0014】
またストアポート側とデータ格納手段側とで、同一数のストア要求を処理するために必要な制御フラグを、それぞれ必要なだけ保持することができる。
また実施の形態において、キャッシュメモリが複数の階層によって構成される場合、ストアイン方式、ストアスルー方式のいずれかが採用されている時、あるいはストアイン方式とストアスルー方式とが併用されている時のいずれにおいても、キャッシュメモリの各階層へのデータの書き込みはデータ格納手段から行われる。
【0015】
次に実施の形態において、データ格納手段上で先行するストア要求に対応してすでに格納されているデータに対して、次のストア要求に対応するストアポートからのデータのマージを実行することもできる。この場合、ライトバッファは、ストアポートからのデータのマージを可能とするデータ幅であって、ストアポートの持つデータ幅より大きいデータ幅を有する。
【0016】
ただし、このようなデータのマージは、先行するストア要求と次のストア要求との種類に応じて禁止されることも、また逆に強制的に実行されることもできる。ストア要求のキャンセルが命令処理装置から通知された場合に、データマージは禁止されることもできる。
【0017】
実施の形態においては、ストアデータを、外部からのフェッチ要求に対応して、ストアポートまたはデータ格納手段から直接に外部に与えるストアデータバイパスフェッチを行うこともできる。
【0018】
この場合、例えばデータ格納手段からのデータバイパスフェッチを許可する場合には、ストア要求とフェッチ要求とのそれぞれに対するデータの存在位置を示すバイトマークを複数バイト単位で比較して、バイパス許可候補としてのストアデータを選択した後に、バイトマークを1バイト単位で比較し、バイパスフェッチの是非について最終的に判定することもできる。
【0019】
また実施の形態においては、記憶制御装置はマルチスレッド動作可能な中央処理装置によって制御されるデータ処理装置を構成することもでき、この場合、複数のスレッドの間でストアポートとデータ格納手段とを共有することも、データ格納手段を共有し、ストアポートを排他的に各スレッドが保持することも、ストアポートとデータ格納手段とをそれぞれ排他的に各スレッドが保持することもできる。
【0020】
実施の形態においては、ストアポートとデータ格納手段とのそれぞれに対して、マルチスレッドの各スレッドを識別するスレッド識別子を保持することもでき、前述のストアデータバイパスフェッチの制御においてストアポートまたはデータ格納手段に対して保持されているスレッドの識別子と、フェッチを要求するスレッドの識別子とが異なる場合には、ストアデータバイパスフェッチを禁止することができる。またデータ格納手段に格納されているデータとストアポートからのデータのマージの制御において、ストアポートとデータ格納手段に対して保持されているスレッドの識別子が異なる場合には、データマージを禁止することができる。またスレッドの切り替えに伴って命令処理装置からストア要求のキャンセル信号を受け取った時も、データのマージは禁止される。
【0021】
実施の形態において、データ格納手段へのストアデータの格納までに、ストアデータをメモリ格納時と同一形式にアラインする手段が更に備えられる。この場合、例えばアドレスとオペランド長とに応じたアライン処理を行う手段を含めてストアポートを演算ユニットに近い位置に配置し、データ格納手段をキャッシュメモリまたはメモリに近い位置に配置することもできる。
【0022】
更に実施の形態において、データ格納手段4はストア要求がキャッシュミスしている時、キャッシュラインの要求リクエストを記憶制御装置のパイプラインに投入するキャッシュライン要求手段を備えることもできる。
【0023】
また実施の形態においては、データ格納手段4はストアポート3から受け取ったストアデータをそれぞれ格納する複数のライトバッファを備えると共に、記憶制御装置1が、キャッシュメモリ2またはメモリへのデータの書き込みを、その複数のライトバッファのうちで最も最近ストアポートからデータ格納が行われたライトバッファ以外から行うように制御するメモリ書き込み制御手段を更に備えることもできる。
【0024】
この場合、ストアポートが空になった時、最も最近データの格納が行われたライトバッファからのデータ書き込みが行われないことによって後続の命令が実行不可能となった時、そのライトバッファに格納されたデータに関するキャッシュラインの解放を外部から求められた時、またはそのライトバッファに格納されているデータに対して他のストア要求に関するデータとのマージが禁止されている時のいずれかの場合には、最も最近ストアポートからのデータの格納が行われたライトバッファからキャッシュメモリまたはメモリへのデータ書き込みが行われる。
【0025】
また本発明の記憶制御装置は、演算ユニットから送られ、ストア要求によってキャッシュメモリまたはメモリに書き込まれるべきストアデータをそれぞれ格納する複数のバッファ手段と、その複数のバッファ手段のうちで最も古くデータが格納されたバッファ手段のみを対象として、ストアデータの長さがキャッシュメモリ2またはメモリ上でデータのエラー管理が行われる単位の領域の長さより短い場合に、そのストアデータのキャッシュメモリまたはメモリへの格納を中止させる制御を行うメモリ書き込み制御手段とを備える。
【0026】
また本発明において、命令処理装置から送られるストア要求に対応して、演算ユニットから送られ、ストア要求によってキャッシュメモリまたはメモリに書き込まれるべきストアデータを保持するストアポートを備える記憶制御装置は、ストアポートとキャッシュメモリまたはメモリとの間に、ストアデータをそれぞれ一時的に保持する複数階層のデータ格納手段と、ストアポートからその複数階層の1つ以上の階層のデータ格納手段を介して、キャッシュメモリまたはメモリまでのストアデータの書き込みを制御するストアデータ書き込み制御手段とを備える。
【0027】
またこの場合、複数階層のデータ格納手段がそれぞれ複数個のライトバッファを備えると共に、ストアデータ書き込み制御手段が複数階層のうちにライトバッファの全てにデータが保持されている階層が存在しない時には、複数個のライトバッファが全て空である階層を介することなく、データの書き込み可能なライトバッファが存在する階層を介しながらストアデータの書き込みを制御し、全てにデータが保持されている階層が存在する時には、そのような階層の中でストアポート側に近い階層から更に1階層近い階層のライトバッファ手段を介しながらストアデータの書き込みを制御することもできる。
【0028】
次に本発明のデータ格納方法においては、命令処理装置から送られるストア要求に対応して、演算ユニットから送られるストアデータを複数個のストアポートのうちの1つに格納し、ストアポートに格納されたデータを複数個のライトバッファの1つに格納し、ライトバッファに格納されたデータをキャッシュメモリまたはメモリに格納する方法が用いられる。
【0029】
発明の実施の形態においては、ストアポートに格納されたデータのライトバッファへの格納を、命令処理装置がストア要求の実行をコミットした後に行うこともできる。
【0030】
また実施の形態においては、ライトバッファに格納されたデータのキャッシュメモリまたはメモリへの格納の制御において、複数のライトバッファのうちで最も最近ストアポートからのデータ格納が行われたライトバッファ以外から、キャッシュメモリ、またはメモリへのデータ格納を行うこともできる。
【0031】
以上のように本発明によれば、ストアポートとキャッシュメモリまたはメモリとの間に、例えば複数のライトバッファによって構成されるデータ格納手段が設けられ、ストアポートからデータ格納手段、データ格納手段からキャッシュメモリまたはメモリの順序にストアデータの格納が行われる。
【0032】
【発明の実施の形態】
図2は本発明の実施形態におけるキャッシュへのデータ格納方式の基本説明図である。本実施形態では命令処理装置、すなわち命令ユニット(IU)10から送られるストア要求に対応して、演算(実行)ユニット(EU)11から送られるデータが記憶制御ユニット12、すなわち記憶制御装置内のストアバッファ部13、およびライトバッファ部14を介して、(1次)キャッシュ15に格納される。
【0033】
本実施形態においては演算ユニット11から送られたデータは、ストアバッファ部13内の(n+1)個のストアポート(STP0〜STOn)のいずれかに格納された後に、ストア命令がコミットされた時点でライトバッファ部14内の(n+1)個のライトバッファ(WB0〜WBn)のいずれかに格納され、その後(1次)キャッシュ15に格納される。また本実施形態では各STPは8バイト、各WBは16バイトのデータ幅とする。
【0034】
図3は図2の命令ユニット、および記憶制御ユニットの詳細構成を示すブロック図である。同図において命令ユニット20は、記憶制御ユニット25に与えるストア命令を格納するストア命令格納部21、命令実行制御のための処理待ちのスタックなどを含むリザベーションステーション22、命令制御ユニット25にストア要求を送るにあたって、そのストア要求に対応するアドレスとデータを格納すべきストアポート、すなわち図2では(n+1)個、図3では10個のストアポート(STP)のうち、どのストアポートにその要求を割り当てるかを示すためのネクストカウンタ23、10個のSTPのうちでストア要求が割り当てられ、現在使用されているカウンタの数を示すユーズドカウンタ24とを備えている。
【0035】
図3の記憶制御ユニット(SU)25の内部のストアバッファ部26は、ストアバッファ部全体を制御するストアバッファ(STB)制御部28、図2では(n+1)個、ここでは10個のSTP29、命令ユニット20からの要求に対応してストアポートを割り当てるSTP割り当て部30、STP29からライトバッファへのデータ書き込み要求を制御するライトバッファゴーリクエスト(WB_GO_REQ)制御部31、ライトバッファへのデータ書き込みを行うべきSTPを示すポインタとしてのプリライトバッファゴーストアポート(PRE_WB_GO_STP)ポインタ格納部32、ライトバッファへの書き込みを行ったSTPを開放するための制御を行うストアポートツーフリー(SPTOFREE)制御部33を備えている。
【0036】
またライトバッファ部27は、ここでは5個のライトバッファ(WB)35、STPからWBへのデータの格納を制御するライトバッファゴー(WB_GO)制御部36、最も最近データが格納されたWBを示すポインタとしてのWBボトムオブキュー(BOQ)などを保持するWB_BOQ格納部37、データを保持しているWBのうちで最も古くデータが格納されたWBを示すポインタとしてのWBトップオブキュー(TOQ)などを保持するWB TOQ格納部38、STPからWBへのデータ書き込みが許可されたことを示すWBホールド(HLD)フラグなどを保持するWB_HLD格納部39を備えている。なお本発明の記憶制御装置などはすべてハードウエアによって実現され、各フラグは信号に対応する。
【0037】
図4はストアポートからライトバッファへのデータの格納、およびこれと関連するライトバッファ上でのデータのマージに対する基本的な処理の説明図である。同図においてWB_BOQフラグ格納部41には、前述のWB_BOQのポインタの値に加えて、前回WBに書き込んだデータの属性や、そのアドレス、すなわち主記憶上でのアドレスなどが格納されている。またWB_GOフラグ格納部42には、WBにこれから書き込むべきデータの属性や、そのアドレスなどが格納されている。
【0038】
マージ条件確認部43は、WB_BOQフラグ格納部41から出力される、後述するノーマージフラグの値や、WB_GOフラグ格納部42から出力される、後述するニューアロケートフラグの値などを用いて、データのマージの可否を決定し、マージを許可できない場合にはマージを禁止することを示すINH_MERGEフラグをセットし、マージチェック部44に出力する。
【0039】
WB_BOQ_AAR格納部46は、前回WBへ書き込みが行われたデータのアドレス、すなわちWB_BOQによってポイントされるWBに格納されているデータの絶対アドレスAARを格納しており、またWB_GO_STAAR格納部47はSTP側から今回WBに書き込まれるべきデータ、すなわちストアポート内のデータの絶対アドレスを格納しており、アドレス比較部48はこれらの2つのアドレスを比較して、その結果に応じてアドレスマッチ信号をマージチェック部44に出力する。
【0040】
マージチェック部44は、マージ条件確認部43からのINH_MERGE信号、アドレス比較部48から出力されるアドレスマッチ信号、およびWB_BOQフラグ格納部41から出力されるWB_BOQ_VALID信号、すなわちWB_BOQによってポイントされるWBに有効なデータが格納されていることを示す信号を用いてマージの可否を判定し、WB上でのデータのマージを許可する場合にはマージイネーブル信号を出力する。
【0041】
続いて図2〜図4を用いてストアポートSTPからライトバッファWBへのデータの書き込みが行われる4サイクルの動作についてさらに詳細に説明する。この書き込み動作はPRE_WB_GOサイクル、WB_GOサイクル、WB_GO_1TC(τコピー)サイクル、およびWB_GO_2TCサイクルの4サイクルかかって実施される。
【0042】
WB_GOサイクルでWBへのデータの書き込みが行われるべきSTPをさし示すポインタとして、前述のPRE_WB_GO_STPがある。そしてポインタWB_GO_STPは、このポインタの1サイクル後の値を保持して、WB_GOサイクルで使用されるべきSTPをポイントすることになる。
【0043】
STP内に格納されているデータのアドレスを保持するレジスタとして、ストアポート絶対アドレスレジスタ(STAAR)0〜9がある。PRE_WB_GO_STPによって示されるストアポートのデータの絶対アドレスが選択され、その結果は図4のWB_GO_STAAR格納部47に格納される。このアドレスの値は、WBにデータが書き込まれた時に、前回書き込まれたデータのアドレスを保持するWB_BOQ_AAR格納部46にも書き込まれる。更にデータが書き込まれたWBの番号に対応するWB内の絶対アドレスレジスタWB_AAR0〜4にも書き込まれる。
【0044】
WB_GO、すなわちSTPからWBに対するデータの書き込み要求は、PRE_WB_GO_STPによって指示されるSTPが、命令ユニットがストア命令を実行してもよいことを決定し、その決定を示すコミットがSTPに送られた時か、あるいは新しくPRE_WB_GO_STPでポイントされることになったSTPがコミットを受け取っていた時に発生する。この要求は図3のWB_HLD格納部39に送られ、WBホールド(HLD)フラグがセットされる。すなわちWB_HLDフラグは基本的にはSTP側でセットされてWB側に渡される。
【0045】
WB_HLDフラグのセットによって、STPからWBへのデータの書き込みの準備が終了する。但し、後述するようにWB_BOQとWB_TOQとの間の関係によって、WBへのデータの書き込みが保留されることがある。その場合には、WB_HLDフラグがセットされたまま、保留条件が解除されるまでWBへのデータの書き込みは行われない。
【0046】
WB_BOQは、WB_GOの要求に対応してSTPからWBへとデータの書き込みを行うべき時に、データの書き込み先となるWBを決定するために使用される。WB_BOQによって指示されるWBの内容が、例えばキャッシュにライト済みになって空となっているか、あるいはそのWBのデータに対してストアデータをマージすべき時には、そのWBにSTPのデータが書き込まれる。
【0047】
それ以外の場合、すなわちWB_BOQによって示されるWBにすでに何かのデータが格納されており、ストアデータのマージを行わない場合には、WB BOQによって示されるWBの次のWB(WB_BOQ+1)にデータの書き込みが行われる。すなわち、WB_GOの要求に対応してデータの書き込み対象となるWBは、WB_BOQ、またはWB_BOQ+1のいずれかによってポイントされるWBである。
【0048】
WB_TOQは、データが格納されているWBの中で、最も古くデータの書き込みが行われたWBを示すポインタであり、WB_TOQがさすWBとWB_BOQ+1がさすWBとが一致している場合には、全てのWBにデータが格納されていることを意味する。この場合、前述のWB_HLDフラグがセットされていても、WBへの書き込みは保留される。WB_HLDフラグがセットされていて、これらの2つのポインタの値が異なる時に、WB_GO信号がオンとなり、STPからWBへのデータの書き込みが行われる。
【0049】
図4のWB BOQ AAR格納部46と、WB_BOQ_STAAR格納部47とに格納されているアドレスが、アドレス比較部48によって比較され、2つのアドレスが一致している場合には、前回データの書き込みが行われたWBと今回書き込みを行うべきWBとが一致していると判定され、WB_BOQによってポイントされるWBへのデータの書き込みが可能となる。すなわち、このポインタによって示されるWBが空であるか、前回のストアへのSTP側からのマージ禁止要因、または後続のストアに対するWB側からのマージ禁止要因が存在しなければ、WB_BOQによって示されるWBへの書き込みが行われる。
【0050】
これに対して2つの絶対アドレス格納部46,47に格納されているアドレスが一致しない場合、または何らかのマージ禁止要因が存在する時には、WB_BOQ+1によってポイントされるWBにデータが書き込まれる。
【0051】
書き込み対象となったWBに対しては、クロックイネーブル(CE)_WB0〜4_1TCがセットされる。このフラグは次のサイクルにおいてWBに実際にデータが書き込まれる時のWBの判定に利用される。さらにWB_GO_STPの値は、次のサイクルで実際にWBへのデータの書き込みが行われるべきSTPのデータ部を示すポインタとしてのWB_GO_1TC_STPに送られ、実際のデータの書き込みにあたってSTPからのデータの選択に利用される。
【0052】
すなわち、次のサイクルでWB_GO_1TC_STPによって示されるSTPのデータ部からデータが選択され、ライトバッファのデータレジスタ(WBDR)0〜4に送られる。この時データが書き込まれるべきWBに対しては、前述のCE_WB0〜4_1TCがセットされており、これによってSTPに格納されているデータが書き込み対象となるWBに正しく書き込まれる。
【0053】
図3において命令ユニット(IU)20は、ストア命令に対応して記憶制御ユニット(SU)25に対してストア要求を送ると共に、ネクストカウンタ23によって示されるストアポートへのそのストア要求の割り当てを決定し、そのストアポート番号をSTP割り当て部30に送る。図では同時に2つの要求が送られている。
【0054】
それと共に命令実行状況を管理するリザベーションステーション22内のストア要求管理部に、割り当てたストアポート番号を通知する。また割り当てたストア命令の数だけユーズドカウンタ24をインクリメントする。ユーズドカウンタ24の値がストアポートの数、ここでは10に達すれば、新しいストア要求を記憶制御ユニット25に送ることができない。
【0055】
記憶制御ユニット25内のストアバッファ部26では、命令ユニット20から受け取ったストア要求の種類に対応して、STPに対してストア要求の種類を示すストアバッファオペレーションコード(STB_OPC)7ビット[6:0]がセットされる。このコードは、7種類のストア要求を識別するために、いずれか1ビットだけが“1”となるコードである。このコードの各ビットの意味は次の取りである。
【0056】
[0]:ST(ストア)、通常のストア命令を表す。
[1]:FS(フェッチアンドストア)、すなわちコンペアアンドスワップ(CAS)命令のように、命令のフェッチからストアの完了までデータが他のCPUに書き換えられることを防ぐために、キャッシュラインを他系のCPUに渡さないで処理が行われるべき命令を表す。
【0057】
[2]:パーシャルストア、すなわち8バイトの領域のうちで指定されたバイトの位置に対してだけデータのストアを行う処理を表す。
[3]:ブロックストア、すなわち64バイトブロックのストアを表す。このコードが指定された場合には、キャッシュに排他型でヒットする時はキャッシュに書き込み、キャッシュに共有型でヒットする時にはヒットしたキャッシュラインを無効化しつつ、主記憶にデータを書き込む。キャッシュにヒットしない場合には主記憶にデータを書き込むブロックストアを行う。
【0058】
[4]:ブロックコミットストア、すなわち64バイトブロックのストアであり、キャッシュヒットの有無に関係なく主記憶にデータを書き込み、キャッシュヒットしている場合にはヒットしたキャッシュラインを無効化する。
【0059】
[5]:ASI_SU_WT、アドレススペースアイデンティファイヤ(ASI)指定による1次キャッシュ装置の内部のレジスタなどへの書き込みを表す。ASIを指定することにより、キャッシュの制御レジスタを書き換えて特殊な命令を割り当てることができる。例えばメモリアクセスでは、普通はトランスレーションルックアサイドバッファ(TLB)の内容によってアドレスが指定され、メモリアクセスが行われるが、例えば後述するノンキャッシュアクセスとして、I/O領域を介して、例えば外部のメモリにアクセスするような特殊が命令が割り当てられるコードである。
【0060】
[6]:ASI_SX_WT、すなわちSX(セカンドキャッシュアンドエクスターナルアクセスユニット)内部のレジスタなどへのASI指定による書き込みを表す。
【0061】
図3のストアバッファ部26では、ストア要求に対応して割り当てられたSTPに対応して命令の識別子としてのインストラクションID(IID)などを保持し、またそのSTPに対するシーケンスID(SID)に2ビットの“11”をセットし、そのSTPが有効であることを示すフラグとする。またライトバッファゴーリクエスト(WB_GO_REQ)制御部31を介してライトバッファ部27内のWB_HLDフラグをセットする。このフラグはWBへのデータの書き込みが完了したか、WBにデータを書き込む必要がなくなった時にリセットされる。
【0062】
また記憶制御ユニット25は、命令ユニット20からストア要求を受け取った時に要求に付随して送られてくる前述のASI、ストア要求の種類を示すSTB_OPC、ストア命令のアドレスの一部としてのADRS[4:0]、ストア命令のオペランド長を示すLENGTH[3:0]を保持する。
【0063】
そしてストア命令の先頭アドレスとストア命令のオペランド長から、8バイト境界内でのストア対象バイトの位置を示すバイトマークBM[7:0]をセットする。このバイトマークでは、8バイトのそれぞれのバイトに対応するビットの中で、ストア対象データが存在するバイトに対応するビットに“1”がセットされる。またストア命令が前述のブロックストア命令の先頭のストアに対応する場合には、BST_1STフラグを、また最後のストアの場合にはBST_LASTフラグをセットする。
【0064】
命令ユニット20から受け取るIIDは、ストア命令だけでなく分岐、演算、ロードなどを含めた全ての命令の実行順序を示す識別子である。これもSTPに保持され、ロード命令とストア命令の実行順序の判別などに用いて、ロード命令を一時的に停止させたり、STPから直接にロードデータを供給したりするために使用される。
【0065】
記憶制御ユニット25は、ストア要求を受け取った時点でその要求をパイプラインに流し、ストア命令に対応して例外が発生しないか否かを確認し、その結果を命令ユニット20に通知する。そして例外発生の有無に関係なく、ポストステータスバリッド(PSTV)フラグをセットする。このフラグがセットされている時には、記憶制御ユニット25によってパイプラインで検出可能な例外の検出が完了したことを意味すると共に、TLBの検索結果などからストア命令に対応して仮想アドレスと物理アドレスとの対応関係が得られたことも意味している。
【0066】
例外が発生した場合には、STPに対するSIDとして2ビットの“10”をセットし、例外が発生したことを示すフラグとする。そしてこのSTPに対してはキャッシュへの書き込みを行う必要がなくなったものとして、WB_HLDフラグをリセットする。これによってライトバッファを無駄に使用することが防止される。
【0067】
またパイプラインにストア要求を流す際に、TLBやキャッシュタグの検索も行う。キャッシュタグの検索の結果、排他型でキャッシュラインが存在することが判明した場合には、そのことを示すためにSTPに対応するラインID(LID)フラグをセットする。このフラグは、キャッシュへのデータの書き込みが完了する前に、キャッシュラインがキャッシュから追い出されたらリセットされる。またキャッシュヒットウェイを示すオペランドウェイ(OPWAY)[1:0]をセットする。
【0068】
TLBの検索の結果、サイドエフェクト(SE)の属性を持つページに対応するストア命令である場合には、そのSTPに対応するTLB_SEフラグをセットし、この要求の前後におけるストアデータのマージを禁止する。SE属性とはサイドエフェクト、すなわち余計な効果が起こる可能性がある時に、その命令をインオーダで実行させる、すなわち実行順序的に本当に実行すべき時にその命令を実行させる制御を意味する。
【0069】
TLBの検索によってノンキャッシュ(NC)属性を持ったぺージであることが判明した場合には、TLB_CP(キャッシャブルフィジカル)フラグを“0”にリセットする。このノンキャッシュ属性は、キャッシュではなく、I/O領域に対するアクセスの属性を意味する。
【0070】
更にTLBの検索によってリトルエンディアンが指示されたストアであることが判明した場合には、TLB_LEフラグをセットする。このフラグがセットされたSTPに対しては、ストアがリトルエンディアンの形式で実行されることになる。
【0071】
図2の演算ユニット11側でストアデータが用意されると、そのデータは図3の記憶制御ユニット25に送られると共に、命令ユニット20からそのストアデータを格納すべきSTP29の番号が指示される。SU25側では、送られたストアデータをSTP29内のデータ部に格納し、ストアデータを受け取ったことを意味するRSTDV(レシーブストアデータバリッド)フラグをセットする。
【0072】
ストア命令を完了するまでの間に、ストア命令に先行する命令列において分岐が生じたり、例外が発生したりしてストア命令の実行を中止する必要が生じる場合がある。そのような場合には、命令ユニット20はストア命令のキャンセルを指示する信号をSU25に送る。SU25では、ストア命令の実行許可としてのコミットを受け取っていないSTP29に対応するSIDを“01”にセットし、命令がキャンセルされたことを示すフラグとする。命令がキャンセルされたSTP29内のデータはキャッシュや主記憶に書き込む必要がないため、WBにも書き込まない。従って同時にWB_HLDフラグもリセットする。
【0073】
またIU20からのキャンセル指示に対応して、STB制御部28はキャンセルを受け取ったことを示すテンポラリィなフラグをセットする。このフラグが上がっている時にストア要求を受け取ると、対応するSTPに対するポストキャンセルフラグ(POST_CAN)フラグをセットし、同時に前述のテンポラリフラグをリセットする。テンポラリフラグがセットされている時に同時に2つ以上のストア要求を受け取った時には、若い方のストア要求に対応するSTPのポストキャンセルフラグをセットする。
【0074】
これによってIU20からキャンセルの指示を受け取った後に最初に受け取ったストア要求に対応するSTPに対してだけ、ポストキャンセルフラグがセットされる。ポストキャンセルフラグが上がっているSTPに対しては、そのストア要求がそれまでの命令実行の流れとは異なるものとなっている可能性が高いため、後述するように先行するストア要求とのマージは禁止される。
【0075】
命令ユニット(IU)20は、ストアデータノSU25ヘの送り出しを完了し、ストア命令に対して例外が発生しないことの通知を受け取った後、ストア命令に先行する命令が全て完了した時にストア命令を実行してもよいものと判定する。これがストア命令のコミットであり、コミットされたストア命令に対応してキャッシュ、または主記憶へのデータの書き込みが許可される。
【0076】
ストア命令のコミット条件が整うと、IU20はSU25に対してストア命令のコミット通知を送り、それと共にコミットされたストア命令のIIDを送る。SU25では、STPに保持されていたIIDとコミットされたストア命令のIIDとを比較して、どのSTPに対するストア要求がコミットされたかを判断し、コミットされたSTPに対してREADYフラグをセットする。
【0077】
READYフラグとWB_HLDフラグの両方がセットされているSTPのうちで最も古くストア要求が割り当てられ、データが格納されたSTPから順にWBへのデータ書き込みが行われる。書き込み先のWBの決定は、前述のようにWB_BOQやストアアドレスの値を用いて行われる。
【0078】
格納されていたデータがWBに書き込まれたSTPは即時開放される。開放されたSTPの数は、STPの開放を示すストアポートツーフリー(SPTOFREE)信号によりSU25からIU20に通知される。このSTPの開放は最も古くストア要求が割り当てられたSTPから順次実行される。途中にストア要求がキャンセルされたり、例外が検出されたSTPがある場合には、複数のSTPが同時に開放される場合もある。図3では同時に3つのSTPが解放されている。
【0079】
ストアポートツーフリー信号を受け取ったIU20では、その信号によって解放されたSTPの数を確認し、ユーズドカウンタ24の値をデクリメントする。STPからWBへのデータ書き込みに関連して、いくつかのフラグはSTPからWBへとそのまま渡され、いくつかのフラグはSTPのフラグの状態から新たに生成されてWBに送られる。WB上でデータのマージが行われる時には、前回WBへ書き込まれた値にマージされるフラグ上のビット情報も存在する。このようなフラグの受け渡しについては更に後述する。
【0080】
続いてWB上におけるフラグについて説明する。WB上には次のようなフラグがさらに用いられる。
VALフラグ:このフラグはWBが有効であることを意味する。WBに書き込まれるデータはコミットを受け取ったSTPに格納されているデータであるため、WBのVALフラグはSTPにおけるSID=11であり、かつPSTV、かつRSTDV、かつREADYの状態に相当する。STPからのデータ書き込みに対応してWBが割り当てられた時に、このフラグはセットされ、WBからキャッシュへのデータの書き込みが完了してWBが解放される時にリセットされる。
【0081】
XCPTN(エクセプション)フラグ:ストア領域が主記憶上に存在しなかった時に、このフラグがセットされる。
OPHLD_FLAG:キャッシュ領域へのストアを行う必要がある場合、ストア完了までこのフラグがセットされる。
【0082】
SXHLD_FLAG:レジスタなどへの書き込みを2次キャッシュ側に要求する必要がある場合に、このフラグがセットされる。2次キャッシュに対してデータの書き込み要求を送った時点でこのフラグはリセットされる。
【0083】
SXEWT_FLAG:SXエンドウェイトフラグ、SX(2次キャッシュ)に要求したデータ書き込み処理に対応して、SX側から書き込み処理の完了通知を受け取るまでWBを解放しない場合に、このフラグがセットされる。SXから書き込み完了通知が届いた時点で、このフラグはリセットされる。
【0084】
SUASI_FLAG:SU(記憶制御ユニット)25内部のレジスタなどへのデータ書き込みを行う必要がある場合に、このフラグがセットされる。データの書き込み要求をレジスタ等に送出した時点で、このフラグはリセットされる。
【0085】
LID:前述のフラグであり、キャッシュに排他型でヒットしていることを意味する。キャッシュへの書き込みは、このフラグがセットされてから実施される。
【0086】
ST1−KICK:LIDがセットされていないWBについては、書き込み先のキャッシュラインをキャッシュに持ってきてLIDをセットする必要がある。このためのパイプライン動作がST1であり、このフラグはST1の起動待ち状態であることを示す。このフラグによって必要な時にのみST1動作をパイプラインに要求することが可能となる。
【0087】
OPWAY[1:0]:前述のフラグで、ストアすべきキャッシュラインがキャッシュ上のどのウェイに存在するかを示す。LIDがセットされている時にのみ、有効な値が保持される。
【0088】
LBS_BANK[3:0]1次キャッシュのローカルバッファストレージ(LBS)を、本実施形態では8バイト単位の4つのバンクに分けているため、どのバンクに対してデータのストアを行うか表示するフラグである。メインのパイプラインでは同時に2つの要求が実行されるため、キャッシュへのストアと他の動作との間で、バンクの衝突の検出に使用される。STPからWBへのデータ書き込み時にセットされ、WB上でデータのマージが行われる場合には、複数のビットがセットされる。
【0089】
BST_1ST:前述のフラグであり、ブロックストアの先頭となるWBにセットされ、このフラグがセットされる場合には、先行するストアに相当するWBとの間でのデータのマージは行わない。
【0090】
BST_LAST:前述のフラグであり、ブロックストアの最後となるWBにセットされている。このフラグがセットされているWBに対しては、後続のストア要求との間のデータのマージは行わない。
【0091】
NOMRG(ノーマージ):このフラグがセットされているWBに対してはデータのマージを行わないことを表示するフラグであり、STP側で前述のTLB_SEフラグがセットされていたストア要求に対応するデータがWBに書き込まれる場合などにセットされる。
【0092】
J8B_EVN(イーブン):16バイト境界アドレスの中で、前半8バイトの全てのバイト位置に対するデータのストアを実施すべき時に、このフラグがセットされる。このフラグがセットされている時には、ストア対象のキャッシュ内8バイト領域のデータに訂正不能なエラーが存在していても、エラーを無視してストアを実施すべきことが指示される。これは、本実施形態ではデータのECCを8バイト単位で与えていることによって8バイトフルストアを実行すればストア前のデータ、およびECCの状態にかかわらず、正しいデータとECCをストアすることが可能となるためである。
【0093】
J8B_ODD(オッド):16バイト境界アドレス内の後半8バイトの全ての位置に対するストアを実施すべき時に、このフラグがセットされる。
DIS_ST_EVN(ディセーブルストアイーブン):16バイト境界アドレス内の前半8バイトに対する部分的なデータのストアを禁止することを示すフラグである。このような部分的なストアを行う場合に、訂正不能なデータエラーが存在する時には書き込み後もエラーが残るため、データの書き込みが禁止される。
【0094】
DIS_ST_ODD:16バイト境界アドレス内の後半8バイトに対する部分的なデータのストアを禁止することを示すフラグである。
ASI[7:0]:前述のフラグであり、アドレススペースアイデンティファイアを示す。
【0095】
QBM(クワドバイトマーク)[3:0]:4バイト単位でのストア対象バイトの存在位置を示す。
BM[15:0]:1バイト単位でのストア対象バイトの位置を表示する。
【0096】
INH_SFB(インヒービットストアフェッチバイパス):ストアフェッチバイパス(SFB)は、ストアデータをキャッシュへの書き込み前にバイパスして、例えば演算パイプラインに流すことを意味し、このフラグがセットされているSTP、またはWBからはSFBが禁止される。
【0097】
THREAD_ID(スレッドアイデー):マルチスレッドモードでの動作がサポートされている場合に、STPおよびWBに存在するフラグであり、割り当てられているストア要求がどのスレッドから出されているかを表示する。
【0098】
WB_OPC:WBでのストア動作の種類を示すオペレーションコードであり、エンコードされて保持され、そのままSXなどへの要求に使用するオペコードとして利用が可能となっている。エンコードされた値は次のような意味を持つ。
【0099】
WB_OPC=00:ST、すなわち1次キャッシュへの書き込みを行う通常のストアを表す。
WB_OPC=01:FS(フェッチアンドストア)、前述のCAS命令などによって指定される、キャッシュラインを他のCPUに渡すことなく処理するためのロック制御つきのストアを表す。
【0100】
WB_OPC=06:前述のブロックコミットストアを示す。
WB_OPC=07:BLK_SX_ST、2次キャッシュなどへのブロックストアを表す。
【0101】
WB_OPC=18:OP_NC_WT(オペランドノンキャッシャブルライト)、すなわちノンキャッシャブル域、例えばI/O領域などへの0バイトから16バイトの書き込みを表す。
【0102】
WB OPC=19:OP NC BW(オペランドノンキャッシャブルブロックライト)、すなわちノンキャッシャブル域へのブロックストアを表わす。
WB OPC=1D:ASI SX WT,SX内部のASIレジスタなどへの書き込み要求を表わす。
【0103】
WB OPC=1F:ASI SU WT,SU内部のASIレジスタなどへの書き込み要求を表わす。
このようなオペレーションコードのうちで、キャッシュラインの吐き出しを禁止するコードについて更に説明する。一般的にはストア対象のキャッシュラインが1次キャッシュから追い出された時にはLIDはリセットされる。しかしながら前述のフェッチアンドストア(FS)、例えばCAS命令などのように、フェッチが完了してからストアが完了するまでキャッシュラインの吐き出しを禁止する必要がある命令が存在する。
【0104】
このような命令に対してはSTP、WBの双方で専用のオペコードが与えられ、必要に応じてその内容がSTPからWBに渡される。STPでは、前述のようにSTP_OPC[1]が割り当てられ、この値が“1”の時に、またWBではWB_OPCが5ビットで“00001”の時にFSであることが示される。FS命令によってフェッチデータが取り出された時、STP側でLIDと前述のPSTV(ポストステータスバリッド)がセットされる。それ以後、WBからキャッシュへのデータのストアが完了するまで、対応するキャッシュラインの吐き出しが禁止される。
【0105】
WBから1次キャッシュへのデータの書き込みを完了した時点で、前述のOPHLD_FLAGがリセットされる。ASI指定に基づくSU内部のレジスタなどへの書き込みを要求した時点で、前述のSUASI_FLAGはリセットされ、また2次キャッシュ装置内のレジスタなどへの書き込みを要求した時点で、前述のSXHLD_FLAGがリセットされる。
【0106】
さらに2次キャッシュ側からの処理完了応答を待つ必要があるストア要求に対応して、2次キャッシュ側から完了通知が届いた時点で前述のSXEWT FLAGがリセットされる。
【0107】
これら4つのフラグが全てリセットされた時、WBにおける処理は完了したと判定され、WBは解放される。そしてWBTOFREE(ライトバッファツーフリ)信号が生成され、WBにおける管理資源の情報が更新される。この信号は図3のSU25内部に閉じた信号であり、IU20には通知されない。
【0108】
以上のように本実施形態では、図3のSU25の内部に、ストア要求に対応するアドレスとデータとを格納するSTPとWBとを設け、STPからWB、WBからキャッシュという順序でデータの格納を行うが、メモリシステムの構成の変化に伴ってメモリの応答性能を示すメモリレイテンシーが変化した場合に、STPの数は変更せず、WBの数を変更することによって、IU20側の回路構成を変更することなく、メモリレイテンシーに応じてストア要求をSU25に滞留させる数を調整することができ、設計上の自由度が大きく増加する。なおメモリレイテンシーはメモリに要求が出されてからデータ入出力までの時間を示す。
【0109】
WB上に滞留させることができるストア要求はコミットを受け取ったストア要求に限定されているため、コミット前のストア要求、すなわち実行は開始したが、本当に実行してよいか否かが不明であるインフライトに実行中のストア要求の数を増加させたい時には、STPの数を増加させればよい。なおSTPの数は命令処理装置(IU)の性能に応じて増減させることができる。
【0110】
図5はストアポート側とライトバッファ側で使用されるフラグを示す図である。前述のように一部のフラグがSTPからWBへとそのまま渡されるが、例えばOPHLD_FLAG,LID,BST_1ST,BST_LAST,OPWAY[1:0],ASI[7:0],INH_SFB、およびTHREAD_IDなどがこれにあたる。
【0111】
また一部のフラグについては、STPにおけるフラグの状態から生成されてWBに送られるが、例えばSXHLD_FLAG,SXEWT_FLAG,SUASI_FLAG,NOMRG,およびWB_OPC[4:0]などがこれにあたる。
【0112】
更にWB上でデータのマージが行われた時に、ビット情報のマージが行われる可能性があるフラグとしては、J8B_EVN,J8B_ODD,LBS_BANK[3:0],QBM[3:0],およびBM[15:0]などがある。
【0113】
図5のライトバッファ側のフラグのうち、○印のついてるフラグはキャッシュまたはメモリへの書き込み処理でのみ、すなわちライトバッファ側でのみ用いられるフラグである。本実施形態のように、STPとWBとを区別することなく、例えばSTPの数だけを増やして増加するストア要求を処理しようとすると、全てのストアポートについて図5のライトバッファ側でのみ必要な○印のついているフラグも全て管理することが必要となる。これに対して本実施形態では、例えばWB側だけに持てばよいフラグもあることから、全体として制御フラグの数を減少させ、制御論理の規模を減らすことが可能となる。なお図5において本発明に直接的に関係の無いフラグについては説明を省略する。
【0114】
次に本実施形態におけるストアインとストアスルーのストア処理方式について、図6を用いて説明する。一般にストアイン方式では、ストアデータが中央処理装置に最も近い階層のキャッシュメモリ、すなわち1次キャッシュメモリに書き込まれるのに対してストアスルー方式ではストア対象領域が1次キャッシュに存在していた場合には1次キャッシュと2次キャッシュの両方にデータの書き込みを行い、また1次キャッシュに存在していなかった場合には2次キャッシュのみにデータの書き込みを行うというような処理が行われる。
【0115】
図6においてストアイン方式では、SU25内のSTP29からWB35に格納されたストアデータは1次キャッシュ41に書き込まれる。
これに対してストアスルー方式では、ストア対象領域が1次キャッシュ41に存在する時には1次キャッシュ41に同様にデータを書き込むと共に、1次キャッシュにおけるストア対象領域の存在の有無に関係なく2次キャッシュ装置(SX)42の内部の2次キャッシュ43にも、WB35に格納されていたデータのストアを行う。
【0116】
この時、SX側にSU25からのデータを一時的に保持するWB44が備えられている場合には、WB35からWB44、WB44から2次キャッシュ43の順序でデータの格納が行われ、最終的に2次キャッシュ43には必ずストアデータの格納が行われる。
【0117】
このストアイン方式とストアスルー方式が併用される場合もある。この場合には、前述のTLBの検索結果としてのページの内容による指定や、ASIによる命令ごとの指定に応じてどちらかの方式が用いられる。
【0118】
WB上でのデータのマージについて、以上のフラグ、および図4を用いて更に説明する。図4のWB_BOQフラグ格納部41にはWB_BOQ_VALIDと、WB_BOQ_NO MERGEのフラグがある。このうちWB_BOQ_VALIDは、WB_BOQのポインタによって指示されるWBに有効なデータが格納されていることを意味するフラグであり、このフラグはそのまま信号としてマージチェック部44に出力される。
【0119】
WB_BOQ_NO_MERGEは、後続のストア要求に対してデータのマージを禁止するフラグである。このフラグは前回WBへのデータの書き込みを行ったSTP側に情報として残っている。この情報を残すのは▲1▼STB_OPC=ST(OPC[0]=1)以外の時、または▲2▼サイドエフェクトのフラグがセットされている時(STB_TLB_SE=1)、または▲3▼ノンキャッシャブル域へのストアである時(STB_TLB_CP=0)のいずれかの場合である。
【0120】
ただし2次キャッシュ(SX)へのブロックストアの要求の場合、すなわちSTB_OPC[3]=1、またはSTB OPC[4]=1で、STB_OPHLD=0、かつSTB_BST_LAST=0の場合には、NO_MERGEフラグはリセットされ、強制的なマージが行われる。
【0121】
図4のWB_GOフラグ格納部42には、前述のPRE_WB_GO_STPのポインタによってあらかじめ選択されたSTPに関して、WB_GOのタイミングで使用されるフラグが保持されている。その中にWB_GO_NEW_ALLOCフラグがある。このフラグは先行するストア要求に対するデータのマージを禁止する時にも用いられるフラグであり、このフラグは今回WBへのデータ書き込みを行うことになるSTPに関する情報として保持されている。
【0122】
この情報がセットされるのは、▲1▼選択されたSTPの状態がSTB_OPC=ST(OPC[0]=1)以外の時、または▲2▼サイドエフェクトフラグがセットされている時(STB_TLB_SE=1)、または▲3▼ノンキャッシャブル域へのストア要求に対応する時(STB_TLB_CP=0)、または▲4▼命令のキャンセルによってマージの禁止が指示される場合(POST_CAN=1)のいずれかの場合である。
【0123】
ただし先頭以外のブロックストアである場合、すなわちSTB_OPC[3]=1、またはSTB_OPC[4]=1で、STB_BST 1ST=0の時には、WB_GO_NEW_ALLOCフラグはリセットされ、新しいWBの割り当ては禁止されて、強制的なデータのマージが行われる。これは一部のブロックストアの場合、データのマージができないとストアがうまく行われないため、データのマージを可能とするためである。
【0124】
WB_BOQ_NO_MERGE、またはWB_GO_NEW_ALLOCのいずれかのフラグがセットされている時には、図4のマージ条件確認部43によって、WBへのデータ書き込みに対してマージを禁止する信号としてのINH_MERGE信号がオンとされ、マージチェック部44に出力される。
【0125】
またWB_BOQ_AAR格納部46とWB_GO_STAAR格納部47に格納されているアドレスの比較によって、STPからWBへ書き込もうとしているデータのアドレスとWB_BOQによって指示されるWB内のデータのアドレスが一致しているかどうかが調べられ、その結果はアドレス比較部48から、アドレスマッチ信号としてマージチェック部44に出力される。マージチェック部44はWB_BOQ_VALID,INH_MERGE、およびADDRESS_MATCHの信号に応じてWB_BOQによってポイントされるWBに書き込みを行うか、次のWB(WB_BOQ+1)に対する書き込みを行うかを決定する。
【0126】
次にデータのエラーに関する処理について説明する。データエラーが検出された場合、それが1ビットエラーであれば1ビットエラーを訂正するエラー処理のキャッシュプロトコルが起動され、エラーが訂正されて動作が継続される。2ビットエラーの場合には、動作の継続が不可能になる場合がある。
【0127】
キャッシュ上のある8バイトブロックに2ビットエラーが検出され、そのブロックにデータのストアを実行しようとする時、そのストアが8バイト全体に対して行われるのであれば、ストアデータからECCが生成され、ストア前の2ビットエラーを持った8バイトブロックの値は無視される。この時はエラーを放置しておいても問題はない。
【0128】
キャッシュ上のある8バイトブロックに2ビットエラーが検出され、そのブロックに対してデータのストアを実行しようとする場合、ストアが8バイト全体に対して行われないとエラーが訂正されない。8バイト全体にストアが行われない場合としては、ストアオペランド長が1バイト、2バイト、4バイトのように8バイトに満たない場合があげられる。
【0129】
更にこのように部分的なストアが指定されていた場合、ストアオペランド長は8バイトであっても、8バイト全体に対するストアではなく、指定された一部のバイト位置に対するデータのストアである可能性もあり、この場合も8バイト全体にストアを行わないものとして扱うことができる。
【0130】
ストア対象領域に対するデータのストア後にもエラーが残る場合には、ストアそのものの実行が中止される。ストアを実行しても結果が改善されないことと、ストア実行後に更にエラーが検出される可能性が残るためである。2ビットエラーが検出された時のストアの実行制御は、各WBに対するDIS_ST_EVN、およびDIS_ST_ODDフラグによって制御される。
【0131】
前者のフラグがセットされている時にはイーブン側、すなわち16バイト境界内の前半8バイトに対して、また後者のフラグがセットされている時にはオッド側、すなわち16バイト境界内の後半8バイトに対するライトイネーブル信号をおとすことによって、データの書き込みが禁止される。
【0132】
これらのフラグは、記憶制御ユニットによって行われる前述のパイプラインに対するST1処理にあたってセットされる。ST1処理はキャッシュミス、すなわちLID=0となっている全てのWBが要求することができる。ST1の要求によって、ストア対象ブロックがキャッシュ上に排他型で存在するか否かが調べられると共に、ストア対象領域を含む16バイトの領域に2ビットエラーがあるか否かが検査される。
【0133】
エラーがなくキャッシュヒットした場合にはLIDがセットされ、書き込みの順番が回ってきた時点で、すなわちWB_TOQのポインタによってポイントされた時点でデータのストアが実行される。
【0134】
キャッシュヒットしてもエラーが検出された場合には、LIDはセットされない。そしてWB_TOQに対応するストアリクエストに応じてST1処理を経て2ビットエラーが検出された場合にのみ、前述の2つのフラグのいずれか、あるいは両方が適宜セットされる。
【0135】
ここでこの2つのフラグをセットすることができるWBをWB_TOQによってポイントされるWBに限定するのは、データ化けを防止するためである。このデータ化けについて図7、および図8を用いて説明する。
【0136】
図7は5つのWBに対するデータのストア順序を示す。ここでアドレスAのデータの前半8バイトに2ビットのエラーがあり、そこに図7のWB1から8バイトフルストアを実行し、その後にWB3から4バイト部分ストアを行う場合を考える。WB0およびWB2には、アドレスAには関係ないストアデータが入っており、WB_TOQはWB0をポイントしているものとする。
【0137】
図8はアドレスAの前半8バイトの内容の変化を説明する図である。最初に前半8バイトに対して2ビットエラーが存在し、この状態でDIS_ST_EVN、またはODDを設定できるWBをWB_TOQによってポイントされるWBに限定した場合、すなわち図8の左側について考える。
【0138】
WB1のストアについては、8バイトフルストアであるためにエラー検出回路の動作は抑制され、WB1に対するST1の処理要求に対してフラグを立てるべき原因となるエラーは通知されてこない。従ってWB1に対してLIDの値がセットされる。
【0139】
これと前後して、WB3に対するST1の処理の要求が実行される。この時はまだ先のWB1に対するストアが完了していないものとすると、アドレスAには2ビットエラーが残ったままであり、WB3に対するST1の処理要求によって2ビットエラーが検出される。
【0140】
そこでWB3がWB_TOQによってポイントされるWBであるか否かが検査され、この時点ではWB3はこのポインタによってポイントされておらず、従ってWB3に対するフラグはセットされず、またエラーが検出されたことによってWB3に対するLIDのセットも行われない。
【0141】
そのうちにWB_TOQによってポイントされるWB0に対する処理が完了し、WB1に対するデータストアの処理が行われる。WB1に格納されているデータのキャッシュへのストア、すなわち8バイトフルストアが実行され、アドレスAにおける2ビットエラーは解消される。
【0142】
その後WB3に対するST1の処理要求が実行され、この時はすでにアドレスAにおける2ビットエラーが消えており、WB3に対してLIDがセットされる。やがてWB3がWB_TOQによってポイントされ、WB3に対する処理が完了し、アドレスAにはWB1とWB3とのデータの書き込み結果が残るという正しい動作が実行される。
【0143】
次にDIS_ST_EVNまたはODDのフラグを設定可能なWBをWB_TOQによってポイントされるWBに限定しなかった場合の動作について、図8の右側を用いて説明する。まずWB1に対しては8バイトストアであるため、エラー検出は行われず、WB1に対するST1の処理要求に対応してエラーは伝達されてこない。従ってWB1に対するLIDがセットされ、それと前後してWB3に対するST1要求が処理される。
【0144】
この時点ではまだWB1によるデータのストアが完了していないことから、アドレスAには2ビットエラーが残ったままであり、WB3に対するST1の処理要求によって2ビットエラーが検出される。ここでは図8の左側とは反対に、フラグのセットがWB_TOQによってポイントされるWBに限定されておらず、従ってWB3に対するDIS_ST_EVNまたはODDのフラグがセットされる。
【0145】
またエラーが検出されたことによってWB3に対するLIDのセットも行われない。ただし、これ以降のST1の処理要求では、その要求によって再びエラーが検出され、処理がハングしてしまうことを防止するため、ディーゼルストアフラグがセットされている前半側、または後半側に対するエラー検出は実行されない。
【0146】
DIS_ST_EVNまたはODDのフラグがセットされてからは、WB1に対する処理が完了しているか否か、すなわちアドレスAにおける2ビットエラーの存在の有無にかかわらず、キャッシュラインが排他型で存在しさえすれば、WB3に対するLIDがセットされる。そのうちWB1に対する処理が完了し、WB1の8バイトフルストアによってアドレスAにおける2ビットエラーは解消される。
【0147】
その後WB3がWB_TOQによってポイントされ、WB3に対する処理が行われる。しかしながらWB3の内容をキャッシュに書き込もうとしても、DIS_ST_EVNフラグが上がっているためにアドレスAの内容は更新されず、アドレスAにはWB1のデータの書き込みの結果だけが残り、WB3のデータの書き込みが行われないという誤動作が発生する。
【0148】
このような誤動作を防止するために、ストアの禁止を決定するDIS_ST_EVNまたはODDのフラグのセットは、WB_TOQによってポイントされるWBからのストア要求、すなわち最も古いストア要求に限定される。
【0149】
次に前述のストアフェッチバイパス(SFB)について更に説明する。先行するストア要求によって処理対象となっている領域を、後続のデータフェッチ要求が処理対象としている場合、ストア要求によってデータがキャッシュに書き込まれてからフェッチ要求を処理しないと、誤ってストア前のデータがフェッチされてしまう。
【0150】
これはストア抜けの誤動作であり、このような場合にはストアフェッチインターロック(SFI)が生じたものとして、処理対象領域に関連性があって、先行するストア要求の処理が全て完了するのを待ってからフェッチ要求の処理を行う必要がある。そこで処理対象領域が同一の場合には、先行するストアが完了するまでフェッチ要求の処理が待たされることになる。先行するストアがキャッシュミスをおこした場合、ストア命令の完了に時間がかかることから、フェッチ要求の処理も長く待たされることになる。
【0151】
このようなことはデータ処理装置の性能低下要因として問題となる場合がある。中央処理装置の浮動小数点レジスタと汎用レジスタとの間でレジスタの内容の移動を行う場合には、一方のレジスタの内容をメモリに書き出し、メモリから読み出したデータを他方のレジスタに格納することによってレジスタの内容の移動が行われる。このような場合、SFIが生じる可能性が高い。
【0152】
また中央処理装置のレジスタが不足した場合に、レジスタの内容をメモリに退避して、不足が解消した時点でメモリからレジスタにデータを書き戻す場合がある。このような場合もSFIが発生する可能性がある。
【0153】
このようなことは中央処理装置によって実行されるプログラムの種類によっては頻繁に発生する。こうした場合にSFIによる性能低下を防止するために、ストアフェッチバイパス(SFB)、またはストアデータフォワーディング(SDF)といった制御を導入する場合がある。
【0154】
このような制御によって、例えばストアポート上にあるデータをライトバッファに書き込む前にフェッチ要求にデータを受け渡す、すなわちライトバッファ、またはキャッシュをバイパスして、データのフェッチを行うことが可能となる。WBを導入した本実施形態において、SFBに対する処理がどのように行われるかについて以下に説明する。
【0155】
図9はストアフェッチバイパス制御方式の説明図である。同図の左側はストアポートからのストアフェッチバイパスの制御方法を説明するものであり、IID比較部51、アドレス比較部52、レングス比較部53、スレッド比較部54、およびフラグ検証部55の検査結果が全てOKであった場合に、STP29からのSFBが許可される。
【0156】
IID比較部51は、命令実行順序的にストア命令がフェッチ命令に先行していることを確認する。そのために各STPに保持されているIIDと、記憶制御ユニットのパイプラインを流れるフェッチ要求のIIDとを比較し、STPのIIDの方が古いことが判明した場合に比較結果がOKとなる。
【0157】
STPに対するREADYフラグがすでにセットされている場合には、IIDの値にかかわらずSTPのIIDの方が古いと判定される。READYフラグがセットされていることは、先行するフェッチ要求が全て完了していることを意味しているからである。
【0158】
アドレス比較部52は、各STPに保持されているストア要求に対応するアドレスと、パイプラインを流れるフェッチ要求に対応するアドレスとを比較し、両者が一致した時に比較結果をOKとする。
【0159】
レングス比較部53は、STPに保持されているストア要求におけるデータのレングスと、パイプラインを流れるフェッチ要求に対応するデータのレングスとを比較し、両者が一致した時に比較結果をOKとする。
【0160】
スレッド比較部54は、STPに保持されているストア要求に対応するスレッドのIDと、パイプラインを流れるフェッチ要求に対応するスレッドのIDを比較し、両者が一致した時比較結果をOKとする。
【0161】
ここでスレッドIDは、STPに対するストア要求がどのスレッドから発行されたかを示すフラグである。マルチスレッドをサポートする場合に、異なるスレッド側からストアデータを取り出してしまうことにより生じるトータルストアオーダー(TSO)違反を防止するために使用される。また前述のようにスレッドIDはSTPとWBのそれぞれに保持されている。
【0162】
フラグ検証部55では、前述のOPHLD,PSTV,RSTDV,INH_SFB、およびTLB_LEの検証を行う。ここでOPHLDはSTPのデータをキャッシュに書き込むことを指示するフラグであり、このフラグがセットされていない時は、例外が存在したり、ノンキャッシャブルストアの場合に該当するため、SFBの対象とはならない。
【0163】
PSTVは、命令ユニットに例外の有無をすでに通知してあることを示すと共に、ストア要求に対応する物理アドレスが判明していることを示すフラグである。SFBを実行するための条件として物理アドレスの一致も含まれるために、PSTVフラグがセットされていることがSFBの実行のために必要である。
【0164】
RSTDVは、演算ユニットからストアデータを受け取っていることを意味するフラグである。STPからストアフェッチバイパスによってデータを取り出すためには、当然ストアデータが存在する必要があり、RSTDVフラグがセットされていることがSFBを行うために必要である。
【0165】
INH_SFBがセットされているSTPからのSFBは禁止される。STB_OPC[0]以外がオンとなっているストア要求に対しては、このフラグがセットされる。SFBを行うためには、このフラグがリセットされていることが必要である。
【0166】
TLB_LEは、ストアをリトルエンディアンで行うべきことを示すフラグである。リトルエンディアンでのアクセスは頻度が低いことと、処理を簡略化するためにリトルエンディアンのSTPはSFB対象に本実施形態では含めていない。従ってSFBを行うために、TLB_LEフラグがリセットされていることが必要である。
【0167】
以上の条件を全て満たすSTPがSFBの対象となる。SFBの対象となるか否かの検査結果は、各STPからSTPn_SFB_ENABLE信号としてSFB制御部56に集められ、後述するようにSFB制御部56によて最終的にSFBの可否が判定される。
【0168】
図9の右側に示されるように、ライトバッファ35からのデータバイパスにおいてはアドレス比較部61、バイトマーク(BM)比較部62、スレッド比較部63、およびフラグ検証部64の検査結果が全てOKとなる必要がある。
【0169】
WB35に対してはIIDの比較は必要がない。WBにおかれているデータに関するストア要求はコミットを受け取ったもの、すなわちSTPでREADYフラグがセットされているものだけに限定されるためである。IIDの比較を行うまでもなく、フェッチ要求よりWB上のストア要求の方が古いことが明らかである。
【0170】
アドレス比較部61は、STP29に対するアドレス比較部52と同様に、WBに保持されているデータに対応するアドレスと、パイプラインを流れるフェッチ要求に対応するアドレスとを比較し、アドレスが一致した時にOKとする。
【0171】
BM比較部62は、WBに保持されているデータのバイトマークと、パイプラインを流れるフェッチ要求のデータのバイトマークとを比較する。フェッチ要求に対するバイトマークがWBに対するバイトマークに含まれる場合には、すなわち例えば1バイト単位にデータが存在する位置のビットをオンとするバイトマークでは、フェッチ要求に対応するバイトマークがWBに対応するバイトマークに含まれることにより、フェッチ要求で必要とされるデータは、WBに格納されているデータの一部であることが示される。
【0172】
バイトマークの比較において1バイト単位のバイトマークを使用すると判定に時間がかかり、不利な場合がある。そのような時には、4バイト単位のバイトマークとしてのクワドバイトマーク(QBM)や、8バイト単位のバイトマークを使用することができる。本実施形態では例えばQBMによる比較を行うことにする。
【0173】
このように1バイト単位での比較を行わなかった場合には、バイトマークの判定においてSFBの対象として選択されたSFBの候補に対しては、最終的に1バイト単位での比較を行う必要がある。
【0174】
例えばSFB候補の選択にQBMを使用しており、フェッチが4バイト、ストアが1バイトの領域を対象としてQBMが一致した場合を考える。この場合はQBMが一致しているが、全てのフェッチデータはライトバッファ上にないことになり、SFBは禁止されなければならない。
【0175】
そこでこのような場合には、SFBが誤っていることを示すSFB_BOGUS信号をセットして、次のサイクルで強制的にSFIとしてフェッチリクエストを中止させる必要がある。これによって全バイトマークの比較を行わずに、SFB候補の選択を行う場合に生じる可能性がある、誤ったSFBの発生が防止される。
【0176】
ここでSFB候補の選択には1バイト単位での比較を行わず、最終的にSFB候補に対しては1バイト単位の比較を行う理由は、まずデータを選択するために候補をしぼる動作は速く実行する必要があるのに対して、1バイト単位の比較は実行の確認として少し遅くとも処理が間に合うためである。
【0177】
スレッド比較部63は、STP29に対するスレッド比較部54と同様にスレッドIDを比較する。
フラグ検証部64は、VAL,OPHLD、およびINH_SFBフラグの検査を実行する。VALフラグは、STP側のREADY、かつPSTV、かつRSTDVの全てがセットされた状態に相当する。従ってWB側ではVALを見るだけで、この3つのフラグを検証したことに相当する。
【0178】
OPHLD、およびINH_SFBの検証についてはSTP29に対すると同様である。STP側で必要であったTLB_LEフラグの検査は、本実施形態では後述するようにWB上ではデータのアラインを完了しているために、エンディアンに関係なくSFBは可能であり、TLB_LEでSFBを禁止する必要がないため、省略される。
【0179】
以上の条件を全て満たすWBがSFBの対象となる。この検査結果は、WBn_SFB_ENABLE信号としてSFB制御部56に集められ、最終的にSFBの可否が判断される。すなわちSFB制御部56では、STP29とWB35の全てにおいてSFB候補がただ1つであり、SFI要因が存在しない時に、SFBを最終的に許可する。
【0180】
続いてストアポートからライトバッファへのデータの書き込み、およびライトバッファからキャッシュメモリや主記憶へのデータの書き込みについて更に説明する。WBを同時に複数個解放してSTPからのデータを格納可能とする処理、あるいは命令ユニット(IU)から同時に複数のストア要求に対するコミットをストアバッファ部に対して通知する処理のいずれかが採用可能なシステムにおいては、複数のSTPのデータが同時に1つ以上のWBへの書き込みの対象となる。その場合には、ストア処理の性能を向上させるために、複数のSTPのデータを同時に1つ以上のWBに書き込む制御を行う制御部が設けられる。
【0181】
図10は、そのような制御部としての書き込み先WB選定制御部70を備えたデータ書き込み方式の説明図である。同図において、同時にn個のSTP内のデータを、同時に1つ以上のWBに書き込む場合には、書き込み対象となるWBをWB_BOQによってポイントされるWBから、WB_BOQ+nによってポイントされるWBまでの(n+1)個の範囲に限定することにする。
【0182】
同時に3つのSTPのデータを1つ以上のWBに書き込む場合には、最も古くストア要求が割り当てられたSTPとしての、STP_TOQによってポイントされるSTPと、STP_TOQ+1、およびSTP TOQ+2によってポイントされる2つのSTPとの合計3個のSTP内のデータが書き込み対象となるが、図10ではこの3つのSTPはSTP2、STP3、およびSTP4とする。
【0183】
これら3つのSTPと、図4のWB_BOQフラグ格納部41から取り出されたマージの可否を示すフラグを用いて、前後のストア要求に対するデータのマージの可否がフラグ条件から判定される。
【0184】
また前後のストア要求に対応するアドレスの一致がアドレス比較部48によって判定され、これらの条件から前後のストア要求に対するデータのマージが可能である場合にはマージイネーブルとなり、書き込み先WB選定制御部70に対して、例えばWB_BOQによってポイントされるWB内のデータと、STP_TOQによってポイントされるSTP、ここではSTP2内のデータとをマージするか否かの信号が送られる。
【0185】
書き込み先WB選定制御部70によって、どのSTP内のデータがマージ対象となるかが判定され、その判定結果はデータが書き込まれるべき各WBに送られるクロックイネーブル信号CE_WB0〜4として送られる。またデータ選択信号が各WBに送られ、STP2、STP3およびSTP4のデータを各WBが取り込むかどうかの判定に利用される。
【0186】
図10では3個のSTP、すなわちSTP2〜STP4内のデータを同時に書き込む対象となるWBはWB1〜WB4の4個となるが、これは書き込み先候補のWBであり、実際にデータの書き込み先となったWBはWB_BOQによってポイントされるWB1と、その次のWB2との2個である。WB1にはSTP2とSTP3とのデータがマージして書き込まれ、またWB2にはSTP4のデータが書き込まれる。これらのデータが例えばすべて8バイトとすると、WB1に既に格納されていたデータには例えばSTP2からのデータが上書きされ、WB1にはSTP2とSTP3からのデータが残ることになる。
【0187】
前述のように、ストア要求に対応してストア対象のキャッシュラインがキャッシュメモリ上に存在するか否かを調べるための記憶制御ユニットのパイプライン動作として、ST1がある。ST1の動作の結果、ストア対象がキャッシュ上に存在することが判明した場合には、前述のようにLIDがセットされる。LIDがセットされているWB側では、ストアデータを実際にキャッシュメモリに書き込むパイプライン動作としてのST2のリクエストを行うことが可能となる。
【0188】
本実施形態では、STPからWBに対してLIDを受け渡すにあたり、フラグのセットやリセットにおけるエラーなどを防止するために、ST1のリクエストはWB側からだけ出される。これによってストア要求のうちでST1のリクエストが可能なストア要求は既にコミットされたものだけに限定され、全体的な処理速度が向上する。
【0189】
またWB側でも、データのマージ対象となり得るWB_BOQによってポイントされるWBに対しては、ST1のリクエストの要求を出すことが禁止される。図11はWB側でのパイプラインリクエスト要求と、各WBとの関係の説明図である。同図において、前述のようにデータマージの対象となる可能性があるWB_BOQによってポイントされるWB4からは、ST1のリクエストが禁止される。
【0190】
これはWB側でST1に関する動作を実行するにあたり、例えばLIDがクリアされる条件が発生している(例えばキャッシュラインの追い出しがあった)時に、STPからWBへのデータの書き込みでデータのマージの必要性がおこり、WB上のLIDをセットしようとしてLIDの値にエラーが生ずることを防止するためである。
【0191】
また図11にあるように、WB_BOQによってポイントされるWB4からは、キャッシュメモリへの書き込み動作のパイプラインとしてのST2をSU側に要求することも禁止されている。
【0192】
例えばWBへのSTPからのデータの書き込み時点で、WBからキャッシュメモリ、または主記憶へのデータの書き込みが発生すると、新しくWBに書き込まれたデータがキャッシュメモリ、または主記憶の内容に反映されずに、WBからのストア処理が完了してしまう可能性がある。
【0193】
この時WBにSTPからデータが書き込まれようとしていたストアに関しては、ストアデータが失われる現象が発生するため、そのような問題点を回避するために、WB_BOQによってポイントされるWBからのリクエストとしての主記憶への書き込み動作の要求も禁止される。
【0194】
しかしながら、このようにWB_BOQによってポイントされるWBからキャッシュメモリ、または主記憶へのデータの書き込みのためのパイプライン動作の要求が禁止されることから、WB_BOQの更新が行われないと、そのWBからキャッシュメモリ、または主記憶へのデータの書き込みがいつまでたっても実行されないという問題点が生ずる。
【0195】
そのため本実施形態においては、必要に応じてこのWB_BOQの値の強制的な更新を行うことによって、それまでWB_BOQによってポイントされていたWBからキャッシュメモリ、または主記憶へのデータの書き込みを実施可能とする。
【0196】
このようなライトバッファボトムオブキュー(WB_BOQ)ポインタの強制的な更新について図12、および図13を用いて説明する。図12は実質的に図11と同様の各WBのステータスなどの説明図である。
【0197】
同図において、WB0のステータスはインバリッド、すなわち有効なデータを保持していない状態であり、これに対してWB1〜WB4のステータスはバリッドである。またWB1はWB_TOQによってポイントされ、WB4はWB_BOQによってポイントされている。従ってWB4からは、SU側のパイプラインにST1とST2の動作を要求することが禁止される。
【0198】
図13は、図12の状態からWB_BOQの値が強制的にインクリメントされた時の各ライトバッファの状況を示す。WB_BOQが更新されることによって、このポインタはWB0をポイントすることになる。ここではこのポインタの値が強制的に更新されるだけであり、WB0のステータスがインバリッドであることに変わりはない。そしてWB0からは、SU側に対するST1およびST2のパイプライン動作の要求は禁止される。これに対して、今までWB_BOQによってポイントされていたWB4からのSUへのパイプライン動作の要求は許可される。
【0199】
このようにWB_BOQの値を強制的に更新するケースとしては、第1に全てのストアポートが空になっている場合がある。このような場合はWB_BOQによってポイントされるWBのデータに対して後続するストア要求とのデータのマージが行われる可能性がないため、そのデータは速やかにキャッシュメモリ、または、主記憶にストアされるべきことになる。
【0200】
このような状態は、各ストアポートのVALIDを示す信号としてのSIDが全てクリアされていることを検出することによって判定される。また各ストアポートの中にVALIDであるSTPが存在したとしても、WBへの書き込み対象のSTPが存在しない時も対象となる。この状態は、各ストアポートに対するREADYフラグが全てオフとなっていることを検出することによって判定される。
【0201】
WB_BOQを強制的に更新する第2の場合として、前後のストア要求のストアデータのマージを禁止すべき場合がある。このような場合には、WB_BOQの値を強制的に更新することによって、先行するストアのデータが格納されたWBをWB_BOQからポイントされた状態からはずし、マージの対象外とする。
【0202】
すなわちWB_BOQにマージ禁止のフラグが上がっている場合にも、WB_BOQの強制的な更新を行う。これによってWB_BOQによってポイントされていたWBからキャッシュメモリ、または主記憶へのデータの書き込みが速やかに実施される。
【0203】
しかしながら第2の場合にWB_BOQの更新を行う時に、同じタイミングでSTP側からWBへのデータの書き込み、すなわちWB_BOQ+1によってポイントされるWBへのデータの書き込みが発生した場合には、WB_BOQの強制的な更新は行われない。これは次のWBへの書き込みによって自動的にWB_BOQの更新が行われるためであり、この時のこの値の強制的な更新動作を起動すると、結果的に誤動作が生じる可能性があるためである。
【0204】
ボトムオブキューのポインタを強制的に更新すべき第3の場合として、このポインタによってポイントされるWBの内容がキャッシュメモリ、または主記憶に書き込まれないと、処理がハングしてしまう場合がある。
【0205】
このように処理がハングするケースの1つ目が、WB_BOQによってポイントされるWB内のデータを使用する後続のロード命令がデータがストアされないことによって実行不可能となる場合である。このようなケースは、古いロード命令がWB_BOQの値を原因として実行不可能となったことを検出して、そのハング要因として判定される。
【0206】
この場合にはWB_BOQの値を更新し、それまでこのポインタによってポイントされていたWBからキャッシュメモリ、または主記憶へのデータの書き込みを行い、そのWBを解放することによって古いロード命令を実行することが可能となる。
【0207】
処理がハングするケースとしての2つ目は、他の系のCPUからの吐き出し要求を受け付けているキャッシュラインが、WB_BOQによってポイントされるWB内のデータのストアの対象となっている場合で、かつこのストア要求がストア完了までキャッシュラインの吐き出しを禁止する要求である場合である。このようにストア完了までキャッシュラインの吐き出しを禁止するストア要求は、前述のWB_OPC=FS(フェッチアンドストア)に対応するストア要求であり、前述のCAS命令などがこれに相当する。
【0208】
このような場合には、他の系のCPUからの吐き出し要求に応じてSUパイプラインで実行されるキャッシュラインの吐き出し動作に対しては、WB_OPC=FSをオペコードとして持つWBによりキャッシュラインの吐き出しが禁止されることから処理は中断され、リトライが必要となる。この中断の回数を計測し、ある一定回数以上に達したらWB_BOQの値を強制的に更新することによって、そのWBからキャッシュメモリ、または主記憶への書き込み動作が実施され、そのWBが解放されてキャッシュラインの吐き出し動作が実行可能となる。
【0209】
以上に述べたWB_BOQの強制的な更新は、場合によっては逆に不適切な結果を生ずる。このような場合として、STPからWBへのブロックストア、すなわち64バイトデータの一括ストアを行う場合がある。
【0210】
図14はこのブロックストアの説明図である。このブロックストアは命令コード、および前述のASIによって指定される命令であり、連続する64バイトのデータの書き込みを行うための命令である。図14ではこの64バイトは8バイトずつ、STP1〜STP8に連続して格納されている。
【0211】
命令ユニットは、このブロックストア命令の処理にあたって、本来1つの命令からなる64バイトストアを8つの命令からなる8バイトストアに分解して、SUにストア要求として与える。SUでは、8つの命令に分解された8バイトストアをWB上でマージするため、4つのWBに割り当てる。
【0212】
図14では、例えば最初のSTP1とSTP2に格納されているデータがマージされて、WB0に格納される。以下同様に、2つの連続するSTPに格納されているデータがそれぞれマージされて、WB1〜WB3に格納される。
【0213】
その後WBから、例えば主記憶へのデータの書き込みにあたっては、書き込みデータが一旦、16バイトの書き込みデータレジスタ76に移され、このレジスタを介して主記憶77に書き込まれる。なおこのデータレジスタは主記憶へのデータ書き込み時にだけ使用され、キャッシュメモリへの書き込み時には使用されない。
【0214】
しかしながらこの場合、前述のWB_BOQの強制的な更新動作が行われると、STPからWBへの書き込みに際して、8バイトずつのデータがWB上でマージされず、例えば次のWBの前半8バイトだけに入ったり、後半8バイトだけに入ったりする状態になり、連続した64バイトが連続した4つのWBに書き込まれるという動作を実現することができなくなる。
【0215】
そしてブロックストアのデータ存在パターンを複雑化し、主記憶77へのデータ書き込みにあたっても書き込みデータレジスタ76によるデータ選択操作が複雑となり、またブロックストア命令が必要とする、ここでは4個のWB以上のWBを使用することにより、WB資源が枯渇したり、処理効率が落ちたりすることになる。
【0216】
そこでブロックストアのデータをWBに書き込んでいる間は、WB_BOQの強制的な更新動作をおさえる制御が行われる。この制御は、先頭の8バイト、すなわちBST_1ST以外の部分のデータのWBへの書き込みにあたって、前述のWB_GO_NEW_ALLOCフラグをリセットすることによって実現される。
【0217】
この制御によってBST_1STのみに対して新しいWBが割り当てられ、他のデータはマージが許可された条件でアドレスに対応して順次各WBに格納される。なおアドレスは基本的にはデータ1バイト単位につけることができるが、本実施形態では8バイト単位につけられるものとする。
【0218】
図15〜図17は、マルチスレッド方式を採用するデータ処理装置におけるライトバッファ適用方式の説明図である。図15は時間的にスレッドが切り換えられるバーチカルマルチスレッド(VMT)方式の説明図である。VMT方式では、スレッドの切り換え時に発生するキャンセルによってセットされる、前述のPOST_CANフラグによって、スレッド間のストアデータのマージを防止し、正常な動作を可能とする。すなわち図15において、例えば図2におけると同様にストアバッファ部13とライトバッファ部14とはそれぞれ1つだけ備えられる。なおスレッド切り換え時には、基本的にはWBは解放されずにストアの完了までデータが保持されるが、ストアポートと、前述のSFBのためにアドレスと命令が保持されているフェッチポートとはすべて解放され、新しいスレッド側で直ちに使用可能となる。
【0219】
図16は同時に2つのスレッドが動作可能なホリゾンタルマルチスレッド(HMT)、またはシマルテーニアスマルチスレッド(SMT)と呼ばれるマルチスレッド方式における第1の場合の方式の説明図である。同図においては、2つのスレッドにそれぞれ対応するストアバッファ部13a,13bによってライトバッファ部14が共有される形式となっている。
【0220】
このためPOST_CANフラグを用いたスレッド間のマージの制御は不可能であり、その代わりに図4のWB_BOQフラグ格納部41とWB_GOフラグ格納部42とにそれぞれスレッドのIDを持ち、この2つのIDの一致の判断をマージ条件確認部43によるINH_MERGE信号の出力の制御条件として追加する。スレッドIDが一致していない時には、INH_MERGE信号をセットすることにより、異なるスレッド間のデータのマージが防止される。
【0221】
図17はSMT、またはHMT方式における第2の場合の説明図である。この場合には、それぞれのスレッドに対応してストアバッファ部13とライトバッファ部14とが専用に備えられ、特別な制御の必要はなく、以前の説明と全く同様に動作が行われる。
【0222】
図18は本実施形態におけるデータアライン方式の説明図である。本実施形態では、ライトバッファに格納された時点で、ストアデータはメモリイメージにアライン済み、すなわち主記憶などのメモリ格納時と同一の形式になっているものとする。このようにすることで、WBから1次キャッシュに書き込まれるデータの、データパスによるパスディレイの軽減が実現される。このためにアライン回路が、WBと1次キャッシュの間から、演算ユニットとストアバッファ部の間、およびストアバッファ部とライトバッファ部との間に移動される。
【0223】
図18に示されるように、EUから出力されたストアデータに対して、ストアバッファ部との間に配置されたアライン回路により、ストア要求に対するオペランドの長さを示すレングス情報と、EUから出力されるストアデータがデータパスの右より、あるいは左よりのいずれにのってきているかを示すアラインコードを使用して、データアラインが行われる。
【0224】
この2つの情報に従って、ストアデータを(8÷LENGTH)個だけコピーして、8バイトストアバッファ内に配置してデータのアラインを完了する。例えばレングスが2バイトである場合には、データをコピーして4個の2バイトデータを8バイトストアバッファ内に並べて、アラインを完了する。これはアライン回路を簡単にするためである。
【0225】
図18においてストアバッファ部、すなわちストアポートから出力されたストアデータに対して、ライトバッファ部との間に配置されたアライン回路によりエンディアンによるアラインが行われる。前述のように、ストアポートから出力されるデータにおいては、コピーされた値が各バイト位置に入っているため、エンディアンの指示によってそのままライトバッファに書き込むか、データの先頭から末尾までをそっくりひっくり返して書き込むかすれば、エンディアンによるアラインが完了する。
【0226】
アラインの方式は上述の方法に限定されず、どのようなデータアライン方式を採用してもよいが、いずれにせよライトバッファに書き込まれたデータはメモリイメージに展開済みであるものとする。これによってライトバッファ上でデータのマージを行うのに便利となる。
【0227】
また本実施形態では、このようにアライン回路を2つに分割すると共に、演算ユニットとストアバッファ部の間がアライン回路を含んで経路が短くなるように配置し、ライトバッファ部は例えばキャッシュメモリの近くに配置し、ストアバッファ部とライトバッファ部との間の経路はアライン回路を含んで距離を長くして配置するというように実装上の配置が行われる。
【0228】
図19は本実施形態においてライトバッファを複数階層備える記憶制御ユニットの例の説明図である。同図においては、図2におけると同様に、命令ユニット10からの要求に応じて、演算ユニット11からのデータはストアバッファ部13内のストアポートに書き込まれ、次にストアバッファ部13から第1番目の階層のライトバッファに書き込まれ、第1番目の階層のライトバッファから第2番目の階層のライトバッファへ書き込まれ、以下同様に第(N−1)番目の階層のライトバッファから第N番目の階層のライトバッファへ書き込まれ、最終的に第N番目の階層のライトバッファから1次キャッシュ、または主記憶などのメモリへの書き込みが行われる。
【0229】
図19において、EU11とストアバッファ部13との間、および最終階層の第N番目のライトバッファから1次キャッシュへのデータの書き込みの制御は、以上の説明と全く同様に実行される。例えばストアバッファ部13内の全てのストアポート全体の幅と、全てのライトバッファ部のライトバッファの全体の幅とを同じにすることによって、同じ時間内にストアポートと各階層のライトバッファとに対する処理が可能となり、全体として滞留可能なストア要求の数を増大させることができる。
【0230】
図19におけるデータの書き込み処理について更に説明する。図19において、この書き込み処理はEU11からストアバッファ部13内のストアポートへの書き込み処理と、ストアバッファ部13内のストアポートから第1階層ライトバッファ部141 内のライトバッファへの書き込み処理と、各階層のライトバッファ部内のライトバッファ相互間で行われる書き込み処理と、第N階層ライトバッファ部14n 内のライトバッファから1次キャッシュ15への書き込み処理とに分けられる。
【0231】
これらの処理のうち、EU11とストアバッファ部13との間の処理は図2におけると同様であり、また第N階層のライトバッファ部14n と1次キャッシュ15との間の処理は図2におけるライトバッファ部14から1次キャッシュ15へのデータ書き込み処理と同様である。次にストアバッファ部13から第1階層ライトバッファ部141 へのデータ書き込み処理、および各階層のライトバッファ部の間でのデータ書き込み処理は、図2のストアバッファ部13からライトバッファ部14へのデータ書き込み処理と同様である。
【0232】
このように、図19においてストアバッファ部13から第1階層ライトバッファ部141 へのデータ書き込み処理は、図2におけるストアバッファ部13からライトバッファ部14へのデータ書き込み処理と全く同一することができるが、各階層のライトバッファ部の間でのデータ書き込み処理は、図2のストアバッファ部13からライトバッファ部14へのデータ書き込み処理の一部を変更して行うこともできる。
【0233】
例えば各階層のライトバッファ部内のライトバッファのデータ幅を同一にする場合には、各階層のライトバッファ部内のライトバッファの間でデータのマージが発生することはありえない。そのため各階層のライトバッファ部の間では、データのマージ機能を削除することができる。この場合には、例えば図10で説明した書き込み先WB選定制御部に対する入力信号の制御などを簡単化することができる。簡単化可能な回路は、アドレスマッチを見る回路や、BOQの更新を行うための詳細な制御を行う回路などである。
【0234】
あるいは各階層のライトバッファ部の間で、その内部のライトバッファのデータ幅を変化させることも可能である。そのような場合にはデータ書き込み元のWBのデータ幅よりも、書き込み先のWBのデータ幅の方を大きくすると、ストアデータのマージの可能性が発生する。そうした部分の処理についてはマージ処理機能を追加し、そのようなマージ発生の可能性がない場合にはマージ処理機能を削除することが可能である。
【0235】
図19のように、ストアバッファ部と1次キャッシュメモリとの間に複数階層のライトバッファ部が存在する場合には、ストアデータが格納されているライトバッファを持つライトバッファ部から、1次キャッシュに近いライトバッファ部内のライトバッファに書き込みを行う場合に、途中のライトバッファ部のライトバッファが全て空であれば、その階層を介さずに、先行するストアを追い越さない範囲で最もキャッシュメモリに近い階層のライトバッファ部内のライトバッファへの書き込みを行うことによって、複数階層のライトバッファ部を介したデータの伝搬にかかる時間を短縮することが可能となる。
【0236】
図20はこのような動作の説明図である。同図に示すように、書き込み元となるWBから見て、1次キャッシュ15に近い側でストアデータを保持するライトバッファ部のうち、最も1次キャッシュ15から遠い階層のライトバッファ部を選択する機能を設け、また書き込み先となるWBから選択された階層のWBにデータ書き込みを行う機能を設ける。これによって先行するストアを追い越すことなく、最もキャッシュメモリに近い階層のWBへのデータの書き込みが可能となる。
【0237】
書き込み先のライトバッファ部の選択にあたっては、各階層のライトバッファ部内の各ライトバッファのバリッド信号の論理和出力が“1”となる時にはその階層にストアデータを保持するWBが存在すること、論理和出力が“0”となる時にはその階層を飛ばして書き込みができることが分かる。また各階層における各WBが全てストアデータを保持することを示すWB_FULL信号を調べることによって、その階層にはデータの書き込みができないことが分かる。
【0238】
WB_FULL信号が“1”となる階層が存在しない時には前述と同様にしてデータを書き込むべきライトバッファ部の選択が行われるが、WB_FULL信号が1となる階層が存在する場合には、その階層より1つ前のライトバッファ部を選択してデータの書き込みを行うことになる。選択された階層に対するクロックイネーブル信号を“1”として、データの書き込みが実施される。
【0239】
(付記1)命令処理装置から送られるストア要求に対応して、演算ユニットから送られ、該ストア要求によってキャッシュメモリまたはメモリに書き込まれるべきストアデータを保持するストアポートを備える記憶制御装置において、
該ストアポートと前記キャッシュメモリまたはメモリとの間で、前記ストアデータを該ストアポートから受け取り、一時的に格納するデータ格納手段と、
該ストアポートから該データ格納手段へのストアデータの書き込みを制御するデータ書き込み制御手段とを備えることを特徴とする記憶制御装置。
【0240】
(付記2)前記データ格納手段が、前記命令処理装置が前記ストア要求の実行をコミットした後に、前記ストアポートからのストアデータを受け取ることを特徴とする付記1記載の記憶制御装置。
【0241】
(付記3)前記データ格納手段が、前記ストアポートから受け取ったストアデータをそれぞれ格納する複数のライトバッファを備えると共に、
前記データ書き込み制御手段が、前記命令処理装置が複数(n個)のストア要求の実行を同時にコミットした時、該複数のライトバッファのうちで最も新しくデータが格納されたライトバッファから、データが格納されるべき順位でn個先のライトバッファまでの範囲のライトバッファに限定して、限定されたライトバッファへのデータ書き込みを制御することを特徴とする付記2記載の記憶制御装置。
【0242】
(付記4)前記ストアポート側に、前記命令処理装置から送られるストア要求のキャンセル信号を受け取った時、該ストアポートに対して前記データ格納手段へのデータの書き込みを指示するフラグをリセットする手段を更に備えることを特徴とする付記1記載の記憶制御装置。
【0243】
(付記5)前記記憶制御装置において、
前記データ格納手段からキャッシュメモリまたはメモリへのデータの書き込みを、前記命令処理装置とは独立して制御するメモリ書き込み制御手段を更に備えることを特徴とする付記1記載の記憶制御装置。
【0244】
(付記6)前記データ格納手段が、前記ストアポートから受け取ったストアデータをそれぞれ格納する1つ以上のライトバッファを備えると共に、
前記記憶制御装置において、該ストアデータが該1つ以上のライトバッファのいずれかに格納された時点でストアポートを解放する手段を更に備えることを特徴とする付記1記載の記憶制御装置。
【0245】
(付記7)前記データ格納手段が、前記ストアポートから受け取ったストアデータをそれぞれ格納するライトバッファを、前記キャッシュメモリまたはメモリの応答性能に応じた個数だけ備えることを特徴とする付記1記載の記憶制御装置。
【0246】
(付記8)前記記憶制御装置において、前記ストアデータを保持するストアポートを、前記命令処理装置の性能に応じた個数だけ備えることを特徴とする付記1記載の記憶制御装置。
【0247】
(付記9)前記データ書き込み制御手段が、前記ストアデータがストアポートに保持されている間に前記ストア要求がキャッシュヒットしていることが判明した時、該キャッシュヒットを示すフラグを前記データ格納手段に渡すことを特徴とする付記1記載の記憶制御装置。
【0248】
(付記10)前記データ書き込み制御手段が、前記ストアデータがストアポートに保持されている間に前記ストア要求が該ストア要求の完了までに該ストア要求に対するキャッシュラインの吐き出しを禁止するストア要求であることが判明した時、該キャッシュライン吐き出し禁止を示すフラグを前記データ格納手段に渡すことを特徴とする付記1記載の記憶制御装置。
【0249】
(付記11)前記ストアポート側と、前記データ格納手段側とで、同一数のストア要求を処理するために必要な制御フラグをそれぞれ必要なだけ保持することを特徴とする付記1記載の記憶制御装置。
【0250】
(付記12)前記キャッシュメモリが複数の階層によって構成されると共に、ストアデータを該複数階層の中で前記記憶制御装置を含むデータ処理装置の中央処理装置に最も近い階層に必ず書き込むべきストアイン方式が採用されている時、
該記憶制御装置が、該最も近い階層、または最も近い階層以外の階層にデータを書き込むべき時、前記データ格納手段から該書き込むべき階層へのデータの書き込みを制御する手段を更に備えることを特徴とする付記1記載の記憶制御装置。
【0251】
(付記13)前記キャッシュメモリが複数の階層によって構成されると共に、ストアデータを該複数階層の中で前記記憶制御装置を含むデータ処理装置の中央処理装置に最も近い階層には必要に応じて書き込み、該最も近い階層より次に近い階層には必ず書き込むべきストアスルー方式が採用されている時、
該記憶制御装置が、該最も近い階層または次に近い階層にデータを書き込むべき時、前記データ格納手段から該書き込むべき階層へのデータの書き込みを制御する手段を更に備えることを特徴とする付記1記載の記憶制御装置。
【0252】
(付記14)前記キャッシュメモリが複数の階層によって構成されると共に、キャッシュメモリへのデータ格納方式としてストアイン方式とストアスルー方式とが併用されている時、
前記記憶制御装置が、キャッシュメモリのいずれの階層にデータを書き込むべき時にも、前記データ格納手段から該書き込むべき階層へのデータの書き込みを制御する手段を更に備えること特徴とする付記1記載の記憶制御装置。
【0253】
(付記15)前記記憶制御装置において、
先行するストア要求に対応してデータ格納手段に格納されているデータに対して、次のストア要求に対応するストアポートからのデータのマージを該データ格納手段上で実行するデータマージを、前記データ書き込み制御手段に対して許可する手段を更に備えることを特徴とする付記1記載の記憶制御装置。
【0254】
(付記16)前記データ格納手段が、前記ストアポートから受け取ったストアデータをそれぞれ格納する1つ以上のライトバッファを備えると共に、
該ライトバッファが、ストアポートからのデータのマージを可能とするデータ幅であって、該ストアポートの持つデータ幅より大きいデータ幅を有することを特徴とする付記15記載の記憶制御装置。
【0255】
(付記17)前記記憶制御装置において、
先行するストア要求に対応してデータ格納手段に格納されているデータに対して、次のストア要求に対応するストアポートからのデータのマージを該データ格納手段上で実行するデータマージを、該先行するストア要求と次のストア要求との種類に応じて、前記データ書き込み制御手段に対して禁止する手段を更に備えることを特徴とする付記1記載の記憶制御装置。
【0256】
(付記18)前記記憶制御装置において、
先行するストア要求に対応してデータ格納手段に格納されているデータに対して、次のストア要求に対応するストアポートからのデータのマージを該データ格納手段上で実行するデータマージを、前記データ書き込み制御手段に対して強制的に禁止する手段を更に備えることを特徴とする付記1記載の記憶制御装置。
【0257】
(付記19)前記データマージが強制的に禁止された時においても、前記データ書き込み制御手段が、ストア命令の種類に応じて前記データ格納手段上でデータマージを実行することを特徴とする付記18記載の記憶制御装置。
【0258】
(付記20)前記記憶制御装置において、
前記命令処理装置から前記ストア要求のキャンセルが通知された時、
先行するストア要求に対応してデータ格納手段によって格納されているデータに対して、次のストア要求に対応するストアポートからのデータのマージをデータ格納手段上で実行することを、前記データ書き込み制御手段に対して禁止する手段を更に備えることを特徴とする付記1記載の記憶制御装置。
【0259】
(付記21)前記記憶制御装置において、
前記ストアデータを、外部からのフェッチ要求に対応して、前記データ格納手段に格納する前に前記ストアポートから外部に与えるストアデータバイパスフェッチを前記ストアポートに対して許可するか否かを判定する手段を更に備えることを特徴とする付記1記載の記憶制御装置。
【0260】
(付記22)前記ストアデータバイパスフェッチの許可の判定において、ストア要求とフェッチ要求とのそれぞれに対するアドレスとオペランド長の一致を検証することにより、バイパス許可候補としてのストアデータを選択することを特徴とする付記21記載の記憶制御装置。
【0261】
(付記23)前記記憶制御装置において、
前記ストアデータを、外部からのフェッチ要求に対応して、前記キャッシュメモリまたはメモリに書き込む前に前記データ格納手段から外部に与えるストアデータバイパスフェッチを、該データ格納手段に対して許可するか否かを判定する手段を更に備えることを特徴とする付記1記載の記憶制御装置。
【0262】
(付記24)前記ストアデータバイパスフェッチの許可の判定において、ストア要求とフェッチ要求とのそれぞれに対するデータの存在位置を示すバイトマークを複数バイト単位で比較すると共に、命令実行順序を示す識別子の比較を省略して、バイパス許可候補としてのストアデータを選択することを特徴とする付記23記載の記憶制御装置。
【0263】
(付記25)前記バイパス許可候補として選択されたデータのバイパスフェッチを実行するにあたり、前記バイトマークを1バイト単位で比較し、バイパスフェッチの是非について最終的に判定することを特徴とする付記24記載の記憶制御装置。
【0264】
(付記26)前記記憶制御装置において、
前記1バイト単位のバイトマークの比較においてバイパスフェッチ不可と判定された時、前記データ格納手段に対してバイパスフェッチ禁止を指示する手段を更に備えることを特徴とする付記25記載の記憶制御装置。
【0265】
(付記27)前記記憶制御装置が、マルススレッド動作可能な中央処理装置によって制御されるデータ処理装置を構成することを特徴とする付記1記載の記憶制御装置。
【0266】
(付記28)前記マルチスレッドの複数のスレッドの間で、前記ストアポートとデータ格納手段とを共有することを特徴とする付記27記載の記憶制御装置。
(付記29)前記記憶制御装置において前記ストアポートを複数個備え、
前記マルチスレッドの複数のスレッドの間で、前記データ格納手段を共有し、前記ストアポートを排他的に各スレッドが保持することを特徴とする付記27記載の記憶制御装置。
【0267】
(付記30)前記記憶制御装置において前記ストアポートとデータ格納手段とをそれぞれ複数個備え、
前記マルチスレッドの複数のスレッドの間で、前記ストアポートとデータ格納手段とをそれぞれ排他的に各スレッドが保持することを特徴とする付記27記載の記憶制御装置。
【0268】
(付記31)スレッドの切り替え時に実行が開始されたが完了していないインフライトなストア要求のキャンセルに対して、前記ストアポートが前記命令処理装置から該ストア要求の実行のコミットをすでに受け取っていた時には該ストアポートに保持されていたデータを前記データ書き込み制御手段が、データ格納手段に書き込ませ、実行のコミットをまだ受け取っていない時には該ストアポートを解放することを特徴とする付記27記載の記憶制御装置。
【0269】
(付記32)前記スレッドの切り替え時に、前記データ書き込み制御手段が外部からのデータフェッチ要求に対応してアドレスと命令とを保持するフェッチポートを更に解放することを特徴とする付記31記載の記憶制御装置。
【0270】
(付記33)前記ストアポートとデータ格納手段とのそれぞれに対して、前記マルチスレッドの各スレッドを識別するスレッド識別子を保持する手段を更に備えることを特徴とする付記27記載の記憶制御装置。
【0271】
(付記34)前記記憶制御装置において、外部からのフェッチ要求に対応して、前記ストアデータを前記データ格納手段に格納する前、または前記キャッシュメモリまたはメモリに書き込む前に、前記ストアポートまたは前記データ格納手段から外部に与えるストアデータバイパスフェッチを許可するか否かを判定する手段を更に備え、
該バイパスフェッチの可否を判定する手段が前記ストアポート、またはデータ格納手段に対して保持されているスレッドの識別子とフェッチを要求するスレッドの識別子とを比較し、異なる識別子を持つスレッド間でのストアデータバイパスフェッチを禁止することを特徴とする付記33記載の記憶制御装置。
【0272】
(付記35)前記記憶制御装置において、先行するストア要求に対応してデータ格納手段に格納されているデータに対して、次のストア要求に対応するストアポートからのデータのマージをデータ格納手段上で実行することを、前記データ書き込み制御手段に対して許可するか否かを判定する手段を更に備えると共に、該データのマージの可否を判定する手段が、前記ストアポートとデータ格納手段に対して保持されているスレッド識別子を比較し、異なる識別子を持つスレッド間でのデータマージを禁止することを特徴とする付記33記載の記憶制御装置。
【0273】
(付記36)前記記憶制御装置において、
先行するストア要求に対応してデータ格納手段に格納されているデータに対して次のストア要求に対応するストアポートからのデータのマージをデータ格納手段上で実行することを、前記データ書き込み制御手段に対して許可するか否かを判定する手段を更に備えると共に、
該データマージの可否を判定する手段が、前記ストアポートがスレッドの切り替えに伴い、前記命令処理装置側から送られるストア要求のキャンセル信号を受け取った時、該キャンセルに対応するストアポート内のデータと、すでにデータ格納手段に格納されているデータとのマージを禁止することを特徴とする付記27記載の記憶制御装置。
【0274】
(付記37)前記記憶制御装置において、
前記データ格納手段への前記ストアデータの格納までに該ストアデータをメモリ格納時と同一形式にアラインする手段を更に備えることを特徴とする付記1記載の記憶制御装置。
【0275】
(付記38)前記アラインする手段が、前記演算ユニットから送られるデータに対してストアデータのアドレスとオペランド長とに応じたアライン処理を行って、該処理後のデータを前記ストアポートに与える手段と、
該ストアポートから出力されたデータに対してエンディアンに応じたアライン処理を行って、前記データ格納手段に与える手段とによって構成されることを特徴とする付記37記載の記憶制御装置。
【0276】
(付記39)前記アドレスとオペランド長とに応じたアライン処理を行う手段を含めてストアポートを前記演算ユニットに近い位置に配置し、
データ格納手段をキャッシュメモリまたはメモリに近い位置に配置し、
該エンディアンに応じたアライン処理を行う手段とデータ格納手段との間の距離を長くして配置可能とすることを特徴とする付記38記載の記憶制御装置。
【0277】
(付記40)前記データ格納手段が前記ストアポートから受け取ったストアデータをそれぞれ格納する1つ以上のライトバッファを備えると共に、
前記データ書き込み制御手段が、ストアポートから出力されたデータを、該複数のライトバッファのうちで最も新しくデータが格納されたライトバッファ、または次にデータが格納されるべきライトバッファのいずれかに書き込む制御を行うことを特徴とする付記1記載の記憶制御装置。
【0278】
(付記41)前記データ格納手段が、前記ストア要求がキャッシュミスしている時、該ストア要求に対するキャッシュラインの要求リクエストを記憶制御装置のパイプラインに投入するキャッシュライン要求手段を更に備えることを特徴とする付記1記載の記憶制御装置。
【0279】
(付記42)前記データ格納手段が、前記ストアポート側から受け取ったストアデータをそれぞれ格納する複数のライトバッファを備えると共に、
前記記憶制御装置において、前記キャッシュメモリまたはメモリへのデータの書き込みを、該複数のライトバッファのうちで最も最近ストアポートからのデータの格納が行われたライトバッファ以外から行うように制御するメモリ書き込み制御手段を更に備えることを特徴とする付記1記載の記憶制御装置。
【0280】
(付記43)前記データ格納手段が、前記ストアポート側から受け取ったストアデータをそれぞれ格納する複数のライトバッファを備えると共に、
前記記憶制御装置において、前記ストアポートが空になった時、最も最近データの格納が行われたライトバッファから前記キャッシュメモリまたはメモリへのデータの書き込みを行わせるメモリ書き込み制御手段を備えることを特徴とする付記1記載の記憶制御装置。
【0281】
(付記44)前記データ格納手段が、前記ストアポート側から受け取ったストアデータをそれぞれ格納する複数のライトバッファを備えると共に、
前記記憶制御装置において、最も最近データの格納が行われたライトバッファからの前記キャッシュメモリまたはメモリへのデータ書き込みが行われないことによって後続の命令が実行不可能となった時、該ライトバッファからのデータ書き込みを行わせるメモリ書き込み制御手段を備えることを特徴とする付記1記載の記憶制御装置。
【0282】
(付記45)前記データ格納手段が、前記ストアポート側から受け取ったストアデータをそれぞれ格納する複数のライトバッファを備えると共に、
前記記憶制御装置において、最も最近データの格納が行われたライトバッファに格納されたデータに関するキャッシュラインの解放を外部から求められた時、該キャッシュライン解放を可能とするために該ライトバッファからのデータ書き込みを行わせるメモリ書き込み制御手段を備えることを特徴とする付記1記載の記憶制御装置。
【0283】
(付記46)前記データ格納手段が、前記ストアポート側から受け取ったストアデータをそれぞれ格納する複数のライトバッファを備えると共に、
前記記憶制御装置において、最も最近データの格納が行われたライトバッファに格納されているデータに対して他のストア要求に関するデータとのマージが禁止されている時、該ライトバッファからのデータ書き込みを行わせるメモリ書き込み制御手段を備えることを特徴とする付記1記載の記憶制御装置。
【0284】
(付記47)命令処理装置から送られるストア要求に対応する制御を行う記憶制御装置において、
該ストア要求によって、演算ユニットから送られ、キャッシュメモリまたはメモリに書き込まれるべきストアデータをそれぞれ格納する複数のバッファ手段と、
該複数のバッファ手段のうちで最も古くデータが格納されたバッファ手段のみを対象として、該ストアデータの長さが前記キャッシュメモリまたはメモリ上でデータのエラー管理が行われる単位の領域の長さより短い場合に、該ストアデータのキャッシュメモリまたはメモリへの格納を中止させる制御を行うメモリ書き込み制御手段とを備えることを特徴とする記憶制御装置。
【0285】
(付記48)命令処理装置から送られるストア要求に対応して、演算ユニットから送られ、該ストア要求によってキャッシュメモリまたはメモリに書き込まれるべきストアデータを保持するストアポートを備える記憶制御装置において、
該ストアポートと前記キャッシュメモリまたはメモリとの間に、前記ストアデータをそれぞれ一時的に保持する複数階層のデータ格納手段と、
該ストアポートから、該複数階層の1つ以上の階層のデータ格納手段を介して、前記キャッシュメモリまたはメモリまでの前記ストアデータの書き込みを制御するストアデータ書き込み制御手段とを備えることを特徴とする記憶制御装置。
【0286】
(付記49)前記複数階層のデータ格納手段がそれぞれ複数個のライトバッファを備えると共に、
前記ストアデータ書き込み制御手段が、該複数階層のうちに1つの階層内のライトバッファの全てにデータが保持されている階層が存在しない時、前記ストアポート側から順次、前記複数個のライトバッファが全て空である階層を介することなく、前記ストアデータの書き込み可能なライトバッファが存在する階層のライトバッファ手段を介しながらストアデータの書き込みを制御し、
ライトバッファの全てにデータが保持されている階層が存在する時、該ライトバッファの全てにデータが保持されている階層のうちで、前記ストアポート側に近い階層より更に1階層近い階層のライトバッファ手段を介しながら、ストアデータの書き込みを制御することを特徴とする付記48記載の記憶制御装置。
【0287】
(付記50)命令処理装置から送られるストア要求に対応して、演算ユニットから送られるストアデータをキャッシュメモリまたはメモリに格納するデータ格納方法において、
該ストアデータを複数個のストアポートのうちの1つに格納し、
該ストアポートに格納されたデータを複数個のライトバッファの1つに格納し、
該ライトバッファに格納されたデータをキャッシュメモリまたはメモリに格納することを特徴とするデータ格納方法。
【0288】
(付記51)前記ストアポートに格納されたデータのライトバッファへの格納を、前記命令処理装置が前記ストア要求の実行をコミットした後に行うことを特徴とする付記50記載のデータ格納方法。
【0289】
(付記52)前記ライトバッファに格納されたデータのキャッシュメモリまたはメモリへの格納の制御において、
前記複数のライトバッファのうちで、最も最近ストアポートからのデータ格納が行われたライトバッファ以外からキャッシュメモリまたはメモリへのデータ格納を行うことを特徴とする付記50記載のデータ格納方法。
【0290】
【発明の効果】
以上詳細に説明したように本発明によれば、ストア要求の処理を、命令処理装置の管理下にも置かれるストアポート部と、記憶制御装置のみの管理下に置かれるライトバッファ部とに分割することによって、ストアポート部およびライトバッファ部のそれぞれで同時に処理対象となるストア要求の数を減らして、処理速度を上げることができる。
【0291】
また全体として同時に処理中、および処理待ちとなるストア要求の数を増加させることができ、単位時間あたりの処理量を増加させ、ストア要求処理性能を大幅に向上させることができる。
【0292】
ライトバッファの新たな装備は、従来のストアポートを用いて処理を行っているデータ処理装置であれば全てにおいて採用可能であり、その採用によって性能の向上が期待される。またこの場合、命令処理装置側には一切の改造が必要なく、記憶制御装置側の改造のみで実装が可能であり、広く一般に採用しやすい方式である。
【0293】
更に最近流行になっているマルチスレッド対応可能なデータ処理装置においても、ライトバッファを装備することにより、性能面でより一層の向上を図ることができ、データ処理装置の処理性能効能向上に寄与するところが大きい。
【図面の簡単な説明】
【図1】本発明の記憶制御装置の原理ブロック図である。
【図2】本実施形態におけるキャッシュへのデータ格納方式の基本説明図である。
【図3】命令ユニットおよび記憶制御ユニットの詳細構成を示すブロック図である。
【図4】ライトバッファへのデータ格納およびデータマージに対する基本処理の説明図である。
【図5】ストアポート側とライトバッファ側とに保持されるフラグを示す図である。
【図6】ストアインとストアスルーのストア処理方式の説明図である。
【図7】5つのライトバッファに対するデータのストアを示す図である。
【図8】アドレスAの前半8バイトの内容を説明する図である。
【図9】ストアフェッチバイパス制御方式を説明する図である。
【図10】複数のストアポートのデータを同時に1つ以上のライトバッファに書き込むデータ書き込み方式の説明図である。
【図11】ライトバッファ側でのパイプラインリクエスト要求の説明図である。
【図12】ライトバッファのステータスとパイプラインリクエスト要求との関係の説明図(その1)である。
【図13】ライトバッファのステータスとパイプラインリクエスト要求との関係の説明図(その2)である。
【図14】データの64バイトブロックストアの説明図である。
【図15】マルチスレッド採用データ処理装置におけるライトバッファ適用方式(その1)の説明図である。
【図16】マルチスレッド採用データ処理装置におけるライトバッファ適用方式(その2)の説明図である。
【図17】マルチスレッド採用データ処理装置におけるライトバッファ適用方式(その3)の説明図である。
【図18】本実施形態におけるデータアライン方式の説明図である。
【図19】ライトバッファ部を複数階層備える記憶制御ユニットの説明図である。
【図20】複数階層ライトバッファにおけるデータ伝搬時間短縮方式の説明図である。
【符号の説明】
1 記憶制御装置
2 キャッシュメモリ
3 ストアポート
4 データ格納手段
5 データ書き込み制御手段
10,20 命令ユニット(IU)
11 演算ユニット(EU)
12,25 記憶制御ユニット(SU)
13,26 ストアバッファ部
14,17 ライトバッファ部
15,41 1次キャッシュ
28 ストアバッファ制御部
29 ストアポート(STP)
30 STP割り当て部
35 ライトバッファ(WB)
36 WB_GO制御部
43 2次キャッシュ
44 2次キャッシュ用ライトバッファ
56 ストアフェッチバイバス(SFB)制御部

Claims (5)

  1. 命令処理装置から送られるストア要求に対応する制御を行う記憶制御装置において、
    前記ストア要求によって、演算ユニットから送られ、キャッシュメモリまたはメモリに書き込まれるべきストアデータをそれぞれ格納する複数のバッファ手段と、
    前記複数のバッファ手段と前記キャッシュメモリまたはメモリとの間で、前記ストアデータを一時的に格納するデータ格納手段と、
    前記命令処理装置が前記ストア要求の実行をコミットした後に、前記複数のバッファ手段から前記データ格納手段へのストアデータの書き込み制御を行うデータ書き込み制御手段と、
    前記データ格納手段のうちで最も古くデータが格納されたデータ格納手段のみを対象として、前記ストアデータの長さが前記キャッシュメモリまたはメモリ上でデータのエラー管理が行われる単位の領域の長さより短く、かつ、前記キャッシュメモリまたはメモリ上の訂正不能エラーが発生した場合に、前記ストアデータのキャッシュメモリまたはメモリへの格納を中止させる制御を行うメモリ書き込み制御手段とを備えることを特徴とする記憶制御装置。
  2. 前記メモリ書き込み制御手段は、前記キャッシュメモリまたはメモリへのデータの書き込みを、前記データ格納手段のうち最後にデータの格納が行われたデータ格納手段以外から行うように制御することを特徴とする請求項1記載の記憶制御装置。
  3. 前記データ格納手段は複数階層からなり、
    前記記憶制御装置はさらに、
    前記複数のバッファ手段から、前記複数階層の1つ以上の階層のデータ格納手段を介して、前記キャッシュメモリまたはメモリまでの前記ストアデータの書き込みを制御するストアデータ書き込み制御手段を備えることを特徴とする請求項1記載の記憶制御装置。
  4. 複数のバッファ部と、前記複数のバッファ部とキャッシュメモリまたはメモリとの間に設けられたデータ格納部と、前記データ格納部を制御するデータ書き込み制御部と、メモリ書き込み制御部を有し、命令処理装置から送られるストア要求に対応する制御を行う記憶制御装置のデータ格納方法において、
    前記ストア要求によって、演算ユニットから送られ、前記キャッシュメモリまたはメモリに書き込まれるべきストアデータを、前記複数のバッファ部が、それぞれ格納するステップと、
    前記データ書き込み制御部の制御により、前記命令処理装置が前記ストア要求の実行をコミットした後に、前記複数のバッファ部から前記データ格納部への前記ストアデータの書き込みを行うステップと、
    前記データ格納部のうちで最も古くデータが格納されたデータ格納部のみを対象として、前記ストアデータの長さが前記キャッシュメモリまたはメモリ上でデータのエラー管理が行われる単位の領域の長さより短く、かつ、前記キャッシュメモリまたはメモリ上の訂正不能エラーが発生した場合に、前記メモリ書き込み制御部が、前記ストアデータのキャッシュメモリまたはメモリへの格納を中止させるステップを有することを特徴とするデータ格納方法。
  5. 前記データ格納方法において、
    前記データ格納部のうちで、最後に前記複数のバッファ部からのデータ格納が行われたデータ格納部以外からキャッシュメモリまたはメモリへのデータ格納を行うことを特徴とする請求項4記載のデータ格納方法。
JP2002191456A 2002-06-28 2002-06-28 記憶制御装置およびデータ格納方法 Expired - Fee Related JP4234361B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2002191456A JP4234361B2 (ja) 2002-06-28 2002-06-28 記憶制御装置およびデータ格納方法
US10/349,022 US7281091B2 (en) 2002-06-28 2003-01-23 Storage controlling apparatus and data storing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002191456A JP4234361B2 (ja) 2002-06-28 2002-06-28 記憶制御装置およびデータ格納方法

Publications (2)

Publication Number Publication Date
JP2004038341A JP2004038341A (ja) 2004-02-05
JP4234361B2 true JP4234361B2 (ja) 2009-03-04

Family

ID=29774407

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002191456A Expired - Fee Related JP4234361B2 (ja) 2002-06-28 2002-06-28 記憶制御装置およびデータ格納方法

Country Status (2)

Country Link
US (1) US7281091B2 (ja)
JP (1) JP4234361B2 (ja)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4091800B2 (ja) * 2002-06-28 2008-05-28 富士通株式会社 データ処理装置、及び格納データのアライン方法
US7484045B2 (en) 2004-03-30 2009-01-27 Intel Corporation Store performance in strongly-ordered microprocessor architecture
JP2006048163A (ja) * 2004-07-30 2006-02-16 Fujitsu Ltd ストアデータ制御装置およびストアデータ制御方法
US7797609B2 (en) * 2004-08-19 2010-09-14 Unisys Corporation Apparatus and method for merging data blocks with error correction code protection
US7877566B2 (en) * 2005-01-25 2011-01-25 Atmel Corporation Simultaneous pipelined read with multiple level cache for improved system performance using flash technology
US7533323B2 (en) * 2005-07-28 2009-05-12 Prostor Systems, Inc. Adaptive archival format
WO2007088597A1 (ja) 2006-01-31 2007-08-09 Fujitsu Limited エラー訂正コード生成方法及びメモリ管理装置
EP2169555A4 (en) * 2007-06-20 2011-01-05 Fujitsu Ltd CACHE CONTROL, CACHE CONTROL PROCEDURE AND CACHE CONTROL PROGRAM
CN101689474A (zh) * 2007-06-21 2010-03-31 皇家飞利浦电子股份有限公司 包括起动器触角的高压放电灯
US8458282B2 (en) * 2007-06-26 2013-06-04 International Business Machines Corporation Extended write combining using a write continuation hint flag
JP5522731B2 (ja) * 2010-08-19 2014-06-18 エヌイーシーコンピュータテクノ株式会社 ストアマージ装置、情報処理装置、ストアマージ方法およびプログラム
WO2012098812A1 (ja) * 2011-01-18 2012-07-26 日本電気株式会社 マルチプロセッサシステム、マルチプロセッサ制御方法、及びプロセッサ
JP5732953B2 (ja) * 2011-03-24 2015-06-10 日本電気株式会社 ベクトル処理装置、ベクトル処理方法、及び、プログラム
CN106030518B (zh) * 2014-03-27 2019-03-26 英特尔公司 用于整理和退出存储的处理器、方法、系统和装置
GB2549239A (en) 2014-11-13 2017-10-18 Advanced Risc Mach Ltd Context sensitive barriers in data processing
US10447316B2 (en) * 2014-12-19 2019-10-15 Micron Technology, Inc. Apparatuses and methods for pipelining memory operations with error correction coding
US10007606B2 (en) * 2016-03-30 2018-06-26 Intel Corporation Implementation of reserved cache slots in computing system having inclusive/non inclusive tracking and two level system memory
JP6862951B2 (ja) * 2017-03-15 2021-04-21 富士通株式会社 メモリ制御装置、情報処理装置およびメモリ制御方法
ES2910262T3 (es) 2018-03-13 2022-05-12 Thorsteinn I Viglundsson Método y aparato para elaborar nieve húmeda

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3916388A (en) * 1974-05-30 1975-10-28 Ibm Shifting apparatus for automatic data alignment
JPS55157181A (en) * 1979-05-25 1980-12-06 Nec Corp Buffer memory control system
JPH064402A (ja) 1992-06-19 1994-01-14 Fujitsu Ltd データ処理装置
US5848432A (en) * 1993-08-05 1998-12-08 Hitachi, Ltd. Data processor with variable types of cache memories
JP3164732B2 (ja) * 1994-07-04 2001-05-08 富士通株式会社 データ処理装置
JP3400458B2 (ja) * 1995-03-06 2003-04-28 株式会社 日立製作所 情報処理装置
JP3039391B2 (ja) * 1996-08-09 2000-05-08 日本電気株式会社 メモリシステム
US5860107A (en) * 1996-10-07 1999-01-12 International Business Machines Corporation Processor and method for store gathering through merged store operations
US5960455A (en) * 1996-12-30 1999-09-28 Unisys Corporation Scalable cross bar type storage controller
US5894569A (en) * 1997-04-14 1999-04-13 International Business Machines Corporation Method and system for back-end gathering of store instructions within a data-processing system
US6205520B1 (en) * 1998-03-31 2001-03-20 Intel Corporation Method and apparatus for implementing non-temporal stores
US6289438B1 (en) * 1998-07-29 2001-09-11 Kabushiki Kaisha Toshiba Microprocessor cache redundancy scheme using store buffer
US6321300B1 (en) * 1999-05-14 2001-11-20 Rise Technology Company Apparatus and method for dynamically reconfigurable timed flushing of a queue of coalescing write buffers

Also Published As

Publication number Publication date
JP2004038341A (ja) 2004-02-05
US7281091B2 (en) 2007-10-09
US20040003174A1 (en) 2004-01-01

Similar Documents

Publication Publication Date Title
JP4234361B2 (ja) 記憶制御装置およびデータ格納方法
JP3741146B2 (ja) コンピュータシステム
US7844797B2 (en) System and method for handling load and/or store operations in a superscalar microprocessor
US5471598A (en) Data dependency detection and handling in a microprocessor with write buffer
US7111126B2 (en) Apparatus and method for loading data values
US7447845B2 (en) Data processing system, processor and method of data processing in which local memory access requests are serviced by state machines with differing functionality
US20080010417A1 (en) Read/Write Permission Bit Support for Efficient Hardware to Software Handover
EP0442690A2 (en) Data cache store buffer for high performance computer

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041026

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080321

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080408

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080606

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080805

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081003

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081021

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081119

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20081211

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111219

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4234361

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111219

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121219

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121219

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131219

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees