CN1132879A - 使用流水线式寄存器的数据处理系统的功率降低及其方法 - Google Patents

使用流水线式寄存器的数据处理系统的功率降低及其方法 Download PDF

Info

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
Application number
CN95120893A
Other languages
English (en)
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.)
Motorola Solutions Inc
Original Assignee
Motorola Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Motorola Inc filed Critical Motorola Inc
Publication of CN1132879A publication Critical patent/CN1132879A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result 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)。
CN95120893A 1994-12-22 1995-12-20 使用流水线式寄存器的数据处理系统的功率降低及其方法 Pending CN1132879A (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 演算装置

Cited By (4)

* Cited by examiner, † Cited by third party
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