CN109690578B - 自主机器的通用输入/输出数据捕获和神经高速缓存系统 - Google Patents

自主机器的通用输入/输出数据捕获和神经高速缓存系统 Download PDF

Info

Publication number
CN109690578B
CN109690578B CN201680088988.9A CN201680088988A CN109690578B CN 109690578 B CN109690578 B CN 109690578B CN 201680088988 A CN201680088988 A CN 201680088988A CN 109690578 B CN109690578 B CN 109690578B
Authority
CN
China
Prior art keywords
output result
data
input data
neural
logic
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.)
Active
Application number
CN201680088988.9A
Other languages
English (en)
Other versions
CN109690578A (zh
Inventor
马立伟
宋继强
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of CN109690578A publication Critical patent/CN109690578A/zh
Application granted granted Critical
Publication of CN109690578B publication Critical patent/CN109690578B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J19/00Accessories fitted to manipulators, e.g. for monitoring, for viewing; Safety devices combined with or specially adapted for use in connection with manipulators
    • B25J19/02Sensing devices
    • B25J19/021Optical sensing devices
    • B25J19/023Optical sensing devices including video camera means
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J19/00Accessories fitted to manipulators, e.g. for monitoring, for viewing; Safety devices combined with or specially adapted for use in connection with manipulators
    • B25J19/02Sensing devices
    • B25J19/026Acoustical sensing devices
    • 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/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • 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/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/455Image or video data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/004Artificial life, i.e. computing arrangements simulating life
    • G06N3/008Artificial life, i.e. computing arrangements simulating life based on physical entities controlled by simulated intelligence so as to replicate intelligent life forms, e.g. based on robots replicating pets or humans in their appearance or behaviour
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Molecular Biology (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Robotics (AREA)
  • Mechanical Engineering (AREA)
  • Neurology (AREA)
  • Multimedia (AREA)
  • Acoustics & Sound (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)

Abstract

描述了一种用于促进自主机器的通用输入/输出数据捕获和神经高速缓存系统的机制。如本文所描述的,实施例的方法包括由图像捕获装置捕获一个或多个对象的一个或多个图像,其中,所述一个或多个图像表示与神经网络相关联的输入数据。所述方法可以进一步包括通过将由默认神经高速缓存系统生成的第一输出结果与由自定义神经高速缓存系统预测的第二输出结果进行比较来确定所述第一输出结果的准确性。所述方法可以进一步包括基于所述准确性来输出包括所述第一输出结果或所述第二输出结果中的至少一者的最终输出结果。

Description

自主机器的通用输入/输出数据捕获和神经高速缓存系统
技术领域
本文所描述的实施例总体上涉及计算机。更具体地,描述了一种用于促进自主机器的通用输入/输出数据捕获和神经高速缓存系统的实施例。
背景技术
诸如机器人等自主机器需要实时识别和控制任务(诸如,同步定位与建图(SLAM))以在加速度计与其他传感器数据之间或在对特定工作地点中的对象进行识别时维持平衡。使用常规通用计算机算法和硬件来实施这种动作是复杂且昂贵的。甚至神经网络算法和硬件在使用时也需要对所有特定情况进行训练,并且因此它们对于自主机器经常遇到的多变且未预料到的环境不是非常有用。
附图说明
在所附附图的各图中,以示例方式而不以限制方式对实施例进行说明,其中相同的附图标记指代类似的要素。
图1是根据实施例的处理系统的框图。
图2是处理器的实施例的框图,所述处理器具有一个或多个处理器核、集成存储器控制器以及集成图形处理器。
图3是图形处理器的框图,所述图形处理器可以是分立的图形处理单元,或可以是与多个处理核集成的图形处理器。
图4是根据一些实施例的图形处理器的图形处理引擎的框图。
图5是图形处理器的另一实施例的框图。
图6图示出线程执行逻辑,所述线程执行逻辑包括在图形处理引擎的一些实施例中采用的处理元件的阵列。
图7是图示出根据一些实施例的图形处理器指令格式的框图。
图8是图形处理器的另一实施例的框图。
图9A是图示出根据实施例的图形处理器命令格式的框图。
图9B是图示出根据实施例的图形处理器命令序列的框图。
图10图示出根据一些实施例的用于数据处理系统的示例性图形软件架构。
图11是图示出根据实施例的可用于制造集成电路以执行操作的IP核开发系统的框图。
图12是图示出根据实施例的可使用一个或多个IP核来制造的示例性芯片上系统集成电路的框图。
图13是图示出根据实施例的可使用一个或多个IP核来制造的芯片上系统集成电路的示例性图形处理器的框图。
图14是图示出根据实施例的可使用一个或多个IP核来制造的芯片上系统集成电路的附加示例性图形处理器的框图。
图15展示了根据一个实施例的采用神经高速缓存和训练机制的计算装置。
图16展示了根据一个实施例的图15的神经高速缓存和训练机制。
图17展示了自主机器中常规数据处理流程的事务序列。
图18A展示了根据一个实施例的自主机器中数据处理流程的事务序列,所述自主机器使用基于图15的神经高速缓存和训练机制1510的神经高速缓存系统。
图18B展示了根据一个实施例的输入数据标记和捕获的事务序列。
图18C展示了根据一个实施例的输出结果数据标记和捕获的事务序列。
图18D展示了根据一个实施例的标记/数据表。
图18E展示了根据一个实施例的依赖性标记对表。
图19A展示了根据一个实施例的输入神经网络模型。
图19B展示了根据一个实施例的神经高速缓存系统启动的事务序列。
图19C展示了根据一个实施例的视觉SLAM的神经高速缓存系统的事务序列。
具体实施方式
在以下描述中,阐述了众多具体细节。然而,如本文中所描述的,可以在不具有这些特定的细节的情况下实践实施例。在其他情况下,未详细示出公知的电路、结构和技术,以避免模糊对本说明书的理解。
实施例提供了一种用于采用通用神经高速缓存系统的新颖技术,所述通用神经高速缓存系统可以容易地学习并接管自主机器中的常规复杂算法。例如,诸如机器人等自主机器可以使用红、绿、和蓝(RGB)色以及深度相机(诸如,RealSenseTM)来使用视觉SLAM算法将RBG-D数据集映射到定位和取向(也被称为“姿态”),所述视觉SLAM算法计算图像特征并且使用它们来搜索数据库以确定其定位。这种新颖技术提供一种可以容易地学习并接管任何常规复杂系统的通用神经高速缓存系统。
实施例提供了一种新颖神经高速缓存(或简称为“NC”),所述新颖神经高速缓存能够使用神经网络(“NN”)(诸如,卷积神经网络(“CNN”))以及具有输入数据和处理结果的高速缓存的其他算法和硬件。例如,这种新颖技术提供:并行地运行神经网络算法和常规算法两者、共享输入的标记高速缓存版本、输出用于训练神经网络的映射。
在某些情况下,诸如当提供辅助的机器人被新部署在家中以执行各种家务时,模块可以用于将任何输入数据处理成输出结果,同时使用高速缓存来训练NN直到其提供足够准确且精确的结果。换言之,这种新颖技术提供对能量高效NN的等待并且在所述能量高效NN已经达到足够的精度水平时使用所述能量高效NN,同时继续使用模块直到需要精确结果或传统模块已经对所述NN进行了足够地训练来提供这些精确结果。
实施例进一步提供了一种新颖技术,所述新颖技术能够覆盖使用NN可能有用但不能预先训练的若干应用,并且进一步,这种新颖技术是可应用的并且甚至可以在自主机器之外使用。实施例不限于任何特定场景或应用,甚至不限于任何特定类型或品牌的自主机器;然而为了简洁、清楚、以及易于理解,贯穿本文档作为示例呈现和讨论了视觉SLAM神经高速缓存系统,但是所述实施例不限于此。
在若干情况下,对于自主机器,可以消耗通过一个或多个输入/输出源(例如,相机、机器人眼睛、麦克风等)捕获的输入数据(例如,视频、图像、声音等)来生成输出结果(例如,显示、分析、相机姿态、控制信号等),其中,在自主机器完成作业时也消耗所述输出结果,并且因此,可能不存在存储输入数据或输出结果的任何需要。然而,在一些实施例中,自主机器需要高速缓存输入数据或输出结果中的任何一者以用于诸如另一或附加神经模型训练,然后可以采用通过这种新颖神经高速缓存系统来获得更好的高速缓存安排的实施例。
例如,可能存在与自主机器中的任务执行相关的正常信息流,并且在若干情况下,可能不存在已经设计好流程之后对其进行改变的任何需要。然而,在一些实施例中,采用这种新颖神经高速缓存系统允许训练和部署神经模型,这进而导致大大缩短了正常信息流。例如,在视觉SLAM情况下,可以积极使用如尺度不变特征变换(SIFT)和随机样本一致性(RANSAC)等方法,直到可以采用新颖神经高速缓存系统来显著地缩短执行时间。
在自主机器(诸如,机器人)中,输入数据与输出结果之间的关系是与逻辑主导的智能相反的类似直觉的智能,并且因此,这种新颖神经高速缓存系统提供了处理输入/输出数据对的更好且更加高效的方式,而不是简单地遵循类似输入、类似输出的常规技术。在考虑到自主机器可以包括以无处不在的方式为用户服务的任何数量和类型的传感器的集成的情况下,由这种机器收集的任何数据可能不仅在改进机器方面是关键的,而且在改进如何分析用户行为以及如何获得上下文方面也是关键的。实施例可以应用于自主机器以有助于收集和分析输入数据、执行数据条目、以及提供智能输出结果。
构想了如贯穿本文档讨论的神经网络是指诸如CNN等人工神经网络(ANN),所述人工神经网络由诸如人类和动物中的中央神经系统等生物神经网络(BNN)启发并且通常基于所述生物神经网络。进一步,构想了并且将注意的是,“自主机器(autonomous machine)”、或“自动机器(automatic machine)”、或“自动化或自动车辆(automated or automaticvehicle)”、或“人工智能(artificially intelligent)或人工智能代理(artificialintelligence agent)”、或“机器人”等可以与“计算装置”或“计算系统”或“计算机”等相同或类似或者是其一部分、或者通信地或物理地耦合至其,并且因此,可以贯穿本文档同义地使用和讨论这些术语。
构想了贯穿本文档可互换地引用诸如“请求”、“查询”、“作业”、“工作”、“工作项”和“工作负荷”之类的术语。类似地,“应用”或“代理”可指代或包括通过诸如自由渲染应用编程接口(API)(诸如,开放图形库11,/>12等)之类的API提供的计算机程序、软件应用、游戏、工作站应用等,其中“分派”可互换地称为“工作单元”或“绘制”,并且类似地,“应用”可互换地称为“工作流”或简单地称为“代理”。例如,诸如三维(3D)游戏的工作负荷之类的工作负荷可包括并发布任何数量和类型的“帧”,其中,每个帧可以表示图像(例如,帆船、人脸)。进一步地,每个帧可包括并提供任何数量和类型的工作单元,其中,每个工作单元可表示由其相应的帧表示的图像(例如,帆船、人脸)的部分(例如,帆船的桅杆、人脸的前额)。然而,为了一致性,贯穿本文档,每一项可由单个术语(例如,“分派”、“代理”等)来引用。
在一些实施例中,如“显示屏”和“显示表面”之类的术语可用于互换地指代显示装置的可见部分,而显示装置的其余部分可被嵌入到诸如智能电话、可穿戴装置等之类的计算装置中。构想并且应当注意,实施例不限于任何特定的计算装置、软件应用、硬件部件、显示装置、显示屏或表面、协议、标准等。例如,实施例可被应用于任何数量和类型的计算机上的任何数量和类型的实时应用,并且可与在任何数量和类型的计算机上的任何数量和类型的实时应用一起使用,所述计算机诸如台式机、膝上型计算机、平板计算机、智能电话、头戴式显示器、以及其他可穿戴装置等。进一步地,例如,使用这种新颖技术渲染高效性能的场景可用在从诸如桌面合成等之类的简单场景到诸如3D游戏、增强现实应用等之类的复杂场景的范围。
系统概述
图1是根据实施例的处理系统100的框图。在各实施例中,系统100包括一个或多个处理器102以及一个或多个图形处理器108,并且可以是单处理器台式系统、多处理器工作站系统或具有大量处理器102或处理器核107的服务器系统。在一个实施例中,系统100是被并入用于在移动装置、手持式装置或嵌入式装置内使用的芯片上系统(SoC)集成电路内的处理平台。
系统100的实施例可以包括基于服务器的游戏平台、游戏控制台,或被并入基于服务器的游戏平台、游戏控制台内,所述游戏控制台包括游戏与媒体控制台、移动游戏控制台、手持式游戏控制台、或在线游戏控制台。在一些实施例中,系统100是移动电话、智能电话、平板计算装置或移动互联网装置。数据处理系统100还可以包括可穿戴装置、与可穿戴装置耦合、或者集成在可穿戴装置中,所述可穿戴装置诸如智能手表可穿戴装置、智能眼镜装置、增强现实装置、或虚拟现实装置。在一些实施例中,数据处理系统100是电视或机顶盒装置,所述电视或机顶盒装置具有一个或多个处理器102以及由一个或多个图形处理器108生成的图形界面。
在一些实施例中,一个或多个处理器102各自包括用于处理指令的一个或多个处理器核107,这些指令在被执行时执行系统和用户软件的操作。在一些实施例中,一个或多个处理器核107中的每个处理器核被配置成用于处理特定的指令集109。在一些实施例中,指令集109可促进复杂指令集计算(CISC)、精简指令集计算(RISC)、或经由超长指令字(VLIW)的计算。多个处理器核107可各自处理不同的指令集109,所述指令集109可包括用于促进对其他指令集进行仿真的指令。处理器核107还可包括其他处理装置,诸如,数字信号处理器(DSP)。
在一些实施例中,处理器102包括高速缓存存储器104。取决于架构,处理器102可以具有单个内部高速缓存或多个层级的内部高速缓存。在一些实施例中,在处理器102的各部件之间共享高速缓存存储器。在一些实施例中,处理器102还使用外部高速缓存(例如,第3级(L3)高速缓存或末级高速缓存(LLC))(未示出),可使用已知的高速缓存一致性技术在处理器核107之间共享外部高速缓存。另外,寄存器堆106被包括在处理器102中,所述处理器102可包括用于存储不同类型的数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器、以及指令指针寄存器)。一些寄存器可以是通用寄存器,而其他寄存器可特定于处理器102的设计。
在一些实施例中,处理器102与处理器总线110耦合,以在处理器102与系统100中的其他部件之间传输诸如地址、数据、或控制信号之类的通信信号。在一个实施例中,系统100使用示例性“中枢”系统架构,所述示例性“中枢”系统架构包括存储器控制器中枢116和输入输出(I/O)控制器中枢130。存储器控制器中枢116促进存储器装置与系统100的其他部件之间的通信,而I/O控制器中枢(ICH)130提供经由本地I/O总线至I/O装置的连接。在一个实施例中,存储器控制器中枢116的逻辑被集成在处理器内。
存储器装置120可以是动态随机存取存储器(DRAM)装置、静态随机存取存储器(SRAM)装置、闪存装置、相变存储器装置、或具有合适的性能以充当进程存储器的某种其他存储器装置。在一个实施例中,存储器装置120可以作为系统100的系统存储器来进行操作,以存储数据122和指令121,以供在一个或多个处理器102执行应用或进程时使用。存储器控制器中枢116还与任选的外部图形处理器112耦合,所述任选的外部图形处理器112可与处理器102中的一个或多个图形处理器108通信以执行图形和媒体操作。
在一些实施例中,ICH 130启用外围装置以经由高速I/O总线连接到存储器装置120和处理器102。I/O外围装置包括但不限于音频控制器146、固件接口128、无线收发机126(例如,Wi-Fi、蓝牙)、数据存储装置124(例如,硬盘驱动器、闪存等)以及用于将传统(legacy)(例如,个人系统2(PS/2))装置耦合至系统的传统I/O控制器。一个或多个通用串行总线(USB)控制器142连接输入装置,这些输入装置诸如键盘和鼠标144的组合。网络控制器134还可与ICH 130耦合。在一些实施例中,高性能网络控制器(未示出)与处理器总线110耦合。将会领会,所示的系统100是示例性的而非限制性的,因为也可使用以不同方式配置的其他类型的数据处理系统。例如,I/O控制器中枢130可被集成在一个或多个处理器102内,或者存储器控制器中枢116和I/O控制器中枢130可被集成到诸如外部图形处理器112之类的分立的外部图形处理器中。
图2是处理器200的实施例的框图,所述处理器200具有一个或多个处理器核202A-202N、集成存储器控制器214、以及集成图形处理器208。图2的具有与本文中任何其他附图的元件相同的附图标记(或名称)的那些元件能以与在本文中其他地方描述的方式类似的任何方式进行操作或起作用,但不限于此。处理器200可包括附加核,这些附加核多达且包括由虚线框表示的附加核202N。处理器核202A-202N中的每一个都包括一个或多个内部高速缓存单元204A-204N。在一些实施例中,每个处理器核还可访问一个或多个共享高速缓存单元206。
内部高速缓存单元204A-204N和共享高速缓存单元206表示处理器200内的高速缓存存储器层级结构。高速缓存存储器层级结构可包括每个处理器核内的至少一个层级的指令和数据高速缓存、以及一个或多个层级的共享中级高速缓存,诸如,第2级(L2)、第3级(L3)、第4级(L4)、或其他层级的高速缓存,其中,在外部存储器之前的最高层级的高速缓存被分类为LLC。在一些实施例中,高速缓存一致性逻辑维持各高速缓存单元206与204A-204N之间的一致性。
在一些实施例中,处理器200还可包括一组一个或多个总线控制器单元216和系统代理核210。一个或多个总线控制器单元216管理一组外围总线,诸如,一个或多个外围部件互连总线(例如,PCI、PCI快速)。系统代理核210提供对各处理器部件的管理功能。在一些实施例中,系统代理核210包括一个或多个集成存储器控制器214,以管理对各外部存储器装置(未示出)的访问。
在一些实施例中,处理器核202A-202N中的一个或多个包括对同步多线程的支持。在此类实施例中,系统代理核210包括用于在多线程处理期间对核202A-202N进行协调和操作的部件。系统代理核210可附加地包括功率控制单元(PCU),所述功率控制单元包括用于调节处理器核202A-202N以及图形处理器208的功率状态的逻辑和部件。
在一些实施例中,处理器200附加地包括用于执行图形处理操作的图形处理器208。在一些实施例中,图形处理器208与共享高速缓存单元的集合206以及系统代理核210耦合,所述系统代理核210包括一个或多个集成存储器控制器214。在一些实施例中,显示控制器211与图形处理器208耦合,以将图形处理器输出驱动到一个或多个耦合的显示器。在一些实施例中,显示控制器211可以是经由至少一个互连与图形处理器耦合的分开的模块,或者可被集成在图形处理器208或系统代理核210内。
在一些实施例中,基于环的互连单元212用于耦合处理器200的内部部件。然而,可使用替代的互连单元,诸如,点对点互连、切换式互连、或其他技术,包括本领域公知的技术。在一些实施例中,图形处理器208经由I/O链路213与环形互连212耦合。
示例性I/O链路213表示各种各样的I/O互连中的至少一者,包括促进各处理器部件与高性能嵌入式存储器模块218(诸如,eDRAM模块)之间的通信的封装上I/O互连。在一些实施例中,处理器核202A-202N中的每个处理器核以及图形处理器208将嵌入式存储器模块218用作共享末级高速缓存。
在一些实施例中,处理器核202A-202N是执行同一指令集架构的同构核。在另一实施例中,处理器核202A-202N就指令集架构(ISA)而言是异构的,其中,处理器核202A-202N中的一者或多者执行第一指令集,而其他核中的至少一者执行第一指令集的子集或不同的指令集。在一个实施例中,处理器核202A-202N就微架构而言是同质的,其中,具有相对较高功耗的一个或多个核与具有较低功耗的一个或多个功率核耦合。另外,处理器200可被实现在一个或多个芯片上或者被实现为除其他部件之外还具有所图示的部件的SoC集成电路。
图3是图形处理器300的框图,所述图形处理器300可以是分立的图形处理单元、或者可以是与多个处理核集成的图形处理器。在一些实施例中,图形处理器经由至图形处理器上的寄存器的存储器映射的I/O接口并且利用被置入处理器存储器中的命令进行通信。在一些实施例中,图形处理器300包括用于访问存储器的存储器接口314。存储器接口314可以是到本地存储器、一个或多个内部高速缓存、一个或多个共享外部高速缓存、和/或到系统存储器的接口。
在一些实施例中,图形处理器300还包括用于将显示输出数据驱动到显示装置320的显示控制器302。显示控制器302包括用于显示器的一个或多个重叠平面以及视频或用户接口元件的多个层的组合的硬件。在一些实施例中,图形处理器300包括视频编解码器引擎306,以将媒体编码、解码或转码为一种或多种媒体编码格式,从一种或多种媒体编码格式编码、解码或转码媒体,或在一种或多种媒体编码格式之间进行对媒体进行编码、解码或转码,这些媒体编码格式包括但不限于:运动图像专家组(MPEG)格式(诸如,MPEG-2)、高级视频译码(AVC)格式(诸如,H.264/MPEG-4AVC)、以及电影&电视工程师协会(SMPTE)421M/VC-1、和联合图像专家组(JPEG)格式(诸如,JPEG、以及运动JPEG(MJPEG)格式)。
在一些实施例中,图形处理器300包括用于执行包括例如位边界块传递的二维(2D)光栅化器操作的块图像传递(BLIT)引擎304。然而,在一个实施例中,使用图形处理引擎(GPE)310的一个或多个部件执行2D图形操作。在一些实施例中,GPE 310是用于执行图形操作的计算引擎,这些图形操作包括三维(3D)图形操作和媒体操作。
在一些实施例中,GPE 310包括用于执行3D操作的3D流水线312,3D操作诸如,使用作用于3D图元形状(例如,矩形、三角形等)的处理功能来渲染三维图像和场景。3D流水线312包括可编程的固定功能元件,这些可编程的固定功能元件执行元件内的各种任务和/或将执行线程生成(spawn)至3D/媒体子系统315。虽然3D流水线312可以用于执行媒体操作,但是GPE 310的实施例还包括专门用于执行诸如视频后处理和图像增强之类的媒体操作的媒体流水线316。
在一些实施例中,媒体流水线316包括固定功能或可编程逻辑单元以便代替、或代表视频编解码器引擎306来执行一种或多种专业的媒体操作,诸如,视频解码加速、视频解交织、以及视频编码加速。在一些实施例中,媒体流水线316附加地包括用于生成供在3D/媒体子系统315上执行的线程的线程生成单元。所生成的线程对3D/媒体子系统315中所包括的一个或多个图形执行单元执行对媒体操作的计算。
在一些实施例中,3D/媒体子系统315包括用于执行由3D流水线312和媒体流水线316生成的线程的逻辑。在一个实施例中,流水线向3D/媒体子系统315发送线程执行请求,所述3D/媒体子系统包括用于仲裁并将各请求分派到可用的线程执行资源的线程分派逻辑。执行资源包括用于处理3D和媒体线程的图形执行单元阵列。在一些实施例中,3D/媒体子系统315包括用于线程指令和数据的一个或多个内部高速缓存。在一些实施例中,子系统还包括用于在线程之间共享数据并用于存储输出数据的共享存储器,包括寄存器和可寻址存储器。
图形处理引擎
图4是根据一些实施例的图形处理器的图形处理引擎410的框图。在一个实施例中,图形处理引擎(GPE)410是图3中示出的GPE 310的某个版本。图4的具有与本文中任何其他附图的元件相同的附图标记(或名称)的元件能以类似于本文中其他地方所描述的任何方式进行操作或起作用,但不限于此。例如,图示出图3的3D流水线312和媒体流水线316。媒体流水线316在GPE 410的一些实施例中是可选的,并且可以不显式地被包括在GPE 410内。例如并且在至少一个实施例中,分开的媒体和/或图像处理器耦合至GPE 410。
在一些实施例中,GPE 410与命令流转化器(command streamer)403耦合或包括命令流转化器403,所述命令流转化器403将命令流提供给3D流水线312和/或媒体流水线316。在一些实施例中,命令流转化器403与存储器耦合,所述存储器可以是系统存储器、或者内部高速缓存存储器和共享高速缓存存储器中的一个或多个。在一些实施例中,命令流转化器403从存储器接收命令,并且将这些命令发送至3D流水线312和/或媒体流水线316。这些命令是从环形缓冲器取出的指示,所述环形缓冲器存储用于3D流水线312和媒体流水线316的命令。在一个实施例中,环形缓冲器可以附加地包括存储多批多个命令的批命令缓冲器。用于3D流水线312的命令还可以包括对存储在存储器中的数据的引用,这些数据诸如但不限于用于3D流水线312的顶点和几何数据和/或用于媒体流水线316的图像数据和存储器对象。3D流水线312和媒体流水线316通过以下方式来处理命令和数据:经由相应流水线内的逻辑来执行操作;或将一个或多个执行线程分派到图形核阵列414。
在各实施例中,3D流水线312可以通过处理指令并将执行线程分派到图形核阵列414来执行一个或多个着色器程序,这一个或多个着色器程序诸如顶点着色器、几何着色器、像素着色器、片段着色器、计算着色器或其他着色器程序。图形核阵列414提供统一的执行资源块。图形核阵列414内的多用途执行逻辑(例如,执行单元)包括对各种3D API着色器语言的支持,并且可以执行与多个着色器相关联的多个同时执行线程。
在一些实施例中,图形核阵列414还包括用于执行媒体功能(诸如,视频和/或图像处理)的执行逻辑。在一个实施例中,除了图形处理操作之外,执行单元附加地包括可编程以执行并行的通用计算操作的通用逻辑。通用逻辑可以与图1的(多个)处理器核107或如图2中的核202A-202N内的通用逻辑并行地或相结合地执行处理操作。
由在图形核阵列414上执行的线程生成的输出数据可以将数据输出到统一返回缓冲器(URB)418中的存储器。URB 418可以存储用于多个线程的数据。在一些实施例中,URB418可用于在图形核阵列414上执行的不同线程之间发送数据。在一些实施例中,URB 418可附加地用于图形核阵列上的线程与共享功能逻辑420内的固定功能逻辑之间的同步。
在一些实施例中,图形核阵列414是可缩放的,使得所述阵列包括可变数量的图形核,每个图形核具有基于GPE 410的目标功率和性能水平的可变数量的执行单元。在一个实施例中,执行资源是动态可缩放的,使得可以根据需要启用或禁用执行资源。
图形核阵列414与共享功能逻辑420耦合,所述共享功能逻辑420包括在图形核阵列中的图形核之间共享的多个资源。共享功能逻辑420内的这些共享功能是向图形核阵列414提供专用补充功能的硬件逻辑单元。在各实施例中,共享功能逻辑420包括但不限于采样器421、数学422和线程间通信(ITC)423逻辑。另外,一些实施例在共享功能逻辑420内实现一个或多个高速缓存425。在对给定的专用功能的需求不足以包括在图形核阵列414内的情况下实现共享功能。相反,所述专用功能的单个实例化被实现为共享功能逻辑420中的独立实体,并且在图形核阵列414内的执行资源之间共享。在图形核阵列414之间被共享并且被包括在图形核阵列414内的确切的功能集在实施例之间有所不同。
图5是图形处理器500的另一实施例的框图。图5的具有与本文中的任何其他附图的元件相同的附图标记(或名称)的元件能以与在本文中其他地方描述的方式类似的任何方式进行操作或起作用,但不限于此。
在一些实施例中,图形处理器500包括环形互连502、流水线前端504、媒体引擎537和图形核580A-580N。在一些实施例中,环形互连502将图形处理器耦合至其他处理单元,其他处理单元包括其他图形处理器或者一个或多个通用处理器核。在一些实施例中,图形处理器是集成在多核处理系统内的许多处理器中的一个。
在一些实施例中,图形处理器500经由环形互连502接收多批命令。传入的命令由流水线前端504中的命令流转化器503解释。在一些实施例中,图形处理器500包括用于经由(多个)图形核580A-580N来执行3D几何处理和媒体处理的可缩放执行逻辑。对于3D几何处理命令,命令流转化器503将命令供应至几何流水线536。对于至少一些媒体处理命令,命令流转化器503将命令供应至视频前端534,所述视频前端534与媒体引擎537耦合。在一些实施例中,媒体引擎537包括用于视频和图像后处理的视频质量引擎(VQE)530以及用于提供硬件加速的媒体数据编码和解码的多格式编码/解码(MFX)533引擎。在一些实施例中,几何流水线536和媒体引擎537各自生成用于由至少一个图形核580A提供的线程执行资源的执行线程。
在一些实施例中,图形处理器500包括可缩放线程执行资源,这些可缩放线程执行资源以模块化核580A-580N(有时称为核片(core slice))为特征,这些模块化核各自具有多个子核550A-550N、560A-560N(有时称为核子片(core sub-slice))。在一些实施例中,图形处理器500可具有任何数量的图形核580A至580N。在一些实施例中,图形处理器500包括图形核580A,所述图形核580A至少具有第一子核550A和第二子核560A。在其他实施例中,图形处理器是具有单个子核(例如,550A)的低功率处理器。在一些实施例中,图形处理器500包括多个图形核580A-580N,每一个图形核都包括第一子核550A-550N的集合以及第二子核560A-560N的集合。第一子核550A-550N的集合中的每个子核至少包括执行单元552A-552N和媒体/纹理采样器554A-554N的第一集合。第二子核560A-560N的集合中的每一个子核至少包括执行单元562A-562N和采样器564A-564N的第二集合。在一些实施例中,每个子核550A-550N、560A-560N共享共享资源570A-570N的集合。在一些实施例中,共享资源包括共享高速缓存存储器和像素操作逻辑。其他共享资源也可被包括在图形处理器的各实施例中。
执行单元
图6图示出线程执行逻辑600,所述线程执行逻辑600包括在GPE的一些实施例中采用的处理元件的阵列。图6的具有与本文中任何其他附图的元件相同的附图标记(或名称)的元件能以类似于本文中其他地方所描述的任何方式进行操作或起作用,但不限于此。
在一些实施例中,线程执行逻辑600包括着色器处理器602、线程分派器604、指令高速缓存606、包括多个执行单元608A-608N的可缩放执行单元阵列、采样器610、数据高速缓存612和数据端口614。在一个实施例中,可缩放执行单元阵列可以通过基于工作负荷的计算要求启用或禁用一个或多个执行单元(例如,执行单元608A、608B、608C、608D至608N-1和608N中的任何执行单元)来动态地缩放。在一个实施例中,所包括的部件经由互连结构被互连,所述互连结构链接至这些部件中的每个部件。在一些实施例中,线程执行逻辑600包括通过指令高速缓存606、数据端口614、采样器610和执行单元608A-608N中的一者或多者而至存储器的一个或多个连接,所述存储器诸如系统存储器或高速缓存存储器。在一些实施例中,每个执行单元(例如,608A)是独立式可编程通用计算单元,所述独立式可编程通用计算单元能够执行多个同时的硬件线程,同时并行地为每个线程处理多个数据元素。在各实施例中,执行单元608A-608N的阵列是可缩放的以包括任何数量的单独的执行单元。
在一些实施例中,执行单元608A-608N主要用于执行着色器程序。着色器处理器602可以处理各种着色器程序,并且可以经由线程分派604来分派与着色器程序相关联的执行线程。在一个实施例中,线程分派器包括用于仲裁来自图形和媒体流水线的线程发起请求并在执行单元608A-608N中的一个或多个执行单元上实例化所请求的线程的逻辑。例如,几何流水线(例如,图5的536)可以将顶点着色器、曲面细分(tessellation)着色器或几何着色器分派给线程执行逻辑600(图6)以进行处理。在一些实施例中,线程分派器604还可以处理来自执行的着色器程序的运行时线程生成请求。
在一些实施例中,执行单元608A-608N支持包括对许多标准3D图形着色器指令的原生支持的指令集,使得以最少的转换来执行来自图形库(例如,Direct 3D和OpenGL)的着色器程序。执行单元支持顶点和几何处理(例如,顶点程序、几何程序、顶点着色器)、像素处理(例如,像素着色器、片段着色器)和通用处理(例如,计算和媒体着色器)。执行单元608A-608N中的每个执行单元能够进行多发布单指令多数据(SIMD)执行,并且多线程操作在面对更高等待时间的存储器访问时启用高效的执行环境。每个执行单元内的每个硬件线程具有专用的高带宽寄存器堆和相关联的独立线程状态。执行是对能够进行整数、单精度和双精度浮点运算、SIMD分支能力、逻辑运算、超越运算和其他杂项操作的流水线的每时钟的多发布。在等待来自存储器或共享功能中的一个共享功能的数据时,执行单元608A-608N内的依赖性逻辑使等待线程休眠,直到已返回所请求的数据。当等待线程处于休眠时,硬件资源可致力于处理其他线程。例如,在与顶点着色器操作相关联的延迟期间,执行单元可以执行用于像素着色器、片段着色器或另一类型的着色器程序(包括不同的顶点着色器)的操作。
执行单元608A-608N中的每个执行单元对数据元素阵列进行操作。数据元素的数量是“执行大小”、或指令的通道数量。执行通道是执行数据元素访问、掩码、和指令内的流控制的逻辑单元。通道的数量可与针对特定的图形处理器的物理算术逻辑单元(ALU)或浮点单元(FPU)的数量无关。在一些实施例中,执行单元608A-608N支持整数和浮点数据类型。
执行单元指令集包括SIMD指令。各种数据元素可作为紧缩数据类型存储在寄存器中,并且执行单元将基于元素的数据大小来处理各种元素。例如,当对256位宽的向量进行操作时,所述256位的向量被存储在寄存器中,并且执行单元作为四个单独的64位紧缩数据元素(四字(QW)大小的数据元素)、八个单独的32位紧缩数据元素(双字(DW)大小的数据元素)、十六个单独的16位紧缩数据元素(字(W)大小的数据元素)、或三十二个单独的8位数据元素(字节(B)大小的数据元素)对向量进行操作。然而,不同的向量宽度和寄存器大小是可能的。
一个或多个内部指令高速缓存(例如,606)被包括在线程执行逻辑600中,以对用于执行单元的线程指令进行高速缓存。在一些实施例中,一个或多个数据高速缓存(例如,612)被包括,以对在线程执行期间的线程数据进行高速缓存。在一些实施例中,采样器610被包括,从而为3D操作提供纹理采样并且为媒体操作提供媒体采样。在一些实施例中,采样器610包括专业的纹理或媒体采样功能,以在向执行单元提供所采样的数据之前在采样过程中处理纹理或媒体数据。
在执行期间,图形和媒体流水线经由线程生成和分派逻辑向线程执行逻辑600发送线程发起请求。一旦一组几何对象已经被处理并被光栅化成像素数据,着色器处理器602内的像素处理器逻辑(例如,像素着色逻辑、片段着色器逻辑等)就被调用,以进一步计算输出信息并且使得结果被写入到输出表面(例如,颜色缓冲器、深度缓冲器、模板印刷(stencil)缓冲器等)。在一些实施例中,像素着色器或片段着色器计算各顶点属性的值,各顶点属性的这些值将跨光栅化的对象被内插。在一些实施例中,着色器处理器602内的像素处理器逻辑随后执行应用编程接口(API)供应的像素或片段着色器程序。为了执行着色器程序,着色器处理器602经由线程分派器604将线程分派至执行单元(例如,608A)。在一些实施例中,像素着色器602使用采样器610中的纹理采样逻辑来访问存储器中所存储的纹理图中的纹理数据。对纹理数据和输入几何数据的算术运算计算每个几何片段的像素颜色数据,或丢弃一个或多个像素而不进行进一步处理。
在一些实施例中,数据端口614提供存储器访问机制,以供线程执行逻辑600将经处理的数据输出至存储器以便在图形处理器输出流水线上进行处理。在一些实施例中,数据端口614包括或耦合至一个或多个高速缓存存储器(例如,数据高速缓存612),从而对用于经由数据端口进行的存储器访问的数据进行高速缓存。
图7是图示出根据一些实施例的图形处理器指令格式700的框图。在一个或多个实施例中,图形处理器执行单元支持具有以多种格式的指令的指令集。实线框图示出一般被包括在执行单元指令中的组成部分,而虚线包括任选的或仅被包括在指令子集中的组成部分。在一些实施例中,所描述和图示的指令格式700是宏指令,因为它们是供应至执行单元的指令,这与从一旦指令被处理就进行的指令解码产生的微操作相对照。
在一些实施例中,图形处理器执行单元原生地支持采用128位指令格式710的指令。64位紧凑指令格式730可用于基于所选择的指令、多个指令选项和操作数数量的一些指令。原生的128位指令格式710提供对所有指令选项的访问,而一些选项和操作在64位格式730中受限。64位格式730中可用的原生指令根据实施例而不同。在一些实施例中,使用索引字段713中的一组索引值将指令部分地压缩。执行单元硬件基于索引值来引用一组压缩表,并使用压缩表输出来重构采用128位指令格式710的原生指令。
针对每种格式,指令操作码712限定执行单元要执行的操作。执行单元跨每个操作数的多个数据元素并行地执行每条指令。例如,响应于添加指令,执行单元跨标识纹理元素或图片元素的每个颜色通道执行同步添加操作。默认地,执行单元跨操作数的所有数据通道执行每条指令。在一些实施例中,指令控制字段714实现对某些执行选项的控制,这些执行选项诸如通道选择(例如,断言)以及数据通道排序(例如,混合)。针对采用128位指令格式710的指令,执行大小字段716限制了将并行地执行的数据通道的数量。在一些实施例中,执行大小字段716不可用于64位紧凑指令格式730。
一些执行单元指令具有多达三个操作数,包括两个源操作数src0 720、src1722和一个目的地718。在一些实施例中,执行单元支持双目的地指令,其中这些目的地中的一个是隐式的。数据操纵指令可以具有第三源操作数(例如,SRC2 724),其中,指令操作码712确定源操作数的数量。指令的最后的源操作数可以是利用所述指令传递的立即数(例如,硬编码的)值。
在一些实施例中,128位指令格式710包括访问/地址模式字段726,所述访问/地址模式字段726指定例如是使用直接寄存器寻址模式还是间接寄存器寻址模式。当使用直接寄存器寻址模式时,由指令中的位直接提供一个或多个操作数的寄存器地址。
在一些实施例中,128位指令格式710包括访问/地址模式字段726,所述访问/地址模式字段726指定针对指令的地址模式和/或访问模式。在一个实施例中,访问模式用于限定针对指令的数据访问对齐。一些实施例支持包括16字节对齐访问模式和1字节对齐访问模式的访问模式,其中,访问模式的字节对齐确定指令操作数的访问对齐。例如,当处于第一模式时,指令可将字节对齐的寻址用于源操作数和目的地操作数,并且当处于第二模式时,指令可将16字节对齐的寻址用于所有的源操作数和目的地操作数。
在一个实施例中,访问/地址模式字段726的地址模式部分确定指令要使用直接寻址还是间接寻址。当使用直接寄存器寻址模式时,指令中的位直接提供一个或多个操作数的寄存器地址。当使用间接寄存器寻址模式时,可基于指令中的地址寄存器值和地址立即数字段来计算一个或多个操作数的寄存器地址。
在一些实施例中,基于操作码712的位字段对指令进行分组从而简化操作码解码740。针对8位的操作码,位4、5、和6允许执行单元确定操作码的类型。所示出的确切的操作码分组仅为示例。在一些实施例中,移动和逻辑操作码组742包括数据移动和逻辑指令(例如,移动(mov)、比较(cmp))。在一些实施例中,移动和逻辑组742共享五个最高有效位(MSB),其中移动(mov)指令采用0000xxxxb的形式,并且逻辑指令采用0001xxxxb的形式。流控制指令组744(例如,调用(call)、跳转(jmp))包括采用0010xxxxb形式(例如,0x20)的指令。混杂指令组746包括指令的混合,包括采用0011xxxxb形式(例如,0x30)的同步指令(例如,等待(wait)、发送(send))。并行数学指令组748包括采用0100xxxxb形式(例如,0x40)的按分量的算术指令(例如,加(add)、乘(mul))。并行数学组748跨数据通道并行地执行算术运算。向量数学组750包括采用0101xxxxb形式(例如,0x50)的算术指令(例如,dp4)。向量数学组对向量操作数执行算术运算,诸如,点积计算。
图形流水线
图8是图形处理器800的另一实施例的框图。图8的具有与本文中任何其他附图中的元件相同的附图标记(或名称)的元件能以与在本文中其他地方描述的方式类似的任何方式进行操作或起作用,但不限于此。
在一些实施例中,图形处理器800包括图形流水线820、媒体流水线830、显示引擎840、线程执行逻辑850、以及渲染输出流水线870。在一些实施例中,图形处理器800是包括一个或多个通用处理核的多核处理系统内的图形处理器。图形处理器通过至一个或多个控制寄存器(未示出)的寄存器写入或者经由通过环形互连802发布至图形处理器800的命令而受控。在一些实施例中,环形互连802将图形处理器800耦合至其他处理部件,其他处理部件诸如其他图形处理器或通用处理器。来自环形互连802的命令由命令流转化器803解译,所述命令流转化器803将指令供应至图形流水线820或媒体流水线830的单独部件。
在一些实施例中,命令流转化器803引导顶点获取器805的操作,所述顶点获取器805从存储器读取顶点数据并执行由命令流转化器803提供的顶点处理命令。在一些实施例中,顶点获取器805将顶点数据提供给顶点着色器807,所述顶点着色器807对每个顶点执行坐标空间变换和照明操作。在一些实施例中,顶点获取器805和顶点着色器807通过经由线程分派器831向执行单元852A、852B分派执行线程来执行顶点处理指令。
在一些实施例中,执行单元852A-852B是具有用于执行图形和媒体操作的指令集的向量处理器阵列。在一些实施例中,执行单元852A、852B具有专用于每个阵列或在多个阵列之间被共享的附加的L1高速缓存851。高速缓存可以被配置为数据高速缓存、指令高速缓存、或被分区以不同分区中包含数据和指令的单个高速缓存。
在一些实施例中,图形流水线820包括用于执行3D对象的硬件加速的曲面细分的曲面细分部件。在一些实施例中,可编程的外壳着色器811配置曲面细分操作。可编程域着色器817提供对曲面细分输出的后端评估,其中曲面细分器813在外壳着色器811的指示下进行操作,并且包含专用逻辑,所述专用逻辑用于基于作为输入被提供至图形流水线820的粗糙的几何模型来生成详细的几何对象的集合。在一些实施例中,如果未使用曲面细分,则可以绕过曲面细分部件(例如,外壳着色器811、曲面细分器813、以及域着色器817)。
在一些实施例中,完整的几何对象可以由几何着色器819经由被分派至所述执行单元852A-852B的一个或多个线程来处理、或者可以直接行进至剪辑器829。在一些实施例中,几何着色器对整个几何对象进行操作,而不是如在图形流水线的先前级中那样对顶点或顶点补片(patch))进行操作。如果禁用曲面细分,则几何着色器819从顶点着色器807接收输入。在一些实施例中,几何着色器819是可由几何着色器程序编程的,以便在曲面细分单元被禁用时执行几何曲面细分。
在光栅化之前,剪辑器829处理顶点数据。剪辑器829可以是固定功能剪辑器或者具有剪辑和几何着色器功能的可编程剪辑器。在一些实施例中,渲染输出流水线870中的光栅化器和深度测试部件873分派像素着色器,以将几何对象转换为它们的每像素表示。在一些实施例中,像素着色器逻辑被包括在线程执行逻辑850中。在一些实施例中,应用可绕过光栅化器和深度测试部件873,并且经由流出单元823访问未光栅化的顶点数据。
图形处理器800具有允许数据和消息在处理器的主要部件之间传递的互连总线、互连结构或某个其他互连机制。在一些实施例中,执行单元852A-852B和(多个)相关联的高速缓存851、纹理和媒体采样器854、以及纹理/采样器高速缓存858经由数据端口856进行互连,以执行存储器访问并且与处理器的渲染输出流水线部件进行通信。在一些实施例中,采样器854、高速缓存851、858以及执行单元852A-852B各自都具有单独的存储器访问路径。
在一些实施例中,渲染输出流水线870包含光栅化器和深度测试部件873,所述光栅化器和深度测试部件873将基于顶点的对象转换为相关联的基于像素的表示。在一些实施例中,光栅化器逻辑包括用于执行固定功能三角形和线光栅化的窗口器/掩蔽器单元。相关联的渲染高速缓存878和深度高速缓存879在一些实施例中也是可用的。像素操作部件877对数据执行基于像素的操作,然而在一些实例中,与2D操作(例如,利用混合的位块图像传递)相关联的像素操作由2D引擎841执行,或者在显示时间由显示控制器843使用重叠显示平面来代替。在一些实施例中,共享L3高速缓存875可用于所有的图形部件,从而允许在无需使用主系统存储器的情况下共享数据。
在一些实施例中,图形处理器媒体流水线830包括媒体引擎837和视频前端834。在一些实施例中,视频前端834从命令流转化器803接收流水线命令。在一些实施例中,媒体流水线830包括单独的命令流转化器。在一些实施例中,视频前端834在将命令发送至媒体引擎837之前处理媒体命令。在一些实施例中,媒体引擎837包括用于生成线程以用于经由线程分派器831分派至线程执行逻辑850的线程生成功能。
在一些实施例中,图形处理器800包括显示引擎840。在一些实施例中,显示引擎840在处理器800外部,并且经由环形互连802、或某个其他互连总线或结构与图形处理器耦合。在一些实施例中,显示引擎840包括2D引擎841和显示控制器843。在一些实施例中,显示引擎840包含能够独立于3D流水线而操作的专用逻辑。在一些实施例中,显示控制器843与显示装置(未示出)耦合,所述显示装置可以是系统集成的显示装置(如在膝上型计算机中)、或者经由显示装置连接器附接的外部显示装置。
在一些实施例中,图形流水线820和媒体流水线830可被配置成用于基于多个图形和媒体编程接口执行操作,并且并非专用于任何一种应用编程接口(API)。在一些实施例中,图形处理器的驱动器软件将专用于特定图形或媒体库的API调用转换为可由图形处理器处理的命令。在一些实施例中,为开放图形库(OpenGL)、开放计算语言(OpenCL)和/或Vulkan图形和计算API(所有这些来自科纳斯组织(Khronos Group))提供支持。在一些实施例中,还可为来自微软公司的Direct3D库提供支持。在一些实施例中,可支持这些库的组合。还可为开源计算机视觉库(OpenCV)提供支持。如果可做出从未来API的流水线到图形处理器的流水线的映射,则具有兼容的3D流水线的未来API也将受到支持。
图形流水线编程
图9A是图示出根据一些实施例的图形处理器命令格式900的框图。图9B是图示出根据实施例的图形处理器命令序列910的框图。图9A中的实线框图示出一般被包括在图形命令中的组成成分,而虚线包括任选的或者仅被包括在图形命令的子集中的组成部分。图9A的示例性图形处理器命令格式900包括用于标识命令的目标客户端902、命令操作代码(操作码)904、以及用于命令的有关数据906的数据字段。一些命令中还包括子操作码905和命令大小908。
在一些实施例中,客户端902指定处理命令数据的图形装置的客户端单元。在一些实施例中,图形处理器命令解析器检查每个命令的客户端字段,以调整对命令的进一步处理,并将命令数据路由至合适的客户端单元。在一些实施例中,图形处理器客户端单元包括存储器接口单元、渲染单元、2D单元、3D单元、和媒体单元。每个客户端单元具有对命令进行处理的相应的处理流水线。一旦命令被客户端单元接收到,客户端单元就读取操作码904以及子操作码905(如果存在),从而确定要执行的操作。客户端单元使用数据字段906中的信息来执行命令。针对一些命令,期望显式的命令大小908来指定命令的大小。在一些实施例中,命令解析器基于命令操作码自动地确定命令中的至少一些命令的大小。在一些实施例中,经由双字的倍数使命令对齐。
图9B中的流程图示出了示例性图形处理器命令序列910。在一些实施例中,以图形处理器的实施例为特征的数据处理系统的软件或固件使用所示出的命令序列的版本来启动、执行并终止图形操作集合。仅出于示例性目的示出并描述了样本命令序列,因为实施例并不限于这些特定命令,也不限于此命令序列。而且,所述命令可以作为批量命令以命令序列被发布,以使得图形处理器将以至少部分同时的方式处理命令序列。
在一些实施例中,图形处理器命令序列910可开始于:流水线转储清除命令912,以使得任一活跃的图形流水线完成所述流水线的当前未决的命令。在一些实施例中,3D流水线922和媒体流水线924不同时进行操作。执行流水线转储清除,以使得活跃的图形流水线完成任何未决的命令。响应于流水线转储清除,用于图形处理器的命令解析器将暂停命令处理,直到活跃的绘图引擎完成未决的操作并且相关的读高速缓存被无效。任选地,渲染高速缓存中被标记为‘脏’的任何数据可以被转储清除到存储器。在一些实施例中,流水线转储清除命令912可以用于流水线同步或者用在将图形处理器置于低功率状态之前。
在一些实施例中,当命令序列需要图形处理器在流水线之间显式地切换时,使用流水线选择命令913。在一些实施例中,除非上下文是发布用于这两条流水线的命令,否则在发布流水线命令之前,在执行上下文中仅需要一次流水线选择命令913。在一些实施例中,在经由流水线选择命令913的流水线切换之前正好需要流水线转储清除命令912。
在一些实施例中,流水线控制命令914配置用于操作的图形流水线,并且用于对3D流水线922和媒体流水线924进行编程。在一些实施例中,流水线控制命令914配置用于活跃流水线的流水线状态。在一个实施例中,流水线控制命令914用于流水线同步,并且用于在处理批量命令之前清除来自活跃的流水线内的一个或多个高速缓存存储器的数据。
在一些实施例中,返回缓冲器状态命令916用于配置返回缓冲器的集合以供相应的流水线写入数据。一些流水线操作需要分配、选择、或配置一个或多个返回缓冲器,在处理期间,所述操作将中间数据写入到所述一个或多个返回缓冲器中。在一些实施例中,图形处理器还使用一个或多个返回缓冲器以存储输出数据并且执行跨线程通信。在一些实施例中,返回缓冲器状态916包括选择用于流水线操作集合的返回缓冲器的大小和数量。
命令序列中的剩余命令基于用于操作的活跃的流水线而不同。基于流水线判定920,命令序列被定制用于以3D流水线状态930开始的3D流水线922、或者开始于媒体流水线状态940的媒体流水线924。
用于配置3D流水线状态930的命令包括用于顶点缓冲器状态、顶点元素状态、常量颜色状态、深度缓冲器状态、以及有待在处理3D图元命令之前配置的其他状态变量的3D状态设置命令。这些命令的值至少部分地基于使用中的特定3D API来确定。在一些实施例中,如果将不使用某些流水线元件,则3D流水线状态930命令还能够选择性地禁用或绕过这些特定的流水线元件。
在一些实施例中,3D图元932命令用于提交待由3D流水线处理的3D图元。经由3D图元932命令传递给图形处理器的命令和相关联参数将被转发到图形流水线中的顶点获取功能。顶点获取功能使用3D图元932命令数据来生成顶点数据结构。顶点数据结构被存储在一个或多个返回缓冲器中。在一些实施例中,3D图元932命令用于经由顶点着色器对3D图元执行顶点操作。为了处理顶点着色器,3D流水线922将着色器执行线程分派至图形处理器执行单元。
在一些实施例中,经由执行934命令或事件来触发3D流水线922。在一些实施例中,寄存器写入触发命令执行。在一些实施例中,经由命令序列中的‘前进’(‘go’)或‘踢除’(‘kick’)命令来触发执行。在一个实施例中,使用流水线同步命令来触发命令执行,以对通过图形流水线的命令序列进行转储清除。3D流水线将针对3D图元来执行几何处理。一旦完成操作,则对所得到的几何对象进行光栅化,并且像素引擎对所得到的像素进行着色。对于那些操作,还可以包括用于控制像素着色和像素后端操作的附加命令。
在一些实施例中,当执行媒体操作时,图形处理器命令序列910跟随媒体流水线924路径。一般地,针对媒体流水线924进行编程的具体用途和方式取决于待执行的媒体或计算操作。在媒体解码期间,特定的媒体解码操作可被卸载到媒体流水线。在一些实施例中,还可绕过媒体流水线,并且可使用由一个或多个通用处理核提供的资源来整体地或部分地执行媒体解码。在一个实施例中,媒体流水线还包括用于通用图形处理器单元(GPGPU)操作的元件,其中,图形处理器用于使用计算着色器程序来执行SIMD向量运算,所述计算着色器程序与渲染图形图元不是显式地相关的。
在一些实施例中,以与3D流水线922相似的方式对媒体流水线924进行配置。将用于配置媒体流水线状态940的一组命令分派或放置到命令队列中,在媒体对象命令942之前。在一些实施例中,媒体流水线状态命令940包括用于配置媒体流水线元件的数据,这些媒体流水线元件将用于处理媒体对象。这包括用于在媒体流水线内配置视频解码和视频编码逻辑的数据,诸如,编码或解码格式。在一些实施例中,媒体流水线状态命令940还支持将一个或多个指针用于包含批量的状态设置的“间接”状态元件。
在一些实施例中,媒体对象命令942将指针供应至媒体对象以用于由媒体流水线进行处理。媒体对象包括存储器缓冲器,所述存储器缓冲器包含待处理的视频数据。在一些实施例中,在发布媒体对象命令942之前,所有的媒体流水线状态必须是有效的。一旦流水线状态被配置并且媒体对象命令942被排队,则经由执行944命令或等效的执行事件(例如,寄存器写入)来触发媒体流水线924。随后可通过由3D流水线922或媒体流水线924提供的操作对来自媒体流水线924的输出进行后处理。在一些实施例中,以与媒体操作类似的方式来配置和执行GPGPU操作。
图形软件架构
图10图示出根据一些实施例的用于数据处理系统1000的示例性图形软件架构。在一些实施例中,软件架构包括3D图形应用1010、操作系统1020、以及至少一个处理器1030。在一些实施例中,处理器1030包括图形处理器1032以及一个或多个通用处理器核1034。图形应用1010和操作系统1020各自在数据处理系统的系统存储器1050中执行。
在一些实施例中,3D图形应用1010包含一个或多个着色器程序,所述一个或多个着色器程序包括着色器指令1012。着色器语言指令可以采用高级着色器语言,诸如,高级着色器语言(HLSL)或OpenGL着色器语言(GLSL)。应用还包括可执行指令1014,所述可执行指令1014采用适合用于由通用处理器核1034执行的机器语言。应用还包括由顶点数据限定的图形对象1016。
在一些实施例中,操作系统1020是来自微软公司的操作系统、专用类UNIX操作系统、或使用Linux内核的变体的开源类UNIX操作系统。操作系统1020可以支持图形API1022,诸如,Direct3D API、OpenGL API或Vulkan API。当Direct3D API正在使用时,操作系统1020使用前端着色器编译器1024以将采用HLSL的任何着色器指令1012编译成较低级的着色器语言。编译可以是即时(JIT)编译,或者应用可以执行着色器预编译。在一些实施例中,在对3D图形应用1010进行编译期间,将高级着色器编译成低级着色器。在一些实施例中,以中间形式(诸如,由Vulkan API使用的某个版本的标准便携式中间表示(SPIR))提供着色器指令1012。在一些实施例中,用户模式图形驱动器1026包含后端着色器编译器1027,所述后端着色器编译器1027用于将着色器指令1012转换为硬件专用的表示。当OpenGL API正在使用时,将采用GLSL高级语言的着色器指令1012传递至用户模式图形驱动器1026以用于编译。在一些实施例中,用户模式图形驱动器1026使用操作系统内核模式功能1028来与内核模式图形驱动器1029进行通信。在一些实施例中,内核模式图形驱动器1029与图形处理器1032进行通信以分派命令和指令。
IP核实现
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性代码实现,所述机器可读介质表示和/或限定集成电路(诸如,处理器)内的逻辑。例如,机器可读介质可包括表示处理器内的各个逻辑的指令。当由机器读取时,指令可使机器制造用于执行本文中所描述的技术的逻辑。此类表示(称为“IP核”)是集成电路的逻辑的可重复使用单元,这些可重复使用单元可以作为对集成电路的结构进行描述的硬件模型而被存储在有形的机器可读介质上。可将所述硬件模型供应给各消费者或制造设施,这些消费者或制造设施将所述硬件模型加载在制造集成电路的制造机器上。可制造集成电路,以使得电路执行与本文中所描述的实施例中的任一实施例相关联地描述的操作。
图11是图示出根据实施例的可以用于制造集成电路以执行操作的IP核开发系统1100的框图。IP核开发系统1100可用于生成可以并入到更大的设计中或用于构建整个集成电路(例如,SOC集成电路)的模块化、可重复使用的设计。设计设施1130可以采用高级编程语言(例如,C/C++)来生成对IP核设计的软件仿真1110。软件仿真1110可以用于使用仿真模型1112来设计、测试并验证IP核的行为。仿真模型1112可以包括功能、行为和/或时序仿真。然后可从仿真模型1112创建或合成寄存器传输级(RTL)设计1115。RTL设计1115是对硬件寄存器之间的数字信号的流动进行建模的集成电路(包括使用建模的数字信号执行的相关联的逻辑)的行为的抽象。除了RTL设计1115之外,还可以创建、设计或合成处于逻辑级或晶体管级的较低层级的设计。由此,初始设计和仿真的具体细节可有所不同。
可由设计设施将RTL设计1115或等效方案进一步合成为硬件模型1120,所述硬件模型1120可采用硬件描述语言(HDL)或物理设计数据的某种其他表示。可以进一步仿真或测试HDL以验证IP核设计。可使用非易失性存储器1140(例如,硬盘、闪存、或任何非易失性存储介质)来存储IP核设计以用于递送至第3方制造设施1165。替代地,可以通过有线连接1150或无线连接1160来传输(例如,经由互联网)IP核设计。制造设施1165随后可制造至少部分地基于IP核设计的集成电路。所制造的集成电路可以被配置成用于执行根据本文中所描述的至少一个实施例的操作。
示例性芯片上系统集成电路
图12-图14图示出根据本文中所描述的各实施例的可使用一个或多个IP核来制造的示例性集成电路和相关联的图形处理器。除了所图示的之外,还可包括其他逻辑和电路,包括附加的图形处理器/核、外围接口控制器或通用处理器核。
图12是图示出根据实施例的可使用一个或多个IP核来制造的示例性芯片上系统集成电路1200的框图。示例性集成电路1200包括一个或多个应用处理器1205(例如,CPU)、至少一个图形处理器1210,并且可附加地包括图像处理器1215和/或视频处理器1220,其中的任一项都可以是来自相同的或多个不同的设计设施的模块化IP核。集成电路1200包括外围或总线逻辑,所述外围或总线逻辑包括USB控制器1225、UART控制器1230、SPI/SDIO控制器1235和I2S/I2C控制器1240。另外,集成电路可以包括显示装置1245,所述显示装置1245耦合至高清晰度多媒体接口(HDMI)控制器1250和移动产业处理器接口(MIPI)显示接口1255中的一个或多个。可由闪存子系统1260(包括闪存和闪存控制器)来提供存储。可经由存储器控制器1265来提供存储器接口以访问SDRAM或SRAM存储器装置。另外,一些集成电路附加地包括嵌入式安全引擎1270。
图13是图示出根据实施例的可使用一个或多个IP核来制造的芯片上系统集成电路的示例性图形处理器1310的框图。图形处理器1310可以是图12的图形处理器1210的变体。图形处理器1310包括顶点处理器1305以及一个或多个片段处理器1315A-1315N(例如,1315A、1315B、1315C、1315D至1315N-1和1315N)。图形处理器1310可以经由分开的逻辑执行不同的着色器程序,以使得顶点处理器1305被优化成执行用于顶点着色器程序的操作,而一个或多个片段处理器1315A-1315N执行用于片段或像素着色器程序的片段(例如,像素)着色操作。顶点处理器1305执行3D图形流水线的顶点处理级,并生成图元和顶点数据。(多个)片段处理器1315A-1315N使用由顶点处理器1305生成的图元和顶点数据来产生显示在显示装置上的帧缓冲器。在一个实施例中,(多个)片段处理器1315A-1315N被优化成执行如提供用于OpenGL API中的片段着色器程序,片段处理器1315A-1315N可用于执行与如提供用于Direct 3DAPI中的像素着色器程序类似的操作。
图形处理器1310附加地包括一个或多个存储器管理单元(MMU)1320A-1320B、(多个)高速缓存1325A-1325B和(多个)电路互连1330A-1330B。一个或多个MMU 1320A-1320B提供用于集成电路1310的虚拟到物理地址映射,包括用于顶点处理器1305和/或(多个)片段处理器1315A-1315N的虚拟到物理地址映射,除了存储在一个或多个高速缓存1325A-1325B中的顶点或图像/纹理数据之外,顶点处理器1305和/或(多个)片段处理器1315A-1315N还可引用存储在存储器中的顶点或图像/纹理数据。在一个实施例中,一个或多个MMU 1325A-1325B可与系统内的其他MMU同步,以使得每个处理器1205-1220可以参与共享或统一虚拟存储器系统,其他MMU包括与图12的一个或多个应用处理器1205、图像处理器1215和/或视频处理器1220相关联的一个或多个MMU。根据实施例,一个或多个电路互连1330A-1330B使得图形处理器1310能够经由SoC的内部总线或经由直接连接与SoC内的其他IP核接口连接。
图14是图示出根据实施例的可使用一个或多个IP核来制造的芯片上系统集成电路的附加示例性图形处理器1410的框图。图形处理器1410可以是图12的图形处理器1210的变体。图形处理器1410包括图13的集成电路1300的一个或多个MMU 1320A-1320B、高速缓存1325A-1325B和电路互连1330A-1330B。
图形处理器1410包括一个或多个着色器核1415A-1415N(例如,1415A、1415B、1415C、1415D、1415E、1415F至1315N-1和1315N),所述一个或多个着色器核1415A-1415N提供统一着色器核架构,在所述统一着色器核架构中,单个核或单类型的核可以执行所有类型的可编程着色器代码,包括用于实现顶点着色器、片段着色器和/或计算着色器的着色器程序代码。存在的着色器核的确切数量在各实施例和各实现方式之间可以有所不同。另外,图形处理器1410包括核间任务管理器1405和分块单元(tiling unit)1418,所述核间任务管理器1405充当线程分派器以将执行线程分派给一个或多个着色器核1415A-1415N,所述分块单元1418用于加速用于基于图块的渲染的分块操作,在用于基于图块的渲染的分块操作中,对场景的渲染操作被细分在图像空间中,从而例如利用场景内的局部空间一致性,或优化内部高速缓存的使用。
图15展示了根据一个实施例的采用神经高速缓存和训练机制(“神经机制”)1510的计算装置1500。计算装置1500可以包括自主机器或人工智能代理,诸如,机械代理或机器、电子代理或机器、虚拟代理或机器、机电代理或机器等。自主机器或人工智能代理的示例可以包括(但不限于)机器人、自主车辆(例如,无人驾驶汽车、无人驾驶飞机、无人驾驶轮船等)、自主设备(自操作建筑车辆、自操作医疗设备等)等。贯穿本文档,“计算装置”可以被同义地称为“自主机器”或“人工智能代理”或简称“机器人”。
计算装置1500可以进一步包括智能可穿戴装置、虚拟现实(VR)装置、头戴式显示器(HMD)、移动计算机、物联网(IoT)装置、膝上型计算机、台式计算机、服务器计算机等,并且可以与图1的数据处理系统100类似或相同;因此为了简洁、清楚和易于理解,此后不再进一步讨论或重复以上参照图1至图14陈述的细节中的许多细节。如所展示的,在一个实施例中,计算装置1500被示出为托管神经机制1510。
如所展示的,在一个实施例中,神经机制1510可以由操作系统1506托管或是所述操作系统的一部分。在另一实施例中,神经机制1510可以由图形驱动器1516托管或是所述图形驱动器的一部分。在又一实施例中,神经机制1510可以由图形处理单元(“GPU”或“图形处理器”)1514的固件托管或者是所述固件的一部分。在又一实施例中,神经机制1510可以由中央处理单元(“CPU”或“应用处理器”)1512的固件托管或者是所述固件的一部分。在又一实施例中,神经机制1510可以由以上讨论的部件的任何组合托管或是所述任何组合的一部分,诸如,神经机制1500的一部分可以作为软件逻辑由图形驱动器1516托管,而神经机制1500的另一部分可以作为硬件部件由图形处理器1514托管。
为了简洁、清楚和易于理解,贯穿本文档的其余部分,神经机制1510被示出并讨论为如由操作系统1506托管;然而,实施例不限于此。构想了并将注意的是,神经机制1510或其部件中的一个或多个可以被实施为硬件、软件和/或固件。
贯穿本文档,术语“用户”可被互换地称为“观看者”、“观察者”、“人”、“个人”、“终端用户”等等。应当注意,贯穿本文档,如“图形域”等术语可与“图形处理单元”、“图形处理器”或简单地与“GPU”互换地引用,并且类似地,“CPU域”或“主机域”可与“计算机处理单元”、“应用处理器”或简单地与“CPU”互换地引用。
计算装置1500可包括任何数量和类型的通信装置,诸如大型计算系统,诸如,服务器计算机、台式计算机等,并且可进一步包括机顶盒(例如,基于互联网的有线电视机顶盒等)、基于全球定位系统(GPS)的装置等。计算装置1500可包括充当通信装置的移动计算装置,诸如包括智能电话的蜂窝电话、个人数字助理(PDA)、平板计算机、膝上型计算机、电子阅读器、智能电视、电视平台、可穿戴装置(例如,眼镜、手表、手环、智能卡、珠宝、衣物等)、媒体播放器等。例如,在一个实施例中,计算装置1500可以包括采用计算机平台的移动计算装置,所述计算机平台主控将计算装置1500的各种硬件和/或软件部件集成在单个芯片上的诸如芯片上系统(“SoC”或“SOC”)之类的集成电路(“IC”)。
如所图示,在一个实施例中,计算装置1500可包括任何数量和类型的硬件和/或软件部件,诸如(但不限于)GPU 1514、图形驱动器(也称为“GPU驱动器”、“图形驱动器逻辑”、“驱动器逻辑”、用户模式驱动器(UMD)、UMD、用户模式驱动器框架(UMDF)、UMDF或简称为“驱动器”)1516,CPU 1512、存储器1508、网络装置、驱动器等等,以及诸如触摸屏、触摸面板、触摸板、虚拟或常规键盘、虚拟或常规鼠标、端口、连接器等之类的输入/输出(I/O)源1504。计算装置1500可包括用作计算装置1500的硬件和/或物理资源与用户之间的接口的操作系统(OS)1506。构想了CPU 1512可包括一个或多个处理器,诸如图1的(多个)处理器102,而GPU1514可包括一个或多个图形处理器,诸如图1的(多个)图形处理器108。
应当注意,贯穿本文档,可互换地使用如“节点”、“计算节点”、“服务器”、“服务器装置”、“云计算机”、“云服务器”、“云服务器计算机”、“机器”、“主机”、“装置”、“计算装置”、“计算机”、“计算系统”等术语。应当进一步注意,贯穿本文档,可互换地使用如“应用”、“软件应用”、“程序”、“软件程序”、“包”、“软件包”等术语。并且,贯穿本文档,可互换地使用如“作业”、“输入”、“请求”、“消息”等术语。
构想了并且如参考图1-14进一步所描述,如以上所描述的图形流水线的某些进程在软件中实现,而其余部分则在硬件中实现。图形流水线能以图形协处理器设计来实现,其中,CPU 1512被设计为用于与GPU 1514一起工作,所述GPU 1514可被包括在CPU 1512中或与所述CPU 1512位于一起。在一个实施例中,GPU 1514可采用用于执行与图形渲染有关的常规功能的任何数量与类型的常规软件与硬件逻辑,以及用于执行任何数量与类型的指令(诸如,图1的指令121)以执行贯穿本文档所公开的姿态回归机制1510的各种新颖功能的新颖的软件与硬件逻辑。
如上所述,存储器1508可包括随机存取存储器(RAM),所述RAM包括具有对象信息的应用数据库。存储器控制器中枢(诸如,图1的存储器控制器中枢116)可访问RAM中的数据,并将其转发到GPU 1514以用于图形流水线处理。RAM可包括双倍数据速率RAM(DDRRAM)、扩展数据输出RAM(EDO RAM)等。如参照图3所图示,CPU 1512与硬件图形流水线交互以共享图形流水线功能。经处理的数据被存储在硬件图形流水线的缓冲器中,并且状态信息被存储在存储器1508中。所得到的图像随后被传送到诸如显示部件(诸如,图3的显示装置320)之类的I/O源1504,以用于图像的显示。构想了显示装置可以是用于向用户显示信息的各种类型的显示装置,诸如,阴极射线管(CRT)、薄膜晶体管(TFT)、液晶显示器(LCD)、有机发光二极管(OLED)阵列等。
存储器1508可包括缓冲器(例如,帧缓冲器)的预分配的区域;然而,本领域普通技术人员应当理解,实施例不限于此,并且可使用较低级图形流水线可访问的任何存储器。计算装置1500可进一步包括如图1中所引用的输入/输出(I/O)控制中枢(ICH)150、一个或多个I/O源1504等。
CPU 1512可包括用于执行指令的一个或多个处理器,以便执行计算系统实现的任何软件例程。指令经常涉及对数据执行的某种操作。数据和指令两者都可以存储在系统存储器1508和任何相关联的高速缓存中。高速缓存典型地被设计成具有比系统存储器1508短的等待时间;例如,高速缓存可以被集成到与(多个)处理器相同的(多个)硅芯片上和/或利用较快的静态RAM(SRAM)单元进行构造,而系统存储器1508可利用较慢的动态RAM(DRAM)单元进行构造。与系统存储器1508相反,通过倾向于将更频繁使用的指令和数据存储在高速缓存中,改善了计算装置1500的整体性能效率。构想在一些实施例中,GPU 1514可作为CPU1512的部分(诸如,物理CPU封装的部分)存在,在这种情况下,存储器1508可由CPU 1512和GPU 1514共享或保持分开。
可使系统存储器1508对计算装置1500内的其他部件可用。例如,从至计算装置1500的各种接口(例如,键盘和鼠标、打印机端口、局域网(LAN)端口、调制解调器端口等)接收到的或从计算机装置1500的内部存储元件(例如,硬盘驱动器)检取的任何数据(例如,输入图形数据)通常在它们由一个或多个处理器以软件程序的实现方式操作之前临时排队进入到系统存储器1508中。类似地,软件程序确定应通过计算系统接口中的一个从计算装置1500发送到外部实体或存储到内部存储元件中的数据在其被传输或存储之前经常在系统存储器1508中临时排队。
进一步地,例如,诸如图1的ICH 130之类的ICH可用于确保此类数据在系统存储器1508与其适当的对应计算系统接口(和内部存储装置,如果计算系统是如此设计的话)之间被合适地传递,并且可在其自身与所观察到的I/O源/装置1504之间具有双向点对点链路。类似地,诸如图1的MCH 116之类的MCH可用于管理CPU 1512与GPU 1514、接口与内部存储元件之间对于系统存储器1508访问的各种竞争请求,这些请求可能在时间上相对于彼此紧接地出现。
I/O源1504可包括一个或多个I/O装置,所述一个或多个I/O装置被实现为用于向计算装置1500(例如,网络适配器)传送数据和/或传送来自计算装置1500的数据;或者实现为用于计算装置1500内的大规模非易失性存储(例如,硬盘驱动器)。包括字母数字及其他键的用户输入装置可用于将信息和命令选择通信至GPU 1514。另一类型的用户输入装置是用于将方向信息和命令选择通信至GPU 1514并控制显示装置上的光标移动的光标控件,诸如,鼠标、轨迹球、触摸屏、触摸板或光标方向键。可采用计算机装置1500的相机和麦克风阵列来观察手势、记录音频和视频并接收和发射视觉命令和音频命令。
计算装置1500可进一步包括(多个)网络接口,以提供对网络的访问,所述网络诸如,LAN、广域网(WAN)、城域网(MAN)、个域网(PAN)、蓝牙、云网络、移动网络(例如,第3代(3G)、第4代(4G)等)、内联网、因特网等。(多个)网络接口可包括例如,具有天线的无线网络接口,所述天线可以表示一个或多个天线。(多个)网络接口还可包括例如,用于经由网络电缆与远程装置通信的有线网络接口,所述网络电缆可以是例如以太网电缆、同轴电缆、光缆、串行电缆或并行电缆。
(多个)网络接口可例如通过符合IEEE 802.11b和/或IEEE 802.11g标准来提供对LAN的访问,并且/或者无线网络接口可例如通过符合蓝牙标准来提供对个域网的访问。还可支持其他无线网络接口和/或协议,包括上述标准的先前的以及后续的版本。除了经由无线LAN标准的通信之外或作为其替代,(多个)网络接口可使用例如以下协议来提供无线通信:时分多址(TDMA)协议、全球移动通信系统(GSM)协议、码分多址(CDMA)协议和/或任何其他类型的无线通信协议。
(多个)网络接口可包括一个或多个通信接口,诸如,调制解调器、网络接口卡或其他众所周知的接口装置,诸如,用于耦合至以太网的那些接口装置、令牌环或为了提供通信链路以支持例如LAN或WAN的其他类型的物理有线或无线附连。以此方式,计算机系统还可以经由常规的网络基础设施(例如,包括内联网或互联网)耦合至多个外围装置、客户端、控制表面、控制台或服务器。
应当领会,对于某些实现方式,比在上文中所描述的示例更少或更多地配备的系统可以是优选的。因此,取决于诸如价格约束、性能要求、技术改进或其他情况之类的众多因素,计算装置1500的配置可随着实现方式而有所不同。电子装置或计算机系统1500的示例可包括(但不限于):人工智能代理(例如,机器人)、移动装置、个人数字助理、移动计算装置、智能电话、蜂窝电话、手持装置、单向寻呼机、双向寻呼机、消息收发装置、计算机、个人计算机(PC)、台式计算机、膝上型计算机、笔记本计算机、手持式计算机、平板计算机、服务器、服务器阵列或服务器场、web服务器、网络服务器、互联网服务器、工作站、小型计算机、大型计算机、超级计算机、网络装置、web装置、分布式计算系统、多处理器系统、基于处理器的系统、消费电子产品、可编程消费电子产品、电视、数字电视、机顶盒、无线接入点、基站、订户站、移动订户中心、无线电网络控制器、路由器、中枢、网关、桥接器、交换机、机器或上述各项的组合。
实施例可被实现为以下各项中的任何一项或其组合:使用母板互连的一个或多个微芯片或者集成电路、硬连线逻辑、由存储器装置存储且由微处理器执行的软件、固件、专用集成电路(ASIC)和/或现场可编程门阵列(FPGA)。作为示例,术语“逻辑”可包括软件或硬件和/或软件和硬件的组合。
实施例可以被提供为例如计算机程序产品,所述计算机程序产品可包括其上存储有机器可执行指令的一种或多种机器可读介质,所述机器可执行指令在由一个或多个机器(诸如,计算机、计算机网络或其他电子装置)执行时可导致所述一个或多个机器执行根据在本文中所描述的实施例的操作。机器可读介质可包括但不限于:软盘、光盘、CD-ROM(紧致盘只读存储器)以及磁光盘、ROM、RAM、EPROM(可擦除可编程只读存储器)、EEPROM(电可擦除可编程只读存储器)、磁卡或光卡、闪存、或者适用于存储机器可执行指令的其他类型的介质/机器可读介质。
而且,实施例可作为计算机程序产品被下载,其中,可以经由通信链路(例如,调制解调器和/或网络连接),借助于在载波或其他传播介质中具体化和/或由载波或其他传播介质调制的一个或多个数据信号来将程序从远程计算机(例如,服务器)传递至请求计算机(例如,客户机)。
图16展示了根据一个实施例的图15的神经机制1510。为了简洁起见,此后不再重复或讨论已经参照图1至图15讨论的细节中的许多细节。在一个实施例中,神经机制1510可以包括任何数量和类型的部件,诸如(但不限于):数据标记逻辑1601;数据捕获逻辑1603;数据存储逻辑1605;神经网络模型训练逻辑1607、神经网络执行逻辑1609;输入数据分叉器1611;输出结果结合器1613;和性能决策逻辑1615;和通信/兼容逻辑1617。贯穿本文档,“分叉器”可以同义地指“分离器”或“分隔器”;类似地,“分叉”可以被同义地称为“分离”或“分隔”等。
计算装置1500(例如,自动化机器,诸如,机器人、汽车等)进一步被示出为与诸如(多个)数据库1630(例如,云存储、非云存储等)之类一个或多个存储库、数据集和/或数据库通信,其中,(多个)数据库1630可驻留在本地存储或可通过(多个)通信介质1625驻留在远程存储,所述通信介质1625诸如一个或多个网络(例如,云网络、接近度网络、移动网络、内联网、互联网等)。
构想了在计算装置1500处运行的软件应用可负责使用计算装置1500的一个或多个部件(例如,GPU 1514、图形驱动器1516、CPU 1512等)来执行或促进任何数量和类型的任务的执行。当执行如由软件应用定义的此类任务时,诸如GPU 1514、图形驱动器1516、CPU1512等之类的一个或多个部件可彼此通信,以确保准确和及时地处理并完成那些任务。
在一个实施例中,神经机制1510允许使用新颖神经网络算法和硬件,使得其可以基于任何数量和类型的因素或标准(诸如每可预测等待时间、每权重、和每能量等)提供优于传统算法的优越性能。使用神经机制1510的这种新颖技术比现有的神经网络应用中的任何一个都要更好且更加高效,由于其允许在所有形式的情境下训练网络,这是在不断变化且可变的环境中操作的自主机器(诸如,计算装置1500等)中所需要的。
进一步,除了姿态估计之外,可以将使用神经机制1510的这种技术应用于通常在自主机器(诸如,计算装置1500)中是优选的或甚至是所需的若干任务,其中,这些任务可以包括(不限于)维持平衡(例如,从加速度计和其他传感器到电机控制件的映射)。在任一情况下,这种新颖技术允许:替换与深度神经网络(DNN)相关的复杂计算;给出具有性能优越得多并且功耗和能量成本低得多的近似结果。
如关于图17所展示的,常规数据处理跟随仅限于从输入源接收输入并且基于这些输入提供输出。进一步,常规系统被设计有用于内部处理的流水线,其中,一个输出可以取决于多个历史输入,并且因此,系统流水线缓冲器经常是隐式的,并且是与过时且需要替换的算法混合的。
在一个实施例中,如关于图18A所展示的,可以接收从图15的一个或多个输入/输出源1504(例如,相机、麦克风、传感器等)中接收的任何输入数据(例如,图像、视频流、声音、噪声等)并且分配成由输入数据分叉器1611分开或分叉。这种输入数据分叉器1611还可以负责对输入数据进行广播以从数据标记逻辑1601请求其相应标记,其中,数据标记逻辑1601将标记附接至每个输入数据。在一些实施例中,标记用于识别并记录与输入数据相关的任何数量的特性,诸如,记录输入数据的数据类型、将时间戳关联至输入数据等。例如,输入数据分叉器1611可以使用与输入数据相关联的标记来将一个输入数据与另一输入数据分开等。
进一步,在一个实施例中,数据标记逻辑1601可以用于监测并记录数据依赖性,诸如,直到处理了特定输入数据才可以获得输出结果,或者直到处理了另一输入数据才能够处理输入数据等。
在一个实施例中,数据捕获逻辑1603可以用于使用与每个输入数据相关联的标记来捕获所述每个输入数据,并且进一步,所述数据捕获逻辑捕获被分配至所述每个输入数据的任何依赖性标记,其中,可以成对地捕获这些依赖性标记以识别具有依赖性的两组输入数据。
在一个实施例中,当收集到足够的输入数据时,然后可以触发训练逻辑1607来训练模型,并且随后,将所训练的模型发送至执行逻辑1609以供进一步处理。例如,使用所训练的模型和任何相关输入数据集,执行逻辑1609预测输出结果将它们放置在专用缓冲器中。
在一个实施例中,任何数量和类型的所生成输出结果或所预测输出结果可以由输出结果结合器1613结合在一起,并且被转发至性能决策逻辑1615以供进一步处理。在一个实施例中,在整个数据流以及关于其他相关进程和数据集期间,数据存储逻辑1605可以用于促进对数据的存储以及对缓冲器和任何其他类似部件或进程的运行和提供,以确保存储和保存任何输入数据、输出结果、以及任何其他相关数据、标记、信息、特性等。
在接收到所生成的和/或所预测的输出结果时,性能决策逻辑1615可以用于监测每个预测输出结果的准确性,使得性能决策逻辑1615评审预测输出结果的准确性并且完全基于所预测的输出结果的准确性来决定是否增加数据捕获和训练活动或是否集中于得到更好的模型。在一个实施例中,性能决策逻辑1615可以将任何所生成的输出结果与其相应的预测输出结果相比较以确保其准确性和效率。例如,性能决策逻辑1615可以决定是否选择性地接通或断开某些进程或整个数据流,如关于图18A进一步展示和解释的。
通信/兼容性逻辑1617可以用于促进计算装置1500(例如,自主机器,诸如,机器人、车辆、装备等)与以下各项之间的动态通信和兼容性:任何数量和类型的其他计算装置(诸如,自主机器、移动计算装置、台式计算机、服务器计算装置等);处理装置或部件(诸如,CPU、GPU等);捕获/感测/检测装置(诸如,捕获/感测部件,包括相机、深度感测相机、相机传感器、红绿蓝(RGB)传感器、麦克风等);显示装置(诸如,输出部件,包括显示屏、显示区域、显示投影仪等);用户/上下文感知部件和/或标识/验证传感器/装置(诸如,生物特征传感器/检测器、扫描器等);(多个)数据库1630,诸如,存储器或存储装置、数据库和/或数据源(诸如,数据存储装置、硬盘驱动器、固态驱动器、硬盘、存储器卡或装置、存储器电路等);(多个)通信介质1625,诸如,一个或多个通信信道或网络(例如,云网络、因特网、内联网、蜂窝网络、接近度网络,诸如,蓝牙、蓝牙低能量(BLE)、蓝牙智能、Wi-Fi接近度、射频识别(RFID)、近场通信(NFC)、体域网(BAN)等);无线或有线通信和相关协议(例如,WiMAX、以太网等);连接性和位置管理技术;软件应用/网站(例如,社交和/或商业联网网站等、商业应用、游戏和其他娱乐应用等);以及编程语言等,同时确保与变化的技术、参数、协议、标准等的兼容性。
贯穿本文档,像“逻辑”、“部件”、“模块”、“框架”、“引擎”、“机制”等等之类的术语可互换地引用,并作为示例可包括软件、硬件、和/或软件与硬件的任何组合,诸如固件。在一个示例中,“逻辑”可指代或包括能够与诸如计算装置1500之类的计算装置的操作系统(例如,操作系统1506)、图形驱动器(例如,图形驱动器1516)等中的一个或多个一起工作的软件部件。在另一示例中,“逻辑”可指代或包括能够在实体上与诸如计算装置1500之类的计算装置的一个或多个系统硬件元件(诸如,应用处理器(例如,CPU 1512)、图形处理器(例如,GPU 1514)等)一起或作为其一部分被安装的硬件部件。在又一实施例中,“逻辑”可指代或包括能够作为诸如计算装置1500等之类的计算装置的系统固件(诸如,应用处理器(例如,CPU 1512)或图形处理器(例如,GPU 1514)等的固件)的部分的固件部件。
进一步地,对特定商标、词语、术语、短语、名称和/或首字母缩略词——诸如如“GPU”、“GPU域”、“GPGPU”、“CPU”、“CPU域”、“图形驱动器”、“工作负荷”、“应用”“图形流水线”、“流水线进程”、“数据捕获”、“神经网络高速缓存系统”、“高速缓存”、“训练”、“分开或分叉输入数据”、“结合输出结果”“训练”、“姿态回归”、“神经网络”、“卷积神经网络”、“CNN”、“执行单元”、“EU”、“指令”“自主机器”、“人工智能代理”、“机器人”、“自主车辆”、“自主设备”、“API”、“3D API”、“硬件”、“软件”、“代理”、“图形驱动器”、“内核模式图形驱动器”、“用户模式驱动器”、“用户模式驱动器架构”、“缓冲器”、“图形缓冲器”、“任务”、“进程”、“操作”、“软件应用”、“游戏”等——的任何使用不应被解读为将实施例限制于在产品中或在本文档之外的文献中携带所述标记的软件或装置。
构想了任何数量和类型的部件都可以被添加到神经机制1510中和/或从所述神经机制中移除以促进各个实施例,包括添加、移除、和/或增强某些特征。为了神经机制1510的简洁、清楚和易于理解起见,在此未示出或讨论许多标准和/或已知部件,诸如计算装置的部件。构想了如本文所描述的实施例不限于任何特定技术、拓扑、系统、架构、和/或标准,并且动态到足以采用和适应任何未来变化。
图17展示了自主机器中常规数据处理流程的事务序列1700。为了简洁起见,此后可以不讨论或重复之前参照图1至图16讨论的细节中的许多细节。如所展示的,三个输入模块A 1701、E 1703和I 1705被示出为聚集并提供输入数据,然后处理所述输入数据以产生如由三个输出模块D 1731和H 1733提供的输出结果。如进一步展示的,通过输出模块D1731提供的输出数据或结果取决自或取决于从输入模块A 1701和E 1703获得的输入数据,同时类似地,来自输出模块H 1733的输出结果取决自或取决于来自输入模块A 1701、E1703和I 1705的输入数据。
如上所述,常规技术依赖于设计有限制于内部处理的流水线的常规系统,诸如,与输出模块D 1731相关联的当前输出结果c[0]取决于分别与缓冲器模块B 1711和缓冲器模块1713相关联的历史输入数据a[2]和e[2]的集合。如所示出的,输入数据i[2]与缓冲器模块J 1715相关联。
进一步,将输入数据a[2]和e[2]插入目标模块C 1721和G 1723两者中,而将输入数据i[2]输入目标模块G 1723中。目标模块C 1721和G 1723然后分别提供通过输出模块D1721和H 1733输出的输出结果c[0]和g[0]。系统流水线缓冲器经常是隐式的并且是与算法或模块混合的,所述模块诸如被指示为有待替换并放置在被标记为目标模块1735的虚线框内的目标的缓冲器模块B1711和目标模块C 1721。
图18A展示了根据一个实施例的自主机器中数据处理流程的事务序列1800,所述自主机器使用基于图15的神经机制1510的神经高速缓存系统。为了简洁起见,此后可以不讨论或重复之前参照图1至图17讨论的细节中的许多细节。事务序列1800可以由处理逻辑执行,所述处理逻辑可以包括如由图15的神经机制1510促进的硬件(例如,电路系统、专用逻辑、可编程逻辑等)、软件(诸如,在处理装置上运行的指令)或其组合。为了呈现的简洁和清楚起见,以线性序列来展示了事务序列1800的进程;然而,构想了可以并行地、异步地或以不同顺序来执行任何数量的进程。
在所展示的实施例中,许多部件被组合成共同形成如由图15的神经机制1510促进的前述神经高速缓存系统,所述部件诸如如由图16的输入数据分叉器1611促进的分叉器K121和L 1823、如由图16的数据捕获逻辑1603促进的数据捕获模块M 1825和P 1827、如由图16的数据存储逻辑1605促进的数据存储模块N 1829和Q 1831、如由图16的数据标记逻辑1601促进的标记管理模块T 1833、如由图16的训练逻辑1607促进的网络模型训练器1835、如由图16的输出结果结合器1613促进的结合器R 1837、如由图16的性能决策逻辑1615促进的性能判断模块S 1839等。如所展示的,在一个实施例中,以与其他部件连接或通信的形式示出了这种神经高速缓存系统,所述其他部件诸如输入模块A 1801和E 1803、缓冲器模块B1811和F 1813、目标模块C 1815、和输出模块D 1817。
在一个实施例中,分叉器模块K 1821从输入模块A 1801获得输入数据a[0](例如,图像、视频流、噪声、声音等),如进一步从图15的I/O源1504的一个或多个输入源(例如,相机、传感器、麦克风等)中获得的所述输入数据,其中,分叉器模块K 1821然后将输入数据a[0]分开或分叉,然后将其广播至缓冲器模块B 1811以及数据捕获模块M 1825和专用缓冲器模块P 1827。
类似地,在一个实施例中,分叉器模块L 1823从输入模块E 1803获得输入数据e[0](例如,图像、视频流、噪声、声音等),如进一步从图15的I/O源1504的一个或多个输入源(例如,相机、机器人眼睛、传感器、麦克风等)中获得的所述输入数据,其中,分叉器模块L1823然后将输入数据e[0]分开或分叉,然后将其广播至缓冲器模块F 1813以及数据捕获模块M 1825和专用缓冲器模块P 1827。
如之前所讨论的,分叉器K 1821和L 1823从标记管理模块T 1833请求唯一标记,并且然后将每个标记与相应输入数据a[0]、e[0]等的集合相关联,其中,标记可以用于记录和识别其相关联输入数据的数据类型、时间戳等。例如,标记管理模块T 1833可以用于监测高速缓存目标的模块并且记录与相关输入数据和/或输出结果相关的数据依赖性,诸如,输出数据或结果c[0]取决于输入数据a[0]和e[0]。
在一个实施例中,数据捕获模块M 1825使用它们相关联的标记来捕获所有输入数据,诸如输入数据a[0]和e[0],并且进一步捕获具有或识别其任何依赖性信息的依赖性标记,其中,可以成对地捕获任何依赖性标记。例如,数据捕获模块M 1825向数据存储模块N1829发送相关输入数据、其相关联标记以及其所识别的依赖性标记对等。当数据存储模块N1829已经收集到足够的输入数据时,其然后可以触发网络模型训练器O 1835开始对神经网络模型进行训练,其中,网络模型训练器1835然后向神经网络模块Q 1831发送所训练的模型。
进一步,在一个实施例中,专用缓冲器模块P 1827在原始过程流程中针对输入数据维持缓冲器并且模拟隐含式缓冲器,其中,例如,缓冲器模块P 1827向神经网络模型Q1831发送对准的输入数据。在接收对准的输入数据时,神经网络模块Q 1831使用对准的输入数据a[0]和e[0]以及所训练的神经网络模型来预测输出结果,诸如,预测的输出数据或结果(“预测的结果”)c[0]。
在一个实施例中,结合器R 1837接收来自目标模块C 1815的目标模块C生成的输出数据或结果(“生成的结果”)c[0]以及来自神经网络模块Q 1831的预测结果,其中,结合器R 1837然后将所述两个结果(诸如所生成的结果和所预测的结果)结合成结合输出结果,所述结合输出结果然后由充当门/看门者的性能判断模块S 1839监测、评审、和/或控制以在向输出模块D 1817发送任何最终输出结果之前控制数据流和模块。
例如,在一个实施例中,性能判断模块S 1839分别监测预测结果和生成结果的准确性以及神经网络模块Q 1831和目标模块C 1815的性能,以便然后能够选择性地接通/断开一个或多个单独模块、数据流路由等。例如,性能判断模块S 1839在对预测结果和/或生成结果的真实性或准确性进行分析时可以判断其对应模块(诸如,神经网络模块Q 1831和目标模块C 1815)的性能能力,以便然后基于预测结果的准确性和其前述模块和数据路由的效率来进一步决定例如是否例如增加或减少例如数据捕获模块M 1825、数据存储模块N1829和网络模型训练器O 1835中的数据捕获和训练活动以得到甚至更好的模型。
类似地,在一个实施例中,性能判断模块S 1839可以基于预测结果的准确性以及其前述模块和数据路由的效率来决定是否接通/断开专用缓冲器模块P 1827和神经网络模块Q 1831。进一步,在一个实施例中,性能判断模块S 1839可以基于生成结果的准确性以及其前述模块和数据路由的效率来进一步决定是否接通/断开缓冲器模块B 1181、缓冲器模块F 1813和目标模块C 1815。
在一个实施例中,在由性能判断模块S 1839进行分析和判断时,来自结合输出结果的相关或最终输出结果被提取并且被发送至输出模块D 1817,以便然后将其转发至图15的I/O源1504的一个或多个输出源(例如,显示屏、媒体播放器、扬声器等)。
图18B展示了根据一个实施例的输入数据标记和捕获的事务序列1850。为了简洁起见,此后可以不讨论或重复之前参照图1至图18A讨论的细节中的许多细节。事务序列1850可以由处理逻辑执行,所述处理逻辑可以包括如由图15的神经机制1510促进的硬件(例如,电路系统、专用逻辑、可编程逻辑等)、软件(诸如,在处理装置上运行的指令)或其组合。为了呈现的简洁和清楚起见,以线性序列来展示了事务序列1850的进程;然而,构想了可以并行地、异步地或以不同顺序来执行任何数量的进程。
根据一个实施例,事务序列1850提供对输入数据1851的标记和捕获。在一个实施例中,事务序列1850展示了输入数据1851的四个进程或四个阶段1861、1863、1865、1867,诸如,输入数据a 1851在输入模块A 1801中生成1861、使用缓冲器模块B 1811处理1863、在目标模块C 1815中转换1865、以及随后被销毁1867。进一步,例如,当生成1861输入数据1851时,可以将诸如标记a等相应标记发送至与图18A的标记管理模块T 1833类似或相同的标记管理模块T 1853A,而将任何相关数据连同标记a发送至与图18A的数据捕获模块M 1825类似或相同的数据捕获模块M 1855A。
类似地,在一个实施例中,当将输入数据1851转换1865成输出结果时,将诸如对(a,e,c)等任何相关依赖性信息发送至与图18A的标记管理模块T 1833类似或相同的标记管理模块T 1853B,并且随后将依赖性信息转发至与图18A的数据捕获模块M 1825类似或相同的数据捕获模块M 1855B。
图18C展示了根据一个实施例的输出结果数据标记和捕获的事务序列1870。为了简洁起见,此后可以不讨论或重复之前参照图1至图18B讨论的细节中的许多细节。事务序列1870可以由处理逻辑执行,所述处理逻辑可以包括如由图15的神经机制1510促进的硬件(例如,电路系统、专用逻辑、可编程逻辑等)、软件(诸如,在处理装置上运行的指令)或其组合。为了呈现的简洁和清楚起见,以线性序列来展示了事务序列1870的进程;然而,构想了可以并行地、异步地或以不同顺序来执行任何数量的进程。
事务序列1870根据一个实施例提供了对输出结果数据1871的标记和捕获。在一个实施例中,事务序列1850展示了输出结果1871的两个进程或两个阶段1881、1883,诸如,输出结果数据c 1871在目标模块C 1815中生成1881并且随后在输出模块D 1817中使用1883。当生成1881输出结果数据c 1871时,将诸如标记c等相应标记发送至标记管理模块T 1833,而将任何相关数据连同标记c发送至数据捕获模块M 1825。
图18D展示了根据一个实施例的标记/数据表1890。为了简洁起见,此后可以不讨论或重复之前参照图1至图18C讨论的细节中的许多细节。如所展示的,标记/数据表1890包括与标记1891(诸如,a[0]、a[1])、时间1893(诸如,T0、T1)和数据1895(诸如,a[0]的数据、a[1]的数据)相关的多列信息。
图18E展示了根据一个实施例的依赖性标记对表1895。为了简洁起见,此后可以不讨论或重复之前参照图1至图18D讨论的细节中的许多细节。如所展示的,依赖性标记对表1895包括与标记a 1896(诸如,a[2])、标记e 1897(诸如,e[1])和标记c 1898(诸如,c[0])相关的多列信息。
图19A展示了根据一个实施例的输入神经网络模型1900。为了简洁起见,此后可以不讨论或重复之前参照图1至图18E讨论的细节中的许多细节。
在一个实施例中,输入神经网络模型1900用于将输入数据a 1901和输入数据e1903转换成输出结果数据c 1905,其中,所述网络可以是卷积神经网络、全连接神经网络等。进一步,神经网络模型1900被示出为用于数据模型训练和高速缓存模块中,因为标记能够记录训练过程中、最终部署中等的时间戳,诸如,神经模型可以由原始算法依赖性对训练而成或使用较少历史来生成当前输出结果。例如,a[3]、e[2]→c[1]可以被认为是原始依赖性对,同时也可以在模型1900中训练a[2]、a[3]、e[1]、e[2]→c[1]。
图19B展示了根据一个实施例的用于神经高速缓存系统启动的事务序列1910。为了简洁起见,此后可以不讨论或重复之前参照图1至图19A讨论的细节中的许多细节。事务序列1910可以由处理逻辑执行,所述处理逻辑可以包括如由图15的神经机制1510促进的硬件(例如,电路系统、专用逻辑、可编程逻辑等)、软件(诸如,在处理装置上运行的指令)或其组合。为了呈现的简洁和清楚起见,以线性序列来展示了事务序列1910的进程;然而,构想了可以并行地、异步地或以不同顺序来执行任何数量的进程。
在一个实施例中,事务序列1910提供了用于由输入数据生成输出结果的多个进程,其中,在框1933处的模块A、B、C、D、E和F充当如在框1911处的阶段零处确定和激活的激活模块1931。例如,如所展示的,在框1913处的数据收集的阶段1处,目标系统附接有数据调查模块并且其中正收集数据,在框1935处的模块A、B、C、D、E、F、K、L、T、M、和N积极地工作。
在一个实施例中,在框1915处的模型训练的阶段2处,其中,已经收集了足够数据并且在框1937处的模块N和O积极地工作以训练适当的模型。在一些情况下,可以离线执行这个阶段。
类似地,在框1917处的模型验证的阶段3处,其中,神经高速缓存模块与原始模块一起工作以验证训练模型。例如,在框1939处的模块A、B、C、D、E、F、P、Q、R和S。在这个阶段,模块S可能需要评估两个指标:神经模型预测准确性以及P、Q相比于B、和F、和C的性能和源效率,使得需要具有足够好的准确性和性能的两者进入下一阶段;否则,在多次试验失败之后,目标模块的神经高速缓存可能退出。
如果准确性不是高效的和/或不足够好,则事务序列1910返回至框1913处的进一步数据收集的阶段1或者其在框1929处经过这个序列多次之后在框1930处结束。然而,如果准确性是高效的和/或足够好,则事务序列1910继续至框1921处的选择数据收集、训练、和验证的阶段4。在这个阶段4处,在框1941处的模块A、D、E、K、L、P、Q、R和S被认为是积极工作的激活模块1931,而在框1953处的模块B、F、C、M、N和Q在选择性激活模块1951的分类下被认为偶尔或选择性激活。
例如,在这个阶段中模块S可能需要评估两个指标以及模型稳定性和漂移,并且事务序列1910前进至决策框1923,在所述决策框中,关于高速缓存系统是否足够稳定作出确定。如果高速缓存系统足够稳定,则事务序列1910前进至并且进入下一阶段,诸如在框1925处的阶段5,在所述阶段处,神经高速缓存是独立的。在这个阶段5,仅框1943处的模块A、D、E、P和Q被视为进行积极工作的激活。深度学习模型适用于在主机计算装置处运行或在所述主机计算装置处可访问的任何软件应用,所述主机计算装置诸如图15的计算装置1500(例如,自主机器,诸如,机器人、自主车辆等),并且由神经高速缓存系统替换原始复杂系统。
返回参照框1923,在一个实施例中,如果由于新收集的数据而在框1927处高速缓存系统不稳定和/或模型已经漂移太多,则高速缓存系统可以在框1913处退化到数据收集阶段。如果在框1927处模型未漂移,则在一些情况下,高速缓存系统可以继续永久循环;然而,这提高了整个系统的性能。
图19C展示了根据一个实施例的用于视觉SLAM的神经高速缓存系统的事务序列1960。为了简明起见,此后可以不讨论或重复之前参考图1至图19B讨论的细节中的许多细节。事务序列1960可以由处理逻辑执行,所述处理逻辑可以包括如由图15的神经机制1510促进的硬件(例如,电路系统、专用逻辑、可编程逻辑等)、软件(诸如,在处理装置上运行的指令)或其组合。为了呈现的简洁和清楚起见,以线性序列来展示了事务序列1960的进程;然而,构想了可以并行地、异步地或以不同顺序来执行任何数量的进程。
构想了视觉SLAM被认为是诸如图15的计算装置1500等自主机器中的重要应用,其中,基本功能由来自如由图15的I/O源1504的相机1961捕获的当前相机图像的相机姿态生成。在一个实施例中,如由图15的神经机制1510促进的神经高速缓存系统可以附接至用于姿态处理的视觉SLAM系统和图像或与所述视觉SLAM系统和所述图像相关联。
例如,在一个实施例中,标记管理模块T 1981分析图像姿态对,数据捕获模块M1973捕获图像、以及姿态和配对信息。进一步,例如,分叉器K 1971用于将输入数据(诸如,图像)分开为由数据捕获模块M 1973和高速缓存模块Q 1975捕获的数据。高速缓存模块Q1975提供预测输出数据c[0],然后所述预测输出数据由结合器R 1983接收。类似地,任何生成的信息(诸如,姿态)在框1963处通过基于SIFT的SLAM生成和提供,并且在连结合器R1983处被接收,其中预测的输出数据和生成的输出结果(例如,姿态)由结合器R1983结合、通过性能判断模块S 1985进行比较、并且随后通过在框1965处消耗姿态的其他模块转发到图15的I/O源1504的输出介质(例如,显示屏等)。
数据存储模块N 1977将这个数据存储在数据库中,网络模型训练器O1979训练神经模型,而高速缓存模块Q 1975使用所述模型从图像中回归姿态。在事务序列1960的一个或多个进程中,性能判断模块S 1985比较框1963处的原始的基于尺度不变特征变换(SIFT)的SLAM,这需要存储大量特征点并且相对复杂且具有输出姿态的各种延迟。例如,可能有证据表明,神经高速缓存系统可以在确定的延迟中回归相对准确的姿态。很有可能的是,神经高速缓存系统当与视觉SLAM一起使用时,可以在图19B的阶段4处工作,这可以帮助减少调用视觉SLAM例程以节省计算并帮助SLAM进行重新定位以减少视觉SLAM搜索空间,其中,神经高速缓存系统向视觉SLAM提供了新的能力。
对“一个实施例”、“实施例”、“示例实施例”、“各实施例”等的引用指示如此描述的(多个)实施例可包括特定特征、结构或特性,但是,不是每一个实施例都必定包括所述特定特征、结构或特征。此外,一些实施例可具有针对其他实施例所描述的特征的一些、全部,或不具有任何所描述的特征。
在上述说明书中,已经参照其特定示例性实施例描述了实施例。然而,在不偏离所附权利要求中阐述的实施例的更广泛精神和范围的情况下,将显而易见的是,可对实施例进行各种修改和改变。因此,说明书和附图将以说明性而非限制性的含义来看待。
在所附描述以及权利要求书中,可使用术语“耦合的”及其派生词。“耦合的”被用来指示两个或更多个元件彼此协作或进行交互,但是它们之间可具有或可不具有中间物理或电学部件。
如权利要求书中所使用,除非另外指定,否则使用序数形容词“第一”、“第二”、“第三”等来描述共同的要素仅指示类似要素的不同实例被提及,并不旨在暗示如此描述的要素必须按照给定的序列,无论是时间上、空间上、级别上或以任何其他方式。
以下条款和/或示例涉及进一步的实施例或示例。可在一个或多个实施例中的任何地方使用示例中的细节。能以各种方式将不同的实施例或示例的各种特征与所包括的一些特征以及被排除的其他特征组合以适应各种不同的应用。示例可包括诸如以下各项的主题:方法;用于执行所述方法的动作的装置;至少一种包括指令的机器可读介质,所述指令当由机器执行时使所述机器执行所述方法的动作;或用于根据本文中所描述的实施例和示例促进混合通信的设备或系统。
一些实施例涉及示例1,所述示例包括一种用于促进自主机器的通用输入/输出数据捕获和神经高速缓存系统的设备,所述设备包括:数据捕获逻辑,用于捕获一个或多个对象的一个或多个图像,其中,所述一个或多个图像表示与神经网络相关联的输入数据;性能决策逻辑,用于通过将由默认神经高速缓存系统生成的第一输出结果与由自定义神经高速缓存系统预测的第二输出结果进行比较来确定所述第一输出结果的准确性;以及神经网络执行逻辑,用于基于所述准确性来输出包括所述第一输出结果或所述第二输出结果中的至少一者的最终输出结果。
示例2包括如示例1所述的主题,其中,所述神经网络执行逻辑进一步用于基于所述准确性来接通或断开所述默认神经高速缓存系统和所述自定义神经高速缓存系统中的至少一者的一个或多个部件,其中,使用图像捕获装置来捕获所述一个或多个图像。
示例3包括如示例2所述的主题,其中,如果所述预测的第二输出结果被确定为比所述生成的第一输出结果更准确,则断开所述默认神经高速缓存系统,其中,如果所述生成的第一输出结果被确定为比所述预测的第二输出结果更准确,则断开所述自定义神经高速缓存系统。
示例4包括如示例1所述的主题,进一步包括:输入数据分叉器,用于向所述自定义神经高速缓存系统提供所述输入数据以供处理,其中,所述输入数据由所述输入数据分叉器分开用于高速缓存目的和训练目的;以及输出结果结合器,用于将有待由所述性能决策逻辑进行比较的所述第一输入结果与所述第二输出结果结合。
示例5包括如示例1所述的主题,进一步包括:数据标记逻辑,用于将标记对和依赖性标记中的至少一者关联至所述输入数据和所述第一输出结果;以及所述数据捕获逻辑,用于从所述输入数据分叉器捕获所述输入数据,其中,所述数据捕获逻辑进一步用于接收所述标记对、所述依赖性标记和所述第一输出结果中的一个或多个。
示例6包括如示例5所述的主题,进一步包括数据存储逻辑,所述数据存储逻辑用于从所述数据捕获逻辑接收所述输入数据、所述标记对、所述依赖性标记、和所述第一输出结果中的一个或多个,其中,所述数据存储逻辑用于存储所述输入数据、所述标记对、所述依赖性标记、和所述第一输出结果中的一个或多个。
示例7包括如示例1所述的主题,进一步包括网络模型训练逻辑,所述网络模型训练逻辑用于基于所述准确性来训练所述默认神经高速缓存系统以促进所训练的神经模型预测所述第二输出结果。
示例8包括如示例1所述的主题,其中,所述输入捕获装置包括一个或多个相机、一个或多个机器人眼睛、一个或多个麦克风、以及一个或多个传感器中的至少一者,其中,所述设备包括自主机器或人工智能代理,其中,所述自主机器包括一个或多个机器人、一个或多个无人驾驶车辆、以及一个或多个自操作设备中的至少一者。
一些实施例涉及示例9,所述示例包括一种用于促进自主机器的通用输入/输出数据捕获和神经高速缓存系统的方法,所述方法包括:捕获一个或多个对象的一个或多个图像,其中,所述一个或多个图像表示与神经网络相关联的输入数据;通过将由默认神经高速缓存系统生成的第一输出结果与由自定义神经高速缓存系统预测的第二输出结果进行比较来确定所述第一输出结果的准确性;以及基于所述准确性来输出包括所述第一输出结果或所述第二输出结果中的至少一者的最终输出结果。
示例10包括如示例9所述的主题,进一步包括基于所述准确性来接通或断开所述默认神经高速缓存系统和所述自定义神经高速缓存系统中的至少一者的一个或多个部件,其中,使用图像捕获装置来捕获所述一个或多个图像。
示例11包括如示例10所述的主题,其中,如果所述预测的第二输出结果被确定为比所述生成的第一输出结果更准确,则断开所述默认神经高速缓存系统,其中,如果所述生成的第一输出结果被确定为比所述预测的第二输出结果更准确,则断开所述自定义神经高速缓存系统。
示例12包括如示例9所述的主题,进一步包括:向所述自定义神经高速缓存系统提供所述输入数据以供处理,其中,所述输入数据由所述输入数据分叉器分开用于高速缓存目的和训练目的;以及将有待比较的所述第一输出结果与所述第二输出结果结合。
示例13包括如示例9所述的主题,进一步包括:将标记对和依赖性标记中的至少一者关联至所述输入数据和所述第一输出结果;从所述输入数据分叉器捕获所述输入数据;以及接收所述标记对、所述依赖性标记、和所述第一输出结果中的一个或多个。
示例14包括如示例13所述的主题,进一步包括:接收所述输入数据、所述标记对、所述依赖性标记、和所述第一输出结果中的一个或多个;以及存储所述输入数据、所述标记对、所述依赖性标记、和所述第一输出结果中的一个或多个。
示例15包括如示例9所述的主题,进一步包括:基于所述准确性来训练所述默认神经高速缓存系统以促进所训练的神经模型预测所述第二输出结果。
示例16包括如示例9所述的主题,其中,所述输入捕获装置包括一个或多个相机、一个或多个机器人眼睛、一个或多个麦克风、以及一个或多个传感器中的至少一者,其中,所述设备包括自主机器或人工智能代理,其中,所述自主机器包括一个或多个机器人、一个或多个无人驾驶车辆、以及一个或多个自操作设备中的至少一者。
一些示例涉及示例17,所述示例包括一种包括计算装置的系统,所述计算装置包括存储装置以及与所述存储装置耦合的处理装置,所述处理装置用于:捕获一个或多个对象的一个或多个图像,其中,所述一个或多个图像表示与神经网络相关联的输入数据;通过将由默认神经高速缓存系统生成的第一输出结果与由自定义神经高速缓存系统预测的第二输出结果进行比较来确定所述第一输出结果的准确性;以及基于所述准确性来输出包括所述第一输出结果或所述第二输出结果中的至少一者的最终输出结果。
示例18包括如示例17所述的主题,其中,所述处理装置进一步用于基于所述准确性来接通或断开所述默认神经高速缓存系统和所述自定义神经高速缓存系统中的至少一者的一个或多个部件,其中,使用图像捕获装置来捕获所述一个或多个图像。
示例19包括如示例18所述的主题,其中,如果所述预测的第二输出结果被确定为比所述生成的第一输出结果更准确,则断开所述默认神经高速缓存系统,其中,如果所述生成的第一输出结果被确定为比所述预测的第二输出结果更准确,则断开所述自定义神经高速缓存系统。
示例20包括如示例17所述的主题,其中,所述处理装置进一步用于:向所述自定义神经高速缓存系统提供所述输入数据以供处理,其中,所述输入数据由所述输入数据分叉器分开用于高速缓存目的和训练目的;并且将有待比较的所述第一输出结果与所述第二输出结果结合。
示例21包括如示例17所述的主题,其中,所述处理装置进一步用于:将标记对和依赖性标记中的至少一者关联至所述输入数据和所述第一输出结果;从所述输入数据分叉器捕获所述输入数据;并且接收所述标记对、所述依赖性标记、和所述第一输出结果中的一个或多个。
示例22包括如示例21所述的主题,其中,所述处理装置进一步用于:接收所述输入数据、所述标记对、所述依赖性标记、和所述第一输出结果中的一个或多个;并且存储所述输入数据、所述标记对、所述依赖性标记、和所述第一输出结果中的一个或多个。
示例23包括如示例17所述的主题,其中,所述处理装置进一步用于:基于所述准确性来训练所述默认神经高速缓存系统以促进所训练的神经模型预测所述第二输出结果。
示例24包括如示例17所述的主题,其中,所述输入捕获装置包括一个或多个相机、一个或多个机器人眼睛、一个或多个麦克风、以及一个或多个传感器中的至少一者,其中,所述设备包括自主机器或人工智能代理,其中,所述自主机器包括一个或多个机器人、一个或多个无人驾驶车辆、以及一个或多个自操作设备中的至少一者。
一些实施例涉及示例25,所述示例包括一种设备,所述设备包括:用于捕获一个或多个对象的一个或多个图像的装置,其中,所述一个或多个图像表示与神经网络相关联的输入数据;用于通过将由默认神经高速缓存系统生成的第一输出结果与由自定义神经高速缓存系统预测的第二输出结果进行比较来确定所述第一输出结果的准确性的装置;以及用于基于所述准确性来输出包括所述第一输出结果或所述第二输出结果中的至少一者的最终输出结果的装置。
示例26包括如示例25所述的主题,其中,所述处理器进一步用于基于所述准确性来接通或断开所述默认神经高速缓存系统和所述自定义神经高速缓存系统中的至少一者的一个或多个部件,其中,使用图像捕获装置来捕获所述一个或多个图像。
示例27包括如示例26所述的主题,其中,如果所述预测的第二输出结果被确定为比所述生成的第一输出结果更准确,则断开所述默认神经高速缓存系统,其中,如果所述生成的第一输出结果被确定为比所述预测的第二输出结果更准确,则断开所述自定义神经高速缓存系统。
示例28包括如示例25所述的主题,其中,所述处理器进一步用于:向所述自定义神经高速缓存系统提供所述输入数据以供处理,其中,所述输入数据由所述输入数据分叉器分开用于高速缓存目的和训练目的;并且将有待比较的所述第一输出结果与所述第二输出结果结合。
示例29包括如示例25所述的主题,其中,所述处理器进一步用于:将标记对和依赖性标记中的至少一者关联至所述输入数据和所述第一输出结果;从所述输入数据分叉器捕获所述输入数据;并且接收所述标记对、所述依赖性标记、和所述第一输出结果中的一个或多个。
示例30包括如示例29所述的主题,其中,所述处理器进一步用于:接收所述输入数据、所述标记对、所述依赖性标记、和所述第一输出结果中的一个或多个;并且存储所述输入数据、所述标记对、所述依赖性标记、和所述第一输出结果中的一个或多个。
示例31包括如示例25所述的主题,其中,所述处理器进一步用于:基于所述准确性来训练所述默认神经高速缓存系统以促进所训练的神经模型预测所述第二输出结果。
示例32包括如示例25所述的主题,其中,所述输入捕获装置包括一个或多个相机、一个或多个机器人眼睛、一个或多个麦克风、以及一个或多个传感器中的至少一者,其中,所述设备包括自主机器或人工智能代理,其中,所述自主机器包括一个或多个机器人、一个或多个无人驾驶车辆、以及一个或多个自操作设备中的至少一者。
示例33包括至少一种非瞬态或有形的机器可读介质,所述机器可读介质包括多条指令,这些指令当在计算装置上被执行时用于实现或执行权利要求或示例9-16中任一项所述的方法。
示例34包括至少一种机器可读介质,所述机器可读介质包括多条指令,这些指令当在计算装置上执行时,用于实现或执行如权利要求或示例9至16中任一项所述的方法。
示例35包括一种系统,所述系统包括用于实现或执行如权利要求或示例9至16中任一项所述的方法的机制。
示例36包括一种设备,所述设备包括用于执行如权利要求或示例9至16中任一项中所述的方法的装置。
示例37包括一种计算装置,所述计算装置被布置成用于实现或执行如权利要求或示例9至16中任一项所述的方法。
示例38包括一种通信装置,所述通信装置被布置成实现或执行如权利要求或示例9至16中任一项所述的方法。
示例39包括至少一种机器可读介质,所述机器可读介质包括多条指令,这些指令当在计算装置上被执行时用于实现或执行任何前述权利要求中所述的方法或实现任何前述权利要求中所述的装置。
示例40包括至少一种非瞬态或有形的机器可读介质,所述机器可读介质包括多条指令,这些指令当在计算装置上被执行时用于实现或执行任何前述权利要求中所述的方法或实现任何前述权利要求中所述的装置。
示例41包括一种系统,所述系统包括用于实现或执行任何前述权利要求中所述的方法或实现任何前述权利要求中所述的装置的机制。
示例42包括一种设备,所述设备包括用于执行任何前述权利要求中所述的方法的装置。
示例43包括一种计算装置,所述计算装置被布置成用于实现或执行任何前述权利要求中所述的方法或实现任何前述权利要求中所述的装置。
示例44包括一种通信装置,所述通信装置被布置成用于实现或执行任何前述权利要求中所述的方法或实现任何前述权利要求中所述的装置。
附图以及前述描述给出了实施例的示例。本领域技术人员将理解,所描述的元件中的一个或多个可以合并成单个功能元件。或者,某些元件可以被拆分成多个功能元件。可将来自一个实施例的元件添加到另一实施例。例如,可改变本文中所描述的过程的顺序,并且本文中所描述的过程的顺序不限于本文中所描述的方式。而且,任何流程图的动作都不需要以所示的顺序来实现;也不一定需要执行所有这些动作。此外,不依赖于其他动作的那些动作也可与其他动作并行地执行。各实施例的范围绝非由这些特定示例限制。众多变体(无论是否在说明书中显式地给出)都是可能的,这些变体诸如,结构、尺度以及材料的使用方面的差异。实施例的范围至少与由所附权利要求书给出的范围一样广泛。

Claims (17)

1.一种用于促进用于自主机器的通用输入/输出数据捕获和神经高速缓存系统的设备,所述设备包括:
图像捕获装置,用于捕获一个或多个对象的一个或多个图像,其中,所述一个或多个图像表示与神经网络相关联的输入数据;
性能决策逻辑,用于通过将由默认神经高速缓存系统生成的第一输出结果与由自定义神经高速缓存系统预测的第二输出结果进行比较来确定所述第一输出结果的准确性;以及
神经网络执行逻辑,用于基于所述准确性来输出包括所述第一输出结果或所述第二输出结果中的至少一者的最终输出结果,其中,所述神经网络执行逻辑进一步用于基于所述准确性来接通或断开所述默认神经高速缓存系统和所述自定义神经高速缓存系统中的至少一者的一个或多个部件,其中,如果所预测的第二输出结果被确定为比所生成的第一输出结果更准确,则断开所述默认神经高速缓存系统,其中,如果所述生成的第一输出结果被确定为比所预测的第二输出结果更准确,则断开所述自定义神经高速缓存系统。
2.如权利要求1所述的设备,进一步包括:
输入数据分叉器,用于向所述自定义神经高速缓存系统提供所述输入数据以供处理,其中,所述输入数据由所述输入数据分叉器分开用于高速缓存目的和训练目的,以及
输出结果结合器,用于将有待由所述性能决策逻辑进行比较的所述第一输出结果与所述第二输出结果结合。
3.如权利要求1所述的设备,进一步包括:
数据标记逻辑,用于将标记对和依赖性标记中的至少一者关联至所述输入数据和所述第一输出结果;以及
数据捕获逻辑,用于从输入数据分叉器捕获所述输入数据,其中,所述数据捕获逻辑进一步用于接收所述标记对、所述依赖性标记和所述第一输出结果中的一个或多个。
4.如权利要求3所述的设备,进一步包括数据存储逻辑,所述数据存储逻辑用于从所述数据捕获逻辑接收所述输入数据、所述标记对、所述依赖性标记、和所述第一输出结果中的一个或多个,其中,所述数据存储逻辑用于存储所述输入数据、所述标记对、所述依赖性标记、和所述第一输出结果中的一个或多个。
5.如权利要求1所述的设备,进一步包括网络模型训练逻辑,所述网络模型训练逻辑用于:基于所述准确性来训练所述默认神经高速缓存系统,以促进所训练的神经模型预测所述第二输出结果。
6.如权利要求1所述的设备,其中,所述图像捕获装置包括一个或多个相机、一个或多个机器人眼睛、一个或多个麦克风、以及一个或多个传感器中的至少一者,其中,所述设备包括自主机器或人工智能代理,其中,所述自主机器包括一个或多个机器人、一个或多个无人驾驶车辆、以及一个或多个自操作设备中的至少一者。
7.一种用于促进用于自主机器的通用输入/输出数据捕获和神经高速缓存系统的方法,所述方法包括:
由图像捕获装置捕获一个或多个对象的一个或多个图像,其中,所述一个或多个图像表示与神经网络相关联的输入数据;
通过将由默认神经高速缓存系统生成的第一输出结果与由自定义神经高速缓存系统预测的第二输出结果进行比较来确定所述第一输出结果的准确性;以及
基于所述准确性来输出包括所述第一输出结果或所述第二输出结果中的至少一者的最终输出结果,
其中,所述默认神经高速缓存系统和所述自定义神经高速缓存系统中的至少一者的一个或多个部件基于所述准确性被接通或断开,
其中,如果所预测的第二输出结果被确定为比所生成的第一输出结果更准确,则断开所述默认神经高速缓存系统,其中,如果所生成的第一输出结果被确定为比所预测的第二输出结果更准确,则断开所述自定义神经高速缓存系统。
8.如权利要求7所述的方法,进一步包括:
向所述自定义神经高速缓存系统提供所述输入数据以供处理,其中,所述输入数据由所述输入数据分叉器分开用于高速缓存目的和训练目的,以及
将有待比较的所述第一输出结果与所述第二输出结果结合。
9.如权利要求7所述的方法,进一步包括:
将标记对和依赖性标记中的至少一者关联至所述输入数据和所述第一输出结果;
从输入数据分叉器捕获所述输入数据;以及
接收所述标记对、所述依赖性标记、和所述第一输出结果中的一个或多个。
10.如权利要求9所述的方法,进一步包括:接收所述输入数据、所述标记对、所述依赖性标记、和所述第一输出结果中的一个或多个;以及存储所述输入数据、所述标记对、所述依赖性标记、和所述第一输出结果中的一个或多个。
11.如权利要求7所述的方法,进一步包括:基于所述准确性来训练所述默认神经高速缓存系统,以促进所训练的神经模型预测所述第二输出结果。
12.如权利要求7所述的方法,其中,所述图像捕获装置包括一个或多个相机、一个或多个机器人眼睛、一个或多个麦克风、以及一个或多个传感器中的至少一者,其中,所述方法由自主机器或人工智能代理执行,其中,所述自主机器包括一个或多个机器人、一个或多个无人驾驶车辆、以及一个或多个自操作设备中的至少一者。
13.至少一种机器可读介质,包括多条指令,所述指令当在计算装置上执行时用于实施或执行如权利要求7至12中任一项所述的方法。
14.一种系统,包括用于实施或执行如权利要求7至12中任一项所述的方法的机制。
15.一种设备,包括用于执行如权利要求7至12中任一项所述的方法的装置。
16.一种计算装置,被布置成实施或执行如权利要求7至12中任一项所述的方法。
17.一种通信装置,被布置成实施或执行如权利要求7至12中任一项所述的方法。
CN201680088988.9A 2016-10-05 2016-10-05 自主机器的通用输入/输出数据捕获和神经高速缓存系统 Active CN109690578B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2016/101427 WO2018064794A1 (en) 2016-10-05 2016-10-05 General purpose input/output data capture and neural cache system for autonomous machines

Publications (2)

Publication Number Publication Date
CN109690578A CN109690578A (zh) 2019-04-26
CN109690578B true CN109690578B (zh) 2024-01-02

Family

ID=61830753

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680088988.9A Active CN109690578B (zh) 2016-10-05 2016-10-05 自主机器的通用输入/输出数据捕获和神经高速缓存系统

Country Status (3)

Country Link
US (1) US11010302B2 (zh)
CN (1) CN109690578B (zh)
WO (1) WO2018064794A1 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109690578B (zh) 2016-10-05 2024-01-02 英特尔公司 自主机器的通用输入/输出数据捕获和神经高速缓存系统
CN108985920A (zh) 2018-06-22 2018-12-11 阿里巴巴集团控股有限公司 套现识别方法和装置
GB2575628A (en) * 2018-07-09 2020-01-22 Nokia Technologies Oy Video processing
US10635938B1 (en) * 2019-01-30 2020-04-28 StradVision, Inc. Learning method and learning device for allowing CNN having trained in virtual world to be used in real world by runtime input transformation using photo style transformation, and testing method and testing device using the same
JP2020177074A (ja) * 2019-04-16 2020-10-29 株式会社デンソー 車両用装置、車両用装置の制御方法
US12061971B2 (en) 2019-08-12 2024-08-13 Micron Technology, Inc. Predictive maintenance of automotive engines
US11409654B2 (en) * 2019-09-05 2022-08-09 Micron Technology, Inc. Intelligent optimization of caching operations in a data storage device
WO2021055824A1 (en) * 2019-09-20 2021-03-25 Northeastern University Device and method for embedded deep reinforcement learning in wireless internet of things devices
US11513799B2 (en) * 2019-11-04 2022-11-29 Apple Inc. Chained buffers in neural network processor
US11599780B2 (en) 2020-03-02 2023-03-07 Apple Inc. Asynchronous task execution for neural processor circuit
CN114509993B (zh) * 2020-11-16 2023-06-20 沈阳中科数控技术股份有限公司 一种基于国产cpu的自主可控数控系统构建方法
CN114547781B (zh) * 2022-03-04 2023-08-25 无锡豪丽坤自控设备有限公司 一种基于虚拟现实的船用桅杆性能评价方法及系统
US20240201637A1 (en) * 2022-12-14 2024-06-20 Kla Corporation System and method for estimating measurement uncertainty for characterization systems
CN117687929B (zh) * 2024-02-02 2024-05-10 北京壁仞科技开发有限公司 验证高速缓存的请求生成器、方法、设备、介质、程序产品

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104094294A (zh) * 2012-02-08 2014-10-08 高通股份有限公司 用于尖峰神经计算的方法和装置
CN104885107A (zh) * 2012-10-05 2015-09-02 思杰系统有限公司 经由应用捕获并共享视觉内容
CN105320495A (zh) * 2014-07-22 2016-02-10 英特尔公司 用于卷积神经网络的权重移位机制
CN105378721A (zh) * 2013-03-15 2016-03-02 比乌拉工厂有限公司 知识捕获和发现系统
WO2016099653A1 (en) * 2014-12-18 2016-06-23 Intel Corporation Facilitating dynamic pipelining of workload executions on graphics processing units on computing devices

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1197025C (zh) 1999-05-25 2005-04-13 巴恩希尔科技公司 使用多个支持向量机从多个数据组中提升知识发现的方法
US7475393B2 (en) * 2003-08-29 2009-01-06 Motorola, Inc. Method and apparatus for parallel computations with incomplete input operands
US8626136B2 (en) * 2006-06-29 2014-01-07 Microsoft Corporation Architecture for user- and context-specific prefetching and caching of information on portable devices
TWI356315B (en) * 2007-10-16 2012-01-11 Inst Information Industry Method and system for constructing data tag based
JP5062498B2 (ja) * 2010-03-31 2012-10-31 アイシン・エィ・ダブリュ株式会社 風景マッチング用参照データ生成システム及び位置測位システム
JP5168601B2 (ja) 2010-03-31 2013-03-21 アイシン・エィ・ダブリュ株式会社 自車位置認識システム
US8965819B2 (en) * 2010-08-16 2015-02-24 Oracle International Corporation System and method for effective caching using neural networks
US9141906B2 (en) * 2013-03-13 2015-09-22 Google Inc. Scoring concept terms using a deep network
DE102013209601A1 (de) 2013-05-23 2014-12-11 Ford Global Technologies, Llc Verfahren und Vorrichtung zur Detektion von und zur Reaktion auf Nackensteifheitsprobleme bei Kraftfahrzeuginsassen
CN109690578B (zh) 2016-10-05 2024-01-02 英特尔公司 自主机器的通用输入/输出数据捕获和神经高速缓存系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104094294A (zh) * 2012-02-08 2014-10-08 高通股份有限公司 用于尖峰神经计算的方法和装置
CN104885107A (zh) * 2012-10-05 2015-09-02 思杰系统有限公司 经由应用捕获并共享视觉内容
CN105378721A (zh) * 2013-03-15 2016-03-02 比乌拉工厂有限公司 知识捕获和发现系统
CN105320495A (zh) * 2014-07-22 2016-02-10 英特尔公司 用于卷积神经网络的权重移位机制
WO2016099653A1 (en) * 2014-12-18 2016-06-23 Intel Corporation Facilitating dynamic pipelining of workload executions on graphics processing units on computing devices

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
一种图形加速器和着色器的体系结构;韩俊刚等;《计算机辅助设计与图形学学报》;20100315(第03期);全文 *

Also Published As

Publication number Publication date
US11010302B2 (en) 2021-05-18
WO2018064794A1 (en) 2018-04-12
US20190188141A1 (en) 2019-06-20
CN109690578A (zh) 2019-04-26

Similar Documents

Publication Publication Date Title
CN109690578B (zh) 自主机器的通用输入/输出数据捕获和神经高速缓存系统
US10922553B2 (en) Person tracking and privacy and acceleration of data using autonomous machines
CN112116098B (zh) 机器学习稀疏计算机制
CN108694080B (zh) 高效线程组调度
US11669932B2 (en) Efficient sharing and compression expansion of data across processing systems
US11615284B2 (en) Efficient transferring of human experiences to robots and other autonomous machines
US10600147B2 (en) Efficient memory layout for enabling smart data compression in machine learning environments
US11748106B2 (en) Data operations and finite state machine for machine learning via bypass of computational tasks based on frequently-used data values
US11301686B2 (en) Visual anomaly detection without reference in graphics computing environments
US20190325763A1 (en) Real and virtual collision-free movement of autonomous vehicles in mixed-reality environments
US20190066255A1 (en) Method and apparatus for efficient loop processing in a graphics hardware front end
EP3617883A1 (en) Inference engine acceleration for video analytics in computing environments
US10559112B2 (en) Hybrid mechanism for efficient rendering of graphics images in computing environments
US11550632B2 (en) Facilitating efficient communication and data processing across clusters of computing machines in heterogeneous computing environment
US20240062414A1 (en) Training and deploying pose regressions in neural networks in autonomous machines
CN109643395B (zh) 自适应窗口机制
CN110050243B (zh) 通过使用自主机器中的中间层特征的增强神经回归进行相机重新定位
WO2017222646A1 (en) Extension of register files for local processing of data in computing environments
US20190068974A1 (en) Smart multiplexed image compression in computing environments
US11175949B2 (en) Microcontroller-based flexible thread scheduling launching in computing environments
US10665006B2 (en) Efficient prediction of most commonly occuring values in data blocks in computing environments

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
GR01 Patent grant
GR01 Patent grant