JP2011509491A - 正規化カウントを判定するプロセッサ及び方法 - Google Patents

正規化カウントを判定するプロセッサ及び方法 Download PDF

Info

Publication number
JP2011509491A
JP2011509491A JP2010542362A JP2010542362A JP2011509491A JP 2011509491 A JP2011509491 A JP 2011509491A JP 2010542362 A JP2010542362 A JP 2010542362A JP 2010542362 A JP2010542362 A JP 2010542362A JP 2011509491 A JP2011509491 A JP 2011509491A
Authority
JP
Japan
Prior art keywords
bits
value
zero
operand
count
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.)
Withdrawn
Application number
JP2010542362A
Other languages
English (en)
Inventor
クリシバサン、シャンカー
プロンケ、エリッチ・ジェイ.
コドレスキュ、ルシアン
ジェング、マオ
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2011509491A publication Critical patent/JP2011509491A/ja
Withdrawn legal-status Critical Current

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/74Selecting or encoding within a word the position of one or more bits having a specified value, e.g. most or least significant one or zero detection, priority encoders
    • 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/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49936Normalisation mentioned as feature only

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)
  • Measuring Frequencies, Analyzing Spectra (AREA)

Abstract

特定の実施態様において、正規化ロジック回路において正規化されるべきオペランド(該オペランドは複数のビットを含む)を受信することを含む方法が開示される。本方法は、前記オペランドの値が0に等しい場合に、0出力を生成し、前記値が0に等しくない場合に、前記オペランドの先行ビットのカウントより1少ない数を表す出力値を生成することを更に含む。

Description

本開示は、一般に正規化カウントを判定するプロセッサ及び方法に関係する。
コンピュータ・アプリケーションにおいて、数値計算は、広範囲の値に及ぶ数をもたらす場合がある。二進数で動作するプロセッサ内部で、広範囲の値を網羅(encompass)するように値を基準化(scale)するために、正規化(normalization)が使用される場合がある。例えば、統計計算において、ある値の範囲(例えば、0〜1/2)を、第2の値の範囲(例えば、0〜1)に基準化することは、望ましい場合がある。
一般に、正規化プロセス又は命令は、入力又は出力信号を基準化又は調整(adjust)する自動利得制御のために使用されることがある。例えば、無線電話において、正規化命令は、スピーカ出力のボリューム又はマイク入力に関連するボリュームを調整するために使用されることがある。他の特定の例において、正規化オペレーションは、例えば対数関数のような数学関数を推定するために使用されることがある。特定の例において、正規化命令は、符号付きの値の連続する先行ビット(leading bits)の数をカウントする。その連続する先行ビットの数が、ある値をその連続する先行ビットのカウント数だけ左側にシフトすることによってその値を正規化するために使用されると、その値に関連する符号ビットが失われることがある。したがって、その結果として生じるシフトされた数は、誤っている可能性がある。
特定の実施態様において、正規化されるべきオペランド(該オペランドは複数のビットを含む)を受信することを含む方法が開示される。本方法は、前記オペランドの値が0に等しい場合に、0出力を生成することと、前記値が0に等しくない場合に、前記オペランドの先行ビットのカウントから1を減じた値を表す出力値を生成することを更に含む。
他の特定の実施態様において、正規化命令を実行するように構成された命令実行ユニットを含むプロセッサが開示される。前記命令実行ユニットは、複数のビットを含むオペランドを受信するための入力と、複数のシフトされたビットを生成するために、前記複数のビットを左側に1ビットシフトする、前記入力に接続されたシフター回路とを含む。前記命令実行ユニットは、前記複数のシフトされたビットを受信し且つ前記複数のシフトされたビットの先行ビットの数をカウントする先行ビット・カウント回路を更に含む。該先行ビット・カウント回路は、先行ビットの数から1を減じた値を表しているカウントを出力へ供給する。
更に他の特定の実施態様において、入力値を正規化するために、ある命令がプロセッサにより実行可能である。前記命令は、入力の値を判定する実行ユニットにより実行可能な第1の命令を含む。前記命令は、前記入力における前記判定された値が0である場合に0出力を生成する実行ユニットにより実行可能な第2の命令を含む。前記命令はまた、前記判定された値が非0である場合にビットの先行数のカウントから1を減じた値を表す正規化量を生成する実行ユニットにより実行可能な第3の命令を含む。
更に他の特定の実施態様において、複数のビットを含むオペランドを受信することと、前記シフトされた複数のビットを生成するために、前記複数のビットを左側に1ビットシフトすることと、前記シフトされた複数のビットの最下位ビットに0値を挿入することを含む方法が開示される。前記方法は、前記シフトされた複数のビットにおけるビットの先行数をカウントすることと、前記受信された複数のビットが非0の値を持つ場合に前記ビットの先行数から1を減じた値を表すカウントを出力することを更に含む。
他の特定の実施態様において、複数のビットを含むオペランドを受信するための手段を含み、また、前記オペランドの値が0に等しい場合に、0出力を生成するための手段を含むプロセッサが、開示される。前記プロセッサは、前記オペランドの値が0に等しくない場合に、前記オペランドの先行ビットのカウントから1を減じた値を表す出力値を生成するための手段を更に含む。
説明された回路デバイス及び方法の実施態様により与えられる一つの特定の利点は、0値が受信される場合に(すなわち、入力におけるビットの全てが0に等しい場合)に、ビットをシフトすることなく、出力において0値が供給されるということである。この例において、カウント値は、速く且つ減少した電力消費で、出力されても良い。
他の特定の利点は、正しい値を供給するために、選択されたビットを出力においてマスクすることによって誤ったデータが削除されるという点で、提供される。
更に他の特定の利点は、先行ビットがカウントされても良く、そして、プロセッサが、同一の回路を使用して、先行1又は先行0をカウントすることを可能にするという点で、提供される。
本開示の他の態様、利点及び特徴は、以下のセクション(図面の簡単な説明、詳細な説明、及び特許請求の範囲)を含む本出願全体のレビューの後、明らかになるであろう。
図1は、正規化量(normalization amount)を判定するように構成された正規化ロジック回路を備えた実行ユニットを含むシステムの特定の具体例のブロック図である。 図2は、正規化カウント(normalization count)を判定するように構成された正規化ロジック回路を含む回路デバイスの特定の具体例の図である。 図3は、正規化カウントを判定するように構成された正規化ロジック回路を含む回路デバイスの第2の特定の具体例の図である。 図4は、正規化カウントを判定する方法の特定の具体例のフローチャートである。 図5は、正規化カウントを判定する方法の第2の特定の具体例のフローチャートである。 図6は、正規化カウントを判定する方法の第3の特定の具体例のフローチャートである。 図7は、正規化量を判定するように構成された正規化回路を有する実行ユニットを含む無線通信デバイスの具体例のブロック図である。
詳細な説明
図1は、正規化量を判定するように構成された正規化ロジック回路を備えた実行ユニットを含む処理システム100の特定の具体例のブロック図である。処理システム100は、バス・インタフェース104を介して命令キャッシュ106及びデータ・キャッシュ112と通信するように構成されたメモリ102を含む。命令キャッシュ106は、バス110によりシーケンサ114に接続される。命令キャッシュ106は、正規化命令116を記憶することができる。正規化命令116は、バス110を介してシーケンサ114に与えられることができる。処理システム100はまた、割り込みを受理するか否かを判定し及び命令の実行を制御するシーケンサ114内の制御ロジックによりアクセスされることができるビット群を記憶する監視制御レジスタ群132及びグローバル制御レジスタ群134を含んでも良い。
特定の実施態様において、命令キャッシュ106は、複数のカレント命令レジスタ(current instruction registers)を介してシーケンサ114に接続される。それらは、バス110に接続されても良く、また、処理システム100の特定のスレッド群に関連していても良い。特定の実施態様において、処理システム100は、六つのスレッドを含むインターリーブされたマルチスレッドのプロセッサである。
シーケンサ114は、第1の命令実行ユニット118、第2の命令実行ユニット120、第3の命令実行ユニット122、及び、第4の命令実行ユニット124に接続される。各々の命令実行ユニット118,120,122及び124は、第2のバス128を介して汎用レジスタ・ファイル126に接続されることができる。汎用レジスタ・ファイル126はまた、第3のバス130を介して、シーケンサ114、データ・キャッシュ112、及びメモリ102に接続されることができる。
第1の実行ユニット118は、正規化ロジック回路136を含み、第2の実行ユニット120は、正規化ロジック回路138を含む。特定の実施態様において、実行ユニット118,120,122及び124の各々が、正規化ロジック回路を含んでも良い。示された実施態様において、実行ユニット118及び120は、複数のビットに関係する正規化カウントを提供するために、正規化ロジック回路136及び138を利用するように構成される。
特定の具体例において、シーケンサ114は、正規化命令116を、第1の実行ユニット118に与える。正規化命令116の受信に応答して、第1の実行ユニット118は、オペランドを検索し、該オペランドのビットの先行数(leading number)から1を減じた値(すなわち、ビットの先行数のカウントから1を減じた値)をカウントするために、正規化ロジック回路136を使用する。正規化ロジック回路136は、オペランドのすべてのビットが0である場合に、0値を選択的に出力し、オペランドのいずれかのビットが非0である場合に、ビットの先行数のカウントから1を減じた値を表す数を選択的に出力するように構成される。ビットの先行数のカウントは、同一の値をもつ連続するビット(最上位ビットで始まり且つ最上位ビットを含む)の数を特定(identify)することができる。その数は、オペランドのデータ値を基準化又はさもなければ調整するための他の命令を実行する際に使用されても良い。例えば、オペランドが0〜1/2の範囲の値を表す場合に、その数は、オペランドを0〜1の範囲に基準化するために使用されても良い。
特定の具体例において、正規化ロジック回路136及び138は、先行1カウント回路(leading ones counting circuits)、先行0カウント回路(leading zeros counting circuits)、又は、それらの任意の組み合せ(図示せず)を含んでも良い。特定の実施態様において、正規化ロジック回路136及び138は、(例えば、図2中に示される先行ゼロ・カウンタ220のような)先行0カウント回路を含んでも良い。この例において、先行ビットが1であるならば、正規化ロジック回路136及び138は、先行0をカウントする前にオペランドの補数演算をする(complement)ロジック回路を含んでも良い。他の特定の実施態様において、正規化ロジック回路136及び138は、先行1をカウントし、かつ、先行0をカウントし、そして、いずれであってもカウントがより大きいものを選択するように構成される。2の補数(two’s complement numbers)に関して、負数については、先行0の数が0であり、正数については、先行1の数が0である。それゆえ、先行ビットの数は、オペランドの符号、大きさ、又は両方を判断するために使用されても良い。
特定の実施態様において、正規化命令116は、二つの状況を含む:1)入力オペランドの値が0であるならば、0を出力する;及び2)入力オペランドの値が非0であるならば、オペランドの先行ビットのカウントから1を減じた値を出力する。正規化命令116を実装するアセンブリ・コードの例は、下の表1に示される。
表1:例示的な正規化命令
if (Rs == 0) {
Rd = 0;
} else {
Rd=(max(count_leading_ones(Rs), count_leading_zeros(Rs)))-1);
};
表1において、ソース・レジスタの値(Rs)が0に等しいならば、デスティネーション・レジスタ(Rd)は0にセットされる。さもなければ、ソース・レジスタの値における先行1のカウント及び先行0のカウントが、いずれのカウントが大きいかを判定するために、比較される。特に、先行1のカウント又は先行0のカウントのいずれかは、0に等しく、他のカウントは、正数である。正数であるカウントは、1を減じられて、デスティネーション・レジスタに記憶される。
特定の実施態様において、表1に示された正規化命令は、入力の値を判定する(すなわち、Rs==0かどうか判定する)ように構成された第1のオペレーションを含む。正規化命令はまた、入力における判定された値が0(すなわち、Rd=0)である場合に0出力を生成するように構成された第2のオペレーションを含む。正規化命令は、判定された値が非0である場合に、ビットの先行数のカウントから1を減じた値(すなわち、Rd=(max(count_leading_ones(Rs), count_leading_zeros(Rs)))-1)を表す正規化量を生成するように構成された第3のオペレーションを更に含む。特定の例において、0出力又はカウントは、プロセッサの単一の命令サイクルにおいて生成される。特定の例において、単一の命令サイクルは、実行スレッドの複数のステージ(リード・レジスタ・ファイル・ステージ、デコード・ステージ、1又は複数の実行ステージ、及び、ライト・バック・ステージを含む)を表すことができる。特定の実施態様において、正規化命令は、更なるオペレーション、マイクロ命令、又は、それらの任意の組み合せを含むことができる。他の特定の実施態様において、正規化命令は、更なるマイクロ命令又はオペレーションを、発生させる(spawn)ことができるか、又はさもなければ起動するすることができる。特定の例において、正規化命令は、正規化量に従って値を左側へシフトするように正規化量を利用するマイクロ命令の実行を開始することができる。
図2は、正規化カウントを判定するように構成された正規化ロジック回路202を含む回路デバイス200の特定の具体例の図である。正規化ロジック回路202は、例えば最上位ビット224及び複数の他のビット226を含むオペランドのような入力204を受信するように構成される。正規化ロジック回路202は、正規化カウント206を生成するために入力204を処理するように構成される。正規化カウント206は、入力204における値が0である場合における0値を表し、あるいは、入力204のビットの先行数のカウントから1を減じた値を表す。正規化ロジック回路202は、シフター回路208を含む。シフター回路208は、双方向シフター回路であっても良い。特定の例において、シフター回路208は、複数のシフトされたビットを生成するために、受信されたビット群を左側に1ビットシフトし、0値を最下位ビット位置に挿入するように構成される。
正規化ロジック回路202は、入力204から最上位ビット224を抽出するように構成された最上位ビット(MSB)抽出回路236を含む。正規化ロジック回路202はまた、複数の排他的ORゲート210,212,214,216及び218を含む。複数の排他的ORゲート210,212,214,216及び218の各々は、最上位ビット224を受信するためにMSB抽出回路236に接続された第1の入力を含み、また、複数のシフトされたビットのそれぞれのビットを受信するためにシフター回路208に接続された第2の入力を含む。特定の例において、最上位ビット224が1の値を持つならば、排他的ORゲート210,212,214,216及び218の各々は、複数のシフトされたビットのそれぞれのビットの補数演算をする。最上位ビット224が0の値を持つならば、排他的ORゲート210,212,214,216及び218の各々は、複数のシフトされたビットのそれぞれのビットを通過させる。
正規化ロジック回路202は、先行ゼロ・カウンタ220及び論理ANDゲート222を含む。先行ゼロ・カウンタ220は、複数のシフトされたビット又は複数のシフトされたビットの相補バージョン(complemented version)のいずれかを表すオペランドを受信するために、排他的ORゲート210,212,214,216及び218の各々の出力に接続される。先行ゼロ・カウンタ220は、オペランドにおける連続する0の先行数をカウントし、リード群(leads)230及び232を介して、連続する0の先行数を表すカウントを出力する。論理ANDゲート222は、リード230における値を0値228(すなわち、電気アース)で論理的にANDすることによって、リード230におけるカウントの最上位ビットをマスクする。マスクされた出力234(すなわち、0値)及びリード群232の値は、正規化ロジック回路202の出力における正規化カウント206として与えられる。一般に、先行ゼロ・カウンタ220は、連続する0の先行数をカウントするように構成されるが、例えば、連続する1の先行数をカウントするための先行1カウンタ、連続するビットの先行数をカウントするための先行ビット・カウンタ、又は、それらの任意の組み合せのような、他のカウンタが使用されても良い。
特定の例において、正規化ロジック回路202は、例えば図1中に示されるプロセッサ100の実行ユニット118のように、プロセッサの実行ユニット内に存在しても良い。一つの実施態様において、ロジック回路202は、正規化カウント206を供給するように構成される。正規化カウント206は、特定のオペランドが、そのオペランドを正規化するためにシフトされるべきビットの数を表すカウントである。入力204が非0の値である場合に、シフト回路208は、ビット226を左側に1ビットシフトして、最上位ビットを取り除く。空けられた(vacated)位置に(すなわち、最下位ビットに)、0値が挿入される。この左側へのシフト及び0の挿入は、先行ビットのカウントから1を減じた値を提供する。入力がすべての0である場合には、先行ゼロ・カウンタ220は、例えば、すべての0をカウントしても良く、そして、最上位ビット位置に1を与える。特定の例において、最上位ビット位置における1の値は、32のシフト値を表しても良い。32個の連続する値を持つ唯一の入力値は、0の入力である。それゆえ、最上位ビット230は、要求されたゼロ結果を与えるために、論理ANDゲート222を使用して、マスクされる(すなわち、0にされる)。
図3は、正規化カウントを判定するように構成された正規化ロジック回路302を含む回路デバイス300の第2の特定の具体例の図である。の特定の例において、正規化ロジック回路302は、図2中の正規化ロジック回路202と同じ回路を含む。しかし、正規化ロジック回路302は、シフター回路208に接続され且つMSB 224に接続され且つ0値をもつオペランドを検出するように構成された制御回路304を含む。正規化ロジック回路302はまた、入力204におけるオペランドの値が0である場合に正規化ロジック回路302の出力における正規化カウント206として0値を与えるために制御回路304に応答するゼロ回路306を含む。値が非0である場合に、ゼロ回路306は、先行ゼロ・カウンタ220の出力が、正規化カウント306として出力に通過されるのを可能にするパス・ゲートとして、動作しても良い。この特定の例において、制御回路304は、ゼロ回路306を使用して出力において0を与えるために、シフター回路208、複数の排他的ORゲート210,212,214,216及び218、並びに、先行ゼロ・カウンタ220をバイパスしても良い。
図4は、正規化カウントを判定する方法の特定の具体例のフローチャートである。402において、正規化されるべきオペランドが正規化ロジック回路において受信される。404へ進んで、オペランドの値が0に等しいならば、本方法は406へ進み、出力において0値が与えられる。例えば、オペランドが0に等しいとき、0値は基準化又は正規化される必要がないので、オペランドのシフト量は0であるべきである。特定の例において、制御回路は、オペランドの値を判定するため及びオペランドが0の値をもつ場合に0値を与える出力を制御するために、正規化ロジック回路内に与えられても良い。414へと続いて、本方法は終了する。
404に戻って、オペランドの値が0に等しくないならば、本方法は408へ進み、数を判定するために、オペランドの先行ビットがカウントされる。特定の具体例において、ビットの先行数は、先行0をカウントするように構成された先行ゼロ・カウンタ回路を使用して、カウントされる。特定の例において、オペランドの最上位ビットが1に等しいならば、最上位ビットは、他のビット群の補数演算をするために使用されても良く、また、先行ゼロ・カウンタ回路は、オペランドの相補バージョンにおける0の個数をカウントしても良い。410まで移動して、シフト量を判定するために、その数から1が減じられる。特定の例において、他のビット群を左側に1ビットシフトし、最下位ビットの位置に0を挿入することによって、1が減じられる。412へと続いて、シフト量が出力へ与えられる。シフト量は、先行ビットの数のカウントから1を減じた値を表す。本方法は、414において終了する。
特定の例において、正規化されるべきオペランドを受信することは、プロセッサの実行ユニットにより実行可能である正規化命令を受信した後に起こっても良い。正規化命令は、オペランドが検索される可能性のあるソース・レジスタ・アドレスを含んでも良い。正規化命令は、単一の実行サイクルにおいてプロセッサにより実行可能である。特定の例において、408において数を判定するためにオペランドの先行ビットをカウントすること及びシフト量を判定するためにその数から1を減じることは、該オペランドの最上位ビットを抽出することと、複数のシフトされたビットを生成するために該オペランドの残りのビットを左側に1ビットシフトすることと、ゼロ値を該複数のシフトされたビットの最下位ビットに挿入することと、シフト量を生成するために該複数のシフトされたビットにおける0の先行数をカウントすることと、出力において該シフト量を与えるために該シフト量の最上位ビットをマスクすることを含んでも良い。特定の例において、該シフト量の最上位ビットをマスクすることは、最上位ビットを、論理0値(例えば、電気アース)に接続された第2の入力を含む論理ANDゲートの入力に与えることを含んでも良い。
図5は、正規化カウントを判定する方法の第2の特定の具体例のフローチャートである。502において、正規化されるべきオペランドが正規化ロジック回路において受信される(該オペランドは、複数のビットを含む)。504へ進んで、該複数のビットから最上位ビットが抽出される。506へと続いて、該複数のビットが左側に1ビットシフトされる。508まで移動して、複数のシフトされたビット又は複数のシフトされたビットの相補バージョンのうちの一つを表す値を生成するために、抽出された最上位ビットとシフトされた複数のビットの各々との排他的ORオペレーションが実行される。510まで進んで、数を生成するために、生成された値において0の先行数がカウントされる。512まで移動して、シフト量を生成するために、その数の最上位ビットがマスクされる。514へと続いて、出力においてシフト量が与えられる。ここで、オペランドが0に等しい場合に、そのシフト量は0であり、オペランドが非0値である場合に、そのシフト量は、ビットの先行数のカウントから1を減じた値である。本方法は、516において終了する。
図6は、正規化カウントを判定する方法の第3の特定の具体例のフローチャートである。602において、本方法は、正規化されるべきオペランドを正規化ロジック回路において受信することを含む(該オペランドは、複数のビットを含む)。604へ進んで、該複数のビットの最上位ビットを取り除くために、該複数のビットが、左側に1ビットシフトされる。606まで移動して、第2の複数のビットを形成するために、該複数のシフトされたビットの最下位ビット位置に0値が挿入される。608へと続いて、複数のXOR出力ビットを生成するために、オペランドの最上位ビットを使用して、排他的ORオペレーションが、該第2の複数のビットの各々に適用される。610まで進んで、0の個数を判定するために、該複数のXOR出力ビットにおける0の先行数がカウントされる。612へ進んで、オペランドが非0である場合に0のカウントされた先行数から1を減じた値を表すシフト量を与えるために及びオペランドが0である場合に0値を与えるために、0の判定された数の最上位ビットがマスクされる。本方法は、614において終了する。
図7は、正規化量を判定するように構成された正規化ロジック回路768をもつ実行ユニット764を含む無線通信デバイス700の具体例のブロック図である。正規化ロジック回路768は、図1、2及び3に関してそれぞれ説明された正規化ロジック回路136,202及び302と同様であっても良い。無線通信デバイス700は、正規化ロジック回路768を備えた実行ユニット764を持つデジタル・シグナル・プロセッサ(DSP)710を含むことができる。図1−6に関して説明されたように、正規化ロジック回路768は、入力におけるビットの先行数から1を減じた値を判定するために使用可能である。無線通信デバイス700はまた、DSP710にアクセス可能なメモリ732を含む。特定の実施態様において、正規化ロジック回路768は、実行ユニット764の単一の命令(実行)サイクル内で複数のデータ・ビットに関係する正規化カウントを与えるために、実行ユニット764により利用されても良い。
図7はまた、デジタル・シグナル・プロセッサ710に接続され且つディスプレイ728に接続されるディスプレイ・コントローラ726を示す。コーダ/デコーダ(CODEC)734はまた、デジタル・シグナル・プロセッサ710に接続されることができる。スピーカ736及びマイク738は、CODEC734に接続されることができる。
図7はまた、無線コントローラ740は、デジタル・シグナル・プロセッサ710に接続されることができ且つ無線アンテナ742に接続されることができることを示す。特定の実施態様において、入力デバイス730及び電源744は、オンチップ・システム722に接続される。さらに、特定の実施態様において、図7中に示されるように、ディスプレイ728、入力デバイス730、スピーカ736、マイク738、無線アンテナ742、及び電源744は、オンチップ・システム722の外部に存在しても良い。しかし、各々は、オンチップ・システム722のコンポーネントに接続される。
本明細書で開示された実施形態に関連して説明された、各種の説明的な論理ブロック、構成(configurations)、モジュール、回路、及び、アルゴリズムのステップは、電子回路用ハードウェア、コンピュータソフトウェア、又は、それらの組み合わせとして、実装されても良いことを、当業者はさらに理解できるであろう。このハードウェア及びソフトウェアの互換性をめいりょうに説明するために、各種の説明的なコンポーネント、ブロック、構成、モジュール、回路、及びステップが、一般に、それらの機能性の観点で、前述された。当該の機能性は、システム全体に課される特定のアプリケーション及びデザインの制約に応じて、ハードウェア又はソフトウェアとして実装される。当業者は、説明された機能性を、各々のアプリケーションのためのさまざまな方法で実装しても良いが、当該の実装の決定は、本範囲の範囲からの逸脱をもたらすものとして説明されるべきではない。
本明細書に開示された実施形態に関連して説明された方法又はアルゴリズムのステップは、直接、ハードウェアにより具体化されても良いし、プロセッサにより実行されるソフトウェアモジュールにより具体化されても良いし、又は、それら二つの組合せにより具体化されても良い。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、PROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD−ROM、又は当該技術分野において周知の任意の他のフォームの記憶媒体に存在しても良い。例示的な記憶媒体は、プロセッサがその記憶媒体から情報を読み込み、また、それへ情報を書き込むことができるように、そのプロセッサに接続される。代わりに、記憶媒体は、プロセッサに一体化されていても良い。プロセッサ及び記憶媒体は、ASICにおいて存在してもよい。ASICは、コンピュータ・デバイス又はユーザ端末に存在しても良い。代案では、プロセッサ及び記憶媒体は、コンピュータ・デバイス又はユーザ端末の個別のコンポーネントとして存在しても良い。
開示された実施形態の前の説明は、当業者が開示された実施態様を製造又は使用できるようにするために提供される。これらの実施形態への種々の変形は、当業者には容易に明白になるであろう。また、本発明で定義された一般的な原理は、本開示の精神又は範囲から逸脱することなく、他の実施形態に適用されても良い。それゆえ、本開示は、本明細書で示された実施形態に限定されることが意図されているのではなく、以下の特許請求の範囲により定義されるような原理及び新規な特徴に合致する最も広い可能な範囲を与えられることが意図されている。

Claims (25)

  1. 正規化ロジック回路において正規化されるべきオペランド(該オペランドは複数のビットを含む)を受信することと、
    前記オペランドの値が0に等しい場合に、0出力を生成することと、
    前記値が0に等しくない場合に、前記オペランドの先行ビットのカウントより1少ない数を表す出力値を生成することを含む方法。
  2. プロセッサの実行ユニットにより実行可能である正規化命令を受信することを更に含む請求項1の方法。
  3. 前記オペランドは、前記正規化命令の受信後に、受信される請求項2の方法。
  4. 前記0出力を生成することは、
    前記受信されたオペランドが0の値を持つことを判定することと、
    正規化ロジック回路の出力において0値を与えるための論理信号を生成することを更に含む請求項1の方法。
  5. 前記オペランドの先行ビットの前記カウントより1少ない前記数を表す出力値を生成することは、
    前記オペランドから最上位ビットを抽出することと、
    複数のシフトされたビットを生成するために、前記オペランドの前記複数のビットのうちの残りのビットを左側へ1ビットシフトすることと、
    前記複数のシフトされたビットの最下位ビットに0値を挿入することと、
    シフト量を生成するために、前記複数のシフトされたビットにおける0の先行数をカウントすることと、
    出力値を生成するために、前記シフト量の最上位ビットをマスクすることを含む請求項1の方法。
  6. 前記シフト量の前記最上位ビットをマスクすることは、論理0値に結合される第2の入力を含む論理ANDゲートの入力に対して前記最上位ビットを供給することを含む請求項5の方法。
  7. 正規化命令を実行するように構成された命令実行ユニットを含むプロセッサにおいて、
    前記命令実行ユニットは、
    複数のビットを含むオペランドを受信するように構成された入力と、
    複数のシフトされたビットを生成するために、前記入力に接続され且つ前記複数のビットを左側に1ビットシフトするように構成されたシフター回路と、
    前記複数のシフトされたビットを受信し且つ前記複数のシフトされたビットの先行ビットの数をカウントするように構成された先行ビット・カウント回路(該先行ビット・カウント回路は、先行ビットの数から1を減じた値を表すカウントを出力へ供給する)とを含むプロセッサ。
  8. 前記命令実行ユニットは、
    前記入力に接続され且つ前記オペランドから最上位ビットを抽出するように構成された最上位ビット抽出回路と、
    複数の排他的ORゲート(前記複数の排他的ORゲートの各々は、前記最上位ビットを受信するように構成された第1の入力、前記複数のシフトされたビットのそれぞれの一つを受信するように構成された第2の入力、及び、前記複数のシフトされたビットのそれぞれの一つの値又は前記値の補数を供給するように構成された出力を含む)とを含むロジック回路を更に含む請求項7のプロセッサ。
  9. 前記先行ビット・カウント回路は、前記複数の排他的ORゲートの前記出力に接続された先行0カウント回路を含み、該先行0カウント回路は、前記複数の排他的ORゲートの前記出力から受信される0の先行数をカウントするように構成されるの請求項8のプロセッサ。
  10. 前記先行ビットの数から1を減じた値を表す前記カウントの最上位ビットをマスクするように構成されたマスク回路を更に含む請求項9のプロセッサ。
  11. 前記オペランドが0の値を持つかどうか判定するように構成され且つ前記出力において0値を供給するための制御信号を生成するように構成された制御回路を更に含む請求項7のプロセッサ。
  12. 前記制御回路に応答し且つ前記制御回路からの制御信号に応答して前記出力において0値を供給するように構成されたゼロ回路を更に含む請求項11のプロセッサ。
  13. 前記シフター回路は、双方向シフター回路である請求項7の回路デバイス。
  14. 入力値を正規化するプロセッサにより実行可能な命令において、前記命令は、
    入力の値を判定する実行ユニットにより実行可能な第1の命令と、
    前記入力における前記判定された値が0である場合に0出力を生成する実行ユニットにより実行可能な第2の命令と、
    前記判定された値が非0である場合にビットの先行数のカウントから1を減じた値を表する正規化量を生成する実行ユニットにより実行可能な第3の命令とを含む命令。
  15. 前記0出力又は前記カウントは、プロセッサの単一の命令サイクルにおいて生成される請求項14の命令。
  16. 前記実行ユニットは、前記0出力を生成するように且つ前記正規化量を生成するように構成された正規化ロジック回路を含む請求項14の命令。
  17. 前記カウントは、入力の大きさを表す請求項14の正規化量命令。
  18. 正規化ロジック回路において複数のビットを含むオペランドを受信することと、
    シフトされた複数のビットを生成するために、前記複数のビットを左側に1ビットシフトすることと、
    前記シフトされた複数のビットの最下位ビットに0値を挿入することと、
    前記シフトされた複数のビットにおけるビットの先行数をカウントすることと、
    前記受信された複数のビットが非0の値を持つ場合に前記ビットの先行数から1を減じた値を表すカウントを出力することを含む方法。
  19. 前記ビットの先行数を数えることは、
    前記受信された複数のビットの前記最上位ビットを抽出することと、
    前記受信された複数のビットの最上位ビットが1値を持つ場合に、相補の複数のビットを生成するために、前記シフトされた複数のビットの補数演算をすることと、
    前記相補の複数のビットにおける0の先行数をカウントすることを含む請求項18の方法。
  20. 前記ビットの先行数をカウントすることは、前記シフトされた複数のビットにおける0の先行数をカウントすることを含む請求項18の方法。
  21. 前記受信されたオペランドが0値を表す場合に、出力において0値を供給することを更に含む請求項18の方法。
  22. 複数のビットを含むオペランドを受信するための手段と、
    前記オペランドの値が0に等しい場合に、0出力を生成するための手段と、
    前記オペランドの値が0に等しくない場合に、前記オペランドの先行ビットのカウントより1少ない数を表す出力値を生成するための手段とを含むプロセッサ。
  23. 単一の実行サイクルにおいてプロセッサの実行ユニットにより実行可能である正規化命令を受信するための手段を更に含む請求項22のプロセッサ。
  24. 前記0出力を生成することは、
    前記受信されたオペランドの値を判定するための手段と、
    前記判定された値が0である場合に、実行ユニットの出力において0値を供給するための論理信号を生成するための手段とを更に含む請求項22のプロセッサ。
  25. 前記オペランドの先行ビットの前記カウントから1を減じた値を表す出力値を生成することは、
    前記オペランドから最上位ビットを抽出するための手段と、
    複数のシフトされたビットを生成するために、前記オペランドの残りのビットを左側に1ビットシフトするための手段と、
    前記複数のシフトされたビットの最下位ビットに0値を挿入するための手段と、
    シフト量を生成するために、前記複数のシフトされたビットにおける0の先行数をカウントするための手段と、
    前記カウントを生成するために、前記シフト量の最上位ビットをマスクするための手段とを含む請求項22のプロセッサ。
JP2010542362A 2008-01-09 2009-01-09 正規化カウントを判定するプロセッサ及び方法 Withdrawn JP2011509491A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/971,230 US8631056B2 (en) 2008-01-09 2008-01-09 Processor and method of determining a normalization count
PCT/US2009/030537 WO2009089410A2 (en) 2008-01-09 2009-01-09 Processor and method of determining a normalization count

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2014036985A Division JP5735150B2 (ja) 2008-01-09 2014-02-27 正規化カウントを判定するプロセッサ及び方法

Publications (1)

Publication Number Publication Date
JP2011509491A true JP2011509491A (ja) 2011-03-24

Family

ID=40749257

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2010542362A Withdrawn JP2011509491A (ja) 2008-01-09 2009-01-09 正規化カウントを判定するプロセッサ及び方法
JP2014036985A Expired - Fee Related JP5735150B2 (ja) 2008-01-09 2014-02-27 正規化カウントを判定するプロセッサ及び方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2014036985A Expired - Fee Related JP5735150B2 (ja) 2008-01-09 2014-02-27 正規化カウントを判定するプロセッサ及び方法

Country Status (6)

Country Link
US (1) US8631056B2 (ja)
EP (1) EP2243074B1 (ja)
JP (2) JP2011509491A (ja)
KR (1) KR101252739B1 (ja)
CN (1) CN101911008B (ja)
WO (1) WO2009089410A2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8862647B2 (en) * 2010-06-22 2014-10-14 Nec Corporation Semiconductor integrated circuit and exponent calculation method
US8788549B2 (en) * 2011-05-02 2014-07-22 Saankhya Labs Private Limited Zero overhead block floating point implementation in CPU's
US10592252B2 (en) 2015-12-31 2020-03-17 Microsoft Technology Licensing, Llc Efficient instruction processing for sparse data
US10459727B2 (en) 2015-12-31 2019-10-29 Microsoft Technology Licensing, Llc Loop code processor optimizations
KR102688577B1 (ko) * 2016-09-19 2024-07-26 삼성전자주식회사 전자 장치, vliw 프로세서 및 그 제어 방법들
US10915319B2 (en) 2017-05-15 2021-02-09 Google Llc Two dimensional masked shift instruction

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01185726A (ja) * 1988-01-20 1989-07-25 Matsushita Electric Ind Co Ltd 除算装置
JPH0480815A (ja) * 1990-07-23 1992-03-13 Oki Electric Ind Co Ltd 絶対値演算回路
JPH06236252A (ja) * 1992-01-06 1994-08-23 Intel Corp 浮動小数点数の仮数部の先行ゼロの数を検出する先行ゼロ2段及び多段検出ユニット、浮動小数点左シフト仮数正規化ユニット及び先行ゼロの数を検出する方法
JPH07319671A (ja) * 1994-05-26 1995-12-08 Fujitsu Ltd 除算または剰余の前処理方法および除算または剰余の前処理装置
JP2003216410A (ja) * 2002-01-18 2003-07-31 Oki Electric Ind Co Ltd べき数エンコーダ回路及びマスク回路

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH073653B2 (ja) * 1987-06-30 1995-01-18 三菱電機株式会社 シフタ
US5844826A (en) * 1996-10-18 1998-12-01 Samsung Electronics Co., Ltd. Leading zero count circuit
US6260054B1 (en) 1998-10-29 2001-07-10 Neomagic Corp. Reciprocal generator using piece-wise-linear segments of varying width with floating-point format
US6795839B2 (en) 2000-11-30 2004-09-21 Stmicroelectronics, Inc. Method and device for computing the number of bits set to one in an arbitrary length word
US6788268B2 (en) * 2001-06-12 2004-09-07 Ipr Licensing, Inc. Method and apparatus for frequency selective beam forming
US7062525B1 (en) 2002-08-30 2006-06-13 Lsi Logic Corporation Circuit and method for normalizing and rounding floating-point results and processor incorporating the circuit or the method
US7392273B2 (en) 2002-12-20 2008-06-24 International Business Machines Corporation High-sticky calculation in pipelined fused multiply/add circuitry
US7461117B2 (en) 2005-02-11 2008-12-02 International Business Machines Corporation Floating point unit with fused multiply add and method for calculating a result with a floating point unit
US7610472B2 (en) * 2005-06-05 2009-10-27 Apple Inc. Performing variable and/or bitwise shift operation for a shift instruction that does not provide a variable or bitwise shift option

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01185726A (ja) * 1988-01-20 1989-07-25 Matsushita Electric Ind Co Ltd 除算装置
JPH0480815A (ja) * 1990-07-23 1992-03-13 Oki Electric Ind Co Ltd 絶対値演算回路
JPH06236252A (ja) * 1992-01-06 1994-08-23 Intel Corp 浮動小数点数の仮数部の先行ゼロの数を検出する先行ゼロ2段及び多段検出ユニット、浮動小数点左シフト仮数正規化ユニット及び先行ゼロの数を検出する方法
JPH07319671A (ja) * 1994-05-26 1995-12-08 Fujitsu Ltd 除算または剰余の前処理方法および除算または剰余の前処理装置
JP2003216410A (ja) * 2002-01-18 2003-07-31 Oki Electric Ind Co Ltd べき数エンコーダ回路及びマスク回路

Also Published As

Publication number Publication date
EP2243074B1 (en) 2018-12-19
WO2009089410A3 (en) 2009-09-03
KR20100105765A (ko) 2010-09-29
JP5735150B2 (ja) 2015-06-17
WO2009089410A2 (en) 2009-07-16
CN101911008A (zh) 2010-12-08
EP2243074A2 (en) 2010-10-27
US20090177724A1 (en) 2009-07-09
CN101911008B (zh) 2016-08-10
JP2014132485A (ja) 2014-07-17
US8631056B2 (en) 2014-01-14
KR101252739B1 (ko) 2013-04-12

Similar Documents

Publication Publication Date Title
JP6487097B2 (ja) 命令に応じた丸め処理の実行
JP5735150B2 (ja) 正規化カウントを判定するプロセッサ及び方法
US7725519B2 (en) Floating-point processor with selectable subprecision
CN107851007B (zh) 宽数据类型的比较的方法和装置
JP5490711B2 (ja) テーブル内のエレメントのアドレスを決定するシステムおよび方法
US10628126B2 (en) Architecture and instruction set to support integer division
US9213524B2 (en) Method and device for generating floating-point values

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111122

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120222

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120229

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120322

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120329

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120423

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120501

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120522

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121023

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130123

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130130

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130322

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130329

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130423

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20131029

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140227

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20140303