掌桥专利:专业的专利平台
掌桥专利
首页

除以整数常数的浮点除法

文献发布时间:2024-04-18 19:58:26


除以整数常数的浮点除法

本申请是申请日为2019年8月21日、名称为“除以整数常数的浮点除法”的中国发明专利申请No.201910774064.X的分案申请。

背景技术

本公开涉及用于确定比率

在数字电路中,通常需要提供硬件来计算针对某种输入x的比率

用于计算比率

用于计算比率

因此,可以使用传统的二进制乘法器逻辑来执行变量x除以d的除法,该二进制乘法器逻辑被设置为将变量x乘以在设计时评估的常量c。这种方法可以提供低等待时间,但需要大的硅面积。

发明内容

提供本发明内容是为了介绍将在以下详细描述中进一步描述的一些概念。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。

提供了一种用于确定比率x/d的二进制逻辑电路,其中x是w比特的可变整数输入,包括比特宽度为r≥1比特的M>8个块,并且d>2是固定整数,该二进制逻辑电路包括:

模数单元的对数树,每个模数单元都被配置为针对x中的相应块位置a和b,来计算x[a:b]mod d,其中b>a,块位置的编号从x的最高有效比特增大到x的最低有效比特,模数单元被布置为使得对数树的M-1个模数单元的子集为所有m∈{1,M}提供x[0:m]mod d,并且,基于任何给定的模数单元都会引入1的延迟:

(a)所有模数单元都在

(b)模数单元的子集的超过M-2

以及

输出逻辑,其被配置为将模数单元子集提供的输出与输入x的块组合以产生比率x/d。

对于整数n≥2,除数可以是d=2

对于整数v≥3,输入的块的数量可以是M=2

每个模数单元都可以接收一对输入值,每个输入值取决于对数树中模数单元的位置,都是输入x的块或来自另一个模数单元的输出值,并且每个模数单元都被配置为组合其输入值对,并对生成的二进制值执行mod d运算。

对数树的模数单元可以布置成多个级,其中给定级的模数单元都不接收来自较高级的模数单元的输入值,第一、最低级的模数单元各自都被布置为接收来自输入x的一对相邻块作为输入值,并且每个较高S

第一级的每个模数单元都可以被配置为对包括2r比特的一对输入值进行运算。

每个模数单元都可以被配置为提供比特宽度为p比特的输出值,并且较高级的每个模数单元都被配置为对以下各项进行运算:

一对输入值,对于被布置为接收来自输入x的其一个块的模数单元,包括r+p比特;以及

一对输入值,对于被布置为接收来自其他模数单元的输出值作为其输入值对的模数单元,包括2p比特。

输入的块数可以是

可选地,

可选地,

由对数树提供的每个x[0:m]mod d的比特宽度都可以等于表示mod d运算的可能输出范围所需的最小比特宽度p。

输入的块数可以是至少24个块。

提供了一种用于确定比率x/d的二进制逻辑电路,其中x是w比特的可变整数输入,包括比特宽度为r≥1比特的M>8个块,并且d>2是固定整数,该二进制逻辑电路包括:

模数单元的对数树,每个模数单元都被配置为针对x中的相应块位置a和b,来计算x[a:b]mod d,其中b>a,块位置的编号从x的最高有效比特增大到x的最低有效比特,模数单元被布置为使得对数树的M-1个模数单元的子集为所有m∈{1,M-1}提供x[0:m]mod d,并且:

基于任何给定的模数单元都会引入1的延迟,所有模数单元都在

模数单元子集中的至少一个被布置为对二进制值进行运算,该二进制值包括(a)来自模数单元x[e:f]mod d的输出或(b)输入块x[e:f]的负值以及x[0:f]mod d的值以便计算x[0:e]mod d,其中e和f是x中的块位置;

以及

输出逻辑,其被配置为将模数单元子集提供的输出与输入x的块组合以产生比率x/d。

提供了一种合成用于确定比率x/d的二进制逻辑电路的方法,其中x是w比特的可变整数输入,包括比特宽度为r≥1比特的M>8个块,并且d>2是固定整数,二进制逻辑电路包括模数单元的对数树,每个模数单元都被配置为对于x中的相应块位置a和b,来计算x[a:b]mod d,其中b>a,块位置的编号从x的最高有效比特增大到x的最低有效比特,该方法包括:

定义连接在一起的第一组模数单元,以便计算输出值x[i:j-1]mod d,对于这些输出值,存在满足j-i=2

添加连接到对数树中的第二组模数单元,以便提供第一组模数单元未提供的输出x[0:i]mod d,其中被布置为提供输出x[0:i]mod d的第二组的模数单元被配置为接收来自第一组的模数单元的以下各项作为输入值:

一对输出值,x[0:j]mod d,x[j+1:i]mod d其中j

输出值x[0:j]mod d和x[i+1:j]mod d的负值,其中j>i;

定义输出逻辑,其被配置为将由对数树的模数单元的子集提供的所有m∈{1,M-1}的输出值x[0:m]mod d与输入x的块组合,以便产生比率x/d。

该方法还可以包括定义连接到对数树中的第三组模数单元,以便通过以下方式提供第一或第二组模数单元未提供的输出值x[0:i]mod d:

识别是否可以将第三组的第一模数单元添加到对数树中以便提供输出值x[j+1:i]mod d,其中ji,输出值可以在第三组的第二模数单元与第一或第二组模数单元的输出值x[0:j]mod d组合,以创建输出值x[0:i]mod d;以及

响应于肯定识别,将第三组的那些第一和第二模数单元添加到对数树中以便提供输出值x[0:j]mod d。

该方法可以进一步包括重复识别和添加步骤,直到不能再添加其他模数单元。

所述识别可以包括选择第三组的第一模数单元的输入值的符号,以便创建输出值x[0:i]mod d。

在定义第二组或第三组的模数单元时,如果存在多个用于添加模数单元以便提供给定i的x[0:i]mod d的选项,所有这些选项都满足所述标准,则执行该定义以便添加以最低延迟提供x[0:i]mod d的多个选项的模数单元。

该方法可以进一步包括,如果对于任何1≤i≤M,输出值x[0:i]mod d不由第一、第二或第三组的模数单元提供,则对于每个未提供的输出值,将第四组的两个或更多模数单元添加到对数树中,以便提供该[0:i]mod d,作为第四组的模数单元的输出值。

添加第四组的两个或更多个模数单元可以包括使用嵌套线性搜索来识别形成所述输出值所需的两个或更多个模数单元。

该方法可以进一步包括布置对数树的模数单元,使得对数树的M-1模数单元的子集为所有m∈{1,M-1}提供x[0:m]mod d,并且基于任何给定的模数单元都会引入1的延迟,所有模数单元都在

该方法可以进一步包括布置对数树的模数单元,使得模数单元的子集的超过M-2

提供了一种用于确定比率x/d的二进制逻辑电路,其中x是w比特的可变整数输入,包括比特宽度为r≥1比特的M>8个块,并且d>2是固定整数,该二进制逻辑电路包括:

模数单元的对数树,每个模数单元都被配置为针对x中的相应块位置a和b,来计算x[a:b]mod d,其中b>a,块位置的编号从x的最高有效比特增大到x的最低有效比特,模数单元被布置为使得对数树的M-1个模数单元的子集为所有m∈{1,M-1}提供x[0:m]mod d,并且,基于任何给定的模数单元都会引入1的延迟,所有模数单元都在

输出逻辑,其被配置为将模数单元子集提供的输出与输入x的块组合以产生比率x/d;

其中对于给定数量M的块,对数树中的模数单元的总数T符合下表:

提供了一种二进制逻辑电路,用于对包括比特宽度为r≥1比特的M>8块的w比特的可变整数输入x进行运算,该二进制逻辑电路包括:

处理单元的对数树,每个处理单元都被配置为对于x中的相应块位置a和b,来对x[a:b]执行预定义运算,其中b>a,块位置的编号从最高有效比特x增大到最低有效比特x;

其中处理单元被布置成使得对数树的M-1处理单元的子集中每个都为每个m∈{1,M-1}提供表示对x[0:m]的预定义运算的结果的输出;并且

其中基于任何给定的处理单元都会引入1的延迟:

(a)所有处理单元都在

(b)处理单元的子集的超过M-2

在对数树的每个处理单元处执行的预定义运算可以是AND运算,并且二进制逻辑电路被配置为对输入x的块执行多个AND减少。

在对数树的每个处理单元处执行的预定义运算可以是OR运算,并且二进制逻辑电路被配置为对输入x的块执行多个OR减少。

在对数树的每个处理单元处执行的预定义运算可以是XOR运算,并且二进制逻辑电路被配置为对输入x的块执行多个奇偶性运算。

二进制逻辑电路可以用集成电路上的硬件来体现。可以提供一种在集成电路制造系统处制造二进制逻辑电路的方法。可以提供一种集成电路定义数据集,其在集成电路制造系统中被处理时配置系统以制造二进制逻辑电路。可以提供一种非暂时性计算机可读存储介质,其上存储有集成电路的计算机可读描述,当在集成电路制造系统中处理时,该计算机可读描述使集成电路制造系统制造二进制逻辑电路。

可提供一种集成电路制造系统,包括:

非暂时性计算机可读存储介质,其上存储有计算机可读集成电路描述,所述描述对二进制逻辑电路进行描述;

布局处理系统,其被配置为处理所述集成电路描述,以便生成体现所述二进制逻辑电路的集成电路的电路布局描述;以及

集成电路生成系统,其被配置为根据所述电路布局描述来制造二进制逻辑电路。

可以提供用于执行如本文所述的方法的计算机程序代码。可以提供其上存储有计算机可读指令的非暂时性计算机可读存储介质,当在计算机系统处执行时,该指令使计算机系统执行如本文所述的方法。

附图说明

参考附图以示例的方式描述本发明。在附图中:

图1示出了模数单元的常规对数树,用于评估16比特可变输入除以整数常数除数的二进制除法。

图2示出了模数单元的改进的对数树,用于评估16比特可变输入除以整数常数除数的二进制除法。

图3示出了模数单元的改进的对数树,用于评估17比特可变输入除以整数常数除数的二进制除法。

图4示出了二进制逻辑电路,其被配置为在包括模数单元的对数树的处理逻辑处将可变输入x除以整数常数。

图5示出了图4的处理逻辑处的对数树的模数单元。

图6是示出根据本文描述的原理的用于设计对数树的示例性方法的流程图。

图7示出了7块二进制值x中的块位置。

图8是集成电路制造系统的示意图。

具体实施方式

借助于实例呈现以下描述以使得所属领域的技术人员能够制造和使用本发明。本发明不限于本文中描述的实施方案,并且对所公开的实施方案的各种修改对于所属领域的技术人员而言将是显而易见的。仅通过示例的方式描述实施方案。

本文描述的示例提供了用于计算比率

在根据本文描述的原理进行除以2

然后,考虑模数单元对该输入的的运算:

但是由于

对于任何k,,我们可以将些简化为:

(x

对于2

(x

对于所有较高级,输出值将是:

(x

因此将理解,如果输入x被分成宽度为2

应当理解,本文公开的原理不限于本文描述的特定示例,并且可以使用二进制逻辑电路设计领域中已知的技术,扩展到例如带符号输入x、各种舍入方案,以及2

用于评估比率

对数树404包括多个模数单元。模数单元可以被认为是分级布置的,其中一个级的所有模数单元并行运算,并且每个级都对应于一个延迟单位。该总体布置在图1中示出,其示出了用于计算除以16块输入的固定整数(忽略虚线和第17块)的除法的模数单元的常规对数树。每个块都包括多个比特,如下所述。如在图1所示的示例中,第一级模数单元(在图1中的延迟级别=1处示出)可以被布置为对来自输入x的块进行运算,第二级模数单元(延迟=2)可以被布置为接收来自第一级模数单元的至少一个输入,但是没有来自高于第一级的级的输入,并且第三级模数单元(延迟=3)可以被布置为接收来自第二级模数单元的至少一个输入,但没有来自高于第二级的级的输入,依此类推。因此,可以理解,可以认为给定级的所有模数单元都在输入x的处理流水线中呈现基本相同的延迟。对数树的输出是图1中所示的顶级节点处的模数单元的15个输出,对于t=1,2,…15.,通过0,t来表示。

处理逻辑402被配置为对输入变量x的块进行运算。处理逻辑402包括模数单元网络,每个模数单元都被配置为执行模数运算mod d。处理逻辑的模数单元在设计时以本文所述的方式布置,以便最小化延迟和所需模数单元的数量。模数单元和来自输入数据存储401的输入之间的连接可以在二进制逻辑电路中硬连线。参数d和w在设计时是已知的,使得二进制逻辑电路可以被配置为优化以执行除以d的除法的固定功能硬件单元。

引用输入x的块而不是比特是有帮助的,因为取决于正在执行的模数运算,第一级的模数单元可以对多于一对比特进行运算。每个第一级模数单元都被配置为接收x的相邻的一对比特块,每个块都包括x的r个连续的比特。r的长度可取决于正在执行的模数运算。例如,在被配置为执行除以3的除法的处理逻辑中使用的第一级mod 3运算可以接收来自输入x的一对比特,即两个一比特块(r=1)。模数单元可以接收多于两比特。例如,在被配置为执行除以5的除法的处理逻辑中使用的第一级mod 5运算可以接收来自输入x的四个比特,作为两个比特的两个块(r=2)。如果接收到较少的比特,则模数运算的结果通常是该模数单元的输入比特。被配置为执行运算mod 5的模数单元可以接收多于四个比特,但是这通常会增大模数单元的复杂性。

较高级中的模数单元可以对不同于第一级的模数单元的比特数进行运算。通常,从执行运算mod d的模数单元输出的比特数将是表示d-1所需的比特数。因此,mod 3单元输出的比特数是2比特,mod 5单元输出的比特数是3比特。由于较高级模数单元接收来自较低级模数单元的至少一个输入,因此每个较高级模数单元对其运算的比特数取决于在对数树的模数单元处执行的模数运算。

块宽度为r比特(通常)的输入x中的块数M大约是

在模数单元处接收到的每个块可以作为单独的输入被接收,并且根据块的比特对齐进行组合,以便产生模数单元将对其执行其mod d运算的值。对于树中的一般模数单元,其接收来自较低级模数单元的一对输出值作为其输入,那些表示对x的块的模数运算结果的输出值总是可以组合以表示对其执行了较低级模数运算的总共x块的模数运算的结果。换句话说,对x的块a到b的模数运算的结果可以与对x的相邻块c到d(其中c=b+1)的模数运算的结果组合,以便表示对块a到d的模数运算的结果。在本领域如何组合这种模数结果是众所周知的。

被配置为对一对输入执行mod d运算的模数单元503在图5中示出。该单元接收一对输入501和502,它们被组合以表示模数单元503对其执行mod d运算的输入值,以便生成输出504。输入的比特宽度可能取决于d的大小。例如,对于d=3,第一级模数单元的输入中每个都可以是1比特;对于d=5,第一级模数单元的输入中每个都可以是2比特。

模数单元可以被配置为接收不同比特宽度的输入,尽管这通常会增大模数单元的复杂性。然而,这种布置可以是有利的,以便最小化处理逻辑的总体复杂性。例如,如果在处理逻辑处执行的除法是除以5但输入的比特宽度是奇数,则第一延迟级的模数单元中每个都接收一对两比特模数输入可能是有利的,例外是,第一延迟级的一个或多个模数单元被配置为接收两比特输入和三比特模输入。使用这种更复杂的模数单元可以在最小化其中输入x不均匀地划分为r比特块的处理逻辑的整体复杂性方面提供最佳权衡。

为了定义实现本文所述益处的对数树中的节点的布置,采用以下符号是有利的。输入x被分成多个M块,每个块都包括适合于第一级模数单元所需的比特数的r比特。并非所有输入块可以具有相同的比特宽度-例如,对于某些输入宽度w,一个或多个块可以小于或大于r。不是从其最低有效比特对x的块进行编号,而是从最高有效比特开始对x的块进行编号。以这种方式,符号x[i:j]指的是x的块i到j,其中i和j分别是x的第i块和j,并且i

例如,图7中示出了包括七个块的二进制输入x,其中每个块包括单个比特,包括最高有效比特(MSB)的块用比特位置“0”来标记,并且包括最低有效比特(LSB)的块用比特位置“6”来标记。在该示例中,每个块都是一个比特,因此每个块位置都是比特位置。因此,x[2:5]的值为“0110”,x[1:4]的值为“1011”。注意,最高有效比特指的是相应值的可用比特宽度的最高有效比特位置。例如,在图7所示的示例中,即使第0个块的值为“0”,最高有效比特也是比特位置0。

引用对数树404的输出x′的块而不是比特是更有帮助的,因为对数树的模数单元可以在其输出504处提供多于一个比特。x′可以是输出块的集合而不是单个连接的二进制值,每个块都表示对于m∈{1:M-1},模数计算x[0:m]mod d的值-即下面介绍的语言中的残数。x′的输出块可以与x的输入块具有不同的比特宽度。例如,被配置为执行mod 5的模数单元通常提供3比特输出块,而其输入可以是两个2比特输入块。进一步有利的是以与对于输入x相同的方式来引用对数树输出x′的块位置,其中最低块位置对应于最高有效比特,最高块位置对应于最低有效比特。

在二进制中,除法

在二进制中,x[i:j]在除以d之后的余数等于x[i:j]mod d的值。因此,除以d之后x的m最高有效块的余数可以表示为x[0:m]mod d。由于模数运算是关联的,因此可以通过执行一个或多个模数运算来计算每个x[0:m]mod d的值,例如,其中m=a+b:

x[0:m]mod d=((x[0:a]<<b+x[a+1:m])mod d

=((x[0:a]<<b)mod d+x[a+1:m]mod d)mod d

=(((x[0:a]mod d)<<b)+x[a+1:m]mod d)mod d

该关系确立了如何通过使用模数单元的对数树来计算x的最高有效比特集的单个模数值来形成整个输入x的模数值。

可以在处理逻辑402的模数单元处执行每个模数运算。每个模数单元都可以是固定功能电路,其被配置为对预定义比特宽度的一对块执行预定的模数运算,以便形成x[i:j]mod d,其中x[i:j]是x(就其而言,输出将由模数单元形成)的块。因此,因此,二进制逻辑电路400将潜在的复杂除法运算简化为对来自输入变量x的比特选择执行一组模数计算。

如已经解释的,提供给每个模数单元的输入比特的数量可以取决于正在执行的模数运算的大小:例如,对于除以3,其中d=3,每个模数单元都可以接收一对比特作为输入(例如,两个1比特输入);对于除以5,其中d=5,每个模数单元都可以接收4比特作为输入(例如,两个2比特输入)。

现在将描述处理逻辑402处的用于评估除以整数常数的除法的模数单元的有效对数树布置。在以下示例中将每个值x[i:j]mod d称为“残数”是有用的,其将表示为x。除法运算

注意,在符号x[i:j]中,标识符i和j指的是模数单元的对数树404的输入块,而不是x的单个比特。对数树的每个输入都是向对数树的第一级中的模数单元的输入。仅在每个输入都是单个比特的情况下,标识符i和j才表示比特位置。例如,当d=5时,模数单元的对数树的每个输入都可能是2比特,因此,可以说,i=0指的是最高有效块(而不是最高有效比特),并且,可以说,j=3指的是第四最高有效块(而不是第四最高有效比特)。

来自对数树的x′的最低有效输出块是使用输入x的所有块形成的,因为它可以被表示为残数。因此,最低有效P

处理逻辑402的输出逻辑405被配置为形成来自对数树404的输出x′的输出

现在将提供输入块宽度为1比特并且来自模数逻辑的每个模数输出残数x′[m]=x<0:m>都提供输出y的1比特的情况的简要示例。对y的比特进行编号,使得y的m

x<0:m>=(x<0:m-1><<1)&x[m]

其中&表示连接运算,<<1表示左移1比特。如果对于残数x′[m],上述等式不成立,那么y[m]=1。

熟悉模数逻辑的人将很容易理解如何将该示例性情况扩展到输入块宽度大于1比特的情况。

二进制逻辑电路400的模数单元布置在对数树中,因此计算该树的最低有效输出块所需的模数运算的数量由

可以认为每个模数单元都花费相同的时间量来执行其模数运算(例如,一个时间单位),以便可以认为延迟与形成树的输出x′的块所需的关键路径上的模数运算的数量呈线性比例关系。

每个残数运算x的结果都可以根据除数d的大小,(并且因此正在执行的特定mod d运算),计算残数所涉及的模数单元的输入比特的数量,以及可能会导致对数树被配置为引入-例如-附加填充比特或移位运算,以便确保来自对数树的每个级的比特的正确对齐的设计考虑因素,包括一个或多个比特。

对于给定的模数运算,将需要最小输出比特宽度来表示可能的输出范围。例如,运算mod 3要求最小输出宽度为2比特,并且运算mod 5要求最小输出宽度为3比特。由于对数树的输出块由x<0:j>给出,因此除数的大小d所暗示的最小输出比特宽度也是x′的输出块的最小大小。通常,除数大小d所暗示的最小输出块大小将是最佳块大小,因为这最小化了模数单元的复杂性。

应当注意,由于第一级模数单元的输入块大小可能与模数单元的输出块大小不同,因此较高级模数单元的输入的比特宽度可能与第一级模数单元的比特宽度不同。例如,如果在每个单元处执行的模数运算是mod 3,则来自每个模数单元的输出的最小比特宽度是2比特。在来自x的输入块大小为1比特的情况下,提供给第一级中的每个模数单元的比特数是来自一对1比特输入的2比特,但是提供给每个后续级中的每个模数单元的比特数是3比特或4比特:3比特用于接收来自x的块和较低级模数单元的输出作为其输入的模数单元;4比特用于接收来自较低级模数单元的一对输出作为其输入的模数单元。虽然对数树的所有模数单元被配置为执行相同的mod d运算,但模数单元的逻辑可略微不同,以便处理不同的输入宽度,并且其中d≠2

每个模数运算都由模数单元执行,模数单元表示对数树的“节点”。每个模数运算的输出都表示残数x。在描述模数单元的对数树的布置时,定义一组模数运算是有帮助的,这些运算表示树的“骨架”。骨架包括执行残数x的那些节点,对于这些残数,存在满足j-i=2

延迟=0 x<0:0>,x<1:1>,x<2:2>,x<3:3>,...

延迟=1 x<0:1>,x<2:3>,x<4:5>,x<6:7>,...

延迟=2 x<0:3>,x<4:7>,x<8:11>,x<12:15>,...

延迟=k x<0:2

给定延迟组中的所有模数单元都可以并行执行它们各自的运算。

输出残数是x,j=2...,M。期望尽可能便宜地形成输出残数,即具有最小数量的模数运算(并因此以模数单元)并且以最小可能的总延迟。

模数单元可包括用于执行适当mod d运算的任何合适的逻辑电路。处理逻辑402的模数单元根据本文描述的原理连接在一起,以便形成对数树。每个模数单元都表示树的节点,在节点处执行模数运算。模数单元通常直接连接在一起,树的各级之间没有中间寄存器。因此,处理逻辑的速度受到通过处理逻辑的门的延迟的限制。

考虑一个示例,其中输入x的比特宽度为w=32,除法运算是除以3,输入块大小为1比特。因此,x中的输入块的数量是32。因此,使用模数单元的对数树形成输出的最小可能延迟log

介绍一下整数的汉明度量是有用的,其表示为H(j)。在其二进制表示中,它被定义为1的数量,例如H(9decimal)=H(1001binary)=2。其中输入块x[0:j-1]具有汉明权重H(j)=1的所有必需残数x<0:j-1>都将位于树的骨架中。具有H(j)=2的所有需要的残数都可以通过使用相同的模数运算来组合骨架中的两个残数来计算,例如,x<0:5>=x<0:3>·x<4:5>,x<0:9>=x<0:7>·x<8:9>和x<0:11>=x<0:7>·x<8:11>。根据二进制逻辑电路的固定除数,·运算符表示模数运算。因此,例如在d=3的情况下,x<0:3>·x<4:5>=(x[0∶3]&x[4∶5])mod 3,其中&表示连接运算。

通常,具有汉明权重H(j)=k的那些输入x[0:j-1]可以通过组合关于具有H(j)=k-1和来自骨架的残数的x的那些块计算出的残数来计算,例如,x<0:13>=x<0:11>·x<12:13>。注意,形成x<0:7>时的延迟是3,因此形成x<0:11>时的延迟是4,并且形成x<0:13>时的延迟是5,这在32输入对数树的延迟包络内。

传统上,用于执行16比特输入除以固定整数的除法的模数单元101的对数树100如图1所示的那样布置。可以看出,最大延迟是log

中间模数单元,例如图1中的102,不生成对数树的输出残数x<0:j-1>,而是用作树中后续模数单元的输入。例如,模数单元102生成残数x<2:3>,该残数用作计算残数x<0:3>的模数单元103的输入。

在图1中,提供输出x<0:j-1>的对数树100的每个较高级模数单元用符号s,t来标记,其中s和t分别表示有助于由该模数单元计算出的输出的连续块组的最高有效和最低有效输入块。例如,基于输入块0、1、2和3来计算输出0,3。该符号也用于图2和3中。每个模数单元都可以称为对数树的节点。

可以观察到,传统的对数树100需要32个模数单元,以便形成确定除法运算结果所需的所有输出残数。图2中示出了也具有16个输入的改进的对数树200。树200在相同的最小延迟包络内运算,因为它在关键路径上最多需要4次模数运算以形成输出残数,但它仅需要31个模数单元,因此能够节省芯片面积。

图1进一步示出了传统上如何扩展16输入对数树以处理17个输入块。移动到17个输入会使延迟增大一个单位,因为[log2

将首先描述图2和3中所示的特定改进示例,然后将阐述用于为任何数量的输入形成改进的对数树的原理。与传统逻辑(其中输入的数量大于8)相比,通过本文的原理,能够形成具有减少的模数单元的改进的对数树。与传统逻辑相比,对数树中模数单元数量的减少程度随着输入块数量的增加而增大。

图2减少了模数单元的数量,通过认识到模数运算可以推迟到树中较晚的位置,只要不超过延迟包络-即延迟log

图3示出了第二改进的对数树300,其具有根据本文所述原理布置的模数单元。对数树300表示具有17个输入块的对数树的最有效解决方案,并且与对于17个输入块的常规对数树的设计相比,能够移除6个模数单元。对数树300相对于传统设计进行了修改,以便利用与16输入情况相比,通过添加第17个输入必然引入的附加延迟。对于17个输入块,延迟包络是

除了包括如上参考图2针对16输入情况所描述的在模数单元301处形成输出0,6的优化之外,对数树300类似地将输出0,10、0,12、0,13和0,14的计算推迟到模数计算的最后一级。这在图3中由延迟=5级的模数单元302-305示出。具体地,模数单元305处的输出0,14通过对输出0,15和输入15的负值执行模数运算来形成。这种一个模数单元的输出与另一个模数单元的输出的“减法”表示相对于传统配置节省了一个模数单元,将看到添加第一模数单元以组合节点12,13和14,14的输出,并且添加第二模数单元以组合该第一模数单元的输出与节点0,11的输出。

总的来说,与被布置为执行除以固定除数的二进制除法运算的模数单元的17输入对数树的传统实现方式相比(参见图1,包括节点106),通过图3中所示的对数树中存在的优化,可以移除六个模数单元。

以上示例涉及对数树被配置为执行除以3的除法并且x的输入块是单个比特的情况。对于较大的除数,每个模数单元可能需要更多的输入。例如,对于除以5的除法,每个模数单元都执行mod 5运算,x的输入块的长度通常可以是2比特(根据给定的块长度是否均匀地划分为x的比特宽度,可以有一个或多个长度较短或较长的块)。对数树的复杂性通常随着除数变大而增大,因为每个模数单元的逻辑更复杂,并且通过二进制逻辑电路需要更宽的数据路径。

本文描述的改进的对数树保持与传统对数树相同的临界延迟,但是减少了所需的模计算的数量,并因此减少了被布置以执行这些计算的模数单元所消耗的芯片面积。

现在将参考图6描述用于生成用于执行除法

为了合成固定功能二进制逻辑电路的对数树,可变输入被除数x的最大比特宽度w将在设计时知道,固定整数除数也是如此d。这些可以在设计过程开始时作为参数接收,如图6中的601所示。x的块被分割到的块数M和一般块大小r中的一项或两项也可以作为参数传递。或者,M可以以编程方式确定。例如,如图6的602所示,M可以根据除数d导出。例如,可以选择块大小r使其为与表示运算xmod d的整个输出范围所需的比特数相同的比特数。

对于给定的比特宽度w和可变输入x的块大小,可以计算延迟包络,其表示对数树生成其完整输出集所需的最小延迟。延迟包络由

A.在603,创建对数树的骨架,其包括第一组模数单元,其被布置成计算输出i,j-1,对于这些输出值,存在满足j-i=2

B.对于不由骨架的第一组模数单元提供的所有输出0,i,在604处,按如下所述方式,将模数单元添加到对数树中。对于所需的输出0,i,如果存在一对节点0,j和j+1,i,其中ji,然后将这些节点组合在一起,以便在延迟包络内创建所需的输出。为每个节点选择符号,以便创建所需的输出是有利的—例如,可以在模数运算中为一些节点分配负值,以便实现所需的输出。如果有多种选项,选择具有最短延迟的一对是有利的。如循环609所示,重复B,直到不能再添加其他节点。

C.对于所需的任何其他输出0,i,在605处识别是否可以创建节点j+1,i,其中ji,这些节点应可以与现有节点0,j组合以便在延迟包络内创建所需的输出0,i。如果是,则在606添加节点和所需的输出节点0,i。为每个节点选择符号,以便创建所需的输出是有利的—例如,可以在模数运算中为一些节点分配负值,以便实现所需的输出。如果有多种选项,选择具有最短延迟的一对是有利的。如循环610所示,重复B和C,直到不能再添加其他节点。

D.对于仍然缺失的任何输出0,i,在607,通过添加两个或更多节点以任何合适的方式创建这些节点,以便在延迟包络内创建所需的输出节点。可使用嵌套线性搜索来识别形成给定输出节点可能需要的一组中间节点。如循环611所示,重复B到D,直到不能再添加其他节点。

在608,定义合适的输出逻辑,用于将来自对数树的输出残数x<0:i>与输入x的块组合,以便生成比率

上面的步骤B和C确保识别模数单元的有利布置,其包括评估除法运算

用于实现除法运算的常规对数树具有

例如,被配置为根据本文的原理对32比特输入执行除以3的除法的对数树,与传统对数树设计相比,通常有5%的电路面积减小的获益。

与传统方法相比,根据本文描述的原理的对数树通常在延迟包络顶部,在最高级节点数量增大。例如,在图3中,在第五级提供了五个模数单元(302至306),而图1中的相应17输入树在其第五级仅具有一个模数单元(106)。通常,常规对数树的最高级中的节点数是M-2

下表列出了对于各种数量的输入块,本文所教导的改进的对数树结构所需的模数单元的数量与传统对数树结构所需的模数单元的数量的比较。可以看出,在8个输入块以下时,对数树具有相同数量的模数单元,但随着输入块数量的增大,改进的树结构实现了所需的模数单元数量显著的且不断增大的减少程度。当对于v≥4,输入块的数量为M=2

/>

/>

/>

这里阐述的原理可以扩展到在对数树中创建处理节点的有利布置,其中在每个节点处执行的运算是关联运算。例如,本文描述的相同对数树结构可以有利地用于执行AND、OR和XOR运算,其中模数单元(节点)在适当时由AND、OR或XOR逻辑代替。可以实现在缩小电路面积和由节点数量减少引起的复杂性方面的类似益处。

在每个节点处执行的运算不可逆(例如,AND或OR运算)的情况下,不可能从另一个输入中“减去”一个输入,因此包含这些节点的对数树可以在每个节点处组合正输入值,但不能在处理节点处将正输入值与负输入值组合。

在一般情况下,图4的处理逻辑402包括根据本文描述的原理布置的处理节点404的对数树,其中上述示例的模数单元被适当的处理节点替换,以便整体运算由处理逻辑来执行。例如,当每个处理节点都是被配置为组合其相应的输入以执行AND运算的AND单元时,处理逻辑被配置为执行二进制输入x的多组最高有效块的AND减少—即多个x[0:1],x[0:2],x[0:3],…x[0:m-1]的AND减少。这种处理逻辑可以有利地用于前导零/一计数器或重整器中。

在另一示例中,当每个处理节点都是被配置为组合其相应输入以执行OR运算的OR单元时,处理逻辑被配置为执行二进制输入x的多组最高有效块的OR减少。例如,当每个处理节点都是被配置为执行XOR运算的XOR单元时,处理逻辑被配置为组合其相应的输入以对二进制输入x的多组最高有效块执行奇偶性运算。应当理解,可能需要合适的输出逻辑405来处理来自对数树的输出,以便形成处理逻辑的相关最终输出。

本文描述的原理可以特别有利地应用于包括对数树的处理逻辑,该对数树被配置为对至少24个输入块,至少32个输入块,至少48个输入块,至少64个输入块,至少96个输入块,至少128个输入块,至少196个输入块和至少256个输入块进行运算。

图4和5的二进制逻辑电路被示为包括多个功能块。这仅是示意性的,并不希望限定此类实体的不同逻辑元件之间的严格划分。可以以任何合适的方式提供每个功能块。应理解,本文中被描述为由二进制逻辑电路形成的中间值不需要由二进制逻辑电路在任何时间点物理地生成,并且可以仅仅表示方便地描述由二进制逻辑电路在其输入与输出之间执行的处理的逻辑值。

根据本文阐述的原理配置的二进制逻辑电路可以用集成电路上的硬件来体现。根据本文阐述的原理配置的二进制逻辑电路可以被配置为执行本文描述的任何方法。根据本文阐述的原理配置的二进制逻辑电路可以对任何形式的二进制表示或相关形式,包括例如二进制补码和规范形式,来进行运算。

计算机可读存储介质的实例包含随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪存、硬盘存储器以及可以使用磁性、光学和其他技术来存储指令或其他数据且可由机器存取的其他存储器装置。

如本文使用的术语计算机程序代码和计算机可读指令是指供处理器执行的任何种类的可执行代码,包含以机器语言、解释语言或脚本语言表达的代码。可执行代码包含二进制代码、机器代码、字节代码、限定集成电路的代码(例如硬件描述语言或网表),以及用例如C、Java或OpenCL之类的编程语言代码表达的代码。可执行代码可以是例如任何种类的软件、固件、脚本、模块或库,当在虚拟机或其他软件环境中被适当地执行、处理、解释、编译、运行时,这些软件、固件、脚本、模块或库致使支持可执行代码的计算机系统的处理器执行由所述代码指定的任务。

处理器、计算机或计算机系统可以是任何种类的装置、机器或专用电路,或其集合或一部分,它具有处理能力使得可以执行指令。处理器可以是任何种类的通用或专用处理器,例如CPU、GPU、芯片上系统、状态机、媒体处理器、专用集成电路(ASIC)、可编程逻辑阵列、现场可编程门阵列(FPGA)等。计算机或计算机系统可以包括一个或多个处理器。

本发明还意图涵盖限定如本文描述的硬件配置的软件,例如HDL(硬件描述语言)软件,用于设计集成电路或用于配置可编程芯片以执行所需功能。也就是说,可提供一种计算机可读存储介质,在其上对呈集成电路定义数据集形式的计算机可读程序代码进行编码,所述计算机可读程序代码在集成电路制造系统中被处理时将系统配置为制造配置为执行本文所描述的任一种方法的二进制逻辑电路,或制造包括本文中所描述的任何装置的二进制逻辑电路。集成电路定义数据集可以是例如集成电路描述。

可提供一种在集成电路制造系统处制造如本文中所描述的二进制逻辑电路的方法。可提供一种集成电路定义数据集,所述集成电路定义数据集在集成电路制造系统中被处理时使制造二进制逻辑电路的方法被执行。

集成电路定义数据集可呈计算机代码形式,例如作为网表、用于配置可编程芯片的代码,作为在任何层级限定集成电路的硬件描述语言,包含作为寄存器传送级(RTL)代码、作为例如Verilog或VHDL等高级电路表示,和作为例如OASIS(RTM)和GDSII等低级电路表示。在逻辑上限定集成电路的更高级表示(例如RTL)可以在配置为在软件环境的上下文中产生集成电路的制造定义的计算机系统处处理,所述软件环境包括电路元件的定义和用于组合那些元件以便产生由所述表示如此限定的集成电路的制造定义的规则。如通常软件在计算机系统上执行以便限定机器的情况一样,可能需要一个或多个中间用户步骤(例如,提供命令、变量等),以便将计算机系统配置为用于产生集成电路的制造定义,以执行限定集成电路以便产生所述集成电路的制造定义的代码。

现将参考图8来描述在集成电路制造系统处处理集成电路定义数据集以便将系统配置为制造二进制逻辑电路的实例。

图8示出了配置为制造如本文中的任一个实例中所描述的二进制逻辑电路的集成电路(IC)制造系统1002的实例。特别地,IC制造系统1002包括布局处理系统1004和集成电路生成系统1006。IC制造系统1002被配置为接收IC定义数据集(例如,定义如本文中的任一个实例中所描述的二进制逻辑电路),处理IC定义数据集,并根据IC定义数据集生成IC(例如,其体现如本文中的任一个实例中所描述的二进制逻辑电路)。对IC定义数据集的处理将IC制造系统1002配置为制造体现如本文中的任一个实例中所描述的二进制逻辑电路的集成电路。

布局处理系统1004被配置为接收和处理IC定义数据集以确定电路布局。根据IC定义数据集来确定电路布局的方法在此项技术中是已知的,并且例如可以涉及合成RTL代码以确定要产生的电路的门级表示,例如,就逻辑组件(例如,NAND、NOR、AND、OR、MUX和FLIP-FLOP组件)而言。通过确定逻辑组件的位置信息,可以根据电路的门级表示来确定电路布局。这可以自动完成或者在用户参与下完成,以优化电路布局。当布局处理系统1004确定了电路布局时,它可以将电路布局定义输出到IC生成系统1006。电路布局定义可以是例如电路布局描述。

如本领域已知的,IC生成系统1006根据电路布局定义来生成IC。例如,IC生成系统1006可以实现生成IC的半导体器件制造工艺,其可以涉及光刻和化学处理步骤的多步骤序列,在此期间,在由半导体材料制成的晶片上逐渐形成电子电路。电路布局定义可呈掩模的形式,其可以在光刻工艺中用于根据电路定义来产生IC。替代性地,提供给IC生成系统1006的电路布局定义可以是计算机可读代码的形式,IC生成系统1006可以使用该计算机可读代码来形成用于生成IC的合适掩模。

由IC制造系统1002执行的不同过程可以全部在一个位置例如由一方来实现。替代性地,IC制造系统1002可以是分布式系统,使得一些过程可以在不同位置执行,并且可以由不同的方来执行。例如,以下阶段中的一些可以在不同位置和/或由不同方执行:(i)合成表示IC定义数据集的RTL代码,以形成要产生的电路的门级表示,(ii)基于门级表示来产生电路布局,(iii)根据电路布局来形成掩模,以及(iv)使用掩模来制造集成电路。

在其他实例中,通过在集成电路制造系统处对集成电路定义数据集的处理,可将系统配置为制造二进制逻辑电路,无需对IC定义数据集进行处理以便确定电路布局。例如,集成电路定义数据集可以限定可重新配置的处理器(例如,FPGA)的配置,并且对所述数据集进行的处理可以将IC制造系统配置为产生具有所述所限定配置的可重新配置的处理器(例如,通过将配置数据加载到FPGA)。

在一些实施方案中,当在集成电路制造系统中处理时,集成电路制造定义数据集可以致使集成电路制造系统产生如本文描述的装置。例如,通过集成电路制造定义数据集以上文参考图8描述的方式对集成电路制造系统进行配置,可以制造出如本文描述的设备。

在一些实例中,集成电路定义数据集可以包含在数据集处限定的硬件上运行的软件,或者与在数据集处限定的硬件组合运行的软件。在图8所示的实例中,IC产生系统可以由集成电路定义数据集进一步配置为在制造集成电路时根据在集成电路定义数据集处限定的程序代码将固件加载到所述集成电路上,或者以其他方式向集成电路提供与集成电路一起使用的程序代码。

与已知的实施方案相比,在本申请中阐述的概念在装置、设备、模块和/或系统中(以及在本文实施的方法中)的实施可以引起性能改进。性能改进可包含计算性能提高、等待时间缩短、处理量增大和/或功耗降低中的一个或多个。在制造此类装置、设备、模块和系统(例如在集成电路中)期间,可以在性能改进与物理实施方案之间进行权衡,从而改进制造方法。例如,可以在性能改进与布局面积之间进行权衡,从而匹配已知实施方案的性能,但使用更少的硅。例如,这可以通过以串行方式再使用功能块或在装置、设备、模块和/或系统的元件之间共享功能块来完成。相反,在本申请中阐述的引起装置、设备、模块和系统的物理实施方案的改进(例如硅面积减小)的概念可以针对性能提高进行权衡。例如,这可以通过在预定义面积预算内制造模块的多个例项来完成。

与已知的实施方案相比,在本申请中阐述的概念在装置、设备、模块和/或系统中(以及在本文实施的方法中)的实施可以引起性能改进。性能改进可包含计算性能提高、等待时间缩短、处理量增大和/或功耗降低中的一个或多个。在制造此类装置、设备、模块和系统(例如在集成电路中)期间,可以在性能改进与物理实施方案之间进行权衡,从而改进制造方法。例如,可以在性能改进与布局面积之间进行权衡,从而匹配已知实施方案的性能,但使用更少的硅。例如,这可以通过以串行方式再使用功能块或在装置、设备、模块和/或系统的元件之间共享功能块来完成。相反,在本申请中阐述的引起装置、设备、模块和系统的物理实施方案的改进(例如硅面积减小)的概念可以针对性能提高进行权衡。例如,这可以通过在预定义面积预算内制造模块的多个例项来完成。

申请人据此独立地公开了本文描述的每个单独的特征以及两个或两个以上此类特征的任意组合,到达的程度使得此类特征或组合能够根据所属领域的技术人员的普通常识基于本说明书整体来实行,而不管此类特征或特征的组合是否解决本文公开的任何问题。鉴于前文描述,可在本发明的范围内进行各种修改对于所属领域的技术人员来说是显而易见的。

相关技术
  • 除以整数常数的浮点除法
  • 使用浮点运算硬件进行微处理器整数除法操作的方法和装置
技术分类

06120116495882