无毛刺的多路器以及防止毛刺传播

文档序号:490294 发布日期:2022-01-04 浏览:15次 >En<

阅读说明:本技术 无毛刺的多路器以及防止毛刺传播 (Glitch-free multiplexer and glitch propagation prevention ) 是由 W·J·达利 于 2021-06-03 设计创作,主要内容包括:当信号毛刺时,接收信号的逻辑可能会改变响应,从而对逻辑内的节点进行充电和/或放电并耗散功率。提供无毛刺信号可以减少节点被充电和/或放电的次数,从而降低功耗。用于消除毛刺的技术是插入存储元件,该存储元件在完成信号改变之后,对该信号进行采样以产生无毛刺的输出信号。存储元件由具有与生成信号的电路的延迟匹配的延迟的“准备就绪”信号来启用。该技术可防止输出信号改变,直到达到信号的最终值为止。输出信号仅改变一次,通常减少接收信号的逻辑中的节点被充电和/或放电的次数,从而也减少功耗。(When a signal glitch, the logic receiving the signal may change response, charging and/or discharging nodes within the logic and dissipating power. Providing a glitch-free signal may reduce the number of times a node is charged and/or discharged, thereby reducing power consumption. A technique for removing glitches is to insert a storage element that samples the signal after the signal change is completed to produce a glitch-free output signal. The storage elements are enabled by a &#34;ready&#34; signal having a delay that matches the delay of the circuit generating the signal. This technique prevents the output signal from changing until the final value of the signal is reached. The output signal changes only once, typically reducing the number of times a node in the logic receiving the signal is charged and/or discharged, thereby also reducing power consumption.)

无毛刺的多路器以及防止毛刺传播

技术领域

本公开涉及防止毛刺(glitch)在电路中传播。特别地,本公开涉及通过插入对信号采样的存储元件以产生无毛刺的输出信号来消除信号中的毛刺。

背景技术

常规时序电路包括具有由同步寄存器或触发器驱动的具有输入的组合逻辑。“组合逻辑”是指接收一个或更多个输入的逻辑,将这些输入组合以产生输出,而没有存储输入、输出或任何中间值的状态。换句话说,组合逻辑是“无状态的”,并且可以是异步的(不受时钟信号驱动)。与之相反,对于序列电路(逻辑),寄存器存储状态。

在时钟的上升沿,寄存器的输出恰好改变一次。但是,通过组合逻辑的多条路径可能导致组合逻辑输出的信号在达到其最终电平之前发生多次更改。信号可以是输入到多路器的数据,也可以是使多路器选择数据输入之一进行输出的选择信号。多路器的输出可响应于变化的数据而变化几次,并在建立最终状态之前选择输入。多路器输出的变化被认为是毛刺,接收输出的附加组合逻辑可能会通过对节点进行充电和/或放电以及耗散功率来做出响应。提供无毛刺的输出信号可以减少节点被充电和/或放电的次数,从而减少由附加组合逻辑所耗散的功率。需要解决与现有技术相关联的这些问题和/或其他问题。

发明内容

当信号毛刺时,接收信号的逻辑可以改变响应,从而对逻辑内的节点进行充电和/或放电并耗散功率。在以下描述的上下文中,毛刺是时钟周期内信号的至少一位的至少一个高脉冲或低脉冲。具体而言,该脉冲是高-低-高转变或低-高-低转变。提供无毛刺信号可以减少对节点充电和/或放电的次数,从而减少功耗。消除信号中毛刺的技术是插入存储元件,该存储元件在完成信号改变之后,对该信号进行采样以产生无毛刺的输出信号。存储元件由具有与生成信号的电路的延迟匹配的延迟的“准备就绪”信号来启用。准备就绪的存储元件可防止输出信号改变,直到达到信号的最终值为止。输出信号仅改变一次,从低到高或从高到低过渡,通常减少接收信号的逻辑中的节点被充电和/或放电的次数,从而也减少了功耗。

公开了一种用于防止毛刺传播的方法、计算机可读介质和系统。在一个实施例中,解码器电路被配置为接收选择准备就绪信号,该选择准备就绪信号被求反直到由组合逻辑生成的选择信号不变,并且在选择信号不变之后被赋值。解码器电路根据选择信号生成对应于一组数据输入信号的至少一个采样使能信号,其中在选择准备就绪信号被求反时至少一个采样使能信号被求反,并且响应于选择准备就绪信号的赋值而被赋值。解码器电路生成保持信号,在至少一个采样使能信号被求反时被赋值,并且响应于至少一个采样使能信号的赋值而被求反。采样电路被配置成在保持信号被赋值时保持输出信号不变,以及保持信号被求反时,根据至少一个采样使能信号对数据输入信号之一进行采样以将采样数据输入信号的电平传送至输出信号。

公开了一种用于防止毛刺传播的方法、计算机可读介质和系统。在一个实施例中,延迟电路被配置为生成准备就绪信号,该准备就绪信号在时钟信号的第一转变处被求反并且在相对于第一转变的第一延迟之后被赋值,其中第一延迟至少与第二延迟一样长。采样电路被配置为接收由组合逻辑生成的输入信号,其中在时钟信号的第一次转变之后的第二延迟之后,在组合逻辑信号的输入处接收第一信号的改变引起在组合逻辑的输出处的输入信号中的相应改变。采样电路还被配置为在准备就绪信号被赋值时对输入信号进行采样以将输入信号的电平传送到采样电路的输出信号,其中输入信号从第二延迟开始不变直到输入信号被采样。

附图说明

图1A示出了根据一个实施例的无毛刺的采样电路和组合逻辑的框图。

图1B示出了根据一个实施例的图1A中所示的电路的时序图。

图1C示出了根据一个实施例的用于生成无毛刺信号的方法的流程图。

图1D示出了根据一个实施例的无毛刺采样电路。

图1E示出了根据一个实施例的重叠反相器电路。

图1F示出了根据一个实施例的另一种无毛刺的采样电路。

图1G示出了根据一个实施例的非对称准备就绪信号生成电路。

图1H示出了根据一个实施例的图1G的非对称准备就绪信号生成电路的时序图。

图2A示出了根据一个实施例的无毛刺的N对1多路器的框图。

图2B示出了根据一个实施例的图2A的无毛刺的N对1多路器的时序图。

图2C示出了根据一个实施例的图2A的定时解码器的框图。

图2D示出了根据一个实施例的用于生成无毛刺的多路器输出信号的方法的流程图。

图2E示出了根据一个实施例的扩展准备就绪信号生成电路。

图2F示出了根据一个实施例的图2E的扩展准备就绪信号生成电路的时序图。

图2G示出了根据一个实施例的快速返回电路。

图2H示出了根据一个实施例的图2G的快速返回电路的时序图。

图3示出了根据一个实施例的并行处理单元。

图4A示出了根据一个实施例的在图3的并行处理单元内的通用处理集群。

图4B示出了根据一个实施例的图3的并行处理单元的存储器分区单元。

图5A示出了根据一个实施例的图4A的流式多处理器。

图5B是根据实施例的使用图3的PPU实现的处理系统的概念图。

图5C示出了其中可以实现各种先前实施例的各种架构和/或功能的示例性系统。

具体实施方式

响应于改变的数据和选择输入,多路器的输出可以在稳定到最终状态之前改变多次。在以下描述的上下文中,改变是将其识别为不同状态的电压电平的转变。例如,与求反的或未被赋值状态相比,将改变识别为被赋值状态。在另一个示例中,改变是从高电平到低电平或从低电平到高电平的转变。在以下描述的上下文中,稳定或恒定的电平可以变化,同时在被识别为相同状态的电压值的范围内(例如,逻辑为真或逻辑为假)保持。

多路器的输出中的多个改变认为是毛刺,并且接收输出的组合逻辑可以通过对组合逻辑内的节点进行充电和/或放电以及耗散功率来做出响应。可以通过插入附加的寄存器以减少功耗来防止毛刺。例如,可以通过在输入处插入触发器至多路器来注册数据和选择输入。寄存器增加了管线阶段,并防止了在输入处的毛刺至多路器,因为每个输入在时钟沿仅改变一次(或保持恒定)。但是,就功耗、延迟和芯片面积而言,寄存器非常昂贵。可替代地,可以使用延迟时钟来注册多路器的输出,该时钟确保了至多路器的所有输入均达到其最终状态,并且在对多路器的输出进行注册之前,多路器的输出不再发生变化。在多路器的输出处插入寄存器可减少多路器和附加的组合逻辑的功耗。但是,寄存器是一种昂贵的解决方案。

消除信号中的毛刺的另一种技术是插入存储元件,该存储元件在完成改变之后对信号进行采样以在时钟周期内产生无毛刺的输出信号。通过具有与生成信号的电路的延迟匹配的延迟的“准备就绪”信号来启用存储元件。该技术可防止输出信号改变,直到达到信号的最终值为止。提供无毛刺信号可以减少对接收信号的逻辑中的节点充电和/或放电的时间的数目,从而减少逻辑所消耗的功率。

例如,多路器可以用于为卷积神经网络中的卷积运算仅选择非零激活和/或权重。如果多路器的选择信号出现毛刺,则至多路器的输入可能会发生毛刺,从而使多路器评估几种不同的产品,与评估单个产品相比,功耗要高出数倍。如本文进一步描述的,提供无毛刺的选择信号以选择无毛刺的非零值可以减少功耗。在以下描述的上下文中,忽略变化的信号,直到信号变得稳定为止,此时可以对信号进行采样,以便接收信号的组合逻辑评估一次。

图1A示出了根据一个实施例的无毛刺采样电路110以及组合逻辑103和113的框图100。寄存器响应于时钟信号的上升沿而输出信号A。响应于寄存器101的输入(未明确示出),输入信号A的电平可以在时钟信号的每个上升沿改变或保持相同,并且在时钟信号的上升沿之间是稳定的(恒定的)。组合逻辑103接收输入信号A并生成输出信号B。组合逻辑103还可接收一个或更多个附加输入并生成一个或更多个附加输出(未明确示出)。由于组合逻辑103中不同的定时路径,输出信号B可以在稳定为最终值之前通过几个中间状态转变。如果将毛刺输出信号B直接输入到诸如复杂算术电路的组合逻辑113,则毛刺会导致高功耗。

延迟电路105被配置为将用于信号A的转变的传播延迟匹配到用于信号B的有效输出。在一个实施例中,该传播延迟等于或大于最坏情况的传播延迟。在一个实施例中,传播延迟大于最坏情况的传播延迟。在一个实施例中,延迟电路105包括偶数个串联耦合的反相器。延迟电路105接收时钟作为输入,并输出信号BR(B准备就绪),信号BR指示信号B何时稳定(无毛刺)并应被采样。

采样电路110是锁存器存储元件,其被配置为当使能输入E被赋值时采样输入D,将采样的输入信号B的电平传播到输出Q以生成输出信号BX。当信号BR被赋值并且输出信号BX“跟随”输入信号B时,采样电路110是透明的。输出信号BX是至组合逻辑113的输入信号。耦合到使能输入E的信号BR被求反,采样电路110是不透明的,输入信号B不被采样并且信号BX保持稳定。但是,由于在信号BR被赋值时输入信号B是无毛刺的,因此输出信号BX最多更改一次——响应于信号BR从被求反变为被赋值转变。换句话说,在达到稳态之后并且响应于信号BR被赋值,对B的电平进行采样。

图1B示出了根据一个实施例的图1A所示的采样电路110的时序图。在时钟信号的上升沿后不久,信号A有效且稳定。信号A传播通过组合逻辑103,并且信号B毛刺,在最终达到稳定电平之前在高电平和低电平之间切换。延迟电路105提供的匹配延迟Δ延迟时钟信号以产生BR的上升沿。用于生成信号BR的匹配延迟足够长,以确保信号B已经完成改变并且是稳定的。当信号BR被赋值时,对信号B采样并传播到信号BX。当信号BR被求反时,信号B的采样停止,并且信号BX的电平保持不变。重要的是,对于每个时钟周期,无毛刺信号BX转变一次或仅保持恒定(当信号B与前一个时钟周期相比不变时)。采样电路110有效地滤除了毛刺,使得组合逻辑113仅被评估一次,从而使功耗最小化。

在另一个实施例中,信号A在时钟信号的下降沿而不是在时钟信号的上升沿是有效且稳定的。在该另一实施例中,当信号BR被求反时,对信号B采样并将其传播到信号BX,并且当信号BR被赋值时,信号B的采样停止并且保持信号BX的电平。本领域普通技术人员将理解,执行框图100和图1B中所示的相应波形的操作的任何逻辑都在本公开的实施例的范围和精神内。

现在将根据用户的需求,给出关于可用于实现前述框架的各种可选架构和特征的更多说明性信息。应该特别注意的是,以下信息是出于说明目的而提出的,不应以任何方式解释为限制。下列任何特征都可以视需要并入或不排除所描述的其他特征。

图1C示出了根据一个实施例的用于生成无毛刺信号的方法115的流程图。方法115是在逻辑或电路的上下文中描述的,并且也可以在处理器内执行。例如,方法115可以由GPU(图形处理单元)、CPU(中央处理单元)或能够生成无毛刺信号的任何处理器执行。此外,本领域普通技术人员将理解,执行方法115的任何系统都在本公开的实施例的范围和精神内。

在步骤120处,生成准备就绪信号,该准备就绪信号在时钟信号的第一转变处被求反并且在相对于第一转变的第一延迟之后被赋值,其中第一延迟由配置为匹配第二延迟的延迟电路产生。在一个实施例中,当第一延迟等于第二延迟时,第一延迟与第二延迟匹配。在一个实施例中,当第一延迟等于或大于第二延迟时,第一延迟与第二延迟匹配。在一个实施例中,第一延迟大于第二延迟并且是在相同时钟周期内。在一个实施例中,准备就绪信号是BR,第一延迟是由延迟电路105产生的,并且第二延迟是通过组合逻辑103传播延迟。在一个实施例中,延迟电路105将时钟信号反相以生成延迟信号。在一个实施例中,延迟电路105包括串联耦合的反相器链。

在步骤125处,接收由组合逻辑生成的输入信号,并且在时钟信号的第一转变之后,第一信号的改变引起在第二延迟处的输入信号中的相应改变。在一个实施例中,由组合逻辑103生成的输入信号B在采样电路110处被接收,并且信号A中的变化引起在匹配的延迟处输入信号B中发生相应的变化。在一个实施例中,第一信号中的变化是从高电平到低电平的下降过渡。在另一个实施例中,第一信号中的变化是从低电平到高电平的上升过渡。

在步骤130处,在准备就绪信号被赋值时对输入信号进行采样以将输入信号的电平传送到输出信号,其中从第二延迟直到采样为止输入信号都保持不变。在一个实施例中,输入信号B被采样电路110采样,以将输入信号B的电平传送到输出信号BX。在一个实施例中,采样电路110被配置为将输出信号BX保持在从时钟信号的第一转变直到输入信号B被采样之前的恒定电平。在一个实施例中,输入信号B在时钟信号的第一转变之后并且在第二延迟之前至少改变(毛刺)一次。

在实施例中,延迟电路还被配置为在相对于第一延迟的第三延迟之后求反准备就绪信号,其中在下一时钟周期之前准备就绪信号被求反。在一个实施例中,采样电路还被配置为生成输出准备就绪信号,该输出准备就绪信号针对第一延迟被求反并且一旦将输入信号的电平传送到输出信号就被赋值。在一个实施例中,响应于输出准备就绪信号的赋值而被求反。

图1D示出了根据一个实施例的无毛刺采样电路110。采样电路110包括两个“与(AND)”门122和124,“或(OR)”门126和使能反相器118。当使能E和D输入都为高(被赋值)时,“与”门122的输出为高,并且因此,或门126的输出Q被赋值。否则,门122的输出为低(被求反)。

在采样电路110内反馈或门126的输出Q并且将其输入到与门124。使能信号E被使能反相器118反相以产生输入到与门124的信号NE(非使能)。因此,当使能信号为高时,与门124有效地禁止反馈路径。当使能信号为低(NE为高)时,与门124使能反馈路径,将输出Q的电平传播到或门126以保持输出Q的电平,直到使能信号被赋值。换句话说,使能反相器118被配置为使能反馈路径以使输出信号Q保持恒定,直到对D输入信号进行采样为止。使能反相器118确保当使能信号E从低电平转变为高电平时,NE信号保持高电平,使得反馈路径通过与门124保持被使能,直到使能信号上升并且输入D传播通过到输出Q为止,当将D被赋值时,确保Q不会随着使能E被赋值而毛刺。举例来说,如果当E转变为高时,在高电平D传播通过与门122之前,如果NE信号转变为低并驱动与门124的输出为低,则到或门126的两个输入将同时为低,从而在“与”门122的输出驱动输出Q为高之前,使输出Q变为毛刺低。

在一个实施例中,生成输出准备就绪信号,该信号指示何时准备好通过接收逻辑对Q输出进行采样。在一个实施例中,在由延迟电路105提供的延迟期间,输出准备就绪信号被求反,并且一旦输入信号D的电平被传送到输出信号Q输出准备就绪信号被赋值。在一个实施例中,响应于输出准备就绪信号的赋值使能信号E被求反。在一个实施例中,匹配从使能信号E到输出信号Q的传播延迟的延迟电路用于延迟使能信号E以生成输出准备就绪信号。在一个实施例中,串联耦合的偶数个反相器延迟使能信号E以产生输出准备就绪信号。

图1E示出了根据一个实施例的反相器电路119。反相器电路119包括两个交叉耦合的逻辑门,其生成EO(使能输出)和NE。交叉耦合的逻辑门是具有一个反相输入的或门132以生成EO,以及与非门(NAND)134以生成NE。将使能的输入E输入到两个逻辑门。当使能E从低到高转变时,或门132将EO从低到高驱动。当在与非门134处接收到EO的上升沿时,NE输出转变为低。通过与非门134的传播延迟确保了EO和NE同时较高,从而提供了重叠时间。类似地,当使能E从高到低转变时,与非门134将NE从低到高驱动。当在或门132处接收到NE的上升沿时,EO从高到低驱动,并且通过或门132的传播延迟确保了EO和NE同时高,从而提供了重叠时间。应当理解,反相器电路119可以用路由到与门122的EO和路由到与门124的NE来代替采样电路110中的使能反相器118。

图1F示出了根据一个实施例的另一种无毛刺的采样电路140。无毛刺采样电路110可以由无毛刺采样电路140代替。或门138接收由与门135、136和137生成的中间信号,其中与门137具有一个反相的输入。当输入D和使能E都为高时,与门135将输入D传播至或门138以将输出Q驱动为高。当使能E为低时,与门137提供反馈路径以将输出Q保持为高。与门136提供反馈路径,以在输入D为高电平而不管使能E的电平时将输出Q保持为高,从而在输入D为高时在使能E的上升沿期间防止输出Q毛刺变低。当输入D为低且使能E为高,或当使能E为低且输出Q为低时,将输出Q驱动为低。

返回至图1A的框图100,在将信号B大量延迟(多于半个时钟)的情况下,可能希望具有“非对称”准备就绪信号BRA,其高比它低的时间更长。在一个实施例中,非对称准备就绪信号BRA在时钟周期结束时为低。

图1G示出了根据一个实施例的非对称准备就绪信号生成电路145。非对称准备就绪信号生成电路145可以代替框图100中的延迟电路105。准备就绪信号BRA从时钟信号的上升沿被延迟D1并且具有等于D2的宽度。第一延迟电路147提供延迟D1,第二延迟电路146提供延迟D2。具有一个反相输入的与门148生成输出BRA。在一个实施例中,第一和第二延迟电路147和146使用串联耦合的反相器链来实现,其中链中的中间输出提供延迟D1,并且链的进一步延迟的输出提供延迟D2。

图1H示出了根据一个实施例的图1G的非对称准备就绪信号生成电路的时序图。第一延迟电路147使BRA的上升沿出现在时钟的上升沿之后的时间D1。第二延迟电路146将信号BRA的脉冲宽度设置为D2。非对称准备就绪信号BRA在时钟信号为低时上升,而在下一时钟周期开始之前下降。

无毛刺采样电路110是存储元件,其可以被用于通过在信号改变电平并且稳定之后对信号进行采样来消除信号中的毛刺。准备就绪信号的延迟与生成信号的电路的延迟匹配,并且使采样能够以无毛刺的方式将信号的稳定电平转移到输出。基于准备就绪信号的采样将产生无毛刺的输出信号。由无毛刺采样电路110滤除在采样信号之前信号的任何变化,从而减少了接收输出信号的逻辑内的节点被充电和放电的次数。结果,与直接接收变化信号相比,接收输出信号逻辑所消耗的功率减少了。

无毛刺多路器

理想地,为了最小化接收多路器的输出的组合逻辑内的充电和放电节点,多路器的输出将保持不变,直到包括选择信号在内的所有输入都达到其最终状态,然后输出恰好更改一次(或保持不变)。可以通过使用“捆绑”自定时信号来实现少毛刺(无毛刺)多路复用。具体地,“准备就绪”信号可以与每个可能的多位逻辑信号(例如,数据输入和选择)相关联。仅当相关联的逻辑信号在时钟周期内已经达到最终状态并且不变时(例如无毛刺),才赋值准备就绪信号。

例如,信号“BR”指示何时准备好信号“B”。如前所述,可以由具有与生成信号B的组合逻辑块匹配的延迟的延迟电路从时钟信号生成准备就绪信号。在一个实施例中,如图1G所示,与门用于提供不对称的上升和下降延迟。在一个实施例中,时钟信号的反相版本直接用作准备就绪信号。

图2A示出了根据一个实施例的无毛刺的4比1多路器200的框图。在高电平上,多路器是逻辑组件,它接收多个(N)数据输入信号和选择信号,然后基于选择信号的值将数据输入信号之一传输到输出信号。例如,可以配置具有输入a、b和select以及输出c的多路器,使得select=0时c=a,select=1时c=b。但是,作为输入a、b和select毛刺,毛刺被传播到输出c。减少输出c的毛刺,可以减少接收输出c作为输入的组合逻辑所消耗的功率。

先前描述的无毛刺技术可以用于实现无毛刺的4对1多路器200,其中数据输入信号是A、...、D。将输入准备就绪信号AR、...DR延迟以与各自的输入信号匹配。选择信号“Sel”选择要采样的输入之一,采样后的输入将传输到输出信号X。来自X的反馈通过在将其被赋值时保持X上的前一个电平来防止输出出现毛刺。

多路器200包括定时解码器210和输出级215,每一个都具有信号端子,该信号端子承载去往和来自电路的输入和输出。通过将准备就绪信号与每个可能为多位的输入信号(Sel和数据输入信号)相关联,可以实现无毛刺多路复用。当相关联的输入信号在当前时钟周期内达到稳定状态(例如恒定或无毛刺值)时,准备就绪信号变高。例如,信号AR指示输入信号A何时稳定。准备就绪信号可以由反相器链从电路时钟信号生成,所述反相器链与生成每个输入信号的组合逻辑块延迟匹配。在一些情况下,如先前结合图1G和1H所描述的,可以在链中使用与门以提供不对称的上升和下降延迟。在其他情况下,时钟的正或负版本可以直接用作准备就绪信号。

定时解码器210接收选择信号(Sel)、选择准备就绪信号(SelR)和多个输入准备就绪信号(AR,…DR)作为输入。定时解码器210生成采样使能信号(AS,...DS),其中每个信号均被赋值为使输出级215对相应的数据输入信号进行采样。定时解码器210还生成保持信号。在以下描述的上下文中,可以将采样使能信号认为是多位采样(例如,一个热点)使能信号,其中每一位对应于数据输入信号和相应的准备就绪信号中的不同的一个。在一个实施例中,不同的采样使能信号的时序可以基于SelR和输入准备就绪信号而变化。

通常,每个数据输入信号可以是多位信号,并且相应的准备就绪信号指示数据输入信号的所有位都是无毛刺的。在一个实施例中,用于每个数据输入的采样使能信号可以用于采样多位数据输入信号的所有位,并且针对每个位复制输出级215以生成多位输出信号X。

输出级215接受数据输入信号、采样使能信号和保持信号作为输入。输出级215生成至少一个输出信号。可以将输出信号反馈到输出级215,以用作保持反馈输入。定时解码器210耦合到输出级215,以便将采样使能信号提供给输出级215。对采样使能信号进行定时以使输出级215在每个时钟周期中每个输入信号已经达到最终值之后能够根据选择输入对数据输入信号之一进行采样。将采样信号传播到至少一个输出信号,如图2B进一步所示。

选择准备就绪和输入准备就绪信号结合保持信号使多路器200保持输出信号稳定(不变),直到所有选择和数据输入信号都准备就绪为止,这意味着针对时钟间隔处于最终的稳定值,如相应的准备就绪信号所示。生成每个数据输入和选择信号的不同逻辑路径和组合逻辑可能会引起达到其自己的准备就绪状态的各个信号之间的时序差异。各个准备就绪信号可以基于其相应的数据输入信号所遍历的逻辑路径进行调整,以提供适当的延迟。一旦选择准备就绪信号和对应于所选数据输入的准备就绪信号指示数据输入和选择信号已经达到无毛刺且稳定的状态,则多路器200将所选数据输入传播到输出信号。

图2A所示的输出级215包括用于每个数据输入信号(A至D)的选择门206,以及用于保持信号的选择门205。输出级215还包括输出门212。“门”是指将配置为根据逻辑方程或真值表组合一个或更多个输入的任何逻辑。例如,与门是根据布尔与运算组合多个输入的逻辑。门并不意味着晶体管的特定布置,并且在某些情况下可以使用不同布尔运算并且适合于实现的组合来实现门。

每个选择门205和206可以在逻辑上充当两输入与门。每个选择门206均接收数据输入信号和相应的采样使能信号(A和AS、B和BS…)作为输入。当采样使能信号为逻辑“1”时,选择门的输出与输入匹配。当选择信号是逻辑“0”时,选择门的输出为逻辑“0”。在一个实施例中,定时解码器210被配置为单热输出发生器,使得在任何给定时间不多于一个采样使能信号为高(逻辑“1”)。

选择门206的输出被耦合到输出门212的输入。输出门212可以充当多输入或门。以这种方式,如先前在选择门206处描述的采样的信号可以通过输出门212传播到输出信号X。在一个实施例中,输出信号X也作为输入反馈到选择门205。将选择门206配置为输入到输出门212的反馈,以在保持信号为高的同时将输出信号X保持为高。以此方式,当保持信号为高时,将输出信号选择为要通过输出门212传播的下一个输入,从而在时钟间隔内有效地使该输出信号保持稳定。换句话说,当保持信号被赋值时(所有采样使能信号均为低电平),输出信号X保持其当前状态。

保持信号必须保持被赋值,直到采样使能信号之一(AS…DS)被赋值,以防止在对所选择的输入信号进行采样时在输出处出现毛刺。具体来说,当输出信号X被赋值(高)并且所选择的输入信号(A…D)为高时,保持和采样使能信号的重叠可确保输出信号X不会毛刺低(例如,当输出信号X为高时,它不会在一个时钟周期内转换为低并返回高)。如果不使用重叠,则由于保持转换为低时的竞争状况而可能导致低毛刺。当输入信号具有高值并且选择门205的输出在采样使能信号在选择门206的输入处转变为高之前转换为低,从而导致到输出门212的所有输入同时都变为低时,就会发生低毛刺。

就晶体管和功率(单个与非门的成本通常为4至6个晶体管)而言,反馈路径是廉价的。增加的资源成本类似于向多路器200增加附加的输入,并且比增加触发器便宜。反馈路径以及保持和采样使能信号的适当序列可防止多路器200的输出信号X出现毛刺。

本领域普通技术人员将容易认识到,输出级215可以包括未示出且对该描述不必要的附加或稍微不同的元件。与门用于描述选择门205和206,以及或门用于描述输出门212,因为这些符号表示用于基于输入生成输出信号的底层逻辑的功能。然而,还可以实现逻辑的其他组合以实现所指示的功能的效果。五个二输入与非门可以馈入例如单个五输入与非门。可替代地,三个与-或-反相(AOI)可以馈入三输入与非门。在实现期望的逻辑结果时,可以使用许多电路来实现相同的逻辑结果,同时影响所使用的晶体管的数量,所引起的延迟以及所消耗的功率。本领域普通技术人员将容易认识到,多路器200可以包括未示出并且对该描述不必要的附加或稍微不同的元件。

即使当数据输入和/或Sel信号多次和/或在不同时间改变值时,多路器200也提供可靠地稳定的输出信号值。因此,对于多路器200,减少了与毛刺和不必要的输出信号切换有关的功耗和噪声,以及减少了接收潜在不稳定信号作为输入的电路所进行的额外工作。

图2B示出了根据一个实施例的图2A的无毛刺4比1多路器200的时序图。时序图描绘了由定时解码器210生成的采样使能信号的时序,以实现无毛刺多路复用,其中箭头指示因果性。将信号SelR被赋值以指示选择信号Sel准备就绪。信号SelR被赋值之前,Sel可能会发生一次或更多次毛刺,在值之间进行变化(如标记为“毛刺”的过渡所示),直到达到稳定状态为止,此后SelR被赋值。在该示例中,选择信号选择数据输入信号A,并且在SelR被赋值之前输入准备就绪信号AR被赋值,指示数据输入信号A准备就绪。响应于将AR和SelR都已被赋值,定时解码器210赋值采样使能信号AS以对数据输入信号A进行采样并将采样值传播到多路器200的输出信号X。

如果在SelR被赋值时尚未将AR信号被赋值,则定时解码器210在赋值AS信号之前等待AR信号被赋值。在AS信号的赋值之后的短暂重叠延迟(t0)之后,保持信号解除赋值(de-asserted)(求反的)。在时间t0期间对AS和保持信号的赋值的重叠是针对将输出信号X和数据输入信号A的位均被赋值的情况。重叠确保在输出级215中的保持选择门205的输出变为解除赋值的时间与输出级215中的A选择门206的输出被赋值的时间之间,输出信号X的该位不会出现毛刺至解除赋值状态。为了在下一个时钟周期重置多路器200,在SelR信号和AR都解除赋值之后,保持信号被赋值,并且在重叠延迟(t1)之后,AS信号解除赋值。延迟t0和t1的时间持续可以相等或不同。在一个实施例中,延迟t0和t1的时间持续近似于逻辑门的延迟。在某些实现中,保持信号的反相版本(可能会加上延迟)可以用作“输出准备就绪”信号XR。

图2C示出了根据一个实施例的图2A的定时解码器210的框图。添加了序列逻辑,以对保持和采样使能信号AS、…、DS进行排序,以避免毛刺。如果Sel信号输入已经是单热(one-hot)形式,则可以省略单热解码器220。

在准备就绪信号逻辑221中,通过选择准备就绪信号SelR和对应的输入准备就绪信号(例如,用于输入信号A的AR,等)来限定每个单热信号ad、...、dd。取决于实施方式,可以在单热解码器220内或者通过扩展采样使能信号逻辑216和保持信号逻辑218中的“与”门来实现执行限定的准备就绪信号逻辑221的“与”门。

从准备就绪信号逻辑221输出的所得经解码的准备就绪信号adr,...,ddr被应用以驱动一组重置/设置(RS)触发器或锁存器,在所描绘的实施例中实现为与或门,以生成输入选择信号AS,…,DS并保持。包括采样使能逻辑216块和保持信号逻辑218的组合逻辑由准备就绪信号逻辑221门控,以生成采样使能和保持信号。

当解码输入准备就绪信号(例如adr)被赋值时,其设置由对应的采样使能信号逻辑216(例如信号AS)实现的锁存器的输出。当任何采样使能信号(例如AS)被赋值时,它会重置在保持信号逻辑218中实现的触发器,从而使保持信号下降。如果需要附加的重叠以确保可靠的操作,则可以将延迟电路插入重置路径。然而,在许多情况下,当保持的输出信号X和新选择的输入信号都被赋值时,采样信号逻辑216本身中的RS触发器的延迟可能足以避免解除赋值毛刺。

对于多位多路器(一个多路器被启用以将多位输入信号选择为多位输出信号),每个采样使能逻辑216块(例如,与或门配置)执行一个多位输入信号的所有位的RS触发器或锁存器的操作。还可以利用用于RS/SR触发器行为的其他低门计数配置。

为了重置定时解码器210并将其准备用于下一个时钟周期,当诸如adr的使能信号变低时,设置在保持信号逻辑218中实现的保持RS触发器。由于一次一个使能信号被赋值,因此在保持信号逻辑218中通过配置为检测所有被解除赋值的使能信号的或非门(例如,具有反相输入的与门)来检测条件。保持信号变为被赋值,然后在采样使能逻辑电路216中重置所选的RS触发器。如果需要延长重叠周期,可以在保持采样使能重置路径中插入延迟。

图2D示出了根据一个实施例的用于生成无毛刺的多路器输出信号的方法225的流程图。方法225可以由逻辑或定制电路执行。例如,方法225可以由GPU、CPU或能够生成无毛刺信号的任何处理器执行。此外,本领域普通技术人员将理解,执行方法225的任何系统都在本公开的实施例的范围和精神内。

在步骤230处,在定时解码器210处接收选择准备就绪信号。选择准备就绪信号被求反,直到由组合逻辑生成的选择信号不变(无毛刺)为止,并且在选择信号不变之后被赋值。在步骤235处,定时解码器210根据选择信号生成至少一个采样使能信号,其中至少一个采样使能信号对应于一组数据输入信号。当选择准备就绪信号被求反的同时至少一个采样使能信号被求反,并且当选择准备就绪信号和相应的数据准备就绪信号两者都被赋值时,至少一个采样使能信号被赋值。

在一个实施例中,选择信号包括多位信号,并且选择信号中的每个位与一组数据输入信号中的不同的一个数据输入信号相关联,并且一次仅一个位被赋值。例如,选择信号可以由单热解码器220进行单热编码以产生adr,…,ddr。在一个实施例中,选择信号中的每个位用于采样相关联的数据输入信号。例如,多位选择信号用于生成采样使能信号,该采样使能信号每一个与数据输入信号中的不同的一个数据输入信号相关联。在一个实施例中,选择信号可以被二进制编码,其中每个二进制模式选择数据输入信号中的一个数据输入信号。

在一个实施例中,定时解码器210接收一组准备就绪信号,该组中的每个准备就绪信号与该组数据输入信号中的不同的一个数据输入信号相关联。而且,每个准备就绪信号被求反,直到相关联的数据输入信号不变,并且在相关联的数据输入信号不变后,每个准备就绪信号被赋值。

在一个实施例中,定时解码器210还配置为生成一组使能信号,例如adr,…,ddr,其中该组中的每个使能信号与该组中的数据输入信号中的不同的一个数据输入信号相关联。此外,当相关联的准备就绪信号被求反时,使能信号中的每一个被求反,并且当相关联的数据输入信号被赋值时,响应于对相关联的准备就绪信号的赋值,使能信号中的每一个被赋值。

在步骤240处,定时解码器210生成保持信号,在至少一个采样使能信号被求反时该保持信号被赋值,并且响应于至少一个采样使能信号的赋值该保持信号被求反。在一个实施例中,定时解码器210配置为在保持信号被赋值并且至少一个采样使能信号被求反时赋值保持信号。在一个实施例中,保持信号和至少一个采样使能信号两者都被赋值达第一持续时间(例如,t0和/或t1)。在一个实施例中,将保持信号反相以产生与输出信号相关联的输出准备就绪信号。

在步骤245处,采样电路,例如输出级215,在保持信号被赋值时保持输出信号不变。在步骤250处,根据至少一个采样使能信号对数据输入信号之一进行采样,同时对保持信号求反以将采样的数据输入信号的值传输到输出信号。

在一个实施例中,该组输入数据信号包括三个输入数据信号,并且将选择信号配置为选择三个输入数据信号中的一个以产生输出信号。在一个实施例中,该组输入数据信号包括四个输入数据信号,并且将选择信号配置为选择四个输入数据信号中的两个以产生输出信号和附加输出信号。

无毛刺多路器的特定实施例是4-2多路器,其同时选择四个输入a0到a3中的两个以传播到两个输出信号q0和q1。在保持顺序的情况下,如表1所示,对于这种多路器,通过三位选择信号编码有六种可能性:

se1 q0 q1
0 a0 a1
1 a0 a2
2 a0 a3
3 a1 a2
4 a1 a3
5 a2 a3

表1

可以将4-2多路器的数据路径实现为两个3-1多路器,具有从3-6解码方案中导出的对应的已解码输入准备就绪信号,如以下公式所示:

对于产生q0的3-1多路器:

对于产生q1的3-1多路器:

a12dr=(s1∨s3)∧selr∧a2r

a13dr=(s2∨s4 V s5)∧selr∧a3r

这里,sx(其中x的取值为0-5)指示选择信号被命名为x;auvdr是解码的输入准备就绪信号,它门控输入信号av到输出信号qu。这些信号用于驱动4-2多路器的每个3-1多路器的四个RS锁存器。对于q0多路器,三个RS锁存器产生信号a00s、a01s和a02s,从而分别实现从输入a0、a1和a2到q0的路径。最终的RS锁存器保持q0。一组类似的四个RS锁存器控制q1多路器。例如,a00s RS锁存器的公式为:

图2E示出了根据一个实施例的扩展准备就绪信号生成电路255。利用包括与门256和或门257的RS触发器来扩展选择准备就绪信号,以确保与输入准备就绪信号重叠。为了使无毛刺多路器正常工作,选择准备就绪(SelR)信号和输入准备就绪信号(XR)重叠足够的时间,以在定时解码器210的采样启用信号逻辑电路216中设置所选的RS触发器。输入准备就绪信号的延迟远大于选择准备就绪信号的延迟,可能不会发生重叠。可通过利用附加的RS触发器来扩展选择准备就绪信号来解决此问题。通过将SelR设置为高电平来设置扩展信号(SelXR),并通过将相应的采样使能信号(XS)设置为高电平来清除扩展信号。可以将定时解码器210修改为包括用于每个输入数据信号的附加RS触发器。具体地,可以插入扩展准备就绪信号生成电路255以替换输入到准备信号逻辑221内的每个与门的SelR。

图2F示出了根据一个实施例的图2E的扩展准备就绪信号生成电路255的时序图。由于在同时将SelR和XR被赋值时重叠时间不足,因此使用扩展的SelR信号SelXR生成XS。响应于将XS被赋值,将SelXR重置。响应于将SelR被赋值而设置SelXR。

在某些情况下,输入准备就绪信号的持续时间长于所需时间,并且可能不必要地延迟无毛刺的N-1多路器200的重置,以使其为下一组输入做好准备。快速返回电路可以在输入准备就绪信号上实现。快速返回电路在检测到输出准备就绪信号后立即将输入准备就绪信号返回为解除赋值状态。

图2G示出了根据一个实施例的快速返回电路260。该电路的逻辑公式为:

ARq=AR∧S’

S=(AR∧S)∨(ARq∧OR)

这里AR是输入数据准备就绪信号,ARq是输入数据准备就绪信号的快速返回版本,OR是输出准备就绪信号——AS的延迟版本,S是状态变量,并且S'是S的补码信号。

图2H示出了根据一个实施例的图2G的快速返回电路260的时序图。当输入准备就绪信号AR上升时,信号ARq上升,但只要输出准备就绪信号OR变为高电平时,信号ARq下降。信号AR变高并保持高电平一段时间。为了使无毛刺的N-1多路器200能够更快地重置,快速返回电路260生成信号ARq,该信号ARq在OR变高之后以低延迟返回到零。通过设置由RS触发器生成的状态信号S,可以启用快速返回行为。RS触发器在ARq为高电平时通过OR变为高电平来设置。RS触发器保持S为高电平,直到AR变低将其重置为止。

在其他情况下,输出准备就绪信号(OR)可能会延长,直到与之组合的所有输出也准备就绪,并且后续电路接受该组合。该事件可以由ack信号(也可以是后续电路的输出准备就绪信号)发出信号。在这些情况下,将补码保持信号用作OR可能不会足够长的时间来满足实现的时序约束。可以使用RS触发器生成延长的输出准备就绪信号,RS触发器当保持为解除赋值时进行设置并且当ack被赋值时进行重置:

OR=hold’∨(ack’∧OR)

在这种情况下,可以修改图2C的保持信号逻辑218,以防止保持再次变为解除赋值,直到ack被赋值。

无毛刺技术可以用于减少多路器逻辑的功耗。在将无毛刺值传播到输出信号导致每个时钟周期输出信号仅转换一次(或保持恒定)之前,防止输出信号发生变化。当输出信号出现毛刺时,接收信号的逻辑可能会做出响应,从而对逻辑内的节点进行充电和/或放电并消耗功率。提供无毛刺信号可以减少节点充电和/或放电的时间,从而减少逻辑消耗的功率。

无毛刺技术将准备就绪信号与无毛刺多路器的每个输入相关联,以在输入稳定且无毛刺后控制所选输入的采样。采样元件的实施例包括透明的锁存器或具有反馈的多路器。准备就绪信号的每个延迟都与关联的输入匹配,并且可能会延长,出现不对称脉冲或快速重置准备就绪。在多路器内,将生成保持信号,以通过反馈路径保持输出信号稳定,直到采样信号值被传播。保持信号还可用于生成输出准备就绪信号。

无毛刺技术可以在包括组合逻辑和序列逻辑的任何电路内实现。例如,可以在处理器内的一个或更多个逻辑块内使用无毛刺技术,并且将其用于处理器的输入或输出。特别地,无毛刺的多路器可以用于为卷积操作仅选择非零激活和/或权重。在一个实施例中,无毛刺技术可以在并行处理架构内实现,如本文进一步所述。

并行处理架构

图3示出了根据一个实施例的并行处理单元(PPU)300。在一个实施例中,PPU 300是在一个或更多个集成电路设备上实现的多线程处理器。PPU 300是设计为并行处理多线程的延迟隐藏架构。线程(例如,执行线程)是配置为由PPU 300执行的一组指令的实例。在一个实施例中,PPU 300是配置为实现用于处理三维(3D)图形数据的图形渲染管线的图形处理单元(GPU),以便生成二维(2D)图像数据,以显示在诸如液晶显示器(LCD)的显示设备上。在其他实施例中,PPU 300可以用于执行通用计算。尽管本文出于说明性目的而提供了一个示例性并行处理器,但应强烈注意,仅出于说明性目的而提出了这种处理器,并且可以采用任何处理器来对其进行补充和/或替代。

一个或更多个PPU 300配置成加速高性能计算(“HPC”)、数据中心和机器学习应用程序。在至少一个实施例中,PPU 300配置成加速深度学习系统和应用程序,包括自动驾驶汽车平台,深度学习,高精度语音、图像、文本识别系统,智能视频分析,分子模拟,药物发现,疾病诊断,天气预报,大数据分析,天文学,分子动力学模拟,财务建模,机器人技术,工厂自动化,实时语言翻译,在线搜索优化以及个性化用户推荐等。

如图3所示,PPU 300包括但不限于输入/输出(“I/O”)单元305、前端单元315、调度器单元320、工作分配单元325、集线器330、交叉开关(“Xbar”)370、一个或更多个通用处理集群GPC350和一个或更多个存储器分区单元380。在至少一个实施例中,PPU 300通过一个或更多个NV链路310互连连接到主机处理器或其他PPU 300。PPU 300通过互连302连接到主机处理器或其他外围设备。PPU 3300连接到包括多个存储器设备的本地存储器304。在至少一个实施例中,本地存储器304包括多个动态随机存取存储器DRAM设备。DRAM设备配置为高带宽存储器HBM子系统,并且在每个设备内堆叠有多个DRAM管芯。

NV链路310使系统进行缩放并包括与一个或更多个CPU结合的一个或更多个PPU300,支持PPU 3300和CPU之间的缓存相干以及CPU主控。NV链路310通过集线器330将数据和/或命令传输到PPU 300的其他单元,例如一个或更多个复制引擎、视频编码器、视频解码器、电源管理单元等(未明确示出)。将结合图5B对NV链路310进行更详细的描述。

I/O单元305配置为通过互连302从主机处理器(未示出)发送和接收通信(例如,命令、数据)。I/O单元305直接通过互连302或通过一个或更多个中间设备(例如存储器桥)与主机处理器通信。在一个实施例中,I/O单元305可以经由互连302与一个或更多个其他处理器(例如一个或更多个PPU300)通信。在至少一个实施例中,I/O单元305实现外围组件互连快速(“PCIe”)接口,用于通过PCIe总线进行通信,以及互连302为PCIe总线。在至少一个实施例中,I/O单元305实现用于与外部设备通信的其他类型的已知接口。

I/O单元305对经由互连302接收的分组进行解码。在一个实施例中,分组表示将其配置为使PPU 300执行各种操作的命令。I/O单元305如命令所指定的那样将解码的命令发送到PPU 3300的各种其他单元。例如,将一些命令发送到集线器330或PPU 3300的其他单元,例如一个或更多个复制引擎、视频编码器、视频解码器、电源管理单元等(未明确示出)。换言之,I/O单元305配置为在PPU 300的各种逻辑单元之间路由通信。

在一个实施例中,由主机处理器执行的程序在缓冲区中对命令流进行编码,该缓冲区将工作负载提供给PPU 300以进行处理。工作负载包括多个指令和要由那些指令处理的数据。缓冲区是可由主机处理器和PPU 300两者访问(例如,读/写)的存储器中的区域。例如I/O单元305可以配置为访问经由通过互连302传输的存储器请求连接到互连302的系统存储器中的缓冲区。在一个实施例中,主机处理器将命令流写入缓冲区,然后将指示命令流开始的指针发送给PPU 300。前端单元315接收指向一个或更多个命令流指针。前端单元315管理一个或更多个流,从流中读取命令并将命令转发到PPU 300的各个单元。

前端单元315耦合到调度器单元320,该调度器单元320配置各种GPC 350以处理由一个或更多个流定义的任务。调度器单元320配置为追踪与调度器单元320管理的各种任务有关的状态信息。状态信息可以指示任务被分配给哪个GPC 350,任务是活跃的还是非活跃的,与任务相关联的优先级等等。在至少一个实施例中,调度器单元320管理在一个或更多个GPC 350上执行的多个任务。

在至少一个实施例中,调度器单元320耦合到工作分配单元325,该工作分配单元325配置为分派任务以在GPC 350上执行。在至少一个实施例中,工作分配单元325追踪从调度器单元320接收到的多个调度任务。在一个实施例中,工作分配单元325管理每个GPC 350的待处理任务池和活跃任务池。待处理任务池包括多个时隙(例如32个时隙),这些时隙包含分配给要由特定的GPC 350处理的任务。活跃任务池可包括用于由GPC 350主动处理的任务的多个时隙(例如4个时隙)。当GPC 350中完成任务的执行,该任务将从GPC 350的活动任务池中逐出,并且从待处理任务池中选择另一任务,并安排其在GPC 350上执行。在至少一个实施例中,如果活跃任务在GPC 350上处于空闲状态,例如在等待数据依赖性解决时,则活跃任务从GPC 350中驱逐并返回到待处理任务池,同时选择了待处理任务池中的另一个任务并调度在GPC 350上执行。

工作分配单元325经由XBar 370与一个或更多个GPC 350通信。XBar 370是互连网络,其将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中,其实现了用于向存储器304写入数据或从存储器304读取数据的存储器接口。结果可以经由NV链路310传输到另一PPU 300或CPU。在一个实施例中,PPU 300包括但不限于U个存储器分区单元380,其等于耦合到PPU 300的分离且不同的存储设备304的数量。下面结合图4B更详细地描述存储器分区单元380。

在一个实施例中,主机处理器执行驱动器核心,该驱动程序核心实现应用程序编程接口(API),该应用程序编程接口使在主机处理器上执行的一个或更多个应用程序能够调度操作以在PPU 300上执行。在一个实施例中,多个计算应用由PPU 300同时执行,并且PPU 300为多个计算应用程序提供隔离、服务质量(“QoS”)和独立的地址空间。应用程序生成指令(例如,以API调用的形式),该指令使驱动器核心生成一个或更多个任务以供PPU300执行。驱动器核心将任务输出至由PPU 300处理的一个或更多个流。每个任务包括一个或更多个相关线程组,其可以被称为线程束(warp)。在一个实施例中,线程束包括可以并行执行的32个相关线程。协作线程可以指代多个线程,包括用于执行任务并且通过共享存储器交换数据的指令。结合图5A更详细地描述了线程和协作线程。

图4A示出了根据一个实施例的图3的PPU300的GPC350。如图4A所示,每个GPC 350包括用于处理任务的多个硬件单元。在一个实施例中,每个GPC 350包括管线管理器410、预光栅操作单元PROP415、光栅引擎410、工作分配交叉开关WDX480、存储器管理单元MMU490、一个或更多个数据处理集群DPC420。应当理解,图4A的GPC 350可以包括其他硬件单元以代替或代替图4A中所示的单元。

在一个实施例中,GPC 350的操作由管线管理器410控制。管线管理器410管理一个或更多个DPC 420的配置,以处理分配给GPC 350的任务。在一个实施例中,管线管理器410配置一个或更多个DPC 420中的至少一个以实现图形渲染管线的至少一部分。例如,DPC420配置为在可编程流式多处理器SM440上执行顶点着色器程序。管线管理器410也可以配置为将从工作分配单元接收的数据包路由到GPC 350内的适当逻辑单元。例如,可以将一些数据包路由到PROP 415和/或光栅引擎425中的固定功能硬件单元,而可以将其他数据包路由到DPC 420以由图元引擎435或SM 440进行处理。在至少实施例中,管线管理器410可以配置一个或更多个DPC 420中的至少一个以实现神经网络模型和/或计算管线。

PROP单元415配置为将由光栅引擎425和DPC 420生成的数据路由到上面结合图4B更详细地描述的光栅操作ROP单元,结合图4B进行更详细的描述。PROP单元415也可以配置为执行用于颜色混合的优化、组织像素数据、执行地址转换等等。

光栅引擎425包括配置为执行各种光栅操作的多个固定功能硬件单元。在一个实施例中,光栅引擎425包括设置引擎、粗光栅引擎、剔除引擎、裁剪引擎、精细光栅引擎、图块聚合引擎。设置引擎接收变换后的顶点并生成与由顶点定义的几何图元相关联的平面方程。将平面方程式传送到粗光栅引擎以生成基本图元的覆盖信息(例如,图块的x、y覆盖范围掩码)。粗光栅引擎的输出将传输到剔除引擎,在剔除引擎中与z测试失败的图元相关联的片段将被剔除,并传输到剪切引擎,在剪切引擎中剪切位于视锥范围之外的片段。将经过裁剪和剔除的片段传递给精细光栅引擎,以基于设置引擎生成的平面方程式生成像素片段的属性。光栅引擎425的输出包括将例如由在DPC 420内实现的片段着色器处理的片段。

包括在GPC 350中的每个DPC 420包括M管线控制器MPC430;图元引擎435;以及一个或更多个SM 440。在至少一个实施例中,MPC 430控制DPC 420的操作,将从管线管理器410接收的分组路由到DPC 420中的适当单元。例如,将与顶点相关联的分组路由到图元引擎435,图元引擎435配置为从存储器中获取与顶点关联的顶点属性;相反,可以将与着色器程序相关联的数据包发送到SM 440。

SM 440包括可编程流式处理器,其配置为处理由多个线程表示的任务。每个SM440是多线程的并且配置为同时执行来自特定线程组的多个线程(例如32个线程)。在一个实施例中,SM 440实现SIMD(“单指令多数据”)架构,其中将一组线程(例如,线程束)中的每个线程配置为基于共同的指令集来处理不同的数据集。线程组中的所有线程执行相同的指令。在一个实施例中,SM 440实施SIMT(“单指令多线程”)架构,其中一组线程中的每个线程配置为基于共同的指令集来处理不同的数据集,但是其中线程组中的各个线程允许在执行期间发散。在至少一个实施例中,为每个线程束维护程序计数器、调用栈和执行状态,从而当线程束中的线程发散时,实现线程束和线程束内的串行执行之间的并发性。在另一个实施例中,为每个单独的线程维护程序计数器、调用栈和执行状态,从而使得在线程束内和线程束之间的所有线程之间具有相等的并发性。当为每个单独的线程维持执行状态,可以收敛并并行地执行执行共同指令的线程以提高效率。下面结合图5A更详细地描述SM 440。

MMU 490在GPC 350和存储器分区单元380之间提供接口,并且MMU 490提供虚拟地址到物理地址的转换、存储器保护以及存储器请求的仲裁。在一个实施例中,MMU 490提供一个或更多个转换后备缓冲区(“TLB”),用于执行虚拟地址到存储器304中的物理地址的转换。

图4B示出了根据一个实施例的图3的PPU300的存储器分区单元380。如图4B所示,存储器分区单元380包括但不限于光栅操作(ROP)单元450;二级(L2)高速缓存460;存储器接口470。存储器接口470耦合到存储器。存储器接口470可以实现32、64、128、1024位数据总线等,用于高速数据传输。在一个实施例中,PPU300包括U个存储器接口470。每对分区单元350一个存储器接口470,其中每对存储器分区单元380连接到相应的存储器设备。例如,PPU300可以连接到Y个存储设备,例如高带宽存储堆栈或图形双数据速率、版本5、同步动态随机存取存储器或其他内省的存储器。

在一个实施例中,存储器接口470实现了HBM2存储器接口,并且Y等于U的一半。在一个实施例中,HBM2存储器堆栈与PPU300位于相同的物理封装上,与传统的GDDR5 SDRAM系统相比,节省了大量的功率和面积。在一个实施例中,每个HBM2堆栈包括四个存储器管芯,并且Y=4,而HBM2堆栈包括每个管芯两个128位通道,总共8个通道和1024位的数据总线宽度。

在一个实施例中,存储器304支持单错误校正双错误检测(SECDED)错误校正码(ECC)以保护数据。ECC可以为对数据损坏敏感的计算应用程序提供了更高的可靠性。在其中PPU 300处理非常大的数据集和/或长时间运行应用程序的大规模集群计算环境中,可靠性尤其重要。

在一个实施例中,PPU300实现多级存储器层次结构。在一个实施例中,存储器分区单元380支持统一存储器以为CPU和PPU300存储器提供单个统一虚拟地址空间,从而实现虚拟存储器系统之间的数据共享。在一个实施例中,追踪PPU300对位于其他处理器上的存储器的访问频率,以确保将存储器页面移动到更频繁地访问页面的PPU300的物理存储器。在一个实施例中,NV链路310支持地址转换服务,该地址转换服务允许PPU300直接访问CPU的页表并提供由PPU300对CPU存储器的完全访问。

在一个实施例中,复制引擎在多个PPU300之间或在PPU300与CPU之间传送数据。复制引擎可以为未被映射到页面表中的地址生成页面错误,并且存储器分区单元380然后为页面错误提供服务,将地址映射到页面表中,之后复制引擎执行传输。在传统系统中,为多个处理器之间的多个复制引擎操作固定(即,不可分页)存储器,从而实质上减少了可用存储器。由于硬件页面故障,可以将地址传递给复制引擎,而不必担心存储页面是否驻留,并且复制过程是透明的。

来自存储器304或其他系统存储器的数据由存储器分区单元380提取并存储在L2高速缓存460中,该L2高速缓存460位于芯片上并且在各种GPC之间共享。如图所示,每个存储器分区单元380包括与对应的存储器304相关联的L2高速缓存460的至少一部分。然后在GPC350内的各个单元中实现较低级别的高速缓存。例如,每个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的数量可以与GPC350的数量不同,因此,每个ROP单元450可以耦合到每个GPC。ROP单元450追踪从不同GPC接收到的分组,并确定通过Xbar 370将ROP单元450生成的结果路由到哪个GPC350。尽管在图4B中ROP单元450被包括在存储器分区单元380内,但是在其他实施例中,ROP单元450可以在存储器分区单元380的外部。例如,ROP单元450可以驻留在GPC 350或另一个单元中。

图5A示出了根据一个实施例的图4A的流传输多处理器(“SM”)440。如图5A所示,SM440包括但不限于,指令缓存505;一个或更多个调度器单元510;寄存器文件520;一个或更多个处理核心550;一个或更多个特殊功能单元SFU552;一个或更多个加载/存储单元LSU554;互连网络580;共享存储器/L1高速缓存570。

如上所述,工作分配单元325在PPU 300的GPC 350上分配要执行的任务。将任务分配给GPC 350内的特定DPC 420,如果该任务与着色器程序相关联,任务可以被分配给SM440。调度器单元510从工作分配单元325接收任务,并管理分配给SM 440的一个或更多个线程块的指令调度。调度器单元510调度线程块以作为并行线程束执行,其中每个线程块至少分配一个线程束。在一个实施例中,每个线程束执行32个线程。调度器单元510可以管理多个不同的线程块,将线程束分配给不同的线程块,然后将来自多个不同的协作组的指令调度到各个功能单元(例如,核心550,SFU 552和LSU 554)。在每个时钟周期内。

合作组是用于组织通信线程组的编程模型,该模型允许开发人员表达线程进行通信的粒度,从而能够表达更丰富,更有效的并行分解。协作启动API支持线程块之间的同步,以执行并行算法。常规编程模型提供了用于同步协作线程的单个简单结构:跨线程块的所有线程的阻塞(例如,syncthreads()函数)。但是,编程人员通常希望以小于线程块粒度的大小来定义线程组,并在定义的组内进行同步,以实现更高的性能、设计灵活性以及以集体组级功能接口的形式实现软件复用。

合作组使程序员能够在子块(例如,小到单个线程)和多块粒度上明确地定义线程组,并执行集体操作,例如对合作组中的线程进行同步。编程模型支持跨软件边界的清洁组合,因此库和实用程序功能可以在其本地上下文中安全地同步,而不必对收敛进行假设。协作组基元可启用新的协作并行模式,包括生产者-消费者并行、机会主义并行以及整个线程块网格上的全局同步。

分派单元515配置为将指令发送到一个或多个功能单元。在该实施例中,调度器单元510包括两个调度单元515,其使得能够在每个时钟周期内调度来自同一线程束的两个不同指令。在替代实施例中,每个调度器单元510可以包括单个调度单元515或附加调度单元515。

每个SM 440包括寄存器文件520,该寄存器文件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个张量核。

将配置为执行矩阵运算的张量核心,并且在一个实施例中,将一个或更多个张量核心包括在核心550中。特别地,张量核心配置为执行深度学习矩阵算术,例如用于神经的卷积运算网络训练和推理。在一个实施例中,每个张量核心在4×4矩阵上操作并且执行矩阵乘法和累加运算D=A×B+C,其中A、B、C和D是4×4矩阵。

在一个实施例中,矩阵乘法输入A和B是16位浮点矩阵,而累加矩阵C和D可以是16位浮点或32位浮点矩阵。张量核心对具有32位浮点累加的16位浮点输入数据进行操作。16位浮点乘法需要64次运算,并产生全精度乘积,然后使用32位浮点加法与其他中间乘积进行累加,以进行4×4×4矩阵乘法。实际上,张量核心用于执行更大的二维或更高维度的矩阵运算,这些运算是由这些较小的元素构成的。诸如CUDA 9C++API之类的API公开了专门的矩阵加载、矩阵乘法和累加以及矩阵存储操作,以有效地使用CUDA-C++程序中的张量核心。在CUDA级别上,线程束级别接口假定16×16大小的矩阵跨线程束的所有32个线程。

每个SM 440还包括执行特殊功能(例如,属性评估、倒数平方根等)的M个SFU 552。在一个实施例中,SFU 552可以包括配置为遍历分层树数据结构的树遍历单元。在一个实施例中,SFU 552可以包括配置为执行纹理图过滤操作的纹理单元。在一个实施例中,纹理单元配置为从存储器304加载纹理图(例如,纹理像素的2D阵列)并且对纹理图进行采样以产生采样的纹理值,以用于由SM 440执行的着色器程序中。然后,将纹理贴图存储在共享存储器/L1高速缓存470中。纹理单元使用纹理贴图(例如,细节水平不同的纹理贴图)来实现诸如过滤操作之类的纹理操作。在一个实施例中,每个SM 340包括两个纹理单元。

每个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将线程块直接分配并分配给DPC420。块中的线程在计算中使用唯一的线程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可以包括在包括一个或更多个存储设备的图形卡上。图形卡可以配置为与台式计算机的主板上的PCIe插槽交互。在又一个实施例中,PPU 300可以是集成在母板的芯片组中的图形处理单元(iGPU)或并行处理器。

示例性计算系统

随着开发人员在诸如人工智能计算之类的应用中公开并利用更多的并行性,具有多个GPU和CPU的系统被用于各种行业。具有数以万计计算节点的高性能GPU加速系统已部署在数据中心、研究设施和超级计算机中,以解决越来越大的问题。随着高性能系统中处理设备的数量增加,通信和数据传输机制需要扩展以支持增加的带宽。

图5B是根据一个实施例的使用图3的PPU 300实现的处理系统500的概念图。示例性系统565可以被配置为实现图1C所示的方法115和/或图2D所示的方法225。处理系统500包括CPU 530、交换机510和多个PPU 300,以及相应的存储器304。NVLink310提供每个PPU300之间的高速通信链路。尽管特定数量的NVLink 310和互连302连接是如图5B所示,到每个PPU 300和CPU 530的连接数量可以改变。交换机510在互连302和CPU 530之间进行交互。PPU300、存储器304和NVLink 310可以位于单个半导体平台上以形成并行处理模块525。在一个实施例中,交换机510支持两个或更多个协议以在各种不同的连接和/或链接之间进行交互。

在另一实施例(未示出)中,NVLink 310在每个PPU 300与CPU 530之间提供一个或更多个高速通信链路,并且交换机510在互连302与每个PPU 300之间交互。PPU 300、存储器304和互连302可以位于单个半导体平台上以形成并行处理模块525。在又一实施例(未示出)中,互连302在每个PPU 300和300之间提供一个或更多个通信链路,并且CPU 530和交换机510使用NVLink 310在每个PPU 300之间进行交互,以在PPU 300之间提供一个或更多个高速通信链路。在另一实施例(未示出)中,NVLink 310提供在PPU 300和CPU 530之间通过交换机510的一个或更多个高速通信链路。在又一实施例(未示出)中,互连302直接在每个PPU 300之间提供一个或更多个通信链路。NVLink 310高速通信链路中的一个或更多个可使用与NVLink310相同的协议实现为物理NVLink互连或片上或裸片互连。

在本说明书的上下文中,单个半导体平台可以指代制造在管芯或芯片上的唯一的基于单一半导体的集成电路。应当注意,术语“单个半导体平台”也可以指具有增加的连通性的多芯片模块,其模拟芯片上的操作并相对于利用常规总线实现方式进行了实质性的改进。当然,根据用户的需求,各种电路或设备也可以分开放置或以半导体平台的各种组合放置。可替代地,并行处理模块525可以被实现为电路板基板,并且每个PPU 300和/或存储器304可以是封装器件。在一个实施例中,CPU 530、交换机510和并行处理模块525位于单个半导体平台上。

在一个实施例中,每个NVLink 310的信令速率是20至25千兆字节/秒,并且每个PPU 300包括六个NVLink 310接口(如图5B所示,每个PPU 300包括五个NVLink 310接口)。每个NVLink 310在每个方向上提供25千兆字节/秒的数据传输速率,其中六个链接提供300千兆字节/秒。如图5B所示,当CPU 530还包括一个或更多个NVLink 310接口时,NVLink 310可以专门用于PPU到PPU的通信,或者PPU到PPU和PPU到CPU的某种组合。

在一个实施例中,NVLink 310允许从CPU 530到每个PPU 300存储器304的直接加载/存储/原子访问。在一个实施例中,NVLink 310支持一致性操作,从而允许将从存储器304读取的数据存储在CPU 530的高速缓存层次结构中,其减少了CPU 530的高速缓存访问等待时间。在一个实施例中,NVLink 310包括对地址转换服务(ATS)的支持,从而允许PPU300直接访问CPU 530内的页表。NVLink 310中的一个或更多个也可以被配置为以低功率模式操作。

图5C示出了其中可以实现各种先前实施例的各种架构和/或功能的示例性系统565。示例性系统565可以配置为实现图1C所示的方法115和/或图2D所示的方法225。

如图所示,提供了一种系统565,该系统565包括至少一个连接到通信总线575的中央处理单元530。可以使用任何合适的协议来实现通信总线575,诸如PCI(外围组件互连)、PCI–Express、AGP(加速图形端口)、HyperTransport或任何其他总线或点对点通信协议。系统565还包括主存储器540。控制逻辑(软件)和数据存储在主存储器540中,其可以采取随机存取存储器(RAM)的形式。

系统565还包括输入设备560,并行处理系统525和显示设备545。常规的CRT(阴极射线管)、LCD(液晶显示器)、LED(发光二极管)、等离子显示器等。可以从输入设备560接收用户输入,例如、键盘、鼠标、触摸板、麦克风等。前述模块和/或设备中的每一个甚至可以位于单个半导体平台上以形成系统565。或者,根据用户的需要,各个模块也可以分别位于半导体平台中,或者以半导体平台的各种组合来定位。

此外,系统565可以耦合到网络(例如,电信网络、局域网(LAN)、无线网络、诸如互联网的广域网(WAN)、对等网络、电缆通过网络接口535进行通信)。

系统565还可以包括辅助存储器(未示出)。辅助存储装置610包括例如硬盘驱动器和/或可移动存储驱动器,其代表软盘驱动器、磁带驱动器、光盘驱动器、数字多功能盘(DVD)驱动器、记录设备、通用串行总线(USB)闪存。可移动存储驱动器以众所周知的方式从可移动存储单元读取和/或写入可移动存储单元。

计算机程序或计算机控制逻辑算法可以存储在主存储器540和/或辅助存储器中。在执行这样的计算机程序时使系统565能够执行各种功能。存储器540、存储器和/或任何其他存储器是计算机可读介质的可能示例。

各个先前附图的架构和/或功能可以在通用计算机系统、电路板系统、专用于娱乐目的的游戏控制台系统、专用系统和/或任何环境中实现其他所需的系统。例如,系统565可以采取台式计算机、膝上型计算机、平板计算机、服务器、超级计算机、智能电话(例如,无线、手持设备)、个人数字助理(PDA)、数码相机、车辆、头戴式显示器、手持电子设备、移动电话设备、电视、工作站、游戏机、嵌入式系统和/或任何其他类型的逻辑。

尽管上面已经描述了各种实施例,但是应当理解,它们仅以示例的方式而非限制的方式给出。因此,优选实施例的广度和范围不应受到任何上述示例性实施例的限制,而应仅根据所附权利要求及其等同物来限定。

图形处理管线

在一个实施例中,PPU 300包括图形处理单元(GPU)。将PPU 300配置为接收指定用于处理图形数据的着色器程序的命令。图形数据可以定义为一组图元,例如点、线、三角形、四边形、三角形条等。通常,图元包括为该图元指定多个顶点的数据(例如,在模型空间坐标系中)以及与该图元的每个顶点相关联的属性。PPU 300可以被配置为处理图形基元以生成帧缓冲器(例如,用于显示器的每个像素的像素数据)。

应用程序将场景的模型数据(例如,顶点和属性的集合)写入诸如系统存储器或存储器304之类的存储器中。模型数据定义了在显示器上可见的每个对象。然后,该应用程序对驱动程序内核进行API调用,以请求渲染和显示模型数据。驱动程序内核读取模型数据并将命令写入一个或更多个流以执行操作以处理模型数据。命令可以参考要在PPU 300的SM440上实现的不同着色器程序,包括顶点着色器、外壳着色器、域着色器、几何形状着色器和像素着色器中的一个或多个。例如,可将一个或更多个SM 440配置为执行顶点着色器程序,该程序处理由模型数据定义的多个顶点。在一个实施例中,可以将不同的SM 440配置为同时执行不同的着色器程序。例如,可以将SM 440的第一子集配置为执行顶点着色器程序,而可以将SM 440的第二子集配置为执行像素着色器程序。SM 440的第一子集处理顶点数据以产生经处理的顶点数据,并将经处理的顶点数据写入L2高速缓存460和/或存储器304。在对经处理的顶点数据进行光栅化之后(例如,从三维数据转换成两个屏幕空间中的二维数据)以生成片段数据,SM 440的第二子集执行像素着色器以生成经处理的片段数据,然后将其与其他经处理的片段数据混合并写入内存304中的帧缓冲区。顶点着色器程序和像素着色器程序可以同时执行,以管线方式处理来自同一场景的不同数据,直到该场景的所有模型数据都已渲染到帧缓冲区为止。然后,将帧缓冲区的内容发送到显示控制器以在显示设备上显示。

应用本文公开的一种或更多种技术产生的图像可以显示在监视器或其他显示设备上。在一些实施例中,显示设备可以直接耦合到生成或渲染图像的系统或处理器。在其他实施例中,显示设备可以例如经由网络间接地耦合到系统或处理器。此类网络的示例包括因特网、移动电信网络、WIFI网络以及任何其他有线和/或无线联网系统。当显示设备间接耦合时,由系统或处理器生成的图像可以通过网络流传输到显示设备。这种流传输允许例如在服务器上或在数据中心中执行渲染图像的视频游戏或其他应用,并且渲染的图像可以在与服务器或数据中心物理上分开的一个或多个用户设备(例如计算机、视频游戏控制台、智能手机、其他移动设备等)上传输和显示。因此,本文公开的技术可以应用于增强流传输的图像并增强流传输图像的服务,例如NVIDIA GeForce Now(GFN)、Google Stadia等。

机器学习

在诸如PPU 300之类的处理器上开发的深度神经网络(DNN)已用于各种用例,从无人驾驶汽车到更快的药物开发,从在线图像数据库中的自动图像字幕到视频聊天应用程序中的智能实时语言翻译。深度学习是一种对人脑的神经学习过程进行建模,不断学习,不断变得更聪明并随着时间的推移更快地提供更准确结果的技术。最初,成年人教孩子如何正确识别和分类各种形状,最终无需任何指导即可识别形状。同样,深度学习或神经学习系统需要在对象识别和分类方面进行训练,因为它在识别基本对象、被遮挡的对象等方面变得更聪明,更有效,同时还为对象分配了上下文。

在最简单的级别上,人脑中的神经元查看接收到的各种输入,将重要性级别分配给这些输入中的每一个,并将输出传递给其他神经元以对其进行操作。人工神经元是神经网络的最基本模型。在一个示例中,神经元可以接收表示对该神经元正进行训练以识别和分类的对象的各种特征的一个或更多个输入,并且基于该特征在定义对象的形状上的重要性为这些特征中的每一个分配一定的权重。

深度神经网络(DNN)模型包括许多连接节点的多层(例如,神经元、玻尔兹曼机器、径向基函数、卷积层等),可以用大量输入数据对其进行训练以快速解决复杂问题高精度问题。在一个示例中,DNN模型的第一层将汽车的输入图像分解为各个部分,并寻找诸如线条和角度之类的基本图案。第二层组装线以寻找更高级别的图案,例如车轮、挡风玻璃和后视镜。下一层识别车辆的类型,最后几层为输入图像生成标签,以标识特定汽车品牌的模型。

一旦训练了DNN,就可以部署DNN并将其用于在称为推理的过程中识别和分类对象或模式。推理示例(DNN从给定输入中提取有用信息的过程)包括识别存入ATM机的支票上的手写数字、识别照片中的朋友图像、向超过五千万用户提供电影推荐、识别和分类不同类型无人驾驶汽车中的汽车、行人和道路危险,或实时翻译人类语音。

在训练期间,数据在前向传播阶段流经DNN,直到产生指示对应于输入的标签的预测为止。如果神经网络没有正确标记输入,则将分析正确标记和预测标记之间的错误,并在反向传播阶段调整每个特征的权重,直到DNN在训练数据集中正确标记输入和其他输入。训练复杂的神经网络需要大量的并行计算性能,包括PPU 300支持的浮点乘法和加法。推理比训练要少计算密集度,这是对延迟敏感的过程,其中将训练后的神经网络应用于以前从未见过的用于分类图像、翻译语音和推断新信息的新输入。

神经网络在很大程度上依赖于矩阵数学运算,并且复杂的多层网络为了效率和速度都需要大量的浮点性能和带宽。PPU 300拥有数千个处理内核,针对矩阵数学运算进行了优化,并提供数十至数百TFLOPS的性能,是一个能够提供基于深度神经网络的人工智能和机器学习应用所需的性能的计算平台。

此外,应用本文公开的一种或更多种技术生成的图像可以用于训练、测试或认证用于识别现实世界中的对象和环境的DNN。这样的图像可以包括道路、工厂、建筑物、城市环境、农村环境、人类、动物以及任何其他物理物体或真实环境的场景。此类图像可用于训练、测试或认证在机器或机器人中使用的DNN,以操纵、处理或修改现实世界中的物理对象。此外,此类图像可用于训练、测试或认证在自动驾驶车辆中使用的DNN,以在现实世界中导航和移动车辆。另外,应用本文公开的一种或更多种技术生成的图像可以用于向这些机器、机器人和车辆的用户传达信息。

注意,本文描述的技术可以体现在存储在计算机可读介质中的可执行指令中,以供基于处理器的指令执行机器、系统、装置或设备使用或与其结合使用。本领域技术人员将理解,对于一些实施例,可以包括各种类型的计算机可读介质来存储数据。如本文所使用的,“计算机可读介质”包括用于存储计算机程序的可执行指令的任何合适的介质中的一个或更多个,使得指令执行机器、系统、装置或设备可以计算机可读介质中读取(或获取)指令,并执行用于执行所描述的实施例的指令。合适的存储格式包括电子、磁性、光学和电磁格式中的一种或多种。常规示例性计算机可读介质的非详尽列表包括:便携式计算机软盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦可编程只读存储器(EPROM)、闪存设备、光学存储设备包括便携式光盘(CD)、便携式数字视频光盘(DVD)等。

应该理解,附图中示出的组件的布置是出于说明的目的,并且其他布置也是可能的。例如,本文描述的一个或更多个元件可以全部或部分地实现为电子硬件组件。可以以软件、硬件或软件和硬件的组合来实现其他元件。而且,可以组合这些其他元件中的一些或全部,可以完全省略一些其他元件,并且可以添加附加组件,同时仍然实现本文所述的功能。因此,本文描述的主题可以体现为许多不同的变化,并且所有这样的变化都被认为在权利要求的范围内。

为了促进对本文所述主题的理解,根据动作序列描述了许多方面。本领域技术人员将认识到,各种动作可以由专用电路或电路系统,由一个或多个处理器执行的程序指令,或两者的组合来执行。本文对任何动作序列的描述并非旨在暗示必须遵循为执行该序列而描述的特定顺序。除非本文另外指出或与上下文明显矛盾,否则本文描述的所有方法可以以任何合适的顺序执行。

在描述主题的上下文中(特别是在所附权利要求的上下文中)术语“一”和“一个”和“所述”以及类似的引用的使用应解释为涵盖单数形式和单数形式,除非本文另有说明或与上下文明显矛盾。术语“至少一个”后面是一个或更多个项目的列表(例如,“A和B中的至少一个”)应理解为是指从所列项目(A或B)中选择的一个项目)或所列项目(A和B)中两个或更多个的任意组合,除非本文另有说明或与上下文明显矛盾。此外,前述描述仅出于说明的目的,而非出于限制的目的,因为所寻求的保护范围由下文所述的权利要求及其等同形式限定。除非另外要求,否则本文提供的任何和所有示例或示例性语言(例如“诸如”)的使用仅旨在更好地说明主题,并且不对主题的范围构成限制。在权利要求书和书面说明书中,术语“基于”和其他类似的短语表示产生结果的条件的使用,并不旨在排除产生该结果的任何其他条件。说明书中的任何语言都不应解释为指示任何未要求保护的要素对于实施所要求保护的发明是必不可少的。

43页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:轨到轨输入比较器用失调电压修调电路

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!