CN111435310B - 处理单元和在处理单元中处理指令的方法 - Google Patents
处理单元和在处理单元中处理指令的方法 Download PDFInfo
- Publication number
- CN111435310B CN111435310B CN202010020589.7A CN202010020589A CN111435310B CN 111435310 B CN111435310 B CN 111435310B CN 202010020589 A CN202010020589 A CN 202010020589A CN 111435310 B CN111435310 B CN 111435310B
- Authority
- CN
- China
- Prior art keywords
- operand
- cache
- unit
- operands
- register file
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 80
- 238000000034 method Methods 0.000 title claims abstract description 34
- 230000008569 process Effects 0.000 claims abstract description 15
- 230000009471 action Effects 0.000 description 5
- 230000003139 buffering effect Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000004913 activation Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30138—Extension of register space, e.g. register cache
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30141—Implementation provisions of register files, e.g. ports
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
- G06F9/3832—Value prediction for operands; operand history buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Advance Control (AREA)
Abstract
公开了处理单元和在处理单元中处理指令的方法,以在包括操作数缓存(OC)的执行单元(EU)中处理指令。OC存储在物理寄存器文件(PRF)中存储的至少一个频繁使用的操作数的副本。EU可使用从PRF或从OC获得的操作数处理指令。如果与使用从PRF获得的操作数相比使用从OC获得的操作数处理指令使用更少的功率,则在第一模式下OC重命名单元(OC‑REN)指示EU使用从OC获得的操作数处理指令。如果与使用从OC获得的操作数相比使用从PRF获得的操作数处理指令使用更少的功率,则在第二模式下OC‑REN指示EU使用从PRF获得的操作数处理指令。
Description
本专利申请要求于2019年1月11日提交的第62/791,676号美国临时专利申请的优先权权益,所述美国临时专利申请的公开通过引用全部包含于此。
技术领域
在此公开的主题总体涉及计算系统。更具体地,在此公开的主题涉及用于在执行指令的执行单元内利用操作数缓存(cache)的系统和方法。
背景技术
中央处理器(CPU)执行的指令可具有一个或多个寄存器源操作数。加快CPU的性能的常见机制是实现寄存器重命名。例如,每个指令集架构(ISA)具有指令可利用的固定数量的架构寄存器。寄存器重命名避免了如果指令正在使用相同的架构寄存器作为它们的源寄存器或目标寄存器中的一个则会出现的许多序列化依赖。通过避免序列化,可允许指令的乱序执行。
可通过使用物理寄存器的集来实现寄存器重命名,物理寄存器的集可大于架构寄存器集。在任意给定时间,物理寄存器可表示实际的架构寄存器或架构寄存器的临时占位符。通过允许指令使用临时占位符寄存器作为源寄存器和目标寄存器,可允许乱序执行。
指令可在被设计为执行指令所需的类型的计算的执行单元处执行。存在执行单元可接收执行指令所需的操作数的一些工业标准机制(诸如:从单个大型物理寄存器文件读取操作数值;从许多较小的物理寄存器文件中的一个读取操作数;或从作为驱动来自每个执行单元的数据结果的总线的集的公共数据总线(CDB)读取操作数值)。公共数据总线(CDB)是避免从寄存器文件读取结果的不必要的延迟和功率的机制。然而,因为与指令执行相比,CDB基于操作数到达的时效性,所以不是所有的操作数读取都可通过CDB被提供。
在某些CPU设计中,仅当指令准备好执行时,数据操作数才可被发送到执行单元。在使用“保留站(reservation station)”类型机制的其他CPU设计中,操作数可被提前发送并驻留在保留站的操作数缓冲器中,直到指令准备好执行为止。
当指令从寄存器文件读取操作数时,由于用在现代高性能CPU设计中的寄存器文件的大小,所以操作功率大。此外,随着更多的执行单元被添加到CPU,构建CPU所需的总裸片面积增大,从而增加寄存器文件读取必须传送的距离,这在指令执行期间会导致更高的功率和更长的延迟。
当操作数准备好时,“保留站”方案将操作数数据保存在缓冲器中。如果操作数正在通过CDB到来,则无论何时发出指令以便执行,都避免寄存器文件读取。然而,保留站针对每个条目维持的操作数缓冲器会导致额外的面积和用电量。此外,如果在指令被重命名时,在寄存器文件中存在操作数,则发生寄存器文件读取,以使保留站接收操作数。
发明内容
一个示例实施例提供一种处理单元,所述处理单元可包括:物理寄存器文件(PRF)、指令执行单元(EU)、操作数缓存(OC)重命名单元(OC-REN)和OC控制单元(OC-CTL)。PRF可存储操作数。EU可包括OC,OC存储在PRF中存储的至少一个频繁使用的操作数的副本。EU可使用从PRF获得的操作数处理指令,或者可使用从OC获得的操作数处理指令。OC-REN可被配置为在第一模式或第二模式下进行操作,在第一模式下,OC-REN可指示EU使用从OC获得的操作数处理指令,在第二模式下,OC-REN可指示EU使用从PRF获得的操作数处理指令。如果与使用从PRF获得的操作数相比使用从OC获得的操作数处理指令使用更少的功率,则OC-CTL可控制OC-REN在第一模式下操作,如果与使用在OC中获得的操作数相比使用从PRF获得的操作数处理指令使用更少的功率,则OC-CTL可控制OC-REN在第二模式下操作。
另一示例实施例提供一种处理单元,所述处理单元可包括:物理寄存器文件(PRF)、指令执行单元(EU)和操作数缓存(OC)重命名单元(OC-REN)。PRF可存储操作数。EU可包括OC,OC存储在PRF中存储的至少一个频繁使用的操作数的副本。EU可使用从PRF获得的操作数处理指令,或者可使用从OC获得的操作数处理指令。OC-REN可在第一模式或第二模式下进行操作,其中,如果与使用从PRF获得的操作数相比使用从OC获得的操作数处理指令使用更少的功率,则在第一模式下OC-REN可指示EU使用从OC获得的操作数处理指令,如果与使用从OC获得的操作数相比使用从PRF获得的操作数处理指令使用更少的功率,则在第二模式下OC-REN可指示EU使用从PRF获得的操作数处理指令。
又一示例实施例提供一种在处理单元中处理指令的方法,所述方法可包括:将操作数存储在物理寄存器文件(PRF)中;将存储在PRF中的至少一个频繁使用的操作数的副本存储在指令执行单元(EU)的操作数缓存(OC)中,EU能够使用从PRF获得的操作数处理指令,或者使用从OC获得的操作数处理指令;并且指示来自OC重命名单元(OC-REN)的EU在第一模式或第二模式下进行操作,在第一模式下,EU使用从OC获得的操作数处理指令,在第二模式下,EU使用从PRF获得的操作数处理指令。在一个实施例中,指示EU在第一模式或第二模式下进行操作的步骤可包括:如果与使用从PRF获得的操作数相比使用从OC获得的操作数处理指令使用更少的功率,则指示EU在第一模式下操作,并且如果与使用在OC中获得的操作数相比使用从PRF获得的操作数处理指令使用更少的功率,则指示在第二模式下操作。
附图说明
在下面的部分中,将参照附图中示出的示例性实施例来描述在此公开的主题的方面,其中:
图1描绘根据在此公开的主题的中央处理器的包括寄存器重命名单元和执行单元的部分;
图2描绘根据在此公开的主题的在可利用操作数缓存的处理单元中处理指令的示例方法的流程图;以及
图3描绘根据在此公开的主题的包括一个或多个集成电路(芯片)的电子装置,集成电路(芯片)包括利用操作数缓存的一个或多个处理单元。
具体实施方式
在下面的具体实施方式中,阐述了许多具体细节以便提供对公开的透彻理解。然而,本领域技术人员将理解,可在没有这些具体细节的情况下实践公开的方面。在其他实例中,没有详细描述公知的方法、过程、组件和电路,以不模糊在此公开的主题。
贯穿本说明书的对“一个实施例”或“实施例”的引用表示:结合该实施例描述的特定特征、结构或特性可包括在在此公开的至少一个实施例中。因此,贯穿本说明书的不同地方出现的短语“在一个实施例中”或“在实施例中”或“根据一个实施例”(或具有类似含义的其他短语)可不一定都指示同一实施例。此外,在一个或多个实施例中,可以以任何合适的方式组合特定的特征、结构或特性。在这方面,如在此使用的,词“示例性”表示“用作示例、实例或说明”。在此描述为“示例性”的任何实施例不应被解释为一定比其他实施例优选或有利。此外,根据在此的讨论的上下文,单数术语可包括相应的复数形式,并且复数术语可包括相应的单数形式。还应注意,在此示出和讨论的各种附图(包括组件图)仅为了说明的目的,并且不按比例绘制。类似地,各种波形和时序图仅为了说明的目的而被示出。例如,为了清楚起见,元件中的一些的尺寸可相对于其他元件被夸大。此外,如果认为合适,则在附图中重复参考标号以指示相应的和/或类似的元件。
在此使用的术语仅为了描述特定示例性实施例的目的,而不意在限制要求权利的主题。除非上下文另有清楚地指示,否则单数形式也意在包括复数形式。还将理解,术语“包括”和/或“包含”当在本说明书中使用时,表明存在陈述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或增加一个或多个其他特征、整体、步骤、操作、元件、组件和/或它们的组。除非如那样清楚地定义,否则在此使用的术语“第一”、“第二”等用作它们之后的名词的标签,并且不表示任何类型的排序(例如,空间、时间、逻辑等)。此外,可在两个或更多个附图之间使用相同的参考标号来表示具有相同或相似功能的部件、组件、块、电路、单元或模块。然而,这样的用法仅为了简化说明和易于讨论,它并不表示这样的组件或单元的构造或结构细节在所有实施例之间都是相同的或者这样共同引用的部件/模块是实现在此公开的特定实施例的教导的唯一方式。
除非另有定义,否则在此使用的所有术语(包括技术术语和科学术语)具有与由本主题所属领域的普通技术人员通常理解的含义相同的含义。还将理解,除非在此清楚地如此定义,否则术语(诸如通用词典中定义的术语)应被解释为具有与它们在相关领域的上下文中的含义一致的含义,并且将不被理想化或过于形式化地解释。
如在此使用的,术语“模块”表示被配置为提供在此结合模块描述的功能的软件、固件和/或硬件的任何组合。软件可被实现为软件包、代码和/或指令集或指令,并且如在此描述的任何实施方式中使用的术语“硬件”可单独地包括例如硬连线电路、可编程电路、状态机电路和/或存储由可编程电路执行的指令的固件,或者可包括硬连线电路、可编程电路、状态机电路和/或所述固件的任何组合。模块可共同地或单独地被实现为形成较大系统(例如,但不限于,集成电路(IC)、片上系统(SoC)等)的部分的电路。
在此公开的主题提供相对小的寄存器文件(而不是一个相对大的寄存器文件)的分布系统,以减小寄存器文件读取功率并减小数据在寄存器文件与执行单元之间传送的距离。在一个实施例中,操作数缓存可维持在CPU的一个或多个执行单元的内部,在一个或多个执行单元中,操作数缓存保持一个或多个频繁使用的操作数(例如,频繁使用的操作数在预定时间(例如,单位时间)内被使用的次数大于预定阈值)的副本。每个缓存的寄存器值也仍维持在用于完成寄存器重命名的寄存器文件中的一个或多个中。向包含操作数缓存的执行单元发出的指令可指示:从传统的操作数源之一或从执行单元中的操作数缓存条目之一读取源操作数。此外,一个或多个指令可指示:读取相同的缓存条目。
寄存器重命名方案可被扩展为维持操作数缓存条目并在适当时指示指令读取缓存的条目,而不是从传统的操作数源(诸如,寄存器文件或公共数据总线网络)读取缓存的条目。在此公开的寄存器重命名方案可在多个类别的指令正利用相同的特定架构和物理寄存器时进行训练并随后进行预测,从而选择指示后续指令利用特定的操作数缓存条目。在一个实施例中,这可通过操作数缓存重命名单元来完成,操作数缓存重命名单元指示特定指令类别(例如,ALU、加载、存储等)的指令将其位于特定的物理寄存器PRF[x]中的源操作数之一保存到特定的操作数缓存条目OC[x]。保证在同一执行单元中执行并且还将来源于特定的物理寄存器PRF[x]的相同指令类别的后续指令指示从OC[x]读取源操作数。此外,操作数缓存重命名单元的逻辑训练并预测何时操作数缓存应被利用来节省功率并减少延迟,从而仅在有利时才允许将在此公开的系统和方法用于工作负载。
操作数缓存可通过以比依赖于从寄存器文件或从CDB读取操作数的典型技术更一致得多的方式避免寄存器文件读取来提供功率节省。当特定指令类别的许多指令正重复消耗相同的操作数值并减少昂贵的寄存器文件读取并将寄存器文件读取替换为节能的操作数缓存读取时,重命名逻辑可预测所期望的方案。
与从远的寄存器文件读取相比,在此公开的主题还可提供从执行单元本地的操作数缓存读取的延迟优势。只要在发出后续指令以执行之前足够早地更新操作数缓存,这就可转化为从操作数缓存读取的指令的延迟优势。
图1描绘中央处理器(CPU)100的包括寄存器重命名单元(REN)101和执行单元(EU)102的部分。EU 102可以是但不限于加载/存储单元(LSU)或算术逻辑单元(ALU)。REN 101可包括操作数缓存重命名单元(OC-REN)103和OC控制器(OC-CTL)104。在一个实施例中,OC-REN 103和OC-CTL 104可被组合为一个单元。
REN 101可使用物理寄存器文件(PRF)105管理对用于指令的寄存器进行重命名。此外,REN 101管理EU 102内的操作数缓存(OC)106。OC 106可以是任何大小。在一个实施例中,OC 106可包括四个条目。在另一实施例中,OC 106可包括32个条目。
OC-REN 103可由OC-CTL104控制/激活。如果OC-REN 103被激活并且正在处理具有地址寄存器操作数的指令,则OC-REN 103可指示EU 102:指令的操作数应被用于更新OC106中的特定条目。此外,如果由OC-REN 103处理的后续指令使用与已用于更新OC 106中的特定条目的操作数相同的地址寄存器操作数,则OC-REN 103还可指示EU 102使用OC 106中的特定条目中的操作数来处理后续指令。
在一个实施例中,EU 102可接收下面的信息或信号以利用OC 106。REN_LSU_INST_CMD信号可向EU 102指示:指令将执行什么类型的操作。例如,针对LSU,命令是加载和存储,而针对ALU,命令是加和/或减。REN_LSU_OC_RD_VALID信号可与发送的EU指令相关联地使用,以指示:指令将在由REN_LSU_OC_ENTRY_ID信号指示的条目读取OC中的操作数,使得EU可生成与指令关联的地址。REN_LSU_OC_WR_VALID信号可与发送的EU指令关联地使用,以指示:指令将在由REN_LSU_OC_ENTRY_ID信号指示的条目将操作数写入OC。REN_LSU_OC_ENTRY_ID信号可用于向EU 102指示:操作数将被写入以更新OC 106的条目位置。
在操作中,EU 102可在根据OC-REN的操作状态处理指令时执行三种可能的动作之一。作为第一种可能的动作,如果OC-REN没有被激活(即,操作的两种模式中的一种模式),则EU 102可通过从PRF 105或从CDB(未示出)读取或获得操作数来正常处理指令。复用器107可被控制为从PRF 105或从CDB获得指令的操作数,该操作数用于在地址生成器108生成指令的地址。指令的地址被指令执行器109使用以执行指令。
作为第二种可能的动作,如果OC-REN被激活(操作的两种模式中的另一种模式),并且REN_LSU_OC_WR_VALID和REN_LSU_OC_ENTRY_ID信号已被指示给EU 102,则EU利用用于生成指令的地址的源寄存器在由REN_LSU_OC_ENTRY_ID信号指示的特定条目更新OC。在这种方案下,如结合第一种可能的动作所述生成指令的地址。
作为第三种可能的动作,如果OC-REN被激活,并且REN_LSU_OC_RD_VALID和REN_LSU_OC_ENTRY_ID信号已被指示给EU 102,则EU在OC 106中的由REN_LSU_OC_ENTRY_ID信号指示的特定条目读取或获得指令的操作数,以生成指令的地址。复用器107可被控制为从OC106获得指令的操作数,该操作数用于在地址生成器108生成指令的地址。指令的地址被指令执行器109使用。
在一个实施例中,OC-CTL 104可基于在CPU设计上确定或测量的下面的功率值来确定何时利用OC 106是有利的。第一功率值是用于从PRF读取寄存器(即,操作数)的功率PRFRD PWR。第二功率值是用于将寄存器(即,操作数)写入OC的功率OCWR PWR,第三功率值是用于从OC读取寄存器(即,操作数)的功率OCRD PWR。
在操作期间,OC-RTL 104(或OC-REN 103)可确定下面的基于当前正由CPU 100执行的软件程序的统计数量。第一统计数量是从OC 106获得操作数的次数,例如,从OC 106读取的当前执行的软件的指令的数量NUMOC RDINST。第二统计数量是操作数被写入OC 106的次数,例如,写入OC的当前执行的软件的指令的数量NUMOC WR INST。因为这两种统计数量通过在执行指令之前评估软件程序的指令而被确定,所以它们本质上是预测。
使用三种功率值和两种统计数量,OC-CTL 104可评估下面的表达式。如果确定为真,则OC-REN使OC读取/写入逻辑激活:
(PRFRD PWR×NUMOC RD INST)>(NUMOC RD INST×OCRD PWR)+(NUMOC WR INST×OCWR PWR) (1)
等式(1)可进一步简化为:
(PRFRD PWR–OCRD PWR)×NUMOC RD INST>(NUMOC WR INST×OCWR PWR) (2)
如果等式被确定为假,则可在OC-CTL评估软件程序的预定时间段内禁用OC-REN逻辑或使OC-REN逻辑去激活,以确定是否可在软件程序的执行的不同部分期间更好地利用OC106。可利用OC 106的条件的示例是:如果大量的EU指令(诸如,1百万条指令)使用相同的操作数来生成指令的地址,或者如果在执行软件程序期间发生了上下文改变。
参照图1,图2描绘根据在此公开的主题的在可利用操作数缓存的处理单元中处理指令的示例方法的流程图。在201,方法开始。在202,OC-CTL 104确定是否激活OC-REN 103。在一个实施例中,OC-CTL 104确定与使用从PRF 105获得的操作数相比,使用从OC 106获得的操作数处理指令是否使用更少的功率。如果是,则流程继续到203,在203,激活OC-REN103。
流程继续到204,在204,确定自激活OC-REN 103以来正处理的指令是否是将由EU102处理的第一指令。如果是,则流程继续到205,在205,OC-REN 103将REN_LSU_OC_WR_VALID信号和REN_LSU_OC_ENTRY_ID信号发送到EU 102。EU利用用于生成指令的地址的源寄存器在由REN_LSU_OC_ENTRY_ID信号指示的特定条目,更新OC 106。在一个实施例中,复用器107可被控制为从OC 106的特定条目获得指令的操作数。操作数用于在地址生成器108生成指令的地址,并且指令的地址被指令执行器109用来执行指令。流程返回到202。
如果在204确定自激活OC-REN以来正处理的指令不是将由EU 102处理的第一指令,则流程继续到206,在206,OC-REN 103将REN_LSU_OC_RD_VALID信号和REN_LSU_OC_ENTRY_ID信号发送到EU 102。复用器107可被控制为从OC 106的特定条目获得指令的操作数。操作数用于在地址生成器108生成指令的地址,并且指令的地址被指令执行器109用来执行指令。流程返回到202。
如果在202由OC-CTL104确定不激活OC-REN 103,则流程继续到207,在207,OC-REN被去激活。流程继续到208,在208,REN 101将REN_LSU_INST_CMD信号发送到EU 102以指示指令将执行什么类型的操作,并且EU 102可通过从PRF 105或从CDB(未示出)读取或获得操作数来正常处理指令。复用器107可被控制为从PRF 105或从CDB获得指令的操作数,该操作数用于在地址生成器108生成指令的地址。指令的地址被指令执行器109用来执行指令。流程返回到202。
图3描绘根据在此公开的主题的包括一个或多个集成电路(芯片)的电子装置300,集成电路(芯片)包括利用操作数缓存的一个或多个处理单元。电子装置300可用在但不限于计算装置、个人数字助理(PDA)、膝上型计算机、移动计算机、网络平板计算机、无线电话、蜂窝电话、智能电话、数字音乐播放器、有线电子装置或无线电子装置。电子装置300可包括通过总线350彼此连接的控制器310、输入/输出装置(I/O装置)320(诸如,但不限于,小键盘、键盘、显示器、触摸屏显示器、相机和/或图像传感器)、存储器330和接口340。控制器310可包括例如至少一个微处理器、至少一个数字信号处理器、至少一个微控制器等。存储器330可被配置为存储将由控制器310使用的命令代码或用户数据。电子装置300和包括电子装置300的各种系统组件可包括根据在此公开的主题的利用操作数缓存的一个或多个处理单元。接口340可被配置为包括无线接口,该无线接口被配置为使用RF信号向无线通信网络发送数据或从无线通信网络接收数据。无线接口340可包括例如天线、无线收发器等。电子系统300还可用在通信系统的通信接口协议(诸如,但不限于,码分多址(CDMA)、全球移动通信系统(GSM)、北美数字通信(NADC)、扩展时分多址(E-TDMA)、宽带CDMA(WCDMA)、CDMA2000、Wi-Fi、市政WiFi(MuniWiFi)、蓝牙、数字增强无绳电信(DECT)、无线通用串行总线(无线USB)、快速低延迟接入与无缝切换正交频分复用(Flash-OFDM)、IEEE 802.20、通用分组无线业务(GPRS)、iBurst、无线宽带(WiBro)、WiMAX、高级WiMAX、通用移动电信服务–时分双工(UMTS-TDD)、高速分组接入(HSPA)、演进数据最优化(EVDO)、长期高级演进(高级LTE)、多信道多点分布服务(MMDS)等)中。
如本领域技术人员将认识到那样,在此描述的创新构思可在广泛的应用范围之上进行修改和改变。因此,要求权利的主题的范围不应限于以上讨论的特定示例性教导中的任何一个,而是由权利要求限定。
Claims (15)
1.一种处理单元,包括:
物理寄存器文件,存储操作数;
执行单元,包括操作数缓存,操作数缓存存储在物理寄存器文件中存储的至少一个频繁使用的操作数的副本,执行单元使用从物理寄存器文件获得的操作数处理指令,或者使用从操作数缓存获得的操作数处理指令;
操作数缓存重命名单元,被配置为在第一模式或第二模式下进行操作,在第一模式下,操作数缓存重命名单元指示执行单元使用从操作数缓存获得的操作数处理指令,在第二模式下,操作数缓存重命名单元指示执行单元使用从物理寄存器文件获得的操作数处理指令;以及
操作数缓存控制单元,如果与使用从物理寄存器文件获得的操作数相比使用从操作数缓存获得的操作数处理指令使用更少的功率,则控制操作数缓存重命名单元在第一模式下操作,如果与使用从操作数缓存获得的操作数相比使用从物理寄存器文件获得的操作数处理指令使用更少的功率,则控制操作数缓存重命名单元在第二模式下操作,
其中,当“通过从物理寄存器文件获得操作数消耗的功率与第一预定数量相乘的结果”大于“通过从操作数缓存获得操作数消耗的功率与第一预定数量相乘的结果”与“将操作数写入操作数缓存的功率与第二预定数量相乘的结果”之和时,操作数缓存控制单元确定与使用从物理寄存器文件获得的操作数相比使用从操作数缓存获得的操作数处理指令使用更少的功率,
其中,当“通过从物理寄存器文件获得操作数消耗的功率与第一预定数量相乘的结果”小于“通过从操作数缓存获得操作数消耗的功率与第一预定数量相乘的结果”与“将操作数写入操作数缓存的功率与第二预定数量相乘的结果”之和时,操作数缓存控制单元确定与使用从操作数缓存获得的操作数相比使用从物理寄存器文件获得的操作数处理指令使用更少的功率,
其中,第一预定数量包括从操作数缓存获得操作数的次数,第二预定数量包括操作数被写入操作数缓存的次数。
2.根据权利要求1所述的处理单元,其中,在第一模式下,操作数缓存重命名单元还指示执行单元将第一指令的操作数存储在操作数缓存中。
3.根据权利要求2所述的处理单元,其中,在第一模式下,操作数缓存重命名单元还指示执行单元获得第一指令的操作数,以用于处理在第一指令之后的第二指令。
4.根据权利要求1所述的处理单元,其中,如果与使用从操作数缓存获得的操作数相比使用从物理寄存器文件获得的操作数处理指令使用更少的功率,则操作数缓存控制单元控制操作数缓存重命名单元在预定时间段内在第二模式下操作。
5.根据权利要求1所述的处理单元,其中,执行单元包括加载/存储单元或算术处理单元。
6.根据权利要求1所述的处理单元,其中,操作数缓存重命名单元和操作数缓存控制单元是所述处理单元的重命名单元的部分。
7.一种处理单元,包括:
物理寄存器文件,存储操作数;
执行单元,包括操作数缓存,操作数缓存存储在物理寄存器文件中存储的至少一个频繁使用的操作数的副本,执行单元使用从物理寄存器文件获得的操作数处理指令,或者使用从操作数缓存获得的操作数处理指令;以及
操作数缓存重命名单元,操作数缓存重命名单元在第一模式或第二模式下进行操作,如果与使用从物理寄存器文件获得的操作数相比使用从操作数缓存获得的操作数处理指令使用更少的功率,则在第一模式下操作数缓存重命名单元指示执行单元使用从操作数缓存获得的操作数处理指令,如果与使用从操作数缓存获得的操作数相比使用从物理寄存器文件获得的操作数处理指令使用更少的功率,则在第二模式下操作数缓存重命名单元指示执行单元使用从物理寄存器文件获得的操作数处理指令,
其中,当“通过从物理寄存器文件获得操作数消耗的功率与第一预定数量相乘的结果”大于“通过从操作数缓存获得操作数消耗的功率与第一预定数量相乘的结果”与“将操作数写入操作数缓存的功率与第二预定数量相乘的结果”之和时,操作数缓存重命名单元确定与使用从物理寄存器文件获得的操作数相比使用从操作数缓存获得的操作数处理指令使用更少的功率,
其中,当“通过从物理寄存器文件获得操作数消耗的功率与第一预定数量相乘的结果”小于“通过从操作数缓存获得操作数消耗的功率与第一预定数量相乘的结果”与“将操作数写入操作数缓存的功率与第二预定数量相乘的结果”之和时,操作数缓存重命名单元确定与使用从操作数缓存获得的操作数相比使用从物理寄存器文件获得的操作数处理指令使用更少的功率
其中,第一预定数量包括从操作数缓存获得操作数的次数,第二预定数量包括操作数被写入操作数缓存的次数。
8.根据权利要求7所述的处理单元,其中,在第一模式下,操作数缓存重命名单元还指示执行单元将第一指令的操作数存储在操作数缓存中。
9.根据权利要求8所述的处理单元,其中,在第一模式下,操作数缓存重命名单元还指示执行单元获得第一指令的操作数,以用于处理在第一指令之后的第二指令。
10.根据权利要求7所述的处理单元,其中,如果与使用从操作数缓存获得的操作数相比使用从物理寄存器文件获得的操作数处理指令使用更少的功率,则操作数缓存重命名单元在预定时间段内在第二模式下操作。
11.根据权利要求7所述的处理单元,其中,执行单元包括加载/存储单元或算术处理单元。
12.一种在处理单元中处理指令的方法,所述方法包括:
将操作数存储在物理寄存器文件中;
将存储在物理寄存器文件中的至少一个频繁使用的操作数的副本存储在来自操作数缓存重命名单元的执行单元的操作数缓存中,执行单元能够使用从物理寄存器文件获得的操作数处理指令,或者使用从操作数缓存获得的操作数处理指令;和
指示执行单元在第一模式或第二模式下进行操作,在第一模式下,执行单元使用从操作数缓存获得的操作数处理指令,在第二模式下,执行单元使用从物理寄存器文件获得的操作数处理指令,
其中,指示执行单元在第一模式或第二模式下进行操作的步骤包括:
如果与使用从物理寄存器文件获得的操作数相比使用从操作数缓存获得的操作数处理指令使用更少的功率,则指示执行单元在第一模式下操作,并且
如果与使用从操作数缓存获得的操作数相比使用从物理寄存器文件获得的操作数处理指令使用更少的功率,则指示执行单元在第二模式下操作,
所述方法还包括:
当“通过从物理寄存器文件获得操作数消耗的功率与第一预定数量相乘的结果”大于“通过从操作数缓存获得操作数消耗的功率与第一预定数量相乘的结果”与“将操作数写入操作数缓存的功率与第二预定数量相乘的结果”之和时,确定与使用从物理寄存器文件获得的操作数相比使用从操作数缓存获得的操作数处理指令使用更少的功率,
当“通过从物理寄存器文件获得操作数消耗的功率与第一预定数量相乘的结果”小于“通过从操作数缓存获得操作数消耗的功率与第一预定数量相乘的结果”与“将操作数写入操作数缓存的功率与第二预定数量相乘的结果”之和时,确定与使用从操作数缓存获得的操作数相比使用从物理寄存器文件获得的操作数处理指令使用更少的功率,
其中,第一预定数量包括从操作数缓存获得操作数的次数,第二预定数量包括操作数被写入操作数缓存的次数。
13.根据权利要求12所述的方法,还包括:在第一模式下,指示执行单元将第一指令的操作数存储在操作数缓存中。
14.根据权利要求13所述的方法,还包括:在第一模式下,指示执行单元获得第一指令的操作数,以用于处理在第一指令之后的第二指令。
15.根据权利要求12所述的方法,还包括:如果与使用从操作数缓存获得的操作数相比使用从物理寄存器文件获得的操作数处理指令使用更少的功率,则指示执行单元在预定时间段内在第二模式下操作。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962791676P | 2019-01-11 | 2019-01-11 | |
US62/791,676 | 2019-01-11 | ||
US16/294,916 US10891135B2 (en) | 2019-01-11 | 2019-03-06 | Register renaming of a shareable instruction operand cache |
US16/294,916 | 2019-03-06 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111435310A CN111435310A (zh) | 2020-07-21 |
CN111435310B true CN111435310B (zh) | 2024-05-03 |
Family
ID=71516077
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010020589.7A Active CN111435310B (zh) | 2019-01-11 | 2020-01-09 | 处理单元和在处理单元中处理指令的方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10891135B2 (zh) |
KR (1) | KR20200087678A (zh) |
CN (1) | CN111435310B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1849580A (zh) * | 2003-05-14 | 2006-10-18 | 索尼计算机娱乐公司 | 预取命令控制方法、预取命令控制装置以及高速缓冲存储器控制装置 |
US9600288B1 (en) * | 2011-07-18 | 2017-03-21 | Apple Inc. | Result bypass cache |
CN107810486A (zh) * | 2015-06-26 | 2018-03-16 | 微软技术许可有限责任公司 | 锁定用于原子地执行的指令组的操作数的值 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5790823A (en) | 1995-07-13 | 1998-08-04 | International Business Machines Corporation | Operand prefetch table |
US7743238B2 (en) * | 2003-05-09 | 2010-06-22 | Arm Limited | Accessing items of architectural state from a register cache in a data processing apparatus when performing branch prediction operations for an indirect branch instruction |
US7340591B1 (en) | 2004-10-28 | 2008-03-04 | Altera Corporation | Providing parallel operand functions using register file and extra path storage |
US9442730B2 (en) | 2013-07-31 | 2016-09-13 | Apple Inc. | Instruction source specification |
US9652233B2 (en) * | 2013-08-20 | 2017-05-16 | Apple Inc. | Hint values for use with an operand cache |
GB2525917B (en) * | 2014-05-09 | 2021-08-11 | Arm Ip Ltd | Energy-based scheduling of operations to be executed by a data processing apparatus |
US9817664B2 (en) | 2015-02-19 | 2017-11-14 | Apple Inc. | Register caching techniques for thread switches |
-
2019
- 2019-03-06 US US16/294,916 patent/US10891135B2/en active Active
- 2019-12-26 KR KR1020190174697A patent/KR20200087678A/ko not_active Application Discontinuation
-
2020
- 2020-01-09 CN CN202010020589.7A patent/CN111435310B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1849580A (zh) * | 2003-05-14 | 2006-10-18 | 索尼计算机娱乐公司 | 预取命令控制方法、预取命令控制装置以及高速缓冲存储器控制装置 |
US9600288B1 (en) * | 2011-07-18 | 2017-03-21 | Apple Inc. | Result bypass cache |
CN107810486A (zh) * | 2015-06-26 | 2018-03-16 | 微软技术许可有限责任公司 | 锁定用于原子地执行的指令组的操作数的值 |
Non-Patent Citations (1)
Title |
---|
Power PC 620微处理器的结构介绍;林钟官;微处理机(03);全文 * |
Also Published As
Publication number | Publication date |
---|---|
US20200225954A1 (en) | 2020-07-16 |
US10891135B2 (en) | 2021-01-12 |
KR20200087678A (ko) | 2020-07-21 |
CN111435310A (zh) | 2020-07-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6751706B2 (en) | Multiple microprocessors with a shared cache | |
EP3031137B1 (en) | Method and apparatus for asynchronous processor based on clock delay adjustment | |
KR101456860B1 (ko) | 메모리 디바이스의 전력 소비를 감소시키기 위한 방법 및 시스템 | |
KR19980032288A (ko) | 전자 회로의 전력 소모를 감소시키기 위한 장치와 방법 | |
CN107077397B (zh) | 用于多处理器动态不对称和对称模式切换的硬件装置和方法 | |
US8539153B2 (en) | System on chip and electronic system having the same | |
US20070076246A1 (en) | Image processing apparatus | |
EP1535169B1 (en) | Improved inter-processor communication system for communication between processors | |
US8190924B2 (en) | Computer system, processor device, and method for controlling computer system | |
KR19980032290A (ko) | 전자 회로의 전력 소모를 감소시키기 위한 장치와 방법 | |
US10956155B2 (en) | Memory load to load fusing | |
CN114187160A (zh) | 图形处理器和数据处理方法 | |
CN101504567B (zh) | 一种cpu、cpu指令系统及降低cpu功耗的方法 | |
CN111435310B (zh) | 处理单元和在处理单元中处理指令的方法 | |
WO2013079988A1 (en) | Integrated circuit device, asymmetric multi-core processing module, electronic device and method of managing execution of computer program code therefor | |
US20040117556A1 (en) | Dynamic pipelining and prefetching memory data | |
EP2775395B1 (en) | Integrated circuit, electronic device and instruction scheduling method | |
JP2009037639A (ja) | ストリーミングidメソッドによるdmac発行メカニズム | |
YAMADA et al. | A low-power embedded RISC microprocessor with an integrated DSP for mobile applications | |
US10101795B2 (en) | System-on-chip (SoC) and method for dynamically optimizing power consumption in the SoC | |
US7290153B2 (en) | System, method, and apparatus for reducing power consumption in a microprocessor | |
KR20190001508A (ko) | 캐시 상태 테이블을 사용하는 캐시 관리를 위한 시스템 및 방법 | |
EP2927806B1 (en) | Integrated circuit, electronic device and ic operation method | |
KR19980032289A (ko) | 전자 회로의 전력 소모를 감소시키기 위한 장치와 방법 | |
KR20030027630A (ko) | 중앙처리장치와 주변 장치들간의 인터페이스를 위한 장치 |
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 |