CN110083547A - 异构计算系统及其操作方法 - Google Patents
异构计算系统及其操作方法 Download PDFInfo
- Publication number
- CN110083547A CN110083547A CN201910053535.8A CN201910053535A CN110083547A CN 110083547 A CN110083547 A CN 110083547A CN 201910053535 A CN201910053535 A CN 201910053535A CN 110083547 A CN110083547 A CN 110083547A
- Authority
- CN
- China
- Prior art keywords
- kernel
- group
- processor
- cache
- gpu
- 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
- 238000011017 operating method Methods 0.000 title description 2
- 230000003993 interaction Effects 0.000 claims abstract description 8
- 238000003860 storage Methods 0.000 claims description 74
- 238000012545 processing Methods 0.000 claims description 61
- 238000000034 method Methods 0.000 claims description 32
- 238000000151 deposition Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 38
- 230000008569 process Effects 0.000 description 16
- 238000004458 analytical method Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 9
- 238000004590 computer program Methods 0.000 description 7
- 238000009826 distribution Methods 0.000 description 7
- 230000009471 action Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000010977 jade Substances 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
- G06F12/0824—Distributed directories, e.g. linked lists of caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/509—Offload
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
异构计算系统包括异构的第一处理器和第二处理器。第二处理器被配置为按次序执行从第一处理器卸载的多个内核。一致性控制器被配置为在所述多个内核被执行之前,基于包括在所述多个内核中的每一个中的指令的属性将所述多个内核中的每一个分类至第一组和第二组中的一组,并且还被配置为基于在所述多个内核中的一个内核的执行的过程中第一处理器与第二处理器之间产生的交互将所述多个内核中的所述一个内核从第二组重新分类至第一组。
Description
相关申请的交叉引用
于2018年1月25日向韩国知识产权局提交的韩国专利申请No.10-2018-0009400通过引用整体并入本文。
技术领域
本文所述的本发明构思的实施例涉及包括不同类型的处理器的异构计算系统,并且更具体地说,涉及控制异构计算系统中的高速缓存一致性。
背景技术
随着半导体技术的进步,包括多个处理器的计算系统正在被积极地研究。具体地说,基于各种因素(包括处理复杂的和各种操作的能力、用户需求的增加等),不包括同构处理器而包括异构处理器的异构计算系统应用范围正在扩大。通常,异构计算系统可包括中央处理单元(CPU)和图形处理单元(GPU)。
任务分配对于提高异构计算系统的计算能力而言是重要的。诸如图形处理的相对复杂的操作通常由GPU执行。GPU对程序和/或内核的处理可能不会在GPU阶段完成,GPU对程序和/或内核的处理结果可与CPU共享。在这个过程中,由于数据在CPU和GPU之间共享,可出现高速缓存一致性问题。
在考虑异构计算系统的高速缓存一致性时,通常不考虑待由GPU处理的程序和/或内核的工作负载。通常,考虑高速缓存命中或高速缓存未命中来控制高速缓存一致性。因此,当CPU与GPU之间的数据共享频繁时,可以以非高速缓存一致的方式处理程序和/或内核。当CPU与GPU之间很少或不常共享数据时,可以以高速缓存一致的方式处理程序和/或内核。在资源管理、电源管理和系统性能方面,上述数据处理和高速缓存管理可能不理想。
发明内容
本发明构思的实施例提供一种其中基于被CPU和GPU共享的数据适应性地控制高速缓存一致性的异构计算系统。
根据本发明构思的一些实施例,一种异构计算系统可包括:第一处理器;第二处理器,其被配置为按次序执行从所述第一处理器卸载的多个内核,所述第一处理器和所述第二处理器是异构的;以及一致性控制器,其被配置为在所述多个内核被执行之前,基于包括在所述多个内核中的每一个中的指令的属性将所述多个内核中的每一个分类至第一组和第二组中的一组。所述一致性控制器还被配置为基于在所述多个内核中的一个内核的执行的过程中所述第一处理器与所述第二处理器之间的交互,将所述多个内核中的所述一个内核从所述第二组重新分类至所述第一组。
根据本发明构思的其它实施例,一种操作包括异构的第一处理器和第二处理器的异构计算系统的方法,该方法包括以下步骤:将多个内核从第一处理器卸载至第二处理器;基于包括在所述多个内核中的每一个中的指令的属性,将所述多个内核中的每一个分类至第一组和第二组中的一组;利用所述第二处理器按次序执行所述多个内核,其中,可按照高速缓存一致方式执行所述多个内核中属于所述第一组的第一内核,并且可按照非高速缓存一致方式执行所述多个内核中属于所述第二组的第二内核;以及基于在执行所述多个内核中的所述第二内核中的一个第二内核的过程中所述第一处理器与所述第二处理器之间的交互,将所述多个内核中的所述第二内核中的所述一个第二内核从所述第二组重新类至所述第一组。
根据本发明构思的其它一些实施例,一种异构计算系统可包括:CPU;GPU,其按次序执行从CPU卸载的多个内核;以及一致性控制器,其被配置为在所述多个内核被执行之前基于包括在所述多个内核中的每一个中的指令的属性,将所述多个内核中的每一个分类至第一组和第二组中的一组,并且还被配置为基于在多个内核中的一个内核的执行的过程中CPU与GPU之间的交互,将所述多个内核中的所述一个内核从第二组重新分类至第一组。
附图说明
通过参照附图详细描述本发明构思的示例实施例,本发明构思的以上和其它目的和特征将变得清楚。
图1是示出根据本发明构思的实施例的异构计算系统的示例配置的框图;
图2是示出根据本发明构思的一些实施例的异构计算系统的示例配置的框图;
图3A是示出根据本发明构思的一些实施例的图2所示的异构计算系统的另一示例配置的框图;
图3B是示出根据本发明构思的一些实施例的图2所示的异构计算系统的另一示例配置的框图;
图3C是示出根据本发明构思的一些实施例的图2所示的异构计算系统的另一示例配置的框图;
图3D是示出根据本发明构思的一些实施例的图2所示的异构计算系统的另一示例配置的框图;
图4是示出根据本发明构思的一些实施例的异构计算系统的配置和操作的框图;
图5是概念性地示出根据本发明构思的一些实施例的图4所示的第一一致性冲突分析器的操作的示图;
图6是概念性地示出根据本发明构思的一些实施例的图4所示的第二分析器或一致性冲突跟踪器的操作的示图;
图7A和图7B是概念性地示出根据本发明构思的一些实施例的如何通过图形处理单元(GPU)执行从中央处理单元(CPU)卸载的内核的示图;
图8是示出根据本发明构思的一些实施例的在CPU与GPU之间进行频繁的数据共享(即,动态共享)的示例的示图;
图9是概念性地示出根据本发明构思的一些实施例的用于确定在CPU与GPU之间进行数据的动态共享的示例操作的框图;
图10是概念性地示出根据本发明构思的一些实施例的用于确定在CPU与GPU之间进行数据的动态共享的其它示例操作的框图;
图11是概念性地示出根据本发明构思的一些实施例的用于确定在CPU与GPU之间进行数据的动态共享的其它示例操作的框图;
图12是示出根据本发明构思的一些实施例的控制异构计算系统的高速缓存一致性的方法的流程图;
图13是示出根据本发明构思的一些实施例的控制异构计算系统的高速缓存一致性的方法的流程图。
具体实施方式
下文中,参照附图详细描述本发明构思的实施例。在整个附图的描述中,相同的标号指代相同元件。应该注意,参照一个实施例描述的本发明的各方面可与不同实施例结合,尽管对于这一点没有明确描述。也就是说,任何实施例的所有实施例和/或特征可按照任何方式和/或组合进行组合。
如本文所用,术语“实时”意指执行操作而不插入任何计划或人工延迟。
本发明构思的一些实施例源于这样的事实,即在包括例如中央处理单元(CPU)和图形处理单元(GPU)的异构计算系统中,可主要基于通过不同处理器的高速缓存命中和未命中管理高速缓存一致性。这可导致这种情况:即使在处理器之间经常共享数据时,也以非高速缓存一致方式执行内核,也可导致这种情况:即使在处理器之间很少共享数据时,也以高速缓存一致性方式执行内核。本发明的实施例可提供高速缓存一致性控制器,其被配置为在执行之前,基于对内核各自的指令的分析,将内核分类为非高速缓存一致组或高速缓存一致组。然而,高速缓存一致性控制器可进一步被配置为在两个组之间对内核重新分类,诸如基于对执行内核时处理器之间的数据共享的分析,将内核从非高速缓存一致组重新分类为高速缓存一致组。结果,重新分类可以通过将高速缓存存储器适应性地用于其中数据更可能和/或更频繁地在处理器之间共享的那些内核来提高系统性能。
图1是示出根据本发明构思的一些实施例异构计算系统100的示例配置的框图。异构计算系统100可包括两个或更多个异构处理器110和120以及一致性控制器130。构成异构计算系统100的组件可通过总线180以通信方式连接。
另外,在另一实施例中,片上系统SoC可实施为包括存储器控制器140、存储装置控制器150、通信模块160和显示适配器170。系统存储器145可连接至存储器控制器140。存储装置(storage)155可连接至存储装置控制器150。显示器175可连接至显示适配器170。
异构计算系统100可包括一个或多个电子装置,诸如台式计算机、笔记本计算机、平板、智能电话、可穿戴装置、视频游戏机、工作站和服务器。在一些实施例中,两个或更多个异构处理器110和120以及一致性控制器130可以是在这些装置中实现的片上系统SoC。
可将两个或更多个异构处理器110和120设置在一个芯片中,以提供异构计算环境。例如,两个或更多个异构处理器110和120可包括中央处理单元(CPU)110和图形处理单元(GPU)120。
CPU 110可控制异构计算系统100的整体操作。CPU 110可处理各种算术操作和/或逻辑操作。在一些实施例中,CPU 110可为包括一个或多个处理器核的多核处理器。CPU 110可包括由所述一个或多个处理器核使用以执行各种操作的高速缓存存储器。高速缓存存储器可临时存储由CPU 110使用以执行应用的命令和/或参数值。
GPU 120可执行2D和/或3D处理。GPU 120可用于执行渲染以通过显示器175输出图像。另外,GPU 120可用于执行复杂操作,诸如几何结构的计算和标量浮点与矢量浮点的计算。GPU 120可执行利用诸如OpenCL、OpenGL或WebGL的应用程序编程接口(API)编码的各种命令。GPU 120可包括专用存储器。在这种情况下,嵌入于GPU 120中或者连接至GPU 120的专用存储器可用作帧缓冲器、纹理映射和/或阵列存储空间。
一致性控制器130可被配置为保持CPU 110与GPU 120之间的高速缓存一致性。例如,一致性控制器130可控制关于在CPU 110与GPU 120之间频繁交换的数据和/或变量的信息。例如,一致性控制器130可允许CPU 110共享对从CPU 110卸载并由GPU 120处理的内核的处理结果。
如下面更详细的描述,一致性控制器130可预先分析从CPU 110卸载并且将由GPU120执行的内核,并且可将内核分为两组。例如,分类后的组中的第一组可包括其中在CPU110与GPU 120之间频繁出现数据共享的具有存储器约束(memory-bound)特性的内核。分类后的组中的第二组可包括其中CPU 110与GPU 120之间很少出现或低频率出现数据共享的具有计算约束(compute-bound)特性的内核。
另外,在通过GPU 120执行内核的同时一致性控制器130可将属于第二组的内核进行重新分类。例如,一致性控制器130可将以下这种内核进行重新分类为第一组:被确定为属于第二组但是经历CPU110与GPU 120之间的频繁数据共享的内核。通过包括在CPU 110和GPU 120中的高速缓存存储器,CPU 110和GPU 120可共享属于第一组的内核的处理结果。相反,通过系统存储器145,CPU 110和GPU 120可共享属于第二组的内核的处理结果。
存储器控制器140可控制系统存储器145。例如,存储器控制器140可控制异构计算系统100与系统存储器145之间的数据输入/输出。
系统存储器145可临时存储由CPU110和/或GPU 120处理的数据或将由CPU 110和/或GPU 120处理的数据。在引导操作中,将操作系统(OS)、基本应用程序和/或固件加载至系统存储器145中。例如,在引导异构计算系统100时,存储在存储装置155中的OS图像可基于引导次序被加载至系统存储器145中。异构计算系统100的整体输入/输出操作可由操作系统OS支持。另外,可将由用户选择或者用于提供基本服务的(例如,与图形处理关联的)应用程序和/或固件加载至系统存储器145。
例如,系统存储器145可包括易失性存储器(诸如动态随机存取存储器(DRAM)或同步DRAM(SDRAM))和/或非易失性存储器(诸如相变RAM(PRAM)、磁阻RAM(MRAM)、电阻式RAM(ReRAM)或铁电RAM(FRAM))。然而,为了描述的目的,下面假设通过基于双倍数据速率(DDR)接口的DRAM实施系统存储器。
存储装置控制器150可控制存储装置155。例如,存储装置控制器150可控制异构计算系统100与存储装置155之间的数据输入/输出。
存储装置155可包括一个或多个存储器装置和控制器。存储装置155的存储器装置可不管电源如何都保持数据。例如,存储装置155可包括诸如闪速存储器、PRAM、MRAM、ReRAM或FRAM的非易失性存储器。例如,存储装置155可包括诸如固态驱动(SSD)、可移动存储、嵌入式存储等的存储介质。
通信模块160可与异构计算系统100的外部装置/系统通信。如图1所示,通信模块160的功能的至少一部分可并入包括CPU 110、GPU 120和一致性控制器130的SoC中。然而,在其它实施例中,通信模块160可以是独立于SoC制造的功能块、电路或半导体芯片。
例如,通信模块160可支持诸如以下(但不限于此)的一个或多个无线通信协议:长期演进(LTE)、微波接入全球互操作性(WiMax)、全球移动通信系统(GSM)、码分多址(CDMA)、蓝牙、近场通信(NFC)、无线保真(Wi-Fi)和射频识别(RFID);和/或诸如以下(但不限于此)的一个或多个有线通信协议:传输控制协议/互联网协议(TCP/IP)、通用串行总线(USB)和火线。
总线180可在异构计算系统100的组件之间提供通信路径。例如,总线180可包括片外互连。异构计算系统100的组件可基于总线180的总线格式彼此交换数据。例如,总线格式可包括各种接口协议中的一个或多个,诸如USB、小型计算机系统接口(SCSI)、快速外围组件互连(PCIe)、移动PCIe(M-PCIe)、高级技术附件(ATA)、并行ATA(PATA)、串行ATA(SATA)、串行附接SCSI(SAS)、集成驱动电子(IDE)、增强型IDE(EIDE)、快速非易失性存储器(NVMe)和通用闪存(UFS)。
图2是示出根据本发明构思的一些实施例的异构计算系统的示例配置的框图。与参照图1描述的实施例不同,异构计算系统200可通过基于片上互连的片上网络(NoC)实施。
异构计算系统200可具有包括硬件知识产权(IP)的一个或多个模块。硬件IP可包括两个或更多个异构处理器210和220、一致性控制器230、存储器控制器240、存储装置控制器250、通信模块260和显示适配器270。异构计算系统200的配置不限于此。例如,异构计算系统200还可包括硬件IP 280。例如,硬件IP 280可以是用于为用户提供便利的用户接口,诸如相机模块、音频模块或触摸垫。
系统存储器245可连接至存储器控制器240,并且存储装置255可连接至存储装置控制器250。显示器275可连接至显示适配器270。硬件IP与参照图1描述的组件基本相同,因此,这里将不重复对其的详细描述。
然而,硬件IP中的每一个可包括网络接口单元NIU。网络接口单元NIU提供用于在硬件IP之间通信的接口。硬件IP可通过网络接口单元NIU和路由器“R”彼此连接。例如,路由器“R”可包括缓冲器和片上网络交换机。硬件IP可通过片上网络交换机的交换操作以通信方式连接。
路由器“R”、将路由器“R”彼此连接的物理链接以及将路由器“R”与网络接口单元NIU连接的物理链接称作“片上互连”。硬件IP之间的平行通信可通过片上互连执行。
根据上面简单描述的异构计算系统100和200的示例配置,预先并且实时地分析从CPU卸载的内核。因为基于分析结果通过高速缓存存储器进行CPU与GPU之间的数据共享,所以访问共享的数据的速度可提高。另外,因为数据不会通过系统存储器被不必要地共享,因此可防止或减少系统性能降低或劣化。
图3A是示出根据本发明构思的一些实施例的图2所示的异构计算系统200的示例配置的框图。异构计算系统300a可包括CPU 310a、GPU 320a、一致性控制器330a、存储器控制器340a、系统存储器345a、存储装置控制器350a和存储装置355a。异构计算系统300a的组件分别对应于图2所示的组件,并且具有相似的标号。因此,下面将不重复上面提供的描述,并且将基于先前描述的实施例之间的差异描述异构计算系统300a的具体操作。
CPU310a和GPU 320a中的每一个包括最后一级高速缓存LLC。虽然为了简化图示,在图3A中未示出,但是CPU 310a和GPU 320a中的每一个还可包括较更高级高速缓存。CPU310a和GPU 320a可通过片上互连390a与一致性控制器330a通信。片上互连390a可支持通过利用最后一级高速缓存LLC中的至少一个执行的CPU310a与GPU320a之间的数据共享。
一致性控制器330a可通过片上互连390a与异构计算系统300a的组件通信。片上互连390a可支持高速缓存一致性互连CCI和非高速缓存一致性互连NCCI二者。片上互连390a可包括执行CCI与NCCI之间的交换操作的(例如,包括在图2的路由器“R”中的)片上网络交换机,使得由CPU 310a和/或GPU 320a处理的数据通过任何其它硬件/软件组件被处理。
GPU驱动器346a提供使得加载至系统存储器345a的应用能够与GPU 320a通信的接口。例如,GPU驱动器346a可从待在异构计算系统300a或框架上执行的应用中调用程序。被GPU驱动器346a调用的程序可由GPU 320a执行。也就是说,被GPU驱动器346a调用的程序可包括被CPU 310a卸载以在GPU 320a上执行的多个内核(下文中称作“GPU内核”)。可将GPU驱动器346a加载至系统存储器345a。
内核调度器348a可调度将在CPU 310a和/或GPU 320a上执行的内核以及各个内核的线程。内核调度器348a可分析并识别将在CPU310a和/或GPU 320a上执行的内核。另外,内核调度器348a可以是通过利用诸如OpenGL的API生成的程序。内核调度器348a可以是存储在存储装置355a中并且被加载至系统存储器345a并在系统存储器345a上执行的程序。
图3B是示出根据本发明构思的一些实施例的图2所示的异构计算系统200的另一示例配置的框图。异构计算系统300b的配置和操作与图3A所示的异构计算系统300a相似,并且将基于与先前描述的实施例的差异进行描述。
CPU 310b和GPU 320b可通过片上互连390b与构成异构计算系统300b的硬件和软件组件通信。特别地,可将控制CPU 310b与GPU320b之间的数据共享的一致性控制器330b设置在存储器控制器340b中。在图3B的实施例中,片上互连390b可支持CCI和NCCI二者。
可在存储器控制器340b中实施一致性控制器330b。例如,可通过一致性控制器330b的高速缓存一致性目录,参考与其中频繁进行CPU 310b与GPU 320b之间的数据共享的GPU内核关联的数据。也就是说,因为利用CPU 310b和GPU 320b的最后一级高速缓存LLC而不是利用系统存储器345b来共享数据,所以可提高GPU内核的处理速度,并且可防止或减少系统存储器345b资源的不必要浪费。
图3C是示出根据本发明构思的一些实施例的图2所示的异构计算系统200的另一示例配置的框图。异构计算系统300c的配置和操作与图3A或图3B所示的异构计算系统300a或300b相似,并且将基于与先前描述的实施例的差异进行描述。
可在CPU 310c和GPU 320c二者中实施一致性控制器330c。例如,可在CPU 310c中实施第一一致性控制器CH CTRL1,并且可在GPU320c中实施第二一致性控制器CH CTRL2。第一一致性控制器CH CTRL1和第二一致性控制器CH CTRL2可不被配置为存储相同数据。也就是说,第二一致性控制器CH CTRL2可以不是第一一致性控制器CH CTRL1的复制品。然而,第一一致性控制器CH CTRL1和第二一致性控制器CH CTRL2可通过片上互连390c彼此连接以共享数据。
例如,可通过第一一致性控制器CH CTRL1的高速缓存一致性目录或者第二一致性控制器CH CTRL2的高速缓存一致性目录来参考与其中频繁进行CPU 310c与GPU 320c之间的数据共享的GPU内核关联的数据。也就是说,通过利用CPU 310c和GPU 320c的最后一级高速缓存LLC而不是系统存储器345c来共享数据。
图3D是示出根据本发明构思的一些实施例的图2所示的异构计算系统200的另一示例配置的框图。异构计算系统300d的配置和操作与图3A所示的异构计算系统300a相似,并且将基于与先前描述的实施例的差异来进行描述。然而,异构计算系统300d可包括共享的最后一级高速缓存。例如,可在CPU 310d和GPU 320d外部实施共享的最后一级高速缓存。
参照图3A至图3D描述图2的异构计算系统200的示例配置。然而,本发明构思不限于基于片上互连的片上网络。也就是说,可将本发明构思应用于图1所示的基于片外的片上系统。然而,在下面描述的实施例中,将基于本发明构思应用于基于片上互连的片上网络的假设提供描述。
图4是示出根据本发明构思的一些实施例的异构计算系统的配置和操作的框图。异构计算系统400可包括CPU 410、GPU 420、一致性控制器430和系统存储器445。如上所述,CPU 410、GPU 420和一致性控制器430可构成利用一个芯片制造的片上网络。
首先,针对示出的目的,假设从CPU 410卸载的程序包括多个内核,并且按次序执行所述多个内核。在GPU 420执行GPU内核之前可分析GPU内核。例如,加载至系统存储器445并且在其上执行的编译器446可分析各个内核的指令。所述多个内核的指令可包括算术命令、加载和存储命令、纹理命令和/或任何其它命令。将编译器446的分析结果(即,内核指令分布)转移至第一分析器(即,一致性冲突分析器;CIA)434。
一致性控制器430可包括高速缓存一致性目录432、第一分析器434和第二分析器(即,一致性冲突跟踪器;CIT)436。高速缓存一致性目录432可包括待被CPU 410和/或GPU420参考的数据类型、高速缓存地址、共享信息和有效性信息。这里,共享信息包括关于待被高速缓存地址参考的数据是否被CPU 410和GPU 420共享的信息。
在GPU内核被执行之前,第一分析器434可静态地分析每个内核。例如,基于从编译器446接收到的内核指令分布,第一一致性冲突分析器434可确定各个内核具有存储器约束特性还是计算约束特性。
如果内核的具有特定属性的指令与所有指令的比例大于或等于阈值,则第一分析器434可将对应的内核分类为具有存储器约束特性的内核。这里,具有特定属性的指令可以是与从CPU 410加载和/或存储到CPU 410相关的指令。换句话说,从CPU 410加载可以意味着卸载GPU内核和/或加载CPU 410的中间处理结果。针对CPU 410的存储可以返回GPU 420的中间处理结果或最终处理结果。
可将第一一致性冲突分析器434的分析结果存储在CPU 410的存储器(例如,最后一级高速缓存LLC和/或更高级高速缓存)中,但是本发明构思的实施例不限于此。
在图4的实施例中,第一一致性冲突分析器434示为包括在一致性控制器430中的硬件块。然而,在其它实施例中,作为替代或另外,一致性控制器430可以是加载至系统存储器445和在其上执行的软件模块,或者可以包括在GPU 420中或连接至GPU 420的专用存储器(未示出)。
CPU 410或GPU 420可执行通过第一分析器434分类的内核。也就是说,可按照高速缓存一致方式处理具有存储器约束特性的内核,并且可通过最后一级高速缓存LLC共享内核的处理结果。相反,可按照非高速缓存一致方式处理具有计算约束特性的内核,并且可通过系统存储器445共享内核的处理结果。
可基于编译器446的分析结果通过均匀地分析内核提高CPU 410与GPU 420之间的数据共享的效率。然而,在执行待按照非高速缓存一致方式处理的内核的同时,可在CPU410与GPU 420之间进行数据交换(即,交互)。在这种情况下,通过最后一级高速缓存LLC的数据共享可比通过系统存储器445的数据共享更有效。
在本发明构思的一些实施例中,在执行内核的同时第二分析器436可将具有计算约束特性的内核重新分类。例如,第二分析器436可实时地监视CPU 410与GPU 420之间的数据交换。另外,第二一致性冲突跟踪器436可额外监视与CPU 410与GPU 420之间的数据交换关联的各种因素。下面将更充分地描述其中第二一致性冲突跟踪器436将正被执行的内核重新分类的过程。
当确定在待按照非高速缓存一致方式处理的内核被执行的同时数据在CPU 410与GPU 420之间基于一定频率交换时,第二分析器436可更新高速缓存一致性目录432,使得正被执行的内核按照高速缓存一致方式被处理。结果,可通过最后一级高速缓存LLC进行执行内核期间的CPU 410和GPU 420的数据共享。也就是说,可将存储在系统存储器445中的共享的数据复制到共享高速缓存区。
上述图4的实施例是基于图3A的。然而,可通过合适的修改/改变将图4的实施例应用于图3B至图3D的实施例。
图5是概念性地示出根据本发明构思的一些实施例的图4所示的第一一致性冲突分析器434的操作的示图。如上所述,从CPU卸载的程序包括由CPU 410或GPU 420按次序执行的多个GPU内核Kernel#1至Kernel#N。为了更好地理解,将参照图4和图5一起进行描述。
在执行之前通过编译器446分析GPU内核Kernel#1至Kernel#N。第一分析器434可基于分析结果(即,内核指令的分布)按次序对待被执行的内核分类。例如,第一一致性冲突分析器434可将预计在CPU 410与GPU 420之间的数据交换频繁的内核分类为第一组。可按照高速缓存一致方式处理由CCI指示的属于第一组的内核。相反,第一分析器434可对预计在CPU 410与GPU 420之间的数据交换很少或不频繁的内核分类为第二组。可按照非高速缓存一致方式处理由NCCI指示的第二组内核。
然后,GPU 420可从内核Kernel#1至内核Kernel#N按次序执行内核。
图6是概念性地示出图4所示的第二分析器或第二一致性冲突跟踪器436的操作的示图。为了更好地理解,将参照图4和图6一起提供描述。
第二一致性冲突跟踪器436可在每个内核被执行的同时监视CPU 410与GPU 420之间的数据交换等,并且可基于监视结果将正被执行的内核重新分类。监视和重新分类所针对的内核是由NCCI指示的第二组的内核。可将第二组的内核中的确定CPU 410与GPU 420之间的数据交换频繁的内核重新分类为属于第一组。例如,可考虑交换次数和/或交换频率。在实施例中,图6中的示例示出为内核Kernel#N-1和Kernel#N被重新分类为属于第一组。
第二一致性冲突跟踪器436可关于重新分类的内核Kernel#N-1和Kernel#N更新高速缓存一致性目录432。随着高速缓存一致性目录432更新,可更新重新分类的内核Kernel#N-1和Kernel#N的数据类型、高速缓存地址、共享信息和有效性信息。也就是说,CPU 410和GPU 420可参考高速缓存一致性目录432信息通过最后一级高速缓存LLC而不是系统存储器445共享数据。
图7A和图7B是概念性地示出怎样通过根据本发明构思的一些实施例的GPU执行从CPU卸载的内核的示图。为了更好地理解,将参照图4和图6一起提供描述。
图7A示出了在CPU 410与GPU 420之间不共享数据的示例。转移从CPU 410卸载的内核,作为GPU 420的输入。GPU 420处理该被卸载的内核的线程。例如,图7A的实施例可对应于对包括在GPU 420中或连接至GPU 420的专用存储器进行初始化的情况。因为仅通过GPU 420处理线程,所以在CPU 410与GPU 420之间不共享数据。在这种情况下,因为不需要按照高速缓存一致方式处理内核,因此可按照非高速缓存一致方式处理内核。
图7B示出了在CPU 410与GPU 420之间曾经进行数据共享的示例。GPU 420可处理从CPU 410卸载的内核的线程,并且处理结果转移至CPU 410。例如,图7B的实施例可对应于其中GPU 420执行所有操作并且CPU 410接收和处理操作结果的示例。即使在CPU 410与GPU420之间曾经共享数据,但是可按照非高速缓存一致方式连续处理正被执行的内核。
图8是示出在CPU 410与GPU 420之间频繁共享(即,动态共享)数据的示例的示图。为了更好地理解,将参照图4和图6一起提供描述。
例如,从CPU 410卸载的内核被输入至GPU 420,作为第一输入Input#1。GPU 420根据第一输入Input#1处理第一线程Threads#1,并且输出第一输出Output#1作为处理结果。CPU 410处理作为中间结果的第一输出Output#1,并且将中间结果输入至GPU 420作为第二输入Input#2。可通过一系列上述处理将通过GPU 420处理的第k输出Output#k输入至CPU410。
从图8中理解,CPU 410与GPU 420之间的数据交换是频繁的。例如,当图像帧被分割成多个图块并以图块为单位处理时,CPU 410与GPU 420之间的数据交换可以是频繁的。原因是,当处理构成图像帧的多个图块中的任一个时可使用邻近图块的邻接信息。对于另一示例,当执行复杂计算操作时,CPU 410与GPU 420之间的数据交换可以是频繁的。
第二分析器或一致性输入跟踪器436可实时监视CPU 410与GPU420之间的数据交换。第二一致性冲突跟踪器436可例如基于在CPU410与GPU 420之间交换的数据量、数据交换的次数等,确定在CPU 410与GPU 420之间进行了数据的动态共享。第二分析器或第二一致性冲突跟踪器436可将被确定为动态地共享数据的内核重新分类为第一组。另外,第二分析器或第二一致性冲突跟踪器436可关于正被执行的内核更新高速缓存一致性目录432。
随着高速缓存一致性目录432的更新,可通过最后一级高速缓存LLC而不是系统存储器445执行CPU 410与GPU 420之间的数据共享。也就是说,即使内核正被执行,可按照高速缓存一致方式而不是现有的非高速缓存一致方式(即,处理重新分类的内核以从非高速缓存一致方式转变为高速缓存一致方式的方式)处理被重新分类为属于第一组的内核。
图8中提供的描述涉及其中基于CPU 410与GPU 420之间的数据交换确定数据是否动态地共享的实施例。然而,作为另外一种选择或除此之外,在作出这种确定的过程中可另外应用其它标准。将参照图9、图10和图11描述所述实施例。
图9是概念性地示出根据本发明构思的一些实施例的确定在CPU 510与GPU 520之间动态地共享数据的操作的框图。为了更好地理解,将参照图4和图9一起提供描述。
首先,假设按照非高速缓存一致方式执行正被执行的内核,并且CPU 510和GPU520的处理结果Data1和Data2被存储在系统存储器545中。也就是说,通过系统存储器545执行CPU 510与GPU 520之间的数据共享。
如果CPU 510与GPU 520之间的数据交换频繁,则可频繁生成用于访问系统存储器545的具体区的命令和地址。在这种情况下,第二分析器或第二一致性冲突跟踪器536可监视用于访问系统存储器545的其中存储共享的数据的区的命令和/或地址。如果确定系统存储器545的其中存储共享的数据的区被频繁访问,则第二一致性冲突跟踪器536可确定通过CPU 510和GPU 520进行数据的动态共享。例如,命令和/或地址发出的次数或频率可被认为是确定数据的动态共享的标准。
在确定正被GPU 520执行的内核的处理结果被CPU 510频繁共享的示例中,可将由CPU 510和GPU 520共享的数据复制至CPU 510和GPU 520的最后一级高速缓存LLC中的至少一个。第二一致性冲突跟踪器536可更新高速缓存一致性目录532,并且CPU 510和/或GPU520可参考更新的高速缓存一致性目录532访问共享的数据。
图10是概念性地示出根据本发明构思的一些实施例的确定在CPU 610与GPU 620之间进行数据的动态共享的进一步操作的框图。在图10的实施例中,可在确定在CPU 610与GPU 620之间进行数据的动态共享时使用为了保持高速缓存一致性而发出的窥探请求(snoop request)和回复。为了更好地理解,将参照图4和图10一起提供描述。
CPU 610可为了保持包括CPU 610和GPU 620的异构计算系统600的高速缓存一致性而监视片上互连690。如果存储在GPU 620的最后一级高速缓存LLC中的数据的高速缓存一致性被保持,则片上互连690可将对应于高速缓存一致性的回复发送至CPU 610,反之亦然(即,存储在CPU 610的最后一级高速缓存LLC中的数据的高速缓存一致性)。
例如,当频繁生成窥探请求和回复时,可通过CPU 610和GPU 620的最后一级高速缓存LLC进行数据共享。因此,与窥探请求和回复关联的共享的数据可为可得益于快速处理的数据。
如果在CPU 610和/或GPU 620中未保持高速缓存一致性(即,窥探未命中),则片上互连690可访问系统存储器645的其中存储有共享的数据的区。在该示例中,第二一致性冲突跟踪器636可监视对其中存储有共享的数据的系统存储器645的访问。如上所述,因为在CPU 610与GPU 620之间频繁共享数据的同时可出现窥探未命中,所以可需要按照高速缓存一致方式快速处理在GPU 620中正被执行的内核。
第二分析器636可关于存储在系统存储器645中的共享的数据更新高速缓存一致性目录(例如,图4的432)。作为更新结果,可将存储在系统存储器645中的共享数据复制至CPU 610和/或GPU 620的最后一级高速缓存LLC,因此高速缓存一致性可被保持。然后,可按照高速缓存一致方式处理在GPU 620中正被执行的内核。
图11是概念性地示出根据本发明构思的一些实施例确定在CPU710与GPU 720之间进行数据的动态共享的其它操作的框图。在图11的实施例中,可在确定在CPU 710与GPU720之间进行数据的动态共享时使用共享虚拟存储器(SVM)。为了更好地理解,将参照图4和图11一起提供描述。
在其中在一个芯片中实施多个(特别地,异构)处理器的异构计算系统中,可针对异构处理器使用共享虚拟存储器,以有效地访问系统存储器。例如,可通过监视共享虚拟存储器中的通过CPU 710处理的写数据和共享虚拟存储器中的通过GPU 720处理的写数据确定数据共享。相似地,可监视来自共享虚拟存储器的读数据。
如果通过CPU 710和GPU 720频繁共享存储在系统存储器745中的数据,并且基于监视针对共享虚拟存储器的读/写的结果确定该共享,则第二一致性冲突跟踪器736可关于存储在系统存储器745中的共享的数据更新高速缓存一致性目录(例如,图4的432)。作为更新的结果,可将存储在系统存储器745中的共享数据复制至CPU 710和/或GPU 720的最后一级高速缓存LLC。然后,可按照高速缓存一致方式处理在GPU 720中正被执行的内核。
可使用各种标准确定是否在CPU 710与GPU 720之间进行数据的动态共享。例如,第二一致性冲突跟踪器736可监视高速缓存未命中出现的次数和/或访问系统存储器745的频率。
图12是示出根据本发明构思的一些实施例的控制异构计算系统的高速缓存一致性的方法的流程图。为了更好地理解,将参照图4、图6和图12一起提供描述。
在方框S110,可将从CPU 410卸载的GPU内核输入或提供至GPU420。从CPU 410卸载的内核可构成程序,并且所述多个内核由GPU 420按次序执行。
在方框S120,在执行GPU内核之前通过第一分析器434进行第一分析。第一分析器434可基于从编译器446接收到的内核指令分布将内核分为两组。例如,第一组可包括其中在CPU 410与GPU 420之间频繁进行数据共享的内核,第二组可包括其中在CPU 410与GPU420之间很少或不常进行数据共享的内核。例如,用于确定动态共享的指令可以是与从CPU 410至GPU 420的加载和/或从GPU 420至CPU410的输入关联的指令。
在方框S130,可执行GPU内核。如上所述,可按次序执行GPU内核。另外,可按照高速缓存一致方式执行第一组的内核,并且可按照非高速缓存一致方式执行第二组的内核。
在方框S140,第二组的内核中的一个或多个可通过第二分析器436被重新分类。即使基于从编译器446接收到的内核指令分布将内核分类为属于第二组,也可存在与同CPU410进行数据的动态共享关联的内核。因此,第二分析器436可将被确定为动态共享数据的内核重新分类为第一组。
重新分类为属于第一组的内核(即使其由GPU 420处理)可被改变使得可按照高速缓存一致方式处理该内核。例如,在图2的实施例中,路由器“R”的片上网络交换机可执行合适交换操作,以按照高速缓存一致方式处理被重新分类为第一组的内核。
在方框S150,可由CPU 410收集和处理被GPU 420处理的内核的结果,并且可将与GPU内核关联的渲染图像或计算结果提供给用户。
图13是示出根据本发明构思的一些实施例的控制异构计算系统的高速缓存一致性的方法的流程图。为了更好地理解,将参照图4、图6和图13一起提供描述。
在方框S205,可将从CPU 410卸载的GPU内核输入或提供至GPU 420。
在方框S210,在执行之前分析GPU内核,以确定是否每个内核具有存储器约束特性。例如,第一分析器434可基于从编译器446接收到的内核指令分布确定各个内核的属性。例如,用于该确定的属性可以是与从CPU 410至GPU 420的加载关联的指令和/或与从GPU420输出至CPU 410的处理的结果关联的指令。
当确定内核具有存储器约束特性时(是),执行方框S215。这意味着与由GPU 420处理的内核关联的数据被CPU 410频繁共享。相反,当确定内核具有计算约束特性时(否),执行方框S235。这意味着与由GPU 420处理的内核关联的数据很少或不常被CPU 410共享。
在方框S215,可按照高速缓存一致方式处理内核。也就是说,在GPU 420处理GPU内核的结果可通过最后一级高速缓存LLC共享。因为数据在CPU 410与GPU 420之间频繁共享,因此在方框S210确定内核具有存储器约束特性。可将GPU内核的中间处理结果输入至CPU410,并且CPU 410可累积处理结果或者可执行以下额外处理(方框S220)。
在方框S225,确定当前正被执行的内核是否为最后一个内核。当确定当前正被执行的内核是最后一个内核时(是),执行方框S230;当确定当前正被执行的内核不是最后一个内核时(否),处理进行至方框S205。
在方框S230,可由CPU 410收集和处理被GPU 420处理的内核的结果,并且可将渲染图像或与GPU内核关联的计算结果提供给用户。
当内核具有计算约束特性时,在方框S235,按照非高速缓存一致方式处理内核。这意味着与被GPU 420处理的内核关联的数据很少或不常被CPU 410共享。与被GPU 420处理的内核关联的数据可通过系统存储器445而不是最后一级高速缓存LLC共享。
在方框S240,第二分析器或第二一致性冲突跟踪器136可监视CPU 410与GPU 420之间的数据共享。
在方框S245,第二分析器或第二一致性冲突跟踪器136可确定数据是否在CPU 410与GPU 420之间频繁交换(即,动态共享)。例如,第二一致性冲突跟踪器436可基于例如在CPU 410与GPU 420之间的数据交换、窥探请求和回复、针对共享虚拟存储器的读/写操作、由于连续高速缓存未命中对系统存储器的访问等确定数据是否在CPU 410与GPU 420之间频繁交换。
当确定数据被动态地共享时(是),执行方框S250;否则(否),该进程进行至方框S255。
在方框S250,可更新与正被执行的GPU内核关联的高速缓存一致性目录。结果,可按照高速缓存一致方式处理GPU内核。也就是说,处理GPU内核的结果可由CPU 410和GPU420通过最后一级高速缓存LLC共享。
在方框S255,正被执行的GPU内核可被完全处理。因为确定与正被执行的GPU内核关联的数据没有被动态共享,可按照非高速缓存一致方式连续处理该GPU内核。
根据本发明构思的实施例,可提供异构计算系统,以基于CPU与GPU之间的数据共享适应性地控制高速缓存一致性。
另外,根据本发明构思的实施例,可基于内核的指令属性对内核分类。在一些实施例中,可在执行内核的同时基于CPU与GPU之间的数据交换将该内核重新分类,以允许适应性地控制高速缓存一致性。
其它定义和实施例:
在本发明构思的上述各个实施例中,本文中可在包括任何新的和有用的处理、机器、制造或组成物质的,或任何新的和有用的改进的任何数量的可专利性的分类或上下文中示出和描述本发明构思的各方面。因此,本发明构思的各方面可完全由硬件、完全由软件(包括固件、常驻软件、微代码、等)实现或结合硬件和软件的实施例(一般都被称之为“电路”、“模块”、“组件”、“部件”、“单位”或“系统”)实现。例如,硬件可包括电路、电子电路、处理器、计算机、集成电路、集成电路芯片、压力传感器、惯性传感器、微机电系统(MEMS)、无源元件或它们的组合。此外,本发明构思的各方面可采用包括一个或多个计算机可读介质(具有计算机可读程序代码)的计算机程序产品的形式。
可使用一个或多个计算机可读介质的任何组合。计算机可读介质可为计算机可读信号介质或计算机可读存储介质。例如,计算机可读存储介质可为(但不限于)电子、磁、光、电磁或半导体系统、设备或装置或者以上的任何合适组合。计算机可读存储介质的更多特定示例(非穷举列表)包括:便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪速存储器)、具有中继器的合适的光纤、便携式压缩盘只读存储器(CD-ROM)、光学存储装置、磁存储装置或以上的任何合适组合。在该文献的上下文中,计算机可读存储介质可为可包含或存储程序的有形介质,所述程序被指令执行系统、设备或装置使用或与它们结合使用。
计算机可读信号介质可包括例如基带中的或作为载波的一部分的其中实现计算机可读程序代码的传播数据信号。这种传播信号可以采取各种形式中的任何一种,包括(但不限于)电磁、光学或它们任何适当的组合。计算机可读信号介质可以是并非计算机可读存储介质的任何计算机可读介质,并且可以通信、传播或传输供指令执行系统、设备或装置使用或与它们结合使用的程序。在计算机可读信号介质上实现的程序代码可以使用任何适当的介质来传输,包括(但不限于)无线、有线、光纤电缆、RF等或以上的任何合适组合。
用于执行本发明构思各方面的操作的计算机程序代码可以一种或多种编程语言的任何组合来写入,编程语言包括面向对象的编程语言(诸如Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB。NET、Python等)、传统的过程性编程语言(诸如“C”编程语言、Visual Basic、Fortran 2003、Perl、COBOL 2002、PHP、ABAP、LabVIEW)、动态编程语言(诸如Python、Ruby和Groovy)或其它编程语言。程序代码可以完全在用户的计算机上执行、部分在用户的计算机上执行、作为独立的软件包执行、部分在用户的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种方案中,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户的计算机,或者可以连接到外部计算机(例如,通过利用因特网服务提供商的因特网),或在云计算环境中或作为服务(例如,软件即服务(SaaS))提供。
本文参考根据本公开的实施例的方法、设备(系统)和计算机程序产品的流程图说明和/或框图来描述本发明构思的各方面。应该理解,流程图说明和/或框图的每个块以及流程图说明和/或框图中的块的组合可以通过计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理设备的处理器以产生机器,使得通过计算机的处理器或其他可编程指令执行设备执行的指令创建用于实现流程图和/或框图的一个或多个方框中指定的功能/动作的机制。
这些计算机程序指令也可以存储在计算机可读介质中,当执行该介质时,可以指导计算机、其它可编程数据处理设备或其它装置以特定方式工作,使得当这些指令存储在计算机可读介质中时,产生包括指令的制品,当执行该指令时,使计算机实现流程图和/或框图的一个或多个方框中指定的功能/动作。计算机程序指令还可以被加载到计算机、其它可编程指令执行设备或其它装置上,以使得在计算机、其它可编程设备或其它装置上执行一系列操作步骤以产生计算机实现的过程,使得在计算机或其它可编程设备上执行的指令提供用于实现流程图和/或框图的一个或多个方框中指定的功能/动作的过程。
图中的流程图和框图说明了根据本发明构思的各个方面的系统、方法和计算机程序产品的可能实现的体系结构、功能和操作。在这方面,流程图或框图中的每个块可以表示模块、段或代码部分,其包括用于实现指定逻辑功能的一个或多个可执行指令。还应注意,在一些替代实现中,块中注明的功能可能不按照附图中注明的顺序出现。例如,实际上连续显示的两个块可以基本上同时执行,或者这些块有时可以按照相反的顺序执行,这取决于所涉及的功能。还应注意,框图和/或流程图说明的每个块以及框图和/或流程图说明中的块的组合可以由执行指定功能或动作的专用的基于硬件的系统或专用硬件和计算机指令的组合来实现。
虽然已经参照其示例实施例描述了本发明构思,但是对于本领域普通技术人员来说显而易见的是,在不背离权利要求中设定的本发明构思的精神和范围的情况下,可以对其进行各种改变和修改。
Claims (20)
1.一种异构计算系统,包括:
第一处理器;
第二处理器,其被配置为按次序执行从所述第一处理器卸载的多个内核,其中,所述第一处理器和所述第二处理器为异构的;以及
一致性控制器,其被配置为在所述多个内核被执行之前基于包括在所述多个内核中的每一个中的指令的属性将所述多个内核中的每一个分类至第一组和第二组中的一组,并且还被配置为基于在所述多个内核中的一个内核的执行的过程中所述第一处理器与所述第二处理器之间的交互,将所述多个内核中的所述一个内核从所述第二组重新分类至所述第一组。
2.根据权利要求1所述的异构计算系统,其中,所述第一处理器是中央处理单元,并且所述第二处理器是图形处理单元。
3.根据权利要求1所述的异构计算系统,其中,按照高速缓存一致方式执行所述多个内核中被分类至所述第一组中的第一内核,在所述高速缓存一致方式中通过利用所述第一处理器和所述第二处理器的最后一级高速缓存中的至少一个来执行所述第一处理器和所述第二处理器之间的第一数据的共享,并且
其中,按照非高速缓存一致方式执行所述多个内核中被分类至所述第二组的第二内核,在所述非高速缓存一致方式中通过利用外部系统存储器执行所述第一处理器和所述第二处理器之间的第二数据的共享。
4.根据权利要求1所述的异构计算系统,其中,所述一致性控制器包括:
第一分析器,其被配置为在所述多个内核被执行之前,基于包括在所述多个内核中的每一个中的所述指令的属性,将所述多个内核中的每一个分类至所述第一组和所述第二组中的一组中,
第二分析器,其被配置为基于在所述多个内核中的所述一个内核被执行的过程中数据被所述第一处理器共享的程度,将所述多个内核中的所述一个内核从所述第二组重新分类至所述第一组;以及
高速缓存一致性目录,其被配置为存储关于所述多个内核中的所述一个内核的信息。
5.根据权利要求4所述的异构计算系统,其中,所述高速缓存一致性目录被配置为存储被所述第一处理器或所述第二处理器参考的数据的数据类型、高速缓存地址、共享信息和有效性信息中的至少一个。
6.根据权利要求1所述的异构计算系统,其中,所述指令包括算术命令、从所述第一处理器到所述第二处理器的加载命令、从所述第二处理器到所述第一处理器的存储命令、以及纹理命令。
7.根据权利要求6所述的异构计算系统,其中,所述一致性控制器还被配置为:
基于包括在所述多个内核中的每一个中的所述指令之中的所述加载命令和所述存储命令的数量的比,将所述多个内核中的每一个分类至所述第一组和所述第二组中的一组。
8.根据权利要求1所述的异构计算系统,其中,所述一致性控制器还被配置为:基于与所述多个内核中的所述一个内核关联的数据被所述第一处理器交换的频率,和与所述多个内核中的所述一个内核关联的所述数据被所述第一处理器交换的次数中的至少一个,将所述多个内核中的所述一个内核从所述第二组重新分类至所述第一组。
9.根据权利要求1所述的异构计算系统,其中,所述第一处理器还被配置为:
收集按次序执行的内核的执行结果,并且将收集的结果提供至用户。
10.根据权利要求1所述的异构计算系统,其中,所述异构计算系统是片上系统,在所述片上系统中所述第一处理器、所述第二处理器和所述一致性控制器利用一个芯片实施。
11.一种操作异构计算系统的方法,该方法包括以下步骤:
将多个内核从第一处理器卸载至第二处理器,其中,所述第一处理器和所述第二处理器是异构的;
基于包括在所述多个内核中的每一个中的指令的属性,将所述多个内核中的每一个分类至第一组和第二组中的一组;
利用所述第二处理器按次序执行所述多个内核,
其中,按照高速缓存一致方式执行所述多个内核中属于所述第一组的第一内核,并且
其中,按照非高速缓存一致方式执行所述多个内核中属于所述第二组的第二内核;以及
基于在执行所述多个内核中的所述第二内核中的一个第二内核的过程中所述第一处理器与所述第二处理器之间的交互,将所述多个内核中的所述第二内核中的所述一个第二内核从所述第二组重新分类至所述第一组。
12.根据权利要求11所述的方法,其中,所述第一处理器是中央处理单元,并且所述第二处理器是图形处理单元。
13.根据权利要求11所述的方法,其中,利用所述第一处理器和所述第二处理器的最后一级高速缓存中的至少一个,通过由所述第一处理器和所述第二处理器共享第一数据来执行所述多个内核中的第一内核,并且
其中,利用外部系统存储器通过由所述第一处理器和所述第二处理器共享第二数据来执行所述多个内核中的所述第二内核。
14.根据权利要求11所述的方法,其中,对所述多个内核中的每一个进行分类的步骤包括:基于包括在所述多个内核中的每一个中的指令之中的从所述第一处理器至所述第二处理器的加载命令和从所述第二处理器至所述第一处理器的存储命令的数量的比,将所述多个内核中的每一个分类至所述第一组和所述第二组中的一组中。
15.根据权利要求14所述的方法,其中,对所述多个内核中的每一个进行分类的步骤包括:将所述多个内核中的所述比超过阈值的相应内核分类至所述第一组中。
16.一种异构计算系统,包括:
中央处理单元;
图形处理单元,其被配置为按次序执行从所述中央处理单元卸载的多个内核;以及
一致性控制器,其被配置为在所述多个内核被执行之前,基于包括在所述多个内核中的每一个中的指令的属性,将所述多个内核中的每一个分类至第一组和第二组中的一组中,并且还被配置为基于在所述多个内核中的一个内核的执行的过程中所述中央处理单元与所述图形处理单元之间的交互,将所述多个内核中的所述一个内核从所述第二组重新分类至所述第一组。
17.根据权利要求16所述的异构计算系统,其中,按照高速缓存一致方式执行所述多个内核中被分类至所述第一组的第一内核,在所述高速缓存一致方式中通过利用所述中央处理单元和所述图形处理单元的最后一级高速缓存中的至少一个执行所述中央处理单元和所述图形处理单元之间的数据的共享,并且
其中,按照非高速缓存一致方式执行所述多个内核中的被分类至所述第二组的第二内核,在所述非高速缓存一致方式中通过利用外部系统存储器执行所述中央处理单元和所述图形处理单元之间的数据的共享。
18.根据权利要求16所述的异构计算系统,其中,所述一致性控制器包括:
第一分析器,其被配置为在所述多个内核被执行之前,基于包括在所述多个内核中的每一个中的所述指令的属性,将所述多个内核中的每一个分类至所述第一组和所述第二组中的一组中,
第二分析器,其被配置为基于在所述多个内核中所述一个内核的执行的过程中数据被所述中央处理单元共享的程度,将所述多个内核中的所述一个内核从所述第二组重新分类至所述第一组;以及
高速缓存一致性目录,其被配置为存储关于所述多个内核中的所述一个内核的信息。
19.根据权利要求18所述的异构计算系统,其中,所述高速缓存一致性目录被配置为存储被所述中央处理单元或所述图形处理单元参考的数据的数据类型、高速缓存地址、共享信息和有效性信息中的至少一个。
20.根据权利要求16所述的异构计算系统,其中,所述一致性控制器还被配置为:基于与所述多个内核中的所述一个内核关联的数据被所述中央处理单元交换的频率,和与所述多个内核中的所述一个内核关联的所述数据被所述中央处理单元交换的次数中的至少一个,将所述多个内核中的所述一个内核从所述第二组重新分类至所述第一组。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2018-0009400 | 2018-01-25 | ||
KR1020180009400A KR102533241B1 (ko) | 2018-01-25 | 2018-01-25 | 적응적으로 캐시 일관성을 제어하도록 구성된 이종 컴퓨팅 시스템 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110083547A true CN110083547A (zh) | 2019-08-02 |
Family
ID=67145221
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910053535.8A Pending CN110083547A (zh) | 2018-01-25 | 2019-01-21 | 异构计算系统及其操作方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10621093B2 (zh) |
KR (1) | KR102533241B1 (zh) |
CN (1) | CN110083547A (zh) |
DE (1) | DE102018132781A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110990151A (zh) * | 2019-11-24 | 2020-04-10 | 浪潮电子信息产业股份有限公司 | 一种基于异构计算平台的业务处理方法 |
CN117215992A (zh) * | 2023-11-09 | 2023-12-12 | 芯原科技(上海)有限公司 | 异构内核处理器、异构处理器和电源管理方法 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102655094B1 (ko) * | 2018-11-16 | 2024-04-08 | 삼성전자주식회사 | 메모리를 공유하는 이종의 프로세서들을 포함하는 스토리지 장치 및 그것의 동작 방법 |
CN113383310A (zh) | 2019-03-15 | 2021-09-10 | 英特尔公司 | 矩阵加速器架构内的脉动分解 |
US11934342B2 (en) | 2019-03-15 | 2024-03-19 | Intel Corporation | Assistance for hardware prefetch in cache access |
CN113396401A (zh) | 2019-03-15 | 2021-09-14 | 英特尔公司 | 多贴片存储器管理 |
CN110381322B (zh) * | 2019-07-15 | 2023-03-14 | 腾讯科技(深圳)有限公司 | 视频流解码方法、装置、终端设备及存储介质 |
US11716405B1 (en) * | 2021-04-14 | 2023-08-01 | Splunk Inc. | System and method for identifying cache miss in backend application |
US11899585B2 (en) * | 2021-12-24 | 2024-02-13 | Western Digital Technologies, Inc. | In-kernel caching for distributed cache |
US11934663B2 (en) | 2022-01-10 | 2024-03-19 | Western Digital Technologies, Inc. | Computational acceleration for distributed cache |
US11797379B2 (en) | 2022-02-04 | 2023-10-24 | Western Digital Technologies, Inc. | Error detection and data recovery for distributed cache |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1506845A (zh) * | 2002-12-10 | 2004-06-23 | 英特尔公司 | 异构代理高速缓存一致性和限制数据传输的方法和装置 |
CN1783033A (zh) * | 2004-11-19 | 2006-06-07 | 英特尔公司 | 共享公共高速缓存的异构处理器 |
CN102270180A (zh) * | 2011-08-09 | 2011-12-07 | 清华大学 | 一种多核处理器高速缓存及其管理方法 |
US8860741B1 (en) * | 2006-12-08 | 2014-10-14 | Nvidia Corporation | Graphics processor with memory management unit and cache coherent link |
US20170205863A1 (en) * | 2016-01-14 | 2017-07-20 | Intel Corporation | Dynamically updating a power management policy of a processor |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9704542D0 (en) | 1997-03-05 | 1997-04-23 | Sgs Thomson Microelectronics | A cache coherency mechanism |
GB9806184D0 (en) | 1998-03-23 | 1998-05-20 | Sgs Thomson Microelectronics | A cache coherency mechanism |
KR100515059B1 (ko) * | 2003-07-22 | 2005-09-14 | 삼성전자주식회사 | 멀티프로세서 시스템 및 멀티프로세서 시스템의 캐쉬일관성 유지 방법 |
US8397241B2 (en) | 2008-11-13 | 2013-03-12 | Intel Corporation | Language level support for shared virtual memory |
US8631411B1 (en) | 2009-07-21 | 2014-01-14 | The Research Foundation For The State University Of New York | Energy aware processing load distribution system and method |
US9645866B2 (en) | 2010-09-20 | 2017-05-09 | Qualcomm Incorporated | Inter-processor communication techniques in a multiple-processor computing platform |
US9373182B2 (en) * | 2012-08-17 | 2016-06-21 | Intel Corporation | Memory sharing via a unified memory architecture |
US9170948B2 (en) | 2012-12-23 | 2015-10-27 | Advanced Micro Devices, Inc. | Cache coherency using die-stacked memory device with logic die |
US9563561B2 (en) * | 2013-06-25 | 2017-02-07 | Intel Corporation | Initiation of cache flushes and invalidations on graphics processors |
US9760498B2 (en) * | 2014-09-26 | 2017-09-12 | Qualcomm Incorporated | Hybrid cache comprising coherent and non-coherent lines |
US20160154449A1 (en) | 2014-11-27 | 2016-06-02 | Eui Choel LIM | System on chips for controlling power using workloads, methods of operating the same, and computing devices including the same |
KR101830514B1 (ko) | 2016-07-18 | 2018-02-21 | 주식회사 포스코 | 압연 공정용 전단 장치 및 방법 |
US10423446B2 (en) * | 2016-11-28 | 2019-09-24 | Arm Limited | Data processing |
-
2018
- 2018-01-25 KR KR1020180009400A patent/KR102533241B1/ko active IP Right Grant
- 2018-08-10 US US16/101,018 patent/US10621093B2/en active Active
- 2018-12-19 DE DE102018132781.1A patent/DE102018132781A1/de active Pending
-
2019
- 2019-01-21 CN CN201910053535.8A patent/CN110083547A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1506845A (zh) * | 2002-12-10 | 2004-06-23 | 英特尔公司 | 异构代理高速缓存一致性和限制数据传输的方法和装置 |
CN1783033A (zh) * | 2004-11-19 | 2006-06-07 | 英特尔公司 | 共享公共高速缓存的异构处理器 |
US8860741B1 (en) * | 2006-12-08 | 2014-10-14 | Nvidia Corporation | Graphics processor with memory management unit and cache coherent link |
CN102270180A (zh) * | 2011-08-09 | 2011-12-07 | 清华大学 | 一种多核处理器高速缓存及其管理方法 |
US20170205863A1 (en) * | 2016-01-14 | 2017-07-20 | Intel Corporation | Dynamically updating a power management policy of a processor |
Non-Patent Citations (1)
Title |
---|
蒋建春;汪同庆;: "一种异构多核处理器嵌入式实时操作系统构架设计", 计算机科学, no. 06, 15 June 2011 (2011-06-15), pages 298 - 303 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110990151A (zh) * | 2019-11-24 | 2020-04-10 | 浪潮电子信息产业股份有限公司 | 一种基于异构计算平台的业务处理方法 |
CN117215992A (zh) * | 2023-11-09 | 2023-12-12 | 芯原科技(上海)有限公司 | 异构内核处理器、异构处理器和电源管理方法 |
CN117215992B (zh) * | 2023-11-09 | 2024-01-30 | 芯原科技(上海)有限公司 | 异构内核处理器、异构处理器和电源管理方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20190090558A (ko) | 2019-08-02 |
DE102018132781A1 (de) | 2019-07-25 |
US20190227936A1 (en) | 2019-07-25 |
US10621093B2 (en) | 2020-04-14 |
KR102533241B1 (ko) | 2023-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110083547A (zh) | 异构计算系统及其操作方法 | |
Singh et al. | Near-memory computing: Past, present, and future | |
US10999214B2 (en) | Secure memory with restricted access by processors | |
CN107636625A (zh) | 用于共享系统高速缓存的虚拟化控制的方法和装置 | |
Garcıa et al. | Evaluating the effect of last-level cache sharing on integrated GPU-CPU systems with heterogeneous applications | |
CN105468439B (zh) | 在cpu-gpu异构框架下遍历固定半径内邻居的自适应并行方法 | |
KR101747966B1 (ko) | 자율 서브시스템 아키텍처 | |
KR20170124995A (ko) | 자율 메모리 아키텍처 | |
CN108710582A (zh) | 用于基于局部性的指令处理的选择性启用的系统、设备和方法 | |
JP7126136B2 (ja) | 再構成可能なキャッシュアーキテクチャおよびキャッシュコヒーレンシの方法 | |
CN109661656A (zh) | 用于利用条件所有权请求的智能存储操作的方法和装置 | |
US11868306B2 (en) | Processing-in-memory concurrent processing system and method | |
US20240036763A1 (en) | Methods, apparatus, and articles of manufacture to increase data reuse for multiply and accumulate (mac) operations | |
Wang et al. | A novel buffer management scheme based on particle swarm optimization for SSD | |
KR20230028145A (ko) | 상호 연결된 장치들 간의 데이터 전송을 위한 시스템, 방법 및 장치 | |
Slimani et al. | Accelerating random forest on memory-constrained devices through data storage optimization | |
Kirtzic et al. | A parallel algorithm development model for the GPU architecture | |
KR101537725B1 (ko) | 워크 그룹 크기 결정 방법, 시스템 및 컴퓨터 판독가능 기록매체 | |
Adiletta et al. | Characterizing the Scalability of Graph Convolutional Networks on Intel® PIUMA | |
CN104850508A (zh) | 基于数据局部性的访存方法 | |
US11630765B2 (en) | Flash translation layer design using reinforcement learning | |
KR20180018269A (ko) | 컴퓨팅 장치 및 컴퓨팅 장치에서 연산들을 처리하는 방법 | |
Min | Fine-grained memory access over I/O interconnect for efficient remote sparse data access | |
US20240135234A1 (en) | Reinforcement learning with multiple objectives and tradeoffs | |
US20230350727A1 (en) | Cache-aware load balancing |
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 |