(57)【要約】【課題】浮動小数点実行ユニットを提供する。【解決手段】浮動小数点実行ユニットは、浮動小数点計算のために拡張された値域を動的に提供するために浮動小数点値の仮数ビットの部分集合を付加的な指数ビットして選択的に再利用することができる。浮動小数点オペランドの仮数フィールドは第１および第２部分を含むと考えられることができ、その第１部分は、浮動小数点値の仮数を表すように第２部分と連結されることができ、あるいは、拡張された値域を提供するために、浮動小数点値の指数を表すように浮動小数点オペランドの指数フィールドと連結されることができる。【選択図】図６
2010027049.tif 000002
【特許請求の範囲】
【請求項１】
回路装置であって、
前記回路装置は３２ビット浮動小数点値を記憶するように構成された複数のレジスタを含むレジスタ・ファイルを含み、各浮動小数点値は１ビットの符号フィールドと、８ビットの指数フィールドと２３ビットの仮数フィールドとで構成され、前記仮数フィールドは３ビットの第１部分と２０ビットの第２部分とを含み、
前記回路装置は単精度浮動小数点実行ユニットを含み、前記浮動小数点実行ユニットは、前記レジスタ・ファイルに結合されて、前記浮動小数点実行ユニットにより実行される第１浮動小数点命令により特定される前記レジスタ・ファイルからの第１ソース・レジスタに格納された第１入力浮動小数点値を処理して第１出力浮動小数点値を前記レジスタ・ファイルからの第１宛先レジスタに格納するとともに、前記浮動小数点実行ユニットにより実行される第２浮動小数点命令により特定される前記レジスタ・ファイルからの第２ソース・レジスタに格納された第２入力浮動小数点値を処理して第２出力浮動小数点値を前記レジスタ・ファイルからの第２宛先レジスタに格納するように構成されており、前記浮動小数点実行ユニットは指数経路と仮数経路とを含み、前記第１浮動小数点命令は非拡張値域浮動小数点命令であり、前記第２浮動小数点命令は拡張値域浮動小数点命令であり、前記浮動小数点実行ユニットは、前記第１入力浮動小数点値の前記指数フィールドに格納されているデータを指数として使用しかつ前記第１入力浮動小数点値の前記仮数フィールドの前記第１部分および第２部分に格納されているデータを仮数として使用するべく連結することによって前記第１浮動小数点命令を実行するように構成されており、前記浮動小数点実行ユニットは、前記第２入力浮動小数点値の前記指数フィールドと前記仮数フィールドの前記第１部分とに格納されているデータを指数として使用するべく連結しかつ前記第２入力浮動小数点値の前記仮数フィールドの前記第２部分に格納されているデータを仮数として使用することによって前記第２浮動小数点命令を実行するように構成されており、
前記回路装置は前記浮動小数点実行ユニットの前記仮数経路に結合されて前記レジスタ・ファイルから浮動小数点値を受け取るように構成された第１シフト・ロジックを含み、前記第１シフト・ロジックは、前記第２浮動小数点命令が拡張値域浮動小数点命令であることに基づいて前記第２浮動小数点命令の実行中に前記第２入力浮動小数点値の前記仮数フィールドの前記第２部分のデータを選択的に左へ３ビットだけシフトさせるように構成され、前記第１シフト・ロジックは、さらに、前記第１浮動小数点命令が非拡張値域浮動小数点命令であることに基づいて前記第１入力浮動小数点値の前記仮数フィールドを改変せずに通過させるように構成されており、
前記回路装置は前記浮動小数点実行ユニットの前記仮数経路に結合されて前記浮動小数点実行ユニットからの出力浮動小数点値を受け取るように構成された第２シフト・ロジックを含み、前記第２シフト・ロジックは、前記第２浮動小数点命令が拡張値域浮動小数点命令であることに基づいて前記第２浮動小数点命令の実行中に前記第２出力浮動小数点値の前記仮数フィールドの前記第２部分のデータを選択的に右へ３ビットだけシフトさせるように構成されており、前記第２シフト・ロジックは、さらに、前記第１浮動小数点命令が非拡張値域浮動小数点命令であることに基づいて前記第１出力浮動小数点値の前記仮数フィールドを改変せずに通過させるように構成されており、
前記回路装置は連結ロジックを含み、前記連結ロジックは、前記浮動小数点実行ユニットの前記指数経路に結合されて、前記第２浮動小数点命令が拡張値域浮動小数点命令であることに基づいて前記第２浮動小数点命令の実行中に前記第２入力浮動小数点値の前記指数フィールドと前記仮数フィールドの前記第１部分とからのデータを連結するように構成されている、前記回路装置。
【請求項２】
回路装置であって、
前記回路装置は浮動小数点オペランドを受け取るように構成されたオペランド入力を含み、前記オペランド入力により受け取られる各浮動小数点オペランドは指数フィールドおよび仮数フィールドで構成され、前記仮数フィールドは第１部分および第２部分を含み、
前記回路装置は、前記オペランド入力に結合されて浮動小数点命令の実行中に前記オペランド入力により受け取られた浮動小数点オペランドを処理するように構成された浮動小数点実行ユニットを含み、前記浮動小数点実行ユニットは、そのための第１浮動小数点オペランドが前記オペランド入力により受け取られているところの第１浮動小数点命令を、前記第１浮動小数点オペランドの前記指数フィールドに格納されているデータを指数として使用しかつ前記第１浮動小数点オペランドの前記仮数フィールドの前記第１部分および第２部分に格納されているデータを仮数として使用するべく連結することによって、実行するように構成されており、前記浮動小数点実行ユニットは、そのための第２浮動小数点オペランドが前記オペランド入力により受け取られているところの第２浮動小数点命令を、前記第２浮動小数点オペランドの前記指数フィールドと前記仮数フィールドの前記第１部分とに格納されているデータを指数として使用するべく連結しかつ前記第２浮動小数点オペランドの前記仮数フィールドの前記第２部分に格納されているデータを仮数として使用することによって、実行するように構成されている、前記回路装置。
【請求項３】
前記オペランド入力により受け取られる各浮動小数点オペランドは３２ビットを含んでいて単精度浮動小数点値を格納するように構成されており、各浮動小数点オペランドは１ビットを有する符号フィールドを含み、各浮動小数点オペランドの前記指数フィールドは８ビットを有し、各浮動小数点オペランドの前記仮数フィールドの前記第１部分は３ビットを有し、各浮動小数点オペランドの前記仮数フィールドの前記第２部分は２０ビットを有する、請求項２に記載の回路装置。
【請求項４】
複数の浮動小数点レジスタを含むレジスタ・ファイルをさらに含んでおり、前記レジスタ・ファイルは、前記浮動小数点実行ユニットの前記オペランド入力に結合された出力と、前記浮動小数点実行ユニットの結果出力を受け取るように結合された入力とを含む、請求項２に記載の回路装置。
【請求項５】
前記浮動小数点実行ユニットは指数経路および仮数経路を含み、前記浮動小数点実行ユニットは前記結果出力において結果浮動小数点値を出力するように構成され、前記結果浮動小数点値は、前記結果浮動小数点値が指数フィールドと、第１部分および第２部分を含む仮数フィールドとを含むように各浮動小数点オペランドと同様にフォーマットされ、
前記回路装置は前記浮動小数点実行ユニットの前記仮数経路の開始部に近接して配置されて前記オペランド入力に結合された第１シフト・ロジックをさらに含み、前記第１シフト・ロジックは、前記第２浮動小数点命令の実行中に前記第２浮動小数点オペランドの前記仮数フィールドの前記第２部分に格納されているデータを選択的にシフトさせるように構成され、
前記回路装置は第２シフト・ロジックをさらに含み、前記第２シフト・ロジックは、前記浮動小数点実行ユニットの前記仮数経路の末端部に近接して配置されて、前記第２浮動小数点命令の実行中に前記結果浮動小数点値の前記仮数フィールドの前記第２部分に格納されているデータを選択的にシフトさせるように構成されており、前記第１および第２のシフト・ロジックは同数のビットを反対方向にシフトさせる、請求項４に記載の回路装置。
【請求項６】
前記浮動小数点実行ユニットは、前記指数経路に結合されて前記第２浮動小数点命令の実行中に前記第２浮動小数点オペランドの前記指数フィールドと前記仮数フィールドの前記第１部分とのデータを連結するように構成されたロジックを含む、請求項５に記載の回路装置。
【請求項７】
前記第１浮動小数点命令は非値域拡張フォーマットの命令であり、前記第２浮動小数点命令は値域拡張フォーマットの命令である、請求項２に記載の回路装置。
【請求項８】
前記第２浮動小数点命令は、前記第２浮動小数点命令を値域拡張浮動小数点命令として特定するためにセットされるモード・ビットを含む、請求項７に記載の回路装置。
【請求項９】
前記浮動小数点実行ユニットは、第１モード時には前記第１浮動小数点命令を実行し第２モード時には前記第２浮動小数点命令を実行するように構成されている、請求項２に記載の回路装置。
【請求項１０】
前記浮動小数点実行ユニットは、オーバーフロー状態の数が閾値を満たした時に自動的に前記第１モードから前記第２モードに切り替わるように構成されている、請求項９に記載の回路装置。
【請求項１１】
前記浮動小数点実行ユニットは、特殊目的レジスタに格納されているデータに基づいて前記第１モードと前記第２モードとの間で切り替わるように構成されている、請求項９に記載の回路装置。
【請求項１２】
請求項２の回路装置を含む集積回路装置。
【請求項１３】
コンピュータ可読媒体と、前記コンピュータ可読媒体に存在して請求項２の回路装置を定義するロジック定義プログラム・コードとを含むプログラム製品。
【請求項１４】
浮動小数点実行ユニットにおいて浮動小数点命令を実行する方法であって、
第１および第２浮動小数点命令を受け取ることであって、前記第１浮動小数点命令が第１浮動小数点オペランドを特定し、前記第２浮動小数点命令が第２浮動小数点オペランドを特定し、前記第１および第２浮動小数点オペランドが指数フィールドおよび仮数フィールドで構成され、前記仮数フィールドが第１部分および第２部分を含み、前記第１浮動小数点オペランドの前記指数フィールド、前記仮数フィールドの第１部分および前記仮数フィールドの第２部分がそれぞれ前記第２浮動小数点オペランドの前記指数フィールド、前記仮数フィールドの第１部分および前記仮数フィールドの第２部分と同じビットにマッピングされる、前記第１および第２浮動小数点命令を受け取ることと、
前記第１浮動小数点オペランドの前記指数フィールドに格納されているデータを指数として使用しかつ前記第１浮動小数点オペランドの前記仮数フィールドの前記第１および第２部分に格納されているデータを仮数として使用するべく連結することによって前記第１浮動小数点命令を前記浮動小数点実行ユニットにおいて実行することと、
前記第２浮動小数点オペランドの前記指数フィールドと前記仮数フィールドの前記第１部分とに格納されているデータを指数として使用するべく連結しかつ前記第２浮動小数点オペランドの前記仮数フィールドの前記第２部分に格納されているデータを仮数として使用することにより前記第２浮動小数点命令を前記浮動小数点実行ユニットにおいて実行することと、
を含む方法。
【請求項１５】
前記第１および第２浮動小数点オペランドの各々は３２ビットを含んでいて単精度浮動小数点値を格納するように構成されており、前記第１および第２浮動小数点オペランドの各々は１ビットを有する符号フィールドを含み、前記第１および第２浮動小数点オペランドの各々の前記指数フィールドは８ビットを有し、前記第１および第２浮動小数点オペランドの各々の前記仮数フィールドの前記第１部分は３ビットを有し、前記第１および第２浮動小数点オペランドの各々の前記仮数フィールドの前記第２部分は２０ビットを有する、請求項１４に記載の方法。
【請求項１６】
前記第１および第２浮動小数点値はそれぞれレジスタ・ファイル内の第１および第２ソース浮動小数点レジスタに格納され、前記方法は、それぞれ前記第１および第２浮動小数点命令の実行中に前記浮動小数点実行ユニットにより生成された第１および第２結果浮動小数点値を前記レジスタ・ファイル内の第１および第２宛先浮動小数点レジスタに格納することをさらに含む、請求項１４に記載の方法。
【請求項１７】
前記浮動小数点実行ユニットは指数経路および仮数経路を含み、前記方法はさらに、
前記第２浮動小数点オペランドの前記仮数フィールドの前記第２部分に格納されているデータを前記第２浮動小数点命令の実行中に前記仮数経路の中で第１方向にシフトさせることと、
前記第２結果浮動小数点値の前記仮数フィールドの前記第２部分に格納されているデータを前記第２浮動小数点命令の実行中に前記仮数経路の中で前記第１方向とは反対の第２方向にシフトさせることと、
を含む、請求項１６に記載の方法。
【請求項１８】
前記第２浮動小数点オペランドの前記指数フィールドと前記仮数フィールドの前記第１部分とからのデータを前記第２浮動小数点命令の実行中に前記指数経路において連結することをさらに含む、請求項１７に記載の方法。
【請求項１９】
前記第１浮動小数点命令は非値域拡張フォーマットの命令であり、前記第２浮動小数点命令は値域拡張フォーマットの命令である、請求項１４に記載の方法。
【請求項２０】
前記第２浮動小数点命令は、前記第２浮動小数点命令を値域拡張浮動小数点命令として特定するためにセットされるモード・ビットを含む、請求項１９に記載の方法。
【請求項２１】
前記浮動小数点実行ユニットは、第１モード時には前記第１浮動小数点命令を実行し第２モード時には前記第２浮動小数点命令を実行するように構成されている、請求項１２に記載の方法。
【請求項２２】
オーバーフロー状態の数が閾値を満たしたことに応答して自動的に前記浮動小数点実行ユニットを前記第１モードから前記第２モードに切り替えることをさらに含む、請求項２１に記載の方法。
【請求項２３】
特殊目的レジスタに格納されているデータに基づいて前記浮動小数点実行ユニットを前記第１モードと前記第２モードとの間で切り替えることをさらに含む、請求項２１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にはデータ処理に関し、特にプロセッサ・アーキテクチャと、それに組み込まれる浮動小数点実行ユニットとに関する。
【背景技術】
【０００２】
浮動小数点実行ユニットは、複雑な数学的計算の処理を加速するためにコンピュータ・プロセッサにおいてよく使われる。浮動小数点計算は、１つ以上の浮動小数点値を用いて数学的計算を実行することを含む。浮動小数点値は、通例、指数及び仮数の組み合わせとして表される。フラクション（ｆｒａｃｔｉｏｎ）またはマンテッサ（ｍａｎｔｉｓｓａ）とも称され得る仮数は、所定の精度を有する浮動小数点値における数字を表し、指数はその浮動小数点値のための二進小数点の相対位置を表す。
【０００３】
在来の浮動小数点実行ユニットは、それらが設計上サポートするべき浮動小数点標準規格により定められる指数値域の中に納まる算術演算の実行に限定される。２つの有力で広く使用されている浮動小数点標準規格はＩＥＥＥ−７５４単精度及び倍精度である。単精度標準規格は３２ビットを使用し、倍精度は６４ビットを使用する。単精度標準規格は、符号を表すために１ビットを、バイアスされた指数を表すために８ビットを定義し、残りの２３ビットは仮数を表す。この定義は、単精度数が約−２１２８と２１２８との間を変動することを可能にする。倍精度標準規格は、バイアスされた指数のために１１ビットを使用するので、浮動小数点値の遥かに広い値域を考慮に入れている（約−２１０２４と２１０２４）。更に、倍精度標準規格は仮数部のために５２ビットを包含しており、従って大幅により大きな精度を提供する。
【０００４】
浮動小数点実行ユニットは、スカラー実行ユニットとして、またはベクトル実行ユニットとして、実現され得る。スカラー実行ユニットは、通例、スカラー浮動小数点値に作用し、ベクトル実行ユニットは、複数のスカラー浮動小数点値を含むベクトルに作用する。３Ｄグラフィクス処理において処理されるデータの多くは容易にベクトル化可能であるので（例えば、空間内のオブジェクトの座標はしばしば３個または４個の浮動小数点値を用いて表される）、ベクトル浮動小数点実行ユニットが多くの３Ｄグラフィクス・ハードウェア・デザインにおいて一般的になっている。３Ｄグラフィクスにおいて演算の大部分は普通は単精度値域に納まるので、多くの在来のデザインにおいて、ベクトル浮動小数点実行ユニットは浮動小数点ベクトル内のワードを処理するために４つの単精度浮動小数点実行ユニットを使用する。しかし、或る場合には、単精度浮動小数点値は或る計算のためには不十分で、倍精度演算が必要とされ得る。
【０００５】
倍精度浮動小数点実行ユニットはより広い値域の算術演算を処理するためのより大きな柔軟性を持っているけれども、倍精度浮動小数点値を処理するのに必要な付加的回路は電力消費、性能及びチップ土地に関して高価であり得る。一般的に、４ワード倍精度浮動小数点ベクトル実行ユニットは、同等の単精度ユニットの回路面積の約２．５−３倍を占める。さらに、倍精度ユニットは、これらに対応する単精度のものより低い性能、およびより高い電力消費を有する。演算が単精度定義の限界の中に納まるには大きすぎる値域を有する場合には、しばしば計算は倍精度スカラー（ベクトルではない）ユニットで実行されなければならず、それは性能を劇的に低下させる。さらに、多くの在来のグラフィック処理装置（ＧＰＵ）において、しばしば倍精度ユニットはチップ上に存在しないので、計算はＣＰＵ上で行われなければならず、それは性能をさらに低下させる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、倍精度浮動小数点数が必要とされる多くの場合に、特に多くのコンピュータ・グラフィクスの場合に、それらは、それらが提供する数値精度よりも大きな指数値域のために必要とされるに過ぎない。例えば、コンピュータ・ゲームの領域では、ゲーム開発者が、サイズが大きく変化する３Ｄグラフィクス・シーンの中にオブジェクトを置いてスケーリングすることを望む場合があり得る。例えば、観察者が宇宙船の中にいて、惑星サイズのオブジェクトに向かって高速で旅をしていると想像しよう。カメラがオブジェクトにだんだん近づいてゆくに連れて、より多くの詳細が観察され得るようになる。ついには、カメラはオブジェクトの表面に直接接触して、回路あるいはバクテリアのような微小な細部を拡大して焦点を合わせ始めることができる。開発者の希望は、芸術の演出およびパフォーマンス上の理由から、このシーンを連続的であらしめ、かつ測定の単位を変化させないことである。これと似ている多くの場合に、単精度浮動小数点値は、必要な値域を提供しない。
【０００７】
従って、より精密な浮動小数点実行ユニットが使用される場合に別に必要とされるであろう付加的回路無しで、浮動小数点値のより大きな値域を浮動小数点実行ユニットが処理する能力を提供する仕方に対するニーズが当該技術分野に存在する。
【課題を解決するための手段】
【０００８】
本発明は、浮動小数点計算のために拡張された値域を動的に提供するために浮動小数点値の仮数ビットの部分集合を付加的な指数ビットして選択的に再利用することのできる浮動小数点実行ユニットを提供することによって、従来技術に関連するこれらの、および他の問題に対処する。特に、浮動小数点オペランドの仮数フィールドは、第１部分および第２部分を含むと考えられることができ、その第１部分は、浮動小数点値のための仮数を表すように第２部分と連結されることができ、あるいは、拡張された値域を提供するために、浮動小数点値のための指数を表すように浮動小数点オペランドの指数フィールドと連結されることができる。
【０００９】
本発明の一側面に従って、回路装置は浮動小数点オペランドを受け取るように構成されたオペランド入力を含み、このオペランド入力により受け取られる各浮動小数点オペランドは指数フィールドと仮数フィールドとで構成され、仮数フィールドは第１部分と第２部分とを包含する。該回路装置は、オペランド入力に結合されて浮動小数点命令の実行中にオペランド入力により受け取られた浮動小数点オペランドを処理するように構成された浮動小数点実行ユニットをも含む。該浮動小数点実行ユニットは、そのために第１浮動小数点オペランドが該オペランド入力により受け取られているところの第１浮動小数点命令を、第１浮動小数点ぺランドの指数フィールドに格納されているデータを指数として使用することにより、また、第１浮動小数点オペランドの仮数フィールドの第１部分及び第２部分に格納されているデータを仮数として使用するべく連結することにより、実行するように構成される。該浮動小数点実行ユニットは、また、そのために第２浮動小数点オペランドがオペランド入力により受け取られているところの第２浮動小数点命令を、第２浮動小数点オペランドの指数フィールドと仮数フィールドの第１部分とに格納されているデータを指数として使用するべく連結することにより、また、第２浮動小数点オペランドの仮数フィールドの第２部分に格納されているデータを仮数として使用することにより、実行するように構成される。
【００１０】
本発明の他の１つの側面に従って、浮動小数点実行ユニットにおいて浮動小数点命令を実行する方法は、第１及び第２の浮動小数点命令を受け取ることを含み、第１浮動小数点命令は第１浮動小数点オペランドを特定し、第２浮動小数点命令は第２浮動小数点オペランドを特定し、第１及び第２の浮動小数点オペランドの各々は指数フィールド及び仮数フィールドで構成され、仮数フィールドは第１部分及び第２部分を含む。第１浮動小数点オペランド内の指数フィールド、仮数フィールドの第１部分および仮数フィールドの第２部分は、第２浮動小数点オペランド内の指数フィールド、仮数フィールドの第１部分および仮数フィールドの第２部分と同じビットにそれぞれマッピングされる。該方法は、第１浮動小数点オペランドの指数フィールドに格納されているデータを指数として使用することにより、また、第１浮動小数点オペランドの仮数フィールドの第１および第２部分に格納されているデータを仮数として使用するべく連結することによって第１浮動小数点命令を浮動小数点実行ユニットにおいて実行すること、また、第２浮動小数点オペランドの指数フィールドおよび仮数フィールドの第１部分に格納されているデータを指数として使用するべく連結することにより、また、第２浮動小数点オペランドの仮数フィールドの第２部分に格納されているデータを仮数として使用することにより第２浮動小数点命令を浮動小数点実行ユニットにおいて実行することを含む。
【００１１】
発明を特徴付けるこれらのおよび他の利点および特徴は、本書に添付されてその更なる部分を形成する請求項において明らかにされている。しかし、本発明と、その使用を通して達成される利点および目的のより良好な理解のために、本発明の代表的実施態様が記載されている図面と、随伴する記述事項とを参照するべきである。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施態様に従うデータ処理に役立つ代表的コンピュータを含む代表的自動計算機のブロック図である。
【図２】図１のコンピュータにおいて実現される代表的ＮＯＣのブロック図である。
【図３】図２のＮＯＣのノードの代表的インプリメンテーションをより詳細に説明するブロック図である。
【図４】図２のＮＯＣのＩＰブロックの代表的インプリメンテーションを説明するブロック図である。
【図５】本発明に従う、また図２のＮＯＣのＩＰブロックの中で実現され得る、動的値域調整ベクトル浮動小数点実行ユニットを組み込んだ処理ユニットのブロック図である。
【図６】図５の動的値域調整ベクトル浮動小数点実行ユニットに用いるのに適する代表的な拡張値域浮動小数点数フォーマットのブロック図である。
【図７】図５の動的値域調整ベクトル浮動小数点実行ユニットにおけるシフトおよび連結ロジックの代表的インプリメンテーションのブロック図である。
【図８】図５の動的値域調整ベクトル浮動小数点実行ユニットの処理レーンのうちの１つのブロック図である。
【図９】図７において引用されている拡張値域モード制御ロジックにおいて実行され得る自動拡張値域モード選択ルーチンのプログラム・フローを説明するフローチャートである。
【発明を実施するための形態】
【００１３】
本発明に従う実施態様は、浮動小数点数のフラクションあるいは仮数ビットの部分集合を選択的に付加的な指数ビットとして扱い、また、拡張された浮動小数点値域を提供するために異なる指数バイアスを想定する動的値域調整浮動小数点実行ユニットを利用する。さらに、正しい仮数ビットを浮動小数点実行ユニットの仮数経路の中に移動させ、また適切な指数バイアスを使用するために、ある実施態様では特別の演算命令、あるいは特別のモードが、定義され得る。さらに、ある実施態様では、例えば過剰な数のオーバーフローに応答して、拡張値域モードへの自動的切り替えが実行され得る。
【００１４】
ハードウェアおよびソフトウェア環境
次に図面に目を向けると、同様の数は数個の図の全体にわたって同様の部分を示し、図１は、本発明の実施態様に従うデータ処理に役立つ代表的コンピュータ１０を含む代表的自動計算機を示す。図１のコンピュータ１０は少なくとも１つのコンピュータ・プロセッサ１２または‘ＣＰＵ'とランダム・アクセス・メモリ１４（‘ＲＡＭ'）とを含み、これは高速メモリ・バス１６およびバス・アダプタ１８を通してプロセッサ１２とコンピュータ１０の他のコンポーネントとに接続されている。
【００１５】
ＲＡＭ１４には、アプリケーション・プログラム２０、すなわち、例えばワード・プロセッシング、スプレッドシート、データベース操作、ビデオ・ゲーミング、株式市場シミュレーション、原子量子過程シミュレーションなどの特定のデータ処理タスクを実行するためのユーザ・レベル・コンピュータ・プログラム命令のモジュール、あるいは他のユーザ・レベル・アプリケーションが格納される。ＲＡＭ１４にはオペレーティング・システム２２も格納される。本発明の実施態様との関係で有益なオペレーティング・システムは、ＵＮＩＸ（商標）、Ｌｉｎｕｘ（商標）、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ  ＸＰ（商標）、ＡＩＸ（商標）、ＩＢＭ社のｉ５／ＯＳ（商標）、および当業者が想到する他のものを含む。図１の例におけるオペレーティング・システム２２およびアプリケーション２０はＲＡＭ１４の中に示されているが、このようなソフトウェアの多くのコンポーネントは通例不揮発性メモリにも（例えばディスク・ドライブ２４に）格納される。
【００１６】
以下でより明白となるであろうように、本発明に従う実施態様はネットワーク・オン・チップ（Ｎｅｔｗｏｒｋ  Ｏｎ  Ｃｈｉｐ（ＮＯＣ））集積回路装置、あるいはチップ、の中で実現され得るので、コンピュータ１０は２つの代表的ＮＯＣ、すなわちビデオ・アダプタ２６およびコプロセッサ２８を含んで示されている。ＮＯＣビデオ・アダプタ２６は、代わりにグラフィクス・アダプタとも称され得るものであるが、ディスプレイ・スクリーンまたはコンピュータ・モニタのような表示装置３０へのグラフィック出力のために特別に設計されたＩ／Ｏアダプタの例である。ＮＯＣビデオ・アダプタ２６は高速ビデオ・バス３２、バス・アダプタ１８、およびフロント・サイド・バス３４（これも高速バスである）を通してプロセッサ１２に接続されている。ＮＯＣコプロセッサ２８はバス・アダプタ１８と、フロント・サイド・バス３４および３６（これも高速バスである）とを通してプロセッサ１２に接続されている。図１のＮＯＣコプロセッサは、メインのプロセッサ１２の命令を受けて、例えば、特定のデータ処理タスクを促進するように最適化され得る。
【００１７】
図１の代表的なＮＯＣビデオ・アダプタ２６およびＮＯＣコプロセッサ２８は、統合プロセッサ（Ｉｎｔｅｇｒａｔｅｄ  Ｐｒｏｃｅｓｓｏｒ（‘ＩＰ’））ブロック、ルータ、メモリ通信コントローラ、およびネットワーク・インターフェース・コントローラを含むＮＯＣを各々含み、その詳細は以下で図２−３と関連してより詳しく論じられる。ＮＯＣビデオ・アダプタとＮＯＣコプロセッサとは、並列処理を使用するとともに共有されるメモリへの高速ランダム・アクセスを必要とするプログラムのために各々最適化される。しかし、ＮＯＣ装置および装置アーキテクチャ以外の装置および装置アーキテクチャにおいて本発明が実施され得ることを、本開示の恩恵を受けた当業者は理解するであろう。従って本発明はＮＯＣ装置内での実施に限定されない。
【００１８】
図１のコンピュータ１０は、拡張バス４０およびバス・アダプタ１８を通してプロセッサ１２とコンピュータ１０の他のコンポーネントとに結合されたディスク・ドライブ・アダプタ３８を含む。ディスク・ドライブ・アダプタ３８は、ディスク・ドライブ２４の形の不揮発性データ記憶装置をコンピュータ１０に接続し、例えば、インテグレーテッド・ドライブ・エレクトロニクス（Ｉｎｔｅｇｒａｔｅｄ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ（‘ＩＤＥ'））アダプタ、小型コンピュータ・システム・インターフェース（‘ＳＣＳＩ'）アダプタ、および当業者が想到するであろう他のものを用いて実現され得る。当業者が想到するであろうように、不揮発性コンピュータ・メモリは、例えば、光ディスク・ドライブ、電気的に消去可能でプログラマブルな読み出し専用メモリ（いわゆる‘ＥＥＰＲＯＭ’または‘フラッシュ'メモリ）、ＲＡＭドライブなどとしても実現され得る。
【００１９】
コンピュータ１０は１つ以上の入出力（‘Ｉ／Ｏ'）アダプタ４２も含み、これは、コンピュータ・ディスプレイ・スクリーンのような表示装置への出力と、キーボードおよびマウスのようなユーザ入力装置４４からのユーザ入力とを制御するために例えばソフトウェア・ドライバおよびコンピュータ・ハードウェアを通してユーザ指向入出力を実行する。さらに、コンピュータ１０は、他のコンピュータ４８とのデータ通信と、データ通信ネットワーク５０とのデータ通信とのための通信アダプタ４６を含む。そのようなデータ通信は、ＲＳ−２３２接続を通して、ユニバーサル・シリアル・バス（‘ＵＳＢ’）のような外部バスを通して、ＩＰデータ通信ネットワークのようなデータ通信ネットワークを通して、また当業者が想到するであろう他の方法で、シリアルに実行され得る。通信アダプタはハードウェア・レベルのデータ通信を実行し、それを通して１つのコンピュータがデータ通信メッセージを直接にまたはデータ通信ネットワークを通して他のコンピュータに送る。コンピュータ１０に用いるのに適する通信アダプタの例は、有線ダイヤルアップ通信用のモデム、有線データ通信ネットワーク通信用のイーサネット（ＩＥＥＥ８０２．３）アダプタ、および無線データ通信ネットワーク通信用の８０２．１１アダプタを含む。
【００２０】
さらに説明するために、図２は本発明の実施態様に従う例としてのＮＯＣ１０２の機能ブロック図を示す。図２のＮＯＣは、‘チップ'１００上で、すなわち、集積回路上で、実現される。ＮＯＣ１０２は、相互に接続されたノードをなすようにグループ化された統合プロセッサ（‘ＩＰ’）ブロック１０４と、ルータ１１０と、メモリ通信コントローラ１０６と、ネットワーク・インターフェース・コントローラ１０８とを含む。各ＩＰブロック１０４は、メモリ通信コントローラ１０６およびネットワーク・インターフェース・コントローラ１０８を通してルータ１１０に適合させられている。各メモリ通信コントローラはＩＰブロックとメモリとの間の通信を制御し、各ネットワーク・インターフェース・コントローラ１０８はルータ１１０を通してのＩＰブロック間通信を制御する。
【００２１】
ＮＯＣ１０２において、各ＩＰブロックは、ＮＯＣ内でのデータ処理のためのビルディング・ブロックとして使用される同期または非同期の論理設計の再使用可能な単位を表す。‘ＩＰブロック'という用語は、時には、事実上ＩＰブロックを半導体回路の他のユーザまたは設計者にライセンスされるべき、当事者により所有されるデザインすなわち当事者の知的財産、と称する‘知的財産（Ｉｎｔｅｌｌｅｃｔｕａｌ  Ｐｒｏｐｅｒｔｙ）ブロック’として展開される。しかし、本発明の範囲内では、ＩＰブロックが特定の所有権に従う必要は無いので、この用語は常に本明細書では‘統合プロセッサ（Ｉｎｔｅｇｒａｔｅｄ  Ｐｒｏｃｅｓｓｏｒ）ブロック'として展開される。本書で明記されるＩＰブロックは、知的財産権の対象であるかもしれず、またそうではないかもしれないロジック、セル、またはチップ・レイアウト・デザインの再使用可能な単位である。ＩＰブロックは、ＡＳＩＣチップ・デザインまたはＦＰＧＡロジック・デザインとして形成され得るロジック・コアである。
【００２２】
類推によりＩＰブロックを記述する１つの方法は、ＩＰブロックとＮＯＣ設計との関係はライブラリとコンピュータ・プログラミングとの関係または個別集積回路コンポーネントとプリント回路基板設計との関係に等しいとすることである。本発明の実施態様に従うＮＯＣでは、ＩＰブロックは一般的ゲート・ネットリストとして、完全な特殊目的または汎用マイクロプロセッサとして、あるいは当業者が想到し得る他の方法で、実現され得る。ネットリストは、高レベルのプログラム・アプリケーションのためのアセンブリ・コード・リスティングに類似する、ＩＰブロックの論理機能のブール代数表示（ゲート、スタンダード・セル）である。ＮＯＣは、例えば、Ｖｅｒｉｌｏｇ（ＩＢＭ社の商標）またはＶＨＤＬのようなハードウェア記述言語で記述された合成可能な形でも実現され得る。ネットリストおよび合成可能インプリメンテーションに加えて、ＮＯＣは、より低いレベルの物理的記述で引き渡されることもできる。ＳＥＲＤＥＳ、ＰＬＬ、ＤＡＣ、ＡＤＣなどのようなアナログＩＰブロック要素は、ＧＤＳＩＩのようなトランジスタ−レイアウト・フォーマットで配布され得る。ＩＰブロックのデジタル要素は、時には、レイアウト・フォーマットでも提供される。ＩＰブロックが、本発明に従って実現される他の論理回路と同じく、そのようなロジックを実行する回路装置の機能またはレイアウトあるいはその両方をいろいろなレベルのディテールで定義する、例えばロジック定義プログラム・コードなどの、コンピュータ・データ・ファイルの形で配布され得るということも理解されるであろう。従って、本発明は、完全に機能する集積回路装置とそのような装置を利用するデータ処理システムとにおいて実現される回路装置の文脈で記載され、また以下で記載されるであろうけれども、本開示の恩恵を受けた当業者は、本発明に従う回路装置がいろいろな形のプログラム製品として配布され得ること、および、該配布を実際に行うために特定のタイプのコンピュータ可読媒体または信号担持媒体が使用されることとは無関係に本発明が同様に適用されることを理解するであろう。コンピュータ可読媒体または信号担持媒体の例は、揮発性および不揮発性の記憶装置、フレキシブル・ディスク、ハード・ディスク・ドライブ、ＣＤ−ＲＯＭ、およびＤＶＤ（他にもある）のような物理的な記録可能型媒体と、デジタルおよびアナログの通信リンクのような伝送型媒体とを含むが、これらに限定されない。
【００２３】
図２の例の各ＩＰブロック１０４はメモリ通信コントローラ１０６を通してルータ１１０に適合させられている。各メモリ通信コントローラは、ＩＰブロックとメモリとの間のデータ通信を提供するようにされている同期および非同期の論理回路の集合体である。ＩＰブロックとメモリとの間のそのような通信の例は、メモリ・ロード命令およびメモリ・ストア命令である。メモリ通信コントローラ１０６については、以下で図３に関してより詳しく記載される。各ＩＰブロック１０４はネットワーク・インターフェース・コントローラ１０８を通してもルータ１１０に適合させられており、これはルータ１１０を通してのＩＰブロック１０４間の通信を制御する。ＩＰブロック間の通信メッセージの例は、パラレル・アプリケーションおよびパイプライン・アプリケーションにおいてＩＰブロック間でデータと該データを処理するための命令とを運ぶメッセージを含む。ネットワーク・インターフェース・コントローラ１０８についても、以下で図３に関してより詳しく記載される。
【００２４】
ルータ１１０と、それらの間の対応するリンク１１８とは、ＮＯＣのネットワーク動作を実行する。リンク１１８は、全てのルータを接続する物理的な並列ワイヤ・バスで実現されるパケット構造であり得る。すなわち、各リンクは、全てのヘッダ情報およびペイロード・データを含む１つのデータ・スイッチング・パケット全体を同時に収容するのに充分に広いワイヤ・バスで実現され得る。例えば、１つのパケット構造が８バイトのヘッダと５６バイトのペイロード・データとを含んで、６４バイトを含むならば、各リンクに対するワイヤ・バスは６４バイト幅、５１２本のワイヤである。さらに、各リンクは双方向性であり得るので、リンク・パケット構造が６４バイトを含む場合には、ワイヤ・バスは、実際には、ネットワーク内で各ルータとその隣の各々のものとの間に１０２４本のワイヤを含む。そのようなインプリメンテーションでは、メッセージは１パケットより多くを包含し得るけれども、各パケットはワイヤ・バスの幅に正確に納まるであろう。あるいは、例えばリンクが１６バイト幅として、すなわち１２８ワイヤとして、実現される場合に６４バイトのパケットが４ビートに分解され得るなどして、パケットが複数のビートに分解されるように、リンクは１つのパケットの一部分を収容するのに十分であるに過ぎない幅を有するワイヤ・バスで実現され得る。実際的な物理的限界と所望の性能特性とに基づいて、種々のインプリメンテーションが種々のバス幅を用い得るということが理解されるであろう。ルータとワイヤ・バスの各セクションとの間の接続部がポートと称されるのであれば、各ルータは５つのポート、すなわち、ネットワーク上のデータ伝送の４つの方向の各々に１つずつのポートと、該ルータをメモリ通信コントローラおよびネットワーク・インターフェース・コントローラを通して特定のＩＰブロックに適合させるための第５のポートと、を含む。
【００２５】
各メモリ通信コントローラ１０６は、ＩＰブロックとメモリとの間の通信を制御する。メモリは、オフチップ・メインＲＡＭであるオフチップ・メモリ１１２と、メモリ通信コントローラ１０６を通してＩＰブロックに直接接続されたメモリ１１４と、ＩＰブロックとして作動可能にされるオンチップ・メモリ１１６と、オンチップ・キャッシュとを含むことができる。ＮＯＣ１０２において、例えばオンチップ・メモリ１１４，１１６のいずれも、オンチップ・キャッシュ・メモリとして実現され得る。これらの全ての形のメモリは、同じアドレス空間、物理アドレスまたは仮想アドレス、に配置されることができ、これはＩＰブロックに直接取り付けられているメモリにも当てはまる。従って、そのようなメモリはネットワーク上のどこのどのＩＰブロックからも直接アドレス指定され得るので、メモリ・アドレス指定されたメッセージ（ｍｅｍｏｒｙ  ａｄｄｒｅｓｓｅｄ  ｍｅｓｓａｇｅｓ）はＩＰブロックに関しては完全に双方向性であり得る。ＩＰブロック上のメモリ１１６は、そのＩＰブロックから、あるいはＮＯＣ内の他の任意のＩＰブロックから、アドレス指定され得る。メモリ通信コントローラに直接取り付けられているメモリ１１４は、そのメモリ通信コントローラによってネットワークに適合させられているＩＰブロックによりアドレス指定されることができ、また、ＮＯＣ内のどこの他のどのＩＰブロックからもアドレス指定されることができる。
【００２６】
ＮＯＣ１０２は、本発明の実施態様に従うＮＯＣのための２つの代替メモリ・アーキテクチャを示す２つのメモリ管理ユニット（‘ＭＭＵ'）１２０，１２２を含む。ＭＭＵ１２０はＩＰブロック内で実現され、該ＩＰブロック内のプロセッサが仮想メモリで動作することを可能にし、同時に、ＮＯＣの残りのアーキテクチャの全体が物理メモリ・アドレス空間で動作することを可能にする。ＭＭＵ１２２はオフチップで実現され、データ通信ポート１２４を通してＮＯＣに接続される。ポート１２４は、ＮＯＣと該ＭＭＵとの間で信号を伝えるのに必要なピンおよび他のインターコネクションと、メッセージ・パケットをＮＯＣパケット・フォーマットから、外部のＭＭＵ１２２が必要とするバス・フォーマットへ変換するために充分なインテリジェンスとを含む。該ＭＭＵが外部に配置されているということは、ＮＯＣの全てのＩＰブロック内の全てのプロセッサが仮想メモリ・アドレス空間で動作することができ、オフチップ・メモリの物理アドレスへの全ての変換がオフチップＭＭＵ１２２によって処理されるということを意味する。
【００２７】
ＭＭＵ１２０，１２２の使用により示される２つのメモリ・アーキテクチャのほかに、データ通信ポート１２６は、本発明の実施態様において利用され得るＮＯＣにおいて役立つ第３のメモリ・アーキテクチャを示す。ポート１２６は、ＮＯＣ１０２のＩＰブロック１０４とオフチップ・メモリ１１２との間の直接接続を提供する。処理経路中にＭＭＵが無くて、このアーキテクチャは、ＮＯＣの全てのＩＰブロックによる物理アドレス空間の利用を提供する。該アドレス空間を双方向的に共有するとき、ＮＯＣの全ＩＰブロックは、ポート１２６に直接接続されたＩＰブロックを通して向けられている（ロードおよびストアを含む）メモリ・アドレス指定されたメッセージによって該アドレス空間内のメモリにアクセスすることができる。ポート１２６は、ＮＯＣとオフチップ・メモリ１１２との間で信号を伝えるのに必要なピンおよび他のインターコネクションと、メッセージ・パケットをＮＯＣパケット・フォーマットから、オフチップ・メモリ１１２が必要とするバス・フォーマットへ変換するために充分なインテリジェンスとを含む。
【００２８】
図２の例では、ＩＰブロックのうちの１つはホスト・インターフェース・プロセッサ１２８と称される。ホスト・インターフェース・プロセッサ１２８は、ＮＯＣと、ＮＯＣがインストールされ得るホスト・コンピュータ１０との間のインターフェースを提供し、また、例えば、ホストコンピュータからデータ処理リクエストを受け取ってＮＯＣのＩＰブロック間でディスパッチすることを含むデータ処理サービスをＮＯＣ上の他のＩＰブロックに提供する。ＮＯＣは、例えば、図１に関して上で記載されたようにより大きなコンピュータ１０においてビデオ・グラフィクス・アダプタ２６またはコプロセッサ２８を実現することができる。図２の例では、ホスト・インターフェース・プロセッサ１２８は、データ通信ポート１３０を通してより大きなホスト・コンピュータに接続されている。ポート１３０は、ＮＯＣとホスト・コンピュータとの間で信号を伝えるのに必要なピンおよび他のインターコネクションと、メッセージ・パケットをＮＯＣフォーマットから、ホスト・コンピュータ１０が必要とするバス・フォーマットへ変換するために充分なインテリジェンスとを含む。図１のコンピュータにおけるＮＯＣコプロセッサの例では、そのようなポートは、ＮＯＣコプロセッサ２８のリンク構造と、ＮＯＣコプロセッサ２８およびバス・アダプタ１８の間のフロント・サイド・バス３６のために必要とされるプロトコルとの間のデータ通信フォーマット変換を提供する。
【００２９】
図３は、次に、全体として１３２のところに示されているＮＯＣ１０２内のＩＰブロック１０４、メモリ通信コントローラ１０６、ネットワーク・インターフェース・コントローラ１０８およびルータ１１０の中に実現されているコンポーネントをより詳しく示す機能ブロック図を示す。ＩＰブロック１０４は、コンピュータ・プロセッサ１３４とＩ／Ｏ機能１３６とを含む。この例では、コンピュータ・メモリはＩＰブロック１０４内のランダム・アクセス・メモリ（‘ＲＡＭ'）１３８のセグメントにより表されている。該メモリは、図２に関して上で記載されたように、各ＩＰブロック上のその内容がＮＯＣ内のどのＩＰブロックからもアドレス指定可能でアクセス可能である物理アドレス空間のセグメントを占めることができる。各ＩＰブロック内のプロセッサ１３４、Ｉ／Ｏ機能１３６、およびメモリ１３８は、実際上、一般的にプログラマブルなマイクロコンピュータとしてＩＰブロックを実現する。しかし、上で説明されたように、本発明の範囲内では、ＩＰブロックは、一般的に、ＮＯＣ内でのデータ処理のためのビルディング・ブロックとして使用される同期または非同期のロジックの再使用可能な単位を表す。従って、一般的にプログラマブルなマイクロコンピュータとしてＩＰブロックを実現することは、説明の目的上有益なありふれた実施態様ではあるけれども、本発明の限定事項ではない。
【００３０】
図３のＮＯＣ１０２において、各メモリ通信コントローラ１０６は複数のメモリ通信実行エンジン１４０を含む。各メモリ通信実行エンジン１４０は、ネットワークとＩＰブロック１０４との間の双方向メモリ通信命令フロー１４１，１４２，１４４を含む、ＩＰブロック１０４からのメモリ通信命令を実行するように作動可能にされる。メモリ通信コントローラにより実行されるメモリ通信命令は、特定のメモリ通信コントローラを通してルータに適合させられているＩＰブロックからだけではなくて、ＮＯＣ１０２内のどこのどのＩＰブロック１０４からも生じ得る。すなわち、ＮＯＣ内のどのＩＰブロックも、メモリ通信命令を生成し、そのメモリ通信命令を実行させるために、ＮＯＣのルータを通して、他のＩＰブロックに関連付けられた他のメモリ通信コントローラにそのメモリ通信命令を送ることができる。そのようなメモリ通信命令は、例えば、翻訳ルックアサイド・バッファ制御命令、キャッシュ制御命令、バリヤ命令、およびメモリ・ロード命令およびメモリ・ストア命令を含むことができる。
【００３１】
各メモリ通信実行エンジン１４０は、完全なメモリ通信命令を単独で、また他のメモリ通信実行エンジンと並行して、実行するように作動可能にされる。メモリ通信実行エンジンは、メモリ通信命令の同時並行スループットのために最適化されたスケーラブルなメモリ・トランザクション・プロセッサを実現する。メモリ通信コントローラ１０６は、複数のメモリ通信命令の同時実行のためにその全てが同時に動作する複数のメモリ通信実行エンジン１４０をサポートする。新しいメモリ通信命令はメモリ通信コントローラ１０６によってメモリ通信実行エンジン１４０に割り当てられ、メモリ通信実行エンジン１４０は同時に複数のレスポンス・イベントを受け入れることができる。この例では、メモリ通信実行エンジン１４０の全てが同一である。従って、メモリ通信コントローラ１０６によって同時に処理され得るメモリ通信命令の数を増減することは、メモリ通信実行エンジン１４０の数を増減することにより実行される。
【００３２】
図３のＮＯＣ１０２において、各ネットワーク・インターフェース・コントローラ１０８は、通信命令をコマンド・フォーマットからルータ１１０を通してのＩＰブロック１０４間での伝送のためのネットワーク・パケット・フォーマットに変換するように作動可能にされる。通信命令は、ＩＰブロック１０４またはメモリ通信コントローラ１０６によりコマンド・フォーマットに定式化され、コマンド・フォーマットでネットワーク・インターフェース・コントローラ１０８に提供され得る。コマンド・フォーマットは、ＩＰブロック１０４およびメモリ通信コントローラ１０６のアーキテクチュラル・レジスタ・ファイルに従うネイティブ・フォーマットであり得る。ネットワーク・パケット・フォーマットは、通例、ネットワークのルータ１１０を通しての伝送のために必要とされるフォーマットである。そのような各々のメッセージは、１つ以上のネットワーク・パケットから構成される。ネットワーク・インターフェース・コントローラにおいてコマンド・フォーマットからパケット・フォーマットに変換されるそのような通信命令の例は、ＩＰブロックとメモリとの間のメモリ・ロード命令およびメモリ・ストア命令を含む。そのような通信命令は、また、並列のアプリケーションおよびパイプライン化されたアプリケーションにおいてＩＰブロック間でデータと該データを処理するための命令とを運ぶメッセージをＩＰブロック間で送る通信命令をも含むことができる。
【００３３】
図３のＮＯＣ１０２において、各ＩＰブロックは、メモリからの、またメモリへの、メモリ−アドレス−ベースの通信メッセージを、該ＩＰブロックのメモリ通信コントローラを通して、その後にまたそのネットワーク・インターフェース・コントローラを通して、ネットワークに送るように作動可能にされる。メモリ−アドレス−ベースの通信メッセージは、ＩＰブロックのメモリ通信コントローラのメモリ通信実行エンジンにより実行される、ロード命令またはストア命令のような、メモリ・アクセス命令である。このようなメモリ−アドレス−ベースの通信メッセージは、通例、ＩＰブロックにおいて生じ、コマンド・フォーマットに定式化され、実行のためにメモリ通信コントローラに渡される。
【００３４】
アクセスされるべきどのメモリも、ＮＯＣ内の任意のメモリ通信コントローラに直接取り付けられるか、あるいは、どのＩＰブロックがどの特定のメモリ−アドレス−ベースの通信メッセージを生じさせたかに関わらず最終的にはＮＯＣの任意のＩＰブロックを通してアクセスされるオンチップあるいはオフチップの物理メモリ・アドレス空間内のどこにでも位置することができるので、多くのメモリ−アドレス−ベースの通信メッセージはメッセージ・トラフィックで実行される。従って、ＮＯＣ１０２では、メッセージ・トラフィックで実行される全てのメモリ−アドレス−ベースの通信メッセージは、コマンド・フォーマットからパケット・フォーマットに変換されてネットワークを通してメッセージで伝送されるべくメモリ通信コントローラから関連するネットワーク・インターフェース・コントローラに送られる。パケット・フォーマットに変換するとき、ネットワーク・インターフェース・コントローラは、メモリ−アドレス−ベースの通信によりアクセスされるべき１つまたは複数のメモリ・アドレスに依存して該パケットのためのネットワーク・アドレスも特定する。メモリ−アドレス−ベースの通信メッセージは、メモリ・アドレスでアドレス指定される。各メモリ・アドレスは、ネットワーク・インターフェース・コントローラによって、ネットワーク・アドレスに、通例、ある範囲の物理メモリ・アドレスについて担当するメモリ通信コントローラのネットワーク位置に、マッピングされる。メモリ通信コントローラ１０６のネットワーク位置は、当然に、そのメモリ通信コントローラの関連するルータ１１０、ネットワーク・インターフェース・コントローラ１０８、およびＩＰブロック１０４のネットワーク位置でもある。各ネットワーク・インターフェース・コントローラ内の命令変換ロジック１５０は、メモリ−アドレス−ベースの通信メッセージをＮＯＣのルータを通して伝送する目的のためにメモリ・アドレスをネットワーク・アドレスに変換することができる。
【００３５】
ネットワークのルータ１１０からメッセージ・トラフィックを受け取ると、各ネットワーク・インターフェース・コントローラ１０８はメモリ命令を求めて各パケットを検査する。メモリ命令を含む各パケットは、受信したネットワーク・インターフェース・コントローラに関連するメモリ通信コントローラ１０６に渡され、それは、該パケットの残りのペイロードをさらなる処理のためにＩＰブロックに送る前に該メモリ命令を実行する。このように、メモリ内容は常に、ＩＰブロックが特定のメモリ内容に依存するメッセージからの命令の実行を開始する前に、該ＩＰブロックによるデータ処理をサポートするために用意される。
【００３６】
図３のＮＯＣ１０２においては、各ＩＰブロック１０４は、そのメモリ通信コントローラ１０６を迂回してＩＰブロック間のネットワーク・アドレス指定された通信メッセージ１４６を該ＩＰブロックのネットワーク・インターフェース・コントローラ１０８を通してネットワークに直接送るように作動可能にされる。ネットワーク・アドレス指定された通信メッセージは、ネットワーク・アドレスによって他のＩＰブロックに向けられるメッセージである。そのようなメッセージは、当業者が想到するであろうように、パイプライン化されたアプリケーションにおける作業データ、ＳＩＭＤアプリケーションにおけるＩＰブロック間でのシングル・プログラム処理のためのマルチプル・データなどを送る。そのようなメッセージは、該メッセージがＮＯＣのルータを通して向けられるべきネットワーク・アドレスを知っている発信ＩＰブロックにより初めからネットワーク・アドレス指定されるという点で、メモリ−アドレス−ベースの通信メッセージとは異なる。そのようなネットワーク・アドレス指定された通信メッセージは、ＩＰブロックによりＩ／Ｏ機能１３６を通して該ＩＰブロックのネットワーク・インターフェース・コントローラにコマンド・フォーマットで直接送られ、その後に該ネットワーク・インターフェース・コントローラによってパケット・フォーマットに変換されてＮＯＣのルータを通して他のＩＰブロックに送られる。そのようなネットワーク・アドレス指定された通信メッセージ１４６は双方向性であって、特定のアプリケーションにおけるその使用に依存してＮＯＣの各ＩＰブロックへ、またＮＯＣの各ＩＰブロックから、進む可能性がある。しかし、各ネットワーク・インターフェース・コントローラはそのような通信メッセージを、関連するルータに送り、またそれから受け取るように作動可能にされ、各ネットワーク・インターフェース・コントローラは、関連するメモリ通信コントローラ１０６を迂回して、そのような通信メッセージを、直接に、関連するＩＰブロックに送り、またそれから受け取るように作動可能にされる。
【００３７】
図３の例において各ネットワーク・インターフェース・コントローラ１０８は、ネットワーク上に仮想チャネルを実現し、ネットワーク・パケットをタイプにより特徴付けるようにも作動可能にされる。各ネットワーク・インターフェース・コントローラ１０８は仮想チャネル実現ロジック１４８を含み、これは、各通信命令をタイプにより分類して、命令のタイプを、該命令をＮＯＣ上で伝送させるべくパケットの形でルータ１１０に渡す前に、ネットワーク・パケット・フォーマットのフィールドに記録する。通信命令のタイプの例は、ＩＰブロック間ネットワーク−アドレス−ベース・メッセージ、リクエスト・メッセージ、リクエスト・メッセージに対するレスポンス、キャッシュに向けられた無効化メッセージ、メモリ・ロード・メッセージおよびメモリ・ストア・メッセージ、およびメモリ・ロード・メッセージに対するレスポンスなどを含む。
【００３８】
図３の例において各ルータ１１０は、経路指定ロジック１５２、仮想チャネル制御ロジック１５４、および仮想チャネル・バッファ１５６を含む。経路指定ロジックは、通例、ルータ１１０と、リンク１１８と、ルータ間のバス・ワイヤとにより形成されるネットワークにおけるデータ通信のためにデータ通信プロトコル・スタックを実現する同期および非同期のロジックのネットワークとして実現される。経路指定ロジック１５２は、当該技術分野に精通した読者がオフチップ・ネットワークにおいて経路指定テーブルと関連付けて考えるかもしれない機能を含むが、経路指定テーブルは少なくとも或る実施態様においてはＮＯＣで用いるにはあまりにも低速で扱いにくいと考えられる。同期および非同期のロジックのネットワークとして実現される経路指定ロジックは、単一クロック・サイクルと同じ速さで経路指定決定を行うように構成され得る。この例では経路指定ロジックは、ルータで受け取られた各パケットを転送するためのポートを選択することによってパケットのための経路を指定する。各パケットは、該パケットがそれに向けて経路指定されるべきところのネットワーク・アドレスを含む。
【００３９】
上でメモリ−アドレス−ベースの通信メッセージを記述したとき、各メモリ・アドレスは、ネットワーク・インターフェース・コントローラによってネットワーク・アドレス、メモリ通信コントローラのネットワーク位置、にマッピングされると記述された。メモリ通信コントローラ１０６のネットワーク位置は、当然に、そのメモリ通信コントローラの関連するルータ１１０、ネットワーク・インターフェース・コントローラ１０８、およびＩＰブロック１０４のネットワーク位置でもある。従って、ＩＰブロック間の、あるいはネットワーク−アドレス−ベースの通信メッセージにおいては、アプリケーション・レベルのデータ処理がネットワーク・アドレスを、ＮＯＣのルータ、リンクおよびバス・ワイヤにより形成されるネットワークの中でのＩＰブロックの位置と見なすのも典型的なことである。図２は、そのようなネットワークの１つの組織が行および列のメッシュであって、その中では各ネットワーク・アドレスが例えば該メッシュの関連するルータ、ＩＰブロック、メモリ通信コントローラ、およびネットワーク・インターフェース・コントローラの各セットのための一意識別子として、あるいは該メッシュにおける各々のそのようなセットのｘ、ｙ座標として、実現され得るということを示している。
【００４０】
図３のＮＯＣ１０２において、各ルータ１１０は２つ以上の仮想通信チャネルを実現し、その各仮想通信チャネルは通信タイプにより特徴付けられる。通信命令タイプは、従って仮想チャネル・タイプは、上記のもの、すなわち、ＩＰブロック間ネットワーク−アドレス−ベース・メッセージ、リクエスト・メッセージ、リクエスト・メッセージに対するレスポンス、キャッシュに向けられた無効化メッセージ、メモリ・ロード・メッセージおよびメモリ・ストア・メッセージ、およびメモリ・ロード・メッセージに対するレスポンスなどを含む。仮想チャネルをサポートするために、図３の例において各ルータ１１０は、仮想チャネル制御ロジック１５４および仮想チャネル・バッファ１５６も含む。仮想チャネル制御ロジック１５４は、各々の受け取られたパケットを、それに割り当てられた通信タイプを目的として調べて、ポートを通してＮＯＣ上の隣接するルータへ送るために各パケットをその通信タイプのための発信仮想チャネル・バッファに置く。
【００４１】
各仮想チャネル・バッファ１５６は有限の記憶空間を有する。多数のパケットが短時間のうちに受信されると、仮想チャネル・バッファは満杯になって、パケットをそれ以上そのバッファに入れることはできなくなる可能性がある。他のプロトコルでは、そのバッファが満杯になっている仮想チャネルに到着したパケットは落とされるであろう。しかし、この例における各仮想チャネル・バッファ１５６は、仮想チャネルでの送信を中断するように、すなわち特定の通信タイプのパケットの送信を中断するように、仮想チャネル制御ロジックを通して周囲のルータに通知するようにバス・ワイヤの制御信号で作動可能にされる。１つの仮想チャネルがそのように中断されているとき、他の全ての仮想チャネルは影響を受けなくて全容量で動作し続けることができる。制御信号は、各ルータを通して各ルータに関連するネットワーク・インターフェース・コントローラ１０８まではるばる逆戻りして電送される。各ネットワーク・インターフェース・コントローラは、そのような信号を受信すると、それに関連するメモリ通信コントローラ１０６からの、あるいはそれに関連するＩＰブロック１０４からの、中断された仮想チャネルについての通信命令を受け入れることを拒否するように構成されている。このようにして、仮想チャネルの中断は、はるばる発信ＩＰブロックまでさかのぼって、その仮想チャネルを実現している全てのハードウェアに影響を及ぼす。
【００４２】
仮想チャネルにおいてパケット伝送を中断させることの１つの効果は、落とされるパケットが全く無いことである。例えばインターネット・プロトコルのような信頼できないプロトコルにおいてパケットが落とされるかもしれないという事態にルータが遭遇したとき、図３の例のルータは、自分たちの仮想チャネル・バッファ１５６および自分たちの仮想チャネル制御ロジック１５４によって仮想チャネルにおけるパケットの全ての伝送を、バッファ・スペースが再び利用できるようになるまで、中断させることができて、パケットを落とす必要を無くすることができる。従って、図３のＮＯＣは、非常に信頼性の高いネットワーク通信プロトコルをハードウェアの極めて薄い層で実行することができる。
【００４３】
図３の例としてのＮＯＣは、オンチップおよびオフチップの両方のメモリ・キャッシュの間のキャッシュ・コヒーレンシーを維持するようにも構成され得る。各ＮＯＣは、その各々が同じ下にあるメモリ・アドレス空間に対して動作する複数のキャッシュをサポートすることができる。例えば、キャッシュは、ＩＰブロックにより、メモリ通信コントローラにより、あるいはＮＯＣの外部のキャッシュ・コントローラにより、制御されることができる。図２の例におけるオンチップ・メモリ１１４，１１６のいずれも、オンチップ・キャッシュとしても実現されることができ、また、本発明の範囲内で、キャッシュ・メモリはオフチップで実現されることもできる。
【００４４】
図３に示されている各ルータ１１０は５個のポートを含み、４個のポート１５８Ａ−１５８Ｄはバス・ワイヤ１１８を通して他のルータに接続され、第５のポート１６０は各ルータを、それに関連するＩＰブロック１０４に、ネットワーク・インターフェース・コントローラ１０８およびメモリ通信コントローラ１０６を通して、接続する。図２および３のイラストから分かるように、ＮＯＣ１０２のルータ１１０およびリンク１１８は、縦リンクおよび横リンクが各ルータの縦ポートおよび横ポートを連結するメッシュ・ネットワークを形成する。図３のイラストでは、例えば、ポート１５８Ａ、１５８Ｃおよび１６０は縦ポートと呼ばれ、ポート１５８Ｂおよび１５８Ｄは横ポートと呼ばれる。
【００４５】
次に図４は、命令ユニット（ＩＵ）１６２、実行ユニット（ＸＵ）１６４および補助実行ユニット（ＡＸＵ）１６６に分割された処理エレメントとして実現された、本発明に従うＩＰブロック１０４の１つの代表的インプリメンテーションを他の仕方で示す。図示されたインプリメンテーションでは、ＩＵ１６２は、Ｌ１命令キャッシュ（ｉＣＡＣＨＥ）１７０から命令を受け取る複数の命令バッファ１６８を含む。各命令バッファ１６８は、複数の、例えば４つの、対称的マルチスレッド（ｓｙｍｍｅｔｒｉｃ  ｍｕｌｔｉｔｈｒｅａｄｅｄ（ＳＭＴ））ハードウェア・スレッドのうちの１つのために専用される。実効−実・変換ユニット（ｉＥＲＡＴ）１７２が、ｉＣＡＣＨＥ１７０に結合され、複数のスレッド・フェッチ・シーケンサ１７４からの命令フェッチ・リクエストを、下位メモリからの命令の検索のために、実アドレスに変換するために使用される。各スレッド・フェッチ・シーケンサ１７４は、特定のハードウェア・スレッドのために専用され、関連するスレッドにより実行されるべき命令が適切な実行ユニットへのディスパッチのためにｉＣＨＡＣＨＥにフェッチされることを保証するために使用される。また図４に示されているように、命令バッファ１６８にフェッチされる命令は分岐予測ロジック１７６により監視されることもでき、これは、スレッドを実行するときの分岐から生じる命令キャッシュ・ミスを最少化するために各スレッド・フェッチ・シーケンサ１７４にヒントを提供する。
【００４６】
ＩＵ１６２は依存性／発行（ｄｅｐｅｎｄｅｎｃｙ／ｉｓｓｕｅ）ロジック・ブロック１７８も含み、これは、各ハードウェア・スレッドのために専用され、依存性を分解して命令バッファ１６８からＸＵ１６４への命令の発行を制御するように構成されている。さらに、図示されている実施態様では、別の依存性／発行ロジック１８０がＡＸＵ１６６に設けられており、このようにして別々の命令が異なるスレッドによりＸＵ１６４およびＡＸＵ１６６に対して同時に発行されることを可能にしている。１つの代わりの実施態様では、ロジック１８０は、ＩＵ１６２に配置されることができ、あるいは、ロジック１７８が命令をＡＸＵ１６６に対して発行するように、その全体が省略されることができる。
【００４７】
ＸＵ１６４は、固定小数点実行ユニットとして実現され、固定小数点ロジック１８４、分岐ロジック１８６およびロード／ストア・ロジック１８８に結合された汎用レジスタ（ＧＰＲ）１８２のセットを含む。ロード／ストア・ロジック１８８はＬ１データ・キャッシュ（ｄＣＡＣＨＥ）１９０に結合され、実効から実への変換がｄＥＲＡＴロジック１９２により提供される。ＸＵ１６４は、例えば３２ｂまたは６４ｂのＰｏｗｅｒＰＣ（ＩＢＭ社の登録商標）命令セットの全体または一部分など、実際上どのような命令セットも実行するように構成され得る。
【００４８】
ＡＸＵ１６６は、１つ以上の実行ブロック１９４とともに専用の依存性／発行ロジック１８０を含む補助実行ユニットとして動作する。ＡＸＵ１６６は、任意の数の実行ブロックを含むことができ、また、例えば浮動小数点ユニット、または、暗号化／解読ユニット、コプロセッサ、ベクトル処理ユニット、グラフィクス処理ユニット、ＸＭＬ処理ユニットなどのような１つ以上の専用実行ユニットなどの、実際上如何なるタイプの実行ユニットも実現することができる。図示されている実施態様では、ＡＸＵ１６６は、例えば、ＡＸＵ構成状態（ＡＸＵ  ａｒｃｈｉｔｅｃｔｅｄ  ｓｔａｔｅ）とＸＵ構成状態（ＸＵ  ａｒｃｈｉｔｅｃｔｅｄ  ｓｔａｔｅ）との間の直接的移動をサポートするために、ＸＵ１６４に対する高速補助インターフェースを含む。
【００４９】
ＩＰブロック１０４との通信は、ＮＯＣ１０２に結合されたネットワーク・インターフェース・コントローラ１０８を介して、図２に関して上で論じられた仕方で管理され得る。例えばＬ２キャッシュ・メモリにアクセスするためのアドレス・ベースの通信が、メッセージ・ベースの通信とともに、提供され得る。例えば、各ＩＰブロック１０４は、ＩＰブロック間のノード間通信を処理するために専用の受信箱または送信箱あるいはその両方を含むことができる。
【００５０】
本発明の実施態様は、図１−４と関連して上に記載されたハードウェアおよびソフトウェア環境の中で実現され得る。しかし、本発明が多くの異なる環境で実現され得ること、また、本発明の真意および範囲から逸脱せずに上記のハードウェアおよびソフトウェア実施態様に対して他の改変を成し得ることを、本開示の恩恵を受けた当業者は理解するであろう。従って、本発明は、本書に開示された特定のハードウェアおよびソフトウェア環境に限定されない。
【００５１】
動的値域調整浮動小数点実行ユニット
次に図５に目を向けると、この図は、本発明に従う動的値域調整浮動小数点実行ユニット２０２を組み込んだ代表的な処理ユニット２００を示す。処理ユニット２００は、例えば、図１−４のＩＰブロック１０４のようなＩＰブロックにおいてプロセッサ・コアとして実現され得る。あるいは、処理ユニット２００は、シングル・コアまたはマルチ・コアのマイクロプロセッサまたはマイクロコントローラを含む、命令を発し実行する他のプロセッサ・アーキテクチャにおいて実現され得る。
【００５２】
動的値域調整浮動小数点実行ユニット２０２は、発行ユニット２０４から浮動小数点命令を受け取るベクトル浮動小数点実行ユニットとして実現される。発行ユニット２０４は、２０６のところに示されている複数（Ｎ）のスレッドからの命令を発行することのできる発行選択ロジック２０８を含む。発行選択ロジック２０８は、種々のスレッドによる命令の発行をスケジュールするように動作し、当該技術分野で一般的に理解されている仕方で命令間の依存性を管理するためのロジックを通例含む。複数の実行ユニット２０２がサポートされるときには、発行選択ロジック２０８は、各サイクルに複数の命令を複数の実行ユニットに発行することもできる。しかし、ある実施態様では、唯一の実行ユニットがサポートされることができ、さらに、ある実施態様では命令のマルチ・スレッド発行はサポートされることができない。
【００５３】
動的値域調整浮動小数点実行ユニット２０２は、発行ユニット２０４により該実行ユニットに対して発行された命令を処理し、マルチ・ステージ実行パイプライン２１２に結合されたレジスタ・ファイル２１０を含み、マルチ・ステージ実行パイプライン２１２は、発行ロジック２０２により発行された命令に基づいてレジスタ・ファイル２１０に格納されているデータを処理して、ターゲット・データを該レジスタ・ファイルに返して格納することができる。実行ユニット２０２は、例えば、一般的な浮動小数点ユニット、あるいは、グラフィクス処理ユニット、暗号化／解読ユニット、コプロセッサ、ＸＭＬ処理ユニットなどのような専門化した実行ユニットなどの幾つかの異なるタイプの実行ユニットとして実現されることができ、また、ベクトル・ベースのあるいはスカラー・ベースのユニットとして実現されることができる。さらに、本発明に従う動的値域調整浮動小数点実行ユニット２０２は、ある実施態様では単一の処理レーンを含むことができる。
【００５４】
例えば、図５に示されているインプリメンテーションでは、マルチ・ステージ実行パイプライン２１２は、例えば画像処理に使用されることのある、発行ユニット２０４により実行ユニットに対して発行された単一命令多重データ（ＳＩＭＤ）命令を処理するベクトル浮動小数点ユニットとして実現される。レジスタ・ファイル２１０は、複数（例えば４）のワードを各々含む複数（例えば、１２８）のベクトル・レジスタ２１４を含む。浮動小数点値を選択されたレジスタに書き込み、また、選択されたレジスタの内容をパイプライン２１２に処理のために出力するために複数のレジスタ・ファイル入力および出力（図示されていない）が設けられる。浮動小数点ベクトルをパイプラインに処理のために提供するために複数のオペランド入力２１６がレジスタ・ファイル２１０とマルチ・ステージ実行パイプライン２１２との間に設けられている。パイプライン２１２は、レジスタ・ファイル２１０に格納されているベクトルを発行ユニット２０４により発行された命令に基づいて処理してターゲット・データをレジスタ・ファイル２１０内のベクトル・レジスタに返して格納することのできる複数（例えば、４）の処理レーンまたはサブ・ユニット２１８を含む。
【００５５】
実行ユニット２０２の構成が画像処理アプリケーションに用いることのできる浮動小数点ユニットとして与えられたならば、各処理レーン２１８は浮動小数点命令を処理するように構成される。代わりに多様な他の浮動小数点アーキテクチャが使用され得るけれども、実行ユニット２０２は、Ａ，ＢおよびＣと表示される３つのベクトル・オペランドを操作することのできるパイプライン型浮動小数点実行アーキテクチャを含む。ベクトル演算のために、４つの３２ビット・ワード・ベクトルがサポートされ、各ベクトル内のワードはＸ，Ｙ，ＺおよびＷとして表示され、そしてそのようなものとして、各処理レーン２１８は各ベクトルから１つずつ、３つのオペランド・ワードを受け取る。例えば、各ベクトルからのＸワードを処理する処理レーン２１８については、その処理レーンに供給されるオペランドはＡｘ，ＢｘおよびＣｘと表示される。
【００５６】
各処理レーン２１８は、１つ以上の他の処理レーンと並行して演算を行うように構成されている。例えば、各処理レーンは、外積演算または内積演算を行うために１対のオペランドを掛け合わせることができる。ベクトル・ユニットの異なる処理レーンでオペランドの異なる対を掛け合わせることによって、ベクトル演算がより速く且つ効率よく実行され得る。
【００５７】
各処理レーン２１８は、性能をさらに高めるためにパイプライン化されてもいる。従って、各処理レーン２１８は、オペランドに対して１つ以上の演算を実行するための複数のパイプライン・ステージを含む。例えば、第１ステージのために、各処理レーンは、ＡオペランドとＣオペランドとを掛け合わせるための乗算器２２０を含むことができる。本発明の一実施態様では、図５に示されているようにオペランドの乗算はパイプラインの第１ステージで実行され得る。
【００５８】
各処理レーン２１８は、積の計算と並行して、オペランドＢを乗算器２２０により計算された積とアラインさせるためのアライナ機構２２２も含むことができる。図５においてはアラインメントは同じパイプライン・ステージに示されているけれども、他の実施態様では乗算とアラインメントとは別々のパイプライン・ステージで実行され得ることを当業者は認めるであろう。
【００５９】
各処理レーン２１８は、２つ以上のオペランドを加え合わせるための加算器２２４も含むことができる。（図５に示されている）１つの実施態様では、各加算器２２４は乗算器２２０により計算された積（和および桁上げ（ａ  ｓｕｍ  ａｎｄ  ｃａｒｒｙ）として出力される）を受け取って、その積を、アライナ機構２２２により出力されたアラインされたオペランドに加算する。従って、各処理レーン２１８は乗算・加算命令を実行するように構成され得る。当業者は、乗算・加算命令がベクトル演算でよく実行されることを認めるであろう。従って、数個の乗算・加算命令を並列のレーンで実行することによってベクトル処理の効率が顕著に改善され得る。
【００６０】
各ベクトル処理レーン２１８は、図５に示されているように、正規化ステージと丸めステージとをも含むことができる。従って、正規化器２２６が各処理レーンに設けられ得る。正規化器２２６は、計算された値を便利な指数フォーマットで表すように構成され得る。例えば、正規化器２２６は値０．０００００６３を演算の結果として受け取ることができる。正規化器２２６は、この値を、より適切な指数フォーマット、例えば６．３×１０−６、に変換することができる。丸めステージは、計算された値を所望の小数点数に丸めることのできる丸め器２２８を組み入れることができる。例えば、１０．５６８２３４９という計算された値は、もし３小数位だけが望まれるのであれば、１０．５６８に丸められることができる。本発明の一実施態様では、丸め器２２８は、該丸め器がそれに対して作用するように構成されているところの特定精度の浮動小数点数の最下位ビットを丸めることができる。
【００６１】
本発明の実施態様が、上にまた図５に記載された特定のパイプライン・ステージ、コンポーネント、およびコンポーネントの配置に限定されないことを当業者は認めるであろう。例えば、ある実施態様では、アライナ機構２２２は、オペランドＢ、乗算器２２０により計算された積、あるいは両方をアラインさせるように構成され得る。さらに、本発明の実施態様は、図５に記載されている特定のコンポーネントに限定されない。図示されたコンポーネントと、先行ゼロ予測器（ｌｅａｄｉｎｇ  ｚｅｒｏ  ａｎｔｉｃｉｐａｔｏｒｓ）、除算器など（これらに限定されない）のような付加的なコンポーネントとの任意の組み合わせが、本発明に従う各処理レーン２１８に含まれ得る。
【００６２】
動的値域調整浮動小数点実行ユニット２０２は、第１タイプの浮動小数点命令の実行中は第１浮動小数点フォーマットが使用され、第２タイプの浮動小数点命令の実行中は第２タイプの浮動小数点フォーマットが使用されるように、複数の浮動小数点フォーマットをサポートする。図示されている実施態様では、その２つの浮動小数点フォーマットは、同じサイズの浮動小数点値（例えば、３２ビット）に基づくけれども、一方のフォーマットにおいては仮数ビットとして使用されるビットの一部分が他方のフォーマットにおいては指数ビットとして使用されるべく再利用されるという点で異なっている。
【００６３】
例えば、図６において２４０のところに示されているように、１つの実施例では、拡張値域浮動小数点フォーマットはＩＥＥＥ７４５単精度（非拡張）浮動小数点フォーマットに類似して構成され得る。ＩＥＥＥ７４５単精度フォーマットでは、８ビット単精度（Ｓｉｎｇｌｅ  Ｐｒｅｃｉｓｉｏｎ（ＳＰ））指数フィールドおよび２３ビットＳＰ仮数フィールドとともに１ビット符号フィールドが設けられる。拡張値域浮動小数点フォーマットは依然として合計３２ビットを使用するけれども、ＩＥＥＥ７４５単精度フォーマットからの仮数フィールドは第１部分２４２および第２部分２４４に分解され、その第１部分は拡張値域（Ｅｘｔｅｎｄｅｄ  Ｒａｎｇｅ（ＥＲ））指数フィールドのために１１ビットを提供するためにＳＰ指数フィールドと連結され、ＳＰ仮数フィールドの第２部分２４４の残りの２０ビットはＥＲ仮数フィールドとして使用される。さらに、その追加の指数ビットに基づいて、指数バイアスは十進の１０２３となり、これは、重要なことに、倍精度浮動小数点値のために使用されるのと同じバイアスでもある。
【００６４】
図示されている実施態様では、単精度フォーマットに基づく浮動小数点命令は非拡張値域浮動小数点命令と称され、拡張値域フォーマットに基づく浮動小数点命令は拡張値域浮動小数点命令と称される。従って、実行ユニット２０２が非拡張値域浮動小数点命令を実行するとき、オペランドとして提供されたどの浮動小数点値も、指数フィールドに格納されているデータを指数として使用するとともに仮数フィールドの第１部分および第２部分に格納されているデータを仮数として使用するべく連結するために、復号される。対照的に、実行ユニット２０２が拡張値域浮動小数点命令を実行するときには、オペランドとして提供されたどの浮動小数点値も、指数フィールドと仮数フィールドの第１部分とに格納されているデータを指数として使用するべく連結するとともに仮数フィールドの第２部分に格納されているデータを仮数として使用するために、復号される。
【００６５】
図示されている実施態様で利用される値域拡張フォーマットは、単精度数を用いて普通はオーバーフローする演算を実行することを可能にし、さらに倍精度ユニットより遥かに少ない回路面積を消費し、単精度ユニットとほぼ同じ性能を有する。さらに、このフォーマットを収容するために余分のメモリ領域は通例不要である。さらに、単精度ユニットにおいて拡張値域フォーマットのためのサポートを実現するのに必要な回路変更は通例本質的に極めて僅かである。
【００６６】
例えば、図７は、浮動小数点値の指数部分および仮数部分に対して使用される浮動小数点処理ロジックをそれぞれ表す指数経路２５２および仮数経路２５４を含む代表的浮動小数点実行ユニット２５０の一部分の簡略表現を示す。この表現では、単一のオペランド入力だけが示されているが、複数の入力オペランドが通例サポートされるであろうということが理解されるであろう。８ビット指数経路を通例含む単精度浮動小数点ユニットとは異なって、浮動小数点実行ユニット２５０は１１ビット指数経路２５２を含む。しかし、単精度ユニットと実行ユニット２５０との両方が２３ビット仮数経路を通例含む。
【００６７】
実行ユニット２５０が非拡張値域／単精度モードまたは拡張値域モードで動作するように実行ユニット２５０のモードを制御するために拡張値域モード制御ロジック・ブロック２５６が使用される。ブロック２５６は、指数経路２５２および仮数経路２５４にそれぞれ結合されている１対のマルチプレクサ２５８および２６０を制御することにより、そのように動作する。
【００６８】
指数経路に関して、マルチプレクサ２５８は、最上位ビットとしての“０００ｂ”と連結された指数フィールドからのビットを選択して実際上８ビットの指数をもたらすこと（非値域拡張モードで）、あるいは最下位ビットとしての仮数フィールドの先頭の部分からの３ビットと連結された指数フィールドからのビットを選択して１１ビットの指数をもたらすこと（値域拡張モードで）のいずれかを選択する。仮数経路に関して、マルチプレクサ２６０は、仮数フィールドの第１部分および第２部分からの２３ビット（非値域拡張モードで）、あるいは、仮数フィールド内のビットを左へ３ビットだけシフトさせて“０００ｂ”の値を最下位ビットとしてシフトインするシフト・ロジック２６２の出力（値域拡張モードで）のいずれかを選択する。仮数経路２５４は符号フィールドも受け取り、これは該２つのモード間で変化しない。
【００６９】
例えば、代表的な“０１０１１０１１１１００１０１１１１０１００００１１１００１１０”という３２ビット浮動小数点値について、この値の単精度／非拡張値域復号は、“０００１０１１０１１１”という指数と“１．００１０１１１１０１００００１１１００１１０”という仮数とをもたらす。しかし、拡張値域フォーマットでは、この値は、“１０１１０１１１１００”という指数と“１．０１１１１０１００００１１１００１１００００”という仮数とを有するように復号される。
【００７０】
重要なことに、図示されている実施態様においては浮動小数点値を、フォーマットに関わらず、同じフォーマットでレジスタ・ファイル２１０に格納することが望ましいかもしれない。従って、拡張値域フォーマット浮動小数点値の仮数ビットが浮動小数点実行ユニットの仮数経路による処理の前に左へ１ビット以上シフトされるのと全く同様に、実行ユニットにより出力された結果浮動小数点値の仮数ビットを、結果をレジスタ・ファイルに格納する前に、同じビット数だけ右へシフトさせることも望ましいかもしれない。
【００７１】
例えば、図５に戻って、実行ユニット２０２において、マルチ・ステージ実行パイプライン２１２は、結果浮動小数点ベクトルの形のターゲット・データ２３０を出力する。実行ユニットが拡張値域浮動小数点命令を処理している時に浮動小数点値の仮数ビットを右および左へそれぞれシフトさせるシフト・ロジック（２３２および２３４のところに示されている）が実行ユニット２０２内に設けられている。シフト・ロジック２３４は、結果浮動小数点値がその次の浮動小数点命令により使用される時にレジスタ・ファイルを迂回するために浮動小数点実行ユニットにおいて普通使用されているバイパス・ロジックと組み合わされ、従ってシフト・ロジック２３４はターゲット・データ２３０も受け取る。
【００７２】
図８は、シフト・ロジック２３２および２３４をより詳しく示す。この図では、単一の処理レーン２１８だけが図示されており、別々の指数経路および仮数経路、また、指数経路に配置される連結ロジック（図７に関連して論じられた）は、理解を容易にするために示されていない。しかし、１１ビット指数経路および図７に関連して上で述べられたものと同様の連結ロジックも実行ユニット２０２において通例使用されることが理解されるであろう。
【００７３】
従って、シフト・ロジック２３２はマルチプレクサ２７０を含み、これは、非拡張値域結果浮動小数点ベクトルについては、対応するワードを、２３０のところの結果浮動小数点ベクトル出力から直接にベクトル・レジスタ・ファイル２１０へ、そのままレジスタに格納されるように、送る。しかし、拡張値域結果浮動小数点ベクトルについては、指数フィールドの最下位３ビットが仮数フィールドの先頭部分に書き込まれ得るように、対応するワードの仮数フィールドを右へ３ビットシフトさせ（かつ３個のＬＳＢを廃棄する）ために右シフト・ロジック２７２が使用される。
【００７４】
実行ユニット２０２が３個のオペランド・ベクトルを受け取るとすると、シフト・ロジック２３４は、非拡張値域浮動小数点オペランドについては浮動小数点ベクトル・オペランドからの対応するワードを変化させずに通過させる３個のマルチプレクサ２７４を含む。しかし、拡張値域浮動小数点オペランドについては、仮数をパイプラインの仮数経路と適切にアラインさせるべく対応するワードの仮数フィールドを左へ３ビットだけシフトさせる（かつＬＳＢとして“０００ｂ”を付け加える）ために左シフト・ロジック２７６が使用される。各マルチプレクサ２７４は対応するバイパス・マルチプレクサ２７８の一入力に出力し、これは、レジスタ・ファイルからの浮動小数点オペランド・ベクトルからの対応するワード、または結果浮動小数点ベクトルからの対応するワードを、当該技術分野で知られている仕方で、通過させる。
【００７５】
動的値域調整浮動小数点実行ユニットが非拡張値域フォーマットの浮動小数点値の処理と拡張値域フォーマットの浮動小数点値の処理との間で切り替わる仕方は、本発明の種々の実施態様において様々であり得る。例えば、拡張値域フォーマット命令を使うか使わないかをアプリケーション開発者が選べるように、非拡張値域フォーマット浮動小数点命令と拡張値域フォーマット浮動小数点命令との両方で命令セットを定義することができる。他の実施態様では、命令は、浮動小数点命令が拡張値域浮動小数点命令を使うべきか否かを定めるモード・ビットまたは二次的演算コードを含むことができる。他の実施態様では、アプリケーション・プログラムが特殊目的レジスタ（ＳＰＲ）への書き込みを通してそのモードを選択できるように、ソフトウェアを介して、例えばそのＳＰＲを介して、動作モードが設定可能であり得る。
【００７６】
さらに他の実施態様では、モード間の切り替えは本質的に自動化され得る。例えば、１つの実施態様では、オーバーフロー状態の数が過多であることに応じて自動的に拡張値域モードに切り替わるのが望ましいかもしれない。例えば、図９は、図７の拡張値域モード制御ロジック２５６の中で実行され得るルーチン２８０を示す。ルーチン２８０において、浮動小数点命令オーバーフローがブロック２８２で追跡される。ブロック２８４は、オーバーフローの数が閾値を越えたか否かを判定し、もし超えたならばブロック２８６で実行ユニットを拡張値域モードにセットする。オーバーフローの数が閾値を越えていなければ、ブロック２８８で実行ユニットは非拡張値域モードにセットされる。その後、オーバーフローの追跡がブロック２８２で続行される。例えば、オーバーフローの総数が閾値を越えた、オーバーフローを引き起こす命令のパーセンテージが閾値を越えた、一定の時間フレームにおけるオーバーフローの数が閾値を越えたなど、拡張値域モードを選択する基準は種々の実施態様で異なり得る。
【００７７】
従って、本書に記載された実施態様は、倍精度数に一般的に関連する追加の回路面積および性能の問題を避けながら単精度数より遥かに大きな数値範囲を考慮している。さらに、通例極めて僅かな回路変更が必要であるので、極めて小さなあるいはタイミングの問題を伴う在来の浮動小数点パイプラインの中での実施を可能にする。
【００７８】
本発明の精神および範囲から逸脱せずに、図示された実施態様に種々の改変を加えることができる。例えば、仮数フィールドの第１および第２の部分と指数フィールドとのそれぞれのサイズは種々の実施態様で異なることができ、本発明は特に単精度浮動小数点値での使用に限定されない。さらに、所与のインプリメンテーションにおいて３つ以上の浮動小数点フォーマットがサポートされ得る。本開示の恩恵を受けた当業者にとっては他の改変が明白であろう。従って、本発明は、以下に添付されている請求項に存する。
【符号の説明】
【００７９】
２４０  拡張値域浮動小数点フォーマット
２４２  第１部分
２４４  第２部分
【図１】
2010027049.tif 000003
【図２】
2010027049.tif 000004
【図３】
2010027049.tif 000005
【図４】
2010027049.tif 000006
【図５】
2010027049.tif 000007
【図６】
2010027049.tif 000008
【図７】
2010027049.tif 000009
【図８】
2010027049.tif 000010
【図９】
2010027049.tif 000011