JP4177962B2 - データ処理システムにおける数値演算 - Google Patents
データ処理システムにおける数値演算 Download PDFInfo
- Publication number
- JP4177962B2 JP4177962B2 JP2000584375A JP2000584375A JP4177962B2 JP 4177962 B2 JP4177962 B2 JP 4177962B2 JP 2000584375 A JP2000584375 A JP 2000584375A JP 2000584375 A JP2000584375 A JP 2000584375A JP 4177962 B2 JP4177962 B2 JP 4177962B2
- Authority
- JP
- Japan
- Prior art keywords
- word
- data
- data processing
- value
- bit
- 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.)
- Expired - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
Description
本発明はデータ処理システムに関する。より詳細には、本発明は、飽和数値演算(saturated arithmetic operation)を実行するのに適した数値演算を実行するためのデータ処理システムに関する。
【0002】
多くのDSPアルゴリズムは、Q15演算とQ31演算として知られているアルゴリズムを使用している。Q15数は、普通の16ビットの2の補数の整数であるが、215で除算されたその整数を表すものと認められている。16ビットの2の補数の整数は、−215から+215− 1までの数を表すことができるので、Q15は、−1から+(1−2-15)までの数を表すことができる。
【0003】
同様に、Q31数は、普通の32ビットの2の補数の整数であり、231で除算される整数だと認められているから、−1から−(1−2-31)までの数を表すことができる。これから類推して、いかなるNの値に対しても(N+1)ビットのQN数を定義することができる。
【0004】
Q15およびQ31数値演算の重要な特徴は、これらの演算が「飽和する(saturating)」ことである。演算の数学的演算結果が正の最大値(+1−2-N)を超える場合、飽和した結果は正の最大値であり、同様に数学的演算結果が−1より小さい場合、飽和した結果は−1である。例えば、Q15数値演算で、A=0x8000(−1を表す)でB=0xC000(−0.5を表す)の場合、AとBを加算した結果は、通常の16ビットの2の補数の結果0x4000ではなく、0x8000(−1を表す)である。
【0005】
DSPアルゴリズムで最も要求され、かつ共通して発生する演算は、「乗算・累積(multiply-accumulate)」演算、つまり、あとに第3のオペランドが付加される2つのオペランドの乗算、
結果 =(A*B)+C
で表される演算である。
【0006】
(時にはクリッピングとして知られている)飽和数値演算に、このような乗算・累積命令を使いたい場合、重大な問題が発生する。この問題は、QN数に対して数値演算を実行する場合に特に該当する。
【0007】
飽和形式と不飽和形式(non-saturated form)の両者に、各種の異なるタイプの命令を適応させるためには、命令コードのビットスペースにかなりの量が必要になる。その上、単一サイクル乗算の性能向上を追求すると、飽和とそれに関連する調整に対する要求に対処しなくてはならないという負担が追加される。すなわち、必要としないのに最悪の場合の飽和乗算命令によってクロック速度が制限されることになる。
英国公開特許出願 GB-A-2,317,465 には、完全な Q15 乗算・累積演算を実行する乗算・2倍化命令( Multiply Double instructions )が、例えば、任意に大きさが変えられる dest = SAT(acc + SAT(2 * src1 * src2)) と、任意に大きさが変えられる dest = (acc − SAT(2 * src1 * src2)) などの、1つの命令で用意されていることが開示されている。
【0008】
一態様から見ると、本発明は、
データ処理命令語に応答して、処理制御信号を発生する命令解読器と、
前記処理制御信号によって制御され、データ・オペランド語についてデータ処理演算を実行する処理論理と、
を含む処理装置であって、
前記命令解読器は、第1の命令語に応答して、前記処理論理を制御する制御信号を発生し、第1のNビット・データ・オペランド語Pと、第2のNビット・データ・オペランド語Qについてデータ処理演算を実行して、
R = Sat(Fun(P)+Q)
で与えられるNビットの結果データ語Rを発生することを特徴とするデータ処理装置を提供する。
ここで、
Sat(X)は、値Xの飽和した値を返す関数であり、
Fun(X)は、少なくとも、N/2ビットとN/2ビットの符号付き乗算によって発生することができるXの値に対して動作し、シフトによりアンダーフロー又はオーバーフローが発生しない場合にシフト量でXをシフトすることによってシフトされた語を発生すし、シフトによりアンダーフロー又はオーバーフローが発生する場合に前記シフトされた語を飽和させることによって得られた値を返す関数である。
【0009】
本発明は、飽和乗算・累積演算の要求に対処するために適した特殊目的の命令を設けることが非常に利点があると認めている。より詳細に述べると、標準的な所望の単一サイクル乗算に対するタイミング条件は、累積演算を実行する後続命令で使用されるサイクルに容易に適応する数値演算の飽和特性に対処するために必要となる調整によって緩和する。この新しい命令は、いくつかの乗算命令の飽和形(saturated version)を定義する必要をなくして、命令コードのビットスペースと、飽和数値演算をサポートするために必要なその他のオーバーヘッドを低減する。最後に、この新しい命令は、既にシステムに設けられているハードウエアにほとんどハードウエアを追加しないで実施され、不飽和数値演算と飽和数値演算に関する他の態様に対処することができる。
【0010】
この新しい命令を実行するために使用されるハードウエアが多数の異なる形式を取ることができるとは理解できるであろう。Nビットの最終結果データ語を発生するために必要な各種の演算は、各種の異なる方法でグループ化され、各種の回路ブロックで実行される。単一命令を使用して上で与えらた値と同じ最終値のNビット最終結果データ語を発生するこれら各種の異なる代替方法は、すべて本発明の実施例である。
【0011】
飽和乗算・累積演算で使用される上記命令と同様に、飽和乗算・減算をサポートするために同じような命令を設けることができる。
【0012】
本発明の命令で使用されるシフト量は、各種の異なる値を取ることができる。しかし、シフトされた語が第1のNビット・データ・オペランド語Pの2倍となるようなシフト量は特に有用である。
【0013】
2つのQ15数について整数乗算が実行されると、通常発生する結果は、32ビットのQ30に似た(Q30-like)数であり、この数に対して、普通の32ビットの符号付き2の補数の値は230で除算されると認められているので、−2から+(2−2-30)までの数を表す。Q30に似た数は、2進数の位置が30個ある符号付き32ビット固定小数点の数であると考えてもよい。しかし、このような状況で、このあとの処理に要求されることは、Q31数である。この課題に対処するためには、標準的整数乗算の後に本発明の命令を実行し、整数乗算の結果が飽和して累積または減分される前に、前記結果を2倍にしてQ30に似た形式からQ31形式に変更するためにシフト量を使用してもよい。したがって、飽和数値演算をサポートするために必要な問題となる調整(problematic adjustments)の1つは、乗算サイクルの終わりで与えられなければならない命令ではなく、後続の命令の中に適応されている整数乗算の結果に対する調整が与えられている。
【0014】
飽和を実行する論理回路は多数の異なる形式を取ることができる。しかし、本発明の好適実施例では、前記シフトされた語を飽和させることは、前記第1のNビット・データ・オペランド語Pの所定の特徴を検出し、検出した場合、前記シフトされた値と、許容値範囲の端点の値を交換する。
【0015】
この特徴は、何らかの状況で第1のNビット・データ・オペランド語Pの特徴を検出することによって、飽和させることができると認めている。何故ならば、その特徴について実行される操作は比較的限定された形式であって、飽和を必要とするオーバーフローまたはアンダーフローを起こすことができる状況を明確に検出することができるので、結果としてハードウエアの要求条件が総合的に緩和するからである。
【0016】
特に使用するシフト量が、第1のNビット・データ・オペランド語Pを2倍にする場合、飽和させる必要は、第1のNビット・データ・オペランド語Pの最上位2ビットを比較することによって非常に簡単に検出される。
【0017】
Fun(X)命令のオーバーフローまたはアンダーフローを起こすことができる状況の比較的限定された範囲を比較すると、Sat(X)関数のオーバーフローまたはアンダーフローはもっと普通に起こるので、本発明の好適実施例は、Sat(X)がXが許容値範囲外にあるか検出して、検出した場合は、Xと前記許容値範囲のそれぞれの端点を交換して前記Nビット結果データ語Rを発生する。
【0018】
本発明の新しい命令はそれ自体に利点があるが、上記のとおり、これらの命令は、第3のN/2ビット・データ・オペランド語Aと第4のN/2ビット・データ・オペランド語Bを乗算することにより、第1のNビット・データ・オペランド語を発生する第2の命令語を実行するようになっている実施例に特によく適している。
【0019】
いかなる種類のオペランドに対しても、本発明の命令を使用することが可能である。しかし、この命令が実施例の中で特に便利なのは、前記第1のNビット・オペランド・データ語P、前記第2のNビット・オペランド・データ語Qおよび前記Nビット結果データ語Rが、−1≦P<+1、−1≦Q<+1、−1≦R<+1で、Sat(X)が範囲−1≦X<+1に対して存在するように、最上位ビット位置のすぐ右側に小数点がある、符号付き固定小数点データ語である実施例の場合である。
【0020】
前に考察したように、かかるQN形オペランドは、データ処理システムの残り部分に不適切な影響を及ぼすことなく、本発明の命令によって効果的に与えられる調整と飽和を必要とする。
【0021】
第1のNビット・データ・オペランド語Pの最も有用な値は、N/2ビットとN/2ビットの符号付き乗算によって発生することができる値である。しかし、本発明の好適実施例は、起こりうるXのNビットの値すべてをシフトして飽和させることができるように、Fun(X)の機能を拡張することができる。
【0022】
本発明は、Nが各種の異なる値をもつシステムで使用できる。しかし、本発明が特に有用なDSP動作のタイプは、普通、N = 32のようなNの値を必要とする。
【0023】
本発明が個別部品を含むシステムとして実施できることは理解できるであろうが、このデータ処理装置が集積回路として実現されることは非常に好ましい。
【0024】
別の態様から見ると、本発明は、
データ処理命令語に応答して、処理制御信号を発生するステップと、
前記処理制御信号の制御のもとにデータ・オペランド語についてデータ処理演算を実行するステップと、
を含む方法であって、
第1の命令語に応答して、前記処理論理を制御する制御信号を発生し、第1のNビット・データ・オペランド語Pと、第2のNビット・データ・オペランド語Qについてデータ処理演算を実行して、
R = Sat(Fun(P)+Q)
で与えられるNビットの結果データ語Rを発生することを特徴とするデータ処理装置におけるデータ処理方法を提供する。
ここで、
Sat(X)は、値Xの飽和した値を返す関数であり、
Fun(X)は、少なくとも、N/2ビットとN/2ビットの符号付き乗算によって発生することができるXの値に対して動作し、シフトによりアンダーフロー又はオーバーフローが発生しない場合にシフト量でXをシフトすることによってシフトされた語を発生し、シフトによりアンダーフロー又はオーバーフローが発生する場合に前記シフトされた語を飽和させることによって得られた値を返す関数である。
【0025】
本発明の相補的方法(complementary method)の態様も用意されており、この方法では、命令は加算演算ではなく減算を実行する。
【0026】
以下、添付の図面を参照し、例示のみによって、本発明の実施例を説明する。
【0027】
図1は、(英国、ケンブリッジのARM社で製造されたARM9TDMIマイクロプロセッサの一部と同様な)命令解読器4と処理論理6を含む集積回路2の一部分を示す。処理論理6は、多数の異なる個別機能要素からなる。レジスタバンク8は、操作すべきデータ・オペランド語(P、Q)を格納する。これらの語は、レジスタバンク8から読み出され、マルチプレクサー10、12、14を介して、処理論理6の中の他の各種処理ユニットに提供される。整数乗算器16は、機能のうち特に符号付き整数乗算を実行するために設けられている。加算器18は、不飽和乗算・累積演算を実行するためと、桁上げ保存(carry-save)からの乗算器の結果を、2の補数形式に変換するために設けられている。シフター20と算術論理演算ユニット22も設けられている。処理論理6の上記基本部品は一般に知られている。命令解読器4からの制御信号24は、処理論理6の中の各種要素に印加され、それらの動作を制御するとともに協調させる。より詳細に説明すると、命令解読器で命令が解読されると制御信号24が出力され、処理論理6の中の各種マルチプレクサーを切り替えて所望のデータ経路を選択し、処理論理6の中の各種論理ユニットを起動して構成し、解読された命令によって指定された演算を実行する。明瞭にするため、個々の部品を命令解読器に接続する信号線は、この図から省略されている。
【0028】
飽和数値演算(QDADD、DQDSUBおよびQDRSB)の追加命令をサポートするため、算術論理演算ユニット22の上流にシフト・飽和ユニット(shifting and saturating unit)26が設けられ、算術論理演算ユニット22が演算するパイプライン・ステージの後の次のパイプライン・ステージのレジスタバンク8に至るフィードバック経路に、全飽和ユニット(full saturating unit)28が設けられている。動作の場合、シフト・飽和ユニット26は、まず入力された32ビット・データ語の最上位2ビットが等しくないことを決定するためにチェックする。この条件が検出された場合に1ビット左へシフトすると、その入力データ語が、この左シフトによってQ31語に変換されるQ30に似た語を表す場合、オーバーフローまたはアンダーフローになる。最上位2ビットが「01」の場合、シフト・飽和ユニット26は、許容値範囲の最大端点を表す0x7FFFFFFFを出力する。同様に、最上位2ビットが「10」の場合、シフト・飽和ユニット26は、許容値範囲の最小端点を表す0x80000000を出力する。これらの条件がいずれも検出されない場合、シフト・飽和ユニット26は、この入力2進データ値を2倍にすることに対応して、このデータ値を1ビット位置だけ左へシフトするので、Q15数とQ15数の整数乗算によって得られたQ30に似た表現を、この後の処理(例えば累積)と飽和のために要求されるQ31の表現に変換する。
【0029】
解読中の特定の命令がこの演算を必要としない場合、命令解読器4からの適切な制御信号24に応答して、シフト・飽和ユニット26を演算から切り離すことができる。シフト・飽和ユニット26はAバスに配置されているので、通常、このバスのタイミングの制約は、シフター20を含むBバスよりも緩和されている。したがって、シフト・飽和ユニット26に重要なタイミングの問題が追加されることはまったくない。
【0030】
全飽和ユニット28は、算術論理演算ユニット22が要求された加算または減算を実行した後に使用する戻り経路に設けられている。全飽和ユニット28は、既知の原理で動作し、算術論理演算ユニット22で発生した符号付き結果のオーバーフローまたはアンダーフローを検出し、その結果を許容値範囲の最大端点または最小端点の値に訂正することができる。シフト・飽和ユニット26と同様、全飽和ユニット28は、この飽和が要求されない場合、適切な制御信号24に応答して、全飽和ユニット28を演算からは切り離すことができる。全飽和ユニット28は、通常は、加算命令と減算命令に対しては何もしないパイプライン・ステージにあるので、タイミングの問題が起こることはまったくない。しかし、全飽和ユニット28は、すぐ後に続く命令によって飽和命令が使用される場合は、1サイクルの間、プロセッサが連動(interlock)すべきことを要求する。この連動は、ロード命令によってロードされた値が、すぐ後に続く命令によって使用される場合に、多くのマイクロプロセッサで発生する連動と同じように処理される。
【0031】
総合動作の場合、Q15とQ15の乗算をQ31の累積演算と一緒に実行するために、以下の通り処理が進行する。最初に、レジスタバンク8からQ15の値がバスAとバスBに読み出され、入力として、単一サイクル整数乗算器16に送られる。Q30に似た形式をしている結果は、レジスタバンク8にフィードバックされる。後続処理サイクルで、新しい命令の1つ(例えば、QDADD命令)が実行され、Q30に似た乗算の結果がAバスに読み出され、Q31累積値がBバスに読み出される。Q30に似た値は、シフト・飽和ユニット26で1ビット左シフトされるか飽和して、1つの入力として算術論理演算ユニット22に供給される。BバスのQ31の値は、シフター20がその入力値をシフトしないようにする適切な制御信号24を使用することによって、別の入力として算術論理演算ユニット22に供給される。シフト・飽和ユニット26が、Q30に似た値を、要求される飽和したQ31の値に訂正すると、算術論理演算ユニット22によって、BバスのQ31の値にこの値が加算される。算術論理演算ユニット22からの出力が全飽和ユニット28に供給されると、ここで、オーバーフロー・フラグおよびアンダーフロー・フラグと算術論理演算ユニット22からの他の標準条件を検出することにより、この値は、レジスタバンク8に格納される前に、Q31の飽和になる。加算を実行する算術論理演算ユニット22の代わりに、QDRSB命令でBバスの値からAバスの値を減算すること、またはQDSUB命令でAバスの値からBバスの値を減算することを適切な制御信号24によって制御してもよい。命令解読器からの適切な制御信号24に応答して減算を実行する算術論理演算ユニットの構成は、各種の標準的方法で実現できる。
【0032】
上記から判ることは、QDADD命令、QDSUB命令およびQDRSB命令によって実行される演算は、処理論理の中の各種の機能ユニットの間で各種方法で分割されていることである。これらの演算が各種ユニット間で分割されていることにより、同じ最終結果を発生すると同時に多数の異なる方法で実行できることは、当業者には判ることである。
【0033】
図2は、QDADD命令で実行される処理ステップを示す流れ図である。ステップ40で、第1の32ビット・データ・オペランド語の最上位2ビットが「01」に等しいか否かについてテストが実行される。この場合、1ビットだけ左にシフトするとオーバーフローになるので、ステップ42を使用して、この値を正の最大許容値(+1−231)に設定する。同様に、ステップ44は、最上位2ビットが、左シフトするとアンダーフローになることを示す「10」かどうかを見るためにチェックする。この場合に検出されると、ステップ46は、この値を最小許容値−1に設定する。
【0034】
オーバーフローもアンダーフローも検出されない場合、ステップ48は、第1の32ビット・オペランド・データ語を1ビット位置だけ左シフトし、この左シフトが、その数字が示しているシフトであれば、このデータ語をQ30に似た形式からQ31形式に変換する。ステップ40からステップ48の演算は、シフト・飽和ユニット26と、前に説明したFun(x)関数によって与えられる機能に対応する。
【0035】
ステップ50で加算が実行される。この加算は、図1の算術論理演算ユニット22によって実行される加算に対応する。
【0036】
ステップ52とステップ54は、ステップ50から生じた飽和値のオーバーフローを検出して対処する。同様に、ステップ56とステップ58はアンダーフローに対処する。オーバーフローもアンダーフローも検出されなければ、訂正は行われない。QDADD命令の結果Rは、ステップ60でレジスタバンク8の中のレジスタに格納される。
【0037】
ステップ52からステップ58で実行される演算は、図1の全飽和ユニット28と、前に考察したSat(X)関数によって与えられる演算に対応する。
【0038】
図3は、同様な流れ図であるが、この場合はQDSUB命令のための流れ図である。この命令では、図2のステップ50が、シフトされ飽和した第1のオペランド・データ語Pから第2の32ビット・オペランド・データ語Qが減算されるステップ62と交換されている。
【0039】
図4は、図3と同様であるが、この場合、図3のステップ62で実行される減算は、図4のステップ64では被減数と減数が逆になっている。
【図面の簡単な説明】
【図1】 集積回路内の命令解読器と処理論理を示す図。
【図2】 飽和数値演算をサポートするために用意された命令の演算の流れ図を示す図。
【図3】 飽和数値演算をサポートするために用意された命令の演算の流れ図を示す図。
【図4】 飽和数値演算をサポートするために用意された命令の演算の流れ図を示す図。
Claims (15)
- データ処理装置であって、
データ処理命令語に応答して、処理制御信号を発生する命令解読器(4)と、
前記処理制御信号によって制御され、データ・オペランド語についてデータ処理演算を実行する処理論理(6)と、
を含むデータ処理装置において、
前記命令解読器(4)は、第1の命令語(QDADD)に応答して、前記処理論理を制御する制御信号を発生し、第1のNビット・データ・オペランド語Pと、第2のNビット・データ・オペランド語Qについてデータ処理演算を実行して、
R = Sat(Fun(P)+Q)
によって与えられるNビットの結果データ語Rを発生し、ここで、
Sat(X)は、値Xの飽和した値を返す関数であり、
Fun(X)は、少なくとも、N/2ビットとN/2ビットの符号付き乗算によって発生することができるXの値に対して動作し、シフトによりアンダーフロー又はオーバーフローが発生しない場合にシフト量でXをシフトすることによってシフトされた語を発生し、シフトによりアンダーフロー又はオーバーフローが発生する場合に前記シフトされた語を飽和させることによって得られた値を返す関数である、
ことを特徴とする前記データ処理装置。 - データ処理装置であって、
データ処理命令語に応答して、処理制御信号を発生する命令解読器(4)と、
前記処理制御信号によって制御され、データ・オペランド語についてデータ処理演算を実行する処理論理(6)と、
を含むデータ処理装置において、
前記命令解読器(4)は、第1の命令語(QDSUB)に応答して、前記処理論理を制御する制御信号を発生し、第1のNビット・データ・オペランド語Pと、第2のNビット・データ・オペランド語Qについてデータ処理演算を実行して、
R = Sat(Fun(P)−Q)
によって与えられるNビットの結果データ語Rを発生し、ここで、
Sat(X)は、値Xの飽和した値を返す関数であり、
Fun(X)は、少なくとも、N/2ビットとN/2ビットの符号付き乗算によって発生することができるXの値に対して動作し、シフトによりアンダーフロー又はオーバーフローが発生しない場合にシフト量でXをシフトすることによってシフトされた語を発生し、シフトによりアンダーフロー又はオーバーフローが発生する場合に前記シフトされた語を飽和させることによって得られた値を返す関数である、ことを特徴とする前記データ処理装置。 - データ処理装置であって、
データ処理命令語に応答して、処理制御信号を発生する命令解読器(4)と、
前記処理制御信号によって制御され、データ・オペランド語についてデータ処理演算を実行する処理論理(6)と、
を含むデータ処理装置において、
前記命令解読器(4)は、第1の命令語(QDRSB)に応答して、前記処理論理を制御する制御信号を発生し、第1のNビット・データ・オペランド語Pと、第2のNビット・データ・オペランド語Qについてデータ処理演算を実行して、
R = Sat(Q−Fun(P))
によって与えられるNビットの結果データ語Rを発生し、ここで
Sat(X)は、値Xの飽和した値を返す関数であり、
Fun(X)は、少なくとも、N/2ビットとN/2ビットの符号付き乗算によって発生することができるXの値に対して動作し、シフトによりアンダーフロー又はオーバーフローが発生しない場合にシフト量でXをシフトすることによってシフトされた語を発生し、シフトによりアンダーフロー又はオーバーフローが発生する場合に前記シフトされた語を飽和させることによって得られた値を返す関数である、ことを特徴とする前記データ処理装置。 - 請求項1、2および3のいずれか1項に記載のデータ処理装置において、前記シフト量は、前記シフトされた語が前記第1のNビット・データ・オペランド語Pの2倍の値になるようなシフト量である前記データ処理装置。
- 請求項1から4のいずれか1項に記載のデータ処理装置において、前記シフトされた語を飽和させることは、前記第1のNビット・データ・オペランド語Pの所定の特徴を検出し、検出した場合、前記シフトされた値と、許容値範囲のそれぞれの端点を示す値を交換する前記データ処理装置。
- 請求項5に記載のデータ処理装置において、前記第1のNビット・データ・オペランド語は符号付き値であり、前記所定の特徴は、前記第1のNビット・データ・オペランド語Pの最上位2ビットが等しくないことである前記データ処理装置。
- 請求項1から6のいずれか1項に記載のデータ処理装置において、Sat(X)は、Xが許容値範囲の外側にあるか検出して、検出した場合は、Xと、前記許容値範囲のそれぞれの端点を示す値を交換して、前記Nビット結果データ語Rを発生する前記データ処理装置。
- 請求項1から7のいずれか1項に記載のデータ処理装置において、前記処理論理は乗算器(MUL)を含み、前記第1のNビット・オペランド・データ語Pは、第2の命令語に応答して、第3のN/2ビット・データ・オペランド語Aと第4のN/2ビット・データ・オペランド語Bの符号付き乗算によって発生する乗算結果である前記データ処理装置。
- 請求項1から8のいずれか1項に記載のデータ処理装置において、前記第1のNビット・オペランド・データ語P、前記第2のNビット・オペランド・データ語Qおよび前記Nビット結果データ語Rは、−1≦P<+1、−1≦Q<+1、−1≦R<+1で、Sat(X)が範囲−1≦X<+1に対して存在するように、最上位ビット位置とその右のビット位置の間に小数点があるとする、符号付き固定小数点データ語である前記データ処理装置。
- 請求項1から9のいずれか1項に記載のデータ処理装置において、Fun(X)は、XのNビットの値のすべてに対して動作し、シフトによりアンダーフロー又はオーバーフローが発生しない場合にシフト量でXをシフトしてシフトされた語を発生し、シフトによりアンダーフロー又はオーバーフローが発生する場合に前記シフトされた語を飽和させることによって得られた値を返す関数である前記データ処理装置。
- 請求項1から10のいずれか1項に記載のデータ処理装置において、N = 32である前記データ処理装置。
- 請求項1から11のいずれか1項に記載のデータ処理装置において、集積回路を含む前記データ処理装置。
- データ処理装置においてデータを処理する方法であって、
データ処理命令語に応答して、処理制御信号を発生するステップと、
前記処理制御信号の制御のもとにデータ・オペランド語についてデータ処理演算を実行するステップと、
を含む方法において、
第1の命令語(QDADD)に応答して、前記処理論理(6)を制御する制御信号を発生し、第1のNビット・データ・オペランド語Pと、第2のNビット・データ・オペランド語Qについてデータ処理演算を実行して、
R = Sat(Fun(P)+Q)
によって与えられるNビットの結果データ語Rを発生し、ここで、
Sat(X)は、値Xの飽和した値を返す関数であり、
Fun(X)は、少なくとも、N/2ビットとN/2ビットの符号付き乗算によって発生することができるXの値に対して動作し、シフトによりアンダーフロー又はオーバーフローが発生しない場合にシフト量でXをシフトすることによってシフトされた語を発生し、シフトによりアンダーフロー又はオーバーフローが発生する場合に前記シフトされた語を飽和させることによって得られた値を返す関数である、ことを特徴とする前記方法。 - データ処理装置においてデータを処理する方法であって、
データ処理命令語に応答して、処理制御信号を発生するステップと、
前記処理制御信号の制御のもとにデータ・オペランド語についてデータ処理演算を実行するステップと、
を含む方法において、
第1の命令語(QDSUB)に応答して、処理論理(6)を制御する制御信号を発生し、第1のNビット・データ・オペランド語Pと、第2のNビット・データ・オペランド語Qについてデータ処理演算を実行して、
R = Sat(Fun(P)−Q)
によって与えられるNビットの結果データ語Rを発生し、ここで、
Sat(X)は、値Xの飽和した値を返す関数であり、
Fun(X)は、少なくとも、N/2ビットとN/2ビットの符号付き乗算によって発生することができるXの値に対して動作し、シフトによりアンダーフロー又はオーバーフローが発生しない場合にシフト量でXをシフトすることによってシフトされた語を発生し、シフトによりアンダーフロー又はオーバーフローが発生する場合に前記シフトされた語を飽和させることによって得られた値を返す関数である、ことを特徴とする前記方法。 - データ処理装置においてデータを処理する方法であって、
データ処理命令語に応答して、処理制御信号を発生するステップと、
前記処理制御信号の制御のもとにデータ・オペランド語についてデータ処理演算を実行するステップと、
を含む方法において、
第1の命令語(QDRSB)に応答して、処理論理(6)を制御する制御信号を発生し、第1のNビット・データ・オペランド語Pと、第2のNビット・データ・オペランド語Qについてデータ処理演算を実行して、
R = Sat(Fun(P)−Q)
によって与えられるNビットの結果データ語Rを発生し、ここで、
Sat(X)は、値Xの飽和した値を返す関数であり、
Fun(X)は、少なくとも、N/2ビットとN/2ビットの符号付き乗算によって発生することができるXの値に対して動作し、シフトによりアンダーフロー又はオーバーフローが発生しない場合にシフト量でXをシフトすることによってシフトされた語を発生し、シフトによりアンダーフロー又はオーバーフローが発生する場合に前記シフトされた語を飽和させることによって得られた値を返す関数である、ことを特徴とする前記方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB9825543A GB2343970A (en) | 1998-11-20 | 1998-11-20 | Arithmetic operations in a data processing system |
GB9825543.3 | 1998-11-20 | ||
PCT/GB1999/001653 WO2000031621A1 (en) | 1998-11-20 | 1999-05-26 | Arithmetic operations in a data processing system |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002530774A JP2002530774A (ja) | 2002-09-17 |
JP4177962B2 true JP4177962B2 (ja) | 2008-11-05 |
Family
ID=10842828
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000584375A Expired - Lifetime JP4177962B2 (ja) | 1998-11-20 | 1999-05-26 | データ処理システムにおける数値演算 |
Country Status (6)
Country | Link |
---|---|
JP (1) | JP4177962B2 (ja) |
KR (1) | KR100623604B1 (ja) |
DE (1) | DE69902814T2 (ja) |
IL (1) | IL141982A (ja) |
MY (1) | MY114856A (ja) |
RU (1) | RU2225638C2 (ja) |
-
1999
- 1999-05-26 RU RU2001116716/09A patent/RU2225638C2/ru not_active IP Right Cessation
- 1999-05-26 JP JP2000584375A patent/JP4177962B2/ja not_active Expired - Lifetime
- 1999-05-26 KR KR1020017006111A patent/KR100623604B1/ko not_active IP Right Cessation
- 1999-05-26 DE DE69902814T patent/DE69902814T2/de not_active Expired - Lifetime
- 1999-05-26 IL IL14198299A patent/IL141982A/en not_active IP Right Cessation
- 1999-06-17 MY MYPI99002498A patent/MY114856A/en unknown
Also Published As
Publication number | Publication date |
---|---|
IL141982A (en) | 2005-12-18 |
DE69902814T2 (de) | 2003-01-09 |
KR100623604B1 (ko) | 2006-09-13 |
IL141982A0 (en) | 2002-03-10 |
KR20010092743A (ko) | 2001-10-26 |
DE69902814D1 (de) | 2002-10-10 |
RU2225638C2 (ru) | 2004-03-10 |
JP2002530774A (ja) | 2002-09-17 |
MY114856A (en) | 2003-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5530663A (en) | Floating point unit for calculating a compound instruction A+B×C in two cycles | |
US20040128331A1 (en) | Data processing apparatus and method for converting a number between fixed-point and floating-point representations | |
US6128726A (en) | Accurate high speed digital signal processor | |
GB2341702A (en) | Floating-point multiply-accumulate unit | |
EP1049025A1 (en) | Method and apparatus for arithmetic operation | |
EP1137980B1 (en) | Arithmetic operations in a data processing system | |
JP5640081B2 (ja) | 飽和を伴う整数乗算および乗算加算演算 | |
JPH09507941A (ja) | multiply−add浮動小数点シーケンスにおけるウエイト・サイクルなしのブロック正規化 | |
EP0772809B1 (en) | Method for performing a "rotate through carry" operation | |
US5337265A (en) | Apparatus for executing add/sub operations between IEEE standard floating-point numbers | |
JP2511527B2 (ja) | 浮動小数点演算器 | |
JP4177962B2 (ja) | データ処理システムにおける数値演算 | |
US6014683A (en) | Arithmetic operation system for arithmetically operating a first operand having an actual point and a second operand having no actual point | |
JPH01302425A (ja) | 浮動小数点加減算回路 | |
US4951238A (en) | Processor for executing arithmetic operations on input data and constant data with a small error | |
JP3579087B2 (ja) | 演算器およびマイクロプロセッサ | |
JP4159565B2 (ja) | ベクトル積和演算回路 | |
KR19990077418A (ko) | 부동소수점2진4워드포맷승산명령유닛 | |
JP3132436B2 (ja) | 浮動小数点積和演算器 | |
KR100309520B1 (ko) | 라운드오프기능을갖는승산방법및승산회로 | |
JP3315042B2 (ja) | 乗算装置 | |
JP2006155102A (ja) | 演算処理装置 | |
JP2903529B2 (ja) | ベクトル演算方式 | |
JP3638218B2 (ja) | シフト機能付きalu命令を持つマイクロプロセッサ | |
JP3100868B2 (ja) | 浮動小数点数のための算術演算装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050608 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070628 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080314 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20080616 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20080623 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080710 |
|
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: 20080812 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080825 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110829 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110829 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120829 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130829 Year of fee payment: 5 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |