CN113168711A - 利用阴影和反射的用于自主驾驶的对象检测和追踪 - Google Patents

利用阴影和反射的用于自主驾驶的对象检测和追踪 Download PDF

Info

Publication number
CN113168711A
CN113168711A CN201880094899.4A CN201880094899A CN113168711A CN 113168711 A CN113168711 A CN 113168711A CN 201880094899 A CN201880094899 A CN 201880094899A CN 113168711 A CN113168711 A CN 113168711A
Authority
CN
China
Prior art keywords
logic
graphics
information
processor
pipeline
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
CN201880094899.4A
Other languages
English (en)
Inventor
杨文龙
D·波尔
T·赖德
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 CN113168711A publication Critical patent/CN113168711A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • G06T7/507Depth or shape recovery from shading
    • 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/10016Video; Image sequence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30248Vehicle exterior or interior
    • G06T2207/30252Vehicle exterior; Vicinity of vehicle
    • G06T2207/30261Obstacle

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Traffic Control Systems (AREA)

Abstract

公开了一种方法(30),该方法(30)可包括以下的技术:分析电子图像以确定包括阴影信息和反射信息中的一个或多个的间接信息(31),并将该间接信息提供给车辆引导系统(32)。

Description

利用阴影和反射的用于自主驾驶的对象检测和追踪
技术领域
各实施例总体上涉及图形系统。更具体地,各实施例涉及用于利用阴影和反射的自主驾驶的对象检测和追踪。
背景技术
自主或半自主车辆(AV)可以包括用于感知的各种技术,例如相机反馈和传感信息。欧洲技术标准协会(ETSI)发布了智能运输系统(ITS)标准,该标准包括车辆中的、车辆之间(例如汽车到汽车)以及车辆与固定位置(例如汽车到基础设施)之间的远程信息处理和各种类型的通信。专用的短距离通信(DSRC)可以在特定位置(例如,用于诸如电子收费的应用的收费广场)提供车辆与路边之间的通信。合作式ITS(C-ITS)可支持全自主驾驶,包括专用于汽车ITS以及道路运输和交通远程信息处理(RTTT)的无线短程通信(ITS-G5)。C-ITS可以在道路参与者和基础设施之间提供连通性。AV还可以包括车辆引导系统,该车辆引导系统可以包括对象检测技术。对象检测技术可以包括图像处理技术,以检测在由相机捕获的图像中可见的对象。
附图说明
通过阅读以下说明书和所附权利要求并通过参考以下附图,实施例的各种优势对本领域技术人员将变得显而易见,其中:
图1是根据实施例的电子处理系统的示例的框图;
图2是根据实施例的半导体封装设备的示例的框图;
图3是根据实施例的引导车辆的方法的示例的流程图;
图4是根据实施例的车辆引导系统的示例的框图;
图5是根据实施例的自主车辆的示例的框图;
图6是根据实施例的利用光线追踪技术的间接对象检测器的示例的说明图。
图7是根据实施例的利用阴影图技术的另一间接对象检测器的示例的说明图。
图8是根据实施例的利用反射技术的间接对象检测器的示例的说明图。
图9是根据实施例的处理系统的示例的框图;
图10是根据实施例的处理器的示例的框图;
图11是根据实施例的图形处理器的示例的框图;
图12是根据实施例的图形处理器的图形处理引擎的示例的框图;
图13是根据实施例的图形处理器核的硬件逻辑的示例的框图;
图14A至图14B图示根据实施例的线程执行逻辑的示例;
图15是图示根据实施例的图形处理器指令格式的示例的框图;
图16是根据实施例的图形处理器的另一示例的框图;
图17A是图示根据实施例的图形处理器命令格式的示例的框图;
图17B是图示根据实施例的图形处理器命令序列的示例的框图;
图18示出了根据实施例的用于数据处理系统的示例图形软件架构;
图19A是示出根据实施例的IP核开发系统的示例的框图;
图19B图示根据实施例的集成电路封装组件的横截面侧视图的示例;
图20是图示根据实施例的芯片上系统集成电路的示例的框图;
图21A至图21B是图示根据实施例的用于在SoC内使用的示例性图形处理器的框图;以及
图22A至图22B示出了根据实施例的附加示例性图形处理器逻辑。
具体实施方式
现在转到图1,电子处理系统10的实施例可包括:处理器11;通信地耦合至处理器11的存储器12;以及通信地耦合至处理器11的逻辑13,用于分析电子图像以确定包括阴影信息和反射信息中的一个或多个的间接信息,并将该间接信息提供给车辆引导系统。在一些实施例中,逻辑13可以进一步被配置为用于至少部分地基于间接信息来做出车辆引导决策。在一些实施例中,逻辑13还可被配置为用于基于间接信息来检测对象,和/或基于间接信息来追踪对象。例如,逻辑13可以进一步被配置为用于将检测到的对象添加到场景,并且基于该场景做出自主车辆引导决策。在本文的实施例的任一个中,处理器11可以包括图形处理器。在一些实施例中,逻辑13可以位于各种组件中或与各种组件共处一地,包括处理器11(例如,在同一管芯上)。处理器11、存储器12和/或逻辑13的全部或部分可以被结合在车辆引导系统中或与之集成。
上述处理器11、存储器12、逻辑13中每一个的实施例以及其他系统组件可以以硬件、软件或其任何合适组合来实现。例如,硬件实现可包括诸如例如可编程逻辑阵列(PLA)、场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)之类的可配置逻辑,或使用诸如例如专用集成电路(ASIC)、互补金属氧化物半导体(CMOS)或晶体管-晶体管逻辑(TTL)技术之类的电路技术的固定功能逻辑硬件,或者其任何组合。处理器11的实施例可以包括通用处理器、专用处理器、中央处理器单元(CPU)、图形处理器单元(GPU)、推理引擎、控制器、微控制器等。
替代地或附加地,这些组件的全部或部分可在一个或多个模块中被实现为存储在机器或计算机可读存储介质(诸如,随机存取存储器(RAM)、只读存储器(ROM)、可编程ROM(PROM)、固件、闪存等)中的将由处理器或计算设备执行的逻辑指令集。例如,用于实现组件操作的计算机程序代码可以以一种或多种操作系统(OS)适用/适当的编程语言的任何组合来进行编写,包括诸如PYTHON、PERL、JAVA、SMALLTALK、C++、C#之类的面向对象编程语言,以及诸如“C”编程语言或类似编程语言之类的常规过程式编程语言。例如,存储器12、持久存储介质或其他系统存储器可存储指令集,该指令集在由处理器11执行时,使系统10实现系统10的一个或多个组件、特征或方面(例如,逻辑13,该逻辑13分析电子图像以确定包括阴影信息和反射信息中的一个或多个的间接信息,将该间接信息提供给车辆引导系统等)。
现在转到图2,半导体封装设备20的实施例可以包括一个或多个衬底21和耦合到一个或多个衬底21的逻辑22,其中逻辑22至少部分地在可配置逻辑和固定功能硬件逻辑中的一个或多个中实现。耦合到一个或多个衬底21的逻辑22可以被配置成用于分析电子图像以确定包括阴影信息和反射信息中的一个或多个的间接信息,并将该间接信息提供给车辆引导系统。在一些实施例中,逻辑22可以进一步被配置为用于至少部分地基于间接信息来做出车辆引导决策。在一些实施例中,逻辑22还可被配置为用于基于间接信息来检测对象,和/或基于间接信息来追踪对象。例如,逻辑22可以进一步被配置为用于将检测到的对象添加到场景,并且基于该场景做出自主车辆引导决策。在本文的实施例中的任一个中,耦合到一个或多个衬底21的逻辑22可以包括位于一个或多个衬底21内的晶体管沟道区。
逻辑22、以及设备20的其他组件的实施例可以以硬件、软件或其任何组合(至少包括部分硬件实现)来实现。例如,硬件实现可包括诸如例如PLA、FPGA、CPLD之类的可配置逻辑、或使用诸如例如ASIC、CMOS或TTL技术之类的电路技术的固定功能逻辑硬件、或者其任何组合。此外,这些组件的部分可在一个或多个模块中被实现为存储在机器或计算机可读存储介质(诸如,RAM、ROM、PROM、固件、闪存等)中的将由处理器或计算设备执行的逻辑指令集。例如,用于实现组件操作的计算机程序代码可以以一种或多种OS适用/适当的编程语言的任何组合来进行编写,包括诸如PYTHON、PERL、JAVA、SMALLTALK、C++、C#之类的面向对象编程语言,以及诸如“C”编程语言或类似编程语言之类的常规过程式编程语言。
设备20可以实现方法30(图3)的一个或多个方面,或本文讨论的实施例中的任一个。在一些实施例中,所示设备20可包括一个或多个衬底21(例如,硅、蓝宝石、砷化镓)以及耦合到衬底21的逻辑22(例如,晶体管阵列和其他集成电路/IC组件)。逻辑22可至少部分地被实现在可配置逻辑或固定功能逻辑硬件中。在一个示例中,逻辑22可包括位于(例如,嵌入)(多个)衬底21内的晶体管沟道区。因此,逻辑22与(多个)衬底21之间的接口可以不是突变结。逻辑22还可被认为包括在(多个)衬底21的初始晶片上生长的外延层。
现在转到图3,引导车辆的方法30的实施例可以包括:在框31处,分析电子图像以确定包括阴影信息和反射信息中的一个或多个的间接信息;以及在框32处,将该间接信息提供给车辆引导系统。方法30的一些实施例可以包括:在框33处,至少部分地基于间接信息来做出车辆引导决策。附加地或可替代地,方法30的一些实施例可以包括:在框34处,基于间接信息来检测对象,和/或在框35处,基于间接信息来追踪对象。例如,方法30可以包括:在框36处,将检测到的对象添加到场景,并且在框37处,基于该场景做出自主车辆引导决策。在本文实施例的任一个中,方法30可以包括:在框38处,用图形处理器分析电子图像。
方法30的实施例可在系统、装置、计算机、设备等(例如诸如,本文所描述的那些)中被实现。更具体地,方法30的硬件实现可包括可配置逻辑(诸如例如PLA、FPGA、CPLD)、或者使用电路技术(诸如例如,ASIC、CMOS或TTL技术)的固定功能逻辑硬件,或其任何组合。替代地或附加地,方法30可在一个或多个模块中被实现为存储在机器或计算机可读存储介质(诸如,RAM、ROM、PROM、固件、闪存等)中的将由处理器或计算设备执行的逻辑指令集。例如,用于实现组件操作的计算机程序代码可以以一种或多种OS适用/适当的编程语言的任何组合来进行编写,包括诸如PYTHON、PERL、JAVA、SMALLTALK、C++、C#之类的面向对象编程语言,以及诸如“C”编程语言或类似编程语言之类的常规过程式编程语言。
例如,方法30可在结合下文示例19至24来描述的计算机可读介质上被实现。方法30的实施例或部分可以在固件、应用(例如,通过应用编程接口(API))或在操作系统(OS)上运行的驱动程序软件中实现。另外,逻辑指令可包括汇编程序指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、状态设置数据、用于集成电路的配置数据、使对于硬件(例如,主机处理器、中央处理单元/CPU、微控制器等)而言是原生的电子电路和/或其他结构组件个性化的状态信息。
现在转到图4,车辆引导系统40的实施例可以包括一个或多个相机41、阴影检测器42、反射检测器43和决策引擎44。(多个)相机41可以捕获车辆周围环境的数字图像,该车辆可以是人工引导的车辆(例如,其中车辆引导系统40提供驾驶员辅助技术)、半自主车辆或完全自主车辆。阴影检测器42可以分析数字图像以确定与阴影有关的信息(例如,数字图像中阴影的存在)。可以将任何合适的技术用于阴影检测(例如,图像处理技术、机器学习技术等)。反射检测器43可以分析数字图像以确定与反射有关的信息(例如,数字图像中反射的存在)。可以将任何合适的技术用于反射检测(例如,图像处理技术、机器学习技术等)。数字图像通常将包括关于车辆周围环境中的对象的直接信息(例如,其他车辆、标志、建筑物、行人等的图像)。阴影信息和反射信息可以被认为是间接信息,因为阴影和反射信息可以包括关于在数字图像中不直接可见的对象的信息(例如,在阻碍直接看到汽车的对象的后面的汽车阴影、行人在街角转角镜上的反射等)。将间接信息提供给车辆引导系统40可以有利地增加车辆引导系统40具有的关于车辆周围环境的有用信息的量。
决策引擎44可以从车载相机/传感器接收直接信息,和/或从外部资源(例如,其他车辆、云服务、DSRC、蜂窝V2X等)接收电子信息。有利地,与阴影有关的信息和/或与反射有关的信息可以补充被提供给决策引擎44的其他信息。例如,与阴影有关的信息和/或与反射有关的信息可以被提供给决策引擎44,并且决策引擎44可以被配置为用于至少部分地基于间接信息来做出车辆引导决策。车辆引导决策的非限制性示例包括:在车辆内部发出警报(例如,诸如声音、闪光灯、盲点警告、碰撞警告等之类的驾驶员辅助通知)、在车辆外部发出警报(例如,发出喇叭声、闪烁的灯光等)、追踪间接检测到的对象(例如,将对象添加到导航图并监测对象的移动)以及避免碰撞的决策(例如,降低速度、应用刹车,改变车辆方向等)。
例如,决策引擎44可被配置为用于基于间接信息来检测对象,和/或基于间接信息来追踪对象。例如,决策引擎44可以进一步被配置为用于将检测到的对象添加到场景,并且基于该场景做出自主车辆引导决策。在一些实施例中,车辆引导系统40可以包括图形处理器以执行阴影检测和/或反射检测中的一些或全部。合适的技术的任何组合可以用于决策引擎44。这样的合适技术的非限制性示例包括推理引擎、机器学习系统(例如,神经网络、卷积神经网络等)、CPU、GPU和合适的软件/训练。在一些实施例中,决策引擎44可以包括推理引擎或其他机器学习组件,该推理引擎或其他机器学习组件可以将与阴影有关的信息和与反射有关的信息作为输入(例如,除了直接信息和其他典型的车辆引导输入信息之外),并且提供对象检测和/或车辆引导决策作为输出。
相机41、阴影检测器42、反射检测器43、决策引擎44以及系统40的其他组件的实施例可以以硬件、软件或其任何组合(至少包括部分硬件形式的实现)来实现。例如,硬件实现可包括诸如例如PLA、FPGA、CPLD之类的可配置逻辑、或使用诸如例如ASIC、CMOS或TTL技术之类的电路技术的固定功能逻辑硬件、或者其任何组合。此外,这些组件的部分可在一个或多个模块中被实现为存储在机器或计算机可读存储介质(诸如,RAM、ROM、PROM、固件、闪存等)中的将由处理器或计算设备执行的逻辑指令集。例如,用于实现组件操作的计算机程序代码可以以一种或多种OS适用/适当的编程语言的任何组合来进行编写,包括诸如PYTHON、PERL、JAVA、SMALLTALK、C++、C#之类的面向对象编程语言,以及诸如“C”编程语言或类似编程语言之类的常规过程式编程语言。
现在转到图5,自主车辆(AV)50的实施例可包括容纳/支承推进子系统52和电力子系统53的车身51。AV 50可以是完全自主的或半自主的,并且可以可选地容纳一个或多个乘客和/或一个或多个驾驶员/飞行员。推进子系统52可包括地面推进组件、空气推进组件、海上推进组件和空间推进组件或任何其他合适的推进组件(例如,电缆、磁悬浮等)中的一个或多个。例如,AV 50可以是汽车、飞机、直升机、轮船、无人机等。电力子系统53可以包括一个或多个电池或电源。在一些实施例中,电力子系统可以可选地包括一个或多个附加电源,诸如,汽油或其他燃料动力引擎。AV 50还可包括一个或多个天线54,其耦合到无线电子系统55、车辆计算机56、GPS子系统57、传感器子系统58(例如,包括一个或多个相机)以及间接对象检测器和追踪器59(例如,包括阴影检测器和/或反射检测器)。AV 50的组件和子系统可以以任何合适的方式彼此耦合,包括机械地耦合和/或电气地耦合。电气组件可以有线或无线地彼此通信地耦合。例如,来自GPS子系统57的位置信息可用于导航,并且AV 50可至少部分地依赖于用于导航的位置信息。尽管主要以自主车辆的示例进行讨论,但是一些实施例可以适用于非自主车辆或其他导航应用(例如,其中另一种类型的边缘设备可以代替AV50)。
间接对象检测器和追踪器59可以如以上结合系统10(图1)、设备20(图2)和/或车辆引导系统40(图4)的各方面所述的进行配置,和/或可以实现方法30(图3)的一个或多个方面(例如,和/或可以包括下面描述的其他实施例和示例的特征)。尤其,间接对象检测器和追踪器59可以包括用于以下的技术:分析电子图像以确定包括阴影信息和反射信息中的一个或多个的间接信息,并将该间接信息提供给车辆计算机56(例如,其可以包括车辆引导技术)。在一些实施例中,车辆计算机56可以进一步被配置为用于至少部分地基于间接信息来做出车辆引导决策。在一些实施例中,间接对象检测器和追踪器59还可被配置为用于基于间接信息来检测对象,和/或基于间接信息来追踪对象。例如,车辆计算机56可以进一步被配置为用于将检测到的对象添加到场景,并且基于该场景做出自主车辆引导决策。例如,间接对象检测器和追踪器59可以被配置为用于:通过随着时间的过去检测同一对象并确定该对象是否正在移动来追踪对象,并且如果是,则基于对象在先移动的历史来估计对象的速度/轨迹。
在本文实施例的任一个中,车辆计算机56可以包括各技术的任何合适的组合(例如,处理器、图形处理器、CPU、GPU、推理引擎等中的一个或多个)。车辆计算机56可以从车载相机/传感器接收直接信息,和/或从外部资源(例如,其他车辆、云服务、DSRC、蜂窝V2X等)接收电子信息。有利地,间接对象检测器和追踪器59可以用间接信息(例如,阴影信息、反射信息、推理的对象位置和移动等)补充被提供给车辆计算机56的其他信息。在一些实施例中,间接对象检测器和追踪器59可以被物理地或逻辑地布置为车辆计算机56外部的模块。替代地,在一些实施例中,间接对象检测器和追踪器59的全部或部分可以在车辆计算机56中实现或与车辆计算机56集成。
一些实施例可以有利地提供对象追踪以用于通过阴影和反射的自主驾驶。优选地,自主驾驶应该高度可靠并且与手动操作者一样好或更好。通过在车辆周围使用诸如相机之类的传感器,系统收集有关其周围环境的信息并对其做出反应。传统自主驾驶系统可能滤除阴影和/或忽略反射,作为其直接检测技术的一部分。然而,从环境中的阴影和反射中推断的知识可能会为自主驾驶提供有用的信息。一些实施例可以有利地利用环境中的阴影和反射来为自主驾驶提供更好的场景理解。
用于自主驾驶的一些对象检测技术仅检测场景中直接可见的对象。传统方法会错过许多类型的次级光效果,像阴影和反射,它们可以提供其他信息。用于车辆的传统阴影检测技术可以分析视频图像数据以滤除阴影,使得阴影不被视为场景中的真实对象。有利地,一些实施例可以利用阴影检测技术来获得附加的场景信息。尤其,一些实施例可以利用环境中的阴影和反射来增加带有相机的关于其周围环境的自主汽车的了解。一些实施例可以有利地实现对于在场景内部不直接可见的对象的更好的对象检测并避免碰撞。了解更多有关环境的知识可以导致更好并且更安全的自动驾驶决策。
自主驾驶车辆可以配备有相机。可以使用任何合适的技术来对相机捕获的图像中的阴影进行检测。代替丢弃阴影信息,一些实施例可以利用阴影信息以基于对象阴影的存在来推断在场景中不直接可见的对象的存在。对于反射而言,一些实施例可以利用高度详细的电子街道地图(例如,诸如在自主驾驶系统的许多实现中所使用的那些)。在这些街道地图内,可以保存反射对象(例如,建筑物窗户、交通镜等),包括这些反射对象的位置和近似3D形状。进一步地,高度详细的街道地图可能包含有关光源(例如路灯、泛光灯等)以及光源被安装的位置(例如位置、高度、取向等)的信息,该信息可对于阴影检测和反射检测两者而言都是有用的。
阴影只有在有光的情况下才会发生。通过知道光源的位置以及表面的形状和位置,可以重构关于遮挡对象的信息。对于自主驾驶,静止的阴影和在地面上移动的阴影对于重构有关其他对象(例如汽车、行人等)的知识可能是有用的。从地面开始可以简化对象的重构,因为存在较小的自由度。阴影边缘的柔软度还可提供有关阴影投射者到阴影的距离的信息。阴影很少出现带有精确的锐利边缘。阴影的一部分距离阴影投射对象越远,边缘就越模糊。如果已知光源的位置,则柔软度还可用于近似阴影投射者的形状和位置。
现在转到图6,间接对象检测器60的实施例可以利用光线追踪技术。在一些应用中,可以基于关于对象的信息将光线追踪技术用于阴影的重构。例如,在计算机图形中,人工创建用于渲染的照明和阴影效果通常很重要。这样的技术可以基于关于光源、对象以及出现阴影的表面的信息来创建阴影。可以利用这种技术的逆以基于有关汽车相机图像中看到的光线位置和阴影的信息来重构对象。
如图6所示,可以使用光线追踪来分析阴影和照明。在该示例中,相机可以表示车辆内部的相机之一。外在和内在参数可以是已知的或假定的。图像对应于相机捕获的内容。如果如所示的地面上有阴影,并且已知光源信息(例如,太阳位置、电子街道地图中的光源等),则无法将从点A发出的光线投射到光源上,因为点A被某一对象遮挡。阴影光线可以从点B投射向光源,因为点B没有被遮挡(它被照亮)。在某些情况下,场景对象(例如,图6中的球体)可能不可见。然而,使用光线追踪技术,间接对象检测器60的一些实施例可以重新计算图像中基于场景对象的阴影信息的全部或部分(例如,对于自主驾驶来说,在地面/地板上很可能会产生该阴影信息)和光源来源信息。
现在转到图7,间接对象检测器70的实施例可以利用阴影图技术。在一些应用中,阴影图技术可以用于阴影的重构。例如,在计算机图形中,阴影深度图可用于在渲染期间创建阴影。一些实施例可以利用这种技术的逆来重构在图像或场景中不直接可见的对象。在创建阴影图时,可以假定光源的行为类似于相机。例如,来自聚光灯的光的传播可以类似地匹配相机的打开角度。如果需要,可以使用多个此类聚光灯来模拟点光源。然后可以从光源的视角渲染场景。可以创建深度图,该深度图包含对象与光源的距离。
为了确定地面上的点是否被遮蔽,可以将来自该图的深度值投影回地面上。可以针对每个像素做出该确定。如果投影点与表面上的点大致匹配,则可以得出该点已被点亮的结论,从而意味着可以从光源看到地面的那一部分,因此光将行进到该点。然而,如果地面上的点的坐标与距离光源的深度值之间存在明显的差异,则可以得出光源看到另一遮挡物的结论。光无法到达地面,并因此存在阴影。一些实施例可以使用逆技术,以从阴影和光源的原点重构关于遮挡对象的数据,即使遮挡对象不是直接可见的。
现在转到图8,间接对象检测器80的实施例可以包括反射检测技术。一些应用可以利用光线追踪技术来构建反射。例如,在计算机图形中,可以将光线追踪视为用于计算反射以用于渲染的最精确技术。一些实施例可以使用逆技术来检测反射中的对象,和/或估计对象在场景中的位置。如果反射表面的形状已知,则即使反射的位置不是直接可见的,也可以重构反射的位置。对于平坦的反射表面,例如,如图8所示,反射角可以等于入射角。抛物线或其他反射表面同样可以为反射提供直接的数学关系。一些实施例可以将反射镜形状的3D模型与反射镜位置信息一起存储在高分辨率街道地图上。对于自主驾驶,一些实施例可以利用那些高分辨率地图并获取反射镜信息,以检测数字图像中的反射并使用存储的反射镜信息来重构反射对象和/或估计反射对象的位置。在一些实施例中,具有反射窗户及其粗略的3D形状的建筑物也可以保存在高度详细的街道地图中。使用窗户中的反射,可以获得有关不直接可见的对象的更多信息。
一些实施例可以利用其他固定的反射对象(例如,安装在车辆上的反射镜)和/或移动的反射对象(例如,其他车辆上的反射镜、其他车辆上的反射窗户、其他车辆上的反射式涂漆车身板等)。例如,直接对象识别技术可以标识反射镜或车窗,并且随后反射检测器可以在所标识的表面中检测对象。反射检测器可以识别某些汽车模型并存储汽车模型窗户和车身板的3D形状(例如,车窗的确切相对角度)。有了该信息,就可以实时收集有关此类移动反射对象中反射环境的实时知识。
对于自主驾驶,不应仅依靠来自一个传感器的信息来做出关键决策。一些实施例可以有利地将从阴影和/或反射重构的信息作为(多个)附加输入源提供到关于如何在自主驾驶场景中行动的决策树中。一些实施例可以进一步使用间接信息来验证直接信息的有效性,并抑制或减轻对车辆引导系统的欺骗或恶意攻击。例如,不存在与直接检测到的对象相对应的阴影或反射可能指示该对象实际上不存在,并且系统可能遭受欺骗或其他恶意攻击。
不受限于特定的实现方式,通常,如果关于环境的信息可从主要的可见传感器获得,则可以优先考虑该信息。然而,在没有实时信息可用的区域(例如,因为该区域在车辆的视野范围外),任何附加信息可以帮助做出有关自主驾驶的决策(例如,开始驾驶、停止驾驶、加快速度、在潜在危险的环境中减速等)。例如,穿越马路可能会使朝向穿过的街道的景象受到建筑物的限制和阻挡。可能无法看到从左街道或右街道驶来的汽车。一些实施例可以有利地检测进入交叉口的移动阴影,并将该信息用作驶来的汽车的提前警告。如果在街道对面安装了街道反射镜,则该反射镜可传递第部分街道的查看。一些实施例可以有利地检测反射镜中的移动对象,并确定对象是否正在接近交叉路口,作为驶来的汽车的提前警告。
系统概览
图9是根据实施例的处理系统100的框图。在各种实施例中,系统100包括一个或多个处理器102以及一个或多个图形处理器108,并且可以是单处理器台式机系统、多处理器工作站系统或具有大量处理器102或处理器核107的服务器系统。在一个实施例中,系统100是被并入在用于在移动设备、手持式设备或嵌入式设备中使用的芯片上系统(SoC)集成电路内的处理平台。
在一个实施例中,系统100可包括以下各项或可并入在以下各项内:基于服务器的游戏平台、包括游戏和媒体控制台的游戏控制台、移动游戏控制台、手持式游戏控制台或在线游戏控制台。在一些实施例中,系统100是移动电话、智能电话、平板计算设备或移动互联网设备。处理系统100还可包括可穿戴设备,可与可穿戴设备耦合或可集成在可穿戴设备内,该可穿戴设备诸如,智能手表可穿戴设备、智能眼镜设备、增强现实设备或虚拟现实设备。在一些实施例中,处理系统100是电视机或机顶盒设备,该电视机或机顶盒设备具有一个或多个处理器102以及由一个或多个图形处理器108生成的图形界面。在一些实施例中,系统100可以代替系统10(图1)、系统40(图4)、车辆计算机56(图5)、间接对象检测器和追踪器59(图5)、和/或间接对象检测器60、70和80(图6-8)中的任一个,并具有合适的逻辑以实现那些实施例的一个或多个方面。
在一些实施例中,一个或多个处理器102各自都包括用于处理器指令的一个或多个处理器核107,这些指令当被执行时,执行用于系统和用户软件的操作。在一些实施例中,一个或多个处理器核107中的每一个被配置成处理特定的指令集109。在一些实施例中,指令集109可促进复杂指令集计算(CISC)、精简指令集计算(RISC)或经由超长指令字(VLIW)的计算。多个处理器核107可各自处理不同的指令集109,不同的指令集109可包括用于促进对其他指令集的仿真的指令。处理器核107也可包括其他处理设备,诸如,数字信号处理器(DSP)。
在一些实施例中,处理器102包括高速缓存存储器104。取决于架构,处理器102可具有单个内部高速缓存或多级的内部高速缓存。在一些实施例中,高速缓存存储器在处理器102的各种组件之间被共享。在一些实施例中,处理器102也使用外部高速缓存(例如,第3级(L3)高速缓存或末级高速缓存(LLC))(未示出),可使用已知的高速缓存一致性技术在处理器核107之间共享该外部高速缓存。寄存器堆106被附加地包括在处理器102中,寄存器堆106可包括用于存储不同类型的数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器以及指令指针寄存器)。一些寄存器可以是通用寄存器,而其他寄存器可专用于处理器102的设计。
在一些实施例中,一个或多个处理器102与一个或多个接口总线110耦合,以在处理器102与系统100中的其他组件之间传输通信信号,诸如,地址、数据、或控制信号。在一个实施例中,接口总线110可以是处理器总线,诸如,直接媒体接口(DMI)总线的某个版本。然而,处理器总线不限于DMI总线,并且可包括一个或多个外围组件互连总线(例如,PCI、PCIExpress)、存储器总线或其他类型的接口总线。在一个实施例中,(多个)处理器102包括集成存储器控制器116和平台控制器中枢130。存储器控制器116促进存储器设备与系统100的其他组件之间的通信,而平台控制器中枢(PCH)130提供经由本地I/O总线至I/O设备的连接。
存储器设备120可以是动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪存设备、相变存储器设备、或具有适当的性能以充当进程存储器的某个其他存储器设备。在一个实施例中,存储器设备120可以作为用于系统100的系统存储器来操作,以存储数据122和指令121供在一个或多个处理器102执行应用或进程时使用。存储器控制器116也与任选的外部图形处理器112耦合,该任选的外部图形处理器112可与处理器102中的一个或多个图形处理器108通信以执行图形操作和媒体操作。在一些实施例中,显示设备111可以连接至(多个)处理器102。显示设备111可以是以下各项中的一项或多项:内部显示设备,如在移动电子设备或膝上型设备中;或经由显示接口(例如,显示端口等)附接的外部显示设备。在一个实施例中,显示设备111可以是头戴式显示器(HMD),诸如,用于在虚拟现实(VR)应用或增强现实(AR)应用中使用的立体显示设备。
在一些实施例中,平台控制器中枢130使外围设备能够经由高速I/O总线而连接至存储器设备120和处理器102。I/O外围设备包括但不限于音频控制器146、网络控制器134、固件接口128、无线收发器126、触摸传感器125、数据存储设备124(例如,硬盘驱动器、闪存等)。数据存储设备124可以经由存储接口(例如,SATA)或经由如外围组件互连总线(例如,PCI、PCI Express)之类的外围总线来进行连接。触摸传感器125可以包括触摸屏传感器、压力传感器、或指纹传感器。无线收发器126可以是Wi-Fi收发器、蓝牙收发器、或移动网络收发器,该移动网络收发器诸如3G、4G、或长期演进(LTE)收发器。固件接口128使得能够与系统固件进行通信,并且可以例如是统一可扩展固件接口(UEFI)。网络控制器134可启用到有线网络的网络连接。在一些实施例中,高性能网络控制器(未示出)与接口总线110耦合。在一个实施例中,音频控制器146是多声道高清音频控制器。在一个实施例中,系统100包括用于将传统(例如,个人系统2(PS/2))设备耦合至系统的任选的传统I/O控制器140。平台控制器中枢130还可以连接至一个或多个通用串行总线(USB)控制器142连接输入设备,诸如,键盘和鼠标143组合、相机144、或其他USB输入设备。
将会理解,所示的系统100是示例性的而非限制性的,因为也可以使用以不同方式配置的其他类型的数据处理系统。例如,存储器控制器116和平台控制器中枢130的实例可以集成到分立的外部图形处理器中,该分立的外部图形处理器诸如外部图形处理器112。在一个实施例中,平台控制器中枢130和/或存储器控制器116可以在一个或多个处理器102外部。例如,系统100可包括外部存储器控制器116和平台控制器中枢130,该外部存储器控制器116和平台控制器中枢130可以被配置为在与(多个)处理器102通信的系统芯片组内的存储器控制器中枢和外围控制器中枢。
图10是处理器200的实施例的框图,该处理器200具有一个或多个处理器核202A-202N、集成存储器控制器214以及集成图形处理器208。图10的具有与本文中的任何其他附图的元件相同的附图标记(或名称)的那些元件能以类似于本文中其他地方描述的任何方式操作或起作用,但不限于此。处理器200可包括附加的核,这些附加的核多至由虚线框表示的附加核202N并包括由虚线框表示的附加核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 Express总线。系统代理核210提供对各处理器组件的管理功能。在一些实施例中,系统代理核210包括用于管理对各种外部存储器设备(未示出)的访问的一个或多个集成存储器控制器214。
在一些实施例中,处理器核202A-202N中的一个或多个处理器核包括对同步多线程的支持。在此类实施例中,系统代理核210包括用于在多线程处理期间协调并操作核202A-202N的组件。系统代理核210可附加地包括功率控制单元(PCU),该功率控制单元包括用于调节处理器核202A-202N和图形处理器208的功率状态的逻辑和组件。
在一些实施例中,处理器200附加地包括用于执行图形处理操作的图形处理器208。在一些实施例中,图形处理器208与共享高速缓存单元的集合206以及与系统代理核210耦合,该系统代理核210包括一个或多个集成存储器控制器214。在一些实施例中,系统代理核210还包括用于将图形处理器输出驱动到一个或多个经耦合的显示器的显示控制器211。在一些实施例中,显示控制器211还可以是经由至少一个互连与图形处理器耦合的单独模块,或者可以集成在图形处理器208内。
在一些实施例中,基于环的互连单元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集成电路。在一些实施例中,处理器200可以适用于系统10(图1)、系统40(图4)、车辆计算机56(图5)、间接对象检测器和追踪器59(图5)、和/或间接对象检测器60、70和80(图6-8)中的任一个中,并具有合适的逻辑以实现那些实施例的一个或多个方面。
图11是图形处理器300的框图,该图形处理器300可以是分立的图形处理单元,或可以是与多个处理核集成的图形处理器。在一些实施例中,图形处理器经由到图形处理器上的寄存器的存储器映射的I/O接口并且利用被放置到处理器存储器中的命令进行通信。在一些实施例中,图形处理器300包括用于访问存储器的存储器接口314。存储器接口314可以是到本地存储器、一个或多个内部高速缓存、一个或多个共享的外部高速缓存、和/或系统存储器的接口。
在一些实施例中,图形处理器300还包括显示控制器302,该显示控制器302用于将显示输出数据驱动到显示设备320。显示控制器302包括用于显示器的一个或多个叠加平面以及多层的视频或用户界面元素的合成的硬件。显示设备320可以是内部或外部显示设备。在一个实施例中,显示设备320是头戴式显示设备,诸如,虚拟现实(VR)显示设备或增强现实(AR)显示设备。在一些实施例中,图形处理器300包括用于将媒体编码到一种或多种媒体编码格式,从一种或多种媒体编码格式对媒体解码,或在一种或多种媒体编码格式之间对媒体转码的视频编解码器引擎306,这一种或多种媒体编码格式包括但不限于:移动图像专家组(MPEG)格式(诸如,MPEG-2)、高级视频译码(AVC)格式(诸如,H.264/MPEG-4AVC以及电影和电视工程师协会(SMPTE)421M/VC-1、和联合图像专家组(JPEG)格式(诸如,JPEG、以及运动JPEG(MJPEG)格式)。
在一些实施例中,图形处理器300包括块图像传送(BLIT)引擎304,用于执行二维(2D)栅格化器操作,包括例如,位边界块传送。然而,在一个实施例中,使用图形处理引擎(GPE)310的一个或多个组件执行2D图形操作。在一些实施例中,GPE 310是用于执行图形操作的计算引擎,这些图形操作包括三维(3D)图形操作和媒体操作。
在一些实施例中,GPE 310包括用于执行3D操作的3D流水线312,3D操作诸如,使用作用于3D基元形状(例如,矩形、三角形等)的处理函数来渲染三维图像和场景。3D流水线312包括可编程和固定功能元件,该可编程和固定功能元件执行到3D/媒体子系统315的元件和/或所生成的执行线程内的各种任务。虽然3D流水线312可用于执行媒体操作,但是GPE310的实施例还包括媒体流水线316,该媒体流水线316专门用于执行媒体操作,诸如,视频后处理和图像增强。
在一些实施例中,媒体流水线316包括固定功能或可编程逻辑单元用于代替、或代表视频编解码器引擎306来执行一个或多个专业的媒体操作,诸如,视频解码加速、视频去隔行、以及视频编码加速。在一些实施例中,媒体流水线316附加地包括线程生成单元以生成用于在3D/媒体子系统315上执行的线程。所生成的线程在3D/媒体子系统315中所包括的一个或多个图形执行单元上执行对媒体操作的计算。
在一些实施例中,3D/媒体子系统315包括用于执行由3D流水线312和媒体流水线316生成的线程的逻辑。在一个实施例中,流水线向3D/媒体子系统315发送线程执行请求,该3D/媒体子系统315包括用于对于对可用的线程执行资源的各种请求进行仲裁和分派的线程分派逻辑。执行资源包括用于处理3D线程和媒体线程的图形执行单元的阵列。在一些实施例中,3D/媒体子系统315包括用于线程指令和数据的一个或多个内部高速缓存。在一些实施例中,该子系统还包括用于在线程之间共享数据并用于存储输出数据的共享存储器,其包括寄存器和可寻址存储器。在一些实施例中,图形处理器300可以适用于系统10(图1)、系统40(图4)、车辆计算机56(图5)、间接对象检测器和追踪器59(图5)、和/或间接对象检测器60、70和80(图6-8)中的任一个中,并具有合适的逻辑以实现那些实施例的一个或多个方面。
图形处理引擎
图12是根据一些实施例的图形处理器的图形处理引擎410的框图。在一个实施例中,图形处理引擎(GPE)410是图11中示出的GPE 310的某个版本。图12的具有与本文中的任何其他附图的元件相同的附图标记(或名称)的那些元件能以类似于本文中其他地方描述的任何方式操作或起作用,但不限于此。例如,示出图11的3D流水线312和媒体流水线316。媒体流水线316在GPE 410的一些实施例中是任选的,并且可以不被显式地包括在GPE 410内。例如并且在至少一个实施例中,单独的媒体和/或图像处理器被耦合至GPE 410。在一些实施例中,GPE 410可以适用于系统10(图1)、系统40(图4)、车辆计算机56(图5)、间接对象检测器和追踪器59(图5)、和/或间接对象检测器60、70和80(图6-8)中的任一个中,并具有合适的逻辑以实现那些实施例的一个或多个方面。
在一些实施例中,GPE 410与命令流转化器403耦合或包括命令流转化器403,该命令流转化器403将命令流提供给3D流水线312和/或媒体流水线316。在一些实施例中,命令流转化器403与存储器耦合,该存储器可以是系统存储器、或内部高速缓存存储器和共享高速缓存存储器中的一个或多个。在一些实施例中,命令流转化器403从存储器接收命令,并将这些命令发送至3D流水线312和/或媒体流水线316。这些命令是从环形缓冲器取出的指示,该环形缓冲器存储用于3D流水线312和媒体流水线316的命令。在一个实施例中,环形缓冲器可附加地包括存储批量的多个命令的批量命令缓冲器。用于3D流水线312的命令还可包括对存储在存储器中的数据的引用,这些数据诸如但不限于用于3D流水线312的顶点数据和几何数据和/或用于媒体流水线316的图像数据和存储器对象。3D流水线312和媒体流水线316通过经由各自流水线内的逻辑执行操作或者通过将一个或多个执行线程分派至图形核阵列414来处理命令和数据。在一个实施例中,图形核阵列414包括一个或多个图形核(例如,(多个)图形核415A、(多个)图形核415B)的块,每个块包括一个或多个图形核。每个图形核包括图形执行资源的集合,该图形执行资源的集合包括:用于执行图形操作和计算操作的通用执行逻辑和图形专用执行逻辑;以及固定功能纹理处理逻辑和/或机器学习和人工智能加速逻辑。
在各实施例中,3D流水线312包括用于通过处理指令以及将执行线程分派到图形核阵列414来处理一个或多个着色器程序的固定功能和可编程逻辑,这一个或多个着色器程序诸如,顶点着色器、几何着色器、像素着色器、片段着色器、计算着色器、或其他着色器程序。图形核阵列414提供统一的执行资源块供在处理这些着色器程序时使用。图形核阵列414的(多个)图形核415A-415B内的多功能执行逻辑(例如,执行单元)包括对各种3D API着色器语言的支持,并且可执行与多个着色器相关联的多个同步执行线程。
在一些实施例中,图形核阵列414还包括用于执行诸如视频和/或图像处理的媒体功能的执行逻辑。在一个实施例中,执行单元附加地包括通用逻辑,该通用逻辑可编程以便除了执行图形处理操作之外还执行并行通用计算操作。通用逻辑可与图9的(多个)处理器核107或图10中的核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内的确切的功能集因实施例而异。在一些实施例中,共享功能逻辑420内的由图形核阵列414广泛使用的特定共享功能可被包括在图形核阵列414内的共享功能逻辑416内。在各实施例中,图形核阵列414内的共享功能逻辑416可包括共享功能逻辑420内的一些或所有逻辑。在一个实施例中,共享功能逻辑420内的所有逻辑元件可以在图形核阵列414的共享功能逻辑416内被复制。在一个实施例中,共享功能逻辑420被排除以有利于图形核阵列414内的共享功能逻辑416。
图13是根据本文中所描述的一些实施例的图形处理器核500的硬件逻辑的框图。图13的具有与本文中的任何其他附图的元件相同的附图标记(或名称)的那些元件能以类似于本文中其他地方描述的任何方式操作或起作用,但不限于此。在一些实施例中,所示出的图形处理器核500被包括在图12的图形核阵列414内。该图形处理器核500(有时称为核切片)可以是模块化图形处理器内的一个或多个图形核。图形处理器核500的示例是一个图形核切片,并且基于目标功率包络和性能包络,如本文中所描述的图形处理器可以包括多个图形核切片。每个图形处理器核500可包括固定功能块530,该固定功能块530与多个子核501A-501F(也称为子切片)耦合,多个子核501A-501F包括模块化的通用和固定功能逻辑的块。在一些实施例中,图形处理器核500可以适用于系统10(图1)、系统40(图4)、车辆计算机56(图5)、间接对象检测器和追踪器59(图5)、和/或间接对象检测器60、70和80(图6-8)中的任一个中,并具有合适的逻辑以实现那些实施例的一个或多个方面。
在一些实施例中,固定功能块530包括几何/固定功能流水线536,该几何/固定功能流水线536例如在较低性能和/或较低功率的图形处理器实现中可由图形处理器核500中的所有子核共享。在各实施例中,几何/固定功能流水线536包括3D固定功能流水线(例如,图11和图12中的3D流水线312)、视频前端单元、线程生成器和线程分派器、以及统一返回缓冲器管理器,该统一返回缓冲器管理器管理统一返回缓冲器,诸如,在图12的统一返回缓冲器418。
在一个实施例中,固定功能块530还包括图形SoC接口537、图形微控制器538和媒体流水线539。图形SoC接口537提供图形处理器核500与芯片上系统集成电路内的其他处理器核之间的接口。图形微控制器538是可配置成管理图形处理器核500的各种功能的可编程子处理器,这些功能包括线程分派、调度和抢占。媒体流水线539(例如,图11和图12的媒体流水线316)包括用于促进对包括图像数据和视频数据的多媒体数据进行解码、编码、预处理和/或后处理的逻辑。媒体流水线539经由对子核501A-501F内的计算或采样逻辑的请求来实现媒体操作。
在一个实施例中,SoC接口537使图形处理器核500能够与通用应用处理器核(例如,CPU)和/或SoC内的其他组件进行通信,其他组件包括诸如共享的末级高速缓存存储器的存储器层级结构元件、系统RAM、和/或嵌入式芯片上或封装上DRAM。SoC接口537还可启用与SoC内的诸如相机成像流水线的固定功能设备的通信,并且启用全局存储器原子性的使用和/或实现全局存储器原子性,该全局存储器原子性可在图形处理器核500与SoC内的CPU之间被共享。SoC接口537还可实现针对图形处理器核500的功率管理控制,并且启用图形核500的时钟域与SoC内的其他时钟域之间的接口。在一个实施例中,SoC接口537使得能够从命令流转化器和全局线程分派器接收命令缓冲器,该命令流转化器和全局线程分派器被配置成将命令和指令提供给图形处理器内的一个或多个图形核中的每一个图形核。当媒体操作将要执行时,这些命令和指令可以被分派给媒体流水线539,或者当图形处理操作将要执行时,这些命令和指令可以被分派给几何和固定功能流水线(例如,几何和固定功能流水线536、几何和固定功能流水线514)。
图形微控制器538可被配置成执行针对图形处理器核500的各种调度任务和管理任务。在一个实施例中,图形微控制器538可对子核501A-501F内的执行单元(EU)阵列502A-502F、504A-504F内的各个图形并行引擎执行图形和/或计算工作负载调度。在该调度模型中,在包括图形处理器核500的SoC的CPU核上执行的主机软件可以经由多个图形处理器门铃(doorbell)中的一个图形处理器门铃来提交工作负载,这调用了对适当的图形引擎的调度操作。调度操作包括:确定接下来要运行哪个工作负载,将工作负载提交到命令流转化器,抢占在引擎上运行的现有工作负载,监测工作负载的进度,以及当工作负载完成时通知主机软件。在一个实施例中,图形微控制器538还可促进图形处理器核500的低功率或空闲状态,从而向图形处理器核500提供独立于操作系统和/或系统上的图形驱动器软件跨低功率状态转变来保存和恢复图形处理器核500内的寄存器的能力。
图形处理器核500可具有多于或少于所示出的子核501A-501F,多达N个模块化子核。对于每组N个子核,图形处理器核500还可包括共享功能逻辑510、共享和/或高速缓存存储器512、几何/固定功能流水线514、以及用于加速各种图形和计算处理操作的附加的固定功能逻辑516。共享功能逻辑510可以包括与可由图形处理器核500内的每N个子核共享的、与图12的共享功能逻辑420(例如,采样器逻辑、数学逻辑、和/或线程间通信逻辑)相关联的逻辑单元。共享和/或高速缓存存储器512可以是用于图形处理器核500内的N个子核的集合501A-501F的末级高速缓存,并且还可以充当可由多个子核访问的共享存储器。几何/固定功能流水线514而不是几何/固定功能流水线536可被包括在固定功能块530内,并且几何/固定功能流水线514可包括相同或类似的逻辑单元。
在一个实施例中,图形处理器核500包括附加的固定功能逻辑516,该附加的固定功能逻辑516可包括供由图形处理器核500使用的各种固定功能加速逻辑。在一个实施例中,附加的固定功能逻辑516包括供在仅位置着色中使用的附加的几何流水线。在仅位置着色中,存在两个几何流水线:几何/固定功能流水线516、536内的完全几何流水线;以及剔除流水线,其是可被包括在附加的固定功能逻辑516内的附加的几何流水线。在一个实施例中,剔除流水线是完全几何流水线的精简版本。完全流水线和剔除流水线可以执行同一应用的不同实例,每个实例具有单独的上下文。仅位置着色可以隐藏被丢弃三角形的长剔除运行,从而在一些实例中使得能够更早地完成着色。例如并且在一个实施例中,附加的固定功能逻辑516内的剔除流水线逻辑可以与主应用并行地执行位置着色器,并且通常比完全流水线更快地生成关键结果,因为剔除流水线仅取出顶点的位置属性并对顶点的位置属性进行着色,而不向帧缓冲器执行对像素的栅格化和渲染。剔除流水线可以使用所生成的关键结果来计算所有三角形的可见性信息,而无需考虑那些三角形是否被剔除。完全流水线(其在本实例中可以被称为重放(replay)流水线)可以消耗该可见性信息以跳过被剔除的三角形,从而仅对最终被传递到栅格化阶段的可见的三角形进行着色。
在一个实施例中,附加的固定功能逻辑516还可包括机器学习加速逻辑,诸如,固定功能矩阵乘法逻辑,该机器学习加速逻辑用于包括针对机器学习训练或推断的优化的实现方式。
在每个图形子核501A-501F内包括可用于响应于由图形流水线、媒体流水线、或着色器程序作出的请求而执行图形操作、媒体操作和计算操作的执行资源的集合。图形子核501A-501F包括:多个EU阵列502A-502F、504A-504F;线程分派和线程间通信(TD/IC)逻辑503A-503F;3D(例如,纹理)采样器505A-505F;媒体采样器506A-506F;着色器处理器507A-507F;以及共享的本地存储器(SLM)508A-508F。EU阵列502A-502F、504A-504F各自包括多个执行单元,这些执行单元是能够执行浮点和整数/定点逻辑操作以服务于图形操作、媒体操作或计算操作(包括图形程序、媒体程序或计算着色器程序)的通用图形处理单元。TD/IC逻辑503A-503F执行针对子核内的执行单元的本地线程分派和线程控制操作,并且促进在子核的执行单元上执行的线程之间的通信。3D采样器505A-505F可将纹理或其他3D图形相关的数据读取到存储器中。3D采样器可以基于所配置的样本状态以及与给定纹理相关联的纹理格式以不同方式读取纹理数据。媒体采样器506A-506F可基于与媒体数据相关联的类型和格式来执行类似的读取操作。在一个实施例中,每个图形子核501A-501F可以交替地包括统一3D和媒体采样器。在子核501A-501F中的每一个子核内的执行单元上执行的线程可利用每个子核内的共享的本地存储器508A-508F,以使在线程组内执行的线程能够使用芯片上存储器的公共池来执行。
执行单元
图14A-图14B示出根据本文中所描述的实施例的线程执行逻辑600,该线程执行逻辑600包括在图形处理器核中采用的处理元件的阵列。图14A-图14B的具有与本文中的任何其他附图的元件相同的附图标记(或名称)的那些元件能以类似于本文中其他地方描述的任何方式操作或起作用,但不限于此。图14A示出线程执行逻辑600的概览,该线程执行逻辑600可包括以图13中的每个子核501A-501F示出的硬件逻辑的变体。图14B示出执行单元的示例性内部细节。
如在图14A中所示出,在一些实施例中,线程执行逻辑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中的一个或多个执行单元上实例化所请求的线程的逻辑。例如,几何流水线可将顶点着色器、曲面细分着色器或几何着色器分派到线程执行逻辑以用于处理。在一些实施例中,线程分派器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)尺寸的数据元素)。然而,不同的向量宽度和寄存器尺寸是可能的。
在一个实施例中,可以将一个或多个执行单元组合到融合执行单元609A-609N中,该融合执行单元609A-609N具有对于融合EU而言共同的线程控制逻辑(607A-607N)。可以将多个EU融合到EU组中。融合的EU组中的每个EU可以被配置成执行单独的SIMD硬件线程。融合的EU组中的EU的数量可以根据实施例而有所不同。另外,可以逐EU地执行各种SIMD宽度,包括但不限于SIMD8、SIMD16和SIMD32。每个融合图形执行单元609A-609N包括至少两个执行单元。例如,融合执行单元609A包括第一EU 608A、第二EU 608B、以及对于第一EU 608A和第二EU 608B而言共同的线程控制逻辑607A。线程控制逻辑607A控制在融合图形执行单元609A上执行的线程,从而允许融合执行单元609A-609N内的每个EU使用共同的指令指针寄存器来执行。
一个或多个内部指令高速缓存(例如,606)被包括在线程执行逻辑600中以对用于执行单元的线程指令进行高速缓存。在一些实施例中,一个或多个数据高速缓存(例如,612)被包括,以在线程执行期间对线程数据进行高速缓存。在一些实施例中,采样器610被包括以为3D操作提供纹理采样并且为媒体操作提供媒体采样。在一些实施例中,采样器610包括专业的纹理或媒体采样功能,以便在向执行单元提供采样数据之前在采样过程期间处理纹理数据或媒体数据。
在执行期间,图形流水线和媒体流水线经由线程生成和分派逻辑将线程发起请求发送到线程执行逻辑600。一旦一组几何对象已经被处理并被栅格化为像素数据,着色器处理器602内的像素处理器逻辑(例如,像素着色器逻辑、片段着色器逻辑等)就被调用以进一步计算输出信息,并且使得结果被写入到输出表面(例如,颜色缓冲器、深度缓冲器、模板印刷(stencil)缓冲器等)。在一些实施例中,像素着色器或片段着色器计算各顶点属性的值,各顶点属性的值将跨经栅格化的对象而被内插。在一些实施例中,着色器处理器602内的像素处理器逻辑随后执行应用编程接口(API)供应的像素着色器程序或片段着色器程序。为了执行着色器程序,着色器处理器602经由线程分派器604将线程分派至执行单元(例如,608A)。在一些实施例中,着色器处理器602使用采样器610中的纹理采样逻辑来访问存储在存储器中的纹理图中的纹理数据。对纹理数据和输入几何数据的算术操作计算针对每个几何片段的像素颜色数据,或丢弃一个或多个像素而不进行进一步处理。
在一些实施例中,数据端口614提供存储器访问机制,供线程执行逻辑600将经处理的数据输出至存储器以便在图形处理器输出流水线上进一步处理。在一些实施例中,数据端口614包括或耦合至一个或多个高速缓存存储器(例如,数据高速缓存612),以便对数据进行高速缓存供经由数据端口进行存储器访问。
如图14B所示,图形执行单元608可包括指令取出单元637、通用寄存器堆阵列(GRF)624、架构寄存器堆阵列(ARF)626、线程仲裁器622、发送单元630、分支单元632、SIMD浮点单元(FPU)的集合634、以及在一个实施例中的专用整数SIMD ALU的集合635。GRF 624和ARF 626包括与可在图形执行单元608中活跃的每个同步硬件线程相关联的通用寄存器堆和架构寄存器堆的集合。在一个实施例中,每线程架构状态被维持在ARF 626中,而在线程执行期间使用的数据被存储在GRF 624中。每个线程的执行状态,包括用于每个线程的指令指针,可以被保持在ARF 626中的线程专用寄存器中。
在一个实施例中,图形执行单元608具有作为同步多线程(SMT)与细粒度交织多线程(IMT)的组合的架构。该架构具有模块化配置,该模块化配置可以基于同步线程的目标数量和每个执行单元的寄存器的数量而在设计时进行微调,其中跨用于执行多个同步线程的逻辑来划分执行单元资源。
在一个实施例中,图形执行单元608可协同发布多条指令,这些指令可以各自是不同的指令。图形执行单元线程608的线程仲裁器622可以将指令分派给以下各项中的一项以供执行:发送单元630、分支单元632或(多个)SIMD FPU 634。每个执行线程可以访问GRF624内的128个通用寄存器,其中,每个寄存器可以存储可作为具有32位数据元素的SIMD 8元素向量访问的32个字节。在一个实施例中,每个执行单元线程具有对GRF 624内的4个千字节的访问权,但是实施例并不限于此,并且在其他实施例中可以提供更多或更少的寄存器资源。在一个实施例中,多达七个线程同时执行,但是每个执行单元的线程数量也可根据实施例而有所不同。在其中七个线程可以访问4个千字节的实施例中,GRF 624可以存储总共28个千字节。灵活的寻址模式可以准许对多个寄存器一起进行寻址,从而建立实际上更宽的寄存器或者表示跨步式矩形块数据结构。
在一个实施例中,经由通过消息传递发送单元630执行的“发送”指令来分派存储器操作、采样器操作以及其他较长等待时间的系统通信。在一个实施例中,分支指令被分派给专用分支单元632以促进SIMD发散和最终收敛。
在一个实施例中,图形执行单元608包括用于执行浮点操作的一个或多个SIMD浮点单元(FPU)634。在一个实施例中,(多个)FPU 634还支持整数计算。在一个实施例中,(多个)FPU 634可以SIMD执行多达数量M个32位浮点(或整数)操作,或者SIMD执行多达2M个16位整数或16位浮点操作。在一个实施例中,(多个)FPU中的至少一个提供支持高吞吐量超越数学函数和双精度64位浮点的扩展数学能力。在一些实施例中,8位整数SIMD ALU的集合635也存在,并且可专门优化成执行与机器学习计算相关联的操作。
在一个实施例中,可以在图形子核分组(例如,子切片)中对图形执行单元608的多个实例的阵列进行实例化。为了可缩放性,产品架构师可以选择每子核分组的执行单元的确切数量。在一个实施例中,执行单元608可以跨多个执行通道来执行指令。在进一步的实施例中,在不同通道上执行在图形执行单元608上执行的每个线程。
图15是示出根据一些实施例的图形处理器指令格式700的框图。在一个或多个实施例中,图形处理器执行单元支持具有多种格式的指令的指令集。实线框图示通常被包括在执行单元指令中的组成部分,而虚线包括任选的或仅被包括在指令的子集中的组成部分。在一些实施例中,所描述和示出的指令格式700是宏指令,因为它们是供应至执行单元的指令,这与产生自一旦指令被处理就进行的指令解码的微指令相反。在一些实施例中,图形处理器指令格式700可以适用于系统10(图1)、系统40(图4)、车辆计算机56(图5)、间接对象检测器和追踪器59(图5)、和/或间接对象检测器60、70和80(图6-8)中的任一个中,并具有合适的指令以用于实现那些实施例的一个或多个方面。
在一些实施例中,图形处理器执行单元原生地支持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)形式的逐分量的算术指令(例如,加、乘(mul))。并行数学组748跨数据通道并行地执行算术操作。向量数学组750包括0101xxxxb(例如,0x50)形式的算术指令(例如,dp4)。向量数学组对向量操作数执行算术,诸如点积计算。
图形流水线
图16是图形处理器800的另一实施例的框图。图16的具有与本文中的任何其他附图的元件相同的附图标记(或名称)的那些元件能以类似于本文中其他地方描述的任何方式操作或起作用,但不限于此。在一些实施例中,图形处理器800可以适用于系统10(图1)、系统40(图4)、车辆计算机56(图5)、间接对象检测器和追踪器59(图5)、和/或间接对象检测器60、70和80(图6-8)中的任一个中,并具有合适的逻辑以实现那些实施例的一个或多个方面。
在一些实施例中,图形处理器800包括几何流水线820、媒体流水线830、显示引擎840、线程执行逻辑850、以及渲染输出流水线870。在一些实施例中,图形处理器800是包括一个或多个通用处理核的多核处理系统内的图形处理器。图形处理器通过至一个或多个控制寄存器(未示出)的寄存器写入、或者经由通过环形互连802发布至图形处理器800的命令被控制。在一些实施例中,环形互连802将图形处理器800耦合至其他处理组件,诸如其他图形处理器或通用处理器。来自环形互连802的命令由命令流转化器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。在一些实施例中,几何着色器对整个几何对象而不是对如在图形流水线的先前的级中那样对顶点或顶点补片进行操作。如果禁用曲面细分,则几何着色器819从顶点着色器807接收输入。在一些实施例中,几何着色器819是可由几何着色器程序编程的以便在曲面细分单元被禁用的情况下执行几何曲面细分。
在栅格化之前,裁剪器829处理顶点数据。裁剪器829可以是固定功能裁剪器或具有裁剪和几何着色器功能的可编程裁剪器。在一些实施例中,渲染输出流水线870中的栅格化器和深度测试组件873分派像素着色器以将几何对象转换为逐像素表示。在一些实施例中,像素着色器逻辑被包括在线程执行逻辑850中。在一些实施例中,应用可绕过栅格化器和深度测试组件873,并且经由流出单元823访问未栅格化的顶点数据。
图形处理器800具有互连总线、互连结构、或允许数据和消息在处理器的主要组件之中传递的某个其他互连机制。在一些实施例中,执行单元852A-852B和相关联的逻辑单元(例如,L1高速缓存851、采样器854、纹理高速缓存858等)经由数据端口856进行互连,以便执行存储器访问并且与处理器的渲染输出流水线组件进行通信。在一些实施例中,采样器854、高速缓存851、858以及执行单元852A-852B各自具有单独的存储器访问路径。在一个实施例中,纹理高速缓存858也可被配置为采样器高速缓存。
在一些实施例中,渲染输出流水线870包含栅格化器和深度测试组件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调用转换成可由图形处理器处理的命令。在一些实施例中,为全部来自Khronos Group的开放图形库(OpenGL)、开放计算语言(OpenCL)和/或Vulkan图形和计算API提供支持。在一些实施例中,也可以为来自微软公司的Direct3D库提供支持。在一些实施例中,可以支持这些库的组合。还可以为开源计算机视觉库(OpenCV)提供支持。如果可进行从未来API的流水线到图形处理器的流水线的映射,则具有兼容3D流水线的未来API也将受到支持。
图形流水线编程
图17A是示出根据一些实施例的图形处理器命令格式900的框图。图17B是示出根据实施例的图形处理器命令序列910的框图。图17A中的实线框示出一般被包括在图形命令中的组成部分,而虚线包括任选的或仅被包括在图形命令的子集中的组成部分。图17A的示例性图形处理器命令格式900包括用于标识命令的客户端902、命令操作代码(操作码)904和数据906的数据字段。子操作码905和命令尺寸908也被包括在一些命令中。在一些实施例中,命令格式900和/或命令序列910可以适用于系统10(图1)、系统40(图4)、车辆计算机56(图5)、间接对象检测器和追踪器59(图5)、和/或间接对象检测器60、70和80(图6-8)中的任一个中,并具有合适的命令以用于实现那些实施例的一个或多个方面。
在一些实施例中,客户端902指定图形设备的处理命令数据的客户端单元。在一些实施例中,图形处理器命令解析器检查每个命令的客户端字段,以调整对命令的进一步处理并将命令数据路由至适当的客户端单元。在一些实施例中,图形处理器客户端单元包括存储器接口单元、渲染单元、2D单元、3D单元、和媒体单元。每个客户端单元具有处理命令的对应的处理流水线。一旦由客户端单元接收到命令,客户端单元就读取操作码904以及子操作码905(如果存在)以确定要执行的操作。客户端单元使用数据字段906内的信息来执行命令。针对一些命令,预期显式的命令尺寸908指定命令的尺寸。在一些实施例中,命令解析器基于命令操作码自动地确定命令中的至少一些命令的尺寸。在一些实施例中,经由双字的倍数来对齐命令。
图17B中的流程图示出示例性图形处理器命令序列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操作。
图形软件架构
图18示出根据一些实施例的用于数据处理系统1000的示例性图形软件架构。在一些实施例中,软件架构包括3D图形应用1010、操作系统1020、以及至少一个处理器1030。在一些实施例中,处理器1030包括图形处理器1032以及一个或多个通用处理器核1034。图形应用1010和操作系统1020各自在数据处理系统的系统存储器1050中执行。在一些实施例中,系统1000可以代替或适用于系统10(图1)、系统40(图4)、车辆计算机56(图5)、间接对象检测器和追踪器59(图5)、和/或间接对象检测器60、70和80(图6-8)中的任一个,并具有合适的逻辑以用于实现那些实施例的一个或多个方面。
在一些实施例中,3D图形应用1010包含一个或多个着色器程序,这一个或多个着色器程序包括着色器指令1012。着色器语言指令可以采用高级着色器语言,诸如,高级着色器语言(HLSL)、或OpenGL着色器语言(GLSL)。应用还包括采用适于由通用处理器核1034执行的机器语言的可执行指令1014。应用还包括由顶点数据限定的图形对象1016。
在一些实施例中,操作系统1020是来自微软公司的
Figure BDA0002850860850000381
Figure BDA0002850860850000382
操作系统、专属的类UNIX操作系统、或使用Linux内核的变体的开源的类UNIX操作系统。操作系统1020可支持图形API 1022,诸如Direct3D API、OpenGL API或Vulkan API。当Direct3DAPI正在使用时,操作系统1020使用前端着色器编译器1024以将采用HLSL的任何着色器指令1012编译成较低级的着色器语言。编译可以是即时(JIT)编译,或者应用可执行着色器预编译。在一些实施例中,在3D图形应用1010的编译期间,将高级着色器编译成低级着色器。在一些实施例中,着色器指令1012以中间形式提供,诸如由Vulkan API使用的标准便携式中间表示(SPIR)的某个版本。
在一些实施例中,用户模式图形驱动器1026包含后端着色器编译器1027,该后端着色器编译器1027用于将着色器指令1012转换成硬件专用表示。当OpenGL API在使用中时,将采用GLSL高级语言的着色器指令1012传递至用户模式图形驱动器1026以用于编译。在一些实施例中,用户模式图形驱动器1026使用操作系统内核模式功能1028来与内核模式图形驱动器1029进行通信。在一些实施例中,内核模式图形驱动器1029与图形处理器1032通信以分派命令和指令。
IP核实施方式
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的代表性代码实现,该机器可读介质表示和/或限定集成电路(诸如,处理器)内的逻辑。例如,机器可读介质可以包括表示处理器内的各种逻辑的指令。当由机器读取时,指令可以使机器制造用于执行本文所述的技术的逻辑。这类表示(被称为“IP核”)是集成电路的逻辑的可重复使用单元,这些可重复使用单元可以作为描述集成电路的结构的硬件模型而被存储在有形的、机器可读介质上。可以将硬件模型供应至在制造集成电路的制造机器上加载硬件模型的各消费者或制造设施。可以制造集成电路,使得电路执行与本文中描述的实施例中的任一实施例相关联地描述的操作。
图19A是示出根据实施例的IP核开发系统1100的框图,该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核设计以用于递送至第三方制造设施1165。替代地,可以通过有线连接1150或无线连接1160(例如,经由因特网)来传输IP核设计。制造设施1165随后可以制造至少部分地基于IP核设计的集成电路。所制造的集成电路可被配置用于执行根据本文中描述的至少一个实施例的操作。
图19B示出根据本文中描述的一些实施例的集成电路封装组件1170的截面侧视图。集成电路封装组件1170示出如本文中所描述的一个或多个处理器或加速器设备的实现方式。封装组件1170包括连接至衬底1180的多个硬件逻辑单元1172、1174。逻辑1172、1174可以至少部分地实现在可配置逻辑或固定功能逻辑硬件中,并且可包括本文中描述的(多个)处理器核、(多个)图形处理器或其他加速器设备中的任何处理器核、图形处理器或其他加速器设备的一个或多个部分。每个逻辑单元1172、1174可以实现在半导体管芯内,并且经由互连结构1173与衬底1180耦合。互连结构1173可以被配置成在逻辑1172、1174与衬底1180之间路由电信号,并且可以包括互连,该互连诸如但不限于凸块或支柱。在一些实施例中,互连结构1173可以被配置成路由电信号,诸如例如,与逻辑1172、1174的操作相关联的输入/输出(I/O)信号和/或功率或接地信号。在一些实施例中,衬底1180是基于环氧树脂的层压衬底。在其他实施例中,封装衬底1180可以包括其他合适类型的衬底。封装组件1170可以经由封装互连1183连接至其他电气设备。封装互连1183可以耦合至衬底1180的表面以将电信号路由到其他电气设备,诸如主板、其他芯片组或多芯片模块。
在一些实施例中,逻辑单元1172、1174与桥接器1182电耦合,该桥接器1182被配置成在逻辑1172与逻辑1174之间路由电信号。桥接器1182可以是为电信号提供路由的密集互连结构。桥接器1182可以包括由玻璃或合适的半导体材料构成的桥接器衬底。电路由特征可形成在桥接器衬底上以提供逻辑1172与逻辑1174之间的芯片到芯片连接。
尽管示出了两个逻辑单元1172、1174和桥接器1182,但是本文中所描述的实施例可以包括在一个或多个管芯上的更多或更少的逻辑单元。这一个或多个管芯可以由零个或更多个桥接器连接,因为当逻辑被包括在单个管芯上时,可以排除桥接器1182。替代地,多个管芯或逻辑单元可以由一个或多个桥接器连接。另外,在其他可能的配置(包括三维配置)中,多个逻辑单元、管芯和桥接器可被连接在一起。在一些实施例中,逻辑1172和/或逻辑1174可以适用于系统10(图1)、系统40(图4)、车辆计算机56(图5)、间接对象检测器和追踪器59(图5)、和/或间接对象检测器60、70和80(图6-8)中的任一个中,并具有合适的电路以用于实现那些实施例的一个或多个方面。
示例性芯片上系统集成电路
图20-图22B示出根据本文中所述的各实施例的可以使用一个或多个IP核制造的示例性集成电路和相关联的图形处理器。除了所示出的内容之外,还可以包括其他逻辑和电路,包括附加的图形处理器/核、外围接口控制器或通用处理器核。
图20是示出根据实施例的可使用一个或多个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。在一些实施例中,集成电路1200可以适用于系统10(图1)、系统40(图4)、车辆计算机56(图5)、间接对象检测器和追踪器59(图5)、和/或间接对象检测器60、70和80(图6-8)中的任一个中,并具有合适的电路以用于实现那些实施例的一个或多个方面。
图21A-图21B是示出根据本文中所描述的实施例的用于在SoC内使用的示例性图形处理器的框图。图21A示出根据实施例的可以使用一个或多个IP核制造的芯片上系统集成电路的示例性图形处理器1310。图21B示出根据实施例的可以使用一个或多个IP核制造的芯片上系统集成电路的附加示例性图形处理器1340。图21A的图形处理器1310是低功率图形处理器核的示例。图21B的图形处理器1340是较高性能图形处理器核的示例。图形处理器1310、1340中的每一个都可以是图20的图形处理器1210的变体。在一些实施例中,图形处理器1310和/或图形处理器1340可以适用于系统10(图1)、系统40(图4)、车辆计算机56(图5)、间接对象检测器和追踪器59(图5)、和/或间接对象检测器60、70和80(图6-8)中的任一个中,并具有合适的逻辑以用于实现那些实施例的一个或多个方面。
如图21A中所示,图形处理器1310包括顶点处理器1305以及一个或多个片段处理器1315A-1315N(例如,1315A、1315B、1315C、1315D,一直到1315N-1和1315N)。图形处理器1310可以经由单独的逻辑执行不同的着色器程序,使得顶点处理器1305被优化以执行用于顶点着色器程序的操作,而一个或多个片段处理器1315A-1315N执行用于片段或像素着色器程序的片段(例如,像素)着色操作。顶点处理器1305执行3D图形流水线的顶点处理级,并生成基元数据和顶点数据。(多个)片段处理器1315A-1315N使用由顶点处理器1305生成的基元数据和顶点数据来产生被显示在显示设备上的帧缓冲器。在一个实施例中,(多个)片段处理器1315A-1315N被优化以执行如在OpenGL API中提供的片段着色器程序,这些片段着色器程序可以用于执行与如在Direct 3D API中提供的像素着色器程序类似的操作。
图形处理器1310附加地包括一个或多个存储器管理单元(MMU)1320A-1320B、(多个)高速缓存1325A-1325B以及(多个)电路互连1330A-1330B。这一个或多个MMU 1320A-1320B为图形处理器1310(包括为顶点处理器1305和/或(多个)片段处理器1315A-1315N)提供虚拟到物理地址映射,除了存储在一个或多个高速缓存1325A-1325B中的顶点数据或图像/纹理数据之外,该虚拟到物理地址映射还可以引用存储在存储器中的顶点数据或图像/纹理数据。在一个实施例中,一个或多个MMU 1320A-1320B可以与系统内的其他MMU同步,使得每个处理器1205-1220可以参与共享或统一的虚拟存储器系统,系统内的其他MMU包括与图20的一个或多个应用处理器1205、图像处理器1215和/或视频处理器1220相关联的一个或多个MMU。根据实施例,一个或多个电路互连1330A-1330B使得图形处理器1310能够经由SoC的内部总线或经由直接连接来与SoC内的其他IP核对接。
如图21B中所示,图形处理器1340包括图21A的图形处理器1310的一个或多个MMU1320A-1320B、高速缓存1325A-1325B、以及电路互连1330A-1330B。图形处理器1340包括一个或多个着色器核1355A-1355N(例如,1355A、1355B、1355C、1355D、1355E、1355F,一直到1355N-1和1355N),这一个或多个着色器核提供统一着色器核架构,在该统一着色器核架构中,单个核或类型或核可以执行所有类型的可编程着色器代码,包括用于实现顶点着色器、片段着色器和/或计算着色器的着色器程序代码。存在的着色器核的确切数量可以因实施例和实现方式而异。另外,图形处理器1340包括核间任务管理器1345,该核间任务管理器1345充当用于将执行线程分派给一个或多个着色器核1355A-1355N的线程分派器和用于加速对基于片的渲染的分片操作的分片单元1358,在基于片的渲染中,针对场景的渲染操作在图像空间中被细分,例如以利用场景内的局部空间一致性或优化内部高速缓存的使用。
图22A-图22B示出了根据本文中所描述的实施例的附加示例性图形处理器逻辑。图22A示出了图形核1400,该图形核1400可被包括在图20的图形处理器1210内,并且可以是如图21B中的统一着色器核1355A-1355N。图22B示出了附加的通用图形处理单元1430,其是适于部署在多芯片模块上的高度并行的通用图形处理单元。
如图22A中所示,图形核1400包括对于图形核1400内的执行资源而言共同的共享指令高速缓存1402、纹理单元1418和高速缓存存储器/共享存储器1420。图形核1400可包括用于每个核的多个切片1401A-1401N或分区,并且图形处理器可包括图形核1400的多个实例。切片1401A-1401N可包括支持逻辑,该支持逻辑包括本地指令高速缓存1404A-1404N、线程调度器1406A-1406N、线程分派器1408A-1408N、以及寄存器的集合1410A-1410N。为了执行逻辑操作,切片1401A-1401N可包括一组附加的功能单元(AFU 1412A-1412N)、浮点单元(FPU 1414A-1414N)、整数算术逻辑单元(ALU 1416A-1416N)、地址计算单元(ACU 1413A-1413N)、双精度浮点单元(DPFPU 1415A-1415N)、以及矩阵处理单元(MPU 1417A-1417N)。
这些计算单元中的一些计算单元以特定精度进行操作。例如,FPU 1414A-1414N可执行单精度(32位)和半精度(16位)浮点操作,而DPFPU 1415A-1415N执行双精度(64位)浮点操作。ALU 1416A-1416N能以8位精度、16位精度和32位精度执行可变精度整数操作,并且可以被配置用于混合精度操作。MPU 1417A-1417N还可以被配置用于混合精度矩阵操作,包括半精度浮点操作和8位整数操作。MPU 1417A-1417N可执行各种矩阵操作以加速机器学习应用框架,包括启用对加速的通用矩阵-矩阵乘法(GEMM)的支持。AFU 1412A-1412N可执行不被浮点单元或整数单元支持的附加逻辑操作,包括三角函数操作(例如,正弦、余弦等)。
如图22B中所示,通用处理单元(GPGPU)1430可以被配置成使得能够由图形处理单元的阵列执行高度并行的计算操作。另外,GPGPU 1430可以直接链接到GPGPU的其他实例以创建多GPU集群,从而改善尤其是深度神经网络的训练速度。GPGPU 1430包括用于启用与主机处理器的连接的主机接口1432。在一个实施例中,主机接口1432是PCI Express接口。然而,主机接口还可以是供应方专用的通信接口或通信结构。GPGPU 1430从主机处理器接收命令,并且使用全局调度器1434将与那些命令相关联的执行线程分发给计算集群的集合1436A-1436H。计算集群1436A-1436H共享高速缓存存储器1438。高速缓存存储器1438可以充当用于计算集群1436A-1436H内的高速缓存存储器的较高级别的高速缓存。
GPGPU 1430包括经由存储器控制器的集合1444A-1444B与计算集群1436A-1436H耦合的存储器1434A-1434B。在各实施例中,存储器1434A-1434B可包括各种类型的存储器设备,包括动态随机存取存储器(DRAM)或图形随机存取存储器,诸如,同步图形随机存取存储器(SGRAM),包括图形双倍数据速率(GDDR)存储器。在一些实施例中,GPGPU 1430可以适用于系统10(图1)、系统40(图4)、车辆计算机56(图5)、间接对象检测器和追踪器59(图5)、和/或间接对象检测器60、70和80(图6-8)中的任一个中,并具有合适的逻辑以用于实现那些实施例的一个或多个方面。
在一个实施例中,计算集群1436A-1436H各自包括图形多核的集合,图形核诸如图22A的图形核1400,该图形核可包括多种类型的整数逻辑单元和浮点逻辑单元,这些多种类型的整数逻辑单元和浮点逻辑单元可以在一定精度范围内执行包括适于机器学习计算的计算操作。例如,并且在一个实施例中,计算集群1436A-1436H中的每一个计算集群中的浮点单元的至少子集可以被配置成执行16位或32位浮点操作,而浮点单元的不同子集可以被配置成执行64位浮点操作。
GPGPU 1430的多个实例可以被配置成作为计算集群进行操作。由计算集群用于同步和数据交换的通信机制跨实施例而有所不同。在一个实施例中,GPGPU 1430的多个实例通过主机接口1432进行通信。在一个实施例中,GPGPU 1430包括I/O中枢1439,该I/O中枢1439将GPGPU 1430与GPU链路1440耦合,该GPU链路启用至GPGPU的其他实例的直接连接。在一个实施例中,GPU链路1440耦合至专用GPU-GPU桥接器,该GPU-GPU桥接器实现GPGPU 1430的多个实例之间的通信和同步。在一个实施例中,GPU链路1440与高速互连耦合,以将数据传输和接收至其他GPGPU或并行处理器。在一个实施例中,GPGPU 1430的多个实例位于单独的数据处理系统中,并且经由网络设备进行通信,该网络设备可经由主机接口1432来访问。在一个实施例中,附加于或替代于主机接口1432,GPU链路1440可以被配置成启用至主机处理器的连接。
尽管GPGPU 1430的所示出配置可以被配置成训练神经网络,但是一个实施例提供GPGPU 1430的替代配置,该替代配置可以被配置成用于在高性能或低功率推断平台内的部署。在推断配置中,相对于训练配置,GPGPU 1430包括计算集群1436A-1436H中的更少的计算集群。另外,与存储器1434A-1434B相关联的存储器技术在推断配置与训练配置之间可以不同,其中较高的带宽存储器技术致力于训练配置。在一个实施例中,GPGPU 1430的推断配置可以支持推断专用指令。例如,推断配置可提供对一个或多个8位整数点积指令的支持,这一个或多个8位整数点积指令通常在用于经部署的神经网络的推断操作期间使用。
有利地,以上系统、处理器、图形处理器、设备和/或方法中的任一者可与包括例如在下文附加说明和示例中描述的那些实施例的本文中所描述的各实施例(例如,或其部分)中的任一者集成或利用其进行配置。
附加说明和示例:
示例1可包括一种电子处理系统,其包括:处理器;存储器,通信地耦合至处理器;以及逻辑13,通信地耦合至处理器,用于分析电子图像以确定包括阴影信息和反射信息中的一个或多个的间接信息,并将该间接信息提供给车辆引导系统。
示例2可以包括示例1的系统,其中逻辑进一步用于至少部分地基于所述间接信息来做出车辆引导决策。
示例3可以包括示例1至示例2中的任一个的系统,其中,逻辑进一步用于基于所述间接信息来检测对象。
示例4可以包括示例3的系统,其中,逻辑进一步用于基于所述间接信息来追踪对象。
示例5可以包括示例3的系统,其中,逻辑进一步用于将检测到的对象添加到场景,并且基于该场景做出自主车辆引导决策。
示例6可以包括示例1至示例5中的任一个的系统,其中处理器包括图形处理器。
示例7可以包括一种半导体封装设备,该半导体封装设备包括一个或多个衬底以及耦合到该一个或多个衬底的逻辑,其中该逻辑至少部分地在可配置逻辑和固定功能硬件逻辑中的一个或多个中实现,该逻辑耦合到一个或多个衬底,以用于对电子图像进行分析,以确定包括阴影信息和反射信息中的一个或多个的间接信息,并将该间接信息提供给车辆引导系统。
示例8可以包括示例7的设备,其中逻辑进一步用于至少部分地基于所述间接信息来做出车辆引导决策。
示例9可以包括示例7至示例8中的任一个的设备,其中,逻辑进一步用于基于所述间接信息来检测对象。
示例10可以包括示例9的设备,其中,逻辑进一步用于基于所述间接信息来追踪对象。
示例11可以包括示例9的设备,其中,逻辑进一步用于将检测到的对象添加到场景,并且基于该场景做出自主车辆引导决策。
示例12可以包括示例7至示例11中任一个的设备,其中,耦合到一个或多个衬底的逻辑包括位于一个或多个衬底内的晶体管沟道区。
示例13可以包括一种引导车辆的方法,该方法包括:分析电子图像以确定包括阴影信息和反射信息中的一个或多个的间接信息,并将该间接信息提供给车辆引导系统。
示例14可以包括示例13的方法,进一步包括:至少部分地基于所述间接信息来做出车辆引导决策。
示例15可以包括示例13至示例14中的任一个的方法,进一步包括:基于所述间接信息来检测对象。
示例16可以包括示例15的方法,进一步包括:基于所述间接信息来追踪对象。
示例17可以包括示例15的方法,进一步包括:将检测到的对象添加到场景,并且基于该场景做出自主车辆引导决策。
示例18可以包括示例13至示例17中的任一个的方法,进一步包括:利用图形处理器来分析电子图像。
示例19可以包括至少一个计算机可读存储介质,其包括指令集,当由计算设备执行该指令集时,该指令集使计算设备:分析电子图像以确定包括阴影信息和反射信息中的一个或多个的间接信息,并将该间接信息提供给车辆引导系统。
示例20可包括示例19的至少一个计算机可读介质,包括进一步的指令集,所述进一步的指令集在由计算设备执行时,使计算设备:至少部分的基于所述间接信息来做出车辆引导决策。
示例21可包括示例19至示例20中的任一个的至少一个计算机可读介质,包括进一步的指令集,所述进一步的指令集在由计算设备执行时,使计算设备:至少部分的基于所述间接信息来检测对象。
示例22可包括示例21的至少一个计算机可读介质,包括进一步的指令集,所述进一步的指令集在由计算设备执行时,使计算设备:至少部分的基于所述间接信息来追踪对象。
示例23可包括示例21的至少一个计算机可读介质,包括进一步的指令集,所述进一步的指令集在由计算设备执行时,使计算设备:将检测到的对象添加到场景,并且基于该场景做出自主车辆引导决策。
示例24可包括示例19至示例23中的任一个的至少一个计算机可读介质,包括进一步的指令集,所述进一步的指令集在由计算设备执行时,使计算设备:利用图形处理器来分析电子图像。
示例25可以包括一种车辆引导设备,其包括:用于分析电子图像以确定包括阴影信息和反射信息中的一个或多个的间接信息的装置,以及用于将该间接信息提供给车辆引导系统的装置。
示例26可以包括示例25的设备,进一步包括:用于至少部分地基于所述间接信息来做出车辆引导决策的装置。
示例27可以包括示例25至示例26中的任一个的设备,进一步包括:用于基于所述间接信息来检测对象的装置。
示例28可以包括示例27的设备,进一步包括:用于基于所述间接信息来追踪对象的装置。
示例29可以包括示例27的设备,进一步包括:用于将检测到的对象添加到场景的装置,以及用于基于该场景做出自主车辆引导决策的装置。
示例30可以包括示例25至示例29中的任一个的设备,进一步包括:用于利用图形处理器来分析电子图像的装置。
实施例适用于与所有类型的半导体集成电路(“IC”)芯片一起使用。这些IC芯片的示例包括但不限于处理器、控制器、芯片组组件、可编程逻辑阵列(PLA)、存储器芯片、网络芯片、芯片上系统(SoC)、SSD/NAND控制器ASIC等等。另外,在一些附图中,信号导线用线表示。一些线可以是不同的以指示更具构成性的信号路径,可具有数字标号以指示构成性信号路径的数目,和/或可在一端或多端具有箭头以指示主要信息流向。然而,这不应以限制性方式来解释。相反,此类增加的细节可与一个或多个示例性实施例结合使用以促进更容易地理解电路。任何所表示的信号线,不管是否具有附加信息,实际上都可包括一个或多个信号,这一个或多个信号可在多个方向上行进,并且可用任何适合类型的信号方案来实现,例如利用差分对来实现的数字或模拟线路、光纤线路、和/或单端线路。
示例尺寸/模型/值/范围可能已经被给出,但是实施例不限于此。随着制造技术(例如,光刻法)随时间变得成熟,预料到能制造出更小尺寸的设备。另外,为了说明和讨论的简单并且为了不使实施例的某些方面模糊,到IC芯片和其他组件的公知的功率/接地连接可在附图内示出也可不示出。此外,各种配置可以方框图形式示出以避免使各实施例变得晦涩,并鉴于相对于这些方框图配置的实现的具体细节很大程度地依赖于所述实施例实现的平台这一事实,即这些具体细节应当落在本领域内技术人员的眼界内。在阐述具体细节(例如电路)以描述示例性实施例的情形下,显然本领域内技术人员能不经过这些具体细节或对这些具体细节作出变化地实现各实施例。描述因此被视为是说明性的而不是限制性的。
术语“耦合的”在本文中可被用于表示所讨论的组件之间的任何类型的直接或间接关系,且可应用于电气的、机械的、流体的、光学的、电磁的、机电的或其他连接。另外,术语“第一”、“第二”等在本文中可仅用于便于讨论,并且不带有特定时间的或按时间顺序的意义,除非另有陈述。
如在本申请和权利要求书中所使用的,由术语“中的一个或多个”联接的项列表可意指所列项的任何组合。例如,短语“A、B和C中的一个或多个”以及短语“A、B或C中的一个或多个”两者可意指A;B;C;A和B;A和C;B和C;或A、B和C。
本领域技术人员从前面的描述将领会,实施例的广泛技术能以各种形式来实现。因此,尽管已结合其特定示例描述了实施例,但实施例的真实范围不应当限于此,因为在研究附图、说明书和所附权利要求书之后,其他修改对于本领域技术人员将变得显而易见。

Claims (24)

1.一种电子处理系统,包括:
处理器;
存储器,通信地耦合至所述处理器;以及
逻辑,所述逻辑通信地耦合至所述处理器,用于:
分析电子图像以确定包括阴影信息和反射信息中的一个或多个的间接信息,以及
将所述间接信息提供给车辆引导系统。
2.如权利要求1所述的系统,其特征在于,所述逻辑进一步用于:
至少部分基于所述间接信息来做出车辆引导决策。
3.如权利要求1至2中任一项所述的系统,其特征在于,所述逻辑进一步用于:
基于所述间接信息来检测对象。
4.如权利要求3所述的系统,其特征在于,所述逻辑进一步用于:
基于所述间接信息来追踪对象。
5.如权利要求3所述的系统,其特征在于,所述逻辑进一步用于:
将检测到的对象添加到场景;以及
基于所述场景做出自主车辆引导决策。
6.如权利要求1至2中任一项所述的系统,其特征在于,所述处理器包括图形处理器。
7.一种半导体封装设备,包括:
一个或多个衬底;以及
逻辑,耦合到所述一个或多个衬底,其中所述逻辑至少部分地在可配置逻辑和固定功能硬件逻辑中的一个或多个中实现,所述逻辑耦合到所述一个或多个衬底,以用于:
分析电子图像以确定包括阴影信息和反射信息中的一个或多个的间接信息,以及
将所述间接信息提供给车辆引导系统。
8.如权利要求7所述的设备,其特征在于,所述逻辑进一步用于:
至少部分基于所述间接信息来做出车辆引导决策。
9.如权利要求7至8中任一项所述的设备,其特征在于,所述逻辑进一步用于:
基于所述间接信息来检测对象。
10.如权利要求9所述的设备,其特征在于,所述逻辑进一步用于:
基于所述间接信息来追踪对象。
11.如权利要求9所述的设备,其特征在于,所述逻辑进一步用于:
将检测到的对象添加到场景;以及
基于所述场景做出自主车辆引导决策。
12.如权利要求7至8中任一项所述的设备,其中,耦合至所述一个或多个衬底的所述逻辑包括定位在所述一个或多个衬底内的晶体管通道区域。
13.一种引导车辆的方法,包括:
分析电子图像以确定包括阴影信息和反射信息中的一个或多个的间接信息,以及
将所述间接信息提供给车辆引导系统。
14.如权利要求13所述的方法,进一步包括:
至少部分基于所述间接信息来做出车辆引导决策。
15.如权利要求13至14中任一项所述的方法,进一步包括:
基于所述间接信息来检测对象。
16.如权利要求15所述的方法,进一步包括:
基于所述间接信息来追踪对象。
17.如权利要求15所述的方法,进一步包括:
将检测到的对象添加到场景;以及
基于所述场景做出自主车辆引导决策。
18.如权利要求13至14中任一项所述的方法,进一步包括:
利用图形处理器来分析所述电子图像。
19.至少一种计算机可读存储介质,包括指令集,所述指令集在由计算设备执行时,使所述计算设备:
分析电子图像以确定包括阴影信息和反射信息中的一个或多个的间接信息;以及
将所述间接信息提供给车辆引导系统。
20.如权利要求19所述的至少一个计算机可读存储介质,包括进一步的指令集,所述进一步的指令集在由所述计算设备执行时,使所述计算设备:
至少部分基于所述间接信息来做出车辆引导决策。
21.如权利要求19至20中任一项所述的至少一个计算机可读存储介质,包括进一步的指令集,所述进一步的指令集在由所述计算设备执行时,使所述计算设备:
基于所述间接信息来检测对象。
22.如权利要求21所述的至少一个计算机可读存储介质,包括进一步的指令集,所述进一步的指令集在由所述计算设备执行时,使所述计算设备:
基于所述间接信息来追踪对象。
23.如权利要求21所述的至少一个计算机可读存储介质,包括进一步的指令集,所述进一步的指令集在由所述计算设备执行时,使所述计算设备:
将检测到的对象添加到场景;以及
基于所述场景做出自主车辆引导决策。
24.如权利要求19至20中任一项所述的至少一个计算机可读存储介质,包括进一步的指令集,所述进一步的指令集在由所述计算设备执行时,使所述计算设备:
利用图形处理器来分析所述电子图像。
CN201880094899.4A 2018-09-05 2018-09-05 利用阴影和反射的用于自主驾驶的对象检测和追踪 Pending CN113168711A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2018/104138 WO2020047768A1 (en) 2018-09-05 2018-09-05 Object detection and tracking for autonomous driving utilizing shadows and reflections

Publications (1)

Publication Number Publication Date
CN113168711A true CN113168711A (zh) 2021-07-23

Family

ID=69722717

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880094899.4A Pending CN113168711A (zh) 2018-09-05 2018-09-05 利用阴影和反射的用于自主驾驶的对象检测和追踪

Country Status (4)

Country Link
US (1) US12033333B2 (zh)
CN (1) CN113168711A (zh)
DE (1) DE112018007659T5 (zh)
WO (1) WO2020047768A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10839560B1 (en) * 2019-02-26 2020-11-17 Facebook Technologies, Llc Mirror reconstruction
US11216014B1 (en) * 2019-08-01 2022-01-04 Amazon Technologies, Inc. Combined semantic configuration spaces
US11945478B2 (en) * 2019-11-20 2024-04-02 Ground Transportation Systems Canada Inc. High-integrity object detection system and method
DE102021200803A1 (de) 2021-01-29 2022-08-04 Siemens Mobility GmbH Auswerteinrichtung für eine technische Einrichtung und Verfahren zum Herstellen einer Auswerteinrichtung
EP4272114A4 (en) * 2021-06-11 2024-02-28 Huawei Technologies Co., Ltd. ENHANCED OBJECT DETECTION ON REFLECTIVE SURFACES

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2498059B1 (en) 2011-03-09 2020-04-29 Harman Becker Automotive Systems GmbH Navigation route calculation using three-dimensional models
JP5892876B2 (ja) 2011-07-28 2016-03-23 クラリオン株式会社 車載用環境認識装置
JP2014202690A (ja) 2013-04-09 2014-10-27 ソニー株式会社 ナビゲーション装置及び記憶媒体
KR20150014243A (ko) * 2013-07-29 2015-02-06 에스케이하이닉스 주식회사 반도체 소자 및 그 제조 방법
JP2015056143A (ja) * 2013-09-13 2015-03-23 ソニー株式会社 情報処理装置および情報処理方法
DE102014214667A1 (de) * 2014-07-25 2016-01-28 Bayerische Motoren Werke Aktiengesellschaft Anzeigen von dynamischen sicherheitsrelevanten dreidimensionalen Inhalten auf einer Anzeigeeinrichtung
US10397751B2 (en) * 2014-11-25 2019-08-27 Fynd Technologies, Inc. Geolocation bracelet, system, and methods
EP3035204B1 (en) * 2014-12-19 2018-08-15 Intel Corporation Storage device and method for performing convolution operations
WO2016126315A1 (en) * 2015-02-06 2016-08-11 Delphi Technologies, Inc. Autonomous guidance system
JP6500887B2 (ja) * 2016-12-26 2019-04-17 トヨタ自動車株式会社 車両用注意喚起装置
US11126195B2 (en) * 2017-06-12 2021-09-21 Faraday & Future Inc. System and method for detecting occluded objects based on image processing
CN108010072A (zh) * 2017-10-31 2018-05-08 努比亚技术有限公司 一种导航方法、终端及计算机可读存储介质

Also Published As

Publication number Publication date
DE112018007659T5 (de) 2021-03-18
WO2020047768A1 (en) 2020-03-12
US20210125343A1 (en) 2021-04-29
US12033333B2 (en) 2024-07-09

Similar Documents

Publication Publication Date Title
US11699404B2 (en) Glare and occluded view compensation for automotive and other applications
US11620729B2 (en) Apparatus and method for correcting image regions following upsampling or frame interpolation
US10475150B2 (en) GPU minimum latency dispatch for short-duration tasks
US12033333B2 (en) Object detection and tracking for autonomous driving utilizing shadows and reflections
EP3629298A1 (en) Apparatus and method for cross-instance front-to-back traversal for ray tracing heavily-instanced scenes
US11120620B2 (en) Gradient approximation filtering mechanism
CN110673946A (zh) 在特权域上高效地将工作负荷从用户模式入队到硬件
CN112334878A (zh) 用于虚拟化显示器的装置和方法
WO2021026797A1 (en) Automatic generation of 3d bounding boxes from multi-camera 2d image data
US10839595B2 (en) Apparatus and method for optimizing a hierarchical depth buffer
CN113450447A (zh) 来自分割掩模的重构数据的依赖于视图的雕刻
CN112561774A (zh) 图形处理单元及其中的方法
CN113039522A (zh) 用于虚拟化的图形处理器的有效本地显示共享的装置和方法
CN113412475A (zh) 事务页错误处置
CN115439589A (zh) 神经帧外推渲染机制
US10839597B2 (en) Apparatus and method for multi-frequency vertex shading
CN113989098A (zh) 用于增强图形渲染真实感的设备和方法
CN113095996A (zh) 动态常量更新机制
EP3618007A1 (en) Apparatus and method for runtime training of a denoising machine learning engine
CN112233219A (zh) 网格着色器输出管理技术
CN114518943A (zh) 多片图形处理单元
US10929134B2 (en) Execution unit accelerator
US12056786B2 (en) Apparatus and method for graphics virtualization with late synchronization
CN114155134A (zh) 一种互连系统栅栏机构
CN111861855A (zh) 动态启用在3d工作负载中的铺块

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