JP2016157371A - プロセッサおよび命令コード生成装置 - Google Patents
プロセッサおよび命令コード生成装置 Download PDFInfo
- Publication number
- JP2016157371A JP2016157371A JP2015036296A JP2015036296A JP2016157371A JP 2016157371 A JP2016157371 A JP 2016157371A JP 2015036296 A JP2015036296 A JP 2015036296A JP 2015036296 A JP2015036296 A JP 2015036296A JP 2016157371 A JP2016157371 A JP 2016157371A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- branch
- address
- instruction prefetch
- prefetch
- 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
- 239000000872 buffer Substances 0.000 claims abstract description 62
- 230000015654 memory Effects 0.000 claims abstract description 58
- 238000012545 processing Methods 0.000 claims abstract description 51
- 230000003068 static effect Effects 0.000 claims description 51
- 238000000034 method Methods 0.000 claims description 38
- 238000013507 mapping Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 39
- 230000006870 function Effects 0.000 description 22
- 238000004364 calculation method Methods 0.000 description 9
- 230000000052 comparative effect Effects 0.000 description 7
- 238000001514 detection method Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000005669 field effect Effects 0.000 description 1
- 230000001343 mnemonic effect Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000000758 substrate Substances 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/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- 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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
-
- 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
- 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/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- 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/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- 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/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- 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/6022—Using a prefetch buffer or dedicated prefetch cache
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
Description
先ず、本願において開示される代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
本願において開示される代表的な実施の形態は、アドレスが連続する一群の命令をメモリ(40)からプリフェッチする命令プリフェッチバッファ(20)と、前記命令プリフェッチバッファから命令を読み込んで実行する処理実行部(30)と、命令フェッチアドレス生成部(11)とを備えるプロセッサ(100)であって、以下のように構成される。
項1において、前記命令フェッチアドレス生成部は、前記処理実行部で分岐が発生したとき、発生した分岐の分岐先アドレスと当該分岐の次に分岐が発生するアドレスとの差に基づいて、前記テーブル(2)の当該分岐先アドレスに対応する命令プリフェッチ量を書き換える。
項1において、前記テーブル(3)には、前記処理実行部が所定の命令を実行することによって、分岐先アドレスと対応する命令プリフェッチ量が書き込まれる。
項3において、前記テーブルを静的テーブル(3)とする。前記命令フェッチアドレス生成部は、前記処理実行部で発生する分岐の分岐先アドレスに対応付けて前記命令プリフェッチバッファにプリフェッチさせる命令の命令プリフェッチ量を記憶する動的テーブル(2)をさらに有する。前記命令フェッチアドレス生成部は、前記処理実行部で分岐が発生したとき、発生した分岐の分岐先アドレスと、当該分岐の次に分岐が発生するアドレスとの差に基づいて、前記動的テーブルの当該分岐先アドレスに対応する命令プリフェッチ量を書き換える。前記命令フェッチアドレス生成部は、前記処理実行部で分岐が発生したときに、前記静的テーブルと前記動的テーブルの両方またはいずれか一方を参照して(15)、発生した分岐の分岐先アドレスに対応する命令プリフェッチ量を求め、当該分岐先アドレスの命令を含み、求めた前記命令プリフェッチ量の命令を、前記命令プリフェッチバッファにプリフェッチさせる(4〜7)。
項2において、前記命令フェッチアドレス生成部は、分岐予測部(19)をさらに備え、前記処理実行部で分岐が発生し、前記分岐予測部による分岐予測が成功したときには、前記テーブルへの当該分岐先アドレスに対応する命令プリフェッチ量の書き換えを停止する。
本願において開示される代表的な実施の形態は、命令キャッシュ(20)と、処理実行部(30)と、命令フェッチアドレス生成部(11)とを備えるプロセッサ(100)であって、以下のように構成される。
項6において、前記命令フェッチアドレス生成部は、前記処理実行部で分岐が発生したとき、発生した分岐の分岐先アドレスと、当該分岐の次に分岐が発生するアドレスとの差に基づいて、前記命令プリフェッチ回数テーブル(2)の当該分岐先アドレスに対応する命令プリフェッチ回数を書き換える。
項7において、前記処理実行部は、分岐が発生したときに発生した分岐の分岐元アドレスと分岐先アドレスとを前記命令フェッチアドレス生成部に供給する、分岐要求部(33)を有する。
項7において、前記処理実行部は、分岐要求部(33)を有する。
項7において、前記処理実行部は、分岐要求部(33)を有する。
項6において、前記命令プリフェッチ回数テーブル(3)には、前記処理実行部が所定の命令を実行することによって、分岐先アドレスと対応する命令プリフェッチ回数が書き込まれる。
項11において、前記命令プリフェッチ回数テーブルを静的命令プリフェッチ回数テーブル(3)とする。
項7から項10のいずれか1項において、前記命令フェッチアドレス生成部は、分岐予測部(19)をさらに備え、前記処理実行部で分岐が発生したとき、前記分岐予測部による分岐予測が成功したときに、前記命令プリフェッチ回数テーブルの当該分岐先アドレスに対応する命令プリフェッチ量の書き換えを停止する。
項6から項13のいずれか1項において、前記命令プリフェッチ回数テーブルは、分岐先アドレスが入力され、対応する命令プリフェッチ回数を出力する、連想メモリである。
項14において、前記命令プリフェッチ回数テーブルとして機能する前記連想メモリは、それぞれのエントリがタグとマスクと命令プリフェッチ回数からなる複数のエントリを備える。前記連想メモリは、入力される分岐先アドレスの一部のビットを前記マスクによって無効化したときに前記タグと一致するエントリに格納されている命令プリフェッチ回数を、入力された前記分岐先アドレスに対応する命令プリフェッチ回数として出力する(18)。
本願において開示される代表的な実施の形態は、命令プリフェッチバッファ(20)と命令フェッチアドレス生成部(11)とを備えるプロセッサ(100)に供給するプログラム(61)の命令コードを生成する命令コード生成装置(50)であって、以下のように構成される。
項16において、前記命令プリフェッチバッファは命令キャッシュ(20)であり、前記命令プリフェッチ量は前記命令キャッシュのキャッシュラインに命令コードをプリフェッチさせる命令プリフェッチ回数で規定される。
項17において、前記テーブルは、それぞれのエントリがタグとマスクと命令プリフェッチ回数からなる複数のエントリを備え、入力される分岐先アドレスの一部のビットを前記マスクによって無効化したときに前記タグと一致するエントリに格納されている命令プリフェッチ回数を、入力された前記分岐先アドレスに対応する命令プリフェッチ回数として出力する、連想メモリである。
項16、項17又は項18において、前記命令コード生成装置は、コンパイラ(51)と、ライブラリオブジェクトファイル(63)と、リンカ(52)とを備える。前記コンパイラは、高級言語で記述された前記プログラム(61)が入力され、オブジェクトファイル(62)を生成する。前記リンカは、前記コンパイラによって生成されたオブジェクトファイル(62)と前記ライブラリオブジェクトファイルから実行形式の命令コード(64)を生成する。前記リンカはさらに、分岐先アドレスに対応する命令プリフェッチ量(65)を算出して出力する。
実施の形態について更に詳述する。
図1は、代表的な実施の形態に係るプロセッサ100の構成例を示すブロック図である。プロセッサ100は、命令フェッチ部10と命令プリフェッチバッファ20と処理実行部30とメモリ40とを備え、命令プリフェッチバッファ20とメモリ40とがバス41によって互いに接続されている。命令プリフェッチバッファ20はアドレスが連続する一群の命令をメモリ40からバス41を介してプリフェッチし、処理実行部30は命令プリフェッチバッファ20から命令を読み込んで実行する。
命令プリフェッチバッファ20は、例えば上述のように命令キャッシュ部20で実現し、命令プリフェッチ量はキャッシュフィルの回数によって規定することができる。以下に、命令プリフェッチ量が分岐先アドレスに依らず固定される比較例と、命令プリフェッチ量が分岐先アドレスに応じて適宜規定される本実施形態とを対比して説明する。
図12は、実施形態1の命令フェッチアドレス生成部11の別の構成例として、分岐予測と組合せた例を示すブロック図である。命令フェッチアドレス生成部11は、図7に示す構成に加え、分岐予測部19を備える。分岐予測は、分岐が実際に発生するか否かが確定するより前に命令フェッチ部10でその結果を予測し、分岐成立が予測される場合にはその分岐先を投機的に命令フェッチする技術である。分岐予測が成功したときには、予測分岐先アドレスをセレクタ6、フリップフロップ7を介して、命令プリフェッチ要求アドレスとして命令キャッシュ20に供給する。また、分岐予測が成功する場合、上述の問題点である無用な投機的命令フェッチが発生しない。そこで分岐成立の分岐予測結果が正しい場合は、命令プリフェッチ回数テーブル2への記録をキャンセルして、エントリの占有を控える。
図13は、実施形態2のプロセッサ100及びそれに搭載される命令フェッチアドレス生成部11の構成例を示すブロック図である。図7に示される実施形態1のプロセッサ100は、命令フェッチアドレス生成部11が分岐先アドレスに対応する命令プリフェッチ回数を算出する構成例であるが、本実施形態2のプロセッサ100は、処理実行部30に命令プリフェッチ回数を算出する回路が設けられている。プロセッサ100は、図1と同様に、命令フェッチ部10と命令プリフェッチバッファ20と処理実行部30とメモリ40とを備え、命令プリフェッチバッファ20とメモリ40とがバス41によって互いに接続されている。図13には、命令フェッチ部10に含まれる命令フェッチアドレス生成部11と、命令プリフェッチバッファ20として機能する命令キャッシュ20と、処理実行部30とが示され、他は図示が省略されている。
図14は、実施形態3の命令フェッチアドレス生成部11の構成例を示すブロック図である。図13において分岐要求部33に設けられていた命令フェッチ境界越えカウンタ34に代えて、命令フェッチアドレス生成部11の命令フェッチ制御部8に命令フェッチ回数カウンタ14を備える。命令フェッチ回数カウンタ14は、分岐が発生したときにアサートされる分岐要求によってリセットされ、次の分岐が発生するまでの間に、アドレス生成制御部4が要求する命令フェッチ要求アドレスの発行回数をカウントする。分岐が発生したときのテーブル記録の際には、分岐先アドレス保持レジスタ12に保持される分岐先アドレスと、命令フェッチ回数カウンタ14のカウント値とが、命令プリフェッチ回数テーブル2に書き込まれる。
ここまでは、実際に発生した分岐に基づいて分岐間距離を算出して、分岐先アドレスに対応する命令プリフェッチ回数を適応的に学習する、動的な命令プリフェッチ回数テーブル2を備える実施の形態について主に説明した。しかし、図1に示すプリフェッチ回数テーブル1は、必ずしも動的な命令プリフェッチ回数テーブル2によって構成されなければならないわけではない。
動的命令プリフェッチ回数テーブル2と静的命令プリフェッチ回数テーブル3の両方を備えて、適宜使い分けても良い。
図17は、実施形態6の命令フェッチアドレス生成部11の構成例を示すブロック図である。命令フェッチアドレス生成部11は、図15と同様に、フリップフロップ7、セレクタ6、アドレス加算部5、アドレス生成制御部4、及び、命令プリフェッチ制御部8を備えるが、命令プリフェッチ制御部8とアドレス生成制御部4以外は図示が省略されている。命令プリフェッチ制御部8は、静的命令プリフェッチ回数テーブル3と、複数のエントリヒット判定回路18と、命令プリフェッチ回数選択回路16とを有する。
図19は、実施形態7の命令コード生成装置50の構成例を模式的に示す説明図である。命令コード生成装置50は、実施形態1〜6で説明したプロセッサ100で実行されるプログラムの命令コードを生成する装置であって、特に制限されないが例えば、コンパイラ51とリンカ52とを備える。コンパイラ51は、高級言語で記述されたプログラム61が入力され、オブジェクトファイル62を生成する。リンカ52は、コンパイラ51によって生成されたオブジェクトファイル62と、命令コード生成装置50に保持されるライブラリオブジェクトファイル63から実行形式の命令コード(実行形式ファイル)64を生成する。
静的命令プリフェッチ回数テーブル3が、実施形態6で説明したように、マスク(Mask)フィールドを持つ連想メモリで構成される場合には、その特徴を活かすために、命令コード生成装置50は、以下のような機能を備えると好適である。
2 動的命令プリフェッチ回数テーブル
3 静的命令プリフェッチ回数テーブル
4 アドレス生成制御部
5 アドレス加算部
6 セレクタ
7 フリップフロップ
8 命令プリフェッチ制御部
9 命令プリフェッチ回数設定レジスタ
10 命令フェッチ部
11 命令フェッチアドレス生成部
12 分岐先アドレス保持レジスタ
13 命令フェッチ回数計算部
14 命令フェッチ回数カウンタ
15、16 命令プリフェッチ回数セレクタ
17 分岐間距離検出部
18 ヒット判定回路
19 分岐予測部
20 命令プリフェッチバッファ(命令キャッシュ部)
21 データアレイ
22 制御部
23 バスリクエストバッファ
30 処理実行部
31 命令キュー
32 命令デコーダ
33 分岐要求部
34 命令フェッチ境界越えカウンタ
35 実行部
40 メモリ
41 バス
42 中継バッファ
50 命令コード生成装置
51 コンパイラ
52 リンカ
61 ソースプログラム
62 オブジェクトファイル
63 ライブラリオブジェクトファイル
64 実行形式ファイル
65 静的命令プリフェッチ回数情報
100 プロセッサ
Claims (19)
- アドレスが連続する一群の命令をメモリからプリフェッチする命令プリフェッチバッファと、前記命令プリフェッチバッファから命令を読み込んで実行する処理実行部と、命令フェッチアドレス生成部とを備え、
前記命令フェッチアドレス生成部は、前記処理実行部で発生する分岐の分岐先アドレスに対応付けて前記命令プリフェッチバッファにプリフェッチさせる命令の命令プリフェッチ量を記憶するテーブルを有し、前記処理実行部で分岐が発生したとき、前記テーブルを参照して発生した分岐の分岐先アドレスに対応する命令プリフェッチ量を求め、当該分岐先アドレスの命令を含み、求めた前記命令プリフェッチ量の命令を、前記命令プリフェッチバッファにプリフェッチさせる、
プロセッサ。 - 請求項1において、前記命令フェッチアドレス生成部は、前記処理実行部で分岐が発生したとき、発生した分岐の分岐先アドレスと当該分岐の次に分岐が発生するアドレスとの差に基づいて、前記テーブルの当該分岐先アドレスに対応する命令プリフェッチ量を書き換える、
プロセッサ。 - 請求項1において、前記テーブルには、前記処理実行部が所定の命令を実行することによって、分岐先アドレスと対応する命令プリフェッチ量が書き込まれる、
プロセッサ。 - 請求項3において、前記テーブルを静的テーブルとし、
前記命令フェッチアドレス生成部は、前記処理実行部で発生する分岐の分岐先アドレスに対応付けて前記命令プリフェッチバッファにプリフェッチさせる命令の命令プリフェッチ量を記憶する動的テーブルをさらに有し、前記処理実行部で分岐が発生したとき、発生した分岐の分岐先アドレスと、当該分岐の次に分岐が発生するアドレスとの差に基づいて、前記動的テーブルの当該分岐先アドレスに対応する命令プリフェッチ量を書き換え、
前記命令フェッチアドレス生成部は、前記処理実行部で分岐が発生したときに、前記静的テーブルと前記動的テーブルの両方またはいずれか一方を参照して、発生した分岐の分岐先アドレスに対応する命令プリフェッチ量を求め、当該分岐先アドレスの命令を含み、求めた前記命令プリフェッチ量の命令を、前記命令プリフェッチバッファにプリフェッチさせる、
プロセッサ。 - 請求項2において、前記命令フェッチアドレス生成部は、分岐予測部をさらに備え、前記処理実行部で分岐が発生し、前記分岐予測部による分岐予測が成功したときには、前記テーブルへの当該分岐先アドレスに対応する命令プリフェッチ量の書き換えを停止する、
プロセッサ。 - 命令キャッシュと、処理実行部と、命令フェッチアドレス生成部とを備え、
前記命令キャッシュは、1ライン当たり所定数の命令コードで構成される複数のラインを保持し、前記命令フェッチアドレス生成部から供給される命令プリフェッチ要求アドレス毎に1ラインの命令コードをメモリからプリフェッチし、
前記処理実行部は、前記命令キャッシュから所定数の命令コードで構成される命令を読み込んで実行し、
前記命令フェッチアドレス生成部は、前記処理実行部で発生する分岐の分岐先アドレスに対応付けて前記命令キャッシュにプリフェッチさせる命令プリフェッチ回数を記憶する命令プリフェッチ回数テーブルを有し、
前記命令フェッチアドレス生成部は、前記処理実行部で分岐が発生したとき、前記命令プリフェッチ回数テーブルを参照して、発生した分岐の分岐先アドレスを含む命令プリフェッチ要求アドレスに対応する命令プリフェッチ回数を求め、当該命令プリフェッチ要求アドレスと連続し、求められた前記命令プリフェッチ回数に相当する数の命令プリフェッチ要求アドレスを、順次前記命令キャッシュに供給する、
プロセッサ。 - 請求項6において、前記命令フェッチアドレス生成部は、前記処理実行部で分岐が発生したとき、発生した分岐の分岐先アドレスと、当該分岐の次に分岐が発生するアドレスとの差に基づいて、前記命令プリフェッチ回数テーブルの当該分岐先アドレスに対応する命令プリフェッチ回数を書き換える、
プロセッサ。 - 請求項7において、前記処理実行部は、分岐が発生したときに発生した分岐の分岐元アドレスと分岐先アドレスとを前記命令フェッチアドレス生成部に供給する、分岐要求部を有し、
前記命令フェッチアドレス生成部は、供給された分岐先アドレスを保持し、当該分岐の次に分岐が発生したときに供給される分岐元アドレスから、保持されている前記分岐先アドレスを引いた差に基づいて、前記命令プリフェッチ回数テーブルの保持されている前記分岐先アドレスに対応する命令プリフェッチ回数を書き換える、
プロセッサ。 - 請求項7において、前記処理実行部は、分岐要求部を有し、
前記分岐要求部は、前記処理実行部で分岐が発生したときに発生した分岐の分岐元アドレスを前記命令フェッチアドレス生成部に供給し、
前記分岐要求部は、前記処理実行部で分岐が発生したときにカウントを開始し、前記処理実行部で実行する命令のアドレスが前記命令キャッシュの1ラインに対応するアドレス境界を越えた回数をカウントするカウンタを備え、当該分岐の次に分岐が発生したときのカウント値を分岐間距離として前記命令フェッチアドレス生成部に供給し、
前記命令フェッチアドレス生成部は、供給された分岐先アドレスを保持し、当該分岐の次に分岐が発生したときに供給される前記分岐間距離に基づいて、保持されている前記分岐先アドレスに対応する命令プリフェッチ回数を書き換える、
プロセッサ。 - 請求項7において、前記処理実行部は、分岐要求部を有し、
前記分岐要求部は、前記処理実行部で分岐が発生したときに発生した分岐の分岐元アドレスを前記命令フェッチアドレス生成部に供給し、
前記命令フェッチアドレス生成部は、供給された分岐先アドレスを保持するレジスタと、分岐先アドレスが供給されたときにカウントを開始し前記命令キャッシュに命令プリフェッチ要求アドレスを供給する回数をカウントするカウンタとを備え、当該分岐の次に分岐先アドレスが供給されたときに、前記カウンタのカウント値を、前記レジスタに保持されている分岐先アドレスに対応する命令プリフェッチ回数として、前記命令プリフェッチ回数テーブルに書き込む、
プロセッサ。 - 請求項6において、前記命令プリフェッチ回数テーブルには、前記処理実行部が所定の命令を実行することによって、分岐先アドレスと対応する命令プリフェッチ回数が書き込まれる、
プロセッサ。 - 請求項11において、前記命令プリフェッチ回数テーブルを静的命令プリフェッチ回数テーブルとし、
前記命令フェッチアドレス生成部は、動的命令プリフェッチ回数テーブルをさらに備え、前記処理実行部で分岐が発生したとき、発生した分岐の分岐先アドレスと、当該分岐の次に分岐が発生するアドレスとの差に基づいて、前記動的命令プリフェッチ回数テーブルの当該分岐先アドレスに対応する命令プリフェッチ回数を書き換え、
前記命令フェッチアドレス生成部は、前記処理実行部で分岐が発生したときに、前記静的命令プリフェッチ回数テーブルと前記動的命令プリフェッチ回数テーブルの両方またはいずれか一方を参照して発生した分岐の分岐先アドレスに対応する命令プリフェッチ回数を求め、発生した分岐の分岐先アドレスを含む命令プリフェッチ要求アドレスと、当該命令プリフェッチ要求アドレスと連続し、求めた前記命令プリフェッチ回数に相当する数の命令プリフェッチ要求アドレスとを、順次前記命令キャッシュに供給する、
プロセッサ。 - 請求項7において、前記命令フェッチアドレス生成部は、分岐予測部をさらに備え、前記処理実行部で分岐が発生したとき、前記分岐予測部による分岐予測が成功したときに、前記命令プリフェッチ回数テーブルの当該分岐先アドレスに対応する命令プリフェッチ量の書き換えを停止する、
プロセッサ。 - 請求項6において、前記命令プリフェッチ回数テーブルは、分岐先アドレスが入力され、対応する命令プリフェッチ回数を出力する、連想メモリである、
プロセッサ。 - 請求項14において、前記命令プリフェッチ回数テーブルとして機能する前記連想メモリは、それぞれのエントリがタグとマスクと命令プリフェッチ回数からなる複数のエントリを備え、入力される分岐先アドレスの一部のビットを前記マスクによって無効化したときに前記タグと一致するエントリに格納されている命令プリフェッチ回数を、入力された前記分岐先アドレスに対応する命令プリフェッチ回数として出力する、
プロセッサ。 - 命令プリフェッチバッファと命令フェッチアドレス生成部とを備えるプロセッサに供給するプログラムの命令コードを生成する命令コード生成装置であって、
前記命令フェッチアドレス生成部は、発生する分岐の分岐先アドレスに対応付けて前記命令プリフェッチバッファにプリフェッチさせる命令の命令プリフェッチ量を記憶するテーブルを有し、分岐が発生したとき、発生した分岐の分岐先アドレスを含み、当該分岐先アドレスに対応する命令プリフェッチ量の命令を、前記命令プリフェッチバッファにプリフェッチさせ、
前記命令コード生成装置は、前記プログラムから実行形式の命令コードを生成し、前記命令コードにおいて分岐命令の分岐先アドレスと次の分岐命令が配置されるアドレスとの差に基づいて、当該分岐先アドレスに対応する命令プリフェッチ量を算出する、
命令コード生成装置。 - 請求項16において、前記命令プリフェッチバッファは命令キャッシュであり、前記命令プリフェッチ量は前記命令キャッシュのキャッシュラインに命令コードをプリフェッチさせる命令プリフェッチ回数で規定される、
命令コード生成装置。 - 請求項17において、前記テーブルは、それぞれのエントリがタグとマスクと命令プリフェッチ回数からなる複数のエントリを備え、入力される分岐先アドレスの一部のビットを前記マスクによって無効化したときに前記タグと一致するエントリに格納されている命令プリフェッチ回数を、入力された前記分岐先アドレスに対応する命令プリフェッチ回数として出力する、連想メモリであり、
前記命令コード生成装置は、対応する命令プリフェッチ回数が同じ値となる複数の分岐先アドレスが、一部のアドレスビットを共通とするアドレス空間に配置されるように、前記命令コードのアドレスマッピングを行い、前記共通するアドレスビットをタグとし、他のアドレスビットを無効化するビット列をマスクとし、前記同じ値を命令プリフェッチ回数として、前記連想メモリに供給する1個のエントリを構成する、
命令コード生成装置。 - 請求項16において、前記命令コード生成装置は、高級言語で記述された前記プログラムが入力され、オブジェクトファイルを生成するコンパイラと、ライブラリオブジェクトファイルと、前記コンパイラによって生成されたオブジェクトファイルと前記ライブラリオブジェクトファイルから実行形式の命令コードを生成するリンカとを備え、前記リンカはさらに、分岐先アドレスに対応する命令プリフェッチ量を算出して出力する、
命令コード生成装置。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015036296A JP6457836B2 (ja) | 2015-02-26 | 2015-02-26 | プロセッサおよび命令コード生成装置 |
CN201610101924.XA CN105930136B (zh) | 2015-02-26 | 2016-02-24 | 处理器和指令码生成设备 |
US15/053,798 US9946546B2 (en) | 2015-02-26 | 2016-02-25 | Processor and instruction code generation device |
US15/915,730 US10540182B2 (en) | 2015-02-26 | 2018-03-08 | Processor and instruction code generation device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015036296A JP6457836B2 (ja) | 2015-02-26 | 2015-02-26 | プロセッサおよび命令コード生成装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016157371A true JP2016157371A (ja) | 2016-09-01 |
JP6457836B2 JP6457836B2 (ja) | 2019-01-23 |
Family
ID=56799136
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015036296A Active JP6457836B2 (ja) | 2015-02-26 | 2015-02-26 | プロセッサおよび命令コード生成装置 |
Country Status (3)
Country | Link |
---|---|
US (2) | US9946546B2 (ja) |
JP (1) | JP6457836B2 (ja) |
CN (1) | CN105930136B (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2020197830A (ja) * | 2019-05-31 | 2020-12-10 | ファナック株式会社 | 加工制御システム及び加工システム |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10296463B2 (en) * | 2016-01-07 | 2019-05-21 | Samsung Electronics Co., Ltd. | Instruction prefetcher dynamically controlled by readily available prefetcher accuracy |
CN108062236A (zh) * | 2016-11-07 | 2018-05-22 | 杭州华为数字技术有限公司 | 一种软硬件协同分支指令预测方法及装置 |
US11226741B2 (en) * | 2018-10-31 | 2022-01-18 | EMC IP Holding Company LLC | I/O behavior prediction based on long-term pattern recognition |
CN117118570B (zh) * | 2023-09-06 | 2024-04-02 | 上海交通大学 | 有限位数的最大码距遥控指令码生成系统及方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63147231A (ja) * | 1986-12-10 | 1988-06-20 | Nec Corp | 命令の先取りを行なうデ−タ処理装置 |
JPS63503177A (ja) * | 1986-02-28 | 1988-11-17 | 日本電気株式会社 | 命令先取制御装置 |
JPH07200406A (ja) * | 1993-12-27 | 1995-08-04 | Toshiba Corp | キャッシュシステム |
JPH07271580A (ja) * | 1994-03-30 | 1995-10-20 | Hitachi Ltd | 分岐先予測処理機能を有するデータ処理装置 |
US5742804A (en) * | 1996-07-24 | 1998-04-21 | Institute For The Development Of Emerging Architectures, L.L.C. | Instruction prefetch mechanism utilizing a branch predict instruction |
JPH10283185A (ja) * | 1997-04-10 | 1998-10-23 | Matsushita Electric Ind Co Ltd | プロセッサ |
JP2001134440A (ja) * | 1999-10-28 | 2001-05-18 | Hewlett Packard Co <Hp> | 命令をプリフェッチする方法 |
JP2004240616A (ja) * | 2003-02-05 | 2004-08-26 | Mitsubishi Electric Corp | メモリコントローラ及びメモリアクセス制御方法 |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2791086B2 (ja) | 1989-03-15 | 1998-08-27 | 富士通株式会社 | 命令プリフェッチ装置 |
EP0389175A3 (en) | 1989-03-15 | 1992-11-19 | Fujitsu Limited | Data prefetch system |
DE69030648T2 (de) * | 1990-01-02 | 1997-11-13 | Motorola Inc | Verfahren zum sequentiellen Vorabruf von 1-Wort-, 2-Wort oder 3-Wort-Befehlen |
US6425124B1 (en) * | 1993-11-08 | 2002-07-23 | Matsushita Electric Industrial Co. Ltd. | Resource allocation device for reducing the size and run time of a machine language program |
US5889985A (en) * | 1996-08-07 | 1999-03-30 | Elbrus International | Array prefetch apparatus and method |
US6092149A (en) * | 1997-05-28 | 2000-07-18 | Western Digital Corporation | Disk drive cache system using a dynamic priority sequential stream of data segments continuously adapted according to prefetched sequential random, and repeating types of accesses |
US6012106A (en) * | 1997-11-03 | 2000-01-04 | Digital Equipment Corporation | Prefetch management for DMA read transactions depending upon past history of actual transfer lengths |
US6957327B1 (en) * | 1998-12-31 | 2005-10-18 | Stmicroelectronics, Inc. | Block-based branch target buffer |
US6425023B1 (en) * | 1999-03-24 | 2002-07-23 | International Business Machines Corporation | Method and system for gathering and buffering sequential data for a transaction comprising multiple data access requests |
US6567894B1 (en) * | 1999-12-08 | 2003-05-20 | International Business Machines Corporation | Method and apparatus to prefetch sequential pages in a multi-stream environment |
US7441110B1 (en) * | 1999-12-10 | 2008-10-21 | International Business Machines Corporation | Prefetching using future branch path information derived from branch prediction |
US6560693B1 (en) * | 1999-12-10 | 2003-05-06 | International Business Machines Corporation | Branch history guided instruction/data prefetching |
US6684319B1 (en) * | 2000-06-30 | 2004-01-27 | Conexant Systems, Inc. | System for efficient operation of a very long instruction word digital signal processor |
US6704860B1 (en) * | 2000-07-26 | 2004-03-09 | International Business Machines Corporation | Data processing system and method for fetching instruction blocks in response to a detected block sequence |
US6795876B1 (en) * | 2001-03-27 | 2004-09-21 | Intel Corporation | Adaptive read pre-fetch |
US6963954B1 (en) * | 2001-09-19 | 2005-11-08 | Cisco Technology, Inc. | Method and apparatus for optimizing prefetching based on memory addresses |
US7493480B2 (en) * | 2002-07-18 | 2009-02-17 | International Business Machines Corporation | Method and apparatus for prefetching branch history information |
US6976147B1 (en) * | 2003-01-21 | 2005-12-13 | Advanced Micro Devices, Inc. | Stride-based prefetch mechanism using a prediction confidence value |
US20040243767A1 (en) * | 2003-06-02 | 2004-12-02 | Cierniak Michal J. | Method and apparatus for prefetching based upon type identifier tags |
US7493451B2 (en) * | 2006-06-15 | 2009-02-17 | P.A. Semi, Inc. | Prefetch unit |
US7711797B1 (en) * | 2006-07-31 | 2010-05-04 | Juniper Networks, Inc. | Optimizing batch size for prefetching data over wide area networks |
US8984231B2 (en) * | 2009-12-22 | 2015-03-17 | Intel Corporation | Methods and apparatus to perform adaptive pre-fetch operations in managed runtime environments |
CN102184091A (zh) * | 2011-04-18 | 2011-09-14 | 孙瑞琛 | 一种分支预测方法及装置 |
CN202133998U (zh) * | 2011-04-18 | 2012-02-01 | 江苏中科芯核电子科技有限公司 | 一种分支预测装置 |
CN102360282A (zh) * | 2011-09-26 | 2012-02-22 | 杭州中天微系统有限公司 | 快速处置分支指令预测错误的流水线处理器装置 |
US9811341B2 (en) * | 2011-12-29 | 2017-11-07 | Intel Corporation | Managed instruction cache prefetching |
US9135011B2 (en) * | 2012-04-30 | 2015-09-15 | The Regents Of The University Of Michigan | Next branch table for use with a branch predictor |
CN103513958B (zh) * | 2012-06-27 | 2017-01-25 | 上海芯豪微电子有限公司 | 高性能指令缓存系统和方法 |
CN103513957B (zh) * | 2012-06-27 | 2017-07-11 | 上海芯豪微电子有限公司 | 高性能缓存方法 |
CN103838550B (zh) * | 2012-11-26 | 2018-01-02 | 上海芯豪微电子有限公司 | 一种分支处理系统和方法 |
-
2015
- 2015-02-26 JP JP2015036296A patent/JP6457836B2/ja active Active
-
2016
- 2016-02-24 CN CN201610101924.XA patent/CN105930136B/zh active Active
- 2016-02-25 US US15/053,798 patent/US9946546B2/en active Active
-
2018
- 2018-03-08 US US15/915,730 patent/US10540182B2/en active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63503177A (ja) * | 1986-02-28 | 1988-11-17 | 日本電気株式会社 | 命令先取制御装置 |
US4881170A (en) * | 1986-02-28 | 1989-11-14 | Nec Corporation | Instruction prefetch control apparatus |
JPS63147231A (ja) * | 1986-12-10 | 1988-06-20 | Nec Corp | 命令の先取りを行なうデ−タ処理装置 |
JPH07200406A (ja) * | 1993-12-27 | 1995-08-04 | Toshiba Corp | キャッシュシステム |
JPH07271580A (ja) * | 1994-03-30 | 1995-10-20 | Hitachi Ltd | 分岐先予測処理機能を有するデータ処理装置 |
US5742804A (en) * | 1996-07-24 | 1998-04-21 | Institute For The Development Of Emerging Architectures, L.L.C. | Instruction prefetch mechanism utilizing a branch predict instruction |
JPH10283185A (ja) * | 1997-04-10 | 1998-10-23 | Matsushita Electric Ind Co Ltd | プロセッサ |
JP2001134440A (ja) * | 1999-10-28 | 2001-05-18 | Hewlett Packard Co <Hp> | 命令をプリフェッチする方法 |
US6799263B1 (en) * | 1999-10-28 | 2004-09-28 | Hewlett-Packard Development Company, L.P. | Prefetch instruction for an unpredicted path including a flush field for indicating whether earlier prefetches are to be discarded and whether in-progress prefetches are to be aborted |
JP2004240616A (ja) * | 2003-02-05 | 2004-08-26 | Mitsubishi Electric Corp | メモリコントローラ及びメモリアクセス制御方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2020197830A (ja) * | 2019-05-31 | 2020-12-10 | ファナック株式会社 | 加工制御システム及び加工システム |
JP7294891B2 (ja) | 2019-05-31 | 2023-06-20 | ファナック株式会社 | 加工制御システム及び加工システム |
Also Published As
Publication number | Publication date |
---|---|
CN105930136B (zh) | 2020-12-04 |
US20160253178A1 (en) | 2016-09-01 |
US20180196675A1 (en) | 2018-07-12 |
US9946546B2 (en) | 2018-04-17 |
US10540182B2 (en) | 2020-01-21 |
CN105930136A (zh) | 2016-09-07 |
JP6457836B2 (ja) | 2019-01-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9652230B2 (en) | Computer processor employing dedicated hardware mechanism controlling the initialization and invalidation of cache lines | |
US8667225B2 (en) | Store aware prefetching for a datastream | |
US8527707B2 (en) | High-performance cache system and method | |
US6151662A (en) | Data transaction typing for improved caching and prefetching characteristics | |
JP6143872B2 (ja) | 装置、方法、およびシステム | |
US10540182B2 (en) | Processor and instruction code generation device | |
US7213126B1 (en) | Method and processor including logic for storing traces within a trace cache | |
US8583894B2 (en) | Hybrid prefetch method and apparatus | |
US7133968B2 (en) | Method and apparatus for resolving additional load misses in a single pipeline processor under stalls of instructions not accessing memory-mapped I/O regions | |
KR20010075258A (ko) | 간접 분기 목적지 산출 방법 | |
KR20170076564A (ko) | 레지스터 리네이밍을 사용한 무브 명령어 처리 | |
US20130103923A1 (en) | Memory management unit speculative hardware table walk scheme | |
US10241810B2 (en) | Instruction-optimizing processor with branch-count table in hardware | |
CN111213131B (zh) | 高速缓存器中的零时延预提取 | |
US9753855B2 (en) | High-performance instruction cache system and method | |
US20080307173A1 (en) | Efficient Encoding for Detecting Load Dependency on Store with Misalignment | |
US20080140934A1 (en) | Store-Through L2 Cache Mode | |
US20150193236A1 (en) | Low-miss-rate and low-miss-penalty cache system and method | |
US6507895B1 (en) | Method and apparatus for access demarcation | |
US7251710B1 (en) | Cache memory subsystem including a fixed latency R/W pipeline | |
EP4020229A1 (en) | System, apparatus and method for prefetching physical pages in a processor | |
CN112395000B (zh) | 一种数据预加载方法和指令处理装置 | |
JPWO2013121516A1 (ja) | データ処理装置 | |
US7555633B1 (en) | Instruction cache prefetch based on trace cache eviction | |
US20160179676A1 (en) | Cleaning a write-back cache |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20170330 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20171127 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20180815 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20180925 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20181122 |
|
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: 20181204 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20181221 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6457836 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |