CN107122162B - 基于cpu和gpu的异构千核高通量处理系统及其修改方法 - Google Patents

基于cpu和gpu的异构千核高通量处理系统及其修改方法 Download PDF

Info

Publication number
CN107122162B
CN107122162B CN201610103506.4A CN201610103506A CN107122162B CN 107122162 B CN107122162 B CN 107122162B CN 201610103506 A CN201610103506 A CN 201610103506A CN 107122162 B CN107122162 B CN 107122162B
Authority
CN
China
Prior art keywords
data block
data
gpu
cpu
level
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201610103506.4A
Other languages
English (en)
Other versions
CN107122162A (zh
Inventor
尹博
秦明
曾子铭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Know Dome Technology Co Ltd
Original Assignee
Shenzhen Know Dome Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Know Dome Technology Co Ltd filed Critical Shenzhen Know Dome Technology Co Ltd
Priority to CN201610103506.4A priority Critical patent/CN107122162B/zh
Publication of CN107122162A publication Critical patent/CN107122162A/zh
Application granted granted Critical
Publication of CN107122162B publication Critical patent/CN107122162B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0851Cache with interleaved addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明提供了一种基于CPU和GPU的异构千核高通量处理系统,所述处理系统包括多个Tile计算单元,开关总线,三级融合的数据缓存器,CPU和GPU的内存接口以及动态随机存取存储器,每个Tile计算单元通过开关总线分别与三级融合的数据缓存器及CPU和GPU的内存接口连接,所述三级融合的数据缓存器及CPU和GPU的内存接口均与所述动态随机存取存储器以直接访问所述动态随机存取存储器。

Description

基于CPU和GPU的异构千核高通量处理系统及其修改方法
技术领域
本发明涉及芯片领域,尤其涉及一种基于CPU和GPU的异构千核高通量处理系统及其修改方法。
背景技术
随着众核设计、三维芯片制造等技术的发展,单位面积晶体管的数量将会继续按照摩尔定律增 长,这种趋势将会使处理器的设计延续更多的计算核心,更大的共享高速缓存(Cache),从而使得单片千核处理器的应用也不再遥远。与此同时,异构计算机系统的研究及应用也成为学术界和工业界的热点。异构多核处理器能获得比对称多核处理器和非对称多核处理器更好的性能。图形处理器(GPU)等作为加速计算部件处理数据流或者向量数据的作用越来越受到重视,各主流处理器制造商也相继推出新型的异构多核处理器,如AMD的Fusion架构处理器,Intel的Xeon Phi架构处理器,Nvidia的 Denver项目和ARM big.LITTLE等,这些新型异构处理器依赖大量高性能的流处理/向量计算单元/超标量顺序处理单元作为协处理器加速浮点运算,增加多线程并发度,提高系统性能。
当前独立式GPU的异构计算机系统在数据传输、计算核心启动、Cache—致性管理和数据同步方面产生大量的额外开销。Nvidia Tesla C2050 GPU与显存通信的峰值带宽达到144GB/S,而主机和GPU通过PCI-E相连的峰值传输带宽却只有8GB/s。这种数据传输速率之间的巨大差异是导致独立式异构计算机访存系统性能瓶颈的重要因素。例如,memcpy函数将一个128K字节的数据从主机CPU端传输到GPU端所产生的物理传输延迟占整个数据传输时间的70%。Daga等人证明真正的单片异构系统计算机,如AMD的加速处理单元较前两类异构系统具有更好的性能。Hwu等人也同样指出GPU端和CPU端数据传输的巨大开销是异构系统发展的瓶颈。因此,随着千核处理器计算核心数量的增加,如何有效降低CPU和GPU 之间传输数据的开销是提高GPU和CPU之间数据交换速度的主要难题之一。
Kelm等人采用软硬件协同设计的方法提出了混合式内存模型,避免了数据块的复制操作和多地址空间,减小了消息通信开销和片上的Cache目录面积。但是数据块的一致性状态转换结构非常复杂,软硬件状态转换的同步过程是Cache一致性的瓶颈。Ham等人提出的异构内存系统采用层次化的缓冲区桥接变相位内存模块和动态随机访问内存模块,采用分离控制的方式提高系统的能效率。Power等提出的CPU-GPU异构系统一致性机制是采用区域缓冲区和区域目录的结构提高异构系统的Cache—致性。Hechtman等人采用共享虚存的方式维持异构多核系统的Cache一致性,认为CPU Cache是按照访问时延最优化设计的,GPUCache是按照访问吞吐率最优化设计的,很难共享二者的Cache数据块。因此,需要采用一个独立的目录结构来共享数据块,以避免CPU和GPU间通过访问片外内存来交换数据块的巨大开销。裴颂文等人提出的面向异构千核计算机的统一的物理内存访问框架能协调 GPU端和CPU端的数据交换,通过异构核心间交叉式直接访问对方物理内存地址空间的方式来避免显式的数据交换,从而降低数据传输的额外开销,提高存储访问效率。AMD等发起的异构系统架构是一个统一的计算框架,为避免CPU和GPU显式地传输数据而提出基于用户空间队列机制和抢占式上下文交换技术的逻辑地址空间的单一的访问方式。目前,异构千核处理器系统中的数据块访问仍然缺乏统一的高效的物理内存地址访问方法。
发明内容
本发明的目的旨在至少解决上述技术缺陷之一,提供一种基于CPU和GPU的异构千核高通量处理系统及其的修改方法。
本发明提供一种基于CPU和GPU的异构千核高通量处理系统,所述处理系统包括多个Tile计算单元,开关总线,三级融合的数据缓存器,CPU和GPU的内存接口以及动态随机存取存储器,每个Tile计算单元通过开关总线分别与三级融合的数据缓存器及CPU和GPU的内存接口连接,所述三级融合的数据缓存器及CPU和GPU的内存接口均与所述动态随机存取存储器以直接访问所述动态随机存取存储器,其中,
每个Tile计算单元包括多个Quart计算单元,且多个Quart计算单元之间通过高速交叉网络互连;
每个Quart计算单元包括多个CPU计算核心单元和多个GPU计算核心单元,且具有共享的三级数据缓存器用于采用缓存一致性目录机制以缓存CPU数据块和GPU数据块,所述三级数据缓存器用于保存CPU计算核心单元的数据块和GPU计算核心单元的数据块;以及
所述每个CPU计算核心单元和每个GPU计算核心单元具有各自独立的一级数据缓存器,所述多个CPU计算核心单元具有共享的CPU二级数据缓存器,所述多个GPU计算核心单元具有共享的GPU二级数据缓存器。
从上述处理系统的方案可以看出,通过设计有效地三级Cache 一致性访问机制,并给相应的物理内存地址的数据块分配统一的状态标识位,可以有效地管理融合的三级数据Cache和支持交叉式直接访问统一的物理内存地址空间,从而可以有效避免数据副本的传输开销,降低系统访存指令的数量,提高系统的计算性能,实现CPU和GPU之间的内存高速直接交换。
本发明还提供一种基于CPU和GPU的异构千核高通量处理系统的修改方法,所述修改方法包括:
当根据CPU处理单元的访存指令和纯计算指令发起数据块的读写操作时,判断数据块的状态标志位;
当数据块的状态标志位为(0,0)时,可以访问该数据块;
当数据块的状态标志位为(1,0)且根据Quart计算单元的6个标识位判断该数据块属于当前Tile计算单元及当前Quart计算的三级数据缓存器中的数据块时,则对该数据块采用写回法;
当数据块的状态标志位为(1,0)且根据Quart计算单元的6个标识位判断该数据块不属于当前Tile计算单元及当前Quart计算的三级数据缓存器中的数据块时,则根据MESI协议对该数据块进行修改和更新;
当数据块的状态标志位为(1,1),则对该数据块采用写直法,并将该数据块的状态标识位修改为(1,0),以及反向同步到CPU计算核心单元的一级数据缓存器和共享的二级数据缓存器;
当数据块的状态标志位为(0,1),先请求获得所述GPU处理单元的授权并将该数据块的状态标志位修改为(1,1),接着对该数据块采用写直法,并将该数据块的状态标识位修改为(1,0),以及反向同步到CPU计算核心单元的一级数据缓存器和共享的二级数据缓存器。
从上述修改方法的方案可以看出,通过设计有效地三级Cache 一致性访问机制,并给相应的物理内存地址的数据块分配统一的状态标识位,可以有效地管理融合的三级数据Cache和支持交叉式直接访问统一的物理内存地址空间,从而可以有效避免数据副本的传输开销,降低系统访存指令的数量,提高系统的计算性能,实现CPU和GPU之间的内存高速直接交换。
附图说明
图1为本发明的CPU和GPU的异构千核高通量处理系统一种实施例的结构示意图;
图2为本发明的Quart计算单元一种实施例的结构示意图。
具体实施方式
为了使本发明所解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供一种实施例的CPU和GPU的异构千核高通量处理系统,如图1所示,所述控制方法包括:
所述处理系统包括多个Tile计算单元,开关总线1,三级融合的数据缓存器2,CPU和GPU的内存接口3以及动态随机存取存储器4,每个Tile计算单元通过开关总线分别与三级融合的数据缓存器及CPU和GPU的内存接口连接,所述三级融合的数据缓存器2及CPU和GPU的内存接口3均与所述动态随机存取存储器4即统一的物理内存以直接访问所述动态随机存取存储器,其中,
每个Tile计算单元包括多个Quart计算单元,且多个Quart计算单元之间通过高速交叉网络互连;
每个Quart计算单元包括多个CPU计算核心单元和多个GPU计算核心单元,且具有共享的三级数据缓存器用于采用缓存一致性目录机制以缓存CPU数据块和GPU数据块,所述三级数据缓存器用于保存CPU计算核心单元的数据块和GPU计算核心单元的数据块;以及
所述每个CPU计算核心单元和每个GPU计算核心单元具有各自独立的一级数据缓存器,所述多个CPU计算核心单元具有共享的CPU二级数据缓存器,所述多个GPU计算核心单元具有共享的GPU二级数据缓存器。
也就是说,如图1所示,异构千核高通量处理系统是由三级计算单元组成,分别是CPU/GPU计算核心级、Quart计算簇级和Tile计算簇级。4个CPU 计算核心组成的CPU簇和12个GPU计算核心组成的GPU簇,共同构成Quart计算簇。该单元内的4个CPU和12个GPU有各自独立的一级 Cache即数据缓存器, 12个GPU共享二级GPU数据Cache,4个CPU共享二级CPU数据Cache。因此,每个Quart 共包含16个异构计算单元。4个Quart组成一个Tile,Quart之间通过高速交叉网络互连,每个Tile 含64个异构计算单元,并采用多端口队列机制分离访存指令和纯计算指令。每个Quart配置有一个 Cache 管理处理器(Cache ManagementProcessor, CMP)负责为Quart中各计算核心预取和管理数据块。异构千核高通量处理系统采用分离式访存和计算指令的设计,便于重叠访存和计算指令,提高指令流水线效率以及延迟隐藏异构系统间数据传输的长时间开销。16 个Tile通过高速多端口交叉开关即开关总线1网络连接,共享三级融合的Cache即三级融合的数据缓存器2,该Cache既可以为GPU计算核心缓存数据,也可以为CPU计算单元缓存数据,并支持交叉式直接访问统一的物理内存(即动态随机存取存储器DRAM)。
在具体实施中,图2所示,各CPU 计算核心和GPU计算核心分别含有私有的一级Cache(如CPU中含有Core0、Core1、Core2、Core3,GPU中含有12个Scratchpad L1 Cache)。每个Quart内的CPU计算核心共享二级 CPU 数据 Cache(L2 C–Cache),GPU 计算核心共享二级GPU数据Cache(L2 G-Cache)。二级CPU数据Cache和二级GPU数据Cache是独立的物理Cache;所有的64个Quart共享统一的三级数据Cache(Unified L3 Cache),混合式缓存CPU数据块和GPU数据块。GPU和CPU数据块在三级数据Cache采用Cache一致性目录机制实现同步和一致性管理。
在具体实施中,所述三级融合的数据缓存器2用于保存一级数据缓存器的中的数据块,共享的CPU二级数据缓存器中的数据块,共享的GPU二级数据缓存器中的数据块以及共享的三级数据缓存器中的数据块。
在具体实施中,所述处理系统还包括与所述开关总线连接的系统编译器5,所述系统编译器5用于将6个标识位分配给每个Quart计算单元,其中高4位表示Tile计算单元的编号,低2位表示某个Tile计算单元内的Quart计算单元的编号。通过将6个标识位分配给每个Quart计算单元,可以细粒度刻画数据块的所有者。
在具体实施中,所述系统编译器5还用于对三级融合的数据缓存器中的每个数据块分配2个状态标志位。具体的,2个状态标志位具体包括以下:状态标志位(0,0),状态标志位(1,0),状态标志位(0,1)以及状态标志位(1,1)。通过数据块的状态标识位区分数据块的所有者属性,而且数据块的状态标识位随着数据块的处理过程以更新,另外数据块状态标识位功能如下表所示。
状态位 说明
0,0 无状态,新数据块,CPU计算核心和GPU计算核心均可以无限制访问
1,0 CPU私有数据块:数据块的所有者属于CPU 计算核心,GPU只能读,不能写此块
0,1 GPU私有数据块:数据块的所有者属于GPU 计算核心,CPU只能读,不能写此块
1,1 共享数据块:数据块的所有者既属于GPU计算核心,又属于CPU计算核心,CPU和GPU都可以对该数据块进行读写操作
在具体实施中,如图1所示,所述处理系统还包括CPU处理单元6和GPU处理单元7,所述CPU处理单元6和GPU处理单元7分别与所述开关总线1连接,用于根据每个数据块中的状态标志位和每个Quart计算单元的6个标识位对所述三级融合的数据缓存器中的数据块进行更新和同步。
在具体实施中,所述CPU处理单元6用于:
当数据块的状态标志位为(0,0)时,可以访问该数据块;
当数据块的状态标志位为(1,0)且根据Quart计算单元的6个标识位判断该数据块属于当前Tile计算单元及当前Quart计算的三级数据缓存器中的数据块时,则对该数据块采用写回法;
当数据块的状态标志位为(1,0)且根据Quart计算单元的6个标识位判断该数据块不属于当前Tile计算单元及当前Quart计算的三级数据缓存器中的数据块时,则根据MESI协议对该数据块进行修改和更新;
当数据块的状态标志位为(1,1),则对该数据块采用写直法,并将该数据块的状态标识位修改为(1,0),以及反向同步到CPU计算核心单元的一级数据缓存器和共享的二级数据缓存器;
当数据块的状态标志位为(0,1),先请求获得相应的GPU计算核心的授权并将该数据块的状态标志位修改为(1,1),接着对该数据块采用写直法,并将该数据块的状态标识位修改为(1,0),以及反向同步到CPU计算核心单元的一级数据缓存器和共享的二级数据缓存器。
在具体实施中,所述GPU处理单元7用于:
当数据块的状态标志位为(0,0)时,可以访问该数据块;
当数据块的状态标志位为(1,0)且根据Quart计算单元的6个标识位判断该数据块属于当前Tile计算单元及当前Quart计算的三级数据缓存器中的数据块时,则对该数据块采用写回法;
当数据块的状态标志位为(1,0)且根据Quart计算单元的6个标识位判断该数据块不属于当前Tile计算单元及当前Quart计算的三级数据缓存器中的数据块时,则根据MESI协议对该数据块进行修改和更新;
当数据块的状态标志位为(1,1),则对该数据块采用写直法,并将该数据块的状态标识位修改为(1,0),以及反向同步到GPU计算核心单元的一级数据缓存器和共享的二级数据缓存器;
当数据块的状态标志位为(0,1),先请求获得相应的CPU计算核心的授权并将该数据块的状态标志位修改为(1,1),接着对该数据块采用写直法,并将该数据块的状态标识位修改为(1,0),以及反向同步到CPU计算核心单元的一级数据缓存器和共享的二级数据缓存器。
也就是说,CPU处理单元6或GPU处理单元7(处理单元是指CPU的处理器核心或GPU流计算单元),不是某个Quart中的4个CPU计算核心,对融合的三级Cache中的数据块更新和同步的基本原则是:
如果CPU处理单元6或GPU处理单元7发起的修改操作是对本Tile及本Quart的私有三级数据Cache块(私有三级数据Cache块是指数据Cache块的所有者属于CPU 或GPU计算核心),则执行传统的写回机制,在减少总线通信带宽的条件下保证Cache数据一致性。 如果CPU处理单元6或GPU处理单元7发起的修改操作是针对本Quart外的共享三级数据Cache块(共享三级数据Cache块是指数据Cache块的所有者既属于GPU计算核心,又属于CPU计算核心),为了保证Cache的严格一致性,则采用写直达法并反向同步到一级数据Cache和二级数据Cache或者GPU的一级数据Cache和二级共享数据Cache。
面向融合的三级数据Cache及统一的物理内存地址空间,对于典型的标识为(1,0),(0,1)和(1,1),数据块进行修改操作时,CPU处理单元6和GPU处理单元7分别修改数据块的基本操作规则包括以下六项:
规则一:如果CPU处理单元6修改标记为CPU计算核心且是本 Tile及本Quart私有的三级数据Cache的数据块, 则对三级数据Cache的数据块采用写回法;若 CPU修改标记为CPU却不是本Tile及本Quart私 有的三级数据Cache的数据块,则根据传统Cache一致性协议MESI(Modified,Exclusive,Share,and Invalid)修改和更新Cache数据块;
规则二:如果CPU处理单元6修改标记为共享的三级数据Cache的数据块,则对三级数据Cache的数据块采用写直达,修改数据块的状态标识到CPU私有状态,并反向同步到CPU的L1和12数据Cache;
规则三:如果CPU处理单元6修改标记为GPU计算核心的私有三级Cache数据块,则先请求获得相应GPU计算核心的授权,并将数据块修改到共享状态,然后执行规则二。
规则四:如果GPU处理单元7修改标记为GPU计算核心且是本Tile及本Quart私有的三级数据Cache的数据块,则对三级数据Cache的数据块采用写回法;若GPU修改标记为GPU却不是本Tile及本Quar私有的三级数据Cache的数据块,则根据传统Cache一致性协议MESI修改和更新Cache数据块。
规则五:如果GPU处理单元7修改标记为共享的三级数据Cache的数据块,则对三级数据Cache的数据块采用写直达,修改数据块的状态标识到GPU私有状态,并反向同步到GPU全局Cache和共享Cache。
规则六:如果GPU处理单元7修改标记为CPU计算核心的私有三级Cache数据块,则先请求获得相应CPU计算核心的授权,并将数据块修改到共享状态,然后执行规则五。
基于以上六项关于修改三级Cache数据块的基本规则,由CPU和GPU的访存指令和纯计算指令发起的读写操作可以同时访问三级Cache和统一的物理内存。
从上述处理系统的方案可以看出,通过设计有效地三级Cache 一致性访问机制,并给相应的物理内存地址的数据块分配统一的状态标识位,可以有效地管理融合的三级数据Cache和支持交叉式直接访问统一的物理内存地址空间,从而可以有效避免数据副本的传输开销,降低系统访存指令的数量,提高系统的计算性能,实现CPU和GPU之间的内存高速直接交换。
在具体实施中,本发明还提供一种实施例的基于CPU和GPU的异构千核高通量处理系统的修改方法,所述修改方法包括:
当根据CPU处理单元的访存指令和纯计算指令发起数据块的读写操作时,判断数据块的状态标志位;
当数据块的状态标志位为(0,0)时,可以访问该数据块;
当数据块的状态标志位为(1,0)且根据Quart计算单元的6个标识位判断该数据块属于当前Tile计算单元及当前Quart计算的三级数据缓存器中的数据块时,则对该数据块采用写回法;
当数据块的状态标志位为(1,0)且根据Quart计算单元的6个标识位判断该数据块不属于当前Tile计算单元及当前Quart计算的三级数据缓存器中的数据块时,则根据MESI协议对该数据块进行修改和更新;
当数据块的状态标志位为(1,1),则对该数据块采用写直法,并将该数据块的状态标识位修改为(1,0),以及反向同步到CPU计算核心单元的一级数据缓存器和共享的二级数据缓存器;
当数据块的状态标志位为(0,1),先请求获得相应的GPU计算核心的授权并将该数据块的状态标志位修改为(1,1),接着对该数据块采用写直法,并将该数据块的状态标识位修改为(1,0),以及反向同步到CPU计算核心单元的一级数据缓存器和共享的二级数据缓存器。
在具体实施中,所述修改方法还包括:
当根据GPU处理单元的访存指令和纯计算指令发起数据块的读写操作时,判断数据块的状态标志位;
当数据块的状态标志位为(0,0)时,可以访问该数据块;
当数据块的状态标志位为(1,0)且根据Quart计算单元的6个标识位判断该数据块属于当前Tile计算单元及当前Quart计算的三级数据缓存器中的数据块时,则对该数据块采用写回法;
当数据块的状态标志位为(1,0)且根据Quart计算单元的6个标识位判断该数据块不属于当前Tile计算单元及当前Quart计算的三级数据缓存器中的数据块时,则根据MESI协议对该数据块进行修改和更新;
当数据块的状态标志位为(1,1),则对该数据块采用写直法,并将该数据块的状态标识位修改为(1,0),以及反向同步到GPU计算核心单元的一级数据缓存器和共享的二级数据缓存器;
当数据块的状态标志位为(0,1),先请求获得相应的CPU计算核心的授权并将该数据块的状态标志位修改为(1,1),接着对该数据块采用写直法,并将该数据块的状态标识位修改为(1,0),以及反向同步到GPU计算核心单元的一级数据缓存器和共享的二级数据缓存器。
也就是说,CPU处理单元6或GPU处理单元7(处理单元是指CPU的处理器核心或GPU流计算单元),不是某个Quart中的4个CPU计算核心,对融合的三级Cache中的数据块更新和同步的基本原则是:
如果CPU处理单元6或GPU处理单元7发起的修改操作是对本Tile及本Quart的私有三级数据Cache块(私有三级数据Cache块是指数据Cache块的所有者属于CPU 或GPU计算核心),则执行传统的写回机制,在减少总线通信带宽的条件下保证Cache数据一致性。 如果CPU处理单元6或GPU处理单元7发起的修改操作是针对本Quart外的共享三级数据Cache块(共享三级数据Cache块是指数据Cache块的所有者既属于GPU计算核心,又属于CPU计算核心),为了保证Cache的严格一致性,则采用写直达法并反向同步到一级数据Cache和二级数据Cache或者GPU的一级数据Cache和二级共享数据Cache。
面向融合的三级数据Cache及统一的物理内存地址空间,对于典型的标识为(1,0),(0,1)和(1,1),数据块进行修改操作时,CPU处理单元6和GPU处理单元7分别修改数据块的基本操作规则包括以下六项:
规则一:如果CPU处理单元6修改标记为CPU计算核心且是本 Tile及本Quart私有的三级数据Cache的数据块, 则对三级数据Cache的数据块采用写回法;若 CPU修改标记为CPU却不是本Tile及本Quart私 有的三级数据Cache的数据块,则根据传统Cache一致性协议MESI(Modified,Exclusive,Share,and Invalid)修改和更新Cache数据块;
规则二:如果CPU处理单元6修改标记为共享的三级数据Cache的数据块,则对三级数据Cache的数据块采用写直达,修改数据块的状态标识到CPU私有状态,并反向同步到CPU的L1和12数据Cache;
规则三:如果CPU处理单元6修改标记为GPU计算核心的私有三级Cache数据块,则先请求获得相应GPU计算核心的授权,并将数据块修改到共享状态,然后执行规则二。
规则四:如果GPU处理单元7修改标记为GPU计算核心且是本Tile及本Quart私有的三级数据Cache的数据块,则对三级数据Cache的数据块采用写回法;若GPU修改标记为GPU却不是本Tile及本Quar私有的三级数据Cache的数据块,则根据传统Cache一致性协议MESI修改和更新Cache数据块。
规则五:如果GPU处理单元7修改标记为共享的三级数据Cache的数据块,则对三级数据Cache的数据块采用写直达,修改数据块的状态标识到GPU私有状态,并反向同步到GPU全局Cache和共享Cache。
规则六:如果GPU处理单元7修改标记为CPU计算核心的私有三级Cache数据块,则先请求获得相应CPU计算核心的授权,并将数据块修改到共享状态,然后执行规则五。
基于以上六项关于修改三级Cache数据块的基本规则,由CPU和GPU的访存指令和纯计算指令发起的读写操作可以同时访问三级Cache和统一的物理内存。
从上述修改的方案可以看出,通过设计有效地三级Cache 一致性访问机制,并给相应的物理内存地址的数据块分配统一的状态标识位,可以有效地管理融合的三级数据Cache和支持交叉式直接访问统一的物理内存地址空间,从而可以有效避免数据副本的传输开销,降低系统访存指令的数量,提高系统的计算性能,实现CPU和GPU之间的内存高速直接交换。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种基于CPU和GPU的异构千核高通量处理系统,其特征在于: 所述处理系统包括多个Tile计算单元,开关总线,三级融合的数据缓存器,CPU和GPU的内存接口以及动态随机存取存储器,每个Tile计算单元通过开关总线分别与三级融合的数据缓存器及CPU和GPU的内存接口连接,所述三级融合的数据缓存器及CPU的内存接口和GPU的内存接口均与所述动态随机存取存储器连接以直接访问所述动态随机存取存储器,其中,
每个Tile计算单元包括多个Quart计算单元,且多个Quart计算单元之间通过高速交叉网络互连;
每个Quart计算单元包括多个CPU计算核心单元和多个GPU计算核心单元,且具有共享的三级数据缓存器用于采用缓存一致性目录机制以缓存CPU数据块和GPU数据块,所述三级数据缓存器用于保存CPU计算核心单元的数据块和GPU计算核心单元的数据块;以及
所述每个CPU计算核心单元和每个GPU计算核心单元具有各自独立的一级数据缓存器,所述多个CPU计算核心单元具有共享的CPU二级数据缓存器,所述多个GPU计算核心单元具有共享的GPU二级数据缓存器。
2.如权利要求1所述的处理系统,其特征在于: 所述三级融合的数据缓存器用于保存一级数据缓存器的中的数据块,共享的CPU二级数据缓存器中的数据块,共享的GPU二级数据缓存器中的数据块以及共享的三级数据缓存器中的数据块。
3.如权利要求2所述的处理系统,其特征在于: 所述处理系统还包括与所述开关总线连接的系统编译器,所述系统编译器用于将6个标识位分配给每个Quart计算单元,其中高4位表示Tile计算单元的编号,低2位表示某个Tile计算单元内的Quart计算单元的编号。
4.如权利要求3所述的处理系统,其特征在于: 所述系统编译器还用于对三级融合的数据缓存器中的每个数据块分配2个状态标志位。
5.如权利要求4所述的处理系统,其特征在于: 所述处理系统还包括CPU处理单元和GPU处理单元,所述CPU处理单元和GPU处理单元分别与所述开关总线连接,用于根据每个数据块中的状态标志位和每个Quart计算单元的6个标识位对所述三级融合的数据缓存器中的数据块进行更新和同步。
6.如权利要求5所述的处理系统,其特征在于: 2个状态标志位具体包括以下:状态标志位(0,0),状态标志位(1,0),状态标志位(0,1)以及状态标志位(1,1)。
7.如权利要求6所述的处理系统,其特征在于:所述CPU处理单元用于:
当数据块的状态标志位为(0,0)时,可以访问该数据块;
当数据块的状态标志位为(1,0)且根据Quart计算单元的6个标识位判断该数据块属于当前Tile计算单元及当前Quart计算的三级数据缓存器中的数据块时,则对该数据块采用写回法;
当数据块的状态标志位为(1,0)且根据Quart计算单元的6个标识位判断该数据块不属于当前Tile计算单元及当前Quart计算的三级数据缓存器中的数据块时,则根据MESI协议对该数据块进行修改和更新;
当数据块的状态标志位为(1,1),则对该数据块采用写直法,并将该数据块的状态标识位修改为(1,0),以及反向同步到CPU计算核心单元的一级数据缓存器和共享的二级数据缓存器;
当数据块的状态标志位为(0,1),先请求获得相应的GPU计算核心的授权并将该数据块的状态标志位修改为(1,1),接着对该数据块采用写直法,并将该数据块的状态标识位修改为(1,0),以及反向同步到CPU计算核心单元的一级数据缓存器和共享的二级数据缓存器。
8.如权利要求6所述的处理系统,其特征在于:所述GPU处理单元用于:
当数据块的状态标志位为(0,0)时,可以访问该数据块;
当数据块的状态标志位为(1,0)且根据Quart计算单元的6个标识位判断该数据块属于当前Tile计算单元及当前Quart计算的三级数据缓存器中的数据块时,则对该数据块采用写回法;
当数据块的状态标志位为(1,0)且根据Quart计算单元的6个标识位判断该数据块不属于当前Tile计算单元及当前Quart计算的三级数据缓存器中的数据块时,则根据MESI协议对该数据块进行修改和更新;
当数据块的状态标志位为(1,1),则对该数据块采用写直法,并将该数据块的状态标识位修改为(1,0),以及反向同步到GPU计算核心单元的一级数据缓存器和共享的二级数据缓存器;
当数据块的状态标志位为(0,1),先请求获得相应的CPU计算核心的授权并将该数据块的状态标志位修改为(1,1),接着对该数据块采用写直法,并将该数据块的状态标识位修改为(1,0),以及反向同步到GPU计算核心单元的一级数据缓存器和共享的二级数据缓存器。
9.一种基于CPU和GPU的异构千核高通量处理系统的修改方法,其特征在于:所述修改方法包括:
当根据CPU处理单元的访存指令和纯计算指令发起数据块的读写操作时,判断数据块的状态标志位;
当数据块的状态标志位为(0,0)时,可以访问该数据块;
当数据块的状态标志位为(1,0)且根据Quart计算单元的6个标识位判断该数据块属于当前Tile计算单元及当前Quart计算的三级数据缓存器中的数据块时,则对该数据块采用写回法;
当数据块的状态标志位为(1,0)且根据Quart计算单元的6个标识位判断该数据块不属于当前Tile计算单元及当前Quart计算的三级数据缓存器中的数据块时,则根据MESI协议对该数据块进行修改和更新;
当数据块的状态标志位为(1,1),则对该数据块采用写直法,并将该数据块的状态标识位修改为(1,0),以及反向同步到CPU计算核心单元的一级数据缓存器和共享的二级数据缓存器;
当数据块的状态标志位为(0,1),先请求获得相应的GPU计算核心的授权并将该数据块的状态标志位修改为(1,1),接着对该数据块采用写直法,并将该数据块的状态标识位修改为(1,0),以及反向同步到CPU计算核心单元的一级数据缓存器和共享的二级数据缓存器。
10.如权利要求9所述的修改方法,其特征在于:所述修改方法还包括:
当根据GPU处理单元的访存指令和纯计算指令发起数据块的读写操作时,判断数据块的状态标志位;
当数据块的状态标志位为(0,0)时,可以访问该数据块;
当数据块的状态标志位为(1,0)且根据Quart计算单元的6个标识位判断该数据块属于当前Tile计算单元及当前Quart计算的三级数据缓存器中的数据块时,则对该数据块采用写回法;
当数据块的状态标志位为(1,0)且根据Quart计算单元的6个标识位判断该数据块不属于当前Tile计算单元及当前Quart计算的三级数据缓存器中的数据块时,则根据MESI协议对该数据块进行修改和更新;
当数据块的状态标志位为(1,1),则对该数据块采用写直法,并将该数据块的状态标识位修改为(1,0),以及反向同步到GPU计算核心单元的一级数据缓存器和共享的二级数据缓存器;
当数据块的状态标志位为(0,1),先请求获得相应的CPU计算核心的授权并将该数据块的状态标志位修改为(1,1),接着对该数据块采用写直法,并将该数据块的状态标识位修改为(1,0),以及反向同步到GPU计算核心单元的一级数据缓存器和共享的二级数据缓存器。
CN201610103506.4A 2016-02-25 2016-02-25 基于cpu和gpu的异构千核高通量处理系统及其修改方法 Active CN107122162B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610103506.4A CN107122162B (zh) 2016-02-25 2016-02-25 基于cpu和gpu的异构千核高通量处理系统及其修改方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610103506.4A CN107122162B (zh) 2016-02-25 2016-02-25 基于cpu和gpu的异构千核高通量处理系统及其修改方法

Publications (2)

Publication Number Publication Date
CN107122162A CN107122162A (zh) 2017-09-01
CN107122162B true CN107122162B (zh) 2019-11-19

Family

ID=59717583

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610103506.4A Active CN107122162B (zh) 2016-02-25 2016-02-25 基于cpu和gpu的异构千核高通量处理系统及其修改方法

Country Status (1)

Country Link
CN (1) CN107122162B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109508301B (zh) * 2017-09-14 2021-10-29 中国移动通信集团重庆有限公司 终端、应用数据的处理方法、数据处理设备及存储介质
CN107861815B (zh) * 2017-10-31 2020-05-19 华中科技大学 一种多gpu环境下的数据通信性能优化方法
CN108932206B (zh) * 2018-05-21 2023-07-21 南京航空航天大学 一种三维多核处理器混合缓存架构及方法
CN113096706B (zh) * 2021-03-09 2023-06-16 长江先进存储产业创新中心有限责任公司 中央处理器及其制造方法
CN113407352A (zh) * 2021-07-20 2021-09-17 北京百度网讯科技有限公司 用于处理任务的方法、处理器、设备和可读存储介质
CN113282536B (zh) * 2021-07-26 2021-11-30 浙江毫微米科技有限公司 基于内存密集型算法的数据处理系统和计算机设备
CN114691385A (zh) * 2021-12-10 2022-07-01 全球能源互联网研究院有限公司 一种电力异构计算系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103902502A (zh) * 2014-04-09 2014-07-02 上海理工大学 一种可扩展的分离式异构千核系统
CN103955435A (zh) * 2014-04-09 2014-07-30 上海理工大学 一种融合多级缓存目录建立访问方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103902502A (zh) * 2014-04-09 2014-07-02 上海理工大学 一种可扩展的分离式异构千核系统
CN103955435A (zh) * 2014-04-09 2014-07-30 上海理工大学 一种融合多级缓存目录建立访问方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Tiled QR Decomposition and Its Optimization on CPU and GPU Computing System;DongJin Kim ,Kyu-Ho Park;《IEEE会议论文》;20130808;744-753 *

Also Published As

Publication number Publication date
CN107122162A (zh) 2017-09-01

Similar Documents

Publication Publication Date Title
CN107122162B (zh) 基于cpu和gpu的异构千核高通量处理系统及其修改方法
CN110741356B (zh) 多处理器系统中的中继一致存储器管理
US10365930B2 (en) Instructions for managing a parallel cache hierarchy
CN103955435B (zh) 一种融合多级缓存目录建立访问方法
US10169087B2 (en) Technique for preserving memory affinity in a non-uniform memory access data processing system
CN105518631B (zh) 内存管理方法、装置和系统、以及片上网络
CN112416615A (zh) 多核处理器及其缓存一致性的实现方法、装置和存储介质
JP2015530651A (ja) マルチプロセサシステムおよびマルチプロセサシステムの構成方法
CN104536724A (zh) 一种多核环境下哈希表并发访问性能优化方法
WO2023103767A1 (zh) 基于同构多核的多操作系统及通信方法、芯片
JP2012252490A (ja) マルチプロセッサおよびそれを用いた画像処理システム
WO2016078205A1 (zh) 一种主机系统目录结构实现方法和系统
CN103902502B (zh) 一种可扩展的分离式异构千核系统
EP4162366A1 (en) Link affinitization to reduce transfer latency
TW201106159A (en) Directory cache allocation based on snoop response information
US6412047B2 (en) Coherency protocol
CN106844263B (zh) 一种基于可配置的多处理器计算机系统及实现方法
US9372796B2 (en) Optimum cache access scheme for multi endpoint atomic access in a multicore system
Chaudhuri Zero directory eviction victim: Unbounded coherence directory and core cache isolation
CN104461941B (zh) 一种内存系统架构及管理方法
CN116881192A (zh) 用于GPU的cluster架构及其内部一级缓存管理方法
Vaidyanathan et al. Designing efficient asynchronous memory operations using hardware copy engine: A case study with I/OAT
CN110737407A (zh) 一种支持混合写策略的数据缓冲存储器实现方法
CN105488012B (zh) 一种基于独占数据的一致性协议设计方法
Chaves et al. Energy-efficient cache coherence protocol for noc-based mpsocs

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant