JP2002507789A - デジタル信号プロセッサ - Google Patents

デジタル信号プロセッサ

Info

Publication number
JP2002507789A
JP2002507789A JP2000537132A JP2000537132A JP2002507789A JP 2002507789 A JP2002507789 A JP 2002507789A JP 2000537132 A JP2000537132 A JP 2000537132A JP 2000537132 A JP2000537132 A JP 2000537132A JP 2002507789 A JP2002507789 A JP 2002507789A
Authority
JP
Japan
Prior art keywords
instruction
data
memory
register
processing unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2000537132A
Other languages
English (en)
Other versions
JP2002507789A5 (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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US09/044,086 external-priority patent/US6425070B1/en
Priority claimed from US09/044,088 external-priority patent/US6496920B1/en
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2002507789A publication Critical patent/JP2002507789A/ja
Publication of JP2002507789A5 publication Critical patent/JP2002507789A5/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0886Variable-length word access
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • 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/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
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • 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
    • 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/30112Register structure comprising data of variable length
    • 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/3012Organisation of register space, e.g. banked or distributed register file
    • 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/30141Implementation provisions of register files, e.g. ports
    • 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/30149Instruction analysis, e.g. decoding, instruction word fields of variable length 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Memory System (AREA)

Abstract

(57)【要約】 【課題】 ディジタル信号プロセッサー。 【解決手段】 可変長指示セットを利用するための通話を処理するディジタル信号回路。例示的なDSPは3つのデータバスの組を含み、その上でデータはレジスタバンク(120)と3つのデータメモリ(102,103,104)と交換されることができる。レジスタバンク(120)は、少なくとも二つのプロセスユニット(128,130)によりアクセス可能なレジスタを有して使用され得る。指示取り出しユニット(156)は、指示メモリ(152)中に格納される可変長の指示を受信することを含むことができる。この指示メモリ(152)は3つのデータメモリ(102,103,104)の組から離されている。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】
本発明はデジタル信号プロセッサに関する。本発明は特別の、但し排他的では
ない、高度に並列的で、高度にパイプライン化された処理技術を使用するデジタ
ル信号処理に関する応用を有する。
【0002】
【従来の技術】
デジタル信号プロセッサ(DSPs:Digital Signal Pro
cessors)はデジタル信号のリアルタイム処理に一般に使用される。デジ
タル信号は一般に対応するアナログ信号を表現するために使用される数の連続ま
たはデジタル値である。DSPsはコンパクトディスクプレイヤのようなオーデ
ィオシステム、およびセルラー電話のようなワイヤレス通信システムを含む広範
囲の応用に使用される。
【0003】 DSPはしばしばマイクロプロセッサの特別のフォームであると考えられてい
る。マイクロプロセッサーのように、DSPは典型的にはシリコンをベースにし
た半導体集積回路上に形成される。さらに、マイクロプロセッサとともに、DS
Psのコンピュータ電力は減じられた指示(ISC)コンピュータ技術を使用す
ることにより高められる。RISCコンピュータ技術は、DSPの動作を制御す
るために同様サイズの指示のより小さい数を使用することを含んでいる。ここで
、各指示は同じ長さの時間において実行される。RISCコンピュータ技術の使
用は、DSPの内でパイプラインする指示の量と同様に、指示が実行されるスピ
ード、或いはクロック速度を高める。
【0004】 RISCコンピュータ技術を使用するDSPを構成することは、また不所望な
特性を形成する。特に、DSPsベースのRISCは、与えられた仕事を実行す
るためのより大きな数の指示を実行する。追加の指示を実行することは、RID
SPの電力諸費を増加する。メモリ指示構造個は、DSPの内の実質的な(しば
しば全体の50%以上)回路領域を要求し、それはDSPのサイズとコストを増
加する。このように、DSPsベースのRISCの使用は、低いコスト、低い電
力、 ディジタルセルラー電話やバッテリ動作無線通信システムの他のタイプのような
応用に関して理想以下である。
【0005】 図1は、従来技術に従って構成されたディジタル信号プロセッサの高度に単純
化されたブロックダイアグラムである。数学的ロジックユニット(ALU)16
はALUレジスタバンクに接続され、乗算加算(MAC)回路26はMACレジ
スタバンク27に結合される。データバス20は、MACレジスタバンク27、
ALUレジスタ17及びデータメモリ(チップ上)に接続される。指示バス22
は、MACレジスタバンク、指示メモリ(オン−チップ)12、MACバンク2
7及びALUレジスタバンク17に接続される。指示デコーダ18はMAC26
とALU16に結合され、いくつかの従来システムにおいては、指示デコーダ1
8は指示メモリ12に直接接続される。 データメモリ10は、またデータインターフェイス11に接続され、指示メモリ
12は、また指示インターフェイス13に接続される。データインターフェイス
12と指示インターフェイス12はオフーチップメモリ16とデータと指示を交
換する。
【0006】
【課題を解決するための手段】
本発明は、本願を通して記載される他の特徴および進歩を提供することによる
のと同様に、上記問題点および非能率性を処理することによりDSPの動作およ
び有用性を増進させることを目的とする。
【0007】 本発明の特徴、目的、および利点は、全体を通して対応する基準、文字、識別
子と同様に図面と組合わせることで、以下に述べる本発明に関する具体例の詳細
な記述により、より明確になるであろう。
【0008】
【発明の実施の形態】
本発明はデジタル信号処理のための新規なそして進歩した方法および回路に関
するものである。本願を通して、信号、命令、およびデータに関して多くの基準
(reference)が形成される。これらの信号、命令、およびデータは電
圧、電流、荷電された、光学的な、または磁気的な粒子、またはこれらの何らか
の組み合わせを含む電流の蓄積により適切に表現され、これらの使用は良く知ら
れている。かかる信号、命令、およびデータを表現する多くの化学的および生物
学的化合物の使用が、たとえかかる対象についての使用、制御および操作が困難
性を有することにより好ましくはない場合があるとしても、一般的に本発明の使
用に関し良好に成立する。
【0009】 加えて、本発明の概念(aspect)、利点、特徴または効果に関して基準
が形成される(特別に参照するのではない場合、ここではひとまとめにして概念
として参照される。)。本発明のある具体例においては、本発明の他の概念の何
れの存在もなしに、これらの異なる概念が単独で実現できる。しかしながら、本
発明の他の実施例においては、本発明の2またはそれ以上の概念が、相互依存的
なそして本発明の2つまたはそれ以上の結合された概念のうち単に一つの概念を
実現化する本発明の具体例により提供されるよりも大きな予期しない効果を生成
するために、組み合わされて実行されるであろう。 I.DSP動作および命令の記録 図2は本発明の具体例に対応して形成されたデジタル信号プロセッサ(DSP
)回路の一部分のブロックダイアグラムである。データメモリ102−104は
アドレス生成ユニット(AGU)105−107を介してデータバスA、Bおよ
びCに、そしてデータ接続器100にそれぞれ接続される。データバスA、Bお
よびCは、マルチプレクサ122−126を介して、レジスタバンク120の出
力ポートPO1、PO2およびPO3のそれぞれに、そしてレジスタバンク12
0の入力ポートPI1、PI2およびPI3のそれぞれに接続される。望ましく
は、データバスA、BおよびCは、データメモリ102−104とレジスタバン
ク120内のレジスタ間のデータを読み出しそして書き込む。
【0010】 3つのデータバスおよび3つのデータメモリの使用は、バス接続を生成するこ
となしに、レジスタバンクとデータメモリとの間で交換される多くのデータを許
容する。例えば、3つのフェッチ動作は3つのデータバスA、BおよびCを使用
する3つメモリ102−104から同時に形成できる。3つのフェッチおよび書
き込み動作の何れかの組合わせが可能な場合、3つの書込み動作が同時に形成で
きる。
【0011】 第4のデータバスを追加することにより同等の多数の形成動作が可能となり、
これは本発明の一部の具体例を形成する。しかし3つのデータバスはフィルタリ
ングのようなDSPにより共通して遂行される多くのタスクの形成を容易にする
ために、単に3つのデータバスの使用は特別の利点を有する。このように、第4
のデータバスの追加は、第3のデータバスの追加と同じ増加する性能の改善を提
供するものではなく、そして追加の回路領域に関しては同じ量を必要とする。そ
れ故に、第4のデータバスの追加は第3のデータバスの追加より少ない効果を利
益として提供する。そこで、本発明の多くの具体例において、単に3つのデータ
バスの使用が望ましい、 出力ポートPO4、PO5およびPO6またはレジスタバンク120はマルチ
プリアキュムレート(MAC:multiply accumulate)ユッ
ト128に接続され、この出力は順番にレジスタバンク120の入力ポートPI
4に接続される。レジスタバンク120の出力ポートPO7およびPO8は論理
演算ユニット(ALU)に接続され、その出力はレジスタバンク120の入力ポ
ートPI5に接続される。
【0012】 インストラクションメモリ152はインストラクションフェッチユニット15
6及びインストラクションインターフェイス150に接続されている。インスト
ラクションデコーダー158はインストラクションフェッチユニット156、並
びにイミディエットバスIm1,Im2、Im3及びImALUに接続されてい
る。イミディエットバスIm1,Im2、Im3はマルチプレクサー122、1
24及び126に接続されている。イミディエットバスImALUはALU13
0に接続されている。上記のデータカップリングに加え、デコーダ158は、コ
ントロールコネクション(簡略のため図示せず)により示される、種々のサブシ
ステムに接続される。
【0013】 レジスタバンク120は8個のレジスタL0−L3,D0−D3を含む。レジ
スタL0−L3は40ビット幅レジスタであり、ハイワードレジスタL0h−L
3h及びロウワードレジスタL0l−L3lを介して、16ビットフラグメント
でアクセス可能である。レジスタD0−D3は32ビット幅レジスタであり、サ
ブレジスタR0−R7を介して、16ビットフラグメントでアクセス可能である
。レジスタ及びサブレジスタは、一般化して、単に「レジスタ」と呼ぶ。各レジ
スタの特徴は、個々のレジスタ番号を付けることにより、明らかとなる。
【0014】 本発明の一つのアスペクトは、レジスタを多重入力出力端子に接続しそれらに
よりアクセス可能とすることにより達成される。ある実施例においては、この多
重接続は、各レジスタの入力及び各出力ポートに接続されたマルチプレクサを使
用することによりなされる。多重接続を設けるための他の方法は以下に明らかに
され、それらは本発明の他のアスペクトと矛盾することはない。例えば、データ
バスとアドレス可能なメモリの使用である。しかしながら、ある実施例において
は、マルチプレクサの使用はより好ましい。なぜなら、種々のレジスタとポート
に対する迅速で制御可能なアクセスが可能となるからである。
【0015】 本発明の他のアスペクトは、以下に説明されるように、イミディエットデータ
バスを用いる実施例において実現される。例えば、インストラクションデータに
含まれるデータは、メモリ102−105とインターフェイスすることなく、レ
ジスタバンク120に読込み可能である。このように、付加データは、データメ
モリとインターフェイスすることなく、インストラクション処理システムから提
供され、バスコンテンションをさらに減少する。 図3は、レジスタバンク120中の一組のレジスタと一組の入力ポートP11
−P15との接続関係を示すブロック図である。レジスタは、L0h−L3h,
L0l−L3l,R0−R7と定義される。レジスタL0は、レジスタL0hと
L0lとから構成される。図3及び図4示す例では、レジスタL0h−L03は
24ビットであり、レジスタL01−L3lとR0−R7は16ビットであり、
レジスタL0−L3を40ビット幅としている。同様に、入力ポートPI3−P
I5は24ビットの入力ポートPI3h−PI5hと16ビットの入力ポートP
I3l−PI5lとからなり、合計で40ビットとなる。入力ポートPI1及び
PI2は16ビットのみであり、レジスタL0h−L3hへの書き込みに使用さ
れる時は、使用可能な24ビットの内、下位16ビットに書き込みを行う。
【0016】 図3に示すように、レジスタの或るものはすべての入力ポートからデータを受
け取り、また或るものは一部の入力ポートからデータを受け取る。特に、すべて
のレジスタL0−L3はすべての入力ポートPI1−PI5から、またマルチプ
レクサ500−514から、データを受け取り、16ビットの入力ポートはレジ
スタL0−L3の内の高位及び低位のレジスタの双方へ書き込みが可能である。
このように、レジスタL0−L3は、バスA−C(入力ポートPI0−PI3に
対応)のいずれからも、またMACユニット128とALU130(入力ポート
PI4−PI5に対応)からも入力を受け取る。レジスタR0−R7は入力デー
タを、マルチプレクサ516−530を介してバスA−Cから受け取る。しかし
、レジスタR0−R7のいずれもMACユニット128(入力ポートPI4)か
ら入力データを受け取らない。更に、レジスタR0−R3は、マルチプレクサ5
16、518、524、526を介して、ALUユニット130から入力データ
を受け取る。
【0017】 図3に示す実施例は多くの効果を有する。特に、入力ポートとレジスタとの間
に十分な接続性がもたらされ、最も共通する動作が容易に達成される。しかし、
回路を実現するために必要とされる全回路面積を減少させるために、全体の接続
性は最小にされる。例えば、MACユニット128の出力はロングレジスタL0
−L3のみに接続される。これは、積算及び累積演算の結果が一般に32ビット
を超えるので、有利である。また、MACユニット128の出力をレジスタD0
−D3に接続することは、最小の利点しかもたらさない。他の例では、ALUユ
ニット130はレジスタL0−L3,R0−R3に出力可能である。これにより
、フレキシビリティが増し、ALUユニット130からのデータは種々のレジス
タへ書き込み可能となる。ALUユニット13がより多種の演算を行う場合、デ
ータをより多くのレジスタへ出力することは有利になる。しかしながら、ALU
ユニット130はすべてのレジスタに接続されることはない。それゆえに、不必
要で過度な接続性は避けられる。
【0018】 図4は、本発明の一実施例による、レジスタバンク120の出力ポートとレジ
スタとの接続を示すブロック図である。図示されるように、バスAへの出力のた
めの出力ポートPO1はマルチプレクサ540を介してレジスタL0h−L3h
,L0l−L3l,R0−R7へ接続される。これらのレジスタは、サブレジス
タとしてアクセスされた場合のすべての使用可能なレジスタを含む。同様に、バ
スBへの出力のための出力ポートPO2はマルチプレクサ542を介してレジス
タL0h−L3h,L0l−L3l,R0−R7へ接続される。40ビット幅バ
スCへの出力のための出力ポートPO3はマルチプレクサ530を介してレジス
タL0−L3,D0−D3へ接続される。これらのレジスタは、フルレジスタと
してアクセスされた場合のすべての使用可能なレジスタを含む。
【0019】 MAC部128の40ビット入力端に接続された出力ポートPO4はマルチプ
レクサ532を介してレジスタL0−L3に接続してある。MAC128が蓄積
する値は実行される乗算と蓄積動作の性質により大きくなる傾向があるので、出
力ポートPO4を40ビット「長さ」のレジスタLO−L3のみに接続すること
で、最良の接続形態を提供できる。これは、種々の乗算結果の蓄積量が特に32
ビットを超える場合に、レジスタD0−D3への付加的接続から生れる有用性が
低いためである。
【0020】 MAC部128の16ビット入力端に接続された出力ポートPO5はマルチプ
レクサ5354によりレジスタL0h−L3h、R0、R2、R4、R6に接続
してある。MAC部128の16ビット入力端に接続された出力ポートPO6は
レジスタL0h−L3h、L01−L31、R0−R7に接続してある。第2の
16ビット入力ポートを利用可能なレジスタ全ての部分集合に接続する一方、M
AC部128の16ビット入力ポートのひとつを利用可能なレジスタ全ての部分
集合に接続してある。これにより有用な折衷策が講じられる。特に、レジスタ空
間が限られている場合、処理すべき情報を少なくとも一つを利用可能なレジスタ
のいずれに保持できる。しかしながら、他の入力端接続のレジスタの和を制限す
ると回路の接続総量が減少される。これにより、他の機能と特徴、例えば他のレ
ジスタ、入力ポート、出力ポート間の接続性、とを提供できる。 ALU130の入力端に接続された出力ポートPO7はマルチプレクサ546
によりレジスタL0−L2,L0h−13h,R0−R3とに接続してある。レ
ジスタL0h−LO3hとR0−R3とは論理0の集合と共に出力される。すな
わち、レジスタL0h−LO3h、R0−R3はビット31−16(番号0−3
9を付したビット)とPO7のビットに出力され、ビット0−15は論理0に設
定される。ビット39−32は、ビット31を用いて延長された記号である。A
LU130の他の入力端に接続された出力ポートPO8はマルチプレクサ546
によりレジスタL0−L3に接続してあり、論理0と共にレジスタR0−R7に
も接続してある。ALU130の入力端をこのように接続しているので、論理演
算を利用可能なレジスタL0−L3全てについて実施でき、よって正規化や基準
化などの、多くの種類の信号処理に有用な大きな数値について実施できる。加え
て、数値演算をレジスタR0−R7、L0h−L3h、R0−R7間で実行でき
る。したがって、必要な接続の数を減少でき、結果として必要な回路領域を減少
できるだけでなく、使用できるレジスタの集合について柔軟性を高くすることが
できる。実施可能な論理演算と数値演算が上記のものに限定されないこと理解さ
れたい。 マルチ情報バスとマルチ処理部とがアクセスできるレジスタを使用しているの
で、様々な効果を達成している。たとえば、これらレジスタは情報バスと処理部
との間にインターフェースを取ることができ、各情報バスを各処理部に案内する
ことの必要性を減少している。バスへの案内を減ずることにより、回路領域を節
約し、かつチップのコストを下げる。 さらに、レジスタを少なくとも幾つか(レジスタの集合)をマルチ処理部に接
続してあるので、情報バスを介して情報をメモリから読み出し、メモリへ書き込
むことをせずに、マルチ処理部を使ってマルチ演算を同一情報に対し実行かのう
である。これにより、バスサイクルが節約され、バス競合を減少させる。また、
命令処理パイプライン技術が容易になる。これは、第1の処理部が第1命令期間
中に処理した情報を、同じレジスタ内でさらに第2処理部により第2命令期間中
に処理することができるからである。 しかし、マルチ処理部により全ての情報が処理される必要はない。したがって
、他のレジスタ(他の集合)は、処理部一つのみにより、二つ以上の処理部があ
る場合、その総数より少ない処理部によりアクセスできる。他の集合のレジスタ
を使用するので、接続個所の数が減少する。これにより、回路領域も減少できる
ので、レジスタの接続性と回路領域との均衡(よって、作用性と効率とのバラン
ス)が最良となる。 さらに、本発明の1実施例においては、2相クロックド・レジスタをレジスタ
・バンク内で用いることによりパイプライン効率をより上げられる。同一全クロ
ック(処理)期間内において、2相クロックド・レジスタはクロック信号の第1
相で読み出され、クロック信号の第2相で書き込まれる。よって、ある処理期間
内において、MAC128のような第1処理部により既に処理された情報は第1
クロック期間に読み出され、ALU130のような第2処理部により処理期間の
残る部分において、さらに処理される。 加えて、処理期間の第2相において、MAC128により処理されたばかりの
新たな情報が同じレジスタに書き込まれる。これにより、ふたつの処理部間のパ
イプライン処理は、ひとつの処理期間内で完了する。これらの動作は、いずれの
内部バスを介して情報を送ることなく、再度実行できる。よって、バス競合が回
避される。
【0021】 再び図2を参照する。演算中インストラクションフェッチユニット156はバ
イナリインストラクションをインストラクションメモリ152から検索するか、
インストラクションメモリ152の中にない場合には、外部メモリから検索する
。外部メモリにはこの技術では良く知られている様々な形態がある。例えば、動
的ランダムアクセス記憶装置や静的ランダムアクセス記憶装置(DRAMやSR
AM)、あるいはこれらの派生物、さらには磁気や光によるハードディスク記憶
装置、またはこの技術では公知のその他のデータ記憶媒体が外部メモリに含まれ
る。この発明の典型的な実施例では、インストラクションは可変長であり、イン
ストラクションフェッチユニットはインストラクションの長さを決定したり、処
理毎やクロックサイクル毎にどれだけの量のインストラクションデータをさらに
取り出さなければならないのかを決定したりする。さらに、インストラクション
は内部メモリや外部メモリの連続した記憶場所に記憶される。インストラクショ
ンフェッチユニット156の動作やインストラクションデータを内部および外部
のメモリに記憶することについては、以下に詳しく説明する。
【0022】 インストラクションデコーダ158は、インストラクションフェッチユニット
156が検索したインストラクションを受け取り、インストラクションを制御信
号に翻訳する。翻訳された制御信号は、データメモリ、レジスタバンク、MAC
、ALUを含むDSPを構成する一台以上のサブシステムに供給される。また、
インストラクションデコーダ158は、受け取ったインストラクションに含まれ
ている即値データを即値バスIm1、Im2、Im3、ImALU経由で適切な
システムに供給する。即値データはインストラクションデータ内に格納されてい
る数値がその典型であり、データメモリ102〜106Πに格納されているデー
タに対する演算に用いられるか、アドレスの指定や修正に用いられる。
【0023】 図2のDSPが実行する処理には、データメモリからいずれかのデータバスを
介してレジスタロケーションにデータをロードすることが含まれる。データはレ
ジスタからデータメモリに書き込まれることもある。また、MACユニット12
8やALUユニット130は、レジスタバンク120内の1個以上のレジスタに
格納されているデータに対して処理をし、結果は概ねレジスタバンク120内の
レジスタに書き戻される。
【0024】 上で述べたDSPアーキテクチャには多くの長所がある。例えば、三個のデー
タバスを使用しているので、データの途切れないパイプライン処理が可能である
。DSPが実行する模範的なフィルタリング中に、濾過されるデータ(信号デー
タ)があるデータメモリに記憶され、そのデータに印加される係数が別のデータ
メモリに記憶される。演算結果にはオペランドよりも大きいビットが必要なので
、信号データと係数データとを二台の狭いメモリに記憶することが好ましい。係
数および信号の両データは次にレジスタバンク120に読み込まれ、MACユニ
ット128により乗算されて累算される。以上の演算の結果は、レジスタバンク
120内の第二レジスタに記憶されるか、以前に入力データが記憶されていたレ
ジスタバンクに上書きされる。通常、演算結果はどれもレジスタから第三バス(
BUS C)を経由して広いデータメモリ(メモリC)に書き込まれる。
【0025】 出力データが第三バスを経由して第三メモリに書き込まれ、入力データセット
が第一および第二のデータメモリから第一および第二のデータバスを経由して読
み込まれるので、メモリアクセスやバスの競合はほとんど生じないか、一切生じ
ない。したがって、データの処理が途切れることなく進行するので、メモリサブ
システムやデータバスのクロックを内部バスや他のサブシステムのクロックより
も早くする必要性が減少する。これにより電力消費が減少し、しかも処理速度は
維持されるか、却って早くなる。
【0026】 さらに、データが途切れることなくDSPを通過するので、所定時にDSPの
異なる段で幾つかの異なるデータ値に異なる処理が施される場合に、データのパ
イプライン処理が促進される。また、以下に述べる並列インストラクションと一
緒に使用した場合、この効率的な高度パイプライン処理と一緒になって処理の柔
軟性が増大するので、汎用性が非常に高く、効率的で、強力なDSPシステムが
得られる。
【0027】 多重バスの使用によりデータをDSPの周囲で様々に移動させることができる
ようになるので、バスの競合が少なくなる。例えば、分割すべきデータはデータ
バスC経由でメモリCから入力データとして供給し、除数は別のバスと別のメモ
リ、例えば、メモリAとデータバスAから供給することができるし、演算結果は
残っているバス(データバスB)を経由して残っているメモリ(メモリB)に記
憶することができる。
【0028】 データバスとデータメモリを多重化することにより促進化される別の典型的な
演算では、MACユニット130により累算されるデータが第一メモリと第一バ
ス(例えば、メモリAとデータバスA)を経由して提供される。一組の累算が実
行されると、演算結果のデータはデータバスCを経由してメモリCに書き込まれ
る。同時に、論理シフトが施されるデータは、データバスCが通常は一組の累算
処理の実行後に始めて得られるMACユニット128からの結果データを搬送し
ていない場合に、処理サイクル中にメモリCからデータバスCを経由してALU
ユニット130に供給される。論理シフトが施されたデータは、データバスBを
経由してメモリBに同時に書き込まれる。したがって、データバスとメモの多重
化は、多重処理ユニットと共に、多重処理を促進するので、DSP内でのデータ
の移動性が向上する。
【0029】 以上に述べたように、この発明の別の態様は、MACユニット128やALU
ユニット130などの多重処理ユニットがアクセス可能なレジスタを使用して実
現される。多重処理ユニットがアクセス可能なレジスタを使用することにより、
処理ユニットが処理すべきデータにいずれかの内部データバスを経由させること
もなく、処理ユニットは当該データにアクセスできるようになる。例えば、第一
処理ユニットはレジスタにデータを書き込むことができるし、第二処理ユニット
がそのレジスタにアクセスして、当該データをさらに処理することもできる。こ
れにより、バスの競合や混雑が解消されるので、高データスループットが維持さ
れる。
【0030】 さらに、下記に詳細に記載するように、平行演算インストラクションの使用と
並行処理能力を組み合わせれば、データを高度にパイプラインしマルチ演算処理
する能力がさらに高められる。これに対し、典型的なパイプラインは、一連の演
算の異なった相(すなわち、フェッチ、デコード、プロセス)をずらすので、そ
れぞれのインストラクションの開始点間の処理時間を短縮させることができる。
マルチ演算パイプラインにより、データに対し一連の異なった演算をすることが
できるという付加的な利点もある。この場合、それらの一連の演算は異なるデー
タ組に対して同時になされる。このマルチ演算処理により、従来のインストラク
ションパイプライン処理に比べ、一処理サイクルあたりになされるインストラク
ションの数を増加することができる。
【0031】 上述した構成の相乗作用を、以下に例示する処理によりさらに説明する。例示
するフィルタリング処理においては(上述した場合と同様)、アキュミュレーシ
ョン(accumulation)がなされた製品の数が増えるにつれ、MC2
6により発生された結果の規模が増加する(絶対値、及びその数値を表すビット
数との観点から)。そのため、結果はスケーリング、もしくは「正規化」しなけ
ればならない。このため、通常は、ALUユニット130による論理シフト演算
が必要となる。
【0032】 記載されたシステムにおいては、スケーリング操作をフィルタリングの乗算や
積算と同時に行うことができる。そのような同時処理がなされる処理サイクルに
おいては、処理前の信号データとフィルタリング係数をデータメモリー102、
103から読み出してレジスタバンク120内のレジスタに保持する。同時に、
MACユニット128はこれらのレジスタ(L0hとL01)に以前記録されて
いた数値を読み、乗積算の演算を行う。この演算においては、出力は第2のレジ
スタ(例えばL1)に書き込むことになる。同時に、ALUユニット130は第
2のレジスタ(L1)に以前記録していたデータを読み、スケール操作をしスケ
ーリングした数値を第3のレジスタ(例えばL2)に書き込む。同じ処理サイク
ル間に、第3のレジスタ(D0)に以前記録していた数値を、バスC112を介
しデータメモリ104に書き込む。これで明らかなように、個々の演算は実際に
行われるタスクによって違う。さらに明らかなように、マルチ演算の実行を可能
にするような高度に並列的なインストラクションを用いた場合には、高度にパイ
プラン処理されたマルチインストラクション演算が容易になる。高度に並列的な
インストラクションは、個々の処理サイクルにおいて、異なった演算の使用をパ
イプライン化することを可能にする。
【0033】 2相のリードライト操作(この一例は上述した)を利用することで、処理のす
べてを単一の処理サイクルで行うことができる。この処理サイクルにおいては、
データを最初のクロック相の間にそれぞれのレジスタから読み出し、処理ユニッ
トにより処理をし、古いデータに上書きした結果を第2のクロック相の間にレジ
スタに書き込む。単一のクロックサイクルの間では、このプロセスのすべてのス
テップが同じ数値に対し適用されるというよりは、一連の数値がDSPを介して
パイプライン化され、それぞれの数値が処理がなされるとき次のステップに移行
することが理解されよう。
【0034】 他にも数多くの演算が、本明細書に記載された発明の種々の観点により、容易
になる。例えば、ボコーディング(vocoding)とは、音声データを符号
化するプロセスである。ボコーディングでは数多くの異なった操作がなされ、そ
の中には、他の操作と独立して故に同時になされる操作が含まれる。マルチデー
タバスやマルチ処理ユニットを用いることで、これらの操作が容易になる。
【0035】 別個のインストラクションメモリとインストラクション復号を利用することで
更なる利点が得られる。例えば、上述したデータ処理と同時に、インストラクシ
ョンフェッチ(instruction fetch)156によってインスト
ラクションメモリ152からインストラクションを読み出し、次にインストラク
ション復号器158で、DSP内の他のサブシステムの操作を制御するための制
御信号を発生させる(図面を簡略化しわかりやすくするために接続関係は示され
ていない)。この場合も、データバスはインストラクションデータを搬送する必
要はなく、信号データはインストラクションデータからの割り込みなしで移動し
処理することができる。したがって、インストラクション処理をデータ処理と分
離することで性能をさらに高めることができ、インストラクションデータを移動
させるためにデータバスサイクルを使う必要がなくなる。
【0036】 図5は、本発明の一実施例において、図2のインストラクションメモリ152
のアドレス指定が可能なメモリスペースの一部でどのように一組の長さ可変イン
ストラクションが圧縮(packing)されているかを示す表である。本発明
の実施例の中には、長さ可変インストラクションを外部メモリシステム内に図2
に示すように記憶し、更なるメモリ効率を実現している。例として示すアドレス
が左側のコラムに示されており、それぞれのアドレスはメモリ275のまん中と
右側のコラムに示されている32ビットのデータワードを示している。まん中の
コラムは、それぞれのデータワードにおける16ビットの高位のサブワードを表
し、もっとも右側のコラムは16ビットの低位のサブワードを表している。本発
明の好適な実施例においては、高位と低位のサブワードは個別にアドレス指定が
できないようになっており、これにより必要となるアドレス論理量を少なくして
いる。 メモリー275内には、さまざまな長さ指示A乃至Lが、図示されたパックさ
れた構造で記憶される。指示Aは、アドレスワード0×0000に記憶された最
初の二つの倍バイトA(1)とA(2)と、アドレス0×0001の上位サブワ
ードに記憶された第三の倍バイトA(3)を持つ48ビット指示である。指示A
に続く指示Bは、アドレス0×0001の下位ワードに記憶された最初の倍バイ
トB(1)と、アドレス0×0002の上位サブワードに記憶された第二の倍バ
イトB(2)とを持つ32ビット指示である。指示Cは、アドレス0×0002
の下位サブワードに記憶された第一でかつ唯一の倍バイトC(1)を持つ16ビ
ット指示である。 指示A乃至Cの記憶配置から明らかなように、本発明は、同じアドレスワード
内に違った指示のいくつかの部分を記憶する事によって一組の指示を記憶するた
めに必要なメモリー275のサイズや量を減らしている。例えば、指示Aの第三
の倍バイトA(3)は、指示Bの最初の倍バイトB(1)とともに記憶される。 さまざまな長さ指示をワード境界を横切って、あるいは、特に、メモリーアド
レススペース内に連続した配置で記憶する事によって、本発明は、ある定められ
た数の指示を記憶するのに必要な指示メモリーの量を減らしている。指示メモリ
ーの量を減らす事は、DSPにある量の指示キャッシュ能力を与えるのに必要な
チップのサイズと費用を減らす事になる。指示のパッキングについては、図3に
示されるようにメモリー275内にさまざまな長さ指示D乃至Lを配置する事に
よって説明されている。 引き続く場所に全ての指示をパッキングする事は、上記で述べたように、発明
の幾つかの実施例においては必要ではないという事は理解されるはずである。例
えば、発明の異なる実施例では、メモリースペース内の引き続く場所において、
指示の多くの部分(例えば90%以上)をパックする。発明の他の実施例におい
ては、指示の重要な部分(例えば25から50%の間)のみが、引き続いたメモ
リースペースに有利にパックされる。発明のいくつかのその他の実施例では、違
ったパーセンテージのパックされた指示を使ってもよい。 また、引き続いた場所の使用は必要ではない。指示は、単に、指示データのト
ータル量より実質的に大きくないトータルメモリースペースに配置しなければな
らないだけである。これは、メモリースペース内において隣接する場所に指示を
配置する事によって好ましく達成されるが、指示は、意図された実施順に読み出
され得る限り、メモリースペースを通じてシャッフルされ得る。当該技術におい
て熟練された者は、このタイプの所定のシャッフリングはメモリースペースのリ
マッピングとして、そしてこのようなリマッピングは、通常不所望な複雑性を付
加する事によって意外では、発明の動作に影響を与えないという事は、認識する
であろう。 同様に、大きな一組の指示に渡って採用されたパッキングスキーマを持つ事は
好ましい事である。例えば、少なくとも十の指示に対してパッキングスキーマを
採用する事は、発明のいくつかの実施例において好ましい事である。 補足すると、発明の模範的な実施例で使われる特別なパッキングスキーマは、
他の実施例においては必要ではない。例えば、発明の他の幾つかの実施例では、
引き続くメモリー配置において指示を持たなくてもよい。むしろ、指示は、指示
セパレーター符号を含みながら、かなり小さなメモリースペースによって分けら
れてもよい。好ましいのは、小さなメモリースペースは、メモリーワード境界に
おいて指示境界を保つ為に必要なメモリースペースの量より小さい事である。上
記に述べたパッキングは多くの例では好ましいが、その簡易さ、完全さ、そして
効率に負っている。一般的に、パッキングの完全さとパッキングスキーマの複雑
性の間における選択されたトレードオフは、発明の異なる実施例において異なり
得るのである。 また、上記に意味されたように、発明の幾つかの実施例では、完全な一組の利
用可能な指示においてではなく、指示の部分のみにおいてパッキングスキーマを
採用している。たとえば、指示パッキングは、特別なタスクやサブルーチンをな
す為に使われる何セットかの指示のみになしてもよい。 以下の事を注目してもらいたい。ささまざまな長さ指示を伴った、結合高度パ
ック指示記憶は、さらにDSPのメモリー用件を減ずるのである。なぜなら、さ
まざまな長さ指示は、所望の操作を要求する為に必要なデータ量を消費するだけ
だからである。そして、高度パック指示記憶は、トータルメモリーを、一組のさ
まざまな長さ指示によって消費されるメモリーと等しく保つ、従って最小に保ち
のである。減じられたメモリーサイズはチップサイズそしてコストを減ずる事に
なる。 減じられたDSPサイズの利点に加えて、そして、それ故に減ぜられるDSP
コスト、高度パック指示の使用そしてさまざまな長さ指示は、上記に述べた構造
の他の特徴とコンバインされた時更なる予期せぬ利点をもたらすのである。たと
えば、指示メモリーのサイズを小さくすることによって、追加回路エリアは、不
断の、高度パイプライン、データ処理とDSP内で同時に多重操作する為の能力
を含みながら、上記に述べたように利益を提供する、DSP内での三つのデータ
バスの使用の為に利用可能にさせられる。故に、タイトにパックされた指示は、
さらに増したパフォーマンスそして効率の、付加的な、予期せぬ利益を提供する
ために多重バス構造と結合する。 メモリ空間の一貫した位置に可変長インストラクションを蓄積する可能性は、
そのような配置に記憶された可変長インストラクションをフェッチし処理するこ
とができるDSPを提供することにより可能となる。図6は、本発明の一実施例
に基づきインストラクションメモリ152からインストラクションをフェッチす
る際の、インストラクションフェッチユニット156の動作を示す図である。処
理はステップ200で開始され、ステップ202でインストラクションデータの
第1のセットがインストラクションメモリ152から読み出される。本発明の典
型的な実施例では、2つの32ビットワード、或いは64ビットのインストラク
ションデータがステップ202で検索される。
【0037】 ステップ204では、検索された64ビットのインストラクションデータに含
まれる第1のインストラクションインストラクションデコーダ158により処理
される。本発明の代表的な実施例では、インストラクションは16,32或いは
48ビットの長さであってもよい。インストラクションの長さは各インストラク
ションに含まれているヘッダービットの組により決定され、以下において詳細に
記述される。インストラクション長を特定するその他の種々の方法は、2つのイ
ンストラクションを分離し或いは切り離すコードを使用したり、スーパーヘッダ
ーインストラクションを使用したりすることであり、それは従うべきインストラ
クションのセットの長さを特定する。ヘッダービットを使用することはある意味
において好ましい。その理由は、インストラクション長の情報がそのインストラ
クションに近接して保たれるので、インストラクション処理についての状態情報
を記憶したり維持したりする必要性を減じるからである。
【0038】 64ビットの検索されたインストラクション内に含まれる第1のインストラク
ションが処理された後に、48ビット或いはより以上の未処理インストラクショ
ンデータが64ビットの検索インストラクションデータに残っているかどうかを
ステップ206で決定する。48ビット或いはそれ以上の未処理インストラクシ
ョンデータが残っている場合には、残っている48ビットの未処理データに含ま
れる次のインストラクションがステップ204において再び処理される。
【0039】 48ビットより低い未処理インストラクションデータがステップ206におい
て検索インストラクションデータに残っている場合には、追加のインストラクシ
ョンデータがインストラクションメモリ152からロードされる。追加のインス
トラクションをロードする種々の方法が考えられる。本発明の一実施例では、十
分な追加のインストラクションデータがインストラクションメモリからロードさ
れて、インストラクションフェッチユニットに記憶された未処理データの量を4
8ビットに復帰させる。48ビットの未処理データがインストラクションフェッ
チユニット内に蓄積されるようにするために、少なくとも1つの競争インストラ
クションがインストラクションデコーダ158に利用可能となる。
【0040】 本発明の好ましい実施例では、処理された特定量のデータに依存して、48ビ
ットの未処理データが残っている場合には、インストラクションフェッチユニッ
トは可変量のデータを検索する。特に、処理されたデータ量がデータワード(3
2ビット)以上の場合には、新たなインストラクションデータの追加データワー
ド(32ビット)が検索される。以前に処理されたデータ量が2データワード(
64ビット)以上の場合には、2つの新たなデータワードがインストラクション
フェッチユニットにより検索される。
【0041】 処理されたデータのワード数に基づいて検索されたデータの量を決定すること
が好ましい。その理由は、未処理データの十分な量をインストラクションデコー
ダ158に利用可能とする一方、より効率的なワード長アクセスをメモリバンク
に可能とするからである。メモリバンクはインストラクションメモリを構成する
。ステップ206において追加の未処理インストラクションデータが検索される
と、現在利用可能な未処理インストラクションデータのトータル量内で次のイン
ストラクションが処理される。
【0042】 図7は、本発明の一実施例に基づき構成されたインストラクションフェッチユ
ニット156とインストラクションメモリ152を示すブロック図である。イン
ストラクションメモリ152は偶数のメモリバンク302(RAM0)と奇数の
メモリバンク300(RAM1)からなり、それそれは32ビットデータワード
を読取、書き込む。メモリバンクは偶数と奇数にラベルされている。というのは
それらは両方とも同じアドレス空間で疎ドレスされるからである。しかし偶数ア
ドレスは偶数メモリバンク302に向けられ、奇数アドレスは奇数メモリバンク
300に向けられている。8、16,24,48と64ビットワードを含むほか
のワードサイズを読み書きするメモリバンクも別の実施例において使用可能であ
る。更に、異なる数のメモリバンク、即ち1−8メモリバンクを使用することも
可能である。しかしながら、32ビットワードを使用すると全体的な複雑さを減
少でき、インストラクションデータが管理可能な大きさにアドレスされるので、
好ましい。
【0043】 コントロールロジック304は、データワードをメモリバンク300と302
から読み出して、インストラクションレジスタ106と107に送る。読み出さ
れた特定のメモリロケーションは、アドレス線310,314により特定され、
インストラクションの読み出しはイネーブル線332,315,316,318
により制御される。インストラクションレジスタ306,307の32ビット出
力は、16ビット部においてローテータ308の入力A,B,C,Dに供給され
る。ローテータ308は48ビットのインストラクションデータ324を出力す
る。48ビットインストラクションデータ324は、3対4(3:4)入力A,
B,C,Dからなり、各入力は、以下に詳細に説明するように、16ビットを含
むようにセットされている。
【0044】 動作において、コントロールロジック304は、図5を参照して記述されてい
る方法に基づいてインストラクションメモリバンク300,302からインスト
ラクションデータをロードする。特に、コントロールロジック304は、32ビ
ットのデータワードを偶数メモリバンク302と奇数メモリバンク300の両方
から読み出すことによって、まずトータル64ビットの未処理インストラクショ
ンデータをインストラクションレジスタ306,307にロードする。16ビッ
トのインストラクションが処理される場合には、新たねデータはロードされない
。その訳は、インストラクションレジスタ306,307はまだ48ビットの未
処理インストラクションデータを含んでいるからである。32ビットのインスト
ラクションが処理される場合には、インストラクションレジスタ306は32ビ
ットワードの追加インストラクションと共にロードされる。理由は、48ビット
より小の未処理インストラクションデータが残っているからである。32ビット
インストラクションワードをロードし、再び48ビット未処理インストラクショ
ンデータをレジスタ306,307に置く。即ち、16未処理ビットをレジスタ
307に、次の32ビットをレジスタ306に。48ビットインストラクション
が次に処理される場合、未処理インストラクションデータは残っていないので、
レジスタ306,307の両方ともインストラクションデータの32ビットワー
ドと共にロードされる。32ビットワードのインストラクションデータは64ビ
ットの未処理インストラクションデータであり、必要な48ビットインストラク
ションデータよりも大きい。満杯の64ビットインストラクションデータをロー
ドすることは特に必要ないが、工業上通常使用されている2つの32ビットワー
ドインストラクションメモリとレジスタを使用できるので有益である。十分な量
の未処理インストラクションデータを維持する他の方法を使用することも、本発
明の技術的事項の使用に当たる。
【0045】 64ビットの新たなインストラクションデータがインストラクションレジスタ
306,307にロードされると、コントロールロジック304は更にコントロ
ール信号320を使用してローテータ308を形成し、以下の1)〜3)に基づ
き入力A,B,C,Dで受信されたインストラクションデータの次の48ビット
を出力する。1)インストラクションアドレス空間内のインストラクションロケ
ーション、2)処理されたインストラクションの組、3)以前処理されたインス
トラクション。 特に、ローテータ308は、処理されるべきネクスト・ラインの48ビットのイ
ンストラクションデータの組を、最上位または最左位置におけるそのインストラ
クションのネクスト・イン・ライン・ビットと共に出力するように構成されてい
る。
【0046】 例えば、偶数インストラクションレジスタ307のインストラクションデータ
がネクスト・イン・ラインである場合に、インストラクションデータの最初の2
つのワード或いは64ビットをレジスタ306,307にロードする際には、ロ
ーテータ308の出力は、入力A,B,C(ABC)にこの順番で受信されたイ
ンストラクションデータから構成される。奇数インストラクションレジスタ30
6のインストラクションデータがネクスト・イン・ラインである場合には、ロー
テータ308は入力C,D,A(CDA)にこの順番で受信されたインストラク
ションデータを出力するように構成されている。
【0047】 インストラクションが処理されると、新しいインストラクションデータが上述
したようにデータレジスタ306,307にロードされ、ローテータ307は処
理された前のインストラクションのサイズに基づいて出力324にネクスト・イ
ン・ラインインストラクションデータを出力し続ける。処理された前のインスト
ラクションのサイズは、出力324の最初の5ビットのコピーであるヘッダーデ
ータ322によって、コントロールロジック304に送られる。上述したように
、コントロールロジック304へのインストラクション長を特定する所定の方法
は、インストラクション長がインストラクションデータから直接的に決定される
ので、最初の5ビットの使用が好ましい限り、本発明の応用の範囲である。
【0048】 本発明の典型的な実施例では、前のインストラクションサイズは、表1にした
がって2ビット状態情報I1,I0にコード化されている。
【0049】
【表1】
【0050】 更に、ローデータ308の構成は、2つの選択ビットS1,S0によりコント
ロールされていて、この選択ビットは表2のように故どかされてコントロール信
号320を形成している。
【0051】
【表2】
【0052】 明らかなように、状態S1,S0がインクリメントされると、ローテータ30
8は左に回転し、或いはバレルシフトする。左回転は、各入力グループ(A,B
,C,D)が出力において左にシフトすることを意味する。出力の最左方にいた
入力グループは除去される。出力で以前現れなかった入力グループは、最右方の
位置で次に出力として現れる。
【0053】 状態S1,S2、従ってローテータ308の構成は、種々の長さのインストラ
クションに応答して変化する量によって、更新され或いは回転される。特に、処
理されたインストラクション長を表す値(I1,I0)がコントロールビットS
1,S0に加えられ、任意のキャリーアウト値が処分される。即ち S1(t+1),S0(t+1) = S1(t),S0(t)+I0,I1 (1) ブランチ或いはリセット状態においては、値S1,S0は特別のインストラク
ションに基づきリセットされ、処理がブランチ或いはリセットされるので、式(
1)は利用されない。ブランチ、リセット或いはストールインストラクション当
業者に周知であり、この処理は本発明に特に関係がないので、これ以上説明しな
い。
【0054】 典型的な処理では、ローテータ308は出力ABCから始まり、ビットS1,
S0を00に選択する。16ビットのインストラクションが受信された場合には
、対応する01のインストラクション長ビットI1,I0がS1,S0に加えら
れ、01のS1,S2となり、これはBCDのローテータ308からの出力32
4に対応する。出力BCDは、最初の16ビットのインストラクションデータ(
インプットA)が処理された後に、ネクスト・イン・ラインのインストラクショ
ンデータとなる。
【0055】 次のインストラクションが32ビットのインストラクションである場合には、
10のインストラクション長I1,I0が01の現在のS1,S0状態に加えら
れて11となる。その結果として出力はDABとなり、これは、まだ処理されて
いない次の48ビットのインストラクションデータに対応する。この48ビット
のインストラクションデータは、最上位或いは最左方に位置する入力Dで受信さ
れたネクスト・イン・ラインインストラクションデータに構成される。以前、入
力B,Cからのインストラクションデータは処理された。前の32ビットインス
トラクションを処理する間に、新たなデータが上述したインストラクションデー
タロードプロセスに基づいてインストラクションレジスタ307にロードされる
【0056】 48ビットインストラクションが処理される場合には、選択ビットS1,S0
の状態は、11のインストラクション長I1,I0によって増加され、キャリー
アウトを除去して10のS1,S0となり、ローテータ308の出力をCDAと
する。出力CDAは処理されるべき次の48ビットのインストラクションデータ
に対応し、ネクスト・イン・ラインビットは最上位位置になる。以前、入力D,
A,Bのインストラクションデータは処理された。新たなインストラクションデ
ータは前のインストラクションを処理している間にレジスタ306に読み込まれ
る。関連するインストラクションデータ処理を達成する上述したロジックは、例
としてあげた。インストラクションデータ処理を達成する他のロジックを使用し
てもよいことは明らかであり、本発明の使用の範囲に入る。
【0057】 したがって例示的な実施形態では、制御論理は回転子308が制御レジスタ3
06および307から受取った次の48ビットの命令データを出力し、このとき
処理されることになる次の命令ビットが最左位置に位置しているように設定する
。当業者は、所定の構成では命令データを命令処理ユニット158へ送り、これ
により処理されることになる次の組の命令データが識別可能になり、この次の組
のデータにも同じく本発明を使用できることが分かるであろう。
【0058】 既に記載したように、次の48ビットの処理されていない命令データを出力す
ることに加えて、さらに回転子308は処理されることになる次の命令の大きさ
を制御論理304に示す。とくに、回転子308は処理されることになる次の5
ビットの命令データの付加的なコピーを制御論理304へ出力する。本発明の好
ましい実施形態では、命令の長さは最初の5ビットの命令によって特定される。
【0059】 図8は、本発明の1つの実施形態にしたがって設定されたときのMAC128
のブロックである。右へのシフト部900は40ビットの入力を受取って、累算
し、この値を0または16ビットだけシフトし、この出力はマルチプレクサ90
1の1つの入力に加えられる。マルチプレクサ901の他の入力は、値0x80
00を受取る。マルチプレクサ902は乗算されることになる2つの16ビット
の値を、命令デコーダ158からのサインビットと共に受取り、したがって各入
力ごとに合計で17ビットを受取ることになる。
【0060】 マルチプレクサ902の出力は左へのシフト部904によって受取られ、左へ
のシフト部904はこの出力を命令デコーダ158によって特定されたように0
、1、2、または3ビットだけシフトする。加算器/減算器906はマルチプレ
クサ901および左へのシフト部904の出力を受取る。加算器/減算器906
は命令デコーダ158によって命令されたように2つの入力値の加算または減算
を行い、その結果を出力し、この出力は本発明の例示的実施形態ではレジスタバ
ンク入力ポートPI4へ加えられる。
【0061】 本発明の実施形態におけるMACユニット128内の16ビットを右へシフト
するユニット900は、さらに他のタイプのMACユニットにも利用できる。と
くに16ビットを右へシフトするユニット900を使用すると、2倍精度の演算
をより少ないクロックサイクルで実行することが容易になる。例えば、32ビッ
トの数値(A)が16ビットの数値(B)で乗算される2倍精度の演算を実行す
るには、最初に32ビットの数値の下位の16ビット(Al)が第1のクロック
サイクル中に16ビットの数値(B)で乗算されて、レジスタバンク120に記
憶されている中間値Iを得る。
【0062】 第2のクロックサイクル中に中間値Iは16ビットを右へシフトするユニット
900へ入力されて、16ビットだけ右へシフトされる。さらに、16ビットの
数値(B)および32ビットの数値(A)の上位の16ビット(Ah)が乗算さ
れて、その結果が16ビットを右へシフトするユニット900から右へシフトさ
れた中間値Iに加算される。したがって2倍精度の乗算は3クロックサイクルで
はなく、2クロックサイクルで実行される。一般的に、多くの2倍精度の演算で
は、1以上の変数を他の変数に関係してシフトすることが必要であり、したがっ
て乗算または累算の一方は2倍精度の演算を実行するのに必要なサイクル数を低
減するので、シフト段階を同じクロックサイクル中に実行することができる。
【0063】 一般的に第1の乗算、シフト演算、および第2の演算は各々、1クロックサイ
クルを必要とするので、一般的に3クロックサイクルが必要である。したがって
、シフト回路を使用すると、2倍精度の乗算を実行するのに必要なクロックサイ
クル数が低減する。異なる大きさのオペランドを含む他の2倍精度の演算も右へ
シフトするユニット900を使用することによって容易になる。 II. 命令設定 A.概要 図9は本発明の例示的実施形態において使用される命令階層を示すブロック図
である。ブロック402は16、32、または48ビットを含み、DSPの演算
を制御する可変長の完全な命令を示している。さらに可変長の命令は、ブロック
403に示したように、一般命令フラグメントとメモリ移動およびプログラムフ
ロー(MMPF、memory move and program flow
)命令とを含む命令フラグメントから構成されている。本発明の例示的実施形態
において使用された一般命令フラグメントは、MAC8、MAC16、ALU8
、ALU16、DMOV24、およびDL40の命令フラグメントを含む。MM
PF命令フラグメントは、OneMemllTwoMem19、TwoMov1
9、およびThreeMem24の命令フラグメントを含む。MMPF命令フラ
グメントはブロック406に示したMMPF命令サブフラグメントから構成され
ている。MMPF命令サブフラグメントはLD(A)、LD(B)、ST(A)
、ST(B)、LS(C)、DMOVA、DMOVB、およびPF8を含む。種
々の完全な命令、命令フラグメント、および命令サブフラグメントは後でより詳
しく記載する。 B.全体教示 発明の好ましい実施例において、DSPは16、32および48ビットの長さ
を有する全体教示を使用して制御される。全体教示は1つまたはそれ以上の教示
断片を結合することにより形成される。全体教示は教示メモリ152内に連続的
な記憶およびDSPによる処理を許容するように形成される。全体教示のフォー
マットおよび形態は、フォーマットと教示断片の形態とにより後続の以下に記述
される。演算中、DPSは各クロックサイクル毎に全体教示を処理する。かくし
て、複数の演算が選択された特定の組の教示断片により決定された特定の演算と
ともに、各全体教示の処理中実行され得る。
【0064】 発明の例示的実施例に使用された3つの全体教示のフォーマットが表3に示さ
れる。
【表3】
【0065】 各全体教示のため使用される5ビットヘッダーは全体教示の長さ、および全体
教示の内容としてのいくらかの付加的な情報を示す。発明の例示的実施例に使用
されるヘッダーのフォーマットが表4により提供される。
【表4】
【0066】 各全体教示(16、32および48ビット長)は1つまたはそれ以上の教示断
片を含む。表5は発明の例示的実施例において利用可能な教示断片のリストを提
供する。フォーマットと教示断片の演算のより詳細な記述は全体教示の議論の後
に提供される。
【表5】
【0067】 *はあるビットパターンを使用してノップされる(nop’ed)フィールドを
示す。
【0068】 表6−8は発明の例示的実施例により48、32および16ビットの全体教示
内に使用される教示断片の種々の組合せを提供する。教示断片の他の組合せが発
明の使用および演算と合致する間、ここに記述された組合せのある特長が以下に
より詳細に議論されるように提出される。加えて、“保持された”特定でない教
示組合せとして示される全体教示の全部または一部が記述された実施例に指定さ
れまたは使用されるが、これらの全体教示組合せの将来の使用が期待される。
【0069】 表6はここに記述された発明の例示的実施例により実行したときの16ビット
全体教示のフォーマットを提供する。全体教示は11教示ビットにより後続され
る5ビットヘッダーを備えられる。
【表6】
【0070】 注:16ビットNOPはMAC8におけるNOPを使用して得られる。
【0071】 ヘッダービットは教示の型についてのある情報と同様に教示の長さを示す。0
0000のヘッダーについて、最後の重要な3つの末尾ビットが実行されるさら
に特定の演算に使用される。特に、000の末尾ビットは残り8ビットがMAC
8教示断片を含むことを示す。001の末尾ビットは残り8ビットがALU8教
示断片を含むことを示す。他の末尾ビットの組合せについては教示が特定されな
い。
【0072】 00001のヘッダーについて、残りの11ビットがOneMem11教示断
片を含む。ALU、MACまたは実行されるべきメモリ移動演算を許容する16
ビット全体教示を提供することにより、最も共通の演算が最も短い全体教示で実
行され得る。最も短い教示が記憶するメモリの最少量を要求するので、16ビッ
ト全体教示の使用は、記述したように特定の組の演算を実行するに必要な教示メ
モリの量を減少する。かくして、DSPの全体サイズ、およびそれ故コストおよ
び電力消費が十分に減少される。
【0073】 16ビット教示は、演算が実行され得るたった1つ、または減少された数のよ
うな状態のときに典型的に使用される。典型的に、ただ1つの演算を指定するに
必要な教示のサイズは、1つの演算を実行するため半ワード、即ち16ビット教
示の使用により減少され得る。加えて、16ビット教示は、MAC、ALU、人
が実行することを予期する演算の殆ど全てを包含するメモリ移動またはプログラ
ムフロー演算のために使用され得る。
【0074】 図7は発明の一実施例により形成されるとき、教示断片組合せおよび32ビッ
ト全体教示の連合されたフォーマットを示す。
【表7】
【0075】 上記で注目したように、5つのヘッダービットが、教示断片の特定の組合せと
同様に全体教示の長さを示す。例えば、00010のヘッダーはThreeMe
n27教示断片を含む残り27教示ビットを示し、00011のヘッダーはTw
oMem19教示断片により後続されるALU8教示断片を含む残り27教示ビ
ットを示す。
【0076】 01111のヘッダーについて、最少の重要な末尾ビットは教示断片の組合せ
をさらに示す。例えば、0の最少の重要な末尾ビットについて、次の2つの最少
の重要なビットは、残り24ビットがDMOV24、MAC8により後続される
ALU16、またはALU8教示断片により後続されるMAC16であるか否か
を示す。1の最少の重要な末尾ビットのような他の末尾ビット状態は、保持され
た組合せを指定する。
【0077】 32ビット教示は同時に演算されるべき最も普通に実行される演算の多くを許
容し、それはパイプライニングを容易にし、また教示サイズを減少する。例えば
、2つの取出し演算およびフィルタリングとしての応用のような多重/累積演算
を実行することが共通である。32ビット教示は、教示スペースの十分な48ビ
ットを必要とすることなくパイプラインされた様式において実行されるべき演算
のかかる組を許容する。
【0078】 加えて、32ビット教示は、また最大の教示サイズの使用なく、プログラムジ
ャンプおよび呼び演算と同様にMACおよびALU演算が同時に実行されること
を許容する。
【0079】 表8は発明の一実施例により実行したときの48ビットの全体教示の組合せお
よびフォーマットを示す。
【表8】
【0080】 5つのヘッダ(header)のビットは、特定の命令(instructi
on)のフラグメント(fragments)のコンビネーションはもちろん、
命令の長さを特定する。例えば、43残っている命令のビットを示す00100
のヘッダのビットは、DMOV24と、MAC8と、OneMem11とを具備
する。43残っているビットを示す10011のヘッダのビットは、それぞれ命
令のフラグメントのALU16と、MAC8と、TwoMem19とを具備する
【0081】 11111のヘッダのビットについて、3つのうちで下位の有効な末尾のビッ
トは、さらに、残りの命令のビットに含まれる命令のフラグメントを示す。例え
ば、残り40の命令のビットを示す末尾000のビットは、MAC16と、DM
OV24との命令のフラグメントを包含する。残り40の命令のビットを示す末
尾001のビットは、MAC8と、ALU8とDMOV24との命令のフラグメ
ントを包含する。残り40の命令のビットを示す末尾110のビットは、DL4
0の命令のフラグメントを包含する。
【0082】 この命令のフラグメントのコンビネーションは、同時に行われる多数のオペレ
ーションを割り当てる48ビットのフル(full)の命令を有し、その結果、
連続的に行われる場合よりもより速くなる。例えば、いくつかの48ビットのフ
ルの命令は、全て同時に行われるように、ALUオペレーションと、MACオペ
レーションと、メモリオペレーションとに割り当てる。このメモリオペレーショ
ンは、ロード(load)と、ストア(store)と、データの移動のオペレ
ーションとを包含し、直ちに、アクセスされるように複数のメモリの配置を割り
当てる。
【0083】 この48ビットの命令は、すべてのパイプラインの方式で、ALUオペレーシ
ョンと、データの取り出しと、プログラムフローオペレーションとでコンビネー
ションを行われるように複数のオペレーションを割り当てる。これは、ALU(
シフティング(shifting)のような)オペレーションによって追従され
るMACオペレーションを行うことによって、しばしば行われるスケーリングオ
ペレーションで組み合わされた場合にフィルタリングのために役に立ち得る。M
ACとALUオペレーションを使用する他のアプリケーションは、3つもしくは
、それ以上のデータのストリームの組み合わせを包含する。この48ビットの命
令、特に、3つのバスの使用での組み合わせにおいて、これらの場合のオペレー
ションのパイプラインを簡易化(facilities)する。
【0084】 これは、効果的に、5つ(MAC、ALU、FETCH1、FETCH2、S
TORE)のシングル48ビットのフルの命令で行われ得るオペレーションの数
が増す。DSPにおいて、一般に、同時に複数の命令を行う能力は、さらに、D
SPの内部での様々なプロセッシングシステムをカップリングするための複数の
内部バスでのDSPの使用によって高まる。異なるデータのセットは、同時に異
なるバスを使用して移動、並びに、アクセスされ得る。
【0085】 行われ得るオペレーションの数の基礎を置く命令の長さを変化させることによ
って、命令のメモリが使用される効率をさらに増す。いくつかの特定のタスクは
、複数のオペレーションが同時に行われ得るピリオド(period)と、少数
もしくは唯一のオペレーションが行われ得る他のピリオドとを有する。同時に行
われ得るオペレーションの数にしたがって、命令の長さを調節することによって
、命令のメモリの総数は、減らされる。
【0086】 上述の例の方法をパッキング(packing)するタイト(tight)な
命令の使用を組み合わせる場合、要求される命令のメモリは、さらに、減らされ
る。様々な長さの命令、もしくは、タイトにパックされた命令、もしくは、両者
の使用は、これらの特徴を実行するために役に立つサーキット(circuit
)エリアを作ることによって複数のバスと、マルチアクセス(multi−ac
cess)のレジスタ(register)バンクとの使用を容易にする。この
ように、本発明のこれらアスペクトのコンビネーションは、改良された能力と、
改良された効率との利点を同時に有するために相互依存的に結合する。 C.命令のフラグメント 上に記述されたように、フルの命令は、予め定められた方法で、1つ、もしく
は、一まとめにされた命令のフラグメントのセットを具備する。本発明の実施の
形態の一例に役に立つ命令のフラグメントのセットが、表5に示されている。命
令のフラグメントと、コンビネーションとは、結合されるように共に行われる最
も適当なオペレーションのセットを割り当てるようにデザインされる発明の実施
の形態の一例を有するフルの命令を使用するのに役に立たせるので、与えられた
オペレーションを行うために命令のメモリに必要なものの総数が、減らされる。
オペレーションのディスカッションと、様々な命令のフラグメントのフォーマッ
トとは、本発明の次に示す実施の形態の一例を使用された。 C.1、命令のフラグメントのノメンクラチャ(Nomenclature) 命令のフラグメントとサブのフラグメントの次のディスカッションを通して、
次のアブレビエーション(abbreviations)は、下の表9と10と
で記載された記憶を参照して使用される。加えて、本発明の実施の形態の一例で
使用される特定のビットコード(マッピング)は、左に示される。
【表9】
【0087】 注:L3は条件をもたない。
【0088】 表9.インストラクション・フラグメント・ノメンクレチャ(instruc
tion fragment nomenclature)及びコード
【表10】
【0089】 全レジスタから成るregAは、Aメモリからロード/Aメモリに格納され得
る。
【0090】 全レジスタから成るregBは、Bメモリからロード/Bメモリに格納され得
る。
【0091】 全レジスタから成るregCは、Cメモリからロード/Cメモリに格納され得
る。
【0092】 表10.インストラクション・フラグメント・ノメンクレチャー及びコード C.2インストラクション・フラグメント(instruction fra
gment:命令・断片)の記載 インストラクション・フラグメンツのセットは、MACインストラクション
・フラグメンツの2つのタイプ、即ちMAC8及びMAC16を含んでいる。こ
のMAC8インストラクション・フラグメンツは、アキュムレータL0又はL1
の中に格納されたその結果を伴う符号付き−符号なし及び、符号付き−符号付き
のマルチタイプをサポートしている。
【0093】 そのMAC8インストラクション・フラグメンツは、48ビット・インストラ
ンションの代わりに32ビット・インストランションにエンコードされるべき、
1つの16ビットフル・インストラクションの使用や、MAC演算が求める多数
のパラレル・インストラクションの組み合わせによる1つのMAC演算を許容す
ることで、インストラクションRAMをセーブ(save)する。
【0094】 通常、1つのMAC8インストラクションによって実行される処理は、次の式
に 従う。
【式1】
【0095】 式(2)に示す如く、MAC8インストラクション・フラグメンツは、レジス
タR0,R2,R4及びR6と、レジスタR0,R1,R3及びR5の生成内容
が加算された、レジスタL0又はL1の内容を許容するか、または各レジスタの
生成内容の直接的なセットを許容する。また、符号付き−符号なしの多項式が明
記され得る。MAC演算が1つのMAC8インストラクションを用いて実行され
得るためのレジスタ数の制限によれば、インストラクションの長さは8ビットに
維持され得る。そして、インストラクション・フラグメンツの長さは、更に短い
8ビットを用いて実行されるべきMAC演算を許容する。
【0096】 MAC8演算(instruction)によって実行される、この特別なオ
ペレーションは、表11に示すように、演算を構成する8ビットの値によって指
定されている。
【表11】
【0097】 表11 MAC8 インストラクションフラグメントフォーマット> SU/SSは、符号付きまたは符号なし乗算を指定する。MAC8インストラ
クションフラグメント(instructuon fragment)内の様々
な指示のためのコードは、表12に列挙されている。
【表12】
【0098】 表12 MAC8 インストラクションフラグメントコード> このように、0x99というMAC8演算により、レジスタR0とR3との符
号のない積と、レジスタL0の内容(値)との和はレジスタL0中に配置(記憶
)される。
【0099】 MAC16インストラクションフラグメントは、多重に蓄積された演算におい
て用いられている割り当てられた付加的なレジスターによって、付加的な順応性
(flexibility)を提供している。式(3)は、MAC16インスト
ラクションフラグメントを用いて実行可能な演算を示している。
【式2】
【0100】 アキュムレーターの組合わせの全てが乗算・累算演算で使えるわけではないが
、たとえば、あらゆるアキュムレーター(L0−L3)が、あて先として使用さ
れることができる。CPSフィールドは、双対プロセッサが並列に特別なオペレ
ーションを実行するべき信号を送信する。このMAC16演算による特別なオペ
レーションは、表13に示されている命令を構成する16ビットの値によって指
定されている。
【表13】
【0101】 表13 MAC16 インストラクションフラグメントフォーマット> MAC16インストラクションフラグメント内の様々なオペレーションを指定
するための複数のコードは、表14に列挙されている。
【0102】
【表14】
【0103】 MAC16指示フラグメントは、アップの左シフトが3になることを可能とし、
該シフトの後で発生する丸めを伴って、ストレート乗算(蓄積なし)の間にまる
め動作を実行する。蓄積が実行されるとき、加算されるべきアキュムレータは符
号付き−符号付掛け算と並行して16だけシフトダウンされることができる。C
PSビットは、MAC中で使用されるデータが協調プロセッサーに送られるべき
ことを表示するための協調プロセッサー・ストロー部である。
【0104】 MAC8指示フラグメントがMAC16により実行される得る1組のサブセッ
トの動作を実行することが留意されねばならない。MAC8のために選択された
特別の組の指示はMAC16指示フラグメントを使用して実行され得る動作のセ
ット外で最も共通して実行される。これは、MAC動作の多数がMAC8指示フ
ラグメントを使用して実行されることを可能とすることにより、プログラムメモ
リをセーブする。
【0105】 8ビットALU8指示フラグメントは、MAC動作(MAC8とMAC16)
と最も共通して並行にされるALU動作を有している。全てのALU8シフト動
作は、 指示符号化ビットをセーブするために内部シフトレジスタ(SR)レジスタを使
用する数学的シフトである。ALU8指示フラグメントを使用して実行される動
作が表15に示される。
【表15】
【0106】 ALU8指示フラグメントにより実行される特別の動作は、表16に示される
指示フラグメントを作成する8ビットの値により特定される。
【表16】
【0107】 ALU8指示フラグメントを使用して実行される動作を特定するために使用さ
れる特別のコードが、表17に示される。
【表17】
【0108】 ALU16指示フラグメントは、数学的及び論理的シフトの両者でよい。ALU
16指示フラグメントにより実行される特別の動作が表18に示される。 表記<<は、数学的シフトを意味するが、<<<は論理的シフトを意味する。
【表18】
【0109】 ALU16指示フラグメントのフォーマットは、表19に示される。
【表19】
【0110】 ALU16指示フラグメントにより実行される特別の動作は、表20に示され
た指示フラグメントを作成するビットの値により特定される。
【表20】
【0111】 DMOV16指示フラグメントは、異なるデータ移動、表21に示されるデー
タインポートとデータアウトポート、を実行するための16ビット指示フラグメ
ントである。
【表21】
【0112】 DMOV16指示フラグメントを使用可能な動作わ実行するために使用される
フォーマットとコードは、表22に示される。
【表22】
【0113】 指示OUTPORTA(port−addr)はAbus上の値を読み、そし
てそれを指定されたポートに出力する。同時にメモリAからの値を読むことによ
り、この指示は、メモリAから該ポートへ直接に値を送るために使用されること
が出来る。
【0114】 DMOV24指示フラグメントは、表23に示される異なるロード/ストアー
・レジスタダイレクト、又はロード・レジスタ即時動作を実行するための24ビ
ット指示フラグメントである。
【表23】
【0115】 表234は、本発明の例示的な実施態様に従って、DMOV24指示フラグメ
ントを使用可能な種種の動作を実行するために使用されるフォーマットと行く坂
の符号を提供する。
【表24】
【0116】 他の指示フラグメントと同様にDMOV24に関して、幾つかの動作は二度符
号化されることが留意されねばならない。例えば、列(i)と(j)に特定され
たフォーマットは、同じ動作を符号化する。一つは即時バスIm1の使用わ特定
し、他は即時バスIm2の使用を特定する。二度の符号化は、指示フラグメント
が他の指示フラグメントのより大きい多様性と結合されることを許容し、これは
同様に即時バス1又は即時バス2の使用を要求する。
【0117】 40ビット・デュアル・ロード指示フラグメント(DL40)は、即時ロード
又はアドレスロード動作を実行するための40ビット指示フラグメントである。
本発明の例示的な実施態様において実行される特別の動作が表25に示される。
【表25】
【0118】 各動作のためのDL40指示フラグメントのフォーマットは、表26に提供さ
れる。
【表26】
【0119】 表5にまた示されるように、メモリ移動及びプログラムフロー支持フラグメン
トの4つのタイプが、本発明の例示的な実施態様中に提起される。そのリストは
表27に提供される。
【表27】
【0120】 各メモリ移動とプログラムフロー指示(MMPF)フラグメントは、表28に
リストされた1組のMMPFサブフラグメントを具備する。
【表28】
【0121】 MMPF指示フラグメントのフォーマットと動作は、まず議論され、MMPF
サブフラグメントのフォーマットと動作のより詳細な議論が続いて行われた。
【0122】 OneMem11 MMPF指示フラグメントは、単一のメモリロードと格納
動作、データ移動動作、及びプログラムフロー動作を実行するために使用される
。ここに提供された例示的な実施態様において、8つの異なる動作は、表29に
示される11のビットフラグメントの最初の3つのビットにより表示された特別
の動作をもつて、OneMem11 MMPF指示フラグメントを使用して実行
される。それはOneMem11データ移動指示フラグメントを使用して実行さ
れることができる動作をリストする。
【表29】
【0123】 TwoMem19 MMPF指示フラグメントは、19ビット指示フラグメン
トであり、それはメモリロードと格納動作の8つの異なる結合が、表30に示さ
れたように実行されることを可能とする。
【表30】
【0124】 TwoMov19 もMMPF指示フラグメントは、19ビット指示フラグメ
ントであり、それは表31に示されるデータ移動動作と一緒にメモリロードと格
納動作の8つの異なる結合を可能とする。
【表31】
【0125】 ThreeMem27MMPF指示フラグメントは、27ビット指示フラグメ
ントであり、それは、メモリロード、メモリ格納、及び表32に示されるように
実行されるべきデータ動作の8つの異なる結合を可能とする。
【表32】
【0126】 式(4)は、LD(A)指示サブフラグメントにより実行される動作を提供す
る。
【式3】 表33は、本発明の例示的な実施態様に従ってLD(A)指示サブフラグメン
トのフォーマットを提供する。
【表33】
【0127】 式(5)は、LD(b)指示サブフラグメントにより実行される動作を滞京す
る。
【式4】
【0128】 表34は、本発明の例示的な実施態様に従うLD(B)指示サブフラグメント
のフォーマットを提供する。
【表34】
【0129】 式(6)は、ST(A)指示サブフラグメントにより実行される動作を提供す
る。
【式5】
【0130】 表35は、本発明の例示的な実施態様に従うST(A)指示サブフラグメント
のフォーマットを提供する。
【表35】
【0131】 式(7)は、ST(b)指示サブフラグメントにより実行される動作を滞京す
る。
【式6】
【0132】 表36は、本発明の例示的な実施態様に従うST(B)指示サブフラグメント
のフォーマットを提供する。
【表36】
【0133】 表37は、DMOVA指示サブフラグメントにより実行される動作をリストす
る。
【表37】
【0134】 表38は、本発明の例示的な実施態様に従うDMOVA指示サブフラグメント
のフォーマットを提供する。
【表38】
【0135】 このように、一つ以上の指示サブフラグメントを有することができるMMPF
指示フラグメントを提供することにより、全べての指示を使用して実行されるこ
とができる動作の数は、さらに高められる。例えば、全ての指示は、3つのメモ
リ移動とプログラムフロー動作に至る組と一緒に実行されるべき数学的及びMA
C動作を引き起こすことができる。一つの指示を使用してこの多くの動作を実行
する能力は、さらに与えられた動作を実行するために必要な指示の全ぶの数を減
じ、それ故にDSPに要求される全指示メモリを減少する。指示メモリを減じる
ことは、ダイサイズを減じ、それゆえにDSPのコストと電力消費を減少する。
それは、幅広い種種の応用のためにより適しているDSPは移動無線電話を含む
【0136】 このように、高度に並行な種種の長さの指示セットを使用してDSPを制御す
るためのシステムと方法が説明された。好ましい実施態様についての前の説明は
、当業者が本発明をつくり使用することを可能とする。それらの実施態様への種
々の変更は当業者に容易であり、ここに明記された一般的な原理は発明能力を使
用することなく他の実施態様に適用されることができる。例えば、該しシステム
と方法はDSPの文脈において開示されたが、種々の観点が一般のコンピュータ
システムと装置に適用可能である。
【0137】 好ましい実施態様を参照することにより、本発明を説明したが、質問にある実
施態様は単に例示的なものであり、適当な知識と技術を有するものには種々の変
形がクレームに記載された本願発明の範囲と精神とその均等物から離れることな
くなされることができる。
【図面の簡単な説明】
【図1】 図1は従来技術に従って形成されたデジタル信号プロセッサのブロックダイア
グラムである。
【図2】 図2は本発明を具体化するデジタル信号プロセッサのブロックダイアグラムで
ある。
【図3】 図3は入力ポートとレジスタバンクのレジスタとの間の接続のブロックダイア
グラムである。
【図4】 図4はレジスタとレジスタバンクの出力ポートとの間の接続のブロックダイア
グラムである。
【図5】 図5は本発明の具体例に従ってメモリ領域に記憶された一組の可変長命令のダ
イアグラムである。
【図6】 図6は命令フェッチユニットの動作を示すフローチャートである。
【図7】 図7は本発明の具体例に従って形成された命令フェッチユニットのブロックダ
イアグラムである。
【図8】 図8は本発明の具体例に従って形成されたMACユニットのブロックダイアグ
ラムである。
【図9】 図9は本発明の具体例に使用される命令階層のブロックダイアグラムである。
【符号の説明】
6…チップメモリ、10…データメモリ、11…データインタフェイス、13
…指示インターフェイス、
───────────────────────────────────────────────────── フロントページの続き (31)優先権主張番号 09/044,089 (32)優先日 平成10年3月18日(1998.3.18) (33)優先権主張国 米国(US) (31)優先権主張番号 09/044,104 (32)優先日 平成10年3月18日(1998.3.18) (33)優先権主張国 米国(US) (31)優先権主張番号 09/044,086 (32)優先日 平成10年3月18日(1998.3.18) (33)優先権主張国 米国(US) (31)優先権主張番号 09/044,108 (32)優先日 平成10年3月18日(1998.3.18) (33)優先権主張国 米国(US) (81)指定国 EP(AT,BE,CH,CY, DE,DK,ES,FI,FR,GB,GR,IE,I T,LU,MC,NL,PT,SE),OA(BF,BJ ,CF,CG,CI,CM,GA,GN,GW,ML, MR,NE,SN,TD,TG),AP(GH,GM,K E,LS,MW,SD,SL,SZ,UG,ZW),E A(AM,AZ,BY,KG,KZ,MD,RU,TJ ,TM),AL,AM,AT,AU,AZ,BA,BB ,BG,BR,BY,CA,CH,CN,CU,CZ, DE,DK,EE,ES,FI,GB,GD,GE,G H,GM,HR,HU,ID,IL,IN,IS,JP ,KE,KG,KP,KR,KZ,LC,LK,LR, LS,LT,LU,LV,MD,MG,MK,MN,M W,MX,NO,NZ,PL,PT,RO,RU,SD ,SE,SG,SI,SK,SL,TJ,TM,TR, TT,UA,UG,UZ,VN,YU,ZW (72)発明者 ゾウ、キジェン アメリカ合衆国 カリフォルニア州 92126 サン・ディエゴ、ウエストビュ ー・パークウェイ 11507 (72)発明者 ジャ、サンジャイ・ケー アメリカ合衆国 カリフォルニア州 92126 サン・ディエゴ、シーン・テイラ ー・レーン 7415 (72)発明者 カン、イニュップ アメリカ合衆国 カリフォルニア州 92122 サン・ディエゴ、トスカーナ・ウ ェイ・ナンバー326、5386 (72)発明者 リン、ジアン アメリカ合衆国 カリフォルニア州 92126 サン・ディエゴ、スキーリング・ アベニュー 7164 (72)発明者 モティワラ、カイード アメリカ合衆国 カリフォルニア州 92122 サン・ディエゴ、パルミラ・ドラ イブ・ナンバー5329、7665 (72)発明者 ジョン、ディープ アメリカ合衆国 カリフォルニア州 92037 ラ・ジョラ、レジェンツ・ロード 9232、アパートメント・イー (72)発明者 ジャン、リー アメリカ合衆国 カリフォルニア州 92126 サン・ディエゴ、カミノ・ルイ ズ・ナンバー1,10162 (72)発明者 ジャン、ハイタオ アメリカ合衆国 カリフォルニア州 92037 ラ・ジョラ、ミラマー・ストリー ト 3765ビー (72)発明者 リー、ウェイ−シン アメリカ合衆国 カリフォルニア州 92129 サン・ディエゴ、フォウカウド・ ウェイ 6555 (72)発明者 サカマキ、チャールズ・イー アメリカ合衆国 カリフォルニア州 92126 サン・ディエゴ、アクエリアス・ ドライブ 8771 (72)発明者 カンタック、プラシャント・エー アメリカ合衆国 カリフォルニア州 92037 ラ・ジョラ、ビラ・ラ・ジョラ・ ドライブ 8524 Fターム(参考) 5B013 AA01 AA16 DD02 5B033 BA00 BE06 DD09

Claims (84)

    【特許請求の範囲】
  1. 【請求項1】 可変数の命令フラグメントを含む可変長命令に応答してデジ
    タル信号処理を実行するデジタル信号プロセッサにおいて、 命令データが可変長命令を含み、少なくとも1つの最大長の完全な命令にとっ
    て十分な命令データをフェッチする命令フェッチユニットと 前記命令をデコードして、制御信号を発生する命令デコーダと、 処理すべきデータを記憶するレジスタバンクと、 第1のデータを記憶する第1のメモリバンクと、 第2のデータを記憶する第2のメモリバンクと、 第3のデータを記憶する第3のメモリバンクと、 前記第1のデータを前記レジスタバンク中の第1のレジスタに読み込む第1の
    データバスと、 前記第2のデータを前記レジスタバンク中の第2のレジスタに読み込む第2の
    データバスと、 前記第1および第2のレジスタ中の処理すべきデータを処理し、結果を前記レ
    ジスタバンク中の第3のレジスタに書き込む第1の処理ユニットと、 前記結果を前記第3のレジスタから前記第3のメモリに書き込む第3のデータ
    バスとを具備するデジタル信号プロセッサ。
  2. 【請求項2】 前記結果を処理することによりさらに処理された結果を発生
    し、前記結果を前記レジスタバンク中の第4のレジスタに記憶させる第2の処理
    ユニットをさらに具備し、前記第3のデータバスは前記さらに処理された結果を
    前記第4のレジスタから前記第3のメモリにさらに書き込む請求項1記載のデジ
    タル信号プロセッサ。
  3. 【請求項3】 前記第3のデータバスは前記第1のデータバスおよび前記第
    2のデータバスより幅が広い請求項1記載のデジタル信号プロセッサ。
  4. 【請求項4】 前記レジスタバンク中の第1組のレジスタは前記第1の処理
    ユニットおよび前記第2の処理ユニットの両方に書き込むことができ、前記レジ
    スタバンク中の第2組のレジスタは前記第1の処理ユニットまたは前記第2の処
    理ユニットの組のうちの1つに書き込むことができる請求項2記載のデジタル信
    号プロセッサ。
  5. 【請求項5】 前記レジスタバンク中の第1組のレジスタは前記第1の処理
    ユニットおよび前記第2の処理ユニットの両方から読み出すことができ、前記レ
    ジスタバンク中の第2組のレジスタは前記第1の処理ユニットまたは前記第2の
    処理ユニットの組のうちの1つから読み出すことができる請求項2記載のデジタ
    ル信号プロセッサ。
  6. 【請求項6】 デジタル信号には1組の命令が含まれ、命令データに応答し
    てデジタル信号を処理するデジタル信号プロセッサにおいて、 第1のメモリとレジスタバンクとの間でデータを読み出しおよび書き込む第1
    のデータバスと、 第2のメモリと前記レジスタバンクとの間でデータを読み出しおよび書き込む
    第2のデータバスと、 第3のメモリと前記レジスタバンクとの間でデータを読み出しおよび書き込む
    第3のデータバスとを具備し、 前記第1のデータバス、前記第2のデータバス、前記第3のデータバスは同時
    に動作するデジタル信号プロセッサ。
  7. 【請求項7】 前記レジスタバンク中に記憶されているデータを処理する処
    理ユニットをさらに具備する請求項6記載のデジタル信号プロセッサ。
  8. 【請求項8】 1組の演算を要求する可変長の命令をフェッチする命令フェ
    ッチユニットと、 前記可変長の命令をデコードし、前記1組の演算を実行させる命令デコーダと
    をさらに具備する請求項6記載のデジタル信号プロセッサ。
  9. 【請求項9】 前記第1の処理ユニットと同時に前記レジスタバンク中のデ
    ータを処理する第2の処理ユニットをさらに具備する請求項6記載のデジタル信
    号プロセッサ。
  10. 【請求項10】 第1のデータバスを通して第1のデータ値を受け取り、 第2のデータバスを通して第2のデータ値を受け取り、 前記第1のデータ値と前記第2のデータ値を使用して結果を発生し、 第3のデータバスを通して前記結果をメモリに書き込むステップを含むデータ
    を処理する方法。
  11. 【請求項11】 前記第3のデータバスは前記第1のデータバスよりも幅が
    広い請求項10記載の方法。
  12. 【請求項12】 前記第3のバスは前記第1のバスよりも幅が広い請求項1
    0記載の方法。
  13. 【請求項13】 第1のレジスタ中に前記第1のデータ値を記憶し、 第2のレジスタ中に前記第2のデータ値を記憶し、 第3のレジスタ中に前記結果を記憶するステップをさらに含む請求項10記載
    の方法。
  14. 【請求項14】 第1の処理ユニットを使用して前記結果を発生し、 前記第3のレジスタに結合された第2の処理ユニットを使用して前記第1の結
    果から第2の結果を発生するステップをさらに含む請求項13記載の方法。
  15. 【請求項15】 デジタル信号を処理するデジタル信号プロセッサにおいて
    、 第1の入力データと第2の入力データに応答して結果データを発生する処理ユ
    ニットと、 前記第1の入力データを前記処理ユニットに送る第1のデータバスと、 前記第2の入力データを前記処理ユニットに送る第2のデータバスと、 前記結果データを送る第3のデータバスとを具備するデジタル信号プロセッサ
  16. 【請求項16】 前記第1のデータバスに結合され、前記第1の入力データ
    を読み出す第1のメモリシステムと、 前記第2のデータバスに結合され、前記第2の入力データを読み出す第2のメ
    モリシステムと、 前記第3のデータバスに結合され、前記結果データを書き込む第3のメモリシ
    ステムとをさらに具備する請求項15記載のデジタル信号プロセッサ。
  17. 【請求項17】 前記第1のデータバスは前記第3のデータバスよりも幅が
    狭い請求項15記載のデジタル信号プロセッサ。
  18. 【請求項18】 前記第1のデータバスおよび前記第2のデータバスは前記
    第3のデータバスよりも幅が狭い請求項15記載のデジタル信号プロセッサ。
  19. 【請求項19】 前記第1のデータバス、前記第2のデータバス、前記第3
    のデータバス、前記処理ユニットに結合され、前記第1のデータと前記第2のデ
    ータを記憶する第1のレジスタと、 前記結果データを記憶する第2のレジスタと、 前記第2のレジスタに結合され、前記結果データを処理する第2の処理ユニッ
    トとをさらに具備する請求項15記載のデジタル信号プロセッサ。
  20. 【請求項20】 前記第1のデータバス、前記第2のデータバス、前記第3
    のデータバスを制御する制御システムをさらに具備する請求項19記載のデジタ
    ル信号プロセッサ。
  21. 【請求項21】 前記第1の処理ユニットは乗算アキュムレータユニットで
    あり、前記第2の処理ユニットは演算論理ユニットである請求項19記載のデジ
    タル信号プロセッサ。
  22. 【請求項22】 少なくとも3つのデータバスを有する1組のデータバスと
    、 前記1組のデータバス中の各データバスからデータを受け取る複数の処理ユニ
    ットとを具備するデジタル信号プロセッサ。
  23. 【請求項23】 前記複数の処理ユニット中の第1の処理ユニットは乗算ア
    キュムレータユニットであり、前記複数の処理ユニット中の前記第2の処理ユニ
    ットは演算論理ユニットである請求項22記載のデジタル信号プロセッサ。
  24. 【請求項24】 データを記憶するメモリユニットと、 1組のレジスタを備え、データを記憶するレジスタバンクとをさらに具備し、 前記1組のデータバスは対応するデータの組を対応するレジスタに読み込む請
    求項22記載のデジタル信号プロセッサ。
  25. 【請求項25】 データを記憶するメモリユニットと、 1組のレジスタを備え、データを記憶するレジスタバンクとをさらに具備し、 前記1組のデータバスは対応するデータの組を対応するレジスタに書き込む請
    求項22記載のデジタル信号プロセッサ。
  26. 【請求項26】 それぞれ演算を要求する1組の命令フラグメントを有する
    可変長の命令を使用してデジタル信号プロセッサを動作させる方法において、 (a)第1のクロックサイクルの第1のクロックフェーズ中に、前に処理され
    たデータを第1のレジスタから第1の処理ユニットに読み込み、 (b)1組の命令フラグメント中の第1の命令フラグメントに基づいて前記前
    に処理されたデータを処理し、前記第1のクロックサイクル中に、2度処理され
    たデータを生成し、 (c)前記1組の命令フラグメント中の第2の命令フラグメントに基づいて新
    しいデータを処理し、前記第1のクロックサイクル中に、新しく処理されたデー
    タを生成し、 (d)前記第1のクロックサイクルの第2のフェーズ中に、前記新しく処理さ
    れたデータを前記第1のレジスタに書き込み、 (e)前記第1のクロックサイクルの第2のフェーズ中に、前記2度処理され
    たデータを第2のレジスタに書き込むステップを含む方法。
  27. 【請求項27】 ステップ(b)は第1の処理ユニットにより実行され、ス
    テップ(c)は第2の処理ユニットにより実行される請求項26記載の方法。
  28. 【請求項28】 前記可変長の命令を含む命令データを読み出し、 次の命令長を決定し、 前記次の命令長に等しい前記命令データ中のデータ量をデコードするステップ
    を含む請求項26記載の方法。
  29. 【請求項29】 第1の処理ユニットと、 第2の処理ユニットと、 前記第1の処理ユニットおよび前記第2の処理ユニットに読み出し可能に結合
    されたレジスタとを具備するマイクロプロセッサ。
  30. 【請求項30】 前記レジスタに結合されたデータバスと、 前記データバスに結合されたデータメモリとをさらに具備する請求項29記載
    のマイクロプロセッサ。
  31. 【請求項31】 前記第1の処理ユニットに結合されているが、前記第2の
    処理ユニットには結合されていない第2のレジスタと、 前記第2の処理ユニットに結合されているが、前記第1の処理ユニットには結
    合されていない第3のレジスタとをさらに具備する請求項29記載のマイクロプ
    ロセッサ。
  32. 【請求項32】 前記レジスタは2つのフェーズクロックサイクルで動作し
    、前記レジスタは前記2つのフェーズクロックサイクルの第1のフェーズ中に読
    み出され、前記レジスタは前記2つのフェーズクロックサイクルの第2のフェー
    ズ中に書き込まれる請求項29記載のマイクロプロセッサ。
  33. 【請求項33】 前記第1の処理ユニットを前記レジスタに第1の構成で結
    合し、前記第2の処理ユニットを前記レジスタに第2の構成で結合するマルチプ
    レクサをさらに具備する請求項29記載のマイクロプロセッサ。
  34. 【請求項34】 命令データに基づいて前記マルチプレクサを構成する制御
    システムをさらに具備する請求項33記載のマイクロプロセッサ。
  35. 【請求項35】 前記第1の処理ユニットは乗算アキュムレータである請求
    項29記載のマイクロプロセッサ。
  36. 【請求項36】 前記第1の処理ユニットは演算論理ユニットである請求項
    35記載のマイクロプロセッサ。
  37. 【請求項37】 第1のデータメモリと、 第2のデータメモリと、 前記第1のデータメモリと前記レジスタとに結合された第1のバスと、 前記第2のデータメモリと前記レジスタとに結合された第2のバスとをさらに
    具備する請求項29記載のマイクロプロセッサ。
  38. 【請求項38】 前記レジスタは前記レジスタの出力を通して前記第1の処
    理ユニットと前記第2の処理ユニットとに結合され、前記第1の処理ユニットの
    出力は前記レジスタの入力に結合されている請求項29記載のマイクロプロセッ
    サ。
  39. 【請求項39】 デジタル信号プロセッサを動作させる方法において、 第1のクロックサイクルの第1のクロックフェーズ中に、処理されたデータを
    レジスタから第1の処理ユニットに読み込み、 前記第1のクロックサイクル中に、前記第1の処理ユニットを使用して前記処
    理されたデータを処理して、さらに処理されたデータを生成し、 前記第1のクロックサイクル中に、第2の処理ユニット中の他のデータを処理
    して、新しく処理されたデータを生成し、 前記第1のクロックサイクルの第2のフェーズ中に、前記新しく処理されたデ
    ータを前記レジスタに書き込むステップを含む方法。
  40. 【請求項40】 前記第1のクロックサイクルの前記第2のフェーズ中に、
    前記さらに処理されたデータを第2のレジスタに書き込むステップをさらに含む
    請求項39記載の方法。
  41. 【請求項41】 データを処理する第1の処理ユニットと、 データを処理する第2の処理ユニットと、 前記第1の処理ユニットと前記第2の処理ユニットの両方にデータを書き込む
    ことができる第1組のレジスタと、 前記第1の処理ユニットにはデータを書き込むことができるが、前記第2の処
    理ユニットにはデータを書き込むことができない第2組のレジスタとを具備する
    デジタル信号プロセッサ。
  42. 【請求項42】 前記第1の処理ユニットは乗算アキュムレータユニットで
    あり、前記第2の処理ユニットは演算論理ユニットである請求項41記載のデジ
    タル信号プロセッサ。
  43. 【請求項43】 アドレス空間を有するメモリ中に記憶された命令を使用し
    てデジタル信号プロセッサを制御する方法において、 第1の命令の第1の部分を含むメモリの第1のデータワードを書き出し、 第1の命令の第2の部分と第2の命令の第1の部分を含むメモリの第2のデー
    タワードを書き出すステップを含む方法。
  44. 【請求項44】 前記第1の命令は複数の命令フラグメントから構成され、
    各命令フラグメントは特定の演算を実行する請求項43記載の方法。
  45. 【請求項45】 前記第1の命令と前記第2の命令は異なる長さである請求
    項43記載の方法。
  46. 【請求項46】 前記第1の命令と前記第2の命令は1組の命令フラグメン
    トから構成され、各命令フラグメントは特定の演算を実行する請求項43記載の
    方法。
  47. 【請求項47】 前記命令フラグメントには第1の命令フラグメントと第2
    の命令フラグメントとが含まれ、前記第1の命令フラグメントは1組の演算を要
    求し、1組の演算は前記第2の命令フラグメントにより実行される1組の演算の
    サブセットである請求項46記載の方法。
  48. 【請求項48】 前記第1の命令フラグメントは前記第2の命令フラグメン
    トよりも短い請求項47記載の方法。
  49. 【請求項49】 デジタル信号プロセッサを制御するシステムにおいて、 フロントエッジワード境界を有するアドレスワードでアドレス可能なアドレス
    空間を持つメモリと、 前記メモリに記憶された、それぞれフロントエッジ命令境界を有する1組の可
    変長の命令とを具備し、 前記フロントエッジ命令境界の第1の部分は前記フロントエッジワード境界に
    対応し、前記フロントエッジ命令境界の第2の部分は前記フロントエッジワード
    境界と異なっているシステム。
  50. 【請求項50】 前記可変長の命令は可変数の命令フラグメントを含む請求
    項49記載のシステム。
  51. 【請求項51】 前記可変長の命令は各可変長の命令がどれ位長いかを示す
    ヘッダを含む請求項49記載のシステム。
  52. 【請求項52】 前記メモリは前記デジタル信号プロセッサの命令メモリ内
    に配置されている請求項49記載のシステム。
  53. 【請求項53】 デジタル信号プロセッサを制御するシステムにおいて、 バックエッジワード境界を有するアドレスワードでアドレス可能なアドレス空
    間を持つメモリと、 前記メモリに記憶された、それぞれバックエッジ命令境界を有する1組の可変
    長の命令とを具備し、 前記バックエッジ命令境界の第1の部分は前記バックエッジワード境界に対応
    し、前記バックエッジ命令境界の第2の部分は前記バックエッジワード境界と異
    なっているシステム。
  54. 【請求項54】 前記可変長の命令は可変数の命令フラグメントを含む請求
    項53記載のシステム。
  55. 【請求項55】 前記可変長の命令は各可変長の命令がどれ位長いかを示す
    ヘッダを含む請求項53記載のシステム。
  56. 【請求項56】 前記メモリは前記デジタル信号プロセッサの命令メモリ内
    に配置されている請求項53記載のシステム。
  57. 【請求項57】 マイクロプロセッサを制御するシステムにおいて、 命令を記憶し、アドレス空間を有するメモリと、 演算を要求する複数の可変長の命令とを具備し、 前記複数の可変長の命令の実質的な部分は前記アドレス空間のほぼ連続的な位
    置に配置されているシステム。
  58. 【請求項58】 10より多い命令が前記メモリ内のほぼ連続的な位置に配
    置されている請求項57記載のシステム。
  59. 【請求項59】 前記命令の90パーセントより多い命令が前記メモリ空間
    内のほぼ連続的な位置に配置されている請求項57記載のシステム。
  60. 【請求項60】 前記命令の25パーセントより多い命令が前記メモリ空間
    内のほぼ連続的な位置に配置されている請求項57記載のシステム。
  61. 【請求項61】 前記可変長の命令はどれ位多くの命令データが可変長の命
    令に存在しているかにしたがって変化する請求項57記載のシステム。
  62. 【請求項62】 集積回路を制御する方法において、 (a)実行すべき1組の演算に対応する1組の命令フラグメントを発生し、 (b)同時に実行することができる前記命令フラグメントを命令フラグメント
    組にグループ分けし、 (c)その可変長の命令がどれ位長い可変長のフル命令を生成するかを示すヘ
    ッダを各命令フラグメントに付加し、 (d)前記可変長のフル命令をアドレス空間の連続的なアドレスで前記集積回
    路に書き込むステップを含み、 前記アドレス空間はワード境界を有する方法。
  63. 【請求項63】 前記可変長の命令は16ビット、32ビット、48ビット
    の命令から構成されている請求項62記載の方法。
  64. 【請求項64】 各ヘッダは前記可変長のフルの長さの命令内で最上位の位
    置に配置され、5ビットから構成されている請求項62記載の方法。
  65. 【請求項65】 前記命令フラグメントのサブセットは、1つ、2つあるい
    は3つの命令フラグメントを含むことができる請求項62記載の方法。
  66. 【請求項66】 デジタル信号プロセッサを制御する方法において、 (a)減少された数の演算が並列に処理されるべきときに短い命令を発生し、 (b)より多い数の演算が並列に処理されるべきときに長い命令を発生するス
    テップを含む方法。
  67. 【請求項67】 前記短い命令と前記長い命令はアドレスワード境界を有す
    るメモリ中の連続的な位置に記憶される請求項66記載の方法。
  68. 【請求項68】 ステップ(a)は、 他の任意の演算と同時に実行できない演算を識別し、 命令フラグメントと、短い命令がどれ位の長さかを示すヘッダとから前記短い
    命令を構成するステップからなる請求項66記載の方法。
  69. 【請求項69】 ステップ(b)は、 同時に実行できる1組の演算を識別し、 前記1組の演算を実行する1組の命令フラグメントと、長い命令がどれ位の長
    さかを示すヘッダとから前記長い命令を構成するステップからなる請求項66記
    載の方法。
  70. 【請求項70】 前記ヘッダは5ビットから構成されている請求項68記載
    の方法。
  71. 【請求項71】 前記ヘッダは5ビットから構成されている請求項69記載
    の方法。
  72. 【請求項72】 可変数の命令フラグメントを含む可変長の命令を処理する
    方法において、 (a)可能な最大長の可変長命令を含むのに十分な大きさの第1組の命令デー
    タを読み出し、 (b)前記第1組の命令データ内に記憶されている第1の可変長の命令を処理
    し、 (c)未処理の命令データ量が前記可能な最大長よりも少ないときに付加的な
    命令データをロードするステップを含む方法。
  73. 【請求項73】 ステップ(a)は、 第1のデータワードを読み出し、 第2のデータワードを読み出すステップから構成されている請求項72記載の
    方法。
  74. 【請求項74】 ステップ(c)は、 未処理の命令データ量が前記可能な最大長の1つの命令ワード内であるときに
    1つの命令ワードを読み出し、 未処理の命令データ量が前記可能な最大長よりも少ない1つの命令ワードより
    多いときに2つの命令ワードを読み出すステップを含む請求項73記載の方法。
  75. 【請求項75】 メモリ内のほぼ連続的なメモリ空間中に配置された複数の
    可変長の命令を具備し、 前記複数の可変長の命令中の各命令は、 命令の長さを示すヘッダ部と、 実行すべき演算を特定する本体部とを有するメモリ。
  76. 【請求項76】 デジタル信号プロセッサ中の命令データを処理する制御シ
    ステムにおいて、 ワードでアドレス可能な第1のメモリバンクと第2のメモリバンクとを備え、
    未処理の命令データを記憶し、前記命令データは最大命令長を有する命令メモリ
    と、 前記命令メモリから読み出す命令レジスタと、 前記命令レジスタ中の未処理の命令データ量が前記最大命令長の1つのワード
    内であるときに、命令データの1つのワードを前記命令メモリから前記命令レジ
    スタにロードし、前記最大命令長と前記命令レジスタ中の前記未処理データとの
    間に1つよりも多いワードの不足があるときに命令データの2つのワードを前記
    命令メモリから前記命令レジスタにロードする制御システム部とを具備する制御
    システム。
  77. 【請求項77】 1組のローテート構成のうちの1つで前記命令レジスタ中
    にデータを出力するローテータをさらに具備し、 前記制御システム部はさらに、前記命令レジスタからの未処理データを前記ロ
    ーテータを使用して最上位位置に保持する請求項76記載の制御システム。
  78. 【請求項78】 前記可変長の命令は前記ワード以下の長さを有する請求項
    76記載の制御システム。
  79. 【請求項79】 前記可変長の命令はフロントエッジ命令境界とバックエッ
    ジ命令境界を有し、前記可変長の命令は、メモリアドレス空間中で相互に隣接す
    る2つの連続的な命令のフロントエッジ命令境界とバックエッジ命令境界を有す
    る前記命令メモリ内で、ワード境界間に記憶される請求項76記載の制御システ
    ム。
  80. 【請求項80】 前記可変長の命令は可変数の命令フラグメントを含み、各
    命令フラグメントは特定の演算を実行する請求項76記載の制御システム。
  81. 【請求項81】 データを記憶するレジスタバンクと、 前記データに乗算アキュムレート演算を実行する乗算アキュムレータユニット
    と、 前記乗算アキュムレータユニットの入力に結合され、第1の構成で入力データ
    をシフトし、第2の構成で前記入力データを通過させるシフトユニットとを具備
    するデジタル信号プロセッサ。
  82. 【請求項82】 前記シフトユニットは前記入力データをシフトし、前記乗
    算アキュムレータユニットは単一の処理サイクル中に前記乗算アキュムレート演
    算を実行する請求項81記載のデジタル信号プロセッサ。
  83. 【請求項83】 下位16ビットAlおよび上位16ビットAhを有する3
    2ビット数Aと、16ビット数Bとに2倍精度乗法演算を実行するシステムにお
    いて、 (a)第1のクロックサイクル中にBによりAlを乗算して、第1の中間値I
    1を生成し、 (b)16ビットだけ右に前記中間値I1をシフトして、シフトされた中間値
    SI1を生成し、 (c)BとAhを乗算して、第2の中間値I2を生成し、 (d)I2に前記シフトされた中間値SI1を加算し、 ステップ(b)−(d)は第2のクロックサイクル中に実行されるシステム。
  84. 【請求項84】 メモリと処理装置との間の可変長のデータの伝送が最適化
    されるように選択された第2の複数の選択可能なバスを通して第1の複数の処理
    装置とメモリが接続可能であるデジタル信号プロセッサ。
JP2000537132A 1998-03-18 1999-03-04 デジタル信号プロセッサ Withdrawn JP2002507789A (ja)

Applications Claiming Priority (13)

Application Number Priority Date Filing Date Title
US4410498A 1998-03-18 1998-03-18
US4408998A 1998-03-18 1998-03-18
US4410898A 1998-03-18 1998-03-18
US4408798A 1998-03-18 1998-03-18
US09/044,088 1998-03-18
US09/044,086 US6425070B1 (en) 1998-03-18 1998-03-18 Variable length instruction decoder
US09/044,108 1998-03-18
US09/044,086 1998-03-18
US09/044,087 1998-03-18
US09/044,104 1998-03-18
US09/044,088 US6496920B1 (en) 1998-03-18 1998-03-18 Digital signal processor having multiple access registers
US09/044,089 1998-03-18
PCT/US1999/004887 WO1999047999A1 (en) 1998-03-18 1999-03-04 A digital signal processor

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2010157075A Division JP5677774B2 (ja) 1998-03-18 2010-07-09 デジタル信号プロセッサ

Publications (2)

Publication Number Publication Date
JP2002507789A true JP2002507789A (ja) 2002-03-12
JP2002507789A5 JP2002507789A5 (ja) 2008-07-03

Family

ID=27556460

Family Applications (4)

Application Number Title Priority Date Filing Date
JP2000537132A Withdrawn JP2002507789A (ja) 1998-03-18 1999-03-04 デジタル信号プロセッサ
JP2010157075A Expired - Lifetime JP5677774B2 (ja) 1998-03-18 2010-07-09 デジタル信号プロセッサ
JP2014181387A Expired - Lifetime JP6152558B2 (ja) 1998-03-18 2014-09-05 デジタル信号プロセッサ
JP2016040960A Expired - Lifetime JP6300284B2 (ja) 1998-03-18 2016-03-03 デジタル信号プロセッサ

Family Applications After (3)

Application Number Title Priority Date Filing Date
JP2010157075A Expired - Lifetime JP5677774B2 (ja) 1998-03-18 2010-07-09 デジタル信号プロセッサ
JP2014181387A Expired - Lifetime JP6152558B2 (ja) 1998-03-18 2014-09-05 デジタル信号プロセッサ
JP2016040960A Expired - Lifetime JP6300284B2 (ja) 1998-03-18 2016-03-03 デジタル信号プロセッサ

Country Status (12)

Country Link
EP (2) EP1457876B1 (ja)
JP (4) JP2002507789A (ja)
KR (3) KR100835148B1 (ja)
CN (2) CN1523491A (ja)
AR (5) AR026078A2 (ja)
AT (1) ATE297567T1 (ja)
AU (1) AU2986099A (ja)
CA (1) CA2324219C (ja)
DE (1) DE69925720T2 (ja)
DK (1) DK1066559T3 (ja)
HK (2) HK1035594A1 (ja)
WO (1) WO1999047999A1 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2986099A (en) * 1998-03-18 1999-10-11 Qualcomm Incorporated A digital signal processor
JP4100300B2 (ja) 2003-09-02 2008-06-11 セイコーエプソン株式会社 信号出力調整回路及び表示ドライバ
JP4661169B2 (ja) * 2003-11-14 2011-03-30 ヤマハ株式会社 ディジタルシグナルプロセッサ
JP4300151B2 (ja) * 2004-04-19 2009-07-22 Okiセミコンダクタ株式会社 演算処理装置
US7246218B2 (en) * 2004-11-01 2007-07-17 Via Technologies, Inc. Systems for increasing register addressing space in instruction-width limited processors
US7337272B2 (en) * 2006-05-01 2008-02-26 Qualcomm Incorporated Method and apparatus for caching variable length instructions
US10001993B2 (en) 2013-08-08 2018-06-19 Linear Algebra Technologies Limited Variable-length instruction buffer management
US11768689B2 (en) 2013-08-08 2023-09-26 Movidius Limited Apparatus, systems, and methods for low power computational imaging
FR3021427B1 (fr) * 2014-05-22 2016-06-24 Kalray Structure de paquet d'instructions de type vliw et processeur adapte pour traiter un tel paquet d'instructions
CN110515658A (zh) * 2014-07-30 2019-11-29 莫维迪厄斯有限公司 用于管理可变长度指令的方法和设备
JP6695320B2 (ja) * 2014-07-30 2020-05-20 リニア アルジェブラ テクノロジーズ リミテッド 低電力コンピュータイメージング
CN109496306B (zh) * 2016-07-13 2023-08-29 莫鲁米有限公司 多功能运算装置及快速傅里叶变换运算装置
JP7384374B2 (ja) * 2019-02-27 2023-11-21 株式会社ウーノラボ 中央演算処理装置
US11204768B2 (en) 2019-11-06 2021-12-21 Onnivation Llc Instruction length based parallel instruction demarcator

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4099229A (en) * 1977-02-14 1978-07-04 The United States Of America As Represented By The Secretary Of The Navy Variable architecture digital computer
US5293611A (en) * 1988-09-20 1994-03-08 Hitachi, Ltd. Digital signal processor utilizing a multiply-and-add function for digital filter realization
JP2791086B2 (ja) * 1989-03-15 1998-08-27 富士通株式会社 命令プリフェッチ装置
EP0436341B1 (en) * 1990-01-02 1997-05-07 Motorola, Inc. Sequential prefetch method for 1, 2 or 3 word instructions
US5295249A (en) * 1990-05-04 1994-03-15 International Business Machines Corporation Compounding preprocessor for cache for identifying multiple instructions which may be executed in parallel
JP2560889B2 (ja) * 1990-05-22 1996-12-04 日本電気株式会社 マイクロプロセッサ
JP2682761B2 (ja) * 1991-06-18 1997-11-26 松下電器産業株式会社 命令プリフェッチ装置
US5438668A (en) * 1992-03-31 1995-08-01 Seiko Epson Corporation System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer
JPH06103068A (ja) * 1992-09-18 1994-04-15 Toyota Motor Corp データ処理装置
JPH06250854A (ja) * 1993-02-24 1994-09-09 Matsushita Electric Ind Co Ltd 命令プリフェッチ装置
JP3168845B2 (ja) * 1994-10-13 2001-05-21 ヤマハ株式会社 ディジタル信号処理装置
US5819056A (en) * 1995-10-06 1998-10-06 Advanced Micro Devices, Inc. Instruction buffer organization method and system
JP3655403B2 (ja) * 1995-10-09 2005-06-02 株式会社ルネサステクノロジ データ処理装置
US5710914A (en) * 1995-12-29 1998-01-20 Atmel Corporation Digital signal processing method and system implementing pipelined read and write operations
JP2806359B2 (ja) * 1996-04-30 1998-09-30 日本電気株式会社 命令処理方法及び命令処理装置
AU2986099A (en) * 1998-03-18 1999-10-11 Qualcomm Incorporated A digital signal processor

Also Published As

Publication number Publication date
JP2010282637A (ja) 2010-12-16
JP2015028793A (ja) 2015-02-12
AU2986099A (en) 1999-10-11
HK1094608A1 (en) 2007-04-04
KR100940465B1 (ko) 2010-02-04
KR100835148B1 (ko) 2008-06-04
WO1999047999A1 (en) 1999-09-23
KR20010082524A (ko) 2001-08-30
EP1457876A3 (en) 2006-11-02
DE69925720T2 (de) 2006-03-16
JP5677774B2 (ja) 2015-02-25
EP1457876B1 (en) 2017-10-04
CA2324219C (en) 2011-05-10
CN1301363A (zh) 2001-06-27
AR026081A2 (es) 2002-12-26
ATE297567T1 (de) 2005-06-15
KR100896674B1 (ko) 2009-05-14
HK1035594A1 (en) 2001-11-30
EP1066559A1 (en) 2001-01-10
AR026082A2 (es) 2002-12-26
DK1066559T3 (da) 2005-10-03
KR20060040749A (ko) 2006-05-10
CA2324219A1 (en) 1999-09-23
DE69925720D1 (de) 2005-07-14
KR20060040748A (ko) 2006-05-10
JP2016146189A (ja) 2016-08-12
CN1523491A (zh) 2004-08-25
JP6300284B2 (ja) 2018-03-28
JP6152558B2 (ja) 2017-06-28
AR026079A2 (es) 2002-12-26
AR026078A2 (es) 2002-12-26
CN1279435C (zh) 2006-10-11
EP1066559B1 (en) 2005-06-08
AR026080A2 (es) 2002-12-26
EP1457876A2 (en) 2004-09-15

Similar Documents

Publication Publication Date Title
JP5677774B2 (ja) デジタル信号プロセッサ
US7502911B2 (en) Variable length instruction fetching that retrieves second instruction in dependence upon first instruction length
US6425070B1 (en) Variable length instruction decoder
JP2016146189A5 (ja)
JP4934356B2 (ja) 映像処理エンジンおよびそれを含む映像処理システム
US20090249039A1 (en) Providing Extended Precision in SIMD Vector Arithmetic Operations
KR20010030593A (ko) 디지털 신호 프로세싱 능력을 가진 데이터 프로세싱 유닛
US7546442B1 (en) Fixed length memory to memory arithmetic and architecture for direct memory access using fixed length instructions
EP2267596B1 (en) Processor core for processing instructions of different formats
JP2002529847A (ja) ビットfifoを有するディジタル信号プロセッサ
US6859872B1 (en) Digital signal processor computation core with pipeline having memory access stages and multiply accumulate stages positioned for efficient operation
US6820189B1 (en) Computation core executing multiple operation DSP instructions and micro-controller instructions of shorter length without performing switch operation
US6275925B1 (en) Program execution method and program execution device
US20030005269A1 (en) Multi-precision barrel shifting
JP2003502753A (ja) レジスタスタックを備えるデータプロセッサ
JPH01111232A (ja) マイクロプログラム制御回路

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060228

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20080514

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090106

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090406

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090413

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090706

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100309

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20120702