(57)【要約】【課題】  コンピューティング環境において符号拡張を提供するためのコンピュータ・プログラム、コンピュータ・システム及びコンピュータ実装方法を提供する。【解決手段】  アドレス及びデータ・サイズが、ローテータに提供される。ローテータは、アドレス及びデータ・サイズに基づいて、データ要素を、所定数の位置を有する記憶位置に格納する。データ要素は、１つ又は複数のデータ・ユニットを含み、１つ又は複数のデータ・ユニットは、１つ又は複数のデータ・ユニットのうちの選択されたデータ・ユニットを受け取るべき記憶位置内の所定の位置に基づいて、記憶位置の１つ又は複数の位置内に正しくアラインされる。ローテータは、１つ又は複数のデータ・ユニットの選択されたデータ・ユニットの値を、記憶位置の１つ又は複数の他の位置に複製する。【選択図】      図４
2017097876.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティング環境において符号拡張を提供するためのコンピュータ・プログラムであって、前記コンピュータ・プログラムは、方法を実施するための、処理回路により実行される命令を含み、前記方法は、
ローテータにより、メモリ内のデータ要素のアドレス及び前記データ要素のデータ・サイズを取得することと、
前記ローテータにより、前記アドレス及び前記データ・サイズに基づいて、前記データ要素を、所定数の位置を有する記憶位置に格納することであって、前記データ要素は１つ又は複数のデータ・ユニットを含み、前記１つ又は複数のデータ・ユニットは、前記１つ又は複数のデータ・ユニットのうちの選択されたデータ・ユニットを受け取るべき前記記憶位置における所定の位置に基づいて、前記記憶位置の１つ又は複数の位置に正しくアラインされる、格納することと、
前記ローテータにより、前記１つ又は複数のデータ・ユニットのうちの選択されたデータ・ユニットの値を、前記記憶位置の１つ又は複数の他の位置に複製することと、
を含む、コンピュータ・プログラム。
【請求項２】
前記記憶位置は、レジスタを含み、前記所定数の位置は、前記レジスタの所定数のバイト位置を含み、前記データ要素の前記１つ又は複数のデータ・ユニットは、前記データ要素の１つ又は複数のバイトを含む、請求項１に記載のコンピュータ・プログラム。
【請求項３】
前記所定の位置は、前記レジスタの最下位バイトであり、前記選択されたデータは、前記データ要素の最上位バイトである、請求項２に記載のコンピュータ・プログラム。
【請求項４】
前記記憶位置は、レジスタを含み、前記格納することは、前記１つ又は複数のデータ・ユニットを前記レジスタ内に格納するための論理を用いることを含み、前記論理は、
ｉ＝１乃至前記データ・サイズについて、
Ｘが前記レジスタ内の前記位置の数であり、前記レジスタが位置０乃至位置Ｘ−１を含むものとして、前記レジスタの位置（Ｘ−ｉ）内に、（前記データ・サイズ−ｉ＋前記アドレス）により指定される、求められたアドレスにおいてメモリから取得した前記１つ又は複数のデータ・ユニットのうちの１つのデータ・ユニットの値を格納することを含む、請求項１に記載のコンピュータ・プログラム。
【請求項５】
前記記憶位置は、レジスタを含み、前記複製することは、前記複製することを実施するための論理を用いることを含み、前記論理は、
ｉ＝（前記データ・サイズ＋１）乃至前記位置の数について、
Ｘが前記レジスタ内の前記位置の数であり、前記レジスタが位置０乃至位置Ｘ−１を含むものとして、前記レジスタの位置（Ｘ−ｉ）内に、前記アドレスにおいてメモリから取得した前記１つ又は複数のデータ・ユニットのうちの１つのデータ・ユニットの値を格納することを含む、請求項１に記載のコンピュータ・プログラム。
【請求項６】
前記選択されたデータ・ユニットは、前記データ要素の最上位データ・ユニットである、請求項１に記載のコンピュータ・プログラム。
【請求項７】
前記１つ又は複数の他の位置のうちの１つの位置は複数のビットを含み、前記方法は、前記位置の前記複数のビットのうちの１ビットの符号値を、前記位置の前記複数のビットのうちの他のビットに複製することをさらに含む、請求項１に記載のコンピュータ・プログラム。
【請求項８】
前記方法は、前記１つ又は複数の他の位置の残りの位置において、前記符号値の前記複製を繰り返すことをさらに含む、請求項７に記載のコンピュータ・プログラム。
【請求項９】
前記方法は、前記位置の前記複数のビットにゼロ値を複製することをさらに含む、請求項７に記載のコンピュータ・プログラム。
【請求項１０】
前記１つ又は複数の他の位置のうちの１つの位置は複数のビットを含み、前記方法は、前記位置の前記複数のビットにゼロ値を複製することをさらに含む、請求項１に記載のコンピュータ・プログラム。
【請求項１１】
コンピューティング環境において符号拡張を提供するためのコンピュータ・システムであって、前記コンピュータ・システムは、
メモリと、
前記メモリと通信するプロセッサと、
を含み、前記コンピュータ・システムは、方法を実施するように構成され、前記方法は、
ローテータにより、メモリ内のデータ要素のアドレス及び前記データ要素のデータ・サイズを取得することと、
前記ローテータにより、前記アドレス及び前記データ・サイズに基づいて、前記データ要素を、所定数の位置を有する記憶位置に格納することであって、前記データ要素は１つ又は複数のデータ・ユニットを含み、前記１つ又は複数のデータ・ユニットは、前記１つ又は複数のデータ・ユニットのうちの選択されたデータ・ユニットを受け取るべき前記記憶位置における所定の位置に基づいて、前記記憶位置の１つ又は複数の位置に正しくアラインされる、格納することと、
前記ローテータにより、前記１つ又は複数のデータ・ユニットのうちの選択されたデータ・ユニットの値を、前記記憶位置の１つ又は複数の他の位置に複製することと、
を含む、コンピュータ・システム。
【請求項１２】
前記記憶位置は、レジスタを含み、前記格納することは、前記１つ又は複数のデータ・ユニットを前記レジスタ内に格納するための論理を用いることを含み、前記論理は、
ｉ＝１乃至前記データ・サイズについて、
Ｘが前記レジスタ内の前記位置の数であり、前記レジスタが位置０乃至位置Ｘ−１を含むものとして、前記レジスタの位置（Ｘ−ｉ）内に、（前記データ・サイズ−ｉ＋前記アドレス）により指定される、求められたアドレスにおいてメモリから取得した前記１つ又は複数のデータ・ユニットのうちの１つのデータ・ユニットの値を格納することを含む、請求項１１に記載のコンピュータ・システム。
【請求項１３】
前記記憶位置は、レジスタを含み、前記複製することは、前記複製することを実施するための論理を用いることを含み、前記論理は、
ｉ＝（前記データ・サイズ＋１）乃至前記位置の数について、
Ｘが前記レジスタ内の前記位置の数であり、前記レジスタが位置０乃至位置Ｘ−１を含むものとして、前記レジスタの位置（Ｘ−ｉ）内に、前記アドレスにおいてメモリから取得した前記１つ又は複数のデータ・ユニットのうちの１つのデータ・ユニットの値を格納することを含む、請求項１１に記載のコンピュータ・システム。
【請求項１４】
前記１つ又は複数の他の位置のうちの１つの位置は複数のビットを含み、前記方法は、
前記位置の前記複数のビットのうちの１ビットの符号値を、前記位置の前記複数のビットのうちの他のビットに複製することと、
前記１つ又は複数の他の位置の残りの位置において、前記符号値の前記複製を繰り返すことと、
をさらに含む、請求項１１に記載のコンピュータ・システム。
【請求項１５】
前記１つ又は複数の他の位置のうちの１つの位置は複数のビットを含み、前記方法は、前記位置の前記複数のビットにゼロ値を複製することをさらに含む、請求項１１に記載のコンピュータ・システム。
【請求項１６】
コンピューティング環境において符号拡張を提供するコンピュータ実装方法であって、
ローテータにより、メモリ内のデータ要素のアドレス及び前記データ要素のデータ・サイズを取得することと、
前記ローテータにより、前記アドレス及び前記データ・サイズに基づいて、前記データ要素を、所定数の位置を有する記憶位置に格納することであって、前記データ要素は１つ又は複数のデータ・ユニットを含み、前記１つ又は複数のデータ・ユニットは、前記１つ又は複数のデータ・ユニットのうちの選択されたデータ・ユニットを受け取るべき前記記憶位置における所定の位置に基づいて、前記記憶位置の１つ又は複数の位置に正しくアラインされる、格納することと、
前記ローテータにより、前記１つ又は複数のデータ・ユニットのうちの選択されたデータ・ユニットの値を、前記記憶位置の１つ又は複数の他の位置に複製することと、
を含む、コンピュータ実装方法。
【請求項１７】
前記記憶位置はレジスタを含み、前記格納することは、前記１つ又は複数のデータ・ユニットを前記レジスタ内に格納するための論理を用いることを含み、前記論理は、
ｉ＝１乃至前記データ・サイズについて、
Ｘが前記レジスタ内の前記位置の数であり、前記レジスタが位置０乃至位置Ｘ−１を含むものとして、前記レジスタの位置（Ｘ−ｉ）内に、（前記データ・サイズ−ｉ＋前記アドレス）により指定される、求められたアドレスにおいてメモリから取得した前記１つ又は複数のデータ・ユニットのうちの１つのデータ・ユニットの値を格納することを含む、請求項１６のコンピュータ実装方法。
【請求項１８】
前記記憶位置はレジスタを含み、前記複製することは、前記複製することを実施するための論理を用いることを含み、前記論理は、
ｉ＝（前記データ・サイズ＋１）乃至前記位置の数について、
Ｘが前記レジスタ内の前記位置の数であり、前記レジスタが位置０乃至位置Ｘ−１を含むものとして、前記レジスタの位置（Ｘ−ｉ）内に、前記アドレスにおいてメモリから取得した前記１つ又は複数のデータ・ユニットのうちの１つのデータ・ユニットの値を格納することを含む、請求項１６に記載のコンピュータ実装方法。
【請求項１９】
前記１つ又は複数の他の位置のうちの１つの位置は複数のビットを含み、前記方法は、
前記位置の前記複数のビットのうちの１ビットの符号値を、前記位置の前記複数のビットのうちの他のビットに複製することと、
前記１つ又は複数の他の位置の残りの位置において、前記符号値の前記複製を繰り返すことと、
をさらに含む、請求項１６に記載のコンピュータ実装方法。
【請求項２０】
前記１つ又は複数の他の位置のうちの１つの位置は複数のビットを含み、前記方法は、前記位置の前記複数のビットにゼロ値を複製することをさらに含む、請求項１６に記載のコンピュータ実装方法。
【発明の詳細な説明】
【技術分野】
【０００１】
１つ又は複数の態様は、一般に、コンピューティング環境内での処理に関し、とりわけ、ロード命令の符号拡張に関する。
【背景技術】
【０００２】
コンピュータ・アーキテクチャは、データをキャッシュなどのメモリからレジスタにロードする、異なるタイプのロード命令を有する。例えば、ニューヨーク州アーモンク所在のインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（IBM Corporationの商標）においては、ロード論理命令があり、インターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるＰｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ（IBM Corporationの商標）においては、ロード命令及びゼロ命令があり、その各々が、特定のサイズ（例えば、バイト、ハーフワード、ワード）のデータを大きいサイズのレジスタにロードし、次にレジスタの残りのバイトをゼロで埋める。
【０００３】
さらなる例として、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（IBM Corporatioｎの商標）及びＰｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ（IBMCorporationの商標）はともに、特定のサイズのデータをロードし、次に、残りのバイトに符号ビットを拡張するロード命令を含む。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】「Ｐｏｗｅｒ  ＩＳＡ（商標）Ｖｅｒｓｉｏｎ  ２．０７Ｂ」、インターナショナル・ビジネス・マシーンズ・コーポレーション、２０１５年４月９日
【非特許文献２】「ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｐｒｉｎｃｉｐｌｅｓ  ｏｆ  Ｏｐｅｒａｔｉｏｎ」、ＩＢＭ刊行物、Ｎｏ．ＳＡ２２−７８３２−１０、２０１５年３月
【発明の概要】
【発明が解決しようとする課題】
【０００５】
レジスタの残りのバイトへの符号ビットの拡張は、費用のかかるプロセスである。
【課題を解決するための手段】
【０００６】
コンピューティング環境において符号拡張を提供するためのコンピュータ・プログラム製品を提供することにより、従来技術の欠点が克服され、付加的な利点がもたらされる。コンピュータ・プログラム製品は、処理回路により読み出し可能であり、かつ、方法を実施するための、処理回路により実行される命令を格納するコンピュータ可読ストレージ媒体を含む。この方法は、例えば、ローテータ（rotator）により、メモリ内のデータ要素のアドレス（address）及びデータ要素のデータ・サイズ（data size）を取得することと、ローテータにより、アドレス及びデータ・サイズに基づいて、データ要素を、所定数の位置（position）を有する記憶位置（location）に格納することであって、データ要素は１つ又は複数のデータ・ユニットを含み、１つ又は複数のデータ・ユニットは、１つ又は複数のデータ・ユニットのうちの選択されたデータ・ユニットを受け取るべき記憶位置における所定の位置に基づいて、記憶位置の１つ又は複数の位置に正しくアラインされる、格納することと、ローテータにより、１つ又は複数のデータ・ユニットのうちの選択されたデータ・ユニットの値を、記憶位置の１つ又は複数の他の位置に複製することと、を含む。
【０００７】
この態様において、ローテータは、データ要素がロードされる記憶位置内に符号を拡張するために用いられる。
【０００８】
例として、記憶位置はレジスタを含み、所定数の位置は、レジスタの所定数のバイト位置を含み、データ要素の１つ又は複数のデータ・ユニットは、データ要素の１つ又は複数のバイトを含む。これにより、ローテータが、データ要素がロードされるレジスタ内に符号を拡張することが可能になる。
【０００９】
特定の例として、所定の位置は、レジスタの最下位バイトであり、選択されたデータ・ユニットは、データ要素の最上位バイトである。
【００１０】
１つの実施形態において、記憶位置は、レジスタを含み、格納することは、１つ又は複数のデータ・ユニットをレジスタ内に格納するための論理を用いることを含む。この論理は、例えば、ｉ＝１乃至データ・サイズについて、Ｘがレジスタ内の位置の数であり、レジスタが位置０乃至位置Ｘ−１を含むものとして、レジスタの位置（Ｘ−ｉ）内に、（データ・サイズ−ｉ＋アドレス）により指定される求められたアドレスにおいてメモリから取得した１つ又は複数のデータ・ユニットのうちの１つのデータ・ユニットの値を格納することを含む。ローテータは、データ要素をレジスタ内に正確に配置する。
【００１１】
さらに、一実施形態において、複製することは、複製することを実施するための論理を用いることを含み、この論理は、例えば、ｉ＝（データ・サイズ＋１）乃至位置の数について、Ｘがレジスタ内の位置の数であり、レジスタが位置０乃至位置Ｘ−１を含むものとして、レジスタの位置（Ｘ−ｉ）内に、アドレスにおいてメモリから取得した１つ又は複数のデータ・ユニットのうちの１つのデータ・ユニットの値を格納することを含む。従って、この実施形態において、ローテータは、データ要素の最上位バイトを、レジスタ内の他の残りの位置に拡張し、それにより、最上位バイト内に含まれる符号が拡張される。
【００１２】
更に別の態様において、１つ又は複数の他の位置のうちの１つの位置は、複数のビットを含み、位置の複数のビットのうちの１ビットの符号値を、位置の複数のビットの他のビットに複製する。さらに、１つ又は複数の他の位置の残りの位置において、符号値の複製を繰り返すことができる。従って、１つ又は複数の態様において、データ要素がロードされていないレジスタの残りの位置のバイト（又はデータ・ユニット）内に、符号の値が複製される。
【００１３】
更に別の態様において、位置の複数のビットにゼロ値が複製される。これにより、レジスタの残りのバイトのゼロ化（zeroing）が可能になる。従って、１つ又は複数の態様において、データ要素がロードされていないレジスタの残りの位置のバイト（又は、データ・ユニット）内にゼロが複製される。
【００１４】
１つ又は複数の態様に関連するコンピュータ実装方法及びシステムも、本明細書で説明され、特許請求される。さらに、１つ又は複数の態様に関連するサービスも、本明細書で説明され、特許請求され得る。
【００１５】
本明細書で説明される技術を通じて、付加的な特徴及び利点が実現される。他の実施形態及び態様は、本明細書で詳細に説明され、特許請求の範囲の態様の一部と見なされる。
【００１６】
１つ又は複数の態様が、本明細書の最後にある特許請求の範囲において、例として具体的に示され、明確に特許請求されている。上記及び他の目的、特徴、並びに利点は、添付図面と関連して用いられる以下の詳細な説明から明らかである。
【図面の簡単な説明】
【００１７】
【図１】本発明の１つ又は複数の態様を組み込み及び／又は用いるためのコンピューティング環境のコンピュータ・システム／サーバの一例を示す。
【図２】本発明の１つ又は複数の態様を組み込み及び／又は用いるためのコンピューティング環境の別の例を示す。
【図３】図２のメモリのさらなる詳細を示す。
【図４】本発明の態様による、キャッシュラインからレジスタにデータをロードするために、バイト・ローテータを用いる一例を示す。
【図５】本発明の態様による、キャッシュラインからレジスタにデータをロードするために、バイト・ローテータを用いることに関連したさらなる詳細の一例を示す。
【図６】本発明の態様による、符号値及び／又はゼロを複製するために、複製回路を用いる一例を示す。
【図７】本発明の態様による、複製回路のさらなる詳細を示す。
【図８】本発明の態様による、符号拡張及び／又はゼロ拡張を実施するための論理の一実施形態を示す。
【図９】本発明の態様による、符号拡張及び／又はゼロ拡張を実施するための論理の一実施形態を示す。
【図１０】クラウド・コンピューティング環境の一実施形態を示す。
【図１１】抽象化モデル層の一例を示す。
【発明を実施するための形態】
【００１８】
１つ又は複数の態様は、メモリ・ローテータを介して、符号及び／又はゼロ拡張ロードをメモリ・アクセス経路に統合することに関する。データが、メモリ（例えば、キャッシュ）から抽出され、ローテータを用いて、レジスタなどの記憶位置の適切な位置に配置される。例えば、データが、記憶位置においてアラインされ、データの最下位ユニット（例えば、最下位バイト）が、レジスタの事前に選択した位置（例えば、レジスタの最下位位置、これは、一例では、ビッグ・エンディアン（Big Endian）システムにおいては、８バイト・レジスタのバイト７である）にあるようにされる。その後、ローテータを用いて、レジスタの残りのバイトに、符号拡張又はゼロ拡張が行われる。
【００１９】
本発明の１つ又は複数の態様を組み込み及び／又は用いるためのコンピューティング環境の一実施形態が、図１を参照して説明される。一例において、コンピューティング環境１００は、多数の他の汎用又は専用コンピューティング・システム環境又は構成で動作可能な、少なくとも１つのコンピュータ・システム／サーバ１０２を含む。コンピュータ・システム／サーバ１０２と共に用いるのに好適であり得る周知のコンピューティング・システム、環境、及び／又は構成の例としては、これらに限定されるものではないが、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、手持ち式又はラップトップ型デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラム可能民生電子機器、ネットワークＰＣ、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、及び、上述のシステム又はデバイス等のいずれかを含む分散型クラウド・コンピューティング環境が含まれる。
【００２０】
コンピュータ・システム／サーバ１０２は、コンピュータ・システムによって実行される、プログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的な文脈で説明することができる。一般に、プログラム・モジュールは、特定のタスクを実行する又は特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、論理、データ構造などを含むことができる。
【００２１】
図１に示されるように、コンピュータ・システム／サーバ１０２は、汎用コンピューティング・デバイスの形で示される。コンピュータ・システム／サーバ１０２のコンポーネントは、これらに限定されるものではないが、１つ又は複数のプロセッサ又は処理ユニット１０６、システム・メモリ１０８、及びシステム・メモリ１０８を含む種々のシステム・コンポーネントをプロセッサ１０６に結合するバス１１０を含むことができる。
【００２２】
一実施形態において、プロセッサ１０６は、インターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるＰｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ（IBM Corporationの商標）に基づいている。Ｐｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ（IBM Corporationの商標）の一実施形態は、その全体が引用により本明細書に組み入れられる非特許文献１に記載される。Ｐｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ（登録商標）は、米国ニューヨーク州アーモンク所在のインターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標である。本明細書で用いられる他の名称は、インターナショナル・ビジネス・マシーンズ・コーポレーション又は他の会社の登録商標、トレードマーク、又は製品名であり得る。
【００２３】
他の例において、プロセッサ１０６は、インターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（IBM Corporationの商標）などの他のアーキテクチャ、又はインターナショナル・ビジネス・マシーンズ・コーポレーション又は他の会社により提供される他のアーキテクチャに基づくことができる。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（IBM Corporationの商標）は、米国ニューヨーク州アーモンク所在のインターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標である。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（IBM Corporatioｎの商標）の一実施形態は、その全体が引用により本明細書に組み入れられる非特許文献２に記載される。
【００２４】
以下にさらに説明されるように、プロセッサ１０６は、一例において、データをメモリから、レジスタなどの記憶位置にロードするのに用いられるメモリ・ローテータ１６０を含む。
【００２５】
バス１１０は、メモリ・バス又はメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、及び種々のバス・アーキテクチャのいずれかを用いるプロセッサ又はローカル・バスを含む、幾つかのタイプのバス構造のうちのいずれかの１つ又は複数を表す。限定ではなく例としては、このようなアーキテクチャは、業界標準アーキテクチャ（Industry Standard Architecture、ＩＳＡ）バス、マイクロ・チャネル・アーキテクチャ（Micro Channel Architecture、ＭＣＡ）バス、Ｅｎｈａｎｃｅｄ  ＩＳＡ（ＥＩＳＡ）バス、Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ（ＶＥＳＡ）ローカル・バス、及びＰｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）バスを含む。
【００２６】
コンピュータ・システム／サーバ１０２は、典型的には、種々のコンピュータ・システム可読媒体を含む。このような媒体は、コンピュータ・システム／サーバ１０２がアクセス可能ないずれかの利用可能媒体とすることができ、揮発性媒体及び不揮発性媒体の両方と、取り外し可能媒体及び取り外し不能媒体の両方とを含む。
【００２７】
システム・メモリ１０８は、ランダム・アクセス・メモリ（ＲＡＭ）１１２及び／又はキャッシュ・メモリ１１４など、揮発性メモリの形のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム／サーバ１０２は、他の取り外し可能／取り外し不能、揮発性／不揮発性のコンピュータ・システム・ストレージ媒体をさらに含むことができる。単なる例として、取り外し不能の不揮発性磁気媒体（図示されておらず、典型的には「ハード・ドライブ」と呼ばれる）との間の読み出し及び書き込みのために、ストレージ・システム１１６を設けることができる。図示されていないが、取り外し可能な不揮発性磁気ディスク（例えば、「フロッピー・ディスク」）との間の読み出し及び書き込みのための磁気ディスク・ドライブと、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ又は他の光媒体などの取り外し可能な不揮発性光ディスクとの間の読み出し及び書き込みのための光ディスク・ドライブとを設けることができる。このような例においては、それぞれを、１つ又は複数のデータ媒体インターフェースによってバス１１０に接続することができる。以下でさらに示され説明されるように、メモリ１０８は、本発明の実施形態の機能を実行するように構成されたプログラム・モジュールの組（例えば、少なくとも１つ）を有する少なくとも１つのプログラム製品を含むことができる。
【００２８】
限定ではなく例として、メモリ１０８内に、プログラム・モジュール１２２の組（少なくとも１つ）を有するプログラム／ユーティリティ１２０、並びにオペレーティング・システム、１つ又は複数のアプリケーション・プログラム、他のプログラム・モジュール、及びプログラム・データを格納することができる。オペレーティング・システム、１つ又は複数のアプリケーション・プログラム、他のプログラム・モジュール、及びプログラム・データ、又はそれらの何らかの組み合わせの各々は、ネットワーキング環境の実装形態を含むことができる。プログラム・モジュール１２２は、一般に、本明細書で説明される本発明の実施形態の機能及び／又は方法を実行する。
【００２９】
コンピュータ・システム／サーバ１０２は、キーボード、ポインティング・デバイス、ディスプレイ１３２等のような１つ又は複数の外部デバイス１３０；ユーザがコンピュータ・システム／サーバ１０２と対話することを可能にする１つ又は複数のデバイス；及び／又はコンピュータ・システム／サーバ１０２が１つ又は複数の他のコンピューティング・デバイスと通信することを可能にするいずれかのデバイス（例えば、ネットワーク・カード、モデムなど）と通信することもできる。このような通信は、入力／出力（Ｉ／Ｏ）インターフェース１４０を経由して行うことができる。さらにまた、コンピュータ・システム／サーバ１０２は、ネットワーク・アダプタ１５０を介して、ローカル・エリア・ネットワーク（ＬＡＮ）、汎用広域ネットワーク（ＷＡＮ）、及び／又はパブリック・ネットワーク（例えば、インターネット）などの１つ又は複数のネットワークと通信することもできる。示されるように、ネットワーク・アダプタ１５０は、バス１１０を介して、コンピュータ・システム／サーバ１０２の他のコンポーネントと通信する。図示されないが、コンピュータ・システム／サーバ１０２と共に他のハードウェア及び／又はソフトウェア・コンポーネントを使用できることを理解されたい。例としては、これらに限定されるものではないが、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部のディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、及びデータ・アーカイブ・ストレージ・システムなどが含まれる。
【００３０】
１つ又は複数の態様を組み込み、使用するためのコンピューティング環境の別の実施形態が、図２を参照して説明される。この例において、コンピューティング環境２００は、例えば１つ又は複数のバス２０８及び／又は他の接続を介して互いに結合された、例えば、ネイティブ中央演算処理ユニット２０２、メモリ２０４、並びに１つ又は複数の入力／出力デバイス及び／又はインターフェース２０６を含む。例として、コンピューティング環境２００は、ニューヨーク州アーモンク所在のインターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるＰｏｗｅｒＰＣ（IBM Corporationの商標）プロセッサ、ｚＳｅｒｉｅｓ（IBM Corporationの商標）サーバ、又はｐＳｅｒｉｅｓ（IBM Corporatioｎの商標）サーバ、及びカリフォルニア州Ｐａｌｏ  Ａｌｔｏ所在のＨｅｗｌｅｔｔ  Ｐａｃｋａｒｄ  Ｃｏ．により提供されるＩｎｔｅｌ  Ｉｔａｎｉｕｍ  ＩＩプロセッサを伴うＨＰ  Ｓｕｐｅｒｄｏｍｅ、及び／又はインターナショナル・ビジネス・マシーンズ・コーポレーション、Ｈｅｗｌｅｔｔ  Ｐａｃｋａｒｄ、Ｉｎｔｅｌ、Ｏｒａｃｌｅ、又はその他により提供されるアーキテクチャに基づいた他のマシンを含むことができる。
【００３１】
ネイティブ中央演算処理ユニット２０２は、環境内での処理の際に用いられる、１つ又は複数の汎用レジスタ及び／又は１つ又は複数の専用レジスタなどの１つ又は複数のネイティブ・レジスタ２１０を含む。これらのレジスタは、任意の特定の時点における環境の状態を表す情報を含む。
【００３２】
さらに、ネイティブ中央演算処理ユニット２０２は、メモリ２０４内に格納される命令及びコードを実行する。１つの特定の例において、中央演算処理ユニットは、メモリ２０４内に格納されるエミュレータ・コード２１２を実行する。このコードにより、１つのアーキテクチャにおいて構成された処理環境が、別のアーキテクチャをエミュレートすることが可能になる。例えば、エミュレータ・コード２１２により、ｚＳｅｒｉｅｓ（IBM Corporationの商標）サーバ、ｐＳｅｒｉｅｓ（IBM Corporationの商標）サーバ、ＨＰ  Ｓｕｐｅｒｄｏｍｅサーバ又は他のものなどの、Ｐｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ（IBM Corporationの商標）以外のアーキテクチャに基づいたマシンが、Ｐｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ（IBM Corporationの商標）をエミュレートし、Ｐｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ（IBM Corporationの商標）に基づいて開発されたソフトウェア及び命令を実行することが可能になる。さらに別の例において、エミュレータ・コード２１２により、ＰｏｗｅｒＰＣ（IBM Corporationの商標）プロセッサ、ｐＳｅｒｉｅｓ（IBM Corporationの商標）サーバ、ＨＰ  Ｓｕｐｅｒｄｏｍｅサーバ又は他のものなどの、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（IBM Corporationの商標）以外のアーキテクチャに基づいたマシンが、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（IBM Corporationの商標）をエミュレートし、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（IBM Corporationの商標）に基づいて開発されたソフトウェア及び命令を実行することが可能になる。他のアーキテクチャをエミュレートすることもできる。
【００３３】
エミュレータ・コード２１２に関する更なる詳細が、図３を参照して説明される。ゲスト命令２５０が、ネイティブＣＰＵ２０２のもの以外のアーキテクチャにおいて実行されるように開発されたソフトウェア命令（例えば、マシン命令）を含む。例えば、ゲスト命令２５０は、ＰｏｗｅｒＰＣ（IBM Corporationの商標）プロセッサ又はｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（IBM Corporationの商標）プロセッサ１０２上で実行されるように設計されるが、代わりに、例えばＩｎｔｅｌ  Ｉｔａｎｉｕｍ  ＩＩプロセッサとすることができるネイティブＣＰＵ２０２上でエミュレートされることもある。一例において、エミュレータ・コード２１２は、メモリ２０４から１つ又は複数のゲスト命令２５０を取得し、取得された命令に対してローカル・バッファリングを随意的に提供するための命令フェッチ・ユニット２５２を含む。エミュレータ・コード２１２また、取得されたゲスト命令のタイプを判断し、ゲスト命令を１つ又は複数の対応するネイティブ命令２５６に変換するための命令変換ルーチン２５４も含む。この変換は、例えば、ゲスト命令により実施される機能を識別することと、その機能を実施するためのネイティブ命令を選択することとを含む。
【００３４】
さらに、エミュレータ・コード２１２は、ネイティブ命令を実行させるためのエミュレーション制御ルーチン２６０を含む。エミュレーション制御ルーチン２６０は、ネイティブＣＰＵ２０２に、１つ又は複数の以前に取得されたゲスト命令をエミュレートするネイティブ命令のルーチンを実行させ、こうした実行の最後に、制御を命令フェッチ・ルーチンに戻して、次のゲスト命令又はゲスト命令のグループの取得をエミュレートすることができる。ネイティブ命令２５６の実行は、メモリ２０４からレジスタ内にデータをロードすること、データをレジスタから再びメモリに格納すること、又は変換ルーチンによって求められるような何らかのタイプの算術演算又は論理演算を実施することを含むことができる。
【００３５】
各ルーチンは、例えば、メモリ内に格納され、ネイティブ中央演算処理ユニット２０２によって実行される、ソフトウェアで実装される。他の例において、１つ又は複数のルーチン又は演算は、ファームウェア、ハードウェア、ソフトウェア、又はそれらの幾つかの組み合わせで実装される。エミュレートされるプロセッサのレジスタは、ネイティブＣＰＵのレジスタ２１０又はメモリ２０４内の記憶位置を使用して、エミュレートすることができる。実施形態において、ゲスト命令２５０、ネイティブ命令２５６、及びエミュレータ・コード２１２は、同一のメモリ内に存在してもよく、又は異なるメモリ・デバイスの間に分散されてもよい。
【００３６】
本明細書で用いられるファームウェアとは、例えば、プロセッサのマイクロコード、ミリコード、及び／又はマクロコードを含む。ファームウェアは、例えば、上位レベルのマシン・コードの実装に用いられるハードウェア・レベルの命令及び／又はデータ構造体を含む。一実施形態において、ファームウェアは、例えば、典型的には、信頼できるソフトウェアを含むマイクロコードとして供給される専用コード、又は基礎をなすハードウェアに特有のマイクロコードを含み、システム・ハードウェアへのオペレーティング・システムのアクセスを制御する。
【００３７】
一例において、取得され、変換され、実行されるゲスト命令２５０は、本明細書で説明される１つの命令である。１つのアーキテクチャ（例えば、Ｐｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ（IBM Corporationの商標）又はｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（IBM Corporationの商標））のものであるこの命令が、メモリからフェッチされ、変換され、別のアーキテクチャ（例えば、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（IBM Corporationの商標）、Ｐｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ（IBM Corporationの商標）、Ｉｎｔｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅなど）のネイティブ命令２５６のシーケンスとして表される。次いで、これらのネイティブ命令が実行される。
【００３８】
プロセッサは、多くのタイプの命令を実行して、種々の動作を実施する。１つのタイプの命令は、データをメモリから取り出し、これを別の位置に配置する、ロード命令である。特定の例において、ロード命令は、キャッシュラインから、特定のサイズ（例えば、バイト、ハーフバイト、ワード、ダブルワード等）のデータ要素を読み出し、そのデータ要素を、選択されたサイズ（例えば、８バイト）のレジスタに格納するために用いられる。各データ要素は、複数のデータ・ユニットを含み、データ・ユニットの数は、データ要素のサイズ及び各データ・ユニットのサイズによって決まる。一例において、各データ・ユニットはバイト（例えば、ビット０−７）であり、従って、バイト・サイズのデータ要素は１バイトを有し、ハーフワードのデータ要素は２バイト等を有する。データ要素をレジスタに格納することは、データ要素のデータ・ユニット（すなわち、データ・ユニットの値）をレジスタの正しい位置に格納することを含む。例えば、データ要素の最下位バイトが、レジスタの最下位バイトに配置される等である。データ要素の最下位バイトは、アーキテクチャによって決まる。例えば、ビッグ・エンディア・アーキテクチャにおいては、メモリ内のデータ要素の右端バイトが最下位バイトであり、かつレジスタ内の右端バイト（例えば、バイト７）に対応し、リトル・エンディアン（Little Endian）アーキテクチャにおいては、メモリ内のデータ要素の左端バイトが最下位バイトであり、かつレジスタ内の右端バイト（例えば、バイト０）に対応する。
【００３９】
一実施形態において、データをメモリから取得し、適切にアラインされたデータを、レジスタなどの記憶位置に格納するために、メモリ・ローテータ（本明細書では、バイト・ローテータ又はローテータとも呼ばれる）が用いられる。
【００４０】
本発明の態様に従って用いられるメモリ・ローテータの一例が、図４を参照して説明される。この特定の例において、ローテータは、データ要素のバイト・サイズのデータ・ユニットを入力として受け取り、バイト（すなわち、バイトの値）を、レジスタなどの記憶位置内の選択した位置（例えば、バイト）に配置する。更に別の例において、ローテータは、バイト以外のサイズのデータ・ユニットをローテートすることができる。
【００４１】
一例において、バイト・ローテータ３００は、キャッシュライン３０４からデータ・バイト３０２を読み出し、データ・バイトをレジスタ３０６に格納する。特定的にはデータ・バイトは、１又は複数のデータ・バイトを含むデータ要素の１バイトである。ローテータは、データ要素のサイズ３０９、データ要素のメモリ内のアドレス３０８、及び格納されるデータ要素の特定のバイトに基づいて、データ・バイトをレジスタの特定の位置３１０に格納する。
【００４２】
例えば、図５を参照すると、データ要素が、０ｘ・・・０７（４００）の下位ビットを有するアドレスを有し、データ要素が、４バイト（４０２）のデータ・サイズを有すると仮定する。アドレス（例えば、０７）の下位ビット及びデータ・サイズ（例えば、４）が、バイト・ローテータ３００に入力される（４０４）。次に、バイト・ローテータ３００は、デコード論理を用いて、データの４バイトをレジスタ３０６の適切な位置３１０に配置する。特定の例として、データ要素の最下位バイト（例えば、メモリに格納された値の右端バイト、つまり、ビッグ・エンディアン・アーキテクチャにおける、上位アドレスを有するバイト）を、レジスタの最下位バイト（例えば、ビッグ・エンディアン・アーキテクチャにおける、例えばバイト７などの、レジスタの最終バイト）に配置する。例えば、データ要素の０と表記されたバイトは、レジスタのバイト７に配置され、データ要素の１と表記されたバイトは、レジスタのバイト６に配置され、データ要素の２と表記されたバイトは、レジスタのバイト５に配置され、データ要素の３と表記されたバイトは、レジスタのバイト４に配置される。
【００４３】
付加的に、本発明の態様によると、バイト・ローテータを用いて、データ要素の最上位バイト（例えば、この例ではバイト３）のコピーをレジスタの残りのバイトの各々に配置する。
【００４４】
上述のように、レジスタをロードするためにローテータにより用いられる論理の一実施形態が、以下のものを含む。：
Ｂｙｔｅ（８−ｉ）＝ｃａｃｈｅ＿ｂｙｔｅ（ｄａｔａｓｉｚｅ−ｉ＋ａｄｄｒｅｓｓ（ｌｏｗ＿ｏｒｄｅｒ＿ｂｉｔｓ））ｉｆ  ｉ≦ｄａｔａ  ｓｉｚｅ，ｅｌｓｅ、
Ｂｙｔｅ（８−ｉ）＝ｃａｃｈｅ＿ｂｙｔｅ（ａｄｄｒｅｓｓ（ｌｏｗ＿ｏｒｄｅｒ＿ｂｉｔｓ））ｉｆ  ｉ＞ｄａｔａ  ｓｉｚｅ。
特に、上記の例を用いて、
最初に、ｉｆ  ｉ≦１，ｔｈｅ  ｄａｔａ  ｓｉｚｅ＝４，ａｎｄ  ｔｈｅ  ａｄｄｒｅｓｓ  ｏｆ  ｌｏｗ＿ｏｒｄｅｒ＿ｂｉｔｓ＝７，
ｔｈｅｎ：
１≦４であるので，Ｂｙｔｅ（８−１＝７）＝ｃａｃｈｅ＿ｂｙｔｅ（４−１＋７＝１０），よって、
レジスタのバイト７に、キャッシュラインのアドレス１０（ｈｅｘ  ａ）におけるバイトがロードされる。
同様に、ｉｆ  ｉ＝２，ｔｈｅｎ：
２≦４であるので，Ｂｙｔｅ（８−２＝６）＝ｃａｃｈｅ＿ｂｙｔｅ（４−２＋７＝９），よって、
レジスタのバイト６に、キャッシュラインのアドレス９におけるバイトがロードされる。
さらに、ｉｆ  ｉ＝３，ｔｈｅｎ：
３≦４であるので、Ｂｙｔｅ（８−３＝５）＝ｃａｃｈｅ＿ｂｙｔｅ（４−３＋７＝８），よって、
レジスタのバイト５に、キャッシュラインのアドレス８におけるバイトがロードされる。
さらに、ｉｆ  ｉ＝４，ｔｈｅｎ：
４≦４であるので、Ｂｙｔｅ（８−４＝４）＝ｃａｃｈｅ＿ｂｙｔｅ（４−４＋７＝７），よって、
レジスタのバイト４に、キャッシュラインのアドレス７におけるバイトがロードされる。
さらに、ｉｆ  ｉ＝５，ｔｈｅｎ：
５＞４であるので、Ｂｙｔｅ（８−５＝３）＝ｃａｃｈｅ＿ｂｙｔｅ（７），
よって、
レジスタのバイト３に、キャッシュラインのアドレス７におけるバイトがロードされる。
【００４５】
同様に、ｉがデータ・サイズより大きい（又はこれに等しい）とき、レジスタのバイトには、この例ではアドレス７におけるバイトである、データ要素の最上位バイトがロードされるので、バイト２、１及び０には、アドレス７のバイトがロードされる。従って、バイト・ローテータを用いて、適切な位置においてレジスタをロードし、かつ最上位バイトをレジスタの各残りのバイトに格納し、データ要素を受け取らないレジスタの残りの各位置に符号バイトを拡張する。
【００４６】
上記のローテーションは、次のように、レジスタ内で図示される。：
ロードされた符号付きバイト      ：ＭＭＭＭＭＭＭＭ
ロードされた符号付きハーフワード：ＭＭＭＭＭＭＭＢ
ロードされた符号付きワード      ：ＭＭＭＭＭＢＢＢ
【００４７】
上記の論理は、以下のように一般化することができる（例示的なビッグ・エンディアンの実施形態の場合）。
ｉ＝１乃至データ・サイズについて：、レジスタの位置（Ｘ−ｉ）＝キャッシュ（データ・サイズ−ｉ＋アドレス）、及び
ｉ＝（データ・サイズ＋１）乃至位置の数について：Ｘはレジスタ内の位置の数であり、レジスタは位置０乃至位置Ｘ−ｉを含むものとして、レジスタの位置（Ｘ−ｉ）＝キャッシュ（アドレス）。
【００４８】
従って、本明細書に説明されるように、ローテータを用いて、キャッシュから符号なしデータがロードされた１つ又は複数の位置を除いて、符号付きデータ・ユニット（例えば、バイト）がレジスタの各位置に格納される。
【００４９】
別の実施形態において、同じ論理を他のバイト順（byte ordering）に適用することができる。例えば、最下位バイトがレジスタの右端側のバイト０である、リトル・エンディアン・データについての一実施形態において、最小アドレスにおけるメモリ内のワードの最下位バイト（すなわち、メモリ内に格納される値の左端バイト、つまり、リトル・エンディアン・アーキテクチャにおける、最下位アドレスを有するバイト）が、レジスタの最下位バイトに配置される場合、ローテータにより、以下の論理を実施することができる。：
ｉ＝１乃至前記データ・サイズについて、レジスタの位置（ｉ−１）＝キャッシュ（アドレス＋ｉ−１）、及び
ｉ＝（データ・サイズ＋１）乃至位置の数について：Ｘはレジスタ内の位置の数であり、かつレジスタは位置０乃至位置Ｘ−１を含むものとして、レジスタの位置（ｉ−１）＝キャッシュ（アドレス＋データ・サイズ−１）。
【００５０】
本明細書での教示に従って他のバイト順スキームのためのデータをアラインするさらに他の実施形態が考えられる。
【００５１】
単一の実装において複数のバイト・エンディアン順スキームを処理することに向けられる一実施形態において、ローテータは、バイト順制御入力の制御下で、複数のバイト順について、データ・アラインメントの書式設定及び最上位バイトの複製を実施するように適合させることができる。１つ又は複数の実施形態において、第１のデータ順（data order）と第２のデータ順との間のモードスイッチ選択、第１のデータ順と第２のデータ順との間の命令選択、又は２つの組み合わせにより、制御入力を設定することができる。Ｐｏｗｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ（IBM Corporationの商標）による一実施形態において、データ順制御は、第１の順序と第２の順序との間で選択するマシン状態レジスタの「ＬＥ」制御ビットに対応する。一実施形態において、アーキテクチャが、符号拡張バイト反転命令をサポートするとき、セレクタは、バイト反転命令についてのインジケータに基づくことができる。さらに別の実施形態において、セレクタは、マシン状態レジスタの「ＬＥ」制御ビットとバイト反転命令についてのインジケータとの組み合わせに基づいて組み合わせることができる。他の可能性も存在する。
【００５２】
１つ又は複数の実施形態によると、バイト順スキーム及びそうしたスキームを指し示すために用いられる制御に関係なく、１つより多いスキームがサポートされるとき、最上位ビット（又は、他の選択されたビット）を含む指定されたメモリ・データの最上位バイト（又は、他の選択されたデータ・ユニット）が、メモリ・データのロードされたバイトに直接対応しない少なくとも１つのバイト位置に複製される。
【００５３】
次に、更に別の実施形態において、選択されたデータ・ユニット（例えば、最上位のデータ・ユニット）を複製することに加えて、レジスタ（例えば、この例では、バイト０−３）の複製された最上位データ・ユニット（又は、他の選択されたデータ・ユニット）の各々の符号値が、各バイト内に複製される。
【００５４】
一例において、データ・ユニット（例えば、バイト）内の複製は、その例を図６に示す複製回路を用いて行われる。図６に示されるように、一例において、レジスタの各位置は、最下位バイトを除いて、複製回路５００に結合される。つまり、この例では、さらなる処理又はレジスタ・ファイルへの格納のために使用される前に、ローテータの結果をキャプチャするレジスタのバイトの出力は、（それが最下位バイトである場合）パススルー・バッファ５０２又は複製回路５００のいずれかに入力される。複製回路５００のさらなる詳細は、図７を参照して説明される。
【００５５】
一例において、図７を参照すると、複製回路５００は、複製回路に結合されたレジスタ・バイトの各ビットについてのサブ・コンポーネント６００を含む。サブ・コンポーネントは、バイトの第１のビットのためのバッファ６０２と、バイトの残りのビットの各々のためのマルチプレクサ６０４とを含む。バッファ６０２は、単に、入力されたデータ・ビットを渡し、マルチプレクサは、マルチプレクサの選択制御に応じて、入力されたデータ・ビットの値又は符号ビットの値を選択する。従って、複製回路の出力は、一例では、複製された符号値である。
【００５６】
しかしながら、更に別の実施形態においては、随意的に、バイトをゼロにするのに用いることができる、複数の付加的なマルチプレクサ６０６が提供される。つまり、マルチプレクサ／バッファの第１の層の出力は、複製された符号とすることができるが、その出力は、随意的に、マルチプレクサ６０６の別の層に入力することができ、バイトがゼロで埋められる場合、複製された符号又はゼロの間で選択することができる。
【００５７】
さらに、当業者であれば、例えば、１つの例示的な実施形態においては、ゼロ化（zeroing）マルチプレクサの代わりにＡＮＤゲートを用いて、別の例示的な実施形態においては、ゼロ化マルチプレクサの代わりにＮＡＮＤゲートなどを用いて、同様の論理関数を達成する他の回路を設計する方法を理解するであろう。さらに他の実施形態において、複数の論理関数を組み合わせて単一の論理関数にすることができ、又は論理関数に影響を与えることなく、処理ステップのシーケンスを順序付けることができる。この回路の適用可能性を制限することなく適合できる種々の論理変換ステップは、当業者には既知である。
【００５８】
本明細書に説明されるように、キャッシュからデータがロードされていないレジスタ内の位置において符号値又はゼロを拡張するのを容易にする符号及び／又はゼロ拡張機能も提供される。一実施形態において、複製が、ロード／ストア・ユニットからレジスタ・ファイルへのビットの伝送論理に統合される。別の実施形態において、複製が、レジスタ・ファイルを含むユニットにおけるデータ受信論理に統合される。別の実施形態においては、論理が、レジスタ・ファイルのビット書き込み論理に統合される。さらに別の実施形態において、少なくとも１つの信号が、値と共にレジスタ・ファイルに格納され、最終符号ビットの複製、又はその一部が、レジスタ・ファイル読み込み論理又はオペランド・マルチプレクサにおいて実施される。
【００５９】
一実施形態において、特定のデータ・ユニットについて、符号ビットが複製されるかどうかを判断するための制御は、位置及びデータ・タイプ・サイズによって決まる。従って、バイトがロードされたバイトに対応する場合、ロードされたバイトは直接渡される。逆に、バイトが複製された最上位バイトを含む場合、その最上位バイトの最上位ビット（すなわち、符号ビット）を、バイト内の全てのビット位置に複製することができる、他のデータ・サイズについても同様である。
【００６０】
この論理は、以下のように一般化することができる（例えば、ビッグ・エンディアンの実施形態の場合）。
ｉ＝１乃至前記データ・サイズについて:レジスタの位置（Ｘ−ｉ）に結合された複製回路の動作＝バイトを渡す。
ｉ＝（データ・サイズ＋１）乃至位置の数について:
レジスタの位置（Ｘ−ｉ）に結合された複製回路の動作＝最上位ビットを対象バイトの全てのビットに複製する。
【００６１】
ゼロ及び符号拡張機能を伴うロードが、例えば図７の回路などの複製回路によりサポートされる場合、それぞれの複製回路により実施される動作は、次のように求めることができる。
ｉ＝１乃至データ・サイズについて：レジスタの位置（Ｘ−ｉ）に結合された複製回路の動作＝バイトを渡す。
ｉ＝（データ・サイズ＋１）乃至位置の数について:
符号拡張ロードが行われる場合、レジスタの位置（Ｘ−ｉ）に結合された複製回路の動作＝最上位ビットを対象バイトの全てのビットに複製し、他の場合には、ゼロ拡張ロードが行われ、レジスタの位置（Ｘ−ｉ）に結合された複製回路の動作＝全てのビットをゼロ化する。
【００６２】
代替的なデータ順（例えば、リトル・エンディアン・データ順）の特定のものに従って、ビット及びバイト位置の数を調整することにより、他のバイト順について、及び／又はデータ・ユニットの他のサイズについて、同様の関数を実施することができる。
【００６３】
符号及び／又はゼロ・ビットを拡張するための論理の一実施形態が、図８−図９を参照して説明される。
【００６４】
図８を参照すると、最初に、一態様において、ローテータ（ローテータ３００など）が、メモリ内のデータのアドレス及びデータ要素のデータ・サイズを取得する（ステップ７００）。アドレスは、例えば、メモリ・アドレスの下位ビットである。メモリ・アドレスは、例えば、メモリ内のキャッシュラインにアクセスするために用いられ、データ要素のアドレスは、キャッシュライン内のデータ要素を特定するために用いられる。
【００６５】
ローテータは、アドレス及びデータ・サイズに基づいて、データ要素を、所定数の位置（例えば、バイト位置）を有する記憶位置（例えば、レジスタ）に格納する（ステップ７０２）。データ要素は、１つ又は複数のデータ・ユニット（例えば、１つ又は複数のバイト）を含み、１つ又は複数のデータ・ユニットは、１つ又は複数のデータ・ユニットのうちの選択されたデータ・ユニットを受け取るべき記憶位置内の所定の位置（例えば、最下位バイト）に基づいて記憶位置の１つ又は複数の位置内に正しくアラインされる（ステップ７０４）。
【００６６】
一実施形態において、格納することは、１つ又は複数のデータ・ユニットをレジスタに格納するための論理を用いることを含む（ステップ７０６）。一例において、論理は、
ｉ＝１乃至データ・サイズについて：
Ｘはレジスタ内の位置の数であり、レジスタは位置０乃至位置Ｘ−１を含むものとして、レジスタの位置（Ｘ−ｉ）内に、（データ・サイズ−ｉ＋アドレス）によって指定される求められたアドレスにおいてメモリから取得された１つ又は複数のデータ・ユニットのうちの１つのデータ・ユニットの値を格納する。
【００６７】
付加的に、ローテータは、１つ又は複数のデータ・ユニットのうちの選択されたデータ・ユニット（例えば、最上位バイト）の値を、記憶位置の１つ又は複数の他の位置に複製する（ステップ７２０）（図９）。一実施形態において、複製することは、複製することを実施するための論理を用いることを含む（ステップ７２２）。論理は、例えば、
ｉ＝（データ・サイズ＋１）乃至位置の数について：
Ｘはレジスタ内の位置の数であり、レジスタは位置０乃至位置Ｘ−１を含むものとして、レジスタの位置（Ｘ−ｉ）内に、アドレスにおいてメモリから取得された１つ又は複数のデータ・ユニットのうちの１つのデータ・ユニットの値を格納する。
【００６８】
さらに、一態様において、位置の複数のビットのうちの１ビットの符号値を、位置の複数のビットのうちの他のビットに複製する（ステップ７２６）。１つ又は複数の他の位置の残りの位置において、符号値の複製を繰り返す（ステップ７２８）。さらに別の態様において、ゼロ値を位置の複数のビットに複製する（ステップ７３０）。
【００６９】
本明細書で詳細に説明されるのは、ローテータを用いて、データ要素のデータ・ユニット（例えば、バイト）を記憶位置（例えば、レジスタ）に正しく配置し、データ・ユニットが正しくアラインされる（例えば、最下位バイトがレジスタの特定の位置（例えば、ビッグ・エンディアンにおけるバイト７又はリトル・エンディアンにおけるバイト０）にある）ようにする能力である。一実施形態において、ローテーション論理は、メモリ内のデータ要素のアドレス、及びデータ要素のデータ・サイズに基づいている。さらに、ローテーション論理は、命令により指定されるアクセスの性質に基づいた符号及び／又はゼロ拡張を含む。
【００７０】
１つ又は複数の態様は、クラウド・コンピューティングに関連し得る。
この開示は、クラウド・コンピューティングについての詳細な説明を含むが、本明細書で挙げられる教示の実装はクラウド・コンピューティング環境に限定されないことが、前もって理解される。それどころか、本発明の実施形態は、現在既知の又は後に開発される他のいずれかのタイプのコンピューティング環境ともに実装することが可能である。
【００７１】
クラウド・コンピューティングは、最小限の管理努力又はサービス・プロバイダとの対話で迅速に供給及び解放することができる構成変更可能なコンピューティング・リソース（例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、及びサービス）の共有プールに対するオンデマンドの便利なネットワーク・アクセスを可能にするためのサービス配信のモデルである。このクラウド・モデルは、少なくとも５つの特徴、少なくとも３つのサービス・モデル、及び少なくとも４つの展開モデルを含むことができる。
【００７２】
特徴は、以下の通りである。
・オンデマンドのセルフサービス：クラウド・コンシューマは、サーバ時間及びネットワーク・ストレージといったコンピューティング能力を、必要に応じて、人間がサービスのプロバイダとやりとりする必要なく自動的に、一方的に供給することができる。
・広範なネットワーク・アクセス：能力は、ネットワーク上で利用可能であり、異種のシン又はシック・クライアント・プラットフォーム（例えば、携帯電話、ラップトップ、及びＰＤＡ）による使用を促進する標準的な機構を通じてアクセスされる。
・リソースのプール化：プロバイダのコンピューティング・リソースは、マルチ・テナント・モデルを用いて、複数のコンシューマにサービスを提供するようにプールされ、異なる物理及び仮想リソースは、要求に応じて動的に割り当て及び再割り当てされる。コンシューマは、一般に、提供されるリソースの正確な場所に関する制御又は知識を有していないが、高いレベルの抽象概念（例えば、国、州、又はデータセンタ）で場所を指定できる場合があるという点で、場所独立ということができる。
・迅速な弾力性：能力は、迅速且つ弾力的に、場合によっては自動的に供給して素早くスケール・アウトし、迅速に解放して素早くスケール・インすることができる。コンシューマにとっては、供給するために利用可能な能力は、無制限に見えることが多く、いつでもどんな量でも購入することができる。
・計測されるサービス：クラウド・システムは、サービスのタイプ（例えば、ストレージ、処理、帯域幅、及びアクティブなユーザ・アカウント）に適した何らかの抽象化のレベルで計量能力を活用することによって、リソース使用を自動的に制御及び最適化する。リソース使用は、利用されるサービスのプロバイダとコンシューマの両方にとって透明性をもたらすように、監視し、制御し、報告することができる。
【００７３】
サービス・モデルは以下の通りである。
・サービスとしてのソフトウェア（ＳａａＳ）：コンシューマに提供される能力は、クラウド・インフラストラクチャ上で動作しているプロバイダのアプリケーションを使用することである。アプリケーションは、ウェブ・ブラウザなどのシン・クライアント・インターフェース（例えば、ウェブ・ベースの電子メール）を通じて、種々のクライアント・デバイスからアクセス可能である。限定されたユーザ特有のアプリケーション構成設定を可能な例外として、コンシューマは、ネットワーク、サーバ、オペレーティング・システム、ストレージ、又は個々のアプリケーション能力をも含む基盤となるクラウド・インフラストラクチャを管理又は制御しない。
・サービスとしてのプラットフォーム（ＰａａＳ）：コンシューマに提供される能力は、プロバイダによってサポートされるプログラミング言語及びツールを用いて作成される、コンシューマが作成又は獲得したアプリケーションを、クラウド・インフラストラクチャ上に展開することである。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、又はストレージを含む基盤となるクラウド・インフラストラクチャを管理又は制御しないが、展開されたアプリケーション、及び場合によってはアプリケーション・ホスティング環境構成を、制御する。
・サービスとしてのインフラストラクチャ（ＩａａＳ）：コンシューマに提供される能力は、処理、ストレージ、ネットワーク、及び他の基本的なコンピューティング・リソースを供給することであり、ここで、コンシューマは、オペレーティング・システム及びアプリケーションを含むことができる任意のソフトウェアを展開して動作させることができる。コンシューマは、基盤となるクラウド・インフラストラクチャを管理及び制御しないが、オペレーティング・システム、ストレージ、展開されたアプリケーション、及び場合によっては選択されたネットワーク・コンポーネント（例えば、ホストのファイアウォール）の限定的な制御を、制御する。
【００７４】
展開モデルは以下の通りである。
・プライベート・クラウド：クラウド・インフラストラクチャは、ある組織のためだけに操作される。クラウド・インフラストラクチャは、その組織又は第三者によって管理することができ、オンプレミス又はオフプレミスで存在することができる。
・コミュニティ・クラウド：クラウド・インフラストラクチャは、幾つかの組織によって共有され、関心事項（例えば、ミッション、セキュリティ要件、ポリシー、及びコンプライアン上の考慮事項）を共有する特定のコミュニティをサポートする。クラウド・インフラストラクチャは、それらの組織又は第三者によって管理することができ、オンプレミス又はオフプレミスで存在することができる。
・パブリック・クラウド：クラウド・インフラストラクチャは、一般公衆又は大規模な業界グループが利用できるようにされており、クラウド・サービスを販売する組織によって所有される。
・ハイブリッド・クラウド：クラウド・インフラストラクチャは、固有のエンティティを残しているが、データ及びアプリケーションの移行性を可能にする標準化された又は専用の技術（例えば、クラウド間の負荷分散のためのクラウド・バースティング）によって結び付けられている２つ又はそれより多いクラウド（プライベート、コミュニティ、又はパブリック）の組み合わせである。
【００７５】
クラウド・コンピューティング環境は、サービス提供を中心としており、無国籍性、低い結合度、モジュール性、及び意味的相互運用性に焦点を合わせている。クラウド・コンピューティングの中心は、相互接続されたノードのネットワークを含むインフラストラクチャである。
【００７６】
クラウド・コンピューティング・ノードの例の概略図が、図１に示される。例えば、クラウド・コンピューティング・ノードは、好適なクラウド・コンピューティング・ノードの単なる一例であり、本明細書で説明される本発明の実施形態の使用又は機能の範囲に関していずれかの限定を示唆することを意図するものではない、コンピュータ・システム／サーバ１０２を含むことができる。いずれにせよ、クラウド・コンピューティング・ノードは、上述された機能のいずれかを実装及び／又は実施することができる。
【００７７】
ここで図１０を参照すると、例証的なクラウド・コンピューティング環境５０が示される。示されるように、クラウド・コンピューティング環境５０は、例えば携帯情報端末（ＰＤＡ）又は携帯電話５４Ａ、デスクトップ・コンピュータ５４Ｂ、ラップトップ・コンピュータ５４Ｃ、及び／又は自動車コンピュータ・システム５４Ｃなどといった、クラウド・コンシューマによって用いられるローカル・コンピューティング・デバイスが通信することができる、１つ又は複数のクラウド・コンピューティング・ノード１０を含む。ノード１０は、互いに通信することができる。これらは、上述のようなプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、若しくはハイブリッド・クラウド、又はこれらの組み合わせなどの１つ又は複数のネットワーク内で、物理的又は仮想的にグループ化することができる（図示せず）。これにより、クラウド・コンピューティング環境５０は、インフラストラクチャ、プラットフォーム、及び／又はソフトウェアを、クラウド・コンシューマがローカル・コンピューティング・デバイス上にリソースを保持する必要のないサービスとして、提供できるようになる。図１０に示されるコンピューティング・デバイス６５Ａ−Ｎのタイプは単なる例示であるように意図されており、コンピューティング・ノード１０及びクラウド・コンピューティング環境５０は、あらゆるタイプのネットワーク及び／又はネットワーク・アドレス指定可能な接続（例えば、ウェブ・ブラウザを用いて）上で、あらゆるタイプのコンピュータ化された装置と通信できることが理解される。
【００７８】
ここで図１１を参照すると、クラウド・コンピューティング環境５０（図１０）によって提供される機能抽象化層の組が示される。図１１に示されるコンポーネント、層、及び機能は単なる例示であるように意図されており、本発明の実施形態はそれらに限定されないことを予め理解されたい。示されるように、以下の層及び対応する機能が提供される。
【００７９】
ハードウェア及びソフトウェア層６０は、ハードウェア及びソフトウェアのコンポーネントを含む。ハードウェア・コンポーネントの例として、メインフレーム６１と、ＲＩＳＣ（縮小命令セット・コンピュータ）アーキテクチャ・ベースのサーバ６２と、サーバ６３と、ブレード・サーバ６４と、ストレージ・デバイス６５と、ネットワーク及びネットワーク・コンポーネント６６とが挙げられる。幾つかの実施形態において、ソフトウェア・コンポーネントとして、ネットワーク・アプリケーション・サーバ・ソフトウェア６７と、データベース・ソフトウェア６８とが挙げられる。
【００８０】
仮想化層７０は、仮想エンティティの以下の例、即ち、仮想サーバ７１、仮想ストレージ７２、仮想プライベート・ネットワークを含む仮想ネットワーク７３、仮想アプリケーション及びオペレーティング・システム７４、並びに仮想クライアント７５を提供することができる、抽象化層を提供する。
【００８１】
一例においては、管理層８０は、以下で説明される機能を提供することができる。リソース配備（provisioning）８１は、クラウド・コンピューティング環境内でタスクを行うのに利用されるコンピューティング・リソース及び他のリソースの動的な調達を提供する。計量及び価格設定８２は、クラウド・コンピューティング環境内でリソースが用いられる際のコスト追跡と、これらのリソースの消費にかかる課金又は請求とを提供する。１つの例においては、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含むことができる。セキュリティは、クラウド・コンシューマ及びタスクについての識別情報の検証と、データ及び他のリソースの保護とを提供する。ユーザ・ポータル８３は、コンシューマ及びシステム管理者のために、クラウド・コンピューティング環境へのアクセスを提供する。サービス・レベル管理８４は、必要なサービス・レベルが満たされるように、クラウド・コンピューティング・リソースの割り当て及び管理を提供する。サービス・レベル・アグリーメント（ＳＬＡ）プランニング及びフルフィルメントは、ＳＬＡによって将来の必要性が予測されるクラウド・コンピューティング・リソースの事前配置及び調達を提供する。
【００８２】
ワークロード層９０は、クラウド・コンピューティング環境を利用することができる機能の例を提供する。ワークロード層及びこの層から提供できる機能の例として、マッピング及びナビゲーション９１、ソフトウェア開発及びライフサイクル管理９２、仮想教室教育配信９３、データ分析処理９４、トランザクション処理９５、及び統合された符号及び／又はゼロ拡張処理９６が含まれる。
【００８３】
本発明の態様は、本発明の実施形態による方法、装置（システム）及びコンピュータ・プログラム製品のフローチャート図及び／又はブロック図を参照して以下で説明される。フローチャート図及び／又はブロック図の各ブロック、並びにフローチャート図及び／又はブロック図内のブロックの組み合わせは、コンピュータ・プログラム命令によって実装することができることが理解されるであろう。
【００８４】
これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサにより実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実装するための手段を生成するようにすることができる。これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスに特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実装する命令を含む製品を製造するようにすることもできる。
【００８５】
コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で、コンピュータ実装プロセスを生成するための一連の動作ステップを実施させて、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実装するためのプロセスを提供するようにさえることもできる。
【００８６】
図面内のフローチャート及びブロック図は、本発明の種々の実施形態による、システム、方法及びコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実装するための１つ又は複数の実行可能な命令を含む、モジュール、セグメント又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に記載された機能は、図面内に記された順序とは異なる順序で行われる場合があることにも留意すべきである。例えば、連続して図示された２つのブロックが、実際には実質的に同時に実行されることもあり、又はこれらのブロックは、関与する機能に応じて、ときには逆順で実行されることもある。ブロック図及び／又はフローチャート図の各ブロック、並びにブロック図及び／又はフローチャート図内のブロックの組み合わせは、指定された機能又は動作を実行する専用ハードウェア・ベースのシステム、又は専用ハードウェアとコンピュータ命令との組み合わせによって実装することができることにも留意されたい。
【００８７】
上記に加えて、１つ又は複数の態様は、顧客環境の管理を提供するサービス・プロバイダにより、供与し、提供し、配置し、管理し、サービスを行うことなどができる。例えば、サービス・プロバイダは、１又は複数の顧客に対して１つ又は複数の態様を実施するコンピュータ・コード及び／又はコンピュータ・インフラストラクチャを作成し、保持し、サポートすることなどができる。見返りとして、サービス・プロバイダは、例として、予約申し込み及び／又は報酬契約の下で顧客から支払いを受けることができる。付加的に又は代替的に、サービス・プロバイダは、１つ又は複数の第三者に対する広告コンテンツの販売から支払いを受けることができる。
【００８８】
一態様において、１つ又は複数の実施形態を実施するために、アプリケーションを配置することができる。一例として、アプリケーションの配置は、１つ又は複数の実施形態を実施するように動作可能なコンピュータ・インフラストラクチャを提供することを含む。
【００８９】
更に別の態様として、コンピュータ可読コードをコンピュータ・システムに統合することを含む、コンピュータ・インフラストラクチャを配置することが可能であり、そこでは、コードは、コンピューティング・システムと協働して、１つ又は複数の実施形態を実施することができる。
【００９０】
更に別の態様として、コンピュータ可読コードをコンピュータ・システムに統合することを含む、コンピュータ・インフラストラクチャを統合するためのプロセスを提供することができる。コンピュータ・システムは、コンピュータ可読媒体を含み、ここで、コンピュータ媒体は１つ又は複数の実施形態を含む。コードは、コンピュータ・システムと協働して、１つ又は複数の実施形態を実施することができる。
【００９１】
種々の実施形態が上述されたが、これらは例にすぎない。例えば、他のアーキテクチャのコンピューティング環境が、１つ又は複数の実施形態を組み込み、用いることが可能である。さらに、異なる命令、命令形式、命令フィールド、及び／又は命令の値を用いることができる。他の変形が可能である。
【００９２】
さらに、他のタイプのコンピューティング環境は、利益を得ることができ、それらを用いることができる。一例として、システム・バスを通してメモリ要素に直接的に又は間接的に結合された少なくとも２つのプロセッサを含む、プログラム・コードを格納及び／又は実行するのに適したデータ処理システムが使用可能である。メモリ要素は、例えば、プログラム・コードの実際の実行時に用いられるローカル・メモリと、大容量記憶装置と、実行時に大容量記憶装置からコードを取得しなければならない回数を減少させるために少なくとも幾つかのプログラム・コードの一時的なストレージを提供するキャッシュ・メモリとを含む。
【００９３】
入力／出力即ちＩ／Ｏデバイス（これらに限定されるものではないが、キーボード、ディスプレイ、ポインティング・デバイス、ＤＡＳＤ、テープ、ＣＤ、ＤＶＤ、サムドライブ、及び他のメモリ媒体等）は、直接的に、又は介在するＩ／Ｏコントローラを通して、システムに結合することができる。データ処理システムが、介在するプライベート・ネットワーク又は公衆ネットワークを通して、他のデータ処理システム又は遠隔プリンタ若しくはストレージ・デバイスに結合できるように、ネットワーク・アダプタをシステムに結合することもできる。モデム、ケーブル・モデム及びイーサネット・カードは、利用可能なタイプのネットワーク・アダプタのほんの数例にすぎない。
【００９４】
本明細書で用いられる用語は、特定の実施形態を説明するためのものにすぎず、本発明を限定することを意図したものではない。本明細書で用いられる場合、単数形「１つの（a）」、「１つの（an）」及び「その（the）」は、文脈が明らかにそうでないことを示さない限り、複数形も同様に含むことを意図したものである。「含む（comprise）」及び／又は「含んでいる（comprising）」という用語は、本明細書で用いられる場合、記述された特徴、整数、ステップ、操作、要素、及び／又はコンポーネントの存在を指定するが、１つ又は複数の他の特徴、整数、ステップ、操作、要素、コンポーネント、及び／又はこれらの群の存在又は付加を排除するものではないことがさらに理解されるであろう。
【００９５】
以下の特許請求の範囲における全ての「手段又はステップと機能との組み合わせ（ミーンズ又はステップ・プラス・ファンクション）」要素の対応する構造、材料、動作、及び均等物は、その機能を、明確に特許請求される他の特許請求された要素との組み合わせで実行するためのあらゆる構造、材料、又は動作を含むことが意図されている。本発明の説明は、例証及び説明を目的として提示されたものであり、網羅的であること又は本発明を開示された形態に限定することを意図したものではない。本発明の範囲及び趣旨から逸脱しない多くの修正及び変形が当業者には明らかとなるであろう。実施形態は、本発明の原理及び実際的用途を最も良く説明するために、そして、当業者が、企図した特定の用途に適した種々の修正を伴う種々の実施形態に関して本発明を理解できるように、選択され、説明された。
【符号の説明】
【００９６】
１００、２００：コンピューティング環境
１０２：コンピュータ・システム／サーバ
１０６：プロセッサ
１０８、２０４：システム・メモリ
１１０、２０８：バス
１６０：メモリ・ローテータ
２０２：ネイティブ中央演算処理ユニット
２１０：ネイティブ・レジスタ
２１２：エミュレータ・コード
２６０：エミュレーション制御ルーチン
３００：バイト・ローテータ
４００：データ要素
５００：複製回路
５０２、６０２：バッファ
６００：サブ・コンポーネント
６０４、６０６：マルチプレクサ
【図１】
2017097876.tif 000003
【図２】
2017097876.tif 000004
【図３】
2017097876.tif 000005
【図４】
2017097876.tif 000006
【図５】
2017097876.tif 000007
【図６】
2017097876.tif 000008
【図７】
2017097876.tif 000009
【図８】
2017097876.tif 000010
【図９】
2017097876.tif 000011
【図１０】
2017097876.tif 000012
【図１１】
2017097876.tif 000013