JP2010027049A - 浮動小数点実行ユニットを用いる回路装置、集積回路装置、プログラム製品、および方法(動的値域調整浮動小数点実行ユニット) - Google Patents

浮動小数点実行ユニットを用いる回路装置、集積回路装置、プログラム製品、および方法(動的値域調整浮動小数点実行ユニット) Download PDF

Info

Publication number
JP2010027049A
JP2010027049A JP2009161036A JP2009161036A JP2010027049A JP 2010027049 A JP2010027049 A JP 2010027049A JP 2009161036 A JP2009161036 A JP 2009161036A JP 2009161036 A JP2009161036 A JP 2009161036A JP 2010027049 A JP2010027049 A JP 2010027049A
Authority
JP
Japan
Prior art keywords
floating point
instruction
mantissa
execution unit
operand
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2009161036A
Other languages
English (en)
Other versions
JP5431044B2 (ja
Inventor
Adam James Muff
アダム・ジェイムズ・マフ
Matthew Ray Tubbs
マチュー・レイ・タブス
David Wait Charles
チャールズ・デイビッド・ウェイト
Mark Joseph Hickey
マーク・ジョセフ・ヒッキー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2010027049A publication Critical patent/JP2010027049A/ja
Application granted granted Critical
Publication of JP5431044B2 publication Critical patent/JP5431044B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/382Reconfigurable for different fixed word lengths
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3828Multigauge devices, i.e. capable of handling packed numbers without unpacking them

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Nonlinear Science (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Advance Control (AREA)

Abstract

【課題】浮動小数点実行ユニットを提供する。
【解決手段】浮動小数点実行ユニットは、浮動小数点計算のために拡張された値域を動的に提供するために浮動小数点値の仮数ビットの部分集合を付加的な指数ビットして選択的に再利用することができる。浮動小数点オペランドの仮数フィールドは第1および第2部分を含むと考えられることができ、その第1部分は、浮動小数点値の仮数を表すように第2部分と連結されることができ、あるいは、拡張された値域を提供するために、浮動小数点値の指数を表すように浮動小数点オペランドの指数フィールドと連結されることができる。
【選択図】図6

Description

本発明は、一般的にはデータ処理に関し、特にプロセッサ・アーキテクチャと、それに組み込まれる浮動小数点実行ユニットとに関する。
浮動小数点実行ユニットは、複雑な数学的計算の処理を加速するためにコンピュータ・プロセッサにおいてよく使われる。浮動小数点計算は、1つ以上の浮動小数点値を用いて数学的計算を実行することを含む。浮動小数点値は、通例、指数及び仮数の組み合わせとして表される。フラクション(fraction)またはマンテッサ(mantissa)とも称され得る仮数は、所定の精度を有する浮動小数点値における数字を表し、指数はその浮動小数点値のための二進小数点の相対位置を表す。
在来の浮動小数点実行ユニットは、それらが設計上サポートするべき浮動小数点標準規格により定められる指数値域の中に納まる算術演算の実行に限定される。2つの有力で広く使用されている浮動小数点標準規格はIEEE−754単精度及び倍精度である。単精度標準規格は32ビットを使用し、倍精度は64ビットを使用する。単精度標準規格は、符号を表すために1ビットを、バイアスされた指数を表すために8ビットを定義し、残りの23ビットは仮数を表す。この定義は、単精度数が約−2128と2128との間を変動することを可能にする。倍精度標準規格は、バイアスされた指数のために11ビットを使用するので、浮動小数点値の遥かに広い値域を考慮に入れている(約−21024と21024)。更に、倍精度標準規格は仮数部のために52ビットを包含しており、従って大幅により大きな精度を提供する。
浮動小数点実行ユニットは、スカラー実行ユニットとして、またはベクトル実行ユニットとして、実現され得る。スカラー実行ユニットは、通例、スカラー浮動小数点値に作用し、ベクトル実行ユニットは、複数のスカラー浮動小数点値を含むベクトルに作用する。3Dグラフィクス処理において処理されるデータの多くは容易にベクトル化可能であるので(例えば、空間内のオブジェクトの座標はしばしば3個または4個の浮動小数点値を用いて表される)、ベクトル浮動小数点実行ユニットが多くの3Dグラフィクス・ハードウェア・デザインにおいて一般的になっている。3Dグラフィクスにおいて演算の大部分は普通は単精度値域に納まるので、多くの在来のデザインにおいて、ベクトル浮動小数点実行ユニットは浮動小数点ベクトル内のワードを処理するために4つの単精度浮動小数点実行ユニットを使用する。しかし、或る場合には、単精度浮動小数点値は或る計算のためには不十分で、倍精度演算が必要とされ得る。
倍精度浮動小数点実行ユニットはより広い値域の算術演算を処理するためのより大きな柔軟性を持っているけれども、倍精度浮動小数点値を処理するのに必要な付加的回路は電力消費、性能及びチップ土地に関して高価であり得る。一般的に、4ワード倍精度浮動小数点ベクトル実行ユニットは、同等の単精度ユニットの回路面積の約2.5−3倍を占める。さらに、倍精度ユニットは、これらに対応する単精度のものより低い性能、およびより高い電力消費を有する。演算が単精度定義の限界の中に納まるには大きすぎる値域を有する場合には、しばしば計算は倍精度スカラー(ベクトルではない)ユニットで実行されなければならず、それは性能を劇的に低下させる。さらに、多くの在来のグラフィック処理装置(GPU)において、しばしば倍精度ユニットはチップ上に存在しないので、計算はCPU上で行われなければならず、それは性能をさらに低下させる。
しかし、倍精度浮動小数点数が必要とされる多くの場合に、特に多くのコンピュータ・グラフィクスの場合に、それらは、それらが提供する数値精度よりも大きな指数値域のために必要とされるに過ぎない。例えば、コンピュータ・ゲームの領域では、ゲーム開発者が、サイズが大きく変化する3Dグラフィクス・シーンの中にオブジェクトを置いてスケーリングすることを望む場合があり得る。例えば、観察者が宇宙船の中にいて、惑星サイズのオブジェクトに向かって高速で旅をしていると想像しよう。カメラがオブジェクトにだんだん近づいてゆくに連れて、より多くの詳細が観察され得るようになる。ついには、カメラはオブジェクトの表面に直接接触して、回路あるいはバクテリアのような微小な細部を拡大して焦点を合わせ始めることができる。開発者の希望は、芸術の演出およびパフォーマンス上の理由から、このシーンを連続的であらしめ、かつ測定の単位を変化させないことである。これと似ている多くの場合に、単精度浮動小数点値は、必要な値域を提供しない。
従って、より精密な浮動小数点実行ユニットが使用される場合に別に必要とされるであろう付加的回路無しで、浮動小数点値のより大きな値域を浮動小数点実行ユニットが処理する能力を提供する仕方に対するニーズが当該技術分野に存在する。
本発明は、浮動小数点計算のために拡張された値域を動的に提供するために浮動小数点値の仮数ビットの部分集合を付加的な指数ビットして選択的に再利用することのできる浮動小数点実行ユニットを提供することによって、従来技術に関連するこれらの、および他の問題に対処する。特に、浮動小数点オペランドの仮数フィールドは、第1部分および第2部分を含むと考えられることができ、その第1部分は、浮動小数点値のための仮数を表すように第2部分と連結されることができ、あるいは、拡張された値域を提供するために、浮動小数点値のための指数を表すように浮動小数点オペランドの指数フィールドと連結されることができる。
本発明の一側面に従って、回路装置は浮動小数点オペランドを受け取るように構成されたオペランド入力を含み、このオペランド入力により受け取られる各浮動小数点オペランドは指数フィールドと仮数フィールドとで構成され、仮数フィールドは第1部分と第2部分とを包含する。該回路装置は、オペランド入力に結合されて浮動小数点命令の実行中にオペランド入力により受け取られた浮動小数点オペランドを処理するように構成された浮動小数点実行ユニットをも含む。該浮動小数点実行ユニットは、そのために第1浮動小数点オペランドが該オペランド入力により受け取られているところの第1浮動小数点命令を、第1浮動小数点ぺランドの指数フィールドに格納されているデータを指数として使用することにより、また、第1浮動小数点オペランドの仮数フィールドの第1部分及び第2部分に格納されているデータを仮数として使用するべく連結することにより、実行するように構成される。該浮動小数点実行ユニットは、また、そのために第2浮動小数点オペランドがオペランド入力により受け取られているところの第2浮動小数点命令を、第2浮動小数点オペランドの指数フィールドと仮数フィールドの第1部分とに格納されているデータを指数として使用するべく連結することにより、また、第2浮動小数点オペランドの仮数フィールドの第2部分に格納されているデータを仮数として使用することにより、実行するように構成される。
本発明の他の1つの側面に従って、浮動小数点実行ユニットにおいて浮動小数点命令を実行する方法は、第1及び第2の浮動小数点命令を受け取ることを含み、第1浮動小数点命令は第1浮動小数点オペランドを特定し、第2浮動小数点命令は第2浮動小数点オペランドを特定し、第1及び第2の浮動小数点オペランドの各々は指数フィールド及び仮数フィールドで構成され、仮数フィールドは第1部分及び第2部分を含む。第1浮動小数点オペランド内の指数フィールド、仮数フィールドの第1部分および仮数フィールドの第2部分は、第2浮動小数点オペランド内の指数フィールド、仮数フィールドの第1部分および仮数フィールドの第2部分と同じビットにそれぞれマッピングされる。該方法は、第1浮動小数点オペランドの指数フィールドに格納されているデータを指数として使用することにより、また、第1浮動小数点オペランドの仮数フィールドの第1および第2部分に格納されているデータを仮数として使用するべく連結することによって第1浮動小数点命令を浮動小数点実行ユニットにおいて実行すること、また、第2浮動小数点オペランドの指数フィールドおよび仮数フィールドの第1部分に格納されているデータを指数として使用するべく連結することにより、また、第2浮動小数点オペランドの仮数フィールドの第2部分に格納されているデータを仮数として使用することにより第2浮動小数点命令を浮動小数点実行ユニットにおいて実行することを含む。
発明を特徴付けるこれらのおよび他の利点および特徴は、本書に添付されてその更なる部分を形成する請求項において明らかにされている。しかし、本発明と、その使用を通して達成される利点および目的のより良好な理解のために、本発明の代表的実施態様が記載されている図面と、随伴する記述事項とを参照するべきである。
本発明の実施態様に従うデータ処理に役立つ代表的コンピュータを含む代表的自動計算機のブロック図である。 図1のコンピュータにおいて実現される代表的NOCのブロック図である。 図2のNOCのノードの代表的インプリメンテーションをより詳細に説明するブロック図である。 図2のNOCのIPブロックの代表的インプリメンテーションを説明するブロック図である。 本発明に従う、また図2のNOCのIPブロックの中で実現され得る、動的値域調整ベクトル浮動小数点実行ユニットを組み込んだ処理ユニットのブロック図である。 図5の動的値域調整ベクトル浮動小数点実行ユニットに用いるのに適する代表的な拡張値域浮動小数点数フォーマットのブロック図である。 図5の動的値域調整ベクトル浮動小数点実行ユニットにおけるシフトおよび連結ロジックの代表的インプリメンテーションのブロック図である。 図5の動的値域調整ベクトル浮動小数点実行ユニットの処理レーンのうちの1つのブロック図である。 図7において引用されている拡張値域モード制御ロジックにおいて実行され得る自動拡張値域モード選択ルーチンのプログラム・フローを説明するフローチャートである。
本発明に従う実施態様は、浮動小数点数のフラクションあるいは仮数ビットの部分集合を選択的に付加的な指数ビットとして扱い、また、拡張された浮動小数点値域を提供するために異なる指数バイアスを想定する動的値域調整浮動小数点実行ユニットを利用する。さらに、正しい仮数ビットを浮動小数点実行ユニットの仮数経路の中に移動させ、また適切な指数バイアスを使用するために、ある実施態様では特別の演算命令、あるいは特別のモードが、定義され得る。さらに、ある実施態様では、例えば過剰な数のオーバーフローに応答して、拡張値域モードへの自動的切り替えが実行され得る。
ハードウェアおよびソフトウェア環境
次に図面に目を向けると、同様の数は数個の図の全体にわたって同様の部分を示し、図1は、本発明の実施態様に従うデータ処理に役立つ代表的コンピュータ10を含む代表的自動計算機を示す。図1のコンピュータ10は少なくとも1つのコンピュータ・プロセッサ12または‘CPU'とランダム・アクセス・メモリ14(‘RAM')とを含み、これは高速メモリ・バス16およびバス・アダプタ18を通してプロセッサ12とコンピュータ10の他のコンポーネントとに接続されている。
RAM14には、アプリケーション・プログラム20、すなわち、例えばワード・プロセッシング、スプレッドシート、データベース操作、ビデオ・ゲーミング、株式市場シミュレーション、原子量子過程シミュレーションなどの特定のデータ処理タスクを実行するためのユーザ・レベル・コンピュータ・プログラム命令のモジュール、あるいは他のユーザ・レベル・アプリケーションが格納される。RAM14にはオペレーティング・システム22も格納される。本発明の実施態様との関係で有益なオペレーティング・システムは、UNIX(商標)、Linux(商標)、Microsoft Windows XP(商標)、AIX(商標)、IBM社のi5/OS(商標)、および当業者が想到する他のものを含む。図1の例におけるオペレーティング・システム22およびアプリケーション20はRAM14の中に示されているが、このようなソフトウェアの多くのコンポーネントは通例不揮発性メモリにも(例えばディスク・ドライブ24に)格納される。
以下でより明白となるであろうように、本発明に従う実施態様はネットワーク・オン・チップ(Network On Chip(NOC))集積回路装置、あるいはチップ、の中で実現され得るので、コンピュータ10は2つの代表的NOC、すなわちビデオ・アダプタ26およびコプロセッサ28を含んで示されている。NOCビデオ・アダプタ26は、代わりにグラフィクス・アダプタとも称され得るものであるが、ディスプレイ・スクリーンまたはコンピュータ・モニタのような表示装置30へのグラフィック出力のために特別に設計されたI/Oアダプタの例である。NOCビデオ・アダプタ26は高速ビデオ・バス32、バス・アダプタ18、およびフロント・サイド・バス34(これも高速バスである)を通してプロセッサ12に接続されている。NOCコプロセッサ28はバス・アダプタ18と、フロント・サイド・バス34および36(これも高速バスである)とを通してプロセッサ12に接続されている。図1のNOCコプロセッサは、メインのプロセッサ12の命令を受けて、例えば、特定のデータ処理タスクを促進するように最適化され得る。
図1の代表的なNOCビデオ・アダプタ26およびNOCコプロセッサ28は、統合プロセッサ(Integrated Processor(‘IP’))ブロック、ルータ、メモリ通信コントローラ、およびネットワーク・インターフェース・コントローラを含むNOCを各々含み、その詳細は以下で図2−3と関連してより詳しく論じられる。NOCビデオ・アダプタとNOCコプロセッサとは、並列処理を使用するとともに共有されるメモリへの高速ランダム・アクセスを必要とするプログラムのために各々最適化される。しかし、NOC装置および装置アーキテクチャ以外の装置および装置アーキテクチャにおいて本発明が実施され得ることを、本開示の恩恵を受けた当業者は理解するであろう。従って本発明はNOC装置内での実施に限定されない。
図1のコンピュータ10は、拡張バス40およびバス・アダプタ18を通してプロセッサ12とコンピュータ10の他のコンポーネントとに結合されたディスク・ドライブ・アダプタ38を含む。ディスク・ドライブ・アダプタ38は、ディスク・ドライブ24の形の不揮発性データ記憶装置をコンピュータ10に接続し、例えば、インテグレーテッド・ドライブ・エレクトロニクス(Integrated Drive Electronics(‘IDE'))アダプタ、小型コンピュータ・システム・インターフェース(‘SCSI')アダプタ、および当業者が想到するであろう他のものを用いて実現され得る。当業者が想到するであろうように、不揮発性コンピュータ・メモリは、例えば、光ディスク・ドライブ、電気的に消去可能でプログラマブルな読み出し専用メモリ(いわゆる‘EEPROM’または‘フラッシュ'メモリ)、RAMドライブなどとしても実現され得る。
コンピュータ10は1つ以上の入出力(‘I/O')アダプタ42も含み、これは、コンピュータ・ディスプレイ・スクリーンのような表示装置への出力と、キーボードおよびマウスのようなユーザ入力装置44からのユーザ入力とを制御するために例えばソフトウェア・ドライバおよびコンピュータ・ハードウェアを通してユーザ指向入出力を実行する。さらに、コンピュータ10は、他のコンピュータ48とのデータ通信と、データ通信ネットワーク50とのデータ通信とのための通信アダプタ46を含む。そのようなデータ通信は、RS−232接続を通して、ユニバーサル・シリアル・バス(‘USB’)のような外部バスを通して、IPデータ通信ネットワークのようなデータ通信ネットワークを通して、また当業者が想到するであろう他の方法で、シリアルに実行され得る。通信アダプタはハードウェア・レベルのデータ通信を実行し、それを通して1つのコンピュータがデータ通信メッセージを直接にまたはデータ通信ネットワークを通して他のコンピュータに送る。コンピュータ10に用いるのに適する通信アダプタの例は、有線ダイヤルアップ通信用のモデム、有線データ通信ネットワーク通信用のイーサネット(IEEE802.3)アダプタ、および無線データ通信ネットワーク通信用の802.11アダプタを含む。
さらに説明するために、図2は本発明の実施態様に従う例としてのNOC102の機能ブロック図を示す。図2のNOCは、‘チップ'100上で、すなわち、集積回路上で、実現される。NOC102は、相互に接続されたノードをなすようにグループ化された統合プロセッサ(‘IP’)ブロック104と、ルータ110と、メモリ通信コントローラ106と、ネットワーク・インターフェース・コントローラ108とを含む。各IPブロック104は、メモリ通信コントローラ106およびネットワーク・インターフェース・コントローラ108を通してルータ110に適合させられている。各メモリ通信コントローラはIPブロックとメモリとの間の通信を制御し、各ネットワーク・インターフェース・コントローラ108はルータ110を通してのIPブロック間通信を制御する。
NOC102において、各IPブロックは、NOC内でのデータ処理のためのビルディング・ブロックとして使用される同期または非同期の論理設計の再使用可能な単位を表す。‘IPブロック'という用語は、時には、事実上IPブロックを半導体回路の他のユーザまたは設計者にライセンスされるべき、当事者により所有されるデザインすなわち当事者の知的財産、と称する‘知的財産(Intellectual Property)ブロック’として展開される。しかし、本発明の範囲内では、IPブロックが特定の所有権に従う必要は無いので、この用語は常に本明細書では‘統合プロセッサ(Integrated Processor)ブロック'として展開される。本書で明記されるIPブロックは、知的財産権の対象であるかもしれず、またそうではないかもしれないロジック、セル、またはチップ・レイアウト・デザインの再使用可能な単位である。IPブロックは、ASICチップ・デザインまたはFPGAロジック・デザインとして形成され得るロジック・コアである。
類推によりIPブロックを記述する1つの方法は、IPブロックとNOC設計との関係はライブラリとコンピュータ・プログラミングとの関係または個別集積回路コンポーネントとプリント回路基板設計との関係に等しいとすることである。本発明の実施態様に従うNOCでは、IPブロックは一般的ゲート・ネットリストとして、完全な特殊目的または汎用マイクロプロセッサとして、あるいは当業者が想到し得る他の方法で、実現され得る。ネットリストは、高レベルのプログラム・アプリケーションのためのアセンブリ・コード・リスティングに類似する、IPブロックの論理機能のブール代数表示(ゲート、スタンダード・セル)である。NOCは、例えば、Verilog(IBM社の商標)またはVHDLのようなハードウェア記述言語で記述された合成可能な形でも実現され得る。ネットリストおよび合成可能インプリメンテーションに加えて、NOCは、より低いレベルの物理的記述で引き渡されることもできる。SERDES、PLL、DAC、ADCなどのようなアナログIPブロック要素は、GDSIIのようなトランジスタ−レイアウト・フォーマットで配布され得る。IPブロックのデジタル要素は、時には、レイアウト・フォーマットでも提供される。IPブロックが、本発明に従って実現される他の論理回路と同じく、そのようなロジックを実行する回路装置の機能またはレイアウトあるいはその両方をいろいろなレベルのディテールで定義する、例えばロジック定義プログラム・コードなどの、コンピュータ・データ・ファイルの形で配布され得るということも理解されるであろう。従って、本発明は、完全に機能する集積回路装置とそのような装置を利用するデータ処理システムとにおいて実現される回路装置の文脈で記載され、また以下で記載されるであろうけれども、本開示の恩恵を受けた当業者は、本発明に従う回路装置がいろいろな形のプログラム製品として配布され得ること、および、該配布を実際に行うために特定のタイプのコンピュータ可読媒体または信号担持媒体が使用されることとは無関係に本発明が同様に適用されることを理解するであろう。コンピュータ可読媒体または信号担持媒体の例は、揮発性および不揮発性の記憶装置、フレキシブル・ディスク、ハード・ディスク・ドライブ、CD−ROM、およびDVD(他にもある)のような物理的な記録可能型媒体と、デジタルおよびアナログの通信リンクのような伝送型媒体とを含むが、これらに限定されない。
図2の例の各IPブロック104はメモリ通信コントローラ106を通してルータ110に適合させられている。各メモリ通信コントローラは、IPブロックとメモリとの間のデータ通信を提供するようにされている同期および非同期の論理回路の集合体である。IPブロックとメモリとの間のそのような通信の例は、メモリ・ロード命令およびメモリ・ストア命令である。メモリ通信コントローラ106については、以下で図3に関してより詳しく記載される。各IPブロック104はネットワーク・インターフェース・コントローラ108を通してもルータ110に適合させられており、これはルータ110を通してのIPブロック104間の通信を制御する。IPブロック間の通信メッセージの例は、パラレル・アプリケーションおよびパイプライン・アプリケーションにおいてIPブロック間でデータと該データを処理するための命令とを運ぶメッセージを含む。ネットワーク・インターフェース・コントローラ108についても、以下で図3に関してより詳しく記載される。
ルータ110と、それらの間の対応するリンク118とは、NOCのネットワーク動作を実行する。リンク118は、全てのルータを接続する物理的な並列ワイヤ・バスで実現されるパケット構造であり得る。すなわち、各リンクは、全てのヘッダ情報およびペイロード・データを含む1つのデータ・スイッチング・パケット全体を同時に収容するのに充分に広いワイヤ・バスで実現され得る。例えば、1つのパケット構造が8バイトのヘッダと56バイトのペイロード・データとを含んで、64バイトを含むならば、各リンクに対するワイヤ・バスは64バイト幅、512本のワイヤである。さらに、各リンクは双方向性であり得るので、リンク・パケット構造が64バイトを含む場合には、ワイヤ・バスは、実際には、ネットワーク内で各ルータとその隣の各々のものとの間に1024本のワイヤを含む。そのようなインプリメンテーションでは、メッセージは1パケットより多くを包含し得るけれども、各パケットはワイヤ・バスの幅に正確に納まるであろう。あるいは、例えばリンクが16バイト幅として、すなわち128ワイヤとして、実現される場合に64バイトのパケットが4ビートに分解され得るなどして、パケットが複数のビートに分解されるように、リンクは1つのパケットの一部分を収容するのに十分であるに過ぎない幅を有するワイヤ・バスで実現され得る。実際的な物理的限界と所望の性能特性とに基づいて、種々のインプリメンテーションが種々のバス幅を用い得るということが理解されるであろう。ルータとワイヤ・バスの各セクションとの間の接続部がポートと称されるのであれば、各ルータは5つのポート、すなわち、ネットワーク上のデータ伝送の4つの方向の各々に1つずつのポートと、該ルータをメモリ通信コントローラおよびネットワーク・インターフェース・コントローラを通して特定のIPブロックに適合させるための第5のポートと、を含む。
各メモリ通信コントローラ106は、IPブロックとメモリとの間の通信を制御する。メモリは、オフチップ・メインRAMであるオフチップ・メモリ112と、メモリ通信コントローラ106を通してIPブロックに直接接続されたメモリ114と、IPブロックとして作動可能にされるオンチップ・メモリ116と、オンチップ・キャッシュとを含むことができる。NOC102において、例えばオンチップ・メモリ114,116のいずれも、オンチップ・キャッシュ・メモリとして実現され得る。これらの全ての形のメモリは、同じアドレス空間、物理アドレスまたは仮想アドレス、に配置されることができ、これはIPブロックに直接取り付けられているメモリにも当てはまる。従って、そのようなメモリはネットワーク上のどこのどのIPブロックからも直接アドレス指定され得るので、メモリ・アドレス指定されたメッセージ(memory addressed messages)はIPブロックに関しては完全に双方向性であり得る。IPブロック上のメモリ116は、そのIPブロックから、あるいはNOC内の他の任意のIPブロックから、アドレス指定され得る。メモリ通信コントローラに直接取り付けられているメモリ114は、そのメモリ通信コントローラによってネットワークに適合させられているIPブロックによりアドレス指定されることができ、また、NOC内のどこの他のどのIPブロックからもアドレス指定されることができる。
NOC102は、本発明の実施態様に従うNOCのための2つの代替メモリ・アーキテクチャを示す2つのメモリ管理ユニット(‘MMU')120,122を含む。MMU120はIPブロック内で実現され、該IPブロック内のプロセッサが仮想メモリで動作することを可能にし、同時に、NOCの残りのアーキテクチャの全体が物理メモリ・アドレス空間で動作することを可能にする。MMU122はオフチップで実現され、データ通信ポート124を通してNOCに接続される。ポート124は、NOCと該MMUとの間で信号を伝えるのに必要なピンおよび他のインターコネクションと、メッセージ・パケットをNOCパケット・フォーマットから、外部のMMU122が必要とするバス・フォーマットへ変換するために充分なインテリジェンスとを含む。該MMUが外部に配置されているということは、NOCの全てのIPブロック内の全てのプロセッサが仮想メモリ・アドレス空間で動作することができ、オフチップ・メモリの物理アドレスへの全ての変換がオフチップMMU122によって処理されるということを意味する。
MMU120,122の使用により示される2つのメモリ・アーキテクチャのほかに、データ通信ポート126は、本発明の実施態様において利用され得るNOCにおいて役立つ第3のメモリ・アーキテクチャを示す。ポート126は、NOC102のIPブロック104とオフチップ・メモリ112との間の直接接続を提供する。処理経路中にMMUが無くて、このアーキテクチャは、NOCの全てのIPブロックによる物理アドレス空間の利用を提供する。該アドレス空間を双方向的に共有するとき、NOCの全IPブロックは、ポート126に直接接続されたIPブロックを通して向けられている(ロードおよびストアを含む)メモリ・アドレス指定されたメッセージによって該アドレス空間内のメモリにアクセスすることができる。ポート126は、NOCとオフチップ・メモリ112との間で信号を伝えるのに必要なピンおよび他のインターコネクションと、メッセージ・パケットをNOCパケット・フォーマットから、オフチップ・メモリ112が必要とするバス・フォーマットへ変換するために充分なインテリジェンスとを含む。
図2の例では、IPブロックのうちの1つはホスト・インターフェース・プロセッサ128と称される。ホスト・インターフェース・プロセッサ128は、NOCと、NOCがインストールされ得るホスト・コンピュータ10との間のインターフェースを提供し、また、例えば、ホストコンピュータからデータ処理リクエストを受け取ってNOCのIPブロック間でディスパッチすることを含むデータ処理サービスをNOC上の他のIPブロックに提供する。NOCは、例えば、図1に関して上で記載されたようにより大きなコンピュータ10においてビデオ・グラフィクス・アダプタ26またはコプロセッサ28を実現することができる。図2の例では、ホスト・インターフェース・プロセッサ128は、データ通信ポート130を通してより大きなホスト・コンピュータに接続されている。ポート130は、NOCとホスト・コンピュータとの間で信号を伝えるのに必要なピンおよび他のインターコネクションと、メッセージ・パケットをNOCフォーマットから、ホスト・コンピュータ10が必要とするバス・フォーマットへ変換するために充分なインテリジェンスとを含む。図1のコンピュータにおけるNOCコプロセッサの例では、そのようなポートは、NOCコプロセッサ28のリンク構造と、NOCコプロセッサ28およびバス・アダプタ18の間のフロント・サイド・バス36のために必要とされるプロトコルとの間のデータ通信フォーマット変換を提供する。
図3は、次に、全体として132のところに示されているNOC102内のIPブロック104、メモリ通信コントローラ106、ネットワーク・インターフェース・コントローラ108およびルータ110の中に実現されているコンポーネントをより詳しく示す機能ブロック図を示す。IPブロック104は、コンピュータ・プロセッサ134とI/O機能136とを含む。この例では、コンピュータ・メモリはIPブロック104内のランダム・アクセス・メモリ(‘RAM')138のセグメントにより表されている。該メモリは、図2に関して上で記載されたように、各IPブロック上のその内容がNOC内のどのIPブロックからもアドレス指定可能でアクセス可能である物理アドレス空間のセグメントを占めることができる。各IPブロック内のプロセッサ134、I/O機能136、およびメモリ138は、実際上、一般的にプログラマブルなマイクロコンピュータとしてIPブロックを実現する。しかし、上で説明されたように、本発明の範囲内では、IPブロックは、一般的に、NOC内でのデータ処理のためのビルディング・ブロックとして使用される同期または非同期のロジックの再使用可能な単位を表す。従って、一般的にプログラマブルなマイクロコンピュータとしてIPブロックを実現することは、説明の目的上有益なありふれた実施態様ではあるけれども、本発明の限定事項ではない。
図3のNOC102において、各メモリ通信コントローラ106は複数のメモリ通信実行エンジン140を含む。各メモリ通信実行エンジン140は、ネットワークとIPブロック104との間の双方向メモリ通信命令フロー141,142,144を含む、IPブロック104からのメモリ通信命令を実行するように作動可能にされる。メモリ通信コントローラにより実行されるメモリ通信命令は、特定のメモリ通信コントローラを通してルータに適合させられているIPブロックからだけではなくて、NOC102内のどこのどのIPブロック104からも生じ得る。すなわち、NOC内のどのIPブロックも、メモリ通信命令を生成し、そのメモリ通信命令を実行させるために、NOCのルータを通して、他のIPブロックに関連付けられた他のメモリ通信コントローラにそのメモリ通信命令を送ることができる。そのようなメモリ通信命令は、例えば、翻訳ルックアサイド・バッファ制御命令、キャッシュ制御命令、バリヤ命令、およびメモリ・ロード命令およびメモリ・ストア命令を含むことができる。
各メモリ通信実行エンジン140は、完全なメモリ通信命令を単独で、また他のメモリ通信実行エンジンと並行して、実行するように作動可能にされる。メモリ通信実行エンジンは、メモリ通信命令の同時並行スループットのために最適化されたスケーラブルなメモリ・トランザクション・プロセッサを実現する。メモリ通信コントローラ106は、複数のメモリ通信命令の同時実行のためにその全てが同時に動作する複数のメモリ通信実行エンジン140をサポートする。新しいメモリ通信命令はメモリ通信コントローラ106によってメモリ通信実行エンジン140に割り当てられ、メモリ通信実行エンジン140は同時に複数のレスポンス・イベントを受け入れることができる。この例では、メモリ通信実行エンジン140の全てが同一である。従って、メモリ通信コントローラ106によって同時に処理され得るメモリ通信命令の数を増減することは、メモリ通信実行エンジン140の数を増減することにより実行される。
図3のNOC102において、各ネットワーク・インターフェース・コントローラ108は、通信命令をコマンド・フォーマットからルータ110を通してのIPブロック104間での伝送のためのネットワーク・パケット・フォーマットに変換するように作動可能にされる。通信命令は、IPブロック104またはメモリ通信コントローラ106によりコマンド・フォーマットに定式化され、コマンド・フォーマットでネットワーク・インターフェース・コントローラ108に提供され得る。コマンド・フォーマットは、IPブロック104およびメモリ通信コントローラ106のアーキテクチュラル・レジスタ・ファイルに従うネイティブ・フォーマットであり得る。ネットワーク・パケット・フォーマットは、通例、ネットワークのルータ110を通しての伝送のために必要とされるフォーマットである。そのような各々のメッセージは、1つ以上のネットワーク・パケットから構成される。ネットワーク・インターフェース・コントローラにおいてコマンド・フォーマットからパケット・フォーマットに変換されるそのような通信命令の例は、IPブロックとメモリとの間のメモリ・ロード命令およびメモリ・ストア命令を含む。そのような通信命令は、また、並列のアプリケーションおよびパイプライン化されたアプリケーションにおいてIPブロック間でデータと該データを処理するための命令とを運ぶメッセージをIPブロック間で送る通信命令をも含むことができる。
図3のNOC102において、各IPブロックは、メモリからの、またメモリへの、メモリ−アドレス−ベースの通信メッセージを、該IPブロックのメモリ通信コントローラを通して、その後にまたそのネットワーク・インターフェース・コントローラを通して、ネットワークに送るように作動可能にされる。メモリ−アドレス−ベースの通信メッセージは、IPブロックのメモリ通信コントローラのメモリ通信実行エンジンにより実行される、ロード命令またはストア命令のような、メモリ・アクセス命令である。このようなメモリ−アドレス−ベースの通信メッセージは、通例、IPブロックにおいて生じ、コマンド・フォーマットに定式化され、実行のためにメモリ通信コントローラに渡される。
アクセスされるべきどのメモリも、NOC内の任意のメモリ通信コントローラに直接取り付けられるか、あるいは、どのIPブロックがどの特定のメモリ−アドレス−ベースの通信メッセージを生じさせたかに関わらず最終的にはNOCの任意のIPブロックを通してアクセスされるオンチップあるいはオフチップの物理メモリ・アドレス空間内のどこにでも位置することができるので、多くのメモリ−アドレス−ベースの通信メッセージはメッセージ・トラフィックで実行される。従って、NOC102では、メッセージ・トラフィックで実行される全てのメモリ−アドレス−ベースの通信メッセージは、コマンド・フォーマットからパケット・フォーマットに変換されてネットワークを通してメッセージで伝送されるべくメモリ通信コントローラから関連するネットワーク・インターフェース・コントローラに送られる。パケット・フォーマットに変換するとき、ネットワーク・インターフェース・コントローラは、メモリ−アドレス−ベースの通信によりアクセスされるべき1つまたは複数のメモリ・アドレスに依存して該パケットのためのネットワーク・アドレスも特定する。メモリ−アドレス−ベースの通信メッセージは、メモリ・アドレスでアドレス指定される。各メモリ・アドレスは、ネットワーク・インターフェース・コントローラによって、ネットワーク・アドレスに、通例、ある範囲の物理メモリ・アドレスについて担当するメモリ通信コントローラのネットワーク位置に、マッピングされる。メモリ通信コントローラ106のネットワーク位置は、当然に、そのメモリ通信コントローラの関連するルータ110、ネットワーク・インターフェース・コントローラ108、およびIPブロック104のネットワーク位置でもある。各ネットワーク・インターフェース・コントローラ内の命令変換ロジック150は、メモリ−アドレス−ベースの通信メッセージをNOCのルータを通して伝送する目的のためにメモリ・アドレスをネットワーク・アドレスに変換することができる。
ネットワークのルータ110からメッセージ・トラフィックを受け取ると、各ネットワーク・インターフェース・コントローラ108はメモリ命令を求めて各パケットを検査する。メモリ命令を含む各パケットは、受信したネットワーク・インターフェース・コントローラに関連するメモリ通信コントローラ106に渡され、それは、該パケットの残りのペイロードをさらなる処理のためにIPブロックに送る前に該メモリ命令を実行する。このように、メモリ内容は常に、IPブロックが特定のメモリ内容に依存するメッセージからの命令の実行を開始する前に、該IPブロックによるデータ処理をサポートするために用意される。
図3のNOC102においては、各IPブロック104は、そのメモリ通信コントローラ106を迂回してIPブロック間のネットワーク・アドレス指定された通信メッセージ146を該IPブロックのネットワーク・インターフェース・コントローラ108を通してネットワークに直接送るように作動可能にされる。ネットワーク・アドレス指定された通信メッセージは、ネットワーク・アドレスによって他のIPブロックに向けられるメッセージである。そのようなメッセージは、当業者が想到するであろうように、パイプライン化されたアプリケーションにおける作業データ、SIMDアプリケーションにおけるIPブロック間でのシングル・プログラム処理のためのマルチプル・データなどを送る。そのようなメッセージは、該メッセージがNOCのルータを通して向けられるべきネットワーク・アドレスを知っている発信IPブロックにより初めからネットワーク・アドレス指定されるという点で、メモリ−アドレス−ベースの通信メッセージとは異なる。そのようなネットワーク・アドレス指定された通信メッセージは、IPブロックによりI/O機能136を通して該IPブロックのネットワーク・インターフェース・コントローラにコマンド・フォーマットで直接送られ、その後に該ネットワーク・インターフェース・コントローラによってパケット・フォーマットに変換されてNOCのルータを通して他のIPブロックに送られる。そのようなネットワーク・アドレス指定された通信メッセージ146は双方向性であって、特定のアプリケーションにおけるその使用に依存してNOCの各IPブロックへ、またNOCの各IPブロックから、進む可能性がある。しかし、各ネットワーク・インターフェース・コントローラはそのような通信メッセージを、関連するルータに送り、またそれから受け取るように作動可能にされ、各ネットワーク・インターフェース・コントローラは、関連するメモリ通信コントローラ106を迂回して、そのような通信メッセージを、直接に、関連するIPブロックに送り、またそれから受け取るように作動可能にされる。
図3の例において各ネットワーク・インターフェース・コントローラ108は、ネットワーク上に仮想チャネルを実現し、ネットワーク・パケットをタイプにより特徴付けるようにも作動可能にされる。各ネットワーク・インターフェース・コントローラ108は仮想チャネル実現ロジック148を含み、これは、各通信命令をタイプにより分類して、命令のタイプを、該命令をNOC上で伝送させるべくパケットの形でルータ110に渡す前に、ネットワーク・パケット・フォーマットのフィールドに記録する。通信命令のタイプの例は、IPブロック間ネットワーク−アドレス−ベース・メッセージ、リクエスト・メッセージ、リクエスト・メッセージに対するレスポンス、キャッシュに向けられた無効化メッセージ、メモリ・ロード・メッセージおよびメモリ・ストア・メッセージ、およびメモリ・ロード・メッセージに対するレスポンスなどを含む。
図3の例において各ルータ110は、経路指定ロジック152、仮想チャネル制御ロジック154、および仮想チャネル・バッファ156を含む。経路指定ロジックは、通例、ルータ110と、リンク118と、ルータ間のバス・ワイヤとにより形成されるネットワークにおけるデータ通信のためにデータ通信プロトコル・スタックを実現する同期および非同期のロジックのネットワークとして実現される。経路指定ロジック152は、当該技術分野に精通した読者がオフチップ・ネットワークにおいて経路指定テーブルと関連付けて考えるかもしれない機能を含むが、経路指定テーブルは少なくとも或る実施態様においてはNOCで用いるにはあまりにも低速で扱いにくいと考えられる。同期および非同期のロジックのネットワークとして実現される経路指定ロジックは、単一クロック・サイクルと同じ速さで経路指定決定を行うように構成され得る。この例では経路指定ロジックは、ルータで受け取られた各パケットを転送するためのポートを選択することによってパケットのための経路を指定する。各パケットは、該パケットがそれに向けて経路指定されるべきところのネットワーク・アドレスを含む。
上でメモリ−アドレス−ベースの通信メッセージを記述したとき、各メモリ・アドレスは、ネットワーク・インターフェース・コントローラによってネットワーク・アドレス、メモリ通信コントローラのネットワーク位置、にマッピングされると記述された。メモリ通信コントローラ106のネットワーク位置は、当然に、そのメモリ通信コントローラの関連するルータ110、ネットワーク・インターフェース・コントローラ108、およびIPブロック104のネットワーク位置でもある。従って、IPブロック間の、あるいはネットワーク−アドレス−ベースの通信メッセージにおいては、アプリケーション・レベルのデータ処理がネットワーク・アドレスを、NOCのルータ、リンクおよびバス・ワイヤにより形成されるネットワークの中でのIPブロックの位置と見なすのも典型的なことである。図2は、そのようなネットワークの1つの組織が行および列のメッシュであって、その中では各ネットワーク・アドレスが例えば該メッシュの関連するルータ、IPブロック、メモリ通信コントローラ、およびネットワーク・インターフェース・コントローラの各セットのための一意識別子として、あるいは該メッシュにおける各々のそのようなセットのx、y座標として、実現され得るということを示している。
図3のNOC102において、各ルータ110は2つ以上の仮想通信チャネルを実現し、その各仮想通信チャネルは通信タイプにより特徴付けられる。通信命令タイプは、従って仮想チャネル・タイプは、上記のもの、すなわち、IPブロック間ネットワーク−アドレス−ベース・メッセージ、リクエスト・メッセージ、リクエスト・メッセージに対するレスポンス、キャッシュに向けられた無効化メッセージ、メモリ・ロード・メッセージおよびメモリ・ストア・メッセージ、およびメモリ・ロード・メッセージに対するレスポンスなどを含む。仮想チャネルをサポートするために、図3の例において各ルータ110は、仮想チャネル制御ロジック154および仮想チャネル・バッファ156も含む。仮想チャネル制御ロジック154は、各々の受け取られたパケットを、それに割り当てられた通信タイプを目的として調べて、ポートを通してNOC上の隣接するルータへ送るために各パケットをその通信タイプのための発信仮想チャネル・バッファに置く。
各仮想チャネル・バッファ156は有限の記憶空間を有する。多数のパケットが短時間のうちに受信されると、仮想チャネル・バッファは満杯になって、パケットをそれ以上そのバッファに入れることはできなくなる可能性がある。他のプロトコルでは、そのバッファが満杯になっている仮想チャネルに到着したパケットは落とされるであろう。しかし、この例における各仮想チャネル・バッファ156は、仮想チャネルでの送信を中断するように、すなわち特定の通信タイプのパケットの送信を中断するように、仮想チャネル制御ロジックを通して周囲のルータに通知するようにバス・ワイヤの制御信号で作動可能にされる。1つの仮想チャネルがそのように中断されているとき、他の全ての仮想チャネルは影響を受けなくて全容量で動作し続けることができる。制御信号は、各ルータを通して各ルータに関連するネットワーク・インターフェース・コントローラ108まではるばる逆戻りして電送される。各ネットワーク・インターフェース・コントローラは、そのような信号を受信すると、それに関連するメモリ通信コントローラ106からの、あるいはそれに関連するIPブロック104からの、中断された仮想チャネルについての通信命令を受け入れることを拒否するように構成されている。このようにして、仮想チャネルの中断は、はるばる発信IPブロックまでさかのぼって、その仮想チャネルを実現している全てのハードウェアに影響を及ぼす。
仮想チャネルにおいてパケット伝送を中断させることの1つの効果は、落とされるパケットが全く無いことである。例えばインターネット・プロトコルのような信頼できないプロトコルにおいてパケットが落とされるかもしれないという事態にルータが遭遇したとき、図3の例のルータは、自分たちの仮想チャネル・バッファ156および自分たちの仮想チャネル制御ロジック154によって仮想チャネルにおけるパケットの全ての伝送を、バッファ・スペースが再び利用できるようになるまで、中断させることができて、パケットを落とす必要を無くすることができる。従って、図3のNOCは、非常に信頼性の高いネットワーク通信プロトコルをハードウェアの極めて薄い層で実行することができる。
図3の例としてのNOCは、オンチップおよびオフチップの両方のメモリ・キャッシュの間のキャッシュ・コヒーレンシーを維持するようにも構成され得る。各NOCは、その各々が同じ下にあるメモリ・アドレス空間に対して動作する複数のキャッシュをサポートすることができる。例えば、キャッシュは、IPブロックにより、メモリ通信コントローラにより、あるいはNOCの外部のキャッシュ・コントローラにより、制御されることができる。図2の例におけるオンチップ・メモリ114,116のいずれも、オンチップ・キャッシュとしても実現されることができ、また、本発明の範囲内で、キャッシュ・メモリはオフチップで実現されることもできる。
図3に示されている各ルータ110は5個のポートを含み、4個のポート158A−158Dはバス・ワイヤ118を通して他のルータに接続され、第5のポート160は各ルータを、それに関連するIPブロック104に、ネットワーク・インターフェース・コントローラ108およびメモリ通信コントローラ106を通して、接続する。図2および3のイラストから分かるように、NOC102のルータ110およびリンク118は、縦リンクおよび横リンクが各ルータの縦ポートおよび横ポートを連結するメッシュ・ネットワークを形成する。図3のイラストでは、例えば、ポート158A、158Cおよび160は縦ポートと呼ばれ、ポート158Bおよび158Dは横ポートと呼ばれる。
次に図4は、命令ユニット(IU)162、実行ユニット(XU)164および補助実行ユニット(AXU)166に分割された処理エレメントとして実現された、本発明に従うIPブロック104の1つの代表的インプリメンテーションを他の仕方で示す。図示されたインプリメンテーションでは、IU162は、L1命令キャッシュ(iCACHE)170から命令を受け取る複数の命令バッファ168を含む。各命令バッファ168は、複数の、例えば4つの、対称的マルチスレッド(symmetric multithreaded(SMT))ハードウェア・スレッドのうちの1つのために専用される。実効−実・変換ユニット(iERAT)172が、iCACHE170に結合され、複数のスレッド・フェッチ・シーケンサ174からの命令フェッチ・リクエストを、下位メモリからの命令の検索のために、実アドレスに変換するために使用される。各スレッド・フェッチ・シーケンサ174は、特定のハードウェア・スレッドのために専用され、関連するスレッドにより実行されるべき命令が適切な実行ユニットへのディスパッチのためにiCHACHEにフェッチされることを保証するために使用される。また図4に示されているように、命令バッファ168にフェッチされる命令は分岐予測ロジック176により監視されることもでき、これは、スレッドを実行するときの分岐から生じる命令キャッシュ・ミスを最少化するために各スレッド・フェッチ・シーケンサ174にヒントを提供する。
IU162は依存性/発行(dependency/issue)ロジック・ブロック178も含み、これは、各ハードウェア・スレッドのために専用され、依存性を分解して命令バッファ168からXU164への命令の発行を制御するように構成されている。さらに、図示されている実施態様では、別の依存性/発行ロジック180がAXU166に設けられており、このようにして別々の命令が異なるスレッドによりXU164およびAXU166に対して同時に発行されることを可能にしている。1つの代わりの実施態様では、ロジック180は、IU162に配置されることができ、あるいは、ロジック178が命令をAXU166に対して発行するように、その全体が省略されることができる。
XU164は、固定小数点実行ユニットとして実現され、固定小数点ロジック184、分岐ロジック186およびロード/ストア・ロジック188に結合された汎用レジスタ(GPR)182のセットを含む。ロード/ストア・ロジック188はL1データ・キャッシュ(dCACHE)190に結合され、実効から実への変換がdERATロジック192により提供される。XU164は、例えば32bまたは64bのPowerPC(IBM社の登録商標)命令セットの全体または一部分など、実際上どのような命令セットも実行するように構成され得る。
AXU166は、1つ以上の実行ブロック194とともに専用の依存性/発行ロジック180を含む補助実行ユニットとして動作する。AXU166は、任意の数の実行ブロックを含むことができ、また、例えば浮動小数点ユニット、または、暗号化/解読ユニット、コプロセッサ、ベクトル処理ユニット、グラフィクス処理ユニット、XML処理ユニットなどのような1つ以上の専用実行ユニットなどの、実際上如何なるタイプの実行ユニットも実現することができる。図示されている実施態様では、AXU166は、例えば、AXU構成状態(AXU architected state)とXU構成状態(XU architected state)との間の直接的移動をサポートするために、XU164に対する高速補助インターフェースを含む。
IPブロック104との通信は、NOC102に結合されたネットワーク・インターフェース・コントローラ108を介して、図2に関して上で論じられた仕方で管理され得る。例えばL2キャッシュ・メモリにアクセスするためのアドレス・ベースの通信が、メッセージ・ベースの通信とともに、提供され得る。例えば、各IPブロック104は、IPブロック間のノード間通信を処理するために専用の受信箱または送信箱あるいはその両方を含むことができる。
本発明の実施態様は、図1−4と関連して上に記載されたハードウェアおよびソフトウェア環境の中で実現され得る。しかし、本発明が多くの異なる環境で実現され得ること、また、本発明の真意および範囲から逸脱せずに上記のハードウェアおよびソフトウェア実施態様に対して他の改変を成し得ることを、本開示の恩恵を受けた当業者は理解するであろう。従って、本発明は、本書に開示された特定のハードウェアおよびソフトウェア環境に限定されない。
動的値域調整浮動小数点実行ユニット
次に図5に目を向けると、この図は、本発明に従う動的値域調整浮動小数点実行ユニット202を組み込んだ代表的な処理ユニット200を示す。処理ユニット200は、例えば、図1−4のIPブロック104のようなIPブロックにおいてプロセッサ・コアとして実現され得る。あるいは、処理ユニット200は、シングル・コアまたはマルチ・コアのマイクロプロセッサまたはマイクロコントローラを含む、命令を発し実行する他のプロセッサ・アーキテクチャにおいて実現され得る。
動的値域調整浮動小数点実行ユニット202は、発行ユニット204から浮動小数点命令を受け取るベクトル浮動小数点実行ユニットとして実現される。発行ユニット204は、206のところに示されている複数(N)のスレッドからの命令を発行することのできる発行選択ロジック208を含む。発行選択ロジック208は、種々のスレッドによる命令の発行をスケジュールするように動作し、当該技術分野で一般的に理解されている仕方で命令間の依存性を管理するためのロジックを通例含む。複数の実行ユニット202がサポートされるときには、発行選択ロジック208は、各サイクルに複数の命令を複数の実行ユニットに発行することもできる。しかし、ある実施態様では、唯一の実行ユニットがサポートされることができ、さらに、ある実施態様では命令のマルチ・スレッド発行はサポートされることができない。
動的値域調整浮動小数点実行ユニット202は、発行ユニット204により該実行ユニットに対して発行された命令を処理し、マルチ・ステージ実行パイプライン212に結合されたレジスタ・ファイル210を含み、マルチ・ステージ実行パイプライン212は、発行ロジック202により発行された命令に基づいてレジスタ・ファイル210に格納されているデータを処理して、ターゲット・データを該レジスタ・ファイルに返して格納することができる。実行ユニット202は、例えば、一般的な浮動小数点ユニット、あるいは、グラフィクス処理ユニット、暗号化/解読ユニット、コプロセッサ、XML処理ユニットなどのような専門化した実行ユニットなどの幾つかの異なるタイプの実行ユニットとして実現されることができ、また、ベクトル・ベースのあるいはスカラー・ベースのユニットとして実現されることができる。さらに、本発明に従う動的値域調整浮動小数点実行ユニット202は、ある実施態様では単一の処理レーンを含むことができる。
例えば、図5に示されているインプリメンテーションでは、マルチ・ステージ実行パイプライン212は、例えば画像処理に使用されることのある、発行ユニット204により実行ユニットに対して発行された単一命令多重データ(SIMD)命令を処理するベクトル浮動小数点ユニットとして実現される。レジスタ・ファイル210は、複数(例えば4)のワードを各々含む複数(例えば、128)のベクトル・レジスタ214を含む。浮動小数点値を選択されたレジスタに書き込み、また、選択されたレジスタの内容をパイプライン212に処理のために出力するために複数のレジスタ・ファイル入力および出力(図示されていない)が設けられる。浮動小数点ベクトルをパイプラインに処理のために提供するために複数のオペランド入力216がレジスタ・ファイル210とマルチ・ステージ実行パイプライン212との間に設けられている。パイプライン212は、レジスタ・ファイル210に格納されているベクトルを発行ユニット204により発行された命令に基づいて処理してターゲット・データをレジスタ・ファイル210内のベクトル・レジスタに返して格納することのできる複数(例えば、4)の処理レーンまたはサブ・ユニット218を含む。
実行ユニット202の構成が画像処理アプリケーションに用いることのできる浮動小数点ユニットとして与えられたならば、各処理レーン218は浮動小数点命令を処理するように構成される。代わりに多様な他の浮動小数点アーキテクチャが使用され得るけれども、実行ユニット202は、A,BおよびCと表示される3つのベクトル・オペランドを操作することのできるパイプライン型浮動小数点実行アーキテクチャを含む。ベクトル演算のために、4つの32ビット・ワード・ベクトルがサポートされ、各ベクトル内のワードはX,Y,ZおよびWとして表示され、そしてそのようなものとして、各処理レーン218は各ベクトルから1つずつ、3つのオペランド・ワードを受け取る。例えば、各ベクトルからのXワードを処理する処理レーン218については、その処理レーンに供給されるオペランドはAx,BxおよびCxと表示される。
各処理レーン218は、1つ以上の他の処理レーンと並行して演算を行うように構成されている。例えば、各処理レーンは、外積演算または内積演算を行うために1対のオペランドを掛け合わせることができる。ベクトル・ユニットの異なる処理レーンでオペランドの異なる対を掛け合わせることによって、ベクトル演算がより速く且つ効率よく実行され得る。
各処理レーン218は、性能をさらに高めるためにパイプライン化されてもいる。従って、各処理レーン218は、オペランドに対して1つ以上の演算を実行するための複数のパイプライン・ステージを含む。例えば、第1ステージのために、各処理レーンは、AオペランドとCオペランドとを掛け合わせるための乗算器220を含むことができる。本発明の一実施態様では、図5に示されているようにオペランドの乗算はパイプラインの第1ステージで実行され得る。
各処理レーン218は、積の計算と並行して、オペランドBを乗算器220により計算された積とアラインさせるためのアライナ機構222も含むことができる。図5においてはアラインメントは同じパイプライン・ステージに示されているけれども、他の実施態様では乗算とアラインメントとは別々のパイプライン・ステージで実行され得ることを当業者は認めるであろう。
各処理レーン218は、2つ以上のオペランドを加え合わせるための加算器224も含むことができる。(図5に示されている)1つの実施態様では、各加算器224は乗算器220により計算された積(和および桁上げ(a sum and carry)として出力される)を受け取って、その積を、アライナ機構222により出力されたアラインされたオペランドに加算する。従って、各処理レーン218は乗算・加算命令を実行するように構成され得る。当業者は、乗算・加算命令がベクトル演算でよく実行されることを認めるであろう。従って、数個の乗算・加算命令を並列のレーンで実行することによってベクトル処理の効率が顕著に改善され得る。
各ベクトル処理レーン218は、図5に示されているように、正規化ステージと丸めステージとをも含むことができる。従って、正規化器226が各処理レーンに設けられ得る。正規化器226は、計算された値を便利な指数フォーマットで表すように構成され得る。例えば、正規化器226は値0.0000063を演算の結果として受け取ることができる。正規化器226は、この値を、より適切な指数フォーマット、例えば6.3×10−6、に変換することができる。丸めステージは、計算された値を所望の小数点数に丸めることのできる丸め器228を組み入れることができる。例えば、10.5682349という計算された値は、もし3小数位だけが望まれるのであれば、10.568に丸められることができる。本発明の一実施態様では、丸め器228は、該丸め器がそれに対して作用するように構成されているところの特定精度の浮動小数点数の最下位ビットを丸めることができる。
本発明の実施態様が、上にまた図5に記載された特定のパイプライン・ステージ、コンポーネント、およびコンポーネントの配置に限定されないことを当業者は認めるであろう。例えば、ある実施態様では、アライナ機構222は、オペランドB、乗算器220により計算された積、あるいは両方をアラインさせるように構成され得る。さらに、本発明の実施態様は、図5に記載されている特定のコンポーネントに限定されない。図示されたコンポーネントと、先行ゼロ予測器(leading zero anticipators)、除算器など(これらに限定されない)のような付加的なコンポーネントとの任意の組み合わせが、本発明に従う各処理レーン218に含まれ得る。
動的値域調整浮動小数点実行ユニット202は、第1タイプの浮動小数点命令の実行中は第1浮動小数点フォーマットが使用され、第2タイプの浮動小数点命令の実行中は第2タイプの浮動小数点フォーマットが使用されるように、複数の浮動小数点フォーマットをサポートする。図示されている実施態様では、その2つの浮動小数点フォーマットは、同じサイズの浮動小数点値(例えば、32ビット)に基づくけれども、一方のフォーマットにおいては仮数ビットとして使用されるビットの一部分が他方のフォーマットにおいては指数ビットとして使用されるべく再利用されるという点で異なっている。
例えば、図6において240のところに示されているように、1つの実施例では、拡張値域浮動小数点フォーマットはIEEE745単精度(非拡張)浮動小数点フォーマットに類似して構成され得る。IEEE745単精度フォーマットでは、8ビット単精度(Single Precision(SP))指数フィールドおよび23ビットSP仮数フィールドとともに1ビット符号フィールドが設けられる。拡張値域浮動小数点フォーマットは依然として合計32ビットを使用するけれども、IEEE745単精度フォーマットからの仮数フィールドは第1部分242および第2部分244に分解され、その第1部分は拡張値域(Extended Range(ER))指数フィールドのために11ビットを提供するためにSP指数フィールドと連結され、SP仮数フィールドの第2部分244の残りの20ビットはER仮数フィールドとして使用される。さらに、その追加の指数ビットに基づいて、指数バイアスは十進の1023となり、これは、重要なことに、倍精度浮動小数点値のために使用されるのと同じバイアスでもある。
図示されている実施態様では、単精度フォーマットに基づく浮動小数点命令は非拡張値域浮動小数点命令と称され、拡張値域フォーマットに基づく浮動小数点命令は拡張値域浮動小数点命令と称される。従って、実行ユニット202が非拡張値域浮動小数点命令を実行するとき、オペランドとして提供されたどの浮動小数点値も、指数フィールドに格納されているデータを指数として使用するとともに仮数フィールドの第1部分および第2部分に格納されているデータを仮数として使用するべく連結するために、復号される。対照的に、実行ユニット202が拡張値域浮動小数点命令を実行するときには、オペランドとして提供されたどの浮動小数点値も、指数フィールドと仮数フィールドの第1部分とに格納されているデータを指数として使用するべく連結するとともに仮数フィールドの第2部分に格納されているデータを仮数として使用するために、復号される。
図示されている実施態様で利用される値域拡張フォーマットは、単精度数を用いて普通はオーバーフローする演算を実行することを可能にし、さらに倍精度ユニットより遥かに少ない回路面積を消費し、単精度ユニットとほぼ同じ性能を有する。さらに、このフォーマットを収容するために余分のメモリ領域は通例不要である。さらに、単精度ユニットにおいて拡張値域フォーマットのためのサポートを実現するのに必要な回路変更は通例本質的に極めて僅かである。
例えば、図7は、浮動小数点値の指数部分および仮数部分に対して使用される浮動小数点処理ロジックをそれぞれ表す指数経路252および仮数経路254を含む代表的浮動小数点実行ユニット250の一部分の簡略表現を示す。この表現では、単一のオペランド入力だけが示されているが、複数の入力オペランドが通例サポートされるであろうということが理解されるであろう。8ビット指数経路を通例含む単精度浮動小数点ユニットとは異なって、浮動小数点実行ユニット250は11ビット指数経路252を含む。しかし、単精度ユニットと実行ユニット250との両方が23ビット仮数経路を通例含む。
実行ユニット250が非拡張値域/単精度モードまたは拡張値域モードで動作するように実行ユニット250のモードを制御するために拡張値域モード制御ロジック・ブロック256が使用される。ブロック256は、指数経路252および仮数経路254にそれぞれ結合されている1対のマルチプレクサ258および260を制御することにより、そのように動作する。
指数経路に関して、マルチプレクサ258は、最上位ビットとしての“000b”と連結された指数フィールドからのビットを選択して実際上8ビットの指数をもたらすこと(非値域拡張モードで)、あるいは最下位ビットとしての仮数フィールドの先頭の部分からの3ビットと連結された指数フィールドからのビットを選択して11ビットの指数をもたらすこと(値域拡張モードで)のいずれかを選択する。仮数経路に関して、マルチプレクサ260は、仮数フィールドの第1部分および第2部分からの23ビット(非値域拡張モードで)、あるいは、仮数フィールド内のビットを左へ3ビットだけシフトさせて“000b”の値を最下位ビットとしてシフトインするシフト・ロジック262の出力(値域拡張モードで)のいずれかを選択する。仮数経路254は符号フィールドも受け取り、これは該2つのモード間で変化しない。
例えば、代表的な“01011011110010111101000011100110”という32ビット浮動小数点値について、この値の単精度/非拡張値域復号は、“00010110111”という指数と“1.0010111101000011100110”という仮数とをもたらす。しかし、拡張値域フォーマットでは、この値は、“10110111100”という指数と“1.0111101000011100110000”という仮数とを有するように復号される。
重要なことに、図示されている実施態様においては浮動小数点値を、フォーマットに関わらず、同じフォーマットでレジスタ・ファイル210に格納することが望ましいかもしれない。従って、拡張値域フォーマット浮動小数点値の仮数ビットが浮動小数点実行ユニットの仮数経路による処理の前に左へ1ビット以上シフトされるのと全く同様に、実行ユニットにより出力された結果浮動小数点値の仮数ビットを、結果をレジスタ・ファイルに格納する前に、同じビット数だけ右へシフトさせることも望ましいかもしれない。
例えば、図5に戻って、実行ユニット202において、マルチ・ステージ実行パイプライン212は、結果浮動小数点ベクトルの形のターゲット・データ230を出力する。実行ユニットが拡張値域浮動小数点命令を処理している時に浮動小数点値の仮数ビットを右および左へそれぞれシフトさせるシフト・ロジック(232および234のところに示されている)が実行ユニット202内に設けられている。シフト・ロジック234は、結果浮動小数点値がその次の浮動小数点命令により使用される時にレジスタ・ファイルを迂回するために浮動小数点実行ユニットにおいて普通使用されているバイパス・ロジックと組み合わされ、従ってシフト・ロジック234はターゲット・データ230も受け取る。
図8は、シフト・ロジック232および234をより詳しく示す。この図では、単一の処理レーン218だけが図示されており、別々の指数経路および仮数経路、また、指数経路に配置される連結ロジック(図7に関連して論じられた)は、理解を容易にするために示されていない。しかし、11ビット指数経路および図7に関連して上で述べられたものと同様の連結ロジックも実行ユニット202において通例使用されることが理解されるであろう。
従って、シフト・ロジック232はマルチプレクサ270を含み、これは、非拡張値域結果浮動小数点ベクトルについては、対応するワードを、230のところの結果浮動小数点ベクトル出力から直接にベクトル・レジスタ・ファイル210へ、そのままレジスタに格納されるように、送る。しかし、拡張値域結果浮動小数点ベクトルについては、指数フィールドの最下位3ビットが仮数フィールドの先頭部分に書き込まれ得るように、対応するワードの仮数フィールドを右へ3ビットシフトさせ(かつ3個のLSBを廃棄する)ために右シフト・ロジック272が使用される。
実行ユニット202が3個のオペランド・ベクトルを受け取るとすると、シフト・ロジック234は、非拡張値域浮動小数点オペランドについては浮動小数点ベクトル・オペランドからの対応するワードを変化させずに通過させる3個のマルチプレクサ274を含む。しかし、拡張値域浮動小数点オペランドについては、仮数をパイプラインの仮数経路と適切にアラインさせるべく対応するワードの仮数フィールドを左へ3ビットだけシフトさせる(かつLSBとして“000b”を付け加える)ために左シフト・ロジック276が使用される。各マルチプレクサ274は対応するバイパス・マルチプレクサ278の一入力に出力し、これは、レジスタ・ファイルからの浮動小数点オペランド・ベクトルからの対応するワード、または結果浮動小数点ベクトルからの対応するワードを、当該技術分野で知られている仕方で、通過させる。
動的値域調整浮動小数点実行ユニットが非拡張値域フォーマットの浮動小数点値の処理と拡張値域フォーマットの浮動小数点値の処理との間で切り替わる仕方は、本発明の種々の実施態様において様々であり得る。例えば、拡張値域フォーマット命令を使うか使わないかをアプリケーション開発者が選べるように、非拡張値域フォーマット浮動小数点命令と拡張値域フォーマット浮動小数点命令との両方で命令セットを定義することができる。他の実施態様では、命令は、浮動小数点命令が拡張値域浮動小数点命令を使うべきか否かを定めるモード・ビットまたは二次的演算コードを含むことができる。他の実施態様では、アプリケーション・プログラムが特殊目的レジスタ(SPR)への書き込みを通してそのモードを選択できるように、ソフトウェアを介して、例えばそのSPRを介して、動作モードが設定可能であり得る。
さらに他の実施態様では、モード間の切り替えは本質的に自動化され得る。例えば、1つの実施態様では、オーバーフロー状態の数が過多であることに応じて自動的に拡張値域モードに切り替わるのが望ましいかもしれない。例えば、図9は、図7の拡張値域モード制御ロジック256の中で実行され得るルーチン280を示す。ルーチン280において、浮動小数点命令オーバーフローがブロック282で追跡される。ブロック284は、オーバーフローの数が閾値を越えたか否かを判定し、もし超えたならばブロック286で実行ユニットを拡張値域モードにセットする。オーバーフローの数が閾値を越えていなければ、ブロック288で実行ユニットは非拡張値域モードにセットされる。その後、オーバーフローの追跡がブロック282で続行される。例えば、オーバーフローの総数が閾値を越えた、オーバーフローを引き起こす命令のパーセンテージが閾値を越えた、一定の時間フレームにおけるオーバーフローの数が閾値を越えたなど、拡張値域モードを選択する基準は種々の実施態様で異なり得る。
従って、本書に記載された実施態様は、倍精度数に一般的に関連する追加の回路面積および性能の問題を避けながら単精度数より遥かに大きな数値範囲を考慮している。さらに、通例極めて僅かな回路変更が必要であるので、極めて小さなあるいはタイミングの問題を伴う在来の浮動小数点パイプラインの中での実施を可能にする。
本発明の精神および範囲から逸脱せずに、図示された実施態様に種々の改変を加えることができる。例えば、仮数フィールドの第1および第2の部分と指数フィールドとのそれぞれのサイズは種々の実施態様で異なることができ、本発明は特に単精度浮動小数点値での使用に限定されない。さらに、所与のインプリメンテーションにおいて3つ以上の浮動小数点フォーマットがサポートされ得る。本開示の恩恵を受けた当業者にとっては他の改変が明白であろう。従って、本発明は、以下に添付されている請求項に存する。
240 拡張値域浮動小数点フォーマット
242 第1部分
244 第2部分

Claims (23)

  1. 回路装置であって、
    前記回路装置は32ビット浮動小数点値を記憶するように構成された複数のレジスタを含むレジスタ・ファイルを含み、各浮動小数点値は1ビットの符号フィールドと、8ビットの指数フィールドと23ビットの仮数フィールドとで構成され、前記仮数フィールドは3ビットの第1部分と20ビットの第2部分とを含み、
    前記回路装置は単精度浮動小数点実行ユニットを含み、前記浮動小数点実行ユニットは、前記レジスタ・ファイルに結合されて、前記浮動小数点実行ユニットにより実行される第1浮動小数点命令により特定される前記レジスタ・ファイルからの第1ソース・レジスタに格納された第1入力浮動小数点値を処理して第1出力浮動小数点値を前記レジスタ・ファイルからの第1宛先レジスタに格納するとともに、前記浮動小数点実行ユニットにより実行される第2浮動小数点命令により特定される前記レジスタ・ファイルからの第2ソース・レジスタに格納された第2入力浮動小数点値を処理して第2出力浮動小数点値を前記レジスタ・ファイルからの第2宛先レジスタに格納するように構成されており、前記浮動小数点実行ユニットは指数経路と仮数経路とを含み、前記第1浮動小数点命令は非拡張値域浮動小数点命令であり、前記第2浮動小数点命令は拡張値域浮動小数点命令であり、前記浮動小数点実行ユニットは、前記第1入力浮動小数点値の前記指数フィールドに格納されているデータを指数として使用しかつ前記第1入力浮動小数点値の前記仮数フィールドの前記第1部分および第2部分に格納されているデータを仮数として使用するべく連結することによって前記第1浮動小数点命令を実行するように構成されており、前記浮動小数点実行ユニットは、前記第2入力浮動小数点値の前記指数フィールドと前記仮数フィールドの前記第1部分とに格納されているデータを指数として使用するべく連結しかつ前記第2入力浮動小数点値の前記仮数フィールドの前記第2部分に格納されているデータを仮数として使用することによって前記第2浮動小数点命令を実行するように構成されており、
    前記回路装置は前記浮動小数点実行ユニットの前記仮数経路に結合されて前記レジスタ・ファイルから浮動小数点値を受け取るように構成された第1シフト・ロジックを含み、前記第1シフト・ロジックは、前記第2浮動小数点命令が拡張値域浮動小数点命令であることに基づいて前記第2浮動小数点命令の実行中に前記第2入力浮動小数点値の前記仮数フィールドの前記第2部分のデータを選択的に左へ3ビットだけシフトさせるように構成され、前記第1シフト・ロジックは、さらに、前記第1浮動小数点命令が非拡張値域浮動小数点命令であることに基づいて前記第1入力浮動小数点値の前記仮数フィールドを改変せずに通過させるように構成されており、
    前記回路装置は前記浮動小数点実行ユニットの前記仮数経路に結合されて前記浮動小数点実行ユニットからの出力浮動小数点値を受け取るように構成された第2シフト・ロジックを含み、前記第2シフト・ロジックは、前記第2浮動小数点命令が拡張値域浮動小数点命令であることに基づいて前記第2浮動小数点命令の実行中に前記第2出力浮動小数点値の前記仮数フィールドの前記第2部分のデータを選択的に右へ3ビットだけシフトさせるように構成されており、前記第2シフト・ロジックは、さらに、前記第1浮動小数点命令が非拡張値域浮動小数点命令であることに基づいて前記第1出力浮動小数点値の前記仮数フィールドを改変せずに通過させるように構成されており、
    前記回路装置は連結ロジックを含み、前記連結ロジックは、前記浮動小数点実行ユニットの前記指数経路に結合されて、前記第2浮動小数点命令が拡張値域浮動小数点命令であることに基づいて前記第2浮動小数点命令の実行中に前記第2入力浮動小数点値の前記指数フィールドと前記仮数フィールドの前記第1部分とからのデータを連結するように構成されている、前記回路装置。
  2. 回路装置であって、
    前記回路装置は浮動小数点オペランドを受け取るように構成されたオペランド入力を含み、前記オペランド入力により受け取られる各浮動小数点オペランドは指数フィールドおよび仮数フィールドで構成され、前記仮数フィールドは第1部分および第2部分を含み、
    前記回路装置は、前記オペランド入力に結合されて浮動小数点命令の実行中に前記オペランド入力により受け取られた浮動小数点オペランドを処理するように構成された浮動小数点実行ユニットを含み、前記浮動小数点実行ユニットは、そのための第1浮動小数点オペランドが前記オペランド入力により受け取られているところの第1浮動小数点命令を、前記第1浮動小数点オペランドの前記指数フィールドに格納されているデータを指数として使用しかつ前記第1浮動小数点オペランドの前記仮数フィールドの前記第1部分および第2部分に格納されているデータを仮数として使用するべく連結することによって、実行するように構成されており、前記浮動小数点実行ユニットは、そのための第2浮動小数点オペランドが前記オペランド入力により受け取られているところの第2浮動小数点命令を、前記第2浮動小数点オペランドの前記指数フィールドと前記仮数フィールドの前記第1部分とに格納されているデータを指数として使用するべく連結しかつ前記第2浮動小数点オペランドの前記仮数フィールドの前記第2部分に格納されているデータを仮数として使用することによって、実行するように構成されている、前記回路装置。
  3. 前記オペランド入力により受け取られる各浮動小数点オペランドは32ビットを含んでいて単精度浮動小数点値を格納するように構成されており、各浮動小数点オペランドは1ビットを有する符号フィールドを含み、各浮動小数点オペランドの前記指数フィールドは8ビットを有し、各浮動小数点オペランドの前記仮数フィールドの前記第1部分は3ビットを有し、各浮動小数点オペランドの前記仮数フィールドの前記第2部分は20ビットを有する、請求項2に記載の回路装置。
  4. 複数の浮動小数点レジスタを含むレジスタ・ファイルをさらに含んでおり、前記レジスタ・ファイルは、前記浮動小数点実行ユニットの前記オペランド入力に結合された出力と、前記浮動小数点実行ユニットの結果出力を受け取るように結合された入力とを含む、請求項2に記載の回路装置。
  5. 前記浮動小数点実行ユニットは指数経路および仮数経路を含み、前記浮動小数点実行ユニットは前記結果出力において結果浮動小数点値を出力するように構成され、前記結果浮動小数点値は、前記結果浮動小数点値が指数フィールドと、第1部分および第2部分を含む仮数フィールドとを含むように各浮動小数点オペランドと同様にフォーマットされ、
    前記回路装置は前記浮動小数点実行ユニットの前記仮数経路の開始部に近接して配置されて前記オペランド入力に結合された第1シフト・ロジックをさらに含み、前記第1シフト・ロジックは、前記第2浮動小数点命令の実行中に前記第2浮動小数点オペランドの前記仮数フィールドの前記第2部分に格納されているデータを選択的にシフトさせるように構成され、
    前記回路装置は第2シフト・ロジックをさらに含み、前記第2シフト・ロジックは、前記浮動小数点実行ユニットの前記仮数経路の末端部に近接して配置されて、前記第2浮動小数点命令の実行中に前記結果浮動小数点値の前記仮数フィールドの前記第2部分に格納されているデータを選択的にシフトさせるように構成されており、前記第1および第2のシフト・ロジックは同数のビットを反対方向にシフトさせる、請求項4に記載の回路装置。
  6. 前記浮動小数点実行ユニットは、前記指数経路に結合されて前記第2浮動小数点命令の実行中に前記第2浮動小数点オペランドの前記指数フィールドと前記仮数フィールドの前記第1部分とのデータを連結するように構成されたロジックを含む、請求項5に記載の回路装置。
  7. 前記第1浮動小数点命令は非値域拡張フォーマットの命令であり、前記第2浮動小数点命令は値域拡張フォーマットの命令である、請求項2に記載の回路装置。
  8. 前記第2浮動小数点命令は、前記第2浮動小数点命令を値域拡張浮動小数点命令として特定するためにセットされるモード・ビットを含む、請求項7に記載の回路装置。
  9. 前記浮動小数点実行ユニットは、第1モード時には前記第1浮動小数点命令を実行し第2モード時には前記第2浮動小数点命令を実行するように構成されている、請求項2に記載の回路装置。
  10. 前記浮動小数点実行ユニットは、オーバーフロー状態の数が閾値を満たした時に自動的に前記第1モードから前記第2モードに切り替わるように構成されている、請求項9に記載の回路装置。
  11. 前記浮動小数点実行ユニットは、特殊目的レジスタに格納されているデータに基づいて前記第1モードと前記第2モードとの間で切り替わるように構成されている、請求項9に記載の回路装置。
  12. 請求項2の回路装置を含む集積回路装置。
  13. コンピュータ可読媒体と、前記コンピュータ可読媒体に存在して請求項2の回路装置を定義するロジック定義プログラム・コードとを含むプログラム製品。
  14. 浮動小数点実行ユニットにおいて浮動小数点命令を実行する方法であって、
    第1および第2浮動小数点命令を受け取ることであって、前記第1浮動小数点命令が第1浮動小数点オペランドを特定し、前記第2浮動小数点命令が第2浮動小数点オペランドを特定し、前記第1および第2浮動小数点オペランドが指数フィールドおよび仮数フィールドで構成され、前記仮数フィールドが第1部分および第2部分を含み、前記第1浮動小数点オペランドの前記指数フィールド、前記仮数フィールドの第1部分および前記仮数フィールドの第2部分がそれぞれ前記第2浮動小数点オペランドの前記指数フィールド、前記仮数フィールドの第1部分および前記仮数フィールドの第2部分と同じビットにマッピングされる、前記第1および第2浮動小数点命令を受け取ることと、
    前記第1浮動小数点オペランドの前記指数フィールドに格納されているデータを指数として使用しかつ前記第1浮動小数点オペランドの前記仮数フィールドの前記第1および第2部分に格納されているデータを仮数として使用するべく連結することによって前記第1浮動小数点命令を前記浮動小数点実行ユニットにおいて実行することと、
    前記第2浮動小数点オペランドの前記指数フィールドと前記仮数フィールドの前記第1部分とに格納されているデータを指数として使用するべく連結しかつ前記第2浮動小数点オペランドの前記仮数フィールドの前記第2部分に格納されているデータを仮数として使用することにより前記第2浮動小数点命令を前記浮動小数点実行ユニットにおいて実行することと、
    を含む方法。
  15. 前記第1および第2浮動小数点オペランドの各々は32ビットを含んでいて単精度浮動小数点値を格納するように構成されており、前記第1および第2浮動小数点オペランドの各々は1ビットを有する符号フィールドを含み、前記第1および第2浮動小数点オペランドの各々の前記指数フィールドは8ビットを有し、前記第1および第2浮動小数点オペランドの各々の前記仮数フィールドの前記第1部分は3ビットを有し、前記第1および第2浮動小数点オペランドの各々の前記仮数フィールドの前記第2部分は20ビットを有する、請求項14に記載の方法。
  16. 前記第1および第2浮動小数点値はそれぞれレジスタ・ファイル内の第1および第2ソース浮動小数点レジスタに格納され、前記方法は、それぞれ前記第1および第2浮動小数点命令の実行中に前記浮動小数点実行ユニットにより生成された第1および第2結果浮動小数点値を前記レジスタ・ファイル内の第1および第2宛先浮動小数点レジスタに格納することをさらに含む、請求項14に記載の方法。
  17. 前記浮動小数点実行ユニットは指数経路および仮数経路を含み、前記方法はさらに、
    前記第2浮動小数点オペランドの前記仮数フィールドの前記第2部分に格納されているデータを前記第2浮動小数点命令の実行中に前記仮数経路の中で第1方向にシフトさせることと、
    前記第2結果浮動小数点値の前記仮数フィールドの前記第2部分に格納されているデータを前記第2浮動小数点命令の実行中に前記仮数経路の中で前記第1方向とは反対の第2方向にシフトさせることと、
    を含む、請求項16に記載の方法。
  18. 前記第2浮動小数点オペランドの前記指数フィールドと前記仮数フィールドの前記第1部分とからのデータを前記第2浮動小数点命令の実行中に前記指数経路において連結することをさらに含む、請求項17に記載の方法。
  19. 前記第1浮動小数点命令は非値域拡張フォーマットの命令であり、前記第2浮動小数点命令は値域拡張フォーマットの命令である、請求項14に記載の方法。
  20. 前記第2浮動小数点命令は、前記第2浮動小数点命令を値域拡張浮動小数点命令として特定するためにセットされるモード・ビットを含む、請求項19に記載の方法。
  21. 前記浮動小数点実行ユニットは、第1モード時には前記第1浮動小数点命令を実行し第2モード時には前記第2浮動小数点命令を実行するように構成されている、請求項12に記載の方法。
  22. オーバーフロー状態の数が閾値を満たしたことに応答して自動的に前記浮動小数点実行ユニットを前記第1モードから前記第2モードに切り替えることをさらに含む、請求項21に記載の方法。
  23. 特殊目的レジスタに格納されているデータに基づいて前記浮動小数点実行ユニットを前記第1モードと前記第2モードとの間で切り替えることをさらに含む、請求項21に記載の方法。
JP2009161036A 2008-07-22 2009-07-07 浮動小数点実行ユニットを用いる回路装置、集積回路装置、プログラム製品、および方法(動的値域調整浮動小数点実行ユニット) Expired - Fee Related JP5431044B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/177,444 US8412760B2 (en) 2008-07-22 2008-07-22 Dynamic range adjusting floating point execution unit
US12/177444 2008-07-22

Publications (2)

Publication Number Publication Date
JP2010027049A true JP2010027049A (ja) 2010-02-04
JP5431044B2 JP5431044B2 (ja) 2014-03-05

Family

ID=41569582

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009161036A Expired - Fee Related JP5431044B2 (ja) 2008-07-22 2009-07-07 浮動小数点実行ユニットを用いる回路装置、集積回路装置、プログラム製品、および方法(動的値域調整浮動小数点実行ユニット)

Country Status (3)

Country Link
US (2) US8412760B2 (ja)
JP (1) JP5431044B2 (ja)
KR (1) KR101020430B1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108139885A (zh) * 2015-10-07 2018-06-08 Arm有限公司 浮点数舍入
WO2020059074A1 (ja) * 2018-09-20 2020-03-26 株式会社Pfu データ構造、情報処理装置、方法及びプログラム
JP2023509121A (ja) * 2019-12-31 2023-03-07 華為技術有限公司 浮動小数点数の乗算計算方法及び機器、並びに算術論理演算装置

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013095638A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Apparatus and method for an instruction that determines whether a value is within a range
US10289412B2 (en) 2012-02-09 2019-05-14 Qualcomm Incorporated Floating point constant generation instruction
US9520180B1 (en) 2014-03-11 2016-12-13 Hypres, Inc. System and method for cryogenic hybrid technology computing and memory
KR102165268B1 (ko) * 2014-09-18 2020-10-13 삼성전자 주식회사 표현 가능한 수의 범위를 조절하는 방법 및 장치
US9742630B2 (en) * 2014-09-22 2017-08-22 Netspeed Systems Configurable router for a network on chip (NoC)
US10019227B2 (en) 2014-11-19 2018-07-10 International Business Machines Corporation Accuracy-conserving floating-point value aggregation
US10348563B2 (en) 2015-02-18 2019-07-09 Netspeed Systems, Inc. System-on-chip (SoC) optimization through transformation and generation of a network-on-chip (NoC) topology
US10218580B2 (en) 2015-06-18 2019-02-26 Netspeed Systems Generating physically aware network-on-chip design from a physical system-on-chip specification
US10042607B2 (en) 2016-08-22 2018-08-07 Altera Corporation Variable precision floating-point multiplier
US10452124B2 (en) 2016-09-12 2019-10-22 Netspeed Systems, Inc. Systems and methods for facilitating low power on a network-on-chip
US10055195B2 (en) * 2016-09-20 2018-08-21 Altera Corporation Variable precision floating-point adder and subtractor
US20180159786A1 (en) 2016-12-02 2018-06-07 Netspeed Systems, Inc. Interface virtualization and fast path for network on chip
US10063496B2 (en) 2017-01-10 2018-08-28 Netspeed Systems Inc. Buffer sizing of a NoC through machine learning
US10469337B2 (en) 2017-02-01 2019-11-05 Netspeed Systems, Inc. Cost management against requirements for the generation of a NoC
US10970042B2 (en) 2017-11-20 2021-04-06 Intel Corporation Integrated circuits with machine learning extensions
US11175892B2 (en) 2017-11-20 2021-11-16 Intel Corporation Integrated circuits with machine learning extensions
US11144457B2 (en) 2018-02-22 2021-10-12 Netspeed Systems, Inc. Enhanced page locality in network-on-chip (NoC) architectures
US10547514B2 (en) 2018-02-22 2020-01-28 Netspeed Systems, Inc. Automatic crossbar generation and router connections for network-on-chip (NOC) topology generation
US10983910B2 (en) 2018-02-22 2021-04-20 Netspeed Systems, Inc. Bandwidth weighting mechanism based network-on-chip (NoC) configuration
US11023377B2 (en) 2018-02-23 2021-06-01 Netspeed Systems, Inc. Application mapping on hardened network-on-chip (NoC) of field-programmable gate array (FPGA)
US11176302B2 (en) 2018-02-23 2021-11-16 Netspeed Systems, Inc. System on chip (SoC) builder
US10871946B2 (en) 2018-09-27 2020-12-22 Intel Corporation Methods for using a multiplier to support multiple sub-multiplication operations
US10642614B2 (en) * 2018-09-29 2020-05-05 Intel Corporation Reconfigurable multi-precision integer dot-product hardware accelerator for machine-learning applications
US10732932B2 (en) 2018-12-21 2020-08-04 Intel Corporation Methods for using a multiplier circuit to support multiple sub-multiplications using bit correction and extension
FR3093571B1 (fr) * 2019-03-08 2021-03-19 Commissariat Energie Atomique Procédé et dispositif de représentation en virgule flottante avec précision variable
US11693626B2 (en) * 2019-06-18 2023-07-04 Cirrus Logic, Inc. Variable accuracy computing system
KR20210085461A (ko) 2019-12-30 2021-07-08 삼성전자주식회사 프로세싱 장치 및 프로세싱 장치에서 부동 소수점 연산을 처리하는 방법
GB2600915B (en) * 2020-10-07 2023-02-15 Graphcore Ltd Floating point number format
CN112905125B (zh) * 2021-03-04 2023-02-07 中电普信(北京)科技发展有限公司 一种基于计算机高精度计算的数据存储及读取方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03263219A (ja) * 1990-03-14 1991-11-22 Nec Corp 浮動小数点乗算器
JPH0484219A (ja) * 1990-07-26 1992-03-17 Fujitsu Ltd 演算処理装置及び演算処理方法
JPH04107730A (ja) * 1990-08-29 1992-04-09 Nec Corp 浮動小数点加算器

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3742198A (en) * 1971-03-19 1973-06-26 Bell Telephone Labor Inc Apparatus for utilizing a three-field word to represent a floating point number
JPS6097435A (ja) * 1983-11-02 1985-05-31 Hitachi Ltd 演算処理装置
US4603323A (en) * 1984-05-25 1986-07-29 International Business Machines Corporation Method for extending the exponent range of an IBM 370-type floating point processor
JPS61141033A (ja) * 1984-12-14 1986-06-28 Hitachi Ltd 演算処理装置
JPH05216620A (ja) * 1991-10-31 1993-08-27 Internatl Business Mach Corp <Ibm> 浮動小数点を正規化する方法及び回路
US5268855A (en) * 1992-09-14 1993-12-07 Hewlett-Packard Company Common format for encoding both single and double precision floating point numbers
JP3293768B2 (ja) 1997-11-25 2002-06-17 エヌイーシーフィールディング株式会社 浮動小数点演算回路およびこの浮動小数点演算回路を備えたコンピュータ
US6253299B1 (en) * 1999-01-04 2001-06-26 International Business Machines Corporation Virtual cache registers with selectable width for accommodating different precision data formats
US6405305B1 (en) * 1999-09-10 2002-06-11 Advanced Micro Devices, Inc. Rapid execution of floating point load control word instructions
US7529912B2 (en) * 2002-02-12 2009-05-05 Via Technologies, Inc. Apparatus and method for instruction-level specification of floating point format
US7720898B2 (en) * 2003-06-11 2010-05-18 Stmicroelectronics, Inc. Apparatus and method for adjusting exponents of floating point numbers
US7428566B2 (en) * 2004-11-10 2008-09-23 Nvidia Corporation Multipurpose functional unit with multiply-add and format conversion pipeline
US8595279B2 (en) * 2006-02-27 2013-11-26 Qualcomm Incorporated Floating-point processor with reduced power requirements for selectable subprecision
US7885992B2 (en) * 2006-06-22 2011-02-08 Honeywell International Inc. System and method for implementing irregular data formats
US20110004644A1 (en) * 2009-07-03 2011-01-06 Via Technologies, Inc. Dynamic floating point register precision control

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03263219A (ja) * 1990-03-14 1991-11-22 Nec Corp 浮動小数点乗算器
JPH0484219A (ja) * 1990-07-26 1992-03-17 Fujitsu Ltd 演算処理装置及び演算処理方法
JPH04107730A (ja) * 1990-08-29 1992-04-09 Nec Corp 浮動小数点加算器

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108139885A (zh) * 2015-10-07 2018-06-08 Arm有限公司 浮点数舍入
JP2018535476A (ja) * 2015-10-07 2018-11-29 エイアールエム リミテッド 浮動小数点数の丸め処理
WO2020059074A1 (ja) * 2018-09-20 2020-03-26 株式会社Pfu データ構造、情報処理装置、方法及びプログラム
JP2023509121A (ja) * 2019-12-31 2023-03-07 華為技術有限公司 浮動小数点数の乗算計算方法及び機器、並びに算術論理演算装置
JP7407291B2 (ja) 2019-12-31 2023-12-28 華為技術有限公司 浮動小数点数の乗算計算方法及び機器、並びに算術論理演算装置

Also Published As

Publication number Publication date
KR20100010473A (ko) 2010-02-01
US20130191432A1 (en) 2013-07-25
JP5431044B2 (ja) 2014-03-05
US9223753B2 (en) 2015-12-29
US8412760B2 (en) 2013-04-02
US20100023568A1 (en) 2010-01-28
KR101020430B1 (ko) 2011-03-08

Similar Documents

Publication Publication Date Title
JP5431044B2 (ja) 浮動小数点実行ユニットを用いる回路装置、集積回路装置、プログラム製品、および方法(動的値域調整浮動小数点実行ユニット)
US8930432B2 (en) Floating point execution unit with fixed point functionality
US8028153B2 (en) Data dependent instruction decode
US7945764B2 (en) Processing unit incorporating multirate execution unit
US9594557B2 (en) Floating point execution unit for calculating packed sum of absolute differences
US9710274B2 (en) Extensible execution unit interface architecture with multiple decode logic and multiple execution units
US9507599B2 (en) Instruction set architecture with extensible register addressing
US7809925B2 (en) Processing unit incorporating vectorizable execution unit
US8139061B2 (en) Floating point execution unit for calculating a one minus dot product value in a single pass
US8356162B2 (en) Execution unit with data dependent conditional write instructions
US8140830B2 (en) Structural power reduction in multithreaded processor
US7904700B2 (en) Processing unit incorporating special purpose register for use with instruction-based persistent vector multiplexer control
US9632786B2 (en) Instruction set architecture with extended register addressing using one or more primary opcode bits
US8892851B2 (en) Changing opcode of subsequent instruction when same destination address is not used as source address by intervening instructions
US9092256B2 (en) Vector execution unit with prenormalization of denormal values
US20160210148A1 (en) Local instruction loop buffer utilizing execution unit register file
US20090228681A1 (en) Processing Unit Incorporating Instruction-Based Persistent Vector Multiplexer Control

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120330

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130806

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20130927

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130927

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20130927

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20131001

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131112

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20131112

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20131112

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131204

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees