CN1301363A - 数字信号处理器 - Google Patents
数字信号处理器 Download PDFInfo
- Publication number
- CN1301363A CN1301363A CN99806366A CN99806366A CN1301363A CN 1301363 A CN1301363 A CN 1301363A CN 99806366 A CN99806366 A CN 99806366A CN 99806366 A CN99806366 A CN 99806366A CN 1301363 A CN1301363 A CN 1301363A
- Authority
- CN
- China
- Prior art keywords
- instruction
- data
- register
- processing unit
- group
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000012545 processing Methods 0.000 claims abstract description 121
- 230000015654 memory Effects 0.000 claims abstract description 81
- 238000000034 method Methods 0.000 claims description 64
- 238000003860 storage Methods 0.000 claims description 46
- 238000000151 deposition Methods 0.000 claims description 22
- 230000008901 benefit Effects 0.000 claims description 17
- 238000006073 displacement reaction Methods 0.000 claims description 9
- 238000012856 packing Methods 0.000 claims description 8
- 241001269238 Data Species 0.000 claims description 7
- 238000011282 treatment Methods 0.000 claims description 6
- 238000004364 calculation method Methods 0.000 claims description 5
- 238000002203 pretreatment Methods 0.000 claims description 5
- 230000008859 change Effects 0.000 claims description 3
- 230000005055 memory storage Effects 0.000 claims description 2
- 238000003672 processing method Methods 0.000 claims description 2
- 239000004215 Carbon black (E152) Substances 0.000 claims 1
- 230000005540 biological transmission Effects 0.000 claims 1
- 229930195733 hydrocarbon Natural products 0.000 claims 1
- 150000002430 hydrocarbons Chemical class 0.000 claims 1
- 238000012384 transportation and delivery Methods 0.000 description 18
- 230000008569 process Effects 0.000 description 16
- 230000014509 gene expression Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 8
- 238000001914 filtration Methods 0.000 description 8
- 238000011068 loading method Methods 0.000 description 8
- 238000011079 streamline operation Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000004148 unit process Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000010606 normalization Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000002349 favourable effect Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000007634 remodeling Methods 0.000 description 2
- 102100021283 1-aminocyclopropane-1-carboxylate synthase-like protein 1 Human genes 0.000 description 1
- 101100325756 Arabidopsis thaliana BAM5 gene Proteins 0.000 description 1
- 101100456566 Caenorhabditis elegans dpy-22 gene Proteins 0.000 description 1
- 101100269850 Caenorhabditis elegans mask-1 gene Proteins 0.000 description 1
- 101100310641 Caenorhabditis elegans sop-2 gene Proteins 0.000 description 1
- 101000675558 Homo sapiens 1-aminocyclopropane-1-carboxylate synthase-like protein 1 Proteins 0.000 description 1
- 101150046378 RAM1 gene Proteins 0.000 description 1
- 101100273635 Rattus norvegicus Ccn5 gene Proteins 0.000 description 1
- 101100476489 Rattus norvegicus Slc20a2 gene Proteins 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000013256 coordination polymer Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000037213 diet Effects 0.000 description 1
- 235000005911 diet Nutrition 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000006249 magnetic particle Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 101150090336 regB gene Proteins 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000011885 synergistic combination Substances 0.000 description 1
- 238000010977 unit operation Methods 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
- 238000005303 weighing Methods 0.000 description 1
- 230000003245 working effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0886—Variable-length word access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30141—Implementation provisions of register files, e.g. ports
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3816—Instruction alignment, e.g. cache line crossing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent 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
数字信号处理电路要求使用变长指令组。系列性DSP包括一组数据可在其上与寄存库(120)交换的三条数据总线(108、110、112)和三只数据存储器(102、103、104)。寄存库的寄存器可被至少两个处理单元(128、130)访问。使用的取指单元(156)接收存贮在指令存储器(152)里的变长指令,该指令存储器可用三只数据存储器(102、102、104)分开。
Description
Ⅰ.发明背景
本发明涉及数字信号处理器。本发明特别适用于(但不专用于)应用高度平行、高度流水线处理技术的数字信号处理。
Ⅱ.相关技术的说明
数字信号处理器(DSP)通常用于实时处理数字信号。数字信号一般是一系列数字或数字值,用于代表相应的模拟信号。DSP已广泛应用于各种场合,包括密致盘播放机等音频放蜂窝电话等无线通信系统。
DSP往往被认为是微处理器的一种特殊形式。像微处理器一样,一般将DSP构制在硅基半导体集成电路上。另外,像微处理器那样,通过应用缩简指令组(RISC)运算技术,DSP的运算能力增强了,RISC运算技术包括使用较少数量的同尺寸指令来控制DSP的操作,每条指令的执行时间相同。RISC运算技术的应用,提高了执行指令的速率或时钟速率,附大了DSP内指令流水线操作量,由此增强了DSP的整体运算能力。
用RISC运算技术编制DSP也产生了不希望有的特性。特别是,基于RISC的DSP要执行大量指令来完成给定的任务。执行附加的指令附大了DSP的功耗,尽管由于基于RISC的DSP的时钟速度提高而缩短了执行这些指令的时间。另外,应用数量更大的指令还增大了DSP内片上指令存储器的尺寸。存储器在DSP内要求相当大的电路面积(常常超过总面积的50%),增大了DSP的尺寸与成本。因此,对于数字蜂窝网电话或其它类型电池操作的无线通信系统等低成本、小功率应用而言,采用基于RISC的DSP并非理想。
图1是用原有技术构制的DSP的简化框图。算逻单元(ALD)16耦合至AIU寄存库17,乘积电路(MAC)36耦合至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与指令接口13与片外存储器6交换数据与指令。
操作时,指令存储器12中的指令由译码器18译码。相应地,指令译码器18产生供给ALU16与MAC26的内部控制信号。该控制信号通常令ALU16获取在ALU寄存库17与数据存储器10或指令存储器12之间变换的数据,还令MAC26获取在MAC寄存库27与指令存储器12或数据存储器10之间交换的指令数据,还要令ALU16与MAC26根据分别存贮在ALU寄存库17与MAC寄存库27中的数据作各种操作。
在示例性操作中,指令存储器12可以存有供ALU16与MAC使用的系数数据,而数据存储器10可以包含被处理的数据(信号数据)。在一般实践中,系数数据可用DSP构成频率滤波器。滤波时,将来自数据存储器10的信号数据和来自指令存储器12的系数数据读入MAC寄存器27。指令存储器12内的附加指令数据也通过指令数据总线11或通过直接连接供给指令译码器18,它规定了准备由MAC27执行的操作。通常把MAC26产生的结果读回到数据存储器10。
这种原有处理技术导致许多处理上的低效性,例如包括总线对指令存储器12的访问争用,而总线必须将指令数据提供给MAC寄存器16和指令译码器18,还包括总线对数据存储器10的的访问争用,而总线又必须读出信号数据并写入输出数据。另外,在许多场合中,对输出数据的附加处理必须由ALU16来完成,更加增加了对数据存储器10的访问,造成对数据总线20的争用,因为输出数据必须从MAC寄存库27写入数据存储器10,然后读出给ALU寄存器17。这种读写操作都在总线20上进行,要耗用附加的总线周期。这类低效性降低了DSP的处理性能。
发明概述
本发明通过解决上述诸问题与低效时,并提供本说明描述的其它一些特性与改进,以期改善DSP的性能与有效时。
本发明为DSP提供一种新的改进的方法与电路。
根据本发明的一个方面提供的DSP,存储器可通过第二组可选总线与第一组处理装置连接,而把可选总线选成在存储器与处理装置之间传输的变长数据得以优化。
本发明各种其它方面均由所附的权项限定。
本发明可用变长指令组实现。一部分变长指令与结束出现在存储器的字边界上。利用包含可变数量的指令同的指令可实现本发明附加的诸方面。每个指令段可执行特定的操作,以在每个时钟周期内作多次操作,从而减少了执行任务所需的时钟周期总数。
一示列性DSP包括一组三根数据总线,数据可在其上与寄存库和三只数据存储器作交换。应用两条以上尤其是三条数据总线,实现了本发明明显减少总线争用的另一方面。本发明的一个实施例要求数据总线包括一条宽总线和两条窄总线,前面耦合至宽数据存储器,后者耦合至两个窄数据存储器。
本发明一实施例的一个方面是应用于寄存库,其寄存器可至少由两个处理单元访问,从而可用多个处理单元对特定数据组作多次操作,无须对存储器读写数据。本发明该示例性实施例中的处理单元,包括一个ALU和一个MAC单元。当与多总线结构、高度平行指令组合应用时,就实现了本发明的另一方面,即执行高度流水线的多操作处理。
通过包含一个指令取出单元接收存贮在指令存储器里的变长指令,可实现本发明的其它方面。运用与三只数据存储器组分开的指令存储器,可实现本发明的还有一个方面。指令译码器对来自指令存储器的指令译码并产生控制信号,让数据在各种寄存器、数据存储器与功能单元之间交换,允许在每个时钟周期内作多次操作。将本发明的各个方面协同组合起来,可产生意料不到的理想结果。例如,应用连续存在存储器内的变长指令,减少了DSP必需的电路面积,便于对DSP增设多条数据总线,并增设可被多个处理单元访问的寄存器,提高DSP的总体性能。组合本发明各个方面提提供的其它优点是明显的,下面将作详述。
根据参照附图对本发明示例性实施例的详述,特别是所附权项所规定的本发明的上述特征与其它特征及其优点就更清楚了。
附图简述
根据下面结合附图对本发明诸示例性实施例的详述,本发明的特征、目的和优点将变得更加清楚,图中同样的字符表示相应的元件,其中:
图1是按原有技术构制的DSP的方框图;
图2是实施本发明的DSP的方框图;
图3是寄存库输入口与寄存器之间连接的方框图;
图4是寄存库的寄存器与输出口之间连接的方框图;
图5是存贮在本发明一实施例的存储空间里一组变长指令的示图;
图6是表示指令取出单元操作的流程图;
图7是按本发明一实施例构制的指令取出单元的方框图;
图8是按本发明一实施例构制的MAV单元的方框图;
图9是本发明一实施例使用的指令体系的方框图。
较佳实施例的详细描述
本发明是新的改进的数据信号处理方法与电路。在整个说明书中,对信号、指令与数据采取了各种基准。这类信号、指令与数据较佳地用电压、电流表示,电流库包括带电、光学或磁性粒子,或它们的某种组合,其用法是众所周知的。用各种化学与生物化合物来表示这类信号、指令与数据,一般也符合本发明的使用,但是不作优先考虑,因为难以使用、管理和操纵这类项目。
另外,参照了本发明的各个方面、有利性、特征或优点(当不特定参照时,在此统称为方面)。本发明的有些实施例中,可以单独实现这些不同的方面而无须是提出本发明的其它方面。然而,在本发明的其它实施例中,可以将本发明的两个或多个方面一起实现,由此产生的协同和意料之外的优点,比只以本发明两个或多个组合方面中的一个方面实现的实施例更多。
Ⅰ.DSP操作原理与指令存储
图2是一部分DSP电路的方框图,该电路按本发明一示例性实施例构制。数据存储器102-104经地址发生单元(AGU)105-107分别耦合到数据总线A、B和C,并耦合至数据接口100。数据总线A、B和C经复用器122-126分别耦合至寄存库120的输出口P01、P02与P03,并耦合至寄存库120的输入口PI1、PI2与PI3。较佳地,数据总线A、B、C对数据存储器102-104与寄存体120内寄存器之间的数据作读写。
使用三条数据总线与三只数据存储器,可让更多数据在寄存体与数据存储器之间交换而一间生总线争用。例如,使用三条数据总线A、B与C,可同时从三只存储器102-104里作三次取出操作。同样地,由于能任意组合三次取写操作,故能同时作三次写操作。
添加第四条数据总线可作更多次操作,这与本发明的某些实施例相一致。然而,只使用三条数据总线特别有利,因为三第总线有利于DSP通常执行的滤波等许多任务。因此,添加第四条数据总线并不像添加第三条数据总线那样提供同样增加的性能提高,且要求同样的额外电路面积量。因此,添加第四条数据总线的效果比不上添加第三条总线。故在本发明的许多实施例中,较佳地只用三条数据总线。
输出口P04、P05和P06或寄存体120耦合至乘积(MAC)单元128,后者的输出又耦合至寄存体120的输入口P14。寄存体120的输出口PI4。寄存体120的输出口P007与P08耦合至ALU130,而后者的输出耦合至寄存体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与低与寄存器L0I-L3I以16位段访问。寄存器D0-D3是32位宽,能经子寄存器R0-R7以16位段访问。一般而言,寄存器与子寄存器均指简单的“寄存器”,寄存器的特定特证由提供的特定寄存器号指明。
通过拥有对其耦合并由多个输入与输出口访问的某些寄存器,可实现本发明的一个方面。在一实施例中,这种多连接性用耦合至每个寄存器的输入和每个输出口的复用器提供。其它多连接性方法是显然的,且与应用本发明某些方面相符,如包括使用数据总线与可导址存储器。然而,在有些实施例中使用复用器为佳,因为它们能迅速可控地访问各个寄存器与端口。
在本发明使用即时数据总线(这里提出的示例性实施例)的实施例中,实现了本发明的其它方面。例如,可将指令数据中包含的数据读入寄存体120,无须与存储器102-105接口。这样,指令处理系统无须与数据存储器接口就能提供附加数据,进一步减少了总线争用。
图3是一框图,表示寄存体120内一组寄存器与一组输入口PI1-PI5之间的连接。寄存器定为L0h-L3h、L0I-L3I、R0-R7。寄存器L0包括寄存器L0h与L0I。在图3和4中,寄存器L0h-L3h为24位宽,L0h-L3h、L0I-L3I和R0-R7为16位宽,使寄存器L0-L3为40位宽。同样地,输入口PI3-PI5包括24位的输入口PI3h-PI5h和16位的PI3I-PI5I,总共40位。输入口PI1与PI2仅16位,用于写入寄存器L0h-L3h时,只写24位中的最低16位。
如图3所示,有些寄存器从所有输入口接收数据,而另一些寄存器只从有些或部分输入口接收数据。特别是,所有的寄存器L0-L3从复用器500-514接收所有输入口PI1-PI5的数据,16位输入口能对寄存器L0-L3内的高和低寄存器进行写。这样,寄存器L0-L3从任何总线A-C(对应于输入口PI0-PI3)和从MAC单元128与ALU130(对应于输入口PI4与PI5)接收输入。寄存器R0-R7经复用器516-530从总线A-C接收输入数据。然而,它们都不从MAC单元128(输入口PI4)接收输入数据。另外,寄存器R0-R3经复用器516/518/524与526从ALU单元130接收输入数据。PI3h-PI5h和16位的PI3I-PI5I,总共40位。口PI1与PI2仅16位,用于写入寄存器L0h-L3h时,只写24位中的最低16位。
如图3所示,有些寄存器从所有输入口接收数据,而另一些寄存器只从有些或部分输入口接收数据。特别是,所有的寄存器L0-L3从复用器500-514接收所有输入口PI1-PI5的数据,16位输入口能对寄存器L0-L3内的高和低寄存器进行写。这样,寄存器L0-L3从任何总线A-C(对应于输入口PI0-PI3)和从MAC单元128与ALU130(对应于输入口PI4-PI5)接收输入。寄存器R0-R7经复用器516-530从总线A-C接收输入数据。然而,它们都不从MAC单元128(输入口PI4)接收输入数据。另外,寄存器R0-R3经复用器516、518、524与526从ALU单元130接收输入数据。
图3实施例有诸多优点。特别是,它在输入口与寄存器之间提供了足够的连接性,有利于最常见的操作,但总的连接性保持为最小,以减少电路构成制所需的总电路面积。例如,MAC单元128的输出只接至长寄存器L0-L3,这是有利的,因为乘和累计操作的结果通常超出32位,因而将MAC单元128的输出接至D0-D3提供了最小的便利。在另一例中,AL0单元130能对寄存器L0-L3和R0-R3输出,这增强了灵活性,因为数据可从AL0单元130写到各种寄存器,这很有用,因为ALU单元13执行了更多次操作,使它能有效地将数据输出到更多个寄存器。然而,ALU单元130不接至所有寄存器,故避免了不必要和过多的连接。
图3是一框图,表示当按本发明一实施例执行时,将寄存器120的输出口接至寄存器的情况。如图所示,输出至总线A的输出口P01经复用器540接至寄存器L0h-L3h、L01-L31与R0-R7,当被作为小子寄存器访问时,它包括所有有效的寄存器。同样地,输出至总线13的输出口P02经复用器542接至寄存器L0h-L3H、L01-L31与R0-R7。输出至40位宽总线C的输出口P03由复用器530接至寄存器L0-L3与D0-D3,当被作为全寄存器访问时,它包括全部有效的寄存器。
接至MAC单元128的40位输入的输出口P04,经复用器532接至寄存器L0-L3。鉴于乘和累计操作的特征,MAC128累计的值很大,因而将输出口P04只接至40位“长”寄存器L0-L3可提供最佳耦合配置,因为附加接至寄存器D0-D3的利用率很小,给出的各种乘法操作的累计一般超过32位。
接至MAC单元128的一个16位输入的输出口P05,经复用器534接至寄存器L0h-L3h、R0、R4与R6。接至MAC单元时的第二16位输入口的输出口P06,接至寄存器L0h-L3h、L01-L31与R0-R7。将MAC单元128的一个16位输入接至全部有效寄存器,并将第二个17位输入口接至有效寄存器小组,可实现有用的折衷。特别在寄存器空间普得有限时,至少可将待处理的一段数据放在任一有效寄存器里。然而,限制接至其它输入端的寄存器数量,减少了连接电路的总量,有利于提供其它功能与特点,如在其它寄存器、输入口与输出口之间有更高的连接性。
接至ALU130的输入端的输出口P07,经复用器546接至寄存器L0-L3、L0h-L3h与R0-R3。其中Z0h-L03h与R0-R3同一组逻辑零一起输出。即,寄存器L0h=L03h与R0-R3输出至P07的位31-16(位号为0-39),位0-15置逻辑零,位39-32用位31扩展符号。接至ALU130的另一输入端的输出口P08,也经复用器548连同一组逻辑零接至寄存器L0-L3和R0-R7.以此方式连接ALU130的输入端,可对全部有效的长寄存器L0-L3作逻辑操作,因而可对大量寄存器作逻辑操作,这对归一化和定标等多类信号处理操作是有用的。另外,可在寄存器R0-R7与L0h-L3h以及R0-R7之间作算术运算,以可使用的寄存器组来衡量,灵活性很大,同时还限制了必需的连接数量,因而限制了要求的电路面积。应理解,有效的算逻辑操作并一限于上述情况。
应用能被多数据总线与多处理单元访问的寄存器有各种好处。例如,寄存器在数据总线与处理单元间提供了接口,减少了每条数据总线通往每个处理单元的布线要求,从而节省了电路面积,降低了芯片成本。
再者,将最少量(一组)寄存器接至多个处理单元,可用多个处理单元对同一数据多次操作,一必定要通过数据总线向存储器读写数据,这样节省了总线周期,减少总线争用。采用指令处理流水线操作法也是有利的,因为第一处理单元在第一指令周期中处理的数据,然后可用第二处理单元在第二处理周期中在同一个寄存器内再作处理。
然而,并非所有数据都要求用多处理单元处理的,所以其它寄存器(另一组)只被一个处理单元或少于处理单元总数(有两个以上处理单元的场合)的处理单元访问。使用这另一组寄存器就减少了连接数,因而减少了电路面积,可在寄存器连接性与电路面积之间(因而在性能与效率之间)实现最佳平衡。
还有,在本发明一实施例中,利用寄存库128里的二相时钟寄存器可进一步增强流水线操作能力。在同一个全时钟(“处理”)周期内,二相时钟寄存器在时钟第一相上读,在第二相上写。这样在特定处理周期内,可在第一时钟相内读出已被MAC128等第一处理单元处理过的数据,并在该处理周期的剩余部分内由ALU130等第二处理单元作进一步处理。
另外,在处理周期第二相内,可刚由MAC128处理的新数据写入同一寄存器,从而在一个处理周期内,可在两个处理单元之间作整个流水线处理。而且,这些操作一必使数据通过任一条内部总线,可进一步避免总线争用。
再参照图2,操作期间,指令取出单元156从指令存储器152中检索二进制指令,若查一出,则从外部在存储器中检索。外部存储器有多种形式,如动态与静态随机存取存储器(DRAM与SRAM)及其衍生产品,磙或光硬盘存储器,或某些其它众所周知的数据存贮媒体。在本发明该示例性实施例中,指令为变长指令,指令取出单元(下称取指单元)确定指令长度,并确定在每次处理或时钟周期内要限出多少附加指令。另外,指令存贮在内外存储器内连续的存储位置。下面详述取指单元156的操作和内外存储器内指令数据的存贮情况。
指令译码器158接收由取指单元156检索的指令,并将指令译为控制信号供给一个或多个组成DSP的子系统,子系统包括数据存储器、寄存库、MAC与ALU。另外,指令译码器158可以将接收指令内所含的即时数据经即时总线Im1、Im2、Im3或ImALU送往有关系统。即时数据通常是存贮在指令数据内的数值,而指令数据用于对存贮在数据存储器102-106Ⅱ中的数据作操作,或可以限定或修正某个地址。
由图2中DSP执行的操作包括将数据从数据存储器经数据总线之一载入某一寄存器位置。数据也可从寄存器写入数据存储器。而且,MAC128或ALU130可对寄存器120内一个或多个寄存器里的数据作操作,一般将结果写回到寄存体120内的寄存器。
上述DSP结构有多种优点。例如使用三条数据总线有利于不间断地对数据作流水线处理。在DSP执行的示例性滤波期间,将待滤波的数据(信号数据)存贮在一只数据存储器中,而将应用于该数据存贮在另一数据存储器中。由于操作结果通常要求比操作数更多的位数,因此将信号数据与系数存贮在两只较窄的存储器里较佳。然后将系数与信号数据读入寄存体120,再由MAC单元128相乘累计。这些操作的结果可以存贮在寄存体120内的第二寄存器里,或者导写入先前已存贮了输入数据的寄存体。接着在第三总线(总线C)上将任何结果从该寄存器写入更宽的数据存储器(存储器C)。
由于输出数据经第三总线写入第三存储器,而输入数据级经第一与第二数据总线从第一与第二数据存储器中读出,所以很少或一会出现存储器访问冲突或总线争用。这样,数据可以不中断地处理,减小了以高于内部总线或其它子系统的速率对任何存储器子系统或数据总线的计时要求,从而既保持或提高了处理速度,又降低了功耗。
另外,在若干不同数据值在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与AL0单元130)访问的寄存器,可实现本发明的另一方法。由多个处理单元访问的寄存器,让必须由这些处理单元处理的数据不必移动通过任何内部数据总线而予以访问。例如,数据可由第一处理单元写到某个寄存器,然后再由同样可以访问该寄存器的第二处理单元处理。这样进一步减轻了总线争角与阻塞,因而保持了高的数据吞吐量。
另外,当结合使用并行操作指令和下面要详述的并行处理的能力时,可进一步增强高度流水线、多重操作地处理数据的能力。相反地,典型的流水线操作要涉及交错排列一组操作的不同阶段(即取出、译码、处理),所以缩短了各指令开始之间的处理时间。多重操作流水线法所附加好处在于,数据通过一组不同的操作,这种操作对不同的数据组是同时执行的。这种多重操作流水线法使每个处理周期执行的指令数提高到超过了普通的指令流水线法。
下述示例性处理进一步示出了上述结构的最佳协同作用。在一示例性滤波操作中(也如上所述),随着树其作累计的乘积数据的增大,MAC26产生的结果在大小上也增大(用于代表该值的绝对值与位数两者)。最后,结果必须作标定或“归一化”,通常要求用ALU单元130作逻辑位移操作。
在描述的系统中,标定操作可同滤波的乘法与累计操作同时执行。在同时处理的处理周期内,将不处理的信号数据与滤波系数从数据存储器102与103读入寄存体120内的寄存器(如L0h与L01)。同时,MAC单元128读取先前存贮在这些寄存器(L0h与L01)里的值并作乘法与累计操作,其中将输出写到第二寄存器(如L1)。同时,ALU单元130读取先前存贮在第二寄存器(L1)中的数据,并执行标定操作,将标定值写到第三寄存器(如L2)。而且在同一处理周期内,用总线C112将存贮在第三寄存器(D0)中的先前的值写入数据存储器104。显然,特定的操作可以按执行的特定任务改变。而且很清楚,使用允许作多重操作的高度并行的指令,进一步有利于高度流水线的多指令操作。高度度行的指令允许在每个周期内对不同操作的规程作流水性操作。
应用两相读写操作,如上述例子,这种处理可在单个处理周期内全部完成,其中在第一时钟相内以每个寄存器里读出数据,并用处理单元处理,而在第二时钟相内的老的数据上将结果写入寄存器。应当理解,在单个时钟周期内,同一值不经受该处理的所有步骤,而是一组值通过DSP作流水线操作,每个值随着处理的执行移至下一步骤。
这里描述的本发明的各个方面都有利于许多其它的操作。例如,声音编码就是话音数据的编码处理,它要求执行许多不同类型的操作,有些操作可独立执行,因而可同时执行。应用多余数据总线和多个处理单元,有助于这些操作。
应用独立的指令存储器与指令译码具有进一步的优点。例如,与上述数据处理的同时,取指156从指令存储器152读出指令,接着令指令译码器158产生控制信号,以便控制DSP内各其它子系统的操作(为便于画图和清楚,未画出接线)。同样,数据总线也不携带指令数据,因而可以不中断指令数据而移动处理信号数据。这样,通过将指令处理与数据处理分开,消除指令数据移动所耗用的数据总线周期,进一步提高了性能。
图5是一张表,说明将一组变长指令装在根据本发明一实施例的图2指令存储器152的一部分可寻赴存储空间内。在本发明有些实施例中,也可像图2那样把变长指令存贮在外存系统里以实现附加的存储器效率。举例地址示于左列,指向32位数据安排每个地址示于存储器275的中间和右边诸列。中间列代表各数据字的16位高次子字,最右列代表6位低次子字。在本发明的该较佳实施例中,高低次子字都不能单独寻址,以便减少必需的地址逻辑量。
在存储器275内,变长指令A-L以图示的装填结构存贮。指令A是48位指令,前两上双字节A(1)与A(2)存贮在地址字0×0000,第三双字节A(3)存贮在地址0×0001的高次子字里。指令A后面的指令B是32位指令,第一双字节B(1)存贮在地址0×0001的低次字里,第二双字节B(2)存贮在地址0×0002的高次子字里。指令C是16位指令,其第一和唯一的双字节(C1)存贮在地址0×0002的低次子字里。
从指令A-C的存贮位置可见,本发明将部分不同的指令存贮在同一地址字内,减少了存储器275存贮一组指令所必需的尺寸或量。例如,将指令A的第三双字节A(3)与指令B的第一双字节B(1)一起存贮。
将变第指令跨过字边界或特别在存储器地址空间内的连续位置中存贮起来,本发明减少了指令存储器存贮给定指令数据必需的容量。减少指令存储器的容量就减少了对DSP给以规定指令贮藏容量所必需的芯模的尺寸与成本。如图3所示,将变第指令D-L置于存储器275内,进一步示明了指令的装填状况。
应该理解,在本发明有些实施例中,不必像上述那样把所有指令都装在连续位置中。例如,本发明不同的实施例仅将指令的主要部分(90%或以上)装在存储空间的连续位置中。在本发明另一实施例中,只将指令的主要部分(如25-50%)有利地装在连续的存储空间中。其它实施例可使用其它百分比的装填指令。
而且,不一定要使用连续的位置。指令必须简单地置于比指令数据总量大得不多的总存储空间内。这可以将指令置于存储空间内相邻的位置而较佳地实现,然而,指令会在整个存储空间里搞混,但是只要指令能按原定的执行次序读出就成了。本领域的技术人员将明白,这类预定的混乱作为存储空间的再映射,而且这种再映射一般不影响本发明的操作,否则要加大不希望有的复杂性。
同样地,最好具有能应用于很大一组指令的装填方案。例如,在本发明某些实施例中,最好对至少10条指令应用该装填方案。
另外,用于本发明该示例性实施例的特定装填方案,在其它实施例中不一定使用。例如,本发明的其它一些实施例可能在连续存储位置中没有指令,而指令可用某种小容量的存储空间分开,其中包括使用指令分离码。较佳地,小存储空间小于存储空间在存储字边界上保持指令边界所必需的容量。然而,上述装填法由于其简单、完整和高效,在许多场合中是较佳的方法。总之,在本发明的不同实施例中,在装填完整性与装填方案复杂性之间的折衷选择可以是不同的。
而且如上面暗示的那样,本发明的有些实施例只对部分而不是整组有效指令使用该装填方案。例如,只对用于执行某特定任务或子程序的几组指令执行指令装填。
应该指出,将高度装填的指令存储与变长指令组合起来使用,进一步减少了对DSP的存储器要求,因为变长指令只耗用请求所需操作所需的数据量,而且高度装填的指令存储将总存储量保持等于该组变称指令的耗用时,因而是最小量,减小的存储器尺寸也减少了芯片尺寸与成本。
除了减小DSP尺寸并由此减少成本等好处以外,在结合上述结构的其它特点时,应用高度装填指令与变长指令还具有意料不到的优点。例如,减小指令存储器的尺寸,附加的电路面积可供DSP,还能具备将变长指令存贮在存储空间连续位置内的能力。图6是取指单元156从本发明一实施例的指令存储器152取指时的操作的流程图。过程在步骤200开始,在步骤202,从指令存储器152中读出第一组指令。在本发明的该示例性实施例中,在步骤202检索指令数据的两个32位字,即64位。
在步骤204,指令译码器158处理包含在这64位指令数据中的第一指令。在本发明的该示例性实施例中,该指令可以是16、32或48位长。指令长度由包含在每条指令里指明指令长度的一组首部位确定,下面再作详述。显然还有各种其它规定指令长度的方法,包括用代码区分两条指令,或用超首部指令规定几组后接指令的长度。在某些场合中最好使用首部位,因为指令长度信息通常十分接近该指令,由此降低了存贮或保持有关指令处理的状态信息的要求。
在处理了包含在64位检索指令数据内的第一指令后,在步骤206,确定48位或更多未处理的指令数据是否保持在64位检索指令数据里。若保持着,则在步骤204处理包含在剩余48位未处理数据中的下一个指令。
在步骤206,若不到48位未处理指令数据保持在检索指令数据中,就从指令存储器152装载附加指令数据。各种装载附加指令的方法都可试用。在本发明一实施例中,从指令存储器装载足够多的附加指令数据,使存贮在取指单元里的未处理数据量增至48位。确保48位未处理数据存贮在取指单元内,以确保对指令译码器158至少有一条完整的指令。
在本发明一较佳实施例中,当保持的未处理数据不足48位时,根据已经处理的特定数据量,取指单元检索可变的数据量。特别在处理的数据量等于或超过一个数据字(32位)时,就检索新指令数据的附加数据字(32位)。若先前处理的数据量等于或超过两个数据字(64位),则取指单元就检索两个新的数据字。
根据处理的数据字数检索数据量较佳,因为它对指令译码器158保持着足够量的未处理数据,同时允许对构成指令存储器的存储库作更有效的字长访问。一旦在步骤206检索了附加的未处理指令数据,就在现有的未处理指令数据总量内处理下一个指令。
图7是按本发明一实施例构制的取指单元156与指令存储器152的框图。指令存储器152包括偶数个存储库302(RAM0)和奇数个存储库300(RAM1),每一个都可读写32位数据字。把存储库标为奇偶,因为二者都在同一地址空间内寻址,但是偶地址偶数存储库302,奇地址针对奇数存储体300。
可读写其它字尺寸(包括8、16、24、48、64位字)的存储库可应用于本发明的其它实施例。可以使用其它不同数量的存储库,包括108个存储库。然而,最好使用两个带32位字的存储库,因为能降低整体复杂性,而且允许指令数据以写管理的块来寻址。
控制逻辑304让数据字从存储库300与302读到指令寄存器106与107。特定的存储位置读由地址线310与314规定,而读指令由使能线332、315、316和318控制。指令寄存器306与307的位输出以16位部分加到旋转器308的输入端A、B、C和D,旋转器308则输出48位指令数据324,而数据324包括四选三(3:4)输入端A、B、C和D,每个输入组包含16位,下面再作语详述。
操作期间,控制逻辑304按参照图5描述的方法从指令存储库300与302装载指令数据。特别是,控制逻辑304通过从偶数存储库302和奇数存储库300读32位数据字,第一次将总计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位指令数据并无十分必要,但是这样做是有用的,因为这样可以使用两个32位字的指令存储器与寄存器,在行业中是常见的。使用其它方法保持足量的未处理指令数据,与应用本发明的某些方面相符。
一旦将64位新指令数据装入指令寄存器306和397,控制逻辑304就再配置旋转器308,用控制信号320根据下列条件输出在输入端A、B、C和D上接收的下一个48位的指令数据:1)指令数据在指令地址空间内的位置,2)已处理的该组指令数据,及3)已处理的前一指令的长度。特别是将旋转器308配置成输出一组准备用最高有效或最左边位置中指令数据的下一在线位作下一在线处理的48位指令指数。
例如,一旦将前两个字即64位指令数据装入寄存器306和307,如果偶数指令寄存器307中的指令数据处于下一在线,则旋转器308的输出就包括在输入端A、B和C(ABC)上依次接收的指令数据。如果奇数指令寄存器306中的指令数据处于下一在线,则旋转器308配置成输出在输入端C、D和A(CDA)上依次的指令数据。
由于指令已处理,就像上述那样将新的指令数据装入数据寄存器306和307,为旋转器308根据先前处理的指令的尺寸,配置成在输出端324上不断输出下一在线指令数据。先前处理的指令的尺寸由首部数据322(输出端324上前五位的副本)传送给控制逻辑304。上述已指出,任何对控制逻辑304规定指令长度的预定方法均符合本发明的实践,尽管使用前五位是较佳的,因为这样可直接按指令数据确定指令长度。
在本发明一示例性实施例中,前一指令的尺寸按表1编码成两位状态和I0.
I1 I0 | 指令的尺寸 |
00 | 转移/停止/复位 |
01 | 16-bit |
10 | 32-bit |
11 | 48-bit |
表1.全指令模式
另外,旋转器308的配置由两个构成控制320的选择位S1和S0控制,其编码如表2所列。
S1 S0 | 旋转器输出 |
00 | ABC |
01 | BCD |
10 | CDA |
11 | DAB |
表2.旋转器选择控制位与输出
很明显,随着A1与S0状态的递增,旋转器308的输出就左转或筒状偏移。左转就是每个输入组(A、B、C和D)在输出端上向左移。在输出最左边位置的输入组被取消。先前未在输出端认定的输入组以后在最右边位置上输出。
S1与S0状态和旋转器308的配置被修正或转动的量,根据各种长度的指令而变化。具体而言,将代表正被处理指令长度的值(I1,I0)加到控制位S1和S0,去除任何执行值。即
S1(t+1),S0(t+1)=S1(t),S0(t)+I0,I1 (1)
对于转移或复位状态,S1和S0的值根据要处理转移或复位的特定指令而复位,所以不用公式(1)。在本领域中,处理转移、复位与停止指令的各种方法是众所周知的,而且由于这种处理与本发明无多大关系,下不再作描述。
在一示例性处理中,旋转器308开始时为ABC输出,选择位S1和S0为00。如果接收6位指令,将I1和I0为01的相应指令长度位加到S1和S0,得到为01的S1和S0,对应于旋转器308为BCD的输出324.在处理了前1位指令数据(输入A)后,BCD输出就是下一在线的指令数据组。
如果下一指令是个32位指令,则把指令长度I1和I0(10)加给当前的S1和S0状态01,得到11,得出的输出是DAB,对应于还未处理的下一个48位指令数据,用位于最高有效或最左边位置的输入端D上接收的下一在线指令数据配置。先前来自输入端B和C的指令数据已了处理。应该指出,在先前的32位指令处理期间,按上述的指令数据装载处理法将新数据装入指令寄存器307。
如果接下来处理48位指令,就对选择位S1和S0的状态增加指令长度I1和I0(11),得到S1和S0为10,去除执行,将旋转器308配置成输出CDA。输出CDA对应于下一个待处理的48位指令数据,其下一在线位配置在了高有效位置上。先前在输入端D、A和B上的指令数据已作过处理。再次指出,在前一指令处理期间,已将新的指令数据读入寄存器306。作为举例,已提供了上述执行相关指令数据处理的逻辑,而使用其它逻辑来执行上述的指令数据处理是显然的,与本发明的应用相符合。
这样,在该示例性实施例中,控制逻辑将旋转器308配置成输出从指令寄存器306和307接收的下一个48位指令数据,而把要处理的下一个指令位置于最左边位置。本领域的技术人员将明白,以任何预定的配置将指令提交给指令处理单元158,从而可识别下一组要处理的指令数据,这同样符合本发明的使用。
如上述指出的,除了输出下一个48位未处理的指令数据以外,旋转器308还向控制逻辑304指明下一个要处理的指令的尺寸。具体而言,旋转器308向控制逻辑304输出附加的下一个要处理的5位指令数据的副本。在本发明该较佳实施例中,由该指令的前五位规定该指令的长度。
图8是按本发明一实施例配置的MAC单元128的框图。右移900接收要累计的40位输入,并将该值移动0位或16位,输出加到复用器901的一个输入端。复用器901的另一输入端接收值0×8000。乘法器902接收两个要相乘的16位值,并一起从指令译码器158接收符号位,每个输入总计17位。
乘法器902的输出由左移904接收,左移904按指令译码器158的规定,将输出移动0、1、2或3位。加法器906接收复用器901和左移904的输出,并按指令译码器158的命令对两个输入值作加或减,
并将结果输出给本发明该示例性实施例中的寄存库输入口PI4。
在本发明有些实施例中,在MAC单元128里应用右移16单元900比其它类型的MAC单元具有附加的应用性。更具体地遇,应用右移16单元900便于在减少时钟周期数时作双倍精度操作。例如,为了执行将32位数(A)乘以16位数(B)的双倍精度操作,在第一时钟周期内,先将32位数的低16位(A1)乘以16位数B,得出一个存贮在寄存库120里有中间值I。
在第二时钟周期内,将中间值I输入右移16单元900右移16位。另外,将16位数B与32位数A的高16位(Ah)相乘,将结果与右移16单元900里的各移的中间值I相加。这样,双倍精度乘法是用两个时钟周期而不是三个时钟周期执行的。一般而言,许多双倍精度操作要求一个或多个变量相对于其它变量而移位,这样可像乘法或累计操作之一一样在同一个时钟周期内作移位,减少了双倍精度操作必需的周期数。
通常要求三个时钟周期,因为第一次乘法操作、移位操作和第二次乘法操作通常各要求一个时钟周期。因此,使用移位电路减少了双倍精度乘法所需的时钟周期数。利用右移单元900还有利于涉及不同大小操作数据的其它双倍精度操作。
Ⅱ.指令配置
A.概述
图9是一框图,表示本发明该示例性实施例使用的指令体系。方框402表示变长全指令,包括控制DSP操作的16、32或48位。变长指令又由包括一般指令段的指令段和存储器移动与程序流(MMOF)指令组成,如方框403所示。本发明该示例性实施例中使用的一般指令段包括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.全指令
在本发明该较佳实施例中,用长度为16、32和48位的指令段而形成。全指令被制成可在指令存储器152内连续存贮并由DSP处理。下面描述全指令格式与结构,接着说明指令段的格式与结构。在操作期间,DSP每个时钟周期处理一条全指令。这样,在处理每条全指令期间,可作多次操作,特定的操作由选择的特定组的指令段决定。
用于本发明该示例性实施例的三条全指令的格式如表3所示。
43 0
部首 43指令位
2 0
部首 27指令位
11 0
部首 11 Inst.bits
表3.全指令格式
用于每条全指令的五位首部,指明该一指令的长度和某些有关全指令内容的附加信息。表4提供了用于本发明该示例性实施例的首部的格式。
5-bit 部首 | 指令长度 | ||||
0 | 0 | 0 | 0 | × | 16-bit 指令 (2 types) |
0 | 0 | 0 | 1 | × | 32-bit 指令 (2 types) |
0 | 0 | 1 | × | × | 48-bit 指令 (4 types) |
0 | 1 | × | × | × | 32-bit 指令 (8 types) |
1 | × | × | × | × | 48-bit 指令 (16 types) |
表4.全指令首部格式
每条全指令(16、32和48位长)包含一个或多个指令段。表5列出本发明该示例性实施例中的现有指令段。在讨论了全指令后,再详述指令段的格式与操作。
指令段 | 描述 | 宽度 |
MAC8° | 8-bit MAC工作 | 8 |
ALU8° | 8-bit ALU工作 | 8 |
OneMem11° | One Memory工作 | 11 |
MAC18° | 16-bit MAC工作 | 16 |
ALU16° | 16-bit ALU 工作 | 16 |
DMOV16° | Conditional Reg Move/Inport/Outport | 16 |
TwoMem19 | 两个存储工作 | 19 |
TwoMov19° | 两个存储/数据移动工作 | 19 |
DMOV24 | 装载/直接存储/装载地址/跳跃 | 24 |
ThreeMem27 | 三个存储工作 | 27 |
DL40 | 双装载 | 40 |
表5.指令段
表6-8列出指令段的各种组合,可应用于本发明该示例性实施例中的48、31和16位全指令里。虽然指令段的其它组合符合本发明的使用和操作,但是这里揭示的组合的某些特点较佳,如下面要详述的那样。另外,全部或部分全指令被示为“保留”,在描述的未规定或使用特定的指令组合,但是可以设想出将来使用这些全指令组合。
表6列出16位全指令在按本发明该示例性实施例执行时的格式化。全指令由五位首部后接11个指令位组成。
11 0部首 11 Inst.Bits
0 | 0 | 0 | 0 | 0 | MAC8 | 0 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | ALU8 | 0 | 0 | 1 |
0 | 0 | 0 | 0 | 0 | 保留 | 0 | 1 | 0 |
0 | 0 | 0 | 0 | 0 | 保留 | 0 | 1 | 1 |
0 | 0 | 0 | 0 | 0 | 保留 | 1 | 0 | 0 |
0 | 0 | 0 | 0 | 0 | 保留 | 1 | 0 | 1 |
0 | 0 | 0 | 0 | 0 | 保留 | 1 | 1 | 0 |
0 | 0 | 0 | 0 | 0 | 保留 | 1 | 1 | 1 |
0 | 0 | 0 | 0 | 1 | OneMem11 |
表 6.16位全指令格式
首部位指明该指令的长度及有关指令类型的一些信息。对于首部00000而言,最低有效三个尾位用来进一步规定执行的操作。具体而言,尾位000指明剩余的8位包含一个MAC8指令段。尾位001指明剩余的8位包含一个ALU8指令段。对于其它尾位组合,不规定指令。
对于首部00001,剩余11位包含一个OmeMem11指令段。通过提供允许ALU、MAC或存储器移动待执行操作的16位全指令,可用最短的全指令作最常见的操作。由于最短的指令要求存储器存贮的量最少,所以应用所述的16位全指令减少了执行特定一组操作所需的指令存储器容量。这样,DSP的整体尺寸减小了。也因此减少了成本和功耗。
16位指令通常在只能作一次或少数几次操作的条件下使用。一般而言,可以缩小只限定一次操作所需的指令的尺寸,于是对一次操作就使用半字即16位指令。另外,16位指令可用于MAC、ALD/存储器移动或程序流程操作,这类操作包罗了几乎所有人们想执行的操作。
在按本发明一实施例配置时,表7列出了指令段组合和相关的32位全指令格式化。
27 19 11 O部首 27指令位
0 | 0 | 0 | 1 | 0 | ThreeMem27 | |||||
0 | 0 | 0 | 1 | 1 | ALU8 | TwoMem19 | ||||
0 | 1 | 0 | 0 | 0 | ALU8 | TwoMov19 | ||||
0 | 1 | 0 | O | 1 | MAC8 | TwoMem19 | ||||
0 | 1 | 0 | 1 | 0 | MAC8 | TwoMov19 | ||||
0 | 1 | 0 | 1 | 1 | MAC8 | ALU8 | OneMem11 | |||
0 | 1 | 1 | 0 | 0 | MAC16 | OneMem11 | ||||
0 | 1 | 1 | 0 | 1 | AL | J16 | OneMem11 | |||
0 | 1 | 1 | 1 | 0 | DMOV16 | OneMem11 | ||||
0 | 1 | 1 | 1 | 1 | DMOV24 | 0 | 0 | 0 | ||
0 | 1 | 1 | 1 | 1 | ALU16 | MAC8 | 1 | 0 | 0 | |
0 | 1 | 1 | 1 | 1 | MAC16 | ALU8 | 0 | 1 | 0 | |
0 | 1 | 1 | 1 | 1 | 保留 | 1 | 1 | 0 | ||
0 | 1 | 1 | 1 | 1 | 保留 | 1 |
表7.32位全指令格式
如上所述,五个首部位指出了全指令长度及特定的指令段组合。例如,首部00010表示剩余27个指令位含一个ThreeMem27指令段,而首部00011表示剩余27个指令位含一ALU8指令段后接一TwoMwml9指令段。
对于首部01111,最低尾位还指出指令段的组合。例如,对于最低尾位0,下两个最低位表明剩余24位饮食4、ALU16后接MAC8还是MAC16后接ALU8指令段。其它尾位状态,如最低尾位1,限定着保留的组合。
32位指令可同时执行许多最常见的操作,既有利于流水线操作,也缩小了指令尺寸。例如,像滤波这样的应用,通常要作两次限出操作和一次乘/累计操作。32位指令能以流水线方式作这种成组操作,且不要求填满48位指令空间。
此外,32位指令可同时作MAC与ALU操作以及程序转移与调用操作,也不用最大的指令尺寸。
当按本发明一实施例执行时,表8列出了48位全指令的格式和指令段组合。
43 35 27 19 11 O部首 43指令位
0 | 0 | 1 | 0 | 0 | DMOV24DMOV24DMOV24DMOV24 | MAC8 | OneMem11OneMem11 | ||||||
0 | 0 | 1 | 0 | 1 | ALU8 | ||||||||
0 | 0 | 1 | 1 | 0 | TwoMem19 | ||||||||
0 | 0 | 1 | 1 | 1 | TwoMOv19 | ||||||||
1 | 0 | 0 | 0 | 0 | MAC16 | ThleeMom27ThreeMem27Threemem27 | |||||||
1 | 0 | 0 | 0 | 1 | MAC8 | ALU8 | |||||||
1 | 0 | 0 | 1 | 0 | ALU16ALU16ALU16ALU16 | ||||||||
1 | 0 | 0 | 1 | 1 | MAC8MAC8 | TwoMem19 | |||||||
1 | 0 | 1 | 0 | 0 | TwoMOV19 | ||||||||
1 | 0 | 1 | -0 | 1 | MAC16MAC16 | OneMem11OneMem11OneMem11 | |||||||
1 | 0 | 1 | 1 | 0 | DMOV16DMOV16DMOV16DMOV16DMOV160MOV16OMOV16 | ||||||||
1 | 0 | 1 | 1 | 1 | ALU16 | ||||||||
1 | 1 | 0 | 0 | 0 | ThreeMem27 | ||||||||
1 | 1 | 0 | 0 | 1 | MAC8MAC8 | TwoMem19 | |||||||
1 | 1 | 0 | 1 | 0 | TwoMor19 | ||||||||
1 | 1 | 0 | 1 | 1 | ALU8ALU8ALU8ALU8 | TwoMern19 | |||||||
1 | 1 | 1 | 0 | 0 | TwoMOv19 | ||||||||
1 | 1 | 1 | 0 | 1 | MAC16MAC16MAC16 | TwoMem19 | |||||||
1 | 1 | 1 | 1 | O | TwoMov19 | ||||||||
1 | 1 | 1 | 1 | 1 | DMoV24DMOV24DMoV24OMoV24 | 0 | 0 | 0 | |||||
1 | 1 | 1 | 1 | 1 | MAc8 | ALU8 | 0 | 0 | 1 | ||||
1 | 1 | 1 | 1 | 1 | ALU16 | 0 | 1 | 0 | |||||
1 | 1 | 1 | 1 | 1 | DMOV160MOV16DMOV16 | 0 | 1 | 1 | |||||
1 | 1 | 1 | 1 | 1 | MAC16 | ALU8 | 1 | 0 | 0 | ||||
1 | 1 | 1 | 1 | 1 | ALU16 | MAC8 | 1 | 0 | 1 | ||||
1 | 1 | 1 | 1 | 1 | DL40 | 1 | 1 | O | |||||
1 | 1 | 1 | 1 | 1 | 保留 | 1 | 1 | 1 |
表8.48位全指令格式
五个首部位规定了该指令的长度及具体的指令段组合。例如,首部位00100表明,43个剩余指令位包括DMOV24、MAC8和0neMem11指令段。首部位10011表明,43个剩余位包括ALU16、MAC8和TwoMwm19指令段。
对于首部位11111,三个最低尾位还指出了饮包含于剩余指令位置的指令段。例如,尾位000表示剩余40个指令位包含MAC16和DMOV24指令段。尾位001表示剩余40个指令位包含MAC8、ALU8和DMOV24指令段。尾位110表示剩余400个指令位包含DL40指令段。
48位人指令提供的指令段组合可同时作重操作,故比串行操作快得多。例如,若干48位全指令允许同时作ALU操作、AMC操作和存储器操作。存储器操作包括装载、存贮和数据移动操作,且常常允许一次访问多个存储位置。
48位指令允许乘法操作结合ALU操作和取数据与程序流程操作一起以流水线方式进行。这对滤波操作在结合标定操作时是有用的,因为此时通常要作MAC操作,接着作ALU(如移位)操作。应用MAC与ALU操作的其它应用场合包括组合三种或多种数据流。48位指令,尤其在组合应用三总线结构方面,有利于流水线操作。
这样可有效地将能以单条48位全指令执行的操作种数增加为五种(MAC、ALU、FETCH1、FETCH2和StoRE)。通常,利用DSP的多条内部总成在DSP内耦接各种处理系统,进一步增强了在DSP中同时执行多条指令的能力。利用不同的总线,可以同时移动和访问不同的数据组。
根据能执行的操作种数来改变指令长度,进一步提高了使用指令存储器的效率。任何具体的任务都具有可同时作多重操作的周期,而其它周期只能作少数或只有一次操作。按能同时进行的操作种数调整指令长度,可减少指令存储器容量。
当结合使用紧密指令装填法时,可进一步减少上述示例性方法所需的指令存储器。使用变长指令或紧密装填指令,或使用这两者,通过用更多的电路面积实施特性,有助于应用多总线结构和多重访问寄存库。这样,将本发明这些方面的组合协同地组合起来,可同时提高性能和效率。
C.指令段
如上所述,全指令包括一组以预定方式集群的一个或多个指令段。在本发明该示例性实施例中,这组现有的指令段如表5所列。利用本发明该示例性实施例所提供的全指令而得出的指令段和组合,设计成让该组操作所需的指令存储器容量。下面讨论本发明该示例性实施例所应用的各种指令段的格式与操作状态。
C1.指令段术语
在下对指令段与子段的整个讨论中,表9和10列出了用来参照诸寄存器的缩写。另外,表的左边示出了本发明该示例性实施例使用的具体位码。
Dreg | |
0000 | R0 |
0001 | R1 |
0010 | R2 |
0011 | R3 |
0100 | R4 |
0101 | R5 |
0110 | R6 |
0111 | R7 |
1000 | L0h |
1001 | L1h |
1010 | L2h |
1011 | L3h |
1100 | L0l |
1101 | L1l |
1110 | L2l |
1111 | L3l |
R0-R7 | Lh/Ll | A0-A7 | Lreg/Dreg | |
000 | R0 | L0h | A0 | L0 |
001 | R1 | L1h | A1 | L1 |
010 | R2 | L2h | A2 | L2 |
011 | R3 | L3h | A3 | L3 |
100 | R4 | L0l | A4 | D0 |
101 | R5 | L1l | A5 | D1 |
110 | R6 | L2l | A6 | D2 |
111 | R7 | L3l | A7 | D3 |
AS | AL | |
0 | AS0 | AL0 |
1 | AS1 | AL1 |
R0-R3 | L0-L3 | D0-D3 | C0-C3 | Cmod | |
0.0 | R0 | L0 | D0 | C0 | ++ |
01 | R1 | L1 | D1 | C1 | -- |
10 | R2 | L2 | D2 | C2 | ++CM0 |
11 | R3 | L3 | D3 | C3 | ++CM1 |
cond | ||||||||||
00000 | LT | 01000 | L0LT | 10000 | L1LT | 11000 | L2LT | |||
00001 | LE | 01001 | L0LE | 10001 | L1LE | 11001 | L2LE |
00010 | EQ | 01010 | LOEQ | 10010 | L1EQ | 11010 | L2EQ | |||
00011 | NE | 01011 | L0NE | 10011 | L1NE | 11011 | L2NE | |||
00100 | GE | 01100 | L0GE | 10100 | L1GE | 11100 | L2GE | |||
00101 | GT | 01101 | L0GT | 1010l | L1GT | 11101 | L2GT | |||
00110 | OV | 01110 | L0OV | 10110 | L1OV | 11110 | L2OV | |||
00111 | Uncond | 01111 | Rsvd | 10111 | Rsvd | 11111 | Rsvd |
表9.指令段术语与代码
RegA | regB | |
00000 | R0 | R0 |
00001 | R1 | R1 |
00010 | R2 | R2 |
00011 | R3 | R3 |
00100 | R4 | R4 |
00101 | R5 | R5 |
00110 | R6 | R6 |
00111 | R7 | R7 |
01000 | L0h | L0h |
01001 | L1h | L1h |
01010 | L2h | L2h |
01011 | L3h | L3h |
01100 | L01 | L01 |
01101 | L11 | L11 |
01110 | L21 | L21 |
01111 | L31 | L31 |
10000 | A0 | B0 |
10001 | A1 | B1 |
10010 | A2 | B2 |
10011 | A3 | B3 |
10100 | A4 | B4 |
10101 | A5 | B5 |
10110 | A6 | B6 |
10111 | A7 | B7 |
11000 | AS0 | BS0 |
11001 | AS1 | BS1 |
11010 | AL0 | BL0 |
11011 | AL1 | BL1 |
11100 | AM0 | BM0 |
11101 | AM1 | BM1 |
11110 | 保留 | 保留 |
11111 | 保留 | 保留 |
regC | |
0000 | L0 |
000l | L1 |
0010 | L2 |
0011 | L3 |
0100 | D0 |
0101 | 01 |
0110 | 02 |
0111 | D3 |
1000 | C0 |
100l | C1 |
1010 | C2 |
1011 | C3 |
11OO | CMO |
1101 | CM1 |
1110 | 保留 |
1 11 1 | 保留 |
表10.指令段术语和代码
C2.指令段说明
指令段组包括两类MAC指令段:MAC8与MAC16.MAC8指令段支持带符号一不带符号和带符号一带符号的乘法类型,结果存在累计器L0或L1中。MAC8指令段允许用16位全指令作MAC操作而节省了指令RAM,而且对于许多并行指令组合,要求MAC操作编码为32位指令而不是48位指令。一般而言,MAC8指令执行的处理符合下述公式:
如公式(2)所示,MAC8指令段让寄存器L0或L1的内容与寄存器R0、R2、R4与R6的乘积相加,并将R0、R1、R3和R5直接设置到寄存器的乘积里。另外,还可规定带符号或不带符号的乘法。通过限制可用MAC8指令作MAC操作的寄存器数量,能将指令长度保持为8位,允许用更短的8位指令段作MAC操作。
MAC8指令执行的特定操作由构成表11所列指令的8位值限定。
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
MAC 工作 | mac8Op1 | mac8Op2 | SU/SS |
表11. MAC8指令段格式
SU/SS规定带符号或不带符号的乘法。表12列出的代码应用于规定MAC8指令段内的各种操作。
MAC 工作 | |
000 | L0= |
001 | L1= |
010 | L0=L0+ |
011 | L1=L1+ |
100 | L0=L0- |
101 | L1=L1- |
110 | L0=L1+ |
111 | L0=L1- |
mac8Op1 | |
00 | R0 |
01 | R2 |
10 | R4 |
11 | R6 |
mac8Op2 | |
00 | R0 |
01 | R1 |
10 | R3 |
11 | R5 |
SU/SS | |
0 | SU |
1 | SS |
表12. MAC8指令段代码
这样,MAC8指令0x99将寄存器L0的内容与寄存器R0和R3不带符号的乘积之和放入寄存器L0。
例如,虽然在乘法-累计指令中不是所有组合都可离开累计器,但是每个累计器(L0-L3)都可用作目的地。CPS区段发出信号表示协同处理器应该执行并行的特定操作。该特定操作由MAC16指令执行,由构成表13中指令的16位值规定。
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
MAC工作 | macOp1 | macOp2 | mtype | mshift | CPS |
表13.MCA16指令段格式表14列出的代码用于规定MAC16指令段内的各种操作。
MAC工作 | macOp2 | |
0000 | L0= | R0 |
0001 | L1= | R1 |
0010 | L0=L0[>>16]+ | R2 |
0011 | L1=L1[>>16]+ | R3 |
0100 | L0=LO[>>16]- | R4 |
0101 | L1=L1[>>16]- | R5 |
0110 | L0=L1[>>16]+ | R8 |
0111 | L0=L1[>>16]- | R7 |
1000 | L2= | L0h |
1001 | L3= | L1h |
1010 | L2=L2[>>16]+ | L2h |
1011 | L3=L3[>>16]+ | L3h |
1100 | L2=L2[>>16]- | L01 |
1101 | L3=L3[>>16]- | L11 |
1110 | L2=L3[>>16]+ | L21 |
1111 | L2=L3[>>16]- | L31 |
macOp1 | |
000 | R0 |
001 | R2 |
010 | R4 |
011 | R6 |
100 | L0h |
101 | L1h |
110 | L2h |
111 | L3h |
mtype | |
00 | (SU) |
01 | (UU) |
10 | (SS) |
11 | See now |
mshift | |
00 | <<0 |
01 | <<1 |
10 | <<2 |
11 | <<3 |
CPS | |
0 | OFF |
1 | ON |
表14.MAC16指令段代码
注:将指令L0=R0xR0(SU)<<0译成NOP。
Mtype11用作直接相乘的RND,对于
带符号一带符号乘法/累计指令,将
累计器右秒16。
带mtypeSU与macOpl=macOp2的MAC指令均性非法。
MAC16指令段可左移达到3,在单单相乘(无累计)时能作舍入运算,舍入在移位后出现。在累计时,要加的累计器与带符号一带符号相乘同时下移16.CPS位是协同处理器选通位,表示应将MAC操作中使用的数据送给协同处理器。
应当指出,MAC8指令段执行的操作子小组呆用MAC16执行。对MAC8指令段选择的特定组指令,是可用MAC16指令段执行的该组操作以外最经常执行的指令组。通过用MAC8指令段执行大多数MAC操作,就节省了程序存储器。
8位ALU8指令段包括的ALU操作,是最经常与MAC操作(MAC8与MAC16)并行执行的操作,它不含中间数据。所有的ALU8移位操作都是算术移位,利用一只内部移位寄存器(SR)节省指令编码位。表15列出用ALU8指令段执行的操作。
NOP; | NOP(需要平行组合) |
LD=DETNORM(LS); | 决定块归一化因数 |
LD=SET(LS); | 拷贝累加器(不饱和) |
LD=LS<<SR; | 移位累加器 |
LD=RND(LS<<SR); | 移位和巡回累加器 |
LD=LD±(LS<<SR); | 累加移位累加器 |
LD=LS±LT; | 加减累加器 |
LS±LT; | 加/减ACCS结果自由(设置标志) |
表15.ALU8指令段操作
LS是装载源(L0-L3),L0是装载目的地(L0-L3)。ALU8指令段执行的特定操作,由组成表16中指令段的8位值规定。
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
0 | ALUOp | LS | LD | ||||
0 | 1 | 1 | Sign | LS | LT | ||
1 | LD | Sign | LS | LT |
表16.ALU指令段格式表17列出的特定代码用于限定利用ALU8指令段执行的操作。
ALUOp | |
0 0 0 | LD=DETNORM(LS) |
0 0 1 | LD=SET(LS) |
0 1 0 | LD=LS<<SR |
0 1 1 | LD=RND(LS<<SR)) |
1 0 0 | LD=LD+(LS<<SR) |
1 0 1 | LD=LD-(LS<<SR) |
1 1 0 | LS+LT |
1 1 1 | LS-LT |
LD/LS/LT | |
0 0 | L0 |
0 1 | L1 |
1 0 | L2 |
1 1 | L3 |
Sign | |
0 | [LD=]LS+LT |
1 | [LD=] LS-LT |
表17.ALU指令段代码
注:全零指令L0=DETNORM(L0)译码为NOP。
其中LD=DETNORM(LD)的指令为非法。
ALU8清除累计器指令为LD:LD=LD。
ALU16指令段可作算术与逻辑两种移位,表18列出了ALU16指令执行的具体操作。
<<表示算术移位,<<<表示逻辑移位。
表18.ALU16指令段操作
指令L0=SET(L0)译码为NOP。
表19.16位ALU指令段格式与代码ALU16指令段执行的具体操作,由组成表20的指令段的位值规定。
Dregh | |
000 | R0 |
001 | R1 |
010 | R2 |
011 | R3 |
100 | L0h |
101 | L1h |
110 | L2h |
111 | L3h |
Sop1 | |
0 | LD=LS<<R0-R3 |
1 | LD=RND(LS<<R0-R3) |
Cop1 | |
0 | LD=LS+LT |
1 | LD=LS-LT |
BitOp | |
0 0 | AND |
0 1 | OR |
1 0 | XOR |
Sop2 | |
0 | LD=LS<<imm6 |
1 | LD=RND(LS<<imm6) |
Cop2 | |
0 | LD=SET(LS) |
1 | 保留 |
AL | |
0 | 算术移位 |
1 | 逻辑移位 |
+/- | |
0 | + |
1 | - |
AccOp | |
0 0 | LD=NORM(LS,SR) |
0 1 | LD=ABS(LS) |
1 0 | LD=-LS |
1 1 | LD=-LS |
Inv | |
0 | 正常位屏蔽 |
1 | 反相位屏蔽 |
表20.ALU16指令段代码
注:全零指令L0=SET(L0);译码为NOP。
对BIT指令(h,i,j),通过附加带即时5的零符号位,汇编程序对即时6编码(可简化译码)。
表21.DMOV16指令段操作
表22.DMOV16指令段格式
注:指令L0=0译码为NOP。
即时10带符号,即时9与11不带符号。
指令OUTPORTA(port-addr)读A总线上的值,并将它输出到指定端口。通过从存储器A同时读一值,该指令可将值直接从存储器A送到该端口。OUTPORTB(port-addr)的工作与此相同。
DMOV24指令段是个24位指令段,执行不同的装载/存贮寄存器直接或装载寄存器即时操作,如表23所示。
表23.DMOV24指令段操作
起动寄存器位于AGU单元里。
表24列出的格式和某些代码,可用本发明该示例性实施例中的DMOV24指令段执行各种现有的操作。
表24.DMOV24指令段格式与代码
注:地址14与17不带符号,即时16带符号。
应该指出,对于DMOV24和其它指令段,有些操作可编码两次。例如,行(i)与(j)里规定的格式对同一操作编码,一个格式规定使用即时总线Im1,另一格式规定使用即时总线Im2。编码两次可让该指令段与众多其它也能要求使用即时总1或2的指令段组合起来。
表25.DL40指令段格式
表26列出了DL40指令段对每次操作的格式。
表26.DL40指令段格式与代码
注:地址14不带符号,即时16与32带符号。
同样如表5所示,在本发明该示例性实施例中提供了四类存储器移动和程序流指令段,它们列于表27。
表27.存储器移动和程序流指令段
OneMem | 11 |
TwoMen | 19 |
TwoMev | 19 |
ThreeMem | 27 |
每个存储器移动和程序流指令(MMPF)段由表28列出的一组MMPF子段组成。
表28.组合数据移动和程序流指令子段
指令子段 | ||
LD(A) | 装存储器A间接 | 8 |
ST(A) | 装存储器A间接 | 8 |
LD(B) | 装存储器B间接 | 8 |
ST(B) | 装存储器B间接 | 8 |
LS(C)* | 装/存贮存储器C间接 | 8 |
DMOVA* | 总线A寄存器移动 | 8 |
DMOVB* | 总线B寄存器移动 | 8 |
PF8 | 8位程序流 | 8 |
首先讨论MMPF指令段的格式与操作,然后详细讨论MMPF子段的格式与操作。
OneMem11MMPF指令段用来执行单个存储器装载与存贮操作、数据移动操作和程序流操作。在这里提供的示例性实施例中,用OneMem11MMPF指令段执行八种不同的操作,由11位段中前三位表示的特定操作如表29所示,该表列出了可用OneMem11数据移动指令段执行的操作。
10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
0 | 0 | 0 | LD(A) | |||||||
0 | 0 | 1 | ST(A) | |||||||
0 | 1 | 0 | LD(B) | |||||||
0 | 1 | 1 | ST(B) | |||||||
1 | 0 | 0 | LS(C) | |||||||
1 | 0 | 1 | DMOVA | |||||||
1 | 1 | 0 | DMOVB | |||||||
1 | 1 | 1 | PF8 |
表29.OneMem11指令段格式
TwoMwm19MMPF指令段是一种19位指令段,可执行表30列出的存储器装载与存贮操作的八种不同的组合。
18 | 17 | 16 | 15-8 | 7-0 |
0 | 0 | 0 | LD(A) | LD(B) |
0 | 0 | 1 | LD(A) | ST(B) |
0 | 1 | 0 | LD(A) | LS(C) |
0 | 1 | 1 | ST(A) | LD(B) |
1 | 0 | 0 | ST(A) | ST(B) |
1 | 0 | 1 | ST(A) | LS(C) |
1 | 1 | 0 | LS(C) | LD(B) |
1 | 1 | 1 | LS(C) | ST(S) |
表30.TwoMem19指令段格式
TwoMoV19MMPF指令段是一种19位指令段,能与数据移动操作一起作八种不同组合的存储器装载与存贮操作,如表31所示。
18 | 17 | 16 | 15-8 | 7-0 |
0 | 0 | 0 | LD(A) | DMOVB |
0 | 0 | 1 | ST(A) | DMOVB |
0 | 1 | 0 | DMOVA | LD(B) |
0 | 1 | 1 | DMOVA | ST(B) |
1 | 0 | 0 | DMOVA | LS(C) |
1 | 0 | 1 | LS(C) | DMOVB |
1 | 1 | 0 | DMOVA | DMOVB |
1 | 1 | 1 | 保留 |
表31.TwoMov19指令段格式
ThreeMeM27MMPF指令段是一种27位指令段,能执行表32所示的八种不同组合的存储器装载、存储器存贮和数据操作。
26 | 25 | 24 | 23-16 | 15-8 | 7-0 |
0 | 0 | 0 | LS(C) | LD(A) | LD(B) |
0 | 0 | 0 | LS(C) | LD(A) | LD(B) |
0 | 1 | 0 | LS(C) | LD(A) | ST(B) |
0 | 1 | 1 | LS(C) | ST(A) | LD(B) |
1 | 0 | 0 | LS(C) | DMOVA | ST(B) |
1 | 0 | 1 | LS(C) | DMOVA | LD(B) |
1 | 1 | 0 | LS(C) | LD(A) | DMOVB |
1 | 1 | 1 | LS(C) | LD(A) | DMOVB |
表32.ThTeeMem 27指令段格式公式(4)给出由LD(A)指令子段执行的操作。表33列出本发明该示例性实施例提供的LD(A)指令子段。
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
dreg | A0-A3 | Amod |
表33.LD(A)指令子段格式公式(5)是LD(B)指令子段执行的操作。表34列出本发明该示例性实施例提供的LD(B)指令子段。
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
dreg | B0-B3 | Bmod |
表34.LD(B)指令子段格式公式(6)是ST(A)指令子段执行的操作。表35列出本发明该示例性实施例提供的ST(A)指令子段。
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
dreg | A0-A3 | Amod |
表37.DMOVA指令子段操作表38是本发明该示例性实施例提供的DMOVA指令子段格式。
表38.DMOVA指令子段格式
这样,提供可包含一个或多个指令子段的MMPF指令段,进一步增加了可用全指令执行的操作种数。例如,全指令可让算术与MAC操作同一组三种存储器移动与程序流操作一起执行。用单条指令执行这么许多操作的能力,进一步减少了作某种给定操作所需的指令总数,从而减少了对DSP要求的整个指令存储器。减少指令存储器可减小芯模尺寸,从而减少了DSP的成本与功耗,这对于范围广泛的包括移动无线电话的应用而言,使DSP更为合适。
这样已经描述了应用并行变长指令组控制DSP的系统与方法。以上描述的诸较佳实施例,能让本领域的任何技术人员使用本发明。对他们而言,完全明白这些实施例的种种改型,而且不须运用发明能力就可将这里定义的基本原理应用于其它实施例。例如,虽然描述的系统与方法同DSP相关,但其各个方面都适用于一般的计算系统与装置。
通过参照诸较佳实施例面对本发明所作的描述,可以充分理解到,有关实施例仅用作示例,对于具备相关知识与技能的人们,各种改型与变化并不背离由所附的权项及其等效的规定的发明精神与范围。
Claims (84)
1.一种数字信号处理器,用于按变长指令作数字信号处理,所述变长指令含有数量可变的指令段,所述数字信号处理器包括:
取指单元,用于对至少一个最长的完整指令取出足够的指令数据,所述指令数据包含所述变长指令:
指令译码器,用于对所述指令译码并产生控制信号;
寄存库,用于存贮要处理的数据;
第一存储库,用于存贮第一数据;
第二存储库,用于存贮第二数据;
第三存储库,用于存贮第三数据;
第一数据总线,用于将所述第一数据读入所述寄存库中的第一寄存器;
第二数据总线,用于将所述第二数据读入所述寄存库中的第二寄存器;及
第一处理单元,用于处理所述第一与第二寄存器中要处理的数据,并将结果写到所述寄存库中的第三寄存器;
第三数据总线,用于将所述结果从所述第三寄存器写到所述第三存储器。
2.如权项1所述的数字信号处理器还包括:
第二处理单元,用于产生通过处理所述结果而进一步处理的结果,并将所述结果存入所述寄存库中的第四寄存器,其中所述第三数据总线进一步将所述进一步处理的结果从所述第四寄存器写到所述第三存储器。
3.如权项1所述的数字信号处理器,其中所述第三数据总线比所述第一与第二数据总线更宽。
4.如权项2所述的数字信号处理器,其中所述寄存库中的第一组寄存器可以写到所述第一与第二处理单元,而所述寄存库中的第二组寄存器可以写到该组的所述第一或第二处理单元之一。
5.如权项2所述的数字信号处理器,其中所述寄存库中的第一组寄存器可从所述第一与第二处理单元中读出,而所述寄存库中的第二组寄存器可从该组所述第一或第二处理单元之一中读出。
6.一种数字信号处理器,地按指令数据处理数字信号,这里的所述数字信号包括一组:
第一数据总线,用于在第一存储器与寄存库之间读写数据;
第二数据总线,用于在第二存储器与所述寄存库之间读写数据;
第三数据总线,用于在第三存储器与所述寄存库之间读写数据,其中
所述第一、第二和第三数据总线同时操作。
7.如权项6所述的数字信号处理器,还包括一个处理存贮在所述寄存库里的数据的处理单元。
8.如权项6所述的数字信号处理器还包括:
取指单元,用于取出变长指令,所述指令请求一组操作;
指令译码器,用于对所述变长指令译码,并执行所述组的操作。
9.如权项6所述的数字信号处理器还包括:
第二处理单元,用于与所述第一处理单元同时处理所述寄存库中的数据。
10.一种数据处理方法,包括以下步骤:
经第一数据总线接收第一数据值;
第二数据总线接收第二数据值;及
用所述第一与第二数据值产生结果;及
将所述经第三数据总线写到存储器。
11.如权项10所述的方法,其中所述第三数据总线比所述第一数据总线宽。
12.如权项10所述的方法,其中所述第三总线比所述第一总线宽。
13.如权项10所述的方法进一步包括步骤:
将所述第一数据值存入第一寄存器;
将所述第二数据值存入第二寄存器;及
将所述结果存入第三寄存器。
14.如权项13所述的方法还包括步骤:
用第一处理单元产生所述结果;
用耦合至所述第三寄存器的第二处理从所述第一结果产生第二结果。
15.一种处理数字信号的数字信号处理器包括:
处理单元,用于根据第一与第二输入数据产生结果数据;
第一数据总线,用于将所述第一输入数据发送给所述处理单元;
第二数据总线,用于将第二输入数据发送给所述处理单元;及
第三数据总线,用于发送所述结果数据。
16.如权项15所述的数字信号处理器还包括:
耦合至所述第一总线的第一存储系统,用于读所述第一输入数据;
耦合至所述第二总线的第二存储系统,用于读所述第二存储系统;及
耦合至所述第三总线的第三存储系统,用于写所述结果数据。
17.如权项15所述的数字信号处理器,其中所述第一总线比所述第三总线窄。
18.如权项15所述的数字信号处理器,其中所述第一总线与第二总线比所述第三总线窄。
19.如权项15所述的数字信号处理器还包括:
耦合至所述第一、第二、第三总和所述处理单元的第一寄存器,用于存贮所述第一与第二数据;
第二寄存器,用于存贮所述结果数据;及
耦合至所述第二寄存器的第二处理单元,用于处理所述结果数据。
20.如权项19所述的数字信号处理器还包括一控制系统,用于控制所述第一、第二和第三数据总线。
21.如权项19所述的数字信号处理器,其中所述第一处理单元是一乘法-累计单元,所述第二处理单元是一算逻单元。
22.一种数字信号处理器,包括:
一组数据总线,具有至少三条数据总线;及
多个处理单元,用于从所述数据总线组中的每条数据总线接收数据。
23.如权项22所述的数字信号处理器,其中所述多个处理单元中的第一处理单元是一乘法-累计单元,所述多个处理单元中的第二处理单元是算逻单元。
24.如权项22所述的数字信号处理器还包括:
存储单元,用于存贮数据;
寄存库,用于存贮数据,有一组寄存器,
其中所述数据总线组用于读取对应于寄存器的相应数据组。
25.如权项22所述的数字信号处理器还包括:
存储单元,用于存贮数据;
寄存库,用于存贮数据,有一组寄存器,
其中所述数据总线组用于写对应于寄存器的相应数据组。
26.一种用变长指令操作数字信号处理器的方法,所述变长指令有一组指令段,每一指令段请求某种操作,所述方法包括步骤:
a)在第一时钟周期的第一时钟相内,从第一寄存器将先前处理的数据读入第一处理单元;
b)根据指令段组的第一指令段处理所述先前处理的数据,并在所述第一时钟周期内得到二次处理的数据;
c)根据所述指令段组的第二指令段处理的数据,并在所述第一时钟周期内产生新处理的数据;
d)在所述第一时钟周期的第二相内,将所述新处理的数据写入所述第一寄存器;及
e)在所述第一时钟周期的所述第二相内,将所述二次处理的数据写入第二寄存器。
27.如权项26所述的方法,其中步骤b)由第一处理单元执行,步骤c)由第二处理单元执行。
28.如权项26所述的方法还包括步骤:
读包含所述变长指令的指令数据;
确定下一个指令长度;
译码所述指令数据中等于所述下一个指令长度的数据量。
29.一种微处理器,包括:
第一处理单元;
第二处理单元;及
可读地耦合至所述第一与第二处理单元的寄存器。
30.如权项29所述的微处理器还包括:
耦合至所述寄存器的数据总线;及
耦合至所述数据总线的数据存储器。
31.如权项29所述的微处理器还包括:
第二寄存器,它耦合至所述第一处理单元,但不耦合至所述第二处理单元;
第三寄存器,它耦合至所述第二处理单元,但不耦合至所述第一处理单元。
32.如权项29所述的微处理器,其中所述寄存器工作于一个两相时钟周期,所述寄存器在所述两相时钟周期的第一相内读出,而在所述两相时钟周期的第二相内写入。
33.如权项29所述的微处理器还包括:
复用器,用于以第一配置将所述第一处理单元耦合至所述寄存器,并以第二配置将所述第二处理单元耦合至所述寄存器。
34.如权项33所述的微处理器还包括:
控制系统,用于根据指令数据配置所述复用器。
35.如权项29的微处理器,其中所述第一处理单元是一乘法累计器。
36.如权项35的微处理器,其中所述第二处理单元是一算逻单元。
37.如权项29的微处理器还包括:
第一数据存储器;
第二数据存储器;
耦合至所述第一存储器与所述寄存器的第一总线;及
耦合至所述第二数据存储器与所述寄存器的第二总线。
38.如权项29所述的微处理器,其中所述寄存器经所述寄存器的输出端耦合至所述第一与第二处理单元,所述第一处理单元的输出端耦合至所述寄存器的输入端。
39.一种操作微处理器的方法包括步骤:
在第一时钟周期的第一时钟相内,将处理的数据从寄存器读入第一处理单元;
在所述第一时钟周期内用所述第一处理单元所述处理的数据,得出再处理的数据;
在所述第一时钟周期内在第二处理单元中处理另一数据,产生新处理的数据;及
在所述第一时钟周期的第二相内,将所述新处理的数据写入所述寄存器。
40.如权项29所述的方法还包括步骤:
在所述第一时钟周期的所述第二相内,将所述再处理的数据写入第二寄存器。
41.一种数字信号处理器,包括:
第一处理单元,用于处理数据;
第二处理单元,用于处理数据;
第一组寄存器,可将数据写到所述第一与第二处理单元;及
第二组寄存器,可将数据写到所述第一处理单元,但不写到所述第二处理单元。
42.如权项41所述的数字信号处理器,其中所述第一处理单元是一乘法-累计单元,所述第二处理单元是一算逻单元。
43.一种用存贮在存储器中的指令控制数字信号处理器的方法,所述存储器具有地址空间,所述方法包括步骤:
从存储器写出第一数据字,其中包含第一指令的第一部分;及
从存储器写出第二数据,其中含有所述第一指令的第二部分和第二指令的第一部分。
44.如权项43的方法,其中所述第一指令由多个指令段组成,各指定段执行特定操作。
45.如权项43的方法,其中所述第一与第二指令的长度不同。
46.如权项43的方法,其中所述第一与第二指令由几组指令段组成,各指令段执行特定操作。
47.如权项46的方法,其中所述指令段包括第一与第二指令段,所述第一指令段请求的一组操作,是所述第二指令段执行的一组操作的子组。
48.如权项47的方法,其中所述第一指令段比所述第二指令段更短。
49.一种控制数字信号处理器的系统,包括:
一存储器,其地址空间能以地址字寻址,所述地址字具有前沿字边界,
一组存贮在所述存储器中的变长指令,所述变长指令各具有前沿指令边界,其中
所述前沿指令边界的第一部分对应于所述前沿字边界,而所述前沿指令边界的第二部分不同于所述前沿字边界。
50.如权项49的系统,其中所述变长指令包括数量可变的指令段。
51.如权项49的系统,其中所述长指令包含首部,表示各变长指令有多长。
52.如权项49的系统,其中所述存储器位于所述数字信号处理器的指令存储器内。
53.一种控制数字信号处理器的系统,包括:
一存储器,其地址空间能以地址字寻址,所述地址字具有后沿字边界,
一组存贮在所述存储器中的变长指令,所述变长指令各具有后沿指令边界,其中,
所述后沿指令边界的第一部分相对于所述后沿字边界,而所述后沿指令边界的第二部分不同于所述后沿字边界。
54.如权项53的系统,其中所述变长指令包含数量可变的指令段。
55.如权项53的系统,其中所述变长指令包含的首部表示各变长指令有多长。
56.如权项53的系统,其中所述存储器位于所述数字信号处理器的指令存储器内。
57.一种控制微处理器的系统,包括步骤:
存贮指令数据的存储器,所述存储器具有地址空间;
多个请求操作的变长指令,所述多个指令的大部分置于所述地址空间基本上连续的位置。
58.如权项57的系统,其中10条以上指令置于所述存储器内基本上连续的位置。
59.如权项57的系统,其中90%以上所述指令置于所述存储空间内基本上连续的位置。
60.如权项57的系统,其中25%以上所述指令置于所述存储空间内基本上连续的位置。
61.如权项57的系统,其中所述变长指令根据变长指令中有多少指令数据而变化。
62.一种控制集成电路的方法,包括步骤:
a)产生一组对应于一组要执行的操作的指令段;
b)将能够同时执行的所述指令段编成指令段组;
c)对每个指令段组加一首部,表明要得到变长全指令该变长指令有多长;
d)将所述变长全指令在地址空间中的连续地址写到所述集成电路,其中所述地址空间具有字边界。
63.如权项62的方法,其中所述变长指令由16位、32位和48位指令组成。
64.如权项62的方法,其中每个首部位于所述变长室长指令内最高位置上,且包括五位。
65.如权项62的方法,其中所述指令段的子组可以包含一个、两个或三个指令段。
66.一种控制数字信号处理器的方法,包括步骤:
a)当并行执行数量减少的操作时,产生短指令;及
b)当并行执行数量较大的操作时,产生长指令。
67.如权项66的方法,其中将所述短指令与长指令存贮在存储器中具有地址字边界的连续位置内。
68.如权项66的方法,其中步骤(a)包括步骤:
识别无法与任何其它操作同时执行的操作;
用指令段和首部构成所述短指令,首部表示该短指令有多长。
69.如权项66的方法,其中步骤(b)包括步骤:
识别一组无法同时执行的操作;
用一组执行所述操作组的指令段和表示该长指令有多长的首部构成所述长指令。
70.如权项68的方法,其中所述首部为5位。
71.如权项69的方法,其中所述首部为5位。
72.一种处理包含数量可变的指令段的变长指令的方法,包括:
(a)读第一组指令数据,它大得足以包含可能是最长的变长指令;
(b)处理存贮在所述第一组指令数据内的第一变长指令;
(c)当不处理的指令数据量小于所述可能的最大长度时,装载附加指令数据。
73.如权项72的方法,其中步骤(a)包括步骤:
读第一数据字;和
读第二数据字。
74.如权项73的方法,其中步骤(c)包括步骤:
当不处理的指令数据量在所述可能的最大长度的一个指令字以内时,读一个指令字;及
当不处理的指令数据量大于一个小于所述可能最大长度的指令字时,读两个指令字。
75.一存储器,包括:
在存储器内以基本上连续的存储空间隔开的多个变长指令,在多个指令中,各指令具有:
表示该指令长度的首部;及
规定要执行的操作的主体。
76.一种在数字信号处理器中处理指令数据的控制系统,包括:
具有第一与第二存储库的指令存储器,所述第一与第二存储库能以字寻址,所述指令存储器存贮不处理的指令数据,所述指令数据具有最大指令长度;
从所述指令存储器读的指令寄存器;及
控制系统,当所述指令寄存器中不处理的指令数据量在所述最大指令长诉的一个字以内时,将指令数据一个字从所述指令存储器装入所述指令寄存器,而当所述最大指令长度与所述指令寄存器中所述不处理的数据之间不多于一个字时,则将指令数据的两个字从所述指令存储器装入所述指令寄存器。
77.如权项76的控制系统还包括:
以一组放置的配置之一输出存贮在所述指令寄存器中的数据的旋转器,其中
所述控制系统还利用所述旋转器使不处理的数据在所述指令寄存器中不处于最高位置。
78.如权项76的控制系统,其中所述变长指令的长度小于或等于所述字。
79.如权项76的控制系统,其中所述变长指令具有前沿和后沿指令边界,并将所述变长指令存贮在所述指令存储器里,指令存储器在有在存储器地址空间中和字边界之间具有两个相互连续指令的前沿与后沿边界。
80.如权项76的控制系统,其中所述烃长指令包含数量可变的指令段,各指令段执行一特定操作。
81.一种数字信号处理器,包括:
寄存库,用于存贮数据;
乘法累计单元,用于对所述数据作乘法累计操作;
耦合至所述乘法累计单元的一输入端的移位单元,用于以第一配置移位输入数据,并以第二配置使所述输入数据通过。
82.如权项81的数字信号处理器,其中所述移位单元移位所述输入数据,而所述乘法累计在单个处理周期内作所述乘法累计操作。
83.一种对32位数A作双倍粒度乘法操作的系统,具有低16位A1与高16位Ah,而16位数B包括:
a)在第一时钟周期内以A1乘B,得第一中间值I1;
b)将所述中间值I右移16位,得移位的中间值SI1;
c)将B乘Ah,得第二中间值I2;
d)将I2加上所述移位的中间值SI1,其中步骤b)-d)在第二时钟周期内执行。
84.一种数字信号处理器,其中存储器可经选择的第二组可选总线与第一组处理装置连接,从而优化了存储器与处理装置之间变长数据的传递。
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 Child Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006100595436A Division CN1862485B (zh) | 1998-03-18 | 1999-03-04 | 数字信号处理器 |
CNB2006100595440A Division CN100517217C (zh) | 1998-03-18 | 1999-03-04 | 数字信号处理器及其操作方法 |
CNA031530303A Division CN1523491A (zh) | 1998-03-18 | 1999-03-04 | 数字信号处理器 |
CNB2006100595421A Division CN100517216C (zh) | 1998-03-18 | 1999-03-04 | 数字信号处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1301363A true CN1301363A (zh) | 2001-06-27 |
CN1279435C CN1279435C (zh) | 2006-10-11 |
Family
ID=27556460
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB998063665A Expired - Lifetime CN1279435C (zh) | 1998-03-18 | 1999-03-04 | 数字信号处理器 |
CNA031530303A Pending CN1523491A (zh) | 1998-03-18 | 1999-03-04 | 数字信号处理器 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA031530303A Pending CN1523491A (zh) | 1998-03-18 | 1999-03-04 | 数字信号处理器 |
Country Status (12)
Country | Link |
---|---|
EP (2) | EP1457876B1 (zh) |
JP (4) | JP2002507789A (zh) |
KR (3) | KR100835148B1 (zh) |
CN (2) | CN1279435C (zh) |
AR (5) | AR026080A2 (zh) |
AT (1) | ATE297567T1 (zh) |
AU (1) | AU2986099A (zh) |
CA (1) | CA2324219C (zh) |
DE (1) | DE69925720T2 (zh) |
DK (1) | DK1066559T3 (zh) |
HK (2) | HK1094608A1 (zh) |
WO (1) | WO1999047999A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100386708C (zh) * | 2003-09-02 | 2008-05-07 | 精工爱普生株式会社 | 信号输出调整电路、显示驱动器、电光学装置及电子仪器 |
CN100395700C (zh) * | 2004-11-01 | 2008-06-18 | 威盛电子股份有限公司 | 限制指令宽度处理器中增加寄存器寻址空间的系统与方法 |
CN100407131C (zh) * | 2004-04-19 | 2008-07-30 | 沖电气工业株式会社 | 运算处理装置 |
Families Citing this family (11)
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 |
JP4661169B2 (ja) * | 2003-11-14 | 2011-03-30 | ヤマハ株式会社 | ディジタルシグナルプロセッサ |
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)
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 |
-
1999
- 1999-03-04 EP EP04005665.7A patent/EP1457876B1/en not_active Expired - Lifetime
- 1999-03-04 WO PCT/US1999/004887 patent/WO1999047999A1/en active IP Right Grant
- 1999-03-04 CN CNB998063665A patent/CN1279435C/zh not_active Expired - Lifetime
- 1999-03-04 EP EP99911150A patent/EP1066559B1/en not_active Expired - Lifetime
- 1999-03-04 CA CA2324219A patent/CA2324219C/en not_active Expired - Fee Related
- 1999-03-04 DK DK99911150T patent/DK1066559T3/da active
- 1999-03-04 JP JP2000537132A patent/JP2002507789A/ja not_active Withdrawn
- 1999-03-04 DE DE69925720T patent/DE69925720T2/de not_active Expired - Lifetime
- 1999-03-04 KR KR1020067005980A patent/KR100835148B1/ko not_active IP Right Cessation
- 1999-03-04 AT AT99911150T patent/ATE297567T1/de not_active IP Right Cessation
- 1999-03-04 KR KR1020007010577A patent/KR100940465B1/ko not_active IP Right Cessation
- 1999-03-04 CN CNA031530303A patent/CN1523491A/zh active Pending
- 1999-03-04 KR KR1020067005979A patent/KR100896674B1/ko not_active IP Right Cessation
- 1999-03-04 AU AU29860/99A patent/AU2986099A/en not_active Abandoned
-
2000
- 2000-10-18 AR ARP000105484A patent/AR026080A2/es unknown
- 2000-10-18 AR ARP000105482A patent/AR026078A2/es unknown
- 2000-10-18 AR ARP000105483A patent/AR026079A2/es unknown
- 2000-10-18 AR ARP000105486A patent/AR026082A2/es unknown
- 2000-10-18 AR ARP000105485A patent/AR026081A2/es unknown
-
2001
- 2001-09-04 HK HK07101408.7A patent/HK1094608A1/xx not_active IP Right Cessation
- 2001-09-04 HK HK01106221A patent/HK1035594A1/xx not_active IP Right Cessation
-
2010
- 2010-07-09 JP JP2010157075A patent/JP5677774B2/ja not_active Expired - Lifetime
-
2014
- 2014-09-05 JP JP2014181387A patent/JP6152558B2/ja not_active Expired - Lifetime
-
2016
- 2016-03-03 JP JP2016040960A patent/JP6300284B2/ja not_active Expired - Lifetime
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100386708C (zh) * | 2003-09-02 | 2008-05-07 | 精工爱普生株式会社 | 信号输出调整电路、显示驱动器、电光学装置及电子仪器 |
US7671853B2 (en) | 2003-09-02 | 2010-03-02 | Seiko Epson Corporation | Signal output adjustment circuit and display driver |
CN100407131C (zh) * | 2004-04-19 | 2008-07-30 | 沖电气工业株式会社 | 运算处理装置 |
CN100395700C (zh) * | 2004-11-01 | 2008-06-18 | 威盛电子股份有限公司 | 限制指令宽度处理器中增加寄存器寻址空间的系统与方法 |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1862485A (zh) | 数字信号处理器 | |
CN1279435C (zh) | 数字信号处理器 | |
CN1153129C (zh) | 用于处理器定制操作的设备 | |
CN1684058A (zh) | 处理器 | |
CN1194292C (zh) | 具有改良的指令集体系结构的微处理器 | |
CN100339824C (zh) | 高效执行特长指令字的处理器和方法 | |
CN1115631C (zh) | 具有risc结构的八位微控制器 | |
CN1117316C (zh) | 采用多个向量寄存器组的单指令多数据处理方法及其装置 | |
CN1103961C (zh) | 协处理器的数据访问控制装置和方法 | |
CN1204490C (zh) | 高数据密度risc处理器 | |
CN1112635C (zh) | 多媒体信号处理器中的单指令多数据处理方法及其装置 | |
CN1135468C (zh) | 对存储设备中信号数据字执行数字信号处理的方法和装置 | |
CN1656495A (zh) | 标量/矢量处理器 | |
CN1914592A (zh) | 执行具有单元大小控制的紧缩数据操作的方法和设备 | |
CN1121014C (zh) | 具有risc结构的八位微控制器 | |
CN1842779A (zh) | 用于执行simd运算的数据处理系统及其方法 | |
CN1395168A (zh) | 多指令集的数据处理 | |
CN1801082A (zh) | 在分组数据上执行乘-加运算的装置 | |
CN1782989A (zh) | 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器 | |
CN1522401A (zh) | 数据并行右移合并的方法与装置 | |
CN1319210A (zh) | 可配置的硬件块的配置方法 | |
CN1549106A (zh) | 在分组数据上执行乘-加运算的装置 | |
CN1152300C (zh) | 多媒体信号处理器中的单指令多数据处理方法及其装置 | |
CN1146796C (zh) | 堆栈式寄存器堆及其控制方法 | |
CN100351782C (zh) | 用于设计数字处理器的方法以及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CX01 | Expiry of patent term | ||
CX01 | Expiry of patent term |
Granted publication date: 20061011 |