JP2004013519A - 演算方法および演算回路 - Google Patents

演算方法および演算回路 Download PDF

Info

Publication number
JP2004013519A
JP2004013519A JP2002166018A JP2002166018A JP2004013519A JP 2004013519 A JP2004013519 A JP 2004013519A JP 2002166018 A JP2002166018 A JP 2002166018A JP 2002166018 A JP2002166018 A JP 2002166018A JP 2004013519 A JP2004013519 A JP 2004013519A
Authority
JP
Japan
Prior art keywords
accumulator
value
down counter
arithmetic unit
data bus
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
JP2002166018A
Other languages
English (en)
Other versions
JP3497852B1 (ja
Inventor
Teruaki Uehara
上原 輝昭
Keitaro Ishida
石田 圭太郎
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.)
Oki Electric Industry Co Ltd
Original Assignee
Oki Electric Industry Co Ltd
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 Oki Electric Industry Co Ltd filed Critical Oki Electric Industry Co Ltd
Priority to JP2002166018A priority Critical patent/JP3497852B1/ja
Priority to US10/367,691 priority patent/US7089277B2/en
Publication of JP2004013519A publication Critical patent/JP2004013519A/ja
Application granted granted Critical
Publication of JP3497852B1 publication Critical patent/JP3497852B1/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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/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/50Adding; Subtracting
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • G06F7/509Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination for multiple operands, e.g. digital integrators
    • G06F7/5095Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination for multiple operands, e.g. digital integrators word-serial, i.e. with an accumulator-register
    • 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/49905Exception handling
    • G06F7/4991Overflow or underflow
    • 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/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/607Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers number-of-ones counters, i.e. devices for counting the number of input lines set to ONE among a plurality of input lines, also called bit counters or parallel counters

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Optimization (AREA)
  • General Engineering & Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Complex Calculations (AREA)

Abstract

【課題】プロセッサ上のレジスタのダイナミックレンジを拡大する演算方法および演算回路を提供する。
【解決手段】演算方法において、演算器4とアキュムレータ1とによりプロセッサの演算を実行する手順と、制御回路により演算器4のキャリー信号と演算器4へのデータバス2からの入力データの符号信号に規則的に応じてアップダウンカウンタ5の内容をアキュムレータ1の内容と組み合わせて正しい値になるように制御する制御信号をアップダウンカウンタ5に出力する手順と、アキュムレータ1によりアキュムレータ1の値をデータバス2と演算器4に出力する手順と、アップダウンカウンタ5によりアキュムレータ1の許容範囲を超えた正しい値の上位部分の値を有するアップダウンカウンタ5の値をデータバス2に出力する手順と、からなる。
【選択図】 図1

Description

【0001】
【発明の属する技術分野】
本発明は、プロセッサの演算回路に関し、特にハードウエアの増加を最小に抑え、コストを増加させることなくプロセッサの演算のダイナミックレンジを増大させる演算回路および演算方法に関する。
【0002】
【従来の技術】
プロセッサ上のデータ演算は、レジスタ、データバス及びメモリアレイを使用して実行される。大部分のプロセッサはアキュムレータと呼ばれる1個以上のレジスタを有する。アキュムレータ・レジスタ(以下、「アキュムレータ」という。)は、プロセッサの算術及び論理演算を実行する装置である。
【0003】
演算時、データはプロセッサのメモリから読み出され、アキュムレータに記憶される。それから、加算(ADD)や減算(SUBTRACT)指令に基づく演算がアキュムレータを用いて実行される。これらの演算後に、結果がアキュムレータに記憶される。このとき、メモリの内容は変化しないままである。
【0004】
【発明が解決しようとする課題】
DSP(DSP:Digita1 Signal Processor)など多くのプロセッサでは、信号処理計算などで累積演算(以下、「累算」という。)を行う場合、レジスタでのオーバーフローの問題がある。
【0005】
状態評価器やカルマン・フィルタに用いられているような多くの被制御アルゴリズムで、アキュムレータの累算された結果がレジスタの範囲を超えて、レジスタ・オーバーフローを発生する場合がある。例えば、32ビット・アキュムレータは32ビット・レジスタの最大正値又は最大負値を超える結果を有する場合がある。このオーバーフローを収容するため、現在のビット・サイズを越えてレジスタを拡張し、そのダイナミックレンジを拡大することも可能である。
【0006】
しかしながら、アキュムレータの元のビット・サイズに対して書かれた命令とコードは、この新たなダイナミックレンジにしたアキュムレータのビット・サイズとは適合しない。従って、両者で同じ数値演算は保持されず、レジスタのキヤリとオーバーフロー・フラッグに対する効果はダイナミックレンジを拡張した場合としなかった場合で異なる。
【0007】
レジスタの範囲を物理的に拡張する代わりに浮動小数点演算を実装してもよいが、これらの演算は更なる命令とソフトウェア・コードを必要とする。さらに、以上の解決方法は全て、より多くのシリコン、即ちハードウエアを必要とし、プロセッサ上に実装するために費用がかかる。
【0008】
以上のことから、より多くのシリコンを必要とせず、又はコストを増大せずに、プロセッサ上のレジスタのダイナミックレンジを拡大する方法の必要性が認められる。
【0009】
関連技術を示す特開2000−35875号公報では、以上の問題を解決する方法として、アキュムレータにアップダウンカウンタ(特開2000−35875号公報では「オーバーフロー・カウンタ」)を設ける方法を開示している。「オーバ−フロー・カウンタ」はアキュムレータのオーバーフロー信号をカウントするレジスタであり、累算の途中の結果がアキュムレータの使用ビット数内の正しい値を表す許容範囲内に収まっていないときに前記許容範囲内の所定値以外の値を有するように機能する。特開2000−35875号公報は、この「オーバーフロー・カウンタ」を設けることで、従来大量に必要であった半導体集積回路のゲート量すなわちシリコン量を増加させることなく、アキュムレータのダイナミックレンジの拡大を実現している。
【0010】
しかしながら、特開2000−35875号公報による方法では以下の問題がある。
【0011】
▲1▼累計演算が終了した時点での最終演算結果の正当性の問題:
累計演算が終了した時の結果が、アキュムレータの使用ビット数の許容範囲に収まっている場合は正しい値を得られるが、アキュムレータの前記許容範囲に収まっていない場合、即ち、正のオーバーフローまたは負のオーバーフローが発生した場合、アキュムレータの演算範囲を前記許容範囲内の正の最大値または負の最大値に蝕和させる処理をするため、正しい値が得られない。
【0012】
具体的にはアキュムレータが16ビットの場合、累算の結果が−215より小さいときは−215に、累算の結果が215−1より大きいときは215−1として演算結果を飽和させる。このため、真の(16ビット以上の)データを得ることができない。
【0013】
図9を用いて詳細に説明する。
【0014】
図9に示すように、累算スタートからの実際の累積演算の経過が実線のとおりの場合、アキュムレータの内容はアキュムレータの許容範囲を推移し、一旦オーバーフローを経由してアキュムレータの許容範囲に戻ってくる。その後、再度オーバーフローに進み累算を終了する。
【0015】
従来の演算回路の動作は、図9において、累算値が215−1より大きいときは215−1として演算結果を飽和させる。その後、累算値が減少を始めると、アキュムレータの内容がP点から減少を始め、実線に倣って鎖線のように減少する。その後、実線の演算経過に倣って同様に動作する。この結果、この従来の演算回路はオーバーフローが発生すると、最終累算値が実際の累算値と違ったものになる欠点があった。
【0016】
上記特開2000−35875号公報の例の場合はアキュムレータの累算値が215−1より小さいときは従来の演算回路と同じであるが、アキュムレータの累算値が215−1以上となった場合も正しい値を保持し続ける点が異なっている。しかし、累算終了時に累算結果がアキュムレータの許容範囲を超えていた場合(図9のA点)、演算結果は飽和されて出力する(図9のC点)。この結果、正しい値と出力値にはA−Cの差が発生し、正しい値が得られない欠点が存在した。
【0017】
▲2▼複数の変数を同時に演算する場合の問題:
独立した複数の変数に対して交互に演算を行う必要がある場合、特開2000−35875号公報による方法では毎回、アキュムレータの拡張部分が入っているカウンタの値(「オーバーフロー・カウンタ」の値)を待避する必要がある。この待避のための操作がオーバヘッドとなり高速に演算ができない問題がある。
【0018】
このような問題の発生する累算には、複素数の累算がある。複素数の累算では実数側の変数と虚数側の2つの変数を独立に交互に行う必要がある。例えば、実数側の変数の演算から虚数側の変数の演算に切り替えるとき、実数側の値を保持していたカウンタの内容を退避する処理が必要となり、この処理のためにオーバーヘッドが生じる。
【0019】
本発明の目的は、従来のレジスタ演算に付随する上記欠点と問題を実質的に除去又は減少させるために、プロセッサ上のレジスタのダイナミックレンジを拡大する演算方法およびそのための演算回路を提供することである。
【0020】
【課題を解決するための手段】
本発明は、上記目的を達成するために、
(1) 演算方法において、演算器とアキュムレータとにより プロセッサの演算を実行する手順と、制御回路により 前記演算器のキヤリー信号と前記演算器へのデータバスからの入力データの符 号信号とに規則的に応じてアップダウンカウンタの内容を前記アキュムレータの内容と組み合わせて正しい値になるように制御する制御信号を前記アップダウンカウンタに出力する手順と、前記アキュムレータにより 前記アキュムレータの値を前記データバスと前記演算器に出力する手順と、前記アップダウンカウンタにより 前記アキュムレータの内容と組み合わせて正しい値となるように制御信号に基づいて制御する 前記アップダウンカウンタの値を前記データバスに出力する手順と、からなることを特徴とする。
(2) 演算回路において、演算器の演算結果を記憶し、記憶した内容をデータバスと前記演算器に出力するアキュムレータと、前記アキュムレータの内容と前記データバスからのデータの内容を演算する前記演算器と、前記演算器のキャリー信号と前記演算器への前記データバスからの前記データの符号信号とに規則的に応じてアップダウンカウンタの内容を前記アキュムレータの内容と組み合わせて正しい値になるように制御する制御信号を前記アップダウンカウンタに出力する制御回路と、前記制御回路から出力される制御信号によって自らの内容を正しい値の上位部分の値にさせ、その内容を前記アキュムレータの許容範囲の値と組み合わせて正しい値となる値として前記データバスに出力するアップダウンカウンタと、からなることを特徴とする。
(3) 演算方法において、演算器とアキュムレータとにより プロセッサの演算を実行する手順と、制御回路により 前記演算器のオーバーフロー信号と前記演算器の演算結果の符号信号に規則的に応じて 、アップダウンカウンタの内容をオーバーフロー回数値とする手順と、前記アキュムレータにより 前記アキュムレータの値をデータバスと前記演算器に出力する手順と、補正回路により 前記アップダウンカウンタの値を補正時の前記アキュムレータの値の前記符号信号に規則的に応じてその内容を前記アキュムレータの内容と組み合わせて正しい値になるように補正し、補正した内容を前記データバスに出力する手順と、
前記アップダウンカウンタにより制御回路から出力される制御信号によって自らの内容をオーバーフローの回数にさせ、その内容を前記アキュムレ一夕の許容範囲を超えたオーバーフローの回数値として前記データバスまたは前記補正回路に出力する手順と、からなることを特徴とする。
【0021】
(4) 演算回路において、演算器の演算結果を記憶し、記憶した内容をデータバスと前記演算器に出力するアキュムレータと、前記アキュムレータの内容と前記データバスからのデータの内容を演算する前記演算器と、前記演算器のオーバーフロー信号と前記演算器の演算結果の符号信号に規則的に応じてアップダウンカウンタの内容をオーバーフローの回数になるように制御信号を前記アップダウンカウンタに出力する制御回路と、前記制御回路から出力される制御信号によって自らの内容を前記オーバーフローの回数値にさせ、その内容を前記データバスまたは補正回路に出力する前記アップダウンカウンタと、前記アップダウンカウンタの値を補正時の前記アキュムレータの値の符号信号に従って、内容を前記アキュムレータの内容と組み合わせて正しい値になるように補正し、補正した内容を前記データバスに出力する前記補正回路と、からなることを特徴とする。
【0022】
(5) 演算方法において、プロセッサにより複数のアップダウンカウンタ及び複数のアキュムレータを重複しないで組として選択する手順と、演算器と前記アキュムレータとにより前記プロセッサの演算を実行する手順と、制御回路により前記演算器のキヤリー信号と前記演算器へのデータバスからの入力データの符号信号に規則的に応じて前記アップダウンカウンタの内容を前記アキュムレータの内容と組み合わせて正しい値になるように制御する制御信号を前記アップダウンカウンタに出力する手順と、前記アキュムレータにより前記アキュムレータの値を前記データバスと前記演算器に出力する手順と、前記アップダウンカウンタにより前記アキュムレータの内容と組み合わせて正しい値となるように制御信号に基づいて制御する前記アップダウンカウンタの値を前記データバスに出力する手順と、からなることを特徴とする。
【0023】
(6) 演算回路において、重複しないで複数の内の1つのアップダウンカウンタと組となり、演算器の演算結果を記憶し、記憶した内容をデータバスと前記演算器に選択的に出力する複数のアキュムレータと、前記アキュムレータの内容と前記データバスからのデータの内容を演算する前記演算器と、前記演算器のキヤリー信号と前記演算器の前記データバスからの前記データの符号信号に規則的に応じて前記アップダウンカウンタの内容を前記アキュムレータの内容と組み合わせて正しい値になるように制御する制御信号を前記アップダウンカウンタに出力する制御回路と、前記アキュムレータと組となり、前記制御回路から出力される制御信号によって自らの内容を前記正しい値の上位部分の値にさせ、その内容を前記アキュムレータの許容範囲の値と組み合わせて正しい値となる値として前記データバスに選択的に出力する複数の前記アップダウンカウンタと、からなることを特激とする演算回路。
【0024】
(7) 演算方法において、プロセッサにより 複数のアップダウンカウンタ及び複数のアキュムレータを重複しないで組として選択する手順と、演算器と前記アキュムレータとにより 前記プロセッサの演算を実行する手順と、制御回路により前記演算器のオーバーフロー信号と前記演算器の演算結果の符号信号とに規則的に応じて、前記アップダウンカウンタの内容をオーバーフロー回数値とする手順と、前記アキュムレータにより複数のアキュムレ一夕の値をデータバスおよび前記演算器に出力する手順と、前記アップダウンカウンタにより制御回路から出力される制御信号で自らの内容をオーバーフローの回数にさせ、その内容を前記アキュムレータの許容範囲を超えたオーバーフローの回数値として前記データバスまたは補正回路に出力する手順と、前記補正回路により前記アップダウンカウンタの値を補正時の前記アキュムレータの値の符号信号に規則的に応じてその内容を前記アキュムレータの内容と組み合わせて正しい値になるように補正し、その補正した内容を前記データバスに出力する手順と、からなることを特徴とする。
【0025】
(8) 演算回路において、重複しないで複数の内の1つのアップダウンカウンタと組となり、演算器の演算結果を記憶し、記憶した内容をデータバスと前記演算器に出力するアキュムレータと、前記アキュムレータの内容と前記データバスからのデータの内容を演算する前記演算器と、前記演算器のオーバーフロー信号と前記演算器の演算結果の符号信号に規則的に応じて前記アップダウンカウンタの内容をオーバーフローの画数値になるように制御信号を前記アップダウンカウンタに出力する制御回路と、前記アキュムレータと組となり、前記制御回路から出力される制御信号によって自らの内容を前記オーバーフローの回数値にさせ、その内容を補正回路または前記データバスに出力する複数の前記アップダウンカウンタと、前記アップダウンカウンタの値を補正時の前記アキュムレータの値の符号信号にしたがってその内容を前記アキュムレータの内容と組み合わせて正しい値になるように補正し、補正した内容を前記データバスに出力する補正回路と、からなることを特徴とする。
(9) 上記(1)、(3)、(5)および(7)のいずれか1項記載の演算方法において、前記制御信号を、前記演算器のキヤリー信号と前記演算器への前記データバスからの入力データの符号信号に規則的に応じて前記アップダウンカウンタの内容を+1、無変化および−1のいずれか1つにする前記制御信号としたことを特徴とする。
(10) 上記(2)、(4)、(6)および(8)のいずれか1項記載の演算回路において、前記制御信号を、前記演算器のキャリー信号と前記演算器への前記データバスからの入力データの符号信号に規則的に応じて前記アップダウンカウンタの内容を+1、無変化および−1のいずれか1つにする制御信号としたことを特徴とする。
【0026】
【発明の実施の形態】
以下、本発明の実施の形態を図を参照して詳細に説明する。
【0027】
まず、本発明のダイナミックレンジを拡大する手法について説明する。
【0028】
累算がアキュムレータの使用ビット数により決まる許容範囲を超えてオーバーフローが発生したとき、アップダウンカウンタには、アキュムレータの許容範囲を越えた累算値の上位部分に相当する正しい値が入っている。また、アキュムレータにはこのアキュムレータの使用ビット数により決まる値、即ち、許容範囲内の累算値の下位部分に相当する値が入っている。したがって累算結果がアキュムレータの許容範囲を越えた場合でも、これら2つのレジスタの値から、最終的な累算値の正しい値を得ることができるようになっている。
【0029】
また、累算の結果、一旦オーバーフローになっても、そのオーバーフローの間中正しい値を持っている。そのため、オーバーフローの状態で演算が終了しても、正しい値を出力することができるので、先の特開2000−35875号公報に示された方法のような誤った値を出す不都合が生じない。
【0030】
(第1実施例)
図1は本発明の第1実施例を示す図である。
【0031】
この説明ではアキュムレータ、データバス、メモリ、演算器のビット幅を16ビットとして説明する。また、アップダウンカウンタのビット幅を8ビットとする。即ち、この例では本来16ビット幅のアキュムレータに対して8ビット分ダイナミックレンジを拡大している。
【0032】
接続及び各構成部品を説明する。
【0033】
以下の説明では、図中の同じ機能を持つ部品に対しては全て同じ番号を用いている。例えば、第1実施例の説明での演算器4と第2実施例の説明での演算器4は同一の機能を持つ。
【0034】
データバス2はアキュムレータ1、メモリ3、演算器4、アップダウンカウンタ5、制御回路6に接続されている。アキュムレータの「内容」、データバスからのデータの「内容」、アップダウンカウンタの「内容」と用いられている「内容」は、各ビットが値を有する一連のビットからなるデータをいう。
【0035】
演算器4はメモリ3からデータバス2を介して転送されたデータとアキュムレータ1の値を入力して、16ビットの演算を行い、演算結果をアキュムレータ1に出力する。また演算器4は、演算のキャリー信号9を制御回路6に出力する。演算器4は一般的なALUである。この演算器4の機能は必ずしも以下に限定されないが、加算、減算などの演算が可能である。この実施例では加算演算を例として説明する。
【0036】
アキュムレータ1はデータバス2以外に演算器4に直接接続され、演算器4からの16ビットの演算結果を格納し、アキュムレータ1の値を演算器4に入力する。またアキュムレータ1の値は、データバス2を介してメモリ3に転送することも可能である。
【0037】
制御回路6はアップダウンカウンタ5を制御する。制御回路6の入力は2つある。1つは、演算器4のデータバス2から接続されている側のデータ入力7の最上位ビット即ち符号ビット8で、もう1つは演算器4のキャリー信号9である。制御回路6はこれら2つの入力からアップダウンカウンタ5の値の変動を制御する。具体的には、アップダウンカウンタ5の値を無変化もしくは+1(1加算する。以下、同じ)、−1(1減算する。以下、同じ)させる。
【0038】
アップダウンカウンタ5は制御回路6からの制御信号により値を無変化、+1、−1にする。
【0039】
次に、第1実施例の動作を説明する。
【0040】
図5は第1実施例の動作フロー図である。
【0041】
メモリ3に累算すべき複数のデータが入っている状態から、第1実施例の動作は以下のように行われる。
【0042】
(1)初期化:ステップS500において、アップダウンカウンタ5の内容、アキュムレータ1の内容を初期値に初期化する。この説明ではこの初期値を0とする。
【0043】
(2)演算:ステップS501において、累算の演算を行う。このステップS501は累算すべきデータがなくなるまで行われる。なお、ステップS501では以下のステップS503〜S506の4つのステップを実行する。
【0044】
(2.1)ステップS503において、メモリ3から累算すべきデータをデータバス2に転送する。
【0045】
(2.2)ステップS504において、アキュムレータ1の値とステップS503において、メモリ3から転送したデータを演算器4で加算する。この加算の結果、アキュムレータ1の値は以下のように更新される。
【0046】
アキュムレータ1の値+メモリ3の値→アキュムレータ1の値(更新後)
このとき演算器4では加算演算のキャリーが発生する場合がある。その値は、キャリー信号9として制御回路6に出力される。
【0047】
(2.3)ステップS505では、制御回路6によってアップダウンカウンタ5を制御する。制御回路6は、ステップS504で演算器4から出力されたキャリー信号9と、ステップS503においてメモリ3から転送したデータの符号ビットの値すなわち演算器4のデータ入力7の符号ビット8から表1の制御論理で動作する。
【0048】
アップダウンカウンタ5はこの制御論理で動作し、値を更新する。アップダウンカウンタ5の値は累算値の上位部分に相当する値である。即ち、 累算値がアキュムレータ1の前記許容範囲(例では16進数の7FFF〜8000)を正の方向に超えている場合は超えた分の正の値を示し、逆に許容範囲を負の方向に超えている場合は、負の値を示している。アップダウンカウンタ5の値が0と等しい場合は累算値はアキュムレータ1の許容範囲にある。
【0049】
【表1】
Figure 2004013519
【0050】
オーバーフロー時のアップダウンカウンタの設定は、例えば、カウンタを2ビット、アキュムレータを4ビットで例示すると、以下のようになる。
アキュムレータの内容が最大値の状態  →オーバーフロー発生時
負のオーバーフロー 00 1000  →  11 1000
正のオーバーフロー 00 0111  →  01 0111
(2.4)ステップS506では、累算の演算を終了するかどうかを判断する。累算すべきデータがまだある場合(NO)は、ステップS503に再び戻って累算の演算を続行する。累算すべきデータがもうない場合(YES)は、累算の演算を終了する。
【0051】
(3)結果出力:ステップS502において、累積演算の結果をデータバス2に出力する。累積演算の結果、アキュムレータ1にはアキュムレータの使用ビットの値、即ち、許容範囲内の累算値の下位部分(累算値の全ビットの内の下位ビット部分)に相当する値が入っている。一方、アップダウンカウンタ5には、アキュムレータ1の前記許容範囲を超えた、累算値の上位部分(前記下位ビット部分とで前記累算値の全ビットを構成する部分)に相当する値が入っている。この累算値は前記上位部分と前記下位部分で全ビットが構成される。アキュムレータ1とアップダウンカウンタ5の値をデータバス2に出力する。
【0052】
以上のように第1実施例によれば、ステップS505での操作によって、アップダウンカウンタ5には、アキュムレータ1の前記許容範囲を越えた累算値の前記上位部分に相当する正しい値が入っている。また、アキュムレータ1にはこのアキュムレータ1の前記許容範囲内の累算値の前記下位部分に相当する値が入っている。したがって累算結果がアキュムレータ1の許容範囲を越えた場合でも、これら2つのレジスタの値から、最終的な累算値の範囲全体での正しい値を得ることができる。
【0053】
また、このアキュムレータ1とアップダウンカウンタ5はデータバス2に接続されているので、データバス2に接続されているレジスタやメモリなどの他の部分に転送したり、他の部分から参照することができる。例えば、アキュムレータ1とアップダウンカウンタ5の値をデータバス2を介してメモリ3に転送することも可能である。
【0054】
第1実施例では、アキュムレータ1が16ビットでアップダウンカウンタ5は8ビットであるので、最高で24ビットの累積演算結果を正しい値で得ることができる。つまり、8ビットのアップダウンカウンタ5が本来16ビット幅のアキュムレータ1に対して24ビットのダイナミックレンジを提供していることと等価である。
【0055】
このように、累加算演算などで演算器4の演算結果がアキュムレータ1の許容範囲を超える場合は、アップダウンカウンタ5は自分のビット範囲においてアキュムレータ1に対して必要なだけのダイナミックレンジの拡大を可能とする。一方、累加算演算以外の一般的な演算で、演算器4の演算結果がアキュムレータ1の許容観囲を超えない場合においては、アキュムレータ1は本来の16ビットのレジスタとして問題なく動作する。
【0056】
すなわち、アップダウンカウンタ5または制御回路6は、アキュムレータ1に何の影響も与えないからである。この場合、プロセッサはアップダウンカウンタ5または制御回路6などの第1実施例による拡張部分を一切使用することなく、16ビットのアキュムレータ1を必要とする一般的な命令を実行することが可能である。
【0057】
(第2実施例)
【0058】
図2は本発明の第2実施例を示す図である。
【0059】
この実施例では、第1実施例と同じように、アキュムレータ、データバス、メモリ、演算器のビット幅を16ビットとして説明する。また、アップダウンカウンタのビット幅を8ビットとする。即ち、この例では本来16ビット幅のアキュムレータに対して8ビットダイナミックレンジを拡大している。
【0060】
次に、接続及び各構成部品の動作を説明する。
【0061】
データバス2は、演算器4,メモリ3、アキュムレータ1、アップダウンカウンタ5、補正回路10に接続されている。
【0062】
演算器4はメモリ3からデータバス2を介して転送されたデータとアキュムレータ1の値を入力して、16ビットの演算を行い、演算結果をアキュムレータ1に出力する。また演算器4は、演算結果のオーバーフロー信号11と演算結果の符号信号12を制御回路16に出力する。演算器4は一般的なALUである。この演算器4の機能は必ずしも以下に限定されないが、加算、減算などの演算が可能である。この実施例では加算演算を行う。
【0063】
アキュムレータ1はデータバス2以外に演算器4に直接接続されている。このアキュムレータ1は演算器4からの16ビットの演算結果を格納する。また、前述の通り、このアキュムレータ1の値は演算器4の入力として用いられる。更に、アキュムレータ1の値は、データバス2を介してメモリ3に転送することも可能である。
【0064】
制御回路16はアップダウンカウンタ5を制御する。制御回路16の入力は2つある。1つは演算器4のオーバーフロー信号11で、もう1つは演算結果の符号信号12である。制御回路16はこれら2つの入力からアップダウンカウンタ5の値の変更を制御する。具体的には、アップダウンカウンタ5の値を無変化もしくは+1、−1させる。
【0065】
アップダウンカウンタ5は制御回路16からの信号により値を+1、−1、無変化に変更する。
【0066】
補正回路10はアキュムレータ1の出力信号の符号ビット13によってアップダウンカウンタ値を補正する。
【0067】
即ち、アップダウンカウンタ5には、累算結果がアキュムレータ1の許容範囲を越えた場台発生したオーバーフローの回数が入っている。このカウンタ値は累算値の上記上位部分とは異なるため、累算値の上位部分の本当の値を得るためには補正が必要となる。カウンタ値を補正し、累算値の上位部分の本当の値を得るための操作を補正回路10で実現する。
【0068】
次に、第2実施例の動作を説明する。
【0069】
図6は第2実施例の動作フロー図である。
【0070】
メモリ3に累算すべき複数のデータが入っている。
【0071】
第2実施例の動作は以下のように行われる。
【0072】
(1)初期化:ステップS600において、アップダウンカウンタ5、アキュムレータ1を初期値に初期化する。第2実施例ではこの初期値を0とする。
【0073】
(2)演算:ステップS601において、累算の演算を行う。このステップS601は累算すべきデータがなくなるまで行われる。なお、ステップS601では以下のステップS603〜S606の4つのステップを実行する。
【0074】
(2.1)ステップS603において、メモリ3から累算すべきデータをデータバス2に転送する。
【0075】
(2.2)ステップS604において、アキュムレータ1の値とステップS603においてメモリ3から転送したデータを演算器4で加算演算する。演算の結果、アキュムレータ1の値は以下のように更新される。
【0076】
アキュムレータ1の値+メモリ3の値→アキュムレータ1の値(更新後)
この時、演算器4では加算演算のオーバーフローが発生する場合がある。その値は、オーバーフロー信号11として制御回路16に出力される。また、演算器4の演算結果の符号信号12も制御回路16に出力される。
【0077】
(2.3)ステップS605では、制御回路16によってアップダウンカウンタ5を制御する。制御回路16は、ステップS602で演算器4から出力されたオーバーフロー信号11と演算結果の符号信号12から表2の制御論理で動作する。
【0078】
【表2】
Figure 2004013519
【0079】
アップダウンカウンタ5はこの制御論理で動作し、値を更新する。アップダウンカウンタ5に入っている値は正のオーバーフローが発生したとき+1し、負のオーバーフローが発生したとき一1した値である。この値は累算値がアキュムレータ1の許容範囲(例では16進数の7FFF〜8000)を正の方向に越えている場合は正の値を示し、逆に許容範囲を負の方向に超えている場合は、負の値を示している。アップダウンカウンタ5の値が0と等しい場合は累算値はアキュムレータ1の許容範囲にある。
(2.4)ステップS606では、累算の演算を終了するかどうかを判断する。累算すべきデータがまだある場合(NO)は、ステップS603に再び戻って累算の演算を続行する。累算すべきデータがもうない場合(YES)は、累算の演算を終了する。
(3)結果出力:ステップS602において、補正回路10によってアップダウンカウンタ5の値の補正を行い、累積演算の結果をデータバス2に出力する。
【0080】
ステップS602はステップS607とステップS608を含む。ステップS607とステップS608は並列に行う。
【0081】
(3.1)ステップS607において、補正回路10によってアップダウンカウンタ5の値を補正しデータバス2に出力する。累算結果がアキュムレータ1の許容範囲を越えた場合、アップダウンカウンタ5には、発生したオーバーフローの回数が入っている。このカウンタ値はアキュムレータ1の許容範囲を超えた累算値の上位部分とは異なるため、累算値の上位部分の正しい値を得るためには補正が必要となる。カウンタ値を補正し、累算値の上位部分の正しい値を得るための操作を補正回路10で実現する。補正回路10は表3の論理で動作する。
【0082】
【表3】
Figure 2004013519
【0083】
補正したアップダウンカウンタ5の値はデータバス2に出力する。
【0084】
(3.2)ステップS608では、アキュムレータ1の値をデータバス2に出力する。
【0085】
以上のように第2実施例によれば、ステップS607において補正回路10で補正されたアップダウンカウンタ5の値は、アキュムレータ1の許容範囲を越えた累算値の上位部分に相当する正しい値になっている。また、アキュムレータ1にはこのアキュムレータ1の使用ビットの許容範囲内の値、即ち、累算値の下位部分に相当する値が入っている。累算値の全ビットは、前記上位部分と前記下位部分のビットからなる。したがって累算結果がアキュムレータ1の許容範囲を越えた場合でも、これら2つのレジスタの値から、最終的な累算値の正しい値を得ることができる。
【0086】
また、このアキュムレータ1とアップダウンカウンタ5はデータバス2に接続されているので、データバス2に接続されているレジスタやメモリなどの他の部分に転送したり、他の部分から参照することができる。例えば、アキュムレータ1とアップダウンカウンタ5の値をデータバス2を介してメモリ3に転送することも可能である。
【0087】
アップダウンカウンタ5には発生したオーバーフローの回数が入っているので、本当の値が必要のとき、アップダウンカウンタ5の値を補正回路10で変換してデータバス2へ送り出す。割り込み処理に対処して退避するときなど、本当の値に戻さなくてよいときはアップダウンカウンタ5の内容をデータバス2を介してそのままメモリ3へ転送し、またそこからアップダウンカウンタ5へ戻す。
【0088】
第2実施例では、アキュムレータ1が16ビットでアップダウンカウンタ5は8ビットであるので、最高で24ビットの累積結果を正しい値で得ることができる。つまり、8ビットのアップダウンカウンタ5が本来16ビット幅のアキュムレータ1に対して24ビットのダイナミックレンジを提供していることと等価である。
【0089】
このように、累加算演算などで演算器4の演算結果がアキュムレータ1の許容範囲を超える場合は、アップダウンカウンタ5は自分のビット範囲においてアキュムレータ1に対して必要なだけのダイナミックレンジを拡大する。
【0090】
一方、累加算演算以外の一般的な演算で、演算器4の演算結果がアキュムレータ1の許容範囲を超えない場合においては、アキュムレータ1は本来の16ビットのレジスタとして問題なく動作する。なぜならば、アップダウンカウンタ5または制御回路16または補正回路10は、アキュムレータ1に何の影響も与えないからである。この場合、プロセッサはアップダウンカウンタ5、制御回路16、補正回路10などの第2実施例による拡張部分を一切使用せず、16ビットのアキュムレータ1を必要とする一般的な演算を実行可能である。
【0091】
(第3実施例)
図3は、本発明の第3実施例を示す図である。これは第1実施例で示されるダイナミックレンジを拡大する装置を複数の変数に対応できるようにしたものである。
【0092】
第3実施例では、複素数の累算を念頭において、2変数の累算を例として説明する。なお、アキュムレータ数、アップダウンカウンタ数を増やすことで、これより多数の複数の変数に対応させることも当然可能である。
【0093】
この説明では、第1実施例と同じように、アキュムレータ、データバス、メモリ、演算器のビット幅を16ビットとして説明する。また、アップダウンカウンタのビット幅を8ビットとする。即ち、この例では本来16ビット幅のアキュムレータに対して8ビットのダイナミックレンジを拡大している。
【0094】
接続及び各構成部品の動作を説明する。
【0095】
データバス2は、メモリ3、セレクタを介したアキュムレータ1Aおよびアキュムレータ1B、直接およびセレクタを介したアップダウンカウンタ5Aおよびアップダウンカウンタ5B、演算器4、制御回路6に接続されている。
【0096】
演算器4はメモリ3からデータバス2を介して転送されたデータとアキュムレータ1A又はアキュムレータ1Bの値を入力として、16ビットの演算を行い、演算結果を演算器4の入力の値として用いたアキュムレータに出力する。また演算器4は、演算のキャリー信号9を制御回路6に出力する。演算器4は一般的なALUである。この演算器4の機能は必ずしも以下に限定されないが、加算、減算などの演算が可能である。この実施例では加算演算を行う。
【0097】
アキュムレータ1A、アキュムレータ1B及びアップダウンカウンタ5A、アップダウンカウンタ5Bは、アキュムレータ及びアップダウンカウンタの組で1組として選択制御される(この例ではアキュムレータ1A及びアップダウンカウンタ5Aで1つの組、アキュムレータ1B及びアップダウンカウンタ5Bで別の組を構成する。)。アキュムレータ及びアップダウンカウンタの組は、ソフトに基づくプロセッサの設定によりどちらかが選択されようになっている。
【0098】
アキュムレータ1A、アキュムレータ1Bはデータバス2以外に演算器4にも直接接続されている。これらのアキュムレータのうち、演算を行う変数の組のアキュムレータは演算器4からの16ビットの演算結果を格納する。アキュムレータの値は演算器4の入力として用いられる。また、この値をデータバス2を介してメモリ3に転送することも可能である。
【0099】
制御回路6はアップダウンカウンタ5A、アップダウンカウンタ5Bを制御する。制御回路6の入力は2つある。1つは、演算器4のデータバス2から接続されている側の入力7の最上位ビット即ち符号ビット8で、もう1つは演算器4のキャリー信号9である。制御回路6はこれら2つの入力からアップダウンカウンタ5A、アップダウンカウンタ5Bの値の変更を制御する。具体的には、これらのアップダウンカウンタの値を無変化もしくは+1、−1させる。
【0100】
アップダウンカウンタ5A、アップダウンカウンタ5Bは制御回路6からの信号により値を+1、一1、無変化に変更する。
【0101】
次に、第3実施例の動作を説明する。2変数の累算の典型的な例として複素数の累算を考える。図7に第3実施例の動作フローを図示する。
【0102】
メモリ3には累算すべき複数の複素数データが入っている。その複素数データを実数、虚数に分けて累算する。
【0103】
第3の実施例の動作は以下のように行われる。
【0104】
(1)初期化:ステップS700において、2つのアップダウンカウンタ5Aおよび5B、2つのアキュムレータ1Aおよび1Bを初期値に初期化する。この説明ではこの初期値を0とする。
【0105】
(2)演算:ステップS701において累算の演算を行う。このステップS701は累算すべきデータがなくなるまで行われる。なお、ステップS701では以下のステップS703〜S707の5つのステップを実行する。
【0106】
(2.1)ステップS703において、演算を行う変数のアキュムレータとアップダウンカウンタの組を選択する。
【0107】
(2.2)ステップS704において、メモリ3から選択された変数の累算すべきデータをデータバス2に転送する。
【0108】
(2.3)ステップS705において、選択されたアキュムレータの値とステップS704においてメモリ3から転送したデータを演算器4で加算する。
【0109】
(2.3.1)実数側が選択されているとき、アップダウンカウンタ5A及びアキュムレータ1Aの組み合わせが選択される。アキュムレータ1Aの値は以下のように更新される。
【0110】
アキュムレータ1Aの値+メモリ3の値→アキュムレータ1Aの値(更新後)
このとき演算器4では加算演算のキャリーが発生する場合がある。その値は、キャリー信号9として制御回路6に出力される。
【0111】
(2.3.2)虚数側が選択されているとき、アップダウンカウンタ5B及びアキュムレータ1Bの組み合わせが選択される。アキュムレータ1Bの値は以下のように更新される。
【0112】
アキュムレータ1Bの値+メモリ3の値→アキュムレータ1Bの値(更新後)
このとき演算器4では加算演算のキャリーが発生する場合がある。その値は、キャリー信号9として制御回路6に出力される。
【0113】
(2.4)ステップS706では、制御回路6によってアップダウンカウンタを制御する。制御するアップダウンカウンタは、実数側が選択されていればアップダウンカウンタ5A、虚数側が選択されていればアップダウンカウンタ5Bである。制御回路6は、ステップS702で演算器4から出力されたキャリー信号9と、ステップS704においてメモリ3から転送されたデータの符号ビットの値すなわち演算器4のデータ入力7の符号ビット8から表4の制御論理で動作する。
【0114】
【表4】
Figure 2004013519
【0115】
アップダウンカウンタはこの制御論理で動作し、値を更新する。アップダウンカウンタ5A、アップダウンカウンタ5Bの値はそれぞれ対応する変数の累算値の上位部分に相当する値である。
【0116】
累算値がアキュムレータの許容範囲(例では16進数の7FFF〜8000)を正の方向に超えている場合は正の値を示し、逆に許容範囲を負の方向に超えている場合は、負の値を示している。アップダウンカウンタの値が0と等しい場合は累算値はアキュムレータの許容範囲にある。
【0117】
(2.5)ステップS707では、累算の演算を終了するかどうかを判断する。累算すべきデータがまだある場合(NO)は、ステップS703に再び戻って累算の演算を続行する。累算すべきデータがもうない場合(YES)、累算の演算を終了する。
【0118】
(3)結果出力:ステップS702において累積演算の結果をデータバス2に出力する。
【0119】
累積演算の結果、それぞれのアキュムレータには許容範囲内の累算値の下位部分に相当する値が入っている。一方、それぞれのアップダウンカウンタにはアキュムレータの許容範囲を超えた累算値の上位部分の正しい値が入っている。データは、アップダウンカウンタ5A及びアキュムレータ1Aに実数データが、アップダウンカウンタ5B及びアキュムレータ1Bに虚数データが入っている。2つのアキュムレータの値と2つのアップダウンカウンタの値をデータバス2に出力する。
【0120】
以上のように第3実施例によれば、ステップS706の操作により、アップダウンカウンタ(アップダウンカウンタ5A、アップダウンカウンタ5B)にはアキュムレータ(アキュムレータ1A、アキュムレータ1B)の許容範囲を越えた累算値の上位部分に相当する値が入っている。したがって実数、虚数の累算結果がこれらのアキュムレータの許容範囲を越えた場合でも、これらのレジスタの値から、最終的な累算値の範囲全体での正しい値を得ることができる。
【0121】
また、これらのアキュムレータとアップダウンカウンタはデータバス2に接続されているので、データバス2に接続されているレジスタやメモリ、などの他の部分に転送したり、他の部分から参照することができる。例えば、アキュムレータ1Aとアップダウンカウンタ5Aの値をデータバス2を介してメモリ3に転送することも可能である。
【0122】
第3実施例では、第1実施例と同じように、2つのアキュムレータが16ビットで、対応するそれぞれのアップダウンカウンタは8ビットであるので、最高で24ビットの累積結果を正しい値で得ることができ、これは24ビットのダイナミックレンジを提供していることと等価である。
【0123】
このように、累加算演算などで演算器4の演算結果がアキュムレータ1A、アキュムレータ1Bの許容観囲を超える場合は、対応するアップダウンカウンタが自分のビット範囲においてアキュムレータに対して必要なだけのダイナミックレンジを拡大する。一方、累加算演算以外の一般的な演算で、演算器4の演算結果がこれらのアキュムレータの許容範囲を超えない場合においては、これらのアキュムレータは本来の16ビットのレジスタとして問題なく動作する。
【0124】
すなわち、これらのアップダウンカウンタ5A、アップダウンカウンタ5Bおよび又制御回路6は、これらのアキュムレータ1A、アキュムレータ1Bに何の影響も与えないからである。この場合、プロセッサはアップダウンカウンタ5A、アップダウンカウンタ5Bまたは制御回路6などの第3の実施例による拡張部分を一切使用せず、16ビットのアキュムレータを必要とする一般的な演算を実行可能である。
【0125】
アップダウンカウンタ5A、アップダウンカウンタ5Bの内容は、第1実施例の場合と同様に正しい値が入っている。
【0126】
以上のように、第3実施例では第1実施例と同じ効果を得ることができる。
【0127】
また第3実施例では、2つのアキュムレータとそれに対応するアップダウンカウンタの組を選択することによって、演算対象の変数(実数、虚数)を切り替えることができる。このアキュムレータとそれに対応したアップダウンカウンタの組は、演算の対象となる変数の数(複素数の累算の場合は2)だけあるので、演算を行う対象の変数を変更する際に、レジスタ値を退避する必要がない。このため、レジスタ値の退避を行う方法に比べて、退避の際に生じるオーバーヘッドが全くない。複素数の累算のように、複数の変数を交互に演算する必要のある場合、演算を行う対象の変数を切り替える機会が多い。例えば、複素数の累算の場合は、少なくとも累算する複素数の数だけある。したがって、このレジスタ値の退避のためのオーバーヘッドをなくすことにより演算が高速化される。また、この変数の切り替えのための操作は短時間で行うことができる。
【0128】
セレクタはアップダウンカウンタ5A、アップダウンカウンタ5Bのいづれか一方の出力だけを取り出せるように切り換える機能を有する。
【0129】
(第4実施例)
【0130】
図4は本発明の第4実施例を示す図である。
【0131】
これは第2実施例で示されるダイナミックレンジを拡大する装置を複数の変数に対応できるようにしたものである。
【0132】
第4実施例では、複素数の累算を念頭においた例として2変数の累算を説明する。なお、アキュムレータ数、アップダウンカウンタ数を増やすことで、これより多数の複数の変数に対応させることも簡単に可能である。
【0133】
この説明では、第1実施例と同じように、アキュムレータ、データバス、メモリ、演算器のビット幅を16ビットとして説明する。また、アップダウンカウンタのビット幅を8ビットとする。即ち、この例では本来16ビット幅のアキュムレータに対して8ビットのダイナミックレンジを拡大している。
【0134】
接続及び各構成部品の動作を説明する。
【0135】
データバス2は、メモリ3、セレクタを介したアキュムレータ1A又はアキュムレータ1B、直接又はセレクタを介したアップダウンカウンタ5A、アップダウンカウンタ5B、演算器4、補正回路10、に接続されている。
【0136】
演算器4は16ビットの演算を行い演算結果とオーバーフロー信号11、演算結果の符号信号12を出力する。演算器4は一般的なALUである。この実施例では加算演算を行う。
【0137】
アキュムレータ1A、アキュムレータ1B及びアップダウンカウンタ5A、アップダウンカウンタ5Bは、アキュムレータ及びアップダウンカウンタの組で1組として選択制御される(この例ではアキュムレータ1A及びアップダウンカウンタ5Aで1つの組、アキュムレータ1B及びアップダウンカウンタ5Bで別の組を構成する。)。アキュムレータ及びアップダウンカウンタの組はどちらかが選択されようになっている。
【0138】
アキュムレータ1A、アキュムレータ1Bはデータバス2以外に演算器4にもセレクタを介して接続されている。これらのアキュムレータのうち、演算を行う変数の組のアキュムレータは演算器4からの16ビットの演算結果を格納する。アキュムレータの値は演算器4の入力として用いられる。また、この値をデータバス2を介してメモリ3に転送することも可能である。
【0139】
制御回路16はアップダウンカウンタ5A、アップダウンカウンタ5Bを制御する。制御回路16の入力は2つある。1つは演算器4のオーバーフロー信号11で、もう1つは演算結果の符号信号12である。制御回路16はこれら2つの入力によりこれらのアップダウンカウンタの値の変動を制御する。具体的には、これらのアップダウンカウンタの値を無変化もしくは+1、−1させる。
【0140】
アップダウンカウンタ5A、アップダウンカウンタ5Bは制御回路16からの信号により値を+1、−1、無変化にする。
補正回路10はアキュムレータ1A、アキュムレータ1Bのうち選択されたアキュムレータの符号ビット13によってアップダウンカウンタ値を修正する。
【0141】
第4実施例の動作を説明する。2変数の累算の典型的な例として複素数の累算を考える。
【0142】
図8は第4実施例の動作フロー図である。
【0143】
メモリ3に累算すべき複数の複素数データが入っている。その複素数データを実数、虚数に分けて累算する。
【0144】
第4実施例の動作は以下のように行われる。
【0145】
(1)初期化:ステップS800において、2つのアップダウンカウンタ、2つのアキュムレータを初期値に初期化する。この説明ではこの初期値を0とする。
【0146】
(2)演算:ステップS801において、累算の演算を行う。このステップS801は累算すべきデータがなくなるまで行われる。なお、ステップS801では以下のステップS803〜S807の5つのステップを実行する。
【0147】
(2.1)ステップS803において演算を行う変数の組のアキュムレータとアップダウンカウンタを選択する。
【0148】
(2.2)ステップS804において、メモリ3から選択された変数の累算すべきデータをデータバス2に転送する。
【0149】
(2.3)ステップS805において、選択されたアキュムレータの値とステップS704においてメモリ3から転送したデータを演算器4で加算する。
【0150】
(2.3.1)実数側を選択されているとき、アップダウンカウンタ5A及びアキュムレータ1Aの組み合わせが選択される。アキュムレータ1Aの値は以下のように更新される。
【0151】
アキュムレータ1Aの値+メモリ3の値→アキュムレータ1Aの値(更新後)
この時、演算器4では加算演算のオーバーフローが発生する場合がある。その値は、オーバーフロー信号11として制御回路16に出力される。また、演算器4の演算結果の符号信号12も制御回路16に出力される。
【0152】
(2.3.2)虚数側を選択されているとき、アップダウンカウンタ5B及びアキュムレータ1Bの組み合わせが選択される。アキュムレータ1Bの値は以下のように更新される。
【0153】
アキュムレータ1Bの値+メモリ3の値→アキュムレータ1Bの値(更新後)
この時、演算器4では加算演算のオーバーフローが発生する場合がある。その値は、オーバーフロー信号11として制御回路16に出力される。また、演算器4の演算結果の符号信号12も制御回路16に出力される。
【0154】
(2.4)ステップS806では、制御回路16によってアップダウンカウンタを制御する。制御するアップダウンカウンタは、実数側が選択されていればアップダウンカウンタ5A、虚数側が選択されていればアップダウンカウンタ5Bである。制御回路16は、ステップS802で演算器4から出力されたオーバーフロー信号11と演算結果の符号信号12から表5の制御論理で動作する。
【0155】
【表5】
Figure 2004013519
【0156】
2つのアップダウンカウンタはこの制御論理で動作し、値を更新する。
【0157】
これらのアップダウンカウンタに入っている値は対応するアキュムレータが正のオーバーフローが発生したとき+1し、負のオーバーフローが発生したとき−1した値である。これらの値は、累算値がアキュムレータの許容範囲(例では16進数の7FFF〜8000)を正の方向に超えている場合は正の値を示し、逆に許容観囲を負の方向に超えている場合は、負の値を示している。アップダウンカウンタの値が0と等しい場合は累算値はアキュムレータの許容範囲にある。
【0158】
(2.6)ステップS807では、累算の演算を終了するかどうかを判断する。累算すべきデータがまだある場合(NO)は、ステップS803に再び戻って累算の演算を続行する。累算すべきデータがもうない場合(YES)、累算の演算を終了する。
【0159】
(3)結果出力:ステップS802において累積演算の結果をデータバス2に出力する。
【0160】
ステップS802はステップS808とステップS809を含む。ステップS808とステップS809は並列に行う。
【0161】
(3.1)ステップS808においてアップダウンカウンタの値を補正回路10により補正しデータバス2に出力する。
【0162】
(3.1.1)実数側が選択されているとき、アップダウンカウンタ5A及びアキュムレータ1Aの組み合わせが選択される。アップダウンカウンタ5Aには、累算結果がアキュムレータ1Aの許容範囲を越えた場合発生したオーバーフローの回数が入っている。このカウンタ値は累算値の上位部分とは異なるため累算値の上位部分の本当の値を得るためには補正が必要となる。カウンタ値を補正し、累算値の上位部分の本当の値を得るための操作を補正回路10で実現する。このときに使用されるアキュムレータ符号はアキュムレータ1Aの符号を使用する。
【0163】
(3.1.2)虚数側が選択されているとき、する。アップダウンカウンタ5B及びアキュムレータ1Bの組み合わせが選択される。アップダウンカウンタ5Bには、累算結果がアキュムレータ1Bの許容範囲を越えた場合発生したオーバーフローの回数が入っている。このカウンタ値は累算値の上位部分とは異なるため累算値の上位部分の正しい値を得るためには補正が必要となる。カウンタ値を補正し、累算値の上位部分の正しい値を得るための操作を補正回路10で実現する。このときに使用されるアキュムレータ符号はアキュムレータ1Bの符号を使用する。
【0164】
補正回路10は表6の論理で動作する。
【0165】
【表6】
Figure 2004013519
【0166】
補正した2つのアップダウンカウンタの値をデータバス2に出力する。
【0167】
(3.2)ステップS809において2つのアキュムレータの値をデータバス2に出力する。
【0168】
データは、アキュムレータ1に実数データが、アキュムレータ1Bに虚数データが入っている。2つのアキュムレータの値をデータバス2に出力する。
【0169】
以上のように第4実施例によれば、ステップS806の操作により、アップダウンカウンタ(アップダウンカウンタ5A、アップダウンカウンタ5B)にはアキュムレータ(アキュムレータ1A、アキュムレータ1B)の許容範囲を越えたオーバーフローの回数、即ち、累算値の上位部分に対応する回数の値が入っている。したがって実数、虚数の累算結果がこれらのアキュムレータ1の許容範囲を越えた場合でも、これらのレジスタの値から、最終的な累算値の範囲全体での正しい値を得ることができる。
【0170】
また、これらのアキュムレータとアップダウンカウンタはデータバス2に接続されているので、データバス2に接続されているレジスタやメモリなどの他の部分に転送したり、他の部分から参照することができる。例えば、アキュムレータ1Aとアップダウンカウンタ5Aの値をデータバス2を介してメモリ3に転送することも可能である。
【0171】
第4実施例では、第1実施例と同じように、2つのアキュムレータが16ビットで、対応するそれぞれのアップダウンカウンタは8ビットであるので、最高で24ビットの累積結果を正しい値で得ることができ、これは24ビットのダイナミックレンジを提供していることと等価である。
【0172】
このように、累加算演算などで演算器4の演算結果がアキュムレータ1A、アキュムレータ1Bの許容範囲を超える場合は、対応するアップダウンカウンタはアキュムレータに対して必要なだけのダイナミックレンジを拡大する。一方、累加算演算以外の一般的な演算で、演算器4の演算結果がこれらのアキュムレータの許容範囲を超えない場合においては、これらのアキュムレータは本来の16ビットのレジスタとして問題なく動作する。
【0173】
すなわち、これらのアップダウンカウンタ5A、アップダウンカウンタ5B、制御回路16、補正回路10は、これらのアキュムレータに何の影響も与えないからである。この場合、プロセッサはアップダウンカウンタ5A、アップダウンカウンタ5B又は制御回路16、補正回路10などの第4の実施例による拡張部分を一切使用せず、16ビットのアキュムレータのみを用いる一般的な演算を行う。
【0174】
以上のように、第4実施例では第2実施例と同じ効果を得ることができる。
【0175】
また第4実施例では、2つのアキュムレータとそれに対応するアップダウンカウンタの組を選択することによって、演算対象の変数(実数、虚数)を切り替えることができる。このアキュムレータとそれに対応したアップダウンカウンタの組は、演算の対象となる変数の数(複素数の累算の場合は2)だけあるので、演算を行う対象の変数を変更する際に、レジスタ値を退避する必要がない。このため、レジスタ値の退避を行う方法に比べて、退避の際に生じるオーバーヘッドが全くない。
【0176】
すなわち、複素数の累算のように、複数の変数を交互に演算する必要のある場合、演算を行う対象の変数を切り替える機会が多い。例えば、複素数の累算の場合は、少なくとも累算する複素数の数だけある。したがって、このレジスタ値の退避のためのオーバーヘッドをなくすことにより演算が高速化される。また、この変数の切り替えのための操作は短時間で行うことができる。
【0177】
これは第3実施例と同じ効果である。
【0178】
(利用形態)
第1実施例、第2実施例、第3実施例、第4実施例では、アップダウンカウンタの値とアキュムレータの符号ビットの値を調べることで特開2000−35875号公報による方法に示されるアキュムレータの飽和動作と同じ動作を実現することも可能である。
【0179】
【発明の効果】
以上、詳細に説明したように、本発明によれば次のような効果を奏する。
【0180】
累加算演算などで演算器の演算結果がアキュムレータの許容範囲を超える場合は、アップダウンカウンタはアキュムレータに対して必要なだけのダイナミックレンジを拡大する。一方、累加算演算以外の一般的な演算で、演算器の演算結果がアキュムレータの許容観囲を超えない場合においては、アキュムレータは本来の16ビットのレジスタとして問題なく動作する。
【0181】
2つのアキュムレータとそれに対応するアップダウンカウンタの組を選択することによって、演算対象の変数(実数、虚数)を切り替えることができる。このアキュムレータとそれに対応したアップダウンカウンタの組は、演算の対象となる変数の数(複素数の累算の場合は2)だけあるので、演算を行う対象の変数を変更する際に、レジスタ値を退避する必要がない。このため、レジスタ値の退避を行う方法に比べて、退避の際に生じるオーバーヘッドが全くない。
【0182】
すなわち、複素数の累算のように、複数の変数を交互に演算する必要のある場合、演算を行う対象の変数を切り替える機会が多い。例えば、複素数の累算の場合は、少なくとも累算する複素数の数だけある。したがって、このレジスタ値の退避のためのオーバーヘッドをなくすことにより演算が高速化される。また、この変数の切り替えのための操作は短時間で行うことができる。
【0183】
アップダウンカウンタの値を補正回路を介すれば正しい値に変換でき、補正回路を介さなければ処理速度が速くできる。
【図面の簡単な説明】
【図1】本発明の第1実施例を示す図である。
【図2】本発明の第2実施例を示す図である。
【図3】本発明の第3実施例を示す図である。
【図4】本発明の第4実施例を示す図である。
【図5】本発明の第1実施例の動作フローを示す図である。
【図6】本発明の第2実施例の動作フローを示す図である。
【図7】本発明の第3実施例の動作フローを示す図である。
【図8】本発明の第4実施例の動作フローを示す図である。
【図9】本発明の解決原理を示す図である。
【符号の説明】
1、1A、1B  アキュムレータ
2  データバス
3  メモリ
4  演算器
5、5A、5B  アップダウンカウンタ
6、16  制御回路
7  データ入力
8、13  符号ビット
9  キャリー信号
10  補正回路
11  オーバーフロー信号
12  符号信号

Claims (10)

  1. 演算方法において、演算器とアキュムレータとによりプロセッサの演算を実行する手順と、制御回路により前記演算器のキヤリー信号と前記演算器へのデータバスからの入力データの符号信号とに規則的に応じてアップダウンカウンタの内容を前記アキュムレータの内容と組み合わせて正しい値になるように制御する制御信号を前記アップダウンカウンタに出力する手順と、前記アキュムレータにより前記アキュムレータの値を前記データバスと前記演算器に出力する手順と、前記アップダウンカウンタにより前記アキュムレータの内容と組み合わせて正しい値となるように制御信号に基づいて制御する前記アップダウンカウンタの値を前記データバスに出力する手順と、からなることを特徴とする演算方法。
  2. 演算器の演算結果を記憶し、記憶した内容をデータバスと前記演算器に出力するアキュムレータと、前記アキュムレータの内容と前記データバスからのデータの内容を演算する前記演算器と、前記演算器のキャリー信号と前記演算器への前記データバスからの前記データの符号信号とに規則的に応じてアップダウンカウンタの内容を前記アキュムレータの内容と組み合わせて正しい値になるように制御する制御信号を前記アップダウンカウンタに出力する制御回路と、前記制御回路から出力される制御信号によって自らの内容を正しい値の上位部分の値にさせ、その内容を前記アキュムレータの許容範囲の値と組み合わせて正しい値となる値として前記データバスに出力するアップダウンカウンタと、からなることを特徴とする演算回路。
  3. 演算器とアキュムレータとによりプロセッサの演算を実行する手順と、制御回路により前記演算器のオーバーフロー信号と前記演算器の演算結果の符号信号に規則的に応じて、アップダウンカウンタの内容をオーバーフロー回数値とする手順と、前記アキュムレータにより前記アキュムレータの値をデータバスと前記演算器に出力する手順と、補正回路により前記アップダウンカウンタの値を補正時の前記アキュムレータの値の前記符号信号に規則的に応じてその内容を前記アキュムレータの内容と組み合わせて正しい値になるように補正し、補正した内容を前記データバスに出力する手順と、前記アップダウンカウンタにより制御回路から出力される制御信号によって自らの内容をオーバーフローの回数にさせ、その内容を前記アキュムレータの許容範囲を超えたオーバーフローの回数値として前記データバスまたは前記補正回路に出力する手順と、からなることを特徴とする演算方法。
  4. 演算器の演算結果を記憶し、記憶した内容をデータバスと前記演算器に出力するアキュムレータと、前記アキュムレータの内容と前記データバスからのデータの内容を演算する前記演算器と、前記演算器のオーバーフロー信号と前記演算器の演算結果の符号信号に規則的に応じてアップダウンカウンタの内容をオーバーフローの回数になるように制御信号を前記アップダウンカウンタに出力する制御回路と、前記制御回路から出力される制御信号によって自らの内容を前記オーバーフローの回数値にさせ、その内容を前記データバスまたは補正回路に出力する前記アップダウンカウンタと、前記アップダウンカウンタの値を補正時の前記アキュムレータの値の符号信号に従って、内容を前記アキュムレータの内容と組み合わせて正しい値になるように補正し、補正した内容を前記データバスに出力する前記補正回路と、からなることを特徴とする演算回路。
  5. プロセッサにより複数のアップダウンカウンタ及び複数のアキュムレータを重複しないで組として選択する手順と、演算器と前記アキュムレータとにより前記プロセッサの演算を実行する手順と、制御回路により前記演算器のキヤリー信号と前記演算器へのデータバスからの入力データの符号信号に規則的に応じて前記アップダウンカウンタの内容を前記アキュムレータの内容と組み合わせて正しい値になるように制御する制御信号を前記アップダウンカウンタに出力する手順と、前記アキュムレータにより前記アキュムレータの値を前記データバスと前記演算器に出力する手順と、前記アップダウンカウンタにより前記アキュムレータの内容と組み合わせて正しい値となるように制御信号に基づいて制御する前記アップダウンカウンタの値を前記データバスに出力する手順と、からなることを特徴とする演算方法。
  6. 重複しないで複数の内の1つのアップダウンカウンタと組となり、演算器の演算結果を記憶し、記憶した内容をデータバスと前記演算器に選択的に出力する複数のアキュムレータと、前記アキュムレータの内容と前記データバスからのデータの内容を演算する前記演算器と、前記演算器のキヤリー信号と前記演算器の前記データバスからの前記データの符号信号に規則的に応じて前記アップダウンカウンタの内容を前記アキュムレータの内容と組み合わせて正しい値になるように制御する制御信号を前記アップダウンカウンタに出力する制御回路と、前記アキュムレータと組となり、前記制御回路から出力される制御信号によって自らの内容を前記正しい値の上位部分の値にさせ、その内容を前記アキュムレータの許容範囲の値と組み合わせて正しい値となる値として前記データバスに選択的に出力する複数の前記アップダウンカウンタと、からなることを特激とする演算回路。
  7. プロセッサにより複数のアップダウンカウンタ及び複数のアキュムレータを重複しないで組として選択する手順と、演算器と前記アキュムレータとにより 前記プロセッサの演算を実行する手順と、制御回路により前記演算器のオーバーフロー信号と前記演算器の演算結果の符号信号とに規則的に応じて、前記アップダウンカウンタの内容をオーバーフロー回数値とする手順と、前記アキュムレータにより 複数のアキュムレータの値をデータバスおよび前記演算器に出力する手順と、前記アップダウンカウンタにより制御回路から出力される制御信号で自らの内容をオーバーフローの回数にさせ、その内容を前記アキュムレータの許容範囲を超えたオーバーフローの回数値として前記データバスまたは補正回路に出力する手順と、前記補正回路により前記アップダウンカウンタの値を補正時の前記アキュムレータの値の符号信号に規則的に応じてその内容を前記アキュムレータの内容と組み合わせて正しい値になるように補正し、その補正した内容を前記データバスに出力する手順と、からなることを特徴とする演算方法。
  8. 重複しないで複数の内の1つのアップダウンカウンタと組となり、演算器の演算結果を記憶し、記憶した内容をデータバスと前記演算器に出力するアキュムレータと、前記アキュムレータの内容と前記データバスからのデータの内容を演算する前記演算器と、前記演算器のオーバーフロー信号と前記演算器の演算結果の符号信号に規則的に応じて前記アップダウンカウンタの内容をオーバーフローの画数値になるように制御信号を前記アップダウンカウンタに出力する制御回路と、前記アキュムレータと組となり、前記制御回路から出力される制御信号によって自らの内容を前記オーバーフローの回数値にさせ、その内容を補正回路または前記データバスに出力する複数の前記アップダウンカウンタと、前記アップダウンカウンタの値を補正時の前記アキュムレータの値の符号信号にしたがってその内容を前記アキュムレータの内容と組み合わせて正しい値になるように補正し、補正した内容を前記データバスに出力する補正回路と、からなることを特徴とする演算回路。
  9. 請求項1、3、5および7のいずれか1項記載の演算方法において、前記制御信号を、前記演算器のキヤリー信号と前記演算器への前記データバスからの入力データの符号信号に規則的に応じて前記アップダウンカウンタの内容を+1、無変化および−1のいずれか1つにする前記制御信号としたことを特徴とする演算方法。
  10. 請求項2、4、6および8のいずれか1項記載の演算回路において、前記制御信号を、前記演算器のキャリー信号と前記演算器への前記データバスからの入力データの符号信号に規則的に応じて前記アップダウンカウンタの内容を+1、無変化および−1のいずれか1つにする制御信号としたことを特徴とする演算回路。
JP2002166018A 2002-06-06 2002-06-06 演算方法および演算回路 Expired - Fee Related JP3497852B1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2002166018A JP3497852B1 (ja) 2002-06-06 2002-06-06 演算方法および演算回路
US10/367,691 US7089277B2 (en) 2002-06-06 2003-02-19 Computation circuit having dynamic range extension function

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002166018A JP3497852B1 (ja) 2002-06-06 2002-06-06 演算方法および演算回路

Publications (2)

Publication Number Publication Date
JP2004013519A true JP2004013519A (ja) 2004-01-15
JP3497852B1 JP3497852B1 (ja) 2004-02-16

Family

ID=29706706

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002166018A Expired - Fee Related JP3497852B1 (ja) 2002-06-06 2002-06-06 演算方法および演算回路

Country Status (2)

Country Link
US (1) US7089277B2 (ja)
JP (1) JP3497852B1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007257033A (ja) * 2006-03-20 2007-10-04 Yamaha Corp 信号処理方法及び信号処理装置
JP2008102715A (ja) * 2006-10-18 2008-05-01 Toshiba Corp 演算装置
JP2009266021A (ja) * 2008-04-25 2009-11-12 Fujitsu Microelectronics Ltd 半導体集積回路

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2891654A1 (fr) * 2005-10-05 2007-04-06 Proton World Int Nv Compteur d'evenements
JP2010160622A (ja) * 2009-01-07 2010-07-22 Toshiba Corp シミュレータ

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5674774A (en) * 1979-11-22 1981-06-20 Nec Corp Arithmetic circuit with overflow detector
JPS6054070A (ja) * 1983-09-02 1985-03-28 Nec Corp 演算装置
US5047975A (en) * 1987-11-16 1991-09-10 Intel Corporation Dual mode adder circuitry with overflow detection and substitution enabled for a particular mode
US5218564A (en) * 1991-06-07 1993-06-08 National Semiconductor Corporation Layout efficient 32-bit shifter/register with 16-bit interface
US6243731B1 (en) 1998-03-20 2001-06-05 Texas Instruments Incorporated Apparatus and method for extending register dynamic range
US7013321B2 (en) * 2001-11-21 2006-03-14 Sun Microsystems, Inc. Methods and apparatus for performing parallel integer multiply accumulate operations

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007257033A (ja) * 2006-03-20 2007-10-04 Yamaha Corp 信号処理方法及び信号処理装置
JP4696989B2 (ja) * 2006-03-20 2011-06-08 ヤマハ株式会社 信号処理方法及び信号処理装置
JP2008102715A (ja) * 2006-10-18 2008-05-01 Toshiba Corp 演算装置
JP2009266021A (ja) * 2008-04-25 2009-11-12 Fujitsu Microelectronics Ltd 半導体集積回路
US8352533B2 (en) 2008-04-25 2013-01-08 Fujitsu Semiconductor Limited Semiconductor integrated circuit in in a carry computation network having a logic blocks which are dynamically reconfigurable

Also Published As

Publication number Publication date
US20030229660A1 (en) 2003-12-11
US7089277B2 (en) 2006-08-08
JP3497852B1 (ja) 2004-02-16

Similar Documents

Publication Publication Date Title
Busaba et al. The IBM z900 decimal arithmetic unit
JP4277042B2 (ja) 演算処理装置
EP0656582B1 (en) Parallel adding and averaging circuit and method
JP4374363B2 (ja) ビットフィールド操作回路
JPH05216624A (ja) 演算装置
JPS6244292B2 (ja)
JP2004013519A (ja) 演算方法および演算回路
JP4002151B2 (ja) 情報処理装置
CN100378651C (zh) 单指令多数据数据处理系统内的结果分割
JP3537378B2 (ja) 加算器および集積回路
JP3803438B2 (ja) 浮動小数点乗算累算装置
JP2003271056A (ja) 剰余演算器
JP4042364B2 (ja) アドレス生成回路、選択判断回路
JPH0346024A (ja) 浮動小数点演算器
JP3579087B2 (ja) 演算器およびマイクロプロセッサ
US6963895B1 (en) Floating point pipeline method and circuit for fast inverse square root calculations
US5351207A (en) Methods and apparatus for subtraction with 3:2 carry-save adders
JP2645422B2 (ja) 浮動小数点演算処理装置
JP7286239B2 (ja) 演算処理方法、演算処理装置、及び半導体装置
JPH0251732A (ja) 浮動小数点演算器
KR200156144Y1 (ko) 절대값 계산 회로
JP4015411B2 (ja) 演算装置及びその演算装置を用いた情報処理装置
JP2001109613A (ja) 演算装置
JP2008204356A (ja) リコンフィギャラブル回路
JP2003084972A (ja) 条件付減算命令の実行速度を改善し、命令が正しく実行されるオペランドの範囲を拡大する方法

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20031118

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20060906

A072 Dismissal of procedure [no reply to invitation to correct request for examination]

Free format text: JAPANESE INTERMEDIATE CODE: A072

Effective date: 20070123

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081128

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081128

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091128

Year of fee payment: 6

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091128

Year of fee payment: 6

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101128

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101128

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111128

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121128

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121128

Year of fee payment: 9

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121128

Year of fee payment: 9

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121128

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131128

Year of fee payment: 10

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees