CN112445310A - 主动di/dt电压下降抑制 - Google Patents

主动di/dt电压下降抑制 Download PDF

Info

Publication number
CN112445310A
CN112445310A CN202010591321.9A CN202010591321A CN112445310A CN 112445310 A CN112445310 A CN 112445310A CN 202010591321 A CN202010591321 A CN 202010591321A CN 112445310 A CN112445310 A CN 112445310A
Authority
CN
China
Prior art keywords
instruction
high power
signal
execution
execution unit
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
CN202010591321.9A
Other languages
English (en)
Inventor
金承珉
尼廷·N·加莱格拉特
阿尼莎·洛克
纳西玛·帕尔文
大卫·Y·方
库尔萨德·克孜洛格鲁
德米特里·谢尔盖耶维奇·卢基亚琴科
法布里斯·帕里特
安德鲁·杨
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of CN112445310A publication Critical patent/CN112445310A/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30083Power or thermal control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/08Clock generators with changeable or programmable clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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 Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Power Sources (AREA)

Abstract

本申请涉及主动DI/DT电压下降抑制。实施例包括一种方法,包括:由处理器核的指令调度器在要由处理器核的执行单元执行的指令流中识别第一高功率指令。预充电信号被断言,指示第一高功率指令被调度用于执行。在预充电信号被断言之后,升压信号被断言以使执行单元的电源电压增加。从执行单元接收指示第一高功率指令正在执行的忙信号。至少部分地基于被断言的忙信号,取消断言升压信号。更具体的实施例包括在取消断言升压信号之后减小执行单元的电源电压。其他实施例包括基于启动延迟时间来延迟断言升压信号。

Description

主动DI/DT电压下降抑制
技术领域
本公开一般地涉及计算机领域,并且更具体地,涉及主动Di/Dt电压下降抑制。
背景技术
高性能计算的需求呈指数增长。并行执行单元(例如矩阵处理单元(MPU))通常用于高性能计算中,因为它们允许同时执行处理或操作。在并行执行的一种形式中,指令流可以分为独立的阶段或部分。假设没有依赖性阻止同时执行,则每个执行单元可以与执行指令流的另一阶段的不同执行单元同时执行指令流的阶段。此外,两个或更多个执行单元可以并行执行阶段。这可以提高正在执行的任务的执行速度。并行化已被用作频率缩放的替代方法,频率缩放可能受到物理约束的限制。然而,并行执行单元受到电压调节器无法抑制因工作负载功率需求的突然变化(Di/Dt)而导致的大电压下降(Vmin)的限制。
发明内容
根据本申请的一方面,提供了一种装置,包括:执行单元;速率控制器电路;指令调度器,耦合到所述速率控制器电路和所述执行单元,所述指令调度器用于:在要执行的指令流中识别第一高功率指令;以及向所述速率控制器电路断言预充电信号,其中,所述速率控制器电路用于:在所述预充电信号被断言之后,断言升压信号以使用于所述执行单元的电源电压增加;以及至少部分地基于所述第一高功率指令正在被执行,来取消断言所述升压信号。
根据本申请的另一方面,提供了一种系统,包括:执行单元;指令调度器,耦合到所述执行单元,所述指令调度器用于:在要执行的指令流中识别第一高功率指令;以及断言第一预充电信号;速率控制器电路,耦合到所述执行单元和所述指令调度器,所述速率控制器电路用于:在所述第一预充电信号被断言之后,断言升压信号;以及电压调节器,耦合到所述速率控制器电路,所述电压调节器用于:响应于接收到所述升压信号,增加用于所述执行单元的电源电压以执行所述第一高功率指令。
根据本申请的又一方面,提供了一种方法,包括:由处理器核的指令调度器在要由所述处理器核的执行单元执行的指令流中识别第一高功率指令;断言预充电信号,该预充电信号指示所述第一高功率指令被调度用于执行;在所述预充电信号被断言之后,断言升压信号以使用于所述执行单元的电源电压增加;从所述执行单元接收指示所述第一高功率指令正在执行的忙信号;以及至少部分地基于所述忙信号被断言,取消断言所述升压信号。
附图说明
为了提供对本公开及其特征和优点的更完整的理解,结合附图参考以下描述,其中相同的附图标记表示相同的部分,其中:
图1是示出根据本公开的至少一个实施例的具有主动Di/Dt电压下降抑制能力的处理器的高级组件的简化框图;
图2是示出根据至少一个实施例的处理器的核中的主动Di/Dt电压下降抑制能力的可能的实现细节的简化框图;
图3是示出根据至少一个实施例的处理器上的工作负载功率需求变化的示例主动Di/Dt电压下降抑制的时序图;
图4是示出当执行矩阵乘法指令时矩阵处理单元中的示例浪涌电流的图;
图5是示出向高性能计算平台的示例功率输送的图;
图6是示出高性能处理元件的示例工作电压和相关工作频率特性的图;
图7是示出可以如何将主动Di/Dt电压下降抑制能力与其他高级功率管理技术结合使用的图;
图8是示出根据至少一个实施例的利用主动Di/Dt电压下降抑制能力实现的计算系统的可能操作的简化流程图;
图9是示出根据至少一个实施例的利用软件辅助功率管理能力实现的计算系统的更多可能的操作的简化流程图;
图10是示出根据至少一个实施例的利用软件辅助的功率管理能力实现的计算系统的更多可能的操作的简化流程图;
图11是根据一个实施例的寄存器架构的框图;
图12A是示出根据本公开的实施例的示例性顺序流水线和示例性寄存器重命名、乱序发布/执行流水线两者的框图;
图12B是示出了根据本公开的实施例的要被包括在处理器中的顺序架构核的示例性实施例和示例性寄存器重命名、乱序发布/执行架构核两者的框图;
图13A-13B示出更具体的示例性顺序核架构的框图,该核是芯片中的多个逻辑块(包括相同类型和/或不同类型的其他核)之一;
图14是根据本公开的实施例的可以具有多于一个核、可以具有集成存储器控制器并且可以具有集成图形的处理器的框图;
图15-18是示例性计算机架构的框图;以及
图19是根据本公开的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图。
具体实施例
以下公开提供了用于实现本说明书中公开的特征的各种可能的实施例或示例。这些特征与处理元件(例如中央处理单元(CPU))的主动Di/Dt电压下降抑制能力有关。在包括一个或多个具有多个执行单元的核的处理器中可以实现主动Di/Dt电压下降抑制能力。在具有主动Di/Dt电压下降抑制能力的系统中,对输入的指令队列进行分析以检测高功率指令。例如,涉及多个计算层的机器学习处理可以使用高功率指令。当检测到高功率指令时,在调度指令流从低功率指令转换到高功率指令时,请求暂时升高电源电压。当高功率指令完成时或者当电压调节器赶上来能够补偿较高的功率需求时,电源电压的暂时升高可被停止。
为了说明具有主动Di/Dt电压下降抑制能力的处理器的几个实施例,重要的是首先理解与并行处理以及高功率指令和低功率指令之间的转换相关的操作和活动。因此,以下基础信息可以被视为可以适当地解释本公开的基础。
过去,频率缩放导致计算机性能的提高。在保持其他因素不变的同时增大时钟频率通常会减少应用的运行时间。然而,增大频率也增大了处理元件中使用的功率量。这由计算功耗P的公式示出:
P=C x V2x F
C=每个时钟周期切换的电容
V=电压
F=每秒的时钟周期
最近,并行执行已被用来减轻功耗和临界设备温度的问题。并行执行单元被配置为同时执行任务的操作,以加速任务的执行完成。然而,为并行执行供电的电压调节器通常无法抑制由于工作负载功率需求的突然变化(Di/Dt)而引起的大电压下降(Vmin),其中Di/Dt是电流的瞬时变化率,单位为安培/秒。电压下降是指设备试图驱动负载时输出电压的损失。在一个示例中,电压下降可能是由于没有向处理器提供足以驱动重负载(例如,高功率指令(例如,并行运行))的电流而引起的。
当计算指令从单线程标量操作变为多线程并行操作时,中央处理单元(CPU)的功率需求可能立即从低功耗状态变为极高功耗状态。由于电压调节器无法快速补偿电阻式输电网络上突然的功率损耗,因此这些功率需求的突然变化可能导致CPU电源线上的急剧电压下降。当电压降至更低时,相关的CPU工作频率也降至更低。当电压下降到低于维持最大工作频率(Fmax)所需的最小电源电压(Vmin)时,系统发生故障,因为该电压已下降到低于可持续频率。
通常,已经使用三种方法来避免由于突然的电压下降而导致的这些类型的系统故障。首先,系统可以被设计为以最大频率以下的频率工作,使得电压最小阈值较低。第二,系统可以被设计为在更高的电压下工作。这为电压下降而不会下降到低于Vmin创造了更大的范围。第三,系统的电源可以被增强以最小化功率传输网络(PDN)阻抗。当前的解决方案可以使用这些技术的任何组合。实际上,一些系统可能采用所有三种技术的组合。在给定计算系统上实现的特定技术可能取决于该计算系统的特性。例如,移动设备倾向于在较低的频率下工作,性能设备倾向于在较高的电压下工作,而高级设备倾向于在加强型(或增强型)电源下工作。三种技术的组合试图解决计算设备的各种特性所呈现的所有问题。
这些当前技术不足以抑制Di/Dt电压下降并在成本、性能和/或可靠性上做出折衷。例如,低频解决方案牺牲了性能,高压解决方案牺牲了可靠性并浪费了功率,而增强的电源解决方案牺牲了成本。依赖于这三种技术的组合的解决方案牺牲一定程度的成本、性能和可靠性。简而言之,即使是抑制电压下降的可用技术的组合,也是折衷的选择。
主动Di/Dt电压下降抑制技术解决了许多上述问题(以及更多问题)。具体地,电压下降抑制技术在不牺牲可靠性或增强电源的情况下最大化计算性能。在至少一个实施例中,核被配置为基于分析高功率指令的指令队列来检测预期的功率浪涌。当高功率并行执行单元被调度运行时,核可以通知电压调节器。因此,可以发出暂时升高电源电压的要求,以适应向高功率指令的转换。当并行引擎开始执行高功率指令时,电压调节器提供暂时的升压以补偿预期的电压下降。随后,当高功率指令完成时或当电压调节器赶上来能够补偿较高功率需求时,可以停止暂时升压。
在主动Di/Dt电压下降抑制技术中,升压请求可以被定时以就在执行高功率指令之前执行,使得增加的功耗与增加的电源功率一致。在这种情况下,需求和供应变化的净影响被抵消,这导致CPU工作电压的净零变化。因此,主动Di/Dt电压下降抑制可以提供更高的性能、更高的效率和更高的硬件利用率。首先,由于可以通过主动调度电压调节器和并行执行单元以实现电源电压和需求的平衡来保持恒定的CPU电压水平,CPU能够以最大频率运行,因此可以实现较高的性能。其次,一个或多个实施例使CPU能够以最大效率运行,因为除非调度执行高功率指令,否则电源电压可以保持接近Vmin,这提供最大工作频率。最后,一个或多个实施例允许CPU更加可靠地运行,因为施加到CPU的电压保持接近Vmin,这保证了对设备的硅施加最小应力。因此,可以生产性能更高的产品,同时产品的用户受益于具有较低成本的电压调节器的更可靠的系统。
转到图1,现在提供关于具有主动Di/Dt电压抑制能力的可能处理器100的简要描述。处理器100包括至少一个核120(1)-120(M)和存储器115。核120(1)-120(M)包括一个或多个相应执行单元,例如核120(1)中的执行单元160A和160B和核120(M)中的执行单元160C和160D。应当注意,出于示例目的,在每个核中示出了两个执行单元,但是核120(1)-120(M)可以包括任意数量的执行单元。在一个或多个实施例中,核120(1)-120(M)还包括相应的指令解码器和调度器130(1)-130(M)以及速率控制器140(1)-140(M)。在与来自指令解码器和调度器以及执行单元的信号协调下,速率控制器140(1)-140(M)可以被配置为主动抑制由核的执行单元上的工作负载功率需求的突然变化引起的电压下降。
存储器115可以包括系统存储器,其可以与核120(1)-120(M)分开。在至少一些实施例中,存储器115可以被实现为高带宽存储器(HBM)。处理器100可以被配置为单个裸片,或者可以包括用于双裸片配置的附加核、执行单元和存储器。在一个示例中,核120(1)-120(M)可以被实现为张量处理核(TPC),并且执行单元160A、160B、160C、160D可以被实现为矩阵处理单元(MPU)。核可以形成张量处理集群。
在一个或多个实施例中,应用可以被编译为包括指令105的代码。具有指令105的编译后的代码可以由处理器100从存储器中提取并存储在缓存中。在一个示例中,执行单元160A-160D可以被配置为并行运行(例如,执行)来自代码的指令。例如,矩阵乘法(MM)指令涉及两个矩阵相乘,这包括许多操作以将第一矩阵中每行的元素与第二矩阵中每列的元素相乘并将乘积相加。因此,许多操作可以由两个以上的执行单元并行执行。
在张量处理核(TPC)中,TPC执行单元(例如,矩阵处理单元(MPU))可用于为应用执行多个级别的工作,例如深度神经网络(DNN)机器学习应用。可以向每个MPU提供DNN应用的指令,并且可以将数据分发到每个MPU以计算其自身的结果。MPU的结果可以被组合以生成特定级别的工作的结果。数据可以被返回到存储器,新的数据可以被分发到MPU,并且每个MPU可以基于上一级的结果和新的数据来计算新的结果。该处理可以由MPU使用并行处理来重复执行,直到达到最终结果。
指令105可以由指令解码器和调度器(例如130(1)-130(M))解码并进行分析,以识别特定指令是高功率指令还是低功率指令。速率控制器(例如140(1)-140(M))可以基于调度指令流从低功率指令转换到高功率指令来请求电源电压的暂时升高。当高功率指令完成或电压调节器能够补偿更高的功率需求时,速率控制器可以进一步请求停止电源电压的暂时升高。
图2是示出配置有主动Di/Dt电压下降抑制能力的核220的可能细节的框图。到核220的输入可以包括指令流的指令205,并且输出包括被传送到电压调节器270的升压(Vboost)信号252,电压调节器270用于向核220(以及处理器中的其他核)中的元件提供电压。核220示出了处理器100的核120(1)-120(M)的可能的实现细节。核220可以包括指令解码器和调度器230、指令队列235、速率控制器240和执行单元260。在至少一个实施例中,速率控制器240可以包括配置有开始和停止延迟计数器242和246、开始和停止与门243和247以及设置/重置电路250的电路。
在一个或多个示例中,指令解码器和调度器230可以包括指令解码器电路和调度器电路。指令解码器电路可以被配置为解码指令流中的指令205。调度器电路可以被配置为在执行流水线中执行调度阶段,以调度指令205用于执行。可以使用指令队列235来调度指令205,该指令队列235可以由执行单元260访问。在一个或多个实施例中,可以增强指令解码器和调度器230中的调度器电路以检测高功率指令。当检测到高功率指令时,指令解码器和调度器230可以断言(assert)预充电信号232以启动延迟计数器242。
高功率指令的检测可以通过将高功率指令与低功率指令区分开来实现。例如,深度学习(例如,深度神经网络(DNN))应用通常包含涉及同时数千个不同乘数的乘法的指令。许多深度学习应用中使用的矩阵乘法(MM)指令是涉及大矩阵的乘法的一个示例。其他示例包括但不限于使用基于向量的处理执行大量计算的指令。例如,这些类型的指令通常比其他指令(例如从存储器中读取数据)需要更大的功率。因此,可以通过将矩阵乘法指令(或执行大量计算的类似指令)与指令流中的其他指令区分开,来检测高功率指令。对指令流中高功率指令的检测使得可以对指令流中的功率浪涌(surge)进行优先识别。
执行单元260可以与核220和/或其他核(例如120(1)-120(M))中的其他执行单元并行地执行来自指令队列235的指令。指令可以包括对需要大量计算资源的机器学习应用执行深度神经网络(DNN)指令的计算指令。例如,用于乘以矩阵的MM指令可以由执行单元260执行。当执行单元发起诸如矩阵乘法指令的高功率指令的执行时,执行单元260可以断言忙信号262。
启动延迟计数器242和停止延迟计数器246可以是可编程定时器,其用于从通常使用的低功率指令中筛选出连续使用的高功率指令以适应不同的电压调节器能力。在至少一个实施例中,启动延迟计数器242可以被调谐到启动延迟时间。起始延迟时间可以是起始延迟计数值的形式,该起始延迟计数值设置在接收到预充电信号232之后由起始延迟计数器242计数的时钟周期的数量。在断言预充电信号232之后,Vboost信号252可以在启动延迟时间到期后被断言。启动延迟计数器242通过对时钟周期进行计数直到达到启动延迟计数值,来确定启动延迟时间何时到期。因此,启动延迟时间可以被计算如下:
启动延迟时间(ns)=启动延迟计数值(编程的时钟周期数)*时钟周期(ns/时钟周期)
在一个或多个实施例中,启动延迟时间是Vboost信号252的设置时间356,在此期间高功率指令尚未开始执行。启动延迟计数值可以被选择以最小化Vboost设置时间356,但是不会导致在Vboost信号被断言之前启动执行。应该注意的是,每个指令的启动延迟计数值可以相同,也可以不同。
在一个示例中,启动与门243用于基于来自预充电信号232和启动延迟计数器242的输入来输出启动信号244。因此,当已经接收到预充电信号时,并且启动延迟计数器242达到编程的启动延迟计数值,则高(例如,二进制1)启动信号244可以将设置/重置电路250设置为断言Vboost信号252。
在至少一个实施例中,停止延迟计数器246可以被调谐到停止延迟时间。停止延迟时间可以采用停止延迟计数值的形式,其设置Vboost信号252应保持被断言的时钟周期数。在至少一个实施例中,停止延迟时间可以采用停止延迟计数值的形式,其设置在高功率指令的执行开始之后(例如,在忙信号262被断言之后)由停止延迟计数器246计数的时钟周期数。在断言忙信号262之后,在停止延迟时间到期之后,Vboost信号252可以被取消断言(de-asserted)。停止延迟计数器246通过对时钟周期进行计数直到达到停止延迟计数值,来确定何时停止延迟时间到期。因此,停止延迟时间可以被计算如下:
停止延迟时间(ns)=停止延迟计数值(编程的时钟周期数)*时钟周期(ns/时钟周期)
在一个或多个实施例中,停止延迟时间是Vboost信号252的保持时间358。停止延迟计数值可以被选择以最小化Vboost保持时间358,在此期间电源电压暂时升高到最小电压以上。应注意的是,每个指令的停止延迟计数值可以相同,也可以不同。
在一个示例中,停止与门247用于基于来自忙信号262和停止延迟计数器246的输入来输出停止信号248。因此,当接收到忙信号时,并且停止延迟计数器246达到编程的停止延迟计数值,则高电平(例如,二进制1)停止信号248可以将设置/重置电路250重置为取消断言Vboost信号252。
在一个或多个实施例中,设置/重置电路250可以被配置为设置/重置触发器(flip-flop)电路,具有基于预充电信号232和启动延迟时间的设置(S)输入和基于忙信号和停止延迟时间(或保持时间)的重置(R)输入。输出(Q)通过设置(S)信号输入被触发为高电平状态,并保持该值,直到通过重置(R)信号输入将其重置为低电平。当输出(Q)被触发到高电平状态时生成Vboost信号252,并可将其断言到电压调节器270。
可以使用任何适当的架构来实现电压调节器270。在一个示例中,数字电压调节器架构(dFIVR)可以用于实现电压调节器270。电压调节器270可以包括电压调节器(VR)补偿电路(在本文中也称为“Vboost电路”),其响应于接收Vboost信号252作为输入而执行VR补偿功能。当由Vboost信号252触发时,VR补偿功能可以包括将电源电压增加或“升高”到系统允许的最大电压(Vmax)。
在一个或多个实现方式中,本文的实施例可以在深度神经网络(DNN)加速器ASIC上实现。执行单元260可以是张量处理集群的张量处理核(TPC)中的矩阵处理单元(MPU),并且可以执行矩阵乘法(MM)指令。指令解码器和调度器230可以被实现为DNN加速器的TPC上的微代码控制器(MCC)。主动Di/Dt电压下降抑制逻辑可以利用DNN加速器ASIC内TPC上的MCC来从低功率指令中检测高功率指令。尽管可以在TPC中实现主动Di/Dt电压抑制逻辑,但明显的是,本文公开的概念可适用于采用各种硬件配置的许多其他架构。因此,对TPC的参考和描述并非旨在进行限制,而是旨在出于说明目的来进一步解释和说明可能的实施例。
图3是示出根据至少一个实施例的工作负载功率需求变化的主动Di/Dt电压下降抑制的示例场景的时序图300。现在将主要参考图2和图3描述具有主动Di/Dt电压下降抑制能力的处理器的操作。
在时序图300中,针对执行单元260生成时钟信号290以执行指令205。预充电信号232、忙信号262和Vboost信号252最初为低(即,0)。针对电压调节器270的输出电压生成集成电压调节器(IVR)时钟信号237。在时序图300中,IVR时钟信号237具有七个时钟周期311-317。
在一个或多个实施例中,电压调节器270可被实现为完全集成的数字电压调节器(例如,数字频率集成电压调节器(dFIVR)),其使用脉冲宽度调制(PWM)控制机制来生成补偿电压。由于电压调节器利用数字PWM,因此可以通过简单的数字选择信号(例如Vboost信号252)将PWM的预设值从标称电压快速切换到更高百分比补偿电压。时序图300还示出了PWM信号274和电压调节器(VR)电压信号272。VR电压信号272从Vmin开始,Vmin是维持最大工作频率(Fmax)所需的最小电压。
在操作期间,具有指令205的指令流可以由核220下载到缓存中,并由指令解码器和调度器230访问。在至少一个实施例中,指令解码器和调度器230的调度器监视指令流并检测高功率信号。例如,调度器可以检测从IDLE转换为MM信号(或一些其他已知的高功率信号)的信号。
当检测到高功率指令时(例如,通过增强的调度器),预充电信号232被断言以通知电压调节器270高功率指令被调度为例如由执行单元260并行执行。可编程启动延迟计数器242和停止延迟计数器246的值可以被调谐以将高功率指令的执行和相关的电压调节器(例如270)的升压对齐,以最小化在电压调节器能够调整用于新的高功率需求之前较高电压被用于补偿预期电压下降的时间。因此,启动延迟计数器242可以基于一定时间量(例如,编程的时钟周期数)来延迟Vboost信号252的断言。在时序图300中,Vboost信号252的断言从332处的预充电断言被延迟到352处的Vboost断言。
响应于在352处Vboost信号252被断言,电压调节器270在382处切换到更高的电压,这补偿了由于调度的高功率指令而导致的预期电压下降。如时序图300所示,就在执行单元260开始执行高功率指令之前,电压信号272达到Vmax(最大电压),这由在断言点362处的忙信号262指示。当高功率指令(例如,激活1024个乘积和累加引擎的实例的MM指令)的执行开始时,增加的功率消耗产生显著的电压下降384。因为Vboost信号252预先调度了电压调节器270来增加电压以补偿预期的电压下降,然而,执行单元260所看到的有效电压不会降到Vmin以下(用于维持最大时钟频率的最小电压)。因此,即使在高功率指令执行期间,核(例如120(1)-120(M),220)也可以维持全时钟频率(例如290)。否则,当电源电压保持在标称电压时,没有该主动Di/Dt电压抑制逻辑的系统可能因电压急剧下降而发生故障。
当执行单元260开始执行高功率指令时,执行单元断言忙信号262,如362所示。忙信号的断言触发Vboost信号252的取消断言处理。在一个或多个实施例中,停止延迟计数器246基于保持时间(例如,编程的时钟周期数)来延迟取消断言。一旦达到保持时间,则可以在354处取消断言Vboost信号252。保持时间被配置为确保电压调节器270将赶上来并且将能够响应新增加的功率电平而无需保持电压升高。
如果没有调度其他高功率指令,则在354处,电压调节器270可以将电压电平降低至适当的电平。在一些场景下,电压水平可以降低到Vmin(最小电压),其中电压电平可以保持到另一个高功率指令被调度为止。
在另一种场景下,如时序图300中所示,可以在调度第一高功率指令之后但在取消断言Vboost信号之前,调度另一高功率指令。在时序图300中,在334处再次断言预充电信号232。随后,执行单元260开始执行第二高功率指令,并且在364处再次断言忙信号262。因为在364处Vboost信号252仍然被断言,所以另一Vboost信号没有被断言。电压信号272足够高以处理诸如第二高功率指令的376A-376B之类的电压下降。因此,基于延迟计数器246在响应于在362处忙信号262的第一断言而被启动之后达到停止延迟计数值,Vboost信号252被取消断言。在其他实现方式中,在364处的忙信号262的后续断言再次触发Vboost信号252的取消断言处理。在该实现方式中,停止延迟计数器246重新启动停止延迟计数以延迟Vboost信号252的取消断言。因此,可以将Vboost信号断言保持更长的时间,因为停止延迟计数响应于364处忙信号的后续断言而被重新启动。但是,在一些场景下,可能更希望最小化Vboost信号被断言的时间量。在这样的场景下,停止延迟计数器不被重新启动,并且基于响应于忙信号的先前断言而发起的停止延迟计数来取消断言Vboost信号(例如,在362处)。
一旦Vboost信号252被取消断言,电压调节器270就可以将电压电平降低到适当的电平。在这种场景下,由于当Vboost信号被取消断言时第二高功率指令仍在执行,因此电压信号272可以被降低到标称电压电平(例如,在Vmin和Vmax之间),此时升压不再被提供,但执行单元有足够的电压以防止电压降低到Vmin以下。
转到图4,图4是描绘当处理器的执行单元开始执行高功率指令时预期的Di/Dt功耗的曲线图400。更具体地,当矩阵处理单元(MPU)开始执行矩阵乘法(MM)指令时,功率仿真波形402显示在4纳秒(ns)的时间帧内16.5A的可能电流浪涌。随着集成在处理器中的核的数量的增加,产生的功率浪涌也会成比例地增加。例如,当所有40个核中的执行单元启动MM指令时,具有40个核的处理器可能具有高达660A的所产生的功率浪涌。
通过输入特征图(IFM)操作410可以获取MM指令的至少一些数据。IFM操作410可以读取存储器,提取[X]和[Y]操作数,并将操作数存储在多维数组中供MPU使用。此操作使用2百万个节点以大约2%的功率需求执行。
通过输入算术引擎(IAE)操作404可以对[X]和[Y]操作数执行预处理,以为乘法器准备数据。IAE操作404引起初始尖峰。并行矩阵乘法(MM)和求和指令406引起100%功率需求和8千万个节点的第二个尖峰。因此,MPU在4纳秒内从低端到高端升高16.5A。通常以毫秒为单位工作的电源仅在4纳秒内接收到巨大的电源需求。因此,该电源无法在如此短的时间帧内适应如此高的功率需求。
在计算完成之后,输出算术引擎(OAE)操作408可以通过例如移位结果以按比例缩小结果来操纵输出。操纵可以在高功率水平下执行。
图5是描绘针对高性能计算平台的功率传输网络阻抗的典型示例的曲线图500。示例计算平台包括40个张量处理核(TPC),其中最大电流为16.4A(在0.85V、2GHz处为9.7nFCdyn)。曲线510示出针对具有10μF DSC的先前记录计划(POR)的阻抗,并且曲线520示出针对具有1μF DSC的最终POR的阻抗。
对于低于10KHz的频率,曲线图500中所示的交流(AC)特性阻抗约为200μOhm,并且在大约50KHz和5MHz的工作电源电压下,典型的最坏情况下的阻抗约为600μOhm。因此,在这种常见场景下,当所有核(例如40个核)开始执行MM指令时,最坏情况下的电压下降可能高达-46%(约394μV的下降)。在不显著增加电源电压或降低PDN阻抗的情况下,该系统很可能发生故障。
具有曲线图500中所示的特性的实施例可以被配置有主动Di/Dt电压抑制能力以防止系统故障。如果系统通常以800mV(毫伏)运行,则394mV的下降几乎是系统运行电压的一半。为了对此进行补偿,需要将电压至少增加200毫伏才能达到中间点。在这种场景下,系统可能需要以1.2伏而不是800mV的电压运行。主动Di/Dt电压抑制逻辑提供了将电压保持在0.85V的能力,并且仅在需要转换到最大电压时进行补偿(例如,对于矩阵乘法指令)。
图6是描绘高性能中央处理单元(CPU)的典型工作电压和相关工作频率特性的线图600。线图600示出绘制示例CPU的电压与频率的关系的线602。线602上的图包括睡眠(SLEEP)、踱步(PACE)、运行(RUN)和突发(BURST)。睡眠表示正在执行的工作很少或根本没有,因此需要最小的功率。踱步是故意降低系统速度以节省功率时使用的电压和频率。运行是正常频率和工作点。最后,突发表示要完成大量工作(例如MM指令),因此需要增加的电压。
线图600示出了降低的电压转化为降低的频率。更具体地,当CPU电压由于增加的电流消耗而下降时,为了防止系统故障,可以补偿系统以更高的电压或更低的频率运行。
传统系统通常在较高的电压和较低的频率下运行,以避免由于突然的电压下降而导致的系统故障,以适应高功率指令。在示例中,CPU可能具有在最小电压(Vmin)以上运行的计算受限的工作负载。通过实现更好的频率电压曲线并以稍更的电压运行,这些工作负载可以在同一功率下以更高的性能运行。例如,考虑使用CPU在1.8GHz和0.75v下运行的RUN频率和电压。如果系统电压下降到踱步电压(例如0.65v),则频率需要下降到约1.3GHz以避免系统故障。如线604所示,如果电压增加到0.85v并且系统以1.8GHz运行,则可以维持606处的电压下降所需的1.8GHz频率。因此,以较高的电压和较低的频率运行系统可以使系统故障最小化。然而,在这样的配置中,浪费了在604处指示的多余功率。
在本文描述的一个或多个实施例通过请求电压调节器补偿由于已检测到的被调度指令的执行而预期的浪涌电流来动态地执行补偿电压生成。因此,一个或多个实施例通过主动、动态地抑制由高功率指令引起的电压下降既预防系统故障,又最小化功率浪费。
图7示出了补充曲线图700A,700B和700C,这些曲线图描述了如何将主动Di/Dt电压下降抑制技术与利用动态电压和频率缩放技术的其他高级电源管理结合使用。具体地,主动Di/Dt电压下降抑制技术可以应用于在高功率指令执行期间发生稀疏性(sparsity)的场景。在执行乘法并且许多要相乘的因子为零时,会发生稀疏性。例如,在矩阵乘法中,如果矩阵包含零,则许多计算将通过将某个数字乘以零来执行。由于零乘以任何其他数字所得的结果始终为零,因此无需执行此计算。因此,当高功率指令开始执行时,可以应用主动Di/Dt电压下降抑制技术来提供初始电压升高,然后当功率需求由于矩阵的稀疏性而降低时取消断言Vboost信号。
在一个或多个实施例中,当高功率指令被调度用于执行时,可以利用指令解码器和调度器(例如,130(1)-130(M)、230)来请求适当量的电压升高,以补偿高功率的预期执行。通过调谐可编程延迟计数器以匹配VR延迟和执行单元的执行流水线的特性,电压升高和高功率指令的执行可以被调度重合,以抵消有效电压下降来保持恒定(或接近-恒定)的CPU电压,即使矩阵的稀疏性降低了执行期间的功率需求。这样的实施例可以实现最大的性能、可靠性和较低的成本。
图7示出了其中电压下降抑制可以被配置为适应高功率指令的输入矩阵的稀疏性的场景。曲线图700A示出了当输入稀疏时在高功率指令执行期间用于抑制电压下降的信号,曲线图700B示出了与高功率指令执行有关的功率需求,并且曲线图700C示出了在高功率指令执行期间的补充电流。在曲线图700C中,TPC_ICC曲线708示出了在高功率指令执行(例如,MM指令)期间的电流的示例,包括由于输入的稀疏性而引起的电流减小710。在曲线图700B中,VDD_TPC曲线706示出了在高功率指令执行期间执行单元的功率需求。曲线图700A示出了当高功率指令开始执行时被断言的MM忙信号704。曲线图700A还示出了在执行开始之前被断言并且在执行开始之后的某个时间被取消断言的Vboost信号702。
如VDD_TPC曲线706所示,第一电压尖峰720就在高功率指令的执行开始之后发生,如MM忙信号704在705处的断言所示(例如,当MM忙信号变高时)。在720处的初始电压尖峰之后,在722处发生另一电压尖峰,然后由于输入的稀疏性而使电压下降。适应输入稀疏性的实施例可以被配置为预测稀疏性的发生,使得电压可以被升高以补偿增加的电压需求(例如,当高功率指令开始执行时),然后在稀疏性导致功率需求减小时电压被减小。然后可以再次升高电压以补偿任何进一步的电压跳变。
转到图8-10,示例流程图示出了可以与本文描述的实施例相关联的操作的可能流程800-1000。在至少一个实施例中,一组或多组操作对应于图8-10的活动。在至少一个实施例中,具有核(例如120(1)-120(M)、220)或其一部分的处理器(例如100)可以利用一组或多组操作。具体地,指令解码器和调度器(例如130(1)-130(M)、230)、速率控制器(例如140(1)-140(M)、240)和执行单元(例如,160A-160D)可以利用和/或执行一组或多组操作。在至少一个实施例中,流程800-1000示出了在具有多个核的处理器中实现主动Di/Dt电压抑制能力的一个示例。
通常,图8的流程800示出了当高功率指令被核(例如220)的执行单元(例如260)调度和执行时的主动Di/Dt电压抑制。在802处,在指令流中识别高功率指令。例如,矩阵乘法(MM)指令是可以被识别的高功率指令的示例。在至少一个实施例中,高功率指令由核中的调度器识别。在一个实现方式中,调度器可以是指令解码器和调度器(例如230)的一部分。在其他实施例中,调度器可以与解码器分开。
在804处,高功率指令可以由调度器调度用于执行。在一个示例中,高功率指令可以在被调度用于执行时被添加到指令队列(例如235)。
在806处,响应于调度高功率指令用于执行来断言预充电信号。在至少一个实施例中,预充电信号被断言以通知电压调节器(例如,270)高功率指令被调度用于执行,使得电压调节器可以动态地且主动地暂时升高电源电压,以补偿在执行高功率指令时将发生的初始电压下降。
在808处,响应于预充电信号的断言,用于向电压调节器通知高功率指令的Vboost信号的断言被延迟。在至少一个实施例中,预充电信号被发送到启动延迟计数器(例如242)和启动与门(例如243)。启动延迟计数器可以利用启动延迟计数值来编程,该启动延迟计数值指示在断言Vboost信号之前要计数的时钟周期数。因此,Vboost信号的断言被延迟,直到启动延迟时间到期为止,该时间是基于启动延迟计数值确定的。一旦由启动延迟计数器计数的时钟周期数等于启动延迟计数值,则启动延迟时间到期,并且启动延迟计数器可以向启动与门发送信号,启动与门可以生成启动信号(例如,244)以触发来自设置/重置电路的Vboost信号断言。
在810处,基于预充电信号的断言和启动延迟周期的到期,向电压调节器断言升压信号。
在812处,电压调节器响应于Vboost信号的断言而增加电压。在至少一个实施例中,电压可以被增加到最大电压(Vmax),使得存在更多的空间来适应大的电压下降。在一个或多个实施例中,启动延迟时间被选择为确保在执行高功率指令之前或与之相一致地升高电压。
在814处,在增加电压之后,发起高功率指令的执行,并且响应于高功率指令的执行,断言忙信号。
在816处,响应于忙信号的断言,Vboost信号基于停止延迟时间而被维持,该停止延迟时间在本文中也被称为“保持时间”。在一个或多个实施例中,可以利用停止延迟计数值对停止延迟计数器(例如246)进行编程,该停止延迟计数值指示在取消断言Vboost信号之前要计数的时钟周期数。因此,Vboost信号的取消断言被延迟,直到停止延迟时间(或保持时间)到期为止,这是根据停止延迟计数值确定的。一旦由停止延迟计数器计数的时钟周期数等于停止延迟计数值,则停止延迟时间到期,并且在818处,Vboost信号被取消断言,以允许电源电压取决于特定场景而降低到标称值或最低水平。例如,如果另一高功率指令在第一高功率指令完成执行之前开始执行,则在第二高功率指令的其余执行期间,电压信号可以被降低到标称电压电平。然而,如果在第一高功率指令完成执行时没有其他高功率指令被调度,则可以将电压信号降低到最小电压电平。
图9的流程900示出了与在预充电信号被断言之后延迟Vboost信号的断言有关的活动的可能细节。在至少一个实施例中,启动延迟计数器(例如242)、启动与门(例如243)和设置/重置电路(例如250)被协调以延迟Vboost信号的断言,其中延迟基于启动延迟时间。流程900中的一项或多项活动可以在流程800中的808处发生。
在902处,启动延迟计数器接收预充电信号。在904处,响应于接收到预充电信号,启动延迟计数器被起动。
在906处,可以在时钟周期完成之后使启动延迟计数器递增。在至少一个实施例中,可以利用以用于延迟Vboost信号的断言的时钟周期数的形式指示启动延迟时间的值,来对启动延迟计数器进行编程。
在908处,确定启动延迟时间是否到期(例如,已计数到所编程的时钟周期数)。例如,如果启动延迟计数器等于所编程的启动延迟计数值,则启动延迟时间到期。
如果启动延迟时间尚未到期,则流程返回906以基于时钟周期再次使启动延迟计数器递增。然而,如果启动延迟时间到期,则在910处,启动信号被生成并提供给设置/重置电路250以触发对电压调节器的Vboost信号的断言。
图10的流程1000示出了与在忙信号被断言之后延迟Vboost信号的取消断言有关的活动的可能细节。在至少一个实施例中,停止延迟计数器(例如246)、停止与门(例如247)和设置/重置电路(例如250)被协调以延迟Vboost信号的断言,其中延迟基于停止延迟时间(或保持时间)。流程1000中的一个或多个活动可以在流程800中的816处发生。
在1002处,停止延迟计数器接收忙信号。在1004处,响应于接收忙信号而起动停止延迟计数器。
在1006处,可以在时钟周期完成之后使停止延迟计数器递增。在至少一个实施例中,可以利用以用于延迟Vboost信号的取消断言的时钟周期数的形式指示停止延迟时间(或保持时间)的值,来对停止延迟计数器进行编程。
在1008处,确定停止延迟时间是否到期(例如,已计数到所编程的时钟周期数)。例如,如果停止延迟计数器等于所编程的停止延迟计数值,则停止延迟时间到期。
如果停止延迟时间尚未到期,则流程返回到1006以基于时钟周期再次使停止延迟计数器递增。然而,如果停止延迟时间到期,则在1010处,停止信号被生成并提供给设置/重置电路250,以触发对电压调节器的Vboost信号的取消断言。
图11-19详细说明了用于实现上述实施例的示例性架构和系统(例如处理器100、核120(1)-120(M)、220、指令解码器和调度器130(1)-130(M)、230、速率控制器140(1)-140(M)、240和执行单元160A、160B、160C、160D)。在一些实施例中,如上所述的一个或多个硬件组件和/或指令被仿真为如下所述或实现为软件模块。也可以(或替代地)使用本领域已知的用于处理器、移动设备、计算系统及其组件的其他计算机架构设计。通常,本文公开的实施例的合适的计算机架构可以包括但不限于图11-19所示的配置。
上面详述的(一个或多个)指令的实施例可以以“通用向量友好指令格式”来实现。在其他实施例中,没有使用这种格式,而是使用另一指令格式,然而,写掩码寄存器、各种数据转换(调配(swizzle)、广播等)、寻址等的以下描述通常适用于以上(一个或多个)指令的实施例的描述。另外,下面详细描述示例系统、架构和流水线。上面的(一个或多个)指令的实施例可以在这样的系统、架构和流水线上执行,但是不限于详细说明的那些。
指令集可以包括一个或多个指令格式。给定指令格式可以定义各种字段(例如,位数、位的位置)以指定要执行的操作(例如,操作码)和将在其上执行该操作的操作数和/或其他数据字段(例如,掩码)等。一些指令格式通过指令模板(或子格式)的定义被进一步细分。例如,给定指令格式的指令模板可以被定义为具有指令格式的字段的不同子集(所包括的字段通常具有相同的顺序,但是至少一些具有不同的位位置,因为包括较少的字段)和/或被定义为具有不同解释的给定字段。因此,ISA的每个指令使用给定的指令格式表示(并且,如果定义,则在该指令格式的给定的一个指令模板中)并且包括用于指定操作和操作数的字段。例如,示例性ADD指令具有特定操作码和指令格式,该指令格式包括指定该操作码的操作码字段和选择操作数的操作数字段(源1/目的地和源2);并且在指令流中出现该ADD指令将在操作数字段中具有选择特定操作数的特定内容。已发布和/或公布了被称为高级向量扩展(AVX)(AVX1和AVX2)并使用向量扩展(VEX)编码方案的一组SIMD扩展(例如,参见
Figure BDA0002556261430000201
64和IA-32架构软件开发人员手册,2019年5月;参见
Figure BDA0002556261430000202
高级向量扩展编程参考,2014年10月)。
图11是根据本公开的至少一个实施例的寄存器架构1100的框图。在所示的实施例中,存在512位宽的32个向量寄存器1110;这些寄存器引用为zmm0到zmm31。低16个zmm寄存器的低阶256位覆盖在寄存器ymm0-15上。低16个zmm寄存器的低阶128位(ymm寄存器的低阶128位)覆盖在寄存器xmm0-15上。
即,向量长度字段在最大长度和一个或多个其他较短长度之间进行选择,其中每个这样的较短长度是前一长度的一半长度;没有向量长度字段的指令模板对最大向量长度操作。此外,在一个实施例中,特定向量友好指令格式的B类指令模板对打包或标量单/双精度浮点数据和打包或标量整数数据进行操作。标量操作是对zmm/ymm/xmm寄存器中的最低阶数据元素位置执行的操作;根据实施例,高阶数据元素位置保持与指令之前相同或归零。
写掩码寄存器1115-在所示实施例中,存在8个写掩码寄存器(k0到k7),各自大小为64位。在替换实施例中,写掩码寄存器1115的大小为16位。如前所述,在一个实施例中,向量掩码寄存器k0不能用作写掩码;当通常表示k0的编码用于写掩码时,它选择0xFFFF的硬连线写掩码,有效地禁用该指令的写掩码。
通用寄存器1125-在所示实施例中,有16个64位通用寄存器,它们与现有的x86寻址模式一起用于寻址存储器操作数。这些寄存器由名称RAX,RBX,RCX,RDX,RBP,RSI,RDI,RSP和R8至R15引用。
标量浮点堆栈寄存器文件(x87堆栈)1145,其上混叠有MMX打包整数平坦寄存器文件1150-在所示实施例中,x87堆栈是用于使用x87指令集扩展对32/64/80位浮点数据执行标量浮点运算的八元素堆栈;而MMX寄存器用于对64位打包整数数据执行操作,以及保持用于MMX和XMM寄存器之间执行的某些操作的操作数。
本公开的替代实施例可以使用更宽或更窄的寄存器。另外,本公开的备选实施例可以使用更多、更少或不同的寄存器文件和寄存器。
处理器核可以以不同的方式实现,可以被实现用于不同的目的,并且可以在不同的处理器中实现。例如,这种核的实现方式可以包括:1)用于通用计算的通用顺序核;2)用于通用计算的高性能通用乱序核;3)主要用于图形和/或科学(吞吐量)计算的专用核。不同处理器的实现方式可以包括:1)CPU,其包括旨在用于通用计算的一个或多个通用顺序核和/或用于通用计算的一个或多个通用乱序核;2)协处理器,包括主要用于图形和/或科学(吞吐量)的一个或多个专用核。这种不同的处理器导致不同的计算机系统架构,其可以包括:1)在与CPU不同的芯片上的协处理器;2)在与CPU相同的封装中的单独管芯(die)上的协处理器;3)在与CPU相同的管芯上的协处理器(在这种情况下,这种协处理器有时被称为专用逻辑(例如,集成图形和/或科学(吞吐量)逻辑)或被称为专用核);4)片上系统,其可以在同一管芯上包括所描述的CPU(有时被称为(一个或多个)应用核或(一个或多个)应用处理器)、以上描述的协处理器、和附加功能。接下来描述示例性核架构,之后描述示例性处理器和计算机架构。
图12A是示出根据本公开的一个或多个实施例的示例性顺序流水线和示例性寄存器重命名、乱序发布/执行流水线两者的框图。图12B是示出根据本公开的一个或多个实施例的要被包括在处理器中的顺序架构核和示例性寄存器重命名、乱序发布/执行架构核两者的示例性实施例的框图。图12A至图12B中的实线框示出了顺序流水线和顺序核,而可选择添加的虚线框示出了寄存器重命名、乱序发布/执行流水线和核。假定顺序方面是乱序方面的子集,将描述乱序方面。
在图12A中,处理器流水线1200包括提取阶段1202、长度解码阶段1204、解码阶段1206、分配阶段1208、重命名阶段1210、调度(也被称为调派或发布)阶段1212、寄存器读取/存储器读取阶段1214、执行阶段1216、写回/存储器写入阶段1218、异常处理阶段1222、和提交阶段(commit stage)1224。
图12B示出了处理器核1290,其包括耦合到执行引擎单元1250的前端单元1230,并且执行引擎单元1250和前端单元1230两者都耦合到存储器单元1270。核1290可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或混合或替代的核类型。作为另一种选择,核1290可以是专用核,例如,张量处理核(TPC)、网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核等。
前端单元1230包括耦合到指令缓存单元1234的分支预测单元1232,指令缓存单元1234耦合到指令转换后备缓冲器(TLB)1236,指令转换后备缓冲器1236耦合到指令提取单元1238,指令提取单元1238耦合到解码单元1240。解码单元1240(或解码器)可以解码指令,并且生成作为输出的一个或多个微操作、微代码入口点、微指令、其他指令、或其他控制信号,它们解码自原始指令或以其他方式反映原始指令或导出自原始指令。
可以使用各种不同的机制来实现解码单元1240。合适机制的示例包括但不限于查找表、硬件实现方式、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核1290包括微代码ROM或存储用于某些宏指令的微代码的其他介质(例如,在解码单元1240中或在前端单元1230内)。解码单元1240耦合到执行引擎单元1250中的重命名/分配器单元1252。
执行引擎单元1250包括重命名/分配器单元1252,其耦合到引退(retirement)单元1254和一组一个或多个调度器单元1256。(一个或多个)调度器单元1256表示任意数目的不同调度器,包括,预留站(reservations station)、中央指令窗等。在利用核1290的一个或多个实施例中,(一个或多个)调度器单元1256可以包括指令解码器和调度器130(1)-130(M)、230(或指令解码器和调度器130(1)-130(M)、230中的至少调度器)的至少一些功能。因此,(一个或多个)调度器单元1256可以被配置为在指令流中识别高功率指令,并且响应于调度高功率指令执行而断言预充电信号。应当注意,该功能可以与或可以不与解码单元1240或核1290的任何其他合适的组件或电路组合。另外,速率控制器140(1)-140(M)可以在执行引擎单元1250中实现,并且耦合到(一个或多个)调度器单元1256和(一个或多个)执行单元1262。
(一个或多个)调度器单元1256耦合到(一个或多个)物理寄存器文件单元1258。每个物理寄存器文件单元1258表示一个或多个物理寄存器文件,这些物理寄存器文件中的不同的物理寄存器文件存储一个或多个不同的数据类型,例如,标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中,(一个或多个)物理寄存器文件单元1258包括向量寄存器单元、写入掩码寄存器单元、和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器、和通用寄存器。(一个或多个)物理寄存器文件单元1258与引退单元1254重叠,以说明寄存器重命名和乱序执行可以被实现的各种方式(例如,使用(一个或多个)重新排序缓存和(一个或多个)引退寄存器文件;使用(一个或多个)未来文件、(一个或多个)历史缓存、和(一个或多个)引退寄存器文件;使用寄存器图和寄存器池;等等)。引退单元1254和(一个或多个)物理寄存器文件单元1258耦合到(一个或多个)执行集群1260。
(一个或多个)执行集群1260包括一组一个或多个执行单元1262和一组一个或多个存储器访问单元1264。执行单元1262可以对各种类型的数据(例如,标量浮点、打包整数、打包浮点、向量整数、向量浮点)执行各种操作(例如,移位、加法、减法、乘法)。虽然一些实施例可以包括专用于特定功能或功能集的多个执行单元,但是其他实施例可以仅包括一个执行单元或者全部执行所有功能的多个执行单元。在利用核1290的一个或多个实施例中,(一个或多个)执行单元1262可以包括执行单元160A、160B、160C、160D、260的至少一些功能。因此,(一个或多个)执行单元1262可以被配置为响应于发起高功率指令的执行而断言忙信号。在一个或多个示例中,(一个或多个)执行单元1262可以是张量处理核(TPC)的矩阵处理单元(MPU)。
(一个或多个)调度器单元1256、(一个或多个)物理寄存器文件单元1258、和(一个或多个)执行集群1260被示为可能是多个,因为某些实施例针对某些类型的数据/操作创建单独的流水线(例如,标量整数流水线、标量浮点/打包整数/打包浮点/向量整数/向量浮点流水线、和/或存储器访问流水线,其中每个流水线都有自己的调度器单元、物理寄存器文件单元、和/或执行集群-并且在单独的存储器访问流水线的情况下,其中仅该流水线的执行集群具有(一个或多个)存储器访问单元1264的某些实施例被实现)。还应理解,在使用单独的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行而其余的是有序发布/执行的。
该组(一个或多个)存储器访问单元1264耦合到存储器单元1270,存储器单元1270包括耦合到数据缓存单元1274的数据TLB单元1272,其中数据缓存单元1274耦合到2级(L2)缓存单元1276。在一个示例性实施例中,(一个或多个)存储器访问单元1264可以包括加载单元、存储地址单元、和存储数据单元,其中的每个单元耦合到存储器单元1270中的数据TLB单元1272。指令缓存单元1234还耦合到存储器单元1270中的2级(L2)缓存单元1276。L2缓存单元1276耦合到一个或多个其他级别的缓存并最终耦合到主存储器。
作为示例,示例性寄存器重命名的乱序发布/执行核架构可以按如下方式实现流水线1200:1)指令提取单元1238执行提取和长度解码阶段1202和1204;2)解码单元1240执行解码阶段1206;3)重命名/分配器单元1252执行分配阶段1208和重命名阶段1210;4)(一个或多个)调度器单元1256执行调度阶段1212;5)(一个或多个)物理寄存器文件单元1258和存储器单元1270执行寄存器读取/存储器读取阶段1214;(一个或多个)执行集群1260执行执行阶段1216;6)存储器单元1270和(一个或多个)物理寄存器文件单元1258执行写回/存储器写入阶段1218;7)异常处理阶段1222中可能涉及各个单元;8)引退单元1254和(一个或多个)物理寄存器文件单元1258执行提交阶段1224。
核1290可以支持一个或多个指令集(例如,x86指令集(具有已经添加有较新版本的一些扩展);美国加利福尼亚州桑尼维尔市的MIP Technologies的MIPS指令集;美国加利福尼亚州桑尼维尔市的ARM Holdings的ARM指令集(具有可选的附加扩展,例如,NEON)),包括本文所描述的(一个或多个)指令。在一个实施例中,核1290包括支持打包数据指令集扩展(例如,AVX1、AVX2)的逻辑,从而允许要使用打包数据来执行的许多多媒体应用所使用的操作。
应理解,核可以支持多线程(执行两个或更多个并行的操作集或线程集),并且可以以各种方式这样做,这些方式包括时间分片多线程、同时多线程(其中,单个物理核为该物理核正在同时进行多线程的每个线程提供逻辑核)、或它们的组合(例如,时间分片的提取和解码以及此后同时的多线程,例如,在
Figure BDA0002556261430000261
超线程技术中)。
虽然在乱序执行的上下文中描述了寄存器重命名,但应理解,寄存器重命名可以用在顺序架构中。虽然所示处理器的实施例还包括单独的指令和数据缓存单元1234/1474以及共享的L2缓存单元1276,但替代实施例可以具有用于指令和数据两者的单个内部缓存,例如,1级(L1)内部缓存、或多级内部缓存。在一些实施例中,系统可以包括内部缓存和外部缓存的组合,其中外部缓存在核和/或处理器外部。替代地,全部缓存可以在核和/或处理器外部。
图13A-13B示出了更具体的示例性顺序核架构的框图,其中核将是芯片中的若干逻辑块(可能包括相同类型和/或不同类型的其他核)中的一个逻辑块。逻辑块通过高带宽互连网络(例如,环形网络)与某固定功能逻辑、存储器I/O接口、和其他必要的I/O逻辑通信,这取决于应用。
图13A是根据本公开的一个或多个实施例的单个处理器核以及其与管芯上互连网络1302的连接以及其在2级(L2)缓存1304的本地子集的框图。在一个实施例中,指令解码器1300支持具有打包数据指令集扩展的x86指令集。L1缓存1306允许低等待时间的访问以将存储器缓存到标量和向量单元中。虽然在一个实施例中(为了简化设计),标量单元1308和向量单元1310使用单独的寄存器组(分别为标量寄存器1312和向量寄存器1314),并且它们之间传输的数据被写入到存储器然后从1级(L1)缓存1306中读回,但是本公开的替代实施例可以使用不同的方法(例如,使用单个寄存器组或包括允许数据在两个寄存器文件(file)之间传输而不被写入和读回的通信路径)。
L2缓存的本地子集1304是全局L2缓存的一部分,全局L2缓存被划分为分开的本地子集,每个处理器核一个本地子集。每个处理器核具有到其自己的L2缓存的本地子集1304的直接访问路径。由处理器核读取的数据被存储在其L2缓存子集1304中并且可以与访问它们自己的本地L2缓存子集的其他处理器核并行地被快速访问。由处理器核写入的数据被存储在其自己的L2缓存子集1304中,并且在需要的情况下被从其他子集冲刷(flushed)。环形网络1302确保共享数据的一致性。环形网络是双向的,以允许诸如处理器核、L2缓存、和其他逻辑块之类的代理在芯片内彼此通信。每个环形数据路径在每个方向上为1012位宽。
图13B是根据本公开的一个或多个实施例的图13A中的处理器核的一部分的展开图。图13B包括L1缓存1306A、L2缓存1304的部分、以及关于向量单元1310和向量寄存器1314的更多细节。具体地,向量单元1310是16宽的向量处理单元(VPU)(参见16宽的ALU1328),它执行整数、单精度浮点、和双精度浮点指令中的一个或多个。VPU支持通过调配单元1320对寄存器输入进行调配,使用数字转换单元1322A-B进行数字转换,以及使用复制单元1324对存储器输入进行复制。写入掩码寄存器1326允许预测得到向量写入。
图14是根据本公开的一个或多个实施例的可具有不止一个核、可具有集成存储器控制器、且可具有集成图形的处理器1400的框图。图14中的实线框示出了具有单核1402A、系统代理1410、和一组一个或多个总线控制器单元1416的处理器1400;但虚线框的可选添加示出了具有以下各项的替代处理器1400:多个核1402A-N、系统代理单元1410中的一组一个或多个集成存储器控制器单元1414、以及专用逻辑1408。
因此,处理器1400的不同实现方式可以包括:1)具有专用逻辑1408的CPU(其中专用逻辑是集成图形和/或科学(吞吐量)逻辑(其可以包括一个或多个核)),以及核1402A-N(其是一个或多个通用核(例如,通用顺序核、通用乱序核、或两者的组合);2)具有核1402A-N的协处理器(其中核1402A-N是主要用于图形和/或科学(吞吐量)的大量专用核);3)具有核1402A-N的协处理器(其中核1402A-N是大量通用顺序核)。因此,处理器1400可以是通用处理器、协处理器、或专用处理器,例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的许多集成核(MIC)协处理器(包括30个或更多个核)、嵌入式处理器等等。处理器可以在一个或多个芯片上实现。处理器1400可以是一个或多个衬底的一部分和/或可以通过使用多种工艺技术(例如,BiCMOS、CMOS或NMOS)中的任何一种来在一个或多个衬底上实现。
存储器层级包括核内的一个或多个级别的缓存(例如缓存单元1404A-N)、一组或一个或多个共享缓存单元1406、以及耦合到该组集成存储器控制器单元1414的外部存储器(未示出)。该组共享缓存单元1406可以包括一个或多个中级缓存(例如,2级(L2)、3级(L3)、4级(L4)),或其他级别的缓存、最后级别缓存(LLC)、和/它们的组合。虽然在一个实施例中,基于环的互连单元1412对专用逻辑1408(例如,集成图形逻辑)、该组共享缓存单元1406、以及系统代理单元1410/(一个或多个)集成存储器控制器单元1414进行互连,但替代实施例可以使用任何数目的众所周知的技术来互连这些单元。在一个实施例中,在一个或多个缓存单元1404A-N和核1402A-N之间维持一致性。
在一些实施例中,核1402A-N中的一个或多个核能够进行多线程。系统代理1410包括协调和操作核1402A-N的那些组件。系统代理单元1410可以包括例如电源控制单元(PCU)和显示单元。PCU可以是或可以包括调节核1402A-N和集成图形逻辑1408的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核1402A-N在架构指令集方面可以是同构的或异构的;也就是说,核1402A-N中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行仅该指令集的子集或不同的指令集。
图15-18是示例性计算机架构的框图。用于膝上型计算机、台式计算机、手持式PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备、和各种其他电子设备的本领域已知的其他系统设计和配置也是适合的。通常,能够结合本文所公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备通常是合适的。
现在参考图15,示出了根据本公开的至少一个实施例的系统1500的框图。系统1500可以包括一个或多个处理器1510、1515,其耦合到控制器集线器1520。在一个实施例中,控制器集线器1520包括图形存储器控制器集线器(GMCH)1590和输入/输出集线器(IOH)1550(可以在分开的芯片上);GMCH 1590包括耦合到存储器1540和协处理器1545的存储器和图形控制器;IOH 1550将输入/输出(I/O)设备1560耦合到GMCH 1590。替代地,存储器和图形控制器中的一个或两个被集成在处理器内(如本文所描述的),存储器1540和协处理器1545直接耦合到处理器1510,以及包括IOH 1550的单个芯片中的控制器集线器1520。
图15中用虚线表示附加处理器1515的可选性质。每个处理器1510、1515可以包括本文所描述的处理核中的一个或多个,并且可以是处理器1400的某个版本。
存储器1540可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)、或这两者的组合。对于至少一个实施例,控制器集线器1520经由多点总线(multi-drop bus)与(一个或多个)处理器1510、1515通信,该多点总线例如是前端总线(FSB)、诸如QuickPath互连(QPI)之类的点对点接口、或类似的连接1595。
在一个实施例中,协处理器1545是专用处理器,例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等。在一个实施例中,控制器集线器1520可以包括集成图形加速器。
在物理资源1510、1515之间在包括架构特性、微架构特性、热特性、功耗特性等的指标度量的范围方面可存在各种差异。
在一个实施例中,处理器1510执行控制一般类型的数据处理操作的指令。嵌入在指令内的可以是协处理器指令。处理器1510将这些协处理器指令识别为应该由所附接的协处理器1545执行的类型。因此,处理器1510将这些协处理器指令(或表示协处理器指令的控制信号)发布到协处理器总线或其它互连上,以到协处理器1545。(一个或多个)协处理器1545接受并执行所接收的协处理器指令。
现在参考图16,示出了根据本公开的一个或多个实施例的第一更具体的示例性系统1600的框图。如图16所示,多处理器系统1600是点对点互连系统,并且包括经由点对点互连1650耦合的第一处理器1670和第二处理器1680。处理器1670和1680可以是任何类型的处理器,例如结合其他附图示出或讨论的那些处理器。例如,处理器1670和1680中的每一个处理器可以是处理器1400的某个版本。在另一示例中,处理器1670和1680分别是处理器1510和1515,而协处理器1638是协处理器1545。在又一示例中,处理器1670和1680分别是处理器1510和协处理器1545。
处理器1670和1680可以被实现为单核处理器1674a和1684a或多核处理器1674a-1674b和1684a-1684b。核1674a-1674b和1684a-1684b中的每个可以是核1290的某个版本。处理器1670和1680可以各自包括由它们各自的一个或多个核使用的缓存1671和1681。共享缓存(未示出)可以被包括在任一处理器中,或者在两个处理器外部但经由P-P互连与处理器连接,使得在处理器进入低功率模式的情况下,任一或两个处理器的本地缓存信息可以被存储在共享缓存中。
处理器1670和1680被示出为分别包括集成存储器控制器(IMC)单元1672和1682,以与存储器元件1632和1634进行通信,在一些实施例中,存储器元件1632和1634可以是本地附接到相应处理器的主存储器的部分,或者可以是高带宽存储器(HBM)。在一些实施例中,存储器控制器逻辑1672和1682可以是与处理器1670和1680分开的离散逻辑。存储器元件1632和/或1634可以存储要由处理器1670和1680使用以实现本文概述的操作和功能的各种数据。
处理器1670还包括作为其总线控制器单元的一部分的点对点(P-P)接口1676和1678;类似地,第二处理器1680包括P-P接口1686和1688。处理器1670、1680可以使用P-P接口电路1678、1688经由点对点(P-P)接口1650来交换信息。
处理器1670、1680可以各自使用点对点接口电路1676、1694、1686、1698经由各个P-P接口1652、1654来与芯片集1690交换信息。芯片集1690可以可选地经由高性能接口1692来与协处理器1638交换信息。在一个实施例中,协处理器1638是专用处理器,例如,高吞吐量MIC处理器、网络或通信处理器、压缩和/或解压缩引擎、图形处理器、GPGPU、嵌入式处理器等。可选地,芯片集1690也可以与显示器1633通信,以显示人类用户可以看到的数据。
共享缓存(例如,1671和/或1681)可以被包括在任一处理器中,或者在两个处理器外部但经由P-P互连与处理器连接,使得在处理器进入低功率模式的情况下,任一或两个处理器的本地缓存信息可以被存储在共享缓存中。
芯片集1690可以经由接口1696耦合到第一总线1610。在一个实施例中,第一总线1610可以是外围组件互连(PCI)总线,或诸如PCI Express总线或另一第三代I/O互连总线之类的总线,但本公开的范围不限于此。
如图16所示,各种I/O设备1614可以耦合到第一总线1610,以及将第一总线1610耦合到第二总线1620的总线桥1618。在一个实施例中,一个或多个附加处理器1615(例如,协处理器、高吞吐量MIC处理器、GPGPU、加速器(例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列、或任何其他处理器)耦合到第一总线1610。在一个实施例中,第二总线1620可以是低引脚数(LPC)总线。在一个实施例中,各种设备可以耦合到第二总线1620,包括,例如键盘和/或鼠标1622、或其他输入设备(例如,触摸屏、轨迹球、操纵杆等)、通信设备1626(例如,调制解调器、网络接口设备或可以通过网络1660进行通信的其他类型的通信设备)、音频I/O设备1614和/或存储单元1628(例如,磁盘驱动器或其他大容量存储设备,其可以包括指令/代码和数据1630)。此外,音频I/O 1624可以耦合到第二总线1620。注意,可能有其他架构。例如,代替图16的点对点架构,系统可以实现多点(multi-drop)总线或其他这样的架构。
现在参考图17,示出了根据本公开的至少一个实施例的第二更具体的示例性系统1700的框图。图16和17中的相似的元件具有相似的附图标记,并且图16中的某些方面已从图17中省略,以避免模糊图17的其他方面。
图17示出了处理器1670、1680可以分别包括集成存储器和I/O控制逻辑(“CL”)1672和1682。因此,CL 1672、1682包括集成存储器控制器单元并包括I/O控制逻辑。图17示出了不仅存储器1632、1634耦合到CL 1672、1682,而且I/O设备1714也耦合到控制逻辑1672、1682。传统(legacy)I/O设备1715耦合到芯片集1690。
现在参考图18,示出了根据本公开的至少一个实施例的SoC 1800的框图。图14中的相似的元件具有相似的附图标记。此外,虚线框是更高级SoC上的可选功能。在图18中,(一个或多个)互连单元1802耦合到以下各项:应用处理器1810,其包括一组一个或多个核1402A-N和(一个或多个)共享缓存单元1406;系统代理单元1410;(一个或多个)总线控制器单元1416;(一个或多个)集成存储器控制器单元1414;一组或一个或多个协处理器1820,其可以包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元1830;直接存储器存取(DMA)单元1832;以及显示单元1840,用于耦合到一个或多个外部显示器。在一个实施例中,(一个或多个)协处理器1820包括专用处理器,例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等。
本文公开的机制的实施例可以以硬件、软件、固件或这些实现方法的组合来实现。本公开的实施例可以实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器,存储系统(包括易失性和非易失性存储器和/或存储元件),至少一个输入设备及至少一个输出设备。
程序代码(例如图18中所示的代码1830)可以应用于输入指令以执行本文描述的功能并生成输出信息。输出信息可以以已知的方式应用于一个或多个输出设备。对于本申请,处理系统包括具有处理器的任何系统,例如,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器等其它示例。
程序代码可以以高级过程或面向对象的编程语言实现,以与处理系统通信。如果需要,程序代码也可以用汇编语言或机器语言实现。实际上,本文描述的机制不限于任何特定编程语言的范围。在任何情况下,该语言可以是经编译或解析的语言。
至少一个实施例的一个或多个方面可以通过存储在机器可读介质上的代表性指令来实现,该代表性指令表示处理器内的各种逻辑,当由机器读取时使得机器构造逻辑以执行本文所描述的技术。这种称为“IP核”的表示可以存储在有形机器可读(例如,或计算机可读)介质上,并提供给各种客户或制造设施,以加载到实际制造逻辑或处理器的制造机器中。
这样的机器可读存储介质可以包括但不限于由机器或设备制造或形成的物品的非暂时性有形布置,包括诸如硬盘之类的存储介质,任何其他类型的盘,包括软盘、光盘、光盘只读存储器(CD-ROM)、光盘可擦写(CD-RW)和磁光盘、半导体设备(如只读存储器(ROM))、随机存取存储器(RAM)(如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM)、相变存储器(PCM)、磁卡或光学卡或适用于存储电子指令的任何其他类型的介质。
因此,本公开的实施例还包括非暂时性实体机器可读介质,其包含指令或包含设计数据,例如硬件描述语言(HDL),其定义本文描述的结构、电路、装置、处理器和/或系统特征。这些实施例也可以被称为程序产品。
在一些情况下,指令转换器可用于将指令从源指令集转换为目标指令集。例如,指令转换器可以转换(例如,使用静态二进制转换,包括动态编译的动态二进制转换)、变形、仿真或以其他方式将指令转换为要由核处理的一个或多个其他指令。指令转换器可以用软件、硬件、固件或其组合来实现。指令转换器可以在处理器上、处理器外或者部分在处理器上、部分在处理器外。
图19是根据本公开实施例的对照使用软件指令转换器将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图。在所示实施例中,指令转换器是软件指令转换器,但替代地,指令转换器可以用软件、固件、硬件、或其各种组合来实现。图19示出了采用高级语言1902的程序可以使用x86编译器1904来编译以生成x86二进制代码1906,其可以由具有至少一个x86指令集核的处理器1916本地执行。具有至少一个x86指令集核的处理器1916表示可以通过进行以下操作来执行与具有至少一个x86指令集核的Intel处理器基本上相同的功能,从而实现与具有至少一个x86指令集核的Intel处理器基本上相同的结果的任何处理器:兼容地执行或以其他方式处理(1)Intel x86指令集核的指令集的大部分或者(2)目标为在具有至少一个x86指令集核的Intel处理器上运行的应用或其他软件的目标代码版本。x86编译器1904表示可操作以生成x86二进制代码1906(例如,目标代码)的编译器,其中二进制代码可以在具有或不具有附加链接处理的情况下在具有至少一个x86指令集核的处理器1916上被执行。类似地,图19示出了采用高级语言1902的程序可以使用替代指令集编译器1908来编译以生成替代指令集二进制代码1910,该二进制代码可以由没有至少一个x86指令集核的处理器1914(例如,具有执行美国加利福尼亚州桑尼维尔市的MIPSTechnologies的MIPS指令集和/或执行美国加利福尼亚州桑尼维尔市的ARM Holdings的ARM指令集的核的处理器)本地执行。指令转换器1912用于将x86二进制代码1906转换为可由不具有x86指令集核的处理器1914本地执行的代码。该转换后的代码不太可能与替代指令集二进制代码1910相同,因为很难制造出能够实现它的指令转换器;但是,转换后的代码将完成一般操作,并由来自替代指令集的指令组成。因此,指令转换器1912表示通过仿真、模拟、或任何其他过程来允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码1906的软件、固件、硬件、或其组合。
注意,利用本文提供的多个示例,可以根据两个、三个、四个或更多个网络元件、主机、设备、计算系统、模块和/或其他组件来描述交互。然而,这样做只是出于清楚和示例的目的。应当理解,可以以任何合适的方式对系统进行合并或划分(例如,分段、分区、分离等)。随着类似的设计替代方案,任何所示的控制器、限制器、解码器、模块、节点、元件、主机、设备、系统和附图的其他组件可以以各种可能的配置进行组合,所有这些显然都在本说明书的广泛范围内。应当理解,参考附图(及其教导)示出和描述的主动Di/Dt电压下降抑制概念易于扩展,并且可以适应大量组件以及更复杂/繁复的布置和配置。因此,所提供的示例不应限制范围或阻碍该系统的广泛教导,因为这些示例可能应用于无数的其他架构。
同样重要的是,要注意,参考前述附图描述的操作仅示出了可以由系统或在系统内(例如,由处理器100)执行的一些可能的场景。在适当的情况下,可以删除或移除这些操作中的一些操作,或者可以在不脱离所讨论的概念的范围的情况下对这些操作进行相当大地修改或改变。另外,这些操作的定时可以被相当大地改变并且仍然实现本公开中教导的结果。作为一个示例,附图中描绘的处理不一定需要所示的特定顺序或连续顺序来实现期望的结果。在某些实施方式中,多任务和并行处理可能是有利的。出于示例和讨论的目的,提供了前述的操作流程。系统提供了很大的灵活性,因为在不脱离所讨论概念的教导的情况下,可以提供任何合适的布置、时序、配置和定时机制。
如本文所使用的,除非相反地明确指出,否则短语“至少一个”的使用是指所命名的项目、元素、条件或活动的任何组合。例如,“X、Y和Z中的至少一个”旨在表示以下任意一项:1)至少一个X,但没有Y和Z;2)至少一个Y,但没有X和Z;3)至少一个Z,但没有X和Y;4)至少一个X和至少一个Y,但没有Z;5)至少一个X和至少一个Z,但没有Y;6)至少一个Y和至少一个Z,但没有X;或7)至少一个X,至少一个Y和至少一个Z。此外,除非相反地明确指出,否则序数形容词“第一”、“第二”、“第三”等旨在区分其后的特定术语(例如,要素、条件、模块、活动、操作、权利要求要素等),但并不旨在指示所修饰的术语的任何类型的顺序、排名、重要性、时间顺序或层级。例如,“第一X”和“第二X”旨在指定两个单独的X元素,它们不一定受两个元素的任何顺序、排名、重要性、时间顺序或层级的限制。另外,说明书中对“一个实施例”、“实施例”、“一些实施例”等的引用指示所描述的(一个或多个)实施例可以包括特定的特征、结构或特性,但是每个实施例可能包括或可能不一定包括该特定特征、结构或特性。此外,这样的短语不一定指代同一实施例。另外,词语“优化”、“最优化”、“优选”、“最优”和相关术语是本领域的术语,其是指对指定结果的速度和/或效率的改进,并不旨在指示用于实现指定结果的处理已实现或者能够实现完美快速/完美高效的状态。
尽管本说明书包含许多具体的实施细节,但是这些不应被解释为对任何实施例或可要求保护的范围的限制,而应被视为针对本文公开的主动Di/Dt电压下降抑制概念的特定实施例的特征的描述。在单独的实施例的上下文中在本说明书中描述的某些特征也可以在单个实施例中以组合形式来实现。相反,在单个实施例的上下文中描述的各种特征也可以分别在多个实施例中或以任何合适的子组合的形式来实现。此外,尽管以上可以将特征描述为以某些组合的形式来起作用并且甚至最初如此要求保护,但是在某些情况下,可以从要求保护的组合中删除该组合中的一个或多个特征,并且所要求保护的组合可以涉及子组合或子组合的变体。本领域技术人员可以确定许多其他改变、替换、变化、变更和修改,并且意图是本公开涵盖落入所附权利要求范围内的所有这样的改变、替换、变化、变更和修改。
其他说明和示例
以下示例涉及根据本说明书的实施例。系统、装置、方法和机器可读存储介质实施例可以包括以下示例之一或组合:
示例A1提供了一种装置,包括:执行单元;速率控制器电路;指令调度器,耦合到速率控制器电路和执行单元。指令调度器用于:在要执行的指令流中识别第一高功率指令;并向速率控制器电路断言预充电信号。速率控制器电路用于:在预充电信号被断言之后,断言升压信号以使执行单元的电源电压增加;以及至少部分地基于第一高功率指令被执行来取消断言升压信号。
在示例A2中,示例A1的主题可以可选地包括:第一高功率指令是用于将矩阵相乘的指令。
在示例A3中,示例A1-A2中任一项的主题可以可选地包括:指令调度器用于:响应于调度第一高功率指令用于执行,而断言预充电信号。
在示例A4中,示例A1-A3中任一项的主题可以可选地包括:速率控制器电路还用于:基于启动延迟时间,来延迟断言升压信号。
在示例A5中,示例A4的主题可以可选地包括:启动延迟时间要在执行单元发起第一高功率指令的执行之前到期。
在示例A6中,示例A1-A5中任一项的主题可以可选地包括:速率控制器电路用于:从执行单元接收忙信号,该忙信号指示执行单元发起了第一高功率指令的执行;并基于保持时间,延迟取消断言升压信号。
在示例A7中,示例A1-A3中任一项的主题可以可选地包括:速率控制器电路还用于:基于启动延迟时间,来延迟断言升压信号;并基于保持时间,延迟取消断言升压信号,其中速率控制器电路包括:利用与启动延迟时间相对应的启动延迟计数值编程的启动延迟计数器,和利用与保持时间相对应的停止延迟计数值编程的停止延迟计数器。
在示例A8中,示例A1-A7中的任一项的主题可以可选地包括:指令调度器还用于:在升压信号被取消断言之前识别第二高功率指令,并避免针对第二高功率指令断言第二升压信号。
示例S1提供了一种系统,包括:执行单元、耦合到执行单元的指令调度器、耦合到执行单元和指令调度器的速率控制器电路以及耦合到速率控制器电路的电压调节器。指令调度器用于在要执行的指令流中识别第一高功率指令并断言预充电信号。速率控制器电路用于在预充电信号被断言之后断言升压信号。电压调节器用于:响应于接收到升压信号,而增加用于执行单元的电源电压以执行第一高功率指令。
在示例S2中,示例S1的主题可以可选地包括:执行单元还用于:在升压信号被断言之后,发起第一高功率指令的执行;并且断言指示第一高功率指令正在执行的忙信号。
在示例S3中,示例S2的主题可以可选地包括:速率控制器电路还用于:至少部分地基于忙信号被断言,而取消断言升压信号。
在示例S4中,示例S3的主题可以可选地包括:电压调节器还用于在升压信号被取消断言之后减小用于执行单元的电源电压。
在示例S5中,示例S1-S4中的任一项的主题可以可选地包括:指令调度器还用于在指令流中识别第二高功率指令并断言第二预充电信号。速率控制器电路还用于在第二预充电信号被断言之后断言第二升压信号。电压调节器还用于响应于接收到第二升压信号而增加用于执行单元的电源电压以执行第二高功率指令。
在示例S6中,示例S1-S5中任一项的主题可以可选地包括:指令调度器用于:响应于调度第一高功率指令用于执行,而断言预充电信号。
在示例S7中,示例S1-S6中任一项的主题可以可选地包括:速率控制器电路还用于:基于启动延迟时间,来延迟断言升压信号。
在示例S8中,示例S7的主题可以可选地包括:启动延迟时间要在执行单元发起第一高功率指令的执行之前到期。
在示例S9中,示例S1-S8中任一项的主题可以可选地包括:电压调节器增加电源电压要与执行单元发起第一高功率指令的执行一致。
示例M1提供了一种方法,包括:由处理器核的指令调度器在要由处理器核的执行单元执行的指令流中识别第一高功率指令;断言指示第一高功率指令被调度用于执行的预充电信号;在预充电信号被断言之后,断言升压信号以使执行单元的电源电压增加;从执行单元接收指示第一高功率指令正在执行的忙信号;以及至少部分地基于忙信号被断言,取消断言升压信号。
在示例M2中,示例M1的主题可以可选地包括:第一高功率指令是用于将矩阵相乘的指令。
在示例M3中,示例M1-M2中任一项的主题可以可选地包括:响应于调度第一高功率指令用于执行而断言预充电信号。
在示例M4中,示例M1-M3中任一项的主题可以可选地包括:基于启动延迟时间来延迟断言升压信号。
在示例M5中,示例M4的主题可以可选地包括:启动延迟时间要在第一高功率指令被执行之前到期。
在示例M6中,示例M1-M5中任一项的主题可以可选地包括:基于保持时间,来延迟取消断言升压信号。
在示例M7中,示例M1-M3中任一项的主题可以可选地包括:基于启动延迟时间来延迟断言升压信号,以及基于保持时间来延迟取消断言升压信号,其中,利用与启动延迟时间相对应的启动延迟计数值对启动延迟计数器进行编程,并且其中利用与保持时间相对应的停止延迟计数值对停止延迟计数器进行编程。
在示例M8中,示例M1-M7中的任一项的主题可以可选地包括:在升压信号被取消断言之前,识别第二高功率指令,并且避免针对第二高功率指令断言第二升压信号。
在示例M9中,示例M1-M8中任一项的主题可以可选地包括:在取消断言升压信号之后,减小执行单元的电源电压。
示例Y1提供一种装置,该装置包括用于执行示例M1-M9中的任一项的方法的装置。
在示例Y2中,示例Y1的主题可以可选地包括:用于执行该方法的装置包括至少一个处理器和至少一个存储器元件。
在示例Y3中,示例Y2的主题可以可选地包括:至少一个存储器元件包括机器可读指令,该机器可读指令在被执行时使装置执行示例M1-M9中任一项的方法。
在示例Y4中,示例Y1-Y3中任一项的主题可以可选地包括:装置是计算系统或片上系统之一。
示例X1提供了一种或多种计算机可读介质,包括指令,指令在被执行时实现前述示例A1-A8、S1-S9、M1-M9和Y1-Y4中任一项中的装置、系统或方法。

Claims (25)

1.一种装置,包括:
执行单元;
速率控制器电路;
指令调度器,耦合到所述速率控制器电路和所述执行单元,所述指令调度器用于:
在要执行的指令流中识别第一高功率指令;以及
向所述速率控制器电路断言预充电信号,
其中,所述速率控制器电路用于:
在所述预充电信号被断言之后,断言升压信号以使用于所述执行单元的电源电压增加;以及
至少部分地基于所述第一高功率指令正在被执行,来取消断言所述升压信号。
2.根据权利要求1所述的装置,其中,所述第一高功率指令是用于将矩阵相乘的指令。
3.根据权利要求1所述的装置,其中,所述指令调度器用于:响应于调度所述第一高功率指令用于执行,而断言所述预充电信号。
4.根据权利要求1所述的装置,其中,所述速率控制器电路还用于:
基于启动延迟时间,延迟断言所述升压信号。
5.根据权利要求4所述的装置,其中,所述启动延迟时间要在所述执行单元发起所述第一高功率指令的执行之前到期。
6.根据权利要求1-5中任一项所述的装置,其中,所述速率控制器电路用于:
从所述执行单元接收忙信号,所述忙信号指示所述执行单元发起了所述第一高功率指令的执行;以及
基于保持时间,延迟取消断言所述升压信号。
7.根据权利要求1-3中任一项所述的装置,其中,所述速率控制器电路还用于:
基于启动延迟时间,延迟断言所述升压信号;以及
基于保持时间,延迟取消断言所述升压信号,其中,所述速率控制器电路包括:
利用启动延迟计数值编程的启动延迟计数器,其中,所述启动延迟计数值对应于所述启动延迟时间;以及
利用停止延迟计数值编程的停止延迟计数器,其中,所述停止延迟计数值对应于所述保持时间。
8.根据权利要求1-5中任一项所述的装置,其中,所述指令调度器还用于:
在所述升压信号被取消断言之前,识别第二高功率指令;以及
避免针对所述第二高功率指令断言第二升压信号。
9.一种系统,包括:
执行单元;
指令调度器,耦合到所述执行单元,所述指令调度器用于:
在要执行的指令流中识别第一高功率指令;以及
断言第一预充电信号;
速率控制器电路,耦合到所述执行单元和所述指令调度器,所述速率控制器电路用于:
在所述第一预充电信号被断言之后,断言升压信号;以及
电压调节器,耦合到所述速率控制器电路,所述电压调节器用于:
响应于接收到所述升压信号,增加用于所述执行单元的电源电压以执行所述第一高功率指令。
10.根据权利要求9所述的系统,其中,所述执行单元还用于:
在所述升压信号被断言之后,发起所述第一高功率指令的执行;以及
断言指示所述第一高功率指令正在执行的忙信号。
11.根据权利要求10所述的系统,其中,所述速率控制器电路还用于:
至少部分地基于所述忙信号被断言,来取消断言所述升压信号。
12.根据权利要求11所述的系统,其中,所述电压调节器还用于:
在所述升压信号被取消断言之后,减小用于所述执行单元的所述电源电压。
13.根据权利要求9至12中任一项所述的系统,其中,所述指令调度器还用于:
在所述指令流中识别第二高功率指令;以及
断言第二预充电信号,
其中,所述速率控制器电路还用于在所述第二预充电信号被断言之后断言第二升压信号,并且
其中,所述电压调节器还用于响应于接收到所述第二升压信号,增加用于所述执行单元的所述电源电压以执行所述第二高功率指令。
14.根据权利要求9至12中任一项所述的系统,其中,所述指令调度器用于:响应于调度所述第一高功率指令用于执行,而断言所述第一预充电信号。
15.根据权利要求9所述的系统,其中,所述速率控制器电路还用于:
基于启动延迟时间,延迟断言所述升压信号。
16.根据权利要求15所述的系统,其中,所述启动延迟时间要在所述执行单元发起所述第一高功率指令的执行之前到期。
17.根据权利要求9所述的系统,其中,所述电压调节器增加所述电源电压要与所述执行单元发起所述第一高功率指令的执行一致。
18.一种方法,包括:
由处理器核的指令调度器在要由所述处理器核的执行单元执行的指令流中识别第一高功率指令;
断言预充电信号,该预充电信号指示所述第一高功率指令被调度用于执行;
在所述预充电信号被断言之后,断言升压信号以使用于所述执行单元的电源电压增加;
从所述执行单元接收指示所述第一高功率指令正在执行的忙信号;以及
至少部分地基于所述忙信号被断言,取消断言所述升压信号。
19.根据权利要求18所述的方法,其中,所述第一高功率指令是用于将矩阵相乘的指令。
20.根据权利要求18所述的方法,其中,响应于调度所述第一高功率指令用于执行而断言所述预充电信号。
21.根据权利要求18所述的方法,还包括:
基于启动延迟时间,延迟断言所述升压信号。
22.根据权利要求21所述的方法,其中,所述启动延迟时间要在所述第一高功率指令被执行之前到期。
23.根据权利要求18-22中任一项所述的方法,还包括:
基于保持时间,延迟所述升压信号的取消断言。
24.根据权利要求18-22中任一项所述的方法,还包括:
在取消断言所述升压信号之前,识别第二高功率指令;以及
避免针对所述第二高功率指令断言第二升压信号。
25.至少一种机器可读存储介质,包括指令,其中,所述指令在被执行时实现根据权利要求1-5、9-12或15-22中任一项所述的装置、系统或方法。
CN202010591321.9A 2019-08-30 2020-06-24 主动di/dt电压下降抑制 Pending CN112445310A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/557,187 US11204766B2 (en) 2019-08-30 2019-08-30 Proactive Di/Dt voltage droop mitigation
US16/557,187 2019-08-30

Publications (1)

Publication Number Publication Date
CN112445310A true CN112445310A (zh) 2021-03-05

Family

ID=68840073

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010591321.9A Pending CN112445310A (zh) 2019-08-30 2020-06-24 主动di/dt电压下降抑制

Country Status (3)

Country Link
US (1) US11204766B2 (zh)
CN (1) CN112445310A (zh)
DE (1) DE102020120019A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113505095A (zh) * 2021-07-30 2021-10-15 上海壁仞智能科技有限公司 多核异相处理的系统级芯片和集成电路

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10928886B2 (en) * 2019-02-25 2021-02-23 Intel Corporation Frequency overshoot and voltage droop mitigation apparatus and method
US11747852B2 (en) * 2019-12-23 2023-09-05 Advanced Micro Devices, Inc. Method and apparatus for maintaining stable operation of servers in a data center
US11476722B2 (en) 2020-04-30 2022-10-18 Nucurrent, Inc. Precision power level control for extended range wireless power transfer
US11482890B2 (en) 2020-04-30 2022-10-25 Nucurrent, Inc. Surface mountable wireless power transmitter for transmission at extended range
US11310934B2 (en) 2020-04-30 2022-04-19 Nucurrent, Inc. Multi-channel cooling for extended distance wireless power transmitter
US11239709B2 (en) 2020-04-30 2022-02-01 Nucurrent, Inc. Operating frequency based power level altering in extended range wireless power transmitters
US11757311B2 (en) 2020-12-23 2023-09-12 Nucurrent, Inc. Wireless power transmitters and associated base stations for transmitting power at extended separation distances
US11387674B1 (en) 2020-12-23 2022-07-12 Nucurrent, Inc. Wireless power transmitters for transmitting power at extended separation distances utilizing concave shielding
US11637459B2 (en) 2020-12-23 2023-04-25 Nucurrent, Inc. Wireless power transmitters for transmitting power at extended separation distances utilizing T-Core shielding
US11476711B2 (en) 2020-12-23 2022-10-18 Nucurrent, Inc. Wireless power transmitters and associated base stations for through-structure charging
US11387684B1 (en) 2020-12-23 2022-07-12 Nucurrent, Inc. Wireless power transmitters and associated base stations for transmitting power at extended separation distances
US11532956B2 (en) 2021-04-30 2022-12-20 Nucurrent, Inc. Power capability detection with verification load in power level control systems for wireless power transmission
US11942799B2 (en) 2021-04-30 2024-03-26 Nucurrent, Inc. False notification suppression in wireless power transfer system
US11482891B1 (en) * 2021-04-20 2022-10-25 Nucurrent, Inc. Timing verification in precision power level control systems for wireless power transmission
US11539247B2 (en) 2021-04-30 2022-12-27 Nucurrent, Inc. Power capability detection in precision power level control systems for wireless power transmission
US11791667B2 (en) 2021-04-30 2023-10-17 Nucurrent, Inc. Power capability detection for wireless power transmission based on receiver power request
US11967830B2 (en) 2021-10-12 2024-04-23 Nucurrent, Inc. Wireless power transmitters for transmitting power at extended separation distances with magnetic connectors
US11637448B1 (en) 2021-10-12 2023-04-25 Nucurrent, Inc. Wireless power transmitter with removable magnetic connector panel for vehicular use
CN113655994B (zh) * 2021-10-21 2022-02-18 北京壁仞科技开发有限公司 多核处理器的电流变化斜率控制方法、控制设备和介质
US20240094794A1 (en) * 2022-09-09 2024-03-21 SambaNova Systems, Inc. Integrated circuit that mitigates inductive-induced voltage droop using compute unit group identifiers

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006022202A1 (ja) * 2004-08-27 2006-03-02 Matsushita Electric Industrial Co., Ltd. 情報処理装置、例外制御回路
US8243085B2 (en) * 2007-12-30 2012-08-14 Intel Corporation Boosting graphics performance based on executing workload
US20100318814A1 (en) * 2009-06-10 2010-12-16 Quanta Computer Inc. Power management device and point of sales terminal apparatus using thereof
US8954017B2 (en) * 2011-08-17 2015-02-10 Broadcom Corporation Clock signal multiplication to reduce noise coupled onto a transmission communication signal of a communications device
KR20150009105A (ko) * 2013-07-15 2015-01-26 에스케이하이닉스 주식회사 반도체 장치, 반도체 메모리 장치 및 그것의 동작 방법
US11487341B2 (en) * 2018-08-09 2022-11-01 Nvidia Corporation Techniques for configuring a processor to execute instructions efficiently
US10972083B2 (en) * 2019-03-20 2021-04-06 International Business Machines Corporation Supply voltage decoupling circuits for voltage droop mitigation
US11105844B2 (en) * 2019-06-28 2021-08-31 Microsoft Technology Licensing, Llc Predictive voltage transient reduction in integrated circuits

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113505095A (zh) * 2021-07-30 2021-10-15 上海壁仞智能科技有限公司 多核异相处理的系统级芯片和集成电路

Also Published As

Publication number Publication date
DE102020120019A1 (de) 2021-03-04
US11204766B2 (en) 2021-12-21
US20190384603A1 (en) 2019-12-19

Similar Documents

Publication Publication Date Title
US11204766B2 (en) Proactive Di/Dt voltage droop mitigation
US12086603B2 (en) Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions
US11467740B2 (en) Method, apparatus, and system for energy efficiency and energy conservation including autonomous hardware-based deep power down in devices
US11567555B2 (en) Software assisted power management
US10156884B2 (en) Local power gate (LPG) interfaces for power-aware operations
US8874949B2 (en) Method, apparatus, and system for energy efficiency and energy conservation including enhanced temperature based voltage control
CN105144082B (zh) 基于平台热以及功率预算约束,对于给定工作负荷的最佳逻辑处理器计数和类型选择
US9996127B2 (en) Method and apparatus for proactive throttling for improved power transitions in a processor core
US11132201B2 (en) System, apparatus and method for dynamic pipeline stage control of data path dominant circuitry of an integrated circuit
US9619309B2 (en) Enforcing different operational configurations for different tasks for failure rate based control of processors
TW202303389A (zh) 用以提供執行緒排程提示給軟體處理的裝置、方法及系統
WO2024130572A1 (en) Core grouping in a processor
US11880231B2 (en) Accurate timestamp or derived counter value generation on a complex CPU

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