一种处理器及其数据读写方法与流程

文档序号:26588448发布日期:2021-09-10 20:05阅读:101来源:国知局
一种处理器及其数据读写方法与流程

1.本技术涉及计算机高性能计算领域,具体涉及一种处理器及其数据读写方法。


背景技术:

2.中央处理器(central processing unit,简称cpu)、图形处理器(graphics processing unit,简称gpu)等高性能计算处理芯片对极限频率具有强烈的需求。例如,amd 公司navi10 gpu处理器频率可以达到 2.5ghz,r9 3950x cpu处理器的单核心频率高达4.7ghz。现有技术中,在cpu或gpu处理器芯片的设计中,为了实现更高性能和更高的频率,必须选择包含更多晶体管的静态随机存取存储器(static random

access memory,简称sram)的设计,即采用更大面积和更大功耗的sram设计,从而导致高性能计算中sram器件成为制约处理器的最大频率和高性能的瓶颈。


技术实现要素:

3.有鉴于此,本技术提出一种处理器及其数据读写方法,可以采用更低时钟频率驱动的sram器件,提高处理芯片的性能和主频,降低处理芯片的功耗。
4.第一方面,本技术提出一种处理器,包括:寄存器组,包括静态随机存取存储器,所述静态随机存取存储器包括对应于执行指令的多个线程的一组寄存器库,其中每个线程分别对应至少两个寄存器库;存储队列,用于存储从所述寄存器组读取的对应于所述执行指令的多个线程的操作数和准备向所述寄存器组写入的所述执行指令的多个线程的输出结果;计算单元组,包括多个计算单元,用于基于所述存储队列中的操作数执行所述指令的多个线程,并向所述存储队列输出结果;时钟分频电路,用于将第一时钟频率转换为比所述第一时钟频率低的第二时钟频率,所述存储队列和计算单元组工作在所述第一时钟频率,所述寄存器组工作在所述第二时钟频率;其中,在所述第二时钟频率的一个时钟周期内,所述寄存器组能够读取所述多个线程中至少部分线程中每个线程的至少两个操作数。
5.在优选的实施方式中,在所述第二时钟频率的一个时钟周期内,所述寄存器组能够写入所述多个线程中至少部分线程中每个线程的输出结果。
6.在优选的实施方式中,在所述第二时钟频率的一个时钟周期内,所述寄存器组能够写入所述多个线程中至少部分线程中每个线程的至少两个输出结果。
7.在优选的实施方式中,所述时钟分频电路包括偶数分频电路,用于将所述第一时钟频率转换为所述第一时钟频率的偶数分频的第二时钟频率。
8.在优选的实施方式中,所述偶数分频电路包括二分频电路,用于将所述第一时钟频率转换为所述第一时钟频率的二分频的第二时钟频率。
9.在优选的实施方式中,所述寄存器组被配置为每个线程分别对应两个寄存器库,
在所述第一时钟频率的二分频的第二时钟频率的一个时钟周期内,所述寄存器组能够读取所述多个线程中至少部分线程中每个线程的两个操作数。
10.在优选的实施方式中,在所述第一时钟频率的二分频的第二时钟频率的一个时钟周期内,所述寄存器组能够写入所述多个线程中至少部分线程中每个线程的至多两个输出结果。
11.在优选的实施方式中,所述偶数分频电路包括四分频电路,用于将所述第一时钟频率转换为所述第一时钟频率的四分频的第二时钟频率。
12.在优选的实施方式中,所述寄存器组被配置为每个线程分别对应四个寄存器库,在所述第一时钟频率的四分频的第二时钟频率的一个时钟周期内,所述寄存器组能够读取所述多个线程中至少部分线程中每个线程的至多四个操作数。
13.在优选的实施方式中,在所述第一时钟频率的四分频的第二时钟频率的一个时钟周期内,所述寄存器组能够写入所述多个线程中至少部分线程中每个线程的至多四个输出结果。
14.在优选的实施方式中,所述处理器还包括电平移位电路,用于将第一电压转换为比所述第一电压低的第二电压,所述存储队列和计算单元组工作在所述第一电压,所述寄存器组工作在所述第二电压。
15.在优选的实施方式中,所述存储队列包括操作数队列和输出结果队列。
16.在优选的实施方式中,所述操作数队列和结果队列的宽度与所述对应于执行指令的多个线程的一组寄存器库的数量相同。
17.第二方面,本技术提出一种数据读写方法,适用于包括寄存器组、存储队列和计算单元组和时钟分频电路的处理器,所述存储队列和所述计算单元组工作在第一时钟频率,所述寄存器组工作在比所述第一时钟频率低的第二时钟频率,该方法包括以下步骤:在第二时钟频率的一时钟周期内,从所述寄存器组读出执行指令的至少部分线程中每个线程的至少两个操作数至存储队列;判断所述执行指令的至少部分线程中每个线程的全部操作数是否已读出到所述存储队列,如否,则在所述第二时钟频率的下一时钟周期内,继续从所述寄存器组读出所述执行指令的至少部分线程中每个线程的剩余操作数至所述存储队列;在所述执行指令的至少部分线程中每个线程的全部操作数已读出到所述存储队列之后,所述计算单元组以第一时钟频率的时钟周期对所述执行指令的至少部分线程执行多级流水线;在对所述执行指令的至少部分线程执行完多级流水线之后,在第二时钟频率的下一时钟周期内,向所述寄存器组写入所述执行指令的至少部分线程中每个线程的输出结果。
18.在优选的实施方式中,所述向所述寄存器组写入所述执行指令的至少部分线程中每个的输出结果包括向所述寄存器组写入所述执行指令的至少部分线程中每个线程的至少两个输出结果。
19.在优选的实施方式中,所述第二时钟频率为所述第一时钟频率的偶数分频。
20.在优选的实施方式中,所述第二时钟频率为所述第一时钟频率的二分频;其中,所述在第二时钟频率的一时钟周期内,从寄存器组读出执行指令的至少部分线程中每个的至
少两个操作数至存储队列包括:在第二时钟频率的一时钟周期内,从寄存器组读取执行指令的至少部分线程中每个的两个操作数至存储队列。
21.在优选的实施方式中,所述在第二时钟频率的下一时钟周期,向所述寄存器组写入所述执行指令的至少部分线程中每个的输出结果包括:在第二时钟频率的下一时钟周期内,向所述寄存器组写入所述执行指令的至少部分线程中每个线程的至多两个输出结果。
22.在优选的实施方式中,所述第二时钟频率为所述第一时钟频率的四分频;其中,所述在第二时钟频率的一时钟周期内,从寄存器组读出执行指令的至少部分线程中每个线程的至少两个操作数至存储队列包括:在第二时钟频率的一时钟周期,从寄存器组读出执行指令的至少部分线程中每个线程的至多四个操作数至存储队列。
23.在优选的实施方式中,所述在第二时钟频率的下一时钟周期内,向所述寄存器组写入所述执行指令的至少部分线程中每个线程的输出结果包括:在第二时钟频率的下一时钟周期内,向所述寄存器组写入所述执行指令的至少部分线程中每个线程的至多四个输出结果。
24.相对于现有技术,本技术至少具有如下有益效果:通过降低处理器中sram寄存器的时钟频率,扩充对应于并行线程读写的寄存器库数量,可以使得在sram寄存器组的一个时钟周期内,执行指令的每个线程可以读出更多的操作数。由于sram寄存器的频率降低,将会使用更少的晶体管数目设计,达到降低芯片功耗和实现高性能sram 读写的技术效果。同时,即使在保持sram寄存器的存储空间大小不变时,也可以实现更优的单位时钟周期读写数据的带宽。
附图说明
25.结合附图,并通过以下非限制性实施方式的详细描述将更充分地理解本技术的特征、目的和优点,其中:图1是现有的gpu芯片100的一种示例性结构的示意图;图2是具有8个计算单元的单指令多线程处理器(single instruction multithreading,简称simt)示例性结构的示意图;图3是gpu中一条融合乘加(fused

multiply

add,简称fma)指令的四级流水线示意图;图4是图2所示的单指令多线程处理器执行连续两条双操作数的乘法指令的时序图;图5是根据本技术实施例一的处理器500的结构示意图;图6是根据本技术实施例二的处理器600的结构示意图;图7是根据本技术一实施例的数据读写方法的流程示意图;图8是本技术实施例处理连续两条乘法双操作数指令的时序图;图9是本技术实施例处理连续两条fma三操作数指令的时序图;图10是根据本技术实施例与现有技术的性能对比示意图。
具体实施方式
26.下面通过实施例,并结合附图,对本技术的技术方案进行清楚、完整地说明,但是
本技术不限于以下所描述的实施例。基于以下实施例,本领域普通技术人员在没有创造性劳动的前提下所获得的所有其它实施例,都属于本技术保护的范围。为了清楚起见,在附图中省略了与描述示例性实施方式无关的部分。
27.应理解,本技术中诸如“包括”或“具有”等的术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件或其组合的存在,并不排除一个或多个其它特征、数字、步骤、行为、部件或其组合存在或被添加的可能性。本技术中“多个”通常可以解释为两个或两个以上的含义。
28.图1是现有gpu芯片100的一种示例性结构的示意图。如图1所示,gpu芯片100通常包含一个或者多个流处理器110,流处理器110还包括调度器111、一个或多个单指令多线程处理器112、一个或多个一级缓存113、内存管理单元114和共享存储115。流处理器110通过交叉开关矩阵或者交叉开关网络116与一个或多个二级缓存117以及pcie控制器120进行数据的读写。除此之外,gpu芯片100还可以包含视频编解码121和/或其他处理核心(图中未示出)。
29.在gpu芯片100中,为了实现数据的高性能访问,大量使用sram寄存器,例如单指令多线程处理器112中的寄存器组(又称为寄存器文件)、一级缓存113(指令缓存、常量缓存、数据缓存)、共享存储115、内存管理单元114以及大量的队列(图中未示出)等。
30.如图2所示,simt处理器112通常包含寄存器组210、操作数收集器220和多个计算单元230。其中,寄存器组210是以sram寄存器实现,操作数收集器220和计算单元230以组合逻辑实现。
31.图2示例性地描述了具有8个计算单元的simt处理器结构。该示例中,simt处理器包含8个物理计算单元和32个物理线程t0

t31(简称thread0

31),采用4时钟周期指令以及4级流水线设计。其中,32个物理线程t0

t31中,每个线程包含128、192或者256个32位sram寄存器。当使用双口sram寄存器时,每个时钟周期可以同时读和写32个32位数据。
32.如图2所示,32个物理线程t0

t31分别对应到32个寄存器库b0

b31。如果每个寄存器库的深度为256,那么该寄存器组21032*256*32个寄存器库的存储结构。
33.操作数收集器220通常包括用于指令执行的操作数队列和输出结果队列,用于从寄存器组210的对应寄存器库读取指令操作数以及向对应寄存器库写入指令的输出结果数据。
34.当一个指令的操作数被从寄存器组的对应寄存器库中读出并放入到相应的操作数队列中,即一个指令的所有操作数就绪后,该指令即被发送到计算单元230执行。
35.计算单元230可以包括整数执行单元、浮点执行单元、超越函数执行单元、张量计算单元以及其他计算单元。每个计算单元通常包含三个操作数输入端口,也就是说每个时钟周期可以读入三个数据。
36.通常而言,在系统级芯片设计中,一个ip核心通常采用sram寄存器和组合逻辑部件相同的工作电压和时钟频率。例如,图2中寄存器组210与操作数收集器220、计算单元230采用相同的工作电压vdd和时钟信号clk。
37.通常gpu芯片的simt指令集可分为单操作数指令、双操作数指令、三操作数指令和异步指令。异步指令sram寄存器数据读操作一到三个操作数指令的sram寄存器数据读操作,异步指令的数据写入时钟不固定,可以看作一个或者多个数据的sram寄存器写入操作。
38.在cpu或gpu等处理芯片中,指令在计算中心通常以多级流水线的方式执行。图3是gpu中一条融合乘加fma指令的四级流水线示意图。如图4所示,一条fma指令执行前,首先将操作数a、b和c读入寄存器,而后执行s0、s1、s2、s3代表的四级流水线。
39.第一级流水线s0主要实现操作数a和b的乘法运算以及三个操作数a、b和c的指数对齐;第二级流水线s1主要实现第一级流水线乘法结果和c做加法运算和前导0预测;第三级流水线s2实现第二级流水线运算结果的归一化;第四级流水线s3实现第三级流水线的运算结果的进位、归一化和下一时钟周期输出指令运算的结果。
40.双操作数指令的典型代表是乘法指令、加法指令或者比较指令等。图4是图2所示的simt处理器执行连续两条双操作数的乘法指令的四级流水线时序图。由于寄存器组210与操作数收集器220、计算单元230的组合逻辑电路的时钟频率相同,并且每个线程对应一个寄存器库,在一个时钟周期每个线程可读出一个数据和写入一个数据。
41.如图3所示,在系统时钟clk的第一个时钟周期,首先读出thread0

7执行第一条乘法指令的操作数a;在第二个时钟周期,读出thread0

7执行第一条乘法指令的操作数b、thread8

15执行第一条乘法指令的操作数a;在第三个时钟周期,读出thread8

15执行第一条乘法指令的操作数b、thread16

23执行第一条乘法指令的操作数a;在第四个时钟周期,读出thread16

23执行第一条乘法指令的操作数b、thread 24

31执行第一条乘法指令的操作数a;在第五个时钟周期,读出thread0

7执行第二条乘法指令的操作数a以及thread 24

31执行第一条乘法指令的操作数b;在第六个时钟周期,读出thread0

7执行第二条乘法指令的操作数b以及thread 8

15执行第二条乘法指令的操作数a,同时写入thread16

23 执行第一条乘法指令的输出结果w;在第七个时钟周期,读出thread8

15执行第二条乘法指令的操作数b以及thread 16

23执行第二条乘法指令的操作数a;在第八个时钟周期,读出thread16

23执行第二条乘法指令的操作数b以及thread 24

31执行第二条乘法指令的操作数a;在第九个时钟周期,写入thread0

7 执行第一条乘法指令的输出结果w,同时读出thread 24

31执行第二条乘法指令的操作数b;在第十个时钟周期,写入thread8

15 执行第一条乘法指令的输出结果w;在第十一个时钟周期,写入thread16

23执行第一条乘法指令的输出结果w;在第十二个时钟周期,写入thread24

31执行第一条乘法指令的输出结果w;在第十三个时钟周期,写入thread0

7 执行第二条乘法指令的输出结果w;在第十四个时钟周期,写入thread8

15 执行第二条乘法指令的输出结果w;在第十五个时钟周期,写入thread16

23执行第二条乘法指令的输出结果w;在第十六个时钟周期,写入thread24

31执行第二条乘法指令的输出结果w;
如图4所示,计算单元230执行上述指令的四级流水线同样按照系统时钟clk的时钟频率执行。其中,thread 0

7执行第一条乘法指令需要等待操作数a和b准备就绪,因此,为了对齐四级流水线的时钟,thread 0

7执行第一条乘法指令的第一级流水线(s0)延迟四个时钟周期执行;而后依次执行第一条乘法指令的第二级流水线(s1)、第三级流水线(s2)和第四级流水线(s3),执行完成四级流水线后,指令的输出结果w写入操作数收集器220的输出结果队列。
42.如前所述,图2所示的simt处理器中寄存器组210在一个时钟周期每个线程可读出一个数据和写入一个数据,随着高性能计算对芯片频率的要求,会导致构成寄存器组的sram寄存器采用更大面积和更大功耗的设计,从而影响处理器芯片的功耗和极限频率。
43.需要注意的是,以上仅以gpu芯片中simt处理器为例引出本技术实施方式描述,但不表示本技术实施例的技术方案仅适用于图1和图2中显示的gpu芯片及其simt处理器中,上图1所示gpu和simt处理器的结构不能理解为限制本技术的保护范围。
44.图5是根据本技术实施例一的处理器500的结构示意图。如图5所示,处理器500包括:寄存器组510,包括sram寄存器,该静态随机存取存储器包括对应于执行指令的多个线程的一组寄存器库511。
45.其中,每个线程分别对应至少两个寄存器库,图5中示意性地展示了32个线程t0

t31以及每个线程分别对应两个寄存器库b0和b1的实施方式,但是寄存器组510中该组寄存器库对应的线程数量取决于该处理器所支持的执行指令的并行线程数量,这个数量可以是16、32、64等多种不同的实施方式,并不限于图4中示意性描述的32个线程数量,并且根据每个线程在一个时钟周期读出的数据的数量需求,每个线程所对应的寄存器库数量也可以大于两个。
46.存储队列520,连接至寄存器组510,用于存储从寄存器组510读取的对应于执行指令的多个线程的操作数和准备向寄存器组510写入的执行指令的多个线程的输出结果。
47.计算单元组530,连接至存储队列520,其包括多个计算单元531,用于基于存储队列520中的操作数执行指令的多个线程,并向存储队列520输出结果。
48.时钟分频电路540,连接至系统时钟信号clk,将系统时钟信号clk分频转换为比系统时钟频率低的分频时钟信号clkm,而后将分频时钟信号clkm连接至寄存器组510。存储队列520和计算单元组530的组合逻辑工作在系统时钟信号clk的时钟频率,寄存器组510则工作在分频时钟信号clkm的分频时钟频率。
49.由于寄存器组的sram寄存器采用了频率更低的分频时钟频率,且每个线程同时对应了至少两个寄存器库,在分频时钟频率的一个时钟周期内,寄存器组510能够读取多个线程中至少部分线程中每个线程的至少两个操作数。
50.本技术实施例通过降低处理器中sram寄存器的时钟频率,且扩充对应于并行线程读写的寄存器库数量,可以使得在寄存器组的一个时钟周期内,执行指令的每个线程可以读出更多的操作数。即使保持sram寄存器的存储空间大小不变时,也可以通过增加寄存器库的数量,实现更优的单位时钟周期读写数据的带宽。此外,sram寄存器的频率降低,将会使用更少的晶体管数目设计,达到降低功耗和实现高性能sram 寄存器读写。
51.在一些实施方式中,在分频时钟频率的一个时钟周期内,该寄存器组510能够写入
多个线程中至少部分线程中每个线程的指令输出结果。
52.在一些实施方式中,在分频时钟频率的一个时钟周期内,该寄存器组510能够写入多个线程中至少部分线程中每个线程的至少两个输出结果。
53.在一些实施方式中,时钟分频电路540可以包括偶数分频电路,用于将系统时钟信号clk转换为系统时钟频率的偶数分频的时钟信号clkm。
54.在一些实施方式中,偶数分频电路可以包括二分频电路,用于将系统时钟信号clk转换为系统时钟频率的二分频的时钟信号clkm。
55.在一些实施方式中,寄存器组510可以被配置为每个线程分别对应两个寄存器库,在系统时钟频率的二分频(即1/2)的一个时钟周期内,寄存器组510能够读取多个线程中至少部分线程中每个线程的两个操作数。
56.在一些实施方式中,在系统时钟频率的二分频的一个时钟周期内,根据执行的指令类型的不同,寄存器组510能够写入多个线程中至少部分线程中每个的至多两个输出结果,例如,每个线程在一个二分频时钟周期可以写入一个或两个线程的输出结果。
57.在一些实施方式中,为了实现更高主频和寄存器读写效率,偶数分频电路还可以包括四分频电路,用于将系统时钟信号clk转换为系统时钟频率的四分频(即1/4)的时钟信号clkm。
58.在一些实施方式中,寄存器组510可以被配置为每个线程分别对应四个寄存器库,在系统时钟频率的四分频的一个时钟周期内,寄存器组510能够读取多个线程中至少部分线程中每个线程的至多四个操作数。
59.在一些实施方式中,在系统时钟频率的四分频的一个时钟周期内,根据执行的指令类型的不同,寄存器组510能够写入所述多个线程中至少部分线程中每个线程的至多四个输出结果。
60.在一些实施方式中,存储队列520可以包括操作数队列和输出结果队列。操作数队列和输出结果队列各自的宽度与一组寄存器库的数量相同,以便对应读取每个线程指令执行所需的操作数和写入指令输出结果。以寄存器组支持32个并行线程,每个线程对应2个寄存器库为例,操作数队列的宽度与寄存器组的寄存器库数相同,为32*2个32位sram寄存器,最小深度可以为2,可选地,可以深度为4

6。输出结果队列的宽度与寄存器组的寄存器库数相同,也为32*2个32位sram寄存器,深度可以为2。
61.在一些实施方式中,处理器可以包括中央处理器、图形处理单器、数字处理器、现场可编程门阵列、人工智能芯片、视频编解码芯片中任意之一。
62.图6是根据本技术实施例二的处理器600的结构示意图。如图6所示,处理器600在实施例一的处理器500的基础上,进一步包括了:电平移位电路650,其连接至工作电压vdd和寄存器组610,用于将工作电压vdd转换为比工作电压vdd低的电压vddm。其中,存储队列620和计算单元组630工作在工作电压vdd,寄存器组510工作在电压vddm。
63.本实施例中,对寄存器组采用更低的工作电压,例如vddm电压可以比vdd工作电压低10%

20%左右,可以进一步降低芯片的功耗,有效延长芯片寿命,提高芯片良品率,从而进一步提高处理芯片在低功耗下的处理性能。
64.图7是根据本技术一实施例的数据读写方法的流程示意图。如图7所示,该数据读
写方法适用于包括寄存器组、存储队列和计算单元组的处理器,其中,存储队列和计算单元组工作在第一时钟频率,寄存器组工作在比第一时钟频率低的第二时钟频率,该数据读写方法可以包括以下步骤:s710,在第二时钟频率的一时钟周期,从寄存器组读出执行指令的至少部分线程中每个的至少两个操作数至存储队列;s720,判断执行指令的至少部分线程中每个的全部操作数是否已读出到存储队列,如否,则在第二时钟频率的下一时钟周期,继续从寄存器组读出执行指令的至少部分线程中每个的剩余操作数至存储队列;s730,在执行指令的至少部分线程中每个的全部操作数已读出到存储队列之后,计算单元组以第一时钟频率的时钟周期对执行指令的至少部分线程执行多级流水线;s740,在对执行指令的至少部分线程执行完多级流水线之后,在第二时钟频率的下一时钟周期,向寄存器组写入执行指令的至少部分线程中每个线程的输出结果。
65.在一些实施方式中,向寄存器组写入执行指令的至少部分线程中每个的输出结果包括向寄存器组写入执行指令的至少部分线程中每个线程的至少两个输出结果。
66.在一些实施方式中,第二时钟频率为第一时钟频率的偶数分频。
67.在一些实施方式中,第二时钟频率为第一时钟频率的二分频;其中,步骤s710中,在第二时钟频率的一时钟周期,从寄存器组读出执行指令的至少部分线程中每个线程的至少两个操作数至存储队列包括:在第二时钟频率的一时钟周期,从寄存器组读出执行指令的至少部分线程中每个线程的两个操作数至存储队列。
68.在一些实施方式中,步骤s740中,在第二时钟频率的下一时钟周期,向寄存器组写入执行指令的至少部分线程中每个的输出结果包括:在第二时钟频率的下一时钟周期,向寄存器组写入执行指令的至少部分线程中每个线程的至多两个输出结果。
69.在一些实施方式中,第二时钟频率第一时钟频率的四分频;其中,步骤s710中,在第二时钟频率的一时钟周期,从寄存器组读出执行指令的至少部分线程中每个线程的至少两个操作数至存储队列包括:在第二时钟频率的一时钟周期,从寄存器组读出执行指令的至少部分线程中每个线程的至多四个操作数至存储队列。
70.在一些实施方式中,步骤s740中,在第二时钟频率的下一时钟周期,向寄存器组写入执行指令的至少部分线程中每个的输出结果包括:在第二时钟频率的下一时钟周期,向寄存器组写入执行指令的至少部分线程中每个线程的至多四个输出结果。
71.图8是本技术实施例处理连续两条乘法双操作数指令的时序图。图8以寄存器组工作在系统时钟频率clk的二分频时钟clkm为例。如图8所示,在二分频时钟信号clkm(第二时钟频率)的第一个时钟周期,首先从寄存器组读出thread0

7执行第一条乘法指令的操作数ab,同时读出thread8

15执行第一条乘法指令的操作数ab;在第二个时钟周期,读出thread16

23执行第一条乘法指令的操作数ab,同时读出thread24

31执行第一条乘法指令的操作数ab;在第三个时钟周期,读出thread0

7执行第二条乘法指令的操作数ab,同时读出thread8

15执行第二条乘法指令的操作数ab;在第四个时钟周期,读出thread16

23执行第二条乘法指令的操作数ab,同时读出thread24

31执行第二条乘法指令的操作数ab;
在第五个时钟周期,向寄存器组写入thread0

7 执行第一条乘法指令的输出结果w;在第六个时钟周期,向寄存器组写入thread8

15执行第一条乘法指令的输出结果w和thread16

23执行第一条乘法指令的输出结果w;在第七个时钟周期,向寄存器组写入thread0

7 执行第二条乘法指令的输出结果w和thread24

31执行第一条乘法指令的输出结果w;在第八个时钟周期,向寄存器组写入thread8

15执行第二条乘法指令的输出结果w和thread16

23执行第二条乘法指令的输出结果w;在第九个时钟周期,向寄存器组写入thread24

31执行第二条乘法指令的输出结果w。
72.如图8所示,计算单元组执行上述指令的四级流水线按照系统时钟信号clk(第一时钟频率)执行。其中,thread 0

7执行第一条乘法指令需要满足操作数a和b都从寄存器组读出并准备就绪,因此,为了对齐四级流水线的时钟,thread 0

7执行第一条乘法指令的第一级流水线(s0)延迟四个系统时钟信号clk的时钟周期,两个二分频时钟信号clkm的周期;而后依次执行第一条乘法指令的第二级流水线(s1)、第三级流水线(s2)和第四级流水线(s3),执行完成四级流水线后,在二分频时钟信号clkm的第五个时钟周期,指令的输出结果w被写入存储队列的输出结果队列。
73.同理,该指令的其它线程thread 8

15、thread16

23、thread24

31依次落后一个系统时钟信号clk的时钟周期执行四级流水线,并依次在二分频时钟信号clkm的对应的时钟周期写入指令的输出结果w到存储队列的输出结果队列。
74.该实施例中,寄存器组工作在1/2的组合逻辑频率,一个时钟周期可同时读出两个操作数,并且一个时钟周期可以写入一个或两个的输出结果。
75.图9是本技术实施例处理连续两条fma三操作数指令的时序图。图9同样以寄存器组工作在系统时钟频率clk的二分频时钟clkm为例。如图9所示,在二分频时钟信号clkm(第二时钟频率)的第一个时钟周期,首先从寄存器组读出thread0

7执行第一条fma指令的操作数ab,同时读出thread8

15执行第一条fma指令的操作数ab;在第二个时钟周期,读出thread0

7执行第一条fma指令的操作数c,读出thread8

15执行第一条fma指令的操作数c,读出thread16

23执行第一条fma指令的操作数ab和读出thread24

31执行第一条fma指令的操作数ab;在第三个时钟周期,读出thread0

7执行第二条fma指令的操作数ab,同时读出thread8

15执行第二条fma指令的操作数ab,同时读出thread16

23执行第一条fma指令的操作数c和读出thread24

31执行第一条fma指令的操作数c;在第四个时钟周期,读出thread0

7执行第二条fma指令的操作数c,同时读出thread8

15执行第二条fma指令的操作数c,同时读出thread16

23执行第二条fma指令的操作数ab和读出thread24

31执行第二条fma指令的操作数ab;在第五个时钟周期,向寄存器组写入thread0

7 执行第一条fma指令的输出结果w,同时读出thread16

23执行第二条fma指令的操作数c和读出thread24

31执行第二条fma指令的操作数c;在第六个时钟周期,向寄存器组写入thread8

15执行第一条fma指令的输出结果w
和thread16

23执行第一条fma指令的输出结果w;在第七个时钟周期,向寄存器组写入thread0

7执行第二条fma指令的输出结果w和thread24

31执行第一条fma指令的输出结果w;在第八个时钟周期,向寄存器组写入thread8

15执行第二条fma指令的输出结果w、thread16

23执行第二条fma指令的输出结果w;在第九个时钟周期,向寄存器组写入thread24

31执行第二条fma指令的输出结果w。
76.如图9所示,计算单元组执行上述fma指令的四级流水线按照系统时钟信号clk(第一时钟频率)执行,过程如同图8所示,在此不再赘述。
77.图10是根据本技术实施例与现有技术的性能对比示意图。其中,芯片的动态功耗公式了可以表示如下:其中,α为活动因子,是电路节点从0跳变至1的概率,c为负载电容,vdd为芯片的工作电压,f为芯片的频率。
78.假设设计一个3.1hz的处理芯片,当sram寄存器与组合逻辑电路采用相同时钟频率时,必须使用10t(即10个晶体管实现1比特位)sram寄存器,在1.0v的工作电压下,该10tsram寄存器的动态功耗为power(10t)=1.0*1.0*α*3.0ghz*c0,c0为负载电容。
79.如果采用本技术实施例,例如sram寄存器的时钟采用二分频时钟(1/2)的方式,则可以采用8t(即8个晶体管实现1比特位)sram寄存器,工作电压可以下降到0.9v,该8tsram的动态功耗为power(8t)=0.9*0.9*2*α*1.5ghz*c1,c1为负载电容。其中,c0比c1至少高25%,采用本技术实施例方案,sram寄存器能够降低功耗约35%。
80.本技术实施例通过降低处理器中sram寄存器的时钟频率,扩充对应于并行线程读写的寄存器库数量,可以使得在sram寄存器的一个时钟周期内,执行指令的每个线程可以读出更多的操作数。由于sram寄存器的频率降低,将会使用更少的晶体管数目设计,达到降低芯片功耗和实现高性能sram寄存器读写的技术效果。同时,即使在保持sram寄存器的存储空间大小不变时,也可以实现更优的单位时钟周期读写数据的带宽。
81.本技术实施例可以广泛应用于中央处理器、图形处理器、数字处理器、现场可编程门阵列、人工智能芯片、视频编解码芯片等处理电路中,来提高芯片的读写性能,降低功耗,并增加芯片的使用寿命,提高良品率。
82.本技术实施例中所涉及到的步骤、单元或模块可以通过硬件电路或者软硬件逻辑相结合的方式实现。本技术的实施方式并不限于上述实施例所述,在不偏离本技术的精神和范围的情况下,本领域普通技术人员可以在形式和细节上对本技术做出各种改变和改进,这些均被认为落入了本技术的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1