JP6792139B2 - 演算処理装置及び演算処理装置の制御方法 - Google Patents

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

Info

Publication number
JP6792139B2
JP6792139B2 JP2016080227A JP2016080227A JP6792139B2 JP 6792139 B2 JP6792139 B2 JP 6792139B2 JP 2016080227 A JP2016080227 A JP 2016080227A JP 2016080227 A JP2016080227 A JP 2016080227A JP 6792139 B2 JP6792139 B2 JP 6792139B2
Authority
JP
Japan
Prior art keywords
request
address
processing unit
processing
requests
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.)
Active
Application number
JP2016080227A
Other languages
English (en)
Other versions
JP2017191435A (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 JP2016080227A priority Critical patent/JP6792139B2/ja
Priority to US15/458,074 priority patent/US10067743B2/en
Publication of JP2017191435A publication Critical patent/JP2017191435A/ja
Application granted granted Critical
Publication of JP6792139B2 publication Critical patent/JP6792139B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements

Description

本発明は,演算処理装置及び演算処理装置の制御方法に関する。
演算処理装置(CPUチップ、マイクロプロセッサ、以下単にプロセッサと称する)は、メモリアクセス性能を向上するため複数のレベルのキャッシュを有する。プロセッサは、複数の演算処理部(CPUコア、以下コアと称する)を有し、コアが第1レベルのキャッシュ(L1キャッシュ)をプライベートキャッシュとして占有して利用する。さらに、プロセッサは、複数のコアが共有する上位レベルのキャッシュを有する。
また、プロセッサは、共有キャッシュのうち最上位レベルのキャッシュ(Last Level Cache: LLC,以下LLCと称する)を複数または単数有し、さらに、LLCの外側にキャッシュ間のコヒーレンシを維持するためのコヒーレンシ制御部を有する場合もある。
以下の特許文献には、複数レベルのキャッシュを有するプロセッサについて記載されている。
国際公開第2013/084314号
LLCやコヒーレンシ制御部は、リクエストが投入される制御パイプラインと、リクエストに対応する処理を実行するリクエスト処理ユニットを有する。リクエスト処理ユニットは複数のリクエスト処理回路を有する。制御パイプラインは、入力(投入)されたリクエストが既に処理中のリクエストのアドレスと競合するかの判定、リクエストに対する処理内容の判定、処理ユニットの回路資源が獲得可能か否かの資源判定などを行い、適切なリクエストについてリクエスト処理ユニット内のリクエスト処理回路に処理を依頼する。
そのため、制御パイプラインは、リクエストポートから投入されたリクエストがアドレスの競合がありまたは回路資源を獲得できないなど処理開始できない場合、リクエストをアボートしてリクエストポートに差し戻す。したがって、例えばアドレスが競合する他のリクエストの開始済みの処理が完了するまで、そのリクエストはアボートを繰り返す。そして、リクエストポート内の他のアドレスのリクエストは、アボートされたリクエストを追い抜いてリクエスト処理ユニットで処理されることが可能である。
上記の構成において、最初にリクエスト処理ユニットの資源を獲得できたリクエストが処理される。そのため、同一のアドレスの異なるリクエストが資源獲得で競合しあう場合、制御パイプラインに投入されたタイミングで資源獲得できたリクエストがその処理を実行されてしまい、あるリクエストは資源獲得に失敗してアボートを繰り返す一方で、別のリクエストはタイミングよく資源獲得して処理を実行されることがある。この結果、リクエストの要求元の間でまたはリクエスト間で処理の進みやすさに不均衡が生じる。
そこで,本開示の第1の側面の目的は,同一アドレスの複数のリクエストが競合した場合、リクエスト間で不均衡な制御を受けることを抑制する演算処理装置及び演算処理装置の制御方法を提供することにある。
本開示の第1の側面は,複数の演算処理部と、メモリの制御を行う第1の制御部とを有し、前記第1の制御部は、前記メモリのメモリ空間に対するリクエストを受け付けるリクエストポートと、前記リクエストに対応する処理を実行する処理ユニットと、前記リクエストポートから入力されたリクエストが前記処理ユニットで処理実行可能か否かを判定し、前記リクエストが処理実行不可の場合前記リクエストについて第1のアボート処理を行い、処理実行可能の場合前記処理ユニットに処理を発行する制御パイプラインと、前記処理実行不可によりアボートされた同一のアドレスに対するリクエストの発生順序を保持し、前記制御パイプラインに入力されたリクエストのうち前記同一のアドレスを有し且つ前記発生順序の先頭以外のリクエストについて第2のアボート処理を行う同一アドレスリクエスト調停部と、を有する演算処理装置である。
第1の側面によれば,同一アドレスの複数のリクエストが競合した場合、リクエスト間で不均衡な制御を受けることを抑制する。
本実施の形態におけるプロセッサ(CPUチップ)の構成例を示す図である。 プロセッサ内の1つのクラスタとそれに対応する構成だけを抽出して示す図である。 コヒーレンシ制御部の構成例を示す図である。 コヒーレンシ制御パイプラインの構成例を示す図である。 第1の実施の形態におけるコヒーレンシ制御部の構成例を示す図である。 本実施の形態におけるコヒーレンシ制御パイプライン12の構成を示す図である。 同一アドレスリクエスト調停回路17の保持情報と主な構成回路を示す図である。 同一アドレスリクエスト調停回路の入力リクエスト情報に対する処理を示すフローチャート図である。 同一アドレスリクエスト調停回路の入力リクエスト情報に対する処理を示すフローチャート図である。 同一アドレスリクエスト調停回路17のリクエストの初回登録の動作を示す図である。 同一アドレスリクエスト調停回路17の後続のリクエストのチェック及び登録の動作を示す図である。 同一アドレスリクエスト調停回路17の待ちリクエストの解除動作を示す図である。 同一アドレスリクエスト調停回路17のアドレス監視終了の動作を示す図である。 待ちリクエストリストの第1の変形例を示す図である。 待ちリクエストリストの第2の変形例を示す図である。 第1の実施の形態の第1の変形例のコヒーレンシ制御部の構成を示す図である。 第1の実施の形態の第2の変形例のコヒーレンシ制御部の構成を示す図である。 第2の実施の形態におけるキャッシュの構成を示す図である。
図1は、本実施の形態におけるプロセッサ(CPUチップ)の構成例を示す図である。プロセッサ1は、命令をデコードして演算処理を発行する命令制御部(図示せず)と演算処理回路(図示せず)と第1レベル(L1)データキャッシュL1D及びL1命令キャッシュL1Iと、第2レベル(L2)キャッシュとをそれぞれ有するCPUコア(コア)CORE_0−CORE_nを有する。
さらに、プロセッサ1は、複数のコアCORE_0−CORE_nが複数のグループ(またはクラスタCLS)に分けられ、各グループに対応して設けられた複数の最上位レベルキャッシュ(LLC)LLC_0−LLC_3を有する。各LLCは、各グループ内の複数のコアにより共有される。各LLCは、通常のキャッシュと同様に、タグメモリとデータメモリを有し、タグメモリには、自分のデータメモリのキャッシュラインに関するタグデータ(有効ビット、アドレス、状態など)を記憶する。
また、プロセッサ1は、複数のLLC間のコヒーレンシを維持する制御を行うコヒーレンシ制御部CHR_0−CHR_3と、メモリMEMへのアクセスを制御するメモリコントローラMC_0−MC_3を有する。
各コヒーレンシ制御部は、後で詳述するとおり、LLCのタグのコピーと、各LLCや他のCPU及びIOデバイスからのメモリリクエストを受け付けるリクエストポートと、各リクエストに対してキャッシュコヒーレンシを維持するための各種処理を実行するミスアクセス制御部、オーダー制御部、リプレースバッファなどの処理ユニットを有する。
4つのメモリMEM_0−MEM_3は、アドレスインターリーブされている。例えば、前メモリの物理アドレスがPA[k-1:0]とkビットの場合、4つのメモリの物理アドレスは次の通りになる。
MEM_0はPA[m:n]=00
MEM_0はPA[m:n]=01
MEM_0はPA[m:n]=10
MEM_0はPA[m:n]=11
ここで、m、nはkより小さく0より大きい自然数(0<n<m<k)である。
コヒーレンシ制御部CHR_0−CHR_3は、LLCのタグのコピーを有する。各コヒーレンシ制御部のLLCタグコピーは、上記のアドレスインターリーブに対応して、それぞれ同様の物理アドレスに対応するLLCのキャッシュラインのタグデータを記憶する。
4つのLLCそれぞれは4つのコヒーレンシ制御部CHR_0−CHR_3に接続され、各LLCはキャッシュミスした場合のメモリアクセスを要求するメモリリクエストを対応するコヒーレンシ制御部に発行する。逆に、各コヒーレンシ制御部は入力されたメモリリクエストに必要な処理の要求をオーダーとしてメモリ側とは逆方向の下位レベル方向の4つのLLCに発行する。
また、4つのコヒーレンシ制御部CHRそれぞれは、メモリアクセスのリクエストやキャッシュのデータのメモリへの書き戻しのリクエストを、メモリ側と同じ上位レベル方向のアドレスが対応するメモリコントローラMCに発行する。
そして、プロセッサ1は、他のCPUと通信するためのルータRTと、IOデバイスと通信するためのIO制御部IOを有する。
図2は、プロセッサ内の1つのクラスタとそれに対応する構成だけを抽出して示す図である。図1の複数のコアCORE_0−CORE_nは、4つのクラスタ(コア群)CLSに分けられる。したがって、図1には、4つのクラスタに対応して4つのLLC(LLC_0−LLC_3)が設けられている。
一方、図2に示した1つのクラスタCLSは、複数のコアCORE_0−CORE_kを有する。そして、そのクラスタCLSの複数のコアは、1つのLLC(LLC_0)を共有する。
図1で説明したとおり、4つのコヒーレンシ制御部CHR_0−CHR_3は、アドレスインターリーブされた4つのメモリMEM_0−MEM_3と、それに対応する4つのメモリコントローラMC_0−MC_3とに対応し、それぞれ接続される。
したがって、1つのLLC(LLC_0)は、全てのコヒーレンシ制御部CHR_0−CHR_3にメモリリクエストを発行可能であり、メモリリクエストのアドレスに対応したコヒーレンシ制御部にメモリリクエストを発行する。
図1、図2において、プロセッサ1の動作例について簡単に説明する。いずれかのコアがメモリMEM内のデータを読み出すロード命令を実行してコア内のL2キャッシュでキャッシュミスすると、L2キャッシュが、キャッシュミスに対応してメモリのデータを読み出すメモリリクエストをLLCに発行する。さらに、LLCがメモリリクエストについてキャッシュミスすると、リクエストのアドレスに対応するコヒーレンシ制御部CHRにメモリリクエストを発行する。
コヒーレンシ制御部は、LLCタグコピーを検索して、残りのLLCがそのアドレスのデータを保持しているか否かをチェックする。ここでキャッシュヒットすれば、コヒーレンシ制御部は、データを保持しているLLCに対して、保持しているデータをメモリリクエストの要求元のLLCに転送するようオーダーを発行する。一方、キャッシュミスすれば、コヒーレンシ制御部は、メモリコントローラMCにメモリへのアクセスを要求するメモリリクエストを発行し、メモリからのデータ応答があれば、メモリリクエストの要求元のLLCにデータ応答する。
さらに、コヒーレンシ制御部は、コアが前述のロード命令を実行した場合や、ストア命令を実行してキャッシュへの書き込みが発生した場合に、MESIプロトコルに基づく種々の処理の要求を、より上位レベルのメモリコントローラMCにはリクエストとして、より下位レベルのLLCにはオーダーとして発行する。リクエストとオーダーはいずれもある処理の要求であるが、処理の要求先により区別して呼ぶこととする。ここで、より上位レベルとはメモリ階層に近づく方向を、より下位レベルとは下位レベルのキャッシュやコアに近づく方向を意味する。
[アドレスに対するリクエストについて]
キャッシュL2,LLCとコヒーレンシ制御部CHRは、いずれもメモリ空間のアドレスに対するリクエストを受け付け、各リクエストに対応する処理の実行を制御する。ここで、メモリ空間のアドレスは、(1)図1,2に示したメインメモリMEMのアドレスでありキャッシュ可能なアドレス(chacheable address)と、(2)システム用のブートROMやSRAM等のメモリや周辺デバイスのレジスタなどの非キャッシュ可能(キャッシュ不能)なアドレス(Non-chacheable address)とを含む。ただし、非キャッシュ可能なアドレスには、メインメモリMEM内の一部のアドレスが含まれる場合もある。
したがって、メモリ空間内のあるアドレスに対するリクエスト(読み出しまたは読み出し)は、(1)上記のキャッシュ可能なアドレスに対するリクエストと、(2)非キャッシュ可能なアドレスに対するリクエストが含まれる。そして、キャッシュ可能なアドレスに対するリクエストは、(1−1)自分のCPU(ローカルCPU)内のL2キャッシュやLLCなどのキャッシュとコヒーレンシ制御部より下位レベルでのキャッシュミスにより発行されたリクエストと、(1−2)IOデバイス(例えばDMA(Dynamic Memory Access))や他のCPU(リモートCPU)が発行したリクエストなどが含まれる。
前述のプロセッサCPUの動作例では、上記の(1−1)のリクエストについて説明したが、キャッシュとコヒーレンシ制御部は、(1−1)のリクエストに加えて、上記の(1−2)(2)のリクエストを受け付けて処理を制御する場合もある。
[コヒーレンシ制御部の概略]
図3は、コヒーレンシ制御部の構成例を示す図である。LLCやL2キャッシュを含むキャッシュも、コヒーレンシ制御部と類似する構成を有する。以下はコヒーレンシ制御部の構成例について説明する。
キャッシュコヒーレンシ制御部CHRは、下位レベルのキャッシュやコア(前述のクラスタCLS)からのリクエストを受け付けるリクエストポートRP_0−RP_3を有する。コヒーレンシ制御部にとって下位レベルのキャッシュはLLCである。図1の例では、4つのLLCが設けられおり、それぞれの要求元のLLCに対応して4つのリクエストポートRP_0−RP_3が設けられている。各リクエストポートRPは、複数のエントリを有し、同じ要求元から複数のリクエストを複数のエントリに受け付ける。
さらに、コヒーレンシ制御部は、IOデバイスからのIOリクエストを受け付けるリクエストポートRP_4と、他のCPUからのリモートリクエストを受け付けるリクエストポートRP_5と、メモリリクエストに対するメモリコントローラからの応答を受け付けるリクエストポートRP_6などを有する。この点、コヒーレンシ制御部と異なり、キャッシュは、上位レベルからのオーダーを受け付けるリクエストポートと、上位レベルからのメモリ応答を受け付けるリクエストポートを有する。
さらに、コヒーレンシ制御部は、4つのリクエストポートRP_0−RP_3のいずれかを選択するコアまたはキャッシュ間調停回路10と、その選択されたリクエストポートと他のリクエストポートRP_4−RP_6のいずれかを優先度に基づいて選択するプライオリティ調停回路11を有する。
そして、コヒーレンシ制御部は、選択されたリクエストポートのエントリのリクエストが投入(入力)されるコヒーレンシ制御パイプライン12と、入力されたリクエストに対応する種々の処理を行う処理ユニット20_1、20_2を有する。ここで、図中、処理ユニットは、2つの部分20_1と20_2に分割して示されるが、内部処理のステージに対応して2つの部分に分けて表示されるだけであり、処理ユニット20_1,20_2で1つの処理ユニットを構成する。また、処理ユニットは個々の処理毎に一連のパイプラインで構成される。
コヒーレンシ制御部の処理ユニット20は、例えば、LLCのタグメモリのコピー13_1、13_2と、ミスアクセス制御部14_1、14_2と、オーダー制御部15_1、15_2と、リプレースバッファ16_1、16_2とを有する。この点、キャッシュは、自らのデータメモリとそのタグメモリを有する。
LLCのタグメモリのコピー15は、コヒーレンシ制御パイプライン12により、下位レベルのLLCでのキャッシュミスの発生に基づいて発行されたリクエストのアドレスについて検索され、他のLLCがデータを保持していないか否かをチェックされる。さらに、リクエストに対する応答がリクエストポートRP_6から入力され、LLCが応答に対応してLLCのタグメモリを更新する場合、LLCのタグメモリのコピー13も更新処理される。
ミスアクセス制御部14は、LLCでのキャッシュミスに基づくメモリリクエストのアドレス、またはIOデバイスやリモートCPUからのリクエストのアドレスが、LLCのタグメモリのコピー13でキャッシュミスになった場合、メモリコントローラを経由してメモリリクエストを発行する。または、上記のローカルからのリクエストがキャッシュミスになった場合、他のCPUのメモリ宛てにリモートリクエストを発行する。いずれもメモリシステムに対するメモリ系のリクエストである。ミスアクセス制御部は、メモリシステムにリクエストを発行すると、メモリシステムからデータ応答を受信するまでの間、後続の同一アドレスのリクエストを受け付けないよう排他制御を行う。
オーダー制御部15は、下位レベルのコアやキャッシュに対する要求をオーダーとして発行する。例えば、下位レベルからのリクエストのアドレスがLLCのタグメモリのコピー13でキャッシュヒットした場合、ヒットしたデータを所持するLLCに対してデータ転送のオーダーを発行する。あるいは、下位レベルのコアやキャッシュ間のコヒーレンシを維持するために、あるコアがデータをストアする場合、他のコアがキャッシュに所持しているデータをMESIプロトコルなどに従いキャッシュ無効化するオーダーを発行する。これらの場合、オーダー制御部は、キャッシュ無効化が完了するまで、後続の同一アドレス要求に対するリクエストを受理しないよう排他制御を行う。
リプレースバッファ16は、下位レベルのキャッシュから追い出されるデータをメモリに書き戻すライトバックをメモリコントローラに発行する。コヒーレンシを保つために、一連の書き込みが完了するまでの間、後続の同一アドレスのリクエストを受理しないよう排他制御を行う。
ミスアクセス制御部14、オーダー制御部15、リプレースバッファ16は、それぞれの処理の依頼を受け付ける受付エントリ(一種のレジスタ)を有する。受付エントリには受け付けたリクエストの情報(リクエストIDやリクエストアドレスを含む)が格納される。処理ユニット内の各処理部がそのリクエストに対応する処理を開始すると、同じアドレスに対する新たな処理を受け付けないように制御される。また、受付エントリの数は有限であり、受付エントリに空きがなければ、新たな処理を受け付けることができない。これらの制御は、制御パイプライン12が実行する。
図4は、コヒーレンシ制御パイプラインの構成例を示す図である。コヒーレンシ制御パイプライン12は、あるアドレスに対するリクエストについて、処理ユニット20が処理実行可能か否かを判定し、リクエストの処理が実行不可の場合そのリクエストをアボートし、処理実行可能の場合処理ユニット20にリクエストに対応する処理を発行する。処理実行可能か否かとは、リクエストのアドレスが処理中のアドレスと競合しないか否か、処理部の受付エントリなどの回路資源が獲得可能か否かなどである。アドレスが競合せず回路資源が獲得可能であれば、リクエストに対応する処理を実行可能となる。処理が発行されたリクエストはリクエストポートから削除され、一方、アボートされたリクエストはリクエストポートに残されて、再度コヒーレンシ制御パイプラインに入力(投入)される。
コヒーレンシ制御パイプライン12は、アドレス/TAGチェック部121と、処理判定部122と、資源判定部123とを有する。コヒーレンシ制御パイプラインにはリクエストの情報(リクエスト有効ビットR_valid、リクエスト要求元ID(core_id)、リクエストエントリID(entry_id)、リクエストアドレスR_id)が入力され流れていく。
具体的な動作について説明すると、アドレス/タグチェック部121は、入力されたリクエストについてLLCのタグメモリコピー13_1にキャッシュ判定を依頼する (12A) と共に、ミスアクセス制御部14_1とオーダー制御部15_1とリプレースバッファ16_1に、入力リクエストのアドレスと各処理部14,15,16が処理中のアドレス(排他アドレス)と一致するか否かのチェックを依頼する(12A)。処理中のアドレスは前述の受付エントリに保持されている。そして、アドレス/タグチェック部は、LLCタグメモリコピーのキャッシュ判定結果(12B)、ミスアクセス制御部とオーダー制御部とリプレースバッファそれぞれの排他アドレスと一致するかの否かのチェック結果(12B)を取得する。排他アドレスと一致する場合は処理実行不可能であるので、アドレス/タグチェック部121は第1のアボート信号Ab1を出力する。
さらに、処理判定部122は、メモリリクエストに必要な処理を判定する。そして、資源判定部123が、判定された処理に対応するミスアクセス制御部14_2、オーダー制御部15_2、リプレースバッファ16_2のいずれかで、処理に必要な回路資源を獲得できるか否かの判定を行う。処理に必要な回路資源の例は、前述の受付エントリなどである。資源判定部は、回路資源の獲得ができない場合は処理実行不可能であるので、第2のアボート信号Ab2を出力する。また、その他何らかの理由でパイプラインストールが発生する場合も実行不可能であるので、図示しないアボート信号が出力される。
コヒーレンシ制御パイプラインは、論理和ゲート124により全てのアボート信号Ab1,Ab2を論理和演算したアボートフラグABORTを出力する。このアボートフラグABORTが「1」の場合リクエストがアボートされたことを意味し、リクエストに対応する処理は実行されず、リクエストは元のアクセスポートに差し戻される。
コヒーレンシ制御パイプライン12は、処理実行可能の場合、処理ユニット20_2に処理判定部122が判定した処理12Cを発行する。発行する処理12Cは、例えば、タグメモリコピー13_2への更新処理、ミスアクセス制御部14_2へのエントリ登録または開放処理、オーダー制御部15_2へのオーダー発行処理、リプレースバッファ16_2へのエントリ登録または開放要求などである。
上記の資源管理において、処理のための資源獲得に失敗すると、投入されたリクエストはアボートされ、アボートフラグABORT付きのリクエスト情報12Dがリクエストポートにフィードバックされ、リクエストが差し戻される。そして、差し戻されたリクエストは、リクエストポート内の他のリクエストの後に再度パイプラインに入力される。具体的には、リクエストポートRPは、リクエスト要求元IDとリクエストエントリIDが一致しアボートフラグABORTが「0」の場合、リクエストポート内にエントリされているリクエストを無効化(削除)する。
以上のとおり、コヒーレンシ制御パイプラインは、あるアドレスに対するリクエストをパイプライン処理し、処理ユニット20内で処理中のアドレスを処理部内の受付エントリ等の回路資源に記録し、同じアドレスに対して不整合のないようにリクエストを制御する。処理ユニットでの処理は、
(1)MESIプロトコルなどキャッシュの状態遷移に基づいたLLC TAGコピー13_2の更新と、
(2)ミスアクセス制御部14_2によるメモリ階層に対するリクエストの発行、リモートCPUに対するリクエスト、IOデバイスに対するIOリクエストなど、システムに対して発行される全てのリクエストと、
(3)オーダー制御部15_2による下位レベルに対するオーダーの発行と、
(4)リプレースバッファ16_2による下位レベルのキャッシュのデータ吐き出しに伴うメモリへのライトバックが含まれる。
一つのリクエストを処理している間、他のリクエストを処理できない制御をブロッキング制御といい、リクエストを次々に処理できるような制御をノンブロッキング制御という。図1、図2のコヒーレンシ制御パイプラインは、ノンブロッキング制御である。コヒーレンシ制御パイプラインは、各種資源(LLC TAGコピーや、ミスアクセス制御部、オーダー制御部、リプレースバッファ内の受付エントリレジスタ)の参照や更新などがパイプライン化された構成で、仮に資源がロックされていて処理できないリクエストがあったとき、そのリクエストをアボートする。アボートされたリクエスト情報12Dは、アボートフラグABORTを付けてリクエストポートにフィードバックされ、リクエストポートに差し戻しされる。それにより、リクエスト間の順序を維持しないで先にパイプラインに投入されたリクエストの追い抜きが可能になる。
コヒーレンシ制御パイプラインがノンブロッキング制御を行うことに伴い、以下のようなリクエストの要求元間またはリクエスト間で処理の進みやすさに不均衡が発生する。すなわち、パイプラインに投入されたリクエストは、処理中のアドレスと競合せず、処理対象の回路資源を獲得できると、処理の実行権利を獲得する。従って、複数のリクエストが同一のアドレスで競合しあうと、共にアボートされパイプラインに再投入されるが、偶然処理ユニットでのロックが解放された直後に投入されたリクエストが回路資源を獲得する。そのため、特定のリクエストポート(要求元)のリクエストに着目すると、何度も回路資源の獲得に失敗してアボートされる要求元がある一方で、投入時にタイミングよく回路資源を獲得した要求元は処理を実行することができる。結果的に、リクエストの要求元間でまたはリクエスト間で処理の進みやすさに不均衡が発生する。
例えば、スレッドが並列化されたアプリケーションは、複数のスレッドでジョブを実行し最後のスレッドが終了するとジョブ終了の同期が取られる。このような場合、スレッド間つまり要求元であるコア間で処理の不均衡が発生すると、ジョブ終了までの時間が長くなり、全体の処理性能が低下する。
キャッシュ内のキャッシュ制御パイプラインにおいても、上記と同様の問題が発生する。そこで、以下、同一アドレスリクエスト調停回路をコヒーレンシ制御部に適用した第1の実施の形態と、キャッシュに適用した第2の実施の形態について説明する。
[第1の実施の形態]
図5は、第1の実施の形態におけるコヒーレンシ制御部の構成例を示す図である。図5のコヒーレンシ制御部は、同一アドレスの複数のリクエストの間で処理実行用の回路資源の獲得の順番を調停する同一アドレスリクエスト調停回路17を有する。
前述の通り、コアまたは下位レベルキャッシュ(LLC)からのリクエストは、要求元別に設けられたリクエストポートRP_0-RP_3にエントリされ、コア/キャッシュ間調停回路10とプライオリティ調停回路11により選択されてコヒーレンシ制御パイプラインに入力(投入)される。そして、コヒーレンシ制御パイプライン12にて処理ユニット20_2の回路資源を獲得できるかチェックされる。
同一アドレスリクエスト調停回路17は、監視アドレスと同一のアドレスを有するリクエストの入力(投入)順を保持する待ちリクエストリストに、そのリクエストが処理ユニットの20の回路資源を獲得するまで保持する。そして、監視アドレスと同一のアドレスのメモリリクエストがパイプラインに入力されると、同一アドレスリクエスト調停回路17は、そのリクエストが待ちリクエストリストの先頭以外の場合に、コヒーレンシ制御パイプラインにリクエストの強制アボートAb3を発行する。強制アボートを発行されたリクエストはリクエストポートに差し戻される。先頭のリクエストは強制アボートされず、制御パイプラインによる回路資源獲得のトライが許される。これにより、同一アドレスリクエスト調停回路17は、監視アドレスのメモリリクエストについては、待ちリクエストリストの順番に、そのリクエストに対応する処理が実行されるように調停する。監視対象のアドレス以外のアドレスのメモリリクエストは、調停回路による強制アボートの対象外である。
図5に示した構成では、同一アドレスリクエスト調停回路17は、コア/キャッシュ間調停回路10が出力するリクエストRQ_inを入力し、コアまたは下位レベルキャッシュからのリクエストに限定して調停する。ただし、後述する通り、IOリクエストやリモートリクエストなども調停の対象にしてもよい。また、図示しない非キャッシュ可能アドレスに対するリクエストも調停の対象にしてもよい。
同一アドレスリクエスト調停回路17は、コヒーレンシ制御パイプラインから出力されるリクエスト情報12Dも入力する。出力リクエスト情報には、パイプラインを流れた結果を示すアボートフラグが含まれ、アボートフラグはリクエストが回路資源の獲得に成功したか否かを示す。
同一アドレスリクエスト調停回路17は、入力されるリクエストのアドレスが監視アドレスと一致するが、入力されるリクエストが待ちリクエストリスト内の先頭リクエストと一致しない場合、強制アボート信号Ab3を発行し、その強制アボートされたリクエストを待ちリクエストリストに登録する。ただし、登録済みの場合は登録しない。一方、同一アドレスリクエスト調停回路17は、入力されるリクエストが待ちリクエストリスト内の先頭リクエストと一致する場合(当然監視アドレスと一致)、そのリクエストには強制アボートAb3を発行せず、パイプラインでの回路資源獲得をトライさせる。
同一アドレスリクエスト調停回路17は、出力リクエスト情報12DのアボートフラグABORTが「0」(アボートされず回路資源獲得に成功した)の場合、そのリクエストが待ちリクエストに登録されている場合は、その登録を削除する。登録を削除されるリクエストは先頭リクエストである。
図5の構成において、上記の同一アドレスリクエスト調停回路17以外は、図3と同じである。
図6は、本実施の形態におけるコヒーレンシ制御パイプライン12の構成を示す図である。図4の構成と異なる構成は、次のとおりである。すなわち、同一アドレスリクエスト調停回路17が、パイプラインへの入力リクエスト情報RQ_in(パイプラインのステージ0の信号)と、パイプラインからの出力リクエスト情報12D(パイプラインの最終ステージNの信号)とを入力する。そして、同一アドレスリクエスト調停回路17が発行する強制アボートAb3がパイプライン12に入力され、論理和ゲート124がパイプライン内で発行されるアボート信号Ab1, Ab2と強制アボートAb3との論理和演算結果をアボートフラグABORTとして出力する。アドレス・TAGチェック部121と、処理判定部122と、資源判定部123は図4と同等である。
従って、本実施の形態では、コヒーレンシ制御パイプライン12による処理ユニット20での処理に必要な回路資源を獲得できなかった場合(Ab1, Ab2)に加えて、同一アドレスリクエスト調停回路17により強制アボートされた場合(Ab3)も、リクエストはアボートされて、リクエストポートに差し戻される。
図7は、同一アドレスリクエスト調停回路17の保持情報と主な構成回路を示す図である。同一アドレスリクエスト調停回路は、保持情報として、監視回路が監視状態か否かを示す監視有効フラグM_valid、監視対象アドレスの監視アドレスM_add、監視アドレスと同じアドレスのメモリリクエストの到着順を保持する待ちリクエストリストW_list及び順位情報W_rankを保持する。
図7の例では、待ちリクエストリストW_listは、4つの要求元であるコア/キャッシュ0−3それぞれに1つのエントリを有し、エントリには、有効ビットW_validとエントリID(entry_id)が格納される。要求元のIDとエントリIDにより、4つのリクエストポートRP_0-RP_3内のすべてのリクエストを特定できる。ただし、待ちリクエストリストの構成は、後述する通りこの構成に限定されない。
同一アドレスリクエスト調停回路は、構成回路として、後続の入力リクエスト情報のアドレスR_addと監視アドレスM_addとを比較するアドレスマッチ回路171と、入力リクエストが待ちリクエストリストの先頭か否かを判定する先頭判定論理回路172と、強制アボートされたメモリリクエストが待ちリクエストリストに登録可能な場合に登録するセット信号を生成する監視セット生成論理回路173と、パイプラインでアボートされなかったリクエストが待ちリクエストリストの先頭リクエストの場合に先頭リクエストを削除するリセット信号を生成する監視リセット生成論理回路174と、待ちリクエストリストが空になったか否かを判定する監視終了判定論理回路175とを有する。
図7において、複数の監視アドレスM_addを監視対象にする場合、同一アドレスリクエスト調停回路17は、監視アドレスM_addと、待ちリクエストリストW_listと、順位情報W_rankとのセットを、監視アドレス毎に保持する。
図8は、同一アドレスリクエスト調停回路の入力リクエスト情報に対する処理を示すフローチャート図である。図8は、同一アドレスリクエスト調停回路に、調停回路がアドレス監視中でない状態で入力されるリクエストとそのアドレスを新規登録する処理と、同じアドレスの後続リクエストを追加登録する処理と、同じアドレスで待ちリクエストリストの先頭以外の後続リクエストを強制アボートする処理を有する。
同一アドレスリクエスト調停回路は、最初に、監視有効ビットM_validが有効状態か否かチェックする(S2)。監視有効ビットM_validが「0」の場合、アドレス監視を行っていない状態であり、新たなアドレスを登録可能であることを示す。監視有効ビットM_validが「0」の時リクエスト情報がパイプライン12のステージ0に入力されると、新規のアドレス監視を開始し(S3)、監視有効ビットM_validを「1」にセットし(S4)、そのリクエストを待ちリクエストリストW_listに登録し、順位情報W_rankを更新する(S5)。
待ちリクエストリストには、処理部での資源獲得を待っているリクエストとその順位を識別できる情報が記録されれば良い。図7に示された待ちリクエストリストW_listと順位情報W_rankに限定されないが、図7の例では、待ちリクエストリストW_list内のリクエストの要求元別に保持される有効信号W_valid及びエントリID(entry_id)と、順位情報W_rankとにより待ちリクエストが管理される。具体的には、パイプラインに入力されたステージ0の入力リクエスト情報RQ_inのリクエスト要求元IDのエントリに有効ビットW_valid=1とリクエストエントリID(entry_id)を登録し、順位情報W_rankに待ちリクエストの発生順を登録する。
さらに、同一アドレスリクエスト調停回路は、入力リクエスト情報RQ_inのリクエストアドレスR_Addを監視アドレスM_addに登録する(S6)。同一アドレスリクエスト調停回路は、これ以降、新規登録されたリクエストが回路資源を獲得するまで、監視アドレスと同一アドレスの他のリクエストを追跡し、強制アボートAb3を発行して、先頭リクエストより先に他のリクエストが回路資源を獲得できないように調停する。
リクエストがパイプライン12に入力されたとき監視有効ビットM_validが「1」の場合、後続リクエストについて待ちリストの先頭か否かのチェックと監視アドレスと同一か否かのチェックが行われる(S7)。最初に、同一アドレスリクエスト調停回路は、後続のリクエストが待ちリクエストリストの先頭のリクエストと同じか否かを、待ちリクエストリストW_listと順位情報W_rankとに基づいて判定する(S8)。後続のリクエストが先頭リクエストと一致する場合(S8のYES)、回路資源獲得の機会を先頭で待っているリクエストであるため、同一アドレスリクエスト調停回路は、そのリクエストに対して強制アボートを発行せず、そのためそのリクエストに回路資源獲得の機会を与える。
先頭リクエストと一致しない場合(S8のNO)、同一アドレスリクエスト調停回路は、後続のリクエストのアドレスR_addが監視アドレスM_addと一致するか否かチェックする(S9)。一致する場合(S9のYES)、監視アドレスと競合するリクエストであり且つ待ちリクエストリストにて先頭で待っているリクエストではないことを意味する。そこで、同一アドレスリクエスト調停回路は、そのリクエストに強制アボートAb3を発行し(S10)、パイプラインでそのリクエストに回路資源の獲得を必ず失敗させて、待ちリクエストリストの先頭以外のリクエストに回路資源が獲得されることを防ぐ。
そして、同一アドレスリクエスト調停回路は、強制アボートされたリクエストが待ちリクエストリストに未登録でかつ待ちリクエストリストに空きがある場合(S11のYES)、そのリクエストを待ちリクエストリストに追加登録し、順位情報を更新する(S12)。工程S11がNOの場合、そのリクエストは待ちリクエストリストに追加登録されない。
図7の待ちリクエストリストW_listは、資源節約の観点から、要求元別に1つのエントリしか登録できない。この場合、工程S11では、待ちリクエストリストの要求元に空きがあるか否かの判定だけで良い。1つのエントリしかないので、リストに空きがあれば自分のリクエストは未登録であることを意味する。待ちリクエストリストの別の例については、後で詳述する。
後続のリクエストが、監視アドレスと一致しない場合(S9のNO)、そのリクエストに対して強制アボートは発行されず、制御パイプラインはそのリクエストに回路資源獲得の機会を与える。
図9は、同一アドレスリクエスト調停回路の出力リクエスト情報に対する処理を示すフローチャート図である。出力リクエスト情報(最終ステージNのリクエスト情報)は、コヒーレンシ制御パイプライン12において、リクエストが受理されて回路資源獲得に成功したか、受理されずにアボートされたかを示すアボートフラグABORTを有する。リクエストがアボートされた場合(S21のYES)、そのリクエストはリクエストポートに差し戻されるので、同一アドレスリクエスト調停回路は、そのリクエストを待ちリクエストリストに残したままして、そのリクエストの監視を継続する。
リクエストがアボートされなかった場合(S21のNO)、同一アドレスリクエスト調停回路は、そのリクエストが待ちリクエストW_list内に存在するか否かチェックする(S22)。存在する場合(S22のYES)、つまり、そのリクエストが待ちリクエストの先頭のリクエストだった場合、同一アドレスリクエスト調停回路は、そのリクエストを待ちリクエストリストから削除し、順位情報W_rankを更新する(S23)。さらに、削除した結果待ちリクエストリスト内に残りのリクエストが存在しない場合、つまり、監視アドレスのアクセスを要求していた別のリクエストが存在しない場合(S24のYES)、同一アドレスリクエスト調停回路は、監視有効ビットM_validを「0」に変更して、監視アドレスを有するリクエストの監視を終了する(S25)。リスト内に残りのリクエストが存在する場合(S24のNO)、同一アドレスリクエスト調停回路は、監視有効ビットの変更を行わないで、監視アドレスのリクエストの監視を継続する(S26)。
[同一アドレスリクエスト調停回路の具体例]
次に、同一アドレスリクエスト調停回路17の具体的な動作について説明する。具体的な動作は、リクエストの初回登録と、後続リクエストのチェック及び登録と、待ちリクエストの解除動作と、アドレス監視終了動作とである。
[リクエストの初回登録動作]
図10は、同一アドレスリクエスト調停回路17のリクエストの初回登録の動作を示す図である。図10には、入力リクエスト情報RQ_inに基づいて、監視有効ビットM_valid、監視アドレスM_add、待ちリクエストリストW_list、順位情報W_rankがどのように更新されるかが記載されている。リクエストの初回登録であるので、監視有効ビットM_validは「0」(アドレスの監視を行っていない状態)に、監視アドレスM_addは未登録、待ちリクエストリストW_listは空、順位情報W_rankも空である。
同一アドレスリクエスト調停回路17に入力リクエスト情報RQ_inが入力されたとき監視有効ビットM_validが「0」の場合、アドレスの管理が行われていない状態であるので、調停回路は入力されたメモリアクセスのアドレス等を新たに登録する。すなわち、入力リクエスト情報RQ_inのリクエスト有効ビットR_validの「1」に基づいて、監視有効ビットM_validが「1」にセットされ、監視アドレスM_addが「0x1234567」にセットされ、待ちリクエストリストW_listの要求元0(core_id=0)のエントリに待ち有効ビットW_valid=1と、エントリID(entry_id)=0が登録され、順位情報W_rankの先頭エントリに要求元ID=0がセットされる。この結果、パイプラインに入力されたリクエストが同一アドレスリクエスト調停回路17に登録され、以降その監視アドレスと同じアドレスの後続のリクエストが監視される。
[後続リクエストのチェック及び登録動作]
図11は、同一アドレスリクエスト調停回路17の後続のリクエストのチェック及び登録の動作を示す図である。この例では、後続の入力リクエスト情報RQ_inが、監視アドレスM_addと同じリクエストアドレスR_add、「0x1234567」、を有し、要求元IDがcore_id=1、エントリIDがentry_id=1である。
同一アドレスリクエスト調停回路17は、先頭判定論理回路172により後続リクエストが待ちリクエストリストの先頭リクエストと一致するか否かを判定する。この判定は図8の工程S8に対応する。この例では、待ちリクエストリストW_listの先頭のリクエストである要求元ID(core_id)が「0」でエントリID(entry_id)が「0」であるので、後続リクエストは先頭のリクエストと一致しない。
その結果、先頭判定論理回路172は、アドレスチェック有効ビットchk_valを「1」にし、アドレスマッチ回路171に監視アドレスM_addと後続リクエストのリクエストアドレスR_addとが一致するか否かの判定を行わせる。この判定は図8の工程S9に対応する。この例では、両アドレスが一致し、アドレスマッチ回路171がアドレスマッチ信号add_muchを「1」にし、それにより強制アボートAb3をパイプライン12に通知する。つまり、後続のリクエストは待ちリクエストリストの先頭リクエストではなく、且つ監視アドレスとアドレスが一致する。その結果、同一アドレスリクエスト調停回路17は、強制アボートAb3をパイプラインに通知する。これにより、後続のリクエストの回路資源の獲得が強制的に失敗させられる。
強制アボートが出力された後続のリクエストは、待ちアクセスリストW_listに登録されていなければ、そして、空きエントリがあれば、新たな待ちアクセスとして登録される。そこで、同一アドレスリクエスト調停回路17は、監視セット生成論理回路173に、待ちアクセスリスト内に後続のリクエストを登録すべきか否かをチェックさせる。この判定は図8の工程S11に対応する。待ちリクエストリスト内の後続のリクエストの要求元のエントリが空いている場合、同一アドレスリクエスト調停回路17は、待ちリクエストリストW_listの後続リクエストに対応する要求元のエントリに、有効ビットW_valid「1」と、リクエストコア内のエントリID(entry_id)「1」をセット(登録)する。さらに、順位情報W_rankに要求元ID「1」の順位を「1」に設定する。この結果、強制アボートされた後続のリクエストは、待ちリクエストリストに2番目に待っているリクエストとして登録される。
図7の例では、待ちリクエストリストが要求元別の1つのエントリしか設けられていないので、順位情報W_rankは、最左端を先頭とする4つのエントリに各順位の要求元ID(core_id)を格納する。したがって、図11の状態では、順位情報W_rankには左側から「0」「1」が格納され、先頭の要求元IDが「0」でその次の要求元IDが「1」であることを示している。
[待ちリクエストの解除動作]
図12は、同一アドレスリクエスト調停回路17の待ちリクエストの解除動作を示す図である。パイプラインを通過したリクエストがアボートされなかった場合、そのリクエストは回路資源の獲得に成功したことを意味する。したがって、そのリクエストは、回路資源獲得を待っている待ちリクエストリストから削除され、調停対象から解除される。
同一アドレスリクエスト調停回路17は、待ちリクエストの解除動作を、パイプラインを通過して出力される出力リクエスト情報(パイプラインの最終ステージNのリクエスト情報)に基づいて行う。監視リセット生成論理回路174は、出力リクエスト情報のリクエスト有効ビットR_validが「1」であり、そのアボートフラグABORTが「0」である(リクエストがアボートされてない)場合、そのリクエストを特定する要求元ID(core_id)「0」とエントリID(entry_id)「0」が、待ちリクエストリストW_listに存在するか否かを判定する。この判定は図9の工程S20, S21, S22に対応する。
待ちリクエストリストの先頭以外のリクエストは強制アボートされるので、アボートされなかったリクエストが待ちリクエストリストに存在するか否かの判定は、そのリクエストが先頭リクエストか否かの判定と同じである。存在すると判定した場合、監視リセット生成論理回路174は、待ちリクエストリストW_listの先頭リクエストを削除し、順位情報W_rankを更新するリセット信号を生成する。図12の例では、待ちリクエストリストW_listの要求元IDが「0」のエントリが削除され(有効ビットW_validが「0」に変更)、順位情報W_rankが更新されて最左端の先頭エントリに要求元ID「1」が格納されている。その結果、アボートされなかったリクエストは調停対象から解除される。
図12には示していないが、その後の後続のリクエストの要求元IDが「1」でエントリIDが「1」の場合で、且つパイプラインでアボートされない場合、待ちリクエストリストから削除されて、そのリクエストも調停対象から解除される。
[アドレス監視終了動作]
図13は、同一アドレスリクエスト調停回路17のアドレス監視終了の動作を示す図である。図12において、要求元IDが「1」でエントリIDが「1」のリクエストがパイプラインでアボートされなかった結果、図13では、待ちリクエストリストの要求元ID「1」の有効ビットW_validが「0」に変更された状態になっている。つまり、待ちリクエストリストの有効ビットW_validはすべて「0」にされ、待ちリクエストが存在していない。
監視終了判定論理回路175は、待ちリクエストリストの全ての有効ビットW_validが「0」であることに基づいて、監視有効ビットW_validを「0」にリセットする。その結果、監視有効ビットW_validが「0」にリセットされ、同一アドレスリクエスト調停回路17は、監視アドレスと同じアドレスのリクエストを監視し回路資源の獲得をリクエストの発生順にする調停を終了する。
この状態で、新たにリクエストがパイプラインに入力されると、図10の新規登録の動作で登録された監視アドレスに対してリクエスト間の調停動作が再開する。
図14は、待ちリクエストリストの第1の変形例を示す図である。この待ちリクエストリストW_listは、各要求元(コア/キャッシュ0−3)毎に、複数の待ちエントリ、例えばリクエストポートのエントリ数8と同じ数、を有する。したがって、同じ要求元から同じアドレスに対するメモリリクエストが発生した場合に、全てのメモリリクエストを待ちリストに登録可能である。図14の場合、順位情報W_rankは図7の例と同様に要求元の順位のみを登録して順位を管理する。または、待ちリクエストリストW_listに登録された全てのリクエストの発生順を登録して管理してもよい。
但し、コヒーレンシ制御部の下位レベルにはLLCが設けられ、そのLLCのミスアクセス制御部が下位レベルのコアまたはキャッシュ毎に同じアドレスのメモリリクエストを1つだけに制限してコヒーレンシ制御部に要求する場合は、図7のように要求元別に1つの待ちエントリを有すれば足りる。
図15は、待ちリクエストリストの第2の変形例を示す図である。この待ちリクエストリストW_listは、要求元別に登録されず、監視アドレスと同じアドレスのリクエストを要求元にかかわらず発生順に登録する。エントリ数はできるだけ多いほうが望ましい。また、順位情報W_rankは待ちリクエストリストに登録されている全てのエントリの順位を発生順に記憶し管理する。
[第1の実施の形態の第1の変形例]
図16は、第1の実施の形態の第1の変形例のコヒーレンシ制御部の構成を示す図である。
図5に示したコヒーレンシ制御部では、同一アドレスリクエスト調停回路17が、コア/キャッシュ間調停回路10が出力するコアまたは下位レベルキャッシュからのリクエストについて、監視アドレスと同一のアドレスのリクエスト間の調停を行う。
それに対して、図16に示した変形例のコヒーレンシ制御部では、同一アドレスリクエスト調停回路17が、IOリクエストとリモートリクエストを受け付けるリクエストポートRP_4,RP_5が出力するリクエストも入力し、そのリクエストについても監視アドレスと同一のアドレスのリクエスト間での調停を行う。したがって、同一アドレスリクエストの調停対象が、下位レベルのコアやキャッシュからのメモリアクセスのリクエストに加えて、IOデバイスからのDMA(Direct Memory Access)などに対応するリクエストと、他のCPUからルータRT経由でエントリされるリクエストも調停対象になる。
[第1の実施の形態の第2の変形例]
図17は、第1の実施の形態の第2の変形例のコヒーレンシ制御部の構成を示す図である。図17の第2の変形例では、図16のコヒーレンシ制御部に、ローカルCPU(自分のCPU)からの非キャッシュ可能アドレスに対するリクエストを受け付ける4つのリクエストポートRP_7-RP_10がコアなどの要求元別に追加され、さらに、リモートCPUからの非キャッシュ可能アドレスに対するリクエストを受け付けるリクエストポートRP_11が追加されている。また、処理ユニット20内に非キャッシュ可能アドレスへのリクエストを処理するノンキャッシュアクセス制御部18_1, 18_2が追加されている。そして、同一アドレスリクエスト調停回路17は、プライオリティ調停回路11が出力する入力リクエスト情報RQ_inを入力する。
その結果、同一アドレスリクエスト調停回路17は、リクエストポートRP_0-RP_3にエントリされるローカルからのキャッシュ可能アドレスへのメモリアクセスと、リクエストポートRP_4,RP_5にエントリされるIOデバイスから及びリモートCPUからのキャッシュ可能アドレスに対するリクエストと、さらにローカルとリモートからの非キャッシュ可能アドレスに対するリクエストも監視対象及び調停対象にする。
非キャッシュ可能アドレスへのリクエストが、キャッシュ可能アドレスへのリクエストと同様に、処理ユニット内の処理部の回路資源を獲得し合う場合には、図17の構成により、同一アドレスリクエスト調停回路により、調停対象にすることで、監視アドレスで競合するノンキャッシュアクセスリクエスト間を発生順に処理することができる。
[第2の実施の形態]
図18は、第2の実施の形態におけるキャッシュの構成を示す図である。このキャッシュは、例えば、図1におけるLLC(最上位レベルのキャッシュ)であり、またラストレベルではなくそれより下位レベルのキャッシュでもよい。
図5の第1の実施の形態におけるコヒーレンシ制御部は、複数のLLCとメモリ階層との間に設けられ、LLCでのキャッシュミスに対して発行されたメモリアクセスを入力し、LLCのタグコピーをチェックし、キャッシュヒットすればデータを所持しているLLCに転送オーダーを発行し、キャッシュミスすればメモリ階層にメモリリクエストを発行する。したがって、コヒーレンシ制御部は、複数の下位レベルからのリクエストを受け付けてメモリ階層に対する制御を行う制御パイプラインと、リクエストに対応する処理を実行する処理ユニットを有する構成において、同一アドレスリクエスト調停回路を設けて、同じアドレスに対する複数のリクエストの適切な調停を行う。
図18のキャッシュは、図5のコヒーレンシ制御部と同様の構成を有する。ただし、キャッシュは、コヒーレンシ制御部と異なり、キャッシュメモリのタグメモリ18とデータメモリ19を有する。つまり、キャッシュは、タグメモリのコピーではなくタグメモリ18の原本を有することと、データメモリ19を有することで、コヒーレンシ制御部と異なる。また、キャッシュは、上位レベル(上位レベルのキャッシュやコヒーレンシ制御部)からオーダーを受け付けるリクエストポートRP_12と、上位レベルからメモリ応答を受け付けるリクエストポートRP_13を有することでも、コヒーレンシ制御部と異なる。
一方、キャッシュは、コヒーレンシ制御部と同様に、リクエストポートRPと、コア/キャッシュ間調停回路10と、プライオリティ調停回路11と、キャッシュ制御パイプライン120を有し、さらに、ミスアクセス制御部14、オーダー制御部15、リプレースバッファ16などの処理ユニット20を有する。但し、ミスアクセス制御部は上位レベル(上位レベルのキャッシュやコヒーレンシ制御部)にメモリリクエストを発行する。図5のコヒーレンシ制御部のミスアクセス制御部は、上位レベルのメモリ階層にメモリリクエストを発行するとともにリモート(他のCPU)にもリクエストを発行している。
したがって、図18のキャッシュでも、コヒーレンシ制御部と同様に、キャッシュ制御パイプライン120で、入力されたリクエストが入力タイミングに依存して処理ユニットの回路資源を獲得できずにアボートされたり獲得できたりして、同じアドレスのリクエスト間で不均衡な処理が発生する。そこで、図18のキャッシュは、そのような不均衡な処理を防ぐために、同一アドレスリクエスト調停回路17を有する。
キャッシュ制御パイプライン120の構成は、図6と同様であり、同一アドレスリクエスト調停回路17の構成と機能も、図7,8,9と同様である。すなわち、キャッシュ制御パイプライン120は、入力されたリクエストについて、排他アドレスと競合するか否か、処理ユニット20_2の回路資源を獲得できるか否かなどの、処理ユニットで処理可能か否かをチェックする。
そして、同一アドレスリクエスト調停回路17は、監視アドレスと同一のアドレスを有するリクエストの入力(投入)順を保持する待ちリクエストリストに、そのメモリリクエストが処理ユニットの20の回路資源を獲得して処理を実行されるまで保持し、同一アドレスのリクエストをその発生順に回路資源が獲得できるよう調停する。
第2の実施の形態においても、図17と同様に、非キャッシュ可能アドレスのリクエストを受け付けるリクエストポートと、その処理を実行するノンキャッシュアクセス制御部とを有し、同一アドレスリクエスト調停回路が、キャッシュ可能アドレスのリクエストに加えて、非キャッシュ可能アドレスのリクエストも、同一アドレスに対するリクエスト間の調停を行うようにしてもよい。
以上のとおり、本実施の形態によれば、同一アドレスリクエスト調停回路を設けたことにより、コヒーレンシ制御パイプラインやキャッシュ制御パイプラインでの、同一アドレスのリクエストに回路資源を獲得させるか否かの制御によるリクエスト間の不均衡を抑制することができる。本実施の形態は、コヒーレンシ制御部やキャッシュ(LLCまたはそれ以外のレベルのキャッシュ)に適用される。
以上の実施の形態をまとめると,次の付記のとおりである。
(付記1)
複数の演算処理部と、
メモリの制御を行う第1の制御部とを有し、
前記第1の制御部は、
前記メモリのメモリ空間に対するリクエストを受け付けるリクエストポートと、
前記リクエストに対応する処理を実行する処理ユニットと、
前記リクエストポートから入力されたリクエストが前記処理ユニットで処理実行可能か否かを判定し、前記リクエストが処理実行不可の場合前記リクエストについて第1のアボート処理を行い、処理実行可能の場合前記処理ユニットに処理を発行する制御パイプラインと、
前記処理実行不可によりアボートされた同一のアドレスに対するリクエストの発生順序を保持し、前記制御パイプラインに入力されたリクエストのうち前記同一のアドレスを有し且つ前記発生順序の先頭以外のリクエストについて第2のアボート処理を行う同一アドレスリクエスト調停部と、を有する演算処理装置。
(付記2)
さらに、前記複数の演算処理部により共有される共有キャッシュと、
前記共有キャッシュのコヒーレンシを制御するコヒーレンシ制御部とを有し、
前記コヒーレンシ制御部は、前記第1の制御部を有し、
前記リクエストポートは、前記共有キャッシュからのリクエストを受け付ける第1のリクエストポートを有する、付記1に記載の演算処理装置。
(付記3)
前記リクエストポートは、さらに、前記共有キャッシュ以外からのキャッシュ可能アドレスへのリクエストを受け付ける第2のリクエストポートと、非キャッシュ可能アドレスへのリクエストを受け付ける第3のリクエストポートのうち、いずれか一つまたは両方を有する、付記2に記載の演算処理装置。
(付記4)
さらに、前記複数の演算処理部により共有される共有キャッシュを有し、
前記共有キャッシュは、前記第1の制御部を有し、
前記リクエストポートは、下位レベルのキャッシュからのリクエストを登録する第1のリクエストポートを有する、付記1に記載の演算処理装置。
(付記5)
前記リクエストポートは、さらに、非キャッシュ可能アドレスへのリクエストを受け付ける第3のリクエストポートを有する、付記4に記載の演算処理装置。
(付記6)
前記制御パイプラインは、前記処理実行可能か否かの判定を、前記処理ユニットが処理中のリクエストのアドレスと競合するか否かに基づいて行う、付記1に記載の演算処理装置。
(付記7)
前記制御パイプラインは、前記処理実行可能か否かの判定を、前記処理ユニット内の処理に必要な回路資源を獲得可能か否かに基づいて行う、付記1に記載の演算処理装置。
(付記8)
前記リクエストポートは、前記リクエストの要求元別に設けられ、
前記同一アドレスリクエスト調停部は、前記発生順序を前記要求元の順序で保持する、付記1に記載の演算処理装置。
(付記9)
前記同一アドレスリクエスト調停部は、前記同一のアドレスを保持する監視アドレス保持部と、前記要求元それぞれで少なくとも1つの前記アボートされたリクエスト情報を保持する待ちリクエストリストと、前記要求元の発生順序を示す順序情報保持部とを有する、付記8に記載の演算処理装置。
(付記10)
前記同一アドレスリクエスト調停部は、複数の前記同一のアドレス別に前記発生順序を保持し、前記複数の同一のアドレス別に、前記第2のアボート処理を行う、付記1に記載の演算処理装置。
(付記11)
前記コヒーレンシ制御部内の処理ユニットは、
下位レベルのキャッシュメモリのタグメモリのコピーと、
前記リクエストに対応する前記メモリ方向の上位レベルへのアクセス要求を発行し、前記メモリから応答を受信するまでの間、後続の同一アドレスへのリクエストを受け付けないミスアクセス制御部と、
前記リクエストに対応する前記メモリ方向とは逆の下位レベルへの処理オーダーを発行し、前記処理オーダーが完了するまでの間、後続の同一アドレスへのリクエストを受け付けないオーダー制御部と、
下位レベルにあるキャッシュから追い出されるデータを前記メモリに書き戻す(write back)要求を発行し、前記書き戻しが完了するまでの間、後続の同一アドレスへのリクエストを受け付けないリプレースバッファと、
のうち、少なくとも一つを有する、付記2に記載の演算処理装置。
(付記12)
前記共有キャッシュ内の前記処理ユニットは、
自分のキャッシュメモリのタグメモリ及びデータメモリと、
前記リクエストに対応する前記メモリ方向の上位レベルへのアクセス要求を発行し、前記メモリから応答を受信するまでの間、後続の同一アドレスへのリクエストを受け付けないミスアクセス制御部と、
前記リクエストに対応する前記メモリ方向とは逆の下位レベルへの処理オーダーを発行し、前記処理オーダーが完了するまでの間、後続の同一アドレスへのリクエストを受け付けないオーダー制御部と、
下位レベルにあるキャッシュから追い出されるデータを前記メモリに書き戻す要求を発行し、前記書き戻しが完了するまでの間、後続の同一アドレスへのリクエストを受け付けないリプレースバッファと、
のうち、少なくとも一つを有する、付記4に記載の演算処理装置。
(付記13)
複数の演算処理部と、
メモリの制御を行う第1の制御部とを有し、
前記第1の制御部は、
前記メモリのメモリ空間に対するリクエストを受け付けるリクエストポートと、
前記リクエストに対応する処理を実行する処理ユニットとを有する演算処理装置の制御方法であって、
前記リクエストポートから入力されたリクエストが前記処理ユニットで処理実行可能か否かを判定し、前記リクエストが処理実行不可の場合前記リクエストについて第1のアボート処理を行い、処理実行可能の場合前記処理ユニットに処理を発行し、
前記処理実行不可によりアボートされた同一のアドレスに対するリクエストの発生順序を保持し、前記入力されたリクエストのうち前記同一のアドレスを有し且つ前記発生順序の先頭以外のリクエストについて第2のアボート処理を行う、演算処理装置の制御方法。
1:CPUチップ、演算処理装置、マイクロプロセッサ、プロセッサ
CORE:CPUコア、コア、演算処理部
L1D, L1I:L1キャッシュ
LLC:Last Level Cache、最上位レベルキャッシュ
CHR:コヒーレンシ制御部
RP:リクエストポート
10:コア/キャッシュ間調停回路
11:プライオリティ調整回路
20:処理ユニット
18:LLC-TAG、LLC-DATA
13:LLC-TAG-COPY
14:ミスアクセス制御部
15:オーダー制御部
16:リプレース制御部
12:コヒーレンシ制御パイプライン
120:キャッシュ制御パイプライン
121:アドレス・TAGチェック部
122:処理判定部
123:資源判定部
17:同一アドレスリクエスト調停回路
M_valid:監視回路バリッドフラグ
M_add:監視アドレス
W_list:待ちリクエストリスト
W_rank:順番情報
171:アドレスマッチ回路
Ab3:強制アボート信号
Ab1,Ab2:通常アボート信号(排他アドレスアボート、資源非獲得アボート)

Claims (10)

  1. 複数の演算処理部と、
    メモリの制御を行う第1の制御部とを有し、
    前記第1の制御部は、
    前記メモリのメモリ空間に対するリクエストを受け付けるリクエストポートと、
    前記リクエストに対応する処理を実行する処理ユニットと、
    前記リクエストポートから入力されたリクエストが前記処理ユニットで処理実行可能か否かを判定し、前記リクエストが処理実行不可の場合前記リクエストについて第1のアボート処理を行い前記第1のアボート処理したリクエストを前記リクエストポートに残し、前記リクエストが処理実行可能の場合前記処理ユニットに前記処理の要求を発行する制御パイプラインと、
    監視対象のアドレスである監視アドレスと同一のアドレスを有するリクエストの前記制御パイプラインへの入力順である発生順序を保持し、
    前記制御パイプラインに入力されたリクエストのうち前記監視アドレスと同一のアドレスを有し且つ前記発生順序の先頭以外のリクエストについて、前記リクエストが前記処理実行可能または不可にかかわらず第2のアボート処理を行って、前記制御パイプラインが前記処理ユニットに前記処理の要求を発行することを防止し、
    前記リクエストが前記第1のアボート処理または前記第2のアボート処理された場合に、当該リクエストについて保持している前記発生順序は更新せず、
    前記制御パイプラインが前記監視アドレスと同一のアドレスを有し且つ前記発生順序の先頭にあるリクエストについての前記処理の要求を前記処理ユニットに発行した場合に、前記発生順序を当該リクエストを除いた順序に更新する、同一アドレスリクエスト調停部と、を有し、
    前記第1のアボート処理または前記第2のアボート処理をされて前記リクエストポートに残されたリクエストは、前記制御パイプラインに再度入力される、演算処理装置。
  2. さらに、前記複数の演算処理部により共有される共有キャッシュと、
    前記共有キャッシュのコヒーレンシを制御するコヒーレンシ制御部とを有し、
    前記コヒーレンシ制御部は、前記第1の制御部を有し、
    前記リクエストポートは、前記共有キャッシュからのリクエストを受け付ける第1のリクエストポートを有する、請求項1に記載の演算処理装置。
  3. 前記リクエストポートは、さらに、前記共有キャッシュ以外からのキャッシュ可能アドレスへのリクエストを受け付ける第2のリクエストポートと、非キャッシュ可能アドレスへのリクエストを受け付ける第3のリクエストポートのうち、いずれか一つまたは両方を有する、請求項2に記載の演算処理装置。
  4. さらに、前記複数の演算処理部により共有される共有キャッシュを有し、
    前記共有キャッシュは、前記第1の制御部を有し、
    前記リクエストポートは、前記メモリ側とは逆方向のレベルのキャッシュからのリクエストを登録する第1のリクエストポートを有する、請求項1に記載の演算処理装置。
  5. 前記リクエストポートは、さらに、非キャッシュ可能アドレスへのリクエストを受け付ける第3のリクエストポートを有する、請求項4に記載の演算処理装置。
  6. 前記制御パイプラインは、前記処理実行可能か否かの判定を、前記処理ユニットが処理中のリクエストのアドレスと競合するか否かに基づいて行う、請求項1に記載の演算処理装置。
  7. 前記制御パイプラインは、前記処理実行可能か否かの判定を、前記処理ユニット内の処理に必要な回路資源を獲得可能か否かに基づいて行う、請求項1に記載の演算処理装置。
  8. 前記リクエストポートは、前記リクエストの要求元別に設けられ、
    前記同一アドレスリクエスト調停部は、前記要求元それぞれで1つの前記アボート処理されたリクエスト情報を保持し、前記発生順序を前記要求元の順序で保持する、請求項1に記載の演算処理装置。
  9. 前記同一アドレスリクエスト調停部は、前記監視アドレスを保持する監視アドレス保持部と、前記要求元それぞれで1つの前記アボート処理されたリクエスト情報を保持する待ちリクエストリストと、前記発生順序を前記要求元の順序で保持する順序情報保持部とを有する、請求項8に記載の演算処理装置。
  10. 複数の演算処理部と、
    メモリの制御を行う第1の制御部とを有し、
    前記第1の制御部は、
    前記メモリのメモリ空間に対するリクエストを受け付けるリクエストポートと、
    前記リクエストに対応する処理を実行する処理ユニットと、
    制御パイプラインとを有する演算処理装置の制御方法であって、
    前記制御パイプラインが、前記リクエストポートから入力されたリクエストが前記処理ユニットで処理実行可能か否かを判定し、前記リクエストが処理実行不可の場合前記リクエストについて第1のアボート処理を行い前記第1のアボート処理したリクエストを前記リクエストポートに残し、前記リクエストが処理実行可能の場合前記処理ユニットに前記処理の要求を発行し、
    同一アドレスリクエスト調停部が、
    監視対象のアドレスである監視アドレスと同一のアドレスを有するリクエストの前記制御パイプラインへの入力順である発生順序を保持し、
    前記制御パイプラインに入力されたリクエストのうち前記監視アドレスと同一のアドレスを有し且つ前記発生順序の先頭以外のリクエストについて、前記リクエストが前記処理実行可能または不可にかかわらず第2のアボート処理を行って、前記制御パイプラインが前記処理ユニットに前記処理の要求を発行することを防止し、
    前記リクエストが前記第1のアボート処理または前記第2のアボート処理された場合に、当該リクエストについて保持している前記発生順序は更新せず、
    前記制御パイプラインが前記監視アドレスと同一のアドレスを有し且つ前記発生順序の先頭にあるリクエストについての前記処理の要求を前記処理ユニットに発行した場合に、前記発生順序を当該リクエストを除いた順序に更新し、
    前記リクエストポートが、前記第1のアボート処理または前記第2のアボート処理をされて前記リクエストポートに残されたリクエストを、前記制御パイプラインに再度入力させる、演算処理装置の制御方法。
JP2016080227A 2016-04-13 2016-04-13 演算処理装置及び演算処理装置の制御方法 Active JP6792139B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016080227A JP6792139B2 (ja) 2016-04-13 2016-04-13 演算処理装置及び演算処理装置の制御方法
US15/458,074 US10067743B2 (en) 2016-04-13 2017-03-14 Arithmetic processing device and control method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016080227A JP6792139B2 (ja) 2016-04-13 2016-04-13 演算処理装置及び演算処理装置の制御方法

Publications (2)

Publication Number Publication Date
JP2017191435A JP2017191435A (ja) 2017-10-19
JP6792139B2 true JP6792139B2 (ja) 2020-11-25

Family

ID=60038218

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016080227A Active JP6792139B2 (ja) 2016-04-13 2016-04-13 演算処理装置及び演算処理装置の制御方法

Country Status (2)

Country Link
US (1) US10067743B2 (ja)
JP (1) JP6792139B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10592424B2 (en) * 2017-07-14 2020-03-17 Arm Limited Range-based memory system
CN109918043B (zh) * 2019-03-04 2020-12-08 上海熠知电子科技有限公司 一种基于虚拟通道的运算单元共享方法和系统
US11416431B2 (en) 2020-04-06 2022-08-16 Samsung Electronics Co., Ltd. System with cache-coherent memory and server-linking switch

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050138289A1 (en) * 2003-12-18 2005-06-23 Royer Robert J.Jr. Virtual cache for disk cache insertion and eviction policies and recovery from device errors
US20090198694A1 (en) * 2008-01-31 2009-08-06 Tessil Thomas Resolving conflicts in a transactional execution model of a multiprocessor system
WO2013084314A1 (ja) 2011-12-07 2013-06-13 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Also Published As

Publication number Publication date
JP2017191435A (ja) 2017-10-19
US20170300298A1 (en) 2017-10-19
US10067743B2 (en) 2018-09-04

Similar Documents

Publication Publication Date Title
CN108885583B (zh) 高速缓存存储器访问
US6640287B2 (en) Scalable multiprocessor system and cache coherence method incorporating invalid-to-dirty requests
US8180981B2 (en) Cache coherent support for flash in a memory hierarchy
US6636949B2 (en) System for handling coherence protocol races in a scalable shared memory system based on chip multiprocessing
US8131935B2 (en) Virtual barrier synchronization cache
US8412888B2 (en) Cache-based speculation of stores following synchronizing operations
US8799588B2 (en) Forward progress mechanism for stores in the presence of load contention in a system favoring loads by state alteration
US6272602B1 (en) Multiprocessing system employing pending tags to maintain cache coherence
US8095733B2 (en) Virtual barrier synchronization cache castout election
US8793442B2 (en) Forward progress mechanism for stores in the presence of load contention in a system favoring loads
US9367348B2 (en) Protecting the footprint of memory transactions from victimization
US9501411B2 (en) Cache backing store for transactional memory
US7003635B2 (en) Generalized active inheritance consistency mechanism having linked writes
US7243194B2 (en) Method to preserve ordering of read and write operations in a DMA system by delaying read access
US20050188159A1 (en) Computer system supporting both dirty-shared and non dirty-shared data processing entities
US7603524B2 (en) Method and apparatus for filtering snoop requests using multiple snoop caches
JP2008535093A5 (ja)
US11321248B2 (en) Multiple-requestor memory access pipeline and arbiter
JP6687845B2 (ja) 演算処理装置及び演算処理装置の制御方法
JP6792139B2 (ja) 演算処理装置及び演算処理装置の制御方法
JP2020003959A (ja) 情報処理装置、演算処理装置及び情報処理装置の制御方法
US9367461B2 (en) Ordering constraint management within coherent memory systems
JP2008310414A (ja) コンピュータシステム
JP7100237B2 (ja) 演算処理装置及び演算処理装置の制御方法
JPH0962578A (ja) 情報処理装置及びその制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190115

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190612

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190806

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191003

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200317

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200513

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201019

R150 Certificate of patent or registration of utility model

Ref document number: 6792139

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150