CN111381885B - 非对称多核异构并行处理系统 - Google Patents
非对称多核异构并行处理系统 Download PDFInfo
- Publication number
- CN111381885B CN111381885B CN201911365198.2A CN201911365198A CN111381885B CN 111381885 B CN111381885 B CN 111381885B CN 201911365198 A CN201911365198 A CN 201911365198A CN 111381885 B CN111381885 B CN 111381885B
- Authority
- CN
- China
- Prior art keywords
- processing unit
- image processing
- instructions
- cores
- asymmetric multi
- 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
Links
- 238000012545 processing Methods 0.000 title claims abstract description 95
- 238000009877 rendering Methods 0.000 claims description 21
- 238000013507 mapping Methods 0.000 claims description 15
- 238000005070 sampling Methods 0.000 claims description 13
- 230000004044 response Effects 0.000 claims description 5
- 238000001514 detection method Methods 0.000 claims description 2
- 238000007726 management method Methods 0.000 description 7
- 238000007667 floating Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000013459 approach Methods 0.000 description 4
- 238000013528 artificial neural network Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000000034 method Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 229910003460 diamond Inorganic materials 0.000 description 2
- 239000010432 diamond Substances 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000004549 pulsed laser deposition Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Image Generation (AREA)
Abstract
本公开涉及非对称多核异构并行处理系统。一种非对称多核异构并行处理系统包括第一组图形处理器单元(GPU)和第二组GPU。第一和第二组GPU核心共享指令集体系结构(ISA),使得第一组GPU核心能够执行该ISA的指令的一部分,并且第二组GPU核心能够执行该ISA的整个指令集合。应用能够利用这两组GPU核心,并且还能够确定应当在哪组GPU核心上渲染什么对象。
Description
相关申请的交叉引用
本申请要求2018年12月29日递交的标题为“An Asymmetric Multi-CoreHeterogeneous Parallel Processing System with Content Aware and Display AwareRendering Logic”的美国临时专利申请62/786,379号的权益并且根据35U.S.C.§119(e)要求其优先权,这里通过引用将该申请全部并入。
本申请也是2017年8月28日递交的标题为“Asymmetric Multi-CoreHeterogeneous Parallel Processing System”的美国专利申请15/687,776号的部分延续案,该美国专利申请要求2017年6月20日递交的标题为“An Asymmetric Multi-CoreHeterogeneous Parallel Processing System”的美国临时专利申请62/522,172号的权益并且根据35U.S.C.§119(e)要求其优先权,这里通过引用将这些申请的每一者全部并入。
技术领域
本公开概括而言涉及图形处理器单元,具体而言涉及多核图形处理器单元。
背景技术
本部分中描述的方案是可以执行的方案,但不一定是先前已经设想到或者执行过的方案。因此,除非另有指明,否则不应当假定本部分中描述的任何方案仅因为其包括在本部分中就适合作为现有技术。类似地,对于一个或多个方案识别的问题不应当基于本部分而假定已在任何现有技术中认识到,除非另有指明。
当今的许多设备,例如物联网设备,包括显示单元。对于这些设备中的许多设备而言,最大的功率消耗是由于显示和关联的处理器引起的。优化处理器可允许更小的功率消耗,或者利用相同的功率消耗执行额外的任务。处理器体系结构通常是针对某些任务优化的,而在其他任务中可能是不符合标准的。
一些应用包括使用非对称处理器,例如Diamond的美国专利9,087,161号“Asymmetrical scaling multiple GPU graphics system for implementingcooperative graphics instruction execution”中描述的技术。按照最佳理解,Diamond描述了使用非对称(其渲染能力不同)的多个图形处理器单元(graphic processor unit,GPU),来对计算机系统缩放渲染能力。这种系统是复杂的,并且可要求每个GPU生成与该特定GPU的工作负荷相对应的可只在其上运行的指令集的开销。
因此对现有技术进行改进,提供在功率消耗、存储器使用或者这两方面都更高效的图形渲染处理器,将是有益的。
发明内容
根据本公开的一个实施例,提供了一种非对称多核异构图形处理单元(GPU),所述多核GPU包括:第一组一个或多个GPU核心,其中每一者具有第一微体系结构和第一功率消耗概要,所述第一组GPU核心被配置为执行指令集体系结构(ISA)的第一子集;第二组一个或多个GPU核心,其中每一者具有第二微体系结构和高于所述第一功率消耗概要的第二功率消耗概要,所述第二组GPU核心被配置为执行整个所述ISA;通信地连接到所述第一组GPU核心和所述第二组GPU核心的控制器,所述控制器被配置为接收所述ISA的指令并且确定所述指令是应当由所述第一组GPU中的GPU执行,还是由所述第二组GPU中的GPU执行;并且其中所述ISA的指令是由应用编程接口(API)生成的,所述API允许应用请求ISA指令被在所述第一组一个或多个GPU核心上或者所述第二组一个或多个GPU核心上执行。
根据本公开的另一实施例,提供了一种非对称多核异构图形处理单元(GPU),包括:第一组一个或多个GPU核心,其中每一者具有第一微体系结构和第一功率消耗概要,所述第一组GPU核心被配置为执行整个指令集体系结构(ISA)的第一子集;第二组一个或多个GPU核心,其中每一者具有第二微体系结构和高于所述第一功率消耗概要的第二功率消耗概要,所述第二组GPU核心被配置为执行所述整个ISA;通信地连接到所述第一组GPU核心和所述第二组GPU核心的控制器,所述控制器被配置为接收指令并且确定所述指令是应当由所述第一组的GPU核心中的一个或多个执行还是由所述第二组的GPU核心中的一个或多个执行,其中所述指令是由应用编程接口(API)生成的,所述API允许应用请求ISA指令被所述第一组或所述第二组执行。
附图说明
在本说明书最后的权利要求中具体指出并且明确要求保护本公开的主题。前述和其他目的、特征和优点将从接下来的结合附图理解的详细描述中清楚显现,附图中:
图1是根据一实施例实现的非对称多核异构并行处理系统(HPPS)的示意性图示。
图2是根据另一实施例实现的非对称多核HPPS的示意性图示。
图3是根据一实施例实现的具有指令分发器的非对称多核HPPS的示意性图示。
图4是根据一实施例实现的具有非对称多核HPPS的系统的示意性图示。
图5是根据另外一个实施例实现的非对称多核异构并行处理系统的示意性图示。
图6是根据一实施例实现的用于操作多核HPPS的分层模型的示意性图示。
图7是根据一实施例实现的显示内容感知渲染场景的显示器的示意性图示。
具体实施方式
下面,将参考附图详细描述示范性实施例,以使其容易被本领域普通技术人员实现。示范性实施例可以按各种形式实现,而不限于本文记载的示范性实施例。为了清晰起见省略了对公知部分的描述,并且相似的标号始终指代相似的元素。
注意到以下这点是重要的:本文公开的实施例只是本文的创新性教导的许多有利使用的示例。一般而言,在本申请的说明书中做出的陈述不一定限制各种权利要求的任何一者。另外,一些陈述可适用于一些创造性特征,但不适用于其他的。一般而言,除非另有指明,否则单数元素可以是复数的,反之亦然,而不失一般性。
多核非对称图形处理单元(GPU)包括第一组和第二组GPU核心。第一组GPU核心具有第一微体系结构和第一功率消耗概要(profile)。第一组GPU核心被配置为执行指令集体系结构(instruction set architecture,ISA)的指令的子集。第二组GPU核心具有第二微体系结构和高于第一功率消耗概要的第二功率消耗概要,并且被配置为执行整个ISA。第一组和第二组GPU核心还可按管线阶段的数目、寄存器的数目、分支执行、矢量化、并行执行指令的容量、多线程能力或者其组合来区分。任一群组中的GPU核心的子集可具有不同的操作频率。在一些实施例中,可执行指令可包括用来确定执行是由第一还是第二组GPU核心执行的指示符。
本文论述的实施例提及主GPU和次GPU。应当理解在某些实施例中,主GPU可全都在单个晶粒上实现,或者次GPU可全都在另一晶粒上实现,或者主GPU和次GPU可全都在单个晶粒上实现,这些都不脱离本公开的范围。
应当容易理解,在某些实施例中,可利用多个GPU群组。通常,每组GPU核心可具有不同的微体系结构,如下文更详细说明。
图1是根据一实施例实现的非对称多核异构并行处理系统100的示范性且非限制性的示意性图示。多核异构并行处理系统(heterogeneous parallel processing system,HPPS)100包括一般被称为第一组主GPU 110的第一组同构主图形处理器单元(GPU)110-1至110-4,以及次GPU 120。在一些实施例中,HPPS被实现为多核、多处理器单元。第一组GPU110可包括一个或多个主GPU,其中每一者具有第一微体系结构和第一功率消耗概要。主GPU110可具有定点数据路径,以及指令集体系结构(ISA)的第一指令集合。在一实施例中,次GPU 120可包括一个或多个同构次GPU,其中每一者具有第二微体系结构和第二功率消耗概要。第二功率消耗概要高于第一功率消耗概要,这表明次群组的GPU消耗比主群组的GPU更多的功率。在此实施例中,为了简单起见示出了一个次GPU,然而可存在多于一个的次GPU。次GPU可具有浮点数据路径,和ISA的第二指令集合。在另一实施例中,次GPU可具有与属于主GPU群组的GPU核心的定点数据路径相比更高精度的定点数据路径。第二集合可包括第一指令集合的全部或一部分。在一实施例中,第二集合可包括大于第一指令集合的指令集合。多核HPPS还包括硬件z缓冲器单元130,其耦合到第一组主GPU 110和次GPU 120。在渲染对象时,生成的像素的深度——等同于z坐标——由z缓冲器130生成,并被存储在存储器中。z缓冲器逻辑可实现为具有不同的精度水平。例如,在一实施例中,用于主GPU的z缓冲器操作可基于M比特计算,并且用于次GPU的z缓冲器操作可基于N比特计算,其中“M”和“N”是具有大于“1”的值的整数,并且“M”小于“N”。在另一实施例中,z缓冲器电路接收请求的精度水平作为输入并且此输入可定义z缓冲器相关计算的精度(即,比特的数目)。多核HPPS还包括纹理映射单元(texture mapping unit,TMU)140。TMU 140可以是单独的处理单元并且可用于将位图图像变换到三维空间的任意平面。TMU逻辑可实现为具有不同的精度水平,以及具有不同的采样模式。例如,在一实施例中,用于主GPU的TMU操作可基于M比特计算,并且用于次GPU的TMU操作可基于N比特计算,其中“M”和“N”是具有大于“1”的值的整数,并且“M”小于“N”。在另一实施例中,用于主GPU的TMU操作可被配置为执行点纹理采样,并且用于次GPU的TMU操作可被配置为执行双线性纹理采样。在另外一个实施例中,TMU电路可取得请求的精度水平(并且此输入可定义TMU相关计算中的比特的数目)、或者纹理采样模式或者这两者作为输入。TMU 140和z缓冲器单元130通信地耦合到缓存150。在某些实施例中,每个GPU可具有其自己的TMU、z缓冲器单元、缓存(或者多个缓存级别)或者这些的任何组合。例如,每个GPU(或者GPU的群组,或者GPU的子组)可具有其自己的TMU和z缓冲器单元,但共享共同的缓存。在另一实施例中,每个GPU(或者GPU的群组,或者GPU的子组)可具有其自己的TMU,以及共同的z缓冲器单元和缓存。缓存150还通信地耦合到I/O存储器管理单元(memorymanagement unit,MMU)160。I/O MMU 160管理缓存,并且可根据需要执行虚拟存储器管理。在上文论述的示范性实施例中,第一组GPU和第二GPU在利用定点与浮点或者不同精度的定点表示方面是不同的。然而,在其他示范性实施例中,差异可以是寄存器的数目、分支行为、矢量化、管线阶段、操作频率、多线程能力、并行执行指令的容量、这些的组合,等等。在一些实施例中,第一组GPU可进一步被划分成子组,其中每个子组可被进一步区分。例如,第一组GPU的第一子组可具有第一操作频率,并且第一组GPU的第二子组可具有第二操作频率。在另一示例中,第一子组具有第一大小(例如,1千字节)的缓存并且第二子组具有第二大小(例如,4千字节)的缓存。
图2是根据另一实施例实现的非对称多核HPPS的示范性且非限制性的示意性图示。该多核HPPS包括第一组主图形处理器单元(GPU),和第二组次GPU。第一组110可包括多个主GPU。主GPU可具有定点数据路径,以及指令集体系结构(ISA)的第一指令集合。第二组120可包括多个次GPU。次GPU可具有浮点数据路径或与主GPU的定点数据路径相比更高精度的定点数据路径,以及ISA的第二指令集合。第二集合可包括第一指令集合的全部或一部分。在一实施例中,第二集合可包括大于第一指令集合的指令集合。多核HPPS还包括耦合到第一组主GPU 110的第一硬件z缓冲器130-1,和耦合到第二组次GPU 120的第二硬件z缓冲器130-2。在渲染对象时,与z坐标等同的生成的像素的深度被存储在z缓冲器130中,这在上文联系图1更详细说明的。多核HPPS还包括耦合到第一组主GPU 110的第一纹理映射单元(TMU)140-1,和耦合到第二组次GPU 120的第二TMU 140-2。每个TMU可以是单独的处理单元,并且可用于将位图图像变换到三维空间的任意平面,如上文联系图1更详细描述的。
第一TMU 140-1和第一z缓冲器130-1通信地耦合到第一缓存150-1或者多个级别的缓存,并且第二TMU 140-2和第二z缓冲器130-2通信地耦合到第二缓存150-2或者多个级别的缓存。缓存150-1和150-2的每一者还通信地耦合到I/O存储器管理单元(MMU)160。I/OMMU 160管理每个缓存,并且根据需要执行虚拟存储器管理。要理解在本文描述的任何实施例中,第一组主GPU可包括一个或多个主GPU,并且第二组次GPU可包括一个或多个次GPU。示范性实施例是为了教导目的而给出的,而并不用作对本公开的限制。
图3是根据一实施例实现的具有指令分发器的非对称多核HPPS的示范性且非限制性的示意性图示。多核HPPS还可包括指令分发器170。指令分发器170分发ISA的指令来供GPU执行。指令分发器170可以是基于硬件的(实现为电路)、基于软件的或者这些的组合。在一实施例中,指令分发器170指挥指令去到相关的处理器群组。例如,ISA可包括要被第一组主处理器110、第二组次处理器120或者其组合执行的64比特指令。在此示范性实施例中,指令分发器170接收第一指令182和第二指令184。第一指令182包括被设置到“0”的标志比特182-1。在一实施例中,标志比特182-1向指令分发器指示出此指令优选由第一组主GPU 110执行。然而,在一些实施例中,出于负载平衡目的,指令分发器170可指挥第一指令182由第二组次GPU 120执行。第一指令可包括作为可执行指令本身的32比特有效载荷,以及对于执行没有影响的额外的31个垃圾比特。第二指令184包括被设置到“1”的标志比特184-1。在一实施例中,标志比特184-1向指令分发器170指示出此指令应当由第二组次GPU 120执行。指令分发器170可不指挥第二指令184由第一组主GPU 110执行,因为它们不能够执行此指令,或者能够在就图像分辨率而言的服务质量(quality of service,QoS)降低的情况下执行。第二指令可包括63比特有效载荷,这是可执行指令本身。在一实施例中,多核HPPS包括编译器,用于将源代码变换成可由第一组主GPU的GPU或者第二组次GPU的GPU执行的指令。在一实施例中,多核HPPS还可包括负载平衡器,其例如实现为电路,或者实现为软件模块,或者实现为指令分发器170的一部分。负载平衡器可确定应当由第一组主GPU的GPU执行的指令或者指令的群组将实际由第二组次GPU的GPU执行。这可以功率为代价加速执行,并且在一些实施例中可能是合乎需要的。在一些实施例中,指令包括包含用于阿尔法通道操作的指令的第一部分、包含用于RGB矢量操作的指令的第二部分、包含用于执行到存储器的I/O操作的存储器寻址指令的第三部分以及包含分支指令的第四部分,其中分支指令可基于RGB和阿尔法值之间的比较。在一些实施例中,第一组主GPU和第二组次GPU可各自执行整个ISA。然而,由于每组GPU的性质,执行的结果在质量上(就图像分辨率而言)或者执行时间上或者功率消耗上将是不同的。例如,第二指令184可由主GPU执行以实现与第二指令被次GPU120执行相比不那么精确的结果(给定相同时间的情况下)。在一些应用中,这可能是合乎需要的以牺牲图像质量(或者服务质量——QoS)来换取更长的电池寿命。例如,在达到预定的电池充电水平阈值的情况下,指令分发器170可被配置为指挥所有指令到主GPU 110以降低功率消耗。在另一实施例中,指令分发器的优化可根据特定的指令。例如,工作负荷如果在次GPU上执行则要求5个指令,但如果在主GPU 110上执行则要求25个指令来在不牺牲服务质量的情况下实现相同的结果。在这种示例中,从工作负荷生成可由次GPU执行的指令可能是更有功率效率的。在另外一个示范性实施例中,ISA的指令还可包括QoS指示符,其包括一个或多个比特。QoS指示符可被指令分发器170考虑来确定指令将被发送到何处来执行。例如,高细节图形可优选由更精确的次GPU 120执行。然而,指令分发器170在某些实施例中可推翻QoS指示符,例如在更长时间段的低分辨率(即低精度图形)比更短时间段的高分辨率(高精度图形)更合乎需要的应用中为了节约功率。作为另一示例,可基于显示器所暴露到的环境光条件来确定QoS指示符。在这种示例中,图形用户界面(graphic user interface,GUI)可由在任一GPU群组上执行的指令生成。然而,如果显示器在室外的明亮光中,则可利用第一组GPU来渲染GUI,产生不那么精确的GUI,但由于显示器和环境光之间的反差,质量的降低可能是不明显的。
图4是根据一实施例实现的具有非对称多核HPPS的系统400的示范性且非限制性的示意性图示。系统400包括多核HPPS,例如多核HPPS 100。多核HPPS 100可额外连接到串行处理元件,例如CPU 410,CPU 410进而可以用以下各项的任何组合实现:通用微处理器、微控制器、数字信号处理器(digital signal processor,DSP)、现场可编程门阵列(fieldprogrammable gate array,FPGA)、可编程逻辑器件(programmable logic device,PLD)、控制器、状态机、门控逻辑、分立硬件组件、专用硬件有限状态机或者能够执行计算或者对信息的其他操纵的任何其他适当的实体。多核HPPS 100以及在一些实施例中CPU 410可操作来通过驱动器418(参见图6)从应用编程接口(application programming interface,API)层415接收指令。API 415通过向驱动器418发送API请求来允许应用利用多核HPPS 100的功能。驱动器418可生成要被多核HPPS 100的一个或多个核心执行的ISA指令。多核HPPS100经由总线405耦合到存储器420。存储器420可包括包含指令的存储器部分422,这些指令当被处理元件410和/或多核HPPS 100执行时执行本文更详细描述的方法。根据具体情况,存储器420还可被用作多核HPPS 100、处理元件410的工作高速暂存、临时存储及其他。存储器420可以是易失性存储器,例如但不限于随机访问存储器(random access memory,RAM),或者非易失性存储器(non-volatile memory,NVM),例如但不限于闪存。系统400还包括显示器控制器(display controller,DC)430。DC 430进行操作来控制显示器435。显示器435可例如是LCD、OLED等等。在一实施例中,显示器435可以是低功率或者超低功率显示器。系统400还可包括输入440。输入440可以是触摸屏、拔盘、键盘、麦克风、这些的组合等等。系统还可包括通信电路450。通信电路450可操作来将系统400连接到网络。在一实施例中,网络可被配置为根据需要提供各种连通性,包括但不限于有线和/或无线连通性,例如包括局域网(local area network,LAN)、广域网(wide area network,WAN)、低功率WAN(low powerWAN,LPWAN)、城域网(metro area network,MAN)、万维网(worldwide web,WWW)、因特网以及这些的任何组合,以及蜂窝连通性。多核HPPS 100、处理元件410和/或存储器420也可包括用于存储软件的机器可读介质。软件应当被宽泛地解释为意指任何类型的指令,无论是被称为软件、固件、中间件、微代码、硬件描述语言还是其他。指令可包括代码(例如,采取源代码格式、二进制代码格式、可执行代码格式或者任何其他适当的代码格式)。指令当被一个或多个处理器执行时使得处理系统执行本文更详细描述的各种功能。
图5是根据另外一个实施例实现的非对称多核异构并行处理系统500的示范性且非限制性的示意性图示。多核异构并行处理系统(HPPS)500包括一般被称为第一组GPU 110的第一组同构主图形处理器单元(GPU)110-1和110-2,以及第二组次GPU 120-1和120-2。在一实施例中,第一组主GPU 110可包括一个或多个主GPU,其中每一者具有第一微体系结构和第一功率消耗概要。主GPU 110可具有定点数据路径,以及指令集体系结构(ISA)的第一指令集合。在一实施例中,第二组次GPU 120可包括一个或多个同构次GPU,其中每一者具有第二微体系结构和第二功率消耗概要。第二功率消耗概要高于第一功率消耗概要,这表明次群组的GPU消耗比主群组的GPU更多的功率。次GPU可具有浮点数据路径或者与主GPU相比更高精度的定点数据路径,以及ISA的第二指令集合。第二集合可包括第一指令集合的全部或一部分。在一实施例中,第二集合可包括大于第一指令集合的指令集合。多核HPPS还包括硬件z缓冲器130,其耦合到第一组主GPU 110和次GPU 120。在渲染对象时,等同于z坐标的生成的像素的深度被存储在z缓冲器130中。多核HPPS还包括纹理映射单元(TMU)140。TMU可以是单独的处理单元,并且可用于将位图图像变换到三维空间的任意平面。TMU 140和z缓冲器130通信地耦合到缓存150。缓存150还通信地耦合到I/O存储器管理单元(MMU)160。I/OMMU 160管理缓存,并且可根据需要执行虚拟存储器管理。多核HPPS 500还包括第三组主通用GPU(general purpose GPU,GPGPU)510-1和510-2,它们一般被称为第三组GPGPU 510。在一实施例中,第三组主GPGPU 510可包括一个或多个主GPGPU,其中每一者具有第三微体系结构和第三功率消耗概要。主GPGPU 510可具有定点数据路径,以及第二ISA的第一指令集合。在一实施例中,第三微体系结构与第一微体系结构相同。多核HPPS包括第四组次GPGPU520-1和520-2,它们一般被称为第四组次GPGPU 520。在一实施例中,第四组次GPGPU 520可包括一个或多个同构次GPGPU,其中每一者具有第四微体系结构和第四功率消耗概要。第四功率消耗概要高于第三功率消耗概要,这表明第四组的GPGPU消耗比第三组的GPU更多的功率。次GPGPU可具有浮点数据路径,以及第二ISA的第二指令集合。第二集合可包括第二ISA的第一指令集合的全部或一部分。在一实施例中,第二集合可包括大于第一指令集合的指令集合。在一些实施例中,第四微体系结构与第二微体系结构相同。第三组主GPGPU 510和第四组次GPGPU 520通信地连接到缓存150。在某些实施例中,第三组主GPGPU 510和/或第四组次GPGPU 520可通信地连接到与缓存150分开的缓存。在另外一个实施例中,可实现层次化连接的多于一个缓存级别。在上文论述的示范性实施例的一些中,第一组GPU(或GPGPU)和第二组GPU(或GPGPU)在利用定点与浮点或者具有不同精度水平的定点方面是相区分的。然而,在其他示范性实施例中,差异可以是寄存器的数目、分支行为、矢量化、管线阶段、操作频率、并行执行指令的容量、多线程能力、这些的组合,等等。
图6是根据一实施例实现的用于操作多核HPPS的分层模型的非限制性示范性示意性图示。多个应用610-1至610-K在操作系统(operating system,OS)620上被执行。“K”是具有“1”或更大的值的整数。要理解在一些实施例中,可执行单个应用。OS 620与API 415通信,以向驱动器发送API请求来为多核HPPS 100生成ISA指令。请求可例如是渲染对象的请求。请求被发送到驱动器418以生成一个或多个ISA指令来供多核HPPS执行该请求。在一实施例中,请求可包括渲染偏好,指示出多核HPPS应当渲染哪种类型的处理器。在一些实施例中,驱动器418可被配置为例如由于功率节约而推翻该请求。在一实施例中,驱动器418可耦合到指令分发器并且控制指令分发器的操作。在另一实施例中,指令分发器可自主地操作,而不由驱动器418指示或控制。
在另外一个实施例中,驱动器也可控制由主群组的GPU核心、或者次群组的GPU核心或者这两者生成的z缓冲器操作的精度水平。要理解通过增大z缓冲器操作的精度,功率消耗也可被增大,反之亦然。在另一实施例中,驱动器418也可控制由主群组的GPU核心、或者次群组的GPU核心或者这两者生成的纹理映射操作的精度水平和/或采样模式。通过减小纹理映射操作的精度水平,可降低有关算术计算的功率消耗。功率消耗的增益也可通过控制纹理采样模式来实现。例如,点纹理采样通常只涉及对纹理存储器的访问,而更复杂的纹理映射方案(例如,双线性)要求对纹理存储器的多于一个访问。要理解,较少的存储器访问导致较少的功率消耗,反之亦然。在某些实施例中,驱动器418可接收显示器分辨率和大小作为输入。应当容易理解,在小显示器大小中渲染对象可要求具有有限精度的计算(例如为了节约诸如膝上型电脑、平板设备、智能手表、电子书阅读器等等之类的移动设备的电池功率),或者具有有限精度的纹理采样计算,或者具有有限存储器访问的纹理采样模式,或者具有有限精度的z缓冲器操作,或者这些的组合。例如,以较低质量在互联网(internet ofthings,IoT)设备的小显示器中渲染远离视点的3D场景中的对象可不被用户注意到,因为人眼可能不是会始终感知到这种差异。在这种情况下,实现了增益,而不会牺牲观看显示器的用户容易辨别的一些东西。
在某些实施例中,人工神经网络(artificial neural network,ANN)615可作为OS620之上的应用被执行。ANN 615可例如是深度神经网络。ANN 615可接收来自驱动器418的反馈以训练ANN 615。ANN 615可接收在主GPU上渲染的对象、在次GPU上渲染的对象、显示器的大小和分辨率、基于渲染的对象的一个或多个成本函数的输出等等作为输入。ANN 615可被配置为随后基于上述输入确定应当在多核HPPS 100的哪个核心上渲染新的对象,或者纹理计算的精度,或者纹理采样模式,或者z缓冲器操作的精度,或者这些的组合。
图7是根据一实施例实现的显示内容感知渲染场景的显示器的非限制性示范性示意性图示。在多核HPPS上操作的应用被编程为请求在显示器435上渲染包括多个元素的场景:背景图像710、第一多边形720和第二多边形730。第二多边形730相对于视点可以是遥远的。多核HPPS和应用之间的API,例如API 415,可配置多核HPPS来渲染该场景。在一些实施例中,应用可通过API例如利用指示符比特指明在什么类型的处理器上渲染哪个元素、z缓冲器操作的精度以及纹理操作的精度和类型。例如,应用可指示出应当在主GPU上渲染背景元素710,并且应当在次GPU上渲染第一多边形720和第二多边形730。API可为指令分发器170生成指令,指令分发器170分发ISA的指令来供GPU执行。在一些实施例中,多核HPPS可例如通过z测试检测到某个元素正以高于阈值速率的速率在显示器上改变坐标(即移动),阈值速率可例如基于对象的大小和显示器的大小之间的比率来确定。响应于这种检测,多核HPPS可经由API向应用指示出发送指令以在具有较低精度的GPU中渲染某个元素。精度的损失可被感知为最低限度的,尤其因为功率消耗的增益可能是显著的。在一些实施例中,GPU核心可确定第一渲染对象和第二渲染对象之间的颜色差别。如果颜色差别被确定为低于阈值,则API可指示多核GPU在主处理器核心上渲染第一渲染对象和/或第二渲染对象,以便节约功率。精度的损失可能不会被其上渲染了对象的显示器的用户注意到,因为人眼可能不是始终会感知到这种差异。在其他实施例中,API(或应用)可检测渲染对象的每秒帧(frames per second,fps)的数目。如果fps的数目超过第一阈值,则API随后可生成ISA指令来在GPU核心的主群组上渲染并且配置z缓冲器和纹理操作的精度。如果fps的数目小于第二阈值,则API可生成ISA指令来在GPU核心的次群组上执行。在一些实施例中,应用(或API)确定渲染的第一对象的计算复杂度。响应于复杂度超过第一阈值,应用可生成ISA指令来由GPU核心的次群组渲染第一对象。响应于复杂度小于第二阈值,应用可生成ISA指令来由GPU核心的主群组渲染第一对象。复杂度可基于渲染第一对象所要求的代码的行数来确定。在一些实施例中,还可基于与多核HPPS通信地耦合的光传感器来生成指令。例如,如果确定光条件使得按第一分辨率渲染的对象将被人眼感知为与按更低的第二分辨率渲染的同一对象没有显著差异,则可生成指令来利用第二分辨率渲染对象,导致使用更少的计算功率。在一些实施例中,在应用确定对象相对于显示器的视点遥远的情况下,利用本文公开的任何技术,应用可指示以更低的精度渲染对象。
在本公开各处,术语“异构”和“同构”是在GPU核心的上下文中使用的。两个GPU核心被认为是同构的,因为它们共享微体系结构和ISA。在一些实施例中,同构GPU核心可例如由管线阶段、缓存和/或操作频率来区分。两个GPU核心在以下情况下可被认为是异构的:它们共享基线ISA,并且至少一个GPU核心具有独特的指令,并且它们还可由微体系结构区分。
虽然上述示例涉及两组GPU核心,但应当容易清楚可使用任何数目的不同群组,只要至少两组具有共享的ISA。
本文公开的各种实施例可实现为硬件、固件、软件或者这些的任何组合。另外,软件优选实现为有形地体现在由部件或者由某些设备或者设备的组合构成的程序存储单元或计算机可读介质上的应用程序。应用程序可被上传到包括任何适当体系结构的机器并且被其执行。优选地,机器被实现在具有硬件的计算机平台上,该硬件例如是一个或多个中央处理单元(“CPU”)、GPU、GPGPU、这些的组合、存储器和输入/输出接口。计算机平台也可包括操作系统和微指令代码。本文描述的各种过程和功能可以是微指令代码的一部分或者应用程序的一部分,或者这些的任何组合,其可被CPU执行,无论这种计算机或处理器是否被明确示出。此外,各种其他外围单元可连接到计算机平台,例如额外的数据存储单元和打印单元。此外,非暂态计算机可读介质是除了暂态传播信号以外的任何计算机可读介质。
本文记载的所有示例和条件语言打算用于教导目的来帮助读者理解公开的实施例的原理和发明人为推进现有技术贡献的构思,并且应被解释为不限于这种具体记载的示例和条件。另外,本文记载公开的实施例的原理、方面和实施例以及其具体示例的所有陈述都打算涵盖其结构和功能等同物。此外,希望这种等同物既包括当前已知的等同物,也包括未来开发的等同物,即,开发来执行相同功能的任何元素,无论结构如何。
Claims (19)
1.一种非对称多核异构图形处理单元,所述非对称多核异构图形处理单元包括:
第一组一个或多个图像处理单元核心,其中每一者具有第一微体系结构和第一功率消耗概要,所述第一组图像处理单元核心被配置为执行指令集体系结构的第一子集;
第二组一个或多个图像处理单元核心,其中每一者具有第二微体系结构和高于所述第一功率消耗概要的第二功率消耗概要,所述第二组图像处理单元核心被配置为执行整个所述指令集体系结构;
通信地连接到所述第一组图像处理单元核心和所述第二组图像处理单元核心的控制器,所述控制器被配置为接收所述指令集体系结构的指令并且确定所述指令是应当由所述第一组图像处理单元中的图像处理单元执行,还是由所述第二组图像处理单元中的图像处理单元执行;并且
其中所述指令集体系结构的指令是由应用编程接口生成的,所述应用编程接口允许应用请求指令集体系结构指令被在所述第一组一个或多个图像处理单元核心上或者所述第二组一个或多个图像处理单元核心上执行,并且
其中所述应用确定渲染的第一对象的计算复杂度,并且响应于所述渲染的第一对象的所述复杂度超过第一阈值而生成指令集体系结构指令来由所述第二组图像处理单元核心渲染所述第一对象。
2.如权利要求1所述的非对称多核异构图形处理单元,其中所述非对称多核异构图形处理单元还包括存储器,所述存储器中存储有当被所述非对称多核异构图形处理单元执行时配置系统进行以下操作的指令:
确定第一渲染对象和第二渲染对象之间的颜色差别;并且
响应于确定所述颜色差别低于阈值,在所述第一组一个或多个图像处理单元核心上渲染所述第一渲染对象和/或所述第二渲染对象。
3.如权利要求1所述的非对称多核异构图形处理单元,其中所述非对称多核异构图形处理单元还包括存储器,所述存储器中存储有当被所述非对称多核异构图形处理单元执行时配置系统进行以下操作的指令:
确定渲染对象的每秒帧的数目,其中所述控制器还被配置为:如果所述每秒帧的数目超过第一阈值,则确定所述指令应当被在所述第一组图像处理单元核心上渲染。
4.如权利要求3所述的非对称多核异构图形处理单元,其中所述控制器还被配置为:如果所述每秒帧的数目小于第二阈值,则确定所述指令应当被在所述第二组图像处理单元核心上渲染。
5.如权利要求1所述的非对称多核异构图形处理单元,其中所述应用响应于所述复杂度小于第二阈值而生成指令集体系结构指令来由所述第一组图像处理单元核心渲染所述第一对象。
6.如权利要求1所述的非对称多核异构图形处理单元,其中复杂度是基于渲染所述第一对象所要求的代码的行数来确定的。
7.如权利要求1所述的非对称多核异构图形处理单元,其中所述非对称多核异构图形处理单元还包括存储器,所述存储器中存储有当被所述非对称多核异构图形处理单元执行时配置系统进行以下操作的指令:
基于渲染对象的一个或多个拼块的关联xy坐标来确定所述渲染对象的移动的速率;并且
如果所述移动的速率超过第一阈值,则确定渲染指令应当被在所述第一组图像处理单元核心上执行。
8.如权利要求7所述的非对称多核异构图形处理单元,其中所述非对称多核异构图形处理单元还包括存储器,所述存储器中存储有当被所述非对称多核异构图形处理单元执行时配置所述系统进行以下操作的指令:
如果所述移动的速率低于第二阈值,则确定渲染指令应当被在所述第二组图像处理单元核心上执行。
9.如权利要求1所述的非对称多核异构图形处理单元,其中所述应用基于以下项来确定生成指令集体系结构指令:检测
到的显示器大小、检测到的显示器类型、或者这些的组合。
10.如权利要求9所述的非对称多核异构图形处理单元,其中所述检测到的显示器大小或者所述检测到的显示器类型或者这些的组合是低于预定阈值的,并且所述应用确定在所述第一组一个或多个图像处理单元核心上生成指令集体系结构指令。
11.如权利要求1所述的非对称多核异构图形处理单元,其中z缓冲器与以下项通信地耦合:所述第一组图像处理单元核心、所述第二组图像处理单元核心、所述第一组图像处理单元核心的图像处理单元核心的子集、或者所述第二组图像处理单元核心的图像处理单元核心的子集。
12.如权利要求11所述的非对称多核异构图形处理单元,其中所述z缓冲器的精度是能基于比特分配调整的。
13.如权利要求12所述的非对称多核异构图形处理单元,其中所述第一组图像处理单元核心中的图像处理单元核心与具有第一精度的z缓冲器通信地耦合,并且所述第二组图像处理单元核心中的图像处理单元核心与具有第二精度的z缓冲器通信地耦合,并且其中所述第一精度不同于所述第二精度。
14.如权利要求1所述的非对称多核异构图形处理单元,其中所述第一组图像处理单元核心中的图像处理单元核心与第一纹理映射单元通信地耦合,并且所述第二组图像处理单元核心中的图像处理单元核心与第二纹理映射单元通信地耦合。
15.如权利要求14所述的非对称多核异构图形处理单元,其中所述第一纹理映射单元具有第一精度,并且所述第二纹理映射单元具有不同于所述第一精度的第二精度。
16.如权利要求14所述的非对称多核异构图形处理单元,其中所述第一纹理映射单元或所述第二纹理映射单元接收以下项作为输入:基于计算的预定比特数目的精度水平、纹理采样模式、或者这些的组合。
17.如权利要求14所述的非对称多核异构图形处理单元,其中所述第一纹理映射单元被配置为执行点纹理采样。
18.如权利要求14所述的非对称多核异构图形处理单元,其中所述第二纹理映射单元被配置为执行双线性纹理采样。
19.一种非对称多核异构图形处理单元,包括:
第一组一个或多个图像处理单元核心,其中每一者具有第一微体系结构和第一功率消耗概要,所述第一组图像处理单元核心被配置为执行整个指令集体系结构的第一子集;
第二组一个或多个图像处理单元核心,其中每一者具有第二微体系结构和高于所述第一功率消耗概要的第二功率消耗概要,所述第二组图像处理单元核心被配置为执行所述整个指令集体系结构;
通信地连接到所述第一组图像处理单元核心和所述第二组图像处理单元核心的控制器,所述控制器被配置为接收指令并且确定所述指令是应当由所述第一组的图像处理单元核心中的一个或多个执行还是由所述第二组的图像处理单元核心中的一个或多个执行,
其中所述指令是由应用编程接口生成的,所述应用编程接口允许应用请求指令集体系结构指令被所述第一组或所述第二组执行,并且
其中所述应用确定渲染的第一对象的计算复杂度,并且响应于所述渲染的第一对象的所述复杂度超过第一阈值而生成指令集体系结构指令来由所述第二组图像处理单元核心渲染所述第一对象。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862786379P | 2018-12-29 | 2018-12-29 | |
US62/786,379 | 2018-12-29 | ||
US16/515,172 US11107180B2 (en) | 2017-06-20 | 2019-07-18 | Asymmetric multi-core heterogeneous parallel processing system with content aware and display aware rendering logic |
US16/515,172 | 2019-07-18 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111381885A CN111381885A (zh) | 2020-07-07 |
CN111381885B true CN111381885B (zh) | 2024-04-09 |
Family
ID=71216937
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911365198.2A Active CN111381885B (zh) | 2018-12-29 | 2019-12-26 | 非对称多核异构并行处理系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111381885B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114546927B (zh) * | 2020-11-24 | 2023-08-08 | 北京灵汐科技有限公司 | 数据传输方法、核心、计算机可读介质、电子设备 |
CN113297126A (zh) * | 2021-06-02 | 2021-08-24 | 南方电网数字电网研究院有限公司 | 一种实现电力数据处理的同异构混合多核芯片架构 |
CN113655880A (zh) * | 2021-08-03 | 2021-11-16 | Oppo广东移动通信有限公司 | 界面渲染方法、装置、终端设备及计算机可读存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109101332A (zh) * | 2017-06-20 | 2018-12-28 | 畅想芯科有限公司 | 非对称多核异构并行处理系统 |
-
2019
- 2019-12-26 CN CN201911365198.2A patent/CN111381885B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109101332A (zh) * | 2017-06-20 | 2018-12-28 | 畅想芯科有限公司 | 非对称多核异构并行处理系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111381885A (zh) | 2020-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11107180B2 (en) | Asymmetric multi-core heterogeneous parallel processing system with content aware and display aware rendering logic | |
CN111381885B (zh) | 非对称多核异构并行处理系统 | |
CN109643443B (zh) | 图形处理器流水线中的高速缓存和压缩互操作性 | |
US11954062B2 (en) | Dynamic memory reconfiguration | |
US20230421802A1 (en) | Adaptive foveated encoder and global motion predictor | |
US10510133B2 (en) | Asymmetric multi-core heterogeneous parallel processing system | |
US11533683B2 (en) | Advanced graphics power state management | |
US11481950B2 (en) | Real-time hardware-assisted GPU tuning using machine learning | |
EP3436894B1 (en) | Active and stall cycle based dynamic scaling of processor frequency and bus bandwidth | |
US10983581B2 (en) | Resource load balancing based on usage and power limits | |
US11615034B2 (en) | Translation lookaside buffer to implement adapative page size | |
US11914438B2 (en) | Repeating graphics render pattern detection | |
US20190197658A1 (en) | Intelligent memory dvfs scheme exploiting graphics inter-frame level correlation | |
US11934797B2 (en) | Mechanism to perform single precision floating point extended math operations | |
US20200090397A1 (en) | Variable precision computing system | |
WO2021050275A1 (en) | Device link management | |
US11127106B2 (en) | Runtime flip stability characterization | |
US11550389B1 (en) | Gaze and content aware rendering logic | |
US10691603B2 (en) | Cache partitioning mechanism | |
US20190102860A1 (en) | Tile aware sector cache for graphics |
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 |