JP2019197442A - 演算処理装置及び演算処理装置の制御方法 - Google Patents
演算処理装置及び演算処理装置の制御方法 Download PDFInfo
- Publication number
- JP2019197442A JP2019197442A JP2018091843A JP2018091843A JP2019197442A JP 2019197442 A JP2019197442 A JP 2019197442A JP 2018091843 A JP2018091843 A JP 2018091843A JP 2018091843 A JP2018091843 A JP 2018091843A JP 2019197442 A JP2019197442 A JP 2019197442A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- barrier
- memory access
- attribute
- execution
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title description 15
- 230000004888 barrier function Effects 0.000 claims abstract description 864
- 230000008859 change Effects 0.000 claims description 8
- 238000010586 diagram Methods 0.000 description 16
- 230000008569 process Effects 0.000 description 12
- 102100034033 Alpha-adducin Human genes 0.000 description 8
- 101000799076 Homo sapiens Alpha-adducin Proteins 0.000 description 8
- 101000629598 Rattus norvegicus Sterol regulatory element-binding protein 1 Proteins 0.000 description 8
- 238000001514 detection method Methods 0.000 description 6
- 230000004044 response Effects 0.000 description 6
- 102100024348 Beta-adducin Human genes 0.000 description 5
- 101000689619 Homo sapiens Beta-adducin Proteins 0.000 description 5
- XULSCZPZVQIMFM-IPZQJPLYSA-N odevixibat Chemical compound C12=CC(SC)=C(OCC(=O)N[C@@H](C(=O)N[C@@H](CC)C(O)=O)C=3C=CC(O)=CC=3)C=C2S(=O)(=O)NC(CCCC)(CCCC)CN1C1=CC=CC=C1 XULSCZPZVQIMFM-IPZQJPLYSA-N 0.000 description 5
- 230000007423 decrease Effects 0.000 description 3
- QIVUCLWGARAQIO-OLIXTKCUSA-N (3s)-n-[(3s,5s,6r)-6-methyl-2-oxo-1-(2,2,2-trifluoroethyl)-5-(2,3,6-trifluorophenyl)piperidin-3-yl]-2-oxospiro[1h-pyrrolo[2,3-b]pyridine-3,6'-5,7-dihydrocyclopenta[b]pyridine]-3'-carboxamide Chemical compound C1([C@H]2[C@H](N(C(=O)[C@@H](NC(=O)C=3C=C4C[C@]5(CC4=NC=3)C3=CC=CN=C3NC5=O)C2)CC(F)(F)F)C)=C(F)C=CC(F)=C1F QIVUCLWGARAQIO-OLIXTKCUSA-N 0.000 description 1
- 101100239079 Arabidopsis thaliana MUR3 gene Proteins 0.000 description 1
- 101150119033 CSE2 gene Proteins 0.000 description 1
- 101100007792 Escherichia coli (strain K12) casB gene Proteins 0.000 description 1
- 101150092391 RSA3 gene Proteins 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000004148 unit process Methods 0.000 description 1
Images
Classifications
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
-
- 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/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- 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/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- 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/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- 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/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- 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/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
Abstract
Description
JMP C //分岐先Cに分岐する分岐命令//
B LOAD2 X0 [秘密値格納のアドレス] //秘密値が格納されたアドレスでロードし
レジスタX0に秘密値を格納//
A LOAD1 *[X0] //レジスタX0のアドレスでロードする//
LOAD1 X0 [特権領域]
LOAD2 X1 [X0]
LOAD1は、特権領域のアドレスの秘密値をレジスタX0に格納するロード命令であり、LOAD2は、レジスタX0に格納された値(秘密値)をアドレスとするメモリ内の値をレジスタX1に格納するロード命令である。両ロード命令はユーザモードで実行されることを想定している。
[プロセッサの構成]
図2は、本実施の形態におけるプロセッサの構成例を示す図である。図2に示したプロセッサは、複数の演算器として、ストレージユニットSU、固定小数点演算器FX_EXC、浮動小数点演算器FL_EXCを有する。これらの演算器は、それぞれ単一または複数個を有する。
本実施の形態では、命令バッファI_BUFと命令デコーダI_DECの間にバリア設定部BA_SETを有する。バリア設定部BA_SETは、命令デコーダI_DECの4スロットに対応して同様に4スロットの構成を有する。バリア設定部BA_SETは、フェッチ命令がバリア設定条件に該当(マッチ)するか否かを判定し、該当する場合にフェッチ命令にバリア属性を付加するバリア判定部BA_DET0-BA_DET3と、バリア属性を付加されたフェッチ命令などを一旦ラッチするフリップフロップFF0-FF3を有する。バリア判定部とフリップフロップも、命令デコーダI_DECの4スロット構成に合わせて4スロット構成である。但し、命令デコーダが1スロット構成の場合は、バリア判定部も1スロット構成でもよい。
Branch Barrier to memory access (BBM):分岐命令対メモリアクセス命令のバリア属性
Memory Barrier to memory access (MBM):メモリアクセス命令対メモリアクセス命令のバリア属性
All Barrier to memory access (ABM):全命令対メモリアクセス命令のバリア属性
All Barrier to All (ABA):全命令対全命令のバリア属性
図6は、BBM属性のバリア命令に関するプロセッサ内での順序保障制御(バリア制御)の概略を示す図である。まず、前述のとおり、バリア設定部BA_SETが、命令バッファから入力されたフェッチ命令がBBMのバリア設定条件に該当する命令か否かを判定し、該当する場合バリア設定を行う(バリア制御BA0)。
図9、図10は、RSAとRSBRの入力キューの構成例を示す図である。図9に、具体例Example_1として、図1に示した分岐命令JMP1 C、2つのロード命令B LOAD 2、A LOAD 1を有する命令列が示される。また、具体例では、メモリアクセス命令以外の分岐命令JMP1 CがBBM属性に該当し、バリア属性フラグが付加されている。そのため、バリア設定部BA_SETは、バリアフロー命令BA_FLWを追加し、分岐命令JMP1 Cと、バリアフロー命令BA_FLOWと、メモリアクセス命令B LOAD2、B LOAD1を、命令デコーダI_DECに出力する。この場合、バリアフロー命令がバリア命令になる。
図11、図12は、RSAとRSBRの入力キューの構成例を示す図である。図11に、具体例Example_2として、図1に示した分岐命令JMP C、2つのメモリアクセス命令(ロード命令)B LOAD2、A LOAD1を有する命令列が示される。また、具体例2では、1番目のメモリアクセス命令B LOAD2がBBM属性に該当し、BBM属性フラグが付加されているので、バリア命令がメモリアクセス命令の例である。この場合、バリア設定部BA_SETは、バリアフロー命令BA_FLWを追加せず、分岐命令JMP1 Cと、BBM属性フラグ付きメモリアクセス命令B LOAD2(BBM)と、後続のメモリアクセス命令B LOAD1を、命令デコーダI_DECに出力する。そして、命令デコーダは、分岐命令JMP1 CをRSBRに割振り、2つのメモリアクセス命令B LOAD2(BBM)、B LOAD1をRSAに発行する。
図13は、MBM属性のバリア命令に関するプロセッサ内での順序保障制御(バリア制御)の概略を示す図である。まず、図6のBBM属性のバリア命令と同様に、バリア設定部BA_SETが、命令バッファから入力されたフェッチ命令がMBMのバリア設定条件に該当する命令か否かを判定し、該当する場合バリア設定を行う(バリア制御BA0)。バリア設定は、前述したとおり、バリア設定条件に該当するフェッチ命令にバリア属性フラグを付加する。バリア設定部は、バリア属性フラグ付き命令がメモリアクセス命令の場合は、そのままバリア属性フラグ付きメモリアクセス命令(メモリアクセスを実行するバリア命令)を出力し、メモリアクセス命令以外の場合は、バリア属性フラグ付き命令の後にバリアフロー命令(バリア制御用のバリア命令)を追加して出力する。そして、RSAとメモリアクセス制御部MEM_AC_CNTは、メモリアクセスを実行するバリア命令とバリア制御用のバリア命令について以下のバリア制御を行う。
図15、図16は、MBM属性フラグが付けられた命令がメモリアクセス命令の場合の具体例3に対するRSAにおけるバリア制御例を示す図である。図15に示された具体例Example_3は、加算命令ADD1と、3つのメモリアクセス命令LOAD3、B LOAD2(MBM)、A LOAD1の命令列である。この命令列が命令デコーダからRSAにインオーダーでキューインされる。RSAは、メモリアクセス命令LOAD3とB LOAD2(BMB)との間はアウトオブオーダーで、B LOAD2(BMB)とA LOAD1との間はインオーダーでメモリアクセス制御部に発行する。
MBM属性フラグが付けられた命令がメモリアクセス命令以外の場合、バリア設定部がMBM属性フラグが付けられた命令の後ろにバリアフロー命令(バリア制御用のバリア命令)を追加し、命令デコーダがバリアフロー命令をRSAに割振る。そして、上記したRSAでのバリア制御BC1_B、BC2と、メモリアクセス制御部のフェッチポートでのバリア制御BC4により、バリアフロー命令より前のメモリアクセス命令とバリアフロー命令より後のメモリアクセス命令との順序保障が遵守される。
図19は、ABM属性のバリア命令に関するプロセッサ内での順序保障制御(バリア制御)の概略を示す図である。バリア設定部BA_SETの制御BC0は、MBM属性の場合と同じである。
具体例4の命令列Example_4は図21,図22に示されるとおり、図15,図16の具体例3の命令列Example_3と同じである。
バリア属性が付加された命令がメモリアクセス命令以外の場合、バリア設定部がバリア属性が付加された命令の後ろにバリアフロー命令を追加発行し、命令デコーダがバリアフロー命令をRSAに割振る。前述のとおり、バリアフロー命令はバリア命令の一つであり、RSAやメモリアクセス制御部でバリア制御を受ける。つまり、上記したRSAでのバリア制御BC1_B、BC2と、メモリアクセス制御部のフェッチポートでのバリア制御BC5によりバリアフロー命令とその後のメモリアクセス命令との順序保障が遵守される。
図23は、バリア属性ABAが付加された命令に関するプロセッサ内での順序保障制御(バリア制御)の概略を示す図である。バリア属性ABAの場合、メモリアクセス命令に限らず全ての命令について追い越しを許さない。したがって、バリア制御BC6は、すべての命令を発行する命令デコーダで行う。
バリア属性ABAの場合、バリア設定部は、バリア設定条件に該当すると、バリア属性を付加された命令がメモリアクセス命令かメモリアクセス命令以外の命令かにかかわらず、すべて、該当した命令にバリア属性を付加して命令デコーダに発行する。RSAによるバリア制御は行われない。以下では、バリア属性を付加した命令がバリア命令となる。
本実施の形態では、最初に図1で説明したメモリアクセス命令が投機的に実行されることを防止するために、バリア設定条件レジスタにバリア設定条件を設定する。例えば、図1で示した第1の例のように、分岐命令が分岐確定する前に分岐予測先のメモリアクセス命令が投機的に実行されることを防止したい場合、バリア設定条件レジスタには、バリア設定条件として特権モードでの分岐命令にバリア属性BBMが付加されるよう設定する。また、第2の例の後に説明した2つのロード命令が投機的に実行されることを防止したい場合、バリア設定条件レジスタには、バリア設定条件として特権モードでのメモリアクセス命令にバリア属性MBMが付加されるよう設定する。上記以外のある命令の投機的実行を防止したい場合、バリア設定条件として特権モードでのある命令にバリア属性ABMまたはABAが付加されるように設定する。
バリア設定条件が設定されるバリア設定条件レジスタと、
フェッチ命令が前記バリア設定条件レジスタに設定されている前記バリア設定条件に該当するか否か判定し、該当する場合、前記フェッチ命令を前記該当したバリア設定条件に対応するバリア属性のバリア制御を受けるバリア命令に変更し出力するバリア設定部と、
前記フェッチ命令をデコードして実行命令を生成し、前記実行命令及び前記バリア命令を、それぞれの命令に対応する実行キュー部に割振る命令デコーダと、
前記実行命令の一種であるメモリアクセス命令を割振られ、プログラムの順番と異なるアウトオブオーダーで発行する第1の実行キュー部と、
前記第1の実行キュー部が発行した前記メモリアクセス命令を実行するメモリアクセス制御部とを有し、
前記第1の実行キュー部に前記バリア命令が割振られた場合、前記第1の実行キュー部と前記メモリアクセス制御部は共同して、前記バリア命令より後のメモリアクセス命令を、前記バリア命令及び前記バリア命令より前の前記バリア属性に対応する所定の実行命令を追い抜いて投機実行しない、演算処理装置。
前記バリア属性が分岐命令対メモリアクセス命令の属性を有し、
前記バリア設定部は、前記分岐命令対メモリアクセス命令のバリア属性に該当するフェッチ命令がメモリアクセス命令の場合、前記メモリアクセス命令をメモリアクセスを実行するバリア命令に変更し、前記分岐命令対メモリアクセス命令のバリア属性に該当するフェッチ命令が前記メモリアクセス命令以外の第1の命令の場合、前記第1の命令を前記第1の命令と前記第1の命令の後ろのバリア制御用のバリア命令に変更し、
前記命令デコーダは、前記メモリアクセスを実行するバリア命令と前記バリア制御用のバリア命令を、前記第1の実行キュー部に割振りし、
前記第1の実行キュー部は、前記バリア命令より前の分岐命令が完了処理されるまで、前記バリア命令より後ろのメモリアクセス命令を実行しない、付記1に記載の演算処理装置。
前記第1の実行キュー部が、前記バリア命令より前の分岐命令が完了処理されるまで、前記バリア命令より後ろのメモリアクセス命令を前記メモリアクセス制御部に発行しない、付記2に記載の演算処理装置。
前記バリア属性がメモリアクセス命令対メモリアクセス命令の属性を有し、
前記バリア設定部は、前記メモリアクセス命令対メモリアクセス命令のバリア属性に該当するフェッチ命令がメモリアクセス命令の場合、前記メモリアクセス命令をメモリアクセスを実行するバリア命令に変更し、前記メモリアクセス命令対メモリアクセス命令のバリア属性に該当するフェッチ命令が前記メモリアクセス命令以外の第1の命令の場合、前記第1の命令を前記第1の命令と前記第1の命令の後ろのバリア制御用のバリア命令に変更し、
前記命令デコーダは、前記メモリアクセスを実行するバリア命令と前記バリア制御用のバリア命令を、前記第1の実行キュー部に割振りし、
前記第1の実行キュー部と前記メモリアクセス制御部は共同して、前記バリア命令より前のメモリアクセス命令が完了処理されるまで、前記メモリアクセスを実行するバリア命令と、前記バリア命令より後ろのメモリアクセス命令を実行しない、付記1に記載の演算処理装置。
前記第1の実行キュー部が、前記バリア命令より後に、前記バリア命令より後ろのメモリアクセス命令を前記メモリアクセス制御部に発行し、
前記メモリアクセス制御部が、前記バリア命令より前のメモリアクセス命令が完了処理されるまで、前記バリア命令を実行せず、前記バリア命令が完了処理されるまで、前記バリア命令より後のメモリアクセス命令を実行する、付記4に記載の演算処理装置。
前記バリア属性が全命令対メモリアクセス命令の属性を有し、
前記バリア設定部は、前記全命令対メモリアクセス命令のバリア属性に該当するフェッチ命令がメモリアクセス命令の場合、前記メモリアクセス命令をメモリアクセスを実行するバリア命令に変更し、前記全命令対メモリアクセス命令のバリア属性に該当するフェッチ命令が前記メモリアクセス命令以外の第1の命令の場合、前記第1の命令を前記第1の命令と前記第1の命令の後ろのバリア制御用のバリア命令に変更し、
前記命令デコーダは、前記メモリアクセスを実行するバリア命令と前記バリア制御用のバリア命令を、前記第1の実行キュー部に割振りし、
前記第1の実行キュー部と前記メモリアクセス制御部は共同して、前記バリア命令より前の全命令が完了処理されるまで、前記バリア命令より後ろのメモリアクセス命令を実行しない、付記1に記載の演算処理装置。
更に、前記命令デコーダがインオーダーで発行する命令を割振られ、前記命令をインオーダーで完了処理する完了処理部を有し、
前記第1の実行キュー部が、前記バリア命令より後に、前記バリア命令より後ろのメモリアクセス命令を前記メモリアクセス制御部に発行し、
前記メモリアクセス制御部が、前記完了処理部からの完了処理報告に基づいて、前記バリア命令より前の全命令が完了処理されるまで、前記バリア命令を実行せず、前記バリア命令が完了処理されるまで、前記バリア命令より後のメモリアクセス命令を実行しない、付記6に記載の演算処理装置。
前記バリア属性が全命令対全命令の属性を有し、
更に、前記命令デコーダがインオーダーで発行する命令を割振られ、前記命令をインオーダーで完了処理する完了処理部を有し、
前記バリア設定部は、前記全命令対全命令のバリア属性に該当するフェッチ命令を、前記該当したフェッチ命令を実行するバリア命令に変更し、
前記命令デコーダは、前記バリア命令を入力した場合、前記完了処理部からの完了処理報告に基づいて、前記バリア命令より後ろの全命令を、前記バリア命令より前の全命令が完了処理されるまで発行しない、付記1に記載の演算処理装置。
前記命令デコーダは、前記バリア命令を入力した場合、前記完了処理部からの完了処理報告に基づいて、前記バリア命令より前の全命令が完了処理されるまで前記バリア命令を前記実行キュー部に発行せず、前記バリア命令が完了処理されるまで前記バリア命令より後の全命令を前記実行キュー部に発行しない、付記8に記載の演算処理装置。
前記命令の投機実行は、
前記バリア命令より前の前記分岐命令の分岐先が確定していない段階で前記バリア命令より後の命令を投機的に実行することと、
前記メモリアクセスを実行するバリア命令がメモリ内のアクセス禁止領域へのアクセスか否かを判定し、前記アクセス禁止領域へのアクセスと判定した場合に前記メモリアクセスを実行するバリア命令をトラップしてキャンセルする処理が、完了していない段階で、前記バリア命令より後ろの命令を投機的に実行すること、
を含む、付記1に記載の演算処理装置。
前記バリア属性に対応する所定の前記実行命令は、分岐命令と、メモリアクセス命令と、全命令のうち、前記バリア属性で指定されたいずれかの命令である、付記1に記載の演算処理装置。
バリア設定条件レジスタにバリア設定条件を設定する工程と、
バリア設定部により、フェッチ命令が前記バリア設定条件レジスタに設定されている前記バリア設定条件に該当するか否か判定し、該当する場合、前記フェッチ命令を前記該当したバリア設定条件に対応するバリア属性のバリア制御を受けるバリア命令に変更し出力する工程と、
命令デコーダにより、前記フェッチ命令をデコードして実行命令を生成し、前記実行命令及び前記バリア命令を、それぞれの命令に対応する実行キュー部に割振る工程と、
前記実行命令の一種であるメモリアクセス命令を割振られる第1の実行キュー部により、プログラムの順番と異なるアウトオブオーダーで前記メモリアクセス命令を発行する工程と、
メモリアクセス制御部により、前記第1の実行キュー部が発行した前記メモリアクセス命令を実行する工程と、
前記第1の実行キュー部に前記バリア命令が割振られた場合、前記第1の実行キュー部と前記メモリアクセス制御部とにより共同して、前記バリア命令より後のメモリアクセス命令を、前記バリア命令及び前記バリア命令より前の前記バリア属性に対応する所定の前記実行命令を追い抜いて投機実行しない工程、とを有する演算処理装置の制御方法。
BA_DET:バリア判定部
BA_FL_GEN:バリアフロー命令発生部
BA_SET_CND_REG:バリア設定条件レジスタ
I_DEC:命令デコーダ
RSA,RSE,TRSF,RSBR:リザベーションステーション
CSE:コミットスタックエントリ、完了処理部
L1_DCACHE:L1データキャッシュ
FP_QUE:フェッチポートのキュー
MEM_AC_CNT:メモリアクセス制御部
BC:バリア制御
BA_INST:バリア制御を受ける命令(バリア属性フラグ付き命令またはバリアフロー命令)、単にバリア命令
Claims (10)
- バリア設定条件が設定されるバリア設定条件レジスタと、
フェッチ命令が前記バリア設定条件レジスタに設定されている前記バリア設定条件に該当するか否か判定し、該当する場合、前記フェッチ命令を前記該当したバリア設定条件に対応するバリア属性のバリア制御を受けるバリア命令に変更し出力するバリア設定部と、
前記フェッチ命令をデコードして実行命令を生成し、前記実行命令及び前記バリア命令を、それぞれの命令に対応する実行キュー部に割振る命令デコーダと、
前記実行命令の一種であるメモリアクセス命令を割振られ、プログラムの順番と異なるアウトオブオーダーで発行する第1の実行キュー部と、
前記第1の実行キュー部が発行した前記メモリアクセス命令を実行するメモリアクセス制御部とを有し、
前記第1の実行キュー部に前記バリア命令が割振られた場合、前記第1の実行キュー部と前記メモリアクセス制御部は共同して、前記バリア命令より後のメモリアクセス命令を、前記バリア命令及び前記バリア命令より前の前記バリア属性に対応する所定の実行命令を追い抜いて投機実行しない、演算処理装置。 - 前記バリア属性が分岐命令対メモリアクセス命令の属性を有し、
前記バリア設定部は、前記分岐命令対メモリアクセス命令のバリア属性に該当するフェッチ命令がメモリアクセス命令の場合、前記メモリアクセス命令をメモリアクセスを実行するバリア命令に変更し、前記分岐命令対メモリアクセス命令のバリア属性に該当するフェッチ命令が前記メモリアクセス命令以外の第1の命令の場合、前記第1の命令を前記第1の命令と前記第1の命令の後ろのバリア制御用のバリア命令に変更し、
前記命令デコーダは、前記メモリアクセスを実行するバリア命令と前記バリア制御用のバリア命令を、前記第1の実行キュー部に割振りし、
前記第1の実行キュー部は、前記バリア命令より前の分岐命令が完了処理されるまで、前記バリア命令より後ろのメモリアクセス命令を実行しない、請求項1に記載の演算処理装置。 - 前記第1の実行キュー部が、前記バリア命令より前の分岐命令が完了処理されるまで、前記バリア命令より後ろのメモリアクセス命令を前記メモリアクセス制御部に発行しない、請求項2に記載の演算処理装置。
- 前記バリア属性がメモリアクセス命令対メモリアクセス命令の属性を有し、
前記バリア設定部は、前記メモリアクセス命令対メモリアクセス命令のバリア属性に該当するフェッチ命令がメモリアクセス命令の場合、前記メモリアクセス命令をメモリアクセスを実行するバリア命令に変更し、前記メモリアクセス命令対メモリアクセス命令のバリア属性に該当するフェッチ命令が前記メモリアクセス命令以外の第1の命令の場合、前記第1の命令を前記第1の命令と前記第1の命令の後ろのバリア制御用のバリア命令に変更し、
前記命令デコーダは、前記メモリアクセスを実行するバリア命令と前記バリア制御用のバリア命令を、前記第1の実行キュー部に割振りし、
前記第1の実行キュー部と前記メモリアクセス制御部は共同して、前記バリア命令より前のメモリアクセス命令が完了処理されるまで、前記メモリアクセスを実行するバリア命令と、前記バリア命令より後ろのメモリアクセス命令を実行しない、請求項1に記載の演算処理装置。 - 前記第1の実行キュー部が、前記バリア命令より後に、前記バリア命令より後ろのメモリアクセス命令を前記メモリアクセス制御部に発行し、
前記メモリアクセス制御部が、前記バリア命令より前のメモリアクセス命令が完了処理されるまで、前記バリア命令を実行せず、前記バリア命令が完了処理されるまで、前記バリア命令より後のメモリアクセス命令を実行する、請求項4に記載の演算処理装置。 - 前記バリア属性が全命令対メモリアクセス命令の属性を有し、
前記バリア設定部は、前記全命令対メモリアクセス命令のバリア属性に該当するフェッチ命令がメモリアクセス命令の場合、前記メモリアクセス命令をメモリアクセスを実行するバリア命令に変更し、前記全命令対メモリアクセス命令のバリア属性に該当するフェッチ命令が前記メモリアクセス命令以外の第1の命令の場合、前記第1の命令を前記第1の命令と前記第1の命令の後ろのバリア制御用のバリア命令に変更し、
前記命令デコーダは、前記メモリアクセスを実行するバリア命令と前記バリア制御用のバリア命令を、前記第1の実行キュー部に割振りし、
前記第1の実行キュー部と前記メモリアクセス制御部は共同して、前記バリア命令より前の全命令が完了処理されるまで、前記バリア命令より後ろのメモリアクセス命令を実行しない、請求項1に記載の演算処理装置。 - 更に、前記命令デコーダがインオーダーで発行する命令を割振られ、前記命令をインオーダーで完了処理する完了処理部を有し、
前記第1の実行キュー部が、前記バリア命令より後に、前記バリア命令より後ろのメモリアクセス命令を前記メモリアクセス制御部に発行し、
前記メモリアクセス制御部が、前記完了処理部からの完了処理報告に基づいて、前記バリア命令より前の全命令が完了処理されるまで、前記バリア命令を実行せず、前記バリア命令が完了処理されるまで、前記バリア命令より後のメモリアクセス命令を実行しない、請求項6に記載の演算処理装置。 - 前記バリア属性が全命令対全命令の属性を有し、
更に、前記命令デコーダがインオーダーで発行する命令を割振られ、前記命令をインオーダーで完了処理する完了処理部を有し、
前記バリア設定部は、前記全命令対全命令のバリア属性に該当するフェッチ命令を、前記該当したフェッチ命令を実行するバリア命令に変更し、
前記命令デコーダは、前記バリア命令を入力した場合、前記完了処理部からの完了処理報告に基づいて、前記バリア命令より後ろの全命令を、前記バリア命令より前の全命令が完了処理されるまで発行しない、請求項1に記載の演算処理装置。 - 前記命令デコーダは、前記バリア命令を入力した場合、前記完了処理部からの完了処理報告に基づいて、前記バリア命令より前の全命令が完了処理されるまで前記バリア命令を前記実行キュー部に発行せず、前記バリア命令が完了処理されるまで前記バリア命令より後の全命令を前記実行キュー部に発行しない、請求項8に記載の演算処理装置。
- バリア設定条件レジスタにバリア設定条件を設定する工程と、
バリア設定部により、フェッチ命令が前記バリア設定条件レジスタに設定されている前記バリア設定条件に該当するか否か判定し、該当する場合、前記フェッチ命令を前記該当したバリア設定条件に対応するバリア属性のバリア制御を受けるバリア命令に変更し出力する工程と、
命令デコーダにより、前記フェッチ命令をデコードして実行命令を生成し、前記実行命令及び前記バリア命令を、それぞれの命令に対応する実行キュー部に割振る工程と、
前記実行命令の一種であるメモリアクセス命令を割振られる第1の実行キュー部により、プログラムの順番と異なるアウトオブオーダーで前記メモリアクセス命令を発行する工程と、
メモリアクセス制御部により、前記第1の実行キュー部が発行した前記メモリアクセス命令を実行する工程と、
前記第1の実行キュー部に前記バリア命令が割振られた場合、前記第1の実行キュー部と前記メモリアクセス制御部とにより共同して、前記バリア命令より後のメモリアクセス命令を、前記バリア命令及び前記バリア命令より前の前記バリア属性に対応する所定の前記実行命令を追い抜いて投機実行しない工程、とを有する演算処理装置の制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018091843A JP7064134B2 (ja) | 2018-05-11 | 2018-05-11 | 演算処理装置及び演算処理装置の制御方法 |
US16/392,677 US20190347102A1 (en) | 2018-05-11 | 2019-04-24 | Arithmetic processing apparatus and control method for arithmetic processing apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018091843A JP7064134B2 (ja) | 2018-05-11 | 2018-05-11 | 演算処理装置及び演算処理装置の制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2019197442A true JP2019197442A (ja) | 2019-11-14 |
JP7064134B2 JP7064134B2 (ja) | 2022-05-10 |
Family
ID=68464703
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018091843A Active JP7064134B2 (ja) | 2018-05-11 | 2018-05-11 | 演算処理装置及び演算処理装置の制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20190347102A1 (ja) |
JP (1) | JP7064134B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7064135B2 (ja) * | 2018-05-15 | 2022-05-10 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
US11635965B2 (en) | 2018-10-31 | 2023-04-25 | Intel Corporation | Apparatuses and methods for speculative execution side channel mitigation |
US11029957B1 (en) * | 2020-03-27 | 2021-06-08 | Intel Corporation | Apparatuses, methods, and systems for instructions to compartmentalize code |
US11720360B2 (en) * | 2020-09-11 | 2023-08-08 | Apple Inc. | DSB operation with excluded region |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030084259A1 (en) * | 1999-12-30 | 2003-05-01 | Intel Corporation | MFENCE and LFENCE micro-architectural implementation method and system |
US20090089564A1 (en) * | 2006-12-06 | 2009-04-02 | Brickell Ernie F | Protecting a Branch Instruction from Side Channel Vulnerabilities |
JP2014182795A (ja) * | 2013-03-15 | 2014-09-29 | Intel Corp | 共有メモリへのアクセスの同期を緩和するプロセッサ、方法及びシステム |
WO2019193308A1 (en) * | 2018-04-04 | 2019-10-10 | Arm Limited | Speculative side-channel hint instruction |
-
2018
- 2018-05-11 JP JP2018091843A patent/JP7064134B2/ja active Active
-
2019
- 2019-04-24 US US16/392,677 patent/US20190347102A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030084259A1 (en) * | 1999-12-30 | 2003-05-01 | Intel Corporation | MFENCE and LFENCE micro-architectural implementation method and system |
US20090089564A1 (en) * | 2006-12-06 | 2009-04-02 | Brickell Ernie F | Protecting a Branch Instruction from Side Channel Vulnerabilities |
JP2014182795A (ja) * | 2013-03-15 | 2014-09-29 | Intel Corp | 共有メモリへのアクセスの同期を緩和するプロセッサ、方法及びシステム |
WO2019193308A1 (en) * | 2018-04-04 | 2019-10-10 | Arm Limited | Speculative side-channel hint instruction |
Also Published As
Publication number | Publication date |
---|---|
JP7064134B2 (ja) | 2022-05-10 |
US20190347102A1 (en) | 2019-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Behnia et al. | Speculative interference attacks: Breaking invisible speculation schemes | |
US10191741B2 (en) | System and method for mitigating the impact of branch misprediction when exiting spin loops | |
JP7406489B2 (ja) | 推測バリア命令 | |
US7814469B2 (en) | Speculative multi-threading for instruction prefetch and/or trace pre-build | |
US7111126B2 (en) | Apparatus and method for loading data values | |
JP7064134B2 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
JP7377211B2 (ja) | 投機的サイド・チャネル・ヒント命令 | |
US10853072B2 (en) | Arithmetic processing apparatus and method of controlling arithmetic processing apparatus | |
US11907369B2 (en) | Processor that mitigates side channel attacks by preventing cache memory state from being affected by a missing load operation by inhibiting or canceling a fill request of the load operation if an older load generates a need for an architectural exception | |
US20080168260A1 (en) | Symbolic Execution of Instructions on In-Order Processors | |
US20070118696A1 (en) | Register tracking for speculative prefetching | |
US20190377677A1 (en) | Arithmetic processing apparatus and control method for arithmetic processing apparatus | |
JP4220473B2 (ja) | 制御スペキュレーションの性能を向上するメカニズム | |
US20040117606A1 (en) | Method and apparatus for dynamically conditioning statically produced load speculation and prefetches using runtime information | |
Aimoniotis et al. | Reorder buffer contention: A forward speculative interference attack for speculation invariant instructions | |
US6735687B1 (en) | Multithreaded microprocessor with asymmetrical central processing units | |
JP7064135B2 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
US10831482B2 (en) | Arithmetic processing apparatus and control method for arithmetic processing apparatus | |
JP7020304B2 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
US10929137B2 (en) | Arithmetic processing device and control method for arithmetic processing device | |
CN111936968A (zh) | 一种指令执行方法及装置 | |
CN113316764A (zh) | 控制由待解析推测性操作确定的数据的使用 | |
US12008149B2 (en) | Method and system for on demand control of hardware support for software pointer authentification in a computing system | |
WO2022127348A1 (en) | Method and system for on demand control of hardware support for software pointer authentification in a computing system | |
US20220191020A1 (en) | Hardware support for software pointer authentification in a computing system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20210210 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20211228 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20220111 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220307 |
|
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: 20220322 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20220404 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7064134 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |