(57)【要約】      （修正有） 【課題】  レジスタ内データ処理を改善できる方法および装置を提供する。【解決手段】  複数のレジスタ１０６のうちの１つにロードされるレジスタインデックスの計算を含む処理シーケンスの実行を可能にする方法および装置が提供される。この方法及び装置では、そのインデックスを利用して複数のレジスタ１０６のうちの別の１つを識別し、インデックス付きレジスタからデータにアクセスまたはインデックス付きレジスタにデータをコピーし、さらに他のレジスタまたはメモリ位置との間でデータをコピーする。【選択図】図３
2005322240.tif 000002
【特許請求の範囲】
【請求項１】
計算を行って算出値を取得し、
この算出値を、各々が自己に関連する識別番号を有する、処理システムの複数のハードウェアレジスタのうちの少なくとも１つにロードし、
前記算出値を、識別番号のうちのひとつとこれに関連するハードウェアレジスタに対するインデックスとして使用し、
前記算出値によるインデックスが付けられたハードウェアレジスタからデータにアクセスすることを含む、方法。
【請求項２】
前記ハードウェアレジスタのうちの別のひとつにデータをコピーすることをさらに含む、請求項１に記載の方法。
【請求項３】
前記ハードウェアレジスタのうちの別のひとつにデータをコピーするステップが、処理システムのランダムアクセスメモリへのアクセスを必要とすることなく行われるものである、請求項２に記載の方法。
【請求項４】
処理システムがソフトウェアプログラムを実行している間に計算が行われる、請求項１〜３のいずれかに記載の方法。
【請求項５】
これらのステップが、処理システムのランダムアクセスメモリへのアクセスを必要としないテーブルルックアッププロシージャに用いられる、請求項１に記載の方法。
【請求項６】
少なくとも１つのハードウェアレジスタからの算出値にアクセスし、この算出値をインデックス付きハードウェアレジスタへのポインタとして利用することをさらに含む、請求項１〜５のいずれかに記載の方法。
【請求項７】
これらのステップが、ソースハードウェアレジスタからデスティネーションハードウェアレジスタへのデータの動きを定義しているコンピュータ命令に応答して実行される、請求項２または３に記載の方法。
【請求項８】
ソースハードウェアレジスタが算出値によるインデックスが付けられたハードウェアレジスタであり、デスティネーションハードウェアレジスタが他のハードウェアレジスタである、請求項７に記載の方法。
【請求項９】
コンピュータ命令が、以下のオペレーションコードを特徴とし得るものであり、
mov *Rm, Rp
ここで、Ｒｍは算出値が所在するハードウェアレジスタであり、Ｒｐはデスティネーションレジスタである、請求項８に記載の方法。
【請求項１０】
処理システムが、縮小命令セットコンピュータ（ＲＩＳＣ）マイクロプロセッサを含む、請求項１〜９のいずれかに記載の方法。
【請求項１１】
プロセッサと各々が自己に関連する識別番号を有する複数のハードウェアレジスタとに複数のステップを実行させるように機能する少なくとも１つのソフトウェア命令を保持する記録媒体であって、
計算を行って算出値を取得し、
この算出値を、複数のハードウェアレジスタのうちの少なくとも１つにロードし、
前記算出値を、識別番号のうちのひとつとこれに関連するハードウェアレジスタに対するインデックスとして使用し、
前記算出値によるインデックスが付けられたハードウェアレジスタからデータにアクセスすることを含む、記録媒体。
【請求項１２】
これらのステップが、前記ハードウェアレジスタのうちの別のひとつにデータをコピーすることをさらに含む、請求項１１に記載の記録媒体。
【請求項１３】
前記ハードウェアレジスタのうちの別のひとつにデータをコピーするステップが、プロセッサに接続されたランダムアクセスメモリへのアクセスを必要とすることなく行われる、請求項１１または１２に記載の記録媒体。
【請求項１４】
少なくとも１つのソフトウェア命令を含むソフトウェアプログラムを実行している間に計算が行われる、請求項１１〜１３のいずれかに記載の記録媒体。
【請求項１５】
これらのステップが、プロセッサに接続されたランダムアクセスメモリへのアクセスを必要としないテーブルルックアッププロシージャに用いられる、請求項１１〜１４のいずれかに記載の記録媒体。
【請求項１６】
少なくとも１つのハードウェアレジスタからの算出値にアクセスし、この算出値をインデックス付きハードウェアレジスタへのポインタとして利用することをさらに含む、請求項１１〜１５のいずれかに記載の記録媒体。
【請求項１７】
少なくとも１つのソフトウェア命令が、ソースハードウェアレジスタからデスティネーションハードウェアレジスタへのデータの動きを定義する、請求項１３に記載の記録媒体。
【請求項１８】
ソースハードウェアレジスタが算出値によるインデックスが付けられたハードウェアレジスタであり、デスティネーションハードウェアレジスタが他のハードウェアレジスタである、請求項１７に記載の記録媒体。
【請求項１９】
少なくとも１つのソフトウェア命令が、以下のオペレーションコードを特徴とし得るものであり、
mov *Rm, Rp
ここで、Ｒｍは算出値が所在するハードウェアレジスタであり、Ｒｐはデスティネーションレジスタである、請求項１８に記載の記録媒体。
【請求項２０】
プロセッサが、縮小命令セットコンピュータ（ＲＩＳＣ）マイクロプロセッサを含む、請求項１１〜１９のいずれかに記載の記録媒体。
【請求項２１】
処理システムのプロセッサと各々が自己に関連する識別番号を有する複数のハードウェアレジスタとに複数のステップを実行させるように機能する少なくとも１つのソフトウェア命令を保持する記録媒体を含む、処理システムであって、
計算を行って算出値を取得し、
この算出値を、複数のハードウェアレジスタのうちの少なくとも１つにロードし、
前記算出値を、識別番号のうちのひとつとこれに関連するハードウェアレジスタに対するインデックスとして使用し、
前記算出値によるインデックスが付けられたハードウェアレジスタからデータにアクセスすることを含む、処理システム。
【請求項２２】
これらのステップが、前記ハードウェアレジスタのうちの別のひとつにデータをコピーすることをさらに含む、請求項２１に記載の処理システム。
【請求項２３】
前記ハードウェアレジスタのうちの別のひとつにデータをコピーするステップが、プロセッサに接続されたランダムアクセスメモリへのアクセスを必要とすることなく行われるものである、請求項２１または２２に記載の処理システム。
【請求項２４】
少なくとも１つのソフトウェア命令を含むソフトウェアプログラムを実行している間に計算が行われる、請求項２１〜２３のいずれかに記載の処理システム。
【請求項２５】
これらのステップが、プロセッサに接続されたランダムアクセスメモリへのアクセスを必要としないテーブルルックアッププロシージャに用いられる、請求項２１〜２４のいずれかに記載の処理システム。
【請求項２６】
少なくとも１つのハードウェアレジスタからの算出値にアクセスし、この算出値をインデックス付きハードウェアレジスタへのポインタとして利用することをさらに含む、請求項２１〜２５のいずれかに記載の処理システム。
【請求項２７】
少なくとも１つのソフトウェア命令がソースハードウェアレジスタからデスティネーションハードウェアレジスタへのデータの動きを定義する、請求項２２に記載の処理システム。
【請求項２８】
ソースハードウェアレジスタが算出値によるインデックスが付けられたハードウェアレジスタであり、デスティネーションハードウェアレジスタが他のハードウェアレジスタである、請求項２７に記載の処理システム。
【請求項２９】
少なくとも１つのソフトウェア命令が、以下のオペレーションコードを特徴とし得るものであり、
mov *Rm, Rp
ここで、Ｒｍは算出値が所在するハードウェアレジスタであり、Ｒｐはデスティネーションレジスタである、請求項２８に記載の処理システム。
【請求項３０】
プロセッサが、縮小命令セットコンピュータ（ＲＩＳＣ）マイクロプロセッサを含む、請求項２１〜２９のいずれかに記載の処理システム。
【請求項３１】
計算を行って算出値を取得し、
この算出値を、各々が自己に関連する識別番号を有する、処理システムの複数のハードウェアレジスタのうちの少なくとも１つにロードし、
前記算出値を、識別番号のうちのひとつとこれに関連するハードウェアレジスタに対するインデックスとして使用し、
前記ハードウェアレジスタのうちの別のひとつからデータにアクセスすることを含む、方法。
【請求項３２】
算出値によるインデックスが付けられたハードウェアレジスタにデータをコピーすることをさらに含む、請求項３１に記載の方法。
【請求項３３】
算出値によるインデックスが付けられたハードウェアレジスタにデータをコピーするステップが、処理システムのランダムアクセスメモリへのアクセスを必要とすることなく行われる、請求項３１または３２に記載の方法。
【請求項３４】
前記処理システム上で動作するソフトウェアプログラムを実行している間に計算が行われる、請求項３１〜３３のいずれかに記載の方法。
【請求項３５】
これらのステップが、処理システムのランダムアクセスメモリへのアクセスを必要としないテーブルルックアッププロシージャに用いられる、請求項３１〜３３のいずれかに記載の方法。
【請求項３６】
少なくとも１つのハードウェアレジスタからの算出値にアクセスし、この算出値をインデックス付きハードウェアレジスタへのポインタとして利用することをさらに含む、請求項３１〜３５のいずれかに記載の方法。
【請求項３７】
これらのステップが、ソースハードウェアレジスタからデスティネーションハードウェアレジスタへのデータの動きを定義しているコンピュータ命令に応答して実行される、請求項３２に記載の方法。
【請求項３８】
ソースハードウェアレジスタが他のハードウェアレジスタであり、デスティネーションハードウェアレジスタが算出値によるインデックスが付けられたハードウェアレジスタである、請求項３７に記載の方法。
【請求項３９】
コンピュータ命令が、以下のオペレーションコードを特徴とし得るものであり、
mov Rp, *Rm
ここで、Ｒｍは算出値が所在するハードウェアレジスタであり、Ｒｐはソースレジスタである、請求項３８に記載の方法。
【請求項４０】
処理システムが、縮小命令セットコンピュータ（ＲＩＳＣ）マイクロプロセッサを含む、請求項３１〜３９のいずれかに記載の方法。
【請求項４１】
プロセッサと各々が自己に関連する識別番号を有する複数のハードウェアレジスタとに複数のステップを実行させるように機能する少なくとも１つのソフトウェア命令を保持する記録媒体であって、
計算を行って算出値を取得し、
前記算出値を、複数のハードウェアレジスタのうちの少なくとも１つにロードし、
前記算出値を、識別番号のうちのひとつとこれに関連するハードウェアレジスタに対するインデックスとして使用し、
前記ハードウェアレジスタのうちの別のひとつからデータにアクセスすることを含む、記録媒体。
【請求項４２】
これらのステップが、算出値によるインデックスが付けられたハードウェアレジスタにデータをコピーすることをさらに含む、請求項４１に記載の記録媒体。
【請求項４３】
算出値によるインデックスが付けられたハードウェアレジスタにデータをコピーするステップが、プロセッサに接続されたランダムアクセスメモリへのアクセスを必要とすることなく行われる、請求項４１または４２に記載の記録媒体。
【請求項４４】
少なくとも１つのソフトウェア命令を含むソフトウェアプログラムを実行している間に計算が行われる、請求項４１〜４３のいずれかに記載の記録媒体。
【請求項４５】
これらのステップが、プロセッサに接続されたランダムアクセスメモリへのアクセスを必要としないテーブルルックアッププロシージャに用いられる、請求項４１〜４４のいずれかに記載の記録媒体。
【請求項４６】
少なくとも１つのハードウェアレジスタからの算出値にアクセスし、この算出値をインデックス付きハードウェアレジスタへのポインタとして利用することをさらに含む、請求項４１〜４５のいずれかに記載の記録媒体。
【請求項４７】
ソフトウェア命令が、ソースハードウェアレジスタからデスティネーションハードウェアレジスタへのデータの動きを定義する、請求項４２に記載の記録媒体。
【請求項４８】
ソースハードウェアレジスタが他のハードウェアレジスタであり、デスティネーションハードウェアレジスタが算出値によるインデックスが付けられたハードウェアレジスタである、請求項４７に記載の記録媒体。
【請求項４９】
少なくとも１つのソフトウェア命令が、以下のオペレーションコードを特徴とし得るものであり、
mov Rp, *Rm
ここで、Ｒｍは算出値が所在するハードウェアレジスタであり、Ｒｐはソースレジスタである、請求項４８に記載の記録媒体。
【請求項５０】
プロセッサが、縮小命令セットコンピュータ（ＲＩＳＣ）マイクロプロセッサを含む、請求項４１〜４９のいずれかに記載の記録媒体。
【請求項５１】
処理システムのプロセッサと各々が自己に関連する識別番号を有する複数のハードウェアレジスタとに複数のステップを実行させるように機能する少なくとも１つのソフトウェア命令を保持する記録媒体を含む処理システムであって、
計算を行って算出値を取得し、
この算出値を、複数のハードウェアレジスタのうちの少なくとも１つにロードし、
前記算出値を、識別番号のうちのひとつとこれに関連するハードウェアレジスタに対するインデックスとして使用し、
ハードウェアレジスタのうちの別のひとつからデータにアクセスすることを含む、処理システム。
【請求項５２】
これらのステップが、算出値によるインデックスが付けられたハードウェアレジスタにデータをコピーすることをさらに含む、請求項５１に記載の処理システム。
【請求項５３】
算出値によるインデックスが付けられたハードウェアレジスタにデータをコピーするステップが、プロセッサに接続されたランダムアクセスメモリへのアクセスを必要とすることなく行われる、請求項５１または５２に記載の処理システム。
【請求項５４】
少なくとも１つのソフトウェア命令を含むソフトウェアプログラムを実行している間に計算が行われる、請求項５１〜５３のいずれかに記載の処理システム。
【請求項５５】
これらのステップが、プロセッサに接続されたランダムアクセスメモリへのアクセスを必要としないテーブルルックアッププロシージャに用いられる、請求項５１〜５４のいずれかに記載の処理システム。
【請求項５６】
少なくとも１つのハードウェアレジスタからの算出値にアクセスし、この算出値をインデックス付きハードウェアレジスタへのポインタとして利用することをさらに含む、請求項５１〜５５のいずれかに記載の処理システム。
【請求項５７】
ソフトウェア命令が、ソースハードウェアレジスタからデスティネーションハードウェアレジスタへのデータの動きを定義する、請求項５２に記載の処理システム。
【請求項５８】
ソースハードウェアレジスタが他のハードウェアレジスタであり、デスティネーションハードウェアレジスタが算出値によるインデックスが付けられたハードウェアレジスタである、請求項５７に記載の処理システム。
【請求項５９】
少なくとも１つのソフトウェア命令が、以下のオペレーションコードを特徴とし得るものであり、
mov Rp, *Rm
ここで、Ｒｍは算出値が所在するハードウェアレジスタであり、Ｒｐはソースレジスタである、請求項５８に記載の処理システム。
【請求項６０】
プロセッサが、縮小命令セットコンピュータ（ＲＩＳＣ）マイクロプロセッサを含む、請求項５１〜５９のいずれかに記載の処理システム。
【請求項６１】
計算を行って算出値を取得し、
この算出値を、各々が自己に関連する識別番号を有する、処理システムの複数のハードウェアレジスタのうちの少なくとも１つにロードし、
前記算出値を、識別番号のうちのひとつとこれに関連するハードウェアレジスタに対するインデックスとして使用し、
（ｉ）前記算出値によるインデックスが付けられたハードウェアレジスタからデータにアクセスし、このデータをランダムアクセスメモリ（ＲＡＭ）の指定されたアドレスにコピーすることにより、プロセッサに接続されたＲＡＭにデータを格納することと、（ｉｉ）ＲＡＭの指定されたアドレスからデータにアクセスし、算出値によるインデックスが付けられたハードウェアレジスタにデータをコピーすることにより、ＲＡＭからデータをロードすることのうちの少なくとも１つを行うことを含む、方法。
【請求項６２】
プロセッサと各々が自己に関連する識別番号を有する複数のハードウェアレジスタとに複数のステップを実行させるように機能する少なくとも１つのソフトウェア命令を保持する記録媒体であって、
計算を行って算出値を取得し、
この算出値を、ハードウェアレジスタのうちの少なくとも１つにロードし、
前記算出値を、識別番号のうちのひとつとこれに関連するハードウェアレジスタに対するインデックスとして使用し、
（ｉ）前記算出値によるインデックスが付けられたハードウェアレジスタからデータにアクセスし、このデータをランダムアクセスメモリ（ＲＡＭ）の指定されたアドレスにコピーすることにより、プロセッサに接続されたＲＡＭにデータを格納することと、（ｉｉ）ＲＡＭの指定されたアドレスからデータにアクセスし、算出値によるインデックスが付けられたハードウェアレジスタにデータをコピーすることにより、ＲＡＭからデータをロードすることのうちの少なくとも１つを行うことを含む、記録媒体。
【請求項６３】
処理システムのプロセッサと各々が自己に関連する識別番号を有する複数のハードウェアレジスタとに複数のステップを実行させるように機能する少なくとも１つのソフトウェア命令を保持する記録媒体を含む処理システムであって、
計算を行って算出値を取得し、
この算出値を、ハードウェアレジスタのうちの少なくとも１つにロードし、
前記算出値を、識別番号のうちのひとつとこれに関連するハードウェアレジスタに対するインデックスとして使用し、
（ｉ）前記算出値によるインデックスが付けられたハードウェアレジスタからデータにアクセスし、このデータをランダムアクセスメモリ（ＲＡＭ）の指定されたアドレスにコピーすることにより、プロセッサに接続されたＲＡＭにデータを格納することと、（ｉｉ）ＲＡＭの指定されたアドレスからデータにアクセスし、算出値によるインデックスが付けられたハードウェアレジスタにデータをコピーすることにより、ＲＡＭからデータをロードすることのうちの少なくとも１つを行うことを含む、処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レジスタをローカルメモリとして利用してデータ操作を行うことができ、かつ、データの保存またはランダムアクセスメモリからのロードを回避できるように、インデックスした形で複数のレジスタを利用するための方法および装置に関する。
【背景技術】
【０００２】
スーパースカラーＲＩＳＣプロセッサの処理能力というのは、ひとつにはこれらのプロセッサが（いくつかの命令を同時に実行可能な）機能ユニットを利用しているがゆえに非常に重要なのであるが、この処理のアプローチすなわち、たとえばパイプラインインターロックには、いくつか問題がある。パイプラインインターロックでは、先行する命令の実行に割り込みがかかることから、後にくる命令のフェッチに遅延が生じるのである。
【０００３】
従来のＲＩＳＣプロセッサにおけるインターロック遅延には基本的に２つのタイプがある。ひとつ目に類するインターロック遅延は、命令待ち時間を左右するデータ依存性の遅延である。この場合、命令が実行されるのは、すべてのソースデータがこれより前の命令によって評価されてからになる。ふたつ目に類するインターロック遅延は予約遅延であるが、これは、常に即時利用可能とは限らない共有資源（データバス、内部レジスタ、機能ユニットなど）が実行中の２つの命令で必要になる場合があることを意味する。
【０００４】
パイプラインインターロック遅延の影響を最小限にするための従来のアプローチのひとつに、階層キャッシュメモリなどの高速ランダムアクセスメモリ（ＲＡＭ）を利用することがある。事実、レベル１（Ｌ１）のキャッシュメモリでデータの保存またはロードに必要なのは（１ＧＨｚ程度のクロック周波数で動作するプロセッサに接続した場合）、約６〜１０サイクル程度である。メモリアクセスの待ち時間を減らすことで、仮にパイプラインインターロック遅延があったとしても、全体としての処理速度にとっては良い結果になるのが普通である。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、階層キャッシュメモリを使ってパイプラインインターロック遅延の悪影響を相殺することの有効性には限度がある。事実、階層キャッシュメモリであっても、約６〜１０クロックサイクルの待ち時間が（本来であれば待ち時間はもっと短い方が望ましい場合に）生じることがある。
【０００６】
ＲＡＭアクセス、階層キャッシュアクセスまたは他のデータ保存技術の待ち時間を回避するために、多数のハードウェアレジスタをスタックとして利用してデータを操作しようという動きがある。ハードウェアレジスタは一般に待ち時間が１クロックサイクル程度であるため、これよりも待ち時間の長いＲＡＭ、キャッシュまたは他のローカルメモリを使用することに代わる、魅力的な選択肢となる。
【０００７】
相当数のハードウェアレジスタをデータ操作用の代理メモリとして利用できるのはその通りであるが、従来の命令セットのアーキテクチャはレジスタ内でのデータ操作に合わせて最適化されたものではない。たとえば、ひとつのハードウェアレジスタから別のハードウェアレジスタにデータを移動するにあたって、従来の命令セットのなかには、メモリストアやメモリロードなどのメモリアクセスを行うことを前提にしているものがある。一例として、ひとつのレジスタすなわちＲ１から別のレジスタすなわちＲ２にデータを転送する際に従来の命令セットが持つＲＡＭへの依存性を、以下のオペレーションコードに示す。
STORE R1, address1 ;Ｒ１のデータをＲＡＭのａｄｄｒｅｓｓ１に格納
LOAD address1, R2  ;ＲＡＭのａｄｄｒｅｓｓ１からＲ２にデータをロード
【０００８】
しかしながら、ＲＡＭの部分でかなりの待ち時間があるため、ハードウェアレジスタをデータスタックとして利用してどんな利点があったところで、すべて帳消しになりかねない。この問題は、実行中のソフトウェアプログラムで相当多数のテーブル参照および／またはブランチ命令が必要な場合には、さらに深刻なものとなる。
【０００９】
既存の命令セットのなかには、オペランドとして若干のレジスタへのアクセスを許可するものがあるが、これには該当するレジスタにインデックスを付ける必要がある点に注意されたい。残念なことに、このようなアクセスはいずれも、そのソフトウェアコードが書かれた時点で定義しなければならなかったものである。こうした既存の命令セットを使って、プログラムの実行中にインデックス値を計算してリアルタイムにインデックスを付けることはできない。よって、これらのシステムでメモリアクセスに頼ることには、依然として問題が残る。既存の命令セットには他に、非インデックス付きレジスタ間でのデータの移動に対応しているものもあるが、この場合もプログラムを書く時点でレジスタの定義をしなければならず、実行時に定義を行うことはできない。
【００１０】
したがって、従来技術においては、メモリアクセスを大幅に減らし、これに付随する待ち時間を回避できるように、ひとつのレジスタからもうひとつのレジスタへのデータの移動、ひとつのレジスタからもうひとつのレジスタへのデータのコピーなどのレジスタ内データ処理を改善できる方法および装置が求められている。
【課題を解決するための手段】
【００１１】
本発明の１以上の形態によれば、方法が、計算を行って算出値を取得し、この算出値を、各々が自己に関連する識別番号を有する、処理システムの複数のハードウェアレジスタのうちの少なくとも１つにロードし、上記算出値を、識別番号のうちのひとつとこれに関連するハードウェアレジスタに対するインデックスとして使用し、上記算出値によるインデックスが付けられたハードウェアレジスタからデータにアクセスするステップまたはアクションを含む。また、この方法は、上記ハードウェアレジスタのうちの別のひとつにデータをコピーすることを含むものであってもよい。
【００１２】
好ましくは、上記ハードウェアレジスタのうちの別のひとつにデータをコピーするステップは、処理システムのランダムアクセスメモリへのアクセスを必要とすることなく行われる。一例として、これらのステップを、処理システムのランダムアクセスメモリへのアクセスを必要としないテーブルルックアッププロシージャに利用することができる。
【００１３】
この方法は、少なくとも１つのハードウェアレジスタからの算出値にアクセスし、この算出値をインデックス付きハードウェアレジスタへのポインタとして利用することをさらに含むものであってもよい。
【００１４】
これらのステップは、ソースハードウェアレジスタからデスティネーションハードウェアレジスタへのデータの動きを定義しているコンピュータ命令に応答して実行されるものであってもよい。たとえば、ソースハードウェアレジスタは算出値によるインデックスが付けられたハードウェアレジスタであればよく、デスティネーションハードウェアレジスタは他のハードウェアレジスタである。さらに、このコンピュータ命令は、以下のオペレーションコードを特徴とするものとすることができる。
mov *Rm, Rp
ここで、Ｒｍは算出値が所在するハードウェアレジスタであり、Ｒｐはデスティネーションレジスタである。
【００１５】
本発明の他の１以上の形態によれば、記録媒体に、プロセッサと各々が自己に関連する識別番号を有する複数のハードウェアレジスタとに複数のステップを実行させるように機能する少なくとも１つのソフトウェア命令を保持し得る。このステップは、計算を行って算出値を取得し、この算出値を、複数のハードウェアレジスタのうちの少なくとも１つにロードし、上記の算出値を、識別番号のうちのひとつとこれに関連するハードウェアレジスタに対するインデックスとして使用し、上記の算出値によるインデックスが付けられたハードウェアレジスタからデータにアクセスすることを含むものであってもよい。
【００１６】
本発明のさらに別の１以上の形態によれば、処理システムが、処理システムのプロセッサと各々が自己に関連する識別番号を有する複数のハードウェアレジスタとに複数のステップを実行させるように機能する少なくとも１つのソフトウェア命令を保持する記録媒体を含むものであってもよい。これらのステップは、計算を行って算出値を取得し、この算出値を、複数のハードウェアレジスタのうちの少なくとも１つにロードし、上記の算出値を、識別番号のうちのひとつとこれに関連するハードウェアレジスタに対するインデックスとして使用し、上記の算出値によるインデックスが付けられたハードウェアレジスタからデータにアクセスすることを含むものであってもよい。また、これらのステップは、上記ハードウェアレジスタのうちの別のひとつにデータをコピーすることを含むものであってもよい。
【００１７】
本発明のさらに別の１以上の形態によれば、方法が、計算を行って算出値を取得し、この算出値を、各々が自己に関連する識別番号を有する、処理システムの複数のハードウェアレジスタのうちの少なくとも１つにロードし、上記の算出値を、識別番号のうちのひとつとこれに関連するハードウェアレジスタに対するインデックスとして使用し、上記ハードウェアレジスタのうちの別のひとつからデータにアクセスすることを含み得る。また、この方法は、算出値によるインデックスが付けられたハードウェアレジスタにデータをコピーすることを含むものであってもよい。
【００１８】
本発明のさらに別の１以上の形態によれば、記録媒体に、プロセッサと各々が自己に関連する識別番号を有する複数のハードウェアレジスタとに複数のステップを実行させるように機能する少なくとも１つのソフトウェア命令を保持し得る。これらのステップは、計算を行って算出値を取得し、この算出値を、複数のハードウェアレジスタのうちの少なくとも１つにロードし、上記の算出値を、識別番号のうちのひとつとこれに関連するハードウェアレジスタに対するインデックスとして使用し、上記ハードウェアレジスタのうちの別のひとつからデータにアクセスすることを含むものであってもよい。また、これらのステップは、算出値によるインデックスが付けられたハードウェアレジスタにデータをコピーすることを含むものであってもよい。
【００１９】
本発明のさらに別の１以上の形態によれば、処理システムが、処理システムのプロセッサと各々が自己に関連する識別番号を有する複数のハードウェアレジスタとに複数のステップを実行させるように機能する少なくとも１つのソフトウェア命令を保持する記録媒体を含む。これらのステップは、計算を行って算出値を取得し、この算出値を、複数のハードウェアレジスタのうちの少なくとも１つにロードし、上記の算出値を、識別番号のうちのひとつとこれに関連するハードウェアレジスタに対するインデックスとして使用し、上記ハードウェアレジスタのうちの別のひとつからデータにアクセスすることを含むものであってもよい。また、これらのステップは、算出値によるインデックスが付けられたハードウェアレジスタにデータをコピーすることを含むものであってもよい。
【００２０】
本発明のさらに別の１以上の形態によれば、方法が、計算を行って算出値を取得し、この算出値を、各々が自己に関連する識別番号を有する、処理システムの複数のハードウェアレジスタのうちの少なくとも１つにロードし、上記の算出値を、識別番号のうちのひとつとこれに関連するハードウェアレジスタに対するインデックスとして使用し、（ｉ）上記の算出値によるインデックスが付けられたハードウェアレジスタからデータにアクセスし、このデータをランダムアクセスメモリ（ＲＡＭ）の指定されたアドレスにコピーすることにより、プロセッサに接続されたＲＡＭにデータを格納することと、（ｉｉ）ＲＡＭの指定されたアドレスからデータにアクセスし、算出値によるインデックスが付けられたハードウェアレジスタにデータをコピーすることにより、ＲＡＭからデータをロードすることのうちの少なくとも１つを行うことを含む。
【００２１】
本発明のさらに別の１以上の形態によれば、記録媒体に、プロセッサと各々が自己に関連する識別番号を有する複数のハードウェアレジスタとに複数のステップを実行させるように機能する少なくとも１つのソフトウェア命令を保持する。これらのステップは、計算を行って算出値を取得し、この算出値を、ハードウェアレジスタのうちの少なくとも１つにロードし、上記の算出値を、識別番号のうちのひとつとこれに関連するハードウェアレジスタに対するインデックスとして使用し、（ｉ）上記の算出値によるインデックスが付けられたハードウェアレジスタからデータにアクセスし、このデータをランダムアクセスメモリ（ＲＡＭ）の指定されたアドレスにコピーすることにより、プロセッサに接続されたＲＡＭにデータを格納することと、（ｉｉ）ＲＡＭの指定されたアドレスからデータにアクセスし、算出値によるインデックスが付けられたハードウェアレジスタにデータをコピーすることにより、ＲＡＭからデータをロードすることのうちの少なくとも１つを行うことを含むものであってもよい。
【００２２】
本発明のさらに別の１以上の形態によれば、処理システムが、処理システムのプロセッサと各々が自己に関連する識別番号を有する複数のハードウェアレジスタとに複数のステップを実行させるように機能する少なくとも１つのソフトウェア命令を保持する記録媒体を含む。これらのステップは、計算を行って算出値を取得し、この算出値を、ハードウェアレジスタのうちの少なくとも１つにロードし、上記の算出値を、識別番号のうちのひとつとこれに関連するハードウェアレジスタに対するインデックスとして使用し、（ｉ）上記の算出値によるインデックスが付けられたハードウェアレジスタからデータにアクセスし、このデータをランダムアクセスメモリ（ＲＡＭ）の指定されたアドレスにコピーすることにより、プロセッサに接続されたＲＡＭにデータを格納することと、（ｉｉ）ＲＡＭの指定されたアドレスからデータにアクセスし、算出値によるインデックスが付けられたハードウェアレジスタにデータをコピーすることにより、ＲＡＭからデータをロードすることのうちの少なくとも１つを行うことを含むものであってもよい。
【発明を実施するための最良の形態】
【００２３】
以下、実例を示す目的で、現時点で好ましい形態を図面に示してはあるが、しかしながら、本発明は図示した厳密な構成や手段に限定されるものではない点は理解されたい。
図面を参照すると、本発明の１以上の形態による処理システム１００のブロック図が図１に示されている。なお、図面では、同様の参照符号により同様の要素が示されている。この処理システム１００は、好ましくは、プロセッサ１０２と、ＲＡＭ１０４と、複数のレジスタ１０６（個々にＲ０、Ｒ１、Ｒ２、．．．Ｒｓを付す）とを含む。プロセッサ１０２、ＲＡＭ１０４およびレジスタ１０６は、ＢＵＳ１０８によって作用的に相互接続されている。一般的な意味では、処理システム１００は、複数のレジスタ１０６のうちの１以上が、１以上の他のレジスタ１０６に対するそれぞれのインデックスを含む、インデックス付けの手法を利用して、レジスタ１０６間でデータを移動およびコピーすることができる。
【００２４】
本発明の１以上の形態によれば、処理システム１００は新規な命令セットを利用して動作することができ、この命令セットには、それぞれのレジスタに関連したインデックスを用いて複数のレジスタ１０６のうちの１以上にアクセスできる１以上のコンピュータ命令を含む。特に、１以上の命令を含むコンピュータプログラムの実行中（すなわち、プログラムの実行時）に値が計算される。この算出値は複数のレジスタ１０６のうちの１つに入力される。その後、複数のレジスタのうちの１つに格納された値をインデックスとして利用して、複数のレジスタ１０６のうちのデータが格納されている別のレジスタを指し示す。続いて、以後の処理ステップに従ってデータがアクセスされ、使用される。
【００２５】
本発明のさらに別の形態によれば、実行時インデックス付きレジスタアクセスについては、レジスタアクセスが企図され、利点が得られるであろう命令いくつに適用しても構わない。たとえば、ｍｏｖｅ命令、ｓｔｏｒｅ命令、ｌｏａｄ命令などにレジスタアクセスを関与させることができる。本発明のインデックス付きレジスタアクセスの特徴を採用できる命令数およびシナリオ数は、すべてを列挙するのが不可能なほど大きくなり得る。よって、簡単明瞭にするために、本発明のインデックス付きレジスタアクセスの形態を利用できる、ｍｏｖｅ命令、ｓｔｏｒｅ命令およびｌｏａｄ命令という命令の４つの例について、詳細に説明することにする。
【００２６】
まず、ｍｏｖｅ命令の例についてみると、インデックス付きレジスタアクセスを利用する命令は以下のオペレーションコードを特徴とするものであればよい。
mov *Rm, Rp
【００２７】
命令ｍｏｖは、好ましくはＲＡＭ１０４へのアクセスを必要としない、ひとつのレジスタ１０６と別のレジスタ１０６との間でのデータの移動を示す。オペランド＊Ｒｍは、複数のレジスタ１０６のうちのもうひとつへのインデックスが所在する複数のハードウェアレジスタ１０６のうちの１つである。オペランドＲｐは、複数のハードウェアレジスタ１０６の中から選ばれたデスティネーションレジスタである。ＲＭレジスタに関連したアスタリスクは、インデックス付きレジスタアクセスが企図されていることを示すためのものである。しかしながら、命令セットでは、この指定を命令セットのビットフィールドにおける定義によって行うと好ましい。従来のレジスタアクセス命令（命令内にインデックスが固定である）と区別するのに別のビットが必要になることもある。
【００２８】
処理システム１００がｍｏｖ  ＊Ｒｍ，Ｒｐ命令を実行する際に行われる基本的な動作シーケンスには、（ｉ）ハードウェアレジスタＲｍに保持された値を、複数ある他のハードウェアレジスタ１０６のうちの１つへのインデックスとして利用し、（ｉｉ）その値でインデックスが付けられたハードウェアレジスタ１０６からデータにアクセスし、（ｉｉｉ）インデックス付きハードウェアレジスタ１０６からデスティネーションハードウェアレジスタＲｐにデータをコピーすることが含まれる。
【００２９】
以下、ｍｏｖ  ＊Ｒｍ，Ｒｐ命令の結果を達成するために、好ましくは処理システム１００によって行われるイベントのシーケンスに関してのさらに詳細について、図２〜図４を参照して説明する。図２は、好ましくはｍｏｖ  ＊Ｒｍ，Ｒｐ命令に関連して行われるプロセスステップのうちのいくつかを示す流れ図である。特に、アクション１１０では、インデックスｎの値が取得される。本発明の好適な形態によれば、インデックス値ｎは、全体としてのソフトウェアプログラムに関連してプロセッサ１０２が行う１以上の計算によって取得できる。本発明の好都合な形態によれば、この計算は、ソフトウェアプログラムの実行中に行うことができるものである。インデックス値ｎを取得したら、これをレジスタＲｍにロードする（アクション１１２）。他のアクションと併用できるこれらのアクションは、アクション１１４でのｍｏｖ  ＊Ｒｍ，Ｒｐ命令の実行が容易になるような形で複数のレジスタ１０６をセットアップする。
【００３０】
ｍｏｖ  ＊Ｒｍ，Ｒｐ命令に関連して本発明のさまざまな形態をさらに十分かつ完全に説明するために、図２のプロセスステップの部分ブロック図および部分流れ図である図３ならびに、図４の別のプロセスステップをさらに参照する。図３は、インデックス付きレジスタから固定レジスタへのデータ転送（または移動）の詳細を示すものである。この例では、レジスタＲｍが複数のレジスタ１０６のうちのレジスタＲ２であり、レジスタＲｐ（デスティネーションレジスタ）がレジスタＲ２０であると仮定する。これらのレジスタの選択と指定については、周知のレジスタ管理手法のうちのいずれを利用して達成してもよいことに注意されたい。
【００３１】
１１０Ａで示す枠は、図２のアクション１１０に対応し、ここでインデックスｎの値が取得される。この例では、いくつかの任意関数f（ｉ，ｊ，ｋ）＝ｎを利用してインデックス値ｎを計算する。この例では、関数計算の結果はｎ＝７である。アクション１１２（図２）について上述したように、この算出値ｎは、この例ではレジスタＲ２であるレジスタＲｍにロードされる。
【００３２】
ｍｏｖ  ＊Ｒｍ，Ｒｐ命令の実行（アクション１１４）開始後、レジスタＲ２内の値ｎにアクセス（アクション１１６、図２）し、この値をもうひとつのレジスタＲｎへのインデックスとして利用する（アクション１１８、図４）。図３に示すように、値ｎは７であるため、インデックス付きレジスタＲｎは、複数のレジスタ１０６のうちのレジスタＲ７である。その後、インデックス付きレジスタＲ７内に保持されたデータにアクセス（アクション１２０、図４）し、これをデスティネーションレジスタＲｐにコピーする（アクション１２２、図４）。図３に示すように、この例では、デスティネーションレジスタＲｐはレジスタＲ２０である。
【００３３】
よって、本発明のこの実施形態によれば、レジスタＲ７に保持されたデータは、レジスタＲ２に保持されたインデックス値を利用したインデックス付きレジスタアクセスによってレジスタＲ２０に移動された。好都合なことに、このイベントシーケンスは、ＲＡＭ１０４へのアクセスを必要とすることなく行われたため、データ転送を行うにあたっての全体としての待ち時間は、今まで考えられていたよりもずっと短くなる。
【００３４】
ｍｏｖ  ＊Ｒｍ，Ｒｐ命令によって達成されるデータのレジスタ内転送は、ＲＡＭ１０４への１回以上のアクセスを必要とするのではなく、もっぱら複数のレジスタ１０６を利用して行われる全体としてのテーブル参照プロシージャおよび／または命令ブランチルーチンに容易に適用できるものであることは、当業者であれば分かるであろう。
【００３５】
本発明の他の１以上の形態によれば、新規な命令セットに、以下のオペレーションコードを特徴とし得るコンピュータ命令を追加するか、あるいは従来の命令を更新することで含むことができる。
mov Rp, *Rm
【００３６】
このｍｏｖ命令は、ここでも好ましくはＲＡＭ１０４へのアクセスを必要としない、ソースレジスタＲｐからデスティネーションレジスタ１０６へのデータの移動を示す。オペランド＊Ｒｍは、デスティネーションレジスタ１０６へのインデックスが所在する複数のハードウェアレジスタ１０６のうちの１つである。
【００３７】
処理システム１００がｍｏｖ  Ｒｐ，＊Ｒｍ命令を実行する際に行われる基本的な動作シーケンスには、（ｉ）ハードウェアレジスタＲｍに保持された値を複数ある他のハードウェアレジスタ１０６のうちの１つへのインデックスとして利用し、（ｉｉ）ソースハードウェアレジスタＲｐからデータにアクセスし、（ｉｉｉ）ソースハードウェアレジスタＲｐから、インデックスされたハードウェアレジスタ１０６にデータをコピーすることが含まれる。
【００３８】
以下、ｍｏｖ  Ｒｐ，＊Ｒｍ命令の結果を達成するために、好ましくは処理システム１００によって行われるイベントのシーケンスに関してのさらに詳細について、図５〜図７を参照して説明する。図５は、好ましくはｍｏｖ  Ｒｐ，＊Ｒｍ命令に関連して行われるプロセスステップのうちのいくつかを示す流れ図である。特に、アクション１３０では、インデックスｎの値が取得される。本発明の先の実施形態と同様に、インデックス値ｎは、全体としてのソフトウェアプログラムに関連してプロセッサ１０２が行う１以上の計算によって取得できる。インデックス値ｎを取得したら、これをレジスタＲｍにロードする（アクション１３２）。これによって、アクション１３４でのｍｏｖ  Ｒｐ，＊Ｒｍ命令の実行が容易になるような形で複数のレジスタ１０６がセットアップされる。
【００３９】
ｍｏｖ  Ｒｐ，＊Ｒｍ命令に関連して本発明のさまざまな形態をさらに十分かつ完全に説明するために、図５のプロセスステップの部分ブロック図および部分流れ図である図６ならびに、図７の別のプロセスステップをさらに参照する。図６は、固定レジスタからインデックス付きレジスタへのデータ転送（または移動）の詳細を示すものである。この例では、レジスタＲｍが複数のレジスタ１０６のうちのレジスタＲ２であり、レジスタＲｐ（ソースレジスタ）がレジスタＲ２０であると仮定する。これらのレジスタの選択と指定については、周知のレジスタ管理手法のうちのいずれを利用して達成してもよい。
【００４０】
１３０Ａで示す枠は、図５のアクション１３０に対応し、ここでインデックスｎの値が取得される。この例では、任意関数f（ｉ，ｊ，ｋ）＝ｎを利用してインデックス値ｎを計算する。ここで、一貫性を保つために、計算の結果はｎ＝７である。アクション１３２（図５）について上述したように、この算出値ｎは、この例ではレジスタＲ２であるレジスタＲｍにロードされる。
【００４１】
ｍｏｖ  Ｒｐ，＊Ｒｍ命令の実行（アクション１３４）開始後、レジスタＲ２内の値ｎにアクセス（アクション１３６、図５）し、この値をもうひとつのレジスタＲｎへのインデックスとして利用する（アクション１３８、図７）。図６に示すように、インデックス付きレジスタＲｎはレジスタＲ７である。その後、ソースレジスタＲ２０内に保持されたデータにアクセス（アクション１４０、図７）し、これをインデックス付きレジスタＲ７であるデスティネーションレジスタにコピーする（アクション１４２、図７）。
【００４２】
よって、本発明のこの実施形態によれば、固定レジスタＲ２０に保持されたデータは、レジスタＲ２に保持されたインデックス値を利用したインデックス付きレジスタアクセスによってレジスタＲ７に移動された。好都合なことに、このイベントシーケンスは、ＲＡＭ１０４へのアクセスを必要とすることなく行われたため、データ転送を行うにあたっての全体としての待ち時間は、今まで考えられていたよりもずっと短くなる。
【００４３】
本発明の先の形態と同様に、ｍｏｖ  Ｒｐ，＊Ｒｍ命令によって達成されるデータのレジスタ内転送は、ＲＡＭ１０４への１回以上のアクセスを必要とするのではなく、もっぱら複数のレジスタ１０６を利用して行われる全体としてのテーブル参照プロシージャおよび／または命令ブランチルーチンに、容易に適用できる。
【００４４】
本発明のもうひとつの例によれば、新規な命令セットに、以下のオペレーションコードを特徴とするものであってもよいコンピュータ命令を含むことができる。
store *Rm, address1
【００４５】
このｓｔｏｒｅ命令は、ひとつのレジスタ１０６からＲＡＭ１０４内の位置へのデータの保存を示す。オペランド＊Ｒｍは、ＲＡＭ１０４への格納対象となるデータが所在する複数のレジスタ１０６のうちのもうひとつに対するインデックスを保持する。
【００４６】
処理システム１００がｓｔｏｒｅ  ＊Ｒｍ，ａｄｄｒｅｓｓ１命令を実行する際に行われる基本的な動作シーケンスには、（ｉ）ハードウェアレジスタＲｍに保持された値を複数ある他のハードウェアレジスタ１０６のうちの１つへのインデックスとして利用し、（ｉｉ）その値でインデックスされたハードウェアレジスタ１０６からデータにアクセスし、（ｉｉｉ）インデックス付きハードウェアレジスタ１０６からａｄｄｒｅｓｓ１の値でアドレス指定されたＲＡＭ１０４内の位置にデータをコピーすることが含まれる。
【００４７】
以下、ｓｔｏｒｅ  ＊Ｒｍ，ａｄｄｒｅｓｓ１命令の結果を達成するために、好ましくは処理システム１００によって行われるイベントのシーケンスに関してのさらに詳細について、図８〜図１０を参照して説明する。図８は、好ましくはｓｔｏｒｅ  ＊Ｒｍ，ａｄｄｒｅｓｓ１命令に関連して行われるプロセスステップのうちのいくつかを示す流れ図である。特に、アクション１５０では、インデックスｎの値が取得される。本発明の他の実施形態と同様に、インデックス値ｎは、全体としてのソフトウェアプログラムに関連してプロセッサ１０２が行う１以上の計算によって取得できる。インデックス値ｎを取得したら、これをレジスタ＊Ｒｍにロードする（アクション１５２）。これらのアクションは、アクション１５４でのｓｔｏｒｅ  ＊Ｒｍ，ａｄｄｒｅｓｓ１命令の実行が容易になるような形で複数のレジスタ１０６をセットアップする。
【００４８】
ｓｔｏｒｅ  ＊Ｒｍ，ａｄｄｒｅｓｓ１命令に関連して本発明のさまざまな形態をさらに十分かつ完全に説明するために、図８のプロセスステップの部分ブロック図および部分流れ図である図９ならびに、図１０の別のプロセスステップをさらに参照する。図９は、データのインデックス付きレジスタからメモリ位置への保存の詳細を示すものである。先の例と同様に、レジスタ＊Ｒｍが複数のレジスタ１０６のうちのレジスタＲ２であると仮定する。
【００４９】
１５０Ａで示す枠は、図８のアクション１５０に対応し、ここでインデックスｎの値が取得される。この例では、任意関数ｆ（ｉ，ｊ，ｋ）＝ｎを利用してインデックス値ｎを計算する。ここで、先の例のように、関数計算の結果はｎ＝７である。アクション１５２（図８）について上述したように、この算出値ｎは、上記同様にレジスタＲ２であるレジスタＲｍにロードされる。
【００５０】
ｓｔｏｒｅ  ＊Ｒｍ，ａｄｄｒｅｓｓ１命令の実行（アクション１５４）開始後、レジスタＲ２内の値ｎにアクセス（アクション１５６、図８）し、この値をもうひとつのレジスタＲｎへのインデックスとして利用する（アクション１５８、図１０）。図９に示すように、インデックス付きレジスタＲｎは複数のレジスタ１０６のうちのレジスタＲ７である。その後、インデックス付きレジスタＲ７内に保持されたデータにアクセス（アクション１６０、図１０）し、これをａｄｄｒｅｓｓ１の値でアドレス指定されたＲＡＭ１０４内の位置にコピーする（アクション１６２、図１０）。よって、本発明のこの実施形態によれば、レジスタＲ７内に保持されたデータは、レジスタＲ２に保持されたインデックス値を利用したインデックス付きレジスタアクセスによってＲＡＭ１０４に格納された。
【００５１】
本発明の１以上のさらに別の例によれば、新規な命令セットに、以下のオペレーションコードを特徴とし得るコンピュータ命令を追加するか、あるいは従来の命令を更新することで含むことができる。
load address1, *Rm
【００５２】
このｌｏａｄ命令は、ａｄｄｒｅｓｓ１でアドレス指定されたＲＡＭ１０４内の位置から、レジスタ＊Ｒｍに保持された値でインデックスされたデスティネーションレジスタ１０６への、データの移動を示すものである。
【００５３】
処理システム１００がｌｏａｄ  ａｄｄｒｅｓｓ１，＊Ｒｍ命令を実行する際に行われる基本的な動作シーケンスには、（ｉ）ハードウェアレジスタＲｍに保持された値を複数ある他のハードウェアレジスタ１０６のうちの１つへのインデックスとして利用し、（ｉｉ）ａｄｄｒｅｓｓ１の値でアドレス指定されたＲＡＭ１０４内の位置からデータにアクセスし、（ｉｉｉ）ＲＡＭ１０４内のその位置からインデックスされたハードウェアレジスタ１０６にデータをコピーすることが含まれる。
【００５４】
以下、ｌｏａｄ  ａｄｄｒｅｓｓ１，＊Ｒｍ命令の結果を達成するために、好ましくは処理システム１００によって行われるイベントのシーケンスに関してのさらに詳細について、図１１〜図１３を参照して説明する。図１１は、好ましくはｌｏａｄ  ａｄｄｒｅｓｓ１，＊Ｒｍ命令に関連して行われるプロセスステップのうちのいくつかを示す流れ図である。特に、アクション１７０では、インデックスｎの値が取得される。本発明の先の実施形態と同様に、インデックス値ｎは、全体としてのソフトウェアプログラムに関連してプロセッサ１０２が行う１以上の計算によって取得できる。インデックス値ｎを取得したら、これをレジスタＲｍにロードする（アクション１７２）。これによって、アクション１７４でのｌｏａｄ  ａｄｄｒｅｓｓ１，＊Ｒｍ命令の実行が容易になるような形で複数のレジスタ１０６がセットアップされる。
【００５５】
ｌｏａｄ  ａｄｄｒｅｓｓ１，＊Ｒｍ命令に関連して本発明のさまざまな形態をさらに十分かつ完全に説明するために、図１１のプロセスステップの部分ブロック図および部分流れ図である図１２ならびに、図１３の別のプロセスステップをさらに参照する。図１２は、メモリ位置からインデックス付きレジスタへのデータ転送の詳細を示すものである。他の例と同様に、レジスタＲｍがレジスタＲ２であると仮定する。
【００５６】
１７０Ａで示す枠は、図１１のアクション１７０に対応し、ここでインデックスｎの値が取得される。インデックス値ｎは任意関数ｆ（ｉ，ｊ，ｋ）＝ｎを用いて計算され、ここで、一貫性を保つために、計算の結果はｎ＝７である。アクション１７２（図１１）について上述したように、この算出値ｎは、レジスタＲ２にロードされる。
【００５７】
ｌｏａｄ  ａｄｄｒｅｓｓ１，＊Ｒｍ命令の実行（アクション１７４）開始後、レジスタＲ２内の値ｎにアクセス（アクション１７６、図１１）し、この値を、レジスタＲ７であるもうひとつのレジスタＲｎへのインデックスとして利用する（アクション１７８、図１３）。その後、ａｄｄｒｅｓｓ１でアドレス指定された位置でＲＡＭ１０４内に保持されたデータにアクセス（アクション１８０、図１３）し、これをインデックス付きレジスタＲ７であるデスティネーションレジスタにコピーする（アクション１８２、図１３）。よって、本発明のこの実施形態によれば、ＲＡＭ１０４のメモリ位置に保持されたデータが、レジスタＲ２に保持されたインデックス値を利用したインデックス付きレジスタアクセスによってレジスタＲ７にロードされる。
【００５８】
図１に示すものなどのシングルマイクロプロセッサシステムであれば本発明の利点を享受できるが、本発明によるマルチ処理システムを利用すればさらに都合のよい処理能力を達成できることが明らかになっている。この点に関して、基本処理モジュールまたはプロセッサエレメント（ＰＥ）２００のブロック図である図１４を参照する。同図に示されるように、ＰＥ２００は、Ｉ／Ｏインタフェース２０２と、処理ユニット（ＰＵ）２０４と、ダイレクトメモリアクセスコントローラ（ＤＭＡＣ）２０６と、複数のＳＰＵ２０８すなわちＳＰＵ２０８Ａ〜Ｄとを含む。ＰＵ２０４、ＳＰＵ２０８、ＤＭＡＣ２０６、メモリインタフェース２１０間でデータおよびアプリケーションを送信するのがローカル（または内部）ＰＥバス２１２である。ローカルＰＥバス２１２は、たとえば従来のアーキテクチャに準拠可能なものであってもよいし、パケットスイッチネットワークとして実現可能なものであってもよい。パケットスイッチネットワークとして実現できれば、さらにハードウェアが必要ではあるが、利用できる帯域幅が大きくなる。
【００５９】
ＰＥ２００は、デジタルロジックを実現するためのさまざまな方法を用いて構築可能なものである。しかしながら、ＰＥ２００は、シリコン基板上に相捕型金属酸化膜半導体（ＣＭＯＳ）を用いた単一の集積回路として構築されるものであると好ましい。これに代わる基板材料としては、ガリウムヒ素（ａｒｓｉｎｉｄｅ）、ガリウムアルミニウムヒ素（ａｒｓｉｎｉｄｅ）、多種多様なドーパントを用いた他のいわゆるＩＩＩ−Ｂ化合物があげられる。また、ＰＥ２００は、高速単一磁束量子（ＲＳＦＱ）ロジックなどの超電導材料を用いて実現することも可能なものである。
【００６０】
ＰＥ２００は、高帯域幅メモリ接続２１６を介してダイナミックランダムアクセスメモリ（ＤＲＡＭ）２１４と密接に関連している。ＤＲＡＭ２１４は、ＰＥ２００用のメインメモリとして機能する。ＤＲＡＭ２１４は、好ましくはダイナミックランダムアクセスメモリであるが、たとえばスタティックランダムアクセスメモリ（ＳＲＡＭ）、磁気ランダムアクセスメモリ（ＭＲＡＭ）、光メモリまたはホログラフィックメモリなどとして、他の手段を用いてＤＲＡＭ２１４を実現することも可能である。ＤＭＡＣ２０６およびメモリインタフェース２１０は、ＤＲＡＭ２１４、ＰＥ２００のＳＰＵ２０８、ＰＵ２０４の間でのデータ転送を容易にするものである。ＤＭＡＣ２０６および／またはメモリインタフェース２１０は、ＰＵ２０４およびＳＰＵ２０８のうちの１以上に一体に配置されていてもよい点に注意されたい。
【００６１】
ＰＵ２０４には、データおよびアプリケーションのスタンドアローンでの処理が可能な標準プロセッサを用いることが可能である。動作時、ＰＵ２０４は、ＳＰＵ２０８によるデータおよびアプリケーションの処理のスケジューリングと調整を行う。ＳＰＵ２０８は、好ましくは一命令複数データ（ＳＩＭＤ）プロセッサである。ＰＵ２０４の制御下、ＳＰＵ２０８は、これらのデータおよびアプリケーションの処理を並列かつ独立した形で行う。ＤＭＡＣ２０６は、共有のＤＲＡＭ２１４に格納されたデータおよびアプリケーションへのＰＵ２０４およびＳＰＵ２０８によるアクセスを制御する。ＰＵ２０４は、サブ処理ユニット２０８によるデータおよびアプリケーションの処理のスケジューリングと調整を行うメイン処理ユニットの役割を担うサブ処理ユニット２０８のうちの１つによって実現可能である点に注意されたい。
【００６２】
ＰＥ２００などの多数のＰＥを結合するかひとまとめにし、処理能力を高めるようにしてもよい。
【００６３】
図１５は、ＳＰＵ２０８の構造および機能を示している。ＳＰＵ２０８は、ローカルメモリ２５０と、レジスタ２５２と、１以上の浮動小数点演算ユニット２５４と、１以上の整数演算ユニット２５６とを含む。しかしながら、ここでも必要な処理能力によっては、これよりも多いまたは少ない数の浮動小数点演算ユニット（ｆｌｏａｔｉｎｇ  ｐｏｉｎｔｓ  ｕｎｉｔ）２５４および整数演算ユニット２５６を用いてもよい。好ましい実施形態では、ローカルメモリ２５０には２５６キロバイトの記憶領域があり、レジスタ２５２の容量は１２８×１２８ビットである。浮動小数点演算ユニット２５４は、好ましくは１秒あたり３２０億回の浮動小数点演算を行う速度（３２ギガフロップス）で動作し、整数演算ユニット２５６は、好ましくは１秒あたり３２０億回の演算を行う速度（３２ギガオプス）で動作する。
【００６４】
ＳＰＵ２０８にキャッシュコヒーレンシーのサポートは不要であるため、ローカルメモリ２５０はキャッシュメモリであってもキャッシュメモリでなくてもよい。ローカルメモリ２５０は、スタティックランダムアクセスメモリ（ＳＲＡＭ）として構築されるものであると好ましい。ＰＵ２０４は、このＰＵ２０４によって開始されるダイレクトメモリアクセスにキャッシュコヒーレンシーのサポートを必要とする場合がある。しかしながら、ＳＰＵ２０８によって開始されるダイレクトメモリアクセスまたは外部デバイスとの間のアクセスにキャッシュコヒーレンシーのサポートは必要ない。
【００６５】
ＳＰＵ２０８は、ＳＰＵ２０８との間でアプリケーションおよびデータを送受信するためのバス２１２をさらに含む。好ましい実施形態では、バス２１２は２５６ビット幅である。ＳＰＵ２０８は、内部バス２６０、２６２および２６４をさらに含む。好ましい実施形態では、バス２６０は幅２５６ビットであり、ローカルメモリ２５０とレジスタ２５２との間での通信を可能にするものである。バス２６２および２６４はそれぞれ、レジスタ２５２と浮動小数点演算ユニット２５４との間、レジスタ２５２と整数演算ユニット２５６との間の通信を可能にするものである。好ましい実施形態では、レジスタ２５２から浮動小数点演算ユニットまたは整数演算ユニットへのバス２６２および２６４の幅は３８４ビットであり、浮動小数点演算ユニットまたは整数演算ユニット２５４、２５６からレジスタ２５２へのバス２６２および２６４の幅は１２８ビットである。レジスタ２５２から浮動小数点演算ユニットまたは整数演算ユニット２５４、２５６への上記のバスの幅の方が、これらのユニットからレジスタ２５２へのバスの幅よりも広ければ、処理時にレジスタ２５２からのデータフローを大きくすることができる。１回の算出ごとに最大３ワードが必要である。しかしながら、それぞれの算出結果は通常、１ワードである。
【００６６】
本発明は、少なくともその一部を、ｍｏｖ  ＊Ｒｍ，Ｒｐ命令、ｍｏｖ  Ｒｐ，＊Ｒｍ命令、ｓｔｏｒｅ  ＊Ｒｍ，ａｄｄｒｅｓｓ１、ｌｏａｄ  ａｄｄｒｅｓｓ１，＊Ｒｍ命令などの１以上のコンピュータ命令を含むソフトウェアプログラムによって、処理システムに適用することができる点に注意されたい。よって、本発明の利点は、磁気ディスク、光ディスク、電子記録媒体あるいは、現時点で周知または将来的に開発される他のあらゆる記録媒体などの記録媒体から、このようなソフトウェアプログラムをロードするシステムで享受できるものである。
【００６７】
好都合なことに、本発明は、レジスタをローカルメモリとして用いてデータ操作を達成できるように、かつ、データの保存またはランダムアクセスメモリからのロードを回避できるように、複数のレジスタをインデックスした形で利用するための方法および装置を提供するものである。これは、メモリアクセスを大幅に減らし、これに関連する待ち時間を回避できることから、ひとつのレジスタからもうひとつのレジスタにデータを移動、ひとつのレジスタからもうひとつのレジスタにデータをコピーするなどのレジスタ内データ処理を改善できる方法および装置に対する、従来技術における需要に少なくともある程度対処するものである。
【００６８】
以上、本発明によれば、複数のレジスタ１０２のうちの１つにロードされるレジスタインデックスの計算を含む処理シーケンスの実行を可能にする方法および装置が提供される。この方法及び装置では、そのインデックスを利用して複数のレジスタ１０２のうちの別の１つを識別し、インデックス付きレジスタからデータにアクセスまたはインデックス付きレジスタにデータをコピーし、さらに他のレジスタまたはメモリ位置との間でデータをコピーする。
なお、特定の実施形態を参照して本発明について説明したが、これらの実施形態は単に本発明の原理と用途とを示す一例にすぎないことは理解されたい。したがって、添付の特許請求の範囲に定義した本発明の趣旨および範囲から逸脱することなく、図示の実施形態に対してさまざまな改変を施すことができ、他の構成を考案できる点を理解されたい。
【図面の簡単な説明】
【００６９】
【図１】本発明の１以上の形態によるレジスタ内転送を実行できる処理システムのブロック図である。
【図２】本発明の他の１以上の形態による、図１に示したような処理システムによって少なくとも一部が実行可能な、プロセスステップを示す流れ図である。
【図３】本発明の他の１以上の形態による図２のプロセスステップをさらに示したものならびに別のプロセスステップの部分ブロック図および部分流れ図である。
【図４】図３のプロセスステップのうちのいくつかをさらに示す流れ図である。
【図５】本発明の他の１以上の形態による、図１に示したような処理システムによって少なくとも一部が実行可能なプロセスステップを示す流れ図である。
【図６】本発明の別の形態による、図５のプロセスステップをさらに示したものならびに別のプロセスステップの部分ブロック図および部分流れ図である。
【図７】図６のプロセスステップのうちのいくつかをさらに示す流れ図である。
【図８】本発明の１以上の形態による、図１に示したような処理システムによって少なくとも一部が実行可能なプロセスステップを示す流れ図である。
【図９】本発明のさらに別の形態による、図８のプロセスステップをさらに示したものならびに別のプロセスステップの部分ブロック図および部分流れ図である。
【図１０】図９のプロセスステップをさらに示す流れ図である。
【図１１】本発明の１以上の形態による、図１に示したような処理システムによって少なくとも一部が実行可能なプロセスステップを示す流れ図である。
【図１２】本発明の他の１以上の形態による、図１１のプロセスステップをさらに示したものならびに別のプロセスステップの部分ブロック図および部分流れ図である。
【図１３】図１２のプロセスステップをさらに示す流れ図である。
【図１４】図２〜図１３のうちの１以上のプロセスステップを実行するにあたって、本発明の別の実施形態で利用可能なプロセッサエレメント（ＰＥ）と呼ばれる別の処理システムを示すブロック図である。
【図１５】本発明の他の１以上の形態による代表的なサブ処理ユニット（ＳＰＵ）の好ましい構造を示すブロック図である。
【符号の説明】
【００７０】
１００      処理システム
１０２      プロセッサ
１０６      レジスタ
２０２      インタフェース
２０８      サブ処理ユニット
２１０      メモリインタフェース
２１２      バス
２５０      ローカルメモリ
２５２      レジスタ
２５４      浮動小数点演算ユニット
２５６      整数演算ユニット
２６０      内部バス
２６２      バス
【図１】
2005322240.tif 000003
【図２】
2005322240.tif 000004
【図３】
2005322240.tif 000005
【図４】
2005322240.tif 000006
【図５】
2005322240.tif 000007
【図６】
2005322240.tif 000008
【図７】
2005322240.tif 000009
【図８】
2005322240.tif 000010
【図９】
2005322240.tif 000011
【図１０】
2005322240.tif 000012
【図１１】
2005322240.tif 000013
【図１２】
2005322240.tif 000014
【図１３】
2005322240.tif 000015
【図１４】
2005322240.tif 000016
【図１５】
2005322240.tif 000017