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

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

Info

Publication number
JP6183049B2
JP6183049B2 JP2013168990A JP2013168990A JP6183049B2 JP 6183049 B2 JP6183049 B2 JP 6183049B2 JP 2013168990 A JP2013168990 A JP 2013168990A JP 2013168990 A JP2013168990 A JP 2013168990A JP 6183049 B2 JP6183049 B2 JP 6183049B2
Authority
JP
Japan
Prior art keywords
cache
request
cache request
thread
req
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
JP2013168990A
Other languages
English (en)
Other versions
JP2015036941A (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 JP2013168990A priority Critical patent/JP6183049B2/ja
Priority to US14/337,311 priority patent/US20150052307A1/en
Publication of JP2015036941A publication Critical patent/JP2015036941A/ja
Application granted granted Critical
Publication of JP6183049B2 publication Critical patent/JP6183049B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/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
    • 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
    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code

Landscapes

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

Description

本発明は、演算処理装置及び演算処理装置の制御方法に関する。
キャッシュメモリが介在せずにアクセスされるメモリ空間であるノンキャッシュ空間へのアクセス命令を実行可能なCPU(Central Processing Unit)がある。ノンキャッシュ空間へのアクセス命令は、アクセス対象のデータがキャッシュメモリに保持されることなくCPU外部のデバイス等にアクセスする。ノンキャッシュリクエストによるノンキャッシュ空間へのアクセスは、ノンキャッシャブル空間として定義されたアドレス空間に対する読み書きとして定義される。例えば、デバイスのドライバが、割り込み処理として、複数のノンキャッシュライト動作と、そのライト動作を確認するためのノンキャッシュリード動作とを行うアクセスがある。
ノンキャッシュリクエストに係る動作について説明する。CPUのコア部では、命令コントローラから発行されたノンキャッシュリクエストを受けた1次キャッシュコントローラは、直前に先行するノンキャッシュリクエストに対応する2次キャッシュ部からのノンキャッシュテイクン応答の有無を確認する。1次キャッシュコントローラは、先行するノンキャッシュリクエストに対応するノンキャッシュテイクン応答があるまで、後続のノンキャッシュリクエストの発行を待機する。1次キャッシュコントローラは、ノンキャッシュテイクン応答待ちの状態でない、すなわち先行するノンキャッシュリクエストに対応するノンキャッシュテイクン応答を受けている場合には、後続のノンキャッシュリクエストを2次キャッシュ部に発行する。
CPUの2次キャッシュ部は、コア部からノンキャッシュリクエストを受けると、CPUのシステムコントローラにノンキャッシュリクエストを発行し、そのコア部に対してノンキャッシュテイクン応答を返す。システムコントローラは、受けたノンキャッシュリクエストをデバイス側に発行し、デバイス側でのリクエスト処理が完了したら、リクエストの発行元に対して完了通知を発行する。
特開2011−117859号公報
CPUのコア部の命令コントローラから、ノンキャッシュライトのリクエスト及びノンキャッシュリードのリクエストがそれぞれ複数発行される場合がある。このとき、1次キャッシュコントローラは、先行するノンキャッシュリクエスト(ノンキャッシュライト又はノンキャッシュリード)を2次キャッシュ部に対して発行した後、ノンキャッシュテイクン応答が2次キャッシュ部から返ってくるまで、後続のノンキャッシュリクエストの発行を待機する。
先行するノンキャッシュリクエストに対応する2次キャッシュ部からのノンキャッシュテイクン応答が返ってくると、1次キャッシュコントローラは、ノンキャッシュライトのリクエスト及びノンキャッシュリードのリクエストがともに発行可能な状態になる。一般に、ノンキャッシュライトのリクエストは、ノンキャッシュリードのリクエストよりもプライオリティが高く設定される。したがって、1次キャッシュコントローラは、ノンキャッシュライトのリクエスト及びノンキャッシュリードのリクエストの両方のリクエストの発行を待機している場合には、調停を行い、ノンキャッシュライトのリクエストを2次キャッシュ部に発行する。
ここで、例えば、スレッド0とスレッド1の2つのスレッドを実行可能なマルチスレッドのコア部において、ノンキャッシュライトのリクエストがスレッド0で、ノンキャッシュリードのリクエストがスレッド1で、命令コントローラから1次キャッシュコントローラにそれぞれ複数発行されたとする。この場合、前述した調停によれば、スレッド0のノンキャッシュライトのリクエストが発行され続けられ、スレッド1のノンキャッシュリードのリクエストが待たされ続けることになる。例えば、スレッド0のノンキャッシュライト動作で書き込んだ情報を、スレッド1のノンキャッシュリード動作で読み出すことで、次のステータスに遷移するようなプログラムでは、ステータスが遷移するまでに長い時間を要してしまう。このように、マルチスレッドで動作するCPUのコア部において、あるスレッドの処理が停滞して、命令の処理能力でスレッドに偏りが生じることは望ましくない。
1つの側面では、本発明の目的は、複数のスレッドで動作する演算処理装置において、ノンキャッシュリクエストの発行効率を改善し、複数のスレッドの処理能力に偏りが生じることを防止することにある。
演算処理装置の一態様は、それぞれアクセス対象のデータがキャッシュメモリに保持されることなくアクセスを行う第1のノンキャッシュリクエストと、第1のノンキャッシュリクエストより優先度が低い第2のノンキャッシュリクエストとを出力する命令制御部と、命令制御部が出力したノンキャッシュリクエストを発行する発行制御部とを有する。発行制御部は、命令制御部が出力した、複数のスレッドのうちの第1のスレッドの第1のノンキャッシュリクエストと複数のスレッドのうちの第2のスレッドの第2のノンキャッシュリクエストとを調停して発行する場合、第1のノンキャッシュリクエストに先行する第1のスレッドの先行ノンキャッシュリクエストの発行後、発行した先行ノンキャッシュリクエストに対する応答が有ることにより、調停対象の第1のノンキャッシュリクエストと第2のノンキャッシュリクエストとが発行可能状態になったとき、第2のノンキャッシュリクエストを、第1のノンキャッシュリクエストよりも優先して発行する。
発明の一態様においては、第1のスレッドの第1のノンキャッシュリクエストと第2のスレッドの第2のノンキャッシュリクエストとを調停して発行する場合、第2のノンキャッシュリクエストが待たされ続けることがなく、スレッドの処理能力に偏りが生じることを防止することができる。
本発明の実施形態における演算処理装置の構成例を示す図である。 本実施形態におけるノンキャッシュリクエストの発行フローを示す図である。 本実施形態における1次キャッシュコントローラの構成例を示す図である。 本実施形態におけるスレッド調停部(リクエスト制御部)の構成例を示す図である。 本実施形態におけるスレッド調停部(フラグ生成制御部)の構成例を示す図である。 本実施形態におけるスレッド調停部(フラグ生成制御部)の構成例を示す図である。 本実施形態における演算処理装置の動作例を示すタイミングチャートである。
以下、本発明の実施形態を図面に基づいて説明する。
図1は、本発明の一実施形態における演算処理装置としてのCPU(Central Processing Unit)の構成例を示す図である。本実施形態におけるCPU10は、複数のコア部20、2次キャッシュ部30、及びシステムコントローラ40を有する。
コア部20の各々は、演算器21と、命令をデコードして命令の実行を制御する命令コントローラ22と、命令コントローラ22からリクエスト(要求)を受け取る1次キャッシュコントローラ23と、データを保持する1次キャッシュメモリ24とを有する。なお、本実施形態ではコア部20は、マルチスレッド(複数のスレッド)で動作するものとし、例えばスレッド0とスレッド1の2つのスレッドを実行可能であるとする。
2次キャッシュ部30は、コア部20の1次キャッシュコントローラ23からメモリアクセスのリクエストやアクセス対象のデータがキャッシュメモリに保持されることなくアクセスを行うノンキャッシュリクエストを受け取る2次キャッシュコントローラ31と、データを保持する2次キャッシュメモリ32とを有する。システムコントローラ40は、CPU10外部のデバイス(外部装置)51とのインタフェースやメインメモリ52とのインタフェースや他CPU53とのインタフェース等を制御する。
本実施形態におけるCPU10は、コア部20の1次キャッシュコントローラ23によるノンキャッシュリクエストの発行過程において、一方のスレッドのノンキャッシュライトのリクエスト及び他方のスレッドのノンキャッシュリードのリクエストとを調停して発行する場合、ノンキャッシュリードのリクエストが待たされ続けないように発行を制御する。そこで、本実施形態では、図3に示すように1次キャッシュコントローラ23に、リクエスト調停部301に加え、スレッド調停部302を設ける。
図3は、本実施形態における1次キャッシュコントローラ23の構成例を示す図である。リクエスト調停部301は、各リクエストに設定されたプライオリティ(優先度)に従ってリクエストの発行を制御する。本実施形態において、リクエスト発行のプライオリティは、リクエストReq−Aが最も高く、リクエストReq−A、Req−B、Req−C、Req−D、Req−Eの順にプライオリティが低くなり、リクエストReq−Eが最も低いとする。また、リクエストReq−Bがアクセス対象のデータがキャッシュメモリに保持されることなくライトアクセスを行うノンキャッシュライト(NCWT)のリクエストであり、リクエストReq−Cがアクセス対象のデータがキャッシュメモリに保持されることなくリードアクセスを行うノンキャッシュリード(NCRD)のリクエストである。なお、リクエストReq−A、Req−D、Req−Eは、ノンキャッシュリクエストとは異なるリクエストである。
スレッド調停部302は、あるスレッドのノンキャッシュライトのリクエストの発行を、他のスレッドのリクエストの滞留状態に応じて制御する。スレッド調停部302は、命令コントローラ22からあるスレッドのノンキャッシュライトのリクエストが発行された場合には、他のスレッドのノンキャッシュリードのリクエストの滞留状態を示すフラグを参照する。そして、スレッド調停部302は、他のスレッドのノンキャッシュリードのリクエストがリクエスト調停部301に滞留している場合には、受けたノンキャッシュライトのリクエストをリクエスト調停部301に送ることを抑止し、他のスレッドのノンキャッシュリードのリクエストの発行を可能にする。
図2は、本実施形態におけるノンキャッシュリクエストの発行フローを示す図である。
まず、コア部20の命令コントローラ22が、コア部20の1次キャッシュコントローラ23に対してノンキャッシュリクエスト(ノンキャッシュライト又はノンキャッシュリード)を発行する(S101)。
1次キャッシュコントローラ23は、命令コントローラ22からのノンキャッシュリクエストを受け付ける(S102)。続いて、1次キャッシュコントローラ23は、先行するノンキャッシュリクエストに対する応答であるノンキャッシュテイクン応答の有無を確認する(S103)。先行するノンキャッシュリクエストに対応するノンキャッシュテイクン応答がない場合には、1次キャッシュコントローラ23は、ノンキャッシュリクエストを待機させる(S104)。
先行するノンキャッシュリクエストに対応するノンキャッシュテイクン応答がある場合には、1次キャッシュコントローラ23は、受けたノンキャッシュリクエストがノンキャッシュライトのリクエストであれば、スレッド調停部302に送る(S105のyes)。一方、1次キャッシュコントローラ23は、受けたノンキャッシュリクエストがノンキャッシュライトのリクエストでない、すなわちノンキャッシュリードのリクエストであれば、リクエスト調停部301に送る(S105のno)。
スレッド調停部302は、先行するリクエストがノンキャッシュライトのリクエストであり、かつノンキャッシュライトよりもリクエスト発行のプライオリティが低いリクエストが発行待ちであることを示す保留情報としてのフラグをスレッド毎に有している。スレッド調停部302は、それらのフラグの状態によって、受けたノンキャッシュライトのリクエストが発行可能であるか否かを判断する。スレッド調停部302は、受けたノンキャッシュライトのリクエストが発行可能であると判断した場合には、そのノンキャッシュライトのリクエストをリクエスト調停部301に送る。一方、スレッド調停部302は、受けたノンキャッシュライトのリクエストが発行可能ではないと判断した場合には、そのノンキャッシュライトのリクエストをリクエスト調停部301に送ることを抑止する(S106)。
リクエスト調停部301は、リクエスト発行のプライオリティに従って調停するプライオリティ制御により、リクエストを2次キャッシュ部30に発行する。このようにして、コア部20の1次キャッシュコントローラ23は、2次キャッシュ部30に対してノンキャッシュリクエストを発行する(S107、S108)。
2次キャッシュ部30は、1次キャッシュコントローラ23からのノンキャッシュリクエストを受け付ける(S109)。続いて、2次キャッシュ部30は、受け取ったノンキャッシュリクエストをシステムコントローラ40に発行し(S110)、そのコア部に対してノンキャッシュテイクン応答を返す(S111)。ここで、2次キャッシュ部30は、システムコントローラが発行可能なノンキャッシュリクエストの数を管理している。
システムコントローラ40は、2次キャッシュ部30からのノンキャッシュリクエストを受け付けると、それをデバイス側に発行し(S112)、デバイス側でのリクエストに応じた処理が完了したら、リクエストの発行元に対して完了通知を発行する(S113)。
以下、本実施形態におけるスレッド調停部302について説明する。スレッド調停部302は、リクエスト制御部を有するとともに、フラグ生成制御部をスレッド毎に有する。
図4は、本実施形態におけるスレッド調停部302のリクエスト制御部の構成例を示す図である。リクエスト制御部は、論理積演算回路(AND回路)401、402、404、及び論理和演算回路(OR回路)403を有する。AND回路401は、信号Req−B−thread_id及びフラグTh0_Pending_Flagが入力され、信号Req−B−thread_idと反転したフラグTh0_Pending_Flagとの論理積演算した結果を出力する。AND回路402は、信号Req−B−thread_id及びフラグTh1_Pending_Flagが入力され、反転した信号Req−B−thread_idと反転したフラグTh1_Pending_Flagとの論理積演算した結果を出力する。
ここで、信号Req−B−thread_idは、ノンキャッシュライトのリクエストReq−Bを発行したスレッドを示す信号であり、スレッド0が発行した場合には値が0であり、スレッド1が発行した場合には値が1である。信号Req−B−thread_idは、ノンキャッシュライトのリクエストReq−Bとともに、命令コントローラ22から出力される。
また、フラグTh0_Pending_Flagは、ノンキャッシュライトのリクエストよりもリクエスト発行のプライオリティが低いスレッド0のリクエスト(Req−C、Req−D、Req−E)が発行待ち、又はスレッド0のノンキャッシュリードのリクエストが発行待ちである場合に、値が1となるフラグである。フラグTh1_Pending_Flagは、ノンキャッシュライトのリクエストよりもリクエスト発行のプライオリティが低いスレッド1のリクエスト(Req−C、Req−D、Req−E)が発行待ち、又はスレッド1のノンキャッシュリードのリクエストが発行待ちである場合に、値が1となるフラグである。フラグTh0_Pending_Flag、Th1_Pending_Flagは、スレッド調停部302のフラグ生成制御部で生成される。
OR回路403は、AND回路401、402の出力が入力され、それらを論理和演算した結果を出力する。AND回路404は、ノンキャッシュライトのリクエストReq−B及びOR回路403の出力が入力され、それらを論理積演算して出力する。
図4に示したスレッド調停部302のリクエスト制御部は、ノンキャッシュライトのリクエストReq−Bを発行したスレッドとは異なるスレッドのフラグTh0_Pending_Flag、Th1_Pending_Flagの値が1であるときには、OR回路403の出力が0となり、ノンキャッシュライトのリクエストReq−Bをリクエスト調停部301に発行することを抑止する。一方、ノンキャッシュライトのリクエストReq−Bを発行したスレッドとは異なるスレッドのフラグTh0_Pending_Flag、Th1_Pending_Flagの値が0であるときには、OR回路403の出力が1となり、ノンキャッシュライトのリクエストReq−Bをリクエスト調停部301に発行する。
図5は、本実施形態におけるスレッド調停部302のスレッド0フラグ生成制御部の構成例を示す図である。スレッド0に係るフラグ生成制御部は、AND回路501、502、505、506、OR回路503、507、509、及びラッチ回路504、508を有する。
AND回路501は、信号Req−B_TKND、Req−B_TKID、Th0_Req−CDE_Pendが入力され、信号Req−B_TKND、Req−B_TKID、Th0_Req−CDE_Pendを論理積演算した結果を出力する。AND回路502は、信号Th0_Req−CDE_TKND及びラッチ回路504の出力であるフラグTh0_Req−CDE_Pending_Flagが入力され、反転したTh0_Req−CDE_TKNDとフラグTh0_Req−CDE_Pending_Flagとの論理積演算した結果を出力する。OR回路503は、AND回路501、502の出力が入力され、それらを論理和演算した結果を出力する。ラッチ回路504は、OR回路503の出力をラッチし、フラグTh0_Req−CDE_Pending_Flagとして出力する。
ここで、信号Req−B_TKNDは、リクエスト調停部301がノンキャッシュライトのリクエストReq−Bを2次キャッシュ部30に対して発行したことを示す信号である。また、信号Req−B_TKIDは、発行された信号Req−B_TKNDに対応するノンキャッシュライトのリクエストReq−Bを発行したスレッドを示す信号であり、スレッド0である場合には値が0であり、スレッド1である場合には値が1である。信号Th0_Req−CDE_Pendは、ノンキャッシュライトのリクエストよりもリクエスト発行のプライオリティが低いリクエストReq−C、Req−D、Req−Eのいずれかのリクエストがスレッド0で発行待ちであることを示す信号である。
AND回路501、502、OR回路503、及びラッチ回路504により、リクエスト調停部301がスレッド1のノンキャッシュライトのリクエストReq−Bを2次キャッシュ部30に対して発行したときに、リクエストReq−C、Req−D、Req−Eのいずれかのリクエストがスレッド0で発行待ちであれば、フラグTh0_Req−CDE_Pending_Flagが設定される(値が1になる)。そして、スレッド0のリクエストReq−C、Req−D、Req−Eのいずれかのリクエストがリクエスト調停部301から2次キャッシュ部30に対して発行されると、フラグTh0_Req−CDE_Pending_Flagが解除される(値が0になる)。
また、AND回路505は、信号Req−B_TKND、Req−B_TKID、Th0_Req−NCRD_Pendが入力され、信号Req−B_TKND、Req−B_TKID、Th0_Req−NCRD_Pendを論理積演算した結果を出力する。AND回路506は、信号Th0_Req−NCRD_TKND及びラッチ回路508の出力であるフラグTh0_Req−NCRD_Pending_Flagが入力され、反転したTh0_Req−NCRD_TKNDとフラグTh0_Req−NCRD_Pending_Flagとの論理積演算した結果を出力する。OR回路507は、AND回路505、506の出力が入力され、それらを論理和演算した結果を出力する。ラッチ回路508は、OR回路507の出力をラッチし、フラグTh0_Req−NCRD_Pending_Flagとして出力する。ここで、信号Th0_Req−NCRD_Pendは、ノンキャッシュリードのリクエストReq−C(NCRD)がスレッド0で発行待ちであることを示す信号である。
AND回路505、506、OR回路507、及びラッチ回路508により、リクエスト調停部301がスレッド1のノンキャッシュライトのリクエストReq−Bを2次キャッシュ部30に対して発行したときに、ノンキャッシュリードのリクエストがスレッド0で発行待ちであれば、フラグTh0_Req−NCRD_Pending_Flagが設定される(値が1になる)。そして、スレッド0のノンキャッシュリードのリクエストがリクエスト調停部301から2次キャッシュ部30に対して発行されると、フラグTh0_Req−NCRD_Pending_Flagが解除される(値が0になる)。
OR回路509は、フラグTh0_Req−CDE_Pending_Flag及びフラグTh0_Req−NCRD_Pending_Flagが入力され、それらを論理和演算した結果をフラグTh0_Pending_Flagとして出力する。なお、信号Req−B_TKND、Req−B_TKID、Th0_Req−CDE_Pend、Th0_Req−CDE_TKND、Th0_Req−NCRD_Pend、Th0_Req−NCRD_TKNDは、リクエスト調停部301から供給される。
図6は、本実施形態におけるスレッド調停部302のスレッド1フラグ生成制御部の構成例を示す図である。スレッド1に係るフラグ生成制御部は、AND回路601、602、605、606、OR回路603、607、609、及びラッチ回路604、608を有する。図6において、図5に示した信号と同一の信号には同一の信号名を付し、重複する説明は省略する。
AND回路601は、信号Req−B_TKND、Req−B_TKID、Th1_Req−CDE_Pendが入力され、信号Req−B_TKND、Th1_Req−CDE_Pendと反転した信号Req−B_TKIDとの論理積演算した結果を出力する。AND回路602は、信号Th1_Req−CDE_TKND及びラッチ回路604の出力であるフラグTh1_Req−CDE_Pending_Flagが入力され、反転したTh1_Req−CDE_TKNDとフラグTh1_Req−CDE_Pending_Flagとの論理積演算した結果を出力する。
OR回路603は、AND回路601、602の出力が入力され、それらを論理和演算した結果を出力する。ラッチ回路604は、OR回路603の出力をラッチし、フラグTh1_Req−CDE_Pending_Flagとして出力する。ここで、信号Th1_Req−CDE_Pendは、ノンキャッシュライトのリクエストよりもリクエスト発行のプライオリティが低いリクエストReq−C、Req−D、Req−Eのいずれかのリクエストがスレッド1で発行待ちであることを示す信号である。
AND回路601、602、OR回路603、及びラッチ回路604により、リクエスト調停部301がスレッド0のノンキャッシュライトのリクエストReq−Bを2次キャッシュ部30に対して発行したときに、リクエストReq−C、Req−D、Req−Eのいずれかのリクエストがスレッド1で発行待ちであれば、フラグTh1_Req−CDE_Pending_Flagが設定される(値が1になる)。そして、スレッド1のリクエストReq−C、Req−D、Req−Eのいずれかのリクエストがリクエスト調停部301から2次キャッシュ部30に対して発行されると、フラグTh1_Req−CDE_Pending_Flagが解除される(値が0になる)。
また、AND回路605は、信号Req−B_TKND、Req−B_TKID、Th1_Req−NCRD_Pendが入力され、信号Req−B_TKND、Th1_Req−NCRD_Pendと反転した信号Req−B_TKIDを論理積演算した結果を出力する。AND回路606は、信号Th1_Req−NCRD_TKND及びラッチ回路608の出力であるフラグTh1_Req−NCRD_Pending_Flagが入力され、反転したTh1_Req−NCRD_TKNDとフラグTh1_Req−NCRD_Pending_Flagとの論理積演算した結果を出力する。OR回路607は、AND回路605、606の出力が入力され、それらを論理和演算した結果を出力する。ラッチ回路608は、OR回路607の出力をラッチし、フラグTh1_Req−NCRD_Pending_Flagとして出力する。ここで、信号Th1_Req−NCRD_Pendは、ノンキャッシュリードのリクエストReq−C(NCRD)がスレッド1で発行待ちであることを示す信号である。
AND回路605、606、OR回路607、及びラッチ回路608により、リクエスト調停部301がスレッド0のノンキャッシュライトのリクエストReq−Bを2次キャッシュ部30に対して発行したときに、ノンキャッシュリードのリクエストがスレッド1で発行待ちであれば、フラグTh1_Req−NCRD_Pending_Flagが設定される(値が1になる)。そして、スレッド1のノンキャッシュリードのリクエストがリクエスト調停部301から2次キャッシュ部30に対して発行されると、フラグTh1_Req−NCRD_Pending_Flagが解除される(値が0になる)。
OR回路609は、フラグTh1_Req−CDE_Pending_Flag及びフラグTh1_Req−NCRD_Pending_Flagが入力され、それらを論理和演算した結果をフラグTh1_Pending_Flagとして出力する。なお、信号Req−B_TKND、Req−B_TKID、Th1_Req−CDE_Pend、Th1_Req−CDE_TKND、Th1_Req−NCRD_Pend、Th1_Req−NCRD_TKNDは、リクエスト調停部301から供給される。
図7は、本実施形態における演算処理装置の動作例を示すタイミングチャートである。図7に示す例では、ノンキャッシュライトのリクエストReq−Bがスレッド1で発行され、ノンキャッシュリードのリクエストReq−Cがスレッド0で発行され、リクエストReq−Dがスレッド0で発行されるものとする。また、ノンキャッシュライトのリクエストは複数個あるとする。
図7に示すように、サイクル2において、ノンキャッシュライトのリクエストReq−B、ノンキャッシュリードのリクエストReq−C、リクエストReq−Dがそれぞれリクエスト調停部301でリクエスト発行できる状態である。ノンキャッシュテイクン(NC−TKN)応答待ちではなく、スレッド調停部302のフラグTh0_Pending_Flag、Th1_Pending_Flagも値が0であるので、1次キャッシュコントローラ23のリクエスト調停部301は、2次キャッシュ部30に対してスレッド1(s1)のノンキャッシュライトのリクエストを発行する。このとき、リクエストReq−C、Req−Dがスレッド0で発行待ち状態であるので、スレッド調停部302のスレッド0フラグ生成制御部は、フラグTh0_Req−CDE_Pending_Flag、Th0_Req−NCRD_Pending_Flagを設定する(値1にする)。
ノンキャッシュライトのリクエスト及びノンキャッシュリードのリクエストは、ノンキャッシュテイクン応答があるまで待機されるので、サイクル5において、リクエスト調停部301は、2次キャッシュ部30に対してノンキャッシュリクエストでないスレッド0(s0)のリクエストReq−Dを発行する。リクエストReq−Dが発行されることで、スレッド調停部302のスレッド0フラグ生成制御部は、フラグTh0_Req−CDE_Pending_Flagをリセットする(値0にする)。
その後、サイクル12において、ノンキャッシュライトのリクエストに対応するノンキャッシュテイクン(NC−TKN)応答があると、1次キャッシュコントローラ23のリクエスト調停部301は、ノンキャッシュライトのリクエスト及びノンキャッシュリードのリクエストが発行可能になる。ここで、スレッド1のノンキャッシュライトのリクエストは、スレッド0のフラグTh0_Req−NCRD_Pending_Flagが設定されているので発行が抑止される。よって、1次キャッシュコントローラ23のリクエスト調停部301は、スレッド0のノンキャッシュリードのリクエストを2次キャッシュ部30に対して発行する。
本実施形態によれば、スレッド0及びスレッド1の一方のスレッドのノンキャッシュライトのリクエストと他方のスレッドのノンキャッシュリードのリクエストとを調停して発行する場合、先行するノンキャッシュリクエストが一方のスレッドのノンキャッシュライトのリクエストである場合には、先行するノンキャッシュリクエストに対する応答があることによりノンキャッシュリクエストが発行可能な状態になったときに、一方のスレッドのノンキャッシュライトのリクエストの発行を抑止して、他方のスレッドのノンキャッシュリードのリクエストを優先して発行する。これにより、スレッドが異なるノンキャッシュライトのリクエストとノンキャッシュリードのリクエストを調停して発行する場合に、ノンキャッシュリードのリクエストが待たされ続けることがなくなり、ノンキャッシュリクエストを効率よく適切に発行することが可能になる。したがって、ノンキャッシュリクエストの発行効率を改善することができ、複数のスレッドの処理能力に偏りが生じることを防止できる。
なお、前述した実施形態では、2つのスレッドのリクエストに対応する例を示したが、コア部が実行可能なスレッド数はこれに限定されるものではない。スレッド数が2より多くなった場合においても、スレッド毎にノンキャッシュリードのリクエストの待機状態(滞留状態)を示すフラグを設けることで拡張可能である。
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
10 CPU
20 コア部
21 演算器
22 命令コントローラ
23 1次キャッシュコントローラ
24 1次キャッシュメモリ
30 2次キャッシュ部
31 2次キャッシュコントローラ
32 2次キャッシュメモリ
40 システムコントローラ
51 外部デバイス
52 メインメモリ
53 他CPU
301 リクエスト調停部
302 スレッド調停部

Claims (5)

  1. それぞれアクセス対象のデータがキャッシュメモリに保持されることなくアクセスを行う第1のノンキャッシュリクエストと、前記第1のノンキャッシュリクエストより優先度が低い第2のノンキャッシュリクエストとを出力する命令制御部と、
    前記命令制御部が出力した、複数のスレッドのうちの第1のスレッドの前記第1のノンキャッシュリクエストと複数のスレッドのうちの第2のスレッドの前記第2のノンキャッシュリクエストとを調停して発行する場合、前記第1のノンキャッシュリクエストに先行する前記第1のスレッドの先行ノンキャッシュリクエストの発行後、発行した前記先行ノンキャッシュリクエストに対する応答が有ることにより、調停対象の前記第1のノンキャッシュリクエストと前記第2のノンキャッシュリクエストとが発行可能状態になったとき、前記第2のノンキャッシュリクエストを、前記第1のノンキャッシュリクエストよりも優先して発行する発行制御部とを有することを特徴とする演算処理装置。
  2. 前記発行制御部はさらに、
    前記先行ノンキャッシュリクエストを発行した後、前記第2のノンキャッシュリクエストが調停対象である場合に設定されるとともに、調停対象の前記第2のノンキャッシュリクエストを発行した場合に解除される保留情報を保持する保持部を有し、
    前記発行制御部は、
    前記保持部に保持された保留情報に基づき、前記第2のノンキャッシュリクエストを調停することを特徴とする請求項1記載の演算処理装置。
  3. 前記発行制御部は、
    前記命令制御部が出力した前記第1のノンキャッシュリクエストと前記第2のノンキャッシュリクエストとを、調停して発行するリクエスト調停部と、
    前記命令制御部が出力した前記第1のノンキャッシュリクエストの前記リクエスト調停部への入力を、前記保持部が保持する保留情報に基づき抑止するスレッド調停部とを有することを特徴とする請求項2記載の演算処理装置。
  4. 前記第1のノンキャッシュリクエストは、
    アクセス対象のデータがキャッシュメモリに保持されることなくライトアクセスを行うノンキャッシュライトリクエストであり、
    前記第2のノンキャッシュリクエストは、
    アクセス対象のデータがキャッシュメモリに保持されることなくリードアクセスを行うノンキャッシュリードリクエストであることを特徴とする請求項1〜3の何れか1項に記載の演算処理装置。
  5. 演算処理装置の制御方法において、
    前記演算処理装置が有する命令制御部が、それぞれアクセス対象のデータがキャッシュメモリに保持されることなくアクセスを行う第1のノンキャッシュリクエストと、前記第1のノンキャッシュリクエストより優先度が低い第2のノンキャッシュリクエストとを出力し、
    前記演算処理装置が有する発行制御部が、前記命令制御部が出力した、複数のスレッドのうちの第1のスレッドの前記第1のノンキャッシュリクエストと複数のスレッドのうちの第2のスレッドの前記第2のノンキャッシュリクエストとを調停して発行する場合、前記第1のノンキャッシュリクエストに先行する前記第1のスレッドの先行ノンキャッシュリクエストの発行後、発行した前記先行ノンキャッシュリクエストに対する応答が有ることにより、調停対象の前記第1のノンキャッシュリクエストと前記第2のノンキャッシュリクエストとが発行可能状態になったとき、前記第2のノンキャッシュリクエストを、前記第1のノンキャッシュリクエストよりも優先して発行することを特徴とする演算処理装置の制御方法。
JP2013168990A 2013-08-15 2013-08-15 演算処理装置及び演算処理装置の制御方法 Active JP6183049B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013168990A JP6183049B2 (ja) 2013-08-15 2013-08-15 演算処理装置及び演算処理装置の制御方法
US14/337,311 US20150052307A1 (en) 2013-08-15 2014-07-22 Processor and control method of processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013168990A JP6183049B2 (ja) 2013-08-15 2013-08-15 演算処理装置及び演算処理装置の制御方法

Publications (2)

Publication Number Publication Date
JP2015036941A JP2015036941A (ja) 2015-02-23
JP6183049B2 true JP6183049B2 (ja) 2017-08-23

Family

ID=52467675

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013168990A Active JP6183049B2 (ja) 2013-08-15 2013-08-15 演算処理装置及び演算処理装置の制御方法

Country Status (2)

Country Link
US (1) US20150052307A1 (ja)
JP (1) JP6183049B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6127907B2 (ja) * 2012-11-12 2017-05-17 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US11593281B2 (en) * 2019-05-08 2023-02-28 Hewlett Packard Enterprise Development Lp Device supporting ordered and unordered transaction classes

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6256710B1 (en) * 1995-04-28 2001-07-03 Apple Computer, Inc. Cache management during cache inhibited transactions for increasing cache efficiency
US6718457B2 (en) * 1998-12-03 2004-04-06 Sun Microsystems, Inc. Multiple-thread processor for threaded software applications
TWI220194B (en) * 2002-12-26 2004-08-11 Rdc Semiconductor Co Ltd Method and system for accessing memory data
US20060212840A1 (en) * 2005-03-16 2006-09-21 Danny Kumamoto Method and system for efficient use of secondary threads in a multiple execution path processor
JP5145929B2 (ja) * 2007-03-08 2013-02-20 株式会社リコー 半導体集積回路及び画像処理装置
US8832702B2 (en) * 2007-05-10 2014-09-09 Freescale Semiconductor, Inc. Thread de-emphasis instruction for multithreaded processor
KR101100143B1 (ko) * 2007-06-20 2011-12-29 후지쯔 가부시끼가이샤 캐시 메모리 제어 장치, 및 파이프 라인 제어 방법
US8230179B2 (en) * 2008-05-15 2012-07-24 International Business Machines Corporation Administering non-cacheable memory load instructions
JP2011159255A (ja) * 2010-02-04 2011-08-18 Seiko Epson Corp 電子機器、及びメモリー制御方法

Also Published As

Publication number Publication date
US20150052307A1 (en) 2015-02-19
JP2015036941A (ja) 2015-02-23

Similar Documents

Publication Publication Date Title
TWI537831B (zh) 多核心處理器、用於執行處理程序切換之方法、用於保全一記憶體區塊之方法、用於致能使用一多核心裝置之異動處理之設備、以及用於執行記憶體異動處理之方法
EP3230860B1 (en) Technologies for efficient synchronization barriers with work stealing support
US10152436B2 (en) Mutual exclusion in a non-coherent memory hierarchy
JP2012038293A (ja) マシンビジョン用マルチプロセッサシステムオンチップ
JP2018534676A (ja) 競合の存在下での効率的なタスクスケジューリングのための方法
JP2012038293A5 (ja)
EP2880541A1 (en) Systems and methods for controlling access to a shared data structure with reader-writer locks using multiple sub-locks
JP5578713B2 (ja) 情報処理装置
JP2006185348A (ja) マルチプロセッサシステム及びロックフラグ操作方法
JP4874165B2 (ja) マルチプロセッサシステム及びマルチプロセッサシステムにおけるアクセス権設定方法
JP5499987B2 (ja) 共有キャッシュメモリ装置
US9606923B2 (en) Information processing device with shared memory, memory order guarantee method using counters fence instructions in relation to cache-oriented requests, and recording medium storing program
JP5213485B2 (ja) マルチプロセッサシステムにおけるデータ同期方法及びマルチプロセッサシステム
JP6183049B2 (ja) 演算処理装置及び演算処理装置の制御方法
US8972693B2 (en) Hardware managed allocation and deallocation evaluation circuit
JP2018511111A (ja) ビクティムキャッシュモードを向上させるためのプロセススケジューリング
US11481250B2 (en) Cooperative workgroup scheduling and context prefetching based on predicted modification of signal values
US10915447B1 (en) Systems, devices, and methods for reduced critical path latency and increased work parallelization in memory writes
JP2009193378A (ja) ベクトル処理装置
JP5932261B2 (ja) メモリ制御装置、メモリ制御方法
US10740150B2 (en) Programmable state machine controller in a parallel processing system
JP6127907B2 (ja) 演算処理装置及び演算処理装置の制御方法
CN113220608A (zh) 一种NVMe命令处理器及其处理方法
US10489218B2 (en) Suppression of speculative accesses to shared memory locations at a processor
JP4818820B2 (ja) バスシステムおよびバススレーブならびにバス制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160510

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170315

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170425

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170609

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170710

R150 Certificate of patent or registration of utility model

Ref document number: 6183049

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150