(57)【要約】【解決手段】プロセッサはプログラム命令に基づいて第1登録をアクセスし、第1レジスタアウト値を取得し、第1レジスタアウト値をアクセスし、第２レジスタ値を取得し、プログラム命令に基づいて第２レジスタアウト値を第３レジスタに記憶することを含む方法を実行することができる。プロセッサはプログラム命令に基づいて第１レジスタをアクセスし、第１レジスタアウト値を得ること、プログラム命令に基づいて第２レジスタをアクセスし、第２レジスタアウト値を取得すること、第２レジスタアウト値に基づいて第１レジスタアウト値を第３レジスタに記憶することを含む方法を実行することができる。  を含む方法。【選択図】      図３
2008535065.tif 000002
【特許請求の範囲】
【請求項１】
プログラム命令に基づいて第1登録をアクセスし、第1レジスタアウト値を取得すること、
第1レジスタアウト値をアクセスし、第２レジスタ値を取得すること、
プログラム命令に基づいて前記第２レジスタアウト値を第３レジスタに記憶すること、
を含む方法。
【請求項２】
前記プログラム命令のソースフィールドから値を読み取ること及びソースフィールド値に基づいて第１レジスタをアクセスすることを更に含む、請求項１の方法。
【請求項３】
プログラム命令の目的フィールドから値を読み取ること及び前記目的フィールド値に応答して前記第２レジスタアウト値を記憶することを更に含む、方法。
【請求項４】
前記第１レジスタアウト値に数学／論理演算を行うこと及び前記数学／論理演算の結果に基づいて前記第２レジスタをアクセスすることを更に含む、請求項１の方法。
【請求項５】
前記第２レジスタアウト値に数学／論理演算を行うこと及び前記目的フィールド値に基づいて前記第３レジスタに前記数学／論理演算結果を記憶することを更に含む、請求項１の方法。
【請求項６】
前記第２レジスタアウト値に基づいて第３レジスタをアクセスすること及び前記目的フィールド値に基づいて第４レジスタに記憶するための第３レジスタ値を取得することを更に含む、請求項１の方法。
【請求項７】
プログラム命令のソースフィールドから値を読み取ること、
前記ソースフィールド値に基づいて第１レジスタをアクセスし、第１レジスタアウト値を取得すること、
前記第１レジスタアウト値に第１数学／論理演算を随意的に行うこと、
前記第１数学／論理演算の結果に基づいて第２レジスタをアクセスし、第２レジスタアウト値を取得すること、
前記第２レジスタアウト値に第２数学／論理演算を随意的に行うこと、
前記プログラム命令の目的フィールドから値を読み取ること、
前記目的フィールド値に基づいて前記第２数学／論理演算結果を第３レジスタに記憶すること、
を含む方法。
【請求項８】
前記第２レジスタアウト値に基づいて第３レジスタをアクセスすること、前記目的フィールド値に基づいて第４レジスタに記憶するための第３レジスタアウト値を取得することを更に含む、方法。
【請求項９】
ディジタル信号プロセッサにおいて実行するための処理を符号化したコンピュータ読み取り可能媒体であって、
プログラム命令に基づいて第１レジスタをアクセスし、第１レジスタアウト値を取得すること、
前記第１レジスタアウト値に基づいて第２レジスタをアクセスし、第２レジスタアウト値を取得すること、
前記プログラム命令に基づいて前記第２レジスタアウト値を第３レジスタに記憶すること、
を含む、コンピュータ読み取り可能媒体。
【請求項１０】
前記プログラム命令のソースフィールドから値を読み取ること及び前記ソースフィールドに基づき前記第１レジスタをアクセスすることを更に含む、請求項９のプロセス。
【請求項１１】
前記プログラム命令の目的フィールドから値を読み取ること及び前記目的フィールド値に応答して前記第２レジスタアウト値を記憶することを更に含む、請求項９のプロセス。
【請求項１２】
前記第１レジスタアウト値に数学／論理演算を行うこと及び前記数学／論理演算の結果に基づいて前記第２レジスタをアクセスすることを更に含む、請求項９のプロセス。
【請求項１３】
プログラム命令に基づいて第１レジスタをアクセスし、第１レジスタアウト値を取得する手段と、
前記第１レジスタアウト値に基づいて段２レジスタをアクセスし、第２レジスタアウト値を取得する手段と、
前記プログラム命令に基づいて前記第２レジスタアウト値を第３レジスタに記憶する手段と、
を含む、プロセッサ。
【請求項１４】
前記プログラム命令のソールフィールドから値を読み出し、前記ソースフィールド値に基づいて前記第１レジスタをアクセスする手段を更に含む、請求項１３のプロセッサ。
【請求項１５】
前記プログラム命令の目的フィールドから値を読み出し、前記目的フィールド値に応答して前記第２レジスタアウト値を記憶する手段を更に含む、請求項１３のプロセッサ。
【請求項１６】
前記第１レジスタアウト値に数学／論理演算を行い、前記数学／論理演算の結果に基づいて前記第２レジスタをアクセスする手段を更に含む、請求項１３のプロセッサ。
【請求項１７】
プログラム命令に基づいて第１レジスタをアクセスし、第１レジスタアウト値を取得すること、
前記プログラム命令に基づいて第２レジスタをアクセスし、第２レジスタアウト値を取得すること、
前記第２レジスタアウト値に基づいて前記第１レジスタアウト値を第３レジスタに記憶すること、
を含む、方法。
【請求項１８】
前記プログラム命令のソースフィールドから値を読み取ること及び前記ソースフィールド値に基づいて前記第１レジスタをアクセスすることを更に含む、請求項１７の方法。
【請求項１９】
前記プログラム命令の目的フィールドから値を読み取ること及び前記目的フィールド値に応答して前記第１レジスタアウト値を記憶することを更に含む、請求項１７の方法。
【請求項２０】
前記第１レジスタアウト値に数学／論理演算を行うこと及び前記数学／論理演算の結果に基づいて前記第３レジスタに前記第１レジスタアウト値を記憶することを更に含む、請求項１７の方法。
【請求項２１】
前記第１レジスタアウト値に第１数学／論理演算を行うこと及び前記第３レジスタに結果を記憶することを更に含む、請求項１７の方法
【請求項２２】
前記第２レジスタアウト値に数学／論理演算を行うこと及び前記数学／論理演算の結果に基づいて前記第２レジスタをアクセスすることを更に含む、請求項２１の方法。
【請求項２３】
プログラム命令に基づいて第１レジスタをアクセスし、第１レジスタアウト値を取得すること、
前記プログラム命令に基づいて第２レジスタをアクセスし、第２レジスタアウト値を取得すること、
前記第２レジスタアウト値に基づいて前記第１レジスタアウト値を第３レジスタに記憶すること、
を含む、方法を復号化したコンピュータ読み取り可能媒体。
【請求項２４】
プログラム命令に基づいて第１レジスタをアクセスし、第１レジスタアウト値を取得する手段と、
前記プログラム命令に基づいて第２レジスタをアクセスし、第２レジスタアウト値を取得する手段と、
前記第２レジスタアウト値に基づいて前記第１レジスタアウト値を第３レジスタに記憶する手段と、
を含む、プロセッサ。
【請求項２５】
前記プログラム命令のソールフィールドから値を読み取ること及び前記ソースフィールド値に基づいて前記第１レジスタをアクセスすることを更に含む、請求項１７のプロセッサ。
【請求項２６】
前記プログラム命令の目的フィールドから値を読み取ること及び前記目的フィールド値に応答して前記第１レジスタアウト値を記憶することを更に含む、請求項２４のプロセッサ。
【請求項２７】
前記第２レジスタアウト値に数学／論理演算を行うこと及び前記数学／論理演算の結果に基づいて前記第３レジスタに前記第１レジスタアウト値を記憶することを更に含む、請求項２４のプロセッサ。
【請求項２８】
前記第１レジスタアウト値に第１数学／論理演算を行うこと及び前記第３レジスタに結果を記憶することを更に含む、請求項２４のプロセッサ。
【請求項２９】
プログラム命令に基づいて第１レジスタをアクセスし、第１レジスタアウト値を取得することができる第１実行ユニットと、
前記第１レジスタアウト値に基づいて段２レジスタをアクセスし、第２レジスタアウト値を取得し、前記プログラム命令に基づいて前記第２レジスタアウト値を第３レジスタに記憶することができる第２実行ユニットと、
を含む、プロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般的に複数プロセッサに関し、特に間接レジスタ読み取り及び書込み動作の一プロセッサ及び方法に関する。
【背景技術】
【０００２】
ディジタルプロセッサは高速で数学演算を実行できる専用プロセッサである。ディジタル信号プロセッサ（ＤＳＰ）は画像処理、オーディオ処理、ビデオ処理及び多くの他のアプリケーションに用いられる。ディジタル信号プロセッサは移動電話、個人用ディジタル補助装置、カメラ、ビデオカメラ、及び携帯コンピュータシステムのような各種装置に共通に内蔵されている。実行速度を高めるために、幾つかのディジタル信号プロセッサは複数のハードウェアスレッドの並列実行を支援するインタリーブマルチスレッドアーチテクチャを有する。複数のスレッドからの命令は実行パイプラインでインタリーブされる。このアーチテクチャは高コア及びメモリ稼働率を維持しながら積極的クロック周波数を使用できる。
【発明の開示】
【０００３】
任意のレジスタに格納された値を他のレジスタの値をレジスタインデックスとして用いてアクセスする方法及びシステムはここに記載されている。
【０００４】
開示の実施形態の一態様において、方法はプログラム命令に基づいて第１レジスタをアクセスし、第１レジスタアウト値を取得すること、第１レジスタアウト値に基づいて第２レジスタをアクセスし、第２レジスタアウト値を取得すること、及びプログラム命令に基づいて第２レジスタアウト値を第３レジスタに記憶することを含む。
【０００５】
開示の実施形態の他の態様では、方法はプログラム命令のソースフィールドから値を読み取ること、ソースフィールドに基づいて第１レジスタをアクセスし、第１レジスタアウト値を取得すること、第１レジスタアウト値に第１数学／論理演算を随意的に行うこと、第１数学／論理演算の結果に基づいて第２レジスタをアクセスし、第２レジスタアウト値を取得すること、第２レジスタアウト値に第２数学／論理演算を随意的に行うこと、プログラム命令の目的フィールドから値を読み取ること、目的フィールド値に基づいて第２数学／論理演算の結果を第３レジスタに記憶することを含む。
【０００６】
開示の実施形態の他の態様では、コンピュータ読み取り可能媒体はディジタル信号プロセッサにて実行するプロセスを符号化している。このプロセスはプログラム命令に基づいて第１レジスタをアクセスし、第１レジスタアウト値を取得すること、第１レジスタアウト値に基づいて第２レジスタをアクセスし、第２レジスタアウト値を取得すること、及びプログラム命令に基づいて第２レジスタアウト値を第３レジスタに記憶することを含む。
【０００７】
開示の実施形態の他の態様では、プロセッサはプログラム命令に基づいて第１レジスタをアクセスし、第１レジスタアウト値を取得する手段と、第１レジスタアウト値に基づいて第２レジスタをアクセスし、第２レジスタアウト値を取得する手段と、プログラム命令に基づいて第２レジスタアウト値を第３レジスタに記憶する手段とを具備する。
【０００８】
開示の実施形態の他の態様では、方法はプログラム命令に基づいて第１レジスタをアクセスし、第１レジスタアウト値を取得すること、プログラム命令に基づいて第２レジスタをアクセスし、第２レジスタアウト値を取得すること、第２レジスタアウト値に基づいて第１レジスタアウト値を第３レジスタに記憶することを含む。
【０００９】
開示の実施形態の他の態様では、コンピュータ読み取り可能媒体はプログラム命令に基づいて第１レジスタをアクセスし、第１レジスタアウト値を取得すること、プログラム命令に基づいて第２レジスタをアクセスし、第２レジスタアウト値を取得すること、第２レジスタアウト値に基づいて第１レジスタアウト値を第３レジスタに記憶することを含む方法を符号化した。
【００１０】
開示の実施形態の他の態様では、プロセッサはプログラム命令に基づいて第１レジスタをアクセスし、第１レジスタアウト値を取得する手段と、プログラム命令に基づいて第２レジスタをアクセスし、第２レジスタアウト値を取得する手段と、第２レジスタアウト値に基づいて第１レジスタアウト値を第３レジスタに記憶する手段とを含む。
【００１１】
開示の実施形態の他の態様では、プロセッサはプログラム命令に基づいて第１レジスタをアクセスし、第１レジスタアウト値を取得することができる第１実行ユニットと、第１レジスタアウト値に基づいて第２レジスタをアクセスし、第２レジスタ値を取得し、プログラム命令に基づいて第２レジスタアウト値を第３レジスタに記憶することができる第２実行ユニットとを含む。
【発明を実施するための最良の形態】
【００１２】
図１はプロセッサパイプライン１０の実施形態の簡単な論理フロー図である。プロセッサパイプライン１０は数学演算に専用のディジタル信号プロセッサ又は汎用プロセッサで実施できる。一実施形態では、プロセッサパイプライン１０は６つのスレッドから成る命令メモリユニット１２を含む。プログラム命令は命令キャッシュ１４から取り込まれる。命令ステアリング及び事前復号ロジック１６はある所定のビットで符号化されたデータ依存性(data dependencies)及びリソースコンフリクト(resource conflicts)を命令で解決し、命令を特定の実行ユニットに送ることができる。プログラム命令は実行中の命令キュー１８に読み取られる。ディジタル信号プロセッサの実施形態では、各プログラム命令は４つの別々の命令を含む命令パケットである。各命令は命令の実行によって使用されることになる値を読み取るためにレジスタファイルにインデックスを各々に含めてもよい１つ以上のソースフィールドにより構成される。レジスタファイルはインデックスによってレジスタファイルにアクセスできるレジスタアレイとして考えてもよい。レジスタファイル読み取り動作２０は命令をスレッドに対して実行するためにオペランドを読み取らせる。複数の実行ユニット、この実施形態では命令パケットの４つの命令の各々を実行するため４つの実行ユニット２２がプログラム命令の実行を達成することができる。レジスタファイル書込み動作２４は実行結果を保存するために行われる。
【００１３】
図２はインタリーブマルチスレッド実行の簡単なタイミング図である。プロセッサパイプラインのインタリーブマルチスレッドアーチテクチャは実質的に同時に実行される６つのスレッド３１−３６（Ｔ１〜Ｔ６）からの６つの命令を可能にする。図示されているディジタル信号プロセッサの実施形態では、各プログラム命令は４つの分離命令を含む命令パケットである。各命令パケットは例えば、復号（クロックサイクルＣ１），レジスタファイルからオペランドの読み出し（クロックサイクルＣ２）、４つの命令の実行（クロックサイクルＣ３〜Ｃ６）、最後にレジスタファイルへの結果の書込み（クロックサイクルＣ７）のための７つのクロックサイクルで実行できる。第１スレッドからの命令パケットは復号されており、それからレジスタファイルがオペランドを読み出している間に、第２命令パケットが復号されている。このように動作すると、各連続する命令パケットの実行の開始が１クロックサイクルだけ先の命令パケットより遅れる。プロセッサパイプラインのこの実行特性に乗じて、以前は達成できない動作が可能となる。以前は、値をレジスタファイルから読み取り、動作中に使用するため値に対して再度レジスタファイルにインデックスとしてそれを使用するために間接読み取り動作を行うことは実用的ではなかった。また、レジスタファイルから読み出された値によって索引されたレジスタファイルの場所に結果を書き込むために間接書込み動作を行うことも実用的ではなかった。これらの動作は他のスレッドが実行している間にスレッドの命令を実行するのに利用できるロスタイムにより実行できるようになる。
【００１４】
図３は間接読み取り処理の実施形態の論理フロー図である。プログラム命令４０は目的フィールドとソースフィールド４４を含むことができる。ソースフィールド４４の値は最初に読み取られ、レジスタファイル４８にインデックス４６として使用される。インデックス４６によって示されるレジスタファイル４８での位置の値はレジスタファイル４８から読み取られ、レジスタアウト値５０は数学又は論理演算５２に使用できる。数学又は論理演算５２は、例えば、加算、減算、乗算、除算、論理ＡＮＤ（又はＮＡＮＤ）、論理ＯＲ（又はＮＯＲ）、論理ＸＯＲ，（多数の上位又は下位ビットをマスクするような）ビットマスク演算であってもよい。演算によりレジスタファイル４８にインデックス５４として使用される結果が得られる。レジスタファイル４８から読み出されるレジスタアウト値５６は他の数学又は論理演算５８に使用され、その結果６０は命令ｋ４０の目的フィールド４２から読み出されるインデックス値６２によって索引されるようにレジスタファイル４８に書き込まれる。前述では、数学又は論理演算５２及び／又は５８はオプションステップであってもよい。間接読み取り動作では、レジスタファイルへのインデックスを得るためのレジスタの読み取りを他の値を得るために複数回繰り返してもよく。この値はオペランド又は他のレジスタインデックスとして順次使用できる。この論理フローはハードウェア、ソフトウェア又はそれらの組合せであってもよい。
【００１５】
図４は間接書き込み処理の実施形態の論理フロー図である。プログラム命令７０はレジスタファイル７６へのインデックス７４として使用される値を持ったソースフィールド７２を含む。インデックス７４によって索引される位置に記憶されたレジスタアウト値７８は数学又は論理演算８０において使用されるために読み出される。結果８２はインデックス９２によって示される位置でレジスタファイル７６に書き込まれる。インデックス９２はプログラム命令７０の目的フィールド８４からインデックス値を読み取ることによって決定され、レジスタフィールド７６を読み取るために使用される。レジスタファイル７６から読み出されるレジスタアウト値８８は数学又は論理演算９０に使用される。演算の結果は演算８０の結果を記憶するレジスタファイル７６へのインデックスとして使用される。このように、間接書き込み動作はレジスタファイルへのインデックスを得るレジスタの読み取りを他の値を得るために複数回繰り返してもよく、この値はオペランド又は結果を記憶する位置を示す他のレジスタインデックスとして順次使用できる。このロジックフローはハードウェア、ソフトウェア又はその組み合わせで実行できる。
【００１６】
プログラムコードライタに、レジスタに記憶される値に基づいて任意のレジスタに値を抽出し、記憶する能力を与えることによってプログラムロジックを扱うより多くの柔軟性が可能となる。コンパイル時間でのアクセスパターンが未知の時でもレジスタに記憶される１セットの値へのアクセスが可能になる。以前は、レジスタの値に基づいてレジスタに記憶されている値をアクセスすることは難しく又はうまくいかなかった。
【００１７】
本明細書の実施形態は詳細に記述されたけれども、当業者は、本開示の精神及び範囲から逸脱しないで種々変更、置換、変形できることを理解するはずである。従って、全てのそのような変更、置換、変形は請求項に規定されたように本会時の範囲内で含まれることを意図している。請求項において、手段プラス機能節は記載された機能を行うように記述された構成及び構成的等価だけでなく等価な構成をカバーすることを意図している。
【図面の簡単な説明】
【００１８】
【図１】プロセッサパイプラインの実施形態の簡単な論理フロー図である。
【図２】プロセッサパイプラインのインタリーブマルチスレッド実行の簡単なタイミング図である。
【図３】間接読み取り処理の実施形態の論理フロー図である。
【図４】間接書込み処理の実施形態の論理フロー図である。
【図１】
2008535065.tif 000003
【図２】
2008535065.tif 000004
【図３】
2008535065.tif 000005
【図４】
2008535065.tif 000006
【国際調査報告】
2008535065.tif 000007
2008535065.tif 000008