在光学接近度校正流中对演进掩模形状的并行掩模规则检查的制作方法
未命名
09-16
阅读:132
评论:0

在光学接近度校正流中对演进掩模形状的并行掩模规则检查
背景技术:
1.由于集成电路几何结构已经缩小,因此开发了计算光刻以确保用于制造电路的掩模导致最佳可能的芯片产量和短的制造周转时间。处理目标集成电路设计的初始(期望)布局以计算晶圆图像(例如,使用光掩模制造“印刷”在晶圆上的电路)。计算光刻(也称为逆光刻技术(ilt)或光学接近度校正(opc))补偿导致实际晶圆图像与初始布局不匹配的光学光刻效应(例如,衍射)。换言之,opc补偿由光刻效应引起的误差。误差的示例包括线的变窄或变宽、角的变圆和线端的缩短。opc产生将尽可能接近目标集成电路设计构图的所建议的掩模形状变化。
2.在由opc确定所建议的掩模形状变化之后,执行掩模(制造)规则检查(mrc)以确保当使用由这些掩模所产生的晶圆图像(具有所建议的掩模形状变化)制造集成电路时可以满足所希望的产率。掩模规则限定针对掩模形状的一组上下文相关的几何约束(例如,最小边缘至边缘内部和外部、角至角、多边形区域等)。针对opc的每次迭代执行mrc。opc的结果是所建议的边缘分段移动,并且mrc算法变化边缘分段移动的量,使得所得到的掩模形状是可制造的。
3.当执行常规mrc时,遍历限定掩模形状的边缘列表,并且调整违反规则的每个边缘以去除或减少该违规。然而,去除一个违规可能引入新的违规。以相同的顺序重复遍历边缘列表,直到违规被去除。因为每次以相同的顺序遍历边缘并且独立地确定每个调整,所以传统的mrc技术通常引入掩模边缘遍历偏差。例如,移动第一边缘远离第二边缘以校正违规可以不对称地增加多边形的宽度。理想地,每个校正应尽可能对称。例如,第一边缘和第二边缘都应该移动相等的量,以对称地增加多边形的宽度。需要解决这些问题和/或与现有技术相关联的其他问题。
技术实现要素:
4.本公开的实施例涉及在光学接近度校正(opc)流中对演进掩模形状进行并行掩模规则检查。公开了并行执行掩模(制造)规则检查、共享信息以在违规被纠正时保持对称性的系统和方法。在实施例中,共享信息还用于最小化由opc引起的所建议的掩模形状的几何区域的变化。
5.与常规系统(如以上描述的那些系统)相比,对多个边并行地执行mrc,从而在不同边之间共享信息以促进对称性。在实施例中,并行调整所有边缘以减少掩模边缘遍历偏差。在实施例中,在识别mrc违规行为之前,定义掩模形状的边缘的列表被重新组织成树结构。树结构提供了用于确定掩模形状中的哪些其他边缘具有与包括在相同掩模形状中的边缘相关联的依赖违规行为或者限定相邻掩模形状的有效结构。
6.在一个实施例中,该方法包括接收边缘的集合,该边缘的集合限定了用于集成电路的制造的掩模形状并且识别与这些掩模形状相对应的至少一个掩模制造规则违反行为。并行地计算减少或去除至少一个掩模制造规则违反的边缘的集合的调整。根据所计算的调整来调整所述边缘的集合中的至少一个边缘,以产生经调整的边缘的集合。在实施例中,掩
模形状包括初始形状、建议的变化以及对掩模形状的最终变化两者。
附图说明
7.下面参考附图详细描述用于在光学接近度校正流中对演进掩模形状进行并行掩模规则检查的本系统和方法,其中:
8.图1a示出了根据现有技术的针对掩模边缘的多边缘依赖性。
9.图1b示出了适合用于实现本公开的一些实施例的计算光刻方法的流程图。
10.图1c示出了适合用于实现本公开的一些实施例的图1b中所示的并行mrc步骤的流程图。
11.图2a示出了根据现有技术的示例初始掩模形状和所建议的掩模形状变化。
12.图2b示出了根据现有技术的制造规则和潜在违规。
13.图2c示出了根据实施例的使用并行mrc流进行调整的经调整的掩模形状。
14.图2d示出了根据实施例的制造规则和并行mrc流调整的掩模形状。
15.图2e示出了根据实施例的初始掩模形状、所建议的掩模形状变化、以及并行mrc流调整的掩模形状。
16.图2f示出了根据现有技术使用常规mrc流修改的掩模形状。
17.图3示出了适用于实现本公开的一些实施例的示例并行处理单元。
18.图4a示出了适用于实现本公开的一些实施例的图3的并行处理单元内的示例通用处理集群。
19.图4b示出了适用于实现本公开的一些实施例的图3的并行处理单元的示例存储器分区单元。
20.图4c示出了适用于实现本公开的一些实施例的图4a的流式多处理器的示例。
21.图5a为适用于实现本公开的一些实施例的、使用图4的ppu实现的处理系统的概念图。
22.图5b示出了其中可以实现各种先前实施例的各种架构和/或功能的示例性系统。
23.图5c示出了在至少一个实施例中可以用于训练和利用机器学习的示例性系统的组件。
24.图6示出了适用于实现本公开的一些实施例的示例性流式传输系统。
具体实施方式
25.公开了涉及在光学接近度校正(opc)流中对演进掩模形状进行并行掩模规则检查的系统和方法。并行对多个边缘执行掩模(制造)规则检查(mrc),在不同边缘之间共享信息以加速mrc值测量、违规识别和/或掩模形状边缘调整。在实施例中,并行调整所有边缘以减少掩模边缘遍历偏差。在实施例中,在识别mrc违规行为之前,定义掩模形状的边缘的列表被重新组织成树结构。树结构提供了用于确定掩模形状中的哪些其他边缘具有依赖违规的高效结构。在实施例中,调整掩模形状边缘以促进对称性。在实施例中,调整掩模形状边缘以最小化由opc引起的所建议的掩模形状的掩模形状几何区域的变化。
26.随着集成电路几何结构已经缩小,计算光刻已经发展以确保用于制造集成电路的掩模导致满足目标芯片产量和期望的制造周转时间。根据opc处理目标集成电路设计的初
始布局以计算晶圆图像(例如,使用光掩模在晶圆上“印刷”所制造的电路)。补偿导致实际晶圆图像与初始布局不匹配的光刻效应(例如,衍射)。换言之,opc补偿由光刻效应引起的误差。误差的示例包括线的变窄或变宽、角的变圆和线端的缩短。
27.opc产生建议的掩模形状变化,当被应用于初始布局时,这些变化补偿光刻效应,从而使得所制造的掩模将在晶圆上尽可能接近目标设计进行图案化。所建议的掩模形状变化可以包括附加的掩模形状(例如,多边形)和/或现有掩模形状的修改。opc还可以生成辅助特征、装饰、或注释,这些辅助特征、装饰、或注释没有被合并到掩模形状中,而是可以用于引导掩模的制造。例如,辅助特征可控制特定掩模形状的照明角度的聚焦深度。在由opc确定所建议的掩模形状变化之后,执行mrc以确保当使用由这些掩模(具有所建议的掩模形状变化)所产生的晶圆图像来制造集成电路时可以满足所希望的产率。确保掩模形状可制造的制造掩模规则定义一组取决于上下文的几何约束(例如,最小边缘至边缘内部和外部、角至角、多边形区域等)。
28.图1a示出了根据现有技术的针对掩模边缘的多边缘依赖性。制造掩模规则101限定相邻掩模形状的外部边缘至边缘最小间隔距离。箭头指示由opc生成的建议的边缘变化。注意,所建议的边缘变化的应用可能导致一个或更多个制造掩模规则的违规。制造掩模规则102限定相邻掩模形状的外部角至角最小间隔距离。制造掩模规则件103为掩模形状限定内凹口最小长度。制造掩模规则104限定相邻掩模形状的外部边缘至边缘最小间隔距离。制造掩模规则105限定相邻掩模形状的外部角至角最小间隔距离。制造掩模规则106和107各自限定了掩模形状的最小微动长度。建议的边缘变化中的一个或更多个可导致至少一个新的违规、增加违规值和/或减小违规值。
29.制造掩模规则109和110各自限定了相邻掩模形状的外部边缘至边缘最小间隔距离。制造掩模规则111限定相邻掩模形状的外部角至角最小间隔距离。制造掩模规则108和112各自限定了掩模形状内的内部边缘至边缘最小距离。制造掩模规则113和114各自限定了掩模形状的最小微动长度。制造掩模规则115限定掩模形状内的内部角至角最小间隔距离。制造掩模规则116限定掩模形状的内凹口最小长度。
30.当执行常规mrc时,遍历定义掩模形状的边缘列表,并且调整违反规则的每个边缘以去除或减少该违规。然而,去除一个违规可能引入新的违规。以相同的顺序重复遍历边缘列表,直到违规被去除。因为每次以相同顺序遍历边缘,并且独立地确定每次调整以去除特定违规,所以常规mrc技术通常引入掩模边缘遍历偏差。例如,将所提议的变化117应用于第一边缘导致制造掩模规则110的新违规。为了去除新的违规并避免违反制造掩模规则116,第二边缘119和第三边缘118可各自分别朝向左侧调整。调整第二边缘119和第三边缘118非对称地改变由第二边缘119和第三边缘118限定的掩模形状的宽度。理想地,每个校正应尽可能对称,意味着应在相反的方向上进行相等的调整。例如,第二边缘119和第三边缘118两者应当移动相等的量以增加或减小由第二边缘119和第三边缘118对称限定的掩模形状(多边形)的宽度。
31.图1b示出了适合用于实现本公开的一些实施例的计算光刻方法120的流程图。本文描述的方法120的每个框包括可使用硬件、固件和/或软件的任何组合来执行的计算过程。例如,各个功能可以通过执行存储在存储器中的指令的处理器来实现。该方法还可以体现为存储在计算机存储介质上的计算机可用指令。该方法可以由独立应用、服务或托管服
务(独立或与其他托管服务组合)、或到另一产品的插件来提供,仅举几例。然而,此方法可附加地或替代地由任何一个系统或系统的任何组合来执行,所述系统包含(但不限于)本文中所描述的系统。此外,本领域普通技术人员将理解,执行方法120的任何系统都在本公开的实施例的范围和精神内。
32.在步骤125,集成电路设计的层的掩模形状被分割成多个图块。注意,大的设计被细分成多个图块,并且一个或更多个图块可以被并行或串行处理。注意,掩模形状可以是直线的,如图1a中所示。在实施例中,掩模形状不限于直线形状,并且可以包括具有45
°
边缘、具有任意角度边缘和/或曲线边缘的多边形。
33.在步骤130,针对每个图块计算晶圆上的图像。在实施例中,对多个制造过程点计算图像。在步骤135,计算光致抗蚀剂和蚀刻轮廓,估计将使用对应于每个图块的图像的掩模制造的光致抗蚀剂和蚀刻轮廓。在步骤140,针对每个图块计算opc误差。opc误差计算基于指定的光刻目标和容差。
34.在步骤145,确定每个图块的opc误差是否在预定容差内。当图块中的每一个的opc误差在预定容差内时,在步骤165,图块的结果被组合以提供层的掩模形状。否则,具有不在预定容差内的opc误差的图块前进到步骤150。
35.在步骤150,根据所建议的掩模形状变化来校正opc误差。在步骤155,具有opc误差的每个图块的opc校正的掩模形状由并行mrc处理,该并行mrc调整每个图块的掩模形状以去除或减少掩模可制造性违规。对多个边缘并行地执行mrc,从而在不同边缘之间共享信息以促进对称性。在实施例中,并行调整所有边缘以减少掩模边缘遍历偏差。在实施例中,在识别mrc违规行为之前,定义掩模形状的边缘的列表被重新组织成树结构。树结构提供了用于确定掩模形状中的哪些其他边缘具有依赖违规的高效结构。步骤155的细节结合图1c进行描述。将具有opc误差的每个图块的经调整的掩模形状提供给步骤130以重复该过程,直到所有图块的opc误差在预定容差内。
36.现在将阐述关于各个可选架构和特征的更多说明性信息,根据用户的期望,前述框架可以利用这些可选架构和特征来实现。应当强烈注意的是,为了说明性目的阐述以下信息,并且不应当将以下信息解释为以任何方式进行限制。以下特征中的任一个可以可选地结合有或不排除所描述的其他特征。
37.由于周期性冲突,掩模边缘长度相关的可制造性规则的实施是有挑战性的,该周期性冲突由于动态改变掩模形状、连接边缘被存储在集成电路设计的输入多边形数据集中的顺序与边缘被存储用于处理的树节点依赖性顺序之间的冲突、以及掩模边缘长度与掩模边缘在动态变化的邻域中的移动之间的周期性依赖性而产生。与常规opc和mrc技术相比,并行mrc方法确保在mrc强制执行中没有固有偏差,这是由于在opc流中遍历掩模边缘的序列。
38.图1c示出了适合用于实施本公开的一些实施例的图1b中所示的步骤155的流程图。在步骤156,使用针对所有图块的(opc校正的)掩模形状来构建搜索树。在实施例中,树结构实现并行搜索,并且树可以被构造为四叉树、kd树、r树、边界体积层级等。在实施例中,定义掩模形状的各个边缘、点和多边形各自与树的叶节点相关联。该树是用于存储和查询掩模形状属性的高效数据结构。在实施例中,掩模形状属性包括用于每个边缘的状态数据,包括但不限于mrc违规类型和大小、不引入新的mrc违规或恶化现有mrc违规的最大可能调
整、去除mrc违规和修复opc误差的理想调整。
39.在实施例中,保留多边形数据集中的掩模边缘的输入顺序的索引方案(连接的相邻边缘信息所需要的以便强制执行边缘长度依赖规则)维护用于边缘位置依赖排序的单独列表。单独的列表可在树索引算法内就地更新,以防止输入多边形数据集的任何冗余副本。与索引框架相关联的树遍历方案采用树遍历例程,该树遍历例程使用边缘位置依赖排序来定位最近邻居以及与最近邻居相关联的属性和状态信息。
40.在步骤158,针对图块内的每个边缘测量mrc值。在实施例中,每个图块被分配给处理核心并且每个边缘被分配执行线程用于由处理核心进行并行mrc处理。测量的mrc值可以指示边缘不与mrc违规行为相关联或者边缘与一个或更多个mrc违规行为相关联。在实施例中,所测量的mrc值作为边缘状态信息被存储在树中。在实施例中,测量掩模形状的区域并将其存储为状态信息。在实施例中,使用高斯方法或格林定理来测量区域,高斯方法或格林定理可以通过多边形和/或边缘的数量来并行化。在实施例中,使用gpu处理器和树结构来针对设计并行地计算区域测量比使用常规cpu处理器计算的区域测量快968倍。
41.在一个实施例中,通过遍历树以针对每条输入边定位邻元素、检查每条边与相邻边的边形属性(平行和重叠)并计算边与相邻边之间的带符号距离(外部为正,内部边与边交互为负),针对一条或更多条边并行地测量mrc值。在实施例中,使用gpu处理器和树结构并行执行的并行的边至边和角至角测量计算比使用cpu处理器执行的类似计算快多达120倍。角至角测量要求检查形成两个角的四个边缘需要不重叠并且在相对的象限中。因此,需要知道边缘连接(形成拐角的下一个或前一个边缘)来执行测量。可特别优化平行角至角(内部和外部)测量计算以最小化无量化存储器存取的使用和大量浮点运算,且消除冗余边缘至点测量。
42.在步骤160,针对每个边缘计算边缘状态信息。在实施例中,针对一个或更多个图块内的一个或更多个边缘并行计算边缘状态信息。在实施例中,图块内的边缘被包括在边缘的集合中。mrc值可以用于识别掩模形状内或不同掩模形状之间的mrc掩模规则违反行为。在实施例中,将预定阈值数量的违规或违规值应用于确定特定边缘或图块是否具有违规。在实施例中,边缘状态信息包括去除或减少边缘的mrc违规的mrc符合性调整。在一实施例中,对一个或更多个边缘的调整可对应于没有边缘的移动。在实施例中,灵活性范围可以被计算并存储为用于每个mrc违规的边缘状态信息,以使得能够调整去除或减少mrc违规的一个或更多个边缘。
43.在步骤162,没有mrc违规的图块可以前进至步骤130。具有至少一个mrc违规的图块前进到步骤164。在步骤164,将在步骤160计算的边缘状态信息与相邻边缘共享。状态信息的共享使得能够在调整每个边缘时在相邻边缘之间协作。状态信息的共享还使得能够预测可能引入新违规的边缘之间的交互。在实施例中,针对图块中的
‘
边缘’的至少一部分并行地计算调整以减少或去除mrc违规行为。
44.在步骤166,基于共享的边缘状态信息和约束来并行调整一个或更多个图块内的一个或更多个边缘。在实施例中,调整边缘以校正mrc违规,同时还考虑边缘和至少一个其他边缘之间的掩模可制造性规则。边缘和至少一个其他边缘可以限定单个多边形或可以限定不同的多边形或非曼哈顿形状。除了去除和减少mrc违规之外,还影响调整的约束可以包括但不限于最小化或限制经调整的掩模形状与所提议的掩模形状之间的掩模形状几何区
域的变化,最小化或限制经调整的掩模形状与初始掩模形状之间的差异,以及针对对称的初始掩模形状维持掩模形状对称。
45.并行mrc 155可以在多个遍次中执行,其中,每个遍次针对具有掩模边缘的邻元素的每个掩模边缘执行测量,并且跨不同规则计算保守的mrc兼容调整。在每个遍次期间在相邻掩模边缘之间共享状态信息可以通过考虑用于促成mrc违规行为的多个掩模边缘的状态信息和/或与掩模边缘相关联的多个mrc违规行为来提取边缘的灵活性。在一次或更多次通过并行mrc 155之后,调整收敛以去除mrc违规。
46.此外,并行mrc算法可以通过使用由角至角到边缘至边缘掩模形状之间的转换所提供的几何灵活性来改善opc收敛,反之亦然。在实施例中,子遍次(在并行mrc 155的每个遍次内)用于识别当掩模边缘被调整时可能在边缘至边缘(e2e)和角至角(c2c)配置之间转变的掩模形状。附加的子遍次可执行水平和垂直扫描,以解决由于在这样的过渡中涉及的掩模边缘的同时移动以及在不同类别或类型的制造规则(诸如多边形内和/或多边形间e2e、c2c以及凹口规则)之间的交互而产生的冲突。并行mrc还可以抢先地预测掩模形状之间的交互,这些掩模形状最初不是边缘至边缘或角至角,但是由于中间遍中的大的边缘调整而可能潜在地变成mrc违规。潜在的mrc违规可以存储为状态信息,并且在边缘调整期间被考虑,以确保针对大的调整的mrc一致性。
47.在另一实施例中,调整掩模边缘以产生最终mrc-清洁掩模形状将mrc顺从性表达为布尔可满足性(sat)问题,其中涉及若干相关掩模边缘的每个可制造性约束被铸造为需要结合其他约束求解的布尔子句。
48.图2a示出了根据现有技术的示例初始掩模形状201、202、203、204和205以及所建议的掩模形状变化(虚线形状)。针对初始掩模形状202所建议的掩模形状与初始掩模形状202一致。所建议的掩模形状变化由opc产生,并且可以引入一个或更多个mrc违规。
49.图2b示出了根据现有技术的制造规则200、206、207、208、209和210以及潜在违规。mrc值206可以识别外部角至角违规。制造规则207、208、209和210可以各自标识外部边缘至边缘违规。制造规则200可以识别内部边缘至边缘违规。如图2b所示,针对初始掩模形状202及203所建议的掩模形状之间的测量mrc值大于外部边缘至边缘制造规则208。初始掩模形状204的所建议掩模形状的测量mrc值小于内部边缘至边缘制造规则200。
50.图2c示出了根据实施例的使用并行mrc流进行调整的经调整的掩模形状211、213、214和215。在实施例中,并行mrc流调整所提议的掩模形状,以产生经调整的掩模形状211、213、214和215。初始掩模形状202的经调整的掩模形状与初始掩模形状202一致。要注意的是,与所建议的掩模形状(细虚线形状)相比,经调整的掩模形状211、213、214和215(粗虚线形状)不同。通过对称地调整针对初始掩模形状204的所提议的掩模形状的相对水平边缘来定义经调整的掩模形状214。经调整的掩模形状213具有大于初始掩模形状203的几何区域并且接近针对初始掩模形状203所提议的掩模形状的几何区域的几何区域。此外,通过对称地调整针对初始掩模形状203和205所建议的掩模形状的垂直边缘,以对称地增加经调整的掩模形状213和215之间的间隔,来定义经调整的掩模形状213和215。类似地,通过对称地调整针对初始掩模形状201和203所建议的掩模形状的垂直边缘,以对称地增加经调整的掩模形状211和213之间的间距,来定义经调整的掩模形状211和213。
51.图2d示出了根据实施例的制造规则200、206、207、208、209和210以及并行mrc流调
整的掩模形状211、213、214和215。经调整的掩模形状211、213、214和215是完成并行mrc流的至少一遍的结果。经调整的掩模形状211、213、214和215不违反制造规则200、206、207、208、209和210中的任何规则,并且因此是mrc清洁掩模形状。
52.图2e示出了根据实施例的初始掩模形状201、202、203、204和205、所建议的掩模形状变化、以及并行mrc流调整的掩模形状221、222、223、224和225。掩模形状221、222、223、224和225对应于初始掩模形状201、202、203、204和205。
53.图2f示出了根据现有技术使用常规mrc流修改的掩模形状231、232、233、234、和235。虽然掩模形状231、232、233、234和235也是mrc清洁的,但是掩模形状231、233、234和235不会以分别与初始掩模形状201、203、204和205相比保持几何对称的方式修改。具体而言,掩模形状233的垂直边缘朝向掩模形状235的相对垂直边缘移动,该相对垂直边缘与初始掩模形状205的垂直边缘相比保持静止。类似地,掩模形状233的垂直边缘移动远离掩模形状231的相对垂直边缘,使得两个不同掩模形状的两个相对边缘在相同方向上移动而非对称地移动。在这两种情况下,不对称地修改两个垂直边缘之间的距离。限定掩模形状234的水平边缘在相同方向上移动,使得不对称地修改初始形状204。
54.当执行常规mrc时,定义掩模形状的边缘列表被遍历并且违反规则的每个边缘被顺序地调整以去除或减少该违规。以相同的顺序重复遍历边缘列表,直到违规被去除。因为每次以相同顺序遍历边缘,并且每次调整未能考虑同时移动多个边缘,所以常规mrc技术通常引入掩模边缘遍历偏差和不能保持几何对称性。例如,移动第一边缘远离第二边缘以校正违规可增加多边形的宽度或两个多边形之间的不对称间隔。理想地,每个校正应尽可能对称。
55.并行mrc流并行地调整多个边缘,从而在不同边缘之间共享信息以鼓励对称性。在实施例中,并行调整所有边缘以减少掩模边缘遍历偏差。在实施例中,在识别mrc违规行为之前,定义掩模形状的边缘的列表被重新组织成树结构。树结构提供了用于确定掩模形状中的哪些其他边缘具有依赖违规的高效结构。在实施例中,通过调整使所建议的掩模形状的几何面积的变化最小化。
56.并行处理架构
57.图3示出了根据一个实施例的并行处理单元(ppu)300。ppu 300可以用于实现图1b中所示的计算光刻方法120和/或图1c中所示的并行mrc 155的一个或更多个步骤。在一个实施例中,诸如ppu 300之类的处理器可以被配置为实现神经网络模型。该神经网络模型可以被实现为由处理器执行的软件指令,或在其他实施例中,该处理器可以包括被配置为处理输入(例如表示值的电信号)集以生成输出集的硬件元件矩阵,所述输出可以表示神经网络模型的激活。在其他的实施例中,神经网络模型可以被实现为由硬件元件矩阵执行的处理和软件指令的组合。实现神经网络模型可以包括通过例如神经网络模型的有监督或无监督训练确定用于神经网络模型的参数集,以及或可替换地,使用该参数集执行推理,以处理新输入集。
58.在一个实施例中,ppu 300是在一个或更多个集成电路设备上实现的多线程处理器。ppu 300是被设计为并行处理许多线程的延迟隐藏架构。线程(例如执行线程)是被配置为由ppu 300执行的指令集的实例化。在一个实施例中,ppu 300是图形处理单元(gpu),其被配置为实现用于处理三维(3d)图形数据的图形渲染管线,以便生成用于在显示设备上如
液晶显示(lcd)显示的二维(2d)图像数据。在其他实施例中,ppu 300可以用于执行通用计算。尽管为了说明的目的本文提供了一个示例性并行处理器,但应特别指出的是,这样的处理器仅出于说明目的进行阐述,并且可采用任何处理器来补充和/或替代该处理器。
59.一个或更多个ppu 300可以被配置为加速数千个高性能计算(hpc)、数据中心、云计算和机器学习应用。ppu 300可被配置为加速众多深度学习系统和应用,所述系统和应用用于自主车辆、模拟、诸如光线或路径追踪之类的计算图形学、深度学习、高精度语音、图像和文本识别系统、智能视频分析、分子模拟、药物发现、疾病诊断、天气预报、大数据分析、天文学、分子动力学模拟、金融建模、机器人、工厂自动化、实时语言翻译、在线搜索优化和个性化用户推荐,等等。
60.如图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)堆叠在每个设备内。
61.nvlink 310互连使得系统能够扩展并且包括与一个或更多个cpu结合的一个或更多个ppu 300,支持ppu 300和cpu之间的高速缓存一致性,以及cpu主控。数据和/或命令可以由nvlink 310通过集线器330发送到ppu 300的其他单元或从其发送,例如一个或更多个复制引擎、视频编码器、视频解码器、电源管理单元等(未明确示出)。结合图5a更详细地描述nvlink 310。
62.i/o单元305被配置为通过互连302从主机处理器(未示出)发送和接收通信(例如,命令、数据等)。i/o单元305可以经由互连302直接与主机处理器通信,或通过一个或更多个诸如内存桥之类的中间设备与主机处理器通信。在一个实施例中,i/o单元305可以经由互连302与诸如一个或更多个ppu 300之类的一个或更多个其他处理器通信。在一个实施例中,i/o单元305实现外围组件互连高速(pcie)接口,用于通过pcie总线进行通信,并且互连302是pcie总线。在替代的实施例中,i/o单元305可以实现其他类型的已知接口,用于与外部设备进行通信。
63.i/o单元305对经由互连302接收的数据包进行解码。在一个实施例中,数据包表示被配置为使ppu 300执行各种操作的命令。i/o单元305将解码的命令传输至这些命令可能指定的ppu 300的各种其他单元。例如,一些命令可以被传输至前端单元315。其他命令可以被传输至集线器330或ppu 300的其他单元,诸如一个或更多个复制引擎、视频编码器、视频解码器、电源管理单元等(未明确示出)。换句话说,i/o单元305被配置为在ppu 300的各种逻辑单元之间和之中路由通信。
64.在一个实施例中,由主机处理器执行的程序在缓冲区中对命令流进行编码,该缓冲区向ppu 300提供工作负载用于处理。工作负载可以包括若干指令和要由那些指令处理的数据。缓冲区是存储器中可由主机处理器和ppu 300两者访问(例如,读/写)的区域。例如,i/o单元305可以被配置为经由通过互连302传输的存储器请求访问连接到互连302的系统存储器中的缓冲区。在一个实施例中,主机处理器将命令流写入缓冲区,然反向ppu 300
传输指向命令流开始的指针。前端单元315接收指向一个或更多个命令流的指针。前端单元315管理所述一个或更多个流,从这些流读取命令并将命令转发到ppu 300的各个单元。
65.前端单元315耦合到调度器单元320,其配置各种gpc 350以处理由所述一个或更多个流定义的任务。调度器单元320被配置为跟踪与由调度器单元320管理的各种任务有关的状态信息。状态可以指示任务被指派给哪个gpc 350,该任务是活动的还是不活动的,与该任务相关联的优先级等等。调度器单元320管理所述一个或更多个gpc 350上的多个任务的执行。
66.调度器单元320耦合到工作分配单元325,其被配置为分派任务以在gpc 350上执行。工作分配单元325可以跟踪从调度器单元320接收到的若干调度的任务。在一个实施例中,工作分配单元325为每个gpc 350管理待处理(pending)任务池和活动任务池。待处理任务池可以包括若干插槽(例如,32插槽),所述插槽包括分配给由特定gpc350处理的任务。活动任务池可以包括若干插槽,所述插槽用于由gpc350活跃地处理的任务。当gpc 350完成任务的执行时,该任务从gpc 350的活动任务池中逐出,并且来自待处理任务池的其他任务之一被选择和调度以在gpc 350上执行。如果gpc 350上的活动任务已经空闲,例如在等待数据依赖性被解决时,那么活动任务可以从gpc 350中逐出并返回到待处理任务池,而待处理任务池中的另一个任务被选择并调度以在gpc 350上执行。
67.工作分配单元325经由xbar(交叉开关)370与一个或更多个gpc350通信。xbar370是将ppu 300的许多单元耦合到ppu 300的其他单元的互连网络。例如,xbar 370可以被配置为将工作分配单元325耦合到特定的gpc 350。虽然没有明确示出,但ppu 300的一个或更多个其他单元也可以经由集线器330连接到xbar 370。
68.任务由调度器单元320管理并由工作分配单元325分派给gpc 350。gpc 350被配置为处理任务并生成结果。结果可以由gpc 350内的其他任务消耗,经由xbar 370路由到不同的gpc 350,或者存储在存储器304中。结果可以经由存储器分区单元380写入存储器304,存储器分区单元380实现用于从存储器304读取数据和向存储器304写入数据的存储器接口。结果可以通过nvlink310传输到另一个ppu 300或cpu。在一个实施例中,ppu 300包括数量为u的存储器分区单元380,其等于耦合到ppu 300的存储器304的独立且不同的存储器设备的数量。下面将结合图4b更详细地描述存储器分区单元380。
69.在一个实施例中,主机处理器执行实现应用程序编程接口(api)的驱动程序内核,其使得能够在主机处理器上执行一个或更多个应用程序以调度操作用于在ppu 300上执行。在一个实施例中,多个计算应用程序由ppu 300同时执行,并且ppu 300为多个计算应用程序提供隔离、服务质量(qos)和独立地址空间。应用程序可以生成指令(例如,api调用),其使得驱动程序内核生成一个或更多个任务以由ppu 300执行。驱动程序内核将任务输出到正在由ppu 300处理的一个或更多个流。每个任务可以包括一个或更多个相关线程组,本文称为线程束(warp)。在一个实施例中,线程束包括可以并行执行的32个相关线程。协作线程可以指代包括执行任务的指令并且可以通过共享存储器交换数据的多个线程。结合图4c更详细地描述线程和协作线程。
70.图4a示出了根据一个实施例的图3的ppu 300的gpc 350。如图4a所示,每个gpc 350包括用于处理任务的多个硬件单元。在一个实施例中,每个gpc 350包括管线管理器410、预光栅操作单元(prop)415、光栅引擎425、工作分配交叉开关(wdx)480、存储器管理单
元(mmu)490以及一个或更多个数据处理集群(dpc)420。应当理解,图4a的gpc 350可以包括代替图4a中所示单元的其他硬件单元或除图4a中所示单元之外的其他硬件单元。
71.在一个实施例中,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中的至少一个以实现神经网络模型和/或计算管线。
72.prop单元415被配置为将由光栅引擎425和dpc 420生成的数据路由到光栅操作(rop)单元,结合图4b更详细地描述。prop单元415还可以被配置为执行颜色混合的优化,组织像素数据,执行地址转换等。
73.光栅引擎425包括被配置为执行各种光栅操作的若干固定功能硬件单元。在一个实施例中,光栅引擎425包括设置引擎、粗光栅引擎、剔除引擎、裁剪引擎、精细光栅引擎和图块聚合引擎。设置引擎接收变换后的顶点并生成与由顶点定义的几何图元关联的平面方程。平面方程被发送到粗光栅引擎以生成图元的覆盖信息(例如,图块的x、y覆盖掩模)。粗光栅引擎的输出被发送到剔除引擎,其中与未通过z-测试的图元相关联的片段被剔除,并且被发送到裁剪引擎,其中位于视锥体之外的片段被裁剪掉。那些经过裁剪和剔除后留下来的片段可以被传递到精细光栅引擎,以基于由设置引擎生成的平面方程生成像素片段的属性。光栅引擎425的输出包括例如要由在dpc 420内实现的片段着色器处理的片段。
74.包括在gpc 350中的每个dpc 420包括m管线控制器(mpc)430、图元引擎435和一个或更多个sm 440。mpc 430控制dpc 420的操作,将从管线管理器410接收到的数据包路由到dpc 420中的适当单元。例如,与顶点相关联的数据包可以被路由到图元引擎435,图元引擎435被配置为从存储器304提取与顶点相关联的顶点属性。相反,与着色程序相关联的数据包可以被发送到sm 440。
75.sm 440包括被配置为处理由多个线程表示的任务的可编程流式处理器。每个sm 440是多线程的并且被配置为同时执行来自特定线程组的多个线程(例如,32个线程)。在一个实施例中,sm 440实现simd(单指令、多数据)体系架构,其中线程组(例如,warp)中的每个线程被配置为基于相同的指令集来处理不同的数据集。线程组中的所有线程都执行相同的指令。在另一个实施例中,sm 440实现simt(单指令、多线程)体系架构,其中线程组中的每个线程被配置为基于相同的指令集处理不同的数据集,但是其中线程组中的各个线程在执行期间被允许发散。在一个实施例中,为每个线程束维护程序计数器、调用栈和执行状态,当线程束内的线程发散时,使线程束和线程束中的串行执行之间的并发成为可能。在另一个实施例中,为每个单独的线程维护程序计数器、调用栈和执行状态,从而在线程束内和线程束之间的所有线程之间实现相等的并发。当为每个单独的线程维护执行状态时,执行相同指令的线程可以被收敛并且并行执行以获得最大效率。下面结合图4c更详细地描述sm 440。
76.mmu 490提供gpc 350和存储器分区单元380之间的接口。mmu 490可以提供虚拟地址到物理地址的转换、存储器保护以及存储器请求的仲裁。在一个实施例中,mmu 490提供用于执行从虚拟地址到存储器304中的物理地址的转换的一个或更多个转换后备缓冲器(tlb)。
77.图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个存储器设备,诸如高带宽存储器堆叠或图形双数据速率版本5的同步动态随机存取存储器或其他类型的持久存储器。
78.在一个实施例中,存储器接口470实现hbm2存储器接口,并且y等于u的一半。在一个实施例中,hbm2存储器堆叠位于与ppu 300相同的物理封装上,提供与常规gddr5 sdram系统相比显著的功率高和面积节约。在一个实施例中,每个hbm2堆叠包括四个存储器裸晶并且y等于4,其中hbm2堆叠包括每个裸晶两个128位通道,总共8个通道和1024位的数据总线宽度。
79.在一个实施例中,存储器304支持单错校正双错检测(secded)误差校正码(ecc)以保护数据。对于对数据损毁敏感的计算应用程序,ecc提供了更高的可靠性。在大型集群计算环境中,ppu 300处理非常大的数据集和/或长时间运行应用程序,可靠性尤其重要。
80.在一个实施例中,ppu 300实现多级存储器层次。在一个实施例中,存储器分区单元380支持统一存储器以为cpu和ppu 300存储器提供单个统一的虚拟地址空间,使得虚拟存储器系统之间的数据能够共享。在一个实施例中,跟踪ppu 300对位于其他处理器上的存储器的访问频率,以确保存储器页面被移动到更频繁地访问该页面的ppu 300的物理存储器。在一个实施例中,nvlink 310支持地址转换服务,其允许ppu 300直接访问cpu的页表并且提供由ppu 300对cpu存储器的完全访问。
81.在一个实施例中,复制引擎在多个ppu 300之间或在ppu 300与cpu之间传输数据。复制引擎可以为未映射到页表的地址生成页面误差。然后,存储器分区单元380可以服务页面误差,将地址映射到页表中,之后复制引擎可以执行传输。在常规系统中,针对多个处理器之间的多个复制引擎操作固定存储器(例如,不可分页),其显著减少了可用存储器。由于硬件分页误差,地址可以传递到复制引擎而不用担心存储器页面是否驻留,并且复制过程是否透明。
82.来自存储器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。
83.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或另一个单元中。
84.图4c示出了根据一个实施例的图4a的流式多处理器440。如图4c所示,sm 440包括指令高速缓存405、一个或更多个(k)调度器单元445、寄存器文件455、一个或更多个处理核心442、一个或更多个特殊功能单元(sfu)452、一个或更多个加载/存储单元(lsu)454、互连网络458、共享存储器/l1高速缓存465。
85.如上所述,工作分配单元325调度任务以在ppu 300的gpc 350上执行。任务被分配给gpc 350内的特定dpc 420,并且如果该任务与着色器程序相关联,则该任务可以被分配给sm 440。调度器单元445接收来自工作分配单元325的任务并且管理指派给sm 440的一个或更多个线程块的指令调度。调度器单元445调度线程块以作为并行线程的线程束执行,其中每个线程块被分配至少一个线程束。在一个实施例中,每个线程束执行32个线程。调度器单元445可以管理多个不同的线程块,将线程束分配给不同的线程块,然后在每个时钟周期期间将来自多个不同的协作组的指令分派到各个功能单元(即,核心442、sfu 452和lsu 454)。
86.协作组是用于组织通信线程组的编程模型,其允许开发者表达线程正在进行通信所采用的粒度,使得能够表达更丰富、更高效的并行分解。协作启动api支持线程块之间的同步性,以执行并行算法。常规的编程模型为同步协作线程提供了单一的简单结构:跨线程块的所有线程的栅栏(barrier)(例如,syncthreads()函数)。然而,程序员通常希望以小于线程块粒度的粒度定义线程组,并在所定义的组内同步,以集体的全组功能接口(collective group-wide function interface)的形式使能更高的性能、设计灵活性和软件重用。
87.协作组使得程序员能够在子块(例如,像单个线程一样小)和多块粒度处明确定义线程组并且执行集体操作,诸如协作组中的线程上的同步性。编程模型支持跨软件边界的干净组合,以便库和效用函数可以在他们本地环境中安全地同步,而无需对收敛进行假设。协作组图元启用合作并行的新模式,包括生产者-消费者并行、机会主义并行以及跨整个线程块网格的全局同步。
88.分派单元448被配置为向一个或更多个功能单元传送指令。在该实施例中,调度器单元445包括两个分派单元448,其使得能够在每个时钟周期期间调度来自相同线程束的两个不同指令。在替代实施例中,每个调度器单元445可以包括单个分派单元448或附加分派单元448。
89.每个sm 440包括寄存器文件455,其提供用于sm 440的功能单元的一组寄存器。在一个实施例中,寄存器文件455在每个功能单元之间被划分,使得每个功能单元被分配寄存器文件455的专用部分。在另一个实施例中,寄存器文件455在由sm 440执行的不同线程束
之间被划分。寄存器文件455为连接到功能单元的数据路径的操作数提供临时存储器。
90.每个sm 440包括l个处理核心442。在一个实施例中,sm 440包括大量(例如128个等)不同的处理核心442。每个核心442可以包括完全管线化的、单精度、双精度和/或混合精度处理单元,其包括浮点运算逻辑单元和整数运算逻辑单元。在一个实施例中,浮点运算逻辑单元实现用于浮点运算的ieee 754-2008标准。在一个实施例中,核心442包括64个单精度(32位)浮点核心、64个整数核心、32个双精度(64位)浮点核心和8个张量核心(tensor core)。
91.张量核心被配置为执行矩阵运算,并且在一个实施例中,一个或更多个张量核心被包括在核心442中。具体地,张量核心被配置为执行深度学习矩阵运算,诸如用于神经网络训练和推理的卷积运算。在一个实施例中,每个张量核心在4
×
4矩阵上运算并且执行矩阵乘法和累加运算d=a
×
b+c,其中a、b、c和d是4
×
4矩阵。
92.在一个实施例中,矩阵乘法输入a和b是16位浮点矩阵,而累加矩阵c和d可以是16位浮点或32位浮点矩阵。张量核心在16位浮点输入数据以及32位浮点累加上运算。16位浮点乘法需要64次运算,产生全精度的积,然后使用32位浮点与4
×4×
4矩阵乘法的其他中间积相加来累加。在实践中,张量核心用于执行由这些较小的元素建立的更大的二维或更高维的矩阵运算。api(诸如cuda 9c++api)公开了专门的矩阵加载、矩阵乘法和累加以及矩阵存储运算,以便有效地使用来自cuda-c++程序的张量核心。在cuda层面,线程束级接口假定16
×
16尺寸矩阵跨越线程束的全部32个线程。
93.每个sm 440还包括执行特殊函数(例如,属性评估、倒数平方根等)的m个sfu 452。在一个实施例中,sfu 452可以包括树遍历单元,其被配置为遍历分层树数据结构。在一个实施例中,sfu 452可以包括被配置为执行纹理图过滤操作的纹理单元。在一个实施例中,纹理单元被配置为从存储器304加载纹理图(例如,纹理像素的2d阵列)并且对纹理图进行采样以产生经采样的纹理值,用于在由sm 440执行的着色器程序中使用。在一个实施例中,纹理图被存储在共享存储器/l1高速缓存465中。纹理单元实现纹理操作,诸如使用mip图(即,不同细节层次的纹理图)的过滤操作。在一个实施例中,每个sm 440包括两个纹理单元。
94.每个sm 440还包括n个lsu 454,其实现共享存储器/l1高速缓存465和寄存器文件455之间的加载和存储操作。每个sm 440包括将每个功能单元连接到寄存器文件455以及共享存储器/l1高速缓存465的互连网络458。在一个实施例中,互连网络458是交叉开关,其可以被配置为将任何功能单元连接到寄存器文件455中的任何寄存器,和共享存储器/l1高速缓存465中的存储器位置。
95.共享存储器/l1高速缓存465是片上存储器阵列,其允许数据存储和sm 440与图元引擎435之间以及sm 440中的线程之间的通信。在一个实施例中,共享存储器/l1高速缓存465包括128kb的存储容量并且在从sm 440到存储器分区单元380的路径中。共享存储器/l1高速缓存465可以用于高速缓存读取和写入。共享存储器/l1高速缓存465、l2高速缓存460和存储器304中的一个或更多个是后备存储。
96.将数据高速缓存和共享存储器功能组合成单个存储器块为两种类型的存储器访问提供最佳的总体性能。该容量可由程序用作不使用共享存储器的高速缓存。例如,如果将共享存储器配置为使用一半容量,则纹理和加载/存储操作可以使用剩余容量。在共享存储
器/l1高速缓存465内的集成使共享存储器/l1高速缓存465起到用于流式传输数据的高吞吐量管线的作用,并且同时提供对频繁重用数据的高带宽和低延迟的访问。
97.当被配置用于通用并行计算时,与图形处理相比,可以使用更简单的配置。具体地,图3所示的固定功能图形处理单元被绕过,创建了更简单的编程模型。在通用并行计算配置中,工作分配单元325将线程块直接指派并分配给dpc 420。块中的线程执行相同的程序,使用计算中的唯一线程id来确保每个线程生成唯一结果,使用sm 440执行程序并执行计算,使用共享存储器/l1高速缓存465以在线程之间通信,以及使用lsu 454通过共享存储器/l1高速缓存465和存储器分区单元380读取和写入全局存储器。当被配置用于通用并行计算时,sm 440还可以写入调度器单元320可用来在dpc 420上启动新工作的命令。
98.ppu 300可以被包括在台式计算机、膝上型计算机、平板电脑、服务器、超级计算机、智能电话(例如,无线、手持设备)、个人数字助理(pda)、数码相机、运载工具、头戴式显示器、手持式电子设备等中。在一个实施例中,ppu 300包含在单个半导体衬底上。在另一个实施例中,ppu 300与一个或更多个其他器件(诸如附加ppu 300、存储器304、精简指令集计算机(risc)cpu、存储器管理单元(mmu)、数字-模拟转换器(dac)等)一起被包括在片上系统(soc)上。
99.在一个实施例中,ppu 300可以被包括在图形卡上,图形卡包括一个或更多个存储器设备。图形卡可以被配置为与台式计算机的主板上的pcie插槽接口。在又一个实施例中,ppu 300可以是包含在主板的芯片集中的集成图形处理单元(igpu)或并行处理器。
100.示例性计算系统
101.具有多个gpu和cpu的系统被用于各种行业,因为开发者在应用(诸如人工智能计算)中暴露和利用更多的并行性。在数据中心、研究机构和超级计算机中部署具有数十至数千个计算节点的高性能gpu加速系统,以解决更大的问题。随着高性能系统内处理设备数量的增加,通信和数据传输机制需要扩展以支持该增加带宽。
102.图5a是根据一个实施例的使用图3的ppu 300实现的处理系统500的概念图。示例性系统500可以分别被配置为实现图1b中所示的计算光刻方法120和/或图1c中所示的并行mrc 155。处理系统500包括cpu 530、交换机510和多个ppu 300以及相应的存储器304。
103.每个ppu 300可以包括,和/或被配置为执行一个或更多个处理核心和/或其组件的功能,例如张量核心(tc)、张量处理单元(tpu)、像素视觉核心(pvc)、视觉处理单元(vpu)、图形处理集群(gpc)、纹理处理集群(tpc)、流多处理器(sm)、树遍历单元(ttu)、人工智能加速器(aia)、深度学习加速器(dla)、算术逻辑单元(alu)、特定于应用的集成电路(asic)、浮点单元(fpu)、输入/输出(i/o)元件、外围组件互连(pci)或外围组件互连快速(pcie)元件,等等。
104.nvlink 310提供每个ppu 300之间的高速通信链路。尽管图5a中示出了特定数量的nvlink 310和互连302连接,但是连接到每个ppu 300和cpu 530的连接的数量可以变化。交换机510在互连302和cpu 530之间接口。ppu 300、存储器304和nvlink 310可以位于单个半导体平台上以形成并行处理模块525。在一个实施例中,交换机510支持两个或更多个在各种不同连接和/或链路之间接口的协议。
105.在另一个实施例(未示出)中,nvlink 310在每个ppu 300和cpu 530之间提供一个或更多个高速通信链路,并且交换机510在互连302和每个ppu 300之间进行接口。ppu 300、
存储器304和互连302可以位于单个半导体平台上以形成并行处理模块525。在又一个实施例(未示出)中,互连302在每个ppu 300和cpu 530之间提供一个或更多个通信链路,并且交换机510使用nvlink 310在每个ppu 300之间进行接口,以在ppu 300之间提供一个或更多个高速通信链路。在另一个实施例(未示出)中,nvlink 310在ppu 300和cpu 530之间通过交换机510提供一个或更多个高速通信链路。在又一个实施例(未示出)中,互连302在每个ppu 300之间直接地提供一个或更多个通信链路。可以使用与nvlink 310相同的协议将一个或更多个nvlink 310高速通信链路实现为物理nvlink互连或者片上或裸晶上互连。
106.在本说明书的上下文中,单个半导体平台可以指在裸晶或芯片上制造的唯一的单一的基于半导体的集成电路。应该注意的是,术语单个半导体平台也可以指具有增加的连接的多芯片模块,其模拟片上操作并通过利用常规总线实现方式进行实质性改进。当然,根据用户的需要,各种电路或器件还可以分开放置或以半导体平台的各种组合来放置。可选地,并行处理模块525可以被实现为电路板衬底,并且ppu 300和/或存储器304中的每一个可以是封装器件。在一个实施例中,cpu 530、交换机510和并行处理模块525位于单个半导体平台上。
107.在一个实施例中,每个nvlink 310的信令速率是20到25千兆位/秒,并且每个ppu 300包括六个nvlink 310接口(如图5a所示,每个ppu 300包括五个nvlink 310接口)。每个nvlink 310在每个方向上提供25千兆位/秒的数据传输速率,其中六条链路提供300千兆位/秒。当cpu 530还包括一个或更多个nvlink 310接口时,nvlink 310可专门用于如图5a所示的ppu到ppu通信,或者ppu到ppu以及ppu到cpu的某种组合。
108.在一个实施例中,nvlink 310允许从cpu 530到每个ppu 300的存储器304的直接加载/存储/原子访问。在一个实施例中,nvlink 310支持一致性操作,允许从存储器304读取的数据被存储在cpu 530的高速缓存分层结构中,减少了cpu 530的高速缓存访问延迟。在一个实施例中,nvlink 310包括对地址转换服务(ats)的支持,允许ppu 300直接访问cpu 530内的页表。一个或更多个nvlink 310还可以被配置为以低功率模式操作。
109.图5b示出了示例性系统565,其中可以实现各种先前实施例的各种体系架构和/或功能。示例性系统565可以分别被配置为实现图1b中所示的计算光刻方法120和/或图1c中所示的并行mrc 155。
110.如图所示,提供了一种系统565,其包括连接到通信总线575的至少一个中央处理单元530。通信总线575可以直接或间接地耦合以下设备中的一个或更多个:主存储器540,网络接口535,cpu 530,显示设备545,输入设备560,交换机510和并行处理系统525。通信总线575可以使用任何适当的协议实现,并且可以表示一个或更多个链路或总线,例如地址总线、数据总线、控制总线或其组合。通信总线575可以包括一种或多种总线或链路类型,例如行业标准架构(isa)总线、扩展行业标准架构(eisa)总线、视频电子标准协会(vesa)总线、外围组件互连(pci)总线、外围组件互连高速(pcie)总线、超级传输和/或另一种类型的总线或链路。在一些实施例中,存在组件之间的直接连接。作为一个示例,cpu 530可以直接连接到主存储器540。此外,cpu 530可以直接连接到并行处理系统525。在存在组件之间的直接或点对点连接的情况下,通信总线575可以包括实现该连接的pcie链路。在这些示例中,pci总线不必包括在系统565中。
111.尽管利用线条将图5b的不同方框示为经由通信总线575连接,但是这并不预期是
限制性的并且只是为了清楚起见。例如,在一些实施例中,诸如显示设备545之类的呈现组件可以被认为是i/o组件,例如输入设备560(例如如果显示器为触摸屏的话)。作为另一个示例,cpu 530和/或并行处理系统525可以包括存储器(例如,主存储器540可以表示除了并行处理系统525、cpu 530之外的存储设备,和/或其他组件)。换言之,图5b的计算设备仅仅是说明性的。在诸如“工作站”、“服务器”、“膝上型电脑”、“台式电脑”、“平板电脑”、“客户端设备”、“移动设备”、“手持式设备”、“游戏控制台”、“电子控制单元(ecu)”、“虚拟现实系统”和/或其他设备或系统类型之类的类别之间不进行区分,因为所有这些都预期处于图5b的计算设备的范围内。
112.系统565也包括主存储器540。控制逻辑(软件)和数据存储在主存储器540中,该主存储器可以采取各种各样的计算机可读介质的形式。计算机可读介质可以是可以被系统565访问的任何可用的介质。计算机可读介质可以包括易失性和非易失性介质以及可去除和不可去除介质。举例而言且非限制性地,计算机可读介质可以包括计算机存储介质和通信介质。
113.计算机存储介质可以包括以任何方法或技术实现的易失性和非易失性介质和/或可去除和不可去除介质以用于存储诸如计算机可读指令、数据结构、程序模块和/或其他数据类型之类的信息。例如,主存储器540可以存储诸如操作系统之类的计算机可读指令(例如,其表示程序和/或程序元素)。计算机存储介质可以包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字多功能盘(dvd)或其他光盘存储装置、磁盒、磁带、磁盘存储装置或其他磁性存储设备,或可以用于存储希望的信息以及可以被系统565访问的任何其他介质。当在本文使用时,计算机存储介质不包括信号本身。
114.计算机存储介质可以在诸如载波或其他传输机制之类的调制数据信号中包含计算机可读指令、数据结构、程序模块或其他数据类型,并且包括任何信息输送介质。术语“调制数据信号”可以指这样的信号,该信号使它的特性中的一个或更多个以这样的将信息编码到该信号中的方式设置或变化。举例而言且非限制性地,计算机存储介质可以包括诸如有线网络或直接有线连接之类的有线介质,以及诸如声音、rf、红外和其他无线介质之类的无线介质。任何以上所述的组合也应当包括在计算机可读介质的范围内。
115.当被执行时,计算机程序使得系统565能够执行各种功能。cpu 530可以被配置为执行所述计算机可读指令中的至少一些以控制系统565的一个或更多个组件执行本文描述的方法和/或过程中的一个或更多个。cpu 530中的每一个可以包括能够同时处理众多软件线程的一个或更多个核心(例如一个、两个、四个、八个、二十八个、七十二个等等)。取决于实现的系统565的类型,cpu 530可以包括任何类型的处理器,并且可以包括不同类型的处理器(例如,用于移动设备的具有较少核心的处理器,以及用于服务器的具有较多核心的处理器)。例如,取决于系统565的类型,处理器可以是使用精简指令集计算(risc)实现的高级risc机器(arm)处理器或使用复杂指令集计算(cisc)实现的x86处理器。除了一个或更多个微处理器或诸如数学协处理器之类的补充协处理器之外,系统565可以包括一个或更多个cpu 530。
116.除了cpu 530之外或可替换地,并行处理模块525可以被配置为执行所述计算机可读指令中的至少一些以控制系统565的一个或更多个组件执行本文描述的方法和/或过程中的一个或更多个。并行处理模块525可以由系统565用于渲染图形(例如3d图形)或执行通
用计算。例如,并行处理模块525可以用于gpu上的通用计算(gpgpu)。在实施例中,cpu 530和/或并行处理模块525可以分立地或联合地执行所述方法、过程和/或其部分的任意组合。
117.系统565也包括输入设备560、并行处理系统525和显示设备545。显示设备545可以包括显示器(例如监视器、触摸屏、电视屏、平视显示器(hud)、其他显示器类型或其组合)、扬声器和/或其他呈现组件。显示设备545可以接收来自其他组件(例如并行处理系统525、cpu 530等等)的数据,并且输出该数据(例如图像、视频、声音等等)。
118.网络接口535可以使得系统565能够逻辑耦合到其他设备,所述其他设备包括输入设备560、显示设备545和/或其他组件,其中一些可以嵌入到(例如集成到)系统565中。说明性输入设备560包括麦克风、鼠标、键盘、操纵杆、游戏垫、游戏控制器、卫星天线、扫描仪、打印机、无线设备等等。输入设备560可以提供自然用户界面(nui),其处理用户生成的空中手势、语音或其他生理输入。在一些实例中,可以将输入传输至适当的网络元件以供进一步处理。nui可以实现语音识别、手写笔识别、面部识别、生物特征识别、屏幕上和邻近屏幕的手势识别、空中手势、头眼跟踪以及与系统565的显示器关联的触摸识别(如下文中更详细地描述的)。系统565可以包括用于手势检测和识别的深度照相机,例如立体照相机系统、红外照相机系统、rgb照相机系统、触摸屏技术及其组合。此外,系统565可以包括允许实现运动检测的加速度计或陀螺仪(例如作为惯性测量单元(imu)的部分)。在一些示例中,加速度计或陀螺仪的输出可以由系统565用于渲染沉浸式增强现实或虚拟现实。
119.此外,系统565可以出于通信的目的通过网络接口535耦合到网络(例如电信网络、局域网(lan)、无线网络、诸如因特网之类的广域网(wan)、对等网络、电缆网络等等)。系统565可以包括在分布式网络和/或云计算环境内。
120.网络接口535可以包括一个或更多个接收器、发射器和/或收发器,其使得系统565能够经由包括有线和/或无线通信的电子通信网络与其他计算设备通信。网络接口535可以被实现为网络接口控制器(nic),该网络接口控制器包括一个或更多个数据处理单元(dpu)以执行操作,如(例如但不限于)分组解析和加速网络处理和通信。网络接口535可以包括允许实现通过若干不同网络中的任意网络通信的组件和功能,所述网络例如无线网络(例如wi-fi、z波、蓝牙、蓝牙le、zigbee等等)、有线网络(例如通过以太网或infiniband的通信)、低功率广域网(例如lorawan、sigfox等等)和/或因特网。
121.系统565也可以包括辅助存储装置(未示出)。辅助存储装置610包括例如硬盘驱动器和/或表示软盘驱动器、磁带驱动器、紧密盘驱动器、数字多功能盘(dvd)驱动器、记录设备、通用串行总线(usb)闪存的可去除存储驱动器。可去除存储驱动器以众所周知的方式从可去除存储单元读和/或写到可去除存储单元。系统565也可以包括硬接线电源、电池电源或其组合(未示出)。该电源可以向系统565供电以使得系统565的组件能够操作。
122.前述模块和/或设备中的每一个甚至可以位于单个半导体平台上以形成系统565。可替换地,各种不同的模块也可以按照用户的愿望单独地放置或位于半导体平台的各种组合中。尽管上面描述了各个不同的实施例,但是应当理解,它们仅仅通过示例的方式且非限制性地给出。因此,优选实施例的宽度和范围应当不受限于上面描述的任何示例性实施例,而是应当仅仅根据下面的权利要求及其等效物限定。
123.示例网络环境
124.适合用于实现本公开的实施例的网络环境可以包括一个或更多个客户端设备、服
务器、附接到网络的存储装置(nas)、其他后端设备和/或其他设备类型。客户端设备、服务器和/或其他设备类型(例如每个设备)可以在图5a的处理系统500和/或图5b的示例性系统565的一个或更多个实例上实现,例如,每个设备可以包括处理系统500和/或示例性系统565的相似的组件、特征和/或功能。
125.网络环境的组件可以经由网络彼此通信,所述网络可以是有线的、无线的或兼而有之。网络可以包括多个网络或网络的网络。举例而言,网络可以包括一个或更多个广域网(wan)、一个或更多个局域网(lan)、一个或更多个公共网络——例如因特网,和/或公共交换电话网络(pstn),和/或一个或更多个私有网络。在网络包括无线电信网络的情况下,诸如基站、通信塔或甚至接入点之类的组件(以及其他组件)可以提供无线连接性。
126.兼容的网络环境可以包括一个或更多个对等网络环境——在该情况下,服务器可以不包括在网络环境中,以及一个或更多个客户端-服务器网络环境——在该情况下,一个或更多个服务器可以包括在网络环境中。在对等网络环境中,本文关于服务器描述的功能可以在任意数量的客户端设备上实现。
127.在至少一个实施例中,网络环境可以包括一个或更多个基于云的网络环境、分布式计算环境、其组合等等。基于云的网络环境可以包括框架层、作业调度器、资源管理器以及在一个或更多个服务器上实现的分布式文件系统,所述服务器可以包括一个或更多个核心网络服务器和/或边缘服务器。框架层可以包括支持软件层的软件和/或应用程序层的一个或更多个应用程序的框架。该软件或应用程序可以分别包括基于web的服务软件或应用程序。在实施例中,客户端设备中的一个或更多个可以使用基于web的服务软件或应用程序(例如通过经由一个或更多个应用编程接口(api)访问服务软件和/或应用程序)。框架层可以是但不限于例如可以将分布式文件系统用于大规模数据处理(例如“大数据”)的免费开源软件web应用程序框架类型。
128.基于云的网络环境可以提供实现本文描述的计算和/或数据存储功能(或其一个或更多个部分)的云计算和/或云存储。这些不同功能中的任何功能可以从中心或核心服务器(例如一个或更多个数据中心的中心或核心服务器,所述数据中心可以跨州、地区、国家、全球等等分布)分布在多个位置。如果到用户(例如客户端设备)的连接相对靠近边缘服务器,那么核心服务器可以将所述功能的至少一部分指派给边缘服务器。基于云的网络环境可以是私有的(例如限于单个组织),可以是公共的(例如对于许多组织可用),和/或其组合(例如混合云环境)。
129.客户端设备可以包括图5a的示例处理系统500和/或图5b的示例性系统565的组件、特征和功能中的至少一些。举例而言且非限制性地,客户端设备可以实施为个人计算机(pc)、膝上型计算机、移动设备、智能电话、平板计算机、智能手表、可穿戴计算机、个人数字助理(pda)、mp3播放器、虚拟现实头戴式视图器、全球定位系统(gps)或设备、视频播放器、视频照相机、监视设备或系统、车辆、船、飞船、虚拟机、无人机、机器人、手持式通信设备、医院设备、游戏设备或系统、娱乐系统、车辆计算机系统、嵌入式系统控制器、遥控器、器具、消费电子设备、工作站、边缘设备、这些划定的设备的任意组合或任何其他适当的设备。
130.机器学习
131.诸如ppu 300之类的处理器上开发的深度神经网络(dnn)已经用于从自动驾驶汽车到更快的药物开发,从在线图像数据库中的自动图像配字幕到视频聊天应用中的智能实
时语言翻译的多种多样的用例。深度学习是一种对人脑的神经学习过程进行建模的技术,其不断地学习、不断地变得更聪明并且随着时间的推移更快速地输送更精确的结果。小孩最初由成年人教导对各种不同的形状进行正确的标识和分类,最终能够在没有任何指导的情况下标识形状。类似地,深度学习或神经学习系统需要在对象识别和分类中进行训练,以便它在标识基本的对象、被遮挡的对象等等方面变得更聪明和更高效,同时也将上下文赋予对象。
132.在最简单的水平下,人脑中的神经元观看接收的各种输入,重要性水平被赋予这些输入中的每一个,并且输出传递至其他神经元以做出反应。人工神经元或感知机是神经网络的最基本模型。在一个示例中,感知机可以接收一个或更多个输入,所述输入表示感知机正被训练对其识别和分类的对象的各种特征,并且这些特征中的每一个基于在定义对象的形状中该特征的重要性而被赋予某个权重。
133.深度神经网络(dnn)模型包括多层许多连接的节点(例如感知机、玻尔兹曼机、径向基函数、卷积层等等),其可以利用巨量的输入数据进行训练以便以高精度快速地解决复杂的问题。在一个示例中,dnn模型的第一层将汽车的输入图像分解为不同的片段并且寻找诸如线条和角之类的基本图案。第二层组装这些线条以便寻找诸如轮子、风挡和镜子之类的更高水平的图案。下一层标识车辆的类型,并且最终几层生成用于输入图像的标记,标识特定汽车品牌的型号。
134.一旦训练了dnn,dnn就可以被部署且用于在称为推理的过程中对对象或图案进行标识和分类。推理(dnn通过其从给定输入中提取有用信息的过程)的示例包括标识存入atm机的支票上的手写数字,标识照片中朋友的图像,将电影推荐输送至超过五千万用户,在无人驾驶汽车中对不同类型的汽车、行人和道路危险进行标识和分类,或实时地翻译人类语言。
135.在训练期间,数据在前向传播阶段中流经dnn,直到产生指示与输入相应的标记的预测。如果神经网络没有正确地标记输入,那么对正确标记与预测的标记之间的误差进行分析,并且在反向传播阶段期间针对每个特征调节所述权重,直到dnn正确地标记所述输入以及训练数据集中的其他输入。训练复杂的神经网络需要大量的并行计算性能,包括ppu 300支持的浮点乘法和加法。推理的计算密集程度低于训练,是个延迟敏感过程,其中将训练的神经网络应用到它之前没有见过的新输入以便对图像分类,检测情绪,标识推荐,识别和翻译语言,并且通常推理出新信息。
136.神经网络严重依赖于矩阵数学运算,并且为了效率和速率二者,复杂的多层网络需要巨量的浮点性能和带宽。利用针对矩阵数学运算优化的且提供数十至数百tflops的性能的数千个处理核心,ppu 300是一种能够提供基于深度神经网络的人工智能和机器学习应用所需的性能的计算平台。
137.图5c示出了根据至少一个实施例的可用于训练和利用机器学习的示例系统555的组件。如将要讨论的,可以由可以在单个实体或多个实体的控制下的单个计算系统或计算设备和资源的各种组合来提供各种组件。此外,可以由不同实体触发、发起或请求各个方面。在至少一个实施例中,可以由与供应商环境506相关联的供应商来指导对神经网络的训练,而在至少一个实施例中,可以由能够通过客户端设备502或其他此类资源访问供应商环境的顾客或其他用户来请求训练。在至少一个实施例中,训练数据(或要由经训练的神经网
络分析的数据)可以由供应商、用户或第三方内容供应商524提供。在至少一个实施例中,客户端设备502可以是例如要代表用户被导航的车辆或对象,该用户可以提交请求和/或接收有助于设备导航的指令。
138.在至少一个实施例中,能够通过至少一个网络504提交请求以便由供应商环境506接收。在至少一个实施例中,客户端设备可以是使得用户能够生成和发送这样的请求的任何适当的电子和/或计算设备,诸如但不限于台式计算机、笔记本计算机、计算机服务器、智能手机、平板电脑、游戏控制台(便携式或其他方式)、计算机处理器、计算逻辑和机顶盒。一个或更多个网络504可以包括用于传输请求或其他这样的数据的任何适当的网络,例如可以包括因特网、内联网、以太网、蜂窝网络、局域网(lan)、广域网(wan)、个人区域网络(pan)、在对等体之间进行直接无线连接的自组织网络等等。
139.在至少一个实施例中,可以在接口层508接收请求,在该示例中,该接口层可以将数据转发到训练和推理管理器532。训练和推理管理器532可以是包括用于管理与数据或内容相应的服务和请求的硬件和软件的系统或服务。在至少一个实施例中,该训练和推理管理器532可以接收训练神经网络的请求,并且可以将用于请求的数据提供给训练模块512。在至少一个实施例中,如果请求未指定,则训练模块512可以选择要使用的适当模型或神经网络,并可以使用相关的训练数据来训练模型。在至少一个实施例中,训练数据可以是存储在训练数据存储库514中的、从客户端设备502接收的或从第三方供应商524获得的一批数据。在至少一个实施例中,训练模块512可以负责训练数据。神经网络可以是任何适当的网络,例如递归神经网络(rnn)或卷积神经网络(cnn)。一旦训练并成功评估了神经网络,就可以将经训练的神经网络存储到例如模型存储库516,其可以存储用于用户、应用程序或服务等的不同模型或网络。在至少一个实施例中,针对单个应用程序或实体可能存在多个模型,其可以基于多个不同因素而被利用。
140.在至少一个实施例中,在随后的时间点,可以从客户端设备502(或另一个这样的设备)接收对至少部分地被经训练的神经网络确定或影响的内容(例如,路径确定)或数据的请求。该请求可以包括例如输入数据,其要使用神经网络进行处理,以获得一个或更多个推理或其他输出值、分类或预测,或对于至少一个实施例,输入数据可以由接口层508接收并且被引导到推理模块518,尽管不同的系统或服务也可以使用。在至少一个实施例中,如果尚未本地存储到推理模块518,则推理模块518可以从模型存储库516中获得适当的训练的网络,例如本文所讨论的训练的深度神经网络(dnn)。推理模块518可以将数据作为输入提供给训练的网络,其然后可以生成一个或更多个推理作为输出。例如,这可以包括输入数据实例的分类。在至少一个实施例中,然后可以将推理传输至客户端设备502以向用户显示或与用户进行其他通信。在至少一个实施例中,用户的上下文数据也可以存储到用户上下文数据存储库522,该数据库可以包括关于用户的数据,该数据可以用作生成推理或确定获得实例后返回给用户的数据的网络输入。在至少一个实施例中,可以包括输入或推理数据中的至少一些的相关数据也可以被存储到本地数据库534以用于处理将来的请求。在至少一个实施例中,用户可以使用帐户信息或其他信息来访问供应商环境的资源或功能。在至少一个实施例中,如果允许和可用,还可以收集用户数据并将其用于进一步训练模型,以便为将来的请求提供更精确的推理。在至少一个实施例中,可以通过用户界面接收对在客户端设备502上执行的机器学习应用526的请求,并通过相同的界面显示结果。客户端设备可
以包括资源,诸如用于生成请求和处理结果或响应的处理器528和存储器562,以及用于存储用于机器学习应用526的数据的至少一个数据存储元件552。
141.在至少一个实施例中,处理器528(或训练模块512或推理模块518的处理器)将是中央处理单元(cpu)。但是,如上所述,此类环境中的资源可以利用gpu来处理用于至少某些类型的请求的数据。诸如ppu 300之类的gpu具有数千个核心,被设计为处理大量的并行工作负载,因此在用于训练神经网络和生成预测的深度学习中变得很流行。虽然使用gpu进行离线构建允许更快地训练更大、更复杂的模型,但离线生成预测意味着无法使用请求-时间输入特征,或必须针对所有特征排列生成预测并将其存储在查找表中以进行服务实时请求。如果深度学习框架支持cpu模式,并且模型足够小且简单以至可以合理的延迟在cpu上执行前馈,则cpu实例上的服务可以托管模型。在这种情况下,可以在gpu上离线进行训练,并在cpu上实时进行推理。如果cpu方法不是可行的,则服务可以在gpu实例上运行。但是,由于gpu具有与cpu不同的性能和成本特性,因此运行将运行时算法卸载到gpu的服务可能要求将其设计成与基于cpu的服务不同。
142.在至少一个实施例中,可以从客户端设备502提供视频数据以便在供应商环境506中进行增强。在至少一个实施例中,可以对视频数据进行处理以便在客户端设备502上进行增强。在至少一个实施例中,可以从第三方内容供应商524流式传输并且由第三方内容供应商524、供应商环境506或客户端设备502增强视频数据。在至少一个实施例中,可以从客户端设备502提供视频数据以便用作供应商环境506中的训练数据。
143.在至少一个实施例中,有监督和/或无监督训练可以由客户端设备502和/或供应商环境506执行。在至少一个实施例中,训练数据514(例如分类的或标记的数据)集作为输入而提供以便用作训练数据。在至少一个实施例中,训练数据可以包括针对其要对神经网络进行训练的至少一种类型的对象的实例,以及标识该对象类型的信息。在至少一个实施例中,训练数据可以包括图像集,其每个图像包括一种类型的对象的表示,其中每个图像也包括标记、元数据、分类或标识对应图像中表示的对象类型的其他信息,或与之关联。各种不同的其他类型的数据也可以用作训练数据,其可以包括文本数据、音频数据、视频数据等等。在至少一个实施例中,训练数据514作为训练输入提供给训练模块512。在至少一个实施例中,训练模块512可以是包括硬件和软件的系统或服务,例如执行训练应用程序的一个或更多个计算设备,以用于训练神经网络(或其他模型或算法等等)。在至少一个实施例中,训练模块512接收指示要用于训练的模型类型的指令或请求,在至少一个实施例中,模型可以是对于这样的目的有用的任何适当的统计模型、网络或算法,其可以包括人工神经网络、深度学习算法、学习分类器、贝叶斯网络等等。在至少一个实施例中,训练模块512可以从适当的储存库中选择初始模型或其他未训练的模型,并且利用训练数据514训练模型,从而生成可以用于对相似类型的数据分类或生成其他这样的推理的训练的模型(例如训练的深度神经网络)。在其中未使用训练数据的至少一个实施例中,仍然可以选择初始模型以便对每个训练模块512的输入数据进行训练。
144.在至少一个实施例中,可以以若干不同的方式训练模型,其可以部分地取决于选择的模型类型。在至少一个实施例中,可以向机器学习算法提供训练数据集,其中模型是通过训练过程创建的模型工件。在至少一个实施例中,训练数据的每个实例包含可以称为目标或目标属性的正确答案(例如分类)。在至少一个实施例中,学习算法找到将输入数据属
性映射到目标——要预测的答案——的训练数据中的模式,并且机器学习模型是捕获这些模式的输出。在至少一个实施例中,机器学习模型于是可以用于获得对未指定目标的新数据的预测。
145.在至少一个实施例中,训练和推理管理器532可以从包括二元分类、多类分类、生成式和回归模型的机器学习模型集中进行选择。在至少一个实施例中,要使用的模型类型可以至少部分地取决于要预测的目标类型。
146.图形处理管线
147.在一个实施例中,ppu 300包括图形处理单元(gpu)。ppu 300被配置为接收指定用于处理图形数据的着色器程序的命令。图形数据可以被定义为诸如点、线、三角形、四边形、三角形带等等之类的图元集。典型地,图元包括指定用于该图元的顶点的数量(例如在模型-空间坐标系统中)以及与该图元的每个顶点关联的属性的数据。ppu 300可以被配置为处理图形图元以生成帧缓冲区(例如用于显示器的像素中的每一个的像素数据)。
148.应用程序将用于场景的模型数据(例如属性和顶点集合)写入诸如系统存储器或存储器304之类的存储器。模型数据定义了可能在显示器上可见的对象中的每一个。然后,应用程序对驱动程序内核进行api调用,其请求渲染和显示该模型数据。驱动程序内核读取该模型数据,并且将命令写入所述一个或更多个流以便执行处理该模型数据的操作。这些命令可以引用要在ppu 300内的sm 440上实现的不同着色器程序,包括顶点着色器、外壳着色器、域着色器、几何着色器和像素着色器中的一个或更多个。例如,所述sm 440中的一个或更多个可以被配置为执行顶点着色器程序,其处理模型数据定义的若干顶点。在一个实施例中,这些不同的sm 440可以被配置为并发地执行不同的着色器程序。例如,sm 440的第一子集可以被配置为执行顶点着色器程序,而sm 440的第二子集可以被配置为执行像素着色器程序。sm 440的第一子集处理顶点数据以产生处理的顶点数据,并且将处理的顶点数据写入l2高速缓存360和/或存储器304。在处理的顶点数据被光栅化(例如从三维数据变换为屏幕空间中的二维数据)以产生片段数据之后,sm 440的第二子集执行像素着色器以产生处理的片段数据,其然后与其他处理的片段数据混合并且写入存储器304中的帧缓冲区。顶点着色器程序和像素着色器程序可以并发地执行,以流水线方式处理来自相同场景的不同数据,直到该场景的所有模型数据都被渲染到帧缓冲区。然后,将帧缓冲区的内容传输至显示控制器以便在显示设备上显示。
149.示例流式系统
150.图6为根据本公开一些实施例的流式传输系统605的示例系统示意图。图6包括服务器602(其可以包括与图5a的示例处理系统500和/或图5b的示例性系统565相似的组件、特征和/或功能)、客户端604(其可以包括与图5a的示例处理系统500和/或图5b的示例性系统565相似的组件、特征和/或功能)和网络606(其可以与本文描述的网络相似)。在本公开的一些实施例中,系统605可以被实现。
151.在一个实施例中,流式系统605为游戏流式传输系统,并且服务器604为游戏服务器。在系统605中,对于游戏会话,客户端设备604可以响应于输入设备626的输入而仅仅接收输入数据,将输入数据发送至服务器603,接收来自服务器603的编码的显示数据,并且在显示器624上显示该显示数据。这样,计算强度更高的计算和处理被卸载到服务器603(例如游戏会话的图形输出的渲染,尤其是光线或路径追踪,由服务器603的gpu 615执行)。换言
之,游戏会话从服务器603流式传输至客户端设备604,从而降低客户端设备604对于图形处理和渲染的要求。
152.例如,关于游戏会话的实例化,客户端设备604可以基于接收到来自服务器603的显示数据而正在显示器624上显示游戏会话的帧。客户端设备604可以接收输入设备626之一的输入,并且作为响应生成输入数据。客户端设备604可以经由通信接口621且通过网络606(例如因特网)将输入数据发送至服务器603,并且服务器603可以经由通信接口618接收该输入数据。cpu 608可以接收输入数据,处理输入数据,并且将数据发送至gpu 615,该数据使得gpu 615生成游戏会话的渲染。例如,输入数据可以表示游戏中用户角色的运动,发射武器、重新装弹、传球、使车辆转向等等。渲染组件612可以渲染游戏会话(例如表示输入数据的结果),并且渲染捕获组件614可以捕获游戏会话的渲染作为显示数据(例如作为捕获游戏会话的渲染的帧的图像数据)。游戏会话的渲染可以包括使用服务器603的一个或更多个并行处理单元(例如gpu,其可以进一步采用一个或更多个专用硬件加速器或处理核心的使用以执行光线或路径追踪技术)计算的光线或路径追踪的光照和/或阴影效果。然后,编码器616可以对显示数据进行编码以生成编码的显示数据,并且该编码的显示数据可以经由通信接口618通过网络606发送至客户端设备604。客户端设备604可以经由通信接口621接收该编码的显示数据,并且解码器622可以对该编码的显示数据进行解码以生成显示数据。然后,客户端设备604可以经由显示器624显示该显示数据。
153.应当指出,本文描述的技术可以体现在存储于计算机可读介质中的可执行指令中,所述指令供基于处理器的指令执行机器、系统、装置或设备使用或结合其使用。本领域技术人员将领会,对于一些实施例而言,可以包括各种类型的计算机可读介质以用于存储数据。当在本文使用时,“计算机可读介质”包括用于存储计算机程序的可执行指令的任何适当的介质中的一种或更多种,从而指令执行机器、系统、装置或设备可以从计算机可读介质中读取(或获取)指令并且执行这些指令以实现所描述的实施例。适当的存储格式包括电子、磁性、光学和电磁格式中的一种或更多种。常规的示例性计算机可读介质的非详尽列表包括:便携式计算机磁盘;随机存取存储器(ram);只读存储器(rom);可擦除可编程只读存储器(eprom);闪存设备;以及光学存储设备,包括便携式紧密盘(cd)、便携式数字视频盘(dvd)等等。
154.应当理解,附图中所示的组件的布置用于说明性目的,并且其他布置是可能的。例如,本文所描述的元件中的一个或更多个可以全部或部分实现为电子硬件组件。其他元件可以以软件、硬件或软件和硬件的组合实现。而且,这些其他元件中的一些或全部可以进行组合,一些可以完全省略,并且可以添加附加的组件,同时仍然实现本文描述的功能。因此,本文描述的主题可以在许多不同的变型中实施,并且所有这样的变型预期处于权利要求书的范围之内。
155.为了便于理解本文描述的主题,许多方面是按照动作序列来描述的。本领域技术人员会认识到,各种动作可以通过专用电路或电路系统、通过一个或更多个处理器执行的程序指令或通过二者的组合执行。本文对于任何动作序列的描述并不预期意味着被描述用于执行该序列的特定顺序必须被遵循。本文描述的所有方法都可以以任何适当的顺序执行,除非本文另有指明或以其他方式与上下文明显矛盾。
156.在描述所述主题的上下文中(尤其是在下面的权利要求书的上下文中)术语“一”、“一个”、“该/这个”以及类似指称的使用应当被解释为覆盖单数和复数二者,除非本文另有指明或与上下文明显矛盾。后接具有一个或更多个项目的列表的术语“至少一个”(例如a和b中的至少一个)的使用应当被解释为表示选自列出的项目的一个项目(a或b),或列出的项目中的两个或更多个的任意组合(a和b),除非本文另有指明或与上下文明显矛盾。此外,前面的描述仅仅用于说明的目的,并不用于限制的目的,因为寻求保护的范围由此后与其等效物一起阐述的权利要求书限定。本文提供的任何和所有示例或示例性语言(例如“诸如”)的使用仅仅预期更好地说明所述主题,并不构成对主题的范围的限制,除非另有声明。权利要求书和书面说明书二者中指示带来结果的条件的“基于”以及其他类似短语的使用并不预期排除带来该结果的任何其他条件。说明书中的语言不应当被解释为指示任何未要求权利保护的元素对于要求保护的本发明的实施是必不可少的。
技术特征:
1.一种计算机实现的方法,包括:接收限定用于集成电路的制造的掩模形状的边缘的集合;识别与所述掩模形状相对应的至少一个掩模制造规则违反;并行地计算对所述边缘的集合的调整以减少或去除所述至少一个掩模制造规则违反;以及根据所计算的调整来调整所述边缘的集合中的至少一个边缘,以产生经调整的边缘的集合。2.根据权利要求1所述的计算机实现的方法,其中所述边缘的集合限定所述集成电路的一部分的所述掩模形状。3.根据权利要求2所述的计算机实现的方法,还包括针对所述集成电路的附加部分重复所述接收、识别、计算和调整。4.根据权利要求3所述的计算机实现的方法,其中针对所述集成电路的至少一个附加部分的所述计算通过附加处理核心与针对所述部分的所述计算并行地执行。5.根据权利要求1所述的计算机实现的方法,其中所述计算包括考虑所述边缘的集合中的每个边缘的状态信息以在不引入新的掩模制造规则违反的情况下减少或去除所述至少一个掩模制造规则违反。6.根据权利要求5所述的计算机实现的方法,其中所述状态信息包括制造规则违反类型和幅度、最大可能调整量、或者理想调整量中的至少一个以减少或去除所述至少一个掩模制造规则违反。7.根据权利要求5所述的计算机实现的方法,其中共享与所述至少一个掩模制造规则违反相关联的至少两个边缘的所述状态信息,以计算针对所述至少两个边缘的所述调整。8.根据权利要求1所述的计算机实现的方法,其中所述调整包括调整所述边缘的集合中的第一边缘和所述边缘的集合中的第二边缘,以保持由所述第一边缘和所述第二边缘限定的掩模形状的几何对称。9.根据权利要求1所述的计算机实现的方法,其中所述边缘的集合被分配给处理核心并且所述边缘的集合中的每个边缘被分配线程以供所述处理核心并行执行以用于所述识别、计算和调整。10.根据权利要求1所述的计算机实现的方法,还包括:评估所述经调整的边缘的集合以识别任何掩模制造规则违反;以及重复所述计算和调整,直到不存在掩模制造规则违反,以产生所述集成电路的最终掩模形状。11.根据权利要求1所述的计算机实现的方法,还包括:评估所述经调整的边缘的集合以识别任何掩模制造规则违反;以及重复所述计算和调整,直到所述掩模制造规则违反小于阈值,以产生所述集成电路的最终掩模形状。12.根据权利要求1所述的计算机实现的方法,其中通过图形处理单元gpu执行所述识别、计算、以及调整步骤。13.根据权利要求1所述的计算机实现的方法,其中在服务器上或在数据中心中执行所述识别、计算或调整的步骤中的至少一个,以限定用于所述集成电路的制造的经调整的掩
模形状。14.根据权利要求1所述的计算机实现的方法,其中在云计算环境内执行所述识别、计算或调整的步骤中的至少一个。15.根据权利要求1所述的计算机实现的方法,其中在包括图形处理单元的一部分的虚拟机上执行所述识别、计算或调整的步骤中的至少一个。16.一种系统,包括:存储器,其存储限定用于集成电路的制造的掩模形状的边缘的集合;以及处理器,其连接到所述存储器,其中所述处理器经配置以:识别与所述掩模形状相对应的至少一个掩模制造规则违反;并行地计算对所述边缘的集合的调整以减少或去除所述至少一个掩模制造规则违反;以及根据所计算的调整来调整所述边缘的集合中的至少一个边缘,以产生经调整的边缘的集合。17.根据权利要求16所述的系统,其中所述计算包括考虑所述边缘的集合中的每个边缘的状态信息以在不引入新的掩模制造规则违反的情况下去除所述至少一个掩模制造规则违反。18.根据权利要求17所述的系统,其中所述状态信息包括制造规则违反类型和幅度、最大可能调整量、或者理想调整量中的至少一个以减少或去除所述至少一个掩模制造规则违反。19.根据权利要求17所述的系统,其中共享与所述至少一个掩模制造规则违反相关联的至少两个边缘的所述状态信息,以计算所述调整中的一个或更多个。20.一种非暂时性计算机可读介质,其存储计算机指令,所述计算机指令在由一个或更多个处理器执行时,使所述一个或更多个处理器执行以下步骤:接收限定用于集成电路的制造的掩模形状的边缘的集合;识别与所述掩模形状相对应的至少一个掩模制造规则违反;并行地计算对所述边缘的集合的调整以减少或去除所述至少一个掩模制造规则违反;以及根据所计算的调整来调整所述边缘的集合中的至少一个边缘,以产生经调整的边缘的集合。21.根据权利要求20所述的非暂时性计算机可读介质,其中所述调整包括调整所述边缘的集合中的第一边缘和所述边缘的集合中的第二边缘,以保持由所述第一边缘和所述第二边缘限定的掩模形状的几何对称。
技术总结
本公开的实施例涉及在用于集成电路设计的光学接近度校正(OPC)流中对演进掩模形状的并行掩模规则检查。公开了并行执行掩模(制造)规则检查(MRC)、共享信息以在违规被纠正时保持对称性的系统和方法。在实施例中,共享信息还用于最小化由OPC引起的对所建议的掩模形状的几何区域的变化。与常规系统相比,对多个边缘并行地执行MRC,从而在不同边缘之间共享信息以鼓励对称性。在实施例中,可以并行地调整所有边缘以减少掩模边缘遍历偏差。所有边缘以减少掩模边缘遍历偏差。所有边缘以减少掩模边缘遍历偏差。
技术研发人员:K
受保护的技术使用者:辉达公司
技术研发日:2023.02.07
技术公布日:2023/9/13
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/