JPH08147165A - マルチコンテキストをサポートするプロセッサおよび処理方法 - Google Patents
マルチコンテキストをサポートするプロセッサおよび処理方法Info
- Publication number
- JPH08147165A JPH08147165A JP6290742A JP29074294A JPH08147165A JP H08147165 A JPH08147165 A JP H08147165A JP 6290742 A JP6290742 A JP 6290742A JP 29074294 A JP29074294 A JP 29074294A JP H08147165 A JPH08147165 A JP H08147165A
- Authority
- JP
- Japan
- Prior art keywords
- context
- instruction
- register
- execution
- executed
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
- G06F9/462—Saving or restoring of program or task context with multiple register sets
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
Abstract
テキストを同時に効率良くパイプラインに流して性能を
向上させる。 【構成】命令実行部10は、パイプライン15に、ある
コンテキスト52−1の命令を流して実行すると共に、
パイプライン15の空きを判断した場合は、実行途中に
ある別のコンテキスト52−2に切り替えて同時に複数
のコンテキストを実行させる。ID設定部62−1,6
2−2は、命令実行部10で同時に実行している複数の
コンテキスト52−1,52−2の各々に固有のコンテ
キストIDを設定する。レジスタリネーミング部25
は、命令実行部10で同時に複数のコンテキスト52−
1,52−2を実行する際に使用するレジスタ名を、I
D設定部62−1,62−2で設定された実行中のコン
テキストIDであるCIDiに実行命令の指定レジスタ名 R
j (j=1,2,3,・・・m)を加えたレジスタ名CIDi-Rjに名
前替えして物理レジスタを割り当てるマルチリネーミン
グを行う。
Description
テクチャをもつプロセッサ及び処理方法に関し、特に、
複数のコンテキストを同時にパイプラインに流して実行
するマルチコンテキストをサポートするプロセッサ及び
処理方法に関する。最初に、本発明で使用するマルチコ
ンテキスト(Multi-Context) を説明する。まずコンテキ
ストを、「ある意味のあるまとまった仕事をするための
計算機上の実行単位」と定義する。コンテキストには、
例えばユニックス(UNIX) のアドレス空間の異なるプロ
セスや、マッシュ(MACH) でいう同一アドレス空間のス
レッドを含む。即ち、複数のコンテキストは、独立した
メモリ空間を持っているか、同じメモリ空間を持ってい
るかを問題にせず、両方を包含する。
時に実行可能な複数のコンテキストの集合である。本発
明のマルチコンテキストをサポートするプロセッサは、
複数のコンテキストをパイプラインに効率良く投入して
実行することを目指している。
ラインには、一般に単一のユーザプログラムから単一の
命令列にコンパイルされたコードが投入され、実行時に
ハードウエアによって並列性が抽出されて、並列に実行
されている。しかし、この方法では、命令間に依存関係
がある場合や、キャッシュのミスヒット、分岐命令が実
行された場合などには、実行が中断してパイプラインに
空きが出来てしまう。これをパイプラインのストール、
あるいはパイプラインのバブル発生という。このためプ
ロセッサが本来持っている性能をフルに引き出すことは
できない。
るため、複数のプロセスの命令列を、ある一定の間隔で
パイプラインに投入し、お互いの命令列から生じるパイ
プラインのストールを相殺する方法がある。しかし、こ
の方法では、命令列の切替えが間隔が一定であるため、
プログラムの性質を使ったスケジューリングができず、
ストール解消の効果が小さい。
るためには、各コンテキストの実行環境を保持するため
のレジスタなどをコンテキスト分持たなければならず、
資源を大量に使ってしまう。逆に、ある一定の資源をコ
ンテキスト分に分割して使う場合には、一つのコンテキ
ストが使える資源が減ってしまうという欠点があった。
る。HEPは、図13のように、複数の命令ストリーム
を機械的に一命令ずつパイプラインに投入するものであ
り、メカニズムとしては簡単である。図13は、n個の
プログラムを同時に一つのパイプラインに投入してい
る。ここでプログラム1〜nの各々が本発明のコンテキ
ストである。実行時には、 プログラム1の命令1 プログラム2の命令1 ・・・・ プログラムnの命令1 プログラム1の命令2 ・・・ の順で命令がパイプライン200に投入され、実行され
る。パイプライン200は4段で構成される。フェッチ
段Fは命令をキャッシュから取り出す。デコード段Dは
命令を解読する。実行段EX(Execute )は命令を実行
する。ストア段S(Store )は実行結果を格納する。
で、プログラム1の命令2が命令1でロードした結果を
使うような場合、プログラム1だけで実行している場合
には、命令1と命令2の実行の間にパイプラインのスト
ールが生じる。一般にロード命令はメモリをアクセスす
るため、直後のサイクルでロード結果を使うことはでき
ず、パイプラインのストールが生じる。
令1と命令2の実行の間には、プログラム1〜プログラ
ムnの命令1の実行が挟まれるため、プログラム1の命
令1がロード命令であった場合のパイプライン200の
ストールは実効的に無くなり、プログラム実行のスルー
プットを上げることができる。
200への命令投入に当たって、複数のプログラム1〜
nの命令ストリーム間の関係を考慮していないため、パ
イプライン200のストール発生を常に減少できるかど
うかの保証はない。また、実効時には同時に動くコンテ
キスト分(プログラム分)だけ作業レジスタを用意しな
ければならず、レジスタ数に対する要求は大きくなる。
できるレジスタ数が固定の場合には、1つのコンテキス
トが使えるレジスタの数が減ることになる。図13のH
EPの例では、単純にはn個のプログラム分のレジスタ
セットを一時に用意しなければならない。更に、このよ
うな単純な命令ストリームの投入方法では、命令キャッ
シュ、データキャッシュのヒット率が悪くなる可能性も
大きい。
別の方法として、単一のプログラムからスレッドと呼ば
れる並列に実行可能なプログラム単位を切り出し、これ
を同時にパイプラインに流して実行する方法もある。し
かし、この方法はフォートラン(FORTRAN)などで書かれ
た数値計算プログラムのループを一つのスレッドとする
ような、単純な場合にのみ適用可能であることが多く、
一般のプログラムに対してコンパイラでスレッドを抽出
することは極めて困難であった。
のパイプラインのストールを減らし、複数のコンテキス
トを同時に効率良くパイプラインに流して性能を向上さ
せるマルチコンテキストをサポートするプロセッサとそ
の処理方法を提供する。
図である。まず、ある意味のあるまとまった仕事をする
ための実行単位である複数のコンテキスト52−1,5
2−2が、キャッシュメモリなどのコンテキスト格納部
(メモリ空間)16−1に格納されている。命令実行部
25は、パイプライン15に、あるコンテキスト52−
1の命令を流して実行すると共に、パイプライン15の
空きを判断した場合は、実行途中にある別のコンテキス
ト52−2に切り替えて同時に複数のコンテキストを実
行させる。
行部10で同時に実行している複数のコンテキスト52
−1,52−2の各々に固有のコンテキストIDとして
CIDi(i=0,1) を設定する。レジスタ・リネーミング部
(レジスタリネーミング部)25は、命令実行部10で
同時に複数のコンテキスト52−1,52−2を実行す
る際に使用するレジスタ名を、ID設定部62−1,6
2−2で設定された実行中のコンテキストIDであるCI
Diに実行命令の指定レジスタ名 Rj (j=1,2,3,・・・m)
を加えたレジスタ名CIDi-Rj に名前替えして物理レジス
タを割り当てる。
ルチ・リネーミング機能によって、複数のコンテキスト
を同時にパイプラインに流したときの1つのコンテキス
ト分の物理レジスタだけで、全てのコンテキストの実行
に必要なマルチ・レジスタリネーミングを行う。コンテ
キストの切替えは、コンテキストをハードウェアとソフ
トウェアの組合せ、又はハードウェアのみによって行わ
れる。
ンテキストを切り替える場合、コンテキスト52−1,
52−2を構成する命令列は、プログラムコードに加
え、プログラムコードの意味は変えないがプログラムコ
ードの実行を助けるための種々の情報を格納する属性情
報フィールドを持つ。属性情報フィールドには、実行途
中にある別のコンテキスト切替えの契機となる後続命令
の実行に必要な命令実行情報が格納される。
には、ロード命令と分岐命令がある。後続命令はロード
命令の場合、ロード命令の実行でメモリからデータが届
くまでのレイテンシ分のインターバルをもつ先行する命
令コードの属性情報フィールドに、この命令の実行と同
時に実行途中にある別のコンテキストの命令フェッチを
指示する属性情報を設ける。後続命令が分岐命令の場合
も、同様に、分岐命令の実行でメモリからデータが届く
までのレイテンシ分のインターバルをもつ先行する命令
コードの属性情報フィールドに、この命令の実行と同時
に実行途中にある別のコンテキストの命令フェッチを指
示する属性情報を設ける。
ため、命令実行部10は、少なくとも2つの命令バッフ
ァ56−1,56−2を持つ。また複数のコンテキスト
52−1,52−2いずれか1つから命令バッファ56
−1,56−2のいずれか1つに命令をプリフェッチす
るプリフェッチルートを切り替える第1ルータ54と、
命令格納バッファ56−1,56−2のいずれか1つか
らパイプライン15にフェッチするフェッチルートを切
り替える第2ルータ58を設ける。
イン15に流しているコンテキスト52−1の命令の属
性情報から、実行途中にある別のコンテキストへの切替
えの契機となる後続命令の実行に必要な命令実行指示情
報を解読した際に、第1ルータ54のプリフェッチルー
トを、切替先のコンテキスト52−1から現在命令フェ
ッチに使用されていない別の命令バッファ56−1への
プリフェッチルートに切り替えて命令プリフェッチを行
わせる。
ンテキスト52−2への切替えの契機となる後続命令の
実行を判別した際に、第2ルータ58のフェッチルート
を、第1ルータ54でプリフェッチルートを切り替えた
側の命令バッファ56−1に切り替えてプリフェッチさ
れている別のコンテキスト52−2の命令をパイプライ
ン15にフェッチさせる。
で行う場合、命令実行部10は、実行途中にある別のコ
ンテキスト切替えの契機となる後続命令を、この後続命
令の実行に伴うハードウェアの信号から認識してコンテ
キストを切り替える。例えば後続命令がロード命令の場
合、コンテキスト切替えを、ロード命令の実行における
キャッシュのミスヒットを示す信号から認識する。また
後続命令がロード命令の場合、コンテキスト切替えを、
ロード命令の実行における分岐条件成立時(taken)を示
す分岐ターゲットバッファの出力から認識する。
ジスタ・リネーミング部35は、実行中のコンテキスト
IDを格納するIDレジスタ76と、実行中のコンテキ
ストの命令をフェッチする命令レジスタ78と、有効フ
ラグフィールド、レジスタキーフィールド及びデータフ
ィールドを備えた複数の物理レジスタ84−1〜84−
kを有する名前替えレジスタファイル82を備える。
ンテキストIDであるCIDiに、命令レジスタ78のレジ
スタ指定フィールド80のレジスタ名Rjと加えたレジス
タキーCIDi-Rj を作成してレジスタファイル82の該当
する物理レジスタを名前替えレジスタとして割り付け
る。レジスタファイル82からオーバフローした名前替
えレジスタのデータは、退避処理部92−1によって退
避実行中のコンテキスト毎に設けられたレジスタ退避部
98−1,98−2に退避される。またロード処理部9
2−2は、レジスタ割付部によるレジスタファイル82
の参照で、レジスタキーCIDi-Rj に対応するレジスタが
存在しなかった場合、レジスタ退避部98−iから対応
するレジスタキーのデータをレジスタファイル82にロ
ードさせる。
8のレジスタ指定フィールド80で指定可能な数の物理
レジスタ84−1〜84−mを有する。レジスタファイ
ル82の各物理レジスタ84−1〜84−mは、名前替
えレジスタの割付けで有効フラグ86をオンして使用状
態を表し、レジスタデータの退避で有効フラグ86をオ
フして空き状態を表す。
は、退避データを格納するデータフィールドに加え、有
効フラグフィールドを有する。有効フラグは、レジスタ
データの退避によりオンしてデータ退避状態を表し、退
避データのロードで有効フラグをオフしてレジスタファ
イル82に存在することを表す。また退避処理部92−
1は、レジスタファイル82でオーバフローが発生した
際に、実行中以外のコンテキストのいずれか1つのコン
テキストIDをもつ全ての前記物理レジスタのデータ
を、対応するコンテキストのレジスタ退避部98に退避
させる。
98から実行中のコンテキストのレジスタデータをレジ
スタファイル82にロードするに先立ち、退避処理部9
2−1によって、実行中以外のコンテキストのいずれか
1つのコンテキストIDをもつ物理レジスタのデータ
を、対応するコンテキストのレジスタ退避部98に退避
させる。
テキスト単位ではなく、レジスタ単位に行ってもよい。
実行対象となる複数のコンテキストは、異なったアドレ
ス空間で実行される複数のプロセスである。また同一ア
ドレス空間で実行される複数のスレッドであってもよ
い。スレッドは、数値計算プログラムのループである。
また本発明はマルチコンテキストをサポートするマルチ
コンテキスト処理方法を提供する。この処理方法は、あ
る意味のあるまとまった仕事をするための実行単位であ
るコンテキストを複数作成する作成過程;パイプライン
にあるコンテキストの命令を流して実行すると共に、パ
イプラインの空きを判断した場合は、実行途中にある別
のコンテキストに切り替えて同時に複数のコンテキスト
を実行させる命令実行過程;同時に実行している複数の
コンテキストの各々に固有のコンテキストIDを設定す
るID設定過程;前記コンテキストの実行で使用するレ
ジスタ名を、前記コンテキストIDに実行命令の指定レ
ジスタ名を加えたレジスタ名に名前替えして物理レジス
タを割り当てるレジスタ・リネーミング過程と、を有す
る。この処理方法の詳細も装置構成と基本的に同じにな
る。
ートするプロセッサとその処理方法によれば、マルチリ
ネーミング機能による命令間の依存関係を解消し、また
ロード命令の実行によるキャッシュのミスヒットや分岐
命令が実行等を判断してパイプラインに流すコンテキス
トを切り替えることで、パイプラインストールを減ら
し、プロセッサの性能を向上する。
ジューリングすることで、スーパスカラのアーキテクチ
ャをもつプロセッサの潜在性能をフルに引き出す。また
マルチリネーミングにおいて、同時に実行される複数の
コンテキストが使うレジスタの数を、単一のコンテキス
トを走らせた場合と同じ数にでき、資源の利用効率を下
げない。
切替前のコンテキストで使用していた物理レジスタを、
切替後のコンテキストで使用するレジスタに瞬時に切り
替えず、必要なレジスタずつ徐々に切り替えることで、
コンテキスト切替時のオーバヘッドを小さくする。さら
に、コンテキストは、DOループのような小さな粒度の
コンテキストばかりでなく、ユーザプロセスのような大
きな粒度のコンテキストも扱えるようにする。
ロセッサの動作環境となるプロセッサマシンのハードウ
ェアである。このプロセッサマシンは、CPU10から
のバス12に主記憶制御ユニット14を介して主記憶ユ
ニット16を接続している。また、入出力バスアダプタ
22−1,22−2に対し、外部の入出力バス24−
1,24−2を接続している。
力制御装置26−1,26−2を介して入出力装置30
−1,30−2が接続される。入出力装置30−1,3
0−2は、磁気ディスクユニット、光ディスクユニッ
ト、磁気テープユニットなどが使用される。また、シス
テムバスアダプタ32−1,32−2により外部のシス
テムバス34−1,34−2に接続している。
ステム記憶ユニット36−1,36−2を接続してい
る。更に、システムバス34−1,34−2に対し図示
のプロセッサマシンと同じ複数のプロセッサマシンを接
続することで、マルチプロセッサシステムが構築され
る。プロセッサマシンのCPU10には、浮動小数点演
算制御ユニット38、浮動小数点演算実行ユニット4
0、整数演算制御ユニット42、スーパスカラ整数演算
実行ユニット44、メモリ管理ユニット46、命令キャ
ッシュメモリ48、データキャッシュメモリ50および
バスインタフェースユニット52が設けられる。
小数点演算制御ユニット38の制御のもとに浮動小数点
演算を実行する。スーパスカラ整数演算実行ユニット4
4はパイプラインを備え、整数演算制御ユニット42の
制御のもとに、動的に並列実行可能な整数演算命令を判
別し、並列的に整数演算を実行する。即ち、本発明にあ
っては、整数演算制御ユニット42とスーパスカラ整数
演算実行ユニット44によって複数のコンテキストを並
列的に実行する処理が行われる。
ユニット46によるキャッシュ制御を受ける。命令キャ
ッシュメモリ48には、浮動小数点演算制御ユニット3
8および整数演算制御ユニット42で使用する主記憶制
御ユニット16からフェッチしたプログラムコードが格
納される。この内、整数演算制御ユニット42およびス
ーパスカラ整数演算実行ユニット44でサポートされる
本発明のマルチコンテキストの処理については、実行を
開始した複数のマルチコンテキストの命令列が命令キャ
ッシュメモリ48に格納される。
点演算実行ユニット40およびスーパスカラ整数演算実
行ユニット44の演算に使用する主記憶制御ユニット1
6から読み出したデータを格納する。データキャッシュ
メモリ50のキャッシュ制御も、メモリ管理ユニット4
6により行われる。 2.コンテキストの切替え 本発明のマルチコンテキストをサポートするプロセッサ
におけるコンテキスト切替えの基本的なアーキテクチャ
は、図13の従来例のように機械的に切り替えるのでは
なく、パイプラインにストールが発生する可能性のある
命令を実行したときにコンテキストを切り替える。また
1つのコンテキストが継続して実行可能である場合に
は、できるだけそのコンテキストを連続して実行する。
これによって、コンテキストの切替えに伴う不要なオー
バヘッドを低減し、キャッシュのヒット率の減少を回避
する。
ロード命令または分岐命令を実行したときをコンテキス
トの切替タイミングとする。ロード命令の実行によりキ
ャッシュメモリをアクセスした結果、ミスヒットした場
合には、アクセス対象となるデータが主記憶メモリユニ
ットから届くまでに数十サイクル分のレイテンシが存在
する。
立して分岐した場合(taken)、分岐先の命令をフ
ェッチするためのパイプラインにストールが発生する可
能性がある。したがって本発明にあっては、実行中のコ
ンテキストでロード命令または分岐命令の実行を契機
に、実行途中にある他のコンテキストへの切替えのタイ
ミングとする。本発明によるコンテキスト切替えの実現
方法としては、ハードウェアのみで行う方法とコンパイ
ラとハードウェアの両方で行う方法の2種類がある。
のみで行う場合を説明する。ハードウェアのみでロード
命令の実行におけるキャッシュメモリのミスヒットの検
出には、キャッシュタグの一致/不一致の信号をCPU
側に入力して使うことができる。また分岐命令の実行に
伴う分岐成立/分岐不成立(taken/not taken )の判定
には、分岐ターゲットバッファの出力を使うことができ
る。
シュミスヒットの検出および分岐命令の実行による分岐
条件成立時の検出は、図2のCPU10に設けたスーパ
スカラのアーキテクチャをもつ整数演算制御ユニット4
2およびスーパスカラ整数演算実行ユニット44の機能
として一般的に実現されており、検出結果を確保するレ
ジスタの割当てなどの僅かな処理の変更で対応できる。
ストの順番は、現在実行対象となっている複数のコンテ
キストについてラウンドロビン方式により予め定めた順
番で切り替えればよい。次に、コンパイラによるソフト
ウェアとハードウェアの両方で実現される本発明のコン
テキスト切替えを説明する。図3は、ソフトウェアとハ
ードウェアの両方でコンテキスト切替えを行う場合の現
在実行しているあるコンテキストの命令コードである。
このコンテキストにあっては、命令1,命令2,・・・
の順にパイプラインに流して実行される。ロード/分岐
命令は、ここにロード命令または分岐命令が存在するこ
とを示している。
常の命令列を格納する命令フィールド64に加え、属性
情報フィールド66をもっている点である。属性情報フ
ィールド66には属性情報が格納される。属性情報フィ
ールド66は、プログラムコードの意味は変えないがプ
ログラムコードの高速実行を助けるための種々の属性情
報を格納するためのフィールドと定義される。この属性
情報フィールド66は、コンパイラにおけるディレクテ
ィブ(directive)に相当する。
っては、命令2の属性情報フィールド66に属性情報
「SW」を置いている。この属性情報「SW」は、「命
令2の実行と同時に別のコンテキストの命令フェッチを
開始せよ」という内容を指示する。その後、ロード/分
岐命令の部分で、ロード命令の実行でキャッシュのミス
ヒットや分岐条件の成立で分岐した場合には、パイプラ
インにストールを発生する。
既にフェッチしている別のコンテキストの命令列の実行
に直ちに移る。この結果、ロード命令の実行によるキャ
ッシュのミスヒットあるいは分岐命令の実行を契機とし
て、実行中のコンテキストから実行途中にある他のコン
テキストにオーバヘッドなしで切り替えることができ
る。
6に対する属性情報「SW」は、コンパイル後のプログ
ラムコードを解析することにより埋め込むことができ
る。この作業は、コンパイルが済んだプログラムコード
の中のロード命令あるいは分岐命令のオペコードを探
し、ロード命令あるいは分岐命令に対しフェッチに必要
な所定サイクル分のインターバルだけ先行した命令フィ
ールドの属性情報フィールド66に属性情報「SW」を
置けばよい。
ドを用いた複数のコンテキストの切替えを実現する本発
明の機能ブロックであり、図2のCPU10に設けた整
数演算制御ユニット42およびスーパスカラ整数演算実
行ユニット44で実現される。まず、メモリ空間16−
1とCPU空間10−2に分けられる。メモリ空間16
−2は、図2の命令キャッシュメモリ48で実現され、
もしキャッシュに命令が存在しなければ外部の主記憶ユ
ニット16に存在する。CPU空間10は、整数演算制
御ユニット42およびスーパスカラ整数演算実行ユニッ
ト44で実現される空間である。
っては、4つのコンテキスト52−1〜52−4が設け
られている。コンテキスト52−1〜52−4のそれぞ
れは、図3のようにコンパイルされたプログラムコード
の命令ストリームである。コンテキスト52−1〜52
−4に対しては、コンテキストIDとして例えば#0〜
#3を設定するIDマッピングレジスタ62−1〜62
−4が設けられている。
トリームは、コンテキストリード部65−1〜65−4
のそれぞれで読み出される。コンテキストリード部65
−1〜65−4の各々は、コンテキスト52−1〜52
−4の命令ストリームを読み出す際に、IDマッピング
レジスタ62−1〜62−4で設定されたコンテキスト
ID#0〜#3を付けて読み出す。
4、命令バッファ56−1,56−2、第2ルータ5
8、命令実行部25、マルチ・リネーミング部35、コ
ンテキスト切替部60が設けられる。ルータ54はコン
テキスト52−1〜52−4のいずれか1つを選択し、
選択したコンテキストから読み出された命令ストリーム
を命令バッファ56−1または56−2の一方に格納す
る。ルータ54からの命令ストリームを命令バッファ5
6−1,56−2のどちらに格納するかは、コンテキス
ト切替部60が命令ストリーム切替信号E3によって制
御する。
1,56−2のいずれかから命令を取り出して命令実行
部25に実行させる。ルータ58による命令バッファ5
6−1,56−2からの命令取出しも、コンテキスト切
替部60からの命令ストリーム切替信号E4により制御
される。命令実行部25には命令レジスタ78が設けら
れ、第2ルータ58で命令バッファ56−1または56
−2から取り出された命令コードを格納し、パイプライ
ン15に供給する。パイプライン15は4段構成であ
り、フェッチ段F、デコーダ段D、実行段EX、および
ストア段Sを備える。更に命令実行部25には、属性情
報判別部104と命令実行判別部106が設けられる。
8に投入された命令について、図3の属性フィールド6
6の属性情報を判別し、属性情報「SW」を判別する
と、SW情報検出信号E1をコンテキスト切替部60に
出力する。コンテキスト切替部60は、属性情報判別部
104よりSW情報検出信号E1を受けると、切替先と
なる別のコンテキストからの命令ストリームを、空き状
態にある命令バッファ56−1,56−2のいずれかに
格納するための第1ルータ54の切替えを行う。
104で属性情報「SW」を判別した後のロード命令の
実行によるキャッシュメモリのミスヒットあるいは分岐
命令の実行による分岐条件の成立(taken)を検出
したとき、ロード命令または分岐命令の実行検出信号E
2をコンテキスト切替部60に出力する。この検出信号
E2を受けたコンテキスト切替部60は、第2ルータ5
8に命令ストリーム切替信号E4を出力し、属性情報
「SW」の判別で、第1ルータ54の切替えで切替先と
なる別のコンテキストからの命令をフェッチしている側
の命令バッファ56−1,56−2に切り替え、パイプ
ライン15にストールを発生させないようにする。
2−1〜52−4からの命令ストリームを命令バッファ
56−1,56−2のいずれかに予め格納するプリフェ
ッチルートを切り替えるものである。これに対し第2ル
ータ58は、命令バッファ56−1,56−2のいずれ
かから命令実行部25の命令レジスタ78に対する命令
のフェッチルートを切り替える機能をもつといえる。
・リネーミング部35が設けられている。レジスタ・リ
ネーミング部35の詳細は後の説明で明らかにされる。
次に、図4のコンテキスト切替動作を具体的に説明す
る。いま図5のようにコンテキスト52−1が実行中で
あったとする。この場合には、第1ルータ54がコンテ
キストリード部65−1を選択し、コンテキスト52−
1の命令ストリームにIDマッピングレジスタ62−1
によるコンテキストID#0を付けた命令ストリーム
が、命令ルート68によって例えば命令バッファ56−
2に供給される。
−1からの命令ストリームが供給されている命令バッフ
ァ56−2を選択しており、命令バッファ56−2から
コンテキスト52−1のプログラムコードを取り出して
命令レジスタ78に投入し、パイプライン15で実行し
ている。このようなコンテキスト52−1の実行中に、
図3に示した属性情報「SW」が属性情報フィールド6
6に現われると、命令実行部25の属性情報判別部10
4が属性情報「SW」を判別し、SW情報検出信号E1
をコンテキスト切替部60に出力する。SW情報検出信
号E1を受けたコンテキスト切替部60は、図6のよう
に、第1ルータ54に命令ストリーム切替信号E3を出
力し、切替先となる別のコンテキスト52−2のコンテ
キストリード部65−2に切り替え、同時に命令バッフ
ァ56−1に切り替える。
停止しているコンテキスト52−2の命令ルート72に
よる命令ストリームが、命令バッファ56−1にプリフ
ェッチされることになる。このとき第2ルータ58は切
り替えられず、現在実行中のコンテキスト52−1の命
令バッファ56−2に格納された命令を命令ルート70
によって順番に取り出して、命令実行部25で実行して
いる。
命令バッファ56−2に残っているコンテキスト52−
1の命令ストリームを実行する中でロード命令を実行す
ると、ロード命令の実行が命令実行判別部106で判別
され、データキャッシュメモリでミスヒットとなったこ
とを条件にロード命令実行検出信号E2をコンテキスト
切替部60に出力する。
テキスト切替部60は、第2ルータ58に命令ルート切
替信号E4を出力し、直ちに命令バッファ56−1に命
令ルートを切り替える。この結果、ロード命令を実行し
た後の次のサイクルでは、コンテキスト52−2の命令
コードがパイプライン15に投入され、コンテキスト5
2−1のロード命令の実行でキャッシュミスヒットとな
っても、パイプライン15にストールを発生することな
く、別のコンテキスト52−2の実行にオーバヘッドな
しで切り替えることができる。
行可能なコンテキストの数を4としているが、この数は
便宜的なものであり、実際にはコンテキストIDに使う
ビット長、同時に実行させるのに効率的なコンテキスト
の数に基づいて決められる。またコンテキストの切替え
は、単純にラウンドロビンで行うことが効果的である。
即ち、コンテキスト#0,#1,#2,#3の順番に循
環的に切り替える。
ックにおけるコンテキスト切替処理である。まずステッ
プS1で、実行対象となるコンテキストの初期設定を行
う。この初期設定は、CPU10の命令処理罫では不可
能なので、OSを呼び出して、実行対象となるコンテキ
ストの割当てを行う初期設定を受ける。次にステップS
2で、実行対象となったコンテキストの命令ストリーム
を命令バッファに供給し、ステップS3で、命令バッフ
ァの命令を取り出してパイプラインに流すことで実行す
る。コンテキストの命令実行中にあっては、ステップS
4で、命令の属性情報からコンテキスト切替要求が発生
したか否かチェックしている。即ち、属性情報「SW」
の判別をチェックしている。
ト切替要求が発生したものと判断し、ステップS5で、
現在実行途中のコンテキストが存在するか否かチェック
する。実行途中のコンテキストが存在すれば、ステップ
S6で、命令ストリームの読出しを別の実行途中にある
コンテキストに切り替え、別の命令バッファに供給す
る。
ファに残っている現在実行中のコンテキストの命令を実
行し、ステップS8で、分岐命令またはロード命令を実
行したか否かチェックしている。ステップS8で分岐命
令またはロード命令の実行を判別すると、ステップS9
で、実行命令の取出バッファをステップS6で別のコン
テキストに切り替えて、命令ストリームを格納している
命令バッファに切り替え、これによってコンテキスト切
替えが成立する。コンテキスト切替えが済むとステップ
S3に戻り、切替後の命令ストリームを対象とした命令
の実行を繰り返し、以下、同様にして、コンテキスト切
替要求が発生するごとに切替処理を行う。
求が発生した際に、ステップS5で実行途中のコンテキ
ストが存在しなかった場合には、ステップS10に進
み、並列に実行可能なコンテキストを取り出し、ステッ
プS11で、取り出したコンテキストに番号を与え、コ
ンテキストIDレジスタとコンテキスト配置テーブルに
登録する。
ンテキストの命令実行系では処理ができないので、OS
を呼び出して、新たなコンテキストの割当てとコンテキ
スト番号を付与を受けることになる。このOSによる支
援を受けるステップS10,S11の処理は、オーバヘ
ッドが比較的大きくなる処理であるが、頻繁に起こるこ
とはないため、その影響は小さいといえる。 3.マルチレジスタ・リネーミング 現在使用されている多くのスーパスカラ・プロセッサで
は、命令間の依存を実行時に動的に解消するため、レジ
スタ・リネーミングというアルゴリズムを採用してい
る。図8は、レジスタ・リネーミングの概略である。図
8(A)の変更前のプログラムの依存関係を見ると、1
行目と2行目のレジスタR1は真の依存関係、1行目
と3行目のレジスタR1は出力依存、1行目と4行目
のレジスタRは逆依存の関係にある。
状態では、1行目と2行目のレジスタR1が出力依存
にあり、また1行目と4行目のレジスタR3が逆依存
の関係にあるため、1行目、3行目、4行目を同時に実
行することはできない。そこで図8(B)のように、3
行目のレジスタR1を新たなレジスタR7に変更し、ま
た4行目のレジスタR3を新たなレジスタR8に変更す
るリネーミング(名前の付け替え)を行うことで、出力
依存と逆依存を解消することができる。
ミングにより1行目、3行目、4行目の命令を同時に実
行することが可能となる。このように、レジスタ・リネ
ーミングにより、出力依存と逆依存にある命令間の依存
関係を解消して同時に実行することを可能とする。勿
論、真の依存はリネーミングであっても解消できない。
図8(A)(B)のリネーミングは、単一の命令ストリ
ームの中での命令の依存を解消する手法であるが、本発
明にあっては、このレジスタ・リネーミングの手法を複
数のコンテキストの同時実行を対象とした複数の命令ス
トリームについての命令依存の対象に拡張する。即ち、
複数のコンテキストの実行による複数の命令ストリーム
でのレジスタ・リネーミングを実現するため、次の要件
を定める。
ジスタの名前替えの際に、命令中のレジスタ番号に加え
コンテキストのIDを利用する。 1つのコンテキストが使うレジスタ数を増やすため
に、レジスタ名前替え用のレジスタファイルを (命令中のレジスタ番号)+(コンテキストID) のキーで検索できるようにアソシエイティブなメモリで
構成する。このようなメモリを以下、リネーミングバッ
ファと呼ぶ。また、リネーミングバッファで実現する複
数の物理レジスタをコンテキストの数で等分して使用す
るようなことはせず、物理レジスタに対し仮想的なレジ
スタ割当てを行う。
グバッファから古くなったコンテキストのレジスタを退
避するようなことはしない。コンテキストの切替えに関
係なく、リネーミングバッファの中の利用できる物理レ
ジスタがなくなった時点で古いコンテキストに割り当て
ているレジスタを退避する。即ち、リネーミングバッフ
ァからのレジスタの退避をルーズに行う。
の名前替えをマルチレジスタ・リネーミングと呼ぶ。こ
のようなマルチレジスタ・リネーミングの構築によっ
て、複数のコンテキストを同時にパイプラインに流すこ
とが可能となる。即ち、あるコンテキスト#0でレジス
タR1を使っていたとする。この実行中のコンテキスト
#0と同時に実行させたいと考える別のコンテキスト#
1も同じレジスタR1を使っていたとする。
ーミングによれば、2つのコンテキスト#0,#1で使
用しているレジスタR1には、コンテキストIDの付加
により「00−R1」「10−R1」にリネーミングさ
れる。このため、コードを変更したりハードウェアで同
期をとったりする必要がなく、同じレジスタ名をもった
複数のコンテキストを同時に実行することができる。ま
た、実行中でないコンテキストのリネーミングレジスタ
の情報をメモリ空間の別の領域に退避させていること
で、複数のコンテキストのレジスタ情報を同時にハード
ウェア上の物理レジスタに依存させることができる。
ミングを実現するための機能ブロックであり、図4のレ
ジスタ・リネーミング部35の詳細となる。レジスタ・
リネーミング部35は、CPU空間10−1とメモリ空
間16−1を使用して構築される。CPU空間10−1
にはコンテキスト・マッピング・テーブル62が設けら
れる。コンテキスト・マッピング・テーブル62には、
全く新しいコンテキストの実行を開始する場合に、コン
テキスト番号CNの登録がOSの支援により行われる。
トを4つとした場合を例にとっていることから、コンテ
キスト・マッピング・テーブル62にはコンテキストI
D00,01,10,11が割り当てられ、このコンテ
キストIDに対し、実行対象となったコンテキスト番号
CN0として#0をコンテキストID00に登録し、コ
ンテキスト番号#1をコンテキストID10に登録して
いる。
テキストIDレジスタ76、命令レジスタ78、リネー
ミング・バッファ82、退避/ロード処理部92が設け
られる。実行中コンテキストIDレジスタ76には、現
在実行中のコンテキスト、例えばコンテキスト番号#1
のコンテキストID=10が格納される。命令レジスタ
78にはリネーミング対象となるレジスタ名をレジスタ
指定フィールド80に格納した命令コードが格納され
る。
ジスタ指定フィールド80で指定可能な物理レジスタ部
84−1〜84−16のレジスタ領域に分けられてい
る。この実施例は、物理レジスタの指定数を16として
いるが、32,64など、適宜の数に定めることができ
る。リネーミング・バッファ82の物理レジスタ部84
−1〜84−16のそれぞれは、有効フラグフィールド
86、キーフィールド88およびデータフィールド90
を有する。有効フラグフィールド86は、その物理レジ
スタがリネーミング・レジスタとして使用されている場
合に有効フラグをオンしており、未使用である場合には
有効フラグがオフとなっている。したがって、物理レジ
スタ部84−1〜84−16の有効フラグ86を調べる
ことで、リネーミングに使用可能な物理レジスタが存在
するか否か判断できる。
ストIDレジスタ76に格納したCIDiと命令レジス
タ78のレジスタ指定フィールド80のレジスタ名Rj
を合わせたキー(CIDi−Rj)がリネーミング・レ
ジスタ名を示すキーコードとして格納される。このため
同じレジスタ名Rjであっても、コンテキストIDであ
るCIDiによって区別することができる。
ト・マッピング・テーブル62に登録されたコンテキス
ト番号#0,#1ごとにコンテキスト・コントロール・
ブロック94−1,94−2が確保されている。このコ
ンテキスト・コントロール・ブロック94−1,94−
2は、特定領域をレジスタ退避領域98−1,98−2
に割り当てている。レジスタ退避領域98−1,98−
2は、基本的にはリネーミング・バッファ82の物理レ
ジスタ部84−1〜84−16と同じ数の領域を確保し
ている。レジスタ退避領域98−1の各レジスタ領域
は、有効フラグフィールド100とレジスタデータフィ
ールド102に分けられている。有効フラグフィールド
100の有効フラグは、レジスタデータフィールド10
2にレジスタデータが退避されるとオンし、レジスタデ
ータをリネーミング・バッファ82にロードするとオフ
となる。
98−1の場合、先頭の有効フラグフィールド100の
みが0で他の有効フラグは1となっており、先頭のレジ
スタデータのみがリネーミング・バッファ82にあるこ
とを表わしている。これに対し、現在実行中のコンテキ
スト番号#1のレジスタ退避領域98−2については、
全ての有効フラグが0とオフしており、リネーミング・
レジスタは全てリネーミング・バッファ82に存在する
ことを表わしている。
2以外のコンテキスト・コントロール・ブロック94−
1,94−2の領域は、通常のコントロールエリア11
0−1,110−2として使用されている。退避/ロー
ド処理部92は、リネーミング・バッファ82がオーバ
フローした際のメモリ空間16−1に対するレジスタ退
避処理と、実行中のコンテキストで使用するリネーミン
グ・レジスタがリネーミング・バッファ82に存在しな
いときのメモリ空間16−1からのレジスタデータのロ
ードを行う。
マルチ・リネーミング処理である。まずステップS1
で、命令レジスタ78にリネーミング対象となる命令が
投入されたか否かチェックしている。リネーミング対象
となる命令が投入されると、ステップS2で、実行中コ
ンテキストIDレジスタ76に格納している実行中のコ
ンテキストIDi=10と、命令レジスタ78のレジス
タ指定フィールド80のレジスタ番号例えばR1でキー
「10−R1」を作成し、リネーミング・バッファ86
のキーフィールド88を検索する。
スタがあれば、ステップS5に進み、リネーミング・レ
ジスタCIDi−Rj=10−R1を使用した命令の実
行を行う。一方、ステップS3で、リネーミング・バッ
ファ82に該当レジスタがなかった場合には、ステップ
S4に進み、メモリ空間16−1のコンテキスト番号#
1のレジスタ退避領域98−2から対応するレジスタデ
ータのロード処理を行う。このレジスタロード処理の詳
細は後の説明で明らかにされる。
ミング・バッファ82がオーバフローした際のレジスタ
退避処理である。あるコンテキストを実行中にリネーミ
ング・バッファ82がオーバフローすると、そのコンテ
キストの実行を続けるためには別のコンテキストのリネ
ーミング・バッファ82上に存在するレジスタデータを
メモリ空間16−1の退避領域に退避させなければなら
ない。
オーバフローは、物理レジスタ部84−1〜84−16
の有効フラグが全てオン(ビット1)で且つ実行中コン
テキストレジスタ76のCIDiと命令レジスタ78の
レジスタ指定フィールド80のレジスタ名Rjで作った
キー「CIDi−Rj」によるキーフィールド88の検
索で該当するレジスタが存在しなかった場合である。
ー発生に伴うレジスタ退避処理にあっては、まずステッ
プS1で、リネーミング・バッファ82より退避するコ
ンテキストを決定する。退避するコンテキストの決定
は、コンテキスト・マッピング・テーブル62にLRU
アルゴリズムの機能を付け加えて決めればよい。即ち、
複数のコンテキストの中の最も実行した時点の古いコン
テキストを、退避するコンテキストに決定する。
ストのIDを使用してリネーミング・バッファ82にお
ける各物理レジスタ84−1〜84−16のキーフィー
ルドを検索し、該当するレジスタをアクセスする。続い
て、アクセスした物理レジスタの有効フラグがオンか否
かチェックする。有効フラグがオンであれば、ステップ
S4に進み、退避コンテキストの番号をラベルしたメモ
リ空間16−1のコンテキスト・コントロール・ブロッ
ク内の対応するレジスタ番号の領域に退避する。退避が
済むと、ステップS5で、レジスタ退避領域の有効フラ
グをオンする。次にステップS6で、リネーミング・バ
ッファ82の退避済みのレジスタの有効フラグをオフす
る。
のレジスタ指定フィールド80で指定可能な例えば16
個のレジスタ分の処理を行ったか否かチェックする。全
てのレジスタの処理を終了するまで、ステップS2〜S
6の処理を繰り返す。勿論、ステップS3で、退避コン
テキストIDをもつレジスタを検索しても、有効フラグ
がオフであった場合には、ステップS4〜S6の処理は
不要である。
よって、リネーミング・バッファ82に残っている最も
実行時点の古いコンテキストで使用したレジスタ内容
が、対応するメモリ空間16−1のレジスタ退避領域に
退避され、実行中のコンテキストのリネーミングのため
にリネーミング・バッファ82に空きレジスタを確保す
ることができる。
ロード処理部92によるレジスタデータ・ロード処理で
ある。図11のレジスタ退避処理によって、実行途中に
あるコンテキストのレジスタをメモリ空間16−1のコ
ンテキスト・コントロール・ブロックに退避してしまう
と、その後にそのコンテキストの実行がスケジュールさ
れたとき、レジスタのデータがリネーミング・バッファ
82上にないことがある。このような場合に、図12の
レジスタデータ・ロード処理が行われる。
ード処理に先立ち、現在リネーミング・バッファ82に
格納されている別のコンテキストのレジスタ群のレジス
タデータを退避する。これは、新たなレジスタデータを
ロードするときにオーバフローが起きないことを保証す
るためである。このレジスタデータの退避処理は、図1
1のレジスタ退避処理を行うことになる。勿論、レジス
タロード処理に先立ってリネーミング・バッファ82の
有効フラグから十分な空きレジスタが存在する場合に
は、ステップS1の他のコンテキストのレジスタデータ
の退避処理は行う必要がない。
トに関するメモリ空間16−1のコンテキスト・コント
ロール・ブロックの対応するレジスタ退避領域の内容を
読み出す。次にステップS3で、読み出したレジスタ退
避領域の有効フラグがオンか否かチェックする。オンで
あればレジスタデータは退避領域に存在することから、
ステップS4で、ロードするコンテキストのIDを使用
してリネーミング・バッファ82にレジスタ退避領域の
読出内容をロードする。
で、コンテキスト・コントロール・ブロックのロードが
済んだレジスタ領域の有効フラグをオフする。続いてス
テップS6で、リネーミング・バッファ82のロード済
みのレジスタの有効フラグをオンする。一方、ステップ
S3で、レジスタ退避領域の有効フラグがオフであれ
ば、そのレジスタはリネーミング・バッファ82上に確
保されていることから、ステップS4〜S6のロード処
理は行わない。
ップS7で、命令レジスタ78のレジスタ指定フィール
ド80で指定できる退避領域のレジスタ分の処理の終了
の有無をチェックし、処理を終了するまで、ステップS
2〜S7の処理を繰り返す。以上のマルチ・リネーミン
グ・レジスタの処理にあっては、一度、レジスタの退避
またはロードが起きると対象となったコンテキストに属
する全てのレジスタデータの退避またはロードを行う場
合を例にとっているが、1つずつ処理してもよい。オー
バヘッドの観点からは、レジスタ退避については退避対
象となったコンテキストに含まれる全てのレジスタデー
タを退避させ、ロードは必要に応じて1つずつ行うこと
が最も効率的と考えられる。
スタデータの置替えは、キャッシュメモリにおけるLR
Uアルゴリズムに類似している。このため基本的なレジ
スタデータの置替えアルゴリズムは、キャッシュメモリ
におけるLRUアルゴリズムを適用することができる。
但し、キャッシュメモリのLRUアルゴリズムを適用す
る場合には、このための処理専用のレジスタを数個、リ
ネーミング・バッファ82以外に用意する必要がある。 4.本発明の適用例 (1)小さなコンテキストの場合 小さなコンテキストとは、所謂同じアドレス空間内で複
数のコンテキストを実行する場合である。この場合に
は、従来のマルチ・スレッドの実行と同様のコンテキス
トの切替えが可能である。同じアドレス空間内で複数の
コンテキストに分けるのは、基本的にはコンパイラの仕
事になる。これに加え本発明にあっては、コンテキスト
の切替タイミングについて図3〜図7に示したロード命
令または分岐命令の実行を契機として行うことで、より
柔軟なコンテキスト切替えが実現できる。
キストを実行する際のマルチ・レジスタ・リネーミング
については、図9〜図12に示したとおりであるが、ハ
ードウェアに関しては、図9のCPU空間10−1に設
けたコンテキスト・マッピング・テーブル62とメモリ
空間16−1のコンテキストごとのコンテキスト・コン
トロール・ブロックは省略できる。メモリ空間16−1
については、コンテキスト・コントロール・ブロックを
設ける代わりにリネーミング・バッファ82がオーバフ
ローしたときのレジスタ退避領域を各コンテキストごと
に設ければよい。 (2)大きなコンテキストの場合 大きなコンテキストとは、アドレス空間を共用しない複
数のコンテキストを実行する場合である。この例の1つ
には、ユニックスのプロセスのような実行がある。ま
た、並列計算機のプロセッサ・エレメントとして本発明
のプロセッサを適用する場合には、他のプロセッサ・エ
レメントからきたメッセージの処理や、こちらから他の
プロセッサ・エレメントに出すメッセージの構築など
を、プロセッサ内の命令の実行と平行して行うにことに
より、メッセージ送出と受取りのためのオーバヘッドを
軽減することができる。
ージベースの通信を主とする並列計算機や分散計算機の
プロセッサ・エレメントとして適用する場合、極めて有
効な特徴である。また、この場合のマルチ・レジスタ・
リネーミングのレジスタ退避に使用するコンテキスト・
コントロール・ブロックは、通常のプロセッサ・コント
ロール・ブロックをそのまま利用できる。 (3)マルチ・メディア処理 近年、画像や音声などのデータ・ストリームを扱う所謂
マルチ・メディア処理が注目で浴びている。マルチ・メ
ディア処理は、大量のデータ・ストリームをしかもリア
ルタイムに近い時間で処理しなければならない。これに
大量のデータ・ストリームをリアルタイムで処理するた
めには、デジタル・シグナル・プロセッサやある種の処
理を行う専用プロセッサをコ・プロセッサとしてメイン
のプロセッサに設けるというアーキテクチャが考えられ
る。
プロセッサを設けた場合、メインプロセッサとコ・プロ
セッサ(Co Processer)の間の制御のやり取りが実行ス
ピードを決め、またユーザに対するレスポンスにも影響
する。特に、ユーザに対するレスポンスの高速化を図る
ため、本発明のプロセッサのアーキテクチャをメインプ
ロセッサとコ・プロセッサによる並列処理に適用するこ
とは、非常に有効である。
ムを実行するときに、その都度、メインプロセッサで実
行中のコンテキストの実行環境を全て退避したり、再開
に当たっての復旧したりする手間を必要としなくなるか
らである。なお本発明は上記の実施例で用いた数値によ
る限定は受けない。またスーパスカラ・プロセッサであ
れば、適宜のアーキテクチャをもつプロセッサに適用で
きる。
ば、複数のコンテキストをパイプラインに流して実行す
る場合のパイプラインのストール(バブル)を低減し、
全体としてのスループットを高めることができる。ま
た、パイプラインのストールを回避するためのコンテキ
ストの切替えに要する時間を大幅に短縮することができ
る。
も、必要とする物理レジスタは1つのコンテキストに必
要なレジスタ数で済み、ハードウェア資源を増やすこと
なく、効率良く複数のコンテキストを実行することがで
きる。また、コンテキストを切り替えるタイミングをプ
ログラムから指定できるため、より柔軟なコンテキスト
のスケジューリングができる。
らプロセスのようなものまで、種々の大きさのコンテキ
ストに対し適用可能である。更にまた、本発明のプロセ
ッサの実現に当たって拡張が必要な部分は、現在使用さ
れているスーパスカラ・アーキテクチャの自然な拡張と
なっており、物理的にも論理的にもそれほど複雑な拡張
を必要とすることなく、本発明によるアーキテクチャを
実現することができる。
ク図
説明図
説明図
場合のルート切替えの説明図
ト
図
解消の説明図
ャート
ロック 96−1,96−2:ラベル 98−1,98−2:レジスタ退避領域 100:有効フラグフィールド 102:データフィールド
Claims (36)
- 【請求項1】ある意味のあるまとまった仕事をするため
の実行単位であるコンテキストを格納した複数のコンテ
キスト格納部と、 あるコンテキストの命令をパイプラインに流して実行す
ると共に、該パイプラインの空きを判断した場合は、実
行途中にある別のコンテキストに切り替えて同時に複数
のコンテキストを実行させる命令実行部と、 前記命令実行部で同時に実行している前記複数のコンテ
キストの各々に固有のコンテキストIDを設定するID
設定部と、 前記命令実行部で同時に複数のコンテキストを実行する
際に使用するレジスタ名を、前記ID設定部で設定され
た実行中のコンテキストIDに実行命令の指定レジスタ
名を加えたレジスタ名に名前替えして物理レジスタを割
り当てるレジスタ・リネーミング部と、を備えたことを
特徴とするマルチコンテキストをサポートするプロセッ
サ。 - 【請求項2】請求項1記載のマルチコンテキストをサポ
ートするプロセッサに於いて、前記コンテキストを構成
する命令列は、プログラムコードに加え、プログラムコ
ードの意味は変えないがプログラムコードの実行を助け
るための種々の情報を格納する属性情報フィールドを持
ち、該属性情報フィールドに、実行途中にある別のコン
テキスト切替えの契機となる後続命令の実行に必要な命
令実行情報を格納したことを特徴とするマルチコンテキ
ストをサポートするプロセッサ。 - 【請求項3】請求項2記載のマルチコンテキストをサポ
ートするプロセッサに於いて、前記コンテキスト切替え
を発生する後続命令はロード命令であり、該ロード命令
の実行でメモリからデータが届くまでのレイテンシ分の
インターバルをもつ先行する命令コードの属性情報フィ
ールドに、この命令の実行と同時に実行途中にある別の
コンテキストの命令フェッチを指示する属性情報を設け
たことを特徴とするマルチコンテキストをサポートする
プロセッサ。 - 【請求項4】請求項2記載のマルチコンテキストをサポ
ートするプロセッサに於いて、前記コンテキスト切替え
を発生する後続命令は分岐命令であり、該分岐命令の実
行でメモリからデータが届くまでのレイテンシ分のイン
ターバルをもつ先行する命令コードの属性情報フィール
ドに、この命令の実行と同時に実行途中にある別のコン
テキストの命令フェッチを指示する属性情報を設けたこ
とを特徴とするマルチコンテキストをサポートするプロ
セッサ。 - 【請求項5】請求項2記載のマルチコンテキストをサポ
ートするプロセッサに於いて、前記命令実行部は、 少なくとも2つの命令格納バッファと、 複数のコンテキストいずれか1つから前記命令格納バッ
ファのいずれか1つに命令をプリフェッチするプリフェ
ッチルートを切り替える第1ルータと、 複数の命令格納バッファのいずれか1つから前記パイプ
ラインにフェッチするフェッチルートを切り替える第2
ルータと、 現在パイプラインに流しているコンテキストの命令の属
性情報から実行途中にある別のコンテキストへの切替え
の契機となる後続命令の実行に必要な命令実行指示情報
を解読した際に、前記第1ルータのプリフェッチルート
を、切替先のコンテキストから現在命令フェッチに使用
されていない別の命令バッファへのプリフェッチルート
に切替えて命令プリフェッチを行わせ、続いて別のコン
テキスト切替えの契機となる前記後続命令の実行を判別
した際に、前記第2ルータのフェッチルートを、前記第
1ルータでプリフェッチルートを切り替えた側の命令バ
ッファに切り替えてプリフェッチされている別のコンテ
キストの命令をパイプラインにフェッチさせるコンテキ
スト切替部と、を備えたことを特徴とするマルチコンテ
キストをサポートするプロセッサ。 - 【請求項6】請求項1記載のマルチコンテキストをサポ
ートするプロセッサに於いて、前記命令実行部は、実行
途中にある別のコンテキスト切替えの契機となる後続命
令を、該後続命令の実行に伴うハードウェアの信号から
認識してコンテキストを切り替えることを特徴とするマ
ルチコンテキストをサポートするプロセッサ。 - 【請求項7】請求項6記載のマルチコンテキストをサポ
ートするプロセッサに於いて、前記命令実行部は、前記
後続命令がロード命令の場合、前記コンテキスト切替え
を、前記ロード命令の実行におけるキャッシュのミスヒ
ットを示す信号から認識することを特徴とするマルチコ
ンテキストをサポートするプロセッサ。 - 【請求項8】請求項6記載のマルチコンテキストをサポ
ートするプロセッサに於いて、前記命令実行部は、前記
後続命令が分岐命令の場合、前記コンテキスト切替え
を、前記ロード命令の実行における分岐条件成立時(ta
ken)を示す分岐ターゲットバッファの出力から認識する
ことを特徴とするマルチコンテキストをサポートするプ
ロセッサ。 - 【請求項9】請求項1記載のマルチコンテキストをサポ
ートするプロセッサに於いて、前記レジスタ・リネーミ
ング部は、 実行中のコンテキストIDを格納するIDレジスタと、 実行中のコンテキストの命令をフェッチする命令レジス
タと、 有効フラグフィールド、レジスタキーフィールド及びデ
ータフィールドを備えた複数の物理レジスタをメモリ上
にマッピングした名前替えレジスタファイルと、 前記IDレジスタのコンテキストIDに前記命令レジス
タのレジスタ指定フィールドのレジスタ名を加えたレジ
スタキーを作成して前記レジスタファイルの該当する物
理レジスタを名前替えレジスタとして割り当てるレジス
タ割付部と、 前記レジスタファイルからオーバフローした名前替えレ
ジスタのデータを退避する実行中のコンテキスト毎に設
けられたレジスタ退避部と、 前記レジスタファイルから前記レジスタ退避部に名前替
えレジスタのデータを退避させる退避処理部と、 前記レジスタ割付け部による前記レジスタファイルの参
照で前記レジスタキーに対応するレジスタが存在しなか
った場合、前記レジスタ退避部から対応するレジスタキ
ーのデータを前記レジスタファイルにロードさせるロー
ド処理部と、を備えたことを特徴とするマルチコンテキ
ストをサポートするプロセッサ。 - 【請求項10】請求項9記載のマルチコンテキストをサ
ポートするプロセッサに於いて、前記名前替えレジスタ
ファイルは、前記命令レジスタのレジスタ指定フィール
ドで指定可能な数の物理レジスタを有することを特徴と
するマルチコンテキストをサポートするプロセッサ。 - 【請求項11】請求項9記載のマルチコンテキストをサ
ポートするプロセッサに於いて、前記名前替えレジスタ
ファイルは、前記レジスタ割付部による名前替えレジス
タの割付けで前記有効フラグをオンして使用状態を表
し、前記退避処理部によるレジスタデータの退避で有効
フラグをオフして空き状態を表すことを特徴とするマル
チコンテキストをサポートするプロセッサ。 - 【請求項12】請求項9記載のマルチコンテキストをサ
ポートするプロセッサに於いて、前記レジスタ退避部
は、退避データを格納するデータフィールドに加え、有
効フラグフィールドを有し、前記退避処理部によるレジ
スタデータの退避により有効フラグをオンしてデータ退
避状態を表し、前記ロード処理部による退避データのロ
ードで前記有効フラグをオフして前記名前替えレジスタ
ファイルに存在することを表すことを特徴とするマルチ
コンテキストをサポートするプロセッサ。 - 【請求項13】請求項9記載のマルチコンテキストをサ
ポートするプロセッサに於いて、前記退避処理部は、前
記名前替えレジスタファイルでオーバフローが発生した
際に、実行待ち状態にある他のコンテキストのいずれか
1つのコンテキストIDをもつ全ての前記物理レジスタ
のデータを、対応するコンテキストのレジスタ退避部に
退避させることを特徴とするマルチコンテキストをサポ
ートするプロセッサ。 - 【請求項14】請求項9記載のマルチコンテキストをサ
ポートするプロセッサに於いて、前記ロード処理部は、
前記レジスタ退避部から実行中のコンテキストのレジス
タデータを前記名前替えレジスタファイルにロードする
に先立ち、前記退避処理部によって実行待ち状態にある
他のコンテキストのいずれか1つのコンテキストIDを
もつ前記物理レジスタのデータを、対応するコンテキス
トのレジスタ退避部に退避させることを特徴とするマル
チコンテキストをサポートするプロセッサ。 - 【請求項15】請求項9記載のマルチコンテキストをサ
ポートするプロセッサに於いて、前記退避処理部および
ロード処理部は、1つの名前替えレジスタ単位にレジス
タデータの退避とロードを行うことを特徴とするマルチ
コンテキストをサポートするプロセッサ。 - 【請求項16】請求項1記載のマルチコンテキストをサ
ポートするプロセッサに於いて、前記複数のコンテキス
トは、異なったアドレス空間で実行される複数のプロセ
スであることを特徴とするマルチコンテキストをサポー
トするプロセッサ。 - 【請求項17】請求項1記載のマルチコンテキストをサ
ポートするプロセッサに於いて、前記複数のコンテキス
トは、同一アドレス空間で実行される複数のスレッドで
あることを特徴とするマルチコンテキストをサポートす
るプロセッサ。 - 【請求項18】請求項17記載のマルチコンテキストを
サポートするプロセッサに於いて、前記スレッドは、数
値計算プログラムのループであることを特徴とするマル
チコンテキストをサポートするプロセッサ。 - 【請求項19】ある意味のあるまとまった仕事をするた
めの実行単位であるコンテキストを複数作成する作成過
程と、 あるコンテキストの命令をパイプラインに流して実行す
ると共に、該パイプラインの空きを判断した場合は、実
行途中にある別のコンテキストに切り替えて同時に複数
のコンテキストを実行させる命令実行過程と、 同時に実行している前記複数のコンテキストの各々に固
有のコンテキストIDを設定するID設定過程と、 前記コンテキストの実行で使用するレジスタ名を、前記
コンテキストIDに実行命令の指定レジスタ名を加えた
レジスタ名に名前替えして物理レジスタを割り当てるレ
ジスタ・リネーミング過程と、を備えたことを特徴とす
るマルチコンテキスト処理方法。 - 【請求項20】請求項19記載のマルチコンテキスト処
理方法に於いて、前記コンテキストを構成する命令列
は、プログラムコードに加え、プログラムコードの意味
は変えないがプログラムコードの実行を助けるための種
々の情報を格納する属性情報フィールドを持ち、該属性
情報フィールドに、実行途中にある別のコンテキスト切
替えの契機となる後続命令の実行に必要な命令実行情報
を設けたことを特徴とするマルチコンテキスト処理方
法。 - 【請求項21】請求項20記載のマルチコンテキスト処
理方法に於いて、前記コンテキスト切替えを発生する後
続命令はロード命令であり、該ロード命令の実行でメモ
リからデータが届くまでのレイテンシ分のインターバル
をもつ先行する命令コードの属性情報フィールドに、こ
の命令の実行と同時に実行途中にある別のコンテキスト
の命令フェッチを指示する属性情報を設けたことを特徴
とするマルチコンテキスト処理方法。 - 【請求項22】請求項20記載のマルチコンテキスト処
理方法に於いて、前記コンテキスト切替えを発生する後
続命令は分岐命令であり、該分岐命令の実行でメモリか
らデータが届くまでのレイテンシ分のインターバルをも
つ先行する命令コードの属性情報フィールドに、この命
令の実行と同時に実行途中にある別のコンテキストの命
令フェッチを指示する属性情報を設けたことを特徴とす
るマルチコンテキスト処理方法。 - 【請求項23】請求項20記載のマルチコンテキスト処
理方法に於いて、前記命令実行過程は、 実行中のコンテキストの命令を命令バッファにプリフェ
ッチした後にパイプラインにフェッチして実行し、 前記実行中のコンテキストの命令の属性情報から実行途
中にある別のコンテキストへの切替えの契機となる後続
命令の実行に必要な命令実行指示情報を解読した際に、
切替先のコンテキストから現在命令フェッチに使用され
ていない別の命令バッファへのプリフェッチに切り替
え、 続いて別のコンテキスト切替えの契機となる前記後続命
令の実行を判別した際に、プリフェッチを切替え先の命
令バッファにプリフェッチされている別のコンテキスト
の命令をパイプラインにフェッチさせることを特徴とす
るマルチコンテキスト処理方法。 - 【請求項24】請求項19記載のマルチコンテキスト処
理方法に於いて、前記命令実行過程は、実行途中にある
別のコンテキストへの切替えの契機となる後続命令を、
該後続命令の実行に伴うハードウェアの信号から認識し
てコンテキストを切り替えることを特徴とするマルチコ
ンテキスト処理方法。 - 【請求項25】請求項24記載のマルチコンテキスト処
理方法に於いて、前記命令実行過程は、前記後続命令が
ロード命令の場合、前記コンテキスト切替えを、前記ロ
ード命令の実行におけるキャッシュのミスヒットを示す
信号から認識することを特徴とするマルチコンテキスト
処理方法。 - 【請求項26】請求項24記載のマルチコンテキスト処
理方法に於いて、前記命令実行過程は、前記後続命令が
分岐命令の場合、前記コンテキスト切替えを、前記ロー
ド命令の実行における分岐条件成立時(taken)を示す分
岐ターゲットバッファの出力から認識することを特徴と
するマルチコンテキスト処理方法。 - 【請求項27】請求項19記載のマルチコンテキスト処
理方法に於いて、前記名前替え過程は、 実行中のコンテキストIDをIDレジスタに格納し、 実行中のコンテキストの命令を命令レジスタにフェッチ
し、 実行中のコンテキストIDに、前記命令レジスタにフェ
ッチしている命令中のレジスタ指定フィールドのレジス
タ名を加えたレジスタキーを作成し、 有効フラグフィールド、レジスタキーフィールド及びデ
ータフィールドを備えた複数の物理レジスタを有する名
前替えレジスタファイルの該当する物理レジスタを、前
記レジスタキーで検索して名前替えレジスタとして割り
付け、 前記レジスタファイルのオーバフロー発生時に、前記名
前替えレジスタのデータを、実行中のコンテキスト毎に
設けられたレジスタ退避部に退避し、 前記レジスタファイルの参照で前記レジスタキーに対応
するレジスタが存在しなかった場合、前記レジスタ退避
部から対応するレジスタキーのデータを前記レジスタフ
ァイルにロードさせることを特徴とするマルチコンテキ
スト処理方法。 - 【請求項28】請求項27記載のマルチコンテキスト処
理方法に於いて、前記名前替えレジスタファイルは、前
記命令レジスタのレジスタ指定フィールドで指定可能な
数の物理レジスタを有することを特徴とするマルチコン
テキスト処理方法。 - 【請求項29】請求項27記載のマルチコンテキスト処
理方法に於いて、前記物理レジスタに名前替えレジスタ
を割り付けた際に、前記有効フラグをオンして使用状態
を表し、前記レジスタデータの退避で前記有効フラグを
オフして空き状態を表すことを特徴とするマルチコンテ
キスト処理方法。 - 【請求項30】請求項27記載のマルチコンテキスト処
理方法に於いて、前記レジスタ退避部は、退避データを
格納するデータフィールドに加え、有効フラグフィール
ドを有し、前記名前替えレジスタファイルからのレジス
タデータの退避により有効フラグをオンしてデータ退避
状態を表し、前記名前替えレジスタファイルへの退避デ
ータのロードで前記有効フラグをオフして前記名前替え
レジスタファイルに存在することを表すことを特徴とす
るマルチコンテキスト処理方法。 - 【請求項31】請求項27記載のマルチコンテキスト処
理方法に於いて、前記名前替えレジスタファイルでオー
バフローが発生した際に、実行待ち状態にある他のコン
テキストのいずれか1つのコンテキストIDをもつ全て
の前記物理レジスタのデータを、対応するコンテキスト
のレジスタ退避部に退避させることを特徴とするマルチ
コンテキスト処理方法。 - 【請求項32】請求項27記載のマルチコンテキスト処
理方法に於いて、前記レジスタ退避部から実行中のコン
テキストのレジスタデータを前記名前替えレジスタファ
イルにロードするに先立ち、実行待ち状態にある他のコ
ンテキストのいずれか1つのコンテキストIDをもつ前
記物理レジスタのデータを、対応するコンテキストのレ
ジスタ退避部に退避させることを特徴とするマルチコン
テキスト処理方法。 - 【請求項33】請求項27記載のマルチコンテキスト処
理方法に於いて、1つの名前替えレジスタ単位にレジス
タデータの退避とロードを行うことを特徴とするマルチ
コンテキスト処理方法。 - 【請求項34】請求項19記載のマルチコンテキスト処
理方法に於いて、前記複数のコンテキストは、異なった
アドレス空間で実行される複数のプロセスであることを
特徴とするマルチコンテキスト処理方法。 - 【請求項35】請求項19記載のマルチコンテキスト処
理方法に於いて、前記複数のコンテキストは、同一アド
レス空間で実行される複数のスレッドであることを特徴
とするマルチコンテキスト処理方法。 - 【請求項36】請求項35記載のマルチコンテキスト処
理方法に於いて、前記スレッドは、数値計算プログラム
のループであることを特徴とするマルチコンテキスト処
理方法。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP29074294A JP3569014B2 (ja) | 1994-11-25 | 1994-11-25 | マルチコンテキストをサポートするプロセッサおよび処理方法 |
| US08/507,992 US5872985A (en) | 1994-11-25 | 1995-07-27 | Switching multi-context processor and method overcoming pipeline vacancies |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP29074294A JP3569014B2 (ja) | 1994-11-25 | 1994-11-25 | マルチコンテキストをサポートするプロセッサおよび処理方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH08147165A true JPH08147165A (ja) | 1996-06-07 |
| JP3569014B2 JP3569014B2 (ja) | 2004-09-22 |
Family
ID=17759944
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP29074294A Expired - Fee Related JP3569014B2 (ja) | 1994-11-25 | 1994-11-25 | マルチコンテキストをサポートするプロセッサおよび処理方法 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US5872985A (ja) |
| JP (1) | JP3569014B2 (ja) |
Cited By (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7310705B2 (en) | 2004-07-29 | 2007-12-18 | Fujitsu Limited | Multithread processor and thread switching control method |
| JP2008532131A (ja) * | 2005-02-25 | 2008-08-14 | クリアスピード・テクノロジー・ピーエルシー | マイクロプロセッサアーキテクチャ |
| JP2010277371A (ja) * | 2009-05-28 | 2010-12-09 | Panasonic Corp | マルチスレッドプロセッサ、コンパイラおよびオペレーティングシステム |
| JP2011028440A (ja) * | 2009-07-23 | 2011-02-10 | Nec Corp | マルチスレッドプロセッサ及びコンピュータプログラム |
| JP2013214331A (ja) * | 2013-07-22 | 2013-10-17 | Panasonic Corp | コンパイラ |
| US10114645B2 (en) | 2012-08-13 | 2018-10-30 | International Business Machines Corporation | Reducing stalling in a simultaneous multithreading processor by inserting thread switches for instructions likely to stall |
Families Citing this family (51)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5944816A (en) * | 1996-05-17 | 1999-08-31 | Advanced Micro Devices, Inc. | Microprocessor configured to execute multiple threads including interrupt service routines |
| US5933627A (en) * | 1996-07-01 | 1999-08-03 | Sun Microsystems | Thread switch on blocked load or store using instruction thread field |
| US6405234B2 (en) * | 1997-09-11 | 2002-06-11 | International Business Machines Corporation | Full time operating system |
| JP3452771B2 (ja) * | 1997-10-02 | 2003-09-29 | 富士通株式会社 | 命令制御システム及びその方法 |
| US6223208B1 (en) * | 1997-10-03 | 2001-04-24 | International Business Machines Corporation | Moving data in and out of processor units using idle register/storage functional units |
| US6311267B1 (en) * | 1998-11-20 | 2001-10-30 | International Business Machines Corporation | Just-in-time register renaming technique |
| US6507862B1 (en) * | 1999-05-11 | 2003-01-14 | Sun Microsystems, Inc. | Switching method in a multi-threaded processor |
| US6874080B2 (en) * | 2001-11-19 | 2005-03-29 | Intel Corporation | Context processing by substantially simultaneously selecting address and instruction of different contexts |
| US7313676B2 (en) * | 2002-06-26 | 2007-12-25 | Intel Corporation | Register renaming for dynamic multi-threading |
| US7002599B2 (en) * | 2002-07-26 | 2006-02-21 | Sun Microsystems, Inc. | Method and apparatus for hardware acceleration of clipping and graphical fill in display systems |
| US20040034759A1 (en) * | 2002-08-16 | 2004-02-19 | Lexra, Inc. | Multi-threaded pipeline with context issue rules |
| US20050060517A1 (en) * | 2003-09-12 | 2005-03-17 | Morrow Michael W. | Switching processor threads during long latencies |
| US7617499B2 (en) * | 2003-12-18 | 2009-11-10 | International Business Machines Corporation | Context switch instruction prefetching in multithreaded computer |
| US7493621B2 (en) * | 2003-12-18 | 2009-02-17 | International Business Machines Corporation | Context switch data prefetching in multithreaded computer |
| DE10359949B4 (de) * | 2003-12-19 | 2007-01-04 | Infineon Technologies Ag | Multithread-Prozessorarchitektur zum getriggerten Thread-Umschalten ohne Taktzyklusverlust, ohne Umschalt-Programmbefehl und ohne Erweiterung des Programmbefehlsformates |
| US8643659B1 (en) | 2003-12-31 | 2014-02-04 | 3Dlabs Inc., Ltd. | Shader with global and instruction caches |
| US8522253B1 (en) * | 2005-03-31 | 2013-08-27 | Guillermo Rozas | Hardware support for virtual machine and operating system context switching in translation lookaside buffers and virtually tagged caches |
| EP2011018B1 (en) | 2006-04-12 | 2016-07-13 | Soft Machines, Inc. | Apparatus and method for processing an instruction matrix specifying parallel and dependent operations |
| CN107368285B (zh) | 2006-11-14 | 2020-10-09 | 英特尔公司 | 多线程架构 |
| US7873816B2 (en) * | 2008-11-20 | 2011-01-18 | International Business Machines Corporation | Pre-loading context states by inactive hardware thread in advance of context switch |
| JP5540537B2 (ja) * | 2009-03-24 | 2014-07-02 | 株式会社オートネットワーク技術研究所 | 制御装置、制御方法及びコンピュータプログラム |
| EP3156896B1 (en) | 2010-09-17 | 2020-04-08 | Soft Machines, Inc. | Single cycle multi-branch prediction including shadow cache for early far branch prediction |
| KR101620676B1 (ko) | 2011-03-25 | 2016-05-23 | 소프트 머신즈, 인크. | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 레지스터 파일 세그먼트 |
| CN108108188B (zh) | 2011-03-25 | 2022-06-28 | 英特尔公司 | 用于通过使用由可分区引擎实例化的虚拟核来支持代码块执行的存储器片段 |
| CN103547993B (zh) | 2011-03-25 | 2018-06-26 | 英特尔公司 | 通过使用由可分割引擎实例化的虚拟核来执行指令序列代码块 |
| US9442772B2 (en) | 2011-05-20 | 2016-09-13 | Soft Machines Inc. | Global and local interconnect structure comprising routing matrix to support the execution of instruction sequences by a plurality of engines |
| CN107729267B (zh) | 2011-05-20 | 2022-01-25 | 英特尔公司 | 资源的分散分配以及用于支持由多个引擎执行指令序列的互连结构 |
| KR101703401B1 (ko) | 2011-11-22 | 2017-02-06 | 소프트 머신즈, 인크. | 다중 엔진 마이크로프로세서용 가속 코드 최적화기 |
| WO2013077876A1 (en) | 2011-11-22 | 2013-05-30 | Soft Machines, Inc. | A microprocessor accelerated code optimizer |
| US8930674B2 (en) | 2012-03-07 | 2015-01-06 | Soft Machines, Inc. | Systems and methods for accessing a unified translation lookaside buffer |
| US9710399B2 (en) | 2012-07-30 | 2017-07-18 | Intel Corporation | Systems and methods for flushing a cache with modified data |
| US9229873B2 (en) | 2012-07-30 | 2016-01-05 | Soft Machines, Inc. | Systems and methods for supporting a plurality of load and store accesses of a cache |
| US9916253B2 (en) | 2012-07-30 | 2018-03-13 | Intel Corporation | Method and apparatus for supporting a plurality of load accesses of a cache in a single cycle to maintain throughput |
| US9740612B2 (en) | 2012-07-30 | 2017-08-22 | Intel Corporation | Systems and methods for maintaining the coherency of a store coalescing cache and a load cache |
| US9430410B2 (en) | 2012-07-30 | 2016-08-30 | Soft Machines, Inc. | Systems and methods for supporting a plurality of load accesses of a cache in a single cycle |
| US9678882B2 (en) | 2012-10-11 | 2017-06-13 | Intel Corporation | Systems and methods for non-blocking implementation of cache flush instructions |
| WO2014151043A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for emulating a guest centralized flag architecture by using a native distributed flag architecture |
| US10275255B2 (en) | 2013-03-15 | 2019-04-30 | Intel Corporation | Method for dependency broadcasting through a source organized source view data structure |
| US9904625B2 (en) | 2013-03-15 | 2018-02-27 | Intel Corporation | Methods, systems and apparatus for predicting the way of a set associative cache |
| US9811342B2 (en) | 2013-03-15 | 2017-11-07 | Intel Corporation | Method for performing dual dispatch of blocks and half blocks |
| EP2972845B1 (en) | 2013-03-15 | 2021-07-07 | Intel Corporation | A method for executing multithreaded instructions grouped onto blocks |
| US10140138B2 (en) | 2013-03-15 | 2018-11-27 | Intel Corporation | Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation |
| WO2014150991A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for implementing a reduced size register view data structure in a microprocessor |
| WO2014150971A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for dependency broadcasting through a block organized source view data structure |
| US9891924B2 (en) | 2013-03-15 | 2018-02-13 | Intel Corporation | Method for implementing a reduced size register view data structure in a microprocessor |
| WO2014150806A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | A method for populating register view data structure by using register template snapshots |
| US9569216B2 (en) | 2013-03-15 | 2017-02-14 | Soft Machines, Inc. | Method for populating a source view data structure by using register template snapshots |
| US9886279B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Method for populating and instruction view data structure by using register template snapshots |
| US11080111B1 (en) * | 2020-02-24 | 2021-08-03 | Nvidia Corporation | Technique for sharing context among multiple threads |
| US10999497B1 (en) | 2020-03-31 | 2021-05-04 | Nxp Usa, Inc. | System for parallelly processing image lines from multiple image sensors |
| KR20250081199A (ko) * | 2023-11-29 | 2025-06-05 | 주식회사 퓨리오사에이아이 | 인터 트랜스포즈가 가능한 패킷 네트워크 |
Family Cites Families (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5228131A (en) * | 1988-02-24 | 1993-07-13 | Mitsubishi Denki Kabushiki Kaisha | Data processor with selectively enabled and disabled branch prediction operation |
| US5226126A (en) * | 1989-02-24 | 1993-07-06 | Nexgen Microsystems | Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags |
| US5226130A (en) * | 1990-02-26 | 1993-07-06 | Nexgen Microsystems | Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency |
| JP2532300B2 (ja) * | 1990-10-17 | 1996-09-11 | 三菱電機株式会社 | 並列処理装置における命令供給装置 |
| US5428786A (en) * | 1991-03-07 | 1995-06-27 | Digital Equipment Corporation | Branch resolution via backward symbolic execution |
| US5287467A (en) * | 1991-04-18 | 1994-02-15 | International Business Machines Corporation | Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit |
| KR100310581B1 (ko) * | 1993-05-14 | 2001-12-17 | 피터 엔. 데트킨 | 분기목표버퍼의추측기록메카니즘 |
| IE940855A1 (en) * | 1993-12-20 | 1995-06-28 | Motorola Inc | Data processor with speculative instruction fetching and¹method of operation |
| US5487022A (en) * | 1994-03-08 | 1996-01-23 | Texas Instruments Incorporated | Normalization method for floating point numbers |
| US5666506A (en) * | 1994-10-24 | 1997-09-09 | International Business Machines Corporation | Apparatus to dynamically control the out-of-order execution of load/store instructions in a processor capable of dispatchng, issuing and executing multiple instructions in a single processor cycle |
-
1994
- 1994-11-25 JP JP29074294A patent/JP3569014B2/ja not_active Expired - Fee Related
-
1995
- 1995-07-27 US US08/507,992 patent/US5872985A/en not_active Expired - Lifetime
Cited By (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7310705B2 (en) | 2004-07-29 | 2007-12-18 | Fujitsu Limited | Multithread processor and thread switching control method |
| JP2008532131A (ja) * | 2005-02-25 | 2008-08-14 | クリアスピード・テクノロジー・ピーエルシー | マイクロプロセッサアーキテクチャ |
| US8447953B2 (en) | 2005-02-25 | 2013-05-21 | Rambus Inc. | Instruction controller to distribute serial and SIMD instructions to serial and SIMD processors |
| JP2010277371A (ja) * | 2009-05-28 | 2010-12-09 | Panasonic Corp | マルチスレッドプロセッサ、コンパイラおよびオペレーティングシステム |
| JP2011028440A (ja) * | 2009-07-23 | 2011-02-10 | Nec Corp | マルチスレッドプロセッサ及びコンピュータプログラム |
| US10114645B2 (en) | 2012-08-13 | 2018-10-30 | International Business Machines Corporation | Reducing stalling in a simultaneous multithreading processor by inserting thread switches for instructions likely to stall |
| US10585669B2 (en) | 2012-08-13 | 2020-03-10 | International Business Machines Corporation | Reducing stalling in a simultaneous multithreading processor by inserting thread switches for instructions likely to stall |
| JP2013214331A (ja) * | 2013-07-22 | 2013-10-17 | Panasonic Corp | コンパイラ |
Also Published As
| Publication number | Publication date |
|---|---|
| US5872985A (en) | 1999-02-16 |
| JP3569014B2 (ja) | 2004-09-22 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3569014B2 (ja) | マルチコンテキストをサポートするプロセッサおよび処理方法 | |
| JP3771957B2 (ja) | プロセッサ・アーキテクチャにおける分散制御のための装置および方法 | |
| JP3580657B2 (ja) | 並列マルチタスキングの方法及びシステム | |
| JP3548132B2 (ja) | マルチスレッド・プロセッサ内でのパイプライン・ステージのフラッシュ方法および装置 | |
| CN113703834B (zh) | 基于块的处理器核复合寄存器 | |
| US7469407B2 (en) | Method for resource balancing using dispatch flush in a simultaneous multithread processor | |
| JP6628801B2 (ja) | プロセッサ・コアのための実行ユニット回路、プロセッサ・コア、およびプロセッサ・コア内のプログラム命令を実行する方法 | |
| TWI299465B (en) | Simultaneous multithread processor and method therefor | |
| US7363467B2 (en) | Dependence-chain processing using trace descriptors having dependency descriptors | |
| US5867684A (en) | Method and processor that permit concurrent execution of a store multiple instruction and a dependent instruction | |
| US20080126771A1 (en) | Branch Target Extension for an Instruction Cache | |
| JP3678444B2 (ja) | パイプ制御及びレジスタ変換機能を増強したスーパースカラーパイプライン式のプロセッサ | |
| US7213135B2 (en) | Method using a dispatch flush in a simultaneous multithread processor to resolve exception conditions | |
| JPH09120360A (ja) | ロード命令を実行する実行ユニットを具備するデータ・プロセッサおよびその動作方法 | |
| JP2000105699A (ja) | 命令レベル並列性を増加させるためのリザベ―ションステ―ション | |
| US7194603B2 (en) | SMT flush arbitration | |
| US6463524B1 (en) | Superscalar processor and method for incrementally issuing store instructions | |
| JPH096611A (ja) | データ処理システムにおけるデータをバッファリングする方法およびシステム | |
| JPH10154073A (ja) | データ依存性を管理する装置及び方法 | |
| JP2007200288A (ja) | 実行スレッドをグループ化するためのシステム及び方法 | |
| US7203821B2 (en) | Method and apparatus to handle window management instructions without post serialization in an out of order multi-issue processor supporting multiple strands | |
| JP4608099B2 (ja) | ジョブ信号を処理する多数の処理ユニットを有する処理システムにおけるジョブ信号処理方法および処理システム | |
| US20040199749A1 (en) | Method and apparatus to limit register file read ports in an out-of-order, multi-stranded processor | |
| US5765017A (en) | Method and system in a data processing system for efficient management of an indication of a status of each of multiple registers | |
| KR100861701B1 (ko) | 레지스터 값의 유사성에 기반을 둔 레지스터 리네이밍시스템 및 방법 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040205 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040224 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040422 |
|
| 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: 20040525 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040617 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090625 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100625 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110625 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120625 Year of fee payment: 8 |
|
| LAPS | Cancellation because of no payment of annual fees |