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
Application number
JP6290742A
Other languages
English (en)
Other versions
JP3569014B2 (ja
Inventor
Yasunori Kimura
康則 木村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP29074294A priority Critical patent/JP3569014B2/ja
Priority to US08/507,992 priority patent/US5872985A/en
Publication of JPH08147165A publication Critical patent/JPH08147165A/ja
Application granted granted Critical
Publication of JP3569014B2 publication Critical patent/JP3569014B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/462Saving 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

(57)【要約】 【目的】パイプラインのストールを減らし、複数のコン
テキストを同時に効率良くパイプラインに流して性能を
向上させる。 【構成】命令実行部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

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、スーパスカラのアーキ
テクチャをもつプロセッサ及び処理方法に関し、特に、
複数のコンテキストを同時にパイプラインに流して実行
するマルチコンテキストをサポートするプロセッサ及び
処理方法に関する。最初に、本発明で使用するマルチコ
ンテキスト(Multi-Context) を説明する。まずコンテキ
ストを、「ある意味のあるまとまった仕事をするための
計算機上の実行単位」と定義する。コンテキストには、
例えばユニックス(UNIX) のアドレス空間の異なるプロ
セスや、マッシュ(MACH) でいう同一アドレス空間のス
レッドを含む。即ち、複数のコンテキストは、独立した
メモリ空間を持っているか、同じメモリ空間を持ってい
るかを問題にせず、両方を包含する。
【0002】したがって、マルチコンテキストとは、同
時に実行可能な複数のコンテキストの集合である。本発
明のマルチコンテキストをサポートするプロセッサは、
複数のコンテキストをパイプラインに効率良く投入して
実行することを目指している。
【0003】
【従来の技術】従来、スーパスカラプロセッサのパイプ
ラインには、一般に単一のユーザプログラムから単一の
命令列にコンパイルされたコードが投入され、実行時に
ハードウエアによって並列性が抽出されて、並列に実行
されている。しかし、この方法では、命令間に依存関係
がある場合や、キャッシュのミスヒット、分岐命令が実
行された場合などには、実行が中断してパイプラインに
空きが出来てしまう。これをパイプラインのストール、
あるいはパイプラインのバブル発生という。このためプ
ロセッサが本来持っている性能をフルに引き出すことは
できない。
【0004】そこで、パイプラインのストールを解消す
るため、複数のプロセスの命令列を、ある一定の間隔で
パイプラインに投入し、お互いの命令列から生じるパイ
プラインのストールを相殺する方法がある。しかし、こ
の方法では、命令列の切替えが間隔が一定であるため、
プログラムの性質を使ったスケジューリングができず、
ストール解消の効果が小さい。
【0005】また複数のコンテキストを同時に実行させ
るためには、各コンテキストの実行環境を保持するため
のレジスタなどをコンテキスト分持たなければならず、
資源を大量に使ってしまう。逆に、ある一定の資源をコ
ンテキスト分に分割して使う場合には、一つのコンテキ
ストが使える資源が減ってしまうという欠点があった。
【0006】この方法の一例として、HEPを説明す
る。HEPは、図13のように、複数の命令ストリーム
を機械的に一命令ずつパイプラインに投入するものであ
り、メカニズムとしては簡単である。図13は、n個の
プログラムを同時に一つのパイプラインに投入してい
る。ここでプログラム1〜nの各々が本発明のコンテキ
ストである。実行時には、 プログラム1の命令1 プログラム2の命令1 ・・・・ プログラムnの命令1 プログラム1の命令2 ・・・ の順で命令がパイプライン200に投入され、実行され
る。パイプライン200は4段で構成される。フェッチ
段Fは命令をキャッシュから取り出す。デコード段Dは
命令を解読する。実行段EX(Execute )は命令を実行
する。ストア段S(Store )は実行結果を格納する。
【0007】いま、プログラム1の命令1がロード命令
で、プログラム1の命令2が命令1でロードした結果を
使うような場合、プログラム1だけで実行している場合
には、命令1と命令2の実行の間にパイプラインのスト
ールが生じる。一般にロード命令はメモリをアクセスす
るため、直後のサイクルでロード結果を使うことはでき
ず、パイプラインのストールが生じる。
【0008】図13のHEPの場合、プログラム1の命
令1と命令2の実行の間には、プログラム1〜プログラ
ムnの命令1の実行が挟まれるため、プログラム1の命
令1がロード命令であった場合のパイプライン200の
ストールは実効的に無くなり、プログラム実行のスルー
プットを上げることができる。
【0009】
【発明が解決しようとする課題】しかし、パイプライン
200への命令投入に当たって、複数のプログラム1〜
nの命令ストリーム間の関係を考慮していないため、パ
イプライン200のストール発生を常に減少できるかど
うかの保証はない。また、実効時には同時に動くコンテ
キスト分(プログラム分)だけ作業レジスタを用意しな
ければならず、レジスタ数に対する要求は大きくなる。
【0010】逆の言い方をすると、ハードウェアで用意
できるレジスタ数が固定の場合には、1つのコンテキス
トが使えるレジスタの数が減ることになる。図13のH
EPの例では、単純にはn個のプログラム分のレジスタ
セットを一時に用意しなければならない。更に、このよ
うな単純な命令ストリームの投入方法では、命令キャッ
シュ、データキャッシュのヒット率が悪くなる可能性も
大きい。
【0011】一方、パイプラインのストールを解消する
別の方法として、単一のプログラムからスレッドと呼ば
れる並列に実行可能なプログラム単位を切り出し、これ
を同時にパイプラインに流して実行する方法もある。し
かし、この方法はフォートラン(FORTRAN)などで書かれ
た数値計算プログラムのループを一つのスレッドとする
ような、単純な場合にのみ適用可能であることが多く、
一般のプログラムに対してコンパイラでスレッドを抽出
することは極めて困難であった。
【0012】本発明の目的は、スパースカラプロセッサ
のパイプラインのストールを減らし、複数のコンテキス
トを同時に効率良くパイプラインに流して性能を向上さ
せるマルチコンテキストをサポートするプロセッサとそ
の処理方法を提供する。
【0013】
【課題を解決するための手段】図1は本発明の原理説明
図である。まず、ある意味のあるまとまった仕事をする
ための実行単位である複数のコンテキスト52−1,5
2−2が、キャッシュメモリなどのコンテキスト格納部
(メモリ空間)16−1に格納されている。命令実行部
25は、パイプライン15に、あるコンテキスト52−
1の命令を流して実行すると共に、パイプライン15の
空きを判断した場合は、実行途中にある別のコンテキス
ト52−2に切り替えて同時に複数のコンテキストを実
行させる。
【0014】ID設定部62−1,62−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 に名前替えして物理レジス
タを割り当てる。
【0015】このレジスタ・リネーミング部25は、マ
ルチ・リネーミング機能によって、複数のコンテキスト
を同時にパイプラインに流したときの1つのコンテキス
ト分の物理レジスタだけで、全てのコンテキストの実行
に必要なマルチ・レジスタリネーミングを行う。コンテ
キストの切替えは、コンテキストをハードウェアとソフ
トウェアの組合せ、又はハードウェアのみによって行わ
れる。
【0016】ハードウェアとソフトウェアの組合せでコ
ンテキストを切り替える場合、コンテキスト52−1,
52−2を構成する命令列は、プログラムコードに加
え、プログラムコードの意味は変えないがプログラムコ
ードの実行を助けるための種々の情報を格納する属性情
報フィールドを持つ。属性情報フィールドには、実行途
中にある別のコンテキスト切替えの契機となる後続命令
の実行に必要な命令実行情報が格納される。
【0017】コンテキスト切替えの契機となる後続命令
には、ロード命令と分岐命令がある。後続命令はロード
命令の場合、ロード命令の実行でメモリからデータが届
くまでのレイテンシ分のインターバルをもつ先行する命
令コードの属性情報フィールドに、この命令の実行と同
時に実行途中にある別のコンテキストの命令フェッチを
指示する属性情報を設ける。後続命令が分岐命令の場合
も、同様に、分岐命令の実行でメモリからデータが届く
までのレイテンシ分のインターバルをもつ先行する命令
コードの属性情報フィールドに、この命令の実行と同時
に実行途中にある別のコンテキストの命令フェッチを指
示する属性情報を設ける。
【0018】属性情報を利用したコンテキスト切替えの
ため、命令実行部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を設ける。
【0019】コンテキスト切替部60は、現在パイプラ
イン15に流しているコンテキスト52−1の命令の属
性情報から、実行途中にある別のコンテキストへの切替
えの契機となる後続命令の実行に必要な命令実行指示情
報を解読した際に、第1ルータ54のプリフェッチルー
トを、切替先のコンテキスト52−1から現在命令フェ
ッチに使用されていない別の命令バッファ56−1への
プリフェッチルートに切り替えて命令プリフェッチを行
わせる。
【0020】続いてコンテキスト切替部60は、別のコ
ンテキスト52−2への切替えの契機となる後続命令の
実行を判別した際に、第2ルータ58のフェッチルート
を、第1ルータ54でプリフェッチルートを切り替えた
側の命令バッファ56−1に切り替えてプリフェッチさ
れている別のコンテキスト52−2の命令をパイプライ
ン15にフェッチさせる。
【0021】またコンテキストの切替えをハードウェア
で行う場合、命令実行部10は、実行途中にある別のコ
ンテキスト切替えの契機となる後続命令を、この後続命
令の実行に伴うハードウェアの信号から認識してコンテ
キストを切り替える。例えば後続命令がロード命令の場
合、コンテキスト切替えを、ロード命令の実行における
キャッシュのミスヒットを示す信号から認識する。また
後続命令がロード命令の場合、コンテキスト切替えを、
ロード命令の実行における分岐条件成立時(taken)を示
す分岐ターゲットバッファの出力から認識する。
【0022】またマルチリネーミング機能を実現するレ
ジスタ・リネーミング部35は、実行中のコンテキスト
IDを格納するIDレジスタ76と、実行中のコンテキ
ストの命令をフェッチする命令レジスタ78と、有効フ
ラグフィールド、レジスタキーフィールド及びデータフ
ィールドを備えた複数の物理レジスタ84−1〜84−
kを有する名前替えレジスタファイル82を備える。
【0023】レジスタ割付部は、IDレジスタ76のコ
ンテキストIDであるCIDiに、命令レジスタ78のレジ
スタ指定フィールド80のレジスタ名Rjと加えたレジス
タキーCIDi-Rj を作成してレジスタファイル82の該当
する物理レジスタを名前替えレジスタとして割り付け
る。レジスタファイル82からオーバフローした名前替
えレジスタのデータは、退避処理部92−1によって退
避実行中のコンテキスト毎に設けられたレジスタ退避部
98−1,98−2に退避される。またロード処理部9
2−2は、レジスタ割付部によるレジスタファイル82
の参照で、レジスタキーCIDi-Rj に対応するレジスタが
存在しなかった場合、レジスタ退避部98−iから対応
するレジスタキーのデータをレジスタファイル82にロ
ードさせる。
【0024】レジスタファイル82は、命令レジスタ7
8のレジスタ指定フィールド80で指定可能な数の物理
レジスタ84−1〜84−mを有する。レジスタファイ
ル82の各物理レジスタ84−1〜84−mは、名前替
えレジスタの割付けで有効フラグ86をオンして使用状
態を表し、レジスタデータの退避で有効フラグ86をオ
フして空き状態を表す。
【0025】またレジスタ退避部98−1,98−2
は、退避データを格納するデータフィールドに加え、有
効フラグフィールドを有する。有効フラグは、レジスタ
データの退避によりオンしてデータ退避状態を表し、退
避データのロードで有効フラグをオフしてレジスタファ
イル82に存在することを表す。また退避処理部92−
1は、レジスタファイル82でオーバフローが発生した
際に、実行中以外のコンテキストのいずれか1つのコン
テキストIDをもつ全ての前記物理レジスタのデータ
を、対応するコンテキストのレジスタ退避部98に退避
させる。
【0026】ロード処理部92−2は、レジスタ退避部
98から実行中のコンテキストのレジスタデータをレジ
スタファイル82にロードするに先立ち、退避処理部9
2−1によって、実行中以外のコンテキストのいずれか
1つのコンテキストIDをもつ物理レジスタのデータ
を、対応するコンテキストのレジスタ退避部98に退避
させる。
【0027】またレジスタデータの退避とロードはコン
テキスト単位ではなく、レジスタ単位に行ってもよい。
実行対象となる複数のコンテキストは、異なったアドレ
ス空間で実行される複数のプロセスである。また同一ア
ドレス空間で実行される複数のスレッドであってもよ
い。スレッドは、数値計算プログラムのループである。
また本発明はマルチコンテキストをサポートするマルチ
コンテキスト処理方法を提供する。この処理方法は、あ
る意味のあるまとまった仕事をするための実行単位であ
るコンテキストを複数作成する作成過程;パイプライン
にあるコンテキストの命令を流して実行すると共に、パ
イプラインの空きを判断した場合は、実行途中にある別
のコンテキストに切り替えて同時に複数のコンテキスト
を実行させる命令実行過程;同時に実行している複数の
コンテキストの各々に固有のコンテキストIDを設定す
るID設定過程;前記コンテキストの実行で使用するレ
ジスタ名を、前記コンテキストIDに実行命令の指定レ
ジスタ名を加えたレジスタ名に名前替えして物理レジス
タを割り当てるレジスタ・リネーミング過程と、を有す
る。この処理方法の詳細も装置構成と基本的に同じにな
る。
【0028】
【作用】このような本発明のマルチコンテキストをサポ
ートするプロセッサとその処理方法によれば、マルチリ
ネーミング機能による命令間の依存関係を解消し、また
ロード命令の実行によるキャッシュのミスヒットや分岐
命令が実行等を判断してパイプラインに流すコンテキス
トを切り替えることで、パイプラインストールを減ら
し、プロセッサの性能を向上する。
【0029】また柔軟なコンテキストの同時実行をスケ
ジューリングすることで、スーパスカラのアーキテクチ
ャをもつプロセッサの潜在性能をフルに引き出す。また
マルチリネーミングにおいて、同時に実行される複数の
コンテキストが使うレジスタの数を、単一のコンテキス
トを走らせた場合と同じ数にでき、資源の利用効率を下
げない。
【0030】更に、コンテキストを切り替える場合に、
切替前のコンテキストで使用していた物理レジスタを、
切替後のコンテキストで使用するレジスタに瞬時に切り
替えず、必要なレジスタずつ徐々に切り替えることで、
コンテキスト切替時のオーバヘッドを小さくする。さら
に、コンテキストは、DOループのような小さな粒度の
コンテキストばかりでなく、ユーザプロセスのような大
きな粒度のコンテキストも扱えるようにする。
【0031】
【実施例】
<目 次> 1.動作環境 2.コンテキストの切替え 3.マルチレジスタ・リネーミング 4.本発明の適用例 1.動作環境 図2は、本発明のマルチコンテキストをサポートするプ
ロセッサの動作環境となるプロセッサマシンのハードウ
ェアである。このプロセッサマシンは、CPU10から
のバス12に主記憶制御ユニット14を介して主記憶ユ
ニット16を接続している。また、入出力バスアダプタ
22−1,22−2に対し、外部の入出力バス24−
1,24−2を接続している。
【0032】入出力バス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に接続している。
【0033】システムバス34−1,34−2には、シ
ステム記憶ユニット36−1,36−2を接続してい
る。更に、システムバス34−1,34−2に対し図示
のプロセッサマシンと同じ複数のプロセッサマシンを接
続することで、マルチプロセッサシステムが構築され
る。プロセッサマシンのCPU10には、浮動小数点演
算制御ユニット38、浮動小数点演算実行ユニット4
0、整数演算制御ユニット42、スーパスカラ整数演算
実行ユニット44、メモリ管理ユニット46、命令キャ
ッシュメモリ48、データキャッシュメモリ50および
バスインタフェースユニット52が設けられる。
【0034】浮動小数点演算実行ユニット40は、浮動
小数点演算制御ユニット38の制御のもとに浮動小数点
演算を実行する。スーパスカラ整数演算実行ユニット4
4はパイプラインを備え、整数演算制御ユニット42の
制御のもとに、動的に並列実行可能な整数演算命令を判
別し、並列的に整数演算を実行する。即ち、本発明にあ
っては、整数演算制御ユニット42とスーパスカラ整数
演算実行ユニット44によって複数のコンテキストを並
列的に実行する処理が行われる。
【0035】命令キャッシュメモリ48は、メモリ管理
ユニット46によるキャッシュ制御を受ける。命令キャ
ッシュメモリ48には、浮動小数点演算制御ユニット3
8および整数演算制御ユニット42で使用する主記憶制
御ユニット16からフェッチしたプログラムコードが格
納される。この内、整数演算制御ユニット42およびス
ーパスカラ整数演算実行ユニット44でサポートされる
本発明のマルチコンテキストの処理については、実行を
開始した複数のマルチコンテキストの命令列が命令キャ
ッシュメモリ48に格納される。
【0036】データキャッシュメモリ50は、浮動小数
点演算実行ユニット40およびスーパスカラ整数演算実
行ユニット44の演算に使用する主記憶制御ユニット1
6から読み出したデータを格納する。データキャッシュ
メモリ50のキャッシュ制御も、メモリ管理ユニット4
6により行われる。 2.コンテキストの切替え 本発明のマルチコンテキストをサポートするプロセッサ
におけるコンテキスト切替えの基本的なアーキテクチャ
は、図13の従来例のように機械的に切り替えるのでは
なく、パイプラインにストールが発生する可能性のある
命令を実行したときにコンテキストを切り替える。また
1つのコンテキストが継続して実行可能である場合に
は、できるだけそのコンテキストを連続して実行する。
これによって、コンテキストの切替えに伴う不要なオー
バヘッドを低減し、キャッシュのヒット率の減少を回避
する。
【0037】具体的には、現在実行中のコンテキストで
ロード命令または分岐命令を実行したときをコンテキス
トの切替タイミングとする。ロード命令の実行によりキ
ャッシュメモリをアクセスした結果、ミスヒットした場
合には、アクセス対象となるデータが主記憶メモリユニ
ットから届くまでに数十サイクル分のレイテンシが存在
する。
【0038】また分岐命令の実行の結果、分岐条件が成
立して分岐した場合(taken)、分岐先の命令をフ
ェッチするためのパイプラインにストールが発生する可
能性がある。したがって本発明にあっては、実行中のコ
ンテキストでロード命令または分岐命令の実行を契機
に、実行途中にある他のコンテキストへの切替えのタイ
ミングとする。本発明によるコンテキスト切替えの実現
方法としては、ハードウェアのみで行う方法とコンパイ
ラとハードウェアの両方で行う方法の2種類がある。
【0039】まずコンテキストの切替えをハードウェア
のみで行う場合を説明する。ハードウェアのみでロード
命令の実行におけるキャッシュメモリのミスヒットの検
出には、キャッシュタグの一致/不一致の信号をCPU
側に入力して使うことができる。また分岐命令の実行に
伴う分岐成立/分岐不成立(taken/not taken )の判定
には、分岐ターゲットバッファの出力を使うことができ
る。
【0040】このようなロード命令の実行に伴うキャッ
シュミスヒットの検出および分岐命令の実行による分岐
条件成立時の検出は、図2のCPU10に設けたスーパ
スカラのアーキテクチャをもつ整数演算制御ユニット4
2およびスーパスカラ整数演算実行ユニット44の機能
として一般的に実現されており、検出結果を確保するレ
ジスタの割当てなどの僅かな処理の変更で対応できる。
【0041】またハードウェアのみで実現するコンテキ
ストの順番は、現在実行対象となっている複数のコンテ
キストについてラウンドロビン方式により予め定めた順
番で切り替えればよい。次に、コンパイラによるソフト
ウェアとハードウェアの両方で実現される本発明のコン
テキスト切替えを説明する。図3は、ソフトウェアとハ
ードウェアの両方でコンテキスト切替えを行う場合の現
在実行しているあるコンテキストの命令コードである。
このコンテキストにあっては、命令1,命令2,・・・
の順にパイプラインに流して実行される。ロード/分岐
命令は、ここにロード命令または分岐命令が存在するこ
とを示している。
【0042】このプロクラムコードに特徴的なのは、通
常の命令列を格納する命令フィールド64に加え、属性
情報フィールド66をもっている点である。属性情報フ
ィールド66には属性情報が格納される。属性情報フィ
ールド66は、プログラムコードの意味は変えないがプ
ログラムコードの高速実行を助けるための種々の属性情
報を格納するためのフィールドと定義される。この属性
情報フィールド66は、コンパイラにおけるディレクテ
ィブ(directive)に相当する。
【0043】このコンテキストのプログラムコードにあ
っては、命令2の属性情報フィールド66に属性情報
「SW」を置いている。この属性情報「SW」は、「命
令2の実行と同時に別のコンテキストの命令フェッチを
開始せよ」という内容を指示する。その後、ロード/分
岐命令の部分で、ロード命令の実行でキャッシュのミス
ヒットや分岐条件の成立で分岐した場合には、パイプラ
インにストールを発生する。
【0044】そこで、属性情報「SW」の指示によって
既にフェッチしている別のコンテキストの命令列の実行
に直ちに移る。この結果、ロード命令の実行によるキャ
ッシュのミスヒットあるいは分岐命令の実行を契機とし
て、実行中のコンテキストから実行途中にある他のコン
テキストにオーバヘッドなしで切り替えることができ
る。
【0045】プログラムコードの属性情報フィールド6
6に対する属性情報「SW」は、コンパイル後のプログ
ラムコードを解析することにより埋め込むことができ
る。この作業は、コンパイルが済んだプログラムコード
の中のロード命令あるいは分岐命令のオペコードを探
し、ロード命令あるいは分岐命令に対しフェッチに必要
な所定サイクル分のインターバルだけ先行した命令フィ
ールドの属性情報フィールド66に属性情報「SW」を
置けばよい。
【0046】図4は、図3の構造をもつプログラムコー
ドを用いた複数のコンテキストの切替えを実現する本発
明の機能ブロックであり、図2のCPU10に設けた整
数演算制御ユニット42およびスーパスカラ整数演算実
行ユニット44で実現される。まず、メモリ空間16−
1とCPU空間10−2に分けられる。メモリ空間16
−2は、図2の命令キャッシュメモリ48で実現され、
もしキャッシュに命令が存在しなければ外部の主記憶ユ
ニット16に存在する。CPU空間10は、整数演算制
御ユニット42およびスーパスカラ整数演算実行ユニッ
ト44で実現される空間である。
【0047】メモリ空間16−1には、この実施例にあ
っては、4つのコンテキスト52−1〜52−4が設け
られている。コンテキスト52−1〜52−4のそれぞ
れは、図3のようにコンパイルされたプログラムコード
の命令ストリームである。コンテキスト52−1〜52
−4に対しては、コンテキストIDとして例えば#0〜
#3を設定するIDマッピングレジスタ62−1〜62
−4が設けられている。
【0048】コンテキスト52−1〜52−4の命令ス
トリームは、コンテキストリード部65−1〜65−4
のそれぞれで読み出される。コンテキストリード部65
−1〜65−4の各々は、コンテキスト52−1〜52
−4の命令ストリームを読み出す際に、IDマッピング
レジスタ62−1〜62−4で設定されたコンテキスト
ID#0〜#3を付けて読み出す。
【0049】CPU空間10−1には、第1ルータ5
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によって制
御する。
【0050】第2ルータ58は、命令バッファ56−
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が設けられる。
【0051】属性情報判別部104は、命令レジスタ7
8に投入された命令について、図3の属性フィールド6
6の属性情報を判別し、属性情報「SW」を判別する
と、SW情報検出信号E1をコンテキスト切替部60に
出力する。コンテキスト切替部60は、属性情報判別部
104よりSW情報検出信号E1を受けると、切替先と
なる別のコンテキストからの命令ストリームを、空き状
態にある命令バッファ56−1,56−2のいずれかに
格納するための第1ルータ54の切替えを行う。
【0052】命令実行判別部106は、属性情報判別部
104で属性情報「SW」を判別した後のロード命令の
実行によるキャッシュメモリのミスヒットあるいは分岐
命令の実行による分岐条件の成立(taken)を検出
したとき、ロード命令または分岐命令の実行検出信号E
2をコンテキスト切替部60に出力する。この検出信号
E2を受けたコンテキスト切替部60は、第2ルータ5
8に命令ストリーム切替信号E4を出力し、属性情報
「SW」の判別で、第1ルータ54の切替えで切替先と
なる別のコンテキストからの命令をフェッチしている側
の命令バッファ56−1,56−2に切り替え、パイプ
ライン15にストールを発生させないようにする。
【0053】ここで第1ルータ54は、コンテキスト5
2−1〜52−4からの命令ストリームを命令バッファ
56−1,56−2のいずれかに予め格納するプリフェ
ッチルートを切り替えるものである。これに対し第2ル
ータ58は、命令バッファ56−1,56−2のいずれ
かから命令実行部25の命令レジスタ78に対する命令
のフェッチルートを切り替える機能をもつといえる。
【0054】更に、命令実行部25に対してはレジスタ
・リネーミング部35が設けられている。レジスタ・リ
ネーミング部35の詳細は後の説明で明らかにされる。
次に、図4のコンテキスト切替動作を具体的に説明す
る。いま図5のようにコンテキスト52−1が実行中で
あったとする。この場合には、第1ルータ54がコンテ
キストリード部65−1を選択し、コンテキスト52−
1の命令ストリームにIDマッピングレジスタ62−1
によるコンテキストID#0を付けた命令ストリーム
が、命令ルート68によって例えば命令バッファ56−
2に供給される。
【0055】また第2ルータ58は、コンテキスト52
−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に切り替える。
【0056】このため、実行対象となってはいるが現在
停止しているコンテキスト52−2の命令ルート72に
よる命令ストリームが、命令バッファ56−1にプリフ
ェッチされることになる。このとき第2ルータ58は切
り替えられず、現在実行中のコンテキスト52−1の命
令バッファ56−2に格納された命令を命令ルート70
によって順番に取り出して、命令実行部25で実行して
いる。
【0057】この図6の切替状態で、命令実行部25が
命令バッファ56−2に残っているコンテキスト52−
1の命令ストリームを実行する中でロード命令を実行す
ると、ロード命令の実行が命令実行判別部106で判別
され、データキャッシュメモリでミスヒットとなったこ
とを条件にロード命令実行検出信号E2をコンテキスト
切替部60に出力する。
【0058】ロード命令実行検出信号E2を受けたコン
テキスト切替部60は、第2ルータ58に命令ルート切
替信号E4を出力し、直ちに命令バッファ56−1に命
令ルートを切り替える。この結果、ロード命令を実行し
た後の次のサイクルでは、コンテキスト52−2の命令
コードがパイプライン15に投入され、コンテキスト5
2−1のロード命令の実行でキャッシュミスヒットとな
っても、パイプライン15にストールを発生することな
く、別のコンテキスト52−2の実行にオーバヘッドな
しで切り替えることができる。
【0059】ここで図4の実施例にあっては、同時に実
行可能なコンテキストの数を4としているが、この数は
便宜的なものであり、実際にはコンテキストIDに使う
ビット長、同時に実行させるのに効率的なコンテキスト
の数に基づいて決められる。またコンテキストの切替え
は、単純にラウンドロビンで行うことが効果的である。
即ち、コンテキスト#0,#1,#2,#3の順番に循
環的に切り替える。
【0060】図7のフローチャートは、図4の機能ブロ
ックにおけるコンテキスト切替処理である。まずステッ
プS1で、実行対象となるコンテキストの初期設定を行
う。この初期設定は、CPU10の命令処理罫では不可
能なので、OSを呼び出して、実行対象となるコンテキ
ストの割当てを行う初期設定を受ける。次にステップS
2で、実行対象となったコンテキストの命令ストリーム
を命令バッファに供給し、ステップS3で、命令バッフ
ァの命令を取り出してパイプラインに流すことで実行す
る。コンテキストの命令実行中にあっては、ステップS
4で、命令の属性情報からコンテキスト切替要求が発生
したか否かチェックしている。即ち、属性情報「SW」
の判別をチェックしている。
【0061】属性情報「SW」を判別するとコンテキス
ト切替要求が発生したものと判断し、ステップS5で、
現在実行途中のコンテキストが存在するか否かチェック
する。実行途中のコンテキストが存在すれば、ステップ
S6で、命令ストリームの読出しを別の実行途中にある
コンテキストに切り替え、別の命令バッファに供給す
る。
【0062】続いてステップS7で、切替前の命令バッ
ファに残っている現在実行中のコンテキストの命令を実
行し、ステップS8で、分岐命令またはロード命令を実
行したか否かチェックしている。ステップS8で分岐命
令またはロード命令の実行を判別すると、ステップS9
で、実行命令の取出バッファをステップS6で別のコン
テキストに切り替えて、命令ストリームを格納している
命令バッファに切り替え、これによってコンテキスト切
替えが成立する。コンテキスト切替えが済むとステップ
S3に戻り、切替後の命令ストリームを対象とした命令
の実行を繰り返し、以下、同様にして、コンテキスト切
替要求が発生するごとに切替処理を行う。
【0063】一方、ステップS4でコンテキスト切替要
求が発生した際に、ステップS5で実行途中のコンテキ
ストが存在しなかった場合には、ステップS10に進
み、並列に実行可能なコンテキストを取り出し、ステッ
プS11で、取り出したコンテキストに番号を与え、コ
ンテキストIDレジスタとコンテキスト配置テーブルに
登録する。
【0064】このステップS10,S11の処理は、コ
ンテキストの命令実行系では処理ができないので、OS
を呼び出して、新たなコンテキストの割当てとコンテキ
スト番号を付与を受けることになる。このOSによる支
援を受けるステップS10,S11の処理は、オーバヘ
ッドが比較的大きくなる処理であるが、頻繁に起こるこ
とはないため、その影響は小さいといえる。 3.マルチレジスタ・リネーミング 現在使用されている多くのスーパスカラ・プロセッサで
は、命令間の依存を実行時に動的に解消するため、レジ
スタ・リネーミングというアルゴリズムを採用してい
る。図8は、レジスタ・リネーミングの概略である。図
8(A)の変更前のプログラムの依存関係を見ると、1
行目と2行目のレジスタR1は真の依存関係、1行目
と3行目のレジスタR1は出力依存、1行目と4行目
のレジスタRは逆依存の関係にある。
【0065】この図8(A)のレジスタ・ネーミングの
状態では、1行目と2行目のレジスタR1が出力依存
にあり、また1行目と4行目のレジスタR3が逆依存
の関係にあるため、1行目、3行目、4行目を同時に実
行することはできない。そこで図8(B)のように、3
行目のレジスタR1を新たなレジスタR7に変更し、ま
た4行目のレジスタR3を新たなレジスタR8に変更す
るリネーミング(名前の付け替え)を行うことで、出力
依存と逆依存を解消することができる。
【0066】このため、図8(B)のレジスタ・リネー
ミングにより1行目、3行目、4行目の命令を同時に実
行することが可能となる。このように、レジスタ・リネ
ーミングにより、出力依存と逆依存にある命令間の依存
関係を解消して同時に実行することを可能とする。勿
論、真の依存はリネーミングであっても解消できない。
図8(A)(B)のリネーミングは、単一の命令ストリ
ームの中での命令の依存を解消する手法であるが、本発
明にあっては、このレジスタ・リネーミングの手法を複
数のコンテキストの同時実行を対象とした複数の命令ス
トリームについての命令依存の対象に拡張する。即ち、
複数のコンテキストの実行による複数の命令ストリーム
でのレジスタ・リネーミングを実現するため、次の要件
を定める。
【0067】レジスタのぶつかりを避けるために、レ
ジスタの名前替えの際に、命令中のレジスタ番号に加え
コンテキストのIDを利用する。 1つのコンテキストが使うレジスタ数を増やすため
に、レジスタ名前替え用のレジスタファイルを (命令中のレジスタ番号)+(コンテキストID) のキーで検索できるようにアソシエイティブなメモリで
構成する。このようなメモリを以下、リネーミングバッ
ファと呼ぶ。また、リネーミングバッファで実現する複
数の物理レジスタをコンテキストの数で等分して使用す
るようなことはせず、物理レジスタに対し仮想的なレジ
スタ割当てを行う。
【0068】コンテキスト切替えの際に、リネーミン
グバッファから古くなったコンテキストのレジスタを退
避するようなことはしない。コンテキストの切替えに関
係なく、リネーミングバッファの中の利用できる物理レ
ジスタがなくなった時点で古いコンテキストに割り当て
ているレジスタを退避する。即ち、リネーミングバッフ
ァからのレジスタの退避をルーズに行う。
【0069】このような〜の内容をもったレジスタ
の名前替えをマルチレジスタ・リネーミングと呼ぶ。こ
のようなマルチレジスタ・リネーミングの構築によっ
て、複数のコンテキストを同時にパイプラインに流すこ
とが可能となる。即ち、あるコンテキスト#0でレジス
タR1を使っていたとする。この実行中のコンテキスト
#0と同時に実行させたいと考える別のコンテキスト#
1も同じレジスタR1を使っていたとする。
【0070】この場合、本発明のマルチレジスタ・リネ
ーミングによれば、2つのコンテキスト#0,#1で使
用しているレジスタR1には、コンテキストIDの付加
により「00−R1」「10−R1」にリネーミングさ
れる。このため、コードを変更したりハードウェアで同
期をとったりする必要がなく、同じレジスタ名をもった
複数のコンテキストを同時に実行することができる。ま
た、実行中でないコンテキストのリネーミングレジスタ
の情報をメモリ空間の別の領域に退避させていること
で、複数のコンテキストのレジスタ情報を同時にハード
ウェア上の物理レジスタに依存させることができる。
【0071】図9は、本発明のマルチレジスタ・リネー
ミングを実現するための機能ブロックであり、図4のレ
ジスタ・リネーミング部35の詳細となる。レジスタ・
リネーミング部35は、CPU空間10−1とメモリ空
間16−1を使用して構築される。CPU空間10−1
にはコンテキスト・マッピング・テーブル62が設けら
れる。コンテキスト・マッピング・テーブル62には、
全く新しいコンテキストの実行を開始する場合に、コン
テキスト番号CNの登録がOSの支援により行われる。
【0072】この実施例は、同時に走行するコンテキス
トを4つとした場合を例にとっていることから、コンテ
キスト・マッピング・テーブル62にはコンテキストI
D00,01,10,11が割り当てられ、このコンテ
キストIDに対し、実行対象となったコンテキスト番号
CN0として#0をコンテキストID00に登録し、コ
ンテキスト番号#1をコンテキストID10に登録して
いる。
【0073】更にCPU空間10−1には、実行中コン
テキストIDレジスタ76、命令レジスタ78、リネー
ミング・バッファ82、退避/ロード処理部92が設け
られる。実行中コンテキストIDレジスタ76には、現
在実行中のコンテキスト、例えばコンテキスト番号#1
のコンテキストID=10が格納される。命令レジスタ
78にはリネーミング対象となるレジスタ名をレジスタ
指定フィールド80に格納した命令コードが格納され
る。
【0074】リネーミング・バッファ82は、命令のレ
ジスタ指定フィールド80で指定可能な物理レジスタ部
84−1〜84−16のレジスタ領域に分けられてい
る。この実施例は、物理レジスタの指定数を16として
いるが、32,64など、適宜の数に定めることができ
る。リネーミング・バッファ82の物理レジスタ部84
−1〜84−16のそれぞれは、有効フラグフィールド
86、キーフィールド88およびデータフィールド90
を有する。有効フラグフィールド86は、その物理レジ
スタがリネーミング・レジスタとして使用されている場
合に有効フラグをオンしており、未使用である場合には
有効フラグがオフとなっている。したがって、物理レジ
スタ部84−1〜84−16の有効フラグ86を調べる
ことで、リネーミングに使用可能な物理レジスタが存在
するか否か判断できる。
【0075】キーフィールド88には、実行中コンテキ
ストIDレジスタ76に格納したCIDiと命令レジス
タ78のレジスタ指定フィールド80のレジスタ名Rj
を合わせたキー(CIDi−Rj)がリネーミング・レ
ジスタ名を示すキーコードとして格納される。このため
同じレジスタ名Rjであっても、コンテキストIDであ
るCIDiによって区別することができる。
【0076】一方、メモリ空間16−1にはコンテキス
ト・マッピング・テーブル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にロードするとオフ
となる。
【0077】コンテキスト番号#0のレジスタ退避領域
98−1の場合、先頭の有効フラグフィールド100の
みが0で他の有効フラグは1となっており、先頭のレジ
スタデータのみがリネーミング・バッファ82にあるこ
とを表わしている。これに対し、現在実行中のコンテキ
スト番号#1のレジスタ退避領域98−2については、
全ての有効フラグが0とオフしており、リネーミング・
レジスタは全てリネーミング・バッファ82に存在する
ことを表わしている。
【0078】なお、レジスタ退避領域98−1,98−
2以外のコンテキスト・コントロール・ブロック94−
1,94−2の領域は、通常のコントロールエリア11
0−1,110−2として使用されている。退避/ロー
ド処理部92は、リネーミング・バッファ82がオーバ
フローした際のメモリ空間16−1に対するレジスタ退
避処理と、実行中のコンテキストで使用するリネーミン
グ・レジスタがリネーミング・バッファ82に存在しな
いときのメモリ空間16−1からのレジスタデータのロ
ードを行う。
【0079】図10のフローチャートは、図9における
マルチ・リネーミング処理である。まずステップS1
で、命令レジスタ78にリネーミング対象となる命令が
投入されたか否かチェックしている。リネーミング対象
となる命令が投入されると、ステップS2で、実行中コ
ンテキストIDレジスタ76に格納している実行中のコ
ンテキストIDi=10と、命令レジスタ78のレジス
タ指定フィールド80のレジスタ番号例えばR1でキー
「10−R1」を作成し、リネーミング・バッファ86
のキーフィールド88を検索する。
【0080】キーフィールド88の検索で該当するレジ
スタがあれば、ステップS5に進み、リネーミング・レ
ジスタCIDi−Rj=10−R1を使用した命令の実
行を行う。一方、ステップS3で、リネーミング・バッ
ファ82に該当レジスタがなかった場合には、ステップ
S4に進み、メモリ空間16−1のコンテキスト番号#
1のレジスタ退避領域98−2から対応するレジスタデ
ータのロード処理を行う。このレジスタロード処理の詳
細は後の説明で明らかにされる。
【0081】図11のフローチャートは、図9のリネー
ミング・バッファ82がオーバフローした際のレジスタ
退避処理である。あるコンテキストを実行中にリネーミ
ング・バッファ82がオーバフローすると、そのコンテ
キストの実行を続けるためには別のコンテキストのリネ
ーミング・バッファ82上に存在するレジスタデータを
メモリ空間16−1の退避領域に退避させなければなら
ない。
【0082】この場合のリネーミング・バッファ82の
オーバフローは、物理レジスタ部84−1〜84−16
の有効フラグが全てオン(ビット1)で且つ実行中コン
テキストレジスタ76のCIDiと命令レジスタ78の
レジスタ指定フィールド80のレジスタ名Rjで作った
キー「CIDi−Rj」によるキーフィールド88の検
索で該当するレジスタが存在しなかった場合である。
【0083】リネーミング・バッファ82のオーバフロ
ー発生に伴うレジスタ退避処理にあっては、まずステッ
プS1で、リネーミング・バッファ82より退避するコ
ンテキストを決定する。退避するコンテキストの決定
は、コンテキスト・マッピング・テーブル62にLRU
アルゴリズムの機能を付け加えて決めればよい。即ち、
複数のコンテキストの中の最も実行した時点の古いコン
テキストを、退避するコンテキストに決定する。
【0084】続いてステップS2で、退避するコンテキ
ストのIDを使用してリネーミング・バッファ82にお
ける各物理レジスタ84−1〜84−16のキーフィー
ルドを検索し、該当するレジスタをアクセスする。続い
て、アクセスした物理レジスタの有効フラグがオンか否
かチェックする。有効フラグがオンであれば、ステップ
S4に進み、退避コンテキストの番号をラベルしたメモ
リ空間16−1のコンテキスト・コントロール・ブロッ
ク内の対応するレジスタ番号の領域に退避する。退避が
済むと、ステップS5で、レジスタ退避領域の有効フラ
グをオンする。次にステップS6で、リネーミング・バ
ッファ82の退避済みのレジスタの有効フラグをオフす
る。
【0085】続いてステップS7で、命令レジスタ78
のレジスタ指定フィールド80で指定可能な例えば16
個のレジスタ分の処理を行ったか否かチェックする。全
てのレジスタの処理を終了するまで、ステップS2〜S
6の処理を繰り返す。勿論、ステップS3で、退避コン
テキストIDをもつレジスタを検索しても、有効フラグ
がオフであった場合には、ステップS4〜S6の処理は
不要である。
【0086】このオーバフロー時のレジスタ退避処理に
よって、リネーミング・バッファ82に残っている最も
実行時点の古いコンテキストで使用したレジスタ内容
が、対応するメモリ空間16−1のレジスタ退避領域に
退避され、実行中のコンテキストのリネーミングのため
にリネーミング・バッファ82に空きレジスタを確保す
ることができる。
【0087】図12のフローチャートは、図9の退避/
ロード処理部92によるレジスタデータ・ロード処理で
ある。図11のレジスタ退避処理によって、実行途中に
あるコンテキストのレジスタをメモリ空間16−1のコ
ンテキスト・コントロール・ブロックに退避してしまう
と、その後にそのコンテキストの実行がスケジュールさ
れたとき、レジスタのデータがリネーミング・バッファ
82上にないことがある。このような場合に、図12の
レジスタデータ・ロード処理が行われる。
【0088】まずステップS1で、レジスタデータのロ
ード処理に先立ち、現在リネーミング・バッファ82に
格納されている別のコンテキストのレジスタ群のレジス
タデータを退避する。これは、新たなレジスタデータを
ロードするときにオーバフローが起きないことを保証す
るためである。このレジスタデータの退避処理は、図1
1のレジスタ退避処理を行うことになる。勿論、レジス
タロード処理に先立ってリネーミング・バッファ82の
有効フラグから十分な空きレジスタが存在する場合に
は、ステップS1の他のコンテキストのレジスタデータ
の退避処理は行う必要がない。
【0089】次にステップS2で、実行中のコンテキス
トに関するメモリ空間16−1のコンテキスト・コント
ロール・ブロックの対応するレジスタ退避領域の内容を
読み出す。次にステップS3で、読み出したレジスタ退
避領域の有効フラグがオンか否かチェックする。オンで
あればレジスタデータは退避領域に存在することから、
ステップS4で、ロードするコンテキストのIDを使用
してリネーミング・バッファ82にレジスタ退避領域の
読出内容をロードする。
【0090】レジスタロードが済むと、ステップS5
で、コンテキスト・コントロール・ブロックのロードが
済んだレジスタ領域の有効フラグをオフする。続いてス
テップS6で、リネーミング・バッファ82のロード済
みのレジスタの有効フラグをオンする。一方、ステップ
S3で、レジスタ退避領域の有効フラグがオフであれ
ば、そのレジスタはリネーミング・バッファ82上に確
保されていることから、ステップS4〜S6のロード処
理は行わない。
【0091】1つの退避データのロードが済むと、ステ
ップS7で、命令レジスタ78のレジスタ指定フィール
ド80で指定できる退避領域のレジスタ分の処理の終了
の有無をチェックし、処理を終了するまで、ステップS
2〜S7の処理を繰り返す。以上のマルチ・リネーミン
グ・レジスタの処理にあっては、一度、レジスタの退避
またはロードが起きると対象となったコンテキストに属
する全てのレジスタデータの退避またはロードを行う場
合を例にとっているが、1つずつ処理してもよい。オー
バヘッドの観点からは、レジスタ退避については退避対
象となったコンテキストに含まれる全てのレジスタデー
タを退避させ、ロードは必要に応じて1つずつ行うこと
が最も効率的と考えられる。
【0092】またリネーミング・バッファ82内のレジ
スタデータの置替えは、キャッシュメモリにおけるLR
Uアルゴリズムに類似している。このため基本的なレジ
スタデータの置替えアルゴリズムは、キャッシュメモリ
におけるLRUアルゴリズムを適用することができる。
但し、キャッシュメモリのLRUアルゴリズムを適用す
る場合には、このための処理専用のレジスタを数個、リ
ネーミング・バッファ82以外に用意する必要がある。 4.本発明の適用例 (1)小さなコンテキストの場合 小さなコンテキストとは、所謂同じアドレス空間内で複
数のコンテキストを実行する場合である。この場合に
は、従来のマルチ・スレッドの実行と同様のコンテキス
トの切替えが可能である。同じアドレス空間内で複数の
コンテキストに分けるのは、基本的にはコンパイラの仕
事になる。これに加え本発明にあっては、コンテキスト
の切替タイミングについて図3〜図7に示したロード命
令または分岐命令の実行を契機として行うことで、より
柔軟なコンテキスト切替えが実現できる。
【0093】また、同じアドレス空間内で複数のコンテ
キストを実行する際のマルチ・レジスタ・リネーミング
については、図9〜図12に示したとおりであるが、ハ
ードウェアに関しては、図9のCPU空間10−1に設
けたコンテキスト・マッピング・テーブル62とメモリ
空間16−1のコンテキストごとのコンテキスト・コン
トロール・ブロックは省略できる。メモリ空間16−1
については、コンテキスト・コントロール・ブロックを
設ける代わりにリネーミング・バッファ82がオーバフ
ローしたときのレジスタ退避領域を各コンテキストごと
に設ければよい。 (2)大きなコンテキストの場合 大きなコンテキストとは、アドレス空間を共用しない複
数のコンテキストを実行する場合である。この例の1つ
には、ユニックスのプロセスのような実行がある。ま
た、並列計算機のプロセッサ・エレメントとして本発明
のプロセッサを適用する場合には、他のプロセッサ・エ
レメントからきたメッセージの処理や、こちらから他の
プロセッサ・エレメントに出すメッセージの構築など
を、プロセッサ内の命令の実行と平行して行うにことに
より、メッセージ送出と受取りのためのオーバヘッドを
軽減することができる。
【0094】この機能は、本発明のプロセッサをメッセ
ージベースの通信を主とする並列計算機や分散計算機の
プロセッサ・エレメントとして適用する場合、極めて有
効な特徴である。また、この場合のマルチ・レジスタ・
リネーミングのレジスタ退避に使用するコンテキスト・
コントロール・ブロックは、通常のプロセッサ・コント
ロール・ブロックをそのまま利用できる。 (3)マルチ・メディア処理 近年、画像や音声などのデータ・ストリームを扱う所謂
マルチ・メディア処理が注目で浴びている。マルチ・メ
ディア処理は、大量のデータ・ストリームをしかもリア
ルタイムに近い時間で処理しなければならない。これに
大量のデータ・ストリームをリアルタイムで処理するた
めには、デジタル・シグナル・プロセッサやある種の処
理を行う専用プロセッサをコ・プロセッサとしてメイン
のプロセッサに設けるというアーキテクチャが考えられ
る。
【0095】このようにメインプロセッサに専用のコ・
プロセッサを設けた場合、メインプロセッサとコ・プロ
セッサ(Co Processer)の間の制御のやり取りが実行ス
ピードを決め、またユーザに対するレスポンスにも影響
する。特に、ユーザに対するレスポンスの高速化を図る
ため、本発明のプロセッサのアーキテクチャをメインプ
ロセッサとコ・プロセッサによる並列処理に適用するこ
とは、非常に有効である。
【0096】即ち、コ・プロセッサを制御するプログラ
ムを実行するときに、その都度、メインプロセッサで実
行中のコンテキストの実行環境を全て退避したり、再開
に当たっての復旧したりする手間を必要としなくなるか
らである。なお本発明は上記の実施例で用いた数値によ
る限定は受けない。またスーパスカラ・プロセッサであ
れば、適宜のアーキテクチャをもつプロセッサに適用で
きる。
【0097】
【発明の効果】以上説明してきたように本発明によれ
ば、複数のコンテキストをパイプラインに流して実行す
る場合のパイプラインのストール(バブル)を低減し、
全体としてのスループットを高めることができる。ま
た、パイプラインのストールを回避するためのコンテキ
ストの切替えに要する時間を大幅に短縮することができ
る。
【0098】また、複数のコンテキストを実行していて
も、必要とする物理レジスタは1つのコンテキストに必
要なレジスタ数で済み、ハードウェア資源を増やすこと
なく、効率良く複数のコンテキストを実行することがで
きる。また、コンテキストを切り替えるタイミングをプ
ログラムから指定できるため、より柔軟なコンテキスト
のスケジューリングができる。
【0099】更に、コンテキストとして所謂スレッドか
らプロセスのようなものまで、種々の大きさのコンテキ
ストに対し適用可能である。更にまた、本発明のプロセ
ッサの実現に当たって拡張が必要な部分は、現在使用さ
れているスーパスカラ・アーキテクチャの自然な拡張と
なっており、物理的にも論理的にもそれほど複雑な拡張
を必要とすることなく、本発明によるアーキテクチャを
実現することができる。
【図面の簡単な説明】
【図1】本発明の原理説明図
【図2】本発明の動作環境となるハードウェアのブロッ
ク図
【図3】コンテキスト切替機能のブロック図
【図4】コンテキストを構成する命令ストリームの構造
説明図
【図5】CID0のコンテキスト実行時の命令ルートの
説明図
【図6】属性情報からコンテキスト切替要求が発生した
場合のルート切替えの説明図
【図7】本発明のコンテキスト切替処理のフローチャー
【図8】本発明のマルチ・リネーミング機能のブロック
【図9】命令依存とレジスタ・リネーミングによる依存
解消の説明図
【図10】図8のリネーミング処理のフローチャート
【図11】図8のレジスタ退避処理のフローチャート
【図12】図8のレジスタデータロード処理のフローチ
ャート
【図13】従来のコンテキスト切替えの説明図
【符号の説明】
10:CPU(命令実行部) 12:CPUバス 14:主記憶制御ユニット 16:主記憶ユニット 18:2次キャッシャコントローラ 20:2次キャッシュメモリ 22−1,22−2:入出力バスアダプタ 24−1,24−2:入出力バス 26−1,26−2:入出力制御装置 30−1,30−2:入出力装置 32−1,32−2:システムバスアダプタ 34−1,34−2:システムバス 36−1,36−2:システム記憶ユニット 38:浮動小数点演算制御ユニット 40:浮動小数点演算実行ユニット 42:整数演算制御ユニット 44:スーパスカラ整数演算ユニット 46:メモリ管理ユニット 48:命令キャッシュメモリ 50:データキャッシュメモリ 52−1〜52−4:コンテキスト 54:第1ルータ 56−1,56−2:命令バッファ 58:第2ルータ 60:コンテキスト切替ユニット 62−1〜62−4:コンテキストIDレジスタ 64:命令フィールド 66:属性情報フィールド 68,72:プリフェッチルート 70:フェッチルート 74:コンテキスト・マッピング・テーブル 76:実行中コンテキストIDレジスタ 78:命令レジスタ 80:レジスタ指定フィールド 82:リネーミング・レジスタ・ファイル 84−1〜84−12:物理レジスタ 86:有効フラグフィールド 88:キーフィールド 90:データフィールド 92:退避ロード処理部 94−1,94−2:コンテキスト・コントロール・ブ
ロック 96−1,96−2:ラベル 98−1,98−2:レジスタ退避領域 100:有効フラグフィールド 102:データフィールド

Claims (36)

    【特許請求の範囲】
  1. 【請求項1】ある意味のあるまとまった仕事をするため
    の実行単位であるコンテキストを格納した複数のコンテ
    キスト格納部と、 あるコンテキストの命令をパイプラインに流して実行す
    ると共に、該パイプラインの空きを判断した場合は、実
    行途中にある別のコンテキストに切り替えて同時に複数
    のコンテキストを実行させる命令実行部と、 前記命令実行部で同時に実行している前記複数のコンテ
    キストの各々に固有のコンテキストIDを設定するID
    設定部と、 前記命令実行部で同時に複数のコンテキストを実行する
    際に使用するレジスタ名を、前記ID設定部で設定され
    た実行中のコンテキストIDに実行命令の指定レジスタ
    名を加えたレジスタ名に名前替えして物理レジスタを割
    り当てるレジスタ・リネーミング部と、を備えたことを
    特徴とするマルチコンテキストをサポートするプロセッ
    サ。
  2. 【請求項2】請求項1記載のマルチコンテキストをサポ
    ートするプロセッサに於いて、前記コンテキストを構成
    する命令列は、プログラムコードに加え、プログラムコ
    ードの意味は変えないがプログラムコードの実行を助け
    るための種々の情報を格納する属性情報フィールドを持
    ち、該属性情報フィールドに、実行途中にある別のコン
    テキスト切替えの契機となる後続命令の実行に必要な命
    令実行情報を格納したことを特徴とするマルチコンテキ
    ストをサポートするプロセッサ。
  3. 【請求項3】請求項2記載のマルチコンテキストをサポ
    ートするプロセッサに於いて、前記コンテキスト切替え
    を発生する後続命令はロード命令であり、該ロード命令
    の実行でメモリからデータが届くまでのレイテンシ分の
    インターバルをもつ先行する命令コードの属性情報フィ
    ールドに、この命令の実行と同時に実行途中にある別の
    コンテキストの命令フェッチを指示する属性情報を設け
    たことを特徴とするマルチコンテキストをサポートする
    プロセッサ。
  4. 【請求項4】請求項2記載のマルチコンテキストをサポ
    ートするプロセッサに於いて、前記コンテキスト切替え
    を発生する後続命令は分岐命令であり、該分岐命令の実
    行でメモリからデータが届くまでのレイテンシ分のイン
    ターバルをもつ先行する命令コードの属性情報フィール
    ドに、この命令の実行と同時に実行途中にある別のコン
    テキストの命令フェッチを指示する属性情報を設けたこ
    とを特徴とするマルチコンテキストをサポートするプロ
    セッサ。
  5. 【請求項5】請求項2記載のマルチコンテキストをサポ
    ートするプロセッサに於いて、前記命令実行部は、 少なくとも2つの命令格納バッファと、 複数のコンテキストいずれか1つから前記命令格納バッ
    ファのいずれか1つに命令をプリフェッチするプリフェ
    ッチルートを切り替える第1ルータと、 複数の命令格納バッファのいずれか1つから前記パイプ
    ラインにフェッチするフェッチルートを切り替える第2
    ルータと、 現在パイプラインに流しているコンテキストの命令の属
    性情報から実行途中にある別のコンテキストへの切替え
    の契機となる後続命令の実行に必要な命令実行指示情報
    を解読した際に、前記第1ルータのプリフェッチルート
    を、切替先のコンテキストから現在命令フェッチに使用
    されていない別の命令バッファへのプリフェッチルート
    に切替えて命令プリフェッチを行わせ、続いて別のコン
    テキスト切替えの契機となる前記後続命令の実行を判別
    した際に、前記第2ルータのフェッチルートを、前記第
    1ルータでプリフェッチルートを切り替えた側の命令バ
    ッファに切り替えてプリフェッチされている別のコンテ
    キストの命令をパイプラインにフェッチさせるコンテキ
    スト切替部と、を備えたことを特徴とするマルチコンテ
    キストをサポートするプロセッサ。
  6. 【請求項6】請求項1記載のマルチコンテキストをサポ
    ートするプロセッサに於いて、前記命令実行部は、実行
    途中にある別のコンテキスト切替えの契機となる後続命
    令を、該後続命令の実行に伴うハードウェアの信号から
    認識してコンテキストを切り替えることを特徴とするマ
    ルチコンテキストをサポートするプロセッサ。
  7. 【請求項7】請求項6記載のマルチコンテキストをサポ
    ートするプロセッサに於いて、前記命令実行部は、前記
    後続命令がロード命令の場合、前記コンテキスト切替え
    を、前記ロード命令の実行におけるキャッシュのミスヒ
    ットを示す信号から認識することを特徴とするマルチコ
    ンテキストをサポートするプロセッサ。
  8. 【請求項8】請求項6記載のマルチコンテキストをサポ
    ートするプロセッサに於いて、前記命令実行部は、前記
    後続命令が分岐命令の場合、前記コンテキスト切替え
    を、前記ロード命令の実行における分岐条件成立時(ta
    ken)を示す分岐ターゲットバッファの出力から認識する
    ことを特徴とするマルチコンテキストをサポートするプ
    ロセッサ。
  9. 【請求項9】請求項1記載のマルチコンテキストをサポ
    ートするプロセッサに於いて、前記レジスタ・リネーミ
    ング部は、 実行中のコンテキストIDを格納するIDレジスタと、 実行中のコンテキストの命令をフェッチする命令レジス
    タと、 有効フラグフィールド、レジスタキーフィールド及びデ
    ータフィールドを備えた複数の物理レジスタをメモリ上
    にマッピングした名前替えレジスタファイルと、 前記IDレジスタのコンテキストIDに前記命令レジス
    タのレジスタ指定フィールドのレジスタ名を加えたレジ
    スタキーを作成して前記レジスタファイルの該当する物
    理レジスタを名前替えレジスタとして割り当てるレジス
    タ割付部と、 前記レジスタファイルからオーバフローした名前替えレ
    ジスタのデータを退避する実行中のコンテキスト毎に設
    けられたレジスタ退避部と、 前記レジスタファイルから前記レジスタ退避部に名前替
    えレジスタのデータを退避させる退避処理部と、 前記レジスタ割付け部による前記レジスタファイルの参
    照で前記レジスタキーに対応するレジスタが存在しなか
    った場合、前記レジスタ退避部から対応するレジスタキ
    ーのデータを前記レジスタファイルにロードさせるロー
    ド処理部と、を備えたことを特徴とするマルチコンテキ
    ストをサポートするプロセッサ。
  10. 【請求項10】請求項9記載のマルチコンテキストをサ
    ポートするプロセッサに於いて、前記名前替えレジスタ
    ファイルは、前記命令レジスタのレジスタ指定フィール
    ドで指定可能な数の物理レジスタを有することを特徴と
    するマルチコンテキストをサポートするプロセッサ。
  11. 【請求項11】請求項9記載のマルチコンテキストをサ
    ポートするプロセッサに於いて、前記名前替えレジスタ
    ファイルは、前記レジスタ割付部による名前替えレジス
    タの割付けで前記有効フラグをオンして使用状態を表
    し、前記退避処理部によるレジスタデータの退避で有効
    フラグをオフして空き状態を表すことを特徴とするマル
    チコンテキストをサポートするプロセッサ。
  12. 【請求項12】請求項9記載のマルチコンテキストをサ
    ポートするプロセッサに於いて、前記レジスタ退避部
    は、退避データを格納するデータフィールドに加え、有
    効フラグフィールドを有し、前記退避処理部によるレジ
    スタデータの退避により有効フラグをオンしてデータ退
    避状態を表し、前記ロード処理部による退避データのロ
    ードで前記有効フラグをオフして前記名前替えレジスタ
    ファイルに存在することを表すことを特徴とするマルチ
    コンテキストをサポートするプロセッサ。
  13. 【請求項13】請求項9記載のマルチコンテキストをサ
    ポートするプロセッサに於いて、前記退避処理部は、前
    記名前替えレジスタファイルでオーバフローが発生した
    際に、実行待ち状態にある他のコンテキストのいずれか
    1つのコンテキストIDをもつ全ての前記物理レジスタ
    のデータを、対応するコンテキストのレジスタ退避部に
    退避させることを特徴とするマルチコンテキストをサポ
    ートするプロセッサ。
  14. 【請求項14】請求項9記載のマルチコンテキストをサ
    ポートするプロセッサに於いて、前記ロード処理部は、
    前記レジスタ退避部から実行中のコンテキストのレジス
    タデータを前記名前替えレジスタファイルにロードする
    に先立ち、前記退避処理部によって実行待ち状態にある
    他のコンテキストのいずれか1つのコンテキストIDを
    もつ前記物理レジスタのデータを、対応するコンテキス
    トのレジスタ退避部に退避させることを特徴とするマル
    チコンテキストをサポートするプロセッサ。
  15. 【請求項15】請求項9記載のマルチコンテキストをサ
    ポートするプロセッサに於いて、前記退避処理部および
    ロード処理部は、1つの名前替えレジスタ単位にレジス
    タデータの退避とロードを行うことを特徴とするマルチ
    コンテキストをサポートするプロセッサ。
  16. 【請求項16】請求項1記載のマルチコンテキストをサ
    ポートするプロセッサに於いて、前記複数のコンテキス
    トは、異なったアドレス空間で実行される複数のプロセ
    スであることを特徴とするマルチコンテキストをサポー
    トするプロセッサ。
  17. 【請求項17】請求項1記載のマルチコンテキストをサ
    ポートするプロセッサに於いて、前記複数のコンテキス
    トは、同一アドレス空間で実行される複数のスレッドで
    あることを特徴とするマルチコンテキストをサポートす
    るプロセッサ。
  18. 【請求項18】請求項17記載のマルチコンテキストを
    サポートするプロセッサに於いて、前記スレッドは、数
    値計算プログラムのループであることを特徴とするマル
    チコンテキストをサポートするプロセッサ。
  19. 【請求項19】ある意味のあるまとまった仕事をするた
    めの実行単位であるコンテキストを複数作成する作成過
    程と、 あるコンテキストの命令をパイプラインに流して実行す
    ると共に、該パイプラインの空きを判断した場合は、実
    行途中にある別のコンテキストに切り替えて同時に複数
    のコンテキストを実行させる命令実行過程と、 同時に実行している前記複数のコンテキストの各々に固
    有のコンテキストIDを設定するID設定過程と、 前記コンテキストの実行で使用するレジスタ名を、前記
    コンテキストIDに実行命令の指定レジスタ名を加えた
    レジスタ名に名前替えして物理レジスタを割り当てるレ
    ジスタ・リネーミング過程と、を備えたことを特徴とす
    るマルチコンテキスト処理方法。
  20. 【請求項20】請求項19記載のマルチコンテキスト処
    理方法に於いて、前記コンテキストを構成する命令列
    は、プログラムコードに加え、プログラムコードの意味
    は変えないがプログラムコードの実行を助けるための種
    々の情報を格納する属性情報フィールドを持ち、該属性
    情報フィールドに、実行途中にある別のコンテキスト切
    替えの契機となる後続命令の実行に必要な命令実行情報
    を設けたことを特徴とするマルチコンテキスト処理方
    法。
  21. 【請求項21】請求項20記載のマルチコンテキスト処
    理方法に於いて、前記コンテキスト切替えを発生する後
    続命令はロード命令であり、該ロード命令の実行でメモ
    リからデータが届くまでのレイテンシ分のインターバル
    をもつ先行する命令コードの属性情報フィールドに、こ
    の命令の実行と同時に実行途中にある別のコンテキスト
    の命令フェッチを指示する属性情報を設けたことを特徴
    とするマルチコンテキスト処理方法。
  22. 【請求項22】請求項20記載のマルチコンテキスト処
    理方法に於いて、前記コンテキスト切替えを発生する後
    続命令は分岐命令であり、該分岐命令の実行でメモリか
    らデータが届くまでのレイテンシ分のインターバルをも
    つ先行する命令コードの属性情報フィールドに、この命
    令の実行と同時に実行途中にある別のコンテキストの命
    令フェッチを指示する属性情報を設けたことを特徴とす
    るマルチコンテキスト処理方法。
  23. 【請求項23】請求項20記載のマルチコンテキスト処
    理方法に於いて、前記命令実行過程は、 実行中のコンテキストの命令を命令バッファにプリフェ
    ッチした後にパイプラインにフェッチして実行し、 前記実行中のコンテキストの命令の属性情報から実行途
    中にある別のコンテキストへの切替えの契機となる後続
    命令の実行に必要な命令実行指示情報を解読した際に、
    切替先のコンテキストから現在命令フェッチに使用され
    ていない別の命令バッファへのプリフェッチに切り替
    え、 続いて別のコンテキスト切替えの契機となる前記後続命
    令の実行を判別した際に、プリフェッチを切替え先の命
    令バッファにプリフェッチされている別のコンテキスト
    の命令をパイプラインにフェッチさせることを特徴とす
    るマルチコンテキスト処理方法。
  24. 【請求項24】請求項19記載のマルチコンテキスト処
    理方法に於いて、前記命令実行過程は、実行途中にある
    別のコンテキストへの切替えの契機となる後続命令を、
    該後続命令の実行に伴うハードウェアの信号から認識し
    てコンテキストを切り替えることを特徴とするマルチコ
    ンテキスト処理方法。
  25. 【請求項25】請求項24記載のマルチコンテキスト処
    理方法に於いて、前記命令実行過程は、前記後続命令が
    ロード命令の場合、前記コンテキスト切替えを、前記ロ
    ード命令の実行におけるキャッシュのミスヒットを示す
    信号から認識することを特徴とするマルチコンテキスト
    処理方法。
  26. 【請求項26】請求項24記載のマルチコンテキスト処
    理方法に於いて、前記命令実行過程は、前記後続命令が
    分岐命令の場合、前記コンテキスト切替えを、前記ロー
    ド命令の実行における分岐条件成立時(taken)を示す分
    岐ターゲットバッファの出力から認識することを特徴と
    するマルチコンテキスト処理方法。
  27. 【請求項27】請求項19記載のマルチコンテキスト処
    理方法に於いて、前記名前替え過程は、 実行中のコンテキストIDをIDレジスタに格納し、 実行中のコンテキストの命令を命令レジスタにフェッチ
    し、 実行中のコンテキストIDに、前記命令レジスタにフェ
    ッチしている命令中のレジスタ指定フィールドのレジス
    タ名を加えたレジスタキーを作成し、 有効フラグフィールド、レジスタキーフィールド及びデ
    ータフィールドを備えた複数の物理レジスタを有する名
    前替えレジスタファイルの該当する物理レジスタを、前
    記レジスタキーで検索して名前替えレジスタとして割り
    付け、 前記レジスタファイルのオーバフロー発生時に、前記名
    前替えレジスタのデータを、実行中のコンテキスト毎に
    設けられたレジスタ退避部に退避し、 前記レジスタファイルの参照で前記レジスタキーに対応
    するレジスタが存在しなかった場合、前記レジスタ退避
    部から対応するレジスタキーのデータを前記レジスタフ
    ァイルにロードさせることを特徴とするマルチコンテキ
    スト処理方法。
  28. 【請求項28】請求項27記載のマルチコンテキスト処
    理方法に於いて、前記名前替えレジスタファイルは、前
    記命令レジスタのレジスタ指定フィールドで指定可能な
    数の物理レジスタを有することを特徴とするマルチコン
    テキスト処理方法。
  29. 【請求項29】請求項27記載のマルチコンテキスト処
    理方法に於いて、前記物理レジスタに名前替えレジスタ
    を割り付けた際に、前記有効フラグをオンして使用状態
    を表し、前記レジスタデータの退避で前記有効フラグを
    オフして空き状態を表すことを特徴とするマルチコンテ
    キスト処理方法。
  30. 【請求項30】請求項27記載のマルチコンテキスト処
    理方法に於いて、前記レジスタ退避部は、退避データを
    格納するデータフィールドに加え、有効フラグフィール
    ドを有し、前記名前替えレジスタファイルからのレジス
    タデータの退避により有効フラグをオンしてデータ退避
    状態を表し、前記名前替えレジスタファイルへの退避デ
    ータのロードで前記有効フラグをオフして前記名前替え
    レジスタファイルに存在することを表すことを特徴とす
    るマルチコンテキスト処理方法。
  31. 【請求項31】請求項27記載のマルチコンテキスト処
    理方法に於いて、前記名前替えレジスタファイルでオー
    バフローが発生した際に、実行待ち状態にある他のコン
    テキストのいずれか1つのコンテキストIDをもつ全て
    の前記物理レジスタのデータを、対応するコンテキスト
    のレジスタ退避部に退避させることを特徴とするマルチ
    コンテキスト処理方法。
  32. 【請求項32】請求項27記載のマルチコンテキスト処
    理方法に於いて、前記レジスタ退避部から実行中のコン
    テキストのレジスタデータを前記名前替えレジスタファ
    イルにロードするに先立ち、実行待ち状態にある他のコ
    ンテキストのいずれか1つのコンテキストIDをもつ前
    記物理レジスタのデータを、対応するコンテキストのレ
    ジスタ退避部に退避させることを特徴とするマルチコン
    テキスト処理方法。
  33. 【請求項33】請求項27記載のマルチコンテキスト処
    理方法に於いて、1つの名前替えレジスタ単位にレジス
    タデータの退避とロードを行うことを特徴とするマルチ
    コンテキスト処理方法。
  34. 【請求項34】請求項19記載のマルチコンテキスト処
    理方法に於いて、前記複数のコンテキストは、異なった
    アドレス空間で実行される複数のプロセスであることを
    特徴とするマルチコンテキスト処理方法。
  35. 【請求項35】請求項19記載のマルチコンテキスト処
    理方法に於いて、前記複数のコンテキストは、同一アド
    レス空間で実行される複数のスレッドであることを特徴
    とするマルチコンテキスト処理方法。
  36. 【請求項36】請求項35記載のマルチコンテキスト処
    理方法に於いて、前記スレッドは、数値計算プログラム
    のループであることを特徴とするマルチコンテキスト処
    理方法。
JP29074294A 1994-11-25 1994-11-25 マルチコンテキストをサポートするプロセッサおよび処理方法 Expired - Fee Related JP3569014B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (8)

* Cited by examiner, † Cited by third party
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