CN112334878A - 用于虚拟化显示器的装置和方法 - Google Patents
用于虚拟化显示器的装置和方法 Download PDFInfo
- Publication number
- CN112334878A CN112334878A CN201880095009.1A CN201880095009A CN112334878A CN 112334878 A CN112334878 A CN 112334878A CN 201880095009 A CN201880095009 A CN 201880095009A CN 112334878 A CN112334878 A CN 112334878A
- Authority
- CN
- China
- Prior art keywords
- display
- frame buffer
- driver
- graphics
- descriptor information
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 52
- 239000000872 buffer Substances 0.000 claims abstract description 119
- 238000012545 processing Methods 0.000 claims abstract description 88
- 238000003860 storage Methods 0.000 claims description 14
- 230000015654 memory Effects 0.000 description 92
- 230000006870 function Effects 0.000 description 84
- 238000010586 diagram Methods 0.000 description 22
- 238000013461 design Methods 0.000 description 20
- 230000008569 process Effects 0.000 description 20
- 238000004891 communication Methods 0.000 description 18
- 238000007667 floating Methods 0.000 description 18
- 239000012634 fragment Substances 0.000 description 15
- 239000000758 substrate Substances 0.000 description 10
- 230000002093 peripheral effect Effects 0.000 description 9
- 238000009877 rendering Methods 0.000 description 8
- 238000007726 management method Methods 0.000 description 7
- 230000001133 acceleration Effects 0.000 description 5
- 238000003491 array Methods 0.000 description 5
- 238000010801 machine learning Methods 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 238000004088 simulation Methods 0.000 description 5
- 238000012549 training Methods 0.000 description 5
- 239000004744 fabric Substances 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000012360 testing method Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000013528 artificial neural network Methods 0.000 description 3
- 230000003190 augmentative effect Effects 0.000 description 3
- 239000003795 chemical substances by application Substances 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000005070 sampling Methods 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 238000011144 upstream manufacturing Methods 0.000 description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 239000003086 colorant Substances 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 238000012805 post-processing Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 208000019300 CLIPPERS Diseases 0.000 description 1
- 239000004593 Epoxy Substances 0.000 description 1
- 241000492493 Oxymeris Species 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 208000021930 chronic lymphocytic inflammation with pontine perivascular enhancement responsive to steroids Diseases 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/14—Digital output to display device ; Cooperation and interconnection of the display device with other functional units
- G06F3/1407—General aspects irrespective of display type, e.g. determination of decimal point position, display with fixed or driving decimal point, suppression of non-significant zeros
-
- 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/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
- G06F9/452—Remote windowing, e.g. X-Window System, desktop virtualisation
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/001—Arbitration of resources in a display system, e.g. control of access to frame buffer by video controller and/or main processor
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/003—Details of a display terminal, the details relating to the control arrangement of the display terminal and to the interfaces thereto
- G09G5/006—Details of the interface to the display terminal
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control 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/363—Graphics controllers
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control 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/39—Control of the bit-mapped memory
- G09G5/393—Arrangements for updating the contents of the bit-mapped memory
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control 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/39—Control of the bit-mapped memory
- G09G5/395—Arrangements specially adapted for transferring the contents of the bit-mapped memory to the screen
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2370/00—Aspects of data communication
- G09G2370/02—Networking aspects
- G09G2370/022—Centralised management of display operation, e.g. in a server instead of locally
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)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Multimedia (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
Abstract
一种用于实现虚拟显示器的装置和方法。例如,图形处理装置的一个实施例包括:至少一个配置寄存器,所述至少一个配置寄存器用于存储第一客户机的帧缓冲器描述符信息,所述第一客户机在主机处理器的虚拟化执行环境中的第一虚拟机(VM)上运行,所述帧缓冲器描述符信息用于指示指派给所述第一客户机的一个或多个显示管道;以及执行电路,所述执行电路用于执行指派给所述第一客户机的第一驱动器,所述第一客户机用于根据所述帧缓冲器描述符信息使用所述第一驱动器在与所述显示管道中的一个显示管道相关联的平面中显示帧缓冲器。
Description
技术领域
本发明一般涉及图形处理器的领域。更特别地,本发明涉及用于虚拟化显示器的装置和方法。
背景技术
单根I/O虚拟化(SR-IOV)如今用于实现虚拟化图形处理单元(GPU)。这是通过定义虚拟化PCI Express(PCIe)设备以用于在PCIe总线上暴露一个物理功能(PF)加上多个虚拟功能(VF)来实现的。
在这样的系统中,VF显示模型被用于通过直接将客户机帧缓冲器发到本地监测器或将客户机帧缓冲器信息暴露给主机来驱动虚拟机(VM)中的本地显示功能性。例如,在当前的交通工具中信息娱乐(IVI)系统中,存在这样的趋势:使用虚拟化技术来整合显示安全度量(例如,速度、扭矩等)的安全关键数字仪器集群连同显示信息娱乐应用的一些IVI系统。在这种架构中,GPU在不同的VM之间共享其计算和显示能力,使得每个VM可以直接将其图形用户界面发到相关联的显示面板。
在云服务器用例中,上游显示器将客户机帧缓冲器作为DMA-BUF文件描述符暴露给主机用户空间。然后,可以通过主机侧上的现有媒体或图形栈经由远程协议来访问、渲染和/或流传送客户机帧缓冲器。
附图说明
可以结合附图从以下详细描述中获得对本发明的更好理解,在附图中:
图1是具有处理器的计算机系统的实施例的框图,该处理器具有一个或多个处理器核和图形处理器;
图2是处理器的一个实施例的框图,该处理器具有一个或多个处理器核、集成存储器控制器,以及集成图形处理器;
图3是图形处理器的一个实施例的框图,该图形处理器可以是分立的图形处理单元,或者可以是与多个处理核一起集成的图形处理器;
图4是用于图形处理器的图形处理引擎的实施例的框图;
图5是图形处理器的另一实施例的框图;
图6A-B是包括处理元件的阵列的线程执行逻辑的框图;
图7图示了根据实施例的图形处理器执行单元指令格式;
图8是图形处理器的另一实施例的框图,该图形处理器包括图形流水线、媒体流水线、显示引擎、线程执行逻辑以及渲染输出流水线;
图9A是图示了根据实施例的图形处理器命令格式的框图;
图9B是图示了根据实施例的图形处理器命令序列的框图;
图10图示了根据实施例的用于数据处理系统的示例性图形软件架构;
图11A-B图示了可以被用来制造用于执行根据实施例的操作的集成电路的示例性IP核开发系统;
图12图示了根据实施例的可以使用一个或多个IP核来制造的示例性片上系统集成电路;
图13A-B图示了可以使用一个或多个IP核来制造的片上系统集成电路的示例性图形处理器;
图14A-B图示了使用一个或多个IP核来制造的片上系统集成电路的附加示例性图形处理器架构;
图15图示了包括多频顶点着色器的架构的一个实施例;
图16图示了用于顶点着色的方法的一个实施例;
图17图示了根据本发明的一个实施例的方法;
图18图示了用于实现本发明的一个实施例的伪代码;
图19图示了包括不同类型的顶点着色器的架构的一个实施例;
图20图示了本发明的一个实施例,其中在不同顶点着色器之间具有特定互连集合;以及
图21图示了表示本发明的一个实施例的操作的伪代码。
具体实施方式
在以下描述中,出于解释的目的,阐述众多具体细节以便提供对下面描述的本发明的实施例的透彻理解。然而,对于本领域技术人员来说将显然的是,可以在没有这些具体细节中的某些具体细节的情况下实践本发明的实施例。在其它实例中,以框图形式示出公知的结构和设备以避免使本发明的实施例的根本原理模糊。
示例性图形处理器架构和数据类型
系统概述
图1是根据实施例的处理系统100的框图。在各种实施例中,系统100包括一个或多个处理器102以及一个或多个图形处理器108,并且可以是单个处理器台式系统、多处理器工作站系统或具有大量处理器102或处理器核107的服务器系统。在一个实施例中,系统100是被结合在供移动设备、手持式设备或嵌入式设备中使用的片上系统(SoC)集成电路内的处理平台。
在一个实施例中,系统100可以包括下述各项或被结合在下述各项内:基于服务器的游戏平台;游戏控制台,其包括游戏和媒体控制台、移动游戏控制台、手持式游戏控制台或在线游戏控制台。在一些实施例中,系统100是移动电话、智能电话、平板计算设备或移动因特网设备。处理系统100还可以包括可穿戴设备、与其耦合或被集成在其内,该可穿戴设备诸如智能手表可穿戴设备、智能眼镜设备、增强现实设备或虚拟现实设备。在一些实施例中,处理系统100是电视或机顶盒设备,该电视或机顶盒设备具有一个或多个处理器102以及由一个或多个图形处理器108生成的图形界面。
在一些实施例中,一个或多个处理器102各自包括用以处理指令的一个或多个处理器核107,所述指令在被执行时执行系统和用户软件的操作。在一些实施例中,一个或多个处理器核107中的每个处理器核被配置成处理专用指令集109。在一些实施例中,指令集109可以促进复杂指令集计算(CISC)、精简指令集计算(RISC)、或经由超长指令字(VLIW)的计算。多个处理器核107可以各自处理不同的指令集109,该指令集109可以包括用以促进其它指令集的仿真的指令。处理器核107还可以包括其它处理设备,诸如数字信号处理器(DSP)。
在一些实施例中,处理器102包括高速缓冲存储器104。取决于架构,处理器102可以具有单个内部高速缓存或多级内部高速缓存。在一些实施例中,在处理器102的各种组件当中共享高速缓冲存储器。在一些实施例中,处理器102还使用外部高速缓存(例如,3级(L3)高速缓存或末级高速缓存(LLC))(未示出),可以使用已知的高速缓存一致性技术来在处理器核107当中共享该外部高速缓存。附加地,寄存器堆106被包括在处理器102中,其可以包括用于存储不同类型的数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器)。一些寄存器可以是通用寄存器,而其它寄存器可以专用于处理器102的设计。
在一些实施例中,一个或多个处理器102与一个或多个接口总线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可以是如在移动电子设备或膝上型设备中的内部显示设备或经由显示接口(例如,DisplayPort等)附接的外部显示设备中的一个或多个。在一个实施例中,显示设备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包括可选的传统I/O控制器140,其用于将传统(例如,个人系统2(PS/2))设备耦合到系统。平台控制器中枢130还可以连接到一个或多个通用串行总线(USB)控制器142、连接输入设备(诸如键盘和鼠标143组合)、拍摄装置144或其它USB输入设备。
将领会的是,所示出的系统100是示例性的而非限制性的,因为还可以使用不同地配置的其它类型的数据处理系统。例如,存储器控制器116和平台控制器中枢130的实例可以被集成到分立的外部图形处理器中,该分立的外部图形处理器诸如外部图形处理器112。在一个实施例中,平台控制器中枢130和/或存储器控制器116可以在一个或多个处理器102的外部。例如,系统100可以包括:外部存储器控制器116和平台控制器中枢130,其可以被配置为与(一个或多个)处理器102通信的系统芯片组内的存储器控制器中枢和外围控制器中枢。
图2是具有一个或多个处理器核202A-202N、集成存储器控制器214以及集成图形处理器208的处理器200的实施例的框图。图2的具有与本文中任何其它附图的元件相同的参考编号(或名称)的那些元件可以采用与在本文中其它地方描述的方式类似的任何方式来操作或起作用,但是不限于这样。处理器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),该功率控制单元(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互连中的至少一种,其包括封装上I/O互连,所述封装上I/O互连促进各种处理器组件与高性能嵌入式存储器模块218(诸如eDRAM模块)之间的通信。在一些实施例中,处理器核202A-202N中的每个处理器核以及图形处理器208将嵌入式存储器模块218用作共享末级高速缓存。
在一些实施例中,处理器核202A-202N是执行相同指令集架构的同构核。在另一实施例中,处理器核202A-202N在指令集架构(ISA)方面是异构的,其中,处理器核202A-202N中的一个或多个执行第一指令集,而其它核中的至少一个执行第一指令集的子集或不同的指令集。在一个实施例中,处理器核202A-202N在微架构方面是同构的,其中,具有相对较高功耗的一个或多个核与具有较低功耗的一个或多个功率核耦合。附加地,处理器200可以被实现在一个或多个芯片上或者被实现为除其它组件之外还具有所图示的组件的SoC集成电路。
图3是图形处理器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-4 AVC)、以及电影与电视工程师协会(SMPTE)421M/VC-1、和联合图像专家组(JPEG)格式(诸如JPEG)、和运动JPEG(MJPEG)格式。
在一些实施例中,图形处理器300包括用以执行二维(2D)栅格化器操作(包括例如位边界块传输)的块图像传输(BLIT)引擎304。然而,在一个实施例中,使用图形处理引擎(GPE)310的一个或多个组件来执行2D图形操作。在一些实施例中,GPE 310是用于执行图形操作的计算引擎,该图形操作包括三维(3D)图形操作和媒体操作。
在一些实施例中,GPE 310包括:用于执行3D操作的3D流水线312,诸如使用作用于3D图元形状(例如,矩形、三角形等)的处理功能来渲染三维图像和场景。3D流水线312包括可编程和固定功能元件,其执行元件内的各种任务和/或将执行线程产生(spawn)到3D/媒体子系统315。虽然3D流水线312可以被用来执行媒体操作,但是GPE 310的实施例还包括媒体流水线316,该媒体流水线316被具体地用来执行媒体操作,诸如视频后处理和图像增强。
在一些实施例中,媒体流水线316包括固定功能或可编程逻辑单元,其用以代替或代表视频编解码器引擎306来执行一个或多个专门的媒体操作,诸如视频解码加速、视频反交错(de-interlace)以及视频编码加速。在一些实施例中,媒体流水线316附加地包括线程产生单元以产生用于在3D/媒体子系统315上执行的线程。所产生的线程执行针对在3D/媒体子系统315中所包括的一个或多个图形执行单元上的媒体操作的计算。
在一些实施例中,3D/媒体子系统315包括:用于执行3D流水线312和媒体流水线316所产生的线程的逻辑。在一个实施例中,流水线向3D/媒体子系统315发送线程执行请求,该3D/媒体子系统315包括用于仲裁各种请求并将各种请求分派到可用的线程执行资源的线程分派逻辑。执行资源包括用以处理3D和媒体线程的图形执行单元的阵列。在一些实施例中,3D/媒体子系统315包括用于线程指令和数据的一个或多个内部高速缓存。在一些实施例中,该子系统还包括共享存储器(包括寄存器和可寻址存储器)以在线程之间共享数据并存储输出数据。
图形处理引擎
图4是根据一些实施例的图形处理器的图形处理引擎410的框图。在一个实施例中,图形处理引擎(GPE)410是图3中所示出的GPE 310的一种版本。图4的具有与本文中任何其它附图的元件相同的参考编号(或名称)的元件可以采用与在本文中其它地方描述的方式类似的任何方式来操作或起作用,但是不限于这样。例如,图示了图3的3D流水线312和媒体流水线316。媒体流水线316在GPE 410的一些实施例中是可选的,并且可以不显式地包括在GPE 410内。例如并且在至少一个实施例中,单独的媒体和/或图形处理器被耦合至GPE410。
在一些实施例中,GPE 410与命令流转化器(streamer)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来处理一个或多个着色器(shader)程序的固定功能和可编程逻辑,该着色器程序诸如顶点着色器、几何着色器、像素着色器、片段着色器、计算着色器或其它着色器程序。图形核阵列414提供执行资源的统一块供处理这些着色器程序中使用。图形核阵列414的(一个或多个)图形核415A-414B内的多用途执行逻辑(例如,执行单元)包括对各种3D API着色器语言的支持,并且可以执行与多个着色器相关联的多个同时执行线程。
在一些实施例中,图形核阵列414还包括用以执行诸如视频和/或图像处理之类的媒体功能的执行逻辑。在一个实施例中,执行单元附加地包括可编程以执行除图形处理操作外的并行通用计算操作的通用逻辑。通用逻辑可以与图1的(一个或多个)处理器核107或如图2中的核202A-202N内的通用逻辑并行地或结合地执行处理操作。
由在图形核阵列414上执行的线程生成的输出数据可以将数据输出到统一返回缓冲器(URB)418中的存储器。URB 418可以存储多个线程的数据。在一些实施例中,URB 418可以被用来在图形核阵列414上执行的不同线程之间发送数据。在一些实施例中,URB 418可以附加地被用于图形核阵列上的线程与共享功能逻辑420内的固定功能逻辑之间的同步。
在一些实施例中,图形核阵列414是可缩放的,使得该阵列包括可变数量的图形核,这些图形核各自基于GPE 410的目标功率和性能水平而具有可变数量的执行单元。在一个实施例中,执行资源是动态可缩放的,使得可以按需要来启用或禁用执行资源。
图形核阵列414与共享功能逻辑420耦合,该共享功能逻辑420包括在图形核阵列中的图形核之间共享的多个资源。共享功能逻辑420内的共享功能是向图形核阵列414提供专用补充功能的硬件逻辑单元。在各种实施例中,共享功能逻辑420包括但不限于采样器421、数学422和线程间通信(ITC)423逻辑。附加地,一些实施例实现共享功能逻辑420内的一个或多个高速缓存425。
在对于给定专用功能的需求对于图形核阵列414内的内含物而言不足够的情况下,实现共享功能。代替地,该专用功能的单个实例化被实现为共享功能逻辑420中的独立实体,并且在图形核阵列414内的执行资源当中共享。在图形核阵列414之间共享并且被包括在图形核阵列414内的精确的一组功能跨实施例而变化。在一些实施例中,图形核阵列414广泛使用的共享功能逻辑420内的特定共享功能可以被包括在图形核阵列414内的共享功能逻辑416内。在各种实施例中,图形核阵列414内的共享功能逻辑416可以包括共享功能逻辑420内的一些或全部逻辑。在一个实施例中,共享功能逻辑420内的全部逻辑元件可以在图形核阵列414的共享功能逻辑416内复制。在一个实施例中,排除共享功能逻辑420以支持图形核阵列414内的共享功能逻辑416。
图5是根据本文中描述的一些实施例的图形处理器核500的硬件逻辑的框图。图5的具有与本文中任何其它附图的元件相同的参考编号(或名称)的元件可以采用与在本文中其它地方描述的方式类似的任何方式来操作或起作用,但是不限于这样。在一些实施例中,图示的图形处理器核500被包括在图4的图形核阵列414内。图形处理器核500(有时被称为核薄片(core slice))可以是模块化图形处理器内的一个或多个图形核。图形处理器核500是示例性的一个图形核薄片,并且如本文中描述的图形处理器基于目标功率和性能包线可以包括多个图形核薄片。每个图形处理器核500可以包括与多个子核501A-501F(也被称为子薄片)耦合的固定功能块530,其包括通用和固定功能逻辑的模块化块。
在一些实施例中,固定功能块530包括:几何/固定功能流水线536,其可以由图形处理器核500中的全部子核共享,例如,在较低性能和/或较低功率图形处理器实现中。在各种实施例中,几何/固定功能流水线536包括3D固定功能流水线(例如,如图3和图4中的3D流水线312),视频前端单元、线程产生器(spawner)和线程分派器,以及统一返回缓冲器管理器,其管理统一返回缓冲器,诸如图4的统一返回缓冲器418。
在一个实施例中,固定功能块530还包括图形SoC接口537、图形微控制器538和媒体流水线539。图形SoC接口537提供图形处理器核500与片上系统集成电路内的其它处理器核之间的接口。图形微控制器538是可编程子处理器,其可配置成管理图形处理器核500的各种功能,其包括线程分派、调度和抢占(pre-emption)。媒体流水线539(例如,图3和图4的媒体流水线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核上执行的主机软件可以将工作负荷提交给调用适当的图形引擎上的调度操作的多个图形处理器门铃之一。调度操作包括确定接下来要运行哪一个工作负荷、将工作负荷提交给命令流转化器、抢占在引擎上运行的现有工作负荷、监测工作负荷的进展以及在工作负荷完成时通知主机软件。在一个实施例中,图形微控制器538还可以促进图形处理器核500的低功率或空闲状态,从而为图形处理器核500提供跨低功率状态转换独立于操作系统和/或系统上的图形驱动程序软件而保存和恢复图形处理器核500内的寄存器的能力。
图形处理器核500可以具有大于或小于图示的子核501A-501F的子核,高达N个模块化子核。对于每组N个子核,图形处理器核500还可以包括共享功能逻辑510、共享和/或高速缓冲存储器512、几何/固定功能流水线514,以及用以加速各种图形并计算处理操作的附加固定功能逻辑516。共享功能逻辑510可以包括与图4的共享功能逻辑420相关联的逻辑单元(例如,采样器、数学和/或线程间通信逻辑),其可以由图形处理器核500内的每N个子核共享。共享和/或高速缓冲存储器512可以是图形处理器核500内的该组N个子核501A-501F的末级高速缓存,并且还可以用作可由多个子核访问的共享存储器。几何/固定功能流水线514可以替代几何/固定功能流水线536而被包括在固定功能块530内,并且可以包括相同或类似的逻辑单元。
在一个实施例中,图形处理器核500包括:附加的固定功能逻辑516,其可以包括供图形处理器核500使用的各种固定功能加速逻辑。在一个实施例中,附加固定功能逻辑516包括供仅位置着色(position only shading)中使用的附加几何流水线。在仅位置着色中,存在两个几何流水线,几何/固定功能流水线516、536内的完整几何流水线以及剔除(cull)流水线,其是可以被包括在附加固定功能逻辑516内的附加几何流水线。在一个实施例中,剔除流水线是完整几何流水线的削减版本。完整流水线和剔除流水线可以执行同一应用的不同实例,每个实例具有单独的上下文。仅位置着色可以隐藏已丢弃三角形的长剔除运行,从而使得在某些实例中能够更早地完成着色。例如并且在一个实施例中,附加固定功能逻辑516内的剔除流水线逻辑可以与主应用并行地执行位置着色器,并且通常比完整流水线更快地生成关键结果,因为剔除流水线仅提取并着色顶点的位置属性,而不执行像素到帧缓冲的栅格化和渲染。剔除流水线可以使用生成的关键结果来计算全部三角形的可见性信息,而不管那些三角形是否被剔除。完整流水线(其在这种实例中可以被称为重放流水线)可以消耗可见性信息以跳过剔除的三角形,从而仅着色被最终传递到栅格化阶段的可见三角形。
在一个实施例中,附加固定功能逻辑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,以使得在线程组内执行的线程能够使用芯片上存储器的公共池来执行。
执行单元
图6A-6B图示了线程执行逻辑600,其包括根据本文中描述的实施例的图形处理器核中采用的处理元件的阵列。图6A-6B的具有与本文中任何其它附图的元件相同的参考编号(或名称)的元件可以采用与在本文中其它地方描述的方式类似的任何方式来操作或起作用,但是不限于这样。图6A图示了线程执行逻辑600的概述,其可以包括利用图5的每个子核501A-501F图示的硬件逻辑的变体。图6B图示了执行单元的示例性内部细节。
如在图6A中图示的,在一些实施例中,线程执行逻辑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中的一个或多个执行单元上使所请求的线程实例化。例如,几何流水线可以将顶点、曲面细分(tessellation)或几何着色器分派至线程执行逻辑以供处理。在一些实施例中,线程分派器604还可以处理来自执行着色器程序的运行时线程产生请求。
在一些实施例中,执行单元608A-608N支持指令集(该指令集包括对许多标准3D图形着色器指令的本机支持),使得在最小的转化情况下执行来自图形库(例如,Direct 3D和OpenGL)的着色器程序。执行单元支持顶点和几何处理(例如,顶点程序、几何程序、顶点着色器)、像素处理(例如,像素着色器、片段着色器)以及通用处理(例如,计算和媒体着色器)。执行单元608A-608N中的每一个都能够多发布(multi-issue)单指令多数据(SIMD)执行,并且多线程操作使得能够在面对较高时延存储器访问时实现高效的执行环境。每个执行单元内的每个硬件线程具有专用高带宽寄存器堆和相关联的独立线程状态。对能够进行整数、单精度和双精度浮点运算、SIMD分支能力、逻辑运算、超越数运算和其它杂项运算的流水线来说,执行是每时钟多发布。在等待来自存储器或共享功能之一的数据时,执行单元608A-608N内的依赖性逻辑使等待线程休眠,直到所请求的数据已返回为止。在等待线程正在休眠时,硬件资源可以致力于处理其它线程。例如,在与顶点着色器操作相关联的延迟期间,执行单元可以执行针对像素着色器、片段着色器或者另一种类型的着色器程序(包括不同顶点着色器)的操作。
执行单元608A-608N中的每个执行单元对数据元素的阵列进行操作。数据元素的数量是“执行大小”、或指令的通道数。执行通道是针对数据元素访问、掩蔽和指令内的流控制的执行的逻辑单元。通道的数量可以与针对特定图形处理器的物理算术逻辑单元(ALU)或浮点单元(FPU)的数量无关。在一些实施例中,执行单元608A-608N支持整数和浮点数据类型。
执行单元指令集包括SIMD指令。各种数据元素可以作为打包数据类型存储在寄存器中,并且执行单元将基于元素的数据大小来处理各种元素。例如,当对256位宽的向量进行操作时,向量的256个位被存储在寄存器中,并且执行单元按四个分离64位打包数据元素(四字(QW)大小数据元素)、八个分离32位打包数据元素(双字(DW)大小数据元素)、十六个分离16位打包数据元素(字(W)大小数据元素)、或三十二个分离8位数据元素(字节(B)大小数据元素)来对该向量进行操作。然而,不同的向量宽度和寄存器大小是可能的。
在一个实施例中,一个或多个执行单元可以组合成具有线程控制逻辑(607A-607N)的融合执行单元609A-609N,该线程控制逻辑对于融合的EU是公共的。多个EU可以融合成EU组。融合的EU组中的每个EU可以被配置成执行单独的SIMD硬件线程。根据实施例,融合EU组中的EU的数量可以变化。附加地,每个EU可以执行各种SIMD宽度,包括但不限于SIMD8、SIMD16和SIMD32。每个融合图形执行单元609A-609N包括至少两个执行单元。例如,融合执行单元609A包括第一EU 608A、第二EU 608B和线程控制逻辑607A,其对于第一EU608A和第二EU 608B是公共的。线程控制逻辑607A控制在融合图形执行单元609A上执行的线程,从而允许融合执行单元609A-609N内的每个EU使用公共指令指针寄存器来执行。
在线程执行逻辑600中包括用以高速缓存执行单元的线程指令的一个或多个内部指令高速缓存(例如,606)。在一些实施例中,包括一个或多个数据高速缓存(例如,612)以在线程执行期间高速缓存线程数据。在一些实施例中,包括采样器610以为3D操作提供纹理采样并且为媒体操作提供媒体采样。在一些实施例中,采样器610包括专门的纹理或媒体采样功能性,以在向执行单元提供采样数据之前的采样过程期间处理纹理或媒体数据。
在执行期间,图形和媒体流水线经由线程产生和分派逻辑向线程执行逻辑600发送线程发起请求。一旦一组几何对象已被处理并且被栅格化成像素数据,着色器处理器602内的像素处理器逻辑(例如,像素着色器逻辑、片段着色器逻辑等)就被调用以进一步计算输出信息并且使得结果被写入到输出表面(例如,颜色缓冲器、深度缓冲器、模板印刷缓冲器等)。在一些实施例中,像素着色器或片段着色器计算要跨栅格化对象而被内插的各种顶点属性的值。在一些实施例中,着色器处理器602内的像素处理器逻辑然后执行应用编程接口(API)供应的像素或片段着色器程序。为了执行着色器程序,着色器处理器602经由线程分派器604将线程分派至执行单元(例如,608A)。在一些实施例中,着色器处理器602使用采样器610中的纹理采样逻辑来访问存储在存储器中的纹理映射中的纹理数据。对纹理数据和输入几何数据的算术运算计算了每个几何片段的像素颜色数据,或丢弃一个或多个像素而不进行进一步处理。
在一些实施例中,数据端口614提供存储器访问机制,以供线程执行逻辑600将经处理的数据输出至存储器以供在图形处理器输出流水线上进一步处理。在一些实施例中,数据端口614包括或耦合至一个或多个高速缓冲存储器(例如,数据高速缓存612)以对数据进行高速缓存从而用于经由数据端口的存储器访问。
如图6B中图示的,图形执行单元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、分支单元6342或(一个或多个)SIMD FPU 634中的一个以供执行。每个执行线程可以访问GRF 624内的128个通用寄存器,其中每个寄存器可以存储32个字节,可按32位数据元素的SIMD 8元素向量进行访问。在一个实施例中,每个执行单元线程可以访问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上执行的每个线程在不同的通道上执行。
图7是图示了根据一些实施例的图形处理器指令格式700的框图。在一个或多个实施例中,图形处理器执行单元支持具有采用多种格式的指令的指令集。实线框图示了通常被包括在执行单元指令中的组件,而虚线包括可选的或仅被包括在指令的子集中的组件。在一些实施例中,所描述和图示的指令格式700是宏指令,因为它们是被供应至执行单元的指令,这与由在指令被处理以后指令进行解码而产生的微操作相反。
在一些实施例中,图形处理器执行单元本机地支持采用128位指令格式710的指令。基于所选指令、指令选项和操作数的数量,64位压缩指令格式730可用于一些指令。本机128位指令格式710提供对全部指令选项的访问,而一些选项和操作被限制在64位格式730中。采用64位格式730的可用的本机指令根据实施例而变化。在一些实施例中,使用索引字段713中的一组索引值来部分地压缩指令。执行单元硬件基于索引值来参考一组压缩表,并且使用压缩表输出来重构采用128位指令格式710的本机指令。
针对每种格式,指令操作码712定义执行单元要执行的操作。执行单元跨每个操作数的多个数据元素来并行地执行每个指令。例如,响应于加法指令,执行单元跨表示纹理元素或图片元素的每个颜色通道来执行同步加法运算。默认地,执行单元跨操作数的全部数据通道来执行每个指令。在一些实施例中,指令控制字段714启用对某些执行选项的控制,所述某些执行选项诸如通道选择(例如,预测)以及数据通道次序(例如,搅和)。针对采用128位指令格式710的指令,执行大小字段716限制了将并行执行的数据通道的数量。在一些实施例中,执行大小字段716不可供64位压缩指令格式730中使用。
一些执行单元指令具有高达三个操作数,包括两个源操作数src0 720、src1 722和一个目的地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)的形式的同步指令(例如,等待、发送)。并行数学指令组748包括采用0100xxxxb(例如,0x40)的形式的逐组件的算术指令(例如,加、乘(mul))。并行数学组748跨数据通道并行执行算术运算。向量数学组750包括采用0101xxxxb(例如,0x50)的形式的算术指令(例如,dp4)。向量数学组对向量操作数执行诸如点积计算之类的算术。
图形流水线
图8是图形处理器800的另一实施例的框图。图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的一个或多个线程来处理、或者可以直接行进至裁剪器(clipper)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,该栅格化器和深度测试组件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也将被支持。
图形流水线编程
图9A是图示了根据一些实施例的图形处理器命令格式900的框图。图9B是图示了根据实施例的图形处理器命令序列910的框图。图9A中的实线框图示了通常被包括在图形命令中的组件,而虚线包括可选的或者仅被包括在图形命令的子集中的组件。图9A的示例性图形处理器命令格式900包括用以识别命令的客户端902、命令操作代码(操作码)904和数据906的数据字段。在一些命令中,还包括子操作码905和命令大小908。
在一些实施例中,客户端902指定了处理命令数据的图形设备的客户端单元。在一些实施例中,图形处理器命令解析器(parser)检查每个命令的客户端字段以调节对命令的进一步处理,并且将命令数据路由至适当的客户端单元。在一些实施例中,图形处理器客户端单元包括存储器接口单元、渲染单元、2D单元、3D单元和媒体单元。每个客户端单元具有对命令进行处理的对应的处理流水线。一旦客户端单元接收到命令,客户端单元就读取操作码904和子操作码905(如果存在的话)以确定要执行的操作。客户端单元使用数据字段906中的信息来执行命令。对于一些命令,预期显式命令大小908来指定命令的大小。在一些实施例中,命令解析器基于命令操作码自动地确定命令中的至少一些命令的大小。在一些实施例中,经由双字的倍数来对命令进行对齐。
图9B中的流程图图示了示例性图形处理器命令序列910。在一些实施例中,以图形处理器的实施例为特征的数据处理系统的软件或固件使用所示出的一种版本的命令序列来设置、执行和终止一组图形操作。仅出于示例的目的示出并描述了样本命令序列,因为实施例不限于这些特定命令或者该命令序列。而且,命令可以作为采用命令序列的批命令来发布,使得图形处理器将至少部分并发地处理命令的序列。
在一些实施例中,图形处理器命令序列910可以以流水线转储清除命令912开始以便使得任何活动图形流水线完成针对该流水线的当前未决命令。在一些实施例中,3D流水线922和媒体流水线924不同时进行操作。执行流水线转储清除以使得活动图形流水线完成任何未决命令。响应于流水线转储清除,图形处理器的命令解析器将暂停命令处理,直到活动绘图引擎完成未决操作并且相关读取高速缓存无效为止。可选地,可以将被标记为“脏”的渲染高速缓存中的任何数据转储清除到存储器。在一些实施例中,流水线转储清除命令912可以被用于流水线同步或者在将图形处理器置于低功率状态中之前使用。
在一些实施例中,当命令序列要求图形处理器在流水线之间显式地切换时,使用流水线选择命令913。在一些实施例中,在发布流水线命令之前,在执行上下文内仅需要流水线选择命令913一次,除非该上下文要发布针对两条流水线的命令。在一些实施例中,在经由流水线选择命令913进行的流水线切换之前,立即需要流水线转储清除命令912。
在一些实施例中,流水线控制命令914配置图形流水线以供操作,并且被用来对3D流水线922和媒体流水线924进行编程。在一些实施例中,流水线控制命令914配置活动流水线的流水线状态。在一个实施例中,流水线控制命令914被用于流水线同步,并且在处理一批命令之前从活动流水线内的一个或多个高速缓冲存储器清除数据。
在一些实施例中,返回缓冲器状态命令916被用来配置一组返回缓冲器以供相应的流水线写入数据。一些流水线操作需要分配、选择或配置一个或多个返回缓冲器,所述操作在处理期间将中间数据写入到所述一个或多个返回缓冲器中。在一些实施例中,图形处理器还使用一个或多个返回缓冲器来存储输出数据并且执行跨线程通信。在一些实施例中,返回缓冲器状态916包括选择返回缓冲器的大小和数量以用于一组流水线操作。
命令序列中的剩余命令基于用于操作的活动流水线而不同。基于流水线确定920,该命令序列被调整到以3D流水线状态930开始的3D流水线922或者在媒体流水线状态940处开始的媒体流水线924。
用以配置3D流水线状态930的命令包括:用于顶点缓冲器状态、顶点元素状态、常量颜色状态、深度缓冲器状态、以及要在处理3D图元命令之前配置的其它状态变量的3D状态设置命令。这些命令的值至少部分地基于使用中的特定3D API来确定。在一些实施例中,3D流水线状态930命令还能够选择性地禁用或绕过某些流水线元件,如果将不使用那些元件的话。
在一些实施例中,3D图元932命令被用来提交要由3D流水线处理的3D图元。将经由3D图元932命令传递给图形处理器的命令和相关联的参数转发给图形流水线中的顶点提取功能。顶点提取功能使用3D图元932命令数据来生成顶点数据结构。将顶点数据结构存储在一个或多个返回缓冲器中。在一些实施例中,3D图元932命令被用来经由顶点着色器来对3D图元执行顶点操作。为了处理顶点着色器,3D流水线922将着色器执行线程分派至图形处理器执行单元。
在一些实施例中,经由执行934命令或事件来触发3D流水线922。在一些实施例中,寄存器写入触发命令执行。在一些实施例中,经由命令序列中的“去”(“go”)或“踢”(“kick”)命令来触发执行。在一个实施例中,使用流水线同步命令来触发命令执行,以通过图形流水线来转储清除命令序列。3D流水线将执行针对3D图元的几何处理。一旦运算完成,便对所得几何对象进行栅格化,并且像素引擎给所得像素涂颜色。用以控制像素着色和像素后端操作的附加命令还可以被包括以用于那些操作。
在一些实施例中,当执行媒体操作时,图形处理器命令序列910跟随在媒体流水线924路径之后。一般而言,媒体流水线924的特定使用和编程方式取决于要执行的媒体或计算操作。在媒体解码期间,可以将特定媒体解码操作卸载到媒体流水线。在一些实施例中,还可以绕过媒体流水线,并且可以整体地或部分地使用由一个或多个通用处理核提供的资源来执行媒体解码。在一个实施例中,媒体流水线还包括用于通用图形处理器单元(GPGPU)操作的元件,其中,该图形处理器被用来使用计算着色器程序来执行SIMD向量运算,该计算着色器程序与图形图元的渲染不是显式相关的。
在一些实施例中,以与3D流水线922类似的方式对媒体流水线924进行配置。将用以配置媒体流水线状态940的一组命令分派或放置到在媒体对象命令942之前的命令队列中。在一些实施例中,针对媒体流水线状态940的命令包括:用以配置媒体流水线元件的数据,所述媒体流水线元件将被用来处理媒体对象。这包括用以在媒体流水线内配置视频解码和视频编码逻辑的数据,诸如编码或解码格式。在一些实施例中,针对媒体流水线状态940的命令还支持使用指向包含一批状态设置的“间接”状态元件的一个或多个指针。
在一些实施例中,媒体对象命令942将指针供应至媒体对象以供媒体流水线处理。媒体对象包括存储器缓冲器,该存储器缓冲器包含要处理的视频数据。在一些实施例中,在发布媒体对象命令942之前,全部媒体流水线状态必须是有效的。一旦流水线状态被配置并且媒体对象命令942被排队,就经由执行命令944或等效的执行事件(例如,寄存器写入)来触发媒体流水线924。然后可以通过由3D流水线922或媒体流水线924提供的操作对来对从媒体流水线924的输出进行后处理。在一些实施例中,以与媒体操作类似的方式来配置和执行GPGPU操作。
图形软件架构
图10图示了根据一些实施例的数据处理系统1000的示例性图形软件架构。在一些实施例中,软件架构包括:3D图形应用1010、操作系统1020、以及至少一个处理器1030。在一些实施例中,处理器1030包括:图形处理器1032以及一个或多个通用处理器核1034。图形应用1010和操作系统1020各自在数据处理系统的系统存储器1050中执行。
在一些实施例中,3D图形应用1010包含一个或多个着色器程序,该一个或多个着色器程序包括着色器指令1012。着色器语言指令可以采用高级着色器语言,诸如高级着色器语言(HLSL)或OpenGL着色器语言(GLSL)。该应用还包括采用适用于由通用处理器核1034执行的采用机器语言的可执行指令1014。该应用还包括由顶点数据定义的图形对象1016。
在一些实施例中,操作系统1020是来自微软公司的Microsoft® Windows®操作系统、专有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核”)是用于集成电路的逻辑的可重复使用单元,该可重复使用单元可以作为对集成电路的结构进行描述的硬件模型而存储在有形机器可读介质上。可以将硬件模型供应至各种客户或制造设施,其将硬件模型加载在制造集成电路的制造机器上。可以制造集成电路,使得电路执行与本文中描述的实施例中的任何实施例相关联地描述的操作。
图11A是图示了根据实施例的可以被用来制造用以执行操作的集成电路的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核设计的集成电路。所制造的集成电路可以被配置成执行根据本文中描述的至少一个实施例的操作。
图11B图示了根据本文中描述的一些实施例的集成电路封装组装件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。替换地,多个管芯或逻辑的单元可以通过一个或多个桥接器连接。附加地,多个逻辑单元、管芯和桥接器可以用包括三维配置的其它可能的配置连接在一起。
示例性片上系统集成电路
图12-14图示了根据本文中描述的各种实施例的可以使用一个或多个IP核来制造的示例性集成电路和相关联图形处理器。除了所图示的内容之外,还可以包括其它逻辑和电路,包括附加的图形处理器/核、外围接口控制器或通用处理器核。
图12是图示了根据实施例的可以使用一个或多个IP核来制造的示例性片上系统集成电路1200的框图。示例性集成电路1200包括一个或多个应用处理器1205(例如,CPU)、至少一个图形处理器1210,并且可以附加地包括图像处理器1215和/或视频处理器1220,其中的任何都可以是来自相同或多个不同设计设施的模块化IP核。集成电路1200包括:外围或总线逻辑,其包括USB控制器1225、UART控制器1230、SPI/SDIO控制器1235和I2S/I2C控制器1240。附加地,集成电路可以包括显示设备1245,该显示设备1245耦合至高清晰度多媒体接口(HDMI)控制器1250和移动产业处理器接口(MIPI)显示界面1255中的一个或多个。可以由闪速存储器子系统1260(包括闪速存储器和闪速存储器控制器)来提供存储。可以经由存储器控制器1265来提供存储器接口以访问SDRAM或SRAM存储器设备。一些集成电路附加地包括嵌入式安全引擎1270。
图13A-13B是图示了根据本文中描述的实施例的供SoC内使用的示例性图形处理器的框图。图13A图示了根据实施例的可以使用一个或多个IP核来制造的片上系统集成电路的示例性图形处理器1310。图13B图示了根据实施例的可以使用一个或多个IP核来制造的片上系统集成电路的附加示例性图形处理器1340。图13A的图形处理器1310是低功率图形处理器核的示例。图13B的图形处理器1340是更高性能图形处理器核的示例。图形处理器1310、1340中的每一个可以是图12的图形处理器1210的变体。
如在图13A中示出的,图形处理器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。该一个或多个MMU1320A-1320B为图形处理器1310(包括为顶点处理器1305和/或(一个或多个)片段处理器1315A-1315N)提供虚拟到物理地址映射,该虚拟到物理地址映射除了存储在一个或多个高速缓存1325A-1325B中的顶点或图像/纹理数据之外还可以引用存储在存储器中的顶点或图像/纹理数据。在一个实施例中,一个或多个MMU 1320A-1320B可以与系统内的其它MMU同步,所述其它MMU包括与图12的一个或多个应用处理器1205、图像处理器1215和/或视频处理器1220相关联的一个或多个MMU,使得每个处理器1205-1220可以参与到共享或统一的虚拟存储器系统中。根据实施例,一个或多个电路互连1330A-1330B使得图形处理器1310能够经由SoC的内部总线或经由直接连接来与SoC内的其它IP核对接。
如图13B所示出的,图形处理器1340包括图13A的图形处理器1310的一个或多个MMU 1320A-1320B、高速缓存1325A-1325B和电路互连1330A-1330B。图形处理器1340包括:一个或多个着色器核1355A-1355N(例如,1455A、1355B、1355C、1355D、1355E、1355F、一直到1355N-1和1355N),其提供统一的着色器核架构,其中单个核或类型或核可以执行全部类型的可编程着色器代码,包括用以实现顶点着色器、片段着色器和/或计算着色器的着色器程序代码。存在的着色器核的确切数量可以在实施例和实现当中发生变化。附加地,图形处理器1340包括核间任务管理器1345,该核间任务管理器1345充当用以将执行线程分派给一个或多个着色器核1355A-1355N的线程分派器以及用以对针对基于贴片(tile)的渲染的拼贴(tiling)操作进行加速的拼贴单元1358,在所述基于贴片的渲染中,场景的渲染操作在图像空间中被细分,例如以便利用场景内的局部空间一致性或以便优化内部高速缓存的使用。
图14A-14B图示了根据本文中描述的实施例的附加的示例性图形处理器逻辑。图14A图示了图形核1400,其可以被包括在图12的图形处理器1210内,并且可以是如图13B中的统一着色器核1355A-1355N。图14B图示了附加的高度并行的通用图形处理单元1430,其是适合于部署在多芯片模块上的高度并行的通用图形处理单元。
如在图14A示出的,图形核1400包括:共享指令高速缓存1402、纹理单元1418和高速缓存/共享存储器1420,它们对于图形核1400内的执行资源是公共的。图形核1400可以包括针对每个核的多个薄片1401A-1401N或分区,并且图形处理器可以包括图形核1400的多个实例。薄片1401A-1401N可以包括支持逻辑,该支持逻辑包括本地指令高速缓存1404A-1404N、线程调度器1406A-1406N、线程分派器1408A-1408N和一组寄存器1410A-1440N。为了执行逻辑操作,薄片1401A-1401N可以包括一组附加功能单元(AFU 1412A-1412N)、浮点单元(FPU 1414A-1414N)、整数算术逻辑单元(ALU 1416-1416N)、地址计算单元(ACU 1413A-1413N)、双精度浮点单元(DPFPU 1415A-1415N)和矩阵处理单元(MPU 1417A-1417N)。
计算单元中的一些以特定精度进行操作。例如,FPU 1414A-1414N可以执行单精度(32位)和半精度(16位)浮点运算,而DPFPU 1415A-1415N执行双精度(64位)浮点运算。ALU1416A-1416N可以用8位、16位和32位精度来执行可变精度整数运算,并且可以被配置用于混合精度运算。MPU 1417A-1417N还可以被配置用于混合精度矩阵运算,包括半精度浮点和8位整数运算。MPU 1417-1417N可以执行各种各样的矩阵操作以对机器学习应用框架进行加速,包括使得能够实现对经加速的通用矩阵到矩阵乘法(GEMM)的支持。AFU 1412A-1412N可以执行浮点或整数单元不支持的附加逻辑运算,包括三角运算(例如,正弦、余弦等)。
如在图14B中示出的,通用处理单元(GPGPU)1430可以被配置成使得高度并行的计算操作能够由图形处理单元的阵列执行。附加地,GPGPU 1430可以直接链接至GPGPU的其它实例以创建多GPU集群,从而改进特别深的神经网络的训练速度。GPGPU 1430包括:用以使得能够实现与主机处理器的连接的主机接口1432。在一个实施例中,主机接口1432是PCIExpress接口。然而,主机接口还可以是供应方特定的通信接口或通信结构。GPGPU 1430从主机处理器接收命令,并且使用全局调度器1434来将与那些命令相关联的执行线程分发给一组计算集群1436A-1436H。计算集群1436A-1436H共享高速缓冲存储器1438。高速缓冲存储器1438可以用作计算集群1436A-1436H内的高速缓冲存储器的高级高速缓存。
GPGPU 1430包括:存储器14434A-14434B,它们经由一组存储器控制器1442A-1442B与计算集群1436A-1436H耦合。在各种实施例中,存储器1434A-1434B可以包括各种类型的存储器设备,包括动态随机存取存储器(DRAM)或图形随机存取存储器,诸如同步图形随机存取存储器(SGRAM),包括图形双数据速率(GDDR)存储器。
在一个实施例中,计算集群1436A-1436H各自包括一组图形核,诸如图14A的图形核1400,其可以包括多种类型的整数和浮点逻辑单元,所述整数和浮点逻辑单元可以按包括适合于机器学习计算的一系列精度来执行计算操作。例如且在一个实施例中,至少计算集群1436A-1436H中的每个计算集群中的浮点单元的一子集可以被配置成执行16位或32位浮点运算,而浮点单元的不同子集可以被配置成执行64位浮点运算。
GPGPU 1430的多个实例可以被配置成作为计算集群进行操作。由计算集群用于同步和数据交换的通信机制跨实施例而变化。在一个实施例中,GPGPU 1430的多个实例通过主机接口1432进行通信。在一个实施例中,GPGPU 1430包括:使GPGPU 1430与GPU链路1440耦合的I/O中枢1439,该GPU链路1440使得能够实现至GPGPU的其它实例的直接连接。在一个实施例中,GPU链路1440耦合至专用GPU至GPU桥接器,该桥接器使得能够实现GPGPU 1430的多个实例之间的通信和同步。在一个实施例中,GPU链路1440与高速互连相耦合,以将数据传送至其它GPGPU或并行处理器以及接收数据。在一个实施例中,GPGPU 1430的多个实例位于单独的数据处理系统中并且经由网络设备进行通信,该网络设备可经由主机接口1432来访问。在一个实施例中,除主机接口1432之外或作为对主机接口1432的替换物,GPU链路1440可以被配置成使得能够实现至主机处理器的连接。
虽然GPGPU 1430的图示配置可以被配置成训练神经网络,但是一个实施例提供了GPGPU 1430的替代配置,其可以被配置用于部署在高性能或低功率推理平台内。在推理配置中,GPGPU 1430包括:相对于训练配置更少的计算集群1436A-1436H。附加地,与存储器1434A-1434B相关联的存储器技术可以在推理与训练配置之间不同,其中更高带宽的存储器技术致力于训练配置。在一个实施例中,GPGPU 1430的推理配置可以支持推理特定的指令。例如,推理配置可以提供对一个或多个8位整数点积指令的支持,所述8位整数点积指令通常在针对已部署的神经网络的推理操作期间使用。
用于虚拟化显示器的装置和方法
如上所述,单根I/O虚拟化(SR-IOV)如今用于实现虚拟化图形处理单元(GPU)。这是通过定义虚拟化PCI Express(PCIe)设备以用于在PCIe总线上暴露一个物理功能(PF)加上多个虚拟功能(VF)来实现的。
在这样的系统中,VF显示模型被用于通过直接将客户机帧缓冲器发到本地监测器或将客户机帧缓冲器信息暴露给主机来驱动虚拟机(VM)中的本地显示功能性。例如,在当前的交通工具中信息娱乐(IVI)系统中,存在这样的趋势:使用虚拟化技术来整合显示安全度量(例如,速度、扭矩等)的安全关键数字仪器集群连同显示信息娱乐应用的一些IVI系统。在这种架构中,GPU在不同的VM之间共享其计算和显示能力,使得每个VM可以直接将其图形用户界面发到相关联的显示面板。
在云服务器用例中,上游显示器将客户机帧缓冲器作为DMA-BUF文件描述符暴露给主机用户空间。然后,可以通过主机侧上的现有媒体或图形栈经由远程协议来访问、渲染和/或流传送客户机帧缓冲器。
图15突出显示了利用虚拟功能1521访问的GPU 1540如何不能将其在PF 1510中的显示要求发到本地显示硬件1515(如由大X所指示的)。GPU 1540也不能用在远程显示配置中,该远程显示配置需要将来自VF驱动器1541的客户机VM 1540帧缓冲器暴露给在主机侧上运行的远程协议服务器1530。在这些实例中,在没有显示模型的情况下,GPU 1540不能直接驱动本地显示器,GPU 1540也不能将其显示帧缓冲器发到主机侧。
本发明的实施例包括半虚拟化(PV)虚拟显示模型,其用于向硬件虚拟化GPU(例如Gen12 SR-IOV硬件虚拟化GPU)提供以下能力:直接将客户机帧缓冲器发到硬件本地显示监测器或通过暴露客户机帧缓冲器信息来与主机侧共享客户机帧缓冲器。尽管本文描述了特定实现(例如Gen12 SR-IOV),但是本发明的实施例不限于任何特定实现。
使用下面描述的技术,虚拟机(VM)可以支持不同的操作系统(OS)类型,包括一个或多个实时操作系统(RTOS)。这些OS可以在客户机“翻页”操作期间通过包含客户机显示要求的帧缓冲器描述符页直接将帧缓冲器发到所指派的本地显示面板。该实施例使用后端显示模型,该后端显示模型调用服务OS中的后端显示服务,以根据所发的帧缓冲器描述符,通过代表虚拟功能的物理功能驱动器来配置硬件显示器。
图16图示了一个此类实施例,其实现用于交通工具中信息娱乐(IVI)系统的虚拟显示模型。在所示的实施例中,实时OS(RTOS)1670和相关联的应用1680由主服务/主机虚拟机(VM)1601支持,仪器集群应用1681在仪器集群VM 1602内的RTOS 1671上执行,前信息娱乐应用1682在前信息娱乐VM 1603内的Linux/Android OS1672上执行,并且后信息娱乐应用1683在后信息娱乐VM 1604内的Linux/Android OS 1673上执行。
虚拟机1601-1604及相关联的客户机操作系统1670-1673中的每个由管理程序1650(有时称为虚拟机监测器(VMM))管理,管理程序1650提供对GPU 1648的图形执行资源以及包括多个管道1620-1622的显示子系统1630的访问,多个管道1620-1622中的每个具有多个平面(例如,在本示例中为平面0-7)。如本文所使用的,“管道”意味着被分配用于代表虚拟机处理视频帧的一组处理资源,并且“平面”包括特定的一个或多个视频帧或视频帧的贴片,其定义要在显示器1630(例如,在一个实施例中为交通工具中显示器)上渲染的视图。
在一个实施例中,在服务/主机VM 1601的RTOS 1670内运行的后端服务1661管理其它VM对物理处理资源的访问。例如,后端服务1661可以将GPU 1648和显示器1630的各种处理资源分配给不同的VM 1601-1604。在所示的实施例中,已经为仪器集群VM 1602指派了管道0(1620),已经为前信息娱乐VM 1603指派了管道1(1621),并且已经为后信息娱乐VM1604指派了管道2(1622)。
每个操作系统包括用于访问GPU 1648和显示器1630的图形处理资源的所指派的图形驱动器。服务/主机VM 1601的RTOS 1670例如包括主机GPU驱动器1660(在一个实施例中其不是虚拟驱动器)。其它VM 1602-1604的操作系统1671-1673分别包括虚拟功能驱动器(VFD)1662-1664,每个虚拟功能驱动器(VFD)1662-1664分别包括虚拟显示驱动器(VDD)组件1665-1667。在一个实施例中,分别由每个VDD 1665-1667维持的帧缓冲器描述符(FBD)1668-1651被用于代表每个客户机1671-1673配置显示器1630(如以下更详细描述的)。
图16中的GPU 1648包括可由主机GPU驱动器1660访问的物理功能基址寄存器(PFBAR)1640和一组虚拟功能基址寄存器(VF BAR)1645-1647,每个虚拟功能基址寄存器与不同的虚拟功能(VF)1641-1643相关联,并且分别可由对应的虚拟功能驱动器1662-1664访问。
由于VM 1602-1604不知道虚拟化执行环境,因此管理程序1650捕获从VDD 1665-1667生成的指令/命令,并调用服务/主机VM 1601中的后端服务1661,以根据所发的帧缓冲器描述符,通过代表请求虚拟功能驱动器1662-1664的主机GPU驱动器1660(PF驱动器)来配置硬件显示器。在操作中,每个VM 1601-1604可以在客户机翻页操作期间利用指定所需显示配置的对应帧缓冲器描述符(FBD)1668-1651将每个VM 1601-1604的帧缓冲器直接发到所指派的本地显示面板。
如所提及的,虚拟显示模型的一个实施例在其可以被虚拟功能驱动器1662-1664使用之前由服务/主机VM 1601来配置和填充。这在一个特定实现中可使用仅对虚拟化有意义的PV_INFO寄存器来完成。图17图示了PV_INFO寄存器中的相关虚拟显示域,其包括帧缓冲器描述符基域1701,以标识客户机的显示描述符页(其例如包含相关帧缓冲器描述符1668-1651)的物理地址。
本发明的一个实施例可以分配比物理硬件所支持的平面或管道更多的平面或管道。例如,使用八个作为最大数量,每个VF 1641-1643可被分配至多八个显示器,其中每个显示器被配置成在一个客户机翻页事务中一起暴露多达八个帧缓冲器。如果在实际用例中需要更多显示器,则可以容易地增加该数量。
服务/主机VM 1601可以配置各种类型的显示模式设置。在一个实施例中,显示模式设置为0被虚拟显示驱动器1665-1667当作喜爱的模式设置。主机VM 1601可以填满不以零来使用的显示模式设置。
在一个实施例中,当在支持VF虚拟显示模型的VM中引导客户机时,虚拟显示驱动器1665-1667首先通过读取由主机VM 1601填充的PV_INFO寄存器来收集虚拟显示信息,并然后根据该虚拟显示信息来创建显示对象。例如,如果主机/VM 1601用两个管道和三个平面以及一个显示模式来填充仪器集群VM 1602的PV_INFO中的虚拟显示相关字段,则显示模型将被呈现给VM 1602,如图18中所示。在客户机OS 1671的视图中,每个虚拟显示管道1805、1815连同其相关平面1801-1803、1811-1813,专用虚拟编码器1821、1822,存储器接口1800、1810,以及虚拟连接器1831、1832分别包括一个驱动器级显示控制子系统。在一个实施例中,子系统中的每个对象具有其自己的接口,该接口由客户机OS 1671中的显示框架调用以实现客户机显示要求。本文所述的虚拟显示驱动器实施例仅在调用接口时将这些要求保存在存储器中,并且在客户机OS 1671翻页操作期间在帧缓冲器描述符1668中传递这些要求。
再次参考仪器集群VM 1602(尽管相同的原理适用于其它VM 1603-1604),当客户机虚拟显示驱动器1665执行翻页时,客户机虚拟显示驱动器1665使用帧缓冲器描述符页(包含FBD 1668数据)来保存帧缓冲器信息,并将帧缓冲器描述符页的地址写入PV_INFO数据结构中的帧缓冲器描述符基字段1701。如图16中所指示的,该操作由管理程序1650捕获,该管理程序1650调用显示后端服务1661(例如,PF驱动器)以根据帧缓冲器描述符页中的更新来配置显示硬件。
图19图示了帧缓冲器描述符页2001的一个实施例,帧缓冲器描述符页2001包括被包含在帧缓冲器描述符页条目2902内的特定数据字段(例如,用于管道0和平面0)。作为示例而非限制,数据字段包括平面位置、偏移、跨距、和大小以及管道窗口位置和大小。在描述符页1901内可以指定各种其它类型的数据,同时仍然符合本发明的基本原理。
在一个实施例中,整个管道可以被完全指派给一个VM,这被称为完全模式设置(假设允许这样的客户机设置)。通过以原子方式调用主机物理功能驱动器1660来配置完全模式设置和显示器翻页两者,以确保可以在一个事务中执行配置。
在一个实施例中,将显示中断注入到目标VM 1601-1604。在一个实施例中,支持不同类型的中断,包括响应于虚拟翻页操作的虚拟翻页触发中断和响应于物理翻页中断的物理翻页中断。对于没有任何所指派的物理平面的客户机虚拟显示器,根据定时器周期性地注入虚拟翻页完成中断。对于指派有物理平面的客户机虚拟显示器,在物理中断处理程序的执行期间注入翻页完成中断。
与专门向虚拟功能提供硬件显示引擎的现有系统相比,本发明的实施例显著地更可缩放,并且在虚拟化环境中提供高效的显示支持(即,不受设备所支持的#SRIOV功能限制)。这些实施例还能够在具有不同特征的系统类型中使用(所述不同特征包括但不限于SR-IOV、可缩放IOV和容器模型),而不需要改变设备硬件。
完全虚拟化物理功能显示模型实现可实现上述益处中的一些。然而,这将涉及大量工程工作以解决问题,所述问题是诸如对不同类型的显示端口寄存器的虚拟化。这些特定细节不一定满足客户机显示要求,并且可能导致性能问题。
本发明的实施例还可以与云服务器或其它计算设备中现有的上游基于内核的虚拟机和IO虚拟化(例如,VFIO)显示器一起使用。图20中所示的一个此类实施例包含具有虚拟功能驱动器2041的虚拟机2040,所述虚拟功能驱动器2041使用帧缓冲器描述符2051来指定客户机显示要求。如前所述,使用后端显示模型,其中客户机的虚拟功能驱动器2041调用主机中的后端显示服务2020来配置硬件显示。在此特定实施例中,使用物理功能驱动器2010通过远程协议服务器2015执行配置以执行物理配置更新(例如,由PF 2061所指示的)。VF驱动器2041还可如前所述经由虚拟功能2062来访问GPU。在所示的实施例中,帧缓冲器描述符2051包括直接存储器访问缓冲器(DMA-BUF)文件描述符,其用于向主机暴露客户机帧缓冲器。
交通工具中信息娱乐(IVI)系统对汽车工业产生了显著的影响。虚拟化在IVI系统中扮演关键角色,以整合安全关键数字仪器集群和安全度量(例如,速度、扭矩等)连同显示信息娱乐应用的一些IVI系统。本发明的实施例提供了硬件虚拟化GPU,所述硬件虚拟化GPU具有用于以高性能水平满足IVI系统的显示要求的电路和逻辑。尽管关于Gen12 SR-IOV图形处理器描述了本发明的一些实施例,但是本发明的基本原理可以用各种不同类型的图形处理器、主机处理器和虚拟化架构来实现。
实施例
以下是本发明的不同实施例的示例实现。
示例1. 一种图形处理装置,包括:至少一个配置寄存器,所述至少一个配置寄存器用于存储第一客户机的帧缓冲器描述符信息,所述第一客户机在主机处理器的虚拟化执行环境中的第一虚拟机(VM)上运行,所述帧缓冲器描述符信息用于指示指派给所述第一客户机的一个或多个显示管道;以及执行电路,所述执行电路用于执行指派给所述第一客户机的第一驱动器,所述第一客户机用于根据所述帧缓冲器描述符信息使用所述第一驱动器在与所述显示管道中的一个显示管道相关联的平面中显示帧缓冲器。
示例2. 根据示例1所述的图形处理装置,其中,所述第一驱动器包括与所述第一VM相关联的虚拟显示驱动器(VDD),并且其中,显示所述帧缓冲器的请求将由管理程序捕获并被发送到第二VM的物理功能(PF)驱动器,其中所述PF驱动器将使所述帧缓冲器根据所述帧缓冲器描述符信息而被显示。
示例3. 根据示例2所述的图形处理装置,其中,所述PF驱动器将从所述帧缓冲器描述符信息来标识所述帧缓冲器的存储位置。
示例4. 根据示例1所述的图形处理装置,其中,所述帧缓冲器描述符信息包括对显示管道和平面的指示,所述显示管道和平面与指派给所述第一客户机的特定虚拟功能(VF)相关联。
示例5. 根据示例4所述的图形处理装置,进一步包括:虚拟显示管理硬件逻辑,所述虚拟显示管理硬件逻辑用于管理针对每个VF的管线和平面指派,所述虚拟显示管理硬件逻辑用于使每个VF与一个或多个虚拟显示管线和平面相关联。
示例6. 根据示例5所述的图形处理装置,其中,所述虚拟显示管理硬件逻辑将把每个VF与一个或多个虚拟显示管道和平面之间的所述关联存储在所述帧缓冲器描述符中。
示例7. 根据示例2所述的图形处理装置,其中,所述VDD将生成翻页操作以直接将所述帧缓冲器发到本地显示器。
示例8. 根据示例1所述的图形处理装置,其中,所述PF驱动器将使所述帧缓冲器根据所述帧缓冲器描述符信息而被显示在远程显示器上。
示例9. 根据示例1所述的图形处理装置,其中,所述主机处理器和执行电路被集成到交通工具中信息(IVI)系统,并且其中所述第一VM包括仪器集群VM,其中第二VM包括信息娱乐VM。
示例10. 一种方法,包括:生成第一客户机的帧缓冲器描述符信息,所述第一客户机在主机处理器的虚拟化执行环境中的第一虚拟机(VM)上运行,所述帧缓冲器描述符信息用于指示指派给所述第一客户机的一个或多个显示管道;将所述帧缓冲器描述符信息存储在配置寄存器中;以及由与所述第一客户机相关联的第一驱动器根据所述帧缓冲器描述符信息在与所述显示管道中的一个显示管道相关联的平面中显示帧缓冲器。
示例11. 根据示例10所述的方法,其中,所述第一驱动器包括与所述第一VM相关联的虚拟显示驱动器(VDD),并且其中,显示所述帧缓冲器的请求将由管理程序捕获并被发送到第二VM的物理功能(PF)驱动器,其中所述PF驱动器将使所述帧缓冲器根据所述帧缓冲器描述符信息而被显示。
示例12. 根据示例11所述的方法,其中,所述PF驱动器将从所述帧缓冲器描述符信息来标识所述帧缓冲器的存储位置。
示例13. 根据示例10所述的方法,其中,所述帧缓冲器描述符信息包括对显示管道和平面的指示,所述显示管道和平面与指派给所述第一客户机的特定虚拟功能(VF)相关联。
示例14. 根据示例13所述的方法,进一步包括:使每个VF与一个或多个虚拟显示管线和平面相关联。
示例15. 根据示例14所述的方法,进一步包括:将每个VF与一个或多个虚拟显示管道和平面之间的所述关联存储在所述帧缓冲器描述符中。
示例16. 根据示例11所述的方法,其中,所述VDD将生成翻页操作以直接将所述帧缓冲器发到本地显示器。
示例17. 根据示例10所述的方法,其中,所述PF驱动器将使所述帧缓冲器根据所述帧缓冲器描述符信息而被显示在远程显示器上。
示例18. 根据示例10所述的方法,其中,所述主机处理器和执行电路被集成到交通工具中信息(IVI)系统,并且其中所述第一VM包括仪器集群VM,其中第二VM包括信息娱乐VM。
示例19. 一种在其上存储有程序代码的机器可读介质,所述程序代码在由机器执行时使所述机器执行以下操作:生成第一客户机的帧缓冲器描述符信息,所述第一客户机在主机处理器的虚拟化执行环境中的第一虚拟机(VM)上运行,所述帧缓冲器描述符信息用于指示指派给所述第一客户机的一个或多个显示管道;将所述帧缓冲器描述符信息存储在配置寄存器中;以及由与所述第一客户机相关联的第一驱动器根据所述帧缓冲器描述符信息在与所述显示管道中的一个显示管道相关联的平面中显示帧缓冲器。
示例20. 根据示例19所述的机器可读介质,其中,所述第一驱动器包括与所述第一VM相关联的虚拟显示驱动器(VDD),并且其中,显示所述帧缓冲器的请求将由管理程序捕获并被发送到第二VM的物理功能(PF)驱动器,其中所述PF驱动器将使所述帧缓冲器根据所述帧缓冲器描述符信息而被显示。
示例21. 根据示例20所述的机器可读介质,其中,所述PF驱动器将从所述帧缓冲器描述符信息来标识所述帧缓冲器的存储位置。
示例22. 根据示例19所述的机器可读介质,其中,所述帧缓冲器描述符信息包括对显示管道和平面的指示,所述显示管道和平面与指派给所述第一客户机的特定虚拟功能(VF)相关联。
示例23. 根据示例22所述的机器可读介质,进一步包括程序代码,所述程序代码用于使所述机器执行以下操作:使每个VF与一个或多个虚拟显示管线和平面相关联。
示例24. 根据示例23所述的机器可读介质,进一步包括程序代码,所述程序代码用于使所述机器执行以下操作:将每个VF与一个或多个虚拟显示管道和平面之间的所述关联存储在所述帧缓冲器描述符中。
示例25. 根据示例20所述的机器可读介质,其中,所述VDD将生成翻页操作以直接将所述帧缓冲器发到本地显示器。
示例26. 根据示例19所述的机器可读介质,其中,所述PF驱动器将使所述帧缓冲器根据所述帧缓冲器描述符信息而被显示在远程显示器上。
示例27. 根据示例19所述的机器可读介质,其中,所述主机处理器和执行电路被集成到交通工具中信息(IVI)系统,并且其中所述第一VM包括仪器集群VM,其中第二VM包括信息娱乐VM。
本发明的实施例可以包括各种步骤,这些步骤已经在上文描述。步骤可以体现在机器可执行指令中,这些机器可执行指令可以用于促使通用或专用处理器执行步骤。替换地,这些步骤可以由包含硬接线逻辑用以执行步骤的特定硬件组件或通过经编程的计算机组件和自定义硬件组件的任何组合来执行。
如本文描述的,指令可以指硬件的特定配置,该硬件诸如专用集成电路(ASIC),其配置成执行某些操作或具有预定功能性或存储在非暂时性计算机可读介质中所体现的存储器中的软件指令。从而,图中示出的技术可以使用所存储且在一个或多个电子设备(例如,终端站、网络元件等)上执行的代码和数据来实现。这样的电子设备使用计算机机器可读介质存储和传达(在内部传达和/或通过网络与其它电子设备通信而传达)代码和数据,该计算机机器可读介质诸如非暂时性计算机机器可读存储介质(例如,磁盘;光盘;随机存取存储器;只读存储器;闪速存储器设备;相变存储器)和暂时性计算机机器可读通信介质(例如,电、光、声或其它形式的传播信号--诸如载波、红外信号、数字信号等)。
附加地,这样的电子设备典型地包括一组一个或多个处理器,其耦合至一个或多个其它组件,诸如一个或多个存储设备(非暂时性机器可读存储介质)、用户输入/输出设备(例如,键盘、触摸屏和/或显示器)和网络连接。该组处理器和其它组件的耦合典型地通过一个或多个总线和桥接器(也称作总线控制器)。存储设备和携带网络业务的信号分别表示一个或多个机器可读存储介质和机器可读通信介质。从而,给定电子设备的存储设备典型地存储代码和/或数据以供在该电子设备的那组一个或多个处理器上执行。当然,本发明的实施例的一个或多个部分可以使用软件、固件和/或硬件的不同组合实现。贯穿该详细描述中,出于解释的目的,阐述众多具体细节以便提供对本发明的透彻理解。然而,对于本领域技术人员来说将显然的是,可以在没有这些具体细节中的某些的情况下实践本发明。在某些实例中,未详尽地描述公知的结构和功能以避免使本发明的主旨模糊。因此,本发明的范围和精神应该根据附随权利要求来判断。
Claims (27)
1. 一种图形处理装置,包括:
至少一个配置寄存器,所述至少一个配置寄存器用于存储第一客户机的帧缓冲器描述符信息,所述第一客户机在主机处理器的虚拟化执行环境中的第一虚拟机(VM)上运行,所述帧缓冲器描述符信息用于指示指派给所述第一客户机的一个或多个显示管道;以及
执行电路,所述执行电路用于执行指派给所述第一客户机的第一驱动器,所述第一客户机用于根据所述帧缓冲器描述符信息使用所述第一驱动器在与所述显示管道中的一个显示管道相关联的平面中显示帧缓冲器。
2.根据权利要求1所述的图形处理装置,其中,所述第一驱动器包括与所述第一VM相关联的虚拟显示驱动器(VDD),并且其中,显示所述帧缓冲器的请求将由管理程序捕获并被发送到第二VM的物理功能(PF)驱动器,其中所述PF驱动器将使所述帧缓冲器根据所述帧缓冲器描述符信息而被显示。
3.根据权利要求2所述的图形处理装置,其中,所述PF驱动器将从所述帧缓冲器描述符信息来标识所述帧缓冲器的存储位置。
4.根据权利要求1所述的图形处理装置,其中,所述帧缓冲器描述符信息包括对显示管道和平面的指示,所述显示管道和平面与指派给所述第一客户机的特定虚拟功能(VF)相关联。
5.根据权利要求4所述的图形处理装置,进一步包括:
虚拟显示管理硬件逻辑,所述虚拟显示管理硬件逻辑用于管理针对每个VF的管线和平面指派,所述虚拟显示管理硬件逻辑用于使每个VF与一个或多个虚拟显示管线和平面相关联。
6.根据权利要求5所述的图形处理装置,其中,所述虚拟显示管理硬件逻辑将把每个VF与一个或多个虚拟显示管道和平面之间的所述关联存储在所述帧缓冲器描述符中。
7.根据权利要求2所述的图形处理装置,其中,所述VDD将生成翻页操作以直接将所述帧缓冲器发到本地显示器。
8.根据权利要求1所述的图形处理装置,其中,所述PF驱动器将使所述帧缓冲器根据所述帧缓冲器描述符信息而被显示在远程显示器上。
9.根据权利要求1所述的图形处理装置,其中,所述主机处理器和执行电路被集成到交通工具中信息(IVI)系统,并且其中所述第一VM包括仪器集群VM,其中第二VM包括信息娱乐VM。
10.一种方法,包括:
生成第一客户机的帧缓冲器描述符信息,所述第一客户机在主机处理器的虚拟化执行环境中的第一虚拟机(VM)上运行,所述帧缓冲器描述符信息用于指示指派给所述第一客户机的一个或多个显示管道;
将所述帧缓冲器描述符信息存储在配置寄存器中;以及
由与所述第一客户机相关联的第一驱动器根据所述帧缓冲器描述符信息在与所述显示管道中的一个显示管道相关联的平面中显示帧缓冲器。
11.根据权利要求10所述的方法,其中,所述第一驱动器包括与所述第一VM相关联的虚拟显示驱动器(VDD),并且其中,显示所述帧缓冲器的请求将由管理程序捕获并被发送到第二VM的物理功能(PF)驱动器,其中所述PF驱动器将使所述帧缓冲器根据所述帧缓冲器描述符信息而被显示。
12.根据权利要求11所述的方法,其中,所述PF驱动器将从所述帧缓冲器描述符信息来标识所述帧缓冲器的存储位置。
13.根据权利要求10所述的方法,其中,所述帧缓冲器描述符信息包括对显示管道和平面的指示,所述显示管道和平面与指派给所述第一客户机的特定虚拟功能(VF)相关联。
14.根据权利要求13所述的方法,进一步包括:
使每个VF与一个或多个虚拟显示管线和平面相关联。
15.根据权利要求14所述的方法,进一步包括:
将每个VF与一个或多个虚拟显示管道和平面之间的所述关联存储在所述帧缓冲器描述符中。
16.根据权利要求11所述的方法,其中,所述VDD将生成翻页操作以直接将所述帧缓冲器发到本地显示器。
17.根据权利要求10所述的方法,其中,所述PF驱动器将使所述帧缓冲器根据所述帧缓冲器描述符信息而被显示在远程显示器上。
18.根据权利要求10所述的方法,其中,所述主机处理器和执行电路被集成到交通工具中信息(IVI)系统,并且其中所述第一VM包括仪器集群VM,其中第二VM包括信息娱乐VM。
19.一种在其上存储有程序代码的机器可读介质,所述程序代码在由机器执行时使所述机器执行以下操作:
生成第一客户机的帧缓冲器描述符信息,所述第一客户机在主机处理器的虚拟化执行环境中的第一虚拟机(VM)上运行,所述帧缓冲器描述符信息用于指示指派给所述第一客户机的一个或多个显示管道;
将所述帧缓冲器描述符信息存储在配置寄存器中;以及
由与所述第一客户机相关联的第一驱动器根据所述帧缓冲器描述符信息在与所述显示管道中的一个显示管道相关联的平面中显示帧缓冲器。
20.根据权利要求19所述的机器可读介质,其中,所述第一驱动器包括与所述第一VM相关联的虚拟显示驱动器(VDD),并且其中,显示所述帧缓冲器的请求将由管理程序捕获并被发送到第二VM的物理功能(PF)驱动器,其中所述PF驱动器将使所述帧缓冲器根据所述帧缓冲器描述符信息而被显示。
21.根据权利要求20所述的机器可读介质,其中,所述PF驱动器将从所述帧缓冲器描述符信息来标识所述帧缓冲器的存储位置。
22.根据权利要求19所述的机器可读介质,其中,所述帧缓冲器描述符信息包括对显示管道和平面的指示,所述显示管道和平面与指派给所述第一客户机的特定虚拟功能(VF)相关联。
23.根据权利要求22所述的机器可读介质,进一步包括程序代码,所述程序代码用于使所述机器执行以下操作:
使每个VF与一个或多个虚拟显示管线和平面相关联。
24.根据权利要求23所述的机器可读介质,进一步包括程序代码,所述程序代码用于使所述机器执行以下操作:
将每个VF与一个或多个虚拟显示管道和平面之间的所述关联存储在所述帧缓冲器描述符中。
25.根据权利要求20所述的机器可读介质,其中,所述VDD将生成翻页操作以直接将所述帧缓冲器发到本地显示器。
26.根据权利要求19所述的机器可读介质,其中,所述PF驱动器将使所述帧缓冲器根据所述帧缓冲器描述符信息而被显示在远程显示器上。
27.根据权利要求19所述的机器可读介质,其中,所述主机处理器和执行电路被集成到交通工具中信息(IVI)系统,并且其中所述第一VM包括仪器集群VM,其中第二VM包括信息娱乐VM。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2018/118649 WO2020107427A1 (en) | 2018-11-30 | 2018-11-30 | Apparatus and method for a virtualized display |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112334878A true CN112334878A (zh) | 2021-02-05 |
Family
ID=70852698
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880095009.1A Pending CN112334878A (zh) | 2018-11-30 | 2018-11-30 | 用于虚拟化显示器的装置和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US12020054B2 (zh) |
CN (1) | CN112334878A (zh) |
DE (1) | DE112018007634T5 (zh) |
WO (1) | WO2020107427A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113868174A (zh) * | 2021-10-11 | 2021-12-31 | 摩尔线程智能科技(北京)有限责任公司 | 验证平台搭建方法、装置及存储介质 |
CN116149759A (zh) * | 2023-04-20 | 2023-05-23 | 深圳市吉方工控有限公司 | Uefi驱动卸载方法、装置、电子设备及可读存储介质 |
CN116320469A (zh) * | 2023-05-16 | 2023-06-23 | 摩尔线程智能科技(北京)有限责任公司 | 一种虚拟化视频编解码系统及方法、电子设备和存储介质 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210165673A1 (en) * | 2019-12-02 | 2021-06-03 | Microsoft Technology Licensing, Llc | Enabling shared graphics and compute hardware acceleration in a virtual environment |
JP7491642B2 (ja) * | 2020-03-27 | 2024-05-28 | パナソニックオートモーティブシステムズ株式会社 | 表示制御装置 |
CN113971070B (zh) * | 2021-10-28 | 2024-05-28 | 上海交通大学 | 适用于多虚拟机同屏显示的方法及系统 |
US11748283B1 (en) * | 2022-03-18 | 2023-09-05 | Intel Corporation | Scalable I/O virtualization interrupt and scheduling |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7644407B2 (en) * | 2004-03-05 | 2010-01-05 | Intel Corporation | Method, apparatus and system for seamlessly sharing a graphics device amongst virtual machines |
US20080088636A1 (en) * | 2006-10-13 | 2008-04-17 | Nee Shen Ho | System and method for the display and control of virtual environments in a single pipe graphics memory controller hub using picture-in-picture |
US20080286315A1 (en) | 2007-01-31 | 2008-11-20 | Penta Biotech, Inc. | Methionine Enkephalin as an Adjuvant for Vaccine Immunizations |
CN101241445B (zh) * | 2007-02-08 | 2011-07-27 | 联想(北京)有限公司 | 虚拟机系统及其访问显卡的方法 |
US20100321395A1 (en) | 2009-06-18 | 2010-12-23 | Apple Inc. | Display simulation system and method |
KR20120072246A (ko) | 2010-12-23 | 2012-07-03 | 한국전자통신연구원 | 가상화 화면제어시스템 및 그 방법 |
KR20130026713A (ko) * | 2011-09-06 | 2013-03-14 | 한국전자통신연구원 | 다중 3차원 게임 서비스 장치 및 방법 |
CN106098022B (zh) * | 2016-06-07 | 2019-02-12 | 北京小鸟看看科技有限公司 | 一种缩短图像延迟的方法和装置 |
US10741128B2 (en) * | 2017-03-28 | 2020-08-11 | Intel Corporation | Dual scan out display system |
-
2018
- 2018-11-30 DE DE112018007634.2T patent/DE112018007634T5/de active Pending
- 2018-11-30 WO PCT/CN2018/118649 patent/WO2020107427A1/en active Application Filing
- 2018-11-30 CN CN201880095009.1A patent/CN112334878A/zh active Pending
- 2018-11-30 US US17/256,204 patent/US12020054B2/en active Active
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113868174A (zh) * | 2021-10-11 | 2021-12-31 | 摩尔线程智能科技(北京)有限责任公司 | 验证平台搭建方法、装置及存储介质 |
CN113868174B (zh) * | 2021-10-11 | 2024-02-06 | 摩尔线程智能科技(北京)有限责任公司 | 验证平台搭建方法、装置及存储介质 |
CN116149759A (zh) * | 2023-04-20 | 2023-05-23 | 深圳市吉方工控有限公司 | Uefi驱动卸载方法、装置、电子设备及可读存储介质 |
CN116320469A (zh) * | 2023-05-16 | 2023-06-23 | 摩尔线程智能科技(北京)有限责任公司 | 一种虚拟化视频编解码系统及方法、电子设备和存储介质 |
CN116320469B (zh) * | 2023-05-16 | 2024-03-01 | 摩尔线程智能科技(北京)有限责任公司 | 一种虚拟化视频编解码系统及方法、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2020107427A1 (en) | 2020-06-04 |
US12020054B2 (en) | 2024-06-25 |
US20210263755A1 (en) | 2021-08-26 |
DE112018007634T5 (de) | 2021-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12020054B2 (en) | Apparatus and method for a virtualized display | |
US11514550B2 (en) | Apparatus and method for display virtualization using mapping between virtual and physical display planes | |
US10552937B2 (en) | Scalable memory interface for graphical processor unit | |
US10424043B1 (en) | Efficiently enqueuing workloads from user mode to hardware across privilege domains | |
WO2019067058A1 (en) | AUTOMATIC ACTIVATION OF POWER DOMAINS FOR GRAPHIC CONFIGURATION REQUESTS | |
US10579382B2 (en) | Method and apparatus for a scalable interrupt infrastructure | |
WO2020107405A1 (en) | Apparatus and method for efficient local display sharing for a virtualized graphics processor | |
US10937119B2 (en) | Apparatus and method for virtualized scheduling of multiple duplicate graphics engines | |
US20240061700A1 (en) | Virtualization and multi-tenancy support in graphics processors | |
CN111798362A (zh) | 硬件索引映射机制 | |
US10613972B2 (en) | Dynamic configuration of caches in a multi-context supported graphics processor | |
US10726605B2 (en) | Method and apparatus for efficient processing of derived uniform values in a graphics processor | |
CN111708718A (zh) | 存储器压缩散列机制 | |
US10839597B2 (en) | Apparatus and method for multi-frequency vertex shading | |
CN110969684A (zh) | 用于多速率像素着色的多期架构 | |
EP3618007A1 (en) | Apparatus and method for runtime training of a denoising machine learning engine | |
CN113544641A (zh) | 针对图形处理器和相关联的装置用于无缝容器迁移的设备和方法 | |
US10929134B2 (en) | Execution unit accelerator | |
CN114155134A (zh) | 一种互连系统栅栏机构 | |
WO2020061898A1 (en) | Apparatus and method for graphics virtualization with late synchronization | |
US10839477B2 (en) | Tile aware sector cache for graphics | |
US20200151847A1 (en) | Workload management for distributed geometry processing | |
EP3734454A1 (en) | Memory mapped virtual doorbell mechanism | |
US20190265973A1 (en) | Fusion of SIMD Processing Units |
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 |