(57)【要約】  複数のスケールされた整数を用いて複数の数学演算を実行するための複数の方法、複数の装置、および複数の製品が開示される。具体的には、一例の方法は、スケールされた整数値を認識し、スケールされた整数値に基づいて、乗数値およびスケール値を決定する。乗数値は、スケールされた整数値に基づいて、ビット領域の第一の部分から情報を抽出することにより決定される。スケール値は、スケールされた整数値に基づいて、ビット領域の第二の部分から情報を抽出することにより決定される。ビット領域の第一の部分および第二の部分は、符号付き整数値を有するように構成することができる。例の方法は、乗数値およびスケール値に基づいて、算術演算を実行する。
2007515021.tif 000002
【特許請求の範囲】
【請求項１】
スケールされた整数値を識別する段階、
前記スケールされた整数値に基づいて、ビット領域の第一の部分から第一の情報を抽出することにより、乗数値を決定する段階であって、前記ビット領域の前記第一の部分は、第一の符号付き整数値を有するように構成可能な段階、
前記スケールされた整数値に基づいて、前記ビット領域の第二の部分から第二の情報を抽出することにより、スケール値を決定する段階であって、前記ビット領域の前記第二の部分は、第二の符号付き整数値を有するように構成可能な段階、および
前記乗数値および前記スケール値に基づいて、算術演算を実行する段階
を備える方法。
【請求項２】
前記算術演算は、２の補数算術演算および整数算術演算の１つである請求項１に定義される方法。
【請求項３】
前記ビット領域の前記第一の部分および前記第二の部分は、メモリロケーションに関連する請求項１に定義される方法。
【請求項４】
前記乗数値および前記スケール値の少なくとも１つに基づいて、状態演算を実行する段階をさらに備える請求項１に定義される方法。
【請求項５】
プロセッサシステム、および
前記プロセッサシステムに通信的に結合されたメモリを備え、
前記メモリは、記憶された複数の命令を有し、
前記記憶された複数の命令は、前記プロセッサシステムが、
スケールされた整数値を識別すること、
前記スケールされた整数値に基づいて、ビット領域の第一の部分から第一の情報を抽出することにより、乗数値を決定することであって、前記ビット領域の前記第一の部分は、第一の符号付き整数値を有するように構成可能なこと、
前記スケールされた整数値に基づいて、前記ビット領域の第二の部分から第二の情報を抽出することにより、スケール値を決定することであって、前記ビット領域の前記第二の部分は、第二の符号付き整数値を有するように構成可能なこと、および
前記乗数値および前記スケール値に基づいて、算術演算を実行すること
を可能にする装置。
【請求項６】
前記算術演算は、２の補数算術演算および整数算術演算の少なくとも１つである請求項５に定義される装置。
【請求項７】
前記ビット領域の前記第一の部分および前記第二の部分は、メモリロケーションに関連する請求項５に定義される装置。
【請求項８】
前記記憶された複数の命令は、前記プロセッサシステムが、前記乗数値および前記スケール値の少なくとも１つに基づいて、状態演算を実行することを可能にする請求項５に定義される装置。
【請求項９】
記憶された複数の命令を備える機械アクセス可能媒体であって、前記複数の命令が実行された場合、前記複数の命令は、機械に、
スケールされた整数値を識別すること、
前記スケールされた整数値に基づいて、ビット領域の第一の部分から第一の情報を抽出することにより、乗数値を決定することであって、前記ビット領域の前記第一の部分は、第一の符号付き整数値を有するように構成可能なこと、
前記スケールされた整数値に基づいて、前記ビット領域の第二の部分から第二の情報を抽出することにより、スケール値を決定することであって、前記ビット領域の前記第二の部分は、第二の符号付き整数値を有するように構成可能なこと、および
前記乗数値および前記スケール値に基づいて、算術演算を実行すること
をさせる機械アクセス可能媒体。
【請求項１０】
前記算術演算は、２の補数算術演算および整数算術演算の少なくとも１つである請求項９に定義される機械アクセス可能媒体。
【請求項１１】
前記ビット領域の前記第一の部分および前記第二の部分は、メモリロケーションに関連する請求項９に定義される機械アクセス可能媒体。
【請求項１２】
記憶された複数の命令を備え、前記複数の命令が実行された場合、前記複数の命令は、機械に、前記乗数値および前記スケール値の少なくとも１つに基づいて、状態演算を実行することをさせる請求項９に定義される機械アクセス可能媒体。
【請求項１３】
バイアス値を識別する段階と、
第一の入力値を識別する段階と、
第一のスケール値を識別する段階と、
前記第一の入力値、前記第一のスケール値、および前記バイアス値に基づいて、第一の乗数値を決定する段階と、
前記第一の乗数値をビット領域の第一の部分に記憶する段階であって、前記ビット領域の前記第一の部分は、第一の符号付き整数値であるように構成することができる段階と、
第二の入力値を識別する段階と、
第二のスケール値を識別する段階と、
前記第二の入力値、前記第二のスケール値、および前記バイアス値に基づいて、第二の乗数値を決定する段階と、
前記第二の乗数値を前記ビット領域の第二の部分に記憶する段階であって、前記ビット領域の前記第二の部分は、第二の符号付き整数値であるように構成することができる段階と、および
前記第一の乗数値、前記第一のスケール値、前記第二の乗数値、および第二のスケール値に基づいて整数ベース演算を実行する段階と
を備える方法。
【請求項１４】
前記第一の乗数値は、前記第一の入力値を、２の前記第一のスケール値から前記バイアス値を減じた値乗で割ることで決定される請求項１３に定義される方法。
【請求項１５】
前記整数ベース演算は、前記第一の乗数値を前記第二の乗数値に加算する加算演算である請求項１３に定義される方法。
【請求項１６】
前記整数ベース演算は、前記第一の乗数値を前記第二の乗数値で乗じならびに前記第一のスケール値および前記第二のスケール値の合計から前記バイアス値を減じる乗算演算である請求項１３に定義される方法。
【請求項１７】
最小のスケール値、最大のスケール値、最小の乗数値、および最大の乗数値の少なくとも１つ識別する段階をさらに備える請求項１３に定義される方法。
【請求項１８】
前記最小のスケール値、前記最大のスケール値、前記最小の乗数値、および前記最大の乗数値の少なくとも１つに基づいて状態演算を実行する段階をさらに備える請求項１７に定義される方法。
【請求項１９】
プロセッサシステム、および
前記プロセッサシステムに通信的に結合されたメモリを備え、
前記メモリは、記憶された複数の命令を有し、
前記記憶された複数の命令は、前記プロセッサシステムが、
バイアス値を識別すること、
第一の入力値を識別すること、
第一のスケール値を識別すること、
前記第一の入力値、前記第一のスケール値、および前記バイアス値に基づいて、第一の乗数値を決定すること、
前記第一の乗数値をビット領域の第一の部分に記憶することであって、前記ビット領域の前記第一の部分は、第一の符号付き整数値であるように構成することができること、
第二の入力値を識別すること、
第二のスケール値を識別すること、
前記第二の入力値、前記第二のスケール値、および前記バイアス値に基づいて、第二の乗数値を決定すること、
前記第二の乗数値を前記ビット領域の第二の部分に記憶する段階であって、前記ビット領域の前記第二の部分は、第二の符号付き整数値であるように構成することができること、および
前記第一の乗数値、前記第一のスケール値、前記第二の乗数値、および第二のスケール値に基づいて整数ベース演算を実行すること
を可能にする装置。
【請求項２０】
前記記憶された複数の命令は、前記プロセッサシステムが、前記第一の乗数値を、前記第一の入力値を、２の前記第一のスケール値から前記バイアス値を減じた値乗で割ることで決定することを可能にする請求項０に定義される装置。
【請求項２１】
前記整数ベース演算は、前記第一の乗数値を前記第二の乗数値に加算する加算演算である請求項０に定義される装置。
【請求項２２】
前記整数ベース演算は、前記第一の乗数値を前記第二の乗数値で乗じならびに前記第一のスケール値および前記第二のスケール値の合計から前記バイアス値を減じる乗算演算である請求項０に定義される装置。
【請求項２３】
前記記憶された複数の命令は、前記プロセッサシステムが、最小のスケール値、最大のスケール値、最小の乗数値、および最大の乗数値の少なくとも１つ識別することを可能にする請求項０に定義される装置。
【請求項２４】
前記記憶された複数の命令は、前記プロセッサシステムが、前記最小のスケール値、前記最大のスケール値、前記最小の乗数値、および前記最大の乗数値の少なくとも１つに基づいて状態演算を実行することを可能にする請求項２３に定義される装置。
【請求項２５】
記憶された複数の命令を備える機械アクセス可能媒体であって、前記複数の命令が実行された場合、前記複数の命令は、機械に、
バイアス値を識別すること、
第一の入力値を識別すること、
第一のスケール値を識別すること、
前記第一の入力値、前記第一のスケール値、および前記バイアス値に基づいて、第一の乗数値を決定すること、
前記第一の乗数値をビット領域の第一の部分に記憶することであって、前記ビット領域の前記第一の部分は、第一の符号付き整数値であるように構成することができること、
第二の入力値を識別すること、
第二のスケール値を識別すること、
前記第二の入力値、前記第二のスケール値、および前記バイアス値に基づいて、第二の乗数値を決定すること、
前記第二の乗数値を前記ビット領域の第二の部分に記憶する段階であって、前記ビット領域の前記第二の部分は、第二の符号付き整数値であるように構成することができること、および
前記第一の乗数値、前記第一のスケール値、前記第二の乗数値、および第二のスケール値に基づいて整数ベース演算を実行すること
をさせる機械アクセス可能媒体。
【請求項２６】
記憶された複数の命令を備え、前記複数の命令が実行された場合、前記複数の命令は、機械に、前記第一の乗数値を、前記第一の入力値を、２の前記第一のスケール値から前記バイアス値を減じた値乗で割ることで決定することをさせる請求項２５に定義される機械アクセス可能媒体。
【請求項２７】
前記整数ベース演算は、前記第一の乗数値を前記第二の乗数値に加算する加算演算である請求項２５に定義される機械アクセス可能媒体。
【請求項２８】
前記整数ベース演算は、前記第一の乗数値を前記第二の乗数値で乗じならびに前記第一のスケール値および前記第二のスケール値の合計から前記バイアス値を減じる乗算演算である請求項２５に定義される機械アクセス可能媒体。
【請求項２９】
記憶された複数の命令を備え、前記複数の命令が実行された場合、前記複数の命令は、機械に、最小のスケール値、最大のスケール値、最小の乗数値、および最大の乗数値の少なくとも１つ識別することをさせる請求項２５に定義される機械アクセス可能媒体。
【請求項３０】
記憶された複数の命令を備え、前記複数の命令が実行された場合、前記複数の命令は、機械に、前記最小のスケール値、前記最大のスケール値、前記最小の乗数値、および前記最大の乗数値の少なくとも１つに基づいて状態演算を実行することをさせる請求項２９に定義される機械アクセス可能媒体。
【請求項３１】
バイアス値を識別する段階と、
第一の入力値を識別する段階と、
第一の乗数値を識別する段階と、
前記第一の入力値、前記第一の乗数値、および前記バイアス値に基づいて、第一のスケール値を決定する段階と、
前記第一のスケール値をビット領域の第一の部分に記憶する段階であって、前記ビット領域の前記第一の部分は、第一の符号付き整数値であるように構成することができる段階と、
第二の入力値を識別する段階と、
第二の乗数値を識別する段階と、
前記第二の入力値、前記第二の乗数値、および前記バイアス値に基づいて、第二のスケール値を決定する段階と、
前記第二のスケール値を前記ビット領域の第二の部分に記憶する段階であって、前記ビット領域の前記第二の部分は、第二の符号付き整数値であるように構成することができる段階と、および
前記第一の乗数値、前記第一のスケール値、前記第二の乗数値、および第二のスケール値に基づいて整数ベース演算を実行する段階と
を備える方法。
【請求項３２】
前記第一のスケール値を決定する段階は、前記第一の乗数値に割られる前記第一の入力値の商の２を基底とするログ関数に前記バイアス値を加算する段階を備える請求項３１に定義される方法。
【請求項３３】
前記整数ベース演算は、前記第一の乗数値を前記第二の乗数値に加算する加算演算である請求項３１に定義される方法。
【請求項３４】
前記整数ベース演算は、前記第一の乗数値を前記第二の乗数値で乗じならびに前記第一のスケール値および前記第二のスケール値の合計から前記バイアス値を減じる乗算演算である請求項３１に定義される方法。
【請求項３５】
プロセッサシステム、および
前記プロセッサシステムに通信的に結合されたメモリを備え、
前記メモリは、記憶された複数の命令を有し、
前記記憶された複数の命令は、前記プロセッサシステムが、
バイアス値を識別すること、
第一の入力値を識別すること、
第一の乗数値を識別すること、
前記第一の入力値、前記第一の乗数値、および前記バイアス値に基づいて、第一のスケール値を決定すること、
前記第一のスケール値をビット領域の第一の部分に記憶することであって、前記ビット領域の前記第一の部分は、第一の符号付き整数値であるように構成することができること、
第二の入力値を識別すること、
第二の乗数値を識別すること、
前記第二の入力値、前記第二の乗数値、および前記バイアス値に基づいて、第二のスケール値を決定すること、
前記第二のスケール値を前記ビット領域の第二の部分に記憶することであって、前記ビット領域の前記第二の部分は、第二の符号付き整数値であるように構成することができること、および
前記第一の乗数値、前記第一のスケール値、前記第二の乗数値、および第二のスケール値に基づいて整数ベース演算を実行すること
を可能にする装置。
【請求項３６】
前記記憶された複数の命令は、前記プロセッサシステムが、前記第一のスケール値を決定することを、前記第一の乗数値に割られる前記第一の入力値の商の２を基底とするログ関数に前記バイアス値を加算することにより可能にする請求項３５に定義される装置。
【請求項３７】
前記整数ベース演算は、前記第一の乗数値を前記第二の乗数値に加算する加算演算である請求項３５に定義される装置。
【請求項３８】
前記整数ベース演算は、前記第一の乗数値を前記第二の乗数値で乗じならびに前記第一のスケール値および前記第二のスケール値の合計から前記バイアス値を減じる乗算演算である請求項３５に定義される装置。
【請求項３９】
記憶された複数の命令を備える機械アクセス可能媒体であって、前記複数の命令が実行された場合、前記複数の命令は、機械に、
バイアス値を識別すること、
第一の入力値を識別すること、
第一の乗数値を識別すること、
前記第一の入力値、前記第一の乗数値、および前記バイアス値に基づいて、第一のスケール値を決定すること、
前記第一のスケール値をビット領域の第一の部分に記憶することであって、前記ビット領域の前記第一の部分は、第一の符号付き整数値であるように構成することができること、
第二の入力値を識別すること、
第二の乗数値を識別すること、
前記第二の入力値、前記第二の乗数値、および前記バイアス値に基づいて、第二のスケール値を決定すること、
前記第二のスケール値を前記ビット領域の第二の部分に記憶することであって、前記ビット領域の前記第二の部分は、第二の符号付き整数値であるように構成することができること、および
前記第一の乗数値、前記第一のスケール値、前記第二の乗数値、および第二のスケール値に基づいて整数ベース演算を実行すること
をさせる機械アクセス可能媒体。
【請求項４０】
記憶された複数の命令を備え、前記複数の命令が実行された場合、前記複数の命令は、機械に、前記第一のスケール値を決定することを、前記第一の乗数値に割られる前記第一の入力値の商の２を基底とするログ関数に前記バイアス値を加算することによりさせる請求項３９に定義される機械アクセス可能媒体。
【請求項４１】
前記整数ベース演算は、前記第一の乗数値を前記第二の乗数値に加算する加算演算である請求項３９に定義される機械アクセス可能媒体。
【請求項４２】
前記整数ベース演算は、前記第一の乗数値を前記第二の乗数値で乗じならびに前記第一のスケール値および前記第二のスケール値の合計から前記バイアス値を減じる乗算演算である請求項３９に定義される機械アクセス可能媒体。
【請求項４３】
第一のスケールされた整数値および第二のスケールされた整数値を認識するように構成可能なデータインターフェース、および
前記データインターフェースに通信的に結合され、前記第一のスケールされた整数値に基づいて、第一の乗数値および第一のスケール値を、ならびに前記第二のスケールされた整数値に基づいて、第二の乗数値および第二のスケール値を認識するように構成可能なデータ展開器（アンパッカ）であって、前記第一の乗数値、前記第一のスケール値、前記第二の乗数値、および前記第二のスケール値は、それぞれ、符号付き整数値を有するように構成することができるデータ展開器（アンパッカ）
を備える装置。
【請求項４４】
前記第一の乗数値を前記第二の乗数値におよび前記第一のスケール値を前記第二のスケール値に加算することにより加算演算を実行するように構成可能な加算器をさらに備える請求項４３に定義される装置。
【請求項４５】
前記加算器は、前記第一の乗数値および前記第二の乗数値に基づいて、２の補数加算演算を実行するように構成することができる請求項４４に定義される装置。
【請求項４６】
前記第一の乗数値に前記第二の乗数値を乗じ、ならびに前記第一のスケール値および前記第二のスケール値の合計からバイアス値を減じることにより、乗算えんざんを実行するように構成することができる乗算器をさらに備える請求項４３に定義される装置。
【請求項４７】
前記乗算器は、前記第一の乗数値、前記第二の乗数値、前記第一のスケール値、および前記第二のスケール値の少なくとも１つに基づいて、２の補数乗算演算を実行するように構成することができる請求項４６に定義される装置。
【請求項４８】
プロセッサシステム、および
前記プロセッサシステムに通信的に結合されたフラッシュメモリを備え、
前記フラッシュメモリは、記憶された複数の命令を有し、
前記記憶された複数の命令は、前記プロセッサシステムが、
バイアス値を識別すること、
第一の入力値を識別すること、
第一のスケール値を識別すること、
前記第一の入力値、前記第一のスケール値、および前記バイアス値に基づいて、第一の乗数値を決定すること、
前記第一の乗数値をビット領域の第一の部分に記憶することであって、前記ビット領域の前記第一の部分は、第一の符号付き整数値であるように構成することができること、
第二の入力値を識別すること、
第二のスケール値を識別すること、
前記第二の入力値、前記第二のスケール値、および前記バイアス値に基づいて、第二の乗数値を決定すること、
前記第二の乗数値を前記ビット領域の第二の部分に記憶する段階であって、前記ビット領域の前記第二の部分は、第二の符号付き整数値であるように構成することができること、および
前記第一の乗数値、前記第一のスケール値、前記第二の乗数値、および第二のスケール値に基づいて整数ベース演算を実行すること
を可能にする装置。
【請求項４９】
前記整数ベース演算は、２の補数算術演算である請求項４８に定義される装置。
【請求項５０】
算術演算を実行するために要求を受け取る段階と、
前記要求に応答して、スケールされた整数値に基づいて前記算術演算を実行するために、プロセッサで複数の命令の一組を実行する段階と
を備え、
前記複数の命令の実行は、前記プロセッサに、
前記スケールされた整数値を認識すること、
前記スケールされた整数値に基づいて、ビット領域の第一の部分から第一の情報を抽出することにより、乗数値を決定することであって、前記ビット領域の前記第一の部分は、第一の符号付き整数値を有するように構成可能なこと、
前記スケールされた整数値に基づいて、前記ビット領域の第二の部分から第二の情報を抽出することにより、スケール値を決定することであって、前記ビット領域の前記第二の部分は、第二の符号付き整数値を有するように構成可能なこと、および
前記乗数値および前記スケール値に基づいて、算術演算を実行すること
をさせる方法。
【請求項５１】
前記算術演算は、２の補数算術演算および整数算術演算の１つである請求項５０に定義される方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、広く複数のプロセッサシステムに関し、より具体的には、複数のスケールされた整数を用いた複数の数学演算を実行するための、複数の方法、複数の装置、および複数の製品に関する。
【背景技術】
【０００２】
複数のグラフィクスプロセッシングアプリケーションなどの多くのアプリケーションは、一般的に複数の整数ベース演算および／または複数の浮動小数点ベース演算を用いて実装される複数の計算的に激しい演算を伴う。例えば、Ｉｎｔｅｌ（登録商標）  ＸＳｃａｌｅ（登録商標）プロセッサファミリの複数のモバイルプロセッサなどの多くのモバイルプロセッサは、生来の複数の整数ベース演算を提供する整数ベースのプロセッサである。より低い性能の複数のグラフィクスアプリケーションは、しばしば整数データ型を用いる複数の整数ベースプロセッサ上で実行される。しかしながら、複数の高性能グラフィクスアプリケーションは、複数の整数ベースプロセッサにより一般的に用いられる整数データ型の範囲を超える数値域を有する複数の数に基づく複数の計算を要求する。
【０００３】
複数の高性能グラフィクスアプリケーションを含む多くの計算的に激しいアプリケーションは、複数の整数データ型により一般的に提供される数値域を超える数値域を提供する浮動小数点データ型を要求する。複数の整数データ型により提供される制限される数値域は、複数の整数ベースプロセッサ上で浮動小数点エミュレーションソフトウェアを実行することでしばしば克服される。
【０００４】
整数データ型を用いて複数のグラフィクスアプリケーションを実行することは、許容できるアニメーションスピードを提供するが、一般的に、整数データ型の制限された数値域のために低減された画質をもたらす。一方で、浮動小数点型を用いて複数のグラフィクスアプリケーションを実行することは、比較的により良い画質をもたらすが、一般的に、浮動小数点エミュレーションソフトウェアを実行するために要求されるプロセッシングオーバヘッドのために遅いアニメーションスピードをもたらす。
【０００５】
例えば、複数のプロセッサのＩｎｔｅｌ（登録商標）ＸＳｃａｌｅ（登録商標）ファミリに基づく複数のハンドヘルドプラットフォームなどの複数のハンドヘルドプラットフォームは、通常、固定小数点実装または浮動小数点実装を用いて複数のグラフィクスアプリケーションを実装する。固定小数点実装は、整数データ型を用いて実装される固定小数点データ型に基づく。しかしながら、ほとんどの現行のグラフィクスアプリケーションは、浮動小数点データ型を用いるように設計される。結果として、固定小数点実装は、固定小数点データ型と共に機能するために、現行の複数のグラフィクスアプリケーションのソフトウェア基盤を再構築することを伴う。
【０００６】
固定小数点データ型は、１６ビット小数部が後に続く１６ビット整数部を備え、Ｉｎｔｅｌ（登録商標）  Ｇｒａｐｈｉｃｓ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｐｒｉｍｉｔｉｖｅｓ（ＧＰＰ）ライブラリで実装されている。固定小数点データ型を用いる複数のグラフィクスアプリケーションは、固定小数点データ型がほとんどのハンドヘルドプラットフォームプロセッサの生来である整数データ型に基づいて実装されるので、複数の整数演算と等しいスピードで実行する複数の固定小数点演算を用いる。加えて、固定小数点データ型を用いる複数のグラフィクスアプリケーションは、複数のハンドヘルドプラットフォーム上で比較的に高いフレームレートを提供することができ、例えば、複数のゲームアプリケーションなどの計算的に激しい複数のグラフィクスアプリケーションの許容できる性能をもたらす。
【０００７】
しかしながら、固定小数点実装は、しばしば、浮動小数点実装などの大きい動的な複数の数値域と共に動作するように設計された複数のソフトウェアアプリケーションを再構築することに関連する高い複数の開発コストもたらす。特に、複数のグラフィクスアプリケーションのより低いレイヤソフトウェアの重要な部分は、複数の固定小数点および整数データ型と共に動作するように再構築することを要求する。
【０００８】
固定小数点実装は、同様に、浮動小数点実装より制限された動的な数値域を提供する。この制限された動的な数値域は、固定小数点データ型に関連するデータの非最適な手動のスケーリングのために相対的な精度の損失をもたらす。固定小数点データ型に関連する比較的に低い精度は、標準的な消費者に一般的に知覚できる視覚の複数のアーチファクトをもたらす。
【０００９】
複数のハンドヘルドプラットフォームのための浮動小数点実装は、浮動小数点エミュレーションソフトウェア上での現存する複数のグラフィクスアプリケーションまたはＤｉｒｅｃｔ３ＤおよびＯｐｅｎＧＬなどのより低レベルのソフトウェアを実行することを伴い、それにより、固定小数点データ型などの新しいデータ型を使用するためにソフトウェアを再構築する必要を除去する。浮動小数点実装は、多くの現行の複数のアプリケーションが浮動小数点データ型を使用するために再構築されることを必要としないので、通常、比較的に低い複数の開発コストを伴う。加えて、浮動小数点実装を伴うと、浮動小数点データ型の比較的に高い動的な数値域のために、結果として起こる画質は、高い。
【００１０】
不幸なことに、浮動小数点エミュレーションソフトウェアに基づく浮動小数点実装の性能は、比較的に低い。結果として、より少ない計算的に激しい複数のグラフィクスアプリケーションのみ、そのような浮動小数点実装を用いて、許容できる性能で、実行されることができる。例えば、浮動小数点エミュレーションソフトウェアに基づく浮動小数点実装は、比較的に高いフレームレートを要求する計算的に激しい複数のグラフィクスアプリケーション（例えば、複数のゲームアプリケーション）にとって、遅すぎる。加えて、複数の浮動小数点ベース演算を処理することに関連する電力消費は、複数の整数ベース演算に関連する電力消費と比べて、比較的に高い。
【図面の簡単な説明】
【００１１】
【図１】先行技術において知られる周知の浮動小数点データ型の一例の２進表現である。
【００１２】
【図２】本開示される複数の装置および複数の方法の一実施形態に係る一例のスケールされた整数データ型の一例の２進表現である。
【００１３】
【図３】開示される複数の装置および複数の方法の一実施形態に従って、図２に関連して説明される例のスケールされた整数データ型を用いて例の複数の算術演算が実行される一例の方法のフロー図である。
【００１４】
【図４】開示される複数の装置および複数の方法の一実施形態に従って、図２に関連して説明される例のスケールされた整数データ型を用いて例の複数の拡張算術演算が実行される一例の方法を表現するフロー図である。
【００１５】
【図５】開示される複数の装置および複数の方法の一実施形態に従って、図２に関連して説明される例のスケールされた整数データ型を用いて図４に関連して説明される例の複数の状態演算が実行される例の方法のフロー図である。
【図６】開示される複数の装置および複数の方法の一実施形態に従って、図２に関連して説明される例のスケールされた整数データ型を用いて図４に関連して説明される例の複数の状態演算が実行される例の方法のフロー図である。
【図７】開示される複数の装置および複数の方法の一実施形態に従って、図２に関連して説明される例のスケールされた整数データ型を用いて図４に関連して説明される例の複数の状態演算が実行される例の方法のフロー図である。
【図８】開示される複数の装置および複数の方法の一実施形態に従って、図２に関連して説明される例のスケールされた整数データ型を用いて図４に関連して説明される例の複数の状態演算が実行される例の方法のフロー図である。
【図９】開示される複数の装置および複数の方法の一実施形態に従って、図２に関連して説明される例のスケールされた整数データ型を用いて図４に関連して説明される例の複数の状態演算が実行される例の方法のフロー図である。
【００１６】
【図１０】開示される複数の装置および複数の方法の一実施形態に従って、図２に関連して説明される例のスケールされた整数データ型を用いて正規化演算が実行される一例の方法を表現するフロー図である。
【００１７】
【図１１】開示される複数の装置および複数の方法の一実施形態に従って、図２に関連して説明される例のスケールされた整数データ型を用いて逆数演算が実行される一例の方法を表現するフロー図である。
【００１８】
【図１２】ここで説明される複数の装置および複数の方法を実装するために使用される一例のシステムのブロック図である。
【００１９】
【図１３】ここで説明される複数の装置および複数の方法を実装するために使用される一例のプロセッサシステムのブロック図である。
【発明の詳細な説明】
【００２０】
図１は、周知の浮動小数点データ型の一例の２進表現１００である。ＩＥＥＥ浮動小数点標準規格７５４−１９８５によると、浮動小数点データ型は、３２ビット単精度浮動小数点型および６４ビット倍精度浮動小数点型に関連する。しかしながら、浮動小数点データ型は、特定の複数のアプリケーションの特定のニーズに合うように適合されることは、当業者には明白である。加えて、浮動小数点データ型は、比較的に大きな数値域および比較的に正確な計算の複数の結果を有する１０進値の２進表現を提供するために使用される。一般的に、浮動小数点データ型の数値域は、移動しているまたは浮動している２進小数点に基づく。移動または浮動２進小数点は、ＩＥＥＥ浮動小数点標準規格７５４−１９８５により定義される複数のルールの一組に基づく。
【００２１】
図１を示す浮動小数点データ型の例の２進表現１００は、符号ビット１０２、指数ビット領域（ｅ）１０４、および仮数ビット領域（ｆ）１０６を備える。３２ビット値にとって、単精度浮動小数点データ型では、符号ビット１０２は、ビット３１により表現され、指数ビット領域１０４は、８ビット長であり、複数のビット２３から３０で表現され、仮数ビット領域１０６は、２３ビット長であり、複数のビット０から２２で表現される。６４ビット値にとって、倍精度浮動小数点データ型では、符号ビット１０２は、ビット６３で表現され、指数ビット領域１０４は、１１ビット長であり、複数のビット５２から６２で表現され、仮数ビット領域１０６は、５２ビット長であり、複数のビット０から５２で表現される。
【００２２】
浮動小数点データ型は、同様にバイアス値を使用する。単精度浮動小数点データ型のバイアス値は、１２７に等しく、倍精度浮動小数点データ型のためのバイアス値は、１０２３に等しい。加えて、バイアス値は、指数ビット領域１０４の半分引く１に等しい（例えば、２８／２−１＝１２７）。
【００２３】
浮動小数点符号値（例えば、例の２進表現１００）の数値変換は、浮動小数点符号値の数値等価値を決定することを伴う。浮動小数点符号値は、例えば、浮動小数点データ型の例の２進表現１００に従ってコード化される任意の値でよい。浮動小数点符号値の等価な数値を決定することは、符号ビット１０２、指数ビット領域１０４、仮数ビット領域１０６、および指数値に基づく数値変換プロセスを伴う。
【００２４】
符号ビット１０２は、等価な数値の符号を指定する。指数ビット領域１０４および仮数ビット領域１０６は、等価な数値の規模および小数部分を指定する。具体的には、指数値は、バイアス値を指数ビット領域１０４の値から引くことにより決定される（すなわち、ｅ−ｂｉａｓ）。一般的に、バイアス値は、指数ビット領域１０４の値に基づいて正および負の指数値が生成されるように選択される。
【００２５】
仮数ビット領域（ｆ）１０６は、分数のまたは小数の値を表し、一般的に正規化数および非正規化数に関連する。正規化数は、２進小数点（すなわち、小数点）および仮数ビット領域１０６の値が後に続く主要な値１（すなわち、１．ｆ）を含む。非正規化数は、２進小数点および仮数ビット領域１０６の値が後に続く主要な値０（すなわち、０．ｆ）を含む。主要な値および２進小数点は、黙示的であり、したがって、図１の浮動小数点データ型の例の２進表現１００の複数の位置の任意に記憶されない。複数の浮動小数点値は、一般的に正規化された形式で記憶され、仮数ビット領域１０６の値の精度を保持する。非正規化形式は、一般的に複数の特殊な状況において使用され、仮数ビット領域１０６の値の全ての精度は保持しない。
【００２６】
浮動小数点のコード化された値の数値変換は、下記の式１に従って実行される。
【数１】
2007515021.tif 000003
ビット領域１０６の値に２のバイアスされた指数乗を乗じ、その結果に−１の符号ビット１０２乗を乗じることにより決定される。
【００２７】
浮動小数点符号値の数値変換をより理解するために、仮数ビット領域１０６の数値化（すなわち、仮数ビット領域１０６を数値等価値に変換すること）を理解することが、役に立つ。仮数ビット領域１０６のそれぞれのビットは、小数値に関連し、それは、２の負整数乗（例えば、２−１＝１／２、２−２＝１／４、等）を含む２のべき乗値で指定される。仮数ビット領域１０６は、小数値２−１に関連するＭＳＢｂ０（すなわち、２進小数点に最も近いビット）および小数値２−Ｍに関連するＬＳＢｂＭ−１（すなわち、２進小数値から最も遠いビット）を含み、ここでＭは、仮数ビット領域１０６内の複数のビットの最大数である。例えば、単精度浮動小数点値にとって、Ｍは、２３に等しく、倍精度浮動小数点値にとって、Ｍは、５２に等しい。仮数ビット領域１０６の数値等価値は、下記式２に従って決定される。
【数２】
2007515021.tif 000004
【００２８】
上記式２に示されるように、仮数ビット領域（ｆ）１０６の数値等価値は、変数Ｖｆにより表され、それぞれのビット値およびその対応する小数値の積を生成し、その複数の積の合計を決定することにより決定される。小数値（例えば２−１）の対応するビット（例えば、ｂ０）が０の場合、小数値は、取り消される。一方で、小数値の対応するビットが１の場合、小数値は、複数の小数ビットの合計に加算される。
【００２９】
上記から理解されるように、浮動小数点符号値の数値等価値を決定することの複雑さに起因して、複雑なハードウェアおよび／または複雑なソフトウェア基盤が、浮動小数点データ型に基づく複数の算術演算を実行するために一般的に必要とされる。
【００３０】
図２は、一例のスケールされた整数データ型の一例の２進表現２００である。具体的には、例のスケールされた整数データ型は、複数のスケールされた整数値に基づき、浮動小数点データ型により一般的に提供される数値域を越える数値域を提供するために使用される。加えて、複数のスケールされた整数値に基づく複数の算術演算は、複数の浮動小数点値に基づく複数の算術演算より比較的に複雑でない。以下に詳細に説明されるように、例のスケールされた整数データ型の複数の特性は、複数の算術演算が複数の整数算術演算に関連する複数の命令を用いて実装されることを可能にする。例のスケールされた整数データ型に基づく複数の算術演算は、複数の整数データ型演算に関連する複数の実行スピードおよび電力消費特性に等しい複数の実行スピードおよび電力消費特性を提供する。その上、例のスケールされた整数データ型に基づく複数の算術演算は、ハードウェア（例えば、図１２の例のシステム１２００）および／または機械アクセス可能媒体（例えば、コンピュータアクセス可能媒体）に記憶され、プロセッサシステム（例えば、図１３のプロセッサシステム１３１０）に実行されるソフトウェアで実装される。特に、例のスケールされた整数データ型に基づく複数の算術演算は、例えば、Ｉｎｔｅｌ（登録商標）ＸＳｃａｌｅ（登録商標）プロセッサファミリのプロセッサなどの整数ベースプロセッサにより実行される。
【００３１】
ここで図２の詳細に移り、例の２進表現２００は、スケールされた整数値（すなわち、スケールされた整数符号値）をメモリ（例えば、図１３のシステムメモリ１３２４）内に記憶するために用いられるビット構造または配置を表現する。スケールされた整数値は、複数のビットの任意の所望の数を用いて表現され、例のスケールされた整数データ型の例の２進表現２００に示されるように、乗数値Ｉが記憶される乗数値ビット領域２０２およびスケール値Ｑが記憶されるスケール値ビット領域２０４を含む。乗数値Ｉおよびスケール値Ｑは、複数のビットの任意の所望の数を有する複数の整数値でよい。乗数値ビット領域２０２およびスケール値ビット領域２０４を形成するために用いられる複数のビットの数の合計は、スケールされた整数値（Ｉ、Ｑ）内の複数のビットの総数（すなわち、例の２進表現２００内の複数のビットの数）に等しい。
【００３２】
乗数値Ｉおよびスケール値Ｑは、複数のビットの任意の数を含むように選択されるが、乗数値Ｉおよびスケール値Ｑ内の複数のビットの数は、例のスケールされた整数データ型がその上で実装されるプロセッサの複数の能力またはアーキテクチャに適合するように選択される。例えば、３２ビットプロセッサにとって、乗数値Ｉおよびスケール値Ｑは、乗数値Ｉおよびスケール値Ｑの合計が３２に等しいように（すなわち、Ｉ＋Ｑ＝３２）選択される。加えて、３２ビットプロセッサにとって、乗数値Ｉおよびスケール値Ｑ内の複数のビットの数は、例のスケールされた整数データ型に基づく複数の算術演算を単純にするために８の倍数として選択される。例のスケールされた整数データ型のために選択される乗数値Ｉおよびスケール値Ｑのビット長は、ランタイム段階の間の複数のスケールされた整数値の解釈を可能にするために、ハードウェアおよび／またはソフトウェアに提供される。例えば、例のスケールされた整数データ型に関連する複数のビット長は、複数のグローバル変数を経由して複数のアプリケーションに提供される。
【００３３】
乗数値Ｉおよびスケール値Ｑは、複数の符号付き整数値（例えば、Ｉ、Ｑ＝０、±１、±２、±３等）として選択され、ランタイム段階の間の２の補数算術の実装を可能にする２の補数形式で記憶される。加えて、スケールされた整数は、表現において冗長性を提供し、それは、値が、例のスケールされた整数型の例の２進表現２００を用いて、いろいろな方法で表されることを可能にする。例えば、下記式３に関連して詳細に説明されるスケールされた整数符号値の数値変換に基づいて、複数のスケールされた整数値（すなわち、複数の（Ｉ、Ｑ）値）（１、０）、（２、１）、および（４、−２）は互いに等しい。
【００３４】
複数のスケールされた整数値は、合成スケール指数を決定するために用いられるバイアス値βに関連する。合成スケール指数は、スケール値からバイアス値βを減じること（すなわち、Ｑ−β）により決められ、スケールされた整数符号値の数値変換を実行するために用いられる。一般的に、バイアス値βは、固定値として選択され、ランタイム段階の間にスケールされた整数値が正しく解釈されるように、例えば、グローバル変数を経由して、例のスケールされた整数データ型を用いるハードウェアおよび／またはソフトウェアに、提供される。
【００３５】
スケールされた整数符号値の数値変換は、スケールされた整数符号値の数値等価値を決定するために使用され、乗数値I、スケール値Ｑ、およびバイアス値βに基づく。より具体的には、スケールされた整数値の数値等価は、下記式３で詳しく説明されるように決められる。
【数３】
2007515021.tif 000005
式３で示されるように、スケールされた整数値の数値等価値は、変数ＶＳＩにより表現され、２を合成スケール指数（すなわち、Ｑ−β）乗にし、結果に乗数値Ｉを乗じることで決められる一般的に、数値は、数値を表すために、式３を代数的に再配置すること、バイアスのための固定値を選択すること、ならびに乗数値Ｉおよびスケール値Ｑを選択することにより、スケールされた整数として符号化される。乗数値Ｉおよびスケール値Ｑが選択された後、これら複数の値は、所望のビット長またはデータ幅に丸められまたは切り取られる。
【００３６】
例のスケールされた整数データ型の例の２進表現２００は、スケールされた整数符号値ＸＳＣＩＮＴ（すなわち、ＸＳＣＩＮＴ＝（Ｉ、Ｑ））を形成するために、乗数Ｉおよびスケール値Ｑを、Ｑが後に続くＩとの連結として、下記式４に説明されるように示す。しかしながら、下記式５で説明されるように、乗数値Ｉおよびスケール値Ｑは、Ｉが後に続くＱ（すなわち、ＸＳＣＩＮＴ＝（Ｑ、Ｉ））として同様に連結される。
【数４】
2007515021.tif 000006
【数５】
2007515021.tif 000007
上記複数の式４および５に示されるように、乗数ビット値ｉは、乗数値ビット領域２０２の複数のビット値を表し、乗数ビット長値ｌは、乗数ビット領域２０２内の複数のビットの数を表し、スケールビット値ｑは、スケール値ビット領域２０４の複数のビット値を表し、スケールビット長値ｍは、スケール値ビット領域２０４内の複数のビットの数を表す。
【００３７】
乗数値Ｉおよびスケール値Ｑの数値域は、乗数ビット長ｌおよびスケールビット長ｍに基づいて決められる。例えば、乗数値Ｉの数値域は、−２ｌ−１≦Ｉ≦２ｌ−１−１として表され、スケール値Ｑの数値域は、−２ｍ−１≦Ｑ≦２ｍ−１−１として表される。この状況では、最大スケールされた整数値（すなわち、最も正の値）および最小スケールされた整数値（すなわち、最も負の値）は、下記の複数の式６および７に従って決定される。
【数６】
2007515021.tif 000008
【数７】
2007515021.tif 000009
式６に示されるように、項２ｌ−１−１は、乗数値Ｉの最大値を表し、項
2007515021.tif 000010
により乗じられ、ここで、２ｍ−１−（１＋β）は、スケール値Ｑの最大値を表す。式７に示されるように、項−２ｌ−１は、乗数値Ｉの最小値を表し、負の値であり、項
2007515021.tif 000011
により乗じられる。２ｍ−１−（１＋β）は、最大スケール値Ｑを表すので、項
2007515021.tif 000012
の規模は、比較的に大きいしたがって、最小スケールされた整数値は、負の値（例えば、−２ｌ−１）を比較的大きな規模を有する値（例えば、
2007515021.tif 000013
）で乗じることで決められる。
【００３８】
複数の式６および７により示されるように、スケールビット長値ｍおよび乗数ビット長値ｌは、任意の所望の長さに選択されるので、乗数値Ｉの数値域（すなわち、−２ｌ−１≦Ｉ≦２ｌ−１−１）、およびスケール値Ｑの数値域（すなわち、−２ｍ−１≦Ｑ≦２ｍ−１−１）、スケールされた整数値の最大数値域は、理論的に制限されない。しかしながら、実際には、ハードウェアおよび／またはソフトウェアで実装される場合、例のスケールされた整数データ型は、全ての起こり得るスケールされた整数値の部分集合を表すために実装される。より具体的には、例のスケールされた整数データ型の数値域は、全ての起こり得るスケールされた整数値の数値域の部分集合を表すために実装される。例えば、例のスケールされた整数データ型の数値域は、複数のオーバーフローまたはアンダーフロー条件に関連する複数の計算エラーを防ぐために、対象のプラットフォームの複数の特性、プロセッサの複数の能力、ハードウェアの複数の能力等に基づいて実装される。
【００３９】
図３は、一例の方法のフロー図であり、ここで、例の複数の算術演算は、上記図２に関連して説明された例のスケールされた整数データ型を用いて実行される。具体的には、例の複数の算術演算は、複数の乗算演算、複数の加算演算、および複数の減算演算を含む。複数の除算演算は、図３において明示的に示されない。しかしながら、下記の図１１に関連して説明されるように、乗算演算が後に続くスケールされた整数値の逆数を決定することにより除算演算は、実行される。図３の例の複数の方法は、メモリ（例えば、図１３のシステムメモリ）に記憶される機械アクセス可能命令または関数の実行に応答して、算術演算を要求することにより呼び出されるその上、例の複数の算術演算は、ハードウェア（例えば、図１２の例のシステム１２００）および／または機械アクセス可能媒体（例えば、コンピュータアクセス可能媒体）上に記憶されたソフトウェアで実装され、プロセッサシステム（例えば、図１３のプロセッサシステム１３１０）上で実行される。明瞭にするために、例の複数の算術演算は、第一の入力値ＸＳＣＩＮＴ、第二の入力値ＹＳＣＩＮＴ、および結果値ＺＳＣＩＮＴの複数の変数表現を用いることに基づいて説明される。
【００４０】
始めに、第一の入力値ＸＳＣＩＮＴおよび第二の入力値ＹＳＣＩＮＴは、第一のスケールされた整数値（Ｉｘ、Ｑｘ）および第二のスケールされた整数値（Ｉｙ、Ｑｙ）を生成するために展開（アンパック）される（ブロック３０２）。実行された場合、プロセッサ（例えば、図１３のプロセッサ１３１２）またはハードウェア（例えば、図１２の例のシステム１２００）に、第一の入力値ＸＳＣＩＮＴから第一の入力の乗数値Ｉｘおよび第一の入力のスケール値Ｑｘを、ならびに第二の入力値ＹＳＣＩＮＴから第二の入力の乗数値Ｉｙおよび第二の入力のスケール値Ｑｙを分離させまたは解析させる展開（アンパック）関数または命令を実装すること（すなわち、（Ｉｘ、Ｑｘ）＝ｕｎｐａｃｋ（ＸＳＣＩＮＴ））により、複数の入力値ＸＳＣＩＮＴおよびＹＳＣＩＮＴは、展開（アンパック）される。複数の入力の乗数値ＩｘおよびＩｙならびに複数の入力のスケール値ＱｘおよびＱｙは、例えば、システムメモリ１３２４（図１３）またはプロセッサ（例えば、図１３のプロセッサ１３１２）内の複数のレジスタロケーションに記憶される。
【００４１】
複数の入力値ＸＳＣＩＮＴおよびＹＳＣＩＮＴが展開（アンパック）された後、実行されるべき算術演算が乗算かどうかが判断される（ブロック３０４）。ブロック３０４において、実行されるべき算術演算が乗算演算であると判断される場合、展開（アンパック）された入力の複数のスケールされた整数（Ｉｘ、Ｑｘ）および（Ｉｙ、Ｑｙ）は、入力の複数の乗数値ＩｘおよびＩｙならびに入力の複数のスケール値ＱｘおよびＱｙに基づいて、下記複数の式８および９に従って、乗じられる（ブロック３０６）。
【数８】
2007515021.tif 000014
【数９】
2007515021.tif 000015
式８に示されるように、乗数値結果Ｉｚは、第一の入力の乗数値Ｉｘに第二の入力の乗数値Ｉｙを乗じることにより決定される。加えて、スケール値結果Ｑｚは、第一の入力のスケール値Ｑｘを第二の入力のスケール値Ｑｙに加え、結果からバイアス値βを減じることにより決定される。
【００４２】
ブロック３０４において、実行されるべき算術演算が乗算演算ではないと判断される場合、第一の入力のスケール値Ｑｘが第二の入力のスケール値Ｑｙと等しいかどうかが判断される（ブロック３１０）。ブロック３１０において、第一の入力のスケール値Ｑｘが第二の入力のスケール値Ｑｙと等しいと判断される場合、実行されるべき算術演算が加算演算かどうかが判断される（ブロック３１２）。ブロック３１２において、実行されるべき算術演算が加算演算であると判断される場合、入力の複数のスケールされた整数値（Ｉｘ、Ｑｘ）および（Ｉｙ、Ｑｙ）は、入力の複数の乗数値ＩｘおよびＩｙならびに第一の入力のスケール値Ｑｘに基づき下記複数の式１０および１１に従って、加算される（ブロック３１４）。
【数１０】
2007515021.tif 000016
【数１１】
2007515021.tif 000017
式１０に示されるように、乗数値結果Ｉｚは、第一の入力の乗数値Ｉｘを第二の入力の乗数値Ｉｙに加算することで決定される。式１１に示されるように、スケール値結果Ｑｚは、第一の入力のスケール値Ｑｘに等しくセットされる。あるいは、第一の入力のスケール値Ｑｘが第二の入力のスケール値Ｑｙと等しいので、スケール値結果Ｑｚは、第二の入力のスケール値Ｑｙに等しくセットされる（例えばＱｚ＝Ｑｙ）。
【００４３】
ブロック３１２において、実行されるべき算術演算が加算演算ではないと判断される場合、第二の入力のスケールされた整数値（Ｉｙ、Ｑｙ）が第一の入力のスケールされた整数値（Ｉｘ、Ｑｘ）から、入力の複数の乗数値ＩｘおよびＩｙならびに第一の入力のスケール値Ｑｘに基づき下記複数の式１２および１３に従って、減じられる（ブロック３１６）。
【数１２】
2007515021.tif 000018
【数１３】
2007515021.tif 000019
式１２に示されるように、乗数値結果Ｉｚは、第一の入力の乗数値Ｉｘから第二の入力の乗数値Ｉｙを減じることにより決定される。式１３に示されるように、スケール値結果Ｑｚは第一の入力のスケール値Ｑｘに等しくセットされる。あるいは、第一の入力のスケール値Ｑｘが、第二の入力の入力のスケール値Ｑｙに等しいので、スケール値結果Ｑｚは、第二の入力のスケール値Ｑｙに等しくセットされる（例えば、Ｑｚ＝Ｑｙ）。
【００４４】
ブロック３１０において、第一の入力のスケール値Ｑｘが、第二の入力のスケール値Ｑｙと等しくないと判断される場合、最大のスケール値Ｑｍａｘは、入力の複数のスケール値ＱｘおよびＱｙに基づいて決定される（ブロック３１８）。最大のスケール値Ｑｍａｘは、Ｑ−ＭＡＸ命令または関数を実装することにより決定され（すなわち、Ｑｍａｘ＝ｍａｘ（Ｑｘ、Ｑｙ））、実行される場合、プロセッサ（例えば、図１３のプロセッサ１３１２）またはハードウェア（例えば、図１２の例のシステム１２００）に第一の入力のスケール値Ｑｘを第二の入力のスケール値Ｑｙと比較させ、２つのうちより大きな値を決定させ、および最大のスケール値Ｑｍａｘをそのより大きな値に等しくセットさせる。例えば、第二の入力のスケール値Ｑｙが、第一の入力のスケール値Ｑｘよりも大きい場合、最大の入力のスケール値Ｑｍａｘは、第二の入力のスケール値に等しくセットされる（例えば、Ｑｍａｘ＝Ｑｙ）。
【００４５】
その後、実行されるべき算術演算が加算演算かどうかが判断される（ブロック３２０）。ブロック３２０において、算術演算が加算演算であると判断される場合、第一の中間の乗数値Ｉ’ｘおよび第二の中間の乗数値Ｉ’ｙが、加算演算のために、第一の入力の乗数値Ｉｘおよび第二の入力の乗数値Ｉｙに基づいて、決定される（ブロック３２２）。第一の中間の乗数値Ｉ’ｘは、第一の入力の乗数値Ｉｘ、最大のスケール値Ｑｍａｘ、および第一の入力のスケール値Ｑｘに基づき、下記式１４に従って決定される。第二の中間の乗数値Ｉ’ｙは、第二の入力の乗数値Ｉｙ、最大のスケール値Ｑｍａｘ、および第二の入力のスケール値Ｑｙに基づき、下記式１５に従って決定される。角括弧
2007515021.tif 000020
は、
2007515021.tif 000021
が固有の整数であり、
2007515021.tif 000022
である、‘フロア’関数を意味する。
【数１４】
2007515021.tif 000023
【数１５】
2007515021.tif 000024
上記式１４に示されるように、第一の中間の乗数値Ｉ’ｘは、２の最大のスケール値Ｑｍａｘから第一の入力のスケール値Ｑｘを減じた結果乗で割られる第一の乗数値Ｉｘのフロア関数に等しい。上記式１５に示されるように、第二の中間の乗数値Ｉ’ｙは、２の最大のスケール値Ｑｍａｘから第二の入力のスケール値Ｑｙを減じた結果乗で割られる第一の乗数値Ｉｙのフロア関数に等しい。ブロック３２２のプロセスは、中間の複数の乗数値Ｉ’ｘおよびＩ’ｙを決定することとして説明されるが、このプロセスの最適化は、上記ブロック３１８に関連して説明されたように、Ｑｍａｘは、ＱｘまたはＱｙに等しくセットされるので、中間の複数の乗数値のただ１つを決定することにより実装される。したがって、複数の式１４および１５の複数の除数のただ１つは、１（すなわち、２０＝１）以外の値に等しくなる。
【００４６】
ブロック３２０において、算術演算が加算ではないと判断される場合、第一の中間の乗数値Ｉ’ｘおよび第二の中間の乗数値Ｉ’ｙが、減算演算のために、第一の入力の乗数値Ｉｘおよび第二の入力の乗数値Ｉｙに基づいて、決定される（ブロック３２４）。第一の中間の乗数値Ｉ’ｘは、上記式１４に従って、決定される。第二の中間の乗数値Ｉ’ｙは、第二の入力の乗数値Ｉｙ、最大のスケール値Ｑｍａｘ、および第二の入力のスケール値Ｑｙに基づき、下記式１６に従って決定される。
【数１６】
2007515021.tif 000025
上記式１６に示されるように、第二の中間の乗数値Ｉ’ｙは、２の最大のスケール値Ｑｍａｘから第二の入力のスケール値Ｑｙを減じた結果乗で割られる第二の中間の乗数値Ｉｙの負の値のフロア関数に等しい。
【００４７】
ブロック３２２またはブロック３２４において決定される中間の複数の乗数値Ｉ’ｘおよびＩ’ｙならびに最大のスケール値Ｑｍａｘは、第一の中間のスケールされた整数値（Ｉ’ｘ、Ｑｍａｘ）および第二の中間のスケールされた整数値（Ｉ’ｙ、Ｑｍａｘ）を形成するために使用される。所望の算術演算（すなわち、加算演算または減算演算）は、第一の中間のスケールされた整数値（Ｉ’ｘ、Ｑｍａｘ）を第二の中間のスケールされた整数値（Ｉ’ｙ、Ｑｍａｘ）に、ブロック３２２またはブロック３２４において決定された中間の複数の乗数値Ｉ’ｘおよびＩ’ｙならびに最大のスケール値Ｑｍａｘに基づき、下記式１７および式１８に従って加算することにより、その後、実行される。
【数１７】
2007515021.tif 000026
【数１８】
2007515021.tif 000027
式１７に示されるように、乗数値結果Ｉｚは、第一の中間の乗数値Ｉ’ｘを第二の中間の乗数値Ｉ’ｙに加算することにより決定される。具体的には、実行されるべき算術演算が加算演算の場合、中間の複数の乗数値Ｉ’ｘおよびＩ’ｙは、ブロック３２２において決定される。一方、実行されるべき算術演算が減算演算の場合、中間の複数の乗数値Ｉ’ｘおよびＩ’ｙは、ブロック３２４において決定される。上記式１８に示されるように、スケール値結果Ｑｚは、最大のスケール値Ｑｍａｘに等しくセットされる。
【００４８】
要求された算術演算が実行さらた後（ブロック３０６、ブロック３１４、ブロック３１６、またはブロック３２６）、乗数値結果Ｉｚおよびスケール値結果Ｑｚは、結果値ＺＳＣＩＮＴを生成するためにパックされる（ブロック３２８）。結果値ＺＳＣＩＮＴは、パック命令または関数を実装することにより生成され（例えば、ＺＳＣＩＮＴ＝ｐａｃｋ（Ｉｚ、Ｑｚ））、パック命令または関数が実行された場合、プロセッサ（例えば、図１３のプロセッサ１３１２）および／またはハードウェア（例えば、図１２の例のシステム１２００）に、例えば、乗数値結果Ｉｚおよびスケール値結果Ｑｚを上記式４または式５に従って連結させ、結果を結果値ＺＳＣＩＮＴに記憶させる。
【００４９】
図４は、図２に関連して上記で説明された例のスケールされた整数データ型を用いて例の複数の拡張算術演算が実行される一例の方法を表現するフロー図である。例の複数の拡張算術演算は、例えば、図３に関連して説明された、実行された乗算、加算、または減算演算に起因する複数のスケールされた整数値の複数の数値特性を解析および／または修正するために使用される。加えて、下記においてより詳細に説明されるように、例の複数の拡張算術演算は、複数の状態フラグを複数のスケールされた整数値の複数の数値特性に基づいて更新するための複数の演算を備える。
【００５０】
例の複数の拡張算術演算の詳細な説明に進む前に、図４の例の複数の拡張算術演算と組み合わせて複数の図５−９の例の複数の状態演算は、不正確フラグ（ｆｌａｇ＿ｉ）、非正規化フラグ（ｆｌａｇ＿ｕ）、ゼロフラグ（ｆｌａｇ＿ｚ）、負フラグ（ｆｌａｇ＿ｎ）、および飽和フラグ（ｆｌａｇ＿ｑ）を含む複数の状態フラグを更新するために使用される。オーバーフローフラグ（ｆｌａｇ＿ｖ）およびキャリーフラグ（ｆｌａｇ＿ｃ）も同様に、繰り返しオーバーフローフラグをクリアすること（すなわち、ｆｌａｇ＿ｖ＝偽）およびキャリーフラグの状態を逆に、または負フラグの相補的な状態にセットすること（すなわち、ｆｌａｇ＿ｃ＝−（ｆｌａｇ＿ｎ））により実装される。
【００５１】
例を手段として、複数の状態フラグは、複数の算術演算（例えば、図３の例の複数の算術演算）および複数の状態演算（例えば、複数の図５−９の例の複数の状態演算）の複数の結果に関して説明される。加えて、算術演算または状態演算の乗数値Ｉ結果およびスケール値Ｑ結果は、正しい結果（すなわち、理論的な数学的な結果）ではないことは、理解されるべきである。例えば、上記複数の式１４または１５において、中間の複数の乗数値を決定する間に、複数のビットが失われる場合、所望の算術演算の複数の結果は、正確ではなくなる。
【００５２】
算術演算の結果が修正された、または対応する理論的な数学的な結果と等しくない場合（すなわち、不正確な結果が返された）、不正確フラグ（ｆｌａｇ＿ｉ）が、セットされる。例えば、状態演算（例えば、図６の右正規化演算６００）は、状態演算の結果が算術演算の結果と等しくないように、算術演算の結果を修正するために使用される。他の例では、例えば、上記図３に関連して説明されたｍａｘ（Ｑ１、Ｑ２）関数などの例の複数の算術演算に関連した複数の演算が、複数の入力値を修正（例えば、切り取り、丸め込み等）し、元の複数の入力値の対応する理論的な数学的な複数の評価と等しくない複数の結果を生成する場合、不正確フラグは、セットされる。
【００５３】
算術演算または状態演算が２ｌ−２≦Ｉ≦２ｌ−１−１または−２ｌ−１≦Ｉ≦−２ｌ−２−１の範囲内の場合、非正規化フラグ（ｆｌａｇ＿ｕ）は、偽にクリアされる。算術演算または状態演算の結果の値がゼロに等しい場合、ゼロフラグ（ｆｌａｇ＿ｚ）は、真にセットされる。算術演算または状態演算の結果が負の値に等しい場合、負フラグ（ｆｌａｇ＿ｎ）は、真にセットされる。
【００５４】
例の複数の拡張算術演算は、図３の例の複数の算術演算などの複数の算術演算と組み合わせて、同様に使用される。例の複数の算術演算と組み合わせて使用される場合、例の複数の拡張算術演算は、第一の入力値ＸＳＣＩＮＴ、第二の入力値、ＹＳＣＩＮＴ、および結果値ＺＳＣＩＮＴに基づく。例の複数の拡張算術演算は、ハードウェア（例えば、図１２の例のシステム１２００）および／または機械アクセス可能媒体（例えば、コンピュータアクセス可能媒体）上に記憶されるソフトウェアで実装され、プロセッサシステム（例えば、図１３のプロセッサシステム）上で実行される。
【００５５】
始めに、複数の入力値ＸＳＣＩＮＴおよびＹＳＣＩＮＴは、展開（アンパック）される（ブロック４０２）。具体的には、１つの例において、第一の入力値ＸＳＣＩＮＴ、第二の入力値ＹＳＣＩＮＴ、および結果値ＺＳＣＩＮＴは、複数の乗数値Ｉｘ、Ｉｙ、およびＩｚならびに複数のスケール値Ｑｘ、Ｑｙ、およびＱｚを分けることまたは解析することにより展開（アンパック）される。乗算演算、加算演算、または減算演算は、図３の例の複数の算術演算を用いて、その後実行され（ブロック４０４）、複数の結果は、乗数値結果Ｉｚおよびスケール値結果Ｑｚ内に記憶される。その後、ブロック４０４において実行された算術演算が乗算演算かどうかが判断される（ブロック４０６）。
【００５６】
ブロック４０４で実行された算術演算が乗算演算ではないとブロック４０６において判断される場合、第一の仮の不正確フラグ（ｆｌａｇ＿ｉｔ１）の状態が判断される。ブロック４０８における状態決定は、複数の乗数値Ｉｘ、Ｉｙ、およびＩｚ、複数のスケール値Ｑｘ、Ｑｙ、およびＱｚ、図３のブロック３２２またはブロック３２４で決定された中間の複数の乗数値Ｉ’ｘおよびＩ’ｙ、ならびに図３のブロック３１８で決定された最大のスケール値Ｑｍａｘに基づく。下記複数の式１９および２０で説明される複数の条件のどちらかが真の場合、第一の仮の不正確フラグは、真にセットされる。
【数１９】
2007515021.tif 000028
【数２０】
2007515021.tif 000029
式１９で説明される条件は、２の最大のスケール値Ｑｍａｘから第一の入力のスケール値Ｑｘを減じた結果乗を第一の中間の乗数値Ｉ’ｘに乗じた結果は、第一の入力の乗数値Ｉｘに等しくないことを提供する。式２０で説明される条件は、２の最大のスケール値Ｑｍａｘから第二の入力のスケール値Ｑｙを減じた結果乗を第二の中間の乗数値Ｉ’ｙに乗じた結果は、第二の入力の乗数値Ｉｙに等しくないことを提供する。上記複数の式１９および２０で説明された複数の条件のどちらかが真の場合、第一の仮の不正確フラグは、真にセットされる。
【００５７】
第一の仮の不正確フラグの状態が判断された（ブロック４０８）後、またはブロック４０４で実行された算術演算が乗算演算であると、ブロック４０６において判断された場合、右正規化演算が、乗数値結果Ｉｚおよびスケール値結果Ｑｚに基づいて実行される（ブロック４１０）。ブロック４１０で実行された右正規化演算は、図６に関連して下記で説明される右正規化演算６００に基づいて実装される。一般的に、ブロック４０６で実行された右正規化演算は、乗数値Ｉ（例えば、乗数値結果Ｉｚ）およびスケール値Ｑ（例えば、スケール値結果Ｑｚ）を右正規化するために使用される。例えば、乗数値結果Ｉｚが、例のスケールされた整数データ型をオーバーフローする（すなわち、図２の例の２進表現の複数のビットの数をオーバーフローする）場合、ブロック４０６で実行される右正規化が、乗数値結果Ｉｚを右正規化し、オーバーフローした複数のビットを修復するために使用される。
【００５８】
右正規化演算が実行された後（ブロック４１０）、不正確フラグ（ｆｌａｇ＿ｉ）の状態が、第一の仮の不正確フラグ（ｆｌａｇ＿ｉｔ１）および／または第二の仮の不正確フラグ（ｆｌａｇ＿ｉｔ２）に基づいて決定される（ブロック４１２）。ブロック４０４で実行された算術演算が乗算演算の場合、不正確フラグの状態は、第二の仮の不正確フラグの状態に等しくセットされる。しかしながら、ブロック４０４で実行された算術演算が加算または減算演算の場合、不正確フラグの状態は、第一の仮の不正確フラグおよび第二の仮の不正確フラグの論理ＯＲをとることにより決定される（すなわち、ｆｌａｇ＿ｉ＝ｆｌａｇ＿ｉｔ１  ｏｒ  ｆｌａｇ＿ｉｔ２）。
【００５９】
その後、ブロック４０４で実行された算術演算が、乗算演算かどうかが判断される。ブロック４０４で実行された算術演算が、乗算演算であると、ブロック４１３において判断される場合、左正規化演算が、乗数値結果Ｉｚおよびスケール値結果Ｑｚに基づいて実行される（ブロック４１４）。左正規化演算は、図７に関連して説明される例の左正規化演算７００を用いて実装される。一般的に、ブロック４１４で実行される左正規化演算は、乗数値結果Ｉｚおよびスケール値Ｑｚを左正規化し、または最大化するために、乗数値結果Ｉｚの規模に基づいて使用される。例えば、乗数値結果Ｉｚの規模が小さすぎる（例えば、比較的に０に近い）場合、ブロック４１４で実行される左正規化演算は、規模を増加させるために使用される。
【００６０】
一方で、ブロック４１３において、ブロック４０４で実行された算術演算が乗算演算ではないと判断される場合、ゼロチェック演算が実行される（ブロック４１５）。ブロック４１５で実行されるゼロチェック演算は、下記図５に関連して説明される例のゼロチェック演算５００により実装される。ゼロチェック演算は、乗数値結果Ｉｚおよびスケール値結果Ｑｚを修正しならびにゼロフラグおよび負フラグを乗数値結果Ｉｚおよび不正確フラグに基づいて更新するために使用される。
【００６１】
飽和チェック演算は、その後実行される（ブロック４１６）。ブロック４１６の飽和チェック演算は、下記図８に関連して説明される例の飽和チェック演算８００を用いることにより実装される。一般的に、ブロック４１６で実行される飽和チェック演算は、乗数値結果Ｉｚおよびスケール値結果Ｑｚに基づいて実行され、ならびに乗数値結果Ｉｚおよびスケール値結果Ｑｚを所望の数値域内に維持するために乗数値結果Ｉｚおよびスケール値結果Ｑｚを刈り込むために使用される。
【００６２】
その後、ブロック４０４で実行された算術演算が乗算演算であるかどうかが判断される（ブロック４１８）。ブロック４１８において、ブロック４０４で実行された算術演算が乗算演算であると判断される場合、非正規化フラグは、偽にクリアされる（ブロック４２０）。しかしながら、ブロック４１８において、ブロック４０４で実行された算術演算が、乗算演算でないと判断される場合、非正規化チェック演算が実行される（ブロック４２２）。ブロック４２２の非正規化チェック演算は、例の非正規化チェック演算９００を用いることにより実装され、下記図９に関連して説明されるように、非正規化フラグの状態を、乗数値結果Ｉｚに基づいて更新するために使用される。
【００６３】
複数の状態フラグは、その後、例えば、状態フラグレジスタに書き込まれ（ブロック４２４）、乗数値結果Ｉｚおよびスケール値結果Ｑｚは、結果値ＺＳＣＩＮＴにパックされる（ブロック４２６）。
【００６４】
複数の図５−９は、上記図４に関連して説明された例の複数の状態演算を実装することの例の複数の方法を表現する複数のフロー図である。一般的に、例の複数の状態演算は、プロセッサ（例えば、図１３のプロセッサ１３１２）および／またはハードウェア（例えば、図１２の例のシステム）の複数の状態フラグ（例えば、ゼロフラグ、負フラグ等）を更新するために使用される。加えて、例の複数の状態演算は、複数の数値域制限および／または数値の複数の条件（例えば、複数のゼロ条件、複数の負の条件等）に基づいて、複数のスケールされた整数値を修正するために使用される。図２に関連して上記で説明されたように、ハードウェアおよび／またはソフトウェアで実装された場合、複数のプラットフォームベース制限が、例のスケールされた整数データ型の数値域上に課せられる。複数の図５−９の例の複数の状態演算は、Ｉｍｉｎ≦Ｉ≦Ｉｍａｘの乗数値数値域およびＱｍｉｎ≦Ｑ≦Ｑｍａｘのスケール値数値域に基づく。
2007515021.tif 000030
このように、乗数値Ｉの数値域は、複数の符号付き整数値を含み、スケール値Ｑの数値域は、複数の符号なし整数値（例えば、複数の非負値）を含む。複数の図５−９の例の複数の状態演算は、ハードウェア（例えば、図１２の例のシステム１２００）および／または機械アクセス可能媒体（例えば、コンピュータアクセス可能媒体）上に記憶され、プロセッサシステム（例えば、図１３のプロセッサシステム）上で実行されるソフトウェアで実装される。その上、それぞれの状態演算は、メモリ（例えば、図１３のシステムメモリ１３２４）に記憶され、例えば、プロセッサ１３１２または例のシステム１２００が状態演算を実行するように構成する命令または関数を実行することにより実行される。
【００６５】
ここで図５に移ると、フロー図は、上記図２に関連して説明された例のスケールされた整数データ型に基づく一例のゼロチェック演算５００を表現している。例のゼロチェック演算５００は、乗数値Ｉに基づいて、乗数値Ｉおよびスケール値Ｑを修正するために使用される。加えて、例のゼロチェック演算５００は、乗数値Ｉおよび不正確フラグに基づいて、ゼロフラグおよび負フラグを更新するために使用される。例のゼロチェック演算５００は、ゼロチェック命令または関数を実装すること（例えば、（Ｉｒｅｓｕｌｔ、Ｑｒｅｓｕｌｔ、ｆｌａｇ＿ｚ）＝ｃｈｅｃｋ＿ｚｅｒｏ（Ｉ、Ｑ、ｆｌａｇ＿ｉ））により実行され、ゼロチェック命令または関数が実行された場合、プロセッサ（例えば、図１３のプロセッサ１３１２）および／またはハードウェア（例えば、図１２の例のシステム１２００）に、乗数値Ｉ、スケール値Ｑ、不正確フラグ、ゼロフラグ、および負フラグに基づいて、例のゼロチェック演算５００を実行させる。
【００６６】
始めに、乗数値Ｉがゼロに等しいかどうかを判断するために、ゼロテストが実行される（ブロック５０２）。ブロック５０２において、乗数値Ｉがゼロに等しいと判断される場合、乗数値Ｉ、スケール値Ｑ、および負フラグは、更新される（ブロック５０４）。具体的には、乗数値Ｉは、ゼロに等しくセットされ、スケール値Ｑは、例のスケールされた整数データ型の数値域により定義される最小スケール値Ｑｍｉｎに等しくセットされ、ゼロフラグは、不正確フラグの否定された値に等しくセットされ、負フラグは、偽に等しくセットされる。乗数値Ｉ、スケール値Ｑ、ゼロフラグ、および負フラグは、その後、返される（ブロック５０６）。ブロック５０２において、乗数値Ｉがゼロに等しくないと判断される場合、スケール値Ｑが最小スケール値Ｑｍｉｎより小さいかどうかを判断するために比較が実行される（ブロック５０８）。
【００６７】
ブロック５０８において、スケール値が最小スケール値Ｑｍｉｎより小さくないと判断される場合、乗数値Ｉ、スケール値Ｑ、ゼロフラグ、および負フラグは、変更されずに返される（ブロック５０６）。しかしながら、ブロック５０８において、スケール値Ｑが最小スケール値Ｑｍｉｎより小さいと判断される場合、乗数値Ｉ、スケール値Ｑ、およびゼロフラグは、更新される（ブロック５１０）。具体的には、乗数値Ｉは、ゼロに等しくセットされ、スケール値Ｑは、最小スケール値Ｑｍｉｎに等しくセットされ、ゼロフラグは、偽にクリアされる。
【００６８】
比較は、乗数値Ｉがゼロより小さいかどうかを判断するために、その後実行される（ブロック５１２）。ブロック５１２において、乗数値Ｉがゼロより小さいと判断される場合、負フラグは、真にセットされる（ブロック５１４）。負フラグが真にセットされた後（ブロック５１４）、またはブロック５１２で乗数値Ｉがゼロより小さくないと判断され、負フラグが変更されない場合、乗数値Ｉ、スケール値Ｑ、ゼロフラグ、および負フラグは、返される（ブロック５０６）。
【００６９】
図６は、上記図４に関連して説明された例の複数の拡張算術演算と共に使用される例の右正規化演算６００を表現するフロー図である。例の右正規化演算６００は、乗数値Ｉおよびスケール値Ｑを右正規化しおよび不正確フラグを更新するために使用される。例の右正規化演算６００は、右正規化命令または関数（例えば、（Ｉｒｅｓｕｌｔ、Ｑｒｅｓｕｌｔ、ｆｌａｇ＿ｉ）＝ｒｎｏｒｍ（Ｉ、Ｑ））を実装することにより実行され、右正規化命令または関数が実行された場合、プロセッサ（例えば、図１３のプロセッサ１３１２）および／またはハードウェア（例えば、図１２の例のシステム１２００）に、乗数値Ｉ、スケール値Ｑ、および不正確フラグに基づいて、例の右正規化演算６００を実行させる。
【００７０】
始めに、乗数値Ｉが最大乗数値Ｉｍａｘより小さいまたはに等しいおよび最小乗数値Ｉｍｉｎより大きいまたはに等しい（すなわち、Ｉｍｉｎ≦Ｉ≦Ｉｍａｘ）かどうかを判断するために比較が実行される（ブロック６０２）。ブロック６０２において、乗数値Ｉが最大乗数値Ｉｍａｘより小さいまたはに等しいおよび最小乗数値Ｉｍｉｎより大きいまたはに等しいと判断される場合、乗数値Ｉおよびスケール値Ｑは、変更されない。不正確フラグは、その後、偽にセットされ（すなわち、ゼロにクリアされ）（ブロック６０４）、スケールされた整数値（Ｉ、Ｑ）および不正確フラグが、返される（ブロック６０６）。
【００７１】
ブロック６０２において、乗数値Ｉが最大乗数値Ｉｍａｘより小さくないまたはに等しくないおよび最小乗数値Ｉｍｉｎより大きくないまたはに等しくないと判断される場合、乗数値Ｉおよびスケール値Ｑは、右正規化された乗数値Ｉｒｉｇｈｔおよび右正規化されたスケール値Ｑｒｉｇｈｔを決めるために、右正規化される（ブロック６０８）。乗数値Ｉおよびスケール値Ｑは、下記複数の式２３および２４の複数の数値域条件を満たすように選択される非負整数値ｋ（すなわち、ｋ≧０）に基づいて右正規化される。加えて、右正規化された乗数値Ｉｒｉｇｈｔおよび右正規化されたスケール値Ｑｒｉｇｈｔは、下記複数の式２３および２４に従って決められる。
【数２１】
2007515021.tif 000031
【数２２】
2007515021.tif 000032
【数２３】
2007515021.tif 000033
【数２４】
2007515021.tif 000034
非負整数値ｋは、式２１の条件または式２２の条件に従って選択される。加えて、複数の式２３および２４に示されるように、右正規化乗数値Ｉｒｉｇｈｔおよび右正規化スケール値Ｑｒｉｇｈｔは、非負整数値ｋに基づく。式２３に示されるように、右正規化乗数値Ｉｒｉｇｈｔは、２の非負整数値ｋ乗で割られる乗数値Ｉのフロア関数により決定される。式２４に示されるように、右正規化スケール値Ｑｒｉｇｈｔは、スケール値Ｑを非負整数値ｋに加算することにより決定される。
【００７２】
不正確フラグは、右正規化乗数値Ｉｒｉｇｈｔに基づき更新される（ブロック６１０）。具体的には、右正規化乗数値Ｉｒｉｇｈｔおよび２の非負整数値乗（すなわち、２ｋ）の積が乗数値Ｉに等しければ（Ｉｒｉｇｈｔ・２ｋ＝Ｉ？）、不正確フラグは、偽にクリアされ、さもなければ、不正確フラグは変更されない。ブロック６１０において、不正確フラグが更新された後、右正規化スケールされた整数値（Ｉｒｉｇｈｔ、Ｑｒｉｇｈｔ）および不正確フラグは、返される（ブロック６０６）。
【００７３】
図７は、上記図４に関連して説明された例の複数の拡張算術演算と共に使用される一例の左正規化演算７００を説明する算術演算である。例の左正規化演算７００は、乗数値Ｉが比較的に小さいまたはゼロに等しい場合、乗数値Ｉおよびスケール値Ｑを正規化しまたは最大化するために使用される。このように、比較的に小さいまたはゼロの値は、返されない例の左正規化演算７００は、左正規化命令または関数（例えば、（Ｉｒｅｓｕｌｔ、Ｑｒｅｓｕｌｔ）＝ｌｎｏｒｍ（Ｉ、Ｑ））を実装することにより実行され、左正規化命令または関数が実行された場合、プロセッサ（例えば、図１３のプロセッサ１３１２）および／またはハードウェア（例えば、図１２の例のシステム１２００）に、乗数値Ｉ、スケール値Ｑに基づいて、例の左正規化演算７００を実行させる。
【００７４】
図７の例において、乗数値Ｉがゼロに等しい（すなわち、Ｉ＝０？）または最大乗数値Ｉｍａｘより大きいもしくは最小乗数値Ｉｍｉｎより小さい（すなわち、Ｉ＞ＩｍａｘもしくはＩ＜Ｉｍｉｎ）かどうかが最初に判断される（ブロック７０２）。ブロック７０２において、乗数値Ｉがゼロに等しいまたは最大乗数値Ｉｍａｘより大きいもしくは最小乗数値Ｉｍｉｎより小さいと判断される場合、乗数値Ｉおよびスケール値Ｑは、変更されずに残される。スケールされた整数値（Ｉ、Ｑ）が、その後、返される（ブロック７０４）。
【００７５】
ブロック７０２において、乗数値Ｉがゼロに等しくないならびに最大乗数値Ｉｍａｘより小さいまたはに等しいおよび最小乗数値Ｉｍｉｎより大きいまたはに等しい場合、乗数値Ｉおよびスケール値Ｑは左正規化される（ブロック７０６）。乗数値Ｉおよびスケール値Ｑは、左正規化乗数値Ｉｌｅｆｔおよび左正規化スケール値Ｑｌｅｆｔを生成するために、非負整数値ｋ（すなわち、ｋ≧０）を選択することにより左正規化される。より具体的には、非負整数値ｋは、下記式２５または式２６に従って選択される。加えて、左正規化乗数値Ｉｌｅｆｔおよび左正規化スケール値Ｑｌｅｆｔは、下記複数の式２７および２８で説明されるように決定される。
【数２５】
2007515021.tif 000035
【数２６】
2007515021.tif 000036
【数２７】
2007515021.tif 000037
【数２８】
2007515021.tif 000038
式２５に示されるように、非負整数値ｋは、最小乗数値Ｉｍｉｎに関連する数値域に基づいて選択される。あるいは、式２６に示されるように、非負整数値ｋは、最大乗数値Ｉｍａｘに関連する数値域に基づいて選択される。式２７に示されるように、左正規化乗数値Ｉｌｅｆｔは、乗数値Ｉに２の非負整数値ｋ乗を乗じることにより、決定される。式２８に示されるように、左正規化値Ｑｌｅｆｔは、非負整数値ｋをスケール値Ｑから減じることにより決定される。左正規化スケールされた整数値（Ｉｌｅｆｔ、Ｑｌｅｆｔ）は、その後、返される（ブロック７０４）。
【００７６】
図８は、上記図４に関連して説明される例の複数の拡張算術演算と共に使用される一例の飽和チェック演算８００を表現するフロー図である。例の飽和チェック演算８００は、乗数値Ｉおよび／またはスケール値Ｑが範囲外または飽和しているかどうかを、複数の数値域制限値（例えば、Ｑｍａｘ、Ｉｍａｘ等）と乗数値Ｉおよびスケール値Ｑと比較することにより判断するために使用される。それらが複数の数値域制限値の範囲外の場合、乗数値Ｉまたはスケール値Ｑは、短縮される（例えば、複数の数値域制限値にセットされる）。例の飽和チェック演算８００は、乗数値Ｉおよびスケール値Ｑに基づいて飽和フラグの状態を更新するために同様に使用される。
【００７７】
例の飽和チェック演算８００は、飽和チェックまたはクリップ命令または関数（例えば、（Ｉｒｅｓｕｌｔ、Ｑｒｅｓｕｌｔ）＝ｃｌｉｐ＿Ｑ（Ｉ、Ｑ））を実装することにより実行され、飽和チェックまたはクリップ命令または関数が実行された場合、プロセッサ（例えば、図１３のプロセッサ１３１２）および／またはハードウェア（例えば、図１２のプロセッサシステム１２００）に、例の飽和チェック演算８００の複数の比較を、乗数値Ｉ、スケール値Ｑ、および飽和フラグに基づいて実行させる。
【００７８】
比較は、スケール値Ｑおよび最大スケール値Ｑｍａｘに基づいて、スケール値Ｑが最大スケール値Ｑｍａｘより小さいまたはに等しいかどうかを判断するために実行される（ブロック８０２）。ブロック８０２において、スケール値Ｑが最大スケール値Ｑｍａｘより小さいまたはに等しいと判断される場合、飽和フラグは偽にクリアされる（ブロック８０４）。しかしながら、ブロック８０２において、スケール値Ｑが最大スケール値Ｑｍａｘより小さくないまたはに等しくないと判断される場合、飽和フラグは、真にセットされ（ブロック８０５）、スケール値は、最大スケール値Ｑｍａｘにセットされる（すなわち、Ｑ＝Ｑｍａｘ）（ブロック８０６）。
【００７９】
飽和フラグがクリアされた後（ブロック８０４）、またはスケール値Ｑが最大スケール値Ｑｍａｘに等しくセットされた後、ゼロテストが、乗数値Ｉに基づき、乗数値Ｉがゼロより小さい（すなわち、Ｉ＜０？）かどうかを判断するために実行される（ブロック８０８）。ブロック８０８において、乗数値Ｉがゼロより小さいと判断される場合、乗数値Ｉは、最小乗数値Ｉｍｉｎに等しくセットされる（すなわち、Ｉ＝Ｉｍｉｎ）（ブロック８１０）。しかしながら、ブロック８０８において、乗数値Ｉがゼロより小さくないと判断される場合、乗数値Ｉは、最大乗数値Ｉｍａｘに等しくセットされる（すなわち、Ｉ＝Ｉｍａｘ）（ブロック８１２）。ブロック８０４において、飽和フラグが偽にクリアされた後、ブロック８１０において、乗数値Ｉは、Ｉｍｉｎにセットされ、またはブロック８１２において、乗数値Ｉは、最大乗数値Ｉｍａｘに等しくセットされ（すなわち、Ｉ＝Ｉｍａｘ）、スケールされた整数値（Ｉ、Ｑ）および飽和フラグは、返される（ブロック８１４）。
【００８０】
図９は、上記図４に関連して説明された例の複数の拡張算術演算と共に使用される一例の非正規化チェック演算９００を表現するフロー図である。例の非正規化チェック演算９００は、乗数Ｉが非正規化値かどうかを判断するために使用される。一般的に、複数の非正規化値は、下記に説明されるように特定の正規化数値域内にない値である。加えて、例の非正規化チェック演算９００は、乗数値Ｉに基づいて、非正規化フラグの状態を更新するために使用される。
【００８１】
例の非正規化チェック演算９００は、チェック非正規化命令または関数（例えば、（ｆｌａｇ＿ｕ）＝ｃｈｅｃｋ＿ｕｎｎｏｒｍ（Ｉ））を実装することにより実行され、チェック非正規化命令または関数が実行された場合、プロセッサ（例えば、図１３のプロセッサ１３１２）および／またはハードウェア（例えば、図１２の例のシステム１２００）に、乗数値Ｉに基づいて、複数の比較を実行させ、非正規化フラグの状態を更新させる。
【００８２】
乗数値Ｉおよび数値域条件に基づく複数の比較は、乗数値Ｉが非正規化値かどうかを判断するために実行される（ブロック９０２）。具体的には、数値域条件は、下記式２９により説明される。
【数２９】
2007515021.tif 000039
ブロック９０２において、乗数値Ｉが、式２９で説明されるように、ＩｍｉｎおよびＩｍａｘに基づく数値域条件の範囲内であると判断される場合、非正規化フラグは、真にセットされる（ブロック９０４）。しかしながら、ブロック９０２において、乗数値Ｉが、式２９で説明される数値域条件を満たさないと判断される場合、非正規化フラグは変更されない。
【００８３】
図１０は、正規化演算が、上記図２に関連して説明された例のスケールされた整数データ型を用いて実行される一例の方法を表現するフロー図である。正規化演算は、スケールされた整数値が、例えば、複数の図５−９の例の複数の状態演算の乗数値数値域、またはスケール値数値域、および／または複数の数値条件により説明される例のスケールされた整数データ型の複数の値の所望の範囲内であることを保証するために使用される。正規化演算は、ハードウェア（例えば、図１２の例のシステム１２００）および／または機械アクセス可能媒体に記憶され、プロセッサシステム（例えば、図１３のプロセッサシステム１３１０）に実行されるソフトウェアで実装される。
【００８４】
正規化演算は、図４の例の複数の拡張算術演算を用いることにより、１に等しい正規化値ＮＳＣＩＮＴおよび入力値ＸＳＣＩＮＴに基づいて乗算演算を実行するために実装される。このように、入力値ＸＳＣＩＮＴは、例の複数の拡張算術演算で実装されるような乗算演算および／または複数の図５−９の例の複数の状態演算により修正されない。加えて、例の正規化演算１０００は、入力値ＸＳＣＩＮＴに基づいて複数の状態フラグ（例えば、上記図４に関連して説明された複数の状態フラグ）を更新するために使用される。
【００８５】
入力値ＸＳＣＩＮＴが得られ（ブロック１００２）、正規化値ＮＳＣＩＮＴが得られる（ブロック１００４）。入力値ＸＳＣＩＮＴは、例のスケールされた整数データ型の任意の所望のスケールされた整数値である。正規化値ＮＳＣＩＮＴは、一般的に、正規化値ＮＳＣＩＮＴ＝（１、β）（すなわち、ＮＳＣＩＮＴ＝１．０）を決定するために、１に等しい乗数値ＩＮおよび入力値ＮＳＣＩＮＴのバイアス値βに等しいＱＮを有するために選択される。
【００８６】
入力値ＸＳＣＩＮＴおよび正規化値ＮＳＣＩＮＴは、乗算演算に渡される（ブロック１００６）。具体的には、乗算演算は、複数の図５−９の例の複数の状態演算の１つ以上を含み、例の複数の拡張算術演算の乗算演算と実質的に同様または同一である（図４）。乗算演算および関連した複数の状態演算は、入力値ＸＳＣＩＮＴの複数の数値特性を解析および／または修正し、複数の図５−９の例の複数の状態演算に示されるように複数の状態フラグを更新する。
【００８７】
図１１は、上記図２に関連して説明された例のスケールされた整数データ型を用いて逆数演算が実行される一例の方法を表現するフロー図である。より具体的には、図１１に関連して説明される複数の方法は、スケールされた整数値の逆数を見つけるために使用される。スケールされた整数値の逆数は、例えば、逆数乗算に基づく除算演算（すなわち、Ｘ÷Ｙ＝Ｘ・Ｙ−１）を実行するために使用される。加えて、図１１の複数の方法は、ハードウェア（例えば、図１２の例のシステム１２００）および／または機械可読媒体に記憶され、プロセッサシステム（例えば、図１３のプロセッサシステム１３１０）上で実行されるソフトウェアで実装される。
【００８８】
入力値ＸＳＣＩＮＴは、入力のスケールされた整数値（Ｉ、Ｑ）を生成するために、入力値ＸＳＣＩＮＴから入力の乗数値Ｉおよび入力のスケール値Ｑを分けるまたは解析することにより、展開（アンパック）される（ブロック１１０２）。入力の乗数値Ｉおよび入力のスケール値Ｑは、その後、１≦Ｉ’＜２の範囲内のスケールされた乗数値Ｉ’およびスケールされたスケール値を有するスケールされた整数値（Ｉ’、Ｑ’）を生成するために再定義またはスケールされる（ブロック１１０４）。より具体的には、スケールされた乗数値Ｉ’およびスケールされたスケール値Ｑ’は、入力のスケールされた整数値（Ｉ、Ｑ）の数値等価値（上記式３で説明されたように）をスケールされた整数値（Ｉ’、Ｑ’）の数値等価値に等しくセットすること、１≦Ｉ’＜２の範囲のスケールされた乗数値Ｉ’を選択すること、および下記式３０に示されるようにスケールされたスケール値を解くことにより決定される。
【数３０】
2007515021.tif 000040
【００８９】
スケールされた整数値（Ｉ’，Ｑ’）の逆数値は、その後、スケールされた乗数値Ｉ’およびスケールされたスケール値Ｑ’に基づいて決定される（ブロック１１０６）。逆数値は、下記式３１に説明されるように決定される。
【数３１】
2007515021.tif 000041
式３１に示されるように、入力のスケールされた整数値（Ｉ，Ｑ）の逆数値１／Ｉ’・２Ｑ’−βは、１≦Ｉ’＜２であるスケールされた整数値（Ｉ’，Ｑ’）の逆数に比例する。
【００９０】
スケールされた乗数値Ｉ’の逆数の値（すなわち、１／Ｉ’）は、その後、決定される（ブロック１１０８）。スケールされた乗数値の逆数の値１／Ｉ’を決定することは、逆関数の値を決定することと類似または同一である。具体的には、逆関数の値は、入力変数ｘに対して、逆関数近似多項式ｐ（ｘ）を決定することにより、例えば、最良近似法を用いて決定される。逆関数近似多項式ｐ（ｘ）の値は、その後、近似された逆数値ｐ（Ｉ’）・１／２Ｑ’−βを生成するために、入力変数値をスケールされた乗数値Ｉ’に等しくセットすることにより決定される。
【００９１】
スケーリング定数ｓの値は、２のスケーリング定数乗（すなわち、２ｓ）がスケールされた乗数値の逆数１／Ｉ’により乗じられる値（すなわち、２ｓ／Ｉ’または２ｓ・ｐ（Ｉ’））が比較的に大きな値となるように決定される（ブロック１１１０）。入力のスケールされた整数値（Ｉ，Ｑ）の逆数を用いる複数の演算（例えば、複数の乗算演算）が比較的に正確な複数の結果を生成できるように、２ｓ／Ｉ’の比較的に大きな値を決定する。
【００９２】
２のスケーリング定数ｓ乗（２ｓ）の値は、その後、下記式３２に示されるように、逆数の乗数値Ｉｒｅｃｉｐおよび逆数のスケール値Ｑｒｅｃｉｐを決定するために、逆数値１／Ｉ’・２Ｑ’ーβの分子および分母により乗じらる（ブロック１１１２）。
【数３２】
2007515021.tif 000042
式３２に示されるように、２のスケーリング定数ｓ乗（２ｓ）と２のスケールされたスケール値Ｑ’およびスケーリング定数ｓの合計の負の結果乗を乗じた逆関数近似多項式ｐ（Ｉ’）との積は、２のスケーリング定数ｓ乗（２ｓ）を逆数値１／Ｉ’・２Ｑ’−βの分子および分母で乗じる結果におよそ等しくなる。逆数乗数値Ｉｒｅｃｉｐおよび逆数スケール値Ｑｒｅｃｉｐは、その後、スケールされた整数型フォーマット（例えば、図２の例の２進表現２００）にパックされる（ブロック１１１４）。
【００９３】
図１２は、ここで説明される複数の装置、複数の方法、および複数の製品を実装するために使用される一例のシステム１２００の機能ブロック図である。図１２に示される複数の構造は、ハードウェアおよび／またはソフトウェアの任意の所望の組み合わせを用いて実装される。例えば、１つ以上の集積回路、ディスクリート半導体素子、または受動電子素子が使用される。加えて、またはあるいは、図１２の複数の構造の幾つかもしくは全て、またはその一部は、機械可読媒体上に記憶される複数の命令、コード、または他のソフトウェアおよび／またはファームウェア等実装され、実行された場合、例えば、プロセッサシステム（例えば、図１３のプロセッサシステム１３１０）にここで説明された複数の方法を実行させる。
【００９４】
一般的に、例のシステム１２００は、複数の算術演算および複数の状態演算を、上記図２に関連して説明される例のスケールされた整数データ型に基づいて実行する。加えて、例のシステム１２００は、複数の状態フラグ（例えば上記図４に関連して説明された複数の状態フラグ）を、上記図４に関連して説明された例の複数の拡張算術演算および上記複数の図５−９に関連して説明された例の複数の状態演算に基づいて更新するように構成される。一般的に、例のシステム１２００は、ここで説明される複数の方法を、ランタイム段階または例のシステム１２００もしくはプロセッサシステム１３１０（図１３）の任意の他の動作状態の間に実行するように構成される。
【００９５】
ここで、図１２の詳細に移ると、例のシステム１２００は、データインターフェース１２０２、データ展開器（アンパッカ）１２０４、データパッカ１２０６、逆数生成器１２０８、比較器１２１０、減算器１２１２、シフタ１２１４、乗算器１２１６、および加算器を備え、示されるようにそれらの全ては、通信的に結合されている。データインターフェース１２０２は、複数のスケールされた整数値、複数のバイアス値、および例えば、メモリロケーションなどの、ここで説明された複数の演算に関連する任意の他の値を得て、記憶するように構成される。例えば、データインターフェース１２０２は、メモリロケーションから複数のスケールされた整数値を得て、それらをデータ展開器（アンパッカ）１２０４へ送る。さらに、データインターフェース１２０２は、複数のスケールされた整数値をデータパッカ１２０６から得て、複数のスケールされた整数値を複数のメモリロケーションの１つ以上に記憶する。加えて、またはあるいは、データインターフェース１２０２は、複数の演算（例えば、上記図３に関連して説明された例の複数の算術演算および上記複数の図５ー９に関連して説明された例の複数の状態演算）から複数のスケールされた整数値を得ておよび／またはと通信するように構成される。
【００９６】
データ展開器（アンパッカ）１２０４は、スケールされた整数データ型フォーマット（例えば、図２の例の２進表現２００）内の複数のスケールされた整数値を図１２の複数の機能ブロックの任意から得て、複数のスケールされた整数値を、複数のスケールされた整数値のそれぞれから乗数値Ｉおよびスケール値Ｑに分けることまたは解析することにより、展開（アンパック）するように構成される。加えて、データ展開器（アンパッカ）１２０４は、複数の乗数値Ｉおよび複数のスケール値Ｑを図１２の複数の機能ブロックの任意に伝えるように構成される。
【００９７】
データパッカ１２０６は、複数の乗数値Ｉおよび対応する複数のスケール値Ｑを図１２の複数の機能ブロックの任意から得て、複数の乗数値Ｉおよび複数のスケール値Ｑをスケールされた整数データ型フォーマット（例えば、図２の例の２進表現２００）にパックするように構成される。加えて、データパッカ１２０６は、スケールされた整数データ型フォーマット内の複数のスケールされた整数値を図１２の複数のブロックの任意に伝えるように構成される。
【００９８】
逆数生成器１２０８は、複数のスケールされた整数値および複数のバイアス値βを得て、図１１の複数の方法に関連して説明されたように複数の逆数スケールされた整数値を生成するように構成される。加えて、逆数生成器１２０８は、複数の逆数スケール生成器を図１２の複数の機能ブロックの任意に伝えるように構成される。
【００９９】
比較器１２１０は、複数のスケールされた整数値を得て、複数の比較を実行するように構成される。例えば、比較器１２１０は、複数のスケールされた整数値を、複数の乗数数値域制限ＩｍｉｎおよびＩｍａｘならびに複数のスケール数値域制限ＱｍｉｎおよびＱｍａｘなどの複数の数値域制限と比較するように構成される。比較器１２１０は、例のゼロチェック演算５００（図５）および例の左正規化演算７００（図７）に関連したゼロテストなどの複数のゼロテスト比較を実行するように同様に構成される。加えて、比較器１２１０は、上記複数の図６および７に関連して説明された非負整数値ｋなどの他の複数の値を得て、例の右正規化演算６００（図６）および例の左正規化演算７００に関連して説明された複数の比較を実行するように構成される。その上、比較器１２１０は、複数の図５−９の例の複数の状態演算に関連して説明された複数の比較を実行するように構成される。
【０１００】
減算器１２１２は、複数のスケールされた整数値および複数のバイアス値βを得て、複数のスケールされた整数値および／またはバイアス値βに基づいて複数の減算演算を実行するように構成される。例えば、上記式３で説明されたスケールされた整数符号値の数値変換のスケール値Ｑおよびバイアス値βの減算は、減算器１２１２により実行される。加えて、上記式１２の入力の複数の乗数値ＩｘおよびＩｙの減算演算は、減算器１２１２により実行される。
【０１０１】
シフタ１２１４は、複数のスケールされた整数値および／または他の複数の値に基づいて、複数のシフト演算および／または複数のシフト演算を経由して除算演算を実行するように構成される。例えば、上記図３に関連して説明された中間の複数の乗数値Ｉ’ｘおよびＩ’ｙは、上記複数の式１４および１５に従って決定される。より具体的には、第一の中間の乗数値Ｉ’ｘは、Ｑｍａｘ−Ｑｘの値に等しい回数だけ第一の入力の乗数値Ｉｘを右シフトすることに基づいて決定される。
【０１０２】
シフタ１２１４は、例えば、上記複数の式２１および２２で説明された複数の数値域条件の項の値などの複数の値をシフトするために同様に構成される。例えば、シフタ１２１４は、非負整数値ｋに等しい回数だけ乗数値Ｉを右シフトすることにより項を評価するように構成される。
【０１０３】
乗算器１２１６は、ここで説明される複数の方法に関連する複数のスケールされた整数値および任意の他の複数の値に基づいて、複数の乗算演算を実行するように構成される。例えば、乗算器１２１６は、例の複数の算術演算（図３）に関連して説明された複数のスケールされた整数値の乗算演算を実行するように構成される。乗算器１２１６は、上記式３のスケールされた整数数値評価の乗算を実行するために同様に使用される。具体的には、乗算器１２１６は、乗数値Ｉに２の合成スケール指数（すなわち、Ｑ−β）乗の結果を乗じるように構成される。加えて、乗算器１２１６は、例えば、逆数生成器１２０８からスケールされた整数逆数値を受け取り、スケールされた整数逆数を他のスケールされた整数値で乗じることによる逆数乗算に基づいて複数の除算演算を実行するために使用される。
【０１０４】
加算器１２１８は、複数のスケールされた整数値およびここで説明される複数の方法に関連する任意の他の複数の値に基づいて複数の加算演算を実行するために使用される。例えば、加算器１２１８は、図３に関連して説明される複数のスケールされた整数値の複数の加算演算を実行するように構成される。加算器１２１８は、例えば、上記複数の式６および７の指数（１＋β）などの複数の指数を加算するように同様に構成される。
【０１０５】
図１３は、ここで説明される複数の装置および複数の方法を実装するために使用される一例のプロセッサシステム１３１０のブロック図である。図１３に示されるように、プロセッサシステム１３１０は、相互接続バスまたはネットワーク１３１４に結合されたプロセッサ１３１２を備える。プロセッサ１３１２は、レジスタセットまたはレジスタスペース１３１６を有し、これは、図１３では、全体的にオンチップであるように描かれているが、これは、あるいは、全体的にまたは部分的にオフチップで配置され、複数の専用電気接続を経由しておよび／または相互接続ネットワークもしくはバス１３１４を経由して直接接続されてよい。プロセッサ１３１２は、例えば、Ｉｎｔｅｌ  Ｘ−Ｓｃａｌｅ（登録商標）ファミリ、Ｉｎｔｅｌ  Ｐｅｎｔｉｕｍ（登録商標）ファミリ等からのプロセッサなどの、任意の適したプロセッサ、プロセッシングユニットまたはマイクロプロセッサでよい。下記で詳細に説明される例において、プロセッサ１３１２は、一般にＩＡ−３２プロセッサと称される３２ビットＩｎｔｅｌプロセッサである。図１３には示されていないが、システム１３１０は、マルチプロセッサシステムでよく、したがって、プロセッサ１３１２と同一のまたは同様で、相互接続バスまたはネットワーク１３１４に結合された１つ以上の追加のプロセッサを備えてよい。
【０１０６】
図１３のプロセッサ１３１２は、メモリコントローラ１３２０および入力／出力（Ｉ／Ｏ）コントローラ１３２２を有するのチップセット１３１８に結合される。良く知られるように、チップセットは、一般的に、チップセットに結合される１つ以上のプロセッサによりアクセス可能なまたは使用される複数の汎用および特定用途レジスタ、タイマ等と同様に複数のＩ／Ｏおよびメモリ管理機能を提供する。メモリコントローラ１３２０は、プロセッサ１３１２（複数のプロセッサがある場合、または複数のプロセッサ）がシステムメモリ１３２４および不揮発性メモリ１３２５にアクセスすることを可能にする複数の機能を実行する。
【０１０７】
システムメモリ１３２４は、例えば、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）などの揮発性メモリの任意の所望のタイプを有する。不揮発性メモリ１３２５は、フラッシュメモリまたは読み出し専用メモリ（ＲＯＭ）などの不揮発性メモリの任意の所望のタイプを有する。
【０１０８】
Ｉ／Ｏコントローラ１３２２は、プロセッサ１３１２が複数の周辺入力／出力（Ｉ／Ｏ）装置１３２６および１３２８とＩ／Ｏバス１３３０を経由して通信することを可能にする複数の機能を実行する。複数のＩ／Ｏデバイス１３２６および１３２８は、例えば、キーボード、ビデオディスプレイもしくはモニタ、マウスなどのＩ／Ｏデバイスの任意の所望のタイプでよい。メモリコントローラ１３２０およびＩ／Ｏコントローラ１３２２は、図１３において、チップセット１３１８内の別々の複数の機能ブロックとして描かれているが、これら複数のブロックにより実行される複数の機能は、１つの半導体回路内に集積されてよく、または、２つ以上の別々の集積回路を用いて実装されてもよい。
【０１０９】
ここで説明される複数の方法は、プロセッサ１３１２により実行され、コンピュータ可読媒体上に記憶される複数の命令を用いて実装される。コンピュータ可読媒体は、複数の大容量記憶デバイス（例えば、ディスクドライブ）、複数のリムーバブル記憶デバイス（例えば、複数のフロッピーディスク、複数のメモリカードまたはスティック等）および／または複数の集積メモリデバイス（例えば、ランダムアクセスメモリ、フラッシュメモリ等）の任意の所望の組み合わせを用いて実装される半導体、磁気および／または光学メディアの任意の所望の組み合わせを備える。
【０１１０】
特定の複数の方法、複数の装置、および複数の製品がここで説明されたが、本発明の範囲は、これに制限されない。それどころか、本発明は、全ての方法、装置、および製品を適切に、添付の複数の請求項の範囲内で、文言上または均等論に基づいて網羅する。
【図１】
2007515021.tif 000043
【図２】
2007515021.tif 000044
【図３】
2007515021.tif 000045
【図４】
2007515021.tif 000046
【図５】
2007515021.tif 000047
【図６】
2007515021.tif 000048
【図７】
2007515021.tif 000049
【図８】
2007515021.tif 000050
【図９】
2007515021.tif 000051
【図１０】
2007515021.tif 000052
【図１１】
2007515021.tif 000053
【図１２】
2007515021.tif 000054
【図１３】
2007515021.tif 000055
【国際調査報告】
2007515021.tif 000056
2007515021.tif 000057
2007515021.tif 000058
2007515021.tif 000059