CN107004252B - 用于在处理浮点值时实现功率节省技术的装置与方法 - Google Patents

用于在处理浮点值时实现功率节省技术的装置与方法 Download PDF

Info

Publication number
CN107004252B
CN107004252B CN201580064719.4A CN201580064719A CN107004252B CN 107004252 B CN107004252 B CN 107004252B CN 201580064719 A CN201580064719 A CN 201580064719A CN 107004252 B CN107004252 B CN 107004252B
Authority
CN
China
Prior art keywords
bit
floating
data
specified set
bit positions
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
CN201580064719.4A
Other languages
English (en)
Other versions
CN107004252A (zh
Inventor
Y·M·金
S·P·朴
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 CN107004252A publication Critical patent/CN107004252A/zh
Application granted granted Critical
Publication of CN107004252B publication Critical patent/CN107004252B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30141Implementation provisions of register files, e.g. ports
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/14Conversion to or from non-weighted codes
    • H03M7/24Conversion to or from floating-point codes
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2330/00Aspects of power supply; Aspects of display protection and defect management
    • G09G2330/02Details of power systems and of start or stop of display operation
    • G09G2330/021Power management, e.g. power saving
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1108Hard decision decoding, e.g. bit flipping, modified or weighted bit flipping

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Image Generation (AREA)

Abstract

描述了当读取和写入图形数据时用于减少功率的装置和方法。例如,装置的一个实施例包括:图形处理单元(GPU),其用于处理包括浮点数据的图形数据;一组寄存器,该组中的寄存器中的至少一个寄存器被划分用于存储浮点数据;以及编码/解码逻辑,其用于通过使浮点数据内的指定一组的比特位置被读出为0而非1来减少从该至少一个寄存器读取的二进制1值的数量。

Description

用于在处理浮点值时实现功率节省技术的装置与方法
背景
本发明是在由能源部授予的合同号B600738下得到政府支持而作出的。政府享有本发明的某些权利。
技术领域
本发明大体涉及计算机处理器的领域。更具体地,本发明涉及用于在处理浮点值时实现功率节省技术的方法与装置。
背景技术
图形处理器是当前芯片上系统(SoC)架构中最大/功率关键块之一。寄存器堆(RF)与宽的总线在图形寄存器中消耗显著的功率。在RF中,由于返回零(RZ)的多米诺类型(domino-style)的读取操作,读取“1”的操作比读取“0”的操作消耗显著更多的功率。此外,由于非返回零(NRZ)写操作中的写入位线的大电容,每个循环将不同的值写入RF可导致最糟情况的功耗。类似地,每个循环在长、宽的总线上移动不同数据消耗了大量的功率。
附图说明
结合以下附图,从以下具体实施方式中可获得对本发明更好的理解,其中:
图1是具有处理器的计算机系统的实施例的框图,所述处理器具有一个或多个处理器核以及图形处理器;
图2是处理器的一个实施例的框图,所述处理器具有一个或多个处理器核、集成存储器控制器以及集成图形处理器;
图3是图形处理器的一个实施例的框图,所述图形处理器可以是分立的图形处理单元,或可以是与多个处理核集成的图形处理器;
图4是用于图形处理器的图形处理引擎的实施例的框图;
图5是图形处理器的另一实施例的框图;
图6是包括处理元件的阵列的线程执行逻辑的框图;
图7示出根据实施例的图形处理器执行单元指令格式;
图8是图形处理器的另一实施例的框图,所述图形处理器包括图形流水线、媒体流水线、显示引擎、线程执行逻辑以及渲染输出流水线。
图9A是示出根据实施例的图形处理器命令格式的框图;
图9B是示出根据实施例的图形处理器命令序列的框图;
图10示出根据实施例的用于数据处理系统的示例性图形软件架构;
图11示出了可在其上实现本发明的各实施例的架构的一个实施例;
图12A-B示出了浮点值的某些部分的有关特性;
图13A-C示出了在本发明的三个不同实施例中所采用的编码/解码逻辑;
图14A-B示出了展示本发明的实施例减少前一值与当前值之间的切换(toggle)的数量的示例;
图15示出根据本发明的一个实施例的方法。
具体实施方式
在下面的描述中,为了进行解释,阐述了众多具体细节以便提供对以下描述的本发明的多个实施例的透彻理解。然而,对本领域技术人员显而易见的是,可以在没有这些具体细节中的一些细节的情况下实施本发明的各实施例。在其他实例中,公知的结构和设备以框图形式示出,以避免使本发明的多个实施例的基本原理模糊。
示例性图形处理器架构和数据类型
系统概览
图1是根据实施例的数据处理系统100的框图。数据处理系统100包括一个或多个处理器102以及一个或多个图形处理器108,并且可以是单处理器台式系统、多核工作站系统或具有大量处理器102或处理器核107的服务器系统。在一个实施例中,数据处理系统100是在移动设备、手持式设备或嵌入式设备中使用的片上系统集成电路(SOC)。
数据处理系统100的实施例可包括或可并入以下各项内:基于服务器的游戏平台、游戏控制台(包括游戏和媒体控制台、移动游戏控制台、手持式游戏控制台或在线游戏控制台)。在一些实施例中,数据处理系统100是移动电话、智能电话、平板计算设备或移动互联网设备。数据处理系统100也可包括可穿戴设备,可与可穿戴设备耦合或可集成在可穿戴设备内,所述可穿戴设备诸如,智能手表可穿戴设备、智能眼镜设备、增强现实设备或虚拟现实设备。在一些实施例中,数据处理系统100是电视机或机顶盒设备,所述电视机或机顶盒设备具有一个或多个处理器102以及由一个或多个图形处理器108生成的图形界面。
在一些实施例中,该一个或多个处理器102各自都包括一个或多个处理器核107,所述一个或多个处理器核107用于处理指令,所述指令当被执行时,执行用于系统和用户软件的操作。在一些实施例中,一个或多个处理器核107中的每一个都配置成处理特定的指令集109。在一些实施例中,指令集109可促进复杂指令集计算(CISC)、精简指令集计算(RISC)或经由超长指令字(VLIW)的计算。多个处理器核107各自都可处理不同的指令集109,不同的指令集109可包括用于促进对其他指令集的仿真的指令。处理器核107也可包括其他处理设备,诸如,数字信号处理器(DSP)。
在一些实施例中,处理器102包括高速缓存存储器104。取决于架构,处理器102可具有单个内部高速缓存或多级内部高速缓存。在一些实施例中,高速缓存存储器在处理器102的各种组件之间共享。在一些实施例中,处理器102也使用可利用已知的高速缓存一致性技术而在处理器核107之间共享的外部高速缓存(例如,第-3级(L3)高速缓存或末级高速缓存(LLC))(未示出)。寄存器堆106附加地包括在处理器102中,寄存器堆106可包括用于存储不同类型数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器以及指令指针寄存器)。一些寄存器可以是通用寄存器,而其他寄存器可专用于处理器102的设计。
在一些实施例中,处理器102耦合至处理器总线110以在处理器102与系统100中的其他组件之间传输数据信号。系统100使用示例性“中枢”系统架构,所述示例性“中枢”系统架构包括存储器控制器中枢116和输入输出(I/O)控制器中枢130。存储器控制器中枢116促进存储器设备与系统100的其他组件之间的通信,而I/O控制器中枢(ICH)130提供经由本地I/O总线至I/O设备的连接。
存储器设备120可以是动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪存设备或具有适当的性能以充当进程存储器的某个其他存储器设备。存储器120可存储用于在处理器102执行进程时使用的数据122和指令121。存储器控制器中枢116也与任选的外部图形处理器112耦合,所述任选的外部图形处理器112可与处理器102中的一个或多个图形处理器108通信以执行图形和媒体操作。
在一些实施例中,ICH 130使外围设备能够经由高速I/O总线而连接至存储器120和处理器102。IO外围设备包括音频控制器146、固件接口128、无线收发机126(例如,Wi-Fi、蓝牙)、数据存储设备124(例如,硬盘驱动器、闪存等)以及用于将旧式(legacy)(例如,个人系统2(PS/2))设备耦合至系统的旧式I/O控制器。一个或多个通用串行总线(USB)控制器142连接输入设备(诸如,键盘和鼠标144的组合)。网络控制器134也可耦合至ICH 130。在一些实施例中,高性能网络控制器(未示出)耦合至处理器总线110。
图2是处理器200的实施例的框图,所述处理器具有一个或多个处理器核202A-N,集成存储器控制器214以及集成图形处理器208。图2具有与本文中的任意其他附图的元件相同的附图标记(或名称)的那些元件可以与本文中其他地方描述的方式相似的任何方式进行操作或运行,但不限于此。处理器200可包括附加的核,所述附加的核多至由虚线框表示的附加核202N并包括由虚线框表示的附加核202N。核202A-N中的每一个都包括一个或多个内部高速缓存单元204A-N。在一些实施例中,每一个核都具有对一个或多个共享高速缓存单元206的访问权。
内部高速缓存单元204A-N和共享高速缓存单元206表示处理器200内的高速缓存存储器层次结构。高速缓存存储器层次结构可包括每一个核内的至少一个层级的指令和数据高速缓存以及一个或多个层级的共享的中间级高速缓存(诸如,第2级(L2)、第3级(L3)、第4级(L4)或其他层级高速缓存),其中,在外部存储器之前的最高层级的高速缓存被分类为LLC。在一些实施例中,高速缓存一致性逻辑维持各种高速缓存单元206与204A-N之间的一致性。
在一些实施例中,处理器200也可包括一组一个或多个总线控制器单元126和系统代理210。一个或多个总线控制器单元管理一组外围总线(诸如,一个或多个外围组件互连总线(例如,PCI、PCI Express))。系统代理210提供用于各种处理器组件的管理功能。在一些实施例中,系统代理210包括用于管理对各种外部存储器设备(未示出)的访问的一个或多个集成存储器控制器214。
在一些实施例中,核202A-N中的一个或多个包括对同时的多线程操作的支持。在此类实施例中,系统代理210包括用于在多线程处理期间协调并操作核202A-N的组件。系统代理210可附加地包括功率控制单元(PCU),所述PCU包括用于调节核202A-N和图形核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互连中的至少一者,所述I/O互连包括促进各种处理器组件与高性能嵌入式存储器模块218(诸如,eDRAM模块)之间的通信的封装I/O互连。在一些实施例中,核202-N和图形处理器208中的每一者都将嵌入式存储器模块218用作共享的末级高速缓存。
在一些实施例中,核202A-N是执行相同的指令集架构的同构核。在另一实施例中,核202A-N就指令集架构(ISA)方面而言是异构的,其中,核202A-N中的一个或多个执行第一指令集,而其他核中的至少一个执行第一指令集的子集或不同的指令集。
在一些实施例中,处理器200是一个或多个基板的部分,或使用各种工艺技术中的任一技术而实现在一个或多个基板上,所述工艺技术例如,互补式金属-氧化物半导体(CMOS)、双极结型/互补式金属-氧化物半导体(BiCMOS)或N型金属-氧化物-半导体逻辑(NMOS)。附加地,处理器200可实现在一个或多个芯片上,或可实现为SOC集成电路,所述SOC集成电路除其他组件之外还具有所示组件。
图3是图形处理器300的框图,所述图形处理器300可以是分立的图形处理单元,或可以是与多个处理核集成的图形处理器。在一些实施例中,图形处理器经由到图形处理器上的寄存器的存储器映射的I/O接口进行通信,并且与置入处理器存储器中的命令进行通信。在一些实施例中,图形处理器300包括用于访问存储器的存储器接口314。存储器接口314可以是至以下各项的接口:本地存储器、一个或多个内部高速缓存、一个或多个共享外部高速缓存和/或系统存储器。
在一些实施例中,图形处理器300也包括用于将显示输出数据驱动到显示设备320的显示控制器302。显示控制器302包括用于显示的一个或多个覆盖平面(overlay plane)以及视频或用户接口元件的多个层的综合的硬件。在一些实施例中,图形处理器300包括用于将媒体编码至一个或多个媒体编码格式、从一个或多个媒体编码格式解码或在一个或多个媒体编码格式之间转码的视频编解码引擎306,所述媒体编码格式包括但不限于:移动图片专家组(MPEG)格式(诸如,MPEG-2)、高级视频译码(AVC)格式(诸如,H.264/MPEG-4AVC)以及电影电视工程师协会(SMPTE)421M/VC-1,以及联合图像专家组(JPEG)格式(诸如,JPEG和运动JPEG(MJPEG)格式)。
在一些实施例中,图形处理器300包括用于执行二维(2D)光栅化(rasterizer)操作(包括例如位边界块转移)的块图像转移(BLIT)引擎304。然而,在一个实施例中,使用图形处理引擎(GPE)310的一个或多个组件来执行2D图形操作。在一些实施例中,图形处理引擎310是用于执行图形操作(包括三维(3D)图形操作和媒体操作)的计算引擎。
在一些实施例中,GPE 310包括用于执行3D操作的3D流水线312,所述3D操作诸如,使用作用于3D基元形状(例如,矩形、三角形等)的处理函数来渲染三维图像和场景。3D流水线312包括可编程和固定功能元件,所述可编程和固定功能元件执行元件内的各种任务和/或繁衍(spawn)执行线程至3D/媒体子系统315。当3D流水线312可用于执行媒体操作时,GPE310的实施例也包括专门用于执行媒体操作(诸如,视频后处理和图像增强)的媒体流水线316。
在一些实施例中,媒体流水线316包括用于执行一个或多个专业媒体操作的固定功能或可编程逻辑单元,所述专业媒体操作诸如,取代或代表视频编解码引擎306的视频解码加速、视频去隔行(de-interlacing)以及视频编码加速。在一些实施例中,媒体流水线316附加地包括用于繁衍供在3D/媒体子系统315上执行的线程的线程繁衍单元。所繁衍的线程在3D/媒体子系统315中所包括的一个或多个图形执行单元上执行用于媒体操作的计算。
在一些实施例中,3D/媒体子系统315包括用于执行由3D流水线312和媒体流水线316繁衍的线程的逻辑。在一些实施例中,流水线将线程执行请求发送至3D/媒体子系统315,所述3D/媒体子系统315包括用于仲裁各种请求并将各种请求分派至可用的线程执行资源的线程分派逻辑。执行资源包括用于处理3D和媒体线程的图形执行单元的阵列。在一些实施例中,3D/媒体子系统315包括用于线程指令和数据的一个或多个内部高速缓存。在一些实施例中,子系统也包括用于在多个线程之间共享数据并用于存储输出数据的共享存储器,所述共享存储器包括寄存器和可寻址存储器。
3D/媒体处理
图4是根据一些实施例的图形处理器的图形处理引擎410的框图。在一些实施例中,GPE410是图3中示出的GPE 310的某个版本。图4中具有与本文中的任意其他附图的元件相同的附图标记(或名称)的元件可以与本文中其他地方描述方式相似的任何方式进行操作或运行,但不限于此。
在一些实施例中,GPE 410与命令流送器403耦合,所述命令流送器403将命令流提供至GPE 3D和媒体流水线412、416。在一些实施例中,命令流送器403耦合至存储器,所述存储器可以是系统存储器、或者内部高速缓存存储器和共享高速缓存存储器中的一个或多个。在一些实施例中,命令流送器403从存储器接收命令,并且将这些命令发送至3D流水线412和/或媒体流水线416。3D和媒体流水线通过以下方式来处理命令:通过经由相应流水线内的逻辑来执行操作;或通过将一个或多个执行线程分派至执行单元阵列414。在一些实施例中,执行单元阵列414是可缩放的,使得此阵列包括基于GPE 410的目标功率和性能等级的可变数量的执行单元。
在一些实施例中,采样引擎430与存储器(例如,高速缓存存储器或系统存储器)和执行单元阵列414耦合。在一些实施例中,采样引擎430提供用于执行单元阵列414的存储器访问机制,所述存储器访问机制允许执行阵列414从存储器读取图形和媒体数据。在一些实施例中,采样引擎430包括用于为媒体执行专业图像采样操作的逻辑。
在一些实施例中,采样引擎430中的专业媒体采样逻辑包括去噪/去隔行模块432、运动估计模块434以及图像缩放和过滤模块436。在一些实施例中,去噪/去隔行模块432包括用于对经解码的视频数据执行去噪或去隔行中的一者或多者的逻辑。去隔行逻辑将隔行的(interlaced)视频内容的交替场组合为单个视频帧。去噪逻辑降低或去除来自视频和图像数据的数据噪声。在一些实施例中,去噪逻辑和去隔行逻辑是运动自适应的,并且基于在视频数据中检测到的运动量来使用空间或时间上的过滤。在一些实施例中,去噪/去隔行模块432包括专用运动检测逻辑(例如,在运动估计引擎434内)。
在一些实施例中,运动估计引擎434通过对视频数据执行视频加速功能(诸如,运动向量估计和预测)来提供对视频操作的硬件加速。运动估计引擎确定运动向量,所述运动向量描述图像数据在相继的视频帧之间的变换。在一些实施例中,图形处理器媒体编解码器使用视频运动估计引擎434以在宏块层级上执行对视频的操作,所述在宏块层级上对视频的操作原本可能是太计算密集型的以不能利用通用处理器来执行。在一些实施例中,运动估计引擎434一般可用于图形处理器组件以辅助视频解码和处理功能,所述视频解码和处理功能对视频数据内的运动的方向和幅度是敏感的或自适应于视频数据内的运动的方向或幅度。
在一些实施例中,图像缩放和过滤模块436执行图像处理操作以增强所生成的图像和视频的视觉质量。在一些实施例中,缩放和过滤模块436在将数据提供至执行单元阵列414之前的采样操作期间处理图像和视频数据。
在一些实施例中,GPE 410包括数据端口444,所述数据端口444为图形子系统提供访问存储器的附加机制。在一些实施例中,数据端口444促进用于操作的存储器访问,所述操作包括渲染目标写入、恒定缓冲器读取、抓取存储器空间读取/写入以及媒体表面访问。在一些实施例中,数据端口444包括用于对存储器的访问进行高速缓存的高速缓存存储器空间。高速缓存存储器可以是单个数据高速缓存,或者可分离为用于经由数据端口来访问存储器的多个子系统的多个高速缓存(例如,渲染缓冲器高速缓存、恒定缓冲器高速缓存,等等)。在一些实施例中,在执行单元阵列414中的执行单元上执行的线程通过经由数据分配互连交换消息来与数据端口通信,所述数据分配互连耦合GPE 410的子系统中的每一个。
执行单元
图5是图形处理器500的另一实施例的框图。图5中具有与本文中的任意其他附图的元件相同的附图标记(或名称)的元件可以与本文中其他地方描述的方式相似的任何方式进行操作或运行,但不限于此。
在一些实施例中,图形处理器500包括环形互连502、流水线前端504、媒体引擎537和图形核580A-N。在一些实施例中,环形互连502将图形处理器耦合至其他处理单元(包括其他图形处理器或一个或多个通用处理器核)。在一些实施例中,图形处理器是集成在多核处理系统内的许多处理器中的一个。
在一些实施例中,图形处理器500经由环形互连502接收批量的命令。传入的命令由流水线前端504中的命令流送器503解释。在一些实施例中,图形处理器500包括用于经由(多个)图形核580A-N来执行3D几何处理和媒体处理的可缩放执行逻辑。对于3D几何处理命令,命令流送器503将命令供应至几何流水线536。对于至少一些媒体处理命令,命令流送器503将命令供应至视频前端534,所述视频前端534与媒体引擎537耦合。在一些实施例中,媒体引擎537包括用于视频和图像后处理的视频质量引擎(VQE)530以及用于提供硬件加速的媒体数据编码和解码的多格式编码/解码(MFX)533引擎。在一些实施例中,几何流水线536和媒体引擎537各自都生成用于由至少一个图形核580A提供的线程执行资源的执行线程。
在一些实施例中,图形处理器500包括可缩放线程执行资源,所述可缩放线程执行单元特征为模块化核580A-N(有时称为核片(core slice)),每一个模块化核都具有多个子核550A-N、560A-N(有时称为核子片(core sub-slice))。在一些实施例中,图形处理器500可具有任何数量的图形核580A至580N。在一些实施例中,图形处理器500包括图形核580A,所述图形核580A至少具有第一子核550A和第二核子核560A。在其他实施例中,图形处理器是具有单个子核(例如,550A)的低功率处理器。在一些实施例中,图形处理器500包括多个图形核580A-N,每一个图形核都包括第一子核的集合550A-N以及第二子核的集合560A-N。第一子核的集合550A-N中的每一个子核都至少包括执行单元552A-N和媒体/纹理采样器554A-N的第一集合。第二子核的集合560A-N中的每一个子核都至少包括执行单元562A-N和采样器564A-N的第二集合。在一些实施例中,每一个子核550A-N、560A-N都共享一组共享资源570A-N。在一些实施例中,共享资源包括共享高速缓存存储器和像素操作逻辑。其他共享资源也可包括在图形处理器的各种实施例中。
图6示出线程执行逻辑600,所述线程执行逻辑600包括在GPE的一些实施例中采用的处理元件的阵列。图6中具有与本文中的任意其他附图的元件相同的附图标记(或名称)的元件可以与本文中其他地方描述方式相似的任何方式进行操作或运行,但不限于此。
在一些实施例中,线程执行逻辑600包括像素着色器602、线程分派器604、指令高速缓存606、包括多个执行单元608A-N的可缩放执行单元阵列、采样器610、数据高速缓存612和数据端口614。在一个实施例中,所包括的组件经由互连结构被互连,所述互连结构链接至组件中的每一个组件。在一些实施例中,线程执行逻辑600包括通过指令高速缓存606、数据端口614、采样器610和执行单元阵列608A-N中的一者或多者而至存储器(诸如,系统存储器或高速缓存存储器)的一个或多个连接。在一些实施例中,每一个执行单元(例如,608A)是能够为每一个线程并行地执行多个同时的线程并处理多个数据元素的单独的向量处理器。在一些实施例中,执行单元阵列608A-N包括任何数量的单独执行单元。
在一些实施例中,执行单元阵列608A-N主要用于执行“着色器”程序。在一些实施例中,阵列608A-N中的执行单元执行包括对许多标准的3D图形着色器指令的原生支持的指令集,使得以最少的转换来执行来自图形库(例如,Direct 3D和OpenGL)的着色器程序。执行单元支持顶点和几何处理(例如,顶点程序、几何程序、顶点着色器)、像素处理(例如,像素着色器、碎片着色器)和通用处理(例如,计算和媒体着色器)。
执行单元阵列608A-N中的每一个执行单元对数据元素的数组进行操作。数据元素的数量是“执行尺寸”或用于指令的通道数量。执行通道是用于数据元素访问、掩码和指令内的流控制的执行的逻辑单元。通道的数量可独立于用于特定的图形处理器的物理算术逻辑单元(ALU)或浮点单元(FPU)的数量。在一些实施例中,执行单元608A-N支持整数和浮点数据类型。
执行单元指令集包括单指令多数据(SIMD)指令。各种数据元素可作为紧缩数据类型被存储在寄存器中,并且执行单元将基于元素的数据尺寸来处理各种元素。例如,当对256位宽的向量操作时,向量的256个位被存储在寄存器中,并且执行单元将此向量操作为四个单独的64位紧缩数据元素(四字(QW)尺寸的数据元素)、八个单独的32位紧缩数据元素(双字(DW)尺寸的数据元素)、十六个单独的16位紧缩数据元素(字(W)尺寸的数据元素)、或三十二个单独的8位数据元素(字节(B)尺寸的数据元素)。然而,不同的向量宽度和寄存器尺寸是可能的。
一个或多个内部指令高速缓存(例如,606)被包括在线程执行逻辑600中以对用于执行单元的线程指令进行高速缓存。在一些实施例中,一个或多个数据高速缓存(例如,612)被包括以对线程执行期间的线程数据进行高速缓存。在一些实施例中,采样器610被包括在内,以便为3D操作提供纹理采样,并为媒体操作提供媒体采样。在一些实施例中,采样器610包括专用纹理或媒体采样功能,用于在将所采样的数据提供至执行单元之前的采样过程期间处理纹理或媒体数据。
在执行期间,图形和媒体流水线经由线程繁衍和分派逻辑而将线程发起请求发送至线程执行逻辑600。在一些实施例中,线程执行逻辑600包括本地线程分派器604,所述本地线程分派器604仲裁来自图形和媒体流水线的线程发起请求,并且在一个或多个执行单元608A-N上实例化所请求的线程。例如,几何流水线(例如,图5的536)将顶点处理、曲面细分(tessellation)或集合处理线程分派至线程执行逻辑600(图6)。在一些实施例中,线程分派器604也可处理来自执行着色器程序的运行时线程繁衍请求。
一旦一组几何对象已被处理并光栅化为像素数据,就调用像素着色器602,以便进一步计算输出信息并使结果被写入输出表面(例如,颜色缓冲器、深度缓冲器、模板缓冲器等)。在一些实施例中,像素着色器602计算将跨光栅化的对象而被插值的各种顶点属性的值。在一些实施例中,像素着色器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定义执行单元将执行的操作。执行单元遍及(across)每一个操作数的多个数据元素地并行执行每一个指令。例如,响应于加法指令,执行单元遍及表示纹理元素或图片元素的每一个颜色通道地执行同时的加法操作。默认地,执行单元跨操作数的所有数据通道执行每一条指令。在一些实施例中,指令控制字段712允许对某些执行选项(诸如,通道选择(例如,预测)和数据通道顺序(例如,拌和(swizzle)))的控制。对于128位指令710,执行尺寸(exec-size)字段716限制将被并行地执行的数据通道的数量。在一些实施例中,执行尺寸字段716不可用于64位紧凑的指令格式730。
一些执行单元指令具有多达三个操作数,这三个操作数包括两个源操作数scr0722、scr1 722以及一个目的地718。在一些实施例中,执行单元支持双目的地指令,其中目的地中的一个是隐含的。数据操纵指令可具有第三源操作数(例如,SRC2 724),其中,指令操作码712确定源操作数的数量。指令的最后一个源操作数可以是利用指令传递的立即数(例如,硬编码的)值。
在一些实施例中,128位指令格式710包括访问/地址模式信息726,该访问/地址模式信息726例如指定是使用直接寄存器寻址模式还是间接寄存器寻址模式。当使用直接寄存器寻址模式时,直接由指令710中的位提供一个或多个操作数的寄存器地址。当使用间接寄存器寻址模式时,可基于字段726来计算一个或多个操作数的寄存器地址,该字段726指定指令中的地址寄存器值模式和/或地址立即数字段。在一个实施例中,访问/地址模式信息726可确定操作数模式以限定对指令的数据访问对齐。例如,当处于第一模式时,指令710可对源操作数与目的地操作数使用字节对齐寻址,并当中处于第二模式时,指令710可对所有源操作数与目的地操作数使用16字节对齐访问模式与1字节对齐寻址。访问模式,其中访问模式的字节对齐确定指令操作数的访问对齐。
在一些实施例中,基于操作码位字段对指令分组以简化操作码解码740。对于8位操作码,位4、5和6允许执行单元确定操作码的类型。示出的精确的操作码分组是示例。在一些实施例中,移动和逻辑操作码组742包括数据移动和逻辑指令(例如,移动(mov),比较(cmp))。在一些实施例中,移动和逻辑组742共享五个最高有效位(MSB),其中,移动(MOV)指令是0000xxxxb(例如,0x0x)形式的,并且逻辑指令是0001xxxxb(例如,0x01)形式的。流控制指令组744(例如,call,跳转(jmp))包括0010xxxxb(例如,0x20)形式的指令。混杂的指令组746包括指令的拌和,包括0011xxxxb(e.g.,0x30)形式的同步指令(例如,wait,send)。并行的数学指令组748包括0100xxxxb(e.g.,0x40)形式的逐成分的算术指令(例如,add,乘法(mul))。并行的数学组748跨数据通道并行地执行算术操作。向量数学组750包括0101xxxxb(e.g.,0x50)形式的算术指令(例如,dp4)。向量数学组对向量操作数执行算术(诸如,点积计算)。
图形流水线
图8是图形处理器800的另一实施例的框图。图8中具有与本文中的任意其他附图的元件相同的附图标记(或名称)的元件可以与本文中其他地方描述方式类似的任何方式进行操作或运行,但不限于此。
在一些实施例中,图形处理器800包括图形流水线820、媒体流水线830、显示引擎840、线程执行逻辑850、以及渲染输出流水线870。在一些实施例中,图形处理器800是包括一个或多个通用处理核的多核处理系统内的图形处理器。图形处理器通过对一个或多个控制寄存器(未示出)的寄存器写入或经由通过环形互连802而发布至图形处理器800的命令而受控。在一些实施例中,环形互连820将图形处理器800耦合至其他处理组件(诸如,其他图形处理器或通用处理器)。由命令流送器803解释来自环形互连802的命令,所述命令流送器803将指令供应至图形流水线820或媒体流水线830的各个组件。
在一些实施例中,命令流送器803指导顶点取出器805的操作,所述顶点取出器805从存储器读取顶点数据,并且执行由命令流送器803提供的顶点处理命令。在一些实施例中,顶点取出器805将顶点数据提供给顶点着色器807,所述顶点着色器807对每一个顶点执行坐标空间变换和照明操作。在一些实施例中,顶点取出器805和顶点着色器807通过经由线程分派器831将执行线程分派至执行单元852A、852B来执行顶点处理指令。
在一些实施例中,执行单元852A、852B是具有用于执行图形和媒体操作的指令集的向量处理器的阵列。在一些实施例中,执行单元852A、852B具有附连的L1高速缓存851,所述附连的L1高速缓存专用于每一个阵列或在多个阵列之间被共享。高速缓存可配置为数据高速缓存、指令高速缓存、或经分区以在不同的分区中包含数据和指令的单个高速缓存。
在一些实施例中,图形流水线820包括曲面细分组件,用于执行对3D对象的硬件加速的曲面细分。在一些实施例中,可编程壳体(hull)着色器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和相关联的(多个)高速缓存851、纹理和媒体采样器854、以及纹理/采样器高速缓存858经由数据端口856互连,以执行与处理器的渲染输出流水线组件的存储器访问和通信。在一些实施例中,采样器854、高速缓存851、858和执行单元852A、852B各自都具有分开的存储器访问路径。
在一些实施例中,渲染输出流水线870包含将基于顶点的对象转换为相关联的基于像素的表示的光栅化器和深度测试组件873。在一些实施例中,光栅化逻辑包括用于执行固定功能三角和直线光栅化的窗口器/掩码器单元。在一些实施例中,相关联的渲染和深度缓冲器高速缓存878、879也是可用的。像素操作组件877对数据执行基于像素的操作,但是在一些实例中,与2D操作相关联的像素操作(例如,利用混合(blend)进行的位块图像转移)由2D引擎841执行,或在显示时由显示控制器843使用上层的显示平面来替代。在一些实施例中,共享的L3高速缓存875可用于所有的图形组件,从而允许在不使用主系统存储器的情况下共享数据。
在一些实施例中,图形处理器媒体流水线830包括媒体引擎837和视频前端834。在一些实施例中,视频前端834从命令流送器803接收流水线命令。然而,在一些实施例中,媒体流水线830包括分开的命令流送器。在一些实施例中,视频前端834在将命令发送至媒体引擎837之前处理媒体命令。在一些实施例中,媒体引擎337包括线程繁衍功能,以便繁衍用于经由线程分派器831而分派至线程执行逻辑850的线程。
在一些实施例中,图形处理器800包括显示引擎840。在一些实施例中,显示引擎840在处理器800外部,并且经由环形互连802或某个其他互连总线或结构而与图形处理器耦合。在一些实施例中,显示引擎840包括2D引擎841和显示控制器843。在一些实施例中,显示引擎840包含能够独立于3D流水线操作的专用逻辑。在一些实施例中,显示控制器843与显示设备(未示出)耦合,所述显示设备可以是如在膝上型计算机中的系统集成的显示设备或经由显示设备连接器而附连的外部显示设备。
在一些实施例中,图形流水线820和媒体流水线830可配置以基于多个图形和媒体编程接口来执行操作,并且不专用于任何一个应用编程接口(API)。在一些实施例中,用于图形处理器的驱动器软件将专用于特定图形或媒体库的API调用转化为可由图形处理器处理的命令。在一些实施例中,为来自Khronos Group的开放图形库(OpenGL)和开放计算语言(OpenCL)、来自微软公司的Direct3D库提供支持,或者可为OpenGL和D3D两者提供支持。也可为开放源计算机视觉库(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能以流水线转储清除(flush)命令912开始,以使任何活动的流水线完成用于流水线的当前待定的命令。在一些实施例中,3D流水线922和媒体流水线924不并发地操作。执行流水线转储清除以使活动的图形流水线完成任何待定的命令。响应于流水线转储清除,用于图形处理器的命令解析器将暂停命令处理,直到活动的绘制引擎完成待定的操作且相关读取高速缓存被无效为止。任选地,渲染高速缓存中被标记为“脏”(dirty)的任何数据可转储清除至存储器在一些实施例中,流水线转储清除命令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将着色器执行线程分派至图形处理器执行单元。
在一些实施例中,3D流水线922经由执行934命令或事件来触发。在一些实施例中,寄存器写入触发命令执行。在一些实施例中,经由命令序列中的“go”(“走”)或“kick(“踢除”)命令来触发执行。在一个实施例中,使用流水线同步命令以通过图形流水线来转储清除命令序列来触发命令执行。3D流水线将为3D基元执行几何处理。一旦操作完成,得到的几何对象被光栅化,并且像素引擎对得到的像素上色。用于控制像素着色和像素后端操作的附加命令也可被包括以用于那些操作。
在一些实施例中,当执行媒体操作时,采样命令序列910跟随媒体流水线924路径。一般而言,用于媒体流水线924的编程的特定使用和方式取决于将执行的媒体或计算操作。在媒体解码期间,特定的媒体解码操作可卸载至媒体流水线。在一些实施例中,也可绕过媒体流水线,并且可使用由一个或多个通用处理核提供的资源完全地或部分地执行媒体解码。在一个实施例中,媒体流水线也包括用于通用图形处理器单元(GPGPU)操作的元件,其中,图形处理器用于使用与图形基元的渲染不是显式相关的计算着色器程序来执行SIMD向量操作。
在一些实施例中,以与3D流水线922类似的方式来配置媒体流水线924。媒体流水线状态命令940的集合被分派或置入到命令序列中并在媒体对象命令942之前。在一些实施例中,媒体流水线状态命令940包括用于配置将用于处理媒体对象的媒体流水线元件的数据。这包括用于配置媒体流水线内的视频解码和视频编码逻辑的数据,诸如,编码或解码格式。在一些实施例中,媒体流水线状态命令940也支持使用指向包含批量状态设置的“间接”状态元素的一个或多个指针。
在一些实施例中,媒体对象命令942提供指向用于由媒体流水线处理的媒体对象的指针。媒体对象包括包含待处理的视频数据的存储器缓冲器。在一些实施例中,在发布媒体对象命令942之前,所有媒体流水线状态都必须是有效的。一旦流水线状态经配置,并且媒体对象命令942经排队列,媒体流水线924就经由执行944命令或等效的执行事件(例如,寄存器写入)来触发。随后,可通过由3D流水线922或媒体流水线924提供的操作对来自媒体流水线924的输出进行后处理。在一些实施例中,以与媒体操作类似的方式来配置和执行GPGPU操作。
图形软件架构
图10示出根据一些实施例的用于数据处理系统的示例性图形软件架构1000。在一些实施例中,软件架构包括3D图形应用1010、操作系统1020以及至少一个处理器1030。在一些实施例中,处理器1030包括图形处理器1032以及一个或多个通用处理器核1034。图形应用1010和操作系统1020各自都在数据处理系统的系统存储器1050中执行。
在一些实施例中,3D图形应用1010包含一个或多个着色器程序,所述着色器程序包括着色器指令1012。着色器语言指令可以是高级着色器语言(诸如,高级着色器语言(HLSL)或OpenGL着色器语言(GLSL))中的。应用也包括适用于由通用处理器核1034执行的机器语言中的可执行指令1014。应用也包括由顶点数据定义的图形对象1016。
在一些实施例中,操作系统1020是来自微软公司的
Figure BDA0001306277540000211
Figure BDA0001306277540000212
操作系统、专属的类UNIX操作系统、或使用Linux内核的变体的开放源类UNIX操作系统。当Direct3DAPI在使用中时,操作系统1020使用前端着色器编译器1024以将HLSL中的任何着色器指令1012编译为低级着色器语言。编译可以是即时(just-in-time)(JIT)编译,或应用可执行着色器预编译。在一些实施例中,在3D图形应用1010的编译期间,高级着色器被编译为低级着色器。
在一些实施例中,用户模式图形驱动器1026包含后端着色器编译器1027以将着色器指令1012编译为硬件专用表示。当OpenGL API在使用中时,GLSL高级语言中的着色器指令1012被传递至用户模式图形驱动器1026以进行编译。在一些实施例中,用户模式图形驱动器1026使用操作系统内核模式函数1028来与内核模式图形驱动器1029通信。在一些实施例中,内核模式图形驱动器1029与图形处理器1032通信以分派命令和指令。
用于在处理浮点值时实现功率节省技术的的方法与装置
本文中所描述的本发明的各实施例包括用于寄存器堆(RF)和宽总线的低功率操作的技术。在一个实施例中,通过采用对返回零(RZ)操作的“1”减少以及对非返回零(NRZ)操作的切换减少来实现低功率操作。通过利用图形应用特定的数据特性,所提出的技术能够以可忽略的硬件开销(overhead)对RF实现10-20%且对宽总线实现5-10%的相当大的功率节省。
在图形工作负荷中,大多数值在红绿蓝α(RGBA)空间中,其中每个值被标准化成从0到1范围的的32位单精度浮点值。在IEEE 75432位浮点格式中,指数具有偏移127。这导致图形工作负荷中使用的值的两个统计特性。首先,32位值中的位25到位29处的五个指数位是高度相关的。如果那五个位(位25到位29)中的任一单个位是一,则很有可能五个位全都是1。其次,五个位全都是1的可能性非常高。通过利用这两个特性,所提出的技术将位数据极性以及数据转换可能性偏斜至使得硬件能够执行低功率操作的方向。在某些实现中,总线、与存储器块、0与1的操作、以及从0->1和1->0的不同切换可对不同的情况显示偏斜的功率/能量消耗。使用本文中所描述的技术可降低系统的操作功率。
注意到,当本发明的各实施例如上所述以32位值进行操作时,本公开的基本原理可应用于其他类型的值,包括但不限于,16位半精度浮点数的组、或64位双精度浮点数的组。
如图11中所示,其中可实现本发明的各实施例的架构包括图形处理单元1112,该图形处理单元具有执行逻辑1130,该执行逻辑用于执行需要浮点操作的线程1110,该需要浮点操作的线程1110经由线程分派单元1120被分派至执行逻辑1130。虽然为了简单起见,在图11中示出执行逻辑1130的单个实例,但是应当理解,GPU 1112可包括执行逻辑1130的多个实例,以用于并发地执行来自多个线程的程序代码(例如,图6中所示的GPU 600包括多个执行单元608A-N)。然而,本发明的基本原理不限于任何特定的图形处理器架构。
图11中的实施例中的浮点值被存储在一组寄存器1140中,该一组寄存器可以是通用寄存器堆(GRF)。在一个实施例中,多个浮点值可被紧缩到寄存器堆的每个寄存器内。在图11中所示的特定实施例中,八个浮点值(FPV)1100-1107被紧缩到每个寄存器内。作为示例,每个通用寄存器可以是256位宽,且每个浮点值可以是32位、单精度浮点值。当然,本发明的基本原理不限于任何特定的寄存器大小或浮点格式。因此,虽然该详细描述的剩余部分将采取32位的浮点格式,但是本发明的基本原理可被延伸至其他格式。
如图11中所示,在一个实施例中,当将浮点值写入寄存器堆1140和从寄存器堆1140读取浮点值时,执行逻辑1130分别利用编码/解码逻辑1135来实现本文中所描述的功率减少技术。虽然在图11中将编码/解码逻辑1135示作分开的实体,但是其可被直接集成在执行逻辑1130和/或寄存器堆1140内,同时仍然符合本发明的基本原理。
图12A示出32位单精度浮点格式1200定义,包括1位符号1201、8位指数1202、以及23位分数1203。图12B示出值0.125(行1)、0.25(行2),0.5(行3)以及1(行4)的表示示例。对于0.125与1之间的任何值,按照定义,位25到位29处的五个位应同时都为1。作为结果,在广泛使用0到1的范围内的数据的图形系统中,b25-b29处的五个指数位是高度相关的。如果那五个位(b25到b29)中的任一单个位是一,则很有可能所有的那五个位全都是1。此外,五个位全都是1的可能性非常高。
图13A-C示出编码/解码逻辑1135包括利用前述特性来减少能量消耗的电路的一个实施例。由该电路实现的技术减少了从寄存器1140读取1的操作以用于读取功率节省。对于每个技术,相同的实现用于编码(当写入到寄存器堆1140中)和解码数据(当从寄存器堆1140读取)两者。
在图13A(32位单元XOR)中,XOR逻辑1301-1303用于利用每个32位值中的位29对四个位(位28到位25)中的每一个进行异或运算(XOR)。为简单起见,仅示出值0、6和7。在图13B中,(256位单元XOR),值7的位29(8个值中的一个32位值)用于遍及(across)所有8个32位值(值7到值0)都进行异或运算。在此实施例中,五个XOR门用于值6到值0,并且四个XOR门用于值7。例如,五个XOR门1304用于对值7的位29与值6的位25-29中的每个进行异或运算,并且五个XOR门1305用于对值7的位29与值0的位25-29中的每一个进行异或运算。如所示,XOR门的数量对于值7是四个。
虽然图13A与图13B示出具有32位数的特定示例,但本发明的基本原理实际上可应用到任何数粒度。例如,这些技术可应用于32位单精度浮点数的组、16位半精度浮点数的组、或64位双精度浮点数的组,仅举几例。
因为每个值中从b29到b25的所有位的都是1的可能性高,所以简单反转(simpleinversion)也可在减少寄存器堆数据中的1的计数方面是有效的。图13C示出其中多个反相器1310-1312对每个浮点值(为简单起见仅示出值0、6和7)的位25-29的输出进行反转。最终结果是,来自这些位值的1被反相器1310-1312反转成0。
假设对于具有各自为32位的8个值的256位条目,如在图13A-C中所示的每个值中的位29到位25的五个位都为1,并且其他位都为0。在对条目的寄存器堆读取操作期间,有40个读取1的操作,因为1的总计数是40(8个值x 5个位)。图13A、13B与13C中所示的技术分别将条目中的1的总计数减少到8、1和0。因此,读取1的操作相应地减少。图13B中所示的技术(256位单元XOR)与图13A中所示的技术相比可需要更多的XOR门以及路由资源,因为值7中的位29被馈送到所有8个值的所有异或运算。注意,基于XOR的技术不增加1的计数,即使当输入数据模式一律是随机的。图13中的反转技术在实现中几乎不具有开销,因为反转信号可能已经可用,或者对信号的反转可在下游逻辑中容易地被优化。简单反转对于一些情况(例如,位29到位25全都为0)可能不是有益的。然而,平均而言,它仍然可得到显著的功率节省,因为图形工作负荷中的五个位显著地倾向于全为1。
虽然以上描述的实施例对位29与位25-28进行异或运算,但可选择其他位来与剩余的位值进行异或运算,同时符合本发明的基本原则。参考位可以是那些指定的一组的比特位置(位29-位25)中的任何值。例如,位25-28中的任一个可与来自位25-29中的剩余位进行异或运算,来实现相同的结果。
如图13A与图13B中所示的相同技术还减少了前一值与当前值之间的切换。切换减少导致了对于RF写操作与长/宽总线中的数据移动的功率节省。图14A-B示出了示例,其中使用基于XOR的技术,切换的数量从10(图14A)减少到2(图14B)。具体地,在没有实现本发明的实施例的情况下,从次数n-1到次数n+1产生10次切换,而使用本发明的实施例,在相同的次数增量期间产生2次切换。注意到,图13C中的反转技术不像图13A-B中的XOR技术那样减少转换的数量。
在当前英特尔图形架构中,存在其长度在大概几千微米范围内的若干总线且每个总线的宽度为数百微米。给定这些参数,本发明的各实施例可用于减少这些总线类型上的功率。
图15示出根据本发明的一个实施例的方法。该方法可在上述架构的情境内实现,但并不限于任何特定架构。
在1501处,图形数据内已知具有高度相关性的指定一组的比特位置被标识。相关性可基于被进行处理的图形数据的类型。例如,如上所述,在图形工作负荷中,大多数的值在红蓝绿α(RGBA)空间中,其中,每个值是从0到1范围的标准化的32位单精度浮点值,且其中,32位值中的位25到位29处的五个指数位是高度相关的(例如,如果这些五个位中的任一单个位是一,则很有可能五个位全都为1)。此外,五个位全都是1的可能性非常高。
在1502处,使用具有比原始数据格式更大数量的0的格式来编码图形数据,并将经编码的数据存储在寄存器内。如所述,在一个实施例中,一组8个32位浮点值可被紧缩到单个256位寄存器中。当然,本发明的基本原理不限于任何特定的浮点格式或寄存器大小。
在1503,当读取图形数据时,本发明的一个实施例使得来自指定的一组比特位置的数据被从寄存器中读取成为一组0,而不是一组1,藉此来节省功率。如上所述,这可通过对指定的一组比特位置中的值进行异或运算和/或通过简单地反转各值来实现(参见,例如,图13A-C)。如果随后数据被解码回其原始格式,则数据读出。
一个重要的观察是,在图形处理设计中,存在以RGBA的形式存储以及移动数据的许多RF和总线。因此,本文中所描述的本发明的实施例具有用于减少图形核的许多不同部分中的功率消耗的的高潜力。
虽然数据总线反转(DBI)可用于与本发明的实施例相同的目的,但是DBI技术与本发明的实施例相比具有若干显著的缺点。例如,DBI在位或线路的数量方面需要显著的开销,并因此对于RF来说是不现实的。例如,8位DBI(目前在DDR4和GDDR5中所使用的)每8个位需要一个附加的位。如果8位用于256位寄存器堆或总线,则需要32个附加位或线路。此外,DBI需要通常以加法器树(adder trees)形式构建的多数表决器模块(majority voterblock)。在硬件中表决器的实现在功率/计时/面积方面引发了显著的开销。最终,对于DBI交流(AC),前一值需要被保存在缓冲器中并与当前值进行比较。该缓冲器与比较逻辑是当前DBI实现中的开销。
相比之下,本文中所描述的本发明的实施例具有极低的开销,因为它们不需要维持数据的历史和/或选举机制。因此,不需要附加的位或信号,不需要多数表决器模块,并且不需要存储器寄存器或比较逻辑。同时,这些实施例通过利用图形数据的唯一特性可实现与DBI技术可比拟的功率节省。
在上述说明书中,已经参考特定示例性实施例描述了本发明。然而,显然可对这些实施例作出各种修改和改变,而不背离如所附权利要求所述的本发明的更宽泛精神和范围。因此,说明书和附图应被认为是说明性而非限制性意义。
本发明的多个实施例可包括上述各个步骤。可在可用于使通用或专用处理器执行这些步骤的机器可执行指令中具体化这些步骤。或者,可由包含用于执行这些步骤的硬连线逻辑的专用硬件组件,或可由被编程的计算机组件和自定义硬件组件的任何组合来执行这些步骤。
如本文中所描述的,指令可以指硬件的具体配置,例如,配置成用于执行某些操作或具有预定功能的专用集成电路(ASIC),或者被存储在被具体化在非暂态计算机可读介质中的存储器中的软件指令。因而,附图中示出的技术可以使用存储在一个或多个电子设备(例如,终端站、网络元件等等)并在其上执行的代码和数据来实现。此类电子设备使用诸如非瞬态计算机机器可读存储介质(例如,磁盘;光盘;随机存取存储器;只读存储器;闪存设备;相变存储器)之类的计算机机器可读介质和瞬态计算机机器可读通信介质(例如,电、光、声或其他形式的传播信号——诸如载波、红外信号、数字信号等)来(内部地和/或在网络上与其他电子设备之间进行)存储和传递代码和数据。另外,此类电子设备一般包括耦合至一个或多个其他组件的一个或多个处理器的集合,所述一个或多个其他组件例如是一个或多个存储设备(非暂态机器可读存储介质)、用户输入/输出设备(例如,键盘、触摸屏和/或显示器)以及网络连接。该组处理器和其他组件的耦合一般是通过一个或多个总线和桥(也称为总线控制器)实现的。存储设备和携带网络话务的信号分别表示一个或多个机器可读存储介质和机器可读通信介质。因此,给定电子设备的存储设备通常存储用于在该电子设备的一个或多个处理器的集合上执行的代码和/或数据。当然,本发明的实施例的一个或多个部分可使用软件、固件和/或硬件的不同组合来实现。贯穿此具体实施方式,为了进行解释,陈述了众多具体细节以提供对本发明的透彻理解。然而,对本领域技术人员显而易见的是,没有这些具体细节中的一些细节也可实施本发明。在某些实例中,并不详细描述公知的结构和功能,以免使本发明的主题模糊。因此,本发明的范围和精神应根据所附权利要求书来判断。

Claims (26)

1.一种用于在处理浮点值时实现功率节省技术的装置,包括:
图形处理单元(GPU),所述图形处理单元用于处理包括浮点数据的图形数据;
一组寄存器,所述组中的所述寄存器中的至少一个被划分用于存储所述浮点数据;以及
编码/解码逻辑,所述编码/解码逻辑用于减少从所述至少一个寄存器读取的二进制1值的数量,所述编码/解码逻辑包括一组异或(XOR)门,所述异或门使所述浮点数据内的指定的一组比特位置被读出为0而非1,
其中通过以下方式来应用所述XOR门:对第一浮点值的所述指定的一组比特位置内的第一位与所述第一浮点值的所述指定的一组比特位置内的每个附加位进行异或运算。
2.如权利要求1中所述的装置,其特征在于,通过以下方式来应用所述XOR门:对第一浮点值的所述指定的一组比特位置内的第一位与所述第一浮点值的所述指定一组比特位置内的每个附加位进行异或运算。
3.如权利要求2中所述的装置,其特征在于,每个浮点值包括32位单精度浮点值,其中,所述指定的一组比特位置包括位25到29,其中,所述第一位包括位29,且其中,与位29进行异或运算的每个附加位包括位25到28。
4.如权利要求1中所述的装置,其特征在于,所述第一浮点值的所述指定的一组比特位置内的所述第一位还与多个其他浮点值的所述指定的一组比特位置内的每个位进行异或运算。
5.如权利要求4中所述的装置,其特征在于,每个浮点值包括32位单精度浮点值,其中,所述指定的一组比特位置包括位25到29,其中所述第一位包括位29,且其中,与所述第一浮点值的位29进行异或运算的每个附加位包括位25到28,并且其中,与所述第一浮点值的位29进行异或运算的所述其他浮点值的所述位包括位25到29。
6.如权利要求1中所述的装置,其特征在于,所述编码/解码逻辑包括一组反相器,所述反相器用于使所述浮点数据内的所述指定的一组比特位置被读出为0而非1。
7.如权利要求1中所述的装置,其特征在于,基于被处理的图形数据的类型来选择所述指定的一组比特位置。
8.如权利要求7中所述的装置,其特征在于,基于所述一组比特位置内的所述位之间所确定的相关性来选择所述指定的一组比特位置。
9.如权利要求8中所述的装置,其特征在于,所述图形数据包括红绿蓝α(RGBA)数据。
10.如权利要求9中所述的装置,其特征在于,所述RGBA数据的浮点值包括从0到1范围的标准化的32位单精度浮点值。
11.如权利要求10中所述的装置,其特征在于,已知具有高度相关性的所述指定的一组比特位置包括所述32位单精度浮点值的指定的指数部分。
12.如权利要求11中所述的装置,其特征在于,所述指定的一组比特位置包括位25到29。
13.一种用于在处理浮点值时实现功率节省技术的方法,包括:
确定浮点图形数据的已知具有高度相关性的指定的一组比特位置,所述高度相关性关于指示在所述一组比特位置中的任一个具有所述比特值的情况下所指定的一组比特位置具有相同比特值的高度可能性,所指定的一组比特位置是浮点图形数据类型的所有比特位置的子集;
将所述浮点图形数据存储在一组寄存器中的至少一个寄存器内;以及
通过使所述浮点数据内的指定的一组比特位置从所述至少一个寄存器被读出为0而非1来减少从所述至少一个寄存器读取的二进制1值的数量。
14.如权利要求13中所述的方法,其特征在于,使所述浮点数据内的所述指定的一组比特位置从所述至少一个寄存器被读出为0而非1包括:对所述指定一组比特位置内的位进行异或运算。
15.如权利要求14中所述的方法,进一步包括:对第一浮点值的所述指定的一组比特位置内的第一位与所述第一浮点值的所述指定的一组比特位置内的每个附加位进行异或运算。
16.如权利要求15中所述的方法,其特征在于,每个浮点值包括32位单精度浮点值,其中,所述指定的一组比特位置包括位25到29,其中,所述第一位包括位29,并且其中,与位29进行异或运算的每个附加位包括位25到28。
17.如权利要求14中所述的方法,进一步包括:对第一浮点值的所述指定的一组比特位置内的第一位与所述第一浮点值的所述指定的一组比特位置内的每个附加位进行异或运算,且其中,所述第一浮点值的所述指定的一组比特位置内的所述第一位还与多个其他浮点值与所述指定的一组比特位置内的每个位进行异或运算。
18.如权利要求14中所述的方法,其特征在于,每个浮点值包括32位单精度浮点值,其中,所述指定的一组比特位置包括位25到29,其中第一位包括位29,且其中,与第一浮点值的位29进行异或运算的每个附加位包括位25到28,并且其中,与所述第一浮点值的位29进行异或运算的其他浮点值的所述位包括位25到29。
19.如权利要求13中所述的方法,其特征在于,使所述浮点数据内的所述指定的一组比特位置从所述至少一个寄存器被读出为0而非1包括:执行反转操作以使所述指定的一组比特位置反转。
20.如权利要求13中所述的方法,其特征在于,所述图形数据包括红绿蓝α(RGBA)数据。
21.如权利要求20中所述的方法,其特征在于,所述RGBA数据的浮点值包括从0到1范围的标准化的32位单精度浮点值。
22.如权利要求21中所述的方法,其特征在于,已知具有高度相关性的所述指定的一组比特位置包括所述32位单精度浮点值的指定的指数部分。
23.如权利要求13中所述的方法,其特征在于,所述指定的一组比特位置包括位25到29。
24.一种用于在处理浮点值时实现功率节省技术的系统,包括:
存储器,所述存储器用于存储指令与包括浮点值的图形数据;
高速缓存,所述高速缓存具有用于缓存所述指令与图形数据的多个高速缓存层级;
网络接口,所述网络接口通过网络通信地耦合所述系统;
输入/输出接口,所述输入/输出接口用于从用户接收输入并响应地使包括图形操作的操作被执行;以及
图形处理单元(GPU),所述图形处理单元用于处理包括所述浮点数据的所述图形数据;
一组寄存器,所述组中的所述寄存器中的至少一个被划分用于存储所述浮点数据;以及
编码/解码逻辑,所述编码/解码逻辑用于减少从所述至少一个寄存器读取的二进制1值的数量,所述编码/解码逻辑包括一组异或(XOR)门,所述异或门使所述浮点数据内的指定的一组比特位置被读出为0而非1,
其中通过以下方式来应用所述XOR门:对第一浮点值的所述指定的一组比特位置内的第一位与所述第一浮点值的所述指定的一组比特位置内的每个附加位进行异或运算。
25.一种计算机可读存储介质,所述计算机可读存储介质包括存储在其上的指令,所述指令在被计算机执行时,使得所述计算机执行如权利要求13-23中任一项所述的方法。
26.一种计算机实现的系统,包括多个装置,所述多个装置分别用于执行如权利要求13-23中任一项所述的方法中的对应步骤。
CN201580064719.4A 2014-12-23 2015-11-23 用于在处理浮点值时实现功率节省技术的装置与方法 Active CN107004252B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/581,600 2014-12-23
US14/581,600 US9779465B2 (en) 2014-12-23 2014-12-23 Apparatus and method for implementing power saving techniques when processing floating point values
PCT/US2015/062067 WO2016105762A1 (en) 2014-12-23 2015-11-23 Apparatus and method for implementing power saving techniques when processing floating point value

Publications (2)

Publication Number Publication Date
CN107004252A CN107004252A (zh) 2017-08-01
CN107004252B true CN107004252B (zh) 2021-07-20

Family

ID=56130008

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580064719.4A Active CN107004252B (zh) 2014-12-23 2015-11-23 用于在处理浮点值时实现功率节省技术的装置与方法

Country Status (4)

Country Link
US (1) US9779465B2 (zh)
EP (1) EP3238001A4 (zh)
CN (1) CN107004252B (zh)
WO (1) WO2016105762A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11228769B2 (en) 2013-06-03 2022-01-18 Texas Instruments Incorporated Multi-threading in a video hardware engine
US10528517B1 (en) 2018-08-09 2020-01-07 Qualcomm Incorporated Systems and methods for power conservation in a SOUNDWIRE audio bus through pattern recognition
US10359827B1 (en) 2018-08-15 2019-07-23 Qualcomm Incorporated Systems and methods for power conservation in an audio bus

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6608779B1 (en) * 2000-06-02 2003-08-19 Intel Corporation Method and apparatus for low power memory
CN103597519A (zh) * 2011-02-17 2014-02-19 麦特尔有限公司 用于生成服装合体性可视化的虚拟身体模型的计算机实现方法和系统
US20140143564A1 (en) * 2012-11-21 2014-05-22 Nvidia Corporation Approach to power reduction in floating-point operations

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6633970B1 (en) * 1999-12-28 2003-10-14 Intel Corporation Processor with registers storing committed/speculative data and a RAT state history recovery mechanism with retire pointer
US6922769B2 (en) * 2002-12-23 2005-07-26 Intel Corporation Apparatus and method for reduction of power consumption in OS that use flat segmentation memory model
US7058830B2 (en) 2003-03-19 2006-06-06 International Business Machines Corporation Power saving in a floating point unit using a multiplier and aligner bypass
US7979681B2 (en) * 2007-11-20 2011-07-12 Qualcomm Incorporated System and method of selectively accessing a register file
US8255726B2 (en) 2008-07-18 2012-08-28 International Business Machines Corporation Zero indication forwarding for floating point unit power reduction
US8902677B2 (en) 2012-12-10 2014-12-02 Freescale Semiconductor, Inc. Reducing the power consumption of memory devices
US20140355665A1 (en) * 2013-05-31 2014-12-04 Altera Corporation Adaptive Video Reference Frame Compression with Control Elements
US9582354B2 (en) * 2014-01-28 2017-02-28 Infineon Technologies Ag Apparatus and method for improving data storage by data inversion
US9252802B2 (en) * 2014-02-07 2016-02-02 Qualcomm Incorporated Encoding for partitioned data bus

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6608779B1 (en) * 2000-06-02 2003-08-19 Intel Corporation Method and apparatus for low power memory
CN103597519A (zh) * 2011-02-17 2014-02-19 麦特尔有限公司 用于生成服装合体性可视化的虚拟身体模型的计算机实现方法和系统
US20140143564A1 (en) * 2012-11-21 2014-05-22 Nvidia Corporation Approach to power reduction in floating-point operations
CN103838549A (zh) * 2012-11-21 2014-06-04 辉达公司 在浮点操作中功率降低的方法

Also Published As

Publication number Publication date
US9779465B2 (en) 2017-10-03
EP3238001A1 (en) 2017-11-01
EP3238001A4 (en) 2018-08-01
WO2016105762A1 (en) 2016-06-30
CN107004252A (zh) 2017-08-01
US20160180489A1 (en) 2016-06-23

Similar Documents

Publication Publication Date Title
CN106575431B (zh) 用于高度高效的图形处理单元(gpu)执行模型的方法和装置
KR102572583B1 (ko) 멀티 코어 컴퓨팅 아키텍처에서 그래픽 작업부하를 가속화하기 위한 메커니즘
CN106575430B (zh) 用于像素哈希的方法和装置
US9928076B2 (en) Method and apparatus for unstructured control flow for SIMD execution engine
WO2017039864A1 (en) Compiler optimization to reduce the control flow divergence
CN106662999B (zh) 用于simd结构化分支的方法和装置
US20160283549A1 (en) Value sorter
US9412195B2 (en) Constant buffer size multi-sampled anti-aliasing depth compression
US20160188491A1 (en) Apparatus and method for asynchronous tile-based rendering control
CN107004294B (zh) 用于高吞吐量栅格器的方法和装置
EP3180691A1 (en) Facilitating dynamic thread-safe operations for variable bit-length transactions on computing devices
US9754342B2 (en) Method and apparatus for parallel pixel shading
US20170178278A1 (en) Method and apparatus for updating a shader program based on current state
CN107004252B (zh) 用于在处理浮点值时实现功率节省技术的装置与方法
US9633452B2 (en) Resolving multi-sampled anti-aliasing buffers into single sampled buffers
CN108352051B (zh) 促进对计算装置处的捆绑状态的高效图形命令处理
US10269154B2 (en) Rasterization based on partial spans
US10339624B2 (en) Reversed polish notation processing elements
US9952901B2 (en) Power efficient hybrid scoreboard method

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