JP2016511887A - 命令処理システムと方法 - Google Patents
命令処理システムと方法 Download PDFInfo
- Publication number
- JP2016511887A JP2016511887A JP2015556389A JP2015556389A JP2016511887A JP 2016511887 A JP2016511887 A JP 2016511887A JP 2015556389 A JP2015556389 A JP 2015556389A JP 2015556389 A JP2015556389 A JP 2015556389A JP 2016511887 A JP2016511887 A JP 2016511887A
- Authority
- JP
- Japan
- Prior art keywords
- address
- instruction
- memory
- branch
- track
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 42
- 238000000034 method Methods 0.000 title claims description 115
- 230000015654 memory Effects 0.000 claims abstract description 445
- 238000004364 calculation method Methods 0.000 claims description 18
- 238000013519 translation Methods 0.000 claims description 16
- 230000006870 function Effects 0.000 claims description 13
- 238000006243 chemical reaction Methods 0.000 claims description 11
- 238000003672 processing method Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 26
- 102100028952 Drebrin Human genes 0.000 description 23
- 101000838600 Homo sapiens Drebrin Proteins 0.000 description 23
- 230000008569 process Effects 0.000 description 16
- 238000003860 storage Methods 0.000 description 8
- 230000008859 change Effects 0.000 description 5
- 230000003712 anti-aging effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000005429 filling process Methods 0.000 description 1
- 238000005304 joining Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000000284 resting effect Effects 0.000 description 1
- 238000005303 weighing 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/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (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)
Abstract
Description
コリレーション・テーブル14, トラッカー15, レべル1キャッシュ16 (すなわち第1次メモリ、最もアクセス・スピードの早いメモリ)、レべル2キャッシュ17 (すなわち第2次メモリ、最もアクセス・スピードの遅いメモリ)。これらの構成部品はあくまでイラストの目的でここにリストアップおり、実際には他の部品も含まれうるし、またある種の部品は統合ないしは省略されうる。さらに、これらの様々な構成部品は複数のシステムに分散されうるし、また物理的あるいは仮想的な構成部品でありうる。そしてハードウェア(例えば集積回路)の中で実装されうるし、或はソフトウェアないしソフトウェアとハードウェアの組み合わせとしても実装されうる。
従ってCPU10が当該命令を読み込む必要があるとき、これらの命令は既にL1キャッシュ16に記憶されており、それ故キャッシュミスによる待ち時間をより良く隠蔽することになる。
’E’の左の子ノード’J’は’E’の次の命令セグメント;’E’の右の子ノード’K’は’E’のターゲット命令セグメントである。‘J’の左の子ノード’Q’は’J’の次の命令セグメント;’J’の右の子ノード’R’は’J’のターゲット命令セグメントである。
‘K’の左の子ノード’S’は’K’の次の命令セグメント;’K’の右の子ノード’T’は’K’のターゲット命令セグメントである。
三角ラベルはレジスタに記憶されている命令セグメントに対応するトラック・アドレスを表している。図4Eは開示された実施形態と整合する例示的なプレディクタの、4つのレジスタの変化状況を示す概略図である。図4Eに示されるように、各列(カラム)はプレディクタ24のレジスタの1つに対応している。つまり、最初の列(カラム)はレジスタ101;2番目の列(カラム)はレジスタ102;3番目の列(カラム)はレジスタ103;4番目の列(カラム)はレジスタ104にそれぞれ対応している。各行はそれぞれ図4A~4Dにおけるアップデートに対応している。
よって、もし命令セグメントがL2キャッシュ17からバッファー25へ充填され、そしてバッファー25からL1キャッシュ16へと充填される間の時間が、充填操作の開始時点とCPUが命令セグメントへ到達する時点との間の時間よりも長くならないならば、CPUによって要求された命令セグメント(次の命令セグメントとターゲット命令セグメント)は既にL1キャッシュ16に記憶されている。CPU10によって実行された分岐ポイントに対応する分岐命令の分岐が取られたか否かに関わらず、次の命令はL1キャッシュ16から読み出され、キャッシュミスを回避する。あるいは、CPUによって要求された命令セグメントがL1キャッシュ16にまだ記憶されていなくても、命令セグメントは既に充填プロセスの途中であり、キャッシュミスによる待ち時間を一部隠蔽することになる。
’C’のトラック・アドレスはクリップ・セクション33のレジスタ106に記憶される;
リード・ポインタ19の値は’A’のトラック・アドレスである。
セレクタ35はレジスタ104からインプット’K’を選び、インプット’K’をレジスタ106へ書き込む。よって、’E’の後続の命令セグメントのトラック・アドレスはそのまま保存され、’D’の後続の命令セグメントのトラック・アドレスはクリップされ破棄される。同時にセレクタ36はレジスタ106からインプット’E’をリード・ポインタ19の値として選ぶ。リード・ポインタ19の値はCPU10のために該当する命令ブロックを見つけるために、L1キャッシュ16に送られ、そして’C’のトラック・アドレスはクリップされ破棄される。図4Dと図4Eの第5行目に示されるように、プレディクション・セクション32は上記の方法によって4つのレジスタ値を更新する。
図6に示されるように、バッファー25 はレジスタ202、レジスタ203、レジスタ204、レジスタ205、レジスタ206、セレクタ38そしてセレクタ39を含む。バッファー25の構造はプレディクション・トラッカー31と似ており、バッファー25の幾つかのモジュールは省くことができる。
レジスタ203は、プレディクション・セクション32のレジスタ103に対応する命令セグメントを含む命令ブロックを記憶する;
レジスタ204は、プレディクション・セクション32のレジスタ104に対応する命令セグメントを含む命令ブロックを記憶する;
レジスタ205は、プレディクション・セクション32のレジスタ105に対応する命令セグメントを含む命令ブロックを記憶する;
レジスタ206は、プレディクション・セクション32のレジスタ106に対応する命令セグメントを含む命令ブロックを記憶する;
プレディクション・セクション32のレジスタ101のトラック・アドレスに対応する命令セグメントはCPU10によって実行されている命令セグメントであり、命令はL1キャッシュ16に記憶されている。従ってバッファー25は、レジスタ101のトラック・アドレスに対応する命令セグメントを記憶するために用いられるレジスタを含む必要がない。同様に、CPU10がTAKENシグナル20を生成する限り、分岐が取られたか否かに関わらず、レジスタ202の命令ブロックはレジスタ205に書き込まれる。
セレクタ35がレジスタ104からトラック・アドレスを選ぶとき、セレクタ38はレジスタ204から命令ブロックを選ぶ。
セレクタ36 がレジスタ106からトラック・アドレスを選ぶとき、セレクタ39はレジスタ206から命令ブロックを選ぶ。
バッファー41はより小さい容量をもち、バッファー25の近くに位置する。従ってクリップされ破棄された命令ブロックが再びバッファー25に充填される必要があるとき、先ずバッファー41の中でマッチング操作が行なわれる。もしマッチがあった場合、命令ブロックは直接に読み出され、バス42を経てバッファー25に送られ、L2キャッシュ17から命令ブロックが読み出される際の長い遅延を避けることができる。さらにL2キャッシュにアクセスする回数も削減される。バッファー41 の構造はどんな適切な構造でもよく、例えば先入先出(FIFO)バッファー、フルアソシアティブ構造、セットアソシアティブ構造などでも良い。
そうでなければ、TBLとのマッチング操作が必要になる可能性がある。
サブ・ブロック番号’01’はメモリ領域61に対応する; などなど。
ストライドとは、CPU10が連続的に同じデータアクセス命令を2回実行するときの、対応するデータアドレスの差異である。
DBN1は、トラック・テーブル13のデータポイントへ、バス1107と最初のマルチプレクサ911を経て、元々の中身を書き換えるために充填される。
分岐ターゲットと分岐ソースが同じページ内にある時、オペレーションは図9の実施形態におけるオペレーションと同様であり、ここでは繰り返さない。もし分岐ターゲットアドレスがページ外にある時、バス907を経てスキャナ12から送られたPCアドレスは、物理アドレスのページ番号は必ずしも連続していないので、誤りかもしれない。それゆえ、分岐ターゲットがページ外にある場合、エラーを防止する仕組みが必要である。以下の方法は上記のエラーを防止することができる。
よって、分岐ターゲット・アドレスがBN1タイプに変換された後、DMAI BN1がバス30から読み出された時、システムはアドレス確認操作をしない。その代わりに、テーブル・エントリーが実行される直接分岐タイプとみなされる。
この構造概略図は図9の構造概略図と類似している。違いは、アクティブ・リスト91の各テーブル・エントリーが、L2命令キャッシュ17のL2命令ブロックに対応する、仮想アドレスと物理アドレスのタグ部分を記憶する点で、各各テーブル・エントリーは有効ビットを持つ。記憶された仮想アドレスはスレッド番号(TID)も含む。アクティブ・リスト91の構造は、ダイレクト・マップ・アクティブ・リスト、セット・アソシアティブ・アクティブ・リスト、そしてフル・アソシアティブ・アクティブ・リストのいずれでも良い。加えて、分岐ターゲットアドレスを計算するために、アクティブ・リスト91の物理ページ番号はバス1801を経てスキャナ12に送られる。アクティブ・リスト91の仮想ページ番号とタグ部分の低位ビットは、分岐ターゲットアドレスを計算するために、バス1803を経てスキャナ12へ送られる。アクティブ・リスト91のマッチング操作によって得られた物理ページ番号はバス907を経てスキャナ12へ直接送られる。仮想アドレスはバス1807を経て送られる。バス1807は二つのソースを持つ:スキャナ12のバス907とCPU10のバス908である。
このシナリオをシナリオ7と呼ぶ。このとき、CPUはTLBミス例外を生成する。オペレーティング・システムは現行テクノロジーにもとづいて例外を取り扱う。オペレーティング・システムはバス1807の仮想アドレスに対応する物理ページ番号を探し、TLB充填操作を行なう。バス1909からの物理ページ番号はアクティブ・リスト91へ送られ、マルチプレクサ1934によって選択される。選ばれた結果は、マルチプレクサ1936によって選ばれ一時的にレジスタ1918に記憶された物理ページ番号と比較される。比較結果1907と、マルチプレクサ1932によって選ばれレジスタ1919に一時的に記録された比較結果(タグの低位ビットと比べる)は’AND’操作を行い、比較結果1905を生成する。もし結果が’1’であれば、それは複数のスレッド番号と仮想ページ番号が同じ物理ページ番号にマップされること(すなわち、エイリアシング・シナリオ)を示す。これをシナリオ7と呼ぶ。このとき、バス1807のスレッド番号1988と仮想ページ番号1987は、アンチエイリアシング・テーブル1950で交換ロジックによって特定されたテーブル・エントリーのセグメント1910に書き込まれる。
マルチプレクサ1938によって選ばれたバス1807の指標セグメントBNX2は、アンチエイリアシング・テーブル1950のセグメント1912にバス1939を経て書き込まれる。同時にバス1939の指標セグメント1985(BNX2)とバス1807のL2キャッシュ・サブ・ブロック番号1984は一緒に接合され、バス903を経てメモリ902へ送られる。前述の実施形態を参考に、BN1Xとのマッチングの後、結果がトラック・テーブル13に書き込まれる。
それから、DBN1あるいはDBN2がトラック・テーブルに送られ、読み出されたエントリーの中に記憶される。同様のプロセスはここでは繰り返さない。
あるレベルのキャッシュ(例えばBN1Y、BN2Y..)の分岐ソース命令に対応するキャッシュ・ブロック・オフセットの外側の最低ビットと、分岐距離の該当するビットの合計が、分岐ターゲット命令が、分岐ソース命令を含むレベル(例えばL2)命令ブロックの次もしくは前の命令ブロックの中にあるか否かを決定する。同様に、あるレベルのキャッシュ(例えばDBN1Y、DBN2Y..)のデータ自身に対応するキャッシュ・ブロック・オフセットの外側の最低ビットとストライドの合計が、次のデータが、現在のデータを含むレベル(例えばL2)データブロックの次もしくは前のデータ・ブロックに中にあるか否かを決定する。
トラッカーのリード・ポインタによってポイントされたトラック・ポイントの命令タイプが無条件分岐命令であるとき、リード・ポインタは分岐ターゲット・トラック・ポイントへ移動する;
トラッカーのリード・ポインタによってポイントされたトラック・ポイントの命令タイプが条件付き分岐命令であるとき、CPUによって生成されたTAKENシグナルにもとづいて、リード・ポインタは次のトラック・ポイントまたは分岐ターゲット・トラック・ポイントへ移動する。トラッカーのリード・ポインタはどの分岐ポイントからでもスタートできる。トラック・ポイント・タイプおよびまたはCPUによって実行された分岐ポイントの実行状況にもとづいて、リード・ポインタは、次の連続した命令の最初の分岐ポイント、もしくは分岐ターゲット命令と後続する命令の最初の分岐ポイント、へ到達する。従ってトラック・テーブルでのコントロール・フロー情報は二分木の形で存在し、各分岐ポイントが分岐命令に対応する。二分木は完全二分木であり、隣接する分岐ポイント間の径路情報を含み、各分岐ポイントから後続の分岐ポイントまでその2つの又を経て到達できる。
分岐ターゲット命令がL2キャッシュにあるとき、分岐ポイントに含まれるトラックアドレスはBN2である;
分岐ターゲット命令が他のレベルのキャッシュにあるとき、トラックアドレスは同じパターンをたどる;
データポイントのトラックアドレスも分岐ポイントのトラックアドレスと同様である。
例えば、図17に示されるように、BN1とBN2以外にも(3つの状況を含む: 同じL2命令ブロック内、前のL2命令ブロック内、次のL2命令ブロック内)、バス1506のアドレス・フォーマットは仮想アドレスまたは物理アドレスでありうる。従って、全部で6つの状況がある。3ビットのアドレスタイプ番号は6つの状況を表現できる。より多くのビットのアドレスタイプ番号はより多くの階層のキャッシュ(すなわち、より多くのトラック・アドレス)、データ・エンジンによって出力されたアドレス、などなどに適用できる。詳細はここでは繰り返さない。
開示された実施形態の技術的解決法に対する様々な代替、修正、または等価な置き換えはこの分野に精通した者には自明であり、この開示に含むことができる。
Claims (85)
- 実行可能命令を記憶するように設計されたm個の異なるスピードを持ったメモリ装置(ここでmは2以上の自然数であり、そしてm個のメモリ装置は少なくとも遅いスピードのメモリと速いスピードのメモリを含む)と、
m個のメモリ装置とカップリングが可能で、1つあるいはそれ以上の実行可能命令を実行するように設計された中央演算装置(CPU)と、
トラック・テーブルに記憶された分岐命令のターゲット命令のトラック・アドレスにもとづいて、遅いスピードのメモリを制御し速いスピードのメモリに命令を提供するように設計された命令制御ユニットと、
を含むことを特徴とする命令処理システム。 - 命令制御ユニットが、テーブルの各行がトラックに対応している、複数の行からなるトラック・テーブルを含む
ことを特徴とする請求項1に記載のシステム。 - テーブルの各行が複数のエントリを持ち、各エントリはトラック・ポイントに対応し、
そしてトラック・ポイントは最も速いメモリに記憶されている分岐命令の、ターゲット命令のターゲット・アドレスを記憶している(ここで分岐命令のターゲット命令は最も速いメモリー以外の、m個の中の1つあるいはそれ以上のメモリ装置に記憶されている)、
ことを特徴とする請求項2に記載のシステム。 - 最もアクセススピードの遅いメモリに記憶された命令のブロックアドレスと、
そして最もアクセススピードの遅いメモリに記憶された命令が他のm-1個のメモリ装置に記憶されているときの、他のm-1個のメモリ装置のトラック・アドレスと、を記憶するように設定されたアクティブ・リスト
をさらに含むことを特徴とする請求項1に記載のシステム。 - 分岐命令のターゲット命令のトラック・アドレスが行番号と列番号を含み、
分岐命令のターゲット命令のブロック・アドレスに対するアクティブ・リストにおけるマッチング操作の後に、トラック・アドレスの行番号が得られ、
命令ブロックにおける分岐命令のターゲット命令のオフセットがトラック・アドレスの列(コラム)番号である、
ことを特徴とする請求項4に記載のシステム。 - 命令制御ユニットはさらにトラッカーを含む:
トラック・テーブルに記憶された分岐命令のターゲット命令のトラック・アドレスにもとづいて、トラッカーは先行して移動し、分岐命令の第1層にポイントし、トラック・テーブルから分岐命令の第1層のターゲット命令のトラック・アドレスを読み出す;
トラッカーがターゲット命令のトラック・アドレスが最も速いメモリに該当することを見つけたとき、最も速いメモリがCPUに命令を提供する;
そしてトラッカーがターゲット命令のトラック・アドレスが、最も速いメモリ以外のm-1個のメモリ装置の中の少なくとも1つのメモリに該当することを見つけたとき、m-1個のメモリ装置の中の少なくとも1つのメモリがCPUそして最も速いメモリに対してあらかじめ命令を提供する。
これらのことを特徴とする請求項5に記載のシステム。 - 分岐命令の第1層に対応するトラック・アドレスを含むように設計されたレジスタ(このトラック・アドレスはターゲット命令に該当するトラック・アドレスをトラック・テーブルにおけるアドレス指定操作によって読み出すために使われる);
分岐命令セグメントの第1層の次の分岐命令のトラック・アドレスを得るように設計されたインクリメンタ;
そして分岐命令の第1層のターゲット命令のターゲットアドレスと分岐命令セグメントの第1層の次の分岐命令のトラック・アドレスのうち1つを選択し、選択したトラック・アドレスをレジスタに記憶するように設計されたセレクタ;
これらを含むトラッカーを特徴とする請求項6に記載のシステム。 - 命令制御ユニットはさらにプレディクタを含み、プレディクタはトラッカーによってポイントされた分岐命令セグメントの後の分岐命令セグメントを取得するように設計されることを特徴とする請求項6に記載のシステム。
- プレディクタはさらに以下のように設定される:
分岐命令セグメントの第1層の後の分岐命令セグメントのn層目を取得する(nは2以上の自然数);
そして最も遅いスピードのメモリを制御して、速いスピードのメモリに記憶されていない分岐命令セグメントのn層目を、速いスピードのメモリに供給する。
これらのことを特徴とする請求項8に記載のシステム。 - プレディクタは以下を含む:
分岐命令セグメントのn層目の分岐命令のトラック・アドレスを取得するように設計されたインクリメンタ;
それぞれ分岐命令セグメントのn層目の分岐命令のトラック・アドレスを記憶するように設計された2n個のレジスタ;
そしてトラック・テーブルにて分岐命令のターゲット命令のトラック・アドレスを得るためにアドレス指定操作を行い、分岐命令のトラック・アドレスを選ぶように設計されたセレクタ。
これらのことを特徴とする請求項9に記載のシステム。 - プレディクタは予測深度を調節するために、分岐命令のL層分のトラック・アドレスを記録するためにレジスタの一部を使う(Lはmよりも小さな自然数);
そしてプレディクタはプレディクタの機能をストップさせるようにはレジスタを使用しない。
これらのことを特徴とする請求項10に記載のシステム。 - 命令制御ユニットはさらに、
分岐命令セグメントの第1層の後の分岐命令セグメントの第n層を取得するように設計され、
遅いスピードのメモリを制御して、速いスピードのメモリに記憶されていない分岐命令のn層目を、速いスピードのメモリに供給するプレディクション・トラッカー(ここでnは2以上の自然数)を含むことを特徴とする請求項5に記載のシステム。 - プレディクション・トラッカーは以下を含む:
分岐命令セグメントの第n層の分岐命令のトラック・アドレスを取得するように設計されたインクリメンタ;
分岐命令セグメントの第1層から第n層までの分岐命令のトラック・アドレスそれぞれを記憶するように設計された2n+1-2 個のレジスタ;
そして順番に実行されない分岐命令セグメントに対応するトラック・アドレスを、分岐命令の分岐が取られたか否かの情報にもとづいて、クリップするように設計されたn+1層のセレクタ。
これらのことを特徴とする請求項9に記載のシステム。 - トラック・アドレスをクリップした後、出力されたトラック・アドレスは分岐命令の第1層にポイントする;
トラック・アドレスにもとづいて、分岐命令の第1層のターゲット命令のトラック・アドレスをトラック・テーブルから読み出す;
そしてターゲット命令のターゲット・アドレスにもとづいて、最も速いスピードのメモリからの命令がCPUに供給される。
これらのことを特徴とする請求項13に記載のシステム。 - プレディクション・トラッカーは予測深度を調節するために、分岐命令のJ層分のトラック・アドレスを記録するためにレジスタの一部だけを使う(Lはnよりも小さな自然数);
そしてプレディクション・トラッカーは全てのレジスタの中の2n+1-4 個のレジスタを、先行して移動し分岐命令の第1層をポイントするという機能のためだけに使うことはしない。
これらのことを特徴とする請求項13に記載のシステム。 - メモリから提供される分岐命令のターゲット命令のブロックアドレスを計算し、
該当するトラック・アドレスを得るためのマッチング操作を行なうために、分岐命令のターゲット命令のブロックアドレスをアクティブ・リストに送る、
このように設計されたスキャナを含むことを特徴とする請求項1に記載のシステム。 - マッチング結果が分岐命令のターゲット命令が速いスピードのメモリに記憶されていないことを示したとき、アクティブ・リストが遅いスピードのメモリを制御して分岐命令のターゲット命令を供給することを特徴とする請求項16に記載のシステム。
- 遅いスピードのメモリから最も速いスピードのメモリへ提供される命令を一時的に記憶する第1バッファーをさらに含むことを特徴とする請求項1に記載のシステム。
- 第1バッファーは以下を含む:
第1層からn-1層までの分岐命令を記憶するように設計された2n+1-3 個のレジスタ(ここで2以上の自然数);
そして最も速いスピードのメモリに供給される分岐命令セグメントを選ぶように設計された2n+1-2 個のセレクタ。
これらのことを特徴とする請求項18に記載のシステム。 - 最も速いスピードのメモリに供給される選ばれなかった分岐命令セグメントを一時的に記憶するように設計された第2バッファー;
そして最も速いスピードのメモリと第1バッファーに含まれていない命令を、トラック・アドレスのマッチングによって第2バッファーから探し出すように設計されたトラッカー。
これらをさらに含むことを特徴とする請求項19に記載のシステム。 - メモリから提供される命令の分岐命令のターゲット命令のブロックアドレスを計算する;
分岐命令のターゲット命令のブロックアドレスに対してマッチング操作を行なった後に、ターゲット命令に対応するトラック・アドレスの行番号を得る;
命令ブロック中のターゲット命令のオフセットによって、ターゲット命令に対応するトラック・アドレスの列番号を得る;
そしてトラック・テーブルに記憶される分岐命令のターゲット命令に対応するトラック・アドレスの行番号と列番号に応じて、遅いスピードのメモリを制御し速いスピードのメモリーに命令を供給する。
これらからなることを特徴とする命令処理方法。 - テーブルの各行が複数のエントリを持ち、各エントリはトラック・ポイントに対応し、
それらは最も速いメモリに記憶されている分岐命令の、ターゲット命令のターゲット・アドレスを記憶する。
ここで分岐命令のターゲット命令はm個の異なるアクセススピードのメモリ装置の中の少なくとも1つのメモリに記憶されており、mは2以上の自然数である。
これらのことを特徴とする請求項21に記載の方法。 - 最も速いスピードのメモリに命令を供給するために遅いスピードのメモリを制御することは以下のことを含む:
トラック・テーブルに記憶されている分岐命令のターゲット命令のトラック・アドレスにもとづいて、分岐命令の中央演算装置(CPU)による実行に先んじて、分岐命令の第1層へ移動しポイントする;
分岐命令の第1層のターゲット命令のトラック・アドレスをトラック・テーブルから読み出す;
ターゲット命令のトラック・アドレスが最速メモリに対応しているとき、最速メモリからCPUに対して命令を供給する;
そしてターゲット命令のトラック・アドレスが最速メモリ以外のm-1のメモリに対応しているとき、それらのm-1のメモリからCPUと最速メモリへ命令を先んじて供給する。
これらのことを特徴とする請求項21に記載の方法。 - 遅いスピードのメモリを制御して最も速いスピードのメモリに命令を供給する方法は以下を含む:
分岐命令セグメントの第1層の後の分岐命令セグメントの第n層を取得する(ここでnは2以上の自然数である);
遅いスピードのメモリを制御して、速いスピードのメモリに記憶されていない分岐命令セグメントの第n層を、速いスピードのメモリに供給する。
これらのことを特徴とする請求項23に記載の方法。 - 分岐命令の分岐が取られたか否かの情報に応じて、順番に実行されない分岐命令セグメントに対応するトラック・アドレスをクリッピングする
ことを特徴とする請求項24に記載の方法。 - トラック・アドレスをクリッピングした後、出力されたトラック・アドレスが分岐命令の第1層をポイントする;
出力されたトラック・アドレスに応じて、分岐命令の第1層のターゲット・アドレスのトラック・アドレスがトラック・テーブルから読み出される;
そしてターゲット・アドレスのトラック・アドレスに応じて、最速スピードのメモリから命令がCPUに供給される。
これらのことを特徴とする請求項25に記載の方法。 - マッチング結果が分岐命令のターゲット命令は速いスピードのメモリに記憶されていないことを示すとき、アクティブ・リストが遅いスピードのメモリを制御して分岐命令のターゲット命令を供給することを特徴とする請求項26に記載の方法。
- 命令制御ユニットがさらにトラッカーを含み、トラッカーは以下のように設計される:
リード・ポインタをトラック・アドレスとして使い、トラック・テーブルと最速スピードのメモリにおけるアドレス指定操作を行なう;
トラック・ポイントの中身を読み出しリード・ポインタの値を更新する;
そして同時にCPUで実行するための命令を読み出す。
これらのことを特徴とする請求項3に記載のシステム。 - 命令制御ユニットによってトラック・テーブルのトラック・ポイントから読み出された命令タイプが間接分岐命令であるとき、CPUは命令を実行し分岐ターゲット・アドレスを生成し、そして分岐ターゲット・アドレスはトラック・アドレスに変換される。
これらのことを特徴とする請求項1に記載のシステム。 - CPUによって生成された間接分岐ターゲット・アドレスがアクティブ・リストによってトラック・アドレスに変換され、対応するトラック・テーブルのトラック・ポイントに記憶される;
そしてトラッカーのリード・ポインタがトラック・ポイントを再びポイントしたとき、アドレスは直接分岐ポイントとして投機的実行を行なうために用いられ、CPUによって現在生成された分岐ターゲット・アドレスはトラック・ポイントのトラック・アドレスに対応する命令アドレスと比較される。
ここで、CPUによって現在生成された分岐ターゲット・アドレスがトラック・ポイントのトラック・アドレスに対応する命令アドレスに等しいとき、投機的実行は正しく、後続するオペレーションが実行される;
そしてCPUによって現在生成された分岐ターゲット・アドレスがトラック・ポイントのトラック・アドレスに対応する命令アドレスに等しくないとき、
投機的実行は正しくなく、CPUによって生成された分岐ターゲット・アドレスはトラック・アドレスに変換され、そして後続するオペレーションが実行される。
これらのことを特徴とする請求項29に記載のシステム。 - 分岐ターゲット命令とデータが置かれているメモリの異なるレベルに応じて、異なるタイプのトラック・アドレスがトラック・テーブルのトラック・ポイントに記憶される;
異なるタイプのトラック・アドレスは異なるレベルのメモリに対応している;
そしてアクティブ・リストに記憶されている情報にもとづいて、異なるレベルのキャッシュ・メモリのトラック・アドレスが変換される。
これらのことを特徴とする請求項2に記載のシステム。 - 命令制御ユニットによってトラック・テーブルのトラック・ポイントから読み出されたアドレスが、遅いスピードのメモリに対応するトラック・アドレスであったとき、トラック・アドレスはより速いスピードのメモリに対応するトラック・アドレスに変換されるためにアクティブ・リストに送られ、そしてトラック・テーブルのトラック・ポイントに充填され、同時に遅いスピードのメモリからの対応する命令ブロックもしくはデータブロックがより速いスピードのメモリに記憶される。
これらのことを特徴とする請求項31に記載のシステム。 - 最も遅いスピードのメモリの1つのメモリ・ブロックに対応するアドレスの前のメモリ・ブロックもしくは次のメモリ・ブロックが最も遅いスピードのメモリに記憶されているとき、アクティブ・リストも最も遅いスピードのメモリのメモリ・ブロックに対応するアドレスの前のメモリ・ブロックもしくは次のメモリ・ブロックのメモリ位置情報を記憶する。
これらのことを特徴とする請求項2に記載のシステム。 - 命令アドレスもしくはデータアドレスが最も遅いスピードのメモリの現時点のメモリ・ブロックの前のメモリ・ブロックもしくは次のメモリ・ブロックに記憶されているとき、アクティブ・リストに記憶されている前のメモリ・ブロックもしくは次のメモリ・ブロックのメモリ位置情報にもとづいて、命令もしくはデータが最も遅いスピードのメモリの中から直接見つけられる。
これらのことを特徴とする請求項33に記載のシステム。 - スキャナは分岐ターゲット命令アドレスが境界の外か否かを判断する;
そして判断結果に応じて、異なる場所に置かれている分岐ターゲット命令に対して異なるフォーマットのアドレスが与えられる。
これらのことを特徴とする請求項14に記載のシステム。 - 命令処理システムは、データアクセス命令の次データアドレスが境界の外か否かを判断するように設計されたデータエンジンを含む;
そして判断結果に応じて、異なる場所に置かれている次データには異なるフォーマットのアドレスが与えられる。
これらのことを特徴とする請求項14に記載のシステム。 - 分岐ターゲット命令アドレスが、1つ以上のレベルのメモリにおいて、分岐ソース命令を含む同じメモリ・ブロック内にあるとき、より高レベルのメモリ内の分岐ターゲット命令のトラック・アドレスが分岐ターゲット命令のトラック・アドレスとして用いられる;
分岐ソース命令のトラック・アドレスのブロック番号(BNX)が分岐ターゲット命令のトラック・アドレスのBNXとして用いられる;
そしてそのレベルのメモリに対応する分岐ターゲット命令アドレスのブロック・オフセット番号(BNY)部分が分岐ターゲット命令のトラック・アドレスのBNYとして用いられる。
これらのことを特徴とする請求項35に記載のシステム。 - 分岐ターゲット命令アドレスがある1つのレベルのメモリの中の分岐ソース命令を含むメモリ・ブロックの前もしくは次のメモリ・ブロックに置かれているとき、当該レベルのメモリにおける分岐ターゲット命令のトラック・アドレスが分岐ターゲット命令のトラック・アドレスとして用いられる;
分岐ソース命令を含むメモリ・ブロックの前もしくは次のメモリ・ブロックのBNXが分岐ターゲット命令のトラック・アドレスのBNXとして用いられる;
そしてそのレベルのメモリに対応する分岐ターゲット命令アドレスのBNY部分が分岐ターゲット命令のトラック・アドレスのBNYとして用いられる。
これらのことを特徴とする請求項37に記載のシステム。 - スキャナはまた、あるレベルのメモリの分岐ソース命令に対応するメモリ・ブロック・オフセットと、そのレベルのメモリにおける分岐距離に対応するメモリ・ブロック・オフセットを加算することによりキャリー出力を生成するように設定された、加法器を含む;
分岐距離が正もしくはゼロで、当該レベルのメモリにおける分岐距離に対応するメモリ・ブロック・オフセットの外側の全てのビットが’0’でかつキャリー出力が’0’であるとき、
分岐ターゲットは当該レベルのメモリにおける分岐ソース命令を含む命令ブロックの中に位置している;
分岐距離が負で、分岐距離に対応するメモリ・ブロック・オフセットの外側の全てのビットが’1’でかつキャリー出力が’1’であるとき、分岐ターゲットは分岐ソース命令を含む命令ブロックの中に位置している;
これらのことを特徴とする請求項37に記載のシステム。 - 加法器はさらに、あるレベルのメモリにおける分岐ソース命令に対応するキャッシュ・ブロック・オフセットの外側の最低ビットと、分岐距離の該当ビットとを加算して、分岐ターゲットが、当該レベルのメモリの分岐ソース命令を含む命令ブロックの連続したアドレスにおける次もしくは前の命令ブロックにあるか否かを判断するように設定される。
これらのことを特徴とする請求項39に記載のシステム。 - 次データアドレスが、1つ以上のレベルのメモリにおいて、現時点のデータを含む同じメモリ・ブロックの中にあるとき、より高レベルのメモリ内の次データのトラック・アドレスが次データのトラック・アドレスとして用いられる;
現時点のデータのトラック・アドレスのデータ・ブロック番号(DBNX)が次データのトラック・アドレスのDBNXとして用いられる;
そして当該レベルのメモリに対応する次データのデータ・ブロック・オフセット番号(DBNY)が次データのトラック・アドレスのDBNYとして用いられる。
これらのことを特徴とする請求項37に記載のシステム。 - 次データアドレスが、現時点のデータを含むある1つのレベルのデータ・ブロックの前データ・ブロックもしくは次データ・ブロックに置かれているとき、そのレベルのメモリにおける次データのトラック・アドレスが次データのトラック・アドレスとして用いられる;
次データを含むメモリ・ブロックの前もしくは次のメモリ・ブロックのDBNXが次データのトラック・アドレスのDBNXとして用いられる;
そしてそのレベルのメモリに対応する次データのDBNYが次データのトラック・アドレスのDBNYとして用いられる。
これらのことを特徴とする請求項41に記載のシステム。 - データエンジンはまた、あるレベルのメモリの現時点データに対応するメモリ・ブロック・オフセットと、そのレベルのメモリにおけるストライドに対応するメモリ・ブロック・オフセットを加算することによりキャリー出力を生成するように設定された、加法器を含む;
ストライドが正もしくはゼロで、当該レベルのメモリにおけるストライドに対応するメモリ・ブロック・オフセットの外側の全てのビットが’0’でかつキャリー出力が’0’であるとき、
次データは当該レベルのメモリにおける現時点データを含むメモリ・ブロックの中に位置している;
ストライドが負で、当該レベルのメモリにおけるストライドに対応するメモリ・ブロック・オフセットの外側の全てのビットが’1’でかつキャリー出力が’1’であるとき、次データは現時点データを含むメモリ・ブロックの中に位置している;
これらのことを特徴とする請求項41に記載のシステム。 - 加法器はさらに、あるレベルのキャッシュにおける現時点データに対応するキャッシュ・ブロック・オフセットの外側の最低ビットと、ストライドの該当ビットとを加算して、次データが、当該レベルのメモリの現時点データを含むデータ・ブロックの連続したアドレスにおける次もしくは前のデータ・ブロックにあるか否かを判断するように設定される。
これらのことを特徴とする請求項43に記載のシステム。 - 各レベルのデータメモリがデータ・トラック・アドレス変換モジュールに対応する;
データ・トラック・アドレス変換モジュールの行とあるレベルのデータメモリのデータ・ブロックとの間には一対一の対応関係がある;
各行はデータ・ブロック番号と、低いレベルのデータメモリにおける対応するサブ・ブロック番号とを記憶し、従ってデータメモリのあるレベルのデータ・トラック・アドレスのブロック番号が、データメモリの低いレベルのデータ・トラック・アドレスのデータ・ブロック番号に変換される;
そしてサブ・ブロック番号とデータ・メモリのそのレベルのデータ・トラック・アドレスのブロック・オフセットが融合されてデータメモリの低いレベルのデータ・トラック・アドレスのデータ・ブロック・オフセットを形成する。
これらのことを特徴とする請求項3に記載のシステム。 - 命令とデータが遅いアクセススピードのメモリを共有する;
そして最も遅いアクセススピードのメモリにおける命令ブロックとデータ・ブロックのブロック・アドレスがアクティブ・リストに記憶される。
これらのことを特徴とする請求項3に記載のシステム。 - 物理アドレスにもとづいて、アクティブ・リストと高レベルのメモリ装置に対応するメモリにおいてアドレス指定操作が行なわれる;
そして仮想ー物理変換モジュールがアクティブ・リスト、スキャナもしくはデータエンジン、そしてCPUとの間のパス上に置かれる。
これらのことを特徴とする請求項2に記載のシステム。 - スキャナもしくはデータエンジンから生成された仮想アドレスが仮想ー物理変換モジュールによって物理アドレスに変換されたあと、物理アドレスはアクティブ・リストへ送られ、トラック・アドレスに変換される;
CPUによって生成された間接分岐命令アドレスもしくはデータアドレスが仮想ー物理変換モジュールによって物理アドレスに変換されたあと、物理アドレスはアクティブ・リストへ送られ、トラック・アドレスに変換される;
そしてトラック・アドレスによってメモリから得られた該当する命令もしくはデータがCPUで使われるために供給され、最高レベルのメモリに充填される。
これらのことを特徴とする請求項47に記載のシステム。 - 仮想ー物理変換モジュールの各エントリは、仮想ー物理変換モジュールにおける連続した仮想アドレスの前ページもしくは次ページの物理ページアドレスの位置情報を記憶する;
物理アドレスにもとづいた計算から得られた分岐ターゲット命令アドレスもしくは次データアドレスが、分岐ソース命令アドレスもしくは現時点データアドレスを含むページの前ページもしくは次ページに置かれているとき、前ページもしくは次ページの位置情報に応じて、対応する物理ページアドレスが仮想ー物理変換モジュールにおいて見つけられ、分岐ターゲット命令もしくは次データの物理アドレスを構成する;
物理アドレスはアクティブ・リストに送られトラック・アドレスに変換される。
これらのことを特徴とする請求項2に記載のシステム。 - 物理アドレスにもとづいて、アクティブ・リストと高レベルのメモリ装置に対応するメモリにおいてアドレス指定操作が行なわれる;
アクティブ・リストはアンチエイリアシング・テーブルを含む。
アンチエイリアシング・テーブルの各行は仮想ページ番号と、アクティブ・リスト本体における仮想ページ番号に対応する物理アドレスページ番号のブロック番号を記憶する;
そしてアクティブ・リストにおける命令ブロックもしくはデータブロックの物理アドレスに対応する仮想アドレスの総数が1より多いとき、アクティブ・リスト本体は命令ブロックもしくはデータブロックの物理アドレスと物理アドレスに対応する仮想アドレスを記憶し、他の仮想アドレスの仮想ページと対応するブロック番号はアンチエイリアシング・テーブルに記憶される。
これらのことを特徴とする請求項3に記載のシステム。 - CPUとスキャナもしくはデータエンジンによって出力された仮想アドレスが、アクティブ・リストの本体とアンチエイリアシング・テーブルの仮想アドレスとがマッチングされたとき、仮想アドレスのマッチング結果と仮想ページ番号が出力される。
ここでマッチング結果は以下の結果のうちの1つを示す:
仮想アドレスとマッチする;
仮想アドレスとマッチせず、仮想アドレスページ番号とマッチする;
そして仮想アドレスページ番号とマッチしない;
そしてCPUとスキャナもしくはデータエンジンによって出力された物理アドレスが、アクティブ・リストの本体の中の物理アドレスとマッチングされるとき、物理アドレスのマッチング結果と物理アドレスページ番号が出力される。
ここでマッチング結果は以下の結果のうちの1つを示す:
物理アドレスとマッチする;
物理アドレスとマッチせず、物理アドレスページ番号とマッチする;
そして物理アドレスページ番号とマッチしない;
これらのことを特徴とする請求項50に記載のシステム。 - トラック・アドレスにもとづいて、アドレス指定操作がトラック・テーブルと最速メモリにおいて行なわれる;
トラック・ポイントの中身が読み出される;
トラック・ポイントの読み出された中身にもとづいて、リード・ポインタの値が更新される;
そしてリード・ポインタの更新値に応じて、命令がCPUで実行されるために読み出される。
これらのことを特徴とする請求項20に記載の方法。 - トラック・テーブルにおける制御フロー情報が2分木の型で存在し、各分岐ポイントは分岐命令に対応する、
ことを特徴とする請求項19に記載の方法。 - 2分木は完全2分木であり、二つの隣接する分岐ポイント間のパス情報を含み、従って2つの又の全ての隣接する後続分岐ポイントは分岐ポイントから到達できる、ことを特徴とする請求項53に記載の方法。
- CPUが間接分岐命令を実行し分岐ターゲットアドレスを生成した後、分岐ターゲットアドレスはトラック・アドレスに変換される、
ことを特徴とする請求項19に記載の方法。 - 命令が無条件分岐命令であるとき、命令の分岐ターゲット・トラック・アドレスが次の連続した命令のトラック・アドレスとして用いられる;
そして命令が条件分岐命令であるとき、CPUが条件分岐命令を実行したとき分岐が取られたか否かの情報に応じて、次の命令と分岐ターゲット命令のトラック・アドレスのいずれか一方が、次の連続した命令のトラック・アドレスとして選択される。
これらのことを特徴とする請求項19に記載の方法。 - CPUによって生成された間接分岐ターゲットアドレスがトラック・アドレスに変換されトラック・テーブルの対応するトラック・ポイントに記憶される;
トラック・ポイントが再びポイントされとき、トラック・ポイントは直接分岐ポイントとして投機的に実行されるために用いられ、そしてCPUによって現時点で生成された分岐ターゲットアドレスとトラック・ポイントのトラック・アドレスに対応する命令アドレスが比較される:
比較結果が等値であるとき、投機的実行は正しく、後続するオペレーションが引き続き行なわれる;
比較結果が等値でないとき、投機的実行は正しくなく、CPUによって生成された分岐ターゲットアドレスがトラック・アドレスに変換され、そして後続するオペレーションが行なわれる。
これらのことを特徴とする請求項56に記載の方法。 - 分岐ターゲット命令もしくはデータが置かれている異なるレベルのメモリに応じて、トラック・テーブルのトラック・ポイントは異なるフォーマットのトラック・アドレスを記憶する;
トラック・アドレスの異なるフォーマットは異なるレベルのメモリに対応する;
そして異なるレベルのメモリのトラック・アドレスが変換される。
これらのことを特徴とする請求項19に記載の方法。 - アドレス・フォーマットは命令アドレス、データアドレス、そしてトラック・アドレスを含む、
ことを特徴とする請求項58に記載の方法。 - データアクセス命令に対応するトラック・ポイントはトラック・アドレスとデータ・ストライドを記憶する、
ことを特徴とする請求項58に記載の方法。 - トラック・テーブルのトラック・ポイントから読み出されたトラック・アドレスが遅いアクセススピードのメモリに対応するトラック・アドレスであるとき、トラック・アドレスは速いアクセススピードのメモリに対応するトラック・アドレスに変換される;
トラック・アドレスはトラック・テーブルのトラック・ポイントに充填される;
そしてトラック・アドレスに対応する命令ブロックもしくはデータブロックが速いアクセススピードのメモリに記憶される。
これらのことを特徴とする請求項58に記載の方法。 - 最も遅いアクセススピードのメモリのメモリブロックの連続したアドレスの前もしくは次のメモリブロックが、最も遅いアクセススピードのメモリに記憶されているとき、アクティブ・リストは前もしくは次のメモリブロックの位置情報を記憶する、
ことを特徴とする請求項19に記載の方法。 - 命令アドレスもしくはデータアドレスが、最も遅いメモリにある現時点のメモリブロックの前もしくは次のメモリブロックにあるとき、アクティブ・リストに記憶された前もしくは次のメモリブロックの位置情報にもとづいて、命令もしくはデータが最も遅いメモリから直接見つけられる、
ことを特徴とする請求項62に記載の方法。 - メモリブロックが交換され充填されるとき:
メモリブロックの前と次のメモリブロックの位置が知られているとき、前のメモリブロックと次のメモリブロックの位置情報が、アクティブ・リストのメモリブロックに対応する前のメモリブロックと次のメモリブロックにそれぞれ記憶される;
そしてメモリブロックの位置情報がアクティブ・リストにおける前のメモリブロックに対応する次のメモリブロックのフィールドもしくはアクティブ・リストにおける次のメモリブロックに対応する前のメモリブロックのフィールドのいずれかに記憶される。
これらのことを特徴とする請求項62に記載の方法。 - メモリブロックが交換され充填されるとき、アクティブ・リストにおけるメモリブロックに対応する前のメモリブロックの位置情報に応じて、前のメモリブロックに対応する次のメモリブロックの位置情報が消される;
そしてメモリブロックが交換され充填されるとき、アクティブ・リストにおけるメモリブロックに対応する次のメモリブロックの位置情報に応じて、次のメモリブロックに対応する前のメモリブロックの位置情報が消される;
これらのことを特徴とする請求項62に記載の方法。 - 分岐ターゲット命令アドレスが境界の外にあるか否かを判断する;
そして判断結果にもとづいて、異なる位置におかれている分岐ターゲット命令に異なるフォーマットのアドレスを与える、
ことを特徴とする請求項19に記載の方法。 - データアクセス命令の次データアドレスが境界の外にあるか否かを判断する;
そして判断結果にもとづいて、異なる位置におかれている次データに異なるフォーマットのアドレスを与える、
ことを特徴とする請求項19に記載の方法。 - 分岐ターゲット命令アドレスが、少なくとも1つのレベルのメモリの中の、分岐ソース命令を含む同じメモリブロックにあるとき、より高レベルのメモリの中の分岐ターゲット命令のトラック・アドレスが分岐ターゲット命令のトラック・アドレスとして用いられる;
分岐ソース命令のトラック・アドレスのブロック番号(BNX)が分岐ターゲット命令のトラック・アドレスのBNXとして用いられる;
そして当該レベルのメモリにおける分岐ターゲット命令アドレスのブロック・オフセット番号(BNY)が分岐ターゲット命令のトラック・アドレスのBNYとして用いられる。
これらのことを特徴とする請求項67に記載の方法。 - 分岐ターゲット命令アドレスが、あるレベルのメモリにおいて分岐ソース命令を含むメモリブロックの前もしくは次のメモリブロックに位置するとき、そのレベルのメモリにおける分岐ターゲット命令のトラック・アドレスが分岐ターゲット命令のトラック・アドレスとして用いられる;
分岐ソース命令を含むメモリブロックの前もしくは次のメモリブロックのBNXが分岐ターゲット命令のトラック・アドレスのBNXとして用いられる;
そして当該レベルのメモリにおける分岐ターゲット命令アドレスのBNY部分が分岐ターゲット命令のトラック・アドレスのBNYとして用いられる。
これらのことを特徴とする請求項68に記載の方法。 - 次データアドレスが、少なくとも1つのレベルのメモリの中の、現時点データを含む同じメモリブロックにあるとき、より高レベルのメモリの中の次データのトラック・アドレスが次データのトラック・アドレスとして用いられる;
次データのトラック・アドレスのデータブロック番号(DBNX)は現時点データのトラック・アドレスのDBNXと等しい;
そして次データのトラック・アドレスのデータ・ブロック・オフセット番号(DBNY)は当該レベルのメモリにおける次データのDBNY部分と等しい。
これらのことを特徴とする請求項67に記載の方法。 - 次データアドレスが、あるレベルのメモリにおいて現時点データを含むメモリブロックの前もしくは次のメモリブロックに位置するとき、そのレベルのメモリにおける次データのトラック・アドレスが次データのトラック・アドレスとして用いられる;
次データのトラック・アドレスのDBNXは現時点データを含むメモリブロックの前もしくは次のメモリブロックのDBNXと等しい;
そして次データのトラック・アドレスのDBNYは当該レベルのメモリにおける次データのDBNY部分と等しい。
これらのことを特徴とする請求項70に記載の方法。 - より高いレベルのメモリの各データブロックに対応する低レベルのメモリにおけるメモリブロック情報を記録する;
そしてその情報にもとづいて、より高いレベルのメモリにおけるデータ・トラック・アドレスを低レベルのメモリにおけるデータ・トラック・アドレスに変換する。
これらのことを特徴とする請求項67に記載の方法。 - 命令とデータが遅いアクセススピードのメモリを共有する;
そして最も遅いアクセススピードのメモリにおける命令ブロックとデータブロックのブロックアドレスがアクティブ・リストに記憶される。
これらのことを特徴とする請求項19に記載の方法。 - 仮想アドレスにもとづいて、アクティブ・リストと高次レベルメモリ装置に対応するメモリにおいてアドレス指定操作が行なわれる;
物理アドレスにもとづいて、低レベルのメモリ装置においてアドレス指定操作が行なわれる;
そして分岐ソース命令のターゲット命令がアクティブ・リストに対応するメモリに記憶されていないとき、ターゲット命令の仮想アドレスが物理アドレスに変換された後、物理アドレスが低いレベルのメモリに送られ該当する命令を取得する。
これらのことを特徴とする請求項19に記載の方法。 - 仮想アドレスにもとづいて、アクティブ・リストと高次レベルメモリ装置に対応するメモリにおいてアドレス指定操作が行なわれる;
物理アドレスにもとづいて、低レベルのメモリ装置においてアドレス指定操作が行なわれる;
そして次データがアクティブ・リストに対応するメモリに記憶されていないとき、次データの仮想アドレスが物理アドレスに変換された後、物理アドレスが低いレベルのメモリに送られ該当するデータを取得する。
これらのことを特徴とする請求項19に記載の方法。 - 物理アドレスにもとづいて、アクティブ・リストと高次レベルメモリ装置に対応するメモリにおいてアドレス指定操作が行なわれる;
スキャナもしくはデータエンジンによって生成された仮想アドレスが仮想ー物理変換モジュールによって物理アドレスに変換された後、物理アドレスはアクティブ・リストに送られトラック・アドレスに変換される;
CPUによって生成された間接分岐ターゲット命令アドレスもしくはデータアドレスが仮想ー物理変換モジュールによって物理アドレスに変換された後、物理アドレスはアクティブ・リストに送られトラック・アドレスに変換される;
そしてトラック・アドレスによってメモリから得られた該当する命令もしくはデータがCPUで使われるために供給され、そして高次レベルのメモリに充填される。
これらのことを特徴とする請求項19に記載の方法。 - 連続した仮想アドレスの前のもしくは次のページの物理ページアドレスの位置情報は記録される;
物理アドレスにもとづいた計算によって得られた分岐ターゲット命令アドレスもしくは次データアドレスが、分岐ソース命令もしくは現時点データを含むページの前もしくは次のページに位置するとき、前もしくは次のページの位置情報にもとづいて、該当する物理ページアドレスが分岐ターゲット命令もしくは次データの物理アドレスを構成するために見つけられる;
そして物理アドレスはアクティブ・リストに送られトラック・アドレスに変換される。
これらのことを特徴とする請求項68に記載の方法。 - 吟味された命令の物理アドレスにもとづいて、後続の命令アドレスが計算される;
後続の命令アドレスと吟味された命令アドレスが同じページ内にありそして同じメモリブロックにないならば、吟味された命令の物理アドレスにもとづいて、後続の命令アドレスがアクティブ・リストのトラック・アドレスに変換される;
そして後続の命令アドレスと吟味された命令アドレスが同じページ内にないならば、そのとき:
吟味された命令は間接分岐命令としてマークされる;
CPUが命令を実行し後続の命令アドレスを生成するとき、後続の命令アドレスが物理アドレスに変換される;
そして得られた物理アドレスはアクティブ・リストに送られトラック・アドレスに変換される。
これらのことを特徴とする請求項76に記載の方法。 - 物理アドレスにもとづいて、アクティブ・リストと高次レベルメモリ装置に対応するメモリにおいてアドレス指定操作が行なわれる;
アクティブ・リストはまたアンチエイリアシング・テーブルを含み、アンチエイリアシング・テーブルの各行は仮想ページ番号とアクティブ・リストの本体にある仮想ページに対応する物理アドレスページ番号を含むブロック番号を記憶する;
そしてアクティブ・リストにおける命令ブロックもしくはデータブロックの物理アドレスに対応する仮想アドレスの総数が1より多いとき、アクティブ・リストの本体は命令ブロックもしくはデータブロックのの物理アドレスと物理アドレスに対応する仮想アドレスを記憶し、他の仮想アドレスの仮想ページと対応するブロック番号はアンチエイリアシング・テーブルに記憶される。
これらのことを特徴とする請求項68に記載の方法。 - CPUとスキャナもしくはデータエンジンによって出力された仮想アドレスがアクティブ・リストの仮想アドレスとマッチングされるとき、仮想アドレスのマッチング結果と仮想ページ番号が出力される。ここでマッチング結果は以下のいずれかの結果を含む:
仮想アドレスとマッチする;
仮想アドレスとマッチせず、仮想ページ番号とマッチする;
仮想ページ番号とマッチする;
そしてCPUとスキャナもしくはデータエンジンによって出力された物理アドレスがアクティブ・リストの物理アドレスとマッチングされるとき、物理アドレスのマッチング結果と物理アドレスページ番号が出力される。ここでマッチング結果は以下のいずれかの結果を含む:
物理アドレスとマッチする;
物理アドレスとマッチせず、物理ページ番号とマッチする;
物理ページ番号とマッチする。
これらのことを特徴とする請求項79に記載の方法。 - ターゲット命令物理アドレスと分岐ソース命令物理アドレスが同じ命令ブロックにあるとき、分岐ソース命令に対応するブロック番号が直接出力される;
そしてターゲット命令物理アドレスと分岐ソース命令物理アドレスが同じページの異なる命令ブロックにあるとき、ターゲット命令物理アドレスがアクティブ・リストの本体に送られ物理アドレスとマッチングされる;
マッチングが成功の場合、マッチしたアドレスのブロック番号が出力される;
そしてマッチが不成功の場合:
物理アドレスにもとづいて、低いレベルのメモリから対応する命令ブロックを得る;
交換ポリシーにもとづいて、アクティブ・リストに対応するメモリのメモリブロックへ該当する命令ブロックを充填する;
仮想アドレスと物理アドレスをアクティブ・リストの本体のメモリブロックに対応する行に充填する;
そしてメモリブロックに対応するブロック番号を出力する。
これらのことを特徴とする請求項80に記載の方法。 - 次データ物理アドレスと現時点データ物理アドレスが同じデータブロックにあるとき、現時点データに対応するブロック番号が直接出力される;
そして次データ物理アドレスと現時点データ物理アドレスが同じページの異なるデータブロックにあるとき、次データ物理アドレスがアクティブ・リストの本体に送られ物理アドレスとマッチングされる;
マッチングが成功の場合、マッチしたアドレスのブロック番号が出力される;
そしてマッチが不成功の場合:
物理アドレスにもとづいて、低いレベルのメモリから対応するデータブロックを得る;
交換ポリシーにもとづいて、アクティブ・リストに対応するメモリのメモリブロックへ該当するデータブロックを充填する;
仮想アドレスと物理アドレスをアクティブ・リストの本体のメモリブロックに対応する行に充填する;
そしてメモリブロックに対応するブロック番号を出力する。
これらのことを特徴とする請求項80に記載の方法。 - 仮想アドレスがアクティブ・リストの本体の仮想アドレスと成功裏にマッチするとき、マッチしたアドレスに対応するブロック番号が出力される;
仮想アドレスがアクティブ・リストの本体の仮想アドレスとマッチせず仮想ページ番号と成功裏にマッチするとき、マッチした仮想ページ番号の物理アドレスページ番号が読み出されアクティブ・リストの本体へ送られ物理アドレスとマッチングされる:
マッチングが成功の場合、マッチしたアドレスのブロック番号が出力される;
マッチングが不成功の場合:
物理アドレスにもとづいて、命令ブロックもしくはデータブロックが低レベルのメモリから取得される;
交換ポリシーにもとづいて、命令ブロックもしくはデータブロックがアクティブ・リストに対応するメモリのメモリブロックに充填される;
仮想アドレスと物理アドレスをアクティブ・リストの本体のメモリブロックに対応する行に充填する;
そしてメモリブロックに対応するブロック番号を出力する;
そして仮想アドレスがアクティブ・リストの本体の仮想アドレスページ番号と不成功のうちにマッチングされたとき、オペレーティングシステムによって与えられる仮想ページ番号に対応する物理アドレスページ番号と仮想アドレスのタグの低位ビットとが融合されて物理アドレスを構成し、その物理アドレスがアクティブ・リストの本体に送られ物理アドレスとマッチングされる;
マッチングが成功の場合、仮想ページ番号とマッチされたアドレスのブロック番号はアンチエイリアシング・テーブルの有効な行に充填されブロック番号が出力される;
そしてマッチが不成功の場合:
物理アドレスにもとづいて、低レベルのメモリから命令ブロックもしくはデータブロックを得る;
交換ポリシーにもとづいて、命令ブロックもしくはデータブロックをアクティブ・リストに対応するメモリのメモリブロックへ充填する;
仮想アドレスと物理アドレスをアクティブ・リストの本体のメモリブロックに対応する行に充填する;
そしてメモリブロックに対応するブロック番号を出力する。
これらのことを特徴とする請求項80に記載の方法。 - 吟味された命令の物理アドレスにもとづいて、後続の命令アドレスが計算される;
後続の命令アドレスと吟味された命令アドレスが同じページ内にあるとき、計算によって得られたアドレスがアクティブ・リストに送られトラック・アドレスに変換される;
後続の命令アドレスと吟味された命令アドレスが同じページ内にないとき:
吟味された命令の仮想アドレスにもとづいて、後続する命令の仮想アドレスを計算する;
得られた後続命令仮想アドレスをアクティブ・リストに送り該当する物理アドレスを得る;
そして該当する物理アドレスをトラック・アドレスに変換する。
これらのことを特徴とする請求項79に記載の方法。 - 現時点データアドレスとデータ・ストライドにもとづいて、次データアドレスが計算される;
次データアドレスと現時点データアドレスが同じページ内にあるとき、得られたデータアドレスがアクティブ・リストに送られトラック・アドレスに変換される;
次データアドレスと現時点データアドレスが同じページ内にないとき:
現時点データ仮想アドレスにもとづいて、次データ仮想アドレスを計算する;
得られた次データ仮想アドレスをアクティブ・リストに送り該当する物理アドレスを得る;
そして該当する物理アドレスをトラック・アドレスに変換する。
これらのことを特徴とする請求項79に記載の方法。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310049989.0 | 2013-02-07 | ||
CN201310049989 | 2013-02-07 | ||
CN201310755250.1 | 2013-12-31 | ||
CN201310755250.1A CN103984637A (zh) | 2013-02-07 | 2013-12-31 | 一种指令处理***及方法 |
CN201410022576.8A CN103984526B (zh) | 2013-02-07 | 2014-01-14 | 一种指令处理***及方法 |
CN201410022576.8 | 2014-01-14 | ||
PCT/CN2014/071794 WO2014121737A1 (en) | 2013-02-07 | 2014-01-29 | Instruction processing system and method |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2016511887A true JP2016511887A (ja) | 2016-04-21 |
JP2016511887A5 JP2016511887A5 (ja) | 2017-04-13 |
JP6467605B2 JP6467605B2 (ja) | 2019-02-13 |
Family
ID=51276520
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015556389A Active JP6467605B2 (ja) | 2013-02-07 | 2014-01-29 | 命令処理システムと方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20150370569A1 (ja) |
EP (1) | EP2954406A4 (ja) |
JP (1) | JP6467605B2 (ja) |
KR (1) | KR20150119004A (ja) |
CN (2) | CN103984637A (ja) |
WO (1) | WO2014121737A1 (ja) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104050092B (zh) * | 2013-03-15 | 2018-05-01 | 上海芯豪微电子有限公司 | 一种数据缓存***及方法 |
US9805194B2 (en) * | 2015-03-27 | 2017-10-31 | Intel Corporation | Memory scanning methods and apparatus |
CN106201913A (zh) * | 2015-04-23 | 2016-12-07 | 上海芯豪微电子有限公司 | 一种基于指令推送的处理器***和方法 |
US10606599B2 (en) * | 2016-12-09 | 2020-03-31 | Advanced Micro Devices, Inc. | Operation cache |
CN109960186B (zh) * | 2017-12-25 | 2022-01-07 | 紫石能源有限公司 | 控制流程的处理方法、装置、电子设备和存储介质 |
KR102266342B1 (ko) * | 2019-05-27 | 2021-06-16 | 고려대학교 산학협력단 | 소프트웨어 보안을 위한 메모리 데이터의 암호화 및 복호화 방법, 이를 수행하기 위한 기록매체 및 장치 |
CN111461326B (zh) * | 2020-03-31 | 2022-12-20 | 中科寒武纪科技股份有限公司 | 一种基于设备内存的指令寻址方法及计算机可读存储介质 |
CN112416436B (zh) * | 2020-12-02 | 2023-05-09 | 海光信息技术股份有限公司 | 信息处理方法、信息处理装置和电子设备 |
CN112416437B (zh) * | 2020-12-02 | 2023-04-21 | 海光信息技术股份有限公司 | 信息处理方法、信息处理装置和电子设备 |
CN112579373B (zh) * | 2020-12-08 | 2022-10-11 | 海光信息技术股份有限公司 | 用于分支预测器的验证方法、***、设备以及存储介质 |
CN114090079B (zh) * | 2021-11-16 | 2023-04-21 | 海光信息技术股份有限公司 | 串操作方法、串操作装置以及存储介质 |
CN117971318B (zh) * | 2024-03-28 | 2024-07-02 | 北京微核芯科技有限公司 | 取数指令猜测不相关错误的预测方法和装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH086852A (ja) * | 1994-06-22 | 1996-01-12 | Hitachi Ltd | キャッシュ制御方法 |
WO2012175058A1 (en) * | 2011-06-24 | 2012-12-27 | Shanghai Xinhao Microelectronics Co. Ltd. | High-performance cache system and method |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6112293A (en) * | 1997-11-17 | 2000-08-29 | Advanced Micro Devices, Inc. | Processor configured to generate lookahead results from operand collapse unit and for inhibiting receipt/execution of the first instruction based on the lookahead result |
US20020099910A1 (en) * | 2001-01-23 | 2002-07-25 | Shah Emanuel E. | High speed low power cacheless computer system |
JP3983482B2 (ja) * | 2001-02-02 | 2007-09-26 | 株式会社ルネサステクノロジ | 高速ディスプレースメント付きpc相対分岐方式 |
US7055021B2 (en) * | 2002-02-05 | 2006-05-30 | Sun Microsystems, Inc. | Out-of-order processor that reduces mis-speculation using a replay scoreboard |
US7917731B2 (en) * | 2006-08-02 | 2011-03-29 | Qualcomm Incorporated | Method and apparatus for prefetching non-sequential instruction addresses |
US9021240B2 (en) * | 2008-02-22 | 2015-04-28 | International Business Machines Corporation | System and method for Controlling restarting of instruction fetching using speculative address computations |
US8527707B2 (en) * | 2009-12-25 | 2013-09-03 | Shanghai Xin Hao Micro Electronics Co. Ltd. | High-performance cache system and method |
US20110320787A1 (en) * | 2010-06-28 | 2011-12-29 | Qualcomm Incorporated | Indirect Branch Hint |
US8458447B2 (en) * | 2011-06-17 | 2013-06-04 | Freescale Semiconductor, Inc. | Branch target buffer addressing in a data processor |
-
2013
- 2013-12-31 CN CN201310755250.1A patent/CN103984637A/zh active Pending
-
2014
- 2014-01-14 CN CN201410022576.8A patent/CN103984526B/zh active Active
- 2014-01-29 JP JP2015556389A patent/JP6467605B2/ja active Active
- 2014-01-29 EP EP14748511.4A patent/EP2954406A4/en not_active Withdrawn
- 2014-01-29 US US14/766,452 patent/US20150370569A1/en not_active Abandoned
- 2014-01-29 WO PCT/CN2014/071794 patent/WO2014121737A1/en active Application Filing
- 2014-01-29 KR KR1020157024402A patent/KR20150119004A/ko not_active Application Discontinuation
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH086852A (ja) * | 1994-06-22 | 1996-01-12 | Hitachi Ltd | キャッシュ制御方法 |
WO2012175058A1 (en) * | 2011-06-24 | 2012-12-27 | Shanghai Xinhao Microelectronics Co. Ltd. | High-performance cache system and method |
Also Published As
Publication number | Publication date |
---|---|
US20150370569A1 (en) | 2015-12-24 |
CN103984526A (zh) | 2014-08-13 |
JP6467605B2 (ja) | 2019-02-13 |
CN103984637A (zh) | 2014-08-13 |
EP2954406A1 (en) | 2015-12-16 |
WO2014121737A1 (en) | 2014-08-14 |
CN103984526B (zh) | 2019-08-20 |
KR20150119004A (ko) | 2015-10-23 |
EP2954406A4 (en) | 2016-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6467605B2 (ja) | 命令処理システムと方法 | |
US9141553B2 (en) | High-performance cache system and method | |
US7284112B2 (en) | Multiple page size address translation incorporating page size prediction | |
US20150186293A1 (en) | High-performance cache system and method | |
US7707397B2 (en) | Variable group associativity branch target address cache delivering multiple target addresses per cache line | |
US7506105B2 (en) | Prefetching using hashed program counter | |
US9785443B2 (en) | Data cache system and method | |
US20090006803A1 (en) | L2 Cache/Nest Address Translation | |
CN108139981B (zh) | 一种页表缓存tlb中表项的访问方法,及处理芯片 | |
US7680985B2 (en) | Method and apparatus for accessing a split cache directory | |
US8984261B2 (en) | Store data forwarding with no memory model restrictions | |
CN104679481B (zh) | 一种指令集转换***和方法 | |
US9753855B2 (en) | High-performance instruction cache system and method | |
US9058284B1 (en) | Method and apparatus for performing table lookup | |
US7937530B2 (en) | Method and apparatus for accessing a cache with an effective address | |
US11301250B2 (en) | Data prefetching auxiliary circuit, data prefetching method, and microprocessor | |
US5835949A (en) | Method of identifying and self-modifying code | |
JPWO2011077549A1 (ja) | 演算処理装置 | |
US10275358B2 (en) | High-performance instruction cache system and method | |
US9569219B2 (en) | Low-miss-rate and low-miss-penalty cache system and method | |
WO2016055828A1 (en) | Cache system with primary cache and overflow fifo cache | |
JPH06236353A (ja) | マルチプロセッサ・コンピュータ・システムのシステム・メモリの並行性を増大する方法およびシステム | |
US20150193348A1 (en) | High-performance data cache system and method | |
JPH08249178A (ja) | プロセッサのアネックス内において修飾ビットを形成する方法及び装置 | |
WO2000008551A1 (en) | Software directed target address cache and target address register |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20170127 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170127 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20180214 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20180219 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20180517 |
|
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: 20181016 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20181115 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20181212 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6467605 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |