CN104182281B - 一种gpgpu寄存器缓存的实现方法 - Google Patents

一种gpgpu寄存器缓存的实现方法 Download PDF

Info

Publication number
CN104182281B
CN104182281B CN201410418801.XA CN201410418801A CN104182281B CN 104182281 B CN104182281 B CN 104182281B CN 201410418801 A CN201410418801 A CN 201410418801A CN 104182281 B CN104182281 B CN 104182281B
Authority
CN
China
Prior art keywords
register
thread
cache
threads
stream handle
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.)
Expired - Fee Related
Application number
CN201410418801.XA
Other languages
English (en)
Other versions
CN104182281A (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.)
Zhejiang University City College ZUCC
Original Assignee
Zhejiang University City College ZUCC
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 Zhejiang University City College ZUCC filed Critical Zhejiang University City College ZUCC
Priority to CN201410418801.XA priority Critical patent/CN104182281B/zh
Publication of CN104182281A publication Critical patent/CN104182281A/zh
Application granted granted Critical
Publication of CN104182281B publication Critical patent/CN104182281B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明公开了一种GPGPU寄存器缓存的实现方法。各个流处理器移除原有寄存器文件,增加用于存储正在执行线程所需寄存器的寄存器缓存,线程执行前从内存中加载寄存器数据到寄存器缓存。在线程执行所需的寄存器能保存在流处理器的寄存器缓存中的前提下,从所有可执行的线程中选择线程数量最多的线程组合执行,从内存中加载选择的线程组合中每个线程所使用的寄存器数据到寄存器缓存,然后以任意方式对线程组合中的线程进行选择执行,当选择的线程组合中所有线程都无法执行时,重新选择另一组线程。本发明减少流处理器寄存器文件所需存储空间,降低能耗和面积,解除流处理器寄存器数量不足的限制,提高系统效率。

Description

一种GPGPU寄存器缓存的实现方法
技术领域
本发明涉及一种缓存实现方法,尤其是涉及一种GPGPU寄存器缓存的实现方法。
背景技术
通用图形处理器GPGPU是一种利用传统上处理图形任务的图形处理器来执行通用计算任务的处理器。GPGPU由多个流处理器组成,每个流处理器包含多个计算单元,流处理器中一个指令解码器控制所有的计算单元,计算单元按照单指令多数据的方式并行地执行指令,从而以较小的管理代价实现大规模数据并行计算。GPGPU中的最小管理单位是线程,每个线程通常用于处理大规模数据中的一个单位的数据。流处理器中一组线程在计算单元上锁步执行,称为锁步执行线程组,锁步执行线程组是流处理器线程调度器调度和指令执行的基本单位。GPGPU的大规模数据处理使得流处理器中包含大量的执行线程,流处理器通过切换不同的锁步执行线程组来尽量保持每个计算部件繁忙,掩盖如访问内存等操作带来的长延迟等待。
每个线程在执行时需要独立的寄存器文件来存储中间计算结果。流处理器为了支持在不同的锁步执行线程组之间快速切换,内建了大量的存储空间用于保存所有执行的线程所需的寄存器文件,寄存器文件大小是限制流处理器上可执行的线程数量的因素之一。流处理器在一段时间内只能执行部分线程,整个寄存器文件保存的大部分寄存器处于闲置状态并不会被立即使用,因此这些寄存器文件存储占用的GPGPU芯片的能耗和面积在不同的时间内被浪费了。
发明内容
为了解决背景技术中存在的问题,本发明的目的在于提供一种GPGPU寄存器缓存的实现方法。
本发明解决其技术问题所采用的技术方案包括:
各个流处理器中增加寄存器缓存替换寄存器文件,采用基于寄存器缓存的组织方式,并对流处理器线程采用基于寄存器缓存的调度方式。
所述的基于寄存器缓存的组织方式具体为:
A.1)移除流处理器原有寄存器文件,将原有寄存器文件中的所有寄存器数据保存在内存中,在流处理器内增加用于存储正在执行线程所需寄存器的寄存器缓存;
A.2)线程执行前从内存中加载寄存器数据到寄存器缓存。
当所述的流处理器执行的线程需要访问寄存器文件时,从寄存器缓存中访问。
当所述的流处理器的寄存器缓存空间不足时,替换除正在执行线程使用的寄存器数据以外的寄存器缓存的缓存块,并将缓存块中修改过的寄存器数据写回内存。
所述的基于寄存器缓存的调度方式具体为:
B.1)从所有可执行的线程中选择线程执行,在线程执行所需的寄存器能保存在流处理器的寄存器缓存中的前提下,从中选择线程数量最多的线程组合执行;
B.2)从内存中加载步骤B.1)中选择的线程组合中每个线程所使用的寄存器数据到寄存器缓存;
B.3)以任意方式对线程组合中的线程进行选择执行,当选择的线程组合中的所有线程都无法执行时,重复步骤B.1)选择另一组线程执行。
本发明具有的有益效果是:
本发明减少流处理器中保存寄存器文件所需的存储空间,从而降低GPGPU的能耗和芯片面积,避免了寄存器文件存储占用的GPGPU芯片的能耗和面积在不同的时间内的浪费。并解除流处理器寄存器数量不足的限制,增加可执行的线程数量,提高系统效率。
附图说明
图1是本发明基于寄存器缓存的组织方式的流程图。
图2是本发明流处理器基于寄存器缓存的调度方式的流程图。
具体实施方式
下面结合附图和实施例对本发明作进一步说明。
本发明方法包括:各个流处理器中增加寄存器缓存替换寄存器文件,采用基于寄存器缓存的组织方式,并对流处理器线程采用基于寄存器缓存的调度方式。
如图1所示,上述的基于寄存器缓存的组织方式具体为:
A.1)移除流处理器原有寄存器文件,将原有寄存器文件中的所有寄存器数据保存在内存中,在流处理器内增加用于存储正在执行线程所需寄存器的寄存器缓存,替换原有寄存器文件。
A.2)线程执行前从内存中加载寄存器数据到寄存器缓存。
当所述的流处理器执行的线程需要访问寄存器文件时,从寄存器缓存中访问,因此要在线程执行前从内存中加载所执行线程所需寄存器数据到寄存器缓存。当所述的流处理器的寄存器缓存空间不足时,替换除正在执行线程使用的寄存器数据以外的寄存器缓存的缓存块,并将缓存块中修改过的寄存器数据写回内存。
如图2所示,上述基于寄存器缓存的调度方式具体为:
B.1)从所有可执行的线程中选择线程执行,在线程执行所需的寄存器能保存在流处理器的寄存器缓存中的前提下,从中选择线程数量最多的线程组合执行。
B.2)从内存中加载步骤B.1)中选择的线程组合中每个线程所使用的寄存器数据到寄存器缓存。
B.3)以任意方式对线程组合中的线程进行选择执行,当选择的线程组合中的所有线程都无法执行时,重复步骤B.1)选择另一组线程执行。
本发明方法的实现原理如下:
1) 流处理器寄存器缓存的组织方式
移除流处理器原有的寄存器文件。实际的寄存器文件的数据保存在内存中,由于内存有充足的存储空间,因此可以保存更多线程的寄存器,从而允许更多的线程在流处理器上并发地执行。
流处理器中增加寄存器缓存,用于存储流处理器中正在执行的线程所需的寄存器。缓存由独立的缓存块构成,例如锁步线程执行中,由于锁步线程组中的线程总是执行同一条指令,这些线程会同时访问属于各自的相同编号的寄存器,因此寄存器缓存中一个缓存块保存整个锁步执行线程组中所有线程所使用的相同编号的寄存器数据,维持局部性。
锁步执行线程组在执行前检查其所需的寄存器是否在寄存器缓存中,若不存在则通过读请求从内存中读取相应的寄存器缓存块数据。
流处理器的流水线中,寄存器缓存替换了原寄存器文件。当流处理器执行的线程访问寄存器时,流水线从寄存器缓存的端口读取相应的寄存器数据。由于锁步执行,锁步执行线程组的所有线程在一次访问中都访问同相同编号的寄存器,而同一个锁步执行线程组相同编号的寄存器保存在同一个缓存块中,因此寄存器缓存只需要一次查找操作就能获得所需的所有数据而不会影响流水线性能。
在从内存读入寄存器缓存块时,若寄存器文件中没有空闲的空间,则需要替换出不使用的缓存块。替换的选择是最近最少被使用的缓存块,此方法容易实现且不需要线程调度器的信息。被替换出的缓存块若被修改过则需要写回内存。每个缓存块在被写入时记录实际写入的字节位图,写回内存时只写回被修改过的部分,从而降低写回的带宽开销。
2) 适用于寄存器缓存的流处理器线程调度方式
传统GPGPU的调度方式是轮流执行流处理器中所有的锁步执行线程组。当这些线程所使用的寄存器超过寄存器缓存的容量时会降低寄存器缓存的重用率,导致缓存抖动。本发明提出适用于寄存器缓存的流处理器线程调度方式。
第一步从所有可执行的线程中选择尽可能多的线程执行,选择标准是寄存器缓存的空间足够保存所有这些线程所使用的寄存器。从而避免在执行线程时产生寄存器缓存抖动。
在确定当前可执行的线程后,从内存中加载这些线程所使用的寄存器文件到寄存器缓存中以支持这些线程的执行。加载操作以调度的顺序从第一个将执行的锁步执行线程组所需的寄存器开始加载。
轮流执行之前选择的所有可执行线程,这一步与从内存中加载寄存器同时进行,在加载完成第一个将执行的锁步执行线程组的寄存器后就开始执行这个线程组,从而以线程组的执行覆盖寄存器文件的加载延迟。
当之前选择的执行线程中所有的锁步执行线程组都无法继续执行时需要重新选择可执行的线程。这种情况出现的原因是所有锁步执行线程组都在等待访存结果或者执行长延迟的计算指令。这时回到第一步重新选择一组可以执行的线程避免流处理器中计算资源浪费。
本发明的实施例:
对于步骤A.1)例如:Nvidia GeForce GTX480 GPGPU中,每个流处理器的寄存器文件具有32768个32位寄存器,需要1MB存储空间,将寄存器替换为256KB大小的寄存器缓存后每个流处理器可缓存8192个32位寄存器,从而节省了四分之三的片上存储所需空间。
对于步骤A.2)例如:流处理器将要执行的线程使用20个寄存器,则从内存中读取这20个寄存器所在的缓存块到寄存器缓存中。假设寄存器缓存的容量为30个寄存器,并且在此之前已经执行了另一个使用20个寄存器的线程,此时寄存器缓存有10个寄存器的空余缓存空间,新线程读取的20个寄存器中的10个可直接保存到这些空闲缓存空间中,其他10个由于缓存已满,首先替换旧线程的最早被访问的10个寄存器,若这10个寄存器中有被修改过的寄存器,则把它们所在的缓存块数据写回内存。同时,这10个寄存器缓存空间被用来保存新线程的后10个寄存器。
如图2所示,上述基于寄存器缓存的调度方式具体为:
对于步骤B.1):假设寄存器缓存能保存50个寄存器,每个线程需要20个寄存器,此时最多只能选择2个线程所组成的线程组合执行。无法选择更多线程的线程组合,如3个线程需要60个寄存器,无法同时存储在寄存器缓存中。这2个线程选择线程编号相邻的2个线程,比如线程1和线程2,以尽量减少对线程间同步的性能影响。
对于步骤B.2):按步骤B.1)的实施例选择了2个线程,每个线程需要20个寄存器,则需要从内存中加载总共40个寄存器到寄存器缓存。
对于步骤B.3):每个线程执行一条指令后切换到另一个线程执行,按照线程编号循环执行。对于步骤B.1)实施例中选择的2个线程,首先执行第一个线程的第一条指令,然后切换到第二个线程执行第一条指令,再切换回第一个线程执行第二条指令,以此类推。直到这两个线程由于访问内存或其他长延迟操作均无法立即继续执行时,重复步骤B.1)选择另一组线程执行。
上述具体实施方式用来解释说明本发明,而不是对本发明进行限制,在本发明的精神和权利要求的保护范围内,对本发明作出的任何修改和改变,都落入本发明的保护范围。

Claims (3)

1.一种GPGPU寄存器缓存的实现方法,其特征在于:各个流处理器中增加寄存器缓存替换寄存器文件,采用基于寄存器缓存的组织方式,并对流处理器线程采用基于寄存器缓存的调度方式;
所述的基于寄存器缓存的组织方式具体为:
A.1)移除流处理器原有寄存器文件,将原有寄存器文件中的所有寄存器数据保存在内存中,在流处理器内增加用于存储正在执行线程所需寄存器的寄存器缓存;
A.2)线程执行前从内存中加载寄存器数据到寄存器缓存;
所述的基于寄存器缓存的调度方式具体为:
B.1)从所有可执行的线程中选择线程执行,在线程执行所需的寄存器能保存在流处理器的寄存器缓存中的前提下,从中选择线程数量最多的线程组合执行;
B.2)从内存中加载步骤B.1)中选择的线程组合中每个线程所使用的寄存器数据到寄存器缓存;
B.3)以任意方式对线程组合中的线程进行选择执行,当选择的线程组合中的所有线程都无法执行时,重复步骤B.1)选择另一组线程执行。
2.根据权利要求1所述的一种GPGPU寄存器缓存的实现方法,其特征在于:当所述的流处理器执行的线程需要访问寄存器文件时,从寄存器缓存中访问。
3.根据权利要求1所述的一种GPGPU寄存器缓存的实现方法,其特征在于:当所述的流处理器的寄存器缓存空间不足时,替换除正在执行线程使用的寄存器数据以外的寄存器缓存的缓存块,并将缓存块中修改过的寄存器数据写回内存。
CN201410418801.XA 2014-08-25 2014-08-25 一种gpgpu寄存器缓存的实现方法 Expired - Fee Related CN104182281B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410418801.XA CN104182281B (zh) 2014-08-25 2014-08-25 一种gpgpu寄存器缓存的实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410418801.XA CN104182281B (zh) 2014-08-25 2014-08-25 一种gpgpu寄存器缓存的实现方法

Publications (2)

Publication Number Publication Date
CN104182281A CN104182281A (zh) 2014-12-03
CN104182281B true CN104182281B (zh) 2017-10-31

Family

ID=51963356

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410418801.XA Expired - Fee Related CN104182281B (zh) 2014-08-25 2014-08-25 一种gpgpu寄存器缓存的实现方法

Country Status (1)

Country Link
CN (1) CN104182281B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108537719B (zh) * 2018-03-26 2021-10-19 上海交通大学 一种提高通用图形处理器性能的系统及方法
CN112579278B (zh) * 2020-12-24 2023-01-20 海光信息技术股份有限公司 用于同步多线程的中央处理单元、方法、设备及存储介质
CN112817639B (zh) * 2021-01-13 2022-04-08 中国民航大学 Gpu读写单元通过操作数收集器访问寄存器文件的方法
CN112860395B (zh) * 2021-01-25 2022-03-25 中国人民解放军军事科学院国防科技创新研究院 用于gpu的多任务调度方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101331448A (zh) * 2005-10-20 2008-12-24 高通股份有限公司 用于堆栈式寄存器堆的寄存器保存引擎的后备存储缓冲器

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101331448A (zh) * 2005-10-20 2008-12-24 高通股份有限公司 用于堆栈式寄存器堆的寄存器保存引擎的后备存储缓冲器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
流寄存器文件的研究与实现;齐树波;《中国优秀硕士学位论文全文数据库(电子期刊)》;20071115;第10页、第11页2.2.2、第28页4.3 *

Also Published As

Publication number Publication date
CN104182281A (zh) 2014-12-03

Similar Documents

Publication Publication Date Title
US8533399B2 (en) Cache directory look-up re-use as conflict check mechanism for speculative memory requests
KR101068735B1 (ko) 프로세서 코어 스택 익스텐션
CN105117351B (zh) 向缓存写入数据的方法及装置
CN102934076B (zh) 指令发行控制装置以及方法
CN104182281B (zh) 一种gpgpu寄存器缓存的实现方法
CN100541453C (zh) 大容量缓存实现方法及存储系统
CN105468439B (zh) 在cpu-gpu异构框架下遍历固定半径内邻居的自适应并行方法
CN102110058A (zh) 一种低缺失率、低缺失惩罚的缓存方法和装置
CN107544756B (zh) 基于SCM的Key-Value日志型本地存储方法
CN109032668A (zh) 具有高带宽和低功率向量寄存器堆的流处理器
CA2630594A1 (en) Expansion of a stacked register file using shadow registers
CN103116555B (zh) 基于多体并行缓存结构的数据访问方法
US8583873B2 (en) Multiport data cache apparatus and method of controlling the same
JP5336423B2 (ja) 計算機システム
WO2006038991A2 (en) System, apparatus and method for managing predictions of various access types to a memory associated with cache
CN104052824B (zh) 分布式缓存方法及系统
CN110908716A (zh) 一种向量聚合装载指令的实现方法
CN104216684B (zh) 一种多核并行系统及其数据处理方法
US8028118B2 (en) Using an index value located on a page table to index page attributes
CN104714898B (zh) 一种Cache的分配方法和装置
CN109799897B (zh) 一种减少gpu二级缓存能耗的控制方法及装置
Hahn et al. SOS: Software-based out-of-order scheduling for high-performance NAND flash-based SSDs
EP2128771A1 (en) Method and apparatus for controlling cache memory
CN103729309B (zh) 一种目录Cache一致性方法
CN103514107B (zh) 高性能数据缓存系统和方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20171031