(57)【特許請求の範囲】
【請求項１】
レジスタ内でアクセスされたデータを選択的に転置する方法であって、
各々が、出力において、８ビットのデータを運ぶデータレーンを４個有する、４個のメモリセグメントにデータを保存する動作、及び
前記所望のデータ転置がバイト単位の転置か、ワード単位の転置かに応じて、全体で３４個のマルチプレクサの内４個のみを動作させることにより、４個のデータバスセグメントの各々を１６個のデータレーンの一つに選択的に接続する動作
を含み、
所望のデータ転置が、レジスタからレジスタへの転送を行わずにレジスタアクセスの時に行われ、
前記マルチプレクサが、バイト単位の転置及びワード単位の転置が実施されるよう配置されている、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム可能な回路、より具体的には図面用に選択可能なデータの並べ替えを行うＩ／Ｏ回路に関するものである。
【背景技術】
【０００２】
ベクタプロセッサ又はアレイプロセッサは、複数のデータ要素の数学的操作を同時に実行できるＣＰＵ設計である。シリアルベクタは、同じ命令によって処理されるレジスタ内に保持されたシーケンスデータである。例えば、一つの命令によって４つのレジスタを別の４つのレジスタに追加し、その結果を更に別の４つのレジスタに書き込むことが可能である。パラレルベクタは、同じレジスタ内に幾つかのデータ項目を保持し、それぞれのデータ項目はそれに適用された同じ命令を有している。ベクタ処理により、コード密度が向上し、性能を向上させる最適化が可能になる。
【０００３】
ベクタプロセッサが抱える一般的な問題は、一連のレジスタに同じ命令を適用できるように、レジスタファイル内でデータを編成する必要があるということである。レジスタファイルは通常、特定の方向に沿って、すなわちベクタ行に沿って配列した一組の値に同時にアクセスするのみを可能にする。したがって、一つの命令により水平操作の複数の値にアクセスすることができるが、垂直操作では、操作中のアレイの置換え、または異なる行の各値への個々のアクセス操作のいずれかが必要となる。ベクタ処理に適合させるためにデータの再配置を行うのに幾つかの命令を送ることは一般的であり、このオーバーヘッドによりベクタを使用する利点が損なわれる可能性がある。
【０００４】
これらの限界を考慮すると、転置及び他のアレイ操作を行う、より効率的なアーキテクチャ及び方法が望まれる。
【０００５】
プログラムの命令がレジスタに間接的にアクセスした場合に、別の問題が発生する。マイクロプロセッサはレジスタファイルへのプログラムのアクセスを制御する。パイプライン方式のために、ある命令によって読み取られるはずのレジスタに別の命令によって書き込みが行われるまで、そのある命令を停止しなければならない。スコアボーディングを用いることによりこれらの命令が停止されるので、プログラムによって停止を管理する必要はない。停止状態は通常、実行ルートにおいて早い段階で適用される。しかしながら、レジスタがプログラム命令によって間接的にアクセスされると、レジスタは手遅れになるまで――停止状態が正常にすでに適用された後になるまで、認識されない可能性がある。この比較的早い時点でレジスタが認識されないと、間接アクセスを使用する命令では、停止状態を適用するのが難しくなる。
【発明の概要】
【０００６】
本願において開示される本発明は、スコアボーディング用ハードウェアを追加せずにレジスタへの間接アクセスを処理し、更に適応性を有するＦＩＦＯアクセス機構を構築するのに使用できる機構を提供する。
【０００７】
適応性を有するレジスタファイルのＩ／Ｏアーキテクチャ
本願は、最小限の電力で様々なデータ転置が可能な、レジスタファイルの入力／出力構造を開示する。電力はレジスタからレジスタへのデータ転送を回避することにより保存され、その代わりに、シーケンサーにより実行可能である、様々な擬似データ形式（データチャンネルによって見られるように）を含むマイクロ命令が、不必要な物理的データ転送なしに送られる。
【０００８】
様々な開示された実施形態によって、複数の形式においてマイクロプロセッサのレジスタファイルをアクセス可能にする新しい方法が、バイト、ワード及びロングワードデータの再フォーマットに要求されるプログラム命令の数を減らすために提供されている。開示された様々な実施形態における新しい手法により、少なくとも下記利点の一以上の利点が提供される：
● データ再配置の多様性
● 最小限の電力消費
● デジタル信号処理操作における特別データの並べ替えへの容易な適応性
● 二次元データへのカスタマイズされたアクセスへの適合性
● 多次元データへのカスタマイズされたアクセスへの適合性
開示された本発明を、本発明の重要な例示の実施形態を示し、参照により本明細書に組み込まれた添付の図面を参照しながら説明する。
【図面の簡単な説明】
【０００９】
【図１】図１は、４つの連続したレジスタのバイト転置可能な場合を示す図である。図における各行は、プログラムから見た一つのレジスタを表す。バイト転置が可能になると、レジスタファイルが効率的に９０度回転し、これによりレジスタ０が４つのレジスタの下位バイトの全てを含み、レジスタ１が４つのレジスタの第２バイトの全てを含み、と続く。
【図２】図２は、２つの連続したレジスタのワード転置可能な場合を示す図である。図における各行は、プログラムから見た一つのレジスタを表す。ワード転置が可能になると、レジスタファイルが効率的に９０度回転し、これによりレジスタ０が２つのレジスタの下位ワードの全てを含み、レジスタ１が２つのレジスタの上位ワードの全てを含む。
【図３】図３は、２つの異なるやり方でバイトが交換されたレジスタ０のデータを示す図である。最初の図は、元のデータバイトが３２ビットワード全体において交換されるフル（ＤＣＢＡ）バイト交換であり、第２の図は、各ワード内でバイト交換するＢＡＤＣバイト交換が行われているところを示す。
【図４】図４は、各カラーコンポーネントの４つのバイトが同じ３２ビットワード内に保存された見取り図である。
【図５ａ】図５ａ〜５ｇは一連の関連図面である。図５ａは、レジスタが複数のマルチポートＲＡＭに分離され、各データレーンに接続されたマルチプレクサを各々有する例示のハードウェアのレジスタ構造を示す。
【図５ｂ】図５ｂ〜５ｇは、このレジスタの操作の異なる段階を示す。図５ｂは、転置を行わないアドレス０における３２ビットワードに必要なルーティングを示す。
【図５ｃ】図５ｃは、転置を行わないアドレス１のルーティングを示す。
【図５ｄ】図５ｄは、８ビット転置の最初の３２ビットに必要なルーティングを示す。
【図５ｅ】図５ｅは、８ビット転置の第２の３２ビットのルーティングを示す。
【図５ｆ】図５ｆは、この実施例における１６ビット転置を行うアドレス０のルーティングを示す。
【図５ｇ】図５ｇは、この実施例における１６ビット転置を行うアドレス１のルーティングを示す。
【発明を実施するための形態】
【００１０】
本願の多数の革新的な教示を、（例示目的のみで限定しない）現在好適な実施形態を特に参照して説明する。
【００１１】
転置可能なレジスタファイル操作
転置可能なレジスタファイルは、マイクロプロセッサのレジスタファイルにおいて従来のデータ編成の不利点の多くを克服し、バイト、ワード及びロングワードデータの再フォーマットに要求されるプログラム命令の数を減らして、マイクロプロセッサのレジスタファイルを複数の形式で閲覧することを可能にするという利点を有する、今までにないマイクロプロセッサレジスタファイルのデータ編成スキームである。好適な実施形態は、バイト転置及びワード転置の両方をサポートする。
【００１２】
バイト転置レジスタファイル
図１は、バイト転置が可能である４つの連続したレジスタを示す図である。図１を参照すると、左側（１１０）は、転置が可能になる以前のレジスタを図示し、右側（１２０）は転置が可能になった後の同じレジスタを図示している。図１の各行は、プログラムから見た１つのレジスタを表す。例えば、下行２１１は、転置が可能になる前のレジスタ０を示している。各レジスタは順に、４つのバイトからできており、１番左側（例えば０ａ）は下位バイトであり、一番右側（例えば０ｄ）は高位バイトである。バイト転置が可能になると、レジスタファイルが効率的に９０度回転し、レジスタ０（１２１）が４つのレジスタの下位バイト全部を含み、レジスタ１（１２２）が４つのレジスタの第２バイト全部を含み、と続く。
【００１３】
ワード転置レジスタファイル
ワード転置は、レジスタデータがバイト毎の基準ではなく、ワード毎の基準で回転する以外は、バイト転置と同様である。図２に、ワード転置が可能である連続した２つのレジスタを示す。図２を参照すると、左側（２１０）に転置が可能になる前のレジスタを図示し、右側（２２０）に転置が可能になった後の同じレジスタを図示する。図２の各行は、プログラムから見た１つのレジスタを示す。例えば、下行（１１１）は、転置が可能になる前のレジスタ０を示している。各レジスタは順に、２つのワードからできており、１番左側（例えば０ａ）は下位ワードであり、一番右側（例えば０ｂ）は高位ワードである。ワード転置が可能になると、レジスタファイルが効率的に９０度回転し、レジスタ０（２２１）が２つのレジスタの下位ワード全部を含み、レジスタ１（２２２）が２つのレジスタの高位ワード全部を含み、と続く。
【００１４】
レジスタファイルのバイトマッピング及びバイトマスキング
レジスタファイルのバイトマッピング及びバイトマスキング機能により、新しいマイクロプロセッサレジスタファイルのデータ編成スキームに更なる適応性が加わる。この開示された本発明の特徴により、プログラムがレジスタ内でバイトを任意に再編成することが可能になり、バイト、ワード及びロングワードデータの再フォーマットに必要なプログラム命令の数が更に減る利点を有する。
【００１５】
レジスタファイルのバイトマッピング
バイトマッピングにより、レジスタファイルから読み取る又はレジスタファイルに書き込む時に、関与するサブコンポーネントを隔離する又はグループ化するために、プログラムがレジスタ内においてバイトを任意に再編成することが可能になる。図３は、レジスタ上でのバイトマッピングの２つの実施例を図示している。図３を参照すると、左側（３１０）はバイトマッピング前のレジスタを示し、右側（３２０）はバイトマッピング後の同じレジスタを示す。図３の各行は、プログラムから見た１つのレジスタを表している。例えば、下部行（３１１）はバイトマッピング前のレジスタを示している。各レジスタは順に４つのバイトからできており、１番左側（例えば０ａ）は最下位バイトであり、一番右側（例えば０ｂ）は最高位バイトである。フル（ＤＣＢＡ）バイト交換のバイトマッピングが可能になると、元のデータバイトが３２ビットワード全体内で交換され、レジスタ（３１２）のバイトがレジスタ（３２２）のバイトとして再編成される。（ＢＡＤＣ）バイト交換のバイトマッピングが可能になると、元のデータバイトが各ワード内で交換され、レジスタ（３１１）のバイトがレジスタ（３２１）のバイトとして再編成される。
【００１６】
レジスタファイルのバイトマスキング
好適な実施形態はバイトマッピングとバイトマスキングの両方をサポートする。レジスタファイルのバイトマスキングは、既存のレジスタへのデータの挿入を加速するために、命令によって修正されたバイトを制御する別の新しいマイクロプロセッサレジスタファイルのデータ編成スキームである。このプログラムにより、ソースオペランド及び宛先オペランドの両方のバイトマスクを特定することができる。バイトマスクがソースオペランド用に特定されると、レジスタの複数の部分が命令に対して入力時にゼロにならざるを得ない。バイトマスクが宛先オペランド用に特定されると、命令の結果を宛先レジスタの複数の部分に書き込むことが可能である。
【００１７】
レジスタへの間接アクセス
レジスタへの間接アクセスには、スコアボーディング用ハードウェアを追加せずに間接的にレジスタへアクセスできるという利点がある。これには２つのタイプの命令が使用される：一つは１つのレジスタから別のレジスタへデータを移動させるためであり、別の一つは同期化のためである。
【００１８】
データを移動するための命令形式により、下記のパラメータが特定される：ソースデータを保持するレジスタ、宛先レジスタ又は宛先レジスタのインデックスのいずれかを保持するレジスタ、及び任意に転送するレジスタの数のカウントである。宛先レジスタが命令において直接参照される場合、命令が実行されたときに、命令において直接参照されたレジスタがスコアボーディング管理される。しかしながら、宛先レジスタが命令において直接参照されていない場合、命令において間接的に参照されるレジスタは命令が実行された時にスコアボーディング管理されず、間接的にアクセスされるレジスタのデータが正確であるように同期化命令が使用される。
【００１９】
本発明の一般的な使用においては、プログラマは複数のレジスタをスクラッチパッドメモリとして使用する。データはスクラッチパッドにロードされる。レジスタへの直接的なアクセスから間接的なアクセス、または間接的なアクセスから直接的なアクセスへの切り替えが行われると、スクラッチパッドへのインデックスを計算するよう同期化命令が発行され、そのインデックスにおけるレジスタの内容は既知のレジスタにコピーされる。この時点で、同じレジスタインデックスにおいてデータを処理するために全ての処理要素が同じ命令を使用することができる。計算が完了すると、その結果がスクラッチパッドに再度コピーされ、インデックスを計算するために別の同期化命令が発行されることが可能である。
【００２０】
レジスタファイルのハードウェアデータＦＩＦＯの実施
マイクロプロセッサのレジスタファイル内へのハードウェアデータＦＩＦＯの設置には、レジスタへの間接アクセスと同じ考えを利用している。好適な実施形態のこの革新的な特徴は、ＦＩＦＯ保存のためにマイクロプロセッサのレジスタファイルから複数のレジスタを除外し、別のソースからＦＩＦＯにデータを移動し、ＦＩＦＯから連続的にデータをマイクロプロセッサ内の別のレジスタへ移動させる機構を提供することである。この実施形態は下記の利点を有する：
● プロセッサのレジスタファイル内にＦＩＦＯを構築することによって、ＦＩＦＯが必要でない時に、これらのレジスタを普通のレジスタとして再利用することが可能になる。
● 本発明により、プログラムの制御下でＦＩＦＯのサイズ（及びこれにより保留レジスタの数）の変更が可能になる。
● ハードウェアのレジスタＦＩＦＯ実施における間接アクセスの問題が解決される。
【００２１】
転置及びバイトマッピングの使用実施例
ピクセルデータはしばしば、いわゆるＲＧＢＡ８８８８フォーマットに保存され、ここでは各ピクセルが、各々８ビットの赤、緑、青、及びアルファコンポーネントからできている。４つのコンポーネントは全て、表示の便宜上、一つの３２ビットワードにまとめられている。
【００２２】
下記のようにカラーコンポーネントを修正するには、アルファコンポーネントの混合等の一般的なアルゴリズムが使用される：
ｄｓｔＲ  ＝  （ｓｒｃＲ  *  ｓｒｃＡ）  +  ｄｓｔＲ
ｄｓｔＧ  ＝  （ｓｒｃＧ  *  ｓｒｃＡ）  +  ｄｓｔＧ
ｄｓｔＢ  ＝  （ｓｒｃＢ  *  ｓｒｃＡ）  +  ｄｓｔＢ
このアルゴリズムのサンプルアセンブラコードは：
ｍｕｌ  ｔｍｐ［０］、ｓｒｃ［０］、ｓｒｃ［３］
ｍｕｌ  ｔｍｐ［１］、ｓｒｃ［１］、ｓｒｃ［３］
ｍｕｌ  ｔｍｐ［２］、ｓｒｃ［２］、ｓｒｃ［３］
ａｄｄ  ｄｓｔ［０］、ｔｍｐ［０］、ｄｓｔ［０］
ａｄｄ  ｄｓｔ［１］、ｔｍｐ［１］、ｄｓｔ［１］
ａｄｄ  ｄｓｔ［２］、ｔｍｐ［２］、ｄｓｔ［２］
ここで構文は、命令、宛先、ソースＡ、ソースＢである。アレイインデックスはピクセル内のバイト位置を表す。
【００２３】
パラレルベクタが使用される場合はコードを減らすこともできるが、アルファコンポーネントは３２ビットレジスタの各バイトにおいて繰り返されなければならない。これは、バイト交換モードを使用することによって実行できる：
ｓｅｔ  ｂｙｔｅ  ｓｗａｐ  ｍｏｄｅ  ｆｏｒ  ｓｒｃＢ  ｔｏ  ＤＤＤＤ
ｍｕｌ  ｔｍｐ、ｓｒｃ、ｓｒｃ
ｒｅｓｅｔ  ｂｙｔｅ  ｓｗａｐ  ｍｏｄｅ  ｆｏｒ  ｓｒｃＢ  ｔｏ  ＡＢＣＤ
ａｄｄ  ｄｓｔ、ｄｓｔ、ｔｍｐ
【００２４】
レジスタが４バイト保持しているにも関わらず、このコードからは結果的に３バイトしか生成されないことを注記する。４ピクセルがシリアルベクタとして処理された場合、この非効率を除去することができる：
ｔｒａｎｓｐｏｓｅ  ｓｒｃＡ
ｔｒａｎｓｐｏｓｅ  ｓｒｃＢ
ｖｅｃｔｏｒ＿３＿ｍｕｌ  ｔｍｐ、ｓｒｃ、ｓｒｃ
ｔｒａｎｓｐｏｓｅ  ｄｓｔ
ｖｅｃｔｏｒ＿３＿ａｄｄ  ｄｓｔ、ｄｓｔ、ｔｍｐ
【００２５】
ｓｒｃＡを転置することによって、赤コンポーネントが全て一つのレジスタに、緑コンポーネントが全て別のレジスタに、そして青コンポーネントが全て３番目のレジスタに収容される。ｓｒｃＢを転置することによって、アルファコンポーネントが全て一つのレジスタに収まる。長さ３のベクタ命令により、４ピクセルが３つの命令で処理される（ｓｒｃＢベクタのステップ幅は、各コンポーネントに同じアルファ値を使用するためにゼロでなくてはならない）。
【００２６】
レジスタファイルの実施
実施例の詳細をここで説明する。この実施例においては、処理要素内の全ての保存にレジスタファイルが使用され、レジスタファイルは各々３２ビット幅の、十分な数である２５６個のレジスタを保持している。レジスタは、データの移動を制御し、ＳＩＭＤアレイは通常データの帯幅と比較して高い計算能力を有しているため、レジスタはおそらく、システムの性能全体にとってＡＬＵよりも更に重要である。レジスタファイルは、ＡＬＵに供給するのに通常必要である複数のＦＩＦＯを取り入れるため、大きくてもよい。レジスタは全て、書き込み予定のあるレジスタを読み取ろうとする全ての命令が、書き込みが完了するまで停止されるように、好ましくはスコアボーディングが用いられている。
【００２７】
パラレルベクタ
ＡＬＵを有効に使うために、幾つかのデータ項目を一つのレジスタに収めることができる。ＡＬＵは一回に４つの８ビット項目、又は２つの１６ビット項目を扱うことができるが、操作は常に同じである。これはベクタ計算と同様であり、二つ以上のデータ項目がレジスタに保持されている場合、それはパラレルベクタと呼ばれる（連続的に実行されるベクタであるｓｖｅｃに対してｐｖｅｃ）。もしデータを適切な形式に変換することがそれほど高くつかなければ、ｐｖｅｃにより性能を上げることが可能である。
【００２８】
ｐｖｅｃを使用するある実施例では、赤、緑、青及びアルファの４つのピクセルを採用し、共通の要素が同じレジスタに入るように（ＲＲＲＲ、ＧＧＧＧ、ＢＢＢＢ、ＡＡＡＡのようにグループ分けするように）それらの再編成を行う。次に、異なる操作をフルスピードで各要素に適用することができる（アルファをＲＧＢとは異なるやり方で処理することが一般的である）。もし４ピクセルを４×４バイトアレイとするなら、ソース形式は列状のＲＧＢＡを有し、処理するにはこれらが縦列である必要があり、この形式にするにはｐｖｅｃｓの転置が必要となる。処理が完了した後に、転置を逆転させなければならない。
【００２９】
レジスタファイルは、８ビット又は１６ビットｐｖｅｃｓのゼロコスト転置をサポートする。データタイプが１６ビットの場合は、レジスタ一式は対のレジスタとして扱われ、２つのレジスタが２×２データアレイを保持すると仮定した上で転置が行われる。データのタイプが８ビットであるならば、４つのレジスタが４×４データアレイを保持すると仮定される。レジスタファイルが、同時に４つの異なるレジスタへのアクセスを可能にする４つの個別のＲＡＭでできているため、転置は自由である。レジスタアドレスの下位ビットにより使用するバイトが選択され、転置されるレジスタが連続レジスタ内になければならず、これから転置される複数のレジスタに合わせて配列している必要がある。
【００３０】
転置により、２４ビット要素の十分なメモリアクセスも可能になる。データがバイト平面に保存され、各要素の４つのバイトが同じ３２ビットワード内に保存されると、レイアウトは図４に示すようになる。これは、損失がないが、難しいアドレス計算も扱いづらいデータ移動もないため、２４ビットのデータを保存するのに有用な方法である。あるアルゴリズムにおいては、要素を個別に処理する方が便利であるが、その他においては、ピクセル全体の処理が要求される可能性がある。転置により、このバイト平面形式が３２ビットピクセルに変換されることが可能になる。
【００３１】
レジスタファイルは原則的に、３つの読取ポートと２つの書込みポートを有している。２つの読取ポートはＡＬＵによって、書込みポートの一つとして使用される。残りの読取及び書込みポートは、レジスタにメモリデータを書込み、及びレジスタからメモリデータを読み取るために用いられる。最高の性能を得るために、レジスタファイルを構築するのに使用されるＲＡＭは５つのポート全部を有するべきであるが、そうするとサイズが大きくなってしまう。解決策として、読取及び書込みポートをそれぞれ一つずつなくすことが可能である。
【００３２】
レジスタファイルが転置を行うために４つの個別のＲＡＭからできているため、これらに対するアクセスを、ＡＬＵが一つのＲＡＭにアクセスしている間に、別のＲＡＭをメモリデータ用に使用することができるよう、構成することができる。ベクタ操作の結果、レジスタに予測可能なパターンでアクセスすることが可能になる。つまり、メモリアクセスがベクタ操作と同じパターンをたどるようにアドレッシングできるように構成することが考えられるが、同時に同じＲＡＭを使用することがないように交互にする。転置の際には、ＡＬＵが４つのＲＡＭ全てにアクセスする必要がある可能性があるため、これは常に可能ではない。レジスタファイルにおいてコンテンションが生じる場合は、メモリが優先され、ＡＬＵが停止する（これが５つのポート全てを有さない場合に起こる不都合である）。
【００３３】
間接アクセス
間接的なレジスタアクセスにより、一つのレジスタの内容が別のレジスタのインデックスとなることが可能である。これはヒストグラムには明らかに有用であるが、ＦＦＴデータシャッフリング及びメジアンフィルタリングにも有用である。全てのＰＥが異なるレジスタにアクセスし、ＳＩＭＤモデルを壊して追加のスコアボーディング用ハードウェアが必要となる可能性もあるため、実行するのが難しい。
【００３４】
メディアプロセッサにより、ハードウェアの費用を回避するわずかな制約が発生する。一つのレジスタから別のレジスタにデータをコピーするのに、特別な命令が使われ、コピー元（又はコピー先）のレジスタが別のレジスタにおいて特定される。制約は、インダイレクションを実行している間、間接アクセスが可能なレジスタは全て直接使用されるべきではないということである。これにより、正確な操作を行うために直接アクセスされたレジスタがスコアボーディング管理されている間は、間接アクセスされたレジスタがスコアボーディング管理される必要がなくなる。その代わり、インダイレクションごとに追加の命令が必要となる。
【００３５】
ハードウェア実施例の詳細
図５ａ〜５ｇは、ハードウェアの実施例及びその種々の操作モードをまとめて示す一連の関連図である。
図５ａは、ハードウェアのレジスタ構造の例を示し、この例ではレジスタが、各々のデータレーンに接続されたマルチプレクサ５２０をそれぞれ有する複数のマルチポートＲＡＭ５１０に分けられている。転置をサポートするために、４つのＲＡＭを接続することができる。各ＲＡＭは３２ビット幅であり、４つのバイト幅のレーンを示す。各ＲＡＭは、レジスタファイルの第４の入口全てを保持する。ドットが描かれたボックスは、２つの入力を切り替えるマルチプレクサである。このハードウェア実施により、上記の機能的な関係を全て実行することが可能になる。
マルチプレクサは例えば、（マルチプレクサ毎に）単一の制御ビットによって選択される２つの状態を有する単一のバイ８回路であってよい。これらの制御ビットを例えば、適切な構造命令によって設定することが可能である。
【００３６】
図５ｂ〜５ｇは、このレジスタの操作の異なる状態を示す図である。これらの図では、動作中のマルチプレクサ５２０へのアクティブな入力のみが図示されている。
図５ｂは、この実施例における、転置を行わない、アドレス０における３２ビットワードに必要なルーティングを示す。
図５ｃは、この実施例における、転置を行わない、アドレス１のルーティングを示す。
図５ｄは、８ビット転置の第１の３２ビットに必要なルーティングを示し、この実施例では、各ＲＡＭの下位バイトが異なるバイトレーンに接続されている。
図５ｅは、この実施例における、８ビット転置の第２の３２ビットのルーティングを示す。
図５ｆは、この実施例における、１６ビット転置を行うアドレス０のルーティングを示す。
図５ｇは、この実施例における、１６ビット転置を行うアドレス１のルーティングを示す。
【００３７】
このハードウェア実施ももちろん多様であってよいが、これにより、（電力を消費する）レジスタからレジスタへの不必要な転送なしに、どのようにして多重化により極めて多用途の出力組み換えオプション一式が得られるかが示される。
【００３８】
好適な実施例の更なる詳細が、米国特許出願公開第１１／５３６４８３号明細書に記載されており、これは、参照することによりその全体が本明細書に組み込まれている。この実施例は、開示された本発明の有利な形態であるが、本明細書に記載されたＩ／Ｏアーキテクチャはその他多数の形態においても使用することが可能であることが強調されるべきである。
【００３９】
革新的な実施形態の開示された種類によると、レジスタ内でアクセスされたデータを選択的に転置する方法であって、それぞれが出力においてｎ個のデータレーンを各々有する、ｎ個のメモリセグメントにデータを保存する動作と、ｎ個のデータバスセグメントの各々を前記ｎ２個のデータレーンの一つに選択的に接続する動作とを含」：み、所望のデータ転置が、レジスタアクセス時にレジスタからレジスタへの転送を行わずに、行われる方法が提供される。
【００４０】
革新的な実施形態の開示された種類によると、電子装置であって、論理演算装置、及び一以上のＩ／Ｏレジスタを備え、このＩ／Ｏレジスタが、データセットの各々一部分をそれぞれ保持する複数のメモリセグメントであって、前記データセットが一貫したパターンで前記セグメント全体に分布しており、各前記メモリセグメントによりデータ経路の複数のレーンが得られる複数のメモリセグメントと、各々ひとつの前記メモリセグメントの各々のデータ経路に、それぞれの出力バスセグメントを接続するために各々接続されている複数のマルチプレクサを備えている電子装置が提供される。
【００４１】
修正及び変更
当業者によって認識されるように、本明細書に記載された革新的な概念は、非常に幅広い応用範囲において修正及び変更することが可能であり、したがって、特許対象品の範囲は、いかなる特定の例示の教示によっても限定されない。
【００４２】
例えば、開示された実施形態による複数のアクセスモードは、図画及び画像処理に特に有用であり、（例えば時系列ボクセル画像等の）内部３Ｄ又は４Ｄ構造を有するデータにも特に有用になり得る。上記の場合では、カスタマイズされたデータ転置能力が、フィルタリング及び変換を支援できる。
【００４３】
別の実施例では、適応性を有するレジスタにより上述したすべての転置ではないが、その内の幾つかを任意に実行することができる、及び／又はこれらリスト化されたもの以外の追加的な転置を実行することができる。
【００４４】
別の実施例では、開示されたハードウェア実施にバイト幅の「レーン」を使用するが、代替的にそしてあまり好適でなく、異なる精密度を使用することができる。高速のニブル単位の転置を所望する場合は、４つのＲＡＭの代わりに８つのＲＡＭを使用することができ、各ＲＡＭは４つのレーンの代わりに８つのレーン、そして４つの出力バスの代わりに８つの出力バスを有する。しかしながら、これが実行される場合は、マルチプレクサの数が４倍になることを注記する。
【００４５】
別の代替及びあまり好適ではない実施例では、所望の場合は更なる論理演算装置をマルチプレクサに追加することができる。例えば、マルチプレクサは、８ビット出力が選択された入力に接続される（又はされない）ばかりではなく、入力ビットの順序変更、ペアワイズ交換、補完、ＡＮＤ化等が可能である、追加の状態を有することができる。この場合は好適には追加の制御ビットをマルチプレクサにつなげる。
【００４６】
本明細書における記載事項は、いかなる特定の要素、ステップ、又は機能も、請求項の範囲に含まれるべき必要不可欠な要素であると解釈されるべきではない。特許対象品の範囲は認可された請求項によってのみ規定される。更に、的確な用語「〜ための手段」の後に分詞が続かない限りは、いかなる請求項も米国特許法第３５巻１１２条の第６項を行使するよう意図されていない。
出願された請求項はできる限り広範囲にわたるよう意図されており、いかなる対象品も意図的に撤回、譲与、あるいは放棄されていない。
【図１】
0005538889.tif 000002
【図２】
0005538889.tif 000003
【図３】
0005538889.tif 000004
【図４】
0005538889.tif 000005
【図５ａ】
0005538889.tif 000006
【図５ｂ】
0005538889.tif 000007
【図５ｃ】
0005538889.tif 000008
【図５ｄ】
0005538889.tif 000009
【図５ｅ】
0005538889.tif 000010
【図５ｆ】
0005538889.tif 000011
【図５ｇ】
0005538889.tif 000012