CN112445529A - 软件辅助功率管理 - Google Patents
软件辅助功率管理 Download PDFInfo
- Publication number
- CN112445529A CN112445529A CN202010589982.8A CN202010589982A CN112445529A CN 112445529 A CN112445529 A CN 112445529A CN 202010589982 A CN202010589982 A CN 202010589982A CN 112445529 A CN112445529 A CN 112445529A
- Authority
- CN
- China
- Prior art keywords
- instruction
- memory
- phase
- compute
- execution
- 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
Links
- 230000015654 memory Effects 0.000 claims abstract description 378
- 238000012545 processing Methods 0.000 claims abstract description 170
- 238000000034 method Methods 0.000 claims description 34
- 238000003860 storage Methods 0.000 claims description 29
- 230000002829 reductive effect Effects 0.000 claims description 18
- 239000011159 matrix material Substances 0.000 claims description 15
- 238000007726 management method Methods 0.000 description 61
- 238000004364 calculation method Methods 0.000 description 50
- 238000010586 diagram Methods 0.000 description 37
- 239000013598 vector Substances 0.000 description 32
- 238000010801 machine learning Methods 0.000 description 17
- 238000013473 artificial intelligence Methods 0.000 description 13
- 238000007667 floating Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 13
- 230000006870 function Effects 0.000 description 12
- 238000004891 communication Methods 0.000 description 11
- 230000000694 effects Effects 0.000 description 10
- 239000003795 chemical substances by application Substances 0.000 description 8
- 238000013135 deep learning Methods 0.000 description 8
- 230000006835 compression Effects 0.000 description 6
- 238000007906 compression Methods 0.000 description 6
- 230000003446 memory effect Effects 0.000 description 6
- 238000005457 optimization Methods 0.000 description 6
- 238000013519 translation Methods 0.000 description 6
- 241000238876 Acari Species 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 238000013528 artificial neural network Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000007613 environmental effect Effects 0.000 description 4
- 238000011156 evaluation Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 238000005259 measurement Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000007792 addition Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 3
- 238000000605 extraction Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000017525 heat dissipation Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 230000001681 protective effect Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000009118 appropriate response Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000001149 cognitive effect Effects 0.000 description 1
- 238000001816 cooling Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013501 data transformation Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 230000036316 preload Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000001960 triggered effect Effects 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/3296—Power saving characterised by the action undertaken by lowering the supply or operating voltage
-
- 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
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/08—Clock generators with changeable or programmable clock frequency
-
- 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/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/12—Synchronisation of different clock signals provided by a plurality of clock generators
-
- 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/28—Supervision thereof, e.g. detecting power-supply failure by out of limits supervision
-
- 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/3206—Monitoring of events, devices or parameters that trigger a change in power modality
- G06F1/3215—Monitoring of peripheral devices
- G06F1/3225—Monitoring of peripheral devices of memory devices
-
- 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/324—Power saving characterised by the action undertaken by lowering clock frequency
-
- 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/22—Microcontrol or microprogram arrangements
- G06F9/28—Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
-
- 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
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4893—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
- G06N3/065—Analogue means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- 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)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Neurology (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Power Sources (AREA)
Abstract
本公开涉及软件辅助功率管理。实施例包括一种装置,该装置包括耦合到存储器的执行单元、微代码控制器和硬件控制器。微代码控制器用于:在指令流中标识全局功率和性能提示,该指令流包括要并行执行的第一和第二指令阶段;基于第一指令阶段中的同步依赖性来标识局部提示;以及使用第一局部提示以在第一和第二指令阶段的并行执行期间平衡执行单元和存储器之间的功耗。硬件控制器用于:在第一和第二指令阶段的并行执行期间,使用全局提示来确定执行单元的计算电压的适当电压电平和计算时钟信号的频率。第一局部提示包括第一指令阶段的处理速率或关于该处理速率的指示。
Description
技术领域
本公开总体上涉及计算机领域,并且更具体地涉及计算机的软件辅助功率管理。
背景技术
人工智能(AI)应用的需求呈指数增长。AI应用通常涉及深度学习,深度学习是一种机器学习,其使用称为深度神经网络(DNN)的算法的分层结构以学习和识别来自数据表示的模式。DNN通常表示为可以从输入中计算值的互连“神经元”的系统。DNN已经成为用于改善用户体验的直观的人/机交互的有效解决方案,这是称为“认知计算”的新计算范例。在其他用途中,DNN可以用于图像处理、语音和目标识别或自然语言处理。使用神经网络的应用解析大量数据,并且需要典型计算机处理单元(CPU)无法提供的强大处理能力。此外,AI应用通常受到系统电源的有限能力以及相关的散热能力的限制。因此,需要在功率和热量预算范围内满足AI应用越来越高的计算性能需求的解决方案。
发明内容
根据本公开的一方面,提供了一种装置,包括:执行单元,其耦合到存储器;微代码控制器,用于:在指令流中标识全局提示,所述指令流包括要并行执行的第一指令阶段和第二指令阶段;在所述指令流中的所述第一指令阶段中标识第一局部提示;至少部分地基于所述第一局部提示,在所述第一指令阶段和所述第二指令阶段的并行执行期间,平衡所述执行单元和所述存储器之间的功耗;以及硬件控制器,其耦合到所述微代码控制器,所述硬件控制器用于:基于所述全局提示,确定所述执行单元在所述第一指令阶段和所述第二指令阶段的并行执行期间要使用的计算电压的电压电平和计算时钟信号的频率。
根据本公开的一方面,提供了一种系统,包括:存储器;执行单元,其耦合至所述存储器;微代码控制器,用于:对指令流中的第一指令阶段和第二指令阶段进行解码,所述第一指令阶段和所述第二指令阶段要并行执行;在所述第一指令阶段中标识所述第一局部提示;在所述第二指令阶段中标识所述第二局部提示;基于所述第一局部提示确定所述第一指令阶段的第一处理速率;基于所述第二局部提示确定所述第二指令阶段的第二处理速率;以及基于确定所述第一指令阶段的所述第一处理速率大于所述第二指令阶段的所述第二处理速率,将多个速率控制指令插入所述第二指令阶段,以使所述第二指令阶段的执行完成与所述第一指令阶段的执行完成同步。
根据本公开的一方面,提供了一种方法,该方法包括:在指令流中标识全局提示,所述指令流包括要由处理器核的执行单元执行的计算指令阶段;对所述指令流中的所述计算指令阶段进行解码;在所述计算指令阶段中标识第一局部提示;基于所述第一局部提示确定所述计算指令阶段的处理速率;将所述处理速率发送到所述执行单元,以通过增大所述计算指令阶段的计算流水线速率来增大所述执行单元的功耗;以及基于所述全局提示,在所述计算指令阶段的执行期间,增大所述执行单元的计算电压的电压电平并增大所述执行单元的计算时钟信号的频率。
附图说明
为了提供对本公开及其特征和优点的更完整的理解,结合附图参考以下描述,其中相同的附图标记表示相同的部分,其中:
图1是示出根据本公开的至少一个实施例的可以在计算系统中实现的具有软件辅助功率管理能力的集成电路的高级组件的简化框图;
图2是示出根据至少一个实施例的具有软件辅助功率管理能力的集成电路中的控制流的简化框图;
图3A是根据至少一个实施例的利用具有软件辅助功率管理能力的集成电路实现的计算系统中的可能的用户模式驱动器的示例;
图3B是根据至少一个实施例的利用具有软件辅助功率管理能力的集成电路实现的计算系统中的可能的内核模式驱动器的示例;
图4A-4B示出了根据至少一个实施例的具有软件辅助功率管理能力的集成电路的高级功能框图及其控制流程;
图5是示出根据至少一个实施例的具有软件辅助功率管理能力的集成电路的一部分的可能实现方式及其控制流程的简化框图;
图6是根据至少一个实施例的用于包括具有软件辅助功率管理能力的集成电路的计算系统的软件的简化软件流程;
图7是示出在计算系统上运行的示例机器学习工作负载的功耗的图;
图8A是示出在没有软件辅助功率管理能力的计算系统上运行的示例机器学习应用的速率控制器指令流水线缩放的图;
图8B是示出根据至少一个实施例的在具有软件辅助功率管理能力的计算系统上运行的示例机器学习应用的速率控制器指令流水线缩放的图;
图9A-9E是示出根据至少一个实施例的利用软件辅助功率管理能力实现的计算系统的可能操作的简化流程图;
图10是示出根据至少一个实施例的利用软件辅助功率管理能力实现的计算系统的进一步可能的操作的简化流程图;
图11是根据一个实施例的寄存器架构的框图;
图12A是示出根据本公开的实施例的示例性顺序流水线和示例性寄存器重命名、乱序发布/执行流水线两者的框图;
图12B是示出根据本公开的实施例的要被包括在处理器中的顺序架构核的示例性实施例和示例性寄存器重命名、乱序发布/执行架构核两者的框图;
图13A-13B示出了更具体的示例性顺序核架构的框图,该核将是芯片中的多个逻辑块(包括相同类型和/或不同类型的其他核)之一;
图14是根据本公开的实施例的可以具有多于一个核、可以具有集成存储器控制器并且可以具有集成图形的处理器的框图;
图15-18是示例性计算机架构的框图;以及
图19是根据本公开的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图。
具体实施例
以下公开提供了用于实现本说明书中公开的特征的各种可能的实施例或示例。这些特征与集成电路的软件辅助功率管理有关。可以在包括具有多个计算引擎的一个或多个核和诸如高带宽存储器(HBM)的负载存储存储器的集成电路中实现软件辅助功率管理。具有软件辅助功率管理的集成电路对于运行涉及多层计算的机器学习处理的计算系统可能特别有利。在示例中,可以实现软件辅助主动功率性能管理技术以在总系统功率预算内最大化加速器性能。这可以通过以下操作来完成:针对当前工作负载预先分析实际的指令队列,以计算机器学习系统(例如专用深度学习/人工智能(DL/AI)加速器)上的多个子系统组件之间的功率预算的逐周期分配。通过向指令分配特定的功率性能权重(例如,软件提示),可以分析和估计输入指令队列的潜在计算或存储器需求。动态功率性能优化技术可以基于对指令中标识的功率性能权重的分析来执行。这样的技术可以包括配置跨多个子系统域(例如,计算、存储器、互连等)的最佳功率预算。
为了说明具有软件辅助功率管理的计算系统的几个实施例,重要的是首先了解与神经网络应用相关联的操作和活动以及运行此类应用的系统的功率管理。因此,以下基础信息可以被视为可以适当地解释本公开的基础。
大多数DL/AI工作负载包括以“流”模式操作的网络或层,其中将专用内核(在本文中也称为“指令流”)下载到加速器。加速器是一种设计为机器学习应用的硬件加速的微处理器或计算机系统。硬件加速涉及使用计算机硬件以比在通用处理器上运行的典型软件更高效地执行某些功能。由于DL/AI工作负载中的这些指令流可能是特定于加速器的,因此可以对其进行编译和优化以实现最佳性能。
客户对DL/AI应用越来越高的计算性能的不断增长的需求受到系统电源和相关散热的有限能力的限制。通常,响应是在单个子组件功率和热预设范围内被动地限制系统性能。例如,在当前的机器学习(ML)加速器被设计为以300瓦(W)的功率预算运行以实现一定的性能(例如,每秒150万亿次操作(TOPS))时,为了预设标称频率和电压而假设了最坏的运行条件。例如,300W可以被划分为使得计算引擎获得150W,而存储器获得150W,与在任何给定时间正在执行的操作阶段(例如,计算阶段、存储器阶段)无关。因此,当实际工作负载小于预设条件时,加速器执行不佳。相反,当实际工作负载大于预设条件时,加速器过执行并可能触发热过载条件。通常,在这种情况下,性能会快速受到限制,以保持在预设的运行条件之内。
传统上,平台功率管理在子系统级是“被动的(reactive)”而不是“主动的(proactive)”。在这些系统中,可以基于先前的采样历史或对过去发生的监视事件的预设检测,对子组件应用动作。一种特定的方法涉及动态电压频率缩放(DVFS)技术,该技术旨在通过动态调整电压和频率来降低动态功耗。功耗是每单位时间用于操作组件的能量,并且例如可以以瓦特或千瓦特(kW)进行测量。功耗和速度是电源电压的函数,其中CMOS逻辑的速度与电源电压成正比,并且其中CMOS的功耗与电源电压(VDD2)的平方成正比。因此,降低电源电压可以降低功耗。但是,DVFS可以基于来自各个子系统组件的预设功耗和热限制触发。在这种方法中,当触发热或功耗预设条件时,平台性能会降低。此外,由于不可能完全准确地预测子系统对总功耗的各自贡献,因此在最坏的运行条件下,各自性能都处于保护范围。因此,该解决方案提供了次优的运行优势,其牺牲了在功率和热预设条件下运行的性能。
具有软件辅助功率管理的集成电路解决了许多上述问题(以及更多问题)。深度学习/人工智能(DL/AI)工作负载在计算内核、拓扑等方面具有可预测的行为。本文所述的具有软件辅助功率管理的集成电路的一个或多个实施例利用此信息来实现主动功率管理策略以通过平衡执行单元(例如,矩阵处理单元(MPU))和存储器(例如,高带宽存储器(HBM))之间的功耗来优化硬件的性能(例如计算速率与存储器访问带宽)。这可以通过区分指令流的每个处理阶段所需的不同资源(例如,计算或存储器)并优先考虑其使用来实现。
在一个示例中,可以利用功率性能优化提示来编译DL/AI应用。硬件可以使用这些软件提示来辅助动态电压、频率和流水线缩放以及用于执行DL/AI应用的带宽利用率控制。动态电压、频率和流水线缩放硬件允许动态改变执行流水线利用率以及电源电压和运行频率。可以对流水线进行调制以控制系统利用率。另外,可以执行性能、功率和温度监控器的定期采样。硬件、固件和软件的协作基于对实际工作负载和运行条件的预先了解来最大化性能。
这些软件提示可以内联地嵌入在指令流中(例如,在内核代码中),并且可以帮助标识指令流的每个处理阶段或线程所需的不同资源。命令解码器可以被配置为标识嵌入式软件提示,并且这些提示可以用于限制或提高相关的硬件利用率,而不会超出执行单元(例如MPU)和存储器(例如HBM)所允许的组合功率的最大量。具体地,软件辅助功率管理可以利用嵌入在指令流中的功率管理提示来微调用于HBM访问和MPU执行的独立流水线,以在工作负载内通过子任务(或指令阶段)及时完成(JIT)。因此,可以使用工作负载的预分析和将软件提示嵌入到正常指令流中,使得有目的地平衡每个执行流水线的性能或效率。在一个示例中,这些软件提示可以使硬件优化专门的操作,例如循环和及时数据预提取,否则这些专门的操作无法容易地得出。这种软件辅助的硬件可以执行来自指令队列的这些指令流,从而提供对指令未来动作的可见性,从而提供为实现适当的功率性能目标而进行计划的主动能力。
一个或多个实施例还可以包括被配置为功率和热管理状态机(PTM-STM)的功率管理(PM)控制硬件,以基于工作负载和运行条件在由PM软件启发式方法预编程的多个运行点(例如,电压、频率、流水线)之间切换。这允许功率管理控制硬件快速响应工作负载和运行条件的任何变化。这还允许PM启发式软件主动分析工作负载并预编程对环境条件变化的适当响应。因此,软件可以设置PM策略,并且硬件可以执行该策略以最小化响应时间并最大化功率使用。
软件辅助功率管理解决方案的实施例可以提供更高的性能、更高的效率以及更高的硬件利用率。首先,通过分析要在队列中执行的实际指令流来得出未来的计算资源需求。因此,对计算资源需求的估计反映了实际的工作负载,这使性能的保护范围最小化。其次,估计窗口与执行流水线中的指令流对齐。因此,与典型的粗粒度监视算法相比,硬件有可能更频繁地执行特定于周期的调整优化。因此,硬件可以利用逐周期机会来优化功率和性能。第三,由于功率性能优化基于多个子组件之间的单独功耗折衷,因此可以在每个周期将分配给不相关组件的总功率分配给每个组件的当前任务。因此,对于给定的总系统功率,可以使有效性能最大化。因此,该解决方案使用户通过由于更好地利用其资源而降低运行成本来受益。
转到图1,现在提供关于具有软件辅助功率管理的可能集成电路100的简要描述。集成电路100包括至少一个处理器110、存储器130、用于促进处理器与存储器之间的控制通信的系统管理控制器(SMC)120。处理器110可以包括多个张量处理核(TPC)计算引擎112(1)-112(M),其可以形成张量处理集群。存储器130可以包括与TPC计算引擎分开的多个高带宽存储器(HBM)单元132(1)-132(N)。存储器130可以包括容纳存储器访问的任何合适的存储器,包括但不限于加载存储存储器。高带宽存储器可以在一个或多个实施例中使用,并且旨在包括被设计为允许以高速率(例如,字节/秒等)从存储器读取数据或将数据存储到存储器中的存储器。集成电路100可以被配置为单个裸片(die),或者可以包括用于双裸片配置的附加的计算引擎和HBM单元。
对于机器学习应用,TPC计算引擎112(1)-112(M)可用于深度神经网络(DNN)加速的集群中。TPC集群可用于为DNN应用执行多个级别的工作。DNN应用的指令可以被提供给每个TPC计算引擎,并且来自适当HBM单元的数据可以被分发到每个TPC计算引擎,使得每个TPC计算引擎可以计算其自己的结果。TPC计算引擎的结果被组合以生成特定级别工作的结果。数据可以被返回到HBM单元,新的数据可以被分发到TPC计算引擎,并且每个TPC计算引擎基于先前级别的结果和新的数据来计算新的结果。可以重复执行该处理,直到达到最终结果。通常,此处理涉及两个操作阶段,包括计算阶段和存储器阶段。在计算阶段期间(例如,当执行计算集群时),计算引擎的功耗显著大于HBM单元的功耗。在存储器阶段期间(例如,当最初为指令队列提取数据或将数据存储在指令队列的末尾时),HBM单元的功耗显著大于TPC计算引擎的功耗。
在一个或多个实施例中,机器学习应用可以通过集成电路100编译为具有软件提示的代码105,从存储器中提取,并存储在指令队列中。指令队列中的代码可以通过计算引擎112(1)-112(M)进行解码和分析。从代码中标识出的全局软件提示可以被提供给系统管理控制器120,以控制集成电路100的全局电压和频率,并基于环境和/或运行条件调整HBM单元132(1)-132(N)和计算引擎112(1)-112(M)的局部处理速率。从代码中标识出的局部软件提示可以被提供给TPC计算引擎(例如112(1)-112(M)),以控制HBM单元132(1)-132(N)和计算引擎112(1)-112(M)的执行单元的局部处理速率。
图2是示出可以在计算系统中实现的集成电路200和软件辅助功率管理技术的控制流的简化框图。集成电路200示出了集成电路100的其他可能的细节。集成电路200包括计算引擎210、存储器250和其他硬件(例如控制硬件260)。在至少一种实现方式中,计算引擎210可以被配置为TPC计算引擎112(1)-112(M)之一,并且存储器250可以被配置为具有HBM单元132(1)-132(N)的存储器130。
计算引擎210可以包括微代码控制器(MCC)220和执行单元212。在至少一个实施例中,执行单元212可以被实现为矩阵处理单元(MPU)。TPC计算引擎可以包含两个执行单元212,但是其他实现方式可以包括具有单个执行单元或多于两个执行单元的计算引擎。MCC220可以包括用于对指令进行解码的命令解码器230以及用于对解码的指令进行调度以供执行的速率控制器/调度器240。MCC 220还可以包括存储器访问单元(MAU)214和片上路由器(OCR)网络216。OCR216可以包括用于访问存储器250的HBM接口。控制硬件260可以包括事件检测器262、系统管理控制器(SMC)264、时钟发生器267和稳压器269。
控制流X1-X12指示在执行软件辅助功率管理技术的集成电路200中可能发生的可能流。控制流X1-X12可以表示控制信号、数据流、用于产生期望结果的任何其他通信或其任意组合。另外,每个控制流可以表示一个或多个控制信号、数据流或其他通信。首先,在控制流X1中,从存储器中提取编译有软件提示的软件代码205,并将其存储在指令队列中以由命令解码器230进行解码。解码的软件可以被提供给速率控制器/调度器240。
在一个或多个指令的代码中可以包括软件提示,这些一个或多个指令在本文中被称为“指令阶段”。指令阶段可以包括一个或多个指令,并且每个指令可以被执行一次或多次(例如,在预定次数的循环中)。在控制流X2中,解码的代码及其软件提示被提供给速率控制器/调度器240。
速率控制器/调度器240确定每个指令阶段的调度,包括是否要并行调度任何指令阶段。应当注意,一些计算(MPU)和存储器(HBM)操作是交错的,但是如果不违反指令阶段之间的依赖关系,则可以并行运行。速率控制器/调度器240分析每个指令阶段的软件提示,并确定哪些指令阶段将被速率控制。在一个示例情形中,如果存储器指令阶段被调度与计算指令阶段并行执行,则计算指令阶段的软件提示可能指示该计算指令阶段可能消耗的功率是存储器指令阶段的两倍。在这种情形下,适当数量的速率控制指令可以在指令流中被添加到存储器指令阶段,以有效地减慢存储器指令阶段的处理速率。例如,可以在存储器指令阶段中插入一个或多个“无操作”或NOP指令。因此,在要执行并行计算阶段的时间段内分布存储器指令。通过使用一个或多个速率控制的指令来减慢存储器指令阶段的处理速率,存储器指令阶段消耗的功率更少,从而可以将更多功率分配给计算指令阶段。因此,原本可以分配给存储器指令阶段的一些功率可以被转移到计算指令阶段。
如果基于软件提示对存储器指令阶段进行了速率控制,则经由控制流X4使用速率控制的存储器指令阶段来经由延迟的存储器访问请求来限制存储器250(例如HBM)和OCR216的存储器访问带宽。延迟的存储器访问请求是在要执行并行指令阶段(存储器或计算)的时间段内分布的存储器指令阶段的存储器访问请求。在至少一个实施例中,可以通过在存储器指令阶段中选择性地插入速率控制指令(例如,NOP)以迫使存储器指令阶段在并行指令阶段完成执行的同时或基本同时完成执行,来延迟存储器访问请求。
如果基于软件提示对计算指令阶段进行了速率控制,则经由控制流X5使用速率控制的计算指令阶段来经由延迟指令(例如,在指令流的计算阶段插入的NOP指令)限制执行单元212的每个周期(IPC)的指令。每个周期的限制计算指令是计算指令阶段中的计算指令,其分布在要执行并行指令阶段(存储器或计算)的时间段内。在至少一个实施例中,可以通过在计算指令阶段中选择性地插入速率控制指令(例如,NOP)以迫使计算指令阶段在并行指令阶段完成执行的同时或基本同时完成执行,来限制每个周期的计算指令。
如果存储器指令阶段具有比要并行执行的另一指令阶段更快的处理速率,则根据存储器指令阶段的软件提示确定的处理速率用于控制存储器250(例如,HBM)和OCR 216的存储器访问带宽。在一个实施例中,基于存储器指令阶段的处理速率的每给定时间或周期的提取和写入次数可以被提供给MAU 214以增大HBM带宽。
如果计算指令阶段具有比要并行执行的另一指令阶段更快的处理速率,则根据计算指令阶段的软件提示确定的处理速率用于控制计算流水线速率(例如,每周期的指令(IPC))。在一个实施例中,计算指令阶段的处理速率可以被提供给执行单元212以增大IPC。
全局提示也可以存在于指令流中,并且可以由命令解码器230标识。全局提示可以经由控制流X3被提供给SMC 264。SMC 264可以使用全局提示来确定要为指令流设置的适当频率和电压。SMC 264可以经由控制流X9指示将由时钟发生器267设置的适当频率。SMC 264可以经由控制流X8指示将由电压调节器269设置的适当电源电压。时钟发生器267经由控制流X11为执行单元212、存储器访问单元214和OCR 216生成具有适当频率的时钟信号。电压调节器269经由控制流X10调节执行单元212、存储器访问单元214和OCR 216的电源电压。
事件检测器262检测达到或超过针对系统设置的相应阈值的热条件和功耗水平。当功耗被确定达到或超过计算引擎或存储器中的最大功率(Pmax)阈值时,其被事件检测器262检测到,并且控制流X12提醒速率控制器/调度器240使得由软件提示指示的处理速率可以被覆盖,并可以为计算引擎和存储器选择适当的处理速率以防止即将发生的故障。当达到或超过Pmax阈值时,可以经由控制流X6通知SMC 264,并且可以经由X7从SMC 264对存储器250进行直接速率控制。速率控制指令可以被插入在存储器侧以对读取和提取指令进行速率控制并限制存储器250的功耗。此外,可以经由控制流X8-X11应用适当的校正措施以设置新的时钟频率和操作电压。
还可以相对于与其他补偿措施相关联的其他阈值水平来分析功耗和温度水平。当组件的温度达到或超过临界温度阈值或警报温度阈值时,这被事件检测器262检测到,并且信号经由控制流X6通知SMC 264,使得根据达到的特定阈值,处理速率可以减慢适当的量。类似地,如果组件使用的功率达到临界功率阈值或警报功率阈值,则这被事件检测器262检测到,并且信号经由控制流X6通知SMC 264,使得根据达到的特定阈值,处理速率可以减慢适当的量。警报设置可用于更温和的校正,而临界设置可用于更积极的校正措施。例如,警报设置可用于轻微调整时钟频率,而临界设置可用于应用更积极的时钟频率降低和电压降低。
转向图3A-3B,图3A-3B示出了在利用软件提示进行编译之前(图3A)和利用软件提示进行编译之后(图3B)的可能的系统软件指令流的示例。用户模式驱动器300是在利用软件提示编译之前的系统软件的示例。指令阶段302包括SETFLEX指令,以设置适当的数据格式用于要执行的计算。指令阶段304包括两个MCOPY指令以将数据从主存储器复制到高带宽存储器(HBM),然后将HBM中的数据复制到局部存储器,该局部存储器可以是存储器资源块(MRB),以供指令流中的后续计算。每个MCOPY指令都可以执行多个(x)复制指令,直到后续计算所需的所有数据都已复制到局部存储器。
指令阶段306包括MATMUL(矩阵乘法)指令以计算存储在局部存储器中的数据。MATMUL指令将对M1、M2和M3向量执行矩阵乘法。指令阶段308通过使用M3和M4向量执行ReLU操作(整流线性激活函数),使用M4和M5向量执行BN操作(批量归一化)以及使用M5和M6向量执行MaxPool操作(作为基于样本的数据离散化处理的池化)来处理MRB数据。通常,ReLU、BN和MaxPool操作使用复制到局部存储器中的数据执行不同的机器学习层。指令阶段310包括两个MCOPY指令以将数据从局部存储器(或MRB)复制到高带宽存储器,然后将HBM中的数据复制回主存储器。每个MCOPY指令都可以执行多个(x)复制指令,直到由该指令流计算并存储在局部存储器中的所有数据都复制回主存储器。
在一个或多个实施例中,软件提示可以被嵌入内核代码中,该内核代码可以通过编译诸如用户模式驱动器300之类的用户模式驱动器来生成。例如,软件提示被定义为功率/性能管理操作员代码(PMOP),格式如下:
在一种可能的实现方式中,PM操作码可以是24位,包括9位操作码、8位目标和7位值。在其他实施例中,PM操作码可以使用不同的位配置。在PM操作码为24位的实施例中,下表提供了指令名称、位格式以及目标代理或值的描述的示例:
应当注意,通常,本文的描述指代用于存储器网络流水线(例如,HBM)和计算执行管线(例如,MPU)的软件提示。然而,本说明书中公开的概念不限于此,并且可以应用于其他执行流水线。例如,软件辅助功率管理也可以应用于执行流水线,例如存储器访问引擎(MES)、寄存器控制路由器(RCR)、卷积切片引擎(CSE)、芯片到芯片(C2C)、主控制CPU(MCC)、主机接口(HIF)和其他任何执行引擎。
在图3B中,软件辅助内核320是利用软件提示编译的指令队列中的系统软件的示例。软件辅助内核代码320中的编译指令阶段302'、304'、306'、308'和310'分别对应于用户模式驱动器300中的指令阶段302、304、306、308和310。指令阶段302'包括全局软件提示322A,该全局软件提示322A对SETFLEX指令进行分界并指示在执行例如内核320期间系统的频率和电压。在一个示例中,软件提示322A包括该软件提示是针对SMC设置模式的全局提示的指示(例如,PMOP_SMC_mode)。另外,软件提示322A还包括指示指令队列中的工作负载的类型的值参数(“val”)。工作负载的类型可以为系统控制器提供指导以确定系统针对指令队列运行的最佳速度(例如,时钟频率)和用于指令队列的电压设置。在其他实施例中,可以明确地定义值参数以包括电压值和/或频率值。
指令阶段304'包括用于存储器指令的局部软件提示。软件提示开始324A和相应软件提示结束324B划定了该软件提示应用到的MCOPY存储器指令。在一个示例中,软件提示开始324A和软件提示结束324B各自包括软件提示是存储器指令的局部提示的指示(例如,PMOP_HBM_start,PMOP_HBM_end)。软件提示开始324A还包括速率参数(“rate”),其指示期望运行存储器指令阶段(例如,“MCOPY MEMx,HBMx”和“MCOPY HBMx,MRBx”)的处理速率或时间量。在一个实施例中,速率参数是时间百分比,其表示存储器指令阶段要运行多长时间。时间百分比可以是内核要运行的总时间的百分比。在其他实施例中,速率参数可以是任何其他合适的测量,例如时钟滴答数、快速周期等。
指令阶段306'包括用于计算指令的局部软件提示。软件提示开始326A和相应软件提示结束326B针对该软件提示应用到的矩阵处理单元(MPU)划定了MATMUL计算指令。另外,软件提示开始326A和软件提示结束326B也为算术逻辑单元(ALU)划定了RELU、BN和MaxPool计算指令。在一个示例中,软件提示开始326A和软件提示结束326B各自包括软件提示是由MPU执行的计算指令的局部提示的指示(例如,PMOP_MPU_start,PMOP_MPU_stop)。软件提示开始326A还包括指示期望运行计算指令阶段(例如,“MATMUL M1、M2”)的处理速率或时间量的速率参数(“rate”)。在一个实施例中,速率参数是表示计算指令阶段要运行多长时间的时间百分比。时间百分比可以是内核要运行的总时间的百分比。在其他实施例中,速率参数可以是任何其他合适的测量,例如时钟滴答数、快速周期等。
指令阶段308'包括计算指令的局部软件提示。软件提示开头328A和相应软件提示结束326B针对该软件提示应用到的算术逻辑单元(ALU)划定了RELU、BN和MaxPool计算指令。在一个示例中,软件提示开始328A和软件提示结束328B各自包括软件提示是用于由ALU执行的计算指令的局部提示的指示(例如,PMOP_ALU_start、PMOP_ALU_stop)。软件提示开始326A还包括指示期望运行计算指令阶段(例如“Relu M3”、“BN M4”和“MaxPool M5”)的处理速率或时间量的速率参数(“rate”)。在一个实施例中,速率参数是表示计算指令阶段要运行多长时间的时间百分比。时间百分比可以是内核要运行的总时间的百分比。在其他实施例中,速率参数可以是任何其他合适的测量,例如时钟滴答数、快速周期等。
指令阶段310'包括存储器指令的局部软件提示。软件提示开始330A和相应软件提示结束330B划定了该软件提示应用到的MCOPY存储器指令。在一个示例中,软件提示开始330A和软件提示结束330B各自包括软件提示是存储器指令的局部提示的指示(例如,PMOP_HBM_start、PMOP_HBM_end)。软件提示开始330A还包括指示期望运行存储器指令阶段(例如,“MCOPY MRBx、HBMx”)的处理速率或时间量的速率参数(“rate”)。在一个实施例中,速率参数是存储器指令阶段要运行的时间的百分比。时间百分比可以是内核要运行的总时间的百分比。在其他实施例中,速率参数可以是任何其他合适的测量,例如时钟滴答数、快速周期等。
还应当注意,在一些实施例中,速率参数可以指示指令或工作负载的类型,而不是时间、时钟滴答声等的实际百分比。特定指令阶段的指令或工作负载的类型可以用于确定该指令阶段的适当预编程处理速率。
转到图4A-4B,图4A-4B一起示出了具有软件辅助功率管理的系统的高级功能框图。图4A-4B描绘了如何通过允许每个周期的指令(IPC)和存储器带宽(BW)要求的逐周期平衡来使用软件主动地控制加速器的功率性能。一个或多个实施例利用软件辅助的动态电压频率流水线缩放(DVFPS)硬件来实现主动功率性能管理技术,以在固定功率和热运行条件下优化系统性能。具有软件辅助的DVFPS的实施例克服了传统被动的动态电压频率(DVFS)缩放技术的缺点。
图4A是TPC计算引擎400(例如112(1)-112(M),210)以及TPC计算引擎内的软件辅助功率管理技术的控制流的高级功能框图。TPC计算引擎400可以包括命令解码器430、局部性能监视器435、速率控制器442、MPU-IPC-RATE(每个周期速率的矩阵处理单元指令)存储装置443和相应速率多路复用器444A和444B、HBM-BW-RATE(高带宽存储器-带宽速率)存储装置445和相应速率多路复用器446A和446B,以及计算、路由和局部存储器组件410。计算、路由和局部存储器组件410可以包括矩阵处理单元(MPU)412A和412B、存储器访问单元(MAU)414、片上路由器(OCR)416和局部存储器资源块(MRB)418。
嵌入式内核模式PMOP(功率/性能管理操作员)代码允许MPU(矩阵处理单元)执行时间和HBM(高带宽存储器)预加载要被调度的设置时间,以优化张量处理集群的总体功率和性能。图4A描绘了TPC计算引擎400,其中内核代码(例如105、205、305)内的嵌入式PMOP代码被解码并分配给相关联的执行单元(例如MPU 412A、412B),使得可以通过及时交付与当前任务的及时完成同步的下一数据来优化针对工作负载的计算集群的有效动态电容(Cdyn)。
首先将具有软件提示的内核代码从高带宽存储器(例如132(1)-132(N),250)下载到TPC计算引擎400。内核代码在本文中也称为“指令流”。在至少一个实施例中,可以经由适当的主机接口下载内核代码。命令解码器430解码内核代码并标识用于内核代码中的存储器指令阶段(例如,HBM)和计算指令阶段(例如,MPU、ALU、CPU)的软件提示。命令解码器允许平衡多个计算资源,以优化应用的功率和性能需求。这是通过对多个独立指令流水线(例如,HBM、MPU、ALU等)进行软件辅助的硬件调度来实现的,用于“及时”完成存储器访问和计算执行。因此,通过使用内核代码中的软件提示,软件可以主动请求哪些并行任务应优先使用有限的可用能量。
在至少一个实施例中,局部软件提示经由其相应的指令阶段的“速率”参数包括一种工作负载。例如,不同的指令阶段可以是不同类型的工作负载(例如,类型A、类型B、类型C、类型D等),它们对应于不同的处理速率(例如,内核代码的总执行时间的90%、70%、30%、10%等)。因此,软件提示(例如,324A-324B)中的速率参数可以指示其划定的指令(例如,存储器指令阶段304'、计算指令阶段306')的适当的工作负载类型(例如,类型A、类型B、类型C等)。
在一些情况下,即使某些指令阶段包含不同的指令,它们也可能具有相同的类型。例如,当两个不同的计算指令阶段运行相同或接近相同时间量时,可能会发生这种情况。在这种情况下,内核代码可以配置为包含针对两个不同的计算指令阶段中的每个的相同软件提示。在至少一个实施例中,用于存储器指令阶段的工作负载类型和用于计算指令阶段的工作负载类型可以由命令解码器经由对应于控制流X2的431A和431B提供给速率控制器442。
在其他实施例中,可以利用特定的处理速率而不是工作负载的类型来对局部软件提示进行编程。然而,在这种情况下,由于处理速率不是预编程状态,因此可能需要额外的编程时间。
速率控制器442控制执行单元(例如,MPU 412A、412B)的处理速率。在至少一个实施例中,速率控制器442通过允许内核模式驱动器嵌入速率控制指令以及通常的加速器指令来实现软件辅助的主动功率性能管理。速率控制器442还执行每个集群任务调度,以控制片上路由器(例如,OCR 415)网络和高带宽存储器(例如,HBM 132(1)-132(N)、存储器250)子系统的每周期指令(IPC)计算速率和输入/输出(IO)带宽(BW)利用率。
在一个实施例中,速率控制器442可以将信号441A发送到MPU-IPC-RATE存储装置443,以基于从命令解码器430接收到的计算软件提示的速率参数来发起对预编程处理速率的选择。可以将存储在MPU-IPC-RATE存储装置443中的预编程处理速率提供给速率复用器444A。速率控制器442可以经由441B将计算软件提示的速率参数发送给速率复用器444A以选择适当的处理速率。
速率控制器442还可以将信号441D发送到HBM-BW-RATE存储装置445,以基于从命令解码器430接收到的存储器软件提示的速率参数来发起对预编程处理速率的选择。存储在HBM-BW-RATE存储装置445中的预编程处理速率可以被提供给速率复用器446A。速率控制器442还可以经由441E将存储器软件提示的速率参数发送给速率复用器446A以选择适当的处理速率。如本文参考图4B进一步描述的,如果速率控制器442从系统管理控制器(例如,图4B中所示)接收到速率限制480,则速率限制可以经由441B和441E提供到速率复用器444A和速率复用器446A,以基于全局提示和预期工作负载来强制选择各自的处理速率。
预编程处理速率的示例包括但不限于(或不要求包括)每秒万亿次操作(TOPS)速率、通用矩阵乘法(GEMM)速率、卷积(CONV)速率和元素级(element wise,ELEM)向量处理速率。举例来说,MPU利用率可以是以下项:TOPS=100%;GEMM=80%;CONV=40%,并且ELEM=20%。最大功率速率(Pmax)也可以存储在MPU-IPC-RATE存储装置443和HBM-BW-RATE存储装置445中,并且可以用于基于系统达到或超过最大功率阈值覆盖其他速率。在实施例中,MPU-IPC-RATE存储装置443和HBM-BW-RATE存储装置445可以被配置为包含预编程速率的不同寄存器。在该示例中,在使用五个不同的预编程速率的情况下,五个不同的寄存器可以包含速率。然而,显而易见的是,在一个或多个实施例中,可以使用任何数量的预编程速率以及用于保持速率的相应数量的寄存器。在至少一个实施例中,这些预编程的速率值可以具有相应影子寄存器,当从系统管理控制器(图4B所示)接收到速率限制时,该影子寄存器可以存储由速率限制480设置的最小速率限制。速率限制可以基于全局提示和预期的工作负载。
在一个实施例中,速率复用器444B和速率复用器446B确定是使用选择的预编程处理速率还是使用Pmax速率。由速率复用器444B和446B接收到的TPC_PMAX信号可以指示MPU412A、412B和/或HBM存储器已达到或超过的最大功率阈值。在这种情况下,可以覆盖基于局部软件提示选择的预编程速率,而可以替代地选择适当的Pmax速率。控制流X4和X5表示速率控制器442、MPU-IPC-RATE存储装置443、HBM-BW-RATE存储装置445和速率复用器444A、444B、446A和446B中的处理。
在至少一个实施例中,针对计算指令阶段的选定的预编程处理速率(在本文中也称为“计算速率”)表示计算指令阶段要运行的时间量。该计算速率可以经由信号441C发送到MPU 412A和412B,以控制MPU运行的时间量(或周期)。在一个或多个实施例中,计算速率可以表达为计算指令阶段要运行的时钟周期数、指令流要运行的总时间的百分比、或计算指令要运行的时间量、或任何其他合适的表达式以允许确定计算指令阶段的IPC。
在至少一个实施例中,针对存储器指令阶段的选定的预编程处理速率(在本文中也称为“存储器速率”)表示存储器指令阶段要运行的时间量(例如,将数据从一个区域移动到另一区域所花费的时间量)。存储器速率可以经由信号441F发送到存储器访问单元414,以控制OCR416和HBM子系统的带宽利用率。在一个或多个实施例中,存储器速率可以表达为存储器指令阶段要运行的时钟周期数、指令流要运行的总时间的百分比、或计算指令要运行的时间量、或任何其他合适的表达式以允许确定存储器指令阶段的带宽利用率。
速率控制器442还可以通过在存储器指令流水线中插入速率控制指令来对存储器指令阶段进行速率控制。例如,当其存储器速率小于要并行执行的计算指令阶段的计算速率时,可以插入无操作(NOP)指令以减慢由存储器指令阶段执行的读取和写入操作。在至少一个实施例中,选择要插入的速率控制指令的数量以将存储器指令阶段与计算指令阶段同步,使得指令阶段在相同(或基本相同)的时间完成。在至少一些情况下,此同步允许存储器指令完成即时执行(JIT),以使与存储器相关的指令阶段开始执行。与存储器相关的指令阶段是依赖于存储器指令阶段的任何指令阶段,因为与存储器相关的指令阶段使用由存储器指令阶段操纵(读取和/或写入)的数据。
速率控制器442还可以通过在计算指令流水线中插入速率控制指令来对计算指令阶段进行速率控制。例如,当计算指令阶段的计算速率小于要并行执行的存储器指令阶段的存储器速率时,可以插入无操作(NOP)指令来减慢由计算指令阶段执行的计算。在至少一个实施例中,选择要插入的速率控制指令的数量以将计算指令阶段与存储器指令阶段同步,使得指令阶段在相同(或基本相同)的时间完成。在至少一些情况下,此同步允许计算指令阶段完成即时执行(JIT),以使与计算相关的指令阶段开始执行。与计算相关的指令阶段是依赖于计算指令阶段的任何指令阶段,因为与计算相关的指令阶段使用由计算指令阶段操纵(计算)的数据。
图4B描绘了示例控制硬件450,其中系统管理控制器(SMC)464帮助基于具有嵌入在内核代码(例如105、205、305)中的全局软件提示的PMOP代码来设置DVFS运行条件。内联插入PMOP代码可以用于将实际的TPC命令执行与相关的HBM提取操作同步。如本文先前所解释的,可以通过速率控制器442基于PMOP代码在适当的指令阶段中插入速率控制操作(例如,NOP)来实现同步。这使内核模式驱动器准确地设置工作负载的有效动态电容(Cdyn),使得SMC固件可以针对每个TPC计算引擎动态调整到最佳操作频率和电压。
控制硬件450可以包括命令解码器430、全局性能监视器461、主机命令邮箱462、事件检测器463、系统管理控制器(SMC)464、全局时钟发生器467、集群电压调节器(VDDTPC)466、和集群HBM-BW调节器469。在至少一个实施例中,单个同步全局时钟用于所有TPC计算引擎(例如400)和片上路由器(例如416)。控制硬件450还可以包括其他组件,例如打包器465和控制器468。
全局软件提示和其他信息被馈送到控制硬件450中以执行动态电压缩放和动态频率缩放。动态电压缩放可以改变针对不同指令流提供给执行单元(例如,MPU 412A、412B)的电压电平,并且动态频率缩放可以改变针对不同指令流的处理器速度。因此,可以调整系统组件(例如MPU 412A、412B和OCR 416)中的功耗水平。可以通过利用指令流中的全局软件提示来实现这种缩放,该全局软件提示指示与指令流相关联的工作负载的类型。例如,指令流的工作负载的类型可以与图像识别、语言翻译等相关联。主机命令邮箱462可以经由信号460C向SMC 464提供全局软件提示。SMC 464可以使用全局软件提示来配置设置,包括运行MPU 412A、412B和OCR 416的速度(例如,时钟频率)以及用于帮助执行单元和OCR运行的电压设置。除了接收全局软件提示之外,SMC 464还可以经由信号460B从事件检测器463接收信息。
SMC 464使用来自指令流的全局软件提示和其接收的其他环境信息信号来确定最佳条件并导致生成控制信号以配置指令流水线,在指令流执行期间系统组件可以在该最佳条件下运行。全局软件提示可以指示要在指令流中执行的工作负载的类型(例如,图像识别、语言翻译等)。至少部分地基于指令流的工作负载的类型,SMC 464可以确定要提供给系统组件(例如,MPU 412A、412B和OCR 416)的最佳速度(例如,时钟频率)和电压电平以执行指令流。
考虑语言翻译机器学习应用的第一示例。在此示例中,搜索词汇并执行计算以生成给定文本到另一种语言的翻译。计算引擎可能非常忙,运行时间为90-95%。但是,存储器访问仅可以运行20%到25%的时间。因此,可以在指令流中的读取和写入指令之间插入速率控制指令,以有效地将有效处理速率减慢到20%。对于计算侧,可以增大频率(例如,通过SMC 464和时钟发生器467),以尽可能快地运行计算集群(例如,MPU 412A和412B)。还可以通过转移在存储器侧未使用的功率并将其置于计算侧来提高电压电平(例如,通过SMC 464和电压调节器466)以尽可能快地运行计算集群。
考虑图像处理机器学习应用的另一示例。在此示例中,与对数据执行计算函数相比,从存储器中提取图像数据并将图像数据写入存储器在处理中所占的比例显著更高。因此,计算函数受系统将数据传送到HBM存储器中和从HBM存储器传送出数据的速度限制。如果HBM存储器以固定的时钟频率运行,则无法改变HBM存储器的电压电平。但是,可以降低计算侧的时钟频率(例如MPU和OCR)。当计算侧的时钟频率降低时,计算侧的电压电平也可以降低。因此,可以通过降低时钟频率和电压来平衡存储器指令和计算指令的执行,使得MPU仅在40%的时间处于活动状态,而HBM存储器可以在100%的时间处于活动状态。在这种情况下,性能不会降低,因为HBM存储器是限制器,并且其处理速度不会改变。此外,由于降低的计算侧的时钟频率和电压,因此可以降低CPU功耗。
SMC 464还可以考虑从事件检测器463接收到的环境信息,以确定是否调整提供给系统组件的速度和/或电压。如本文中进一步描述的,环境信息可以包括例如热条件和/或功耗。
动态频率缩放可以利用集中式或全局时钟发生器(例如时钟发生器467)实现,这可以用于设置核操作时钟频率。如控制流X9所示,SMC464经由打包器465将指令发送到时钟发生器467,以指定设置核操作时钟的频率。可以利用每集群电压调节器(例如电压调节器466)来实现动态电压缩放,该电压调节器可以用来设置等频操作电压。如控制流X8所示,SMC 464经由打包器465将指令发送到电压调节器466,以指定设置等频率操作电压的电平。打包器465是向时钟发生器467和电压调节器466提供适当的输入以确保生成指定的时钟频率和电压电平的组件。在至少一个实施例中,打包器465可以使用片上系统(SOC)互连来与时钟发生器467和电压调节器466通信。
时钟发生器467以SMC 464指定的频率生成时钟信号,并且经由411A将信号发送至MPU 412A和412B以及经由411C发送至OCR 416以控制计算指令阶段和存储器指令阶段的执行速度。时钟信号CLK_TPCx和CLK_OCR由控制流X11表示。如果时钟频率增大,则电压电平也可能增大。如果时钟频率降低,则电压电平也可能降低。电压调节器466生成由SMC 464指定的电平的电压信号,并将该电压信号经由411B发送到MPU 412A和412B,并经由411D发送到OCR 416,以帮助实现期望的执行速度。电压信号VDD_TPCx和VDD_OCR由控制流X10表示。
SMC 464还基于从全局性能监视器461接收到的信息来获得其他TPC计算引擎的全局评估。全局性能监视器461可以从与各个计算引擎相关联的多个局部性能监视器(例如435)收集性能信息。全局评估指示全局存储器活动,该活动基于访问HBM存储器的其他TPC计算引擎的活动级别。由于HBM带宽与每单位时间的HBM读取/写入操作成线性比例关系,因此可以将活动级别测量为HBM存储器的利用率百分比或HBM存储器的带宽百分比。如果另一TPC计算引擎的存储器活动达到阈值量,则SMC 464可以对HBM存储器进行速率控制。具体地,SMC 464可以通过分配TPC计算引擎400预期为其指令流消耗的存储器(即,存储器利用率)来限制其他TPC计算引擎的存储器消耗。这使SMC 464能够全局地控制功耗。如控制流X7所示,SMC 464向HBM存储器发送控制信号以为其指令流分配预期带宽。
如果需要,SMC 464还可以将速率限制480发送到速率控制器442,以通过基于全局提示和预期工作负载强制最小速率限制来控制由速率控制器442选择的处理速率(如果需要的话)。在一个示例中,速率限制480可以是安全限制,以补偿不同环境中的不同时钟频率操作和不同功率预算。因此,SMC 464可以通过基于速率限制调整处理速率值来控制计算资源(例如,每秒的指令)和存储器资源(例如,存储器访问带宽)。举例来说,考虑功耗与频率和利用率活动成线性比例(P=%*C*V2*F),其中C=每个时钟周期切换的电容,V=电压,并且F=频率(例如,每秒的时钟循环数)。一个系统在100%的时间内以一倍频率运行,而另一系统在50%的时间内以两倍的频率运行,它们的有效功耗可以是相同的。因此,当设置可以更有效地操作的较高的时钟频率时可以使用速率限制来设置补偿限制,反之亦然。
事件检测器463可以向SMC 464提供与功耗、热事件和/或系统性能有关的信息。全局性能监视器461可以从局部性能监视器435收集与系统运行速度有关的信息。事件检测器463可以经由信号460A接收该信息。例如,可以收集指示执行指令的速度相对于执行存储器指令的速度(例如,提取和写入)的信息。该信息可以经由信号460A提供给事件检测器463,并且可以用于更好地优化控制区域Z处的控制流X8-X10。
事件检测器463还可以接收与热事件和功率事件有关的外部传感器数据,使得除了来自全局软件提示的工作负载依赖性之外,对功耗水平的调整还具有来自传感器数据的平台依赖性。例如,热和功率水平可以由各自的传感器检测。阈值可以对应于热警报设置、热临界设置、功率警报设置和功率临界设置,可以基于传感器数据评估其中的一个或多个。在可能的实施例中,警报阈值可以用于更温和的校正,而临界阈值可以用于更积极的校正措施。在一个实施方式中,警报阈值可以用于轻微地调整时钟频率,而临界阈值可用于更积极地减慢时钟频率并降低电压。
例如,可以从外部传感器接收热警报信号474A和/或热临界信号474B以指示环境热条件。为在极冷环境中(例如北极数据中心)运行特定工作负载的系统设置最佳功耗水平,可能需要与在热带环境中运行相同工作负载的服务器不同的时钟频率和电压电平调整。热阈值可以用于确定热条件是否达到警报或临界阶段。可以为高温环境和低温环境设置温度条件阈值。
在另一示例中,可以通过事件检测器463从外部传感器接收指示系统组件(例如,执行单元和存储器)的功耗的功率警报信号475A和/或功率临界信号475B。功率阈值可以用于确定功耗是否达到警报或临界阶段。如果功耗达到警报阈值或临界阈值,则在给定其他传感器信息和全局软件提示的情况下,可以适当降低系统组件的时钟频率和电压电平。
事件检测器463还可以检测系统组件达到或超过最大功率阈值的功耗。当功耗达到最大功率阈值时,传感器可以生成最大功率(Pmax)信号。在至少一个实施例中,最大功率阈值表示设备被设计为在短时间内消耗的最大功率。最大功率检测可以用于应用指令流水线的紧急制动,以避免即将发生的故障,并应用适当的校正措施,包括设置新的时钟频率和操作电压。在这种情况下,传感器可以将外部最大功率信号(或Pmax标记470)发送到事件检测器463。如果检测到的功率水平达到或超过最大功率阈值,则可以将功耗降低一定百分比,以防止系统损坏或故障。
在一个示例中,一旦检测到功耗达到或超过最大功率阈值,事件检测器463就可以将Pmax全局信号471A作为TPC_PMAX信号471B发送给TPC计算引擎400,并作为HIM_PMAX信号471C发送给HBM存储器。TPC-PMAX信号471B可以被发送到速率复用器446B和速率复用器444B,其中为计算和存储器指令阶段选择处理速率。在至少一个实施例中,将预编程的Pmax值存储在MPU-IPC-RATE存储装置443和HBM-BW-RATE存储装置445中。TPC_PMAX信号471B的接收可以覆盖由速率控制器基于局部软件提示已经选择或将要选择的处理速率。例如,预编程的Pmax值可以表示在每个矩阵乘法(MM)计算指令周期之前要空闲的周期数。如果MM指令花费32个周期,并且速率存储装置443被预编程具有Pmax值32,则当功耗水平达到最大功率阈值并接收到TPC_PMAX信号时,将应用50%的功率制动以使MPU只执行50%的时间(例如,32个周期用于计算,并且32个周期用于等待)。
HIM_PMAX信号471C可以被提供给HBM存储器(例如,经由HBM接口模块(HIM))。HBM控制器可以具有与速率控制器442相似的速率控制器。HBM速率控制器可以在存储器侧插入速率控制指令以对HBM指令流水线进行速率控制,并且因此限制HBM存储器的功耗。在一个示例中,可以插入NOP指令以将HBM带宽利用率降低50%。
转到图5,图5是示出具有软件辅助功率管理的TPC计算引擎(例如TPC计算引擎112(1)-112(M)、210和400)中的微代码控制器(MCC)500的示例实现方式的框图。MCC 500包括片上路由(OCR)块510、MCC指令先进先出(MIF)520、句柄管理单元(handle managementunit,HMU)530、解析器(PAR)540和中央处理单元(CPU)550。OCR块510可以包括集群到集群数据路由(CDR)接口(I/F)512A和512B、寄存器控制路由器(RCR)接口(I/F)514、集群命令路由(CCR)总线接口(I/F)516和高带宽存储器(HBM)接口模块(HIM)518。解析器540可以包括命令解码器和速率控制器/调度器542、卷积切片引擎(CSE)543、矩阵处理单元(MPU)管理器544、存储器资源块(MRB)接口(I/F)545、集群到集群(C2C)路由器546和双倍数据速率(DDR)存储器547。
首先,在控制流X1中,将嵌入有软件提示的内核代码下载到诸如MCC指令先进先出(MIF)520的缓存中。可以在每个TPC计算引擎(例如,112(1)-112(M))上的MIF中加载内核代码。在控制流X2中,HMU 530从MIF 520获得内核代码并标识全局提示。在控制流X3中,将全局提示发送到系统管理控制器(SMC)(例如120、264、464),以用于设置动态电压和频率缩放运行条件。HMU 530还可以接收已从CSE 543接收到其他软件提示的内核代码以及已由CPU550预处理的内核代码。
命令解码器和速率控制器/调度器542从HMU 530接收具有软件提示的内核代码。由命令解码器和速率控制器/调度器542接收到的软件提示包括速率控制提示(局部软件提示),其指示期望运行存储器指令阶段或执行指令阶段的时间量(例如,百分比、时钟周期等)。某些指令(例如卷积指令)可能需要进行预处理。可以将此类指令提供给CSE 543,使得CSE 543可以扩展指令(例如,通过操纵矩阵),并在扩展指令时插入功率管理提示。CSE 543可以基于具有插入的功率管理提示的扩展指令来生成MES指令输出580。MES指令输出580可以作为MES指令输入582提供给HMU 530,以馈送到命令解码器和速率控制器/调度器542中。
命令解码器和速率控制器/调度器542还可以确定包含在内核代码中的一些复杂指令需要进行预处理以被简化。在这种情况下,指令可以被馈送到CPU 550中以生成一个或多个更简单的指令。可以将由CPU 550生成的一个或多个指令提供给HMU 530,以馈送到解码器和速率控制器/调度器542中。
命令解码器和速率控制器/调度器542可以对从HMU 530接收到的内核代码进行解码,接收到的内核代码包括由CSE 543和/或CPU 550预处理的内核代码。针对要由MPU 560执行的计算指令阶段以及要由高带宽存储器(HBM)590上的存储器访问单元570执行的存储器指令阶段,对内核代码中的速率控制提示进行解析。存储器速率控制提示可用于经由频率较低的HBM接口路由器(HIR)请求来限制HBM带宽。例如,可以在HBM存储器网络流水线中插入NOP指令,以减慢由存储器指令阶段执行的读取和写入操作。存储器访问由控制流X4指示。计算速率控制提示可以用于通过无操作(NOP)延迟请求来限制每周期MPU指令(IPC)。例如,可以在MPU执行流水线中插入NOP指令,以减慢由执行指令阶段执行的计算操作。计算请求由控制流X5指示。
转向图6,图6示出了从高级到低级的软件流程600,其中分析和执行具有软件提示的内核代码。软件流程600可以包括深度学习应用级610、系统软件级620和硬件级630。深度学习应用级610包括云或本地部署(on-premise)的系统612。深度学习软件614可以被开发和/或存储在云中或在本地部署的系统中(例如612)。
系统软件级620可以包括编译器622、发布624、用户模式驱动器626和内核模式驱动器628。发布624可以接收深度学习软件614,并且编译器622可以利用全局和局部软件提示编译深度学习软件614。编译器622将功率性能优化提示传递给硬件,以优化诸如循环和及时数据预提取之类的专门的操作,否则这些专门的操作无法容易地得出。在至少一个实施例中,可以基于深度学习软件中包括的指令的评估和测试来提供这些提示。可以产生用户模式驱动器626以运行深度学习软件应用。可以至少部分地产生内核模式驱动器628,以在深度学习软件的执行期间将全局和局部软件提示应用于硬件。
硬件级630可以包括CPU 632、图形处理单元(GPU)634、模拟器636和应用服务器638。可以将内核模式驱动器628提供给应用服务器638,以在深度学习软件614执行期间管理功率。CPU 632和/或GPU 634也包括在硬件中,并且可以执行要执行的指令的预处理。
图7是描绘使用在本文描述的实施例通过基于逐周期流水线管理主动管理计算资源来获得最大性能的示例益处的示例情形的图700。应该注意的是,不同的机器学习算法利用不同的资源(例如,TPC计算引擎、经由OCR的HBM存储器),并且相同的机器学习算法在不同的时间利用不同的资源(例如,TPC计算引擎与经由OCR的HBM存储器)。图700示出通过使用TPC计算引擎和片上路由器(OCR)的独立的时钟周期,针对TPC计算引擎的下一突发和OCR利用率可以最大化冷却。
在图700中,示出了图像识别深度学习应用的示例执行,其中将图片用作输入,并且该应用输出对图片表示什么的确定。执行条702-722中的每个执行条表示一个或多个指令阶段的执行。执行条中的气泡表示在条中执行的一个或多个指令阶段之一中的指令所执行的操作。每行气泡表示与其他指令阶段并行执行的不同指令阶段。例如,条702表示未与任何其他指令阶段并行执行的一个指令阶段的执行。气泡740A、740B和740C表示在指令阶段由指令执行的不同操作。气泡750A和750B分别是在执行条708和714中并行运行的指令阶段的示例。
执行条之间的气泡表示先前执行条的输出。例如,气泡730A表示在执行条702中执行的操作的输出,气泡730B表示在执行条710中执行的操作的输出,并且气泡730C表示在执行条720中执行的操作的输出。
热图线Tj 760示出了在应用执行时的温度波动。最高温度Tmax 762表示允许系统在给定条件下运行的最高温度。Tmax用于防止集成电路在最大允许的热条件下跳闸,因为较高的温度可能导致电子减速,使得执行单元无法以期望的速度运行。另外,硅可能开始熔化。Tmax 762可以取决于表示空气温度的Tambient。例如,北极地区的服务器可能比气候温暖处的服务器具有更高的Tmax余量。
图700中的一些执行条似乎具有类似的工作负载,如气泡和类似的热条件所指示。例如,执行条708、710、714、716和718具有类似的工作负载,执行条702和704具有类似的工作负载,并且执行条706、712和720具有类似的工作负载。在至少一个实施例中,可以将用于优化具有类似工作负载的执行条中的存储器指令阶段的性能的控制速率配置为具有相同的值,并且可以将用于优化具有类似工作负载的执行条中的执行指令阶段的性能的控制速率配置为具有相同的值。例如,可以使用相同的控制速率来优化708、710、714、716和718中的执行指令阶段,并且可以使用相同的控制速率来优化708、710、714、716和718中的存储器指令阶段。
局部软件提示可以指定工作负载的类型(例如,类型A、类型B、类型C等),而不是在PMOP代码的软件提示中对实际控制速率进行编程。下载具有嵌入式软件提示的软件代码的TPC计算引擎可以标识软件提示中的工作负载的类型,然后通过在控制速率存储装置中找到工作负载的类型来确定控制速率。在其他示例中,可以将指令阶段的实际控制速率预编程为各自指令阶段的软件提示。
图8A和8B是示出在计算系统中的集成电路上运行的机器学习处理的示例指令流的速率控制器指令流水线缩放的图。图8A示出了在没有软件辅助功率管理的情况下配置的集成电路上执行指令流810。图8B示出了根据本文描述的一个或多个实施例的在配置有软件辅助功率管理的集成电路上执行指令流810。示出了用于执行的示例时钟速率830。示出了用于计算指令和用于存储器指令的资源820。例如,资源820包括由存储器指令阶段使用的OCR、DDR/HBM和MRB。资源820还包括MES、第一MPU(MPU.0)和第二MPU(MPU.1),它们是执行指令阶段所使用的资源。在图8A的示例中未使用诸如HMU、PAR和SMC之类的资源,因为在指令流810中未嵌入软件提示。指令流810的指令阶段包括组I 801(初始化和存储器)、组II802(计算)、组III 803(存储器)、组IV 804(存储器)、组V 805(计算)和组VI 806(存储器)。
存在一些依赖性,其中在执行计算指令阶段之前需要提取数据。例如,组I 801需要在组II 802之前执行,组II 802需要在组III之前执行,组IV 804需要在组V 805之前执行,并且组V 805需要在组VI 806之前执行。为了压缩执行,只要不违反依赖性,可以将指令阶段堆叠为并行运行。但是,在没有软件辅助功率管理的情况下,每个指令阶段都试图以100%功耗运行,如执行框811-816所示。因此,试图以100%功耗运行的指令阶段的并行执行可能导致过多的功率。可以将时钟速率830减慢到50%频率,以允许每个指令阶段的100%功耗。但是,这影响性能,因为根据减慢的时钟信号,流水线仅以50%运行。另外,热条件可能是临界的,因为它在并行执行指令期间超过了最高温度。
图8B示出了根据本文所述的一个或多个实施例的在配置有软件辅助功率管理的集成电路上执行指令流810。指令流810包括与图8A的指令流810相同的指令阶段组I-VI801-806。在图8A的指令流810的执行中利用的资源820也在图8B的指令流810的执行中利用。然而,在执行图8B的指令流810时,利用诸如HMU、PAR和SMC之类的附加资源。根据一个或多个实施例,这些附加资源用于分析和应用嵌入在指令流810中的软件提示。此外,将不同的时钟速率830应用于执行指令流810的计算指令阶段(组II 802和组V 805)的MPU.0和MPU.1。
与指令流810不同,一个全局软件提示和几个局部软件提示被嵌入在指令流810中。在一个示例中,嵌入在指令流810中的提示可以包括以下内容:
提示1A–{PMOP_SMC_mode,val}(第一次出现)
提示1A–{PMOP_SMC_mode,val}(第二次出现)
提示2A–{PMOP_HBM_start,rate}
提示2B–{PMOP_HBM_stop,rate}
提示3A–{PMOP_MPU_start,rate}
提示3B–{PMOP_MPU_stop,rate}
提示4A–{PMOP_ALU_start,rate}
提示4B–{PMOP_ALU_stop,rate}
提示5A–{PMOP_HBM_start,rate}
提示5B-{PMOP_HBM_stop,rate}
提示1A是可以全局应用于整个指令流810的全局提示。可以为组IV标识提示2A和2B。可以为组II和V标识提示3A、3B、4A和4B。可以为组III和VI标识提示5A和5B。如图所示,资源HMU、PAR和SMC用于标识、分析和应用全局提示1A。相反,资源HMU和PAR用于标识、分析和应用局部软件提示2A-2B、3A-3B、4A-4B和5A-5B。如执行框814所示,提示2A和2B不应用于组IV。如执行框813所示,提示5A和5B不应用于组III。这是因为这些组是与计算指令阶段并行运行的存储器指令阶段,计算指令阶段在其局部提示中具有更高的速率处理值。
在图8B所示的指令流810的示例执行中,允许组I以全功率(例如100%)执行,以提取计算所需的第一数据集。对于要取回的第二数据集,组IV的存储器指令无需以100%功率运行。因此,可以将速率控制指令插入流水线中,以将组IV的处理速率减慢到40%功耗。组Ⅱ的计算指令可以加速到60%功率。这种调整可以允许组IV及时完成组V的执行,这取决于组IV的指令所提取的数据。
对于要取回的下一数据集,组III的存储器指令也不需要以100%功率运行。因此,可以将速率控制指令再次插入流水线中,以将组III的处理速率减慢到40%功耗。组V的计算指令可以被加速到60%功率。并行执行的每对组指令的总功率组合(例如,组IV和组II,组III和组V)不超过100%,因此可以将时钟信号增大到图8A所示频率的两倍。因此,可以提高性能,使得流水线在更短的时间量内完成,并且可以平衡温度条件,使得并行指令的执行不超过最高温度。
转向图9A-9E,示例流程图示出了可与本文描述的实施例相关联的操作的可能流程900A-900E。在至少一个实施例中,一个或多个操作集对应于图9A-9E的活动。在至少一个实施例中,具有TPC计算引擎(例如112(1)-112(M)、210、400)和HBM存储器(例如132(1)-132(N)、250)的集成电路(例如100)或其一部分可以利用一个或多个操作集。具体地,命令解码器(例如230、430)、速率控制器/调度器(例如240、442)、命令解码器和速率控制器/调度器(例如542)和/或系统管理控制器(例如,120、264、464)可以利用和/或执行一个或多个操作集。在至少一个实施例中,流程900A-900E示出了在具有TPC计算引擎和HBM存储器的集成电路中实现软件辅助功率管理的一个示例。
通常,图9A的流程900A示出了软件代码中的全局软件提示的分析和应用。在902,TPC计算引擎接收指令流。在一个示例中,指令流与深度学习应用相关联并且被下载到缓存中。在904,在指令流中标识全局软件提示。全局软件提示可以包括嵌入在指令流中的功率管理操作(PMOP)代码的值参数。在至少一个实施例中,值参数可以指示指令流的工作负载的类型,例如特定类型的深度学习(例如,图像识别、语言翻译等)。
在906,全局软件提示被发送到系统管理控制器(SMC)。在908,基于全局软件提示为TPC计算引擎的执行单元(例如,MPU)和片上路由器(OCR)确定时钟周期。在910,基于全局软件提示,为TPC计算引擎的执行单元(例如,MPU)和OCR确定电压电平。在912,基于TPC计算引擎中的MPU和OCR的确定的时钟周期,为MPU和OCR生成时钟信号。在914,基于确定的电压电平将电压提供给TPC计算引擎的MPU和OCR。由执行单元基于全局提示来选择电压电平和时钟信号以调整功耗。例如,如果全局提示指示计算繁重的工作负载,则可以选择电压电平和时钟信号以增大执行单元运行的速度以及提供给执行单元的电压电平。如果全局提示指示存储器繁重的工作负载,则可以选择电压电平和时钟信号以降低执行单元运行的速度和提供给执行单元的电压电平。这样可以允许增大OCR和存储器访问的带宽。还应注意,MPU和OCR的时钟周期可以相同或不同。类似地,MPU和OCR的电压电平可以相同或不同。可以根据特定的工作负载和期望的优化进行不同的调整。
在916,确定与存储器(例如,HBM)相关联的全局活动的量。全局活动与集成电路中的其他TPC计算引擎对存储器的访问有关。例如,其他TPC计算引擎的高级别存储器访问可能需要对存储器进行限制,以确保当前TPC计算引擎可以出于执行指令流的目的而充分访问存储器。
在918,基于确定的全局存储器活动量和全局存储器活动的阈值量来确定是否需要限制。如果确定需要限制(例如,全局存储器活动达到或超过阈值),则在920,将存储器利用率分配给当前TPC计算引擎以访问存储器。可以基于发生的全局存储器活动的阈值量和全局软件提示来分配存储器利用率。例如,指示指令流的工作负载类型的全局软件提示可用于推断指令流所需的存储器利用率的量。
在922,可以对指令流进行解码。解码指令流包括解释编码的指令。流程900A可以在930继续图9B的流程900B。
在930,可以确定指令流的指令时间表。某些指令阶段可能依赖于其他指令阶段来首先完成其执行。另外,指令阶段的并行执行可以是在调度指令阶段用于执行时考虑的偏好。因此,可以确定依赖性并且可以至少部分地基于依赖性来适当地对指令阶段进行排序和调度(在可能时并行)。
在932,标识要执行的单个指令阶段或并行的阶段。例如,可以调度包含计算或存储器指令的单个指令阶段以在932执行并进行标识。在另一示例中,可以调度两个指令阶段(例如,第一指令阶段和第二指令阶段)以在932并行执行并进行标识。第一指令阶段可以包含存储器或计算指令,并且第二指令阶段可以包含存储器或计算指令。参考标识被调度执行的单个指令阶段和被调度并行执行的两个指令阶段来描述图9B-9E。在其他场景下,可以为并行执行调度两个以上的指令阶段,并且本文所述的概念也可以在那些场景中应用。
在934,确定是否要并行执行指令阶段。如果要执行的标识的指令阶段不是并行执行(即,调度了单个指令阶段),则流程在970继续图9E的流程900E。
在970,在所标识的指令阶段中标识局部软件提示。在至少一个实施例中,速率控制器可以标识局部软件提示,该局部软件提示可以包括速率参数,该速率参数指示与指令阶段相关联的工作负载的类型。在一个示例中,速率参数可以被包括在指令流中嵌入的功率管理操作代码(PMOP)中。由速率参数指示的工作负载类型可用于获得要用于指令阶段的预编程处理速率。在其他实施例中,可以在指令流中(例如,在PMOP中)将速率参数编程为处理速率本身。
在972,确定要执行的指令阶段的类型(例如,存储器或计算)。如果指令阶段包含存储器指令,则在974,基于局部软件提示确定存储器的处理速率。存储器的处理速率指示允许存储器指令阶段执行的时间量。在一个或多个实施例中,提供存储器指令的处理速率作为存储器指令阶段要在指令流内运行的时间的百分比。在其他实施例中,可以使用其他值,例如时钟周期数或指示存储器指令阶段要运行的时间量的任何其他测量。在一些实施例中,局部软件提示包含与指令阶段相关联的工作负载的类型的指示,并且可以搜索处理速率存储装置(例如,HBM-BW-RATE存储装置445)以基于局部软件提示来标识正确的预编程处理速率。在其他实施例中,处理速率在局部软件提示本身中被编程,并且可以被读取并且用作存储器的处理速率。
在976,可以确定每给定时间或时钟周期要执行的提取和写入的次数。可以基于指令的操作数参数大小来确定提取和写入的次数。操作数可以指定要提取多少字节,以及要向哪个存储器位置和从哪个存储器位置写入多少字节。可以基于处理速率来确定要执行提取和写入的给定时间或时钟周期。在978,可以将每给定时间或时钟周期要执行的提取和写入的确定次数提供给存储器访问单元(MAU),以通过经由更频繁的存储器访问请求增大HBM带宽来控制存储器指令阶段中指令的执行。
再次参考972,如果确定指令阶段包含计算指令,则在980,基于局部软件提示确定执行引擎(例如,MPU)的处理速率。计算指令的处理速率指示预期执行计算指令阶段的时间量。在一个或多个实施例中,计算指令的处理速率被提供为计算指令阶段要在指令流内运行的时间的百分比。在其他实施例中,可以使用其他值,例如时钟周期数或指示计算指令阶段要运行的时间量的任何其他测量。在一些实施例中,局部软件提示包含与指令阶段相关联的工作负载的类型的指示,并且可以搜索处理速率存储装置(例如,MPU-IPC-RATE存储装置443)以基于局部软件提示标识正确的预编程处理速率。在其他实施例中,处理速率在局部软件提示本身中被编程,并且可以被读取并且用作MPU的处理速率。
在982,可以将计算指令阶段的处理速率提供给执行单元(例如,MPU),以通过增加计算流水线速率(例如,每周期指令(IPC))来控制计算指令阶段的执行。
一旦针对要执行的存储器指令阶段或计算指令阶段处理了局部软件提示,则在986,可以执行调度的单个计算或存储器指令阶段。全局软件提示和局部软件提示使指令阶段能够使用所有可用功率用于单个任务,因为没有其他并行任务正在执行。
在988,确定是否要执行指令流中的另一指令阶段。如果没有更多的指令阶段要执行,则流程结束。如果另一指令阶段正在等待执行,则操作可以在932继续流程900B。在932,下一指令阶段或并行阶段被标识用于执行。
在934,如果确定要执行的标识的指令阶段不是在并行执行(即,调度了单个指令阶段),则该流程继续图9E的流程900E,如本文先前所述。但是,如果确定要并行执行标识的指令阶段(例如,第一指令阶段和第二指令阶段),则在936,标识的指令阶段中的局部软件提示被标识。在938,标识的第一指令阶段的处理速率(例如,执行时间的百分比)基于其局部软件提示进行确定。在940,标识的第二指令阶段的处理速率(例如,执行时间的百分比)基于其局部软件提示来进行确定。
在942,基于哪一个标识的并行指令阶段具有更大的处理速率来选择标识的并行指令阶段之一。例如,可以比较第一指令阶段和第二指令阶段的处理速率,并且可以确定第一指令阶段或第二指令阶段是否具有更大的处理速率。在942,选择具有较高处理速率的指令阶段。在944,确定具有较高处理速率的选定指令阶段是计算指令阶段还是存储器指令阶段。如果确定具有较高处理速率的选定指令阶段是存储器指令阶段,则操作在950继续图9C的流程900C。
在950,可以确定每给定时间或时钟周期要执行的提取和写入的次数。可以基于指令的操作数参数大小来确定提取和写入的次数。操作数可以指定要提取多少字节,以及要向哪个存储器位置和从哪个存储器位置写入多少字节。可以基于处理速率来确定要执行提取和写入的给定时间或时钟周期。在952,可以将每给定时间或周期要执行的提取和写入的确定次数提供给存储器访问单元(MAU),以控制存储器指令阶段中指令的执行。例如,通过经由HBM接口路由器(HIR)允许更频繁的存储器访问请求,可以增大HBM访问和片上路由器(OCR)的带宽。
在954,可以确定另一并行指令阶段是计算指令阶段还是存储器指令阶段。确定另一并行指令阶段的处理速率小于选定存储器指令阶段的处理速率。如果另一并行指令阶段包含计算指令,则在955确定要与另一并行指令阶段(称为“并行计算指令阶段”)的计算指令一起插入到指令流中的速率控制指令的数量(N)。在至少一个实施例中,选择数量N以减慢并行计算指令阶段中的计算指令以在选定的存储器指令阶段完成时完成执行。这导致并行计算指令阶段及时完成,以供后续的从属存储器或计算指令阶段开始执行。选定的存储器指令阶段和并行计算指令阶段的处理速率可以用于选择数量N。在956,N个速率控制指令(例如,无操作指令(NOP))与并行计算指令阶段的计算指令一起插入指令流中。在至少一个实施例中,将速率控制指令插入并行计算指令阶段的计算执行流水线中。
在954,如果确定另一并行指令阶段包含存储器指令,则在957,确定要与并行存储器指令阶段的存储器指令一起插入指令流中的速率控制指令的数量(M)。在至少一个实施例中,选择数量M以减慢并行存储器指令阶段中的存储器指令以在选定的存储器指令阶段完成时完成执行。这导致并行存储器指令阶段及时完成,以供后续的从属存储器或计算指令阶段开始执行。选定的存储器指令阶段和并行存储指令阶段的处理速率可以用于选择数量M。在958,M个速率控制指令(例如无操作指令(NOP))与并行存储器指令阶段的存储器指令一起插入指令流中。在至少一个实施例中,将M个速率控制指令插入存储器指令阶段的存储器执行流水线中。
操作可以在986继续流程900E。在986,可以使用全局和局部软件提示来平衡并行指令阶段的执行流水线的功耗,来执行调度的并行指令阶段(例如,选定的存储器指令阶段和并行存储器或计算指令阶段)。
在988,确定是否要执行指令流中的另一指令阶段。如果没有更多的指令阶段要被执行,则流程结束。如果另一指令阶段正在等待执行,则操作可以在932继续流程900B。在932,下一指令阶段或并行阶段被标识为要执行,并且流程如本文所述继续进行。
再次参考944,如果确定具有更高处理速率的选定指令阶段是计算指令阶段,则操作在960继续图9D的流程900D。在960,计算指令阶段的处理速率可以提供给执行单元(例如,MPU),以通过增大计算流水线速率(或IPC)来控制计算指令阶段的执行。
在964,可以确定另一并行指令阶段是计算指令阶段还是存储器指令阶段。另一并行指令阶段的处理速率被确定为小于选定计算指令阶段的处理速率。如果另一并行指令阶段包含计算指令,则在965,确定与另一并行指令阶段(称为“并行计算指令阶段”)的计算指令一起插入指令流中的速率控制指令的数量(N)。在至少一个实施例中,选择数量N以减慢并行计算指令阶段中的计算指令以在选定的计算指令阶段完成时完成执行。这导致并行计算指令阶段及时完成,以供后续的从属存储器或计算指令阶段开始执行。选定的计算指令阶段和并行计算指令阶段的处理速率可以用于选择数量N。在966,N个速率控制指令(例如无操作指令(NOP))可以与并行计算指令阶段的计算指令一起插入指令流中。在至少一个实施例中,速率控制指令被插入并行计算指令阶段的计算执行流水线中。
在964,如果确定另一并行指令阶段包含存储器指令,则在967,确定要与另一并行指令阶段(在本文称为“并行存储器指令阶段”)的存储器指令一起插入指令流中的速率控制指令的数量(M)。在至少一个实施例中,选择数量M以减慢并行存储器指令阶段中的存储器指令以在选定的计算指令阶段完成时完成执行。这导致并行存储器指令阶段及时完成,以供后续的从属存储器或计算指令阶段开始执行。选定的计算指令阶段和并行存储器指令阶段的处理速率可以用于选择数量M。在968,M个速率控制指令(例如无操作指令(NOP))与并行存储器指令阶段的存储器指令一起插入指令流中。在至少一个实施例中,M个速率控制指令被插入到存储器指令阶段的存储器执行流水线中。
操作可以在986继续流程900E。在986,可以使用全局和局部软件提示来平衡并行指令阶段的执行流水线的功耗,来执行调度的并行指令阶段(例如,选定的计算指令阶段和并行存储器或计算指令阶段)。
在988,确定是否要执行指令流中的另一指令阶段。如果没有更多的指令阶段要执行,则流程结束。如果另一指令阶段正在等待执行,则操作可以在932继续流程900B。在932,下一指令阶段或并行阶段被标识为要执行,并且流程如本文所述继续进行。
图10是示出可以与本文描述的实施例相关联的操作的简化流程1000的流程图。在至少一个实施例中,一个或多个操作集对应于图10的活动。在至少一个实施例中,具有TPC计算引擎(例如112(1)-112(M)、210、400)和HBM存储器(例如132(1)-132(N)、250、590)或其一部分的集成电路(例如,100)可以利用一个或多个操作集。具体地,速率控制器/调度器(例如240、442)、命令解码器和速率控制器/调度器(例如542)和/或控制硬件(例如450)可以利用和/或执行一个或多个操作集。在至少一个实施例中,流程1000示出了确定指令阶段的处理速率的一个示例,该指令阶段可以是计算指令阶段或存储器指令阶段,例如,如938、940、974和980所示。
在1002,使用局部软件提示来确定用于计算或存储器指令阶段的处理速率。在一个实施例中,局部软件提示指示特定指令阶段的工作负载的类型(例如,TOPS、GEMM、CONV、ELEM)。针对每种类型的工作负载可以对处理速率进行预编程(例如,在寄存器或其他合适的存储器组件中),并且可以基于局部软件提示来选择处理速率。
在1004,确定是否已检测到最大功率信号(例如,Pmax标记)。在至少一个实施例中,当功率消耗达到表示设备被设计为在短时间段内消耗的最大功率的某个阈值时,可以生成最大功率信号。如果尚未检测到最大功率信号,则流程1000结束,并基于该当前指令阶段的局部软件提示确定每个当前指令阶段的处理速率。
如果检测到最大功率信号,则在1006,最大功率信号覆盖由速率控制器基于局部软件提示选择的处理速率。相反,选择预编程的最大功率处理速率。在至少一些实施例中,针对计算指令阶段和针对存储器指令阶段,预编程的最大功率处理速率可以不同。在一个示例中,在计算指令阶段中,Pmax预编程处理速率的值指示在每个计算指令周期之前空闲的周期数。因此,可以基于Pmax值将NOP指令添加到计算指令阶段。类似地,可以基于存储器指令的Pmax值将NOP指令添加到存储器指令阶段。Pmax信号可以启用电源的硬制动,以防止系统故障。
图11-19详细描述了用于实现上述实施例(例如,集成电路100,TPC计算引擎112(1)-112(M)、210、400,微代码控制器220、500,命令解码器230、430,速率控制器/调度器240,命令解码器和速率控制器/调度器542等)的示例性架构和系统。在一些实施例中,如上所述的一个或多个硬件组件和/或指令被仿真为如下所详细描述的或被实现为软件模块。也可以(或替代地)使用本领域已知的用于处理器、移动设备、计算系统及其组件的其他计算机架构设计。通常,用于本文公开的实施例的合适的计算机架构可以包括但不限于图11-19所示的配置。
上面详细描述的(一个或多个)指令的实施例可以以“通用向量友好指令格式”来实现。在其他实施例中,没有使用这种格式,而是使用了另一指令格式,然而,写掩码寄存器、各种数据变换(调配(swizzle)、广播等)、寻址等的以下描述通常适用于以上(一个或多个)指令的实施例的描述。另外,下面详细描述示例系统、架构和流水线。上面的(一个或多个)指令的实施例可以在这样的系统、架构和流水线(但是不限于那些详细描述的系统、架构和流水线)上执行。
指令集可以包括一个或多个指令格式。给定指令格式可以定义各种字段(例如,位数、位的位置)以指定要执行的操作(例如,操作码)和将在其上执行该操作的操作数和/或(一个或多个)其他数据字段(例如,掩码)等。一些指令格式通过指令模板(或子格式)的定义被进一步细分。例如,给定指令格式的指令模板可以被定义为具有指令格式的字段的不同子集(所包括的字段通常具有相同的顺序,但是至少一些具有不同的位位置,因为包括较少的字段)和/或被定义为具有不同解释的给定字段。因此,ISA的每个指令使用给定的指令格式来表达(并且,如果定义,则在该指令格式的给定的一个指令模板中)并且包括用于指定操作和操作数的字段。例如,示例性ADD指令具有特定操作码和指令格式,该指令格式包括指定该操作码的操作码字段和选择操作数的操作数字段(源1/目的地和源2);并且在指令流中出现该ADD指令将在操作数字段中具有选择特定操作数的特定内容。已发布和/或公布了被称为高级向量扩展(AVX)(AVX1和AVX2)并使用向量扩展(VEX)编码方案的一组SIMD扩展(例如,参见64和IA-32架构软件开发人员手册,2019年5月;参见高级向量扩展编程参考,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。通常,通过在每个微操作的结束使用存储装置将CPU指令的处理划分为一系列微操作来创建流水线。每个微操作都链接到另一微操作。在图12A中,处理器流水线1200包括提取阶段1202、长度解码阶段1204、解码阶段1206、分配阶段1208、重命名阶段1210、调度(也称为调派或发布)阶段1212、寄存器读取/存储器读取阶段1214、执行阶段1216、写回/存储器写入阶段1218、异常处理阶段1222和提交阶段1224。
图12B示出了处理器核1290,其包括耦合到执行引擎单元1250的前端单元1230,并且执行引擎单元1250和前端单元1230两者均耦合至存储器单元1270。核1290可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或混合或替代的核类型。作为另一选项,核1290可以是专用核,例如,张量处理核(TPC)、网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核等。
前端单元1230包括耦合到指令缓存单元1234的分支预测单元1232,指令缓存单元1234耦合到指令转换后备缓冲器(TLB)1236,TLB 1236耦合到指令提取单元1238,指令提取单元1238耦合到解码单元1240。解码单元1240(或解码器)可以解码指令,并且生成作为输出的一个或多个微操作、微代码入口点、微指令、其他指令、或其他控制信号,它们解码自原始指令或以其他方式反映原始指令或导出自原始指令。在至少一个实施例中,解码单元1240包括如本文先前所述的命令解码器230、430、542的功能。因此,解码单元1240可以被配置为解码包括存储器指令阶段和/或计算指令阶段的指令流,并且还标识指令流中的全局软件提示和局部软件提示。
可以使用各种不同的机制来实现解码单元1240。合适机制的示例包括但不限于查找表、硬件实现方式、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核1290包括微代码ROM或存储用于某些宏指令的微代码的其他介质(例如,在解码单元1240中或在前端单元1230内)。解码单元1240耦合到执行引擎单元1250中的重命名/分配器单元1252。
执行引擎单元1250包括重命名/分配器单元1252,其耦合到引退(retirement)单元1254和一组一个或多个调度器单元1256。(一个或多个)调度器单元1256表示任意数目的不同调度器,包括预留站(reservations station)、中央指令窗等。(一个或多个)调度器单元1256耦合到(一个或多个)物理寄存器文件单元1258。每个物理寄存器文件单元1258表示一个或多个物理寄存器文件,这些物理寄存器文件中的不同的物理寄存器文件存储一个或多个不同的数据类型,例如,标量整数、标量浮点、打包整数、打包浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中,(一个或多个)物理寄存器文件单元1258包括向量寄存器单元、写入掩码寄存器单元、和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器、和通用寄存器。(一个或多个)物理寄存器文件单元1258与引退单元1254重叠,以说明寄存器重命名和乱序执行可以被实现的各种方式(例如,使用(一个或多个)重新排序缓冲器和(一个或多个)引退寄存器文件;使用(一个或多个)未来文件、(一个或多个)历史缓冲器、和(一个或多个)引退寄存器文件;使用寄存器图和寄存器池;等等)。引退单元1254和(一个或多个)物理寄存器文件单元1258耦合到(一个或多个)执行集群1260。
(一个或多个)执行集群1260包括一组一个或多个执行单元1262和一组一个或多个存储器访问单元1264。执行单元1262可以对各种类型的数据(例如,标量浮点、打包整数、打包浮点、向量整数、向量浮点)执行各种操作(例如,移位、加法、减法、乘法)。虽然一些实施例可以包括专用于特定功能或功能集的多个执行单元,但是其他实施例可以仅包括一个执行单元或者全部执行所有功能的多个执行单元。在至少一个示例中,执行单元1262可以包括执行单元(例如212),诸如矩阵处理单元(例如412A、412B、560),如本文参照一个或多个实施例所描述的。
(一个或多个)调度器单元1256、(一个或多个)物理寄存器文件单元1258、和(一个或多个)执行集群1260被示为可能是多个,因为某些实施例针对某些类型的数据/操作创建单独的流水线(例如,标量整数流水线、标量浮点/打包整数/打包浮点/向量整数/向量浮点流水线、和/或存储器访问流水线,其中每个流水线都有其自己的调度器单元、物理寄存器文件单元、和/或执行集群-并且在单独的存储器访问流水线的情况下,其中仅该流水线的执行集群具有(一个或多个)存储器访问单元1264的某些实施例被实现)。还应理解,在使用单独的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行而其余的是有序的。在至少一个实施例中,调度器单元1256可以包括如本文参考一个或多个实施例所述的速率控制器/调度器(例如240、442、542)。调度器单元1256可以确定用于指令流的计算指令阶段和存储器指令阶段的处理速率。这些处理速率可用于控制计算资源的每个周期的指令,并且控制存储器资源的存储器访问带宽。
该组存储器访问单元1264耦合到存储器单元1270,存储器单元1270包括耦合到数据缓存单元1274的数据TLB单元1272,其中数据缓存单元1274耦合到2级(L2)缓存单元1276。在一个示例性实施例中,存储器访问单元1264可以包括加载单元、存储地址单元、和存储数据单元,其中的每个单元耦合到存储器单元1270中的数据TLB单元1272。指令缓存单元1234还耦合到存储器单元1270中的2级(L2)缓存单元1276。L2缓存单元1276耦合到一个或多个其他级别的缓存并最终耦合到主存储器。在至少一个实施例中,存储器访问单元1264可以是存储器访问单元(例如,214、414、570),其可以包括如本文参考一个或多个实施例描述的片上路由器(例如,216、416、510)。存储器访问单元1264基于从调度器单元1256接收的速率控制信息来限制对HBM存储器的访问带宽。
作为示例,示例性寄存器重命名、乱序发布/执行核架构可以按如下方式实现流水线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指令集(具有已经添加有较新版本的一些扩展);美国加利福尼亚州桑尼维尔市的MIPS Technologies的MIPS指令集;美国加利福尼亚州桑尼维尔市的ARM Holdings的ARM指令集(具有可选的附加扩展,例如,NEON);在2010年在加州大学伯克利分校开始的RISC-V开源指令集;Nvidia公司的CUDA计算平台的GPU指令集),包括本文所描述的(一个或多个)指令。在一个实施例中,核1290包括支持打包数据指令集扩展(例如,AVX1、AVX2)的逻辑,从而允许要使用打包数据来执行的许多多媒体应用所使用的操作。
应理解,核可以支持多线程(执行两个或更多个并行的操作集或线程集),并且可以以各种方式这样做,这些方式包括时间分片多线程、同时多线程(其中,单个物理核为该物理核正在同时进行多线程的每个线程提供逻辑核)、或它们的组合(例如,时间分片的提取和解码以及此后同时的多线程,例如,在超线程技术中)。
虽然在乱序执行的上下文中描述了寄存器重命名,但应理解,寄存器重命名可以用在顺序架构中。虽然所示处理器的实施例还包括单独的指令和数据缓存单元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(其是集成图形和/或科学(吞吐量)逻辑(其可以包括一个或多个核))以及核1402A-N(其是一个或多个通用核(例如,通用顺序核、通用乱序核、或两者的组合))的CPU;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的软件、固件、硬件、或其组合。
注意,利用本文提供的多个示例,可以根据两个、三个、四个或更多个网络元件、主机、设备、计算系统、模块和/或其他组件来描述交互。然而,这样做只是出于清楚和示例的目的。应当理解,可以以任何合适的方式对系统进行合并或划分(例如,分段、分区、分离等)。沿着类似的设计替代方案,任何所示的控制器、限制器、解码器、模块、节点、元件、主机、设备、系统和附图的其他组件可以以各种可能的配置进行组合,所有这些显然都在本说明书的广泛范围内。应当理解,参考附图(及其教导)示出和描述的是可容易缩放的,并且可以容纳大量组件以及更复杂/繁复的布置和配置。因此,所提供的示例不应限制范围或抑制该系统的广泛教导,因为其可能应用于无数其他架构。
同样重要的是,要注意参考前述附图描述的操作仅示出了可以由系统(例如,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元素,它们不一定受两个元素的任何顺序、排名、重要性、时间顺序或层级的限制。另外,说明书中对“一个实施例”、“实施例”、“一些实施例”等的引用指示所描述的(一个或多个)实施例可以包括特定的特征、结构或特性,但是每个实施例可能包括或可能不一定包括该特定特征、结构或特性。此外,这样的短语不一定指代同一实施例。另外,词语“优化”、“最优化”、“优选”、“最优”和相关术语是本领域的术语,其是指对指定结果的速度和/或效率的改进,并不旨在指示用于实现指定结果的处理已实现、或者能够实现完美快速/完美高效的状态。
尽管本说明书包含许多具体的实施细节,但是这些不应被解释为对任何实施例或可以要求保护的范围的限制,而应理解为针对本文公开的主题的特定实施例的特征的描述。在单独的实施例的上下文中在本说明书中描述的某些特征也可以在单个实施例中以组合形式来实现。相反,在单个实施例的上下文中描述的各种特征也可以分别在多个实施例中或以任何合适的子组合的形式来实现。此外,尽管以上可以将特征描述为以某些组合形式起作用并且甚至最初如此要求保护,但是在某些情况下,可以从所要求保护的组合中删除该组合中的一个或多个特征,并且所要求保护的组合可以涉及子组合或子组合的变体。本领域技术人员可以确定许多其他改变、替换、变化、变更和修改,并且意图是本公开涵盖落入所附权利要求范围内的所有这样的改变、替换、变化、变更和修改。
其他说明和示例
以下示例涉及根据本说明书的实施例。系统、装置、方法和机器可读存储介质实施例可以包括以下示例之一或组合:
示例A1提供了一种装置,该装置包括:耦合到存储器的执行单元;微代码控制器;以及耦合到微代码控制器的硬件控制器。微代码控制器用于:在指令流中标识全局提示,指令流包括要并行执行的第一指令阶段和第二指令阶段;在指令流中的第一指令阶段中标识第一局部提示;至少部分地基于第一局部提示,在第一指令阶段和第二指令阶段的并行执行期间平衡执行单元和存储器之间的功耗。硬件控制器用于基于全局提示来确定在第一指令阶段和第二指令阶段的并行执行期间要由执行单元使用的计算电压的电压电平和计算时钟信号的频率。
在示例A2中,示例A1的主题可以可选地包括:其中,基于指示指令流将使用比存储器资源更多的计算资源的全局提示,硬件控制器用于确定执行单元的计算时钟信号的频率和计算电压的电压电平中的至少一者将被增大,其中第一指令阶段包括计算指令。
在示例A3中,示例A1-A2中任一项的主题可以可选地包括:其中,通过至少部分地基于第一局部提示增大第一指令阶段的计算流水线速率,在第一指令阶段和第二指令阶段的并行执行期间,所述执行单元的功耗将被增大。
在示例A4中,示例A1-A3中任一项的主题可以可选地包括:其中,第二指令阶段包括存储器指令,并且其中,通过部分地基于第一局部指示减小存储器的存储器访问带宽,在第一指令阶段和第二指令阶段的并行执行期间,存储器的功耗将被减小。
在示例A5中,示例A4的主题可以可选地包括:其中,通过将多个速率控制指令插入第二指令阶段,存储器访问带宽将被减小。
在示例A6中,示例A5的主题可以可选地包括:其中,速率控制指令的数量被选择为使第二指令阶段的执行完成与第一指令阶段的执行完成同步。
在示例A7中,示例A1的主题可以可选地包括:其中,基于指示指令流将使用比计算资源更多的存储器资源的全局提示,硬件控制器用于确定用于执行单元的计算时钟信号的频率和计算电压的电压电平中的至少一者将被减小,其中第一指令阶段包括存储器指令。
在示例A8中,示例A1和A7中任一项的主题可以可选地包括:其中,通过至少部分地基于第一局部提示来增大存储器访问带宽,在第一指令阶段和第二指令阶段的并行执行期间,存储器的功耗将增加。
在示例A9中,示例A1和A7-A8中任一项的主题可以可选地包括:其中,第二指令阶段包括计算指令,并且其中,通过部分地基于第一局部提示来减小计算流水线速率,在第一指令阶段和第二指令阶段的并行执行期间,执行单元的功耗将被减小。
在示例A10中,示例A9的主题可以可选地包括:其中,通过将多个速率控制指令插入第二指令阶段,计算流水线速率将被减小。
在示例A11中,示例A10的主题可以可选地包括:其中,速率控制指令的数量被选择为使第二指令阶段的执行完成与第一指令阶段的执行完成同步。
在示例A12中,示例A1-A11中任一项的主题可以可选地包括:其中,第一局部提示包括第一指令阶段的第一处理速率或关于第一指令阶段的第一处理速率的指示。
在示例A13中,示例A12的主题可以可选地包括:其中,第一指令阶段的第一处理速率是以下项中的一者:执行第一指令阶段的时钟周期的数目,执行指令流的总时间的百分比,或执行第一指令阶段的时间量。
在示例A14中,示例A12-A13中任一项的主题可以可选地包括:其中,关于第一处理速率的指示包括第一指令阶段的工作负载的类型,并且微代码控制器还用于基于第一局部提示指示的第一指令阶段的工作负载的类型,来确定第一指令阶段的第一处理速率。
在示例A15中,示例A14的主题可以可选地包括:其中,第一指令阶段的第一处理速率被预先编程在速率存储装置中。
在示例A16中,示例A1-A11中任一项的主题可以可选地包括:其中,微代码控制器还用于:在指令流的第二指令阶段中标识第二局部提示;基于第一局部提示确定所述第一指令阶段的第一处理速率;基于第二局部提示确定第二指令阶段的第二处理速率;以及部分地基于第一处理速率和第二处理速率的比较来平衡执行单元和存储器之间的功耗。
在示例A17中,示例A1-A6和A12-A16中任一项的主题可以可选地包括:其中,第一指令阶段包括矩阵乘法计算指令,并且第二指令阶段包括存储器复制指令。
在示例A18中,示例A1-A15中任一项的主题可以可选地包括:其中,第二指令阶段包括存储器指令或计算指令。
示例S1提供了一种系统,包括:存储器;耦合至存储器的执行单元;以及微代码控制器,用于:对指令流中的第一指令阶段和第二指令阶段进行解码,第一指令阶段和第二指令阶段要并行执行;在第一指令阶段中标识第一局部提示;在第二指令阶段中标识第二局部提示;基于第一局部提示确定第一指令阶段的第一处理速率;基于第二局部提示确定第二指令阶段的第二处理速率;以及基于确定第一指令阶段的第一处理速率大于第二指令阶段的第二处理速率,将多个速率控制指令插入第二指令阶段以使第二指令阶段的执行完成与第一指令阶段的执行完成同步。
在示例S2中,示例S1的主题可以可选地包括:其中,微代码控制器还用于在指令流中标识全局提示,并且系统还包括硬件控制器,硬件控制器用于确定将至少部分地基于全局提示来调整执行单元的计算电压的电压电平和计算时钟信号的频率中的至少一者。
在示例S3中,示例S1-S2中任一项的主题可以可选地包括:其中,第一局部提示包括第一指令阶段的第一处理速率或关于第一指令阶段的第一处理速率的指示,并且其中,第二局部提示包括第二指令阶段的第二处理速率或关于第二指令阶段的第二处理速率的指示。
示例M1提供了一种方法,包括:在指令流中标识全局提示,该指令流包括要由处理器核的执行单元执行的计算指令阶段;解码指令流中的计算指令阶段;在计算指令阶段中标识第一局部提示;基于第一局部提示确定计算指令阶段的处理速率;将处理速率发送到执行单元,以通过增大计算指令阶段的计算流水线速率来增大执行单元的功耗;以及基于全局提示,在计算指令阶段的执行期间,增大执行单元的计算电压的电压电平,并增大执行单元的计算时钟信号的频率。
在示例M2中,示例M1的主题可以可选地包括:对指令流中的存储器指令阶段进行解码;在指令流中的存储器指令阶段中标识第二局部提示;在指令流中的第三指令阶段中标识第三局部提示,存储器指令阶段和第三指令阶段要并行执行;以及至少部分地基于第一局部提示和第二局部提示,在存储器指令阶段和第三指令阶段的并行执行期间,平衡执行单元和存储器之间的功耗。
示例C1提供了一种或多种计算机可读介质,其上存储有代码,其中该代码可执行以使机器执行以下操作:在指令流中标识全局提示,指令流包括要并行执行的第一指令阶段和第二指令阶段;在指令流中的第一指令阶段中标识第一局部提示;至少部分地基于第一局部提示,在第一指令阶段和第二指令阶段的并行执行期间,平衡执行单元和存储器的功耗;以及基于全局提示,确定在第一指令阶段和第二指令阶段的并行执行期间,要用于执行单元的计算电压的电压电平和计算时钟信号的频率。
在示例C2中,示例C1的主题可以可选地包括:其中,第一局部提示包括第一指令阶段的第一处理速率或关于第一指令阶段的第一处理速率的指示,并且其中,第一指令阶段的第一处理速率包括以下项中的一者:执行第一指令阶段的时钟周期的数目,执行指令流的总时间的百分比,或执行第一指令阶段的时间量。
示例Y1提供了一种装置,该装置包括用于执行示例M1-M2中任一项的方法的装置。
在示例Y2中,示例Y1的主题可以可选地包括:用于执行方法的装置包括至少一个处理器和至少一个存储器元件。
在示例Y3中,示例Y2的主题可以可选地包括:其中,至少一个存储器元件包括机器可读指令,机器可读指令在被执行时使装置执行示例M1-M2中任一项的方法。
在示例Y4中,示例Y1-Y3中任一项的主题可以可选地包括:装置是计算系统或片上系统之一。
示例X1提供了至少一种机器可读存储介质,包括指令,指令在被执行时实现前述示例A1-A18、S1-S3、M1-M2和Y1-Y4中任一项的装置、系统或方法。
Claims (24)
1.一种装置,包括:
执行单元,其耦合到存储器;
微代码控制器,用于:
在指令流中标识全局提示,所述指令流包括要并行执行的第一指令阶段和第二指令阶段;
在所述指令流中的所述第一指令阶段中标识第一局部提示;
至少部分地基于所述第一局部提示,在所述第一指令阶段和所述第二指令阶段的并行执行期间,平衡所述执行单元和所述存储器之间的功耗;以及
硬件控制器,其耦合到所述微代码控制器,所述硬件控制器用于:
基于所述全局提示,确定所述执行单元在所述第一指令阶段和所述第二指令阶段的并行执行期间要使用的计算电压的电压电平和计算时钟信号的频率。
2.根据权利要求1所述的装置,其中,基于指示所述指令流使用比存储器资源更多的计算资源的全局提示,所述硬件控制器用于确定所述执行单元的所述计算时钟信号的频率和所述计算电压的电压电平中的至少一者将被增大,其中所述第一指令阶段包括计算指令。
3.根据权利要求2所述的装置,其中,通过部分地基于所述第一局部提示增大所述第一指令阶段的计算流水线速率,在所述第一指令阶段和所述第二指令阶段的并行执行期间,所述执行单元的功耗将被增大。
4.根据权利要求2所述的装置,其中,所述第二指令阶段包括存储器指令,并且其中,通过部分地基于所述第一局部提示减小所述存储器的存储器访问带宽,在所述第一指令阶段和所述第二指令阶段的并行执行期间,所述存储器的功耗将被减小。
5.根据权利要求4所述的装置,其中,通过将多个速率控制指令插入所述第二指令阶段,所述存储器访问带宽将被减小。
6.根据权利要求5所述的装置,其中,所述速率控制指令的数量被选择为使所述第二指令阶段的执行完成与所述第一指令阶段的执行完成同步。
7.根据权利要求1所述的装置,其中,基于指示所述指令流使用比计算资源更多的存储器资源的全局提示,所述硬件控制器用于确定所述执行单元的所述计算时钟信号的频率和所述计算电压的电压电平中的至少一者将被减小,其中所述第一指令阶段包括存储器指令。
8.根据权利要求7所述的装置,其中,通过部分地基于所述第一局部提示增大所述存储器的存储器访问带宽,在所述第一指令阶段和所述第二指令阶段的并行执行期间,所述存储器的功耗将被增大。
9.根据权利要求7所述的装置,其中,所述第二指令阶段包括计算指令,并且其中,通过部分地基于所述第一局部提示减小计算流水线速率,在所述第一指令阶段和所述第二指令阶段的并行执行期间,所述执行单元的功耗将被减小。
10.根据权利要求9所述的装置,其中,通过将多个速率控制指令插入所述第二指令阶段,所述计算流水线速率将被减小。
11.根据权利要求10所述的装置,其中,所述速率控制指令的数量被选择为使所述第二指令阶段的执行完成与所述第一指令阶段的执行完成同步。
12.根据权利要求1-11中任一项所述的装置,其中,所述第一局部提示包括所述第一指令阶段的第一处理速率或者关于所述第一指令阶段的所述第一处理速率的指示。
13.根据权利要求12所述的装置,其中,所述第一指令阶段的所述第一处理速率是以下项中的一者:执行所述第一指令阶段的时钟周期的数目,执行所述指令流的总时间的百分比,或执行所述第一指令阶段的时间量。
14.根据权利要求12所述的装置,其中,关于所述第一处理速率的指示包括所述第一指令阶段的工作负载的类型,并且其中,所述微代码控制器还用于基于由所述第一局部提示指示的所述第一指令阶段的工作负载的类型来确定所述第一指令阶段的所述第一处理速率。
15.根据权利要求14所述的装置,其中,所述第一指令阶段的所述第一处理速率被预先编程在速率存储装置中。
16.根据权利要求1至11中任一项所述的装置,其中,所述微代码控制器还用于:
在所述指令流的所述第二指令阶段中标识第二局部提示;
基于所述第一局部提示确定所述第一指令阶段的第一处理速率;
基于所述第二局部提示确定所述第二指令阶段的第二处理速率;以及
部分地基于所述第一处理速率和所述第二处理速率的比较来平衡所述执行单元和所述存储器之间的功耗。
17.根据权利要求16所述的装置,其中,所述第一指令阶段包括矩阵乘法计算指令,并且其中,所述第二指令阶段包括存储器复制指令。
18.根据权利要求1至11中任一项所述的装置,其中,所述第二指令阶段包括存储器指令或计算指令。
19.一种系统,包括:
存储器;
执行单元,其耦合至所述存储器;
微代码控制器,用于:
对指令流中的第一指令阶段和第二指令阶段进行解码,所述第一指令阶段和所述第二指令阶段要并行执行;
在所述第一指令阶段中标识所述第一局部提示;
在所述第二指令阶段中标识所述第二局部提示;
基于所述第一局部提示确定所述第一指令阶段的第一处理速率;
基于所述第二局部提示确定所述第二指令阶段的第二处理速率;以及
基于确定所述第一指令阶段的所述第一处理速率大于所述第二指令阶段的所述第二处理速率,将多个速率控制指令插入所述第二指令阶段,以使所述第二指令阶段的执行完成与所述第一指令阶段的执行完成同步。
20.根据权利要求19所述的系统,其中,所述微代码控制器还用于在所述指令流中标识全局提示,并且其中,所述系统还包括硬件控制器,所述硬件控制器用于:
确定将至少部分地基于所述全局提示来调整所述执行单元的计算电压的电压电平和计算时钟信号的频率中的至少一者。
21.根据权利要求19-20中任一项所述的系统,其中,所述第一局部提示包括所述第一指令阶段的所述第一处理速率或者关于所述第一指令阶段的所述第一处理速率的第一指示,并且其中,所述第二局部提示包括所述第二指令阶段的所述第二处理速率或关于所述第二指令阶段的所述第二处理速率的第二指示。
22.一种方法,该方法包括:
在指令流中标识全局提示,所述指令流包括要由处理器核的执行单元执行的计算指令阶段;
对所述指令流中的所述计算指令阶段进行解码;
在所述计算指令阶段中标识第一局部提示;
基于所述第一局部提示确定所述计算指令阶段的处理速率;
将所述处理速率发送到所述执行单元,以通过增大所述计算指令阶段的计算流水线速率来增大所述执行单元的功耗;以及
基于所述全局提示,在所述计算指令阶段的执行期间,增大所述执行单元的计算电压的电压电平并增大所述执行单元的计算时钟信号的频率。
23.根据权利要求22所述的方法,还包括:
对所述指令流中的存储器指令阶段进行解码;
在所述指令流中的所述存储器指令阶段中标识第二局部提示;
在所述指令流中的第三指令阶段中标识第三局部提示,所述存储器指令阶段和所述第三指令阶段要并行执行;以及
至少部分地基于所述第三局部提示和所述第二局部提示,在所述存储器指令阶段和所述第三指令阶段的并行执行期间,平衡所述执行单元和所述存储器之间的功耗。
24.至少一种机器可读存储介质,包括指令,其中,所述指令在被执行时实现如权利要求1至23中任一项所述的装置、系统或方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/557,657 | 2019-08-30 | ||
US16/557,657 US11567555B2 (en) | 2019-08-30 | 2019-08-30 | Software assisted power management |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112445529A true CN112445529A (zh) | 2021-03-05 |
Family
ID=68839876
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010589982.8A Pending CN112445529A (zh) | 2019-08-30 | 2020-06-24 | 软件辅助功率管理 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11567555B2 (zh) |
CN (1) | CN112445529A (zh) |
DE (1) | DE102020122528A1 (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111124656B (zh) * | 2018-10-31 | 2023-09-15 | 伊姆西Ip控股有限责任公司 | 用于向专用计算资源分配任务的方法、设备和计算机可读存储介质 |
US20220197360A1 (en) * | 2019-07-31 | 2022-06-23 | Hewlett-Packard Development Company, L.P. | Computing Devices |
WO2022039736A1 (en) * | 2020-08-19 | 2022-02-24 | Google Llc | Memory sharing |
CN112559054B (zh) * | 2020-12-22 | 2022-02-01 | 上海壁仞智能科技有限公司 | 用于同步指令的方法和计算系统 |
US11675592B2 (en) | 2021-06-17 | 2023-06-13 | International Business Machines Corporation | Instruction to query for model-dependent information |
US11797270B2 (en) | 2021-06-17 | 2023-10-24 | International Business Machines Corporation | Single function to perform multiple operations with distinct operation parameter validation |
US11693692B2 (en) | 2021-06-17 | 2023-07-04 | International Business Machines Corporation | Program event recording storage alteration processing for a neural network accelerator instruction |
US11269632B1 (en) | 2021-06-17 | 2022-03-08 | International Business Machines Corporation | Data conversion to/from selected data type with implied rounding mode |
US11734013B2 (en) | 2021-06-17 | 2023-08-22 | International Business Machines Corporation | Exception summary for invalid values detected during instruction execution |
US11669331B2 (en) | 2021-06-17 | 2023-06-06 | International Business Machines Corporation | Neural network processing assist instruction |
CN113253824B (zh) * | 2021-06-21 | 2021-11-12 | 成都爱旗科技有限公司 | 一种基于risc-v内核的mcu系统、供电方法以及终端设备 |
US11640194B2 (en) * | 2021-06-29 | 2023-05-02 | Red Hat, Inc. | Coordinating dynamic power scaling of agents based on power correlations of agent instructions |
EP4137913A1 (en) | 2021-08-17 | 2023-02-22 | Axis AB | Power management in processing circuitry which implements a neural network |
US11768531B2 (en) * | 2021-12-30 | 2023-09-26 | Western Digital Technologies, Inc. | Power management for storage controllers |
CN114816373B (zh) * | 2022-06-30 | 2022-09-16 | 金现代信息产业股份有限公司 | 用于低代码开发平台的即时错误提示方法及系统 |
Family Cites Families (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7032101B2 (en) * | 2002-02-26 | 2006-04-18 | International Business Machines Corporation | Method and apparatus for prioritized instruction issue queue in a processor |
US9038040B2 (en) * | 2006-01-25 | 2015-05-19 | International Business Machines Corporation | Method for partitioning programs between a general purpose core and one or more accelerators |
US8549500B2 (en) * | 2007-02-14 | 2013-10-01 | The Mathworks, Inc. | Saving and loading graphical processing unit (GPU) arrays providing high computational capabilities in a computing environment |
US8010954B2 (en) * | 2007-02-14 | 2011-08-30 | The Mathworks, Inc. | Parallel programming interface to dynamically allocate program portions |
US7941791B2 (en) * | 2007-04-13 | 2011-05-10 | Perry Wang | Programming environment for heterogeneous processor resource integration |
US8286198B2 (en) * | 2008-06-06 | 2012-10-09 | Apple Inc. | Application programming interfaces for data parallel computing on multiple processors |
US9354944B2 (en) * | 2009-07-27 | 2016-05-31 | Advanced Micro Devices, Inc. | Mapping processing logic having data-parallel threads across processors |
KR101613971B1 (ko) * | 2009-12-30 | 2016-04-21 | 삼성전자주식회사 | 프로그램 코드의 변환 방법 |
US20110219357A1 (en) * | 2010-03-02 | 2011-09-08 | Microsoft Corporation | Compressing source code written in a scripting language |
KR101754998B1 (ko) * | 2011-01-27 | 2017-07-06 | 삼성전자주식회사 | 멀티 코어 시스템 및 멀티 코어 시스템에서의 데이터 병렬 처리 방법 |
US8789026B2 (en) * | 2011-08-02 | 2014-07-22 | International Business Machines Corporation | Technique for compiling and running high-level programs on heterogeneous computers |
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 |
US9568966B2 (en) * | 2012-08-31 | 2017-02-14 | Dell Products L.P. | Dynamic power budget allocation |
US9218044B2 (en) * | 2012-11-27 | 2015-12-22 | International Business Machines Corporation | Computing system frequency target monitor |
US9152210B2 (en) * | 2013-02-15 | 2015-10-06 | Apple Inc. | Method and apparatus for determining tunable parameters to use in power and performance management |
EP2775395B1 (en) * | 2013-03-07 | 2020-11-25 | Nxp B.V. | Integrated circuit, electronic device and instruction scheduling method |
US9606803B2 (en) * | 2013-07-15 | 2017-03-28 | Texas Instruments Incorporated | Highly integrated scalable, flexible DSP megamodule architecture |
GB2510655B (en) * | 2013-07-31 | 2015-02-25 | Imagination Tech Ltd | Prioritizing instructions based on type |
EP3001306A1 (en) * | 2014-09-25 | 2016-03-30 | Intel Corporation | Bit group interleave processors, methods, systems, and instructions |
GB2539041B (en) * | 2015-06-05 | 2019-10-02 | Advanced Risc Mach Ltd | Mode switching in dependence upon a number of active threads |
CN105302577B (zh) * | 2015-11-26 | 2019-05-07 | 上海兆芯集成电路有限公司 | 驱动执行单元的机器码产生方法以及装置 |
US9971393B2 (en) * | 2015-12-16 | 2018-05-15 | International Business Machines Corporation | Dynamic workload frequency optimization |
US10705589B2 (en) * | 2016-06-02 | 2020-07-07 | Northwestern University | System and method for associative power and clock management with instruction governed operation for power efficient computing |
US10281975B2 (en) * | 2016-06-23 | 2019-05-07 | Intel Corporation | Processor having accelerated user responsiveness in constrained environment |
US10372184B2 (en) * | 2016-06-28 | 2019-08-06 | Renesas Electronics America Inc. | Method and apparatus for implementing power modes in microcontrollers using power profiles |
US10379904B2 (en) * | 2016-08-31 | 2019-08-13 | Intel Corporation | Controlling a performance state of a processor using a combination of package and thread hint information |
US10186069B2 (en) * | 2017-02-15 | 2019-01-22 | Arm Limited | Methods and systems for grouping and executing initial pilot shader programs |
US10402173B2 (en) * | 2017-02-24 | 2019-09-03 | General Electric Company | Systems and methods for arbitrary software logic modeling |
US10417054B2 (en) * | 2017-06-04 | 2019-09-17 | Apple Inc. | Scheduler for AMP architecture with closed loop performance controller |
US10977045B2 (en) * | 2017-11-29 | 2021-04-13 | International Business Machines Corporation | Priority instruction handling with optimized issue queue design |
US11275430B2 (en) * | 2018-08-28 | 2022-03-15 | Advanced Micro Devices, Inc. | Power management advisor to support power management control |
US11106261B2 (en) * | 2018-11-02 | 2021-08-31 | Nvidia Corporation | Optimal operating point estimator for hardware operating under a shared power/thermal constraint |
US10884485B2 (en) * | 2018-12-11 | 2021-01-05 | Groq, Inc. | Power optimization in an artificial intelligence processor |
US20200264879A1 (en) * | 2019-02-20 | 2020-08-20 | Nanjing Iluvatar CoreX Technology Co., Ltd. (DBA "Iluvatar CoreX Inc. Nanjing") | Enhanced scalar vector dual pipeline architecture with cross execution |
-
2019
- 2019-08-30 US US16/557,657 patent/US11567555B2/en active Active
-
2020
- 2020-06-24 CN CN202010589982.8A patent/CN112445529A/zh active Pending
- 2020-08-28 DE DE102020122528.8A patent/DE102020122528A1/de active Pending
Also Published As
Publication number | Publication date |
---|---|
US11567555B2 (en) | 2023-01-31 |
US20190384370A1 (en) | 2019-12-19 |
DE102020122528A1 (de) | 2021-03-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112445529A (zh) | 软件辅助功率管理 | |
US11494194B2 (en) | Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions | |
CN112445310A (zh) | 主动di/dt电压下降抑制 | |
CN106708753B (zh) | 在使用共享虚拟存储器的处理器中加速操作的装置和方法 | |
US10156884B2 (en) | Local power gate (LPG) interfaces for power-aware operations | |
US10503550B2 (en) | Dynamic performance biasing in a processor | |
US9927859B2 (en) | Internal communication interconnect scalability | |
CN110832460A (zh) | 基于中断率来修改处理器频率 | |
CN109791493B (zh) | 用于乱序集群化解码中的负载平衡的系统和方法 | |
CN108604107B (zh) | 用于基于指令类型调整最大时钟频率的处理器、方法和系统 | |
US11941409B2 (en) | Methods, systems, and apparatuses for a multiprocessor boot flow for a faster boot process | |
CN108227896B (zh) | 用于并行多步骤功率管理流程的指令和逻辑 | |
EP3885906A1 (en) | Apparatus and method for dynamic control of microprocessor configuration | |
CN114253607A (zh) | 用于由集群化解码流水线对共享微代码定序器的乱序访问的方法、系统和装置 | |
CN114691316A (zh) | 基于软件优先级提示的自主且可扩展的资源控制 | |
US20160378471A1 (en) | Instruction and logic for execution context groups for parallel processing | |
US20230018828A1 (en) | Device, method and system to provide thread scheduling hints to a software process | |
US20240103914A1 (en) | Dynamically adjusting thread affinitization using hardware-based core availability notifications | |
CN116266142A (zh) | 处理器中的频率预算 | |
CN111033439A (zh) | 用于处理引擎的利用率度量 | |
CN115525135A (zh) | 处理器中的虚拟分区的功率限制 |
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 |