JP4983919B2 - 演算処理装置および演算処理装置の制御方法 - Google Patents

演算処理装置および演算処理装置の制御方法 Download PDF

Info

Publication number
JP4983919B2
JP4983919B2 JP2009520183A JP2009520183A JP4983919B2 JP 4983919 B2 JP4983919 B2 JP 4983919B2 JP 2009520183 A JP2009520183 A JP 2009520183A JP 2009520183 A JP2009520183 A JP 2009520183A JP 4983919 B2 JP4983919 B2 JP 4983919B2
Authority
JP
Japan
Prior art keywords
instruction
unit
thread
load
entry
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
JP2009520183A
Other languages
English (en)
Other versions
JPWO2008155829A1 (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
Publication of JPWO2008155829A1 publication Critical patent/JPWO2008155829A1/ja
Application granted granted Critical
Publication of JP4983919B2 publication Critical patent/JP4983919B2/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
    • 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
    • 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/46Multiprogramming arrangements
    • 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (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)

Description

本発明は,メモリアクセスをアウトオブオーダーで処理するSMT(Simultaneous Multi Thread )のプロセッサに関するものであり,特に,あるスレッドで実行されるストア処理の順序性が,同一プロセッサ内の他スレッドで実行されるロード処理に反映されることを保証するSMTにおけるスレッド間のTSO保証方式に関するものである。
TSO(Total Store Ordering)とは,メモリにアクセスする命令の順序に対して,実際にメモリに書き込む順序の入れ替えの制約が定められたメモリオーダリング(memory ordering )の一つである。TSOのルールは,次の三点である。
1.ロード命令は,先行するロード命令を追い越して処理してはいけない。
2.ストア命令は,先行するロード命令と先行するストア命令を追い越して処理してはいけない。
3.アトミックロードストア命令は,先行するロード命令と先行するストア命令を追い越して処理してはいけない。アトミックロードストア命令は,その命令により対象データがロードされてからストアされるまでの間,その対象データへの他からのアクセスを制限しなければならない命令である。
図9は,TSOによって保証しなければならないロード命令/ストア命令間の追い越し可否パターンを示す図である。#1に示すように,ロード命令は先行するロード命令を追い越して処理することはできない。#2に示すように,ストア命令は先行するロード命令を追い越して処理することはできない。#3に示すように,ロード命令は先行するストア命令を追い越して処理することができる。#4に示すように,ストア命令は先行するストア命令を追い越して処理することができない。
つまり,ロード命令は先行するストア命令を追い越して処理してもよいが,その他のパターンの追い越しは禁止となる。ただし,ロード命令の対象となるデータが先行するストア命令の対象となるデータに含まれている場合には,ロード命令は先行するストア命令のデータをロードしなければならない。
ここで,メモリアクセスをアウトオブオーダーで処理するプロセッサでは,後続のロード命令が先行するロード命令を追い越して処理を行い,先にデータを命令制御部に返すことを可能とする。
図10は,アウトオブオーダー処理を行うプロセッサにおけるロード命令同士の追い越しの例を説明する図である。アウトオブオーダー処理を行うプロセッサにおいて,命令制御部100は,キャッシュ制御部200にロード命令load−Aを発行する。load−Aの対象となるデータがキャッシュミスすると,キャッシュ制御部200は,外部の記憶手段に対して該当データを要求する。
続けて,命令制御部100は,キャッシュ制御部200にロード命令load−Bを発行する。ロード命令load−Bの対象となるデータがキャッシュヒットすると,キャッシュ制御部200は,先行するload−Aの処理を追い越して後続のロード命令load−Bの処理を行い,ロード命令load−Bの対象となるデータdata−Bを命令制御部100に返す。
その後,キャッシュ制御部200は,外部の記憶手段からデータ転送を受けると,ロード命令load−Aの処理を行い,ロード命令load−Aの対象となるデータdata−Aを命令制御部100に返す。
このように,アウトオブオーダー処理では,命令の順序通りにキャッシュからのデータの読み出しが行われるとは限らない。しかし,命令制御部100では実際には順序通りに命令が実行されるため,データを順不同で読み出したとしても,ロード/ストア間のTSOさえ守っていれば,単一スレッドにのみ対応するプロセッサの場合,ソフトウェアからはTSOが守られているように見える。
ところが,SMTのプロセッサでは,同時に実行される複数のスレッドが一次キャッシュを共有するため,一つのプロセッサ内のスレッド間でのTSO違反の回避が必要となる。
SMT(Simultaneous Multi Thread )とは,単一のCPUで複数のスレッドを同時実行する技術である。すなわち,SMTのプロセッサは,複数のスレッドを同時実行する機能を備えたプロセッサである。SMTのプロセッサに関する先行技術が記載された文献として,例えば特許文献1などがある。特許文献1には,スレッド間での共有データの読み出しおよび書き込みの実行順序の一貫性を保証する技術が記載されている。
WO2004/068361号公報
図11〜図13は,SMT構成におけるTSO違反の例を説明する図である。図11〜図13に示す例において,命令制御部100から一次キャッシュ制御部200に発行されたロード命令/ストア命令等のメモリアクセス要求は,複数のエントリからなるFP(Fetch Port)220に一旦保持される。ここでは,説明の便宜上プロセッサ内のスレッド数を2とし,スレッドごとにそれぞれFP220が備えられているものとする。命令制御部100から発行された命令は,FP220のエントリに命令の実行順序に従って循環して割り当てられる。FP220に保持された要求はアウトオブオーダーで読み出され,処理可能な要求からその対象データを命令制御部100に返すことが可能である。
ここでは,キャッシュRAM210上にデータが存在しない領域A,キャッシュRAM210上にデータが存在する領域Bに対して,プロセッサ内のあるスレッド(thread−α)では,命令制御部100からstore−A,store−Bの順で一次キャッシュ制御部200に命令が発行され,同一プロセッサ内の別のスレッド(thread−β)では,命令制御部100からload−B,load−Aの順で一次キャッシュ制御部200に命令が発行されるケースについて説明する(図11参照)。
thread−αで発行されたstore−A,store−Bは順にFP220αに保持され,thread−βで発行されたload−B,load−Aは順にFP220βに保持される。なお,図において,各FP220に保持された命令の左側に表記された数字は,各エントリを示す番号である。
一次キャッシュ制御部200では,まず,thread−βで発行された命令から処理が行われるものとする。thread−βにおいて先行するload−BでキャッシュRAM210の領域Bにアクセスすると,キャッシュRAM210には領域Bのデータが存在しないのでキャッシュミスとなり,二次キャッシュ制御部300に対して該当データの要求を行う。
二次キャッシュ制御部300に対してload−Bの対象データを要求している間に,後続のload−AでキャッシュRAM210の領域Aにアクセスすると,キャッシュヒットとなり,得られたdata−A(old)を命令制御部100に返す。なお,図中,領域Aのデータがoldと表記されているのは,後のstore−Aの処理によって書き換えられたデータと比較して古いデータであることを示している。
その後,図12に示すように,二次キャッシュ制御部300から転送された領域BのデータがキャッシュRAM210に到着する。ここで,一次キャッシュ制御部200では,thread−βのload−Bの再処理を行う前に,thread−αで発行された命令から処理が行われるものとする。store−A,store−BでキャッシュRAM210の領域A,領域Bにアクセスすると,共にキャッシュヒットとなり,キャッシュRAM210の領域A,領域Bのデータが更新される。なお,図中,領域A,領域Bのデータがnewと表記されているのは,store−A,store−Bの処理によって書き換えられる前のデータと比較して新しいデータであることを示している。
その後,一次キャッシュ制御部200では,thread−βのload−Bの再処理が行われる。load−BでキャッシュRAM210の領域Bにアクセスすると,キャッシュヒットとなり,得られたdata−B(new)を命令制御部100に返す(図13参照)。
この結果,thread−αでstore−A,store−Bの順に命令が発行されたにもかかわらず,thread−βでは,load−Bの処理ではストア済みデータを,load−Aの処理ではストア前データを返したことになり,TSOにおけるロード命令/ロード命令間の追い越し禁止に違反したことになってしまう。
本発明は,上記の問題点の解決を図り,メモリアクセスをアウトオブオーダーで処理するSMTのプロセッサにおいて,あるスレッドで実行されるストア処理の順序性が,同一プロセッサ内の他スレッドで実行されるロード処理に反映されることを保証する技術を提供することを目的とする。
本発明は,上記課題を解決するため,複数のスレッドを同時実行するSMTのプロセッサにおいて,あるスレッドで後続のロード命令の処理が先行するロード命令の処理より先に実行され,後続のロード命令の対象データが先に命令制御部に返された場合に,そのデータに対するストア処理が別のスレッドによって実行されると,TSOを違反する可能性があるとして,先行するロード命令を処理するときに,その先行するロード命令の次の命令から上記の後続のロード命令までの命令の再実行を命令制御部に要求することで,TSO違反を回避することを特徴とする。
複数のスレッドを同時に実行するSMTのプロセッサにおいて,キャッシュ制御部には,各スレッドのFPのエントリごとに,処理が完了済みであることを示すフラグと,他のスレッドのストア処理により命令の再実行が必要となることを示すフラグとを用意し,また各スレッドのFPごとに最も古い要求が保持されたエントリを示す情報を用意する。
あるスレッドαでストア処理が実行されたときに,他のスレッドβに,実行されたストア処理の対象アドレスと対象アドレスが一致し,処理が完了済みであるロード系の命令が保持されたエントリがあれば,そのスレッドβのFPの最も古い要求が保持されたエントリまたはその次のエントリから,上記のストア処理の対象アドレスと対象アドレスが一致し,処理が完了済みであるロード系の命令が保持されたエントリまでのすべてのエントリについて,他のスレッドのストア処理により命令の再実行が必要となることを示すフラグをセットする。
スレッドβのFPの最も古い要求が実行されると,他のスレッドのストア処理により命令の再実行が必要となることを示すフラグがセットされているエントリに保持された要求について,命令制御部に対して命令の再実行要求を発行する。
具体的には,本装置は,一連の命令列であるスレッドに含まれ,メモリアクセスを行うストア命令とロード命令を,可能な場合に順不同で実行する演算処理装置において,ストア命令を含む第1のスレッドを実行する第1のスレッド実行部と,第1のロード命令と前記第1のロード命令に対して先行する第2のロード命令とを含む第2のスレッドを実行する第2のスレッド実行部と,前記第1のスレッド実行部と前記第2のスレッド実行部から共有されるキャッシュメモリと,前記第1のスレッド実行部と前記第2のスレッド実行部を制御する命令制御部と,前記第1のスレッド実行部が,前記キャッシュメモリに対して前記ストア命令を実行した場合に,前記第2のスレッド実行部が,前記キャッシュメモリに対して前記第1のロード命令を前記第2のロード命令より先に実行し,前記第1のロード命令の対象データを前記ストア命令の実行より先に前記命令制御部に応答したか否かを判定する判定部と,前記第2のスレッド実行部が,前記キャッシュメモリに対して前記第1のロード命令を前記第2のロード命令より先に実行し,前記第1のロード命令の対象データを前記ストア命令の実行より先に前記命令制御部に応答したと,前記判定部が判定した場合,前記第2のスレッド実行部が,前記第2のロード命令を実行するとき,前記第2のロード命令の次の命令から前記第1のロード命令までの前記第2のスレッド実行部による再実行を,前記命令制御部に要求する命令再実行要求部を有することを特徴とする。
本発明によって,メモリアクセスをアウトオブオーダーで処理するSMTのプロセッサにおいて,スレッド間のデータ更新の順序性が保証される。
本実施の形態によるプロセッサの構成例を示す図である。 FPのエントリが保持する情報の構成要素の例を示す図である。 本実施の形態によるストアによる命令再実行要求フラグのセット処理フローチャートである。 本実施の形態による命令再実行要求処理フローチャートである。 SMT構成におけるTSO違反回避の例を説明する図である。 SMT構成におけるTSO違反回避の例を説明する図である。 SMT構成におけるTSO違反回避の例を説明する図である。 SMT構成におけるTSO違反回避の例を説明する図である。 TSOによって保証しなければならないロード命令/ストア命令間の追い越し可否パターンを示す図である。 アウトオブオーダー処理を行うプロセッサにおけるロード命令同士の追い越しの例を説明する図である。 SMT構成におけるTSO違反の例を説明する図である。 SMT構成におけるTSO違反の例を説明する図である。 SMT構成におけるTSO違反の例を説明する図である。
符号の説明
1 CPU
10 命令制御部
20 一次キャッシュ制御部
21 キャッシュRAM
22 FP
23 FP−TOQ
24 ストア制御部
25 アドレス一致判定回路
26 命令再実行要求回路
30 二次キャッシュ制御部
以下,本発明の実施の形態について,図を用いて説明する。
図1は,本実施の形態によるプロセッサの構成例を示す図である。CPU1は,複数のスレッドを並行に処理することが可能なSMTのプロセッサであり,命令制御部10,一次キャッシュ制御部20,二次キャッシュ制御部30を備える。一次キャッシュ制御部20は,キャッシュRAM21,FP(Fetch Port)22,FP−TOQ(Fetch Port Top Of Queue )23,ストア制御部24,アドレス一致判定回路25,命令再実行要求回路26を備える。なお,図1の一次キャッシュ制御部20の構成は,特に本実施の形態に関連する部分のみを抜粋して記載している。なお,スレッドは,CPU1における一連の命令の実行単位である。
命令制御部10は,ロード命令,ストア命令等の要求を一次キャッシュ制御部20に発行する。一次キャッシュ制御部20は,命令制御部10からの要求に対する処理を行う。このとき,キャッシュRAM21に命令制御部10からの要求の対象となるデータが存在しなければ,二次キャッシュ制御部30に該当データの転送を要求する。命令制御部10からの要求がロード命令であれば,データを命令制御部10に返す。
二次キャッシュ制御部30は,一次キャッシュ制御部20からデータ転送の要求を受けると,自らが備えるキャッシュRAMに一次キャッシュ制御部20から要求されたデータが存在するかを確認し,存在すればそのデータを一次キャッシュ制御部20に返す。一次キャッシュ制御部20から要求されたデータが存在しなければ,外部の記憶手段に該当データの転送を要求する。
一次キャッシュ制御部20において,キャッシュRAM21は,容量は少ないがアクセスが速い記憶手段である。
FP22は,命令制御部10から受けた要求を保持する複数のエントリを有する。FP22の各エントリには,ストアによる命令再実行要求フラグ(RIS:ReIfetch for Store)が設けられている。命令制御部10から発行された命令は,FP22のエントリに命令の実行順序に従って循環して割り当てられる。FP22に保持された要求はアウトオブオーダーで読み出され,処理可能な要求からその対象データを命令制御部10に返すことが可能である。なお,FP22は,並行に実行されるスレッドごとに用意される。
FP−TOQ23は,FP22のエントリのうち,一番古い要求を保持するエントリを示す情報を保持するレジスタである。なお,FP−TOQ23は,FP22と同様に,並行に実行されるスレッドごとに用意される。
FP22に保持された要求の開放タイミングは,FP−TOQ23で示されているエントリに保持された要求の処理完了時点である。FP−TOQ23で示されているエントリに保持された要求の処理を追い越して,FP−TOQ23で示されていないエントリに保持された要求の処理が先に完了した場合には,その先に処理された要求は,完了状態であることが示されたままFP22に保持され続ける。その後,FP−TOQ23で示されているエントリに保持された要求が完了した時点で,まとめて処理完了済みのエントリが開放される。
ストア制御部24は,ストア命令によってキャッシュRAM21上のデータが書き換えられるときに,そのストア命令の対象となるアドレスをアドレス一致判定回路25に通知する。
アドレス一致判定回路25は,ストア制御部24からストア命令の対象となるアドレスを受けると,そのストア命令が属するスレッド以外のスレッドのFP22を検索し,ロード系の命令であり,処理完了済みであり,かつ命令の対象アドレスが受け取ったアドレスと一致する要求が検出されれば,FP−TOQ23が示すエントリまたはその次のエントリから検出された要求が保持されたエントリまでのすべてのエントリに,ストアによる命令再実行要求フラグをセットする。なお,検出された要求が保持されたエントリにのみ,ストアによる命令再実行要求フラグをセットするようにしてもよい。
命令再実行要求回路26は,FP−TOQ23で示されているエントリに保持された要求の処理が行われると,ストアによる命令再実行要求フラグがセットされているエントリに保持された要求について,命令制御部10に対して命令の再実行要求を送る。
図2は,FPのエントリが保持する情報の構成要素の例を示す図である。図2の例は,FP22のエントリが保持する情報のうち,特に本実施の形態に関連する部分の構成について抜粋したものである。FP22の各エントリは,そのエントリが開放されているか開放されていないか,すなわち保持された要求が無効であるか有効であるかを示すフラグ(valid),保持された要求の処理が完了しているか完了していないかを示すフラグ(status),ロード命令,ストア命令などの命令の種別を示す命令コード(opcode),その命令の対象となるアドレス(address),上述のストアによる命令再実行要求フラグ(RIS)等の情報を有する。
本実施の形態において,validは,保持された要求が無効である場合には“0”となり,有効である場合には“1”となるものとする。また,statusは,保持された要求の処理が完了していない場合には“未完了”となり,完了している場合には“完了”となるものとする。また,ストアによる命令再実行要求フラグは,デフォルトで“0”であり,フラグセットで“1”となるものとする。
図3は,本実施の形態によるストアによる命令再実行要求フラグのセット処理フローチャートである。キャッシュRAM21へのストア処理が実行されると(ステップS10),ストア処理が実行されたスレッドと異なるスレッドのFP22を検索する(ステップS11)。
検索されたFP22に,validが1であり,statusが完了であり,かつopcodeがロード系の命令であるエントリが存在しなければ(ステップS12),ストアによる命令再実行要求フラグ(RIS)をセットしない。
検索されたFP22に,validが1であり,statusが完了であり,かつopcodeがロード系の命令であるエントリが存在するときに(ステップS12),そのエントリのアドレス(address)と実行されたストア処理の対象アドレスとが一致すれば(ステップS13),FP−TOQ23が示すエントリの次から一致したエントリまでのすべてのエントリに,ストアによる命令再実行要求フラグ(RIS)をセットする(ステップS14)。
検索されたFP22に,validが1であり,statusが完了であり,かつopcodeがロード系の命令であるエントリが存在しても(ステップS12),そのエントリのアドレス(address)と実行されたストア処理の対象アドレスとが一致しなければ(ステップS13),ストアによる命令再実行要求フラグ(RIS)をセットしない。
図4は,本実施の形態による命令再実行要求処理フローチャートである。図4のフローチャートにおいて,FP#n(n=0,1,2,... )は,FP22の各エントリを示し,n(n=0,1,2,... )は,便宜上エントリに割り当てられた番号を示す。
エントリFP#nに保持された要求により命令制御部10にデータが転送されると(ステップS20),そのエントリFP#nがFP−TOQ23に示されたエントリであり(ステップS21),また,そのエントリFP#nが属するスレッドのFP22に,validが1であり,かつ命令再実行要求フラグ(RIS)が1であるエントリが存在すれば(ステップS22),すべての該当するエントリに保持された要求について,命令制御部10に命令再実行を要求する(ステップS23)。
図5〜図8は,SMT構成におけるTSO違反回避の例を説明する図である。ここでは,図5〜図8を用いて,本実施の形態の一次キャッシュ制御部20による処理のより具体的な例を説明する。図5〜図8に示す例において,命令制御部10から一次キャッシュ制御部20に発行されたロード命令/ストア命令等のメモリアクセス要求は,一旦FP22に保持される。ここでは,説明の便宜上プロセッサ内のスレッド数を2とし,スレッドごとにそれぞれFP22が備えられているものとする。
図5〜図8に示す例では,キャッシュRAM21上にデータが存在しない領域,キャッシュRAM21上にデータが存在する領域に対して,thread−αでは,store−A,store−Bの順に要求が行われ,thread−βでは,load−B,load−Aの順に要求が行われるケースについて説明する(図5参照)。
thread−αにおいて命令制御部10から発行された命令は,FP22αの0番のエントリ(以下,FPα#0と表記)にstore−A,1番のエントリ(以下,FPα#1と表記)にstore−Bが保持され,FP22αのFP−TOQ23αはエントリFPα#0を示しているものとする。thread−βにおいて命令制御部10から発行された命令は,FP22βの0番のエントリ(以下,FPβ#0と表記)にload−B,1番のエントリ(以下,FPβ#1と表記)にload−Aが保持され,FP22βのFP−TOQ23βはエントリFPβ#0を示しているものとする(図5参照)。なお,図において,各FP22に保持された命令の左側に表記された数字は,各エントリを示す番号である。
FP22α,FP22βのどちらから要求をするか,またFP22α,FP22βにおいてどのエントリに保持された要求から処理するかは,基本的に順不同である。ここでは,FPβ#0,FPβ#1,FPα#0,FPα#1の順に,エントリに保持された要求を処理するものとする。
一次キャッシュ制御部20は,まず,FPβ#0に保持されたload−Bの処理を行うと,キャッシュRAM21の領域Bにはデータが存在しないためにキャッシュミスとなるので,データの転送を二次キャッシュ制御部30またはメインメモリ(図示省略)に要求する(図5参照)。
そのデータがキャッシュRAM21に到着するまでの間に,FPβ#1に保持されたload−Aの処理を開始し,キャッシュヒットとなるため,キャッシュRAM21の領域Aのデータを読み出し,得られたdata−A(old)を命令制御部10に返す(図5参照)。この時点で,thread−βにおいて,load−Aの処理がload−Bの処理を追い越して,データを命令制御部10に返すことになる。なお,図中,領域Aのデータがoldと表記されているのは,後のstore−Aの処理によって書き換えられたデータと比較して古いデータであることを示している。
ここで,FPβ#1に保持されたload−Aの処理は完了しているが,FP−TOQ23βで示されたFPβ#0に保持されたload−Bの処理はまだ完了していないので,この時点ではFPβ#1に処理完了済みのフラグがセットされるだけで,FPβ#1は開放されない。
その後,thread−αのFPα#0に保持されたstore−Aの処理を行い,キャッシュRAM21の領域Aにデータを書き込む。このstore−Aのデータ書き込み処理時に,thread−α以外のスレッドのFP22,この場合にはthread−βのFP22βに保持されているすべての処理完了済みの要求のアドレスをチェックし,領域Aと一致するアドレスの要求が保持されたエントリがあれば,FP22βのFP−TOQ23βで示されたエントリまたはその次からその一致したエントリまでのすべてのエントリに,ストアによる命令再実行要求フラグ(RIS)をセットする。ここでは,領域Aと一致するアドレスの要求が保持されたエントリFPβ#1があるので,FP22βのFP−TOQ23βで示されたエントリFPβ#0からFPβ#1まで,またはFPβ#1に対してのみ,ストアによる命令再実行要求フラグ(RIS)をセットする(図6参照)。図では,FPβ#1のエントリのRISに1がセットされている。
その後,領域Bを含むデータが,二次キャッシュ制御部30から一次キャッシュ制御部20に到着し,キャッシュRAM21の領域Bに書き込まれる。thread−αのFPα#1に保持されたstore−Bの処理を行い,キャッシュRAM21の領域Bにデータを書き込む(図6参照)。なお,図中,領域A,領域Bのデータがnewと表記されているのは,store−A,store−Bの処理によって書き換えられる前のデータと比較して新しいデータであることを示している。
その後,thread−βのFPβ#0に保持されたload−Bの再処理を行い,キャッシュヒットとなるため,キャッシュRAM21の領域Bのデータを読み出し,得られたdata−B(new)を命令制御部10に返す。このとき,FPβ#0はFP−TOQ23βに示されたエントリであるので,ストアによる命令再実行要求フラグ(RIS)がセットされているエントリについて,命令制御部10に対して命令の再実行要求を発行する(図7参照)。ただし,FP−TOQ23βに示されたエントリであるFPβ#0については,命令の再実行要求を発行する必要はない。なお,FP−TOQ23βに示されたエントリであるFPβ#0の処理が完了したので,FP22βの処理完了済みの要求が保持されたエントリをすべて開放する。
命令制御部10からはthread−βとして再度load−Aが要求され,その要求はFP22βの2番のエントリ(以下,FPβ#2と表記)に保持される。FPβ#2に保持されたload−Aの処理を行い,キャッシュヒットとなるため,キャッシュRAM21の領域Aのデータを読み出し,得られたdata−A(new)を命令制御部10に返す(図8参照)。これで,thread−αのstore−Aの処理によるストア済みデータを,命令制御部10に返すことになる。
以上のようなストアによる命令再実行の機構がなければ,thread−βのload−Bの処理で命令制御部10に返すデータがストア済みデータであるのに,load−Aの処理で返すデータがストア前データとなり,ソフトウェアからはthread−αのstore−A,store−Bの処理順序が逆転しているように見え,TSOに違反することになる。ストアによる命令再実行を行うことにより,thread−βのload−B,load−Aの処理において,共にthread−αのストア済みデータを返すことになり,TSO違反を回避できるようになる。
情報処理装置,キャッシュメモリ制御装置およびメモリアクセス順序保証方法は,情報処理装置に用いられる技術に関するものであり,特にキャッシュを有する電算機において利用される技術である。

Claims (6)

  1. 一連の命令列であるスレッドに含まれ,メモリアクセスを行うストア命令とロード命令を,可能な場合に順不同で実行する演算処理装置において,
    ストア命令を含む第1のスレッドを実行する第1のスレッド実行部と,
    第1のロード命令と前記第1のロード命令に対して先行する第2のロード命令とを含む第2のスレッドを実行する第2のスレッド実行部と,
    前記第1のスレッド実行部と前記第2のスレッド実行部から共有されるキャッシュメモリと,
    前記第1のスレッド実行部と前記第2のスレッド実行部を制御する命令制御部と,
    前記第1のスレッド実行部が,前記キャッシュメモリに対して前記ストア命令を実行した場合に,前記第2のスレッド実行部が,前記キャッシュメモリに対して前記第1のロード命令を前記第2のロード命令より先に実行し,前記第1のロード命令の対象データを前記ストア命令の実行より先に前記命令制御部に応答したか否かを判定する判定部と,
    前記第2のスレッド実行部が,前記キャッシュメモリに対して前記第1のロード命令を前記第2のロード命令より先に実行し,前記第1のロード命令の対象データを前記ストア命令の実行より先に前記命令制御部に応答したと,前記判定部が判定した場合,前記第2のスレッド実行部が,前記第2のロード命令を実行するとき,前記第2のロード命令の次の命令から前記第1のロード命令までの前記第2のスレッド実行部による再実行を,前記命令制御部に要求する命令再実行要求部を有する
    ことを特徴とする演算処理装置。
  2. 前記演算処理装置はさらに,
    前記第2のスレッド実行部が実行する第2のスレッドに含まれる命令と前記第2のスレッドに含まれる命令の対象アドレスと前記第2のスレッドに含まれる命令の再実行を要求する旨を示す再実行要求フラグを格納するエントリを複数有する命令保持部と,
    最も古い命令を格納する前記命令保持部のエントリを指定する先頭エントリ番号保持部を有し,
    前記判定部は,前記第1のスレッド実行部が,前記キャッシュメモリに対して前記ストア命令を実行した場合に,前記実行されたストア命令の対象アドレスと同一のアドレスを対象とする第1のロード命令が前記命令保持部のいずれかのエントリから検索されたとき,前記先頭エントリ番号保持部が指定するエントリの次のエントリから前記検索されたエントリまで,再実行要求フラグを設定する
    ことを特徴とする請求項1記載の演算処理装置。
  3. 前記演算処理装置において,
    前記命令再実行要求部は,前記第2のロード命令が,前記先頭エントリ番号保持部により指定されたエントリに格納されている場合,前記指定されたエントリの次のエントリに格納された命令から前記第1のロード命令までの再実行を,前記命令制御部に要求する
    ことを特徴とする請求項2記載の演算処理装置。
  4. ストア命令を含む一連の命令列である第1のスレッドを実行する第1のスレッド実行部と,第1のロード命令と前記第1のロード命令に先行する第2のロード命令とを含む一連の命令列である第2のスレッドを実行する第2のスレッド実行部と,前記第1のスレッド実行部と前記第2のスレッド実行部から共有されるキャッシュメモリを有し,メモリアクセスを行うストア命令とロード命令を,可能な場合に順不同で実行する演算処理装置の制御方法において,
    前記第1のスレッド実行部が,前記キャッシュメモリに対して前記ストア命令を実行するステップと,
    前記第2のスレッド実行部が,前記キャッシュメモリに対して前記第1のロード命令を前記第2のロード命令より先に実行し,前記第1のロード命令の対象データを前記ストア命令の実行より先に,前記第1のスレッド実行部と前記第2のスレッド実行部を制御する前記演算処理装置に含まれる命令制御部に応答したか否かを,前記演算処理装置が有する判定部が判定するステップと,
    前記第2のスレッド実行部が,前記キャッシュメモリに対して前記第1のロード命令を前記第2のロード命令より先に実行し,前記第1のロード命令の対象データを前記ストア命令の実行より先に前記命令制御部に応答したと,前記判定部が判定した場合,前記第2のスレッド実行部が,前記第2のロード命令を実行するとき,前記第2のロード命令の次の命令から前記第1のロード命令までの前記第2のスレッド実行部による再実行を,前記演算処理装置が有する命令再実行要求部が,前記命令制御部に要求するステップを有する
    ことを特徴とする演算処理装置の制御方法。
  5. 前記演算処理装置はさらに,
    前記第2のスレッド実行部が実行する第2のスレッドに含まれる命令と前記第2のスレッドに含まれる命令の対象アドレスと前記第2のスレッドに含まれる命令の再実行を要求する旨を示す再実行要求フラグを格納するエントリを複数有する命令保持部と,
    最も古い命令を格納する前記命令保持部のエントリを指定する先頭エントリ番号保持部を有し,
    前記判定部は,前記第1のスレッド実行部が,前記キャッシュメモリに対して前記ストア命令を実行した場合に,前記実行されたストア命令の対象アドレスと同一のアドレスを対象とする第1のロード命令が前記命令保持部のいずれかのエントリから検索されたとき,前記先頭エントリ番号保持部が指定するエントリの次のエントリから前記検索されたエントリまで,再実行要求フラグを設定する
    ことを特徴とする請求項4記載の演算処理装置の制御方法。
  6. 前記演算処理装置の制御方法において,
    前記命令再実行要求部は,前記第2のロード命令が,前記先頭エントリ番号保持部により指定されたエントリに格納されている場合,前記指定されたエントリの次のエントリに格納された命令から前記第1のロード命令までの再実行を,前記命令制御部に要求する
    ことを特徴とする請求項5記載の演算処理装置の制御方法。
JP2009520183A 2007-06-20 2007-06-20 演算処理装置および演算処理装置の制御方法 Expired - Fee Related JP4983919B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2007/062389 WO2008155829A1 (ja) 2007-06-20 2007-06-20 情報処理装置,キャッシュメモリ制御装置およびメモリアクセス順序保証方法

Publications (2)

Publication Number Publication Date
JPWO2008155829A1 JPWO2008155829A1 (ja) 2010-08-26
JP4983919B2 true JP4983919B2 (ja) 2012-07-25

Family

ID=40155995

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009520183A Expired - Fee Related JP4983919B2 (ja) 2007-06-20 2007-06-20 演算処理装置および演算処理装置の制御方法

Country Status (6)

Country Link
US (1) US8103859B2 (ja)
EP (1) EP2159703A4 (ja)
JP (1) JP4983919B2 (ja)
KR (1) KR101084228B1 (ja)
CN (1) CN101689142A (ja)
WO (1) WO2008155829A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5471428B2 (ja) * 2009-12-25 2014-04-16 富士通株式会社 情報処理装置およびキャッシュメモリ制御装置
JP5966759B2 (ja) * 2012-08-20 2016-08-10 富士通株式会社 演算処理装置および演算処理装置の制御方法
KR101993258B1 (ko) 2012-11-22 2019-09-27 삼성전자주식회사 레지스터 슬라이싱 회로 및 이를 포함하는 시스템 온 칩
JP6115394B2 (ja) * 2013-08-13 2017-04-19 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US9361176B2 (en) * 2014-06-25 2016-06-07 International Business Machines Corporation Detecting the use of stale data values due to weak consistency
US10489158B2 (en) * 2014-09-26 2019-11-26 Intel Corporation Processors, methods, systems, and instructions to selectively fence only persistent storage of given data relative to subsequent stores
JP6384380B2 (ja) * 2015-03-27 2018-09-05 富士通株式会社 演算処理装置及び演算処理装置の制御方法
CN106527959B (zh) * 2015-09-10 2019-07-26 阿里巴巴集团控股有限公司 刷新磁盘输入输出请求的处理方法及设备
CN112445587A (zh) * 2019-08-30 2021-03-05 上海华为技术有限公司 一种任务处理的方法以及任务处理装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004068361A1 (ja) * 2003-01-27 2004-08-12 Fujitsu Limited 記憶制御装置、データキャッシュ制御装置、中央処理装置、記憶装置制御方法、データキャッシュ制御方法およびキャッシュ制御方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5699538A (en) * 1994-12-09 1997-12-16 International Business Machines Corporation Efficient firm consistency support mechanisms in an out-of-order execution superscaler multiprocessor
US6665792B1 (en) * 1996-11-13 2003-12-16 Intel Corporation Interface to a memory system for a processor having a replay system
US6772324B2 (en) * 1997-12-17 2004-08-03 Intel Corporation Processor having multiple program counters and trace buffers outside an execution pipeline
US6591342B1 (en) * 1999-12-14 2003-07-08 Intel Corporation Memory disambiguation for large instruction windows
US6484254B1 (en) * 1999-12-30 2002-11-19 Intel Corporation Method, apparatus, and system for maintaining processor ordering by checking load addresses of unretired load instructions against snooping store addresses
JP3661614B2 (ja) 2001-07-12 2005-06-15 日本電気株式会社 キャッシュメモリ制御方法及びマルチプロセッサシステム
GB0215029D0 (en) * 2002-06-28 2002-08-07 Critical Blue Ltd Strand based execution
US20050210204A1 (en) 2003-01-27 2005-09-22 Fujitsu Limited Memory control device, data cache control device, central processing device, storage device control method, data cache control method, and cache control method
US6938130B2 (en) * 2003-02-13 2005-08-30 Sun Microsystems Inc. Method and apparatus for delaying interfering accesses from other threads during transactional program execution
US20060026371A1 (en) 2004-07-30 2006-02-02 Chrysos George Z Method and apparatus for implementing memory order models with order vectors
US7516313B2 (en) * 2004-12-29 2009-04-07 Intel Corporation Predicting contention in a processor

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004068361A1 (ja) * 2003-01-27 2004-08-12 Fujitsu Limited 記憶制御装置、データキャッシュ制御装置、中央処理装置、記憶装置制御方法、データキャッシュ制御方法およびキャッシュ制御方法

Also Published As

Publication number Publication date
JPWO2008155829A1 (ja) 2010-08-26
WO2008155829A1 (ja) 2008-12-24
KR20100006578A (ko) 2010-01-19
US8103859B2 (en) 2012-01-24
US20100100710A1 (en) 2010-04-22
EP2159703A4 (en) 2010-12-08
EP2159703A1 (en) 2010-03-03
CN101689142A (zh) 2010-03-31
KR101084228B1 (ko) 2011-11-17

Similar Documents

Publication Publication Date Title
JP4983919B2 (ja) 演算処理装置および演算処理装置の制御方法
EP2159702B1 (en) Cache control device and control method
US6466988B1 (en) Multiprocessor synchronization and coherency control system
US7757044B2 (en) Facilitating store reordering through cacheline marking
EP2641171B1 (en) Preventing unintended loss of transactional data in hardware transactional memory systems
US8190825B2 (en) Arithmetic processing apparatus and method of controlling the same
WO2008005687A2 (en) Global overflow method for virtualized transactional memory
CN106663026B (zh) 针对事务型数据处理执行模式的调用堆栈维护
JP5499987B2 (ja) 共有キャッシュメモリ装置
US20110154000A1 (en) Adaptive optimized compare-exchange operation
US20150149725A1 (en) Multi-threaded system for performing atomic binary translations
US8549232B2 (en) Information processing device and cache memory control device
US10067743B2 (en) Arithmetic processing device and control method thereof
JP4990262B2 (ja) バッファ装置
US20150052306A1 (en) Processor and control method of processor
US20090063773A1 (en) Technique to enable store forwarding during long latency instruction execution
JP2004005710A (ja) 情報処置装置
JP2009199384A (ja) データ処理装置
WO2014064914A1 (ja) データ格納装置、データ格納方法およびプログラム
US9384046B2 (en) Information processing apparatus, computer product, and information processing method for multi-thread process
JP2006048163A (ja) ストアデータ制御装置およびストアデータ制御方法
US20240176616A1 (en) Processor and method of controlling processor
EP2782015A1 (en) Processor, information processing apparatus, and method for controlling cache write-back
JP2001202286A (ja) キャッシュメモリのフラッシュ制御回路及びその制御方法
JP2008234492A (ja) コンパイラおよびコンパイル方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110104

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110307

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120110

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120227

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

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

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150511

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees