(57)【要約】  改良された浮動小数点数形式を使用して２進浮動小数点数を処理・計算するための手法が提示される。改良された形式は、単一の符号ビット、指数用の６ビット、及び小数用の９ビットを含む。６ビットを指数に使用することにより、計算負荷の高いアルゴリズムの望ましい高速な収束及び計算負荷の高いアプリケーションの低いエラー率を促進する、拡張された指数範囲を提供できる。改良された形式は、最低のバイネードをゼロ及び正規数に使用できる、最低のバイネードに対して指定された定義と、マージされたＮａＮ／無限大シンボルに使用される１つのデータ点及び有限の数に使用される残りのデータ点を含むように最高のバイネードを構造化できる、最高のバイネードに対して指定された定義とを採用できる。ゼロ及びマージされたＮａＮ／無限大の符号は「ドントケア」項になる。改良された形式は最も近い値に切り上げるためである１つの丸めモードのみを採用する。
2021525403.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ実装方法であって、
プロセッサに動作可能なように結合されたシステムによって、定義された浮動小数点数形式で各数値フィールドを生成することであって、前記各数値フィールドが、符号フィールド、指数フィールド、および仮数フィールドを含んでおり、前記定義された浮動小数点数形式が、前記指数フィールド内の６ビットを利用する、前記生成することと、
前記システムによって、アプリケーションの実行に関連して、前記定義された浮動小数点数形式に従って２進浮動小数点数を計算することと
を含んでいる、コンピュータ実装方法。
【請求項２】
前記定義された浮動小数点数形式が、第１のバイネードを利用してゼロおよび正規数を表し、前記第１のバイネードが、すべてゼロを含んでいる前記指数フィールドに関連付けられており、前記正規数のうちの１つの正規数が、前記定義された浮動小数点数形式に関連付けられた基数および最小指数の関数として決定される最小値以上の大きさを有する、有限のゼロ以外の浮動小数点数である、請求項１に記載のコンピュータ実装方法。
【請求項３】
前記第１のバイネードが、１つのデータ点およびその他のデータ点を含んでおり、前記１つのデータ点がすべてゼロの小数を含んでゼロを表し、前記その他のデータ点が前記正規数を表す、請求項２に記載のコンピュータ実装方法。
【請求項４】
前記定義された浮動小数点数形式が、すべて１を含んでいる前記指数フィールドに関連付けられた第２のバイネードを利用し、前記定義された浮動小数点数形式に従って、前記第２のバイネード内のデータ点のより小さいセットが、無限大の値および非数値を表すために採用されており、前記データ点のより小さいセットが、前記第２のバイネードの全体に関連付けられたデータ点のセットより少ないデータ点を含んでいる、請求項２に記載のコンピュータ実装方法。
【請求項５】
前記定義された浮動小数点数形式が、前記無限大の値および前記非数値の両方を表すために、前記第２のバイネードの１つのデータ点のみを採用する、請求項４に記載のコンピュータ実装方法。
【請求項６】
前記指数フィールドの前記６ビットが、非正規数を使用せずに前記アプリケーションの前記実行中に出現することが予測される数値の範囲を表すための最小限の数のビットを含んでおり、前記アプリケーションを実行して前記２進浮動小数点数を計算するために利用されるハードウェアを削減することによって、効率を改善することを促進するために、前記定義された浮動小数点数形式が前記非正規数を含んでいない、請求項１に記載のコンピュータ実装方法。
【請求項７】
前記定義された浮動小数点数形式に従って、
前記システムによって、ゼロに関して符号が重要でないことを示す項としてゼロの前記符号を表すことと、
前記システムによって、前記項を表すために、前記符号フィールドに任意の値を生成することであって、前記任意の値の前記生成が、前記符号フィールドの任意でない値を決定および生成することよりも少ないリソースを利用する、前記生成することと
をさらに含んでいる、請求項１に記載のコンピュータ実装方法。
【請求項８】
前記定義された浮動小数点数形式に従って、
前記システムによって、非数値および無限大の値をマージされたシンボルとして一緒に表すことと、
前記システムによって、前記マージされたシンボルに関して符号が重要でないことを示す項として前記マージされたシンボルの前記符号を表すことと、
前記システムによって、前記項を表すために、前記符号フィールドに任意の値を生成することであって、前記任意の値の前記生成が、前記符号フィールドの任意でない値を決定および生成することよりも少ないリソースを利用する、前記生成することと
をさらに含んでいる、請求項１に記載のコンピュータ実装方法。
【請求項９】
前記定義された浮動小数点数形式が、最も近い値に切り上げるモードである単一の丸めモードのみを利用し、前記方法が、
前記システムによって、前記定義された浮動小数点数形式に従って、中間の２進浮動小数点数の丸めを実行して前記２進浮動小数点数の前記計算を容易にするために、前記単一の丸めモードを使用して前記中間の２進浮動小数点数を丸めることをさらに含んでおり、前記単一の丸めモードを前記利用することが、前記アプリケーションを実行するため、および前記２進浮動小数点数を計算するために利用されるハードウェアを削減することによって、効率を改善することを促進する、請求項１に記載のコンピュータ実装方法。
【請求項１０】
請求項１ないし９のいずれかに記載の前記方法の前記ステップのすべてを実行するのに適している手段を含んでいる、システム。
【請求項１１】
コンピュータ・プログラムであって、前記コンピュータ・プログラムがコンピュータ・システム上で実行されたときに、請求項１ないし１０のいずれかに記載の前記方法の前記ステップのすべてを実行するための命令を含んでいる、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、浮動小数点数の形式設定に関連する。
【発明の概要】
【０００２】
以下に、開示される対象の１つまたは複数の実施形態の基本的理解を可能にするための概要を示す。この概要は、主要な要素または重要な要素を特定するよう意図されておらず、特定の実施形態の範囲または特許請求の範囲を正確に説明するよう意図されていない。この概要の唯一の目的は、後で提示されるより詳細な説明のための前置きとして、概念を簡略化された形態で提示することである。本明細書に記載された１つまたは複数の実施形態では、らせん状の導電性構造を備えている電子デバイスの形成を容易にすることができる、システム、デバイス、構造、コンピュータ実装方法、装置、またはコンピュータ・プログラム製品、あるいはその組み合わせが提供される。
【０００３】
一実施形態によれば、システムは、コンピュータ実行可能コンポーネントを格納するメモリと、メモリに動作可能なように結合された、コンピュータ実行可能コンポーネントを実行するプロセッサとを備えることができる。コンピュータ実行可能コンポーネントは、アプリケーションの実行に関連して、定義された浮動小数点数形式に従ってプロセッサによる２進浮動小数点数に対する動作および計算を容易にする計算コンポーネントを含むことができ、定義された浮動小数点数形式は、指数フィールド内の６ビットを利用する。
【０００４】
別の実施形態は、プロセッサに動作可能なように結合されたシステムによって、定義された浮動小数点数形式で各数値フィールドを生成することを含むことができるコンピュータ実装方法に関しており、各数値フィールドは、符号フィールド、指数フィールド、および仮数フィールドを含み、定義された浮動小数点数形式は、指数フィールド内の６ビットを利用する。この方法は、システムによって、アプリケーションの実行に関連して、定義された浮動小数点数形式に従って２進浮動小数点数を計算することを含むこともできる。
【０００５】
さらに別の実施形態は、浮動小数点数の計算を容易にするコンピュータ・プログラム製品に関しており、このコンピュータ・プログラム製品は、プログラム命令が具現化されているコンピュータ可読ストレージ媒体を備えている。プログラム命令は、プロセッサに、定義された浮動小数点数形式で各フィールドを作成させるために、プロセッサによって実行可能であり、各フィールドは、符号フィールド、指数フィールド、および小数フィールドを含み、定義された浮動小数点数形式は、指数用の６ビットを指数フィールド内に含む。また、プログラム命令は、アプリケーションの利用に関連して、定義された浮動小数点数形式に従って、プロセッサに浮動小数点数を計算させるために、プロセッサによって実行可能である。
【０００６】
さらに別の実施形態は、プロセッサに動作可能なように結合されたシステムによって、定義された浮動小数点数形式で各数値フィールドを生成することを含むことができるコンピュータ実装方法に関しており、各数値フィールドは、符号フィールド、指数フィールド、および小数フィールドを含む。この方法は、システムによって、アプリケーションの実行に関連して、定義された浮動小数点数形式に従って、２進浮動小数点数を計算することを含むこともでき、定義された浮動小数点数形式は、ゼロおよび正規数を表すためにバイネード（binade）を利用し、バイネードは、ゼロから成る指数フィールドのビットのビット値に関連付けられる。
【０００７】
これらおよびその他の特徴は、以下の詳細な実施形態例の説明から明らかになり、その説明は添付の図面と併せて読む必要がある。
【図面の簡単な説明】
【０００８】
【図１】開示される対象のさまざまな態様および実施形態に従って、改良された浮動小数点数形式を使用して浮動小数点数を処理すること、生成すること、または計算すること、あるいはその組み合わせを実行するために採用され得る、例示的な非限定的システムのブロック図である。
【図２】開示される対象のさまざまな態様および実施形態に従って、改良された浮動小数点数形式の例示的な改良されたビット構造のブロック図である。
【図３】開示される対象のさまざまな態様および実施形態に従って、デノーマル（denormal）数が浮動小数点数形式で利用される場合に、数直線に沿ってデノーマル数および正規数の位置を示すことができる例示的な数直線を示す図である。
【図４】開示される対象のさまざまな態様および実施形態に従って、音声認識に関連する性能結果の例示的なグラフを示す図である。
【図５】開示される対象のさまざまな態様および実施形態に従って、画像認識に関連する性能結果の例示的なグラフを示す図である。
【図６】開示される対象のさまざまな態様および実施形態に従って、シェイクスピア・テキスト生成に関連する性能結果の例示的なグラフを示す図である。
【図７】開示される対象のさまざまな態様および実施形態に従って、改良された浮動小数点数形式を使用して浮動小数点数を生成または計算するための計算の第１の部分に、より低い精度の計算エンジンを採用することができ、計算の第２の部分に、より高い精度の計算エンジンを採用することができる、例示的な非限定的システムのブロック図である。
【図８】開示される対象のさまざまな態様および実施形態に従って、改良された浮動小数点数形式を使用して、データに対して計算を含む動作を実行するための例示的な非限定的方法のフロー図である。
【図９】開示される対象のさまざまな態様および実施形態に従って、改良された浮動小数点数形式を使用して、データに対して計算を含む動作を実行するための別の例示的な非限定的方法のフロー図である。
【図１０】本明細書に記載された１つまたは複数の実施形態を容易にすることができる例示的な非限定的動作環境のブロック図である。
【発明を実施するための形態】
【０００９】
以下の詳細な説明は、例にすぎず、実施形態、または実施形態の適用もしくは使用、あるいはその両方を制限するよう意図されていない。さらに、先行する「背景技術」または「発明の概要」のセクション、あるいは「発明を実施するための形態」のセクションで提示された、いずれかの明示されたか、または暗示された情報によって制約されるという意図はない。
【００１０】
ここで、図面を参照して１つまたは複数の実施形態が説明され、図面全体を通じて、類似する参照番号が、類似する要素を参照するために使用されている。以下の説明では、説明の目的で、１つまたは複数の実施形態を十分に理解できるように、多数の特定の詳細が示されている。しかし、これらの特定の詳細がなくても、さまざまな事例において、１つまたは複数の実施形態が実践され得るということは明らかである。
【００１１】
例えば、深層学習アプリケーションなどの特定の種類のアプリケーションは、リソースに関して要求が厳しい（例えば、計算的に要求が厳しい）ワークロードを有していることがある。例えば、複数のグラフィックス・プロセッシング・ユニット（ＧＰＵ：graphics processing units）を備えるシステムを使用する場合でも、深層ネットワークのトレーニングには、かなりの時間（例えば、数日または数週間）がかかることがある。複数のＧＰＵから成るシステム上で、一部の深層学習ベンチマーク用のアルゴリズムのトレーニングが収束するのに、かなりの時間（例えば、数週間）がかかることがある。
【００１２】
このような種類のアプリケーションを大幅に高速化するために、特殊なアクセラレータが役立つことがある。面積（例えば、スループット／ミリメートル２（ｍｍ２））および電力（スループット／ワット）の両方に関して浮動小数点計算の相対的に大きいスループット密度を提供できるそのような特殊なアクセラレータは、将来の深層学習システム非常に役立つ可能性がある。
【００１３】
認知計算のワークロードの場合、倍（例えば、６４ビット）精度表現および単（例えば、３２ビット）精度表現の使用は不必要であり、非効率的であることがある。認知計算ワークロードなどの重い計算ワークロードに関して、面積および電力消費量の両方の指標を改善するための１つの方法は、計算の大部分を実行するために、より小さいビット幅の浮動小数点表現を使用することである場合がある。例えば、丸め誤差の影響を比較的受けやすい計算などの、計算の相対的に小さい部分を、単精度形式を使用して実行することができ、一方、計算の大部分（例えば、丸め誤差の影響を実質的に受けない計算）を、より低い精度（例えば、１６ビット）の形式を使用して実行できる。そのような単精度形式とより低い精度の形式の間の計算の分割は、（例えば、より低い精度の形式を使用する）望ましい数の（例えば、多くの）より低い精度のエンジン、および（例えば、より高い（例えば、単）精度の形式を使用する）比較的少数のより高い精度のエンジンの使用を可能にすることができる。
【００１４】
より低い精度（例えば、１６ビット）の形式を構造化できる１つの方法は、データ交換形式として使用できる、単一の符号ビット、５ビットの指数、および１０ビットの仮数を含むことができる１／５／１０形式（例えば、ＩＥＥＥ  ７５４半精度（１／５／１０）形式）を有することである。しかし、１／５／１０形式は、比較的制限されたダイナミック・レンジを有する可能性があるため、大量の計算を伴うアプリケーション、特に、深層ニューラル・ネットワークのトレーニングには適していないことがある。単精度形式を使用してより重要な計算（例えば、丸め誤差の影響を受けやすい計算）が実行され、１／５／１０形式を使用して計算の大部分が実行される場合、トレーニングされたネットワークの品質が、複数のベンチマーク・アプリケーションの基準値と比較して大幅に低下する。例えば、トレーニング中の計算の大部分に１／５／１０形式を使用する場合、Ｗａｔｓｏｎ  Ｎａｔｕｒａｌ  Ｌａｎｇｕａｇｅトレーニングでは、精度が、適合性に関する６０％のベンチマークを下回り（例えば、精度が適切でなかったことを示し）、ＡｌｅｘＮｅｔ  Ｉｍａｇｅ  Ｃｌａｓｓｉｆｉｃａｔｉｏｎトレーニングでは、計算が全く収束しなかった。
【００１５】
しかし、改善されたスループット密度のために、より低い精度（例えば、１６ビット）の浮動小数点演算を使用することが望ましい場合がある。ただし、より低い精度の浮動小数点数形式の使用が（例えば、深層ニューラル・ネットワークおよびその他の深層学習トレーニングなどの、大量の計算を伴うアプリケーションにおいて）実現可能になるにためには、より低い精度の浮動小数点数形式が、計算負荷の高いアプリケーション（例えば、機械トレーニングおよび深層学習トレーニングのタスクなど）に関連するプログラムおよびアルゴリズムの十分速い収束ならびに計算負荷の高いアプリケーションの十分小さいエラー率を可能にすることが望ましい場合がある。
【００１６】
本明細書に記載されたさまざまな実施形態は、改良された浮動小数点数形式（例えば、改良されたより低い精度の浮動小数点数形式）を使用して浮動小数点数（例えば、２進浮動小数点数）を処理すること、生成すること、および計算することに関連している。改良された浮動小数点数形式は、広範囲の機械トレーニングおよび深層学習トレーニングのタスクにとって十分であることができ、融合型乗加算演算１６ビット浮動小数点ユニット（融合型乗加算演算１６ビットＦＰＵ）の面積効率および電力効率の高い実装を可能にすることができる。改良された浮動小数点数形式（例えば、改良されたより低い精度（例えば、１６ビット）の浮動小数点数形式）は、算術計算形式およびデータ交換形式として使用できる、単一の符号ビット、６ビットの指数、および９ビットの仮数を含むことができる１／６／９形式を有することができる。１／５／１０形式と比較して、改良された浮動小数点数形式は、１つ多い指数ビットを含むことができ、小数が１ビット少なくなることができる。改良された浮動小数点数形式の、追加の（例えば、第６の）指数ビットを含む指数用の６ビットは、機械トレーニングおよび深層学習トレーニングのアルゴリズムを十分速く収束させるために望ましい追加の指数範囲を提供することができ、改良された浮動小数点数形式は、機械トレーニングおよび深層学習アプリケーションならびに関連するタスクなどの、計算負荷の高いアプリケーションにとって望ましい低いエラー率を有することもできる。
【００１７】
改良された浮動小数点数形式は、最低のバイネード（例えば、すべてゼロである指数フィールドを含むデータ点）に対して指定された定義を採用することもできる。１／５／１０形式などの、他の浮動小数点数形式（例えば、より低い精度の浮動小数点数形式）は、最低のバイネードを非正規数およびゼロに使用することができる。これに対して、改良された浮動小数点数形式では、最低のバイネードの指定された定義に従って、最低のバイネードをゼロおよび正規数に使用することができる。改良された浮動小数点数形式の指数フィールドは１／５／１０形式より１ビット広いため、改良された浮動小数点数形式（例えば、１／６／９形式）は、最後のバイネードにおける正規数でも、１／５／１０形式が非正規数で０の値に近づくことができる近さよりも近く、０の値に近づくことができる。非正規数のハードウェア支援は、比較的費用がかかることがあり、通常の融合型乗加算演算浮動小数点ユニットの深さ（例えば、合計ゲート遅延）を増大させる可能性がある。開示される対象は、最低のバイネードに対して指定された定義を採用することによって、非正規数を使用することを避けることができ、その結果、ハードウェアの使用および支援に関して、開示される対象をより効率的にすることができ、１／５／１０形式などの他の形式と比較して、融合型乗加算演算１６ビットＦＰＵの深さ（例えば、合計ゲート遅延）を増大させるのを防ぐことができる。
【００１８】
改良された浮動小数点数形式は、最高のバイネード（例えば、すべて１である指数フィールドを含むデータ点）に対して指定された定義を利用することもできる。特定の他の浮動小数点形式は、最高のバイネードを、非数（ＮａＮ：not-a-number）および無限大などの特殊な値のみに使用する。これに対して、一部の実施形態では、改良された浮動小数点数形式での最高のバイネードの指定された定義に従って、最高のバイネードの望ましい部分（例えば、ほとんど）を有限の数に使用することができ、最高のバイネードの１つのデータ点を、ＮａＮおよび無限大（例えば、マージされたＮａＮ／無限大）などの特殊な値に使用することができる。改良された浮動小数点数形式は、そのような指定された定義を最高のバイネードに利用することによって、１／５／１０形式などの他の浮動小数点数形式（例えば、より低い精度の浮動小数点数形式）と比較して、相対的により大きいデータ範囲を可能にすることができ、特に、改良された浮動小数点数形式に採用される論理が、ＮａＮと無限大の値を区別する必要がないため、相対的により単純なハードウェアを利用することができる。
【００１９】
一部の実施形態では、改良された浮動小数点数形式は、ゼロの符号を「ドントケア」項として定義することができ、これによって、１／５／１０形式などの他の浮動小数点数形式と比較して、ゼロの符号の処理を単純にすることができる。例えば、１／５／１０形式のような他の形式は、ゼロの符号の取得方法に関して、比較的複雑なルールを有することがある。しかし、例えば深層学習アプリケーションなどの多くのアプリケーションの場合、ゼロの符号は重要でない。改良された浮動小数点数形式は、そのようなアプリケーションにおいてゼロの符号が重要でないということを考慮することができ、改良された浮動小数点数形式では、ゼロの符号を「ドントケア」項にすることができる。例えば、浮動小数点数がゼロである場合、ゼロの値の符号の項またはシンボルを表すために、（例えば、プロセッサ・コンポーネントまたは計算コンポーネントによって）符号フィールドに対して任意の値が生成され得る。システム（例えば、プロセッサ・コンポーネントまたは計算コンポーネント）が生成するために便利または効率的な（例えば、最も便利または最も効率的な）任意の値またはシンボルを生成し、符号フィールドに挿入することができる。これによって、改良された浮動小数点数形式に関連して利用されるハードウェアおよび論理を相対的に単純にすることができ、他の浮動小数点数形式（例えば、１／５／１０形式）に使用されるハードウェアよりも、利用されるハードウェアおよびハードウェア・リソース（および論理リソース）を少なくすることができる。
【００２０】
特定の実施形態では、改良された浮動小数点数形式は、マージされたＮａＮ／無限大シンボルの符号を「ドントケア」項として定義することができ、これによって、ＮａＮおよび無限大の符号が他の形式（例えば、１／５／１０形式）で処理される方法と比較して、マージされたＮａＮ／無限大シンボルの符号の処理を相対的に単純にすることができる。例えば、特定の他の形式は、ＮａＮおよび無限大の符号の取得方法に関して、特に、加算／減算演算および乗加算演算に関して、比較的複雑なルールを有することがある。しかし、深層学習アプリケーションを含む多くのアプリケーションの場合、ＮａＮおよび無限大の符号は重要でない。その場合、改良された浮動小数点数形式では、マージされたＮａＮ／無限大シンボルの符号を「ドントケア」項にすることができる。例えば、浮動小数点数がＮａＮまたは無限大である場合、マージされたＮａＮ／無限大シンボルの符号の項またはシンボルを表すために、（例えば、プロセッサ・コンポーネントまたは計算コンポーネントによって）符号フィールドに対して任意の値が生成され得る。システム（例えば、プロセッサ・コンポーネントまたは計算コンポーネント）が生成するために便利または効率的な（例えば、最も便利または最も効率的な）任意の値またはシンボルを生成し、マージされたＮａＮ／無限大シンボルに関連付けられた符号フィールドに挿入することができる。これによって、改良された浮動小数点数形式に関連して利用されるハードウェアおよび論理を相対的に単純にすることができ、他の形式（例えば、１／５／１０形式）に使用されるハードウェアよりも、利用されるハードウェアおよびハードウェア・リソース（および論理リソース）を少なくすることができる。
【００２１】
改良された浮動小数点数形式は、１／５／１０形式のような他の種類の形式によって利用される丸めモードよりも実装を単純にすることができる、丸めモードを採用することもできる。例えば、改良された浮動小数点数形式は、最も近い値に切り上げるためであることができる、単一の丸めモードを採用することができる。一部の他の種類の形式（例えば、１／５／１０形式）は、最も近い値に切り上げること、最も近い値に切り下げること、または偶数に丸めること、０に丸めること、＋無限大に丸めること、および−無限大に丸めることなどの、さらに複雑な丸めモードを採用することができる。改良された浮動小数点数形式による、最も近い値に切り上げる丸めモードなどの単一の比較的単純な丸めモードの使用は、浮動小数点数を丸めるために使用されるハードウェアおよび論理の量を大幅に減らしながら、システムのトレーニング（例えば、機械トレーニングまたは深層学習トレーニング）の実行速度および品質を含めて、ワークロードの実行に対して影響を与えないか、または少なくとも実質的に影響を与えないことができる。
【００２２】
ここで、開示される対象のこれらおよびその他の態様および実施形態が、図面に関して説明される。
【００２３】
図１は、開示される対象のさまざまな態様および実施形態に従って、改良された浮動小数点数形式を使用して浮動小数点数（例えば、２進浮動小数点数）を処理すること、生成すること、または計算すること、あるいはその組み合わせを実行するために採用され得る、例示的な非限定的システム１００のブロック図を示している。システム１００の改良された浮動小数点数形式は、広範囲の機械学習および深層学習トレーニングのタスクにとって十分であることができ、融合型乗加算演算１６ビット浮動小数点ユニット（融合型乗加算演算１６ビット（ＦＰＵ））の面積効率および電力効率の高い実装を可能にすることができる。さまざまな実施形態に従って、システム１００は、１つまたは複数の融合型乗加算演算１６ビットＦＰＵを備えるか、そのようなＦＰＵの一部になるか、またはそのようなＦＰＵに関連付けられることができる。
【００２４】
改良された浮動小数点数形式（例えば、改良されたより低い精度（例えば、１６ビット）の浮動小数点数形式）は、算術計算形式およびデータ交換形式として使用できる、単一の符号ビット、６ビットの指数、および９ビットの仮数を含むことができる１／６／９浮動小数点数形式を備えることができる。一部分において、６ビットを指数に使用することによって（例えば、５ビットを指数に使用するのとは対照的に）、改良された浮動小数点数形式は、機械学習アルゴリズム、深層学習トレーニング・アルゴリズム、またはその他の計算負荷の高いトレーニング・アルゴリズム、あるいはその組み合わせを十分速く収束させるために望ましい追加の指数範囲を提供することができ、改良された浮動小数点数形式は、計算負荷の高いアプリケーション（例えば、機械トレーニングまたは深層学習アプリケーション）にとって望ましい低いエラー率を有することもできる。本明細書では、改良された浮動小数点数形式のその他の態様および実施形態が、さらに詳細に説明される。
【００２５】
システム１００は、データ・ストア１０４および計算コンポーネント１０６に関連付けられ得るプロセッサ・コンポーネント１０２を備えることができる。プロセッサ・コンポーネント１０２は、システム１００のさまざまな機能の実行を容易にするために、他のコンポーネント（例えば、データ・ストア１０４、計算コンポーネント１０６など）と連動して動作することができる。プロセッサ・コンポーネント１０２は、改良された浮動小数点数形式、浮動小数点数を処理すること、生成すること、もしくは計算すること、またはその組み合わせ、アプリケーション（例えば、機械学習、深層学習、または認知計算アプリケーション）、機械もしくはシステムのトレーニング、数値の形式設定もしくは計算に関連するパラメータ、データ・トラフィック・フロー（例えば、コンポーネントもしくはデバイス間、またはネットワーク全体、あるいはその組み合わせ）、アルゴリズム（例えば、アプリケーションに関連するアルゴリズム、改良された浮動小数点数形式設定アルゴリズム、浮動小数点数計算アルゴリズム、数値丸めアルゴリズムなど）、プロトコル、ポリシー、インターフェイス、ツールに関連する情報、または本明細書で詳細に開示されるシステム１００の動作を容易にするためのその他の情報、あるいはその組み合わせなどのデータを処理し、システム１００のコンポーネント間のデータ・フローを制御し、システム１００と、システム１００に関連付けられたその他のコンポーネントまたはデバイス（例えば、コンピュータ、コンピュータ・ネットワーク・デバイス、データ・ソース、アプリケーションなど）との間のデータ・フローを制御することができる、１つまたは複数のプロセッサ、マイクロプロセッサ、またはコントローラを採用することができる。一部の実施形態では、プロセッサ・コンポーネント１０２は、１つまたは複数の融合型乗加算演算１６ビットＦＰＵなどの、１つまたは複数のＦＰＵを備えることができる。
【００２６】
データ・ストア１０４は、データ構造（例えば、ユーザ・データ、メタデータ）、コード構造（例えば、モジュール、オブジェクト、ハッシュ、クラス、手順）もしくは命令、改良された浮動小数点数形式、浮動小数点数を処理すること、生成すること、もしくは計算すること、またはその組み合わせ、アプリケーション（例えば、機械学習、深層学習、または認知計算アプリケーション）、機械もしくはシステムのトレーニング、数値の形式設定もしくは計算に関連するパラメータ、データ・トラフィック・フロー、アルゴリズム（例えば、アプリケーションに関連するアルゴリズム、改良された浮動小数点数形式設定アルゴリズム、浮動小数点数計算アルゴリズム、数値丸めアルゴリズムなど）、プロトコル、ポリシー、インターフェイス、ツールに関連する情報、またはシステム１００に関連付けられた動作の制御を容易にするためのその他の情報、あるいはその組み合わせを格納することができる。１つの態様では、プロセッサ・コンポーネント１０２は、処理することが望まれる情報を格納して取り出すため、または少なくとも部分的に機能を計算コンポーネント１０６、もしくはシステム１００のその他のコンポーネント、もしくはシステム１００の実質的に任意のその他の動作可能な態様、またはその組み合わせに提供するため、あるいはその両方のために、（例えば、メモリ・バスまたはその他のバスを介して）データ・ストア１０４に機能的に結合され得る。
【００２７】
プロセッサ・コンポーネント１０２は、（例えば、バスを介して）プログラム格納コンポーネント１０８に関連付ける（例えば、通信によって、または機能的に、あるいはその両方によって接続する）こともでき、プログラム格納コンポーネント１０８は、計算コンポーネント１０６を備える（例えば、格納する）ことができる。プログラム格納コンポーネント１０８は、プロセッサ・コンポーネント１０２によって実行するために、プロセッサ・コンポーネント１０２によってアクセス可能な、機械実行可能（例えば、コンピュータ実行可能）コンポーネントまたは命令を格納することができる。例えば、プロセッサ・コンポーネント１０２は、プログラム格納コンポーネント１０８内の計算コンポーネント１０６にアクセスすることができ、本明細書において詳細に説明されるように、改良された浮動小数点数形式に従って、データ（例えば、２進浮動小数点数）に対して動作を実行するプロセッサ・コンポーネント１０２に接続された計算コンポーネント１０６を利用することができる。
【００２８】
例えば、プロセッサ・コンポーネント１０２および計算コンポーネント１０６は、改良された形式コンポーネント１１０の改良された浮動小数点数形式（例えば、１／６／９浮動小数点数形式）に従って（例えば、使用して）、浮動小数点数（例えば、２進浮動小数点数）を処理する（例えば、数学的計算を実行する）こと、生成すること、または計算すること、あるいはその組み合わせを含む動作をデータに対して実行するように、動作する（例えば、互いに連動して動作する）ことができる。一部の実施形態では、プロセッサ・コンポーネント１０２または計算コンポーネント１０６あるいはその両方は、改良された形式コンポーネント１１０の改良された浮動小数点数形式を使用して、浮動小数点数を処理すること、生成すること、または計算すること、あるいはその組み合わせを実行し、機械トレーニング、深層学習トレーニング、認知計算、またはその他の計算負荷の高いタスク、動作、もしくはアプリケーション、あるいはその組み合わせを容易にすることができる。例えば、プロセッサ・コンポーネント１０２または計算コンポーネント１０６あるいはその両方は、改良された浮動小数点数形式を使用して、浮動小数点数を処理すること、生成すること、または計算すること、あるいはその組み合わせを実行し、機械トレーニングまたは深層学習トレーニングに関連して解決される問題（例えば、認知計算問題）の解に関連することができる結果の取得を容易にすることができる。例えば、解決される問題は、機械トレーニング、深層学習、認知計算、人工知能、ニューラル・ネットワーク、またはその他の計算負荷の高いタスク、問題、もしくはアプリケーション、あるいはその組み合わせに関連することができる。いくつかの非限定的な例として、この問題は、画像もしくはビデオ内の物体（例えば、人、場所、または物、あるいはその組み合わせ）を認識もしくは識別するための画像認識、音声コンテンツ（例えば、音声、音声付きの放送、歌、または音声付きの番組、あるいはその組み合わせ）内の音声の単語または識別情報あるいはその両方を認識もしくは識別するための音声認識、またはテキスト・コンテンツ（例えば、本、原稿、電子メール、または一連のドキュメントなど）内のテキスト・データ（例えば、単語、英数字）を認識もしくは識別するためのテキスト認識に関連することができる。
【００２９】
プロセッサ・コンポーネント１０２および計算コンポーネント１０６は、アプリケーション１１２に関連付けられたデータに対する動作を実行するために、アプリケーション１１２などの１つまたは複数のアプリケーション（例えば、機械トレーニングまたは深層学習アプリケーション）に関連付けられ得る。例えば、プロセッサ・コンポーネント１０２および計算コンポーネント１０６は、アプリケーション１１２からデータを受信することができ、改良された浮動小数点数形式に従って、このデータに少なくとも部分的に基づいて、数値結果（例えば、２進浮動小数点数）を生成または決定する（例えば、計算する）ことができ、それらの数値結果をアプリケーション１１２または別の望ましい送り先あるいはその両方に提供することができる。
【００３０】
図２を（図１と共に）簡単に参照すると、図２は、開示される対象のさまざまな態様および実施形態に従って、改良された浮動小数点数形式の例示的な改良されたビット構造２００のブロック図を示している。改良されたビット構造２００は、浮動小数点数（例えば、２進浮動小数点数）の符号を表すことができるデータの１ビットを含むことができる、符号フィールド２０２を含むことができる。
【００３１】
改良されたビット構造２００は、符号フィールド２０２に隣接することができる指数フィールド２０４も含むことができる。指数フィールド２０４は、浮動小数点数の指数を表すことができるデータの６ビットを含むことができる。改良された浮動小数点数形式は、（例えば、１／５／１０形式と比較して）追加の（例えば、第６の）指数ビットを採用することによって、機械トレーニングまたは深層学習トレーニング・アルゴリズム（例えば、半精度（例えば、１６ビット）モードで動作している単精度（例えば、３２ビット）の機械トレーニングまたは深層学習アルゴリズム）を十分速く収束させるための望ましい、改良された（例えば、改善された、または追加の）指数範囲を提供しながら、例えば機械トレーニングおよび深層学習トレーニング・アプリケーションならびに関連する機械トレーニングおよび深層学習のタスクなどの、計算負荷の高いアプリケーションの比較的小さいエラー率を実現することもできる。
【００３２】
改良されたビット構造２００は、指数フィールド２０４に隣接することができる小数（ｆ）フィールド２０６をさらに含むことができる。小数フィールド２０６は、浮動小数点数の小数（例えば、小数値）を表すことができるデータの９ビットを含むことができる。改良された浮動小数点数形式の小数の９ビットは、機械トレーニング・アルゴリズム、深層学習アルゴリズム、またはその他の計算負荷の高いアルゴリズム（例えば、半精度（例えば、１６ビット）モードで動作している単精度（例えば、３２ビット）の機械トレーニング、深層学習、またはその他の計算負荷の高いアルゴリズム）、あるいはその組み合わせに望ましい小数の精度を提供するために十分であるが、小数の９ビットは、１／５／１０形式より１つ少ない。小数に８ビット（例えば、小数の８ビットおよび指数の７ビット）しか存在しなかった場合、小数の８ビットは、機械トレーニング・アルゴリズムまたは深層学習アルゴリズム（例えば、半精度モードで動作している単精度の機械トレーニングまたは深層学習アルゴリズム）で使用するためには、そのようなアルゴリズムの変更が可能である場合でも、そのようなアルゴリズムに対する少なくとも何らかの変更がなければ、十分な小数の精度を提供しないということにも注意する。
【００３３】
数ｘ＝（ｓ，ｅ，ｆ）の値を次のように定義することができる。
ｖａｌｕｅ（ｘ）＝（−１）ｓ＊２［ｅ］＊（ｉ．ｆ）    （方程式１）
ここで、［ｅ］はバイアス指数の値であることができ、（ｉ．ｆ）は２進仮数であることができ、ｆは小数であり、ｉは暗黙のビットである。改良された浮動小数点数形式に従って、ｉの値は、すべての有限の非ゼロ数で、１であることができる（真のゼロの場合、０であることができる）。バイアス指数を使用する改良された浮動小数点数形式では、バイアスを使用して、指数を符号なし２進整数として表すことができる。
【００３４】
表１は、改良された浮動小数点数形式（本明細書では、改良された１／６／９形式とも呼ばれる）と１／５／１０形式の間のさまざまな違いを示している。
【００３５】
【表１】
2021525403.tif 000003
【００３６】
表１からわかるように、改良された形式コンポーネント１１０の改良された浮動小数点数形式を使用して表せる最小の正数は２−３１＊（１＋２−９）であり、この正数は、１／５／１０形式を使用して取得できる最小の正の非正規数（例えば、２−２４）より大幅に小さい数である。したがって、改良された浮動小数点数形式で非正規数を使用しなくても、プロセッサ・コンポーネント１０２および計算コンポーネント１０６は、改良された浮動小数点数形式を利用して、１／５／１０形式が使用される場合よりも大幅に０の値に近づくことができる数を生成または計算することができる。これによって、機械学習（例えば、深層学習）トレーニングの実行の収束を改善することを促進できる。
【００３７】
浮動小数点数に関しては、一連のバイネードが存在することができ、バイネードは、２進浮動小数点値のセットであることができ、そのようなセットの２進浮動小数点値の各々は同じ指数を有することができる。改良された浮動小数点数形式は、６４個のバイネードを含むことができる。改良された浮動小数点数形式のバイネードは、第１のバイネードおよび最後のバイネードを含むことができる。最初の（例えば、最低の）バイネードの場合、指数フィールド２０４はすべてゼロである（例えば、６ビットの各々が０である）ことができ、最後のバイネードの場合、指数フィールド２０４はすべて１である（例えば、６ビットの各々が１である）ことができる。改良された形式コンポーネント１１０の改良された浮動小数点数形式は、第１のバイネードおよび最後のバイネード内のデータ点に対して指定された各定義を採用することができ、第１のバイネードおよび最後のバイネード内のデータ点に対して指定されたそのような定義は、１／５／１０形式などの他の形式の第１のバイネードおよび最後のバイネードのデータ点に関して使用される定義と異なることができる。
【００３８】
端でない指数（例えば、すべて１またはすべてゼロで構成されていない指数）を有することができる他のバイネードは、正規数を表すために利用され得る。暗黙のビットは、１．ｆの仮数を得ることができる１（ｉ＝１）であることができる。指数フィールド２０４の指数値は、［ｅ］＝ｅ−バイアスとして導出され得る。開示されているように、改良された浮動小数点数形式は、一部分において、指数フィールド２０４内の指数が１／５／１０形式より１ビット広いこと、小数フィールド２０６内の小数が１／５／１０形式より１ビット短いことに起因して、１／５／１０形式と異なることができ、改良された浮動小数点数形式のバイアスも、１／５／１０形式と異なることができる。
【００３９】
浮動小数点数形式（特に、半精度（例えば、１６ビット）の浮動小数点数形式）での非正規（例えば、デノーマル）数の使用は、本明細書において詳細に開示されるように、非効率的であるか、または比較的費用がかかるか、あるいはその両方であることがある。図３を（図１および２と共に）簡単に参照すると、図３は、開示される対象のさまざまな態様および実施形態に従って、デノーマル数が浮動小数点数形式で利用される場合に、数直線に沿ってデノーマル数および正規数の位置を示すことができる例示的な数直線３００の図を示している。数直線３００に示されているように、３２ビット（例えば、１／８／２３）浮動小数点数形式などの浮動小数点数形式に関して、デノーマル数（ｄｅｎｏｒｍｓ）（本明細書では非正規数とも呼ばれる）であることができる数の第１のサブセット３０２は、０より大きい数から２−１２６に及ぶことができる。１／８／２３形式では、符号フィールド用の単一のビット、指数フィールド用の８ビット、および小数フィールド用の２３ビットが存在することができる。数の第１のサブセット３０２は、第１のバイネードであることができる。やはり数直線３００に示されているように、正規数であることができる数の第２のサブセット３０４は、２−１２６より大きい数であることができる。
【００４０】
本明細書で開示されるように、改良された浮動小数点数形式では、表せる最小の正数は２−３１＊（１＋２−９）（例えば、（２−３１＊（１＋２−９））→０ｘ０００１）であることができ、この正数は、１／５／１０形式を使用して取得できる最小の正の非正規数（例えば、２−２４）より大幅に小さい数である。指数フィールドにおいて６ビットを採用することによって、改良された浮動小数点数形式は、非正規数モードを使用せずに、アプリケーション１１２（例えば、機械または深層学習アプリケーション）の実行中に出現することが期待されるか、または予想される数値の範囲を表すことができる。さまざまな実施形態に従って、それに応じて改良された浮動小数点数形式は、非正規（例えば、デノーマル）数の使用をなくすことができる。事実上、改良された浮動小数点数形式は、１／５／１０形式と比較して、より広い範囲の数を表すことができると同時に、より論理的により単純であることもできる。
【００４１】
さらに、最低の（例えば、第１の）バイネードに関して、改良された浮動小数点数形式は、最低のバイネードのデータ点（例えば、指数フィールドがすべてゼロであるデータ点）に対して指定された定義を採用することができる。改良された浮動小数点数形式での最低のバイネードの指定された定義に従って、プロセッサ・コンポーネント１０２または計算コンポーネント１０６あるいはその両方は、非正規数を除去しながら、最低のバイネードをゼロおよび正規数に利用することができる。ゼロの小数の場合、値はゼロになることができる。ゼロ以外の小数の場合、値はゼロ以外の正規数になることができる。改良された浮動小数点数形式に関して表される最小の正数が（２−３１＊（１＋２−９））であるため、プロセッサ・コンポーネント１０２または計算コンポーネント１０６あるいはその両方は、改良された浮動小数点数形式に従って、（２−３１＊（１＋２−９））より小さい数を（２−３１＊（１＋２−９））または０のいずれかに丸めることができる。
【００４２】
また、改良された浮動小数点数形式に従って、符号を無視することができ、これによって、他の浮動小数点数形式（例えば、１／５／１０形式）を使用する他のシステムまたはデバイスよりも、ハードウェアの実装を単純かつ効率的にすることができる。例えば、プロセッサ・コンポーネント１０２または計算コンポーネント１０６あるいはその両方がゼロの結果を生成または計算する場合、符号ビットの値は未定義であるか、または実装に固有であることができる。例えば、ゼロは０ｘ００００または０ｘ８０００であることができ、その場合、符号ビットは「ドントケア」項として表され得る。プロセッサ・コンポーネント１０２または計算コンポーネント１０６あるいはその両方がゼロ以外の小数を処理、生成、または計算する場合、値は正規数であることができ、例えば、暗黙のビットが１（ｉ＝１）であることができ、その結果、１．ｆの仮数を得ることができ、指数値が［ｅ］＝ｅ−バイアス＝０−バイアスになることができる。
【００４３】
述べたように、改良された浮動小数点数形式は、ゼロの符号を「ドントケア」項として定義することができ、これによって、１／５／１０形式などの他の形式と比較して、ゼロの符号の処理を単純にすることができる。例えば、１／５／１０形式などの特定の他の浮動小数点数形式は、ゼロの符号の取得方法に関して、比較的複雑なルールを有することがある。しかし、深層学習アプリケーションを含む多くのアプリケーションの場合、ゼロの符号は重要でない。したがって、改良された浮動小数点数形式に従って、プロセッサ・コンポーネント１０２または計算コンポーネント１０６あるいはその両方は、ゼロの符号を「ドントケア」項として表すことができる。例えば、改良された浮動小数点数形式に従って、「ドントケア」項は、ゼロの値に関してゼロの符号が重要でないということを示すことができる定義された値を表すことができる。浮動小数点数がゼロである場合、プロセッサ・コンポーネント１０２または計算コンポーネント１０６あるいはその両方は、プロセッサ・コンポーネント１０２または計算コンポーネント１０６が生成して符号フィールドに挿入するために便利または効率的な（例えば、最も便利または最も効率的な）任意の値またはシンボルを、改良された浮動小数点数形式の符号フィールドに生成することができる。例えば、プロセッサ・コンポーネント１０２または計算コンポーネント１０６あるいはその両方は、最小量のリソース（例えば、処理リソースまたは計算リソース）を利用することができるか、または少なくとも、符号フィールドの任意でない値を決定および生成してゼロの値の符号を表すためにその他の方法で使用されるよりも少ないリソースを利用することができる、任意の値を生成するか、または生成することを容易にすることができる。開示される対象は、ゼロの値に関連付けられた符号の処理を含めて、改良された浮動小数点数形式を採用することによって、改良された浮動小数点数形式に関連してシステム１００によって利用されるハードウェアを相対的に単純にすることができ、他の浮動小数点数形式（例えば、１／５／１０形式）に使用されるハードウェアよりも、利用されるハードウェアおよびハードウェア・リソース（および論理リソース）を少なくすることができる。
【００４４】
また、改良された浮動小数点数形式とは対照的に、１／５／１０形式などの特定の他の浮動小数点形式は、最低のバイネードを非正規（例えば、デノーマル）数およびゼロに使用する。本明細書で開示されるように、改良された浮動小数点数形式の指数フィールドは１／５／１０形式より１ビット広いため、改良された浮動小数点数形式は、最後のバイネードにおける正規数でも、１／５／１０形式が非正規数で０の値に近づくことができる近さよりも近く、０の値に近づくことができる。
【００４５】
非正規数のハードウェア支援は、比較的費用がかかることがあり、通常の融合型乗加算演算ＦＰＵの深さ（例えば、合計ゲート遅延）を増大させることがあり、さらに非正規数のサポートが、論理の複雑さを不必要に増やす可能性がある。開示される対象は、最低のバイネードに対して指定されたそのような定義を採用することによって、非正規数を使用することを避けることができ、その結果、ハードウェアの使用および支援に関して、開示される対象をより効率的にすることができ（例えば、使用されるハードウェアおよびハードウェア・リソースの量を減らすことができ）、１／５／１０形式などの他の浮動小数点数形式と比較して、融合型乗加算演算ＦＰＵの深さ（例えば、合計ゲート遅延）を増大させるのを防ぐことができる。
【００４６】
さらに、最高の（例えば、最後の）バイネードに関して、改良された浮動小数点数形式は、最低のバイネード（例えば、すべて１である指数フィールドに関するデータ点）に対して指定された定義を利用することができる。改良された浮動小数点数形式での最高のバイネードの指定された定義に従って、プロセッサ・コンポーネント１０２または計算コンポーネント１０６あるいはその両方は、最高のバイネードの望ましい部分（例えば、ほとんど）を有限の数に使用することができ、最高のバイネードの１つのデータ点を、非数（ＮａＮ）および無限大（例えば、マージされたＮａＮ／無限大）などの特殊な値に使用することができる。
【００４７】
表２は、開示される対象の一部の実施形態に従って、有限の数での最高のバイネードのほとんど（例えば、１つのデータ点を除くすべて）およびマージされたＮａＮ／無限大の特殊な値での最高のバイネードの１つのデータ点の使用を次のように示している。
【００４８】
【表２】
2021525403.tif 000004
【００４９】
さまざまな他の実施形態に従って、さまざまな種類のＮａＮのさらに多くの仮数コードが予約され、それに応じて、プロセッサ・コンポーネント１０２または計算コンポーネント１０６あるいはその両方によって利用され得るということが、理解されるべきである。例えば、必要に応じて、改良された浮動小数点数形式に従って、各（例えば、異なる）種類のＮａＮに対して、（例えば、プロセッサ・コンポーネント１０２または計算コンポーネント１０６あるいはその両方によって）２つ以上の仮数コードが採用され得る。別の例示的な実施形態として、必要に応じて、指数が１１１１１１、仮数の範囲が０００．．．０００〜１１１．．．１０１である場合、データ点は、仮数１．ｆおよび［ｅ］＝３２で正規数になることができ、１１１．．．１１０の仮数の場合、データ点は、符号フィールド２０２内の符号ビットの値に応じて、＋無限大または−無限大を表すことができ、すべて１の値の仮数の場合、データ点はＮａＮを表すことができ、符号フィールド２０２内の符号ビットは「ドントケア」項になることができる。
【００５０】
改良された浮動小数点数形式は、マージされたＮａＮ／無限大シンボルの符号を「ドントケア」項として定義することもでき、これによって、ＮａＮおよび無限大の符号が他の浮動小数点数形式（例えば、１／５／１０形式）で処理される方法と比較して、マージされたＮａＮ／無限大シンボルの符号の処理を相対的に単純にすることができる。例えば、特定の他の浮動小数点数形式は、ＮａＮおよび無限大の符号の取得方法に関して、特に、加算／減算演算および乗加算演算に関して、比較的複雑なルールを有することがある。しかし、深層学習アプリケーションを含む多くのアプリケーションの場合、ＮａＮおよび無限大の符号は重要でない。
【００５１】
したがって、改良された浮動小数点数形式に従って、プロセッサ・コンポーネント１０２または計算コンポーネント１０６あるいはその両方は、マージされたＮａＮ／無限大シンボルの符号を「ドントケア」項として表すことができる。例えば、改良された浮動小数点数形式に従って、「ドントケア」項は、マージされたＮａＮ／無限大シンボルの値に関してマージされたＮａＮ／無限大シンボルの符号が重要でないということを示すことができる定義された値を表すことができる。無限大またはＮａＮが浮動小数点数の結果である場合、プロセッサ・コンポーネント１０２または計算コンポーネント１０６あるいはその両方は、無限大またはＮａＮあるいはその両方の値うちの値の符号の項またはシンボルを表すために、無限大またはＮａＮあるいはその両方の値（例えば、マージされたＮａＮ／無限大シンボル、個別のＮａＮ値、または個別の無限大値）に関連付けられた符号フィールド内の任意の値を生成するか、または生成することを容易にすることができる。改良された浮動小数点数形式に従って、プロセッサ・コンポーネント１０２または計算コンポーネント１０６あるいはその両方は、プロセッサ・コンポーネント１０２または計算コンポーネント１０６が生成して符号フィールドに挿入するために便利または効率的な（例えば、最も便利または最も効率的な）任意の値またはシンボルを、無限大またはＮａＮあるいはその両方の値に関連付けられた符号フィールドに生成するか、または生成することを容易にすることができる。例えば、プロセッサ・コンポーネント１０２または計算コンポーネント１０６あるいはその両方は、最小量のリソース（例えば、処理リソースまたは計算リソース）を利用することができるか、または少なくとも、符号フィールドの任意でない値を決定および生成して無限大またはＮａＮあるいはその両方の値の符号を表すためにその他の方法で使用されるよりも少ないリソースを利用することができる、任意の値を生成するか、または生成することを容易にすることができる。開示される対象は、無限大、ＮａＮ、ならびに無限大およびＮａＮの値に関連付けられた符号の処理を含めて、改良された浮動小数点数形式を採用することによって、改良された浮動小数点数形式に関連してシステム１００によって利用されるハードウェアを相対的に単純にすることができ、他の浮動小数点数形式（例えば、１／５／１０形式）に使用されるハードウェアよりも、利用されるハードウェアおよびハードウェア・リソース（および論理リソース）を少なくすることができる。
【００５２】
さらに、改良された浮動小数点数形式に従って最高のバイネードに対して指定された定義とは対照的に、１／５／１０形式などの特定の他の浮動小数点形式は、最高のバイネードをＮａＮおよび無限大の特殊な値のみに使用し、ゼロの小数の場合、符号ビットに応じて値は＋／−無限大になることができ、ゼロ以外の小数の場合、データ点はＮａＮを表すことができる。それらの特殊な値は、コーナー条件を処理することに多少役立つことがある。無限大を使用して、計算が有効なデータ範囲をオーバーフローしなかったことを示すことができる。算術演算では、無限大は、例えば、任意の有限の数ｘに関して、無限大−ｘ＝無限大などの代数のルール従うことができる。そのような特定の他の浮動小数点形式では、ＮａＮを使用して、例えば、負数の平方根または同じ符号を有する２つの無限大の間の差などの、数学的に未定義の状況を表すことができる。１／５／１０形式などの浮動小数点形式では、ＮａＮの複数の表現が存在することがあるということに注意する。算術演算が少なくとも１つのＮａＮのオペランドを含んでいる場合、結果はオペランドのＮａＮのうちの１つになる必要があり、例えば、ＮａＮのペイロードが伝えられる必要がある。
【００５３】
例えばより高い精度の浮動小数点数形式（例えば、３２ビットまたは６４ビット浮動小数点数形式）などに関して、指数用に８ビット以上を含んでいる場合、１つのバイネードをＮａＮおよび無限大のこれらの特殊な値のみに使用することは、通常、大きな不利益にならないが、より低い精度の浮動小数点数形式（例えば、改良された１／６／９形式および１／５／１０形式などの１６ビット浮動小数点数形式）に関連付けられたより小さいビット幅などの、より小さいビット幅の場合、１つのバイネードをＮａＮおよび無限大のこれらの特殊な値のみに使用することは、許容できないほど高価になることがある。
【００５４】
改良された浮動小数点数形式は、そのような指定された定義を本明細書に記載された最高のバイネードに利用することによって、１／５／１０形式などの他の浮動小数点数形式と比較して、相対的により大きいデータ範囲を可能にすることができ、システム１００によって（例えば、プロセッサ・コンポーネント１０２または計算コンポーネント１０６あるいはその両方によって）改良された浮動小数点数形式に採用される論理が、ＮａＮと無限大の値を区別する必要がないため、相対的により単純なハードウェアを利用することができる。
【００５５】
一部の実施形態では、改良された浮動小数点数形式は、他の種類の形式によって利用される丸めモードよりも実装を単純にすることができる、丸めモードを採用することができる。例えば、改良された浮動小数点数形式は、他の丸めモードを利用せずに最も近い値に切り上げるための丸めモードを採用することができる。一部の他の種類の形式（例えば、１／５／１０形式）は、最も近い値に切り上げること、最も近い値に切り下げること、および偶数に丸めることに加え、０に丸めること、＋無限大に丸めること、および−無限大に丸めることなどの、さらに複雑な丸めモードを採用する。改良された浮動小数点数形式による、他の丸めモードを利用しない、より単純な丸めモード（例えば、最も近い値に切り上げる）の使用は、浮動小数点数を丸めるために使用されるハードウェアおよび論理の量を大幅に減らしながら、システムのトレーニング（例えば、機械トレーニングまたは深層学習トレーニング）の実行速度および品質を含めて、ワークロードの実行に対して影響を与えないか、または少なくとも実質的に影響を与えないことができる。
【００５６】
開示される対象は、例えば本明細書において詳細に説明されるように、改良された浮動小数点数形式を採用することによって、ハードウェア、ハードウェア・リソース、論理リソース、および計算負荷の高いアプリケーション（例えば、機械トレーニング・アプリケーションまたは深層学習トレーニング・アプリケーション）に利用されるその他の計算に関連するリソースの量を大幅に減らすことを促進することができる。一部の実施形態では、開示される対象は、改良された浮動小数点数形式を採用することによって、特定の倍精度（例えば、６４ビット）のＦＰＵの約１／２５の大きさになることができる１６ビットＦＰＵを採用することもできる。さらに、開示される対象は、改良された浮動小数点数形式を採用することによって、同等の半精度（例えば、１６ビット）のＦＰＵ（例えば、１／５／１０形式を使用する半精度のＦＰＵ）より約２５％〜３０％小さくなることができる１６ビットＦＰＵを採用することが期待される（例えば、推定されるか、または予想される）。
【００５７】
図４、５、および６は、半精度（例えば、１６ビット）の浮動小数点数形式（例えば、１／５／１０形式）の性能結果および３２ビット（例えば、完全精度）の浮動小数点数形式の性能結果に関して、改良された浮動小数点数形式（例えば、改良された半精度（例えば、１６ビット）の浮動小数点数形式）の性能を比較することができる例示的な性能結果を示すことができる。図４を簡単に参照すると、図４は、開示される対象のさまざまな態様および実施形態に従って、音声認識に関連する性能結果の例示的なグラフ４００の図を示している。グラフ４００は、５０時間のニュース放送データセットに対する音声深層ニューラル・ネットワーク（音声ＤＮＮ：speech-deep neural network）に関する、改良された浮動小数点数形式、半精度の浮動小数点数形式、および３２ビットの浮動小数点数形式での各音声認識の性能結果を示すことができる。グラフ４００は、ｘ軸に沿ったトレーニング・エポックに対して、音素エラー率（％）をｙ軸にプロットしている。
【００５８】
性能結果のグラフ４００において観察され得るように、改良された浮動小数点数形式（改良された形式）（および関連する１６ビット・ハードウェアおよびソフトウェア）での音声認識の性能結果４０２は、非常に良好に収束することができ、３２ビット浮動小数点数形式（完全精度形式）（および関連する３２ビット・ハードウェアおよびソフトウェア）の音声認識の性能結果４０４に比較的近い同等の好ましい結果を提供することができる。さらに、グラフ４００から観察され得るように、半精度の浮動小数点数形式（半精度形式）（および関連する１６ビット・ハードウェアおよびソフトウェア）での音声認識の性能結果４０６は、全く収束することができず、したがって、意味のある音声認識結果を提供することができない。
【００５９】
図５は、開示される対象のさまざまな態様および実施形態に従って、画像認識に関連する性能結果の例示的なグラフ５００の図を示している。グラフ５００は、１Ｋの出力クラスを含む、２０１２−ＩｍａｇｅＮｅｔデータセットに対するＡｌｅｘＮｅｔに関する、改良された浮動小数点数形式、半精度の浮動小数点数形式、および３２ビットの浮動小数点数形式での各画像認識の性能結果を示すことができる。グラフ５００は、ｘ軸に沿ったトレーニング・エポックに対して、テスト・エラー（％）をｙ軸にプロットしている。
【００６０】
性能結果のグラフ５００からわかるように、改良された浮動小数点数形式（および関連する１６ビット・ハードウェアおよびソフトウェア）での画像認識の性能結果５０２は、非常に良好に収束することができ、３２ビット浮動小数点数形式（および関連する３２ビット・ハードウェアおよびソフトウェア）の画像認識の性能結果５０４とかなり良好に比較できる結果（例えば、性能結果５０４に実質的に近くなることができる結果）を提供することができる。さらに、グラフ５００から観察され得るように、半精度の浮動小数点数形式（および関連する１６ビット・ハードウェアおよびソフトウェア）での画像認識の性能結果５０６は、全く収束することができず、したがって、意味のある画像認識結果を提供することができない。
【００６１】
図６に関しては、図６は、開示される対象のさまざまな態様および実施形態に従って、シェイクスピア・テキスト生成に関連する性能結果の例示的なグラフ６００の図を示している。グラフ６００は、２つの積み重ねられた長短期記憶（ＬＳＴＭ：long short-term memories）（それぞれ５１２個のユニット）を含む文字回帰型ニューラル・ネットワーク（ｃｈａｒ−ＲＮＮ：character recurrent neural network）を採用する場合の、改良された浮動小数点数形式、半精度の浮動小数点数形式、および３２ビット浮動小数点数形式での、シェイクスピア・テキストに関する各テキスト生成の性能結果を示すことができる。グラフ６００は、ｘ軸に沿ったトレーニング・エポックに対して、トレーニング・エラーをｙ軸にプロットしている。
【００６２】
性能結果のグラフ６００において観察され得るように、改良された浮動小数点数形式（および関連する１６ビット・ハードウェアおよびソフトウェア）でのテキスト生成の性能結果６０２は、非常に良好に収束することができ、３２ビット浮動小数点数形式（および関連する３２ビット・ハードウェアおよびソフトウェア）のテキスト生成の性能結果６０４と非常に良好に比較できる（例えば、実質的に近くなることができる）結果を提供することができる。さらに、グラフ６００から観察され得るように、半精度の浮動小数点数形式（および関連する１６ビット・ハードウェアおよびソフトウェア）でのテキスト生成の性能結果６０６は、収束することができているが、改良された浮動小数点数形式でのテキスト生成の性能結果６０２または３２ビット浮動小数点数形式のテキスト生成の性能結果６０４と比べて全く良好でない。
【００６３】
図７を参照すると、図７は、開示される対象のさまざまな態様および実施形態に従って、改良された浮動小数点数形式を使用して浮動小数点数（例えば、２進浮動小数点数）を生成または計算するための計算の第１の部分に、より低い精度の計算エンジンを採用することができ、計算の第２の部分に、より高い精度の計算エンジンを採用することができる、例示的な非限定的システム７００のブロック図を示している。本明細書に記載された他の実施形態で採用されている類似する要素の説明の繰り返しは、簡潔にするために省略されているか、または省略されてよい。
【００６４】
システム７００は、プロセッサ・コンポーネント７０２、データ・ストア７０４、および計算コンポーネント７０６を備えることができる。プロセッサ・コンポーネント７０２は、（例えば、バスを介して）データ・ストア７０４およびプログラム格納コンポーネント７０８に関連付ける（例えば、通信によって接続する）ことができ、プログラム格納コンポーネント７０８は、計算コンポーネント７０６を備えることができる。計算コンポーネント７０６は、本明細書において詳細に説明されるように、プロセッサ・コンポーネント７０２および計算コンポーネント７０６が、改良された浮動小数点数形式で浮動小数点数（例えば、２進浮動小数点数）を処理する（例えば、数学的計算を実行する）こと、生成すること、または計算すること、あるいはその組み合わせを実行することを可能にすることができる、改良された形式コンポーネント７１０を備えることができる。
【００６５】
プロセッサ・コンポーネント７０２および計算コンポーネント７０６は、アプリケーション７１２に関連付けられたデータ（例えば、数値データ）に対する動作を実行するために、アプリケーション７１２などの１つまたは複数のアプリケーション（例えば、機械または深層学習アプリケーション）に関連付けられ得る。例えば、プロセッサ・コンポーネント７０２または計算コンポーネント７０６あるいはその両方は、アプリケーション７１２からデータを受信することができ、改良された浮動小数点数形式に従って、このデータに少なくとも部分的に基づいて、数値または結果（例えば、２進浮動小数点数）を処理すること、生成すること、または決定する（例えば、計算する）ことができ、それらの数値または結果をアプリケーション７１２または別の望ましい送り先（例えば、別のアプリケーション、コンポーネント、またはデバイス）あるいはその両方に提供することができる。
【００６６】
一部の実施形態では、プロセッサ・コンポーネント７０２は、より低い精度の計算エンジン１７１４（ＬＰＣＥ１７１４）、より低い精度の計算エンジン２７１６（ＬＰＣＥ２７１６）から、より低い精度の計算エンジンＭ７１８（ＬＰＣＥＭ７１８）までなどの、より低い精度の計算エンジンのセットを備えることができ、Ｍは事実上任意の望ましい数であることができる。より低い精度の計算エンジンのセットのうちのより低い精度の計算エンジン（例えば、７１４、７１６、７１８）は、改良された浮動小数点数形式に従って（例えば、改良された浮動小数点数形式に従うか、改良された浮動小数点数形式を順守するか、改良された浮動小数点数形式で構造化されるか、または提示されるか、あるいはその組み合わせを実行することができる）、データ（例えば、数値データ）に対して計算またはその他の動作を実行して、浮動小数点数（例えば、２進浮動小数点数）を生成することができる、１６ビット計算エンジン（例えば、１６ビットＦＰＵ）であるか、または１６ビット計算エンジンを備えることができる。
【００６７】
プロセッサ・コンポーネント７０２は、より高い精度の計算エンジン１７２０（ＨＰＣＥ１７２０）、より高い精度の計算エンジン２７２２（ＨＰＣＥ２７２２）から、より高い精度の計算エンジンＮ７２４（ＨＰＣＥＮ７２４）までなどの、より高い精度の計算エンジンのセットを備えることもでき、Ｎは事実上任意の望ましい数であることができる。より高い精度の計算エンジンのセットのうちのより高い精度の計算エンジン（例えば、７２０、７２２、７２４）は、望ましい（例えば、適切な、許容できる、または最適な）より高い精度の浮動小数点数形式に従って（例えば、より高い精度の浮動小数点数形式に従うか、より高い精度の浮動小数点数形式を順守するか、より高い精度の浮動小数点数形式で構造化されるか、または提示されるか、あるいはその組み合わせを実行することができる）、データ（例えば、数値データ）に対して計算またはその他の動作を実行して、浮動小数点数（例えば、２進浮動小数点数）を生成することができる、３２ビット（または６４ビットあるいはその両方の）計算エンジン（例えば、ＦＰＵ）であるか、または３２ビット（または６４ビットあるいはその両方の）計算エンジンを備えることができる。
【００６８】
アプリケーション７１２（例えば、機械または深層学習トレーニングに関連または関与するアプリケーション）の実行または使用に関連して、プロセッサ・コンポーネント７０２または計算コンポーネント７０６あるいはその両方によって実行され得るさまざまな種類の計算またはその他の動作が存在することができる。例えば、一部の種類の計算は、他の種類の計算よりも、丸め誤差などの誤差の影響を比較的受けやすいことがある。多くの事例またはほとんどの事例では、アプリケーション７１０に関連する計算の大部分が、誤差の影響を特に受けない種類の計算であることがあり、計算の相対的に小さい部分が、丸め誤差などの誤差の影響を比較的受けやすい種類の計算であることがある。
【００６９】
プロセッサ・コンポーネント７０２、計算コンポーネント７０６、およびシステム７００のその他のコンポーネントによって、計算を含む動作の効率的実行を促進するために、システム７００は、プロセッサ・コンポーネント７０２、データ・ストア７０４、およびプログラム格納コンポーネント７０８に関連付けられ得る（例えば、通信によって接続され得る）動作管理コンポーネント７２６を備えることができる。動作管理コンポーネント７２６は、プロセッサ・コンポーネント７０２、データ・ストア７０４、計算コンポーネント７０６、プログラム格納コンポーネント７０８、より低い精度の計算エンジンのセット（例えば、７１４、７１６、７１８）、およびより高い精度の計算エンジンのセット（例えば、７２０、７２２、７２４）を含む、システム７００のコンポーネントの動作を制御することができる。
【００７０】
例えば、データ（例えば、数値データ）に対する計算の効率的実行を促進するために、動作管理コンポーネント７２６は、動作（例えば、計算動作）の第１の部分および関連するデータをより低い精度の計算エンジンのセット（例えば、７１４、７１６、７１８）に割り当てることができ、より低い精度の計算エンジンのセットは、そのようなデータに対してそのような動作を実行することができる。動作の第１の部分は、データに対して計算またはその他の動作を実行することを含むことができ、これらの計算またはその他の動作は、丸め誤差などの誤差の影響を特に受けない。動作管理コンポーネント７２６は、動作（例えば、計算動作）の第２の部分および関連するデータをより高い精度の計算エンジンのセット（例えば、７２０、７２２、７２４）に割り当てることもでき、より高い精度の計算エンジンのセットは、そのようなデータに対してそのような動作を実行することができる。動作の第２の部分は、データに対して計算またはその他の動作を実行することを含むことができ、これらの計算またはその他の動作は、丸め誤差などの誤差の影響を比較的受けやすい種類の計算であることがあり、したがって、より高い精度の計算エンジンを使用してこれらの影響を受けやすい計算またはその他の動作を実行することが、望ましいことがある。
【００７１】
一般的に（例えば、頻繁に）、誤差の影響を受けやすい計算（例えば、動作の第２の部分）の数よりも、誤差の影響を特に受けない計算（例えば、動作の第１の部分）が著しく多く存在することがあり、一部の実施形態では、より低い精度の計算エンジンのセット（例えば、７１４、７１６、７１８）内の計算エンジンの数（例えば、Ｍ）は、より高い精度の計算エンジンのセット（例えば、７２０、７２２、７２４）内の計算エンジンの数（例えば、Ｎ）より大きくなることができる。ただし、必要に応じて（例えば、実行されるアプリケーションまたはトレーニング・タスクの種類に応じて）、他の実施形態では、より低い精度の計算エンジンのセット（例えば、７１４、７１６、７１８）内およびより高い精度の計算エンジンのセット（例えば、７２０、７２２、７２４）内に、等しい数の計算エンジンが存在することができ、またはより高い精度の計算エンジンのセット（例えば、７２０、７２２、７２４）は、より低い精度の計算エンジンのセット（例えば、７１４、７１６、７１８）より多くの数の計算エンジンを含むことができる。
【００７２】
さまざまな実施形態に従って、システム７００が、１つまたは複数のプロセッサ・コンポーネント、計算コンポーネント、より低い精度の計算エンジン、より高い精度の計算エンジン、グラフィックス・プロセッシング・ユニット（ＧＰＵ）、アクセラレータ、フィールドプログラマブル・ゲート・アレイ（ＦＰＧＡ：field-programmable gate arrays）、またはデータ（例えば、数値データ）に対する計算を実行することを含む、データに対する動作を実行するか、または実行することを容易にするその他の処理ユニット、あるいはその組み合わせを備えることができるということが、理解されるべきである。
【００７３】
図８は、開示される対象のさまざまな態様および実施形態に従って、改良された浮動小数点数形式を使用して、データに対して計算を含む動作を実行するための例示的な非限定的方法８００のフロー図を示している。方法８００は、例えば、改良された形式コンポーネントを採用しているプロセッサ・コンポーネントまたは計算コンポーネントあるいはその両方によって実行され得る。本明細書に記載された他の実施形態で採用されている類似する要素の説明の繰り返しは、簡潔にするために省略されているか、または省略されてよい。
【００７４】
８０２で、各数値フィールドを、定義された浮動小数点数形式（例えば、改良された浮動小数点数形式）で生成することができ、各数値フィールドは、符号フィールド、指数フィールド、および仮数フィールドを含むことができ、定義された浮動小数点数形式は、指数フィールド内の６ビットを利用することができる。プロセッサ・コンポーネントまたは計算コンポーネントあるいはその両方は、定義された浮動小数点数形式で各数値フィールドを生成するか、または生成することを容易にすることができる。
【００７５】
８０４で、アプリケーションの実行に関連して、定義された浮動小数点数形式に従って、２進浮動小数点数が計算され得る。プロセッサ・コンポーネントまたは計算コンポーネントあるいはその両方は、アプリケーションの実行に関連して、定義された浮動小数点数形式に従って２進浮動小数点数を計算するか、またはその他の方法で処理することができる。例えば、プロセッサ・コンポーネントまたは計算コンポーネントあるいはその両方は、アプリケーションの実行に関連して、プログラム、アルゴリズム（例えば、プログラムに関連付けられたアルゴリズム）、または（例えば、プログラムまたはアルゴリズムに関連付けられた）データ点、あるいはその組み合わせを収束させて、解決される問題に対する解に関連する結果を取得することを容易にするために、定義された浮動小数点数形式に従って２進浮動小数点数を計算するか、またはその他の方法で処理することができる。解決される問題は、機械トレーニング、深層学習、認知計算、人工知能、ニューラル・ネットワーク、またはその他の計算負荷の高いタスク、問題、もしくはアプリケーション、あるいはその組み合わせに関連することができる。例えば、この問題は、画像内の物体（例えば、人、場所、または物、あるいはその組み合わせ）を認識もしくは識別するための画像認識、音声コンテンツ内の音声の単語または識別情報あるいはその両方を認識もしくは識別するための音声認識、またはテキスト・コンテンツ（例えば、本、原稿、電子メールなど）内のテキスト・データ（例えば、単語、英数字）を認識もしくは識別するためのテキスト認識に関連することができる。
【００７６】
図９は、開示される対象のさまざまな態様および実施形態に従って、改良された浮動小数点数形式を使用して、データに対して計算を含む動作を実行するための別の例示的な非限定的方法９００のフロー図を示している。方法９００は、例えば、改良された形式コンポーネントを採用しているプロセッサ・コンポーネントまたは計算コンポーネントあるいはその両方によって実行され得る。本明細書に記載された他の実施形態で採用されている類似する要素の説明の繰り返しは、簡潔にするために省略されているか、または省略されてよい。
【００７７】
９０２で、改良された浮動小数点数形式に従って、各フィールドを生成することができ、各フィールドは符号フィールド、指数フィールド、および仮数フィールドを含むことができる。プロセッサ・コンポーネントまたは計算コンポーネントあるいはその両方は、改良された浮動小数点数形式で各フィールドを生成するか、または生成することを容易にすることができる。定義された浮動小数点数形式は、符号フィールドが符号ビットを含むことができ、指数フィールドが６ビットを含むことができ、仮数フィールドが９ビットを含むことができる、１６ビット形式であることができる。
【００７８】
９０４で、改良された浮動小数点数形式に従って、２進浮動小数点数が処理され得る。プロセッサ・コンポーネントまたは計算コンポーネントあるいはその両方は、改良された浮動小数点数形式に従って、２進浮動小数点数を処理すること、生成すること、または計算すること、あるいはその組み合わせを実行し、例えば、定義された収束基準に従って、アプリケーションに関連付けられたプログラムを収束させることを容易にすることができる。定義された収束基準は、例えば、アプリケーションの実行に関連して、プログラム（例えば、プログラムのアルゴリズムまたはデータ点あるいはその両方）が収束して、解決されるプログラムに対する結果を取得するのにかかる時間、収束して結果を取得することのプログラムの達成可能性、または結果に関連付けられたエラー率、あるいはその組み合わせに関連することができる。
【００７９】
９０６で、改良された浮動小数点数形式に従って、ゼロおよび正規数を表すために、第１のバイネードを利用することができ、第１のバイネードは、すべてゼロを含んでいる指数フィールドに関連付けられる。プロセッサ・コンポーネントまたは計算コンポーネントあるいはその両方は、改良された浮動小数点数形式に従って、第１のバイネードを利用してゼロおよび正規数を表すことができる。第１のバイネードは、例えば、最低のバイネードであることができる。第１のバイネードは、すべてゼロの小数を含むセットのデータ点がゼロを表すことができる、データ点のセットを含むことができる。データ点のセットの他のデータ点は、正規数を表すことができる。
【００８０】
正規数は、改良された浮動小数点数形式に関連付けられた基数および最小指数の関数として決定され得る最小値以上の大きさを有する、有限のゼロ以外の浮動小数点数であることができる。例えば、正規数は、ｒｍｉｎ（ｅ）以上の大きさを有する、有限のゼロ以外の浮動小数点数であることができ、ｒは基数であることができ、ｍｉｎ（ｅ）は最小指数であることができる。改良された浮動小数点数形式は、非正規数を使用しないように、含まないように、または除去するように、構造化され得る。
【００８１】
９０８で、改良された浮動小数点数形式に従って、第２のバイネードの縮小されたサブセットを利用して、無限大の値およびＮａＮ値を表すことができる。プロセッサ・コンポーネントまたは計算コンポーネントあるいはその両方は、改良された浮動小数点数形式に従って、第２のバイネードの縮小されたサブセットを利用して無限大の値およびＮａＮ値を表すことができる。第２のバイネードは、例えば最高のバイネードであることができ、第２のバイネードは、１の値を含んでいる指数フィールドのビットのすべてに関連付けられ得る。
【００８２】
改良された浮動小数点形式は、第２のバイネードのデータ点のセットのうちのデータ点の縮小された（例えば、より小さい）サブセットを利用して無限大の値およびＮａＮ値を表すように、構造化され得る。データ点の縮小されたセットは、第２のバイネードの全体に関連付けられたデータ点のセットより少ないデータ点を含むことができる。一部の実施形態では、改良された浮動小数点形式は、第２のバイネードのデータ点のセットのうちの単一のデータ点を利用して、無限大の値およびＮａＮ値の両方を単一のマージされたシンボルとして表すように、構造化され得る。すなわち、データ点の縮小されたサブセットは、無限大の値およびＮａＮ値の単一のマージされたシンボルを表すことができる、単一のデータ点を含むことができる。他の実施形態では、データ点の縮小されたサブセットは、無限大の値を表すことができるデータ点、およびＮａＮ値を表すことができる別のデータ点を含むことができる。データ点の縮小されたセットに含まれない第２のバイネードのデータ点のセットの他のデータ点を使用して、有限の数を表すことができ、それによって、改良された浮動小数点数形式を使用して表され得る浮動小数点数の範囲をさらに拡張または拡大することができる。
【００８３】
９１０で、浮動小数点数がゼロである場合、改良された浮動小数点数形式に従って、ゼロの符号が「ドントケア」項として表され得る。浮動小数点数がゼロである場合、プロセッサ・コンポーネントまたは計算コンポーネントあるいはその両方は、改良された浮動小数点数形式に従って、ゼロの符号を「ドントケア」項として表すことができる。「ドントケア」項は、ゼロの値に関して符号が重要でないことを示すことができる項またはシンボルであることができる。
【００８４】
９１２で、浮動小数点数がゼロである場合、ゼロの符号の項を表すために、ゼロの値の符号フィールドに、任意の値が生成され得る。プロセッサ・コンポーネントまたは計算コンポーネントあるいはその両方は、例えばゼロが浮動小数点数である場合、ゼロの値の符号の項またはシンボルを表すために、符号フィールドに任意の値を生成することができる。プロセッサ・コンポーネントまたは計算コンポーネントあるいはその両方は、プロセッサ・コンポーネントまたは計算コンポーネントが生成して符号フィールドに挿入するために便利または効率的な（例えば、最も便利または最も効率的な）任意の値またはシンボルを、改良された浮動小数点数形式の符号フィールドに生成することができる。例えば、プロセッサ・コンポーネントまたは計算コンポーネントあるいはその両方は、最小量のリソース（例えば、処理リソースまたは計算リソース）を利用することができるか、または少なくとも、符号フィールドの任意でない値を決定および生成してゼロの値の符号を表すためにその他の方法で使用されるよりも少ないリソースを利用することができる、任意の値を生成することができる。
【００８５】
９１４で、浮動小数点数が無限大またはＮａＮあるいはその両方である場合、改良された浮動小数点数形式に従って、無限大またはＮａＮあるいはその両方の符号が「ドントケア」項として表され得る。浮動小数点数が無限大またはＮａＮあるいはその両方である場合、プロセッサ・コンポーネントまたは計算コンポーネントあるいはその両方は、改良された浮動小数点数形式に従って、無限大またはＮａＮあるいはその両方の符号を「ドントケア」項として表すことができる。「ドントケア」項は、無限大の値またはＮａＮ値あるいはその両方に関して符号が重要でないことを示すことができる項またはシンボルであることができる。一部の実施形態では、無限大の値およびＮａＮ値が、マージされたシンボルとして表され得る。他の実施形態では、無限大の値およびＮａＮ値が、個別に表され得る。
【００８６】
９１６で、浮動小数点数が無限大またはＮａＮあるいはその両方である場合、無限大またはＮａＮあるいはその両方の値の符号の項を表すために、任意の値が、無限大またはＮａＮあるいはその両方の値に関連付けられた符号フィールドに生成され得る。プロセッサ・コンポーネントまたは計算コンポーネントあるいはその両方は、例えば無限大またはＮａＮが浮動小数点数の結果である場合、無限大またはＮａＮあるいはその両方の値のうちの値の符号の項またはシンボルを表すために、無限大またはＮａＮあるいはその両方の値に関連付けられた符号フィールドに任意の値を生成することができる。本明細書において説明されているように、一部の実施形態では、無限大の値およびＮａＮ値をマージされたシンボルとして表すことができ、他の実施形態では、無限大の値およびＮａＮ値を個別に表すことができる。
【００８７】
改良された浮動小数点数形式に従って、プロセッサ・コンポーネントまたは計算コンポーネントあるいはその両方は、プロセッサ・コンポーネントまたは計算コンポーネントが生成して符号フィールドに挿入するために便利または効率的な（例えば、最も便利または最も効率的な）任意の値またはシンボルを、無限大またはＮａＮあるいはその両方の値に関連付けられた符号フィールドに生成することができる。例えば、プロセッサ・コンポーネントまたは計算コンポーネントあるいはその両方は、最小量のリソース（例えば、処理リソースまたは計算リソース）を利用することができるか、または少なくとも、符号フィールドの任意でない値を決定および生成して無限大またはＮａＮあるいはその両方の値の符号を表すためにその他の方法で使用されるよりも少ないリソースを利用することができる、任意の値を生成することができる。
【００８８】
９１８で、浮動小数点数が丸められる場合、改良された浮動小数点数形式に従って、単一の丸めモードが、２進浮動小数点数を丸めるために利用され得る。数の丸めが望ましい場合、プロセッサ・コンポーネントまたは計算コンポーネントあるいはその両方は、定義された浮動小数点数形式に従って、中間の２進浮動小数点数の丸めを実行して２進浮動小数点数の処理または計算を容易にするために、単一の丸めモードを使用して中間の２進浮動小数点数（例えば、予備的な計算された数値）の丸めを実行することができる。一部の実施形態では、単一の丸めモードは、最も近い値に切り上げるモードであることができる。開示される対象は、浮動小数点数に対して丸めを実行するために、最も近い値に切り上げるモードのみを利用することにより、アプリケーションを実行して、２進浮動小数点数を処理または計算するために利用されるハードウェア（例えば、ハードウェアまたはハードウェア・リソースの量または種類あるいはその両方）を削減することによって、効率を改善することができる。
【００８９】
説明を簡単にするために、一連の動作として方法またはコンピュータ実装方法あるいはその両方が示され、説明される。開示される対象が、示された動作によって、または動作の順序によって、あるいはその両方によって制限されず、例えば動作が、本明細書において提示されておらず、説明されていない他の動作と共に、さまざまな順序で、または同時に、あるいはその両方で発生できるということが、理解されるべきである。さらに、開示される対象に従ってコンピュータ実装方法を実装するために、示されているすべての動作が必要でなくてもよい。加えて、当業者は、コンピュータ実装方法が、代替として、状態図を介して相互に関連する一連の状態またはイベントとして表され得るということを理解するであろう。そのようなコンピュータ実装方法をコンピュータに輸送または転送するのを容易にするために、以下および本明細書全体を通じて開示されたコンピュータ実装方法を製品に格納できるということが、さらに理解されるべきである。製品という用語は、本明細書において使用されるとき、任意のコンピュータ可読デバイスまたはコンピュータ可読ストレージ媒体からアクセスできるコンピュータ・プログラムを包含するよう意図されている。
【００９０】
開示される対象のさまざまな態様の背景を提供するために、図１０および以下の説明は、開示される対象のさまざまな態様が実装され得る適切な環境の概要を示すよう意図されている。図１０は、本明細書に記載された１つまたは複数の実施形態を容易にすることができる例示的な非限定的動作環境のブロック図を示している。本明細書に記載された他の実施形態で採用されている類似する要素の説明の繰り返しは、簡潔にするために省略されているか、または省略されてよい。図１０を参照すると、本開示のさまざまな態様を実装するための適切な動作環境１０００は、コンピュータ１０１２を含むこともできる。コンピュータ１０１２は、処理ユニット１０１４、システム・メモリ１０１６、およびシステム・バス１０１８を含むこともできる。システム・バス１０１８は、システム・メモリ１０１６を含むが、これに限定されないシステム・コンポーネントを、処理ユニット１０１４に結合する。処理ユニット１０１４は、さまざまな使用可能なプロセッサのいずれかであることができる。デュアル・マイクロプロセッサおよびその他のマルチプロセッサ・アーキテクチャが、処理ユニット１０１４として採用されてもよい。システム・バス１０１８は、ＩＳＡ（Industry Standard Architecture）、ＭＣＡ（Micro Channel Architecture）、ＥＩＳＡ（Enhanced ISA）、ＩＤＥ（Intelligent Drive Electronics）、ＶＥＳＡローカル・バス（ＶＬＢ：VESA Local Bus）、ＰＣＩ（Peripheral Component Interconnects）、カードバス、ユニバーサル・シリアル・バス（ＵＳＢ：Universal Serial Bus）、ＡＧＰ（Advanced Graphics Port）、ＦｉｒｅＷｉｒｅ（ＩＥＥＥ  １３９４）、および小型コンピュータ・システム・インターフェイス（ＳＣＳＩ：Small Computer Systems Interface）を含むが、これらに限定されない、任意のさまざまな使用可能なバス・アーキテクチャを使用する、メモリ・バスもしくはメモリ・コントローラ、ペリフェラル・バスもしくは外部バス、またはローカル・バス、あるいはその組み合わせを含む、複数の種類のバス構造のいずれかであることができる。システム・メモリ１０１６は、揮発性メモリ１０２０および不揮発性メモリ１０２２を含むこともできる。起動中などにコンピュータ１０１２内の要素間で情報を転送するための基本ルーチンを含んでいる基本入出力システム（ＢＩＯＳ：basic input/output system）が、不揮発性メモリ１０２２に格納される。不揮発性メモリ１０２２の例としては、読み取り専用メモリ（ＲＯＭ：read only memory）、プログラマブルＲＯＭ（ＰＲＯＭ：programmableROM）、電気的プログラマブルＲＯＭ（ＥＰＲＯＭ：electrically programmable ROM）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ：electrically erasable programmable ROM）、フラッシュ・メモリ、または不揮発性ランダム・アクセス・メモリ（ＲＡＭ：random access memory）（例えば、強誘電体ＲＡＭ（ＦｅＲＡＭ：ferroelectric RAM））が挙げられるが、これらに限定されない。揮発性メモリ１０２０は、外部キャッシュ・メモリとして機能するランダム・アクセス・メモリ（ＲＡＭ）を含むこともできる。例えばＲＡＭは、スタティックＲＡＭ（ＳＲＡＭ：static RAM）、ダイナミックＲＡＭ（ＤＲＡＭ：dynamic RAM）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ：synchronous DRAM）、ダブル・データ・レート��ＤＲＡＭ（ＤＤＲ  ＳＤＲＡＭ：double data rate SDRAM）、拡張ＳＤＲＡＭ（ＥＳＤＲＡＭ）、シンクリンクＤＲＡＭ（ＳＬＤＲＡＭ：Synchlink DRAM）、ダイレクト・ラムバスＲＡＭ（ＤＲＲＡＭ：direct Rambus RAM）、ダイレクト・ラムバス・ダイナミックＲＡＭ（ＤＲＤＲＡＭ：direct Rambus dynamic RAM）、およびラムバス・ダイナミックＲＡＭなどの、ただしこれらに限定されない、多くの形態で利用可能である。
【００９１】
コンピュータ１０１２は、取り外し可能／取り外し不可能な揮発性／不揮発性のコンピュータ・ストレージ媒体を含むこともできる。例えば図１０は、ディスク・ストレージ１０２４を示している。ディスク・ストレージ１０２４は、磁気ディスク・ドライブ、フロッピー（Ｒ）・ディスク・ドライブ、テープ・ドライブ、Ｊａｚドライブ、Ｚｉｐドライブ、ＬＳ−１００ドライブ、フラッシュ・メモリ・カード、またはメモリ・スティックなどの、ただしこれらに限定されない、デバイスを含むこともできる。ディスク・ストレージ１０２４は、コンパクト・ディスクＲＯＭデバイス（ＣＤ−ＲＯＭ：compact disk ROM device）、記録可能ＣＤドライブ（ＣＤ−Ｒドライブ：CD recordable drive）、再書き込み可能ＣＤドライブ（ＣＤ−ＲＷドライブ：CD rewritable drive）、またはデジタル多用途ディスクＲＯＭドライブ（ＤＶＤ−ＲＯＭ：digital versatile disk ROM drive）などの光ディスク・ドライブを含むが、これらに限定されないストレージ媒体を、別々に、または他のストレージ媒体と組み合わせて、含むこともできる。システム・バス１０１８へのディスク・ストレージ１０２４の接続を容易にするために、インターフェイス１０２６などの、取り外し可能または取り外し不可能なインターフェイスが通常は使用される。図１０は、ユーザと、適切な動作環境１０００において説明された基本的なコンピュータ・リソースとの間の仲介として機能するソフトウェアも示している。そのようなソフトウェアは、例えば、オペレーティング・システム１０２８を含むこともできる。ディスク・ストレージ１０２４に格納できるオペレーティング・システム１０２８は、コンピュータ１０１２のリソースを制御し、割り当てるように動作する。システムのアプリケーション１０３０は、プログラム・モジュール１０３２を介して、オペレーティング・システム１０２８によるリソースの管理を利用し、例えばシステム・メモリ１０１６またはディスク・ストレージ１０２４のいずれかに格納されたデータ１０３４をプログラムする。さまざまなオペレーティング・システムまたはオペレーティング・システムの組み合わせを使用して本開示が実装され得るということが、理解されるべきである。ユーザは、１つまたは複数の入力デバイス１０３６を介して、コマンドまたは情報をコンピュータ１０１２に入力する。入力デバイス１０３６は、マウス、トラックボール、スタイラス、タッチ・パッド、キーボード、マイクロホン、ジョイスティック、ゲーム・パッド、衛星放送受信アンテナ、スキャナ、ＴＶチューナー・カード、デジタル・カメラ、デジタル・ビデオ・カメラ、Ｗｅｂカメラなどのポインティング・デバイスを含むが、これらに限定されない。これらおよびその他の入力デバイスは、インターフェイス・ポート１０３８を介してシステム・バス１０１８を通り、処理ユニット１０１４に接続する。インターフェイス・ポート１０３８は、例えば、シリアル・ポート、パラレル・ポート、ゲーム・ポート、およびユニバーサル・シリアル・バス（ＵＳＢ）を含む。出力デバイス１０４０は、入力デバイス１０３６と同じ種類のポートの一部を使用する。このようにして、例えば、ＵＳＢポートを使用して、入力をコンピュータ１０１２に提供し、コンピュータ１０１２から出力デバイス１０４０に情報を出力できる。出力アダプタ１０４２は、特殊なアダプタを必要とする出力デバイス１０４０の中でも特に、モニタ、スピーカ、およびプリンタのような何らかの出力デバイス１０４０が存在することを示すために提供される。出力アダプタ１０４２の例としては、出力デバイス１０４０とシステム・バス１０１８の間の接続の方法を提供するビデオ・カードおよびサウンド・カードが挙げられるが、これらに限定されない。リモート・コンピュータ１０４４などの、その他のデバイスまたはデバイスのシステムあるいはその両方が、入力機能および出力機能の両方を提供するということに、注意するべきである。
【００９２】
コンピュータ１０１２は、リモート・コンピュータ１０４４などの１つまたは複数のリモート・コンピュータへの論理接続を使用して、ネットワーク環境内で動作できる。リモート・コンピュータ１０４４は、コンピュータ、サーバ、ルータ、ネットワークＰＣ、ワークステーション、マイクロプロセッサベースの機器、ピア・デバイス、またはその他の一般的なネットワーク・ノードなどであることができ、通常は、コンピュータ１０１２に関連して説明された要素の多くまたはすべてを含むこともできる。簡潔にするために、メモリ・ストレージ・デバイス１０４６のみが、リモート・コンピュータ１０４４と共に示されている。リモート・コンピュータ１０４４は、ネットワーク・インターフェイス１０４８を介してコンピュータ１０１２に論理的に接続されてから、通信接続１０５０を介して物理的に接続される。ネットワーク・インターフェイス１０４８は、ローカル・エリア・ネットワーク（ＬＡＮ：local-area networks）、広域ネットワーク（ＷＡＮ：wide-area networks）、セルラー・ネットワークなどの、有線通信ネットワークまたは無線通信ネットワークあるいはその両方を包含する。ＬＡＮ技術は、光ファイバ分散データ・インターフェイス（ＦＤＤＩ：Fiber Distributed Data Interface）、銅線分散データ・インターフェイス（ＣＤＤＩ：Copper Distributed Data Interface）、イーサネット（Ｒ）、トークン・リングなどを含む。ＷＡＮ技術は、ポイントツーポイント・リンク、総合デジタル通信網（ＩＳＤＮ：Integrated Services Digital Networks）およびその変形などの回路交換網、パケット交換網、およびデジタル加入者回線（ＤＳＬ：Digital Subscriber Lines）を含むが、これらに限定されない。通信接続１０５０は、ネットワーク・インターフェイス１０４８をシステム・バス１０１８に接続するために採用されたハードウェア／ソフトウェアのことを指す。通信接続１０５０は、説明を明確にするために、コンピュータ１０１２内に示されているが、コンピュータ１０１２の外部に存在することもできる。ネットワーク・インターフェイス１０４８に接続するためのハードウェア／ソフトウェアは、単に例示の目的で、通常の電話の等級のモデム、ケーブル・モデム、およびＤＳＬモデムを含むモデム、ＩＳＤＮアダプタ、およびイーサネット（Ｒ）・カードなどの、内部および外部の技術を含むこともできる。
【００９３】
１つまたは複数の実施形態は、任意の可能な統合の技術的詳細レベルで、システム、方法、装置、またはコンピュータ・プログラム製品、あるいはその組み合わせであってよい。コンピュータ・プログラム製品は、プロセッサに１つまたは複数の実施形態の態様を実行させるためのコンピュータ可読プログラム命令を含んでいるコンピュータ可読ストレージ媒体を含むことができる。コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであることができるが、これらに限定されない。コンピュータ可読ストレージ媒体のさらに具体的な例の非網羅的リストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ：random access memory）、読み取り専用メモリ（ＲＯＭ：read-only memory）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭ：erasable programmable read-only memoryまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ：static random access memory）、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：compact disc read-only memory）、デジタル多用途ディスク（ＤＶＤ：digital versatile disk）、メモリ・スティック、フロッピー（Ｒ）・ディスク、パンチカードまたは命令が記録されている溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組み合わせを含むこともできる。本明細書において使用されるとき、コンピュータ可読ストレージ媒体は、それ自体が、電波またはその他の自由に伝搬する電磁波、導波管またはその他の送信媒体を伝搬する電磁波（例えば、光ファイバ・ケーブルを通過する光パルス）、あるいはワイヤを介して送信される電気信号などの一過性の信号であると解釈されるべきではない。
【００９４】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体から各コンピューティング・デバイス／処理デバイスへ、またはネットワーク（例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、または無線ネットワーク、あるいはその組み合わせ）を介して外部コンピュータまたは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせを備えることができる。各コンピューティング・デバイス／処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス／処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。開示される対象の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ：instruction-set-architecture）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、あるいは、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語または同様のプログラミング言語などの手続き型プログラミング言語を含む１つまたは複数のプログラミング言語の任意の組み合わせで記述されたソース・コードまたはオブジェクト・コードであることができる。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）または広域ネットワーク（ＷＡＮ）を含む任意の種類のネットワークを介してユーザのコンピュータに接続することができ、または接続は、（例えば、インターネット・サービス・プロバイダを使用してインターネットを介して）外部コンピュータに対して行われ得る。一部の実施形態では、開示される対象の態様を実行するために、例えばプログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ（ＦＰＧＡ：field-programmable gate arrays）、またはプログラマブル・ロジック・アレイ（ＰＬＡ：programmable logic arrays）を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行することができる。
【００９５】
開示される対象の態様は、本明細書において、開示される対象の実施形態に従って、方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能／動作を実施する方法を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであることができる。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読ストレージ媒体がフローチャートまたはブロック図あるいはその両方のブロックに指定される機能／動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読ストレージ媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組み合わせに特定の方式で機能するように指示できるものであることもできる。コンピュータ可読プログラム命令は、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能／動作を実施するように、コンピュータ実装プロセスを生成するべく、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスに読み込むこともでき、それによって、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で一連の操作可能な動作を実行させるものであることもできる。
【００９６】
図内のフローチャートおよびブロック図は、開示される対象のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための１つまたは複数の実行可能な命令を含んでいる、命令のモジュール、セグメント、または部分を表すことができる。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生することができる。例えば、連続して示された２つのブロックは、実際には、含まれている機能に応じて、実質的に同時に実行されるか、または場合によっては逆の順序で実行され得る。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組み合わせは、規定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令の組み合わせを実行する専用ハードウェアベースのシステムによって実装され得るということにも注意する。
【００９７】
上記では、１つのコンピュータまたは複数のコンピュータあるいはその両方で実行されるコンピュータ・プログラム製品のコンピュータ実行可能命令との一般的な関連において、対象が説明されたが、当業者は、本開示を他のプログラム・モジュールと組み合わせて実装することもできるということを認識するであろう。通常、プログラム・モジュールは、特定のタスクを実行するか、または特定の抽象データ型を実装するか、あるいはその両方を行うルーチン、プログラム、コンポーネント、データ構造などを含む。さらに、当業者は、本明細書で開示されたコンピュータ実装方法が、シングルプロセッサ・コンピュータ・システムまたはマルチプロセッサ・コンピュータ・システム、ミニコンピューティング・デバイス、メインフレーム・コンピュータ、コンピュータ、ハンドヘルド・コンピューティング・デバイス（例えば、ＰＤＡ、電話）、マイクロプロセッサベースまたはプログラム可能な家庭用電化製品または産業用電子機器などを含む、その他のコンピュータ・システム構成を使用して実践され得るということを理解するであろう。示された態様は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが実行される、分散コンピューティング環境内で実践されてもよい。ただし、本開示の態様の全部ではないとしても一部は、スタンドアロン・コンピュータ上で実践され得る。分散コンピューティング環境において、プログラム・モジュールは、ローカルおよびリモートの両方のメモリ・ストレージ・デバイスに配置され得る。
【００９８】
本出願において使用されるとき、「コンポーネント」、「システム」、「プラットフォーム」、「インターフェイス」などの用語は、１つまたは複数の特定の機能を含むコンピュータ関連の実体または操作可能なマシンに関連する実体を指すことができるか、またはそれらの実体を含むことができるか、あるいはその両方が可能である。本明細書で開示された実体は、ハードウェア、ハードウェアとソフトウェアの組み合わせ、ソフトウェア、または実行中のソフトウェアのいずれかであることができる。例えば、コンポーネントは、プロセッサ上で実行されるプロセス、プロセッサ、オブジェクト、実行ファイル、実行のスレッド、プログラム、またはコンピュータ、あるいはその組み合わせであることができるが、これらに限定されない。例として、サーバ上で実行されるアプリケーションおよびサーバの両方が、コンポーネントであることができる。１つまたは複数のコンポーネントが、プロセス内または実行のスレッド内あるいはその両方に存在することができ、コンポーネントは、１つのコンピュータ上に局在するか、または２つ以上のコンピュータ間で分散されるか、あるいはその両方が可能である。別の例では、各コンポーネントは、さまざまなデータ構造が格納されているさまざまなコンピュータ可読媒体から実行できる。コンポーネントは、１つまたは複数のデータ・パケット（例えば、ローカル・システム内または分散システム内の別のコンポーネントと情報をやりとりするか、またはインターネットなどのネットワークを経由して、信号を介して他のシステムと情報をやりとりするか、あるいはその両方によって情報をやりとりする、１つのコンポーネントからのデータ）を含んでいる信号などに従って、ローカルまたはリモートあるいはその両方のプロセスを介して通信できる。別の例として、コンポーネントは、電気または電子回路によって操作される機械的部品によって提供される特定の機能を有する装置であることができ、プロセッサによって実行されるソフトウェア・アプリケーションまたはファームウェア・アプリケーションによって操作される。そのような場合、プロセッサは、装置の内部または外部に存在することができ、ソフトウェア・アプリケーションまたはファームウェア・アプリケーションの少なくとも一部を実行できる。さらに別の例として、コンポーネントは、機械的部品を含まない電子コンポーネントを介して特定の機能を提供する装置であることができ、それらの電子コンポーネントは、電子コンポーネントの機能の少なくとも一部を与えるソフトウェアまたはファームウェアを実行するためのプロセッサまたはその他の方法を含むことができる。１つの態様では、コンポーネントは、例えばクラウド・コンピューティング・システム内で、仮想マシンを介して電子コンポーネントをエミュレートすることができる。
【００９９】
加えて、「または」という用語は、排他的論理和ではなく、包含的論理和を意味するよう意図されている。すなわち、特に指定されない限り、または文脈から明らかでない限り、「ＸがＡまたはＢを採用する」は、自然な包含的順列のいずれかを意味するよう意図されている。すなわち、ＸがＡを採用するか、ＸがＢを採用するか、またはＸがＡおよびＢの両方を採用する場合、「ＸがＡまたはＢを採用する」が、前述の事例のいずれかにおいて満たされる。さらに、本明細書および添付の図面において使用される冠詞「ａ」および「ａｎ」は、単数形を対象にすることが特に指定されない限り、または文脈から明らかでない限り、「１つまたは複数」を意味すると一般に解釈されるべきである。本明細書において使用されるとき、「例」または「例示的」あるいはその両方の用語は、例、事例、または実例となることを意味するために使用される。誤解を避けるために、本明細書で開示された対象は、そのような例によって制限されない。加えて、「例」または「例示的」あるいはその両方として本明細書に記載された任意の態様または設計は、他の態様または設計よりも好ましいか、または有利であると必ずしも解釈されず、当業者に知られている同等の例示的な構造および技術を除外するよう意図されていない。
【０１００】
本明細書において使用されるとき、「プロセッサ」という用語は、シングルコア・プロセッサと、ソフトウェアのマルチスレッド実行機能を備えるシングルプロセッサと、マルチコア・プロセッサと、ソフトウェアのマルチスレッド実行機能を備えるマルチコア・プロセッサと、ハードウェアのマルチスレッド技術を備えるマルチコア・プロセッサと、並列プラットフォームと、分散共有メモリを備える並列プラットフォームとを含むが、これらに限定されない、実質的に任意の計算処理ユニットまたはデバイスを指すことができる。さらに、プロセッサは、集積回路、特定用途向け集積回路（ＡＳＩＣ：application specific integrated circuit）、デジタル信号プロセッサ（ＤＳＰ：digital signal processor）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ：field programmable gate array）、プログラマブル・ロジック・コントローラ（ＰＬＣ：programmable logic controller）、複合プログラム可能論理デバイス（ＣＰＬＤ：complex programmable logic device）、個別のゲートまたはトランジスタ論理、個別のハードウェア・コンポーネント、あるいは本明細書に記載された機能を実行するように設計されたこれらの任意の組み合わせを指すことができる。さらに、プロセッサは、空間利用を最適化し、ユーザ機器の性能を向上するために、分子および量子ドットベースのトランジスタ、スイッチ、およびゲートなどの、ただしこれらに限定されない、ナノスケール・アーキテクチャを利用することができる。プロセッサは、計算処理ユニットの組み合わせとして実装されてもよい。本開示では、コンポーネントの動作および機能に関連する「ストア」、「ストレージ」、「データ・ストア」、「データ・ストレージ」、「データベース」、および実質的に任意のその他の情報格納コンポーネントなどの用語は、「メモリ・コンポーネント」、「メモリ」内に具現化された実体、またはメモリを備えているコンポーネントを指すために使用される。本明細書に記載されたメモリまたはメモリ・コンポーネントあるいはその両方が、揮発性メモリまたは不揮発性メモリのいずれかであることができ、あるいは揮発性メモリおよび不揮発性メモリの両方を含むことができるということが、理解されるべきである。不揮発性メモリの例としては、読み取り専用メモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、電気的プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能ＲＯＭ（ＥＥＰＲＯＭ）、フラッシュ・メモリ、または不揮発性ランダム・アクセス・メモリ（ＲＡＭ）（例えば、強誘電体ＲＡＭ（ＦｅＲＡＭ））が挙げられるが、これらに限定されない。揮発性メモリは、例えば外部キャッシュ・メモリとして機能できる、ＲＡＭを含むことができる。例えばＲＡＭは、シンクロナスＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、ダブル・データ・レートＳＤＲＡＭ（ＤＤＲ  ＳＤＲＡＭ）、拡張ＳＤＲＡＭ（ＥＳＤＲＡＭ）、シンクリンクＤＲＡＭ（ＳＬＤＲＡＭ）、ダイレクト・ラムバスＲＡＭ（ＤＲＲＡＭ）、ダイレクト・ラムバス・ダイナミックＲＡＭ（ＤＲＤＲＡＭ）、およびラムバス・ダイナミックＲＡＭ（ＲＤＲＡＭ：Rambus dynamic RAM）などの、ただしこれらに限定されない、多くの形態で利用可能である。さらに、本明細書において開示されたシステムまたはコンピュータ実装方法のメモリ・コンポーネントは、これらおよび任意のその他の適切な種類のメモリを含むが、これらに限定されない、メモリを含むよう意図されている。
【０１０１】
前述した内容は、システムおよびコンピュータ実装方法の単なる例を含んでいる。当然ながら、本開示を説明する目的で、コンポーネントまたはコンピュータ実装方法の考えられるすべての組み合わせについて説明することは不可能であるが、当業者は、本開示の多くのその他の組み合わせおよび並べ替えが可能であるということを認識できる。さらに、「含む」、「有する」、「所有する」などの用語が、発明を実施するための形態、特許請求の範囲、付録、および図面において使用される範囲では、それらの用語は、「備えている」が特許請求における暫定的な用語として使用されるときに解釈されるような、用語「備えている」と同様の方法で、包含的であるよう意図されている。さまざまな実施形態の説明は、例示の目的で提示されているが、網羅的であることは意図されておらず、開示された実施形態に制限されない。記載された実施形態の範囲および思想を逸脱することなく多くの変更および変形が可能であることは、当業者にとって明らかであろう。本明細書で使用された用語は、実施形態の原理、実際の適用、または市場で見られる技術を超える技術的改良を最も適切に説明するため、または他の当業者が本明細書で開示された実施形態を理解できるようにするために選択されている。
【図１】
2021525403.tif 000005
【図２】
2021525403.tif 000006
【図３】
2021525403.tif 000007
【図４】
2021525403.tif 000008
【図５】
2021525403.tif 000009
【図６】
2021525403.tif 000010
【図７】
2021525403.tif 000011
【図８】
2021525403.tif 000012
【図９】
2021525403.tif 000013
【図１０】
2021525403.tif 000014
【国際調査報告】
2021525403.tif 000015
2021525403.tif 000016