首页> 中国专利> 用于转换数据类型的转换器、芯片、电子设备及其方法

用于转换数据类型的转换器、芯片、电子设备及其方法

摘要

本公开涉及一种用于数据类型转换的转换器、方法、集成电路芯片和计算装置,其中计算装置可以包括在组合处理装置中,该组合处理装置还可以包括通用互联接口和其他处理装置。所述计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与计算装置和其他处理装置连接,用于计算装置和其他处理装置的数据。本公开的方案能够广泛地应用于各种数据类型转换的应用中。

著录项

  • 公开/公告号CN112711441A

    专利类型发明专利

  • 公开/公告日2021-04-27

    原文格式PDF

  • 申请/专利权人 安徽寒武纪信息科技有限公司;

    申请/专利号CN201911025769.8

  • 发明设计人 不公告发明人;

    申请日2019-10-25

  • 分类号G06F9/30(20060101);

  • 代理机构11804 北京维昊知识产权代理事务所(普通合伙);

  • 代理人李波;孙新国

  • 地址 231283 安徽省合肥市高新区习友路3333号中国(合肥)国际智能语音产业园研发中心楼611-194室

  • 入库时间 2023-06-19 10:46:31

说明书

技术领域

本公开涉及数据处理技术领域,更具体地,涉及数据类型的转换。

背景技术

对于传统的运算单元,在指令(运算单元)实现时一般只有固定精度浮点、整型数的相互转换、功能单一。在人工智能(AI)芯片中,执行的数据类型转换指令数远大于传统的处理单元,且编程人员对于转数功能的需求显著增加:因此更大量的软件计算行为使得通过软件实现数据类型转换的运算效率低、访存开销大、计算功耗高的弱点更加突出,其运算速度会成为整个处理器核的一个性能瓶颈。

同时,传统的通过指令实现的运算单元都是单一功能实现的,如果需要处理器核实现新的数据类型转换功能,需要按照新增的功能,按照乘法原理增加逻辑表达,其可拓展性差:一旦出现新的功能需求,会使芯片中运算单元的面积有倍数的增长,存在大量的重复计算逻辑,影响处理器的整体性能。

例如,当有M种输入数据类型和N种输出数据类型时,通常需要的数据转换路径为M*N条,因此相应的电路设计会相对复杂,功耗较高,而且每当出现一种新的数据类型时,则需要重新设计转换功器,增加了工作量,降低了生产效率。

因此,用于数据类型转换的传统方法在AI芯片应用效果差,且我们无法参考传统的实现方法去实现AI芯片中的运算单元。

发明内容

本公开的一个目的是克服现有技术中数据转换效率低,可扩展性差的缺陷。

根据本公开的第一方面,提供一种用于转换数据类型的转换器,包括:第一转换级,配置为接收第一类型数据以及关于所述第一类型数据和第二类型数据的描述信息,并根据所述描述信息,将所述第一类型数据转换为中间结果;以及第二转换级,配置为将所述中间结果转换为第二类型数据。

根据本公开的第二方面,提供一种芯片,其包括上述的转换器。

根据本公开的第三方面,提供一种电子设备,其包括上述的芯片。

根据本公开的第四方面,提供一种用于转换数据类型的方法,包括:接收第一类型数据以及关于所述第一类型数据和第二类型数据的描述信息,根据所述描述信息,将所述第一类型数据转换为中间结果;以及将所述中间结果转换为第二类型数据。

根据本公开的第五方面,提供一种电子设备,包括:一个或多个处理器;以及存储器,所述存储器中存储有计算机可执行指令,当所述计算机可执行指令由所述一个或多个处理器运行时,使得所述电子设备执行如上所述的方法。

根据本公开的第六方面,提供一种计算机可读存储介质,包括计算机可执行指令,当所述计算机可执行指令由一个或多个处理器运行时,执行如上所述的方法。

本公开所提供的技术方案的至少一个有益效果在于,能够提升AI芯片中数据类型转换的效率,降低运算负担,减少所需的电路面积。

附图说明

通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,并且相同或对应的标号表示相同或对应的部分其中:

图1示出了根据本公开第一方面的用于转换数据类型的转换器。

图2示出了根据本公开另一个方面的用于转换数据类型的方法的流程图。

图3示出了根据本公开的一个实施方式的第一转换器L1的示意性框图。

图4a示出了根据本公开一个实施方式的第一计算单元C1的具体结构以及中间结果的数据结构。

图4b示出了根据本公开另一个实施方式的第一计算单元C1的具体结构以及中间结果的数据结构。

图5a示出了根据本公开一个实施方式的绝对值计算电路C11的示意性框图。

图5b示出了根据本公开一个实施方式的绝对值计算电路C11的示意性框图。

图6示出了根据本公开的一个实施方式的第二转换级L2的示意性框图。

图7a示出了根据本公开一个实施方式的前置输出计算单元P2的示意性框图。

图7b示出了根据本公开另一个实施方式的前置输出计算单元P2的示意性框图。

图8示出了根据本公开的一个实施方式的数据恢复单元R2的结构示意图。

图9a示出了根据本公开一个实施方式的前置输出处理电路R21的示意性框图。

图9b示出了根据本公开另一个实施方式的前置输出处理电路R21的示意性框图。

图10是示出根据本公开实施例的一种组合处理装置的结构图。

图11是示出根据本披露实施例的一种板卡的结构示意图。

具体实施方式

下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。

应当理解,本披露的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。

图1示出了根据本公开第一方面的用于转换数据类型的转换器。图2示出了根据本公开另一个方面的用于转换数据类型的方法的流程图。

如图1所示,该转换器包括:第一转换级L1,配置为接收第一类型数据以及关于所述第一类型数据和第二类型数据的描述信息,并根据所述描述信息,将所述第一类型数据转换为中间结果;以及,第二转换级L2,配置为将中间结果转换为第二类型数据。

如图2所示,本公开的方法可以包括:第一操作S1,接收第一类型数据以及关于所述第一类型数据和第二类型数据的描述信息,根据所述描述信息,将所述第一类型数据转换为中间结果;以及第二操作S2,将所述中间结果转换为第二类型数据。

需要理解的是,上面的表述“第一类型数据”可以是原始的第一类型数据,也可以是经过变换,拼接,拆分后的第一类型数据,换言之,第一类型数据在各个阶段的变形也包含在第一类型数据的范围之内。

在本公开中,在转换数据类型时,可以先转换为中间结果,该中间结果对于所有的数据类型都是适用的。该中间结果可以有效地表示被转换的数据(上文中的第一类型数据),并且可以根据该中间结果转换为所需的任何类型的数据(上文中的第二类型数据)。换言之,该中间结果相对于所有类型的数据而言,具有公共的内容和/或结构,由此可以通过该中间结果转换到其他的数据类型。

将第一类型转换为中间结果,然后再将中间结果转换为第二类型数据所带来的有益效果包括但不限于:在传统的硬件结构中,如果有M种类型的输入数据,而有N种类型的输出数据,则需要为每次转换设计单独的电路,由此电路的复杂度大约为M*N,这将大大增加电路设计的工作量,增加了电路面积,从而进一步引起功耗提升、成本增加等不利影响。而本公开所提供的技术方案在同等数量的数据类型转换中,电路的复杂度仅仅大约为M+N,这能够极大地降低电路设计的复杂度,减小电路的面积,并从而降低电路功耗,节约成本。

上述所述的第一类型数据和第二类型数据的位数可以是多种情形,例如可以是1位、2位、4位、8位、16位、32位等。而在本公开中,所采用的转换器的处理位数(例如寄存器,存储器,总线的位宽)等等可能是其他位数,例如32位,因此,根据本公开的一个实施方式,第一转换级L1进一步配置为确定所接收的第一类型数据的数量,并将所述数量的第一类型数据拼接起来,形成第一拼接数据,所述第一转换级L1根据所述描述信息,将所述第一拼接数据转换为中间结果。

例如,当输入数据是8位,输出数据为8位,而转换器的处理位数(例如寄存器的位宽)为32位时,则一次可以同时接收4个输入数据,即将4个输入数据拼接起来形成32位数据。

而当输入数据为8位,输出数据为16位,而转换器的处理位数为32位时,则一次可以同时接收2个输入数据,即将2个输入数据拼接起来形成32位数据。在此情况下,则可以将两个8位数据扩展为两个16位的数据,然后将此扩展形成的两个16位数据拼接起来。

又例如,当输入数据为16位,输出数据为8位,而转换器的处理位数为32位时,则一次可以同时接收2个输入数据,即将2个输入数据拼接起来形成32位数据。在此情况下,则输出的两个16位数据中包含了两个8位输出数据的信息。

根据本公开的一个实施方式,可以通过以所述转换器的处理位数除以所述第一类型数据和第二类型数据中位数高者的位数来确定所接收的第一类型数据的数量。

以输入两个8位的十六进制数81和82,输出为两个16位的数为例,则一次可以接收两个数据。在本实施例中,十六进制数81和82的二进制表示分别为“1000 0001”和“10000010”,可以将其扩展为两个16位的数,即“xxxx xxxx 1000 0001”和“yyyy yyyy 10000010”。8位数的实际数据放于16位数的低八位,而16位数的高位以零或者其他规定的数来补足(这里以x来表示)。拼接后的数据可以为00008182,二进制表示为“xxxx xxxx yyyyyyyy 1000 0001 1000 0010”。即,32位的拼接数据中,第一个输入数据“81”占据了低8位(0~7),而第二个输入数据“82”占据了中间8位(8~15)。32位的高位(16~31)以x和y来补足,其中x和y根据实际情况来设定,二者可以相同,也可以不同。下文将进行详细解释。

需要理解的是,上述的拼接方式仅仅是一个示例,本领域技术人员可以根据自己的需求来设置所需格式的拼接数据。例如可以将第一个接收的数据放置在32位拼接数据中的低16位,而将第二个接收的数据放置在32位拼接数据中的高16位。仍然是上述十六进制数81和82来举例说明,拼接后的数据形式也可以例如是xxxx xxxx 1000 0001 yyyy yyyy1000 0010,这里,x和y可以相同,也可以不同。

根据本公开的另一个实施方式,可以以预设的第一固定值来进行拼接。例如,该第一固定值可以为2或者其他数目。

通过上述实施方式中所示的拼接操作,可以增加数据的吞吐量,提升处理效率。当然,本领域技术人员可以理解的是,上述的数据拼接并不是必须的,而只是一种优选的方式。例如,当输入数据和输出数据中的至少一者的位数与转换器处理的位数相同时,则不需要拼接;此外,还可以利用其它规定的格式(例如采用标记有效位的方式,即预先规定哪些位是有效位,哪些位是无效位),使得即使输入数据和输出数据中的至少一者的位数与转换器处理的位数不相同时,也无需进行拼接。例如,在输入数据位8位,输出数据为16位,寄存器为32位的情况下,可以将该8位的输入数据直接扩展为32位数据(例如通过在原8位输入数据的特定位上添加0的方式),然后在输出时将该32位数据还原为16位数据。

上面的情况中描述了第一类型数据的位数短于寄存器位数的情形,在另外一种情形下,如果输入数据的位数大于转换器的处理位数,例如输入数据为64位,而转换器的处理位数为32位时,则可以进行如下处理。

一种处理方式可以是截断该64位的数据,留下所需的32位数据,而丢弃其他32位数据,并对留下的32位数据进行处理。此种方式将可能会引起一定的数据丢失和误差。

根据本公开的另一种实施方式,所述第一转换级L1进一步配置为确定所接收的第一类型数据要拆分的数量,并将所述第一类型数据拆分为所述数量的拆分数据,所述第一转换级L1根据所述描述信息,将所述拆分数据转换为中间结果。

在该实施方式中,可以将64位的数据拆分为两个32位的数据,并对该拆分后的两个32位数据进行处理,最后对输出的两个数据进行拼接,从而形成所需的输出数据。

根据本公开的一个实施方式,可以通过如下方式来确定所接收的第一类型数据要拆分的数量:以第一类型数据和第二类型数据中位数高者的位数除以转换器的处理位数。

例如,当输入数据为64位,输出数据为64位,寄存器为32位时,可以将输入数据拆分为两个32位的数据;经过处理之后,在输出端将两个32位的数据重新拼接起来,从而形成64位的输出数据。

又例如,当输入数据为64位,输出数据为16位,寄存器为32位时,可以将输入数据拆分为两个32位的数据,经过处理之后,在输出端从两个32位数据中截取有效数据部分,重新拼接为16位的输出数据。

又例如,当输入数据为16位,输出数据为64位时,可以将16位的输入数据扩展为两个32位的数据,其中一个32位的数据中包含有效信息,而另外一个32位的数据中包含无效信息(例如全0),并在输出时将此两个32位的数据拼接为64位的输出数据。

根据本公开的另一个实施方式,可以以预设的第二固定数值来拆分,例如,可以将该固定数值设置为2或其他数目。

对数据进行拆分和拼接,有利于输入数据和输出数据中时序的对准,避免或减少电路中时序控制部分的额外设计;此外,该实施方式有利于对数据进行并行处理,提高资源利用率。

可以在上述的第一转换级L1和第二转换级L2中增加相应的拆分和拼接功能,该功能可以以软件和/或硬件等方式来实现。

可以看出,本公开不限制输入、输出和转换器(例如寄存器)的位数,通过数据的拆分、拼接等方式,本公开能够处理任何位数的数据。

图3示出了根据本公开的一个实施方式的第一转换器L1的示意性框图。

如图3所示,第一转换级L1包括第一数据解析单元P1和第一运算单元C1。

第一数据解析单元P1配置为根据第一类型数据以及描述信息来生成过渡符号位Tsign、过渡数据位Tdata和过渡指数位Tshift。所述第一运算单元C1配置为根据所述过渡符号位Tsign、过渡数据位Tdata和过渡指数位Tshift,来生成中间结果。

描述信息可以由人工输入,或者可以通过文件或者信号的形式来输入到第一数据解析单元P1中。

根据本公开的一个实施方式,上述的描述信息可以包括:第一描述信息,用于描述第一类型数据的数据类型以及第一类型数据的第一指数位;第二描述信息,用于描述第二类型数据的数据类型以及第二类型数据的第二指数位。

上述第一描述信息和第二描述信息中所描述的数据类型可以是多种,包括但不限于FIX4,FIX8,FIX16,FIX32,UFIX8,UFIX16,UFIX32,FP16,FP32,BFLOAT以及任何其他现有或者自定义的数据类型。需要理解的是,这里仅仅以最高32位为例进行了举例说明,对于64位或更高位,可以包含更多数量的数据类型。

此外,在本实施方式中,指示第一类型数据的移位值的第一指数位以及指示第二类型数据的移位值的第二指数位也可以由第一数据解析单元P1单独地接收,然后由P1来计算第一指数位与第二指数位之间的差值。

或者,根据本公开的另一个实施方式,描述信息可以包括第一类型数据的第一数据类型;第二类型数据的第二数据类型;以及差分指数位,所述差分指数位用于指示第一类型数据的第一指数位与第二类型数据的第二指数位之间的差值。

与上一实施方式中差分指数位由第一数据解析单元P1计算得到而不同的是,在该实施方式中,差分指数位可以直接输入到第一数据解析单元P1中,而无须经过后续计算。

需要说明的是,上文中所述的“差值”除了表明移位的大小之外,还表示移位的方向。本公开所述的差值可以是第一指数位减去第二指数位,也可以是第二指数位减去第一指数位。这对于本领域技术人员而言是清楚地,因此这里将不做赘述。

当第一数据解析单元P1计算得到或者直接接收到差分指数位时,可以根据该差分指数位计算得到上述的过渡指数位Tshift,该过渡指数位Tshift等同于所述差分指数位。

上文中虽然将描述信息和数据解释为两个不同的消息载体,但需要理解的是,在实际中二者可能并不存在明显的界限。例如,当第一类型数据和第二类型数据均为Fix类型时,则可以在单独的描述信息中指明该第一类型数据和第二类型数据的移位值,并根据这两个移位值计算其差分数据位。而当第一类型数据例如为Float类型时,则该Float类型数据本身中就包含着第一移位值,由此P1可以从该第一类型数据中提取到该第一移位值。由此,第一类型数据及其第一描述信息,以及第二类型数据及其描述信息可以是混合在一起的,也可以是分立的。

需要理解的是,这里的术语“等同”表明的是一种实质上的相同,但可以是形式上不同。例如,对于某个8位数0000 0001,当其变换为0000 0000 0000 0001时,其本质上对先前8位数的另外一种表示方式,但可能并不完全相等。此外,需要理解的是,除了位数的变化之外,一个数的补码,移码,二进制,十进制,十六进制等不同形式的表示,也在本文所述的“等同”的范畴内。换言之,只要有效信息未被丢失,任何形式的变化都可以视为等同。

例如,当第一类型数据为Float类型,而第二类型数据为Fix类型时,从该Float类型数据中提取的第二移位值可能是以移码方式来表示的,而描述该Fix类型数据的移位值可能是以原码方式来表示的,此时在计算二者的差值时,需要统一变换成相同的码型再进行差值计算。可以统一变换为移码,可以统一变换成原码,也可以统一变换成补码等其他类型的码型,本发明将不再对码型的变换进行详细描述。

根据本公开的一个实施方式,所述描述信息还包括舍入类型,所述舍入类型包括下列中的至少一种:TO_ZERO,OFF_ZERO,UP,DOWN,ROUNDING_OFF_ZERO,ROUNDING_TO_EVEN,随机舍入。

TO_ZERO表示向零的方向舍入,换言之,表示向绝对值小的方向舍入;

OFF_ZERO表示向远离零的方向舍入,换言之,向绝对值大的方向舍入);

UP表示向正无穷舍入;

DOWN表示向负无穷舍入;

ROUNDING_OFF_ZERO表示四舍五入;

ROUNDING_TO_EVEN表示在四舍五入的基础上,正好一半的值取到偶数。

需要理解的是,上述的舍入类型,仅仅是一些示例,本领域技术人员可以设定各种期望的舍入方式。

图4a示出了根据本公开一个实施方式的第一计算单元C1的具体结构以及中间结果的数据结构。

根据本公开的一个实施方式,可以将所述中间结果分为中间数据位ABS、中间符号位Sign和中间指数位EXP。下面详细介绍如何从过渡指数位Tshift、过渡符号位Tsign以及过渡数据位Tdata来得到上述的中间结果。换言之,可以将所有的输入数据转换为该具有公共结构的中间数据。

如图4a所示,所述第一运算单元C1包括:绝对值计算电路C11,配置为根据所述过渡数据位Tdata来计算中间数据位ABS。

图5a示出了根据本公开一个实施方式的绝对值计算电路C11的示意性框图。

如图5a所示,绝对值计算电路C11包括第二选择器,配置为判断所述过渡数据位Tdata是否小于零;第一补码计算器,配置为如果所述过渡数据位Tdata小于零,则计算所述过渡数据位的补码,作为中间数据位ABS;否则以所述过渡数据位Tdata作为中间数据位ABS。求补码实际是对除符号位之外的其他位求反并且加1。因此第一补码计算器中可以包括第一反相器和第一加法器。而如果该过渡数据位Tdata大于等于零(不为负),则中间数据位ABS等同于过渡数据位Tdata。

图5b示出了根据本公开另一个实施方式的绝对值计算电路C11的示意性框图。

如图5b所示,所述绝对值计算电路C11进一步包括第一选择器和第一规格化器。第一选择器,其接收过渡数据位Tdata,并判断该过渡数据位Tdata的数据类型是第一型还是第二型。

上述的第一型例如可以是Fix类型,第二型例如可以是Float类型。下文以及附图的描述中,将以Fix作为第一型的示例,以Float作为第二型的示例进行描述。需要理解的是,第一型和第二型数据也可以是任何其他适合的数型。

如果该过渡数据位Tdata是Fix类型,则进入第二选择器。在第二选择器中,判断该过渡数据位Tdata是否小于零,如果该过渡数据位Tdata小于零(为负),则在第一补码计算器中对该Tdata求补码,并作为中间数据位ABS。求补码实际是对除符号位之外的其他位求反并且加1。因此第一补码计算器中可以包括第一反相器和第一加法器。而如果该过渡数据位Tdata大于等于零(不为负),则中间数据位ABS等同于过渡数据位Tdata。

如果该过渡数据位Tdata是Float类型,则进入第一规格化器。在该第一规格化器中,对该Tdata进行规格化,规格化的数据作为中间数据位ABS。

规格化是一种对Float类型数进行的操作,Float类型数在IEEE754标准的定义中有规格化数、非规格化数、零、正负无穷和非数几种类型;在这一操作中,可以将所有的规格化数前补1,非规格化数后补0,构成数的实际原码表示结果。该结果比Float类型中的规格化/非规格化表示结果多一位。

进一步如图4a所示,第一运算单元C1还包括指数位计算电路C12,配置为根据所述过渡指数位Tshift来计算中间指数位EXP。根据本公开的一个实施方式,上述的中间指数位(EXP)等同于所述过渡指数位Tshift。

进一步如图4a所示,根据本公开的一个实施方式,符号位计算电路C13可以是直连线。第一运算单元C1还包括符号位计算电路C13,配置为根据所述过渡符号位Tsign来计算中间符号位Sign。需要理解的是,符号并不发生变化,因此可以通过直连线来根据过渡符号位Tsign来计算该中间符号位Sign。

进一步如图4b所示,根据本公开的一个实施方式,中间结果还可以包括中间舍入位STK,为了计算该舍入位STK,该第一计算电路C1还可以进一步包括:舍入位计算电路C14。

根据本公开的一个实施方式,该舍入位计算电路C14可以配置为根据所述中间数据位ABS和中间符号位Sign来计算所述中间舍入位。

根据本公开的另一个实施方式,该舍入位计算电路C14可以配置为根据所述中间数据位ABS、中间指数位EXP和中间符号位Sign来计算所述中间舍入位。

在上面计算中间舍入位STK的两个实施方式中,中间指数位EXP可以使用,也可以不使用,例如当中间舍入位STK采用数组的方式时(例如所有的舍入内容均需要保留),则可以不采用中间指数位EXP;而如果中间舍入位特别需要指明某一位或者几位时,则可以采用中间指数位EXP。

根据本公开的一个实施方式,所述舍入位计算电路C14可以通过与或逻辑来实现。例如,四舍五入的STK=ABS,以及向正无穷舍入的STK[n]=|ABS[n:x1]&&~SIGN等等。

如图4a所示,通过上述的转换器和方法,所有类型的数据均可以被转换为具有相同内容的中间结果。即,根据本公开的一个实施方式,该中间结果可以包括中间符号位Sign,中间指数位EXP和中间数据位ABS。

如图4b所示,根据本公开的另一个实施方式,该中间结果可以包括中间符号位Sign,中间指数位EXP、中间数据位ABS和中间舍入位STK。

图4a和图4b中的舍入位计算电路C14也可以设置在第二转换级L2中,即第二转换级L2可以接收包括中间符号位Sign,中间指数位EXP和中间数据位ABS的中间结果,并根据该中间结果来计算中间舍入位STK。

更进一步地,根据本公开的另外一个实施方式,舍入位计算电路也可以是单独的模块,其可以独立于第一转换级L1和第二转换级L2而存在。

尽管上面结合图4a、图4b、图5a和图5b进行了描述,但本领域技术人员可以理解的是,这些图中的电路,单元等组件可以单独地存在,可以结合在一起存在,可以与其他转换级结合起来存在。

可以通过第二转换级L2将该中间结果转换为所需的数据类型。

图6示出了根据本公开的一个实施方式的第二转换级L2的示意性框图。

如图6所示,第二转换级L2可以包括前置输出计算单元P2和数据恢复单元R2,所述前置输出计算单元P2配置为根据所述中间数据位ABS、中间符号位Sign、中间指数位EXP和中间舍入位STK来计算前置输出数据位Pdata和前置输出符号位Psign。所述数据恢复单元R2配置为根据所述前置输出数据位Pdata和前置输出符号位Psign来生成第二类型数据。

需要理解的是,尽管图6中未示出第二转化级L2包括舍入位计算电路C14,但图6中的中间舍入位STK可以来自于第一转换级L1,也可以来自于L2本身所包含的舍入位计算电路C14。此外,这里的前置输出计算单元P2接收了四个输入,分别为ABS、Sign、EXP和STK,但需要理解的是,如上所述,STK的计算可以在第一转换级L1中完成,也可以在第二转换级L2中完成,或者,还可以集成在该前置输出计算单元P2中。这里示出的四个输入,仅仅是为了方便于理解和描述,而不在于对本公开的内容进行任何的限制。

图7a示出了根据本公开一个实施方式的前置输出计算单元P2的示意性框图。

如图7a所示,前置输出计算单元P2包括移位运算器P21和加法器P22,配置为生成临时输出数据位ABS’和前置输出符号位Psign。移位运算器P21配置为将中间数据位ABS移动中间指数位EXP,得到移位结果;加法器接P22收移位运算器P21的移位结果以及中间舍入位STK,来生成临时数据位ABS’;前置输出符号位Psign等同于该中间符号位SIGN。

首先,在前置输出计算单元P2中,将接收到的中间数据位ABS进行移位,移位的量和方向由中间指数位EXP来确定。所得到的移位结果输入到接下来的加法器中。

加法器的输出为ABS’=移位运算器的输出结果+STK[-EXP-1]。而如果STK超出范围,则STK取零。需要解释的是,STK是一个数组,比如一个32位数组STK[31:0]。这里面STK[0]就是最低位的元素,STK[31]是最高位的元素这样。我们计算-EXP-1,如果是在0-31之间,就取对应的值,小于0则取0,大于0则进行特殊处理(根据STK类型的不同取0或31)。

在特定情况下,例如ABS’未溢出的情况下,则该ABS’可以直接作为前置输出计算单元P2的输出。

图7b示出了根据本公开的另一个实施方式的前置输出计算单元P2的示意性框图。

如图7b所示,前置输出计算单元P2进一步包括选择器P23,在该选择器P23中判断所生成的ABS’是否溢出,如果溢出,则对ABS’进行饱和处理,如果未溢出,则Pdata=ABS’。

饱和处理是一种在各种运算单元中都有的一种特殊情况处理。在运算包括转数的过程中,会出现输入数据得到的结果与输出数据的取值范围不同的情况:如果应该得到的结果的绝对值比输出数据表示范围的绝对值上限还要大,则出现上溢出;如果应该得到的结果的绝对值比输出数据表示范围的绝对值下限还要小,则出现下溢出;溢出情况一般有以下几种处理办法:取饱和值、高位截断、取无穷或特殊值。本公开中可以采用任何方式来进行饱和处理。

此外,SIGN通过直连线输出为Psign,即符号不发生变化。

此外,在图7a和图7b中未示出前置输出指数位Pshift,在所有数据移位已经完成的情况下,Pshift=0。

图7a和图7b中的输出数据,在某些特定情况下(例如输入输出均为Fix类型,符号均为正),例如临时输出数据位ABS’、前置输出数据位Pdata以及前置输出符号位Psign可以直接成为第二输出数据,而无需进行进一步的处理。

图7a和图7b示出了本公开前置输出计算单元P2的另一个实施方式,在图7a和图7b中,所输出的Pdata,Psign可以输出到外部以进行进一步处理。

图8示出了根据本公开的一个实施方式的数据恢复单元R2的结构示意图。

如图8所示,该数据恢复单元R2用于根据输出的前置输出数据Pdata和前置输出符号PSign来得到第二输出数据。

如图8所示,数据恢复单元R2可以包括前置输出处理电路R21,优选地,还可以包括数据组装电路R22。数据组装和上文中介绍的数据拼接可以是一个逆操作,将拼接的数据恢复成为所需的第二类型数据,本领域技术人员可以根据实际的数据类型来确定是否需要增加该组装电路。例如,对于未拼接的数据,则可以不需要该数据组装电路R22,因此该数据组装电路R22也只是优选而不是必须的。

例如,输入为32位的Float类型数,而输出为32位的Fix类型数,此时在输入的时候并未发生拼接或者拆分,因此从长度上来讲,并不需要数据组装电路R22。

如图8所示,数据恢复单元R2中的前置输出处理电路R21接收图7a中的临时输出数据位ABS’和前置示出符号位Psign,或者接收图7b中的前置输出数据位Pdata和前置输出符号位Psign,来得到输出数据位表示Data_out。

对于特定数据类型的数据,例如非负数的Fix型数据,输出数据位表示等同于前置输出数据Pdata,而无需进行特殊的变换或处理。

考虑到数据类型中还存在例如Float等其他数据类型,本公开中的前置输出处理电路R21进一步配置为生成浮点数小数点位表示SHIFT_FP。

进一步如图8所示,数据组装电路R22根据输出数据位表示Data_out、浮点数小数点位数表示SHIFT_FP以及前置输出符号位Psign来得到最终的第二类型数据。需要理解的是,在图8中,浮点数小数点位数表示SHIFT_FP以虚线示出,表明该SHIFT_FP在特定情况下可能并不存在,在此情况下,数据组装电路R22配置为根据数据输出位表示Data_out和前置输出符号位Psign来得到所述第二类型数据。

图9a示出了根据本公开一个实施方式的前置输出处理电路R21的示意性框图。

如图9a所示,本公开的前置输出处理电路R21包括:第四选择器和第二补码计算器。

在图9a中,在第四选择器中接收该Pdata,并且接收前置输出符号位Psign。判断该PSign是负数还是非负数,即判断Psign等于1还是等于0。

如果Psign=1,则进入第二补码计算器,该第二补码计算器包括第二反相器和第二加法器,该第二反相器先对符号位之外的所有位求反,然后第二加法器再加1。接下来,第二补码计算器输出结果作为输出数据位表示Data_out。

如果Psign=0,则直接输出该Pdata作为输出数据位表示Data_out。

考虑到数据存在多种类型,因此可以事先对前置输出数据位Pdata进行判断,以确定后续如何进行进一步处理。

图9b示出了根据本公开的另一个实施方式的前置输出处理电路R21的示意性框图。

如图9b所示,所述前置输出处理电路R21进一步包括:第三选择器、第二规格化器以及浮点数小数点确定器。

其中,第三选择器接收所述前置输出数据位Pdata,判断该前置输出数据位Pdata的数据类型是Fix还是Float,如果前置输出数据位Pdata的数据类型是Fix,则将所述前置输出数据位Pdata发送到第四选择器,如果所述前置输出数据位Pdata的数据类型是Float,则将所述前置输出数据位Pdata发送到第二规格化器。

第二规格化器可以将所述前置输出数据位Pdata进行规格化,并输出为数据输出位表示Data_out。

在规格化数的定义中,是通过简单的大小比较进行规格化与非规格化区分的。绝对值大于可表示的绝对值最大值(正负饱和值),无法表示,上溢出并做饱和处理;绝对值小于饱和值但是大于规格化阈值,进行规格化操作;绝对值小于规格化阈值但是大于可表示最小值,进行非规格化操作;小于可表示最小值,下溢出并做饱和处理(取0或可表示最小值或特殊值)。在第二转换级L2中的规格化就是去掉首位的1,非规格化就是右移一位,和之前第一转换级L1中的规格化操作属于互逆操作。

浮点数小数点位置确定器可以根据所述第二规格化器的输出来确定浮点数小数点位数表示SHIFT_FP。

需要指出的是,上文中的各种阶段的数据,在各个阶段中可以保持位数的一致。例如,如果第一类型数据被拼接起来(例如两个16位的数据被拼接为一个32位的数据),那么过渡数据位Tdata也是两个拼接起来的数据。类似地,中间结果(例如Sign,ABS,EXP,STK),前置输出数据(例如前置输出数据位Pdata,前置输出符号位Psign),输出数据位表示Data_out以及浮点数小数点位数表示SHIFT_FP均可以是两个拼接起来的数据。拼接的形式可以根据用户的需求来设定。

对于数据组装电路R22,可能存在多种情况。

例如,对于一个32位的转换器而言,如果输入为16位的Fix类型数,而输出为32位的Fix类型数,则可以简单地通过在高位添加零的方式将输入的16位转换为32位数,则最终的输出可以直接为32位数,并不需要进行任何的数据组装等。

又例如,对于一个32位的转换器而言,如果输入为32位的Fix类型数,而输出为16位的Fix类型数,则在第一转换级中正常地对输入进行转化,而经过转换后得到数据可以通过截去高位的16位数来得到最终的16位Fix类型数。

可以看出,上述的数据组装电路R22在某些情况下可以不发挥作用,由此对于本公开并不是必须的。

此外,由于前置输出处理电路R21输出的输出数据位表示Data_out以及浮点数小数点位数表示SHIFT_FP可能是多个数据拼接在一起的,因此可以采用该数据组装电路R22将数据转变或组装为最终所需的数据形式,例如可以将拼接在一起的数据进行拆分,可以将数据的各个部分(例如有效数据部分和符号部分)进行组装。

举例而言,Data_out的数据可能是{0000 0000 0000 0000 0101 0011 00011010},而数据的符号位{0001},此时需要输出的数为Fix8,那么数据组装电路R22可以从上面的数据中提取出两个最终的第二类型数据,分别为{0101 0011}和{0001 1010},数据的符号分别为0和1。由此,数组组装电路可以从Data_out中提取出最终的数据。

本公开的第一转换级L1还可以接收约束信息,该约束信息可用于指示该转换器是否支持特定标准,和/或是否支持编译优化。特定标准可以是任何适合本公开的已知或未知的标准,例如IEEE754;编译优化例如可以是对编译器行为-o0,-o1的支持等。

需要理解的是,上面仅仅是针对特定实例进行了描述,这些实例仅仅是为了方便说明而不对本公开的保护范围形成任何限制。本公开的第一类型数据和第二类型数据的数据类型,以及约束信息的内容,可以进行任何扩展,任何已有的或者未来新开发的数据类型,均可以以本公开的技术方案来实施。

在上文中,中间数据经过第二转换级L2时,可能存在多种状态,例如图7a中加法器的输出ABS’,图7b中选择器的输出Pdata,图8、图9a和图9b中前置输出处理电路的输出Data_out等,这些数据(可选地,加上其他辅助数据)均可以等同于第二类型数据。例如,ABS’可以等同于第二类型数据,ABS’+Pdata也可以等同于第二类型数据;类似地,Pdata可以等同于第二类型数据,Pdata+Psign也可以等同于第二类型数据,二者的区别仅在于符号位;又例如,Data_out可以等同于第二类型数据,Data_out+Shift_FP也可以等同于第二类型数据。需要理解的是,这些不同阶段的数据虽然以不同的符号来表示,但对于某些数据而言可能是相同或等同的数据,换言之,本文中所称的“第二类型数据”可能是上面中任意一个数据,只是在各个图中表示的方式不同而已。例如,当输入数为Fix16类型,为正数,并且被扩展为一个32位数,输出为Fix32时,则Pdata在经过第四选择器(如图9a所示)后,被分配为Data_out直接输出。Data_out的数据本身即符合Fix32的格式,因此也可以不做进一步处理,而直接输出为第二类型数据。

下面将结合具体的示例来解释上述的各种单元、电路以及部件。

实例1

实例1给出了一个Fix8转Float16的实例。

设输入数为81和82,数据类型为fix8,输出的数据类型为Float16,则将两个数拼接的16进制数为DATA=32’h 00008182(0000 0000 0000 0000 1000 0001 1000 0010),指数位Shift为9位,例如-1(1 1111 1111),舍入方式为四舍五入。其中,在上面的表述中32’表示32位,h表示16进制。

如图1-图3所示,通过拼接之后,形成32位数,即经过第一数据解析单元P1之后的输出为:

过渡数据位Tdata为32’h ff81 ff82。

拼接之后的shift,即过渡指数位Tshifit为-1(1 1111 1111),与原始输入等同。

所提取的Sign为0011,其中,只有两个数有效(即11,分别为82和81的符号),无效位置0;有效数是两个负数,则值为1。即过渡符号位Tsign为0011。

需要理解的是,上面的描述是以拼接后的数据为对象进行描述的,如果以单一数据作为对象(例如81)并且以实际值进行描述(未拼接之前的数据),则过渡数据位为81,过渡指数位为-1,而过渡符号位为1。

如图3所示,经过计算之后,即经过第一运算单元C1之后,可以得到:

ABS=32’h 007f 007e,输入为Fix类型,经过选择器取补码。

EXP=-1(1 1111 1111),与过渡指数位等同。

SIGN=0011(直接相等)。

STK=32’h 007f 007e(四舍五入时,STK=ABS)。

接下来,中间结果ABS、EXP、SIGN和STK输入到第二转换级L2(如图6-图9b所示):

通过移位运算器P21,由于EXP=-1,所以右移一位,得到移位结果=32’h 003f003f;

通过加法器P22,此次加法加的例如是STK[-EXP-1]=STK[0],在两个数时对应为STK[16]=1,STK[0]=0:加法器输出的高16位[31:16]=16’h 003f+STK[16]=16’h 0040;加法器输出的低16位[15:0]=16’h 003f+STK[0]=16’h 003f。因此,加法器输出=32’h0040 003f。

通过选择器P23,显然加法器P22输出比较小,没有溢出,不报例外。且Pdata=加法器输出=32’h 0040 003f=0000 0000 0100 0000 0000 0000 0011 1111。

接下来,数据进入前置输出处理电路R21,如图8所示。

输出类型为Float16,故对Pdata取规格化,DATA_out=32’h 0000 001f

SHIFT_FP={6-15,5-15}={-9,-10}={10111,10110}

接下来,数据通过数据组装电路R22,如图8所示。

将SIGN,SHIFT_FP DATA_out组装为2个Float 16类型的数据。

第二类型数据={1,10111,0000000000,1,10110,0000011111}

=32’h dc00 d81f

实例2

实例2给出了一个Float16转Fix8,SHIFT=-3的实例。

设输入DATA=32’h c001 4401(1100 0000 0000 0001 0100 0100 0000 0001),

SHIFT=-3

舍入方式为向正无穷舍入

如图1-图3所示,

Tdata=32’h 0401 0401(0000 0100 0000 0001 0000 0100 0000 0001)(只有两个有效数每个有11位,其余位数做符号位拓展,由于fp本身原码表示,符号位补0)

Tshifit={16,17}(10000 10001)输入类型为Float,取中间若干位直接相等。

Tsign=0010(只有两个数有效,无效位置0;有效数是一个负数一个正数,所以设为10)

如图3所示,经过计算之后,即经过第一运算单元C1之后,可以得到

ABS=32’h 0401 0401,输入为Float,直接原码输出ABS=Tdata。

EXP={16-15-(3),17–15–(3)}={-2,-1}(输入为Float类型,先取移码-15,再与输出shift作差)={11110 11111}

SIGN=0010(直接相等)

STK=32’h 0000ffff。向正无穷舍入时,本例子中数据表示位数为ABS[31:16],ABS[15:0]),则STK[n]=|ABS[n:x1]&&~SIGN,其中x2>=n>=x1)。对于一个32位数而言的高16位而言,x2=31,x1=16;而对于其低16位,x2=15,x1=0。

接下来,中间结果ABS、EXP、SIGN和STK输入到第二转换级L2(如图6-图9b所示)

通过移位运算器P21,由于EXP={-2,-1},分别右移2,1位,得到移位结果=32’h0008 0010

通过加法器P22,此次加法加的例如是STK[-EXP-1]=STK[2],STK[1],在两个数时对应为STK[18]=0,STK[1]=1:加法器输出的高16位[31:16]=16’h 0008+STK[18]=16’h0008;加法器输出的低16位[15:0]=16’h 0010+STK[1]=16’h 0011。因此,加法器输出=32’h 0008 0011。

通过选择器P23,显然加法器输出比较小,没有溢出,不报例外。且Pdata=加法器输出=32’h 0008 0011=0000 0000 0000 1000 0000 0000 0001 0001。

接下来,数据进入前置输出处理电路R21,如图8所示。

输出类型为Fix,故对Pdata取补码表示,DATA_out=32’h fff8 0011

接下来,数据通过数据组装电路R22,如图8所示。

将得到的DATA_out转化为2个Fix8类型的数据,置于低位并将高16位无效数置零。

得到第二类型数据=32’h 0000 f811。

本公开还基于以上设备,提供了一种方法,如图2所示,公开中方法的其他操作和步骤出于简化的目的未在附图中示出。本公开的方法的操作可以基于本公开所记载的具体设备、单元和电路,但也可以基于其他的软件、硬件、固件等,而不局限于上述的具体结构。

根据本公开的另一个方面,还提供一种电子设备,包括:一个或多个处理器;以及存储器,所述存储器中存储有计算机可执行指令,当所述计算机可执行指令由所述一个或多个处理器运行时,使得所述电子设备执行如上所述的方法。

根据本公开的又一个方面,还提供一种计算机可读存储介质,包括计算机可执行指令,当所述计算机可执行指令由一个或多个处理器运行时,执行如上所述的方法。

在传统的实际计算中,数据类型转换工作出现的的转换类型少,约束少,绝大多数都可以用简单的软件行为和指令在较少时钟周期内完成,更重要的是数据类型转换指令出现的频率非常低。

而在AI芯片中,由于精度的不同要求,在每一步骤的计算中都很可能出现数据类型转换的需求,而一旦出现,也不仅仅是少量数的计算,而是非常密集的大规模计算,其数据组织非常规整。如果使用传统的数据类型转换方式,则大规模密集计算会产生较大的访存延时。由于数据类型转换指令出现频率较高,此部分瓶颈会影响处理器核的整体计算性能。

此外,对于简单堆积转数指令会使得转数模块出现大量逻辑冗余,造成局部面积过大,布线过于密集,影响处理器的局部性能。下面举一个例子说明逻辑冗余的问题:在Fix4转fp16类型的数据类型转换过程中,需要将Fix4输入转为绝对值形式,依据此绝对值形式计算舍入位,并在数据转换的最后阶段将相同数值数据由定点表示,转化为normal或denormal形式的浮点数10位尾数表示,并最终由符号位、指数、尾数,完成输出数的拼接。事实上,在Fix4转fp16的过程中,也要有完全相同的前半部分逻辑:将Fix4输入转为绝对值形式,依据此绝对值形式计算舍入位;在Fix8转fp16时,也会有完全相同的后半部分逻辑:相同数值数据由定点表示,转化为normal或denormal形式的浮点数10位尾数表示,并最终由符号位、指数、尾数,完成输出数的拼接。如果简单扩充指令集,会出现大量的重复逻辑重复计算的硬件操作(如果用编译器行为软件控制该部分逻辑的计算,那么该部分冗余计算并没有消失,而是在软件实现中进行了重复计算),会影响处理器性能。

本公开的这种中间结果的结构设计的主要目的是减少重复的计算逻辑,相比软件实现减少访存延时开销,同时具备更好的可拓展性和可移植性。例如,只要获得能够表示任何数据类型的中间结果,则可以对该中间结果进行灵活的处理,而不是必须采用本公开中所记载的具体电路和结构。本公开记载的内容也很容易地移植到其他的处理单元,例如传统的CPU和GPU中。

在本披露的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

依据以下条款可更好地理解前述内容:

条款A1.一种用于转换数据类型的转换器,包括:

第一转换级(L1),配置为接收第一类型数据以及关于所述第一类型数据和第二类型数据的描述信息,并根据所述描述信息,将所述第一类型数据转换为中间结果;以及

第二转换级(L2),配置为将所述中间结果转换为第二类型数据。

条款A2.根据条款A1所述的转换器,其中,所述第一转换级(L1)包括第一数据解析单元(P1)和第一运算单元(C1),

所述第一数据解析单元(P1)配置为根据所述第一类型数据以及所述描述信息来生成过渡符号位(Tsign)、过渡数据位(Tdata)和过渡指数位(Tshift);

所述第一运算单元(C1)配置为根据所述过渡符号位(Tsign)、过渡数据位(Tdata)和过渡指数位(Tshift),来生成中间结果。

条款A3.根据条款A1或A2所述的转换器,其中,所述中间结果包括中间数据位(ABS)、中间符号位(Sign)和中间指数位(EXP),所述第一运算单元(C1)包括:

绝对值计算电路(C11),配置为根据所述过渡数据位(Tdata)来计算中间数据位(ABS);

指数位计算电路(C12),配置为根据所述过渡指数位(Tshift)来计算所述中间指数位(EXP);

符号位计算电路(C13),配置为根据所述过渡符号位(Tsign)来计算所述中间符号位(Sign)。

条款A4.根据条款A1-A3中任意一项所述的转换器,其中,所述中间结果进一步包括中间舍入位(STK),所述第一运算单元(C1)进一步包括:舍入位计算电路(C14),配置为根据所述中间数据位(ABS)、中间指数位(EXP)和中间符号位(Sign)来计算所述中间舍入位(STK)。

条款A5,根据权利要求3所述的转换器,其中,所述中间结果进一步包括中间舍入位(STK),所述第一运算单元(C1)进一步包括:

舍入位计算电路(C14),配置为根据所述中间数据位(ABS)和中间符号位(Sign)来计算所述中间舍入位(STK)

条款A6.根据条款A1-A5中任意一项所述的转换器,其中,所述绝对值计算电路(C11)包括:

第二选择器,配置为判断所述过渡数据位(Tdata)是否小于零;

第一补码计算器,配置为如果所述过渡数据位(Tdata)小于零,则计算所述过渡数据位的补码,作为中间数据位(ABS);否则

以所述过渡数据位Tdata作为中间数据位(ABS)。

条款A7.根据条款A1-A6中任意一项所述的转换器,其中,所述绝对值计算电路(C11)进一步包括第一选择器和第一规格化器,

所述第一选择器配置为判断所述过渡数据位(Tdata)的数据类型是第一型还是第二型;

如果所述过渡数据位(Tdata)的数据类型是第一型,则选择所述第二选择器进行处理;

如果所述过渡数据位(Tdata)的数据类型是第二型,则选择所述第一规格化器进行处理;

所述第一规格化器配置为当过渡数据位(Tdata)的数据类型为第二型时,将所述过渡数据位(Tdata)进行规格化,以作为中间数据位(ABS)。

条款A8.根据条款A1-A7中任意一项所述的转换器,其中,所述指数位计算电路(C12)的输出中间指数位(EXP)等同于所述过渡指数位(Tshift)。

条款A9.根据条款A1-A8中任意一项所述的转换器,其中,

所述符号位计算电路(C13)为直连线。

条款A10.根据条款A1-A9中任意一项所述的转换器,其中,所述第一转换级(L1)进一步配置为确定所接收的第一类型数据的数量,并将所述数量的第一类型数据拼接起来,形成第一拼接数据,所述第一转换级(L1)根据所述描述信息,将所述第一拼接数据转换为中间结果。

条款A11.根据条款A1-A10中任意一项所述的转换器其中,通过如下方式来确定所接收的第一类型数据的数量:

以预设的第一固定数值;或者

以所述转换器的处理位数除以所述第一类型数据和第二类型数据中位数高者的位数。

条款A12.根据条款A1-A11中任意一项所述的转换器,其中,所述第一转换级(L1)进一步配置为确定所接收的第一类型数据要拆分的数量,并将所述第一类型数据拆分为所述数量的拆分数据,所述第一转换级(L1)根据所述描述信息,将所述拆分数据转换为中间结果。

条款A13.根据条款A1-A12中任意一项所述的转换器,其中,通过如下方式来确定所接收的第一类型数据要拆分的数量:

以预设的第二固定数值;或者

以所述第一类型数据和第二类型数据中位数高者的位数除以所述转换器的处理位数。

条款A14.根据条款A1-A13中任意一项所述的转换器,其中,所述描述信息包括:

第一描述信息,用于描述第一类型数据的数据类型以及第一类型数据的第一指数位;

第二描述信息,用于描述第二类型数据的数据类型以及第二类型数据的第二指数位;

所述过渡指数位(Tshift)等同于所述第一指数位和所述第二指数位之间的差值。

条款A15.根据条款A1-A14中任意一项所述的转换器,其中,所述描述信息包括:

第一类型数据的第一数据类型;

第二类型数据的第二数据类型;以及

差分指数位,所述差分指数位用于指示第一类型数据的第一指数位与第二类型数据的第二指数位之间的差值;

所述过渡指数位(Tshift)等同于所述差分指数位。

条款A16.根据条款A1-A15中任意一项所述的转换器,其中,所述描述信息还包括舍入类型,所述舍入类型包括下列中的至少一种:TO_ZERO,OFF_ZERO,UP,DOWN,ROUNDING_OFF_ZERO,ROUNDING_TO_EVEN,随机舍入。

条款A17.根据条款A1-A16中任意一项所述的转换器,其中,所述第二转换级(L2)包括舍入位计算电路(C14),配置为根据所述中间数据位(ABS)和中间符号位(Sign)来计算所述中间舍入位(STK)。

条款A18.根据条款A1-A17中任意一项所述的转换器,其中,所述第二转换级(L2)包括舍入位计算电路(C14),配置为根据所述中间数据位(ABS)、中间指数位(EXP)和中间符号位(Sign)来计算所述中间舍入位(STK)。

条款A19.根据条款A1-A18中任意一项所述的转换器,其中,所述第二转换级(L2)配置为根据所述中间数据位(ABS)、中间符号位(Sign)、中间指数位(EXP)和中间舍入位(STK)来生成第二类型数据。

条款A20.根据条款A1-A19中任意一项所述的转换器,其中,所述舍入位计算电路(C14)通过与或逻辑来实现。

条款A21.根据条款A1-A20中任意一项所述的转换器,其中,所述第二转换级(L2)包括:前置输出计算单元(P2)和数据恢复单元(R2),所述前置输出计算单元(P2)配置为根据所述中间数据位(ABS)、中间符号位(Sign)、中间指数位(EXP)和中间舍入位(STK)来计算前置输出数据位(Pdata)和前置输出符号位(Psign);

所述数据恢复单元(R2)配置为根据所述前置输出数据位(Pdata)和前置输出符号位(Psign)来生成第二类型数据。

条款A22.根据条款A1-A21中任意一项所述的转换器,其中,所述前置输出计算单元(P2)包括:移位运算器(P21)和加法器(P22),配置为生成临时输出数据位(ABS’)和前置输出符号位(Psign),其中

所述移位运算器(P21)配置为将所述中间数据位(ABS)移动中间指数位(EXP),得到移位结果;

所述加法器(P22)配置为根据所述移位结果和所述中间舍入位(STK)来生成临时数据位(ABS’);

所述前置输出符号位(Psign)与所述中间符号位等同。

条款A23.根据条款A1-A22中任意一项所述的转换器,所述前置输出计算单元(P2)进一步包括选择器(P23),所述选择器(P23)配置为检测所述临时数据位(ABS’)是否大于饱和值,

如果大于,则对所述临时数据位(ABS’)进行饱和处理,从而得到所述前置输出数据位(Pdata);

如果不大于,则将所述临时数据位(ABS’)输出为前置输出数据位(Pdata)。

条款A24.根据条款A1-A23中任意一项所述的转换器,其中,所述数据恢复单元(R2)包括前置输出处理电路(R21)和数据组装电路(R22):

所述前置输出处理电路(R21)配置为接收所述前置输出数据位(Pdata)和所述前置输出符号位(Psign),以生成输出数据位表示(Data_out);

所述数据组装电路(R22)配置为根据所述输出数据位表示(Data_out)和所述前置输出符号位(Psign)来生成第二类型数据。

条款A25.根据条款A1-A24中任意一项所述的转换器,其中,所述前置输出处理电路(R21)进一步配置为生成浮点数小数点位表示(SHIFT_FP),所述数据组装电路(R22)配置为根据所述数据输出位表示(Data_out),浮点数小数点位数表示(Shift_FP)和前置输出符号位(Psign)来生成所述第二类型数据。

条款A26.根据条款A1-A25中任意一项所述的转换器,其中,所述前置输出处理电路(R21)包括:第四选择器和第二补码计算器,

所述第四选择器配置为接收所述前置输出数据位(Pdata)和所述前置输出符号位(Psign),如果所述前置输出符号位(Psign)为负数,则将所述前置输出数据位输出到第二补码计算器,如果所述前置输出符号位(Psign)为非负数,则将所述前置输出数据位输出为所述数据输出位表示(Data_out);

所述第二补码计算器配置为对所述前置输出数据位(Pdata)求补码。

条款A27.根据条款A1-A25中任意一项所述的转换器,其中,所述前置输出处理电路(R21)进一步包括:第三选择器、第二规格化器以及浮点数小数点确定器,其中

所述第三选择器配置为接收所述前置输出数据位(Pdata),判断该前置输出数据位(Pdata)的数据类型是第一型还是第二型,如果所述前置输出数据位(Pdata)的数据类型是第一型,则将所述前置输出数据位(Pdata)发送到所述第四选择器,如果所述前置输出数据位(Pdata)的数据类型是第二型,则将所述前置输出数据位(Pdata)发送到第二规格化器;

所述第二规格化器配置为将所述前置输出数据位(Pdata)进行规格化,并输出为数据输出位表示(Data_out);

所述浮点数小数点位置确定器配置为根据所述第二规格化器的输出来确定浮点数小数点位数表示(SHIFT_FP)。

条款A28.根据条款A1-A27中任意一项所述的转换器,所述第一转换级(L1)进一步配置为接收约束信息,所述约束信息用于指示是否支持特定标准,和/或是否支持编译优化。

条款A29.根据条款A1-A28中任意一项所述的转换器,其中,第一类型数据和第二类型数据的数据类型是可扩展的。

条款A30.一种芯片,包括如条款A1-A29中任意一项所述的转换器。

条款A31.一种计算装置,包括如条款A1-A29中任意一项所述的转换器或者如条款A30所述的芯片。

条款A32.一种用于转换数据类型的方法,包括:

接收第一类型数据以及关于所述第一类型数据和第二类型数据的描述信息,并根据所述描述信息,将所述第一类型数据转换为中间结果;以及

将所述中间结果转换为第二类型数据。

条款A33.根据条款A32所述的方法,其中,将所述第一类型数据转换为中间结果包括:

根据所述第一类型数据以及所述描述信息来生成过渡符号位(Tsign)、过渡数据位(Tdata)和过渡指数位(Tshift);

根据所述过渡符号位(Tsign)、过渡数据位(Tdata)和过渡指数位(Tshift),来生成中间结果。

条款A34.根据条款A32或A33所述的方法,其中,所述中间结果包括中间数据位(ABS)、中间符号位(Sign)和中间指数位(EXP),根据所述过渡符号位(Tsign)、过渡数据位(Tdata)和过渡指数位(Tshift),来生成中间结果包括:

根据所述过渡数据位(Tdata)来计算中间数据位(ABS);

根据所述过渡指数位(Tshift)来计算所述中间指数位(EXP);

根据所述过渡符号位(Tsign)来计算所述中间符号位(Sign)。

条款A35.根据条款A32-A34中任意一项所述的方法,其中,所述中间结果进一步包括中间舍入位(STK),根据所述过渡符号位(Tsign)和过渡指数位(Tshift)来生成中间结果进一步包括:

根据所述中间数据位(ABS)、中间指数位(EXP)和中间符号位(Sign)来计算所述中间舍入位(STK)。

条款A36.根据条款A32-A35中任意一项所述的方法,其中,所述中间结果进一步包括中间舍入位(STK),根据所述过渡符号位(Tsign)、过渡数据位(Tdata)和过渡指数位(Tshift)来生成中间结果进一步包括:

根据所述中间数据位(ABS)、中间指数位(EXP)和中间符号位(Sign)来计算所述中间舍入位(STK)。

条款A37.根据条款A32-A36中任意一项所述的方法,其中,根据所述过渡数据位(Tdata)来计算中间数据位(ABS)包括:

判断所述过渡数据位(Tdata)是否小于零;

如果所述过渡数据位(Tdata)小于零,则计算所述过渡数据位的补码,作为中间数据位(ABS);否则以所述过渡数据位Tdata作为中间数据位(ABS)。

条款A38.根据条款A32-A37中任意一项所述的方法,其中,根据所述过渡数据位(Tdata)来计算中间数据位(ABS)进一步包括:

判断所述过渡数据位(Tdata)的数据类型是第一型还是第二型,

如果所述过渡数据位(Tdata)的数据类型是第一型,则

判断所述过渡数据位(Tdata)是否小于零;

如果所述过渡数据位(Tdata)小于零,则计算所述过渡数据位的补码,作为中间数据位(ABS);否则以所述过渡数据位Tdata作为中间数据位(ABS);

如果所述过渡数据位(Tdata)的数据类型是第二型,则

将所述过渡数据位(Tdata)进行规格化,以作为中间数据位(ABS)。

条款A39.根据条款A32-A38中任意一项所述的方法,其中,所述中间指数位(EXP)等同于所述过渡指数位(Tshift)。

条款A40.根据条款A32-A39中任意一项所述的方法,其中,计算所述中间舍入位(STK)通过与或逻辑来实现。

条款A41.根据条款A32-A40中任意一项所述的方法,接收第一类型数据以及关于所述第一类型数据和第二类型数据的描述信息包括:

确定所接收的第一类型数据的数量,并将所述数量的第一类型数据拼接起来,形成第一拼接数据,所述第一拼接数据被转换为中间结果。

条款A42.根据条款A32-A41中任意一项所述的方法,其中,通过如下方式来确定所接收的第一类型数据的数量:

以预设的第一固定数值;或者

以所述方法采用的转换器的处理位数除以所述第一类型数据和第二类型数据中位数高者的位数。

条款A43.根据条款A32-A42中任意一项所述的方法,其中,接收第一类型数据以及关于所述第一类型数据和第二类型数据的描述信息包括:

确定所接收的第一类型数据要拆分的数量,并将所述第一类型数据拆分为所述数量的拆分数据,所述拆分数据被转换为中间结果。

条款A44.根据条款A32-A43中任意一项所述的方法,通过如下方式来确定所接收的第一类型数据要拆分的数量:

以预设的第二固定数值;或者

以所述第一类型数据和第二类型数据中位数高者的位数除以所述方法采用的转换器的处理位数。

条款A45.根据条款A32-A44中任意一项所述的方法,其中,所述描述信息包括:

第一描述信息,用于描述第一类型数据的数据类型以及第一类型数据的第一指数位;

第二描述信息,用于描述第二类型数据的数据类型以及第二类型数据的第二指数位;

所述过渡指数位(Tshift)等同于所述第一指数位和所述第二指数位之间的差值。

条款A46.根据条款A32-A45中任意一项所述的方法,其中,所述描述信息包括:

第一类型数据的第一数据类型;

第二类型数据的第二数据类型;以及

差分指数位,所述差分指数位用于指示第一类型数据的第一指数位与第二类型数据的第二指数位之间的差值;

所述过渡指数位(Tshift)等同于所述差分指数位。

条款A47.根据条款A32-A46中任意一项所述的方法,其中,所述描述信息还包括舍入类型,所述舍入类型包括下列中的至少一种:TO_ZERO,OFF_ZERO,UP,DOWN,ROUNDING_OFF_ZERO,ROUNDING_TO_EVEN,随机舍入。

条款A48.根据条款A32-A47中任意一项所述的方法,其中,将所述中间结果转换为第二类型数据包括:

根据所述中间数据位(ABS)、中间符号位(Sign)、中间指数位(EXP)和中间舍入位(STK)来生成第二类型数据。

条款A49.根据条款A32-A48中任意一项所述的方法,其中,将所述中间结果转换为第二类型数据包括:

根据所述中间数据位(ABS)、中间符号位(Sign)、中间指数位(EXP)和中间舍入位(STK)来计算前置输出数据位(Pdata)和前置输出符号位(Psign);以及

根据所述前置输出数据位(Pdata)和前置输出符号位(Psign)来生成第二类型数据。

条款A50.根据条款A32-A49中任意一项所述的方法,其中,根据所述中间数据位(ABS)、中间符号位(Sign)、中间指数位(EXP)和中间舍入位(STK)来计算前置输出数据位(Pdata)和前置输出符号位(Psign)包括:

将所述中间数据位(ABS)移动中间指数位(EXP),得到移位结果;

根据所述移位结果和所述中间舍入位(STK)来生成临时数据位(ABS’);

所述前置输出符号位(Psign)与所述中间符号位等同。

条款A51.根据条款A21-A50中任意一项所述的方法,根据所述中间数据位(ABS)、中间符号位(Sign)、中间指数位(EXP)和中间舍入位(STK)来计算前置输出数据位(Pdata)和前置输出符号位(Psign)进一步包括:

检测临时数据位(ABS’)是否大于饱和值,

如果大于,则对临时数据位(ABS’)进行饱和处理,从而得到所述前置输出数据位(Pdata);

如果不大于,则将所述临时数据位(ABS’)输出为前置输出数据位(Pdata)。

条款A52.根据条款A32-A51中任意一项所述的方法,其中,根据所述前置输出数据位(Pdata)和前置输出符号位(Psign)来生成第二类型数据包括:

接收所述前置输出数据位(Pdata)和所述前置输出符号位(Psign),以生成输出数据位表示(Data_out);

根据所述数据输出位表示(Data_out)和前置输出符号位(Psign)来得到所述第二类型数据。

条款A53.根据条款A32-A52中任意一项所述的方法,其中,根据所述前置输出数据位(Pdata)和前置输出符号位(Psign)来生成第二类型数据进一步包括:根据所述前置输出数据位(Pdata)和前置输出符号位(Psign)生成浮点数小数点位表示(SHIFT_FP);

根据所述数据输出位表示(Data_out),浮点数小数点位数表示(Shift_FP)和前置输出符号位(Psign)来得到所述第二类型数据。

条款A54.根据条款A32-A53中任意一项所述的方法,其中,接收所述前置输出数据位(Pdata)和所述前置输出符号位(Psign),以生成输出数据位表示(Data_out)包括:

接收所述前置输出数据位(Pdata)和所述前置输出符号位(Psign),如果所述前置输出符号位(Psign)为负数,则对所述前置输出数据位(Pdata)求补码;

如果所述前置输出符号位(Psign)为正数,则将所述前置输出数据位输出为所述数据输出位表示(Data_out)。

条款A55.根据条款A32-A54中任意一项所述的方法,其中,接收所述前置输出数据位(Pdata)和所述前置输出符号位(Psign),以生成输出数据位表示(Data_out)进一步包括:

接收所述前置输出数据位(Pdata),判断该前置输出数据位(Pdata)的数据类型是第一型还是第二型,

如果所述前置输出数据位(Pdata)的数据类型是第一型,则

如果所述前置输出符号位(Psign)为负数,则对所述前置输出数据位(Pdata)求补码;

如果所述前置输出符号位(Psign)为非负数,则将所述前置输出数据位输出为所述数据输出位表示(Data_out);

如果所述前置输出数据位(Pdata)的数据类型是第二型,则

将所述前置输出数据位(Pdata)进行规格化,并输出为数据输出位表示(Data_out);

所述浮点数小数点位置确定器配置为根据所述第二规格化器的输出来确定浮点数小数点位数表示(SHIFT_FP)。

条款A56.根据条款A32-A55中任意一项所述的方法,进一步包括接收约束信息,所述约束信息用于指示是否支持特定标准,和/或是否支持编译优化。

条款A57.根据条款A32-A56中任意一项所述的方法,其中,第一类型数据和第二类型数据的数据类型是可扩展的。

条款A58.一种电子设备,包括:一个或多个处理器;以及存储器,所述存储器中存储有计算机可执行指令,当所述计算机可执行指令由所述一个或多个处理器运行时,使得所述电子设备执行如条款A32-A57中任意一项所述的方法。

条款A59.一种计算机可读存储介质,包括计算机可执行指令,当所述计算机可执行指令由一个或多个处理器运行时,执行如条款A32-A57中任意一项所述的方法。

本披露还公开了一个组合处理装置1000,其包括上述的计算装置1002,通用互联接口1004,和其他处理装置1006。根据本披露的计算装置与其他处理装置进行交互,共同完成用户指定的操作。图10为组合处理装置的示意图。

其他处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为机器学习运算装置与外部数据和控制的接口,包括数据搬运,完成对本机器学习运算装置的开启、停止等基本控制;其他处理装置也可以和机器学习运算装置协作共同完成运算任务。

通用互联接口,用于在计算装置(包括例如机器学习运算装置)与其他处理装置间传输数据和控制指令。该计算装置从其他处理装置中获取所需的输入数据,写入该计算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入计算装置片上的控制缓存;也可以读取计算装置的存储模块中的数据并传输给其他处理装置。

可选的,该结构还可以包括存储装置1008,存储装置分别与所述计算装置和所述其他处理装置连接。存储装置用于保存在所述计算装置和所述其他处理装置的数据,尤其适用于所需要运算的数据在本计算装置或其他处理装置的内部存储中无法全部保存的数据。

该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。

在一些实施例里,本披露还公开了一种芯片,其包括了上述计算装置或组合处理装置。

在一些实施例里,本披露还公开了一种芯片封装结构,其包括了上述芯片。

在一些实施例里,本披露还公开了一种板卡,其包括了上述芯片封装结构。参阅图11,其提供了一种示例性的板卡,上述板卡除了包括上述芯片1102以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件1104、接口装置1106和控制器件1108;

所述存储器件与所述芯片封装结构内的芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元1110。每一组所述存储单元与所述芯片通过总线连接。可以理解,每一组所述存储单元可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。

DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个DDR4颗粒(芯片)。在一个实施例中,所述芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在所述芯片中设置控制DDR的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。

所述接口装置与所述芯片封装结构内的芯片电连接。所述接口装置用于实现所述芯片与外部设备1112(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至所述芯片,实现数据转移。在另一个实施例中,所述接口装置还可以是其他的接口,本披露并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。

所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体的,所述芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit,MCU)。如所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和/或多个处理电路的工作状态的调控。

在一些实施例里,本披露还公开了一种电子设备或装置,其包括了上述板卡。

电子设备或装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。

所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本披露并不受所描述的动作顺序的限制,因为依据本披露,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本披露所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本披露所提供的几个实施例中,应该理解到,所披露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性、光学、声学、磁性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本披露各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。

所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,当本披露的技术方案可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本披露各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本披露的方法及其核心思想;同时,对于本领域的一般技术人员,依据本披露的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本披露的限制。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号