CN111475010B - 管线式处理器及节电方法 - Google Patents
管线式处理器及节电方法 Download PDFInfo
- Publication number
- CN111475010B CN111475010B CN201911045644.1A CN201911045644A CN111475010B CN 111475010 B CN111475010 B CN 111475010B CN 201911045644 A CN201911045644 A CN 201911045644A CN 111475010 B CN111475010 B CN 111475010B
- Authority
- CN
- China
- Prior art keywords
- memory
- instruction
- volatile memory
- program counter
- content information
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 36
- 230000015654 memory Effects 0.000 claims abstract description 642
- 230000004913 activation Effects 0.000 claims abstract description 47
- 230000004044 response Effects 0.000 claims description 18
- 230000009849 deactivation Effects 0.000 claims description 11
- 230000003213 activating effect Effects 0.000 claims description 9
- 238000010586 diagram Methods 0.000 description 10
- 238000012986 modification Methods 0.000 description 8
- 239000004065 semiconductor Substances 0.000 description 8
- 238000013500 data storage Methods 0.000 description 3
- 101100294343 Neurospora crassa (strain ATCC 24698 / 74-OR23-1A / CBS 708.71 / DSM 1257 / FGSC 987) nop-16 gene Proteins 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 101000634768 Homo sapiens Nucleolar protein 16 Proteins 0.000 description 1
- 102100029102 Nucleolar protein 16 Human genes 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001143 conditioned effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- 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
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3243—Power saving in microcontroller unit
-
- 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
-
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0625—Power saving in storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- 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/30181—Instruction operation extension or modification
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/321—Program or instruction counter, e.g. incrementing
-
- 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/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供了管线式处理器,用于执行指令的管线式处理,其经历多个阶段。管线式处理器包括存储器激活指示器和存储器控制器。存储器激活指示器用于存储内容信息,该内容信息指示在执行当前指令时是否激活第一易失性存储器和/或第二易失性存储器。存储器控制器用于根据存储在该存储器激活指示器中的该内容信息,在当前指令的多个阶段的特定阶段中控制该第一易失性存储器和/或该第二易失性存储器的激活。
Description
技术领域
本申请通常涉及一种计算器(computer)系统,以及更特别地,涉及一种管线式处理器(pipelined processor)以及用于管线式处理器中的存储器子系统(memory sub-system)的节电(power-saving)方法。
背景技术
许多处理装置利用缓存(cache,亦被称为高速缓冲存储器)来减少对存储在存储器中的信息进行存取/访问(access)所需的平均时间。缓存是一种体积较小、速度较快的存储器,用于存储预期会相对频繁使用的指令和/或数据的副本。例如,诸如中央处理单元(central processing unit,CPU)、图形处理单元(graphical processing unit,GPU)、加速处理单元(accelerated processing units,APU)等的处理器通常与缓存或缓存存储器组件的层次结构相关联。预期将由CPU使用的指令或数据被从主存储器(相对较大和较慢)移入缓存。当CPU需要读取或写入主存储器中的位置时,它首先检查以查看所需的存储器位置是否被包括在缓存中。如果此位置被包括在缓存中(缓存命中),则CPU能够对缓存存储器位置中的副本执行读取或写入操作。如果此位置未被包括在缓存中(缓存未命中),则CPU需要存取被存储在主存储器中的信息,在一些情况下,可以从主存储器中复制信息并将其添加到缓存中。缓存的适当配置和操作能够将存储器访问的平均延迟降低到低于主存储器的延迟的值,使其接近于缓存存储器的值。
一种用于CPU缓存存储器的被广泛使用的体系结构是分层(hierarchical)缓存,其将缓存划分为两个级别(level),称为L1缓存和L2缓存。L1缓存通常比L2缓存更小和更快,而L2缓存比主存储器更小和更快。CPU首先尝试在L1缓存中查找所需的存储器位置,然后,当在L1缓存中无法找到存储器位置时继续在L2缓存和主存储器中查找。L1缓存可以进一步细分为单独的(separate)L1缓存,用于存储指令(L1-I)和数据(L1-D)。L1-I缓存可被放置在需要比数据更频繁地存取的指令的实体附近,而L1-D被放置在需要比指令更频繁地存取的数据的实体附近。L2缓存通常与L1-I和L1-D缓存都关联,且能够存储从主存储器获得/读取(retrieve)的指令或数据的副本。常用指令从L2高速缓存被复制到L1-I缓存中,而常用数据可以从L2缓存被复制到L1-D缓存中。利用此配置,L2缓存被称为统一(unified)缓存。
发明内容
在下面的实施例中将参照附图给出详细描述。
本发明提供了一种管线式处理器,用于对要输入的指令执行管线式处理,该指令经历多个阶段。管线式处理器包括存储器激活指示器和存储器控制器。存储器激活指示器用于存储内容信息,该内容信息指示在执行当前指令时是否激活第一易失性存储器和/或第二易失性存储器。存储器控制器用于根据存储在该存储器激活指示器中的该内容信息,在当前指令的多个阶段的特定阶段中控制该第一易失性存储器和/或该第二易失性存储器的激活。
在一实施例中,该存储器激活指示器为程序计数器,该特定阶段为取指令阶段,以及,该第一易失性存储器和该第二易失性存储器分别为该管线式处理器中用于存储(多条)指令的指令缓存和指令存储器。
在一实施例中,该存储器控制器根据存储在该程序计数器中的程序计数器值和该内容信息,在当前指令的该特定阶段中控制该第一易失性存储器和/或该第二易失性存储器的激活和停用。
在一实施例中,用于当前指令的程序计数器值和内容信息是在执行上一条指令的过程中基于顺序获取指令的方式确定出来的。
在一实施例中,响应于存储在该程序计数器中的该程序计数器值等于当前指令所指示的程序地址,该存储器控制器确定出存储在该程序计数器中的该内容信息是有效的,并根据存储在该程序计数器中的该内容信息在当前指令的该特定阶段中激活该第一易失性存储器或该第二易失性存储器;以及,响应于存储在该程序计数器中的该程序计数器值不等于当前指令所指示的程序地址,该存储器控制器确定出存储在该程序计数器中的该内容信息是无效的,并在当前指令的该特定阶段中激活该第一易失性存储器和该第二易失性存储器这两者。
在另一实施例中,该存储器激活指示器为该管线式处理器中的寄存器堆,该特定阶段为执行阶段,以及,该第一易失性存储器和该第二易失性存储器分别为该管线式处理器中用于存储数据的数据缓存和数据存储器。
在一实施例中,该第一易失性存储器在逻辑地址中具有第一范围,以及,该第二易失性存储器在逻辑地址中具有第二范围,其中,该第一范围之后是该第二范围,且该第一范围和该第二范围是连续的。
在一实施例中,该内容信息包括存储器信息和距离信息,该存储器信息指示在该执行阶段中是否激活该第一易失性存储器和/或该第二易失性存储器,以及,该距离信息指示当前指令的地址到该第一易失性存储器的边界的距离是否长于预定长度。
在一实施例中,在该存储器信息指示激活第一易失性存储器的情况下,响应于该距离信息指示该当前指令的地址到该第一易失性存储器的边界的距离长于该预定长度(例如,偏移量小于或等于该预定长度),该存储器控制器在当前指令的执行阶段中激活该第一易失性存储器并停用该第二易失性存储器。
在一实施例中,响应于该距离信息指示该下一条指令的地址到该第一易失性存储器的边界的距离等于或小于该预定长度(例如,偏移量大于0),该存储器控制器在当前指令的执行阶段中激活该第一易失性存储器和该第二易失性存储器这两者。
在一实施例中,该存储器控制器还利用当前指令的执行阶段的结果和用于下一条指令的内容信息来更新阶段寄存器;其中,在当前指令的写回阶段中,该存储器控制器利用存储在该阶段寄存器中的值更新该寄存器堆;其中,在下一条指令的执行阶段中,该存储器控制器获取存储在该寄存器堆中的该内容信息,以确定是否激活该第一易失性存储器和/或该第二易失性存储器。
在一实施例中,该存储器控制器还利用当前指令的执行阶段的结果和用于下一条指令的内容信息来更新阶段寄存器;其中,在下一条指令的执行阶段中,该存储器控制器获取被存储在该阶段寄存器中的该内容信息,以确定是否激活该第一易失性存储器和/或该第二易失性存储器。
在一实施例中,该存储器激活指示器为该管线式处理器中的寄存器堆,该特定阶段为执行阶段,以及,该第一易失性存储器和该第二易失性存储器分别为管线式处理器的内部存储器和外部存储器。
本发明还提供了一种节电方法,其用在管线式处理器的存储器子系统中,其中,管线式处理器包括多个阶段,该存储器子系统包括第一易失性存储器和第二易失性存储器,该方法包括以下步骤:从该管线式处理器中的存储器激活指示器获取内容信息,其中,该内容信息指示在执行当前指令时是否激活该第一易失性存储器和/或该第二易失性存储器;以及,根据存储在该存储器激活指示器中的该内容信息,在当前指令的多个阶段的特定阶段中控制该第一易失性存储器和/或该第二易失性存储器的激活。
在一实施例中,该存储器激活指示器为程序计数器,该特定阶段为取指令阶段,以及,该第一易失性存储器和该第二易失性存储器分别为该管线式处理器中用于存储指令的指令缓存和指令存储器。
在一实施例中,该节电方法进一步包括:根据存储在该程序计数器中的程序计数器值和该内容信息,在当前指令的该特定阶段中控制该第一易失性存储器和/或该第二易失性存储器的激活和停用,其中,用于当前指令的程序计数器值和内容信息是在执行上一条指令的过程中基于顺序获取指令的方式确定出来的。
在一实施例中,该节电方法还包括:响应于存储在该程序计数器中的该程序计数器值等于当前指令所指示的程序地址,确定出存储在该程序计数器中的该内容信息是有效的,并根据存储在该程序计数器中的该内容信息在当前指令的该特定阶段中激活该第一易失性存储器或该第二易失性存储器;以及,响应于存储在该程序计数器中的该程序计数器值不等于当前指令所指示的程序地址,确定出存储在该程序计数器中的该内容信息是无效的,并在当前指令的该特定阶段中激活该第一易失性存储器和该第二易失性存储器这两者。
在一实施例中,该存储器激活指示器为该管线式处理器中的寄存器堆,该特定阶段为执行阶段,以及,该第一易失性存储器和该第二易失性存储器分别是为该管线式处理器中用于存储数据的数据缓存和数据存储器。
在一实施例中,该第一易失性存储器在逻辑地址中具有第一范围,以及,该第二易失性存储器在逻辑地址中具有第二范围,其中,该第一范围之后是该第二范围,且该第一范围和该第二范围是连续的。
在一实施例中,该内容信息包括存储器信息和距离信息,该存储器信息指示在该执行阶段中是否激活该第一易失性存储器和/或该第二易失性存储器,以及,该距离信息指示当前指令的地址到该第一易失性存储器的边界的距离是否长于预定长度。
在一实施例中,该节电方法还包括:在该存储器信息指示激活第一易失性存储器的情况下,响应于该距离信息指示该当前指令的地址到该第一易失性存储器的边界的距离长于该预定长度,在当前指令的执行阶段中激活该第一易失性存储器并停用该第二易失性存储器。
在一实施例中,该节电方法还包括:响应于该距离信息指示该当前指令的地址到该第一易失性存储器的边界的距离等于或小于该预定长度,在当前指令的执行阶段中激活该第一易失性存储器和该第二易失性存储器这两者。
在一实施例中,该节电方法还包括:利用当前指令的执行阶段的结果和用于下一条指令的内容信息更新阶段寄存器;在当前指令的写回阶段中,利用存储在该阶段寄存器中的值更新该寄存器堆;以及,在下一条指令的执行阶段中,获取存储在该寄存器堆中的该内容信息,以确定是否激活该第一易失性存储器和/或该第二易失性存储器。
在一实施例中,该节电方法还包括:利用当前指令的执行阶段的结果和用于下一条指令的内容信息更新阶段寄存器;以及,在下一条指令的执行阶段中,获取被存储在该阶段寄存器中的该内容信息,以确定是否激活该第一易失性存储器和/或该第二易失性存储器。
在一实施例中,该存储器激活指示器为该管线式处理器中的寄存器堆,该特定阶段为执行阶段,以及,该第一易失性存储器和该第二易失性存储器分别为管线式处理器的内部存储器和外部存储器。
本领域技术人员在阅读附图所示优选实施例的下述详细描述之后,可以毫无疑义地理解本发明的这些目的及其它目的。详细的描述将参考附图在下面的实施例中给出。
附图说明
通过阅读后续的详细描述以及参考附图所给的示例,可以更全面地理解本发明。
图1是根据本发明实施例的半导体装置(semiconductor device)的方框示意图。
图2是根据本发明实施例的CPU中的指令管线(instruction pipeline)的方框示意图。
图3是根据本发明另一实施例的CPU的指令管线中的执行(EX)阶段(stage)的方框示意图。
图4是根据本发明实施例的用于在管线式处理器中使用的节电方法的流程示意图。
在下面的详细描述中,为了说明的目的,阐述了许多具体细节,以便本领域技术人员能够更透彻地理解本发明实施例。然而,显而易见的是,可以在没有这些具体细节的情况下实施一个或多个实施例,不同的实施例可根据需求相结合,而并不应当仅限于附图所列举的实施例。
具体实施方式
以下描述为本发明实施的较佳实施例,其仅用来例举阐释本发明的技术特征,而并非用来限制本发明的范畴。在通篇说明书及权利要求书当中使用了某些词汇来指称特定的元件,所属领域技术人员应当理解,制造商可能会使用不同的名称来称呼同样的元件。因此,本说明书及权利要求书并不以名称的差异作为区别元件的方式,而是以元件在功能上的差异作为区别的基准。本发明中使用的术语“元件”、“系统”和“装置”可以是与计算机相关的实体,其中,该计算机可以是硬件、软件、或硬件和软件的结合。在以下描述和权利要求书当中所提及的术语“包含”和“包括”为开放式用语,故应解释成“包含,但不限定于…”的意思。此外,术语“耦接”意指间接或直接的电气连接。因此,若文中描述一个装置耦接于另一装置,则代表该装置可直接电气连接于该另一装置,或者透过其它装置或连接手段间接地电气连接至该另一装置。
其中,除非另有指示,各附图的不同附图中对应的数字和符号通常涉及相应的部分。所绘制的附图清楚地说明了实施例的相关部分且并不一定是按比例绘制。
文中所用术语“基本”或“大致”是指在可接受的范围内,本领域技术人员能够解决所要解决的技术问题,基本达到所要达到的技术效果。举例而言,“大致等于”是指在不影响结果正确性时,技术人员能够接受的与“完全等于”有一定误差的方式。
图1是根据本发明实施例的半导体装置的方框示意图。如图1所示,半导体装置100包括中央处理单元(CPU)105、主存储器(main memory)150和存储装置(storage device)160。其中,中央处理单元(CPU)105进一步包括存储器子系统11和12、处理核(processingcore)110、寄存器堆(register file)125,以及总线接口单元(bus interface unit,BIU)130。CPU 105通过系统总线(system bus)115耦接到主存储器150和存储装置160。CPU 105被配置为存取/访问被存储在主存储器150中的指令和/或数据。然而,如本领域普通技术人员将理解的那样,CPU 105意在说明,在替代实施例中,除CPU 105之外可以包括其它类型的处理器,诸如图形处理单元(GPU)、数字信号处理器(DSP)、加速处理单元(APU)、协处理器(co-processor)、应用处理器等,或者,其它类型的处理器可以替代CPU 105。在所示的实施例中,CPU 105包括至少一个处理核110,其用于执行(execute)指令和/或操作(manipulate)数据。在可选地变型实施例中,CPU 105可包括彼此一起工作的多个处理核110。
CPU 105还实现了分级(或多级)缓存系统,该系统用于通过将选定的指令和/或数据存储在缓存中来加快对指令和/或数据的存取/访问。然而,本发明所属领域普通技术人员应当理解,装置100的替代实施例可以实现CPU 105的不同配置,例如使用外部缓存的配置。此外,本申请中描述的技术可以应用于其它处理器,诸如图形处理单元(GPU)、加速处理单元(APU)等。
存储器子系统11包括存储器控制器(memory controller)121、指令缓存(instruction cache,I-Cache)126和指令存储器(instruction memory,I-Memory)127。指令缓存126和指令存储器127用作L1指令(L1instruction,L1-I)存储器。存储器子系统12包括存储器控制器122、数据缓存(data cache,D-Cache)123和数据存储器(data memory,D-Memory)124。资料缓存123和数据存储器124用作L1数据(L1data,L1-D)存储器。例如,数据缓存(D-Cache)123、数据存储器(D-Memory)124、指令缓存(I-Cache)126和指令存储器(I-Memory)127可以由单独的静态随机存取存储器(static random access memory,SRAM)来实现,但本发明实施例并不限于此。在一些实施例中,数据存储器124和指令存储器127可以是紧密耦合的存储器(tightly-coupled memory,TCM)。
主存储器150可以由动态随机存取存储器(dynamic random access memory,DRAM)来实现,该动态随机存取存储器(DRAM)具有比数据缓存123和数据存储器124更大的存储器容量、更长的访问时间及更高的功耗。存储装置160可以是非易失性存储器(non-volatile memory),诸如硬盘驱动器(hard-disk drive,HDD)、固态磁盘(solid-statedisk,SSD)、闪存(flash memory)或只读存储器(read-only memory),但本发明实施例并不限于此。
数据存储器124和数据缓存123的大小可以彼此相同或不同。例如,数据缓存123具有逻辑地址(logical address)的第一范围,数据存储器124具有逻辑地址的第二范围。在一实施例中,第一范围独立于第二范围,且不与第二范围重叠。在一实施例中,第一范围之后是第二范围,以及,第一范围内的逻辑地址和第二范围内的逻辑地址是连续的。例如,第一范围可以是从地址0到地址M-1,第二范围可以是从地址M到地址N-1,其中,M和N系正整数,且N大于M。在可选实施例中,第一范围和第二范围内的地址可以是不连续的。具体地,本发明实施例不做任何限制。
类似地,指令存储器127和指令缓存126的大小可以彼此相同或不同。例如,指令缓存126具有逻辑地址的第三范围,指令存储器127具有逻辑地址的第四范围。在一实施例中,第三范围独立于第四范围,且不与第四范围重叠。在一实施例中,第三范围之后是第四范围,且第三范围和第四范围在逻辑地址上是连续的。例如,第三范围可以是从地址0到地址P-1,第二范围可以是从地址P到地址Q-1,其中,P和Q是正整数,且Q大于P。在可选实施例中,第三范围和第四范围内的地址可以是不连续的。具体地,本发明实施例不做任何限制。
存储器控制器121可以被视为L1指令侧控制器(L1 instruction-sidecontroller)。存储器控制器121被配置为响应于存储在程序计数器(program counter,如图2中标注的210所示)中的程序地址(program address)和内容信息(contentinformation)来控制指令缓存126和指令存储器127的激活(activation)和停用/去激活(deactivation)。例如,存储器控制器121可以根据存储在程序计数器中的程序地址和内容信息来激活指令缓存126和/或指令存储器127,并从指令缓存126或指令存储器127中取/获取(fetch)指令。例如,存储在程序计数器中的内容信息包括存储器信息(memoryinformation)。在一些实施例中,存储器信息指示(indicate)在当前指令的取指令(instruction-fetch,IF)阶段中是否激活指令缓存126或指令存储器127,以及,该存储器信息可以由诸如2'b00,2'b01、2'b10或2'b11的两位值(two-bit value)表示,其中,该两位值的最高有效位(most significant bit)指示是否激活指令缓存126,该两位值的最低有效位(least significant bit)指示是否激活指令存储器127。
存储器控制器122可以被视为L1资料侧控制器(LI data-side controller)。存储器控制器122被配置为响应于处理核110中的地址生成单元(address-generation unit,AGU)112的存取/访问命令(access command)来控制数据缓存123和数据存储器124的存取。存储器控制器122还被配置为控制数据存储器124和数据缓存123的激活和停用/去激活。在一实施例中,数据存储器124或数据缓存123被存储器控制器122根据来自地址生成单元的地址信息和当前执行的指令的内容信息激活。在一实施例中,存储器控制器121和存储器控制器122可以包括能够将虚拟存储器地址转换为物理地址的存储器管理单元(memorymanagement unit,MMU)或存储器保护单元(memory protection unit,MPU)。
寄存器堆(register file)125是CPU 105中的处理器寄存器(processorregister)的数组。例如,寄存器堆125可以包括预定数量的寄存器,并且每个寄存器具有固定的宽度,其中,预定数量和寄存器的宽度取决于CPU 105的架构。在一实施例中,寄存器堆125中的寄存器可以是通用寄存器,其存储由CPU 105的执行单元处理的中间结果数据。可替换地或另外地,寄存器堆125中的寄存器可以进一步包括堆栈指针(stack pointer)、链接寄存器(link register)、程序计数器(program counter,PC)、当前程序状态寄存器(current program status register,CPSR)、分组寄存器(banked register)等,但本发明实施例并不限于此。
在一实施例中,寄存器堆125中的每个寄存器除了原始寄存器值之外还包括用于其预期目的的内容信息。例如,内容信息包括存储器信息和距离信息(distanceinformation)。存储器信息可以指示在当前指令的执行阶段中是否激活数据缓存123或数据存储器124,以及,存储器信息可以由诸如2'b00、2'b01,2'b10或2'b11的两位值表示,其中,两位值的最高有效位指示是否激活数据缓存123,两位值的最低有效位指示是否激活数据存储器124。
假定存储器信息的两位值为2'b11,则存储器控制器122在执行当前指令的存储器存取操作的同时激活数据缓存123和数据存储器124。例如,由于存储器控制器122不能够确定要存取的地址是位于数据缓存123还是数据存储器124内,因此,可以将2'b11的存储器信息用于初始条件。假定存储器信息的两位值为2'b10,则存储器控制器122在执行当前指令的存储器存取操作的同时激活数据缓存123并停用/去激活数据存储器124。假定存储器信息的两位值为2’b01,则存储器控制器122在执行当前指令的存储器存取操作时激活数据存储器124并停用/去激活资料缓存123。假定存储器信息的两位值为2’b00,则由于当前指令不需要存取/访问存储器,因此存储器控制器122停用/去激活数据存储器124和资料缓存123这两者。
距离信息指示当前地址到数据缓存123的边界的距离是否长于或大于预定长度(例如32字节),但本发明实施例并不限于此。距离信息可以由一位值(1-bit value)表示,该值可以帮助确定下一条指令的地址是位于数据缓存123还是数据存储器124中。
在一实施例中,内容信息可因算术指令(例如,ADD,SUB,MPY,DIV等)、逻辑指令(例如,AND,OR,XOR等)、寄存器移动指令(register-movement instruction)或存储器存取指令而改变。
图2是根据本发明实施例的CPU中的指令管线(instruction pipeline)的方框示意图。
在一实施例中,CPU 105中的指令管线可以被划分为四个阶段(four stages),诸如取指令(instruction-fetch,IF)阶段、指令解码(instruction-decode,ID)阶段、执行(execution,EX)阶段和写回(write-back,WB)阶段。这些阶段被安排成使得新指令被存储在每个阶段的输入寄存器中,而在该阶段中计算出的结果被存储在随后(subsequent)阶段的输入寄存器中。例如,在当前指令的取指令(IF)阶段中,处理核110读取被存储在程序计数器(PC)中的程序地址,然后根据存储在程序计数器中的程序地址将来自指令缓存126或指令存储器127的当前指令提取(fetch)到指令寄存器(未显示)中。在一实施例中,程序计数器可以是寄存器堆125中的寄存器之一,或者是独立的寄存器。
在一实施例中,除程序地址外,程序计数器还包括内容信息。例如,存储在程序计数器中的内容信息指示在当前指令的取指令(IF)阶段中是否激活和停用/去激活指令缓存126和/或指令存储器127,或者说,存储在程序计数器中的内容信息指示在当前指令的取指令(IF)阶段中是否激活指令缓存126和/或指令存储器127。在另一实施例中,存储器控制器121根据存储在程序计数器中的程序地址和内容信息这两者确定在当前指令的取指令(IF)阶段中是否激活和停用/去激活指令缓存126和/或指令存储器127。其细节将在后面进行描述。
在指令解码(ID)阶段期间,处理核110的指令解码器113解码已提取的指令、从寄存器堆125中的一个或多个寄存器获得(retrieve)与被解码的指令相关联的操作数(operands),并将已获得的操作数写入一个或多个指令寄存器。
在执行(EX)阶段期间,处理核110和存储器控制器122从指令寄存器获得当前指令的地址。例如,如果当前指令是存储器存取指令(也就是说,需要访问/存取数据缓存或数据存储器的任意指令),则处理核110的地址生成单元(AGU)112计算存储器地址,以通过存储器控制器122从数据缓存123和/或数据存储器124获取资料。在执行(EX)阶段,处理核110的算术逻辑单元(ALU)111还可以执行算术运算(例如,ADD、SUB、MPY、DIV、SHIFT等)和/或逻辑运算(例如,AND、OR、NOT、NAND、NOR、XOR、XNOR等),以及,执行的操作需要一个或多个时钟周期,具体取决于指令的类型。另外,存储器控制器122可以生成用于下一条指令的内容信息,该内容信息用以指示针对下一条指令是否激活数据缓存123和/或数据存储器124。执行(EX)阶段的结果和计算信息被存储在寄存器240中,寄存器240为阶段寄存器(stageregister)。
在写回(WB)阶段期间,存储器控制器122(或处理核110)将存储在寄存器240中的值更新至寄存器堆125中的关联寄存器。应当注意,寄存器堆125中的该寄存器在写回(WB)阶段之后包括更新后(updated)的内容信息,以及,在寄存器堆125中具有更新后的内容信息的寄存器可以在下一条指令(或稍后执行的指令)的执行(EX)阶段中使用。具体地,存在“转发路径(forwarding path)”241用于具有更新后的内容信息的寄存器,使得在当前执行的指令的写回(WB)阶段(即,第四阶段)中进行更新的内容信息能够在下一条指令(或稍后执行的指令)的执行(EX)阶段(即,第三阶段)中使用。替代地或附加地,在执行(EX)阶段的输入和存储执行(EX)阶段的结果及内容信息的寄存器240(例如,阶段寄存器)之间存在另一转发路径242。例如,在执行(EX)阶段,存储器控制器122(或处理核110)也将计算出的内容信息写入寄存器240,使得存储在寄存器240中的值和内容信息能够被立即用作下一条指令的执行(EX)阶段的输入,从而减少了指令管线中可能的停顿。
为了描述的目的,在示例实施例中,CPU 105是32位CPU,寄存器堆125包括16个寄存器,以及,寄存器堆125中的每个寄存器的宽度为32位加上内容信息(例如,2位值)和距离信息(例如,1位值)的3个附加位,但本发明实施例并不限于此。
在一实施例中,在取指令(IF)阶段,CPU 105中有两种类型的取指令方式,例如顺序获取和非顺序获取。例如,如果执行顺序获取,则意味着下一条指令的程序计数器(PC)值(Next_PC)是通过将当前指令的指令长度(instruction_length)与当前的程序计数器值(Current_PC)相加计算的,该值可表示成等式(1):
Next_PC==Current_PC+instruction_length (1)
表1根据本发明实施例示出了CPU 105执行利用顺序获取的指令的示例。
表1
在一实施例中,程序计数器210不包括内容信息。在执行第一指令“ADD”的同时,存储器控制器121激活并获取指令缓存126和指令存储器127这两者,以及,程序计数计算器(program-count calculator)220通过将ADD的指令长度(例如4个字节)与当前的程序计数器值Current_PC(例如0×0)相加来计算用于下一条指令的程序计数器值Next_PC,从而获得程序计数器值Next_PC=0×0+0×4=0×4。在执行第二指令“NOP”的同时,存储器控制器121同样激活并获取指令缓存126和指令存储器127,以及,程序计数计算器220通过将NOP的指令长度(例如4个字节)与当前的程序计数器值Current_PC(例如,0×4)相加来计算用于下一条指令的程序计数器值Next_PC,从而获得程序计数器值Next_PC=0×4+0×4=0×8。
在执行第三指令“SUB”的同时,存储器控制器121同样激活并获取指令缓存126和指令存储器127,以及,程序计数计算器220通过将SUB的指令长度(例如4个字节)与当前的程序计数器值Current_PC(例如0×8)相加来计算用于下一条指令的程序计数器值Next_PC,从而获得程序计数器值Next_PC=0×8+0×4=0×C。在执行第四指令“NOP”的同时,存储器控制器121同样激活并获取指令缓存126和指令存储器127,以及,程序计数计算器220通过将NOP的指令长度(例如4个字节)与当前的程序计数器值Current_PC(例如,0×C)相加来计算用于下一条指令的程序计数器值Next_PC,从而获得程序计数器值Next_PC=0×C+0×4=0×10。
应当注意,诸如“NOP16”之类的一些指令的长度与CPU 105所定义的指令集的宽度不对齐。例如,在执行第五指令“NOP16”时,存储器控制器121同样激活并获取指令缓存126和指令存储器127,以及,程序计数计算器220通过将NOP16的指令长度(例如2个字节)与当前的程序计数器Current_PC(例如0×10)相加来计算用于下一条指令的程序计数器值Next_PC,从而获得程序计数器值Next_PC=0×10+0×2=0×12。在执行第六指令“MPY”的同时,存储器控制器121同样激活并获取指令缓存126和指令存储器127,以及,程序计数计算器220通过将MPY的指令长度(例如4个字节)与当前的程序计数器Current_PC(例如0×12)相加来计算用于下一条指令的程序计数器值Next_PC,从而获得程序计数器值Next_PC=0×12+0×4=0×16。用于下一条指令的程序计数器值可以按上述类似方式计算。
在另一实施例中,程序计数器210包括内容信息(例如,表1中的存储器信息)。在执行第一指令“ADD”的同时,存储器控制器121激活并获取指令缓存126和指令存储器127,以及,程序计数计算器220通过将ADD的指令长度(例如4个字节)与当前的程序计数器值Current_PC(例如0×0)相加来计算用于下一条指令的程序计数器值Next_PC,从而获得程序计数器值Next_PC=0×0+0×4=0×4。例如,在初始条件下,存储在程序计数器210中的关于是否激活指令缓存126和/或指令存储器127的内容信息为空。因此,存储器控制器121不能确定存储在程序计数器210中的程序地址的确切位置是位于指令缓存126内还是指令存储器127内,以及,存储器控制器121必须激活指令缓存126和指令存储器127这两者。然后,存储器控制器121检查已计算出的下一条指令的程序计数器值Next_PC(即,0×4)的存储器属性(memory attribute),以确定所计算出的程序计数器值Next_PC是否位于指令缓存126或指令存储器127内。例如,在该实施例中,存储器控制器121确定所计算出的程序计数器值Next_PC的地址0x4位于指令缓存126中,并使用2'b10(即,路径201)将用于下一条指令NOP的内容信息更新到程序计数器210。
在执行第二指令“NOP”的同时,存储器控制器121根据存储在程序计数器210中的内容信息(如表1中示出的存储器信息)激活并获取指令缓存126,以及,程序计数计算器220通过将NOP的指令长度(例如4个字节)与当前的程序计数器值Current_PC(例如0×4)相加来计算用于下一条指令的程序计数器值Next_PC,从而获得程序计数器Next_PC=0×4+0×4=0×8。例如,在该实施例中,存储器控制器121确定计算出的程序计数器值Next_PC的地址0x8位于指令缓存126中,并使用2’b10将内容信息更新到程序计数器210。类似地,在表1中的后续指令中,存储器控制器121可以确定计算出的程序计数器值Next_PC的地址位于指令缓存126中,并用2'b10将内容信息更新到程序计数器210。因此,在执行表1中的第三指令、第四指令、第五指令和第六指令中的每一个指令的同时,存储器控制器121根据存储在程序计数器中的内容信息来激活和获取指令缓存126。特别地,在执行表1中的剩余指令的每一指令的同时,除计算下一条指令的程序计数器值Next_PC之外,存储器控制器121还检查计算出的下一条指令的程序计数器值Next_PC的存储器属性,以确定计算出的程序计数器值Next_PC是位于指令缓存126中还是指令存储器127中,并将用于下一条指令的内容信息更新到程序计数器210。
CPU 105通常从L1指令存储器(即,可以是指令缓存126或指令存储器127)中顺序获取指令,但是控制转移指令(control-transfer instruction)通过在程序计数器中放置新值来改变顺序(即,非顺序获取)。这些包括分支(有时称为跳转)、子例程调用(subroutine call)和返回(return)。以一些判定(例如,if-else条件)的真性为条件的转移使计算器在不同条件下遵循不同的顺序。例如,分支(branch)提供了从存储器中的其它地方获取下一条指令。子例程调用不仅分支,而且还将PC先前的内容保存在某个地方。返回(return)将获取保存在PC中的内容并将其放回PC中,并在子例程调用之后利用指令恢复顺序执行。
在一实施例中,CPU 105可以执行以下代码:
{
A=B+C;//B=1,C=1
If(A>0)
function_0(A);
Else
function_1(A);
}
这些代码可以被编译成具有表2所示的非顺序获取的指令。
表2
在表2的实施例中,假设指令缓存126的范围是从地址0×0到地址0x1FFF,以及,指令存储器127的范围是从地址0×2000到0x3FFF。
在一实施例中,程序计数器不包括内容信息。在执行第一指令“ADD”时,存储器控制器121激活指令缓存126和指令存储器127这两者,并从指令缓存126和指令存储器127获取指令,以及,程序计数计算器220通过将ADD的指令长度(例如4个字节)与当前的程序计数器值Current_PC(例如0×0)相加来计算用于下一条指令的程序计数器值Next_PC,从而获得程序计数器值Next_PC=0×0+0×4=0×4。
在执行第二指令时,存储器控制器121同样激活指令缓存126和指令存储器127这两者,并从指令缓存126和指令存储器127获取指令,以及,程序计数计算器220通过将当前指令的指令长度(例如4个字节)与当前的程序计数器值Current_PC(例如0×04)相加来得到下一条指令的程序计数器值Next_PC,从而获得程序计数器值Next_PC=0×4+0×4=0×8。然而,在A>0的情况下,通过第二指令,程序计数器值Next_PC被设置为0×C,因此处理核110将地址0xC处的指令作为第三指令来执行。
在第三指令中,Function_0被执行。存储器控制器121同样激活并获取指令缓存126和指令存储器127这两者,以及,程序计数计算器220通过将当前指令的指令长度(例如4个字节)与当前的程序计数器值Current_PC(例如,0×C)相加来计算下一条指令的程序计数器值Next_PC,从而获得程序计数器值Next_PC=0×C+0×4=0×10。然而,通过第三指令,程序计数器值Next_PC被设置为0×2000,因此,地址0×2000处的指令作为第四指令且处理核110执行地址0×2000处的指令。
在执行第四指令“MPY”的同时,存储器控制器121激活指令缓存126和指令存储器127这两者,以及,程序计数计算器220通过将MPY的指令长度(例如4个字节)与当前的程序计数器值Current_PC(例如0×2000)相加来计算下一条指令的程序计数器值Next_PC,从而获得程序计数器值Next_PC=0×2000+0×4=0×2004。在执行第五指令时,存储器控制器121同样激活指令缓存126和指令存储器127这两者,并从指令缓存126和指令存储器127获取指令,以及,程序计数计算器220通过将当前指令的指令长度(例如4个字节)与当前的程序计数器值Current_PC(例如0×2004)相加来得到下一条指令的程序计数器值Next_PC,从而获得程序计数器值Next_PC=0×2004+0×4=0×2008。
具体地说,无论执行顺序获取还是非顺序获取,如果程序计数器210不包括内容信息,则存储器控制器121在执行每个存储器存取指令时必须激活指令缓存126和指令存储器127这两者并从指令缓存126和指令存储器127获取指令,这导致半导体装置100的功耗较高。
在另一实施例中,程序计数器210包括内容信息,该内容信息指示是否激活指令缓存126和/或指令存储器127。在执行第一指令“ADD”时,存储器控制器121激活指令缓存126和指令存储器127这两者,并从指令缓存126和指令存储器127获取指令,以及,程序计数计算器220通过将ADD的指令长度(例如,4个字节)与当前的程序计数器值Current_PC(例如0×0)相加来计算下一条指令的程序计数器值Next_PC,从而获得程序计数器值Next_PC=0×0+0×4=0×4。例如,在初始条件下,存储在程序计数器210中的关于是否激活指令缓存126和/或指令存储器127的内容信息为空。因此,存储器控制器121必须激活并获取指令缓存126和指令存储器127这两者。然后,存储器控制器121检查所计算出的下一条指令的程序计数器值Next_PC(即,0×4)的存储器属性,以确定计算出的程序计数器值Next_PC是否位于指令缓存126内或指令存储器127内。例如,在该实施例中,存储器控制器121确定计算出的程序计数器值Next_PC的地址0×4位于指令缓存126中,并将计算出的程序计数器值和内容信息更新到程序计数器210。
在执行表2中的第二条指令时,存储器控制器121激活指令缓存126,并从激活的指令缓存126获取指令。然后,程序计数计算器220通过将当前指令的指令长度(例如4个字节)与当前的程序计数器值Current_PC(例如0×4)相加来计算下一条指令的程序计数器值Next_PC,从而获得程序计数器值Next_PC=0×4+0×4=0×8。然而,通过第二指令,程序计数器值Next_PC被设置为0×C,因此处理核110将地址0xC处的指令作为第三指令来执行。然后,存储器控制器121检查计算出的下一条指令的程序计数器值Next_PC(即,0×C)的存储器属性(其指示该下一条指令的存储器信息是2'b10),以确定计算出的程序计数器值Next_PC位于指令缓存126中。因此,存储器控制器121将用于下一条指令的程序计数器值Next_PC和内容信息(例如2’b10)更新到程序计数器210中。也就是说,在本发明实施例中,在执行当前指令的过程(例如,ID阶段)中会提前计算/确定用于下一条指令的程序计数器值和内容信息。
然而,按顺序获取指令的方式计算出的程序计数器值Next_PC(例如,0×8)不等于第三指令的实际程序地址(例如,0×C),即属于非顺序获取指令的方式。因此,存储在程序计数器210中的用于第三指令的内容信息是无效的,以及,存储器控制器121在执行第三指令的同时激活指令缓存126和指令存储器127这两者并从指令缓存126和指令存储器127获取数据。然后,程序计数计算器220通过将当前指令的指令长度(例如4个字节)与当前的程序计数器值Current_PC(例如0×C)相加来计算下一条指令的程序计数器值Next_PC,从而获得程序计数器值Next_PC=0×C+0×4=0×10。同时,存储器控制器121确定计算出的程序计数器值Next_PC位于指令缓存器126内,其指示该下一条指令的存储器信息是2’b10。然而,通过第三指令,程序计数器值Next_PC被设置为0×2000,因此处理核110将地址0×2000处的指令作为第四指令来执行。
类似地,按顺序获取指令的方式计算出的程序计数器值(存储在程序计数器210中)Next_PC(例如,0×10)不等于第四指令的实际程序地址(例如,0×2000)。因此,存储在程序计数器210中的第四指令的内容信息是无效的,以及,存储器控制器121在执行第四指令的同时激活指令缓存126和指令存储器127这两者并从指令缓存126和指令存储器127获取数据。然后,程序计数计算器220通过将MPY的指令长度(例如4个字节)与当前程序计数器Current_PC(例如0×2000)相加来计算下一条指令的程序计数器Next_PC,从而获得程序计数器值Next_PC=0×2000+0×4=0×2004。同时,存储器控制器121确定计算出的程序计数器值Next_PC位于指令存储器127内,其指示下一条指令的存储器信息为2’b01。
由于计算出的程序计数器值(存储在程序计数器210中)Next_PC(例如,0×2004)等于第五指令的实际程序地址(例如,0×2004),即顺序获取指令的方式,因此用于第五指令的内容信息是有效的。在执行第五指令时,存储器控制器121激活指令存储器127并停用/去激活指令缓存126,且从指令存储器127获取指令。然后,程序计数计算器220通过将当前指令的指令长度(例如4个字节)与当前程序计数器Current_PC(例如0×2004)相加来计算下一条指令的程序计数器值Next_PC,从而获得程序计数器值Next_PC=0×2004+0×4=0×2008。然后,存储器控制器121检查计算出的下一条指令的程序计数器值Next_PC(即,0×2008)的存储器属性,并确定所计算出的程序计数器值Next_PC位于指令存储器127内,其指示该下一条指令的存储器信息是2'b01。
具体地说,如果程序计数器210包括内容信息(如表2中所示的存储器信息),则存储器控制器121在执行存储器存取指令时能够精确地激活并获取指令缓存126和/或指令存储器127,而无需“预测”,从而减少了半导体装置100的功耗。每次在取指令(IF)阶段获取指令时,存储器控制器121(或处理核110)利用已经计算出的用于下一条指令的程序计数器值和内容信息来更新程序计数器210。也就是说,本发明实施例在执行当前指令的同时确定出接下来要执行的下一条指令是应该从指令缓存126取还是从指令存储器127取,从而,在执行下一条指令时能够有目的性地激活并获取指令缓存126或者指令存储器127,而不是盲目地激活并获取指令缓存126和指令存储器127这两者,从而可以达到节电的目的。
在一实施例中,内容信息可以在加载或存储指令(load or store instruction)中使用,以减少执行(EX)阶段的功耗。例如,加载或存储指令有两种模式,诸如偏移模式(offset mode)和后修改模式(post-modify mode)。在偏移模式下,加载指令Load(Rd,Rs+Offset)的输入地址是基地址(base address)Rs加偏移量(即Rs+Offset),以及,地址(Rs+Offset)的值被加载到寄存器Rd,其中,基地址Rs未被修改。
表3示出了使用偏移模式的加载指令的可行操作。
表3
参照表3,假定基地址Rs在数据缓存123的地址范围内。在一些实施例中,表3中的存储器信息指示当前指令(如存取指令、加载或存储指令)的基地址是指向数据缓存还是指向数据存储器,例如,若基地址在数据缓存123的地址范围内(即指向数据缓存),则存储器信息可以表示为2’b10,若基地址在数据存储器124的地址范围内(即指向数据存储器),则存储器信息可以表示为2’b01。距离信息指示当前指令的基地址到数据缓存的边界的距离是否小于或等于预定长度(如32字节),例如,若基地址Rs到数据缓存123的边界的距离小于(或等于)32字节,则距离信息可以表示为0,若基地址Rs到数据缓存123的边界的距离长于或大于32个字节,则距离信息可表示为1。
在第一种情况下,存储器信息为2'b10,距离信息为0,偏移量为0×0。存储器信息指示:在执行(EX)阶段,数据缓存123应被激活而数据存储器124应被去激活/停用,距离信息(为0)指示基地址Rs到数据缓存123的边界的距离小于(或等于)32字节。由于加载指令的偏移量是0×0,则(Rs+Offset)的求和值等于基地址Rs,从而处于数据缓存123的地址范围内。因此,存储器控制器122在加载指令的执行(EX)阶段中激活数据缓存123并停用/去激活数据存储器124,从而将数据缓存123中的地址(Rs+Offset)处的值加载到寄存器Rd。
第二种情况中的条件与第一种情况中的条件类似,不同之处在于当前指令的偏移量大于0。由于基地址Rs到数据缓存123的边界的距离小于32个字节(距离信息为0),从而(Rs+Offset)的求和值可能会超过数据缓存123的边界。因此,在当前指令的执行(EX)阶段中,存储器控制器122不能精确地确定加载指令的输入地址(Rs+Offset)是位于数据缓存123内还是位于数据存储器124内。因此,存储器控制器122在加载指令的执行(EX)阶段中激活数据缓存123和数据存储器124这两者,从而将数据缓存123或数据存储器124中的地址(Rs+Offset)处的值加载到寄存器Rd。
在第三种情况下,存储器信息为2'b10,距离信息为1,以及,偏移量小于或等于32个字节。由于基地址Rs到数据缓存123的边界的距离长于或大于32个字节(距离信息为1),且偏移量小于或等于32个字节,因此(Rs+Offset)的求和值将不会超出数据缓存123的边界。因此,存储器控制器122确定加载指令的输入地址(Rs+Offset)位于数据缓存123的地址范围内。因此,存储器控制器122在加载指令的执行(EX)阶段中激活数据缓存123并停用/去激活数据存储器124,从而将数据缓存123中的地址(Rs+Offset)处的值加载到寄存器Rd。
在后修改模式中,加载指令Load(Rd,Rs+=Offset)的输入地址是基地址Rs,以及,来自基地址Rs的值被加载到寄存器Rd中,其中,基地址Rs的值在加载指令被执行完之后被修改为(Rs+Offset)。
在一实施例中,假设基地址Rs处于数据缓存123的地址范围内,以及,存储器信息、距离信息和当前的偏移量分别为2'b10、0和0×0。由于在将基地址Rs的值加载到寄存器Rd之后,基地址Rs被修改为(Rs+Offset),因此,距离信息和当前的偏移量将不影响用于激活或停用/去激活资料缓存123和/或数据存储器124的确定。因此,在后修改模式下,存储器控制器122在加载指令的执行(EX)阶段中激活数据缓存123并停用/去激活数据存储器124,从而将数据缓存123中的基地址(Rs)处的值加载到寄存器Rd。此外,在执行当前指令的过程中,进一步确定用于下一条指令(如存取指令、加载或存储指令)的存储器信息和距离信息,例如,若确定出修改后的地址(Rs+Offset)处于数据缓存123的地址范围内,则用于下一条指令的存储器信息可以表示为2’b10,若确定出修改后的地址(Rs+Offset)处于数据存储器124的地址范围内,则用于下一条指令的存储器信息可以表示为2’b01,以及,若确定出修改后的地址(Rs+Offset)到数据缓存123的边界的距离小于或等于预定长度(如32字节),则用于下一条指令的距离信息可以表示为0,若确定出修改后的地址(Rs+Offset)到数据缓存123的边界的距离大于或长于预定长度,则用于下一条指令的距离信息可以表示为1。在本发明实施例描述的后修改模式中,当前指令的存储器信息和距离信息是在执行上一条指令的过程(特别地,在执行阶段)中确定出来的。
图3是根据发明另一实施例的CPU的指令管线中的执行(EX)阶段的方框示意图。参考图1和图3,在另一实施例中,存储在寄存器堆125的每个寄存器中的内容信息帮助确定要存取的地址是属于内部存储器之一(例如,数据缓存123或数据存储器124)还是外部存储器。外部存储器可以是主存储器150或存储装置160。
具体地说,外部存储器的访问时间(即等待时间)比内部存储器的访问时间长得多。因此,如果存储器控制器122将要从内部存储器或外部存储器访问/存取数据,则存储器控制器122必须确保要访问/存取的地址的确切位置。如果存储器控制器122错误地从外部存储器获取数据,则将浪费数十或数百个时钟周期,然后存储器控制器122必须丢弃从外部存储器获取到的数据并从内部存储器获取正确的数据。另外,对外部存储器的推测(speculative)访问/存取将造成系统总线115的拥堵,并且推测访问/存取的结果可能是错误的。因此,存储器控制器122不允许对外部存储器的推测访问/存取,以及,在存储器控制器122已经确定出要访问/存取的地址的确切位置之后,存储器控制器122根据来自AGU 112的地址信息和来自寄存器堆125的内容信息开始从内部存储器或外部存储器读取数据。换句话说,存储器控制器122将等待确切的存储器属性信息,然后确定是提取内部存储器还是外部存储器(即,假设内部存储器和外部存储器被激活),从而减少CPU 105的等待时间(latency)。
表4示出了使用偏移模式的加载指令的可行操作。
表4
参照表4,假定基地址Rs处于内部存储器(即数据缓存123和数据存储器124)的地址范围内。
表4与表3非常相似。但是,在表4的实施例中,存储器控制器122必须确定是从内部存储器还是从外部存储器获取数据,且外部存储器仅在需要时才被存取/访问。
例如,在表4的第一种情况下,存储器信息为2'b10,距离信息为0(基地址到内部存储器的边界的距离小于预定长度,如32字节),偏移量为0×0。由于加载指令的偏移量为0×0,因此(Rs+Offset)的求和值等于Rs,其处于内部存储器的地址范围内。因此,存储器控制器122能够快速地确定出要存取的地址位于内部存储器内。因此,存储器控制器122不需要等待来自AGU 112的地址信息,并在加载指令的执行(EX)阶段中从内部存储器获取数据,从而将内部存储器中的地址(Rs+Offset)处的值加载到寄存器Rd。
第二种情况的条件与第一种情况的条件类似,不同之处在于偏移量大于0。由于从基地址Rs到内部存储器边界的距离小于32个字节(距离信息为0),因此(Rs+Offset)的求和值可能会超出内部存储器的边界。因此,在第二种情况下,存储器控制器122不能精确地确定加载指令的输入地址(Rs+Offset)是位于内部存储器内还是位于外部存储器内。因此,存储器控制器122必须等待来自AGU 112的地址信息,并且根据该地址信息确定要存取的地址是位于内部存储器内还是位于外部存储器内。如果来自AGU 112的地址信息指示要存取的地址位于内部存储器中,则存储器控制器122在加载指令的执行(EX)阶段从内部存储器获取数据,从而将数据缓存123或数据存储器124中的地址(Rs+Offset)处的值加载到寄存器Rd。相反,如果来自AGU 112的地址信息指示要存取的地址位于外部存储器内,则存储器控制器122在加载指令的执行(EX)阶段中从外部存储器获取数据,从而将外部存储器中的地址(Rs+Offset)处的值加载到寄存器Rd。
在第三种情况下,存储器信息为2'b10,距离信息为1,且偏移量小于或等于32个字节。由于从基地址Rs到数据缓存123的边界的距离长于或大于32个字节,且偏移量小于或等于32个字节,因此(Rs+Offset)的求和值将不会超出数据缓存123的边界。因此,存储器控制器122快速地确定出加载指令的输入地址(Rs+Offset)位于数据缓存123的地址范围内。因此,存储器控制器122在加载指令的执行(EX)阶段从内部存储器获取数据,从而将内部存储器中的地址(Rs+Offset)的值加载到寄存器Rd。
类似地,在后修改模式中,加载指令Load(Rd,Rs+=Offset)的输入地址是基地址Rs,以及,地址Rs处的值被加载到寄存器Rd中,其中,地址Rs被修改为(Rs+Offset)以进行下一个操作。
在一实施例中,假设基地址Rs处于数据缓存123的地址范围内,以及,存储器信息、距离信息和当前偏移分别为2'b10、0和0×0。由于是在将数据缓存123的地址Rs中的值加载到寄存器Rd中之后,地址Rs才被修改为(Rs+Offset),因此,距离信息和当前偏移将不影响用于获取内部存储器或外部存储器的确定。因此,在后修改模式下,存储器控制器122在加载指令的执行(EX)阶段中根据存储器信息(例如,其值为2’b10)从内部存储器获取数据,从而将内部存储器中的地址(Rs)处的值加载到寄存器Rd。
在一些实施例中,可以将表3的实施例中描述的技术与表4的实施例中描述的技术结合在一起。更特别地,内容信息中的存储器信息可以扩展到三位或更多位,以及,距离信息可以扩展到两位或更多位。如果存在三个存储器要存取,例如数据缓存123、数据存储器124和主存储器150,则存储器信息的3位值可以指示是否存取内部存储器(即,包括数据缓存123和数据存储器124)或外部存储器(即主存储器150)以及是否激活和获取数据缓存123或数据存储器124。
例如,三位值的最高有效位可以指示是否激活数据缓存123并从资料缓存123获取资料。三位值的第二最高有效位指示是否激活数据存储器124并从数据存储器124获取资料。三位值的最低有效位指示是否从主存储器150获取数据。
换句话说,在执行(EX)阶段中,存储器控制器122可以存取数据缓存123、数据存储器124和主存储器150之一。如果存储器控制器122根据内容信息不能确定是存取内部存储器(例如,数据缓存123或数据存储器124)还是外部存储器(例如,主存储器150),则存储器控制器122必须等待AGU 112的地址信息,以确定要存取的地址的确切位置是位于内部存储器还是外部存储器中。如果存储器控制器122可以根据内容信息确定出存取内部存储器,则存储器控制器122进一步使用表3的实施例中描述的技术确定是激活数据缓存123还是数据存储器124并从资料缓存123或数据存储器124中获取资料。如果存储器控制器122根据内容信息确定出存取外部存储器,则存储器控制器122通过总线接口单元130向外部存储器发送存储器存取命令。
表5根据图2的实施例示出了CPU中的指令管线的时序示意图。
表5
在一实施例中,表5中示出了CPU 105的指令管线中的各种指令的时序和内容信息。例如,CPU 105(例如,精简指令集计算(reduced instruction set computing,RISC))处理器)的指令管线可以分为IF,ID,EX和WB阶段。假设指令0、1、2是存储器存取指令(memory-access instructions)。行“当前存储器信息”是指针对当前指令的执行(EX)阶段的存储器信息。行“激活的存储器”是指在当前指令的执行(EX)阶段要激活的存储器(即,可以是数据缓存123、数据存储器124或这两者)。行“距离信息”指示当前指令的地址(比如,基地址)到数据缓存的边界的距离是否长于预定长度,行“下一存储器信息”是指在当前指令的执行(EX)阶段中计算出的用以指示在下一条指令的EX阶段中将被激活的存储器(即,可以是数据缓存123、数据存储器124或这两者)。另外,转发路径242在该实施例中使用。
在时钟周期1中,指令0的取指令(IF)阶段被执行,且没有内容信息能被参考。
在时钟周期2中,指令0的指令解码(ID)阶段和指令1的取指令(IF)阶段被执行,以及,没有内容信息能被参考。
在时钟周期3中,假设偏移量为0,指令0的执行(EX)阶段、指令1的指令解码(ID)阶段和指令2的取指令(IF)阶段被执行。由于在指令0的执行(EX)阶段中仍然没有可参考的内容信息,因此存储器控制器122无法确定要存取的地址是否位于数据缓存123或数据存储器124内。因此,存储器控制器122在时钟周期3中激活数据缓存123和数据存储器124。同时,存储器控制器122和/或处理核110确定出用于下一条指令(即指令1)的存储器信息指向数据缓存123,以及,用于下一条指令(即指令1)的距离信息为1。例如,存储器控制器122和/或处理核110将指令0的执行(EX)阶段的结果和用于下一条指令(即,指令1)的内容信息写入寄存器240。
在时钟周期4中,指令0的写回(WB)阶段、指令1的执行(EX)阶段和指令2的指令解码(ID)阶段被执行。存储器控制器122利用存储在寄存器240中的数据来更新寄存器堆125。同时,可以在时钟周期4中将存储在寄存器240中的内容信息转发到指令1的执行(EX)阶段(例如,通过转发路径242),使得存储器控制器122能够确定出存储器信息指示数据缓存123将要被激活。因此,在时钟周期4中,存储器控制器122在指令1的执行(EX)阶段中激活数据缓存123并停用/去激活数据存储器124。同时,存储器控制器122和/或处理核110确定出用于下一条指令(即,指令2)的存储器信息指向数据缓存123,以及,用于下一条指令(即指令2)的距离信息为1。
在时钟周期5中,指令1的写回(WB)阶段和指令2的执行(EX)阶段被执行。存储器控制器122将存储在寄存器240中的数据更新到寄存器堆125中。同时,在时钟周期4中生成的内容信息可以在时钟周期5中被转发到指令2的执行(EX)阶段,使得存储器控制器122能够确定出存储器信息指示数据缓存123要被激活且距离信息处于数据缓存123的边界内。因此,在时钟周期5中,存储器控制器122可以在指令2的执行(EX)阶段中激活数据缓存123并停用/去激活数据存储器124。同时,存储器控制器122和/或处理核110确定出用于下一条指令的存储器信息指向数据存储器124。应当说明的是,用于当前指令的存储器信息和距离信息是在执行上一条指令的过程中确定出来的,也就是说,在执行当前指令的过程中,会计算/确定用于下一条指令的存储器信息和距离信息。例如,在加载指令的偏移模式中,由于地址(Rs+Offset)的值被加载到寄存器Rd,而基地址Rs未被修改,因此,可以确定出用于下一条指令的存储器信息和距离信息与用于当前指令的的存储器信息和距离信息相同。再例如,在加载指令的后修改模式中,基地址Rs的值在加载指令被执行完之后被修改为(Rs+Offset),因此,基于修改后的地址(Rs+Offset)可以确定用于下一条指令的存储器信息和距离信息。
在时钟周期6中,指令2的写回(WB)阶段被执行。存储器控制器122将存储在寄存器240中的数据更新到寄存器堆125中。尽管在该实施例中有三个指令,但是寄存器堆125中的寄存器可保持更新后的内容信息,直到下一条指令(例如,指令3)被执行,从而,存储器控制器122在执行下一条指令的同时根据寄存器堆125的关联寄存器中的内容信息来确定是否激活数据缓存123和/或数据存储器124。
表6根据图2的实施例示出了CPU中的指令管线的另一时序图。
表6
在另一实施例中,表6中示出了CPU 105的指令管线中的各种指令的时序和内容信息。此外,在该实施例中使用了转发路径241。例如,利用当前执行的指令的执行(EX)阶段的结果和写回(WB)阶段中的用于下一条指令的内容信息来更新寄存器堆125中的寄存器。如果寄存器堆125中的寄存器能够在下一条指令的执行(EX)阶段之前被更新,则处理核110和存储器控制器112在执行(EX)阶段中获取寄存器堆125中的更新后的寄存器。如果寄存器堆125中的寄存器不能在下一条指令的执行(EX)阶段之前被更新,则可以在CPU 105的指令管线中插入气泡/暂停(bubble/stalling),以使下一条指令的执行(EX)阶段延迟一个阶段。
从时钟周期1到时钟周期3,表6中的CPU 105的指令管线的操作与表5中的相同。
在时钟周期4中,指令0的写回(WB)阶段和指令2的指令解码(ID)阶段被执行。存储器控制器122将存储在寄存器240中的数据更新到寄存器堆125中。但是,存储在寄存器堆125中的更新后的数据和内容信息不能被指令1的执行(EX)阶段使用,直到时钟周期5才能被其使用。如果向后通过(backward passing)在指令管线中不被允许,则气泡(bubble)被插入CPU 105的指令管线,以将指令1的执行(EX)阶段延迟一个阶段。由于执行(EX)阶段没有在时钟周期4中被执行,因此,存储器控制器122在时钟周期4中停用/去激活数据缓存123和数据存储器124这两者。
在时钟周期5中,指令1的执行(EX)阶段被执行。应当注意,在时钟周期5中,时钟周期4处的指令0的写回(WB)阶段中更新的寄存器堆125中的数据和内容信息可以在指令1的执行(EX)阶段中使用,以及,存储器控制器122根据寄存器堆125中更新后的内容信息激活数据缓存123并停用/去激活数据存储器124。同时,存储器控制器122和/或处理核110确定处用于下一条指令(即,指令2)的存储器信息指向数据缓存123。然后,将指令1的执行(EX)阶段的结果和指令2的更新后的内容信息写入寄存器240。由于尚未执行指令1的写回(WB)阶段来更新寄存器堆125,因此,另一气泡被插入到CPU 105的指令管线,以将指令2的执行(EX)阶段延迟一个阶段。
在时钟周期6中,指令1的写回(WB)阶段被执行。应当注意,寄存器堆125中的数据和内容信息在时钟周期6中对于指令2仍然时是无效的,另一气泡被插入到CPU 105的指令管线中,以再次将指令2的执行(EX)阶段延迟一个阶段。
在时钟周期7中,指令2的执行(EX)阶段被执行。应当注意,在时钟周期7中,在时钟周期6处的指令1的写回(WB)阶段中更新到寄存器堆125中的数据和内容信息可以在指令2的执行(EX)阶段中使用,以及,存储器控制器122根据寄存器堆125中更新后的内容信息激活数据缓存123和停用/去激活数据存储器124。同时,存储器控制器122和/或处理核110确定出用于下一条指令(即,指令3)的存储器信息指向数据存储器124。然后,指令2的执行(EX)阶段的结果被写入到寄存器240中,以备将来使用。
在前述实施例中,内容信息可以被存储在寄存器堆125或程序计数器210中,其中,寄存器堆125或程序计数器210可被视为存储器激活指示器(memory-activationindicator)。当存储器激活指示器是程序计数器210时,节电机制能够被应用于CPU 105的取指令(IF)阶段,使得存储器控制器121能够根据存储在程序计数器210中的内容信息确定是否激活指令缓存126和/或指令存储器127。
当存储器激活指示器是寄存器堆125时,节电机制能够被应用于CPU 105的执行(EX)阶段。例如,在一种情况下,数据缓存123和数据存储器124在执行(EX)阶段中被使用。在另一种情况下,内部存储器和外部存储器在执行(EX)阶段中被使用。
图4是根据本发明实施例的在管线式处理器中使用的节电方法的流程示意图。
步骤S410:从管线式处理器中的存储器激活指示器检索/获取内容信息,其中,该内容信息指示在执行当前指令的同时是否激活和停用/去激活第一易失性存储器和/或第二易失性存储器。例如,存储器激活指示器可以是寄存器堆125或程序计数器210。如上所述,不同类型的存储器激活指示器能够在CPU 105的不同阶段中、在存储器子系统的不同配置中使用。
步骤S420:根据存储在存储器激活指示器中的内容信息,在当前指令的多个阶段的特定阶段中控制第一易失性存储器和/或第二易失性存储器的激活。例如,当前指令的内容信息可以是在上一条(previous)指令的取指令(IF)阶段或执行(EX)阶段中计算出来的,从而帮助确定在取指令(IF)阶段或执行(EX)阶段中是否应当激活第一易失性存储器和/或第二易失性存储器阶段。如果根据内容信息能够确定出在当前指令的取指令(IF)阶段或执行(EX)阶段中激活第一易失性存储器或者第二易失性存储器(而不是统一激活第一易失性存储器和第二易失性存储器这两者),则能够降低半导体装置100的功耗。
鉴于上述情况,本申请实施例提供了一种管线式处理器和节电方法,该节电方法用于管线式处理器中的存储器子系统。管线式处理器和节电方法利用存储在存储器激活指示器(如寄存器堆或程序计数器)中的内容信息,能够在管线式处理器的指令管线中的不同阶段(如取指令(IF)阶段或执行(EX)阶段)中激活所需的缓存或存储器,并停用/去激活不需要的缓存或存储器。因此,能够避免冗余/多余(redundant)的存储器激活,从而减少半导体装置100的功耗。
权利要求中用以修饰组件的“第一”、“第二”、“第三”等序数词的使用本身未暗示任何优先权、优先次序、各组件之间的先后次序、或方法所执行的步骤的次序,而仅用作标识来区分具有相同名称(具有不同序数词)的不同组件。
虽然本发明已经通过示例的方式以及依据优选实施例进行了描述,但是,应当理解的是,本发明并不限于公开的实施例。相反,它旨在覆盖各种变型和类似的结构(如对于本领域技术人员将是显而易见的),例如,不同实施例中的不同特征的组合或替换。因此,所附权利要求的范围应被赋予最宽的解释,以涵盖所有的这些变型和类似的结构。
Claims (22)
1.一种管线式处理器,用于执行指令的管线式处理,其特征在于,该管线式处理器包括:
程序计数器,用于存储程序计数器值和内容信息,其中,用于当前指令的程序计数器值和内容信息是在执行上一条指令的过程中确定出来的,以及,该内容信息指示在执行当前指令的同时是否激活第一易失性存储器和/或第二易失性存储器;以及,
存储器控制器,用于根据存储在该程序计数器中的该内容信息,在当前指令的多个阶段的特定阶段中控制该第一易失性存储器和/或该第二易失性存储器的激活,其中,该特定阶段为取指令阶段。
2.根据权利要求1所述的管线式处理器,其特征在于,该第一易失性存储器和该第二易失性存储器分别为该管线式处理器中用于存储指令的指令缓存和指令存储器。
3.根据权利要求2所述的管线式处理器,其特征在于,该存储器控制器根据存储在该程序计数器中的程序计数器值和该内容信息,在当前指令的该特定阶段中控制该第一易失性存储器和/或该第二易失性存储器的激活和停用,其中,用于当前指令的程序计数器值和内容信息是在执行上一条指令的过程中基于顺序获取指令的方式确定出来的。
4.根据权利要求3所述的管线式处理器,其特征在于:
响应于存储在该程序计数器中的该程序计数器值等于当前指令所指示的程序地址,该存储器控制器确定出存储在该程序计数器中的该内容信息是有效的,并根据存储在该程序计数器中的该内容信息在当前指令的该特定阶段中激活该第一易失性存储器或该第二易失性存储器;以及,
响应于存储在该程序计数器中的该程序计数器值不等于当前指令所指示的程序地址,该存储器控制器确定出存储在该程序计数器中的该内容信息是无效的,并在当前指令的该特定阶段中激活该第一易失性存储器和该第二易失性存储器这两者。
5.一种管线式处理器,用于执行指令的管线式处理,其特征在于,该管线式处理器包括:
存储器激活指示器,用于存储内容信息,该内容信息指示在执行当前指令的同时是否激活第一易失性存储器和/或第二易失性存储器;以及,
存储器控制器,用于根据存储在该存储器激活指示器中的该内容信息,在当前指令的多个阶段的特定阶段中控制该第一易失性存储器和/或该第二易失性存储器的激活;
其中,该存储器激活指示器为该管线式处理器中的寄存器堆,该特定阶段为执行阶段,以及,该第一易失性存储器和该第二易失性存储器分别为该管线式处理器中用于存储数据的数据缓存和数据存储器或者分别为该管线式处理器的内部存储器和外部存储器。
6.根据权利要求5所述的管线式处理器,其特征在于,该第一易失性存储器在逻辑地址中具有第一范围,以及,该第二易失性存储器在逻辑地址中具有第二范围,其中,该第一范围之后是该第二范围,且该第一范围和该第二范围是连续的。
7.根据权利要求6所述的管线式处理器,其特征在于,该内容信息包括存储器信息和距离信息,该存储器信息指示在该执行阶段中是否激活该第一易失性存储器和/或该第二易失性存储器,以及,该距离信息指示当前指令的地址到该第一易失性存储器的边界的距离是否长于预定长度。
8.根据权利要求7所述的管线式处理器,其特征在于,在该存储器信息指示激活第一易失性存储器的情况下,响应于该距离信息指示该当前指令的地址到该第一易失性存储器的边界的距离长于该预定长度,该存储器控制器在当前指令的执行阶段中激活该第一易失性存储器并停用该第二易失性存储器。
9.根据权利要求8所述的管线式处理器,其特征在于,响应于该距离信息指示该当前指令的地址到该第一易失性存储器的边界的距离等于或小于该预定长度,该存储器控制器在当前指令的执行阶段中激活该第一易失性存储器和该第二易失性存储器这两者。
10.根据权利要求5所述的管线式处理器,其特征在于,该存储器控制器还利用当前指令的执行阶段的结果和用于下一条指令的内容信息来更新阶段寄存器;
其中,在当前指令的写回阶段中,该存储器控制器利用存储在该阶段寄存器中的值更新该寄存器堆;
其中,在下一条指令的执行阶段中,该存储器控制器获取存储在该寄存器堆中的该内容信息,以确定是否激活该第一易失性存储器和/或该第二易失性存储器。
11.根据权利要求5所述的管线式处理器,其特征在于,该存储器控制器还利用当前指令的执行阶段的结果和用于下一条指令的内容信息来更新阶段寄存器;
其中,在下一条指令的执行阶段中,该存储器控制器获取被存储在该阶段寄存器中的该内容信息,以确定是否激活该第一易失性存储器和/或该第二易失性存储器。
12.一种节电方法,其用在管线式处理器中的存储器子系统中,其特征在于,该存储器子系统包括第一易失性存储器和第二易失性存储器,以及,该方法包括:
从该管线式处理器中的程序计数器中获取程序计数器值和内容信息,其中,用于当前指令的程序计数器值和内容信息是在执行上一条指令的过程中确定出来的,以及,该内容信息指示在执行当前指令的同时是否激活该第一易失性存储器和/或该第二易失性存储器;以及,
根据存储在该程序计数器中的该内容信息,在当前指令的多个阶段的特定阶段中控制该第一易失性存储器和/或该第二易失性存储器的激活,其中,该特定阶段为取指令阶段。
13.根据权利要求12所述的节电方法,其特征在于,该第一易失性存储器和该第二易失性存储器分别为该管线式处理器中用于存储指令的指令缓存和指令存储器。
14.根据权利要求13所述的节电方法,其特征在于,该节电方法进一步包括:
根据存储在该程序计数器中的程序计数器值和该内容信息,在当前指令的该特定阶段中控制该第一易失性存储器和/或该第二易失性存储器的激活和停用,其中,用于当前指令的程序计数器值和内容信息是在执行上一条指令的过程中基于顺序获取指令的方式确定出来的。
15.根据权利要求14所述的节电方法,其特征在于,该节电方法还包括:
响应于存储在该程序计数器中的该程序计数器值等于当前指令所指示的程序地址,确定出存储在该程序计数器中的该内容信息是有效的,并根据存储在该程序计数器中的该内容信息在当前指令的该特定阶段中激活该第一易失性存储器或该第二易失性存储器;以及,
响应于存储在该程序计数器中的该程序计数器值不等于当前指令所指示的程序地址,确定出存储在该程序计数器中的该内容信息是无效的,并在当前指令的该特定阶段中激活该第一易失性存储器和该第二易失性存储器这两者。
16.一种节电方法,其用在管线式处理器中的存储器子系统中,其特征在于,该存储器子系统包括第一易失性存储器和第二易失性存储器,以及,该方法包括:
从该管线式处理器中的存储器激活指示器中获取内容信息,其中,该内容信息指示在执行当前指令的同时是否激活该第一易失性存储器和/或该第二易失性存储器;以及,
根据存储在该存储器激活指示器中的该内容信息,在当前指令的多个阶段的特定阶段中控制该第一易失性存储器和/或该第二易失性存储器的激活;
其中,该存储器激活指示器为该管线式处理器中的寄存器堆,该特定阶段为执行阶段,以及,该第一易失性存储器和该第二易失性存储器分别是为该管线式处理器中用于存储数据的数据缓存和数据存储器或者分别为该管线式处理器的内部存储器和外部存储器。
17.根据权利要求16所述的节电方法,其特征在于,该第一易失性存储器在逻辑地址中具有第一范围,以及,该第二易失性存储器在逻辑地址中具有第二范围,其中,该第一范围之后是该第二范围,且该第一范围和该第二范围是连续的。
18.根据权利要求17所述的节电方法,其特征在于,该内容信息包括存储器信息和距离信息,该存储器信息指示在该执行阶段中是否激活该第一易失性存储器和/或该第二易失性存储器,以及,该距离信息指示当前指令的地址到该第一易失性存储器的边界的距离是否长于预定长度。
19.根据权利要求18所述的节电方法,其特征在于,该节电方法还包括:
在该存储器信息指示激活第一易失性存储器的情况下,响应于该距离信息指示该当前指令的地址到该第一易失性存储器的边界的距离长于该预定长度,在当前指令的执行阶段中激活该第一易失性存储器并停用该第二易失性存储器。
20.根据权利要求19所述的节电方法,其特征在于,该节电方法还包括:
响应于该距离信息指示该当前指令的地址到该第一易失性存储器的边界的距离等于或小于该预定长度,在当前指令的执行阶段中激活该第一易失性存储器和该第二易失性存储器这两者。
21.根据权利要求16所述的节电方法,其特征在于,该节电方法还包括:
利用当前指令的执行阶段的结果和用于下一条指令的内容信息更新阶段寄存器;
在当前指令的写回阶段中,利用存储在该阶段寄存器中的值更新该寄存器堆;以及,
在下一条指令的执行阶段中,获取存储在该寄存器堆中的该内容信息,以确定是否激活该第一易失性存储器和/或该第二易失性存储器。
22.根据权利要求16所述的节电方法,其特征在于,该节电方法还包括:
利用当前指令的执行阶段的结果和用于下一条指令的内容信息更新阶段寄存器;以及,
在下一条指令的执行阶段中,获取被存储在该阶段寄存器中的该内容信息,以确定是否激活该第一易失性存储器和/或该第二易失性存储器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/255,165 US11003457B2 (en) | 2019-01-23 | 2019-01-23 | Power-saving mechanism for memory sub-system in pipelined processor |
US16/255,165 | 2019-01-23 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111475010A CN111475010A (zh) | 2020-07-31 |
CN111475010B true CN111475010B (zh) | 2022-05-10 |
Family
ID=71608989
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911045644.1A Active CN111475010B (zh) | 2019-01-23 | 2019-10-30 | 管线式处理器及节电方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11003457B2 (zh) |
CN (1) | CN111475010B (zh) |
TW (1) | TWI722635B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1581068A (zh) * | 2003-08-13 | 2005-02-16 | 威盛电子股份有限公司 | 预先读取脱序执行指令的方法及处理器 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0991136A (ja) * | 1995-09-25 | 1997-04-04 | Toshiba Corp | 信号処理装置 |
US6715064B1 (en) * | 2000-01-21 | 2004-03-30 | Intel Corporation | Method and apparatus for performing sequential executions of elements in cooperation with a transform |
US7020788B2 (en) * | 2001-06-01 | 2006-03-28 | Microchip Technology Incorporated | Reduced power option |
EP1447742A1 (en) * | 2003-02-11 | 2004-08-18 | STMicroelectronics S.r.l. | Method and apparatus for translating instructions of an ARM-type processor into instructions for a LX-type processor |
US7310722B2 (en) | 2003-12-18 | 2007-12-18 | Nvidia Corporation | Across-thread out of order instruction dispatch in a multithreaded graphics processor |
US8352712B2 (en) | 2004-05-06 | 2013-01-08 | International Business Machines Corporation | Method and system for specualtively sending processor-issued store operations to a store queue with full signal asserted |
US7681022B2 (en) * | 2006-07-25 | 2010-03-16 | Qualcomm Incorporated | Efficient interrupt return address save mechanism |
US10002072B2 (en) * | 2015-05-18 | 2018-06-19 | Mediatek Inc. | Method and apparatus for controlling data migration in multi-channel memory device |
US10430302B2 (en) * | 2017-04-12 | 2019-10-01 | Qualcomm Incorporated | Data retention with data migration |
CN207817702U (zh) * | 2018-02-24 | 2018-09-04 | 丰郅(上海)新能源科技有限公司 | 用于提高数据处理速度的数据处理系统 |
-
2019
- 2019-01-23 US US16/255,165 patent/US11003457B2/en active Active
- 2019-10-30 CN CN201911045644.1A patent/CN111475010B/zh active Active
- 2019-11-01 TW TW108139683A patent/TWI722635B/zh active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1581068A (zh) * | 2003-08-13 | 2005-02-16 | 威盛电子股份有限公司 | 预先读取脱序执行指令的方法及处理器 |
Also Published As
Publication number | Publication date |
---|---|
TW202028924A (zh) | 2020-08-01 |
US20200233673A1 (en) | 2020-07-23 |
US11003457B2 (en) | 2021-05-11 |
CN111475010A (zh) | 2020-07-31 |
TWI722635B (zh) | 2021-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6804799B2 (en) | Using type bits to track storage of ECC and predecode bits in a level two cache | |
JP5255701B2 (ja) | 疎及び密予測を伴うハイブリッド分岐予測デバイス | |
US6907520B2 (en) | Threshold-based load address prediction and new thread identification in a multithreaded microprocessor | |
JP5172942B2 (ja) | プロセッサによる電力消費を低減する方法、プロセッサ、及び、情報処理システム | |
US6151662A (en) | Data transaction typing for improved caching and prefetching characteristics | |
US6665749B1 (en) | Bus protocol for efficiently transferring vector data | |
JP5837126B2 (ja) | 現在実行している命令セット以外の命令セットから命令をプリロードするシステム、方法およびソフトウェア | |
JP3836322B2 (ja) | プリデコード情報を記憶するためのecc/パリティビットの使用 | |
US6813701B1 (en) | Method and apparatus for transferring vector data between memory and a register file | |
US8984261B2 (en) | Store data forwarding with no memory model restrictions | |
US6088789A (en) | Prefetch instruction specifying destination functional unit and read/write access mode | |
US20200364054A1 (en) | Processor subroutine cache | |
US5446850A (en) | Cross-cache-line compounding algorithm for scism processors | |
RU2638641C2 (ru) | Загрузка парциальной ширины, зависящая от режима, в процессорах с регистрами с большим числом разрядов, способы и системы | |
EP1278125A2 (en) | Indexing and multiplexing of interleaved cache memory arrays | |
US20080086622A1 (en) | Replay reduction for power saving | |
US20150134932A1 (en) | Structure access processors, methods, systems, and instructions | |
US9311094B2 (en) | Predicting a pattern in addresses for a memory-accessing instruction when processing vector instructions | |
US12019553B2 (en) | System, apparatus and method for prefetching physical pages in a processor | |
TW202219745A (zh) | 微處理器和預取指調整方法 | |
US20180203703A1 (en) | Implementation of register renaming, call-return prediction and prefetch | |
US20040181626A1 (en) | Partial linearly tagged cache memory system | |
CN111475010B (zh) | 管线式处理器及节电方法 | |
US6625720B1 (en) | System for posting vector synchronization instructions to vector instruction queue to separate vector instructions from different application programs | |
US20070011432A1 (en) | Address generation unit with operand recycling |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |