JP3759647B2 - 24ビットおよび16ビット算術演算の双方を実行するための装置および方法 - Google Patents

24ビットおよび16ビット算術演算の双方を実行するための装置および方法 Download PDF

Info

Publication number
JP3759647B2
JP3759647B2 JP34936595A JP34936595A JP3759647B2 JP 3759647 B2 JP3759647 B2 JP 3759647B2 JP 34936595 A JP34936595 A JP 34936595A JP 34936595 A JP34936595 A JP 34936595A JP 3759647 B2 JP3759647 B2 JP 3759647B2
Authority
JP
Japan
Prior art keywords
bit
register
data
bus
accumulator
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 - Fee Related
Application number
JP34936595A
Other languages
English (en)
Other versions
JPH08234962A (ja
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.)
NXP USA Inc
Original Assignee
NXP USA 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 NXP USA Inc filed Critical NXP USA Inc
Publication of JPH08234962A publication Critical patent/JPH08234962A/ja
Application granted granted Critical
Publication of JP3759647B2 publication Critical patent/JP3759647B2/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/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/382Reconfigurable for different fixed word lengths

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Executing Machine-Instructions (AREA)

Description

【0001】
【産業上の利用分野】
本発明は、一般的にデータ処理に関し、更に特定すれば、24ビットおよび16ビット算術演算(arithmetic)の双方を実行するための装置および方法に関するものである。
【0002】
【従来の技術】
デジタル信号処理とは、規則的な間隔でサンプリングされデジタル化されたリアルタイム信号の算術演算処理のことである。信号のフィルタ処理、混合および比較のようなデジタル信号処理には、デジタル信号プロセッサ(DSP)が用いられている。データ処理システムの中には、デジタル信号処理の内ルーチン・タスク(chores)を扱うために、DSPがホストプロセッサと共に含まれているものもある。ホスト・プロセッサは、例えば、マイクロコンピュータまたはマイクロプロセッサとすることができる。
【0003】
DSP内の基本動作は、乗算/蓄積(MAC)動作である。2つの二進数を乗算し、その結果を第3二進数に加えるまたは蓄積する回路は、デジタル信号処理では一般的に用いられているものである。フーリエ変換、有限インパルス応答(FIR)フィルタ、無限インパルス応答(IIR)フィルタなどを実行するためのアルゴリズムのようなデジタル信号処理アルゴリズムでは、ハードウエアを用いてMAC命令を実行できる能力を有すると有用である。
【0004】
【発明が解決しようとする課題】
用途によっては、他の用途よりも算術演算動作において、より高い精度またはより高い正確さを要求するものがある。例えば、高忠実度音響(high fidelity sound)は、精度を高めるために、音声伝送に必要とされるよりも多くのビット数が必要となる。逆に、より高い精度を与える能力があることには無関係に、特定のビット数を要求し、より多くのビットを用いて精度を高めることが許されていない用途もある。例えば、ヨーロッパのGSM標準のようなセルラ通信における標準では、ある入力ビット・ストリームで正確なビット精度の出力が得られなければならない。GSM標準は、正確に16ビットの精度を要求しており、これ以上のビット精度は許可しない。しかしながら、今日のデジタル信号処理用のマルチメディアにおける用途では、高い音質を必要とし、しかもセルラ通信環境におけるGSM標準に適合する能力も必要とする場合が多い。
【0005】
【課題を解決するための手段】
したがって、一形態では、データ処理システムにおいて算術演算を実行するための方法が提供される。この方法は、Mビット記憶装置にNビットのオペランドを供給する段階を含む。Nビット・オペランドは、Mビット記憶部において所定の第1整列位置(alignment)を有する。更に、所定の第1整列位置におけるNビット・オペランド上で算術演算処理を行い、所定の第1整列位置に結果を得る段階と、所定の第1整列位置を有する結果を2Mビット記憶部に記憶する段階と、結果をシフトしてこの結果を所定の第2整列位置に位置合わせし、この結果を2Mビット記憶部に再度記憶し、2Mビット記憶部内の未使用ビットをニゲートする段階を含む。
【0006】
別の実施例では、データ処理システムにおいて算術演算処理を実行する装置が提供される。この装置は、第1Mビット・レジスタ、第1実行部、2Mビット・レジスタ、シフト回路、制御回路、およびステータス・レジスタを含む。第1Mビット・レジスタは第1Nビット・オペランドを記憶する。ここでMおよびNは整数であり、NはMよりも小さい。第1実行部は第1Mビット・レジスタに結合されており、第1Nビット・オペランド上で算術演算処理を実行して結果を得る。2Mビット・レジスタは、第1実行部に結合され、結果を記憶する。シフト回路は2Mビット・レジスタおよび実行部に結合されており、結果をシフトする。制御回路はシフト回路に結合されており、制御ビットに応答してシフト動作を制御する。ステータス・レジスタは制御回路に結合され、制御ビットを記憶する。
【0007】
これらおよびその他の特徴および利点は、添付図面に関連して記載された以下の詳細な説明からより明確に理解されよう。
【0008】
【実施例】
概して言えば、本発明は、同一ハードウエアを用いて、24ビット算術演算および24ビット論理演算、ならびに16ビット算術演算および16ビット論理演算を実行する能力を有するデータALUを提供する。ユーザには見えずに行われるシフト動作がオペランド上で実行され、16ビット算術演算および16ビット論理演算が可能となる。1つの命令セット全体を、24ビット・モードまたは16ビット精度モード(exact mode)で実行することができる。両方のモードで、同一命令及びハードウエアが用いられる。モード間の移行は、ステータス・レジスタ内のステータス・ビットを変更することによって行われる。16ビット精度動作モードは、データALU54のほぼ全動作を、24ビット・モードで実行可能にする。例えば、16ビット・モードでは、データALU54は、丸め(rounding)、倍精度乗算(double precision multiply)、移動およびシフトを行う。加えて、全てのビット・フィールド処理は16ビット・モードで行うことができる。24ビット算術演算は、通常24ビット・モードで実行される。
【0009】
尚、信号、ステータス・ビット、または同様の装置(apparatus)をその論理真または論理虚の状態にすることを意味する場合、「アサート(assert)」および「ニゲート(negate)」という用語を、それぞれ用いることにする。論理正状態がデジタル論理レベル1の場合、論理虚状態はデジタル論理レベル0となる。また、論理正状態がデジタル論理レベル0の場合、論理虚状態はデジタル論理レベル1となる。また、データ、アドレス、制御、またはステータスのような1つ以上の種々の情報を転送するために用いられる複数の信号を意味する場合に、「バス」という用語を用いることにする。
【0010】
図1ないし図4を参照することにより、本発明をより詳細に説明する。図1ないし図4に示す各ブロックは回路を表わす。図1は、本発明によるデータ処理システム20を、ブロック図形状で示す。図1に示す実施例では、データ処理システム20はデジタル信号プロセッサ(DSP)であり、単一の集積回路上に配置されている。他の実施例では、データ処理システム20は、例えば、マイクロコンピュータまたはマイクロプロセッサとすることもできる。データ処理システム20は、タイマ22、ホスト・インターフェース24、改良型直列同期インターフェース(ESSI)26、直列非同期インターフェース(SCI)28、プログラムRAM(ランダム・アクセス・メモリ)および命令キャッシュ30、Xメモリ32、Yメモリ34、アドレス発生器/直接メモリ・アクセス(DMA)コントローラ36、外部アドレス・バス・スイッチ38、内部データ・バス・スイッチ40、DRAM(ダイナミック・ランダム・アクセス・メモリ)およびSRAM(スタティック・ランダム・アクセス・メモリ)バス・インターフェースおよび命令キャッシュ制御部42、外部データ・バス・スイッチ44、プログラム制御部(PCU)46、ならびにデータ算術論理演算部(ALU)54を含む。プログラム制御部46は、プログラム割り込みコントローラ48、プログラム・デコード・コントローラ50、およびプログラム・アドレス発生器52を含む。
【0011】
「YAB」と表記されたアドレス・バス56、「XAB」と表記されたアドレス・バス57、「PAB」と表記されたプログラム・アドレス・バス58、「DAB」と表記されたアドレス・バス59が、アドレス発生器/DMAコントローラ36と外部アドレス・バス・スイッチ38との間に結合されている。「DDB」と表記されたデータ・バス60が、ホスト・インターフェース24と外部データ・バス・スイッチ44との間に結合されている。「YDB」と表記されたデータ・バス61、「XDB」と表記されたデータ・バス62、「PDB」と表記されたプログラム・データ・バス63、および「GDB」と表記されたプログラム・データ・バス64が、内部プログラム・データ・バス64と外部データ・バス・スイッチ44との間に結合されている。
【0012】
タイマ22は、内部または外部タイミングを用いることができる3個のタイマを含み、データ処理システム20に割り込みをかけたり、あるいは外部装置に通知することができる。加えて、タイマ22は、指定された回数の事象が生じた後にDMA転送を通知するために用いることもできる。3個のタイマの各々は、単一の双方向ピン即ち端子に結合されている。加えて、タイマ22の各タイマは、バス57、バス59、プログラム割り込みコントローラ48、およびバス60に結合されている。
【0013】
ホスト・インターフェース24は、データ処理システム20と、マイクロコンピュータ、マイクロプロセッサ、またはDMAコントローラのような他の装置との間の通信のために、双方向インターフェースを提供する。また、ホスト・インターフェース24は、バス60を介して外部データ・バス・スイッチ44に双方向結合され、更にバス57,59を介して、グローバル・データ・バス64、プログラム割り込みコントローラ48、アドレス発生器/DMAコントローラ36、および外部アドレス・バス・スイッチ38に双方向結合されている。加えて、ホスト・インターフェース24は、双方向データ転送、アドレス・レジスタの選択、およびホスト・プロセッサからの制御通信のために、50本の外部ピン即ち端子に双方向結合されている。
【0014】
改良型直列同期インターフェース(ESSI)26は、12本の双方向外部ピンに結合され、例えば、1つ以上の業界標準コデック、DSP(デジタル信号プロセッサ)、またはマイクロプロセッサを含む外部直列装置との直列通信を提供する。ESSI26は、バス57、バス59、およびバス60に結合された端子も有する。
【0015】
直列通信インターフェース(SCI)28は、2本の双方向外部ピンに結合され、外部装置との直列通信を提供する。SCI28は、バス57、バス59、およびバス60に結合された端子も有する。
【0016】
図1に示すデータ処理システムの実施例は、プログラムおよび命令キャッシュ30、Xメモリ33、およびYメモリ34という3カ所のメモリ空間を有する。他の実施例では、メモリ空間の数は、これより多くても少なくてもよい。プログラムRAMおよび命令キャッシュ30は、アドレス・バス58とデータ・バス63とに結合されている。Xメモリ32は、アドレス・バス57、アドレス・バス59、データ・バス60、およびデータ・バス62に結合されている。Yメモリ34は、アドレス・バス56、アドレス・バス59、データ・バス60、およびデータ・バス61に結合されている。
【0017】
アドレス発生器/DMAコントローラ36は、アドレス・バス56,57,58,59に結合されている。アドレス発生器/DMAコントローラ36は、タイマ22、ホスト・インターフェース24、ESSI26、SCI28、プログラムRAMおよび命令キャッシュ30、Xメモリ32、Yメモリ34、外部アドレス・バス・スイッチ38、ならびにDRAMおよびSRAMバス・インターフェースおよび命令キャッシュ制御部42に、メモリ・アドレスを供給する。好適実施例では、DMAコントローラは、6個のチャネルを有する。
【0018】
DRAMおよびSRAMバス・インターフェースおよび命令キャッシュ制御部42は、プログラム・アドレス・バス58と、14本の双方向外部ピンとに結合されている。DRAMおよびSRAMバス・インターフェースおよび命令キャッシュ制御部42の命令キャッシュは、外部メイン・メモリ(図示せず)とプログラム制御部46との間で、バッファ・メモリとして機能する。命令キャッシュは、頻繁に用いられるプログラム命令を記憶するものである。プログラムによって要求される命令ワードをキャッシュ内で得られるようにしておけば、メモリ位置にアクセスするのに要する時間が不要となるので、結果的に性能の向上を図ることができる。
【0019】
内部データ・バス・スイッチ40は、データ・バス60、データ・バス61、データ・バス62、プログラム・データ・バス63、およびグローバル・データ・バス64に結合されている。外部データ・バス・スイッチ44は、データ・バス60、データバス61、データ・バス62、プログラム・データ・バス63、およびグローバル・データ・バス64を介して内部データ・バス・スイッチ40に結合されている。加えて、外部データ・バス・スイッチ44は、タイマ22、ホスト・インターフェース24、ESSI26、およびSCI28に、データ・バス60を介して結合されている。内部データ・バス・スイッチ40は、バス間の転送のために用いられる。内部データ・バス・スイッチ40によって、いずれか2本のバスを共に接続することができる。外部アドレス・バス・スイッチ38と外部データ・バス・スイッチ44は、外部バス(図示せず)を、いずれかの内部アドレス・バスおよびいずれかの内部データ・バスにそれぞれ結合する。
【0020】
プログラム制御部46では、プログラム割り込みコントローラ38は割り込み要求間の仲裁を行い、タイマ22、ホスト・インターフェース24、ESSI26、およびSCI28に結合されている。また、プログラム割り込みコントローラ48は、グローバル・データ・バス64およびプログラム・デコード・コントローラ50に、双方向結合されている。プログラム・デコード・コントローラ50は、各24ビット命令をデコードするものであり、プログラム割り込みコントローラ48とプログラム・アドレス発生器52とに双方向結合されている。プログラム・アドレス発生器52は、プログラム・アドレスの発生、システム・スタック、およびループ制御に必要な全ハードウエアを含む。加えて、プログラム・アドレス発生器52は、プログラム・アドレス・バス58とプログラム・データ・バス63とに結合されている。
【0021】
データ算術論理演算部(ALU)54は、プログラム・データ・バス63、データ・バス61、およびデータ・バス62に結合されている。データALU54は、データ・オペランド上の算術および論理演算処理の全てを行う。データALU54はレジスタを含み、これらはバス61,62を通じて、読み出しおよび書き込みが可能である。データALU54は、バス63とバス60とにも結合されている。
【0022】
クロック発生回路(図示せず)は、図1に示すブロック全てにクロック信号を供給する。図1には示していないが、データ処理システムには検査回路も含まれている。
【0023】
図2は、図1のデータ処理システム20のデータ算術論理演算部(ALU)54をブロック図形状で示す。データALU54は、データ処理システム20のために算術および論理演算処理を行う。データALU54は、レジスタ・ファイル70、乗算器76、パイプライン・レジスタ78,90,96、アキュムレータおよび丸め部80、アキュムレータ・レジスタ部82、シフタ/リミッタ(shifter/limiter)86、マルチプレクサ88、制御回路89、バレル・シフタおよびビット・フィールド部92、ならびにアキュムレータ・シフタ94を含む。レジスタ・ファイル70は、レジスタ71〜74を含む。アキュムレータ・レジスタ部82は、アキュムレータ・レジスタ83およびアキュムレータ・レジスタ84を含む。
【0024】
レジスタ・ファイル70は、データ・バス61,62に結合され、Xメモリ32、Yメモリ34または外部メモリ位置(図示せず)からデータ・オペランドを受信する。レジスタ71〜74の各レジスタは、24ビット・オペランドを記憶できるリード/ライト・レジスタである。レジスタ71〜74はデータ・バス61,62とデータALU54との間で入力バッファ・レジスタとして機能する。レジスタ・ファイル70の出力端子は、マルチプレクサ88の入力端子と、乗算器76の入力端子とに結合されている。乗算器76は実行部の1つであり、変更ブース乗算器(modified Booth's multiplier)、ワラス・ツリー((Wallace Tree)等のような従来のアレイ乗算器で構成されている。乗算器76は、分数として表わされるオペランド上で乗算動作を行う。乗算/蓄積動作では、乗算動作の中間結果がパイプライン・レジスタ78に供給され、この中間結果をアキュムレータおよび丸め部8に供給する前に、パイプライン・レジスタ78に一時的に記憶される。アキュムレータおよび丸め部80は、データALU54内の実行部としても機能する。
【0025】
データALU54は、パイプライン構成となっており、各MAC動作は2クロック・サイクルで実行される。最初のクロック・サイクルでは、乗算器76によって乗算が実行され、中間結果がパイプライン・レジスタ78に記憶される。2回目のクロック・サイクルでは、アキュムレータの内容が中間結果に加算されるか、あるいは中間結果から減算される。各クロック・サイクル毎に新たな命令を開始することができる。命令の中で丸めが指定されれば、これが実行される。丸めは、収束丸め(convergent rounding)(最も近い偶数に丸める)、または2の補数の丸めのいずれかである。丸めの種類は、プログラム制御部46のステータス・レジスタ内の丸めビットによって指定される。プログラム制御部46は図1に示されている。アキュムレータ・レジスタ内の丸められるビットは、ステータス・レジスタ内のスケーリング・モード・ビット(scaling mode bit)によって指定される。パイプライン・レジスタ78は、乗算器76の出力端子に結合され、乗算動作からの中間結果を受ける。パイプライン・レジスタ78の出力端子は、アキュムレータおよび丸め部80の入力端子に、中間結果を供給する。中間結果は、アキュムレータ・レジスタ83または84の一方のオペランドに加算される。パイプライン・レジスタ96の入力端子は、アキュムレータ・レジスタ部82の出力端子に結合されており、出力端子はアキュムレータおよび丸め部80の入力端子に結合され、アキュムレータ・レジスタ83または84の一方からのデータを、アキュムレータおよび丸め部80に転送する。最終結果は、典型的に、同一レジスタ、即ち、アキュムレータ・レジスタ83または84に戻され記憶される。しかしながら、最終結果をレジスタ・ファイル70のレジスタに戻して書き込んでもよい。
【0026】
アキュムレータ・レジスタ83,84は、各々3つの連結レジスタ(concatenated register)で構成されており、合計56ビットを生成する。アキュムレータ・レジスタ83では、「A0」と表記された24ビット汎用リード/ライト・レジスタが、乗算結果の下位24ビット(LSP)を記憶する。A0は、アキュムレータ・レジスタ83のビット0〜23を含む。「A1」と表記された24ビット・リード/ライト・レジスタは、乗算結果の上位24ビット(MSP)を記憶する。A1は、アキュムレータ・レジスタ83のビット24〜47を含む。「A2」と表記された8ビット・リード/ライト・レジスタは、符号拡張(EXT)およびオーバーフロー・レジスタである。A2は、アキュムレータ・レジスタ83のビット48〜56を含む。アキュムレータ・レジスタ84では、「B0」と表記された24ビット汎用リード/ライト・レジスタが24ビットのLSPを記憶する。B0はアキュムレータ・レジスタ84のビット0〜23を含む。「B1」と表記された24ビット・リード/ライト・レジスタは、24ビットのMSPを記憶する。B1はアキュムレータ・レジスタ84のビット23〜47を含む。「B2」と表記された8ビット・リード/ライト・レジスタは、符号拡張およびオーバーフロー・レジスタとして機能する。B2はアキュムレータ・レジスタ84のビット48ないし56を含む。アキュムレータ・レジスタ部82およびレジスタ・ファイル70は、データ処理システム20のためのプログラミング・モデルの中にある。
【0027】
アキュムレータ・レジスタ部82の出力端子は、シフタ/リミッタ86の入力端子に結合され、アキュムレータ・レジスタ部82からの56ビットのデータをシフタ/リミッタ86に転送する。シフタ/リミッタ86は、従来の非同期並列シフタ/リミッタ2つで構成されている。一方のシフタ/リミッタはデータ・バス61に結合され、他方のシフタ/リミッタはデータ・バス62に結合されている。リミッタはオーバーフローによるエラーを最少に抑えるために用いられる。制限が行われるのは、拡張レジスタA2,B2が使用中で、アキュムレータ・レジスタ83または84の内容を、データ・バス61またはデータ・バス62を通じて伝送しようとする場合である。リミッタは、制限されたデータ値を最大値(maximum magnitude)と交換する。拡張レジスタA2,B2が用いられていないとき、リミッタは動作不能状態にある。2つのデータ・リミッタを組み合わせて、ロング・ワード・オペランド(long-word operand)のための単一48ビット・データ・リミッタを形成することもできる。シフタ/リミッタ86内のデータ・シフタは、データを1ビット左へ(スケール・アップ)、または1ビット右へ(スケール・ダウン)シフトすることができ、更にシフトせずにデータを通過させることもできる(スケーリングせず)。シフタは、プログラム・コードを変更することなく、固定小数点データの動的スケーリングを可能にする。例えば、これによって、高速フーリエ変換のようなブロック浮動小数点アルゴリズム(block floating-point algorithm)を、データ処理システム20内に実装可能となる。
【0028】
アキュムレータ・シフタ94の入力端子はアキュムレータ・レジスタ部82の出力端子に結合され、出力端子はアキュムレータおよび丸め部80に結合されている。アキュムレータ・シフタ94は、非同期並列シフタであり、アキュムレータ・レジスタ部82の情報をシフトするためのものである。また、アキュムレータ・シフタ94は、シフトされた情報を、アキュムレータおよび丸め部80に戻す。制御回路89は、アキュムレータ・シフタ94、シフタ/リミッタ86、ならびにバレル・シフタおよびビット・フィールド部92に結合されている。制御回路89は、バス63を介してプログラム制御部46から受信した命令に応答して、データALU54のための制御機能を実行する。例えば、制御回路89は、データALU54が16ビット精度モードにあるときに実行されるMAC命令に必要なシフト動作を決定する。
【0029】
マルチプレクサ88は、その入力端子がバス63およびレジスタ・ファイル70に結合されている。マルチプレクサ88の出力端子は、パイプライン・レジスタ90の入力端子に結合されている。パイプライン・レジスタ90の出力端子は、バレル・シフタおよびビット・フィールド部92に結合されている。バレル・シフタおよびビット・フィールド部92は、アキュムレータ・レジスタ部82の入力端子に結合されている。バレル・シフタおよびビット・フィールド部92は、56ビット並列双方向シフタを含み、マルチビット左シフト、マルチビット右シフト、1ビット回転(左または右)、ビット・フィールド併合(bit field merge)、挿入および抽出、カウント・リーディング・ビット(count leading bits)の正規化、ならびにAND、OR、排他的OR、およびNOTのような論理演算処理を実行する。バレル・シフタおよびビット・フィールド部92は、これらの処理全てを、24ビットおよび16ビット精度動作モードで実行することができる。16ビット精度モードでは、ビット・フィールド処理が、16ビット・データのための適切なビット位置において実行される。
【0030】
データALU54は、24ビットおよび16ビット精度算術演算のための完全な解決策を与える。1つの命令セット全体が、24ビットモードでも、16ビット精度モードでも実行することができ、多倍精度算術演算も含む。双方のモードで、同一命令およびハードウエアが用いられる。これらのモード間の移行は、ステータス・レジスタ内の1ビットを変更することによって行われる。16ビット精度動作モードでは、24ビット・モードで実行できるデータALU54のほぼ全動作の実行が可能である。例えば、16ビット精度モードでは、データALU54は、丸め、倍精度乗算、移動およびシフトを実行する。加えて、全てのビット・フィールド処理が、16ビット精度モードで実行可能である。
【0031】
16ビット精度モードの間に移動を実行すると、データは、24ビットまたは48ビットとして、バス61,62,63を通じて読み書きされる。16ビットの移動は生じない。バス61およびバス62からアキュムレータ・レジスタ部82の1つにデータを移動する場合、バス61からの下位16ビットがアキュムレータ・レジスタ部82の選択されたアキュムレータ・レジスタのビット32〜47に配置され、当該アキュムレータ・レジスタのビット24〜41には0がロードされる。バス62からの下位16ビットがビット8〜23に配置され、0がビット0〜7にロードされる。ビット48〜56には符号拡張がロードされる。
【0032】
バス61またはバス62からレジスタ71〜74の1つにデータを移動する場合、バス上の下位16ビットを、目的レジスタの上位16ビットにロードする。当該レジスタの下位8ビットには0をロードする。バス61またはバス62から、レジスタ71〜74の内2つのレジスタを連結することによって形成されるレジスタのような、48ビット・レジスタにデータを移動する場合、バス62の下位16ビットがレジスタ72または74の上位16ビットにロードされ、バス61の下位16ビットがレジスタ71または73の上位16ビットにロードされる。
【0033】
乗算器76、アキュムレータおよび丸め部80、ならびにバレル・シフタおよびビット・フィールド部92のような実行部に入力されるデータでは、まずデータの整列を行い、実行部の中で所定の位置に合わせて配列し、16ビット精度モードがデータ処理システム20のユーザにわかるようにする(transparent)。16ビット算術演算処理を実行する場合、分数算術演算を用いれば整列が容易となる。種々の多重化およびシフト回路を用いて、17ビット精度モードのに必要な整列を行う。算術演算処理の丸めは、24ビット・モードではA0/B0で行われるが、16ビット精度モードでは、代わりにアキュムレータ部分A1/B1のビット15上で行われる。したがって、データALU54のシフト/制限動作やスケーリングは、この影響を受ける。データALU54を用いて16ビット精度MAC命令を実行するために必要なステップを、一例として図3に示す。
【0034】
図2および図3の双方を参照する。16ビット第1オペランドを、レジスタ・ファイル70の内のレジスタの1つ、例えば、「X0」と表記されたレジスタ71に供給する。第1オペランドは、Xメモリ32またはYメモリ34(図1)から供給することができる。16ビット第2オペランドを、レジスタ・ファイル70の内の他のレジスタ、例えば、「Y0」と表記されたレジスタ73に供給する。第1および第2オペランドは、24ビット・レジスタ71,73の上位16ビットに記憶される。レジスタ71,73の下位8ビットはニゲートされる。即ち、図示の実施例では、論理0が書き込まれる。16ビット第1オペランドおよび16ビット第2オペランドを乗算器76において乗算し、32ビットの積を得る。この32ビットの積は、中間結果レジスタの上位32ビットに記憶される。データALU54では、パイプライン・レジスタ78が中間結果レジスタとして機能する。32ビットの積は、アキュムレータ・レジスタ83または84の一方に記憶されている第3オペランドに加算される。加算の前に、アキュムレータ・シフタ94において第3オペランドをシフトし、32ビットの積のフォーマットと整列即ち一致させ、アキュムレータおよび丸め部80に供給する。加算の結果は同一アキュムレータ・レジスタ83または84に戻され書き込まれる。
【0035】
FIRフィルタを実施するためのアルゴリズムにおけるように、データALUがMAC命令を実行しているとき、乗算命令の結果は、蓄積命令のオペランドとして用いられる。MAC命令は、所定回繰り返し実行される。従来技術では、MAC命令の各繰り返し実行のために、最終結果はアキュムレータ・レジスタ部82に戻されて書き込まれるか、あるいはレジスタ・ファイル70の中のレジスタの1つに書き込まれる。各繰り返しの後、蓄積動作の結果は、同一アキュムレータ・レジスタに戻され書き込まれる。アキュムレータとアキュムレータ・レジスタとの間のバスは比較的長く、比較的大きな容量性負荷がかかっている場合がある。したがって、各繰り返し動作の後にアキュムレータ・レジスタに戻して書き込むと、大量の電力を消費することになり得る。
【0036】
データALU54における電力消費を低減するために、アキュムレータ・レジスタ部82の同一アキュムレータ・レジスタへの不要な書き戻しを行わないようにする。制御回路89は、データALU54に供給される一連の命令を監視し、連続する命令が同一結果に対して同一目的地を有する場合を全て検出する。同一レジスタが連続する命令の目的地となっている場合はいつでも、結果はパイプライン・レジスタ78にのみ書き込まれ、連続する命令の中で指定されている目的レジスタには書き込まない。このようにして、長く負荷が大きいアキュムレータ・レジスタへのバスの代わりに、短くしかも負荷が軽いパイプライン・レジスタ78へのバスを駆動することにより、大幅な電力消費低減を達成する。
【0037】
図4は、図1のプログラム制御部46のステータス・レジスタ95をブロック図形状で示す。ステータス・レジスタ95は、従来のリード/ライト24ビット・レジスタである。「SA」と表記されたステータス・ビット97は、データALU54が24ビット算術演算と16ビット精度算術演算のどちらを実行するかを制御する。制御ビット97がアサートされると、16ビット精度動作モードに入る。データ処理システム20のリセットの間に、ステータス・ビット97はクリアされる。
【0038】
以上、本発明を好適実施例との関連において説明してきたが、本発明は様々な方法で変更可能であり、先に具体的に開示し説明した実施例以外にも多くの実施例が想定可能であることは、当業者には明白であろう。例えば、図示の実施例では、16ビット精度モードおよび24ビット・モードは同一ハードウエアで実行されるものとして開示された。他の実施例では、オペランド内のビット数が異なるものもあり、同一ハードウエアで対応可能なモードの数が異なる場合もある。また、図示の実施例では、特定のレジスタが特定数のビットおよび特定のビット構成を有していた。他の実施例では、異なるサイズのレジスタ、異なる数のレジスタ、または異なる数のレジスタ・ビット・フィールドを用いる場合もある。したがって、本発明の真の精神および範囲に該当する本発明の変更物は全て、特許請求の範囲に含まれることを意図するものである。
【図面の簡単な説明】
【図1】本発明によるデータ処理システムを示すブロック図。
【図2】図1のデータ処理システムのデータ算術論理演算部を示すブロック図。
【図3】本発明の実施例による、種々のレジスタにおける16ビット乗算/蓄積オペランドおよびデータ整列を示す図。
【図4】図1のプログラム制御部のステータス・レジスタを示すブロック図。
【符号の説明】
20 データ処理システム
22 タイマ
24 ホスト・インターフェース
26 改良直列同期インターフェース
28 直列非同期インターフェース
30 プログラムRAMおよび命令キャッシュ
32,34 データ・メモリ
36 アドレス発生器/直接メモリ・アクセス・コントローラ
38 外部アドレス・バス・スイッチ
40 内部データ・バス・スイッチ
42 DRAMおよびSRAMバス・インターフェース/命令キャッシュ制御部
44 外部データ・バス・スイッチ
46 プログラム制御部
48 プログラム割り込みコントローラ
50 プログラム・デコード・コントローラ
52 ログラム・アドレス発生器
54 データ算術演算部
56,57 アドレス・バス
58 プログラム・アドレス・バス
59 アドレス・バス
61,62 データ・バス
63,64 プログラム・データ・バス
70 レジスタ・ファイル
76 乗算器
78,90,96 パイプライン・レジスタ
80 アキュムレータおよび丸め部
82 アキュムレータ・レジスタ部
86 シフタ/リミッタ
88 マルチプレクサ
89 制御回路
92 バレル・シフタおよびビット・フィールド部
94 アキュムレータ・シフタ

Claims (1)

  1. データ処理システムにおいて乗算/累算処理を実行する方法であって、
    前記データ処理システムのステータス・レジスタ内のモード・ビットをアサートするステップであって、前記モード・ビットは、前記データ処理システムのNビット動作モードに入るためアサートされ、且つ前記モード・ビットは、Mビット動作モードに入るためニゲートされ、ここでN及びMは整数であり、NはMより小さい、前記アサートするステップと、
    前記モード・ビットがアサートされたとき、第1のNビット・オペランドを第1のMビット・レジスタに与えるステップと、
    前記モード・ビットがアサートされたとき、第2のNビット・オペランドを第2のMビット・レジスタに与えるステップと、
    前記第1のNビット・オペランドに前記第2のNビット・オペランドを乗算して、2Nビットの積を得るステップと、
    前記2Nビットの積を中間結果レジスタに記憶するステップと、
    第3のオペランドを記憶するアキュムレータ・レジスタであって、少なくともも2Mビットの記憶容量を有する前記アキュムレータ・レジスタを設けるステップと、
    前記アキュムレータ・レジスタ内の前記第3のオペランドをシフトして、前記第3のオペランドを前記2Nビットの積と整列させるステップと、
    前記2Nビットの積を前記第3のオペランドに加算して、結果を得、且つ当該結果を記憶するステップと
    を備える方法。
JP34936595A 1994-12-22 1995-12-20 24ビットおよび16ビット算術演算の双方を実行するための装置および方法 Expired - Fee Related JP3759647B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US361406 1994-12-22
US08/361,406 US5598362A (en) 1994-12-22 1994-12-22 Apparatus and method for performing both 24 bit and 16 bit arithmetic

Publications (2)

Publication Number Publication Date
JPH08234962A JPH08234962A (ja) 1996-09-13
JP3759647B2 true JP3759647B2 (ja) 2006-03-29

Family

ID=23421913

Family Applications (1)

Application Number Title Priority Date Filing Date
JP34936595A Expired - Fee Related JP3759647B2 (ja) 1994-12-22 1995-12-20 24ビットおよび16ビット算術演算の双方を実行するための装置および方法

Country Status (3)

Country Link
US (1) US5598362A (ja)
EP (1) EP0718757A3 (ja)
JP (1) JP3759647B2 (ja)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5822609A (en) * 1995-06-22 1998-10-13 International Business Machines Corporation Processing circuit for performing a convolution computation
US6643765B1 (en) * 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US7301541B2 (en) 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
US5742840A (en) * 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
US5787025A (en) * 1996-02-28 1998-07-28 Atmel Corporation Method and system for performing arithmetic operations with single or double precision
JP3934710B2 (ja) * 1996-09-13 2007-06-20 株式会社ルネサステクノロジ マイクロプロセッサ
US6173247B1 (en) 1997-06-18 2001-01-09 Dsp Software Engineering, Inc. Method and apparatus for accurately modeling digital signal processors
DE69833092T2 (de) * 1997-09-08 2006-08-31 Lucent Technologies Inc. System und Methode mit Modusbits, zur Unterstützung mehrfache Kodierungstandards.
US6263420B1 (en) * 1997-09-17 2001-07-17 Sony Corporation Digital signal processor particularly suited for decoding digital audio
US7932911B2 (en) * 1998-08-24 2011-04-26 Microunity Systems Engineering, Inc. Processor for executing switch and translate instructions requiring wide operands
ATE557342T1 (de) * 1998-08-24 2012-05-15 Microunity Systems Eng Prozessor und verfahren zur matrixmultiplikation mit einem breiten operand
US6209012B1 (en) * 1998-09-02 2001-03-27 Lucent Technologies Inc. System and method using mode bits to support multiple coding standards
GB9902115D0 (en) 1999-02-01 1999-03-24 Axeon Limited Neural networks
US7120143B1 (en) * 1999-09-15 2006-10-10 8X8, Inc. Voice-over Internet protocol processor
DE19948099A1 (de) 1999-10-06 2001-04-19 Infineon Technologies Ag Prozessorsystem, insbesondere ein Prozessorsystem für Kommunikationseinrichtungen
KR100325430B1 (ko) * 1999-10-11 2002-02-25 윤종용 상이한 워드 길이의 산술연산을 수행하는 데이터 처리장치 및 그 방법
AU2001245511A1 (en) * 2000-03-10 2001-09-24 Arc International Plc Method and apparatus for enhancing the performance of a pipelined data processor
US7111156B1 (en) * 2000-04-21 2006-09-19 Ati Technologies, Inc. Method and apparatus for multi-thread accumulation buffering in a computation engine
AU2001269394A1 (en) * 2000-07-28 2002-02-13 Delvalley Limited A method of processing data
US7206927B2 (en) 2002-11-19 2007-04-17 Analog Devices, Inc. Pipelined processor method and circuit with interleaving of iterative operations
CA2822125C (en) 2005-04-05 2016-06-07 Sunfish Studio, Llc Modal interval processor
US8307196B2 (en) * 2006-04-05 2012-11-06 Freescale Semiconductor, Inc. Data processing system having bit exact instructions and methods therefor
WO2008022307A2 (en) * 2006-08-18 2008-02-21 Conexant Systems, Inc. Systems and methods for implementing a double precision arithmetic memory architecture
JP2008204356A (ja) * 2007-02-22 2008-09-04 Fujitsu Ltd リコンフィギャラブル回路
GB2474901B (en) * 2009-10-30 2015-01-07 Advanced Risc Mach Ltd Apparatus and method for performing multiply-accumulate operations
US8914430B2 (en) 2010-09-24 2014-12-16 Intel Corporation Multiply add functional unit capable of executing scale, round, GETEXP, round, GETMANT, reduce, range and class instructions
US9785565B2 (en) 2014-06-30 2017-10-10 Microunity Systems Engineering, Inc. System and methods for expandably wide processor instructions
US20210349717A1 (en) * 2020-05-05 2021-11-11 Intel Corporation Compaction of diverged lanes for efficient use of alus

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3469085A (en) * 1965-05-24 1969-09-23 Sharp Kk Register controlling system
US4575812A (en) * 1984-05-31 1986-03-11 Motorola, Inc. X×Y Bit array multiplier/accumulator circuit
US4843585A (en) * 1987-09-14 1989-06-27 Motorola, Inc. Pipelineable structure for efficient multiplication and accumulation operations
US5001662A (en) * 1989-04-28 1991-03-19 Apple Computer, Inc. Method and apparatus for multi-gauge computation
JP2601960B2 (ja) * 1990-11-15 1997-04-23 インターナショナル・ビジネス・マシーンズ・コーポレイション データ処理方法及びその装置
US5363322A (en) * 1991-04-02 1994-11-08 Motorola, Inc. Data processor with an integer multiplication function on a fractional multiplier

Also Published As

Publication number Publication date
JPH08234962A (ja) 1996-09-13
US5598362A (en) 1997-01-28
EP0718757A2 (en) 1996-06-26
EP0718757A3 (en) 1997-10-01

Similar Documents

Publication Publication Date Title
JP3759647B2 (ja) 24ビットおよび16ビット算術演算の双方を実行するための装置および方法
US5666300A (en) Power reduction in a data processing system using pipeline registers and method therefor
US6564238B1 (en) Data processing apparatus and method for performing different word-length arithmetic operations
EP0789297B1 (en) Data processor loading data and performing multiply-add operation in parallel
US5422805A (en) Method and apparatus for multiplying two numbers using signed arithmetic
US6671796B1 (en) Converting an arbitrary fixed point value to a floating point value
US20060294344A1 (en) Computer processor pipeline with shadow registers for context switching, and method
JPH10187438A (ja) 乗算器の入力に対する遷移を減少させる方法
JPH10134036A (ja) マルチメディア信号プロセッサの単一命令多重データ処理
US5826072A (en) Pipelined digital signal processor and signal processing system employing same
JP2001501330A (ja) デジタル信号処理集積回路アーキテクチャ
KR20030011071A (ko) 결합된 곱셈-축적 유닛을 가지고 있는 디지털 신호 프로세서
US5787025A (en) Method and system for performing arithmetic operations with single or double precision
US5978822A (en) Circuit for rotating, left shifting, or right shifting bits
US20030005261A1 (en) Method and apparatus for attaching accelerator hardware containing internal state to a processing core
US5958000A (en) Two-bit booth multiplier with reduced data path width
JP3476960B2 (ja) 算術論理演算装置及び制御方法
US7111155B1 (en) Digital signal processor computation core with input operand selection from operand bus for dual operations
US6678710B1 (en) Logarithmic number system for performing calculations in a processor
JP2002544587A (ja) デジタル信号プロセッサ計算コア
JPH10143494A (ja) スカラ/ベクトル演算の組み合わせられた単一命令複数データ処理
US7107302B1 (en) Finite impulse response filter algorithm for implementation on digital signal processor having dual execution units
US6820189B1 (en) Computation core executing multiple operation DSP instructions and micro-controller instructions of shorter length without performing switch operation
Li et al. VLSI implementation of a High-performance 32-bit RISC Microprocessor
US6859872B1 (en) Digital signal processor computation core with pipeline having memory access stages and multiply accumulate stages positioned for efficient operation

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20041217

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050304

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20050303

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20050310

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050325

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20050624

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20050629

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050920

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: 20051206

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060104

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: 20090113

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20100113

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110113

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20110113

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20120113

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20130113

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20130113

Year of fee payment: 7

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees