(57)【要約】  幾つかの異なったデータ・フォーマットを処理するようプロセッサを適応させることは、第１の記憶装置からの第１のフォーマットにデータ・ワードをロードすることと、それが算術ユニットに達する前に、データ・ワードの第１のフォーマットを、算術ユニットの本来の順番と両立し得る第２のフォーマットに再順番付けすることと、算術ユニットにおいてデータ・ワードをベクトル処理することと、を含む。
2009529188.tif 000002
【特許請求の範囲】
【請求項１】
置換可能なアドレス・モードを有するプロセッサであって、
レジスタ・ファイルを含む算術ユニットと、
前記レジスタ・ファイルを記憶装置と相互接続する少なくとも１つのロード・バス及び少なくとも１つの記憶バスと、
前記レジスタ・ファイル及び記憶装置間で転送されるワードのデータ素子を再順番付けするための前記バスの少なくとも１つにおける置換回路と、
を備えたプロセッサ。
【請求項２】
前記ロード及び記憶バスの各々は、前記置換回路を含む請求項１に記載のプロセッサ。
【請求項３】
２つのロード・バスがあり、その各々が置換回路を含む請求項１に記載のプロセッサ。
【請求項４】
前記置換回路は、前記レジスタ・ファイル及び記憶装置間で転送されるワードのデータ素子を再順番付けするためのマップ回路を含む請求項１に記載のプロセッサ。
【請求項５】
前記置換回路は、前記レジスタ・ファイル及び記憶装置間で転送されるワードのデータ素子を再順番付けするための転置回路を含む請求項１に記載のプロセッサ。
【請求項６】
前記レジスタ・ユニットは、少なくとも１つのレジスタを含む請求項４に記載のプロセッサ。
【請求項７】
前記レジスタ・ファイルは、少なくとも１つのレジスタを含む請求項５に記載のプロセッサ。
【請求項８】
前記マップ回路は、少なくとも１つのマップ・レジスタを含む請求項４に記載のプロセッサ。
【請求項９】
前記マップ・レジスタは、データ素子ごとのフィールドを含む請求項８に記載のプロセッサ。
【請求項１０】
前記マップ・レジスタは、前記算術ユニットからロード可能である請求項８に記載のプロセッサ。
【請求項１１】
前記マップ・レジスタの少なくとも１つは、大きいエンディアン小さいエンディアン・マップと共にロードされるデフォルトである請求項８に記載のプロセッサ。
【請求項１２】
前記データ素子はバイトである請求項１に記載のプロセッサ。
【請求項１３】
幾つかの異なったデータ・フォーマットを処理するようプロセッサを適応させる方法であって、
記憶装置からのワードでデータ・レジスタをロードする段階と、
それが算術ユニットのデータ・レジスタ・ファイルに到達する前にベクトル配向された算術ユニットの本来の順番と両立し得る第２のフォーマットにそれを再順番付けする段階と、
前記算術ユニットにおいてデータ・レジスタ・ワードをベクトル処理する段階と、
を含む方法。
【請求項１４】
第２のデータ・レジスタ装置にベクトル処理の結果を記憶する請求項１３に記載の方法。
【請求項１５】
記憶された結果は、前記第１のフォーマットに再順番付けされ得る請求項１３に記載の方法。
【請求項１６】
前記第２の記憶装置及び前記第１の記憶装置は、同じ記憶装置に含まれる請求項１３に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶装置と算術（arithmetic）ユニットとの間で履行される置換可能なアドレス・モード・プロセッサ及び方法に関する。
【背景技術】
【０００２】
より初期のコンピュータ及びプロセッサは、ただ１つの計算（compute）ユニットを有していたものであり、それ故、例えば画像の処理は、一度に１つのピクセルを生じていたものであり、ここに、１つのピクセルは８ビット（バイト）を有する。画像サイズの成長と共に、高性能の次々と大量に送り込まれるベクトル処理プロセッサが必要になってきた。ベクトル・プロセッサは、１つの命令において全ベクトル上で動作することができるプロセッサである。シングル・インストラクション・マルチプル・データ（ＳＩＭＤ：単一命令の多数データ）は、ピクセル・レベルで並列処理を適用することができるベクトル配向された処理のもう１つの形態である。この方法は、先の動作の結果への依存性が無い場合の画像動作に対して適切である。ＳＩＭＤプロセッサは、データの異なったセット上の並列な類似の問題を解決することができるので、それは、単一の計算ユニット・プロセッサよりもｎ倍早いものとして特徴付けられ得、ここに、ｎは、ＳＩＭＤにおける計算ユニットの数である。ＳＩＭＤ動作に対して、メモリ・フェッチは、サイクルごとに、すなわち、使用下のｎ倍の速度優位で、各計算ユニットにデータを提起しなければならない。代表的には、例えば、３２ビット（４バイト）機械において、データは、メモリから２つの３２ビット（４バイト）レジスタにおけるロー（行）に２つのバスに渡ってロードされ、ここに、それらバイトは４つの隣接したコラム（列）にあり、各バイトは、それと関連した計算ユニットを有する。次に、単一の命令がすべての計算ユニットに命令して、同じコラム（列）においてバイトごとにレジスタにおけるデータ上で同じ動作をネイティブ・モードで行わせ、１サイクルにおいてメモリに３２ビットの結果を記憶させることができる。例えば２Ｄの画像処理応用において、これは、垂直エッジ・フィルタリング（vertical edge filtering）に対して良好に動作する。しかし、データがコラム（列）で記憶される水平エッジ・フィルタリング（horizontal edge filtering）に対しては、すべてのレジスタは、動作が始まることができる前にロードされなければならず、完了後に、その結果は一度に１バイトで記憶されなければならない。このことは、時間浪費かつ非効率であり、そして計算ユニットの数が増加するにつれ、一層そうなる。
【０００３】
ＳＩＭＤまたはベクトル処理機械は、また、“小さいエンディアン（little endian）”及び“大きいエンディアン（big endian）”のデータ・タイプに適応させることにおける問題に遭遇する。“小さいエンディアン”及び“大きいエンディアン”は、どのバイトが多数バイト・タイプにおける最上位であるかということに言及しており、そしてバイトのシーケンスがプロセッサ・メモリに記憶されている順番を記載している。小さいエンディアン・システムにおいては、シーケンスにおける最下位バイトが最も低い記憶アドレス（第１）に記憶される。“大きいエンディアン”は、その反対であり、それは、シーケンスにおける最上位バイトを最も低い記憶アドレスに記憶する。現在のシステムは、オペレーティング・システムへのユーザ・インターフェースから低レベル信号処理への暗号化までのすべてのレベルをサービスする。このことは、通常、ユーザ・インターフェースの一層高いレベル及びオペレーティング・システムが“小さいエンディアン”において行われるのに反して、信号処理及び暗号化は、“大きいエンディアン”において行われるので、“混合されたエンディアン”の適用に導く。従って、プログラマは、データが処理される前に一方から他方に変形するための命令、またはそれが提起される形態においてデータと共に動作するよう処理を構成するための命令を提供しなければならない。
【０００４】
ＳＩＭＤ動作において遭遇されるもう１つの問題は、データが、実際、アルゴリズムにおける次のステップに対する提起のために、拡散され、または再編成され（shuffled）、または置換され（permutated）なければならないということである。このことは、データがアルゴリズムにおける次のステップによって要求されるフォーマットにある前に、パイプライン・ストール（次々に送り込まれることによる機能停止）に伴う別のステップを必要とする。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従って、本発明の目的は、置換可能なアドレス・モードを有した改良されたプロセッサ及び方法を提供することである。
【０００６】
本発明のさらなる目的は、ＳＩＭＤのようなベクトル配向されたプロセッサの効率を改善する置換可能なアドレス・モードを有した、かかる改良されたプロセッサ及び方法を提供することである。
【０００７】
本発明のさらなる目的は、算術ユニットに対して外部でアドレス・モードにおける置換を行って、それにより、パイプライン・ストールを回避する、置換可能なアドレス・モードを有した、かかる改良されたプロセッサ及び方法を提供することである。
【０００８】
本発明のさらなる目的は、データ提起を統一し、それにより問題の解決法を統一して、プログラミング努力及び市場に出すまでの時間を減少することができる、置換可能なアドレス・モードを有した、かかる改良されたプロセッサ及び方法を提供することである。
【０００９】
本発明のさらなる目的は、データ提起を統一し、それにより問題の解決法を統一して、一層多くの算術ユニットを使用し、かつ結果を一層早く記憶することができる、置換可能なアドレス・モードを有した、かかる改良されたプロセッサ及び方法を提供することである。
【００１０】
本発明のさらなる目的は、データが、その本来の形態（ネイティブ・フォーム）で算術ユニットを効率的に用いるためにロード上で置換され得、次に、記憶装置上にその元の形態に戻して置換され得、ロード、解決法及び記憶動作を一層早くかつ一層効率的にする、置換可能なアドレス・モードを有した、かかる改良されたプロセッサ及び方法を提供することである。
【００１１】
本発明のさらなる目的は、混合されたエンディアン・モードに容易に適応させる、置換可能なアドレス・モードを有した、かかる改良されたプロセッサ及び方法を提供することである。
【００１２】
本発明のさらなる目的は、計算動作間でデータの高速で、容易で、効率的な再順番付け（reordering）を可能とする、置換可能なアドレス・モードを有した、かかる改良されたプロセッサ及び方法を提供することである。
【００１３】
本発明のさらなる目的は、任意の形態におけるデータが、高速で容易な処理のための機械の本来の領域形態に再順番付けされるのを可能とし、次に、望まれるならば、その元の形態に戻して再順番付けされるのを可能とする、置換可能なアドレス・モードを有した、かかる改良されたプロセッサ及び方法を提供することである。
【課題を解決するための手段】
【００１４】
本発明は、プロセッサ及び方法が、記憶装置からのデータ・ワードをロードし、それが算術ユニットに到達する前にベクトル配向された算術ユニットの本来の順番と両立し得る第２のフォーマットにそれを再順番付けし、そして算術ユニットにおいてデータ・ワードをベクトル処理することによって、幾つかの異なったデータ・フォーマットを処理することを可能とされ得るということを了解したことから帰結している。Nｇｕｙｅｎ等による「ベクトル・プロセッサのためのロード及び記憶ユニット」という名称の米国特許第５，９６１，６２８号、及び２００２年１１月、トルコのイスタンブールでのマイクロアーキテクチャに関する第３５回国際シンポジウムの議事録の１１頁における、Cｈｒｉｓｔｏｆｏｒｏｓ  Ｋｏｚｙｒａｋｉｓ及びDａｖｉｄ  Ｐａｔｔｅｒｓｏｎによる、「埋設されたマルチメディア・ベンチマークスのためのベクトル対スーパースカラ及びＶＬＩＷアーキテクチャ」を参照されたし。これらの参照によりそれらの全体をここに組み込むものとする。
【００１５】
しかしながら、本発明は、他の実施形態において、それらの目的のすべてを達成することを必要とせず、本願の特許請求の範囲は、これらの目的を達成することができる構造または方法に制限されるべきではない。
【００１６】
本発明は、レジスタ・ファイルを有する算術ユニットを含む置換可能なアドレス・モードを有するプロセッサを特徴とする。少なくとも１つのロード・バス及び少なくとも１つの記憶バスが、レジスタ・ファイルを記憶装置と相互接続する。そして、レジスタ・ファイル及び記憶装置間で転送されるワードのデータ素子を再順番付けするためのバスの少なくとも１つにおける置換回路を含む。
【００１７】
好適な実施形態においては、ロード及び記憶バスは、置換回路を含み得る。２つのロード・バスがあり得、その各々が置換回路を含み得る。置換回路は、レジスタ・ファイル及び記憶装置間で転送されるワードのデータ素子を再順番付けするためのマップ回路、及び／または、レジスタ・ファイル及び記憶装置間で転送されるワードのデータ素子を再順番付けするための転置回路を含み得る。レジスタ・ファイルは、少なくとも１つのレジスタを含み得る。マップ回路は、少なくとも１つのマップ・レジスタを含み得る。マップ・レジスタは、データ素子ごとのフィールドを含み得る。マップ・レジスタは、算術ユニットからロード可能であり得る。マップ・レジスタは、大きいエンディアン小さいエンディアン・マップと共にロードされるデフォルトであり得る。データ素子はバイトであり得る。
【００１８】
本発明は、また、幾つかの異なったデータ・フォーマットを処理するようプロセッサを適応させる方法であって、記憶装置からのワードでデータ・レジスタをロードする段階と、それが算術ユニットのデータ・レジスタ・ファイルに到達する前にベクトル配向された算術ユニットの本来の順番と両立し得る第２のフォーマットにそれを再順番付けする段階と、算術ユニットにおいてデータ・レジスタをベクトル処理する段階と、を含む方法を特徴とする。
【００１９】
好適な実施形態においては、ベクトル処理の結果は、第２のデータ・レジスタ装置に記憶され得る。記憶された結果は、第１のフォーマットに再順番付けされ得る。第２の記憶装置及び第１の記憶装置は、同じ記憶装置内に含まれ得る。
【００２０】
他の目的、特徴及び長所は、以下の好適な実施形態の説明及び添付図面から当業者には分かるであろう。
【発明を実施するための最良の形態】
【００２１】
以下に開示される好適な実施形態または幾つかの実施形態とは別に、本発明は、他の実施形態であることもでき、かつ種々の方法で行われまたは実行されることができる。従って、本発明は、その適用において、以下の説明に述べられたまたは図面に示された構成及び構成要素の配列の詳細に制限されないということが理解されるべきである。もしここに１つの実施形態だけが説明された場合でも、本願における請求項は、該実施形態に制限されるべきではない。さらに、本願における請求項は、或る除外、制限、または放棄を明示する明瞭かつ説得力のある根拠が無い限り制限的に読まれるべきではない。
【００２２】
図１には、外部記憶装置、メモリ１２を伴っている本発明によるプロセッサ１０が示されている。プロセッサ１０は、代表的には、算術ユニット（ＡＵ）１４、ディジタル・データ・アドレス発生器（ＤＡＧ）１６、及び通常の態様で動作するシーケンサ（ＳＥＱ）１８を含む。データ・アドレス発生器１６は、メモリ１２に対するすべてのローディング及び記憶の制御器であり、シーケンサ１８は、命令のシーケンスを制御する。算術ユニット１４及びデータ・アドレス発生器１６の種々のものを外部メモリ１２に相互接続する１つまたは２つ以上のロード・バス２２及び２４、並びに記憶バス２０がある。バス２０、２２及び２４の１つまたは２つ以上には、本発明による置換回路２６ａ、２６ｂ、２６ｃが配置されている。
【００２３】
算術ユニット１４、図２、は、代表的には、データ・レジスタ・ファイル３０と、例えば、乗算累算器回路（Ｍａｃ）３６、算術ロジック・ユニット（Ａｌｕ）３８、シフタ４０を収容し得る１つまたは２つ以上の計算ユニット３２とを含み、それらのすべては、結果バス２１によってサービスされる。従来技術でもあるように、データ・アドレス発生器（ＤＡＧ）１６は、ポインタ・レジスタ４２及びデータ・アドレス発生器（ＤＡＧ）レジスタ４４を含む。シーケンサ１８は、命令デコード回路４８及びシーケンサ回路５０を含む。各置換回路２６ａ、２６ｂ、及び２６ｃは、置換回路２６ａによって例示されるように、マップ回路５４ａ、５４ｂ及び転置（トランスポーズ：transpose）回路５６ａ、５６ｂの一方または双方を含み得る。マップ回路５４ａに関して説明されるように、各マップ回路と関連して、レジスタ５７ａのグループがあり、該グループは、デフォルト・レジスタ５８ａ、及びマップＡレジスタ６０ａ及びマップＢレジスタ６２ａのような追加のマップ・レジスタを含む。各マップ・レジスタは、幾つかの異なったマッピング変換のための命令を含む。例えば、デフォルト・レジスタ５８ａ及び５８ｂは、大きいエンディアン変換を行うようにセットされ得る。大きいエンディアン変換は、シーケンスにおける最も低い記憶アドレスがレジスタの最上位バイト段にロードされ、最も高いアドレス場所における情報がレジスタの最下位バイト位置にロードされるものである。
【００２４】
例えば、図３に示されるように、メモリ１２に記憶された２つのデータ・ワード７０及び７２があり、その各々は、４バイト・データ素子を有し、この場合には、バイトは、０、１、２、及び３として識別される。ワード７０において、バイト０、１、２、及び３は、それぞれ値５、４４、４２及び１０を含み、他方、ワード７２においては、データ・シーケンスまたはバイト０、１、２、３は、６６、６７、６８及び６９を含む。データ・アドレス発生器４４には、２つのポインタ・レジスタ、すなわちポインタ・レジスタ７４及び７６がある。ポインタ・レジスタ７４は、ワード７０をアドレス指定し、他方、ポインタ・レジスタ７６は、ワード７２をアドレス指定する。デフォルト・レジスタ５８ａにおける命令に従って、ワード７０は、マトリクス８０によってデータ・レジスタ７８にマッピングされ、すなわち、ワード７０におけるバイト０は、データ・レジスタ７８の段０に行き、ワード７０のバイト１は、データ・レジスタ７８の段１に行き、ワード７０のバイト２は、データ・レジスタ７８の段２に行き、そしてワード７０のバイト３は、データ・レジスタ７８の段３に行く。この方法で、最も低いアドレス、５の値を有したバイト０、は、データ・レジスタ７８の最上位バイト段になり（ends up）、最も高い記憶アドレス、値１０のバイト３は、データ・レジスタ７８の最下位バイト段、段３、になる（ends up）。マトリクス８２に適用されるマップ・レジスタ５８ｂにおける命令の適用は、６６、６７、６８、及び６９の値を有するワード７２のバイト０、１、２、及び３を、それぞれ、同じ大きいエンディアン変換（conversion）で、データ・レジスタ８４に移動することが理解され得る。すなわち、６６の値を有するワード７２のゼロ・バイトは、レジスタ８４の最上位バイト段にあり、ワード７２の最も高いアドレス・バイト３の値６９は、データ・レジスタ８４の最下位バイト段にある。
【００２５】
小さいエンディアン変換（transformation）は、デフォルト・レジスタ５８ａ及び５８ｂにおけるデフォルト命令で同様の態様、図４、で行なわれる。この小さいエンディアン変換におけるマトリクス８０及びマトリクス８２の結果の配列において、最も低い記憶アドレスのバイトは、データ・レジスタ７８、及び８４の各々の最下位バイト段になる。
【００２６】
図３及び図４にそれぞれ示される大きいエンディアン及び小さいエンディアンのマッピングは直接的（straight forward）であるが、しかし、この発明のマッピングはそれに制限されず、拡散または再編成（シャフリング）の任意の態様が本発明で行われ得る。例えば、図５に示されるように、マップ・レジスタ６０ａは、ワード７０のバイト３を最上位バイト段に置き、バイト１を次の２つの段に置き、バイト０を最下位バイト段に置き、そしてバイト２を無視するように、ロジック・マトリクス８０ａをプログラムし得る。同様に、ワード７２においては、マップ・レジスタ６０ｂは、ワード７２のバイト１がデータ・レジスタ８４の最上位バイト段に置かれるようにし、バイト０が次の段に置かれるようにし、バイト３がその次の段に置かれるようにし、そしてバイト２が最下位バイト段に置かれるようにし得る。置換回路は、ロード・バス２２及び２４のいずれかにおいてまたは双方において用いられることができ、そして記憶バスにおいても用いられることができる。
【００２７】
データ・レジスタ９２、図６は、ワード９０をメモリ１２に出力しつつあり得、そこでマップＡまたはマップＢレジスタ５８ｃまたは６８ｃは、データ・レジスタ９２における最上位バイト（ＭＳＢｙｔｅ）段及び次の段の内容を単に無視するマッピング・マトリクス９４を提供し、データ・レジスタ９２の最下位バイト（ＬＳＢｙｔｅ）段における値をワード９０のバイト位置０及び３に置き、他方、レジスタ９２の段２からの値をワード９０のバイト位置１及び２に置く。マッピングがレジスタから及びメモリまたは記憶装置の部分から生じている間、転置回路５６ａ、５６ｂ及び５６ｃによって行われる転置もしくは入れ換え（transposing）が、記憶装置またはメモリから幾つかのレジスタに、もしくは幾つかのレジスタから記憶装置に実際に行くことができる。例えば、図７において、ポインタ・レジスタ７４及びポインタ・レジスタ７６は、メモリ１２における場所１００及び１０２をアドレス指定する。メモリ１００におけるワードは、４バイト、Ａ、Ｂ、Ｃ及びＤ、における３２ビット・ワードであり、同様に、メモリ１０２におけるワードは、４バイトＥ、Ｆ、Ｇ及びＨを有する３２ビット・ワードである。“転置高（transpose high）”１０１として識別される１つの転置もしくは入れ換え（transposition）は、メモリ・バイトＡ、Ｂ、Ｃ、Ｄを取り、そしてそれらを４つのデータ・レジスタ１０６、１０８、１１０及び１１２の第１のコラム１０４にロードする。ポインタ・レジスタ７６は、メモリ場所１０２から４つのバイトＥ、Ｆ、Ｇ及びＨを取り、そしてそれらを同じ４つのデータ・レジスタ１０６、１０８、１１０、及び１１２の次のコラム１１４に置く。ＤＡＧポインタ・レジスタ７４及び７６は、次に、メモリ１２におけるメモリ場所１１６及び１１８にインデクシングされ得て、それらのバイトＩ、Ｊ、Ｋ、Ｌ及びＭ、Ｎ、Ｏ、Ｐをそれぞれコラム１２０及び１２２に置くことができる。“転置低”モード１０３においては、バイトＡ、Ｂ、Ｃ、Ｄは、コラム１２０に置かれ、バイトＥ、Ｆ、Ｇ、Ｈは、コラム１２２に置かれ、バイトＩ、Ｊ、Ｋ、Ｌは、コラム１０４に置かれ、そしてバイトＮ、Ｍ、Ｏ、Ｐは、コラム１１４に置かれる。
【００２８】
大いなる多機能性及び有益性を示す本発明の１つの適用を、図８Ａ、８Ｂ及び８Ｃについて説明する。図８Ａにおいては、１６のサブ・ブロック１３２から成る画像の大きいブロック１３０が示されている。各４×４のサブ・ブロックは、１６のピクセルを含んでいる。例として、サブ・ブロック３２ａは、示されているように、ピクセル値ｐ０−ｐ３を含む４つのロー（行）のピクセル１３４、１３６、１３８及び１４０を含む。エッジ１４２におけるエッジ効果を除去するために、垂直及び水平１４３のフィルタリングが行われる。垂直フィルタリングは、各ロー（行）が同じデータのすべてを含むので充分に容易であり、それにより、単一命令の多数データ動作が、高速処理のためにベクトル配向された機械内で実行され得る。従って、フィルタリング・アルゴリズムは、４つの異なった算術ユニット、１５２、１５４、１５６、及び１５８によってそれぞれ、同時に各コラム（列）１４４、１４６、１４８、１５０上で実行され得る。そして、並列処理が終わったとき、その結果は、すべて、例えばロー（行）１４０において生じ、そして１つのサイクルにおいて、次の動作レジスタまたはメモリ・レジスタに提起可能である。機械による処理のためにデータが本来の順番で配列されるという、図８Ａにおいて生じるもう１つの長所は、例えば、２つのＤＡＧポインタ・レジスタ７４及び７６がロー（行）１３４及び１３６をロードするや否や、算術ユニット１５２−１５８が作業を開始することができる、ということである。
【００２９】
それに反して、水平フィルタリング、図８Ｂ、に対しては、すべての４つのロー１６０、１６２、１６４、１６６は、算術ユニット１６８、１７０、１７２、１７４が動作を始めることができる前にロードされなければならない。さらに、フィルタリング動作が終わったとき、コラム１７６における出力ｐ０は、それらが４つの異なったレジスタ内にあるので、一度に１バイトで出され（put out）なければならず、これは、図８Ａにおけるロー１４０のピクセルｐ０を読み出すのが容易なのとは対照的である。これを行うために、データの非本来の構成を扱うための追加のプログラミングがなければならない。置換回路、例えば、転置された回路２６ａまたは２６ｂの１つを用いることにより、ロー１６０、１６２、１６４、１６６におけるピクセル・データは、図８Ｃに示されるように、４つの算術ユニットのデータ・レジスタＲ０、Ｒ１、Ｒ２及びＲ３へのロード上で転置されることができ、それにより、それは今や、図８Ａにおけるように、処理機械の本来の領域と整列する。さて、ローディングが迅速に進行すればするほど、算術ユニットは、一層早く動作を開始することができ、そして結果は、一度に全ワードの４バイトで出力されることができる。
【００３０】
今までの例においては、本発明は、バイトの操作の見地から説明されているけれども、これは、本発明の必要な制限ではない。より大きいまたはより小さい他のデータ要素も用いられることができ、そして代表的には多数のバイトが用いられる。１つの応用においては、例えば、２バイトまたは１６ビットがデータ要素であって良い。従って、置換可能なアドレス・モードでもって、ＳＩＭＤのようなベクトル配向された処理の効率が大いに高められる。置換は、特に有効であり、その理由は、それらが算術ユニットの外部のアドレス・モードにおいて生じるからである。それによって、それらは、パイプライン・ストール（次々に送り込まれることによる機能停止）を回避し、そして算術ユニットの動作を邪魔しない。変換または置換は、ローディングまたは記憶のいずれかの動作のアドレス・モード中にＤＡＧ１６及びシーケンサ１８の制御下で進行中に行われる。本発明は、一体化されたデータ提起を許容し、それにより問題解決を一体化する。これは、プログラミング努力を減少するだけでなく、新しい装置を市場に出すまでの時間をも減少する。プロセッサの本来の領域におけるこの一体化されたデータ提起は、また、ちょうど今説明されたように、算術ユニットの一層早い使用及び一層早い記憶をも行う。それは、大きいエンディアン、小さいエンディアン、または混合されたエンディアン動作の容易な適応を行う。それは、任意の形態におけるデータが、高速処理のための機械の本来の領域の形態に再順番付けされるのを可能とし、そして、所望ならば、それは、次に、その元の形態に戻って再順番付けされることができ、もしくは、引き続く算術動作における使用のために、またはメモリへの永久または一時的な記憶のために、幾つかの他の形態に再順番付けされることができる。
【００３１】
マップ回路５４ａ、ｂ、ｃの１つの履行が図９に示されており、ここに、ＭＡＰＡ／ＭＡＰＢレジスタの１つ、例えば、６０ａ、がプログラミングされる。再度ここに、それは、代表的には算術ユニット１４からロード可能である、データ素子、例えばバイト、ごとのフィールド、１８０、１８２、１８４、及び１８６を含む。マップ・レジスタ６０ａは、スイッチ１８８、１９０、１９２、１９４を駆動する。動作において、レジスタ２０４の４つのセクション１９６、１９８、２００、２０２における４バイトＡ、Ｂ、Ｃ、及びＤを有する３２ビット・ワードがレジスタ２０４ａにマッピングされ、それにより、レジスタ・セクション１９６ａ、１９８ａ、２００ａ、２０２ａは、それぞれバイトＣ、Ｄ、Ａ、及びＢをそれぞれ受ける。これは、各フィールド１８０、１８２、１８４、１８６における命令を、スイッチ１８８、１９０、１９２及び１９４に与えることによって行われる。例えば、フィールド１８０のための命令は１であり、レジスタ２０４のセクション２００におけるバイトＣからの入力１を可能化するＣを接続するようスイッチ１８８に伝え、フィールド１８２は、それが、レジスタ２０４のセクション２０２からレジスタ２０４ａのセクション１９８ａにバイトＤを出力するようにするスイッチ１９０に０を提供する、等である。転置回路５６ａ、ｂ、ｃ、の１つの履行は、レジスタ２１２におけるバイトＡ、ＢＣ、Ｄのロー（行）を、それぞれ、レジスタ２２２、２２４、２２６、及び２２８の第１のセクション２１４、２１６、２１８及び２２０に接続する、直接配線のネットワーク２１０、図１０、を含み得る。レジスタ２２８からのＥ、Ｆ、Ｇ、及びＨは、同様に、ネットワーク２１０を通して配線される。
【００３２】
本発明による方法が図１１に示されている。開始、２４０、において、データがロードされ、ベクトル処理のために再順番付けされ、２４２、データは、次に、ベクトル処理され、２４４、そして、データは、次に、記憶のために再順番付けされる、２４６。データは、任意のフォーマットで来ることができ、ベクトル処理機械の本来の領域に再フォーマットされるであろう。ベクトル処理、例えば、ＳＩＭＤ処理の後、データは、その所望のフォーマットであるならば、そのまま記憶され得、もしくは、元のフォーマットまたは幾つかの他のフォーマットのいずれかに、再度、再順番付けされ得る。それは、元の記憶装置に、または引き続く処理のために近い未来において使用されるべきである、算術ユニットにおけるレジスタ・ファイルのような別の記憶装置に記憶され得る。
【００３３】
本発明の特定の特徴が幾つかの図面に示され、かつ他の図面には示されないけれども、これは、各特長が、本発明による他の特徴の幾つかまたはすべてと組み合わされ得るので、単に便宜のためである。ここで用いられた語「含む」、「備える」、「有する」、及び「と共に」は、広範かつ包括的に解釈されるべきであり、何等の物理的相互接続に制限されるものではない。さらに、本願において開示された任意の実施形態は、単に可能な実施形態として取られるべきではない。
【００３４】
さらに、この特許のための特許出願の手続き中に提起された任意の補正は、提出された出願において提起された任意の特許請求の範囲の要素の放棄ではない。当業者は、すべての可能な等価物を文字通り包含するであろう請求項を起草するよう合理的に期待されることはできず、多くの等価物が補正の時点において予測不可能であり、何が放棄されるべきか（何かあるならば）についての正当な解釈を超えており、補正の基礎をなす理論的解釈は、多くの等価物に対して脱線的な関係以上のものを有してはおらず、及び／または、補正された任意の特許請求の範囲の要素に対して或る実質的でない代替物を記載することを出願人が予期することができない他の多くの理由がある。
【００３５】
他の実施形態が当業者には生じるであろうし、それらは特許請求の範囲内のものである。
【図面の簡単な説明】
【００３６】
【図１】本発明による置換可能なアドレス・モードを有するプロセッサのための概略的なブロック図である。
【図２】図１のプロセッサの一層詳細な図である。
【図３】本発明による大きいエンディアン・ロード・マッピングの概略図である。
【図４】本発明による小さいエンディアン・ロード・マッピングの概略図である。
【図５】本発明によるもう１つのロード・マッピングの概略図である。
【図６】本発明による記憶マッピングの概略図である。
【図７】本発明による転置の概略図である。
【図８Ａ】画像エッジ・フィルタリングへの本発明の適用を示す図である。
【図８Ｂ】画像エッジ・フィルタリングへの本発明の適用を示す図である。
【図８Ｃ】画像エッジ・フィルタリングへの本発明の適用を示す図である。
【図９】本発明によるマップ回路の一層詳細な概略図である。
【図１０】本発明による転置回路の一層詳細な概略図である。
【図１１】本発明による方法のフローチャートを示す図である。
【符号の説明】
【００３７】
１０      プロセッサ
１２      メモリ
１４      算術ユニット（ＡＵ）
１６      ディジタル・データ・アドレス発生器（ＤＡＧ）
１８      シーケンサ（ＳＥＱ）
２０      記憶バス
２１      結果バス
２２、２４      ロード・バス
２６ａ、２６ｂ、２６ｃ      置換回路
３０      データ・レジスタ・ファイル
３２      計算ユニット
３６      乗算累算器回路（Ｍａｃ）
３８      算術ロジック・ユニット（Ａｌｕ）
４０      シフタ
４２      ポインタ・レジスタ
４４      データ・アドレス発生器（ＤＡＧ）レジスタ
４８      命令デコード回路
５０      シーケンサ回路
５４ａ、５４ｂ      マップ回路
５６ａ、５６ｂ      転置（トランスポーズ：transpose）回路
５７ａ      レジスタ
５８ａ、５８ｂ      デフォルト・レジスタ
６０ａ      マップＡレジスタ
６２ａ      マップＢレジスタ
【図１】
2009529188.tif 000003
【図２】
2009529188.tif 000004
【図３】
2009529188.tif 000005
【図４】
2009529188.tif 000006
【図５】
2009529188.tif 000007
【図６】
2009529188.tif 000008
【図７】
2009529188.tif 000009
【図８Ａ】
2009529188.tif 000010
【図８Ｂ】
2009529188.tif 000011
【図８Ｃ】
2009529188.tif 000012
【図９】
2009529188.tif 000013
【図１０】
2009529188.tif 000014
【図１１】
2009529188.tif 000015
【手続補正書】
【提出日】平成20年5月2日(2008.5.2)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
置換可能なアドレス・モードを有するプロセッサであって、
レジスタ・ファイルを含む算術ユニットと、
前記レジスタ・ファイルを記憶装置と相互接続する少なくとも１つのロード・バス及び少なくとも１つの記憶バスと、
前記レジスタ・ファイル及び記憶装置間で転送される第１のワードのデータ素子を再順番付けするための前記バスの少なくとも１つにおける置換回路であって、レジスタのローにおける第１のワードのデータ素子を複数のレジスタのコラムに転置するための転置回路を含む前記置換回路と、
を備えたプロセッサ。
【請求項２】
前記ロード及び記憶バスの各々は、前記置換回路を含む請求項１に記載のプロセッサ。
【請求項３】
２つのロード・バスがあり、その各々が置換回路を含む請求項１に記載のプロセッサ。
【請求項４】
前記置換回路は、さらに、前記レジスタ・ファイル及び記憶装置間で転送されるワードのデータ素子を再順番付けするためのマップ回路を含む請求項１に記載のプロセッサ。
【請求項５】
前記レジスタ・ファイルは、少なくとも１つのレジスタを含む請求項４に記載のプロセッサ。
【請求項６】
前記レジスタ・ファイルは、少なくとも１つのレジスタを含む請求項１に記載のプロセッサ。
【請求項７】
前記マップ回路は、少なくとも１つのマップ・レジスタを含む請求項４に記載のプロセッサ。
【請求項８】
前記マップ・レジスタは、データ素子ごとのフィールドを含む請求項７に記載のプロセッサ。
【請求項９】
前記マップ・レジスタは、前記算術ユニットからロード可能である請求項７に記載のプロセッサ。
【請求項１０】
前記マップ・レジスタの少なくとも１つは、大きいエンディアン小さいエンディアン・マップと共にロードされるデフォルトである請求項７に記載のプロセッサ。
【請求項１１】
前記データ素子はバイトである請求項１に記載のプロセッサ。
【請求項１２】
幾つかの異なったデータ・フォーマットを処理するようプロセッサを適応させる方法であって、
記憶装置からのワードでデータ・レジスタをロードする段階と、
ワードが算術ユニットのデータ・レジスタ・ファイルに到達する前にベクトル配向された算術ユニットの本来の順番と両立し得る第２のフォーマットにワードを再順番付けする段階であって、該再順番付けする段階は、レジスタの第１のローにおけるワードのデータ素子を複数のレジスタのコラムに転置する段階を含み、
前記算術ユニットのデータ・レジスタ・ファイルにおけるワードをベクトル処理する段階と、
を含む方法。
【請求項１３】
第２のデータ・レジスタ装置にベクトル処理の結果を記憶する請求項１２に記載の方法。
【請求項１４】
記憶された結果は、前記第１のフォーマットに再順番付けされ得る請求項１２に記載の方法。
【請求項１５】
前記第２の記憶装置及び前記第１の記憶装置は、同じ記憶装置に含まれる請求項１２に記載の方法。
【請求項１６】
複数のレジスタは４つのレジスタを含み、転置する段階は、第１のレジスタのローからの第１のワード及び第２のレジスタのローからの第２のワードを、４つのレジスタの２つのコラムに転置することを含む請求項１２に記載の方法。
【請求項１７】
４つのレジスタの２つのコラムは、レジスタの４つのコラムの順番において最初と２番目である請求項１６に記載の方法。
【請求項１８】
４つのレジスタの２つのコラムは、レジスタの４つのコラムの順番において３番目と４番目である請求項１６に記載の方法。
【請求項１９】
第１のレジスタのロー及び第２のレジスタのローは、レジスタの４つのローの順番において最初と２番目である請求項１７に記載の方法。
【請求項２０】
第１のレジスタのロー及び第２のレジスタのローは、レジスタの４つのローの順番において３番目と４番目である請求項１７に記載の方法。
【請求項２１】
第１のレジスタのロー及び第２のレジスタのローは、レジスタの４つのローの順番において最初と２番目である請求項１８に記載の方法。
【請求項２２】
第１のレジスタのロー及び第２のレジスタのローは、レジスタの４つのローの順番において３番目と４番目である請求項１８に記載の方法。
【請求項２３】
各ワードは、４バイトにおける３２ビット・ワードである請求項１６に記載の方法。
【請求項２４】
複数のレジスタは４つのレジスタを含み、転置回路は、第１のレジスタのローからの第１のワード及び第２のレジスタのローからの第２のワードを、４つのレジスタの２つのコラムに転置する請求項１に記載のプロセッサ。
【請求項２５】
各ワードは、４バイトにおける３２ビット・ワードである請求項２４に記載のプロセッサ。
【請求項２６】
４つのレジスタの２つのコラムは、レジスタの４つのコラムの順番において最初と２番目である請求項２４に記載のプロセッサ。
【請求項２７】
４つのレジスタの２つのコラムは、レジスタの４つのコラムの順番において３番目と４番目である請求項２４に記載のプロセッサ。
【請求項２８】
第１のレジスタのロー及び第２のレジスタのローは、レジスタの４つのローの順番において最初と２番目である請求項２６に記載のプロセッサ。
【請求項２９】
第１のレジスタのロー及び第２のレジスタのローは、レジスタの４つのローの順番において３番目と４番目である請求項２６に記載のプロセッサ。
【請求項３０】
第１のレジスタのロー及び第２のレジスタのローは、レジスタの４つのローの順番において最初と２番目である請求項２７に記載のプロセッサ。
【請求項３１】
第１のレジスタのロー及び第２のレジスタのローは、レジスタの４つのローの順番において３番目と４番目である請求項２７に記載のプロセッサ。
【国際調査報告】
2009529188.tif 000016