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

デジタル信号プロセッサ Download PDF

Info

Publication number
JP6152558B2
JP6152558B2 JP2014181387A JP2014181387A JP6152558B2 JP 6152558 B2 JP6152558 B2 JP 6152558B2 JP 2014181387 A JP2014181387 A JP 2014181387A JP 2014181387 A JP2014181387 A JP 2014181387A JP 6152558 B2 JP6152558 B2 JP 6152558B2
Authority
JP
Japan
Prior art keywords
instruction
data
instruction data
memory
instructions
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP2014181387A
Other languages
English (en)
Other versions
JP2015028793A (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,088 external-priority patent/US6496920B1/en
Priority claimed from US09/044,086 external-priority patent/US6425070B1/en
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2015028793A publication Critical patent/JP2015028793A/ja
Application granted granted Critical
Publication of JP6152558B2 publication Critical patent/JP6152558B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

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)

Description

本発明はデジタル信号プロセッサに関する。本発明は特別の、但し排他的ではない、高度に並列的で、高度にパイプライン化された処理技術を使用するデジタル信号処理に関する応用を有する。
デジタル信号プロセッサ(DSPs:Digital Signal Processors)はデジタル信号のリアルタイム処理に一般に使用される。デジタル信号は一般に対応するアナログ信号を表現するために使用される一連の数またはデジタル値である。DSPsはコンパクトディスクプレイヤのようなオーディオシステム、およびセルラー電話のような無線通信システムを含む広範囲の応用に使用される。
DSPはしばしばマイクロプロセッサの特別のフォームであると考えられている。マイクロプロセッサのように、DSPは典型的にはシリコンをベースにした半導体集積回路上に形成される。さらに、マイクロプロセッサとともに、DSPsの計算機能力は縮小命令セット(RISC)計算技術を使用することにより高められる。RISC計算技術は、DSPの動作を制御するために同様サイズの命令のより小さい数を使用することを含んでいる。ここで、各命令は同じ長さの時間において実行される。RISC計算技術の使用は、DSPの内の命令パイプライン化の量と同様に、命令が実行されるスピード、或いはクロック速度を高める。これは、DSPの全体的な計算機能力を高める。
RISC計算技術を使用してDSPを構成することは、また望ましくない特性を形成する。特に、RISCベースのDSPsは、与えられたタスクを実行するために非常に多数の命令を実行する。追加の命令を実行することは、たとえ、これらの命令を実行する時間がRISCベースのDSPの改善されたクロック速度のために減少しても、RIDSPの電力消費を増加させる。さらに、非常に多数の命令を使用することにより、該DSPの内のオンチップ(on-chip)命令メモリのサイズが増加する。メモリ構造は、DSPの内の実質的な(しばしば全体の50%以上)回路領域を要求し、それはDSPのサイズとコストを増加させる。このように、RISCベースのDSPsの使用は、低いコスト、低い電力、ディジタルセルラー電話やバッテリ動作無線通信システムの他のタイプのような応用に関して理想的とはいえない。
図1は、従来技術に従って構成されたディジタル信号プロセッサの高度に単純化されたブロックダイアグラムである。演算論理ユニット(ALU)16はALUレジスタバンク (bank)17に結合され、乗算累算(MAC)回路26はMACレジスタバンク27に結合される。データバス20は、MACレジスタバンク27、ALUレジスタ17及び(チップ上)データメモリ10を結合する。命令バス22は、MACレジスタバンク27、(オン−チップ)命令メモリ12、MACバンク27及びALUレジスタバンク17を結合する。
命令復号器18はMAC26とALU16に結合され、いくつかの従来システムにおいては、命令復号器18は命令メモリ12に直接結合される。データメモリ10は、またデータインターフェース11に結合され、命令メモリ12は、また命令インターフェース13に結合される。データインターフェース12と命令インターフェース12はオフ−チップメモリ6とデータと命令を交換する。
動作中、命令メモリ12中の命令は、命令復号器18により復号される。応答して、命令復号器18は、ALU16およびMAC26に適用される内部制御信号を発生する。これらの内部制御信号は典型的に、ALU16に、ALUレジスタバンク17とデータメモリ10または命令メモリ12との間で命令データを交換させる。同様に、これらの内部制御信号はMAC26に、MACレジスタバンク27と命令メモリ12またはデータメモリ10との間で命令データを交換させる。さらに、これらの制御信号は、ALU16およびMAC26に種々の動作を、ALUレジスタバンク17およびMACレジスタバンク27中に記憶されているデータに応答して、および該データに関して、それぞれ行わせる。
例示的な動作において、命令メモリ12はALU16およびMAC26による使用のためにある定まった係数データを含むことができ、そしてデータメモリ10は処理されるべきデータ(信号データ)を含むことができる。係数データは、DSPを使用して周波数フィルタを構成するためのものであってもよく、それは慣例である。フィルタリング(filtering)が行われると、データメモリ10からの信号データおよび命令メモリ12からの係数データは共に、MACレジスタ27に読み込まれる。命令メモリ12内の追加の命令データはまた、命令データバス22を通ってあるいは直接接続(connection)によってのいずれかにより、命令復号器18に適用される。追加の命令データは、MAC26により行われる動作を特定する。MAC26により発生された結果は典型的に、データメモリ10に読み込まれて戻される。
多くの処理の非効率はこの従来技術の処理の結果生じる。これらの処理の非効率には、たとえば、信号データの読み出しと出力データの書き込みの両方を行わなければならないデータメモリ10への、バス、またはアクセス競合(contention)だけでなく、命令データをMACレジスタ26および命令復号器18の両方に供給することも行わなければならない命令メモリ12への、バス、またはアクセス競合が含まれる。さらに、多くの例において、出力データに関する追加の処理は、ALU16により行われなければならない。これはデータメモリ10へのアクセスをさらに悪化させ、それ故データバス20に対する競合を生じさせる。何故ならそれは、出力データがMACレジスタバンク27からデータメモリ10に書き込まれ、その後にALUレジスタ17に読み出されなければならないからである。これらの読み出しおよび書き込み動作はバス20によって行われ、それ故追加のバスサイクルが浪費される。このような非効率性はDSPの処理性能を低下させる。
本発明は、本願を通して記載される他の特徴および進歩を提供することによるのと同様に、上記問題点および非能率性を処理することによりDSPの性能および有用性を増進させることを目的とする。
本発明は、デジタル信号処理のための方法および回路を提供することを目的とする。
本発明の1つの観点によると、メモリと処理装置との間の可変長のデータの転送が最適化されるように選択された第2の複数の選択可能なバスを通して第1の複数の処理装置とメモリが接続可能であるデジタル信号プロセッサが提供されます。
本発明の種々の他の観点は、添付の請求項に規定されている。
本発明は、可変長命令セットの使用により実現されてもよい。可変長命令セットの一部分は、メモリスペース内において隣接する位置に記憶され、それら命令の始めと終りはメモリワード境界を横切って生成されてもよい。本発明の追加の観点は、可変数の命令フラグメント(fragments)を含む命令を有することによって実現され得る。各命令フラグメントにより1または複数の特定の動作が実行され、各クロックサイクル中におけるマルチプル(multiple)演算を可能にする。したがって、マルチプル演算は各クロックサイクル中に行われ、1つのタスクを行うために必要なクロックサイクルの合計数を減少させる。
1つの例示的なDSPは、3つのデータメモリおよび1つのレジスタバンクとデータが交換されることのできる3つのデータバスのセットを備えている。3以上のデータバス、とくに3つのデータバスの使用は、著しく減少されたデータバス競合である本発明の別の観点を実現する。本発明の1実施形態は、データバスが1つの広いバスと2つの狭いバスとを含むことを要求する。該広いバスは広いデータメモリに結合され、該2つの狭いバスは2つの狭いデータメモリに結合される。
本発明の1実施形態の一つの観点は、少なくとも2つの処理装置によってアクセス可能な複数のレジスタを有するレジスタバンクの使用である。これは、メモリからの/へのデータの読み出し/書き込みなしに、マルチプル演算がデータの特定セットに関してマルチプル処理装置により行われることを可能にする。本発明の例示的な実施形態における処理装置は、演算論理ユニット(ALU)と、乗算累算演算(MAC)器とを含む。マルチプルバスアーキテクチャもしくは高度に並列な命令またはそれら両方の使用と組み合わせると、高度にパイプライン化されたマルチ演算(multi-operation)処理が行われる、本発明の追加的な態様が実現される。
本発明の他の複数の観点は、命令メモリ中に記憶された可変長の命令を受取る命令フェッチユニットを含むことにより実現される。本発明のさらに別の観点は、3つのデータメモリのセットから分離している命令メモリにより実現される。命令復号器は命令メモリからの命令を復号し、種々のレジスタと複数のデータメモリと複数の機能ユニットとの間でデータを交換させてマルチプル演算が各クロックサイクル中に行われることを可能にする制御信号を発生する。
本発明の種々の観点は相乗的に結合して、予期しない望ましい結果をもたらす。たとえば、メモリ内に連続的に記憶された可変長命令の使用は、DSPの必要な回路面積を減少させる。この減少は、マルチプル処理ユニットによってアクセス可能なレジスタの追加だけでなく、該DSPへのマルチプルデータバスの追加を容易にし、該DSPの全体的な性能を高める。本発明の種々の観点の結合により別の相乗的な利益は明らかであり、下記に詳細に説明される。
本発明の上記および更なる特徴は添付の請求の範囲にとくに記載されており、その利点と共に、本発明の例示的な実施形態の以下の詳細な説明および添付図面から明らかになるであろう。
本発明の特徴、目的、および利点は、図面と併せて以下の本発明に関する詳細な説明を読めば、より明確になるであろう。図面では、全体を通して類似の参照記号は対応するものを識別する。
図1は従来技術に従って形成されたデジタル信号プロセッサのブロックダイアグラムである。 図2は本発明を具体化するデジタル信号プロセッサのブロックダイアグラムである。 図3はレジスタバンクのレジスタと入力ポートとの間の接続のブロックダイアグラムである。 図4はレジスタバンクの出力ポートとレジスタとの間の接続のブロックダイアグラムである。 図5は本発明の具体例に従ってメモリ空間に記憶された一組の可変長命令のダイアグラムである。 図6は命令フェッチユニットの動作を示すフローチャートである。 図7は本発明の具体例に従って形成された命令フェッチユニットのブロックダイアグラムである。 図8は本発明の具体例に従って形成されたMACユニットのブロックダイアグラムである。 図9は本発明の具体例に使用される命令階層のブロックダイアグラムである。
詳細な説明
本発明はデジタル信号処理のための新規なそして進歩した方法および回路に関するものである。本願を通して、信号、命令、およびデータに関して様々な言及がなされる。これらの信号、命令、およびデータは電圧、電流、荷電された、光学的な、または磁気的な粒子を含む電流の蓄積、またはこれらの何らかの結合により適切に表現され、これらの使用は良く知られている。かかる信号、命令、およびデータを表現する多くの化学的および生物学的化合物の使用が、たとえかかる対象についての使用、制御および操作が困難性を有することにより好ましくはない場合があるとしても、一般的に本発明の使用に関し良好に成立する。
加えて、本発明の様々な態様、効果、特徴または利点に言及する(特別に言及しないときには、ここではひとまとめにして態様と呼ぶ)。本発明のある具体例においては、本発明の他の概念の何れの存在もなしに、これらの異なる概念が単独で実現できる。しかしながら、本発明の他の実施例においては、本発明の2またはそれ以上の概念が結合されて実行され、本発明の2つまたはそれ以上の結合された概念のうち単に一つの概念を実現化する本発明の具体例により提供されるよりも大きな予期しない相互依存的な効果を生成するであろう。
I.DSP動作および命令の記録
図2は本発明の具体例に対応して形成されたデジタル信号プロセッサ(DSP)回路の一部分のブロックダイアグラムである。データメモリ102-104はアドレス生成ユニット(AGU)105-107を介してデータバスA、BおよびCに、そしてデータインターフェース100にそれぞれ結合される。データバスA、BおよびCは、マルチプレクサ122−126を介して、レジスタバンク120の出力ポートPO1、PO2およびPO3のそれぞれに、そしてレジスタバンク120の入力ポートPI1、PI2およびPI3のそれぞれに結合される。望ましくは、データバスA、BおよびCは、データメモリ102-104とレジスタバンク120内のレジスタ間のデータを読み出しそして書き込む。
3つのデータバスおよび3つのデータメモリの使用は、さらに多くのデータがバス競合を生成することなしに、レジスタバンクとデータメモリとの間で交換されることを可能にする。例えば、3つのフェッチ動作は3つのデータバスA、BおよびCを使用して3つメモリ102-104から同時に実行できる。3つのフェッチおよび書き込み動作の何れかの結合が可能な場合、3つの書込み動作が同時に実行できる。
第4のデータバスを追加することで、より多数の動作が実行可能となり、これは本発明の一部の具体例を形成する。しかし3つのデータバスはフィルタリングのようなDSPにより共通して遂行される多くのタスクの実行を容易にするために、3つのデータバスの使用だけに特別の利点がある。このように、第4のデータバスの追加は、第3のデータバスの追加と同じ増加する性能改善を提供するものではなく、そして追加の回路面積に関しては同じ量を必要とする。それ故に、第4のデータバスの追加は第3のデータバスの追加より少ない効果を利益として提供する。そこで、本発明の多くの具体例において、3つだけのデータバスの使用が望ましい。
出力ポートPO4、PO5およびPO6またはレジスタバンク120は乗算累算(MAC:multiply accumulate)ユニット128に結合され、この出力は順番にレジスタバンク120の入力ポートPI4に結合される。レジスタバンク120の出力ポートPO7およびPO8は論理演算ユニット(ALU)に結合され、その出力はレジスタバンク120の入力ポートPI5に結合される。
命令メモリ152は命令フェッチユニット156及び命令インターフェース150に結合されている。命令復号器158は命令フェッチユニット156、並びにイミディエットバスIm1,Im2、Im3及びImALUに結合されている。イミディエットバスIm1,Im2、Im3はマルチプレクサー122、124及び126に結合されている。イミディエットバスImALUはALU130に結合されている。上記のデータカップリングに加え、復号器158は、コントロールコネクション(簡略のため図示せず)により示される、種々のサブシステムに結合される。
レジスタバンク120は8個のレジスタL0−L3,D0−D3を含む。レジスタL0−L3は40ビット幅レジスタであり、ハイワードレジスタL0h−L3h及びロウワードレジスタL0l−L3lを介して、16ビットフラグメントでアクセス可能である。レジスタD0−D3は32ビット幅レジスタであり、サブレジスタR0−R7を介して、16ビットフラグメントでアクセス可能である。レジスタ及びサブレジスタは、一般化して、単に「レジスタ」と呼ぶ。各レジスタの特徴は、個々のレジスタ番号を付けることにより、明らかとなる。
本発明の一つのアスペクトは、レジスタがマルチプル入力出力ポートに結合されそれらによりアクセス可能とすることにより達成される。ある実施例においては、この多重接続は、各レジスタの入力及び各出力ポートに結合されたマルチプレクサを使用することによりなされる。多重接続を設けるための他の方法は明らかになり、それらは、例えば、データバスとアドレス可能なメモリの使用を含む、本発明の他のアスペクトの使用と矛盾することはない。しかしながら、ある実施例においては、マルチプレクサの使用はより好ましい。なぜなら、それらは種々のレジスタとポートに対する迅速で制御可能なアクセスが可能となるからである。
本発明の他のアスペクトは、以下に説明されるように、イミディエットデータバスを用いる実施例において実現される。例えば、命令データに含まれるデータは、メモリ102−105とインターフェースすることなく、レジスタバンク120に読込み可能である。このように、追加のデータが、データメモリとインターフェースすることなく命令処理システムから提供され、バス競合をさらに低減することができる。
図3は、レジスタバンク120中の一組のレジスタと一組の入力ポートPI1−PI5との接続関係を示すブロック図である。レジスタは、L0h−L3h,L0l−L3l,R0−R7と定義される。レジスタL0は、レジスタL0hとL0lとから構成される。図3及び図4に示す例では、レジスタL0h−L03は24ビットであり、レジスタL01−L3lとR0−R7は16ビットであり、レジスタL0−L3を40ビット幅としている。同様に、入力ポートPI3−PI5は24ビットの入力ポートPI3h−PI5hと16ビットの入力ポートPI3l−PI5lとからなり、合計で40ビットとなる。入力ポートPI1及びPI2は16ビットのみであり、レジスタL0h−L3hへの書き込みに使用される時は、使用可能な24ビットの内、最下位16ビットにのみ書き込みを行う。
図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は、マルチプレクサ516、518、524、526を介して、ALUユニット130から入力データを受け取る。
図3に示す実施例は多くの効果を有する。特に、入力ポートとレジスタとの間に十分な接続性がもたらされ、最も共通する動作が容易に達成される。しかし、回路を実現するために必要とされる全回路面積を減少させるために、全体の接続性は最小にされる。例えば、MACユニット128の出力はロングレジスタL0−L3のみに結合される。これは、乗算及び累算演算の結果が一般に32ビットを超えるので、有利である。また、MACユニット128の出力をレジスタD0−D3に結合することは、最小の利点しかもたらさない。他の例では、ALUユニット130はレジスタL0−L3,R0−R3に出力可能である。これにより、フレキシビリティが増し、それはALUユニット130からのデータは種々のレジスタへ書き込み可能となるからであり、それはALUユニット13がより多種の演算を行い、データをより多くのレジスタへ出力することを有用にするため有益である。しかしながら、ALUユニット130はすべてのレジスタに結合されることはない。それゆえに、不必要で過度な接続性は避けられる。
図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に結合される。これらのレジスタは、全レジスタとしてアクセスされた場合のすべての使用可能なレジスタを含む。
MACユニット128の40ビット入力端に結合された出力ポートPO4はマルチプレクサ532を介してレジスタL0−L3に結合してある。MAC128が累算する値は実行される乗算と累算演算の性質により大きくなる傾向があるので、出力ポートPO4を40ビット「長さ」のレジスタLO−L3のみに結合することで、最良の結合形態を提供できる。これは、種々の乗算演算の累算量が特に32ビットを超える場合に、レジスタD0−D3への付加的結合から生れる有用性が低いためである。
MACユニット128のうちの一つの16ビット入力端に結合された出力ポートPO5はマルチプレクサ534によりレジスタL0h−L3h、R0、R2、R4、R6に結合してある。MACユニット128の第2の16ビット入力ポートに結合された出力ポートPO6はレジスタL0h−L3h、L01―L31、R0―R7に結合してある。第2の16ビット入力ポートを利用可能なレジスタのサブセットに結合する一方、MACユニット128のうちの一つの16ビット入力を利用可能なレジスタの全てに結合することにより、有用な折衷策が講じられる。特に、レジスタ空間が限られている場合、処理すべきデータの少なくとも一部を利用可能なレジスタのいずれにも保持できる。しかしながら、他の入力端に結合されたレジスタの数を制限することによって回路の接続総量が減少される。これにより、他の機能と特徴、例えば他のレジスタ、入力ポート、出力ポート間の接続性、とを提供できる。
ALU130の入力端に結合された出力ポートPO7はマルチプレクサ546によりレジスタL0−L3,L0h−L3h,R0−R3とに結合してあり、ここでレジスタL0h−LO3hとR0−R3とは論理0のセットと共に出力される。すなわち、レジスタL0h−LO3h、R0−R3はPO7のビット31―16(番号0―39を付したビット)に出力され、ビット0―15は論理0に設定される。ビット39―32は、ビット31を用いて拡張された符号(sign)である。ALU130の他の入力端に結合された出力ポートPO8はマルチプレクサ548によりレジスタ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により処理されたばかりの新たなデータが同じレジスタに書き込まれる。これにより、ふたつの処理ユニット間の完全なパイプライン処理がひとつの処理サイクル内で可能となる。これらの動作は、いずれの内部バスを介してデータを送ることなく、再度実行できる。よって、バス競合の増加が回避される。
再び図2を参照する。演算中命令フェッチユニット156はバイナリ命令を命令メモリ152から取り出すか、命令メモリ152の中にない場合には、外部メモリから取り出す。外部メモリにはこの技術では良く知られている様々な形態がある。例えば、動的ランダムアクセス記憶装置や静的ランダムアクセス記憶装置(DRAMやSRAM)、あるいはこれらの派生物、さらには磁気や光によるハードディスク記憶装置、またはこの技術では公知のその他のデータ記憶媒体が外部メモリに含まれる。この発明の典型的な実施例では、命令は可変長であり、命令フェッチユニットは命令の長さを決定したり、各処理や各クロックサイクルの間にどれだけの量の命令データをさらにフェッチしなければならないのかを決定する。さらに、命令は内部メモリや外部メモリの連続した記憶位置に記憶される。命令フェッチユニット156の動作や命令データを内部および外部のメモリに記憶することについては、以下に詳しく説明する。
命令復号器158は、命令フェッチユニット156によって取り出された命令を受け取り、命令を制御信号に変換する。変換された制御信号は、データメモリ、レジスタバンク、MAC、ALUを含むDSPを構成する一台以上のサブシステムに供給される。また、命令復号器158は、受け取った命令に含まれているイミディエットデータをイミディエットバスIm1、Im2、Im3、ImALU経由で適切なシステムに供給する。イミディエットデータは、データメモリ102〜106Πに格納されているデータに対する演算に用いられるか、アドレスの指定や修正を行うことのできる命令データ内に格納されている数値がその典型である。
図2のDSPが実行する処理には、データメモリからデータバスのうちの1つを介してレジスタ位置にデータをロードすることが含まれる。データはレジスタからデータメモリに書き込まれることもある。また、MACユニット128やALUユニット130は、レジスタバンク120内の1個以上のレジスタに格納されているデータに対して処理をし、結果は概ねレジスタバンク120内のレジスタに書き戻される。
上で述べたDSPアーキテクチャには多くの長所がある。例えば、三個のデータバスを使用しているので、データの途切れないパイプライン処理が可能である。DSPが実行する模範的なフィルタリング中に、フィルタリングされるべきデータ(信号データ)があるデータメモリに記憶され、そのデータに適用されるべき係数が別のデータメモリに記憶される。演算結果にはオペランドよりも大きいビットが必要なので、信号データと係数データとを二台の狭いメモリに記憶することが好ましい。係数および信号の両データは次にレジスタバンク120に読み込まれ、MACユニット128により乗算されて累算される。以上の演算の結果は、レジスタバンク120内の第二レジスタに記憶されるか、以前に入力データが記憶されていたレジスタバンクに上書きされる。通常、演算結果はどれもレジスタから第三バス(BUS C)を経由して広いデータメモリ(メモリC)に書き込まれる。
出力データが第三バスを経由して第三メモリに書き込まれ、入力データセットが第一および第二のデータメモリから第一および第二のデータバスを経由して読み込まれるので、メモリアクセスやバスの競合はほとんど生じないか、一切生じない。したがって、データの処理が途切れることなく進行するので、メモリサブシステムやデータバスの任意のものを内部バスや他のサブシステムよりも高いレートでクロックする(clock)必要性が減少する。これにより電力消費が減少し、しかも処理速度は維持されるか、却って速くなる。
さらに、データが途切れることなくDSPを通過するので、所定時にDSPの異なる段で幾つかの異なるデータ値に異なる処理が施される場合に、データのパイプライン処理が促進される。また、以下に述べる並列命令と一緒に使用した場合、この効率的な高度パイプライン処理と一緒になって処理の柔軟性が増大するので、汎用性が非常に高く、効率的で、強力なDSPシステムが得られる。
マルチプルバスの使用によりデータをDSPの周囲で様々に移動させることができるようになるので、バスの競合が少なくなる。例えば、分割すべきデータはデータバスC経由でメモリCから入力データとして供給し、除数は別のメモリと別のバス、例えば、メモリAとデータバスAから供給することができる。演算結果は残っているバス(データバスB)を経由して残っているメモリ(メモリB)に記憶することができる。
マルチプルデータバスとデータメモリを提供することにより促進化される別の典型的な演算では、MACユニット130により累算されるデータが第一メモリと第一バス(例えば、メモリAとデータバスA)を経由して提供される。一組の累算が実行されると、演算結果のデータはデータバスCを経由してメモリCに書き込まれる。同時に、論理シフトが施されるデータは、データバスCがMACユニット128からの結果データを搬送していない場合に、処理サイクル中にメモリCからデータバスCを経由してALUユニット130に供給され、このような結果データは、通常は一組の累算演算の実行後にのみ得られる。論理シフトが施されたデータは、データバスBを経由してメモリBに同時に書き込まれる。したがって、一般にマルチプルデータバスとメモリ、とくにマルチプル処理ユニットと共に使用することは、DSP内でデータを移動させるさらに多くの可能性を提供することによりマルチプル演算を行うことを促進する。
以上に述べたように、この発明の別の態様は、MACユニット128やALUユニット130などのマルチプル処理ユニットがアクセス可能なレジスタを使用して実現される。マルチプル処理ユニットがアクセス可能なレジスタにより、処理ユニットが処理すべきデータは当該データにいずれかの内部データバスを経由させることもなく、アクセスされることができるようになる。例えば、第一処理ユニットはレジスタにデータを書き込むことができるし、第二処理ユニットがそのレジスタにアクセスして、当該データをさらに処理することもできる。これにより、バスの競合や混雑が解消されるので、高データスループットが維持される。
さらに、下記に詳細に記載するように、並列演算命令の使用と並列処理能力を結合すれば、データを高度にパイプラインしマルチ演算処理する能力がさらに高められる。これに対し、典型的なパイプラインは、一連の演算の異なった相(すなわち、フェッチ、復号、プロセス)をずらすので、それぞれの命令の開始点間の処理時間を短縮させることができる。マルチ演算パイプラインにより、データに対し一連の異なった演算をすることができるという付加的な利点もある。この場合、それらの一連の演算は異なるデータ組に対して同時になされる。このマルチ演算パイプライン処理により、従来の命令パイプライン処理に比べ、一処理サイクルあたりになされる命令の数を増加することができる。
上述した構成の相乗作用を、以下に例示する処理によりさらに説明する。例示するフィルタリング処理においては(上述した場合と同様)、累算(accumulation)がなされた積の数が増えるにつれ、MC26により発生された結果の規模が増加する(絶対値、及びその数値を表すために使用されるビット数との観点から)。そのため、結果はスケーリング、もしくは「正規化」しなければならない。このため、通常は、ALUユニット130による論理シフト演算が必要となる。
記載されたシステムにおいては、スケーリング操作をフィルタリングの乗算や累算と同時に行うことができる。そのような同時処理がなされる処理サイクル中においては、処理前の信号データとフィルタリング係数をデータメモリ102、103からレジスタバンク120内のレジスタに読み出す。同時に、MACユニット128はこれらのレジスタ(L0hとL01)に以前記憶された数値を読み、乗算と累算の演算を行う。この演算においては、出力は第2のレジスタ(例えばL1)に書き込まれる。同時に、ALUユニット130は第2のレジスタ(L1)に以前記憶されたデータを読み、スケール演算をし、スケーリングした数値を第3のレジスタ(例えばL2)に書き込む。同じ処理サイクル間に、第3のレジスタ(D0)に以前記憶された数値を、バスC112を介しデータメモリ104に書き込む。これで明らかなように、個々の演算は行われているタスクによって違う。さらに明らかなように、マルチプル演算の実行を可能にするような高度に並列的な命令を用いた場合には、高度にパイプラン処理されたマルチ命令演算が容易になる。高度に並列的な命令は、個々の処理サイクル中において、異なった演算の指定をパイプライン化することを可能にする。
2相の読み出し書き込み操作(この一例は上述した)を利用することで、処理のすべてを単一の処理サイクルで行うことができる。この処理サイクルにおいては、データを最初のクロック相の間にそれぞれのレジスタから読み出し、処理ユニットにより処理をし、古いデータに上書きした結果を第2のクロック相の間にレジスタに書き込む。単一のクロックサイクルの間では、このプロセスのすべてのステップが同じ数値に対し適用されるというよりは、一連の数値がDSPを介してパイプライン化され、それぞれの数値が処理がなされるとき次のステップに移行することが理解されよう。
他にも数多くの演算が、本明細書に記載された発明の種々の観点により、容易になる。例えば、ボコーディング(vocoding)とは、音声データをコーディングするプロセスである。ボコーディングでは数多くの異なった操作がなされる必要があり、その中には、他の操作と独立し、故に同時になされる操作が含まれる。マルチプルデータバスやマルチプル処理ユニットを用いることで、これらの操作が容易になる。
別個の命令メモリと命令復号を利用することで更なる利点が得られる。例えば、上述したデータ処理と同時に、命令フェッチ(instruction fetch)156によって命令メモリ152から命令を読み出し、次に命令復号器158で、DSP内の他の種々のサブシステムの操作を制御するための制御信号を発生させる(図面を簡略化しわかりやすくするために接続関係は示されていない)。この場合も、データバスは命令データを搬送する必要はなく、信号データは命令データからの割り込みなしで移動し処理することができる。したがって、命令処理をデータ処理と分離することで性能をさらに高めることができ、命令データを移動させるためにデータバスサイクルを使う必要がなくなる。
図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で取り出される。
ステップ204では、取り出された64ビットの命令データに含まれる第1の命令は命令復号器158により処理される。本発明の代表的な実施例では、命令は16,32或いは48ビットの長さであってもよい。命令長は、以下において詳細に記述される命令長を示す各命令に含まれているヘッダービットの組により決定される。命令長を特定するその他の種々の方法は、2つの命令を分離し或いは切り離すコードを使用したり、スーパーヘッダー命令を使用したりすることであり、それは従うべき命令のセットの長さを特定する。ヘッダービットを使用することはある意味において好ましい。その理由は、命令長情報がその命令に近接して保たれ、命令処理についての状態情報を記憶したり維持したりする必要性を減じるからである。
64ビットの取り出された命令データ内に含まれる第1の命令が処理された後に、48ビット或いはより以上の未処理命令データが64ビットの取り出された命令データに残っているかどうかを、ステップ206で決定する。48ビット或いはそれ以上の未処理命令データが残っている場合には、残っている48ビットの未処理データに含まれる次の命令がステップ204において再び処理される。
ステップ206において48ビットより低い未処理命令データが取り出された命令データに残っている場合には、追加の命令データが命令メモリ152からロードされる。追加の命令をロードする種々の方法が考えられる。本発明の一実施例では、十分な追加の命令データが命令メモリからロードされて、命令フェッチユニットに記憶された未処理データの量を48ビットに復帰させる。48ビットの未処理データが命令フェッチユニット内に記憶されることを保証することは、少なくとも1つの競争命令が命令復号器158に利用可能であることを保証する。
本発明の好ましい実施例では、処理された特定量のデータに依存して、48ビットの未処理データが残っている場合には、命令フェッチユニットは可変量のデータを取り出す。特に、処理されたデータ量がデータワード(32ビット)以上の場合には、新たな命令データの追加データワード(32ビット)が検索される。以前に処理されたデータ量が2データワード(64ビット)以上の場合には、2つの新たなデータワードが命令フェッチユニットにより取り出される。
処理されたデータのワード数に基づいて取り出されたデータの量を決定することが好ましい。その理由は、未処理データの十分な量を命令復号器158に利用可能とする一方、命令メモリを構成するメモリバンクへのより効率的なワード長アクセスを可能とするからである。ステップ206において追加の未処理命令データが取り出されると、現在利用可能な未処理命令データのトータル量内で次の命令が処理される。
図7は、本発明の一実施例に基づき構成された命令フェッチユニット156と命令メモリ152を示すブロック図である。命令メモリ152は偶数のメモリバンク302(RAM0)と奇数のメモリバンク300(RAM1)からなり、それらのそれぞれは32ビットデータワードを読取り、書き込む。メモリバンクは偶数と奇数とラベルを付けられている。というのはそれらは両方とも同じアドレス空間でアドレスされるからである。しかし偶数アドレスは偶数メモリバンク302に向けられ、奇数アドレスは奇数メモリバンク300に向けられている。8、16,24, 48と64ビットワードを含むほかのワードサイズを読み書きするメモリバンクも別の実施例において使用可能である。更に、異なる数のメモリバンク、即ち1−8メモリバンクを使用することも可能である。しかしながら、32ビットワードを用いる2つのメモリバンクを使用すると全体的な複雑さを減少でき、命令データが管理可能な大きさでアドレスされることも可能にするので、好ましい。
制御論理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ビットを含むようにセットされている。
動作中において、制御論理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ビットワードをロードされ、それは64ビットの未処理命令データであり、それは必要な48ビット命令データよりも大きい。全64ビットの命令データをロードすることは特に必要ないが、工業上通常使用されている2つの32ビットワード命令メモリとレジスタを使用できるので有益である。十分な量の未処理命令データを維持する他の方法を使用することも、本発明の技術的事項の使用に当たる。
64ビットの新たな命令データが命令レジスタ306,307にロードされると、制御論理304は更にコントロール信号320を使用してロテータ308を形成し、1)命令アドレス空間内の命令データの位置、2)処理された命令データの組、3)処理された前の命令の長さに基づき入力A,B,C,Dで受信された命令データの次の48ビットを出力する。
特に、ロテータ308は、処理されるべきネクスト・イン・ラインの48ビットの命令データの組を、最上位または最左位置におけるその命令のネクスト・イン・ライン・ビットと共に出力するように構成されている。
例えば、命令データの最初の2つのワード或いは64ビットをレジスタ306,307にロードする際は、偶数命令レジスタ307の命令データがネクスト・イン・ラインである場合に、ロテータ308の出力は、入力A,B,C(ABC)にこの順番で受信された命令データから構成される。奇数命令レジスタ306の命令データがネクスト・イン・ラインである場合には、ロテータ308は入力C,D,A(CDA)にこの順番で受信された命令データを出力するように構成されている。
命令が処理されると、新しい命令データが上述したようにデータレジスタ306,307にロードされ、ロテータ307は処理された前の命令のサイズに基づいて出力324にネクスト・イン・ライン命令データを出力し続けるように構成されている。処理された前の命令のサイズは、出力324の最初の5ビットのコピーであるヘッダーデータ322によって、制御論理304に送られる。上述したように、制御論理304への命令長を特定する所定の方法は、命令長が命令データから直接的に決定されることを可能にするので、最初の5ビットの使用が好ましいが、本発明の応用の範囲である。
本発明の典型的な実施例では、前の命令サイズは、表1にしたがって2ビット状態情報I1,I0にコード化されている。
Figure 0006152558
更に、ロテータ308の構成は、2つの選択ビットS1,S0により制御されていて、この選択ビットは表2のようにコード化されている制御信号320を形成している。
Figure 0006152558
明らかなように、状態S1,S0がインクリメントされると、ロテータ308の出力は左に回転し、或いはバレルシフトする。左回転は、各入力グループ(A,B,C,D)が出力において左にシフトすることを意味する。出力の最左方にいた入力グループは除去される。出力で以前現れなかった入力グループは、最右方の位置で次に出力される。
状態S1,S2、従ってロテータ308の構成は、種々の長さの命令に応答して変化する量だけ、更新され或いは回転される。特に、処理された命令の長さを表す値(I1,I0)がコントロールビットS1,S0に加えられ、任意のキャリーアウト値が処分される。即ち
S1(t+1),S0(t+1) = S1(t),S0(t)+I0,I1 (1)
ブランチ或いはリセット状態においては、値S1,S0は、処理がブランチ或いはリセットされる特別の命令に基づきリセットされるので、式(1)は利用されない。ブランチ、リセット或いはストール命令を処理する種々の方法は当業者に周知であり、この処理は本発明に特に関係がないので、これ以上説明しない。
典型的な処理では、ロテータ308は、00において選択ビットS1,S0、およびABCの出力から始まる。16ビットの命令が受信された場合には、対応する01の命令長ビットI1,I0がS1,S0に加えられ、01のS1,S2となり、これはBCDのロテータ308からの出力324に対応する。出力BCDは、最初の16ビットの命令データ(入力A)が処理された後に、ネクスト・イン・ラインの組の命令データとなる。
次の命令が32ビットの命令である場合には、10の命令長I1,I0が01の現在のS1,S0状態に加えられて11となる。その結果として出力は、まだ処理されていない次の48ビットの命令データに対応し、最上位或いは最左方に位置された入力Dで受信されたネクスト・イン・ライン命令データにより構成されたDABとなる。以前、入力B,Cからの命令データは処理された。前の32ビット命令を処理する間に、新たなデータが上述した命令データロードプロセスに基づいて命令レジスタ307にロードされる。
48ビット命令が処理される場合には、選択ビットS1,S0の状態は、11の命令長I1,I0によって増加され、キャリーアウトを処分して10のS1,S0となり、ロテータ308の出力をCDAとする。出力CDAは処理されるべき次の48ビットの命令データに対応し、ネクスト・イン・ラインビットは最上位位置になる。以前、入力D,A,Bの命令データは処理された。新たな命令データは前の命令を処理している間にレジスタ306に読み込まれる。関連する命令データ処理を達成する上述した論理を例としてあげた。上述の命令データ処理を達成する他の論理を使用してもよいことは明らかであり、本発明の使用の範囲に入る。
したがって例示的な実施形態では、制御論理はロテータ308が命令レジスタ306および307から受取った次の48ビットの命令データを出力し、このとき処理されることになる次の命令ビットが最左位置に位置しているように設定する。当業者は、所定の構成では命令データを命令処理ユニット158へ送り、これにより処理されることになる次の組の命令データが識別可能になり、この次の組のデータにも同じく本発明を使用できることが分かるであろう。
既に記載したように、次の48ビットの処理されていない命令データを出力することに加えて、さらにロテータ308は処理されることになる次の命令の大きさを制御論理304に示す。とくに、ロテータ308は処理されることになる次の5ビットの命令データの追加的なコピーを制御論理304へ出力する。本発明の好ましい実施形態では、命令の長さは最初の5ビットの命令によって特定される。
図8は、本発明の1つの実施形態にしたがって設定されたときのMAC128のブロックである。右へのシフト部900は40ビットの入力を受取って、累算し、この値を0または16ビットだけシフトし、この出力はマルチプレクサ901の1つの入力に加えられる。マルチプレクサ901の他の入力は、値0x8000を受取る。乗算器902は乗算されることになる2つの16ビットの値を、命令復号器158からの符号ビット(sign bits)と共に受取り、したがって各入力ごとに合計で17ビットを受取ることになる。
乗算器902の出力は左へのシフト部904によって受取られ、左へのシフト部904はこの出力を命令復号器158によって特定されたように0、1、2、または3ビットだけシフトする。加算器/減算器906はマルチプレクサ901および左へのシフト部904の出力を受取る。加算器/減算器906は命令復号器158によって命令されたように2つの入力値の加算または減算を行い、その結果を出力し、この出力は本発明の例示的実施形態ではレジスタバンク入力ポートPI4へ加えられる。
本発明の実施形態におけるMACユニット128内の16ビットを右へシフトするユニット900は、さらに他のタイプのMACユニットにも利用できる。とくに16ビットを右へシフトするユニット900を使用すると、2倍精度の演算をより少ないクロックサイクルで実行することが容易になる。例えば、32ビットの数値(A)が16ビットの数値(B)で乗算される2倍精度の演算を実行するには、最初に32ビットの数値の下位の16ビット(Al)が第1のクロックサイクル中に16ビットの数値(B)で乗算されて、レジスタバンク120に記憶されている中間値Iを得る。
第2のクロックサイクル中に中間値Iは16ビットを右へシフトするユニット900へ入力されて、16ビットだけ右へシフトされる。さらに、16ビットの数値(B)および32ビットの数値(A)の上位の16ビット(Ah)が乗算されて、その結果が16ビットを右へシフトするユニット900からの、右へシフトされた中間値Iに加算される。したがって2倍精度の乗算は3クロックサイクルではなく、2クロックサイクルで実行される。一般的に、多くの2倍精度の演算では、1以上の変数を他の変数に関係してシフトすることが必要であり、したがって乗算または累算の一方は2倍精度の演算を実行するのに必要なサイクル数を低減するので、シフト段階を同じクロックサイクル中に実行することができる。
一般的に第1の乗算演算、シフト演算、および第2の乗算演算は各々、1クロックサイクルを必要とするので、一般的に3クロックサイクルが必要である。したがって、シフト回路を使用すると、2倍精度の乗算を実行するのに必要なクロックサイクル数が低減する。異なる大きさのオペランドを含む他の2倍精度の演算も右へシフトするユニット900を使用することによって容易になる。
II. 命令設定
A.概要
図9は本発明の例示的実施形態において使用される命令階層を示すブロック図である。ブロック402はDSPの演算を制御する16、32、または48ビットからなる可変長の全命令を示している。さらに可変長の命令は、ブロック403に示したように、一般命令フラグメントとメモリ移動およびプログラムフロー(MMPF、memory move and program flow)命令とを含む命令フラグメントから構成されている。本発明の例示的実施形態において使用された一般命令フラグメントは、MAC8、MAC16、ALU8、ALU16、DMOV16、DMOV24、およびDL40の命令フラグメントを含む。MMPF命令フラグメントは、OneMem11、TwoMem19、TwoMov19、および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は各クロックサイクル毎に全命令を処理する。かくして、マルチプル演算は各全命令の処理中実行され得るものであり、特定の演算が選択された特定の組の命令フラグメントにより決定される。
発明の例示的実施例に使用された3つの全命令のフォーマットが表3に示される。
Figure 0006152558
各全命令のため使用される5ビットヘッダーは全命令の長さ、および全命令の内容に関してのいくらかの追加的な情報を示す。発明の例示的実施例に使用されるヘッダーのフォーマットが表4により提供される。
Figure 0006152558
各全命令(16、32および48ビット長)は1つまたはそれ以上の命令フラグメントを含む。表5は発明の例示的実施例において利用可能な命令フラグメントのリストを提供する。命令フラグメントの演算とフォーマットのより詳細な記述は全命令の議論の後に提供される。
Figure 0006152558
表6−8は発明の例示的実施例により48、32および16ビットの全命令内に使用される命令フラグメントの種々の結合を提供する。命令フラグメントの他の結合が発明の使用および演算と合致するが、ここに記述された結合のある特徴は以下により詳細に議論されるように提出される。加えて、全命令の全部または一部が“予約済み” として示される場合、特定の命令結合は記述された実施例において特定されず、または使用されないが、これらの全命令結合の将来の使用が期待される。
表6はここに記述された発明の例示的実施例により実行したときの16ビット全命令のフォーマットを提供する。全命令は11命令ビットにより後続される5ビットヘッダーからなる。
Figure 0006152558
ヘッダービットは命令の型についてのある情報と同様に命令の長さを示す。00000のヘッダーについて、最下位の3つの末尾ビットが実行される演算をさらに特定するために使用される。特に、000の末尾ビットは残り8ビットがMAC8命令フラグメントを含むことを示す。001の末尾ビットは残り8ビットがALU8命令フラグメントを含むことを示す。他の末尾ビットの結合については命令が特定されない。
00001のヘッダーについて、残りの11ビットがOneMem11命令フラグメントを含む。ALU、MACまたはメモリ移動演算が実行されることを可能にする16ビット全命令を提供することにより、最も共通の演算が最も短い全命令で実行され得る。最も短い命令は記憶すべき最少量のメモリを要求するので、記述した16ビット全命令の使用により、特定の組の演算を実行するに必要な命令メモリの量が減少する。かくして、DSPの全体サイズ、およびそれ故コストおよび電力消費もまた減少される。
16ビット命令は、たった1つ、または減少された数の演算が実行され得るような状態のときに典型的に使用される。典型的に、ただ1つの演算を特定するに必要な命令のサイズは減少され得るものであり、したがって1つの演算を実行するために半ワード、即ち16ビット命令の使用である。加えて、16ビット命令は、人が実行することを予期する演算の殆ど全てを包含するメモリ移動またはプログラムフロー演算、ALU 、MACのために使用され得る。
表7は発明の一実施例により形成されるとき、32ビット全命令の命令フラグメント結合および関連するフォーマットを示す。
Figure 0006152558
上記で注目したように、5つのヘッダービットは、命令フラグメントの特定の結合と同様に全命令の長さを示す。例えば、00010のヘッダーは、残り27命令ビットがThreeMen27命令フラグメントを含むことを示し、00011のヘッダーは、残り27命令ビットがTwoMem19命令フラグメントにより後続されるALU8命令フラグメントを含むことを示す。
01111のヘッダーについて、最下位の末尾ビットは命令フラグメントの結合をさらに示す。例えば、0の最下位の末尾ビットについて、次の2つの最下位のビットは、残り24ビットがDMOV24、MAC8により後続されるALU16、またはALU8命令フラグメントにより後続されるMAC16を含むか否かを示す。1の最下位の末尾ビットのような他の末尾ビット状態は、予約済み結合を特定する。
32ビット命令は、最も普通に実行される演算の多くが同時に演算されることを可能にし、それはパイプライニングを容易にし、また命令サイズを減少する。例えば、2つのフェッチ演算およびフィルタリングのような応用のための乗算/累算演算を実行することが共通である。32ビット命令は、演算のかかる組が、命令スペースの十分な48ビットを必要とすることなくパイプラインされた様式において実行されることを可能にする。
加えて、32ビット命令は、また最大の命令サイズの使用なく、プログラムジャンプおよび呼出し演算と同様にMACおよびALU演算が同時に実行されることを許容する。
表8は発明の一実施例により実行したときの48ビットの全命令の命令フラグメント結合およびフォーマットを示す。
Figure 0006152558
5つのヘッダ(header)のビットは、特定の命令(instruction)フラグメント(fragments)結合はもちろん、命令の長さを特定する。例えば、00100のヘッダのビットは、43の残っている命令のビットがDMOV24、MAC8およびOneMem11命令フラグメントからなることを示す。10011のヘッダのビットは、43の残っているビットがそれぞれ命令フラグメントのALU16、MAC8およびTwoMem19命令フラグメントからなることを示す。
11111のヘッダビットについて、3つの最下位末尾ビットは、さらに、残りの命令ビットに含まれる命令フラグメントを示す。例えば、000の末尾ビットは、残りの40の命令ビットがMAC16およびDMOV24命令フラグメントを包含することを示す。001の末尾ビットは、残りの40の命令ビットがMAC8、ALU8およびDMOV24命令フラグメントを包含することを示す。110の末尾ビットは、残りの40の命令ビットがDL40命令フラグメントを包含することを示す。
48ビットの全(full)命令中に与えられたこの命令フラグメント結合は、多数の演算が同時に、その結果、連続的に行われる場合よりもより速く行われることを可能にする。例えば、いくつかの48ビットの全命令は、ALU演算と、MAC演算と、メモリ演算とが全て同時に行われることを可能にする。このメモリ演算は、ロード(load)、ストア(store)、データ移動演算を包含し、しばしば、マルチプルメモリ位置が同時にアクセスされることを可能にする。
この48ビットの命令は、すべてのパイプラインの方式で、乗算演算がALU演算と、データフェッチと、プログラムフロー演算と結合して行われることを可能にする。これは、ALU(シフティング(shifting)のような)演算によって追従されるMAC演算を行うことによって、しばしば行われるスケーリング演算と結合された場合にフィルタリングのために役に立ち得る。MACとALU演算を使用する他のアプリケーションは、3つもしくは、それ以上のデータストリームを結合することを包含する。特に、3つのバスの使用との結合におけるこの48ビット命令は、これらの場合の演算のパイプラインを簡易化(facilities)する。
これによって、シングル48ビットの全命令で行われ得る演算の数が5つ(MAC、ALU、FETCH1、FETCH2、STORE)に効果的に増す。DSPにおいてマルチプル命令を同時に行う能力は、一般に、DSPの内部での様々な処理システムを結合するためのマルチプル内部バスとのDSPの使用によってさらに高まる。異なるデータのセットは、異なるバスを使用して同時に移動、並びに、アクセスされ得る。
行われ得る演算の数に基礎を置く命令の長さを変化させることによって、命令メモリが使用される効率がさらに増す。任意の特定のタスクは、マルチプル演算が同時に行われ得る期間(period)と、少数もしくは唯一の演算が行われ得る他の期間とを有する。同時に行われ得る演算の数にしたがって、命令の長さを調節することによって、命令のメモリの総数は、減らされる。
上述の例の方法をタイト(tight)な命令パッキング(packing)の使用と結合される場合、要求される命令メモリは、さらに、減らされる。可変長命令、もしくは、タイトにパックされた命令、もしくは、両者の使用は、これらの特徴を実行するために利用可能な回路(circuit)面積を作ることによってマルチプルバスアーキテクチャと、マルチアクセス(multi−access)レジスタ(register)バンクとの使用を容易にする。このように、本発明のこれらアスペクトの結合は相互依存的に結合して、改良された性能と、改良された効率との利点を同時に有する。
C.命令フラグメント
上に記述されたように、全命令は、予め定められた方法で、1つ、もしくはそれより多くの一まとめにされた命令フラグメントのセットからなる。本発明の実施の形態の一例に利用可能な命令フラグメントのセットが、表5に示されている。発明の実施の形態の一例の全命令を使用して利用可能にされた命令フラグメントと結合とは、共に行われる最も可能性のある演算のセットが結合されることを可能にするようにデザインされているので、与えられた演算を行うために必要な命令メモリの総数が、減らされる。本発明の実施の形態の一例で使用された様々な命令フラグメントのフォーマットと演算のディスカッションを次に示す。
C.1 命令フラグメントのノメンクラチャ(Nomenclature)
命令フラグメントとサブフラグメントの次のディスカッションを通して、次のアブレビエーション(abbreviations)は、下の表9と10とにリストされたレジスタを指示するために使用される。加えて、本発明の実施の形態の一例で使用される特定のビットコード(マッピング)は、左に示される。
Figure 0006152558
Figure 0006152558
C.2 命令・フラグメント(instruction fragment)の記述
命令・フラグメントのセットは、MAC命令・フラグメントの2つのタイプ、即ちMAC8及びMAC16を含んでいる。このMAC8命令・フラグメントは符号付き−符号なし(signed-unsigned)及び符号付き−符号付き(signed-signed)の乗算タイプをサポートしており、その結果はアキュムレータL0又はL1の中に格納されている。MAC8命令フラグメントは、16ビット全命令を使用して1つのMAC演算を許すことにより、また、多数の並列命令結合については48ビット命令の代わりに32ビット命令に符号化されることをMAC演算に要求することにより、命令RAMを節約する。一般に、MAC8命令によって実行される処理は、以下の式に従う:
Figure 0006152558
式(2)に示す如く、MAC8命令・フラグメントはレジスタL0又はL1の内容がレジスタR0,R2,R4及びR6とレジスタR0,R1,R3及びR5の積と加算されるか、またはレジスタのその積に直接設定されることを可能にする。また、符号付きまたは符号なしの乗算が特定され得る。MAC演算が1つのMAC8命令を用いて実行され得るレジスタの数を制限することによって、命令の長さは8ビットに維持され、複数のMAC演算が更に短い8ビット命令・フラグメントを用いて実行されることを可能にし得る。
MAC8命令(instruction)によって実行されるこの特別な演算は、表11に示すように、命令を構成する8ビットの値によって特定されている。
Figure 0006152558
SU/SSは、符号付きまたは符号なし乗算を指定する。MAC8命令フラグメント(instructuon fragment)内の様々な演算のためのコードは、表12にリストされている。
Figure 0006152558
このように、0x99というMAC8命令により、レジスタR0とR3との符号のない積(unsigned product)と、レジスタL0の内容との和はレジスタL0中に配置される。
MAC16命令フラグメントは、追加的なレジスタが乗算-累算演算において用いられることを可能にすることによって、さらなるフレキシビリティを提供している。式(3)は、MAC16命令フラグメントを用いて実行可能な演算を示している。
Figure 0006152558
アキュムレータの結合の全てが乗算・累算命令で使えるわけではないが、たとえば、あらゆるアキュムレータ (L0-L3)が、あて先として使用されることができる。CPSフィールドは、双対プロセッサが特別な演算を並列に実行するべき信号を送信する。このMAC16命令により実行される特別な演算は、表13に示されている命令を構成する16ビットの値によって指定されている。
Figure 0006152558
MAC16命令フラグメント内の様々な演算を指定するための複数のコードは、表14にリストされている。
Figure 0006152558
MAC16命令フラグメントは3までの左シフトを可能とし、ストレート乗算(累算なし)の間にまるめ動作を実行でき、該丸めは該シフトの後で発生する。累算が実行されると、加算されるべきアキュムレータは符号付きー符号付き掛け算と並行して16だけシフトダウンされることができる。CPSビットは、MAC演算中で使用されるデータが双対プロセッサに送られるべきことを表示するための双対プロセッサ・ストローブビットである。
MAC8命令フラグメントは、MAC16により実行され得る演算のサブセットを実行することに留意せねばならない。MAC8命令フラグメントのために選択された特別の組の命令はMAC16命令フラグメントを使用して実行され得る演算のセット中最も共通して実行されるものである。これは、MAC演算の大多数がMAC8命令フラグメントを使用して実行されることを可能とすることにより、プログラムメモリをセーブする。
8ビットALU8命令フラグメントは、MAC演算(MAC8とMAC16)と最も共通して並行にされるALU演算を有しており、それはイミディエットを含まない。全てのALU8シフト演算は、命令符号化ビットをセーブするために内部シフトレジスタ(SR)レジスタを使用する算術シフトである。ALU8命令フラグメントを使用して実行される演算が表15に示される。
Figure 0006152558
ALU8命令フラグメントにより実行される特別の演算は、表16に示される命令フラグメントを作成する8ビットの値により特定される。
Figure 0006152558
ALU8命令フラグメントを使用して実行される演算を特定するために使用される特別のコードが、表17に示される。
Figure 0006152558
ALU16命令フラグメントは、算術及び論理シフトの両者でよい。ALU16命令フラグメントにより実行される特別の演算が表18に示される。
表記<<は、算術シフトを意味するが、<<<は論理シフトを意味する。
Figure 0006152558
ALU16命令フラグメントのフォーマットは、表19に示される。
Figure 0006152558
ALU16命令フラグメントにより実行される特別の演算は、表20に示された命令フラグメントを作成するビットの値により特定される。
Figure 0006152558
DMOV16命令フラグメントは、表21に示される異なるデータ移動、データインポートとデータアウトポート演算、を実行するための16ビット命令フラグメントである。
Figure 0006152558
DMOV16命令フラグメントを使用して利用可能な演算を実行するために使用されるフォーマットとコードは、表22に示される。
Figure 0006152558
命令OUTPORTA(port adder)はAbus上の値を読み、そしてそれを指定されたポートに出力する。同時にメモリAからの値を読むことにより、この命令は、メモリAから該ポートへ直接に値を送るために使用されることが出来る。OUTPORTB(port
addr)は同様に動作する。
DMOV24命令フラグメントは、表23に示される異なるロード/ストアー・レジスタダイレクト、又はロード・レジスタイミディエット演算を実行するための24ビット命令フラグメントである。
Figure 0006152558
表24は、本発明の例示的な実施態様に従って、DMOV24命令フラグメントを使用して利用可能な種々の演算を実行するために使用されるフォーマットといくつかのコードを提供する。
Figure 0006152558
他の命令フラグメントと同様にDMOV24に関して、幾つかの演算は二度符号化されることが留意されねばならない。例えば、列(i)と(j)に特定されたフォーマットは、同じ演算を符号化する。一つはイミディエットバスIm1の使用を特定し、他はイミディエットバスIm2の使用を特定する。二度の符号化は、命令フラグメントがより多くの種類の他の命令フラグメントと結合されることを許容し、これは同様にイミディエットバス1又はイミディエットバス2の使用を要求する可能性がある。
40ビット・デュアル・ロード命令フラグメント(DL40)は、イミディエットロード又はアドレスロード演算を実行するための40ビット命令フラグメントである。本発明の例示的な実施態様において実行される特別の演算が表25に示される。
Figure 0006152558
各演算のためのDL40命令フラグメントフォーマットは、表26に提供される。
Figure 0006152558
表5にまた示されるように、メモリ移動及びプログラムフロー命令フラグメントの4つのタイプが、本発明の例示的な実施態様中に提起される。そのリストは表27に提供される。
Figure 0006152558
各メモリ移動とプログラムフロー命令(MMPF)フラグメントは、表28にリストされた1組のMMPFサブフラグメントからなる。
Figure 0006152558
MMPF命令フラグメントのフォーマットと演算は、まず議論され、MMPFサブフラグメントのフォーマットと演算のより詳細な議論が続いて行われた。
OneMem11 MMPF命令フラグメントは、単一のメモリロードとストア演算、データ移動演算、及びプログラムフロー演算を実行するために使用される。ここに提供された例示的な実施態様において、8つの異なる演算はOneMem11 MMPF命令フラグメントを使用して実行され、特別の演算が表29に示される11ビットフラグメントの最初の3ビットにより表示され、それはOneMem11データ移動命令フラグメントを使用して実行されることができる演算をリストする。
Figure 0006152558
TwoMem19 MMPF命令フラグメントは、19ビット命令フラグメントであり、それはメモリロードとストア演算の8つの異なる結合が、表30に示されたように実行されることを可能とする。
Figure 0006152558
TwoMov19 MMPF命令フラグメントは、19ビット命令フラグメントであり、それは表31に示されるデータ移動演算と一緒にメモリロードとストア演算の8つの異なる結合を可能とする。
Figure 0006152558
ThreeMem27 MMPF命令フラグメントは、27ビット命令フラグメントであり、それは、メモリロード、メモリストア、及びデータ演算の8つの異なる結合が表32に示されるように実行されることを可能とする。
Figure 0006152558
式(4)は、LD(A)命令サブフラグメントにより実行される演算を提供する。
Figure 0006152558
表33は、本発明の例示的な実施態様に従ってLD(A)命令サブフラグメントのフォーマットを提供する。
Figure 0006152558
式(5)は、LD(b)命令サブフラグメントにより実行される演算を提供する。
Figure 0006152558
表34は、本発明の例示的な実施態様に従うLD(B)命令サブフラグメントのフォーマットを提供する。
Figure 0006152558
式(6)は、ST(A)命令サブフラグメントにより実行される演算を提供する。
Figure 0006152558
表35は、本発明の例示的な実施態様に従うST(A)命令サブフラグメントのフォーマットを提供する。
Figure 0006152558
式(7)は、ST(B)命令サブフラグメントにより実行される演算を提供する。
Figure 0006152558
表36は、本発明の例示的な実施態様に従うST(B)命令サブフラグメントのフォーマットを提供する。
Figure 0006152558
表37は、DMOVA命令サブフラグメントにより実行される演算をリストする。
Figure 0006152558
表38は、本発明の例示的な実施態様に従うDMOVA命令サブフラグメントのフォーマットを提供する。
Figure 0006152558
このように、一つ以上の命令サブフラグメントを有することができるMMPF命令フラグメントを提供することにより、全命令を使用して実行されることができる演算の数は、さらに高められる。例えば、全命令により、算術及びMAC演算は3つまでのメモリ移動とプログラムフロー演算の組と一緒に実行されることができる。一つの命令を使用してこの多くの演算を実行する能力は、与えられた演算を実行するために必要な命令の総数をさらに減じ、それ故にDSPに要求される総命令メモリを減少する。命令メモリを減じることは、ダイサイズを減じ、それ故にDSPのコストと電力消費を減少する。それによって、そのDSPは移動無線電話を含む幅広い種々の応用により適したものになる。
このように、高度並列可変長命令セットを使用してDSPを制御するためのシステムと方法が説明された。好ましい実施態様についての前の説明は、当業者が本発明をつくり使用することを可能とする。それらの実施態様への種々の変更は当業者に容易に明らかであり、ここに明記された一般的な原理は発明能力を使用することなく他の実施態様に適用されることができる。例えば、該システムと方法はDSPの文脈において開示されたが、種々の観点が一般のコンピュータシステムと装置に適用可能である。
好ましい実施態様を参照することにより、本発明を説明したが、該当する実施態様は単に例示的なものであり、適当な知識と技術を有するものには種々の変形がクレームに記載された本願発明の範囲と精神とその均等物から離れることなくなされることができる。
以下に、本願の出願当初請求項に記載された発明を付記する。
[C1]
可変数の命令フラグメントを含む可変長命令に応答してデジタル信号処理を実行するデジタル信号プロセッサにおいて、
命令データが可変長命令を含み、少なくとも1つの最大長の完全な命令にとって十分な命令データをフェッチする命令フェッチユニットと
前記命令を復号して、制御信号を発生する命令復号器と、
処理すべきデータを記憶するレジスタバンクと、
第1のデータを記憶する第1のメモリバンクと、
第2のデータを記憶する第2のメモリバンクと、
第3のデータを記憶する第3のメモリバンクと、
前記第1のデータを前記レジスタバンク中の第1のレジスタに読み込む第1のデータバスと、
前記第2のデータを前記レジスタバンク中の第2のレジスタに読み込む第2のデータバスと、
前記第1および第2のレジスタ中の処理すべきデータを処理し、結果を前記レジスタバンク中の第3のレジスタに書き込む第1の処理ユニットと、
前記結果を前記第3のレジスタから前記第3のメモリに書き込む第3のデータバスとを具備するデジタル信号プロセッサ。
[C2]
前記結果を処理することによりさらに処理された結果を発生し、前記結果を前記レジスタバンク中の第4のレジスタに記憶させる第2の処理ユニットをさらに具備し、ここにおいて、前記第3のデータバスは前記さらに処理された結果を前記第4のレジスタから前記第3のメモリにさらに書き込む上記C1記載のデジタル信号プロセッサ。
[C3]
前記第3のデータバスは前記第1のデータバスおよび前記第2のデータバスより幅が広い上記C1記載のデジタル信号プロセッサ。
[C4]
前記レジスタバンク中の第1組のレジスタは前記第1の処理ユニットおよび前記第2の処理ユニットの両方に書き込むことができ、前記レジスタバンク中の第2組のレジスタは前記第1の処理ユニットまたは前記第2の処理ユニットの組のうちの1つに書き込むことができる上記C2記載のデジタル信号プロセッサ。
[C5]
前記レジスタバンク中の第1組のレジスタは前記第1の処理ユニットおよび前記第2の処理ユニットの両方から読み出すことができ、前記レジスタバンク中の第2組のレジスタは前記第1の処理ユニットまたは前記第2の処理ユニットの組のうちの1つから読み出すことができる上記C2記載のデジタル信号プロセッサ。
[C6]
デジタル信号には1組が含まれ、命令データに応答してデジタル信号を処理するデジタル信号プロセッサにおいて、
第1のメモリとレジスタバンクとの間でデータを読み出しおよび書き込む第1のデータバスと、
第2のメモリと前記レジスタバンクとの間でデータを読み出しおよび書き込む第2のデータバスと、
第3のメモリと前記レジスタバンクとの間でデータを読み出しおよび書き込む第3のデータバスとを具備し、
ここにおいて、前記第1のデータバス、前記第2のデータバス、前記第3のデータバスは同時に動作するデジタル信号プロセッサ。
[C7]
前記レジスタバンク中に記憶されているデータを処理する処理ユニットをさらに具備する上記C6記載のデジタル信号プロセッサ。
[C8]
1組の演算を要求する可変長の命令をフェッチする命令フェッチユニットと、
前記可変長の命令を復号し、前記1組の演算を実行させる命令復号器とをさらに具備する上記C6記載のデジタル信号プロセッサ。
[C9]
前記第1の処理ユニットと同時に前記レジスタバンク中のデータを処理する第2の処理ユニットをさらに具備する上記C6記載のデジタル信号プロセッサ。
[C10]
第1のデータバスを通して第1のデータ値を受け取り、
第2のデータバスを通して第2のデータ値を受け取り、
前記第1のデータ値と前記第2のデータ値を使用して結果を発生し、
第3のデータバスを通して前記結果をメモリに書き込むステップを含むデータを処理する方法。
[C11]
前記第3のデータバスは前記第1のデータバスよりも幅が広い上記C10記載の方法。
[C12]
前記第3のバスは前記第1のバスよりも幅が広い上記C10記載の方法。
[C13]
第1のレジスタ中に前記第1のデータ値を記憶し、
第2のレジスタ中に前記第2のデータ値を記憶し、
第3のレジスタ中に前記結果を記憶するステップをさらに含む上記C10記載の方法。
[C14]
第1の処理ユニットを使用して前記結果を発生し、
前記第3のレジスタに結合された第2の処理ユニットを使用して前記第1の結果から第2の結果を発生するステップをさらに含む上記C13記載の方法。
[C15]
デジタル信号を処理するデジタル信号プロセッサにおいて、
第1の入力データと第2の入力データに応答して結果データを発生する処理ユニットと、
前記第1の入力データを前記処理ユニットに送る第1のデータバスと、
前記第2の入力データを前記処理ユニットに送る第2のデータバスと、
前記結果データを送る第3のデータバスとを具備するデジタル信号プロセッサ。
[C16]
前記第1の入力データを読み出すために前記第1のデータバスに結合された第1のメモリシステムと、
第2のメモリシステムを読み出すために前記第2のデータバスに結合された第2のメモリシステムと、
前記結果データを書き込むために前記第3のデータバスに結合された第3のメモリシステムとをさらに具備する上記C15記載のデジタル信号プロセッサ。
[C17]
前記第1のデータバスは前記第3のデータバスよりも幅が狭い上記C15記載のデジタル信号プロセッサ。
[C18]
前記第1のデータバスおよび前記第2のデータバスは前記第3のデータバスよりも幅が狭い上記C15記載のデジタル信号プロセッサ。
[C19]
前記第1のデータバス、前記第2のデータバス、前記第3のデータバス、前記処理ユニットに結合され、前記第1のデータと前記第2のデータを記憶する第1のレジスタと、 前記結果データを記憶する第2のレジスタと、
前記第2のレジスタに結合され、前記結果データを処理する第2の処理ユニットとをさらに具備する上記C15記載のデジタル信号プロセッサ。
[C20]
前記第1のデータバス、前記第2のデータバス、前記第3のデータバスを制御する制御システムをさらに具備する上記C19記載のデジタル信号プロセッサ。
[C21]
前記第1の処理ユニットは乗算累算ユニットであり、前記第2の処理ユニットは演算論理ユニットである上記C19記載のデジタル信号プロセッサ。
[C22]
少なくとも3つのデータバスを有する1組のデータバスと、
前記1組のデータバス中の各データバスからデータを受け取る複数の処理ユニットとを具備するデジタル信号プロセッサ。
[C23]
前記複数の処理ユニット中の第1の処理ユニットは乗算累算ユニットであり、前記複数の処理ユニット中の前記第2の処理ユニットは演算論理ユニットである上記C22記載のデジタル信号プロセッサ。
[C24]
データを記憶するメモリユニットと、
1組のレジスタを備え、データを記憶するレジスタバンクとをさらに具備し、
ここにおいて、前記1組のデータバスは対応するデータの組を対応するレジスタに読み込む上記C22記載のデジタル信号プロセッサ。
[C25]
データを記憶するメモリユニットと、
1組のレジスタを備え、データを記憶するレジスタバンクとをさらに具備し、
ここにおいて、前記1組のデータバスは対応するデータの組を対応するレジスタに書き込む上記C22記載のデジタル信号プロセッサ。
[C26]
それぞれが1つの演算を要求する1組の命令フラグメントを有する可変長の命令を使用してデジタル信号プロセッサを動作させる方法において、
(a)第1のクロックサイクルの第1のクロックフェーズ中に、前に処理されたデータを第1のレジスタから第1の処理ユニットに読み込み、
(b)前記1組の命令フラグメント中の第1の命令フラグメントに基づいて前記前に処理されたデータを処理し、前記第1のクロックサイクル中に、2度処理されたデータを生成し、
(c)前記1組の命令フラグメント中の第2の命令フラグメントに基づいて新しいデータを処理し、前記第1のクロックサイクル中に、新しく処理されたデータを生成し、
(d)前記第1のクロックサイクルの第2のフェーズ中に、前記新しく処理されたデータを前記第1のレジスタに書き込み、
(e)前記第1のクロックサイクルの第2のフェーズ中に、前記2度処理されたデータを第2のレジスタに書き込むステップを含む方法。
[C27]
ステップ(b)は第1の処理ユニットにより実行され、ステップ(c)は第2の処理ユニットにより実行される上記C26記載の方法。
[C28]
前記可変長の命令を含む命令データを読み出し、
次の命令長を決定し、
前記次の命令長に等しい前記命令データ中のデータ量を復号するステップを含む上記C26記載の方法。
[C29]
第1の処理ユニットと、
第2の処理ユニットと、
前記第1の処理ユニットおよび前記第2の処理ユニットに読み出し可能に結合されたレジスタとを具備するマイクロプロセッサ。
[C30]
前記レジスタに結合されたデータバスと、
前記データバスに結合されたデータメモリとをさらに具備する上記C29記載のマイクロプロセッサ。
[C31]
前記第1の処理ユニットに結合されているが、前記第2の処理ユニットには結合されていない第2のレジスタと、
前記第2の処理ユニットに結合されているが、前記第1の処理ユニットには結合されていない第3のレジスタとをさらに具備する上記C29記載のマイクロプロセッサ。
[C32]
前記レジスタは2つのフェーズクロックサイクルで動作し、前記レジスタは前記2つのフェーズクロックサイクルの第1のフェーズ中に読み出され、前記レジスタは前記2つのフェーズクロックサイクルの第2のフェーズ中に書き込まれる上記C29記載のマイクロプロセッサ。
[C33]
前記第1の処理ユニットを前記レジスタに第1の構成で結合し、前記第2の処理ユニットを前記レジスタに第2の構成で結合するマルチプレクサをさらに具備する上記C29記載のマイクロプロセッサ。
[C34]
命令データに基づいて前記マルチプレクサを構成する制御システムをさらに具備する上記C33記載のマイクロプロセッサ。
[C35]
前記第1の処理ユニットは乗算アキュムレータである上記C29記載のマイクロプロセッサ。
[C36]
前記第1の処理ユニットは演算論理ユニットである上記C35記載のマイクロプロセッサ。
[C37]
第1のデータメモリと、
第2のデータメモリと、
前記第1のデータメモリと前記レジスタとに結合された第1のバスと、
前記第2のデータメモリと前記レジスタとに結合された第2のバスとをさらに具備する上記C29記載のマイクロプロセッサ。
[C38]
前記レジスタは前記レジスタの出力を通して前記第1の処理ユニットと前記第2の処理ユニットとに結合され、前記第1の処理ユニットの出力は前記レジスタの入力に結合されている上記C29記載のマイクロプロセッサ。
[C39]
デジタル信号プロセッサを動作させる方法において、
第1のクロックサイクルの第1のクロックフェーズ中に、処理されたデータをレジスタから第1の処理ユニットに読み込み、
前記第1のクロックサイクル中に、前記第1の処理ユニットを使用して前記処理されたデータを処理して、さらに処理されたデータを生成し、
前記第1のクロックサイクル中に、第2の処理ユニット中の他のデータを処理して、新しく処理されたデータを生成し、
前記第1のクロックサイクルの第2のフェーズ中に、前記新しく処理されたデータを前記レジスタに書き込むステップを含む方法。
[C40]
前記第1のクロックサイクルの前記第2のフェーズ中に、前記さらに処理されたデータを第2のレジスタに書き込むステップをさらに含む上記C39記載の方法。
[C41]
データを処理する第1の処理ユニットと、
データを処理する第2の処理ユニットと、
前記第1の処理ユニットと前記第2の処理ユニットの両方にデータを書き込むことができる第1組のレジスタと、
前記第1の処理ユニットにはデータを書き込むことができるが、前記第2の処理ユニットにはデータを書き込むことができない第2組のレジスタとを具備するデジタル信号プロセッサ。
[C42]
前記第1の処理ユニットは乗算累算ユニットであり、前記第2の処理ユニットは演算論理ユニットである上記C41記載のデジタル信号プロセッサ。
[C43]
アドレス空間を有するメモリ中に記憶された命令を使用してデジタル信号プロセッサを制御する方法において、
第1の命令の第1の部分を含むメモリの第1のデータワードを書き出し、
第1の命令の第2の部分と第2の命令の第1の部分を含むメモリの第2のデータワードを書き出すステップを含む方法。
[C44]
前記第1の命令は複数の命令フラグメントから構成され、各命令フラグメントは特定の演算を実行する上記C43記載の方法。
[C45]
前記第1の命令と前記第2の命令は異なる長さである上記C43記載の方法。
[C46]
前記第1の命令と前記第2の命令は複数組の命令フラグメントから構成され、各命令フラグメントは特定の演算を実行する上記C43記載の方法。
[C47]
前記命令フラグメントには第1の命令フラグメントと第2の命令フラグメントとが含まれ、前記第1の命令フラグメントは1組の演算を要求し、1組の演算は前記第2の命令フラグメントにより実行される1組の演算のサブセットである上記C46記載の方法。
[C48]
前記第1の命令フラグメントは前記第2の命令フラグメントよりも短い上記C47記載の方法。
[C49]
デジタル信号プロセッサを制御するシステムにおいて、
フロントエッジワード境界を有するアドレスワードでアドレス可能なアドレス空間を持つメモリと、
前記メモリに記憶された1組の可変長の命令と、前記可変長の命令のそれぞれがフロントエッジ命令境界を有する、具備し、
ここにおいて、前記フロントエッジ命令境界の第1の部分は前記フロントエッジワード境界に対応し、前記フロントエッジ命令境界の第2の部分は前記フロントエッジワード境界と異なっているシステム。
[C50]
前記可変長の命令は可変数の命令フラグメントを含む上記C49記載のシステム。
[C51]
前記可変長の命令は各可変長の命令がどれ位長いかを示すヘッダを含む上記C49記載のシステム。
[C52]
前記メモリは前記デジタル信号プロセッサの命令メモリ内に配置されている上記C49記載のシステム。
[C53]
デジタル信号プロセッサを制御するシステムにおいて、
バックエッジワード境界を有するアドレスワードでアドレス可能なアドレス空間を持つメモリと、
前記メモリに記憶された1組の可変長の命令と、前記可変長の命令のそれぞれがバックエッジ命令境界を有する、具備し、
ここにおいて、前記バックエッジ命令境界の第1の部分は前記バックエッジワード境界に対応し、前記バックエッジ命令境界の第2の部分は前記バックエッジワード境界と異なっているシステム。
[C54]
前記可変長の命令は可変数の命令フラグメントを含む上記C53記載のシステム。
[C55]
前記可変長の命令は各可変長の命令がどれ位長いかを示すヘッダを含む上記C53記載のシステム。
[C56]
前記メモリは前記デジタル信号プロセッサの命令メモリ内に配置されている上記C53記載のシステム。
[C57]
マイクロプロセッサを制御するシステムにおいて、
命令データを記憶し、アドレス空間を有するメモリと、
演算を要求する複数の可変長の命令とを具備し、
前記複数の可変長の命令の実質的な部分は前記アドレス空間のほぼ連続した位置に配置されているシステム。
[C58]
10より多い命令が前記メモリ内のほぼ連続した位置に配置されている上記C57記載のシステム。
[C59]
前記命令の90パーセントより多い命令が前記メモリ空間内のほぼ連続した位置に配置されている上記C57記載のシステム。
[C60]
前記命令の25パーセントより多い命令が前記メモリ空間内のほぼ連続した位置に配置されている上記C57記載のシステム。
[C61]
前記可変長の命令はどれ位多くの命令データが可変長の命令に存在しているかにしたがって変化する上記C57記載のシステム。
[C62]
集積回路を制御する方法において、
(a)実行すべき1組の演算に対応する1組の命令フラグメントを発生し、
(b)同時に実行することができる前記命令フラグメントを命令フラグメント組にグループ分けし、
(c)その可変長の命令がどれ位長い可変長の全命令を生成するかを示すヘッダを各命令フラグメント組に付加し、
(d)前記可変長の全命令をアドレス空間の連続したアドレスで前記集積回路に書き込むステップを含み、
ここにおいて、前記アドレス空間はワード境界を有する方法。
[C63]
前記可変長の命令は16ビットの命令、32ビットの命令、48ビットの命令から構成されている上記C62記載の方法。
[C64]
各ヘッダは前記可変長の全長の命令内で最上位の位置に配置され、5ビットから構成されている上記C62記載の方法。
[C65]
前記命令フラグメントのサブセットは、1つ、2つあるいは3つの命令フラグメントを含むことができる上記C62記載の方法。
[C66]
デジタル信号プロセッサを制御する方法において、
(a)減少された数の演算が並列に処理されるべきときに短い命令を発生し、
(b)より多い数の演算が並列に処理されるべきときに長い命令を発生するステップを含む方法。
[C67]
前記短い命令と前記長い命令はアドレスワード境界を有するメモリ中の連続した位置に記憶される上記C66記載の方法。
[C68]
ステップ(a)は、
他の任意の演算と同時に実行できない演算を識別し、
命令フラグメントと、短い命令がどれ位の長さかを示すヘッダとから前記短い命令を構成するステップからなる上記C66記載の方法。
[C69]
ステップ(b)は、
同時に実行できる1組の演算を識別し、
前記1組の演算を実行する1組の命令フラグメントと、長い命令がどれ位の長さかを示すヘッダとから前記長い命令を構成するステップからなる上記C66記載の方法。
[C70]
前記ヘッダは5ビットから構成されている上記C68記載の方法。
[C71]
前記ヘッダは5ビットから構成されている上記C69記載の方法。
[C72]
可変数の命令フラグメントを含む可変長の命令を処理する方法において、
(a)可能な最大長の可変長命令を含むのに十分な大きさの第1組の命令データを読み出し、
(b)前記第1組の命令データ内に記憶されている第1の可変長の命令を処理し、
(c)未処理の命令データ量が前記可能な最大長よりも少ないときに追加的な命令データをロードするステップを含む方法。
[C73]
ステップ(a)は、
第1のデータワードを読み出し、
第2のデータワードを読み出すステップから構成されている上記C72記載の方法。
[C74]
ステップ(c)は、
未処理の命令データ量が前記可能な最大長の1つの命令ワード内であるときに1つの命令ワードを読み出し、
未処理の命令データ量が前記可能な最大長よりも少ない1つより多くの命令ワードであるときに2つの命令ワードを読み出すステップを含む上記C73記載の方法。
[C75]
メモリ内のほぼ連続したメモリ空間中に間隔をあけられた複数の可変長の命令を具備し、
前記複数の可変長の命令中の各命令は、
命令の長さを示すヘッダと、
実行すべき演算を特定する本体部とを有するメモリ。
[C76]
デジタル信号プロセッサ中の命令データを処理する制御システムにおいて、
ワードでアドレス可能な第1のメモリバンクと第2のメモリバンクとを備え、未処理の命令データを記憶し、前記命令データは最大命令長を有する命令メモリと、
前記命令メモリから読み出す命令レジスタと、
前記命令レジスタ中の未処理の命令データ量が前記最大命令長の1つのワード内であるときに、命令データの1つのワードを前記命令メモリから前記命令レジスタにロードし、前記最大命令長と前記命令レジスタ中の前記未処理データとの間に1つよりも多いワードの不足があるときに命令データの2つのワードを前記命令メモリから前記命令レジスタにロードする制御システムとを具備する制御システム。
[C77]
1組の回転された構成のうちの1つで前記命令レジスタ中に記憶されたデータを出力するロテータをさらに具備し、
ここにおいて、前記制御システムはさらに、前記命令レジスタからの未処理データを前記ロテータを使用して最上位位置に保持する上記C76記載の制御システム。
[C78]
前記可変長の命令は前記ワード以下の長さを有する上記C76記載の制御システム。
[C79]
前記可変長の命令はフロントエッジ命令境界とバックエッジ命令境界を有し、前記可変長の命令は、メモリアドレス空間中で相互に隣接する2つの連続した命令のフロントエッジ命令境界とバックエッジ命令境界を有する前記命令メモリ内で、ワード境界間に記憶される上記C76記載の制御システム。
[C80]
前記可変長の命令は可変数の命令フラグメントを含み、各命令フラグメントは特定の演算を実行する上記C76記載の制御システム。
[C81]
データを記憶するレジスタバンクと、
前記データに乗算累算演算を実行する乗算累算ユニットと、
前記乗算累算ユニットの入力に結合され、第1の構成で入力データをシフトし、第2の構成で前記入力データを通過させるシフトユニットとを具備するデジタル信号プロセッサ。
[C82]
前記シフトユニットは前記入力データをシフトし、前記乗算累算ユニットは単一の処理サイクル中に前記乗算累算演算を実行する上記C81記載のデジタル信号プロセッサ。
[C83]
下位16ビットAlおよび上位16ビットAhを有する32ビット数Aと、16ビット数Bとに2倍精度乗法演算を実行するシステムにおいて、
(a)第1のクロックサイクル中にBによりAlを乗算して、第1の中間値I1を生成し、
(b)16ビットだけ右に前記中間値I1をシフトして、シフトされた中間値SI1を生成し、
(c)BとAhを乗算して、第2の中間値I2を生成し、
(d)I2に前記シフトされた中間値SI1を加算し、
ここにおいて、ステップ(b)−(d)は第2のクロックサイクル中に実行されるシステム。
[C84]
メモリと処理装置との間の可変長のデータの転送が最適化されるように選択された第2の複数の選択可能なバスを通して第1の複数の処理装置とメモリが接続可能であるデジタル信号プロセッサ。

Claims (18)

  1. 可変長命令を処理する方法であって、
    命令メモリから命令データの第1のセットを読み取ることと、
    命令データの前記第1のセット内に記憶された第1の可変長命令を処理することであって、前記第1の可変長命令は、最大の許容可能な命令サイズを超えない第1の命令サイズを有する、処理することと、
    前記第1の可変長命令が処理された後に残っている未処理の命令データの量が命令フェッチ閾サイズ満たかどうかの決定に基づいて前記命令メモリから命令データの第2のセットを選択的にロードすることであって、前記未処理の命令データの量が命令データの前記第1のセットに対応し、前記命令フェッチ閾サイズは、前記最大の許容可能な命令サイズに対応する、選択的にロードすることと、
    複数の回転された構成のうちの1つの回転された構成で命令データを出力することであって前記1つの回転された構成は、前記命令データの命令フラグメントの特定の順序に対応し、前記複数の回転された構成は、前記命令フラグメントの許容される順序各々に対応し、前記命令データは、命令データの前記第1のセットの少なくとも一部分、命令データの前記第2のセットの少なくとも一部分、またはこれらの結合を含む、出力することと、
    を備える方法。
  2. 前記命令メモリから命令データの前記第2のセットを選択的にロードすることは、前記未処理の命令データの量が前記命令フェッチ閾サイズを満たさないことに応答して命令データの前記第2のセットを読み出すことまたは前記未処理の命令データの量が前記命令フェッチ閾サイズを満たすことに応答して命令データの前記第2のセットを読み出さないことを含特定の回転された構成で前記命令フラグメントを回転させることをさらに備え、前記特定の回転された構成は、前記命令データの長さを示すビットに基づいて決定される、請求項1に記載の方法。
  3. 前記未処理の命令データの量が前記命令フェッチ閾サイズを満たさないことに応答して命令データの前記第2のセットを読み出すことは、
    新たな命令データの第2の量を読み出すことを含み、前記新たな命令データの第2の量は処理された命令データのワード数に基づいて決定される、請求項2に記載の方法。
  4. 前記命令データは、命令データの前記第1のセットおよび命令データの前記第2のセットを含み、前記命令データを出力することは、前記命令データを命令復号器へ出力することを備える、請求項1に記載の方法。
  5. 前記命令メモリは複数のアドレスワードを備える、請求項1に記載の方法。
  6. 命令データの前記第1のセットは、複数の命令フラグメントを備える、請求項1に記載の方法。
  7. 前記命令メモリは、第1のワードと第2のワードとを備えており、命令データの前記第1のセットの第1の部分は、前記第1のワードに存在し、命令データの前記第1のセットの第2の部分は、前記第2のワードに存在する、請求項1に記載の方法。
  8. 命令データの前記第1のセットの前記第2の部分は、前記第2のワードにおいて命令データの前記第2のセットの少なくとも一部分と隣接して記憶される、請求項7に記載の方法。
  9. 命令データの前記第2のセットは、少なくとも部分的に前記第2のワードにおいて記憶され、命令セパレータコードが、前記第2のワード内で命令データの前記第1のセットと命令データの前記第2のセットとを隔てる、請求項7に記載の方法。
  10. 前記第1の可変長命令は、複数の命令フラグメントを備えており、前記第1の可変長命令が出力されるときには、第1の命令フラグメントは、第1の実行ユニットによって実行され、第2の命令フラグメントは、第2の実行ユニットによって実行される、請求項1に記載の方法。
  11. 前記第1の命令サイズは48ビット以下であり、前記第1の命令データの最初の5ビットは、前記第1の命令サイズを示す、請求項1に記載の方法。
  12. 未処理の命令データを記憶するように構成された命令メモリであって、前記命令メモリは、第1のメモリバンクと第2のメモリバンクとを含み、前記第1のメモリバンクおよび前記第2のメモリバンクは、ワードでアドレス可能である、命令メモリと、
    前記命令メモリから第1の可変長命令を含む命令データの第1のセットを読み取るように構成された命令レジスタであって、前記第1の可変長命令は、最大の許容可能な命令サイズを超えない第1の命令サイズを有する、命令レジスタと、
    前記第1の可変長命令が処理された後に残っている未処理の命令データの量が命令フェッチ閾サイズ満たかどうかの決定に基づいて前記命令メモリから命令データの第2のセットを選択的にロードするように構成された制御論理であって、前記未処理の命令データの量が命令データの前記第1のセットに対応し、前記命令フェッチ閾サイズは、前記最大の許容可能な命令サイズに対応する、制御論理と、
    記命令レジスタに記憶された命令データを出力するように構成されたロテータであって前記ローテータは、さらに、複数の回転された構成のうちの第1の回転された構成で前記命令データを出力するように構成され、前記第1の回転された構成は、前記命令データの命令フラグメントの特定の順序に対応し、前記複数の回転された構成は、前記命令フラグメントの許容される順序各々に対応し、前記命令データは、命令データの前記第1のセットの少なくとも一部分、命令データの前記第2のセットの少なくとも一部分、またはこれらの結合を含む、ローテータと、
    を備える装置。
  13. 前記制御論理は、さらに、前記未処理の命令データの量が前記命令フェッチ閾サイズを満たさないときには命令データの前記第2のセットをロードすることまたは前記未処理の命令データの量が前記命令フェッチ閾サイズを満たすときには命令データの前記第2のセットをロードすることを控えることによって、前記命令メモリから命令データの前記第2のセットを選択的にロードするように構成される、請求項12に記載の装置。
  14. 前記制御論理は、さらに、新たな命令データの第2の量を読み出すように構成され、前記第2の量は、処理された命令データのワード数に基づいて決定される、請求項12に記載の装置。
  15. 前記第1の可変長命令は、命令フラグメントを含んでおり、前記命令フラグメントの各々は、特定の操作を実行するために使用される、請求項12に記載の装置。
  16. 命令メモリから、第1の可変長命令を含む命令データの第1のセットを読み取ることと、
    命令データの前記第1のセット内に記憶された前記第1の可変長命令を処理することであって、前記第1の可変長命令は、最大の許容可能な命令サイズを超えない第1の命令サイズを有する、処理することと、
    前記第1の可変長命令が処理された後に命令データの前記第1のセット内に残っている未処理の命令データの量が命令フェッチ閾サイズ満たかどうかの決定に基づいて前記命令メモリから命令データの第2のセットを選択的にロードすることであって、前記未処理の命令データの量が命令データの前記第1のセットに対応し、前記命令フェッチ閾サイズは、前記最大の許容可能な命令サイズに対応する、選択的にロードすることと、
    複数の回転された構成のうちの1つの回転された構成で命令データを出力することであって前記1つの回転された構成は、前記命令データの命令フラグメントの特定の順序に対応し、前記複数の回転された構成は、前記命令フラグメントの許容される順序各々に対応し、前記命令データは、命令データの前記第1のセットの少なくとも一部分、命令データの前記第2のセットの少なくとも一部分、またはこれらの結合を含む、出力することと、
    を備える操作をコンピュータに実行させるプログラムを記憶した、コンピュータ読取可能な記憶媒体。
  17. 前記命令メモリから命令データの前記第2のセットを選択的にロードすることは、前記未処理の命令データの量が前記命令フェッチ閾サイズを満たさないときには命令データの前記第2のセットを読み出すが、前記未処理の命令データの量が前記命令フェッチ閾サイズを満たすときには命令データの前記第2のセットを読み出さないことを含む、請求項16に記載のコンピュータ読取可能な記憶媒体。
  18. 前記未処理の命令データの量が前記命令フェッチ閾サイズを満たさないときに命令データの前記第2のセットを読み出すことは、処理された命令データのワード数に基づいて決定された新たな命令データの第2の量を読み出すことを含む、請求項17に記載のコンピュータ読取可能な記憶媒体。
JP2014181387A 1998-03-18 2014-09-05 デジタル信号プロセッサ Expired - Lifetime JP6152558B2 (ja)

Applications Claiming Priority (12)

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

Related Parent Applications (1)

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

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2016040960A Division JP6300284B2 (ja) 1998-03-18 2016-03-03 デジタル信号プロセッサ

Publications (2)

Publication Number Publication Date
JP2015028793A JP2015028793A (ja) 2015-02-12
JP6152558B2 true JP6152558B2 (ja) 2017-06-28

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 Before (2)

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 デジタル信号プロセッサ

Family Applications After (1)

Application Number Title Priority Date Filing Date
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) CN1279435C (ja)
AR (5) AR026080A2 (ja)
AT (1) ATE297567T1 (ja)
AU (1) AU2986099A (ja)
CA (1) CA2324219C (ja)
DE (1) DE69925720T2 (ja)
DK (1) DK1066559T3 (ja)
HK (2) HK1094608A1 (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
EP1457876B1 (en) * 1998-03-18 2017-10-04 Qualcomm Incorporated Systems for and method of controlling a digital signal processor using a variable length instruction set, method of generating and storing said instructions and memory comprising said instructions
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
US11768689B2 (en) 2013-08-08 2023-09-26 Movidius Limited Apparatus, systems, and methods for low power computational imaging
US10001993B2 (en) 2013-08-08 2018-06-19 Linear Algebra Technologies Limited Variable-length instruction buffer management
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
EP3175320B1 (en) * 2014-07-30 2019-03-06 Linear Algebra Technologies Limited Low power computational imaging
BR112017001981B1 (pt) * 2014-07-30 2023-05-02 Movidius Limited Método para gerenciar buffer de instruções, sistema e memória legível por computador relacionados
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 日本電気株式会社 命令処理方法及び命令処理装置
EP1457876B1 (en) * 1998-03-18 2017-10-04 Qualcomm Incorporated Systems for and method of controlling a digital signal processor using a variable length instruction set, method of generating and storing said instructions and memory comprising said instructions

Also Published As

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

Similar Documents

Publication Publication Date Title
JP6300284B2 (ja) デジタル信号プロセッサ
JP2016146189A5 (ja)
US7502911B2 (en) Variable length instruction fetching that retrieves second instruction in dependence upon first instruction length
US6425070B1 (en) Variable length instruction decoder
US7694109B2 (en) Data processing apparatus of high speed process using memory of low speed and low power consumption
US7694084B2 (en) Ultra low power ASIP architecture
WO1999036852A1 (en) Digital signal processor having data alignment buffer for performing unaligned data accesses
JP2008003708A (ja) 映像処理エンジンおよびそれを含む映像処理システム
EP2267596B1 (en) Processor core for processing instructions of different formats
JP2002529847A (ja) ビットfifoを有するディジタル信号プロセッサ
JPH08212075A (ja) 情報処理装置
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
US20030005269A1 (en) Multi-precision barrel shifting
JPH10198550A (ja) シフタ回路及びマイクロプロセッサ

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A132

Effective date: 20151006

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20160106

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20160208

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160303

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160830

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20161130

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161226

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170328

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170426

R150 Certificate of patent or registration of utility model

Ref document number: 6152558

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

EXPY Cancellation because of completion of term