CN114816531B - 使用窄加法数据通道实现大位宽加操作数取数加操作的方法 - Google Patents

使用窄加法数据通道实现大位宽加操作数取数加操作的方法 Download PDF

Info

Publication number
CN114816531B
CN114816531B CN202210404054.9A CN202210404054A CN114816531B CN 114816531 B CN114816531 B CN 114816531B CN 202210404054 A CN202210404054 A CN 202210404054A CN 114816531 B CN114816531 B CN 114816531B
Authority
CN
China
Prior art keywords
addition
fetch
areas
add
data channel
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
CN202210404054.9A
Other languages
English (en)
Other versions
CN114816531A (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.)
Hexaflake Nanjing Information Technology Co Ltd
Original Assignee
Hexaflake Nanjing Information 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 Hexaflake Nanjing Information Technology Co Ltd filed Critical Hexaflake Nanjing Information Technology Co Ltd
Priority to CN202210404054.9A priority Critical patent/CN114816531B/zh
Publication of CN114816531A publication Critical patent/CN114816531A/zh
Application granted granted Critical
Publication of CN114816531B publication Critical patent/CN114816531B/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

本发明公开了一种使用窄加法数据通道实现大位宽加操作数取数加操作的方法,基于SIMT架构,每个线程使用独立的存储地址和寄存器操作数,硬件对于相同目标地址实现并行取数加操作;具体包括:S1、将加操作数分解为m个能够在窄加法数据通道中传输的部分加数,m个部分加数将加操作数拆分为m个区域;S2、变量指向的存储地址与m个区域进行取数加操作;S3、m个区域的值聚合,获得大位宽加操作数取数加操作的值。本发明提出的解决方案,具有占用较小的片上面积,使用少量的硬件资源,功耗低,同时保证了数据的完整性的优点。

Description

使用窄加法数据通道实现大位宽加操作数取数加操作的方法
技术领域
本发明涉及数据存储领域,具体是一种使用窄加法数据通道实现大位宽加操作数取数加操作的方法。
背景技术
SIMT并行处理
SMIT是指单指令多线程程序执行方式,在这种方式下,多个线程在不同的数据上执行相同的指令,并允许线程之间有适当的分歧控制。出于性能考虑,SIMT应当尽量减少线程之间的分歧。
原子加法指令
原子加法(atomic add)指令广泛用于计算机并发程序中,是并行计算的一条重要指令。当需要对一个存储地址中的数据执行加法操作时,首先需要从该存储地址中将数据读取出来,加上相应的数值,并将结果写回原来的存储地址。原子加法要求上述的取数、相加、写回操作必须是完整的不可分割的。在并行计算中,由于多个线程可能会同时访问一个相同的存储地址,因此需要原子操作保证数据的完整性。
在SIMT计算模式下,原子加法的操作语义是串行的,即当多个线程在执行完成原子加法操作之后,其结果应当和这些线程按顺序依次执行加法操作的结果相一致。
原子加法指令可以在使用共享变量的程序中实现无等待、无锁定、无阻塞的并行执行。例如,当多个线程需要向某个队列添加数据时,可以使用一个共享变量表示队列的起始地址,每个线程对这个共享变量使用原子加法指令来获取各自的队列起始地址。由于原子加法在执行时无需等待,因此线程在执行时具有高度的并行性,同时保证了数据的完整性。
并行原子加法
原子加法指令有两种实现方式,当采用串行实现方式时,各个线程按顺序依次取数、相加并写回。这种实现方式保证了原子加法的语义正确,但性能较差,不适合大并发数据的情形。原子加法也可以采用并行实现方式,但传统的并行实现需要大量的硬件资源,占用较大的片上面积,且功耗较高。
发明内容
本发明针对背景技术中存在的问题,提出一种新型的并行原子加法实现方法。
技术方案:
一种使用窄加法数据通道实现大位宽加操作数取数加操作的方法,基于SIMT架构,每个线程使用独立的存储地址和寄存器操作数,硬件对于相同目标地址实现并行取数加操作;
使用窄加法数据通道实现大位宽加操作数取数加操作的方法包括以下步骤:
S1、将加操作数分解为m个能够在窄加法数据通道中传输的部分加数,m个部分加数将加操作数拆分为m个区域;
S2、变量指向的存储地址与m个区域进行取数加操作;
S3、m个区域的值聚合,获得大位宽加操作数取数加操作的值。
优选的,S1中,m个区域等分。
优选的,S2中,m个区域从右至左排序,变量指向的存储地址与第i个区域进行取数加操作时,包括以下步骤:
S2-1、将第i个区域右移(i-1)n位;n=加操作数总位宽/m;
S2-2、变量指向的存储地址与i个区域相加。
优选的,S3中,m个区域的值聚合包括以下步骤:
S3-1、将第i个区域的值左移(i-1)n位;
S3-2、各区域的值相加。
本发明的有益效果
本发明针对大位宽加操作数取数加问题,提出了一种使用窄加法数据通道实现的方案,与传统取数加指令的实现方式不同,本发明提出了一种使用窄加法数据通道实现的方案,只需要占用较小的片上面积,使用少量的硬件资源即可实现窄数据通道的取数加指令,功耗低;同时利用软件方式实现值聚合,以达到和传统取数加指令完全一致的效果,保证了数据的完整性。
具体实施方式
下面结合实施例对本发明作进一步说明,但本发明的保护范围不限于此:
AIGPU支持SIMT的并行取数加指令,其中每个线程可以使用独立的存储地址和寄存器操作数。硬件对于相同目标地址实现并行取数加操作。
使用窄加法数据通道实现大位宽加操作数取数加操作的方法包括以下步骤:
S1、将加操作数分解(优选的:等分)为m个能够在窄加法数据通道中传输的部分加数,m个部分加数将加操作数拆分为m个区域;这里将加操作数分解成较小的部分加数,硬件也因此是需要支持很小的数据通道,可以减少硬件资源。一种实现是将加操作数限制为4比特,只需使用寄存器的操作数的最低4位(lsb[3:0])。高位都忽略了。每个线程只能加0-7之间的一个数。加法的数据通道只是4位宽,存储数据是32比特。
S2、变量指向的存储地址与m个区域进行取数加操作;m个区域从右至左排序,变量指向的存储地址与第i个区域进行取数加操作时,包括以下步骤:
S2-1、将第i个区域右移(i-1)n位;n=加操作数总位宽/m;
S2-2、变量指向的存储地址与i个区域相加。
S3、m个区域的值聚合,获得大位宽加操作数取数加操作的值。m个区域的值聚合包括以下步骤:
S3-1、将第i个区域的值左移(i-1)n位;
S3-2、各区域的值相加。
下面的例子中,要实现的32位取数加把R0的值加到Rx指向的存储地址中的值,结果返回到R1寄存器中。
如果所有的线程中R0值都小于16,则只需使用指令fetch_ad_add R1,Rx,R0
否则,假定R0是完整的32比特,执行如下指令:
οFetch_and_add R2,Rx,R0;//atomic fetch and add R0[3:0]使用R0的低4位
οShift_right R0,R0,4;//将R0右移4位,使用原有R0[7:4]
οAdd Rx,N;//使用新地址
οFetch_and_add R3,Rx,R0;//使用原有R0[7:4]
οShift_right R0,R0,4;//将R0右移4位,使用原有R0[11:8]
οAdd Rx,N;//使用新地址
οFetch_and_add R4,Rx,R0;//使用原有R0[11:8]
οShift_right R0,R0,4;//将R0右移4位,使用原有R0[15:12]
οAdd Rx,N;//使用新地址
οFetch_and_add R5,Rx,R0;//使用原有R0[15:12]
οShift_right R0,R0,4;//将R0右移4位,使用原有R0[19:16]
οAdd Rx,N;//使用新地址
οFetch_and_add R6,Rx,R0;//使用原有R0[19:16]
οShift_right R0,R0,4;//将R0右移4位,使用原有R0[23:20]
οAdd Rx,N;//使用新地址
οFetch_and_add R7,Rx,R0;//使用原有R0[23:20]
οShift_right R0,R0,4;//将R0右移4位,使用原有R0[使用原有R0[27:24]]
οAdd Rx,N;//使用新地址
οFetch_and_add R8,Rx,R0;//使用原有R0[27:24]
οShift_right R0,R0,4;//将R0右移4位,使用原有R0[31:28]
οAdd Rx,N;//使用新地址
οFetch_and_add R9,Rx,R0;//使用原有R0[31:28]
οShift_left R3,R3,4//左移4位
οShift_left R4,R4,8//左移再4位
οShift_left R5,R5,12//左移再4位
οShift_left R6,R6,16//左移再4位
οShift_left R6,R7,20//左移再4位
οShift_left R6,R8,24//左移再4位
οShift_left R6,R9,28//左移再4位
οAdd R2,R3,…R9=>R1//聚合所有值
上面的一系列指令将32位的和返回到R1寄存器中。目标地址分成8个区域,每个区域按顺序左移4位。对于多数应用而言,没有必要将这8个区的值聚合成一个。如果需要32位值,可以重复执行上述中的{右移、新地址生成、取数加}序列8次,然后执行左移7次,最终将8个区域的值聚合成一个。最终结果返回到原来的R0寄存器中。
在许多应用中,存储区域很小且包装紧凑。例如,一个应用中每个线程需要生成不定大小的结果数据并添加到一个单一的队列后面。所有的线程使用一个存储目标地址,取数加指令会为每个线程返回添加数据的起始地址。因为线程的数据量不同,产生的起始地址也不同。
取数加指令的结果必须是确定性的,即对于那些使用相同存储地址的线程,逻辑上与这些线程按顺序执行取数加操作的结果一致,在SIMIT中这一执行顺序与线程编号的顺序一致。例如,线程0、8、9、12的线程目标地址都是&x,其结果应该与按照执行顺序0、8、9、12按序执行取数加得到的一致。这里只关心执行结果,而不限制实际的并行实现顺序。这个例子的执行结果如下:
·Y0=x
·Y8=x+r0
·Y9=x+r0+r8
·Y12=x+r0+r8+r9
·New x=x+r0+r8+r9+r12
本文中所描述的具体实施例仅仅是对本发明精神做举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。

Claims (1)

1.一种使用窄加法数据通道实现大位宽加操作数取数加操作的方法,其特征在于基于SIMT架构,每个线程使用独立的存储地址和寄存器操作数,硬件对于相同目标地址实现并行取数加操作;
使用窄加法数据通道实现大位宽加操作数取数加操作的方法包括以下步骤:
S1、将加操作数分解为m个能够在窄加法数据通道中传输的部分加数,m个部分加数将加操作数拆分为m个区域,m个区域等分;
S2、变量指向的存储地址与m个区域进行取数加操作:m个区域从右至左排序,变量指向的存储地址与第i个区域进行取数加操作时,包括以下步骤:
S2-1、将第i个区域右移(i-1)n位;n=加操作数总位宽/m;
S2-2、变量指向的存储地址与i个区域相加;
S3、m个区域的值聚合,获得大位宽加操作数取数加操作的值;m个区域的值聚合包括以下步骤:
S3-1、将第i个区域的值左移(i-1)n位;
S3-2、各区域的值相加。
CN202210404054.9A 2022-04-18 2022-04-18 使用窄加法数据通道实现大位宽加操作数取数加操作的方法 Active CN114816531B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210404054.9A CN114816531B (zh) 2022-04-18 2022-04-18 使用窄加法数据通道实现大位宽加操作数取数加操作的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210404054.9A CN114816531B (zh) 2022-04-18 2022-04-18 使用窄加法数据通道实现大位宽加操作数取数加操作的方法

Publications (2)

Publication Number Publication Date
CN114816531A CN114816531A (zh) 2022-07-29
CN114816531B true CN114816531B (zh) 2023-05-02

Family

ID=82537299

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210404054.9A Active CN114816531B (zh) 2022-04-18 2022-04-18 使用窄加法数据通道实现大位宽加操作数取数加操作的方法

Country Status (1)

Country Link
CN (1) CN114816531B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1696894A (zh) * 2004-05-10 2005-11-16 华为技术有限公司 大数模乘计算乘法器
CN105988771A (zh) * 2015-03-04 2016-10-05 上海复旦微电子集团股份有限公司 模逆运算器

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7685212B2 (en) * 2001-10-29 2010-03-23 Intel Corporation Fast full search motion estimation with SIMD merge instruction
GB2533568B (en) * 2014-12-19 2021-11-17 Advanced Risc Mach Ltd Atomic instruction
CN109388427A (zh) * 2017-08-11 2019-02-26 龙芯中科技术有限公司 向量处理方法、向量处理单元和微处理器
CN111258644B (zh) * 2018-11-30 2022-08-09 上海寒武纪信息科技有限公司 数据处理方法、处理器、数据处理装置及存储介质
CN113590195B (zh) * 2021-07-22 2023-11-07 中国人民解放军国防科技大学 支持浮点格式乘加的存算一体化dram计算部件
CN114237550B (zh) * 2021-11-10 2023-10-13 电子科技大学 一种基于Wallace树的多输入移位求和累加器

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1696894A (zh) * 2004-05-10 2005-11-16 华为技术有限公司 大数模乘计算乘法器
CN105988771A (zh) * 2015-03-04 2016-10-05 上海复旦微电子集团股份有限公司 模逆运算器

Also Published As

Publication number Publication date
CN114816531A (zh) 2022-07-29

Similar Documents

Publication Publication Date Title
Eggers et al. Simultaneous multithreading: A platform for next-generation processors
US8145885B2 (en) Apparatus for randomizing instruction thread interleaving in a multi-thread processor
JP4987882B2 (ja) スレッドに最適化されたマルチプロセッサアーキテクチャ
US9830156B2 (en) Temporal SIMT execution optimization through elimination of redundant operations
US9477465B2 (en) Arithmetic processing apparatus, control method of arithmetic processing apparatus, and a computer-readable storage medium storing a control program for controlling an arithmetic processing apparatus
TWI231914B (en) Context pipelines
US10268519B2 (en) Scheduling method and processing device for thread groups execution in a computing system
Cui et al. Auto-tuning dense matrix multiplication for GPGPU with cache
Atoofian Reducing shift penalty in domain wall memory through register locality
Yabuta et al. Relational joins on gpus: A closer look
Osvik Speeding up Serpent.
US11853754B2 (en) Mask operation method for explicit independent mask register in GPU
RU2375768C2 (ru) Процессор и способ осуществления операций непрямого чтения и записи регистра
US5761467A (en) System for committing execution results when branch conditions coincide with predetermined commit conditions specified in the instruction field
JP2017045151A (ja) 演算処理装置及び演算処理装置の制御方法
WO2006102379A2 (en) Processor and method of grouping and executing dependent instructions in a packet
CN114816531B (zh) 使用窄加法数据通道实现大位宽加操作数取数加操作的方法
CN114510271B (zh) 用于在单指令多线程计算系统中加载数据的方法和装置
US20160162262A1 (en) Parallelization of random number generators
Dorozhevets et al. The El'brus-3 and MARS-M: Recent advances in Russian high-performance computing
WO2022161013A1 (zh) 处理器装置及其指令执行方法、计算设备
US20220197647A1 (en) Near-memory determination of registers
Moon et al. Generalized multiway branch unit for VLIW microprocessors
US20130166887A1 (en) Data processing apparatus and data processing method
KR20210066843A (ko) 마스킹된 벡터 명령어 구현 시스템 및 방법

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