説明

2次元マトリクス処理のためのレジスタ

【課題】SIMDマルチメディア処理を効率的に実装するために、複数の関連データ・アイテムを単一のMMXレジスタ内に配置する。
【解決手段】プロセッサがレジスタの二組のセットを有し、第1のセットはデータのマトリクスをストアし、第2のセットは、データのマトリクスの転置されたコピーをストアする。第1のセットのいずれかの行のいずれかの部分が変更されたとき、第2のセット内の転置されたコピーの対応する列の部分が自動的に変更される。データのマトリクスをレジスタの第1のセットにストアし、レジスタの第1のセットは第1の数のレジスタを有し、各レジスタは第1の数のストレージ・ユニットを含み、各ストレージ・ユニットはマトリクスの要素をストアし、レジスタの第2のセット内に転置するステップであって、レジスタの第2のセットは第2の数のレジスタを有し、各レジスタは第2の数のストレージ・ユニットを包含する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概してコンピュータ・システムに関し、より具体的にはプロセッサ・アーキテクチャに関する。
【背景技術】
【0002】
プロセッサの中には、マルチメディア・オペレーションのために、それらの命令セット・アーキテクチャ(ISA)への拡張を提供するように設計されたものがある。たとえばカリフォルニア州サンタクララのIntel Corporation(インテル・コーポレーション)から入手可能なPentium(登録商標)IIプロセッサ、Pentium(登録商標)IIIプロセッサ、およびCeleronTM(セレロン)プロセッサによってサポートされているMMXTM命令は、ディジタル信号処理、およびオーディオならびにビデオ処理といったマルチメディア・アプリケーションに有用な各種の機能を実装している。これらの命令は、マルチメディアおよび通信データ・タイプにおける単一命令複数データ処理(SIMD:Single Instruction Multiple Data)オペレーションをサポートする。これらの命令の使用は、それ以前から存在している所定の機能を実行するための命令の組み合わせを超えて性能が向上し、個別のMMXTM命令はあるタイプの処理に有効であるが、より高速なマルチメディア処理に対しては、いまだに各種の障害が残されている。たとえば、ブロック−ベースのイメージならびにビデオ処理アルゴリズムの実装の多く(ジョイント・フォトグラフィック・エキスパーツ・グループ(JPEG:Joint Photographic Experts Group)スキームおよびムービング・ピクチャ・エキスパーツ・グループ(MPEG:Moving Picture Experts Group)スキーム等)は、MMXTM命令に関するオペランドとしてアクセス可能なレジスタのセット内にストアされるデータが、マトリクス算術演算の間に転置されるという結果をもたらす。しかしながら、レジスタ間におけるこのデータの転置は、著しいオーバーヘッドを招き、それによってマルチメディア処理に関する全体的なプロセッサのスループットが低下する。したがって、こういった遅延を回避ないしは最小化するための何らかのテクニックがプロセッサ技術において有用な進展をもたらすと考えられる。
【発明の概要】
【0003】
本発明の一実施態様は、データのマトリクスをストアするレジスタの第1のセット、当該レジスタの第1のセットに結合され、データのマトリクスの転置されたコピーをストアするレジスタの第2のセットを有するプロセッサである。
【0004】
本発明の別の実施態様は、プロセッサによるマトリクスの処理に関するレジスタの二組のセットを使用する方法である。この方法は、データのマトリクスをレジスタの第1のセットにストアするステップと当該データのマトリクスをレジスタの第2のセット内に転置するステップとを備える。本方法におけるレジスタの第1のセットは第1の数のレジスタを有し、各レジスタは第1の数のストレージ・ユニットを含み、各ストレージ・ユニットはマトリクスの要素をストアする。また、レジスタの第2のセットは第2の数のレジスタを有し、各レジスタは第2の数のストレージ・ユニットを含む。この方法はさらに、レジスタの第1のセットの1つを参照してデータのマトリクスの1つの行に対する演算を行うステップ、レジスタの第2のセットの1つを参照して当該データのマトリクスの1つの列に対する演算を行うステップを包含する。
【発明の効果】
【0005】
本発明の特徴ならびに利点については、以下に述べる本発明の詳細な説明から明らかなものとなろう。
【図面の簡単な説明】
【0006】
【図1】従来技術に従ったMMXTMレジスタのセットを示した説明図である。
【図2】イメージ・データの8ピクセル×8ピクセルのブロックをストアしているMMXTMレジスタのセットを示した説明図である。
【図3】イメージ・データの転置された8ピクセル×8ピクセルのブロックをストアしているMMXTMレジスタのセットを示した説明図である。
【図4】本発明の1つの実施形態に従ったMMXTMレジスタ・セットにリンクされる仮想MMXTMレジスタ・セットを示した概要図である。
【図5】イメージ・データの転置された8ピクセル×8ピクセルのブロックをストアしている仮想MMXTMレジスタのセットを示した説明図である。
【図6】本発明の1つの実施形態に従った、MMXTMレジスタ・セットおよび仮想MMXTMレジスタ・セットを伴うプロセッサを有するシステムを示したブロック図である。
【発明を実施するための形態】
【0007】
本発明の1つの実施態様は、2次元(2−D)マトリクス演算にとってより効率的となるMMXTMレジスタの拡張に関する方法および装置からなる。
【0008】
ところで、この明細書において本発明の「一実施形態」もしくは「1つの実施形態」と述べるときには、その実施形態に関連して述べられている特定の特徴、構造または特性が、本発明の少なくとも1つの実施形態に含まれていることを意味する。したがって、この明細書全体を通じて随所に現れる「一実施形態においては」という表現は、必ずしも同一の実施形態を参照していない。
【0009】
1つの命令を実行するとき、通常プロセッサは、1ないしは複数のレジスタ・オペランドを参照する。MMXTM命令の場合であれば、レジスタ・オペランドは、MMXTMレジスタと呼ばれる一組ないしは複数組のレジスタの特定のセットであろう。図1は、従来技術に従ったMMXTMレジスタのセットを示した説明図である。図1に示されているレジスタ・セット10には、8個のMMXTMレジスタがあり、それぞれmm0(12)〜mm7(14)のラベルが付されている。別の実施形態においては、レジスタの数が8より多く、もしくはそれより少なくなることもある。それぞれのレジスタは、複数個のデータのユニットを含んでおり、図示のように下位ユニット16から上位ユニット18に至る順序が設定されている。一実施形態においては、1ユニットが1バイトを構成する。別の実施形態においては、1ユニットがワード、倍長ワード、あるいはそのほかのストレージ・ユニットを構成することもある。少なくとも1つの周知のシステムにおいては、1つのMMXTMレジスタ当たりのユニットの数(たとえばバイト数)が8であるが、別のシステムにおいては、使用されるユニット数がこれと異なることもある。MMXTMレジスタを使用してSIMDマルチメディア処理を効率的に実装するためには、複数の関連データ・アイテムが単一のMMXTMレジスタ内に配置されるように、処理対象となるデータを整列させる必要がある。たとえば、イメージ・データの、8ピクセル×8ピクセルのブロックが図2に示されるようにMMXTMレジスタ内にレイアウトされており、それぞれのピクセル値P(i,j)が1ユニット内に表現され、かつレジスタのセット全体がマトリクスを表している場合について考える。この8ピクセル×8ピクセルのブロックは、より大きなイメージの部分と考えてもよい。この例においては、このブロックのイメージ・データの第1行が第1のMMXTMレジスタmm0(12)にストアされ、その際、第1行の第1列がmm0の下位ユニットにストアされ、第1行の最終列がmm0の上位ユニットにストアされ、イメージ・データの第2行が第2のMMXTMレジスタmm1(20)にストアされ、その際、第2行の第1列がmm1の下位ユニットにストアされ、第2行の最終列がmm1の上位ユニットにストアされるといった形が繰り返される。
【0010】
図示のようにMMXTMレジスタ内にデータがストアされた後は、プロセッサが命令を実行し、一度に1行ずつ、8×8マトリクスに対する演算を効率的に行うことができる。このタイプの処理は、たとえばブロック−ベースのイメージング・アプリケーションをはじめその他のアプリケーションにおいて広く使用されている。たとえば、次に示すように単一のMMXTM命令を用いて、行0のすべてのデータを行3のデータに加算することができる。
【0011】
PADDB MM0,MM3;add row 0 to roe 3 and store results in row 0 (行0を行3に加算し、結果を行0にストアする。
【0012】
しかしながら、8×8マトリクスに対して一度に1列ずつの演算を行うためには、各列データが8つのMMXTMレジスタにわたって振り分けられていることから問題が生じる。たとえば、第1列のデータは、mm0(12)からmm7(14)までの下位ユニットの間にそれぞれ振り分けられており、最終列のデータはmm0からmm7までの上位ユニットの間にそれぞれ振り分けられている。MMXTMのSIMD処理の使用から得られる利益を継続させるためには、8×8マトリクスを図3に示すように転置する必要が生じる。マトリクスの転置については数学でもよく知られている。転置後は、第1のMMXTMレジスタmm0(12)がオリジナルのデータの第1列をストアし、図示されているように、オリジナルの第1列の第1行が下位ユニット16内にストアされ、オリジナルの第1列の最終行が上位ユニット18内にストアされる。そのほかのMMXTMレジスタについても同様に、図示のように8×8マトリクスの列をストアすることになる。
【0013】
8×8マトリクスの転置は、周知のパック命令およびアンパック命令を使用して実行することができるが、この処理は非常に非効率的であり、著しい処理のオーバーヘッドをもたらす。概略で言えば、8×8マトリクスの転置処理は、4×4マトリクスの転置を実行することによって実施され、各転置には、Pentium(登録商標)IIIプロセッサ上における少なくとも12の処理サイクルを必要とする。したがって、MMXTM命令を使用して所定の列の8つの要素に対する演算をできるようにデータを単に再配置するだけでも、少なくとも64サイクルが使用されることになる。
【0014】
本発明の実施形態は、MMXTMレジスタにおける一連のパック命令およびアンパック命令を通じたデータの転置が必要となる問題を、プロセッサ内にマルチメディア処理を補助するレジスタの追加のセットを備えることによって解決する。本発明の実施形態では、プロセッサ・アーキテクチャ内にMMXTMレジスタの等価「ミラー」セットがデザインされる。このレジスタ・セットは、仮想MMXレジスタ・セットまたはVMXセットと呼ぶことができる。図4は、本発明の1つの実施形態に従ったMMXTMレジスタ・セットにリンクされる仮想MMXレジスタ・セットを示した概要図である。一実施形態においては、MMXTMレジスタ・セット10内のMMXTMレジスタの数は、VMXレジスタ・セット22内に備えられるVMXレジスタの数に等しくなる。それに加えて一実施形態においては、VMXレジスタの数は、各MMXTMレジスタ内のユニット数に等しいかそれより大きい(ユニットは、実装に応じてバイト、ワード、倍長ワード、またはその他のストレージ・ユニットとなる)。VMXレジスタ・セット22は、転置されたMMXTMレジスタ・セットからのマトリクス・データをストアし、MMXTMセット内のいずれかのレジスタのいずれかのユニットが変更されたときには、レジスタ更新ロジック23によって自動的に更新され得る。つまり、MMXTMレジスタ・セット10の1つの行のロードは、自動的にVMXレジスタ・セット22の1つの列のロードとなる。たとえば、第1のMMXTMレジスタmm0(12)からのデータは、自動的にVMXレジスタVM0〜VM7の下位ユニットにストアされ、第2のMMXTMレジスタmm1(20)からのデータは、自動的にVMXレジスタの、次に低いユニットにストアされるといった形になる。
【0015】
図2に戻るが、MMXTMレジスタに、図示のようにP0,0〜P7,7が割り当てられた8×8マトリクスがロードされると、VMXレジスタは、レジスタ更新ロジックによって自動的に、図5に示されるようにロードされる。マトリクスの行要素に対する演算を行う場合には、プログラムは、MMXTMレジスタmm0(12)〜mm7(14)の1ないしは複数を単純に参照することができる。しかしながら、このマトリクスの列要素に対する演算を行う場合には、プログラムが、上記に代えてVMXレジスタvm0(24)〜vm7(26)を参照する。MMXTMレジスタがプロセッサ・ハードウエア内においてVMXレジスタを用いてミラーリングされていることから、一貫性に関する問題をまったく伴わない。すべてのMMXTM命令は、必要に応じて適切なレジスタに対する参照を使用することによって、いずれかのレジスタのセットを用いて処理することができる。プロセッサの命令セットに対する変更はまったく必要なく、プログラム内のオペランド参照を変更するだけでよい。
【0016】
本発明の実施形態が現存するプロセッサ・アーキテクチャより優れている点の1つは、マトリクス演算に関して本発明がより優れた並列演算を提供することである。これは、複数のパック命令およびアンパック命令の実行を通じた列演算のための負担の大きい転置を回避することによって達成される。
【0017】
本発明がどのように使用されるかについての例は、多くのビデオ処理スキームにおいて8ピクセル×8ピクセル・ブロックを処理するために使用される離散コサイン変換(DCT)アルゴリズムに見ることができる。現在のところ8×8DCTを実行するために、まず1×8列の変換を実行し、8×8マトリクスの転置を行い、別の1×8列の変換を実行し、さらにその結果の転置を再度行ってDCT係数を求めている。現在Pentium(登録商標)クラスのプロセッサ上で実行されているもっとも最適化されたDCTは、約300の処理サイクルを必要とする。このうち、約100サイクルが8×8マトリクスに関する転置演算の実行に使用されている。つまり、本発明の実装によって、DCT処理に関する約30%の改善がもたらされる。同様に、逆DCTについてもパフォーマンス利得を達成することができる。ここではDCTの例について論じたが、本発明の実施形態は、各種のイメージならびにビデオ圧縮アルゴリズムに使用されるマトリクス演算を含めたあらゆるマトリクス演算に有用となると考えられる。
【0018】
以上、2次元(2−D)マトリクスに関連して本発明の説明を行ってきたが、そのコンセプトは3次元もしくはより多次元に適合させることができる。たとえば、レジスタの第3のセットをプロセッサの設計に含ませて、マトリクス・データの別の転置をストアさせてもよい。
【0019】
図6は、本発明の1つの実施形態に従った、MMXTMレジスタ・セットおよび仮想MMXTMレジスタ・セットを伴うプロセッサを有するシステムを示したブロック図である。システム50は、メモリ54に結合されたプロセッサ52を含むことができる。プロセッサ52は、この分野において周知の各種のコンポーネントを含んでいるが、図6においては明瞭化のためにその多くが省略されている。命令メモリ56は、1つないしは複数のMMXTMレジスタ10、もしくは1つないしは複数のVMXレジスタ22を参照することのある命令をストアしている。レジスタ更新ロジック23は、MMXTMレジスタの変更時にVMXレジスタ22の自動的な更新を整合させる。マルチプレクサ(MUX)58は、算術論理演算ユニット(ALU)60に対する入力のために、MMXTMレジスタもしくはVMXレジスタのうちのいずれか一方からのデータを選択する。このALUは、データ・メモリ52のためのデータを生成する。
【0020】
本発明は、より直感的な形態においてMMXTMレジスタが操作されることを可能にする。ミラー・レジスタ・セットの追加によって、あらゆるブロック−ベースのアルゴリズムの実装を単純化することが可能になり、そのパフォーマンスを向上させることができる。本発明から恩典を受けると見られるアプリケーションのいくつかの例としては、ビデオ圧縮アルゴリズムに使用される離散コサイン変換(DCT)、3次元(3−D)グラフィック・アルゴリズムにおけるマトリクス変換等が挙げられる。
【0021】
以上のとおり、例示の実施形態を参照して本発明について説明してきたが、この説明は、限定の意味に解釈されることを意図したものではない。例示の実施形態に対する各種の修正をはじめ本発明のそのほかの実施形態は、本発明が属する分野の当業者にとっては明らかであり、それらは本発明の精神ならびに範囲に含まれるものと見なす。

【特許請求の範囲】
【請求項1】
プロセッサによるマトリクスの処理に関するレジスタの二組のセットを使用する方法において、
データのマトリクスをレジスタの第1のセットにストアするステップであって、レジスタの第1のセットは第1の数のレジスタを含み、各レジスタは第1の数のストレージ・ユニットを含み、各ストレージ・ユニットは前記マトリクスの要素をストアするステップと、
前記データのマトリクスをレジスタの第2のセット内に転置するステップであって、前記レジスタの第2のセットは第2の数のレジスタを含み、各レジスタは第2の数のストレージ・ユニットを包含する、前記転置するステップと、
第1セットのレジスタの変更に応答して、前記第1のレジスタセット内にストアされている前記データのマトリックスと前記第2のレジスタのセット内にストアされている前記データのマトリックスの間の転置関係を維持するように第2セットのレジスタ群を自動的に変更するステップと、
前記レジスタの第1のセットの1つを参照して前記データのマトリクスの1つの行に対する演算を行うステップと、
前記レジスタの第2のセットの1つを参照して前記データのマトリクスの1つの列に対する演算を行うステップとを具備することを特徴とする方法。
【請求項2】
さらに、前記レジスタの第1のセット内の前記マトリクスの1つ行を変更するステップと、
前記レジスタの第2のセット内の前記転置されたマトリクスの対応する列を自動的に変更するステップとを含むことを特徴とする請求項1記載の方法。
【請求項3】
さらに、前記レジスタの第2のセットの1つにストアされた列データに対する変換演算を実行するステップを含むことを特徴とする請求項1記載の方法。
【請求項4】
前記変換演算を実行するステップが、前記レジスタの第2のセットの1つにストアされた列データに対する離散コサイン変換演算の実行を包含することを特徴とする請求項3記載の方法。
【請求項5】
前記第2のストレージ・ユニット数を、前記第1のレジスタ数より大きいかそれに等しいとしたことを特徴とする請求項1記載の方法。
【請求項6】
前記第1のレジスタ数を、前記第2のレジスタ数に等しいとしたことを特徴とする請求項1記載の方法。
【請求項7】
前記レジスタの第1のセットはMMX(商標)レジスタを含み、前記第1のレジスタ数は8であり、かつ前記データのマトリクスはイメージ・データを包含するものとしたことを特徴とする請求項1記載の方法。
【請求項8】
メモリと、
前記メモリに結合されたプロセッサとを包含するシステムであって、
前記プロセッサは、
データのマトリックスをストアするレジスタの第1のセットと、
前記データのマトリクスの転置をストアする第2のレジスタのセットと、
前記第1のレジスタのセットの変更に応答し、前記第1のレジスタのセット内にストアされている前記データのマトリクスと前記第2のレジスタのセット内にストアされているデータのマトリクスの前記転置の間の前記転置関係を維持するべく、前記第2のレジスタのセットを自動的に変更するロジックとを包含する、前記システム。
【請求項9】
前記レジスタの第1のセットにおける前記マトリクスの1つの行の変更が、自動的に、前記第2のレジスタのセット内にストアされている前記データのマトリックスの前記転置の列の対応する変更をもたらすことを特徴とする請求項8記載のシステム。
【請求項10】
前記レジスタの第1のセットは第1の数のレジスタを含み、その各レジスタは第1の数のストレージ・ユニットを包含し、前記レジスタの第2のセットは第2の数のレジスタを含み、その各レジスタは第2の数のストレージ・ユニットを包含し、かつ前記第2のストレージ・ユニット数を、前記第1のレジスタ数より大きいかそれに等しいとしたことを特徴とする請求項8記載のシステム。
【請求項11】
前記第1のレジスタ数を、前記第2のレジスタ数に等しいとしたことを特徴とする請求項10記載のシステム。
【請求項12】
前記レジスタの第1のセットはMMXTMレジスタを含み、前記第1のレジスタ数は8であり、かつ前記データのマトリクスはイメージ・データを包含するものとしたことを特徴とする請求項11記載のシステム。
【請求項13】
前記プロセッサが、前記レジスタの第1のセットの1つを参照する命令を実行して前記データのマトリクスの1つの行に対する演算を行い、かつ前記レジスタの第2のセットの1つを参照する命令を実行して前記データのマトリクスの1つの列に対する演算を行うことを特徴とする請求項8記載のシステム。
【請求項14】
第1の数の行と第1の数の列を有する第1のデータのマトリクスをストアする第1のレジスタのセットと、
第1行インデックスと第1列インデックスにストアされている前記第1のデータのマトリクス内の第1要素と、
第2の数の行と第2の数の列を有する第2のデータのマトリクスをストアする第2のレジスタのセットと、
前記第1列インデックスに等しい第2行インデックスと前記第1行インデックスに等しい第2列インデックスにストアされている前記第2のデータのマトリクス内の第2要素と、
前記第1要素の任意の変更に応答し、前記第1要素の前記回転された前記第2要素を自動的に変更するロジックとを有するプロセッサ。
【請求項15】
前記ロジックは、前記第1要素の前記回転された前記第2要素を前記第1要素の新しい値に自動的に設定することによって前記第1要素の値の任意の変更に応答する請求項14記載のプロセッサ。
【請求項16】
前記第1要素を前記第1要素の前記回転された前記第2要素の新しい値に自動的に設定することによって前記第1要素の前記回転された前記第2要素の値の任意の変更に応答するロジックをさらに含む請求項15記載のプロセッサ。
【請求項17】
前記第2の行数を、前記第1の列数より大きいかそれに等しいとし、
前記第2の列数を、前記第1の行数より大きいかそれに等しいとしたことを特徴とする請求項16記載のプロセッサ。
【請求項18】
単一の命令で、前記第1のデータのマトリクスと前記第2のデータのマトリクスのうちのいずれか一方の列のストアされた要素を参照するロジックをさらに含む請求項17記載のプロセッサ。
【請求項19】
前記レジスタの第1のセットは第1の数のレジスタを含み、その各レジスタは第1の数のストレージ・ユニットを包含し、
前記レジスタの第2のセットは第2の数のレジスタを含み、その各レジスタは第2の数のストレージ・ユニットを包含し、かつ
前記第2のストレージ・ユニット数を、前記第1のレジスタ数より大きいかそれに等しいとしたことを特徴とする請求項18記載のプロセッサ。
【請求項20】
前記第1のレジスタ数を、前記第2のレジスタ数に等しいとしたことを特徴とする請求項19記載のプロセッサ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2012−9055(P2012−9055A)
【公開日】平成24年1月12日(2012.1.12)
【国際特許分類】
【出願番号】特願2011−177920(P2011−177920)
【出願日】平成23年8月16日(2011.8.16)
【分割の表示】特願2001−513032(P2001−513032)の分割
【原出願日】平成12年6月26日(2000.6.26)
【出願人】(591003943)インテル・コーポレーション (1,101)
【Fターム(参考)】