(57)【特許請求の範囲】
【請求項１】
プロセッサによるマトリクスの処理に関するレジスタの二組のセットを使用する方法において、
データのマトリクスをプロセッサのレジスタの第１のセットにストアするステップであって、前記レジスタの第１のセットは第１の数のレジスタを含み、各レジスタは第１の数のストレージ・ユニットを含み、各ストレージ・ユニットは前記マトリクスの要素をストアするステップと、
前記データのマトリクスを前記プロセッサのレジスタの第２のセット内にデータの転置マトリクスとしてストアするステップであって、前記レジスタの第２のセットは第２の数のレジスタを含み、各レジスタは第２の数のストレージ・ユニットを包含する、前記ストアするステップと、
前記レジスタの第１のセットの変更に応答して、前記レジスタの第１のセット内にストアされている前記データのマトリックスと前記レジスタの第２のセット内にストアされている前記データのマトリックスの間の転置関係を維持するように前記レジスタの第２のセットを自動的に変更するステップと、
第１の命令において、前記レジスタの第１のセットの１つを参照して前記データのマトリクスの１つの行に対する演算を行うステップと、
第２の命令において、前記レジスタの第２のセットの１つを参照して前記データのマトリクスの１つの列に対する演算を行うステップとを具備することを特徴とする方法。
【請求項２】
さらに、前記レジスタの第１のセット内の前記マトリクスの１つ行を変更するステップと、
前記レジスタの第２のセット内の前記転置されたマトリクスの対応する列を自動的に変更するステップとを含むことを特徴とする請求項１記載の方法。
【請求項３】
さらに、前記レジスタの第２のセットの１つにストアされた列データに対する変換演算を実行するステップを含むことを特徴とする請求項１記載の方法。
【請求項４】
前記変換演算を実行するステップが、前記レジスタの第２のセットの１つにストアされた列データに対する離散コサイン変換演算の実行を包含することを特徴とする請求項３記載の方法。
【請求項５】
前記第２のストレージ・ユニット数を、前記第１のレジスタ数より大きいかそれに等しいとしたことを特徴とする請求項１記載の方法。
【請求項６】
前記第１のレジスタ数を、前記第２のレジスタ数に等しいとしたことを特徴とする請求項１記載の方法。
【請求項７】
前記レジスタの第１のセットはＭＭＸ（商標）レジスタを含み、前記第１のレジスタ数は８であり、かつ前記データのマトリクスはイメージ・データを包含するものとしたことを特徴とする請求項１記載の方法。
【請求項８】
メモリと、
前記メモリに結合されたプロセッサとを包含するシステムであって、 
前記プロセッサは、
データのマトリックスをストアするレジスタの第１のセットと、 
前記データのマトリクスの転置をストアするレジスタの第２のセットであって、前記レジスタの第１のセットのうちの第１のレジスタのロードは、自動的に前記レジスタの第２のセットの列のロードとなる、前記レジスタの第２のセットと、
前記レジスタの第１のセットの変更に応答し、前記レジスタの第１のセット内にストアされている前記データのマトリクスと前記レジスタの第２のセット内にストアされているデータのマトリクスの前記転置の間の前記転置関係を維持するべく、前記レジスタの第２のセットを自動的に変更するロジックとを包含する、前記システム。
【請求項９】
前記レジスタの第１のセットにおける前記マトリクスの１つの行の変更が、自動的に、前記レジスタの第２のセット内にストアされている前記データのマトリックスの前記転置の列の対応する変更をもたらすことを特徴とする請求項８記載のシステム。
【請求項１０】
前記レジスタの第１のセットは第１の数のレジスタを含み、その各レジスタは第１の数のストレージ・ユニットを包含し、前記レジスタの第２のセットは第２の数のレジスタを含み、その各レジスタは第２の数のストレージ・ユニットを包含し、かつ前記第２のストレージ・ユニット数を、前記第１のレジスタ数より大きいかそれに等しいとしたことを特徴とする請求項８記載のシステム。
【請求項１１】
前記第１のレジスタ数を、前記第２のレジスタ数に等しいとしたことを特徴とする請求項１０記載のシステム。
【請求項１２】
前記レジスタの第１のセットはＭＭＸ（商標）レジスタを含み、前記第１のレジスタ数は８であり、かつ前記データのマトリクスはイメージ・データを包含するものとしたことを特徴とする請求項１１記載のシステム。
【請求項１３】
前記プロセッサが、前記レジスタの第１のセットの１つを参照する命令を実行して前記データのマトリクスの１つの行に対する演算を行い、かつ前記レジスタの第２のセットの１つを参照する命令を実行して前記データのマトリクスの１つの列に対する演算を行うことを特徴とする請求項８記載のシステム。
【請求項１４】
第１の数の行と第１の数の列を有する第１のデータのマトリクスをストアするレジスタの第１のセットと、
第１行インデックスと第１列インデックスにストアされている前記第１のデータのマトリクス内の第１要素と、
第２の数の行と第２の数の列を有する第２のデータのマトリクスをストアするレジスタの第２のセットと、
前記第１列インデックスに等しい第２行インデックスと前記第１行インデックスに等しい第２列インデックスにストアされている前記第２のデータのマトリクス内の第２要素と、
前記第１要素の任意の変更に応答し、前記第１要素の前記回転された前記第２要素を自動的に変更するロジックとを有し、
前記レジスタの第１のセットのうちの第１のレジスタのロードは、自動的に前記レジスタの第２のセットの列のロードとなる、プロセッサ。
【請求項１５】
前記ロジックは、前記第１要素の前記回転された前記第２要素を前記第１要素の新しい値に自動的に設定することによって前記第１要素の値の任意の変更に応答する請求項１４記載のプロセッサ。
【請求項１６】
前記第１要素を前記第１要素の前記回転された前記第２要素の新しい値に自動的に設定することによって前記第１要素の前記回転された前記第２要素の値の任意の変更に応答するロジックをさらに含む請求項１５記載のプロセッサ。
【請求項１７】
前記第２の行数を、前記第１の列数より大きいかそれに等しいとし、
前記第２の列数を、前記第１の行数より大きいかそれに等しいとしたことを特徴とする請求項１６記載のプロセッサ。
【請求項１８】
単一の命令で、前記第１のデータのマトリクスと前記第２のデータのマトリクスのうちのいずれか一方の列のストアされた要素を参照するロジックをさらに含む請求項１７記載のプロセッサ。
【請求項１９】
前記レジスタの第１のセットは第１の数のレジスタを含み、その各レジスタは第１の数のストレージ・ユニットを包含し、
前記レジスタの第２のセットは第２の数のレジスタを含み、その各レジスタは第２の数のストレージ・ユニットを包含し、かつ
前記第２のストレージ・ユニット数を、前記第１のレジスタ数より大きいかそれに等しいとしたことを特徴とする請求項１８記載のプロセッサ。
【請求項２０】
前記第１のレジスタ数を、前記第２のレジスタ数に等しいとしたことを特徴とする請求項１９記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概してコンピュータ・システムに関し、より具体的にはプロセッサ・アーキテクチャに関する。
【背景技術】
【０００２】
プロセッサの中には、マルチメディア・オペレーションのために、それらの命令セット・アーキテクチャ（ＩＳＡ）への拡張を提供するように設計されたものがある。たとえばカリフォルニア州サンタクララのＩｎｔｅｌ Ｃｏｒｐｏｒａｔｉｏｎ（インテル・コーポレーション）から入手可能なＰｅｎｔｉｕｍ（登録商標）ＩＩプロセッサ、Ｐｅｎｔｉｕｍ（登録商標）ＩＩＩプロセッサ、およびＣｅｌｅｒｏｎTM（セレロン）プロセッサによってサポートされているＭＭＸTM命令は、ディジタル信号処理、およびオーディオならびにビデオ処理といったマルチメディア・アプリケーションに有用な各種の機能を実装している。これらの命令は、マルチメディアおよび通信データ・タイプにおける単一命令複数データ処理（ＳＩＭＤ：Single Instruction Multiple Data）オペレーションをサポートする。これらの命令の使用は、それ以前から存在している所定の機能を実行するための命令の組み合わせを超えて性能が向上し、個別のＭＭＸTM命令はあるタイプの処理に有効であるが、より高速なマルチメディア処理に対しては、いまだに各種の障害が残されている。たとえば、ブロック−ベースのイメージならびにビデオ処理アルゴリズムの実装の多く（ジョイント・フォトグラフィック・エキスパーツ・グループ（ＪＰＥＧ：Joint Photographic Experts Group）スキームおよびムービング・ピクチャ・エキスパーツ・グループ（ＭＰＥＧ：Moving Picture Experts Group）スキーム等）は、ＭＭＸTM命令に関するオペランドとしてアクセス可能なレジスタのセット内にストアされるデータが、マトリクス算術演算の間に転置されるという結果をもたらす。しかしながら、レジスタ間におけるこのデータの転置は、著しいオーバーヘッドを招き、それによってマルチメディア処理に関する全体的なプロセッサのスループットが低下する。したがって、こういった遅延を回避ないしは最小化するための何らかのテクニックがプロセッサ技術において有用な進展をもたらすと考えられる。
【発明の概要】
【０００３】
本発明の一実施態様は、データのマトリクスをストアするレジスタの第１のセット、当該レジスタの第１のセットに結合され、データのマトリクスの転置されたコピーをストアするレジスタの第２のセットを有するプロセッサである。
【０００４】
本発明の別の実施態様は、プロセッサによるマトリクスの処理に関するレジスタの二組のセットを使用する方法である。この方法は、データのマトリクスをレジスタの第１のセットにストアするステップと当該データのマトリクスをレジスタの第２のセット内に転置するステップとを備える。本方法におけるレジスタの第１のセットは第１の数のレジスタを有し、各レジスタは第１の数のストレージ・ユニットを含み、各ストレージ・ユニットはマトリクスの要素をストアする。また、レジスタの第２のセットは第２の数のレジスタを有し、各レジスタは第２の数のストレージ・ユニットを含む。この方法はさらに、レジスタの第１のセットの１つを参照してデータのマトリクスの１つの行に対する演算を行うステップ、レジスタの第２のセットの１つを参照して当該データのマトリクスの１つの列に対する演算を行うステップを包含する。
【発明の効果】
【０００５】
本発明の特徴ならびに利点については、以下に述べる本発明の詳細な説明から明らかなものとなろう。
【図面の簡単な説明】
【０００６】
【図１】従来技術に従ったＭＭＸＴＭレジスタのセットを示した説明図である。
【図２】イメージ・データの８ピクセル×８ピクセルのブロックをストアしているＭＭＸＴＭレジスタのセットを示した説明図である。
【図３】イメージ・データの転置された８ピクセル×８ピクセルのブロックをストアしているＭＭＸＴＭレジスタのセットを示した説明図である。
【図４】本発明の１つの実施形態に従ったＭＭＸＴＭレジスタ・セットにリンクされる仮想ＭＭＸＴＭレジスタ・セットを示した概要図である。
【図５】イメージ・データの転置された８ピクセル×８ピクセルのブロックをストアしている仮想ＭＭＸＴＭレジスタのセットを示した説明図である。
【図６】本発明の１つの実施形態に従った、ＭＭＸＴＭレジスタ・セットおよび仮想ＭＭＸＴＭレジスタ・セットを伴うプロセッサを有するシステムを示したブロック図である。
【発明を実施するための形態】
【０００７】
本発明の１つの実施態様は、２次元（２−Ｄ）マトリクス演算にとってより効率的となるＭＭＸTMレジスタの拡張に関する方法および装置からなる。
【０００８】
ところで、この明細書において本発明の「一実施形態」もしくは「１つの実施形態」と述べるときには、その実施形態に関連して述べられている特定の特徴、構造または特性が、本発明の少なくとも１つの実施形態に含まれていることを意味する。したがって、この明細書全体を通じて随所に現れる「一実施形態においては」という表現は、必ずしも同一の実施形態を参照していない。
【０００９】
１つの命令を実行するとき、通常プロセッサは、１ないしは複数のレジスタ・オペランドを参照する。ＭＭＸTM命令の場合であれば、レジスタ・オペランドは、ＭＭＸTMレジスタと呼ばれる一組ないしは複数組のレジスタの特定のセットであろう。図１は、従来技術に従ったＭＭＸTMレジスタのセットを示した説明図である。図１に示されているレジスタ・セット１０には、８個のＭＭＸTMレジスタがあり、それぞれｍｍ０（１２）〜ｍｍ７（１４）のラベルが付されている。別の実施形態においては、レジスタの数が８より多く、もしくはそれより少なくなることもある。それぞれのレジスタは、複数個のデータのユニットを含んでおり、図示のように下位ユニット１６から上位ユニット１８に至る順序が設定されている。一実施形態においては、１ユニットが１バイトを構成する。別の実施形態においては、１ユニットがワード、倍長ワード、あるいはそのほかのストレージ・ユニットを構成することもある。少なくとも１つの周知のシステムにおいては、１つのＭＭＸTMレジスタ当たりのユニットの数（たとえばバイト数）が８であるが、別のシステムにおいては、使用されるユニット数がこれと異なることもある。ＭＭＸTMレジスタを使用してＳＩＭＤマルチメディア処理を効率的に実装するためには、複数の関連データ・アイテムが単一のＭＭＸTMレジスタ内に配置されるように、処理対象となるデータを整列させる必要がある。たとえば、イメージ・データの、８ピクセル×８ピクセルのブロックが図２に示されるようにＭＭＸTMレジスタ内にレイアウトされており、それぞれのピクセル値Ｐ（ｉ，ｊ）が１ユニット内に表現され、かつレジスタのセット全体がマトリクスを表している場合について考える。この８ピクセル×８ピクセルのブロックは、より大きなイメージの部分と考えてもよい。この例においては、このブロックのイメージ・データの第１行が第１のＭＭＸTMレジスタｍｍ０（１２）にストアされ、その際、第１行の第１列がｍｍ０の下位ユニットにストアされ、第１行の最終列がｍｍ０の上位ユニットにストアされ、イメージ・データの第２行が第２のＭＭＸTMレジスタｍｍ１（２０）にストアされ、その際、第２行の第１列がｍｍ１の下位ユニットにストアされ、第２行の最終列がｍｍ１の上位ユニットにストアされるといった形が繰り返される。
【００１０】
図示のようにＭＭＸTMレジスタ内にデータがストアされた後は、プロセッサが命令を実行し、一度に１行ずつ、８×８マトリクスに対する演算を効率的に行うことができる。このタイプの処理は、たとえばブロック−ベースのイメージング・アプリケーションをはじめその他のアプリケーションにおいて広く使用されている。たとえば、次に示すように単一のＭＭＸTM命令を用いて、行０のすべてのデータを行３のデータに加算することができる。
【００１１】
PADDB MM0,MM3;add row 0 to roe 3 and store results in row 0 （行０を行３に加算し、結果を行０にストアする。
【００１２】
しかしながら、８×８マトリクスに対して一度に１列ずつの演算を行うためには、各列データが８つのＭＭＸTMレジスタにわたって振り分けられていることから問題が生じる。たとえば、第１列のデータは、ｍｍ０（１２）からｍｍ７（１４）までの下位ユニットの間にそれぞれ振り分けられており、最終列のデータはｍｍ０からｍｍ７までの上位ユニットの間にそれぞれ振り分けられている。ＭＭＸTMのＳＩＭＤ処理の使用から得られる利益を継続させるためには、８×８マトリクスを図３に示すように転置する必要が生じる。マトリクスの転置については数学でもよく知られている。転置後は、第１のＭＭＸＴＭレジスタｍｍ０（１２）がオリジナルのデータの第１列をストアし、図示されているように、オリジナルの第１列の第１行が下位ユニット１６内にストアされ、オリジナルの第１列の最終行が上位ユニット１８内にストアされる。そのほかのＭＭＸTMレジスタについても同様に、図示のように８×８マトリクスの列をストアすることになる。
【００１３】
８×８マトリクスの転置は、周知のパック命令およびアンパック命令を使用して実行することができるが、この処理は非常に非効率的であり、著しい処理のオーバーヘッドをもたらす。概略で言えば、８×８マトリクスの転置処理は、４×４マトリクスの転置を実行することによって実施され、各転置には、Ｐｅｎｔｉｕｍ（登録商標）ＩＩＩプロセッサ上における少なくとも１２の処理サイクルを必要とする。したがって、ＭＭＸTM命令を使用して所定の列の８つの要素に対する演算をできるようにデータを単に再配置するだけでも、少なくとも６４サイクルが使用されることになる。
【００１４】
本発明の実施形態は、ＭＭＸTMレジスタにおける一連のパック命令およびアンパック命令を通じたデータの転置が必要となる問題を、プロセッサ内にマルチメディア処理を補助するレジスタの追加のセットを備えることによって解決する。本発明の実施形態では、プロセッサ・アーキテクチャ内にＭＭＸTMレジスタの等価「ミラー」セットがデザインされる。このレジスタ・セットは、仮想ＭＭＸレジスタ・セットまたはＶＭＸセットと呼ぶことができる。図４は、本発明の１つの実施形態に従ったＭＭＸTMレジスタ・セットにリンクされる仮想ＭＭＸレジスタ・セットを示した概要図である。一実施形態においては、ＭＭＸTMレジスタ・セット１０内のＭＭＸTMレジスタの数は、ＶＭＸレジスタ・セット２２内に備えられるＶＭＸレジスタの数に等しくなる。それに加えて一実施形態においては、ＶＭＸレジスタの数は、各ＭＭＸTMレジスタ内のユニット数に等しいかそれより大きい（ユニットは、実装に応じてバイト、ワード、倍長ワード、またはその他のストレージ・ユニットとなる）。ＶＭＸレジスタ・セット２２は、転置されたＭＭＸＴＭレジスタ・セットからのマトリクス・データをストアし、ＭＭＸTMセット内のいずれかのレジスタのいずれかのユニットが変更されたときには、レジスタ更新ロジック２３によって自動的に更新され得る。つまり、ＭＭＸTMレジスタ・セット１０の１つの行のロードは、自動的にＶＭＸレジスタ・セット２２の１つの列のロードとなる。たとえば、第１のＭＭＸTMレジスタｍｍ０（１２）からのデータは、自動的にＶＭＸレジスタＶＭ０〜ＶＭ７の下位ユニットにストアされ、第２のＭＭＸTMレジスタｍｍ１（２０）からのデータは、自動的にＶＭＸレジスタの、次に低いユニットにストアされるといった形になる。
【００１５】
図２に戻るが、ＭＭＸTMレジスタに、図示のようにＰ０，０〜Ｐ７，７が割り当てられた８×８マトリクスがロードされると、ＶＭＸレジスタは、レジスタ更新ロジックによって自動的に、図５に示されるようにロードされる。マトリクスの行要素に対する演算を行う場合には、プログラムは、ＭＭＸTMレジスタｍｍ０（１２）〜ｍｍ７（１４）の１ないしは複数を単純に参照することができる。しかしながら、このマトリクスの列要素に対する演算を行う場合には、プログラムが、上記に代えてＶＭＸレジスタｖｍ０（２４）〜ｖｍ７（２６）を参照する。ＭＭＸTMレジスタがプロセッサ・ハードウエア内においてＶＭＸレジスタを用いてミラーリングされていることから、一貫性に関する問題をまったく伴わない。すべてのＭＭＸTM命令は、必要に応じて適切なレジスタに対する参照を使用することによって、いずれかのレジスタのセットを用いて処理することができる。プロセッサの命令セットに対する変更はまったく必要なく、プログラム内のオペランド参照を変更するだけでよい。
【００１６】
本発明の実施形態が現存するプロセッサ・アーキテクチャより優れている点の１つは、マトリクス演算に関して本発明がより優れた並列演算を提供することである。これは、複数のパック命令およびアンパック命令の実行を通じた列演算のための負担の大きい転置を回避することによって達成される。
【００１７】
本発明がどのように使用されるかについての例は、多くのビデオ処理スキームにおいて８ピクセル×８ピクセル・ブロックを処理するために使用される離散コサイン変換（ＤＣＴ）アルゴリズムに見ることができる。現在のところ８×８ＤＣＴを実行するために、まず１×８列の変換を実行し、８×８マトリクスの転置を行い、別の１×８列の変換を実行し、さらにその結果の転置を再度行ってＤＣＴ係数を求めている。現在Ｐｅｎｔｉｕｍ（登録商標）クラスのプロセッサ上で実行されているもっとも最適化されたＤＣＴは、約３００の処理サイクルを必要とする。このうち、約１００サイクルが８×８マトリクスに関する転置演算の実行に使用されている。つまり、本発明の実装によって、ＤＣＴ処理に関する約３０％の改善がもたらされる。同様に、逆ＤＣＴについてもパフォーマンス利得を達成することができる。ここではＤＣＴの例について論じたが、本発明の実施形態は、各種のイメージならびにビデオ圧縮アルゴリズムに使用されるマトリクス演算を含めたあらゆるマトリクス演算に有用となると考えられる。
【００１８】
以上、２次元（２−Ｄ）マトリクスに関連して本発明の説明を行ってきたが、そのコンセプトは３次元もしくはより多次元に適合させることができる。たとえば、レジスタの第３のセットをプロセッサの設計に含ませて、マトリクス・データの別の転置をストアさせてもよい。
【００１９】
図６は、本発明の１つの実施形態に従った、ＭＭＸTMレジスタ・セットおよび仮想ＭＭＸTMレジスタ・セットを伴うプロセッサを有するシステムを示したブロック図である。システム５０は、メモリ５４に結合されたプロセッサ５２を含むことができる。プロセッサ５２は、この分野において周知の各種のコンポーネントを含んでいるが、図６においては明瞭化のためにその多くが省略されている。命令メモリ５６は、１つないしは複数のＭＭＸTMレジスタ１０、もしくは１つないしは複数のＶＭＸレジスタ２２を参照することのある命令をストアしている。レジスタ更新ロジック２３は、ＭＭＸTMレジスタの変更時にＶＭＸレジスタ２２の自動的な更新を整合させる。マルチプレクサ（ＭＵＸ）５８は、算術論理演算ユニット（ＡＬＵ）６０に対する入力のために、ＭＭＸTMレジスタもしくはＶＭＸレジスタのうちのいずれか一方からのデータを選択する。このＡＬＵは、データ・メモリ５２のためのデータを生成する。
【００２０】
本発明は、より直感的な形態においてＭＭＸTMレジスタが操作されることを可能にする。ミラー・レジスタ・セットの追加によって、あらゆるブロック−ベースのアルゴリズムの実装を単純化することが可能になり、そのパフォーマンスを向上させることができる。本発明から恩典を受けると見られるアプリケーションのいくつかの例としては、ビデオ圧縮アルゴリズムに使用される離散コサイン変換（ＤＣＴ）、３次元（３−Ｄ）グラフィック・アルゴリズムにおけるマトリクス変換等が挙げられる。
【００２１】
以上のとおり、例示の実施形態を参照して本発明について説明してきたが、この説明は、限定の意味に解釈されることを意図したものではない。例示の実施形態に対する各種の修正をはじめ本発明のそのほかの実施形態は、本発明が属する分野の当業者にとっては明らかであり、それらは本発明の精神ならびに範囲に含まれるものと見なす。
【図１】
0005466211.tif 000002
【図２】
0005466211.tif 000003
【図３】
0005466211.tif 000004
【図４】
0005466211.tif 000005
【図５】
0005466211.tif 000006
【図６】
0005466211.tif 000007