CN110825159A - 配置处理器以有效执行指令的技术 - Google Patents
配置处理器以有效执行指令的技术 Download PDFInfo
- Publication number
- CN110825159A CN110825159A CN201910728960.2A CN201910728960A CN110825159A CN 110825159 A CN110825159 A CN 110825159A CN 201910728960 A CN201910728960 A CN 201910728960A CN 110825159 A CN110825159 A CN 110825159A
- Authority
- CN
- China
- Prior art keywords
- frequency
- clock
- instruction
- processor
- instructions
- 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
- 238000000034 method Methods 0.000 title claims abstract description 70
- 230000004044 response Effects 0.000 claims abstract description 24
- 238000012545 processing Methods 0.000 claims description 110
- 230000008569 process Effects 0.000 claims description 32
- 230000008859 change Effects 0.000 claims description 21
- 230000011664 signaling Effects 0.000 claims description 20
- 238000013507 mapping Methods 0.000 claims description 9
- 238000001514 detection method Methods 0.000 abstract description 19
- 230000001976 improved effect Effects 0.000 abstract description 2
- 239000012634 fragment Substances 0.000 description 28
- 238000005192 partition Methods 0.000 description 20
- 238000004891 communication Methods 0.000 description 19
- 229910052710 silicon Inorganic materials 0.000 description 19
- 239000010703 silicon Substances 0.000 description 19
- 239000000872 buffer Substances 0.000 description 17
- 230000006870 function Effects 0.000 description 17
- 239000011159 matrix material Substances 0.000 description 17
- 238000010586 diagram Methods 0.000 description 15
- 230000007246 mechanism Effects 0.000 description 13
- 238000003860 storage Methods 0.000 description 12
- 238000009826 distribution Methods 0.000 description 10
- 239000004065 semiconductor Substances 0.000 description 10
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 9
- 238000013528 artificial neural network Methods 0.000 description 9
- 238000012360 testing method Methods 0.000 description 8
- 238000013519 translation Methods 0.000 description 8
- 230000014616 translation Effects 0.000 description 8
- 238000013461 design Methods 0.000 description 6
- 230000002776 aggregation Effects 0.000 description 5
- 238000004220 aggregation Methods 0.000 description 5
- 238000013135 deep learning Methods 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 238000004088 simulation Methods 0.000 description 5
- 239000000758 substrate Substances 0.000 description 5
- 238000012549 training Methods 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000012512 characterization method Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000007774 longterm Effects 0.000 description 4
- 238000011084 recovery Methods 0.000 description 4
- 238000009825 accumulation Methods 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 238000002156 mixing Methods 0.000 description 3
- 210000002569 neuron Anatomy 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000010076 replication Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000004888 barrier function Effects 0.000 description 2
- 210000004556 brain Anatomy 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000009509 drug development Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000011068 loading method Methods 0.000 description 2
- 239000002184 metal Substances 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000001537 neural effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 230000000630 rising effect Effects 0.000 description 2
- 229920006344 thermoplastic copolyester Polymers 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 235000008694 Humulus lupulus Nutrition 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000003745 diagnosis Methods 0.000 description 1
- 201000010099 disease Diseases 0.000 description 1
- 208000037265 diseases, disorders, signs and symptoms Diseases 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- RZTAMFZIAATZDJ-UHFFFAOYSA-N felodipine Chemical compound CCOC(=O)C1=C(C)NC(C)=C(C(=O)OC)C1C1=CC=CC(Cl)=C1Cl RZTAMFZIAATZDJ-UHFFFAOYSA-N 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 230000012010 growth Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000013067 intermediate product Substances 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000000329 molecular dynamics simulation Methods 0.000 description 1
- 238000012900 molecular simulation Methods 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000010355 oscillation Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000002040 relaxant effect Effects 0.000 description 1
- 230000008672 reprogramming Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000009466 transformation 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/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/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/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3243—Power saving in microcontroller unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
-
- 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 Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Power Sources (AREA)
- Executing Machine-Instructions (AREA)
- Microcomputers (AREA)
Abstract
本发明提供了一种配置处理器以有效执行指令的技术。具体地,提供了用于在适应由执行噪声指令(例如,高功率消耗指令)引起的动态电压降的同时改善电路性能的系统和技术。通过选择性地减慢各类型噪声指令的操作频率来改善性能。示例性技术通过检测被预测为具有预定义噪声特性的预定噪声类型的指令来控制时钟(例如,由于指令消耗的更大电流量而在电路的电压轨上产生的高水平噪声),以及响应于检测,降低时钟的频率。检测在执行指令之前发生。即使一些工作负载包括操作频率减慢的指令,根据指令类型改变频率也使电路能够以高频率操作。
Description
相关申请的交叉引用
本申请要求2018年8月9日提交的、名称为“基于指令类型的快速时钟减速(FastClock Slowdown Based on Instruction Type)”的美国临时专利申请No.62/716,538的优先权,其全部内容通过引用并入本文。
技术领域
本公开涉及处理器中的功率管理,更具体地说,涉及基于正在执行的指令的类型来改变时钟速度和/或功率指令。更具体地说,本公开涉及以适应噪声的方式动态地控制时钟频率以及与执行某些类型的指令相关联的随后的电压降。
背景技术
调制解调器处理器非常复杂,在单个基板上包含数百万个晶体管。虽然每个个体晶体管仅消耗少量的功率,但基板上的数百万个晶体管一起会消耗大量功率。这种功率消耗产生热量并且还使用来自电源的大量电力。因此,功率输送是调制解调器处理器设计的重要方面。
用于在处理器基板上输送电力的布线形成电力输送网络。电力输送网络包括例如用于向处理器芯片上的不同组件供应适当电压的电流的电力轨。电力输送网络影响许多性能方面,例如电压轨上的噪声量。本文档中使用的术语“噪声”指的是电压轨上发生的电压瞬态变化。虽然电源可以设计为几乎无噪声,但处理器本身会在其内部电力输送网络上产生噪声。例如,执行高容量指令(其同时或几乎同时地切换芯片上的许多晶体管)可导致电压轨上的瞬间电压波动。电压轨上的过多噪声可导致各种电路操作故障,例如处理器不能获得其操作频率所需的功率(电流和/或电压),从而导致定时误差、错误的切换等。
更详细地,一个或更多个电压轨从电源供电(诸如电源到处理器)。电压调节器通常根据处理器的各种组件的功率要求将每个电压轨上的电压控制到处理器的一个或更多个焊盘(或包含处理器的集成电路)。金属通孔和迹线将所接收的功率分配在整个处理器(和/或集成电路)的焊盘处。一个或更多个电压调节器可以根据工作负载的变化以及因此处理器的功率要求来动态地转换电源电压上升或下降。通向处理核心的轨道的标称恒定电压称为“Vdd”。
随着处理器变得更快和更小,芯片内的电力输送网络的设计变得更加复杂。一般情况下,处理器运行得越快,消耗的功率就越多。相反地,减慢处理器会减少该处理器的各种功能单元所需的功率量。处理器功耗P的特征表示使得功率和频率之间的这种关系清晰:P=CV2f,其中C、V和f分别表示处理器的切换电容、处理器看到的电压和处理器的操作频率。
电路运行的速度受驱动电路的电压的影响。电压轨上的电压波动(噪声)能导致一个或更多个处理器电路的电压与标称电压不同。影响噪声幅度的主要因素是电路(或芯片上的其他电路)正在处理的工作负载。特别地,噪声的动态电阻降(也称为“IR降”)成分受到在执行时特定指令消耗(draw)的电流I的影响。噪声有两个主要成分:Di/dt和IR降。Di/dt噪声取决于电流随时间的变化率,而IR降仅取决于电流的大小。噪声感知锁频环(NAFLL)技术可用于解决噪声的Di/dt成分。本公开中描述的技术主要针对IR降。
不同的指令导致不同数量的晶体管切换、消耗不同量的电流,并因此导致电压轨上的不同量的IR降。通过粗略类比的方式,考虑在夏天工作日中间的一个闷热的日子。温度计达到100华氏度(38摄氏度)。当一个城市的每个人下班回家时,他们做的第一件事就是打开空调来冷却他们的生活空间。电网可能未被设计成处理这样的高峰值电流消耗,导致“掉电”-即电压波动偏离电网设计用于输送的标称110 VAC。现在从微观细节上考虑现代处理器芯片上这种情况,其中数百万个晶体管每秒运行数千次。这就像每秒多次同步打开和关闭数百个城市的空调。由此产生的电力波动将在城市的电力输送网络上产生大量的噪声。
随着处理器变得越来越小并且越来越复杂,电路之间的功率密度的增加可能进一步加剧与通过执行某些指令而在电压轨上产生的噪声相关的问题。
在一些处理器中,例如来自过去几年的Nvidia图形处理单元(GPUs),在电压Vdd下的操作频率(即速度)被保守地设置,使得即使是最嘈杂的预期工作负载也将产生适当的操作。此外,已经实现了特征(诸如NAFLL)以通过跟踪电压轨上的噪声并作为响应动态地改变时钟频率来解决电力分配网络上的噪声影响。特别是,当在电压轨上检测到电压降时,NAFLL机制降低时钟频率(即处理器晶体管切换的速率),以使晶体管有更多时间进行正确操作并确保没有电路故障。这是有效的,因为晶体管需要更高的电压来更快地切换。降低切换速率使晶体管能够在较低的、下降的电压水平下运行。当下降消失时,可以增加时钟频率。例如,美国专利公开号2018/0123604描述了遵循该原理的示例NAFLL。
然而,随着处理器继续变得更小、更快和更复杂,技术(例如NAFLL)可能无法完全解决与电压轨上的噪声相关的问题和低效率。因此,期望进一步改进以使得处理器适应不同指令类型的噪声效应。
发明内容
示例性实施例纠正了上述技术的一些缺陷,用于解决处理器中带来的噪声相关电压。公开了用于以适应于电压轨上的噪声的方式控制处理器的操作的系统和方法。
示例性实施例提供了一种控制处理器的时钟的方法。该方法包括检测被预测为具有预定义的噪声特性的指令,并且响应于所述检测,改变时钟的频率。所述检测可以在处理器执行指令之前发生。
根据另一示例性实施例,提供了包括处理电路和控制处理电路的操作频率的时钟生成器的系统。处理电路被配置为检测被预测为具有预定义的噪声特性的指令,并响应于所述检测,向时钟生成器发信号以改变时钟生成器的频率。该检测可以在处理电路中执行指令之前发生。
附图说明
图1A示出了根据某些示例性实施例的、包括快速时钟减慢电路的处理系统的框图。
图1B示出了根据某些示例性实施例的、实现快速时钟减慢的处理器的框图。
图1C是根据一些示例性实施例的、实现快速时钟减慢的另一示例性处理器。
图2A示出了根据一些示例性实施例的、用于执行快速时钟减慢的过程。
图2B是根据一些示例性实施例的、说明可在合并了快速时钟减慢的处理器中使用的时钟减慢信号和相应的确认信号的时序图。
图2C示出了根据一些示例性实施例的、当执行快速时钟减慢时时钟频率随时间的变化。
图2D示出了根据一些示例性实施例的、说明在快速时钟减慢期间停止执行指令的时序图。
图3示出了根据一个实施例的并行处理单元。
图4A示出了根据一个实施例的、图3的并行处理单元内的通用处理集群。
图4B示出了根据一个实施例的、图3的并行处理单元的存储器分区单元。
图5A示出了根据一个实施例的、图4A的流式多处理器。
图5B是根据一个实施例的、使用图3的并行处理单元(PPU)实现的处理系统的概念图。
图5C示出了可以实现各种先前实施例的各种架构和/或功能的示例性系统。
图6是根据一个实施例的由图3的PPU实现的图形处理管线的概念图。
具体实施方式
本发明的某些示例性实施例动态地控制处理器和/或集成电路的操作频率,以减少传统技术中建立的低效率,以便处理由某些指令在电力分配网络上产生的噪声引起的动态电压降。例如,一些实施例提供基于指令管线中的指令检测噪声工作负载,并且在执行检测到的噪声指令之前快速减慢时钟频率。而且,更多示例性实施例提供检测和响应用技术(诸如NAFLL)仍未检测到的局部处理区域中的这种噪声工作负载。
如上面在背景技术部分中所提到的,在某些当前商用的处理器中,操作频率被设置为使得即使最嘈杂的预期工作负载也可以在给定的标称电压或设定电压下执行(即,降低频率以补偿来自标称电压的最差可能的下降)。然而,这种方法是次优的,因为它要求为所有其他工作负载维持频率余量,这些工作负载产生的噪声低于最坏情况(例如最嘈杂)的工作负载。即,通过根据最嘈杂的工作负载来设置频率,其要求较低的频率以进行稳定的操作,甚至较少的噪声指令被迫以降低后的频率执行。例如,在商购处理器的示例中,在Vdd为900mV时,基于被预测为由最嘈杂的指令类型引起的电压降,所有指令的操作频率被设置为1871MHz,而所有其他指令类型可以以1886MHz的更快频率安全地操作,这意味着当正在执行除最嘈杂的指令类型之外的指令时,剩余约15%的频率余量未使用。对于各种Vdd,已观察到类似的余量范围为2-26%。这减慢了有效处理速率,这将影响高性能处理器能够以多快的速度完成复杂任务。
此外,在现有处理器中的NAFLL实现中,仅在芯片上NAFLL逻辑物理定位的位置处执行电压/噪声感测。因此,NAFLL可能错过芯片的其他部分中的噪声/电压降,这些部分是局部化的并且不会传播到NAFLL感测位置。特别地,IR降可以是一种高度局部化的现象。具有高电流密度的芯片上的电路具有比在NAFLL处检测到的更高的IR降。NAFLL未检测到的并且因此并未补偿的噪声需要被加评注(margined),并且已经显示为对于产生较低噪声的工作负载导致频率损失约3-4%。此外,NAFLL的响应发生在噪声/电压已经下降之后。
示例性实施例基于指令类型主动地减慢时钟频率以适应电压轨上的预期或预测噪声(主要由IR降组成)。与在噪声/电压已经下降之后响应的NAFLL相比,示例性实施例是预测性的并且在下降发生之前响应预测的噪声/电压降。在一些实施例中,时钟频率减慢补偿了未被NAFLL补偿的预测噪声。通过仅针对被预期为产生高水平噪声的类型的指令选择性地减慢一个或更多个时钟,示例性实施例提供了产生较低噪声的指令以比噪声指令更快的速率计时,从而改善至少较低噪声指令的性能。因此,在典型工作负载中,大多数指令都是较低噪声类型的,示例性实施例也可以改善处理器和/或具有处理器的集成电路的整体性能。
一些示例性实施例利用了这样的特性:在已经解码指令之后,在指令执行期间发生导致电压轨上的噪声增加的大的冲击电流。这允许基于解码的指令调制一个或更多个时钟,但是在执行解码的指令开始之前,主动地偏移时钟以考虑由于在指令执行期间产生的噪声而引起的频率损失。通过在执行某些噪声指令之前快速调制一个或更多个时钟以降低频率,示例性实施例可以提供使处理器仅以降低的频率操作以执行那些有噪声的指令。基 于指令类型的快速时钟减慢系统
图1A是根据一些示例性实施例的用于基于指令类型的快速时钟减慢的系统100的框图。系统100被配置为基于指令类型主动地减慢时钟频率,以便适应电压轨上的噪声(主要由IR降组成)。示例性实施例中的快速时钟减慢通过检测和信令电路、用于时钟减慢的致动电路和时钟生成电路之间的协调来实现。在示例性实施例中,处理器102可以包括检测和信令组件,并且致动组件和快速时钟减慢电路可以在与处理器相关联的时钟逻辑114中。在快速时钟减慢在诸如图3中所示的并行处理单元PPU(例如,图形处理单元(GPU))中实现的示例性实施例中,检测和信令组件可以在PPU的流式处理多处理器(SM,如图4A中所示)中。然而,实施例不限于GPU和其他并行处理单元,并且可以包括依赖于可控时钟信号的任何指令处理电路。
处理器102通过一个或更多个电力轨112从一个或更多个电压调节器110接收电力。一个或更多个电压调节器110根据处理器102的要求控制来自电源单元(未示出)的电压。在一些示例性实施例中,一个或更多个电压调节器110可以控制供应给处理器102的电压,使得到处理器的一个或更多个电压轨具有与到处理器的另一个轨道上的电压不同的电压。通过电压轨112接收的电力被分配到处理器的各个电源域(power domain),包括到处理电路的数据路径104的各种功能单元(例如,算术和逻辑单元(ALU)、浮点单元(FPU)、加载/存储单元、分支单元、专用执行路径、SIMD执行单元等)106。数据路径104(以及处理器102或包括处理器102的集成电路的其他组件)从时钟逻辑114中的一个或更多个时钟生成器接收时钟信号116。
如果将噪声指令所需的降低的频率设置为在处理器102上执行的所有指令的时钟频率,如上所述,则在执行较少噪声指令期间未使用的电压和频率余量将导致低效率。示例性实施例通过利用如上所述的在指令执行期间以及在指令管线108中已经解码该指令之后发生噪声增加的特性,来避免基于最坏情况噪声指令设置时钟频率。这允许在执行该解码的指令开始之前基于解码的噪声指令调制一个或更多个时钟信号116,主动地偏移时钟频率以考虑在指令执行期间由于噪声而遭受的电压损失。当指令到达指令管线中的执行阶段时,开始指令的执行,并且被分派以在数据路径104上执行。更具体地,当数据路径的各个功能单元根据有噪声指令被激活时,发生电流的浪涌并且因此发生噪声的增加,因此,在数据路径中的各个功能单元开始执行有噪声指令之前,示例性实施例中的时钟频率被减慢。
指令管线108可以是任何数量的管线阶段的管线,包括用于指令解码和指令执行的单独的管线阶段。示例性管线可以具有用于指令获取、指令解码、指令执行、存储器访问和写入的单独的管线阶段。管线使处理和控制电路的不同部分能够由管线中的不同指令同时使用。
指令检测和信令块118包括用于监视指令管线108的逻辑。更具体地,块118包括用于检测何时在管线108中解码可以在电压轨上引起某些预定水平的噪声的指令的逻辑。检测可以基于指令类型代码(即操作码)和/或指令类型代码和操作数组合。要检测的指令类型可以是硬编码的和/或可以在可编程表中指定的。当硬编码时,根据一些实施例,可以使用电流(I)水平作为噪声水平的代表来完成分类。分类可以是相对排序,而不是绝对排序(例如“指令A:1安培”;“指令B:2安培”;“指令C:2.1安培”;“指令D:3安培”)。假设恒定电阻(R),I可被认为是IR的良好代表。因此,例如,指令A可以被分类在低功率组中,指令B和C可以被分类在中功率组中,并且指令D可以被分类在高功率组中。每个组所需的特定时钟减慢量可以在硅上表征并在减速表中编程。因此,如通过以上描述清楚的,在某些实施例中,每个指令的实际噪声对于分组不是必需的。
注意,尽管示例性实施例检测可能引起某水平的噪声的指令,但是实施例在运行高功率指令时补偿频率损失。频率损失也可能是由于抖动和/或其他二阶分量引起的,但大多数频率损失可能是由于噪声引起的。
指令检测和信令块118还可以包括用于响应于在管线108中检测到预定指令类型而与时钟逻辑114传送信令的逻辑。例如,到时钟电路114的信令可以包括响应于检测到管线108中的噪声指令而使时钟减慢信号120有效(assert)。
另外,至少在一些实施例中,指令检测和信令块118还可以包括互锁逻辑,用于响应于在管线中检测到有噪声指令而停止管线108直到时钟被减慢。
尽管图1A示出了时钟逻辑114位于处理器102的外部,但是实施例不限于此。示例性实施例可以包括处理电路和时钟逻辑的各种组合,例如,处理电路和时钟逻辑在同一管芯上,每个处理器有单个时钟,由多个处理器共享单个时钟等。其中处理电路和时钟逻辑之间的通信足够快速和有效,使得可以在指令解码和其执行开始之间的时间间隔期间请求时钟减慢并使其有效。
图1B示出了根据一些示例性实施例的处理器130的框图。根据一些实施例,处理器130可以与处理器102完全相同,但是时钟逻辑与处理器102位于相同的管芯上。如图1A所示,处理器130还通过由一个或更多个电压调节器控制的一个或更多个电压轨接收电力。电压轨和电压调节器都没有单独显示在图1B中。
处理器130包括一个或更多个处理核心132(例如,核心A和核心B),以及时钟逻辑133。时钟逻辑133提供时钟信号158以控制一个或更多个处理核心132的操作频率。
有噪声指令检测和停止块136被配置为在管线的执行阶段之前检测指令管线134中的指令140中的某些预定的指令类型141,其中这些指令由一个或更多个处理器核心132执行。可以在可编程表中硬编码和/或指定要检测的预定的指令类型141(也称为“有噪声指令类型”)。根据一些实施例,检测到的用于时钟减慢的指令包括某些高功率指令。也就是说,检测到的指令是被预期为消耗高于某个阈值的功率量的指令。例如,某些矩阵乘法指令利用数据路径中的更多功能单元和/或使用具有非常高的门密度的数据路径,因此是比许多其他指令类型更多产的功率消耗者。例如,根据一个实施例,半精度矩阵乘法累加(HMMA)指令可以利用SM(如,关于图4A所述)中的专用高门密度HMMA数据路径,其比许多指令更耗功率,并且与许多其他指令相比,其也容易在电压轨上产生更多噪声。HMMA指令的噪声和产生的电压降可能局限于HMMA数据路径的附近。例如,在2017年11月29日提交的美国申请No.15/826,435中描述了HMMA指令,该申请的全部内容通过引用并入本文。因此,块136可以监视指令管线以检测何时解码(或正在解码)高功率指令。然而,一些实施例可以被配置为检测一个或更多个有噪声指令,其不一定是高功率指令,但是其在电压轨上产生大量噪声(例如,由于数据路径的同时被激活部分的密度等)。
时钟控制信令块138被配置为响应于由有噪声指令检测块136进行的检测而使时钟减慢信号154有效。时钟减慢信号154是对时钟逻辑133的请求以减慢提供给处理器核心132的时钟信号158。
在一些实施例中,时钟逻辑133可响应于接收到时钟减慢请求信号154而提供时钟减慢确认信号156,指示其已实现所请求的时钟减慢。
在一些实施例中,有噪声指令检测和停止块136还包括用于响应于使时钟减慢请求信号154有效而停止指令管线134的逻辑,直到确定时钟频率已按请求减慢为止。在接收到确认信号156时,可以不停止管线,从而可以分派检测到的有噪声指令以便执行。停止有助于确保在响应于检测而减慢时钟之前不执行检测到的有噪声指令。在一些实施例中,其中指令解码和执行之间的延时对于时钟减慢启动而言太小,块136也可以包括用于停止的逻辑。
在图1B中所示的实施例中,时钟逻辑133被提供在与一个或更多个处理器核心132相同的管芯上。然而,在一些实施例中,时钟逻辑133可以不位于与处理器核心相同的管芯上,所述处理器核心检测和/或执行有噪声指令。
一个或更多个处理器核心132和时钟逻辑133之间的信号154和156的信令路径被配置用于低延迟。在实施例中,非常希望保持信令路径上的延迟和时钟的时间以实现减慢,以便不必延时指令管线。在一些实施例中,请求/确认消息(例如REQ/ACK位)可以通过重定时阶段在SM和时钟之间移动。例如,这种重定时阶段可以是自定义选择和/或自定义放置的。在重定时失败(retiming flops)之间,数据可以以类似于干线时钟的方式被路由,例如,通过大时钟缓冲器来驱动宽的上金属层屏蔽网,使用消除昂贵路由的自定义路由规则。在一些实施例中,示例性地在解码和执行之间的延迟水平可以是12个周期或类似,并且示例性地在请求和时钟改变之间的延迟可以是10个周期或类似。因此,在示例性实施例中,时钟减慢在解码的指令到达执行之前发生。
时钟逻辑133可以包括时钟生成器块142和时钟更新块148。在一些实施例中,时钟生成器块142可以包括时钟源,例如数字压控振荡器(DVCO)时钟源,NAFLL机制,例如在2016年11月1日提交的美国专利申请No.15/340,901(美国专利公开号2018/0123604)中描述的,其全部内容通过引用并入本文。
然而,在美国专利申请No.15/340,901中描述的时钟频率改变技术不足以满足某些示例性实施例中所需的快速减慢的时间限制,以便实现指令的解码和执行管线阶段之间的短时间间隔内的减慢。在一些实施例中,通过在诸如表144和146任一的查找表中执行查找来实现时钟频率改变。在时钟频率被配置为“全速”(例如,对于电压噪声没有余量的可能的最大操作频率)或“降低的速度”(例如,对于噪声有余量的可能的最大操作频率)任一的实施例中,查找表144可以提供用于全速操作的电压-频率曲线(VF曲线),并且表146可以提供用于降低的速度操作的VF曲线。响应于时钟减慢请求154,一些实施例可以将当前电压处的频率改变为表146中的VF曲线(降低的速度操作)。
在另一个实施例中,可能没有查找表,并且时钟源或其他时钟生成器可以设置为时钟减慢所请求的频率。
在块152处,可以聚合传入的时钟减慢请求。例如,块152确定从各个处理核心132接收的减速请求154中的请求最大减慢的时钟减慢请求,然后将其转发到时钟生成器块142。这确保经调整的时钟频率等于或低于可以在任何时刻安全执行所有指令所需的时钟频率。
滞后块150可以位于聚合块152和时钟生成器块142之间的信号路径154中。在一些示例性实施例中,尽管时钟减慢请求被立即转发到时钟生成器块142(即,在没有受到滞后的情况下发送到时钟生成器),时钟减慢无效(de-assert)可以在被转发到时钟生成器块142之前经受滞后过程。使所述无效经受滞后可最小化或者完全避免在标称正常工作频率和一个或更多个降低的频率之间来回切换时钟频率。
时钟更新块148控制更新时钟,并且还可以在已经实现时钟减慢时产生时钟减慢确认信号158。时钟更新块148可以响应于接收到时钟减慢信号154的有效或无效,由时钟生成器142启动时钟频率的更新。
图1C示出了根据一些示例性实施例的实现快速时钟减慢的另一示例性处理器的框图。图1C中所示的实施例实现了更精细的减慢等级,从而在具有显着变化的消耗功率量的指令的工作负载的情况下实现更好的性能
(例如,当与仅具有单个频率减慢水平的实现方式相比时)。
已经观察到,在某些应用期间使用的各种计算指令在数据路径中执行时消耗的功率量显著变化。各种指令类型在数据路径中执行时所消耗的功率的这种变化预计会导致不同指令类型的噪声和IR降的变化。在一些示例处理器上,取决于指令类型,变化可以在10-12%范围内。根据估计每1%的噪声可能导致大约2%的减慢,功率水平的这种变化可导致处理器的速度减慢到大于必要程度。如图1C的实施例中所示实现多级别减慢可以在工作负载中存在多于两种不同指令类型时实现更好的性能,其消耗相应的显著变化量的功率量并且因此在电压轨上产生相应的显著变化量的噪声。
并行处理器161,例如,图3中所示的PPU,可以包括一个或更多个处理器(例如,处理器160a和160b)。每个处理器,诸如处理器160a,可以包括一个或更多个处理核心162。例如,关于图3中所示的实施例,处理器160a可以对应于GPC 350,并且每个处理核心162可以对应于相应的流式多处理器(SM)440(参见图4A)。
在每个处理核心162中,指令170进入管线164,在管线164中对它们进行解码并随后分派以供执行。有噪声指令检测和停止块166监视管线164以检测何时解码预定指令集171中的任何指令。例如,块166可以监视来自预定的有噪声指令集171的任何指令(例如,高功率指令)的解码。当检测到预定集中的一个或更多个指令时,产生时钟减慢请求信号。
在关于图1C描述的实施例中,时钟减慢请求信号182(例如,信号182a和183b)可以取决于检测到的指令类型(例如,检测到的不同类型的指令类型可导致不同的时钟减慢信号)。检测到的指令根据其估计的噪声产生进行分类。可以根据指令噪声类别块167中的可编程分类来执行分类。可编程性使得能够基于实际芯片上的模拟修改前硅(pre-silicon)分类为后硅(post-silicon)。由指令引起的噪声可以在芯片之间和/或工作负载之间变化,并且可编程性使得分类能够被调整为适应特定环境。
可以根据多组指令类型进行分类,其中一组或更多组指令类型中的每组被映射到相应的时钟偏移。可以根据预期每种指令类型的指令生成的噪声量来确定各组指令类型。例如,预期生成第一范围中噪声水平的所有指令类型可以在与预期生成第二范围中的噪声水平的所有指令类型位于不同的组中。在组的映射中指定的时钟偏移可以是补偿由组中指令类型的指令产生的预期噪声水平引起的电压降所需的当前频率的减慢的量。
在一些实施例中,映射是可编程的,因此能够进行对指令类型到特定组的映射的后硅重编程或重配置。以这种方式,基于前硅设计考虑和噪声估计而做出的初始映射可以随后基于在后硅模拟中观察到的指令类型的更准确的噪声水平而被覆写。这里使用的前硅和后硅术语分别指的是在送交制造(tapeout)之前的芯片设计阶段和送交制造后的芯片。因为实际电路(即,后硅)中的每种类型的指令所产生的噪声水平可以且通常确实与前硅估计大不相同,所以在一些实施例中提供的映射的可编程性使得能够将指令类型根据后硅模拟重新分类为组,其可以显著改善处理器的性能。在一些实施例中,与每个组相关联的时钟偏移也可以是可编程的。
基于检测和分类,时钟控制信令逻辑168被配置为针对每个处理器核心162生成时钟减慢请求信号182a和182b之一。在示例性实施例中,时钟减慢请求信号182a和182b可以分别映射到为高功率消耗者的第一类指令类型和为中功率消耗者的第二类指令类型。因此,时钟减慢请求信号182a可以请求比信号182b更大的减慢。
在示例性实施例中,对于添加的每个减速水平,可能需要将单独的导线以从处理器核心162路由到时钟块163。在所示实施例中,单独的导线(即182a和182b)被提供给两个减速水平中的每一个。还如关于图1A和图1B所注意的,必须形成用于发送时钟减慢信号的导线,以便最小化延迟,以便满足在指令解码和执行管线阶段之间的时间间隔中发送时钟减慢信号和接收减慢的时钟信号所需的严格时序约束。
对于每个减速水平,来自所有处理器核心162的信号可以与相应的聚合逻辑(例如,聚合时钟请求块183a和183b)聚合。在示例性实施例中,聚合可以包括使输入信号经历逻辑或操作。在一些实施例中,聚合可以包括使处理器核心162组经历确定任何相应组是否超过会触发时钟减慢请求的高噪声的预设阈值。可以基于核心的物理布局、相邻性和/或功率分配网络的其他考虑来预先确定这些组。在一些实施例中,可以基于触发核心和/或组的特性来为时钟减慢请求分配权重。来自每个聚合块的聚合时钟减慢请求信号被提供给时钟逻辑163。
时钟逻辑163可以包括优先编码器190,其接收针对多个减速水平中的每一个的时钟减慢请求,并确保得到的时钟频率188处于最低请求的水平。因此,在优先编码器190和时钟生成器172之间,182a和182b中只有一个是有效的。这对于确保在执行最嘈杂(例如,最大功耗)指令的数据路径中没有失败是重要的。当在核心之间共享时钟生成器时,可以进行该优先级编码以确保在执行最嘈杂指令的数据路径中没有失败。不同时钟生成器之间不需要这种优先级编码。因此,例如,至少一些Nvidia GPU具有GPC,其具有TPC和NAFLL的集合。在一些实施例中,优先级编码可以跨GPC中的TPC,但不跨GPCs,因为每个GPC具有其自己的NAFLL。
在一些实施例中,可以在时钟改变发生的任何时间甚至在减速水平内触发滞后块180(例如,可以启动滞后计数器)。只有在时钟减慢信号无效(de-asserted)时才会触发滞后,以防止频率在频率之间来回切换。
查找表174可以包括每个电压的一个或更多个频率条目。根据其中两个减速水平192和194中的任一个可以被发信号至时钟生成块172的实施例,时钟更新逻辑178和/或时钟生成块172可以访问用于立即转换和长期锁定的频率设置。例如,可以在查找表174中访问每个电压的三个频率条目。对于每个电压电平,可以从查找表获得ndiv、ndiv_offset和dvco_offset,其由NAFLL逻辑196使用来设置时钟频率。ndiv为低噪声指令提供长期频率目标,而(ndiv-ndiv_offset)表示高噪声指令的长期频率目标。dvco_offset提供立即下拉代码,以便将时钟频率从ndiv快速改变为低(ndiv-ndiv_offset)。下面结合图2C更详细地描述时钟频率的改变。
确认信号186也可能需要多于一位以实现减慢切换的平滑处理。多位确认信号186使处理器中的停止逻辑能够正确地处理确认。
基于指令类型的快速时钟减慢方法
图2A示出了根据一些示例性实施例的用于执行快速时钟减慢的过程200。过程200可以由图1A、图1B和图1C中任何一个中所示的处理器和时钟逻辑执行。在某些示例性实施例中,过程200完全以硬件实现。根据示例性实施例,过程200至少部分地由SM(例如,如图4A中所示的)执行。
在操作202处,当在处理器的指令管线(例如,图1A、图1B和图1C中所示的任何处理器)中检测到一个或更多个有噪声指令时,启动过程200。监视指令管线的有噪声指令的类型可以是预定的,并且要么是硬编码的、在一个或更多个寄存器中指定的或在可编程表中指定的。在一个示例性实施例中,测试进入指令管线的每个指令以确定其指令类型是否与一个或更多个预定的指令类型中的任何一个相匹配。
在操作204处,根据被预期为由检测到的指令生成的噪声水平对检测到的一个或更多个指令进行分组。在解码指令管线中的指令之后,可编程分组逻辑使得解码的指令能够与其他类似噪声特性的其他指令一起被分组到一个桶(bucket)(例如,逻辑分组)中。每个指令桶被配置为使时钟减慢信号有效,该信号进入时钟逻辑。
分组的可编程性使得指令能够基于后硅学习从一个桶移动到另一个桶,并且允许指令的前硅功率表征(例如,与各个指令类型相关联的噪声水平的不准确估计)中的任何错误在硅上纠正。例如,在后硅管芯上执行的模拟可以示出特定指令类型的噪声水平不同于与根据前硅估计将特定指令分组到的分组/桶相对应的噪声水平。在这种情况下,分组的可编程性使得特定指令的类型能够基于特定指令的噪声生成特性的前硅估计被重新映射到与其最初映射到的组不同的组。
在操作206处,响应于在操作202处检测到有噪声指令,使时钟减慢请求信号有效。在一些实施例中,时钟减慢信号可包括指定为频率偏移或频率的相关时钟调制或减慢值。可以从与时钟减慢信号相关联的组的映射获得频率偏移或频率的值。在一些实施例中,时钟减慢信号可以包括相关的电压或电压偏移而不是频率或频率偏移。
在操作208处,使分派停止信号有效,以在执行之前停止检测到的指令。分派停止是可选的,并且一些实施例可以从操作206进行到操作210而不执行操作208。例如,在一些实施例中,管线可能不会停止,其中可以可靠地预期可以将时钟频率调整到在时间之间的降低的频率,所述时间是在指令管线的解码阶段和管线的执行阶段期间或结束时,使时钟减慢请求有效的时间。然而,在不能可靠地预期在执行开始之前的时间响应于时钟减慢信号将调整时钟频率的实施例中,可以停止管线,直到所请求的时钟减慢有效。
为了不显著降低性能,从处理器核心(例如,SM)到时钟逻辑的信令应该具有非常低的延迟。必须仔细控制物理设计和信号上的负载,以确保非常低的延迟。理想情况下,延迟足够低,以在信号有效之后,时钟在指令到达执行管线之前减慢,从而允许不间断的指令进度。然而,鉴于芯片的尺寸,这可能并不总是可能的,并且对互锁逻辑的需求也不总是必须的。在一些实施例中,互锁逻辑停止处理器核心中的一个或更多个指令的执行,直到时钟逻辑使确认(ack)时钟已经减慢的信号有效。在确认信号之后,所有停止的处理器核心以交错方式(例如,根据每个核心的软件可配置延迟)被解除停止,以确保电流逐渐爬升并避免di/dt噪声问题。
在操作210处,响应于使时钟减慢请求信号有效,时钟频率被降低。当多个处理器核心由相同的时钟源计时时,由各种处理器核心使之有效的时钟减慢信号在与时钟逻辑接口之前每组被聚合(例如,“或”)。
时钟逻辑包括快速时钟减慢逻辑和滞后逻辑,并且还可以包括优先编码器。另外,由于在一些实施例中,快速时钟减慢与NAFLL时钟逻辑一起工作,所以时钟逻辑包括用于确保NAFLL的锁频环功能可以用快速时钟减慢保持的逻辑。
在可以请求多个时钟减慢水平的一些实施例中,可以使用优先编码器来确保时钟被设置为兑现对应于最高电流指令的最大减慢请求,该最大减慢请求将在由NAFLL计时的任何一个处理核心上执行。在实施例中,其中仅存在一个减慢水平(除了正常或全速操作频率之外),可以不需要优先编码器。
在一些实施例中,每个时钟减慢信号具有与其相关联的可编程减慢值。当信号有效时,通过NAFLL内部的快速减慢机制,在预定的少量时钟周期内,频率被减少相关的减慢量(在优先编码器之后)。根据一个实施例,预定的少量周期是1。
在一些示例性实施例中,NAFLL内部的时钟生成是通过由可调谐并行驱动器制成的DVCO。在常规操作中,DVCO的多个并行驱动器被调谐,直到频率匹配NAFLL的期望频率。然而,从一种状态到另一种状态的典型频率转换是在小的调谐变化中完成的并且需要多个微秒。在示例性实施例中,采用通过边带(side-band)控制的快速调谐改变机制来在一个时钟周期内改变频率。在一些实施例中,DVCO可以包括输入(例如,offset_enable)以在短持续时间内(例如,一个或两个时钟周期)将并行驱动器的数量立即减少(以减少频率)某预设量(例如,偏移)。解码器逻辑可以包括在DVCO内,其仅在由DVCO的输入指示时应用指定的偏移(例如,offset_enable=1)。这种快速偏移机制不同于DVCO的主要调谐机制。预设的偏移量可以是工作电压的函数。该低延迟频率改变机制有助于满足示例性实施例的严格时序要求。
另外,与时钟减慢技术(诸如LDIV或时钟跳过)相反,在一些示例性实施例中采用的快速调谐改变机制可以在保持所有周期的占空比的同时将时钟频率减慢小百分比(例如,2%,4%等)。
滞后逻辑用于确保NAFLL不在减慢模式之间频繁地切换,所述切换可导致NAFLL的频率锁定的不稳定性。从较小的减慢模式切换到较大的减慢模式快速发生。滞后可能仅适用于从较大的减慢到较小的减慢,或当减慢被解除时。
接合和脱离各种减慢的同时,还可以需要额外的逻辑来保持NAFLL的锁频环功能。在一些实施例中,两个VF曲线“全速”和“减慢”在硅上单独表征,每个表示其指令适应的工作负载的最大频率(Fmax)。针对当前电压,这些频率目标被提供给NAFLL的锁频环。可调谐误差累加器可用于将NAFLL的可调谐DVCO保持锁定到目标频率——通常为“全速”频率。
当进入减慢状态时,NAFLL的控制回路可以暂时停止跟踪目标“全速”频率并立即应用其快速减慢机制来降低频率并允许执行减慢指令。然后,在假设快速减慢机制可具有额外的余量以考虑PVT(过程电压温度)变化或减少表征努力的情况下,它将尝试缓慢地重新锁定到“减慢”频率。
当滞后窗口已经期满之后离开减慢状态时,NAFLL可以再次暂停目标频率跟踪。内部定序器可以可选地应用静态、瞬态、负频率偏移,以降低后面过冲的风险(例如,由于PVT变化或表征不确定性)。然后它可以脱离快速减慢机制,将频率恢复到小于或等于原始“全速”频率。最后,它将其长期锁定目标移动到“全速”频率,这将逐渐将频率恢复到预减慢频率。图2C示出了当快速减慢机制脱离时时钟频率的行为。
在操作212处,在一些实施例中,时钟减慢确认信号由时钟逻辑使之有效。一旦启动减慢,就可以将确认发送到处理器核心,在时钟减慢的环延迟很大的情况下,可以使用该确认来解除指令执行的停止。
在处理器核心和时钟逻辑协同工作的情况下,可以根据指令类型快速调制时钟频率,从而允许不同功率的指令以它们各自的最佳频率执行。
在操作214处,响应于时钟减慢确认信号,指令执行未被停止,并且指令被分派用于执行。在指令管线已经停止的情况下,则在接收到确认信号时,检测到的指令可以被分派以在数据路径中执行。如上所述,指令执行包括激活数据路径以执行指令。
在操作216处,以降低的时钟频率执行一个或更多个有噪声指令。换句话说,由处理器资源(例如,在数据路径中)执行一个或更多个有噪声指令,其中时钟频率被设置为用于有噪声指令的最大频率。
在操作218处,使时钟减慢请求信号无效。可以在未停止指令管线之前或之后执行无效。在一些实施例中,使之无效可以基于在时钟减慢请求信号有效时设置的定时器的期满。关于图2D提供了基于时钟减慢请求信号的无效的两个示例性技术的描述。
在以降低的频率完成一个或更多个指令的执行之后,在操作220处,恢复时钟频率。换句话说,时钟频率恢复到正常指令(即,不是有噪声指令的指令)的最大频率。时钟频率恢复的一个示例如图2C所示。
基于指令类型的快速时钟减慢的信令
图2B是示出根据一些示例性实施例的、可以在快速时钟减慢中使用的时钟减慢请求信号222和相应的确认信号224的时序图。时序图示出了随着时间的推移从左到右的每个信号的有效和无效。代表性曲线的上升边缘指示信号的有效,代表性曲线的下降边缘指示无效。
如上所述,当在指令的解码期间检测到指令属于受监控的一个或更多个指令类型时,由与处理电路(例如,指令管线108、134和164)相关联的指令管线使信号222有效。可以在电源轨中引起大量噪声的受监控指令的一个示例是矩阵乘法指令。
响应于请求信号202,由时钟逻辑使信号224有效。在一些实施例中,在时钟逻辑已将时钟设置为目标降低的频率之后,使确认信号224有效。在一些实施例中,可以在将时钟改变为目标降低的频率之前或期间立即使确认信号224有效。
如图所示,在一些实施例中,甚至在指令管线和/或处理逻辑处接收到确认信号224并且分派检测到的高功率指令以供执行之后,时钟减慢请求信号222仍可保持有效。在检测到的高功率指令已经完成执行之后,指令管线和/或处理逻辑可以使请求信号222无效。
在一些实施例中,确认信号224可以保持有效,直到请求信号无效为止。例如,时钟逻辑可以在确定请求信号222已被无效之后使确认信号224无效。
图2C示出了根据一些示例性实施例的、在执行快速时钟减慢时时钟频率228随时间的变化。y轴表示时钟频率,x轴表示时间。该图示出了在诸如图1A、图1B或图1C所示的系统中与时钟减慢请求信号226相关的时钟频率228的示例性变化。
在所示的示例性实施例中,时钟可被配置以在两个频率中的任一个下工作:用于非有噪声(例如,非高功率)指令的最大频率(例如,在关于图1B描述的示例中涉及的F非高功率指令230或“全速”),或者用于有噪声(例如,高功率)指令的最大频率(例如,在关于图1B描述的示例中涉及的F高功率指令232或“减慢”)。如图所示,用于非有噪声指令的最大频率可以比用于高功率指令的最大频率更快。
示例性实施例的主要优点在于,由于与噪声相关的余量要求,它减少了处理器必须以较低频率(例如,“减慢”频率)操作期间的时间。更具体地,示例性实施例提供仅在执行某些指令的持续时间内以降低的频率操作,这些指令可能导致噪声影响,该噪声影响大到足以引起电路上的电压下降。
因此,在大多数时间期望处理器将以频率230操作。当指令管线和/或处理逻辑检测到被监视指令的解码时,则如上所述,接下来,使时钟减慢请求信号226有效。时钟减慢请求信号226可以保持有效,直到检测到的指令已经完成执行和/或直到预定的间隔到期为止。时钟逻辑被配置为在其接收到时钟减慢请求信号226时降低时钟频率228。
如图所示(参见时钟频率228中最左侧的急剧下降),当其接收到时钟减慢请求信号226时,时钟逻辑可以快速地将时钟减慢到目标降低的频率232。在一些实施例中,时钟逻辑可以将初始下降设置为比目标频率更大的下降。通过在目标降低的频率232之下前进的时钟频率228的下降来示出该下降。在快速下降之后,时钟频率208逐渐前进到目标降低的频率232。
可以通过参考查找表以确定新频率,然后立即将时钟源设置为新的工作频率,来执行快速减慢。在一些实施例中,在时钟逻辑接收到时钟减慢请求信号226之后,新频率在一个时钟周期中变得有效。
在时钟减慢请求信号226被无效之后,时钟逻辑可以将现在处于降低的频率232的时钟频率228恢复回到更高的频率230。可以通过在恢复较高频率之前将频率暂时降低到较低频率234来启动恢复。在一些示例性实施例中,降低到较低频率234可以是必要的,以便适应过冲。
如在频率曲线228中可以注意到的,与恢复过程中频率的逐渐增加相比,到目标较低频率232的下降是急剧下降。如上所述,需要在解码和向数据路径分派指令之间快速实现时钟减慢,必须尽快使减慢立即生效。然而,恢复经历滞后过程,从而可以避免频率230和232之间的振荡。
图2D示出了根据一些示例性实施例的示出在快速时钟减慢和停止释放期间停止执行指令的时序图。该图示出了与有噪声指令的检测和时钟减慢请求信号240、相应的减慢确认信号242、根据一些实施例的停止信号244、以及根据一些其他实施例的替代停止信号246的有效相关联的定时。
关于两个停止信号244和246,如图所示,它们在减慢请求信号240的上升边缘(或在减慢请求信号240开始之后不久)有效。然而,当一个实施例中的停止信号244在确认信号242有效时被无效,而另一个实施例中由可编程定时器控制的停止信号246可以在不等待确认信号的情况下被无效。例如,可以在预定的持续时间之后使可编程定时器无效。可以根据后硅模拟来编程持续时间。
尽管可以在处理单元和某些硬件组件的上下文中描述图1A、图1B和图1C的系统中所示的快速时钟减慢以及关于图2A描述的过程,但是也可以由定制电路、或由CPU、GPU、定制电路和/或程序的组合执行这些系统和过程。本领域普通技术人员将理解,执行例如方法200的任何系统都在本发明的实施例的范围和精神内。
使用快速时钟减慢的并行处理架构
现在将根据用户的期望,阐述关于可以实现前述框架的各种可选架构和特征的更多说明性信息。应该特别注意的是,出于说明性目的阐述了以下信息,并且不应该被解释为以任何方式进行限制。任选的以下特征可以任选地并入或不排除所描述的其他特征。
图3示出了根据一个实施例的并行处理单元(PPU)300。在一个实施例中,PPU 300是在一个或更多个集成电路器件上实现的多线程处理器。PPU 300是设计用于并行处理许多线程的延迟隐藏体系架构。线程(即,执行线程)是被配置为由PPU 300执行的指令集的实例。在一个实施例中,PPU 300是图形处理单元(GPU),其被配置为实现用于处理三维(3D)图形数据的图形渲染管线,以便生成用于在显示装置(诸如液晶显示(LCD)设备)上显示的二维(2D)图像数据。在其他实施例中,PPU 300可以用于执行通用计算。尽管为了说明的目的本文提供了一个示例性并行处理器,但应特别指出的是,该处理器仅出于说明目的进行阐述,并且可使用任何处理器来补充和/或替代该处理器。
一个或更多个PPU 300可以被配置为加速数千个高性能计算(HPC)、数据中心和机器学习应用。PPU 300可被配置为加速众多深度学习系统和应用,包括自动驾驶汽车平台、深度学习、高精度语音、图像和文本识别系统、智能视频分析、分子模拟、药物研发、疾病诊断、天气预报、大数据分析、天文学、分子动力学模拟、金融建模、机器人技术、工厂自动化、实时语言翻译、在线搜索优化和个性化用户推荐,等等。
如图3所示,PPU 300包括输入/输出(I/O)单元305、前端单元315、调度器单元320、工作分配单元325、集线器330、交叉开关(Xbar)370、一个或更多个通用处理集群(GPC)350以及一个或更多个分区单元380。PPU 300可以经由一个或更多个高速NVLink 310互连连接到主机处理器或其他PPU 300。PPU 300可以经由互连302连接到主机处理器或其他外围设备。PPU 300还可以连接到包括多个存储器设备304的本地存储器。在一个实施例中,本地存储器可以包括多个动态随机存取存储器(DRAM)设备。DRAM设备可以被配置为高带宽存储器(HBM)子系统,其中多个DRAM裸晶(die)堆叠在每个设备内。
NVLink 310互连使得系统能够扩展并且包括与一个或更多个CPU结合的一个或更多个PPU 300,支持PPU 300和CPU之间的高速缓存一致性,以及CPU主控。数据和/或命令可以由NVLink 310通过集线器330发送到PPU 300的其他单元或从其发送,例如一个或更多个复制引擎、视频编码器、视频解码器、电源管理单元等(未明确示出)。结合图5B更详细地描述NVLink 310。
I/O单元305被配置为通过互连302从主机处理器(未示出)发送和接收通信(例如,命令、数据等)。I/O单元305可以经由互连302直接与主机处理器通信,或通过一个或更多个中间设备(诸如内存桥)与主机处理器通信。在一个实施例中,I/O单元305可以经由互连302与一个或更多个其他处理器(例如,一个或更多个PPU 300)通信。在一个实施例中,I/O单元305实现外围组件互连高速(PCIe)接口,用于通过PCIe总线进行通信,并且互连302是PCIe总线。在替代的实施例中,I/O单元305可以实现其他类型的已知接口,用于与外部设备进行通信。
I/O单元305对经由互连302接收的数据包进行解码。在一个实施例中,数据包表示被配置为使PPU 300执行各种操作的命令。I/O单元305按照命令指定将解码的命令发送到PPU 300的各种其他单元。例如,一些命令可以被发送到前端单元315。其他命令可以被发送到集线器330或PPU 300的其他单元,诸如一个或更多个复制引擎、视频编码器、视频解码器、电源管理单元等(未明确示出)。换句话说,I/O单元305被配置为在PPU 300的各种逻辑单元之间和之中路由通信。
在一个实施例中,由主机处理器执行的程序在缓冲区中对命令流进行编码,该缓冲区向PPU 300提供工作量用于处理。工作量可以包括要由那些指令处理的许多指令和数据。缓冲区是存储器中可由主机处理器和PPU 300两者访问(例如,读/写)的区域。例如,I/O单元305可以被配置为经由通过互连302传输的存储器请求访问连接到互连302的系统存储器中的缓冲区。在一个实施例中,主机处理器将命令流写入缓冲区,然后向PPU 300发送指向命令流开始的指针。前端单元315接收指向一个或更多个命令流的指针。前端单元315管理一个或更多个流,从流读取命令并将命令转发到PPU 300的各个单元。
前端单元315耦合到调度器单元320,其配置各种GPC 350以处理由一个或更多个流定义的任务。调度器单元320被配置为跟踪与由调度器单元320管理的各种任务相关的状态信息。状态可以指示任务被指派给哪个GPC 350,该任务是活动的还是不活动的,与该任务相关联的优先级等等。调度器单元320管理一个或更多个GPC 350上的多个任务的执行。
调度器单元320耦合到工作分配单元325,其被配置为分派任务以在GPC 350上执行。工作分配单元325可以跟踪从调度器单元320接收到的若干调度的任务。在一个实施例中,工作分配单元325为每个GPC 350管理待处理(pending)任务池和活动任务池。待处理任务池可以包括若干时隙(例如,32个时隙),其包含被指派为由特定GPC 350处理的任务。活动任务池可以包括若干时隙(例如,4个时隙),用于正在由GPC 350主动处理的任务。当GPC350完成任务的执行时,该任务从GPC 350的活动任务池中逐出,并且来自待处理任务池的其他任务之一被选择和调度以在GPC 350上执行。如果GPC 350上的活动任务已经空闲,例如在等待数据依赖性被解决时,那么活动任务可以从GPC 350中逐出并返回到待处理任务池,而待处理任务池中的另一个任务被选择并调度以在GPC 350上执行。
工作分配单元325经由XBar(交叉开关)370与一个或更多个GPC 350通信。XBar370是将PPU 300的许多单元耦合到PPU 300的其他单元的互连网络。例如,XBar 370可以被配置为将工作分配单元325耦合到特定的GPC 350。虽然没有明确示出,但PPU 300的一个或更多个其他单元也可以经由集线器330连接到XBar 370。
任务由调度器单元320管理并由工作分配单元325分派给GPC 350。GPC 350被配置为处理任务并生成结果。结果可以由GPC 350内的其他任务消耗,经由XBar 370路由到不同的GPC 350,或者存储在存储器304中。结果可以经由分区单元380写入存储器304,分区单元380实现用于从存储器304读取数据和向存储器304写入数据的存储器接口。结果可以通过NVLink310发送到另一个PPU 304或CPU。在一个实施例中,PPU 300包括数目为U的分区单元380,其等于耦合到PPU 300的独立且不同的存储器设备304的数目。下面将结合图4B更详细地描述分区单元380。
在一个实施例中,主机处理器执行实现应用程序编程接口(API)的驱动程序内核,其使得能够在主机处理器上执行一个或更多个应用程序以调度操作用于在PPU 300上执行。在一个实施例中,多个计算应用由PPU 300同时执行,并且PPU 300为多个计算应用程序提供隔离、服务质量(QoS)和独立地址空间。应用程序可以生成指令(例如,API调用),其使得驱动程序内核生成一个或更多个任务以由PPU 300执行。驱动程序内核将任务输出到正在由PPU 300处理的一个或更多个流。每个任务可以包括一个或更多个相关线程组,本文称为线程束(warp)。在一个实施例中,线程束包括可以并行执行的32个相关线程。协作线程可以指代包括执行任务的指令并且可以通过共享存储器交换数据的多个线程。结合图5A更详细地描述线程和协作线程。
图4A示出了根据一个实施例的图3的PPU 300的GPC 350。如图4A所示,每个GPC350包括用于处理任务的多个硬件单元。在一个实施例中,每个GPC 350包括管线管理器410、预光栅操作单元(PROP)415、光栅引擎425、工作分配交叉开关(WDX)480、存储器管理单元(MMU)490以及一个或更多个数据处理集群(DPC)420。应当理解,图4A的GPC 350可以包括代替图4A中所示单元的其他硬件单元或除图4A中所示单元之外的其他硬件单元。
在一个实施例中,GPC 350的操作由管线管理器410控制。管线管理器410管理用于处理分配给GPC 350的任务的一个或更多个DPC 420的配置。在一个实施例中,管线管理器410可以配置一个或更多个DPC 420中的至少一个来实现图形渲染管线的至少一部分。例如,DPC 420可以被配置为在可编程流式多处理器(SM)440上执行顶点着色程序。管线管理器410还可以被配置为将从工作分配单元325接收的数据包路由到GPC 350中适当的逻辑单元。例如,一些数据包可以被路由到PROP 415和/或光栅引擎425中的固定功能硬件单元,而其他数据包可以被路由到DPC 420以供图元引擎435或SM 440处理。在一个实施例中,管线管理器410可以配置一个或更多个DPC 420中的至少一个以实现神经网络模型和/或计算管线。
PROP单元415被配置为将由光栅引擎425和DPC 420生成的数据路由到光栅操作(ROP)单元,结合图4B更详细地描述。PROP单元415还可以被配置为执行颜色混合的优化,组织像素数据,执行地址转换等。
光栅引擎425包括被配置为执行各种光栅操作的若干固定功能硬件单元。在一个实施例中,光栅引擎425包括设置引擎、粗光栅引擎、剔除引擎、裁剪引擎、精细光栅引擎和瓦片聚合引擎。设置引擎接收变换后的顶点并生成与由顶点定义的几何图元关联的平面方程。平面方程被发送到粗光栅引擎以生成图元的覆盖信息(例如,瓦片的x、y覆盖掩码)。粗光栅引擎的输出被发送到剔除引擎,其中与未通过z-测试的图元相关联的片段被剔除,并且未剔除的片段被发送到裁剪引擎,其中位于视锥体之外的片段被裁剪掉。那些经过裁剪和剔除后留下来的片段可以被传递到精细光栅引擎,以基于由设置引擎生成的平面方程生成像素片段的属性。光栅引擎425的输出包括例如要由在DPC 420内实现的片段着色器处理的片段。
包括在GPC 350中的每个DPC 420包括M管线控制器(MPC)430、图元引擎435和一个或更多个SM 440。MPC 430控制DPC 420的操作,将从管线管理器410接收到的数据包路由到DPC 420中的适当单元。例如,与顶点相关联的数据包可以被路由到图元引擎435,图元引擎435被配置为从存储器304提取与顶点相关联的顶点属性。相反,与着色程序相关联的数据包可以被发送到SM 440。
SM 440包括被配置为处理由多个线程表示的任务的可编程流式处理器。每个SM440是多线程的并且被配置为同时执行来自特定线程组的多个线程(例如,32个线程)。在一个实施例中,SM 440实现SIMD(单指令、多数据)体系架构,其中线程组(例如,warp)中的每个线程被配置为基于相同的指令集来处理不同的数据集。线程组中的所有线程都执行相同的指令。在另一个实施例中,SM 440实现SIMT(单指令、多线程)体系架构,其中线程组中的每个线程被配置为基于相同的指令集处理不同的数据集,但是其中线程组中的各个线程在执行期间被允许发散。在一个实施例中,为每个线程束维护程序计数器、调用栈和执行状态,当线程束内的线程发散时,使线程束和线程束中的串行执行之间的并发成为可能。在另一个实施例中,为每个单独的线程维护程序计数器、调用栈和执行状态,从而在线程束内和线程束之间的所有线程之间实现相等的并发。当为每个单独的线程维护执行状态时,执行相同指令的线程可以被收敛并且并行执行以获得最大效率。下面结合图5A更详细地描述SM440。
MMU 490提供GPC 350和分区单元380之间的接口。MMU 490可以提供虚拟地址到物理地址的转换、存储器保护以及存储器请求的仲裁。在一个实施例中,MMU 490提供用于执行从虚拟地址到存储器304中的物理地址的转换的一个或更多个转换后备缓冲器(TLB)。
图4B示出了根据一个实施例的图3的PPU 300的存储器分区单元380。如图4B所示,存储器分区单元380包括光栅操作(ROP)单元450、二级(L2)高速缓存460和存储器接口470。存储器接口470耦合到存储器304。存储器接口470可以实现用于高速数据传输的32、64、128、1024位数据总线等。在一个实施例中,PPU 300合并了U个存储器接口470,每对分区单元380有一个存储器接口470,其中每对分区单元380连接到对应的存储器设备304。例如,PPU 300可以连接到多达Y个存储器设备304,诸如高带宽存储器堆叠或图形双数据速率版本5的同步动态随机存取存储器或其他类型的持久存储器。
在一个实施例中,存储器接口470实现HBM2存储器接口,并且Y等于U的一半。在一个实施例中,HBM2存储器堆叠位于与PPU 300相同的物理封装上,提供与常规GDDR5 SDRAM系统相比显著的功率高和面积节约。在一个实施例中,每个HBM2堆叠包括四个存储器裸晶并且Y等于4,其中HBM2堆叠包括每个裸晶两个128位通道,总共8个通道和1024位的数据总线宽度。
在一个实施例中,存储器304支持单错校正双错检测(SECDED)纠错码(ECC)以保护数据。对于对数据损毁敏感的计算应用程序,ECC提供了更高的可靠性。在大型集群计算环境中,PPU 300处理非常大的数据集和/或长时间运行应用程序,可靠性尤其重要。
在一个实施例中,PPU 300实现多级存储器层次。在一个实施例中,存储器分区单元380支持统一存储器以为CPU和PPU 300存储器提供单个统一的虚拟地址空间,使得虚拟存储器系统之间的数据能够共享。在一个实施例中,跟踪PPU 300对位于其他处理器上的存储器的访问频率,以确保存储器页面被移动到更频繁地访问该页面的PPU 300的物理存储器。在一个实施例中,NVLink 310支持地址转换服务,其允许PPU 300直接访问CPU的页表并且提供由PPU 300对CPU存储器的完全访问。
在一个实施例中,复制引擎在多个PPU 300之间或在PPU 300与CPU之间传输数据。复制引擎可以为未映射到页表的地址生成页面错误。然后,存储器分区单元380可以服务页面错误,将地址映射到页表中,之后复制引擎可以执行传输。在常规系统中,针对多个处理器之间的多个复制引擎操作固定存储器(例如,不可分页),其显著减少了可用存储器。由于硬件分页错误,地址可以传递到复制引擎而不用担心存储器页面是否驻留,并且复制过程是否透明。
来自存储器304或其他系统存储器的数据可以由存储器分区单元380取回并存储在L2高速缓存460中,L2高速缓存460位于芯片上并且在各个GPC 350之间共享。如图所示,每个存储器分区单元380包括与对应的存储器设备304相关联的L2高速缓存460的一部分。然后可以在GPC 350内的多个单元中实现较低级高速缓存。例如,每个SM 440可以实现一级(L1)高速缓存。L1高速缓存是专用于特定SM 440的专用存储器。来自L2高速缓存460的数据可以被获取并存储在每个L1高速缓存中,以在SM 440的功能单元中进行处理。L2高速缓存460被耦合到存储器接口470和XBar 370。
ROP单元450执行与诸如颜色压缩、像素混合等像素颜色相关的图形光栅操作。ROP单元450还与光栅引擎425一起实现深度测试,从光栅引擎425的剔除引擎接收与像素片段相关联的样本位置的深度。测试与片段关联的样本位置相对于深度缓冲区中的对应深度的深度。如果片段通过样本位置的深度测试,则ROP单元450更新深度缓冲区并将深度测试的结果发送给光栅引擎425。将理解的是,分区单元380的数量可以不同于GPC 350的数量,并且因此每个ROP单元450可以耦合到每个GPC 350。ROP单元450跟踪从不同GPC 350接收到的数据包并且确定由ROP单元450生成的结果通过Xbar 370被路由到哪个GPC 350。尽管在图4B中ROP单元450被包括在存储器分区单元380内,但是在其他实施例中,ROP单元450可以在存储器分区单元380之外。例如,ROP单元450可以驻留在GPC 350或另一个单元中。
图5A示出了根据一个实施例的图4A的流式多处理器440。如图5A所示,SM 440包括指令高速缓存505、一个或更多个调度器单元510、寄存器文件520、一个或更多个处理核心550、一个或更多个特殊功能单元(SFU)552、一个或更多个加载/存储单元(LSU)554、互连网络580、共享存储器/L1高速缓存570。
如上所述,工作分配单元325调度任务以在PPU 300的GPC 350上执行。任务被分配给GPC 350内的特定DPC 420,并且如果该任务与着色器程序相关联,则该任务可以被分配给SM 440。调度器单元510接收来自工作分配单元325的任务并且管理指派给SM 440的一个或更多个线程块的指令调度。调度器单元510调度线程块以作为并行线程的线程束执行,其中每个线程块被分配至少一个线程束。在一个实施例中,每个线程束执行32个线程。调度器单元510可以管理多个不同的线程块,将线程束分配给不同的线程块,然后在每个时钟周期期间将来自多个不同的协作组的指令分派到各个功能单元(即,核心550、SFU 552和LSU554)。
协作组是用于组织通信线程组的编程模型,其允许开发者表达线程正在进行通信所采用的粒度,使得能够表达更丰富、更高效的并行分解。协作启动API支持线程块之间的同步性,以执行并行算法。常规的编程模型为同步协作线程提供了单一的简单结构:跨线程块的所有线程的栅栏(barrier)(例如,syncthreads()函数)。然而,程序员通常希望以小于线程块粒度的粒度定义线程组,并在所定义的组内同步,以集体的全组功能接口(collective group-wide function interface)的形式使能更高的性能、设计灵活性和软件重用。
协作组使得程序员能够在子块(例如,像单个线程一样小)和多块粒度处明确定义线程组并且执行集体操作,诸如协作组中的线程上的同步性。编程模型支持跨软件边界的干净组合,以便库和效用函数可以在他们本地环境中安全地同步,而无需对收敛进行假设。协作组图元启用合作并行的新模式,包括生产者-消费者并行、机会主义并行以及跨整个线程块网格的全局同步。
分派单元515被配置为向一个或更多个功能单元传送指令。在该实施例中,调度器单元510包括两个分派单元515,其使得能够在每个时钟周期期间调度来自相同线程束的两个不同指令。在替代实施例中,每个调度器单元510可以包括单个分派单元515或附加分派单元515。
每个SM 440包括寄存器文件520,其提供用于SM 440的功能单元的一组寄存器。在一个实施例中,寄存器文件520在每个功能单元之间被划分,使得每个功能单元被分配寄存器文件520的专用部分。在另一个实施例中,寄存器文件520在由SM 440执行的不同线程束之间被划分。寄存器文件520为连接到功能单元的数据路径的操作数提供临时存储器。
每个SM 440包括L个处理核心550。在一个实施例中,SM 440包括大量(例如128个等)不同的处理核心550。每个核心550可以包括完全管线化的、单精度、双精度和/或混合精度处理单元,其包括浮点运算逻辑单元和整数运算逻辑单元。在一个实施例中,浮点运算逻辑单元实现用于浮点运算的IEEE 754-2008标准。在一个实施例中,核心550包括64个单精度(32位)浮点核心、64个整数核心、32个双精度(64位)浮点核心和8个张量核心(tensorcore)。
张量核心被配置为执行矩阵运算,并且在一个实施例中,一个或更多个张量核心被包括在核心550中。具体地,张量核心被配置为执行深度学习矩阵运算,诸如用于神经网络训练和推理的卷积运算。在一个实施例中,每个张量核心在4×4矩阵上运算并且执行矩阵乘法和累加运算D=A×B+C,其中A、B、C和D是4×4矩阵。
在一个实施例中,矩阵乘法输入A和B是16位浮点矩阵,而累加矩阵C和D可以是16位浮点或32位浮点矩阵。张量核心在16位浮点输入数据以及32位浮点累加上运算。16位浮点乘法需要64次运算,产生全精度的积,然后使用32位浮点与4×4×4矩阵乘法的其他中间积相加来累加。在实践中,张量核心用于执行由这些较小的元素建立的更大的二维或更高维的矩阵运算。API(诸如CUDA 9 C++API)公开了专门的矩阵加载、矩阵乘法和累加以及矩阵存储运算,以便有效地使用来自CUDA-C++程序的张量核心。在CUDA层面,线程束级接口假定16×16尺寸矩阵跨越线程束的全部32个线程。
每个SM 440还包括执行特殊函数(例如,属性评估、倒数平方根等)的M个SFU 552。在一个实施例中,SFU 552可以包括树遍历单元,其被配置为遍历分层树数据结构。在一个实施例中,SFU 552可以包括被配置为执行纹理图过滤操作的纹理单元。在一个实施例中,纹理单元被配置为从存储器304加载纹理图(例如,纹理像素的2D阵列)并且对纹理图进行采样以产生经采样的纹理值,用于在由SM 440执行的着色器程序中使用。在一个实施例中,纹理图被存储在共享存储器/L1高速缓存470中。纹理单元实现纹理操作,诸如使用mip图(即,不同细节层次的纹理图)的过滤操作。在一个实施例中,每个SM 440包括两个纹理单元。
每个SM 440还包括N个LSU 554,其实现共享存储器/L1高速缓存570和寄存器文件520之间的加载和存储操作。每个SM 440包括将每个功能单元连接到寄存器文件520以及将LSU 554连接到寄存器文件520、共享存储器/L1高速缓存570的互连网络580。在一个实施例中,互连网络580是交叉开关,其可以被配置为将任何功能单元连接到寄存器文件520中的任何寄存器,以及将LSU 554连接到寄存器文件和共享存储器/L1高速缓存570中的存储器位置。
共享存储器/L1高速缓存570是片上存储器阵列,其允许数据存储和SM 440与图元引擎435之间以及SM 440中的线程之间的通信。在一个实施例中,共享存储器/L1高速缓存570包括128KB的存储容量并且在从SM 440到分区单元380的路径中。共享存储器/L1高速缓存570可以用于高速缓存读取和写入。共享存储器/L1高速缓存570、L2高速缓存460和存储器304中的一个或更多个是后备存储。
将数据高速缓存和共享存储器功能组合成单个存储器块为两种类型的存储器访问提供最佳的总体性能。该容量可由程序用作不使用共享存储器的高速缓存。例如,如果将共享存储器配置为使用一半容量,则纹理和加载/存储操作可以使用剩余容量。在共享存储器/L1高速缓存570内的集成使共享存储器/L1高速缓存570起到用于流式传输数据的高吞吐量管线的作用,并且同时提供对频繁重用数据的高带宽和低延迟的访问。
当被配置用于通用并行计算时,与图形处理相比,可以使用更简单的配置。具体地,图3所示的固定功能图形处理单元被绕过,创建了更简单的编程模型。在通用并行计算配置中,工作分配单元325将线程块直接指派并分配给DPC 420。块中的线程执行相同的程序,使用计算中的唯一线程ID来确保每个线程生成唯一结果,使用SM 440执行程序并执行计算,使用共享存储器/L1高速缓存570以在线程之间通信,以及使用LSU 554通过共享存储器/L1高速缓存570和存储器分区单元380读取和写入全局存储器。当被配置用于通用并行计算时,SM 440还可以写入调度器单元320可用来在DPC 420上启动新工作的命令。
PPU 300可以被包括在台式计算机、膝上型计算机、平板电脑、服务器、超级计算机、智能电话(例如,无线、手持设备)、个人数字助理(PDA)、数码相机、运载工具、头戴式显示器、手持式电子设备等中。在一个实施例中,PPU 300包含在单个半导体衬底上。在另一个实施例中,PPU 300与一个或更多个其他器件(诸如附加PPU 300、存储器304、精简指令集计算机(RISC)CPU、存储器管理单元(MMU)、数字-模拟转换器(DAC)等)一起被包括在片上系统(SoC)上。
在一个实施例中,PPU 300可以被包括在图形卡上,图形卡包括一个或更多个存储器设备304。图形卡可以被配置为与台式计算机的主板上的PCIe插槽接口。在又一个实施例中,PPU 300可以是包含在主板的芯片集中的集成图形处理单元(iGPU)或并行处理器。
示例性计算系统
具有多个GPU和CPU的系统被用于各种行业,因为开发者在应用(诸如人工智能计算)中暴露和利用更多的并行性。在数据中心、研究机构和超级计算机中部署具有数十至数千个计算节点的高性能GPU加速系统,以解决更大的问题。随着高性能系统内处理设备数量的增加,通信和数据传输机制需要扩展以支持该增加带宽。
图5B是根据一个实施例的使用图3的PPU 300实现的处理系统500的概念图。示例性系统500可以被配置为实现图2A中所示的方法200。处理系统500包括CPU 530、交换机555和多个PPU 300中的每一个以及相应的存储器304。NVLink 310提供每个PPU 300之间的高速通信链路。尽管图5B中示出了特定数量的NVLink 310和互连302连接,但是连接到每个PPU 300和CPU 530的连接的数量可以改变。交换机555在互连302和CPU 530之间接口。PPU300、存储器304和NVLink 310可以位于单个半导体平台上以形成并行处理模块525。在一个实施例中,交换机555支持两个或更多个在各种不同连接和/或链路之间接口的协议。
在另一个实施例(未示出)中,NVLink 310在每个PPU 300和CPU 530之间提供一个或更多个高速通信链路,并且交换机555在互连302和每个PPU 300之间进行接口。PPU 300、存储器304和互连302可以位于单个半导体平台上以形成并行处理模块525。在又一个实施例(未示出)中,互连302在每个PPU 300和CPU 530之间提供一个或更多个通信链路,并且交换机555使用NVLink 310在每个PPU 300之间进行接口,以在PPU 300之间提供一个或更多个高速通信链路。在另一个实施例(未示出)中,NVLink 310在PPU 300和CPU 530之间通过交换机555提供一个或更多个高速通信链路。在又一个实施例(未示出)中,互连302在每个PPU 300之间直接地提供一个或更多个通信链路。可以使用与NVLink 310相同的协议将一个或更多个NVLink 310高速通信链路实现为物理NVLink互连或者片上或裸晶上互连。
在本说明书的上下文中,单个半导体平台可以指在裸晶或芯片上制造的唯一的单一的基于半导体的集成电路。应该注意的是,术语单个半导体平台也可以指具有增加的连接的多芯片模块,其模拟片上操作并通过利用常规总线实现方式进行实质性改进。当然,根据用户的需要,各种电路或器件还可以分开放置或以半导体平台的各种组合来放置。可选地,并行处理模块525可以被实现为电路板衬底,并且PPU 300和/或存储器304中的每一个可以是封装器件。在一个实施例中,CPU 530、交换机555和并行处理模块525位于单个半导体平台上。
在一个实施例中,每个NVLink 310的信令速率是20到25千兆位/秒,并且每个PPU300包括六个NVLink 310接口(如图5B所示,每个PPU 300包括五个NVLink 310接口)。每个NVLink 310在每个方向上提供25千兆位/秒的数据传输速率,其中六条链路提供300千兆位/秒。当CPU 530还包括一个或更多个NVLink 310接口时,NVLink 310可专门用于如图5B所示的PPU到PPU通信,或者PPU到PPU以及PPU到CPU的某种组合。
在一个实施例中,NVLink 310允许从CPU 530到每个PPU 300的存储器304的直接加载/存储/原子访问。在一个实施例中,NVLink 310支持一致性操作,允许从存储器304读取的数据被存储在CPU 530的高速缓存分层结构中,减少了CPU 530的高速缓存访问延迟。在一个实施例中,NVLink 310包括对地址转换服务(ATS)的支持,允许PPU 300直接访问CPU530内的页表。一个或更多个NVLink 310还可以被配置为以低功率模式操作。
图5C示出了示例性系统565,其中可以实现各种先前实施例的各种体系架构和/或功能。示例性系统565可以被配置为实现图2A中所示的方法200。
如图所示,提供系统565,其包括连接到通信总线575的至少一个中央处理单元530。通信总线575可以使用任何合适的协议来实现,诸如PCI(外围组件互连)、PCI-Express、AGP(加速图形端口)、超传输或任何其他总线或一个或更多个点对点通信协议。系统565还包括主存储器540。控制逻辑(软件)和数据被存储在主存储器540中,主存储器540可以采取随机存取存储器(RAM)的形式。
系统565还包括输入设备560、并行处理系统525和显示设备545,例如常规CRT(阴极射线管)、LCD(液晶显示器)、LED(发光二极管)、等离子显示器等。可以从输入设备560(例如键盘、鼠标、触摸板、麦克风等)接收用户输入。前述模块和/或设备中的每一个甚至可以位于单个半导体平台上以形成系统565。可选地,根据用户的需要,各个模块还可以分开放置或以半导体平台的各种组合来放置。
此外,系统565可以出于通信目的通过网络接口535耦合到网络(例如,电信网络、局域网(LAN)、无线网络、广域网(WAN)(诸如因特网)、对等网络、电缆网络等)。
系统565还可以包括辅助存储(未示出)。辅助存储610包括例如硬盘驱动器和/或可移除存储驱动器、代表软盘驱动器、磁带驱动器、光盘驱动器、数字多功能盘(DVD)驱动器、记录设备、通用串行总线(USB)闪存。可移除存储驱动器以众所周知的方式从可移除存储单元读取和/或写入可移除存储单元。
计算机程序或计算机控制逻辑算法可以存储在主存储器540和/或辅助存储中。这些计算机程序在被执行时使得系统565能够执行各种功能。存储器540、存储和/或任何其他存储是计算机可读介质的可能示例。
各种在先附图的体系架构和/或功能可以在通用计算机系统、电路板系统、专用于娱乐目的的游戏控制台系统、专用系统和/或任何其他所需的系统的上下文中实现。例如,系统565可以采取台式计算机、膝上型计算机、平板电脑、服务器、超级计算机、智能电话(例如,无线、手持设备)、个人数字助理(PDA)、数字相机、运载工具、头戴式显示器、手持式电子设备、移动电话设备、电视机、工作站、游戏控制台、嵌入式系统和/或任何其他类型的逻辑的形式。
虽然上面已经描述了各种实施例,但是应该理解,它们仅以示例的方式呈现,而不是限制。因此,优选实施例的宽度和范围不应受任何上述示例性实施例的限制,而应仅根据所附权利要求及其等同物来限定。
图形处理管线
在一个实施例中,PPU 300包括图形处理单元(GPU)。PPU 300被配置为接收指定用于处理图形数据的着色程序的命令。图形数据可以被定义为一组图元,例如点、线、三角形、四边形、三角形带等。典型地,图元包括指定图元的多个顶点(例如,在模型空间坐标系中)的数据以及与图元的每个顶点相关联的属性。PPU 300可以被配置为处理图元以生成帧缓冲区(例如,用于显示器的像素中的每一个的像素数据)。
应用程序将场景的模型数据(例如,顶点和属性的集合)写入存储器(诸如系统存储器或存储器304)。模型数据定义可能在显示器上可见的对象中的每一个。然后应用程序对驱动程序内核进行API调用,其请求要被渲染和显示的模型数据。驱动程序内核读取模型数据并将命令写入一个或更多个流以执行操作来处理模型数据。这些命令可以参考要在PPU 300的SM 440上实现的不同着色程序,包括顶点着色、外壳着色、域着色、几何着色和像素着色中的一个或更多个。例如,SM 440中的一个或更多个可以被配置为执行顶点着色程序,其处理由模型数据定义的多个顶点。在一个实施例中,不同的SM 440可以被配置为同时执行不同的着色程序。例如,SM 440的第一子集可以被配置为执行顶点着色程序,而SM 440的第二子集可以被配置为执行像素着色程序。SM 440的第一子集处理顶点数据以产生经处理的顶点数据,并将经处理的顶点数据写入L2高速缓存460和/或存储器304。在经处理的顶点数据被光栅化(例如,从三维数据转换成屏幕空间中的二维数据)以产生片段数据之后,SM 440的第二子集执行像素着色以产生经处理的片段数据,然后将其与其他经处理的片段数据混合并被写入存储器304中的帧缓冲区。顶点着色程序和像素着色程序可以同时执行,以管线方式处理来自同一场景的不同数据,直到该场景的所有模型数据已经被渲染到帧缓冲区。然后,帧缓冲区的内容被传送到显示控制器以在显示设备上显示。
图6是根据一个实施例的由图3的PPU 300实现的图形处理管线600的概念图。图形处理管线600是被实现以从3D几何数据生成2D计算机生成图像的处理步骤的抽象流程图。众所周知,管线架构可以通过将操作分成多个阶段来更高效地执行长延迟操作,其中每个阶段的输出耦合到下一个连续阶段的输入。因此,图形处理管线600接收从图形处理管线600的一个阶段传送到下一阶段的输入数据601,以生成输出数据602。在一个实施例中,图形处理管线600可表示由API定义的图形处理管线。作为选择,图形处理管线600可以在先前附图和/或一个或更多个任何后续附图的功能和架构的上下文中实现。
如图6所示,图形处理管线600包括包含多个阶段的管线架构。这些阶段包括但不限于数据组装阶段610、顶点着色阶段620、图元组装阶段630、几何着色阶段640、视口缩放、剔除和裁剪(viewport scale,cull,and clip,VSCC)阶段650、光栅化阶段660、片段着色阶段670和光栅操作阶段680。在一个实施例中,输入数据601包括命令,其配置处理单元以实现图形处理管线600的阶段,并配置几何图元(例如,点、线、三角形、四边形、三角形带或扇形等)以由这些阶段处理。输出数据602可以包括像素数据(即,颜色数据),其被复制到存储器中的帧缓冲区或其他类型的表面数据结构中。
数据组装阶段610接收输入数据601,其指定用于高阶表面、图元等的顶点数据。数据组装阶段610收集临时存储或队列中的顶点数据,诸如通过从主机处理器接收包括指向存储器中的缓冲区的指针的命令并从该缓冲区读取顶点数据。顶点数据然后被传送到顶点着色阶段620以进行处理。
顶点着色阶段620通过对顶点中的每一个执行一次一组操作(例如,顶点着色器或程序)来处理顶点数据。顶点可以例如被指定为与一个或更多个顶点属性(例如,颜色、纹理坐标、表面法线等)相关联的4坐标向量(例如,<x,y,z,w>)。顶点着色阶段620可以操纵各个顶点属性,诸如位置、颜色、纹理坐标等。换句话说,顶点着色阶段620对与顶点相关联的顶点坐标或其他顶点属性执行操作。这些操作通常包括光照操作(例如,修改顶点的颜色属性)和变换操作(例如,修改顶点的坐标空间)。例如,可以使用对象坐标空间中的坐标来指定顶点,其通过将坐标乘以矩阵进行变换,该矩阵将坐标从对象坐标空间转换到世界空间或归一化设备坐标(normalized-device-coordinate,NCD)空间。顶点着色阶段620生成被传送到图元组装阶段630的经变换的顶点数据。
图元组装阶段630收集由顶点着色阶段620输出的顶点并且将顶点分组成几何图元以由几何着色阶段640处理。例如,图元组装阶段630可以被配置为将每三个连续顶点分组为用于传送到几何着色阶段640的几何图元(例如,三角形)。在一些实施例中,特定顶点可以被重新用于连续几何图元(例如,三角形带中的两个连续三角形可以共享两个顶点)。图元组装阶段630将几何图元(例如,相关联的顶点的集合)传送到几何着色阶段640。
几何着色阶段640通过对几何图元执行一组操作(例如,几何着色器或程序)来处理几何图元。曲面细分(tessellation)操作可以从每个几何图元生成一个或更多个几何图元。换言之,几何着色阶段640可以将每个几何图元细分为两个或更多个几何图元的更精细的网格,以由图形处理管线600的其余部分进行处理。几何着色阶段640将几何图元传送到视口SCC阶段650。
在一个实施例中,图形处理管线600可以在流式多处理器和顶点着色阶段620、图元组装阶段630、几何着色阶段640、片段着色阶段670和/或与其相关联的硬件/软件内操作,可顺序地执行处理操作。一旦顺序处理操作完成,在一个实施例中,视口SCC阶段650可以利用数据。在一个实施例中,由图形处理管线600中的阶段的一个或更多个处理的图元数据可以被写入高速缓存(例如,L1高速缓存、顶点高速缓存等)中。在这种情况下,在一个实施例中,视口SCC阶段650可以访问高速缓存中的数据。在一个实施例中,视口SCC阶段650和光栅化阶段660被实现为固定功能电路。
视口SCC阶段650执行几何图元的视口缩放、剔除和裁剪。正被渲染的每个表面都与抽象相机位置相关联。相机位置表示正观看该场景的观看者的位置并定义了包围该场景的对象的视锥体。视锥体可以包括观看平面、后平面和四个裁剪平面。完全位于视锥体之外的任何几何图元都可被剔除(例如丢弃),因为这些几何图元将不会对最终渲染的场景做出贡献。部分位于视锥体内并且部分位于视锥体外的任何几何图元可以被裁剪(例如,转换为被包围在视锥体内的新的几何图元)。此外,可以基于视锥体的深度来对每个几何图元进行缩放。然后将所有可能可见的几何图元传送到光栅化阶段660。
光栅化阶段660将3D几何图元转换成2D片段(例如,能够用于显示等)。光栅化阶段660可以被配置为利用几何图元的顶点来设置一组平面方程,从中可以内插各种属性。光栅化阶段660还可以计算多个像素的覆盖掩码,其指示像素的一个或更多个样本位置是否拦截几何图元。在一个实施例中,还可以执行z测试以确定几何图元是否被已经被光栅化的其他几何图元遮挡。光栅化阶段660生成片段数据(例如,与每个被覆盖像素的特定样本位置相关联的内插顶点属性),其被传送到片段着色阶段670。
片段着色阶段670通过对片段中的每一个执行一组操作(例如,片段着色器或程序)来处理片段数据。片段着色阶段670可以生成片段的像素数据(例如,颜色值),诸如通过使用片段的内插纹理坐标执行光照操作或采样纹理图。片段着色阶段670生成像素数据,其被发送到光栅操作阶段680。
光栅操作阶段680可对像素数据执行各种操作,诸如执行阿尔法测试、模板测试(stencil test)以及将像素数据与对应于与像素相关联的其他片段的其他像素数据混合。当光栅操作阶段680已经完成对像素数据(例如,输出数据602)的处理时,可以将像素数据写入渲染目标,诸如帧缓冲区、颜色缓冲区等。
应当领会,除上述阶段中的一个或更多个以外或代替上述阶段中的一个或更多个,一个或更多个额外的阶段可以被包括在图形处理管线600中。抽象图形处理管线的各种实现方式可以实现不同的阶段。此外,在一些实施例中,上述阶段中的一个或更多个可以从图形处理管线中排除(诸如几何着色阶段640)。其他类型的图形处理管线被认为是在本公开的范围内所构想的。此外,图形处理管线600的任何阶段可以由图形处理器(诸如PPU300)内的一个或更多个专用硬件单元来实现。图形处理管线600的其他阶段可以由可编程硬件单元(诸如PPU 300的SM 440)来实现。
图形处理管线600可以经由由主机处理器(诸如CPU)执行的应用程序来实现。在一个实施例中,设备驱动程序可以实现应用程序编程接口(API),其定义可以被应用程序利用以生成用于显示的图形数据的各种功能。设备驱动程序是软件程序,其包括控制PPU 300的操作的多个指令。API为程序员提供抽象,其允许程序员利用专用图形硬件(诸如PPU 300)来生成图形数据而不要求程序员利用PPU 300的特定指令集。应用程序可以包括被路由到PPU 300的设备驱动程序的API调用。设备驱动程序解释API调用并执行各种操作以响应API调用。在一些情况下,设备驱动程序可以通过在CPU上执行指令来执行操作。在其他情况下,设备驱动程序可以至少部分地通过利用CPU和PPU 300之间的输入/输出接口在PPU 300上启动操作来执行操作。在一个实施例中,设备驱动程序被配置为利用PPU 300的硬件来实现图形处理管线600。
可以在PPU 300内执行各种程序以便实现图形处理管线600的各个阶段。例如,设备驱动程序可以启动PPU 300上的内核以在一个SM 440(或多个SM 440)上执行顶点着色阶段620。设备驱动程序(或由PPU 400执行的初始内核)还可启动PPU 400上的其他内核以执行图形处理管线600的其他阶段,诸如几何着色阶段640和片段着色阶段670。另外,图形处理管线600的阶段中的一些可以在固定单元硬件(诸如在PPU 400内实现的光栅器或数据组装器)上实现。应当领会,在被SM 440上的后续内核处理之前,来自一个内核的结果可以由一个或更多个中间固定功能硬件单元处理。
机器学习
在处理器(诸如PPU 300)上开发的深度神经网络(DNN)已经用于各种使用情况:从自驾车到更快药物开发,从在线图像数据库中的自动图像字幕到视频聊天应用中的智能实时语言翻译。深度学习是一种技术,它建模人类大脑的神经学习过程,不断学习,不断变得更聪明,并且随着时间的推移更快地传送更准确的结果。一个孩子最初是由成人教导,以正确识别和分类各种形状,最终能够在没有任何辅导的情况下识别形状。同样,深度学习或神经学习系统需要在物体识别和分类方面进行训练,以便在识别基本物体、遮挡物体等同时还有为物体分配情景时变得更加智能和高效。
在最简单的层面上,人类大脑中的神经元查看接收到的各种输入,将重要性水平分配给这些输入中的每一个,并且将输出传递给其他神经元以进行处理。人造神经元或感知器是神经网络的最基本模型。在一个示例中,感知器可以接收一个或更多个输入,其表示感知器正被训练为识别和分类的对象的各种特征,并且在定义对象形状时,这些特征中的每一个基于该特征的重要性赋予一定的权重。
深度神经网络(DNN)模型包括许多连接节点(例如,感知器、玻尔兹曼机器、径向基函数、卷积层等)的多个层,其可以用大量输入数据来训练以快速高精度地解决复杂问题。在一个示例中,DNN模型的第一层将汽车的输入图像分解为各个部分,并查找基本图案(诸如线条和角)。第二层组装线条以寻找更高水平的图案,诸如轮子、挡风玻璃和镜子。下一层识别运载工具类型,最后几层为输入图像生成标签,识别特定汽车品牌的型号。
一旦DNN被训练,DNN就可以被部署并用于在被称为推理(inference)的过程中识别和分类对象或图案。推理的示例(DNN从给定输入中提取有用信息的过程)包括识别沉积在ATM机中的支票存款上的手写数字、识别照片中朋友的图像、向超过五千万用户提供电影推荐、识别和分类不同类型的汽车、行人和无人驾驶汽车中的道路危险、或实时翻译人类言语。
在训练期间,数据在前向传播阶段流过DNN,直到产生预测为止,其指示对应于输入的标签。如果神经网络没有正确标记输入,则分析正确标签和预测标签之间的误差,并且在后向传播阶段期间针对每个特征调整权重,直到DNN正确标记该输入和训练数据集中的其他输入为止。训练复杂的神经网络需要大量的并行计算性能,包括由PPU 300支持的浮点乘法和加法。与训练相比,推理的计算密集程度比训练更低,是一个延迟敏感过程,其中经训练的神经网络应用于它以前没有见过的新的输入,以进行图像分类、翻译语音以及通常推理新的信息。
神经网络严重依赖于矩阵数学运算,并且复杂的多层网络需要大量的浮点性能和带宽来提高效率和速度。采用数千个处理核心,针对矩阵数学运算进行了优化,并传送数十到数百TFLOPS的性能,PPU 300是能够传送基于深度神经网络的人工智能和机器学习应用所需性能的计算平台。
一些实施例的示例性技术优点
某些示例性实施例提供时钟频率的快速减慢,使得处理器可以有效地降低仅用于执行有噪声指令的操作频率,同时使得无噪声指令能够在电压电平的最高标称频率处或附近执行。
与诸如NAFLL之类的解决方案相比,该解决方案被设计为解决噪声的频率影响但是其解决的是在大区域上看到的噪声,示例性实施例还适应于非常局部化的噪声。另外,示例性实施例允许IR降闭合的灵活性,因为已知的功率密集单元可以闭合到更宽松的IR降预算,期望在功率密集单元上执行指令时快速时钟减慢到更低的频率。放宽IR降预算可以缓解路由拥塞并防止或减少管芯面积增长。
鉴于以上教导,本发明的许多修改和变化都是可能的。因此,应当理解,在所附权利要求的范围内,本发明可以以不同于本文具体描述的方式实践。
Claims (27)
1.一种控制处理器的时钟的方法,包括:
检测被预测为具有预定义的噪声特性的指令,所述检测在所述处理器执行所述指令之前发生;以及
响应于所述检测,改变所述时钟的频率。
2.根据权利要求1所述的方法,其中所述改变所述频率包括:将所述频率降低一偏移,所述偏移被确定为补偿与所述预定义的噪声特性相对应的预测的电压降。
3.根据权利要求2所述的方法,所述方法还包括:
当所述时钟以降低后的频率工作时,至少部分地执行所述指令;以及
在所述执行后升高所述时钟的所述频率。
4.根据权利要求3所述的方法,还包括使所述升高经历滞后过程。
5.根据权利要求4所述的方法,其中在不经历滞后过程的情况下执行所述降低。
6.根据权利要求2所述的方法,其中由指令到频率偏移量的可编程映射来确定所述偏移。
7.根据权利要求1所述的方法,其中所述检测包括:确定所述指令的类型与预定的指令类型集中的类型相匹配。
8.根据权利要求7所述的方法,其中所述预定的指令类型集包括被预测为消耗超过阈值功率水平的至少一个高功率指令类型。
9.根据权利要求7所述的方法,其中所述预定的指令类型集包括至少两组指令类型,所述两组中的每一组具有到相应频率偏移量的映射,
其中所述检测还包括确定所述指令属于所述至少两组中的哪一组,以及
其中所述改变还包括根据映射到所述至少两组中确定的一组的相应频率偏移量来调整所述频率。
10.根据权利要求9所述的方法,其中所述至少两组的组成或相应频率量中的至少一个是可编程的。
11.根据权利要求1所述的方法,还包括:
配置所述时钟以默认频率操作,以及
其中所述检测在所述时钟以所述默认频率操作时发生,其中根据被预测为具有比检测到的指令更低的噪声水平的其他指令来确定所述默认频率。
12.根据权利要求1所述的方法,其中所述检测在所述指令的解码期间发生,并且所述改变在所述处理器执行解码的指令之前发生。
13.根据权利要求12所述的方法,还包括:
响应于所述检测,在执行之前停止所述指令;以及
响应于所述频率被改变或定时器信号,不停止所述指令。
14.根据权利要求1所述的方法,其中改变所述时钟的所述频率包括:在时钟源处接收到时钟改变信号之后,在预定的固定数量的时钟周期内改变所述时钟源的频率。
15.根据权利要求14所述的方法,其中改变所述时钟的所述频率还包括:从查找表中识别目标频率,以及将所述时钟源设置为所述目标频率。
16.根据权利要求15所述的方法,其中改变所述时钟的所述频率还包括:根据噪声感知锁频环技术来调整所述频率。
17.一种系统,包括处理电路和控制所述处理电路的操作频率的时钟生成器,所述处理电路被配置成:
检测被预测为具有预定义的噪声特性的指令,所述检测在所述处理器中执行所述指令之前发生;以及
响应于所述检测,向所述时钟生成器发信令以改变所述时钟生成器的频率。
18.根据权利要求17所述的系统,还包括从所述指令的类型到频率偏移量的映射,所述频率偏移量被确定为补偿与所述预定义的噪声特性相对应的预测的电压降,其中所述发信令包括将所述频率量包括在所述信令中。
19.根据权利要求17所述的系统,其中在所述指令的解码期间执行所述检测,以及所述处理电路还被配置为在所述改变所述频率之后执行所述指令。
20.根据权利要求17所述的系统,其中所述检测包括:确定所述指令的类型与预定的指令类型集中的类型相匹配。
21.根据权利要求20所述的系统,还包括所述处理电路与所述时钟生成器之间的至少第一信令路径和第二信令路径,其中所述预定的指令类型集包括分别与所述第一信令路径和所述第二信令路径相关联的至少第一组指令类型和第二组指令类型,两组中的每一组具有到相应频率偏移量的映射,
其中所述检测还包括确定所述指令属于至少两组中的哪一组,以及
其中所述改变还包括根据映射到所述至少两组中确定的一组的相应频率偏移量来调整所述频率。
22.根据权利要求17所述的系统,其中改变所述频率包括:在所述时钟生成器处接收到时钟改变信号之后,在预定的固定数量的时钟周期内改变时钟源的频率。
23.根据权利要求22所述的系统,其中改变所述频率还包括:从查找表中识别目标频率,以及将所述时钟源设置为所述目标频率。
24.根据权利要求23所述的系统,其中改变所述频率还包括:根据噪声感知锁频环(NAFLL)技术来调整所述频率。
25.根据权利要求17所述的系统,其中所述处理电路包括指令管线,所述指令管线被配置为阻止所述指令的执行,直到从所述时钟生成器或计时器接收到预定的信号。
26.根据权利要求17所述的系统,其中所述系统还包括多个处理器核心,其包括所述处理电路,其中每个所述处理器核心从所述时钟生成器接收所述频率,并且其中所述时钟生成器被配置为:
接收来自所述多个处理器核心中的一个或更多个的信号,以及
根据所接收的信号的所选子集改变所述频率。
27.根据权利要求17所述的系统,其中所述处理电路和所述时钟生成器形成在集成电路上。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862716538P | 2018-08-09 | 2018-08-09 | |
US62/716,538 | 2018-08-09 | ||
US16/460,615 US11487341B2 (en) | 2018-08-09 | 2019-07-02 | Techniques for configuring a processor to execute instructions efficiently |
US16/460,615 | 2019-07-02 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110825159A true CN110825159A (zh) | 2020-02-21 |
Family
ID=69406735
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910728960.2A Pending CN110825159A (zh) | 2018-08-09 | 2019-08-08 | 配置处理器以有效执行指令的技术 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11487341B2 (zh) |
CN (1) | CN110825159A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113961347A (zh) * | 2021-10-27 | 2022-01-21 | 缪周航 | 提升移动计算平台可靠性的方法 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10732701B1 (en) * | 2019-06-24 | 2020-08-04 | Mediatek Singapore Pte. Ltd. | Method and apparatus of dual threshold clock control |
US11204766B2 (en) * | 2019-08-30 | 2021-12-21 | Intel Corporation | Proactive Di/Dt voltage droop mitigation |
US10955865B1 (en) | 2020-01-22 | 2021-03-23 | Cypress Semiconductor Corporation | Firmware-controlled cable drop voltage compensation |
US11867744B2 (en) * | 2020-10-20 | 2024-01-09 | Nvidia Corporation | Techniques for isolating interfaces while testing semiconductor devices |
CN115226405A (zh) * | 2021-02-16 | 2022-10-21 | 松下知识产权经营株式会社 | 主机装置、从机装置以及数据传送系统 |
US11609879B2 (en) * | 2021-02-26 | 2023-03-21 | Nvidia Corporation | Techniques for configuring parallel processors for different application domains |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7992017B2 (en) * | 2007-09-11 | 2011-08-02 | Intel Corporation | Methods and apparatuses for reducing step loads of processors |
US7937563B2 (en) * | 2008-05-27 | 2011-05-03 | Advanced Micro Devices, Inc. | Voltage droop mitigation through instruction issue throttling |
US9009451B2 (en) * | 2011-10-31 | 2015-04-14 | Apple Inc. | Instruction type issue throttling upon reaching threshold by adjusting counter increment amount for issued cycle and decrement amount for not issued cycle |
US9141421B2 (en) * | 2012-12-04 | 2015-09-22 | International Business Machines Corporation | Reducing power grid noise in a processor while minimizing performance loss |
US9383806B2 (en) * | 2013-04-17 | 2016-07-05 | Apple Inc. | Multi-core processor instruction throttling |
US9411395B2 (en) * | 2013-04-18 | 2016-08-09 | Intel Corporation | Method and apparatus to control current transients in a processor |
US9395775B2 (en) * | 2013-06-25 | 2016-07-19 | Apple Inc. | Control scheme to temporarily raise supply voltage in response to sudden change in current demand |
US9606602B2 (en) * | 2014-06-30 | 2017-03-28 | Intel Corporation | Method and apparatus to prevent voltage droop in a computer |
US9461626B2 (en) * | 2014-07-14 | 2016-10-04 | Qualcomm Incorporated | Dynamic voltage adjustment of an I/O interface signal |
US9509318B2 (en) * | 2015-03-13 | 2016-11-29 | Qualcomm Incorporated | Apparatuses, methods, and systems for glitch-free clock switching |
US10579125B2 (en) * | 2016-02-27 | 2020-03-03 | Intel Corporation | Processors, methods, and systems to adjust maximum clock frequencies based on instruction type |
US10642336B2 (en) * | 2016-07-12 | 2020-05-05 | Advanced Micro Devices, Inc. | Clock adjustment for voltage droop |
US10552250B2 (en) * | 2017-10-10 | 2020-02-04 | International Business Machines Corporation | Proactive voltage droop reduction and/or mitigation in a processor core |
US11675410B2 (en) * | 2018-04-10 | 2023-06-13 | Advanced Micro Devices, Inc. | Predicting processor power disturbances by monitoring performance characteristics |
-
2019
- 2019-07-02 US US16/460,615 patent/US11487341B2/en active Active
- 2019-08-08 CN CN201910728960.2A patent/CN110825159A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113961347A (zh) * | 2021-10-27 | 2022-01-21 | 缪周航 | 提升移动计算平台可靠性的方法 |
CN113961347B (zh) * | 2021-10-27 | 2022-05-17 | 缪周航 | 提升移动计算平台可靠性的方法 |
Also Published As
Publication number | Publication date |
---|---|
US20200050251A1 (en) | 2020-02-13 |
US11487341B2 (en) | 2022-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11487341B2 (en) | Techniques for configuring a processor to execute instructions efficiently | |
CN110176054B (zh) | 用于训练神经网络模型的合成图像的生成 | |
US10657306B1 (en) | Deep learning testability analysis with graph convolutional networks | |
CN111143174B (zh) | 在共享功率/热约束下操作的硬件的最佳操作点估计器 | |
US11367160B2 (en) | Simultaneous compute and graphics scheduling | |
US9483270B2 (en) | Distributed tiled caching | |
US10852811B2 (en) | Voltage/frequency scaling for overcurrent protection with on-chip ADC | |
CN110766778B (zh) | 使用散列执行并行路径空间滤波的方法和系统 | |
US10032243B2 (en) | Distributed tiled caching | |
CN111210498B (zh) | 降低多边形网格的细节水平以减少被渲染几何的复杂度 | |
US11651194B2 (en) | Layout parasitics and device parameter prediction using graph neural networks | |
US11645533B2 (en) | IR drop prediction with maximum convolutional neural network | |
US11934867B2 (en) | Techniques for divergent thread group execution scheduling | |
CN111445003A (zh) | 神经网络生成器 | |
CN113822975B (zh) | 用于对图像进行有效采样的技术 | |
US20190163254A1 (en) | Core off sleep mode with low exit latency | |
US11476852B2 (en) | Glitch-free multiplexer | |
CN110908929A (zh) | 用于高带宽缩放的一致数据高速缓存 | |
US11003238B2 (en) | Clock gating coupled memory retention circuit | |
CN113743573A (zh) | 用于访问和利用压缩数据及其状态信息的技术 | |
US11936507B2 (en) | CMOS signaling front end for extra short reach links | |
CN113393564A (zh) | 利用全局照明数据结构的基于水塘的时空重要性重采样 | |
CN113808183B (zh) | 使用扭曲的复合估计乘积积分 | |
CN111221498A (zh) | 动态方向舍入 | |
US12019498B2 (en) | Core off sleep mode with low exit latency |
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 |