JP5482801B2 - 演算処理装置 - Google Patents
演算処理装置 Download PDFInfo
- Publication number
- JP5482801B2 JP5482801B2 JP2011547161A JP2011547161A JP5482801B2 JP 5482801 B2 JP5482801 B2 JP 5482801B2 JP 2011547161 A JP2011547161 A JP 2011547161A JP 2011547161 A JP2011547161 A JP 2011547161A JP 5482801 B2 JP5482801 B2 JP 5482801B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- pipeline
- data
- prefetch
- 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
Links
- 238000012545 processing Methods 0.000 title claims description 135
- 238000000034 method Methods 0.000 claims description 76
- 230000008569 process Effects 0.000 claims description 76
- 238000001514 detection method Methods 0.000 description 35
- 238000010586 diagram Methods 0.000 description 10
- 238000012546 transfer Methods 0.000 description 9
- 230000004044 response Effects 0.000 description 8
- 230000005764 inhibitory process Effects 0.000 description 6
- 238000012544 monitoring process Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 3
- 230000000737 periodic effect Effects 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000013479 data entry Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Description
図1は、演算処理装置のハードウェア構成の一例を示す図である。図1に示す演算処理装置100は、演算処理部としてのプロセッサコア(Processor Core)10、L2キャッシュコントローラ(Level−2 Cache Controller)90、L2タグRAM(Level−2 Tag Random Access Memory)140、L2データRAM(Level−2 Data Random Access Memory)120、ロードバッファ(LB,Load Buffer)160、及びメモリコントローラ(MC、Memory Controller)200を有する。演算処理装置100は、図1に示すように、ヒットバッファ(HB)170を有してもよい。プロセッサコア10は、MC200を介して主記憶装置220と接続する。なお、L2データRAM120及びL2タグRAM140は、本明細書において総称して「L2キャッシュRAM110」と参照される。
また、図1の演算処理装置100には、データ入力バッファ32とデータ出力バッファ34とが設けられている。データ入力バッファ32は、主記憶装置22あるいはL2キャッシュRAM110から読み出してプロセッサコア10に入力するデータをバッファリングするために用いられる。一方データ出力バッファ34は、プロセッサコア10から出力されたデータをバッファリングするために用いられる。データ出力バッファ34にバッファリングされたデータは、L2キャッシュRAM110あるいは主記憶装置22に転送される。
なお、図1に図示した各部の説明は、他の図面を用いた各部の詳細説明とあわせて行なう。
図2は、プロセッサコアの構成の一例を示す図である。プロセッサコア10は、命令部(IU:Instruction Unit)12、実行部(EU:Execution Unit)14、L1キャッシュコントローラ18、L1キャッシュRAM16(Level−1 Cache Random Access Memory)を有する。
L1キャッシュRAM16は、命令やデータなどを保持する。L1キャッシュコントローラ18は、L1キャッシュRAM16のアクセスを制御する。なお、図1に示されるプロセッサコアの個数は1個であるが、プロセッサコアは図1に示される個数に制限されることなく、演算処理装置100は、複数個のプロセッサコアを有してもよい。
命令部12は、命令パイプライン15を介してL1キャッシュRAM16から読み出した命令をデコードし、デコードした命令を、命令パイプライン15を介して実行部14に出力する。例えば、命令部12は、命令パイプライン15を介して「ロード命令」又は「ストア命令」(図示「ロード命令等」)をL1キャッシュコントローラ18に供給する。命令部12からL1キャッシュコントローラ18に供給される命令が、例えば、「ロード命令」である場合、L1キャッシュコントローラ18は、「ロード命令」により指定される命令をL1キャッシュRAM16から読み出す。「ロード命令」によりL1キャッシュRAM16から読み出された命令は、命令部12に供給される。L1キャッシュRAM16から読み出される命令は、例えば、データ転送命令、算術演算命令である。データ転送命令は、例えば、L1キャッシュRAM16へのロード(LD)命令、ストア(ST)命令、プリフェッチ(PF)命令、及び置換(MO)命令を含む命令である。命令部12は、L1キャッシュRAM16から読み出した命令をデコードし、デコードした命令(図2に示すD命令)とともに、命令の実行に使用されるオペランドを格納するレジスタ13及び命令実行の結果を格納するレジスタ13を特定するレジスタアドレスを、「データ」として命令パイプライン15を介して実行部14に供給する。
実行部14は、レジスタアドレスで特定されるレジスタ13からオペランドを取り出し、命令部12がデコードした命令でオペランドを演算する。実行部14は、実行する命令がデータ転送命令である場合、例えば、オペランドとしてのレジスタの値から仮想アドレスを生成する。実行部14は、実行する命令がデータ転送命令である場合、例えば、ロード命令、ストア命令又はPF命令(図示「ロード命令等」)を、対象となる仮想アドレスとともに命令パイプライン15を介してL1キャッシュコントローラ18に供給する。実行部14は、命令を実行すると、演算結果を命令パイプライン15に供給し、演算結果は命令パイプライン15を介してL1キャッシュRAM16に格納される。
L1キャッシュRAM16は、図示しないTranslation Lookaside Buffer(TLB)、L1タグRAM、及びL1データRAMを含む。L1キャッシュコントローラ18は、実行部14から供給される仮想アドレスでL1キャッシュRAM16のラインを特定し、TLB及びL1キャッシュRAM16のラインからそれぞれ読み出される物理アドレス(PA:Physical Address)を仮想アドレスと比較することで、キャッシュミス又はキャッシュヒットを判断する。
L1キャッシュコントローラ18は、L1キャッシュRAM16でキャッシュミスが生じると、LD命令やPF命令を、L2キャッシュコントローラ90に出力する。そして、プロセッサコア10は、例えば、LD命令によるデータ、又は、PF命令の完了通知を、L2キャッシュコントローラ90から受け取る。
図3は、LD命令又はPF命令が対象とするレジスタとL2キャッシュRAMの構成の一例を示す図である。
なお、図3の例では、A0(i+M)、A0(i+M)+32B、A0(i+M)+64B・・・というように1キャッシュラインは32バイト単位の情報に分割されている。
実行部14は、プログラムを実行することで、LD命令によるロード対象となるデータを前もって、L2キャッシュRAM110にプリフェッチする。LD命令でレジスタ13aに格納する予定のデータを、L2キャッシュRAM110のキャッシュラインに128バイト単位でプリフェッチするケースでは、1回のプリフェッチで、アドレスR0〜R15のレジスタ用のデータをキャッシュライン111aに格納することができる。
プログラムA
// LOOPに入る前にi=0のデータをロードする。
(S0) アドレスA0(0)のデータをロードしR4に格納する;
(S1) アドレスA1(0)のデータをロードしR5に格納する;
(S2) アドレスA2(0)のデータをロードしR6に格納する;
(S3) アドレスA3(0)のデータをロードしR7に格納する;
(ループ部)
(S4) LOOP: // for (i = 0 < N ; i++)
(S5) 1ループ前にアドレスA0(i)からロードしたR4のデータをR0に移動;
(S6) 1ループ前にアドレスA1(i)からロードしたR5のデータをR1に移動;
(S7) 1ループ前にアドレスA2(i)からロードしたR6のデータをR2に移動;
(S8) 1ループ前にアドレスA3(i)からロードしたR7のデータをR3に移動;
(S9) Mループ先のアドレスA0(i+M) のデータをL2キャッシュRAM110にプリフェッチ;
(S10) Mループ先のアドレスA4(i+M) のデータをL2キャッシュRAM110にプリフェッチ;
(S11) 1ループ先のアドレスA0(i+1)のデータをロードしR4に格納する;
(S12) 1ループ先のアドレスA1(i+1)のデータをロードしR5に格納する;
(S13) 1ループ先のアドレスA2(i+1)のデータをロードしR6に格納する;
(S14) 1ループ先のアドレスA3(i+1)のデータをロードしR7に格納する;
(S15) R0,R1,R2,R3を参照して演算し、演算結果をR8に格納する;
(S16) 演算結果R8をアドレスA4(i)にストアする;
(S17) GOTO LOOP ; // i=N−1ならばLOOPを抜ける
(終了部) // N周目
(S18) LOOPの最後のループにアドレスA0(N)からロードしたR4のデータをR0に移動;
(S19) LOOPの最後のループにアドレスA1(N)からロードしたR5のデータをR1に移動;
(S20) LOOPの最後のループにアドレスA2(N)からロードしたR6のデータをR2に移動;
(S21) LOOPの最後のループにアドレスA3(N)からロードしたR7のデータをR3に移動;
(S22) R0,R1,R2,R3を参照して演算し、演算結果をR8に格納する;
(S23) 演算結果R3をアドレスA4(N)に格納する;
また、これらのアドレスは、以下のような一定の間隔(8バイト間隔)で並んでいるものとする。
アドレスA0(i) =A0(i)+0B
アドレスA1(i) =A0(i)+8B
アドレスA2(i) =A0(i)+16B
アドレスA3(i) =A0(i)+24B
アドレスA0(i+1)=A0(i)+32B
アドレスA1(i+1)=A0(i)+40B
アドレスA2(i+1)=A0(i)+48B
アドレスA3(i+1)=A0(i)+56B
アドレスA0(i+2)=A0(i)+64B
・
・
・
アドレスA0(i+3)=A0(i)+96B
・
・
・
アドレスA0(i+4)=A0(i)+128B
このように、プログラムはアドレスA0(i)から連続してデータをロードする。ここで。1ループ処理を実行するたびに4アドレス分(A0(i)〜A3(i))、つまり32バイト分のデータがロードされる。そして、4周先にロード対象となるアドレスA0(i+4)はA0(i)+128Bであるため、ループ4周でキャッシュライン128B分をアクセスすることになる。
一方、プリフェッチは、ループ4周の処理が実行される間に、
アドレスA0(i+M)
アドレスA0(i+1+M) =A0(I+M)+32B
アドレスA0(i+2+M) =A0(I+M)+64B
アドレスA0(i+3+M) =A0(I+M)+96B
のように4回発行される。
T1:ループ処理を1周実行する時間(クロックサイクル数)
T2:PF命令発行からL2キャッシュにデータが格納されるまでの時間(クロックサイクル数)
また、ストアアドレスは以下のような間隔で設定されているものとする。
アドレスA4(i) =A0(i)+0B
アドレスA4(i+1) =A0(i)+8B
アドレスA4(i+2) =A0(i)+16B
・
・
・
・
アドレスA4(i+16)=A0(i)+128B
このように、プログラムAでは、アドレスA4(i)から連続して演算結果をストアする。また、16周先のアドレスA4(i+16)はA4(i)+128Bであり、ループ16周でキャッシュライン128B分をアクセスすることになる。
また、16周のループ処理の間に、
アドレスA0(i+M)
アドレスA0(i+1+M) =A0(I+M)+8B
アドレスA0(i+2+M) =A0(I+M)+16B
・
・
・
アドレスA0(i+15+M) =A0(I+M)+128Bのように16回プリフェッチ命令が発行される。
図4は、バンク分けがされていないL2キャッシュRAMの一例を示す図である。図4に示されるL2キャッシュRAM110は、例えば、4ウェイのセットアソシアティブ方式のキャッシュメモリである。図4に示されるように、L2キャッシュRAM110は、複数のセットで構成されており、各セットは、キャッシュウェイ101a〜101dに分けて管理される。
L2キャッシュRAM110はまた、選択回路130を備える。選択回路130には、センスアンプ124a〜124dを介したL2データRAM120からの出力が入力し、比較回路131a〜131dから出力されるヒットウェイ信号の値に応じて、いずれかの入力を選択して出力する。
図5は、バンク分けされたL2キャッシュRAMの一例を示す図である。図5に示されるL2キャッシュRAM110a、110bは、図4に示されるL2キャッシュRAM110と同じ構成を有するので、説明を省略する。図4で示した例では、L2キャッシュRAMのラインは、12ビットのインデックスアドレスにより特定されていたが、図5に示すL2キャッシュRAM110a、110bは、12ビットのインデックスアドレスの最下位のビットでバンク分けされる。図5の例では、L2キャッシュRAM110aは、最下位ビットが「0」のインデックスアドレスにより特定されるデータを格納し、L2キャッシュRAM110bは、最下位ビットが「1」のインデックスアドレスにより特定されるデータを格納する。
図1に示すL2キャッシュコントローラ90は、MOポート(Move−OutPort)63、LD(Load)ポート64、PF(Prefetch)ポート66、パイプライン選択部60、第1優先制御回路61、及び第2優先制御回路62を有する。
第1優先制御回路61には、MOポート63からの置換命令、LDポート64からのロード命令およびPFポート66からのプリフェッチ命令が入力する。なお、図6で示すように、演算処理装置が複数のプロセッサコアを有する場合には、第1優先制御回路61には各コアから出力される各命令が入力する。第1優先制御回路61は、入力する要求種別、固定的な優先度に基づいて選択する。優先度としては一例として、ロード命令>置換命令>プリフェッチ命令の順とする。このように優先度を設定することで、デッドロックやライブロック状態の防止が可能となる。
MOポート63、LDポート64、PFポート66はプロセッサコア10に対応して設けられ、プロセッサコア10の数だけ存在する。よって、プロセッサコア10が複数ある場合、プロセッサコアの個数に応じたMOポート63、LDポート64、PFポート66が用意される。
図6はL2キャッシュコントローラ90を示し、特にPFポートの一例の詳細を示す図である。PFポート66は、エントリ選択部66−1、空きエントリ選択部66−2、PF記憶回路66−3、デコーダ66−4を有する。
図7は、パイプライン選択部の一例を示す図である。図7に示すパイプライン選択部60aは、図6に示すパイプライン選択部60の一例である。パイプライン選択部60aは、論理積演算を行うAND回路60−1、60−3、60−4、及び論理和演算を行うOR回路60−2、60−5、60−6、選択回路60−7、60−8、及び優先回路優先回路60−21、60−22を有する。なお、図7に示す論理回路並びに入出力結線は、実際には、PFポート66の数だけ用意される。OR回路60−5、60−6は、PFポートの数だけある入出力結線が1つでも信号レベルが「ハイ」になれば、信号レベル「ハイ」の信号を出力する。
図8は、パイプライン選択部の別な一例を示す図である。図8に示すパイプライン選択部60bは、図6に示すパイプライン選択部60の一例であり、図7に示すパイプライン選択部60aと異なる例である。
LD命令は、実行部14にデータをロードする命令であり、ストア命令は、主記憶装置220にデータを格納する命令である。PF命令は、主記憶装置220からL2キャッシュRAM110へデータをロードする命令である。
第1優先制御回路61は、パイプライン選択部60を介してMOポート63、LDポート64、及びPFポート66からそれぞれMO命令、LD命令、及びPF命令を受け取り、所定の優先順位に従って第1パイプライン70へ命令を投入する。第1優先制御回路61は、例えば、第1パイプライン70に投入される命令を、L1置換命令、MC置換命令、L2置換命令、LD命令、PF命令の優先順番で第1パイプラインに投入する。よって、L1置換命令の優先順位が一番高く、PF命令の優先順位が一番低い。
第1パイプライン70は、L2キャッシュRAM110へのデータアクセス制御、各種資源管理を行う。第1パイプライン70は、例えば、LD命令又はPF命令に従って、L2キャッシュRAM110のキャッシュミス又はキャッシュヒット判定を行う。第1パイプライン70はさらに、LB160に保持される主記憶装置220に対するLD命令中のデータエントリと、LD命令又はPF命令のキャッシュラインとの一致又は不一致の判定を行う。なお、以下において、主記憶装置220に対するロード命令を、「MLD命令」と言う。
第2パイプライン80は、LB160に保持されるMLD命令発行中のデータの物理アドレスと、PF命令の物理アドレスとの一致を検出するパイプラインである。第1パイプライン70が、L2キャッシュRAM110へのデータアクセス制御全般を行うのに対して、第2パイプライン80の処理がプリフェッチ処理に(何に)限定されている。第2パイプライン80の行う処理を限定する理由の1つは、同一の物理アドレスに対して連続してPF命令を処理するためである。
図9A及び図9Bは、ロードバッファの一例を示す図である。
LB160は、L2キャッシュRAM110に格納するデータを保持する記憶部である。
PF命令またはLD命令においてキャッシュミスを検出し、かつLB160でPA不一致が生じた場合、第1パイプライン70は、パイプライン処理完了時に、LB160のエントリを獲得するとともに、LB160を介してMC200にMLD命令を行なう。
OR回路160−7は、複数のAND回路160−6の出力信号を入力信号として受け取り、入力信号のいずれかの値が「1」である場合、出力信号を「PA一致通知」として、第1パイプライン70及び第2パイプライン80に出力する。
ヒットバッファ(HB)170は、第1パイプライン70がキャッシュヒットを判定した場合、キャッシュヒットが生じたPF命令の要求アドレス等を保持する記憶回路である。第2パイプライン80は、LB160に保持されるエントリのPAが、プリフェッチ対象のPAに一致するかどうか判定する処理を実行するが、主記憶装置220からデータをロードし終わると、LB160から対応するエントリが削除される。そのため、第2パイプライン80の処理終了後に、第1パイプラインで主記憶装置220からのロードを終了したPF命令によるL2キャッシュRAM110へのアクセスが生じる。そこで、第2パイプライン80でPF命令の処理が終了するように、第1パイプラインでキャッシュヒットしたヒットバッファ170でPF命令を保持して、第2パイプライン80により(何と何との)PA一致検出可能とすることで、第1パイプライン70のPF命令処理を削減することが出来る。
図11は、第1及び第2パイプラインによる処理の一例を示す図である。第1パイプライン70は、要求読出(RR)、優先順位決定(PD1、PD2)、読出用PA入力(PI)、タグ読出(TR)、キャッシュヒット検出(CD)、処理結果通知(RN)、及び要求処理判断(RP)のステージを有する。第1パイプライン70はさらに、タグ更新PA入力)(TI)、タグ更新動作(TW)、PA転送(LP)、PA一致検出(LD)、及びPA一致結果転送(LT)のステージを有する。
PF命令がキャッシュヒット検出の場合、第1パイプライン70は、処理結果通知ステージで、PFポート66へ完了通知を供給する。第1パイプライン70は、LB160へPF命令投入後、LB160から「PA一致通知」を受け取り、LB160で保持する要求間に差異がなければ、第1パイプライン70は、PFポート66に完了通知を供給する。
第2パイプライン80のステージは、上述した要求読出ステージ、優先順位決定ステージ、PA一致検出ステージ、LBへのPA転送ステージ、要求処理判断ステージ、処理結果通知ステージが行われる。図11に示す451、461は、パイプライン処理の一例を示す。このうち、パイプライン処理451は、第1パイプラインパイプライン処理401におけるPA一致検出の前に、PA一致検出を行なう例を示している。また、パイプライン処理461は、パイプライン処理401によるPA一致検出の後に、PA一致検出を行なう例を示している。なお、第2パイプライン80は、PA一致検出処理において、LB160におけるPA一致の代わりに、又は、LB160におけるPA一致に加えて、図10A及び図10Bを用いて説明したヒットバッファとPF命令対象データとの一致処理を行ってもよい。
第1パイプライン処理と第2パイプライン処理とのサイクル数を揃えることで、PFポートはPF命令に対する完了通知あるいは中止通知を同時に受け取ることが出来る。このような場合、PFポートが第2のパイプラインからの完了通知を無視し、第1パイプラインからの完了通知に従って処理の完了、および対応する記憶部66−3のエントリの開放処理を行なうような、第1パイプラインからの完了通知を優先とする優先順位論理を設定することで、PFポートが受け取る完了通知を1つに絞ることができ、完了通知を受けるための受け口は1つのみ設ければよくなる。ただし、第1パイプラインの処理段数と、第2のパイプラインの処理段数とが一致しない場合は、PFポートに同時に達する完了通知が別個のリクエストに基づく通知となる可能性がある。この場合には、双方のパイプラインからの完了通知を受けられるようにするために、受け口を2つ設ける必要がある。
図11に示すように、「7」サイクルで処理結果通知を、第1パイプラインと第2パイプラインとが同時に行うために、パイプライン処理451の「5」及び「6」サイクルと、パイプライン処理461の「3」サイクルにアイドルサイクルがある。このように、各パイプラインが同じサイクルで処理結果通知を行うことで、PFポート66は、同じタイミングで第1パイプライン70及び第2パイプライン80からPF命令に関する完了通知又は中止通知を受け取る。PFポート66では、第1パイプライン70からの完了通知を優先とする選択回路160−15により完了通知を1つに絞ることで、完了通知の受け口としてデコーダ160−4を1つにすることが出来る。
図12は、バンク化されたL2キャッシュRAMに対する第1及び第2パイプラインによる処理の一例を示す図である。プログラムAに示すように、L2キャッシュRAM110a又はL2キャッシュRAM110bに対して同じサイクルに読み出し及び書き込みを同時することは出来ない。しかし、L2キャッシュRAM110aに読み出し又は書き込みが行われているサイクルと同じサイクルで、L2キャッシュRAM110bに対して読み出し又は書き込みを行うことは出来る。L2キャッシュRAM110aとL2キャッシュRAM110bは、メモリセルは別個に有しているからである。また、パイプライン処理においては、同じサイクルで2つのパイプライン処理を実行することも可能である。例えば、PA一致検出処理は、複数のパイプライン処理を同じサイクルで実行することが出来る。
13 レジスタ
60 パイプライン選択部
61 第1優先制御回路
62 第2優先制御回路
63 MOポート
64 LDポート
66 PFポート
70 第1パイプライン
80 第2パイプライン
90 L2キャッシュコントローラ
100 演算処理装置
110 L2キャッシュRAM
120 L2データRAM
140 L2タグRAM
160 ロードバッファ
170 ヒットバッファ
220 主記憶装置
Claims (8)
- 主記憶装置に接続される演算処理装置であって、
前記主記憶装置に記憶されるデータの一部を保持するキャッシュメモリ部と、
前記主記憶装置に記憶されるデータを、前記キャッシュメモリ部に保持させるプリフェッチ命令を出力する演算処理部と、
前記演算処理部から前記プリフェッチ命令を受け取るとともに、前記キャッシュメモリ部が前記主記憶装置から前記プリフェッチ命令のプリフェッチ対象データを受け取るまで、前記プリフェッチ命令を格納するロードバッファ部と、
前記演算処理部から前記プリフェッチ命令を受け取るとともに、受け取った前記プリフェッチ命令のプリフェッチ対象データが前記キャッシュメモリ部に保持されている場合、受け取った前記プリフェッチ命令による前記主記憶装置から前記プリフェッチ対象データを読み出す処理を完了するとともに、受け取った前記プリフェッチ命令のプリフェッチ対象データが前記キャッシュメモリ部に保持されず且つ受け取った前記プリフェッチ命令のプリフェッチ対象データと同じデータをプリフェッチ対象とするプリフェッチ命令が前記ロードバッファ部に格納されていない場合、受け取った前記プリフェッチ命令を前記主記憶装置に出力する第1の制御部と、
前記演算処理部から前記プリフェッチ命令を受け取るとともに、受け取った前記プリフェッチ命令のプリフェッチ対象データと同じデータをプリフェッチ対象とするプリフェッチ命令が前記ロードバッファ部に格納されている場合、受け取った前記プリフェッチ命令による前記主記憶装置からプリフェッチ対象データを読み出す処理を完了する第2の制御部と、
前記演算処理部から受け取った前記プリフェッチ命令を前記第1の制御部のみに出力する処理、及び、受け取った前記プリフェッチ命令を前記第1の制御部と前記第2の制御部とに出力する処理のいずれかを選択する第3の制御部と、
を有することを特徴とする演算処理装置。 - 前記第1の制御部は、前記第1の制御部が受け取ったプリフェッチ命令と、前記ロードバッファ部に格納されるプリフェッチ命令との一致を確認しないサイクルにおいて、前記第2の制御部は、前記第2の制御部が前記第1の制御部から受け取ったプリフェッチ命令と、前記ロードバッファに格納されたプリフェッチ命令との一致を確認することを特徴とする請求項1記載の演算処理装置。
- 前記第1の制御部は、前記キャッシュメモリ部に保持されるデータの読み出しサイクルと異なるサイクルにおいて、前記キャッシュメモリ部に格納されるデータの書き込みを実行することを特徴とする請求項1又は2に記載の演算処理装置。
- 前記キャッシュメモリ部は、それぞれがメモリバンクに分けられた第3の記憶部及び第4の記憶部を有し、
前記ロードバッファ部は、前記第3の記憶部に保持されるデータをプリフェッチ対象とするプリフェッチ命令を格納する第5の記憶部と、前記第4の記憶部に格納されるデータをプリフェッチ対象とするプリフェッチ命令を格納する第6の記憶部とを有し、
前記第1の制御部は、前記第3の記憶部に保持されるプリフェッチ対象データの読み出しサイクルと同じサイクルで、前記第4の記憶部に保持されるプリフェッチ対象データの書き込みを実行することを特徴とする請求項1〜3のいずれか1項に記載の演算処理装置。 - 前記第1の制御部による命令の完了通知と、前記第2の制御部による命令の完了通知を同じサイクルで行うことを特徴とする請求項1〜4のいずれか1項に記載の演算処理装置。
- 前記第3の制御部は、前記第2の制御部がプリフェッチ命令を中止済又は処理中の場合、前記プリフェッチ命令を第2の制御部には出力せず、前記プリフェッチ命令を第1の制御部に出力することを特徴とする請求項1〜5のいずれか1項に記載の演算処理装置。
- 前記第3の制御部は、前記プリフェッチ命令を前記第1の制御部と前記第2の制御部とに出力し、前記プリフェッチ命令を処理する旨の制御信号を前記第1の制御部又は前記第2の制御部のいずれかに出力することで、前記制御信号を出力した前記第1の制御部又は前記第2の制御部のいずれかに前記プリフェッチ命令の処理を実行させることを特徴とする請求項1〜6のいずれか1項に記載の演算処理装置。
- 前記第1の制御部が前記キャッシュメモリ部におけるプリフェッチ命令が対象とするプリフェッチ対象データが存在することを検出した場合、前記第1の制御部は検出されたデータのアドレスを前記ロードバッファ部に格納し、
前記プリフェッチ命令のプリフェッチ対象データのアドレスと前記ロードバッファ部に格納された検出されたデータのアドレスが同じ場合、前記第2の制御部は、前記プリフェッチ命令による主記憶装置から読み出す処理を完了することを特徴とする請求項1〜7のいずれか1項に記載の演算処理装置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2009/071594 WO2011077549A1 (ja) | 2009-12-25 | 2009-12-25 | 演算処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2011077549A1 JPWO2011077549A1 (ja) | 2013-05-02 |
JP5482801B2 true JP5482801B2 (ja) | 2014-05-07 |
Family
ID=44195110
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011547161A Expired - Fee Related JP5482801B2 (ja) | 2009-12-25 | 2009-12-25 | 演算処理装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20120260056A1 (ja) |
EP (1) | EP2518632A4 (ja) |
JP (1) | JP5482801B2 (ja) |
KR (1) | KR101402560B1 (ja) |
CN (1) | CN102687128B (ja) |
WO (1) | WO2011077549A1 (ja) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5971036B2 (ja) * | 2012-08-30 | 2016-08-17 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
US20140201326A1 (en) | 2013-01-16 | 2014-07-17 | Marvell World Trade Ltd. | Interconnected ring network in a multi-processor system |
US20140223419A1 (en) * | 2013-02-04 | 2014-08-07 | Kabushiki Kaisha Toshiba | Compiler, object code generation method, information processing apparatus, and information processing method |
KR102043727B1 (ko) * | 2013-03-04 | 2019-12-02 | 에스케이하이닉스 주식회사 | 반도체 장치 및 그 제조 방법, 이 반도체 장치를 포함하는 마이크로 프로세서, 프로세서, 시스템, 데이터 저장 시스템 및 메모리 시스템 |
KR102008412B1 (ko) * | 2013-03-04 | 2019-08-08 | 에스케이하이닉스 주식회사 | 반도체 장치 및 이 반도체 장치를 포함하는 마이크로프로세서, 프로세서, 시스템, 데이터 저장 시스템 및 메모리 시스템 |
KR102092772B1 (ko) * | 2013-03-27 | 2020-03-24 | 에스케이하이닉스 주식회사 | 반도체 장치 및 그 제조 방법, 이 반도체 장치를 포함하는 마이크로 프로세서, 프로세서, 시스템, 데이터 저장 시스템 및 메모리 시스템 |
US9865806B2 (en) | 2013-06-05 | 2018-01-09 | SK Hynix Inc. | Electronic device and method for fabricating the same |
US10490741B2 (en) | 2013-06-05 | 2019-11-26 | SK Hynix Inc. | Electronic device and method for fabricating the same |
KR102025256B1 (ko) * | 2013-07-25 | 2019-09-26 | 에스케이하이닉스 주식회사 | 전자 장치 및 그 제조 방법 |
US9933841B2 (en) * | 2014-04-17 | 2018-04-03 | Arm Limited | Reuse of results of back-to-back micro-operations |
DE202014006031U1 (de) * | 2014-07-18 | 2015-10-27 | Neoperl Gmbh | Schlauchanschluss |
JP6569347B2 (ja) * | 2015-07-16 | 2019-09-04 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
JP6468121B2 (ja) * | 2015-08-17 | 2019-02-13 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
US10896138B2 (en) * | 2016-05-27 | 2021-01-19 | Apple Inc. | Dynamically controlling random access memory retention in a wireless device |
CN106250348B (zh) * | 2016-07-19 | 2019-02-12 | 北京工业大学 | 一种基于gpu访存特性的异构多核架构缓存管理方法 |
US10606599B2 (en) * | 2016-12-09 | 2020-03-31 | Advanced Micro Devices, Inc. | Operation cache |
KR102679774B1 (ko) * | 2019-04-10 | 2024-06-28 | 에스케이하이닉스 주식회사 | 히스토리 기반 메모리 시스템 및 그 제어 방법 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05143451A (ja) * | 1991-11-20 | 1993-06-11 | Kisaburo Nakazawa | データ処理装置 |
JP2003162446A (ja) * | 2001-11-27 | 2003-06-06 | Nec Electronics Corp | マイクロコンピュータ |
JP2006048181A (ja) * | 2004-07-30 | 2006-02-16 | Fujitsu Ltd | 記憶制御装置、ムーブインバッファ制御方法およびプログラム |
JP2006048182A (ja) * | 2004-07-30 | 2006-02-16 | Fujitsu Ltd | 記憶制御装置、ムーブインバッファ制御方法およびプログラム |
JP2007122667A (ja) * | 2005-10-31 | 2007-05-17 | Fujitsu Ltd | 演算処理装置,情報処理装置,及び演算処理装置のメモリアクセス方法 |
WO2009104240A1 (ja) * | 2008-02-18 | 2009-08-27 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6317810B1 (en) * | 1997-06-25 | 2001-11-13 | Sun Microsystems, Inc. | Microprocessor having a prefetch cache |
JP3512678B2 (ja) | 1999-05-27 | 2004-03-31 | 富士通株式会社 | キャッシュメモリ制御装置および計算機システム |
US20060148743A1 (en) | 2001-05-18 | 2006-07-06 | Vasant Jadhav | RNA interference mediated inhibition of histone deacetylase (HDAC) gene expression using short interfering nucleic acid (siNA) |
JP4575065B2 (ja) | 2004-07-29 | 2010-11-04 | 富士通株式会社 | キャッシュメモリ制御装置、キャッシュメモリ制御方法、中央処理装置、情報処理装置、中央制御方法 |
US20070186049A1 (en) * | 2006-02-03 | 2007-08-09 | International Business Machines Corporation | Self prefetching L2 cache mechanism for instruction lines |
EP1990731B1 (en) * | 2006-02-28 | 2015-05-27 | Fujitsu Limited | Processor having prefetch function |
-
2009
- 2009-12-25 KR KR1020127016301A patent/KR101402560B1/ko not_active IP Right Cessation
- 2009-12-25 WO PCT/JP2009/071594 patent/WO2011077549A1/ja active Application Filing
- 2009-12-25 CN CN200980163061.7A patent/CN102687128B/zh not_active Expired - Fee Related
- 2009-12-25 JP JP2011547161A patent/JP5482801B2/ja not_active Expired - Fee Related
- 2009-12-25 EP EP09852565.2A patent/EP2518632A4/en not_active Withdrawn
-
2012
- 2012-06-20 US US13/528,153 patent/US20120260056A1/en not_active Abandoned
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05143451A (ja) * | 1991-11-20 | 1993-06-11 | Kisaburo Nakazawa | データ処理装置 |
JP2003162446A (ja) * | 2001-11-27 | 2003-06-06 | Nec Electronics Corp | マイクロコンピュータ |
JP2006048181A (ja) * | 2004-07-30 | 2006-02-16 | Fujitsu Ltd | 記憶制御装置、ムーブインバッファ制御方法およびプログラム |
JP2006048182A (ja) * | 2004-07-30 | 2006-02-16 | Fujitsu Ltd | 記憶制御装置、ムーブインバッファ制御方法およびプログラム |
JP2007122667A (ja) * | 2005-10-31 | 2007-05-17 | Fujitsu Ltd | 演算処理装置,情報処理装置,及び演算処理装置のメモリアクセス方法 |
WO2009104240A1 (ja) * | 2008-02-18 | 2009-08-27 | 富士通株式会社 | 演算処理装置および演算処理装置の制御方法 |
Also Published As
Publication number | Publication date |
---|---|
US20120260056A1 (en) | 2012-10-11 |
CN102687128B (zh) | 2014-12-10 |
CN102687128A (zh) | 2012-09-19 |
EP2518632A4 (en) | 2013-05-29 |
EP2518632A1 (en) | 2012-10-31 |
KR101402560B1 (ko) | 2014-05-30 |
KR20120086363A (ko) | 2012-08-02 |
WO2011077549A1 (ja) | 2011-06-30 |
JPWO2011077549A1 (ja) | 2013-05-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5482801B2 (ja) | 演算処理装置 | |
JP3412575B2 (ja) | 命令履歴キャッシングを使用して推測的に命令を実行する回路、データ処理システム、およびそのための方法 | |
US7707397B2 (en) | Variable group associativity branch target address cache delivering multiple target addresses per cache line | |
US9798590B2 (en) | Post-retire scheme for tracking tentative accesses during transactional execution | |
US6047363A (en) | Prefetching data using profile of cache misses from earlier code executions | |
US5748932A (en) | Cache memory system for dynamically altering single cache memory line as either branch target entry or prefetch instruction queue based upon instruction sequence | |
US8316188B2 (en) | Data prefetch unit utilizing duplicate cache tags | |
US8984261B2 (en) | Store data forwarding with no memory model restrictions | |
JP6467605B2 (ja) | 命令処理システムと方法 | |
US20150186293A1 (en) | High-performance cache system and method | |
EP1441284A2 (en) | Apparatus and method for efficiently updating branch target address cache | |
KR100955433B1 (ko) | 파이프라인 구조를 갖는 캐시 메모리 및 이를 제어하는방법 | |
US6963962B2 (en) | Memory system for supporting multiple parallel accesses at very high frequencies | |
JPH08194615A (ja) | 情報処理装置 | |
US20030182536A1 (en) | Instruction issuing device and instruction issuing method | |
CN117421259A (zh) | 用飞行中预取服务于cpu需求请求 | |
JP2007514237A (ja) | 分岐先バッファにおいてエントリを割り当てる方法及び装置 | |
JP6770230B2 (ja) | 演算処理装置、情報処理装置及び演算処理装置の制御方法 | |
US5900012A (en) | Storage device having varying access times and a superscalar microprocessor employing the same | |
US6425090B1 (en) | Method for just-in-time delivery of load data utilizing alternating time intervals | |
US20140019690A1 (en) | Processor, information processing apparatus, and control method of processor | |
US8549228B2 (en) | Processor and method of control of processor | |
US7251710B1 (en) | Cache memory subsystem including a fixed latency R/W pipeline | |
JPH0756808A (ja) | データキャッシュバッファ及び記憶方法 | |
WO2013086060A1 (en) | Selective access of a store buffer based on cache state |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20130604 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130805 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20140121 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140203 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5482801 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |