JP2005322240A - インデックス付きレジスタアクセス用の方法および装置 - Google Patents

インデックス付きレジスタアクセス用の方法および装置 Download PDF

Info

Publication number
JP2005322240A
JP2005322240A JP2005134052A JP2005134052A JP2005322240A JP 2005322240 A JP2005322240 A JP 2005322240A JP 2005134052 A JP2005134052 A JP 2005134052A JP 2005134052 A JP2005134052 A JP 2005134052A JP 2005322240 A JP2005322240 A JP 2005322240A
Authority
JP
Japan
Prior art keywords
calculated value
hardware
register
data
hardware register
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.)
Pending
Application number
JP2005134052A
Other languages
English (en)
Inventor
Tatsuya Iwamoto
達也 岩本
Masahiro Yasue
正宏 安江
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.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Computer Entertainment Inc
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 Sony Computer Entertainment Inc filed Critical Sony Computer Entertainment Inc
Publication of JP2005322240A publication Critical patent/JP2005322240A/ja
Pending legal-status Critical Current

Links

Images

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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/30134Register stacks; shift registers
    • 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/35Indirect addressing
    • 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/355Indexed addressing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract


【課題】 レジスタ内データ処理を改善できる方法および装置を提供する。
【解決手段】 複数のレジスタ106のうちの1つにロードされるレジスタインデックスの計算を含む処理シーケンスの実行を可能にする方法および装置が提供される。この方法及び装置では、そのインデックスを利用して複数のレジスタ106のうちの別の1つを識別し、インデックス付きレジスタからデータにアクセスまたはインデックス付きレジスタにデータをコピーし、さらに他のレジスタまたはメモリ位置との間でデータをコピーする。
【選択図】図3

Description

本発明は、レジスタをローカルメモリとして利用してデータ操作を行うことができ、かつ、データの保存またはランダムアクセスメモリからのロードを回避できるように、インデックスした形で複数のレジスタを利用するための方法および装置に関する。
スーパースカラーRISCプロセッサの処理能力というのは、ひとつにはこれらのプロセッサが(いくつかの命令を同時に実行可能な)機能ユニットを利用しているがゆえに非常に重要なのであるが、この処理のアプローチすなわち、たとえばパイプラインインターロックには、いくつか問題がある。パイプラインインターロックでは、先行する命令の実行に割り込みがかかることから、後にくる命令のフェッチに遅延が生じるのである。
従来のRISCプロセッサにおけるインターロック遅延には基本的に2つのタイプがある。ひとつ目に類するインターロック遅延は、命令待ち時間を左右するデータ依存性の遅延である。この場合、命令が実行されるのは、すべてのソースデータがこれより前の命令によって評価されてからになる。ふたつ目に類するインターロック遅延は予約遅延であるが、これは、常に即時利用可能とは限らない共有資源(データバス、内部レジスタ、機能ユニットなど)が実行中の2つの命令で必要になる場合があることを意味する。
パイプラインインターロック遅延の影響を最小限にするための従来のアプローチのひとつに、階層キャッシュメモリなどの高速ランダムアクセスメモリ(RAM)を利用することがある。事実、レベル1(L1)のキャッシュメモリでデータの保存またはロードに必要なのは(1GHz程度のクロック周波数で動作するプロセッサに接続した場合)、約6〜10サイクル程度である。メモリアクセスの待ち時間を減らすことで、仮にパイプラインインターロック遅延があったとしても、全体としての処理速度にとっては良い結果になるのが普通である。
しかしながら、階層キャッシュメモリを使ってパイプラインインターロック遅延の悪影響を相殺することの有効性には限度がある。事実、階層キャッシュメモリであっても、約6〜10クロックサイクルの待ち時間が(本来であれば待ち時間はもっと短い方が望ましい場合に)生じることがある。
RAMアクセス、階層キャッシュアクセスまたは他のデータ保存技術の待ち時間を回避するために、多数のハードウェアレジスタをスタックとして利用してデータを操作しようという動きがある。ハードウェアレジスタは一般に待ち時間が1クロックサイクル程度であるため、これよりも待ち時間の長いRAM、キャッシュまたは他のローカルメモリを使用することに代わる、魅力的な選択肢となる。
相当数のハードウェアレジスタをデータ操作用の代理メモリとして利用できるのはその通りであるが、従来の命令セットのアーキテクチャはレジスタ内でのデータ操作に合わせて最適化されたものではない。たとえば、ひとつのハードウェアレジスタから別のハードウェアレジスタにデータを移動するにあたって、従来の命令セットのなかには、メモリストアやメモリロードなどのメモリアクセスを行うことを前提にしているものがある。一例として、ひとつのレジスタすなわちR1から別のレジスタすなわちR2にデータを転送する際に従来の命令セットが持つRAMへの依存性を、以下のオペレーションコードに示す。
STORE R1, address1 ;R1のデータをRAMのaddress1に格納
LOAD address1, R2 ;RAMのaddress1からR2にデータをロード
しかしながら、RAMの部分でかなりの待ち時間があるため、ハードウェアレジスタをデータスタックとして利用してどんな利点があったところで、すべて帳消しになりかねない。この問題は、実行中のソフトウェアプログラムで相当多数のテーブル参照および/またはブランチ命令が必要な場合には、さらに深刻なものとなる。
既存の命令セットのなかには、オペランドとして若干のレジスタへのアクセスを許可するものがあるが、これには該当するレジスタにインデックスを付ける必要がある点に注意されたい。残念なことに、このようなアクセスはいずれも、そのソフトウェアコードが書かれた時点で定義しなければならなかったものである。こうした既存の命令セットを使って、プログラムの実行中にインデックス値を計算してリアルタイムにインデックスを付けることはできない。よって、これらのシステムでメモリアクセスに頼ることには、依然として問題が残る。既存の命令セットには他に、非インデックス付きレジスタ間でのデータの移動に対応しているものもあるが、この場合もプログラムを書く時点でレジスタの定義をしなければならず、実行時に定義を行うことはできない。
したがって、従来技術においては、メモリアクセスを大幅に減らし、これに付随する待ち時間を回避できるように、ひとつのレジスタからもうひとつのレジスタへのデータの移動、ひとつのレジスタからもうひとつのレジスタへのデータのコピーなどのレジスタ内データ処理を改善できる方法および装置が求められている。
本発明の1以上の形態によれば、方法が、計算を行って算出値を取得し、この算出値を、各々が自己に関連する識別番号を有する、処理システムの複数のハードウェアレジスタのうちの少なくとも1つにロードし、上記算出値を、識別番号のうちのひとつとこれに関連するハードウェアレジスタに対するインデックスとして使用し、上記算出値によるインデックスが付けられたハードウェアレジスタからデータにアクセスするステップまたはアクションを含む。また、この方法は、上記ハードウェアレジスタのうちの別のひとつにデータをコピーすることを含むものであってもよい。
好ましくは、上記ハードウェアレジスタのうちの別のひとつにデータをコピーするステップは、処理システムのランダムアクセスメモリへのアクセスを必要とすることなく行われる。一例として、これらのステップを、処理システムのランダムアクセスメモリへのアクセスを必要としないテーブルルックアッププロシージャに利用することができる。
この方法は、少なくとも1つのハードウェアレジスタからの算出値にアクセスし、この算出値をインデックス付きハードウェアレジスタへのポインタとして利用することをさらに含むものであってもよい。
これらのステップは、ソースハードウェアレジスタからデスティネーションハードウェアレジスタへのデータの動きを定義しているコンピュータ命令に応答して実行されるものであってもよい。たとえば、ソースハードウェアレジスタは算出値によるインデックスが付けられたハードウェアレジスタであればよく、デスティネーションハードウェアレジスタは他のハードウェアレジスタである。さらに、このコンピュータ命令は、以下のオペレーションコードを特徴とするものとすることができる。
mov *Rm, Rp
ここで、Rmは算出値が所在するハードウェアレジスタであり、Rpはデスティネーションレジスタである。
本発明の他の1以上の形態によれば、記録媒体に、プロセッサと各々が自己に関連する識別番号を有する複数のハードウェアレジスタとに複数のステップを実行させるように機能する少なくとも1つのソフトウェア命令を保持し得る。このステップは、計算を行って算出値を取得し、この算出値を、複数のハードウェアレジスタのうちの少なくとも1つにロードし、上記の算出値を、識別番号のうちのひとつとこれに関連するハードウェアレジスタに対するインデックスとして使用し、上記の算出値によるインデックスが付けられたハードウェアレジスタからデータにアクセスすることを含むものであってもよい。
本発明のさらに別の1以上の形態によれば、処理システムが、処理システムのプロセッサと各々が自己に関連する識別番号を有する複数のハードウェアレジスタとに複数のステップを実行させるように機能する少なくとも1つのソフトウェア命令を保持する記録媒体を含むものであってもよい。これらのステップは、計算を行って算出値を取得し、この算出値を、複数のハードウェアレジスタのうちの少なくとも1つにロードし、上記の算出値を、識別番号のうちのひとつとこれに関連するハードウェアレジスタに対するインデックスとして使用し、上記の算出値によるインデックスが付けられたハードウェアレジスタからデータにアクセスすることを含むものであってもよい。また、これらのステップは、上記ハードウェアレジスタのうちの別のひとつにデータをコピーすることを含むものであってもよい。
本発明のさらに別の1以上の形態によれば、方法が、計算を行って算出値を取得し、この算出値を、各々が自己に関連する識別番号を有する、処理システムの複数のハードウェアレジスタのうちの少なくとも1つにロードし、上記の算出値を、識別番号のうちのひとつとこれに関連するハードウェアレジスタに対するインデックスとして使用し、上記ハードウェアレジスタのうちの別のひとつからデータにアクセスすることを含み得る。また、この方法は、算出値によるインデックスが付けられたハードウェアレジスタにデータをコピーすることを含むものであってもよい。
本発明のさらに別の1以上の形態によれば、記録媒体に、プロセッサと各々が自己に関連する識別番号を有する複数のハードウェアレジスタとに複数のステップを実行させるように機能する少なくとも1つのソフトウェア命令を保持し得る。これらのステップは、計算を行って算出値を取得し、この算出値を、複数のハードウェアレジスタのうちの少なくとも1つにロードし、上記の算出値を、識別番号のうちのひとつとこれに関連するハードウェアレジスタに対するインデックスとして使用し、上記ハードウェアレジスタのうちの別のひとつからデータにアクセスすることを含むものであってもよい。また、これらのステップは、算出値によるインデックスが付けられたハードウェアレジスタにデータをコピーすることを含むものであってもよい。
本発明のさらに別の1以上の形態によれば、処理システムが、処理システムのプロセッサと各々が自己に関連する識別番号を有する複数のハードウェアレジスタとに複数のステップを実行させるように機能する少なくとも1つのソフトウェア命令を保持する記録媒体を含む。これらのステップは、計算を行って算出値を取得し、この算出値を、複数のハードウェアレジスタのうちの少なくとも1つにロードし、上記の算出値を、識別番号のうちのひとつとこれに関連するハードウェアレジスタに対するインデックスとして使用し、上記ハードウェアレジスタのうちの別のひとつからデータにアクセスすることを含むものであってもよい。また、これらのステップは、算出値によるインデックスが付けられたハードウェアレジスタにデータをコピーすることを含むものであってもよい。
本発明のさらに別の1以上の形態によれば、方法が、計算を行って算出値を取得し、この算出値を、各々が自己に関連する識別番号を有する、処理システムの複数のハードウェアレジスタのうちの少なくとも1つにロードし、上記の算出値を、識別番号のうちのひとつとこれに関連するハードウェアレジスタに対するインデックスとして使用し、(i)上記の算出値によるインデックスが付けられたハードウェアレジスタからデータにアクセスし、このデータをランダムアクセスメモリ(RAM)の指定されたアドレスにコピーすることにより、プロセッサに接続されたRAMにデータを格納することと、(ii)RAMの指定されたアドレスからデータにアクセスし、算出値によるインデックスが付けられたハードウェアレジスタにデータをコピーすることにより、RAMからデータをロードすることのうちの少なくとも1つを行うことを含む。
本発明のさらに別の1以上の形態によれば、記録媒体に、プロセッサと各々が自己に関連する識別番号を有する複数のハードウェアレジスタとに複数のステップを実行させるように機能する少なくとも1つのソフトウェア命令を保持する。これらのステップは、計算を行って算出値を取得し、この算出値を、ハードウェアレジスタのうちの少なくとも1つにロードし、上記の算出値を、識別番号のうちのひとつとこれに関連するハードウェアレジスタに対するインデックスとして使用し、(i)上記の算出値によるインデックスが付けられたハードウェアレジスタからデータにアクセスし、このデータをランダムアクセスメモリ(RAM)の指定されたアドレスにコピーすることにより、プロセッサに接続されたRAMにデータを格納することと、(ii)RAMの指定されたアドレスからデータにアクセスし、算出値によるインデックスが付けられたハードウェアレジスタにデータをコピーすることにより、RAMからデータをロードすることのうちの少なくとも1つを行うことを含むものであってもよい。
本発明のさらに別の1以上の形態によれば、処理システムが、処理システムのプロセッサと各々が自己に関連する識別番号を有する複数のハードウェアレジスタとに複数のステップを実行させるように機能する少なくとも1つのソフトウェア命令を保持する記録媒体を含む。これらのステップは、計算を行って算出値を取得し、この算出値を、ハードウェアレジスタのうちの少なくとも1つにロードし、上記の算出値を、識別番号のうちのひとつとこれに関連するハードウェアレジスタに対するインデックスとして使用し、(i)上記の算出値によるインデックスが付けられたハードウェアレジスタからデータにアクセスし、このデータをランダムアクセスメモリ(RAM)の指定されたアドレスにコピーすることにより、プロセッサに接続されたRAMにデータを格納することと、(ii)RAMの指定されたアドレスからデータにアクセスし、算出値によるインデックスが付けられたハードウェアレジスタにデータをコピーすることにより、RAMからデータをロードすることのうちの少なくとも1つを行うことを含むものであってもよい。
以下、実例を示す目的で、現時点で好ましい形態を図面に示してはあるが、しかしながら、本発明は図示した厳密な構成や手段に限定されるものではない点は理解されたい。
図面を参照すると、本発明の1以上の形態による処理システム100のブロック図が図1に示されている。なお、図面では、同様の参照符号により同様の要素が示されている。この処理システム100は、好ましくは、プロセッサ102と、RAM104と、複数のレジスタ106(個々にR0、R1、R2、...Rsを付す)とを含む。プロセッサ102、RAM104およびレジスタ106は、BUS108によって作用的に相互接続されている。一般的な意味では、処理システム100は、複数のレジスタ106のうちの1以上が、1以上の他のレジスタ106に対するそれぞれのインデックスを含む、インデックス付けの手法を利用して、レジスタ106間でデータを移動およびコピーすることができる。
本発明の1以上の形態によれば、処理システム100は新規な命令セットを利用して動作することができ、この命令セットには、それぞれのレジスタに関連したインデックスを用いて複数のレジスタ106のうちの1以上にアクセスできる1以上のコンピュータ命令を含む。特に、1以上の命令を含むコンピュータプログラムの実行中(すなわち、プログラムの実行時)に値が計算される。この算出値は複数のレジスタ106のうちの1つに入力される。その後、複数のレジスタのうちの1つに格納された値をインデックスとして利用して、複数のレジスタ106のうちのデータが格納されている別のレジスタを指し示す。続いて、以後の処理ステップに従ってデータがアクセスされ、使用される。
本発明のさらに別の形態によれば、実行時インデックス付きレジスタアクセスについては、レジスタアクセスが企図され、利点が得られるであろう命令いくつに適用しても構わない。たとえば、move命令、store命令、load命令などにレジスタアクセスを関与させることができる。本発明のインデックス付きレジスタアクセスの特徴を採用できる命令数およびシナリオ数は、すべてを列挙するのが不可能なほど大きくなり得る。よって、簡単明瞭にするために、本発明のインデックス付きレジスタアクセスの形態を利用できる、move命令、store命令およびload命令という命令の4つの例について、詳細に説明することにする。
まず、move命令の例についてみると、インデックス付きレジスタアクセスを利用する命令は以下のオペレーションコードを特徴とするものであればよい。
mov *Rm, Rp
命令movは、好ましくはRAM104へのアクセスを必要としない、ひとつのレジスタ106と別のレジスタ106との間でのデータの移動を示す。オペランド*Rmは、複数のレジスタ106のうちのもうひとつへのインデックスが所在する複数のハードウェアレジスタ106のうちの1つである。オペランドRpは、複数のハードウェアレジスタ106の中から選ばれたデスティネーションレジスタである。RMレジスタに関連したアスタリスクは、インデックス付きレジスタアクセスが企図されていることを示すためのものである。しかしながら、命令セットでは、この指定を命令セットのビットフィールドにおける定義によって行うと好ましい。従来のレジスタアクセス命令(命令内にインデックスが固定である)と区別するのに別のビットが必要になることもある。
処理システム100がmov *Rm,Rp命令を実行する際に行われる基本的な動作シーケンスには、(i)ハードウェアレジスタRmに保持された値を、複数ある他のハードウェアレジスタ106のうちの1つへのインデックスとして利用し、(ii)その値でインデックスが付けられたハードウェアレジスタ106からデータにアクセスし、(iii)インデックス付きハードウェアレジスタ106からデスティネーションハードウェアレジスタRpにデータをコピーすることが含まれる。
以下、mov *Rm,Rp命令の結果を達成するために、好ましくは処理システム100によって行われるイベントのシーケンスに関してのさらに詳細について、図2〜図4を参照して説明する。図2は、好ましくはmov *Rm,Rp命令に関連して行われるプロセスステップのうちのいくつかを示す流れ図である。特に、アクション110では、インデックスnの値が取得される。本発明の好適な形態によれば、インデックス値nは、全体としてのソフトウェアプログラムに関連してプロセッサ102が行う1以上の計算によって取得できる。本発明の好都合な形態によれば、この計算は、ソフトウェアプログラムの実行中に行うことができるものである。インデックス値nを取得したら、これをレジスタRmにロードする(アクション112)。他のアクションと併用できるこれらのアクションは、アクション114でのmov *Rm,Rp命令の実行が容易になるような形で複数のレジスタ106をセットアップする。
mov *Rm,Rp命令に関連して本発明のさまざまな形態をさらに十分かつ完全に説明するために、図2のプロセスステップの部分ブロック図および部分流れ図である図3ならびに、図4の別のプロセスステップをさらに参照する。図3は、インデックス付きレジスタから固定レジスタへのデータ転送(または移動)の詳細を示すものである。この例では、レジスタRmが複数のレジスタ106のうちのレジスタR2であり、レジスタRp(デスティネーションレジスタ)がレジスタR20であると仮定する。これらのレジスタの選択と指定については、周知のレジスタ管理手法のうちのいずれを利用して達成してもよいことに注意されたい。
110Aで示す枠は、図2のアクション110に対応し、ここでインデックスnの値が取得される。この例では、いくつかの任意関数f(i,j,k)=nを利用してインデックス値nを計算する。この例では、関数計算の結果はn=7である。アクション112(図2)について上述したように、この算出値nは、この例ではレジスタR2であるレジスタRmにロードされる。
mov *Rm,Rp命令の実行(アクション114)開始後、レジスタR2内の値nにアクセス(アクション116、図2)し、この値をもうひとつのレジスタRnへのインデックスとして利用する(アクション118、図4)。図3に示すように、値nは7であるため、インデックス付きレジスタRnは、複数のレジスタ106のうちのレジスタR7である。その後、インデックス付きレジスタR7内に保持されたデータにアクセス(アクション120、図4)し、これをデスティネーションレジスタRpにコピーする(アクション122、図4)。図3に示すように、この例では、デスティネーションレジスタRpはレジスタR20である。
よって、本発明のこの実施形態によれば、レジスタR7に保持されたデータは、レジスタR2に保持されたインデックス値を利用したインデックス付きレジスタアクセスによってレジスタR20に移動された。好都合なことに、このイベントシーケンスは、RAM104へのアクセスを必要とすることなく行われたため、データ転送を行うにあたっての全体としての待ち時間は、今まで考えられていたよりもずっと短くなる。
mov *Rm,Rp命令によって達成されるデータのレジスタ内転送は、RAM104への1回以上のアクセスを必要とするのではなく、もっぱら複数のレジスタ106を利用して行われる全体としてのテーブル参照プロシージャおよび/または命令ブランチルーチンに容易に適用できるものであることは、当業者であれば分かるであろう。
本発明の他の1以上の形態によれば、新規な命令セットに、以下のオペレーションコードを特徴とし得るコンピュータ命令を追加するか、あるいは従来の命令を更新することで含むことができる。
mov Rp, *Rm
このmov命令は、ここでも好ましくはRAM104へのアクセスを必要としない、ソースレジスタRpからデスティネーションレジスタ106へのデータの移動を示す。オペランド*Rmは、デスティネーションレジスタ106へのインデックスが所在する複数のハードウェアレジスタ106のうちの1つである。
処理システム100がmov Rp,*Rm命令を実行する際に行われる基本的な動作シーケンスには、(i)ハードウェアレジスタRmに保持された値を複数ある他のハードウェアレジスタ106のうちの1つへのインデックスとして利用し、(ii)ソースハードウェアレジスタRpからデータにアクセスし、(iii)ソースハードウェアレジスタRpから、インデックスされたハードウェアレジスタ106にデータをコピーすることが含まれる。
以下、mov Rp,*Rm命令の結果を達成するために、好ましくは処理システム100によって行われるイベントのシーケンスに関してのさらに詳細について、図5〜図7を参照して説明する。図5は、好ましくはmov Rp,*Rm命令に関連して行われるプロセスステップのうちのいくつかを示す流れ図である。特に、アクション130では、インデックスnの値が取得される。本発明の先の実施形態と同様に、インデックス値nは、全体としてのソフトウェアプログラムに関連してプロセッサ102が行う1以上の計算によって取得できる。インデックス値nを取得したら、これをレジスタRmにロードする(アクション132)。これによって、アクション134でのmov Rp,*Rm命令の実行が容易になるような形で複数のレジスタ106がセットアップされる。
mov Rp,*Rm命令に関連して本発明のさまざまな形態をさらに十分かつ完全に説明するために、図5のプロセスステップの部分ブロック図および部分流れ図である図6ならびに、図7の別のプロセスステップをさらに参照する。図6は、固定レジスタからインデックス付きレジスタへのデータ転送(または移動)の詳細を示すものである。この例では、レジスタRmが複数のレジスタ106のうちのレジスタR2であり、レジスタRp(ソースレジスタ)がレジスタR20であると仮定する。これらのレジスタの選択と指定については、周知のレジスタ管理手法のうちのいずれを利用して達成してもよい。
130Aで示す枠は、図5のアクション130に対応し、ここでインデックスnの値が取得される。この例では、任意関数f(i,j,k)=nを利用してインデックス値nを計算する。ここで、一貫性を保つために、計算の結果はn=7である。アクション132(図5)について上述したように、この算出値nは、この例ではレジスタR2であるレジスタRmにロードされる。
mov Rp,*Rm命令の実行(アクション134)開始後、レジスタR2内の値nにアクセス(アクション136、図5)し、この値をもうひとつのレジスタRnへのインデックスとして利用する(アクション138、図7)。図6に示すように、インデックス付きレジスタRnはレジスタR7である。その後、ソースレジスタR20内に保持されたデータにアクセス(アクション140、図7)し、これをインデックス付きレジスタR7であるデスティネーションレジスタにコピーする(アクション142、図7)。
よって、本発明のこの実施形態によれば、固定レジスタR20に保持されたデータは、レジスタR2に保持されたインデックス値を利用したインデックス付きレジスタアクセスによってレジスタR7に移動された。好都合なことに、このイベントシーケンスは、RAM104へのアクセスを必要とすることなく行われたため、データ転送を行うにあたっての全体としての待ち時間は、今まで考えられていたよりもずっと短くなる。
本発明の先の形態と同様に、mov Rp,*Rm命令によって達成されるデータのレジスタ内転送は、RAM104への1回以上のアクセスを必要とするのではなく、もっぱら複数のレジスタ106を利用して行われる全体としてのテーブル参照プロシージャおよび/または命令ブランチルーチンに、容易に適用できる。
本発明のもうひとつの例によれば、新規な命令セットに、以下のオペレーションコードを特徴とするものであってもよいコンピュータ命令を含むことができる。
store *Rm, address1
このstore命令は、ひとつのレジスタ106からRAM104内の位置へのデータの保存を示す。オペランド*Rmは、RAM104への格納対象となるデータが所在する複数のレジスタ106のうちのもうひとつに対するインデックスを保持する。
処理システム100がstore *Rm,address1命令を実行する際に行われる基本的な動作シーケンスには、(i)ハードウェアレジスタRmに保持された値を複数ある他のハードウェアレジスタ106のうちの1つへのインデックスとして利用し、(ii)その値でインデックスされたハードウェアレジスタ106からデータにアクセスし、(iii)インデックス付きハードウェアレジスタ106からaddress1の値でアドレス指定されたRAM104内の位置にデータをコピーすることが含まれる。
以下、store *Rm,address1命令の結果を達成するために、好ましくは処理システム100によって行われるイベントのシーケンスに関してのさらに詳細について、図8〜図10を参照して説明する。図8は、好ましくはstore *Rm,address1命令に関連して行われるプロセスステップのうちのいくつかを示す流れ図である。特に、アクション150では、インデックスnの値が取得される。本発明の他の実施形態と同様に、インデックス値nは、全体としてのソフトウェアプログラムに関連してプロセッサ102が行う1以上の計算によって取得できる。インデックス値nを取得したら、これをレジスタ*Rmにロードする(アクション152)。これらのアクションは、アクション154でのstore *Rm,address1命令の実行が容易になるような形で複数のレジスタ106をセットアップする。
store *Rm,address1命令に関連して本発明のさまざまな形態をさらに十分かつ完全に説明するために、図8のプロセスステップの部分ブロック図および部分流れ図である図9ならびに、図10の別のプロセスステップをさらに参照する。図9は、データのインデックス付きレジスタからメモリ位置への保存の詳細を示すものである。先の例と同様に、レジスタ*Rmが複数のレジスタ106のうちのレジスタR2であると仮定する。
150Aで示す枠は、図8のアクション150に対応し、ここでインデックスnの値が取得される。この例では、任意関数f(i,j,k)=nを利用してインデックス値nを計算する。ここで、先の例のように、関数計算の結果はn=7である。アクション152(図8)について上述したように、この算出値nは、上記同様にレジスタR2であるレジスタRmにロードされる。
store *Rm,address1命令の実行(アクション154)開始後、レジスタR2内の値nにアクセス(アクション156、図8)し、この値をもうひとつのレジスタRnへのインデックスとして利用する(アクション158、図10)。図9に示すように、インデックス付きレジスタRnは複数のレジスタ106のうちのレジスタR7である。その後、インデックス付きレジスタR7内に保持されたデータにアクセス(アクション160、図10)し、これをaddress1の値でアドレス指定されたRAM104内の位置にコピーする(アクション162、図10)。よって、本発明のこの実施形態によれば、レジスタR7内に保持されたデータは、レジスタR2に保持されたインデックス値を利用したインデックス付きレジスタアクセスによってRAM104に格納された。
本発明の1以上のさらに別の例によれば、新規な命令セットに、以下のオペレーションコードを特徴とし得るコンピュータ命令を追加するか、あるいは従来の命令を更新することで含むことができる。
load address1, *Rm
このload命令は、address1でアドレス指定されたRAM104内の位置から、レジスタ*Rmに保持された値でインデックスされたデスティネーションレジスタ106への、データの移動を示すものである。
処理システム100がload address1,*Rm命令を実行する際に行われる基本的な動作シーケンスには、(i)ハードウェアレジスタRmに保持された値を複数ある他のハードウェアレジスタ106のうちの1つへのインデックスとして利用し、(ii)address1の値でアドレス指定されたRAM104内の位置からデータにアクセスし、(iii)RAM104内のその位置からインデックスされたハードウェアレジスタ106にデータをコピーすることが含まれる。
以下、load address1,*Rm命令の結果を達成するために、好ましくは処理システム100によって行われるイベントのシーケンスに関してのさらに詳細について、図11〜図13を参照して説明する。図11は、好ましくはload address1,*Rm命令に関連して行われるプロセスステップのうちのいくつかを示す流れ図である。特に、アクション170では、インデックスnの値が取得される。本発明の先の実施形態と同様に、インデックス値nは、全体としてのソフトウェアプログラムに関連してプロセッサ102が行う1以上の計算によって取得できる。インデックス値nを取得したら、これをレジスタRmにロードする(アクション172)。これによって、アクション174でのload address1,*Rm命令の実行が容易になるような形で複数のレジスタ106がセットアップされる。
load address1,*Rm命令に関連して本発明のさまざまな形態をさらに十分かつ完全に説明するために、図11のプロセスステップの部分ブロック図および部分流れ図である図12ならびに、図13の別のプロセスステップをさらに参照する。図12は、メモリ位置からインデックス付きレジスタへのデータ転送の詳細を示すものである。他の例と同様に、レジスタRmがレジスタR2であると仮定する。
170Aで示す枠は、図11のアクション170に対応し、ここでインデックスnの値が取得される。インデックス値nは任意関数f(i,j,k)=nを用いて計算され、ここで、一貫性を保つために、計算の結果はn=7である。アクション172(図11)について上述したように、この算出値nは、レジスタR2にロードされる。
load address1,*Rm命令の実行(アクション174)開始後、レジスタR2内の値nにアクセス(アクション176、図11)し、この値を、レジスタR7であるもうひとつのレジスタRnへのインデックスとして利用する(アクション178、図13)。その後、address1でアドレス指定された位置でRAM104内に保持されたデータにアクセス(アクション180、図13)し、これをインデックス付きレジスタR7であるデスティネーションレジスタにコピーする(アクション182、図13)。よって、本発明のこの実施形態によれば、RAM104のメモリ位置に保持されたデータが、レジスタR2に保持されたインデックス値を利用したインデックス付きレジスタアクセスによってレジスタR7にロードされる。
図1に示すものなどのシングルマイクロプロセッサシステムであれば本発明の利点を享受できるが、本発明によるマルチ処理システムを利用すればさらに都合のよい処理能力を達成できることが明らかになっている。この点に関して、基本処理モジュールまたはプロセッサエレメント(PE)200のブロック図である図14を参照する。同図に示されるように、PE200は、I/Oインタフェース202と、処理ユニット(PU)204と、ダイレクトメモリアクセスコントローラ(DMAC)206と、複数のSPU208すなわちSPU208A〜Dとを含む。PU204、SPU208、DMAC206、メモリインタフェース210間でデータおよびアプリケーションを送信するのがローカル(または内部)PEバス212である。ローカルPEバス212は、たとえば従来のアーキテクチャに準拠可能なものであってもよいし、パケットスイッチネットワークとして実現可能なものであってもよい。パケットスイッチネットワークとして実現できれば、さらにハードウェアが必要ではあるが、利用できる帯域幅が大きくなる。
PE200は、デジタルロジックを実現するためのさまざまな方法を用いて構築可能なものである。しかしながら、PE200は、シリコン基板上に相捕型金属酸化膜半導体(CMOS)を用いた単一の集積回路として構築されるものであると好ましい。これに代わる基板材料としては、ガリウムヒ素(arsinide)、ガリウムアルミニウムヒ素(arsinide)、多種多様なドーパントを用いた他のいわゆるIII−B化合物があげられる。また、PE200は、高速単一磁束量子(RSFQ)ロジックなどの超電導材料を用いて実現することも可能なものである。
PE200は、高帯域幅メモリ接続216を介してダイナミックランダムアクセスメモリ(DRAM)214と密接に関連している。DRAM214は、PE200用のメインメモリとして機能する。DRAM214は、好ましくはダイナミックランダムアクセスメモリであるが、たとえばスタティックランダムアクセスメモリ(SRAM)、磁気ランダムアクセスメモリ(MRAM)、光メモリまたはホログラフィックメモリなどとして、他の手段を用いてDRAM214を実現することも可能である。DMAC206およびメモリインタフェース210は、DRAM214、PE200のSPU208、PU204の間でのデータ転送を容易にするものである。DMAC206および/またはメモリインタフェース210は、PU204およびSPU208のうちの1以上に一体に配置されていてもよい点に注意されたい。
PU204には、データおよびアプリケーションのスタンドアローンでの処理が可能な標準プロセッサを用いることが可能である。動作時、PU204は、SPU208によるデータおよびアプリケーションの処理のスケジューリングと調整を行う。SPU208は、好ましくは一命令複数データ(SIMD)プロセッサである。PU204の制御下、SPU208は、これらのデータおよびアプリケーションの処理を並列かつ独立した形で行う。DMAC206は、共有のDRAM214に格納されたデータおよびアプリケーションへのPU204およびSPU208によるアクセスを制御する。PU204は、サブ処理ユニット208によるデータおよびアプリケーションの処理のスケジューリングと調整を行うメイン処理ユニットの役割を担うサブ処理ユニット208のうちの1つによって実現可能である点に注意されたい。
PE200などの多数のPEを結合するかひとまとめにし、処理能力を高めるようにしてもよい。
図15は、SPU208の構造および機能を示している。SPU208は、ローカルメモリ250と、レジスタ252と、1以上の浮動小数点演算ユニット254と、1以上の整数演算ユニット256とを含む。しかしながら、ここでも必要な処理能力によっては、これよりも多いまたは少ない数の浮動小数点演算ユニット(floating points unit)254および整数演算ユニット256を用いてもよい。好ましい実施形態では、ローカルメモリ250には256キロバイトの記憶領域があり、レジスタ252の容量は128×128ビットである。浮動小数点演算ユニット254は、好ましくは1秒あたり320億回の浮動小数点演算を行う速度(32ギガフロップス)で動作し、整数演算ユニット256は、好ましくは1秒あたり320億回の演算を行う速度(32ギガオプス)で動作する。
SPU208にキャッシュコヒーレンシーのサポートは不要であるため、ローカルメモリ250はキャッシュメモリであってもキャッシュメモリでなくてもよい。ローカルメモリ250は、スタティックランダムアクセスメモリ(SRAM)として構築されるものであると好ましい。PU204は、このPU204によって開始されるダイレクトメモリアクセスにキャッシュコヒーレンシーのサポートを必要とする場合がある。しかしながら、SPU208によって開始されるダイレクトメモリアクセスまたは外部デバイスとの間のアクセスにキャッシュコヒーレンシーのサポートは必要ない。
SPU208は、SPU208との間でアプリケーションおよびデータを送受信するためのバス212をさらに含む。好ましい実施形態では、バス212は256ビット幅である。SPU208は、内部バス260、262および264をさらに含む。好ましい実施形態では、バス260は幅256ビットであり、ローカルメモリ250とレジスタ252との間での通信を可能にするものである。バス262および264はそれぞれ、レジスタ252と浮動小数点演算ユニット254との間、レジスタ252と整数演算ユニット256との間の通信を可能にするものである。好ましい実施形態では、レジスタ252から浮動小数点演算ユニットまたは整数演算ユニットへのバス262および264の幅は384ビットであり、浮動小数点演算ユニットまたは整数演算ユニット254、256からレジスタ252へのバス262および264の幅は128ビットである。レジスタ252から浮動小数点演算ユニットまたは整数演算ユニット254、256への上記のバスの幅の方が、これらのユニットからレジスタ252へのバスの幅よりも広ければ、処理時にレジスタ252からのデータフローを大きくすることができる。1回の算出ごとに最大3ワードが必要である。しかしながら、それぞれの算出結果は通常、1ワードである。
本発明は、少なくともその一部を、mov *Rm,Rp命令、mov Rp,*Rm命令、store *Rm,address1、load address1,*Rm命令などの1以上のコンピュータ命令を含むソフトウェアプログラムによって、処理システムに適用することができる点に注意されたい。よって、本発明の利点は、磁気ディスク、光ディスク、電子記録媒体あるいは、現時点で周知または将来的に開発される他のあらゆる記録媒体などの記録媒体から、このようなソフトウェアプログラムをロードするシステムで享受できるものである。
好都合なことに、本発明は、レジスタをローカルメモリとして用いてデータ操作を達成できるように、かつ、データの保存またはランダムアクセスメモリからのロードを回避できるように、複数のレジスタをインデックスした形で利用するための方法および装置を提供するものである。これは、メモリアクセスを大幅に減らし、これに関連する待ち時間を回避できることから、ひとつのレジスタからもうひとつのレジスタにデータを移動、ひとつのレジスタからもうひとつのレジスタにデータをコピーするなどのレジスタ内データ処理を改善できる方法および装置に対する、従来技術における需要に少なくともある程度対処するものである。
以上、本発明によれば、複数のレジスタ102のうちの1つにロードされるレジスタインデックスの計算を含む処理シーケンスの実行を可能にする方法および装置が提供される。この方法及び装置では、そのインデックスを利用して複数のレジスタ102のうちの別の1つを識別し、インデックス付きレジスタからデータにアクセスまたはインデックス付きレジスタにデータをコピーし、さらに他のレジスタまたはメモリ位置との間でデータをコピーする。
なお、特定の実施形態を参照して本発明について説明したが、これらの実施形態は単に本発明の原理と用途とを示す一例にすぎないことは理解されたい。したがって、添付の特許請求の範囲に定義した本発明の趣旨および範囲から逸脱することなく、図示の実施形態に対してさまざまな改変を施すことができ、他の構成を考案できる点を理解されたい。
本発明の1以上の形態によるレジスタ内転送を実行できる処理システムのブロック図である。 本発明の他の1以上の形態による、図1に示したような処理システムによって少なくとも一部が実行可能な、プロセスステップを示す流れ図である。 本発明の他の1以上の形態による図2のプロセスステップをさらに示したものならびに別のプロセスステップの部分ブロック図および部分流れ図である。 図3のプロセスステップのうちのいくつかをさらに示す流れ図である。 本発明の他の1以上の形態による、図1に示したような処理システムによって少なくとも一部が実行可能なプロセスステップを示す流れ図である。 本発明の別の形態による、図5のプロセスステップをさらに示したものならびに別のプロセスステップの部分ブロック図および部分流れ図である。 図6のプロセスステップのうちのいくつかをさらに示す流れ図である。 本発明の1以上の形態による、図1に示したような処理システムによって少なくとも一部が実行可能なプロセスステップを示す流れ図である。 本発明のさらに別の形態による、図8のプロセスステップをさらに示したものならびに別のプロセスステップの部分ブロック図および部分流れ図である。 図9のプロセスステップをさらに示す流れ図である。 本発明の1以上の形態による、図1に示したような処理システムによって少なくとも一部が実行可能なプロセスステップを示す流れ図である。 本発明の他の1以上の形態による、図11のプロセスステップをさらに示したものならびに別のプロセスステップの部分ブロック図および部分流れ図である。 図12のプロセスステップをさらに示す流れ図である。 図2〜図13のうちの1以上のプロセスステップを実行するにあたって、本発明の別の実施形態で利用可能なプロセッサエレメント(PE)と呼ばれる別の処理システムを示すブロック図である。 本発明の他の1以上の形態による代表的なサブ処理ユニット(SPU)の好ましい構造を示すブロック図である。
符号の説明
100 処理システム
102 プロセッサ
106 レジスタ
202 インタフェース
208 サブ処理ユニット
210 メモリインタフェース
212 バス
250 ローカルメモリ
252 レジスタ
254 浮動小数点演算ユニット
256 整数演算ユニット
260 内部バス
262 バス

Claims (63)

  1. 計算を行って算出値を取得し、
    この算出値を、各々が自己に関連する識別番号を有する、処理システムの複数のハードウェアレジスタのうちの少なくとも1つにロードし、
    前記算出値を、識別番号のうちのひとつとこれに関連するハードウェアレジスタに対するインデックスとして使用し、
    前記算出値によるインデックスが付けられたハードウェアレジスタからデータにアクセスすることを含む、方法。
  2. 前記ハードウェアレジスタのうちの別のひとつにデータをコピーすることをさらに含む、請求項1に記載の方法。
  3. 前記ハードウェアレジスタのうちの別のひとつにデータをコピーするステップが、処理システムのランダムアクセスメモリへのアクセスを必要とすることなく行われるものである、請求項2に記載の方法。
  4. 処理システムがソフトウェアプログラムを実行している間に計算が行われる、請求項1〜3のいずれかに記載の方法。
  5. これらのステップが、処理システムのランダムアクセスメモリへのアクセスを必要としないテーブルルックアッププロシージャに用いられる、請求項1に記載の方法。
  6. 少なくとも1つのハードウェアレジスタからの算出値にアクセスし、この算出値をインデックス付きハードウェアレジスタへのポインタとして利用することをさらに含む、請求項1〜5のいずれかに記載の方法。
  7. これらのステップが、ソースハードウェアレジスタからデスティネーションハードウェアレジスタへのデータの動きを定義しているコンピュータ命令に応答して実行される、請求項2または3に記載の方法。
  8. ソースハードウェアレジスタが算出値によるインデックスが付けられたハードウェアレジスタであり、デスティネーションハードウェアレジスタが他のハードウェアレジスタである、請求項7に記載の方法。
  9. コンピュータ命令が、以下のオペレーションコードを特徴とし得るものであり、
    mov *Rm, Rp
    ここで、Rmは算出値が所在するハードウェアレジスタであり、Rpはデスティネーションレジスタである、請求項8に記載の方法。
  10. 処理システムが、縮小命令セットコンピュータ(RISC)マイクロプロセッサを含む、請求項1〜9のいずれかに記載の方法。
  11. プロセッサと各々が自己に関連する識別番号を有する複数のハードウェアレジスタとに複数のステップを実行させるように機能する少なくとも1つのソフトウェア命令を保持する記録媒体であって、
    計算を行って算出値を取得し、
    この算出値を、複数のハードウェアレジスタのうちの少なくとも1つにロードし、
    前記算出値を、識別番号のうちのひとつとこれに関連するハードウェアレジスタに対するインデックスとして使用し、
    前記算出値によるインデックスが付けられたハードウェアレジスタからデータにアクセスすることを含む、記録媒体。
  12. これらのステップが、前記ハードウェアレジスタのうちの別のひとつにデータをコピーすることをさらに含む、請求項11に記載の記録媒体。
  13. 前記ハードウェアレジスタのうちの別のひとつにデータをコピーするステップが、プロセッサに接続されたランダムアクセスメモリへのアクセスを必要とすることなく行われる、請求項11または12に記載の記録媒体。
  14. 少なくとも1つのソフトウェア命令を含むソフトウェアプログラムを実行している間に計算が行われる、請求項11〜13のいずれかに記載の記録媒体。
  15. これらのステップが、プロセッサに接続されたランダムアクセスメモリへのアクセスを必要としないテーブルルックアッププロシージャに用いられる、請求項11〜14のいずれかに記載の記録媒体。
  16. 少なくとも1つのハードウェアレジスタからの算出値にアクセスし、この算出値をインデックス付きハードウェアレジスタへのポインタとして利用することをさらに含む、請求項11〜15のいずれかに記載の記録媒体。
  17. 少なくとも1つのソフトウェア命令が、ソースハードウェアレジスタからデスティネーションハードウェアレジスタへのデータの動きを定義する、請求項13に記載の記録媒体。
  18. ソースハードウェアレジスタが算出値によるインデックスが付けられたハードウェアレジスタであり、デスティネーションハードウェアレジスタが他のハードウェアレジスタである、請求項17に記載の記録媒体。
  19. 少なくとも1つのソフトウェア命令が、以下のオペレーションコードを特徴とし得るものであり、
    mov *Rm, Rp
    ここで、Rmは算出値が所在するハードウェアレジスタであり、Rpはデスティネーションレジスタである、請求項18に記載の記録媒体。
  20. プロセッサが、縮小命令セットコンピュータ(RISC)マイクロプロセッサを含む、請求項11〜19のいずれかに記載の記録媒体。
  21. 処理システムのプロセッサと各々が自己に関連する識別番号を有する複数のハードウェアレジスタとに複数のステップを実行させるように機能する少なくとも1つのソフトウェア命令を保持する記録媒体を含む、処理システムであって、
    計算を行って算出値を取得し、
    この算出値を、複数のハードウェアレジスタのうちの少なくとも1つにロードし、
    前記算出値を、識別番号のうちのひとつとこれに関連するハードウェアレジスタに対するインデックスとして使用し、
    前記算出値によるインデックスが付けられたハードウェアレジスタからデータにアクセスすることを含む、処理システム。
  22. これらのステップが、前記ハードウェアレジスタのうちの別のひとつにデータをコピーすることをさらに含む、請求項21に記載の処理システム。
  23. 前記ハードウェアレジスタのうちの別のひとつにデータをコピーするステップが、プロセッサに接続されたランダムアクセスメモリへのアクセスを必要とすることなく行われるものである、請求項21または22に記載の処理システム。
  24. 少なくとも1つのソフトウェア命令を含むソフトウェアプログラムを実行している間に計算が行われる、請求項21〜23のいずれかに記載の処理システム。
  25. これらのステップが、プロセッサに接続されたランダムアクセスメモリへのアクセスを必要としないテーブルルックアッププロシージャに用いられる、請求項21〜24のいずれかに記載の処理システム。
  26. 少なくとも1つのハードウェアレジスタからの算出値にアクセスし、この算出値をインデックス付きハードウェアレジスタへのポインタとして利用することをさらに含む、請求項21〜25のいずれかに記載の処理システム。
  27. 少なくとも1つのソフトウェア命令がソースハードウェアレジスタからデスティネーションハードウェアレジスタへのデータの動きを定義する、請求項22に記載の処理システム。
  28. ソースハードウェアレジスタが算出値によるインデックスが付けられたハードウェアレジスタであり、デスティネーションハードウェアレジスタが他のハードウェアレジスタである、請求項27に記載の処理システム。
  29. 少なくとも1つのソフトウェア命令が、以下のオペレーションコードを特徴とし得るものであり、
    mov *Rm, Rp
    ここで、Rmは算出値が所在するハードウェアレジスタであり、Rpはデスティネーションレジスタである、請求項28に記載の処理システム。
  30. プロセッサが、縮小命令セットコンピュータ(RISC)マイクロプロセッサを含む、請求項21〜29のいずれかに記載の処理システム。
  31. 計算を行って算出値を取得し、
    この算出値を、各々が自己に関連する識別番号を有する、処理システムの複数のハードウェアレジスタのうちの少なくとも1つにロードし、
    前記算出値を、識別番号のうちのひとつとこれに関連するハードウェアレジスタに対するインデックスとして使用し、
    前記ハードウェアレジスタのうちの別のひとつからデータにアクセスすることを含む、方法。
  32. 算出値によるインデックスが付けられたハードウェアレジスタにデータをコピーすることをさらに含む、請求項31に記載の方法。
  33. 算出値によるインデックスが付けられたハードウェアレジスタにデータをコピーするステップが、処理システムのランダムアクセスメモリへのアクセスを必要とすることなく行われる、請求項31または32に記載の方法。
  34. 前記処理システム上で動作するソフトウェアプログラムを実行している間に計算が行われる、請求項31〜33のいずれかに記載の方法。
  35. これらのステップが、処理システムのランダムアクセスメモリへのアクセスを必要としないテーブルルックアッププロシージャに用いられる、請求項31〜33のいずれかに記載の方法。
  36. 少なくとも1つのハードウェアレジスタからの算出値にアクセスし、この算出値をインデックス付きハードウェアレジスタへのポインタとして利用することをさらに含む、請求項31〜35のいずれかに記載の方法。
  37. これらのステップが、ソースハードウェアレジスタからデスティネーションハードウェアレジスタへのデータの動きを定義しているコンピュータ命令に応答して実行される、請求項32に記載の方法。
  38. ソースハードウェアレジスタが他のハードウェアレジスタであり、デスティネーションハードウェアレジスタが算出値によるインデックスが付けられたハードウェアレジスタである、請求項37に記載の方法。
  39. コンピュータ命令が、以下のオペレーションコードを特徴とし得るものであり、
    mov Rp, *Rm
    ここで、Rmは算出値が所在するハードウェアレジスタであり、Rpはソースレジスタである、請求項38に記載の方法。
  40. 処理システムが、縮小命令セットコンピュータ(RISC)マイクロプロセッサを含む、請求項31〜39のいずれかに記載の方法。
  41. プロセッサと各々が自己に関連する識別番号を有する複数のハードウェアレジスタとに複数のステップを実行させるように機能する少なくとも1つのソフトウェア命令を保持する記録媒体であって、
    計算を行って算出値を取得し、
    前記算出値を、複数のハードウェアレジスタのうちの少なくとも1つにロードし、
    前記算出値を、識別番号のうちのひとつとこれに関連するハードウェアレジスタに対するインデックスとして使用し、
    前記ハードウェアレジスタのうちの別のひとつからデータにアクセスすることを含む、記録媒体。
  42. これらのステップが、算出値によるインデックスが付けられたハードウェアレジスタにデータをコピーすることをさらに含む、請求項41に記載の記録媒体。
  43. 算出値によるインデックスが付けられたハードウェアレジスタにデータをコピーするステップが、プロセッサに接続されたランダムアクセスメモリへのアクセスを必要とすることなく行われる、請求項41または42に記載の記録媒体。
  44. 少なくとも1つのソフトウェア命令を含むソフトウェアプログラムを実行している間に計算が行われる、請求項41〜43のいずれかに記載の記録媒体。
  45. これらのステップが、プロセッサに接続されたランダムアクセスメモリへのアクセスを必要としないテーブルルックアッププロシージャに用いられる、請求項41〜44のいずれかに記載の記録媒体。
  46. 少なくとも1つのハードウェアレジスタからの算出値にアクセスし、この算出値をインデックス付きハードウェアレジスタへのポインタとして利用することをさらに含む、請求項41〜45のいずれかに記載の記録媒体。
  47. ソフトウェア命令が、ソースハードウェアレジスタからデスティネーションハードウェアレジスタへのデータの動きを定義する、請求項42に記載の記録媒体。
  48. ソースハードウェアレジスタが他のハードウェアレジスタであり、デスティネーションハードウェアレジスタが算出値によるインデックスが付けられたハードウェアレジスタである、請求項47に記載の記録媒体。
  49. 少なくとも1つのソフトウェア命令が、以下のオペレーションコードを特徴とし得るものであり、
    mov Rp, *Rm
    ここで、Rmは算出値が所在するハードウェアレジスタであり、Rpはソースレジスタである、請求項48に記載の記録媒体。
  50. プロセッサが、縮小命令セットコンピュータ(RISC)マイクロプロセッサを含む、請求項41〜49のいずれかに記載の記録媒体。
  51. 処理システムのプロセッサと各々が自己に関連する識別番号を有する複数のハードウェアレジスタとに複数のステップを実行させるように機能する少なくとも1つのソフトウェア命令を保持する記録媒体を含む処理システムであって、
    計算を行って算出値を取得し、
    この算出値を、複数のハードウェアレジスタのうちの少なくとも1つにロードし、
    前記算出値を、識別番号のうちのひとつとこれに関連するハードウェアレジスタに対するインデックスとして使用し、
    ハードウェアレジスタのうちの別のひとつからデータにアクセスすることを含む、処理システム。
  52. これらのステップが、算出値によるインデックスが付けられたハードウェアレジスタにデータをコピーすることをさらに含む、請求項51に記載の処理システム。
  53. 算出値によるインデックスが付けられたハードウェアレジスタにデータをコピーするステップが、プロセッサに接続されたランダムアクセスメモリへのアクセスを必要とすることなく行われる、請求項51または52に記載の処理システム。
  54. 少なくとも1つのソフトウェア命令を含むソフトウェアプログラムを実行している間に計算が行われる、請求項51〜53のいずれかに記載の処理システム。
  55. これらのステップが、プロセッサに接続されたランダムアクセスメモリへのアクセスを必要としないテーブルルックアッププロシージャに用いられる、請求項51〜54のいずれかに記載の処理システム。
  56. 少なくとも1つのハードウェアレジスタからの算出値にアクセスし、この算出値をインデックス付きハードウェアレジスタへのポインタとして利用することをさらに含む、請求項51〜55のいずれかに記載の処理システム。
  57. ソフトウェア命令が、ソースハードウェアレジスタからデスティネーションハードウェアレジスタへのデータの動きを定義する、請求項52に記載の処理システム。
  58. ソースハードウェアレジスタが他のハードウェアレジスタであり、デスティネーションハードウェアレジスタが算出値によるインデックスが付けられたハードウェアレジスタである、請求項57に記載の処理システム。
  59. 少なくとも1つのソフトウェア命令が、以下のオペレーションコードを特徴とし得るものであり、
    mov Rp, *Rm
    ここで、Rmは算出値が所在するハードウェアレジスタであり、Rpはソースレジスタである、請求項58に記載の処理システム。
  60. プロセッサが、縮小命令セットコンピュータ(RISC)マイクロプロセッサを含む、請求項51〜59のいずれかに記載の処理システム。
  61. 計算を行って算出値を取得し、
    この算出値を、各々が自己に関連する識別番号を有する、処理システムの複数のハードウェアレジスタのうちの少なくとも1つにロードし、
    前記算出値を、識別番号のうちのひとつとこれに関連するハードウェアレジスタに対するインデックスとして使用し、
    (i)前記算出値によるインデックスが付けられたハードウェアレジスタからデータにアクセスし、このデータをランダムアクセスメモリ(RAM)の指定されたアドレスにコピーすることにより、プロセッサに接続されたRAMにデータを格納することと、(ii)RAMの指定されたアドレスからデータにアクセスし、算出値によるインデックスが付けられたハードウェアレジスタにデータをコピーすることにより、RAMからデータをロードすることのうちの少なくとも1つを行うことを含む、方法。
  62. プロセッサと各々が自己に関連する識別番号を有する複数のハードウェアレジスタとに複数のステップを実行させるように機能する少なくとも1つのソフトウェア命令を保持する記録媒体であって、
    計算を行って算出値を取得し、
    この算出値を、ハードウェアレジスタのうちの少なくとも1つにロードし、
    前記算出値を、識別番号のうちのひとつとこれに関連するハードウェアレジスタに対するインデックスとして使用し、
    (i)前記算出値によるインデックスが付けられたハードウェアレジスタからデータにアクセスし、このデータをランダムアクセスメモリ(RAM)の指定されたアドレスにコピーすることにより、プロセッサに接続されたRAMにデータを格納することと、(ii)RAMの指定されたアドレスからデータにアクセスし、算出値によるインデックスが付けられたハードウェアレジスタにデータをコピーすることにより、RAMからデータをロードすることのうちの少なくとも1つを行うことを含む、記録媒体。
  63. 処理システムのプロセッサと各々が自己に関連する識別番号を有する複数のハードウェアレジスタとに複数のステップを実行させるように機能する少なくとも1つのソフトウェア命令を保持する記録媒体を含む処理システムであって、
    計算を行って算出値を取得し、
    この算出値を、ハードウェアレジスタのうちの少なくとも1つにロードし、
    前記算出値を、識別番号のうちのひとつとこれに関連するハードウェアレジスタに対するインデックスとして使用し、
    (i)前記算出値によるインデックスが付けられたハードウェアレジスタからデータにアクセスし、このデータをランダムアクセスメモリ(RAM)の指定されたアドレスにコピーすることにより、プロセッサに接続されたRAMにデータを格納することと、(ii)RAMの指定されたアドレスからデータにアクセスし、算出値によるインデックスが付けられたハードウェアレジスタにデータをコピーすることにより、RAMからデータをロードすることのうちの少なくとも1つを行うことを含む、処理システム。
JP2005134052A 2004-05-03 2005-05-02 インデックス付きレジスタアクセス用の方法および装置 Pending JP2005322240A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/838,051 US7124259B2 (en) 2004-05-03 2004-05-03 Methods and apparatus for indexed register access

Publications (1)

Publication Number Publication Date
JP2005322240A true JP2005322240A (ja) 2005-11-17

Family

ID=34966111

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005134052A Pending JP2005322240A (ja) 2004-05-03 2005-05-02 インデックス付きレジスタアクセス用の方法および装置

Country Status (4)

Country Link
US (1) US7124259B2 (ja)
EP (1) EP1623317A1 (ja)
JP (1) JP2005322240A (ja)
WO (1) WO2005106647A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008032405A1 (fr) * 2006-09-15 2008-03-20 Fujitsu Limited Dispositif et programme de gestion des informations

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080072066A1 (en) * 2006-08-21 2008-03-20 Motorola, Inc. Method and apparatus for authenticating applications to secure services
US7441775B2 (en) * 2006-09-21 2008-10-28 Sportcraft, Ltd. Game table with centrifugal blower assembly
US9465613B2 (en) * 2011-12-19 2016-10-11 International Business Machines Corporation Instruction predication using unused datapath facilities

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR930013999A (ko) * 1991-12-31 1993-07-22 정몽헌 그래픽 콘트롤러의 블록별 레지스터 제어회로
US5832533A (en) * 1995-01-04 1998-11-03 International Business Machines Corporation Method and system for addressing registers in a data processing unit in an indexed addressing mode
US6446190B1 (en) * 1998-03-12 2002-09-03 Bops, Inc. Register file indexing methods and apparatus for providing indirect control of register addressing in a VLIW processor
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
JP2003044273A (ja) * 2001-08-01 2003-02-14 Nec Corp データ処理装置及びデータ処理方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008032405A1 (fr) * 2006-09-15 2008-03-20 Fujitsu Limited Dispositif et programme de gestion des informations

Also Published As

Publication number Publication date
US7124259B2 (en) 2006-10-17
US20050251659A1 (en) 2005-11-10
EP1623317A1 (en) 2006-02-08
WO2005106647A1 (en) 2005-11-10

Similar Documents

Publication Publication Date Title
JP4526412B2 (ja) マルチプロセッサシステムにおけるタスク管理方法および装置
US8091078B2 (en) Dynamically partitioning processing across a plurality of heterogeneous processors
JP4219369B2 (ja) プロセッサシステム内においてスタックを分離して管理する方法および装置
US7444632B2 (en) Balancing computational load across a plurality of processors
US8020169B2 (en) Context switching system having context cache and a register file for the save and restore context operation
US7627723B1 (en) Atomic memory operators in a parallel processor
US7748006B2 (en) Loading software on a plurality of processors
RU2450339C2 (ru) Мультипроцессорная архитектура, оптимизированная для потоков
JP4364202B2 (ja) データ処理方法およびデータ処理システム
US20060179277A1 (en) System and method for instruction line buffer holding a branch target buffer
US20050071828A1 (en) System and method for compiling source code for multi-processor environments
JP2005235229A (ja) マルチプロセッサシステムにおけるプロセッサタスクの移動方法および装置
JP2006323829A (ja) 動的にリンクするプログラムのオーバーレイのための方法及び装置
JP2006287675A (ja) 半導体集積回路
JP3797570B2 (ja) セマフォ命令用のセマフォ・バッファを用いた装置と方法
JP4130465B2 (ja) メモリ転送処理サイズが異なるプロセッサに関してアトミックな処理を実行するための技術
US20190236017A1 (en) Method and system for efficient communication and command system for deferred operation
JP2005322240A (ja) インデックス付きレジスタアクセス用の方法および装置
JP3540796B2 (ja) 演算システム
JP3670646B2 (ja) レジスタ転送オペレーション
US11860785B2 (en) Method and system for efficient communication and command system for deferred operation
US7500088B2 (en) Methods and apparatus for updating of a branch history table
JP7078380B2 (ja) 命令制御装置、命令制御方法およびプログラム
JP2006039821A (ja) マルチプロセッサ搭載システムlsiの制御方法
JP2001022581A (ja) データ処理装置及びコンピュータ読み取り可能な記憶媒体

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060314

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20060711