(57)【要約】【課題】  符号乗算処理を実行する方法、装置及びプログラム手段を提供すること。【解決手段】  本発明による装置は、格納領域と、第１オペランドと第２オペランドに対し第１命令を実行し、該第１命令に応答して、前記第２オペランドが正である場合には前記第１オペランドの値を、前記第２オペランドが零である場合にはゼロの値を、前記第２オペランドが負である場合には前記第１オペランドの否定の値を有する結果を前記格納領域に格納する実行リソースを有することを特徴とする。【選択図】  図１Ａ
2005025719.tif 000002
【特許請求の範囲】
【請求項１】
格納領域；及び
第１オペランドと第２オペランドに対し第１命令を実行し、該第１命令に応答して、前記第２オペランドが正である場合には前記第１オペランドの値を、前記第２オペランドが零である場合にはゼロの値を、前記第２オペランドが負である場合には前記第１オペランドの否定の値を有する結果を前記格納領域に格納する実行リソース；
を有することを特徴とする装置。
【請求項２】
請求項１記載の装置であって、前記第１オペランドは複数の第１Ｐａｃｋｅｄデータ要素からなる第１Ｐａｃｋｅｄデータオペランドであり、前記第２オペランドは複数の第２Ｐａｃｋｅｄデータ要素からなる第２Ｐａｃｋｅｄデータオペランドであり、前記結果は複数の第３Ｐａｃｋｅｄデータ要素からなり、該複数の第３Ｐａｃｋｅｄデータ要素の各々は前記複数のＰａｃｋｅｄデータ要素の第１データ要素からの符号付き数値と前記複数の第２Ｐａｃｋｅｄデータ要素の対応するデータ要素の符号との積に設定されることを特徴とする装置。
【請求項３】
請求項１記載の装置であって、前記第１オペランドはソースまたは宛先オペランドであり、該ソースまたは宛先オペランドは前記結果を計算するため前記格納領域から抽出され、前記結果により上書きされることを特徴とする装置。
【請求項４】
請求項２記載の装置であって、前記格納領域はレジスタを有し、前記第２オペランドはレジスタまたはメモリオペランドであることを特徴とする装置。
【請求項５】
請求項４記載の装置であって、前記第１オペランドはレジスタオペランドであることを特徴とする装置。
【請求項６】
請求項５記載の装置であって、前記第１命令はＭＯＤ  Ｒ／Ｍフィールドとオペコードフィールドを含む命令フォーマットを有することを特徴とする装置。
【請求項７】
請求項５記載の装置であって、前記第１命令は、オペランド指定バイトの第５ビットから第３ビットが前記第１オペランドを特定し、前記オペランド指定バイトの第２ビットから第０ビットが前記第２オペランドを特定する命令フォーマットを有することを特徴とする装置。
【請求項８】
請求項１記載の装置であって、前記第１命令は、オペランド指定バイトの第５ビットから第３ビットが前記第１オペランドを特定し、前記オペランド指定バイトの第２ビットから第０ビットが前記第２オペランドを特定する命令フォーマットを有することを特徴とする装置。
【請求項９】
請求項１記載の装置であって、前記第１命令はＰａｃｋｅｄ符号命令であり、該装置はさらに：
加算器回路；
前記加算器回路に第１入力を与えるよう接続され、前記第１オペランドと第１オペランドの補数から選択する第１入力マルチプレクサ；
前記第２オペランドに応答して選択信号を出力するゼロ検出器；及び
前記加算器回路に第２入力を与えるよう接続され、前記命令のための制御信号に応答して前記第２ソースオペランドとゼロから選択する第２入力マルチプレクサ；
を有することを特徴とする装置。
【請求項１０】
請求項９記載の装置であって、さらに：
前記第１ソースオペランド、前記第２ソースオペランド、及び前記第１オペランドの補数からなる加算器出力を受け取るよう接続される第３マルチプレクサ；及び
前記第２オペランドの大きさ及び符号に基づき、前記第１ソースオペランド、前記第２ソースオペランド及び前記加算器出力の１つを選択する選択論理；
を有し、前記第２オペランドの前記大きさがゼロである場合には前記選択論理に前記第２オペランドを選択させ、前記第２オペランドの前記大きさが非零かつ前記第２オペランドの前記符号が正である場合には前記選択論理に前記第１オペランドを選択させ、前記第２オペランドの前記大きさが非零かつ前記第２オペランドの前記符号が負である場合には前記選択論理に前記加算器出力を選択させることを特徴とする装置。
【請求項１１】
請求項６記載の装置であって、前記実行リソースは：
前記第１命令を復号するデコーダ；
整数演算のための第１物理レジスタファイル；及び
第２物理レジスタファイル；
を有し、前記ソースまたは宛先オペランドは前記第２物理レジスタファイルのレジスタを特定し、前記結果は整数であることを特徴とする装置。
【請求項１２】
請求項１１記載の装置であって、前記第１命令は符号命令であり、前記デコーダは第１実行ユニットによる実行のため前記符号命令を符号マイクロ処理に復号し、前記第１実行ユニットは前記第１物理レジスタファイルに結果を格納する複数の酢から整数処理を実行する整数実行ユニットとは別のユニットであることを特徴とする装置。
【請求項１３】
請求項１記載の装置であって、前記第１命令は第１Ｐａｃｋｅｄデータ命令であり、前記結果は複数の第１結果Ｐａｃｋｅｄデータ要素から構成され、該複数の第１結果Ｐａｃｋｅｄデータ要素の各々は複数の第１ソースオペランドデータ要素の対応するものと複数の第２ソースオペランドデータ要素の対応するものの対応する符号とを乗じた値を有することを特徴とする装置。
【請求項１４】
請求項１３記載の装置であって、前記実行リソースは、第２命令に応答して、複数の第２結果Ｐａｃｋｅｄデータ要素から構成される第２結果を前記格納領域に格納し、該複数の第２結果Ｐａｃｋｅｄデータ要素の各々は複数のソースＰａｃｋｅｄデータ要素の対応する１つの絶対値であることを特徴とする装置。
【請求項１５】
請求項１記載の装置であって、該装置はマシーン読み出し可能な媒体のマシーン読み出し可能なデータの形式であり、該マシーン読み出し可能なデータは該装置を提供するのに製造可能あるいはシミュレート可能であることを特徴とする装置。
【請求項１６】
Ｐａｃｋｅｄデータ要素を格納できるレジスタファイル；及び
前記レジスタファイルに接続され、複数のＰａｃｋｅｄデータ命令に応答して前記レジスタファイルに値を格納する実行ユニット；
を有するプロセッサであって、該実行ユニットは複数の結果データ要素から構成される結果を前記レジスタファイルに格納することにより前記複数のＰａｃｋｅｄデータ命令の第１命令に応答し、前記複数の結果データ要素の各々は、複数の第１ソースデータ要素と複数の第２ソースデータ要素の各自の値に対して、前記複数の第１ソースデータ要素の対応するものに前記複数の第２ソースデータ要素の対応するものの符号を乗じた値に等しいことを特徴とするプロセッサ。
【請求項１７】
請求項１６記載のプロセッサであって、前記実行ユニットは複数の第２結果データ要素から構成される第２結果を前記レジスタファイルに格納することにより前記複数のＰａｃｋｅｄデータ命令の第２命令に応答することを特徴とするプロセッサ。
【請求項１８】
請求項１７記載のプロセッサであって、前記複数のＰａｃｋｅｄデータ命令の前記第１命令は符号命令であり、前記複数のＰａｃｋｅｄデータ命令の前記第２命令は絶対値命令であり、該プロセッサはさらに前記符号命令を第１マイクロ処理に、前記絶対値命令を第２マイクロ命令に復号するデコーダを有することを特徴とするプロセッサ。
【請求項１９】
請求項１６記載のプロセッサであって、さらに：
前記複数の第１ソースデータ要素の第１データ要素の第１の値と、該第１データ要素に対応する前記複数の第１ソースデータ要素の第２データ要素の第２の値と、前記複数の第１ソースデータ要素の前記第１データ要素の前記第１の値を否定した第３の値とから構成される入力を受け取るマルチプレクサ；及び
前記マルチプレクサへの入力の１つを選択し、前記第１データ要素及び前記第２データ要素に対応するデータ要素位置に対する符号処理結果として出力する出力選択論理；
を有することを特徴とするプロセッサ。
【請求項２０】
第１オペランド符号と第１オペランド量を有する第１オペランドと第２オペランド符号と第２オペランド量を有する第２オペランドを特定する命令をフェッチするステップ；
前記第２オペランドが零であるか判断し、そうである場合には、前記命令の最終結果としてゼロを格納するステップ；及び
前記第２オペランドが非零であるか判断し、そうである場合には、前記第１オペランド量に等しい最終結果量と、前記第２オペランド量のユニタリ値と非ユニタリ値に対する前記第１オペランド符号と前記第２オペランド符号の関数である最終結果符号とを有する最終結果を格納するステップ；
を有することを特徴とする方法。
【請求項２１】
請求項２０記載の方法であって、前記第１オペランドは複数の第１ソースデータ要素から構成される第１Ｐａｃｋｅｄデータであり、前記第２オペランドは複数の第２ソースデータ要素から構成される第２Ｐａｃｋｅｄデータであり、前記第２オペランドの前記要素位置のデータ要素値が正である場合には前記命令に応答して前記要素位置の結果として前記第１オペランドの対応するデータ要素からの値を格納し、前記第２オペランドの前記要素位置の前記データ要素値が負である場合には前記要素位置の前記結果として前記第１オペランドの前記対応するデータ要素からの前記値に−１を乗じた値を格納し、前記第２オペランドの前記要素位置の前記データ要素値が零である場合には前記要素位置の前記結果としてゼロを格納することを特徴とする方法。
【請求項２２】
第１オペランドと第２オペランドを特定する命令をフェッチするステップ；
前記第２オペランドが正であるか判断し、そうである場合には、前記命令の結果として前記第１オペランドを格納するステップ；
前記第２オペランドが負であるか判断し、そうである場合には、前記命令の結果として前記第１オペランドに−１を乗じた値を格納するステップ；及び
前記第２オペランドが零であるか判断し、そうである場合には、前記命令の結果としてゼロを格納するステップ；
を有することを特徴とする方法。
【請求項２３】
請求項２２記載の方法であって、前記命令はＰａｃｋｅｄ符号命令であることを特徴とする方法。
【請求項２４】
請求項２３記載の方法であって、前記第１オペランドと前記第２オペランドの各々はそれぞれ複数の第１及び第２データ要素から構成されるＰａｃｋｅｄデータオペランドであることを特徴とする方法。
【請求項２５】
請求項２４記載の方法であって、さらに、前記Ｐａｃｋｅｄ符号命令を第１マイクロ命令に復号するステップを有することを特徴とする方法。
【請求項２６】
請求項２５記載の方法であって、前記第２オペランドを判断するステップは前記第２オペランドの各データ要素を評価することを特徴とする方法。
【請求項２７】
第１Ｐａｃｋｅｄデータ命令と、複数の第１ソースデータ要素から構成される第１Ｐａｃｋｅｄデータと、複数の第２ソースデータ要素から構成される第２Ｐａｃｋｅｄデータとを格納するメモリ；及び
前記第１Ｐａｃｋｅｄデータ命令を実行し、複数の結果Ｐａｃｋｅｄデータ要素から構成される結果Ｐａｃｋｅｄデータをプロセッサ格納領域に格納するプロセッサ；
を有するシステムであって、前記複数の結果Ｐａｃｋｅｄデータ要素の各々は、前記複数の第２ソースデータ要素の非零値に対し前記複数の第１ソースデータ要素と前記複数の第２ソースデータ要素の対応するものの両方の符号の関数であり、前記複数の第２ソースデータ要素の前記対応するもののユニタリ値と非ユニタリ値に対し前記複数の第１Ｐａｃｋｅｄデータ要素の前記対応するものの大きさの関数であることを特徴とするシステム。
【請求項２８】
請求項２７記載のシステムであって、前記第１Ｐａｃｋｅｄデータ命令は前記複数の第１ソースデータ要素に対応するデータ要素位置に対し符号処理を実行させるＰａｃｋｅｄ符号命令であることを特徴とするシステム。
【請求項２９】
請求項２８記載のシステムであって、前記複数の結果Ｐａｃｋｅｄデータ要素は前記第１Ｐａｃｋｅｄデータを格納するプロセッサ格納領域を上書きすることを特徴とするシステム。
【請求項３０】
装置を実現するよう製造あるいはシミュレートされるマシーン読み出し可能な媒体を有する物品であって、前記装置は：
格納領域；及び
第１オペランドと第２オペランドに対し第１命令を実行し、該第１命令に応答して、前記第２オペランドが正である場合には前記第１オペランドの値を、前記第２オペランドが零である場合にはゼロの値を、前記第２オペランドが負である場合には前記第１オペランドの否定の値を有する結果を前記格納領域に格納する実行リソース；
を有することを特徴とする物品。
【請求項３１】
請求項３０記載の物品であって、前記第１オペランドは複数の第１Ｐａｃｋｅｄデータ要素からなる第１Ｐａｃｋｅｄデータオペランドであり、前記第２オペランドは複数の第２Ｐａｃｋｅｄデータ要素からなる第２Ｐａｃｋｅｄデータオペランドであり、前記結果は複数の第３Ｐａｃｋｅｄデータ要素からなり、該複数の第３Ｐａｃｋｅｄデータ要素の各々は前記複数のＰａｃｋｅｄデータ要素の第１データ要素からの符号付き数値と前記複数の第２Ｐａｃｋｅｄデータ要素の対応するデータ要素の符号との積に設定されることを特徴とする物品。
【請求項３２】
請求項３０記載の物品であって、前記第１オペランドはソースまたは宛先オペランドであり、該ソースまたは宛先オペランドは前記結果を計算するため前記格納領域から抽出され、前記結果により上書きされることを特徴とする物品。
【請求項３３】
請求項３１記載の物品であって、前記格納領域はレジスタを有し、前記第２オペランドはレジスタまたはメモリオペランドであることを特徴とする物品。
【請求項３４】
請求項３１記載の物品であって、前記第１命令はＭＯＤ  Ｒ／Ｍフィールドとオペコードフィールドを含む命令フォーマットを有することを特徴とする物品。
【請求項３５】
請求項３０記載の物品であって、前記第１命令はＰａｃｋｅｄ符号命令であり、前記装置はさらに：
加算器回路に第１入力を与えるよう接続され、前記第１オペランドと第１オペランドの補数から選択する第１入力マルチプレクサ；
前記第２オペランドに応答して選択信号を出力するゼロ検出器；
前記加算器回路に第２入力を与えるよう接続され、前記命令のための制御信号に応答して前記第２ソースオペランドとゼロから選択する第２入力マルチプレクサ；
前記第１ソースオペランド、前記第２ソースオペランド、及び前記第１オペランドの補数からなる加算器出力を受け取るよう接続される第３マルチプレクサ；及び
前記第２オペランドの大きさ及び符号に基づき、前記第１ソースオペランド、前記第２ソースオペランド及び前記加算器出力の１つを選択する選択論理；
を有し、前記第２オペランドの前記大きさが零である場合には前記選択論理に前記第２オペランドを選択させ、前記第２オペランドの前記大きさが非零かつ前記第２オペランドの前記符号が正である場合には前記選択論理に前記第１オペランドを選択させ、前記第２オペランドの前記大きさが非零かつ前記第２オペランドの前記符号が負である場合には前記選択論理に前記加算器出力を選択させることを特徴とする物品。
【請求項３６】
請求項３０記載の物品であって、前記第１命令は第１Ｐａｃｋｅｄデータ命令であり、前記結果は複数の第１結果Ｐａｃｋｅｄデータ要素から構成され、該複数の第１結果Ｐａｃｋｅｄデータ要素の各々は複数の第１ソースオペランドデータ要素の対応するものと複数の第２ソースオペランドデータ要素の対応するものの対応する符号とを乗じた値を有することを特徴とする物品。
【請求項３７】
格納領域；及び
第１の大きさと第１オペランド初期符号を有する第１オペランドと第２オペランド符号を有する第２オペランドに対し第１命令を実行する実行リソース；
を有する装置であって、前記実行リソースは、前記第１命令に応答して、前記第２オペランドが正である場合には前記第１の大きさと前記第１オペランド初期符号を有する結果を、前記第２オペランドが零である場合にはゼロである結果を、前記第２オペランドが負である場合には前記第１の大きさ及び前記第１オペランド初期符号と前記第２オペランド符号との積である符号結果を有する結果を前記格納領域に格納することを特徴とする装置。
【請求項３８】
請求項３７記載の装置であって、前記第１オペランドは複数の第１Ｐａｃｋｅｄデータ要素から構成される第１Ｐａｃｋｅｄデータオペランドであり、前記第２オペランドは複数の第２Ｐａｃｋｅｄデータ要素から構成される第２Ｐａｃｋｅｄデータオペランドであり、前記結果は複数の第３Ｐａｃｋｅｄデータ要素から構成され、該複数の第３Ｐａｃｋｅｄデータ要素の各々は前記複数の第１Ｐａｃｋｅｄデータ要素の第１データ要素からの符号付き数値と前記複数の第２Ｐａｃｋｅｄデータ要素の対応するデータ要素の符号との積に設定されることを特徴とする装置。
【請求項３９】
請求項３８記載の装置であって、前記格納領域はレジスタを有し、前記第２オペランドはレジスタまたはメモリオペランドであることを特徴とする装置。
【請求項４０】
請求項３９記載の装置であって、前記第１命令はＭＯＤ  Ｒ／Ｍフィールドとオペコードフィールドを含む命令フォーマットを有することを特徴とする装置。
【請求項４１】
請求項４０記載の装置であって、前記第１命令は、オペランド指定バイトの第５ビットから第３ビットが前記第１オペランドを特定し、前記オペランド指定バイトの第２ビットから第０ビットが前記第２オペランドを特定する命令フォーマットを有することを特徴とする装置。
【請求項４２】
格納領域；及び
複数の第１データ要素を有する第１Ｐａｃｋｅｄオペランドと複数の第２データ要素を有する第２Ｐａｃｋｅｄオペランドを実行する実行リソース；
を有する装置であって、前記第１オペランドの前記複数の第１データ要素の各データ要素は第１の大きさと第１オペランド符号を有し、前記第２オペランドの前記複数の第２データ要素の各データ要素は第２の大きさと第２オペランド符号を有し、前記実行リソースは、前記第１命令に応答して、結果として得られるオペランドの各データ要素位置に対して、前記第２オペランドが非零である場合には、前記第１の大きさと前記第１オペランド符号と前記第２オペランド符号の両方の関数である結果として得られる符号を有する結果を、前記第２オペランドが零である場合にはゼロである結果を前記格納領域に格納することを特徴とする装置。
【請求項４３】
請求項４２記載の装置であって、前記結果として得られるオペランドは複数の第３Ｐａｃｋｅｄデータ要素から構成され、該複数の第３Ｐａｃｋｅｄデータ要素の各々は前記複数のＰａｃｋｅｄデータ要素の第１データ要素からの符号付き数値と前記複数の第２Ｐａｃｋｅｄデータ要素の対応するデータ要素の符号との積に設定されることを特徴とする装置。
【請求項４４】
請求項４３記載の装置であって、前記格納領域はレジスタを有し、前記第２オペランドはレジスタまたはメモリオペランドであることを特徴とする装置。
【請求項４５】
請求項４４記載の装置であって、前記第１オペランドはレジスタであることを特徴とする装置。
【請求項４６】
請求項４５記載の装置であって、前記第１オペランドの前記レジスタはまた前記格納領域であることを特徴とする装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、数学的演算を実行する処理装置、関連ソフトウェア及びソフトウェアシーケンスの技術分野に関する。本出願は、２００３年６月３０日に出願された同時係属中の米国特許出願第１０／６１０，９２９号「ＳＩＭＤ符号絶対値処理を利用した非線形フィルタリング及びブロック解除アプリケーション（Ｎｏｎｌｉｎｅａｒ  Ｆｉｌｔｅｒｉｎｇ  Ａｎｄ  Ｄｅｂｌｏｃｋｉｎｇ  Ａｐｐｌｉｃａｔｉｏｎｓ  Ｕｔｉｌｉｚｉｎｇ  ＳＩＭＤ  Ｓｉｇｎ  Ａｎｄ  Ａｂｓｏｌｕｔｅ  Ｖａｌｕｅ  Ｏｐｅｒａｔｉｏｎｓ）」に関連する。
【背景技術】
【０００２】
今日の社会において、コンピュータシステムはますます広く普及しつつある。コンピュータ処理能力は、広い範囲の分野における労働者の効率性と生産性を高めてきた。コンピュータの購入及び所持コストが逓減するにつれ、より多くの消費者が最新のより高速なマシーンを利用することが可能になった。さらに、多くの人々がノートブックコンピュータの利用をその利用に関する柔軟性により享受している。モバイルコンピュータにより、ユーザはオフィスから外出したり、あるいは出先でも、データを携帯し作業を行うことが容易にできる。このような場面は、マーケティングスタッフ、企業の役員、学生においてさえもよく見られるものである。
【０００３】
プロセッサ技術の進歩に伴い、先端的なプロセッサを備えたマシーン上で実行するための新たなソフトウェアコードが生成される。一般に、ユーザは、使用しているソフトウェアのタイプに関わらず、コンピュータからより高いパフォーマンスを期待及び要求する。ここで、プロセッサ内部において実行されている命令及び処理タイプにより生じる可能性のある１つの問題がある。すなわち、あるタイプの処理には処理の複雑さ及び／あるいは必要とされる回路の種類に基づき、その完了に多くの時間を要するものもある。このようなことから、プロセッサ内部での複雑な処理を実行する方法を最適化するという動機付けが生じる。
【０００４】
メディアアプリケーションは、数十年もの間、マイクロプロセッサの発達を促進してきた。実際、近年における計算機の性能向上の多くはメディアアプリケーションにより促進されてきたものである。娯楽性を高めた教育及び通信目的のため、重大な進歩は企業部門において見出されてきたが、上記のような性能の向上は主として消費者部門において起こってきたものである。にもかかわらず、これからのメディアアプリケーションには、さらに高い計算能力が要求されるであろう。この結果、将来のパーソナルコンピュータ（ＰＣ）では、使い安さだけでなくより充実したオーディオビジュアル機能が実現されるであろう。さらに、より重要なものとしては計算機と通信の融合であろう。
【０００５】
従って、現在の計算機においては、コンテンツとして総称される音声及び映像データの再生だけでなく画像の表示も、ますます一般的なアプリケーションとなりつつある。フィルタリング及び畳み込み処理は、画像、音声及び映像データのようなコンテンツデータに対し最もよく実行される処理である。これらの処理は大きな計算量を要することから、例えば、単一命令多重データ（ＳＩＭＤ）レジスタのような様々なデータ記憶装置を利用することにより、効率的な実行を行うための高いレベルでのデータ並列処理が提供されている。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
既存のアーキテクチャの多くは不必要なデータタイプの変更を必要とし、それによって、命令スループットの減少を招き、算術演算のためのデータ順序付けに要するクロックサイクル数を著しく増加させてしまう。
【０００７】
ｓｉｇｎｕｍ命令のような従来技術による様々な符号に関する命令により、２進数の符号は決定される。しかしながら、このような従来技術によるｓｉｇｎｕｍ命令では、特にｓｉｇｎｕｍ処理による結果がさらに処理される場合、この結果はより大きなアルゴリズムの中の中間結果であるためその有用性は限定的なものとなる。所望の結果を得るためさらなる命令を要することにより、処理リソースやパイプラインスロットに関して追加的なコストが発生することになる。
【０００８】
本発明は、このような問題点に鑑み、符号乗算処理を実行するための装置、プロセッサ、方法、システム及び物品を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明による装置は、格納領域と、第１オペランドと第２オペランドに対し第１命令を実行し、該第１命令に応答して、前記第２オペランドが正である場合には前記第１オペランドの値を、前記第２オペランドが零である場合にはゼロの値を、前記第２オペランドが負である場合には前記第１オペランドの否定の値を有する結果を前記格納領域に格納する実行リソースを有することを特徴とする。
【００１０】
上記課題を解決するために、本発明によるプロセッサは、Ｐａｃｋｅｄデータ要素を格納できるレジスタファイルと、前記レジスタファイルに接続され、複数のＰａｃｋｅｄデータ命令に応答して前記レジスタファイルに値を格納する実行ユニットを有するプロセッサであって、該実行ユニットは複数の結果データ要素から構成される結果を前記レジスタファイルに格納することにより前記複数のＰａｃｋｅｄデータ命令の第１命令に応答し、前記複数の結果データ要素の各々は、複数の第１ソースデータ要素と複数の第２ソースデータ要素の各自の値に対して、前記複数の第１ソースデータ要素の対応するものに前記複数の第２ソースデータ要素の対応するものの符号を乗じた値に等しいことを特徴とする。
【００１１】
上記課題を解決するために、本発明による方法は、第１オペランド符号と第１オペランド量を有する第１オペランドと第２オペランド符号と第２オペランド量を有する第２オペランドを特定する命令をフェッチするステップと、前記第２オペランドが零であるか判断し、そうである場合には、前記命令の最終結果としてゼロを格納するステップと、前記第２オペランドが非零であるか判断し、そうである場合には、前記第１オペランド量に等しい最終結果量と、前記第２オペランド量のユニタリ値と非ユニタリ値に対する前記第１オペランド符号と前記第２オペランド符号の関数である最終結果符号とを有する最終結果を格納するステップとを有することを特徴とする。
【００１２】
上記課題を解決するために、本発明による方法は、第１オペランドと第２オペランドを特定する命令をフェッチするステップと、前記第２オペランドが正であるか判断し、そうである場合には、前記命令の結果として前記第１オペランドを格納するステップと、前記第２オペランドが負であるか判断し、そうである場合には、前記命令の結果として前記第１オペランドに−１を乗じた値を格納するステップと、前記第２オペランドが零であるか判断し、そうである場合には、前記命令の結果としてゼロを格納するステップとを有することを特徴とする。
【００１３】
上記課題を解決するために、本発明によるシステムは、第１Ｐａｃｋｅｄデータ命令と、複数の第１ソースデータ要素から構成される第１Ｐａｃｋｅｄデータと、複数の第２ソースデータ要素から構成される第２Ｐａｃｋｅｄデータとを格納するメモリと、前記第１Ｐａｃｋｅｄデータ命令を実行し、複数の結果Ｐａｃｋｅｄデータ要素から構成される結果Ｐａｃｋｅｄデータをプロセッサ格納領域に格納するプロセッサとを有するシステムであって、前記複数の結果Ｐａｃｋｅｄデータ要素の各々は、前記複数の第２ソースデータ要素の非零値に対し前記複数の第１ソースデータ要素と前記複数の第２ソースデータ要素の対応するものの両方の符号の関数であり、前記複数の第２ソースデータ要素の前記対応するもののユニタリ値と非ユニタリ値に対し前記複数の第１Ｐａｃｋｅｄデータ要素の前記対応するものの大きさの関数であることを特徴とする。
【００１４】
上記課題を解決するために、本発明による物品は、装置を実現するよう製造あるいはシミュレートされるマシーン読み出し可能な媒体を有する物品であって、前記装置は、格納領域と、第１オペランドと第２オペランドに対し第１命令を実行し、該第１命令に応答して、前記第２オペランドが正である場合には前記第１オペランドの値を、前記第２オペランドが零である場合にはゼロの値を、前記第２オペランドが負である場合には前記第１オペランドの否定の値を有する結果を前記格納領域に格納する実行リソースとを有することを特徴とする。
【００１５】
上記課題を解決するために、本発明による装置は、格納領域と、第１の大きさと第１オペランド初期符号を有する第１オペランドと第２オペランド符号を有する第２オペランドに対し第１命令を実行する実行リソースとを有する装置であって、前記実行リソースは、前記第１命令に応答して、前記第２オペランドが正である場合には前記第１の大きさと前記第１オペランド初期符号を有する結果を、前記第２オペランドが零である場合にはゼロである結果を、前記第２オペランドが負である場合には前記第１の大きさ及び前記第１オペランド初期符号と前記第２オペランド符号との積である符号結果を有する結果を前記格納領域に格納することを特徴とする。
【発明の効果】
【００１６】
以上のように、本発明によれば、符号乗算処理を実行するための装置、プロセッサ、方法、システム及び物品が得られる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施の形態について図面に基づいて説明する。ここで、本発明は添付される図面に制限されるものではない。また図面中、同一の参照記号は同一の要素を示している。
【００１８】
以下の説明は符号乗算処理を実行する方法、装置及び命令の実施例を説明する。以下の説明において、本発明のより完全なる理解を提供するために、プロセッサタイプ、マイクロアーキテクチャ状態、イベント、実施可能な機構などのような具体的詳細が与えられる。しかしながら、本発明はこのような具体的詳細以外でも実践可能であるということは当業者には認識されるであろう。さらに、周知の構成及び回路などは、本発明を不必要に不明瞭にしないよう詳細には示されていない。
【００１９】
以下の実施例はプロセッサに関し説明されるが、他の実施例では、他のタイプの集積回路及び論理装置に適用することもできる。本発明の同様なテクニック及び教示は、より高いパイプラインスループット及び性能を享受しうる他のタイプの回路あるいは半導体デバイスに容易に適用することができる。本発明の教示は、データ操作を実行する任意のプロセッサあるいはマシーンに適用可能である。しかしながら、本発明は、２５６ビット、１２８ビット、６４ビット、３２ビットあるいは１６ビットデータ処理を実行するプロセッサあるいはマシーンに限定されるものでなく、Ｐａｃｋｅｄデータに対する操作が必要とされる任意のプロセッサ及びマシーンに適用することができる。
【００２０】
以下の記述では、説明のため、本発明の完全な理解を提供するため様々な具体的詳細が与えられる。本発明の実践に対し、これら具体的詳細が必ずしも必要でないということは当業者には認識されるであろう。また、周知の電気構造及び回路は、本発明を不必要に不明瞭にしないよう詳細には与えられていない。さらに、以下の説明は実施例を与えるものであり、添付される図面は例示のため様々な実施例を示している。しかしながら、これらの実施例は限定のためのものと解釈されるべきでない。これらの実施例は、本発明のすべての可能な実現を包括的に列挙するものでなく、単に本発明の一例を提供することを目的としている。
【００２１】
以下の実施例は実行ユニットや論理回路に関する命令処理や配置を説明するが、本発明の他の実施例はソフトウェアにより達成可能である。一実施例において、本発明による方法は、マシーン実行可能な命令により実現される。これらの命令により、プログラム可能な汎用あるいは特定用途向けプロセッサが本発明の各ステップを実行する。本発明に従う処理を実行するコンピュータ（あるいは他の電子装置）をプログラムするのに利用される命令を格納したマシーンまたはコンピュータによる読み出し可能な媒体を含むコンピュータプログラムプロダクツまたはソフトウェアとして本発明は提供される。あるいは、本発明の各ステップは、これらのステップを実行する配線論理を含む特定のハードウェア要素により実行されてもよいし、あるいはプログラムされたコンピュータ構成要素及びカスタムハードウェア構成要素による任意の組み合わせにより実行されてもよい。このようなソフトウェアはシステム内のメモリに格納することが可能である。同じように、そのようなコードはネットワークを介し、あるいは他のコンピュータ読み出し可能な媒体により配信可能である。
【００２２】
従って、マシーン読み出し可能な媒体は、以下に限定されるものではないが、フロッピーディスク（登録商標）、光ディスク、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）、ＣＤ−ＲＯＭ（ＣＤ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、光磁気ディスク、ＲＯＭ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、磁気あるいは光カード、フラッシュメモリ、インターネット上の送信、電子、光、音響あるいは他の搬送信号（例えば、搬送波、赤外線信号、デジタル信号など）などのマシーン（例えば、コンピュータ）により読み出し可能な形態での情報の格納及び送信のための任意の機構が含まれる。従って、コンピュータ読み出し可能な媒体には、マシーン（例えば、コンピュータ）による読み出し可能な形態により電子的命令あるいは情報の格納または送信に適した任意のタイプのメディア／マシーン読み出し可能な媒体が含まれる。さらに、本発明はまた、コンピュータプログラムプロダクツとしてダウンロード可能であってもよい。その場合、プログラムはリモートコンピュータ（例えば、サーバ）からリクエストコンピュータ（例えば、クライアント）に転送される。プログラムの転送は、電子、光、音響あるいは搬送波で実現される他の形態のデータ信号、あるいは通信リンク（例えば、モデム、ネットワーク接続など）を介した他の伝搬媒体により実行されてもよい。
【００２３】
設計は、制作からシミュレーションそして製造と様々な段階を経ているかもしれない。設計を表すデータは様々な方法で当該設計を表しているかもしれない。まず、シミュレーションにおいて有益なように、ハードウェア記述言語や他の機能記述言語を使ってハードウェアが表現される。さらに、論理及び／あるいはトランジスタゲートによる回路レベルのモデルが設計処理のある段階において生成される。さらに、ある段階では、大部分の設計がハードウェアモデルの様々な装置の物理的配置を表すデータレベルに達する。従来の半導体製造技術が利用される場合、ハードウェアモデルを表すデータは、集積回路の生成に利用されるマスクのマスクレイヤに関する様々な特徴の有無を特定するデータであるかもしれない。任意の設計表現において、このデータは任意の形態のマシーン読み出し可能な媒体に格納することができる。このような情報の送信のため生成あるいは変調される光または電気波、メモリ、ディスクのような磁気または光記憶装置などは、マシーン読み出し可能な媒体である。これらの媒体の何れもが設計やソフトウェア情報を「搬送」または「表現」することができる。コードや設計を示し搬送する電気搬送波が送信されるとき、電気信号のコピー、バッファリングあるいは再送が実行される程度まで新たなコピーが行われる。従って、通信プロバイダやネットワークプロバイダは本発明のテクニックを実現するもの（搬送波）のコピーを行える。
【００２４】
今日のプロセッサでは、様々なコードと命令の処理及び実行に多くの実行ユニットが利用されている。命令の中には即座に完了するものがある一方、膨大なクロックサイクルを要する命令もあるので、必ずしもすべての命令が等しく生成されるとは限らない。命令のスループットが速くなるほど、プロセッサの全体的なパフォーマンスはより向上する。従ってできる限り多くの命令を高速に実行させることが望ましい。しかしながら、より大きな複雑さを有し、より多くの実行時間及びプロセッサリソースを要する命令もある。例えば、浮動小数点命令、ロード／ストア処理、データ転送などが挙げられる。
【００２５】
ますます多くのコンピュータシステムがインターネットやマルチメディアアプリケーションにおいて利用されるに従い、追加的なプロセッササポートがこれまで導入されてきた。例えば、単一命令多重データ（ＳＩＭＤ）整数／浮動小数点命令やストリーミングＳＩＭＤエクステンション（ＳＳＥ）は、特定のプログラムタスクの実行に要する全体の命令数を減少させる命令である。これらの命令は、複数のデータ要素に対し並列処理を行うことにより、ソフトウェアパフォーマンスの高速化を可能にする。これにより、映像、音声、及び画像／フォト処理を含む広範なアプリケーションにおいてパフォーマンスの向上を達成することが可能となる。通常、マイクロプロセッサや類似の論理回路におけるＳＩＭＤ命令の実現には多くの発行が伴う。さらに、ＳＩＭＤ処理の複雑さはしばしば、正確なデータ処理及び操作のための追加的回路の必要性を生じさせる。
【００２６】
現時点では、ＳＩＭＤ符号乗算命令は利用可能となっていない。また絶対値の処理に関するＳＩＭＤ命令も提供されていない。乗算を行う符号処理がなければ、音声／映像の圧縮、処理及び操作のようなアプリケーションにおいて同じ結果を得るためには、多くの命令とデータレジスタが必要となる。このような背景に基づき、本発明による符号命令はコードオーバーヘッドとリソース要求を軽減させることを可能にする。本発明の実施例では、ＳＩＭＤ関連のハードウェアを利用するアルゴリズムとして、符号処理を実現する方法が提供される。いくつかの実施例ではまた、絶対値処理を実現する方法が提供される。現時点では、ＳＩＭＤレジスタにおけるデータを処理することは困難である。アルゴリズムの中には、算術処理のためのデータ配置に要する命令が、これらの処理の実行に要する命令数より多くなるものもある。本発明による符号乗算処理の実施例を実行することにより、符号処理に要する命令数を大きく低減させることができる。
【００２７】
本発明の実施例は、ｓｉｇｎｕｍ処理の変形を実現する命令に関する。ｓｉｇｎｕｍ処理では、所与の数が正、負あるいはゼロであるか決定される。ｓｉｇｎｕｍ処理においては、ｘ＞０に対してｓｉｇｎｕｍ（ｘ）＝１、ｘ＝０に対してｓｉｇｎｕｍ（ｘ）＝０、ｘ＜０に対してｓｉｇｎｕｍ（ｘ）＝−１として関数は数を評価する。しかしながら、マルチメディアアプリケーションでは、様々なアルゴリズムにおいてあるデータ値と他のデータ値の符号の乗算がしばしば必要とされる。符号乗算処理は、多くの異なる処理の実行を回避することができる。提供される符号処理の実施例では、乗算処理を含むｓｉｇｎｕｍよりも機能性の高い処理方法が提供される。
【００２８】
本発明による符号命令は、ＤＥＳＴ＝ＳＲＣ１×ＳＩＧＮＵＭ（ＳＲＣ２）を計算する。ＳＲＣ２が正である場合、ＳＲＣ２のｓｉｇｎｕｍは「＋１」となる。ＳＲＣ２がゼロである場合、ＳＲＣ２のｓｉｇｎｕｍはゼロとなる。ＳＲＣ２が不である場合、ＳＲＣ２のｓｉｇｎｕｍは「−１」となる。本発明の実施例による符号乗算処理では、第２データ要素のｓｉｇｎｕｍがとられ、このｓｉｇｎｕｍがとられた結果と第１データ要素の値が掛け合わされ、結果としての積が得られる。一実施例の符号処理が、個々のデータ要素に適用されるとき、以下のように表すことができる。
【００２９】
【表１】
2005025719.tif 000003
Ｐａｃｋｅｄデータオペランドに対し、このフローが各データ要素位置に適用される。
【００３０】
さらに、符号乗算処理の一実施例はまた、符号処理において第１ソース要素として「１」を、第２ソース要素として対象となる値を利用することによってｓｉｇｎｕｍ処理を代替することができる。本実施例の符号処理は、第２要素の符号に基づき第１ソース要素と「＋１」、「０」及び「−１」の１つを掛け合わせるので、ｓｉｇｎｕｍを複製することができる。同様に、本発明の符号処理の実施例はまた、第１ソース要素を第２ソース要素と同じ符号に設定することにより絶対値処理を実行することができる。これは、ソース値が同一の符号と実質的に乗算されるためであり、結果としての値を「０」または正とすることができる。
【００３１】
図１Ａは、本発明の一実施例による符号乗算処理のための命令を実行する実行ユニットを含むプロセッサにより構成される一例となるコンピュータシステムのブロック図である。システム１００は、ここで説明される実施例のような本発明によるデータ処理アルゴリズムを実行する論理を含む実行ユニットを利用するプロセッサ１０２のような構成要素を備える。システム１００は、カリフォルニア州サンタクララのインテルコーポレーションより入手可能なＰＥＮＴＩＵＭ（登録商標）ＩＩＩ、ＰＥＮＴＩＵＭ（登録商標）４、Ｘｅｏｎ（商標）、Ｉｔａｎｉｕｍ（登録商標）、ＸＳｃａｌｅ（商標）及び／またはＳｔｒｏｎｇＡＲＭ（登録商標）マイクロプロセッサに基づく処理システムにより代表される。しかしながら、（他のマイクロプロセッサ、エンジニアリング・ワークステーション、セットトップボックスなどを含む）他のシステムが利用されてもよい。一実施例では、サンプルシステム１００は、ワシントン州レッドモンドのマイクロソフトコーポレーションから入手可能なあるバージョンのＷＩＮＤＯＷＳ（登録商標）オペレーティングシステムを実行してもよい。しかしながら、（例えば、ＵＮＩＸ（登録商標）やＬｉｎｕｘのような）他のオペレーティングシステム、埋め込みソフトウェア及び／またはグラフィカルユーザインタフェースが使われてもよい。本発明は、ハードウェア回路とソフトウェアの特定の組み合わせに限定されるものではない。
【００３２】
ここでの実施例はコンピュータシステムに限定されるものではない。本発明の他の実施例では、携帯装置や埋め込みアプリケーションのような他の装置において利用可能である。携帯装置の例として、携帯電話、インターネットプロトコル装置、デジタルカメラ、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、及び携帯型パーソナルコンピュータなどが含まれる。埋め込みアプリケーションには、マイクロコントローラ、デジタル信号プロセッサ（ＤＳＰ）、システムオンチップ、ネットワークコンピュータ（ＮｅｔＰＣ）、セットトップボックス、ネットワークハブ、ワイドエリアネットワーク（ＷＡＮ）スイッチ、あるいはオペランドに対し符号及び／または絶対値処理を実行する他のシステムなどが含まれる。さらに、マルチメディアアプリケーションの効率向上のため、同時に複数のデータに対し処理する命令を可能にするよう実現されたアーキテクチャがある。データタイプやデータ量が増大するに従い、より効率的な方法によりデータを操作できるようコンピュータ及びそのプロセッサの性能を向上させねばならない。
【００３３】
図１Ａは、１つのオペランドからデータ要素の符号を抽出し、当該符号を他のデータ要素に掛ける本発明によるアルゴリズムを処理する１つ以上の実行ユニット１０８を備えるプロセッサ１０２により構成されるコンピュータシステム１００のブロック図である。本実施例は単一のプロセッサデスクトップやサーバシステムに関し説明されるが、他の実施例はマルチプロセッサシステムに含まれるよう構成することができる。システム１００はハブアーキテクチャの一例である。コンピュータシステム１００は、データ信号を処理するプロセッサ１０２を有する。プロセッサ１０２は、複合命令セットコンピュータ（ＣＩＳＣ）マイクロプロセッサ、縮小命令セットコンピュータ（ＲＩＳＣ）マイクロプロセッサ、ＶＬＩＷ（Ｖｅｒｙ  Ｌｏｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｗｏｒｄ）マクロプロセッサ、命令セットの組み合わせを実現するプロセッサ、あるいはデジタル信号プロセッサのような他のプロセッサ装置でありうる。プロセッサ１０２は、プロセッサ１０２とシステム１００内の他の構成要素との間のデータ信号を送信することができるプロセッサバス１１０に接続される。システム１００の構成要素は、当業者には周知のそれの既存の機能を実行する。
【００３４】
一実施例では、プロセッサ１０２はレベル１（Ｌ１）内部キャッシュメモリ１０４を含む。アーキテクチャに応じて、プロセッサ１０２は単一の内部キャッシュあるいは複数レベルの内部キャッシュを有する。また他の実施例では、キャッシュメモリはプロセッサ１０２の外部に設けられていてもよい。他の実施例ではまた、要求される実施形態に応じて、内部キャッシュと外部キャッシュの両方の組み合わせが含まれうる。レジスタファイル１０６は、様々なタイプのデータを整数レジスタ、浮動小数点レジスタ、ステータスレジスタ及び命令ポインタレジスタを含む様々なレジスタに格納することができる。
【００３５】
実行ユニット１０８は、整数及び浮動小数点処理を実行する論理を含み、プロセッサ１０２に設けられる。プロセッサ１０２はまた、あるマクロ命令のためのマイクロコードを格納するマイクロコード（ｕｃｏｄｅ）ＲＯＭを備えていてもよい。本実施例では、実行ユニット１０８はＰａｃｋｅｄ命令セット１０９を扱う論理を含んでいる。一実施例において、Ｐａｃｋｅｄ命令セット１０９は、データの符号を変えるためのＰａｃｋｅｄ符号命令を含んでいる。汎用プロセッサ１０２の命令セットのＰａｃｋｅｄ命令セット１０９を、命令を実行する関連回路と共に含めることにより、多くのマルチメディアアプリケーションにより利用される処理が、汎用プロセッサ１０２のＰａｃｋｅｄデータを使うことにより実行されてもよい。これにより、Ｐａｃｋｅｄデータに処理を実行するためのプロセッサのデータバスの全幅を使用することにより、多くのマルチメディアアプリケーションがより効率的に実行されうる。この結果、１つのデータ要素に１つ以上の処理を同時に実行するために、より小さいデータユニットをプロセッサのデータバスに送信する必要がなくなる。
【００３６】
実行ユニット１０８の他の実施例はまた、マイクロコントローラ、埋め込みプロセッサ、グラフィックス装置、ＤＳＰ及び他のタイプの論理回路において利用可能である。システム１００はメモリ１２０を備える。メモリ１２０は、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）装置、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）装置、フラッシュメモリ装置、あるいは他のメモリ装置であってもよい。メモリ１２０は、プロセッサ１０２により実行可能なデータ信号により表される命令及び／あるいはデータを格納することができる。
【００３７】
システム論理チップ１１６は、プロセッサバス１１０とメモリ１２０に接続される。例示された実施例のシステム論理チップ１１６はメモリコントローラハブ（ＭＣＨ）である。プロセッサ１０２は、プロセッサバス１１０を介しＭＣＨ１１６と通信することができる。ＭＣＨ１１６は、命令及びデータの格納と、グラフィックスコマンド、データ及びテクスチャの格納のため、メモリ１２０への高帯域幅メモリパス１１８を与える。ＭＣＨ１１６は、プロセッサ１０２、メモリ１２０及びシステム１００の他の構成要素間においてデータ信号を導き、プロセッサバス１１０、メモリ１２０及びシステムＩ／Ｏ１２２間においてデータ信号をブリッジする。いくつかの実施例では、システム論理チップ１１６は、グラフィックスコントローラ１１２への接続のために、グラフィックスポートを備えうる。ＭＣＨ１１６は、メモリインタフェース１１８を介しメモリ１２０に接続される。グラフィックスカード１１２は、ＡＧＰ（Ａｃｃｅｌｅｒａｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ）インターコネクト１１４を介しＭＣＨ１１６に接続される。
【００３８】
システム１００は、専用ハブインタフェースバス１２２を使って、ＭＣＨ１１６をＩ／Ｏコントローラハブ（ＩＣＨ）１３０に接続する。ＩＣＨ１３０は、ローカルＩ／Ｏバスを介しいくつかのＩ／Ｏ装置への直接の接続を提供する。ローカルＩ／Ｏバスは、周辺装置をメモリ１２０、チップセット及びプロセッサ１０２に接続する高速Ｉ／Ｏバスである。いくつかの例は、音声コントローラ、ファームウェアハブ（フラッシュＢＩＯＳ）１２８、無線送信機１２６、データ記憶装置１２４、ユーザ入力及びキーボードインタフェースを含む既存のＩ／Ｏコントローラ、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）のようなシリアル拡張ポート、及びネットワークコントローラ１３４である。データ記憶装置１２４は、ハードディスクドライブ、フロッピーディスク（登録商標）ドライブ、ＣＤ−ＲＯＭ装置、フラッシュメモリ装置、または他の大容量記憶装置から構成されうる。
【００３９】
システムの他の実施例では、符号命令によるアルゴリズムを実行する実行ユニットは、システムオンチップと共に利用することができる。システムオンチップの一実施例は、プロセッサとメモリから構成される。そのようなシステムのためのメモリはフラッシュメモリである。フラッシュメモリは、プロセッサ及び他のシステム構成要素と同じチップ上に設けられる。さらに、メモリコントローラやグラフィックスコントローラのような他の論理ブロックがまた、システムオンチップ上に配置されうる。
【００４０】
図１Ｂは、本発明の原理を実現するデータ処理システム１４０の他の実施例を示す。データ処理システム１４０の一実施例は、（ｗｗｗ．ｉｎｔｅｌ．ｃｏｍにて説明されるような）インテルＸＳｃａｌｅ（商標）技術によるインテル（登録商標）パーソナルインターネットクライアントアーキテクチャ（ＰＣＡ）アプリケーションプロセッサである。ここで説明される実施例は、発明の範囲から逸脱することなく他の処理システムと共に利用することができるということは、当業者には認識されるであろう。
【００４１】
コンピュータシステム１４０は、符号及び絶対値を含むＳＩＭＤ処理を実行することができる処理コア１５９を備える。一実施例において、処理コア１５９は、ＣＩＳＣ、ＲＩＳＣ、ＶＬＩＷタイプアーキテクチャに限定されることなく、任意のタイプのアーキテクチャの処理ユニットを表す。処理コア１５９はまた、１以上の処理技術における製造に適したものであってもよいし、十分詳細にマシーン読み出し可能なメディアに表されることにより、処理コア１５９はこの製造の容易化に適したものであってもよい。
【００４２】
処理コア１５９は、実行ユニット１４２、レジスタファイルセット１４５、及びデコーダ１４４から構成される。処理コア１５９はまた、本発明の理解に必要でない追加的な回路（図示せず）を含んでもよい。実行ユニット１４２は、処理コア１５９により受信された命令の実行に利用される。典型的なプロセッサ命令の認識に加えて、実行ユニット１４２はＰａｃｋｅｄデータフォーマットに対する処理の実行のため、Ｐａｃｋｅｄ命令セット１４３における命令を認識することができる。Ｐａｃｋｅｄ命令セット１４３は、符号及び絶対値処理をサポートする命令を含み、またさらに他のＰａｃｋｅｄ命令を含んでいてもよい。実行ユニット１４２は内部バスによりレジスタファイル１４５に接続される。レジスタファイル１４５は、データを含む情報の格納のための処理コア１５９における記憶領域を表す。前述のように、Ｐａｃｋｅｄデータの格納に利用される記憶領域が何れであるかは重要ではないということは理解されるであろう。実行ユニット１４２はデコーダ１４４に接続される。デコーダ１４４は、処理コア１５９により受信された命令を制御信号及び／あるいはマイクロコード入力ポイントに復号するために利用される。これらの制御信号及び／あるいはマイクロコード入力ポイントに応答して、実行ユニット１４２は適切な処理を実行する。
【００４３】
処理コア１５９は、以下に限定されるものではないが、例えば、ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）コントロール１４６、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）コントロール１４７、バーストフラッシュメモリインタフェース１４８、ＰＣＭＣＩＡ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ  Ｍｅｍｏｒｙ  Ｃａｒｄ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ａｓｓｏｃｉａｔｉｏｎ）／ＣＦ
（Ｃｏｍｐａｃｔ  Ｆｌａｓｈ）カードコントロール１４９、液晶（ＬＣＤ）コントロール１５０、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コントローラ１５１、及び代替バスマスタインタフェース１５２を含む他の様々なシステム装置と通信するためのバス１４１に接続される。一実施例では、データ処理システム１４０はまた、Ｉ／Ｏバス１５３を介し様々なＩ／Ｏ装置と通信するためのＩ／Ｏブリッジ１５４を備える。このようなＩ／Ｏ装置は、以下に限定されるものではないが、例えば、ＵＡＲＴ（Ｕｎｉｖｅｒｓａｌ  Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｒｅｃｅｉｖｅｒ／Ｔｒａｎｓｍｉｔｔｅｒ）１５５、ＵＳＢ１５６、ブルートゥース無線ＵＡＲＴ１５７、及びＩ／Ｏ拡張インタフェース１５８から構成されてもよい。
【００４４】
データ処理システム１４０の一実施例は、モバイル、ネットワーク及び／あるいは無線通信のために、符号または絶対値処理を含むＳＩＭＤ処理を実行することができる処理コア１５９を備える。処理コア１５９は、ウォルシュアダマール変換、高速フーリエ変換（ＦＦＴ）、離散コサイン変換（ＤＣＴ）及びそれら各自の逆変換などの離散変換と、色空間変換、映像符号化動き予測または映像復号化動き予測などの圧縮／解凍技術と、パルス符号変調（ＰＣＭ）のような変調／復調（ＭＯＤＥＭ）機能とを含む様々な音声、映像、画像形成及び通信アルゴリズムによりプログラムされてもよい。
【００４５】
図１Ｃは、ＳＩＭＤ符号または絶対値処理を実行することができるデータ処理システムの他の実施例を示す。他の実施例によると、データ処理システム１６０は、メインプロセッサ１６６、ＳＩＭＤコプロセッサ１６１、キャッシュメモリ１６７及び入出力システム１６８を備える。入出力システム１６８は、選択的に無線インタフェース１６９に接続されてもよい。ＳＩＭＤコプロセッサ１６１は、符号または絶対値を含むＳＩＭＤ処理を実行することができる。処理コア１７０は、１つ以上の処理技術における製造に適したものであってよいし、十分詳細にマシーン読み出し可能なメディアに表すことにより、処理コア１７０はそれを含んだデータ処理システム１６０のすべてあるいは一部の製造を容易化するのに適したものであってもよい。
【００４６】
一実施例において、ＳＩＭＤコプロセッサ１６１は、実行ユニット１６２とレジスタファイルセット１６４から構成される。メインプロセッサ１６５の一実施例は、実行ユニット１６２による実行のため、ＳＩＭＤ符号及び絶対値命令を含む命令セット１６３の命令を認識するデコーダ１６５を備える。他の実施例では、ＳＩＭＤコプロセッサ１６１はまた、命令セット１６３の命令を復号するデコーダ１６５Ｂの少なくとも一部を備える。処理コア１７０はまた、本発明の理解に必要でない追加的回路（図示せず）を含む。
【００４７】
動作中、メインプロセッサ１６６は、キャッシュメモリ１６７と入出力システム１６８との相互作用を含む一般的タイプのデータ処理動作を制御するデータ処理命令のストリームを実行する。ＳＩＭＤコプロセッサ命令は、データ処理命令のストリームに埋め込まれる。メインプロセッサ１６６のデコーダ１６５は、装着されたＳＩＭＤコプロセッサ１６１により実行されるべきタイプとしてこれらのＳＩＭＤコプロセッサ命令を発する。従って、メインプロセッサ１６６は、これらのＳＩＭＤコプロセッサ命令（あるいはＳＩＭＤコプロセッサ命令を表す制御信号）をコプロセッサバス１６６において発行し、そこから装着されたＳＩＭＤコプロセッサにより受信される。この場合、ＳＩＭＤコプロセッサ１６１は受信したＳＩＭＤコプロセッサ命令を受領及び実行する。
【００４８】
ＳＩＭＤコプロセッサ命令による処理のため、データは無線インタフェース１６９を介し受信されてもよい。一例として、音声通信はデジタル信号の形式で受け取られ、当該音声信号を表すデジタル音声サンプルを再生成するためＳＩＭＤコプロセッサ命令により処理されてもよい。他の例として、圧縮された音声及び／または映像がデジタルビットストリーム形式で受信され、デジタル音声サンプル及び／または動き映像フレームを再生成するためＳＩＭＤコプロセッサ命令により処理されてもよい。一実施例において、処理コア１７０、メインプロセッサ１６６及びＳＩＭＤコプロセッサ１６１は、実行ユニット１６２、レジスタファイルセット１６４及びデコーダ１６５からなる単一の処理コア１７０に一体化され、ＳＩＭＤ符号及び絶対値命令を含む命令セット１６３の命令を認識する。
【００４９】
図２は、本発明による符号乗算処理を実行する論理回路を有する一実施例のプロセッサ２００のためのマイクロアーキテクチャのブロック図である。符号処理はまた、上述のように、Ｐａｃｋｅｄ符号処理またはＰａｃｋｅｄ符号命令と呼ばれるかもしれない。符号命令の一実施例では、当該命令により、第１データ要素と第２データ要素の符号が乗算される。この命令はまたＰＳＩＧＮあるいはＰａｃｋｅｄ符号とも呼ばれる。本実施例では、符号命令はまた、バイトサイズ、ワードサイズ、ダブルワードサイズ、クアドワードサイズなどを有するデータ要素を処理するよう実現されてもよい。イン・オーダーフロントエンド（ｉｎ−ｏｒｄｅｒ  ｆｒｏｎｔ  ｅｎｄ）２０１は、実行対象のマクロ命令をフェッチし、プロセッサパイプラインにおける後の利用のため当該命令を用意するプロセッサ２００の一部である。本実施例のフロントエンド２０１は複数のユニットを備えている。命令プリフェッチャ２２６は、メモリからマクロ命令をフェッチし、命令デコーダ２２８に供給し、マシーンにより実行可能なマイクロ命令あるいはマイクロ処理（または、マイクロｏｐあるいはｕｏｐと呼ばれる）と呼ばれる要素に復号する。トレースキャッシュ２３０は、復号化されたｕｏｐを受け取り、実行のためｕｏｐキュー２３４においてそれらが順序付けされたプログラムシーケンスあるいはトレースに分解する。トレースキャッシュ２３０が複雑なマクロ命令に直面すると、マイクロコードＲＯＭ２３２が当該処理の完了に必要なｕｏｐを提供する。
【００５０】
多くのマクロ命令が１つのマイクロｏｐに変換される一方、他のマクロ命令は完全な処理の完了のため複数のマイクロｏｐを必要とする。一実施例では、マクロ命令の完了のため４より多くのマイクロｏｐが必要な場合、デコーダ２２８はマイクロコードＲＯＭ２３２にアクセスし、マクロ命令を実行する。一実施例では、Ｐａｃｋｅｄ符号命令が、命令デコーダ２２８における処理のため少数のマイクロｏｐに復号される。他の実施例では、Ｐａｃｋｅｄ符号アルゴリズムのための命令が、処理の完了に多数のマイクロｏｐが必要とされる場合、マイクロＲＯＭ２３２に格納される。トレースキャッシュ２３０は、入力ポイントＰＬＡ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ａｒｒａｙ）を参照し、マイクロコードＲＯＭ２３２におけるマージアルゴリズムのためのマイクロコードシーケンスを読み込むための正しいマイクロ命令ポインタを決定する。マイクロコードＲＯＭ２３２が現在のマクロ命令に対するマイクロｏｐの順序付けを完了すると、マシーンのフロントエンド２０１はトレースキャッシュ２３０からマイクロｏｐの取り込みを再開する。
【００５１】
いくつかのＳＩＭＤ及び他のマルチメディアタイプの命令は複雑な命令とみなされる。浮動小数点に関する大部分の命令もまた複雑な命令である。さらに、命令デコーダ２２８が複雑なマクロ命令に直面すると、マイクロコードＲＯＭ２３２は当該マクロ命令のためのマイクロコードシーケンスを抽出するために、適当な位置でアクセスされる。このマクロ命令の実行に要する様々なマイクロｏｐが、適当な整数及び浮動小数点実行ユニットにおける実行のため、アウト・オブ・オーダー実行エンジン（ｏｕｔ−ｏｆ−ｏｒｄｅｒ  ｅｘｅｃｕｔｉｏｎ  ｅｎｇｉｎｅ）２０３に通信される。
【００５２】
アウト・オブ・オーダー実行エンジン２０３では、実行のためのマイクロ命令が用意されている。アウト・オブ・オーダー実行論理は、マイクロ命令がパイプラインに入り、実行のためスケジューリングされるとき、パフォーマンスを最適化するためマイクロ命令のフローを平滑化及び順序調整をするための複数のバッファを有する。割り当てまたはアロケータ論理は、各ｕｏｐが実行に必要とするマシーンバッファやリソースを割り当てる。レジスタリネーム論理は、レジスタファイルの入力の論理レジスタを改名する。割り当て論理はまた、メモリスケジューラ、高速スケジューラ２０２、低速／通常浮動小数点スケジューラ２０４、及びシンプル浮動小数点スケジューラ２０６の命令スケジューラの前に、メモリ処理及び非メモリ処理のための２つのｕｏｐキューの１つへの各ｕｏｐの入力を割り当てる。ｕｏｐスケジューラ２０２、２０４及び２０６は、スケジューラの従属入力レジスタオペランドソースの準備状況と、ｕｏｐが処理の遂行に必要とする実行リソースの利用可能状況に基づき、ｕｏｐの実行準備がいつ整うかを判断する。本実施例の高速スケジューラ２０２がメインクロックサイクルの半サイクルごとにスケジューリングを行う一方、その他のスケジューラはメインプロセッサクロックサイクルあたり１回だけスケジューリングを行うことができる。スケジューラはディスパッチポートを調停して、実行のためのｕｏｐをスケジューリングする。
【００５３】
レジスタファイル２０８と２１０は、スケジューラ２０２、２０４及び２０６と、実行ブロック２１１の実行ユニット２１２、２１４、２１６、２１８、２２０、２２２及び２２４との間に配置される。整数及び浮動小数点演算のためにそれぞれレジスタファイル２０８と２１０がある。本実施例のレジスタファイル２０８と２１０のそれぞれはまた、まだレジスタファイルに書き込まれていない終了結果を新しい従属ｕｏｐにバイパスあるいは転送するバイパスネットワークを含む。整数レジスタファイル２０８と浮動小数点レジスタファイル２１０はまた、互いにデータの通信を行うことができる。一実施例において、整数レジスタファイル２０８は２つのレジスタファイルに分割され、その一方は下位３２ビットデータ用のレジスタファイルであり、もう一方は上位３２ビットデータ用のレジスタファイルである。一実施例の浮動小数点レジスタファイルは２１０は、１２８ビット幅の入力を有する。これは浮動小数点命令は典型的に、６４から１２８ビット幅のオペランドを有するからである。
【００５４】
実行ブロック２１１は、命令を実際に実行する実行ユニット２１２、２１４、２１６、２１８、２２０、２２２及び２２４を含む。この部分は、マイクロ命令が実行に必要とする整数及び浮動小数点データオペランド値を格納するレジスタファイル２０８と２１０を含む。本実施例のプロセッサ２００は、アドレス生成ユニット（ＡＧＵ）２１２、ＡＧＵ２１４、高速ＡＬＵ２１６、高速ＡＬＵ２１８、低速ＡＬＵ２２０、浮動小数点ＡＬＵ２２２及び浮動小数点移動ユニット２２４からなる複数の実行ユニットから構成される。本実施例において、浮動小数点実行ブロック２２２と２２４は、浮動小数点処理、ＭＭＸ処理、ＳＩＭＤ処理及びＳＳＥ処理を実行する。本実施例の浮動小数点ＡＬＵ２２２は、割算、平方根及び剰余に関するマイクロｏｐを実行するための６４ビット単位浮動小数点割算器を有する。本発明の実施例では、浮動小数に関する任意の処理は浮動小数点ハードウェアで行われる。例えば、整数形式と浮動小数形式間の変換には、浮動小数点レジスタファイルが関与する。同じように、浮動小数割算処理は浮動小数点割算器において行われる。他方、非浮動小数点数及び整数タイプは整数ハードウェアリソースにより処理される。単純かつ頻繁に使用されるＡＬＵ演算は、高速ＡＬＵ実行ユニット２１６と２１８において処理される。本実施例の高速ＡＬＵ２１６と２１８は、半分のクロックサイクルの効果的な待ち時間により高速処理を実行することができる。一実施例では、大部分の複雑な整数演算は低速ＡＬＵ２２０に渡される。低速ＡＬＵ２２０は、乗算、シフト、フラグ論理及び分岐処理のような長い待ち時間を要するタイプの処理用の整数実行ハードウェアを含む。メモリロード／ストア処理は、ＡＧＵ２１２と２１４により実行される。本実施例では、整数ＡＬＵ２１６、２１８及び２２０は、６４ビットデータオペランドに対する整数処理の実行に関して説明される。他の実施例では、ＡＬＵ２１６、２１８及び２２０は、１６、３２、１２８、２５６などの様々なデータビットをサポートするよう実現することができる。同じように、浮動小数点ユニット２２２と２２４は、様々なビット幅を有するオペランドをサポートするよう実現することができる。一実施例では、浮動小数点ユニット２２２と２２４は、ＳＩＭＤ及びマルチメディア命令に関して、１２８ビット幅のＰａｃｋｅｄデータオペランドにおいて実行される。
【００５５】
本実施例では、ｕｏｐスケジューラ２０２、２０４及び２０６は、親ロードによる実行の終了前に、従属処理をディスパッチする。ｕｏｐはプロセッサ２００において投機的にスケジューリング及び実行されるので、プロセッサ２００はメモリミスを扱う論理を有する。データキャッシュにおいてデータロードがミスする場合、一時的に間違ったデータによるスケジューラから発せられた従属処理がパイプライン中に含まれるかもしれない。再生機構は、誤ったデータを利用した命令を追跡及び再実行する。従属処理のみが生成される必要があり、独立処理は終了させることができる。プロセッサの一実施例のスケジューラ及び再生機構はまた、符号処理及び絶対値処理のための命令シーケンスを捕えるよう設計される。
【００５６】
オペランドを特定するマクロ命令の一部として利用されるオン・ボードプロセッサの記憶領域を参照するのに、ここでは「レジスタ」という単語が使われる。言い換えると、ここで呼ばれるレジスタとは、プロセッサ外部から（プログラマーの視点から）見ることができるものである。しかしながら、一実施例のレジスタは特定タイプの回路に限定されない。むしろ一実施例のレジスタはデータの格納及び提供、及びここで説明される機能の実行が可能であればよい。ここで述べられるレジスタは、例えば、専用物理レジスタ、レジスタリネーミングを利用することによる動的に割り当てられた物理レジスタ、専用物理レジスタと動的に割り当てられる物理レジスタとを組み合わせたものなどのような様々なテクニックを利用したプロセッサ内部の回路により実現することができる。一実施例では、整数レジスタは３２ビット整数データを格納している。一実施例のレジスタファイルはまた、Ｐａｃｋｅｄデータのための８つのマルチメディアＳＩＭＤレジスタを含んでいる。以下の説明のため、レジスタは、カリフォルニア州サンタクララのインテルコーポレーションからのＭＭＸ技術が可能なマイクロプロセッサにおける６４ビット幅ＭＭＸ（商標）レジスタ（ｍｍレジスタ）のようなＰａｃｋｅｄデータの保持が可能なデータレジスタであると解釈される。このようなＭＭＸレジスタは、整数及び浮動小数点の両方の形式で利用可能であり、ＳＩＭＤとＳＳＥ命令を伴うＰａｃｋｅｄデータ要素により動作可能である。同様に、ＳＳＥ２技術に関する１２８ビット幅ＸＭＭレジスタもまた、そのようなＰａｃｋｅｄデータオペランドの保持に利用可能である。本実施例では、Ｐａｃｋｅｄデータと整数データの格納において、レジスタは２つのデータタイプ間での区別をする必要はない。
【００５７】
以下に示される実施例では、多数のデータオペランドが説明される。図３Ａは、本発明の一実施例によるマルチメディアレジスタでの様々なＰａｃｋｅｄデータタイプ表現を示す。本実施例のＰａｃｋｅｄバイトフォーマットは６つのＰａｃｋｅｄバイトデータ要素を含んでいる。図３Ａでは、１２８ビット幅のオペランドに対するＰａｃｋｅｄバイト３１０、Ｐａｃｋｅｄワード３２０及びＰａｃｋｅｄダブルワード（ｄｗｏｒｄ）３３０のデータタイプが示される。本実施例のＰａｃｋｅｄバイトフォーマット３１０は、１２８ビット長であり、１６のＰａｃｋｅｄバイトデータ要素を含んでいる。ここでは、１バイトは８ビットとして定義される。各バイトデータ要素の情報が、第０バイトに対しては第７ビットから第０ビットに、第１バイトに対しては第１５ビットから第８ビットに、第２バイトに対しては第２３ビットから第１６ビットに、最後に第１５バイトに対しては第１２８ビットから第１２０ビットにそれぞれ格納される。従って、利用可能なすべてのビットがレジスタにおいて利用される。この格納配置により、プロセッサの記憶効率の向上がもたらされる。１６のデータ要素がアクセスされると、１つの処理が１６のデータ要素に対し並列に実行される。
【００５８】
一般に、データ要素は、１つのレジスタあるいはメモリ領域に同じ長さの他のデータ要素と共に格納されるデータ部分である。ＳＳＥ２技術に関するＰａｃｋｅｄデータシーケンスにおいて、ＸＭＭレジスタに格納されるデータ要素数は、各データ要素のビット長により割られた１２８ビットである。同様に、ＭＭＸ及びＳＳＥ技術に関するＰａｃｋｅｄデータシーケンスでは、ＭＭＸレジスタに格納されるデータ要素数は、各データ要素のビット長により割られた６４ビットである。図３Ａに示されたデータタイプは１２８ビット長であるが、本発明の実施例はまた６４ビット幅あるいは他のサイズのオペランドにおいて動作可能である。本実施例のＰａｃｋｅｄワードフォーマット３２０は、１２８ビット長であり、８つのＰａｃｋｅｄワードデータ要素を含む。各Ｐａｃｋｅｄワードは１６ビットの情報を含んでいる。図３ＡのＰａｃｋｅｄダブルワードフォーマット３３０は、１２８ビット長であり、４つのＰａｃｋｅｄダブルワードデータ要素を含んでいる。各Ｐａｃｋｅｄダブルワードデータ要素は３２ビットの情報を含んでいる。Ｐａｃｋｅｄクアドワードは、１２８ビット長であり、２つのＰａｃｋｅｄクアドワードデータ要素を含んでいる。
【００５９】
図３Ｂは、他のイン・レジスタデータ記憶フォーマットを示す。各Ｐａｃｋｅｄデータは複数の独立データ要素を含みうる。Ｐａｃｋｅｄハーフ３４１、Ｐａｃｋｅｄシングル３４２及びＰａｃｋｅｄダブル３４３の３つのＰａｃｋｅｄデータフォーマットが示される。Ｐａｃｋｅｄハーフ３４１、Ｐａｃｋｅｄシングル３４２及びＰａｃｋｅｄダブル３４３の一実施例は定点データ要素を含んでいる。他の実施例では、Ｐａｃｋｅｄハーフ３４１、Ｐａｃｋｅｄシングル３４２及びＰａｃｋｅｄダブル３４３の１つ以上が浮動小数点データ要素を含みうる。Ｐａｃｋｅｄハーフ３４１の他の実施例は、８つの１６ビットデータ要素を含む１２８ビット長である。Ｐａｃｋｅｄシングル３４２の一実施例は、１２８ビット長であり、４つの３２ビットデータ要素を含む。Ｐａｃｋｅｄダブル３４３の一実施例は、１２８ビット長であり、２つの６４ビットデータ要素を含む。このようなＰａｃｋｅｄデータフォーマットは、例えば、９６ビット、１６０ビット、１９２ビット、２２４ビット、２５６ビットあるいはそれ以上の他のレジスタ長にさらに拡張することが可能であるということは理解されるであろう。
【００６０】
図３Ｃは、本発明の一実施例によるマルチメディアレジスタにおける様々な符号付き及び符合なしＰａｃｋｅｄデータタイプ表現を示す。符号なしＰａｃｋｅｄバイト表現３４４は、ＳＩＭＤレジスタへの符号なしＰａｃｋｅｄバイトの格納処理を示す。各バイトデータ要素のための情報が、第０バイトに対しては第７ビットから第０ビットに、第１バイトに対しては第１５ビットから第８ビットに、第２バイトに対しては第２３ビットから第１６ビットに、そして最後に第１５バイトに対しては第１２７ビットから第１２０ビットにそれぞれ格納される。従って、利用可能なすべてのビットがレジスタで利用される。この格納配置により、プロセッサの記憶効率の向上がもたらされる。１６のデータ要素がアクセスされると、１つの処理が１６のデータ要素に対し並列に実行される。符号付きＰａｃｋｅｄバイト表現３４５は、符号付きＰａｃｋｅｄバイトの格納を示している。ここで、各バイトデータ要素の第１８ビットは符号標識である。符号なしＰａｃｋｅｄワード表現３４６は、第７ワードから第０ワードがＳＩＭＤレジスタにどのように格納されているかを示している。符号付きＰａｃｋｅｄワード表現３４７は、符号なしＰａｃｋｅｄワードイン・レジスタ表現３４６と同様である。ここで、各ワードデータ要素の第１６ビットは符号標識である。符号なしＰａｃｋｅｄダブルワード表現３４８は、ダブルワードデータ要素がどのように格納されているかを示している。符号付きＰａｃｋｅｄダブルワード表現３４９は、符号なしＰａｃｋｅｄダブルワードイン・レジスタ表現３４８と同様である。ここで、必要な符号ビットは、各ダブルワードデータ要素の第３２ビットである。
【００６１】
図３Ｄは、「ｗｗｗ．ｉｎｔｅｌ．ｃｏｍ／ｄｅｓｉｇｎ／ｌｉｔｃｅｎｔｒ」を介しインテルコーポレーションから利用可能な「ＩＡ−３２インテルアーキテクチャソフトウェア開発者のためのマニュアル２」において説明されている一タイプの処理符号化フォーマット（オペコード）に対応する３２以上のビットを有する処理符号化フォーマットとレジスタ／メモリオペランドアドレッシングモードの一実施例を示す。符号乗算処理のタイプが、１つ以上のフィールド３６１と３６２により符号化される。２つまでのソースオペランド識別子３６４と３６５を含めて命令あたり２つまでのオペランドの位置が特定される。符号命令の一実施例において、宛先オペランド識別子３６６はソースオペランド識別子３６４と同一である。他の実施例においては、宛先オペランド識別子３６６はソースオペランド識別子３６５と同一である。従って、符号乗算処理の実施例において、ソースオペランド識別子３６４と３６５により特定されるソースオペランドの１つが符号処理の結果により上書きされる。符号命令の一実施例において、オペランド識別子３６４と３６５は、６４ビットソース及び宛先オペランドの特定に利用されうる。
【００６２】
図３Ｅは、４０ビット以上を有する他の処理符号化（オペコード）フォーマット３７０を示す。オペコードフォーマット３７０は、オペコードフォーマット３６０に対応し、選択的なプレフィックスバイト（ｐｒｅｆｉｘ  ｂｙｔｅ）３７８から構成される。符号乗算処理のタイプが１つ以上のフィールド３７８、３７１及び３７２により符号化される。命令あたり２つまでのオペランド位置がソースオペランド識別子３７４と３７５、及びプレフィックスバイト３７８により特定される。符号処理の一実施例において、１２８ビットソース及び宛先オペランドの特定にプレフィックスバイト３７８が利用される。符号命令の一実施例において、宛先オペランド識別子３７６はソースオペランド識別子３７４と同じである。他の実施例において、宛先オペランド識別子３７６はソースオペランド識別子３７５と同じである。従って、符号乗算処理の実施例において、ソースオペランド識別子３７４と３７５により特定されるソースオペランドの１つが符号処理の結果により上書きされる。オペコードフォーマット３６０と３７０はＭＯＤフィールド３６３と３７３及び選択的なスケール−インデックス−ベース（ｓｃａｌｅ−ｉｎｄｅｘ−ｂａｓｅ）及びディスプレースメント（ｄｉｓｐｌａｃｅｍｅｎｔ）バイトにより部分的に特定されるレジスタ・ツー・レジスタ（ｒｅｇｉｓｔｅｒ  ｔｏ  ｒｅｇｉｓｔｅｒ）、メモリ・ツー・レジスタ（ｍｅｍｏｒｙ  ｔｏ  ｒｅｇｉｓｔｅｒ）、レジスタ・バイ・メモリ（ｒｅｇｉｓｔｅｒ  ｂｙ  ｍｅｍｏｒｙ）、レジスタ・バイ・レジスタ（ｒｅｇｉｓｔｅｒ  ｂｙ  ｒｅｇｉｓｔｅｒ）、レジスタ・バイ・即値（ｒｅｇｉｓｔｅｒ  ｂｙ  ｉｍｍｅｄｉａｔｅ）、レジスタ・ツー・メモリ（ｒｅｇｉｓｔｅｒ  ｔｏ  ｍｅｍｏｒｙ）アドレッシングを可能にする。
【００６３】
図３Ｆに示されるように、他の実施例では、６４ビット単一命令多重データ（ＳＩＭＤ）算術処理が、コプロセッサデータ処理（ＣＤＰ）命令を通じ実行される。処理符号化（オペコード）フォーマット３８０は、ＣＤＰオペコードフィールド３８２と３８９を有するＣＤＰ命令を示す。符号または絶対値処理の他の実施例では、ＣＤＰ命令のタイプは１つ以上のフィールド３８３、３８４、３８７及び３８８により符号化される。２つまでのソースオペランド識別子３８５と３９０及び１つの宛先オペランド識別子３８６を含めて命令あたり３つまでのオペランド位置が特定される。コプロセッサの一実施例は、８、１６、３２及び６４ビット値に対し動作することができる。一実施例において、符号または絶対値処理が整数データ要素に対し実行される。いくつかの実施例では、条件フィールド３８１を利用して符号または絶対値命令が条件付きで実行されてもよい。いくつかの符号または絶対値命令では、ソースデータのサイズがフィールド３８３により符号化される。符号または絶対値命令のいくつかの実施例では、ゼロ（Ｚ）、ネガティブ（Ｎ）、キャリー（Ｃ）及びオーバーフロー（Ｖ）の検出がＳＩＭＤフィールドにおいて実行される。いくつかの命令では、サチュレーション（ｓａｔｕｒａｔｉｏｎ）のタイプがフィールド３８４により符号化される。
【００６４】
図４は、本発明によるＰａｃｋｅｄデータオペランドに対する符号処理を実行する論理の一実施例のブロック図である。本発明の実施例は、上述のような様々なタイプのオペランドに対し機能するよう実現される。一実施例において、本発明による符号処理は特定のデータタイプに関する処理を行う命令セットとして実現される。例えば、Ｐａｃｋｅｄ符号バイト（ＰＳＩＧＮＢ）命令は、バイトデータタイプの符号を決定するのに与えられる。Ｐａｃｋｅｄ符号ワード（ＰＳＩＧＮＷ）命令は、ワードデータタイプへの符号処理を行わせる。Ｐａｃｋｅｄ符号ダブルワード（ＰＳＩＧＮＤ）命令は、ダブルワードデータタイプへの符号乗算処理を実行させる。これらの命令は異なる名前が付けられているが、一般的な符号乗算処理は同様の方法で行われる。簡単化のために、以下の説明はデータ要素を処理するＰａｃｋｅｄ符号（ＰＳＩＧＮ）命令に関し与えられる。
【００６５】
本実施例の符号乗算処理のためのＰＳＩＧＮ命令は、第１データオペランドＤＡＴＡ  Ａ４１０と第２データオペランドＤＡＴＡ  Ｂ４２０の２つの情報から開始される。以下の説明では、ＤＡＴＡ  Ａ、ＤＡＴＡ  Ｂ及びＲＥＳＵＬＴＡＮＴは一般的に、オペランドあるいはデータブロックとして呼ばれ、以下に限定されるものではないが、レジスタ、レジスタファイル及びメモリ領域を含んでいる。一実施例では、各符号命令（ＰＳＩＧＮＢ、ＰＳＩＧＮＷ、ＰＳＩＧＮＤ）は１つのマイクロｏｐに復号される。他の実施例では、各命令はデータオペランドに符号処理を実行する様々なマイクロｏｐに復号される。本実施例では、オペランド４１０と４２０は、ワード幅のデータ要素を有するソースレジスタ／メモリに格納される１２８ビット幅の情報である。一実施例では、オペランド４１０と４２０は、１２８ビットＳＳＥ２  ＸＭＭレジスタのような１２８ビット長のＳＩＭＤレジスタに保持される。一実施例では、ＲＥＳＵＬＴＡＮＴ４４０はＸＭＭデータレジスタである。さらに、ＲＥＳＵＬＴＡＮＴ４４０は、ソースオペランドの１つと同じレジスタまたはメモリ領域であってもよい。特定の実施形態に応じて、オペランドとレジスタは、３２ビット、６４ビットまたは２５６ビットのような他の長さであってもよく、バイト、ダブルワードあるいはクアドワードサイズのデータ要素を有することもできる。本実施例のデータ要素はワードサイズであるが、同様の趣旨がバイト及びダブルワードサイズの要素に拡張されてもよい。データオペランドが６４ビット幅である場合、ＸＭＭレジスタの代わりにＭＭＸレジスタが利用される。
【００６６】
本実施例の第１オペランド４１０は、Ａ７、Ａ６、Ａ５、Ａ４、Ａ３、Ａ２、Ａ１、Ａ０の８つのデータ要素セットから構成される。各データ要素はＲＥＳＵＬＴＡＮＴ４４０のデータ要素位置に対応している。第２オペランド４２０は、Ｂ７、Ｂ６、Ｂ５、Ｂ４、Ｂ３、Ｂ２、Ｂ１、Ｂ０の８つのデータ要素セットから構成される。ここでのデータセグメントは同じ長さであり、各々は１ワード（１６ビット）のデータから構成される。しかしながら、データ要素とデータ要素位置は、ワード以外の他の粒度を有してもよい。各データ要素が１バイト（８ビット）、ダブルワード（３２ビット）またはクアドワード（６４ビット）である場合、１２８ビットオペランドはそれぞれ、１６バイト幅、４ダブルワード幅または２クアドワード幅のデータ要素を有する。本発明の実施例は、特定の長さのデータオペランドまたはデータセグメントに限定されるものではなく、実施形態に適したサイズとすることができる。
【００６７】
オペランド４１０と４２０は、レジスタ、メモリ領域、レジスタファイルあるいはそれらを組み合わせたものに配置される。データオペランド４１０と４２０は、符号命令と共に、プロセッサ内の実行ユニットの符号計算論理４３０に送られる。符号命令が実行ユニットに達するまでに、当該命令はプロセッサパイプラインにおいて前もって復号されるべきである。符号命令は、マイクロ処理（ｕｏｐ）形式あるいは他の復号形式とすることができる。本実施例では、２つのデータオペランド４１０と４２０が符号計算論理４３０において受信される。符号計算論理４３０は、第１オペランド４１０の各データ要素に対し符号またはｓｉｇｎｕｍを選び、第２オペランド４２０の対応するデータ要素位置のデータ要素の値を当該符号と掛け合わせ、ＲＥＳＵＬＴＡＮＴ４４０の適当な位置にこの乗算の積を配置する。乗算処理の基本原理がここで説明されるが、乗算による同じ所望の結果を得るための他の方法及び手段も可能である。例えば、一実施例では、乗算が乗算ユニットにより実行される。他の実施例では、値を変えなかったり、ゼロに設定したり、あるいは符号を「＋」から「−」あるいはその反対に変更するなどのアルゴリズムを処理する論理により同一の結果を得るようにしてもよい。
【００６８】
この符号抽出及び乗算処理が、第１オペランドのデータ要素位置の全体に繰り返される。本実施例のデータ処理は符号抽出と乗算処理から構成されているが、「符号処理」あるいは「符号乗算処理」という単語はまた、このようなデータ処理を参照するに一般的に使われる。一実施例では、すべてのデータ位置のデータ要素が並列に処理される。他の実施例では、データ要素位置の一部が同時に処理されるようにしてもよい。ここで、ＲＥＳＵＬＴＡＮＴ４４０は、Ｂ７×ＳＩＧＮＡ７、Ｂ６×ＳＩＧＮＡ６、Ｂ５×ＳＩＧＮＡ５、Ｂ４×ＳＩＧＮＡ４、Ｂ３×ＳＩＧＮＡ３、Ｂ２×ＳＩＧＮＡ２、Ｂ１×ＳＩＧＮＡ１、Ｂ０×ＳＩＧＮＡ０の８つの積から構成される。本実施例では、データ要素のｓｉｇｎｕｍあるいは符号（ＳＩＧＮＸ）は、非零正値に対しては「＋１」、非零負値に対しては「−１」、ゼロに対しては「０」とされる。アーキテクチャが「＋０」と「−０」が許されている他の実施例では、２つのタイプのゼロがゼロとして扱われ、当該データ要素のｓｉｇｎｕｍまたは符号は「０」とされる。
【００６９】
図５は、本発明の一実施例によるデータ要素への符号乗算処理の動作を示す。本実施例の符号処理は、図４の符号計算論理４３０において実行することができる。本実施例では、符号処理５３０が１つのデータ要素位置のデータ要素に関し説明される。第１データオペランドからの第１データ要素ＤＡＴＡ  ＥＬＥＭＥＮＴ  Ａ５１０と第２データオペランドからの第２データ要素ＤＡＴＡ  ＥＬＥＭＥＮＴ  Ｂ５２０が取り出される。各データ要素は、符号部と数値基底部を有する値から構成される。例えば、ＤＡＴＡ  ＥＬＥＭＥＮＴ  Ａ５１０は、ＳＩＧＮＡとＢＡＳＥＡからなる数５１２として解釈される。同じように、ＤＡＴＡ  ＥＬＥＭＥＮＴ  Ｂ５２０は、ＳＩＧＮＢとＢＡＳＥＢからなる数５２２として解釈される。
【００７０】
符号処理５３０において、符号計算論理は、第１オペランドの符号であるＤＡＴＡ  ＥＬＥＭＥＮＴ  Ａ５１０のＳＩＧＮＡを抽出し、ＤＡＴＡ  ＥＬＥＭＥＮＴ  Ｂ５２０の数とその符号を掛け合わせる。例えば、この論理は、ＳＩＧＮＡの値に応答して、適切な乗算処理を実行する。数の符号部は、正「＋」または負「−」である。数の数値部は、ゼロ「０」または非零値である。一実施例の符号処理では、論理は第１データ要素を、正「＋」、「０」または負「−」の１つに変換する。第１データ要素５１０が正である、すなわち、その符号が正である場合、正の符合は「＋１」であるＳＩＧＮＡと第２データ要素５２０との乗数として扱われ、当該データ位置の結果５４０は実質的に第２データ要素５２０となる。第１データ要素５１０がゼロである場合、このゼロは「０」であるＳＩＧＮＡと第２データ要素５２０との乗数として扱われ、第１データ要素５１０の符号はゼロとみなされ、ゼロの結果５２０が生成される。第１データ要素５１０が負である、すなわち、その符号が負である場合、当該データ位置の結果５４０は第２データ要素５２０と「−１」であるＳＩＧＮＡとの乗算の積となる。ＤＡＴＡ  ＥＬＥＭＥＮＴ  Ａ５１０とＤＡＴＡ  ＥＬＥＭＥＮＴ  Ｂ５２０に関する与えられたデータ要素位置に対する符号乗算処理の結果５４０は、「ＳＩＧＮＡ×ＤＡＴＡ  ＥＬＥＭＥＮＴＢ」となる。他の実施例では、当該論理は符号ＳＩＧＮＡとＳＩＧＮＢを掛け合わせ、結果として得られる符合をＢＡＳＥＢに適用し、当該データ位置に対する最終結果を生成する。
【００７１】
図６Ａは、本発明による符号乗算処理を実行するための回路６００の一実施例のブロック図である。本実施例の回路６００は、第１データオペランドからの要素の符号を評価し、第２ソースオペランドからの対応する要素と当該符号との積を効率的に計算する多重化構造論理から構成される。図６Ａの回路６００は、説明の簡単化のため結果として得られるＰａｃｋｅｄデータブロックの一データ要素位置に対し示されている。さらに、論理６００は、同一実行ユニットの複数のインスタンスにて存在するデータ要素位置に対し示されている。特定の実施形態に応じて、複数の回路要素が所望の個数のデータ要素に必要なものとして外挿される。例えば、８つのデータ要素に対して、この８つのデータ要素のすべてのビットを扱うのに十分なマルチプレクサと加算器が物理的に与えられてもよい。同じように、それぞれが１６データ要素を有する２つのオペランドを扱う回路の１６のインスタンスが設けられてもよい。他の実施例では、例えば、加算器６１４のような論理のいくつかがずべてのデータ要素位置において共有されていてもよい。また他の実施例では、回路はＰａｃｋｅｄデータの処理が可能とされ、複数のデータ要素位置のデータが当該論理により処理可能とされてもよい。
【００７２】
本実施例では、符号処理のための論理部分は、装置の個数と冗長性を低減するため他のＰａｃｋｅｄ処理と共有されていてもよい。本実施例の回路６００は、ソースオペランドから入力データ要素を受け取り、結果として得られるＰａｃｋｅｄデータオペランドの特定のデータ要素位置にデータ要素結果を出力する。ソース要素ＳＲＣ  Ｘ６０２とＳＲＣ  Ｙ６０４は単一のデータ要素として参照されているが、これらの要素はＰａｃｋｅｄ符号命令を伴うより大きなＰａｃｋｅｄデータオペランドの一部であると解釈することもできる。本実施例では、第１データ要素ＳＲＣ  Ｘ６０２は、２−入力（２：１）マルチプレクサ（ｍｕｘ）６０６に接続される。ＳＩＧＮ信号６２２は、この２：１ｍｕｘの動作を制御する。本実施例では、符号処理が行われる場合、ＳＩＧＮ６２２はｍｕｘ６０６第２入力としてｍｕｘ６０６に接続される「０」を出力するよう命令する。他のタイプの処理が実行される場合、ＳＩＧＮ６２２はｍｕｘ６０６にＳＲＣ  Ｘ６０２を出力させる。
【００７３】
本実施例の第２ソースデータ要素ＳＲＣ  Ｙ６０４は、反転タイプ６０５及び非反転タイプ６０４として他の２：１ｍｕｘ６０８に接続される。符号処理が実行される場合、ＳＩＧＮ６２２はｍｕｘ６０８に反転された入力６０５を出力させる。２つのｍｕｘ６０６と６０８が加算器６１４に接続される。ｍｕｘ出力６１０と６１２はそれぞれ加算器６１４への第１及び第２入力である。加算器６１４はこれらの入力を加算し、その出力６１６として合計を生成する。符号処理において、加算器は、その第１入力６１０として「０」を、ぞの第２入力として反転されたＳＲＣ  Ｙ６０５を受け取る。加算器６１４は、反転されたＳＲＣ  Ｙ６０５に「０」６０３を加算する。本実施例のＳＲＣ  Ｙ６０４の反転は、基本的にＳＲＣ  Ｙ６０４の符号を正から負、あるいは負から正に変換させる。従って、反転されたＳＲＣ  Ｙ６０５は、実質的には、加算器６１４にＳＲＣ  Ｙ６０４を「０」６０３からの数学的減算を実行させる。加算器６１４の出力６１６は、「０−ＳＲＣ  Ｙ」の和として表現することができる。
【００７４】
ＳＲＣ  Ｘ６０２のデータビットはまた、ゼロ検出回路６２４に接続され、ＳＲＣ  Ｘ６０２がゼロに等しいか検出する。ゼロが検出されるかを示すゼロ検出器の出力６２６が、３−入力（３：１）ｍｕｘ６１８に制御信号として接続され、論理ＮＯＲゲート６２８に入力として接続される。一実施例のゼロ検出は、加算と並列に実行され、新たなクリティカルタイミングパス（ｃｒｉｔｉｃａｌ  ｔｉｍｉｎｇ  ｐａｔｈ）を生成することはない。ＳＲＣ  Ｘ６０２もＮ個の符号ビット（ただし、Ｎは１以上の整数）が、３：１ｍｕｘ６１８への制御として論理ＮＯＲケーと６２８に接続される。このＮＯＲゲート６２８は、２つの入力の何れもがアクティブＬＯＷである場合にアクティブＨＩＧＨ信号を出力する。本実施例では、ＮＯＲゲート出力６３２は、符号ビット６２０の入力の両方がＬＯＷである場合にＨＩＧＨとなり、ＳＲＣ  Ｘ６０２が正で、ゼロ検出器の結果の入力がＬＯＷであることを示す。
【００７５】
３：１ｍｕｘ６１８に接続される制御信号群６３４は、結果６３０として出力されるよう適当なデータ値を選択する。ＳＲＣ  Ｘ６０２とＳＲＣ  Ｙ６０４のデータ値と「０−ＳＲＣ  Ｙ」６１６の合計が、３：１ｍｕｘ６１８への入力として接続される。本実施例では、信号６３４は３つの状況の１つに従って入力の１つが選択される。第１のケースは、第１ソース要素ＳＲＣ  Ｘ６０２がゼロである場合である。言い換えると、第２データ要素６０４はゼロで乗算される。この状態はゼロ検出器の出力６２６により示される。このケースでは、ゼロであるＳＲＣ  Ｘ６０２の入力が選択され、結果６３０として出力される。本実施例では、このゼロ状態により、他の制御信号６２０と６３２が利用され、ＳＲＣ  Ｘ６０２の符号とＳＲＣ  Ｙ６０４のコンテンツに関わらずゼロが出力される。
【００７６】
第２のケースは、第１ソース要素ＳＲＣ  Ｘ６０２が正である場合である。この状態はＮＯＲゲート出力６３２により示される。本質的に、第２データ要素６０４は「＋１」と乗算され、ＳＲＣ  Ｙ６０４自体が生成される。このケースでは、ＳＲＣ  Ｙ６０４の入力が選択され、結果６３０として出力される。第３のケースは、第１ソース要素ＳＲＣ  Ｘ６０２が負である場合である。この状態は、ＳＲＣ  Ｘ６０２のＮ個の符号ビットにより示され、ＳＲＣ  Ｘ６０２が負であるときにはアクティブＨＩＧＨが、ＳＲＣ  Ｘ６０２が正であるときにはアクティブＬＯＷが与えられる。この場合、「０−ＳＲＣ  Ｙ」６１６の和の入力が選択され、結果６３０として出力される。本質的に、ＳＲＣ  Ｘ６０２の負の符号は「−１」として扱われ、「０−ＳＲＣ  Ｙ」の計算は第２データ要素ＳＲＣ  Ｙ６０４と「−１」との乗算に数学的に等価である。本実施例では、これとその他のデータ要素位置の結果がソースデータオペランドと同じサイズを有する結果として得られるデータブロックにＰａｃｋされる。例えば、ソースＰａｃｋｅｄデータオペランドが６４または１２８ビット幅である場合、結果として得られるＰａｃｋｅｄデータブロックもまたそれぞれ６４または１２８ビット幅となる。さらに、符号処理のためのソースデータオペランドはレジスタあるいはメモリ領域から取り出される。本実施例では、結果として得られるＰａｃｋｅｄデータブロックは、ソースデータオペランドの１つに対しＳＩＭＤレジスタのデータを上書きする。
【００７７】
図６Ｂは、本発明による符号処理を実行する回路６５０の他の実施例のブロック図である。回路配置及び接続は異なるが、本実施例の基本スキーム及び機能は図６Ａの回路と同様である。本実施例の回路６５０は、第１データ要素の符号を評価し、当該符号と第２データ要素を掛け合わす多重構造論理から構成される。当該回路６５０は、結果として得られるＰａｃｋｅｄオペランドの１つのデータ要素位置に関し説明されるが、必要に応じて装置及び方法は拡張可能であり、特定の実施形態に基づき可変長オペランドに適用することができる。図６Ｂの回路要素は、より多くのデータ要素に利用するため複製されてよい。例えば、オペランドが１６のデータ要素位置を有することができる場合、図６Ｂの回路はこの１６のデータ要素位置をサポートするよう拡張することができる。
【００７８】
本実施例の回路６５０は、第１Ｐａｃｋｅｄオペランドから第１データ要素ＳＲＣ  Ｘ６０２として、及び第２Ｐａｃｋｅｄオペランドから第２データ要素ＳＲＣ  Ｙ６０４として入力データを受け取る。ＳＲＣ  Ｘ６０２は、入力として３：１ｍｕｘ６１８とゼロ検出論理６２４に接続される。ゼロ検出器６２４は、ＳＲＣ  Ｘ６０２がゼロであるか判断する。ＳＲＣ  Ｙ６０４は３：１ｍｕｘ６１８に接続され、反転タイプ６１３（−ＳＲＣ  Ｙ）は加算器６１４に接続される。加算器６１４は、出力６１６での和を得るために、この場合、反転されたＳＲＣ  Ｙ６１３を他の加算器の入力「０」６０３に加算する。ＳＲＣ  Ｙ６０４の反転タイプを加算することにより、加算器はゼロと負のＳＲＣ  Ｙを加算し、「０」からＳＲＣ  Ｙを数学的に減算する。加算器６１４への出力６１６は「０−ＳＲＣ  Ｙ」であり、入力として３：１ｍｕｘ６１８に接続される。「０−ＳＲＣ  Ｙ」はまた、ＳＲＣ  Ｙ６０４と「−１」との乗算に等価である。
【００７９】
ゼロ検出回路６２４の出力信号６２６は、制御信号として３：１ｍｕｘ６１８に接続され、入力として２−入力論理ＮＯＲゲート６２８に接続される。同じように、ＳＲＣ  Ｘ６０２のＮ個の符号ビットが制御信号として３：１ｍｕｘ６１８に接続され、他の入力としてＮＯＲゲート６２８に接続される。本実施例によるＮＯＲゲート６２８の出力６３２は、符号ビット６２０とゼロ検出器の出力６２６が共にアクティブＬＯＷである場合、アクティブＨＩＧＨとなる。ＮＯＲゲート出力６３２はまた、制御信号として３：１ｍｕｘ６１８に接続される。この制御信号群６３４は、３つのｍｕｘ入力６０２、６０４及び６１６の１つを選択し、状態に応じて結果６３０として出力される。図６Ａに関し上述されたように、これら３つの状態とは、（１）ＳＲＣ  Ｘ６０２がゼロ、（２）ＳＲＣ  Ｘ６０２が正、（３）ＳＲＣ  Ｘ６０２が負である場合である。第１のケースでは、ゼロであるＳＲＣ  Ｘ６０２が選択される。第２のケースでは、「ＳＲＣ  Ｙ×（＋１）」であるＳＲＣ  Ｙ６０４が選択される。第３のケースでは、「ＳＲＣ  Ｙ×（−１）」である「０−ＳＲＣ  Ｙ」６１６が選択される。各データ要素位置に対する結果がデータオペランドの結果にＰａｃｋされる。
【００８０】
図７は、本発明の一実施例による複数のデータ要素に関するＰａｃｋｅｄ符号命令の動作を示す。これは、「ＰＳＩＧＮＷ  ＤＡＴＡ  Ｂ，  ＤＡＴＡ  Ａ」命令の一例である。ＰＳＩＧＮＷ命令は、符号乗算処理を第１ソースＰａｃｋｅｄオペランドＤＡＴＡ  Ｂ７１１と第２ソースＰａｃｋｅｄオペランドＤＡＴＡ  Ａ７０１におけるワードサイズのデータ要素に対し実行させる。ここでの記述は、ＰＳＩＧＮＢやＰＳＩＧＮＤのような他のＰａｃｋｅｄ符号命令にも適用可能である。本実施例では、宛先データ記憶装置７２１に編成される積を取得するために、乗算を通じてソースデータ７０１からの符号がもう１つのソースデータ７１１の値に適用される。２つのソースオペランドＤＡＴＡ  Ａ７０１とＤＡＴＡ  Ｂ７１１はそれぞれ、結果７２１と同様に、８つのＰａｃｋｅｄデータ要素から構成される。本実施例では、関係するデータ要素のそれぞれは８ビットまたは１バイト幅である。従って、ＤＡＴＡ  Ａ７０１、ＤＡＴＡ  Ｂ７１１及びＲＥＳＵＬＴＡＮＴ７２１のデータブロックのそれぞれは１２８ビット長である。さらに、これらのデータブロックはメモリ及び／またはレジスタに配置することができる。
【００８１】
図７に示されるように、ＤＡＴＡ  Ａ７０２は、「−４２７０」７０２、「２４０」７０３、「−３５７３」７０４、「７０３３」７０５、「−２４２７」７０６、「−９７０３」７０７、「０」７０８、「２６０５」７０９の基数１０の数値を有するデータ要素を含む。同様に、ＤＡＴＡ  Ｂ７１１は、「−１１２０」７１２、「６４０１」７１３、「３６」７１４、「０」７１５、「６９１」７１６、「−６７８０」７１７、「−８５５」７１８、「５１７７」７１９の基数１０のソースデータ要素を含む。基数１０の数値は、サブスクリプト１０により記される。従って、第２データオペランド７０１の各データ要素の符号が抽出され、第１データオペランド７１１の対応するデータ要素位置の各データ要素の数と掛け合わされる。第２オペランドのデータ要素の数が「０」である場合、結果として得られる対応するデータ要素位置に「０」が入力される。一実施例では、ソースデータ７０１と７１１の１つ以上のデータ要素位置に対する符号乗算処理は並列に実行することが可能である。
【００８２】
第２オペランド７０１の各データ要素の符号が評価されると、第１オペランド７１１の対応するデータ要素位置の数が適当な因数と乗算される。本実施例では、第２データオペランドのデータ要素の符号に応じて、被乗数は「−１」、「０」または「＋１」である。ここで符号処理が乗算と共に説明されているが、実際の乗算処理は同じ数学的結果に達するのに物理的に必要ではないかもしれない。例えば、「０」の積に達するのに「０」との乗算を実行する必要はない。また、積が自分自身になるように、ある数と「＋１」を掛け合わせることは物理的に不要である。同じように、ある数と「−１」との乗算の結果は、当該数値を「０」から引くことにより行うことができる。
【００８３】
例えば、第２オペランド７０１の最左データ要素７０２は、負の数「−４２７０１０」を有する。一方、第１オペランド７１１の最左データ要素７１２は、「−１１２０１０」を有する。第２オペランドのデータ要素７０２の符号は負であるので、対応する第１オペランドのデータ要素７１２の「−１１２０１０」は、「−１」が乗ぜられ、Ｐａｃｋｅｄ符号処理において「１１２０１０」の積が生成される。この積が結果７２１の適当なデータ要素位置７２２に格納される。
【００８４】
同様に、第２オペランド７０１の最右データ要素７０９は、正の数「２６０５１０」を有する。一方、第１オペランド７１１の最右データ要素７１９は「５１７７１０」を有する。第２データオペランドのデータ要素７０９の符号は正であるので、第１オペランドの対応するデータ要素７１９の「５１７７１０」は「＋１」と乗ぜられ、Ｐａｃｋｅｄ符号処理において「５１７７１０」の積が生成される。この積は、結果７２１の最右データ要素位置７２９に格納される。第２オペランドのデータ要素７０９の符号が正であるとすると、積７２９は単に第１オペランドのデータ要素７１９なので、実際の乗算は必要とされないかもしれない。
【００８５】
第２オペランド７０１の右から２番目のデータ要素７０８における値は「０１０」である。一方、第１オペランドの右から２番目のデータ要素７１８の値は「−８５５１０」である。第２オペランドのデータ要素７０８の値がゼロであるので、対応するデータ要素７１８の「−８５５１０」は「０」と乗ぜられ、Ｐａｃｋｅｄ符号処理において「０」の積が生成される。「０」は結果７２１における右から２番目のデータ要素位置７２８に格納される。第２オペランドのデータ要素７０８ゼロであるので、「０」となる積を実現するのに乗算は必要でない。同じように、本実施例において第２オペランドのデータ要素のゼロは、第２オペランドのデータ要素に対し存在する符号に関わらず、結果となる位置に「０」を生じさせる。
【００８６】
図８Ａは、符号処理を実行するための方法の一実施例を示すフローチャート８００である。ここで、オペランドのやデータブロックの幅を表すのにＬの長さが利用される。特定の実施形態に応じて、Ｌを使ってビット数、バイト数、ワード数などについての長さが指定される。同様に、オペランド内のＰａｃｋｅｄデータセグメント数あるいはセグメント数を示すのに記号Ｍが使用される。ブロック８１０において、Ｍ個の要素を有する長さＬの第１データオペランドＢが受け取られる。ブロック８２０において、Ｍ個の要素を有する長さＬのデータオペランドＡが受け取られる。本実施例では、ソースオペランドと結果は等しい長さを有し、同じデータ要素数を有する。ブロック８３０において、符号乗算処理の実行命令が処理される。
【００８７】
本実施例のブロック８３０における符号処理の詳細が、各データ要素位置に対し行われる処理に関してさらに説明される。一実施例では、結果として得られるＰａｃｋｅｄデータ要素位置のすべてに対して、並列に符号処理が実行される。他の実施例では、データ要素の一部が同時に処理される。ブロック８３１において、データオペランドＡからの要素の値が負（ゼロより小）であるかチェックされる。当該値が負であると判断されると、ブロック８３２において、当該データ要素位置の結果として得られた値がデータオペランドＢからの要素の値と「−１」との積として計算される。オペランドＡからの要素の値がブロック８３１において負でない場合、ブロック８３３においてオペランドＡからの要素の値がゼロに等しいかチェックされる。この値がゼロであると判断されると、ブロック８３３においてこのデータ要素位置の結果として得られる値は「０」に設定される。オペランドＡの要素の値がブロック８３３においてゼロに等しくないと判断されると、ブロック８３５においてオペランドＡの要素の値が正（ゼロより大）であるかチェックされる。もしこのオペランドＡの要素の値が正である場合、ブロック８３６において当該データ要素位置の結果として得られる値が、オペランドＢのデータ要素の値と「＋１」との積として計算される。ブロック８３５においてオペランドＡの要素の値が正でなければ、ブロック８３７において値は３つの状態（正、「０」、負）の何れでもない未定義（ｕｎｄｅｆｉｎｅｄ）として扱われる。これら異なるデータ要素の結果として得られる値は、Ｐａｃｋｅｄオペランドの結果のソース要素ペアに対応する適切なデータ要素位置に配置される。
【００８８】
図８Ｂは、符号処理の実行方法の他の実施例を示すフローチャートである。本実施例におけるブロック８１０と８２０でのフローは図８Ａのものと同様である。本実施例では、符号乗算処理におけるブロック８３０がやや異なっている。本実施例のブロック８３０における符号処理の詳細が、各データ要素位置に対し行われる処理に関して詳細に説明される。ブロック８４０において、データオペランドＡの要素の値がゼロに等しいかチェックされる。値がゼロであると判断されると、ブロック８４１においてこのデータ要素位置の結果に「０」が入力される。この位置のオペランドＡのデータ要素がゼロでない場合、ブロック８４２においてオペランドＢのデータ要素の値とオペランドＡのデータ要素の符号の積としてこのデータ要素位置の結果が計算される。図８Ａに示されるように、各データ要素位置の結果がＰａｃｋｅｄデータブロックの結果における適切な位置に配置される。
【００８９】
図９は、Ｐａｃｋｅｄデータオペランドの対する絶対値処理を実行する論理の一実施例のブロック図である。一実施例において、本発明による絶対値処理がＰａｃｋｅｄ絶対値（ＰＡＢＳ）命令として様々なデータタイプを処理するのに実行される。簡単化のため、このＰＡＢＳ命令は８つのデータ要素を有するＰａｃｋｅｄオペランドに関し説明される。これらのデータ要素は、特定の実施形態に応じてバイト、ワード、ダブルワードなどとすることができる。本実施例では、Ｐａｃｋｅｄ絶対値処理は「ＰＡＢＳ  ＳＲＣ１」ようなコードラインにより呼び出される。ここで、ＳＲＣ１はＳＩＭＤレジスタまたはメモリ領域を指す。この場合、ＳＲＣ１はデータソースでもあり、また結果の宛先でもある。一実施例において、命令フォーマットは２オペランドを要し、このラインは「ＰＡＢＳ  ＳＲＣ１，  ＳＲＣ２」を読み込む。この場合、ＰＡＢＳ命令によりＳＲＣ２のデータ要素の絶対値はＳＲＣ１に置かれる。さらに、一実施例では、バイトデータタイプの絶対値を生成するためＰａｃｋｅｄ絶対値バイト（ＰＡＢＳＢ）命令が与えられる。また、ワードデータタイプの絶対値を生成するためＰａｃｋｅｄ絶対値ワード（ＰＡＢＳＷ）命令が与えられる。ダブルワードデータタイプの絶対値を生成するためＰａｃｋｅｄ絶対値ダブルワード（ＰＡＢＳＤ）命令が与えられる。
【００９０】
本実施例の絶対値処理のＰＡＳＢ命令は、Ａ７、Ａ６、Ａ５、Ａ４、Ａ３、Ａ２、Ａ１、Ａ０の８つのデータ要素を有する第１データオペランドＳＯＵＲＣＥ  ＤＡＴＡ９１０から開始される。各データ要素は結果９３０のデータ要素位置に対応する。データオペランド９１０が、絶対値命令と共に、絶対値計算論理９２０に送信される。絶対値計算論理９２０は、各ソースデータ要素の値を修正して、結果９３０の対応する要素位置の値が当該ソースデータ要素の数の符号なし絶対値を有するようにする。例えば、結果として得られる最左要素位置はソース要素Ａ７の数の符号なし絶対値を有する。ソースオペランド９１０の全データ要素位置に対して、この絶対値処理が繰り返される。本実施例では、結果位置はソースオペランドの位置と同一とすることができる。２つのオペランドがＰＡＢＳ命令による特定される他の実施例では、１つのオペランドがソースを特定し、もう一方が宛先を特定する。
【００９１】
画像処理ではしばしば圧縮が行われる。一般に、映像フレームは画素ブロックで圧縮される。高圧縮映像では、量子化処理のためブロックアーチファクトが現れる。多くの符号化アルゴリズムにおいて、低ビットレートで現れる１つのタイプの画像劣化はブロック効果と呼ばれるものである。このブロック効果は、画像処理中に画像を一定のグリッドで矩形ブロックに分割することにより生じるものである。各ブロックの符号化はそれぞれ独立しているので、ブロック間の境界における符号化画像値の連続性の保証はない。離散コサイン変換のＤＣ係数の量子化では、オフセットがブロックに加減され、隣接ブロックに対し明るさが変化し、ブロック境界に沿って直線が現れてしまう。これによりときには、不自然なエッジが顕著となり、符号化された画像にブロックアーチファクトが出現する。画像シーケンスにおいて、移動シーンに対して非移動エッジの背景グリッドにより、不自然かつ望ましくない画像劣化が発生する。このようなブロック効果の発生を回避するために、ブロック解除スキームはフィルタを利用して、不自然なエッジのスムージングが行われる。ブロック間の境界をスムージングするブロック解除アルゴリズムにより、このようなアーチファクトを目立たなくすることができる。しかしながら、ブロックの境界に沿って真のエッジが存在する場合、アルゴリズムはブロック間のステップをスムージングを実行すべきではない。一般的に、隣接ブロック間のステップは、エッジステップのサイズが量子化により生成されるステップサイズより大きい場合、真のエッジであるとみなすことができる。同じように、他のアルゴリズムを使ってブロック上の表面をフィッティングさせることができる。
【００９２】
映像圧縮方法Ｈ．２６３やＭＰＥＧ４のブロック解除アルゴリズムのいくつかは、符号またはｓｉｇｎｕｍ処理、及び絶対値処理を利用する。これらの映像ブロック解除アルゴリズムでは、符号関数が補正係数の符号を計算し、絶対値処理を利用して補正係数の大きさの決定、及び所定の閾値により映像内の変化の比較が行われる。前述のＰＳＩＧＮ及びＰＡＢＳのようなＳＩＭＤ命令の実施例がＨ．２６３やＭＰＥＧ４のブロック解除アルゴリズムにおいて使用される。ｓｉｇｎｕｍ処理は、データの符号の評価及び符号を示すものを与える。例えば、あるデータ要素に対するｓｉｇｎｕｍ処理は、当該データ要素がゼロである場合には「０」を出力し、当該データ要素が負である場合には「−１」を出力し、当該データ要素が正である場合には「＋１」を出力する。一実施例では、本発明によるＰＳＩＧＮ命令を使ってｓｉｇｎｕｍ機能が提供される。
【００９３】
非線形フィルタブロック解除処理の一アプローチでは、３−ステップ非線形フィルタリングアプローチが利用される。第１に、ブロック境界が特徴付けされる。第２に、第１ステップの結果を利用して、ブロック境界に沿って画素値を補正するための係数が計算される。第３に、第２ステップにおいて計算された係数を加減することにより、境界に沿った画素値の補正が行われる。以下の例は、一実施例によるＨ．２６３ブロック解除アルゴリズムが説明される。ＡとＢはブロック境界の一方のサイドの画素である。Ａ１０１２は、ブロック境界からの画素単位の距離のアレイである。Ｂ１０１４は、ブロック境界に沿った画素のアレイである。ＣとＤはブロック境界のもう一方のサイドの画素である。Ｃ１０２２は、アレイＢからの境界のもう一方のサイドのブロック境界に沿ったアレイである。Ｄ１０２４は、アレイＣ１０２２と同じブロック１０２０におけるブロック境界からの画素単位の距離のアレイである。ブロックＸ１０１０とブロックＹ１０２０との間の量子化に起因する連続したアーチファクトを低減するために、真のエッジを保持しながらのブロック解除が実行される。ブロック解除の結果はＡ’、Ｂ’、Ｃ’及びＤ’とラベル付けされる。
【００９４】
図１０は、本発明によるＳＩＭＤ命令を利用したブロック解除の動作を示す。２つのデータブロック１０１０と１０２０が図１０に示される。本実施例では、これらのブロックは画像あるいは映像ストリームにデータを含んでいる。各ブロックは、複数のデータ要素の列と行から構成される。例えば、ある画像処理アルゴリズムでのブロックは８×８データブロックである。ここでは、ＢＬＯＣＫ  Ｘ１０１０とＢＬＯＣＫ  Ｙ１０２０との間のブロック境界に着目して例示される。下の２つのデータ行１０１２と１０１４はＢＬＯＣＫ  Ｘ１０１０に対し示される。上の２つのデータ行１０２２と１０２４がＢＬＯＣＫ  Ｙ１０２０に対し示される。各データ行は７から０までのデータ要素から構成される。
【００９５】
ＳＩＭＤレジスタはアレイＡ１０１２、Ｂ１０１４、Ｃ１０２２及びＤ１０２４の画素データによりロードされる。第１に、ブロック境界が特徴付けされる。ブロック境界までのステップのサイズと向きが決定される。これは以下の方程式により表される。
【００９６】
ｄ＝（Ａ−４Ｂ＋４Ｃ−Ｄ）／８
ここで、アレイＢ１０１４とＣ１０２２の補正係数が、アップダウンランプ（ｕｐｄｏｗｎ  ｒａｍｐ）
ｄ１＝ＳＩＧＮ（ｄ）×（ＭＡＸ（０，  ＡＢＳ（ｄ）−ＭＡＸ（０，  ２×（ＡＢＳ（ｄ）−ｓｔｒｅｎｇｔｈ））））
により計算される。
【００９７】
アレイＡ１０１２とＤ１０２４の補正係数が、
ｄ２＝ｃｌｉｐｄ１（（Ａ−Ｄ）／４，  ｄ１／２）
により計算される。
【００９８】
ここで、絶対値、最大値及びクリッピング処理を利用して、画素補正係数ｄ１とｄ２の大きさが計算される。符号処理では、第１ステップからの係数ｄを使って補正係数ｄ１の符号が計算される。補正係数ｄ１とｄ２は画素値に対して加減される。アレイＢ１０１４とＣ１０２２の境界画素が以下の方程式に従って、
Ｂ’＝ｃｌｉｐ（Ｂ＋ｄ１）  Ｃ’＝ｃｌｉｐ（Ｃ−ｄ１）
補正される。
【００９９】
その後、アレイＡ１０１２とＤ１０２４の画素が以下の方程式に従って、
Ａ’＝Ａ−ｄ２  Ｄ’＝Ｄ＋ｄ２
補正される。
【０１００】
ｄ１の計算はアップダウンランプと呼ばれる機能である。ｄが「ｓｔｒｅｎｇｔｈ」に等しいとき値がピークとなり、ｄが「２×ｓｔｒｅｎｇｔｈ」に等しいとき値がゼロになる。「ｓｔｒｅｎｇｔｈ」の値は量子化ステップのサイズにより決定される。一般に、「ｓｔｒｅｎｇｔｈ」はステップサイズの約半分である。関数」「ｃｌｉｐｄ１（）」は、「（Ａ−Ｄ）／４」の結果に「ｄ１／２」の絶対値の「＋」または「−」をクリップする。関数「ｃｌｉｐ（）」は、評価結果に「０」または「２５５」をクリップする。このアルゴリズムの実施例はＳＩＭＤ命令により実行される。本実施例では、符号処理がＰＳＩＧＮＢまたはＰＳＩＧＮＷにより実行することができる。同じように、絶対値処理がＰＡＢＳＢまたはＰＡＢＳＷにより実行することができる。本実施例では、アレイＡ、Ｂ、Ｃ及びＤの複数の画素値が個別のＳＩＭＤレジスタにロードされる。一実施例では、ブロック解除処理が複数の画素列に一斉にまたは並列に適用される。符号、絶対値及び最大値命令を利用して、中間値ｄ１とｄ２の複数の値がＳＩＭＤレジスタで計算される。結果Ａ’、Ｂ’、Ｃ’及びＤ’がＳＩＭＤレジスタにおいて計算される。クリッピング処理はＳＩＭＤ最大及び最小命令により計算することができる。
【０１０１】
上述の符号命令の機能が、本実施例の非線形フィルタリングブロック解除アルゴリズムにおいて利用される。このブロック解除アルゴリズムの実施例は、Ｈ．２６３またはＭＰＥＧ４のような符号化テクニックにより、よく知られたこれら２つの映像圧縮方法の量子化処理により生じるブロックアーチファクトを取り除くために実行される。ブロック解除アルゴリズムの符号乗算命令を利用することにより、本スキームの実施例はこれら符号化アルゴリズムの計算を高速化し、コードサイズを減少させることができる。例えば、１つのＰＳＩＧＮ命令は、Ｐａｃｋｅｄデータに対し処理することができない同様のデータ操作または命令の実行に必要な複数の算術命令と置換することができる。これにより、全体のスループットは改善され、処理リソースが節約される。
【０１０２】
ブロック解除アルゴリズムの一実施例では、符号命令及び絶対値命令は飽和しない。これは、Ｐａｃｋｅｄ絶対値命令に対して、−２ｎ−１の値を有するＮビットデータが２ｎ−１に評価される。Ｐａｃｋｅｄ符号命令では、−２ｎ−１に等しい第１ソース要素と負の第２ソース要素を有するＮビットデータが２ｎ−１に評価される。いくつかの場合で、符号付きの結果が必要とされ、それゆえ２ｎ−１−１より大きな正の値は許可されない。１つの解決策は、ＰＡＢＳまたはＰＳＩＧＮ命令が実行される前に、最大正負値が同じ大きさを有するようにすることである。
【０１０３】
一実施例の符号及び絶対値処理はまた、以下に説明されるＭＰＥＧ４ブロック解除アルゴリズムに適用することができる。１０個の画素からなり、ブロック境界の各サイドに５つの画素が配置される状態が、Ｖ０  Ｖ１  Ｖ２  Ｖ３  Ｖ４｜Ｖ５  Ｖ６  Ｖ７  Ｖ８  Ｖ９として表される。「｜」はブロック境界を表す。まず、ブロック境界が以下に従って、
【表２】
2005025719.tif 000004
特徴付けされる。ｃｏｕｎｔがＴＨＲＥＳＨＯＬＤ２以上であれば、ＤＣモードを利用し、そうでなければ、デフォルトモードを利用する。ブロック境界はまた以下に従って、
最大値＝ＭＡＸ（Ｖ１  Ｖ２  Ｖ３  Ｖ４  Ｖ５  Ｖ６  Ｖ７  Ｖ８）
最小値＝ＭＩＮ（Ｖ１  Ｖ２  Ｖ３  Ｖ４  Ｖ５  Ｖ６  Ｖ７  Ｖ８）
特徴付けされる。
【０１０４】
ＡＢＳ（最大値−最小値）＜２×量子化係数である場合、ＤＣに関する補正ステップ２と３が実行され、そうでない場合、補正は行われない。デフォルトモードでは、補正係数は以下に従って、
ａ３，０＝（２×Ｖ３−５×Ｖ４＋５×Ｖ５−２×Ｖ６）／８
ａ３，１＝（２×Ｖ１−５×Ｖ２＋５×Ｖ３−２×Ｖ４）／８
ａ３，２＝（２×Ｖ５−５×Ｖ６＋５×Ｖ７−２×Ｖ８）／８
ａ３，０’＝ＳＩＧＮ（ａ３，０）×ＭＩＮ（ＡＢＳ（ａ３，０），  ＡＢＳ（ａ３，１），  ＡＢＳ（ａ３，２））
ｄ＝ＣＬＩＰ（５×（ａ３，０’−ａ３，０）／８，  ０，  （（Ｖ４−Ｖ５）／２×δ（ＡＢＳ（ａ３，０）＜量子化係数））
計算される。ただし、δ（）は、真の場合には１、偽の場合には０と評価する。
【０１０５】
その後、境界画素が補正される。関数ＣＬＩＰ（ｒ，  ｐ，  ｑ）がｐとｑとの間にｒをクリップする。ＤＣモードでは、補正係数は以下に従って、
ｍ＜１の場合、ＡＢＳ（Ｖ１−Ｖ０）＜ＱＰのとき、ｐｍ＝Ｖ０とし、そうでないときｐｍ＝Ｖ１とする。
【０１０６】
１≦ｍ≦８の場合、ｐｍ＝Ｖｍとする。
【０１０７】
ｍ＞８の場合、ＡＢＳ（Ｖ８−Ｖ９）＜量子化係数のとき、ｐｍ＝Ｖ９とし、そうでないときｐｍ＝Ｖ８とする。
【０１０８】
図１１は、ＳＩＭＤ命令を利用したブロック解除アルゴリズムを実行するための方法の一実施例を示すフローチャート１１００である。例えば、このようなブロック解除アルゴリズムは、Ｈ．２６３やＭＰＥＧ４圧縮方法のコードにより実現される。ブロック１１０２において、第１ブロックと第２ブロックの画素データが受け取られる。ブロック１１４０において、これら２つのブロック間のブロック境界が特徴付けされる。ブロック１１０６において、Ｐａｃｋｅｄ符号乗算処理及びＰａｃｋｅｄ絶対値処理の実行命令を利用することにより、１つ以上の補正係数がＰａｃｋｅｄ画素データにおいて計算される。ブロック解除アルゴリズムの補正係数を計算するとき、ＰＳＩＧＮ及び／またはＰＡＢＳ命令を利用することにより、必要とされる非ＳＩＭＤ命令の数を減らすことができ、処理リソースの効率を向上させることができる。例えば、本発明による画像処理アルゴリズムのブロック解除シーケンスの一実施例は、ＰＳＩＧＮ処理を利用することにより補正係数の符号を判断し、ＰＡＢＳを利用することにより補正係数の大きさを計算する。ブロック１１０８において、第１ブロック及び第２ブロックの境界画素が、符号乗算処理及び絶対値処理により計算された１つ以上の補正係数により補正される。
【０１０９】
符号乗算処理を実行する方法、装置及び命令のためのテクニックが開示された。特定の実施例が添付された図面と共に説明及び示されたが、このような実施例は単なる例示のものであり、発明の範囲を限定するものではない。また、本発明は例示及び説明された特定の構成及び配置に制限されるものではなく、当業者により本開示に基づき他の様々な変更を行うことができるであろう。進歩のスピードが速く、さらなる進展が容易に予想できないこのような技術分野では、開示された実施例は、本開示の原理あるいは添付されたクレームの範囲を逸脱することなく、技術の進歩により促進されるような修正が可能である。
【０１１０】
本発明は上記特定の実施例に限定されるものではなく、本発明の要旨内において様々な変形・変更が可能である。
【図面の簡単な説明】
【０１１１】
【図１Ａ】図１Ａは、本発明の一実施例による符号乗算処理のための命令を実行する実行ユニットを有するプロセッサから構成されるコンピュータシステムのブロック図である。
【図１Ｂ】図１Ｂは、本発明の他の実施例による他の一例となるコンピュータシステムのブロック図である。
【図１Ｃ】図１Ｃは、本発明の他の実施例によるさらなる他の一例となるコンピュータシステムのブロック図である。
【図２】図２は、本発明による符号乗算処理を実行する論理回路を有する一例となるプロセッサのマイクロアーキテクチャのブロック図である。
【図３Ａ】図３Ａは、本発明の一実施例によるマルチメディアレジスタの様々なＰａｃｋｅｄデータタイプ表現を示す。
【図３Ｂ】図３Ｂは、他の実施例によるＰａｃｋｅｄデータタイプを示す。
【図３Ｃ】図３Ｃは、本発明の一実施例によるマルチメディアレジスタの様々な符号付き及び符号なしＰａｃｋｅｄデータタイプ表現を示す。
【図３Ｄ】図３Ｄは、オペコードフォーマットの一実施例を示す。
【図３Ｅ】図３Ｅは、オペコードフォーマットの他の実施例を示す。
【図３Ｆ】図３Ｆは、オペコードフォーマットのさらなる他の実施例を示す。
【図４】図４は、本発明によるＰａｃｋｅｄデータオペランドに対する符号処理を実行する論理の一実施例のブロック図である。
【図５】図５は、本発明の一実施例によるデータ要素に対する符号乗算処理の動作を示す。
【図６Ａ】図６Ａは、本発明による符号処理を実行する回路の一実施例のブロック図である。
【図６Ｂ】図６Ｂは、本発明による符号処理を実行する回路の他の実施例のブロック図である。
【図７】図７は、本発明の一実施例による複数のデータ要素に対するＰａｃｋｅｄ符号命令の動作を示す。
【図８Ａ】図８Ａは、符号処理を実行するための方法の一実施例を示すフローチャートである。
【図８Ｂ】図８Ｂは、符号処理を実行するための方法の他の実施例を示すフローチャートである。
【図９】図９は、Ｐａｃｋｅｄデータオペランドに対する絶対値処理を実行するための論理の一実施例のブロック図である。
【図１０】図１０は、本発明によるＳＩＭＤ命令を利用したブロック解除アルゴリズムの動作を示す。
【図１１】図１１は、ＳＩＭＤ命令を利用したブロック解除アルゴリズムを実行するための方法の一実施例を示すフローチャートである。
【符号の説明】
【０１１２】
１００、１６０  コンピュータシステム
１０２、１６６、２００  プロセッサ
１０４、１６７  キャッシュ
１０６、１４５、１６４  レジスタファイル
１０８、１４２、１６２  実行ユニット
１０９、１４３，１６３  命令セット
１１０  プロセッサバス
１１２  グラフィックス／ビデオカード
１１４  ＡＧＰインターコネクト
１１６  メモリコントローラハブ（ＭＣＨ）
１１８  メモリインタフェース
１２０  メモリ
１２２  専用ハブインタフェースバス
１２４  データ記憶装置
１２６  無線送信機
１２８  フラッシュＢＩＯＳ
１３０  Ｉ／Ｏコントローラハブ（ＩＣＨ）
１３４  ネットワークコントローラ
１４１  バス
１４４、１６５  デコーダ
１４６  ＳＤＲＡＭコントロール
１４７  ＳＲＡＭコントロール
１４８  バーストフラッシュメモリインタフェース
１４９  ＰＣＭＣＩＡ／ＣＦカードコントロール
１５０  ＬＣＤコントロール
１５１  ＤＭＡコントロール
１５２  代替バスマスタインタフェース
１５３  Ｉ／Ｏバス
１５４  Ｉ／Ｏブリッジ
１５５  ＵＡＲＴ
１５６  ＵＳＢ
１５７  ブルートゥースＵＡＲＴ
１５８  Ｉ／Ｏ拡張インタフェース
１５９  処理コア
１６１  ＳＩＭＤコプロセッサ
１６８  Ｉ／Ｏシステム
１６９  無線インタフェース
２０１  フロントエンド
２０２  高速スケジューラ
２０３  アウト・オブ・オーダーエンジン
２０４  低速／通常浮動小数点スケジューラ
２０６  シンプル浮動小数点スケジューラ
２１１  実行ブロック
２１２、２１４  アドレス生成ユニット（ＡＧＵ）
２１６、２１８  高速ＡＬＵ
２２０  低速ＡＬＵ
２２２  浮動小数点ＡＬＵ
２２４  浮動小数点移動ユニット
２２６  命令プリフェッチャ
２２８  命令デコーダ
２３０  トレースキャッシュ
２３２  マイクロコードＲＯＭ
２３４  ｕｏｐキュー
４３０  符号計算論理
６００、６５０  回路
６０６、６０８  ２−入力（２：１）マルチプレクサ（ｍｕｘ）
６１４  加算器
６１８  ３−入力（３：１）マルチプレクサ（ｍｕｘ）
６２４  ゼロ検出回路
６２８  論理ＮＯＲゲート
９２０  絶対値計算論理
【図１Ａ】
2005025719.tif 000005
【図１Ｂ】
2005025719.tif 000006
【図１Ｃ】
2005025719.tif 000007
【図２】
2005025719.tif 000008
【図３Ａ】
2005025719.tif 000009
【図３Ｂ】
2005025719.tif 000010
【図３Ｃ】
2005025719.tif 000011
【図３Ｄ】
2005025719.tif 000012
【図３Ｅ】
2005025719.tif 000013
【図３Ｆ】
2005025719.tif 000014
【図４】
2005025719.tif 000015
【図５】
2005025719.tif 000016
【図６Ａ】
2005025719.tif 000017
【図６Ｂ】
2005025719.tif 000018
【図７】
2005025719.tif 000019
【図８Ａ】
2005025719.tif 000020
【図８Ｂ】
2005025719.tif 000021
【図９】
2005025719.tif 000022
【図１０】
2005025719.tif 000023
【図１１】
2005025719.tif 000024