CN1132879A - 使用流水线式寄存器的数据处理系统的功率降低及其方法 - Google Patents
使用流水线式寄存器的数据处理系统的功率降低及其方法 Download PDFInfo
- Publication number
- CN1132879A CN1132879A CN95120893A CN95120893A CN1132879A CN 1132879 A CN1132879 A CN 1132879A CN 95120893 A CN95120893 A CN 95120893A CN 95120893 A CN95120893 A CN 95120893A CN 1132879 A CN1132879 A CN 1132879A
- Authority
- CN
- China
- Prior art keywords
- register
- result
- data
- pipeline
- bus
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims description 24
- 238000012545 processing Methods 0.000 title description 6
- 238000003860 storage Methods 0.000 claims description 9
- 239000007795 chemical reaction product Substances 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 6
- 238000004364 calculation method Methods 0.000 claims description 5
- 230000008901 benefit Effects 0.000 claims description 4
- 238000012544 monitoring process Methods 0.000 claims 1
- 239000000047 product Substances 0.000 description 6
- 238000006073 displacement reaction Methods 0.000 description 5
- 241001269238 Data Species 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 102000004357 Transferases Human genes 0.000 description 1
- 108090000992 Transferases Proteins 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- 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/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- 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/30101—Special purpose registers
-
- 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/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Advance Control (AREA)
- Microcomputers (AREA)
- Complex Calculations (AREA)
Abstract
在数据运算逻辑单元(54)中,在MAC运算之后消除不需要的写回到地寄存器(82)来降低功率。由控制电路(89)监视提供到数据ALU(54)的一系列指令,对于一个结果具有相同目的地的两个或多个连续指令被检测时,该结果被写到流水线式寄存器(78)而不是写到在连续指令中命名的目的地寄存器(82)。因此,仅驱动到流水线式寄存器(78)的短的轻负荷总线,而不是驱动到目的寄存器(82)的较长的重负荷的总线。
Description
本发明涉及数据处理,具体涉及在使用流水线式寄存器的数据处理系统中的功率降低。
数字信号处理是对按规则间隔取样的并且数字化的实时信号进行的运算处理。数字信号处理器(DSP)用于数字信号处理功能,例如信号的滤波、混合和比较。在一些数字信号处理系统中,DSP可能包括一个主处理器,用以处理任何数字信号的处理事务。主处理器可包括例如一个微计算机或微处理器。
DSP典型地包括一个数据运算逻辑单元(ALU),用以执行数学计算。数据ALU可能是流水线式的,可增加性能。流水线式数据ALU包括输入寄存器的寄存器堆、两个执行单元、累加器寄存器和流水线式寄存器。ALU的基本操作是乘法/累加(MAC)运算。在数字信号处理器中通常使用两个二进制数相乘和相加或将该结果与一个第三二进制数累加的电路。在信号处理算法中,例如付里叶变换、有限脉冲响应滤波器(FIR)、无限脉冲响应滤波器(IIR)和类似的算法,有助于具有应用硬件来执行MAC指令的能力。
当数据ALU例如按照实现FIR滤波器的算法,对一个预定迭代数执行迭代MAC指令时,把乘法运算的结果用以作为累加运算的一个操作数。其它操作数可存储在多个累加器寄存器的一个寄存器内。在典型的数据ALU中,累加运算的结果在写回到累加器寄存器时,或可写到用于MAC指令的每次迭代的多个输入寄存器的一个寄存器内。对于预定迭代数执行MAC指令,并且每次累加运算的结果写回到相同的累加器寄存器中。累加器和累加器寄存器之间的总线可能当长,并具有相当重的容性的负荷。为此,在每次迭代之后写回到累加器寄存器,可能消耗大量的功率。
据此,在这里以一种形式提供一种数据处理系统,该系统具有一个流水线式运算逻辑单元,该流水线式运算逻辑单元具有一个输入寄存器、第一和第二执行单元、一个流水线式寄存器和一个控制电路。第一执行单元连接到输入寄存器上,执行第一算术运算,以获得第一结果。该流水线式寄存器连接到第一执行单元上,存储第一结果。累加器寄存器存储第三操作数。第二执行单元连接到流水线式寄存器和累加器寄存器上,执行第二算术运算,以获得第二结果。该控制电路监视提供到数据运算逻辑单元的一系列指令,当控制电路检测该系列指令的连续指令时,这些指令对于第二结果要求相同的目的地,则该控制电路使第二结果被写入到流水线式寄存器。
在另一个实施例中,提供一种用以在数据处理系统中执行算术运算的方法,该方法具有以下步骤:从输入寄存器读取第一操作数输入到第一执行单元,对第一操作数执行第一算述运算,得到第一结果,存储第一结果在中间寄存器,对第一结果执行第二算术运算,获得第二结果,和当连续指令对于第二结果具有相同的目的地时,监视用于执行算术运算的一系列指令和检测,并响应检测两个相同的目的地,存储第二结果于中间寄存器中。
本发明的这些特点和其它特点以及优点将结合以下附图阅读下文的详细描述就会更清楚。
图1示出根据本发明的数据处理系统的方框图。
图2示出图1的数据处理系统的数据运算逻辑单元的方框图。
图3示出根据本发明的实施例的16比特乘/累加运算和各种寄存器中的数据调整。
图4示出图1的程序控制单元的状态寄存器的方框图。
总的来说,本发明提供了在流水线式数据ALU中降低的功率损耗。在MAC操作之后通过消除不必要的写回到相同的目的地寄存器来降低功率。监视提供给数据ALU的一系列指令。当检测到对于一个结果具有相同目的地方两个或多个连续指令时,该结果被写入流水线式寄存器,而不写入连续指令中命名的目的地寄存器。鉴此,只有到流水线式寄存器的短的轻负荷,总线被驱动,而不是驱动至目的地寄存器的较长的重负荷的总线,结果明显地降低功率。
当涉及信号、状态比特、或类似设备分别进入其逻辑“真”或逻辑“假”时,使用了术语“肯定”和“否定”。如果逻辑“真”状态是数字逻辑电平“1”,则逻辑“假”状态将是数字逻辑电平“0”。而如果逻辑“真”状态是数字逻辑电平“0”,则逻辑“假”状态将是数字逻辑电平“1”。术语“总线”用于涉及多个信号,可用于传送一个或多个各种类型的信息,例如数据、地址、控制或状态。
参照图1—4可更全面地描述本发明。图1和3所示的每个方框代表电路。图4所示的每个方框代表流程图中一个或多个步骤。图1以方框图形式示出根据本发明的数据处理系统20。在图1所示的实施例中,数据处理系统20是一个数字信号处理器(DSP)并设置在一个单一的集成电路中。在另一个实施例中,数据处理系统20例如可能是一个微计算机或微处理器。数据处理系统20包括定时器22、主接口24、增强串行同步接口(ESSI)26、串行异步接口(SCI)28、程序RAM(随机存取存储器)和指令高速缓冲存储器30、X存储器32、Y存储器34、地址产生单元/直接存储器存取(DMA)控制器36、外部地址总线开关38、内部数据总线开关40、DRAM(动态随机存取存储器)和SRAM(静态随机存取存储器)总线接口和指令高速缓冲存储器控制器42、外部数据总线开关44、程序控制单元(PCU)46和数据运算单元(ALU)54。程序控制单元46包括程序中断控制器48、程序解码控制器50和程序地址产生器52。
标有“YAB”的地址总线56、标有“XAB”的地址总线57、标有“PAB”的程序地址总线58、和标有“DAB”的地址总线59连接在地址产生单元/DMA控制器36和外部地址总线开关38之间。标有“DDB”的数据总线60连接到主接口24和外部数据总线开关44之间。标有“YDB”的数据总线61、标有“XDB”的数据总线62、标有“PDB”的程序数据总线63、标有“GDB”的程序数据总线64连接在内部数据总线开关40和外部数据总线44之间。
定时器22包括三个定时器,它们能够使用内部或外部定时,和能够中断数据处理系统20或发信号给外部装置。此外,在已出现规定数目的事件之后,定时器22能用于发信号给DMA转移。三个定时器的每一个定时器连接到单个双向插头或端子。此外,定时器22的每个定时器连接到总线57、总线59、程序中断控制器48和总线60。
主接口24为数据处理系统20和其它设备,例如微计算机、微处理器或DMA控制器之间提供用于通信的双向接口。而且主接口24经总线60双向地连接到外部数据总线开关44,经总线57和59双向的连接到总的数据总线64、程序中断控制器48、地址产生单元/DMA控制器36和外部地址总线开关38。此外,主接口24双向地连接到50个外部插头或端子,用于从主处理器的双向数据转移,地址寄存器选择和控制通信。
增强串行同步接口(ESSI)26连接到12个双向外部插头提供与外部串行设备,例如包括一个或多个工业标准编译码器,DSP(数字信号处理器),或微处理器的串行通信。ESSI26还有连接到总线57,总线59和总线60的端子。
串行通信接口(SCI)28接到3个双向外部插头,提供与外部设备的串行通信。SCI还有接到总线57,总线59和总线60的端子。
图1所示数据处理系统20的实施例有三个存储空间:程序RAM和指令高速缓冲存储器30、X存储器32和Y存储器34。在另一个实施例中,可能有更多或更少的存储空间。程序RAM和指令高速缓冲存储器30连接到地址总线58和数据总线63。X存储器32连接到地址总线57、地址总线59、数据总线60和数据总线62。Y存储器34连接到地址总线56、地址总线59、数据总线60和数据总线61。
地址产生单元/DMA控制器36连接到地址总线56、57、58和59。地址产生单元/DMA控制器36把存储地址提供给定时器22、主接口24、ESSI26、SCI28、程序RAM和指令高速缓冲存储器30、X存储器32、Y存储器34、外部地址总线开关38和DRAM与SRAM总线接口以及指令高速缓冲存储器控制器42。在优选实施例中,DMA控制器具有6个信道。
DRAM与SRAM总线接口和指令高速缓冲存储器42连接到程序地址总线58和1 4个双向外部插头。DRAM与SRAM总线接口的指令高速缓冲存储器和指令高速缓冲中存储器42起着在外部主存储器(未示出)和程序控制单元46之间缓冲存储器的作用。指令高速缓冲存储器存储频繁地使用的程序指令。当在高速缓冲存储器中由程序要求的指令字是可用的时候,性能的增加可能得到,因为消除了存取主存储器要求的时间。
内部数据总线开关40连接到数据总线60,数据总线61,数据总线62,程序数据总线63和总数据总线64。外部数据总线开关44经数据总线60、数据总线61、数据总线62、程序数据总线63和总数据总线64连接到内部数据总线40。此外,外部数据总线开关44经数据总线60连接到定时器22,主接口24,ESSI26,和SCI28。内部数据总线开关40用于总线之间的转移。任何两个总线通过内部数据总线开关40可连接在一起。外部地址总线开关38和外部数据总线开关44分别连接外部总线(未示出)到任何内部地址总线和内部数据总线。
在程序控制单元46中,程序中断控制48在中断请求中仲裁,并连接到定时器22,主接口24,ESSI26和SCI28。同样,程序中断控制器48双向地连接到总数据总线64和程序解码控制器50。程序解码控制器50解码每个24比特指令并且双向地连接到程序中断控制器48和程序地址产生器52。程序地址产生器52包含用于程序地址产生,系统堆栈和环路控制而需要的所有硬件。此外,程序地址产生器52连接到程序地址总线58和程序数据总线63。
数据运算逻辑单元(ALU)54连接到程序数据总线63,数据总线61和数据总线62。数据ALU54对数据操作数执行所有算术和逻辑运算。数据ALU54包含可通过总线61和62读或写的寄存器。数据ALU也连接到总线63和总线60。
时钟产生电路(未示出)提供时钟信号给图1所示的所有方框。在数据处理系统20中还有图1中未示出的测试电路。
图2以方框图的形式表示图1的数据处理系统20的数据运算逻辑单元(ALU)54。数据ALU54执行数据处理系统20的算术和逻辑运算。数据被存储并在数据ALU54中以带符号小数格式进行运算。数据ALU54包括寄存器堆70、乘法器76、流水线寄存器78、90和96、累加器和舍入(rounding)单元80、累加器寄存器82、移位器/限幅器86、复用器88、控制电路89、桶形移位器比特字段单元92和累加器寄存器94。寄存器堆70包括寄存器71至74。累加器寄存器82包括累加器寄存器83和累加器寄存器84。
寄存器堆70连接到数据总线61和62用于从X存储器32、Y存储器34或从外部存储器位置(未示出)接收数据操作数。寄存器71至74的每一个寄存器能存储24位操作的读/写寄存器。寄存器71至74用作数据总线61及62和数据ALU54之间的输入缓冲寄存器。寄存器堆70的输出端连接到复用器88的输入端和乘法器76和输入端。乘法器76是一个执行单元并且包括一个常规的阵列乘法器,例如修改的布斯(Booth)式乘法器,华莱士(Wallace)树或类似的。乘法器76对表示为小数的操作数执行乘运算。在乘/累加运算中,相乘运算的中间结果提供给流水线寄存器78,在提供该中间结果给累加器与舍入单元80之前临时地存储该中间结果。累加器与舍入单元80还起着数据ALU54中的执行单元的作用。
数据ALU54是流水线的,而且在2个时钟周期内执行每个MAC运算。在第一个时钟周期内,由乘法器76执行相乘并把中间结果存储在流水线寄存器78中。在第二个时钟周期内,累加器相加或从中间结果中相减。在每个时钟周期内新的指令可被启动。如果在指令中规定就执行舍入。舍入或是收敛的舍入(舍入最接近的偶数)或是二的补数舍入。通过在程序控制单元46的状态寄存器中的舍入位规定舍入类型。程序控制单元46表示在图1中。在累加器寄存器中被舍入的位由状态寄存器中标度模式位来规定。流水线寄存器78被连接到乘法器76的输出端,用于从相乘运算接收中间结果。流水线寄存器78的输出端提供中间结果到累加器和舍入单元80的输入端。该中间结果被加到存储在累加器寄存器83或84之一的操作数。流水线寄存器96具有输入端,连接到累加器寄存器82的输出端,和连接到累加器与舍入单元80的输入端的输出端,用于从累加器寄存器83或84之一转移数据到累加器舍入单元80。最后结果典型地存回在相同的寄存器内,或是累加器寄存器83或是84中。但是,最后结果可写回到寄存器堆70的寄存器内。
累加器寄存器83和84每一个都包括3个并置寄存器,产生总共56位。在累加器寄存器83中,标有“A0”的24位通用读/写寄存器存储24位最低有效产物(LSP)。AO包括累加器寄存器83的位0—23。标有“A1”的24位读/写寄存器存储24位最高有效产物(MSP)。A1包括累加器寄存器83的位24—47。标有“A2”的8位读/写寄存器是一个符号扩展(EXT)与溢出寄存器。A2包括累加器寄存器83的位48—56。在累回器寄存器84中,标有“B0”的24位通用读/写寄存器存储24位LSP。B0包括累加器寄存器84的位0—23。标有“B1”的24位读/写寄存器存储24位MSP。B1包括累加器寄存器84的位24—47。标有“B2”的8位读/写寄存器起着符号扩展与溢出寄存器的作用。B2包括累加寄存器84的位48—56。累加器寄存器82和寄存器堆70是在数据处理系统20的编程模块内。
累加器寄存器82的输出端连接到移位器/限幅器86的输入端,用于从累加器寄存器82到移位器/限幅器86转移56位数据。移位器/限幅器86包括两个常规异步并行移位器/限幅器。一个移位器/限幅器连接到数据总线61,而另一个移位器/限幅器连接到数据总线62。这些限幅器被用于使由于溢出产生的差错最小。当在使用扩展寄存器A2和B2,而且累加器寄存器83或84的内容经数据总线61或数据总线62发送时出现限幅。限幅器将用最大幅度替代限制的数据值。如果没有使用扩展寄存器A2和B2,那么限幅器不工作。两个数据限幅器也能组合形成一个48位数据限幅器,用于长字操作数。在移位器/限幅器86中的数据移位器能向左(标度向上)移位数据一位,或向右(标度向下)移一位,而且传送来移位的数据(无标度)。移位器允许固定点数据的动态标度,而不修改程序码。例如,这允许块浮动点算法,例如在数据处理系统20中实现的快速付里叶变换。
累加器移位器94有连接到累加器寄存器82输出端的输入端和连接到累加器与舍入单元80的输出端。累加器移位器94是一个异步并行称位器,用于移位累加器寄存器82的信息。然后累加器移位器94提供移位的信息返回到累加器与舍入单元80。控制电路89连接到累加器移位器94、移位器/限幅器86和桶形移位器与位字段单元92。控制电路89响应通过总线63从程序控制单元46接收的指令执行对数据ALU54的控制功能。例如,控制电路89确定当数据ALU54是在16位准确模式时执行MAC指令要求的移位运算。
复用器88具有两个输入端,分别连接到总线63和寄存器堆70上。复用器88的输出端连接到流水线式寄存器90的输入端。流水线式寄存器90的输出端连接到桶形移位与位字段单元92。桶形移位器与位字段单元92连接到累加器寄存器82的输入端。桶形移位器与位字段单元92包含56位并行双向移位器,并执行多位左移、多位右移、1位旋转(左或右)、位字段合并、插入和提取、计数引导位正常化和逻辑运算,例如“与”、“或”、“异或”和“非”。桶形移位器与位字段单元92能执行对24位和16位精确的运算方式的所有这些运算。在16位精确方式中,根据16比特数据适当的比特位置执行比特位字段运算。
数据ALO54为24位和16位精确方式可执行一个完整的解决方案。按照24位方式或16位精确方式可执行一个完整的指令组,其中包括精密运算。相同指令和硬件用于这两种方式。通过改变状态寄存器中的一个比特位来执行方式之间的变换16位精确运算方式允许执行在24位方式中也能执行的数据ALU54的几乎每个运算。例如,16位精确方式,数据ALU54执行舍入、双精密乘法、移动和移位。此外,在16位精确方式中能执行所有位字段运算。
在移动期间,尽管在16位精确方式,在总线61、62和63上与24位或48位一样数据被写入和读出。没有16位移动。当从总线61和总线62移动数据到其中一个累加器寄存器82时,来自总线61的16个最低有效位将被放置在累回器寄存器82的选择的累加器寄存器的位32—47,和零将被装入到累加器寄存器的位24—31。来自总线62的16个最低有效位将被放置在全8—23。而零将被装入到位0—7。位48—56被装入符号扩展。
当从总线61或总线62移动数据到其中一个寄存器71—74时,在总线上的16个最低有效位将被装入到目的地寄存器的16个最高有效位。零被装入到该寄存器的8个最低有效位。当从总线61或总线62移动数据到48位寄存器,例如通过并置寄存器71—74的两个寄存器形成的一个寄存器,总线62的16个最低有效位被装入到寄存器72或74的16个最高有效位,和总线61的16个最低有效位被装入到寄存器71或73的16个最高有效位。
对于数据输入,执行单元,例如乘法器76,累加器与舍入单元80和桶形移位器与位字段单元92,首先该数据被调整并以预定的调整放置在执行单元内,使得16位精确方式对数据处理系统20的用户是透明的。当执行16位算术运算时,使用小数运算进行调整较容易。各种复用电路和移位电路被用于实现对16位精确方式所需要的调整。在16位精确方式中,对累加器部分A1/B1而不是A0/B0的位15执行算述运算的舍入,如在24位方式所完成的一样。因此,影响数据ALU54的标度以及移位/限幅运算。使用数据ALU54执行16位精确MAC指令要求的步骤作为一个例子表示在图3。
参见图2和图3,第一16位操作数据提供到寄存器堆70的寄存器,例如标有“X”的寄存器71。第一操作数可能从X存储器32或Y存储器34(图1)提供。第二16位操作数提供到寄存器堆70的另一个寄存器,例如标有“Y0”的寄存器73。第一和第二操作数被存储在24位寄存器71和73的16个最高有效位。寄存器71和73的8个最低有效位被无效,或在说明的实施例中,用逻辑“0”写入。第一16位操作数和第二16位操作数在乘法器76中相乘在一起,得到32位的乘积。32位乘积被存储在中间结果寄存器的32最高有效位。在数据ALU54中,流水线寄存器7 8起着中间结果寄存器的作用。该32位乘积被加到第三操作数,该操作数是存储在累加器寄存器83或84之一中。在相加之前,第三操作数在累加器移位器94中被移位,以便调整或匹配32位乘积的格式,并提供到累加器与舍入单元80。该相加的结果被写回到相同的累加器寄存器83或84。
当数据ALU执行MAC指令时,例如在实现FIR滤波器算法中,使用相乘指令的结果作为用于累加指令的操作数。对预定的迭代数执行MAC指令。在现有技术中,作为写回到累加器寄存器82的最后结果或被写到寄存器堆70中的一个寄存器内,用于每个MAC指令的迭代。在每个迭代之后,累加运算的结果被写回到相同的累加器寄存器。累加器和累加器寄存器之间的总线可能是相对地长和具有相对大容量负荷。因此,在每个迭代之后写回到累加器寄存器可能消耗大量功率。
为了降低在数据ALU54中的功率消耗,消除了没有必要的写回到累回器寄存器82的相同累回器寄存器控制电路89监视提供到数据ALU 54的系列指令,并对最后结果检测连续指令具有相同目的地的所有情况。无论可时,相同寄存器是连续指令的目的地,结果仅写入到流水线寄存器78,而不写入在连续指令中命名的目地地寄存器。因此,仅驱动到流水线寄存器78的短的、轻负荷总线,而不是到累加器寄存器的较长的重负荷总线,结果明显地降低功率。
图4的方框图的形式表示图1的程序控制单元46的状态寄存器95。状态寄存器95是一个常规的读/写24位寄存器。标有“SA”的状态位97控制数据ALU54是执行24位运算或16位精确运算。当控制位97被认定时,进入16位精确运算方式。在数据处理系统20的复位期间,状态位97被清除。
虽然以优选实施例的方式描述了本发明,但本领域的技术人员明白,除了上面提出的描述的之外,本发明可以多种方式进行修改,也可设想许多实施例。例如,在所说明的实施例中,公开了16位精确方式和24位方式用相同的硬件运行。在另一个实施例中,操作数的位数可能是不同的和由相同硬件支持的方式数目可能是不同的。而且在说明的实施例中,具体的寄存器具有特定的位数和特定位组织。在另一个实施例中,可能使用不同容量的寄存器,不同数量的寄存器或寄存器位字段。因此,由所附的权利要求书复盖了本发明的所有修改,这些都在本发明的真实精神和范围内。
Claims (10)
1.一种数据处理系统(20),具有一个流水线式运算逻辑单元(54),该流水线式运算逻辑单元(54),其特征在于:
一个输入寄存器(71);
一个第一执行单元(76),连接到输入寄存器(71),用于执行第一算术运算,以便得到第一结果;
一个流水线式寄存器(78),连接到第一执行单元(76),用于存储第一结果;
一个累加器寄存器(83),用于存储第三操作数;
一个第二执行单元(80),连接到流水线寄存器(78)和累加器寄存器(83),用于执行第二算述运算,以便得到第二结果;和
一个控制电路(89),用于监视一系列指令,这些指令提供给流水线式运算逻辑单元(54),当控制电路(89)检测对于第二结果要求相同目的地的系列指令的连续指令时,控制电路(89)使第二结果写入到流水线寄存器(78)。
2.根据权利要求1的数据处理系统(20),其特征在于,第一执行单元(76)是一个乘法器。
3.根据权利要求2的数据处理系统(20),其中第二执行单元(80)是一个累加器。
4.根据权利要求3的数据处理系统(20),其特征在于,第一和第二算术运算对于预定迭代数进行重复,和在完成预定迭代数之后,最后结果被写到累加器寄存器(83)。
5.在数据处理系统中(20)中用于执行算术运算的方法,其特征在于,该方法包括以下步骤:
从一个输入寄存器(71)读第一操作数到第一执行单元(76);
对第一操作数执行第一算术运算,以便得到第一结果;
存储第一结果在中间寄存器(78)中;
对第一结果执行第二算术运算,以便得到第二结果;和
监视用于执行算术运算的一系列指令和检测何时连续的指令对于第二结果具有相同的目的地,并且响应检测两个相同的目的地存储第二结果在中间寄存器(78)中。
6.根据权利要求5的方法,其特征在于,用于执行算术运算的方法对于预定迭代数进行重复,在预定迭代数之后,得到最后结果并写到累回器寄存器(83)。
7.根据权利要求5的方法,其特征在于,算术运算是乘法/累加运算。
8.根据权利要求5的方法,其特征在于,存储第一结果在中间寄存器(28)的步骤的特征在于存储第一结果在流水线寄存器(78)中。
9.在数据处理系统(20)中用于执行乘法/累加指令的方法,该系统有一个流水线式算术逻辑单元(54),该流水线式算述逻辑单元(54)具有第一和第二输入寄存器(71,73),第一和第二执行单元(76,80),一个流水线式寄存器(78)和一个目的地寄存器(83),其特征在于,该方法包括以下步骤:
分别从第一和第二输入寄存器(71、73)读第一和第二操作数到第一执行单元(76);
在第一执行单元(76)中用第二操作数乘第一操作数,得到第一结果;
在流水线式寄存器(78)中存储第一结果;
从目的地寄存器(83)读第3操作数;
在第二执行单元(80)中加第一结果到第3操作数,得到第二结果;和
监测用于执行乘法/累加指令的一系列指令和检测何时连续的指令对于第二结果具有相同的目的地,并且响应检测两个相同的目的地,存储第二结果在流水线寄存器(78)中。
10.根据权利要求9的方法,其特征在于,乘法/累加命令对预定迭代数进行重复,在预定迭代数之后,得到最后结果并写到目的地寄存器(83)。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US361,405 | 1994-12-22 | ||
US08/361,405 US5666300A (en) | 1994-12-22 | 1994-12-22 | Power reduction in a data processing system using pipeline registers and method therefor |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1132879A true CN1132879A (zh) | 1996-10-09 |
Family
ID=23421909
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN95120893A Pending CN1132879A (zh) | 1994-12-22 | 1995-12-20 | 使用流水线式寄存器的数据处理系统的功率降低及其方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US5666300A (zh) |
KR (1) | KR100446564B1 (zh) |
CN (1) | CN1132879A (zh) |
GB (1) | GB2296118B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100409179C (zh) * | 2002-08-16 | 2008-08-06 | 卡内基梅隆大学 | 具有终止信号传播的机制的可编程流水线结构 |
CN109656867A (zh) * | 2016-11-03 | 2019-04-19 | 北京中科寒武纪科技有限公司 | Slam运算装置和方法 |
CN113805841A (zh) * | 2020-06-15 | 2021-12-17 | 美光科技公司 | 多个寄存器中的位串累加 |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5870581A (en) * | 1996-12-20 | 1999-02-09 | Oak Technology, Inc. | Method and apparatus for performing concurrent write operations to a single-write-input register file and an accumulator register |
EP0967544B1 (en) * | 1998-06-25 | 2006-04-19 | Texas Instruments Incorporated | Digital signal processor for data having a large bit-length |
KR100325430B1 (ko) * | 1999-10-11 | 2002-02-25 | 윤종용 | 상이한 워드 길이의 산술연산을 수행하는 데이터 처리장치 및 그 방법 |
US7890566B1 (en) * | 2000-02-18 | 2011-02-15 | Texas Instruments Incorporated | Microprocessor with rounding dot product instruction |
US20030144826A1 (en) * | 2002-01-29 | 2003-07-31 | Mandell Michael I. | Register repositioning method for functional verification systems |
US20040015676A1 (en) * | 2002-07-17 | 2004-01-22 | Pierre-Yvan Liardet | Sharing of a logic operator having a work register |
US7730292B2 (en) * | 2003-03-31 | 2010-06-01 | Hewlett-Packard Development Company, L.P. | Parallel subword instructions for directing results to selected subword locations of data processor result register |
AT413895B (de) * | 2003-09-08 | 2006-07-15 | On Demand Informationstechnolo | Digitale signalverarbeitungseinrichtung |
US8015229B2 (en) * | 2005-06-01 | 2011-09-06 | Atmel Corporation | Apparatus and method for performing efficient multiply-accumulate operations in microprocessors |
US8307196B2 (en) * | 2006-04-05 | 2012-11-06 | Freescale Semiconductor, Inc. | Data processing system having bit exact instructions and methods therefor |
JP4893154B2 (ja) * | 2006-08-21 | 2012-03-07 | 富士通セミコンダクター株式会社 | 画像処理装置及び画像処理方法 |
US8370606B2 (en) * | 2007-03-16 | 2013-02-05 | Atmel Corporation | Switching data pointers based on context |
US7797516B2 (en) * | 2007-03-16 | 2010-09-14 | Atmel Corporation | Microcontroller with low-cost digital signal processing extensions |
US20110055445A1 (en) * | 2009-09-03 | 2011-03-03 | Azuray Technologies, Inc. | Digital Signal Processing Systems |
US20110153995A1 (en) * | 2009-12-18 | 2011-06-23 | Electronics And Telecommunications Research Institute | Arithmetic apparatus including multiplication and accumulation, and dsp structure and filtering method using the same |
US9886277B2 (en) | 2013-03-15 | 2018-02-06 | Intel Corporation | Methods and apparatus for fusing instructions to provide OR-test and AND-test functionality on multiple test sources |
US9483266B2 (en) * | 2013-03-15 | 2016-11-01 | Intel Corporation | Fusible instructions and logic to provide OR-test and AND-test functionality using multiple test sources |
US11144367B2 (en) | 2019-02-08 | 2021-10-12 | International Business Machines Corporation | Write power optimization for hardware employing pipe-based duplicate register files |
US10901492B1 (en) * | 2019-03-29 | 2021-01-26 | Amazon Technologies, Inc. | Power reduction in processor pipeline by detecting zeros |
CN113504893B (zh) * | 2021-07-23 | 2022-08-26 | 河南亿秒电子科技有限公司 | 一种智能芯片架构和高效处理数据的方法 |
CN114237550B (zh) * | 2021-11-10 | 2023-10-13 | 电子科技大学 | 一种基于Wallace树的多输入移位求和累加器 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB8401807D0 (en) * | 1984-01-24 | 1984-02-29 | Int Computers Ltd | Pipelined data processing apparatus |
US4575812A (en) * | 1984-05-31 | 1986-03-11 | Motorola, Inc. | X×Y Bit array multiplier/accumulator circuit |
GB2204431A (en) * | 1987-04-25 | 1988-11-09 | Ferranti Plc | Digital signal processing and transducer array beamforming |
US4843585A (en) * | 1987-09-14 | 1989-06-27 | Motorola, Inc. | Pipelineable structure for efficient multiplication and accumulation operations |
US5204828A (en) * | 1989-02-10 | 1993-04-20 | Intel Corporation | Bus apparatus having hold registers for parallel processing in a microprocessor |
JPH04119430A (ja) * | 1990-09-11 | 1992-04-20 | Mitsubishi Electric Corp | パイプライン制御方式 |
DE69230128T2 (de) * | 1991-07-01 | 2000-02-03 | Fujitsu Ltd | Summenproduktberechnungsvorrichtung |
JPH05174050A (ja) * | 1991-12-26 | 1993-07-13 | Matsushita Electric Ind Co Ltd | 級数演算装置 |
JPH05257683A (ja) * | 1992-03-16 | 1993-10-08 | Sharp Corp | 大規模集積回路のパイプライン構造 |
JPH06282418A (ja) * | 1993-03-30 | 1994-10-07 | N T T Idou Tsuushinmou Kk | 演算装置 |
-
1994
- 1994-12-22 US US08/361,405 patent/US5666300A/en not_active Expired - Fee Related
-
1995
- 1995-12-18 KR KR1019950051134A patent/KR100446564B1/ko not_active IP Right Cessation
- 1995-12-18 GB GB9525824A patent/GB2296118B/en not_active Expired - Fee Related
- 1995-12-20 CN CN95120893A patent/CN1132879A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100409179C (zh) * | 2002-08-16 | 2008-08-06 | 卡内基梅隆大学 | 具有终止信号传播的机制的可编程流水线结构 |
CN109656867A (zh) * | 2016-11-03 | 2019-04-19 | 北京中科寒武纪科技有限公司 | Slam运算装置和方法 |
CN109656867B (zh) * | 2016-11-03 | 2023-05-16 | 中科寒武纪科技股份有限公司 | Slam运算装置和方法 |
CN113805841A (zh) * | 2020-06-15 | 2021-12-17 | 美光科技公司 | 多个寄存器中的位串累加 |
Also Published As
Publication number | Publication date |
---|---|
KR100446564B1 (ko) | 2004-11-03 |
KR960024896A (ko) | 1996-07-20 |
GB2296118A (en) | 1996-06-19 |
GB2296118B (en) | 1999-10-06 |
US5666300A (en) | 1997-09-09 |
GB9525824D0 (en) | 1996-02-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1132879A (zh) | 使用流水线式寄存器的数据处理系统的功率降低及其方法 | |
JP3759647B2 (ja) | 24ビットおよび16ビット算術演算の双方を実行するための装置および方法 | |
US5655133A (en) | Massively multiplexed superscalar Harvard architecture computer | |
CN1145877C (zh) | 多位移位装置,利用多位移位装置的数据处理器及其方法 | |
US8375395B2 (en) | Switch-based parallel distributed cache architecture for memory access on reconfigurable computing platforms | |
US4600986A (en) | Pipelined split stack with high performance interleaved decode | |
US4674032A (en) | High-performance pipelined stack with over-write protection | |
US7340562B2 (en) | Cache for instruction set architecture | |
KR20010030593A (ko) | 디지털 신호 프로세싱 능력을 가진 데이터 프로세싱 유닛 | |
US7308559B2 (en) | Digital signal processor with cascaded SIMD organization | |
CA1103806A (en) | Floating point data processing system | |
KR20080026673A (ko) | 곱셈 누적 연산을 위한 디지털 신호처리 장치 및 방법 | |
US4722067A (en) | Method and apparatus for implementing modulo arithmetic calculations | |
US6675286B1 (en) | Multimedia instruction set for wide data paths | |
JP3476960B2 (ja) | 算術論理演算装置及び制御方法 | |
US5682339A (en) | Method for performing rotate through carry using a 32 bit barrel shifter and counter | |
Nishitani et al. | Advanced single-chip signal processor | |
US7111155B1 (en) | Digital signal processor computation core with input operand selection from operand bus for dual operations | |
US5655139A (en) | Execution unit architecture to support X86 instruction set and X86 segmented addressing | |
US6820189B1 (en) | Computation core executing multiple operation DSP instructions and micro-controller instructions of shorter length without performing switch operation | |
US5754460A (en) | Method for performing signed division | |
US5687102A (en) | Double precision (64 bit) shift operations using a 32 bit data path | |
JPS58151644A (ja) | デイジタル演算装置 | |
JPH0276069A (ja) | ベクトル演算処理装置 | |
Savla | DSP architectures for system design |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |