(57)【特許請求の範囲】
【請求項１】
複数のパックドデータ要素をそれぞれ有する第１オペランド及び第２オペランドを示す命令を受信する段階と、
前記命令に応答して結果を格納する段階とを備え、
前記複数のパックドデータ要素の各々は、それぞれの位置に対応しており、
前記第１オペランドの前記複数のパックドデータ要素の第１サブセット及び前記第２オペランドの前記複数のパックドデータ要素の第１サブセットはそれぞれ、第１レーンに対応し、前記第１オペランドの前記複数のパックドデータ要素の第２サブセット及び前記第２オペランドの前記複数のパックドデータ要素の第２サブセットはそれぞれ、第２レーンに対応し、
前記結果は、
（１）前記第２オペランドの前記第１サブセットの対応する最下位データ要素でインターリーブされている前記第１オペランドの前記第１サブセットからの最下位データ要素のみを前記第１レーンに含み、及び、
（２）前記第２オペランドの前記第２サブセットの対応する最上位データ要素でインターリーブされている前記第１オペランドの前記第２サブセットからの最上位データ要素のみを前記第２レーンに含む方法。
【請求項２】
前記第１レーンは、下位レーンを含み、前記第２レーンは、上位レーンを含む請求項１に記載の方法。
【請求項３】
前記第１レーンは、上位レーンを含み、前記第２レーンは、下位レーンを含む請求項１に記載の方法。
【請求項４】
前記命令は、制御フィールドを含み、
前記制御フィールドの１以上のビットは、前記第１レーンに対応し、前記第１レーンに対してアンパック下位オペレーションが実行されることを示し、
前記制御フィールドの１以上のビットは、前記第２レーンに対応し、前記第２レーンに対してアンパック上位オペレーションが実行されることを示す請求項１から３のいずれか一項に記載の方法。
【請求項５】
前記第１レーン及び前記第２レーンはそれぞれ、１２８ビットを有する請求項１から４のいずれか一項に記載の方法。
【請求項６】
前記結果を格納する段階は、
前記第１オペランドの前記第１サブセットに前記最下位データ要素が現れているのと同じ順番で、前記第１オペランドの前記第１サブセットからの前記最下位データ要素を格納する段階を含む、前記第１サブセットからの前記複数のパックドデータ要素の半分のみを前記第１レーンに格納する段階と、
前記第２サブセットからの前記複数のパックドデータ要素の半分のみを前記第２レーンに格納する段階とを有する請求項１から５のいずれか一項に記載の方法。
【請求項７】
前記命令を、１以上の命令にデコードする段階、又は、前記命令を１以上の命令に翻訳する段階のうちの少なくとも１つの段階を更に備える請求項１から６のいずれか一項に記載の方法。
【請求項８】
命令を受けて、結果を格納する実行ユニットを備え、
前記命令は、第１オペランドを示す第１フィールド及び第２オペランドを示す第２フィールドを有し、
前記第１オペランド及び前記第２オペランドはそれぞれ、複数のパックドデータ要素を有し、
前記複数のパックドデータ要素の各々は、それぞれの位置に対応しており、
前記第１オペランドの前記複数のパックドデータ要素の第１サブセット及び前記第２オペランドの前記複数のパックドデータ要素の第１サブセットはそれぞれ、第１レーンに対応し、前記第１オペランドの前記複数のパックドデータ要素の第２サブセット及び前記第２オペランドの前記複数のパックドデータ要素の第２サブセットはそれぞれ、第２レーンに対応し、
格納される前記結果は、
（１）前記第２オペランドの前記第１サブセットの対応する最下位データ要素でインターリーブされている前記第１オペランドの前記第１サブセットからの最下位データ要素のみを前記第１レーンに含み、及び、
（２）前記第２オペランドの前記第２サブセットの対応する最上位データ要素でインターリーブされている前記第１オペランドの前記第２サブセットからの最上位データ要素のみを前記第２レーンに含む装置。
【請求項９】
前記第１レーンは、下位レーンを含み、前記第２レーンは、上位レーンを含む請求項８に記載の装置。
【請求項１０】
前記第１レーンは、上位レーンを含み、前記第２レーンは、下位レーンを含む請求項８に記載の装置。
【請求項１１】
前記命令は、制御フィールドを含み、
前記制御フィールドの１以上のビットは、前記第１レーンに対応し、前記第１オペランド及び前記第２オペランドの前記最下位データ要素がアンパックされることを示し、
前記制御フィールドの１以上のビットは、前記第２レーンに対応し、前記第１オペランド及び前記第２オペランドの前記最上位データ要素がアンパックされることを示す請求項８から１０のいずれか一項に記載の装置。
【請求項１２】
前記命令は、前記第１フィールド及び前記第２フィールドとは異なり、前記結果を格納する宛先を示す第３フィールドを有し、
前記結果を格納することは、前記結果を前記宛先に格納することを含む請求項８から１１のいずれか一項に記載の装置。
【請求項１３】
前記命令は、クロスレーンアンパック命令を含む請求項８から１２のいずれか一項に記載の装置。
【請求項１４】
前記第１レーン及び前記第２レーンは、それぞれ、１２８ビットを有する請求項８から１３のいずれか一項に記載の装置。
【請求項１５】
前記実行ユニットは、
（１）前記第１サブセットからの前記複数のパックドデータ要素の半分のみを前記第１レーンに含み、及び、
（２）前記第２サブセットからの前記複数のパックドデータ要素の半分のみを前記第２レーンに含む、結果を格納する請求項８から１４のいずれか一項に記載の装置。
【請求項１６】
前記実行ユニットは、前記第１オペランドの前記第１サブセットに前記最下位データ要素が現れているのと同じ順番で、前記第１オペランドの前記第１サブセットからの前記最下位データ要素を前記第１レーンに含む結果を格納する請求項８から１５のいずれか一項に記載の装置。
【請求項１７】
前記実行ユニットは、前記第１オペランドから抽出される少なくとも４つのデータ要素、及び前記第２オペランドから抽出される少なくとも４つのデータ要素を含む結果を格納する請求項８から１６のいずれか一項に記載の装置。
【請求項１８】
前記実行ユニットによって実行されると、前記実行ユニットに前記結果を格納させる１以上の命令に前記命令をデコードするデコーダ、及び、
前記実行ユニットによって実行されると、前記実行ユニットに前記結果を格納させる１以上の命令に前記命令を翻訳する命令トランスレータ、
のうちの少なくとも１つを更に備える請求項８から１７のいずれか一項に記載の装置。
【請求項１９】
前記実行ユニットは、回路を有し、
前記命令は、機械命令を含み、
前記実行ユニットは、前記機械命令による前記結果を格納する特定のロジックを含む請求項８から１８のいずれか一項に記載の装置。
【請求項２０】
ビット０から３１で表される第１データ要素、ビット３２から６３で表される第２データ要素、ビット６４から９５で表される第３データ要素、ビット９６から１２７で表される第４データ要素、ビット１２８から１５９で表される第５データ要素、ビット１６０から１９１で表される第６データ要素、ビット１９２から２２３で表される第７データ要素、及び、ビット２２４から２５５で表される第８データ要素を含む第１ソースオペランドを格納する第１の２５６ビットレジスタと、
ビット０から３１で表される第９データ要素、ビット３２から６３で表される第１０データ要素、ビット６４から９５で表される第１１データ要素、ビット９６から１２７で表される第１２データ要素、ビット１２８から１５９で表される第１３データ要素、ビット１６０から１９１で表される第１４データ要素、ビット１９２から２２３で表される第１５データ要素、及び、ビット２２４から２５５で表される第１６データ要素を含む第２ソースオペランドを格納する第２の２５６ビットレジスタと、
命令の結果として、結果を格納する実行ユニットとを備え、
格納されるべき結果は、
宛先レジスタのビット０から３１に格納される前記第１データ要素、前記宛先レジスタのビット３２から６３に格納される前記第９データ要素、前記宛先レジスタのビット６４から９５に格納される前記第２データ要素、前記宛先レジスタのビット９６から１２７に格納される前記第１０データ要素、前記宛先レジスタのビット１２８から１５９に格納される前記第７データ要素、前記宛先レジスタのビット１６０から１９１に格納される前記第１５データ要素、前記宛先レジスタのビット１９２から２２３に格納される前記第８データ要素、及び、前記宛先レジスタのビット２２４から２５５に格納される前記第１６データ要素を含む装置。
【請求項２１】
前記実行ユニットによって実行されると、前記実行ユニットに前記結果を格納させる１以上の命令に前記命令をデコードするデコーダ、及び、
前記実行ユニットによって実行されると、前記実行ユニットに前記結果を格納させる１以上の命令に前記命令を翻訳する命令トランスレータのうちの少なくとも１つを更に備える請求項２０に記載の装置。
【請求項２２】
ビット０から３１で表される第１データ要素、ビット３２から６３で表される第２データ要素、ビット６４から９５で表される第３データ要素、ビット９６から１２７で表される第４データ要素、ビット１２８から１５９で表される第５データ要素、ビット１６０から１９１で表される第６データ要素、ビット１９２から２２３で表される第７データ要素、及び、ビット２２４から２５５で表される第８データ要素を含む第１ソースオペランドを格納する第１の２５６ビットレジスタと、
ビット０から３１で表される第９データ要素、ビット３２から６３で表される第１０データ要素、ビット６４から９５で表される第１１データ要素、ビット９６から１２７で表される第１２データ要素、ビット１２８から１５９で表される第１３データ要素、ビット１６０から１９１で表される第１４データ要素、ビット１９２から２２３で表される第１５データ要素、及び、ビット２２４から２５５で表される第１６データ要素を含む第２ソースオペランドを格納する第２の２５６ビットレジスタと、
命令の結果として、結果を格納する実行ユニットとを備え、
格納されるべき結果は、
宛先レジスタのビット０から３１に格納される前記第３データ要素、前記宛先レジスタのビット３２から６３に格納される前記第１１データ要素、前記宛先レジスタのビット６４から９５に格納される前記第４データ要素、前記宛先レジスタのビット９６から１２７に格納される前記第１２データ要素、前記宛先レジスタのビット１２８から１５９に格納される前記第５データ要素、前記宛先レジスタのビット１６０から１９１に格納される前記第１３データ要素、前記宛先レジスタのビット１９２から２２３に格納される前記第６データ要素、及び、前記宛先レジスタのビット２２４から２５５に格納される前記第１４データ要素を含む装置。
【請求項２３】
前記実行ユニットによって実行されると、前記実行ユニットに前記結果を格納させる１以上の命令に前記命令をデコードするデコーダ、及び、
前記実行ユニットによって実行されると、前記実行ユニットに前記結果を格納させる１以上の命令に前記命令を変換する命令トランスレータのうちの少なくとも１つを更に備える請求項２２に記載の装置。
【請求項２４】
インターコネクトと、
前記インターコネクトと結合され、命令を受信するべく、命令デコーダ、命令トランスレータ及び命令エミュレータのうちの少なくとも１つを有するプロセッサと、
前記命令デコーダ、命令トランスレータ及び命令エミュレータのうちの少なくとも１つの前記命令の受信に応答して、結果を格納する回路と、
前記インターコネクトと結合されるダイナミックランダムアクセスメモリ（ＤＲＡＭ）とを備え、
前記命令デコーダ、命令トランスレータ及び命令エミュレータのうちの少なくとも１つは、ハードウェア、ソフトウェア、ファームウェア、又は、これらの組み合わせで実装され、
前記命令は、第１オペランドを示す第１フィールド及び第２オペランドを示す第２フィールドを有し、
前記第１オペランド及び前記第２オペランドはそれぞれ、複数のパックドデータ要素を有し、
前記複数のパックドデータ要素はそれぞれの位置に対応しており、
前記第１オペランドの前記複数のパックドデータ要素の第１サブセット及び前記第２オペランドの前記複数のパックドデータ要素の第１サブセットはそれぞれ、第１レーンに対応し、前記第１オペランドの前記複数のパックドデータ要素の第２サブセット及び前記第２オペランドの前記複数のパックドデータ要素の第２サブセットはそれぞれ、第２レーンに対応し、
前記結果は、
（１）前記第２オペランドの前記第１サブセットの対応する最下位データ要素でインターリーブされている前記第１オペランドの前記第１サブセットからの最下位データ要素のみを前記第１レーンに含み、及び、
（２）前記第２オペランドの前記第２サブセットの対応する最上位データ要素でインターリーブされている前記第１オペランドの前記第２サブセットからの最上位データ要素のみを前記第２レーンに含むシステム。
【請求項２５】
結果を格納する前記回路は、
（１）前記第１サブセットからの前記複数のパックドデータ要素の半分のみを前記第１レーンに含み、及び、
（２）前記第２サブセットからの前記複数のパックドデータ要素の半分のみを前記第２レーンに含む、結果を格納する請求項２４に記載のシステム。
【請求項２６】
位置に対応する複数のパックドデータ要素を含む第１オペランドを示す第１フィールド、及び位置に対応する複数のパックドデータ要素を含む第２オペランドを示す第２フィールドを有する命令を機械に供給するプログラムであって、
前記機械に、
（１）前記第１オペランドの前記複数のパックドデータ要素の第１サブセット及び前記第２オペランドの前記複数のパックドデータ要素の第１サブセットの各々が対応する第１レーンに、前記第２オペランドの前記第１サブセットの対応する最下位データ要素でインターリーブされている前記第１オペランドの前記第１サブセットからの最下位データ要素のみが含まれる結果、及び、
（２）前記第１オペランドの前記複数のパックドデータ要素の第２サブセット及び前記第２オペランドの前記複数のパックドデータ要素の第２サブセットの各々が対応する第２レーンに、前記第２オペランドの前記第２サブセットの対応する最上位データ要素でインターリーブされている前記第１オペランドの前記第２サブセットからの最上位データ要素のみが含まれる結果
を格納させるためのプログラム。
【請求項２７】
前記命令は、機械命令を含み、
前記機械は、前記機械命令による前記結果を格納する特定のロジックを含む請求項２６に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態はプロセッサ、プロセッサによって実行される方法、プロセッサを組み込むシステム、又は、プロセッサによって処理される命令に関する。より詳細には、実施形態は、複数のレーンにパックされたデータをアンパックするプロセッサ、方法、システム又は命令に関する。
【背景技術】
【０００２】
コンピュータ及びその他の処理システムの性能を向上させると、多くの場合、処理されるデータの量が増加する及び／又はユーザーの満足度を向上させることにつながる。コンピュータ及びその他の処理システムは、大量のデータを処理できるようになり、データを効率よく処理する技術がより重要となってきている。
【０００３】
１つの命令で複数のデータを扱うＳＩＭＤアーキテクチャは、データの処理を効率化する１つの方法である。ＳＩＭＤアーキテクチャでは、１つの命令でデータ要素を１つのみ処理するのではなく、１つの命令で複数のデータ要素を同時に又は平行して処理を行ってもよい。典型的には、ＳＩＭＤアーキテクチャでは、複数のデータ要素が、１つのレジスタ又はメモリロケーションにパックされていてもよい。命令に応答したハードウェア平行実行により、複数のオペレーションを同時に又は平行に実行してもよい。このようなＳＩＭＤアーキテクチャは、システム性能を大幅に改善する傾向がある。
【０００４】
ＳＩＭＤ命令の周知の１種として、アンパック命令がある。周知のプロセッサは、様々な種類の異なるアンパック命令を有する。例えば、インテル社製の製品のうち、インテルＣｏｒｅ ２ Ｄｕｏ（登録商標）プロセッサは、インテル・アーキテクチャ・ソフトウェア・開発者用マニュアル  Ｖｏｌ．２、命令セットレファレンス、１９９９（注文番号２４３１９１）に詳細に記載されるように、様々なアンパック命令を有する。
【０００５】
しかしながら、ある条件下及びアプリケーションでは、更なるアンパック命令及びオペレーションが有用であると考えられる。
【０００６】
本発明の実施形態は、以下の詳細な説明及び本発明の実施形態を例示した添付の図面を参照することにより、理解されるであろう。
【図面の簡単な説明】
【０００７】
【図１】プロセッサの一実施形態を示した図である。
【図２】命令を受信し、命令によって規定された結果を格納する方法の一実施形態を示したブロックフローチャートである。
【図３】インテルＡｄｖａｎｃｅｄ Ｖｅｃｔｏｒ Ｅｘｔｅｎｓｉｏｎｓ（インテルＡＶＸ：アドバンストベクトル拡張）命令の多くによって利用されるＹＭＭレジスタの一実施形態を示した図である。
【図４】本発明の１以上の実施形態に好適なパックドデータの形式の代表例を示した図である。
【図５】クロスレーンアンパック方法の一実施形態例のブロブロックフローチャートである。
【図６】下位レーンに対するアンパック下位オペレーション及び上位レーンに対するアンパック上位オペレーションを規定する第１のクロスレーンアンパック命令に従って、２つのレーンを有する２５６ビットオペランドにおける３２ビットのダブルワードパックドデータ要素をアンパッキングを示した図である。
【図７】下位レーンに対するアンパック上位オペレーション及び上位レーンに対するアンパック下位オペレーションを規定する第２のクロスレーンアンパック命令に従って、２つのレーンを有する２５６ビットオペランドにおける３２ビットダブルワードパックドデータ要素のアンパッキングを示した図である。
【図８】下位レーンに対するアンパック上位オペレーション及び上位レーンに対するアンパック下位オペレーションを規定する第３のクロスレーンアンパック命令に従って、２つのレーンを有する２５６ビットオペランドにおける１６ビットワードパックドデータ要素のアンパッキングを示した図である。
【図９】下位レーンに対するアンパック上位オペレーション及び上位レーンに対するアンパック下位オペレーションを規定する第４のクロスレーンアンパック命令に従って、２つのレーンを有する２５６ビットオペランドにおける１６ビットワードパックドデータ要素のアンパッキングを示した図である。
【図１０】各レーンに対して実行されるアンパックオペレーションの種類を規定する制御フィールドを有するクロスレーンアンパック命令の一実施形態を示した簡略化されたブロック図である。
【図１１】本発明の一以上の実施形態を実装するのに好適なコンピュータシステムの一実施例を示したブロック図である。
【発明を実施するための形態】
【０００８】
以下の記載では、プロセッサの種類、データの種類、データの形式、レジスタの種類、レジスタの配置、システム構成等の数多くの詳細事項が記載される。しかしながら、本発明の実施形態は、これらの詳細事項がなくとも実施可能であることは明らかである。また、周知の回路、構造及び技術は、明細書の理解を曖昧にしない目的から、詳細に示していない。
【０００９】
図１は、プロセッサ１００の一実施形態を示した図である。プロセッサは、本明細書に記載されるようなクロスレーンアンパック命令１０２を実行する機能を有する又は実行可能である。
【００１０】
プロセッサは、命令を実行可能な様々な種類のプロセッサであってもよい。例えば、プロセッサは、米国、カリフォルニアのサンタクララに本社を置くインテルコーポレーションから入手可能な、ＰＥＮＴＩＵＭ（登録商標）４、ＰＥＮＴＩＵＭ（登録商標）Ｄｕａｌ−Ｃｏｒｅ、Ｃｏｒｅ．２ Ｄｕｏ ａｎｄ Ｑｕａｄ、Ｘｅｏｎ（登録商標）、Ｉｔａｎｉｕｍ（登録商標）、ＸＳｃａｌｅ（登録商標）又はＳｔｒｏｎｇＡＲＭ（登録商標）プロセッサのような、汎用プロセッサであってもよい。また、プロセッサは、他社製のものであってもよい。プロセッサは、ｒｅｄｕｃｅｄ  ｉｎｓｔｒｕｃｔｉｏｎ  ｓｅｔ  ｃｏｍｐｕｔｉｎｇ（縮小命令セットコンピューティング：ＲＩＳＣ）プロセッサ、ｃｏｍｐｌｅｘ  ｉｎｓｔｒｕｃｔｉｏｎ  ｓｅｔ  ｃｏｍｐｕｔｉｎｇ（複雑命令セットコンピューティング：ＣＩＳＣ)プロセッサ、ｖｅｒｙ  ｌｏｎｇ  ｉｎｓｔｒｕｃｔｉｏｎ  ｗｏｒｄ（超長命令語：ＶＬＩＷ）プロセッサ、又は、ハイブリッド又は代替プロセッサの類であってもよい。別のオプションとして、プロセッサは、例えば、ネットワークプロセッサ又は通信プロセッサ、コプロセッサ、組み込みプロセッサ、圧縮エンジン、グラフィックスプロセッサ等の特殊用途プロセッサであってもよい。プロセッサは、１以上のチップに実装されてもよい。
【００１１】
使用時には、プロセッサは、クロスレーンアンパック命令１０２を受信することができる。アンパック命令は、以下に記載するように、プロセッサにアンパックオペレーションを実行させることができる制御信号を表していてもよい。アンパック命令は、例えば、ソフトウェアシーケンス又はアルゴリズムによって提供されてもよい。
【００１２】
図示されるプロセッサの実施形態は、命令デコーダ１０４を含む。デコーダは、クロスレーンアンパック命令を受信してもよい。デコーダは、アンパック命令をデコードし、出力として、１以上のマイクロオペレーション、マイクロコードエントリポイント、マイクロ命令、その他の命令、又は、元のアンパック命令からデコードされる信号又は元のアンパック命令を反映する信号、又は、元のアンパック命令から導出される信号を、生成してもよい。デコーダは、様々に異なるメカニズムを使用して実装されてもよい。好適なメカニズムの例としては、これに限定するわけではないが、ルックアップテーブル、ハードウェア実装、プログラム可能ロジックアレイ（ＰＬＡ）、マイクロコード・ランダムアクセスメモリ（ＲＯＭ）等が含まれる。
【００１３】
一例では、デコーダは、命令トランスレータ、命令エミュレータ、又は、その他の命令変換器と置き換えられてもよい。命令変換器は、ソース命令セットからの命令を、目的の命令セットへと変換する。例えば、命令変換器は、本明細書に記載するように、アンパック命令を、翻訳、変形、エミュレートする又はその他の変換を行うことにより、実行ユニットによって処理される１以上の別の命令へと変換する。命令変換器は、ソフトウェア、ハードウェア、ファームウェア又はこれらの組み合わせに実装されてもよい。命令変換器は、プロセッサ上にあってもよいし、プロセッサの外に存在してもよく、又は、プロセッサの一部であってもよいし、プロセッサの一部でなくてもよい。したがって、デコーダは、プロセッサに必須の構成要素ではない。
【００１４】
プロセッサは、少なくとも１つの実行ユニット１０６を含む。実行ユニットは、デコーダ、命令トランスレータ又は上記したようなその他の命令変換器と結合される又は通信可能とされる。実行ユニットは、アンパック命令を実行可能な回路又はアンパック命令を実行する実行ロジックを含む。例えば、実行ユニットは、１以上のマイクロオペレーション、マイクロ命令又はその他の命令を実行してもよく、若しくは、元のアンパック命令からデコード、変換、エミュレート又は反映、又は、導出される制御信号を実行してもよい。１以上の実施形態において、実行ユニットは、機械命令又はミクロオペレーション又はこれら機械命令から導出される命令を処理する専用ロジックを有してもよい。すなわち、実行ユニットは、クロスレーンアンパック命令に応答して、又は、命令の結果として、オペレーションを実行してもよい。１以上の実施形態では、実行ユニット及び／又はプロセッサは、例えば、ＰＥＮＴＩＵＭ（登録商標）４、ＰＥＮＴＩＵＭ（登録商標）Ｄｕａｌ‐Ｃｏｒｅ、Ｃｏｒｅ（登録商標）２ Ｄｕｏ ａｎｄ Ｑｕａｄ、Ｘｅｏｎ（登録商標）、Ｉｔａｎｉｕｍ（登録商標）、ＸＳｃａｌｅ（登録商標）又はＳｔｒｏｎｇＡＲＭ（登録商標）マイクロプロセッサで使用されているインテルアーキテクチャ命令の大部分又は全てに応答して又はその結果として、オペレーションを実行してもよい。
【００１５】
ある実施形態では、実行ユニットが１つだけ設けられてもよく、又は、特定のオペレーションを実行できる実行ユニットが１つだけ設けられてもよい。その他の実施形態では、特定の機能又は機能のセットに専用の複数の実行ユニットを含んでもよい。加えて、プロセッサの１以上実施形態は、複数のコアを有してもよく、各コアは、少なくとも１つの実行ユニットを有してもよい。
【００１６】
プロセッサは、デコーダ及び実行ユニットと結合されたレジスタファイル１０８を含む。本明細書で使用される"レジスタ"という言葉は、オペランドを特定するべくマクロ命令によって通常使用されるオンボードのプロセッサ格納ロケーションを指す。一般的に、レジスタは、プロセッサの外側から、又は、プログラマの視点から、可視状態となっている。レジスタは、特定の種類の周知の回路に限定されない。以下に説明するようにデータを格納及び供給可能である限り、あらゆる種類のレジスタを好適に使用することができる。好適なレジスタの例としては、これに限定されないが、専用物理レジスタ、レジスタリネームを使用して動的に割り当てられる物理レジスタ、専用物理レジスタと動的に割り当てられる物理レジスタとの組み合わせが含まれる。
【００１７】
レジスタファイルは、様々な種類のレジスタを有してもよい。好適な種類のレジスタの例には、これに限定されないが、整数レジスタ、浮動小数点レジスタ、ベクトルレジスタ、ステータスレジスタ、命令ポインタレジスタ等が含まれる。単純化のため、１つのレジスタセット１０９が図示されている。レジスタセットは、複数のレジスタ又はレジスタのグループを含む。例えば、レジスタセットは、レジスタＲ０からレジスタＲＮを含み、ここで、Ｎは整数である。一実施形態では、Ｎは１５である。レジスタは、リネームされてもよいし、されなくてもよい。
【００１８】
レジスタセットは、パックされたデータ（パックドデータ）を格納するよう構成されてもよい。パックドデータは、共にパックされた複数のデータ要素を含む。データ要素とは、レジスタ又はその他の格納ロケーションに、多くの場合、同じビット長を有する他のデータ要素と共に格納されるデータの個々のピースを意味する。レジスタセットは、個別のパックドデータ要素の１つ又は様々なデータ要素へのアクセスを許可してもよい。別の時には、レジスタセットにおける特定のレジスタが、異なるサイズの複数のパックドデータ要素を保持してもよく、それぞれ異なるサイズの複数のパックドデータ要素の全てが、個別にアクセス可能であってもよいし、アクセス可能でなくてもよい。
【００１９】
レジスタセットは、複数のレーン（ｌａｎｅ）を有する。図示の実施形態では、レジスタをそれぞれ含むレジスタセットは、第１下位レーン１１０及び第２上位レーン１１１を有する。下側レーンは、下位ビットを有し、上位レーンは上位ビットを有する。レーンはそれぞれ、複数のビットを有する。例えば、レジスタはそれぞれ、２５６ビットを有してもよく、レーンがそれぞれ、１２８ビットを有してもよい。別の実施形態では、プロセッサ及び／又はレジスタは、３つ又は４つ以上のレーンを有してもよく、レジスタ及びレーンは、異なるサイズを有してもよい。
【００２０】
図示されたプロセッサの実施形態はまた、デコーダと結合されたキャッシュ１１２を含む。アーキテクチャに応じて、プロセッサは、例えば、レベル１（Ｌ１）内部キャッシュ又は複数レベルの内部キャッシュのような、１つの内部キャッシュを有してもよい。ある実施形態では、システムは、内部キャッシュ及びプロセッサ外部の外部キャッシュとの組み合わせを含んでもよい。これに替えて、キャッシュの全てが、プロセッサの外部に設けられてもよい。
【００２１】
説明を曖昧にするのを防ぐために、単純化された形式でプロセッサが図示されている。当業者であれば、プロセッサは、従来の構成要素、回路又はロジックを含んでもよいことは理解できる。例えば、プロセッサは、フロントエンドロジック、レジスタリネームロジック、スケジューリングロジック、バックエンドロジック、リタイアメントロジック、リオーダバッファ等を含んでもよい。また、これは、プロセッサの実施形態の単なる一例に過ぎない。その他の汎用プロセッサ、特殊目的プロセッサ、ネットワーク又は通信プロセッサ、コプロセッサ、組み込みプロセッサ、圧縮エンジン、グラフィックするプロセッサ等も、アンパック命令及び以下に説明するオペレーションの恩恵を受けることができる。
【００２２】
図２は、命令を受信し、命令によって規定された結果を格納する方法２１４の一実施形態を示したブロックフローチャートである。１以上の実施形態において、方法は、本明細書に説明されるアンパック命令の結果として、プロセッサによって方法が実行される。
【００２３】
命令は、ブロック２１５において受信されてもよい。命令は、プロセッサの命令セットにおける機械命令を表していてもよい。一例として、プロセッサ、デコーダ又はプロセッサのその他の部分において、命令が受信されてもよい。典型的には、命令は、例えば、キャッシュ１１２又はバス又はその他の相互接続から受信されてもよい。
【００２４】
ブロック２１６において、命令がデコードされてもよい。命令は、１以上のマイクロオペレーション、マイクロコードエントリポイント、マイクロ命令、その他の命令、若しくは、元のアンパック命令からデコード、反映又は導出される制御信号にデコードされてもよい。これに替えて、命令は、上記したように、翻訳、エミュレート又は変換されてもよい。
【００２５】
ブロック２１７において、デコーダ又はプロセッサの別の部分は、命令によって示される１以上のオペランドにアクセスしてもよい及び／又はオペランドを受信してもよい。オペランドは、レジスタ（例えば、レジスタセット１０９）、メモリロケーション、又は、これらの組み合わせから、アクセス及び／又は受信されてもよい。命令は、レジスタのアドレス、又は、オペランドのメモリロケーションを特定してもよい。例えば、命令は、第１ソースオペランド（ＳＲＣ１）のアドレス及び第２ソースオペランド（ＳＲＣ２）のアドレスを特定してもよい。
【００２６】
ブロック２１８において、実行ユニットは、命令によって規定されたオペレーションでイネーブルされる。実行ユニットは、オペランドのデータに対して特定のオペレーションを実行して、結果オペランドを生成してもよい。
【００２７】
ブロック２１９において、結果オペランドが、命令によって規定されるレジスタ又はメモリロケーションの宛先アドレスに格納されてもよい。１以上の実施形態において、ＳＲＣ１及びＳＲＣ２に加えて、命令は、結果オペランドに対するアドレス（ＤＥＳＴ）を規定してもよい。これに替えて、１以上の実施形態において、ＳＲＣ１又はＳＲＣ２の何れかが、ＤＥＳＴとして使用されてもよい。例えば、ＳＲＣ１又はＳＲＣ２におけるデータが、結果オペランドで書き換えられてもよい。この場合、命令は、ＳＲＣ１及びＳＲＣ２のうちの一方として、結果オペランドの宛先を特定するものと解釈され、命令は、明示的に別のＤＥＳＴを規定しなくてもよい。
【００２８】
インテルコーポレーションは、最近、インテル（登録商標）アドバンスト・ベクトル・拡張（Ｉｎｔｅｌ ＡＶＸ）命令を導入した。Ｉｎｔｅｌ ＡＶＸは、インテルアーキテクチャに対して新たな２５６ビットのＳＩＭＤ浮動小数点ベクトル拡張を提供する。これにより、Ｉｎｔｅｌ（登録商標）ＳＳＥ４における１２８ビットＸＭＭレジスタの最大ＳＩＭＤベクトル長を、２５６ビットにまで広げる又は倍増させることができる。Ｉｎｔｅｌ ＡＶＸは、アセンブリにおいて、ＹＭＭ０−ＹＭＭ１５と称される２５６ビットのレジスタを導入し、Ｉｎｔｅｌ ＡＶＸ命令の多くは、このレジスタ上で動作する。必要であれば、Ｉｎｔｅｌ ＡＶＸの詳細については、本願の出願時にはインテルコーポレーションのウェブサイトhttp://software.intel.comlen-us/avxl.において入手可能となる、２００９年１月発行のインテル（登録商標）Ａｄｖａｎｃｅｄ Ｖｅｃｔｏｒ Ｅｘｔｅｎｓｉｏｎｓ Ｐｒｏｇｒａｍｍｉｎｇ Ｒｅｆｅｒｅｎｃｅ（参照番号＃３１９４３３‐００５）を参照されたい。
【００２９】
図３は、Ｉｎｔｅｌ ＡＶＸ命令の多くによって利用されるＹＭＭレジスタ３２０の一実施形態を示した図である。ＹＭＭレジスタは、レジスタＹＭＭ０からレジスタＹＭＭ１５を含む。ＹＭＭレジスタはそれぞれ、２５６ビットを有する。図示するように、１以上の実施形態において、ＹＭＭレジスタの下位１２８ビットは、必ずしも必須ではないが、対応する１２８ビットＸＭＭレジスタにエイリアスされる。レジスタＹＭＭ０−ＹＭＭ１５は、２つの１２８ビットレーンから構築される。下位１２８ビットレーン３１０（ビット０〜１２７）は、ＸＭＭレジスタに対応する。上位１２８ビットレーン３１１（ビット１２８〜２５５）は、ＹＭＭレジスタに対応する。
【００３０】
図４は、本発明の１以上の実施形態に適したパックドデータのフォーマットの代表例が示されている。パックドワード４３０及びパックドダブルワード４３２の、２つのパックドデータフォーマットの例が示されている。特定の概念を良好に例示するべく、これらのパックドデータフォーマットは、例えば、ＹＭＭレジスタのような２５６ビットの格納ロケーションについて示されているが、本発明の実施形態の範囲はこれに限定されない。
【００３１】
パックドワードフォーマット４３０は、２５６ビット長であり、１６個のデータ要素を含む。各データ要素は、１６ビット長又は１ワード長である。このような１６ビットデータ要素は、"ワード"と称される。図示の例では、データ要素は、低位から高位へと、"ワード０"から"ワード１５"と名づけられている。ワード０からワード７は、下位レーン（右側のビット０から１２７）に対応している。ワード８からワード１５は、上位レーン（左側のビット１２８から２５５）に対応している。
【００３２】
パックドダブルワード（ｄワード）フォーマット４３２は、２５６ビット長を有し、８つのデータ要素を含む。各データ要素は、３２ビット長又は１ダブルワード（ｄワード）長である。このような３２ビットデータ要素は、"ｄワード"と称される。３２ビットデータ要素は、一般的に、単精度浮動小数点計算に使用される。図示の例では、データ要素は、低位から高位へと、"ｄワード０"から"ｄワード１５"と名づけられている。ｄワード０からワード３は、下位レーンに対応している。ワード４からワード７は、上位レーンに対応している。
【００３３】
これらは、単なる一例に過ぎない。その他のパックドデータフォーマットを好適に使用してもよい。例えば、各データ要素が８ビットであるパックド・バイト・フォーマット、各データ要素が６４ビットであるパックド・クワッドワード・フォーマットも好適である。６４ビットデータ要素は、一般的に、倍精度浮動小数点計算に使用される。６４ビットを超えるサイズのデータ要素を使用してもよい。また、２５６ビットを超える大きさ又は２５６ビットよりも小さいレジスタを使用してもよい。一般的に、パックドデータフォーマットは、複数のデータ要素を含む。多くの場合、データ要素は、同じサイズである。この場合、データ要素のサイズで分割されるレジスタのサイズは、データ要素の数と等しくなる。
【００３４】
インテルＡＶＸでは、複数のマルチビットレーンを有するレジスタを利用している。また、特定のインテルＡＶＸ命令は、"インレーン（ｉｎ−ｌａｎｅ）"命令として知られている。"インレーン"命令は、上位及び下位の１２８ビットの両方、又は、１以上のＹＭＭレジスタの複数レーンにおいて、同じオペレーションの実行を引き起こす。例えば、インテルＡＶＸのＵＮＰＣＫＬＰＳ（ＶＥＸ．２５６エンコードバージョン）命令は、上位及び下位の１２８ビットの両方、又は、ＹＭＭレジスタの複数レーンに対して、同じアンパック下位オペレーションを実行させる。現在のところ、異なるアンパックオペレーションが異なる複数のレーンで実行される（例えば、下位アンパック及び上位アンパックを行う）"クロスレーン"アンパック命令は存在していない。したがって、アプリケーションによっては又はある条件下では、抽出、型変換（ｃａｓｔ）等の追加的なオペレーションが必要となり、"インレーン"アンパック命令の結果を並び替える必要が生じる場合があり、更なる計算及び／又は複雑なプログラミングを要している。これに替えて、以前のＳＳＥアンパック命令を使用すると、新しい２５６ビットＹＭＭレジスタを最大限活用することができない。したがって、ある条件又はアプリケーションでは、追加的なアンパック命令及びオペレーションが、有用な場合もある。例えば、アンパック命令は、Ｓｔｒｕｃｔｕｒｅ  ｏｆ  Ａｒｒａｙｓ（ＳｏＡ）対Ａｒｒａｙ  ｏｆ  Ｓｔｒｕｃｔｕｒｅｓ（ＡｏＳ）アルゴリズムに対しては、有益である。
【００３５】
本発明の実施形態は、少なくとも１つのレーンで実行されるアンパックオペレーションとは異なる種類のアンパックオペレーションが少なくとも１つのその他のレーンで実行される複数のレーンにおけるパックドデータをアンパックするプロセッサによって実行又は処理される命令、又は、プロセッサ、プロセッサによって実行される方法、プロセッサを組み込むシステムに関する。本発明の実施形態は、少なくとも１つのレーンに対するアンパック下位オペレーション及び少なくとも１つのその他のレーンに対するアンパック上位オペレーションを規定する"クロスレーン"アンパック命令に関する、又は、"クロスレーン"アンパック命令を処理するプロセッサ、クロスレーンアンパック命令を処理する結果としてプロセッサによって実行される方法、又は、このようなプロセッサを組み込むコンピュータシステム又はその他のシステムに関する。
【００３６】
図５は、クロスレーンアンパック方法５３４の一実施形態を示すフローチャートである。
【００３７】
ブロック５３５において、クロスレーンアンパック命令が受信されてもよい。クロスレーンアンパック命令は、少なくとも１つのレーンに対するアンパック下位オペレーション及び少なくとも１つのその他のレーンに対するアンパック上位オペレーションを規定してもよい。
【００３８】
ブロック５３６において、クロスレーンアンパック命令がデコードされてもよい。これに替えて、命令は、翻訳、エミュレート又はその他の変換が行われてもよい。
【００３９】
ブロック５３７において、クロスレーンアンパック命令によって示される又は規定される第１及び第２ソースオペランドが、アクセスされてもよい。オペランドは、レジスタ又はメモリロケーションからアクセスされてもよい。クロスレーンアンパック命令は、オペランドを示す第１及び第２フィールドを有してもよい。
【００４０】
ブロック５３８において、実行ユニットは、少なくとも１つのレーンに対するアンパック下位オペレーション及び少なくとも１つのその他のレーンに対するアンパック上位オペレーションでイネーブルされてもよい。
【００４１】
ブロック５３９において、クロスレーンアンパック命令によって規定される結果が、レジスタ又はメモリロケーションに格納されてもよい。結果は、少なくとも１つのレーンに対して実行されるアンパック下位オペレーション及び少なくとも１つのその他のレーンに対して実行されるアンパック上位オペレーションを表していていもよい。
【００４２】
図６から図９には、少なくとも１つのレーンに対して実行されるアンパック下位オペレーション及び少なくとも１つのその他のレーンに対して実行されるアンパック上位オペレーションを規定する１つのクロスレーンアンパック命令に従って、複数のレーンを有する第１及び第２オペランドからのパックドデータをアンパッキングする様々な実施形態例が示されている。
【００４３】
図６には、下位レーン（ビット０から１２７）に対するアンパック下位オペレーション及び上位レーン（ビット１２８から２５５）に対するアンパック上位オペレーションを規定する１つの第１クロスレーンアンパック命令に従った、２つのレーンを有する２５６ビットオペランドにおける３２ビットダブルワード（ｄワード）パックドデータ要素のアンパッキングが示されている。
【００４４】
第１ソースオペランド６５０は、２５６ビットを有し、８つのパックド３２ビット又はダブルワードデータ要素を格納する。第１ソースオペランドは、レジスタ（例えば、ＹＭＭレジスタ）、メモリ又は別の格納ロケーションに格納されてもよい。これらデータ要素には、下位から上位へと順番に、Ｘ０からＸ７と名前がつけられている。より詳細には、第１ソースオペランドは、ビット０から３１で表される第１データ要素（Ｘ０）、ビット３２から６３で表される第２データ要素（Ｘ１）、ビット６４から９５で表される第３データ要素（Ｘ２）、ビット９６から１２７で表される第４データ要素（Ｘ３）、ビット１２８から１５９で表される第５データ要素（Ｘ４）、ビット１６０から１９１で表される第６データ要素（Ｘ５）、ビット１９２から２２３で表される第７データ要素（Ｘ６）、及び、ビット２２４から２５５で表される第８データ要素（Ｘ７）を含む。データ要素Ｘ０からＸ３は、下位レーンに対応するデータ要素の下位レーンサブセットを表す。データ要素Ｘ４からＸ７は、上位レーンに対応するデータ要素の上位レーンサブセットを表す。
【００４５】
同様に、第２ソースオペランド６５２は、２５６ビットを有し、８つのパックド３２ビット又はダブルワードデータ要素を格納する。第１ソースオペランドは、レジスタ（例えば、ＹＭＭレジスタ）、メモリ又は別の格納ロケーションに格納されてもよい。これらデータ要素には、下位から上位へと順番に、Ｙ０からＹ７と名前がつけられている。より詳細には、第２ソースオペランドは、ビット０から３１で表される第９データ要素（Ｙ０）、ビット３２から６３で表される第１０データ要素（Ｙ１）、ビット６４から９５で表される第１１データ要素（Ｙ２）、ビット９６から１２７で表される第１２データ要素（Ｙ３）、ビット１２８から１５９で表される第１３データ要素（Ｙ４）、ビット１６０から１９１で表される第１４データ要素（Ｙ５）、ビット１９２から２２３で表される第１５データ要素（Ｙ６）、及び、ビット２２４から２５５で表される第１６データ要素（Ｙ７）を含む。データ要素Ｙ０からＹ３は、下位レーンに対応するデータ要素の下位レーンサブセットを表す。データ要素Ｙ４からＹ７は、上位レーンに対応するデータ要素の上位レーンサブセットを表す。
【００４６】
結果オペランド６５４は、結果を格納する。結果は、第１クロスレーンアンパック命令によって規定されるアンパックオペレーションの実行に基づいて生成される。結果は、実行ユニット、機能ユニット又はプロセッサのその他の部分によって、クロスレーンアンパック命令の結果として（実行ユニットが、１以上のマイクロ命令又は命令からデコード、翻訳又は導出されたその他の命令を実行する結果として）、格納されてもよい。
【００４７】
結果オペランドは、２５６ビットを有し、８つのパックド３２ビット又はダブルワードデータ要素を格納する。結果オペランドにおける８つのデータ要素は、第２クロスレーンアンパック命令によって規定されるアンパックオペレーションに従って、第１及び第２ソースオペランドから選択されるアンパックされインターリーブされる（交互に配置される）データ要素の半分又は全部より少ない数のデータ要素、すなわちサブセットを表す。この特定の第１クロスレーンアンパック命令は、下位レーン（ビット０から１２７）に対するアンパック下位オペレーション、及び、上位レーン（ビット１２８から２５５）に対するアンパック上位オペレーションを規定する。下位レーンに対するアンパック下位オペレーションは、第１及び第２ソースオペランドの下位レーンにおける、下位３２ビットのみ又は下位クワッドワード（６４ビット）からのダブルワードデータ要素のみのインターリーブされた（交互に配置された）アンパックを含んでもよい。上位レーンに対するアンパック上位オペレーションは、第１及び第２ソースオペランドの上位レーンにおける、上位３２ビットのみ又は上位クワッドワード（６４ビット）からのダブルワードデータ要素のインターリーブされたアンパックを含んでもよい。
【００４８】
図に示すように、格納される結果は、（１）第２オペランドの下位レーンサブセットからの対応する最下位データ要素でインターリーブされた、第１オペランドの下位レーンサブセットからの最下位データ要素のみを下位レーンに含み、（２）第２オペランドの上位レーンサブセットからの対応する最上位データ要素でインターリーブされた、第１オペランドの上位レーンサブセットからの最上位データ要素のみを上位レーンに含んでもよい。
【００４９】
より詳細には、結果オペランドは、宛先レジスタのビット０から３１に格納された第１データ要素（Ｘ０）、宛先レジスタのビット３２から６３に格納された第９データ要素（Ｙ０）、宛先レジスタのビット６４から９５に格納された第２データ要素（Ｘ１）、宛先レジスタのビット９６から１２７に格納された第１０データ要素（Ｙ１）、宛先レジスタのビット１２８から１５９に格納された第７データ要素（Ｘ６）、宛先レジスタのビット１６０から１９１に格納された第１５データ要素（Ｙ６）、宛先レジスタのビット１９２から２２３に格納された第８データ要素（Ｘ７）、及び、宛先レジスタのビット２２４から２５５に格納された第１６データ要素（Ｙ７）を含んでもよい。
【００５０】
結果オペランドは、第１及び第２オペランドからのデータ要素のサブセット（特に、半分）のみを有する。結果オペランドの下位レーンは、第１及び第２オペランドの下位レーンからのデータ要素のサブセット（特に、半分）のみを有する。同様に、結果オペランドの上位レーンは、第１及び第２オペランドの上位レーンからのデータ要素のサブセット（特に、半分）のみを有する。
【００５１】
また、下位データ要素Ｘ０及びＸ１並びに下位データ要素Ｙ０及びＹ１は、同じ相対的な順番に（すなわち、Ｘ０は、Ｘ１よりも下位のビット順番で、Ｙ０は、Ｙ１よりも下位のビット順番で）、結果オペランドの下位レーンに格納され、これらのデータ要素は、第１及び第２オペランドの下位レーンにそれぞれ現れる。同様に、上位データ要素Ｘ６及びＸ７並びに上位データ要素Ｙ６及びＹ７は、同じ相対的な順番で、結果オペランドの上位レーンに格納され、これらのデータ要素は、第１及び第２オペランドの上位レーンにそれぞれ現れる。
【００５２】
図７には、下位レーン（ビット０から１２７）に対するアンパック上位オペレーション及び上位レーン（ビット１２８から２５５）に対するアンパック下位オペレーションを規定する１つの第２クロスレーンアンパック命令に従って、２つのレーンを有する２５６ビットオペランドにおける３２ビットダブルワード（ｄワード）パックドデータ要素のアンパッキングが示されている。
【００５３】
第１ソースオペランド７５０は、２５６ビットを有し、８つのパックド３２ビット又はダブルワードデータ要素を格納する。第１ソースオペランドは、レジスタ（例えば、ＹＭＭレジスタ）、メモリ又は別の格納ロケーションに格納されてもよい。これらデータ要素には、下位から上位へと順番に、Ｘ０からＸ７と名前がつけられている。より詳細には、第１ソースオペランドは、ビット０から３１で表される第１データ要素（Ｘ０）、ビット３２から６３で表される第２データ要素（Ｘ１）、ビット６４から９５で表される第３データ要素（Ｘ２）、ビット９６から１２７で表される第４データ要素（Ｘ３）、ビット１２８から１５９で表される第５データ要素（Ｘ４）、ビット１６０から１９１で表される第６データ要素（Ｘ５）、ビット１９２から２２３で表される第７データ要素（Ｘ６）、及び、ビット２２４から２５５で表される第８データ要素（Ｘ７）を含む。データ要素Ｘ０からＸ３は、下位レーンに対応する。データ要素Ｘ４からＸ７は、上位レーンに対応する。
【００５４】
同様に、第２ソースオペランド７５２は、２５６ビットを有し、８つのパックド３２ビット又はダブルワードデータ要素を格納する。第１ソースオペランドは、レジスタ（例えば、ＹＭＭレジスタ）、メモリ又は別の格納ロケーションに格納されてもよい。これらデータ要素には、下位から上位へと順番に、Ｙ０からＹ７と名前がつけられている。より詳細には、第２ソースオペランドは、ビット０から３１で表される第９データ要素（Ｙ０）、ビット３２から６３で表される第１０データ要素（Ｙ１）、ビット６４から９５で表される第１１データ要素（Ｙ２）、ビット９６から１２７で表される第１２データ要素（Ｙ３）、ビット１２８から１５９で表される第１３データ要素（Ｙ４）、ビット１６０から１９１で表される第１４データ要素（Ｙ５）、ビット１９２から２２３で表される第１５データ要素（Ｙ６）、及び、ビット２２４から２５５で表される第１６データ要素（Ｙ７）を含む。データ要素Ｙ０からＹ３は、下位レーンに対応する。データ要素Ｙ４からＹ７は、上位レーンに対応する。
【００５５】
結果オペランド７５４は、結果を格納する。結果は、第２クロスレーンアンパック命令によって規定されるアンパックオペレーションの実行に基づいて生成される。結果は、実行ユニット、機能ユニット又はプロセッサのその他の部分によって、クロスレーンアンパック命令の結果として（実行ユニットが、１以上のマイクロ命令又は命令からデコード、翻訳又は導出されたその他の命令を実行する結果として）、格納されてもよい。
【００５６】
結果オペランドは、２５６ビットを有し、８つのパックド３２ビット又はダブルワードデータ要素を格納する。結果オペランドにおける８つのデータ要素は、第２クロスレーンアンパック命令によって規定されるアンパックオペレーションに従って、第１及び第２ソースオペランドから選択されるアンパックされインターリーブされたデータ要素の半分又は全部より少ない数のデータ要素、すなわちサブセットを表す。
【００５７】
この特定の第２クロスレーンアンパック命令は、下位レーン（ビット０から１２７）に対するアンパック上位オペレーション、及び、上位レーン（ビット１２８〜２５５）に対するアンパック下位オペレーションを規定する。下位レーンに対するアンパック上位オペレーションは、第１及び第２ソースオペランドの下位レーンにおける、上位３２ビットのみ又は上位クワッドワード（６４ビット）からのダブルワードデータ要素のインターリーブ（交互に配置される）アンパックを含んでもよい。上位レーンに対するアンパック上位オペレーションは、第１及び第２ソースオペランドの上位レーンにおける、上位３２ビットのみ又は上位クワッドワード（６４ビット）からのダブルワードデータ要素のインターリーブアンパックを含んでもよい。
【００５８】
図に示すように、結果オペランドは、宛先レジスタのビット０から３１に格納される第３データ要素（Ｘ２）、宛先レジスタのビット３２から６３に格納される第１１データ要素（Ｙ２）、宛先レジスタのビット６４から９５に格納される第４データ要素（Ｘ３）、宛先レジスタのビット９６から１２７に格納される第１２データ要素（Ｙ３）、宛先レジスタのビット１２８から１５９に格納される第５データ要素（Ｘ４）、宛先レジスタのビット１６０から１９１に格納される第１３データ要素（Ｙ４）、宛先レジスタのビット１９２から２２３に格納される第６データ要素（Ｘ５）、及び、宛先レジスタのビット２２４から２５５に格納される第１４データ要素（Ｙ５）を含んでもよい。
【００５９】
図８には、下位レーン（ビット０から１２７）に対するアンパック上位オペレーション及び上位レーン（ビット１２８から２５５）に対するアンパック下位オペレーションを規定する１つの第３クロスレーンアンパック命令に従って、２つのレーンを有する２５６ビットオペランドにおける１６ビットワードパックドデータ要素のアンパッキングが示されている。
【００６０】
第１ソースオペランド８５０は、２５６ビットを有し、１６個のパックド１６ビット又はワードデータ要素を格納する。第１ソースオペランドは、レジスタ（例えば、ＹＭＭレジスタ）、メモリ又は別の格納ロケーションに格納されてもよい。これらデータ要素には、下位から上位へと順番に、Ｘ０からＸ１５と名前がつけられている。データＸ０からＸ７は、下位レーンに対応する。データＸ８からＸ１５は、上位レーンに対応する。
【００６１】
同様に、第２ソースオペランド８５２は、２５６ビットを有し、１６個のパックド１６ビット又はワードデータ要素を格納する。第１ソースオペランドは、レジスタ（例えば、ＹＭＭレジスタ）、メモリ又は別の格納ロケーションに格納されてもよい。これらデータ要素には、下位から上位へと順番に、Ｙ０からＹ１５と名前がつけられている。データＹ０からＹ７は、下位レーンに対応する。データＹ８からＹ１５は、上位レーンに対応する。
【００６２】
結果オペランド８５４は、結果を格納する。結果は、第３クロスレーンアンパック命令によって規定されるアンパックオペレーションの実行に基づいて生成される。結果は、実行ユニット、機能ユニット又はプロセッサのその他の部分によって、クロスレーンアンパック命令の結果として（実行ユニットが、１以上のマイクロ命令又は命令からデコード、翻訳又は導出されたその他の命令を実行する結果として）、格納されてもよい。
【００６３】
結果オペランドは、２５６ビットを有し、１６個のパックド１６ビット又はワードデータ要素を格納する。結果オペランドにおける１６個のデータ要素は、第２クロスレーンアンパック命令によって規定されるアンパックオペレーションに従って、第１及び第２ソースオペランドから選択されるアンパックされインターリーブされるデータ要素の半分又は全部より少ない数のデータ要素、すなわちサブセットを表す。
【００６４】
この特定の第３クロスレーンアンパック命令は、下位レーン（ビット０から１２７）に対するアンパック下位オペレーション、及び、上位レーン（ビット１２８から２５５）に対するアンパック上位オペレーションを規定する。下位レーンに対するアンパック下位オペレーションは、第１及び第２ソースオペランドの下位レーンにおける、下位１６ビット又は下位クワッドワード（６４ビット）からのワードデータ要素のインターリーブされたアンパックを含んでもよい。上位レーンに対するアンパック上位オペレーションは、第１及び第２ソースオペランドの上位レーンにおける、上位１６ビット又は上位クワッドワード（６４ビット）からのワードデータ要素のインターリーブされたアンパックを含んでもよい。
【００６５】
図示されるように、結果オペランドは、下位レーンに、下位から上位へと順番に並べられたデータ要素、Ｘ０、Ｙ０、Ｘ１、Ｙ１、Ｘ２、Ｙ２、Ｘ３、Ｙ３を含む。結果オペランドは、上位レーンに、下位から上位へと順番に並べられたデータ要素、Ｘ１２、Ｙ１２、Ｘ１３、Ｙ１３、Ｘ１４、Ｙ１４、Ｘ１５、Ｙ１５を含む。
【００６６】
図９には、下位レーン（ビット０から１２７）に対するアンパック上位オペレーション及び上位レーン（ビット１２８から２５５）に対するアンパック下位オペレーションを規定する１つの第４クロスレーンアンパック命令に従って、２つのレーンを有する２５６ビットオペランドにおける１６ビットワードパックドデータ要素のアンパッキングが示されている。
【００６７】
第１ソースオペランド９５０は、２５６ビットを有し、１６個のパックド１６ビット又はワードデータ要素を格納する。第１ソースオペランドは、レジスタ（例えば、ＹＭＭレジスタ）、メモリ又は別の格納ロケーションに格納されてもよい。これらデータ要素には、下位から上位へと順番に、Ｘ０からＸ１５と名前がつけられている。データＸ０からＸ７は、下位レーンに対応する。データＸ８からＸ１５は、上位レーンに対応する。
【００６８】
同様に、第２ソースオペランド９５２は、２５６ビットを有し、１６個のパックド１６ビット又はワードデータ要素を格納する。第１ソースオペランドは、レジスタ（例えば、ＹＭＭレジスタ）、メモリ又は別の格納ロケーションに格納されてもよい。これらデータ要素には、下位から上位へと順番に、Ｙ０からＹ１５と名前がつけられている。データＹ０からＹ７は、下位レーンに対応する。データＹ８からＹ１５は、上位レーンに対応する。
【００６９】
結果オペランド９５４は、結果を格納する。結果は、第４クロスレーンアンパック命令によって規定されるアンパックオペレーションの実行に基づいて生成される。結果は、実行ユニット、機能ユニット又はプロセッサのその他の部分によって、クロスレーンアンパック命令の結果として（実行ユニットが、１以上のマイクロ命令又は命令からデコード、翻訳又は導出されたその他の命令を実行する結果として）、格納されてもよい。
【００７０】
結果オペランドは、２５６ビットを有し、１６個のパックド１６ビット又はワードデータ要素を格納する。結果オペランドにおける１６個のデータ要素は、第４クロスレーンアンパック命令によって規定されるアンパックオペレーションに従って、第１及び第２ソースオペランドから選択されるアンパックされインターリーブされるデータ要素の半分又は全部より少ない数のデータ要素、すなわちサブセットを表す。
【００７１】
この特定の第４クロスレーンアンパック命令は、下位レーン（ビット０から１２７）に対するアンパック上位オペレーション、及び、上位レーン（ビット１２８から２５５）に対するアンパック下位オペレーションを規定する。下位レーンに対するアンパック上位オペレーションは、第１及び第２ソースオペランドの下位レーンにおける、上位１６ビット又は上位クワッドワード（６４ビット）からのワードデータ要素の交互に配置された（インターリーブされた）アンパックを含んでもよい。上位レーンに対するアンパック下位オペレーションは、第１及び第２ソースオペランドの上位レーンにおける、下位１６ビット又は下位クワッドワード（６４ビット）からのワードデータ要素の交互に配置された（インターリーブされた）アンパックを含んでもよい。
【００７２】
図示されるように、結果オペランドは、下位レーンに、下位から上位へと順番に並べられたデータ要素、Ｘ４、Ｙ４、Ｘ５、Ｙ５、Ｘ６、Ｙ６、Ｘ７、Ｙ７を含む。結果オペランドは、上位レーンに、下位から上位へと順番に並べられたデータ要素、Ｘ８、Ｙ８、Ｘ９、Ｙ９、Ｘ１０、Ｙ１０、Ｘ１１、Ｙ１１、を含む。
【００７３】
図６から図９のそれぞれに示すように、結果オペランドは、第１及び第２オペランドからのデータ要素のサブセット（特に、半分）のみを有する。結果オペランドの下位レーンは、第１及び第２オペランドの下位レーンからのデータ要素のサブセット（特に、半分）のみを有する。同様に、結果オペランドの上位レーンは、第１及び第２オペランドの上位レーンからのデータ要素のサブセット（特に、半分）のみを有する。
【００７４】
第１及び第２オペランドの下位レーンにそれぞれ現れるように、第１及び第２オペランドからのデータ要素は、同じ順番で、結果オペランドの下位レーンに格納される。これは、結果オペランド全体についても同様であり、レーンそれぞれ内についても同様である。
【００７５】
図６から図９では、２つの１２８ビットレーンを有する２５６ビットオペランドが説明されたが、本発明の実施形態の範囲は、これに限定されない。オペランドは、これより少ないビット数であってもよいし、多いビット数であってもよい。同様に、レーンは、少ないビット数であってもよいし、多いビット数であってもよい。一例として、オペランドは、１２８ビットであって、レーンは、６４ビットであってもよい。別の例としては、オペランドは、５１２ビットを有してもよいし、レーンは、６４ビット又は１２８ビットを有してもよい。
【００７６】
ある理念を更に例示するべく、クロスレーンアンパック命令の一例の使用例を考える。例えば、Ｓｔｒｕｃｔｕｒｅ ｏｆ Ａｒｒａｙｓ (ＳｏＡ) ｔｏ Ａｒｒａｙ ｏｆ Ｓｔｒｕｃｔｕｒｅｓ (ＡｏＳ) アルゴリズムのような、特定のアルゴリズムにおいて、オペランドに現れるデータ要素と同じ順番を維持しつつ、２つのオペランドからのデータ要素をインターリーブ（交互配置）することが望ましい。以下に示すのは、下位レーン及び上位レーンに複製された４つのデータ要素（０，２，４，６）を有する第１ソースオペランドである。同様に、下位レーン及び上位レーンに複製された４つのデータ要素（１，３，５，７）を有する第２ソースオペランドが示されている。例として、これらのデータ要素は、インテルＡＶＸブロードキャスト命令によって複製されてもよい。以下に示すように、下位レーンに対するアンパック下位オペレーション及び上位レーンに対するアンパック上位オペレーションを規定するクロスレーンアンパック命令は、第１及び第２オペランドからのデータ要素の全てがインターリーブされて、ソースオペランドに現れるこれらデータ要素と同じ順番に並べられている結果オペランドを達成し、その結果が連続的であってもよい。
第１ソースオペランド：６４２０｜６４２０
第２ソースオペランド：７５３１｜７５３１
結果オペランド：７６５４｜３２１０
【００７７】
これは、特定のクロスレーンアンパック命令の具体的な使用例を示した一例に過ぎない。クロスレーンアンパック命令のその他の使用及び利点が当業者には明らかであり、当業者は、本開示の恩恵を受ける。
【００７８】
図１０は、実行されるアンパックオペレーションの種類を規定する制御フィールド１０６０を有するクロスレーンアンパック命令１００２の一実施形態を示した簡略化されたブロック図である。制御フィールドは、複数のビットを有する。図示された例では、第１ビット（ｂｉｔ０）は、第１レーンに対応し、第２ビット（ｂｉｔ１）は、第２レーンに対応し、第Ｎビット（ｂｉｔＮ）は、第Ｎレーンに対応し、ここでＮは、多くの場合２〜５の範囲の整数である。１以上の実施形態において、各ビットは、対応するレーンに対するアンパックオペレーションの第１種類（例えば、アンパック下位オペレーション）を示す第１の所定値（例えば、０）、及び、対応するレーンに対するアンパックオペレーションの第２種類（例えば、アンパック上位オペレーション）を示す第２の所定値（例えば、１）を有してもよい。これに替えて、２又は３以上のビットを必要に応じて使用して、各レーンに対するアンパックオペレーションを規定してもよい。或いは、どのオペレーションが実行されるかを規定する制御フィールドを有する命令ではなく、命令が、アンパックオペレーションの１つの所定の組み合わせを実行してもよく、必要であれば、アンパックオペレーションの複数の異なる組み合わせを提供するべく、複数の命令が含まれてもよい。
【００７９】
図１１は、本発明の一以上の実施形態を実装するのに好適なコンピュータシステム１１７０の一実施例を示したブロック図である。コンピュータシステムは、ＰＥＮＴＩＵＭ（登録商標）４、ＰＥＮＴＩＵＭ（登録商標）Ｄｕａｌ‐Ｃｏｒｅ、Ｃｏｒｅ（登録商標）２ Ｄｕｏ ａｎｄ Ｑｕａｄ、Ｘｅｏｎ（登録商標）、Ｉｔａｎｉｕｍ（登録商標）、ＸＳｃａｌｅ（登録商標）又はＳｔｒｏｎｇＡＲＭ（登録商標）マイクロプロセッサに基づく処理システムのような処理システムを表している。しかしながら、これは、好適なコンピュータシステムの特定の一例である。マルチプロセッサシステム、サーバ、及び、その他の設計又は構成要素を有するその他のコンピュータシステムも好適である。
【００８０】
一実施形態において、コンピュータシステムは、米国ワシントン、レドモンドに本社を置くマイクロソフトコーポレーションから入手可能なＷＩＮＤＯＷＳ（登録商標）オペレーティングシステムの一バージョンを実行してもよい。これに替えて、例えば、ＵＮＩＸ（登録商標）、リナックス（登録商標）又は組み込みシステムのようなその他のオペレーティングシステムを使用してもよい。本発明の実施形態は、ハードウェア回路及びソフトウェアの周知の特定の組み合わせに限定されない。
【００８１】
コンピュータシステムは、プロセッサ１１００を含む。プロセッサは、少なくとも１つの実行ユニット１１０６を含む。実行ユニット及び／又はプロセッサは、上記したような、少なくとも１つのクロスレーンアンパック命令１１０２を実行可能又は処理可能であってもよい。プロセッサは、レジスタファイル１１０８を含む。一以上の実施形態において、レジスタファイルは、複数のレーンを有するレジスタを含む。すなわち、プロセッサは、複数のレーンを有するＳＩＭＤアーキテクチャを提供してもよい。図示されているプロセッサは、説明を曖昧にしない目的から、単純化された形式で示されている。プロセッサは、例えば、キャッシュ、命令プリフェッチャ、命令デコーダ又はトランスレータ、トレースキャッシュ、マイクロコード（μコード）、リードオンリーメモリ（ＲＯＭ）、アウトオブオーダーエンジン等の、その他の構成要素を含んでもよい。
【００８２】
プロセッサは、プロセッサバス又はその他のインターコネクト１１７２と結合される。プロセッサバスは、プロセッサとシステム内のその他の構成要素との間のデータ信号を送信するのに使用されてもよい。
【００８３】
また、コンピュータシステムは、メモリ１１７４を含む。メモリは、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、フラッシュメモリ、その他の周知の種類のメモリ、又は、これらの組み合わせを含んでもよい。ＤＲＡＭは、システムで使用されるメモリの１種の例であるが、全てのコンピュータシステムにおいて使用されているわけではない。メモリは、１以上のクロスレーンアンパック命令を含むソフトウェアのような命令１１７３、及び、データ１１７４を格納するのに使用されてもよい。
【００８４】
コンピュータシステムは、ハブ型アーキテクチャの一例である。ハブ型アーキテクチャは、メモリ制御ハブ（ＭＣＲ）１１７６を含む。ＭＣＲは、システムロジックチップである。ＭＣＲは、プロセッサバス１１７２及びメモリ１１７４に結合される。プロセッサは、プロセッサバスを介してＭＣＲと通信を行ってもよい。ＭＣＲは、プロセッサ、メモリ、及び、コンピュータシステムにおけるその他の構成要素との間の信号を指示してもよい。ＭＣＲは、プロセッサバス、メモリ、及び、ハブインターフェースバス又はその他のインターコネクトとの間の信号をブリッジしてもよい。ＭＣＲは、命令及びデータを格納及び読み出すのに使用されるメモリへの高バンド幅メモリパスを提供する。
【００８５】
ある実施形態では、システムは、必要に応じて、グラフィックスデバイス（例えば、グラフィック／ビデオカード）１１８６を含んでもよい。ＭＣＲは、グラフィックスデバイスを接続するために、グラフィックスポート及びインターコネクト（例えば、アクセラレーテッド・グラフィックス・ポート（ＡＧＰ）インターコネクト）を提供してもよい。
【００８６】
システムはまた、Ｉ／Ｏコントローラハブ（ＩＣＲ）１１７８を含む。ＩＣＲは、ハブインターフェースバス又は１以上のバスを含むその他のインターコネクト１１７７を介して、ＭＣＲと結合される。ＩＣＲは、ローカルＩ／Ｏバス又はその他のインターコネクトを介して、Ｉ／Ｏデバイスへの直接接続を提供してもよい。ローカルＩ／Ｏバス又はその他のインターコネクトは、周辺機器を、メモリ、チップセット及びプロセッサに接続する高速Ｉ／Ｏバス又はその他のインターコネクトを表していていてもよい。
【００８７】
周辺機器の複数の代表例が示されており、オーディオコントローラ１１７９、フラッシュＢＩＯＳ１１８０、無線送受信機１１８１、データストレージ１１８２（例えば、ハードディスクドライブ、フロッピー（登録商標）ディスクドライブ、ＣＤ−ＲＯＭデバイス、フラッシュメモリデバイス等）、ユーザー入力インターフェース（例えば、キーボード）を提供するレガシーＩ／Ｏコントローラ１１８３、ユニバーサルシリアルバス（ＵＳＢ）のようなシリアル拡張ポート１１８４、及び、ネットワークコントローラ１１８５が含まれる。これらの具体的に示した周辺機器は、必要に応じて設けられ、必ずしも必須の構成ではない。
【００８８】
また、図示した例は、好適なコンピュータシステムの一例に過ぎないことは明らかである。本発明の実施形態の範囲は、特定のコンピュータシステム設計に限定されない。その他のコンピュータシステムの様々な設計についても、好適である。その他の設計には、特に、ラップトップ、デスクトップ、エンジニアリングワークステーション及びサーバ、携帯ＰＣ、パーソナル・デジタル・アシスタンス等が含まれる。
【００８９】
更に、実施形態は、１以上のプロセッサ又は実行ユニットを有するその他のデバイスにおいて適用されてもよい。例えば、本明細書に開示したクロスレーンアンパック命令のうちの１つを処理可能なプロセッサ及び／又は実行ユニットを含むその他のデバイスの例には、これに限定するわけではないが、携帯メディアプレーヤ、携帯電話、携帯機器、インターネットプロトコルデバイス、セットトップボックス、ネットワークデバイス、ネットワークハブ、広域ネットワーク（ＷＡＮ）スイッチ、ビデオゲームデバイス、グラフィックスデバイス、デジタル信号プロセッサ（ＤＳＰ）、マイクロコントローラ、組み込みプロセッサ及びその他のロジック回路が含まれる。ＳＩＭＤ又はパックドデータの恩恵を受ける又は利用するあらゆる電子デバイス又はシステムは、本明細書に記載されるクロスレーンアンパック命令を処理するロジックを含んでもよい。
【００９０】
説明及び特許請求の範囲において、"結合（ｃｏｕｐｌｅｄ）"及び"接続（ｃｏｎｎｅｃｔｅｄ）"という言葉、並びにこれらの派生語が使用されることがある。この２つの言葉は、同義語として使用されているのではない。特定の実施形態において、"接続"は、２つ以上の要素が物理的に又は電気的に直接互いに接触していることを指すのに使用されている。"結合"も、２つ以上の要素が、直接物理的に又は電気的に接触していることを指す。しかしながら、"結合"は同時に、２つ以上の要素が直接互いに接触していないが、互いに協動又は相互作用していることも意味する。
【００９１】
上記の説明では、本発明の実施形態の完全な理解を提供するべく、多くの詳細事項が記載された。しかしながら、これら詳細事項がなくとも本発明を実施可能であることは、当業者にとって明らかである。記載された特定の実施形態は、本発明を限定するために提供されているのではなく、本発明の実施形態を例示するべく提供されている。本発明の範囲は、上記の具体的な例によって決定されるのではなく、添付の特許請求の範囲によってのみ規定される。また、本発明の説明の理解を不明瞭にしない目的から、周知の回路、構造、デバイス及びオペレーションについては、ブロック図の形式で示されており、詳細には示されていない。適切であると考えられる場合、対応する又は類似する要素を示すのに参照番号及び参照番号の末尾部分が図面間で繰り返し使用されている。
【００９２】
様々なオペレーション及び方法が記載された。方法のうちの幾つかは、基本的な形式で記載されたが、オペレーションを、必要に応じて、方法に付加してもよいし、方法から省略してもよい。方法のオペレーションは、必要に応じて、異なる順番で実行されてもよい。多くの変形例及び適用が、これらの方法に対して考えられる。
【００９３】
あるオペレーションは、ハードウェアコンポーネントによって実行されてもよいし、命令でプログラムされた回路又はハードウェアにオペレーションを実行させる又は少なくとも実行させる結果となる機械実行可能命令によって実現されてもよい。回路は、例として、汎用プロセッサ、特殊目的プロセッサ、又は、ロジック回路を含んでもよい。オペレーションは、必要に応じて、ハードウェア及びソフトウェアの組み合わせによって実行されてもよい。機械命令又は機械命令から導出された１以上の制御信号に応答して、プロセッサは、特定のロジックを含んでもよい。
【００９４】
本発明の１以上の実施形態は、１以上の命令（例えば、アンパック命令）及び／又はデータを格納する有形機械アクセス可能及び／又は可読媒体を含むプログラム製品又はその他の製造物品として提供されてもよい。有形媒体は、１以上の材料を含んでもよい。媒体は、機械実行された場合に、機械に１以上の本明細書に開示されたオペレーション又は方法を実行させる及び／又は実行する結果となる命令を提供してもよい。好適な機械としては、これらに限定するわけではないが、例えば、コンピュータシステム、ネットワークデバイス、パーソナル・デジタル・アシスタンス（ＰＤＡ）、モデム、携帯電話、その他の無線デバイス、及び、１以上のプロセッサを有する様々な電子デバイスが含まれる。
【００９５】
媒体は、例えば、機械がアクセス可能な形式で情報を格納することを提供するメカニズムを含んでもよい。例えば、媒体は、必要に応じて、記録媒体を含んでもよく、例えば、フロッピー（登録商標）ディスケット、光記憶媒体、光ディスク、ＣＤ−ＲＯＭ、磁気ディスク、磁気光学ディスク、リードオンリーメモリ（ＲＯＭ）、プログラム可能ＲＯＭ（ＰＲＯＭ）、消去可能−プログラム可能リードオンリーメモリ（ＥＰＲＯＭ）、電気的消去可能−プログラム可能リードオンリーメモリ（ＥＥＰＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、ダイナミックランダムＲＡＭ（ＤＲＡＭ）、フラッシュメモリ、及びこれらの組み合わせが含まれる。
【００９６】
また、"一実施形態"、"ある実施形態"、"１以上の実施形態"、等の言葉は、少なくとも本発明の実施形態が、特定の特徴を含むことを意味する。同様に、本明細書に記載された様々な特徴が、１つの実施形態、図面又はその説明に一緒に示されたが、これは、開示を縮小して記載し、様々な発明の側面の理解を助ける目的でこのように記載している。このような開示の方法により、本発明が、請求項にそれぞれ明示的に示されている特徴よりも多くの特徴を必要とすると解釈されるべきではない。添付の特許請求の範囲に反映されているように、発明の側面は、開示されている１つの実施形態の全特徴よりも少ない数の特徴に存在する場合がある。したがって、詳細な説明の後に記載される特許請求の範囲は、明示的に、詳細な説明に組み込まれ、各請求項は、本発明の個別の実施形態として、独立している。
【図１】
0005438214.tif 000002
【図２】
0005438214.tif 000003
【図３】
0005438214.tif 000004
【図４】
0005438214.tif 000005
【図５】
0005438214.tif 000006
【図６】
0005438214.tif 000007
【図７】
0005438214.tif 000008
【図８】
0005438214.tif 000009
【図９】
0005438214.tif 000010
【図１０】
0005438214.tif 000011
【図１１】
0005438214.tif 000012