(57)【要約】【課題】本出願はプロセッサ分野、特に算術演算の実行に関する。【解決手段】プロセッサによって実行される計算の多くは、多数の単純な演算を含む。その結果、乗算演算は、非常に多数のクロックサイクルをかけて終了する場合がある。本出願は、自明なオペランド・レジスタを有するプロセッサを提供し、これはデータストアに格納されるデータ値に対する算数又は格納演算の実行に使用される。【選択図】図１
2010521729.tif 000002
【特許請求の範囲】
【請求項１】
データ値を格納するためのデータストアと、
前記データストアにおける各データ値に対する少なくとも一つのフラグを格納するための自明なオペランド・レジスタであって、前記少なくとも一つのフラグは格納されるデータ値が自明なオペランドであるかどうかを示すレジスタと、
を含むプロセッサであって、
前記プロセッサは、命令の実行において自明なオペランド・レジスタを使用するように構成される、プロセッサ。
【請求項２】
前記プロセッサは、前記データストアから少なくとも一つのデータを取り込む演算を実施することにおいて、前記自明なオペランド・レジスタを使用する計算ユニットを含む、請求項１に記載のプロセッサ。
【請求項３】
前記計算ユニットは、前記自明なオペランド・レジスタを調べ、計算ユニットの前記演算を制御するための制御論理ユニットを含む、請求項２に記載のプロセッサ。
【請求項４】
前記プロセッサは、前記データストアへの入力ライン上において自明なオペランドの存在を決定するために比較を実行するように構成されるコンパレータを更に含む、請求項１から３のいずれかに記載のプロセッサ。
【請求項５】
前記データストアのセットは、レジスタ・ファイルとして提供される、請求項１に記載のプロセッサ。
【請求項６】
前記プロセッサは、複数のコンパレータを更に含み、各コンパレータは、対応する書き込みポートにおいて前記データが自明なオペランドを含むかどうかを決定する、請求項５に記載のプロセッサ。
【請求項７】
前記データ値は浮動小数点値である、請求項１から６のいずれかに記載のプロセッサ。
【請求項８】
前記コンパレータは、自明なオペランドの存在を決定するために書き込みライン上において比較を実行する、請求項７に記載のプロセッサ。
【請求項９】
前記データストアは、３２ビット、６４ビット又は１２８ビット・レジスタを含む、請求項８に記載のプロセッサ。
【請求項１０】
前記自明なオペランドは、０、−１又は１を含む、請求項１から９のいずれかに記載のプロセッサ。
【請求項１１】
前記自明なオペランドは一意的にゼロ値である、請求項１から１０のいずれかに記載のプロセッサ。
【請求項１２】
前記実行される命令は浮動小数点計算を含む、請求項１から１１のいずれかに記載のプロセッサ。
【請求項１３】
制御論理ユニットは、前記自明なオペランド・レジスタを調べ、浮動小数点計算ユニットの演算を制御するために提供される、請求項１２に記載のプロセッサ。
【請求項１４】
前記制御論理ユニットは、前記計算が自明なオペランドを含む場合は、前記浮動小数点計算ユニットを回避し、直接的に結果を提供するように構成される、請求項１３に記載のプロセッサ。
【請求項１５】
前記結果は、前記結果が格納対象であった場合に、前記レジスタに対して前記自明なオペランド・レジスタ・フラグを設定することによって直接的に提供される、請求項１４に記載のプロセッサ。
【請求項１６】
前記実行される命令は、データ格納命令を含む、請求項１から１１のいずれかに記載のプロセッサ。
【請求項１７】
前記プロセッサは、ベクトル又は行列データに対応するゼロでないパターンの比較を実行するように構成されるコンパレータを更に含む、請求項１から１６のいずれかに記載のプロセッサ。
【請求項１８】
プロセッサにおける第一のデータ・レジスタ上で演算を実行するための方法であって、前記プロセッサは、前記第一のデータ・レジスタにおける自明なオペランドの存在を示す自明なオペランド・レジスタを有し、
前記方法は、前記第一のデータ・レジスタを取り入れている命令の実行において前記自明なオペランド・レジスタのフラグを使用するステップを含む、方法。
【請求項１９】
ａ）データを第一のデータ・レジスタに書き込むことと、
ｂ）前記データにおける自明なオペランドの前記存在を決定するために前記データの比較を実行することと、
ｃ）自明なオペランド・レジスタ内において前記比較に応答して前記フラグをセットすることと、
からなる最初のステップを更に含む、請求項１８に記載の方法。
【請求項２０】
前記データを書き込み及び前記比較を実行する前記ステップは、ほぼ同時に実行される、請求項１８に記載の方法。
【請求項２１】
前記第一のデータ・レジスタは、浮動小数点データ・レジスタである、請求項１８又は１９に記載の方法。
【請求項２２】
複数の個々のデータ・レジスタが提供され、各レジスタは前記自明なオペランド・レジスタに付属フラグを有する、請求項１８から２１のいずれかに記載の方法。
【請求項２３】
前記複数の個々のデータ・レジスタは、レジスタ・ファイルとして提供される、請求項２２に記載の方法。
【請求項２４】
命令は計算であり、前記自明なオペランド・レジスタは前記プロセッサにおける計算ユニットの前記演算の制御に使用される、請求項１７から２３のいずれかに記載の方法。
【請求項２５】
前記自明なオペランドは、０、−１又は１を含む、請求項１７から２４のいずれかに記載の方法。
【請求項２６】
前記自明なオペランドは、一意的にゼロ値である、請求項１７から２４のいずれかに記載の方法。
【請求項２７】
前記方法は、前記計算が自明なオペランドを含む場合は、前記計算ユニットの回避及び直接的な結果の提供を含む、請求項２４のいずれかに記載の方法。
【請求項２８】
前記結果は、前記結果が格納対象であった場合に、前記レジスタに対して前記自明なオペランド・レジスタ・フラグを設定することによって直接的に提供される、請求項２７に記載の方法。
【請求項２９】
前記実行される命令は、データ格納命令を含む、請求項１７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプロセッサ分野に関し、特に算術演算を実行することに関する。
【背景技術】
【０００２】
プロセッサによって実行される計算の多くは、多数の単純な演算を含む。その結果、乗算演算は、非常に多数のクロックサイクルをかけて終了する場合がある。
【０００３】
この演算は複雑な計算に対しては正当化されるが、例えば０、＋１、−１による一つの数のかけ算等の自明な（ｔｒｉｖｉａｌ）演算に対しては同じことは言えず、その答えはずっと単純な様式で得ることができる。
【０００４】
粗行列を含むあるアプリケーションにおいては、非常に多数のゼロの存在のために、実行される自明な演算の数が極めて重要でありうる。粗行列におけるゼロの数は、圧縮行ストレージ（ＣＲＳ）等のまばらなフォーマットで該行列を格納することにより低減又は消去できるが、アドレス生成に関するオーバーヘッドのために、このようなストレージは、市販コンピュータ・システムにおいては非常に低性能な結果となることがある。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
米国特許５２６２９７３号（リチャードソンら）は、演算が自明なものである場合には計算時間を削減する方法を開示している。特に、本方法は、並行して少なくとも二つの演算を実行する。第一の演算は、従来の複雑な算術演算である。第二の及び更なる演算は、オペランドの一方又は両方が自明なオペランドの特定の例であるかどうかについて決定するオペランド・チェック・メカニズムによって実行される。オペランドの一つが自明なオペランドの特定の例である場合、複素数の算術演算は停止し、検出された自明なオペランドにしたがって、チェック・メカニズムが算術演算の結果を迅速に出力する。その結果、自明なオペランドに複雑な算術演算を実行する必要が避けられる。しかしながら、この方法は、複雑な演算を消去せず、演算が事実上自明なものであるという判定行われる場合に、単にこれを停止させる。
【課題を解決するための手段】
【０００６】
第一の実施形態は、プロセッサがデータ値を格納するためのデータストア、データストアの各データ値に対して少なくとも一つのフラグを格納するための自明なオペランド・レジスタ、各記憶データ値が自明なオペランドであるかどうかを示す少なくとも一つのフラグを含み、該プロセッサは、命令の実行において自明なオペランド・レジスタを使用するように構成される。プロセッサは、データストアから少なくとも一つのデータ値を含む演算の実行において自明なオペランド・レジスタを使用する計算ユニットを含むことができる。適切には、計算ユニットは、自明なオペランド・レジスタを調べ、計算ユニットの演算を制御するための制御論理ユニットを含むことができる。プロセッサは、データストアへの入力ライン上において自明なオペランドの存在を決定するために比較を実行するように構成されるコンパレータを、更に含んでもよい。データストアは、レジスタ・ファイルとして提供されてもよい。プロセッサは、複数のコンパレータを更に含んでもよく、各コンパレータは、レジスタ・ファイルの対応する書き込みポートのデータが自明なオペランドを含むかどうかを決定する。データ値は、適切には浮動小数点値である。データストアは、３２ビット、６４ビット又は１２８ビットのレジスタを含んでもよい。自明なオペランドは、０、−１又は１を含んでもよい。好ましくは、自明なオペランドは、一意的にゼロ値である。
【０００７】
適切には、実行された命令は、浮動小数点計算を含む。制御論理ユニットは、自明なオペランド・レジスタを調べ、浮動小数点計算ユニットの演算を制御することを提供できる。制御論理ユニットは、計算が自明なオペランドを含む場合には、浮動小数点計算ユニットを回避し、直接的に結果を提供するように構成できる。結果は、該結果が格納対象であった場合に、レジスタに対して自明なオペランド・レジスタ・フラグを設定することにより、直接的に提供できる。適宜、実行される命令は、データ格納命令を含む。プロセッサは、ベクトル又はマトリクス・データに対応するゼロでないパターンの比較を実行するように構成されるコンパレータを、更に含むことができる。
【０００８】
更なる態様において、本方法は、プロセッサにおける第一のデータ・レジスタ上で演算を実行するために提供され、該プロセッサは、前記第一のデータ・レジスタを取り入れている命令の実行において、自明なオペランド・レジスタのフラグを使用するステップを含む第一のデータ・レジスタにおける自明なオペランドの存在を示す自明なオペランド・レジスタを有する。
【０００９】
適切には、本方法は、第一のデータ・レジスタにデータを書き込み、該データにおける自明なオペランドの存在を決定するために該データの比較を実施し、自明なオペランド・レジスタ内の比較に応答してフラグを設定する最初のステップを含む。データを書き込み、比較を実行するステップは、ほぼ同時に実行できる。第一のデータ・レジスタは、浮動小数点データ・レジスタでもよい。適宜、複数の個々のデータ・レジスタが設けられ、各レジスタは、自明なオペランド・レジスタにおいて付属フラグを有する。複数の個々のデータ・レジスタは、レジスタ・ファイルとして提供できる。任意に、命令は計算であり、自明なオペランド・レジスタはプロセッサにおける計算ユニットの演算の制御に使用される。自明なオペランドは、０、−１又は１を含むことができる。一つの構成において、自明なオペランドは一意的にゼロ値である。本方法は、計算が自明なオペランドを含む場合は、計算ユニットの回避及び直接的な結果の提供を含むことができる。この場合、結果が格納対象であった場合に、レジスタに対して自明なオペランド・レジスタ・フラグを設定することによって、結果は直接的に提供できる。適宜、実行される命令は、データ格納命令を含む。
【００１０】
以下、添付図面を参照し、本発明を説明する。
【図面の簡単な説明】
【００１１】
【図１】本発明の例示的実施形態に係る、プロセッサの概略図である、
【図２】本発明の例示的実施形態に係る、方法のフローチャートである。
【発明を実施するための形態】
【００１２】
本出願は、データストアに含まれるデータが自明なオペランドと見なせるかどうかを識別するために、自明なオペランド・フラグを使用する。データストアは、それぞれのプロセッサ・アーキテクチャに応じ、いかなる種類のメモリ場所の形態もとることができる。それにもかかわらず、説明の容易さのために、下記の例は、レジスタ及び／又はレジスタ・ファイルに関して記載する。しかしながら、本出願は、これらの特定の種類のデータ格納に制約又は限定することを意図していない。フラグの内容は、周知の自明な値に対する浮動小数点値の比較によって、又はメモリから以前の比較の結果をロードすることによって生成され、ソースの行列／ベクトル・データと共に格納される。本出願の文脈において、自明なオペランドは、結果を決定するために複雑な計算処理を必要としないことはいうまでもなく、例えば、二つの３２ビット浮動小数点ビット・オペランドの積算は、一方のオペランドがゼロである場合、結果がゼロであることを決定するために完全な３２ビット積算処理を必要としない。自明なオペランドは、１、−１及び０を含む。
【００１３】
２の整数倍に等しいオペランドは、少なくとも整数演算における除算又は積算に対して単純なシフト・プロセスが含まれることであるため、自明なオペランドとも考えられる。自明なオペランド数が多いほど、より複雑な実装が必要となることはいうまでもない。したがって、自明なオペランドに対するフラグは、オペランドが１、−１又は０のいずれであるかを識別することに制限されることが好ましい。
【００１４】
あるアプリケーションにおいては、０を含む演算の数が多い。このようなアプリケーションの例は、ゲーム、物理アプリケーション又は検索エンジンに使用されるような疎行列の分野であり、データ・レジスタに格納される値がゼロかどうかを示す各データ・レジスタに対する単一のフラグを有することの利点は、計算速度における強力な省力化、及び能力への要求削減とこれに伴う熱の低下という利点に関して注目に値する。ソース行列が繰り返し用いられるときには、省力化は特に大規模であり、例えば、Ｇｏｏｇｌｅ（登録商標）の検索行列はｎ×ｎの粗な接続行列であり、ｎは３０億であり、行あたりのゼロでないエントリは６〜７である。Ｇｏｏｇｌｅ（登録商標）の行列は、週に一度更新され、１年につき３６５日、１日につき２４時間、１秒につき数千回もクエリが行われる。
【００１５】
以下、例示的実装を、このような疎行列アプリケーションと共に使用するために記載し、これにおいて自明なオペランドは、好適にはゼロであると決定する。図１に示すように、この例示的実装は、単精度３２ビットのデータ・レジスタ・アプリケーションを提供するが、図２に示すように、例示的方法は、倍精度又はより高精度を含む他の構成に適用できることはいうまでもない。
【００１６】
例示的プロセッサは、レジスタのアレイを内蔵するレジスタ・ファイルを有する。図示の例示的装置においては、４つの３２ビット・レジスタがある。レジスタ・ファイルは、複数のポートを有する高速スタティックＲＡＭとして実装できる。適切には、レジスタ・ファイルは、同一のポートを介して読み込み及び書き込みを行うよりもむしろ専用の読み込み及び書き込みポートが配置される。レジスタ・ファイルの使用は効果的ではあるが、レジスタの実装は、個々のフリップフロップ、高速コアメモリ、薄膜メモリ及び他のメモリ技術によってより好都合とはならない場合がある。
【００１７】
他のプロセッサと同様に、レジスタ・ファイルに対するデータは、（浮動小数点）計算後に計算ユニットからロード可能であり、同様に、レジスタ・ファイルからのデータは、計算における使用のために計算ユニットに提供できる。
【００１８】
レジスタ・ファイルに対するそれぞれの書き込みポートは、３２のデータ・ラインを有する。単精度浮動小数点数の場合、第一ビットは符号ビットであり、８ビットの指数及び２３ビットの仮数が続く。当該レジスタに対する仮数の値がゼロであるかどうかを決定するため、３１のデータ・ラインが比較されなければならない（符号ビットの比較は不要）。コンパレータの単一ビット出力は、自明なオペランド・レジスタ内の対応するビットに書き込まれる。コンパレータからの出力書き込みは、レジスタ・ファイルへのレジスタに対する書き込みラインについて、書き込みラインによって制御される。図２に示す例においては、データのロードが最初に発生するが、比較及びロードが同時に発生してもよいことはいうまでもないことを考慮されたい。更に、自明なオペランド・データがメモリにデータ自身と共に格納される状況においては、自明なオペランド・レジスタ値が直接的にロードできるため、比較は不要とすることができる。
【００１９】
この装置の効果は、レジスタ・ファイルの書き込みと並列して「無償で」比較を実施することには、クロックサイクルの追加が不要であることである。
【００２０】
能力を節約し、及び／又は計算レイテンシを低減する目的で、自明なオペランド・レジスタの内容を用いて浮動小数点ユニットの演算を制御できる。この構成において、制御ロジックを設け、浮動小数点演算への入力オペランドに対するレジスタに対応する自明なオペランド・レジスタから、ビットを読み込むことができる。浮動小数点演算子の実行制御に必要な制御信号は、下表にしたがって生成できる。浮動小数点データの圧縮／復元においてこれらを使用することに加え、ＭＣＢビットマップ・レジスタ内容も使用できる。
【００２１】
【表１】
2010521729.tif 000003
【００２２】
実際には、提案スキームは、任意の数のレジスタ・ファイル書き込みポート、及び任意の数のエントリを有するレジスタ・ファイルに容易に適用できる。
【００２３】
このロジックは、完全な浮動小数点演算の場合における数個のパイプライン・サイクルとは対照的に、能力を消費する浮動小数点演算を、単一サイクルを実行する単純なロジック機能に置き換える効果を有する。これは、従来のプロセッサと比較して、提案プロセッサの電力消散の低減と、有効なＦＬＯＰＳスループットの向上という組み合わせを有する。
【００２４】
浮動小数点演算の結果がゼロ（０．０の浮動小数点値）である場合、浮動小数点演算の実行は不要であり、レジスタ・ファイルにおけるデスティネーション・レジスタに対応する自明なオペランド・ビットは、適切なロジックによってゼロに設定でき、すなわち、ある構成において、レジスタ・ファイルへの結果の書き込みは必要ではない。このような構成において、レジスタ・ファイルからのデータ書き込み時には、プロセッサは、自明なオペランド・レジスタの内容を使用するよう適合できる。
【００２５】
本出願は、浮動小数点計算の実行を目的としているが、自明なオペランド・レジスタは、レジスタ・ファイル及びプロセッサから一般的に外部記憶へのデータ格納の高速化、及び計算コストが高くなるマトリクス上のエントリ単位の比較に対する前段階としての、ベクトル／マトリクスのゼロでないパターンの高速比較のためのテストを含む計算以外の他の目的に対しても使用できる。このようなアプリケーションは、本出願の譲受人によって出願される同時係属出願に記載される。
【００２６】
含む／からなるという言葉は、本明細書における使用時には、記載の特徴、整数、ステップ又は構成要素の存在を特定するためであるが、一以上の他の特徴、整数、ステップ、構成要素又はこれらの群の存在又は追加を排除するものではない。
【図１】
2010521729.tif 000004
2010521729.tif 000005
【図２】
2010521729.tif 000006
【国際調査報告】
2010521729.tif 000007
2010521729.tif 000008
2010521729.tif 000009