首页 / 专利库 / 信号处理 / 信号 / 异步指令执行装置和方法

异步指令执行装置和方法

阅读:2发布:2020-09-23

专利汇可以提供异步指令执行装置和方法专利检索,专利查询,专利分析的服务。并且一种异步指令执行装置和方法。该异步指令执行装置(20)包括矢量执行单元控制VXUC模 块 (21)和n个矢量执行单元数据VXUD模块(221‑22n),n为正整数,其中,VXUC模块(21),用于执行指令译码和令牌管理;n个VXUD模块(221‑22n)级联并且分别连接至VXUC模块(21),用于调用外部计算资源执行数据计算;其中,异步指令执行装置处理的数据位宽为M,每个VXUD模块的位宽为N,n=M/N。该异步指令执行装置分为VXUC和VXUD两部分,其中VXUD的数目按照数据位宽设置,这样每个VXUD的数据线可以分开走线,从而总线也可以分开走线,使得后端布线更加方便。,下面是异步指令执行装置和方法专利的具体信息内容。

1.一种异步指令执行装置,其特征在于,包括矢量执行单元控制VXUC模和n个矢量执行单元数据VXUD模块,n为正整数,其中,
所述VXUC模块,用于执行指令译码和令牌管理;
所述n个VXUD模块级联并且分别连接至所述VXUC模块,用于调用外部计算资源执行数据计算;
其中,所述异步指令执行装置处理的数据位宽为M,每个所述VXUD模块的位宽为N,n=M/N;所述VXUC模块包括译码子模块和令牌管理子模块,
所述译码子模块,用于对来自矢量指令提取器VIF的指令进行译码,得到译码后的指令信息;
所述令牌管理子模块,用于根据所述译码子模块译码后的指令信息,管理令牌在所述异步指令执行装置和其他异步指令执行装置之间的传递以及令牌在所述异步指令执行装置内部的传递;
所述令牌管理子模块,还用于在所述译码子模块译码后的指令信息表示需要调用所述外部计算资源时,产生对应于所述外部计算资源的时钟脉冲信号
所述VXUC模块还用于将所述时钟脉冲信号和所述译码后的指令信息中包括的控制信息发送至所述VXUD模块;
所述VXUD模块包括连接至所述外部计算资源的资源接口,用于通过所述资源接口将所述时钟脉冲信号和所述控制信息发送至所述外部计算资源,以使得所述外部计算资源根据所述时钟脉冲信号和所述控制信息进行数据计算,并用于通过所述资源接口接收所述外部计算资源进行数据计算的结果。
2.如权利要求1所述的异步指令执行装置,其特征在于,所述控制信息包括配置标志信息,
所述VXUD模块具体用于通过所述资源接口将所述配置标志信息发送至所述外部计算资源,以使得所述外部计算资源根据所述配置标志信息进行配置后进行所述数据计算。
3.如权利要求2所述的异步指令执行装置,其特征在于,
所述VXUD模块还用于接收所述VIF对所述指令进行初步译码后得到的立即数,并通过所述资源接口将所述立即数发送至所述外部计算资源,以使得所述外部计算资源使用所述立即数进行所述数据计算;或者,
所述VXUD模块还用于接收所述VIF对所述指令进行初步译码后得到的寄存器地址信息,根据所述寄存器地址信息从寄存器读取寄存器数据,并通过所述资源接口将所述寄存器数据发送至所述外部计算资源,以使得所述外部计算资源使用所述寄存器数据进行所述数据计算。
4.如权利要求3所述的异步指令执行装置,其特征在于,所述VXUD模块还包括连接至所述寄存器的读写接口。
5.如权利要求4所述的异步指令执行装置,其特征在于,
所述VXUD模块,还用于接收所述VIF对所述指令进行初步译码后得到的寄存器读写令牌的信息,并根据所述寄存器读写令牌的信息,通过所述读写接口对所述寄存器进行读写操作;
所述令牌管理子模块,还用于接收所述VIF对所述指令进行初步译码后得到的寄存器读写令牌的信息,并根据所述寄存器读写令牌的信息管理所述寄存器读写令牌的传递。
6.如权利要求3所述的异步指令执行装置,其特征在于,所述VXUD模块还包括通信接口和执行子模块,
所述VXUD模块用于通过所述通信接口与其他VXUD模块交换所述外部计算资源进行数据计算的结果的信息;
所述执行子模块用于根据所述VXUD模块接收的所述数据计算的结果以及从所述其他VXUD得到的所述数据计算的结果的信息,进行移位运算和/或选择运算。
7.如权利要求3所述的异步指令执行装置,其特征在于,
所述VXUD模块,还用于接收所述VIF对所述指令进行初步译码后得到的延时信息,并根据所述延时信息控制所述外部计算资源的采样延时。
8.如权利要求1所述的异步指令执行装置,其特征在于,
所述VXUC模块,还用于接收所述VIF对所述指令进行初步译码后得到的指令异常信息;
所述令牌管理子模块,还用于根据所述指令异常信息,管理令牌的传递。
9.如权利要求1-8任一项所述的异步指令执行装置,其特征在于,
所述令牌管理子模块,具体用于在多条所述译码后的指令信息表示需要调用同一个所述外部计算资源时,针对多条所述译码后的指令信息顺序地产生时钟脉冲信号并将所产生的时钟脉冲信号按照先后顺序发送至所述VXUD模块;或者,
所述令牌管理子模块,具体用于在一条所述译码后的指令信息表示需要调用多个所述外部计算资源时,针对多个所述外部计算资源顺序地产生时钟脉冲信号并按照调用多个所述外部计算资源的顺序将所产生的时钟脉冲信号先后发送至所述VXUD模块。
10.一种终端,其特征在于,包括如权利要求1-9任一项所述的异步指令执行装置。
11.一种异步指令执行方法,其特征在于,所述方法由异步指令执行装置执行,所述异步指令执行装置包括矢量执行单元控制VXUC模块和n个矢量执行单元数据VXUD模块,n为正整数,所述n个VXUD模块级联并且分别连接至所述VXUC模块,所述异步指令执行装置处理的数据位宽为M,每个所述VXUD模块的位宽为N,n=M/N,所述方法包括:
所述VXUC模块对来自矢量指令提取器VIF的指令进行译码,得到译码后的指令信息;
所述VXUC模块根据所述译码子模块译码后的指令信息,管理令牌在所述异步指令执行装置和其他异步指令执行装置之间的传递以及令牌在所述异步指令执行装置内部的传递;
所述VXUC模块在所述译码子模块译码后的指令信息表示需要调用外部计算资源时,产生对应于所述外部计算资源的时钟脉冲信号,并将所述时钟脉冲信号和所述译码后的指令信息中包括的控制信息发送至所述VXUD模块;
所述VXUD模块将所述时钟脉冲信号和所述控制信息发送至所述外部计算资源,以使得所述外部计算资源根据所述时钟脉冲信号和所述控制信息进行数据计算;
所述VXUD模块接收所述外部计算资源进行数据计算的结果。
12.如权利要求11所述的方法,其特征在于,所述控制信息包括配置标志信息,所述VXUD模块将所述时钟脉冲信号和所述控制信息发送至所述外部计算资源,以使得所述外部计算资源根据所述时钟脉冲信号和所述控制信息进行数据计算,包括:
所述VXUD模块将所述配置标志信息发送至所述外部计算资源,以使得所述外部计算资源根据所述配置标志信息进行配置后进行所述数据计算。
13.如权利要求12所述的方法,其特征在于,还包括:
所述VXUD模块接收所述VIF对所述指令进行初步译码后得到的立即数,并将所述立即数发送至所述外部计算资源,以使得所述外部计算资源使用所述立即数进行所述数据计算;或者,
所述VXUD模块接收所述VIF对所述指令进行初步译码后得到的寄存器地址信息,根据所述寄存器地址信息从寄存器读取寄存器数据,并将所述寄存器数据发送至所述外部计算资源,以使得所述外部计算资源使用所述寄存器数据进行所述数据计算。
14.如权利要求12所述的方法,其特征在于,还包括:
所述VXUD模块接收所述VIF对所述指令进行初步译码后得到的寄存器读写令牌的信息,并根据所述寄存器读写令牌的信息,通过读写接口对所述寄存器进行读写操作;
所述VXUC模块接收所述VIF对所述指令进行初步译码后得到的寄存器读写令牌的信息,并根据所述寄存器读写令牌的信息管理所述寄存器读写令牌的传递。
15.如权利要求12所述的方法,其特征在于,还包括:
所述VXUD模块与其他VXUD模块交换所述外部计算资源进行数据计算的结果的信息;
所述VXUD模块根据所述VXUD模块接收的所述数据计算的结果以及从所述其他VXUD得到的所述数据计算的结果的信息,进行移位运算和/或选择运算。
16.如权利要求11-15任一项所述的方法,其特征在于,所述VXUC模块在所述译码子模块译码后的指令信息表示需要调用所述外部计算资源时,产生对应于所述外部计算资源的时钟脉冲信号和控制信息,并将所述时钟脉冲信号和所述控制信息发送至所述VXUD模块,包括:
所述VXUC模块在多条所述译码后的指令信息表示需要调用同一个所述外部计算资源时,针对多条所述译码后的指令信息顺序地产生时钟脉冲信号并将所产生的时钟脉冲信号按照先后顺序发送至所述VXUD模块。
17.如权利要求11-15任一项所述的方法,其特征在于,所述VXUC模块在所述译码子模块译码后的指令信息表示需要调用所述外部计算资源时,产生对应于所述外部计算资源的时钟脉冲信号和控制信息,并将所述时钟脉冲信号和所述控制信息发送至所述VXUD模块,包括:
所述VXUC模块在一条所述译码后的指令信息表示需要调用多个所述外部计算资源时,针对多个所述外部计算资源顺序地产生时钟脉冲信号并按照调用多个所述外部计算资源的顺序将所产生的时钟脉冲信号先后发送至所述VXUD模块。

说明书全文

异步指令执行装置和方法

技术领域

[0001] 本发明实施例涉及处理器领域,并且更具体地,涉及异步指令执行装置和方法。

背景技术

[0002] 当前的处理器,如中央处理单元(CPU,Central Processor Unit)主要按照流线的方式执行操作,这是加快CPU速度的关键技术。同步处理器和异步处理器一般都采用这种流水线技术。在同步处理器中,流水线的每个操作是受同一个时钟控制的,这种架构导致CPU的功耗比较高。异步处理器是在流水线的基础上,每个操作使用的脉冲(即该操作的时钟)不同步,并且根据当前指令是否需要该操作来给出脉冲,目的在于降低功耗。
[0003] 目前主流的异步处理器电路比较复杂,包括控制逻辑和数据通路,其中控制逻辑包括握手协议和控制部件。在最新的一种异步处理器电路设计中,采用令牌(token)的方法来代替握手协议,可以使设计复杂度降低。令牌的思想类似于接传递,当某个功能模接收到令牌信号时开始执行,执行结束后把令牌传递给下一个功能模块,当下一个功能模块不需要执行时,令牌直接透传过去给后续模块。在这种异步处理器中,令牌是时钟信号,各个模块通过令牌信号来采样数据信号。
[0004] 在一种典型的采用令牌的异步处理器中,时钟信号经过延时逻辑单元,输入到各个功能单元来采样相应的数据信号,功能单元可包括采样单元(clocked device)和处理逻辑(Processing Logic)。延时逻辑单元是该异步处理器一个重要的组成部分,也是与同步处理器区别开来的重要部件。延时逻辑单元控制令牌的使用时间和令牌的传递:当某单元收到令牌后执行完成将令牌传递出去,这段时间是令牌的使用时间;令牌的传递分为执行单元之间的传递和功能单元之间的传递。假设一个异步处理器中有M个执行单元(XU,eXecution Unit),在每个XU中,有N个功能单元,则在XU之间有M个令牌的传递(下文中称为令牌的纵向传递),在每个XU内部功能单元之间有N个令牌在传递(下文中称为令牌的横向传递),所以令牌的总数量为N×M。当某一个令牌在使用完之后,可以同时向下一个功能单元传递以及向下一个XU传递。
[0005] 因此,对于采用令牌的异步处理器而言,其主体架构是XU和令牌逻辑,其中令牌的传递控制着XU的执行流程。
[0006] 目前,基于令牌的异步处理器架构中,每个XU表示一个算术逻辑单元(ALU,Arithmetic Logic Unit)。该架构中还可以包括寄存器(REG,Register)、乘累加(MAC,Multiply Accumulate)单元和外部执行单元(EXU,External eXecution Unit),其中MAC单元执行乘法等运算,EXU执行除法、浮点等运算。在该处理器架构中,令牌逻辑控制各单元执行的次序,n个XU就需要n个ALU,每个ALU里面有m个功能单元,那么传递的令牌需要有n×m个,这些令牌根据指令译码后的信息来产生时钟脉冲(clock pulse)信号调用各个功能单元。
[0007] 这种基于令牌的异步处理器架构灵活度不够,ALU的数目和纵向的令牌数目必须保持一致。随着未来处理器需要处理的数据位宽增大,XU的数目也需要增多,从而使得总线宽度很大,不利于后端布线。

发明内容

[0008] 本发明实施例提供一种异步指令执行装置和方法,能够便于异步处理器的后端布线。
[0009] 第一方面,提供了一种异步指令执行装置,包括矢量执行单元控制VXUC模块和n个矢量执行单元数据VXUD模块,n为正整数,其中,所述VXUC模块,用于执行指令译码和令牌管理;所述n个VXUD模块级联并且分别连接至所述VXUC模块,用于调用外部计算资源执行数据计算;其中,所述异步指令执行装置处理的数据位宽为M,每个所述VXUD模块的位宽为N,n=M/N。
[0010] 结合第一方面,在第一方面的一种实现方式中,所述VXUC模块包括译码子模块和令牌管理子模块,所述译码子模块,用于对来自矢量指令提取器VIF的指令进行译码,得到译码后的指令信息;所述令牌管理子模块,用于根据所述译码子模块译码后的指令信息,管理令牌在所述异步指令执行装置和其他异步指令执行装置之间的传递以及令牌在所述异步指令执行装置内部的传递。
[0011] 结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所述令牌管理子模块,还用于在所述译码子模块译码后的指令信息表示需要调用所述外部计算资源时,产生对应于所述外部计算资源的时钟脉冲信号,并将所述时钟脉冲信号和所述译码后的指令信息中包括的控制信息发送至所述VXUD模块;所述VXUD模块包括连接至所述外部计算资源的资源接口,用于通过所述资源接口将所述时钟脉冲信号和所述控制信息发送至所述外部计算资源,以使得所述外部计算资源根据所述时钟脉冲信号和所述控制信息进行数据计算,并用于通过所述资源接口接收所述外部计算资源进行数据计算的结果。
[0012] 结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所述控制信息包括配置标志信息,所述VXUD模块具体用于通过所述资源接口将所述配置标志信息发送至所述外部计算资源,以使得所述外部计算资源根据所述配置标志信息进行配置后进行所述数据计算。
[0013] 结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所述VXUD模块还用于接收所述VIF对所述指令进行初步译码后得到的立即数,并通过所述资源接口将所述立即数发送至所述外部计算资源,以使得所述外部计算资源使用所述立即数进行所述数据计算;或者,所述VXUD模块还用于接收所述VIF对所述指令进行初步译码后得到的寄存器地址信息,根据所述寄存器地址信息从寄存器读取寄存器数据,并通过所述资源接口将所述寄存器数据发送至所述外部计算资源,以使得所述外部计算资源使用所述寄存器数据进行所述数据计算。
[0014] 结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所述VXUD模块还包括连接至所述寄存器的读写接口。
[0015] 结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所述VXUD模块,还用于接收所述VIF对所述指令进行初步译码后得到的寄存器读写令牌的信息,并根据所述寄存器读写令牌的信息,通过所述读写接口对所述寄存器进行读写操作;所述令牌管理子模块,还用于接收所述VIF对所述指令进行初步译码后得到的寄存器读写令牌的信息,并根据所述寄存器读写令牌的信息管理所述寄存器读写令牌的传递。
[0016] 结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所述VXUD模块还包括通信接口和执行子模块,所述VXUD模块用于通过所述通信接口与其他VXUD模块交换所述外部计算资源进行数据计算的结果的信息;所述执行子模块用于根据所述VXUD模块接收的所述数据计算的结果以及从所述其他VXUD得到的所述数据计算的结果的信息,进行移位运算和/或选择运算。
[0017] 结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所述VXUD模块,还用于接收所述VIF对所述指令进行初步译码后得到的延时信息,并根据所述延时信息控制所述外部计算资源的采样延时。
[0018] 结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所述VXUC模块,还用于接收所述VIF对所述指令进行初步译码后得到的指令异常信息;所述令牌管理子模块,还用于根据所述指令异常信息,管理令牌的传递。
[0019] 结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所述令牌管理子模块,具体用于在多条所述译码后的指令信息表示需要调用同一个所述外部计算资源时,针对多条所述译码后的指令信息顺序地产生时钟脉冲信号并将所产生的时钟脉冲信号按照先后顺序发送至所述VXUD模块;或者,所述令牌管理子模块,具体用于在一条所述译码后的指令信息表示需要调用多个所述外部计算资源时,针对多个所述外部计算资源顺序地产生时钟脉冲信号并按照调用多个所述外部计算资源的顺序将所产生的时钟脉冲信号先后发送至所述VXUD模块。
[0020] 第二方面,提供了一种终端,包括上述异步指令执行装置。
[0021] 第三方面,提供了一种异步指令执行方法,其特征在于,所述方法由异步指令执行装置执行,所述异步指令执行装置包括矢量执行单元控制VXUC模块和n个矢量执行单元数据VXUD模块,n为正整数,所述n个VXUD模块级联并且分别连接至所述VXUC模块,所述异步指令执行装置处理的数据位宽为M,每个所述VXUD模块的位宽为N,n=M/N,所述方法包括:所述VXUC模块对来自矢量指令提取器VIF的指令进行译码,得到译码后的指令信息;所述VXUC模块根据所述译码子模块译码后的指令信息,管理令牌在所述异步指令执行装置和其他异步指令执行装置之间的传递以及令牌在所述异步指令执行装置内部的传递;所述VXUC模块在所述译码子模块译码后的指令信息表示需要调用所述外部计算资源时,产生对应于所述外部计算资源的时钟脉冲信号,并将所述时钟脉冲信号和所述译码后的指令信息中包括的控制信息发送至所述VXUD模块;所述VXUD模块将所述时钟脉冲信号和所述控制信息发送至所述外部计算资源,以使得所述外部计算资源根据所述时钟脉冲信号和所述控制信息进行数据计算;所述VXUD模块接收所述外部计算资源进行数据计算的结果。
[0022] 结合第三方面,在第三方面的一种实现方式中,所述控制信息包括配置标志信息,所述VXUD模块将所述时钟脉冲信号和所述控制信息发送至所述外部计算资源,以使得所述外部计算资源根据所述时钟脉冲信号和所述控制信息进行数据计算,包括:所述VXUD模块将所述配置标志信息发送至所述外部计算资源,以使得所述外部计算资源根据所述配置标志信息进行配置后进行所述数据计算。
[0023] 结合第三方面及其上述实现方式,在第三方面的另一种实现方式中,该方法还包括:所述VXUD模块接收所述VIF对所述指令进行初步译码后得到的立即数,并将所述立即数发送至所述外部计算资源,以使得所述外部计算资源使用所述立即数进行所述数据计算;或者,所述VXUD模块接收所述VIF对所述指令进行初步译码后得到的寄存器地址信息,根据所述寄存器地址信息从寄存器读取寄存器数据,并将所述寄存器数据发送至所述外部计算资源,以使得所述外部计算资源使用所述寄存器数据进行所述数据计算。
[0024] 结合第三方面及其上述实现方式,在第三方面的另一种实现方式中,该方法还包括:所述VXUD模块接收所述VIF对所述指令进行初步译码后得到的寄存器读写令牌的信息,并根据所述寄存器读写令牌的信息,通过所述读写接口对所述寄存器进行读写操作;所述VXUC模块接收所述VIF对所述指令进行初步译码后得到的寄存器读写令牌的信息,并根据所述寄存器读写令牌的信息管理所述寄存器读写令牌的传递。
[0025] 结合第三方面及其上述实现方式,在第三方面的另一种实现方式中,该方法还包括:所述VXUD模块与其他VXUD模块交换所述外部计算资源进行数据计算的结果的信息;所述VXUD模块根据所述VXUD模块接收的所述数据计算的结果以及从所述其他VXUD得到的所述数据计算的结果的信息,进行移位运算和/或选择运算。
[0026] 结合第三方面及其上述实现方式,在第三方面的另一种实现方式中,所述VXUC模块在所述译码子模块译码后的指令信息表示需要调用所述外部计算资源时,产生对应于所述外部计算资源的时钟脉冲信号和控制信息,并将所述时钟脉冲信号和所述控制信息发送至所述VXUD模块,包括:所述VXUC模块在多条所述译码后的指令信息表示需要调用同一个所述外部计算资源时,针对多条所述译码后的指令信息顺序地产生时钟脉冲信号并将所产生的时钟脉冲信号按照先后顺序发送至所述VXUD模块。
[0027] 结合第三方面及其上述实现方式,在第三方面的另一种实现方式中,所述VXUC模块在所述译码子模块译码后的指令信息表示需要调用所述外部计算资源时,产生对应于所述外部计算资源的时钟脉冲信号和控制信息,并将所述时钟脉冲信号和所述控制信息发送至所述VXUD模块,包括:所述VXUC模块在一条所述译码后的指令信息表示需要调用多个所述外部计算资源时,针对多个所述外部计算资源顺序地产生时钟脉冲信号并按照调用多个所述外部计算资源的顺序将所产生的时钟脉冲信号先后发送至所述VXUD模块。
[0028] 本发明实施例的异步指令执行装置分为VXUC和VXUD两部分,其中VXUD的数目按照数据位宽设置,这样每个VXUD的数据线可以分开走线,从而总线也可以分开走线,使得后端布线更加方便。附图说明
[0029] 为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0030] 图1是一种现有的基于令牌的异步处理器架构的示意框图
[0031] 图2是本发明一个实施例的异步指令执行装置的示意框图。
[0032] 图3是本发明另一个实施例的异步指令执行装置的示意框图。
[0033] 图4是本发明一个实施例的令牌传递过程的示意图。
[0034] 图5是本发明一个实施例的资源调用过程的示意图。
[0035] 图6是本发明一个实施例的资源调用过程的示意图。
[0036] 图7是本发明一个实施例的异步指令执行方法的流程图

具体实施方式

[0037] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0038] 图1是一种现有的基于令牌的异步处理器架构的示意框图。该异步处理器架构包括指令提取(IF,instruction fetch)单元101和n个ALU(分别标记为ALU 1021、ALU 1022、...、ALU 102n,并且在下文中,在不需要区分特定ALU的情况下将ALU统一标记为
102)。每个XU对应一个ALU。该异步处理器架构还可以包括其他单元103,单元103可包括REG、MAC、EXU等资源或功能。在IF单元101里有存指令的先进先出(FIFO,First In First Out)触发器,存储若干条指令。
[0039] 当一个ALU 102的取指令牌(也可以称为指令令牌)到达时,该ALU 102从IF单元101取指令,然后取值令牌继续向后传递。在任一ALU 102内部,起始令牌(launch token)一般是指令的译码令牌,最终结束于寄存器的写操作令牌,然后令牌返回到起始令牌,这种传递可称为令牌的横向传递。在ALU 102之间,某一种令牌从上一个ALU 102传递到下一个ALU 
102的同一种令牌,最终返回,例如从ALU 1021的起始令牌最终传递到ALU 102n的起始令牌,再返回到ALU 1021,其它令牌以相同方式传递,这种传递可称为令牌的纵向传递。
[0040] 基于图1架构的异步处理器中,ALU的个数等于XU的个数,使得令牌和ALU绑在一起,不方便ALU的调整。同时,在数据位宽比较大的时候,会使得后端的布线比较困难。
[0041] 图2是本发明一个实施例的异步指令执行装置的示意框图。图2的异步指令执行装置20的一种实现形式是异步处理器,在本发明说明书中也可以称为矢量执行单元(VXU,Vector eXecution Unit)。
[0042] 异步指令执行装置20包括矢量执行单元控制(VXUC,Vector Execution Unit Control)模块21和n个矢量执行单元数据(VXUD,Vector Execution Unit Data)模块221-22n。在下文中,如果不需要区分特定VXUD模块,则可以统一称为VXUD模块22。
[0043] VXUD模块22的数目n为正整数,其中异步指令执行装置20处理的数据位宽为M,每个VXUD模块22的位宽为N,n=M/N。
[0044] VXUC模块21用于执行指令译码和令牌管理。
[0045] n个VXUD模块22级联并且分别连接至VXUC模块21,用于调用外部计算资源执行数据计算。
[0046] 本发明实施例的异步指令执行装置分为VXUC和VXUD两部分,其中VXUD的数目按照数据位宽设置,这样每个VXUD的数据线可以分开走线,从而总线也可以分开走线,使得后端布线更加方便。
[0047] VXUD模块22级联是指VXUD模块22按顺序依次连接,例如VXUD模块221连接至VXUD模块222,VXUD模块222连接至VXUD模块223,依此类推。可选的,最后一个VXUD模块22n可以连接至VXUD模块221。
[0048] 同时,数据计算基本上由VXU外部的计算资源完成,这样VXU的数目不需要等于计算资源的数目。外部计算资源可以包括ALU、MAC、查找表(LUT,Lookup Table)、EXU等。在设计中,ALU等计算资源位于VXU之外,不需要如图1中那样和令牌的数目保持一致,而是可以根据芯片需求灵活地进行增减,提高资源的利用率。在本发明实施例中,这些外部计算资源也可以称为矢量(Vector)计算资源,如VALU、VMAC、VLUT、VEXU等。
[0049] 具体地,本发明实施例的VXU架构中,VXUD的数目按照数据位宽设置,因此VXUD可以按照高低位分开。以M=128比特的数据位宽为例,假设每个VXUD的位宽N=32比特,则在VXU中可以设计n=M/N=4个VXUD,即,将128比特的数据位宽按照高低位分为4个32比特的窄位宽,分别由4个VXUD进行计算调度。VXUD之间可以进行通信以传输数据的进位等信息,从而得到最终的结果。
[0050] 图3是本发明另一个实施例的异步指令执行装置的示意框图。图3的异步指令执行装置VXU 30是图2的异步指令执行装置20的一个具体例子,包括VXUC模块301和VXUD模块302。为了简洁,图3中仅仅描绘了一个VXUD模块302,但本发明实施例对VXUD模块的数目不作限制。VXU 30可以独立工作,也可以与其他VXU协作工作。
[0051] 图3还描绘了VXU 30所连接的指令提取器31,在本发明实施例中指令提取器31也可以称为矢量指令提取器(VIF,Vector Instruction Fetch)。
[0052] 此外,图3还描绘了VXU 30所连接的外部计算资源32。如上所述,外部计算资源32可包括VALU、VMAC、VLUT、VEXU等。
[0053] 如图3所示,VXUC模块301可包括译码子模块3011和令牌管理子模块3012。
[0054] 译码子模块3011用于对来自VIF 31的指令进行译码,得到译码后的指令信息。令牌管理子模块3012用于根据译码子模块3011译码后的指令信息,管理令牌在VXU 30和其他VXU之间的传递以及令牌在VXU 30内部的传递。
[0055] 这样,每个VXU的令牌都可以在VXUC中进行管理,使得设计更为清晰和模块化。在一个可选的实施例中,令牌管理子模块3012可以由一系列的物理单元构成,每个物理单元负责管理一种令牌的传递。例如,令牌管理子模块3012管理的令牌可以包括:译码令牌、取指令令牌、读寄存器令牌、写寄存器令牌、计算资源令牌(即用于调用外部计算资源的令牌)、特殊寄存器读写令牌以及数据加载/存储(LD/ST,Load/Store)令牌等,其中每一种令牌由一个物理单元负责管理,物理单元之间可以相互连接以实现令牌在VXU内部的传递。
[0056] 可选地,作为另一实施例,令牌管理子模块3012还用于在译码子模块3011译码后的指令信息表示需要调用外部计算资源32时,产生对应于外部计算资源32的时钟脉冲(clock pulse)信号,并将时钟脉冲信号发送至VXUD模块302。另外,译码后的指令信息可包括用于配置外部计算资源32的控制信息,VXUC模块301可以将该控制信息和时钟脉冲信号一起发送至VXUD模块302。
[0057] 例如,当译码后的指令信息需要进行相对复杂的乘法、除法或浮点运算时,可以确定该指令信息表示需要调用外部计算资源32。
[0058] VXUD模块302可包括连接至外部计算资源32的资源接口3021。VXUD模块302可通过资源接口3021将时钟脉冲信号和控制信息发送至外部计算资源32,以使得外部计算资源32根据时钟脉冲信号和控制信息进行数据计算。VXUD模块302还可以通过资源接口3021接收外部计算资源32进行数据计算的结果。
[0059] 这样,ALU等计算资源位于VXU之外,不需要如图1中那样和令牌的数目保持一致,而是可以根据芯片需求灵活地进行增减,提高资源的利用率。
[0060] 可选地,作为一个实施例,控制信息可用于配置外部计算资源32。例如控制信息包括配置标志(flag)信息,VXUD模块302可通过资源接口3021将配置标志信息发送至外部计算资源32,以使得外部计算资源32根据配置标志信息进行配置后进行数据计算。例如,假设外部计算资源ALU能够支持16比特和32比特两种位宽的计算,而译码子模块3011译码后的指令信息指示需要进行16比特的计算,则控制信息可以携带显式的指示字段/比特或通过隐式的方式,指示外部计算资源ALU按照16比特位宽进行数据计算;外部计算资源ALU在接收到该控制信息之后,配置按照16比特位宽进行数据计算。
[0061] 可选地,作为另一实施例,VIF 31对指令进行初步译码,可以得到立即数或寄存器地址信息。VIF 31可以将初步译码得到的立即数或寄存器地址信息发送至VXUD模块302。VXUD模块302可通过资源接口3021将立即数发送至外部计算资源32,以使得外部计算资源
32使用立即数进行数据计算。或者,VXUD模块32可根据寄存器地址信息从寄存器读取寄存器数据(例如通过读写接口3022从寄存器读取该寄存器地址中存储的寄存器数据),然后通过资源接口3021将寄存器数据发送至外部计算资源32,以使得外部计算资源32使用寄存器数据进行数据计算。
[0062] 以调用VLUT为例,VXUC会产生时钟脉冲信号,通过VXUD发送给VLUT,VLUT接收到时钟脉冲信号后会采样输入的数据来计算;另外,VXUC会产生控制信息,通过VXUD发送给VLUT,控制信息主要用于配置VLUT的选择,因为VLUT有很多种情况,需要通过控制信息进行管理。
[0063] 可选地,作为另一实施例,根据需要,VXUD模块32也可以具有一定的译码能力,可以对指令进行译码,产生数据计算有关的控制信息(例如,VXUD产生的控制信息也可以包括一些用于配置外部计算资源32的配置标志信息)。VXUD模块32将自己产生的控制信息和VXUC模块31产生的控制信息一起发送给外部计算资源,以配置外部计算资源进行数据计算。
[0064] 本发明实施例中,VXU所使用的寄存器33也可以称为矢量寄存器(VREG,Vector REG)。
[0065] 可选地,作为另一实施例,VXUD模块302还可以包括连接至寄存器的读写接口3022。
[0066] VXUD模块302可以接收VIF 31对指令进行初步译码后得到的寄存器读写令牌的信息,并根据寄存器读写令牌的信息,通过读写接口对寄存器进行读写操作。
[0067] 令牌管理子模块3012可以接收VIF 31对指令进行初步译码后得到的寄存器读写令牌的信息,并根据寄存器读写令牌的信息管理寄存器读写令牌的传递。
[0068] 可选地,作为另一实施例,VXUD模块302还可以包括通信接口3023和执行子模块3024。
[0069] VXUD模块302可通过通信接口3023与其他VXUD模块交换外部计算资源32进行数据计算的结果的信息。
[0070] 执行子模块3024用于根据VXUD模块302接收的数据计算的结果以及从其他VXUD得到的数据计算的结果的信息,进行移位运算和/或选择运算。
[0071] 例如,所述数据计算的结果的信息可以是进位信息。由于多个VXUD模块按照高低位分开,在分别得到外部计算资源32的计算结果时,这些计算结果可能需要进位处理。VXUD模块可执行类似的简单运算,例如执行子模块3024可包括执行这种简单运算的移位器或选择器等。当然,如有必要,本发明实施例也可以将这种简单运算交给外部计算资源32实现。
[0072] 可选地,作为另一实施例,VXUD模块301还可以接收VIF 31对指令进行初步译码后得到的延时信息,并根据延时信息控制外部计算资源32的采样延时。
[0073] 可选地,作为另一实施例,VXUC模块301还可以接收VIF 31对指令进行初步译码后得到的指令异常信息。令牌管理子模块3012可根据指令异常信息,管理令牌的传递。
[0074] 可选地,作为另一具体的实施例,令牌管理子模块3012可以在多条译码后的指令信息表示需要调用同一个外部计算资源时,针对多条译码后的指令信息顺序地产生时钟脉冲信号并将所产生的时钟脉冲信号按照先后顺序发送至VXUD模块32。例如,令牌管理子模块3012对于每条指令信息,产生相应的一个时钟脉冲信息,因此多条指令信息对应的时钟脉冲信息是顺序产生并顺序发送至VXUD模块32的,这样能够保证计算资源的调用不产生冲突。
[0075] 或者,令牌管理子模块3012可以在一条译码后的指令信息表示需要调用多个外部计算资源时,针对多个外部计算资源顺序地产生时钟脉冲信号并按照调用多个外部计算资源的顺序将所产生的时钟脉冲信号先后发送至VXUD模块32。这样能够保证各个计算资源按照先后顺序执行,保证操作执行的正确性。
[0076] 应注意,在本发明实施例中,VXUD模块302从VIF 31接收信息时,可以通过VXUD模块302和VIF 31之间的直接接口进行信息传输,也可以经由VXUC模块301转发相关信息。例如,VIF 31可以将对指令进行初步译码得到的各种信息先发送至VXUC模块301,再由VXUC模块301将需要发送至VXUD模块302的信息转发至VXUD模块302。
[0077] 下面结合具体例子,更加详细地描述本发明实施例中通过令牌调用外部计算资源的例子。
[0078] 图4是本发明一个实施例的令牌传递过程的示意图。在图4的例子中,假设处理器中共有k个VXU,即VXU1、VXU2、...、VXUk,任一个VXUi(i=1,2,...,k)内有t个令牌(token_i1、token_i2、...、token_it)传递。在VXU之间的令牌传递可以称为令牌的纵向传递,在VXU内部的令牌传递可以称为令牌的横向传递。令牌传递是一种循环操作,即当令牌在横向或纵向上传递到最后一个位置时,令牌会返回第一个位置。
[0079] 如图4所示,假设VXUi的第j个令牌token_ij完成(j=1,2,...,t),则令牌会在纵向上传递至VXU(i+1)的第j个令牌token_(i+1)j,同时会在横向上传递至VXUi的第j+1个令牌token_i(j+1)。
[0080] 作为一个具体例子,假设token_i1为起始令牌(如译码令牌),当VXU1的token_11到达时,VXU1执行译码操作,在执行完毕之后,令牌纵向传递到VXU2的token_21,依次进行,当VXUk的token_k1执行完毕之后,令牌返回VXU1的token_11。
[0081] 作为另一个具体例子,假设译码后指令要求依次执行读寄存器操作、调用计算资源操作、将计算资源的计算结果写回寄存器的写寄存器操作等,这个过程可能依次涉及到译码令牌、读寄存器令牌、计算资源令牌和写寄存器令牌等,其中译码令牌为token_i1,读寄存器令牌为token_i2,依此类推,最后一个写寄存器令牌为token_it,则当VXUi的token_i1到达时,VXUi执行译码操作,在执行完毕之后,令牌横向传递到VXUi的token_i2执行读寄存器操作,依次进行,当VXUi的token_it的写寄存器操作执行完毕之后,令牌返回VXUi的token_i1。
[0082] 另外,VXU之间纵向传递令牌的接口可以设置在VXUC上,例如相邻VXU的VXUC之间通过该接口传递令牌;该接口也可以设置在VXUD上,例如相邻VXU的VXUC之间通过各自VXUD的接口传递令牌;该接口也可以设置为独立于VXUC和VXUD之外,例如相邻VXU的VXUC之间通过VXU上的接口传递令牌。本发明实施例对令牌纵向传递的方式不作限制。
[0083] 图5是本发明一个实施例的资源调用过程的示意图。在图5的例子中,假设一个处理器中有k个VXU(VXU1、VXU2、...、VXUk且k>1)需要调用同一个外部计算资源52。这种调用相互之间不能冲突,这通过令牌的传递来实现。
[0084] VIF 51的功能类似于现有的IF,提供指令的FIFO,并且可以对指令进行初步译码,得到译码信息。译码信息可以包括延时信息、寄存器读写令牌的信息、指令异常信息等。VIF 51可以根据译码信息的内容,将译码信息发送至合适的模块,例如,延时信息可以发送至VXUD模块,指令异常信息可以发送至VXUC模块,寄存器读写令牌的信息可以发送至VXUC模块和VXUD模块这两者。
[0085] 多个VXU调用相同计算资源的工作方法如下:
[0086] 1)当VXUi接收到VXU(i-1)的计算资源令牌时,VXUi会住(hold)该计算资源令牌。
[0087] 2)VXUi的指令有相应的计算资源请求时,计算资源令牌会继续被使用,若没有相应的计算资源请求,计算资源令牌会直接透传到VXU(i+1)。
[0088] 3)指令有计算资源请求时,根据译码后的指令信息和当前的计算资源令牌,VXUC会生成控制信息和时钟脉冲信号给VXUD。
[0089] 4)VXUD根据时钟脉冲信号和控制信息,调用计算资源,计算资源完成计算之后将计算结果返回VXUD。
[0090] 5)如果需要VXUD对计算结果进行简单处理,例如进位处理,则VXUD交换进位信息并对计算结果进行进位处理,得到最终结果,计算资源调用完成。作为另一种可选的方式,可以在上述过程4)结束之后确认计算资源调用完成。此后,该计算资源令牌传递到VXU(i+1)。
[0091] 这样,按照上述方式,在多个VXU需要调用同一个外部计算资源时,通过令牌的传递保证资源调用不冲突。
[0092] 图6是本发明一个实施例的资源调用过程的示意图。在图6的例子中,假设某个VXUi需要调用多个外部计算资源,如VMAC、VLUT、VALU等,还需要调用寄存器VREG。同样可以使用令牌的传递实现计算资源的正确调用,保证指令执行的正确性。
[0093] VXU可以执行多条指令,当指令到达VXU时,根据译码后的指令信息和相应的令牌,会产生时钟脉冲信号和相应控制信息,调用相应的外部计算资源。相同指令调用多个模块时由令牌来保证流程的正常进行。
[0094] 单个VXU调用不同资源的工作方法如下:
[0095] 1)当VXUi接收到起始令牌(如译码令牌)时,会读取指令并译码。
[0096] 2)根据译码的结果,以及VXU(i-1)传递过来的令牌,来判定哪些令牌是有效并要被使用的。
[0097] 3)VXUC会产生时钟脉冲信号和控制信息并发送给VXUD,VXUD根据时钟脉冲信号和控制信息(也可以结合VXUD自己译码产生的控制信息)调用各个外部计算资源。
[0098] 4)VXUC译码得到的多条指令分别调用不同模块时,VXUC会产生相应的时钟脉冲信号和控制信息给VXUD。
[0099] 5)当单条指令调用多个模块时,VXUC内部的令牌会保证各个模块按照先后顺序执行。
[0100] 这样,在一条译码后的指令信息表示需要调用多个外部计算资源时,可针对多个外部计算资源顺序地产生时钟脉冲信号并按照调用多个外部计算资源的顺序将所产生的时钟脉冲信号先后发送至VXUD模块,这样通过令牌的传递保证操作执行的正确性。
[0101] 本发明实施例的异步指令执行装置可以实现在终端中,例如作为终端的CPU的一部分硬件模块。但本发明实施例对异步指令执行装置的具体实现形式不作限制。
[0102] 图7是本发明一个实施例的异步指令执行方法的流程图。图7的方法可以由异步指令执行装置(例如图2-图6所示的VXU)执行。该异步指令执行装置VXU可包括VXUC模块和n个VXUD模块,n为正整数,n个VXUD模块级联并且分别连接至VXUC模块,异步指令执行装置处理的数据位宽为M,每个VXUD模块的位宽为N,n=M/N。
[0103] 701,VXUC模块对来自VIF的指令进行译码,得到译码后的指令信息。
[0104] 702,VXUC模块根据译码子模块译码后的指令信息,管理令牌在异步指令执行装置和其他异步指令执行装置之间的传递以及令牌在异步指令执行装置内部的传递。
[0105] 703,VXUC模块在译码子模块译码后的指令信息表示需要调用外部计算资源时,产生对应于外部计算资源的时钟脉冲信号,并将时钟脉冲信号和译码后的指令信息中包括的控制信息发送至VXUD模块。
[0106] 704,VXUD模块将时钟脉冲信号和控制信息发送至外部计算资源,以使得外部计算资源根据时钟脉冲信号和控制信息进行数据计算。
[0107] 705,VXUD模块接收外部计算资源进行数据计算的结果。
[0108] 本发明实施例的异步指令执行装置分为VXUC和VXUD两部分,其中VXUD的数目按照数据位宽设置,这样每个VXUD的数据线可以分开走线,从而总线也可以分开走线,使得后端布线更加方便。
[0109] 本发明实施例的方法的各个步骤可对应于上述装置实施例所执行的各个过程,为避免重复,不再详细描述。
[0110] 可选地,作为一个实施例,上述控制信息可包括配置标志信息。在步骤704中,VXUD模块可将配置标志信息发送至外部计算资源,以使得外部计算资源根据配置标志信息进行配置后进行数据计算。
[0111] 可选地,作为另一实施例,VXUD模块可接收VIF对指令进行初步译码后得到的立即数,并将立即数发送至外部计算资源,以使得外部计算资源使用立即数进行数据计算;或者,VXUD模块可接收所述VIF对指令进行初步译码后得到的寄存器地址信息,根据寄存器地址信息从寄存器读取寄存器数据,并将寄存器数据发送至外部计算资源,以使得外部计算资源使用寄存器数据进行数据计算。
[0112] 可选地,作为另一实施例,VXUD模块还可以接收VIF对指令进行初步译码后得到的寄存器读写令牌的信息,并根据寄存器读写令牌的信息,通过读写接口对寄存器进行读写操作。
[0113] 可选地,作为另一实施例,VXUD模块还可以接收VIF对指令进行初步译码后得到的寄存器读写令牌的信息,并根据寄存器读写令牌的信息管理寄存器读写令牌的传递。
[0114] 可选地,作为另一实施例,VXUD模块还可以与其他VXUD模块交换外部计算资源进行数据计算的结果的信息(例如进位信息),然后VXUD模块可根据该VXUD模块接收的数据计算的结果以及从其他VXUD得到的数据计算的结果的信息,进行移位运算和/或选择运算。
[0115] 可选地,作为另一实施例,在步骤702中,VXUC模块可在多条译码后的指令信息表示需要调用同一个外部计算资源时,针对多条译码后的指令信息顺序地产生时钟脉冲信号并将所产生的时钟脉冲信号按照先后顺序发送至VXUD模块。
[0116] 可选地,作为另一实施例,在步骤702中,VXUC模块可在一条译码后的指令信息需要调用多个外部计算资源时,针对多个外部计算资源顺序地产生时钟脉冲信号并按照调用多个外部计算资源的顺序将所产生的时钟脉冲信号先后发送至VXUD模块。
[0117] 本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0118] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0119] 在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0120] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0121] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0122] 所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0123] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈