CN112540671A - 基于视觉的灵巧机器人系统的远程操作 - Google Patents

基于视觉的灵巧机器人系统的远程操作 Download PDF

Info

Publication number
CN112540671A
CN112540671A CN202010973239.2A CN202010973239A CN112540671A CN 112540671 A CN112540671 A CN 112540671A CN 202010973239 A CN202010973239 A CN 202010973239A CN 112540671 A CN112540671 A CN 112540671A
Authority
CN
China
Prior art keywords
hand
pose
computer
robotic
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202010973239.2A
Other languages
English (en)
Inventor
A·汉达
K·V·维克
杨巍
晁于伟
D·福克斯
万千
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of CN112540671A publication Critical patent/CN112540671A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/017Gesture based interaction, e.g. based on a set of recognized hand gestures
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J13/00Controls for manipulators
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J13/00Controls for manipulators
    • B25J13/02Hand grip control means
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J13/00Controls for manipulators
    • B25J13/08Controls for manipulators by means of sensing devices, e.g. viewing or touching devices
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J13/00Controls for manipulators
    • B25J13/08Controls for manipulators by means of sensing devices, e.g. viewing or touching devices
    • B25J13/081Touching devices, e.g. pressure-sensitive
    • B25J13/084Tactile sensors
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J15/00Gripping heads and other end effectors
    • B25J15/0009Gripping heads and other end effectors comprising multi-articulated fingers, e.g. resembling a human hand
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J3/00Manipulators of master-slave type, i.e. both controlling unit and controlled unit perform corresponding spatial movements
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1602Programme controls characterised by the control system, structure, architecture
    • B25J9/161Hardware, e.g. neural networks, fuzzy logic, interfaces, processor
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1612Programme controls characterised by the hand, wrist, grip control
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1615Programme controls characterised by special kind of manipulator, e.g. planar, scara, gantry, cantilever, space, closed chain, passive/active joints and tendon driven manipulators
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1628Programme controls characterised by the control loop
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1656Programme controls characterised by programming, planning systems for manipulators
    • B25J9/1664Programme controls characterised by programming, planning systems for manipulators characterised by motion, path, trajectory planning
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1656Programme controls characterised by programming, planning systems for manipulators
    • B25J9/1671Programme controls characterised by programming, planning systems for manipulators characterised by simulation, either to verify existing program or to create and verify new program, CAD/CAM oriented, graphic oriented programming systems
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1679Programme controls characterised by the tasks executed
    • B25J9/1689Teleoperation
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1694Programme controls characterised by use of sensors other than normal servo-feedback from position, speed or acceleration sensors, perception control, multi-sensor controlled systems, sensor fusion
    • B25J9/1697Vision controlled systems
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/42Recording and playback systems, i.e. in which the programme is recorded from a cycle of operations, e.g. the cycle of operations being manually controlled, after which this record is played back on the same machine
    • G05B19/423Teaching successive positions by walk-through, i.e. the tool head or end effector being grasped and guided directly, with or without servo-assistance, to follow a path
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • G06F18/2413Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/016Input arrangements with force or tactile feedback as computer generated output to the user
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/0014Image feed-back for automatic industrial control, e.g. robot with camera
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/003Navigation within 3D models or images
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/246Analysis of motion using feature-based methods, e.g. the tracking of corners or segments
    • G06T7/251Analysis of motion using feature-based methods, e.g. the tracking of corners or segments involving models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/764Arrangements for image or video recognition or understanding using pattern recognition or machine learning using classification, e.g. of video objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/50Context or environment of the image
    • G06V20/56Context or environment of the image exterior to a vehicle by using sensors mounted on the vehicle
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/50Context or environment of the image
    • G06V20/59Context or environment of the image inside of a vehicle, e.g. relating to seat occupancy, driver state or inner lighting conditions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/60Type of objects
    • G06V20/64Three-dimensional objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/10Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
    • G06V40/107Static hand or arm
    • G06V40/11Hand-related biometrics; Hand pose recognition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/20Movements or behaviour, e.g. gesture recognition
    • G06V40/28Recognition of hand or arm movements, e.g. recognition of deaf sign language
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/39Robotics, robotics to robotics hand
    • G05B2219/39122Follower, slave mirrors leader, master
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/39Robotics, robotics to robotics hand
    • G05B2219/39298Trajectory learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10028Range image; Depth image; 3D point clouds
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20081Training; Learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V2201/00Indexing scheme relating to image or video recognition or understanding
    • G06V2201/06Recognition of objects for industrial automation

Abstract

本发明公开了基于视觉的灵巧机器人系统的远程操作,人类驾驶员通过模拟人类手的一组期望的运动来控制机器人臂和抓取器。在至少一个实施例中,捕获并分析驾驶员的手的一个或更多个图像以确定一组手姿势。在至少一个实施例中,该组手姿势被转换成对应的一组机器人抓取器姿势。在至少一个实施例中,确定了执行该组机器人抓取器姿势的一组运动,并且指示该机器人执行该组运动。

Description

基于视觉的灵巧机器人系统的远程操作
技术领域
至少一个实施例涉及使用机器人在人类操作员的控制下执行和促进 任务。例如,至少一个实施例涉及根据本文所述的各种新颖技术通过模仿 人类手的动作来控制机器人臂(robotic arm)。
背景技术
控制机器人执行任务可能是一个困难而具有挑战性的问题。控制机器 人的一种方法是通过直接人工控制。例如,某些机器人系统向人类操作员 提供操纵杆或编程界面,以允许操作员移动机器人。但是,这样的界面通 常是非直觉的并且难以使用,需要大量的训练和实践以供使用。当操作员 尝试执行复杂的任务(例如,与其他对象进行交互)时,尤其如此。因此, 改进远程操作界面是机器人控制领域中的重要研究领域。
附图说明
图1示出了根据至少一个实施例的跨各种任务的远程操作的示例;
图2示出了根据至少一个实施例的机器人臂和手示例;
图3示出了根据至少一个实施例的系统的示例,该系统追踪人类手运 动并将该运动转换成机器人臂的相应运动。
图4示出了根据至少一个实施例的可用于辅助手姿势估计的手套的示 例;
图5示出了根据至少一个实施例的确定手姿势的系统的架构的示例;
图6示出了根据至少一个实施例的估计来自点云的手姿势的示例;
图7示出了根据至少一个实施例的人类手姿势和执行相应姿势的机器 人抓取器的示例;
图8示出了根据至少一个实施例的人类手姿势以及相应的机器人抓取 器姿势的示例;
图9示出了根据至少一个实施例的其中机器人被控制为从折叠的钱包 中取出纸张的任务的示例。
图10示出了根据至少一个实施例的其中机器人被控制为从抽屉中移 除物体的任务的示例。
图11示出了根据至少一个实施例的其中控制机器人打开罐子(jar) 的任务的示例;
图12示出了根据实施例的远程操作任务的完成时间的示例;
图13示出了根据实施例的远程操作任务的成功率的示例;
图14示出了通过计算机系统执行的结果的处理的示例,该处理通过 模拟人类手的运动来指导机器人臂执行任务;
图15A示出了根据至少一个实施例的推理和/或训练逻辑;
图15B示出了根据至少一个实施例的推理和/或训练逻辑;
图16示出了根据至少一个实施例的神经网络的部署和训练;
图17示出了根据至少一个实施例的示例数据中心系统;
图18A示出了根据至少一个实施例的自主车辆的示例;
图18B示出了根据至少一个实施例的图18A的自主车辆的相机位置和 视野的示例;
图18C是示出根据至少一个实施例的图18A的自主车辆的示例系统架 构的框图;
图18D是示出根据至少一个实施例的图18A的用于一个或更多个基 于云的服务器与自主车辆之间的通信的系统的图;
图19是示出根据至少一个实施例的计算机系统的框图;
图20是示出根据至少一个实施例的计算机系统的框图;
图21示出了根据至少一个实施例的计算机系统;
图22示出了根据至少一个实施例的计算机系统;
图23A示出了根据至少一个实施例的计算机系统;
图23B示出了根据至少一个实施例的计算机系统;
图23C示出了根据至少一个实施例的计算机系统;
图23D示出了根据至少一个实施例的计算机系统;
图23E和图23F示出了根据至少一个实施例的共享编程模型;
图24示出了根据至少一个实施例的示例性集成电路和相关联的图形 处理器;
图25A-图25B示出了根据至少一个实施例的示例性集成电路和相关 联的图形处理器;
图26A-图26B示出了根据至少一个实施例的附加的示例性图形处理 器逻辑;
图27示出了根据至少一个实施例的计算机系统;
图28A示出了根据至少一个实施例的并行处理器;
图28B示出了根据至少一个实施例的分区单元;
图28C示出了根据至少一个实施例的处理集群;
图28D示出了根据至少一个实施例的图形多处理器;
图29示出了根据至少一个实施例的多图形处理单元(CPU)系统;
图30示出了根据至少一个实施例的图形处理器;
图31是示出根据至少一个实施例的用于处理器的处理器微架构的框 图;
图32示出了根据至少一个实施例的深度学习应用处理器;
图33是示出根据至少一个实施例的示例神经形态处理器的框图;
图34示出了根据一个或更多个实施例的图形处理器的至少部分;
图35示出了根据一个或更多个实施例的图形处理器的至少部分;
图36示出了根据一个或更多个实施例的图形处理器的至少部分;
图37是根据至少一个实施例的图形处理器的图形处理引擎3710的框 图;
图38是根据至少一个实施例的图形处理器核心的至少部分的框图;
图39A和图39B示出了根据至少一个实施例的包括图形处理器核心的 处理元件的阵列的线程执行逻辑3900;
图40示出了根据至少一个实施例的并行处理单元(“PPU”);
图41示出了根据至少一个实施例的通用处理集群(“GPC”);
图42示出了根据至少一个实施例的并行处理单元(“PPU”)的内存分 区单元;以及
图43示出了根据至少一个实施例的流式多处理器。
具体实施方式
本文档描述了用于通过远程操作来控制机器人的系统和方法。在至少 一个实施例中,系统估计人类手的姿势,然后将机器人引导到相应的姿势。 在一个示例中,当人类操作员用他们的手执行动作时,该动作被深度相机 捕获,并且系统使用来自深度相机的数据来产生点云。处理点云以确定手 的姿势。手的姿势标识指尖的位置以及手中关节角度和骨骼的近似值。然 后,系统将手的姿势转换为机器人手的相应姿势。在一些示例中,系统校正机器人手的尺寸的差异以及人类手和机器人手之间的手指数的差异。在 一些示例中,人类手的姿势可以被转换成具有更大或更小的手指数的机器 人手。在一些示例中,人类手的姿势可以转换为挖掘机、工业机器人或车 辆的姿势。例如,人类可以模仿推土设备上的爪(claw)或铲斗(bucket) 的形状,并且系统可以将手的姿势转换为爪或铲斗的相应姿势,从而提供 对机器的直观控制。人类驾驶员(pilot)可以直接或通过视频显示器远程 查看机器人,并能够通过实时复制所请求的运动来指导机器人执行任务。
在至少一个实施例中,远程操作提供了赋予机器人系统复杂的推理能 力、直觉和创造力以执行任务的可能性。本文所述的至少一个示例提供了 低成本的基于视觉的远程操作系统,该系统允许通过观察裸露的人类手来 完全控制整个23个DoA机器人系统。一些示例使操作员能够执行各种复 杂的操纵任务,而不仅仅是简单的拾取和放置操作。至少一个实施例允许 收集高维度、多模态、状态动作数据,其将来可被用于学习针对挑战性操 纵任务的感觉运动策略。通过在各种任务上的两个人类演示者之间的速度 和可靠性度量来测量至少一个实施例的系统性能。在各个实施例中,该系 统可以由如图15至图43中描述/描绘的一个或更多个系统来实现。
各种实施例可以应用于搜索和救援、空间、医学、假肢以及应用的机 器学习领域。在至少一个实施例中,远程操作允许机器人系统通过人机界 面(“HMI”)利用人类的认知、创造力和反应性来执行复杂的任务。至少 一个实施例依赖于触觉反馈和改善的人体骨骼和手指追踪的结合。至少一 个实施例提供了低成本、无标记、无手套(glove-free)的远程操作解决方 案,该解决方案利用了机器视觉、优化、运动生成和GPU计算方面的创新。 至少一个实施例保留了捕获以及传递精细的灵巧操纵以驱动高级致动的机 器人系统用于解决各种各样的抓握和操纵任务的能力。在一个示例中,四 个Intel RealSense深度相机和两个NVIDIA GPU与深度学习和非线性优化 相结合,产生了占地面积最小灵巧的远程操作系统。尽管缺乏触觉反馈, 但是该系统的示例通过人类认知具有高度的功能和效率。在至少一个实施 例中,这一结果证实了人类的凝视研究,该研究表明人类在精确的手控制 之前学会了利用视觉来进行手动作的计划、控制和状态预测。在一些示例 中,深度相机可以是基于雷达(RADAR)或基于激光雷达(LIDAR)的成 像系统,或医学成像系统,例如磁共振成像仪或X射线成像仪。
在各种示例中,远程操作系统利用人类仅凭视觉就能计划、移动和预 测其物理动作的结果的能力,这是解决各种任务的充分条件。各种实施例 具有列出的以下优点中的一个或更多个:无标记、无手套且完全基于视觉 的远程操作系统,该系统灵巧地表达了具有直接模仿的高度制动机器人手 臂系统,新颖的成本函数和投影方案,其用于将人类手关节运动学重定位 到机器人手关节,从而在存在手关节追踪错误的情况下保持手的灵巧性和精确抓握的可行性,远程操作系统在各种任务上的演示,特别是涉及精细 操纵和灵巧性的演示,以及在两名受过训练的人类演示者(也别称为驾驶 员)的系统评估表明,尽管缺乏触觉反馈,仍可以实现较高的任务成功率。
在各种实施例中,所开发的系统能够使用裸露的人类手的多相机深度 观察来进行这种灵巧的机器人操纵。在一些示例中,该系统可以是无手套 且完全基于视觉的远程操作系统,该系统通过直接模仿灵巧地连接了高度 致动的机器人手臂系统。该系统还可以演示一系列任务,特别是涉及精细 操纵和灵巧性的任务(例如,从钱包中提取纸币并同时用四个手指捡起两 个立方体,如图1所示)。
图1示出了根据至少一个实施例的跨各种任务的远程操作的示例。在 一个示例中,机器人抓取器104使用基于人类手102的抓取姿势来抓取圆 柱体。在另一个示例中,机器人抓取器108使用基于人类手106的抓取姿 势来抓取立方体。在另一个示例中,抓取器112使用基于人类手110的抓 取姿势抓取杯子。在另一个示例中,机器人抓取器116使用基于人手114 的抓取姿势抓取钱包。
远程操作设置可以包括机器人系统和相邻的人类驾驶员竞技场,如图 2所示。图2示出了根据至少一个实施例的具有触觉传感器的机器人的示 例。在至少一个实施例中,机器人202具有用于抓取对象的机器人抓取器 204。在至少一个实施例中,一组相机206、208、210和212用于观察机器 人202的工作空间。在至少一个实施例中,抓取器204包括一组触觉传感 器216、218、220和222,这组触觉传感器将感觉信息提供给控制计算机 系统。在至少一个实施例中,触觉传感器可以覆盖有摩擦材料,以增强和/ 或改善机器人抓取物体的能力。
在一些实施例中,如图2所示,该机器人系统可以是带有Wonik Robotics Allegro手的KUKA LBR iiwa7 R800系列手臂,Wonik Robotics Allegro手的指尖配有四个SynTouch BioTac触觉传感器,并在指骨 (phalange)和手掌的内表面贴有3M TB641抓取带,其中BioTac传感器 和3M胶带的橡胶表面可能会改善手的摩擦力,而BioTacs本身可产生23 个信号,这些信号随后可用于从演示中学习感觉运动控制。人类竞技场可 以是一张黑布桌子,周围是四个经过校准且时间同步的相机,例如Intel RealSense RGB D相机,这些相机在空间上可以被布置成覆盖80cm×55cm ×38cm的工作空间。在一些示例中,由于远程操作完全基于人类的视觉和 空间推理,所以相机可以直接与机器人相邻以改善视线和视觉接近度。应 该注意的是,图2旨在作为说明性示例,并且在各种实施例中,系统可以 包括在任何合适的环境中利用任何机器人组件(例如,各种类型的机器人 臂、手、触觉传感器、抓取柄、其他传感器、相机和/或其变体)的任何机 器人系统。
为了产生自然感觉的远程操作系统,可以采用模仿型范例。裸露的人 类手运动(姿势和手指配置)可以通过视觉感知模块不断观察和测量。然 后,可以以明显的复制运动的方式将人类手运动传递给机器人系统。该方 法可以使人类驾驶员能够卷曲(curl)和布置他们的手指、形成抓取、重定 向和平移他们的手掌,并且机器人系统以类似的方式跟随。在至少一个实 施例中,系统严重依赖于密集关节式实时追踪(“DART”),其可以形成追 踪人类手的姿势和关节角度的骨干。在一个实施例中,系统架构和组件连 接在图3中描述。
图3示出了根据至少一个实施例的实时追踪人类手并控制机器人执行 相应运动的系统的示例。在至少一个实施例中,系统使用三个线程操作, 这三个线程是在计算机系统的一个或更多个处理器上运行的独立进程。在 至少一个实施例中,学习线程使用来自工作室的四个相机的融合输入点云 来提供手姿势和关节角度先验。在至少一个实施例中,追踪线程运行用于 先验手追踪的DART以及将人类手配置映射到allegro手所需的运动学重定 位(kinematic retargeting)。在至少一个实施例中,控制线程运行Riemannian 运动策略以在给定手姿势和关节角度的情况下向KUKA和allegro手提供 目标关节命令。
在至少一个实施例中,从RGB深度(“RGB-D”)相机302获得手的 一个或更多个图像。图像由点网(pointNet):阶段1 304,点网:阶段2 306 以及关节网络308处理,以在图像中为手产生手姿势。在至少一个实施例 中,使用DART 312和运动学重定位314来处理铰接的(articulated)手模 型310和手姿势,以产生用于机器人抓取器的相应的手姿势。在至少一个 实施例中,控制线程将Riemannian运动策略318应用于抓取器手姿势,并 且结果信息被用于控制机器人320。
图3示出了包括以下组件的实施例:1)用于手追踪的DART;2)用 于人类手状态估计和增强DART的深度神经网络;3)用DART进行人类 手状态细化,以及通过非线性优化将其转换为Allegro手的状态,和4)通 过Riemannian运动策略(RMP)和扭矩级阻抗控制器进行运动生成和控制。 在图3中示出的一个实施例中,上述组件以菊花链方式链接。在至少一个实施例中,系统总共产生约一秒的等待时间。
在至少一个实施例中,DART用于人类手连续姿势和关节角度追踪。 在至少一个实施例中,DART使用针对输入点云注册的手的铰接的模型。 可以获得人类手模型并将其转变成单个网格模型。利用计算机辅助设计 (“CAD”)软件,可以将网格模型的手指分为其各自的近端、中间和远端 链接,并与描述他们的运动学安排的相关联的可扩展标记语言(“XML”) 文件一起重新导出为单独的网格。总体而言,人类手模型可能具有20个旋 转关节:每个手指四个关节,其中一个外展关节和三个屈曲关节。
在至少一个实施例中,DART是基于模型的追踪器,其依赖于非线性 优化和初始化(例如,来自前一帧或初始猜测)。在某些示例中,如果此初 始化不在收敛范围之内,则追踪器可能无法收敛到正确的解决方案。在各 种实施例中,当用点云数据追踪人类手模型时,手模型经常会捕捉到虚假 的局部极小值,从而每隔几分钟就追踪失败。因此,要在长时间内可靠地 追踪人类手(这对远程操作很有用),可能需要具有可靠的手姿势先验、干 净的手分段(segmentation)和多视角相机工作室,以防止手模型捕捉到意 外的局部最小值。在各种实施例中,一种用于生成手姿势先验的方法是在 给定相机图像的人类手姿势的大型数据集上训练神经网络。
图4示出了用于获得手姿势和分段的彩色手套的示例。在至少一个实 施例中,手套402包括五个手指404、406、408、410和412,每个手指都 用不同颜色的织物(fabric)着色。在至少一个实施例中,打印独特的颜色, 使得注释生成对于OpenCV颜色阈值而言是微不足道的。在至少一个实施 例中,手掌414的背面上的颜色唯一地确定手的姿势。
在至少一个实施例中,首先将具有彩色斑点的织物手套(如图4所示) 用作有效的解决方案,以便使用深度神经网络获得手姿势先验。在至少一 个实施例中,数据收集分两个阶段进行。在至少一个实施例中,在第一阶 段,用户戴上手套以获得用于DART的手姿势先验以能够稳健地追踪人类 手。在至少一个实施例中,该过程将为第二阶段的RGB-D相机生成原始 深度图的手姿势和关节角度注释。在至少一个实施例中,第二阶段使用这 些注释并且根据对应的深度图在原始点云上进行操作,并使用户不必戴手 套。
在至少一个实施例中,彩色手套被用于手追踪。在至少一个实施例中, 手套在指尖处具有彩色斑点,并且在手掌背面具有三个斑点。在至少一个 实施例中,手追踪包括手姿势和手指的关节角度二者。在至少一个实施例 中,用户将他们的手移到多相机工作室中的桌子上,其中四个Intel RealSense D415 RGB-D相机向下指向桌子。在至少一个实施例中,通过关 键点定位提出戴手套的手姿势估计的问题。在至少一个实施例中,具有空 间softmax的ResNet-50用于从RGB图像回归到手套上的彩色斑点的中心 的2D位置,称为手套网(GloveNet)。在至少一个实施例中,指尖上的彩 色斑点也被回归,但是被发现对最终的整个手追踪没有帮助,并且将手掌 背面的斑点的预测用于手姿势估计。
在至少一个实施例中,可以通过三个唯一关键点来估计手姿势,如由 在手套的手掌的背面处的三个不同的彩色斑点所指示的。在至少一个实施 例中,为了获得针对斑点的中心的注释,OpenCV中的HSV阈值被用于生 成分段和计算这些分段的彩色斑点的质心。在至少一个实施例中,为了帮 助用于高质量注释的分段,用户戴着带有彩色斑点的黑色手套,并将手移 到也覆盖有黑布的桌子上。在至少一个实施例中,可以通过来自所有四个 相机的斑点的预测2D位置来获得手姿势:使用深度值将2D关键点转换为 它们对应的3D位置,从而导致每个斑点总共具有来自四个相机的四个3D 预测。在至少一个实施例中,对这些3D位置进行滤波并在时间上进行平 滑以获得手姿势。在至少一个实施例中,还通过去除落在手边界体积之外 的3D点来获得手分段。在至少一个实施例中,该体积的维度是根据从神经网络预测获得的手姿势而启发式获得的。至关重要的是,在至少一个实 施例中,DART现在仅对分段的手点进行优化,以防止手模型滑落到臂上 的点,这在使用完整点云时经常会看到。在至少一个实施例中,DART不 使用RGB图像-手套仅提供姿势先验和辅助的手分段-因此,在第一阶段中 具有手姿势先验和分段的DART的结果是生成注释,以用于采用第二阶段 的相机捕获原始点云,该注释可以在裸露的人类手上操作。
在至少一个实施例中,在第二阶段中,期望使用户将来无需为任何远 程操作而戴手套。在至少一个实施例中,当第一阶段在RGB图像上操作时, 第二阶段直接在裸露的人类手的融合的点云上操作,该裸露的人手是通过 将来自外部校准相机的四个深度图反向投影到全局参考框架中而获得的。 在至少一个实施例中,该阶段的注释来自在第一阶段中生成的数据。在至 少一个实施例中,由于相机还提供同步的深度图像,因此第一阶段的追踪结果可以提供点云的注释。
在至少一个实施例中,融合的点云既包含桌子上的点也包含人体和臂, 因此必须首先定位手。在至少一个实施例中,通过拟合平面来移除桌子上 的点,并且将剩余的点(包括臂和人体)馈入定位手并提供手姿势的体系 结构。在至少一个实施例中,网络经由基于投票的对手上的指定关键点的 3D位置进行回归来估计手姿势。在至少一个实施例中,其被训练以预测在 手上指定的23个关键点的3D坐标-2 5个手指上各有4个关节关键点并且 手掌的背面上有3个关键点-用于手姿势估计。在至少一个实施例中,损失 函数是预测的和地面真实关键点之间的标准欧几里得(Euclidean)损失以 及投票损失。在至少一个实施例中,还添加辅助分段损失以获得手分段。 在至少一个实施例中,出于效率原因,在馈送到网络之前,将大小为N×3 的任何输入点云均匀地子采样为固定的8192×3大小。
在至少一个实施例中,尽管实现了合理的手姿势估计和分段,但是利 用该网络难以获得针对手指上的20个关节关键点的高质量预测。在至少一 个实施例中,在输入处使用的统一子采样意味着没有对手指上的点进行密 集采样,并且因此需要第二阶段的细化(refinement),该第二阶段的细化 在给定第一阶段的姿势和分段的情况下从最初原始点云中重新采样手上的 点。在至少一个实施例中,图5示出了整个网络架构。在至少一个实施例 中,仅在与关键点有关的损失函数上训练第二阶段,并且不需要分割。在 至少一个实施例中,它使用在手上采样的点代替并且准确地预测23个关键 点。在至少一个实施例中,为了使来自第一阶段的手姿势中的任何不准确 具有鲁棒性,将附加的随机化添加到第二阶段的手姿势。在至少一个实施 例中,图7示出了第二阶段细化如何改善系统。在至少一个实施例中,通 过使用手套的先验运行DART,在每批次30分钟至45分钟总共7小时至 8小时收集的100K点云上训练网络的两个阶段。在至少一个实施例中,它 们一起提供关键点、关节角度和分割的注释。在单个NVIDIA TitanXp GPU 上,训练总共需要15个小时。
在至少一个实施例中,虽然关键点是在PointNet++体系结构中使用的 欧几里得空间的自然表示,但是大多数铰接的模型使用关节作为自然参数 化。在至少一个实施例中,期望在关节空间中具有输出,该输出可以用作 DART之前的关节。在至少一个实施例中,训练了第三神经网络,其将由 PointNet++启发的体系结构预测的23个关键点位置映射到相应的关节角度。 在至少一个实施例中,这个被称为关节网(JointNet)的神经网络是两层完 全连接的网络,其接受大小为23×3的输入并预测手指的关节角度的20 维向量。
在至少一个实施例中,在跨越多个人类手工作室工作量的限制内收集 的数据上训练神经网络,以确保该应用程序的准确姿势适合并启用DART 的明智先验。定性地,在至少一个实施例中,手追踪器对于几何上接近 DART人类手模型的手工作良好。在至少一个实施例中,在不同手姿势和 手指配置的七千幅图像的验证集上的平均关键点误差为9.7mm,并且每个 关节的关节误差为1.33度。
在图5中,PointNet++启发的体系结构分两个阶段运行。第一阶段将 手分段(如粉红色所示),并提供粗糙的手的姿势。第二阶段根据第一阶段 的手分段和姿势来优化手的姿势。损失函数包括分段损失,预测关键点和 基本真实关键点之间的欧几里得损失,以及在[11]中使用的投票损失。由 于第二阶段优化了关键点,因此无需分段损失。集合抽象采用大小为N x (d+C)的输入并输出N'x(d+C4),而特征传播层采用大小为N'x(d+C') 的输入并输出大小为N x(d+C3)的张量。这两者共同构成了网络的骨干。 MLP用于将PointNet++主干的嵌入映射到相应的期望的输出。有关网络的 更多详细信息参见附录。
在图6中,在一个实施例中,输入点云具有来自桌子以及人体和臂的 点。在至少一个实施例中,平面适合于移除桌子上的点,并且剩余的点被 输入到网络的第一阶段,该网络恢复手姿势。在至少一个实施例中,第二 阶段改善姿势并提供更准确的结果。在至少一个实施例中,右侧的手图像 示出了来自图5的阶段1和阶段2的结果。
在至少一个实施例中,利用DART启动数据收集并且无需手姿势先验, 从而为初始网络的训练提供种子以产生手先验。随后,DART和最新训练 的神经网络可能会生成越来越多的数据。在至少一个实施例中,用最新的 数据集永久地更新网络,以越来越好地生成DART先验,这可以最终扩展 DART可以无故障运行的范围。在一些示例中,手姿势神经网络可以是基 于点网的架构,该架构直接在融合的点云数据上操作,该融合点云数据是 通过将来自外部校准深度相机的深度图像反投影到具有由DART提供的注 释的单个全局参考框架中而获得的。在各种实施例中,由于融合的点云既 包含桌子上的点也包含人体和臂,因此必须首先定位手。可以通过安装平 面并将包含臂和人体的剩余点馈入点网来从桌子上移除点,点网可以定位 手并提供手姿势。点网可以是基于通过手上指定关键点的3D位置的基于 投票的回归方案估计手姿势,该技术可能与2D关键点定位中常使用的空 间softmax相关联。在各种实施例中,可以训练点网来预测手上指定的23 个关键点的3D坐标-五个手指中的每一个的四个关节关键点和在手的背面 上的三个关键点-用于手姿势估计。损失函数可以是预测的关键点与地面真 实关键点之间的欧几里得距离。另外,可以包括辅助分段损失以获得手分 段。出于效率原因,在将任何输入点云馈入到点网之前,可以将其进行统一子采样为固定的8192×3大小。在至少一个实施例中,尽管可以实现合 理的手姿势估计和分段,但是对于手指上的20个关节关键点的高质量预测 可能还没有实现。在至少一个实施例中,在输入处使用的统一子采样可以 指示未对手指上的点进行密集采样,因此可能需要第二阶段细化,该第二 阶段细化在给定第一阶段的姿势和分段的情况下,从最初原始点云中重新 采样手上的点。在至少一个实施例中,可以在相同的损失函数上训练第二 阶段,但是反而可以仅使用手上采样的点来准确地预测23个关键点。在至 少一个实施例中,为了使来自第一阶段的手姿势中的任何不准确具有鲁棒 性,可以将随机扰动添加到第二阶段的手姿势中。图4描绘了根据至少一 个实施例的系统内的第二阶段改进。在至少一个实施例中,可以通过运行 DART为关键点、关节角度和分段提供注释,在每批次30分钟到45分钟总共7-8小时收集的100K点云上训练点网的两个阶段。在至少一个实施例 中,为了提供手指的关节角度先验,可以训练第三神经网络,其将由点网 预测的关键点位置映射到相应的关节角度。该神经网络(可以被称为关节 网(JointNet))可以是两层完全连接的网络,该网络接受输入大小为23× 3并预测手指关节角度的20维向量。
在至少一个实施例中,在跨多个人类手收集的数据上训练神经网络, 以确保该系统的准确姿势适合并启用DART的明智先验。在一些实施例中, 手追踪器对于几何上接近DART人类手的模型的手可能工作更好。
在至少一个实施例中,在运动学上与人类手不同的机器人手的远程操 作可能需要能够将所观察到的人类手关节映射到机器人手关节的模块,在 一些实施例中可以将其称为Allegro手关节。图7示出了根据至少一个实施 例的人类手姿势702和执行相应姿势的机器人抓取器704的示例。运动学 重定位可能有很多不同的方法。例如,在至少一个实施例中,可以使用模 块来匹配从手掌到指尖和中间关节的位置,以及近端指骨和拇指远端指骨的方向性。在至少一个实施例中,优化的映射可以用于标记人类深度图像, 使得深度网络可以摄取深度图像并输出关节角度。在至少一个实施例中, 还利用了运动重定位(motionretargeting)。例如,可以在无监督的情况下 训练深度递归神经网络以重定位骨骼之间的运动。在至少一个实施例中, 该系统利用指尖任务空间度量,因为远端区域在抓取和操纵任务中可能具 有最高优先级,如通过其接触率、神经支配程度以及对精细的手内操纵技能的增强的可控制性所测量的。在至少一个实施例中,两只手之间的关节 轴线和位置可以不同,因此,不能使用直接比较两只手之间的关节角度的 度量。在至少一个实施例中,为了捕获并优化指尖的定位,要考虑指尖之 间的距离和方向。具体地,在至少一个实施例中,用于运动学重定位的成 本函数可以被选择为:
Figure BDA0002684851560000131
其中qh,qa分别是人类手模型和Allegro手的角度,ri∈R3可以是从一个 坐标系的原点指向另一个坐标系的原点的向量,以原点坐标系表示(请参见 图7)。进一步,在至少一个实施例中,di=||ri(qh)||以及
Figure BDA0002684851560000132
转 换权重函数s(di)可以被定义为:
Figure BDA0002684851560000141
其中S1可以是源自主手指(食指、中指、无名指)并指向拇指的向量, 而S2可以是两个主手指都具有关联向量∈S1时(例如,两个主手指都用拇 指投射)的两个主手指之间的向量。在至少一个实施例中,距离函数f(di)∈R 定义为:
Figure BDA0002684851560000142
其中,β=1.6可以是比例因子,η1=1×10-4m可以是主手指和拇指之 间的距离,以及η2=3×10-2m可以是当两个主手指都用拇指投射时两个主 手指之间的最小间距。
Figure BDA0002684851560000143
在至少一个实施例中,这些投影确保主手指和拇指之间的接触紧密,而不 会在精确抓取中引起主手指碰撞。在至少一个实施例中,这在出现视觉手 指追踪不准确时可能特别有用。在一些示例中,向量ri不仅可以捕获从一 个任务空间到另一任务空间的距离和方向,而且它们在局部坐标中的表达 可以进一步包含关于坐标系统以及由此指尖如何彼此定向的信息。因此, 在至少一个实施例中,人类手模型的坐标系可以在Allegro模型上具有定向 和位置相似的等效坐标系。图7中所示的向量可以形成产生期望的重定位 行为的最小集合。在一些实施例中,γ=2.5×10-3可以是将Allegro角度调 整为零(等于完全张开手)的权重。在至少一个实施例中,该术语有助于 减少解决方案中的冗余,并确保手不会进入可能难以恢复的奇怪的极小值 (例如,手指将自己嵌入手掌中)。在至少一个实施例中,在图8中示出了 通过运动学重定位产生的从人手602-617到Allegro机器人手618-633的各种映射。图8示出了人类手姿势802-817和机器人抓取器818-833的相应 姿势的集合。
在至少一个实施例中,使用序列最小二乘二次规划(“SLSQP”)算法 实时地最小化上述成本函数。在至少一个实施例中,该例程以Allegro关节 角度设置为零开始,并且此后的每个解决方案都可以由先前的解决方案开 始。在至少一个实施例中,找到了人类手模型和Allegro手各种坐标系之间 的正向运动学计算。在至少一个实施例中,将一阶低通滤波器应用于原始 的重定位关节角度,以消除追踪人类手时出现的高频噪声并平滑离散事件,例如投影算法在重定位角度中引起阶跃响应变化。
在至少一个实施例中,Riemannian运动策略(“RMP”)是实时运动产 生方法,其从潜在函数梯度和相应的Riemannian度量来计算加速度场。在 至少一个实施例中,RMP在一个内聚框架中将多优先级笛卡尔(Cartesian) 轨迹的生成和避免碰撞行为结合在一起。在至少一个实施例中,它们用于 在给定观察到的人类手姿势的情况下控制Allegro手掌的笛卡尔姿势,同时 避免使用碰撞平面与桌子或操作员发生臂-手掌碰撞。在至少一个实施例中, 给定这些目标,RMP生成目标臂关节轨迹,并以200Hz的频率被发送到 臂的扭矩级阻抗控制器。在至少一个实施例中,以运动学方式重定位的 Allegro角度以30Hz被发送到扭矩级关节控制器。在至少一个实施例中, 一个最终的校准细节涉及向机器人系统记录人类手姿势运动。在至少一个 实施例中,这是通过找到从机器人坐标系到相机坐标系的变换来完成的。 在至少一个实施例中,使用人类手的初始视图和机器人手假定的初始姿势 来计算该变换。在至少一个实施例中,为了促进驾驶员的空间推理,驾驶 员的期望的初始手姿势是完全张开的手,且手掌平行于桌子并且手指指向 前方。在至少一个实施例中,机器人的假定的初始姿势模仿该姿势。在至 少一个实施例中,以这种方式,机器人沿与驾驶员的手相同的方向移动, 从而实现了直观的空间推理。
总体而言,该系统可以可靠地用于解决跨越一定难度范围的各种任务。 在某些示例中,解决这些任务的能力表明,该系统可能具有灵活性,可以 表现出精确性和力量抓取,多指的握持(prehensile)的和非握持操作,手 内手指步态(gaiting)以及手内操纵复合(例如,用两根手指抓取同时用 其余的手指进行操纵)。
图9示出了根据至少一个实施例的任务的示例,在该任务中,机器人 被控制为从折叠的钱包中取出纸张。在至少一个实施例中,驾驶员必须首 先打开钱包并将其移动到特定的有利位置以便取出纸币。在至少一个实施 例中,手能够通过将手指彼此挤压来持有纸张。
图10示出了根据至少一个实施例的任务的示例,在该任务中,机器 人被控制为从抽屉中移除物体。在至少一个实施例中,这是一个有点长范 围的任务,并且需要在打开抽屉并握住茶袋时灵活。
图11示出了根据至少一个实施例的任务的示例,在该任务中,控制 机器人打开罐子。在至少一个实施例中,该任务需要多次旋转盖子以在保 持接触的同时打开盖子。
下表描述了15种不同任务的示例,这些任务具有不同的复杂度,范 围从经典的拾取和放置到多步骤长范围任务。在至少一个实施例中,以五 (5)次连续试验来操作这些任务中的每一个以避免优先选择,并且相应地 报告成功率。在至少一个实施例中,如果对象从工作空间体积中掉出,则 该试验被认为是失败的。最后一列代表在随着时间改变手的状态时,远程 操作所需的技能。
Figure BDA0002684851560000161
Figure BDA0002684851560000171
在一个实验中,驾驶员经历了热身训练阶段,在此阶段他们尝试通过 三到五(3-5)次非连续尝试来解决任务。随后,每个驾驶员针对每项任务 进行了五次连续的测试试验,以避免优先选择结果,并根据驾驶员的表现 对其进行评分。这些任务的性能指标包括平均完成时间(“CT”)和成功率, 它们捕获了远程操作系统的速度和可靠性。该系统由两名驾驶员进行了测 试,在图12和图13中报告了其性能指标。
在至少一个实施例中,该系统可以可靠地用于解决具有一定难度的各 种任务。在至少一个实施例中,跨任务的平均CT的差异指示任务复杂性 和视界范围的影响。在至少一个实施例中,每个任务的驾驶员之间的平均 CT差异表明确实存在对驾驶员行为的依赖性。在至少一个实施例中,影响 包括疲劳、训练、创造力和动机。在至少一个实施例中,解决这些任务的 能力表明,远程操作系统具有灵活性,可以表现出精确性和力量抓取、多 指握持和非握持操作,手内手指步态以及手内操纵复合(例如,用两根手 指抓取同时用其余的手指进行操纵)。注意,在至少一个实施例中,某些任 务,例如容器(Container)和钱包(Wallet)任务,由于这些任务是多阶段 任务,因此需要花费特别长的时间进行远程操作。另一方面,需要拾取小 立方体的任务可能特别具有挑战性,因为使用运动学重定位中使用的投影 方案释放对这些对象的抓取的行为可能是不可预测的。然而,在各种实施 例中,仅通过裸露的人类手的观察而转移的灵巧技能的这种丰富展示提供 了表明本文的方法和体系结构工作良好的经验证据。在至少一个实施例中, 值得强调的一个重要方面是,尽管针对特定任务的完全远程操作过程可能 并不完美(例如,驾驶员可能会丢失手中的对象,除了再次获取它以完成 任务以外),收集的数据对于帮助机器人学习从故障中恢复仍然同样有价值。 在至少一个实施例中,该数据可以被视为对学习远程计划有用的播放数据。 在至少一个实施例中,可以在触觉信号中观察到诸如间歇性手指-对象接触 之类的离散事件。在至少一个实施例中,这些状态动作信号中的波动揭示 了通过这种具体设置在系统中引起的丰富、复杂的行为。在至少一个实施 例中,还可以获得力估计。在至少一个实施例中,现在可以根据特定任务 的需要生成该数据,希望可以在自主设置中收集功能性感觉运动模式并将 其授予系统。
在至少一个实施例中,该系统可以通过将观察到的人类手和手指的运 动转换成机器人臂和手指的运动,来使高度致动的手臂系统能够找到针对 各种操纵任务的电动机解决方案。在至少一个实施例中,诸如从钱包中提 取纸币并在塑料容器内打开纸板箱之类的若干任务可能是如此复杂,以至 于手工设计机器人解决方案或直接应用学习方法可能很棘手。通过具体的 机器人解决这些任务和其他任务,可以允许根据许多演示的需要生成这些 解决方案。此外,在系统本身上创建这些解决方案可允许读取、访问和存 储机器人的指尖中的各种触觉信号、通过手和臂发出的各种命令和测量的 关节位置和速度信号、整个系统中的各种扭矩命令以及与系统相关联的所 有相机馈送。在至少一个实施例中,这种丰富的数据源与任务的演示一起 可以被用于解决复杂的、多阶段的、长范围的任务。
在至少一个实施例中,本文描述的技术提供了用于远程操作高级DoA 机器人系统的可行的低成本解决方案。在至少一个实施例中,可以扩大驾 驶员的可观察的工作量,以允许使用更好的RGB-D相机覆盖更大距离的 任务。在至少一个实施例中,运动学重定位中的投影方案能够成功地操纵 小对象,但是会干扰手指姿态任务并及时释放对小对象上的抓取。在至少 一个实施例中,该问题完全可以通过手追踪来解决,该追踪可以准确地解 决人类指尖接触的情况。在至少一个实施例中,通过增强驾驶员的手的大 小和形状的鲁棒性,进一步改善了人类手追踪。缺少触觉反馈可能会使精 确任务难以完成。为了补偿,在至少一个实施例中,建立自主控制特征减 轻了驾驶员的一些控制负担。在至少一个实施例中,减少了系统延迟并且 调整了RMP运动生成器的响应性以进行更快的反应。在至少一个实施例 中,诸如滑入配合轴孔中插入的高精度任务提出了挑战。在至少一个实施 例中,通过改善手追踪性能,对组装对象进行自动精确抓取控制以及改善 对小零件和插入位置的瞄准,大大降低了完成任务的难度。
在至少一个实施例中,对系统的输入是人类演示者的手的点云。在至 少一个实施例中,诸如基于PointNet++神经网络的神经网络之类的神经网 络将点云映射到相对于相机的手的姿势以及手的关节角度的估计值。在至 少一个实施例中,这些估计连同铰接的手模型和最初点云然后被提供给 DART,DART通过细化神经网络估计来执行追踪。最后,在一个实施例 中,为了执行运动学重定位,解决了找到导致指尖姿势接近人类手的 Allegro手关节角度的优化问题。
在至少一个实施例中,通过具有神经网络的关键点检测来完成戴着手 套的手追踪。在至少一个实施例中,用户戴着带有彩色斑点的黑色手套, 并在覆盖有黑布的桌子上移动手,即,以有助于手追踪的方式来装备场景。 在至少一个实施例中,由于颜色是不同的并且大多数背景是黑色,因此 OpenCV HSV颜色阈值被用来为这些有色斑点生成注释。在至少一个实施 例中,HSV阈值随一天中的时间而变化,因此跨天收集数据以建立50K图 像的大数据集。至少一个实施例使用神经网络来拟合该数据,这使得整个 过程对光照变化和不良注释具有鲁棒性,并且避免了用户在测试时寻找适 当阈值的负担。在至少一个实施例中,被称为GloveNet的网络使用末端具 有空间softmax的四(4)层ResNet-50,以回归到指尖的2D位置。至少一 个实施例使用抗锯齿的ResNet-50进行准确和一致的预测。下面说明了管 道的各个阶段。
至少一个实施例在训练时使用图像并且应用各种数据增强。至少一个 实施例聚焦于在桌子上移动的手。对于每个训练图像,至少一个实施例将 深度超过阈值的所有像素的颜色值设置为零。在训练时,至少一个实施例 或者用手套上的任何颜色填充这些归零(zeroed-out)值,或者基于随机数 生成器使图像保持不变。至少一个实施例还基于某种概率来替换这些归零 值随机噪声。在至少一个实施例中,网络学会忽略背景中看起来与手套上 的颜色相似的颜色。
至少一个实施例使用测试时间增强(“TTA”)来获得每个预测的指尖 位置的置信度。至少一个实施例通过以下方式生成新图像:将最初图像进 行随机移位并将在一个批次使它们全部通过网络。然后,至少一个实施例 从每个图像的预测位置中减去所应用的随机位移,以将其带入最初图像的 参考帧中,并对它们求平均,以获得均值和标准差。至少一个实施例使用 标准偏差作为置信度测量。至少一个实施例还使用它来清理嘈杂的地面真 实数据。
在测试时,至少一个实施例为每个相机图像生成四个随机移位的图像, 以及所有四个相机的总计16张图像的组合。至少一个实施例计算预测的指 尖位置及其置信度测量,并丢弃具有低置信度的那些。对于可置信的那些 中,至少一个实施例计算它们与先前的指尖位置之间的Euclidean距离di, 并通过softmax将它们转换为概率pi:
Figure BDA0002684851560000201
至少一个实施例在滚动缓冲区中推送概率pi>0.2的预测位置,并计 算几何中值以获得3D指尖的最终预测位置。超参数α=500。
Figure BDA0002684851560000202
在至少一个实施例中,在手掌背部的斑点的预测是稳定的,但是指尖 斑点的预测在时间上趋于相当不一致。在至少一个实施例中,由于注释是 通过使用OpenCV中的HSV颜色阈值计算分段的斑点的质心(“CoM”) 而生成的,因此由于遮挡(occlusion),指尖的CoM在整个帧中有些不一 致。因此,至少一个实施例仅依赖于由手掌背部的斑点提供的手姿势估计。
Figure BDA0002684851560000203
Figure BDA0002684851560000211
在至少一个实施例中,该体系结构由四(4)个集合抽象层SAi和四 (4)个特征传播层FPj组成。在至少一个实施例中,集合抽象层对点进行 子采样,而特征传播层以更高的分辨率插值特征。
在至少一个实施例中,一组抽象级别将N×(d+C)作为具有d-dim 坐标和C-dim点特征的N个点的输入。至少一个实施例输出张量N’×(d+ C’),其中具有d-dim坐标和新的C’-dim特征向量的N’次采样点概括了 局部上下文。
在至少一个实施例中,在特征传播级别上,点特征从Ni×(d+C)个 点传播到Ni-1个点,其中设置了Ni-1和Ni(Ni≤Ni-1)为集合抽象级别i的 输入和输出的点集大小。在至少一个实施例中,这是通过在Ni-1点的坐标 处内插Ni点的特征值来实现的。在至少一个实施例中,然后将Ni-1点上的 插值特征与来自集合抽象级别的跳过链接的点特征进行级联。
在至少一个实施例中,手姿势估计的骨干是返回大小为N×C的嵌入 f的体系结构。不同的MLP用于将该嵌入映射到相应的期望输出。
z=mlp_layer1(f)
δxyz=voting(z)
cords=inputxyzxyz
JointMaskxyz=sigmoid(seg(z))
HandSegxyz=cls(z)
HandSegProbxyz=sigmoid(HandSegxyz)
weights=HandSegProbxyz JointMaskxyz
Figure BDA0002684851560000212
Figure BDA0002684851560000221
在至少一个实施例中,投票(voting)层获得23个关键点相对于每个 点的相对位置δxyz。seg层获取每个关键点的掩膜,即有助于关键点位置的 点的邻域。在至少一个实施例中,HandSeg层将手从背景中分割出来。至 少一个实施例将Euclidean损失用于投票和关键点,同时将Sigmoid交叉熵 用于HandSeg。
在至少一个实施例中,在馈送到返回关节角度的20维向量的JointNet 之前,将23×3个关键点位置展开为69维向量。在至少一个实施例中,在 尝试的所有手工设计的体系结构中,该特定体系结构被证明是准确性和效 率之间的有效折衷。
Figure BDA0002684851560000222
对于一个实施例,示出了针对每个任务的五(5)次连续试验的完成 时间。在至少一个实施例中,失败的试验用F表示。在至少一个实施例中, 对于大多数试验,驾驶员仅使用三至四(3-4)条训练路径进行预热。在至 少一个实施例中,这五(5)次连续试验既能够测试执行特定任务不感到疲 劳的能力,又可以使追踪工作无故障。在至少一个实施例中,性能可以根 据驾驶员及其在给定日期的感觉而变化,但是实验已经表明,性能总体上 非常相似。
Figure BDA0002684851560000231
在至少一个实施例中,用神经网络重定位产生了不令人满意的结果- 它不提供与具有序列最小二乘法的在线优化相当的精度。在至少一个实施 例中,在重定位时使用的投影阈值在抓取小对象时可能需要一些调整,因 此训练神经网络进行新的任意任务变得很麻烦。
在至少一个实施例中,手追踪系统依赖于基于模型的追踪和无模型的 追踪的组合。在至少一个实施例中,基于模型的追踪系统趋向于更加精确, 因为它们基于给定模型的输入观测值进行在线优化。然而,在至少一个实 施例中,由于优化趋于高度非线性,因此它们还需要良好的初始化以找到 合理的解决方案。在至少一个实施例中,至少一个实施例使用可以提供良 好初始化的无模型系统。在至少一个实施例中,无模型系统是对由基于模型的系统生成的数据进行训练的神经网络。
在至少一个实施例中,使用DART[27]中的基于模型的追踪器,并在 可靠地工作的区域中收集数据,并重复进行此操作以覆盖各种姿势。在至 少一个实施例中,DART的性能可以是随机的:由于给定输入点云的优化 中的虚假局部极小值,它有时可能可靠地对同一运动起作用,而在其他时 候则灾难性地失败。然而,在至少一个实施例中,如果收集了针对其合理 工作的场景的数据,则可以使用神经网络来拟合该数据并确保其可以为 DART提供良好的初始化,从而防止其在将来陷入虚假局部最小值。在至 少一个实施例中,这是确定(incumbent)的事实,即神经网络可以在训练 集范围之外进行泛化。在至少一个实施例中,该数据收集和神经网络拟合 的过程被重复执行,并改善了DART的性能,使得追踪工作可以长时间无 故障地进行。在至少一个实施例中,在由DART生成的注释上训练了基于 两级PointNet++的体系结构,并允许至少一个实施例通过提供良好的初始 化来使追踪既健壮又准确。
图14示出了通过计算机系统执行的结果的处理的示例,该处理通过 模拟人类手的运动来指导机器人臂执行任务。在至少一个实施例中,计算 机系统是如图21至图23所示的计算机系统。在至少一个实施例中,计算 机系统包括处理器和存储器,其中该存储器存储可执行指令,该可执行指 令由于被处理器执行而导致系统执行在图14中示出的并在下面的描述中 进行描述的操作。在至少一个实施例中,处理器是多个处理器或专用处理 器,例如在图15至图43中示出的并在下面描述的GPU。
在至少一个实施例中,在框1402处,计算机系统从深度相机获得人 类手的图像。在各种实施例中,深度相机可以是RGB深度相机、双目相机、 雷达或基于激光的成像仪、或医学成像系统(例如,MRI、X射线、计算 机断层摄影或计算机轴向断层摄影扫描仪)。在至少一个实施例中,在框 1404处,计算机系统从图像中生成人类手的点云。点云提供了描述手的三 维数据,可以从中确定姿势。在至少一个实施例中,在框1406处,计算机 系统分析点云以确定手的关节结构和关节角度。在各种实施例中,这与手 在空间中的位置结合在一起构成了手的姿势。
在至少一个实施例中,在框1408处,计算机系统将人类手的姿势转 换成机器人抓取器的相应姿势。在至少一个实施例中,机器人抓取器可以 是类似于人类手的铰接的机器人手。铰接的机器人手可以具有比人类手更 少或更多的手指,并且铰接的机器人手的每个手指可以具有一个或多个铰 接的分段。在至少一个实施例中,人类手的姿势包括一组铰接的分段和关 节角度以及人类手的整体位置,并且机器人抓取器的姿势是通过用机器人 手复制人类手姿势的关节角度来确定的。在至少一个实施例中,机器人手 具有比人类手少的手指,并且与人类手指的子集相关联的姿势用于确定机 器人抓取器的相应姿势。在至少一个实施例中,机器人抓取器可以大于或 小于人类手,并且在确定机器人抓取器的相应姿势时将比例因子应用于人 类手的姿势。在至少一个实施例中,人类手姿势包括手的位置,并且通过 将坐标系从相应于人类驾驶员的坐标系转换成机器人的坐标系来确定机器 人手的对应位置。在一些示例中,比例因子可以应用于姿势的位置方面。 例如,人类手的六英寸的运动可以对应于机器人抓取器进行的六英尺的运 动。
在至少一个实施例中,在框1410处,计算机系统确定一组动作,以 将机器人抓取器从当前位置重新定位到在框1408处确定的相应姿势。在至 少一个实施例中,系统确定运动路径以用于机器人手将机器人手从其当前 姿势改变为在框1408处确定的姿势。在至少一个实施例中,这些运动是根 据Reimannian(黎曼)运动策略确定的。在至少一个实施例中,在框1412 处,计算机系统使机器人执行在框1410处确定的一组运动。在至少一个实 施例中,结果是,机器人抓取器移动以采取与人类手相对应的姿势。在各 种实施例中,使用这些技术,驾驶员能够通过驾驶员的手的运动来直观地 指导机器人的运动。在至少一个实施例中,不需要手套或磨损的设备。
推理和训练逻辑
图15A示出了用于执行与一个或更多个实施例相关联的推理和/或训 练操作的推理和/或训练逻辑1515。本文结合图15A和/或图15B提供关于 推理和/或训练逻辑815的细节。
在至少一个实施例中,推理和/或训练逻辑1515可以包括但不限于代 码和/或数据存储1501,用于存储前向和/或输出权重和/或输入/输出数据、 和/或其他参数以配置在一个或更多个实施例的方面中被训练和/或被用于 推理的神经网络的神经元或层。在至少一个实施例中,训练逻辑1515可以 包括或被耦合到代码和/或数据存储1501以存储图形代码或其他软件以控 制定时和/或顺序,其中权重和/或其他参数信息将被加载以配置包括整数和 /或浮点单元(统称为算术逻辑单元(ALU))的逻辑。在至少一个实施例 中,诸如图形代码之类的代码基于代码所对应的神经网络的架构将权重或 其他参数信息加载到处理器ALU中。在至少一个实施例中,代码和/或数 据存储1501存储在使用一个或更多个实施例的方面进行推理和/或训练期 间输入/输出数据和/或权重参数的正向传播期间与一个或更多个实施例结 合训练或使用的神经网络的每一层的权重参数和/或输入/输出数据。在至少 一个实施例中,代码和/或数据存储1501的任何部分可以与其他片上或片 外数据存储(包括处理器的L1、L2或L3高速缓存或系统存储器)一起被 包括。
在至少一个实施例中,代码和/或数据存储1501的任何部分可以在一 个或更多个处理器或其他硬件逻辑设备或电路的内部或外部。在至少一个 实施例中,代码和/或代码和/或数据存储1501可以是高速缓存存储器、动 态随机可寻址存储器(“DRAM”)、静态随机可寻址存储器(“SRAM”)、 非易失性存储器(例如闪存)或其他存储装置。在至少一个实施例中,代 码和/或代码和/或数据存储1501是处理器的内部还是外部的选择,例如, 是由DRAM、SRAM、闪存还是由其他类型的存储器组成,取决于片上可 用存储、进行训练和/或推理功能的延迟要求、在推理和/或训练神经网络中 使用的数据的批量大小或这些因素的某种组合。
在至少一个实施例中,推理和/或训练逻辑1515可以包括但不限于代 码和/或数据存储1505,以存储与在一个或更多个实施例的方面中被训练和 /或用于推理的神经网络或神经网络的层相对应的向后和/或输出权重和/或 输入/输出数据。在至少一个实施例中,代码和/或数据存储1505存储在使 用一个或更多个实施例的方面的训练和/或推理期间在向后传播输入/输出 数据和/或权重参数期间,与一个或更多个实施例一起训练或结合使用的神 经网络的每一层的权重参数和/或输入/输出数据。在至少一个实施例中,训练逻辑1515可以包括或被耦合到代码和/或数据存储1505以存储图形代码 或其他软件以控制定时和/或顺序,在该定时和/或顺序中权重和/或其他参 数信息将被加载以配置包括整数和/或浮点单元(统称为算术逻辑单元 (ALU))的逻辑。在至少一个实施例中,诸如图形代码之类的代码基于代 码所对应的神经网络的架构将权重或其他参数信息加载到处理器ALU中。 在至少一个实施例中,代码和/或数据存储1505的任何部分可以与其他片 上或片外数据存储包括在一起,包括处理器的L1、L2或L3高速缓存或系 统存储器。在至少一个实施例中,代码和/或数据存储1505的任何部分可 以在一个或更多个处理器或其他硬件逻辑设备或电路的内部或外部。在至 少一个实施例中,代码和/或数据存储1505可以是高速缓存存储器、DRAM、 SRAM、非易失性存储器(例如,闪存)或其他存储器。在至少一个实施 例中,代码和/或数据存储1505是处理器的内部还是外部的选择,例如, 是由DRAM、SRAM、闪存还是其他存储类型组成的,取决于片上可用存 储、进行训练和/或推理功能的延迟要求、在推理和/或训练神经网络中使用 的数据的批量大小或这些因素的某种组合。
在至少一个实施例中,代码和/或数据存储1501和代码和/或数据存储 1505可以是分开的存储结构。在至少一个实施例中,代码和/或数据存储 1501和代码和/或数据存储1505可以是相同的存储结构。在至少一个实施 例中,代码和/或数据存储1501和代码和/或数据存储1505可以是部分相同 的存储结构和部分分离的存储结构。在至少一个实施例中,代码和/或数据 存储1501和代码和/或数据存储1505的任何部分可以与其他片上或片外数据存储包括在一起,包括处理器的L1、L2或L3高速缓存或系统存储器。
在至少一个实施例中,推理和/或训练逻辑1515可以包括但不限于包 括整数和/或浮点单元的一个或更多个算术逻辑单元(“ALU”)1510,以至 少部分地基于训练和/或推理代码(例如,图形代码)或由其指示执行逻辑 和/或算术操作,其结果可以产生存储在激活存储1520中的作为储在代码 和/或数据存储1501和/或代码和/或数据存储1505中输入/输出和/或权重参 数数据功能的激活(例如,来自神经网络内的层或神经元的输出值)。在至 少一个实施例中,存储在激活存储1520中的激活是根据由ALU 1510响应 于执行指令或其他代码执行的线性代数和/或基于矩阵的数学生成的,其中 将存储在代码和/或数据存储1505的权重值和/或数据1501与其他值(例如, 偏置值、梯度信息、动量值或其他参数或超参数)一起用作操作数,这些 值中的任意或者全部可以存储在代码和/或数据存储1505或代码和/或数据 存储1501或其他片上或片下存储器。
在至少一个实施例中,一个或更多个处理器或其他硬件逻辑设备或电 路中包括一个或更多个ALU 1510,而在另一实施例中,一个或更多个ALU 1510可以在使用它们的处理器或其他硬件逻辑设备或电路(例如,协处理 器)的外部。在至少一个实施例中,ALU1510可以被包括在处理器的执行 单元之内,或者以其他方式被包括在处理器的执行单元可以访问的一套 ALU中,该套ALU可以在同一处理器内或者分布在不同类型的不同处理 器之间(例如,中央处理器、图形处理单元、固定功能单元等)。在至少一 个实施例中,数据存储1501,代码和/或数据存储1505和激活存储1520 可以在同一处理器或其他硬件逻辑装置或电路上,而在另一实施例中,它 们可以在不同的处理器或其他硬件逻辑装置或电路中,或相同和不同处理 器或其他硬件逻辑设备或电路的某种组合中。在至少一个实施例中,激活 存储1520中的任何部分可以与其他片上或片外数据存储包括在一起,包括 处理器的L1、L2或L3高速缓存或系统存储器。此外,推理和/或训练代 码可以与处理器或其他硬件逻辑或电路可访问的其他代码一起存储,并可 以使用处理器的提取、解码、调度、执行、退出和/或其他逻辑电路来提取 和/或处理。
在至少一个实施例中,激活存储1520可以是高速缓存存储器、DRAM、 SRAM、非易失性存储器(例如,闪存)或其他存储器。在至少一个实施 例中,激活存储1520可以完全或部分在一个或更多个处理器或其他逻辑电 路之内或之外。在至少一个实施例中,激活存储1520是处理器的内部还是 外部的选择,例如,或者是由DRAM、SRAM、闪存或某种其他存储类型 组成的,取决于片上可用存储、进行训练和/或推理功能的延迟要求、在推 理和/或训练神经网络中使用的数据的批量大小或这些因素的某种组合。在 至少一个实施例中,图15A中所示的推理和/或训练逻辑1515可以与专用 集成电路(“ASIC”)(例如,来自谷歌的
Figure BDA0002684851560000282
处理单元,来自 GraphcoreTM的推理处理单元(IPU)或来自因特尔公司的
Figure BDA0002684851560000281
(例如 “Lake Crest”)处理器)结合使用。在至少一个实施例中,图15A所示的推理和/或训练逻辑1515可以与中央处理单元(“CPU”)硬件,图形处理 单元(“GPU”)硬件或其他硬件(例如现场可编程门阵列(“FPGA”))结 合使用。
图15B示出了根据至少一个实施例的各种推理和/或训练逻辑1515。 在至少一个实施例中,推论和/或训练逻辑1515可以包括但不限于硬件逻 辑,其中计算资源是专用的或以其他方式专用地与对应于神经网络内的一 层或更多层神经元的权重值或其他信息结合使用。在至少一个实施例中, 图15B中所示的推理和/或训练逻辑1515可以与专用集成电路(ASIC)(例 如Google的
Figure BDA0002684851560000291
处理单元、GraphcoreTM的推理处理单元(IPU) 或来自因特尔公司的
Figure BDA0002684851560000292
(例如“Lake Crest”)处理器)结合使用。 在至少一个实施例中,图15B所示的推理和/或训练逻辑1515可以与中央 处理单元(CPU)硬件、图形处理单元(GPU)硬件或其他硬件(例如现 场可编程门阵列(FPGA))结合使用。在至少一个实施例中,推理和/或训 练逻辑1515包括但不限于代码和/或数据存储1501和代码和/或数据存储1505,其可以用于存储代码(例如,图形代码)权重值和/或其他信息,包 括偏置值、梯度信息、动量值、和/或其他参数或超参数信息。在图15B中 所示的至少一个实施例中,代码和/或数据存储1501和代码和/或数据存储 1505中的每一个都分别与专用的计算资源(例如,计算硬件1502和计算 硬件1506)相关联。在至少一个实施例中,计算硬件1502和计算硬件1506 中的每一个包括一个或更多个ALU,一个或更多个ALU仅对分别存储在 代码和/或数据存储1501和代码和/或数据存储1505中的信息执行数学功能 (例如,线性代数函数),其结果存储在激活存储1520中。
在至少一个实施例中,代码和/或数据存储1501和1505以及相应的 计算硬件1502和1506中的每一个分别对应于神经网络的不同层,从而提 供产生来自数代码和/或数据存储1501和计算硬件1502的一个“存储/计算 对1501/1502”的激活作为对代码和/或数据存储1505和计算硬件1506的 下一个“存储/计算对1505/1506”的输入,以镜像神经网络的概念组织。 在至少一个实施例中,每个存储/计算对1501/1502和1505/1506可以对应 于一个以上的神经网络层。在至少一个实施例中,在推理和/或训练逻辑 1515中可以包括在存储计算对1501/1502和1505/1506之后或与之并行的 附加存储/计算对(未示出)。
神经网络训练和部署
图16示出了根据至少一个实施例的深度神经网络的训练和部署。在 至少一个实施例中,使用训练数据集1602来训练未训练的神经网络1606。 在至少一个实施例中,训练框架1604是PyTorch框架,而在其他实施例中, 训练框架1604是Tensorflow、Boost、Caffe、Microsoft Cognitive Toolkit/CNTK、MXNet、Chainer、Keras、Deeplearning4j或其他培训框架。 在至少一个实施例中,训练框架1604训练未训练的神经网络1606,并使 它能够使用本文所述的处理资源来训练,以生成训练后的神经网络1608。 在至少一个实施例中,权重可以被随机选择或通过使用深度信念网络。在 至少一个实施例中,可以以有监督、部分有监督或无监督的方式执行训练。
在至少一个实施例中,使用监督学习来训练未训练的神经网络1606, 其中训练数据集1602包括与输入的期望输出配对的输入,或者其中训练数 据集1602包括具有已知输出的输入,以及神经网络1606的输出是手动分 级的。在至少一个实施例中,未训练的神经网络1606以监督的方式被训练, 以处理来自训练数据集1602的输入,并将结果输出与一组期望或预期的输 出进行比较。在至少一个实施例中,然后通过未训练的神经网络1606将错误传播回去。在至少一个实施例中,训练框架1604调整控制未训练的神经 网络1606的权重。在至少一个实施例中,训练框架1604包括用于监视未 经训练的神经网络1606正朝着诸如训练后的神经网络1608之类的模型收 敛的状况的工具,该模型适于基于诸如新数据1612之类的已知输入数据来 生成诸如结果1614之类的正确答案。在至少一个实施例中,训练框架1604 在调整权重的同时反复训练未训练的神经网络1606,以使用损失函数和调 整算法(例如随机梯度下降)来完善未训练的神经网络1606的输出。在至 少一个实施例中,训练框架1604训练未训练的神经网络1606,直到未训 练的神经网络1606达到期望的精度为止。在至少一个实施例中,然后可以 部署经循环的神经网络1608以实施任何数量的机器学习操作。
在至少一个实施例中,未训练的神经网络1606是使用非监督学习来 训练的,其中,未训练的神经网络1606尝试使用未标记的数据来训练自己。 在至少一个实施例中,无监督学习训练数据集1602将包括输入数据,而没 有任何相关联的输出数据或“地面实况(ground truth)”数据。在至少一个 实施例中,未经训练的神经网络1606可以学习训练数据集1602内的分组, 并且可以确定各个输入如何与未经训练的数据集1602相关。在至少一个实 施例中,可以使用未经监督的训练来生成自组织图,其为一种够执行对减 小新数据1612的维数有用的操作的经训练的神经网络1608。在至少一个 实施例中,无监督训练也可用于执行异常检测,其允许识别新数据集1612 中的数据点,偏离新数据集1612的正常模式。
在至少一个实施例中,可以使用半监督学习,这是一种技术,其中训 练数据集1602包括标记数据和未标记数据的混合。在至少一个实施例中, 训练框架1604可以用于执行增量学习,诸如通过转移的学习技术。在至少 一个实施例中,增量学习使受过训练的神经网络1608能够适应新数据1612, 而不会忘记在初始训练期间注入到网络中的知识。
数据中心
图17示出了示例数据中心1700,其中可以使用至少一个实施例。在 至少一个实施例中,数据中心1700包括数据中心基础设施层1710、框架 层1720、软件层1730和应用层1740。
在至少一个实施例中,如图17所示,数据中心基础设施层1710可以 包括资源协调器1712、分组的计算资源1714和节点计算资源(“节点C.R.”) 1716(1)-1716(N),其中“N”代表任何完整的正整数。在至少一个实 施例中,节点C.R.1716(1)-1716(N)可以包括但不限于任何数量的中 央处理单元(“CPU”)或其他处理器(包括加速器、现场可编程门阵列(FPGA)、图形处理器等)、存储设备(例如,动态只读存储器)、存储器 设备(例如,固态或磁盘驱动器)、网络输入/输出(“NW I/O”)设备、网 络交换机、虚拟机(“VM”),电源模块和冷却模块等。在至少一个实施例 中,节点C.R.1716(1)-1716(N)中的一个或更多个节点C.R.可以是具 有上述计算资源的一个或更多个的服务器。
在至少一个实施例中,分组的计算资源1714可以包括容纳在一个或 更多个机架(未示出)中的节点C.R.的单独分组,或者容纳在各个地理位 置(也未示出)的数据中心中的许多机架的单独分组。分组的计算资源1714 内的节点C.R.的单独分组可以包括可以配置成或分配为支持一个或更多个 工作负载的分组的计算、网络、存储器或存储资源。在至少一个实施例中, 可以将包括CPU或处理器的几个节点C.R.分组在一个或更多个机架内,以 提供计算资源来支持一个或更多个工作负载。在至少一个实施例中,一个 或更多个机架还可以包括任何数量的电源模块、冷却模块和网络交换机的 任意组合。
在至少一个实施例中,资源协调器1712可以配置成或以其他防水工 会控制一个或更多个节点C.R.1716(1)-1716(N)和/或分组的计算资源 1714。在至少一个实施例中,资源协调器1712可以包括用于数据中心1700 的软件设计基础设施(“SDI”)管理实体。在至少一个实施例中,资源协 调器可以包括硬件、软件或其某种组合。
在至少一个实施例中,如图17所示,框架层1720包括作业调度器 1732、配置管理器1734、资源管理器1736和分布式文件系统1738。在至 少一个实施例中,框架层1720可以包括用于支持软件层1730的软件1732 和/或应用程序层1740的一个或更多个应用程序1742的框架。在至少一个 实施例中,软件1732或一个或更多个应用程序1742可分别包括基于Web 的服务软件或应用程序,例如由Amazon Web Services,Google Cloud和 MicrosoftAzure提供的服务或应用程序。在至少一个实施例中,框架层1720 可以是但不限于一种免费和开放源软件网络应用框架,例如可以利用分布 式文件系统1738用于大型扩展数据处理(例如“大数据”)的Apache Spark TM(以下称为“Spark”)。在至少一个实施例中,作业调度器1732可以包 括Spark驱动器,以促进对数据中心1700的各个层所支持的工作负荷的调度。在至少一个实施例中,配置管理器1734可以能够配置不同的层(例如, 包括Spark的软件层1730和框架层1720)和用于支持大规模数据处理的 分布式文件系统1738。在至少一个实施例中,资源管理器1736能够管理 映射到或分配用于支持分布式文件系统1738和作业调度器1732的集群或 分组计算资源。在至少一个实施例中,集群或分组计算资源可以包括在数 据中心基础设施层1710处的分组计算资源1714。在至少一个实施例中, 资源管理器1736可以与资源协调器1712协调以管理这些映射或分配的计 算资源。
在至少一个实施例中,包括在软件层1730中的软件1732可以包括由 节点C.R.1716(1)-1716(N)、分组计算资源1714和/或框架层1720的 分布式文件系统1738的至少一部分使用的软件。一种或更多种类型的软件 可以包括但不限于Internet网页搜索软件、电子邮件病毒扫描软件、数据 库软件和流视频内容软件。
在至少一个实施例中,应用层1740中包括的一个或更多个应用程序 1742可以包括由节点C.R.1716(1)-1716(N)的至少一部分、分组的计 算资源1714和/或框架层1720的分布式文件系统1738使用的一种或更多 种类型的应用程序。一种或更多种类型的应用程序可以包括但不限于任何 数量的基因组学应用程序,认知计算和机器学习应用程序,包括训练或推 理软件,机器学习框架软件(例如,PyTorch、TensorFlow、Caffe等)或 其他与一个或更多个实施例结合使用的机器学习应用程序。
在至少一个实施例中,配置管理器1734、资源管理器1736和资源协 调器1712中的任何一个可以基于以任何技术上可行的方式获取的任何数 量和类型的数据来实现任何数量和类型的自我修改动作。在至少一个实施 例中,自我修改动作可以减轻数据中心1700的数据中心操作员做出可能不 好的配置决定并且可以避免数据中心的未充分利用和/或执行差的部分。
在至少一个实施例中,数据中心1700可以包括工具、服务、软件或 其他资源,以根据本文所述的一个或更多个实施例来训练一个或更多个机 器学习模型或者使用一个或更多个机器学习模型来预测或推理信息。例如, 在至少一个实施例中,可以通过使用上文关于数据中心1700描述的软件和 计算资源,根据神经网络架构通过计算权重参数来训练机器学习模型。在 至少一个实施例中,通过使用通过本文所述的一种或更多种训练技术计算出的权重参数,可以使用上面与关于数据中心1700所描述的资源,使用对 应于一个或更多个神经网络的经训练的机器学习模型来推理或预测信息。
在至少一个实施例中,数据中心可以使用CPU、专用集成电路(ASIC)、 GPU、FPGA或其他硬件来使用上述资源来执行训练和/或推理。此外,上 述的一个或更多个软件和/或硬件资源可以配置成一种服务,以允许用户训 练或执行信息推理,例如图像识别、语音识别或其他人工智能服务。
推理和/或训练逻辑1515用于执行与一个或更多个实施例相关联的推 理和/或训练操作。本文结合图15A和/或图15B提供关于推理和/或训练逻 辑1515的细节。在至少一个实施例中,推理和/或训练逻辑1515可以在系 统图17中使用,至少部分地基于使用神经网络训练操作、神经网络功能和 /或架构或本文所述的神经网络用例计算出的权重参数来推理或预测操作。
自主车辆
图18A示出了根据至少一个实施例的自主车辆1800的示例。在至少 一个实施例中,自主车辆1800(在本文中可替代地称为“车辆1800”)可 以是但不限于客运车辆,例如汽车、卡车、公共汽车和/或可容纳一个或更 多个乘客的另一种类型的车辆。在至少一个实施例中,车辆1800可以是用 于拖运货物的半牵引车-拖车。在至少一个实施例中,车辆1800可以是飞 机、机器人车辆或其他类型的车辆。
可以根据由美国运输部下属的国家公路交通安全管理局(“NHTSA”) 和汽车工程师学会(“SAE”)“与用于道路机动车辆的驾驶自动化系统有关 的术语(Taxonomy andDefinitions for Terms Related to Driving Automation Systems for On-Road MotorVehicles)”(例如,于2018年6月15日发布 的标准号J3016-201806,于2016年9月30日发布的标准号J3016-201609, 以及该版本的以前和将来的版本此标准)定义的自动化级别来描述自动驾 驶汽车。在一个或更多个实施例中,车辆1800可能能够根据自动驾驶级别 的级别1至级别5中的一个或更多个来进行功能。例如,在至少一个实施 例中,根据实施例,车辆1800可能能够进行条件自动化(级别3)、高度 自动化(级别4)和/或全自动(级别5)。
在至少一个实施例中,车辆1800可以包括但不限于组件,诸如底盘、 车身、车轮(例如,2、4、6、8、18等)、轮胎、车轴和车辆的其他组件。 在至少一个实施例中,车辆1800可以包括但不限于推进系统1850,例如 内燃机、混合动力装置、全电动发动机和/或另一种推进系统类型。在至少 一个实施例中,推进系统1850可以连接至车辆1800的传动系,其可以包 括但不限于变速器,以使得能够对车辆1800进行推进。在至少一个实施例 中,可以响应于从油门/加速器1852接收信号以控制推进系统1850。
在至少一个实施例中,当推进系统1850正在运行时(例如,当车辆 行驶时),转向系统1854(其可以包括但不限于方向盘)用于使车辆1800 转向(例如,沿着期望的路径或路线)。在至少一个实施例中,转向系统 1854可以从一个或更多个转向致动器1856接收信号。方向盘对于全自动 化(级别5)功能可以是可选的。在至少一个实施例中,制动传感器系统1846可以用于响应于从一个或更多个制动致动器1848和/或制动传感器接 收到的信号来操作车辆制动器。
在至少一个实施例中,一个或更多个控制器1836可以包括但不限于 一个或更多个片上系统(“SoC”)(图18A中未示出)和/或一个或更多个 图形处理单元(“GPU”)向车辆1800的一个或更多个组件和/或系统提供 信号(例如,代表命令)。例如,在至少一个实施例中,一个或更多个控制 器1836可以发送信号以通过制动致动器1848操作车辆制动,通过一个或 更多个转向致动器1856操作转向系统1854,和/或通过油门/加速器1852 操作推进系统1850。一个或更多个控制器1836可以包括一个或更多个机 载(例如,集成)计算设备(例如,超级计算机),其处理传感器信号并输 出操作命令(例如,表示命令的信号)以实现自动驾驶和/或协助驾驶员驾 驶车辆1800。在至少一个实施例中,一个或更多个控制器1836可以包括 用于自动驾驶功能的第一控制器1836,用于功能安全功能的第二控制器 1836,用于人工智能功能(例如计算机视觉)的第三控制器1836,用于信 息娱乐功能的第四控制器1836,用于紧急情况下的冗余的第五控制器1836 和/或其他控制器。在至少一个实施例中,单个控制器1836可以处理上述 功能中的两个或更多个,两个或更多控制器1836可以处理单个功能和/或 其任何组合。
在至少一个实施例中,一个或更多个控制器1836响应于从一个或更 多个传感器(例如,传感器输入)接收到的传感器数据,提供用于控制车 辆1800的一个或更多个组件和/或系统的信号。在至少一个实施例中,传 感器数据可以从传感器接收,传感器类型例如但不限于全球导航卫星系统 (“GNSS”)传感器1858(例如,一个或更多个全球定位系统传感器)、一 个或更多个RADAR传感器1860、一个或更多个超声波传感器1862、一个 或更多个LIDAR传感器1864、一个或更多个惯性测量单元(IMU)传感 器1866(例如,一个或更多个加速度计、一个或更多个陀螺仪、一个或更 多个磁罗盘、一个或更多个磁力计等)、一个或更多个麦克风1896、一个 或更多个立体声相机1868、一个或更多个广角相机1870(例如鱼眼相机)、 一个或更多个红外相机1872、一个或更多个环绕相机1874(例如,360度 相机)、远程相机(图18A中未示出)、中程相机(图18A中未示出)、一 个或更多个速度传感器1844(例如,用于测量车辆1800的速度)、一个或 更多个振动传感器1842、一个或更多个转向传感器1840、一个或更多个制 动传感器(例如,作为制动传感器系统1846的一部分)和/或其他传感器 类型接收。
在至少一个实施例中,一个或更多个控制器1836可以从车辆1800 的仪表板1832接收输入(例如,由输入数据表示)并通过人机界面(“HMI”) 显示器1834、声音信号器、扬声器和/或车辆1800的其他组件提供输出(例 如,由输出数据、显示数据等表示)。在至少一个实施例中,输出可包括信 息,诸如车速、速度、时间、地图数据(例如,高清晰度地图(图18A中 未显示)、位置数据(例如,车辆1800的位置,例如在地图上)、方向、其 他车辆的位置(例如,占用光栅)、关于对象的信息以及由一个或更多个控 制器1836感知到的对象的状态等。例如,在至少一个实施例中,HMI显 示器1834可以显示关于一个或更多个对象的存在的信息(例如,路牌、警 告标志、交通信号灯变更等)和/或有关驾驶操作车辆已经、正在或将要制 造的信息(例如,现在改变车道、在两英里内驶出34B出口等)。
在至少一个实施例中,车辆1800进一步包括网络接口1824,其可以 使用一个或更多个无线天线1826和/或一个或更多个调制解调器通过一个 或更多个网络进行通信。例如,在至少一个实施例中,网络接口1824可能 能够通过长期演进(“LTE”)、宽带码分多址(“WCDMA”)、通用移动电 信系统(“UMTS”)、全球移动通信系统(“GSM”)、IMT-CDMA多载波(“CDMA2000”)等进行通信。在至少一个实施例中,一个或更多个无线 天线1826还可以使用一个或更多个局域网(例如Bluetooth、Bluetooth Low Energy(LE)、Z-Wave、ZigBee等)和/或低功耗广域网(以下简称“LPWAN”) (例如LoRaWAN、SigFox等),使环境中的对象(例如,车辆、移动设备) 之间进行通信。
推理和/或训练逻辑1515用于执行与一个或更多个实施例相关联的推 理和/或训练操作。下面结合图15A和/或图15B提供关于推理和/或训练逻 辑1515的细节。在至少一个实施例中,推理和/或训练逻辑1515可以在系 统图18A中用于至少部分地基于使用神经网络训练操作、神经网络功能和 /或架构或本文所述的神经网络用例计算出的权重参数来推理或预测操作。
图18B示出了根据至少一个实施例的图18A的自主车辆1800的相机 位置和视野的示例。在至少一个实施例中,相机和各自的视野是一个示例 实施例,并且不旨在进行限制。例如,在至少一个实施例中,可以包括附 加的和/或替代的相机和/或相机可以位于车辆1800上的不同位置。
在至少一个实施例中,用于相机的相机类型可以包括但不限于可以适 于与车辆1800的组件和/或系统一起使用的数字相机。在至少一个实施例 中,一种或更多种相机可以以汽车安全完整性等级(“ASIL”)B和/或其他 ASIL进行操作。在至少一个实施例中,根据实施例,相机类型可以具有任 何图像捕获速率,例如60帧每秒(fps)、120fps、240fps等。在至少一个 实施例中,相机可以能够使用滚动快门、全局快门、另一种类型的快门或 其组合。在至少一个实施例中,滤色器阵列可以包括红色透明的透明 (“RCCC”)滤色器阵列、红色透明的透明蓝色(“RCCB”)滤色器阵列、 红色蓝色绿色透明(“RBGC”)滤色器阵列、FoveonX3滤色器阵列、拜耳 (Bayer)传感器(“RGGB”)滤色器阵列、单色传感器滤色器阵列和/或其他类型的滤色器阵列。在至少一个实施例中,可以使用透明像素相机,例 如具有RCCC、RCCB和/或RBGC滤色器阵列的相机,以努力提高光敏性。
在至少一个实施例中,一个或更多个相机可以用于执行先进驾驶员辅 助系统(“ADAS”)功能(例如,作为冗余或故障安全设计的一部分)。例 如,在至少一个实施例中,可以安装多功能单声道相机以提供包括车道偏 离警告、交通标志辅助和智能大灯控制的功能。在至少一个实施例中,一 个或更多个相机(例如,所有相机)可以同时记录并提供图像数据(例如, 视频)。
在至少一个实施例中,可以将一个或更多个相机安装在安装组件中, 例如定制设计的(三维(“3D”)打印的)组件,以便切出杂散光和来自在 汽车内的反光(例如,仪表板的反射在挡风玻璃镜中反光),其可能会干扰 相机的图像数据捕获能力。关于后视镜安装组件,在至少一个实施例中, 后视镜组件可以是3D打印定制的,使得相机安装板匹配后视镜的形状。 在至少一个实施例中,一个或更多个相机可以被集成到后视镜中。对于侧 视相机,在至少一个实施例中,一个或更多个相机也可以集成在舱室的每 个角落的四个支柱内。
在至少一个实施例中,具有包括车辆1800前面的环境的部分的视野 的相机(例如,前向相机)可以用于环视,以及在一个或更多个控制器1836 和/或控制SoC的帮助下帮助识别向前的路径和障碍物,从而提供对于生成 占用网格和/或确定优选的车辆路径至关重要的信息。在至少一个实施例中, 前向相机可以用于执行许多与LIDAR相同的ADAS功能,包括但不限于 紧急制动、行人检测和避免碰撞。在至少一个实施例中,前向相机也可以 用于ADAS功能和系统,包括但不限于车道偏离警告(“LDW”)、自动巡 航控制(“ACC”)和/或其他功能(例如,交通标志识别)。
在至少一个实施例中,各种相机可以用于前向配置,包括例如包括 CMOS(“互补金属氧化物半导体”)彩色成像仪的单目相机平台。在至少 一个实施例中,广角相机1870可以用于感知从外围进入的对象(例如,行 人、过马路或自行车)。尽管在图18B中仅示出了一个广角相机1870,但 是,在其他实施例中,车辆1800上可以有任何数量(包括零)的广角相机1870。在至少一个实施例中,任何数量的远程相机1898(例如,远程立体 相机对)可用于基于深度的对象检测,尤其是对于尚未训练神经网络的对 象。在至少一个实施例中,远程相机1898也可以用于对象检测和分类以及 基本对象追踪。
在至少一个实施例中,任何数量的立体声相机1868也可以包括在前 向配置中。在至少一个实施例中,一个或更多个立体声相机1868可以包括 集成控制单元,该集成控制单元包括可缩放处理单元,该可缩放处理单元 可以提供可编程逻辑(“FPGA”)和具有单个芯片上集成的控制器局域网 (“CAN”)或以太网接口的多核心微处理器。在至少一个实施例中,这样 的单元可以用于生成车辆1800的环境的3D地图,包括对图像中所有点的 距离估计。在至少一个实施例中,一个或更多个立体相机1868可以包括但 不限于紧凑型立体视觉传感器,其可以包括但不限于两个相机镜头(左右 分别一个)和一个图像处理芯片,其可以测量从车辆1800到目标对象的距 离并使用所生成的信息(例如,元数据)来激活自主紧急制动和车道偏离 警告功能。在至少一个实施例中,除了本文所述的那些之外,还可以使用其他类型的立体相机1868。
在至少一个实施例中,具有包括车辆1800侧面的环境的一部分的视 野的相机(例如,侧视相机)可以用于环绕查看,从而提供用于创建和更 新占据网格的信息,以及产生侧面碰撞警告。例如,在至少一个实施例中, 一个或更多个环绕相机1874(例如,如图18B所示的四个环绕相机1874) 可以定位在车辆1800上。在至少一个实施例中,一个或更多个环绕相机 1874可以包括但不限于,一个或更多个广角相机1870、一个或更多个鱼目 镜头、一个或更多个360度相机和/或类似物的任意数量和组合。例如,在 至少一个实施例中,四个鱼目镜头相机可以位于车辆1800的前、后和侧面。 在至少一个实施例中,车辆1800可以使用三个环绕相机1874(例如,左、 右和后面),并且可以利用一个或更多个其他相机(例如,前向相机)作为 第四个环视相机。
在至少一个实施例中,具有包括车辆1800后方的环境的一部分的视 野的相机(例如,后视相机)可以用于停车辅助、环视、后方碰撞警告、 以及创建和更新占用光栅。在至少一个实施例中,可以使用各种各样的相 机,包括但不限于还适合作为一个或更多个前向相机的相机(例如,一个 或更多个远程相机1898和/或一个或更多个中程相机1876、一个或更多个 立体相机1868、一个或更多个红外相机1872等),如本文所述。
推理和/或训练逻辑1515用于执行与一个或更多个实施例相关的推理 和/或训练操作。本文结合图15A和/或图15B提供关于推理和/或训练逻辑 1515的细节。在至少一个实施例中,推理和/或训练逻辑1515可以用于图 18B的系统中,以至少部分地基于使用本文所述的神经网络训练操作、神 经网络功能和/或架构、或神经网络用例计算出的权重参数来推理或预测操 作。
图18C示出了根据至少一个实施例的图18A的自主车辆1800的示例 系统架构的框图。在至少一个实施例中,图18C中的车辆1800的组件、 特征和系统中的每一个都示出为经由总线1802连接。在至少一个实施例中, 总线1802可包括但不限于CAN数据接口(在本文中可替代地称为“CAN 总线”)。在至少一个实施例中,CAN总线可以是车辆1800内部的网络,用于帮助控制车辆1800的各种特征和功能,例如制动器的致动、加速、制 动、转向、雨刷等。在一个实施例中,总线1802可以配置成具有数十个甚 至数百个节点,每个节点具有其自己的唯一标识符(例如,CAN ID)。在 至少一个实施例中,可以读取总线1802以找到方向盘角度、地面速度、发 动机每分钟转动次数(“RPM”)、按钮位置和/或其他车辆状态指示器。在至少一个实施例中,总线1802可以是符合ASIL B的CAN总线。
在至少一个实施例中,除了CAN之外或来自CAN,可使用FlexRay 和/或以太网(Ethernet)。在至少一个实施例中,可以有任意数量的总线1802, 其可以包括但不限于零或更多的CAN总线,零或更多的FlexRay总线,零 或更多的以太网总线,和/或零或更多的使用其他协议的其他类型的总线。 在至少一个实施例中,两个或更多个总线1802可以用于执行不同的功能, 和/或可以用于冗余。例如,第一总线1802可以用于碰撞避免功能,并且 第二总线1802可以用于致动控制。在至少一个实施例中,每个总线1802 可以与车辆1800的任何组件通信,并且两个或更多个总线1802可以与相 同的组件通信。在至少一个实施例中,任何数量的一个或更多个片上系统 (“SoC”)1804中的每一个,一个或更多个控制器1836中的每一个和/或 车辆内的每个计算机都可以访问相同的输入数据(例如,来自车辆1800 的传感器的输入),并且可以连接到公共总线,例如CAN总线。
在至少一个实施例中,车辆1800可以包括一个或更多个控制器1836, 诸如本文关于图18A所描述的那些。控制器1836可以用于多种功能。在 至少一个实施例中,控制器1836可以耦合到车辆1800的各种其他组件和 系统中的任何一个,并且可以用于控制车辆1800、车辆1800的人工智能、 车辆1800的信息娱乐等。
在至少一个实施例中,车辆1800可以包括任何数量的SoC 1804。SoC 1804中的每一个可以包括但不限于中央处理单元(“CPU”)1806、图形处 理单元(“GPU”)1808、一个或更多个处理器1810、一个或更多个高速缓 存1812、一个或更多个加速器1814、一个或更多个数据存储器1816和/ 或其他未显示的组件和特征。在至少一个实施例中,一个或更多个SoC1804可以用于在各种平台和系统中控制车辆1800。例如,在至少一个实施 例中,一个或更多个SoC 1804可以与高清晰度(“HD”)地图1822在系统 (例如,车辆1800的系统)中组合,该高清晰度地图1822可以经由网络 接口1824从一个或更多个服务器(图18C中未示出)获得地图刷新和/或 更新。
在至少一个实施例中,一个或更多个CPU 1806可以包括CPU集群 或CPU复合体(在本文中可替代地称为“CCPLEX”)。在至少一个实施例 中,一个或更多个CPU 1806可以包括多个核心和/或二级(“L2”)高速缓 存。例如,在至少一个实施例中,一个或更多个CPU 1806可以在相互耦 合的多处理器配置中包括八个核心。在至少一个实施例中,一个或更多个CPU 1806可以包括四个双核心集群,其中每个集群具有专用的L2高速缓 存(例如,2MB L2高速缓存)。在至少一个实施例中,CPU 1806(例如, CCPLEX)可以配置成支持同时的集群操作,使得一个或更多个CPU 1806 的集群的任何组合在任何给定的时间都可以是活跃的。
在至少一个实施例中,一个或更多个CPU 1806可以实现电源管理功 能,这些功能包括但不限于以下特征中的一个或更多个:空闲时可以自动 对各个硬件模块进行时钟门控以节省动态功率;当核心由于执行等待中断 (“WFI”)/事件等待(“WFE”)指令而未主动执行指令时,可以对每个核 心时钟进行门控;每个核心都可以独立供电;当所有核心都被时钟门控或 功率门控时,每个核心集群可以被独立地时钟门控;和/或当所有核心都被 功率门控时,每个核心集群可以被独立地功率门控。在至少一个实施例中, 一个或更多个CPU1806可以进一步实现用于管理功率状态的增强算法, 其中指定了允许的功率状态和预期的唤醒时间,并且硬件/微码确定了针对 核心、集群和CCPLEX输入的最佳功率状态。在至少一个实施例中,处理 核心可以在软件中支持简化的功率状态输入序列,其中工作被分担给微码。
在至少一个实施例中,一个或更多个GPU 1808可以包括集成的GPU (在本文中或者被称为“iGPU”)。在至少一个实施例中,一个或更多个 GPU 1808可以是可编程的,并且对于并行工作负载可以是有效的。在至少 一个实施例中,一个或更多个GPU 1808,在至少一个实施例中,可以使用 增强的张量指令集。在至少一个实施例中,一个或更多个GPU 1808可以 包括一个或更多个流式微处理器,其中每个流式微处理器可以包括一级 (“L1”)高速缓存(例如,具有至少96KB的存储容量的L1高速缓存), 以及两个或更多个流式微处理器可以共享L2高速缓存(例如,具有512KB 存储容量的L2高速缓存)。在至少一个实施例中,GPU1808可以包括至 少八个流式微处理器。在至少一个实施例中,一个或更多个GPU 1808可以使用一个或更多个计算应用程序编程接口(一个或更多个API)。在至少 一个实施例中,一个或更多个GPU 1808可以使用一个或更多个并行计算 平台和/或编程模型(例如,NVIDIA的CUDA)。
在至少一个实施例中,一个或更多个GPU 1808可以经功耗优化以在 汽车和嵌入式用例中获得最佳性能。例如,在一个实施例中,可以在鳍式 场效应晶体管(“FinFET”)上制造一个或更多个GPU 1808。在至少一个 实施例中,每个流式微处理器可以包含多个划分为多个块的混合精度处理 核心。例如但不限于,可以将64个PF32核心和32个PF64核心划分为四 个处理块。在至少一个实施例中,可以为每个处理块分配16个FP32核心、 8个FP64核心、16个INT32核心、两个用于深度学习矩阵算术的混合精 度NVIDIA TENSOR CORE、零级(“L0”)指令缓存、线程束调度器、分 派单元和/或64KB寄存器文件。在至少一个实施例中,流式微处理器可以 包括独立的并行整数和浮点数据路径来提供混合了计算和寻址运算的工作 量的有效执行。在至少一个实施例中,流式微处理器可以包括独立的线程 调度能力,以实现更细粒度的同步和并行线程之间的协作。在至少一个实 施例中,流式微处理器可以包括组合的L1数据高速缓存和共享存储器单 元,以便在简化编程的同时提高性能。
在至少一个实施例中,一个或更多个GPU 1808可以包括高带宽存储 器(“HBM”)和/或16GB HBM2存储器子系统,以在一些示例中提供约 900GB/秒的峰值存储带宽。在至少一个实施例中,除了或替代于HBM存 储器,可以使用同步图形随机存取存储器(“SGRAM”),例如图形双倍数 据速率类型的五同步随机存取存储器(“GDDR5”)。
在至少一个实施例中,一个或更多个GPU 1808可以包括统一存储器 技术。在至少一个实施例中,地址转换服务(“ATS”)支持可以用于允许 一个或更多个GPU 1808直接访问一个或更多个CPU 1806页表。在至少一 个实施例中,当一个或更多个GPU 1808存储器管理单元(“MMU”)经历 未命中时,可以将地址转换请求发送到一个或更多个CPU 1806。作为响应, 在至少一个实施例中,一个或更多个CPU 1806可以在其页面表中查找地 址的虚拟-物理的映射并将转换传送回一个或更多个GPU 1808。在至少一 个实施例中,统一存储器技术可以允许单个统一虚拟地址空间用于一个或 更多个CPU 1806和一个或更多个GPU 1808存储器二者,从而简化了一个 或更多个GPU 1808的编程以及将应用程序移植到一个或更多个GPU 1808。
在至少一个实施例中,一个或更多个GPU 1808可以包括任意数量的 访问计数器,其可以追踪一个或更多个GPU 1808对其他处理器的存储器 的访问频率。在至少一个实施例中,访问计数器可以帮助确保将存储器页 面移动到最频繁访问页面的处理器的物理存储器中,从而提高处理器之间 共享的存储器范围的效率。
在至少一个实施例中,一个或更多个SoC 1804可以包括任何数量的 高速缓存1812,包括本文所述的那些。例如,在至少一个实施例中,一个 或更多个高速缓存1812可以包括可用于一个或更多个CPU 1806和一个或 更多个GPU 1808二者(例如,连接两个CPU1806和GPU 1808)的三级 (“L3”)高速缓存。在至少一个实施例中,一个或更多个高速缓存1812 可以包括回写式高速缓存,该回写式高速缓存可以例如通过使用高速缓存 相干协议(例如,MEI、MESI、MSI等)来追踪线的状态。在至少一个实 施例中,尽管可以使用较小的高速缓存大小,根据实施例,L3高速缓存可 以包括4MB或更多。
在至少一个实施例中,一个或更多个SoC 1804可以包括一个或更多 个加速器1814(例如,硬件加速器、软件加速器或其组合)。在至少一个 实施例中,一个或更多个SoC1804可以包括硬件加速集群,其可以包括优 化的硬件加速器和/或大的片上存储器。在至少一个实施例中,大的片上存 储器(例如4MB的SRAM)可以使硬件加速集群能够加速神经网络和其 他计算。在至少一个实施例中,硬件加速集群可以用于补充一个或更多个 GPU1808并且卸载一个或更多个GPU 1808的一些任务(例如,释放一个 或更多个GPU 1808的更多周期以执行其他任务)。在至少一个实施例中, 一个或更多个加速器1814可以用于足够稳定以经得起加速检验的目标工 作负载(例如,感知、卷积神经网络(“CNN”)、递归神经网络(“RNN”) 等)。在至少一个实施例中,CNN可以包括基于区域或区域卷积神经网络 (“RCNN”)和快速RCNN(例如,如用于对象检测)或其他类型的CNN。
在至少一个实施例中,一个或更多个加速器1814(例如,硬件加速 集群)可以包括深度学习加速器(“DLA”)。一个或更多个DLA可以包括 但不限于一个或更多个Tensor处理单元(“TPU”),其可以配置成每秒提 供额外的10万亿次操作用于深度学习应用程序和推理。在至少一个实施例 中,TPU可以是配置成并被优化用于执行图像处理功能(例如,用于CNN、 RCNN等)的加速器。可以针对神经网络类型和浮点运算以及推理的特定 集合进一步优化DLA。在至少一个实施例中,一个或更多个DLA的设计 可以提供比典型的通用GPU更高的每毫米性能,并且通常大大超过CPU 的性能。在至少一个实施例中,一个或更多个TPU可执行若干功能,包括 支持例如INT8、INT16和FP16数据类型以用于特征和权重的单实例卷积 功能以及后处理器功能的。在至少一个实施例中,一个或更多个DLA可以 针对各种功能中的任何功能,在处理或未处理的数据上快速且有效地执行 神经网络,尤其是CNN,包括例如但不限于:用于使用来自相机传感器的 数据进行对象识别和检测的CNN;用于使用来自相机传感器的数据进行距 离估算的CNN;用于使用来自麦克风1896的数据进行紧急车辆检测以及 识别和检测的CNN;用于使用来自相机传感器的数据进行人脸识别和车主 识别的CNN;以及/或用于安全和/或安全相关事件的CNN。
在至少一个实施例中,一个或更多个DLA可以执行一个或更多个 GPU 1808的任何功能,并且通过使用推理加速器,例如,设计者可以将一 个或更多个DLA或一个或更多个GPU 1808作为目标用于任何功能。例如, 在至少一个实施例中,设计者可以将CNN的处理和浮点运算集中在一个 或更多个DLA上,并将其他功能留给一个或更多个GPU 1808和/或一个 或更多个其他加速器1814。
在至少一个实施例中,一个或更多个加速器1814(例如,硬件加速 集群)可以包括可编程视觉加速器(“PVA”),其在本文中可以可替代地称 为计算机视觉加速器。在至少一个实施例中,一个或更多个PVA可以设计 和配置为加速用于高级驾驶员辅助系统(“ADAS”)1838、自动驾驶、增 强现实(“AR”)应用程序和/或虚拟现实(“VR”)应用程序的计算机视觉算法。一个或更多个PVA可以在性能和灵活性之间取得平衡。例如,在至 少一个实施例中,每个PVA可以包括例如但不限于任何数量的精简指令集 计算机(“RISC”)核心、直接存储器访问(“DMA”)和/或任意数量的向 量处理器。
在至少一个实施例中,RISC核心可以与图像传感器(例如,本文描 述的任意相机的图像传感器)、图像信号处理器等交互。在至少一个实施例 中,每个RISC核心可以包括任意数量的存储器。在至少一个实施例中, 根据实施例,RISC核心可以使用多种协议中的任意一种。在至少一个实施 例中,RISC核心可以执行实时操作系统(“RTOS”)。在至少一个实施例中, 可以使用一个或更多个集成电路设备、专用集成电路(“ASIC”)和/或存储 设备来实现RISC核心。例如,在至少一个实施例中,RISC核心可以包括 指令高速缓存和/或紧密耦合的RAM。
在至少一个实施例中,DMA可以使一个或更多个PVA的组件能够独 立于一个或更多个CPU 1806访问系统存储器。在至少一个实施例中,DMA 可以支持用于向PVA提供优化的任何数量的特征,包括但不限于,支持多 维寻址和/或循环寻址。在至少一个实施例中,DMA可以支持多达六个或 更多个寻址的维度,其可以包括但不限于块宽度、块高度、块深度、水平 块步进、垂直块步进和/或深度步进。
在至少一个实施例中,向量处理器可以是可编程处理器,其可以设计 为有效且灵活地执行用于计算机视觉算法并提供信号处理能力的编程。在 至少一个实施例中,PVA可以包括PVA核心和两个向量处理子系统分区。 在至少一个实施例中,PVA核心可以包括处理器子系统、一个或更多个 DMA引擎(例如,两个DMA引擎)和/或其他外围设备。在至少一个实施例中,向量处理子系统可以用作PVA的主要处理引擎,并且可以包括向 量处理单元(“VPU”)、指令高速缓存和/或向量存储器(例如“VMEM”)。 在至少一个实施例中,VPU可以包括数字信号处理器,例如,单指令多数 据(“SIMD”)、超长指令字(“VLIW”)数字信号处理器。在至少一个实 施例中,SIMD和VLIW的组合可以提高吞吐量和速度。
在至少一个实施例中,每个向量处理器可以包括指令高速缓存并且可 以耦合到专用存储器。结果,在至少一个实施例中,每个向量处理器可以 配置为独立于其他向量处理器执行。在至少一个实施例中,特定PVA中包 括的向量处理器可以配置为采用数据并行性。例如,在至少一个实施例中, 单个PVA中包括的多个向量处理器可以执行相同的计算机视觉算法,除了 在图像的不同区域上之外。在至少一个实施例中,包括在特定PVA中的向量处理器可以在同一图像上同时执行不同的计算机视觉算法,或者甚至在 顺序图像或部分图像上执行不同的算法。在至少一个实施例中,除其他外, 在硬件加速集群中可以包括任何数量的PVA,并且在每个PVA中可以包括 任何数量的向量处理器。在至少一个实施例中,一个或更多个PVA可以包 括附加的纠错码(“ECC”)存储器,以增强整体系统安全性。
在至少一个实施例中,一个或更多个加速器1814(例如,硬件加速 集群)可以包括片上计算机视觉网络和静态随机存取存储器(“SRAM”), 用于为一个或更多个加速器1814提供高带宽,低延迟SRAM。在至少一 个实施例中,片上存储器可以包括至少4MB SRAM,其包括例如但不限于 八个现场可配置的存储器块,PVA和DLA均可以对其进行访问。在至少 一个实施例中,每对存储块可以包括高级外围总线(“APB”)接口、配置 电路、控制器和多路复用器。在至少一个实施例中,可以使用任何类型的 存储器。在至少一个实施例中,PVA和DLA可以经由为PVA和DLA提 供对存储器的高速访问的主干网来访问存储器。在至少一个实施例中,主 干网可以包括片上计算机视觉网络,其将PVA和DLA互连到存储器(例 如,使用APB)。
在至少一个实施例中,片上计算机视觉网络可以包括接口,该接口在 传输任何控制信号/地址/数据之前确定PVA和DLA均提供就绪和有效信号。 在至少一个实施例中,接口可以提供用于发送控制信号/地址/数据的单独的 相位和单独的信道,以及用于连续数据传输的突发型通信。在至少一个实 施例中,尽管可以使用其他标准和协议,但是接口可以符合国际标准化组 织(“ISO”)26262或国际电工委员会(“IEC”)61508标准。
在至少一个实施例中,一个或更多个SoC 1804可以包括实时视线追 踪硬件加速器。在至少一个实施例中,实时视线追踪硬件加速器可以用于 快速且有效地确定对象的位置和范围(例如,在世界模型内),以生成实时 可视化模拟,以用于RADAR信号解释,用于声音传播合成和/或分析,用 于SONAR系统的模拟,用于一般的波传播模拟,与用于定位和/或其他功 能的LIDAR数据进行比较,和/或用于其他用途。
在至少一个实施例中,一个或更多个加速器1814(例如,硬件加速 器集群)具有用于自动驾驶的广泛用途。在至少一个实施例中,PVA可以 是可编程视觉加速器,其可以用于ADAS和自动驾驶汽车中的关键处理阶 段。在至少一个实施例中,在低功耗和低延迟下PVA的能力与需要可预测 的处理的算法域良好匹配。换句话说,PVA在半密集或密集的常规计算中 表现出色,即使在小型数据集上也是如此,这些数据集需要具有低延迟和 低功耗的可预测的运行时间。在至少一个实施例中,诸如自主车辆(车辆 1800)PVA被设计为运行经典的计算机视觉算法,因为它们在对象检测和 整数数学运算方面是有效的。
例如,根据技术的至少一个实施例,PVA被用于执行计算机立体视 觉。在至少一个实施例中,可以在一些示例中使用基于半全局匹配的算法, 尽管这并不意味着限制性。在至少一个实施例中,用于3-5级自动驾驶的 应用程序在运行中使用动态的估计/立体匹配(例如,从运动中恢复结构、 行人识别、车道检测等)。在至少一个实施例中,PVA可以对来自两个单 目相机的输入执行计算机立体视觉功能。
在至少一个实施例中,PVA可以用于执行密集的光流。例如,在至 少一个实施例中,PVA可以处理原始RADAR数据(例如,使用4D快速 傅立叶变换)以提供处理后的RADAR数据。在至少一个实施例中,例如, 通过处理原始飞行时间数据以提供处理后的飞行时间数据,将PVA用于飞 行时间深度处理。
在至少一个实施例中,DLA可用于运行任何类型的网络以增强控制 和驾驶安全性,包括例如但不限于神经网络,其输出用于每个对象检测的 置信度。在至少一个实施例中,可以将置信度表示或解释为概率,或者表 示为提供每个检测相对于其他检测的相对“权重”。在至少一个实施例中, 置信度使系统能够做出进一步的决定,即关于哪些检测应当被认为是真正 的阳性检测而不是假阳性检测。例如,在至少一个实施例中,系统可以为置信度设置阈值,并且仅将超过阈值的检测视为真阳性检测。在使用自动 紧急制动(“AEB”)系统的一个实施例中,假阳性检测将导致车辆自动执 行紧急制动,这显然是不希望的。在至少一个实施例中,高度自信的检测 可以被认为是AEB的触发。在至少一个实施例中,DLA可以运行用于回 归置信度值的神经网络。在至少一个实施例中,神经网络可以将参数的至 少一些子集作为其输入,例如包围盒尺寸,获得的地平面估计(例如,从 另一子系统),与从神经网络和/或其他传感器(例如,一个或更多个LIDAR 传感器1864或一个或更多个RADAR传感器1860)等获得的对象的车辆 1800方向、距离、3D位置估计相关的一个或更多个IMU传感器1866的 输出。
在至少一个实施例中,一个或更多个SoC 1804可以包括一个或更多 个数据存储器1816(例如,存储器)。在至少一个实施例中,一个或更多 个数据存储器1816可以是一个或更多个SoC 1804的片上存储器,其可以 存储要在一个或更多个GPU 1808和/或DLA上执行的神经网络。在至少 一个实施例中,一个或更多个数据存储器1816可以具有足够大的容量以存 储神经网络的多个实例以用于冗余和安全。在至少一个实施例中,一个或 更多个数据存储器1816可以包括L2或L3高速缓存。
在至少一个实施例中,一个或更多个SoC 1804可以包括任何数量的 处理器1810(例如,嵌入式处理器)。在至少一个实施例中,一个或更多 个处理器1810可以包括启动和电源管理处理器,该启动和电源管理处理器 可以是专用处理器和子系统,以处理启动电源和管理功能以及相关的安全 实施。在至少一个实施例中,启动和电源管理处理器可以是一个或更多个 SoC 1804启动序列的一部分,并且可以提供运行时电源管理服务。在至少 一个实施例中,启动功率和管理处理器可以提供时钟和电压编程,辅助系 统低功率状态转换,一个或更多个SoC 1804热和温度传感器管理和/或一 个或更多个SoC 1804功率状态管理。在至少一个实施例中,每个温度传感 器可以实现为其输出频率与温度成比例的环形振荡器,并且一个或更多个 SoC 1804可以使用环形振荡器来检测一个或更多个CPU 1806,一个或更 多个GPU 1808和/或一个或更多个加速器1814的温度。在至少一个实施例 中,如果确定温度超过阈值,则启动和电源管理处理器可以进入温度故障 例程,并将一个或更多个SoC 1804置于较低功耗状态和/或将车辆1800置 于司机的安全停车图案(例如,使车辆1800安全停车)。
在至少一个实施例中,一个或更多个处理器1810可以进一步包括一 组嵌入式处理器,其可以用作音频处理引擎。在至少一个实施例中,音频 处理引擎可以是音频子系统,其能够通过多个接口以及广泛且灵活范围的 音频I/O接口为硬件提供对多通道音频的完全硬件支持。在至少一个实施 例中,音频处理引擎是专用处理器核心,其具有带专用RAM的数字信号 处理器。
在至少一个实施例中,一个或更多个处理器1810可以进一步包括始 终在线的处理器引擎,该引擎可以提供必要的硬件特征以支持低功率传感 器管理和唤醒用例。在至少一个实施例中,始终在线的处理器引擎上的处 理器可以包括但不限于处理器核心、紧密耦合的RAM、支持外围设备(例 如,定时器和中断控制器)、各种I/O控制器外围设备以及路由逻辑。
在至少一个实施例中,一个或更多个处理器1810可以进一步包括安 全集群引擎,该安全集群引擎包括但不限于用于处理汽车应用程序的安全 管理的专用处理器子系统。在至少一个实施例中,安全集群引擎可以包括 但不限于两个或更多个处理器核心、紧密耦合的RAM、支持外围设备(例 如,定时器、中断控制器等)和/或路由逻辑。在安全模式下,在至少一个 实施例中,两个或更多个核心可以以锁步模式操作,并且可以用作具有用 以检测其操作之间的任何差异的比较逻辑的单个核心。在至少一个实施例 中,一个或更多个处理器1810可以进一步包括实时相机引擎,该实时相机 引擎可以包括但不限于用于处理实时相机管理的专用处理器子系统。在至 少一个实施例中,一个或更多个处理器1810可以进一步包括高动态范围信 号处理器,该高动态范围信号处理器可以包括但不限于图像信号处理器, 该图像信号处理器是作为相机处理管线的一部分的硬件引擎。
在至少一个实施例中,一个或更多个处理器1810可以包括视频图像 合成器,该视频图像合成器可以是处理块(例如,在微处理器上实现),该 处理块实现视频回放应用产生最终的视频所需要的视频后处理功能,以产 生用于播放器窗口的最终图像。在至少一个实施例中,视频图像合成器可 以在一个或更多个广角相机1870、一个或更多个环绕相机1874和/或一个 或更多个舱内监控相机传感器上执行透镜畸变校正。在至少一个实施例中, 优选地,由在SoC 1804的另一实例上运行的神经网络来监控一个或更多个 舱室内监控相机传感器,该神经网络被配置为识别舱室事件并相应地做出 响应。在至少一个实施例中,舱室内系统可以执行但不限于唇读以激活蜂 窝服务和拨打电话、指示电子邮件、改变车辆的目的地、激活或改变车辆 的信息娱乐系统和设置、或者提供语音激活的网上冲浪。在至少一个实施 例中,当车辆以自主模式运行时,某些功能对于驾驶员是可用的,否则将 其禁用。
在至少一个实施例中,视频图像合成器可以包括用于同时空间和时间 降噪的增强的时间降噪。例如,在至少一个实施例中,在运动发生在视频 中的情况下,降噪适当地对空间信息加权,从而减小由相邻帧提供的信息 的权重。在至少一个实施例中,在图像或图像的一部分不包括运动的情况 下,由视频图像合成器执行的时间降噪可以使用来自先前图像的信息来降 低当前图像中的噪声。
在至少一个实施例中,视频图像合成器还可以配置为对输入的立体透 镜帧执行立体校正。在至少一个实施例中,当使用操作系统桌面时,视频 图像合成器还可以用于用户界面合成,并且不需要一个或更多个GPU 1808 来连续渲染新表面。在至少一个实施例中,当对一个或更多个GPU 1808 供电并使其活跃地进行3D渲染时,视频图像合成器可以被用于卸载一个 或更多个GPU 1808以改善性能和响应性。
在至少一个实施例中,一个或更多个SoC 1804可以进一步包括用于 从相机接收视频和输入的移动工业处理器接口(“MIPI”)相机串行接口、 高速接口和/或可用于相机和相关像素输入功能的视频输入块。在至少一个 实施例中,一个或更多个SoC 1804可以进一步包括输入/输出控制器,该 输入/输出控制器可以由软件控制并且可以被用于接收未提交给特定角色 的I/O信号。
在至少一个实施例中,一个或更多个SoC 1804可以进一步包括广泛 的外围接口,以使得能够与外围设备、音频编码器/解码器(“编解码器”), 电源管理和/或其他设备通信。一个或更多个SoC 1804可用于处理来自(例 如,通过千兆位多媒体串行链路和以太网连接的)相机、传感器(例如, 一个或更多个LIDAR传感器1864,一个或更多个RADAR传感器1860等, 其可以通过以太网连接)的数据,来自总线1802的数据(例如,车辆1800 的速度、方向盘位置等),来自一个或更多个GNSS传感器1858的数据(例 如,通过以太网或CAN总线连接)等。在至少一个实施例中,一个或更 多个SoC 1804可以进一步包括专用高性能海量存储控制器,其可以包括它 们自己的DMA引擎,并且可以用于使一个或更多个CPU 1806摆脱常规数 据管理任务。
在至少一个实施例中,一个或更多个SoC 1804可以是具有灵活架构 的端到端平台,其跨越自动化级别3-5级,从而提供利用并有效使用计算 机视觉和ADAS技术来实现多样性和冗余的综合的功能安全架构,其提供 了可提供灵活、可靠的驾驶软件堆栈以及深度学习工具的平台。在至少一 个实施例中,一个或更多个SoC 1804可以比常规系统更快、更可靠,并且 甚至在能量效率和空间效率上也更高。例如,在至少一个实施例中,一个 或更多个加速器1814当与一个或更多个CPU 1806、一个或更多个GPU 1808以及一个或更多个数据存储器1816结合时,可以提供用于3-5级自 主车辆的快速、有效的平台。
在至少一个实施例中,计算机视觉算法可以在CPU上执行,CPU可 以使用高级编程语言(例如C编程语言)配置为在多种视觉数据上执行多 种处理算法。然而,在至少一个实施例中,CPU通常不能满足许多计算机 视觉应用的性能要求,例如与执行时间和功耗有关的性能要求。在至少一 个实施例中,许多CPU不能实时执行复杂的对象检测算法,该算法被用于 车载ADAS应用和实际3-5级自主车辆中。
本文所述的实施例允许同时和/或顺序地执行多个神经网络,并且允 许将结果结合在一起以实现3-5级自动驾驶功能。例如,在至少一个实施 例中,在DLA或离散GPU(例如,一个或更多个GPU 1820)上执行的 CNN可包括文本和单词识别,从而允许超级计算机读取和理解交通标志, 包括神经网络尚未被专门训练的标志。在至少一个实施例中,DLA还可包括神经网络,该神经网络能够识别、解释并提供符号的语义理解,并将该 语义理解传递给在CPU Complex上运行的路径规划模块。
在至少一个实施例中,对于3、4或5级的驱动,可以同时运行多个 神经网络。例如,在至少一个实施例中,由“警告:闪烁的灯指示结冰状 况(Caution:flashing lightsindicate icy conditions)”连通电灯一起组成的警 告标志可以由多个神经网络独立地或共同地解释。在至少一个实施例中, 可以通过第一部署的神经网络(例如,已经训练的神经网络)将标志本身 识别为交通标志,并且可以通过第二部署的神经网络来解释文本“闪烁的 灯指示结冰状况(flashing lights indicate icy conditions)”,其通知车辆的路径规划软件(最好在CPU Complex上执行):当检测到闪烁的灯光时,就 会存在结冰状况。在至少一个实施例中,可以通过在多个帧上操作第三部 署的神经网络来识别闪烁的灯,向车辆的路径规划软件通知存在(或不存 在)闪烁的灯。在至少一个实施例中,所有三个神经网络可以同时运行, 例如在DLA内和/或在一个或更多个GPU 1808上。
在至少一个实施例中,用于面部识别和车辆所有者识别的CNN可以 使用来自相机传感器的数据来识别授权驾驶员和/或车辆1800的所有者的 存在。在至少一个实施例中,当所有者接近驾驶员门并打开灯时,常开传 感器处理器引擎可用于解锁车辆,并且,在安全模式下,当所有者离开车 辆时,可用于禁用车辆。以此方式,一个或更多个SoC 1804提供防止盗窃 和/或劫车的保障。
在至少一个实施例中,用于紧急车辆检测和识别的CNN可以使用来 自麦克风1896的数据来检测和识别紧急车辆警报器。在至少一个实施例中, 一个或更多个SoC 1804使用CNN来对环境和城市声音进行分类,以及对 视觉数据进行分类。在至少一个实施例中,训练在DLA上运行的CNN以 识别紧急车辆的相对接近速度(例如,通过使用多普勒效应)。在至少一个 实施例中,还可以训练CNN来识别针对车辆正在运行的区域的紧急车辆, 如一个或更多个GNSS传感器1858所标识。在至少一个实施例中,当在欧 洲运行时,CNN将寻求检测欧洲警报器,而在美国时,CNN将寻求仅识 别北美警报器。在至少一个实施例中,一旦检测到紧急车辆,就可以在一 个或更多个超声波传感器1862的辅助下使用控制程序来执行紧急车辆安 全例程、减速车辆、将车辆驶至路边、停车、和/或使车辆闲置,直到一个 或更多个紧急车辆通过。
在至少一个实施例中,车辆1800可以包括一个或更多个CPU 1818 (例如,一个或更多个离散CPU或一个或更多个dCPU),其可以经由高 速互连(例如PCIe)耦合到一个或更多个SoC 1804。在至少一个实施例中, 一个或更多个CPU 1818可以包括X86处理器,例如一个或更多个CPU 1818可用于执行各种功能中的任何功能,例如包括在ADAS传感器和一个或更多个SoC 1804之间潜在的仲裁不一致的结果,和/或监控控制器1836 的状态和健康和/或片上信息系统(“信息SoC”)1830。
在至少一个实施例中,车辆1800可以包括一个或更多个GPU 1820 (例如,一个或更多个离散GPU或一个或更多个dGPU),其可以经由高 速互连(例如NVIDIA的NVLINK)耦合到一个或更多个SoC 1804。在至 少一个实施例中,一个或更多个GPU 1820可以提供附加的人工智能功能, 例如通过执行冗余和/或不同的神经网络,并且可以至少部分地基于来自车 辆1800的传感器的输入(例如,传感器数据)来用于训练和/或更新神经 网络。
在至少一个实施例中,车辆1800可以进一步包括网络接口1824,其 可以包括但不限于一个或更多个无线天线1826(例如,用于不同通信协议 的一个或更多个无线天线1826,诸如蜂窝天线、蓝牙天线等)。在至少一 个实施例中,网络接口1824可以用于使通过互联网与云(例如,服务器和 /或其他网络设备)、其他车辆和/或计算设备(例如乘客的客户端设备)无 线连接。在至少一个实施例中,为了与其他车辆通信,可以在车辆1800 和其他车辆之间建立直接链路和/或可以建立间接链路(例如,通过网络和 互联网)。在至少一个实施例中,可以使用车辆到车辆的通信链路来提供直 接链路。车辆到车辆的通信链路可以向车辆1800提供关于车辆1800附近 的车辆的信息(例如,车辆1800前面、侧面和/或后面的车辆)。在至少一 个实施例中,前述功能可以是车辆1800的协作自适应巡航控制功能的一部 分。
在至少一个实施例中,网络接口1824可以包括SoC,其提供调制和 解调功能并使一个或更多个控制器1836能够通过无线网络进行通信。在至 少一个实施例中,网络接口1824可以包括射频前端,用于从基带到射频的 上转换以及从射频到基带的下转换。在至少一个实施例中,可以以任何技 术上可行的方式执行频率转换。例如,可以通过公知的过程和/或使用超外 差过程来执行频率转换。在至少一个实施例中,射频前端功能可以由单独的芯片提供。在至少一个实施例中,网络接口可以包括用于通过LTE、 WCDMA、UMTS、GSM、CDMA2000、蓝牙、蓝牙LE、Wi-Fi、Z-Wave、 ZigBee、LoRaWAN和/或其他无线协议进行通信的无线功能。
在至少一个实施例中,车辆1800可以进一步包括一个或更多个数据 存储器1828,其可以包括但不限于片外(例如,一个或更多个片外SoC 1804) 存储器。在至少一个实施例中,一个或更多个数据存储器1828可以包括但 不限于一个或更多个存储元件,包括RAM、SRAM、动态随机存取存储器 (“DRAM”)、视频随机存取存储器(“VRAM”)、闪存、硬盘和/或其他组 件和/或可以存储至少一位数据的设备。
在至少一个实施例中,车辆1800可以进一步包括一个或更多个GNSS 传感器1858(例如,GPS和/或辅助GPS传感器),以辅助地图绘制、感知、 占用光栅生成和/或路径规划功能。在至少一个实施例中,可以使用任何数 量的一个或更多个GNSS传感器1858,包括例如但不限于使用具有以太网 的USB连接器连接到串行接口(例如RS-232)桥的GPS。
在至少一个实施例中,车辆1800可以进一步包括一个或更多个 RADAR传感器1860。一个或更多个RADAR传感器1860可以由车辆1800 用于远程车辆检测,即使在黑暗和/或恶劣天气条件下。在至少一个实施例 中,RADAR功能安全等级可以是ASIL B。一个或更多个RADAR传感器 1860可以使用CAN和/或总线1802(例如,以传输由一个或更多个RADAR 传感器1860生成的数据)来进行控制和访问对象追踪数据,在某些示例中 可以访问以太网以访问原始数据。在至少一个实施例中,可以使用各种各 样的RADAR传感器类型。例如但不限于,一个或更多个RADAR传感器 1860可适合于前、后和侧面RADAR使用。在至少一个实施例中,一个或 更多个RADAR传感器1860是脉冲多普勒RADAR传感器。
在至少一个实施例中,一个或更多个RADAR传感器1860可以包括 不同的配置,例如具有窄视野的远程、具有宽事业的近程、近程侧面覆盖 等。在至少一个实施例中,远程RADAR可以用于自适应巡航控制功能。 在至少一个实施例中,远程RADAR系统可以提供通过两次或更多次独立 扫描(例如在250m范围内)实现的宽广的视野。在至少一个实施例中,一个或更多个RADAR传感器1860可以帮助在静态对象和运动对象之间区 分,并且可以被ADAS系统1838用于紧急制动辅助和向前碰撞警告。包 括在远程RADAR系统中的一个或更多个传感器1860可以包括但不限于具 有多个(例如六个或更多个)固定RADAR天线以及高速CAN和FlexRay 接口的单基地多模式RADAR。在至少一个实施例中,具有六个天线、中 央四个天线可以创建聚焦的波束图,该波束图设计为以较高的速度记录车 辆1800的周围环境,而相邻车道的交通干扰最小。在至少一个实施例中, 其他两个天线可以扩大视野,从而可以快速检测进入或离开车辆1800的车 道的车辆。
在至少一个实施例中,作为示例,中程RADAR系统可包括高达160m (前)或80m(后)的范围,以及高达42度(前)或150度(后)的视野。 在至少一个实施例中,短程RADAR系统可以包括但不限于设计成安装在 后保险杠的两端的任意数量的RADAR传感器1860。当安装在后保险杠的 两端时,在至少一个实施例中,RADAR传感器系统可以产生两个光束, 该两个光束不断地监测车辆后部和附近的盲点。在至少一个实施例中,短 程RADAR系统可以在ADAS系统1838中用于盲点检测和/或车道改变辅 助。
在至少一个实施例中,车辆1800可以进一步包括一个或更多个超声 传感器1862。可以定位在车辆1800的前、后和/或侧面的超声传感器1862 可以用于停车辅助和/或创建和更新占用光栅。在至少一个实施例中,可以 使用各种各样的一个或更多个超声传感器1862,并且可以将一个或更多个 不同的超声传感器1862用于不同的检测范围(例如2.5m、4m)。在至少一 个实施例中,一个或更多个超声传感器1862可以在ASIL B的功能安全等 级下操作。
在至少一个实施例中,车辆1800可以包括一个或更多个LIDAR传感 器1864。LIDAR传感器1864可以用于对象和行人检测、紧急制动、避免 碰撞和/或其他功能。在至少一个实施例中,LIDAR传感器1864可以是 功能安全等级ASIL B。在至少一个实施例中,车辆1800可以包括可以使 用以太(网的多个(例如,两个、四个、六个等)LIDAR传感器1864(例 如,将数据提供给千兆以太网交换机)。
在至少一个实施例中,一个或更多个LIDAR传感器1864可能能够 提供针对360度视野的对象及其距离的列表。在至少一个实施例中,市售 的一个或更多个LIDAR传感器1864例如可以具有大约100m的广告范围, 具有2cm-3cm的精度,并且支持100Mbps的以太网连接。在至少一个实施 例中,可以使用一个或更多个非突出的LIDAR传感器1864。在这样的实 施例中,可以将一个或更多个LIDAR传感器1864实现为可以嵌入到车辆 1800的前、后、侧面和/或拐角中的小型设备。在至少一个实施例中,一个 或更多个LIDAR传感器1864,在这样的实施例中,即使对于低反射率的 对象,也可以提供高达120度的水平视野和35度的垂直视野,并且具有 200m的范围。在至少一个实施例中,可将一个或更多个前向LIDAR传感器1864配置为用于45度至135度之间的水平视野。
在至少一个实施例中,也可以使用LIDAR技术(诸如3D闪光LIDAR)。 3D闪光LIDAR使用激光闪光作为传输源,以照亮车辆1800周围大约200m。 在至少一个实施例中,闪光LIDAR单元包括但不限于接收器,该接收器记 录激光脉冲传播时间和每个像素上的反射光,该像素又对应于从车辆1800 到对象的范围。在至少一个实施例中,闪光LIDAR可以允许利用每个激光 闪光来生成周围环境的高度准确且无失真的图像。在至少一个实施例中,可以部署四个闪光LIDAR传感器,在车辆1800的每一侧部署一个传感器。 在至少一个实施例中,3D闪光LIDAR系统包括但不限于除了风扇(例如 非扫描LIDAR设备)以外没有移动部件的固态3D视线阵列LIDAR相机。 在至少一个实施例中,闪光LIDAR设备可以每帧使用5纳秒的I类(人眼 安全)激光脉冲,并且可以捕获3D测距点云和共同登记的强度数据形式 的反射激光。
在至少一个实施例中,车辆还可包括一个或更多个IMU传感器1866。 在至少一个实施例中,一个或更多个IMU传感器1866可位于车辆1800 的后轴中心,在至少一个实施例中。在至少一个实施例中,一个或更多个 IMU传感器1866可以包括,例如但不限于,一个或更多个加速度计、一 个或更多个磁力计、一个或更多个陀螺仪、一个或更多个磁罗经和/或其他 传感器类型。在至少一个实施例中,例如在六轴应用中,一个或更多个IMU 传感器1866可以包括但不限于加速度计和陀螺仪。在至少一个实施例中, 例如在九轴应用中,一个或更多个IMU传感器1866可以包括但不限于加 速度计、陀螺仪和磁力计。
在至少一个实施例中,一个或更多个IMU传感器1866可以实现为结 合了微机电系统(“MEMS”)惯性传感器、高灵敏度GPS接收器和先进 的卡尔曼滤波算法的微型高性能GPS辅助惯性导航系统(“GPS/INS”),以 提供位置、速度和姿态的估算;在至少一个实施例中,一个或更多个IMU 传感器1866可使车辆1800估算航向而无需来自磁传感器通过直接观察和 关联从GPS到一个或更多个IMU传感器1866的速度变化来实现的输入。 在至少一个实施例中,一个或更多个IMU传感器1866和一个或更多个 GNSS传感器1858可以组合在单个集成单元中。
在至少一个实施例中,车辆1800可以包括放置在车辆1800内和/或 周围的一个或更多个麦克风1896。在至少一个实施例中,此外,一个或更 多个麦克风1896可以用于紧急车辆检测和识别。
在至少一个实施例中,车辆1800可以进一步包括任何数量的相机类 型,包括一个或更多个立体相机1868、一个或更多个广角相机1870、一个 或更多个红外相机1872、一个或更多个环绕相机1874、一个或更多个远程 相机1898、一个或更多个中程相机1876和/或其他相机类型。在至少一个 实施例中,相机可用于捕获车辆1800的整个外围周围的图像数据。在至少 一个实施例中,所使用的相机的类型取决于车辆1800。在至少一个实施例 中,相机类型的任何组合可以是用于在车辆1800周围提供必要覆盖范围。 在至少一个实施例中,相机的数量可以根据实施例而不同。例如,在至少 一个实施例中,车辆1800可以包括六个相机、七个相机、十个相机、十二 个相机或其他数量的相机。相机可以作为示例但不限于支持千兆位多媒体 串行链路(“GMSL”)和/或千兆位以太网。在至少一个实施例中,本文先前参照图18A和图18B更详细地描述了每个相机。
在至少一个实施例中,车辆1800可以进一步包括一个或更多个振动 传感器1842。在至少一个实施例中,一个或更多个振动传感器1842可以 测量车辆1800的部件(例如,一个或更多个轴)的振动。例如,在至少一 个实施例中,振动的变化可以指示路面的变化。在至少一个实施例中,当 使用两个或更多个振动传感器1842时,振动之间的差异可以用于确定路面 的摩擦或打滑(例如,当在动力驱动轴和自由旋转轴之间存在振动差异时)。
在至少一个实施例中,车辆1800可以包括ADAS系统1838。在一些 示例中,ADAS系统1838可以包括但不限于SoC。在至少一个实施例中, ADAS系统1838可以包括但不限于任何数量的自主/自适应/自动巡航控制(“ACC”)系统、协作自适应巡航控制(“CACC”)系统、前撞警告(“FCW”) 系统、自动紧急制动(“AEB”)系统、车道偏离警告(“LDW”)系统、车 道保持辅助(“LKA”)系统、盲区警告(“BSW”)系统、后方交叉交通警 告(“RCTW”)系统、碰撞警告(“CW”)系统、车道对中(“LC”)系统 和/或其他系统、特征和/或功能及其组合。
在至少一个实施例中,ACC系统可以使用一个或更多个RADAR传 感器1860、一个或更多个LIDAR传感器1864和/或任何数量的相机。在 至少一个实施例中,ACC系统可以包括纵向ACC系统和/或横向ACC系 统。在至少一个实施例中,纵向ACC系统监控并控制到紧邻车辆1800的 车辆的距离,并自动调节车辆1800的速度以保持与前方车辆的安全距离。 在至少一个实施例中,横向ACC系统执行距离保持,并在需要时建议车辆 1800改变车道。在至少一个实施例中,横向ACC与其他ADAS应用有关, 例如LC和CW。
在至少一个实施例中,CACC系统使用来自其他车辆的信息,该信息 可以经由网络接口1824和/或一个或更多个无线天线1826从其他车辆接收 经由无线链路或者间接经由网络连接(例如,经由互联网)接收。在至少 一个实施例中,直接链路可以由车辆到车辆(“V2V”)的通信链路提供, 而间接链路可以由基础设施到车辆(“I2V”)的通信链路提供。通常,V2V 通信概念提供关于紧接在前的车辆(例如,紧接在车辆1800之前并与之在 同一车道上的车辆)的信息,而I2V通信概念提供关于更前方交通的信息。 在至少一个实施例中,CACC系统可以包括I2V和V2V信息源之一或两者。 在至少一个实施例中,在给定车辆1800之前的车辆的信息的情况下,CACC 系统可以更可靠,并且具有改善交通流的平滑度并减少道路拥堵的潜力。
在至少一个实施例中,FCW系统被设计成警告驾驶员危险,以便驾 驶员可以采取纠正措施。在至少一个实施例中,FCW系统使用前向相机和 /或一个或更多个RADAR传感器1860,其耦合至专用处理器、DSP、FPGA 和/或ASIC,其电耦合至驾驶员反馈,例如显示器、扬声器和/或振动组件。 在至少一个实施例中,FCW系统可以提供警告,例如以声音、视觉警告, 振动和/或快速制动脉冲的形式。
在至少一个实施例中,AEB系统检测到与另一车辆或其他对象的即 将发生的向前碰撞,并且如果驾驶员在指定的时间或距离参数内未采取纠 正措施,则可以自动施加制动。在至少一个实施例中,AEB系统可以使用 耦合到专用处理器、DSP、FPGA和/或ASIC的一个或更多个前向相机和/ 或一个或更多个RADAR传感器1860。在至少一个实施例中,当AEB系 统检测到危险时,AEB系统通常首先警告驾驶员采取纠正措施以避免碰撞, 并且,如果驾驶员没有采取纠正措施,则AEB系统可以自动施加制动器以 试图防止或至少减轻预测碰撞的影响。在至少一个实施例中,AEB系统可 以包括诸如动态制动器支持和/或即将发生碰撞的制动的技术。
在至少一个实施例中,当车辆1800越过车道标记时,LDW系统提供 视觉、听觉和/或触觉警告,例如方向盘或座椅振动,以警告驾驶员。在至 少一个实施例中,当驾驶员通过激活转向信号灯指示有意的车道偏离时, LDW系统不活跃。在至少一个实施例中,LDW系统可以使用耦合到专用 处理器、DSP、FPGA和/或ASIC的面向正面的相机,其电耦合至诸如显示器、扬声器和/或振动组件。在至少一个实施例中,LKA系统是LDW系 统的一种变型。如果车辆1800开始离开车道,则LKA系统提供转向输入 或制动以校正车辆1800。
在至少一个实施例中,BSW系统检测并警告汽车盲区中的车辆驾驶 员。在至少一个实施例中,BSW系统可以提供视觉、听觉和/或触觉警报, 以指示合并或改变车道是不安全的。在至少一个实施例中,当驾驶员使用 转向灯时,BSW系统可以提供附加警告。在至少一个实施例中,BSW系 统可以使用耦合到专用处理器、DSP、FPGA和/或ASIC的朝后侧的相机和/或一个或更多个RADAR传感器1860,其电耦合到驾驶员反馈,例如显 示器、扬声器和/或振动组件。
在至少一个实施例中,当在车辆1800倒车时在后相机范围之外检测 到对象时,RCTW系统可以提供视觉、听觉和/或触觉通知。在至少一个实 施例中,RCTW系统包括AEB系统,以确保应用车辆制动器以避免碰撞。 在至少一个实施例中,RCTW系统可以使用一个或更多个面向后方的 RADAR传感器1860,其耦合到专用处理器、DSP、FPGA和/或ASIC,其 电耦合到驾驶员反馈,诸如显示器、扬声器和/或振动组件。
在至少一个实施例中,常规的ADAS系统可能易于产生误报结果, 这可能使驾驶员烦恼和分散注意力,但通常不是灾难性的,因为常规的 ADAS系统会警告驾驶员并允许驾驶员决定安全状况是否真正存在并采取 相应行动。在至少一个实施例中,在结果冲突的情况下,车辆1800本身决 定是否听从主计算机或副计算机(例如,第一控制器1836或第二控制器 1836)的结果。例如,在至少一个实施例中,ADAS系统1838可以是用于 将感知信息提供给备份计算机合理性模块的备用和/或辅助计算机。在至少 一个实施例中,备用计算机合理性监控器可以在硬件组件上运行冗余的各 种软件,以检测感知和动态驾驶任务中的故障。在至少一个实施例中,可 以将来自ADAS系统1838的输出提供给监控MCU。在至少一个实施例中, 如果来自主计算机和辅助计算机的输出冲突,则监督MCU决定如何协调 冲突以确保安全操作。
在至少一个实施例中,主计算机可以配置为向监督MCU提供置信度 分数,以指示主计算机对所选结果的置信度。在至少一个实施例中,如果 置信度得分超过阈值,则监督MCU可以遵循主计算机的指示,而不管辅 助计算机是否提供冲突或不一致的结果。在至少一个实施例中,在置信度 得分不满足阈值的情况下,并且在主计算机和辅助计算机指示不同的结果 (例如,冲突)的情况下,监督MCU可以在计算机之间仲裁以确定适当 的结果。
在至少一个实施例中,监督MCU可以配置为运行神经网络,该神经 网络被训练和配置为至少部分地基于来自主计算机和辅助计算机的输出来 确定辅助计算机提供错误警报的条件。在至少一个实施例中,监督MCU 中的一个或更多个神经网络可以学习何时可以信任辅助计算机的输出,以 及何时不能信任。例如,在至少一个实施例中,当辅助计算机是基于 RADAR的FCW系统时,监督MCU中的一个或更多个神经网络可以学习 FCW系统何时识别实际上不是危险的金属对象,例如会触发警报的排水格 栅或井盖。在至少一个实施例中,当辅助计算机是基于相机的LDW系统 时,当存在骑自行车的人或行人并且实际上车道偏离是最安全的操作时, 监督MCU中的神经网络可以学会覆盖LDW。在至少一个实施例中,监督MCU可以包括适合于运行具有相关联的存储器的一个或更多个神经网络 的DLA或GPU中的至少一个。在至少一个实施例中,监督MCU可以包 括和/或被包括为一个或更多个SoC 1804的组件。
在至少一个实施例中,ADAS系统1838可以包括使用传统的计算机 视觉规则执行ADAS功能的辅助计算机。在至少一个实施例中,辅助计算 机可以使用经典计算机视觉规则(如果-则),并且监督MCU中的一个或 更多个神经网络的存在可以提高可靠性、安全性和性能。例如,在至少一 个实施例中,多样化的实现方式和有意的非同一性使得整个系统更加容错, 尤其是对于由软件(或软件-硬件接口)功能引起的故障。例如,在至少一 个实施例中,如果在主计算机上运行的软件中存在软件漏洞或错误,并且 在辅助计算机上运行的不相同的软件代码提供了相同的总体结果,则监督 MCU可以更有把握地认为总体结果是正确,并且主计算机上的软件或硬件 中的漏洞不会导致重大错误。
在至少一个实施例中,可以将ADAS系统1838的输出输入到主计算 机的感知模块和/或主计算机的动态驾驶任务模块中。例如,在至少一个实 施例中,如果ADAS系统1838由于正前方的对象而指示向前碰撞警告, 则感知块可以在识别对象时使用该信息。在至少一个实施例中,如本文所 述,辅助计算机可以具有其自己的神经网络,该神经网络经过训练从而降 低了误报的风险。
在至少一个实施例中,车辆1800可以进一步包括信息娱乐SoC 1830 (例如,车载信息娱乐系统(IVI))。尽管被示出和描述为SoC,但是在至 少一个实施例中,信息娱乐系统1830可以不是SoC,并且可以包括但不限 于两个或更多个分立组件。在至少一个实施例中,信息娱乐SoC 1830可以 包括但不限于硬件和软件的组合,其可以用于提供音频(例如,音乐、个 人数字助理、导航指令、新闻、广播等)、视频(例如,电视、电影、流媒 体等)、电话(例如,免提通话)、网络连接(例如,LTE、WiFi等)和/ 或信息服务(例如,导航系统、后停车辅助、无线电数据系统、与车辆相 关的信息,例如燃油水平、总覆盖距离、制动燃油水平、油位、车门打开/ 关闭、空气滤清器信息等)到车辆1800。例如,信息娱乐SoC 1830可以 包括收音机、磁盘播放器、导航系统、视频播放器、USB和蓝牙连接、汽 车、车载娱乐系统、WiFi、方向盘音频控制、免提语音控制、抬头显示器(“HUD”)、HMI显示器1834、远程信息处理设备、控制面板(例如, 用于控制各种组件、特征和/或系统和/或与之交互)和/或其他组件。在至少一个实施例中,信息娱乐SoC 1830可以进一步用于向车辆的用户提供信 息(例如,视觉和/或听觉的),诸如来自ADAS系统1838的信息、自动驾 驶信息(诸如计划的车辆操纵)、轨迹、周围环境信息(例如,交叉路口信 息、车辆信息、道路信息等)和/或其他信息。
在至少一个实施例中,信息娱乐SoC 1830可以包括任何数量和类型 的GPU功能。在至少一个实施例中,信息娱乐SoC 1830可以通过总线1802 (例如,CAN总线、以太网等)与车辆1800的其他设备、系统和/或组件 通信。在至少一个实施例中,信息娱乐SoC 1830可以是耦合到监控MCU, 使得信息娱乐系统的GPU可以在主控制器1836(例如,车辆1800的主计算机和/或备用计算机)发生故障的情况下执行一些自动驾驶功能。在至少 一个实施例中,信息娱乐SoC 1830可以使车辆1800进入司机到安全停止 模式,如本文所述。
在至少一个实施例中,车辆1800可以进一步包括仪表板1832(例如, 数字仪表板、电子仪表板、数字仪表操纵板等)。在至少一个实施例中,仪 表板1832可以包括但不限于控制器和/或超级计算机(例如,离散控制器 或超级计算机)。在至少一个实施例中,仪表板1832可以包括但不限于一 组仪表的任何数量和组合,例如车速表、燃料水平、油压、转速表、里程 表、转弯指示器、一个或更多个换档位置指示器、一个或更多个安全带警 告灯、一个或更多个驻车制动警告灯、一个或更多个发动机故障灯、辅助 约束系统(例如安全气囊)信息、照明控件、安全系统控件、导航信息等。 在某些示例中,信息可能是在信息娱乐SoC1830和仪表板1832之间显示 和/或共享。在至少一个实施例中,仪表板1832可以被包括作为信息娱乐 SoC 1830的一部分,反之亦然。
推理和/或训练逻辑1515用于执行与一个或更多个实施例相关联的推 理和/或训练操作。本文结合图15A和/或图15B提供关于推理和/或训练逻 辑1515的细节。在至少一个实施例中,推理和/或训练逻辑1515可以在系 统图18C中使用,以至少部分地基于使用神经网络训练操作、神经网络功 能和/或架构或本文所述的神经网络用例计算出的权重参数来推理或预测 操作。
图18D是根据至少一个实施例的在一个或更多个基于云的服务器与 图18A的自主车辆1800之间进行通信的系统1876的图。在至少一个实施 例中,系统1876可以包括但不限于一个或更多个服务器1878、一个或更 多个网络1890以及任何数量和类型的车辆,包括车辆1800。在至少一个 实施例中,一个或更多个服务器1878可以包括但不限于,多个GPU1884 (A)-1884(H)(在本文中统称为GPU 1884)、PCIe交换机1882(A)-1882 (H)(在本文中统称为PCIe开关1882),和/或CPU 1880(A)-1880(B) (在本文中统称为CPU 1880)、GPU1884、CPU 1880和PCIe开关1882 可以与高速连接线互连,例如但不限于,由NVIDIA开发的NVLink接口 1888和/或PCIe连接1886。在至少一个实施例中,GPU 1884通过NVLink 和/或NVSwitchSoC连接,GPU 1884和PCIe开关1882通过PCIe互连连 接。在至少一个实施例中,尽管示出了八个GPU 1884、两个CPU 1880和 四个PCIe开关1882,但这并不旨在进行限制。在至少一个实施例中,服 务器1878中的每一个可以包括但不限于任意数量的GPU 1884、CPU1880 和/或PCIe开关1882的任何组合。例如,在至少一个实施例中,一个或更 多个服务器1878可各自包括八个、十六个、三十二个和/或更多个GPU 1884。
在至少一个实施例中,一个或更多个服务器1878可以通过一个或更 多个网络1890并从车辆接收表示图像的图像数据,该图像示出了意外的或 改变的道路状况,例如最近开始的道路工程。在至少一个实施例中,一个 或更多个服务器1878可以通过一个或更多个网络1890并且向车辆传输神 经网络1892、更新的神经网络1892和/或地图信息1894,包括但不限于关 于交通和道路状况的信息。在至少一个实施例中,对地图信息1894的更新可以包括但不限于对HD地图1822的更新,例如关于建筑工地、坑洼、便 道、洪水和/或其他障碍物的信息。在至少一个实施例中,神经网络1892、 更新的神经网络1892和/或地图信息1894可能是由从环境中的任何数量的 车辆接收的数据中表示的新训练和/或经验产生的,和/或至少基于在数据中 心执行的训练(例如,使用一个或更多个服务器1878和/或其他服务器)。
在至少一个实施例中,一个或更多个服务器1878可以用于至少部分 地基于训练数据来训练机器学习模型(例如,神经网络)。在至少一个实施 例中,训练数据可以由车辆产生,和/或可以在模拟中产生(例如,使用游 戏引擎)。在至少一个实施例中,标记任何数量的训练数据(例如,在相关 联的神经网络受益于监督学习的情况下)和/或对其进行其他预处理。在至 少一个实施例中,没有对任何数量的训练数据进行标记和/或预处理(例如,在相关联的神经网络不需要监督学习的情况下)。在至少一个实施例中,一 旦机器学习模型被训练,机器学习模型就可以被车辆使用(例如,通过一 个或更多个网络1890传输到车辆,和/或机器学习模型可以被一个或更多 个服务器1878使用以远程监控车辆。
在至少一个实施例中,一个或更多个服务器1878可以从车辆接收数 据并且将数据应用于最新的实时神经网络以用于实时智能推理。在至少一 个实施例中,一个或更多个服务器1878可以包括由一个或更多个GPU 1884供电的深度学习超级计算机和/或专用AI计算机,例如由NVIDIA开 发的DGX和DGX Station机器。然而,在至少一个实施例中,一个或更多 个服务器1878可以包括使用CPU供电的数据中心的深度学习基础设施。
在至少一个实施例中,一个或更多个服务器1878的深度学习基础结 构可能能够进行快速、实时的推理,并且可以使用该能力来评估和验证车 辆1800中处理器、软件和/或相关硬件的健康。例如,在至少一个实施例 中,深度学习基础设施可以从车辆1800接收周期性更新,例如车辆1800 在该图像序列中所定位的图像序列和/或对象(例如,通过计算机视觉和/ 或其他机器学习对象分类技术)。在至少一个实施例中,深度学习基础设施 可以运行其自己的神经网络以识别对象并将它们与车辆1800所识别的对 象进行比较,并且,如果结果不匹配和深度学习基础设施断定车辆1800 中的AI正在发生故障,则一个或更多个服务器1878可以将信号发送到车 辆1800,以指示车辆1800的故障安全计算机采取控制、通知乘客并完成 安全停车操作。
在至少一个实施例中,一个或更多个服务器1878可以包括一个或更 多个GPU1884和一个或更多个可编程推理加速器(例如NVIDIA的 TensorRT 3)。在至少一个实施例中,GPU驱动的服务器和推理加速的组合 可以使实时响应成为可能。在至少一个实施例中,例如在性能不太关键的 情况下,可以将由CPU、FPGA和其他处理器驱动的服务器用于推理。在 至少一个实施例中,一个或更多个硬件结构1515用于执行一个或更多个实 施例。本文结合图15A和/或图15B提供关于硬件结构(x)1515的细节。
计算机系统
图19是示出根据至少一个实施例示例性计算机系统的框图,该示例 性计算机系统可以是具有互连的设备和组件的系统,片上系统(SOC)或 它们的某种形成有处理器的组合1900,该处理器可以包括执行单元以执行 指令。在至少一个实施例中,根据本公开,例如本文所述的实施例,计算 机系统1900可以包括但不限于组件,例如处理器1902,其执行单元包括 逻辑以执行用于过程数据的算法。在至少一个实施例中,计算机系统1900 可以包括处理器,例如可从加利福尼亚圣塔克拉拉的英特尔公司(Intel Corporation of SantaClara,California)获得的
Figure BDA0002684851560000651
处理器家族、 XeonTM
Figure BDA0002684851560000652
XScaleTM和/或StrongARMTM
Figure BDA0002684851560000653
CoreTM
Figure BDA0002684851560000654
Figure BDA0002684851560000655
NervanaTM微处理器,尽管也可以使用其他系统(包括具有其他微处理器 的PC、工程工作站、机顶盒等)。在至少一个实施例中,计算机系统1900可以执行可从华盛顿州雷蒙德市的微软公司(Microsoft Corporation of Redmond,Wash.)获得的WINDOWS操作系统版本,尽管其他操作系统(例 如UNIX和Linux)、嵌入式软件和/或图形用户界面也可以使用。
实施例可以用在其他设备中,例如手持设备和嵌入式应用。手持设备 的一些示例包括蜂窝电话、互联网协议(Internet Protocol)设备、数码相 机、个人数字助理(“PDA”)和手持PC。在至少一个实施例中,嵌入式应 用可以包括微控制器、数字信号处理器(“DSP”)、片上系统、网络计算 机(“NetPC”)、机顶盒、网络集线器、广域网(“WAN”)交换机,或根 据至少一个实施例可以执行一个或更多个指令的任何其他系统。
在至少一个实施例中,计算机系统1900可包括但不限于处理器1902, 该处理器1902可包括但不限于一个或更多个执行单元1908,以根据本文 描述的技术执行机器学习模型训练和/或推理。在至少一个实施例中,系统 1900是单处理器台式机或服务器系统,但是在另一实施例中,系统1200 可以是多处理器系统。在至少一个实施例中,处理器1902可以包括但不限 于复杂指令集计算机(“CISC”)微处理器、精简指令集计算(“RISC”)微 处理器、超长指令字(“VLIW”)微处理器、实现指令集组合的处理器,或 任何其他处理器设备,例如数字信号处理器。在至少一个实施例中,处理 器1902可以耦合到处理器总线1910,该处理器总线1910可以在处理器 1902与计算机系统1900中的其他组件之间传输数据信号。
在至少一个实施例中,处理器1902可以包括但不限于1级(“L1”) 内部高速缓存存储器(“cache”)1904。在至少一个实施例中,处理器1902 可以具有单个内部高速缓存或多级内部缓存。在至少一个实施例中,高速 缓存存储器可以驻留在处理器1902的外部。根据特定的实现和需求,其他 实施例也可以包括内部和外部高速缓存的组合。在至少一个实施例中,寄 存器文件1906可以在各种寄存器中存储不同类型的数据,包括但不限于整 数寄存器、浮点寄存器、状态寄存器和指令指针寄存器。
在至少一个实施例中,包括但不限于执行整数和浮点运算的逻辑的执 行单元1908,其也位于处理器1902中。在至少一个实施例中,处理器1902 还可以包括微码(“ucode”)只读存储器(“ROM”),用于存储某些宏指令 的微代码。在至少一个实施例中,执行单元1908可以包括用于处理封装指 令集1909的逻辑。在至少一个实施例中,通过将封装指令集1909包括在 通用处理器1902的指令集中,以及要执行指令的相关电路,可以使用通用 处理器1902中的封装数据来执行许多多媒体应用程序使用的操作。在一个 或更多个实施例中,可以通过使用处理器的数据总线的全宽度来在封装的 数据上执行操作来加速和更有效地执行许多多媒体应用程序,这可能不需 要在处理器的数据总线上传输较小的数据单元来一次执行一个数据元素的 一个或更多个操作。
在至少一个实施例中,执行单元1908也可以用在微控制器、嵌入式 处理器、图形设备、DSP和其他类型的逻辑电路中。在至少一个实施例中, 计算机系统1900可以包括但不限于存储器1920。在至少一个实施例中, 存储器1920可以被实现为动态随机存取存储器(“DRAM”)设备、静态随 机存取存储器(“SRAM”)设备、闪存设备或其他存储设备。在至少一个 实施例中,存储器1920可以存储由处理器1902可以执行的由数据信号表 示的一个或更多个指令1919和/或数据1921。
在至少一个实施例中,系统逻辑芯片可以耦合到处理器总线1910和 存储器1920。在至少一个实施例中,系统逻辑芯片可以包括但不限于存储 器控制器集线器(“MCH”)1916,并且处理器1902可以经由处理器总线 1910与MCH 1916通信。在至少一个实施例中,MCH 1916可以提供到存 储器1920的高带宽存储器路径1918以用于指令和数据存储以及用于图形 命令、数据和纹理的存储。在至少一个实施例中,MCH 1916可以在处理 器1902、存储器1920和计算机系统1900中的其他组件之间启动数据信号, 并且在处理器总线1910、存储器1920和系统I/O 1922之间桥接数据信号。
在至少一个实施例中,系统逻辑芯片可以提供用于耦合到图形控制器的图 形端口。在至少一个实施例中,MCH 1916可以通过高带宽存储器路径1918 耦合到存储器1920,并且图形/视频卡1912可以通过加速图形端口 (Accelerated Graphics Port)(“AGP”)互连1914耦合到MCH 1916。
在至少一个实施例中,计算机系统1900可以使用系统I/O 1922作为 专有集线器接口总线来将MCH 1916耦合到I/O控制器集线器(“ICH”)1930。 在至少一个实施例中,ICH1930可以通过本地I/O总线提供与某些I/O设 备的直接连接。在至少一个实施例中,本地I/O总线可以包括但不限于用 于将外围设备连接到存储器1920、芯片组和处理器1902的高速I/O总线。 示例可以包括但不限于音频控制器1929、固件集线器(“快闪BIOS”)1928、 无线收发器1926、数据存储1924、包含用户输入的传统I/O控制器1923 和键盘接口、串行扩展端口1927(例如通用串行总线(USB))和网络控 制器1934。数据存储装置1924可以包括硬盘驱动器、软盘驱动器、CD-ROM 设备、闪存设备或其他大容量存储设备。
在至少一个实施例中,图19示出了包括互连的硬件设备或“芯片”的 系统,而在其他实施例中,图19可以示出示例性片上系统(“SoC”)。在 至少一个实施例中,图19中示出的设备可以与专有互连、标准化互连(例 如,PCIe)或其某种组合互连。在至少一个实施例中,计算机系统1900 的一个或更多个组件使用计算快速链路(CXL)互连来互连。
推理和/或训练逻辑1515用于执行与一个或更多个实施例相关的推理 和/或训练操作。本文结合图15A和/或图15B提供关于推理和/或训练逻辑 1515的细节。在至少一个实施例中,推理和/或训练逻辑1515可以在系统 图19中使用,用于至少部分地基于使用神经网络训练操作、神经网络功能 和/或架构或本文所述的神经网络用例计算的权重参数来推理或预测操作。
图20是示出根据至少一个实施例的用于利用处理器2010的电子设备 2000的框图。在至少一个实施例中,电子设备2000可以是,例如但不限 于,笔记本电脑、塔式服务器、机架服务器、刀片服务器、膝上型计算机、 台式机、平板电脑、移动设备、电话、嵌入式计算机或任何其他合适的电 子设备。
在至少一个实施例中,系统2000可以包括但不限于通信地耦合到任 何合适数量或种类的组件、外围设备、模块或设备的处理器2010。在至少 一个实施例中,处理器2010使用总线或接口耦合,诸如1℃总线、系统管 理总线(“SMBus”)、低引脚数(LPC)总线、串行外围接口(“SPI”)、 高清音频(“HDA”)总线、串行高级技术附件(“SATA”)总线、通用串行 总线(“USB”)(1、2、3版)或通用异步接收器/发送器(“UART”)总线。
在至少一个实施例中,图20示出了系统,该系统包括互连的硬件设备或“芯 片”,而在其他实施例中,图20可以示出示例性片上系统(“SoC”)。在至 少一个实施例中,图20中所示的设备可以与专有互连线、标准化互连(例 如,PCIe)或其某种组合互连。在至少一个实施例中,图20的一个或更多 个组件使用计算快速链路(CXL)互连线来互连。
在至少一个实施例中,图20可以包括显示器2024、触摸屏2025、触 摸板2030、近场通信单元(“NFC”)2045、传感器集线器2040、热传感器 2046、快速芯片组(“EC”)2035、可信平台模块(“TPM”)2038、BIOS/ 固件/闪存(“BIOS,FW Flash”)2022、DSP 2060、驱动器2020(例如固 态磁盘(“SSD”)或硬盘驱动器(“HDD”))、无线局域网单元(“WLAN”) 2050、蓝牙单元2052、无线广域网单元(“WWAN”)2056、全球定位系统 (GPS)2055、相机(“USB 3.0相机”)2054(例如USB 3.0相机)和/或 实现在例如LPDDR3标准低功耗双倍数据速率(“LPDDR”)存储单元 (“LPDDR3”)2015。这些组件可以各自以任何合适的方式实现。
在至少一个实施例中,其他组件可以通过以上讨论的组件通信地耦合 到处理器2010。在至少一个实施例中,加速度计2041、环境光传感器(“ALS”) 2042、罗盘2043和陀螺仪2044可以可通信地耦合到传感器集线器2040。 在至少一个实施例中,热传感器2039、风扇2037、键盘2046和触摸板2030 可以通信地耦合到EC 2035。在至少一个实施例中,扬声器2063、耳机2064 和麦克风(“mic”)2065可以通信地耦合到音频单元(“音频编解码器和D 类放大器”)2064,其又可以通信地耦合到DSP 2060。在至少一个实施例 中,音频单元2064可以包括例如但不限于音频编码器/解码器(“编解码器”) 和D类放大器。在至少一个实施例中,SIM卡(“SIM”)2057可以通信地 耦合到WWAN单元2056。在至少一个实施例中,组件(诸如WLAN单 元2050和蓝牙单元2052以及WWAN单元2056)可以被实现为下一代形 式因素(NGFF)。
推理和/或训练逻辑1515用于执行与一个或更多个实施例相关联的推 理和/或训练操作。本文结合图15A和/或图15B提供关于推理和/或训练逻 辑1515的细节。在至少一个实施例中,推理和/或训练逻辑1515可以在图 20的系统中使用,用于至少部分地基于使用神经网络训练操作、神经网络 功能和/或架构或本文所述的神经网络用例计算的权重参数来推理或预测 操作。
图21示出了根据至少一个实施例的计算机系统2100。在至少一个实 施例中,计算机系统2100被配置为实现贯穿本公开描述的各种过程和方法。
在至少一个实施例中,计算机系统2100包括但不限于至少一个中央 处理单元(“CPU”)2102,该中央处理单元(“CPU”)2102连接到使用任 何合适协议实现的通信总线2110,诸如PCI(“外围组件互连”)、外围组 件快速互连(“PCI-Express”)、AGP(“加速图形端口”)、超传输或任何 其他总线或一个或更多个点对点通信协议。在至少一个实施例中,计算机 系统2100包括但不限于主存储器2104和控制逻辑(例如,实现为硬件、 软件或其组合),并且数据被存储在主存储器2104(其可以采取随机存取 存储器(“RAM”)的形式)中。在至少一个实施例中,网络接口子系统(“网 络接口”)2122提供到其他计算设备和网络的接口,用于从计算机系统2100 之外的其他系统接收数据以及将数据发送到其他系统。
在至少一个实施例中,计算机系统2100在至少一个实施例中包括但 不限于输入设备2108、并行处理系统2112和显示设备2106,显示设备2106 可以使用常规的阴极射线管(“CRT”)、液晶显示器(“LCD”)、发光二 极管(“LED”)、等离子显示器或其他合适的显示技术实现。在至少一个 实施例中,从输入设备2108(诸如键盘、鼠标、触摸板、麦克风等)接收 用户输入。在至少一个实施例中,前述模块中的每一个可以位于单个半导 体平台上以形成处理系统。
推理和/或训练逻辑1515用于执行与一个或更多个实施例相关联的推 理和/或训练操作。本文结合图15A和/或图15B提供关于推理和/或训练逻 辑1515的细节。在至少一个实施例中,推理和/或训练逻辑1515可以在图 21的系统中使用,以至少部分地基于使用神经网络训练操作、神经网络功 能和/或架构或本文所述的神经网络用例计算出的权重参数来进行推理或 预测操作。
图22示出了根据至少一个实施例的计算机系统2200。在至少一个实 施例中,计算机系统2200包括但不限于计算机2210和USB棒2220。在 至少一个实施例中,计算机2210可以包括但不限于任何数量和类型的一个 或更多个处理器(未示出)和存储器(未示出)。在至少一个实施例中, 计算机2210包括但不限于服务器、云实例、膝上型计算机和台式计算机。
在至少一个实施例中,USB棒2220包括但不限于处理单元2230、 USB接口2240和USB接口逻辑2250。在至少一个实施例中,处理单元 2230可以是任何指令执行系统、装置或能够执行指令的设备。在至少一个 实施例中,处理单元2230可以包括但不限于任何数量和类型的处理核心 (未示出)。在至少一个实施例中,处理核心2230包括应用程序专用集成电路(“ASIC”),该应用程序专用集成电路被优化为执行与机器学习相关 联的任何数量和类型的操作。例如,在至少一个实施例中,处理核心2230 是张量处理单元(“TPC”),其被优化以执行机器学习推理操作。在至少 一个实施例中,处理核心2230是视觉处理单元(“VPU”),其被优化以执 行机器视觉和机器学习推理操作。
在至少一个实施例中,USB接口2240可以是任何类型的USB连接 器或USB插座。例如,在至少一个实施例中,USB接口2240是用于数据 和电力的USB 3.0Type-C插座。在至少一个实施例中,USB接口2240是 USB 3.0Type-A连接器。在至少一个实施例中,USB接口逻辑2250可以 包括使处理单元2230能够经由USB连接器2240与设备(例如计算机2210) 相接合的任何数量和类型的逻辑。
推理和/或训练逻辑1515用于执行与一个或更多个实施例相关联的推 理和/或训练操作。本文结合图15A和/或图15B提供关于推理和/或训练逻 辑1515的细节。在至少一个实施例中,推理和/或训练逻辑1515可以在图 22的系统中使用,用于至少部分地基于使用神经网络训练操作、神经网络 功能和/或架构或本文所述的神经网络用例计算出的权重参数来推理或预 测操作。
图23A示出了示例性架构,其中多个GPU 2310-2313通过高速链路 2340-2343(例如,总线、点对点互连等)通信地耦合到多个多核处理器 2305-2306。在一个实施例中,高速链路2340-2343支持4GB/s、30GB/s、 80GB/s或更高的通信吞吐量。可以使用各种互连协议,包括但不限于PCIe 4.0或5.0和NVLink 2.0。
另外,在一个实施例中,GPU 2310-2313中的两个或更多个通过高速 链路2329-2330互连,其可以使用与用于高速链路2340-2343的协议/链路 相同或不同的协议/链路来实现。类似地,两个或更多个多核处理器 2305-2306可以通过高速链路2328连接,该高速链路2328可以是以20GB/s、 30GB/s、120GB/s或更高速度运行的对称多处理器(SMP)总线。可替代 地,可以使用相同的协议/链路(例如,通过公共互连结构)来完成图23 中所示的各种系统组件之间的所有通信。
在一个实施例中,每个多核处理器2305-2306分别经由存储器互连 2326-2327通信地耦合至处理器存储器2301-2302,并且每个GPU 2310-2313通过GPU存储器互连2350-2353通信地耦合至GPU存储器 2320-2323。存储器互连2326-2327和2350-2353可以利用相同或不同的存 储器访问技术。作为示例而非限制,处理器存储器2301-2302和GPU存储 器2320-2323可以是易失性存储器,诸如动态随机存取存储器(DRAM) (包括堆叠的DRAM)、图形DDR SDRAM(GDDR)(例如,GDDR5、 GDDR6)或高带宽存储器(HBM)和/或可以是非易失性存储器(例如3D XPoint或Nano-Ram)。在一个实施例中,处理器存储器2301-2302的某些 部分可以是易失性存储器,而处理器存储器2301-2302的另一部分可以是 非易失性存储器(例如,使用两级存储器(2LM)层次结构)。
如本文所述,尽管各种处理器2305-2306和GPU 2310-2313可以分别 物理地耦合到特定的存储器2301-2302、2320-2323,但是可以实现统一的 存储器架构,其中相同的虚拟系统地址空间(也称为“有效地址”空间) 分布在各种物理存储器之间。例如,处理器存储器2301-2302每个可以包 括64GB的系统存储器地址空间,并且GPU存储器2320-2323每个可以包 括32GB的系统存储器地址空间(在该示例中导致总共256GB的可寻址存 储器)。
图23B示出了根据一个示例性实施例的用于多核处理器2307和图形 加速模块2346之间的互连的附加细节。图形加速模块2346可以包括集成 在通过高速链路2340耦合到处理器2307的线卡上的一个或更多个GPU芯 片。可替代地,图形加速模块2346可以与处理器2307集成在同一封装或 芯片上。
在至少一个实施例中,所示的处理器2307包括多个核心 2360A-2360D,每个核心具有转换后备缓冲器2361A-2361D和一个或更多 个高速缓存2362A-2362D。在至少一个实施例中,核心2360A-2360D可以 包括用于执行未示出的指令和处理数据的各种其他组件。高速缓存 2362A-2362D可以包括1级(L1)和2级(L2)高速缓存。另外,一个或 更多个共享高速缓存2356可以被包括在高速缓存2362A-2362D中,并且 由一组核心2360A-2360D共享。例如,处理器2307的一个实施例包括24 个核心,每个核心具有其自己的L1高速缓存、十二个共享的L2高速缓存 和十二个共享的L3高速缓存。在该实施例中,两个相邻核心共享一个或更多个L2和L3高速缓存。处理器2307和图形加速模块2346与系统存储 器2314连接,系统存储器2314可以包括图23A的处理器存储器2301-2302。
经由一致性总线2364上的核心间通信,保持存储在各种高速缓存 2362A-2362D、2356和系统存储器2314中的数据和指令的一致性。例如, 每个高速缓存可具有与其相关联的高速缓存一致性逻辑/电路,该高速缓存 一致性逻辑和电路响应于检测到的对特定高速缓存线的读取或写入,在一 致性总线2364上进行通信。在一种实现中,在一致性总线2364上实现了 高速缓存监听协议,以监听高速缓存访问。
在一个实施例中,代理电路2325将图形加速模块2346通信地耦合到 一致性总线2364,从而允许图形加速模块2346作为核心2360A-2360D的 对等方参与高速缓存一致性协议。特别地,接口2335通过高速链路2340 (例如,PCIe总线、NVLink等)提供到代理电路2325的连接,并且接口2337将图形加速模块2346连接到链路2340。
在一个实施方式中,加速器集成电路2336代表图形加速模块2346 的多个图形处理引擎2331、2332、N,提供高速缓存管理、存储器访问、 上下文管理和中断管理服务。图形处理引擎2331、2332、N,可以各自包 括单独的图形处理单元(GPU)。可选地,图形处理引擎2331、2332、N 可包括GPU内的不同类型的图形处理引擎,诸如图形执行单元、媒体处理 引擎(例如,视频编码器/解码器)、采样器和双轨引擎。在至少一个实施 例中,图形加速模块2346可以是具有多个图形处理引擎2331-2332、N的 GPU或图形处理引擎2331-2332、N可以是集成在普通封装、线卡或芯片 上的单独的GPU。
在一个实施例中,加速器集成电路2336包括存储器管理单元(MMU) 2339,用于执行各种存储器管理功能,例如虚拟到物理存储器转换(也称 为有效到实际存储器转换)和用于访问系统存储器2314的存储器访问协议。 MMU 2339还可以包括转换后备缓冲器(TLB)(未示出),用于缓存虚 拟/有效到物理/真实地址转换。在一种实现中,高速缓存2338存储命令和 数据,以供图形处理引擎2331-2332、N有效访问。在一个实施例中,存储 在高速缓存2338和图形存储器2333-2334、M中的数据与核心高速缓存 2362A-2362D、2356和系统存储器2314保持一致。如上所述,这可以经由 代表高速缓存2338和存储器2333-2334、M的代理电路2325(例如,将更 新发送到与处理器高速缓存2362A-2362D、2356上的高速缓存线的修改/ 访问有关的高速缓存2338并从高速缓存2338接收更新)来完成。
一组寄存器2345存储上下文数据用于由图形处理引擎2331-2332、N 执行的线程,并且上下文管理电路2348管理线程上下文。例如,上下文管 理电路2348可以执行保存和恢复操作以在上下文切换期间保存和恢复各 个线程的上下文(例如,其中保存第一线程并且存储第二线程,使得第二 线程可以由图形处理引擎执行)。例如,在上下文切换上,上下文管理电 路2348可以将当前寄存器值存储到存储器中的指定区域(例如,由上下文 指针标识)。然后,当返回上下文时,它可以恢复寄存器值。在一个实施 例中,中断管理电路2347接收并处理从系统设备接收的中断。
在一个实现中,MMU 2339将来自图形处理引擎2331的虚拟/有效地 址转换为系统存储器2314中的实际/物理地址。加速器集成电路2336的一 个实施例支持多个(例如,4个、8个、16个)图形加速器模块2346和/ 或其他加速器设备。图形加速器模块2346可以专用于在处理器2307上执 行的单个应用程序,或者可以在多个应用程序之间共享。在一个实施例中, 提出了一种虚拟化图形执行环境,其中图形处理引擎2331-2332、N的资源 与多个应用程序或虚拟机(VM)共享。在至少一个实施例中,可以基于 与VM和/或应用程序相关联的处理要求和优先级,将资源细分为“切片”, 将其分配给不同的VM和/或应用程序。
在至少一个实施例中,加速器集成电路2336充当用于图形加速模块 2346的系统的桥梁,并提供地址转换和系统存储器高速缓存服务。另外, 加速器集成电路2336可以为主机处理器提供虚拟化设施,以管理图形处理 引擎2331-2332的虚拟化、中断和存储器管理。
因为图形处理引擎2331-2332、N的硬件资源被显式映射到主机处理 器2307看到的真实地址空间,所以任何主机处理器都可以使用有效地址值 直接寻址这些资源。在一个实施例中,加速器集成电路2336的一个功能是 图形处理引擎2331-2332、N的物理分隔,使得它们在系统中表现为独立 的单元。
在至少一个实施例中,一个或更多个图形存储器2333-2334、M分别 耦合到图形处理引擎2331-2332、N中的每一个。图形存储器2333-2334、 M存储由每个图形处理引擎2331-2332、N处理的指令和数据。图形存储 器2333-2334、M可以是易失性存储器,例如DRAM(包括堆叠的DRAM)、 GDDR存储器(例如,GDDR5、GDDR6)或HBM,和/或可以是非易失性 存储器(例如,3D XPoint或Nano-Ram)。
在一个实施例中,为了减少链路2340上的数据流量,使用偏置技术 以确保存储在图形存储器2333-2334、M中的数据将是图形处理引擎 2331-2332、N最频繁地使用并且优选地不被核心2360A-2360D使用(至 少不频繁地使用)的数据。类似地,偏置机制尝试将核心(最好不是图形 处理引擎2331-2332、N)所需的数据保持在核心和系统存储器2314的高 速缓存2362A-2362D、2356中。
图23C示出了另一示例性实施例,其中加速集成电路2336被集成在 处理器2307内。在该实施例中,图形处理引擎2331-2332、N经由接口2337 和接口2335通过高速链路2340直接与加速器集成电路2336直接通信(再 次,可以利用任何形式的总线或接口协议)。加速器集成电路2336可以执 行与关于图23B描述的操作相同的操作,但是鉴于紧密靠近一致性总线2364和高速缓存2362A-2362D、2356,其可能具有更高的吞吐量。一个实 施例支持不同的编程模型,包括专用-处理编程模型(无图形加速模块虚拟 化)和共享编程模型(具有虚拟化),其可以包括由加速器集成电路2336 控制的编程模型和由图形加速模块2346控制的编程模型。
在至少一个实施例中,图形处理引擎2331-2332、N专用于单个操作 系统下的单个应用程序或处理。在至少一个实施例中,单个应用程序可以 将其他应用程序请求集中到图形处理引擎2331-2332、N,从而在VM/分 区内提供虚拟化。
在至少一个实施例中,图形处理引擎2331-2332、N可以被多个VM/ 应用程序分区共享。在至少一个实施例中,共享模型可以使用系统管理程 序来虚拟化图形处理引擎2331-2332、N以允许每个操作系统的访问。对于 没有管理程序的单个分区系统,操作系统拥有图形处理引擎2331-2332、N。 在至少一个实施例中,操作系统可以虚拟化图形处理引擎2331-2332、N 以提供对每个进程或应用程序的访问。
在至少一个实施例中,图形加速模块2346或单独的图形处理引擎 2331-2332、N使用处理句柄来选择处理元件。在一个实施例中,处理元件 被存储在系统存储器2314中,并且可使用本文所述的有效地址到真实地址 转换技术来寻址。在至少一个实施例中,处理句柄可以是在向图形处理引 擎2331-2332、N注册其上下文时向主机进程提供的特定于实现的值(即, 调用系统软件以将处理元件添加到处理元件链表)。在至少一个实施例中, 处理句柄的低16位可以是处理元件在链表中的偏移量。
图23D示出了示例性加速器集成片2390。如本文中所使用的,“片” 包括加速集成电路2336的处理资源的指定部分。系统存储器2314内的应 用程序有效地址空间2382存储处理元件2383。在一个实施例中,处理元 件2383响应于处理器2307上执行的应用程序2380的GPU调用2381来存 储。处理元件2383包含对应应用程序2380的处理状态。处理元件2383中包含的工作描述符(WD)2384可以是应用程序请求的单个作业或可能 包含指向作业队列的指针。在至少一个实施例中,WD 2384是指向应用程 序地址空间2382中的作业请求队列的指针。
图形加速模块2346和/或单个图形处理引擎2331-2332、N可以由系 统中的全部或部分进程共享。在至少一个实施例中,可以包括用于设置进 程状态并将WD 2384发送到图形加速模块2346以在虚拟化环境中开始作 业的基础设施。
在至少一个实施例中,专用进程编程模型是特定于实现的。在该模型 中,单个进程拥有图形加速模块2346或单个图形处理引擎2331。由于图 形加速模块2346由单个进程拥有,因此在分配图形加速模块2346时,管 理程序为拥有分区初始化加速器集成电路2336,以及操作系统为拥有进程 初始化加速器集成电路2336。
在操作中,加速器集成片2390中的WD获取单元2391获取下一个 WD 2384,其包括要由图形加速模块2346的一个或更多个图形处理引擎完 成的工作的指示。来自WD 2384的数据可以存储在寄存器2345中和被 MMU 2339、中断管理电路2347和/或上下文管理电路2348使用,如图所 示。例如,MMU 2339的一个实施例包括用于访问OS虚拟地址空间2385 内的片段/页面表2386的片段/页面漫游电路。中断管理电路2347可以处理 从图形加速接收的中断事件2392。当执行图形操作时,由图形处理引擎 2331-2332、N生成的有效地址2393被MMU 2339转换为真实地址。
在一个实施例中,为每个图形处理引擎2331-2332、N和/或图形加速 模块2346复制相同的寄存器组2345,并且可以由管理程序或操作系统来 初始化。这些复制的寄存器中的每一个都可以包括在加速器集成片2390 中。表1中显示了可由管理程序初始化的示例性寄存器。
表1–管理程序初始化的寄存器
1 片控制寄存器
2 真实地址(RA)调度进程区指针
3 授权掩码覆盖寄存器
4 中断向量表入口偏移
5 中断向量表入口限制
6 状态寄存器
7 逻辑分区ID
8 真实地址(RA)管理程序加速器利用率记录指正
9 存储器描述寄存器
表2中示出了由操作系统初始化的示例性寄存器
表2–操作系统初始化的寄存器
1 进程和线程识别
2 有效地址(EA)上下文保存/恢复指针
3 虚拟地址(VA)加速器利用率记录指针
4 虚拟地址(VA)存储器片段表指针
5 授权掩码
6 工作描述符
在一个实施例中,每个WD 2384特定于特定的图形加速模块2346和 /或图形处理引擎2331-2332、N。它包含图形处理引擎2331-2332、N进行 工作所需的所有信息,或者它可以是指向存储器位置的指针,在该位置应 用程序已经建立了要完成的工作的命令队列。
图23E示出了共享模型的一个示例性实施例的附加细节。该实施例 包括管理程序真实地址空间2398,其中存储了处理元件列表2399。可通过 管理程序2396访问管理程序真实地址空间2398,管理程序2396虚拟化用 于操作系统2395的图形加速模块引擎。
在至少一个实施例中,共享编程模型允许来自系统中所有分区或分区 的子集的全部进程或进程子集使用图形加速模块2346。存在由多个进程和 分区(时间切片共享和图形定向共享)共享图形加速模块2346的两个编程 模型。
在此模型中,系统管理程序2396拥有图形加速模块2346,并且使其 功能可用于所有操作系统2395。为了使图形加速模块2346支持系统管理 程序2396进行虚拟化,图形加速模块2346可以遵循以下条件:1)应用程 序的作业请求必须是自主的(即,不需要在作业之间保持状态),或者图 形加速模块2346必须提供上下文保存和恢复机制。2)图形加速模块2346 保证应用程序的作业请求在指定的时间内完成,包括任何翻译错误,或者 图形加速模块2346提供了抢占作业处理的能力。3)当在定向共享编程模 型中操作时,必须确保图形加速模块2346在进程之间的公平性。
在至少一个实施例中,需要应用程序2380使用图形加速模块2346 类型、工作描述符(WD)、授权掩码寄存器(AMR)值和上下文保存/ 恢复区域指针(CSRP)的操作系统2395系统调用。在至少一个实施例中, 图形加速模块2346类型描述了用于系统调用的目标加速功能。在至少一个 实施例中,图形加速模块2346类型可以是特定系统值。在至少一个实施例中,WD是专门针对图形加速模块2346格式化的,并且可以是以下形式: 图形加速模块2346命令、指向用户定义结构的有效地址指针、指向命令队 列的有效地址指针、或任何其他数据结构以描述要由图形加速模块2346 完成的工作。在一个实施例中,AMR值是要用于当前进程的AMR状态。 在至少一个实施例中,传递给操作系统的值类似于设置AMR的应用程序。如果加速器集成电路2336和图形加速模块2346实现不支持用户授权掩码 覆盖寄存器(UAMOR),则操作系统可以在管理程序调用中传递AMR之 前将当前UAMOR值应用于AMR值。管理程序2396可以在将AMR放入 处理元件2383之前,可选地应用当前的授权掩码覆盖寄存器(AMOR)值。 在至少一个实施例中,CSRP是寄存器2345之一,其包含用于图形加速模 块2346的应用程序地址空间2382中某个区域的有效地址,以保存和恢复 上下文状态。如果不需要在作业之间保存状态或抢占作业,则此指针是可 选的。在至少一个实施例中,上下文保存/恢复区域可以是固定的系统存储 器。
在接收到系统调用后,操作系统2395可以验证应用程序2380已注册 并被授权使用图形加速模块2346。然后,操作系统2395使用表3中所示 的信息调用管理程序2396。
表3–OS调用信息调用管理程序
1 工作描述符(WD)
2 授权掩码寄存器(AMR)值(可能被屏蔽)
3 有效地址(EA)上下文保存/恢复区域指针(CSRP)
4 进程ID(PID)和可选线程ID(TID)
5 虚拟地址(VA)加速器利用率记录指针(AURP)
6 存储片段表指针的虚拟地址(SSTP)
7 逻辑中断服务号码(LISN)
在接收到管理程序调用之后,管理程序2396验证操作系统2395已注 册并被授权使用图形加速模块2346。管理程序2396然后将处理元件2383 放入对应的图形加速模块2346类型的处理元件链接列表中。处理元件可能 包含表4中所示的信息。
表4–处理元件信息
Figure BDA0002684851560000781
Figure BDA0002684851560000791
在至少一个实施例中,管理程序初始化多个加速器集成片2390寄存 器2345。
如图23F中所示,在至少一个实施例中,使用统一存储器,该统一存 储器可通过用于访问物理处理器存储器2301-2302和GPU存储器 2320-2323的公共虚拟存储器地址空间来寻址。在该实现中,在GPU 2310-2313上执行的操作利用相同的虚拟/有效存储器地址空间来访问处理 器存储器2301-2302,反之亦然,从而简化了可编程性。在一个实施例中, 虚拟/有效地址空间的第一部分被分配给处理器存储器2301、虚拟/有效地 址空间的第二部分被分配给第二处理器存储器2302、虚拟/有效地址空间的 第三部分被分配给GPU存储器2320,等等。在至少一个实施例中,整个 虚拟/有效存储器空间(有时称为有效地址空间)由此分布在处理器存储器 2301-2302和GPU存储器2320-2323中的每一个上,从而允许任何处理器 或GPU访问具有映射到该存储器的虚拟地址的任何物理存储器。
在一个实施例中,一个或更多个MMU 2339A-2339E内的偏置/一致 性管理电路2394A-2394E确保一个或更多个主机处理器(例如,2305)和 GPU 2310-2313的高速缓存之间的高速缓存一致性,并实施指示在其中应 存储某些类型的数据的物理存储器的偏置技术。尽管在图23中示出了偏置 /一致性管理电路2394A-2394E的多个实例,可以在一个或更多个主机处理 器2305的MMU内和/或在加速器集成电路2336内实现偏置/一致性电路。
一个实施例允许附接到GPU的存储器2320-2323被映射为系统存储 器的一部分,并使用共享虚拟存储器(SVM)技术进行访问,但不会遭受 与完整系统高速缓存一致性相关联的性能缺陷。在至少一个实施例中,将 附接到GPU的存储器2320-2323作为系统存储器来访问而没有繁重的高速 缓存一致性开销的能力为GPU卸载提供了有益的操作环境。这种安排允许 主机处理器2305软件设置操作数并访问计算结果,而不会产生传统I/O DMA数据副本的开销。此类传统副本涉及驱动程序调用、中断和存储器 映射的I/O(MMIO)访问,这些访问相对于简单的存储器访问而言效率低 下。在至少一个实施例中,在没有高速缓存一致性开销的情况下访问附接 到GPU的存储器2320-2323的能力对于卸载的计算的执行时间可能是关键 的。例如,在具有大量流传输写入存储器流量的情况下,高速缓存一致性 开销会大大降低GPU 2310-2313所看到的有效写入带宽。在至少一个实施 例中,操作数设置的效率、结果访问的效率以及GPU计算的效率可以在确 定GPU卸载的效率中起作用。
在至少一个实施例中,GPU偏置和主处理器偏置的选择由偏置追踪 器数据结构驱动。例如,可以使用偏置表,该偏置表可以是页面粒度结构 (即,以存储器页面的粒度来控制),其每附接到GPU的存储器页面包括 1或2位。在至少一个实施例中,可以在一个或更多个附接到GPU的存储 器2320-2323的被盗存储器范围中实现偏置表,在GPU 2310-2313中具有 或不具有偏置高速缓存(例如,以高速缓存频繁/最近使用的偏置表的条目)。 可选地,可以在GPU内维护整个偏置表。
在至少一个实施例中,在实际访问GPU存储器之前访问与对附接到 GPU的存储器2320-2323的每次访问相关联的偏置表条目,从而引起以下 操作。首先,来自GPU 2310-2313的在GPU偏置中找到其页面的本地请 求被直接转发到相应的GPU存储器2320-2323。来自GPU的在主机偏置 中找到其页面的本地请求被转发到处理器2305(例如,如上所述,通过高 速链路)。在一个实施例中,来自处理器2305的在主机处理器偏置中找到 所请求的页面的请求完成了与普通存储器读取类似的请求。可选地,可以 将针对GPU偏置的页面的请求转发给GPU 2310-2313。在至少一个实施例 中,如果GPU当前不使用页面,则GPU可以将页面转换为主机处理器偏 置。在至少一个实施例中,页面的偏置状态可以通过基于软件的机制、硬 件辅助的基于软件的机制来更改或者在有限的情况下,可以纯粹通过基于 硬件的机制来更改。
用于更改偏置状态的一种机制采用API调用(例如,OpenCL),该 调用反过来又调用GPU的设备驱动程序,该设备驱动程序反过来又将消息 (或排队命令描述符)发送给GPU,以指导其进行更改偏置状态,并且对 于某些转变,在主机中执行高速缓存刷新操作。在至少一个实施例中,高 速缓存刷新操作用于从主机处理器2305偏置到GPU偏置的转变,但是不 用于相反的转变。
在一个实施例中,通过暂时使主机处理器2305无法高速缓存GPU偏 置的页面,来保持高速缓存一致性。为了访问这些页面,处理器2305可以 请求GPU 2310进行访问,该访问可以立即或可以不立即授权。因此,为 了减少处理器2305与GPU 2310之间的通信,确保GPU偏置的页面是GPU 所需的页面而不是主机处理器2305所需要的页面是有益的,反之亦然。
一个或更多个硬件结构1515用于执行一个或更多个实施例。在此结 合图15A和/或图15B提供关于硬件结构(x)1515的细节。。
图24示出了根据本文所述的各种实施例的示例性集成电路和相关联 的图形处理器,其可以使用一个或更多个IP核心来制造。除了图示的之外, 在至少一个实施例中还可以包括其他逻辑和电路,包括附加的图形处理器/ 核心、外围接口控制器或通用处理器核心。
图24是示出根据至少一个实施例的可使用一个或更多个IP核心制造 的芯片集成电路2400上的示例性系统的框图。在至少一个实施例中,集成 电路2400包括一个或更多个应用处理器2405(例如,CPU)、至少一个 图形处理器2410,并且可以另外包括图像处理器2415和/或视频处理器 2420,其中任意一个可以是模块化IP核心。在至少一个实施例中,集成电 路2400包括外围或总线逻辑,其包括USB控制器2425、UART控制器2430、 SPI/SDIO控制器2435和I.sup.2S/I.sup.2C控制器2440。在至少一个实施例 中,集成电路2400可以包括显示设备2445,其耦合到高清多媒体接口 (HDMI)控制器2450和移动工业处理器接口(MIPI)显示接口2455中 的一个或更多个。在至少一个实施例中,存储可以由闪存子系统2460提供, 其包括闪存和闪存控制器。在至少一个实施例中,可以经由存储器控制器 2465提供存储器接口以用于访问SDRAM或SRAM存储器设备。在至少 一个实施例中,一些集成电路还包括嵌入式安全引擎2470。
推理和/或训练逻辑1515用于执行与一个或更多个实施例相关联的推 理和/或训练操作。本文结合图15A和/或图15B提供关于推理和/或训练逻 辑1515的细节。在至少一个实施例中,推理和/或训练逻辑1515可以在集 成电路2400中使用,用于至少部分地基于使用神经网络训练操作、神经网 络功能和/或架构或本文描述的神经网络用例计算的权重参数来推理或预 测操作。
图25A-图25B示出了根据本文所述的各个实施例的示例性集成电路 和相关联的图形处理器,其可以使用一个或更多个IP核心来制造。除了图 示的之外,在至少一个实施例中还可以包括其他逻辑和电路,包括附加的 图形处理器/核心、外围接口控制器或通用处理器核心。
图25A-图25B是示出根据本文描述的实施例的用于在SoC内使用的 示例性图形处理器的框图。图25A示出了根据至少一个实施例的芯片集成 电路上系统的另外示例性图形处理器2510,其可以使用一个或更多个IP 核心来制造。图25B示出了根据至少一个实施例的芯片集成电路上系统的 示例性图形处理器2540,其可以使用一个或更多个IP核心来制造。在至 少一个实施例中,图25A的图形处理器2510是低功耗图形处理器核心。 在至少一个实施例中,图25B的图形处理器2540是更高性能的图形处理 器核心。在至少一个实施例中,每个图形处理器2510、2540可以是图24 的图形处理器2410的变体。
在至少一个实施例中,图形处理器2510包括顶点处理器2505和一个 或更多个片段处理器2515A-2515N(例如2515A、2515B、2515C、2515D 至2515N-1和2515N)。在至少一个实施例中,图形处理器2510可以经由 单独的逻辑来执行不同的着色器程序,使得顶点处理器2505被优化以执行 针对顶点着色器程序的操作,而一个或更多个片段处理器2515A-2515N执 行针对片段的片段(例如,像素)着色操作或像素着色器程序。在至少一 个实施例中,顶点处理器2505执行3D图形管线的顶点处理阶段并生成图 元和顶点数据。在至少一个实施例中,一个或更多个片段处理器 2515A-2515N使用由顶点处理器2505生成的图元和顶点数据来生成在显 示设备上显示的帧缓冲区。在至少一个实施例中,一个或更多个片段处理 器2515A-2515N被优化以执行如在OpenGL API中所提供的片段着色器程 序,其可以用于执行与在Direct 3D API中所提供的像素着色器程序类似的 操作。
在至少一个实施例中,图形处理器2510附加地包括一个或更多个存 储器管理单元(MMU)2520A-2520B、高速缓存2525A-2525B和电路互连 2530A-2530B。在至少一个实施例中,一个或更多个MMU 2520A-2520B 提供用于图形处理器2510的虚拟到物理地址的映射,包括用于顶点处理器 2505和/或一个或更多个片段处理器2515A-2515N的,除了存储在一个或 更多个高速缓存2525A-2525B中的顶点或图像/纹理数据之外,其还可以引 用存储在存储器中的顶点或图像/纹理数据。在至少一个实施例中,一个或 更多个MMU 2520A-2520B可以与系统内的其他MMU同步,包括与图24 的一个或更多个应用处理器2405、图像处理器2415和/或视频处理器2420 相关联的一个或更多个MMU,使得每个处理器2405-2420可以参与共享 或统一虚拟存储器系统。在至少一个实施例中,一个或更多个电路互连 2530A-2530B使图形处理器2510能够经由SoC的内部总线或经由直接连 接与SoC内的其他IP核心相接合。
在至少一个实施例中,图形处理器2540包括图25A的图形处理器 2510的一个或更多个MMU 2520A-2520B、高速缓存2525A-2525B和电路 互连2530A-2530B。在至少一个实施例中,图形处理器2540包括一个或更 多个着色器核心2555A-2555N(例如,2555A、2555B、2555C、2555D、 2555E、2555F、直到2555N-1和2555N),其提供了统一的着色器核心架 构,其中单个核心或类型或核心可以执行所有类型的可编程着色器代码, 包括用于实现顶点着色器、片段着色器和/或计算着色器的着色器程序代码。 在至少一个实施例中,多个着色器核心可以变化。在至少一个实施例中, 图形处理器2540包括核心间任务管理器2545,其充当线程分派器,以将 执行线程分派给一个或更多个着色器核心2555A-2555N和分块单元2558, 以加速基于图块的渲染的分块操作,其中在图像空间中细分了场景的渲染 操作,例如,以利用场景内的局部空间相干来优化内部高速缓存的使用。
推理和/或训练逻辑1515用于执行与一个或更多个实施例相关联的推 理和/或训练操作。本文结合图15A和/或图15B提供关于推理和/或训练逻 辑1515的细节。在至少一个实施例中,推理和/或训练逻辑1515可以在图 25A和/或图25B的集成电路中使用,用于至少部分地基于使用神经网络训 练操作、神经网络功能或架构或本文所述的神经网络用例计算的权重参数 来进行推理或预测操作。
图26A-图26B示出了根据本文描述的实施例的附加的示例性图形处 理器逻辑。在至少一个实施例中,图26A示出了可以包括在图24的图形 处理器2410内的图形核心2600,在至少一个实施例中,其可以是图25B 中的统一着色器核心2555A-2555N。图26B示出了在至少一个实施例中的 适用于在多芯片模块上部署的高度并行的通用图形处理单元2630。
在至少一个实施例中,图形核心2600包括共享指令高速缓存2602、 纹理单元2618和高速缓存/共享存储器2620,它们是图形核心2600内的执 行资源所共有的。在至少一个实施例中,图形核心2600可以包括多个切片 2601A-2601N或用于每个核心的分区,图形处理器可以包括图形核心2600 的多个实例。切片2601A-2601N可以包括支持逻辑,该支持逻辑包括本地 指令高速缓存2604A-2604N、线程调度器2606A-2606N、线程分派器 2608A-2608N和一组寄存器2610A-2610N。在至少一个实施例中,切片 2601A-2601N可以包括一组附加功能单元(AFU 2612A-2612N)、浮点单 元(FPU 2614A-2614N)、整数算术逻辑单元(ALU2616-2616N)、地址 计算单元(ACU 2613A-2613N)、双精度浮点单元(DPFPU 2615A-2615N)和矩阵处理单元(MPU 2617A-2617N)。
在至少一个实施例中,FPU 2614A-2614N可以执行单精度(32位) 和半精度(16位)浮点运算,而DPFPU 2615A-2615N可以执行双精度(64 位)浮点运算。在至少一个实施例中,ALU 2616A-2616N可以以8位、16 位和32位精度执行可变精度整数运算,并且可以被配置用于混合精度运算。 在至少一个实施例中,MPU 2617A-2617N还可被配置用于混合精度矩阵运 算,包括半精度浮点运算和8位整数运算。在至少一个实施例中,MPU 2617A-2617N可以执行各种矩阵运算,以加速机器学习应用框架,包括使 得能够支持加速的通用矩阵到矩阵乘法(GEMM)。在至少一个实施例中, AFU 2612A-2612N可以执行浮点单元或整数单元不支持的附加逻辑运算, 包括三角运算(例如,Sine、Cosine等)。
推理和/或训练逻辑1515用于执行与一个或更多个实施例相关联的推 理和/或训练操作。本文结合图15A和/或图15B提供关于推理和/或训练逻 辑1515的细节。在至少一个实施例中,推理和/或训练逻辑1515可以在图 形核心2600中使用,用于至少部分地基于使用神经网络训练操作、神经网 络功能和/或架构或本文描述的神经网络用例计算的权重参数来进行推理 或预测操作。
图26B示出了在至少一个实施例中的通用处理单元(GPGPU)2630, 其可以被配置为使得高度并行的计算操作能够由图形处理单元阵列来执行。 在至少一个实施例中,GPGPU 2630可以直接链接到GPGPU 2630的其他 实例,以创建多GPU集群,以提高深度神经网络的训练速度。在至少一个 实施例中,GPGPU 2630包括主机接口2632,以实现与主机处理器的连接。 在至少一个实施例中,主机接口2632是PCI Express接口。在至少一个实 施例中,主机接口2632可以是厂商专用的通信接口或通信结构。在至少一 个实施例中,GPGPU2630从主机处理器接收命令,并使用全局调度器2634 将与那些命令相关联的执行线程分发给一组计算集群2636A-2636H。在至 少一个实施例中,计算集群2636A-2636H共享高速缓存存储器2638。在至 少一个实施例中,高速缓存存储器2638可以用作计算集群2636A-2636H 内的高速缓存存储器的高级高速缓存。
在至少一个实施例中,GPGPU 2630包括经由一组存储器控制器 2642A-2642B与计算集群2636A-2636H耦合的存储器2644A-2644B。在至 少一个实施例中,存储器2644A-2644B可以包括各种类型的存储器设备, 包括动态随机存取存储器(DRAM)或图形随机存取存储器(例如同步图 形随机存取存储器(SGRAM)),包括图形双倍数据速率(GDDR)存储 器。
在至少一个实施例中,计算集群2636A-2636H各自包括一组图形核 心,诸如图26A的图形核心2600,其可以包括多种类型的整数逻辑单元和 浮点逻辑单元,整数逻辑单元和浮点逻辑单元可以以包括适用于机器学习 计算的精度范围执行计算操作。例如,在至少一个实施例中,每个计算集 群2636A-2636H中的浮点单元的至少一个子集可以被配置为执行16位或 32位浮点运算,而浮点单元的不同子集可以被配置为执行64位浮点运算。
在至少一个实施例中,GPGPU 2630的多个实例可以被配置为操作为 计算集群。在至少一个实施例中,计算集群2636A-2636H用于同步和数据 交换的通信在实施例之间变化。在至少一个实施例中,GPGPU 2630的多 个实例通过主机接口2632进行通信。在至少一个实施例中,GPGPU 2630 包括I/O集线器2639,其将GPGPU 2630与GPU链路2640耦合,其实现 了至GPGPU 2630的其他实例的直接连接。在至少一个实施例中,GPU链 路2640耦合到专用GPU到GPU桥,其使得能够在GPGPU 2630的多个实 例之间进行通信和同步。在至少一个实施例中,GPU链路2640与高速互 连耦合,以向其他GPGPU或并行处理器发送和接收数据。在至少一个实 施例中,GPGPU 2630的多个实例位于单独的数据处理系统中,并通过可 经由主机接口2632访问的网络设备进行通信。在至少一个实施例中,GPU 链路2640可被配置为除了主机接口2362之外或作为其替代,使得能够实 现到主机处理器的连接。
在至少一个实施例中,GPGPU 2630可以被配置为训练神经网络。在 至少一个实施例中,可以在推理平台内使用GPGPU 2630。在其中使用 GPGPU 2630进行推理的至少一个实施例中,相对于当使用GPGPU训练神 经网络时,GPGPU可以包括更少的计算集群2636A-2636H。在至少一个实 施例中,与存储器2644A-2644B相关联的存储器技术可以在推理和训练配 置之间有所不同,其中更高带宽的存储器技术专用于训练配置。在至少一 个实施例中,GPGPU 2630的推理配置可以支持推理特定指令。例如,在 至少一个实施例中,推理配置可以提供对一个或更多个8位整数点积指令 的支持,该指令可以在部署的神经网络的推理操作期间使用。
推理和/或训练逻辑1515用于执行与一个或更多个实施例相关联的推 理和/或训练操作。本文结合图15A和/或图15B提供关于推理和/或训练逻 辑1515的细节。在至少一个实施例中,推理和/或训练逻辑1515可以在 GPGPU 2630中使用,用于至少部分地基于本文描述的使用神经网络训练 操作、神经网络功能和/或架构或神经网络用例计算的权重参数来推理或预 测操作。
图27是示出根据至少一个实施例的计算系统2700的框图。在至少一 个实施例中,计算系统2700包括处理子系统2701,其具有一个或更多个 处理器2702和经由互连路径通信的系统存储器2704,互连路径可以包括 存储器集线器2705。在至少一个实施例中,存储器集线器2705可以是芯 片组组件内的单独组件,或者可以集成在一个或更多个处理器2702内。在 至少一个实施例中,存储器集线器2705经由通信链路2706与I/O子系统 2711耦合。在至少一个实施例中,I/O子系统2711包括I/O集线器2707, 其可以使计算系统2700能够接收来自一个或更多个输入设备2708的输入。 在至少一个实施例中,I/O集线器2707可以使能显示控制器,其可以包括 在一个或更多个处理器2702中,用于向一个或更多个显示设备2710A提 供输出。在至少一个实施例中,与I/O集线器2707耦合的一个或更多个显 示设备2710A可以包括本地、内部或嵌入式显示设备。
在至少一个实施例中,处理子系统2701包括经由总线或其他通信链 路2713耦合到存储器集线器2705的一个或更多个并行处理器2712。在至 少一个实施例中,通信链路2713可以是任何数量的基于标准的通信链路技 术或协议之一,例如但不限于PCI快速,或者可以是供应商特定的通信接 口或通信结构。在至少一个实施例中,一个或更多个并行处理器2712形成 计算集中的并行或向量处理系统,其可以包括大量的处理核心和/或处理集群,例如多集成核心(MIC)处理器。在至少一个实施例中,一个或更多 个并行处理器2712形成可以将像素输出到经由I/O集线器2707耦合的一 个或更多个显示设备2710A之一的图形处理子系统。在至少一个实施例中, 一个或更多个并行处理器2712还可以包括显示控制器和显示接口(未示 出),以使得能够直接连接到一个或更多个显示设备2710B。
在至少一个实施例中,系统存储单元2714可以连接到I/O集线器2707, 以提供用于计算系统2700的存储机制。在至少一个实施例中,I/O开关2716 可以用于提供接口机制,以实现I/O集线器2707与其他组件之间的连接, 例如可以集成到平台中的网络适配器2718和/或无线网络适配器2719,以 及可以经由一个或更多个附加设备2720添加的各种其他设备。在至少一个 实施例中,网络适配器2718可以是以太网适配器或另一有线网络适配器。在至少一个实施例中,无线网络适配器2719可以包括Wi-Fi、蓝牙、近场 通信(NFC)中的一个或更多个或包括一个或更多个无线电的其他网络设 备。
在至少一个实施例中,计算系统2700可以包括未明确示出的其他组 件,包括USB或其他端口连接、光存储驱动器、视频捕获设备等,也可以 连接到I/O集线器2707。在至少一个实施例中,对图27中的各个组件进 行互连的通信路径可以使用任何合适的协议来实现,诸如基于PCI(外围 组件互连)的协议(例如,PCI-快速),或其他总线或点对点通信接口和/ 或一个或更多个协议(例如,NV-链路高速互连或互连协议)。
在至少一个实施例中,一个或更多个并行处理器2712包括针对图形 和视频处理而优化的电路(包括例如视频输出电路),并构成图形处理单 元(GPU)。在至少一个实施例中,一个或更多个并行处理器2712包括针 对通用处理而优化的电路。在至少一个实施例中,计算系统2700的组件可 以与单个集成电路上的一个或更多个其他系统元件集成。例如,在至少一 个实施例中,一个或更多个并行处理器2712、存储器集线器2705、一个或 更多个处理器2702和I/O集线器2707可以被集成到片上系统(SoC)集成 电路中。在至少一个实施例中,计算系统2700的组件可以被集成到单个封 装中以形成系统级封装(SIP)配置。在至少一个实施例中,计算系统2700 的组件的至少一部分可以被集成到多芯片模块(MCM)中,该多芯片模块 可以与其他多芯片模块互连到模块化计算系统中。
推理和/或训练逻辑1515用于执行与一个或更多个实施例相关联的推 理和/或训练操作。本文结合图15A和/或图15B提供关于推理和/或训练逻 辑1515的细节。在至少一个实施例中,推理和/或训练逻辑1515可以在图 27的系统中使用,用于至少部分地基于使用神经网络训练操作、神经网络 功能和/或架构或本文所述的神经网络用例计算出的权重参数来进行推理 或预测操作。
处理器
图28A示出了根据至少一个实施例的并行处理器2800。在至少一个 实施例中,并行处理器2800的各种组件可以使用一个或更多个集成电路设 备来实现,例如可编程处理器、专用集成电路(ASIC)或现场可编程门阵 列(FPGA)。在至少一个实施例中,所示的并行处理器2800是根据示例 性实施例的图27所示的一个或更多个并行处理器2712的变体。
在至少一个实施例中,并行处理器2800包括并行处理单元2802。在 至少一个实施例中,并行处理单元2802包括I/O单元2804,其使得能够 与其他设备进行通信,包括并行处理单元2802的其他实例。在至少一个实 施例中,I/O单元2804可以直接连接到其他设备。在至少一个实施例中, I/O单元2804通过使用集线器或交换机接口(例如,存储器集线器2705) 与其他设备连接。在至少一个实施例中,存储器集线器2705与I/O单元 2804之间的连接形成通信链路2713。在至少一个实施例中,I/O单元2804 与主机接口2806和存储器交叉开关2816连接,其中主机接口2806接收用 于执行处理操作的命令,而存储器交叉开关2816接收用于执行存储器操作 的命令。
在至少一个实施例中,当主机接口2806经由I/O单元2804接收命令 缓冲区时,主机接口2806可以引导工作操作以执行那些命令到前端2808。 在至少一个实施例中,前端2808与调度器2810耦合,调度器2810配置成 将命令或其他工作项分配给处理集群阵列2812。在至少一个实施例中,调 度器2810确保在将任务分配给处理集群阵列2812之前,处理集群阵列 2812被正确地配置并且处于有效状态。在至少一个实施例中,调度器2810 通过在微控制器上执行的固件逻辑来实现。在至少一个实施例中,微控制 器实现的调度器2810可配置成以粗粒度和细粒度执行复杂的调度和工作 分配操作,从而实现对在处理阵列2812上执行的线程的快速抢占和环境切 换。在至少一个实施例中,主机软件可以证明用于通过多个图形处理门铃 之一在处理阵列2812上进行调度的工作负载。在至少一个实施例中,工作 负载然后可以由包括调度器2810的微控制器内的调度器2810逻辑在处理 阵列2812上自动分配。
在至少一个实施例中,处理集群阵列2812可以包括多达“N”个处 理集群(例如,集群2814A、集群2814B到集群2814N)。在至少一个实 施例中,处理集群阵列2812的每个集群2814A-2814N可以执行大量并发 线程。在至少一个实施例中,调度器2810可以使用各种调度和/或工作分 配算法将工作分配给处理集群阵列2812的集群2814A-2814N,其可以根据每种程序或计算类型产生的工作负载而变化。在至少一个实施例中,调度 可以由调度器2810动态地处理,或者可以在配置为由处理集群阵列2812 执行的程序逻辑的编译期间部分地由编译器逻辑来辅助。在至少一个实施 例中,可将处理集群阵列2812的不同的集群2814A-2814N分配用于处理 不同类型的程序或用于执行不同类型的计算。
在至少一个实施例中,处理集群阵列2812可以被配置成执行各种类 型的并行处理操作。在至少一个实施例中,处理集群阵列2812被配置成执 行通用并行计算操作。例如,在至少一个实施例中,处理集群阵列2812 可以包括执行处理任务的逻辑,该处理任务包括对视频和/或音频数据的过 滤,执行建模操作,包括物理操作以及执行数据转换。
在至少一个实施例中,处理集群阵列2812配置成执行并行图形处理 操作。在至少一个实施例中,处理集群阵列2812可以包括附加逻辑以支持 这种图形处理操作的执行,包括但不限于执行纹理操作的纹理采样逻辑, 以及镶嵌逻辑和其他顶点处理逻辑。在至少一个实施例中,处理集群阵列 2812可以配置成执行与图形处理有关的着色器程序,例如但不限于顶点着 色器、曲面细分着色器、几何着色器和像素着色器。在至少一个实施例中, 并行处理单元2802可以经由I/O单元2804从系统存储器传送数据以进行 处理。在至少一个实施例中,在处理期间,可以在处理期间将传送的数据 存储到片上存储器(例如,并行处理器存储器2822),然后将其写回到系 统存储器。
在至少一个实施例中,当并行处理单元2802用于执行图形处理时, 调度器2810可以配置成将处理工作负载划分为近似相等大小的任务,以更 好地将图形处理操作分配给处理集群阵列2812的多个集群2814A-2814N。 在至少一个实施例中,处理集群阵列2812的部分可以配置成执行不同类型 的处理。例如,在至少一个实施例中,第一部分可以配置成执行顶点着色 和拓扑生成,第二部分可以配置成执行镶嵌和几何着色,并且第三部分可以配置成执行像素着色或其他屏幕空间操作,以生成用于显示的渲染图像。 在至少一个实施例中,可以将由集群2814A-2814N中的一个或更多个产生 的中间数据存储在缓冲区中,以允许在集群2814A-2814N之间传输中间数 据以进行进一步处理。
在至少一个实施例中,处理集群阵列2812可以经由调度器2810接收 要执行的处理任务,该调度器2810从前端2808接收定义处理任务的命令。 在至少一个实施例中,处理任务可以包括要被处理的数据的索引,例如表 面(补丁)数据、原始数据、顶点数据和/或像素数据,以及状态参数和定 义如何处理数据的命令(例如,要执行什么程序)。在至少一个实施例中, 调度器2810可以配置成获取与任务相对应的索引,或者可以从前端2808 接收索引。在至少一个实施例中,前端2808可以配置成确保在启动由传入 命令缓冲区(例如,批处理缓冲区、推入缓冲区等)指定的工作负载之前, 处理集群阵列2812配置成有效状态。
在至少一个实施例中,并行处理单元2802的一个或更多个实例中的 每一个可以与并行处理器存储器2822耦合。在至少一个实施例中,可以经 由存储器交叉开关2816访问并行处理器存储器2822,所述存储器交叉开 关2816可以接收来自处理集群阵列2812以及I/O单元2804的存储器请求。 在至少一个实施例中,存储器交叉开关2816可以经由存储器接口2818访 问并行处理器存储器2822。在至少一个实施例中,存储器接口2818可以 包括多个分区单元(例如,分区单元2820A、分区单元2820B到分区单元 2820N),其可各自耦合至并行处理器存储器2822的一部分(例如,存储 单元)。在至少一个实施例中,多个分区单元2820A-2820N为配置为等于 存储单元的数量,使得第一分区单元2820A具有对应的第一存储器单元 2824A,第二分区单元2820B具有对应的存储单元2824B,第N分区单元 2820N具有对应的第N存储器单元2824N。在至少一个实施例中,分区单 元2820A-2820N的数量可以不等于存储设备的数量。
在至少一个实施例中,存储器单元2824A-2824N可以包括各种类型 的存储器设备,包括动态随机存取存储器(DRAM)或图形随机存取存储 器,例如同步图形随机存取存储器(SGRAM),包括图形双倍数据速率(GDDR)存储器。在至少一个实施例中,存储器单元2824A-2824N还可 包括3D堆叠存储器,包括但不限于高带宽存储器(HBM)。在至少一个 实施例中,可以跨存储器单元2824A-2824N来存储诸如帧缓冲区或纹理映 射的渲染目标,从而允许分区单元2820A-2820N并行地写入每个渲染目标 的部分,以有效地使用并行处理器存储器2822的可用带宽。在至少一个实 施例中,可以排除并行处理器存储器2822的本地实例,以有利于利用系统 存储器与本地高速缓存存储器结合的统一存储器设计。
在至少一个实施例中,处理集群阵列2812的集群2814A-2814N中的 任何一个都可以处理将被写入并行处理器存储器2822内的任何存储器单 元2824A-2824N中的数据。在至少一个实施例中,存储器交叉开关2816 可以配置为将每个集群2814A-2814N的输出传输到任何分区单元 2820A-2820N或另一个集群2814A-2814N,集群2814A-2814N可以对输出 执行其他处理操作。在至少一个实施例中,每个集群2814A-2814N可以通 过存储器交叉开关2816与存储器接口2818通信,以从各种外部存储设备 读取或写入各种外部存储设备。在至少一个实施例中,存储器交叉开关 2816具有到存储器接口2818的连接以与I/O单元2804通信,以及到并行 处理器存储器2822的本地实例的连接,从而使不同处理集群2814A-2814N内的处理单元与系统存储器或不是并行处理单元2802本地的其他存储器 进行通信。在至少一个实施例中,存储器交叉开关2816可以使用虚拟通道 来分离集群2814A-2814N和分区单元2820A-2820N之间的业务流。
在至少一个实施例中,可以在单个插入卡上提供并行处理单元2802 的多个实例,或者可以将多个插入卡互连。在至少一个实施例中,并行处 理单元2802的不同实例可以配置成相互操作,即使不同实例具有不同数量 的处理核心,不同数量的本地并行处理器存储器和/或其他配置差异。例如, 在至少一个实施例中,并行处理单元2802的一些实例可以包括相对于其他 实例而言更高精度的浮点单元。在至少一个实施例中,结合并行处理单元2802或并行处理器2800的一个或更多个实例的系统可以以各种配置和形 式因素来实现,包括但不限于台式机、膝上型计算机或手持式个人计算机、 服务器、工作站、游戏机和/或嵌入式系统。
图28B是根据至少一个实施例的分区单元2820的框图。在至少一个 实施例中,分区单元2820是图28A的分区单元2820A-2820N之一的实例。 在至少一个实施例中,分区单元2820包括L2高速缓存2821、帧缓冲区接 口2825和光栅操作单元(“ROP”)2826。L2高速缓存2821是读/写高 速缓存,其配置成执行从存储器交叉开关2816和ROP 2826接收的加载和存储操作。在至少一个实施例中,L2高速缓存2821将读取未命中和紧急 回写请求输出到帧缓冲区接口2825以进行处理。在至少一个实施例中,还 可以经由帧缓冲区接口2825将更新发送到帧缓冲区以进行处理。在至少一 个实施例中,帧缓冲区接口2825与并行处理器存储器中的存储器单元(诸 如图28的存储器单元2824A-2824N(例如,在并行处理器存储器2822内)) 之一相互作用。
在至少一个实施例中,ROP 2826是一种处理单元,其执行光栅操作, 诸如模版、z测试、混合等。在至少一个实施例中,ROP 2826然后输出存 储在图形存储器中的处理后的图形数据。在至少一个实施例中,ROP 2826 包括压缩逻辑以压缩被写入存储器的深度或颜色数据并解压缩从存储器读 取的深度或颜色数据。在至少一个实施例中,压缩逻辑可以是利用多种压 缩算法中的一种或更多种的无损压缩逻辑。ROP 2826执行的压缩逻辑可以 基于要压缩的数据的统计特性而变化。例如,在至少一个实施例中,基于 每图块基础上的深度和颜色数据执行增量颜色压缩。
在至少一个实施例中,ROP 2826包括在每个处理集群内(例如,图 28的集群2814A-2814N),而不是在分区单元2820内。在至少一个实施 例中,通过存储器交叉开关2816而不是像素片段数据传输对像素数据的读 取和写入请求。在至少一个实施例中,经处理的图形数据可以在显示设备 上(诸如图27的一个或更多个显示设备2710之一)显示,由处理器2702 路由以供进一步处理,或者由图28A的并行处理器2800内的处理实体之 一路由以供进一步处理。
图28C是根据至少一个实施例的并行处理单元内的处理集群2814的 框图。在至少一个实施例中,处理集群是图28的处理集群2814A-2814N 之一的实例。在至少一个实施例中,一个或更多个处理集群2814中的一个 或更多个可以配置成并行执行许多线程,其中“线程”是指在特定的一组 输入数据上执行的特定程序的实例。在至少一个实施例中,单指令多数据 (SIMD)指令发布技术用于支持大量线程的并行执行而无需提供多个独立 的指令单元。在至少一个实施例中,使用单指令多线程(SIMT)技术来支 持并行执行大量一般同步的线程,这使用了公共指令单元,该公共指令单 元配置成向每个处理集群内的一组处理引擎发出指令。
在至少一个实施例中,可以通过将处理任务分配给SIMT并行处理器 的管线管理器2832来控制处理集群2814的操作。在至少一个实施例中, 管线管理器2832从图28的调度器2810接收指令,通过图形多处理器2834 和/或纹理单元2836管理这些指令的执行。在至少一个实施例中,图形多 处理器2834是SIMT并行处理器的示例性实例。然而,在至少一个实施例 中,处理集群2814内可以包括不同架构的各种类型的SIMT并行处理器。 在至少一个实施例中,在处理集群2814内可以包括图形多处理器2834的 一个或更多个实例。在至少一个实施例中,图形多处理器2834可以处理数 据,并且数据交叉开关2840可以用于将处理后的数据分发到多个可能的目 的(包括其他着色器单元)地之一。在至少一个实施例中,管线管理器2832 可以通过指定要针对数据交叉开关2840分配的处理数据的目的地来促进处理数据的分配。
在至少一个实施例中,处理集群2814内的每个图形多处理器2834 可以包括相同的一组功能执行逻辑(例如,算术逻辑单元、负载存储单元 等)。在至少一个实施例中,可以以管线方式配置功能执行逻辑,其中可 以在先前的指令完成之前发出新的指令。在至少一个实施例中,功能执行 逻辑支持多种操作,包括整数和浮点算术、比较操作、布尔运算、移位和 各种代数函数的计算。在至少一个实施例中,可以利用相同的功能单元硬 件来执行不同的操作,并且可以存在功能单元的任何组合。
在至少一个实施例中,传送到处理集群2814的指令构成线程。在至 少一个实施例中,跨一组并行处理引擎执行的一组线程是线程组。在至少 一个实施例中,线程组在不同的输入数据上执行程序。在至少一个实施例 中,线程组内的每个线程可被分配给图形多处理器2834内的不同处理引擎。 在至少一个实施例中,线程组可包括比图形多处理器2834内的多个处理引 擎更少的线程。在至少一个实施例中,当线程组包括的线程数少于处理引擎的数量时,一个或更多个处理引擎在正在处理该线程组的循环期间可能 是空闲的。在至少一个实施例中,线程组还可以包括比图形多处理器2834 内的多个处理引擎更多的线程。在至少一个实施例中,当线程组包括比图 形多处理器2834内的处理引擎更多的线程时,可以在连续的时钟周期内执 行处理。在至少一个实施例中,可以在图形多处理器2834上同时执行多个 线程组。
在至少一个实施例中,图形多处理器2834包括内部高速缓存存储器, 以执行加载和存储操作。在至少一个实施例中,图形多处理器2834可以放 弃内部高速缓存并使用处理集群2814内的高速缓存存储器(例如,L1高 速缓存2848)。在至少一个实施例中,每个图形多处理器2834还可以访 问分区单元(例如,图28的分区单元2820A-2820N)内的L2高速缓存, 这些分区单元在所有处理集群2814之间共享并且可以用于在线程之间传 输数据。在至少一个实施例中,图形多处理器2834还可以访问片外全局存 储器,其可以包括本地并行处理器存储器和/或系统存储器中的一个或更多 个。在至少一个实施例中,并行处理单元2802外部的任何存储器都可以用 作全局存储器。在至少一个实施例中,处理集群2814包括图形多处理器 2834的多个实例,它们可以共享可以存储在L1高速缓存2848中的公共指 令和数据。
在至少一个实施例中,每个处理集群2814可以包括配置成将虚拟地 址映射为物理地址的存储器管理单元(“MMU”)2845。在至少一个实施 例中,MMU 2845的一个或更多个实例可以驻留在图28的存储器接口2818 内。在至少一个实施例中,MMU 2845包括一组页表条目(PTE),其用 于将虚拟地址映射到图块的物理地址以及可选地映射到高速缓存存储器行。 在至少一个实施例中,MMU 2845可以包括地址转换后备缓冲区(TLB) 或可以驻留在图形多处理器2834或L1高速缓存或处理集群2814内的高 速缓存。在至少一个实施例中,处理物理地址以分配表面数据访问局部性, 以便在分区单元之间进行有效的请求交织。在至少一个实施例中,高速缓 存行索引可以用于确定对高速缓存行的请求是命中还是未命中。
在至少一个实施例中,可以配置处理集群2814,使得每个图形多处 理器2834耦合到纹理单元2836,以执行纹理映射操作,例如,确定纹理 样本位置、读取纹理数据以及过滤纹理数据。在至少一个实施例中,根据 需要从内部纹理L1高速缓存(未示出)或从图形多处理器2834内的L1 高速缓存中读取纹理数据,并从L2高速缓存、本地并行处理器存储器或系统存储器中获取纹理数据。在至少一个实施例中,每个图形多处理器 2834将处理后的任务输出到数据交叉开关2840,以将处理后的任务提供给 另一处理集群2814以进行进一步处理或将处理后的任务存储在L2高速缓 存、本地并行处理器存储器、或经由存储器交叉开关2816的系统存储器中。 在至少一个实施例中,preROP 2842(光栅前操作单元)配置成从图形多处 理器2834接收数据,将数据引导至ROP单元,该ROP单元可以与本文所 述的分区单元(例如,图28的分区单元2820A-2820N)一起定位。在至少 一个实施例中,PreROP 2842单元可以执行用于颜色混合的优化、组织像 素颜色数据以及执行地址转换。
推理和/或训练逻辑1515用于执行与一个或更多个实施例相关联的推 理和/或训练操作。本文结合图15A和/或图15B提供关于推理和/或训练逻 辑1515的细节。在至少一个实施例中,推理和/或训练逻辑1515可以在图 形处理集群2814中使用,用于至少部分地基于使用本文描述的神经网络训 练操作、神经网络功能和/或架构或神经网络用例计算的权重参数来进行推 理或预测操作。
图28D示出了根据至少一个实施例的图形多处理器2834。在至少一 个实施例中,图形多处理器2834与处理集群2814的管线管理器2832耦合。 在至少一个实施例中,图形多处理器2834具有执行管线,该执行管线包括 但不限于指令高速缓存2852、指令单元2854、地址映射单元2856、寄存 器文件2858、一个或更多个通用图形处理单元(GPGPU)核心2862和一 个或更多个加载/存储单元2866。GPGPU核心2862和加载/存储单元2866 与高速缓存存储器2872和共享存储器2870通过存储器和高速缓存互连 2868耦合。
在至少一个实施例中,指令高速缓存2852从管线管理器2832接收要 执行的指令流。在至少一个实施例中,将指令高速缓存在指令高速缓存 2852中并将其分派以供指令单元2854执行。在一个实施例中,指令单元 2854可以分派指令作为线程组(例如,线程束),将每个线程组分配给 GPGPU核心2862内的不同执行单元。在至少一个实施例中,指令可以通过在统一地址空间内指定地址来访问任何本地、共享或全局地址空间。在 至少一个实施例中,地址映射单元2856可以用于将统一地址空间中的地址 转换成可以由加载/存储单元2866访问的不同的存储器地址。
在至少一个实施例中,寄存器文件2858为图形多处理器2834的功能 单元提供了一组寄存器。在至少一个实施例中,寄存器文件2858为连接到 图形多处理器2834的功能单元(例如,GPGPU核心2862、加载/存储单元 2866)的数据路径的操作数提供了临时存储。在至少一个实施例中,在每 个功能单元之间划分寄存器文件2858,使得为每个功能单元分配寄存器文 件2858的专用部分。在至少一个实施例中,寄存器文件2858在图形多处 理器2834正在执行的不同线程束之间划分。
在至少一个实施例中,GPGPU核心2862可以各自包括用于执行图形 多处理器2834的指令的浮点单元(FPU)和/或整数算术逻辑单元(ALU)。 GPGPU核心2862在架构上可以相似或架构可能有所不同。在至少一个实 施例中,GPGPU核心2862的第一部分包括单精度FPU和整数ALU,而 GPGPU核心的第二部分包括双精度FPU。在至少一个实施例中,FPU可 以实现用于浮点算法的IEEE 754-2808标准或启用可变精度浮点算法。在 至少一个实施例中,图形多处理器2834可以另外包括一个或更多个固定功 能或特殊功能单元,以执行特定功能,诸如复制矩形或像素混合操作。在 至少一个实施例中,GPGPU核心中的一个或更多个也可以包括固定或特殊 功能逻辑。
在至少一个实施例中,GPGPU核心2862包括能够对多组数据执行单 个指令的SIMD逻辑。在至少一个实施例中,GPGPU核心2862可以物理 地执行SIMD4、SIMD8和SIMD16指令,并且在逻辑上执行SIMD1、SIMD2 和SIMD32指令。在至少一个实施例中,用于GPGPU核心的SIMD指令 可以在编译时由着色器编译器生成,或者在执行针对单程序多数据(SPMD) 或SIMT架构编写和编译的程序时自动生成。在至少一个实施例中,可以 通过单个SIMD指令来执行为SIMT执行模型配置的程序的多个线程。例 如,在至少一个实施例中,可以通过单个SIMD8逻辑单元并行执行执行相 同或相似操作的八个SIMT线程。
在至少一个实施例中,存储器和高速缓存互连2868是将图形多处理 器2834的每个功能单元连接到寄存器文件2858和共享存储器2870的互连 网络。在至少一个实施例中,存储器和高速缓存互连2868是交叉开关互连, 其允许加载/存储单元2866在共享存储器2870和寄存器文件2858之间实 现加载和存储操作。在至少一个实施例中,寄存器文件2858可以以与 GPGPU核心2862相同的频率操作,从而在GPGPU核心2862和寄存器文 件2858之间进行数据传输的延迟非常低。在至少一个实施例中,共享存储 器2870可以用于启用在图形多处理器2834内的功能单元上执行的线程之 间的通信。在至少一个实施例中,高速缓存存储器2872可以用作例如数据 高速缓存,以高速缓存在功能单元和纹理单元2836之间通信的纹理数据。 在至少一个实施例中,共享存储器2870也可以用作程序管理的高速缓存。 在至少一个实施例中,除了存储在高速缓存存储器2872中的自动高速缓存 的数据之外,在GPGPU核心2862上执行的线程还可以以编程方式将数据 存储在共享存储器中。
在至少一个实施例中,如本文所述的并行处理器或GPGPU通信地耦 合到主机/处理器核心,以加速图形操作、机器学习操作、图案分析操作以 及各种通用GPU(GPGPU)功能。在至少一个实施例中,GPU可以通过 总线或其他互连(例如,诸如PCIe或NVLink的高速互连)通信地耦合到 主机处理器/核心。在至少一个实施例中,GPU可以与核心集成在相同的封 装或芯片上,并通过内部处理器总线/互连(例如,封装或芯片内部的)通 信地耦合到核心。在至少一个实施例中,不管GPU连接的方式如何,处理 器核心可以以工作描述符中包含的命令/指令序列的形式向GPU分配工作。 在至少一个实施例中,GPU然后使用专用电路/逻辑来有效地处理这些命令 /指令。
推理和/或训练逻辑1515用于执行与一个或更多个实施例相关联的推 理和/或训练操作。本文结合图15A和/或图15B提供关于推理和/或训练逻 辑1515的细节。在至少一个实施例中,推理和/或训练逻辑1515可以在图 形多处理器2834中用于至少部分地基于使用本文描述的神经网络训练操 作、神经网络功能和/或架构或神经网络用例计算的权重参数来进行推理或 预测操作。
图29示出了根据至少一个实施例的多GPU计算系统2900。在至少 一个实施例中,多GPU计算系统2900可以包括经由主机接口开关2904 耦合到多个通用图形处理单元(GPGPU)2906A-D的处理器2902。在至少 一个实施例中,主机接口开关2904是将处理器2902耦合到PCI快速 (express)总线的PCI快速交换设备,处理器2902可以通过PCI快速总 线与GPGPU 2906A-D通信。GPGPU 2906A-D可以经由一组高速点对点 GPU到GPU链路2916互连。在至少一个实施例中,GPU到GPU链路2916 经由专用GPU链路连接到每个GPGPU 2906A-D。在至少一个实施例中, P2P GPU链路2916使得能够在每个GPGPU 2906A-D之间进行直接通信,而无需通过处理器2902所连接的主机接口总线2904进行通信。在至少一 个实施例中,在GPU到GPU业务被定向到P2P GPU链路2916的情况下, 主机接口总线2904保持可用于系统存储器访问或例如经由一个或更多个 网络设备与多GPU计算系统2900的其他实例通信。尽管在至少一个实施 例中,GPGPU 2906A-D经由主机接口开关2904连接到处理器2902,但是 在至少一个实施例中,处理器2902包括对P2P GPU链接2916的直接支持, 并且可以直接连接到GPGPU 2906A-D。
推理和/或训练逻辑1515用于执行与一个或多个实施例相关联的推理 和/或训练操作。本文结合图15A和/或图15B提供关于推理和/或训练逻辑 1515的细节。在至少一个实施例中,推理和/或训练逻辑1515可以在多GPU 计算系统2900中用于至少部分地基于使用本文描述的神经网络训练操作、 神经网络功能和/或架构或神经网络用例计算的权重参数来进行推理或预 测操作。
图30是根据至少一个实施例的图形处理器3000的框图。在至少一个 实施例中,图形处理器3000包括环形互连3002、管线前端3004、媒体引 擎3037和图形核心3080A-3080N。在至少一个实施例中,环形互连3002 将图形处理器3000耦合到其他处理单元,包括其他图形处理器或一个或更 多个通用处理器核心。在至少一个实施例中,图形处理器3000是集成在多 核处理系统内的许多处理器之一。
在至少一个实施例中,图形处理器3000经由环形互连3002接收数批 命令。在至少一个实施例中,输入命令由管线前端3004中的命令流化器 3003解释。在至少一个实施例中,图形处理器3000包括可扩展执行逻辑, 以经由一个或更多个图形核心3080A-3080N执行3D几何处理和媒体处理。 在至少一个实施例中,对于3D几何处理命令,命令流化器3003将命令提 供给几何管线3036。在至少一个实施例中,对于至少一些媒体处理命令, 命令流化器3003将命令提供给视频前端3034,其耦合有媒体引擎3037。 在至少一个实施例中,媒体引擎3037包括用于视频和图像后处理的视频质 量引擎(VQE)3030,以及用于提供硬件加速媒体数据编码和解码的多格 式编码/解码(MFX)3033引擎。在至少一个实施例中,几何管线3036和 媒体引擎3037各自生成用于由至少一个图形核心3080A提供的线程执行 资源的执行线程。
在至少一个实施例中,图形处理器3000包括在模块化核心 3080A-3080N(有时称为核心切片)中起重要作用的可伸缩线程执行资源, 每个模块化核心具有多个子核心3050A-550N,3060A-3060N(有时称为核 心子切片)。在至少一个实施例中,图形处理器3000可以具有任意数量的 图形核心3080A至3080N。在至少一个实施例中,图形处理器3000包括具有至少第一子核心3050A和第二子核心3060A的图形核心3080A。在至 少一个实施例中,图形处理器3000是具有单个子核心(例如,3050A)的 低功率处理器。在至少一个实施例中,图形处理器3000包括多个图形核心 3080A-3080N,每个图形核心包括一组第一子核心3050A-3050N和一组第 二子核心3060A-3060N。在至少一个实施例中,第一子核心3050A-3050N 中的每个子核心至少包括第一组执行单元3052A-3052N和媒体/纹理采样 器3054A-3054N。在至少一个实施例中,第二子核心3060A-3060N中的每 个子核心至少包括第二组执行单元3062A-3062N和采样器3064A-3064N。 在至少一个实施例中,每个子核心3050A-3050N,3060A-3060N共享一组 共享资源3070A-3070N。在至少一个实施例中,共享资源包括共享高速缓 冲存储器和像素操作逻辑。
推理和/或训练逻辑1515用于执行与一个或多个实施例相关联的推理 和/或训练操作。本文结合图15A和/或图15B提供关于推理和/或训练逻辑 1515的细节。在至少一个实施例中,推理和/或训练逻辑1515可以在图形 处理器3000中用于至少部分地基于使用本文描述的神经网络训练操作、神 经网络功能和/或架构或神经网络用例计算的权重参数来进行推理或预测 操作。
图31是示出根据至少一个实施例的用于处理器3100的微架构的框图, 该处理器3100可以包括执行指令的逻辑电路。在至少一个实施例中,处理 器3100可以执行指令,包括x86指令、ARM指令、用于专用集成电路(ASIC) 的专用指令等。在至少一个实施例中,处理器3100可以包括用于存储封装 数据的寄存器,例如作为加利福尼亚州圣克拉拉市英特尔公司采用MMX 技术启用的微处理器中的64位宽MMXTM寄存器。在至少一个实施例中, 整数和浮点数形式可用的MMX寄存器可以与封装的数据元素一起运行, 所述封装的数据元素伴随单指令多数据(“SIMD”)和流式SIMD扩展 (“SSE”)指令。在至少一个实施例中,与SSE2、SSE3、SSE4、AVX 或更高版本(一般称为“SSEx”)技术有关的128位宽XMM寄存器可以 保存此类封装数据操作数。在至少一个实施例中,处理器3100可以执行指 令以加速机器学习或深度学习算法、训练或推理。
在至少一个实施例中,处理器3100包括有序前端(“前端”)3101, 以提取要执行的指令并准备稍后在处理器管线中使用的指令。在至少一个 实施例中,前端3101可以包括几个单元。在至少一个实施例中,指令预取 器3126从存储器中获取指令并将指令提供给指令解码器3128,指令解码 器3128又对指令进行解码或解释。例如,在至少一个实施例中,指令解码 器3128将接收到的指令解码为机器可执行的所谓的“微指令”或“微操作” (也称为“微操作”或“微指令”)的一个或更多个操作。在至少一个实 施例中,指令解码器3128将指令解析为操作码以及相应的数据和控制字段, 其可以由微架构用来使用以根据至少一个实施例来执行操作。在至少一个 实施例中,追踪高速缓存3130可以将解码的微指令组装成微指令队列3134 中的程序排序的序列或追踪以供执行。在至少一个实施例中,当追踪高速缓存3130遇到复杂指令时,微码ROM 3132提供完成操作所需的微指令。
在至少一个实施例中,可以将一些指令转换成单个微操作,而另一些 指令则需要几个微操作来完成全部操作。在至少一个实施例中,如果需要 多于四个的微指令来完成一条指令,则指令解码器3128可以访问微码 ROM 3132以执行指令。在至少一个实施例中,可以将指令解码为少量的 微指令以在指令解码器3128处进行处理。在至少一个实施例中,如果需要 多个微指令完成操作,则可以将指令存储在微码ROM 3132中。在至少一 个实施例中,追踪高速缓存器3130参考入口点可编程逻辑阵列(“PLA”) 以确定正确的微指令指针,用于根据至少一个实施例从微码ROM 3132读 取微码序列以完成一个或更多个指令。在至少一个实施例中,在微码ROM 3132完成对指令的微操作排序之后,机器的前端3101可以恢复从追踪高 速缓存3130获取微操作。
在至少一个实施例中,乱序执行引擎(“乱序引擎”)3103可以准 备用于执行的指令。在至少一个实施例中,乱序执行逻辑具有多个缓冲区, 以使指令流平滑并重新排序,以在指令沿管线下降并被调度执行时优化性 能。在至少一个实施例中,乱序执行引擎3103包括但不限于分配器/寄存 器重命名器3140、存储器微指令队列3142、整数/浮点微指令队列3144、 存储器调度器3146、快速调度器3102、慢速/通用浮点调度器(“慢速/通 用FP调度器”)3104和简单浮点调度器(“简单FP调度器”)3106。在 至少一个实施例中,快速调度器3102、慢速/通用浮点调度器3104和简单 浮点调度器3106也统称为“微指令调度器3102、3104、3106”。在至少 一个实施例中,分配器/寄存器重命名器3140分配每个微指令按顺序执行 所需要的机器缓冲区和资源。在至少一个实施例中,分配器/寄存器重命名 器3140将逻辑寄存器重命名为寄存器文件中的条目。在至少一个实施例中, 分配器/寄存器重命名器3140还为两个微指令队列之一中的每个微指令分 配条目,存储器微指令队列3142用于存储器操作和整数/浮点微指令队列3144用于非存储器操作,在存储器调度器3146和微指令调度器3102、3104、 3106的前面。在至少一个实施例中,微指令调度器3102、3104、3106基于它们的从属输入寄存器操作数源的就绪性和需要完成的执行资源微指令 的可用性来确定何时准备好执行微指令。在至少一个实施例中,至少一个 实施例的快速调度器3102可以在主时钟周期的每个一半上调度,而慢速/ 通用浮点调度器3104和简单浮点调度器3106可以在每个主处理器时钟周 期调度一次。在至少一个实施例中,微指令调度器3102、3104、3106对调 度端口进行仲裁,以调度用于执行的微指令。
在至少一个实施例中,执行块b11包括但不限于整数寄存器文件/支 路网络3108、浮点寄存器文件/支路网络(“FP寄存器文件/支路网络”) 3110、地址生成单元(“AGU”)3112和3114、快速算术逻辑单元(“快 速ALU”)3116和3118、慢速算术逻辑单元(“慢速ALU”)3120、浮 点ALU(“FP”)3122和浮点移动单元(“FP移动”)3124。在至少一 个实施例中,整数寄存器文件/支路网络3108和浮点寄存器文件/旁路网络 3110在本文中也称为“寄存器文件3108、3110”。在至少一个实施例中, AGU 3112和3114、快速ALU 3116和3118、慢速ALU3120、浮点ALU 3122 和浮点移动单元3124在本文中也称为“执行单元3112、3114、3116、3118、 3120、3122和3124”。在至少一个实施例中,执行块b11可以包括但不限 于任意数量(包括零)和类型的寄存器文件、支路网络、地址生成单元和 执行单元(以任何组合)。
在至少一个实施例中,寄存器文件3108、3110可以布置在微指令调 度器3102、3104、3106与执行单元3112、3114、3116、3118、3120、3122 和3124之间。在至少一个实施例中,整数寄存器文件/支路网络3108执行 整数运算。在至少一个实施例中,浮点寄存器文件/支路网络3110执行浮 点操作。在至少一个实施例中,寄存器文件3108、3110中的每一个可以包 括但不限于支路网络,该支路网络可以绕过或转发尚未写入寄存器文件中 的刚刚完成的结果到新的从属对象。在至少一个实施例中,寄存器文件 3108、3110可以彼此通信数据。在至少一个实施例中,整数寄存器文件/ 支路网络3108可以包括但不限于两个单独的寄存器文件、一个寄存器文件 用于低阶32位数据,第二寄存器文件用于高阶32位数据。在至少一个实 施例中,浮点寄存器文件/支路网络3110可以包括但不限于128位宽的条目,因为浮点指令通常具有宽度为64至128位的操作数。
在至少一个实施例中,执行单元3112、3114、3116、3118、3120、 3122、3124可以执行指令。在至少一个实施例中,寄存器文件3108、3110 存储微指令需要执行的整数和浮点数据操作数值。在至少一个实施例中, 处理器3100可以包括但不限于任何数量的执行单元3112、3114、3116、 3118、3120、3122、3124及其组合。在至少一个实施例中,浮点ALU 3122和浮点移动单元3124,可以执行浮点、MMX、SIMD、AVX和SSE或其 他操作,包括专门的机器学习指令。在至少一个实施例中,浮点ALU 3122 可以包括但不限于64位乘64位浮点除法器,以执行除法、平方根和余数 微操作。在至少一个实施例中,可以用浮点硬件来处理涉及浮点值的指令。 在至少一个实施例中,可以将ALU操作传递给快速ALU 3116、3118。在 至少一个实施例中,快速ALUS 3116、3118可以以半个时钟周期的有效延 迟执行快速操作。在至少一个实施例中,大多数复杂的整数运算进入慢速 ALU 3120,因为慢速ALU 3120可以包括但不限于用于长延迟类型操作的 整数执行硬件,例如乘法器、移位、标志逻辑和分支处理。在至少一个实 施例中,存储器加载/存储操作可以由AGUS 3112、3114执行。在至少一 个实施例中,快速ALU 3116、快速ALU 3118和慢速ALU 3120可以对64 位数据操作数执行整数运算。在至少一个实施例中,可以实现快速ALU 3116、快速ALU 3118和慢速ALU 3120以支持包括十六、三十二、128、 256等的各种数据位大小。在至少一个实施例中,浮点ALU 3122和浮点移 动单元3124可以实现为支持具有各种宽度的位的一定范围的操作数。在至 少一个实施例中,浮点ALU 3122和浮点移动单元3124可以结合SIMD和 多媒体指令对128位宽封装数据操作数进行操作。
在至少一个实施例中,微指令调度器3102、3104、3106在父加载完 成执行之前调度从属操作。在至少一个实施例中,由于可以在处理器3100 中推测性地调度和执行微指令,处理器3100还可以包括用于处理存储器未 命中的逻辑。在至少一个实施例中,如果数据高速缓存中的数据加载未命 中,则可能存在在管线中正在运行的从属操作,其使调度器暂时没有正确 的数据。在至少一个实施例中,一种重放机制追踪踪并重新执行使用不正确数据的指令。在至少一个实施例中,可能需要重放从属操作并且可以允 许完成独立操作。在至少一个实施例中,处理器的至少一个实施例的调度 器和重放机制也可以设计为捕获用于文本串比较操作的指令序列。
在至少一个实施例中,术语“寄存器”可以指代可以用作识别操作数 的指令的一部分的机载处理器存储位置。在至少一个实施例中,寄存器可 以是那些可以从处理器外部使用的寄存器(从程序员的角度来看)。在至 少一个实施例中,寄存器可能不限于特定类型的电路。相反,在至少一个 实施例中,寄存器可以存储数据、提供数据并执行本文描述的功能。在至 少一个实施例中,本文描述的寄存器可以通过处理器内的电路使用多种不 同技术来实现,例如专用物理寄存器、使用寄存器重命名动态分配的物理 寄存器、专用和动态分配的物理寄存器的组合等。在至少一个实施例中, 整数寄存器存储32位整数数据。至少一个实施例的寄存器文件还包含八个 用于封装数据的多媒体SIMD寄存器。
推理和/或训练逻辑1515用于执行与一个或更多个实施例相关联的推 理和/或训练操作。本文结合图15A和/或图15B提供关于推理和/或训练逻 辑1515的细节。在至少一个实施例中,可以将推理和/或训练逻辑815的 部分或全部并入执行块3111以及示出或未示出的其他存储器或寄存器。例 如,在至少一个实施例中,本文描述的训练和/或推理技术可以使用执行块 3111中示出的一个或更多个ALU。此外,权重参数可以存储在片上或片外 存储器和/或寄存器(示出或未示出)中,该寄存器和/或寄存器配置执行块 3111的ALU以执行一种或更多种本文所述的机器学习算法、神经网络架 构、用例或训练技术。
图32示出了根据至少一个实施例的深度学习应用处理器3200。在至 少一个实施例中,深度学习应用处理器3200使用指令,如果由深度学习应 用处理器3200执行,则指令使深度学习应用处理器3200执行贯穿本公开 描述的一些或全部过程和技术。在至少一个实施例中,深度学习应用处理 器3200是专用集成电路(ASIC)。在至少一个实施例中,应用处理器3200 执行矩阵乘法运算或者“硬连线”到硬件中,作为执行一个或更多个指令 或两者的结果。在至少一个实施例中,深度学习应用处理器3200包括但不 限于处理集群3210(1)-3210(12)、芯片间链路(“ICL”)3220(1) -3220(12)、芯片间控制器(“ICC”)3230(1)-3230(2)、第二代高 带宽存储器(“HBM2”)3240(1)-3240(4)、存储器控制器(“Mem Ctrlrs”)3242(1)-3242(4)、高带宽存储器物理层(“HBM PHY”) 3244(1)-3244(4)、管理控制器中央处理单元(“管理控制器CPU”) 3250、串行外围设备接口、内部集成电路和通用输入/输出块(“SPI、I2C、 GPIO”)3260,外围组件互连快速控制器和直接存储器访问块(“PCIe 控制器和DMA”)3270、以及十六通道外围组件互连快速端口(“PCI Express x 16”)3280。
在至少一个实施例中,处理集群3210可以执行深度学习操作,包括 基于一种或更多种训练技术计算的权重参数的推理或预测操作,包括本文 所述的那些技术。在至少一个实施例中,每个处理集群3210可以包括但不 限于任何数量和类型的处理器。在至少一个实施例中,深度学习应用处理 器3200可以包括任何数量和类型的处理集群3200。在至少一个实施例中, 芯片间链路3220是双向的。在至少一个实施例中,芯片间链路3220和芯 片间控制器3230使多个深度学习应用处理器3200能够交换信息,包括从 执行一个或更多个神经网络中体现的一种或更多种机器学习算法而产生的 激活信息。在至少一个实施例中,深度学习应用处理器3200可以包括任意 数量(包括零)和类型的ICL 3220和ICC 3230。
在至少一个实施例中,HBM2 3240提供总共32GB的存储器。HBM2 3240(i)与存储器控制器3242(i)和HBM PHY 3244(i)都相关联。在 至少一个实施例中,任何数量的HBM23240可以提供任何类型和总量的高 带宽存储器,并且可以与任何数量(包括零)和类型的存储器控制器3242 和HBM PHY 3244相关联。在至少一个实施例中,可以用任何数量和类型的块替换SPI、I2C、GPIO 3260、PCIe控制器和DMA 3270和/或PCIe3280, 以任何技术上可行的方式实现任何数量和类型的通信标准。
推理和/或训练逻辑1515用于执行与一个或更多个实施例相关联的推 理和/或训练操作。本文结合图15A和/或图15B提供关于推理和/或训练逻 辑1515的细节。在至少一个实施例中,深度学习应用处理器用于训练机器 学习模型(例如神经网络),以预测或推理提供给深度学习应用处理器3200 的信息。在至少一个实施例中,深度学习应用处理器3200用于基于已经由 另一处理器或系统或由深度学习应用处理器3200训练的经训练的机器学习模型(例如,神经网络)来推理或预测信息。在至少一个实施例中,处 理器3200可以用于执行本文所述的一个或更多个神经网络用例。
图33是根据至少一个实施例的神经形态处理器3300的框图。在至少 一个实施例中,神经形态处理器3300可以从神经形态处理器3300外部的 源接收一个或更多个输入。在至少一个实施例中,这些输入可以被传输到 神经形态处理器3300内的一个或更多个神经元3302。在至少一个实施例 中,可以使用包括一个或更多个算术逻辑单元(ALU)的电路或逻辑来实 现神经元3302及其组件。在至少一个实施例中,神经形态处理器3300可 以包括但不限于成千上万个神经元3302的实例,但是可以使用任何合适数 量的神经元3302。在至少一个实施例中,神经元3302的每个实例可以包 括神经元输入3304和神经元输出3306。在至少一个实施例中,神经元3302 可以生成可以传输到神经元3302的其他实例的输入的输出。在至少一个实 施例中,神经元输入3304和神经元输出3306可以经由突触3308互连。
在至少一个实施例中,神经元3302和突触3308可以互连,使得神经 形态处理器3300操作以处理或分析由神经形态处理器3300接收的信息。 在至少一个实施例中,当通过神经元输入3304接收到的输入超过阈值时, 神经元3302可以发送输出脉冲(或“触发”或“峰值”)。在至少一个实 施例中,神经元3302可以对在神经元输入3304处接收到的信号进行求和 或积分。例如,在至少一个实施例中,神经元3302可以实现为有泄漏的积 分-触发神经元,其中如果求和(称为“膜电位”)超过阈值,则神经元 3302可以使用诸如sigmoid或阈值函数的传递函数来产生输出(或“触发”)。 在至少一个实施例中,泄漏的积分-触发神经元可以将在神经元输入3304 处接收到的信号求和成膜电位,并且可以应用衰减因子(或泄漏)以减小 膜电位。在至少一个实施例中,如果在神经元输入3304处接收到足够快以 超过阈值的多个输入信号(即,在膜电势衰减得太低而不能触发之前), 则泄漏的积分-触发神经元可能会触发。在至少一个实施例中,神经元3302 可以使用接收输入、将输入积分到膜电位、并衰减膜电位的电路或逻辑来 实现。在至少一个实施例中,可以对输入求平均,或者可以使用任何其他 合适的传递函数。此外,在至少一个实施例中,神经元3302可以包括但不 限于当将传递函数应用于神经元输入3304的结果超过阈值时在神经元输 出3306处产生输出尖峰的比较器电路或逻辑。在至少一个实施例中,一旦 神经元3302触发,它可以通过例如将膜电位复位为0或另一合适的默认值 来忽略先前接收的输入信息。在至少一个实施例中,一旦膜电位被重置为 0,则神经元3302可以在合适的时间段(或修复期)之后恢复正常操作。
在至少一个实施例中,神经元3302可以通过突触3308互连。在至少 一个实施例中,突触3308可以操作以将从第一神经元3302的输出的信号 传输到第二神经元3302的输入。在至少一个实施例中,神经元3302可以 在一个以上的突触3308实例上传输信息。在至少一个实施例中,神经元输 出3306的一个或更多个实例可以通过突触3308的实例连接到同一神经元3302中神经元输入3304的实例。在至少一个实施例中,相对于突触3308 的那个实例,神经元3302的实例产生要在突触3308的实例上传输的输出 可以被称为“突触前神经元”。在至少一个实施例中,相对于突触3308 的实例,神经元3302的实例接收通过突触3308的实例传输的输入可以被 称为“突触后神经元”。在至少一个实施例中,关于突触3308的各种实例, 因为神经元3302的实例可以接收来自一个或更多个突触3308实例的输入, 并且还可以通过一个或更多个突触3308实例传输输出,因此神经元3302 的单个实例可以既是“突触前神经元”又是“突触后神经元”。
在至少一个实施例中,神经元3302可以被组织成一层或更多层。神 经元3302的每个实例可以具有一个神经元输出3306,该神经元输出3306 可以通过一个或更多个突触3308扇出到一个或更多个神经元输入3304。 在至少一个实施例中,第一层3310中的神经元3302的神经元输出3306 可以连接到第二层3312中的神经元3302的神经元输入3304。在至少一个 实施例中,层3310可以被称为“前馈层”。在至少一个实施例中,在第一 层3310的实例中神经元3302的每个实例可以扇出到第二层3312中的神经 元3302的每个实例。在至少一个实施例中,第一层3310可以被称为“完 全连接的前馈层”。在至少一个实施例中,在第二层3312的每个实例中的 神经元3302的每个实例扇出到少于在第三层3314中的神经元3302的所有 实例。在至少一个实施例中,第二层3312可以被称为“稀疏连接的前馈层”。 在至少一个实施例中,第二层3312中的神经元3302可以扇出到多个其他 层中的神经元3302,包括(相同)第二层3312中的神经元3302。在至少 一个实施例中,第二层3312可以被称为“循环层”。在至少一个实施例中, 神经形态处理器3300可以包括但不限于循环层和前馈层的任何合适的组 合,包括但不限于稀疏连接的前馈层和完全连接的前馈层。
在至少一个实施例中,神经形态处理器3300可以包括但不限于可重 新配置的互连架构或专用硬连线互连,以将突触3308连接到神经元3302。 在至少一个实施例中,神经形态处理器3300可以包括但不限于电路或逻辑, 其根据神经网络拓扑结构和神经元扇入/扇出,允许根据需要将突触分配给 不同神经元3302。例如,在至少一个实施例中,可以使用互连结构(诸如 片上网络)或通过专用连接将突触3308连接到神经元3302。在至少一个 实施例中,可以使用电路或逻辑来实现突触互连及其组件
图34是根据至少一个实施例的处理系统的框图。在至少一个实施例 中,系统3400包括一个或更多个处理器3402和一个或更多个图形处理器 3408,并且可以是单处理器台式机系统、多处理器工作站系统或具有大量 处理器3402或处理器核心3407的服务器系统。在至少一个实施例中,系 统3400是结合在片上系统(SoC)集成电路内的处理平台,用于在移动、 手持或嵌入式设备中使用。
在至少一个实施例中,系统3400可以包括或结合在基于服务器的游 戏平台中,包括游戏和媒体控制台、移动游戏控制台、手持游戏控制台或 在线游戏控制台的游戏控制台。在至少一个实施例中,系统3400是移动电 话、智能电话、平板计算设备或移动互联网设备。在至少一个实施例中, 处理系统3400还可包括与可穿戴设备耦合或集成在可穿戴设备中,例如智 能手表可穿戴设备、智能眼镜设备、增强现实设备或虚拟现实设备。在至 少一个实施例中,处理系统3400是电视或机顶盒设备,其具有一个或更多 个处理器3402以及由一个或更多个图形处理器3408生成的图形界面。
在至少一个实施例中,一个或更多个处理器3402各自包括一个或更 多个处理器核心3407,以处理指令,这些指令在被执行时执行针对系统和 用户软件的操作。在至少一个实施例中,一个或更多个处理器核心3407 中的每一个被配置为处理特定指令集3409。在至少一个实施例中,指令集 3409可以促进复杂指令集计算(CISC)、精简指令集计算(RISC)、或 通过超长指令字(VLIW)进行计算。在至少一个实施例中,处理器核心 3407每个可以处理不同的指令集3409,该指令集3409可以包括促进对其 他指令集进行仿真的指令。在至少一个实施例中,处理器核心3407还可以 包括其他处理设备,例如数字信号处理器(DSP)。
在至少一个实施例中,处理器3402包括高速缓冲存储器3404。在至 少一个实施例中,处理器3402可以具有单个内部高速缓存或多个级别的内 部高速缓存。在至少一个实施例中,高速缓冲存储器在处理器3402的各个 组件之间共享。在至少一个实施例中,处理器3402还使用外部高速缓存(例 如,三级(L3)高速缓存或最后一级高速缓存(LLC))(未示出),外 部高速缓存可以使用已知的高速缓存一致性技术在处理器内核3407之间 共享该处理器。在至少一个实施例中,寄存器文件3406附加地包括在处理 器3402中,该处理器可以包括用于存储不同类型的数据的不同类型的寄存 器(例如,整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器)。 在至少一个实施例中,寄存器文件3406可以包括通用寄存器或其他寄存器。
在至少一个实施例中,一个或更多个处理器3402与一个或更多个接 口总线3410耦合,以在处理器3402与系统3400中的其他组件之间传输通 信信号,例如地址、数据或控制信号。在至少一个实施例中,接口总线3410 可以是处理器总线,例如直接媒体接口(DMI)总线的版本。在至少一个 实施例中,接口3410不限于DMI总线,并且可以包括一个或更多个外围 组件互连总线(例如,PCI、PCI快速)、存储器总线或其他类型的接口总 线。在至少一个实施例中,一个或更多个处理器3402包括集成存储器控制 器3416和平台控制器集线器3430。在至少一个实施例中,存储器控制器 3416促进存储器设备与系统3400的其他组件之间的通信,而平台控制器 集线器(PCH)3430通过本地I/O总线提供到I/O设备的连接。
在至少一个实施例中,存储器设备3420可以是动态随机存取存储器 (DRAM)设备、静态随机存取存储器(SRAM)设备、闪存设备、相变 存储器设备或具有适当的性能的某些其他存储器设备以用作进程存储器。 在至少一个实施例中,存储器设备3420可以用作系统3400的系统存储器, 以存储在一个或多个处理器3402执行应用或处理时使用的数据3422和指 令3421。在至少一个实施例中,存储器控制器3416还与可选的外部图形 处理器3412耦合,该外部图形处理器3412可以与处理器3402中的一个或 更多个图形处理器3408通信以执行图形和媒体操作。在至少一个实施例中, 显示设备3411可以连接至一个或更多个处理器3402。在至少一个实施例 中,显示设备3411可以包括例如在移动电子设备或膝上型计算机设备或便 携式计算机中的内部显示设备或通过显示接口(例如,DisplayPort等)连接的外部显示设备中的一个或更多个。在至少一个实施例中,显示设备 3411可以包括头戴式显示器(HMD),诸如用于虚拟现实(VR)应用或 增强现实(AR)应用的立体显示设备。
在至少一个实施例中,平台控制器集线器3430使外围设备能够通过 高速I/O总线连接到存储设备3420和处理器3402。在至少一个实施例中, I/O外围设备包括但不限于音频控制器3446、网络控制器3434、固件接口 3428、无线收发器3426、触摸传感器3425、数据存储设备3424(例如, 硬盘驱动器、闪存等)。在至少一个实施例中,数据存储设备3424可以经 由存储接口(例如,SATA)或经由诸如外围部件互连总线(例如,PCI, PCI快速)的外围总线来连接。在至少一个实施例中,触摸传感器3425 可以包括触摸屏传感器、压力传感器或指纹传感器。在至少一个实施例中, 无线收发器3426可以是Wi-Fi收发器、蓝牙收发器或诸如3G、4G或长期 演进(LTE)收发器的移动网络收发器。在至少一个实施例中,固件接口3428使能与系统固件的通信,并且可以是例如统一的可扩展固件接口 (UEFI)。在至少一个实施例中,网络控制器3434可以启用到有线网络 的网络连接。在至少一个实施例中,高性能网络控制器(未示出)与接口 总线3410耦合。在至少一个实施例中,音频控制器3446是多通道高清晰 度音频控制器。在至少一个实施例中,系统3400包括可选的传统I/O控制 器3440,用于将传统(例如,个人系统2(PS/2))设备耦合到系统。在 至少一个实施例中,平台控制器集线器3430还可以连接到一个或更多个通 用串行总线(USB)控制器3442,一个或更多个通用串行总线(USB)控 制器3442连接输入设备,诸如键盘和鼠标3443组合、相机3444或其他 USB输入设备。
在至少一个实施例中,可以将存储器控制器3416和平台控制器集线 器3430的实例集成到分立的外部图形处理器中,例如外部图形处理器3412。 在至少一个实施例中,平台控制器集线器3430和/或存储控制器3416可以 在一个或更多个处理器3402的外部。例如,在至少一个实施例中,系统 3400可以包括外部存储控制器3416和平台控制器集线器3430,其可以被 配置为存储控制器集线器和与一个或更多个处理器3402通信的系统芯片组内的外围控制器集线器。
推理和/或训练逻辑1515用于执行与一个或更多个实施例相关联的推 理和/或训练操作。在此结合图15A和/或图15B提供关于推理和/或训练逻 辑1515的细节。在至少一个实施例中,推理和/或训练逻辑1515的部分或 全部可以被合并到图形处理器3400中。例如,在至少一个实施例中,本文 描述的训练和/或推理技术可以使用体现在3D管线3412中的一个或更多个 ALU。此外,在至少一个实施例中,本文描述的推理和/或训练操作可以使 用除了图15A或图15B所示的逻辑之外的逻辑来完成。在至少一个实施例 中,权重参数可以存储在片上或片外存储器和/或寄存器(示出或未示出) 中,所述存储器和/或寄存器配置图形处理器3400的ALU以执行本文描述 的一种或更多种机器学习算法、神经网络架构、用例或训练技术。
图35是根据至少一个实施例的具有一个或多个处理器核心 3502A-3502N,集成存储器控制器3514和集成图形处理器3508的处理器 3500的框图。在至少一个实施例中,处理器3500可包括相当于和包括由 虚线框表示的附加核心3502N的附加核心。在至少一个实施例中,处理器 核心3502A-3502N中的每一个包括一个或更多个内部高速缓存单元 3504A-3504N。在至少一个实施例中,每个处理器核心还可以访问一个或 更多个共享高速缓存的单元3506。
在至少一个实施例中,内部高速缓存单元3504A-3504N和共享高速 缓存单元3506表示处理器3500内的高速缓存存储器层次结构。在至少一 个实施例中,高速缓存存储器单元3504A-3504N可以包括至少一级指令和 每个处理器核心和一个或更多个共享中级缓存级别中的数据缓存,例如级 别2(L2)、级别3(L3)、级别4(L4)或其他级别的缓存,其中在外部存储器之前的最高级别缓冲为归类为LLC。在至少一个实施例中,高速 缓存一致性逻辑维持各种高速缓存单元3506和3504A-3504N之间的一致 性。
在至少一个实施例中,处理器3500还可包括一组一个或更多个总线 控制器单元3516和系统代理核心3510。在至少一个实施例中,一个或更 多个总线控制器单元3516管理一组外围总线,例如一个或更多个PCI或 PCI快速总线。在至少一个实施例中,系统代理核心3510为各种处理器组 件提供管理功能。在至少一个实施例中,系统代理核心3510包括一个或更 多个集成存储器控制器3514,以管理对各种外部存储器设备(未示出)的 访问。
在至少一个实施例中,一个或更多个处理器核心3502A-3502N包括 对同时多线程的支持。在至少一个实施例中,系统代理核心3510包括用于 在多线程处理期间协调和操作核心3502A-3502N的组件。在至少一个实施 例中,系统代理核心3510可以另外包括功率控制单元(PCU),该功率控 制单元包括逻辑和组件以调节处理器核心3502A-3502N和图形处理器 3508的一个或更多个功率状态。
在至少一个实施例中,处理器3500另外包括图形处理器3508以执行 图形处理操作。在至少一个实施例中,图形处理器3508与共享高速缓存单 元3506和包括一个或更多个集成存储器控制器3514的系统代理核心3510 耦合。在至少一个实施例中,系统代理核心3510还包括用于驱动图形处理 器输出到一个或多个耦合的显示器的显示控制器3511。在至少一个实施例 中,显示控制器3511也可以是经由至少一个互连与图形处理器3508耦合的独立模块,或者可以集成在图形处理器3508内。
在至少一个实施例中,基于环的互连单元3512用于耦合处理器3500 的内部组件。在至少一个实施例中,可以使用替代性互连单元,例如点对 点互连、交换的互连或其他技术。在至少一个实施例中,图形处理器3508 经由I/O链路3513与环形互连3512耦合。
在至少一个实施例中,I/O链路3513代表多种I/O互连中的至少一种, 包括便于各种处理器组件与高性能嵌入式存储器模块3518(例如,eDRAM 模块)之间的通信的封装上I/O互连。在至少一个实施例中,处理器核心 3502A-3502N和图形处理器3508中的每一个使用嵌入式存储器模块3518 作为共享的最后一级高速缓存。
在至少一个实施例中,处理器核心3502A-3502N是执行公共指令集 架构的同质核心。在至少一个实施例中,处理器核心3502A-3502N在指令 集架构(ISA)方面是异构的,其中一个或更多个处理器核心3502A-3502N 执行一个公共指令集,而一个或更多个其他处理器核心3502A-35-02N执 行公共指令集或不同指令集的子集。在至少一个实施例中,就微架构而言, 处理器核心3502A-3502N是异构的,其中具有相对较高功耗的一个或更多 个核心与具有较低功耗的一个或更多个功率核心耦合。在至少一个实施例 中,处理器3500可以被实现在一个或更多个芯片上或被实现为SoC集成 电路。
推理和/或训练逻辑1515用于执行与一个或更多个实施例相关联的推 理和/或训练操作。在此结合图15A和/或图15B提供关于推理和/或训练逻 辑1515的细节。在至少一个实施例中,推论和/或训练逻辑1515的部分或 全部可以被并入图形处理器3510中。例如,在至少一个实施例中,本文描 述的训练和/或推论技术可以使用体现在3D管线3412、一个或更多个图形 核心3515A、共享功能逻辑3516、一个或更多个图形核心3515B、共享功 能逻辑3520或其他逻辑中的一个或更多个ALU。此外,在至少一个实施 例中,本文描述的推理和/或训练操作可以使用除图15A或图15B所示的 逻辑之外的逻辑来完成。在至少一个实施例中,权重参数可以存储在片上 或片外存储器和/或寄存器(示出或未示出)中,所述寄存器和/或寄存器配 置图形处理器3510的ALU以执行本文介绍的一种或更多种机器学习算法、神经网络架构、用例或训练技术。
图36是图形处理器3600的框图,该图形处理器可以是分立的图形处 理单元,或者可以是集成有多个处理核心的图形处理器。在至少一个实施 例中,图形处理器3600经由存储器映射的I/O接口采用置于存储器中的命 令与图形处理器3600上的寄存器通信。在至少一个实施例中,图形处理器 3600包括用于访问存储器的存储器接口3614。在至少一个实施例中,存储 器接口3614是到本地存储器、一个或更多个内部高速缓存、一个或更多个 共享的外部高速缓存和/或到系统存储器的接口。
在至少一个实施例中,图形处理器3600还包括用于将显示输出数据 驱动到显示设备3620的显示控制器3602。在至少一个实施例中,显示控 制器3602包括用于显示设备3620的一个或更多个覆盖平面的硬件和多层 视频或用户界面元素的构成。在至少一个实施例中,显示设备3620可以是 内部或外部显示设备。在至少一个实施例中,显示设备3620是头戴式显示 设备,例如虚拟现实(VR)显示设备或增强现实(AR)显示设备。在至 少一个实施例中,图形处理器3600包括视频编解码器引擎3606,以将媒 体编码、解码或转码到一种或更多种媒体编码格式,从一种或更多种媒体 编码格式编码、解码或转码,或在一种或多种媒体编码格式之间进行编码、 解码或转码,一种或更多种媒体编码格式包括但不限于例如MPEG-2的运 动图像专家组(MPEG)格式,例如H.264/MPEG-4AVC的高级视频编码 (AVC)格式,以及美国电影电视工程师协会(SMPTE)421M/VC-1, 和联合图像专家组(JPEG)格式(例如JPEG)和运动JPEG(MJPEG)格 式。
在至少一个实施例中,图形处理器3600包括块图像传送(BLIT)引 擎3604,以执行二维(2D)光栅化器操作,包括例如位边界块传送。但是, 在至少一个实施例中,使用图形处理引擎(GPE)3610的一个或更多个组 件来执行2D图形操作。在至少一个实施例中,GPE3610是用于执行包括 三维(3D)的图形操作和媒体操作的计算引擎。
在至少一个实施例中,GPE 3610包括用于执行3D操作的3D管线 3612,例如使用作用于3D图元形状(例如,矩形、三角形等)的处理功 能来渲染三维图像和场景。3D管线3612包括执行各种任务和/或产生到3D /媒体子系统3615的执行线程的可编程和固定功能元件。尽管3D管线3612 可用于执行媒体操作,但是在至少一个实施例中,GPE 3610也包括媒体管 线3616,媒体管线3616用于执行媒体操作,例如视频后处理和图像增强。
在至少一个实施例中,媒体管线3616包括固定功能或可编程逻辑单 元,以执行一个或更多个专用媒体操作,例如代替或代表视频编解码器引 擎3606的视频解码加速、视频去隔行和视频编码加速。在至少一个实施例 中,媒体管线3616还包括线程产生单元,以产生线程以在3D/媒体子系统 3615上执行。在至少一个实施例中,产生的线程对3D/媒体子系统3615 中包含的一个或更多个图形执行单元执行媒体操作的计算。
在至少一个实施例中,3D/媒体子系统3615包括用于执行由3D管线 3612和媒体管线3616产生的线程的逻辑。在至少一个实施例中,3D管线 3612和媒体管线3616将线程执行请求发送到3D/媒体子系统3615,其包 括用于将各种请求仲裁和分派给可用线程执行资源的线程分派逻辑。在至 少一个实施例中,执行资源包括用于处理3D和媒体线程的图形执行单元 的阵列。在至少一个实施例中,3D/媒体子系统3615包括用于线程指令和 数据的一个或更多个内部高速缓存。在至少一个实施例中,子系统3615 还包括共享存储器,包括寄存器和可寻址存储器,以在线程之间共享数据 并存储输出数据。
推理和/或训练逻辑1515用于执行与一个或更多个实施例相关联的推 理和/或训练操作。本文结合图15A和/或图15B提供关于推理和/或训练逻 辑1515的细节。在至少一个实施例中,推论和/或训练逻辑1515的部分或 全部可以被并入图形处理器3600。例如,在至少一个实施例中,本文描述 的训练和/或推理技术可以使用包含在3D管线3612中的ALU中的一个或 更多个。此外,在至少一个实施例中,本文描述的推理和/或训练操作可以 使用不同于图15A或图15B所示的逻辑来完成。在至少一个实施例中,权 重参数可以存储在配置图形处理器3600的ALU以执行一种或更多种机器 学习算法、神经网络架构、用例或此处介绍的训练技术的片上或片外存储 器和/或寄存器(示出或未示出)中。
图37是根据至少一个实施例的图形处理器的图形处理引擎3710的框 图。在至少一个实施例中,图形处理引擎(GPE)3710是图36所示的GPE 3610的版本。在至少一个实施例中,媒体管线3616是可选的,并且可以 并非显然地包括在GPE 3710内。在至少一个实施例中,单独的媒体和/或 图像处理器耦合到GPE 3710。
在至少一个实施例中,GPE 3710耦合到命令流化器3703或包括命令 流化器3703,命令流化器3703向3D管线3612和/或媒体管线3616提供 命令流。在至少一个实施例中,命令流化器3703耦合到存储器,存储器可 以是系统内存,也可以是内部高速缓存存储器和共享高速缓存存储器中的 一个或更多个。在至少一个实施例中,命令流化器3703从存储器接收命令, 并且将命令发送到3D管线3612和/或媒体管线3616。在至少一个实施例 中,命令是从环形缓冲器获取的指令、图元或微操作,环形缓冲器存储用 于3D管线3612和媒体管线3616的命令。在至少一个实施例中,环形缓 冲器可以另外包括批命令缓冲器,该批命令缓冲器存储多个命令的批次。 在至少一个实施例中,用于3D管线3612的命令还可以包括对存储在存储 器中的数据的引用,例如但不限于用于3D管线3612的顶点和几何数据和 /或用于媒体管线3616的图像数据和存储器对象。在至少一个实施例中, 3D管线3612和媒体管线3616通过执行操作或通过将一个或更多个执行线 程分派到图形核心阵列3714来处理命令和数据。在至少一个实施例中,图 形核心阵列3714包括一个或更多个图形核心块(例如,图形核心3715A、 图形核心3715B),每个块包含一个或更多个图形核心。在至少一个实施 例中,每个图形核心包括一组图形执行资源以及固定功能纹理处理和/或机 器学习和人工智能加速逻辑,该组图形执行资源包括用于执行图形和计算 操作的通用和特定于图形的执行逻辑,固定功能纹理处理和/或机器学习和 人工智能加速逻辑包括推理和/或训练逻辑1515。
在至少一个实施例中,3D管线3612包括固定功能和可编程逻辑,以 通过处理指令和将执行线程分派给图形核心阵列3714来处理一个或更多 个着色器程序,例如顶点着色器、几何着色器、像素着色器、片段着色器, 计算着色器或其他着色器程序。在至少一个实施例中,图形核心阵列3714 提供统一的执行资源块,以用于处理着色器程序。在至少一个实施例中, 图形核心阵列3714中的图形核心3715A-3715B内的多用途执行逻辑(例 如,执行单元)包括对各种3D API着色器语言的支持,并且可以执行与 多个着色器相关联的多个同时执行线程。
在至少一个实施例中,图形核心阵列3714还包括执行逻辑,用于执 行诸如视频和/或图像处理之类的媒体功能。在至少一个实施例中,除了图 形处理操作之外,执行单元还包括可编程以执行并行通用计算操作的通用 逻辑。
在至少一个实施例中,由在图形核心阵列3714上执行的线程生成的 输出数据可以将数据输出到统一返回缓冲区(URB)3718中的存储器。URB 3718可以存储多个线程的数据。在至少一个实施例中,URB 3718可以用 于在图形核心阵列3714上执行的不同线程之间发送数据。在至少一个实施 例中,URB 3718可以另外用于图形核心阵列3714上的线程与共享功能逻 辑3720内的固定功能逻辑之间的同步。
在至少一个实施例中,图形核心阵列3714是可扩展的,使得图形核 心阵列3714包括可变数量的图形核心,每个图形核心基于GPE 3710的目 标功率和性能水平具有可变数量的执行单元。在至少一个实施例中,执行 资源是动态可扩展的,使得可以根据需要启用或禁用执行资源。
在至少一个实施例中,图形核心阵列3714耦合到共享功能逻辑3720, 该共享功能逻辑3720包括在图形核心阵列3714中的图形核心之间共享的 多个资源。在至少一个实施例中,由共享功能逻辑3720执行的共享功能在 硬件逻辑单元中体现,这些硬件逻辑单元向图形核心阵列3714提供专门的 补充功能。在至少一个实施例中,共享功能逻辑3720包括但不限于采样器 3721、数学运算器3722和线程间通信(ITC)3723逻辑。在至少一个实施 例中,一个或更多个高速缓存3725被包括在共享功能逻辑3720中或耦合 到共享功能逻辑3720。
在至少一个实施例中,如果对专用功能的需求不足以包括在图形核心 阵列3714中,则使用共享功能。在至少一个实施例中,在共享功能逻辑 3720中使用专用功能的单个实例并且在图形核心阵列3714中其他执行资 源之间共享专用功能的单个实例。在至少一个实施例中,在图形核心阵列 3714内的共享功能逻辑3716中可以包括由图形核心阵列3714广泛使用的 共享功能逻辑3720中的特定共享功能。在至少一个实施例中,图形核心阵列3714内的共享功能逻辑3716可以包括共享功能逻辑3720内的一些或全 部逻辑。在至少一个实施例中,可以在图形核心阵列3714的共享功能逻辑 3716内复制共享功能逻辑3720内的所有逻辑元素。在至少一个实施例中, 排除了共享功能逻辑3720,而支持图形核心阵列3714内共享功能逻辑3716。
推理和/或训练逻辑1515用于执行与一个或更多个实施例相关联的推 理和/或训练操作。本文结合图15A和/或图15B提供关于推理和/或训练逻 辑1515的细节。在至少一个实施例中,推理和/或训练逻辑1515的部分或 全部可以被并入图形处理器3710中。例如,在至少一个实施例中,本文描 述的训练和/或推理技术可以使用包含在图37中的3D管线3612、一个或 更多个图形核心3715A、共享功能逻辑3716、一个或更多个图形核心3715B、共享功能逻辑3720或其他逻辑中的一个或更多个ALU。此外,在至少一 个实施例中,可以使用除图15A或图15B中所示的逻辑之外的逻辑来完成 本文所述的推理和/或训练操作。在至少一个实施例中,权重参数可以存储 在片上或片外存储器和/或寄存器(示出或未示出)中,所述片上或片外存 储器和/或寄存器配置图形处理器3710的ALU以执行一种或更多种机器学 习算法、神经网络架构,用例或本文描述的训练技术。
图38是根据本文所述的至少一个实施例的图形处理器核心3800的硬 件逻辑的框图。在至少一个实施例中,图形处理器核心3800被包括在图形 核心阵列内。在至少一个实施例中,图形处理器核心3800(有时称为核心 切片)可以是模块化图形处理器内的一个或更多个图形核心。在至少一个 实施例中,图形处理器核心3800是一个图形核心切片的示例,并且本文所 述的图形处理器可以基于目标功率和性能包络线包括多个图形核心切片。在至少一个实施例中,每个图形核心3800可以包括与多个子核心 3801A-3801F耦合的固定功能块3830,也称为子切片,其包括通用和固定 功能逻辑的模块块。
在至少一个实施例中,固定功能块3830包括几何/固定功能管线3836, 例如,在较低性能和/或较低功率的图形处理器实施方式中,该几何/固定功 能管线3836可以由图形处理器3800中的所有子核心共享。在至少一个实 施例中,几何/固定功能管线3836包括3D固定功能管线、视频前端单元, 线程产生器和线程分派器以及管理统一返回缓冲区的统一返回缓冲区管理 器。
在至少一个实施例中,固定功能块3830还包括图形SoC接口3837、 图形微控制器3838和媒体管线3839。在固定的至少一个实施例中,图形 SoC接口3837提供了图形核心3800以及片上集成电路系统中的其他处理 器核心之间的接口。在至少一个实施例中,图形微控制器3838是可编程子 处理器,其可配置为管理图形处理器3800的各种功能,包括线程分派、调 度和抢占。在至少一个实施例中,媒体管线3839包括有助于对包括图像和 视频数据的多媒体数据进行解码、编码、预处理和/或后处理的逻辑。在至 少一个实施例中,媒体管线3839经由对子核心3801-3801F内的计算或采 样逻辑的请求来实现媒体操作。
在至少一个实施例中,SoC接口3837使图形核心3800能够与通用应 用处理器核心(例如,CPU)和/或SoC内的其他组件通信,包括存储器层 次结构元素,诸如共享的最后一级高速缓存、系统RAM和/或嵌入式片上 或封装DRAM。在至少一个实施例中,SoC接口3837还可以使得能够与SoC内的固定功能设备(例如,相机成像管线)进行通信,并且使得能够 使用和/或实现可以在图形核心3800和SoC内部的CPU之间共享的全局存 储器原子。在至少一个实施例中,SoC接口3837还可以实现用于图形核心 3800的电源管理控制,并且启用图形核心3800的时钟域与SoC内的其他 时钟域之间的接口。在至少一个实施例中,SoC接口3837使得能够从命令 流转化器和全局线程分派器接收命令缓冲区,其配置为向图形处理器内的一个或更多个图形核心中的每一个提供命令和指令。在至少一个实施例中, 当要执行媒体操作时,可以将命令和指令分派给媒体管线3839,或者当要 执行图形处理操作时,可以将其分配给几何形状和固定功能管线(例如, 几何形状和固定功能管线3836、几何形状和固定功能管线3814)。
在至少一个实施例中,图形微控制器3838可以被配置为对图形核心 3800执行各种调度和管理任务。在至少一个实施例中,图形微控制器3838 可以在子核心3801A-3801F中的执行单元(EU)阵列3802A-3802F、 3804A-3804F内的各种图形并行引擎上执行图形和/或计算工作负载调度。 在至少一个实施例中,在包括图形核心3800的SoC的CPU核心上执行的 主机软件可以提交多个图形处理器门铃之一的工作负载,其调用适当的图 形引擎上的调度操作。在至少一个实施例中,调度操作包括确定接下来要 运行哪个工作负载、将工作负载提交给命令流转化器、抢先在引擎上运行 的现有工作负载、监控工作负载的进度以及在工作负载完成时通知主机软 件。在至少一个实施例中,图形微控制器3838还可以促进图形核心3800 的低功率或空闲状态,从而为图形核心3800提供在图形核心3800内独立 于操作系统和/或系统上的图形驱动程序软件的跨低功率状态转换的保存 和恢复寄存器的能力。
在至少一个实施例中,图形核心3800可以具有比所示的子核心 3801A-3801F多或少达N个模块化子核心。对于每组N个子核心,在至少 一个实施例中,图形核心3800还可以包括共享功能逻辑3810、共享和/或 高速缓存存储器3812、几何/固定功能管线3814以及附加的固定功能逻辑 3816以加速各种图形和计算处理操作。在至少一个实施例中,共享功能逻 辑3810可以包括可由图形核心3800内的每个N个子核心共享的逻辑单元 (例如,采样器、数学和/或线程间通信逻辑)。在至少一个实施例中,固 定、共享和/或缓存存储器3812可以是图形核心3800内的N个子核心 3801A-3801F的最后一级高速缓存,并且还可以用作可由多个子核心访问 的共享存储器。在至少一个实施例中,可以包括几何/固定功能管线3814 来代替固定功能块3830内的几何/固定功能管线3836,并且可以包括相同 或相似的逻辑单元。
在至少一个实施例中,图形核心3800包括附加的固定功能逻辑3816, 其可以包括供图形核心3800使用的各种固定功能加速逻辑。在至少一个实 施例中,附加的固定功能逻辑3816包括用于仅位置着色中使用的附加的几 何管线。在仅位置着色中,存在至少两个几何管线,而在几何/固定功能管 线3816、3836内的完整几何管线和剔除管线中,其是可以包括在附加的固 定功能逻辑3816中的附加几何管线。在至少一个实施例中,剔除管线是完整几何管线的修整版。在至少一个实施例中,完整管线和剔除管线可以执 行应用程序的不同实例,每个实例具有单独的环境。在至少一个实施例中, 仅位置着色可以隐藏被丢弃的三角形的长剔除运行,从而在某些情况下可 以更早地完成着色。例如,在至少一个实施例中,附加固定功能逻辑3816 中的剔除管线逻辑可以与主应用程序并行执行位置着色器,并且通常比完 整管线更快地生成关键结果,因为剔除管线获取并遮蔽顶点的位置属性, 无需执行光栅化和将像素渲染到帧缓冲区。在至少一个实施例中,剔除管 线可以使用生成的临界结果来计算所有三角形的可见性信息,而与这些三 角形是否被剔除无关。在至少一个实施例中,完整管线(在这种情况下可 以称为重播管线)可以消耗可见性信息来跳过剔除的三角形以仅遮盖最终 传递到光栅化阶段的可见三角形。
在至少一个实施例中,附加的固定功能逻辑3816还可包括机器学习 加速逻辑,例如固定功能矩阵乘法逻辑,用于实现包括用于机器学习训练 或推理的优化。
在至少一个实施例中,在每个图形子核心3801A-3801F内包括一组 执行资源,其可用于响应于图形管线、媒体管线或着色器程序的请求来执 行图形、媒体和计算操作。在至少一个实施例中,图形子核心3801A-3801F 包括多个EU阵列3802A-3802F、3804A-3804F,线程分派和线程间通信 (TD/IC)逻辑3803A-3803F,3D(例如,纹理)采样器3805A-3805F,媒体采样器3806A-3806F,着色器处理器3807A-3807F和共享本地存储器 (SLM)3808A-3808F。EU阵列3802A-3802F、3804A-3804F每个都包含 多个执行单元,这些执行单元是通用图形处理单元,能够为图形、媒体或 计算操作提供服务,执行浮点和整数/定点逻辑运算,包括图形、媒体或计 算着色器程序。在至少一个实施例中,TD/IC逻辑3803A-3803F为子核心 内的执行单元执行本地线程分派和线程控制操作,并促进在子核心的执行 单元上执行的线程之间的通信。在至少一个实施例中,3D采样器 3805A-3805F可以将与纹理或其他3D图形相关的数据读取到存储器中。 在至少一个实施例中,3D采样器可以基于与给定纹理相关联的配置的采样 状态和纹理格式来不同地读取纹理数据。在至少一个实施例中,媒体采样 器3806A-3806F可以基于与媒体数据相关联的类型和格式来执行类似的读 取操作。在至少一个实施例中,每个图形子核心3801A-3801F可以可替代 地包括统一的3D和媒体采样器。在至少一个实施例中,在每个子核心 3801A-3801F内的执行单元上执行的线程可以利用每个子核心内的共享本 地存储器3808A-3808F,以使在线程组内执行的线程能够使用片上存储器 的公共池来执行。
推理和/或训练逻辑1515用于执行与一个或更多个实施例相关联的推 理和/或训练操作。本文结合图15A和/或图15B提供关于推理和/或训练逻 辑1515的细节。在至少一个实施例中,推理和/或训练逻辑1515的部分或 全部可以被合并到图形处理器3810中。例如,在至少一个实施例中,本文 描述的训练和/或推理技术可以使用3D管线3810、图形微控制器3838、几 何和固定功能管线3814和3836或图35中的其他逻辑中体现的一个或更多 个ALU。此外,在至少一个实施例中,本文描述的推理和/或训练操作可 以使用除图15A或图15B所示的逻辑以外的逻辑来完成。在至少一个实施 例中,权重参数可以存储在片上或片外存储器和/或寄存器(示出或未示出) 中,所述权重参数配置图形处理器3800的ALU以执行本文介绍的一种或 更多种机器学习算法、神经网络架构、用例或训练技术。
图39A-图39B示出了根据至少一个实施例的包括图形处理器核心的 处理元件的阵列的线程执行逻辑3900。图39A示出了至少一个实施例,其 中使用了线程执行逻辑3900。图39B示出了根据至少一个实施例的执行单 元的示例性内部细节。
如图39A中所示,在至少一个实施例中,线程执行逻辑3900包括着 色器处理器3902、线程分派器3904、指令高速缓存3906、包括多个执行 单元3908A-3908N的可缩放执行单元阵列、采样器3910、数据高速缓存 3912和数据端口3914。在至少一个实施例中,可缩放执行单元阵列可以例 如基于工作负载的计算要求,通过启用或禁用一个或更多个执行单元(例 如,执行单元3908A、3908B、3908C、3908D、到3908N-1和3908N中的 任何一个)来动态缩放。在至少一个实施例中,可缩放执行单元通过链路 到每个执行单元的互连结构互连。在至少一个实施例中,线程执行逻辑 3900包括通过指令高速缓存3906、数据端口3914、采样器3910和执行单 元3908A-3908N中的一个或更多个到存储器(诸如系统存储器或高速缓存 存储器)的一个或更多个连接。在至少一个实施例中,每个执行单元(例 如3908A)是独立的可编程通用计算单元,其能够执行多个同时的硬件线 程,同时针对每个线程并行处理多个数据元素。在至少一个实施例中,执 行单元3908A-3908N的阵列可缩放以包括任意数量的单独执行单元。
在至少一个实施例中,执行单元3908A-3908N主要用于执行着色器 程序。在至少一个实施例中,着色器处理器3902可以处理各种着色器程序 并经由线程分派器3904来分派与着色器程序相关联的执行线程。在至少一 个实施例中,线程分派器3904包括用于仲裁来自图形和媒体管线的线程初 始化庆祝以及在执行单元3908A-3908N中的一个或更多个执行单元上实例 化请求的线程的逻辑。例如,在至少一个实施例中,几何管线可以将顶点、镶嵌或几何着色器分派到线程执行逻辑以进行处理。在至少一个实施例中, 线程分派器3904还可以处理来自执行着色器程序的运行时线程产生请求。
在至少一个实施例中,执行单元3908A-3908N支持一种指令集,该 指令集包括对许多标准3D图形着色器指令的本机支持,从而使图形库(例 如Direct 3D和OpenGL)中的着色器程序只需最少的翻译即可执行。在至 少一个实施例中,执行单元支持顶点和几何处理(例如,顶点程序、几何 程序、顶点着色器)、像素处理(例如,像素着色器、片段着色器)和通用处理(例如,计算和媒体着色器)。在至少一个实施例中,每个执行单 元3908A-3908N包括一个或更多个算术逻辑单元(ALU),能够执行多发 出单指令多数据(SIMD),并且多线程操作实现了高效的执行环境尽管有 更高的延迟存储器访问。在至少一个实施例中,每个执行单元内的每个硬 件线程具有专用的高带宽寄存器文件和相关的独立线程状态。在至少一个 实施例中,执行是每个时钟到管线的多次发出,管线能够进行整数、单精 度和双精度浮点运算、SIMD分支功能、逻辑运算、先验运算和其他其他 运算。在至少一个实施例中,在等待来自存储器或共享功能之一的数据时, 执行单元3908A-3908N内的依赖性逻辑使等待线程休眠直到返回了所请求 的数据。在至少一个实施例中,当等待线程正在休眠时,硬件资源可以专 用于处理其他线程。例如,在至少一个实施例中,在与顶点着色器操作相 关联的延迟期间,执行单元可以对像素着色器、片段着色器或另一类型的 着色器程序(包括不同的顶点着色器)执行操作。
在至少一个实施例中,执行单元3908A-3908N中的每一个执行单元 在数据元素的阵列上进行操作。在至少一个实施例中,多个数据元素是“执 行大小”或指令的通道数。在至少一个实施例中,执行通道是用于指令内 的数据元素访问、屏蔽和流控制的执行的逻辑单元。在至少一个实施例中, 多个通道可以独立于用于特定图形处理器的多个物理算术逻辑单元(ALU) 或浮点单元(FPU)。在至少一个实施例中,执行单元3908A-2708N支持 整数和浮点数据类型。
在至少一个实施例中,执行单元指令集包括SIMD指令。在至少一个 实施例中,各种数据元素可以作为封装数据类型存储在寄存器中,并且执 行单元将基于元素的数据大小来处理各种元素。例如,在至少一个实施例 中,当对256位宽的向量进行操作时,将向量的256位存储在寄存器中, 并且执行单元对向量进行操作,作为四个单独的64位封装数据元素(四字 (QW)大小数据元素)、八个单独的32位封装数据元素(双字(DW) 大小数据元素)、十六个单独的16位封装数据元素(单词(W)大小数据 元素)或三十二个单独的8位数据元素(字节(B)大小的数据元素)。 然而,在至少一个实施例中,不同的向量宽度和寄存器大小是可能的。
在至少一个实施例中,一个或更多个执行单元可以被组合成具有执行 对于融合EU的线程控制逻辑(3907A-3907N)的融合执行单元 3909A-3909N。在至少一个实施例中,可以将多个EU合并成一个EU组。 在至少一个实施例中,融合EU组中的每个EU可以配置为执行单独的 SIMD硬件线程。融合的EU组中的EU的数量可以根据各种实施例而变化。 在至少一个实施例中,每个EU可以执行各种SIMD宽度,包括但不限于 SIMD8、SIMD16和SIMD32。在至少一个实施例中,每个融合图形执行单 元3909A-3909N包括至少两个执行单元。例如,在至少一个实施例中,融 合执行单元3909A包括第一EU3908A、第二EU3908B以及第一EU3908A和第二EU3908B共有的线程控制逻辑3907A。在至少一个实施例中,线程 控制逻辑3907A控制在融合图形执行单元3909A上执行的线程,从而允许 融合执行单元3909A-3909N内的每个EU使用公共指令指针寄存器来执行。
在至少一个实施例中,一个或更多个内部指令高速缓存(例如3906) 被包括在线程执行逻辑3900中以高速缓存用于执行单元的线程指令。在至 少一个实施例中,包括一个或更多个数据高速缓存(例如3912)以在线程 执行期间高速缓存线程数据。在至少一个实施例中,包括采样器3910以提 供用于3D操作的纹理采样和用于媒体操作的媒体采样。在至少一个实施 例中,采样器3910包括专门的纹理或媒体采样功能,以在将采样数据提供 给执行单元之前在采样过程中处理纹理或媒体数据。
在执行期间,在至少一个实施例中,图形和媒体管线通过线程产生和 分派逻辑将线程发起请求发送到线程执行逻辑3900。在至少一个实施例中, 一旦一组几何对象已经被处理并光栅化成像素数据,则在着色器处理器 3902内的像素处理器逻辑(例如,像素着色器逻辑、片段着色器逻辑等) 被调用以进一步计算输出信息并且导致将结果写入输出表面(例如,颜色 缓冲区、深度缓冲区、模板缓冲区等)。在至少一个实施例中,像素着色 器或片段着色器计算要在光栅化对象上插值的各种顶点属性的值。在至少 一个实施例中,着色器处理器3902内的像素处理器逻辑然后执行应用程序 接口(API)提供的像素或片段着色器程序。在至少一个实施例中,为了 执行着色器程序,着色器处理器3902经由线程分派器3904将线程分派到 执行单元(例如3908A)。在至少一个实施例中,着色器处理器3902使用采样器3910中的纹理采样逻辑来访问存储在存储器中的纹理贴图中的纹 理数据。在至少一个实施例中,对纹理数据和输入几何数据的算术运算为 每个几何片段计算像素颜色数据,或者丢弃一个或更多个像素以进行进一 步处理。
在至少一个实施例中,数据端口3914提供了一种用于线程执行逻辑 3900的存储器访问机制,以将处理后的数据输出到存储器以在图形处理器 输出管线上进行进一步处理。在至少一个实施例中,数据端口3914包括或 耦合到一个或更多个高速缓存存储器(例如,数据高速缓存3912)以高速 缓存数据以便经由数据端口进行存储器访问。
如图39B所示,在至少一个实施例中,图形执行单元3908可以包括 指令获取单元3937、通用寄存器文件阵列(GRF)3924、架构寄存器文件 阵列(ARF)3926、线程仲裁器3922、发送单元3930、分支单元3932、 一组SIMD浮点单元(FPU)3934,以及在至少一个实施例中,一组专用 整数SIMD ALU 3935。在至少一个实施例中,GRF 3924和ARF 3926包括 一组与可以在图形执行单元3908中活跃的每个同时硬件线程相关联的通 用寄存器文件和架构寄存器文件。在至少一个实施例中,在ARF 3926中 维护每个线程架构状态,而在线程执行期间使用的数据存储在GRF 3924 中。在至少一个实施例中,每个线程的执行状态,包括每个线程的指令指 针,可以被保存在ARF 3926中的线程专用寄存器中。
在至少一个实施例中,图形执行单元3908具有一种架构,该架构是 同时多线程(SMT)和细粒度交错多线程(IMT)的组合。在至少一个实 施例中,架构具有模块化配置,该模块化配置可以在设计时基于同时线程 的目标数量和每个执行单元的寄存器数量来进行微调,其中执行单元资源 在用于执行多个同时线程的逻辑上分配。
在至少一个实施例中,图形执行单元3908可以共同发布多个指令, 每个指令可以是不同的指令。在至少一个实施例中,图形执行单元线程 3908的线程仲裁器3922可以将指令分派到发送单元3930、分支单元3942 或一个或更多个SIMD FPU 3934之一以供执行。在至少一个实施例中,每 个执行线程可以访问GRF 3924中的128个通用寄存器,其中每个寄存器 可以存储32个字节,可以作为32位数据元素的SIMD 8元素向量进行访 问。在至少一个实施例中,每个执行单元线程可以访问GRF 3924中的4KB, 尽管实施例不限于此,并且在其他实施例中可以提供更多或更少的寄存器 资源。在至少一个实施例中,尽管每个执行单元的线程数量也可以根据实 施例而变化,但是最多可以同时执行七个线程。在其中七个线程可以访问 4KB的至少一个实施例中,GRF 3924可以存储总共28KB。在至少一个 实施例中,灵活的寻址模式可以允许将寄存器一起寻址以有效地建立更宽 的寄存器或表示跨步的矩形块数据结构。
在至少一个实施例中,经由由消息传递发送单元3930执行的“发送” 指令来调度存储器操作、采样器操作和其他更长延迟的系统通信。在至少 一个实施例中,将分支指令分派到专用分支单元3932促进SIMD发散和最 终收敛。
在至少一个实施例中,图形执行单元3908包括一个或更多个SIMD 浮点单元(FPU)3934,以执行浮点操作。在至少一个实施例中,一个或 更多个FPU 3934还支持整数计算。在至少一个实施例中,一个或更多个 FPU 3934可以SIMD执行多达M个32位浮点(或整数)运算,或者SIMD 执行多达2M个16位整数或16位浮点运算。在至少一个实施例中,一个 或更多个FPU中的至少一个提供扩展的数学能力以支持高吞吐量的先验 数学函数和双精度64位浮点。在至少一个实施例中,还存在一组8位整数 SIMD ALU 3935,并且可以被专门优化以执行与机器学习计算相关的操作。
在至少一个实施例中,可以在图形子核心分组(例如,子切片)中实 例化图形执行单元3908的多个实例的阵列。在至少一个实施例中,执行单 元3908可以跨多个执行通道执行指令。在至少一个实施例中,在图形执行 单元3908上执行的每个线程在不同的通道上执行。
推理和/或训练逻辑1515用于执行与一个或更多个实施例相关联的推 理和/或训练操作。本文结合图15A和/或图15B提供关于推理和/或训练逻 辑1515的细节。在至少一个实施例中,推理和/或训练逻辑1515的部分或 全部可以被结合到执行逻辑3900中。此外,在至少一个实施例中,可以使 用除了图15A或图15B中所示的逻辑之外的逻辑来完成在此描述的推理和 /或训练操作。在至少一个实施例中,权重参数可以存储在片上或片外存储 器和/或寄存器(示出或未示出)中,其配置执行逻辑3900的ALU以执行 一种或更多种机器学习算法、神经网络架构、用例或本文介绍的训练技术。
图40示出了根据至少一个实施例的并行处理单元(“PPU”)4000。 在至少一个实施例中,PPU 4000配置有机器可读代码,该机器可读代码如 果由PPU 4000执行,则使得PPU4000执行贯穿本公开描述的一些或全部 过程和技术。在至少一个实施例中,PPU 4000是在一个或更多个集成电路 设备上实现的多线程处理器,并且利用多线程作为被设计为处理在多个线 程上并行执行的计算机可读指令(也称为机器可读指令或简单的指令)的 延迟隐藏技术。在至少一个实施例中,线程是指执行线程,并且是被配置 为由PPU 4000执行的一组指令的实例。在至少一个实施例中,PPU 4000 是图形处理单元(“GPU”),图形处理单元配置为实现用于处理三维(“3D”) 图形数据的图形渲染管道,以便生成用于在显示设备(诸如液晶显示器 (“LCD”)设备)上显示的二维(“2D”)图像数据。在至少一个实施 例中,PPU4000用于执行计算,诸如线性代数运算和机器学习运算。图 40仅出于说明性目的示出了示例并行处理器,并且应被解释为在本公开的 范围内设想的处理器架构的非限制性示例,并且可以采用任何适当的处理 器来对其进行补充和/或替代。
在至少一个实施例中,一个或更多个PPU 4000配置成加速高性能计 算(“HPC”)、数据中心和机器学习应用程序。在至少一个实施例中, PPU 4000配置成加速深度学习系统和应用程序,包括以下非限制性示例: 自动驾驶汽车平台、深度学习、高精度语音、图像、文本识别系统、智能 视频分析、分子模拟、药物发现、疾病诊断、天气预报、大数据分析、天 文学、分子动力学模拟、财务建模、机器人技术、工厂自动化、实时语言 翻译、在线搜索优化以及个性化用户推荐等。
在至少一个实施例中,PPU 4000包括但不限于输入/输出(“I/O”) 单元4006、前端单元4010、调度器单元4012、工作分配单元4014、集线 器4016、交叉开关(“Xbar”)4020、一个或更多个通用处理集群(“GPC”) 4018和一个或更多个分区单元(“存储器分区单元”)4022。在至少一个 实施例中,PPU 4000通过一个或更多个高速GPU互连(“GPU互连”) 4008连接到主机处理器或其他PPU 4000。在至少一个实施例中,PPU 4000 通过互连4002连接到主机处理器或其他外围设备。在一实施例中,PPU 4000连接到包括一个或更多个存储器设备(“存储器”)4004的本地存储 器。在至少一个实施例中,存储器设备4004包括但不限于一个或更多个动 态随机存取存储器(“DRAM”)设备。在至少一个实施例中,一个或更 多个DRAM设备配置和/或可配置为高带宽存储器(“HBM”)子系统, 并且在每个设备内堆叠有多个DRAM管芯。
在至少一个实施例中,高速GPU互连4008可以指代系统使用其来进 行缩放的基于线的多通道通信链路,并包括与一个或更多个中央处理单元 结合的一个或更多个PPU4000(“CPU”),支持PPU 4000和CPU之间 的缓存相干以及CPU主控。在至少一个实施例中,高速GPU互连4008 通过集线器4016将数据和/或命令传输到PPU 4000的其他单元,例如一个或更多个复制引擎、视频编码器、视频解码器、电源管理单元和/或在图40 中可能未明确示出的其他组件。
在至少一个实施例中,I/O单元4006配置为通过系统总线4002从主 机处理器(图40中未示出)发送和接收通信(例如,命令、数据)。在至 少一个实施例中,I/O单元4006直接通过系统总线4002或通过一个或更 多个中间设备(例如存储器桥)与主机处理器通信。在至少一个实施例中, I/O单元4006可以经由系统总线4002与一个或更多个其他处理器(例如 一个或更多个PPU 4000)通信。在至少一个实施例中,I/O单元4006实现 外围组件互连快速(“PCIe”)接口,用于通过PCIe总线进行通信。在至 少一个实施例中,I/O单元4006实现用于与外部设备通信的接口。
在至少一个实施例中,I/O单元4006对经由系统总线4002接收的分 组进行解码。在至少一个实施例中,至少一些分组表示被配置为使PPU 4000执行各种操作的命令。在至少一个实施例中,I/O单元4006如命令所 指定的那样将解码的命令发送到PPU 4000的各种其他单元。在至少一个 实施例中,命令被发送到前端单元4010和/或被发送到集线器4016或PPU 4000的其他单元,例如一个或更多个复制引擎、视频编码器、视频解码器、 电源管理单元等(图40中未明确示出)。在至少一个实施例中,I/O单元 4006配置为在PPU 4000的各种逻辑单元之间路由通信。
在至少一个实施例中,由主机处理器执行的程序在缓冲区中对命令流 进行编码,该缓冲区将工作负载提供给PPU 4000以进行处理。在至少一 个实施例中,工作负载包括指令和要由那些指令处理的数据。在至少一个 实施例中,缓冲区是可由主机处理器和PPU4000两者访问(例如,读/写) 的存储器中的区域—主机接口单元可以配置为访问经由I/O单元4006通过 系统总线4002传输的存储器请求连接到系统总线4002的系统存储器中的缓冲区。在至少一个实施例中,主机处理器将命令流写入缓冲区,然后将 指示命令流开始的指针发送给PPU 4000,使得前端单元4010接收指向一 个或更多个命令流指针并管理一个或更多个命令流,从命令流中读取命令 并将命令转发到PPU 4000的各个单元。
在至少一个实施例中,前端单元4010耦合到调度器单元4012,该调 度器单元4012配置各种GPC 4018以处理由一个或更多个命令流定义的任 务。在至少一个实施例中,调度器单元4012配置为追踪与调度器单元4012 管理的各种任务有关的状态信息,其中状态信息可以指示任务被分配给哪 个GPC 4018,任务是活跃的还是非活跃的,与任务相关联的优先级等等。 在至少一个实施例中,调度器单元4012管理在一个或更多个GPC 4018上 执行的多个任务。
在至少一个实施例中,调度器单元4012耦合到工作分配单元4014, 该工作分配单元4014配置为分派任务以在GPC 4018上执行。在至少一个 实施例中,工作分配单元4014追踪从调度器单元4012接收到的多个调度 任务并且工作分配单元4014管理每个GPC 4018的待处理任务池和活跃任 务池。在至少一个实施例中,待处理任务池包括多个时隙(例如32个时隙), 这些时隙包含分配给要由特定的GPC 4018处理的任务;活跃任务池可包 括用于由GPC 4018主动处理的任务的多个时隙(例如4个时隙),以使 随着GPC 4018中的一个完成任务的执行,该任务将从GPC 4018的活动任 务池中逐出,并且从待处理任务池中选择其他任务之一,并安排其在GPC 4018上执行。在至少一个实施例中,如果活跃任务在GPC 4018上处于空 闲状态,例如在等待数据依赖性解决时,则活跃任务从GPC 4018中驱逐 并返回到待处理任务池,同时选择了待处理任务池中的另一个任务并调度 在GPC 4018上执行。
在至少一个实施例中,工作分配单元4014经由XBar 4020与一个或 更多个GPC4018通信。在至少一个实施例中,XBar 4020是互连网络,其 将PPU 4000的许多单元耦合到PPU 4000的其他单元,并且可以配置为将 工作分配单元4014耦合到特定的GPC 4018。在至少一个实施例中,一个 或更多个PPU 4000的其他单元也可以通过集线器4016连接到XBar4020。
在至少一个实施例中,任务由调度器单元4012管理,并由工作分配 单元4014分配给GPC 4018之一。GPC 4018配置为处理任务并产生结果。 在至少一个实施例中,结果可以由GPC 4018中的其他任务消耗,通过XBar 4020路由到不同的GPC 4018或存储在存储器4004中。在至少一个实施例 中,结果可以通过分区单元4022写到存储器4004中,其实现了用于向存 储器4004写入数据或从存储器4004读取数据的存储器接口。在至少一个 实施例中,结果可以经由高速GPU互连4008传输到另一PPU 4004或CPU。 在至少一个实施例中,PPU4000包括但不限于U个分区单元4022,其等 于耦合到PPU 4000的分离且不同的存储设备4004的数量。在至少一个实 施例中,下面结合图42更详细地描述分区单元4022。
在至少一个实施例中,主机处理器执行驱动器核心,该驱动程序核心 实现应用程序编程接口(API),该应用程序编程接口使在主机处理器上 执行的一个或更多个应用程序能够调度操作以在PPU 4000上执行。在一 个实施例中,多个计算应用由PPU 4000同时执行,并且PPU 4000为多个 计算应用程序提供隔离、服务质量(“QoS”)和独立的地址空间。在至 少一个实施例中,应用程序生成指令(例如,以API调用的形式),该指 令使驱动器核心生成一个或更多个任务以供PPU 4000执行,并且驱动器 核心将任务输出至由PPU 4000处理的一个或更多个流。在至少一个实施 例中,每个任务包括一个或更多个相关线程组,其可以被称为线程束(warp)。 在至少一个实施例中,线程束包括可以并行执行的多个相关线程(例如32 个线程)。在至少一个实施例中,协作线程可以指代多个线程,包括用于 执行任务并且通过共享存储器交换数据的指令。在至少一个实施例中,结 合图42根据至少一个实施例更详细地描述了线程和协作线程。
推理和/或训练逻辑1515用于执行与一个或更多个实施例相关联的推 理和/或训练操作。本文结合图15A和/或图15B提供关于推理和/或训练逻 辑1515的细节。在至少一个实施例中,深度学习应用处理器用于训练机器 学习模型(诸如神经网络),以预测或推理提供给PPU 4000的信息。在 至少一个实施例中,PPU 4000用于基于已由另一处理器或系统或PPU 4000 训练过的训练过的机器学习模型(例如,神经网络)推理或预测信息。在 至少一个实施例中,PPU 4000可用于执行本文所述的一个或更多个神经网 络用例。
图41示出了根据至少一个实施例的通用处理集群(“GPC”)4100。 在至少一个实施例中,GPC 4100是图40的GPC 4018。在至少一个实施例 中,每个GPC 4100包括但不限于用于处理任务的多个硬件单元,并且每 个GPC 4100包括但不限于管线管理器4102、预光栅操作单元(“PROP”) 4104、光栅引擎4108、工作分配交叉开关(“WDX”)4116、存储器管 理单元(“MMU”)4118、一个或更多个数据处理集群(“DPC”)4106, 以及部件的任何合适组合。
在至少一个实施例中,GPC 4100的操作由管线管理器4102控制。在 至少一个实施例中,管线管理器4102管理一个或更多个DPC 4106的配置, 以处理分配给GPC 4100的任务。在至少一个实施例中,管线管理器4102 配置一个或更多个DPC 4106中的至少一个以实现图形渲染管线的至少一 部分。在至少一个实施例中,DPC 4106配置为在可编程流式多处理器 (“SM”)4114上执行顶点着色器程序。在至少一个实施例中,管线管 理器4102配置为将从工作分配单元接收的数据包路由到GPC 4100内的适 当逻辑单元,以及在至少一个实施例中,可以将一些数据包路由到PROP 4104和/或光栅引擎4108中的固定功能硬件单元,而可以将其他数据包路 由到DPC 4106以由图元引擎4112或SM 4114进行处理。在至少一个实施 例中,管线管理器4102配置DPC 4106中的至少一个以实现神经网络模型 和/或计算管线。
在至少一个实施例中,PROP单元4104配置为在至少一个实施例中 将由光栅引擎4108和DPC 4106生成的数据路由到上面结合图40更详细 地描述的分区单元4022中的光栅操作(“ROP”)单元。在至少一个实施 例中,PROP单元4104配置为执行用于颜色混合的优化、组织像素数据、 执行地址转换等等。在至少一个实施例中,光栅引擎4108包括但不限于配置为执行各种光栅操作的多个固定功能硬件单元,并且在至少一个实施例 中,光栅引擎4108包括但不限于设置引擎、粗光栅引擎、剔除引擎、裁剪 引擎、精细光栅引擎、图块聚合引擎及其任意合适的组合。在至少一个实 施例中,设置引擎接收变换后的顶点并生成与由顶点定义的几何图元相关 联的平面方程;平面方程式被传送到粗光栅引擎以生成基本图元的覆盖信 息(例如,图块的x、y覆盖范围掩码);粗光栅引擎的输出将传输到剔除 引擎,在剔除引擎中与z测试失败的图元相关联的片段将被剔除,并传输 到剪切引擎,在剪切引擎中剪切位于视锥范围之外的片段。在至少一个实 施例中,将经过裁剪和剔除的片段传递给精细光栅引擎,以基于设置引擎 生成的平面方程式生成像素片段的属性。在至少一个实施例中,光栅引擎 4108的输出包括将由任何适当的实体(例如,由在DPC 4106内实现的片段着色器)处理的片段。
在至少一个实施例中,包括在GPC 4100中的每个DPC 4106包括但 不限于M管道控制器(“MPC”)4110;图元引擎4112;一个或更多个 SM 4114;及其任何合适的组合。在至少一个实施例中,MPC 4110控制 DPC 4106的操作,将从管线管理器4102接收的分组路由到DPC4106中 的适当单元。在至少一个实施例中,将与顶点相关联的分组路由到图元引 擎4112,图元引擎4112配置为从存储器中获取与顶点关联的顶点属性; 相反,可以将与着色器程序相关联的数据包发送到SM 4114。
在至少一个实施例中,SM 4114包括但不限于可编程流式处理器,其 配置为处理由多个线程表示的任务。在至少一个实施例中,SM 4114是多 线程的并且配置为同时执行来自特定线程组的多个线程(例如32个线程), 并且实现单指令多数据(“SIMD”)架构,其中将一组线程(例如,线程 束)中的每个线程配置为基于相同的指令集来处理不同的数据集。在至少 一个实施例中,线程组中的所有线程执行相同的指令。在至少一个实施例 中,SM4114实施单指令多线程(“SIMT”)架构,其中一组线程中的每 个线程配置为基于相同的指令集来处理不同的数据集,但是其中线程组中 的各个线程允许在执行期间发散。在至少一个实施例中,为每个线程束维 护程序计数器、调用栈和执行状态,从而当线程束中的线程发散时,实现 线程束和线程束内的串行执行之间的并发性。在另一个实施例中,为每个 单独的线程维护程序计数器、调用栈和执行状态,从而使得在线程束内和 线程束之间的所有线程之间具有相等的并发性。在至少一个实施例中,为 每个单独的线程维持执行状态,并且可以收敛并并行地执行执行相同指令 的线程以提高效率。本文更详细地描述SM 4114的至少一个实施例。
在至少一个实施例中,MMU 4118在GPC 4100和内存分区单元(例 如,图40的分区单元4022)之间提供接口,并且MMU 4118提供虚拟地 址到物理地址的转换、存储器保护以及存储器请求的仲裁。在至少一个实 施例中,MMU 4118提供一个或更多个转换后备缓冲区(“TLB”),用 于执行虚拟地址到存储器中的物理地址的转换。
推理和/或训练逻辑1515用于执行与一个或更多个实施例相关联的推 理和/或训练操作。本文结合图15A和/或图15B提供关于推理和/或训练逻 辑1515的细节。在至少一个实施例中,深度学习应用处理器用于训练机器 学习模型(诸如神经网络),以预测或推理提供给GPC 4100的信息。在 至少一个实施例中,GPC 4100用于基于已由另一处理器或系统或GPC 4100训练过的机器学习模型(例如,神经网络)推理或预测信息。在至少 一个实施例中,GPC 4100可用于执行本文所述的一个或更多个神经网络用 例。
图42示出了根据一个实施例的并行处理单元(“PPU”)的存储器分 区单元4200。在至少一个实施例中,存储器分区单元4200包括但不限于 光栅操作(“ROP”)单元4202;二级(“L2”)高速缓存4204;存储器接口 4206;及其任何合适的组合。存储器接口4206耦合到存储器。存储器接口 4206可以实现32、64、128、1024位数据总线等,用于高速数据传输。在 至少一个实施例中,PPU包括U个存储器接口4206、每对分区单元4200 一个存储器接口4206,其中每对分区单元4200连接到相应的存储器设备。 例如,在至少一个实施例中,PPU最多可以连接到Y个存储设备,例如高 带宽存储堆栈或图形双数据速率、版本5、同步动态随机存取存储器 (“GDDR5 SDRAM”)。
在一个实施例中,存储器接口4206实现了高带宽存储器二代 (“HBM2”)存储器接口,并且Y等于U的一半。在至少一个实施例中, HBM2存储器堆栈与PPU位于同一物理封装上,与传统的GDDR5 SDRAM 系统相比,节省了大量的功率和面积。在一个实施例中,每个HBM2堆栈 包括四个存储器管芯,并且Y等于4,而HBM2堆栈包括每个管芯两个128 位通道,总共8个通道和1024位的数据总线宽度。在至少一个实施例中, 存储器支持单错误校正双错误检测(“SECDED”)错误校正码(“ECC”) 以保护数据。ECC为对数据损坏敏感的计算应用程序提供了更高的可靠性。
在至少一个实施例中,PPU实现多级存储器层次结构。在至少一个 实施例中,存储器分区单元4200支持统一存储器以为CPU和PPU存储器 提供单个统一虚拟地址空间,从而实现虚拟存储器系统之间的数据共享。 在至少一个实施例中,追踪PPU对位于其他处理器上的存储器的访问频率, 以确保将存储器页面移动到更频繁地访问页面的PPU的物理存储器。在一 个实施例中,高速GPU互连4008支持地址转换服务,该地址转换服务允 许PPU直接访问CPU的页表并提供由PPU对CPU存储器的完全访问。
在一个实施例中,复制引擎在多个PPU之间或在PPU与CPU之间 传送数据。在一个实施例中,复制引擎可以为未被映射到页面表中的地址 生成页面错误,并且存储器分区单元4200然后为页面错误提供服务,将地 址映射到页面表中,之后复制引擎执行传输。在至少一个实施例中,为多 个处理器之间的多个复制引擎操作固定(即,不可分页)存储器,从而实 质上减少了可用存储器。在一个实施例中,由于硬件页面故障,可以将地 址传递给复制引擎,而不必考虑存储页面是否驻留,并且复制过程是透明 的。
根据至少一个实施例,来自图40的存储器4004或其他系统存储器的 数据由存储器分区单元4200提取并存储在L2高速缓存4204中,该L2高 速缓存4204位于芯片上并且在各种GPC之间共享。在一个实施例中,每 个存储器分区单元4200包括与对应的存储器设备相关联的L2高速缓存的 至少一部分。在至少一个实施例中,在GPC内的各个单元中实现较低级别 的高速缓存。在一个实施例中,每个SM 4114可以实现一级(“L1”)高速 缓存,其中L1高速缓存是专用于特定SM 4114的私有存储器,并且获取 来自L2高速缓存4204的数据并将其存储在每个L1高速缓存用于在SM 4114的功能单元中进行处理。在一个实施例中,L2高速缓存4204耦合到 存储器接口4206和XBar 4020。
在一个实施例中,ROP单元4202执行与像素颜色有关的图形光栅操 作,诸如颜色压缩、像素混合等。在一个实施例中,ROP单元4202与光 栅引擎4108一起实施深度测试,从光栅引擎4108的剔除引擎接收与像素 片段相关联的样本位置的深度。在至少一个实施例中,为针对与片段相关 联的样本位置,在深度缓冲区中针对相应深度进行了深度测试。在至少一 个实施例中,如果片段通过了针对样本位置的深度测试,则ROP单元4202 更新深度缓冲器,并将深度测试的结果发送至栅格光栅引擎4108。将理解 的是,分区单元4200的数量可以与GPC的数量不同,因此,在至少一个 实施例中,每个ROP单元4202可以耦合到每个GPC。在至少一个实施例 中,ROP单元4202追踪从不同GPC接收到的分组,并确定通过Xbar2820 将ROP单元4202生成的结果路由到哪个GPC。
图43示出了根据一个实施例的流式多处理器(“SM”)4300。在至 少一个实施例中,SM 4300是图41的SM。在至少一个实施例中,SM 4300 包括但不限于,指令高速缓存4302;一个或更多个调度器单元4304;寄存 器文件4308;一个或更多个处理核心(“核心”)4310;一个或更多个特 殊功能单元(“SFU”)4312;一个或更多个加载/存储单元(“LSU”) 4314;互连网络4316;共享存储器/一级(“L1”)高速缓存4318;和任 何它们的适当组合。在至少一个实施例中,工作分配单元分派任务以在并 行处理单元(“PPU”)的通用处理集群(“GPC”)上执行,并且每个 任务被分配给GPC内的特定数据处理集群(“DPC”),以及,如果该任 务与着色器程序相关联,则该任务被分配给SM 4300。在一个实施例中, 调度器单元4304从工作分配单元接收任务,并管理分配给SM 4300的一 个或更多个线程块的指令调度。在至少一个实施例中,调度器单元4304 调度线程块以作为并行线程的线程束进行执行,其中每个线程块至少分配 一个线程束。在至少一个实施例中,每个线程束执行线程。在至少一个实 施例中,调度器单元4304管理多个不同的线程块,将线程束分配给不同的 线程块,然后在每个时钟周期将来自多个不同的协作组的指令分配给各个 功能单元(例如,核心4310、SFU4312和LSU 4314)。
在至少一个实施例中,协作组可以指用于组织通信线程的组的编程模 型,该编程模型允许开发人员表达正在通信的线程的粒度,从而使表达更 丰富,更有效的并行分解。在至少一个实施例中,协作启动API支持线程 块之间的同步以执行并行算法。在至少一个实施例中,常规编程模型的应 用程序提供了用于同步协作线程的单个简单构造:跨线程块的所有线程的 屏障(例如,syncthreads()函数)。但是,在至少一个实施例中,编程 人员经常想以小于线程块粒度的大小来定义线程组,并在定义的组内进行 同步,从而以集体范围内的功能接口的形式实现更高的性能、设计灵活性 和软件重用。在至少一个实施例中,协作组使编程人员定义明确位于子块 (即,小到单个线程)和多块粒度上的线程组,并在协作组中对线程执行 集体操作,例如同步。编程模型支持跨软件边界的清除合成,因此库和实 用功能可以在其本地上下文中安全地同步,而不必对收敛进行假设。在至 少一个实施例中,协作组基元启用了新的合作并行模式,包括生产者-消费 者并行,机会主义并行以及整个线程块网格上的全局同步。
在至少一个实施例中,调度单元4306配置成将指令发送到一个或更 多个功能单元,并且调度器单元4304包括但不限于两个调度单元4306, 该两个调度单元4306使得来自同一线程束的两个不同指令能够在每个时 钟周期内被调度。在至少一个实施例中,每个调度器单元4304包括单个调 度单元4306或附加调度单元4306。
在至少一个实施例中,每个SM 4300包括寄存器文件4308,其为SM 4300的功能单元提供一组寄存器。在至少一个实施例中,寄存器文件4308 在每个功能单元之间划分,使得每个功能单元被分配寄存器文件4308的专 用部分。在至少一个实施例中,寄存器文件4308被SM 4300执行的不同 线程束划分,以及寄存器文件4308为连接到功能单元的数据路径的操作数 提供临时存储。在至少一个实施例中,每个SM 4300包括数量为L的处理 核心4310。在至少一个实施例中,SM 4300包括大量但不限于(例如,128 个或更多个)不同的处理核心4310。在至少一个实施例中,每个核心4310 包括但不限于全管线、单精度、双精度和/或混合精度处理单元,处理单元 包括但不限于浮点运算逻辑单元(“ALU”)和整数算术逻辑单元。在至 少一个实施例中,浮点算术逻辑单元实施IEEE 754-2008标准用于浮点算术。在至少一个实施例中,处理核心4310包括但不限于64个单精度(32 位)浮点核心、64个整数核心、32个双精度(64位)浮点核心和8个张 量核心。
根据至少一个实施例,张量核心配置成为执行矩阵运算。在至少一实 施例中,核心4310中包括一个或更多个张量核心。在至少一实施例中,张 量核心配置成执行深度学习矩阵算术,例如用于神经网络训练和推理的卷 积运算。在至少一个实施例中,每个张量核心在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矩阵的中间乘积累加。在至少一个实施例中,张量核心用于执行由这些较小的元件构成的更大的二维或更高 维度的矩阵运算。在至少一个实施例中,诸如CUDA 9 C++API之类的 API公开专门的矩阵加载、矩阵乘法和累加以及矩阵存储操作,以有效地 使用来自ClJDA-C++程序的张量核心。在至少一个实施例中,在CUDA 级别,线程束级别接口假设16×16大小的矩阵跨线程束的所有32个线程。
在至少一个实施例中,每个SM 4300包括但不限于执行特殊功能(例 如,属性评估、倒数平方根等)的M个SFU 4312。在至少一个实施例中, SFU 4312包括但不限于配置成遍历分层树数据结构的树遍历单元。在至少 一个实施例中,SFU 4312包括但不限于配置成执行纹理图过滤操作的纹理 单元。在至少一个实施例中,纹理单元配置成从存储器加载纹理图(例如, 像素的2D阵列)并且对纹理图进行采样以产生采样的纹理值以供在由SM 4300执行的着色器程序中使用。在至少一个实施例中,纹理图存储在共享 存储器/L1高速缓存4318中。在至少一个实施例中,纹理单元实施纹理操 作,例如使用mip-maps(例如,细节水平变化的纹理图)进行滤波操作。 在至少一个实施例中,每个SM 4300包括但不限于两个纹理单元。
在至少一个实施例中,每个SM 4300包括但不限于N个LSU 4314, 这些LSU 4314实现共享存储器/Ll高速缓存4318和寄存器文件4308之间 的加载和存储操作。在至少一个实施例中,每个SM 4300包括但不限于互 连网络4316,互连网络4316将每个功能单元连接到寄存器文件4308和将 LSU 4314连接到寄存器文件4308和共享存储器/L1高速缓存4318。在至 少一个实施例中,互连网络4316是可配置为将任何功能单元连接到寄存器 堆4308中的任何寄存器并将LSU 4314连接到寄存器文件4308和共享存 储器/L1高速缓存4318中的存储器位置的交叉开关。
在至少一个实施例中,共享存储器/Ll高速缓存4318是片上存储器 的阵列,其在一个实施例中允许SM 4300与原始引擎之间以及SM 4300中 的线程之间的数据存储和通信。在至少一个实施例中,共享存储器/LI高 速缓存4318包括但不限于128KB的存储容量,并且位于从SM 4300到分 区单元的路径中。在至少一个实施例中,共享存储器/L1高速缓存4318用 于高速缓存读取和写入。共享存储器/L1高速缓存4318、L2高速缓存和存 储器中的一个或更多个是后备存储器。
在至少一个实施例中,将数据高速缓存和共享存储器功能组合到单个 存储器块中,为两种类型的存储器访问提供了改进的性能。在至少一个实 施例中,该容量被不使用共享存储器的程序使用或用作高速缓存,例如, 如果将共享存储器配置为使用一半容量,则纹理和加载/存储操作可以使用 剩余容量。根据至少一个实施例,在共享存储器/L1高速缓存4318内的集 成使共享存储器/L1高速缓存4318能够用作用于流传输数据的高吞吐量管 道,同时提供对频繁重用的数据的高带宽和低延迟访问。在至少一个实施 例中,当配置用于通用并行计算时,与图形处理相比,可以使用更简单的 配置。在至少一个实施例中,固定功能图形处理单元被绕过,从而创建了 更简单的编程模型。在至少一个实施例中,在通用并行计算配置中,工作 分配单元直接将线程的块分配和分布给DPC。在至少一个实施例中,块中 的线程执行相同的程序,在计算中使用唯一的线程ID来确保每个线程生成 唯一的结果,使用SM 4300执行程序并执行计算,使用共享存储器/L1高 速缓存4318在线程之间进行通信,以及LSU 4314通过共享存储器/L1高 速缓存4318和内存分区单元来读写全局存储器。在至少一个实施例中,当 被配置用于通用并行计算时,SM 4300写入调度器单元4304可以用来在 DPC上启动新工作的命令。
在至少一个实施例中,PPU被包括在或耦合到台式计算机、膝上型 计算机、平板电脑、服务器、超级计算机、智能电话(例如,无线、手持 设备)、个人数字助理(“PDA”)、数码相机、车辆、头戴式显示器、 手持式电子设备等中或与之耦合。在至少一个实施例中,PPU被实现在单 个半导体衬底上。在至少一个实施例中,PPU与一个或更多个其他设备(例 如附加的PPU、存储器、精简指令集计算机(“RISC”)CPU,一个或更 多个存储器管理单元(“MMU”)、数模转换器(“DAC”)等)一起 被包括在片上系统(“SoC”)中。
在至少一个实施例中,PPU可以被包括在包括一个或更多个存储设 备的图形卡上。图形卡可以配置为与台式计算机主板上的PCIe插槽相连接。 在至少一个实施例中,PPU可以是包括在主板的芯片组中的集成图形处理 单元(“iGPU”)。
推理和/或训练逻辑1515用于执行与一个或更多个实施例相关的推理 和/或训练操作。本文结合图15A和/或图15B提供关于推理和/或训练逻辑 1515的细节。在至少一个实施例中,深度学习应用处理器用于训练机器学 习模型(诸如神经网络),以预测或推理提供给SM 4300的信息。在至少 一个实施例中,SM 4300用于基于已由另一处理器或系统或由SM4300训 练过的机器学习模型(例如,神经网络)推理或预测信息。在至少一个实 施例中,SM4300可用于执行一个或更多个本文所述的神经网络用例。
在至少一个实施例中,单个半导体平台可以指唯一的单一的基于半导 体的集成电路或芯片。在至少一个实施例中,可以使用具有增加的连接性 的多芯片模块,其模拟芯片上的操作,并且相对于利用传统的中央处理单 元(“CPU”)和总线实施方式进行了实质性的改进。在至少一个实施例 中,根据用户的需求,各种模块也可以分开放置或以半导体平台的各种组 合放置。
在至少一个实施例中,以机器可读的可执行代码或计算机控制逻辑算 法的形式的计算机程序被存储在主存储器2104和/或辅助存储器中。如果 由一个或更多个处理器执行,则计算机程序使系统2100能够执行根据至少 一个实施例的各种功能。存储器2104、存储器和/或任何其他存储器是计算 机可读介质的可能示例。在至少一个实施例中,辅助存储器可以指代任何 合适的存储设备或系统,例如硬盘驱动器和/或可移动存储驱动器,代表软 盘驱动器、磁带驱动器、光盘驱动器、数字通用磁盘(“DVD”)驱动器、 记录设备、通用串行总线(“USB”)闪存等。在至少一个实施例中,在 CPU 2102、并行处理系统2112、具有至少两个CPU 2102的能力的一部分 的集成电路、并行处理系统2112、芯片组(例如,一组设计成工作并作为 执行相关功能的单元出售的集成电路等)、以及一个或更多个集成电路的任何适当组合的背景中实现了各种先前附图的架构和/或功能。
在至少一个实施例中,各种先前附图的架构和/或功能是在通用计算 机系统、电路板系统、专用于娱乐目的的游戏控制台系统、专用系统等的 背景下实现的。在至少一个实施例中,计算机系统2100可以采取台式计算 机、膝上型计算机、平板计算机、服务器、超级计算机、智能电话(例如, 无线、手持设备)、个人数字助理(“PDA”)、数码相机、车辆、头戴式显示器、手持式电子设备、移动电话设备、电视、工作站、游戏机、嵌 入式系统和/或任何其他类型的逻辑。
在至少一个实施例中,并行处理系统2112包括但不限于多个并行处 理单元(“PPU”)2114和相关联的存储器2116。在至少一个实施例中, PPU 2114通过互连2118和开关2120或多路复用器连接到主机处理器或其 他外围设备。在至少一个实施例中,并行处理系统2112在可并行化的PPU 2114上分布计算任务,例如,作为跨多个图形处理单元(“GPU”)线程 块的计算任务分布的一部分。在至少一个实施例中,尽管在某些或所有PPU 2114之间共享和访问存储器(例如,用于读取和/或写入访问),但是这种 共享存储器可能会引起相对于使用本地存储器和驻留在PPU 2114上的寄 存器的性能损失。在至少一个实施例中,通过使用诸如__syncthreads() 之类的命令来同步PPU 2114的操作,其中块中的所有线程(例如,跨多 个PPU 2114执行的)在到达某个代码执行点之后继续。
其他变型在本公开的精神内。因此,尽管所公开的技术易于进行各种 变构和替代构造,但是某些示出的实施例由此在附图中示出并且已经在上 面进行了详细描述。然而,应当理解,无意将本发明限制为所公开的特定 形式或形式,相反,其意图是涵盖落入本发明的精神和范围内的所有修改、 替代构造和等同形式,如所附权利要求所定义的。
在描述所公开的实施例的上下文中(特别是在所附权利要求的上下文 中)术语“一”、“一个”和“所述”以及类似指代的使用应被解释为涵盖 单数和复数并且不作为术语的定义,除非本文另有说明或与上下文明显矛 盾。除非另外指出,否则术语“包括”、“具有”、“包含”和“含有”应解 释为开放式术语(即,意思是“包括但不限于”)。术语“连接”(未经修改 且指的是物理连接),应理解为完全或部分地包含在,附加到或连接在一起, 即使有某物介入。本文中数值范围的引用仅旨在用作一种简写方法,除非 本文另有说明,否则分别指代落入该范围内的每个单独值,并且每个单独 值都被并入说明书中,就如同在此单独引用一样。术语“集合”(例如,“项 目的集合)”或“子集”的使用,除非上下文另有说明或与之矛盾,否则应 解释为包含一个或更多个成员的非空集合。此外,除非上下文另有说明或 与之矛盾,否则相应集合的术语“子集”不是必需表示相应集合的适当子 集,但是该子集和相应集合可以相等。
连接的语言,例如“A、B和C中的至少一个”或“A、B和C至少 一个”形式的短语,除非另有明确说明或与上下文明显矛盾否则,否则可 以作为通常使用与上下文一起理解以呈现项目、条款等,可以是是A或B 或C,也可以是A和B以及C的集合的任何非空子集。例如,在具有三个 成员的集合的示例性示例中,连接短语“A、B和C中的至少一个”和“A, B和C中的至少一个”是指以下任意集合:{A}、{B}、{C}、{A,B}、{A, C}、{B,C}、{A,B,C}。因此,这种连接语言通常并不旨在暗示某些实 施例需要至少一个A、至少一个B和至少一个C,他们每一个用于呈现。 另外,除非另有说明或与上下文矛盾,否则术语“多个”表示复数的状态 (例如,“多个项目”表示复数个项目)。“多个”中项目的数量的至少是两 个,但是当明确地或通过上下文指示时可以是更多。此外,除非另有说明 或从上下文中另外可知,否则短语“基于”是指“至少部分基于”而不是 “仅基于”。
可以以任何合适的顺序来执行本文描述的过程的操作,除非本文另有 指示或与上下文明显矛盾。在一个实施例中,诸如本文描述的那些过程(或 其变型和/或组合)的过程在一个或更多个计算机系统中的一个控制下通过 硬件或其组合执行,一个或更多个计算机系统配置有可执行指令并且被实 现为在一个或更多个处理器上共同执行的代码(例如,可执行指令、一个 或更多个计算机程序或一个或更多个应用程序)。在一个实施例中,代码以 计算机程序的形式存储在计算机可读存储介质上,该计算机程序包括可由 一个或更多个处理器执行的多个指令的计算机程序。在一个实施例中,计 算机可读存储介质是非暂时性计算机刻度存储介质,其不包括暂时信号(例 如,传播的瞬态电或电磁传输)但包括瞬时信号的收发器内的非暂时性数 据存储电路(例如,缓冲器、高速缓存和队列)。在一个实施例中,代码(例 如,可执行代码或源代码)被存储在其上存储有可执行指令(或其他存储 器以存储可执行指令)的一组一个或更多个非暂时性计算机可读存储介质 上,该可执行指令在被计算机系统的一个或更多个处理器执行时(例如, 作为被执行的结果),使计算机系统执行本文所述的操作。在一个实施例中, 该组非暂时性计算机可读存储介质包括多个非暂时性计算机可读存储介质, 以及多个非暂时性计算机可读存储介质中的一个或更多个单独的非暂时性 存储介质缺少全部代码,而多个非暂时性计算机可读存储介质共同存储所 有代码。在一个实施例中,可执行指令被执行,使得不同的指令被不同的 处理器执行-例如,非暂时性计算机可读存储介质存储指令,并且主CPU 执行一些指令,而图形处理器单元执行其他指令。在一个实施例中,计算 机系统的不同组件具有独立处理器,以及不同处理器执行指令的不同子集。
因此,在一个实施例中,计算机系统配置成实现单独或共同执行本文 所述的过程的操作的一个或更能多个服务,并且这样的计算机系统配置有 能够使操作的执行的适用的硬件和/或软件。此外,实现本公开的实施例的 计算机系统是单个设备,并且在另一实施例中,是一种分布式计算机系统, 其包括以不同方式操作的多个设备,使得该分布式计算机系统执行本文所 述的操作,并且使得单个设备不执行所有操作。
除非另外要求,本文提供的任何和所有示例或示例性语言(例如,“诸 如”)的使用仅旨在更好地阐明本发明的实施例,而不对本发明的范围构成 限制。本说明书中的语言不应解释为表示任何未要求保护的要素对于实施 本发明是必不可少的。
本文引用的所有参考文献,包括出版物、专利申请和专利,均以引用 的方式并入本文,其程度如同每个参考文献被单独且具体地指示以引用方 式并入本文一样,并在此全文进行阐述。
在说明书和权利要求书中,可以使用术语“耦合”和“连接”及其派 生词。应当理解,这些术语可能不旨在作为彼此的同义词。相反,在特定 示例中,“连接”或“耦合”可用于指示两个或更多个元件彼此直接或间接 物理或电接触。“耦合”也可能意味着两个或多个元素彼此不直接接触,但 仍彼此协作或交互。
除非另有说明,否则应理解,在整个说明书中,诸如“处理”、“计算 处理”、“计算”、“确定”等术语均指计算机或计算系统或类似的电子计算 设备的动作和/或过程,这些电子设备将在计算系统的寄存器和/或存储器中 表示为物理量(例如电子)的数据(例如电子)操作和/或转换为类似地表 示为计算系统的存储器、寄存器或其他此类信息存储器、传输或显示设备 中的物理量的其他数据。
在类似的方式中,术语“处理器”可以指处理来自寄存器和/或存储 器的电子数据并将该电子数据转换成可以存储在寄存器和/或存储器中的 其他电子数据的任何设备或设备的一部分。作为非限制性示例,“处理器” 可以是中央处理单元(CPU)或图形处理单元(GPU)。“计算平台”可以 包括一个或更多个处理器。如本文所使用的,“软件”过程可以包括例如随 时间执行工作的软件和/或硬件实体,诸如任务、线程和智能代理。同样, 每个过程可以指代多个过程,以依次或并行,连续或间歇地执行指令。术 语“系统”和“方法”在本文中可互换使用,以达到一种该系统可以体现 一种或更多种方法并且该方法可以被认为是系统的程度。
在本文档中,可以参考获得、获取、接收或将模拟或数字数据输入子 系统、计算机系统或计算机实现的机器。可以以多种方式来完成获得、获 取、接收或输入模拟和数字数据的过程,例如通过接收作为函数调用或对 应用程序接口的调用的参数的数据。在一些实施方式中,获得、获取,接 收或输入模拟或数字数据的过程可以通过经由串行或并行接口传输数据来 完成。在另一个实施方式中,获得、获取、接收或输入模拟或数字数据的 过程可以通过经由计算机网络将数据从提供实体转移到获取实体来完成。 也可以参考提供、输出、传输、发送或呈现模拟或数字数据。在各种示例 中,提供、输出、传输、发送或呈现模拟或数字数据的过程可以通过将数 据作为函数调用的输入或输出参数、应用程序编程接口或进程间通信机制 的参数进行传输来完成。
尽管以上讨论阐述了所描述的技术的示例实施方式,但是其他架构可 以用于实现所描述的功能,并且意图在本公开的范围内。此外,尽管出于 讨论目的在上面定义了具体的职责分配,但是根据情况,各种功能和职责 可能以不同的方式分配和划分。
此外,尽管已经以结构特征和/或方法动作专用的语言描述了主题, 但应理解,所附权利要求书中定义的主题不必限于所描述的特定特征或动 作。而是,将特定特征和动作公开为实现权利要求的示例性形式。

Claims (27)

1.一种计算机实现的方法,包括:
从手的图像中确定所述手的第一姿势;
将所述手的所述第一姿势转换为机器人手的相应的第二姿势;
确定将所述机器人手从所述机器人手的第一姿势重新定位到所述第二姿势的一组运动;以及
使所述机器人手执行所述一组运动。
2.根据权利要求1所述的计算机实现的方法,还包括:
从深度相机获取所述图像;
从所述图像确定所述手的点云;以及
从所述点云确定所述手的所述第一姿势。
3.根据权利要求2所述的计算机实现的方法,其中:
所述深度相机是RGB深度相机、雷达成像仪、医学成像系统,或LIDAR系统。
4.根据权利要求1所述的计算机实现的方法,其中:
所述手的所述第一姿势包括识别所述手的五个手指中的每一个的位置的信息;以及
所述手的所述第一姿势包括识别所述手的一个或更多个关节位置的信息。
5.根据权利要求1所述的计算机实现的方法,其中:
通过至少执行关节角度的运动学重定位,将所述第一姿势转换为所述第二姿势;以及
至少部分地基于所述第一姿势来确定所述关节角度。
6.根据权利要求1所述的计算机实现的方法,其中使用黎曼运动策略来确定所述一组运动。
7.根据权利要求1所述的计算机实现的方法,其中所述机器人手是铰接的机器人手、机器人抓取器或探针。
8.根据权利要求1所述的计算机实现的方法,其中:
所述机器人手包括提供触觉传感器信息的一个或更多个触觉传感器;以及
所述触觉传感器信息包括用于所述机器人手的手指的力值的二维数组。
9.一种系统,包括:
一个或更多个处理器;以及
计算机可读存储器,其存储可执行指令,作为所述可执行指令被所述一个或更多个处理器执行的结果,使所述系统:
从执行任务的附件的图像中确定所述附件的第一姿势;
至少部分地基于所述附件的所述第一姿势来确定机器人抓取器的第二姿势;
确定将所述机器人抓取器从所述机器人抓取器的第一姿势重新定位到所述第二姿势的一组运动;以及
执行所述一组运动用于将所述机器人抓取器定位在所述第二姿势,以使所述机器人抓取器执行所述任务。
10.根据权利要求9所述的系统,其中所述可执行指令使所述系统进一步:
从所述附件的所述图像生成点云;以及
从所述点云确定所述第一姿势。
11.根据权利要求9所述的系统,其中根据黎曼运动策略来执行所述一组运动。
12.根据权利要求9所述的系统,其中所述附件是人类手或人类脚。
13.根据权利要求9所述的系统,其中所述可执行指令使所述系统进一步将比例因子应用于所述附件的所述第一姿势,以确定所述机器人抓取器的所述第二姿势。
14.根据权利要求9所述的系统,其中所述附件的所述第一姿势指定手分段和一组关节角度。
15.根据权利要求14所述的系统,其中所述第二姿势指定一组目标关节角度和所述机器人抓取器的位置。
16.根据权利要求15所述的系统,其中使用所述第一姿势的子集来确定所述第二姿势。
17.计算机可读介质,其存储指令,作为所述指令被计算机系统的一个或更多个处理器执行的结果,使所述计算机系统:
从执行任务的人类的图像中确定所述人类的附件的第一姿势;
将所述附件的所述第一姿势转换为机器人手的相应的第二姿势;
确定将所述机器人手从所述机器人手的第一姿势重新定位到所述第二姿势的一组运动;以及
使所述机器人手执行所述一组运动。
18.根据权利要求17所述的计算机可读介质,其中所述指令使所述计算机系统进一步:
从深度相机中获取所述图像;
从所述图像确定所述附件的点云;以及
从所述点云确定所述附件的所述第一姿势。
19.根据权利要求18所述的计算机可读介质,其中所述深度相机是RGB深度相机、雷达成像仪、医学成像系统,或LIDAR系统。
20.根据权利要求17所述的计算机可读介质,其中:
所述附件的所述第一姿势包括识别手的五个手指中的每一个的位置的信息;以及
所述附件的所述第一姿势包括识别所述手的一个或更多个关节位置的信息。
21.根据权利要求17所述的计算机可读介质,其中:
所述附件的所述第一姿势包括识别手的五个手指中的每一个的位置的信息;以及
所述附件的所述第一姿势包括识别所述手的一个或更多个关节位置的信息。
22.根据权利要求17所述的计算机可读介质,其中:
通过至少执行关节角度的运动学重定位,将所述第一姿势转换为所述第二姿势;以及
至少部分地基于所述第一姿势来确定所述关节角度。
23.根据权利要求17所述的计算机可读介质,其中:
所述机器人手包括提供触觉传感器信息的一个或更多个触觉传感器;以及
所述触觉传感器信息包括用于所述机器人手的手指的力值的二维数组。
24.根据权利要求17所述的计算机可读介质,其中所述机器人手是铰接的机器人手、机器人抓取器或探针。
25.根据权利要求17所述的计算机可读介质,其中:
通过至少执行关节角度的运动学重定位,将所述第一姿势转换为所述第二姿势;以及
至少部分地基于所述第一姿势来确定所述关节角度。
26.根据权利要求17所述的计算机可读介质,其中所述机器人手的所述第一姿势是所述机器人手的当前姿势。
27.一种机器人,包括:
臂,所述臂包括通过一个或更多个伺服电动机连接的一个或更多个铰接的构件;
连接到所述臂的机器人附件;
一个或更多个处理器;以及
连接到所述一个或更多个处理器的如权利要求17所述的计算机可读介质。
CN202010973239.2A 2019-09-20 2020-09-16 基于视觉的灵巧机器人系统的远程操作 Pending CN112540671A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962903671P 2019-09-20 2019-09-20
US62/903,671 2019-09-20
US16/932,067 US20210086364A1 (en) 2019-09-20 2020-07-17 Vision-based teleoperation of dexterous robotic system
US16/932,067 2020-07-17

Publications (1)

Publication Number Publication Date
CN112540671A true CN112540671A (zh) 2021-03-23

Family

ID=74881604

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010973239.2A Pending CN112540671A (zh) 2019-09-20 2020-09-16 基于视觉的灵巧机器人系统的远程操作

Country Status (3)

Country Link
US (1) US20210086364A1 (zh)
JP (1) JP2021049635A (zh)
CN (1) CN112540671A (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113341728A (zh) * 2021-06-21 2021-09-03 长春工业大学 一种抗噪型归零神经网络的四轮移动机械臂轨迹跟踪控制方法
CN113589835A (zh) * 2021-08-13 2021-11-02 北京科技大学 一种基于自主感知的智能机器人飞行员飞行方法及装置
CN113962336A (zh) * 2021-08-06 2022-01-21 杨*甦 可实时的牛只正脸id编码方法
CN114347043A (zh) * 2022-03-16 2022-04-15 季华实验室 一种机械手模型学习方法、装置、电子设备及存储介质
CN114454180A (zh) * 2022-03-22 2022-05-10 深圳市优必选科技股份有限公司 移动机器人的运动控制方法、装置和移动机器人
CN114724254A (zh) * 2022-05-16 2022-07-08 北京百度网讯科技有限公司 确定动作类别的方法、装置、设备、存储介质及程序产品
US11383679B2 (en) * 2017-12-01 2022-07-12 Volvo Truck Corporation Method for maintenance of a vehicle
CN114888809A (zh) * 2022-05-30 2022-08-12 深圳市优必选科技股份有限公司 机器人控制方法、装置、计算机可读存储介质及机器人
CN116149759A (zh) * 2023-04-20 2023-05-23 深圳市吉方工控有限公司 Uefi驱动卸载方法、装置、电子设备及可读存储介质

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020101127A1 (en) * 2018-11-13 2020-05-22 Samsung Electro-Mechanics Co., Ltd. Driving support system and method
WO2021066794A1 (en) * 2019-09-30 2021-04-08 Siemens Aktiengesellschaft Machine learning enabled visual servoing with dedicated hardware acceleration
US11813749B2 (en) * 2020-04-08 2023-11-14 Fanuc Corporation Robot teaching by human demonstration
US11712797B2 (en) * 2020-09-11 2023-08-01 Fanuc Corporation Dual hand detection in teaching from demonstration
WO2022212916A1 (en) * 2021-04-01 2022-10-06 Giant.Ai, Inc. Hybrid computing architectures with specialized processors to encode/decode latent representations for controlling dynamic mechanical systems
CN113808030B (zh) * 2021-05-31 2022-09-30 荣耀终端有限公司 一种噪声的监测方法、电子设备及芯片系统
CN113829357B (zh) * 2021-10-25 2023-10-03 香港中文大学(深圳) 机器人手臂遥操作方法、装置、系统及介质
US20230241771A1 (en) * 2022-02-02 2023-08-03 Intrinsic Innovation Llc Object placement
JP2023157679A (ja) * 2022-04-15 2023-10-26 川崎重工業株式会社 遠隔操作システム及び遠隔操作方法
CN115922731B (zh) * 2023-01-09 2023-05-30 深圳鹏行智能研究有限公司 一种机器人的控制方法以及机器人
CN116494248B (zh) * 2023-06-26 2023-08-29 深圳市长荣科机电设备有限公司 工业机器人的视觉定位方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110098252A (ko) * 2010-02-26 2011-09-01 서울대학교산학협력단 카메라 포즈 결정 방법
CN203973551U (zh) * 2014-06-13 2014-12-03 济南翼菲自动化科技有限公司 一种通过身体姿势操控的远程控制机器人
US8989902B1 (en) * 2013-03-05 2015-03-24 U.S. Department Of Energy User interface for a tele-operated robotic hand system
US20160335790A1 (en) * 2015-05-13 2016-11-17 Intel Corporation Iterative closest point technique based on a solution of inverse kinematics problem
CN109171977A (zh) * 2013-03-15 2019-01-11 Sri国际公司 超灵巧型手术系统
KR101995317B1 (ko) * 2018-01-11 2019-07-02 동명대학교산학협력단 저가형 플랫폼 기반의 원격 행위 모방 로봇 제어 시스템

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10768708B1 (en) * 2014-08-21 2020-09-08 Ultrahaptics IP Two Limited Systems and methods of interacting with a robotic tool using free-form gestures
US10186081B2 (en) * 2015-12-29 2019-01-22 Microsoft Technology Licensing, Llc Tracking rigged smooth-surface models of articulated objects
JP6741538B2 (ja) * 2016-09-28 2020-08-19 川崎重工業株式会社 ロボット、ロボットの制御装置、及び、ロボットの位置教示方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110098252A (ko) * 2010-02-26 2011-09-01 서울대학교산학협력단 카메라 포즈 결정 방법
US8989902B1 (en) * 2013-03-05 2015-03-24 U.S. Department Of Energy User interface for a tele-operated robotic hand system
CN109171977A (zh) * 2013-03-15 2019-01-11 Sri国际公司 超灵巧型手术系统
CN203973551U (zh) * 2014-06-13 2014-12-03 济南翼菲自动化科技有限公司 一种通过身体姿势操控的远程控制机器人
US20160335790A1 (en) * 2015-05-13 2016-11-17 Intel Corporation Iterative closest point technique based on a solution of inverse kinematics problem
KR101995317B1 (ko) * 2018-01-11 2019-07-02 동명대학교산학협력단 저가형 플랫폼 기반의 원격 행위 모방 로봇 제어 시스템

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
YOUDING ZHU ET AL.: "Kinematic self retargeting: A framework for human pose estimation", COMPUTER VISION AND IMAGE UNDERSTANDING, vol. 114, pages 1362 - 1375, XP027422931, DOI: 10.1016/j.cviu.2009.11.005 *
ZHE SU ET AL.: "Learning to Switch Between Sensorimotor Primitives Using Multimodal Haptic Signals", LECTURE NOTES IN COMPUTER SCIENCE, vol. 9825, pages 170 - 182 *

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11383679B2 (en) * 2017-12-01 2022-07-12 Volvo Truck Corporation Method for maintenance of a vehicle
CN113341728A (zh) * 2021-06-21 2021-09-03 长春工业大学 一种抗噪型归零神经网络的四轮移动机械臂轨迹跟踪控制方法
CN113341728B (zh) * 2021-06-21 2022-10-21 长春工业大学 一种抗噪型归零神经网络的四轮移动机械臂轨迹跟踪控制方法
CN113962336A (zh) * 2021-08-06 2022-01-21 杨*甦 可实时的牛只正脸id编码方法
CN113962336B (zh) * 2021-08-06 2023-11-24 杨甦 可实时的牛只正脸id编码方法
CN113589835A (zh) * 2021-08-13 2021-11-02 北京科技大学 一种基于自主感知的智能机器人飞行员飞行方法及装置
CN114347043A (zh) * 2022-03-16 2022-04-15 季华实验室 一种机械手模型学习方法、装置、电子设备及存储介质
CN114347043B (zh) * 2022-03-16 2022-06-03 季华实验室 一种机械手模型学习方法、装置、电子设备及存储介质
CN114454180A (zh) * 2022-03-22 2022-05-10 深圳市优必选科技股份有限公司 移动机器人的运动控制方法、装置和移动机器人
CN114454180B (zh) * 2022-03-22 2024-01-19 深圳市优必选科技股份有限公司 移动机器人的运动控制方法、装置和移动机器人
CN114724254A (zh) * 2022-05-16 2022-07-08 北京百度网讯科技有限公司 确定动作类别的方法、装置、设备、存储介质及程序产品
CN114724254B (zh) * 2022-05-16 2022-12-30 北京百度网讯科技有限公司 确定动作类别的方法、装置、设备、存储介质
CN114888809A (zh) * 2022-05-30 2022-08-12 深圳市优必选科技股份有限公司 机器人控制方法、装置、计算机可读存储介质及机器人
CN114888809B (zh) * 2022-05-30 2023-12-15 深圳市优必选科技股份有限公司 机器人控制方法、装置、计算机可读存储介质及机器人
CN116149759A (zh) * 2023-04-20 2023-05-23 深圳市吉方工控有限公司 Uefi驱动卸载方法、装置、电子设备及可读存储介质

Also Published As

Publication number Publication date
JP2021049635A (ja) 2021-04-01
US20210086364A1 (en) 2021-03-25

Similar Documents

Publication Publication Date Title
US11833681B2 (en) Robotic control system
US20210086364A1 (en) Vision-based teleoperation of dexterous robotic system
US20240042601A1 (en) Robotic control system
US20210122045A1 (en) In-hand object pose tracking
US20210125052A1 (en) Reinforcement learning of tactile grasp policies
US20210049757A1 (en) Neural network for image registration and image segmentation trained using a registration simulator
US20210125036A1 (en) Determining object orientation from an image with machine learning
WO2021101907A1 (en) Training and inferencing using a neural network to predict orientations of objects in images
US20220398456A1 (en) Identification of multi-scale features using a neural network
US11597078B2 (en) Machine learning control of object handovers
CN114972497A (zh) 单步类别级对象姿态估计
CN114556372A (zh) 用于在机器学习中转换张量运算的处理器和系统
US20210192287A1 (en) Master transform architecture for deep learning
US20210133990A1 (en) Image aligning neural network
WO2021247746A1 (en) Machine-learning-based object detection system
US20210233273A1 (en) Determining a 3-d hand pose from a 2-d image using machine learning
CN114970852A (zh) 使用一个或更多个神经网络来生成神经模拟的帧
US20210183088A1 (en) Depth estimation using a neural network
CN114764611A (zh) 并行执行非极大值抑制
CN115039094A (zh) 用于矩阵乘法和归约操作的自动融合的处理器和系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination