CN104699465B - 向量处理器中支持simt的向量访存装置和控制方法 - Google Patents
向量处理器中支持simt的向量访存装置和控制方法 Download PDFInfo
- Publication number
- CN104699465B CN104699465B CN201510135336.3A CN201510135336A CN104699465B CN 104699465 B CN104699465 B CN 104699465B CN 201510135336 A CN201510135336 A CN 201510135336A CN 104699465 B CN104699465 B CN 104699465B
- Authority
- CN
- China
- Prior art keywords
- vector
- address
- access
- registor
- offset
- 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
Links
Classifications
-
- 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
- Complex Calculations (AREA)
Abstract
本发明公开一种向量处理器中支持SIMT的向量访存装置和控制方法,该装置包括基址向量寄存器单元、偏移向量寄存器单元以及向量地址计算单元,基址向量寄存器单元、偏移向量寄存器单元分别包括多组向量寄存器,每组向量寄存器由多个寄存器构成;向量地址计算单元包括多个地址计算子单元,每个地址计算子单元分别与向量处理器中各存储体一一对应连接;各线程的基址、偏移地址分别通过一组向量寄存器进行获取后,分别输出至各地址计算子单元进行计算,得到各线程的访存地址输出至对应的存储体;该方法为向量访存装置的控制方法。本发明具有向量访存灵活性强、并行访存效率高且功耗低,且能够支持SIMT线程级并行的优点。
Description
技术领域
本发明涉及微处理器体系结构设计的技术领域,尤其涉及一种向量处理器中支持SIMT的向量访存装置和控制方法。
背景技术
无线通信、图像处理等流媒体应用的发展需要微处理器在有限的功耗预算下提供更高的实时运算能力,单指令流多数据流(Single Instruction Multiple Data,SIMD)技术因其可共享硬件控制结构、能开发大量的数据级并行,可在相对较低的功耗下实现高数据吞吐量的计算能力等特性迅速成为各类微处理器的重要扩展。向量处理器片内集成向量运算单元(Vector Processing Units,VPU)和向量访存单元VMU,向量运算单元VPU内集成了多个并行的运算单元PE,按SIMD方式执行运算操作。为满足向量运算单元VPU的向量运算需求,向量访存单元VMU按SIMD方式执行向量访存操作,为向量访存单元VPU提供高带宽的向量访存数据。
但随着SIMD宽度即按SIMD方式操作的并行运算单元个数的增加,全局异常导致的全局停顿的代价越来越大,向量处理器在获得更高的理论运算峰值的同时,实际运算效率却并未按预期增加。因此在SIMD方式开发的数据级并行的基础上,迫切需要开发更高的并行性即线程级并行,提高系统的运算效率。但目前的向量访存操作只提供地址连续或等地址跨步等具有特定地址变化规律的一组向量数据的访存,不能满足向量访存单元VPU多线程并行执行的需求,从而无法支持SIMT单指令流多线程(Single Instruction MultipleThread,SIMT)的向量访存。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种向量访存灵活性强、能够支持线程级并行且并行访存效率高、功耗低的向量处理器中支持SIMT的向量访存装置和控制方法。
为解决上述技术问题,本发明提出的技术方案为:
一种向量处理器中支持SIMT的向量访存装置,包括基址向量寄存器单元、偏移向量寄存器单元以及向量地址计算单元,所述基址向量寄存器单元、偏移向量寄存器单元分别包括多组向量寄存器,每组向量寄存器由对应向量处理器中各线程的多个寄存器构成;所述向量地址计算单元包括多个地址计算子单元,每个地址计算子单元分别与向量处理器中各存储体一一对应连接;各线程的基址、偏移地址分别通过所述基址向量寄存器单元、偏移向量寄存器单元中一组向量寄存器进行获取,分别输出至各地址计算子单元进行计算,得到各线程的访存地址并输出至对应的存储体。
作为本发明装置的进一步改进:还包括通用向量寄存器单元,所述通用向量寄存器单元包括多组向量寄存器,每组向量寄存器由对应向量处理器中各线程的多个寄存器构成;所述通用向量寄存器单元通过一组向量寄存器存储各线程的访存数据。
作为本发明装置的进一步改进:所述通用向量寄存器单元包括m组通用向量寄存器,其中m=log2t,且t是通用向量寄存器的位数。
作为本发明装置的进一步改进:所述基址寄存器单元包括k1组基址向量寄存器,其中k1=log2s1 ,且s1为基址向量寄存器的位数;所述偏移向量寄存器单元包括k2组偏移向量寄存器,其中k2=log2s2,且s2为偏移向量寄存器的位数;所述通用向量寄存器单元包括m组通用向量寄存器,其中m=log2t,且t是通用向量寄存器的位数。
作为本发明装置的进一步改进:还包括相互连接的SIMT指令生成单元以及指令译码单元,所述指令译码单元分别与所述基址向量寄存器单元、偏移向量寄存器单元、通用向量寄存器单元连接;所述SIMT指令生成单元用于根据各线程的访存指令指定读写访问类型以及所述基址向量寄存器单元、偏移向量寄存器单元、通用向量寄存器单元中对应组的向量寄存器,并生成对应的SIMT访存指令;所述指令译码单元用于对所述SIMT指令生成单元生成的SIMT访存指令进行译码,得到所指定的读写访问类型以及所述基址向量寄存器单元、偏移向量寄存器单元、通用向量寄存器单元中对应组的向量寄存器。
作为本发明装置的进一步改进:基址向量寄存器单元、偏移向量寄存器单元、通用向量寄存器单元均包括寄存器组选择器,寄存器组选择器与所述指令译码单元连接。
本发明还提供一种基于上述向量访存装置的控制方法,步骤包括:
1)将向量处理器中n个线程对应的n路存储体进行统一编址,并根据各存储体的访问地址范围配置所述基址向量寄存器单元、所述偏移向量寄存器单元中对应组的向量寄存器;
2)获取各线程的访存指令并进行指令译码,得到访存指令中所指定的读写访问类型以及所述基址向量寄存器单元、所述偏移向量寄存器单元中对应组的向量寄存器;
3)选取访存指令中所指定的所述基址向量寄存器单元、所述偏移向量寄存器单元对应组的向量寄存器,并根据选取得到的向量寄存器的值计算向量访存地址,得到对应n个线程的n路向量访存地址;
4)将n路向量访存地址分别输出至对应的向量存储体进行访存,若为写指令,则根据所述向量访存地址将各线程对应的n路数据分别写入到向量存储体中;若为读指令,则根据所述向量访存地址从向量存储体中读出n路数据。
作为本发明方法的进一步改进,所述步骤2)的具体实施步骤为:
2.1)获取各线程的访存指令,根据所述访存指令指定读写访问类型以及所述基址向量寄存器单元、偏移向量寄存器单元中对应组的向量寄存器,以及指定用于通过一组向量寄存器存储各线程的访存数据的通用向量寄存器单元中对应组的向量寄存器,并生成对应的SIMT访存指令;
2.2)对所述SIMT访存指令进行译码,得到各线程的访存指令所指定的读写访问类型以及基址向量寄存器单元、偏移向量寄存器单元、通用向量寄存器单元中对应组的向量寄存器。
作为本发明方法的进一步改进,所述SIMT访存指令的数据位包括访存粒度、寻址模式、读写访问类型有效位、符合位扩展、基址向量寄存器编号、偏移向量寄存器编号以及通用向量寄存器编号,所述基址向量寄存器编号、偏移向量寄存器编号以及通用向量寄存器编号分别用于指定基址向量寄存器单元、偏移向量寄存器单元、通用向量寄存器单元中对应组的向量寄存器。
作为本发明方法的进一步改进,所述步骤3)的具体实施步骤为:
3.1)将n路向量访存地址分别转化得到n路行地址、存储体BANK地址和偏移地址,并结合访存指令中所指定的访存粒度、寻址模式信息一起传给向量存储体;
3.2)如果是向量写指令,则根据访存指令获取所指定的通用向量寄存器单元中对应组的向量寄存器,并根据转化得到的n路行地址、存储体BANK地址和偏移地址将所指定的所述通用向量寄存器单元中对应组寄存器的值分别写入对应的存储体;如果是向量读指令,则根据所述n路行地址、存储体BANK地址和偏移地址从存储体中读出n路数据,并返回给通用向量寄存器单元。
与现有技术相比,本发明的优点在于:
1)本发明通过向量化的基址向量寄存器单元、偏移向量寄存器单元获取各线程访存地址的基址、偏移地址,结合向量化的地址计算子单元分别对应计算各线程的访存地址,使得每个线程的向量处理单元均有自己独立的访存地址,不同线程的向量处理单元访问地址之间不具有相关性,从而能够支持SIMT的线程级并行,有效提高了访存的灵活性和并行性;
2)本发明通过对应各线程的向量寄存器计算向量地址,使各线程对应的向量处理单元能够有自己独立的访存空间,从而在一次访存中不同线程的向量处理单元的访存地址不会出现冲突,能够有效减少仲裁和停顿、提高使流水线运行效率,同时降低向量访存所消耗的面积和功耗;
3)本发明能够支持对向量存储体存储空间的SIMT访存,有效提高了并行访存效率且减少了指令数量,同时降低了功耗,因而能够适用于面向无线通信、图像处理等流媒体应用的微处理器中以实现灵活的向量访存。
附图说明
图1是本实施例中向量处理单元和存储体组织方式的原理示意图。
图2是本实施例向量处理器中支持SIMT的向量访存装置的结构原理示意图。
图3为本实施例中访存控制方法的实现流程示意图。
图4为本实施例中向量地址计算的结构原理示意图。
图5为本实施例的执行向量访存的结构原理示意图。
图例说明:1、指令译码单元;2、基址向量寄存器单元;3、偏移向量寄存器单元;4、通用向量寄存器单元;5、向量地址计算单元;51、地址计算子单元;6、向量存储体。
具体实施方式
以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
如图1、2所示,本实施例支持SIMT的向量访存装置,包括基址向量寄存器单元2、偏移向量寄存器单元)以及向量地址计算单元5,基址向量寄存器单元2、偏移向量寄存器单元3分别包括多组向量寄存器,每组向量寄存器由对应向量处理器中各线程的多个寄存器构成;向量地址计算单元5包括多个地址计算子单元51,每个地址计算子单元51分别与向量处理器中各存储体一一对应连接;各线程的基址、偏移地址分别通过基址向量寄存器单元2、偏移向量寄存器单元3中一组向量寄存器进行获取后,分别输出至各地址计算子单元51进行计算,得到各线程的访存地址输出至对应的存储体。
本实施例中,还包括通用向量寄存器单元4,通用向量寄存器单元4包括多组向量寄存器,每组向量寄存器由对应向量处理器中各线程的多个寄存器构成;通用向量寄存器单元4通过一组向量寄存器存储各线程的访存数据。
参见图1,本实施例中SIMD处理器的宽度为n,对应向量处理单元的个数也为n,向量存储器由n路BANK体(BANK0,……,BANKn-1)组成,n路向量处理单元和n 路BANK体分别一一对应。BANK体之间采用高位地址交叉方式编址,假设每个BANK体的行数为e,每一行有w个字节,则单个BANK体的容量为e*w字节。每个BANK体的地址范围分别为(e*w*0~e*w-1), (e*w*1 ~e*w*2-1),……,(e*w*(n-1) ~e*w*n-1),分别对应于n路向量处理单元的访存寻址范围。向量存储器BANK体的每一行为w个字节,w为2的整数幂次方,w*8为单个向量处理单元所能访存的最大位宽,单个向量处理单元的访存位宽可以为1字节,2字节,4字节,……,w字节,通过向量指令译码中的访存粒度信息可以确定单个向量处理单元的访存位宽。
本实施例中,通用向量寄存器单元4包括m组通用向量寄存器VR,每组通用向量寄存器VR包括n个分别对应各线程的通用寄存器,其中m=log2t,且t是通用向量寄存器的位数。
基址寄存器单元2包括k1组基址向量寄存器VAR,每组基址向量寄存器VAR包括n个分别对应各线程的基址寄存器,其中k1=log2s1 ,且s1为基址向量寄存器VAR的位数;偏移向量寄存器单元3包括k2组偏移向量寄存器VOR,每组偏移向量寄存器VOR包括n个分别对应各线程的偏移寄存器,其中k2=log2s2,且s2为偏移向量寄存器的位数,其中k=log2s ;
参见图2,本实施例中采用m(m=log2t)组通用向量寄存器VR组成通用向量寄存器文件(VRF),每组通用向量寄存器VR包含n个通用寄存器;采用k(k=log2s)组基址向量寄存器VAR组成基址向量寄存器文件VARF,每组基址向量寄存器VAR包含n个基址寄存器;采用k(k=log2s)组偏移向量寄存器VOR组成偏移向量寄存器文件VORF,每组偏移向量寄存器VOR包含n个偏移寄存器;采用n路地址计算子单元AGU组成向量地址计算单元VAGU,分别进行地址计算,得到n路向量访存地址,用这n路向量访存地址分别访问向量存储体n路BANK体,其中基址向量寄存器VAR和偏移向量寄存器VOR为s位,通用向量寄存器VR为t位。
本实施例中,n对基址向量寄存器VAR和偏移向量寄存器VOR对应n路PE的SIMT线程,对应 n路运算单元PE,每个运算单元PE拥有k个基址寄存器AR和k个偏移寄存器OR,共k组基址向量寄存器VAR和k组偏移向量寄存器VOR。基址向量寄存器文件VARF是一个二维的组织结构,其中一维是运算单元PE的个数n,另一维是每个运算单元PE拥有的基址寄存器AR的个数k;偏移向量寄存器文件VORF也为一个二维的组织结构,其中一维是运算单元PE的个数n,另一维是每个运算单元PE拥有的偏移寄存器OR的个数k。
本实施例中,还包括相互连接的SIMT指令生成单元以及指令译码单元1,指令译码单元1分别与所述基址向量寄存器单元2、偏移向量寄存器单元3连接; SIMT指令生成单元用于根据各线程的访存指令指定读写访问类型以及所述基址向量寄存器单元2、偏移向量寄存器单元3、通用向量寄存器单元4中对应组的寄存器,并生成对应的SIMT访存指令;指令译码单元用于对所SIMT指令生成单元生成的SIMT访存指令进行译码,得到所指定的读写访问类型以及所述基址向量寄存器单元、偏移向量寄存器单元、通用向量寄存器单元中对应组的寄存器。
本实施例中,SIMT访存指令的指令域包括:操作类型OP、寻址模式Mode、基址向量寄存器编号VAR_ID、偏移向量寄存器编号VOR_ID和通用向量寄存器编号DST_ID,其中VAR_ID、VOR_ID为s位,DST_ID为t位。操作类型OP、寻址模式Mode分别用于指定操作类型以及寻址模式,基址向量寄存器编号VAR_ID、偏移向量寄存器编号VOR_ID和通用向量寄存器编号DST_IDf则分别用于指定基址向量寄存器单元2、偏移向量寄存器单元3、通用向量寄存器单元4中对应组的向量寄存器。如图2所示,SIMT访存指令具体包括访存粒度、读/写访问有效位、符号位扩展、VAR_ID、VOR_ID、DST_ID等数据位,其中读/写访问有效位用于区分这条向量访存指令是写指令还是读指令符号位扩展用于表示如果是读指令,在某些访存粒度下,是否需要对读出的数据进行符号位扩展。
本实施例中,基址向量寄存器单元2、偏移向量寄存器单元3、通用向量寄存器单元4均包括寄存器组选择器,寄存器组选择器与指令译码单元1连接。寄存器组选择器根据指令译码单元1的译码结果选择对应组的向量寄存器输出。
如图3所示,本实施例基于上述支持SIMT的向量数据访存装置的控制方法,详细实施步骤如下:
1)将向量处理器中n个线程对应的n路存储体进行统一编址,并根据各存储体的访问地址范围配置基址向量寄存器单元2、偏移向量寄存器单元3中对应组的向量寄存器;
2)获取各线程的访存指令并进行指令译码,得到访存指令中所指定的读写访问类型以及基址向量寄存器单元2、偏移向量寄存器单元3中对应组的向量寄存器;
3)选取访存指令中所指定的基址向量寄存器单元2、偏移向量寄存器单元3、通用向量寄存器单元4中对应组的向量寄存器,并根据选取得到的寄存器的值计算向量访存地址,得到对应n个线程的n路向量访存地址;
4)将n路向量访存地址分别输出至对应的向量存储体6进行访存,若为写指令,则根据向量访存地址将各线程对应的n路数据分别写入到向量存储体6中;若为读指令,则根据向量访存地址从向量存储体6中读出n路数据。
本实施例中,向量存储器的存储体采用高位地址交叉的地址划分方式,使n个向量处理单元可以在一次访存中无冲突的访问各自地址范围内的任意存储空间,减少了流水线停顿,增加了指令执行效率,并且可以避免使用仲裁逻辑和仲裁所必须的缓存逻辑,从而减小了芯片的面积和功耗开销。
在一次SIMT访存操作中,由向量访存指令指定一个基址向量寄存器编号VAR_ID和一个偏移向量寄存器编号VOR_ID,每个基址向量寄存器编号VAR_ID对应k组VAR的某一组,每个偏移向量寄存器编号VOR_ID对应k组VOR的某一组。为了实现向量访存指令的无冲突访问,在向量访存指令执行之前,需要根据每路PE的访存地址范围分别配置好指定组的基址向量寄存器VAR和偏移向量寄存器VOR,使得每个向量处理单元的访存地址都在其访存地址范围内,如果地址不在该范围内,向量存储器会报告地址越界,则指令无法正确执行。例如,对于第i个向量处理单元PEi,其所对应的寻址范围为e*w*i ~e*w*(i+1)-1,其中e为如上所述每个BANK体的行数,w为BANK体每一行的字节数,在访存指令执行前需要配置VARx(i)和VORx(i)使得VAGUi地址计算后得到的地址在BANKi的地址范围内。
本实施例在译码获取向量访存指令的访存信息后,再根据SIMT访存指令中的VAR_ID域和VOR_ID域分别从VARF和VORF中取得某组基址向量寄存器VARj和某组偏移向量寄存器VORp,传给n路VAGU,分别根据基址向量寄存器VARj和偏移向量寄存器VORp的值计算访存地址,得到n路向量访存地址,用这n路向量访存地址分别访问向量存储体6的n路BANK体。对向量存储体6执行访存时,通过一个通用向量寄存器单元4存储访存数据,通用向量寄存器单元4包括多组向量寄存器,每组向量寄存器包括分别对应各线程的多个通用寄存器,通过指定其中一组向量寄存器对应的存储各线程的访存数据。
如图4所示,通过指令译码单元1对SIMT访存指令译码后获得的访存信息,包括基址向量寄存器编号VAR_ID、偏移向量寄存器编号VOR_ID和通用向量寄存器编号DST_ID,将基址向量寄存器编号VAR_ID传给基址向量寄存器文件VARF,基址向量寄存器文件VARF则根据VAR_ID的值(假设为j)定位到对应的VARj组基址向量寄存器,通过寄存器选择器后将VARj(0),……,VARj(n-1)这一组基址向量寄存器VAR分别传给相应的地址计算子单元VAGU0,……,VAGUn-1。相应的,将VOR_ID编号传给偏移向量寄存器文件VORF,偏移向量寄存器文件根据VOR_ID(假设为p)定位到VORp组偏移向量寄存器,然后通过寄存器选择器将VORp(0),……,VORp(n-1)这一组的偏移向量寄存器VOR分别传给相应的地址计算子单元VAGU0,……,VAGUn-1。
如图5所示,根据基址寄存器编号VAR_ID和偏移寄存器编号VOR_ID选出的VARj(0),……,VARj(n-1)和VORp(0),……,VORp(n-1)被分别传给相应的地址计算子单元VAGU0,……,VAGUn-1,由这n个地址计算子单元VAGU根据基址向量寄存器VAR和偏移向量寄存器VOR的值分别进行地址计算,得到Addr0,……,Addrn-1一共n路向量访存地址,再将这n路向量访存地址Addr分别传给向量存储体6中相应的BANK0,……,BANKn-1,完成每个运算单元PE对相应BANK存储体存储空间的访存。
本实施例中,步骤2)的具体实施步骤为:
2.1)获取各线程的访存指令,根据访存指令指定读写访问类型以及基址向量寄存器单元2、偏移向量寄存器单元3中对应组的向量寄存器,以及指定用于通过一组向量寄存器存储各线程的访存数据的通用向量寄存器单元中4对应组的向量寄存器,并生成对应的SIMT访存指令;
2.2)对SIMT访存指令进行译码,得到各线程的访存指令所指定的读写访问类型以及基址向量寄存器单元2、偏移向量寄存器单元3、通用向量寄存器单元4中对应组的向量寄存器。
本实施例中,步骤3)的具体实施步骤为:
3.1)将n路向量访存地址分别转化得到n路行地址、存储体BANK地址和偏移地址,并结合访存指令中所指定的访存粒度、寻址模式、信息一起传给向量存储体6;
3.2)如果是向量写指令,则根据访存指令获取所指定的通用向量寄存器,并根据转化得到的n路行地址、存储体BANK地址和偏移地址将所指定的通用向量寄存器单元4中对应组寄存器的值分别写入对应的存储体;如果是向量读指令,则根据n路行地址、存储体BANK地址和偏移地址从存储体中读出n路数据,并返回给通用向量寄存器单元4。
本实施例中,将n路向量访存地址分别转化行地址、BANK地址和偏移地址后,结合SIMT访存指令中访存粒度、寻址模式等访存信息一起传给向量存储体,如果指令译码得到的访存信息显示该向量访存指令是写指令,则根据通用寄存器编号获取n路通用向量寄存器得到的写入数据,将n路写入数据根据n路向量地址Addr0,……,Addrn-1写入相应存储体BANK0,……,BANKn-1,完成向量写指令;如果是读指令,则根据n路向量地址Addr0,……,Addrn-1从存储体中读出n路写回数据,并将数据分别写回相应通用向量寄存器,完成向量读指令。
假设向量存储器的n路访存地址每一路都为x位,地址以字节为单位统一编址,则总容量为2x字节。本实施例中每个向量访存地址Addr被传到相应BANK后,都会被分解为3个部分,分别是最低位的行内偏移地址、中间的BANK行地址和高位的BANK地址。假如单个PE支持的最小访存粒度是t(t<w)字节,则低位部分的行内偏移地址位数为log2(w/t)位,用于定位到BANK某一行的行内偏移;中间部分的BANK行地址为log2e位,用于定位到一个BANK的某一行;高位部分的BANK地址为log2n,用于定位到n个BANK中的某一个BANK,分解地址应满足log2(w/t)+ log2e+log2n=x。
采用上述方法,SIMT向量处理器中的n路线程所对应的n路向量处理单元可以在一次访存操作中访问其对应存储空间内的任意地址,实现了向量处理单元对向量存储空间的无冲突访问,使SIMT程序的执行提高了效率,从而提高了向量访存的灵活性,同时开发了在SIMD基础上的线程级并行。
上述只是本发明的较佳实施例,并非对本发明作任何形式上的限制。虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明。因此,凡是未脱离本发明技术方案的内容,依据本发明技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均应落在本发明技术方案保护的范围内。
Claims (8)
1.一种向量处理器中支持SIMT的向量访存装置,其特征在于:包括基址向量寄存器单元(2)、偏移向量寄存器单元(3)以及向量地址计算单元(5),所述基址向量寄存器单元(2)、偏移向量寄存器单元(3)分别包括多组向量寄存器,每组向量寄存器由对应向量处理器中各线程的多个寄存器构成;所述向量地址计算单元(5)包括多个地址计算子单元(51),每个地址计算子单元(51)分别与向量处理器中各存储体一一对应连接;各线程的基址、偏移地址分别通过所述基址向量寄存器单元(2)、偏移向量寄存器单元(3)中一组向量寄存器进行获取后,分别输出至各地址计算子单元(51)进行计算,得到各线程的访存地址输出至对应的存储体;
还包括通用向量寄存器单元(4),所述通用向量寄存器单元(4)包括多组向量寄存器,每组向量寄存器由对应向量处理器中各线程的多个寄存器构成;所述通用向量寄存器单元(4)通过一组向量寄存器存储各线程的访存数据;
所述通用向量寄存器单元(4)包括m组通用向量寄存器,其中m=log2t,且t是通用向量寄存器的位数。
2.根据权利要求1所述的向量处理器中支持SIMT的向量访存装置,其特征在于:所述基址向量寄存器单元(2)包括k1组基址向量寄存器,其中k1=log2s1 ,且s1为基址向量寄存器的位数;所述偏移向量寄存器单元(3)包括k2组偏移向量寄存器,其中k2=log2s2,且s2为偏移向量寄存器的位数。
3.根据权利要求2所述的向量处理器中支持SIMT的向量访存装置,其特征在于:还包括相互连接的SIMT指令生成单元以及指令译码单元(1),所述指令译码单元(1)分别与所述基址向量寄存器单元(2)、偏移向量寄存器单元(3)、通用向量寄存器单元(4)连接;所述SIMT指令生成单元用于根据各线程的访存指令指定读写访问类型以及所述基址向量寄存器单元(2)、偏移向量寄存器单元(3)、通用向量寄存器单元(4)中对应组的向量寄存器,并生成对应的SIMT访存指令;所述指令译码单元用于对所述SIMT指令生成单元生成的SIMT访存指令进行译码,得到所指定的读写访问类型以及所述基址向量寄存器单元(2)、偏移向量寄存器单元(3)、通用向量寄存器单元(4)中对应组的向量寄存器。
4.根据权利要求3所述的向量处理器中支持SIMT的向量访存装置,其特征在于:所述基址向量寄存器单元(2)、偏移向量寄存器单元(3)、通用向量寄存器单元(4)均包括寄存器组选择器,所述寄存器组选择器与所述指令译码单元(1)连接。
5.一种基于权利要求1~4中任意一项所述的向量访存装置的控制方法,其特征在于,步骤包括:
1)将向量处理器中n个线程对应的n路存储体进行统一编址,并根据各存储体的访问地址范围配置所述基址向量寄存器单元(2)、所述偏移向量寄存器单元(3)中对应组的向量寄存器;
2)获取各线程的访存指令并进行指令译码,得到访存指令中所指定的读写访问类型以及所述基址向量寄存器单元(2)、所述偏移向量寄存器单元(3)中对应组的向量寄存器;
3)选取访存指令中所指定的所述基址向量寄存器单元(2)、所述偏移向量寄存器单元(3)对应组的向量寄存器,并根据选取得到的向量寄存器的值计算向量访存地址,得到对应n个线程的n路向量访存地址;
4)将n路向量访存地址分别输出至对应的向量存储体(6)进行访存,若为写指令,则根据所述向量访存地址将各线程对应的n路数据分别写入到向量处理器中各存储体中;若为读指令,则根据所述向量访存地址从向量处理器中各存储体中读出n路数据。
6.根据权利要求5所述的控制方法,其特征在于,所述步骤2)的具体实施步骤为:
2.1)获取各线程的访存指令,根据所述访存指令指定读写访问类型以及所述基址向量寄存器单元(2)、偏移向量寄存器单元(3)中对应组的向量寄存器,以及指定用于通过一组向量寄存器存储各线程的访存数据的通用向量寄存器单元(4)中对应组的向量寄存器,并生成对应的SIMT访存指令;
2.2)对所述SIMT访存指令进行译码,得到各线程的访存指令所指定的读写访问类型以及基址向量寄存器单元(2)、偏移向量寄存器单元(3)、通用向量寄存器单元(4)中对应组的向量寄存器。
7.根据权利要求6所述的控制方法,其特征在于:所述SIMT访存指令的数据位包括访存粒度、寻址模式、读写访问类型、基址向量寄存器编号、偏移向量寄存器编号以及通用向量寄存器编号,所述基址向量寄存器编号、偏移向量寄存器编号以及通用向量寄存器编号分别用于指定基址向量寄存器单元(2)、偏移向量寄存器单元(3)、通用向量寄存器单元(4)中对应组的向量寄存器。
8.根据权利要求5或6或7所述的控制方法,其特征在于,所述步骤3)的具体实施步骤为:
3.1)将n路向量访存地址分别转化得到n路行地址、存储体BANK地址和偏移地址,并结合访存指令中所指定的访存粒度、寻址模式信息一起传给向量处理器中各存储体;
3.2)如果是向量写指令,则根据访存指令获取所指定的所述通用向量寄存器单元(4)中对应组的向量寄存器,并根据转化得到的n路行地址、存储体BANK地址和偏移地址将所指定的通用向量寄存器单元(4)中对应组寄存器的值分别写入对应的存储体;如果是向量读指令,则根据所述n路行地址、存储体BANK地址和偏移地址从存储体中读出n路数据,并返回给通用向量寄存器单元(4)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510135336.3A CN104699465B (zh) | 2015-03-26 | 2015-03-26 | 向量处理器中支持simt的向量访存装置和控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510135336.3A CN104699465B (zh) | 2015-03-26 | 2015-03-26 | 向量处理器中支持simt的向量访存装置和控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104699465A CN104699465A (zh) | 2015-06-10 |
CN104699465B true CN104699465B (zh) | 2017-05-24 |
Family
ID=53346636
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510135336.3A Active CN104699465B (zh) | 2015-03-26 | 2015-03-26 | 向量处理器中支持simt的向量访存装置和控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104699465B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10318307B2 (en) | 2015-06-17 | 2019-06-11 | Mediatek, Inc. | Scalarization of vector processing |
CN106991073B (zh) * | 2016-01-20 | 2020-06-05 | 中科寒武纪科技股份有限公司 | 用于向量运算的数据读写调度器及保留站 |
CN111580866B (zh) * | 2016-01-20 | 2024-05-07 | 中科寒武纪科技股份有限公司 | 一种向量运算装置及运算方法 |
CN111651204B (zh) * | 2016-04-26 | 2024-04-05 | 中科寒武纪科技股份有限公司 | 一种用于执行向量最大值最小值运算的装置和方法 |
CN107315717B (zh) | 2016-04-26 | 2020-11-03 | 中科寒武纪科技股份有限公司 | 一种用于执行向量四则运算的装置和方法 |
CN107315718B (zh) * | 2016-04-26 | 2020-08-21 | 中科寒武纪科技股份有限公司 | 一种用于执行向量内积运算的装置和方法 |
US10776311B2 (en) * | 2017-03-14 | 2020-09-15 | Azurengine Technologies Zhuhai Inc. | Circular reconfiguration for a reconfigurable parallel processor using a plurality of chained memory ports |
CN107193757B (zh) * | 2017-05-16 | 2020-03-13 | 龙芯中科技术有限公司 | 数据预取方法、处理器和设备 |
US10996949B2 (en) * | 2019-05-10 | 2021-05-04 | International Business Machines Corporation | Address generation for high-performance vector processing |
CN112368676A (zh) * | 2019-09-29 | 2021-02-12 | 深圳市大疆创新科技有限公司 | 处理数据的方法和设备 |
CN114625421A (zh) * | 2020-12-11 | 2022-06-14 | 上海阵量智能科技有限公司 | Simt指令处理方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101957744A (zh) * | 2010-10-13 | 2011-01-26 | 北京科技大学 | 一种用于微处理器的硬件多线程控制方法及其装置 |
CN102012802A (zh) * | 2010-11-25 | 2011-04-13 | 中国人民解放军国防科学技术大学 | 面向向量处理器数据交换的方法及装置 |
CN102279818A (zh) * | 2011-07-28 | 2011-12-14 | 中国人民解放军国防科学技术大学 | 支持有限共享的向量数据访存控制方法及向量存储器 |
CN103699516A (zh) * | 2014-01-13 | 2014-04-02 | 中国人民解放军国防科学技术大学 | 向量处理器中基于simd的并行fft/ifft蝶形运算方法及装置 |
CN103984508A (zh) * | 2014-05-15 | 2014-08-13 | 中国人民解放军国防科学技术大学 | 基于飞腾处理器平台的raid多线程并发读写方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5933627A (en) * | 1996-07-01 | 1999-08-03 | Sun Microsystems | Thread switch on blocked load or store using instruction thread field |
US8312254B2 (en) * | 2008-03-24 | 2012-11-13 | Nvidia Corporation | Indirect function call instructions in a synchronous parallel thread processor |
-
2015
- 2015-03-26 CN CN201510135336.3A patent/CN104699465B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101957744A (zh) * | 2010-10-13 | 2011-01-26 | 北京科技大学 | 一种用于微处理器的硬件多线程控制方法及其装置 |
CN102012802A (zh) * | 2010-11-25 | 2011-04-13 | 中国人民解放军国防科学技术大学 | 面向向量处理器数据交换的方法及装置 |
CN102279818A (zh) * | 2011-07-28 | 2011-12-14 | 中国人民解放军国防科学技术大学 | 支持有限共享的向量数据访存控制方法及向量存储器 |
CN103699516A (zh) * | 2014-01-13 | 2014-04-02 | 中国人民解放军国防科学技术大学 | 向量处理器中基于simd的并行fft/ifft蝶形运算方法及装置 |
CN103984508A (zh) * | 2014-05-15 | 2014-08-13 | 中国人民解放军国防科学技术大学 | 基于飞腾处理器平台的raid多线程并发读写方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104699465A (zh) | 2015-06-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104699465B (zh) | 向量处理器中支持simt的向量访存装置和控制方法 | |
CN103336758B (zh) | 一种采用带有局部信息的压缩稀疏行的稀疏矩阵存储方法及基于该方法的SpMV实现方法 | |
CN102541774B (zh) | 多粒度并行存储系统与存储器 | |
US20120054468A1 (en) | Processor, apparatus, and method for memory management | |
CN103927270B (zh) | 一种面向多个粗粒度动态可重构阵列的共享数据缓存装置及控制方法 | |
US20140181427A1 (en) | Compound Memory Operations in a Logic Layer of a Stacked Memory | |
CN108351830A (zh) | 用于存储器损坏检测的硬件装置和方法 | |
Jenkins et al. | Enabling fast, noncontiguous GPU data movement in hybrid MPI+ GPU environments | |
CN104142892B (zh) | 一种数据读写方法、装置及系统 | |
BR102020019649A2 (pt) | aparelho e método para agendar adaptativamente o trabalho em recursos de processamento heterogêneo | |
Mao et al. | An energy-efficient GPGPU register file architecture using racetrack memory | |
Chen et al. | Unified non-volatile memory and NAND flash memory architecture in smartphones | |
US20140089369A1 (en) | Multi-granularity parallel fft computation device | |
KR20230094964A (ko) | 이종 메모리 타겟의 인터리빙 | |
CN103034621B (zh) | 基2×k并行fft架构的地址映射方法及系统 | |
CN102629238B (zh) | 支持向量条件访存的方法和装置 | |
Man et al. | Accelerating computation of Euclidean distance map using the GPU with efficient memory access | |
US8205031B2 (en) | Memory management system and method thereof | |
CN117234720A (zh) | 动态可配置的存算融合数据缓存结构、处理器及电子设备 | |
CN102411557B (zh) | 多粒度并行fft计算装置 | |
US20140089370A1 (en) | Parallel bit reversal devices and methods | |
CN102541813A (zh) | 一种多粒度并行fft蝶形计算的方法及相应的装置 | |
CN103765378A (zh) | 2d收集指令和2d高速缓存 | |
CN104317554A (zh) | 用于simd处理器的寄存器文件数据读写装置和方法 | |
CN105373497A (zh) | 基于dsp芯片的矩阵转置装置 |
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 |