(57)【特許請求の範囲】
【請求項１】
色に関してインターリーブされた赤、緑および青（ＲＧＢ）データを、色に関して分離されたＲＧＢデータとして高速ローディングするためのシステムにおいて、
所定の処理ロジックに従ってシステムを制御する制御手段と、色に関してインターリーブされたＲＧＢデータを記憶するようになっているソース記憶要素と、複数の宛先記憶要素とを有し、
前記制御手段は、前記色に関してインターリーブされたＲＧＢデータからの第１カラーおよび第２カラーのデータの第１インスタンスを一度に２バイトずつ、前記ソース記憶要素から第１の２つの宛先記憶要素にロードし、
前記データの第１インスタンスを、第２の２つの宛先記憶要素にコピーし、データの第２インスタンスを生成し、
前記第１の２つの宛先記憶要素にロードされた第１インスタンスから、前記第２カラーのデータのインスタンスを除去し、前記第１の２つの宛先記憶要素の一方の前記第１カラーのデータのインスタンスを、該第１の２つの宛先記憶要素の他方にパックし、
前記第２の宛先記憶要素にコピーされた第２インスタンスから、前記第１カラーのデータのインスタンスを除去し、前記第２の２つの宛先記憶要素の一方の前記第２カラーのデータのインスタンスを、該第２の２つの宛先記憶要素の他方にパックすることを特徴とする、色に関してインターリーブされた赤、緑および青（ＲＧＢ）データを色に関して分離されたＲＧＢデータとして高速ロードするためのシステム。
【請求項２】
前記制御手段は、前記色に関してインターリーブされたＲＧＢデータからの前記第１カラーおよび第３カラーのデータのインスタンスを、一度に２バイトずつ前記ソース記憶要素から第３の２つの宛先記憶要素にロードし、前記第３の２つの宛先記憶要素から前記第１カラーのデータのインスタンスを除去し、前記第３カラーのデータのインスタンスを前記第３の宛先記憶要素のうちの１つにパックすることを特徴とする請求項１に記載のシステム。
【請求項３】
前記第３の２つの宛先記憶要素のうちの少なくとも１つは、前記第１の２つの宛先記憶要素および前記第２の２つの宛先記憶要素のうちから選択されたものであることを特徴とする請求項２記載のシステム。
【請求項４】
前記第１カラー、前記第２カラーおよび前記第３カラーは、それぞれ赤、緑および青であることを特徴とする請求項２または３に記載のシステム。
【請求項５】
前記制御手段は、マスキング動作を実行することにより、データの少なくとも一部を除去することを特徴とする請求項１〜４のいずれか１に記載のシステム。
【請求項６】
前記制御手段は、シフト動作を実行することにより、データの少なくとも一部を除去することを特徴とする請求項５記載のシステム。
【請求項７】
インターリーブされたＲＧＢデータを色に関して分離されたＲＧＢデータとしてソース記憶要素からＳＳＥレジスタに高速ローディングするための方法において、
所定の処理ロジックに従って制御を行う制御手段が、インターリーブされたＲＧＢデータからの第１カラーおよび第２カラーのデータの第１インスタンスを、一度に２バイトずつ前記ソース記憶要素からＳＳＥレジスタにロードするステップと、
前記第１カラーおよび前記第２カラーの前記データの第２インスタンスをＳＳＥレジスタで作成するステップと、
ＳＳＥレジスタの第１インスタンスから前記第２カラーのデータのインスタンスを除去するステップと、
前記第１インスタンスの第１カラーのデータのインスタンスを１つのＳＳＥレジスタにパックするステップと、
ＳＳＥレジスタの前記第２インスタンスから第１カラーのデータのインスタンスを除去するステップと、
前記第２インスタンスの第２カラーのデータのインスタンスを１つのＳＳＥレジスタにパックするステップとを有することを特徴とする、インターリーブされたＲＧＢデータを色に関して分離されたＲＧＢデータとしてＳＳＥレジスタに高速ローディングするための方法。
【請求項８】
前記制御手段が、インターリーブされたＲＧＢデータからの前記第２カラーおよび前記第３カラーのデータのインスタンスを前記ソース記憶要素からＳＳＥレジスタにロードするステップと、
ロードした前記第２カラー及び第２カラーのデータのインスタンスから、前記第２カラーのデータのインスタンスをＳＳＥレジスタから除去するステップと、
前記第３カラーのデータのインスタンスを１つのＳＳＥレジスタにパックするステップとを更に有することを特徴とする請求項７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プリントのために赤、緑および青（ＲＧＢ）画像を作成することに関し、特に色に関してインターリーブされたＲＧＢデータをプリント処理のために色に関して分離されたＲＧＢデータとしてStreaming Single Instruction、Multiple Data Extension（ストリーミング単一命令／マルチデータ拡張）（ＳＳＥと略称する）レジスタに高速ローディングするための方法およびシステムに関する。
【背景技術】
【０００２】
多くの画像、例えばデジタルカメラおよびスキャナーによって作成される画像は、ＲＧＢ色空間内で形成される。他方、プリンタは一般にシアン、マゼンタ、イエローおよびブラック（ＣＹＭＫ）色空間内のフルカラー画像をプリントするようになっている。したがって、ＲＧＢ色空間内で作成された画像をプリンタでプリントしたい場合、まず最初にＲＧＢ画像をＣＹＭＫ画像に変換しなければならない。この変換に付随して一般に行われる１つのステップは、色に関してインターリーブされたＲＧＢデータを、色に関して分離されたＲＧＢデータとしてＳＳＥレジスタにローディングすることである。
【０００３】
ＳＳＥの強化バージョン、ＳＳＥ２、ＳＳＥ３、ＳＳＳＥ３およびＳＳＥ４等のＳＳＥの強化バージョンを含むＳＳＥに準拠したプロセッサは、少なくとも８つの１６バイトＳＳＥレジスタを備え、これらレジスタはレジスタネームｘｍｍ０〜ｘｍｍ７のレジスタによって直接アドレス指定できる。ｘ８６アセンブリ言語でプログラムされたＳＳＥ命令は、色に関してインターリーブされたＲＧＢデータを色に関して分離されたＲＧＢデータとしてＳＳＥレジスタにロードするよう、これらプロセッサによって実行可能である。データが一旦ロードされると、マイクロプロセッサは、色に関して分離されたＲＧＢデータに対してパラレル演算を行うと共に、プリント時間を短縮するために、強力なＳＳＥ命令セットを実行する。
【０００４】
特許文献１には、コンパイル装置において、オブジェクトプログラムを実行したときに参照回数が多い外部変数から順に、他で使用されていないレジスタを割り当てるようにした技術が開示されている。
また、特許文献２では、複数の変数が連続するメモリ領域に配置され、それらのサイズの総和がレジスタサイズ以下の場合に、これら変数群の値を同一レジスタ上に一括してロードし、当該レジスタの値を一括して処理を行うようにしたコンパイル方法が開示されている。
【０００５】
さらに、特許文献３では、連続するｑ個のピクセルのデータを１回のアクセスで読み出し、各ピクセルの色要素を示すデータに分離したあと、色ごとのデータをピクセル順に配列することで面順次型の描画データを得るようにした画像処理装置およびその処理方法が開示されている。
【０００６】
さらに非特許文献１の「ＩＡ−３２インテル（登録商標） アーキテクチャ最適化 リファレンスマニュアル」では、ＳＳＥに対応したＳＩＭＤ整数命令によるデータ移動のコーディング手法を開示している。ここでは、レジスタ内のデータをパックしたりアンパックして配列し直す手法が説明されている。
【特許文献１】特開２０００−３３９１７１号公報
【特許文献２】特開２００３−１３１８８７号公報
【特許文献３】特開平１０−０２７１３０号公報
【非特許文献１】「ＩＡ−３２インテル（登録商標） アーキテクチャ最適化 リファレンスマニュアル」，2006年4月
【発明の開示】
【発明が解決しようとする課題】
【０００７】
不幸なことに、インターリーブされたＲＧＢデータを分離されたＲＧＢデータとしてＳＳＥレジスタにローディングする従来の方法は、インターリーブされたＲＧＢデータの構造のために面倒であり、大きな欠点があった。
従来のアルゴリズムは、まず赤データの個々のバイトをソースレジスタから１つ以上のＳＳＥレジスタにロードし、次に緑のデータの個々のバイトを１つ以上の異なるＳＳＥレジスタにロードし、次に青のデータの個々のバイトを１つ以上の異なるＳＳＥレジスタにロードする。このようなローディングアルゴリズムはロードされるデータの各バイトに対し別々のメモリレファレンス（参照）を必要とし、このことはＳＳＥレジスタにおけるその後のパラレル処理によって得られるスピードを少なくとも部分的に相殺するような程度まで、処理を減速してしまう。
【０００８】
本発明は、上述のごとき実情に鑑みてなされたもので、インターリーブされたＲＧＢデータをＳＳＥレジスタに高速にローディングできるようにしたシステムとその方法を提供することを目的とするものである。
【課題を解決するための手段】
【０００９】
本発明による第１の技術手段は、色に関してインターリーブされた赤、緑および青（ＲＧＢ）データを、色に関して分離されたＲＧＢデータとして高速ローディングするためのシステムにおいて、所定の処理ロジックに従ってシステムを制御する制御手段と、色に関してインターリーブされたＲＧＢデータを記憶するようになっているソース記憶要素と、複数の宛先記憶要素とを有し、前記制御手段は、前記色に関してインターリーブされたＲＧＢデータからの第１カラーおよび第２カラーのデータの第１インスタンスを一度に２バイトずつ、前記ソース記憶要素から第１の２つの宛先記憶要素にロードし、前記データの第１インスタンスを、第２の２つの宛先記憶要素にコピーし、データの第２インスタンスを生成し、前記第１の２つの宛先記憶要素にロードされた第１インスタンスから、前記第２カラーのデータのインスタンスを除去し、前記第１の２つの宛先記憶要素の一方の前記第１カラーのデータのインスタンスを、該第１の２つの宛先記憶要素の他方にパックし、  前記第２の宛先記憶要素にコピーされた第２インスタンスから、前記第１カラーのデータのインスタンスを除去し、前記第２の２つの宛先記憶要素の一方の前記第２カラーのデータのインスタンスを、該第２の２つの宛先記憶要素の他方にパックすることを特徴としたものである。
【００１０】
第２の技術手段は、第１の技術手段において、前記制御手段は、前記色に関してインターリーブされたＲＧＢデータからの前記第１カラーおよび第３カラーのデータのインスタンスを、一度に２バイトずつ前記ソース記憶要素から第３の２つの宛先記憶要素にロードし、前記第３の２つの宛先記憶要素から前記第１カラーのデータのインスタンスを除去し、前記第３カラーのデータのインスタンスを前記第３の宛先記憶要素のうちの１つにパックすることを特徴としたものである。
【００１１】
第３の技術手段は、第２の技術手段において、前記第３の２つの宛先記憶要素のうちの少なくとも１つは、前記第１の２つの宛先記憶要素および前記第２の２つの宛先記憶要素のうちから選択されたものであることを特徴としたものである。
【００１２】
第４の技術手段は、第２または第３の技術手段において、前記第１カラー、前記第２カラーおよび前記第３カラーは、それぞれ赤、緑および青であることを特徴としたものである。
【００１３】
第５の技術手段は、第１〜第４のいずれか１の技術手段において、前記制御手段は、マスキング動作を実行することにより、データの少なくとも一部を除去するようになっていることを特徴としたものである。
【００１４】
第６の技術手段は、第５の技術手段において、前記制御手段は、シフト動作を実行することにより、データの少なくとも一部を除去するようになっていることを特徴としたものである。
【００１５】
第７の技術手段は、インターリーブされたＲＧＢデータを色に関して分離されたＲＧＢデータとしてソース記憶要素からＳＳＥレジスタに高速ローディングするための方法において、所定の処理ロジックに従って制御を行う制御手段が、インターリーブされたＲＧＢデータからの第１カラーおよび第２カラーのデータの第１インスタンスを、一度に２バイトずつ前記ソース記憶要素からＳＳＥレジスタにロードするステップと、前記第１カラーおよび前記第２カラーの前記データの第２インスタンスをＳＳＥレジスタで作成するステップと、ＳＳＥレジスタの第１インスタンスから前記第２カラーのデータのインスタンスを除去するステップと、前記第１インスタンスの第１カラーのデータのインスタンスを１つのＳＳＥレジスタにパックするステップと、ＳＳＥレジスタの前記第２インスタンスから第１カラーのデータのインスタンスを除去するステップと、前記第２インスタンスの第２カラーのデータのインスタンスを１つのＳＳＥレジスタにパックするステップとを有することを特徴としたものである。
【００１６】
第８の技術手段は、第７の技術手段において、前記制御手段が、インターリーブされたＲＧＢデータからの前記第２カラーおよび前記第３カラーのデータのインスタンスを前記ソース記憶要素からＳＳＥレジスタにロードするステップと、ロードした前記第２カラー及び第２カラーのデータのインスタンスから、前記第２カラーのデータのインスタンスをＳＳＥレジスタから除去するステップと、前記第３カラーのデータのインスタンスを１つのＳＳＥレジスタにパックするステップとを更に有することを特徴としたものである。
【発明の効果】
【００１７】
本発明によれば、インターリーブされたＲＧＢデータをＳＳＥレジスタに高速にローディングできるようにしたシステムとその方法を提供することができる。
【発明を実施するための最良の形態】
【００１８】
本発明は、基本的な特徴として、プリント処理のために、色に関してインターリーブされたＲＧＢデータを、色に関して分離されたＲＧＢデータとしてＳＳＥレジスタに高速ローディングするための方法およびシステムに関するものである。処理スピードのゲインは、メモリリファレンスの回数を減らすようにしたローディングアルゴリズムによって実現される。
【００１９】
本発明の特徴によれば、色に関してインターリーブされた赤、緑および青（ＲＧＢ）データを、色に関して分離されたＲＧＢデータとして高速ローディングするためのシステムは、所定の処理ロジックに従ってシステムを制御する制御手段（例えばＣＰＵ等）と、色に関してインターリーブされたＲＧＢデータを記憶するようになっているソース記憶要素と、複数の宛先記憶要素とを備え、処理ロジックは、色に関してインターリーブされたＲＧＢデータからの第１カラーおよび第２カラーのデータの第１インスタンスを一度に２バイトずつ、２つの第１宛先記憶要素にロードし、データの第１インスタンスを第２の２つの宛先記憶要素にコピーし、データの第２インスタンスを発生させ、宛先記憶要素のうちの２つから、第２カラーのデータの１つのインスタンスを除去し、前記第１カラーのデータの１つのインスタンスを宛先記憶要素のうちの１つにパックし、宛先記憶要素のうちの２つから第１カラーのデータの１つのインスタンスを除去し、第２カラーのデータの１つのインスタンスを宛先記憶要素のうちの１つにパックするようになっている。なおインスタンスは、データとそれを操作する手続きを一体化したオブジェクトの実体を指し、さらには実際にメモリ上に配置されたデータの集合を意味するものである。
【００２０】
一部の実施例では、処理ロジックに従ってシステムを制御する制御手段は、色に関してインターリーブされたＲＧＢデータからの第１カラーおよび第３カラーのデータを一度に２バイトずつソース記憶要素から第３の２つの宛先記憶要素にロードし、第３の２つの宛先記憶要素から第１カラーのデータを除去し、第３カラーのデータを宛先記憶要素のうちの１つにパッキングするようになっている。
【００２１】
色に関してインターリーブされたデータを一度に２バイトずつ（例えば赤データおよび緑データ）をロードし、宛先記憶要素内で色に関して分離されたデータを生成するためにコピー、除去およびパックを行うことにより、色に関してインターリーブされたＲＧＢデータをローディングするためのメモリレファレンスの回数は、一度にＲＧＢデータの１バイトをローディングする従来の方法と比較して３分の１低減されることが理解できよう。
【００２２】
一部の実施例では、宛先記憶要素はＳＳＥレジスタである。
【００２３】
一部の実施例では、ＳＳＥ命令を実行することによってローディング、コピー、除去およびパックの少なくとも一部が達成される。
【００２４】
一部の実施例では、マスキングにより除去の少なくとも一部が達成される。
【００２５】
一部の実施例では、第１カラー、第２カラーおよび第３カラーはそれぞれ赤、緑および青である。
【００２６】
一部の実施例では、第３の２つの宛先記憶要素のうちの少なくとも１つは、第１の２つの宛先記憶要素および第２の２つの宛先記憶要素から選択されたものである。
【００２７】
インターリーブされたＲＧＢデータを色度に関して分離されたＲＧＢデータとしてＳＳＥレジスタ内に高速ローディングするための方法は、インターリーブされたＲＧＢデータからの第１カラーおよび第２カラーのデータの第１インスタンスを、一度に２バイトずつＳＳＥレジスタにロードするステップと、第１カラーおよび第２カラーのデータの第２インスタンスをＳＳＥレジスタで作成するステップと、ＳＳＥレジスタから第２カラーのデータの１つのインスタンスを除去するステップと、第１カラーのデータの１つのインスタンスを１つのＳＳＥレジスタにパックするステップと、第１カラーのデータの１つのインスタンスをＳＳＥレジスタから除去するステップと、第２カラーのデータの１つのインスタンスを１つのＳＳＥレジスタにパックするステップとを有する。
【００２８】
一部の実施例では、この方法は、インターリーブされたＲＧＢデータからの第２カラーおよび第３カラーのデータの１つのインスタンスを１バイトずつＳＳＥレジスタにロードするステップと、第２カラーのデータをＳＳＥレジスタから除去するステップと、第３カラーのデータをＳＳＥレジスタの１つにパックするステップとを更に有する。
【００２９】
図面を参照し、次の詳細な説明を読めば、本発明の上記およびそれ以外の特徴について良好に理解できよう。当然ながら本発明は特許請求項に記載されている。
【００３０】
図１を参照すると、ここには本発明の一部の実施例におけるソースメモリ１００と、ＳＳＥレジスタ１２０と、それらの間の相互関係とが示されている。ソースメモリ１００は、例えばデジタル写真またはスキャンされた画像等のカラー画像のためのインターリーブされたＲＧＢデータを含む。インターリーブされたＲＧＢは、単一画像平面上でＲＧＢのデータが隣接して配置されているものである。
明瞭にするため、インターリーブされたＲＧＢデータは連続するピクセルタプル＜Ｒｎ、Ｇｎ、Ｂｎ＞としてソースメモリ１００内に配置された状態に示されており、これらピクセルタプルは、ある画像の１つのピクセルに対する赤データの１バイトと、緑データの１バイトと、青データの１バイトとを含む。しかしながら、このソースメモリ１００は、画像の１つのピクセルに対する赤データの１バイト、緑データの１バイト、および青データの１バイトとが連続的または非連続的に記憶されているロケーションを指す、連続するポインタタプル＜Ｒｎ、Ｇｎ、Ｂｎ＞を含むソースレジスタを使って実現できることが理解されよう。なおタプルとは複数個のデータをまとめたもので、ピクセルタプルは、ピクセルデータのタプルであり、ポインタタプルは、特定のロケーションを指定するポインタデータのタプルである。
【００３１】
ＳＳＥレジスタ１２０は、６つの１６バイトレジスタ（ｘｍｍ０、ｘｍｍ１、ｘｍｍ２、ｘｍｍ３、ｘｍｍ４およびｘｍｍ５）を含み、これらレジスタは、ソースメモリ１００からロードされた、インターリーブされたＲＧＢデータを、ＳＳＥレジスタ１２０に記憶された、分離されたＲＧＢデータに変換することに関与する。
図示されている実施例では、例えばインターリーブされた赤データおよび緑データ（Ｒ０、Ｇ０〜Ｒ７、Ｇ７）の各々の８バイトが、一度に２バイトずつ、ＳＳＥレジスタｘｍｍ３にロードされ、その後、インターリーブされた赤データおよび緑データ（Ｒ８、Ｇ８〜Ｒ１５、Ｇ１５）の各々のさらに８バイトが、２バイトずつ一度にＳＳＥレジスタｘｍｍ０にロードされ、その後、ＳＳＥ命令セットを使用して実行されるコピー動作、除去動作およびパック動作の実行により、赤データから緑データの１６バイトが分離され、ｘｍｍ０に記憶され、緑データから赤データの１６バイトが分離され、ｘｍｍ１に記憶される。
【００３２】
次に、図１と共に図２を参照しながら、本発明の一部の実施例において色に関してインターリーブされた赤および緑データを、色に関して分離されたデータとして、ＳＳＥレジスタ１２０に高速ローディングするための方法についてより詳細に説明する。
まず最初に、赤データおよび緑データの各々の８バイトがソースメモリ１００からＳＳＥレジスタのｍｍｘ３内にロードされる。かかるローディングは、８つのPacked Insert Word（パッキングされたインサートワード）（ＰＩＮＳＲＷと略称する）命令の実行によって行うことができ、これら命令は青データ（Ｂ０〜Ｂ７）の８つの１バイトワードをバイパスさせながら、赤および緑データ（Ｒ０、Ｇ０〜Ｒ７、Ｇ７）の８つの２バイトワードをソースメモリ１００からＳＳＥレジスタｘｍｍ３（２１０）内に移動させる。
【００３３】
次に、赤および緑データの各々の８バイトが、ソースメモリ１００からＳＳＥレジスタｘｍｍ０にロードされる。かかるローディングは８つのＰＩＮＳＲＷ命令を実行することによって達成でき、これら命令は赤および緑データ（Ｒ８、Ｇ８〜Ｒ１５、Ｇ１５）の８つの２バイトワードをそれぞれソースメモリ１００からＳＳＥレジスタｘｍｍ０（２２０）に移動させる。次に、ＳＳＥレジスタｘｍｍ０およびｘｍｍ３の内容をそれぞれＳＳＥレジスタｘｍｍ１およびｘｍｍ４にコピーする（２３０）。かかるコピーは２つのPacked Shuffled Double Word（パッキングされたシャッフルダブルワード）（ＰＳＨＵＦＤと略称する）命令を実行することによって達成できる。
【００３４】
次に、ＳＳＥレジスタｘｍｍ５内に記憶されているマスクを使用するマスキング動作により、ＳＳＥレジスタｘｍｍ０およびｘｍｍ３から緑データの１６バイトが除かれる（２４０）。かかる除去は、まずLoad Effective Address（ロード有効アドレス）（ＬＥＡと略称する）命令を実行し、次に、Move Double Quadword（ムーブダブルクォドワード）（ＭＯＶＤＱＵと略称する）命令を実行することにより、マスクをＳＳＥレジスタｘｍｍ５へロードし、次に２つのビットワイズのロジカルＡＮＤ（ＰＡＮＤ）命令を実行することにより、ＳＳＥレジスタｘｍｍ０およびｘｍｍ３から緑データを除去することにより、行うことができる。次に、ｘｍｍ０およびｘｍｍ３から赤データの１６バイトをｘｍｍ０にパックする（２５０）。かかるパックは、Packed with Unsigned Saturation（サインされていないサチュレーションによるパック）（ＰＡＣＫＵＳＷＢと略称する）命令を実行することより行うことができる。
【００３５】
次に、ｘｍｍ１およびｘｍｍ４からの緑データの１６バイトをマスク位置にシフトする（２６０）。すなわち、ｘｍｍ５でマスクを使用する結果、緑データが除去される代わりに赤データが除去されるように、緑データをシフトする。かかるシフトは２つのPacked Shift Right Logical Quadword（パッキングされた右シフトロジカルクオドワード）（ＰＳＲＬＱ）命令の実行により行われる。
次に、ＳＳＥレジスタｘｍｍ５に記憶されたマスクを使用するマスク動作により、ＳＳＥレジスタｘｍｍ１およびｘｍｍ４から赤データを除去する（２７０）。かかる除去は、２つのビット状ロジカルＡＮＤ（ＰＡＮＤ）命令を実行することにより達成できる。次にｘｍｍ１およびｘｍｍ４からの緑データをｘｍｍ１にパッキングする（２８０）。かかるパッキングは、Packed with Unsigned Saturation（サインされていないサチュレーションによるパッキング）（ＰＡＣＫＵＳＷＢ）命令を実行することにより達成できる。
【００３６】
上記ステップにより、色に関してインターリーブされたＲＧＢデータからの２つのカラー、すなわち赤および緑のデータは、一度に２バイトずつソースメモリ１００から都合良く転送され、ＳＳＥレジスタ１２０内に色に関して分離されたデータとして記憶されるので、実行されるメモリレファレンスの回数を従来の方法よりも少なくすることができる。
【００３７】
次に、図３を参照し、本発明の一部の実施例における色に関してインターリーブされた青データを色に関して分離されたデータとしてＳＳＥレジスタにロードする方法について説明する。
まずソースメモリ１００からＳＳＥレジスタｍｍｘ３に青および赤データの各々の８バイトをロードする。かかるロードは８つのPacked Insert Word（パッキングされたインサートワード）（ＰＩＮＳＲＷ）命令を実行することによって実行され、これらの命令は、緑データの８つの１バイトワード（Ｇ０〜Ｇ７）をバイパスさせながら、ソースメモリ１００からＳＳＥレジスタｘｍｍ３へ青および赤データの８つの２バイトワード（Ｂ０、Ｒ１〜Ｂ７、Ｒ８）を移動させる（３１０）。
【００３８】
次にソースメモリ１００からＳＳＥレジスタｘｍｍ２へ青および赤データの各々の８バイトをロードする。かかるロードは８つのPacked Insert Word（パッキングされたインサートワード）（ＰＩＮＳＲＷ）命令により実行され、これらの命令はソースメモリ１００からＳＳＥレジスタｘｍｍ２へ８つの２バイトワード（Ｂ８、Ｒ９〜Ｂ１５、Ｒ１６）をそれぞれ移動させる（３２０）。
【００３９】
次にＳＳＥレジスタｘｍｍ５に記憶されているマスクを使用するマスキング動作により、ＳＳＥレジスタｘｍｍ３およびｘｍｍ２から赤データを除去する（３３０）。かかる除去は、２つのビットワイズのロジカルＡＮＤ（ＰＡＮＤ）命令を実行することにより実行される。次に、ｘｍｍ３およびｘｍｍ２からの青データをｘｍｍ２にパッキングする（３４０）。かかるパッキングは、Packed with Unsigned Saturation（サインされていない飽和によるパッキング）（ＰＡＣＫＵＳＷＢ）命令を実行することにより行われる。
【００４０】
図４および図５は、図２および図３の方法をそれぞれ実行するためのＳＳＥに準拠したプロセッサによって実行できるｘ８６アセンブリ言語の疑似コードの例を、挿入したコメント共に示すものである。この疑似コードでは、ｅｓｉはＲＧＢデータを指示するソースレジスタである。
【００４１】
上記実施例は単なる例にすぎず、本発明の他の実施例ではカラーデータをロードし、操作し、パッキングする順序、および種々のＳＳＥレジスタ１２０が果たす役割が異なっていてもよいことが理解できよう。多くの実施例の１つとして、緑および青データをそれぞれをｘｍｍ３およびｘｍｍ４にロードし、パックし、次に赤データをｘｍｍ５にロードし、パックすることが可能である。
従って、当業者であれば、本発明は本発明の要旨または本質的な特徴から逸脱することなく、本発明を他の特定の形態で具現化できることが理解できよう。本明細書の説明は、すべての点において説明のためのものであり、発明を限定するものでないと考えられる。本発明の範囲は特許請求の範囲のみによって示されており、本発明の均等物の意味するところ、および範囲に入るすべての変形例は、本発明の範囲内に含まれるものである。
【図面の簡単な説明】
【００４２】
【図１】本発明の一部の実施例におけるソースメモリ、ＳＳＥレジスタおよびそれらの間の相互関係を示す図である。
【図２】本発明の一実施例における、色に関してインターリーブされた赤および緑データを、色に関して分離されたデータとしてＳＳＥレジスタ内に高速ローディングするための方法を示す図である。
【図３】本発明の一実施例における、色に関してインターリーブされた青データを、色に関して分離されたデータとしてＳＳＥレジスタ内に高速ローディングするための方法を示す図である。
【図４】図２の方法を実施するための疑似コードの例を示す図である。
【図５】図３の方法を実施するための疑似コードの例を示す図である。
【符号の説明】
【００４３】
１００…ソースメモリ、１２０…ＳＳＥレジスタ。
【図１】
0004567770.tif 000002
【図２】
0004567770.tif 000003
【図３】
0004567770.tif 000004
【図４】
0004567770.tif 000005
【図５】
0004567770.tif 000006