CN108733415B - 支持向量随机访存的方法及装置 - Google Patents

支持向量随机访存的方法及装置 Download PDF

Info

Publication number
CN108733415B
CN108733415B CN201810468106.2A CN201810468106A CN108733415B CN 108733415 B CN108733415 B CN 108733415B CN 201810468106 A CN201810468106 A CN 201810468106A CN 108733415 B CN108733415 B CN 108733415B
Authority
CN
China
Prior art keywords
access
vector
memory
data
instruction
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
CN201810468106.2A
Other languages
English (en)
Other versions
CN108733415A (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.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
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 National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN201810468106.2A priority Critical patent/CN108733415B/zh
Publication of CN108733415A publication Critical patent/CN108733415A/zh
Application granted granted Critical
Publication of CN108733415B publication Critical patent/CN108733415B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/32Handling requests for interconnection or transfer for access to input/output bus using combination of interrupt and burst mode transfer
    • 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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters

Abstract

本发明公开了一种支持向量随机访存的方法及装置,该方法的步骤为:S1:对派发的指令进行译码,识别指令的各个域,获取指令类型、地址计算方式、访存粒度和随机地址寄存器文件与寻址相关的信息;S2:根据指令译码信息和计算得到的n个VPE的访存地址,冲突判断部件对各个VPE的访存地址进行冲突判断;S3:设置共享向量存储器为多个VPE提供高带宽的SIMD并行数据支持。该装置用来实施上述方法。本发明具有能有效降低硬件的设计复杂度、提高数据访存带宽和效率、提高指令执行速度从而提升处理器处理性能等优点。

Description

支持向量随机访存的方法及装置
技术领域
本发明主要涉及到微处理器体系结构领域,特指一种适用于单指令多数据流(SIMD)结构微处理器中支持向量随机访存的方法及装置,用以提高存在大量不规则访存应用的运算性能。
背景技术
为发掘微处理器的数据级并行、以较低的硬件开销和功耗预算实现较高的峰值运算性能,SIMD技术成为微处理器体系结构发展的一个重要方向。SIMD结构处理器在处理规则应用程序时,往往能够得到较为理想的峰值运算性能,但是在处理不规则应用时,其性能急剧下降,主要原因是不规则应用的访存操作比规则应用中地址连续或等跨步访存复杂,空间局部性差,现有微处理器结构不能很好支持,致使其执行速度慢,性能低。而不规则应用广泛存在于大量科学计算和工程应用中,例如稀疏矩阵计算、图像边缘检测、分动力学模拟和语音识别等。有学者总结出13类基本的并行计算模式,其中有一半以上的计算模式都是不规则的。
不规则应用存在的大量不规则访存和计算模式,极大降低了处理器的资源使用率和数据带宽利用率。不规则的应用可以归结为不规则计算和不规则访存,不规则计算主要指程序存在过多的控制流分支,任务分配不均衡等;而不规则访存包括访存地址分布不均匀,数据的时间和空间局部性差等。随着SIMD技术的不断发展,SIMD宽度不断增加,处理器需要高带宽的数据支持,不规则访存存在的访问冲突、时空局部性差等问题,降低了处理器的实际访问带宽,增加了数据访问延时,导致数据访存效率降低。支持SIMT(单指令多线程)的向量访存,仅支持SIMD结构中的每个向量处理单元访问各自对应的数据地址空间,单个处理单元访存不能共享整个数据存储器,限制了应用范围。而通过支持SIMT方式的DMA加载,能将外部存储器中不规则访存数据通过DMA搬移并重新组织后再加载到向量存储器的连续地址空间中,供向量处理单元并行访问,但是这种方式需要程序员进行DMA配置,编程复杂且DMA数据搬移、组织的硬件开销较大。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种能有效降低硬件的设计复杂度、提高数据访存带宽和效率、提高指令执行速度从而提升处理器处理性能的支持向量随机访存的方法及装置。
为解决上述技术问题,本发明采用以下技术方案:
一种支持向量随机访存的方法,其步骤为:
S1:对派发的指令进行译码,识别指令的各个域,获取指令类型、地址计算方式、访存粒度和随机地址寄存器文件与寻址相关的信息;
S2:根据指令译码信息和计算得到的n个VPE的访存地址,冲突判断部件对各个VPE的访存地址进行冲突判断,如果存在访存冲突,通过仲裁对存在访存冲突的请求进行仲裁,根据仲裁规则确定各VPE访问向量存储器的顺序;如果是向量写指令则将需要写入向量存储器的数据按仲裁顺序写入相应的地址;如果是向量读指令,则所有需要的数据从向量存储器读出后经过数据同步返回给向量处理单元;
S3:设置共享向量存储器为多个VPE提供高带宽的SIMD并行数据支持。
作为本发明的进一步改进:设置冲突缓冲器阵列,每个Bank对应一个缓冲器;所有的访存请求在译码后按该请求所访问的Bank进行分流,然后对访问同一Bank的请求做冲突判断和仲裁,仲裁失败的访问请求被缓存到对应的冲突缓冲器中。
作为本发明的进一步改进:根据指令译码的相关请求信号,读取基址寄存器和偏移寄存器的数据,根据访存粒度和寻址方式对各个VPE的访存地址进行计算,如果指令需要更新基址,则在地址计算完后使用计算出的访存地址更新基址寄存器。
作为本发明的进一步改进:通过VPE的访存地址区分各个VPE所访问的Bank,同时对每个VPE的访存相关信息进行请求打包,各个访存请求根据该VPE所访问的Bank编号进行分流,对访问同一Bank的所有访问请求按照VPE编号由小到大的顺序进行处理。
作为本发明的进一步改进:各个Bank的访存请求分流后在此进行冲突判断,根据请求包的访存地址进行区分,如果有两个或两个以上的访存请求访问同一Bank的同一SRAM地址空间,则存在访存冲突;当发生访存冲突时,该Bank对应的仲裁部件对存在访存冲突的访存请求进行仲裁,以确定VPE访存请求的访问顺序。
作为本发明的进一步改进:设置数据重排序部件,数据重排序部件包含m个数据输出通道,分别和m个SRAM的输出对应,其宽度与SIMD宽度相匹配;当VPE的读请求发生访存冲突时,冲突的请求根据仲裁顺序依次对向量存储器进行读操作,需要多个时钟周期对向量存储器执行多拍读操作才能获得该读指令所需的全部数据;每个时钟周期需要将当前读出的数据重新排列到与当前发起访问请求的VPE对应的位置,从Bank读出的数据分别输出到对应的SRAM通道与Bank号对应的位置;数据重排序单元根据当拍输出数据请求的VPE编号,将该通道的输出数据重新排列到向量寄存器中与该VPE编号对应的位置,并将对应的数据标志位置为1,表示该输出数据有效。
作为本发明的进一步改进:执行同一条读指令时,多个时钟周期从向量存储器读出的数据进行节拍的同步,前面节拍读出的数据寄存在向量寄存器里,等待后面节拍的读出数据,每读出一个有效数据就将相应的Mask标志位置1,当Mask位都置为1表示该指令所有的读访存请求都处理完毕,将向量寄存器的数据返回给运算部件进行运算,待数据返回后将Mask位清空准备处理下一条读指令。
本发明进一步提供一种支持向量随机访存的装置,其包括:
指令译码部件,对派发的指令进行译码,识别指令的各个域,获取指令类型、地址计算方式、访存粒度和随机地址寄存器文件与寻址相关的信息。
向量地址计算部件VAGU,根据指令译码信息和地址寄存器计算n个VPE的访存地址,冲突判断部件对各个VPE的访存地址进行冲突判断,如果存在访存冲突,通过仲裁部件对存在访存冲突的请求进行仲裁,根据仲裁规则确定各VPE访问向量存储器的顺序;
向量存储器,作为片上存储器,整个存储空间为所有的VPE所共享。
作为本发明的进一步改进:所述向量存储器为SIMD并行存储设计架构,向量存储器的Bank数量设计和VPU的SIMD宽度一致,共有n个Bank,每个Bank采用多存储体组织方式,每个Bank由m个单端口SRAM组成。
作为本发明的进一步改进:在共享向量存储器的外部设置SIMD结构的冲突缓冲器阵列,每个Bank对应一个缓冲器;所有的访存请求在译码后按该请求所访问的Bank进行分流,然后对访问同一Bank的请求做冲突判断和仲裁,仲裁失败的访问请求被缓存到对应的冲突缓冲器中。
与现有技术相比,本发明的优点在于:
1、本发明在向量SIMD结构的处理器上实现了向量随机访存,在支持地址连续或等地址跨步的规则数据访问基础上,实现了任意跨步的不规则向量随机访问。向量随机访存指令包括向量读指令和向量写指令,每种指令支持多种访存粒度,共享的向量存储器采用多Bank的组织方式,有效解决SIMD向量随机访存冲突导致的访存带宽低的问题,向量随机访存部件采用流水线结构实现,提高了指令执行效率。
2、本发明提供了多套地址寄存器,支持多种地址变换方式,在随机访存模式下每个VPE的访存地址都是任意的,因此需要提供与SIMD宽度相匹配的地址个数。地址寄存器宽度与SIMD宽度一致,包括向量基址寄存器和向量偏移寄存器,通过配置指令对地址寄存器进行配置,使得程序员编程更加灵活。指令译码后得到地址变换模式,根据地址寄存器计算各个VPE的访存地址。
3、冲突缓冲器阵列的规模与SIMD宽度一致,存在访存冲突的访存请求在仲裁部件进行仲裁以确定其访存顺序,仲裁失败的访存请求被缓存到对应的冲突缓冲器中,当仲裁成功的访存请求处理完后再去处理缓冲器中仲裁失败的访存请求,从而保证向量访存的流水执行。缓冲器阵列的设计降低了冲突仲裁和访存控制器的复杂度,实现了多请求的无冲突随机访存。
4、本发明通过数据重排序和数据同步部件实现对向量存储器输出数据的重排序与数据同步。存在访存冲突时,需要多个时钟周期对向量存储器执行多拍读操作才能获得各个VPE所需的数据,需要对每拍的输出数据进行重排序以便数据和发出请求的VPE对应,不同节拍的输出数据需要进行节拍同步,前面节拍的输出的数据需要等待后面节拍的输出数据,所有数据读出后再同时返回给向量处理单元。
附图说明
图1是向量随机访存控制器结构示意图。
图2是向量随机访存的访存地址结构示意图。
图3是不同VPE的访存请求分流结构示意图。
图4是VPE访存冲突判断与仲裁结构示意图。
图5是缓存仲裁失败访问请求的冲突缓冲器阵列结构示意图。
图6是向量写指令写数据到向量存储器的示意图。
图7是向量读指令的数据重排序结构示意图。
图8是向量读指令的数据同步结构示意图。
具体实施方式
以下将结合说明书附图和具体实施例对本发明做进一步详细说明。
本发明的支持向量随机访存的方法,其步骤为:
S1:对派发的指令进行译码,识别指令的各个域,获取指令类型、地址计算方式、访存粒度和随机地址寄存器文件等与寻址相关的信息;
S2:根据指令译码信息和地址寄存器计算n个VPE的访存地址,冲突判断部件对各个VPE的访存地址进行冲突判断,如果存在访存冲突,即多个VPE访问同一个SRAM,则存在访存冲突,通过仲裁部件对存在访存冲突的请求进行仲裁,根据仲裁规则确定各VPE访问向量存储器的顺序。如果是向量写指令则将需要写入向量存储器的数据按仲裁顺序写入相应的地址;如果是向量读指令,则所有需要的数据从向量存储器读出后经过数据同步返回给向量处理单元。
S3:为多个VPE提供高带宽的SIMD并行数据支持;
如图1所示,为本发明向量随机访存控制器的结构示意图,包括向量地址计算(VAGU)、向量存储控制器(VMC)、向量存储器、数据重排序与同步等部件,向量存储控制器VMC由冲突判断与仲裁、冲突缓冲器阵列等构成,整个控制器采用流水线结构实现,目的是为了给向量运算部件(VPU)提供高带宽的数据支持。向量运算部件VPU的SIMD宽度为n(n为大于1的整数),即VPU内部集成了n个同构的VPE单元,负责并行数据的运算。
在本实施例中,向量随机访问的访存指令包括向量读指令和向量写指令,通过指令译码部件对派发的指令进行译码,识别指令的各个域,获取指令类型、地址计算方式、访存粒度和随机地址寄存器文件等与寻址相关的信息。
向量地址计算部件VAGU,根据指令译码信息和地址寄存器计算n个VPE的访存地址,冲突判断部件对各个VPE的访存地址进行冲突判断,如果存在访存冲突,即多个VPE访问同一个SRAM,则存在访存冲突,通过仲裁部件对存在访存冲突的请求进行仲裁,根据仲裁规则确定各VPE访问向量存储器的顺序。如果是向量写指令则将需要写入向量存储器的数据按仲裁顺序写入相应的地址;如果是向量读指令,则所有需要的数据从向量存储器读出后经过数据同步返回给向量处理单元。
向量存储器,作为片上存储器,整个存储空间为所有的VPE所共享,为了提高数据的SIMD并行处理能力,设计采用了SIMD并行存储设计架构,SIMD是一种数据级并行的技术,通过一条指令同时执行多个数据的同一运算操作,从而提高处理器的吞吐量。SIMD宽度定义为按SIMD方式进行操作的相同向量处理单元VPE的个数。为了提高数据的并行性,同时为多个VPE提供高带宽的SIMD并行数据支持。向量存储器的Bank数量设计和VPU的SIMD宽度一致,共有n个Bank(Bank 0~Bank n-1),为VPU提供高带宽的数据访问支持。由于向量随机访存地址是无规律的,任何一个VPE都可能访问任意地址,当存在访存冲突时,访存带宽和效率将会降低,严重影响处理器性能。这里假设每个VPE访存是全随机的,访存地址分布为均匀随机分布,即n个VPE随机访问任意Bank的概率都是相同的,通过建模可知在所有可能的访存情况排列组合中,当访存阈值为m(m为大于等于1的整数),即n个VPE访问向量存储器时,认为在绝大多数访存情况下,至多有m个VPE同时访问某一个Bank的数据。因此,每个Bank采用多存储体组织方式,每个Bank由m个单端口SRAM(SRAM0~SRAM m-1)组成,以减小向量随机访存情况下多个VPE访问同一Bank时发生访存冲突的概率。为了降低向量随机访存冲突发生的概率,每个Bank可由多个单端口静态随机存储器(SRAM)构成,即使多个VPE访问同一个Bank,只要他们访问不同的SRAM就不会发生访存冲突,从而降低了访存冲突发生的概率,提高了访存效率,采用单端口SRAM能够进一步减小共享向量存储器的面积,该向量存储器同时支持地址连续或等地址跨步的规则数据访存和地址离散的不规则数据访存。
本发明在SIMD结构的处理器上实现了向量随机访存功能,设计出了支持不规则数据访问的向量随机访存流水线的整体结构,支持向量随机访存指令的执行,包括向量读指令和写指令,每种访存指令支持多种地址变换方式和访存粒度,实现对不同粒度数据的灵活访问。地址连续或等地址跨步的规则数据访存只需要提供一个访存地址,而向量随机访存每个VPE的访存地址都是任意的,需要提供与SIMD宽度相匹配的地址个数。本发明设计了支持向量随机访存的随机地址寄存器文件,包含向量基址寄存器(VAR)和向量偏移寄存器(VOR),支持更新基址等操作,通过寄存器配置指令可对寄存器进行灵活的配置,方便程序员使用。
本发明在共享向量存储器的外部设计了一个SIMD结构的冲突缓冲器阵列,每个Bank对应一个缓冲器。所有的访存请求在译码后按该请求所访问的Bank进行分流,然后对访问同一Bank的请求做冲突判断和仲裁,仲裁失败的访问请求被缓存到对应的冲突缓冲器中。缓冲器的设计深度直接影响系统的性能,深度太小则无法缓存所有仲裁失败的访存请求,深度太大则额外增加了控制器的硬件开销,因此本发明的冲突缓冲器深度设计与SIMD宽度相关,取决于同时访问同一个Bank的VPE数量和发生的概率。当SIMD宽度和Bank数量一定时,存在一个访存阈值,当访问某一Bank的访存请求数量小于或等于该阈值时的访存情况发生的概率足够大时,该阈值即为本发明的缓冲器设计深度。例如,通过实验表明,当向量处理器的SIMD宽度为16时,在均匀访存的情况下,根据排列组合原理,同时访问同一个Bank的VPE数量小于或等于4时发生的概率为0.9629;访问同一个Bank的VPE数量小于或等于5时发生的概率为0.9956,因此,SIMD宽度为16时最大访存冲突小于或等于4出现的情况已经基本覆盖了绝大多数访存情况,除了仲裁成功的访存请求外,最多需要缓存3个仲裁失败的访存请求,因此缓冲器深度设置为3。由于缓冲器深度有限,需保证同一拍冲裁失败的访存请求数量不超过缓冲器的最大深度,因此同一拍判断访存是否存在访存冲突的请求数量最大值为缓冲器深度加1,而多余的请求暂存到流水线站间寄存器,例如SIMD宽度为16时,每拍最多对访问同一Bank的4个请求做冲突判断,而剩余的请求须等前面的请求处理完毕后再进行处理,缓冲器阵列的设计降低了冲突判断和仲裁部件的硬件复杂度。
如图2所示,为向量随机访存的访存地址结构示意图,在向量随机访存情况下,向量运算部件中每个VPE的访存地址都是任意的,需要提供和SIMD宽度相匹配的向量访存地址(VAddr)个数。因此本发明设计了支持向量随机访存专用的随机地址寄存器文件,寄存器VAR和VOR的宽度和SIMD宽度相匹配(AR 0~AR n-1和OR 0~OR n-1),同时提供了与配置地址寄存器相关的指令。
向量地址计算部件根据指令译码的相关请求信号,读取基址寄存器和偏移寄存器的数据,向量地址计算部件根据访存粒度和寻址方式对各个VPE的访存地址进行计算,如果指令需要更新基址,则在地址计算完后使用计算出的访存地址更新基址寄存器。
如图3所示,为不同VPE的访存请求分流结构示意图,通过VPE的访存地址区分各个VPE所访问的Bank,同时对每个VPE的访存相关信息进行请求打包,包括请求的VPE编号、访存地址、目的地址、写数据和访存粒度等信息。各个访存请求(Bank Req)根据该VPE所访问的Bank编号进行分流,对访问同一Bank的所有访问请求按照VPE编号由小到大的顺序进行处理。
如图4所示,为VPE访存冲突判断与仲裁结构示意图,各个Bank的访存请求分流后在此进行冲突判断,根据请求包的访存地址进行区分,如果有两个或两个以上的访存请求访问同一Bank的同一SRAM地址空间,则存在访存冲突。由于每个Bank由m个单端口SRAM组成,最多可同时支持m个相互不冲突的访存请求进行读写访问,这里采用S0~Sm-1分别表示访问的m个SRAM,因此同时最多对m个访问该Bank的请求进行冲突判断,多余的请求则缓存至流水线的站间寄存器中,当前面的m个请求处理完毕后再取出下一组访存请求进行处理。
当发生访存冲突时,该Bank对应的仲裁部件对存在访存冲突的访存请求进行仲裁,以确定VPE访存请求的访问顺序。仲裁的优先级按照VPE编号由小到大的顺序递减,访问同一Bank的访存请求中,访问相同SRAM的请求只有1个仲裁成功,其余都仲裁失败,根据仲裁顺序确定仲裁失败的VPE请求的访存顺序,同拍访问不同SRAM的请求可以并行执行。多存储体的组织方式极大地降低了随机访存冲突发生的概率,有效提高了数据访存带宽。
如图5所示为缓存仲裁失败访问请求的冲突缓冲器阵列(buffer 0~buffer n-1)结构示意图,本发明采用冲突缓冲器阵列的设计方法缓存仲裁失败的访存请求,冲突缓冲器规模和SIMD宽度一致,缓冲器阵列的深度设计为p。同一Bank仲裁失败的访存请求都被缓存进对应的buffer缓冲器中,当拍仲裁成功的访存请求可直接访问向量存储器,从下一拍开始,每拍从buffer中取出一个访存请求去访问向量存储器。
由于每拍最多处理m个访问同一Bank的访存请求,除了仲裁成功的访存请求外,至多需要缓存m-1个冲裁失败的访存请求。若buffer深度p<m-1,则可能无法缓存所有仲裁失败的请求;若p>m-1,则buffer深度有富余,从而导致不必要的硬件开销,因此buffer深度p=m-1即可满足本发明设计需求。缓冲器阵列的设计降低了冲突仲裁和访存控制器的复杂度,以较低的硬件开销实现了多请求的无冲突随机访存。
如图6所示,为向量写指令将向量寄存器中的数据写入到向量存储器的示意图,VPE写请求根据仲裁顺序分别将向量寄存器中的数据分别写入向量存储器的对应地址,当所有写请求处理完毕后向量写指令执行完成。
如图7所示,为向量读指令的数据重排序结构示意图,数据重排序部件包含m个数据输出通道,分别和m个SRAM的输出对应,其宽度与SIMD宽度相匹配。当VPE的读请求发生访存冲突时,冲突的请求根据仲裁顺序依次对向量存储器进行读操作,需要多个时钟周期对向量存储器执行多拍读操作才能获得该读指令所需的全部数据(Data)。每个时钟周期需要将当前读出的数据(D 0~D n-1)重新排列到与当前发起访问请求的VPE对应的位置,从Bank读出的数据分别输出到对应的SRAM通道与Bank号对应的位置。数据重排序单元根据当拍输出数据请求的VPE编号,将该通道的输出数据重新排列到向量寄存器中与该VPE编号对应的位置,并将对应的数据标志位(Mask)置为1,表示该输出数据有效。
如图8所示,为向量读指令的数据同步结构示意图,执行同一条读指令时,多个时钟周期从向量存储器读出的数据需要进行节拍的同步,前面节拍读出的数据寄存在向量寄存器里,等待后面节拍的读出数据,每读出一个有效数据就将相应的Mask标志位置1,当Mask位都置为1表示该指令所有的读访存请求都处理完毕,可以将向量寄存器的数据返回给运算部件进行运算,待数据返回后将Mask位清空准备处理下一条读指令。
综上所述,本发明给出了一种有效实现向量随机访存的方法与装置,在考虑硬件开销和访存效率的基础上,设计了冲突缓冲器阵列来解决对不规则的向量随机访存导致的访存冲突问题,有效降低了硬件的设计复杂度,提高数据访存带宽和效率,采用流水线设计方法提高指令执行速度,从而提升处理器在执行不规则应用时的处理性能。
以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视是本发明的保护范围。

Claims (7)

1.一种支持向量随机访存的方法,其特征在于,步骤为:
S1:对派发的指令进行译码,识别指令的各个域,获取指令类型、地址计算方式、访存粒度和随机地址寄存器文件与寻址相关的信息;
S2:根据指令译码信息和计算得到的n个VPE的访存地址,n为大于1的整数,冲突判断部件对各个VPE的访存地址进行冲突判断,如果存在访存冲突,通过仲裁对存在访存冲突的请求进行仲裁,根据仲裁规则确定各VPE访问向量存储器的顺序;如果是向量写指令则将需要写入向量存储器的数据按仲裁顺序写入相应的地址;如果是向量读指令,则所有需要的数据从向量存储器读出后经过数据同步返回给向量处理单元;
S3:设置共享向量存储器为多个VPE提供高带宽的SIMD并行数据支持;
设置冲突缓冲器阵列,每个Bank对应一个缓冲器;所有的访存请求在译码后按该请求所访问的Bank进行分流,然后对访问同一Bank的请求做冲突判断和仲裁,仲裁失败的访问请求被缓存到对应的冲突缓冲器中;
各个Bank的访存请求分流后在此进行冲突判断,根据请求包的访存地址进行区分,如果有两个或两个以上的访存请求访问同一Bank的同一SRAM地址空间,则存在访存冲突;当发生访存冲突时,该Bank对应的仲裁部件对存在访存冲突的访存请求进行仲裁,以确定VPE访存请求的访问顺序。
2.根据权利要求1所述的支持向量随机访存的方法,其特征在于,根据指令译码的相关请求信号,读取基址寄存器和偏移寄存器的数据,根据访存粒度和寻址方式对各个VPE的访存地址进行计算,如果指令需要更新基址,则在地址计算完后使用计算出的访存地址更新基址寄存器。
3.根据权利要求2所述的支持向量随机访存的方法,其特征在于,通过VPE的访存地址区分各个VPE所访问的Bank,同时对每个VPE的访存相关信息进行请求打包,各个访存请求根据该VPE所访问的Bank编号进行分流,对访问同一Bank的所有访问请求按照VPE编号由小到大的顺序进行处理。
4.根据权利要求1-3中任意一项所述的支持向量随机访存的方法,其特征在于,设置数据重排序部件,数据重排序部件包含m个数据输出通道,分别和m个SRAM的输出对应,m为大于1的整数,其宽度与SIMD宽度相匹配;当VPE的读请求发生访存冲突时,冲突的请求根据仲裁顺序依次对向量存储器进行读操作,需要多个时钟周期对向量存储器执行多拍读操作才能获得该读指令所需的全部数据;每个时钟周期需要将当前读出的数据重新排列到与当前发起访问请求的VPE对应的位置,从Bank读出的数据分别输出到对应的SRAM通道与Bank号对应的位置;数据重排序单元根据当拍输出数据请求的VPE编号,将该通道的输出数据重新排列到向量寄存器中与该VPE编号对应的位置,并将对应的数据标志位置为1,表示该输出数据有效。
5.根据权利要求1-3中任意一项所述的支持向量随机访存的方法,其特征在于,执行同一条读指令时,多个时钟周期从向量存储器读出的数据进行节拍的同步,前面节拍读出的数据寄存在向量寄存器里,等待后面节拍的读出数据,每读出一个有效数据就将相应的Mask标志位置1,当Mask位都置为1表示该指令所有的读访存请求都处理完毕,将向量寄存器的数据返回给运算部件进行运算,待数据返回后将Mask位清空准备处理下一条读指令。
6.一种支持向量随机访存的装置,其特征在于,包括:
指令译码部件,对派发的指令进行译码,识别指令的各个域,获取指令类型、地址计算方式、访存粒度和随机地址寄存器文件与寻址相关的信息;
向量地址计算部件VAGU,根据指令译码信息和地址寄存器计算n个VPE的访存地址,n为大于1的整数,冲突判断部件对各个VPE的访存地址进行冲突判断,如果存在访存冲突,通过仲裁部件对存在访存冲突的请求进行仲裁,根据仲裁规则确定各VPE访问向量存储器的顺序;
向量存储器,作为片上存储器,整个存储空间为所有的VPE所共享;
设置冲突缓冲器阵列,每个Bank对应一个缓冲器;所有的访存请求在译码后按该请求所访问的Bank进行分流,然后对访问同一Bank的请求做冲突判断和仲裁,仲裁失败的访问请求被缓存到对应的冲突缓冲器中;
各个Bank的访存请求分流后在此进行冲突判断,根据请求包的访存地址进行区分,如果有两个或两个以上的访存请求访问同一Bank的同一SRAM地址空间,则存在访存冲突;当发生访存冲突时,该Bank对应的仲裁部件对存在访存冲突的访存请求进行仲裁,以确定VPE访存请求的访问顺序。
7.根据权利要求6所述的支持向量随机访存的装置,其特征在于,所述向量存储器为SIMD并行存储设计架构,向量存储器的Bank数量设计和VPU的SIMD宽度一致,共有n个Bank,每个Bank采用多存储体组织方式,每个Bank由m个单端口SRAM组成,m为大于1的整数。
CN201810468106.2A 2018-05-16 2018-05-16 支持向量随机访存的方法及装置 Active CN108733415B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810468106.2A CN108733415B (zh) 2018-05-16 2018-05-16 支持向量随机访存的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810468106.2A CN108733415B (zh) 2018-05-16 2018-05-16 支持向量随机访存的方法及装置

Publications (2)

Publication Number Publication Date
CN108733415A CN108733415A (zh) 2018-11-02
CN108733415B true CN108733415B (zh) 2021-03-16

Family

ID=63938411

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810468106.2A Active CN108733415B (zh) 2018-05-16 2018-05-16 支持向量随机访存的方法及装置

Country Status (1)

Country Link
CN (1) CN108733415B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111221573B (zh) * 2018-11-26 2022-03-25 深圳云天励飞技术股份有限公司 一种寄存器访问时序的管理方法、处理器、电子设备及计算机可读存储介质
CN110688329B (zh) * 2019-09-06 2021-08-10 无锡江南计算技术研究所 一种可同时支持多套Cache数据私有段动态设置的方法
CN112368676A (zh) * 2019-09-29 2021-02-12 深圳市大疆创新科技有限公司 处理数据的方法和设备
CN113076219B (zh) * 2021-04-27 2022-07-12 中国人民解放军国防科技大学 一种高能效的片上存储器错误检测与纠错电路及实现方法
CN113222115B (zh) * 2021-04-30 2024-03-01 西安邮电大学 面向卷积神经网络的共享缓存阵列
CN113608786B (zh) * 2021-10-09 2022-02-18 苏州浪潮智能科技有限公司 一种向量读写方法、向量寄存器系统、设备及介质
CN114330691B (zh) * 2021-12-30 2023-08-29 北京奕斯伟计算技术股份有限公司 用于直接存储器访问装置的数据搬运方法
CN115052042B (zh) * 2022-06-07 2023-05-26 成都北中网芯科技有限公司 一种高性能多通道共享缓存的实现方法
CN115794671B (zh) * 2023-02-07 2023-04-14 成都申威科技有限责任公司 一种兼容向量数据的访存系统及方法
CN116860185A (zh) * 2023-09-05 2023-10-10 深圳比特微电子科技有限公司 Sram阵列的数据访问装置、系统、方法、设备、芯片和介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140122810A1 (en) * 2012-10-25 2014-05-01 Texas Instruments Incorporated Parallel processing of multiple block coherence operations
CN106227684A (zh) * 2016-08-03 2016-12-14 中国电子科技集团公司第三十八研究所 一种高性能dsp访存流水线及其实现方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140122810A1 (en) * 2012-10-25 2014-05-01 Texas Instruments Incorporated Parallel processing of multiple block coherence operations
CN106227684A (zh) * 2016-08-03 2016-12-14 中国电子科技集团公司第三十八研究所 一种高性能dsp访存流水线及其实现方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
一种高带宽向量存储器的设计;燕世林等;《第十七届计算机工程与工艺暨第三届微处理器技术论坛论文集》;20130731;第135-140页 *

Also Published As

Publication number Publication date
CN108733415A (zh) 2018-11-02

Similar Documents

Publication Publication Date Title
CN108733415B (zh) 支持向量随机访存的方法及装置
US8108625B1 (en) Shared memory with parallel access and access conflict resolution mechanism
US9262174B2 (en) Dynamic bank mode addressing for memory access
US8645638B2 (en) Shared single-access memory with management of multiple parallel requests
US10037228B2 (en) Efficient memory virtualization in multi-threaded processing units
US10007527B2 (en) Uniform load processing for parallel thread sub-sets
US10310973B2 (en) Efficient memory virtualization in multi-threaded processing units
US10169091B2 (en) Efficient memory virtualization in multi-threaded processing units
US10255228B2 (en) System and method for performing shaped memory access operations
US6513107B1 (en) Vector transfer system generating address error exception when vector to be transferred does not start and end on same memory page
US8312227B2 (en) Method and apparatus for MPI program optimization
KR20170134704A (ko) 확장 메모리에 대한 액세스 방법, 디바이스 및 시스템
KR102332375B1 (ko) 정적 랜덤 액세스 메모리를 액세스하는 방법, 장치, 기기 및 저장 매체
US8984372B2 (en) Techniques for storing ECC checkbits in a level two cache
US9798543B2 (en) Fast mapping table register file allocation algorithm for SIMT processors
US6041393A (en) Array padding for higher memory throughput in the presence of dirty misses
CN108139989B (zh) 配备有存储器中的处理和窄访问端口的计算机设备
JPH04102948A (ja) データ処理システム及び方法
JPH0282330A (ja) ムーブアウト・システム
WO2013184855A1 (en) Memory with bank-conflict-resolution (bcr) module including cache
US20220318015A1 (en) Enforcing data placement requirements via address bit swapping
US6625720B1 (en) System for posting vector synchronization instructions to vector instruction queue to separate vector instructions from different application programs
US11847074B2 (en) Input/output device operational modes for a system with memory pools
US20230195618A1 (en) Approach for performing efficient memory operations using near-memory compute elements
US20240103763A1 (en) Bank-Level Parallelism for Processing in Memory

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