JP2000039995A - 高性能マイクロプロセッサで使用するためのフレキシブル累算レジスタファイル - Google Patents

高性能マイクロプロセッサで使用するためのフレキシブル累算レジスタファイル

Info

Publication number
JP2000039995A
JP2000039995A JP11217664A JP21766499A JP2000039995A JP 2000039995 A JP2000039995 A JP 2000039995A JP 11217664 A JP11217664 A JP 11217664A JP 21766499 A JP21766499 A JP 21766499A JP 2000039995 A JP2000039995 A JP 2000039995A
Authority
JP
Japan
Prior art keywords
accumulator
word
chain
register
multiplier
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.)
Pending
Application number
JP11217664A
Other languages
English (en)
Inventor
Alva Henderson
ヘンダーソン アルバ
Francesco Cavaliere
カバリエール フランセスコ
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.)
Texas Instruments Inc
Original Assignee
Texas Instruments 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 Texas Instruments Inc filed Critical Texas Instruments Inc
Publication of JP2000039995A publication Critical patent/JP2000039995A/ja
Pending legal-status Critical Current

Links

Classifications

    • 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
    • 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/544Methods 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 for evaluating functions by calculation
    • G06F7/5443Sum of products
    • 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/30018Bit or string instructions
    • 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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30109Register structure having multiple operands in a single register
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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

Landscapes

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

Abstract

(57)【要約】 【課題】 効率的で、一貫した、統一された仕方で、長
い多重ワード長のデータに対して動作するマイクロプロ
セッサを提供する。 【解決手段】 特殊マイクロプロセッサハードウェア1
0と特殊命令セットを設ける。データを操作する命令ワ
ードごとに2ビットフィールド形式のリザーブドビット
スイッチを設ける。そのステータスにより命令は一度だ
け実行されて単一ワードデータに対して動作するか、ま
たはそのステータスにより順次データ(nワード)のチ
ェーンまたはリスト、たとえば、16ビットの整数N個
のワードのデータを含むデータチェーン、に対して動作
する命令として反復実行される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は電子データ処理の分
野に関するものであり、更に詳しくは、ビット長の長い
データ、すなわち、データチェーンの電子データ処理の
分野に関するものである。
【0002】
【従来の技術】マイクロプロセッサの動作 マイクロプロセッサは広い範囲のビット長さをそなえた
2進データを扱う必要があることが多い。たとえば、1
論理ビットから、128ビットより長くなることがある
データに関係する高精度演算動作に及ぶデータを扱う必
要があることが多い。
【0003】マイクロプロセッサの中のハードウェアで
ある演算論理ユニット(ALU:arithmetic
and logic unit)は一般に固定のビッ
ト長またはワード長を扱うように構成、配置される。し
たがって、高精度演算動作は多重プログラムステップと
多重マイクロプロセッササイクルを必要とする。これら
のデータ処理条件により、実行時間に関して非効率なプ
ログラムとなる。マイクロプロセッサのハードウェアと
サポートプログラム命令セットは、広範囲のビット長を
そなえたデータ、たとえば、16ビットのデータワード
の順次チェーンによって表現されるデータに対して動作
するように最適化されていない。
【0004】加算、減算のような命令の場合、この非効
率は、メモリの記憶とメモリのロードを含むメモリのス
ラッシング、およびプログラムまたはソフトウェアのル
ープ制御のオーバヘッドによって生じるものである。乗
算や、拡張精度アルゴリズムを含む動作のような、より
複雑な命令または動作の場合、結果は更に一層非効率と
なる。更に、結果として得られる計算値の負、正、また
はゼロのステータスは多重ワード計算については別個に
扱わなければならないので、更に一層の時間と更に一層
のプログラムコードが必要になる。
【0005】累算器のアーキテクチャ 累算器はすべてのプロセッサに対する中央レジスタであ
り、ALUの結果をディジタルプロセッサに記憶するた
めに一時的に使用される。単一データバス、単一データ
メモリの設計では、ほとんどの汎用マイクロプロセッサ
と同様に、累算器は高速処理に対するボトルネックとな
っている。累算器は入力オペランドソースとして使用さ
れるとともに、ALUの出力オペランドをラッチするた
めにも使用される。したがって、異なるデータ値が操作
されるとき、前の結果を何か他のレジスタまたはメモリ
に記憶しないと、次のデータの処理を行うことができな
い。累算器の中にあるデータが、中間の計算または動作
に対する場所をあけるために一時的にセーブしなければ
ならない一時データであり、付加的なサイクルを使用し
てセーブされた一時データを検索しなければ前に進めな
いことがしばしばある。これらの必要条件を満足させる
ために、数サイクルの望ましくない実行時間を無駄使い
しなければならないことがしばしばある。これらの無駄
使いされるサイクルは、信号処理のような実行時間に敏
感なルーチンに対して重大である。8サイクル毎に2サ
イクル節減すると、処理速度は33%増大する。
【0006】また、普通のプロセッサにしばしば生じる
もう一つの問題は、単一の累算器レジスタでは、累算器
をALUの一つの入力オペランドに対するソースとAL
Uの出力オペランドに対するデスティネーションの両方
として使用しなければならないということである。一つ
の例は加算である。加算の場合、メモリの中にある1ワ
ードが累算器の中にある1ワードに加算され、その結果
が累算器の中にもともと記憶されていた入力オペランド
の上に書かれる。二つの累算器の設計により、非破壊動
作に対する特徴は得られるが、利点が得られるのは単一
ワード幅の動作の場合だけである。
【0007】チェーン処理 従来のマイクロプロセッサが、たとえば、与えられた命
令を所定回数繰り返すことにより、チェーンに対して動
作する能力を含んでいたことは知られている。データメ
モリアドレスを事後に変更するけた上げ付き反復加算が
チェーン動作を有効に実行することも知られている。他
のマイクロプロセッサでは、部分乗算アルゴリズムを使
用することにより、固定されたハードウェア乗算器を使
用して拡張精度の乗算を行ってきたことも知られている
が、これは複雑でしかも効率が悪い。
【0008】マイクロプロセッサは通常、広範囲のビッ
ト長をそなえたデータを操作しなければならない。これ
は1論理ビットから、128ビットより多くのビットを
必要とする高精度演算まで変わる。演算論理ユニット
(ALU:Arithmetic Logic uni
t)は固定ワード長であり、多重プログラムステップで
高精度動作を操作しなければならない。基本的なハード
ウェアと支援する命令セットはデータワードの順次チェ
ーンによって表現される広いデータに対して動作するよ
うに最適化されていないので、実行時間とプログラミン
グコード効率に関して、プログラムは非効率となる。加
算、減算等の簡単な命令の場合、この非効率は、メモリ
のスラッシング(メモリの記憶とロード)、およびソフ
トウェアのループ制御のオーバヘッドによって生じるも
のである。乗算のような、より複雑な動作の場合、拡張
精度のアルゴリズムがより多く含まれ、非効率となる。
更に、結果として得られる値のステータス(負、正、ま
たはゼロに等しい)は多重ワード計算については別個に
扱わなければならないので、更に一層の時間とプログラ
ムコードが必要になる。
【0009】マイクロプロセッサの中で累算器が中央レ
ジスタの機能を果たすこと、そしてALU動作の結果を
記憶するために累算器が使用されるということは知られ
ている。単一データバスと単一データメモリをそなえた
マイクロプロセッサでは、累算器は高速処理に対するボ
トルネックとなっている。
【0010】より一般的に、プロセッサの累算器は一般
に入力オペランドソースとして使用され、これは現在A
LUの中にあるオペランドをラッチするためにも使用さ
れる。したがって、異なるデータ値が操作されるとき、
前の結果をもう一つのレジスタまたはメモリに記憶しな
いと、次のデータの処理を行うことができない。累算器
の中にあるデータが、中間の計算または動作に対する場
所をあけるために一時的にセーブしなければならない一
時データであり、付加的なサイクルを使用してセーブさ
れた一時データを検索しなければ処理を続行できないこ
とがしばしばある。その結果、数サイクルの実行時間を
無駄使いしなければならない。これらの無駄使いされる
サイクルは時間に敏感な信号処理ルーチンに対して重大
である。
【0011】更に、単一の累算器が存在するとき、累算
器はALUの一つの入力オペランドに対するソースとA
LUの出力オペランドに対するデスティネーションの両
方として使用されなければならない。加算は一例であ
る。加算の場合、メモリの中にある一つの16ビットワ
ードが累算器の中にある一つの16ビットワードに加算
された後、結果が累算器の中にもともと記憶されていた
入力オペランドの上に書かれる。二つの累算器を使用す
ることにより、ある程度の非破壊動作は行われるが、こ
の機能が行われるのは単一ワード長の動作の場合だけで
ある。
【0012】
【発明が解決しようとする課題】効率的で、首尾一貫し
た、統一された仕方で、長い多重ワード長のデータに対
して動作するという問題に対処するために特殊なハード
ウェアと命令セットをそなえて増強されたマイクロプロ
セッサが、当業界では必要とされたままになっている。
【0013】
【課題を解決するための手段】累算器レジスタと改善さ
れたファイルワード長処理をそなえた革新的なプロセッ
本出願は、長いワード長またはビット長のデータに対す
る効率的なデータ処理動作を行う特殊ハードウェアと特
殊命令セットを開示する。好適実施例によれば、データ
を操作する命令には(2ビットフィールドの形式の)リ
ザーブドビットスイッチが含まれる。そのステータス
(A0)により命令は一度だけ実行されて単一ワードデ
ータに対して動作するか、またはそのステータス(A0
S)により命令は順次データのチェーンまたはリスト、
たとえば、16ビットの整数N個のワードのデータを含
むデータチェーン、に対して動作する命令として反復実
行される。
【0014】本好適実施例には、効率的で、首尾一貫し
た、統一された仕方で、長い多重ワード幅のデータに対
して動作するという問題に対処する、特殊ハードウェア
構造と、特定の命令セットの増強の両方が含まれてい
る。データを操作する命令ワードごとに、リザーブドビ
ットスイッチが設けられ、これにより命令は一度だけ実
行されて単一ワードデータに対して動作するか、または
同じ命令の反復実行として実行されて順次データ(nワ
ード)のチェーンまたはリストに対して動作する。
【0015】好適実施例によれば、この拡張精度の命令
セットの定義を支援するために数個のハードウェア構造
が必要とされる。第一に、チェーン内の反復カウントと
ワード数を制御するために、カウンタ付きのハードウェ
アのチェーンレジスタが含まれた。第二に、ALUに対
する累算機能を提供するためにレジスタファイルがイン
プリメントされた。第三に、2個以下の入力オペランド
チェーンと1個の出力オペランドチェーンの順次取得を
制御するために特殊アドレス制御が必要であった。第四
に、データ幅に関係なく統一された仕方で演算と論理の
ステータスを扱うために余分のALUステータス論理が
含まれた。第五に、首尾一貫したチェーン乗算機能を可
能にするために、積上位レジスタの内容がハードウェア
乗算器の部分和入力に送られた。
【0016】好適実施例は、1ワード長のALU(図1
の31)を設け、ワード長の概念を設ける。また、好適
実施例では、各々が一対のチェーン値を記憶する四つの
異なる記憶領域を指定することができるので、従来のマ
イクロプロセッサの欠点が解消される。
【0017】開示された実施例では、首尾一貫した仕方
でデータを見て、データを表現するために使用されるビ
ット数に関連する制限は、ほとんど無い。コードは単一
の16ビットワードに対して動作する場合も、32個の
16ビット(512ビット)のワードチェーンに対して
動作する場合も、本質的に同じである。実行時間は、オ
ペランド内のワード数とともに線形に伸び、ソフトウェ
アのオーバヘッドはほとんど無いか、またはまったく無
い。コードはコンパクトであり、論理的であり、理解し
やすい。
【0018】革新的なプロセッサハードウェアの、上記
の、そして他の特徴および利点は、図面を参照した、本
発明の好適実施例についての以下の詳細な説明により、
熟練した当業者には明らかとなる。
【0019】開示される発明を付図を参照して説明す
る。付図は本発明の重要な実施例を示し、ここに引用す
ることにより本明細書の一部として組み入れられる。
【0020】
【発明の実施の形態】本出願の多数の革新的な教示を、
特に現在の好適実施例を参照して説明する。しかし、こ
の種の実施例は、本出願の革新的な教示の多数の有利な
使用のほんの二、三の例を示すに過ぎないことは理解さ
れるはずである。一般に、本出願明細書の記述は必ずし
も、種々の特許請求された本発明のいずれをも限定する
ものではない。また、記述によっては、いくつかの発明
的特徴に該当するが、他の発明的特徴には該当しないこ
ともある。
【0021】好適実施例によるマイクロプロセッサ、ま
たは、より簡単にプロセッサは、一般的に役に立ち、ま
た高速計算機および中速のディジタル信号プロセッサ
(DSP:digital signal proce
ssor)システムのような用途に特に役に立つ。プロ
セッサは、種々の異なったメモリ構成とともに、また種
々の異なった周辺装置とともに使用することにより、さ
まざまな用途に応用できる消費者用製品を作ることがで
きる。
【0022】本好適実施例のプロセッサの基本的アーキ
テクチャは、高速計算ユニット(CU:computa
tional−unit)、および全特徴をそなえたデ
ータメモリアドレスユニット(DMAU:data−m
emory−address−unit)を含む。プロ
セッサのダイまたはチップはデータとプログラムの別々
のメモリスペースを提供するので、並列アクセスと最大
計算スループットが許容される。最小の電力消費を達成
するために、静的論理のインプリメンテーションかせプ
ロセッサの機能ブロックを形成し、大部分の機能ブロッ
クは使用されないとき機能抑止(disable)され
る。多数の異なる内部メモリのサイズと型をカスタム化
された周辺装置および割込み論理と組み合わせることに
より、各々が異なる役に立つさまざまのカスタム化され
た装置を提供することができる。
【0023】本好適実施例では、それに限定されない
が、プログラムとデータのメモリは内部メモリブロック
に限定され、内部メモリブロックを外部メモリを使用し
て拡張することはできない。プログラムメモリは、たと
えば64K分の17ビットワードの量のROM、EPR
OM、またはOTPを含む。データのメモリはRAMで
ある。本発明の趣旨と範囲によれば、異なる実施例はプ
ログラムとデータのメモリサイズの異なる組み合わせを
特徴とし、プログラムメモリは一般に少なくとも16K
分の17ビットワードを含む。大容量データ記憶装置が
必要なときには、補助データメモリ周辺インタフェース
を設けることができる。
【0024】計算器フィールドとDSPフィールドの両
方での数値処理の必要条件を併合するために、プロセッ
サは16ビットのワード長をそなえている。この選択に
より、プロセッサのプログラムアドレスの限界も、各々
が16ビット長のほぼ64Kワードに設定される。
【0025】個別の革新的な特徴 本好適実施例によるハードウェアの特徴には、ハードウ
ェアのチェーンレジスタ/カウンタ(図1の18)が含
まれる。このチェーンレジスタ/カウンタには、ワード
長が記憶される。このチェーンレジスタ/カウンタは、
データチェーンの中にあるワード数Nに従ってチェーン
命令の反復を制御する。動作については、チェーン命令
はワードチェーンの長さ値Nを判定するためにデフォル
トによりこのチェーンレジスタ/カウンタを参照するよ
うに動作する。次のチェーン命令にチェーンの長さ値を
送るように動作する反復命令をチェーン命令に先行させ
ることにより、このデフォルト状態を無効にすることが
できる。
【0026】第二に、ハードウェアの累算器レジスタフ
ァイル(図1の36)はALU(図1の31)に対する
累算器機能を提供する。この累算器レジスタファイルは
一つのオペランドと一つの結果に対する一時記憶を提供
する。この一つのオペランドと一つの結果の両方とも多
重ワードチェーンによって表現することができる。累算
器レジスタファイルは二つのハードウェア累算器(図1
のAC(0)からAC(15)、および、AC(16)
からAC(31))で構成される。各ハードウェア累算
器は、ワードチェーンのチェーンを記憶するためのある
数、たとえば16個のハードウェアレジスタをそなえて
いる。その結果、3個のオペランドは複数の命令につい
ての操作とすることができ、ワード当たり1クロックす
なわち1マイクロプロセッササイクルだけを必要とす
る、たとえば、各々がNワード長の3個のワードチェー
ンに対してNサイクルを必要とする。
【0027】第三に、累算器レジスタファイルは、2個
以下の入力データオペランドチェーンと1個の出力オペ
ランドチェーンの順次取得を制御するための特殊ハード
ウェア(図7の70)を含んでいる。好適実施例では、
累算器レジスタファイルは2個以下の入力オペランドと
1個の出力をポインティングする、またはそれらへのア
クセスを制御することができる。
【0028】すなわち、ALU動作で使用するためにメ
モリに記憶されたオペランドをアドレス指定するため
に、ハードウェアのアドレス制御ユニットが設けられ、
同様のハードウェア機能が累算器レジスタファイルに対
して設けられる。LSWワードがメモリからフェッチさ
れた後、これらのハードウェアのアドレス制御ユニット
は多重ワードチェーンの第一のワードすなわちLSWワ
ードのアドレスを自動的にインクリメントするように動
作する。間接アドレス参照の場合は、間接レジスタ(図
7のACP)に記憶された間接アドレス値がコピーさ
れ、完全なワードチェーンを読取るため、このアドレス
コピーは順次インクリメントされる。
【0029】間接レジスタに記憶される初期間接参照は
変えられないことに注意すべきである。その結果、ワー
ドチェーンのLSWへの永久参照が維持される。この永
久参照は、マイクロプロセッサによってランされている
プログラムによって明示的に変更されるまで続けられ
る。
【0030】第四の特徴として、ビット長によらない統
一された仕方で演算と論理のステータスを扱うために、
付加的なハードウェアのALUステータス論理が設けら
れる。
【0031】第五の特徴として、ハードウェアの積上位
レジスタ(図6の34)がハードウェア乗算器(図6の
30)の部分和入力(図6の71)に接続されているの
で、一貫したチェーン乗算機能が可能となる。
【0032】第六の特徴として、マイクロプロセッサの
ALUの中にハードウェアの単一サイクルの乗算器(図
1の30)が含まれて、二つの16ビットのオペランド
を受け入れて、32ビットの積を発生する。
【0033】累算器と乗算器の構造 この単一サイクルの乗算器は、一つの16ビットの乗数
オペランドに多重ワードチェーンの1ワードを含み得る
被乗数オペランドを乗算するように構成、配置される。
結果として得られる積は、入力ワードチェーンのワード
長と比較したとき、長さが1ワード余分になっている。
ワードチェーンの長さは通常、ハードウェアのチェーン
レジスタ/カウンタによって示されるので、すべてのこ
のようなチェーン動作に対して余分の1サイクルを付加
しなければならない。
【0034】単一サイクルの乗算器はオペランドを符号
付きまたは符号なしと解釈することができるので、最後
を除くすべてのワード乗数が符号なしモードとなるよう
に強制しなければならない。更に、単一サイクル乗算器
は、0ビットから15ビットを含むデータチェーンのバ
レルシフトを行うバレルシフタとして使用することもで
きる。
【0035】単一のデータワード動作に対して、正しく
統一された演算とステータス抽出とを行うために、けた
上げ出力ビットは次のワードの計算のけた上げ入力ビッ
トと結合され、ワードステータスビット(等しい、すな
わち、ゼロ)は論理積(AND)処理される。加算と減
算を正しくするだけでなく、長いチェーンの比較は正し
いステータスをも反映する。
【0036】好適実施例は、高精度計算で使用するため
の、より包括的でコスト効率の良いマイクロプロセッサ
を提供する。好適実施例の構成と配置は、乗算、シフ
ト、演算、および論理のすべての動作に対して一貫した
仕方でデータを見る。この実施例の構成と配置は、デー
タを表現するために使用されるビット数に対して制約は
ほとんど無く、プログラムコードは16ビットから51
2ビットを含むワードチェーンまでのデータ長に対する
動作で本質的に同じである。単一ワードの動作またはワ
ードチェーンの動作を実行するために必要とされるプロ
グラムコードは大体同じであり、これらのプログラムコ
ードはコンパクトである。
【0037】特に、好適実施例のハードウェア乗算器は
256×256ビットまでの乗算を行って512ビット
の積を得ることの非常に効率的で簡単なプログラム制御
を提供する。命令実行時間は、データチェーン内のワー
ド数とともに線形に伸び、ソフトウェアのオーバヘッド
コストはほとんど無いか、またはまったく無い。
【0038】好適実施例は、従来のマイクロプロセッサ
のように単一または二重の累算器を使用するのではなく
て、32ワード(ワード当たり16ビット)の対になっ
た累算器レジスタファイル(図1のAC(0)−AC
(31))を設ける。更に、この累算器レジスタファイ
ルのアドレス指定をするように動作する開示されたプロ
セッサのアドレスユニット(図1の14)に独特の特徴
が設けられている。
【0039】好適実施例によれば、アドレス指定モード
は間接アドレス指定、すなわち、命令のアドレス部にメ
モリ記憶ロケーションの間接アドレスが入っているアド
レス指定の方法である。更に詳しく述べると、2ビット
のアドレスポインタが4個の5ビットアドレスレジスタ
(図7の49)の一つを参照、すなわちポインティング
するので、命令の中にはリザーブド間接アドレスビッ
ト、2ビットしか必要でない。
【0040】この累算器レジスタファイルの機能を拡張
するために、ロード、記憶、加算、および減算のような
主要な命令サイクルによって、対応する5ビットのアド
レスレジスタが事前にインクリメントまたはデクリメン
トする。これにより、2ビットのアドレスポインタの4
個の状態の各々に対する3個の一時レジスタのアドレス
のゼロオーバヘッドの操作が可能となる。
【0041】累算器レジスタファイルは、多重ワードチ
ェーンのデータの自然累算記憶も行う。すなわち、累算
器レジスタファイルの中に32個以下の16ビットワー
ドを保持することができる。ワードチェーンに対するデ
ータ動作に対して特殊アドレス制御(図7の70)が行
われ、累算器アドレスレジスタ(図7の49)がチェー
ンの最下位ワード(LSW:least−signif
icant−word)をポインティングする。チェー
ン命令がマイクロプロセッサによって実行されるとき、
チェーンの中の次のデータワードに対して準備するため
に、このアドレス参照はコピーされた後、事後にインク
リメントされる。したがって、チェーンのLSWに対す
るアドレス参照は累算器アドレスレジスタの中に維持さ
れ、このLSWアドレス参照は、データの同じチェーン
を使用する後続のチェーン動作のためにチェーンの初め
に急速に戻る(「スナップバック」する)。
【0042】累算器レジスタファイルはまた、メモリの
スラッシングを生じることなく非破壊動作をプログラミ
ングすることができる。これは累算器レジスタファイル
の中のレジスタを対にして(16対のレジスタで、合計
32個のレジスタ)、累算器アドレス毎に対になった2
ワードの記憶装置を設けることにより、達成される。た
とえば、合計32個のレジスタで、16対のレジスタが
設けられる。
【0043】累算器レジスタファイルのアドレス指定を
行うとき、ほとんどの命令はアドレス指定されたレジス
タ対の中の一方のレジスタを出力オペランドレジスタと
して機能するように割り当て、アドレス指定されたレジ
スタ対の中の他方のレジスタを入力オペランドレジスタ
として機能するように割り当てる。命令によるこのレジ
スタ割当てによって、単一ワード長のデータと多重ワー
ド長のデータチェーンの両方に対して非破壊または破壊
の動作を行うことが可能になるとともに、同時に減算の
ような動作の順序を交換するゼロオーバヘッドの手段が
得られる。
【0044】この実施例の対になった32ワードの累算
器レジスタファイルのもう一つの利点は、高速のチェー
ンテーブルルックアップを行えることであり、これはC
プログラミング言語のケースステートメントのような、
デコーディングアルゴリズム、アレー操作、およびアレ
ー決定ツリーに対して非常に有用である。通常、高速マ
イクロプロセッサで見られるパイプライン遅延により、
テーブルルックアップ命令は煩わしいものとなる。これ
は、テーブルルックアップ毎に、プログラムパイプライ
ンをクリアした後、再設定しなければならないからであ
る。
【0045】累算器レジスタファイルのアドレス指定の
本好適実施例の特殊制御では、16個の異なるアドレス
のテーブルルックアップを行うことが可能であるので、
ワードルックアップ当たり平均1命令サイクルで16ワ
ードのデータのリストを生じることができる。
【0046】拡張精度の処理 好適実施例では、固定ワード長を使用しつつ、高性能の
拡張精度の処理を提供するために、特殊ハードウェアが
設計された。これらのハードウェアの構造について、以
下本セクションと以後のセクションで詳細に説明する。
【0047】チェーン命令は、デフォルトにより、チェ
ーンの長さ値についてチェーンレジスタを参照する。次
のチェーン命令に直接の長さ値を送る反復(REPEA
T)命令を先行させることにより、このデフォルト状態
を無効にすることができる。これにより、同じルーチン
で二つの異なるチェーン長さに対して動作するとき、コ
ード効率に対する実際的な利点が得られる。デフォルト
参照の場合、チェーン長を参照するための実行オーバヘ
ッドは無い。
【0048】累算器レジスタファイルは、ともにデータ
ワードの多重ワードチェーンによって表現される1個の
オペランドと1個の結果に対する一時記憶を提供するた
めに必要である。累算器ブロックは実際には、各々がデ
ータストリングを記憶するための多重レジスタをそなえ
る二つの異なる累算器で構成される。この構成により、
ワード当たり1クロックサイクルのみ(各々がnワード
長の3個のチェーンに対してnサイクル)必要とするい
くつかの命令に対して真の三つのオペランド操作が行わ
れる。
【0049】ALU動作のため記憶されたオペランドを
アドレス指定するために、メモリアドレスユニットに対
する特殊制御を付加しなければならず、また同様の機能
を累算器レジスタファイルに対して設けなければならな
い。第一のワードがフェッチされた後、特殊制御がアド
レスを自動的にインクリメントする。間接アドレス参照
の場合は、間接レジスタに記憶された間接値がコピーさ
れ、完全なチェーンを読取るため第一の取得の後、コピ
ーはインクリメントされる。レジスタに記憶された初期
間接参照は変えられず、チェーンの最下位ワードが永久
的に(プログラムによって明示的に変更されるまで永久
的に)参照される。
【0050】単一のデータワード動作に対して、演算と
ステータス抽出とを正しく統一されたものとするため
に、けた上げ出力ビットは次のワードの計算のけた上げ
入力と結合し、ワードステータスビット(ゼロに等し
い)を論理積(AND)処理する必要がある。加算/減
算を正しくするだけでなく、長いチェーンの比較は正し
いステータスをも反映する。
【0051】ALUに含まれるのはハードウェアの単一
サイクル乗算器であり、これは二つの16ビットオペラ
ンドを受け入れ、32ビットの積を発生する。乗算命令
を加算のような動作と一貫した仕方で働かせるために
は、数個の増強を行わなければならない。乗算器は、単
一ワードの16ビットの乗数オペランドに多重ワードチ
ェーンで表現される被乗数オペランドを乗算するように
設計される。結果として正しい数値の答えが得られるよ
うに数個の特徴が含められた。第一に、結果として得ら
れる積は被乗数オペランドに対して幅が1ワード余分に
なっている。被乗数オペランドの長さはチェーンレジス
タ/カウンタによって制御されるので、すべての「チェ
ーン」乗算に対して余分の1サイクルを付加しなければ
ならない。これは、好適実施例では、16×16ビット
の動作は余分のサイクルを必要としないが、チェーン乗
算とバレルシフト動作は最後の累算のために付加的な1
サイクルを必要とするということを意味する。
【0052】乗算器はオペランドを符号付きまたは符号
なしと解釈することができるので、ストリング乗算では
最後を除くすべてのワード乗数が符号なしモードとなる
ように強制しなければならない。更に、乗算器はバレル
シフタとしても使用され、このインプリメンテーション
は1ビットから16ビットの長いデータチェーンに対し
てバレルシフトを行う。
【0053】[従来の技術]で説明したように、チェー
ンの概念は新しいものではなく、他のプロセッサは与え
られた命令を所定回数反復する機構をそなえている。デ
ータメモリアドレスの事後変更を行う、けた上げ付き反
復加算はチェーン動作を有効に実行する。好適実施例は
より包括的であり、高精度計算のための非常に効率的な
コードを提供する。これは、すべての乗算、シフト、演
算、論理の動作に対して首尾一貫しており、16ビット
から512ビットのストリングまでのデータ幅に対して
正しいステータスを維持する。単一の動作またはチェー
ン動作を実行するためのコードは同一であり、コンパク
トである。特に、ハードウェア乗算器の動作は、256
ビット×256ビット=512ビットの積までの乗算の
非常に効率的で簡単なプログラム制御を提供する。これ
には、多くがハードウェア乗算器をそなえていないため
にストリング乗算に取り組まない現在のインプリメンテ
ーションに比べて明確な利点がある。更に、多くの公知
のシステムでは、複雑な「部分乗算」アルゴリズム、お
よび非効率なコードと実行を使用することにより、固定
ハードウェア乗算器を使用して拡張精度の乗算を行って
いる。
【0054】プロセッサのアーキテクチャ 図1および図2に示すように、本好適実施例によるプロ
セッサ10には、プログラム−データメモリブロック1
1、データメモリブロック12等の多数の主要な部分ブ
ロックが含まれている。主要な部分ブロックには、上記
の計算ユニット(computational−uni
t)すなわちCU13、上記のデータメモリアドレスユ
ニット(data−memory−address−u
nit)すなわちDMAU14、プログラムカウンタユ
ニット(PCU:program−counter u
nit)15、および命令デコーダ16が含まれる。他
の機能は、反復またはチェーンカウンタレジスタ17、
ステータスレジスタ18、二つのタイマ19と20、割
込み論理回路21、および周辺拡張インタフェース22
によって与えられる。
【0055】17ビットのデータバス(DB)23はプ
ロセッサ10の中の機能ブロック相互間の通信を提供す
る。プロセッサ10の中のほとんどのレジスタはDB2
3への読取りアクセスと書込みアクセスとをそなえてい
る。不必要な電力消費を避けるためと、最大論理伝搬時
間を与えるために、バスドライバ(図示しない)は、不
必要な電力消費を避けるため、そして最大の論理伝搬時
間を与えるために、静的デバイスである。プロセッサ1
0の最小命令周期は約100nsであり、10MHzの
プロセッサクロック(図示しない)が設けられている。
【0056】図1のデータメモリ12は複数の17ビッ
トの並列ワードとして構成されている。ワード数はプロ
セッサ10の使用用途にしたがって変化するが、256
ワードから2048ワードの範囲が代表的なものであ
る。図1には、1152ワードが示されている。DMA
U14によって与えられる各アドレス51により、デー
タの17ビットがアドレス指定される。これらの17ビ
ットには、実行されつつある命令に応じて、多数の異な
る仕方で動作が加えられる。ほとんどの命令の場合、こ
のデータは16ビットのワードフォーマットに変換され
る。LACBおよびSACBのような2バイト命令で
は、プロセッサ10はバイトフォーマットとも呼ばれる
8ビットのワードフォーマットでデータを読み書きす
る。このバイトフォーマットモードでは、プロセッサの
ハードウェアはアドレス指定された16ビットのワード
の上位バイトまたは下位バイトをを読み書きする。そし
てフェッチされたバイトはDB23上で右詰めされる。
【0057】フラグデータモードでは、命令はフェッチ
されたワードの17番目のビットに対してだけ動作す
る。データメモリ12のすべての読取りに対して、17
番目のビットは常に読取られた後、図2のステータスレ
ジスタ18のMTAGビットにロードされるので、ワー
ドデータまたはバイトデータのタグ付けを行うことがで
きる。バイトモードの場合、連続した2バイトが同じタ
グと結合される。タグ付きデータは、環状バッファをエ
ミュレートするために、FIR、FIRK、COR、お
よびCORK命令によって使用される。ステータスレジ
スタのMTAGビットは分岐/手続き呼出し命令に対す
る状態(condition)として試験することもで
き、あるいは他の試験状態および他のフラグと組み合わ
せて新しい状態を生成することができる。
【0058】図3は図1のCU13を更に詳細に示す。
CU13には、17ビット×17ビットの重複走査乗算
方式(Booth’s algorithm)の乗算器
30と16ビットのALU31とが含まれている。乗算
器30のために4個のシステムレジスタが働いている。
すなわち、16ビットの乗数レジスタ(MR:mult
iplier register)32、16ビットの
書込み専用被乗数入力33、32ビットの乗算器出力の
中の上位16ビットを保持する16ビットの上位ワード
レジスタ(PH)34、32ビットの乗算器出力の中の
下位16ビットを含む下位ワード出力25、および4ビ
ットのシフト値レジスタ(SV)35である。
【0059】ALU31の16ビット出力50は32ワ
ードロケーションの累算器レジスタファイル36の一つ
の16ビットロケーションに記憶される。累算器レジス
タファイル36はALU31に一つの16ビットオペラ
ンド(この一つのオペランドは累算器レジスタファイル
の中にある32ワードの中のアドレス指定された1ワー
ドであるか、またはそれのオフセットである)を供給す
るように動作する。あるいは、累算器レジスタファイル
36はALU31に二つの16ビットオペランド(これ
らの二つのオペランドはともにアドレス指定された累算
器レジスタファイルワードとそれのオフセットである)
を供給するように動作する。
【0060】乗算器30はプロセッサ10の単一の命令
サイクル内に17ビット×17ビットの2の補数乗算を
実行する。乗数オペランドと被乗数オペランドの一方ま
たは両方の17番目のビットを正の値に設定する(すな
わち、符号付きオペランド)ように強制することもでき
るし、あるいは乗数オペランドと被乗数オペランドの一
方または両方の17番目のビットは16番目のビットの
2値数に等しい2値数となる(すなわち、符号なしオペ
ランド)ように強制することもできる。
【0061】結果として得られる32ビットの積の下位
16ビットは、同じ命令サイクルの間にALU31に多
重化される。そしてこの16ビットの積は、累算器レジ
スタファイル36の中にあるワードレジスタAC(0)
−AC(31)にロードされるか、またはワードレジス
タAC(0)−AC(31)と一緒に算術的に組合わさ
れる。32ビットの積の上位16ビットは、命令サイク
ルの終わりにPH34にラッチされる。
【0062】図1のデータメモリから得られる乗算器3
0のための被乗数オペランドは、累算器36からのレジ
スタワードAC(0)−AC(15)であるか、または
それのオフセットレジスタワードAC(16)−AC
(31)である。乗算器30のための乗数オペランド
は、16ビットのMR32から与えられるか、または4
ビットのSV35から与えられる。MR32はこの乗数
オペランドを記憶する。
【0063】バレルシフト命令の場合は、乗数オペラン
ドは、4ビットのSV35を入力として使用する4ビッ
ト−16ビットのデコードされた値である。たとえば、
4ビットのSV35の中に16進値の7Hがあると、2
進乗数オペランド00000000 1000 000
0となり、16ビットの被乗数と32ビットの積との間
に7ビットの左シフトが生じる。
【0064】3個のレジスタ(PH34、MR32、お
よびSV35)はすべて、図1のデータメモリ12から
ロードすることができ、これらのレジスタの内容はメモ
リ12に記憶することができる。更に、データは累算器
レジスタファイル36のレジスタAC(0)−AC(3
1)とPH34との間で直接交換することができる。長
い定数、短い定数の両方ともプログラムメモリ11から
MR32に直接ロードすることができる。被乗数値はD
B23から書込み専用被乗数レジスタ33にラッチされ
る。この被乗数値は読み取ったり、メモリまたはシステ
ムレジスタに転送したりすることはできない。
【0065】ALU31がデータを算術的に加算、減
算、または比較するCU13の中のロケーションである
という点で、図3のALU31はCU13の中心であ
る。更に、データに対する論理動作もALU31の中で
生じ得る。ALU31のワード長は16ビットである。
しかし、ほとんどの演算/論理命令は16ビットの多数
のワードを含むワードチェーンに対しても動作すること
ができる。32個の16ビット記憶レジスタAC(0)
−AC(31)を含む累算器レジスタファイル36は、
最小実行時間および最小プログラム制御コードに関して
ALU31の能力を増強する。
【0066】ALU31は二つの入力37、38をそな
えている。これは図3ではA、Bとも表されている。入
力37、Aには第一のマルチプレクサ39が含まれてお
り、入力38、Bには第二のマルチプレクサ40が含ま
れている。
【0067】マルチプレクサ39は5個の入力の中の一
つを選択する。すなわち、「オールゼロ」入力41、P
H34から与えられる入力42、DB23から与えられ
る入力43、乗算器30のPL出力25から与えられる
入力44、または累算器レジスタファイル36のオフセ
ット出力46すなわちAAから与えられる入力45を選
択する。マルチプレクサ40は「オールゼロ」入力41
または、累算器レジスタファイル36から与えられるA
B出力47を選択する。「オールゼロ」入力41は、転
送動作とユニタリ(unitary)動作のために必要
であり、電力消費を最小にするためのデフォルト値とし
ての役目も果たす。
【0068】マルチプレクサ39へのDB23の入力4
3は、データRAM12からのメモリ値と、プログラム
メモリオペランドのような定数値をALU31に転送す
るために使用される。マルチプレクサ39へのPH34
の入力42とPL25の入力44とはALU31の乗算
−累算動作に使用される。
【0069】累算器レジスタファイル36には二つの出
力46、47が含まれている。これは図3ではAA、A
Bとも表されている。これらの二つの出力46、AAお
よび47、ABはALU31に接続され、累算器参照と
オフセット累算器参照とをそれぞれALU31に与え
る。
【0070】ALU31によって支援される動作には、
加算、減算、およびロード(ゼロへの加算)の演算動
作、AND、OR、XOR、NOT、SHIFTL、お
よびSHIFTRの論理動作、ならびに累算器レジスタ
ファイル36の中にある値を破壊することなく定数また
はメモリ値との比較を行う比較動作が含まれる。
【0071】累算器レジスタファイル36はAC(0)
からAC(31)と呼ばれる32個のレジスタで構成さ
れ、各レジスタは16ビットのレジスタである。累算器
レジスタファイル36に対するアドレスポインタを記憶
するために、ACP(0)からACP(3)と呼ばれる
4個の5ビットポインタレジスタ49が設けられる。各
ACPポインタレジスタ49の記憶内容は、直接参照、
すなわち、16個のACレジスタAC(0)−AC(1
5)の中の一つに対するアドレスとして、または数16
だけオフセットされた直接参照をそなえるオフセットA
CレジスタAC(16)−AC(31)に対する間接参
照として使用される。すなわち、レジスタAC(0)は
アドレス16にオフセットレジスタを有し、レジスタA
C(1)のオフセットはレジスタアドレス17である等
である。レジスタAC(0)−AC(31)を含むレジ
スタブロックは環状であるので、すなわちアドレス31
がアドレス32にインクリメントされるときアドレス0
になるので、レジスタ16−31のオフセットはそれぞ
れレジスタ0−15である。
【0072】プログラム命令に応じて、累算器レジスタ
ファイル36の出力46、AAと47、ABの一方また
は両方が使用される。いくつかの命令は、出力46、A
Aだけを参照し、出力46、AAがフェッチされるのと
同時にフェッチされるオフセット出力47、ABを使用
したり、変更したりすることができない。他の命令は、
命令ワードの中に選択フィールドが設けられている。一
例は“oa”操作コード(opcode)ビットであ
る。これらの後者の命令は、列アドレス指定の向き、し
たがって、出力とオフセット出力レジスタのソースまた
は順番を交換することができる。また、いくつかの命令
は、ALU出力50を累算器レジスタAC(0)−AC
(15)に、またはそのオフセット累算器レジスタAC
(16)−AC(31)に書込むように制御することが
できる。
【0073】累算器レジスタファイル36は、多数の中
間のメモリのロードと記憶の動作を不要にするワークス
ペースを提供する。更に、プロセッサ10に対する命令
セットには、すべての累算器レジスタファイル参照命令
に対する2ビットのフィールド、すなわちビットスイッ
チが含まれているので、4個のポインタレジスタ49の
中の1個に対して直接参照を行うことができ、したがっ
て、単一累算器レジスタの設計でしばしば生じるメモリ
スラッシングが無くなる。
【0074】累算器レジスタファイル36に対するアド
レスは4個のACPポインタレジスタ49の中の1個に
記憶され、ポインタレジスタACP(0)−ACP
(3)に対する直接参照はすべての累算器参照命令の2
ビットの“ap”フィールドで行われる。SAPn命令
がACP(n)レジスタの内容をメモリ12に記憶し、
LAPn命令がメモリ12からACP(n)レジスタに
ロードする。AKACP命令とLKACP命令が現在の
ACP値に5ビットの定数をそれぞれ加算またはロード
する。
【0075】ACPレジスタ49のために、5ビットの
プロセッサ(図7の80)が働いている。この5ビット
のプロセッサは、長いデータチェーンと結合された、ま
たはデータリスト上のリロケート動作と結合された反復
動作のための累算器アドレスの効率的な順序付けを行
う。多重ワードのデータチェーンで動作するとき、チェ
ーンの中のLSWをフェッチするためにACPレジスタ
49からアドレスがコピーされる。チェーンの中の残り
のワードをフェッチするために、コピーされたアドレス
は以後反復してインクリメントされる。これにより、こ
の特定のACPレジスタ49に記憶されたアドレスは変
わらずに残され、このACPレジスタの中の値はワード
チェーンのLSWのロケーションをまだ指している。そ
の結果、このACPレジスタはこのワードチェーン上の
後続の動作に対する用意ができる。
【0076】累算器参照命令でACPレジスタが累算器
レジスタファイル36によって使用される前に、プロセ
ッサ10はACPレジスタ49の中の値を値+1だけ、
または値−1だけ事前に変更することができる。このユ
ーティリティにより、たとえば、事後変更で生じるソフ
トウェアパイプライン効果を避けることにより、累算器
レジスタファイル36のアドレス処理のソフトウェアオ
ーバヘッドが最小となる。
【0077】図4は、データメモリ12にアドレス51
を与えるように動作するDMAU14を示す。DMAU
14には、加算、減算、および比較の機能を行う専用の
ALU52、3個の専用アドレスレジスタ53(R5
INDEX)、54(R6PAGE)、および55(R
7 PGSTK)、ならびに5個の汎用レジスタ56−
60(R0−R4)が含まれている。DMAU14はC
U13と並列にアドレス51を発生するので、高プロセ
ッサスループットが得られる。
【0078】DMAU14は五つのアドレス指定モー
ド、すなわち直接アドレス指定モード、事後の変更が可
能な間接アドレス指定モード、および三つの相対アドレ
ス指定モードを通してデータメモリ12のアドレス指定
を行うことができる。三つの相対モードは、(1)R6
−PAGEに対して相対的な即時〜短いアドレス指定モ
ード(R6−PAGE+7ビット(128バイトまたは
64ワード))、(2)レジスタベースに対して相対的
なR5−INDEXによるアドレス指定モード(間接レ
ジスタ+R5−INDEX)、および(3)レジスタベ
ースに対して相対的な長い〜中間のアドレス指定モード
(間接レジスタ+16ビットオフセット)である。
【0079】事後変更付きの間接を除くすべてのアドレ
ス指定モードに対して、ワードチェーン命令が実行され
るとき、ワードチェーンのLSWをフェッチするために
アドレス51の一時的コピーが使用される。命令サイク
ルの次のシーケンスにわたって、ワードチェーンの残り
のワードをフェッチするためにこの一時的アドレスコピ
ーが自動インクリメントされる。アドレス51のこの順
次増大は一時的であるので、すべてのレジスタ55−6
0は変化しないままであり、まだメモリ12のLSWを
参照している。
【0080】事後変更付きの間接アドレス指定モードを
使用するチェーンフェッチは、ワードチェーンを含むプ
ロセッササイクル毎に、変更されたアドレス51を間接
レジスタに書き戻すように動作する。これにより間接レ
ジスタ内のアドレスは、そのアドレスがワードチェーン
の中のMSWの一つ先であるようなデータワードを指
す。
【0081】図5は、図2においてプログラムメモリ1
1に対するアドレス61を発生するように動作するPC
U15を示す。ROM11のアドレス61をインクリメ
ントし、ロードするために、16ビットのALU62が
設けられている。2個のアドレスレジスタPC63とD
P64とは、ROMプログラムアドレス61をPC63
に、データポインタアドレスをDP64に記憶するよう
に動作する。
【0082】手続き呼出しと割込みで、PC63の内容
がPCスタックにセーブされる。PCスタックには、ス
タックの一番上にある一つのハードウェアレジスタ(図
示しない)と、それに続くソフトウェアスタックが含ま
れている。このソフトウェアスタックは、図4のレジス
タR7−PCSTKをスタックポインタとして間接モー
ドで使用して、データメモリ12によって与えられる。
その結果、ソフトウェアによって定義される深いスタッ
クが、ほとんど実行オーバヘッド無しに与えられる。
【0083】DP64の内容は、LUAAおよびLUA
Mのようなルックアップテーブル命令の間に累算器レジ
スタファイル36からロードされ、長いチェーン定数の
フェッチの間にDB23を介してPB24からロードさ
れる。DP64の内容は、データメモリ12に記憶する
ことができる。外部アクセスから保護されるべきプログ
ラムアドレス範囲を検出するために、プログラム検出論
理回路66がPCU15に含まれている。
【0084】図6および7は図3に大体似ているが、デ
ータチェーン操作を示す。図1−5で説明したマイクロ
プロセッサの構成と配置の価値のあるユーティリティ
は、データチェーンの操作、すなわち、多数の16ビッ
トワードのリストとして、またはシーケンスとしてデー
タを操作することである。データのチェーン操作には、
すべての演算命令、論理命令、および転送命令が含まれ
る。チェーン命令は、チェーンのLSWで始まり、チェ
ーンのMSWで終わるチェーンに対して動作する。たと
えば、図6の累算器レジスタファイル36では、9ワー
ドのチェーンのLSWはレジスタAC(3)に記憶さ
れ、そのMSWはAC(11)に記憶されている。
【0085】データチェーン動作には3個のオペランド
が関与する。たとえば、2個の入力おと1個の出力オペ
ランドである。図1−5のプロセッサ10はこれらの3
個のオペランドの各々に対して3個の異なる記憶ロケー
ションをアドレス指定することができる。
【0086】たとえば、アドレスまたはポインタ制御5
1を与えるためにDMA14とそれのALU81とを使
用して、データ記憶装置12の中で被乗数オペランド7
2をアドレス指定することができる。第二の入力すなわ
ち加数オペランドとALU31からの出力オペランド
は、間接アドレス指定を使用し、ポインタACPレジス
タ49を含む図7の累算器ポインタ(accumula
tor pointer)ユニット70とそれのALU
80によってアドレス指定することができる。第二の入
力オペランドと出力オペランドとは、ACP70により
対として、すなわち、累算器レジスタAC(0)−AC
(15)とそれと対になったオフセット累算器AC(1
6)−AC(31)としてアドレス指定することができ
る。たとえば、図6のレジスタ対AC(13)とAC
(29)参照。
【0087】図1のチェーンレジスタカウンタ17は、
整数個の16ビットワードとしてチェーンの長さを記憶
し、制御するために使用される。チェーン命令または動
作の場合、図1のDMAU14と図7のACP70とは
それぞれ、データメモリ12と累算器レジスタファイル
36に対するチェーンアドレスをLSWから始めて、自
動的にインクリメントする。これにより、メモリ12と
累算器36に含まれている2ワードチェーンを構成する
すべてのワードまたは値が順次読み出される。N個のワ
ードをそなえたチェーンを操作するチェーン命令では、
ハードウェア乗算器30の積出力を構成するN+1個の
ワードを累算し、転送するために、プログラムシーケン
スに余分なサイクルカウントを付加する必要がある。
【0088】図1、2、3、6、7に示したALU31
と乗算器30とは、16ビットワードチェーンの操作が
行えるようにするための制御を行う。ALU31は自動
的にその16段目のけた上げ出力を伝搬した後、次位の
チェーンワード動作に対する次のプロセッササイクルで
ALU31へのけた上げ入力としてこれを使用する。ま
たEQUAL−TOステータス状態がラッチされ、次位
のワード動作に伝搬され、次のワードステータスとAN
Dがとられる。符号オーバフローの最終ステータスは、
最後、すなわちMSWが動作を受けるまでラッチされな
い。
【0089】ハードウェア乗算器30には、最初の部分
積に対する接続71が設けられている。各乗算動作の初
めに、入力71はゼロにセットされる。しかし、2番目
のサイクルからN番目のサイクルまでは、最後のワード
乗算の上位16ビットが接続71に送られる。これによ
り、N+1個の命令サイクル内にNワードと1ワードの
乗算でN+1ワードの積が発生し、ソフトウェアのオー
バヘッドは無い。
【0090】チェーン処理とプロセッサ動作 図6および図7を参照して、好適実施例の動作の一例を
(A)(B)+(C)の数学動作により説明する。この
動作で、(B)項には8ワードのチェーン(128ビッ
ト)の被乗数が入っている。この(B)項に(A)項の
1ワード(16ビット)の乗数を乗算する。結果として
得られる積(A)(B)を9ワードのチェーン(144
ビット)が入っている(C)項の加数に加算する。
【0091】好適実施例によれば、3個のデータ項
(A)、(B)、および(C)は図6および図7で次の
ように記憶される。(1)8ワードの(B)項の被乗数
はデータメモリ12に、そのLSWがメモリアドレスM
CNDに、そのMSWがメモリアドレスMCND+7に
入るように記憶される。(2)9ワードの(C)項の加
数は累算器レジスタファイル36のレジスタAC(0
3)からレジスタAC(11)までに記憶される。その
LSWのアドレス03はACP(2)の内容により間接
的にポインティングされる。(3)1ワードの(A)項
の乗数は乗数レジスタ32に記憶される。更に、チェー
ン長8が、8ワードの(B)項の被乗数に対する図2の
チェーンレジスタ17にセットされる。
【0092】この数学動作に対する命令ニーモニックは
MPAL.A2S.MCNDであり、コードに対する2
ワード、操作コード(opcode)の1ワード、およ
び1ワードのMCND参照である。
【0093】この命令のMPAL部分は、メモリ12に
乗数レジスタ32を乗算すべきこと、そしてその積をレ
ジスタACP(2)がポインティングする値に加算すべ
きことを指定する。命令のA2S部分は、9ワードの
(C)項の加数を記憶するため、そして(A)(B)+
(C)の動作の最終結果を記憶するために、動作のチェ
ーンモードを示し、ポインタレジスタACP(2)に記
憶されているアドレスがポインティングする累算器レジ
スタファイル36のレジスタを使用すべきことを指定す
る。命令のMCND部分は、8ワードの(B)項のチェ
ーンのLSWに対するメモリ12の直接の参照を指定す
る。
【0094】上記のニーモニックの実行は9命令サイク
ルで行われる。Nワードの入力チェーンからN+1ワー
ドの出力チェーンを作成する乗算またはバレルシフト動
作に対して、余分な1サイクルが許容される。加算、転
送、および論理動作に対しては、8ワードのチェーンに
対して動作するためには8命令サイクルだけが必要とさ
れる。
【0095】(A)項の乗数をMPRと表す。(B)項
の被乗数をM7−M0と表す。そのMSWであるM7が
データメモリ12の中のアドレスMCND+7に記憶さ
れる。(C)項の加数をA8−A0と表す。そのMSW
であるA8が累算器レジスタファイル36の中のアドレ
ス11に記憶される。このように仮定すると、これらの
9命令サイクルを実行することは次のように表すことが
できる。
【数1】MPRxM7::M6::M5::M4::M
3::M2::M1::M0=P8::P7::・・・
P1::P0, A8−A0=(P8−P0)+(A8+A0)
【0096】上記の型のチェーン動作を支援する図6お
よび図7の構成および配置の様相には次のような事実が
含まれている。(1)累算器レジスタファイル36のレ
ジスタAC(0−15)を構成する累算器は、ALU8
0を通る命令サイクルの遅延を補償するために遅延ポイ
ンタ参照をそなえたデュアルポート読出し/書込み設計
になっている。(2)累算器レジスタAC(0−15)
とそれらに対応するオフセット累算器レジスタAC(1
6−31)により、2個のオペランドのアドレス指定を
単一のポインタレジスタACP(0)−ACP(3)で
行うことができる。累算器レジスタとそのオフセットレ
ジスタはALUオペランドに対する入力として、出力と
して、または入力と出力の両方として使用することがで
きる。(3)チェーンのワードを連続的に読出すために
ポインタレジスタACP(0)−ACP(3)を自動的
にインクリメントすることは、将来のチェーン動作の
間、チェーンのLSWを正しく将来参照できるようにA
CPレジスタを不変のままにしておく一時的なプロセス
である。
【0097】拡張された符号ワードでチェーンを拡張で
きるという本実施例の能力により、非常に効率的なNワ
ードチェーンとMワードチェーンとの乗算をソフトウェ
アで実現することができる。この革新的なハードウェア
とアーキテクチャを利用するために必要なプログラミン
グは、上記の開示にかんがみて、通常程度の当業者の能
力の範囲内に充分入っているものである。
【0098】MSP58P70のアーキテクチャ 本好適実施例はテキサスインスツルメント社(Texa
s Instruments,Inc.)製のMSP5
8P70に対応する。MSP58P70は強力な命令セ
ットをそなえている。命令は個々にビット、バイト、ワ
ード、ワードのストリング、またはバイトのストリング
のアドレス指定を行うことができる。プログラムメモリ
は17ビット幅であり、17ビット幅全体が命令セット
のコーディングに使用される。プログラムは内部プログ
ラムメモリから実行される。外部メモリからの実行はで
きない。MSP58P70のプログラムとデータメモリ
はともに、内部ブロックに限定され、外部に拡張できな
い。本好適実施例では、プログラムメモリはワンタイム
プログラマブル(OTP:One Time Prog
rammable)ROMであり、32K個の17ビッ
トワードに限定される。その中の2Kは内部テストコー
ドに取っておかれたユーザプログラムがアクセスするこ
とはできない。本好適実施例ではまた、データメモリは
スタティックRAMであり、1024個の17ビットワ
ードに限定される。その中の16ビットは演算値であ
り、17番目のビットはフラグまたはタグとして使用さ
れる。
【0099】MSP58P70命令セット 以下の命令セットの説明は、MSP58P70で命令が
どのようにコーディングされるかを示すために本好適実
施例に含まれている。これらの代表的な命令の構造は好
適実施例の特許請求された特徴を利用するが、もちろ
ん、特許請求された特徴を用いる他の命令セットを設計
することは通常程度の当業者の能力内に充分入ることで
ある。
【0100】好適プロセッサのマシンレベルの命令セッ
トは多数のクラスに分けられる。クラスは主として、メ
モリ、ハードウェアレジスタ、および制御フィールドに
対応するフィールド参照に従って分けられる。以下の説
明では、クラスエンコードビットの割当て、クラスの中
のOPコード値、およびフィールドの簡単な説明を示
す。次表はこれらのフィールドの略語を定義する。
【0101】
【表1】
【0102】メモリ/累算器参照命令(クラス1) このクラスの命令は、データメモリと累算器ブロックと
の間の実行を制御する。演算動作を指定する明示op
(操作)コードフィールドの他に、8ビットのメモリ参
照フィールドが一方の入力オペランドのアドレス指定を
制御し、4ビットのフィールド(クラス1a)または2
ビットのフィールド(クラス1b)が他方の入力オペラ
ンドとして累算器のロケーションを選択する。結果はア
ドレス指定された累算器ロケーションに(またはクラス
1aでacxビット=1の場合にはオフセット累算器
に)書き込まれる。更にopコードでエンコードされた
チェーン制御に応じて(クラス1bではsビットがセッ
トされており、クラス1aでaccフィールド=1
0)、各命令は単一ワード長の動作として、またはチェ
ーンとして取り扱うことができる。
【0103】クラス1aは、累算器とメモリブロックと
の間のロード、記憶、および減算の基本的な四つの命令
を与える。SAC命令で累算器またはオフセット累算器
(acxビット従属)をメモリに記憶することができ
る。LAC命令はacxビットに応じて累算器またはオ
フセット累算器をロードすることができる。ADDまた
はSUB命令はアドレス指定された累算器レジスタから
のメモリを加算または減算し、結果をアドレス指定され
た累算器レジスタに(acx=0)、またはそのオフセ
ットに(acx=1)戻してセーブする。accフィー
ルドによって与えられる4個のコードの中の2個によっ
て、実行の前に累算器レジスタポインタ(ACP)の事
前インクリメントまたは事前デクリメントが行われる。
この事前インクリメントは参照されるACPに対する永
久的な変化であり、更に効率的なワークスペースとして
累算器ブロックの使用を拡張する。事前インクリメント
および事前デクリメントはチェーンモードと組み合わせ
て使用することはできない。
【0104】accフィールドの4個のコードの中の1
個(acc=11)によって、命令は多重サイクルのチ
ェーン命令として取り扱われる。これによって、参照さ
れるACPが永久的に変更されることはない。セクショ
ン2.2.1(段落番号〔0007〕)のチェーン動作
についての説明参照。
【0105】クラス1bの命令にオフセット累算器に対
する参照は無いので、実行オペランドはメモリと累算器
レジスタだけとなる。
【0106】他のすべての制御モード(チェーン、事前
インクリメント/事前デクリメントACP、メモリアド
レス指定モード等)は、論理、バイト、乗算/累算、お
よびバレルシフト型命令に対して設けられる。
【0107】
【表2】
【0108】
【表3】 命令 OP 説明 OR 0 メモリと累算器の論理OR。結果が累算器に戻さ れて記憶される。ALUステータスが変更され る。 AND 1 メモリと累算器の論理ANDをとって、結果を累 算器に記憶する。ALUステータスが変更され る。 XOR 2 メモリと累算器の排他的ORをとって、結果を累 算器に記憶する。ALUステータスが変更され る。 LACB 3 メモリのアドレス指定されたバイトを累算器の下 位8ビットにロードする。累算器の上位バイトを ゼロで満たす。ALUステータスが変更される。 SACB 4 累算器の下位8ビットをメモリに記憶する。デー タバイトがアドレスのlsbに基づいて16ビッ トのメモリワードの中の下位バイトまたは上位バ イトに自動的に送られる。転送ステータスが変更 される。 リザーブ 5 N/a CMPR 6 累算器からメモリロケーションを減算した演算ス テータスをALUステータスビットに記憶する。 累算器の変更は行わない。 LUAM 7 累算器によってアドレス指定されたROMに記憶 されている値をルックアップし、RAMメモリロ ケーションに記憶する。転送ステータスが変更さ れる。 MPtL 8 MRレジスタにメモリを乗算し、積の下位16ビ ットを累算器に転送する。上位16ビットをPH レジスタにラッチする。ALUステータスが変更 される。 LMRsH 9 メモリから符号つきモードでMRレジスタをロー ドする。並行して、累算器からのPHレジスタの 減算も行う。チェーンビットは前のALUステー タス(ACOUT,AEQ0)と「チェーン」す るがチェーンカウンタをロードしない(1回実行 する)。ALUステータスが変更される。 LMRaH 10 メモリから符号つきモードでMRレジスタをロー ドする。並行して、累算器へのPHレジスタの加 算も行う。チェーンビットは前のALUステータ ス(ACOUT,AEQ0)と「チェーン」する がチェーンカウンタをロードしない(1回実行す る)。ALUステータスが変更される。 MpaL 11 MRレジスタにメモリを乗算し、積の下位16ビ ットを累算器に加算する。上位16ビットをPH レジスタにラッチする。ALUステータスが変更 される。 BStL 12 16ビットのメモリ値を左にnビットシフトして (SVreg)、32ビットの結果に入れ、右側 にゼロを満たし、左側にゼロを満たすか、符号を 拡張する(XSGMモード)。下位16ビットを 累算器に転送し、上位16ビットをPHレジスタ にラッチする。ALUステータスが変更される。 BSsL 13 16ビットのメモリ値を左にnビットシフトして (SVreg)、32ビットの結果に入れ、右側 にゼロを満たし、左側にゼロを満たすか、符号を 拡張する(XSGMモード)。累算器から下位1 6ビットを減算し、上位16ビットをPHレジス タにラッチする。ALUステータスが変更され る。 BsaL 14 16ビットのメモリ値を左にnビットシフトして (SVreg)、32ビットの結果に入れ、右側 にゼロを満たし、左側にゼロを満たすか、符号を 拡張する(XSGMモード)。累算器に下位16 ビットを加算し、上位16ビットをPHレジスタ にラッチする。ALUステータスが変更される。 MPsL 15 MRレジスタにメモリを乗算し、累算器から積の 下位16ビットを減算する。上位16ビットをP Hレジスタにラッチする。ALUステータスが変 更される。
【0109】累算器/定数参照(クラス2) これらの命令は、プログラムメモリに記憶された短い
(8ビット)または長い(16ビットまたはn×16ビ
ットのチェーン)定数を参照し、累算器とこれらの定数
との間の演算動作および論理動作を実行する能力を与え
る。RONCOはハーバード型プロセッサであるので、
これらの命令は必要であり、一般的なクラスのメモリ参
照命令とは異なっている。下記に列挙されるサブクラス
2aには、累算器と8ビットの短定数との間の参照が含
まれる。このクラスは、コーディングに1命令ワードし
か必要とせず、実行に1命令サイクルしか必要としない
利点があり、ループカウント、インデックス等のような
制御変数に対して特に有用である。短定数は単一の命令
ワード内でのバイト動作に対する完全な能力をも与え
る。
【0110】サブクラス2bは累算器、およびROMか
らの長定数(非チェーン定数の場合には16ビット、チ
ェーン定数の場合にはn×16ビット)を参照する。ク
ラス2b命令はコーディングするのに2命令ワード要す
る。これらの命令の実行は、長定数が単一ワードである
ときに2命令サイクルであり、nワードチェーンの定数
の場合は2+n実行サイクルである。長定数(16ビッ
ト)と長チェーン定数(n×16ビット)との間の一つ
の大きな相違は、2ワード命令ワードの第二ワードの中
の定数に対して行われる参照である。単一の16ビット
の整数の定数に対して行われる参照は即値である。すな
わち、メモリ内で実際の定数値が第一ワードopコード
に続く。チェーン定数の場合、定数に対する第二ワード
の参照は即値間接であり、これは第二ワードがチェーン
定数の最下位ワードのアドレスであるということを示
す。この定義により、すべての長チェーン定数をテーブ
ルの中に配置することが可能となり、マシンランゲージ
のリスティングの中の参照をより短定数の参照と整合さ
せることができる。
【0111】
【表4】 命令 OP 説明 ADSK 0 8ビットの正定数を累算器に加算し、結果を累算 器に記憶する。ALUステータスが変更される。 LACSK 1 8ビットの正定数を累算器にロードする。ALU ステータスが変更される。 SBSK 2 累算器から8ビットの正定数を減算し、結果を累 算器に記憶する。ALUステータスが変更され る。 CMSK 3 累算器から8ビットの正の値を減算した結果でA LUステータスを変更する。もとの累算器の値は 変更されない。 ORSK 4 8ビットの正定数と累算器との論理ORを求め て、結果を累算器に記憶する。ALUステータス が変更される。 ANDSK 5 8ビットの正定数と累算器との論理ANDを求め て、結果を累算器に記憶する。ALUステータス が変更される。 XORSK 6 8ビットの正定数と累算器との論理XORを求め て、結果を累算器に記憶する。ALUステータス が変更される。 LMRSK 7 8ビットの定数を乗数レジスタ(MR)にロード する。ステータスレジスタで乗数モードを符号付 きモードに変更する。
【0112】
【表5】 命令 OP 説明 ADLK 0 長定数を累算器(または、oa=1の場合にはオ フセット累算器)に加算し、結果を累算器(ac x=0)またはオフセット累算器(acx=1) に記憶する。ALUステータスが変更される。 LACLK 1 長定数を累算器(acx=0)またはオフセット 累算器(acx=1)にロードする。ALUステ ータスが変更される。 SBLK 2 累算器(oa=0)またはオフセット累算器(o a=1)から長定数を減算し、結果を累算器(a cx=0)またはオフセット累算器(acx= 1)に記憶する。ALUステータスが変更され る。 CMLK 3 累算器(oa=0)またはオフセット累算器(o a=1)から長定数を減算することによりALU ステータスを変更する。累算器もオフセット累算 器も変更されない。 ORLK 4 長定数と累算器(oa=0)またはオフセット累 算器(oa=1)との論理ORを求めて、結果を 累算器(acx=0)またはオフセット累算器 (acx=1)に記憶する。ALUステータスが 変更される。 ANDLK 5 長定数と累算器(oa=0)またはオフセット累 算器(oa=1)との論理ANDを求めて、結果 を累算器(acx=0)またはオフセット累算器 (acx=1)に記憶する。ALUステータスが 変更される。 XORLK 6 長定数と累算器(oa=0)またはオフセット累 算器(oa=1)との排他的ORを求めて、結果 を累算器(acx=0)またはオフセット累算器 (acx=1)に記憶する。ALUステータスが 変更される。 LMRLK 7 長定数を符号付きモードで乗数レジスタ(MR) にロードする。ステータスに変更は無い。
【0113】累算器参照(クラス3) これらの命令は転送のため、累算器、場合によっては特
定のレジスタを参照する。いくつかの命令は単一の累算
器オペランドを使用し、他の命令は二つの累算器の値の
間で動作を行うために累算器とオフセット累算器の両方
を使用する。命令ワードの中の“oa”ビットはアドレ
ス指定された累算器とアドレス指定されたオフセット累
算器の向きを逆にする。一般に、oa=1であれば、命
令は単一の累算器オペランド命令に対する入力オペラン
ドとしてオフセット累算器を使用し、両方が使用される
とき二つのオペランドの演算の順序(減算、比較、乗算
/.累算等)を交換する。この規則に対する例外は命令
NEG、NOT、MPACsL、MPACaL、BSA
CtL、MPACtL、BSACsL、およびBSAC
aLである。これらの例外の命令は、逆oa制御(oa
=1−>累算器、oa=0−>オフセット累算器)を使
用する。命令ワードの中のacxビットは結果のデステ
ィネーションを累算器(acx=0)またはオフセット
累算器(acx=1)となるように制御する。
【0114】基本的な累算器演算機能の他に、このクラ
スには累算器ルックアップ命令、および累算器とMR、
SV、またはPHレジスタとの間の数個のレジスタ転送
命令も含まれている。
【0115】すべての累算器参照命令と同様に、チェー
ン動作が可能であるとともに、4個の間接参照される累
算器ポインタレジスタ(ACP:accumulato
rpointer registers)の中の1個の
事前変更が可能である。
【0116】
【表6】 命令 OP 説明 NEG 0 累算器(oa=1)またはオフセット累算器(o a=0)の2の補数を累算器(acx=0)また はオフセット累算器(acx=1)に記憶する。 ALUステータスが変更される。 NOT 1 累算器(oa=1)またはオフセット累算器(o a=0)の1の補数を累算器(acx=0)また はオフセット累算器(acx=1)に戻す。AL Uステータスが変更される。 LUAA* 2 累算器(oa=0)またはオフセット累算器(o a=1)によってアドレス指定されたROMの中 の値をルックアップし、ルックアップ値を累算器 (acx=0)またはオフセット累算器(acx =1)に入れる。ルックアップアドレスはDPレ ジスタで事後インクリメントされる。ALUステ ータスがルックアップ値で変更される。 ZAC 3 累算器(acx=0)またはオフセット累算器 (acx=1)をゼロにする。ALUステータス が変更される。 SBAC 4 累算器からオフセット累算器を減算(oa=0) またはオフセット累算器から累算器を減算(oa =1)し、累算器(acx=0)またはオフセッ ト累算器(acx=1)に記憶する。ALUステ ータスが変更される。 ADAC 5 累算器をオフセット累算器に加算し、結果を累算 器(acx=0)またはオフセット累算器(ac x=1)に記憶する。ALUステータスが変更さ れる。 SHL 6 累算器を左に1ビットシフトし、結果を累算器 (acx=0)またはオフセット累算器(acx =1)に記憶する。Lsbはゼロにセットされ、 msbはけた上げ出力ステータスビットに記憶さ れる。ALUステータスが変更される。 CAC 7 累算器(oa=0)またはオフセット累算器(o a=1)を累算器(acx=0)またはオフセッ ト累算器(acx=1)にコピーする。ALUス テータスが変更される。 XORAC 8 累算器とオフセット累算器との論理排他的ORを 求めて、結果を累算器(acx=0)またはオフ セット累算器(acx=1)に記憶する。ALU ステータスが変更される。 ORAC 9 累算器とオフセット累算器との論理ORを求め て、結果を累算器(acx=0)またはオフセッ ト累算器(acx=1)に記憶する。ALUステ ータスが変更される。 ANDAC 10 累算器とオフセット累算器との論理ANDを求め て、結果を累算器(acx=0)またはオフセッ ト累算器(acx=1)に記憶する。ALUステ ータスが変更される。 SHR 11 累算器(oa=0)またはオフセット累算器(o a=1)を右に1ビットシフトして、結果を累算 器(acx=0)またはオフセット累算器(ac x=1)に記憶する。MSBがゼロにセットされ るか、符号ビットに等しくセットされる(XSG M従属)。ALUステータスが変更される。 SPHAC** 12 累算器から(oa=0)またはオフセット累算器 から(oa=1)積上位レジスタを減算して、結 果を累算器(acx=0)またはオフセット累算 器(acx=1)に記憶する。ALUステータス が変更される。チェーンビットにより、けた上げ 付き減算ステータスが生じる(ACOUT)。 APHAC** 13 累算器に(oa=0)またはオフセット累算器に (oa=1)積上位レジスタを加算して、結果を 累算器(acx=0)またはオフセット累算器 (acx=1)に記憶する。ALUステータスが 変更される。チェーンビットにより、けた上げ付 き加算ステータスが生じる(ACOUT)。 TPHAC** 14 積上位レジスタを累算器に(acx=0)または オフセット累算器に(acx=1)転送する。A LUステータスが変更される。チェーンビットに より、現在のAEQ0ステータスビットとのチェ ーニングが生じる。 XSGN** 15 ステータスレジスタの中のASGNビットを累算 器(acx=0)またはオフセット累算器(ac x=1)の16ビットすべてにコピーする。チェ ーン上では、累算器アドレスが事前インクリメン トされ、累算器アドレスの符号が次の累算器アド レスに拡張される。 ACCOMP 16 累算器からオフセット累算器を減算する(oa= 0)か、オフセット累算器から累算器を減算し (oa=1)、結果のステータスをALUステー タスに記憶する。累算器またはオフセット累算器 のもとの値は変化しない。 リザーブ 17 N/A リザーブ 18 N/A リザーブ 19 N/A TASV 20 累算器(oa=0)またはオフセット累算器(o a=1)をSVレジスタに転送する。転送ステー タスが変更される。 TAPH 21 累算器(oa=0)またはオフセット累算器(o a=1)をPHレジスタに転送する。転送ステー タスが変更される。 TAMR 22 累算器(oa=0)またはオフセット累算器(o a=1)を符号付き乗数モード(ステータスレジ スタのUMビットが0にセットされる)でMRレ ジスタに転送する。転送ステータスが変更され る。 TAMRU 23 累算器(oa=0)またはオフセット累算器(o a=1)を符号無し乗数モード(UMビットが1 にセットされる)でMRレジスタに転送する。転 送ステータスが変更される。 MPACsL 24 MRレジスタに累算器(oa=1)またはオフセ ット累算器(oa=0)を乗算し、オフセット累 算器(oa=1)または累算器(oa=0)から 積の下位16ビットを減算し、累算器(acx= 0)またはオフセット累算器(acx=1)に記 憶する。上位16ビットをPHにラッチする。A LUステータスが変更される。 MPACaL 25 MRレジスタに累算器(oa=1)またはオフセ ット累算器(oa=0)を乗算し、オフセット累 算器(oa=1)または累算器(oa=0)に積 の下位16ビットを加算し、累算器(acx= 0)またはオフセット累算器(acx=1)に記 憶する。上位16ビットをPHにラッチする。A LUステータスが変更される。 BSACtL 26 累算器(oa=1)またはオフセット累算器(o a=0)の値をnビット左にバレルシフトする (SVレジスタ)。32ビットのシフト結果の上 位16ビットをPHに記憶する(msbをXMモ ードビットだけ拡張)。下位16ビットを累算器 (acx=0)またはオフセット累算器(acx =1)に転送する。ALUステータスが変更され る。 MPACtL 27 MRレジスタに累算器(oa=1)またはオフセ ット累算器(oa=0)を乗算し、積の下位16 ビットを累算器(acx=0)またはオフセット 累算器(acx=1)に転送する。積の上位16 ビットをPHレジスタにラッチする。ALUステ ータスが変更される。 BSACsL 28 累算器(oa=1)またはオフセット累算器(o a=0)の値をnビット左にバレルシフトする (SVレジスタ)。上位16ビットをPHに記憶 する。オフセット累算器(oa=1)または累算 器(oa=0)から値の下位16ビットを減算 し、累算器(acx=0)またはオフセット累算 器(acx=1)に記憶する。ALUステータス が変更される。 BSACaL 29 累算器(oa=1)またはオフセット累算器(o a=0)の値をnビット左にバレルシフトする (SVレジスタ)。上位16ビットをPHに記憶 する。オフセット累算器(oa=1)または累算 器(oa=0)に値の下位16ビットを加算し、 累算器(acx=0)またはオフセット累算器 (acx=1)に記憶する。ALUステータスが 変更される。 MPACR 30 MRレジスタに累算器(oa=1)またはオフセ ット累算器(oa=0)を乗算し、結果として得 られる積の丸められた上位16ビットをPHレジ スタにラッチする。 BSAC 31 累算器(oa=1)またはオフセット累算器(o a=0)の値をnビット左にバレルシフトする (nはSVレジスタに記憶されている)。32ビ ットのシフト結果の上位16ビットをPHに記憶 する。
【0117】** これらの命令は、チェーンモードが
選択されたとき、特殊な1ワードチェーンの動作をそな
えている。命令はチェーンカウントを無視し、1回だけ
実行するが、前のチェーン命令のシーケンスとこの命令
の実行がより大きなチェーン動作の一部であったかのよ
うに前の演算動作のけた上げとゼロとの比較動作を維持
する。
【0118】アドレスレジスタ/メモリ参照(クラス
4) クラス4の命令は、アドレスユニット(ADU)に存在
するレジスタファイルに対して動作する。最後の3個の
レジスタ(R5−R7)に特殊な用途(INDEX、P
AGE、およびPCSTK)があっても、クラス4の命
令はすべてのレジスタに一様に適用される。最初の4a
サブクラスは、メモリへの転送とメモリからの転送を行
う。メモリアドレス参照の間接モードでは、どの一つの
補助レジスタも、もう一つの補助レジスタの内容をロー
ドし、記憶するためのアドレスとしての役目を果たすこ
とができる。
【0119】サブクラス4bの命令は参照される補助レ
ジスタとプログラムメモリからの8ビット短定数との間
のいくつかの基本的な演算動作を与える。これらの命令
は、ループ制御のためとソフトウェアのアドレス指定ル
ーチンのために効率的な単一サイクル命令を与えるため
に含まれている。
【0120】サブクラス4cは参照される補助レジスタ
とプログラムメモリからの16ビット定数との間の基本
的な演算動作を与える。これらの命令は、実行するため
に2命令サイクルを必要とする。
【0121】最終ループカウンタ値がゼロとなるように
選択されない場合に、効率的なループ制御を行うため、
INDEXとの比較も設けられている。
【0122】
【表7】 命令 OP 説明 SRx 0 Rxレジスタをメモリに記憶する。転送ステータ スを変更する。 LRx 1 Rxレジスタをメモリに記憶する。転送ステータ スを変更する。
【0123】
【表8】 命令 OP 説明 ArxSK 0 Rxレジスタに8ビットの正整数を加算する。R Xステータスを変更する。 SRxSK 1 Rxレジスタから8ビットの正整数を減算する。 RXステータスを変更する。 LRxSK 2 8ビットの正整数をRxにロードする。RXステ ータスを変更する。 CMRxSK 3 減算のステータス(Rx−8ビット正整数)をS TレジスタのRXEQ0およびRXCOUTビッ トに記憶する。Rxは変化しない。
【0124】
【表9】 命令 OP 説明 ArxLK 0 Rxレジスタに16ビットの正整数を加算する。 RXステータスを変更する。 SRxLK 1 Rxレジスタから16ビットの正整数を減算す る。RXステータスを変更する。 LRxLK 2 16ビットの正整数をRxにロードする。RXス テータスを変更する。 CMRxLK 3 減算のステータス(Rx−16ビット正整数)を STレジスタのRXEQ0およびRXCOUTビ ットに記憶する。Rxの値は変化しない。
【0125】
【表10】 命令 OP 説明 ARx5 4 RxレジスタにR5を加算する。RXステータス を変更する。 SRx5 1 RxレジスタからR5を減算する。RXステータ スを変更する。 LRx5 2 R5をRxにロードする。RXステータスを変更 する。 CMRx5 3 減算のステータス(Rx−R5)をSTレジスタ のRXEQ0およびRXCOUTビットに記憶す る。RxとR5は変化しない。
【0126】メモリ参照命令(クラス5) クラス5の命令は、(クラス1および4により与えられ
る累算器およびRxを除いて)データメモリおよびすべ
てのレジスタへの、そしてそれらからの転送を行う。読
取りと書込みの動作のために参照されるレジスタは、乗
数レジスタ(MR)、積上位レジスタ(PH)、シフト
値レジスタ(SV)、ステータスレジスタ(ST)、ト
ップオブスタック(TOS)、チェーンレジスタ(ST
G)、および4個の累算器ポインタレジスタ(ACP
(3−0))である。データポインタレジスタ(DP)
は、その値がルックアップテーブル命令によって設定さ
れるので、読取り専用である。リピートN(RPTN)
命令は、反復される命令には割り込むことができないの
で、書込み専用である。RET1およびRETN命令は
スタックを突き出すための読取り専用動作であり、スタ
ックはメモリマッピングされるので、このクラスに含ま
れる。フラグメモリを変更する4個のフラグ命令、およ
びメモリにMRを乗算し、結果をPHレジスタに記憶す
る2個のフラグ命令もこのクラスに含まれる。
【0127】
【表11】 命令 OP 説明 SSV 0 SVレジスタの内容をメモリに記憶する。上位1 2ビットにゼロを満たす。転送ステータスが変更 される。 SPH 1 PHレジスタの内容をメモリに記憶する。転送ス テータスが変更される。 SST 2 ステータス(ST)レジスタの内容をメモリ(M TAGを含む17ビット)に記憶する。ステータ スは変更されない。 SSTG 3 チェーン(STG)レジスタの内容をメモリに記 憶し、上位8ビットにゼロを満たす。転送ステー タスが変更される。 SAP0 4 累算器ポインタ(ap:accumulator pointer)レジスタ0をメモリに記憶し、 上位10ビットにゼロを満たす。転送ステータス が変更される。 SAP1 5 累算器ポインタ(ap)レジスタ1をメモリに記 憶し、上位10ビットにゼロを満たす。転送ステ ータスが変更される。 SAP2 6 累算器ポインタ(ap)レジスタ2をメモリに記 憶し、上位10ビットにゼロを満たす。転送ステ ータスが変更される。 SAP3 7 累算器ポインタ(ap)レジスタ3をメモリに記 憶し、上位10ビットにゼロを満たす。転送ステ ータスが変更される。 SMR 8 乗数(MR:Multiplier)レジスタの 内容をメモリに記憶する。転送ステータスが変更 される。 SDP 10 データポインタ(DP)レジスタの内容をメモリ に記憶する。転送ステータスが変更される。 STOS 11 トップオブスタック(TOS)レジスタの内容を メモリに記憶する。転送ステータスが変更され る。 STAG1 12 メモリフラグロケーションに1を記憶する。 STAG0 13 メモリフラグロケーションに0を記憶する。 SF1TAG 14 メモリフラグロケーションにTF1ステータスビ ットを記憶する。 SF2TAG 15 メモリフラグロケーションにTF2ステータスビ ットを記憶する。 LSV 16 シフト値(SV)レジスタにメモリ値をロードす る。転送ステータスが変更される。 LPH 17 積上位(PH:Product High)レジ スタにメモリ値をロードする。転送ステータスが 変更される。 LTOS 18 トップオブスタック(TOS)レジスタの内容を メモリにロードする。 LSTG 19 チェーン(STG)レジスタにメモリ値をロード する。下位8ビットだけがロードされる。転送ス テータスが変更される。 LAP0 20 メモリの値の下位6ビットを累算器ポインタ(a p)レジスタ0にロードする。転送ステータスが 変更される(16ビット値)。 LAP1 21 メモリの値の下位6ビットを累算器ポインタ(a p)レジスタ1にロードする。転送ステータスが 変更される(16ビット値)。 LAP2 22 メモリの値の下位6ビットを累算器ポインタ(a p)レジスタ2にロードする。転送ステータスが 変更される(16ビット値)。 LAP3 23 メモリの値の下位6ビットを累算器ポインタ(a p)レジスタ3にロードする。転送ステータスが 変更される(16ビット値)。 LMR 24 乗数(MR)レジスタにメモリの値をロードし、 乗数符号付きモードをセットする(STレジスタ のUM=0)。転送ステータスが変更される。 LUMR 25 乗数(MR)レジスタにメモリの値をロードし、 乗数符号なしモードをセットする(STレジスタ のUM=1)。転送ステータスが変更される。 MPR 26 MRレジスタに参照されたメモリロケーションを 乗算し、32ビットの積に00008000を加 算して、上位16ビットに丸めを生じる。上位の 丸められた16ビットをPHレジスタに記憶す る。ステータスの変更はない。 MP 27 MRレジスタに参照されたメモリロケーションを 乗算し、積の最上位16ビットをPHレジスタに 記憶する。ステータスの変更はない。 RETN 28 サブルーチンからのリターン。PCSTKレジス タ(R7)によってアドレス指定されるメモリ値 をプログラムカウンタにロードする。 RETI 29 割込みルーチンからのリターン。PCSTKレジ スタ(R7)によってアドレス指定されるメモリ 値をプログラムカウンタにロードする。 RPTN 30 反復(repeat)カウンタにメモリ値の下位 8ビットをロードする。 LST 31 ステータス(ST)レジスタにメモリ値(MTA G付きの17ビット)をロードする。
【0128】やはり好適実施例で使用するように考えら
れているが、特許請求される発明の実施に必要でない他
の特徴および細部は、下記の同時係属出願に開示されて
いる。代理人ファイル番号TI−24705P、出願番
号60/090,668−「ワンタイムプログラマブル
メモリでプログラムデータの機密性を確保するための方
法」(Method for Insuring Se
curity ofProgram Data in
One−Time Programmable Mem
ory)、代理人ファイル番号TI−24707、出願
番号09/305,891−「可変ワード長データメモ
リ」(Variable Word Length D
ata Memory)、および代理人ファイル番号T
I−24708P、出願番号60/090,589−
「チェーン能力をそなえた低コストの乗算器ブロック」
(Low Cost Multiplier Bloc
k with Chain Capability)。
これらはすべて、本出願人の所有になるものであり、本
出願と同時出願日であり、ここに引用することにより本
出願の一部として組み入れられるものである。
【0129】留守番電話装置 可変長のデータメモリと、それが組み込まれるマイクロ
プロセッサは、留守番電話装置のような消費者エレクト
ロニクスで使用するように設計されている。本発明を組
み込んだ留守番電話装置のブロック図が図8に示されて
いる。この装置では、本好適実施例によるプロセッサで
あるプロセッサ402は動作上、電話回線インタフェー
ス404、マイクロホン406、およびスピーカ408
に接続されている。マイクロプロセッサ402は電話回
線インタフェース404を介して電話回線410上に音
声データを送受する。マイクロプロセッサは、スピーカ
408を介して周辺領域に音声データを送出し、マイク
ロホン406を介して周辺領域からの音声データを受け
ることもできる。
【0130】革新的な実施例の開示されたクラスによれ
ば、ディジタル信号プロセッサであって、一つ以上の入
力と一つの出力とをそなえたディジタル乗算器と、被乗
数ワードを保持するための乗数レジスタであって、前記
乗算器の前記入力に前記被乗数ワードを供給するように
接続された乗数レジスタと、第一のワードチェーンオペ
ランドを保持するためのデータメモリであって、前記乗
算器の前記入力に前記第一のワードチェーンオペランド
を供給するように接続されたデータメモリと、出力と、
前記乗算器の前記出力に接続された入力とをそなえた演
算論理ユニットと、第二のワードチェーンオペランドを
保持するための累算器であって、前記演算論理ユニット
の前記入力に前記第二のワードチェーンオペランドを供
給するように接続された累算器であり、前記演算論理ユ
ニットの前記出力に接続された入力をそなえた累算器
と、を具備し、前記データメモリは複数N個のディジタ
ルワードを保持し、前記データメモリ内に、前記N個の
ワードの最下位ワードがアドレスロケーションAに記憶
され、前記N個のワードの最上位ワードがアドレスロケ
ーションA+Nに記憶されるように、前記N個のワード
が記憶され、そして前記累算器は複数M個のディジタル
ワードを保持し、前記累算器内に、前記M個のワードの
最下位ワードがアドレスロケーションBに記憶され、前
記M個のワードの最上位ワードがアドレスロケーション
B+Nに記憶されるように、前記M個のワードが記憶さ
れる、ディジタル信号プロセッサが提供される。
【0131】革新的な実施例のもう一つの開示されたク
ラスによれば、プロセッサであって、前記カウンタ回路
が、前記第一のワードチェーンの前記最下位ワードをポ
インティングするデータメモリアドレスと、前記数Nを
含むカウンタとが入っている第一のメモリアクセス回路
であって、最初は、前記第一のワードチェーンの前記最
下位ワードをポインティングする前記アドレスで前記デ
ータメモリにアクセスし、以後、前記第一のワードチェ
ーンの前記最下位ワードをポインティングする前記アド
レスからN回インクリメントされるアドレスで前記デー
タメモリに順次アクセスするように動作し得る、第一の
メモリアクセス回路と、前記第二のワードチェーンの前
記最下位ワードをポインティングする累算器アドレス
と、前記数Mを含むカウンタ手段とが入っている第二の
メモリアクセス回路であって、最初は、前記第二のワー
ドチェーンの前記最下位ワードをポインティングする前
記アドレスで前記累算器にアクセスし、以後、前記第二
のワードチェーンの前記最下位ワードをポインティング
する前記アドレスからM回インクリメントされるアドレ
スで前記累算器に順次アクセスするように動作し得る、
第二のメモリアクセス回路と、を含む、プロセッサが提
供される。
【0132】革新的な実施例のもう一つの開示されたク
ラスによれば、計算プロセッサであって、入力手段と出
力手段とをそなえた乗算器と、第一のオペランドを保持
するための乗数レジスタであって、前記乗算器の前記入
力手段に前記第一のオペランドを供給するように接続さ
れた乗数レジスタと、第一のワードチェーンオペランド
を保持するためのデータメモリであって、前記乗算器の
前記入力手段に前記第一のワードチェーンオペランドを
供給するように接続されたデータメモリと、出力手段
と、前記乗算器の前記出力手段に接続された入力手段と
をそなえた演算論理ユニットと、第二のワードチェーン
オペランドを保持するための累算器であって、前記演算
論理ユニットの前記入力手段に前記第二のワードチェー
ンオペランドを供給するように接続された累算器と、前
記演算論理ユニットの前記出力手段を前記累算器の前記
入力手段に接続する手段と、を具備する計算プロセッサ
が提供される。
【0133】革新的な実施例のもう一つの開示されたク
ラスによれば、プロセッサであって、入力と出力とをそ
なえた乗算器と、第一のワードを保持するための入力レ
ジスタであって、前記乗算器の前記入力に前記第一のワ
ードを供給するように接続された乗数レジスタと、第一
のワードチェーンオペランドを保持するためのメモリで
あって、前記乗算器の前記入力に前記第一のワードチェ
ーンオペランドを供給するように接続されたメモリと、
出力と、前記乗算器の前記出力に接続された入力とをそ
なえた演算論理ユニットと、第二のワードチェーンオペ
ランドを保持するための累算器であって、前記演算論理
ユニットの前記入力に前記第二のワードチェーンオペラ
ンドを供給するように接続された累算器と、を具備し、
前記演算論理ユニットの前記出力が前記累算器の前記入
力に動作接続され、相次ぐ第二のワードチェーンオペラ
ンドが前記累算器の中の相次ぐロケーションに記憶され
る、プロセッサが提供される。
【0134】変形と変更 熟練した当業者には理解されるように、本出願で説明さ
れた革新的な概念は、途方もなく広い範囲の用途で変形
し、変更することができる。したがって、特許の主題の
範囲は、ここに示した特定の代表的な教示のいずれによ
っても限定されず、特許請求の範囲によって限定される
だけである。
【0135】更に注意すべきことは、時間とともに、シ
ングルチップにますます多くの機能が組み込まれる傾向
にある。複数のチップへの機能の割当てを変えても、上
記の機能的な動作原理が守られている限り、開示された
発明はなお有益である。
【図面の簡単な説明】
【図1】好適実施例によるマイクロプロセッサの構成と
配置の一部を示す図である。
【図2】好適実施例によるマイクロプロセッサの構成と
配置の残りの部分を示す図である。
【図3】図1の計算ユニットの構成と配置を更に詳細に
示す図である。
【図4】図1のデータメモリアドレスユニットの構成と
配置を更に詳細に示す図である。
【図5】図2のプログラムカウンタユニットの構成と配
置を更に詳細に示す図である。
【図6】図3と全体的に類似しているが、データチェー
ン操作の一部を示す図である。
【図7】図3と全体的に類似しているが、データチェー
ン操作の残りの部分を示す図である。
【図8】好適実施例によるプロセッサを含む留守番電話
装置を示す図である。
【符号の説明】
10 プロセッサ 12 データメモリブロック 14 データメモリアドレスユニット(DMAU) 30 乗算器 31 演算論理ユニット(ALU) 32 乗数レジスタ(MR) 36 累算器レジスタファイル 70 累算器ポインタユニット

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 ディジタル信号プロセッサであって、 一つ以上の入力と一つの出力とをそなえたディジタル乗
    算器と、 被乗数ワードを保持するための乗数レジスタであって、
    前記乗算器の前記入力に前記被乗数ワードを供給するよ
    うに接続された乗数レジスタと、 第一のワードチェーンオペランドを保持するためのデー
    タメモリであって、前記乗算器の前記入力に前記第一の
    ワードチェーンオペランドを供給するように接続された
    データメモリと、 出力と、前記乗算器の前記出力に接続された入力とをそ
    なえた演算論理ユニットと、 第二のワードチェーンオペランドを保持するための累算
    器であって、前記演算論理ユニットの前記入力に前記第
    二のワードチェーンオペランドを供給するように接続さ
    れ、前記演算論理ユニットの前記出力に接続された入力
    をそなえた累算器と、を具備し、前記データメモリは複
    数N個のディジタルワードを保持し、前記N個のワード
    の最下位ワードがアドレスロケーションAに記憶され、
    前記N個のワードの最上位ワードがアドレスロケーショ
    ンA+Nに記憶されるように、前記データメモリ内に前
    記N個のワードが記憶され、 前記累算器は複数M個のディジタルワードを保持し、前
    記M個のワードの最下位ワードがアドレスロケーション
    Bに記憶され、前記M個のワードの最上位ワードがアド
    レスロケーションB+Mに記憶されるように、前記累算
    器内に前記M個のワードが記憶される、前記ディジタル
    信号プロセッサ。
  2. 【請求項2】 請求項1記載のディジタル信号プロセッ
    サであって、前記累算器は第一組のレジスタと第二組の
    レジスタとを含み、前記第二のワードチェーンが前記第
    一組のレジスタに記憶され、前記第二組のレジスタが前
    記演算論理ユニットの前記出力に接続される、ディジタ
    ル信号プロセッサ。
  3. 【請求項3】 請求項1記載のディジタル信号プロセッ
    サであって、前記データメモリと結合され、前記累算器
    と結合されたカウンタ回路を更に含み、それぞれ前記最
    下位ワードから前記最上位ワードまで前記第一と第二の
    ワードチェーンに順次アクセスするように前記カウンタ
    回路が動作し得る、ディジタル信号プロセッサ。
  4. 【請求項4】 請求項3記載のディジタル信号プロセッ
    サであって、前記カウンタ回路が、 前記第一のワードチェーンの前記最下位ワードをポイン
    ティングするデータメモリアドレスと、前記数Nを含む
    カウンタとが入っている第一のメモリアクセス回路であ
    って、 最初は、前記第一のワードチェーンの前記最下位ワード
    をポインティングする前記アドレスで前記データメモリ
    にアクセスし、以後、前記第一のワードチェーンの前記
    最下位ワードをポインティングする前記アドレスからN
    回インクリメントされるアドレスで前記データメモリに
    順次アクセスするように動作し得る、第一のメモリアク
    セス回路と、 前記第二のワードチェーンの前記最下位ワードをポイン
    ティングする累算器アドレスと、前記数Mを含むカウン
    タ手段とが入っている第二のメモリアクセス回路であっ
    て、 最初は、前記第二のワードチェーンの前記最下位ワード
    をポインティングする前記アドレスで前記累算器にアク
    セスし、以後、前記第二のワードチェーンの前記最下位
    ワードをポインティングする前記アドレスからM回イン
    クリメントされるアドレスで前記累算器に順次アクセス
    するように動作し得る、第二のメモリアクセス回路と、 を含む、ディジタル信号プロセッサ。
  5. 【請求項5】 計算プロセッサであって、 入力手段と出力手段とをそなえた乗算器と、 第一のオペランドを保持するための乗数レジスタであっ
    て、前記乗算器の前記入力手段に前記第一のオペランド
    を供給するように接続された乗数レジスタと、 第一のワードチェーンオペランドを保持するためのデー
    タメモリであって、前記乗算器の前記入力手段に前記第
    一のワードチェーンオペランドを供給するように接続さ
    れたデータメモリと、 出力手段と、前記乗算器の前記出力手段に接続された入
    力手段とをそなえた演算論理ユニットと、 第二のワードチェーンオペランドを保持するための累算
    器であって、前記演算論理ユニットの前記入力手段に前
    記第二のワードチェーンオペランドを供給するように接
    続された累算器であって、 前記演算論理ユニットの前記出力手段が前記累算器の前
    記入力手段に動作接続された累算器と、 を具備する計算プロセッサ。
  6. 【請求項6】 プロセッサであって、 入力と出力とをそなえた乗算器と、 第一のワードを保持するための入力レジスタであって、
    前記乗算器の前記入力に前記第一のワードを供給するよ
    うに接続された乗数レジスタと、 第一のワードチェーンオペランドを保持するためのメモ
    リであって、前記乗算器の前記入力に前記第一のワード
    チェーンオペランドを供給するように接続されたメモリ
    と、 出力と、前記乗算器の前記出力に接続された入力とをそ
    なえた演算論理ユニットと、 第二のワードチェーンオペランドを保持するための累算
    器であって、前記演算論理ユニットの前記入力に前記第
    二のワードチェーンオペランドを供給するように接続さ
    れた累算器と、 を具備し、 前記演算論理ユニットの前記出力が前記累算器の前記入
    力に動作接続され、 相次ぐ第二のワードチェーンオペランドが前記累算器の
    中の相次ぐロケーションに記憶される、 プロセッサ。
JP11217664A 1998-06-25 1999-06-25 高性能マイクロプロセッサで使用するためのフレキシブル累算レジスタファイル Pending JP2000039995A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US090671 1987-08-28
US9067198P 1998-06-25 1998-06-25

Publications (1)

Publication Number Publication Date
JP2000039995A true JP2000039995A (ja) 2000-02-08

Family

ID=22223777

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11217664A Pending JP2000039995A (ja) 1998-06-25 1999-06-25 高性能マイクロプロセッサで使用するためのフレキシブル累算レジスタファイル

Country Status (3)

Country Link
EP (1) EP0967544B1 (ja)
JP (1) JP2000039995A (ja)
DE (1) DE69930893T2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014182514A (ja) * 2013-03-18 2014-09-29 Nara Institute Of Schience And Technology 演算装置

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6484255B1 (en) * 1999-09-20 2002-11-19 Intel Corporation Selective writing of data elements from packed data based upon a mask using predication
GB0023699D0 (en) * 2000-09-27 2000-11-08 Univ Bristol Executing a combined instruction
US7426529B2 (en) 2002-06-06 2008-09-16 Infineon Technologies Ag Processor and method for a simultaneous execution of a calculation and a copying process
DE10225230B4 (de) * 2002-06-06 2004-10-21 Infineon Technologies Ag Prozessor und Verfahren zum gleichzeitigen Ausführen einer Berechnung und eines Kopiervorgangs
US20040015676A1 (en) * 2002-07-17 2004-01-22 Pierre-Yvan Liardet Sharing of a logic operator having a work register

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL8304186A (nl) * 1983-12-06 1985-07-01 Philips Nv Geintegreerde processor voor het verwerken van woordsgewijze ontvangbare informatie.
DE4123186A1 (de) * 1990-07-13 1992-01-23 Aisuke Katayama Multiplikationseinrichtung vom typ fuer unterteilte produkte, die zum ausfuehren einer multiplikation numerischer werte mit vielen stellen bei hoher genauigkeit faehig ist
FR2718866B1 (fr) * 1994-04-19 1996-05-15 Sgs Thomson Microelectronics Dispositif de calcul arithmétique et logique et procédé de commande.
US5666300A (en) * 1994-12-22 1997-09-09 Motorola, Inc. Power reduction in a data processing system using pipeline registers and method therefor

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014182514A (ja) * 2013-03-18 2014-09-29 Nara Institute Of Schience And Technology 演算装置

Also Published As

Publication number Publication date
EP0967544A3 (en) 2001-02-14
DE69930893T2 (de) 2006-11-16
EP0967544A2 (en) 1999-12-29
EP0967544B1 (en) 2006-04-19
DE69930893D1 (de) 2006-05-24

Similar Documents

Publication Publication Date Title
US6434584B1 (en) Flexible accumulator register file for use in high performance microprocessors
US4449184A (en) Extended address, single and multiple bit microprocessor
US5390307A (en) Apparatus for a multi-data store or load instruction for transferring multiple contiguous storage locations in one transfer operation
US4402042A (en) Microprocessor system with instruction pre-fetch
US4694391A (en) Compressed control decoder for microprocessor system
JPH11154114A (ja) 複数データ・フェッチのアーキテクチャを使ってテーブル・ルックアップを実行するためのシステムおよび方法
KR100462951B1 (ko) Risc 구조를 갖는 8 비트 마이크로콘트롤러
KR100320559B1 (ko) 디지탈신호처리프로세서및그것에관한컨디션코드를갱신하지않는조건을갖는데이타조작방법
JPH1091443A (ja) 情報処理回路、マイクロコンピュータ及び電子機器
KR100465388B1 (ko) Risc 구조의 8비트 마이크로 제어기
US6263420B1 (en) Digital signal processor particularly suited for decoding digital audio
US20020053015A1 (en) Digital signal processor particularly suited for decoding digital audio
US4402043A (en) Microprocessor with compressed control ROM
JP3789583B2 (ja) データ処理装置
JPH04260930A (ja) データ処理装置
US6499099B1 (en) Central processing unit method and apparatus for extending general instructions with extension data of an extension register
US6253305B1 (en) Microprocessor for supporting reduction of program codes in size
JPH04260927A (ja) データ処理装置
US20030046516A1 (en) Method and apparatus for extending instructions with extension data of an extension register
JP2000039995A (ja) 高性能マイクロプロセッサで使用するためのフレキシブル累算レジスタファイル
US5386534A (en) Data processing system for generating symmetrical range of addresses of instructing-address-value with the use of inverting sign value
JPH07239780A (ja) 1クロック可変長命令実行処理型命令読み込み電子計 算機
JPH04260929A (ja) データ処理装置
US5396610A (en) Register address specifying circuit for simultaneously accessing two registers
US6484194B1 (en) Low cost multiplier block with chain capability