CN101133390A - 单循环低功率中央处理单元架构 - Google Patents

单循环低功率中央处理单元架构 Download PDF

Info

Publication number
CN101133390A
CN101133390A CNA2006800071570A CN200680007157A CN101133390A CN 101133390 A CN101133390 A CN 101133390A CN A2006800071570 A CNA2006800071570 A CN A2006800071570A CN 200680007157 A CN200680007157 A CN 200680007157A CN 101133390 A CN101133390 A CN 101133390A
Authority
CN
China
Prior art keywords
address
instruction
data
register
ram
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
CNA2006800071570A
Other languages
English (en)
Inventor
本杰明·F·弗勒明
埃米尔·兰布朗克
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.)
Atmel Corp
Original Assignee
Atmel Corp
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 Atmel Corp filed Critical Atmel Corp
Publication of CN101133390A publication Critical patent/CN101133390A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

一种用于在CPU内实施指令管线的n架构,其包括:算术逻辑单元(ALU)(210)、地址算术单元(AAU)(215)、程序计数器(PC)(220)、只读存储器(ROM)(230),所述只读存储器(ROM)(230)耦合到所述程序计数器(220)、指令寄存器(240),并耦合到耦合到所述算术逻辑单元(210)的指令解码器(250)。随机存取存储器(RAM)(270)耦合到所述指令解码器(250)、所述算术逻辑单元(210),并耦合到RAM地址寄存器(260)。

Description

单循环低功率中央处理单元架构
技术领域
本发明涉及集成电路。更具体来说,本发明是一种用于微控制器架构的设备和方法,所述微控制器架构实施指令管线以加速程序执行并减少功率消耗。
背景技术
提高***时钟频率是用于改进微处理器或微控制器内的中央处理单元(CPU)的计算性能的惯用方法。所属领域的技术人员知道,根据公式:Poc CV2f,CPU所消耗的典型功率(P)取决于总的CPU门电容(C)、电源电压(V)和***时钟频率(f)。
可通过降低C、V或f来减少功率消耗。由需用以实施设计的门数量确定芯片上的电容(C)。常根据最小化需用以实现所需逻辑的门数目来优化所确定的设计,且所述设计通常提供很小的改进机会。由工艺技术和建立在所述技术上的晶体管的关联操作特征来限制操作电压(V)。***时钟频率(f)常提供最佳的改进机会。
通过减少需用以完成指令的时钟循环数,可降低***时钟频率以在减少功率的同时维持计算处理量。或者,可维持***时钟频率,且对于给定的功率消耗可执行更高速率的计算。在任一情况下,减少了每一计算所需的能量。因此,减少需用以执行指令的时钟循环数是用于改进CPU的性能的重要方法。因此,所需的是一种用于通过减少需用以执行指令的时钟循环数而实现高性能CPU(即,具有高速度和低功率消耗)的方法。一种并行执行指令的***和方法通过增加用给定数量的***时钟循环执行的指令的数目可满足此需求。
发明内容
本发明是一种用于CPU中的指令管线的设备和方法。在示范性实施例中,本发明并入微控制器中,所述微控制器对具有16位地址和8位数据的MCS-51指令集进行操作。所属领域的技术人员已知利用MCS-51指令集的微控制器是8051微控制器。参考图1,如现有技术中已知的8051微控制器的方框图具有内部总线,其提供用于在只读存储器(ROM)、随机存取存储器(RAM)与算术逻辑单元(ALU)之间进行通信的共同路径。地址寄存器(AR)、累加器寄存器(ACC)、临时寄存器(TMP)、数据指针寄存器(DPTR)和堆栈指针寄存器(SP)每一者附接到所述内部数据总线。
现有技术中已知的典型的8051微控制器需要三个***时钟循环来获取从只读存储器(ROM)到指令寄存器(IR)的单字节指令。本发明将单字节指令获取减少到单个***时钟循环。MCS51指令集中的指令的长度是一个、两个或三个字节。在现有技术8051微控制器中,指令获取操作因此可需要多达九个***时钟循环:
  指令长度(字节)   获取(***时钟)
  一个两个三个   三个六个九个
在现有技术8051微控制器中,需用以完成指令执行的时间超过了获取时间,因为仅在完成指令获取操作之后才可执行指令所需的微操作,且微操作必须对单个内部总线进行分时操作。通常,指令需要六个或十二个***时钟循环来执行。因此,一字节指令或二字节指令将在六个***时钟循环中执行,从而在执行单字节指令的过程中显著地浪费了三个***时钟循环。三字节指令将需要十二个***时钟循环来执行,从而显著地浪费了三个***时钟循环。
在本发明的示范性实施例中,通过耦合到程序计数器(PC)的16位地址算术单元(AAU)和耦合到堆栈指针(SP)的专用递增/递减单元来启用每字节单个循环的获取。程序计数器(PC)随着所获取的每一指令字节而连续地递增值“1”,以便维持指令管线,但堆栈指针(SP)可被独立地压入或退栈,以启动服务中断。随机存取存储器(RAM)用于在中断服务期间保存程序计数器(PC)值,且一旦从中断子例行程序返回便恢复程序计数器(PC)值。专用缓冲器在中断或软件调用期间保存正确的返回地址,以用于压入RAM中。
相对于现有技术的进一步改进是通过利用单独的寄存器来提供随机存取存储器(RAM)读取地址存储和写入地址存储而实施的。专用RAM写入地址寄存器使得可拖延与指令相关联的写入操作。经拖延的写入操作使得指令能在给定的***时钟循环期间有效地完成操作,且在随后的***时钟循环中进行相关联的写入操作。经拖延的RAM写入能力使得可避免由于待决的写入操作而延误指令管线。单独的RAM读取地址存储和RAM写入地址存储寄存器还启用RAM中的数据通过能力:当两个寄存器都具备相同的RAM地址时,RAM数据存储寄存器中存在的数据立即可用于RAM输出,同时被写入经定址的存储区域。通过特征使得计算结果可用于以最小的时间延迟进行进一步处理,从而进一步启用指令管线的能力。
提供从只读存储器(ROM)到随机存取存储器(RAM)的指令预解码路径,其用于绕过正常的解码过程而加速寄存器操作的执行。另外,当寄存器操作遵循程序状态字(PSW)中的活动的寄存器组的改变时,寄存器组转发路径防止管线延误。
在没有中间的临时存储寄存器的情况下,提供从RAM数据输出直接到8位数据算术逻辑单元(ALU)的专用数据路径。还提供从算术逻辑单元(ALU)到RAM数据输入寄存器的专用数据路径。专用数据路径特征提供高处理量路径,其使得能从RAM中读取数据,进行处理,且随后将其写回RAM。这是相对于利用单个内部总线的现有技术8051微控制器的改进。
由专用数据路径、指令预解码和组转发以及单独的RAM读取和写入地址寄存器实现的组合改进允许在单个***时钟循环中完成寄存器递增指令,且在两个***时钟循环中完成寄存器间接递增。
附图说明
图1是现有技术中已知的8051微控制器的方框图。
图2是根据本发明的示范性实施例的CPU的管线部分的架构方框图。
图3是根据本发明的示范性实施例以单字节指令进行指令管线化的时序图。
图4是根据本发明的示范性实施例以单字节和二字节指令进行指令管线化的时序图。
图5是根据本发明的示范性实施例当执行单循环指令时算术逻辑单元(ALU)内的行为的图。
图6是根据本发明的示范性实施例当执行二循环指令时算术逻辑单元(ALU)内的行为的图。
图7是根据本发明的CPU的地址计算部分的示范性架构方框图。
图8A说明在常规指令执行期间根据本发明的示范性实施例的地址缓冲器的利用。
图8B说明在硬件中断执行期间根据本发明的示范性实施例的地址缓冲器的利用。
图8C说明在软件中断执行期间根据本发明的示范性实施例的地址缓冲器的利用。
图9是根据本发明的CPU的指令预解码和RAM存取部分的示范性架构方框图。
图10是根据本发明的示范性实施例的用于寄存器递增指令的时序图。
具体实施方式
参考图2,根据本发明的示范性实施例的中央处理单元(CPU)管线架构部分200包括具有第一数据输入、第二数据输入和数据输出的算术逻辑单元(ALU)210。在示范性实施例中,算术逻辑单元(ALU)210经配置以对八位二进制数字运算。算术逻辑单元(ALU)210的数据输出耦合到累加器寄存器(ACC)290,并耦合到随机存取存储器(RAM)270。另外,示范性实施例含有具有第一数据输入、第二数据输入和数据输出的地址算术单元(AAU)215。在示范性实施例中,地址算术单元(AAU)215经配置以对上六位二进制数字运算。地址算术单元(AAU)215的数据输出耦合到程序计数器(PC)220。
随机存取存储器(RAM)270经组织为256×8位,用于256个字节的总存储容量。程序计数器(PC)220进一步耦合到只读存储器(ROM)230,并耦合到地址算术单元(215)的第一数据输入。只读存储器(ROM)230用于存储CPU程序(即,待由CPU执行的指令序列)。在特定示范性实施例中,基于MCS-51指令集的程序驻存在只读存储器(ROM)230中。存储在程序计数器(PC)220中的地址值用于在只读存储器(ROM)230中选择待被传递到指令寄存器(IR)240的特定指令。指令寄存器(IR)240提供对指令的临时存储,之后才将所述指令传输到指令解码器250。指令解码器250耦合到地址算术单元(AAU)215的第二数据输入,并耦合到随机存取存储器(RAM)270。指令解码器250的功能是辨别指令所需的算术/逻辑运算,以及将必需数据传输到算术逻辑单元(ALU)。指令解码器250的额外功能是在需要时促使地址算术单元(AAU)215递增程序计数器(PC)220。
随机存取存储器(RAM)270进一步耦合到RAM地址寄存器(AR)260。RAM/ALU链接280将随机存取存储器(RAM)270耦合到算术逻辑单元(ALU)210的第二数据输入。算术逻辑单元(ALU)210的第一数据输入耦合到累加器寄存器(ACC)290。在本发明的特定示范性实施例中,RAM/ALU链接280提供八位专用数据路径以将来自随机存取存储器(RAM)270的数据(即,来自读取操作的数据)传送到算术逻辑单元(ALU)210。利用MCS-51指令集的现有技术中已知的微控制器通常采用共用的内部总线,其需要RAM将数据驱动到总线上,随后存储在临时寄存器中。将RAM/ALU链接280实施为专用数据路径在中央处理单元(CPU)管线架构部分200的性能方面提供重大改进。
所属领域的技术人员将认识到,由图2中的箭头指示数据信号路径方向。此外,应了解,可存在额外的逻辑区块(图2和以下图中未示),且其可耦合到所说明的区块,以便提供执行MCS-51指令集的全面能力。所属领域的技术人员将了解,仅展示必要用以实践本发明的那些区块,以避免使相关元件混乱。
现在注意图3,其为根据本发明以单字节指令进行指令管线化的第一示范性时序图300。第一示范性时序图300包括第一示范性***时钟波形310、第n个指令行为图320、第(n+1)个指令行为图330,和第(n+2)个指令行为图340。图3中以及以下含有时序图的参考图中的垂直虚线分离***时钟的时间间隔。垂直虚线与***时钟的正边缘转变相一致。
继续参考图3,其指示在***时钟时间间隔Tn期间,第n个指令经受获取操作。在随后的***时钟时间间隔Tn+1中,执行第n个指令。同时在***时钟时间间隔Tn+1期间,第n+1个指令经受获取操作。在随后的***时钟时间间隔Tn+2期间,第n个指令已完成执行。执行第n+1个指令,且第n+2个指令经受获取操作。指令获取与指令执行之间的并发性改进了CPU的整体计算性能,且被所属领域的技术人员已知为两级管线。参考图4介绍两级管线在执行单字节和二字节指令的组合时的操作特征,图4是根据本发明以单字节和二字节指令进行指令管线化的第二示范性时序图400。第二示范性时序图400包括第二示范性***时钟波形410、第n个指令行为图420、第(n+1)个二字节指令行为图430、第(n+2)个二字节指令行为图440,和第(n+3)个指令行为图450。对所述图的参考展示在***时钟时间间隔Tn期间,第n个指令经受获取操作。在随后的***时钟时间间隔Tn+1中,执行第n个指令。同时在***时钟时间间隔Tn+1期间,第n+1个二字节指令的第一指令字节经受获取操作。在随后的***时钟时间间隔Tn+2期间,第n个指令已完成执行,且第n+1个二字节指令的第二指令字节经受获取操作。在***时钟时间间隔Tn+3期间,执行第n+1个二字节指令,且第n+2个二字节指令的第一指令字节经受获取操作。在***时钟时间间隔Tn+4期间,第n+2个二字节指令的第二指令字节经受获取操作。在***时钟时间间隔Tn+5期间,执行第n+2个二字节指令,且第n+3个指令经受获取操作。
现在注意图5,其为根据本发明的示范性实施例当执行单循环指令时算术逻辑单元(ALU)210(图2)内的行为的图。单循环ALU操作图500包括单循环示范性***时钟波形510、单循环总执行时间行为图520、单循环寄存器操作数获取行为图530、单循环ALU操作执行行为图540、单循环结果写回行为图550,和单循环获取下一指令行为图560。在***时钟时间间隔T1内发生多个事件,所述***时钟时间间隔T1对应于单循环指令的总执行时间。具体来说,获取下一指令操作横跨整个***时钟时间间隔T1。寄存器操作数获取和ALU操作执行,其中每一者仅在***时钟时间间隔T1的一部分中活动。对图的进一步观察指示,ALU操作执行的一部分与寄存器操作数获取操作同时发生。另外,结果写回操作发生在下一***时钟时间间隔T2的开始处。以下将阐释结果写回操作的延迟。
现在注意图6,其为根据本发明的示范性实施例当执行二循环指令时算术逻辑单元(ALU)210内的行为的图。二循环ALU操作图600包括二循环示范性***时钟波形610、二循环总执行时间行为图620、二循环获取立即操作数图630、二循环ALU操作执行行为图640、二循环结果写回行为图650,和二循环获取下一指令行为图660。在***时钟时间间隔T1和***时钟时间间隔T2的时间间隔内发生多个事件,所述***时钟时间间隔T1和***时钟时间间隔T2的组合对应于二循环指令的总执行时间。获取立即操作数指令在***时钟时间间隔T1期间执行,且在分离***时钟时间间隔T1和***时钟时间间隔T2的二循环示范性***时钟波形610的上升时钟沿处结束。ALU操作执行与获取下一指令操作在***时钟时间间隔T2的开始处起始。ALU操作执行在二循环示范性***时钟波形610的下降沿、在***时钟时间间隔T2的近乎中间处结束。结果写回操作开始于二循环示范性***时钟波形610的上升沿、在***时钟时间间隔T3的开始处。获取下一指令操作在分离***时钟时间间隔T2和***时钟时间间隔T3的二循环示范性***时钟波形610的上升时钟沿处结束。
现在注意图7,其为CPU地址架构方框图700,所述CPU地址架构方框图700包括地址算术单元(AAU)215、程序计数器220、地址缓冲器730、第一多路复用器735、数据指针寄存器740、第二多路复用器750、第三多路复用器755、堆栈指针770、堆栈指针递增/递减单元780,和偏移寄存器790。由线指示CPU地址架构方框图700内的数据路径,且由箭头进一步指示数据流的方向。
第二多路复用器750耦合到程序计数器(PC)220、数据指针寄存器740,并耦合到地址算术单元(AAU)215的第一数据输入。多路复用器750选择程序计数器220中含有的地址值和数据指针寄存器740中含有的地址值中的一者,以用于由地址算术单元(AAU)215操作。第三多路复用器755耦合到累加器寄存器(ACC)290、恒定偏移值760、偏移寄存器790,并耦合到地址算术单元(AAU)215的第二数据输入。第三多路复用器755选择偏移寄存器790中含有的地址偏移值、累加器寄存器(ACC)290中含有的地址偏移值和恒定偏移值760中的一者,以用于由地址算术单元(AAU)215操作。在特定示范性实施例中,恒定偏移值760维持在值1(“1”),使得促使地址算术单元(AAU)215递增一指令地址值,以指向随后的地址值。
地址算术单元(AAU)215凭借全加器的能力对16位二进制数字运算。程序计数器(PC)220、地址缓冲器730和数据指针寄存器740每一者皆为十六位寄存器。现有技术中已知的利用MCS-51指令集的微控制器通常采用8位ALU来使数据指针寄存器递增。现有技术数据指针寄存器通常为16位寄存器。因此,现有技术中需要多个操作来执行递增操作:首先,将数据指针保存的地址的低字节部分加载到ALU中。将递增量1加到地址中,且将结果写回数据指针的低字节。接下来,将数据指针保存的地址的高字节部分加载到ALU中,且加上来自低字节递增操作的进位值。将结果写回到数据指针的高字节。本发明的地址算术单元(AAU)215的16位算术能力使得能用单个操作更新数据指针寄存器740。单个操作更新能力改进了***操作速度,并支持上文所阐释的指令管线化操作。
用每个指令执行来更新程序计数器(PC)220。由程序计数器(PC)220指向的指令是正被执行的指令之前的一个指令。将程序计数器(PC)220中的地址保持为在正被执行的指令之前一个指令提供了一种维持指令管线的手段。所属领域的技术人员将了解,程序计数器(PC)220充分快地进行更新,以维持处于当前指令之前。因为本发明提供与单个***时钟循环一样快的指令执行,所以程序计数器(PC)220也应该能够在单个***时钟循环中被更新。现有技术中已知的利用MCS-51指令集的微控制器通常具有专用递增器以用于程序计数器(PC)220,但采用8位ALU来通过将偏移加到程序计数器(PC)220而计算相对的分支地址。出于与数据指针寄存器740的论述相关联的上文阐释的原因,使用8位ALU来计算用于程序分支的下一程序计数器值需要多个时钟循环。地址算术单元(AAU)215的16位算术能力和通过第三多路复用器755连接到偏移寄存器790和累加器寄存器(ACC)290构成对现有技术的改进,且使得程序计数器(PC)220更新能够与指令执行管线齐步。
地址缓冲器730提供一种在不打断程序计数器(PC)220的递增操作的情况下处置中断和子例行程序调用的手段。地址缓冲器730耦合到第一多路复用器735,所述第一多路复用器735又耦合到程序计数器(PC)220和地址算术单元(AAU)215的数据输出。以下将更详细地阐释程序计数器(PC)220和地址缓冲器730的操作和关系。
堆栈指针770参考随机存取存储器(RAM)270(图2)的用作存储器堆栈的一部分,所述存储器堆栈提供对需频繁或以高速存取的变量的存取。堆栈指针递增/递减单元780的输入耦合到堆栈指针770的输出。堆栈指针递增/递减单元780的输出耦合到堆栈指针770的输入。在特定示范性实施例中,堆栈指针770是8位寄存器。现有技术中已知的以MCS-51指令集操作的微控制器利用单个8位ALU来用于执行算术和逻辑指令,并用于递增/递减堆栈指针寄存器。本发明的管线架构不允许算术逻辑单元(ALU)210用充分的时间来递增/递减堆栈指针。为了向堆栈指针770提供递增和递减操作,堆栈指针递增/递减单元780提供用于修改由堆栈指针770指向的地址的专用构件,而无需不必要地依靠算术逻辑单元(ALU)210的能力,从而提供对现有技术的另一改进。
现在将参考图8A、图8B和图8C阐释程序计数器(PC)220和地址缓冲器730的用途。参考图8A,其说明在常规的指令执行期间根据本发明的示范性实施例的地址缓冲器的利用,其包括缓冲器用途示范性***时钟波形810A、当前指令列表820A、程序计数器(PC)220内容列表830A和地址缓冲器730内容列表840A。在***时钟循环时间间隔Tn中,对当前指令列表820A的参考展示正在执行指令I1。在***时钟时间间隔Tn期间,程序计数器(PC)220中存在代表下一指令I2的地址的地址值A+1。类似地,在***时钟时间间隔Tn期间,地址缓冲器730中存在代表当前指令I1的地址的地址值A。
在***时钟循环Tn+1中,对当前指令列表820A的参考展示现在正在执行由程序计数器(PC)220在前一***时钟时间间隔Tn期间指向的指令I2。在***时钟时间间隔Tn+1期间,程序计数器(PC)220中存在代表下一指令I3的地址的地址值A+2,且地址缓冲器730中存在前一地址值A+1。在常规指令执行期间,即在没有软件或硬件中断(所属领域的技术人员还已知为硬调用)的情况下执行指令期间,指令执行和地址递增操作的进行以如上文所述的相同方式持续。在常规的指令执行期间,程序计数器(PC)220提供指令地址,且地址缓冲器730不用于维持指令管线。
参考图8B,其说明在中断执行期间根据本发明的示范性实施例的地址缓冲器的利用,其包括缓冲器用途示范性***时钟波形810B、当前指令列表820B、程序计数器(PC)220内容列表830B、地址缓冲器730内容列表840B、中断检测事件850,和动作概述860B。在***时钟时间间隔Tn中,对当前指令列表820B的参考展示执行指令I1。在***时钟时间间隔Tn期间,程序计数器(PC)220中存在代表I2指令的地址的地址值A+1。类似地,在***时钟时间间隔Tn期间,地址缓冲器730中存在代表当前指令I1的地址的地址值A。I2指令代表在不存在中断事件的情况下(即,在正常的程序执行期间)待执行的一连串指令中的下一指令。
在缓冲器用途示范性***时钟波形810B的对应于***时钟时间间隔Tn的末尾的上升沿处,发生中断检测事件850,其指示硬件(硬调用)中断的开始。在同一上升沿处,程序计数器(PC)220的前一值被传递到地址缓冲器730,使得在***时钟时间间隔Tn +1期间,地址缓冲器730含有代表指令I2的地址的地址值A+1。在***时钟时间间隔Tn+1期间,如当前指令列表820B所示,执行代表硬调用指令的第一循环的指令H1。第一硬调用指令不同于原本在缺少中断检测事件850的情况下执行的指令I2。动作概述860B提供在***时钟时间间隔Tn+1期间在CPU中发生的事件的额外细节:加载中断子例行程序的第一地址字节。
现在将着重于***时钟时间间隔Tn+1的额外方面:程序计数器(PC)220含有代表指令I3(其一般跟随指令I2)的地址的地址A+2。如地址缓冲器730内容列表840B所示,地址缓冲器730含有地址A+1。因此,地址缓冲器730保留在中断事件结束时重新开始正常的程序执行所需的指令I2的地址。
在***时钟时间间隔Tn+1后面的***时钟时间间隔Tn+2期间,如当前指令列表820B所示,执行代表硬调用指令的第二循环的指令H2。程序计数器(PC)220在每一***时钟循环期间继续由地址算术单元(AAU)215递增;因此,其在***时钟时间间隔Tn+2期间含有地址A+3。然而,地址缓冲器730保留在中断事件结束时重新开始正常的程序执行所需的地址A+1。动作概述860B提供在***时钟时间间隔Tn+2期间在CPU中发生的事件的额外细节:加载中断子例行程序的第二地址字节,且递增堆栈指针770:
SP←SP+1
在***时钟时间间隔Tn+2后面的***时钟时间间隔Tn+3期间,如当前指令列表820B所示,执行代表硬调用指令的第三循环的指令H3。程序计数器(PC)220在每一***时钟循环期间继续由地址算术单元(AAU)215递增;因此,其在***时钟时间间隔Tn+3期间含有地址A+4。然而,地址缓冲器730保留在中断事件结束时重新开始正常的程序执行所需的地址A+1。动作概述860B提供在***时钟时间间隔Tn+3期间在CPU中发生的事件的额外细节:明确地说,递增堆栈指针770:
SP←SP+1
且将地址缓冲器的低字节部分加载到由堆栈指针参考(指向)的当前RAM位置(在递增之前):
(SP)←BUFFER:7-0
其中表示法(SP)指示由堆栈指针770参考的RAM地址,且BUFFER:7-0代表含有地址A+1的地址缓冲器730的八个最低有效位(低字节部分)。应注意,在***时钟时间间隔Tn+3期间,堆栈指针递增和缓冲器压入RAM中是并行发生的,即,SP的递增不影响压入所使用的地址。
在***时钟时间间隔Tn+3后面的***时钟时间间隔Tn+4期间,如当前指令列表820B所示,执行代表硬调用指令的第四循环的指令H4。程序计数器(PC)220现在含有代表中断服务例行程序的第一指令地址的地址B。地址缓冲器730保留在中断事件结束时重新开始正常的程序执行所需的地址A+1。动作概述860B提供在***时钟时间间隔Tn+4期间在CPU中发生的事件的额外细节:发生至新程序位置(与地址B相关联)的跳跃,且将地址缓冲器的高字节部分加载到由堆栈指针770参考(指向)的当前RAM位置中:
(SP)←BUFFER:15-8
其中表示法(SP)指示由堆栈指针770参考的RAM地址,且BUFFER:15-8代表含有地址A+1的地址缓冲器730的八个最高有效位(高字节部分)。在高字节加载操作之后,地址A+1的低字节部分和高字节部分都被加载到堆栈存储器中,且可用于当在从中断执行返回时需要地址A+1时向CPU提供地址A+1。
参考图8C,其说明在软件子例行程序调用执行期间根据本发明的示范性实施例的地址缓冲器的利用,其包括缓冲器用途示范性***时钟波形810C、当前指令列表820C、程序计数器(PC)220内容列表830C、地址缓冲器730内容列表840C,和动作概述860C。在***时钟时间间隔Tn中,对当前指令列表820C的参考展示执行指令I1。在***时钟时间间隔Tn期间,程序计数器(PC)220中存在代表调用指令C1的地址的地址值A+1。类似地,在***时钟时间间隔Tn期间,地址缓冲器730中存在代表当前指令I1的地址的地址值A。
在缓冲器用途示范性***时钟波形810C的对应于***时钟时间间隔Tn的末尾的上升沿处,程序计数器(PC)220的前一值被传递到地址缓冲器730,使得在***时钟时间间隔Tn+1期间,地址缓冲器730含有代表指令C1的地址的地址值A+1。在***时钟时间间隔Tn+1期间,如当前指令列表820C所示,执行代表调用指令的第一循环的指令C1。动作概述860C提供在***时钟时间间隔Tn+1期间在CPU中发生的事件的额外细节:加载软件子例行程序的第一地址字节。
现在将着重于***时钟时间间隔Tn+1的额外方面:程序计数器(PC)220含有代表被调用子例行程序(其一般跟随指令C1)的第一地址字节的地址的地址A+2。如缓冲器地址内容列表840C所示,地址缓冲器730含有地址A+1。因此,地址缓冲器730保留当前指令C1的地址。
在***时钟时间间隔Tn+1后面的***时钟时间间隔Tn+2期间,如当前指令列表820C所示,执行代表调用指令的第二循环的指令C2。程序计数器(PC)220在每一***时钟循环期间继续由地址算术单元(AAU)215递增;因此,其在***时钟时间间隔Tn+2期间含有地址A+3。然而,地址缓冲器730保留地址A+1。动作概述860C提供在***时钟时间间隔Tn+2期间在CPU中发生的事件的额外细节:加载软件子例行程序的第二地址字节,且递增堆栈指针770:
SP←SP+1
在***时钟波形810C的对应于***时钟时间间隔Tn+2的末尾的上升沿处,程序计数器(PC)220的来自地址算术单元(AAU)215的递增值被传递到地址缓冲器730,使得在***时钟时间间隔Tn+3期间,地址缓冲器730含有代表指令12的地址的地址值A+4。I2是C1之后的在从子例行程序返回时应执行的指令。在***时钟时间间隔Tn+2后面的***时钟时间间隔Tn+3期间,如当前指令列表820C所示,执行代表调用指令的第三循环的指令C3。程序计数器(PC)220在每一***时钟循环期间继续由地址算术单元(AAU)215递增;因此,其在***时钟时间间隔Tn+3期间含有地址A+4。另外,地址缓冲器730含有在子例行程序结束时重新开始正常的程序执行所需的地址A+4。动作概述860C提供在***时钟时间间隔Tn+3期间在CPU中发生的事件的额外细节:明确地说,递增堆栈指针770:
SP←SP+1
且将地址缓冲器的低字节部分加载到由堆栈指针参考(指向)的当前RAM位置(在递增之前):
(SP)←BUFFER:7-0
其中表示法(SP)指示由堆栈指针770参考的RAM地址,且BUFFER:7-0代表含有地址A+4的地址缓冲器730的八个最低有效位(低字节部分)。应注意,在***时钟时间间隔Tn+3期间,堆栈指针递增和缓冲器压入RAM中是并行发生的,即,SP的递增不影响压入所使用的地址。
在***时钟时间间隔Tn+3后面的***时钟时间间隔Tn+4期间,如当前指令列表820C所示,执行代表硬调用指令的第四循环的指令C4。程序计数器(PC)220现在含有代表软件子例行程序的第一指令地址的地址B。地址缓冲器730保留在子例行程序结束时重新开始正常的程序执行所需的地址A+4。动作概述860C提供在***时钟时间间隔Tn+4期间在CPU中发生的事件的额外细节:发生至新程序位置(与地址B相关联)的跳跃,且将地址缓冲器的高字节部分加载到由堆栈指针770参考(指向)的当前RAM位置中:
(SP)←BUFFER:15-8
其中表示法(SP)指示由堆栈指针770参考的RAM地址,且BUFFER:15-8代表含有地址A+4的地址缓冲器730的八个最高有效位(高字节部分)。在高字节加载操作之后,地址A+4的低字节部分和高字节部分都被加载到堆栈存储器中,且可用于当在从子例行程序的执行返回时需要地址A+4时向CPU提供地址A+4。
通过参考上文对图8A、图8B和图8C的阐释,程序计数器(PC)220与地址缓冲器730之间的关系变得显而易见:具体来说,在正常的程序执行期间,程序计数器(PC)220指向下一指令地址,而地址缓冲器730指向当前地址值,且程序计数器(PC)220在***时钟循环期间递增。当地址缓冲器730通过第一多路复用器735接收程序计数器(PC)220的当前值时,其仅在指令执行结束时进行更新。程序计数器(PC)220持续更新,且所述更新可能发生在指令期间。因此,在指令执行循环的一部分期间,程序计数器(PC)220可能指向不同于地址缓冲器730所指向地址的地址。以此方式,程序计数器(PC)220的递增过程可以使得其能匹配于指令管线的执行速度的速率持续。如果发生中断,那么程序计数器(PC)220持续更新,但来自中断的返回地址可能被地址缓冲器730俘获。因此,与程序计数器(PC)220的递增过程并行地作出执行中断的决策。这代表对现有技术的改进,现有技术通常需要额外的逻辑来停止程序计数器的递增过程,并递减程序计数器以便恢复中断序列所需的返回地址。
现在注意图9,其为示范性指令预解码和RAM寻址方框图900,其包括耦合到算术逻辑单元(ALU)210的第一输入的累加器寄存器(ACC)290。多路复用器930选择RAM输出路径940A和交替的多路复用器输入940B中的一者,以用于耦合到算术逻辑单元(ALU)210的第二输入。算术逻辑单元(ALU)210的输出耦合到数据寄存器950。数据寄存器950进一步耦合到随机存取存储器(RAM)270。来自随机存取存储器(RAM)270的输出耦合到RAM输出路径940A、RAM读取地址寄存器(RAR)960A,并耦合到RAM写入地址寄存器(WAR)960B。RAM读取地址寄存器(RAR)960A耦合到随机存取存储器(RAM)270,并耦合到RAM写入地址寄存器(WAR)960B,所述RAM写入地址寄存器(WAR)960B进一步耦合到随机存取存储器(RAM)270。程序状态字(PSW)寄存器970和其输入990耦合到RAR多路复用器935,所述RAR多路复用器935又耦合到RAM读取地址寄存器(RAR)960A。来自只读存储器(ROM)230的输出耦合到指令寄存器(IR)240。指令寄存器(IR)240进一步耦合到指令解码器250。地址预解码路径980将只读存储器(ROM)230的输出耦合到RAM读取地址寄存器(RAR)960A。
RAM输出路径940A、多路复用器930和算术逻辑单元(ALU)210的组合代表对现有技术的改进。所属领域的技术人员将了解,临时存储寄存器通常构建在多路复用器930与算术逻辑单元(ALU)210之间,以支持内部总线架构。因此,将数据从随机存取存储器传递到ALU的现有技术过程需要将数据存储在临时存储寄存器中的中间步骤,随后才将数据传输到ALU。将数据存储在临时寄存器中的中间步骤需要加上最少一个***时钟循环作为处理时间的额外开销。本发明的RAM输出路径940A提供一种用于将数据从随机存取存储器(RAM)270直接传输到算术逻辑单元(ALU)210的手段,使得能够在单个***时钟循环中进行处理,且在同一单个***时钟循环中由数据寄存器950捕获结果。
由现在将阐释的地址预解码路径980提供对现有技术的额外改进。某些指令,具体来说为寄存器操作,需要用最少的时钟循环进行快速的执行,以实现上文所述的速度和性能目标。举例来说,本发明采用地址预解码路径980来实现MCS-51指令的快速执行:
 指令   操作   操作码
 INC RnINC@RiMOV@Ri,ACC   Rn←Rn+1(Ri)←(Ri)+1(Ri)←ACC   00001rrr0000011i1111011i
其中指令INC Rn是寄存器递增,且变量n可对应于值0-7。操作码的表示为rrr的部分代表对应于变量n的二进制编码。指令INC@Ri是间接的寄存器递增,且变量i采用0和1的可能值。MOV@Ri,ACC指令将累加器内容移动到寄存器Ri指向的地址中,且变量i采用0和1的可能值。
从只读存储器(ROM)230读取的所有指令都由地址预解码路径980传输到RAM读取地址寄存器(RAR)960A,其基于指令的最低有效的4位开始对指令的推测解码。RAM读取地址寄存器(RAR)960A含有通过所属领域的技术人员众所周知的方法而创建的少量解码逻辑,以检查操作码的位3:0。如果位3是“1”,那么解码逻辑假设用寄存器Rn进行递增操作,且用位2:0指定寄存器的值。如果操作码的位3:1等于二进制值011,那么假设寄存器间接递增,且用位0指定寄存器。
根据上文所述的方法推测性地评估每个操作码,且相应地加载RAM读取地址寄存器(RAR)960A。然而,某些操作码不需要从寄存器的立即读取。为节省功率,需要一种手段来允许仅必要的寄存器操作使用预解码地址读取RAM。通过在指令寄存器(IR)240中提供额外的预解码操作,来作出关于操作码实际上是否涉及寄存器读取操作的确定。指令寄存器(IR)240含有额外的逻辑来区分RAM读取操作和RAM写入操作。额外的逻辑防止RAM读取地址寄存器(RAR)960A起始随机存取存储器(RAM)270读取操作,除非操作码实际上需要读取操作。避免不必要的读取操作的起始防止了对随机存取存储器(RAM)270中的读出放大器和相关电路加电的浪费能量的步骤。
作为其它注意事项,8051微控制器架构提供四个寄存器组,每一者具有八个寄存器。必需一种手段来向RAM地址寄存器(AR)260(图2)提供关于四个可能的寄存器组中哪一者含有指令的寄存器目标的知识。由程序状态字(PSW)寄存器970将寄存器组信息提供给RAM读取地址寄存器(RAR)960A。具体来说,存储在程序状态字(PSW)寄存器970中的程序状态字的位4:3与来自操作码的位3:0结合,以向RAM读取地址寄存器(RAR)960A提供随机存取存储器(RAM)270中的地址目标。为防止在对程序状态字(PSW)寄存器970的写入之后存在利用地址预解码路径980进行寄存器读取的情况下出现管线延误,提供RAR多路复用器935以将PSW的新值从PSW输入990转发到地址预解码路径980,从而绕过程序状态字(PSW)寄存器970中的旧值。
在本发明的示范性实施例中,用主从正边缘触发触发器实施图9中所示的寄存器,具体来说为指令寄存器240、指令解码器250、累加器寄存器(ACC)290、数据寄存器950、RAM读取地址寄存器(RAR)960A、RAM写入地址寄存器(WAR)960B,和程序状态字(PSW)寄存器970。所属领域的技术人员将了解,可在图中未示的其它电路块中采用用于寄存器实施方案的这种方法。
现在参考图10,其为根据本发明的示范性实施例的寄存器递增时序图1000,其包括寄存器递增示范性***时钟波形1010、寄存器递增示范性当前指令(INSTR)列表1020、寄存器递增示范性程序计数器(PC)220内容列表1030、RAM读取地址寄存器(RAR)960A内容图1040、RAM写入地址寄存器(WAR)960B内容图1050、RAM数据输出(DOUT)内容图1060、RAM数据输入(DIN)内容图1070、算术逻辑单元(ALU)210内容列表1080,和指令示范性概述1090。在***时钟时间间隔Tn中,***执行一般性指令(由指令示范性概述1090中的星号指示);一般性指令与地址A-1相关联,且由寄存器递增示范性当前指令(INSTR)列表1020表示为I-1。对寄存器递增示范性程序计数器(PC)220内容列表1030的参考展示在***时钟时间间隔Tn期间,程序计数器(PC)220中存在与第一寄存器直接递增指令(INC RO)相关联的地址A0,与上文所述的指令管线的操作相一致。出于实例起见,寄存器R0的起始值假设为2。
在***时钟时间间隔Tn+1中,执行第一寄存器递增指令I0。程序计数器(PC)220含有下一指令(在此实例中,还是INC R0)的地址A1。RAM读取地址寄存器(RAR)960A含有0,如RAM读取地址寄存器(RAR)960A内容图1040所示。值0是目标寄存器地址,且被通过地址预解码路径980被加载到RAM读取地址寄存器(RAR)960A中,从而避免通过指令解码器250前进的延迟。在同一***时钟时间间隔Tn+1中,寄存器目标地址处的数据(值2)在随机存取存储器(RAM)270输出处可用,由RAM数据输出(DOUT)内容图1060指示。在***时钟时间间隔Tn+1结束之前,由算术逻辑单元(ALU)210使所述值递增,从而给予值3,如算术逻辑单元(ALU)210内容列表1080所指示。
在***时钟时间间隔Tn+2期间,ALU输出(值3)被传输到数据寄存器950,如RAM数据输入(DIN)内容图1070所指示。RAM写入地址寄存器(WAR)960B含有地址值0,其经加载以使得能写回来自第一寄存器直接递增指令(INC R0)的执行的结果。执行第二寄存器直接递增指令I+1,如寄存器递增示范性当前指令(INSTR)列表1020所示。RAM读取地址寄存器(RAR)960A含有0,如RAM读取地址寄存器(RAR)960A内容图1040所示。因为RAM读取地址寄存器(RAR)960A和RAM写入地址寄存器(WAR)960B指向同一地址(0),所以在随机存取存储器(RAM)270中发生数据通过,从而使值3以最小的延迟被传播到RAM输出,如RAM数据输出(DOUT)内容图1060所示。由算术逻辑单元(ALU)210将所述值3递增为值4,如算术逻辑单元(ALU)210内容列表1080所示,且所述结果在***时钟时间间隔Tn+2结束之前可用。因此,在两个***时钟循环的跨度中完成了两个直接寄存器递增操作。如上文所论述,对值4的写回在随后的***时钟时间间隔Tn+3(未图示)中完成。
在上文说明书中,已参考本发明的特定实施例描述了本发明。然而,所属领域的技术人员将了解,在不脱离所附权利要求书中陈述的本发明的更广泛的精神和范畴的情况下,可对本发明作出各种修改和改变。举例来说,由管线实施方案、专用堆栈指针递增/递减单元和应用单个16位单个ALU来组合地支持地址缓冲器、程序计数器和数据指针所构成的改进适用于各种微处理器和微控制器,包含利用除了MCS-51指令集之外的指令集的那些微处理器和微控制器。因此,说明书和图式应视为说明性的意义,而不是限制性的意义。

Claims (29)

1.一种架构,其在中央处理单元(CPU)内实施指令管线以执行指令,所述架构包括:
地址算术单元(AAU),其具有第一数据输入、第二数据输入和数据输出;
算术逻辑单元(ALU),其具有第一数据输入、第二数据输入和数据输出;
程序计数器(PC)寄存器,其耦合到所述地址算术单元(AAU)的所述数据输出;
只读存储器(ROM),其耦合到所述程序计数器,所述只读存储器进一步耦合到指令寄存器并耦合到指令解码器,所述指令解码器进一步耦合到所述算术逻辑单元的所述第一数据输入;以及
随机存取存储器(RAM),其耦合到所述指令解码器,所述随机存取存储器进一步耦合到所述算术逻辑单元(ALU)的所述输出并耦合到RAM地址寄存器。
2.根据权利要求1所述的架构,其中所述指令管线是两级管线。
3.根据权利要求2所述的架构,其中所述地址算术单元(AAU)能够对十六位数字执行运算。
4.根据权利要求3所述的架构,其中所述CPU经配置以执行MCS-51微控制器指令集。
5.一种架构,其在中央处理单元(CPU)内实施指令管线以执行指令,所述架构包括:
地址算术单元(AAU),其具有第一数据输入、第二数据输入和数据输出;
程序计数器(PC)寄存器,其耦合到所述地址算术单元(AAU)的所述数据输出;
数据指针寄存器,其耦合到所述地址算术单元(AAU)的所述数据输出;
地址缓冲器寄存器,其耦合到所述地址算术单元(AAU)的所述数据输出;
多路复用器,其耦合到所述地址算术单元的所述第一数据输入,所述多路复用器经配置以将所述程序计数器(PC)寄存器的输出和所述数据指针寄存器的输出中的一者耦合到所述地址算术单元(AAU)的所述第一数据输入;
堆栈指针寄存器,其具有输入和输出,以及
堆栈指针递增/递减单元,其具有耦合到所述堆栈指针寄存器的所述输出的输入,所述堆栈指针递增/递减单元进一步具有耦合到所述堆栈指针寄存器的所述输入的输出,所述堆栈指针递增/递减单元进一步经配置以响应于压入操作和退栈操作而分别递增和递减所述堆栈指针寄存器。
6.根据权利要求5所述的架构,其中所述指令管线是两级管线。
7.根据权利要求5所述的架构,其中所述地址算术单元(AAU)能够对十六位数字执行运算。
8.根据权利要求7所述的架构,其中所述程序计数器(PC)寄存器、所述数据指针寄存器和所述地址缓冲器寄存器中每一者都是十六位寄存器。
9.根据权利要求5所述的架构,其中所述堆栈指针寄存器是八位寄存器。
10.根据权利要求5所述的架构,其中所述CPU经配置以执行MCS-51微控制器指令集。
11.一种在中央处理单元(CPU)中实施指令管线的方法,所述方法包括:
在程序指令的执行期间,利用专用递增/递减单元来改变堆栈指针的值;
在当前指令的执行期间,递增程序计数器寄存器以指向下一指令地址;
在非中断指令执行结束时将当前指令地址存储在地址缓冲器中;以及
允许所述程序计数器寄存器在中断执行期间递增,同时在所述中断执行期间将中断返回地址维持在所述地址缓冲器中。
12.根据权利要求11所述的方法,其进一步包括:在非中断指令的执行期间执行获取单字节指令与获取多字节指令的第一字节中的一者。
13.根据权利要求11所述的方法,其进一步包括:在所述程序计数器、所述地址缓冲器与数据指针之间共用十六位地址算术单元(AAU)。
14.根据权利要求11所述的方法,其进一步包括:在获取操作码时,提供对寄存器直接和寄存器间接随机存取存储器(RAM)地址中的一者的先行预解码。
15.根据权利要求11所述的方法,其进一步包括:在指令循环期间同时执行对随机存取存储器(RAM)的读取操作和写入操作。
16.根据权利要求11所述的方法,其进一步包括:在指令循环期间执行对随机存取存储器(RAM)的读取操作且延迟对所述随机存取存储器(RAM)的写入操作,直到下一指令循环为止。
17.根据权利要求11所述的方法,其进一步包括:当对随机存取存储器(RAM)的读取操作和写入操作以所述随机存取存储器(RAM)中的同一地址位置为目标时,通过所述随机存取存储器(RAM)转发数据。
18.根据权利要求11所述的方法,其进一步包括:提供从随机存取存储器(RAM)的输出到数据算术逻辑单元(ALU)的路径,所述数据路径在单个***时钟时间间隔内将数据从所述随机存取存储器(RAM)传送到所述算术逻辑单元(ALU)。
19.一种架构,其在中央处理单元(CPU)内实施指令管线以执行指令,所述架构包括:
数据算术逻辑单元(ALU),其具有第一数据输入、第二数据输入和数据输出;
数据寄存器,其耦合到所述算术逻辑单元的所述数据输出,并耦合到随机存取存储器(RAM);
累加器,其耦合到所述数据算术逻辑单元(ALU)的所述第一数据输入;
RAM输出路径,其将所述随机存取存储器的输出耦合到所述数据算术逻辑单元(ALU)的所述第二数据输入;
RAM写入地址寄存器,其耦合到所述随机存取存储器(RAM)的所述输出,并耦合到所述随机存取存储器(RAM)的写入地址输入;
RAM读取地址寄存器,其耦合到所述随机存取存储器(RAM)的读取地址输入,所述RAM读取地址寄存器进一步耦合到所述随机存取存储器(RAM)的所述输出,并耦合到所述RAM写入地址寄存器;
只读存储器,其耦合到指令寄存器,所述指令寄存器进一步耦合到指令解码器;
地址预解码路径,其将所述只读存储器耦合到所述RAM读取地址寄存器;以及
程序状态字(PSW)寄存器,其耦合到所述RAM读取地址寄存器。
20.根据权利要求19所述的架构,其进一步包括PSW转发路径,所述PSW转发路径将所述程序状态字(PSW)寄存器的输入耦合到所述RAM读取地址寄存器。
21.根据权利要求20所述的架构,其中所述数据算术逻辑单元能够对八位数据执行运算。
22.根据权利要求21所述的架构,其中所述CPU经配置以执行MCS-51微控制器指令集。
23.根据权利要求22所述的架构,其中所述指令管线是两级管线。
24.一种架构,其在中央处理单元(CPU)内实施指令管线以执行指令,所述架构包括:
地址算术单元(AAU)构件,其用于对第一数据输入和第二数据输入执行算术运算;
程序计数器(PC)构件,其用于存储程序计数器(PC)地址;
数据指针构件,其用于存储数据地址;
地址缓冲器构件,其用于缓冲指令地址;
多路复用器构件,其用于将所述程序计数器(PC)构件和所述数据指针寄存器构件中的一者耦合到所述ALU构件;
堆栈指针构件,其用于存储堆栈地址;以及
堆栈指针递增/递减构件,其用于响应于压入操作和退栈操作而分别递增和递减所述堆栈指针寄存器。
25.根据权利要求24所述的架构,其中所述算术地址单元(AAU)构件能够对十六位数字执行运算。
26.根据权利要求24所述的架构,其中所述程序计数器(PC)构件、所述数据指针构件和所述地址缓冲器构件中每一者都用于存储十六位二进制数字。
27.根据权利要求24所述的架构,其中所述堆栈指针构件存储八位二进制数字。
28.根据权利要求24所述的架构,其中所述CPU经配置以执行MCS-51微控制器指令集。
29.一种在中央处理单元(CPU)内实施指令管线的方法,所述方法包括:
用多个专用数据路径耦合替换内部总线,所述替换所述内部总线的方法进一步由以下步骤组成:
在程序指令的执行期间,利用专用递增/递减单元来改变堆栈指针的值;
在非中断指令执行结束时,将当前指令地址存储在地址缓冲器中;以及
允许所述程序计数器寄存器在中断执行期间递增,同时在所述中断执行期间将中断返回地址维持在所述地址缓冲器中;
在所述程序计数器、所述地址缓冲器与数据指针之间共用十六位地址算术单元(AAU);
当对随机存取存储器(RAM)的读取操作和写入操作以所述随机存取存储器(RAM)中的同一地址位置为目标时,通过所述随机存取存储器(RAM)转发数据;以及
提供从随机存取存储器(RAM)的输出到数据算术逻辑单元(ALU)的路径,所述数据路径在单个***时钟时间间隔内将数据从所述随机存取存储器(RAM)传送到所述算术逻辑单元(ALU)。
CNA2006800071570A 2005-03-04 2006-01-25 单循环低功率中央处理单元架构 Pending CN101133390A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/071,966 US20060200650A1 (en) 2005-03-04 2005-03-04 Single-cycle low-power CPU architecture
US11/071,966 2005-03-04

Publications (1)

Publication Number Publication Date
CN101133390A true CN101133390A (zh) 2008-02-27

Family

ID=36945387

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2006800071570A Pending CN101133390A (zh) 2005-03-04 2006-01-25 单循环低功率中央处理单元架构

Country Status (6)

Country Link
US (2) US20060200650A1 (zh)
CN (1) CN101133390A (zh)
AU (1) AU2006221114A1 (zh)
DE (1) DE112006000514T5 (zh)
TW (1) TW200703103A (zh)
WO (1) WO2006096250A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112348180A (zh) * 2020-11-27 2021-02-09 Oppo广东移动通信有限公司 数据处理装置及配置方法、神经网络处理器、芯片、设备

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060200650A1 (en) * 2005-03-04 2006-09-07 Froemming Benjamin F Single-cycle low-power CPU architecture
US7797516B2 (en) * 2007-03-16 2010-09-14 Atmel Corporation Microcontroller with low-cost digital signal processing extensions
US8370606B2 (en) * 2007-03-16 2013-02-05 Atmel Corporation Switching data pointers based on context
TW200849088A (en) * 2007-06-12 2008-12-16 Holtek Semiconductor Inc Power-saving data processor
JP5300428B2 (ja) * 2008-11-13 2013-09-25 ルネサスエレクトロニクス株式会社 演算装置及び演算処理方法
US9405534B2 (en) * 2013-01-21 2016-08-02 Tom Yap Compound complex instruction set computer (CCISC) processor architecture

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5165039A (en) * 1986-03-28 1992-11-17 Texas Instruments Incorporated Register file for bit slice processor with simultaneous accessing of plural memory array cells
US5193205A (en) * 1988-03-01 1993-03-09 Mitsubishi Denki Kabushiki Kaisha Pipeline processor, with return address stack storing only pre-return processed address for judging validity and correction of unprocessed address
JPH05113929A (ja) * 1991-10-22 1993-05-07 Mitsubishi Electric Corp マイクロコンピユータ
JP3184096B2 (ja) * 1995-08-31 2001-07-09 株式会社東芝 半導体記憶装置
JPH1091443A (ja) * 1996-05-22 1998-04-10 Seiko Epson Corp 情報処理回路、マイクロコンピュータ及び電子機器
US6262936B1 (en) * 1998-03-13 2001-07-17 Cypress Semiconductor Corp. Random access memory having independent read port and write port and process for writing to and reading from the same
JP3344316B2 (ja) * 1998-05-01 2002-11-11 ヤマハ株式会社 ディジタル信号処理装置及び信号処理システム
US6345353B2 (en) * 1999-07-20 2002-02-05 Microchip Technology Incorporated Stack pointer with post increment/decrement allowing selection from parallel read/write address outputs
US6262396B1 (en) * 2000-03-07 2001-07-17 Hatco Corporation Oven device for rapid heating of food items
GB2419006B (en) * 2002-04-22 2006-06-07 Micron Technology Inc Providing a register file memory with local addressing in a SIMD parallel processor
TW200416598A (en) * 2003-02-24 2004-09-01 Weltrend Semiconductor Inc Method for increasing the instruction execution speed of single chip microcomputer
US20060200650A1 (en) * 2005-03-04 2006-09-07 Froemming Benjamin F Single-cycle low-power CPU architecture

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112348180A (zh) * 2020-11-27 2021-02-09 Oppo广东移动通信有限公司 数据处理装置及配置方法、神经网络处理器、芯片、设备

Also Published As

Publication number Publication date
WO2006096250A2 (en) 2006-09-14
TW200703103A (en) 2007-01-16
US20060200650A1 (en) 2006-09-07
AU2006221114A1 (en) 2006-09-14
WO2006096250A3 (en) 2007-08-16
US20090319760A1 (en) 2009-12-24
DE112006000514T5 (de) 2008-01-10

Similar Documents

Publication Publication Date Title
JP5512803B2 (ja) ベクトル命令を取り扱うためのデータ処理装置および方法
CN101133390A (zh) 单循环低功率中央处理单元架构
CN1327340C (zh) 处理器和编译器
KR100498482B1 (ko) 명령어수에 수행 주기 회수를 가중치로 사용하여 쓰레드를페치하는 동시 다중 쓰레딩 프로세서 및 그 방법
CN102298352B (zh) 高性能可编程控制器专用处理器体系结构及其实现方法
CN109643233A (zh) 具有带读取和读取/前进操作数编码的流引擎的数据处理设备
KR101748506B1 (ko) 실시간 명령어 추적 프로세서들, 방법들 및 시스템들
CN102184092A (zh) 基于流水线结构的专用指令集处理器
CN101373427A (zh) 程序执行控制装置
CN102508635A (zh) 一种处理器装置及其循环处理方法
RU2359315C2 (ru) Микропроцессор гибридный
CN109690497B (zh) 用于通过输入参数来区分函数性能的***和方法
CN110427337B (zh) 基于现场可编程门阵列的处理器内核及其运行方法
KR20180132085A (ko) 복소수 승산 명령
CN104346132B (zh) 应用于智能卡虚拟机运行的控制装置及智能卡虚拟机
US11645078B2 (en) Detecting a dynamic control flow re-convergence point for conditional branches in hardware
EP0788241A2 (en) Method for implementing the add-compare-select operation in a Viterbi decoder
CN100451951C (zh) Risc cpu中的5+3级流水线设计方法
CN100444107C (zh) 优化的处理器和指令对准
JP2000276381A (ja) タスク実行時間の見積もり方法
KR940000027B1 (ko) 생산라인의 고성능 명령어 실행방법 및 장치
KR100267089B1 (ko) 스칼라/벡터연산이조합된단일명령복수데이터처리
CN116501389A (zh) 指令缓冲单元、处理器及计算机***
US7831979B2 (en) Processor with instruction-based interrupt handling
KR20130066402A (ko) 트레이스 데이터 저장 장치 및 방법

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1120122

Country of ref document: HK

C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Open date: 20080227

REG Reference to a national code

Ref country code: HK

Ref legal event code: WD

Ref document number: 1120122

Country of ref document: HK