JPH0863361A - レジスタファイル、およびレジスタファイルを管理する方法 - Google Patents

レジスタファイル、およびレジスタファイルを管理する方法

Info

Publication number
JPH0863361A
JPH0863361A JP7201003A JP20100395A JPH0863361A JP H0863361 A JPH0863361 A JP H0863361A JP 7201003 A JP7201003 A JP 7201003A JP 20100395 A JP20100395 A JP 20100395A JP H0863361 A JPH0863361 A JP H0863361A
Authority
JP
Japan
Prior art keywords
address
register
registers
local
task
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.)
Withdrawn
Application number
JP7201003A
Other languages
English (en)
Inventor
A Watson George
ジョージ・エイ・ワトソン
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.)
Boeing North American Inc
Original Assignee
Rockwell International Corp
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 Rockwell International Corp filed Critical Rockwell International Corp
Publication of JPH0863361A publication Critical patent/JPH0863361A/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • G06F9/30127Register windows
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30138Extension of register space, e.g. register cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/342Extension of operand address space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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, 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

Abstract

(57)【要約】 【課題】 最大の効率で用いられ、高速のタスクおよび
コンテキスト切換を可能にするレジスタファイル、およ
びそのようなレジスタファイルを管理する方法を提供す
る。 【解決手段】 レジスタファイル23はオペランドの一
時記憶のためにデータメモリ27および演算論理ユニッ
ト25に接続される。レジスタファイルの各レジスタは
絶対アドレスを有する。相対レジスタアドレスはALU
により実行されている命令のアドレスフィールドから読
出され、相対レジスタアドレスおよびレジスタベースア
ドレスに対して演算計算が行なわれ、アクセスされるべ
きレジスタの絶対レジスタアドレスが得られる。

Description

【発明の詳細な説明】
【0001】
【発明の背景】この発明は、汎用または専用コンピュー
タのための演算論理ユニット(ALU)のための高速ア
クセスメモリの構造および動作に関する。特に、この発
明は、特定のタスクまたはコンテキスト内のALUによ
り実行されている命令によるアクセスのためのオペラン
ドの一時記憶領域を与えるレジスタファイルの制御に関
する。この発明は、これに限られるわけではないが特
に、縮小命令セットコンピュータ(RISC)アーキテ
クチャを有する専用デジタル信号プロセッサにおいて用
いるのに適している。
【0002】ALUが命令を実行するたびに、それは一
般に、メモリにストアされるオペランドをアクセスしな
ければならない。さらに、多くの計算の結果が、一時的
にまたは永久的にメモリにストアされる。実際にはコン
ピュータの演算論理ユニットにより行なわれるすべての
算術計算がメモリをアクセスする必要がある。したがっ
て、そのようなメモリがアクセスされる速度がコンピュ
ータの演算の全速度に対し重要である。
【0003】レジスタファイルは、必要とされるオペラ
ンドへの高速アクセスを可能にし、計算の間にデータの
一時記憶領域を与えるように用いられている。これらの
レジスタファイルは、特定のタスクまたはサブルーチン
が実行される間にコンピュータの主メモリの一部からの
データがストアされ得る高速アクセスメモリを含む。
【0004】レジスタファイルへのアクセスは、主メモ
リへのアクセスより速い。その理由の1つはレジスタフ
ァイルが主メモリユニットより少ない記憶位置を有する
からである。このため、アドレス指定機構は、主メモリ
ユニットをアドレス指定するのに必要とされるよりもは
るかに短いアドレスを読出し、デコードする。
【0005】特定のタスクまたはサブルーチンが開始さ
れると、その特定のサブルーチンと関連するデータが、
主メモリからレジスタファイルにロードされる。次に、
コンピュータがサブルーチンで完了されると、タスクま
たはサブルーチンの実行の間に変更されたかまたは加え
られたデータを含めて、データがレジスタファイルから
主メモリに転送して戻される。レジスタファイルはここ
で、演算論理ユニットにより必要とされるかまたはこれ
により実行されている次のサブルーチンと関連するデー
タで満たされ得る。
【0006】異なるサブルーチンが参照されるたびにレ
ジスタファイルと主メモリとの間でデータを転送するこ
の必要は、タスク間またはサブルーチン間の切換えのプ
ロセスを遅くする。したがって、2つのサブルーチンと
関連するデータがレジスタファイル内に同時にストアさ
れ得るように、2つのセクションに分けられたレジスタ
ファイルを用いることが提案されてもいる。一般に提案
されるように、分けられたレジスタファイルの各セクシ
ョンは固定した大きさである。
【0007】従来のアーキテクチャのコンピュータにお
いて、主メモリとレジスタファイルとの間のデータの転
送は、メモリ管理ユニットまたは他のメモリ制御装置に
より制御され得る。
【0008】縮小命令セットコンピュータ(RISC)
アーキテクチャは、コンピュータプロセッサによる命令
の実行をストリームライン化する機構として顕著になっ
ている。そのような環境において、メモリへのアクセス
の速度は、標準的なアーキテクチャを有するコンピュー
タにおけるよりも決定的なものであろう。
【0009】RISCアーキテクチャ装置は、特殊なロ
ードおよびストア命令を用いて、レジスタファイルと主
メモリとの間でデータを移動させる。さらに、特殊なレ
ジスタ間転送命令が用いられて、レジスタファイルのレ
ジスタ間でオペランドを移動させる。
【0010】RISCコントローラまたはプロセッサは
一般に、図1の(a)に示された実行パイプに従って命
令を実行できる。RISC実行パイプの4つの段は、命
令フェッチ、レジスタからのオペランドフェッチ、演算
論理ユニット(ALU)での実行、およびデータメモリ
アクセス(読出または書込)である。
【0011】実行パイプの第1の段は命令フェッチであ
る。第2の段の間、所要のオペランドがレジスタからフ
ェッチされる。段3の間、加算器、シフタ、および他の
演算が実行される。アクセスを完了する必要があれば、
段4以降の間、データメモリアクセスが通常、発生す
る。RISC命令実行パイプはまた、5つの段を含むこ
とができ、ALU演算およびメモリアクセスのためによ
り多い時間を可能にする。実行されている命令に依存し
て、段3以降に他の演算が実行されるかもしれない。
【0012】乗算演算のための代替の命令パイプが図1
の(b)に示される。乗算および加算演算が、段3から
段4の最初の部分に拡張され、累算機能が段4の後の部
分の間に発生するかもしれない。
【0013】一般に、命令は各クロック時間に開始さ
れ、1命令サイクルにつき1段の速度でRISC実行パ
イプを進む。オペランドが所要の時間に利用可能でなけ
れば、ハードウェアインタロックがそのオペランドを必
要とする命令の実行を停止させるかもしれない。ハード
ウェアインタロックはまた、先行する命令が十分に完了
しない場合にも命令実行を停止させるかもしれない。
【0014】
【発明の概要】この発明は、レジスタファイル、および
レジスタファイルを管理する方法である。
【0015】メモリと、プログラム命令に従ってオペラ
ンドの算術演算を行なうための演算論理ユニット(AL
U)とを有するコンピュータにおいて、この発明に従う
レジスタファイルは、メモリとALUとに結合され、A
LUにより用いられるオペランドを一時的にストアする
複数個のレジスタを含む。各レジスタは一意な絶対アド
レスを有する。
【0016】レジスタファイルはさらに、第1のベース
アドレスで始まるレジスタの第1のセットと、第2のベ
ースアドレスで始まるレジスタの第2のセットとを指定
するための機構を含む。レジスタの第1のセットは、第
1のグローバルベースアドレスで始まるグローバルレジ
スタの第1のセットと、第1のローカルベースアドレス
で始まるローカルレジスタの第1のセットとを含む。レ
ジスタの第2のセットは、第2のグローバルベースアド
レスで始まるグローバルレジスタの第2のセットと、第
2のローカルベースアドレスで始まるローカルレジスタ
の第2のセットとを含む。
【0017】レジスタファイルはさらに、アドレス指定
機構を含む。アドレス指定機構は、命令から相対アドレ
スを読出し、その相対アドレスが第1のレジスタセット
のレジスタを特定するかまたは第2のレジスタセットの
レジスタを特定するかを決定し、相対アドレスから、ア
ドレス指定されるべきレジスタの絶対アドレスを計算す
る能力を含む。アドレス指定されるべきレジスタがグロ
ーバルレジスタの第1のセットにあれば、計算はさらに
第1のグローバルベースアドレスを用い、アドレス指定
されるべきレジスタがローカルレジスタの第1のセット
にあれば、計算はさらに第1のローカルベースアドレス
を用いる。アドレス指定されるべきレジスタがグローバ
ルレジスタの第2のセットにあれば、計算は第2のグロ
ーバルベースアドレスを用い、アドレス指定されるべき
レジスタがローカルレジスタの第2のセットにあれば、
計算は第2のローカルベースアドレスを用いる。
【0018】この発明の1つの局面に従うと、指定手段
は、異なる時間に、レジスタファイルの異なる複数個の
レジスタをレジスタの第1のセットとして指定すること
ができ、異なる複数個のレジスタは、第3のベースアド
レスで始まる絶対アドレスを有する。次にアドレス指定
手段は、相対アドレスおよび第3のベースアドレスか
ら、アドレス指定されるべきレジスタの絶対アドレスを
計算する。
【0019】この発明に従うレジスタファイルを管理す
る方法は、第1のベースアドレスで始まる絶対アドレス
を有するレジスタを含むレジスタの第1のセットを指定
するステップと、第2のベースアドレスで始まる絶対ア
ドレスを有するレジスタを含むレジスタの第2のセット
を指定するステップとを含む。レジスタファイルのレジ
スタをアドレス指定するステップは、命令のアドレスフ
ィールドから相対アドレスを読出すステップと、その相
対アドレスが第1のレジスタセットのレジスタを特定す
るかまたは第2のレジスタセットのレジスタを特定する
かを決定するステップとを含む。相対アドレスが第1の
セットのレジスタを特定すると、アクセスされるべきレ
ジスタのアドレスが、相対アドレスおよび第1のベース
アドレスから計算される。相対アドレスが第2のセット
のレジスタを特定すると、アクセスされるべきレジスタ
のアドレスが、相対アドレスおよび第2のベースアドレ
スから計算される。
【0020】この発明のレジスタファイル管理装置およ
び方法は、レジスタファイルのレジスタの効率的な使用
を可能にする。
【0021】この発明は、各々がレジスタファイル内で
任意の大きさおよび位置である、多数のレジスタセット
が、異なるタスクおよびコンテキストのために指定され
るのを可能にする。
【0022】この発明は、指定されたレジスタセットの
各々の大きさが容易に変えられるのを可能にする。
【0023】この発明は、レジスタがタスク内にまたは
異なるタスクに容易に再割当てされるのを可能にする。
【0024】この発明は、レジスタファイルのレジスタ
の最大利用のために、特定のタスクと関連するレジスタ
の再割当てを可能にする。
【0025】この発明のレジスタファイル管理装置およ
び方法はさらに、2つ以上のタスクが、レジスタファイ
ルのレジスタへの瞬時アクセスを有するのを可能にし、
呼出、トラップ、例外、および復帰で瞬時コンテキスト
切換をサポートする。
【0026】この発明はさらに、レジスタファイルの新
しいスタック位置に切換えられ得るシステムメモリスタ
ックが、マルチタスキングのための非常に速い切換をサ
ポートするのを可能にする。
【0027】この発明の装置および方法はさらに、デー
タメモリへの、データの自動的かつ増分的なセーブおよ
びリストアを可能にし、レジスタファイルオーバフロー
を効率的にサポートする。
【0028】
【好ましい実施例の詳細な説明】好ましい実施例におい
て、この発明のレジスタファイルは、縮小命令セットコ
ンピュータ(RISC)を用いて設計されたコントロー
ラまたは信号プロセッサにおいて特に役立つ。したがっ
て、そのような環境を簡単に説明する。
【0029】この発明のレジスタファイルを組入れ得る
RISCアーキテクチャ装置のコア部分のブロック図が
図2に示される。図示された装置は、コントローラまた
はデジタル信号プロセッサを実現し得る。この装置は、
命令実行ユニット21と、レジスタファイル23と、演
算論理ユニット(ALU)25と、データメモリ27
と、プログラムメモリ29とを含む。
【0030】ALU25は、乗算器、加算器、4つのア
キュムレータ、およびスケーラを含む乗算/累算ユニッ
ト(MAC)31を含む。
【0031】命令はプログラムメモリ29にストアされ
る。そのような命令は一般に、2つのソースオペランド
と1つの宛先オペランドとを特定することができる。各
命令は32ビットの長さでもよい。命令実行ユニット2
1は、命令が実行パイプを進むにつれて、プログラムメ
モリから読出された命令をデコードし、さまざまな演算
を制御する。
【0032】オペランドはレジスタおよびデータメモリ
にストアされる。レジスタオペランドは、レジスタファ
イル23、ストリーマデータレジスタ33、およびアキ
ュムレータを含むレジスタ空間から最も容易に得られ
る。拡張されたレジスタ空間に付加的なレジスタが含ま
れ得る。これらのレジスタは命令の限られたセットだけ
によりアクセスされ得る。レジスタ空間および拡張され
たレジスタ空間は完全なレジスタ空間を形成する。レジ
スタファイル23は主に、スカラオペランドを収容し、
グローバルおよびローカル環境の両方に対し備える。ス
トリーマレジスタ33は、レジスタ空間のレジスタであ
るかのようにメモリのアレイオペランドへのアクセスを
与える。アキュムレータレジスタは、ALU25のMA
Cユニット31の結果のための記憶を行なう。他のさま
ざまなレジスタは、便宜なアクセスを必要とする内部の
および選択された入力/出力レジスタを含み得る。
【0033】演算、論理、およびシフト命令はALU2
5で実行される。オペランドがレジスタ空間から取ら
れ、結果がレジスタ空間に戻される。移動命令を用い
て、オペランドが完全なレジスタ空間内で転送され得
る。乗算命令の結果はアキュムレータレジスタ向けであ
る。これらのアキュムレータレジスタは、完全な積およ
び保護ビットを保持するために拡張された長さを有し、
多くの累積のオーバフローに対応する。
【0034】ロードおよびストア命令、またはストリー
マと呼ばれる自動メモリアクセスハードウェアにより、
オペランドがレジスタ空間とデータメモリ27との間で
往復され得る。ロードおよびストア命令のためのメモリ
アドレスは、レジスタファイル23から(あるものは完
全なレジスタ空間から)生じ、ロードまたはストア命令
実行の一部として変更され得る。ストリーマのためのメ
モリアドレスは、ストリーマインデックスレジスタによ
り与えられ、インデックスモディファイアユニット35
で変更される。
【0035】好ましい実施例の詳細をレジスタファイル
23と関連して説明するが、当業者は、この発明がスト
リーマレジスタ33、アキュムレータ、および他のレジ
スタ環境にも適用され、それらのレジスタ内で瞬時のタ
スクおよびコンテキスト切換を行ない得ることを認める
であろう。
【0036】情報は、たとえば32ビットのワードでデ
ータメモリ27にストアされ得る。レジスタ空間におい
て、オペランドもまた32ビットのワードとしてストア
され得る。必要であれば、ロード/ストア命令またはス
トリーマコンテキストレジスタで特定されるデータタイ
プ変換に従って、メモリからまたはメモリへロードされ
るときに、オペランドが拡張されるかまたは切捨てられ
る。もちろん、他の長さのデータワードも用いることが
できる。
【0037】条件つき分岐(PC相対アドレス)、ジャ
ンプ(絶対アドレス)、呼出、トラップ、および復帰
は、命令により与えられるオプションに従って「遅延ス
ロット」命令が選択的に実行され得る遅延サイクルの後
に、条件つきで実行される。
【0038】図2に図示されたRISC信号プロセッサ
装置は、情報記憶のための別個の空間、すなわちメモリ
空間およびレジスタ空間を有する。この装置は、別個の
プログラムメモリおよびデータメモリバス41、43
(ハーバード(Harvard )アーキテクチャとも呼ばれ
る)を含む。しかしながら、プログラムメモリおよびデ
ータメモリアドレス空間を、特定の装置実現例のために
別個であるかまたはともに合わされたものと考えること
ができる。装置内に別個のバスを保持することはメモリ
ブロックの同時アクセスを可能にする。しかしながら、
両方のバスは同じアドレス空間をアドレス指定するよう
に用いられることができ、どのバスからも同じ情報がア
クセス可能である。
【0039】プログラムメモリバス41ならびにデータ
メモリおよび付加的な補助メモリバス43が含まれ得
る。プログラムメモリバスは、命令実行ユニットから始
まり、命令および分岐テーブルのために用いられる。デ
ータメモリバスは、ロードおよびストア命令またはスト
リーマにより用いられ、レジスタとデータメモリとの間
でデータを転送する。
【0040】[レジスタファイル]レジスタファイル2
3は、ALUによるより高速のアクセスのためにオペラ
ンドにレジスタ空間記憶を与える。レジスタファイルの
各レジスタは、各レジスタがデータワードをストアでき
るように、データメモリにストアされるデータワードの
大きさと同じ大きさでもよい。レジスタファイルの各レ
ジスタは一意な絶対アドレスを有する。実際にはいかな
る数のレジスタもレジスタファイルに含まれ得る。たと
えば、異なる実施例は32以下から2000を上回るレ
ジスタをレジスタファイルに収容できる。
【0041】図3を参照すると、この発明に従って構成
されたレジスタファイル23は、データバス43を介し
て演算論理ユニット(ALU)25および主データメモ
リ27に接続される。データが、主データメモリユニッ
ト27から読出され、ALUによる高速アクセスのため
にレジスタファイルのレジスタにストアされ得る。さら
に、ALUにより行なわれた演算の結果が、それらを主
データメモリに転送する必要なしに、ALUにより今後
用いられるために、レジスタファイルに一時的にストア
され得る。最後に、ALUの演算により加えられたかま
たは変更されたデータを含めて、レジスタファイルにス
トアされたデータが、レジスタファイルからの高速アク
セスがもはや必要でないとき、またはレジスタファイル
の空間が他の動作のために必要であるときに主メモリユ
ニットに戻される得る。
【0042】この発明に従うと、レジスタファイルアド
レス指定機構45は、ALU25により実行されている
命令のアドレスフィールドから読出される相対アドレス
およびベースアドレスから、レジスタファイル内の所望
のレジスタの絶対アドレスを計算する。アドレス指定機
構45は、各タスクまたはタスク内のコンテキストのた
めに特定のレジスタを指定する。レジスタのそのような
セットの各々は、特定のベースアドレスで始まるアドレ
スを有するレジスタを含む。そのタスクもしくはコンテ
キスト内のまたはこれにに関連する命令がALUにより
実行されており、かつ相対アドレスが命令のアドレスフ
ィールドから読出されると、レジスタファイルアドレス
指定機構は、そのタスクまたはコンテキストと関連する
レジスタのためのレジスタファイルベースアドレスおよ
び相対アドレスから、所望のレジスタの絶対アドレスを
計算する。その後そのレジスタがアクセスされ得る。
【0043】さて図4を参照すると、任意の数のタスク
のためにセットアップされた例示的なレジスタファイル
23が図示される。この説明において別個のタスクは1
つのALUにより実行されている別個のルーチンと考え
られるが、そのような別個のタスクは、同時に動作して
いる異なるALUにより実行されている別個のルーチン
でもよい。
【0044】図4に示されるように、レジスタの第1の
セット51は第1のタスク環境のために与えられるかま
たは指定される。レジスタのこのセットは、第1のベー
スアドレス(すなわちローカルベース1)と第1の最大
アドレス(すなわちローカルベース2)との間に絶対ア
ドレスを有するレジスタであり得る。第2のベースアド
レス(ローカルベース2)で始まる絶対アドレスを有す
るレジスタの第2のセット52は、第2のタスク環境の
ために与えられ、第nのタスク環境のためのレジスタの
第nのセット53まで同様である。レジスタの第nのセ
ットは、第nのベースアドレス(ローカルベースn)で
始まるアドレスを有し得る。
【0045】この発明に従って構成されかつ動作される
レジスタファイルのさらなる説明から明らかになるよう
に、レジスタファイル内にサポートされ得るタスク環境
の数は、本質的には任意であり、プログラムの要求に依
存して装置の動作の間、異なる時間に変更することさえ
できる。各セットのレジスタの数もまた本質的には任意
であり、各セットごとに異なっていてもよいこともま
た、明らかになるであろう。さらに、セットに割当てら
れるレジスタの数を時間にわたって変更できる。レジス
タセットは必ずしも互いに直接に隣接する必要はない。
【0046】レジスタファイルの各タスク環境内では、
別々のレジスタグループ化がグローバルオペランドおよ
びローカルオペランドに対し行なわれ得る。グローバル
オペランドは、タスク内のいくつかのコンテキストから
アクセスされ得るオペランドである。ローカルオペラン
ドは、タスク内の特定のコンテキストだけに適用可能で
あるオペランドである。ローカルオペランドのためのレ
ジスタグループ化は、呼出、例外、トラップ、および復
帰のための、ほぼ瞬時のコンテキスト切換のための機構
を与える。図4において、各タスクのためのグローバル
レジスタは、対応するグローバルベースアドレス(すな
わちタスク1のための「グローバルベース1」、タスク
2のための「グローバルベース2」など)で始まるアド
レスを有するものである。各タスクのためのローカルレ
ジスタは、対応するローカルベースアドレス(すなわち
「ローカルベース1」、「ローカルベース2」など)で
始まる絶対アドレスを有するレジスタである。
【0047】図5は、図4に示される多重タスクレジス
タファイル内の特定のタスクのために指定されたレジス
タの例示的なセットを図示する。レジスタのこのセット
は、ベースアドレスRFLと最大アドレスRFG+31
との間のレジスタを含む。図示された好ましい実施例に
おいて、タスクのために指定された32のグローバルレ
ジスタがある。各グローバルレジスタは32ビットの容
量を有する。グローバルベースレジスタは、RFGの絶
対アドレスを有し、グローバルレジスタは、グローバル
ベースアドレスRFGと最大アドレスRFG+31との
間のレジスタを含む。この場合32のグローバルレジス
タは、GR0からGR31のグローバルベースレジスタ
に対しアドレスを有し得る。相対アドレスGR0は絶対
レジスタアドレスRFGに対応する。したがって、グロ
ーバルベースアドレスと命令フィールドから読出された
相対アドレスとを用いて計算を行なうことにより、各グ
ローバルレジスタの絶対アドレスを得ることができる。
たとえば、命令フィールドから読出された相対アドレス
「i」がグローバルベースアドレスRFGに加えられ、
アドレス指定されるべきレジスタの絶対アドレス「a」
を得ることができる。
【0048】a=i+RFG グローバルレジスタのベースレジスタのための絶対アド
レス(RFG)は、11ビットのレジスタアドレスでも
よい。しかしながら、最下位3ビットは好ましくは常に
0であり、そのためグローバルベースレジスタは8つの
レジスタのブロックにおいて進み、アドレスは8ビット
でストアされ得る。
【0049】グローバルレジスタの1セットだけを有す
る単一タスク環境において、図6に図示されるような、
32のグローバルレジスタが固定され得る。アドレス
「0」を備えたグローバルレジスタ(GR0)は、すべ
てのビット位置において0でハードワイヤ化されること
ができ、そのためそれは、常に「0」と読出され、変更
できない。アドレス「1」を備えたグローバルレジスタ
(GR1)は、メモリスタックポインタとして予約され
得る。いくつかの命令は暗示的にそれをアクセスし得
る。グローバルレジスタ(GR0−GR31)は、命令
のフィールドにより直接にアドレス指定され得る。
【0050】タスクに割当てられたレジスタの各セット
は、ローカルレジスタも含む。ローカルレジスタは、プ
ログラムカウンタ復帰アドレス、状態レジスタ、システ
ムスタックポインタ、伝えられたパラメータ、および中
間オペランドの一時記憶領域のために用いられる。
【0051】ローカルレジスタの各セットは、ローカル
ベースアドレスを有するローカルベースレジスタを有す
る。図5は、ローカルレジスタを、ローカルベースアド
レスRFLと最大アドレスRFG−1との間のアドレス
を有するものとして示す。実際には、いかなる数のレジ
スタもローカルレジスタの各セットに含まれ得る。たと
えば64のレジスタが含まれ、各々が32ビットの容量
を有し得る。マルチタスク環境において、この発明の相
対アドレス機構のために、さまざまなローカルレジスタ
セットは同じ大きさである必要はなく、また一定のまま
である必要もない。なぜなら、相対的な位置および大き
さは、セットのための絶対ベースアドレス(RFL)を
変更することにより、またはレジスタセットの上限を決
定するグローバルレジスタセットのための絶対ベースア
ドレス(RFG)を変更することにより、簡単に変更さ
れ得るからである。
【0052】タスクのためのローカルレジスタセット内
では、ローカルレジスタの1つ以上のサブセットまたは
ウィンドウ61が、タスク内の特定のコンテキストのた
めに指定され得る。そのようなサブセットは、サブセッ
トベースアドレスRFBで始まる絶対アドレスを有する
レジスタからなってもよい。マルチタスク環境における
サブセットベースアドレスRFBは、最下位ビットが0
である11ビットのアドレスでもよい。これは、アドレ
スが10ビットでストアされるのを可能にし、レジスタ
サブセットが対のレジスタにおいて進むのを確実にす
る。図6に示される単一タスク環境において、RFBの
ための6ビットのアドレスが十分であろう。最下位ビッ
トは依然として0のままでよい。
【0053】サブセットベースアドレスRFBは、レジ
スタファイルの最下部からレジスタウィンドウのオフセ
ットを与える。このサブセットベースアドレスは、ロー
カルレジスタとしてタスクに割当てられた範囲内でなけ
ればならない。たとえば、図は、絶対アドレスRFBと
RFB+31との間の絶対アドレスを有する32のレジ
スタを、指定されたサブセットとして示す。したがっ
て、32レジスタサブセット内の各レジスタは、命令フ
ィールドからローカル相対アドレス(LR0−LR3
1)を読出し、この相対アドレスおよびサブセットベー
スアドレスRFBを伴なう計算を行ない、レジスタの絶
対アドレスを得ることにより、アドレス指定され得る。
このサブセットは、ベースレジスタRFBに対しアドレ
ス指定され得るレジスタの「ウィンドウ」になる。レジ
スタのこのウィンドウは、呼出、例外、トラップ、およ
び復帰の間にレジスタファイルの上方または下方に再配
置され、システムスタックを形成できる。レジスタウィ
ンドウのこの再配置または移動は、サブセットベースア
ドレスRFBを単に変更することにより達成され得る。
【0054】好ましい形態において、計算はサブセット
ベースアドレスRFBに相対アドレス(たとえば
「i」)を加えることを含む。この場合、相対アドレス
0(ローカルレジスタLR0)は、絶対アドレスRFB
を有するレジスタをアクセスする。この和i+RFBが
RFG(グローバルレジスタのベースレジスタのための
絶対アドレス)より小さければ、その和と等しい絶対ア
ドレス(「a」)を有するローカルレジスタがアドレス
指定される。
【0055】a=i+RFB しかしながら、この和がRFG以上であれば、結果とし
て生じる絶対アドレスは、既にグローバルレジスタとし
て指定されたレジスタを特定する。したがって、サブセ
ットまたはウィンドウがローカルレジスタセットの最上
部からローカルレジスタセットの最下部に「ラップして
まわる」ように、論理がアドレス指定機構に組込まれ
る。和i+RFBがRFG以上であれば、絶対アドレス
は、その和からグローバルレジスタのベースレジスタの
絶対アドレス(RFG)を減じ、ローカルレジスタのセ
ットのためのベースレジスタ(RFL)を加えたものに
等しい。
【0056】a=i+RFB−RFG+RFL この機構は、ローカルレジスタのサブセットが、ローカ
ルレジスタのセットの最上部から最下部に「ラップして
まわり」、グローバルレジスタに侵入するのを避け、レ
ジスタファイルのレジスタを最大の効率で用いるのを可
能にする。したがって、レジスタのウィンドウは、適切
なサブセットベースアドレスRFBを単に指定すること
により、レジスタのローカルセット内のどこでもセット
され得る。
【0057】レジスタの2つ以上のウィンドウ(または
サブセット)はタスク内の別個のコンテキストのために
一度に指定され得る。各サブセットはその一意なサブセ
ットベースアドレスRFBを有する。これらは、ベース
アドレスに対し各レジスタをアドレス指定することによ
り柔軟性が与えられるので、独立してセットされ得る。
いくつかの場合において、サブセットをオーバラップさ
せることさえ望ましいであろう。そのようなオーバラッ
プは、オーバラッピングレジスタが別個のコンテキスト
においてアクセスされるのを可能にし、そのためいくつ
かのオペランドが容易に共有され得る。
【0058】ローカルレジスタの2つのサブセットが指
定されたタスク環境の例示的な配列が図7に示される。
第1のコンテキストに割当てられ得るかまたは指定され
得る第1のサブセット71は、第1のサブセットベース
アドレスRFB1で始まるアドレスを有するレジスタを
含んで示される。タスク内の第2のコンテキストに指定
され得る第2のレジスタサブセット72は、第2のサブ
セットベースアドレスRFB2で始まるアドレスを有す
るレジスタを含むものとして示される。付加的なサブセ
ットまたはウィンドウが必要に応じてタスク内に指定さ
れ得る。さらに、多数のサブセットも多重タスクのため
にセットアップされたレジスタファイルの他のタスク環
境においてセットアップされ得る。
【0059】単一タスク環境でウィンドウを構成する1
つの方法は、オーバラッピングウィンドウのスタッキン
グ配列を形成することである。
【0060】システムスタックは、レジスタファイル2
3のローカルレジスタとデータメモリ27のデータメモ
リスタックとを用いて実現され得る。ローカルレジスタ
ファイルウィンドウ(レジスタのサブセット)61(図
5)は、スタック領域の現在の最上部であり得る。前の
データを含む他のローカルレジスタは、スタックの次の
部分を含み、最も古い内容はデータメモリスタックにあ
る。呼出、トラップ、および例外は、ウィンドウ(レジ
スタサブセット)61を進め、新しいLR0(およびL
R1)に復帰情報をストアし得る。復帰は、復帰情報を
用いてウィンドウをその前の位置にリストアする。
【0061】システムスタック動作は、LR0に、RF
Bおよびプログラムカウンタ復帰アドレスへの変位を含
むことにより、達成され得る。さらに、状態レジスタア
ドレスがLR1にストアされることができ、送っている
パラメータおよび中間オペランドのためのレジスタは、
LR2およびそれより上の相対アドレスを有するローカ
ルサブセットレジスタである。このシステムスタックの
ためのポインタは、サブセットベースレジスタアドレス
RFBであり、呼出、例外、トラップ、および復帰と関
連する変位により変更され得る。
【0062】各レジスタウィンドウまたはサブセット
は、そのサブセットのためのサブセットベースアドレス
RFBを単に変更することにより、そのタスクのための
ローカルレジスタセット内で移動され得る。命令実行は
変更されないままである。なぜなら、それは一定のまま
であるウィンドウ内の相対アドレスに基づいて動作する
からである。レジスタウィンドウを移動させるために
は、新しいサブセットベースアドレスRFBで始まる絶
対アドレスを有するレジスタの新しいサブセットが指定
され得る。次に、移動されたウィンドウのレジスタをア
ドレス指定するために、命令のアドレスフィールドから
読出された相対アドレスが新しいサブセットベースアド
レスに加えられ、アクセスされるべきレジスタの絶対ア
ドレスが得られる。
【0063】さらに、特定のタスク環境のためのレジス
タセット全体が、そのタスクのための新しいベースアド
レスRFLを指定することにより移動され得る。レジス
タのグローバルセットのレジスタの絶対アドレスの計算
は、直接グローバルベースアドレスRFGからの計算に
依存するので、新しいRFGも特定されるはずである。
【0064】これらの可動性特徴の両方は、レジスタフ
ァイルが、最大の効率でレジスタを用いるように構成さ
れるのを可能にする。たとえば、拡大されなければなら
ないレジスタウィンドウが、より利用可能なレジスタを
有するレジスタファイルのセクションに移動され得る。
または、1つのレジスタウィンドウが、隣接するウィン
ドウの拡大に対応するように移動され得る。別個のタス
クに割当てられたレジスタセット全体の同様の移動は、
さらに、レジスタファイルのレジスタを効率的に用いる
能力を増大する。
【0065】図4、図5および図7に図示されたマルチ
タスク配列において、ローカルレジスタベースアドレス
RFLは、11ビットのアドレスでもよい。最下位3ビ
ットは好ましくは常に0であり、そのためローカルレジ
スタベースは常に8つのレジスタのブロックにおいて進
み、アドレスが8ビットでストアされ得る。各レジスタ
ウィンドウサブセットベースアドレスRFBも11ビッ
トのアドレスである。
【0066】アドレスRFBの最下位ビットは好ましく
常に0であり、そのためレジスタウィンドウベースは対
のレジスタにおいて進み、アドレスが10ビットでスト
アされ得る。
【0067】64のローカルレジスタを有する、図6に
図示された単一タスク実施例において、ローカルレジス
タのサブセットのベースレジスタのための絶対アドレス
(RFB)は、好ましくは6ビットのアドレスとして表
わされる。アドレスの最下位ビットは好ましくは常に0
であり、そのためローカルレジスタ0(LR0)は常に
偶数の絶対アドレスである。
【0068】レジスタファイル予約は、現在のプログラ
ムにより用いられるローカルレジスタを予約し、それら
が例外またはトラップにより上書きされないようにする
ように、用いられ得る。このレジスタファイル予約は、
指定されたRFRでもよく、たとえば4から34のロー
カルレジスタを予約できる。レジスタファイル予約RF
Rは、最下位ビットが常に0である、5ビットのアドレ
スモディファイアであり得る。したがって、RFRは偶
数のレジスタを予約し、4ビットでストアされ得る。具
体的に言うと、RFRはレジスタLR0からLR(RF
R+3)を予約し、ここでRFR=0,2,4,…30
である。RFRおよびRFBの両方が最下位ビット位置
に固定0を含む場合には、予約値RFRがサブセットベ
ースアドレスRFBに加えられると、結果として生じる
アドレスは常に偶数である。
【0069】図5を参照すると、予約されたレジスタ6
2の位置が示される。図示された実施例において、RF
Rの値は、現在のプログラムに割当てられたレジスタの
サブセットのレジスタの数より大きい。
【0070】予約命令は、RFRの新しい値に入り、も
しあれば、データメモリ27のメモリスタックに予約さ
れているローカルレジスタから前のデータを自動的にセ
ーブする。予約命令はまた、例外イネーブルをセットで
き、符号なし8ビットフィールドを、相対アドレスGR
1を有するグローバルレジスタのメモリスタックポイン
タに加えることにより、メモリスタックポインタを再配
置できる。呼出、例外、またはトラップの後、サブプロ
グラムの第1の命令は予約命令であるべきである。
【0071】呼出命令は、変位フィールド(RFD)を
含むことかでき、これはサブセットベースレジスタアド
レスRFBを変更し、レジスタファイルウィンドウまた
はサブセットを再配置するように用いられる。新しいサ
ブセットベースレジスタアドレスは、古いベースレジス
タ絶対アドレスに変位RFD+2を加えることにより計
算され得る。
【0072】新しいRFB=古いRFB+RFD+2 2が変位に加えられるのは、ローカルレジスタLR0お
よびLR1の復帰情報を自動的に保護するためである。
【0073】変位値RFDは、レジスタファイル予約値
RFRのように、最下位ビットが常に0である、5ビッ
トのアドレスモディファイアでもよく、そのためそれは
4ビットでストアされ得る。その代わりに、より小さい
レジスタファイルセットが用いられるべきであり、した
がってより小さい変位値が期待されるべきである環境に
おいて、変位フィールドRFDは、ベースレジスタ絶対
アドレスRFBの4つの最下位可変ビットに加えられ得
る4ビットの値でもよい。
【0074】変位値RFDがファイルレジスタ予約値R
FRより大きければ、いくつかのレジスタが上書きされ
るおそれがあり得る。したがって、そのようなレジスタ
をアクセスする際に注意する必要があるであろう。変位
値RFD、レジスタファイル予約値RFR、およびプロ
グラムカウンタのための復帰アドレスは、ローカル相対
アドレスLR0を有する新しいベースレジスタによりア
ドレス指定されるレジスタファイル位置にストアされ
る。
【0075】ALUが例外に出会うとき、またはトラッ
プ命令が実行されるとき、レジスタファイル予約モディ
ファイアRFRが用いられ、サブセットベースレジスタ
アドレスRFBを変更し、レジスタファイルウィンドウ
を再配置する。新しいサブセットベースアドレスをセッ
トする際に予約値RFRがローカルサブセットウィンド
ウベースアドレスRFBに加えられ、ローカルウィンド
ウを、保護されているレジスタを通って移動させる。新
しいベースレジスタ絶対アドレスは、予約変位RFR+
2の値を加えることにより、古いベースレジスタアドレ
スから計算される。
【0076】新しいRFB=古いRFB+RFR+2 古いRFRの値およびプログラムカウンタのための復帰
アドレスは、新しいLR0にストアされる。状態レジス
タは新しいLR1にストアされる。ALUにより実行さ
れる復帰命令は、ローカルサブセットウィンドウレジス
タアドレスRFBを、(呼出復帰の場合)それから変位
RFD+2を減じることにより、または復帰が例外もし
くはトラップからである場合にはレジスタファイル予約
値RFR+2を減じることにより、その前の値にリスト
アする。これらの場合のいずれも、予約値、プログラム
カウンタ、および状態レジスタ(例外またはトラップ復
帰の場合)がリストアされる。
【0077】変位RFRおよびRFDに加えられた付加
的な「2」は、相対アドレスLR0およびLR1を有す
るレジスタにストアされる復帰情報を自動的に保護す
る。
【0078】オートセーブモードは、ローカルレジスタ
の内容をデータメモリスタックにロードし、予約命令に
より保護されたレジスタを開放できる。オートリストア
モードは、復帰命令の間、セーブされたレジスタ内容を
リストアしてデータメモリスタックからローカルレジス
タに戻すのを可能にする。ローカルレジスタは、それら
が上書きされるおそれのある場合のみセーブされるかま
たはリストアされるべきであり、状態レジスタのオート
セーブモードビットが能動化される場合のみセーブされ
るかまたはリストアされるべきである。
【0079】アドレスRFSを有するレジスタファイル
セーブレジスタは、最も古いデータを備えたローカルレ
ジスタをより新しいデータを備えたものから分けるポイ
ントとして用いられ得る。このレジスタは、セーブされ
るべき次のローカルレジスタのレジスタファイル絶対ア
ドレス、またはリストアされるべき次のローカルレジス
タより上のものを含み得る。したがって、レジスタRF
Sの内容は、既にセーブされており、したがって上書き
され得るレジスタを、上書きされるべきでないものから
分ける。ALUが、RFBで始まる絶対アドレスを有す
るレジスタのサブセットをアクセスするコンテキストで
動作しているとき、レジスタファイル論理は、アクセス
されるべきレジスタが上書きされるべきでないデータを
含まないことを確実にする。この規準は、アクセスされ
るべきレジスタのサブセット、およびRFRにより予約
されたレジスタがすべて、レジスタRFSの内容により
特定されるレジスタより下である場合に、満たされる。
【0080】レジスタファイルセーブレジスタアドレス
RFSがレジスタサブセットウィンドウ絶対アドレスR
FBより大きい場合、レジスタファイルセーブレジスタ
アドレスRFSがウィンドウベースアドレスRFB+予
約値RFR+3より大きければ、ローカルレジスタは上
書き「されない」と考えられる。したがって、アクセス
されるレジスタは以下の場合安全である。
【0081】RFS>RFB+RFR+3 しかしながら、RFSがRFB以下の場合、アクセスさ
れているローカルレジスタは、以下の場合安全である。
【0082】 RFS+RFG−RFL>RFB+RFR+3 後者の計算は、ローカルレジスタウィンドウがタスクに
割当てられたレジスタの最下部に「ラップしてまわる」
のを説明する。
【0083】データメモリスタックアドレスは、絶対ア
ドレスRFMを有するレジスタにストアされ得る。この
データメモリスタックアドレスは、データメモリのメモ
リスタックの最上部のデータを指す。レジスタRFMの
内容は、32ビットのアドレスでもよい。
【0084】予約命令の間、ローカルレジスタは、安全
規準が満たされるまでデータメモリスタックに自動的に
セーブされ得る。復帰の間、最初に遅延スロット命令が
実行され、次にウィンドウベースアドレスRFBがリス
トアされ、安全規準が満たされるまでローカルレジスタ
がデータメモリスタックから自動的にリストアされる。
【0085】オートセーブおよびオートリストアモード
が用いられる場合、ローカルレジスタファイルアドレス
計算は、レジスタアドレスがRFGより小さくかつRF
Lよりも小さくないままであるように、「モジュロ」態
様で行なわれる。これが意味するのは、アドレス計算が
RFG以上の結果を与えると、その計算から量(RFG
−RFL)が減じられ、アドレスがローカルレジスタセ
ットの最下部に「ラップする」ということである。アド
レス計算がRFLより小さい結果を与えると、量(RF
G−RFL)がその計算に加えられ、アドレスがローカ
ルレジスタセットの最上部に「ラップする」ことを引起
こす。
【0086】この発明に従って構成されかつ管理される
レジスタファイルの重要な利点の1つは、ALUが実際
には瞬時に、コンテキスト間、またはタスク間さえも切
換できることである。タスク切換は、タスク切換ルーチ
ンに変わることにより、達成され得る。
【0087】古いタスクへの今後の復帰が望まれる場
合、トラップ命令が用いられるべきである。トラップ
は、復帰情報を新しいタスクのシステムスタックにプッ
シュする。
【0088】タスク切換ルーチンは、古いタスクへの復
帰が望まれれば、値RFM、RFG、RFL、RFS、
およびRFBをセーブし、これらのレジスタに新しいタ
スクについての情報ををロードする。レジスタRFMの
データメモリスタックポインタは、別個の32ビットの
ワードとしてストアされかつリストアされる。ローカル
およびグローバルベースアドレスRFLおよびRFG
は、1ワードを用いてともにストアされかつリストアさ
れ得る。これが可能なのは、各々の長さが11ビットで
あるからである。したがって、各々は32ビットのワー
ドの半分に適合する。セーブアドレスRFSおよびロー
カルレジスタサブセットウィンドウのためのベースRF
Bは、別のワードを用いてともにストアされ得る。これ
らのアドレスもまた11ビットであり、そのためそれら
は各々32ビットのワードの半分に適合する。
【0089】ローカルレジスタのメモリへの自動セーブ
およびリストアが必要でない場合、タスクを切換えるた
めに必要なのは、タスクと関連するレジスタのセットの
ためのローカルベースアドレスRFLと、グローバルベ
ースアドレスRFGとを再ロードすることだけである。
特定のコンテキストのためのレジスタファイルベースレ
ジスタアドレスRFBはまた、アドレス指定されている
タスク内の特定のコンテキストのために変更され得る。
【0090】当業者は、図8に図示されるレジスタファ
イルアドレス指定の別の機構が特に役立つと認めるであ
ろう。下方の32のアドレスがグローバルレジスタ
(「G」)のために用いられ、上方のアドレスがローカ
ルレジスタ(「L」)のために用いられ得る。レジスタ
ファイルは連続的なアドレス指定を有するべきであり、
したがって、グローバルレジスタ割当てとローカルレジ
スタとの間に空隙が現れないであろう。そのことを考慮
して、グローバルレジスタはここで、単にベースレジス
タをグローバルアドレス範囲内に位置決めすることによ
り、ローカルレジスタとしてアクセスされ得る。このよ
うに、下方の32のレジスタの一部が、グローバルレジ
スタではなくローカルレジスタとして割当てられ得る。
再割当てはより高いグローバルレジスタに取って代わる
ように位置決めされるべきである。
【0091】図9および図10は、ユーザおよびスーパ
バイザローカルアドレス指定に特に適しているさらなる
レジスタファイルアドレス指定を図示する。アドレス空
間90がグローバルレジスタ94を示す場合、下方の3
2のグローバルレジスタ94がアドレス指定され得る。
しかしながら、アドレス空間90がローカルレジスタ9
5を示す場合、(状態レジスタの)モードビット91が
用いられて、それがユーザローカルレジスタ向けである
かまたはスーパバイザローカルレジスタ向けであるかを
決定する。次に、それがスーパバイザであれユーザであ
れローカルレジスタは、アドレス空間90のローカル部
分内の相対アドレスに基づいてアクセスされ得る。ユー
ザおよびスーパバイザレジスタの両方が、相対アドレス
に基づいてターゲットレジスタをアクセスするためのそ
れらのそれぞれのRFBU96(レジスタファイルベー
スユーザ)およびRFBS97(レジスタファイルベー
ススーパバイザ)を有することに注目されたい。
【0092】この発明の特定の実施例を上で説明し、特
定の環境におけるその使用を示したが、当業者は、多く
の変更がなされてもよく、かつ多くの他の環境がこの発
明を用いてもよいことを認識するであろう。
【図面の簡単な説明】
【図1】RISCアーキテクチャを有するプロセッサの
実行パイプのためのタイミング図である。
【図2】RISCアーキテクチャに従って設計され、か
つこの発明が用いられ得る信号プロセッサの実施例のブ
ロック図である。
【図3】メモリおよび演算論理ユニットに接続されたこ
の発明に従うレジスタファイルを概念的に図示する図で
ある。
【図4】この発明に従って多重タスク環境のためにセッ
トアップされたレジスタファイルの図である。
【図5】この発明に従って配置されたレジスタファイル
の単一タスクセクションのアドレス指定の図である。
【図6】単一タスク環境のために配置されたレジスタフ
ァイルの実施例の図である。
【図7】この発明に従って配置されたレジスタファイル
の単一タスクセクションの多数のウィンドウのアドレス
指定の図である。
【図8】この発明に従うレジスタファイルアドレス指定
のための別の機構の図である。
【図9】この発明に従うレジスタファイルのユーザおよ
びスーパバイザローカルレジスタのアドレス指定の図で
ある。
【図10】この発明に従うレジスタファイルのユーザお
よびスーパバイザローカルレジスタのアドレス指定の図
である。
【符号の説明】
23 レジスタファイル 25 演算論理ユニット 27 データメモリ

Claims (18)

    【特許請求の範囲】
  1. 【請求項1】 各レジスタが一意な絶対アドレスを有す
    るレジスタファイルを管理する方法であって、 レジスタの第1のセットを指定するステップを含み、前
    記第1のセットは、第1のベースアドレスで始まる絶対
    アドレスを有するレジスタを含み、さらにレジスタの第
    2のセットを指定するステップを含み、前記第2のセッ
    トは、第2のベースアドレスで始まる絶対アドレスを有
    するレジスタを含み、さらに前記レジスタファイルのレ
    ジスタをアドレス指定するステップを含み、前記アドレ
    ス指定ステップは、 命令のアドレスフィールドから相対アドレスを読出すス
    テップと、 前記相対アドレスが前記第1のレジスタセットのレジス
    タを特定するか、または前記第2のレジスタセットのレ
    ジスタを特定するかを決定するステップと、 前記相対アドレスが前記第1のセットのレジスタを特定
    すると、前記相対アドレスおよび前記第1のベースアド
    レスから、アドレス指定されるべきレジスタのための絶
    対アドレスを計算するステップと、 前記相対アドレスが前記第2のセットのレジスタを特定
    すると、前記相対アドレスおよび前記第2のベースアド
    レスから、アドレス指定されるべきレジスタのための絶
    対アドレスを計算するステップとを含む、方法。
  2. 【請求項2】 レジスタの前記第1のセットは第1のタ
    スクと関連し、レジスタの前記第2のセットは第2のタ
    スクと関連し、 前記相対アドレスが前記第1のセットのレジスタを特定
    するかどうかを決定する前記ステップは、前記命令が前
    記第1のタスクにあるかどうかを判断するステップと含
    み、 前記相対アドレスが前記第2のセットのレジスタを特定
    するかどうかを決定する前記ステップは、前記命令が前
    記第2のタスクにあるかどうかを判断するステップを含
    む、請求項1に記載の方法。
  3. 【請求項3】 前記相対アドレスが前記第1のセットの
    レジスタを特定すると、前記計算は、前記相対アドレス
    を前記第1のベースアドレスに加えるステップを含み、 前記命令が前記第2のセットのレジスタをアドレス指定
    すると、前記計算は、前記相対アドレスを前記第2のベ
    ースアドレスに加えるステップを含む、請求項2に記載
    の方法。
  4. 【請求項4】 前記第1のタスクが行なわれていると
    き、前記第1のベースアドレスをベースアドレスレジス
    タにロードするステップと、 前記第2のタスクが行なわれているとき、前記第2のベ
    ースアドレスを前記ベースアドレスレジスタにロードす
    るステップとをさらに含み、 前記命令が前記第1のタスクにあるか、または前記第2
    のタスクにあるかを判断する前記ステップは、前記ベー
    スアドレスレジスタの内容を読出すステップを含む、請
    求項2に記載の方法。
  5. 【請求項5】 レジスタの第3のセットを指定するステ
    ップをさらに含み、レジスタの前記第3のセットは、第
    3のベースアドレスで始まる絶対アドレスを有するレジ
    スタを含み、 前記レジスタファイルのレジスタをアドレス指定する前
    記ステップはさらに、前記相対アドレスが前記第3のレ
    ジスタセットのレジスタを特定するかどうかを決定する
    ステップを含む、請求項4に記載の方法。
  6. 【請求項6】 前記第1のタスクが行なわれていると
    き、前記第3のベースアドレスを前記ベースアドレスレ
    ジスタにロードし、かつ前記第1のベースアドレスをロ
    ードしないステップをさらに含み、 前記相対アドレスが前記第3のレジスタセットのレジス
    タを特定するかどうかを決定する前記ステップは、前記
    ベースアドレスレジスタの内容を読出すステップを含
    む、請求項5に記載の方法。
  7. 【請求項7】 レジスタの第3のセットを指定するステ
    ップをさらに含み、レジスタの前記第3のセットは、第
    3のベースアドレスで始まる絶対アドレスを有するレジ
    スタを含み、 レジスタの前記第1のセットと前記第1のタスクとの関
    連を解くステップと、 レジスタの前記第3のセットと前記第1のタスクとを関
    連させるステップとをさらに含む、請求項2に記載の方
    法。
  8. 【請求項8】 前記相対アドレスが前記第3のセットの
    レジスタを特定するかどうかを決定する前記ステップ
    は、前記命令が前記第1のタスクにあるかどうかを判断
    するステップを含む、請求項7に記載の方法。
  9. 【請求項9】 レジスタの前記第1のセットは第1のタ
    スクと関連し、レジスタの前記第2のセットは第2のタ
    スクと関連し、 前記第1のタスクが行なわれているとき、前記第1のベ
    ースアドレスがベースアドレスレジスタにロードされ、 前記第2のタスクが行なわれているとき、前記第2のベ
    ースアドレスが前記ベースアドレスレジスタにロードさ
    れ、 前記相対アドレスが前記第1のレジスタセットのレジス
    タを特定するか、または前記第2のレジスタセットのレ
    ジスタを特定するかを決定するステップは、前記ベース
    アドレスレジスタの内容を読出すステップを含む、請求
    項1に記載の方法。
  10. 【請求項10】 前記第1のレジスタセットは、第1の
    グローバルベースアドレスで始まる絶対アドレスを有す
    るグローバルレジスタの第1のセットと、第1のローカ
    ルベースアドレスで始まる絶対アドレスを有するローカ
    ルレジスタの第1のセットとを含み、 前記第2のレジスタセットは、第2のグローバルベース
    アドレスで始まる絶対アドレスを有するグローバルレジ
    スタの第2のセットと、第2のローカルベースアドレス
    で始まる絶対アドレスを有するローカルレジスタの第2
    のセットとを含み、 前記アドレス指定ステップはさらに前記相対アドレスが
    グローバルレジスタの前記第1のセットのレジスタを特
    定するかどうかを決定し、もしも前記第1のセットのレ
    ジスタを特定すると決定した場合、前記相対アドレスお
    よび前記第1のグローバルベースアドレスから、アドレ
    ス指定されるべきレジスタのアドレスを計算するステッ
    プと、 前記相対アドレスがローカルレジスタの前記第1のセッ
    トのレジスタを特定するかどうかを決定し、もしも前記
    第1のセットのレジスタを特定すると決定した場合、前
    記相対アドレスおよび前記第1のローカルベースアドレ
    スから、アドレス指定されるべきレジスタのアドレスを
    計算するステップと、 前記相対アドレスがグローバルレジスタの前記第2のセ
    ットのレジスタを特定するかどうかを決定し、もしも前
    記第2のセットのレジスタを特定すると決定した場合、
    前記相対アドレスおよび前記第2のグローバルベースア
    ドレスから、アドレス指定されるべきレジスタのアドレ
    スを計算するステップと、 前記相対アドレスがローカルレジスタの前記第2のセッ
    トのレジスタを特定するかどうかを決定し、もしも前記
    第2のセットのレジスタを特定すると決定した場合、前
    記相対アドレスおよび前記第2のローカルベースアドレ
    スから、アドレス指定されるべきレジスタのアドレスを
    計算するステップとを含む、請求項1に記載の方法。
  11. 【請求項11】 複数個のレジスタを含むレジスタファ
    イルを管理する方法であって、各レジスタは、一意な絶
    対アドレスを有し、前記方法は、 第1のタスクに、第1のベースアドレスで始まるレジス
    タの第1のセットを割当てるステップを含み、前記第1
    のレジスタセットは、第1のグローバルベースアドレス
    で始まるグローバルレジスタの第1のセットと、第1の
    ローカルベースアドレスで始まるローカルレジスタの第
    1のセットとを含み、さらに前記第1のタスク内の第1
    のコンテキストに、ローカルレジスタの前記第1のセッ
    トの第1のサブセットを割当てるステップを含み、前記
    第1のサブセットは、第1のコンテキストベースアドレ
    スで始まり、さらに前記第1のタスク内の第2のコンテ
    キストに、ローカルレジスタの前記第1のセットの第2
    のサブセットを割当てるステップを含み、前記第2のサ
    ブセットは、第2のコンテキストベースアドレスで始ま
    り、さらに第2のタスクに、第2のベースアドレスで始
    まるレジスタの第2のセットを割当てるステップを含
    み、レジスタの前記第2のセットは、第2のグローバル
    ベースアドレスで始まるグローバルレジスタの第2のセ
    ットと、第2のローカルベースアドレスで始まるローカ
    ルレジスタの第2のセットとを含み、さらに前記第1の
    タスクに関連する命令のアドレスフィールドから第1の
    相対アドレスを読出し、前記アドレスが前記第1のタス
    クに割当てられたグローバルレジスタを特定することを
    決定し、かつ前記第1のグローバルベースアドレスおよ
    び前記第1のグローバル相対アドレスから前記グローバ
    ルレジスタのための絶対アドレスを計算することによ
    り、レジスタの前記第1のセットの前記グローバルレジ
    スタの1つをアドレス指定するステップと、 第1のローカルレジスタをアドレス指定するステップと
    を含み、前記第1のローカルレジスタは、レジスタの前
    記第1のサブセットにあり、前記ステップは、命令のア
    ドレスフィールドから第2の相対アドレスを読出し、前
    記命令が前記第1のタスク内の前記第1のコンテキスト
    に関連することを決定し、かつ前記第1のコンテキスト
    ベースアドレスおよび前記第2の相対アドレスから前記
    第1のローカルレジスタのための絶対アドレスを計算す
    ることにより行なわれ、さらに第2のローカルレジスタ
    をアドレス指定するステップを含み、前記第2のローカ
    ルレジスタは、レジスタの前記第2のサブセットにあ
    り、前記ステップは、命令のアドレスフィールドから第
    3の相対アドレスを読出し、前記命令が前記第1のタス
    クの前記第2のコンテキストに関連することを決定し、
    かつ前記第2のコンテキストベースアドレスおよび前記
    第3の相対アドレスから前記第2のローカルレジスタの
    ための絶対アドレスを計算することにより行なわれる、
    方法。
  12. 【請求項12】 前記第1のタスクの前記第1のコンテ
    キストに、第3のコンテキストベースアドレスで始まる
    レジスタの前記第1のセットの第3のサブセットをその
    後、割当てるステップと、 第3のローカルレジスタをアドレス指定するステップと
    をさらに含み、前記第3のローカルレジスタは、レジス
    タの前記第1のセットの前記第3のサブセットにあり、
    前記ステップは、命令のアドレスフィールドから第4の
    相対アドレスを読出し、前記命令が前記第1のタスクの
    前記第1のコンテキストに関連することを決定し、かつ
    前記第4の相対アドレスおよび前記第3のコンテキスト
    ベースアドレスから前記第3のローカルレジスタのため
    の絶対アドレスを計算することにより行なわれる、請求
    項11に記載の方法。
  13. 【請求項13】 前記第1のタスクに、第3のベースア
    ドレスで始まるレジスタの第3のセットを再割当てする
    ステップをさらに含み、レジスタの前記第3のセット
    は、第3のグローバルベースアドレスで始まるグローバ
    ルレジスタの第3のセットと、第3のローカルベースア
    ドレスで始まるローカルレジスタの第3のセットとを含
    み、 レジスタの前記第3のセット内で、前記第1のタスク内
    の前記第1のコンテキストにレジスタの第3のサブセッ
    トを再割当てするステップをさらに含み、前記第3のサ
    ブセットは第3のコンテキストベースアドレスで始ま
    り、 レジスタの前記第3のセット内で、前記第1のタスク内
    の前記第2のコンテキストにレジスタの第4のサブセッ
    トを再割当てするステップをさらに含み、前記第4のサ
    ブセットは第4のコンテキストベースアドレスで始ま
    り、 前記第1のタスクに関連する命令のアドレスフィールド
    から第4の相対アドレスを読出し、前記命令アドレスフ
    ィールドが前記第1のタスクに割当てられたグローバル
    レジスタを特定することを決定し、かつ前記第3のグロ
    ーバルベースアドレスおよび前記第4の相対アドレスか
    ら前記第2のグローバルレジスタのための絶対アドレス
    を計算することにより、レジスタの前記第3のセットの
    前記グローバルレジスタの第2のものをアドレス指定す
    るステップと、 第3のローカルレジスタをアドレス指定するステップと
    をさらに含み、前記第3のローカルレジスタは、前記第
    3のレジスタサブセットにあり、前記ステップは、命令
    のアドレスフィールドから第5の相対アドレスを読出
    し、前記命令が前記第1のタスクの前記第1のコンテキ
    ストに関連することを決定し、かつ前記第3のコンテキ
    ストベースアドレスおよび前記第5の相対アドレスから
    前記第3のローカルレジスタのための絶対アドレスを計
    算することによりなされ、 第4のローカルレジスタをアドレス指定するステップを
    さらに含み、前記第4のローカルレジスタは、レジスタ
    の前記第4のサブセットにあり、前記ステップは、前記
    第1のタスクの前記第2のコンテキストに関連する命令
    のアドレスフィールドから第6の相対アドレスを読出
    し、前記命令が前記第1のタスクの前記第2のコンテキ
    ストに関連することを決定し、かつ前記第4のコンテキ
    ストベースアドレスおよび前記第6の相対アドレスから
    前記第4のローカルレジスタのための絶対アドレスを計
    算することによりなされる、請求項11に記載の方法。
  14. 【請求項14】 前記方法は、 ローカルレジスタの前記第2のセット内で、前記第2の
    タスク内の第1のコンテキストにレジスタの第3のサブ
    セットを割当てるステップをさらに含み、前記第3のサ
    ブセットは第3のコンテキストベースアドレスで始ま
    り、 グローバルレジスタの前記第2のセットの前記レジスタ
    の1つをアドレス指定するステップをさらに含み、前記
    アドレス指定ステップは、 命令アドレスフィールドから第4の相対アドレスを読出
    すステップと、 前記命令アドレスフィールドが前記第2のタスクに割当
    てられたグローバルレジスタを特定することを決定する
    ステップと、 前記第2のグローバルベースアドレスおよび前記第4の
    相対アドレスから前記第2のセットの前記グローバルレ
    ジスタのための絶対アドレスを計算するステップとを含
    み、前記方法は、 ローカルレジスタの前記第2のセットの前記ローカルレ
    ジスタの1つをアドレス指定するステップをさらに含
    み、前記アドレス指定ステップは、 命令アドレスフィールドから第5の相対アドレスを読出
    すステップと、 前記命令が前記第2のタスクの前記第1のコンテキスト
    に関連することを決定するステップと、 前記第3のコンテキストベースアドレスおよび前記第5
    の相対アドレスから前記第2のセットの前記ローカルレ
    ジスタのための絶対アドレスを計算するステップとを含
    む、請求項11に記載の方法。
  15. 【請求項15】 メモリと、プログラム命令に従ってオ
    ペランドの算術演算を行なうための演算論理ユニット
    (ALU)とを有するコンピュータにおけるレジスタフ
    ァイルであって、 前記メモリと前記ALUとに結合され、前記ALUによ
    り用いられるオペランドを一時的にストアする複数個の
    レジスタを含み、前記レジスタファイルの前記レジスタ
    の各々は、一意な絶対アドレスを有し、さらに前記レジ
    スタの第1のセットを指定するための手段を含み、前記
    第1のセットは、第1のベースアドレスで始まる絶対ア
    ドレスを有するレジスタを含み、レジスタの前記第1の
    セットは、第1のグローバルベースアドレスで始まるグ
    ローバルレジスタの第1のセットと、第1のローカルベ
    ースアドレスで始まるローカルレジスタの第1のセット
    とを含み、さらに前記レジスタの第2のセットを指定す
    るための手段を含み、前記第2のセットは、第2のベー
    スアドレスで始まる絶対アドレスを有するレジスタを含
    み、レジスタの前記第2のセットは、第2のグローバル
    ベースアドレスで始まるグローバルレジスタの第2のセ
    ットと、第2のローカルベースアドレスで始まるローカ
    ルレジスタの第2のセットとを含み、さらに前記レジス
    タファイルのレジスタをアドレス指定するための手段を
    含み、前記アドレス指定手段は、 命令から相対アドレスを読出すための手段と、 前記相対アドレスが前記第1のレジスタセットのレジス
    タを特定するか、または前記第2のレジスタセットのレ
    ジスタを特定するかを決定するための手段と、 前記相対アドレスがグローバルレジスタの前記第1のセ
    ットのレジスタを特定する場合には前記相対アドレスお
    よび前記第1のグローバルベースアドレスから、前記相
    対アドレスがローカルレジスタの前記第1のセットのレ
    ジスタを特定する場合には前記相対アドレスおよび前記
    第1のローカルベースアドレスから、前記相対アドレス
    がグローバルレジスタの前記第2のセットのレジスタを
    特定する場合には前記相対アドレスおよび前記第2のグ
    ローバルベースアドレスから、または前記相対アドレス
    がローカルレジスタの前記第2のセットのレジスタを特
    定する場合には前記相対アドレスおよび前記第2のロー
    カルベースアドレスから、アドレス指定されるべきレジ
    スタの絶対アドレスを計算するための手段とを含む、レ
    ジスタファイル。
  16. 【請求項16】 前記相対アドレスがレジスタの前記第
    1のセットのレジスタを参照するか、またはレジスタの
    前記第2のセットのレジスタを参照するかを決定するた
    めの前記手段は、前記ALUが第1のタスクで動作して
    いるか、または第2のタスクで動作しているかを判断す
    るための手段を含む、請求項15に記載のレジスタファ
    イル。
  17. 【請求項17】 レジスタの前記第1のセットは、第1
    のグローバルベースアドレスで始まるグローバルレジス
    タの第1のセットと、第1のローカルベースアドレスで
    始まるローカルレジスタの第1のセットとを含み、 レジスタの前記第2のセットは、第2のグローバルベー
    スアドレスで始まるグローバルレジスタの第2のセット
    と、第2のローカルベースアドレスで始まるローカルレ
    ジスタの第2のセットとを含む、請求項16に記載のレ
    ジスタファイル。
  18. 【請求項18】 前記指定手段はさらに、ローカルレジ
    スタの前記第1のセット内に、第1のローカルサブセッ
    トベースアドレスで始まる第1のローカルサブセット
    と、第2のローカルサブセットベースアドレスで始まる
    レジスタの第2のローカルサブセットとを指定するため
    の手段を含み、 前記ALUが前記第1のタスクで動作しているか、また
    は前記第2のタスクで動作しているかを判断するための
    前記手段はさらに、前記ALUが前記第1のタスクで動
    作している場合、前記ALUが第1のコンテキスト内で
    動作しているかまたは第2のコンテキスト内で動作して
    いるかを判断する、請求項17に記載のレジスタファイ
    ル。
JP7201003A 1994-08-08 1995-08-07 レジスタファイル、およびレジスタファイルを管理する方法 Withdrawn JPH0863361A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/287,017 US5655132A (en) 1994-08-08 1994-08-08 Register file with multi-tasking support
US08/287017 1994-08-08

Publications (1)

Publication Number Publication Date
JPH0863361A true JPH0863361A (ja) 1996-03-08

Family

ID=23101116

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7201003A Withdrawn JPH0863361A (ja) 1994-08-08 1995-08-07 レジスタファイル、およびレジスタファイルを管理する方法

Country Status (4)

Country Link
US (1) US5655132A (ja)
EP (1) EP0696772B1 (ja)
JP (1) JPH0863361A (ja)
DE (1) DE69525294T2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100766732B1 (ko) * 2000-01-07 2007-10-15 프리스케일 세미컨덕터, 인크. 고속의 낮은 오버헤드의 콘텍스트 전환을 실행하는 디바이스 및 방법
JP2011522325A (ja) * 2008-05-30 2011-07-28 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド ローカル及びグローバルのデータ共有
WO2019039113A1 (ja) * 2017-08-24 2019-02-28 ソニーセミコンダクタソリューションズ株式会社 プロセッサおよび情報処理システム

Families Citing this family (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2820048B2 (ja) * 1995-01-18 1998-11-05 日本電気株式会社 画像処理システムとその記憶装置およびそのアクセス方法
US5896528A (en) * 1995-03-03 1999-04-20 Fujitsu Limited Superscalar processor with multiple register windows and speculative return address generation
KR0179840B1 (ko) * 1995-09-22 1999-05-15 문정환 레지스터 제어장치
JP3630804B2 (ja) * 1995-11-30 2005-03-23 三洋電機株式会社 データ処理装置
US7203415B2 (en) * 1996-08-12 2007-04-10 Sony Corporation Recording, reproducing, and recording/reproducing apparatuses for recording input data in a recording medium capable of non-linear access and methods therefor
GB2317467B (en) * 1996-09-23 2000-11-01 Advanced Risc Mach Ltd Input operand control in data processing systems
TW343318B (en) * 1996-09-23 1998-10-21 Advanced Risc Mach Ltd Register addressing in a data processing apparatus
GB2317464A (en) * 1996-09-23 1998-03-25 Advanced Risc Mach Ltd Register addressing in a data processing apparatus
GB2317465B (en) * 1996-09-23 2000-11-15 Advanced Risc Mach Ltd Data processing apparatus registers.
GB2317469B (en) * 1996-09-23 2001-02-21 Advanced Risc Mach Ltd Data processing system register control
US5784602A (en) * 1996-10-08 1998-07-21 Advanced Risc Machines Limited Method and apparatus for digital signal processing for integrated circuit architecture
US5870581A (en) * 1996-12-20 1999-02-09 Oak Technology, Inc. Method and apparatus for performing concurrent write operations to a single-write-input register file and an accumulator register
US6233599B1 (en) * 1997-07-10 2001-05-15 International Business Machines Corporation Apparatus and method for retrofitting multi-threaded operations on a computer by partitioning and overlapping registers
US6128641A (en) * 1997-09-12 2000-10-03 Siemens Aktiengesellschaft Data processing unit with hardware assisted context switching capability
JPH1196002A (ja) 1997-09-18 1999-04-09 Sanyo Electric Co Ltd データ処理装置
US5903919A (en) * 1997-10-07 1999-05-11 Motorola, Inc. Method and apparatus for selecting a register bank
US6188411B1 (en) * 1998-07-02 2001-02-13 Neomagic Corp. Closed-loop reading of index registers using wide read and narrow write for multi-threaded system
SE9803632D0 (sv) * 1998-10-22 1998-10-22 Ericsson Telefon Ab L M A processor
US6282633B1 (en) 1998-11-13 2001-08-28 Tensilica, Inc. High data density RISC processor
US7114056B2 (en) * 1998-12-03 2006-09-26 Sun Microsystems, Inc. Local and global register partitioning in a VLIW processor
US6668285B1 (en) 1999-05-12 2003-12-23 Koninklijke Philips Electronics N.V. Object oriented processing with dedicated pointer memories
US6883171B1 (en) * 1999-06-02 2005-04-19 Microsoft Corporation Dynamic address windowing on a PCI bus
WO2001016702A1 (en) * 1999-09-01 2001-03-08 Intel Corporation Register set used in multithreaded parallel processor architecture
EP1236092A4 (en) * 1999-09-01 2006-07-26 Intel Corp BRANCH COMMAND FOR A PROCESSOR
EP1168158B1 (en) * 2000-06-12 2007-10-10 Broadcom Corporation Context switch architecture and system
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US7032104B1 (en) * 2000-12-15 2006-04-18 Lsi Logic Corporation Configurable hardware register stack for CPU architectures
CN1591406A (zh) * 2001-11-09 2005-03-09 无锡永中科技有限公司 集成多应用数据处理系统
US7434222B2 (en) * 2001-12-20 2008-10-07 Infineon Technologies Ag Task context switching RTOS
GB2419005B (en) * 2002-04-22 2006-06-07 Micron Technology Inc Providing a register file memory with local addressing in a SIMD parallel processor
US7523455B2 (en) * 2002-05-03 2009-04-21 Hewlett-Packard Development Company, L.P. Method and system for application managed context switching
US20040133762A1 (en) * 2003-01-06 2004-07-08 Rui-Fu Chao Linear access window
ITRM20030354A1 (it) * 2003-07-17 2005-01-18 Micron Technology Inc Unita' di controllo per dispositivo di memoria.
WO2005020111A2 (en) * 2003-08-21 2005-03-03 Koninklijke Philips Electronics, N.V. Hardware register access via task tag id
US7181557B1 (en) * 2003-09-15 2007-02-20 National Semiconductor Corporation Single wire bus for connecting devices and methods of operating the same
US7606955B1 (en) 2003-09-15 2009-10-20 National Semiconductor Corporation Single wire bus for connecting devices and methods of operating the same
US7437536B2 (en) * 2004-05-03 2008-10-14 Sony Computer Entertainment Inc. Systems and methods for task migration
US8711155B2 (en) * 2004-05-14 2014-04-29 Nvidia Corporation Early kill removal graphics processing system and method
US8736628B1 (en) 2004-05-14 2014-05-27 Nvidia Corporation Single thread graphics processing system and method
US8687010B1 (en) 2004-05-14 2014-04-01 Nvidia Corporation Arbitrary size texture palettes for use in graphics systems
US8860722B2 (en) * 2004-05-14 2014-10-14 Nvidia Corporation Early Z scoreboard tracking system and method
US8743142B1 (en) 2004-05-14 2014-06-03 Nvidia Corporation Unified data fetch graphics processing system and method
US8736620B2 (en) * 2004-05-14 2014-05-27 Nvidia Corporation Kill bit graphics processing system and method
US20070150697A1 (en) * 2005-05-10 2007-06-28 Telairity Semiconductor, Inc. Vector processor with multi-pipe vector block matching
US20060277396A1 (en) * 2005-06-06 2006-12-07 Renno Erik K Memory operations in microprocessors with multiple execution modes and register files
US7934092B2 (en) 2006-07-10 2011-04-26 Silverbrook Research Pty Ltd Electronic device having improved security
JP2009543234A (ja) * 2006-07-10 2009-12-03 シルバーブルック リサーチ ピーティワイ リミテッド レジスタウィンドウアーキテクチャ内においてユーザコードから機密データを保護するためのシステム
US7681000B2 (en) 2006-07-10 2010-03-16 Silverbrook Research Pty Ltd System for protecting sensitive data from user code in register window architecture
US8537168B1 (en) 2006-11-02 2013-09-17 Nvidia Corporation Method and system for deferred coverage mask generation in a raster stage
US8521800B1 (en) 2007-08-15 2013-08-27 Nvidia Corporation Interconnected arithmetic logic units
US20090046105A1 (en) * 2007-08-15 2009-02-19 Bergland Tyson J Conditional execute bit in a graphics processor unit pipeline
US8599208B2 (en) * 2007-08-15 2013-12-03 Nvidia Corporation Shared readable and writeable global values in a graphics processor unit pipeline
US8314803B2 (en) 2007-08-15 2012-11-20 Nvidia Corporation Buffering deserialized pixel data in a graphics processor unit pipeline
US8775777B2 (en) * 2007-08-15 2014-07-08 Nvidia Corporation Techniques for sourcing immediate values from a VLIW
US9183607B1 (en) 2007-08-15 2015-11-10 Nvidia Corporation Scoreboard cache coherence in a graphics pipeline
US8736624B1 (en) 2007-08-15 2014-05-27 Nvidia Corporation Conditional execution flag in graphics applications
US20110047355A1 (en) * 2009-08-24 2011-02-24 International Business Machines Corporation Offset Based Register Address Indexing
KR101697937B1 (ko) * 2010-01-08 2017-02-01 삼성전자주식회사 멀티프로세서 시스템에서 동적 태스크 마이그레이션을 위한 방법 및 시스템
KR101662030B1 (ko) * 2010-01-14 2016-10-14 삼성전자주식회사 태스크 이동 시스템 및 그 방법
US8549262B2 (en) * 2010-05-12 2013-10-01 International Business Machines Corporation Instruction operand addressing using register address sequence detection
US9411595B2 (en) 2012-05-31 2016-08-09 Nvidia Corporation Multi-threaded transactional memory coherence
US10078518B2 (en) 2012-11-01 2018-09-18 International Business Machines Corporation Intelligent context management
US10102003B2 (en) 2012-11-01 2018-10-16 International Business Machines Corporation Intelligent context management
US9824009B2 (en) 2012-12-21 2017-11-21 Nvidia Corporation Information coherency maintenance systems and methods
US10102142B2 (en) 2012-12-26 2018-10-16 Nvidia Corporation Virtual address based memory reordering
US9317251B2 (en) 2012-12-31 2016-04-19 Nvidia Corporation Efficient correction of normalizer shift amount errors in fused multiply add operations
US9569385B2 (en) 2013-09-09 2017-02-14 Nvidia Corporation Memory transaction ordering
GB2580327B (en) * 2018-12-31 2021-04-28 Graphcore Ltd Register files in a multi-threaded processor

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5128728A (ja) * 1974-09-04 1976-03-11 Hitachi Ltd
US4272828A (en) * 1979-01-03 1981-06-09 Honeywell Information Systems Inc. Arithmetic logic apparatus for a data processing system
US4809156A (en) * 1984-03-19 1989-02-28 Trw Inc. Address generator circuit
US4805097A (en) * 1984-08-03 1989-02-14 Motorola Computer Systems, Inc. Memory management unit with dynamic page allocation
US4777588A (en) * 1985-08-30 1988-10-11 Advanced Micro Devices, Inc. General-purpose register file optimized for intraprocedural register allocation, procedure calls, and multitasking performance
JP2545789B2 (ja) * 1986-04-14 1996-10-23 株式会社日立製作所 情報処理装置
US4992934A (en) * 1986-12-15 1991-02-12 United Technologies Corporation Reduced instruction set computing apparatus and methods
JPS63220342A (ja) * 1987-03-10 1988-09-13 Fujitsu Ltd ブロツクアクセス方式
DE3726192A1 (de) * 1987-08-06 1989-02-16 Otto Mueller Stacksteuerung
JPH0192851A (ja) * 1987-10-02 1989-04-12 Hitachi Ltd アドレス空間切替装置
US4980819A (en) * 1988-12-19 1990-12-25 Bull Hn Information Systems Inc. Mechanism for automatically updating multiple unit register file memories in successive cycles for a pipelined processing system
US5293637A (en) * 1989-10-13 1994-03-08 Texas Instruments Distribution of global variables in synchronous vector processor
US5333288A (en) * 1990-02-23 1994-07-26 Nec Corporation Effective address pre-calculation type pipelined microprocessor
CA2045705A1 (en) * 1990-06-29 1991-12-30 Richard Lee Sites In-register data manipulation in reduced instruction set processor
US5357617A (en) * 1991-11-22 1994-10-18 International Business Machines Corporation Method and apparatus for substantially concurrent multiple instruction thread processing by a single pipeline processor

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100766732B1 (ko) * 2000-01-07 2007-10-15 프리스케일 세미컨덕터, 인크. 고속의 낮은 오버헤드의 콘텍스트 전환을 실행하는 디바이스 및 방법
JP2011522325A (ja) * 2008-05-30 2011-07-28 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド ローカル及びグローバルのデータ共有
US9619428B2 (en) 2008-05-30 2017-04-11 Advanced Micro Devices, Inc. SIMD processing unit with local data share and access to a global data share of a GPU
US10140123B2 (en) 2008-05-30 2018-11-27 Advanced Micro Devices, Inc. SIMD processing lanes storing input pixel operand data in local register file for thread execution of image processing operations
WO2019039113A1 (ja) * 2017-08-24 2019-02-28 ソニーセミコンダクタソリューションズ株式会社 プロセッサおよび情報処理システム
JPWO2019039113A1 (ja) * 2017-08-24 2020-08-06 ソニーセミコンダクタソリューションズ株式会社 プロセッサおよび情報処理システム
US11029956B2 (en) 2017-08-24 2021-06-08 Sony Semiconductor Solutions Corporation Processor and information processing system for instructions that designate a circular buffer as an operand

Also Published As

Publication number Publication date
DE69525294D1 (de) 2002-03-21
EP0696772A3 (en) 1996-11-27
US5655132A (en) 1997-08-05
EP0696772A2 (en) 1996-02-14
DE69525294T2 (de) 2002-09-19
EP0696772B1 (en) 2002-02-06

Similar Documents

Publication Publication Date Title
JPH0863361A (ja) レジスタファイル、およびレジスタファイルを管理する方法
JP2545789B2 (ja) 情報処理装置
US5872985A (en) Switching multi-context processor and method overcoming pipeline vacancies
US5513366A (en) Method and system for dynamically reconfiguring a register file in a vector processor
US5870576A (en) Method and apparatus for storing and expanding variable-length program instructions upon detection of a miss condition within an instruction cache containing pointers to compressed instructions for wide instruction word processor architectures
US5537606A (en) Scalar pipeline replication for parallel vector element processing
EP1047989B1 (en) Digital signal processor having data alignment buffer for performing unaligned data accesses
KR20010030593A (ko) 디지털 신호 프로세싱 능력을 가진 데이터 프로세싱 유닛
EP0114304A1 (en) Vector processing hardware assist and method
EP0676691A2 (en) Apparatus for register saving and restoring in a digital computer
US4771380A (en) Virtual vector registers for vector processing system
US5713038A (en) Microprocessor having register file
JPH06176053A (ja) デ−タ処理装置
US20040158691A1 (en) Loop handling for single instruction multiple datapath processor architectures
JPS6058490B2 (ja) 命令ブランチ機構
JPH0612386A (ja) プロセス内のスレッドを同期するための方法およびシステム
US5438669A (en) Data processor with improved loop handling utilizing improved register allocation
JP3619939B2 (ja) 中央処理装置
EP0772819B1 (en) Apparatus and method for efficiently determining addresses for misaligned data stored in memory
JPS59128670A (ja) ベクトル処理装置
EP0227900B1 (en) Three address instruction data processing apparatus
US5729723A (en) Data processing unit
US7100029B2 (en) Performing repeat string operations
JPH01205228A (ja) 命令バツフアシステム
US5832533A (en) Method and system for addressing registers in a data processing unit in an indexed addressing mode

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20021105