CN106126190A - 部分余数/除数表拆分实现 - Google Patents
部分余数/除数表拆分实现 Download PDFInfo
- Publication number
- CN106126190A CN106126190A CN201610290437.2A CN201610290437A CN106126190A CN 106126190 A CN106126190 A CN 106126190A CN 201610290437 A CN201610290437 A CN 201610290437A CN 106126190 A CN106126190 A CN 106126190A
- Authority
- CN
- China
- Prior art keywords
- remainder
- look
- row
- sparse
- individual character
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/46—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using electromechanical counter-type accumulators
- G06F7/462—Multiplying; dividing
- G06F7/463—Multiplying; dividing by successive additions or subtractions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/491—Computations with decimal numbers radix 12 or 20.
- G06F7/498—Computations with decimal numbers radix 12 or 20. using counter-type accumulators
- G06F7/4983—Multiplying; Dividing
- G06F7/4988—Multiplying; Dividing by table look-up
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/535—Dividing only
- G06F7/537—Reduction of the number of iteration steps or stages, e.g. using the Sweeny-Robertson-Tocher [SRT] algorithm
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/552—Powers or roots, e.g. Pythagorean sums
- G06F7/5525—Roots or inverse roots of single operands
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
- Electrotherapy Devices (AREA)
- Logic Circuits (AREA)
Abstract
提供一种部分余数/除数表拆分实现。根据一个总的方面,设备可包括:关键字选择器,被配置为从输入值的至少一部分选择个性关键字。所述设备可包括:稀疏查找表,被配置为基于个性关键字和先前余数确定结果的部分。所述设备可包括:加法器,被配置为至少基于输入值和结果的所述部分计算当前余数。所述设备可被配置为迭代地计算当前余数和结果的部分,直到当前余数为零或者达到预定义水平的精度。
Description
本申请要求于2015年5月4日提交的标题为“部分余数/除数表拆分实现”的No.62/156,804号临时专利申请的优先权。所述先前提交的申请的主题通过引用包含于此。
技术领域
本说明书涉及用于执行数学运算的电路,更具体地,涉及用于执行除法的电路。
背景技术
除法是一种给定两个数,计算出它们的商和/或余数的数学运算。作为术语的余数,通常被除的较大的数被称为分子或被除数(N)。被除数所除以的数被称为分母或除数(D)。整数结果被称为商(Q),并且已经被确定为商之后剩下的任意数为余数(R)。或用更加常见的公式表述:
N/D=(Q,R),或
N=(Q×D)+R
如回忆我们在学校时所学,除法趋向于一种迭代过程。对于被除数中的每个数位(decimal place),人们推测除数将进入被除数多少次(直至当前数位)。然后,从被除数(N)减去推测的成倍的除数(Q×D),并得到局部或当前余数(PR)。然后,移动活动的小数点,并针对添加到(prepended to)被除数的下一数位的当前余数再次执行该过程。这样持续直到确定最终的商和余数(如果有)。
也许令人惊讶,计算机在进行除法时执行相同的基本操作集。主要的不同在于,由于计算机不使用基于10的或十进制数的系统,因此“小数点”被称为其更广泛的术语“基点”。能使用的基数越大,计算机需要完成的迭代可越少并且整个除法运算越快。
除法技术通常落入两个主要类别:低速除法和快速除法。低速除法算法每次迭代产生最终商的一个数位。慢速除法的示例包括恢复除法、不良恢复除法、不恢复除法和SRT除法。快速除法方法以对最终商的近似开始,并在每次迭代时产生两倍的最终商的数位。牛顿-拉夫逊(Newton–Raphson)法和戈尔德施密特(Goldschmidt)技术落入该类。
SRT除法以其创造者(斯威尼(Sweeney)、罗伯森(Robertson)和托赫尔(Tocher))命名,并且在很多微处理器实现中是用于除法的普遍方法。SRT除法类似于不恢复除法,但它使用基于被除数和除数的查找表来确定每个商位。英特尔奔腾处理器的声名狼藉的浮点型除法的漏洞就是由不正确编码的查找表造成的。1066个条目中的五个被错误地忽略。
SRT之类的除法的问题之一是查找表(LUT)可能会很大。随着基数增大(例如,从2到4,或甚至到16、32、64或128等),查找表的大小大幅增加的事实使该问题加重。一般来讲,随着查找表的大小增加,不止存储LUT所需的电路的大小增大,而且电路处理LUT所需的时间也增加。
发明内容
根据一个总的方面,设备可包括:关键字选择器,被配置为从输入值的至少一部分选择个性关键字。所述设备可包括:稀疏查找表,被配置为基于个性关键字和先前余数确定结果的部分。所述设备可包括:加法器,被配置为至少基于输入值和结果的所述部分计算当前余数。所述设备可被配置为迭代地计算当前余数和结果的部分,直到当前余数为零或者达到预定义水平的精度。
根据另一个总的方面,方法可包括:基于除数的至少一部分选择个性关键字。所述方法可包括:基于个性关键字和先前余数从稀疏查找表确定商的部分。所述方法可包括:基于被除数、除数和商的所述部分计算当前余数。所述方法可包括:迭代地执行确定商的部分和计算当前余数的步骤,直到当前余数为零或者达到预定义水平的精度。
根据另一个总的方面,片上系统(SoC)可包括:指令单元,被配置为将指令发送给算术单元,其中,所述指令与输入值有关。算术单元可包括:关键字选择器,被配置为从输入值的至少一部分选择个性关键字。算术单元可包括:稀疏查找表,被配置为基于个性关键字和先前余数确定结果的部分。算术单元可包括:加法器,被配置为基于输入值和结果的所述部分计算当前余数。算术单元可被配置为迭代地计算当前余数和结果的部分,直到当前余数为零或者达到预定义水平的精度。SoC可包括:存储器,被配置为存储结果。
在下面的附图和描述中对一个或多个实现的细节进行阐述。其他的特征通过描述和附图以及权利要求将是清楚的。
如在权利要求中更全面地阐述的,用于执行数学运算的电路的系统和/或方法,更具体地,用于执行除法的电路的系统和/或方法基本如至少一个附图所示和/或结合至少一个附图所描述。
附图说明
图1是根据公开的主题的系统的示例实施例的框图。
图2是根据公开的主题的系统的示例实施例的框图。
图3是根据公开的主题的数据结构的示例实施例的示图。
图4是根据公开的主题的系统的示例实施例的框图。
图5是根据公开的主题的数据结构的示例实施例的示图。
图6a是根据公开的主题的系统的示例实施例的框图。
图6b是根据公开的主题的数据结构的示例实施例的示图。
图6c是根据公开的主题的数据结构的示例实施例的示图。
图7是根据公开的主题的系统的示例实施例的框图。
图8是可包括根据公开的主题的原理而形成的装置的信息处理系统的示意性框图。
在各种附图中的相同的参考符号指示相同的元件。
具体实施方式
以下,将参照附图对各种示例实施例进行更加全面地描述,在附图中示出了一些示例实施例。然而,本公开的主题可以以多种不同的形式来实现,并且不应该被视为限于这里阐述的示例实施例。相反,提供这些示例实施例使得本公开将是彻底的和完整的,并且将本公开的主题的范围全面地传达给本领域技术人员。在附图中,为了清晰,可能夸大层和区域的大小以及相对大小。
将理解,当元件或层被称为“在……上”、“连接到”或“结合到”另一个元件或层时,它能直接在所述另一个元件或层上、连接到或结合到所述另一个元件或层,或者可存在中间元件或层。相反,当元件被称为“直接在……上”、“直接连接到”或“直接结合到”另一个元件或层时,不存在中间元件和层。相同的标号始终指代相同的元件。如这里使用的,术语“和/或”包括一个或多个关联的所列项的任何组合和全部组合。
将理解,尽管可在这里使用术语“第一”、“第二”、“第三”等描述各种元件、组件、区域、层和/或部分,但是这些元件、组件、区域、层和/或部分不应该由这些术语限制。这些术语只是用于将一个元件、组件、区域、层或部分与另一个区域、层或部分进行区分。因此,在不脱离本公开的主题的教导的情况下,以下讨论的第一元件、组件、区域、层或部分可被称为第二元件、组件、区域、层或部分。
空间相对术语(诸如“在…以下”、“在…下面”、“低于”、“在…之上”、“上面的”等)可在这里使用以便于说明书描述在附图中示出的一个元件或特征与另外的元件或特征的关系。将理解,空间相对术语意图包含除了在附图中描述的方向之外的装置在使用或操作中的不同方向。例如,如果翻转在附图中的装置,则被描述为在其他元件或特征“下面”或“以下”的元件可被定向为在其他元件或特征的“上面”。因此,示例性术语“在…下面”可包含上面和下面的两个方向。装置可被另外定向(旋转90度或朝向其他方向),并相应地解释了这里使用的与空间相关的描述符。
这里使用的术语仅是用于描述特定的示例实施例的目的,而意图不在于限制本公开的主题。如这里所使用的,除非上下文明确地另有指示,否则单数形式也意图包括复数形式。还将理解,当在本说明书中使用术语“包括”和/或“包括的”时,表明描述的特征、整体、步骤、操作、元件和/或组件的存在,但不排除一个或多个其他特征、整体、步骤、操作、元件、组件和/或它们的组的存在或添加。
在这里参照作为理想化的示例实施例的示意图的截面图(和中间结构)对示例实施例进行描述。因此,由于例如制造技术和/或公差导致的示图形状的变化是可预期的。因此,示例实施例不应被解释为限于这里示出的区域的特定形状,而是包括由于例如制造引起的形状上的偏差。例如,以矩形示出的注入区域通常将在其边缘上具有圆形的或弯曲的特征和/或注入浓度的梯度,而不是从注入区域到非注入的区域的二元变化。类似地,通过注入形成的埋入区可导致在埋入区和发生注入的表面之间的区域中的一些注入。因此,在附图中示出的区域在本质上是示意图,并且它们的形状不意图示出装置的区域的实际形状,并且不意图不限制本公开的主题的范围。
除非另有定义,否则这里使用的所有术语(包括技术术语和科学术语)具有和本公开的主题所属领域的普通技术人员普遍理解的含义相同的含义。还将理解,除非在这里明确地定义,否则术语(诸如在通用字典中定义的术语)应该被解释为具有与它们在相关领域的语境中的含义一致的含义,而不将被解释为理想化或过于正式的意义。
以下,将参照附图对示例实施例进行详细地说明。
图1是根据公开的主题的系统100的示例实施例的框图。在各种实施例中,系统100可包括处理器或甚至片上系统(SoC)。需理解,上述仅是一些说明性示例,公开的主题不限于此。
在示出的实施例中,系统100可包括:指令单元102,将指令发送给各种执行单元(仅示出一个)。在示出的实施例中,指令单元102可接收用于执行某些形式的除法(例如,整数除法、浮点除法、平方根运算等)的指令。指令单元102可将该指令发送给或转发给算术执行单元104。
在示出的实施例中,系统100可包括一个或多个算术执行单元104。在一些实施例中,算术单元104可处理整数数学运算。在另一个实施例中,算术单元104可处理浮点数学运算。需理解,上述仅是一些说明性示例,公开的主题不限于此。在示出的实施例中,算术单元104可被配置为执行除法运算(例如,平方根运算、除法运算等)。
在各种实施例中,系统100可包括存储单元106。在各种实施例中,该存储单元106可包括寄存器、高速缓存或更长期的存储器。在这样的实施例中,存储器106可被配置为存储诸如指令的输入和/或指令的输出或结果的数据。在各种实施例中,指令可与除数和被除数有关。在示出的实施例中,可通过存储器106将输入提供给算术单元104。在另一个实施例中,可由指令单元102提供输入。
在示出的实施例中,算术执行单元104可被配置为通过采用查找表(LUT)的技术来执行数学指令或运算。然而,如下所述,算术单元104可采用使用被除数的个性关键字(personality key,个性密钥)或特征(signature,签名)产生的稀疏查找表。
在这样的实施例中,算术单元104可包括:稀疏LUT产生器电路112,被配置为基于个性关键字和完整LUT产生稀疏LUT。由于该稀疏LUT可用于每次除法运算的交互,因此将完整LUT削弱为更有效和更稀疏的形式可获得显著效益。在一些实施例中,利用完整LUT的对称性,稀疏LUT甚至可折叠或减半,以减小LUT的大小达至少50%。
在示出的实施例中,稀疏LUT产生器电路112可将稀疏LUT提供给除法计算器电路114。然后,除法计算器电路114可迭代地采用稀疏LUT来确定除法运算的结果。在这样的实施例中,结果可包括商和余数。之后可在存储器106中存储这些结果。
在为了示例的清楚的目的的本文中,将在例如图2等中对处理除法指令的实施例进行描述。然而,需理解,除法仅是一个说明性示例,公开的主题不限于此。
在各种实施例中,可利用公开的主题来计算平方根值。在除法实施例中,第一输入值可以是除数,第二输入值可以是被除数。结果可以是商。在平方根实施例中,第一输入值可以是被开方数,结果可以是根。在一些实施例中,可存在n次方根实施例,其中,第二输入值是次数(例如,在平方根实施例中,次数可等于2;在立方根实施例中,次数可等于3,等)。基于公开的主题和已知的平方根计算方法,本领域技术人员将理解平方根实施例可以是如何产生的。需理解,上述仅是一些说明性示例,公开的主题不限于此。
图2是根据公开的主题的系统200的示例实施例的框图。在各种实施例中,系统200可包括被配置为执行给定除数292和被除数294作为输入的除法的数学运算的电路。在各种实施例中,除法运算的结果可包括商296和余数298。
在示出的实施例中,除法运算被示出为使用基数4。在各种实施例中,可改变基数,并且在一些实施例中,可基于接收的指令动态地修改基数。在各种实施例中,基数为2、4、8、16,甚至32、64或128是预期的。习惯上,在涉及较高基数(例如,16或更大)的电路中,LUT和相关的逻辑电路的大小可变得难以接受。然而,在示出的实施例中,稀疏LUT的使用,特别是与个性关键字有关的稀疏LUT的使用可将相关的电路和大小减小至可管理的部分。需理解,上述仅是一些说明性示例,公开的主题不限于此。
在示出的实施例中,系统200可包括:关键字表或选择器202,被配置为选择与除数292有关的个性关键字282。对于各个基数的大小(例如,4、8、16等),个性关键字282的大小和可能的个性关键字的数量可不同。在示出的实施例中,可存在八个均为11位的可能的关键字282。在这样的实施例中,可采用除数292的三个最高有效位(MSB)(或更一般地,除数292的部分)来选择八个可能的个性关键字中的一个。该关键字282决定商(或更具体地,q位(qbit)284)在除法过程中的每次迭代的期间是如何被选择或被推测的。与人们在手动执行十进制长除法时会使用不同次数的表(基于除数)来推测商的方式类似,个性关键字282允许系统200基于除数292对查找表进行改变。
在各种实施例中,系统200可包括用于存储稀疏LUT 290的稀疏存储器(例如,随机存取存储器(RAM)、多路复用器和触发器等)。在示出的实施例中,稀疏LUT产生器可能已经提供了稀疏LUT 290。下面将参照图3、图4、图5、图6a、图6b、图6c和图7对稀疏LUT 290的产生进行描述。
在各种实施例中,稀疏LUT 290可包括:一维表,具有若干由先前迭代的余数298(或其部分)的值来进行索引的条目。在一些实施例中,这些条目中的一些可以是常数(例如,0b10,0b11等)或可以是可变的并且依赖于个性关键字282(例如,关键字key[5:4],关键字key[1:0]、0b0&关键字key[10]等)。在这样的实施例中,由于关键字282一旦被选择(基于输入除数)将不会改变,因此稀疏LUT 290对于给定的除法运算的性能可以是不变的。
在这样的实施例中,稀疏LUT 290可包括一列和若干行。每一行的索引可以是先前迭代的余数298的一部分。在一个实施例中,如下所述,可针对每列将除法所采用的更大更通用的LUT分为更小的子LUT。还发现,由于更大的LUT的列是在除法运算的开始被设置,因此在运算的迭代的期间只需要使用一个子LUT。虽然之前已知在运算的开始对列进行设置的事实,但是如何利用这个事实还没有被成功地解决到由公开的主题所示出的程度。
在这样的实施例中,开发了关键字来表示每个子LUT。该关键字被示出为个性关键字282。每个个性关键字282允许按列然后按行减少,以获得最小的可能的关键字。可将关键字282传递给子LUT 290,并使稀疏LUT 290起到如同完整LUT那样的作用。拆分LUT具有减小LUT 290的大小的优点,并且稀疏LUT 290可从704个2位条目(16乘以44个)减少到22个条目。每个条目可包括用于Q位(Qbit)的2位。
此外,由于一些相邻行可包括相同的条目值,所以稀疏LUT 290可包括收缩的行,以便针对多输入或余数298的值选择相同的条目或行。
在传统的基数4的实施方式中,完整的部分余数LUT可包括704个2位条目。在示出的实施例中,针对基数4的实施方式的折叠的稀疏LUT 290可包括10个2位条目。需理解,上述仅是一个说明性示例,公开的主题不限于此。
在另一个实施例中,稀疏LUT 290不仅大小可被减小(例如,通过去除列和去除行等),还可被折叠。在这样的实施例中,稀疏LUT 290可包括折叠LUT。即,LUT 290可针对正行和负行两者而大致对称。在各种实施例中,可不针对正行和负行存在对称,而是针对非负(正和零两者)行和负行存在对称。将在以下对这种情况进行更详细地讨论。在这样的实施例中,如果余数298是负的,那么余数298(或作为索引而采用的部分)可在使用该值作为索引之前被反转(inverted)。在这样的实施例中,折叠稀疏LUT 290可不仅占据更少的空间,还随着反向器的使用而需要更少的逻辑(与处理正值和负值两者的多路复用器相比)。
在拆分LUT实施例的实施期间,表变得小得多和容易分析得多。正是这种大小的减小使人看到了第二种想法:表折叠。这种折叠的想法已经讨论和尝试了多年,但从来没有正确得到过。先前针对折叠表的尝试需要额外的逻辑来填补正的一半和负的一半不能彼此整齐地折叠的事实。然而,一旦LUT减小到更易于分析的地步,便看不到折叠表所需的调整。在折叠LUT(如下所述)之后,现在折叠LUT的最终大小只是11行2位的值。与完整LUT的704个条目相比,这是非常小的。在这样的实施例中,能够看到时序、逻辑和功耗的优点。
稀疏LUT 282的输出可以是商296的一部分(被称为q位(q)284)。在各种实施例中,随着基数的大小被改变,q位284的大小或数量可被改变。在一些实施例中,q位284可以是关于除数292将进入被除数294的当前部分的次数的推测。在示出的实施例中,可从稀疏LUT 290中选择五个可能的q位284的值:-2,-1,0,1和2。需理解,以上仅是一个说明性示例,公开的主题不限于此。
然后,除数292可之后被乘以q位284(在点250处示出)。在示出的实施例中,采用一种不恢复除法技术。在这样的实施例中,可采用先前余数298的符号来调整相乘的除数286(Q×D)的符号。
在各种实施例中,系统200可包括加法器204。加法器204可将相乘的除数286和先前余数298相加。在一些实施例中,加法器204可包括全加器204(而不是进位存储加法器(CSA))。在这样的实施例中,可不需要针对部分余数行选择的超前进位加法器。此外,全加器可产生允许系统使用更少(例如,6位等)的余数298进行行查找的更精确的值。全加器的另一个优点是,CSA的选择需要两组寄存器,以保持每次迭代的进位以及和的信息,而全加器不需要两组寄存器。对于双精度而言,这是具有两倍数量的触发器的大面积的成本,并且可通过全加器的使用来避免。在示出的实施例中,可采用符号位作为输入到加法器204的进位输入。需理解,以上仅是一个说明性示例,公开的主题不限于此。
在示出的实施例中,加法器的输出288可与被除数294结合,以产生新的或当前的余数298。该新的或当前余数298可在下一次迭代中成为先前余数298。在各种实施例中,结合的步骤可包括:对加法器的输出288进行由基数大小确定的一定数量的移位(例如,对于基数4的实施方式,2位)。需理解,通过增大基数大小,并由此增加由每次迭代来移位或处理的位的数量,可减少迭代的次数,并且减少了执行全部的除法运算所花费的时间。
系统200可处理多次迭代,直到余数298为零或者已经达到预定的或预定义的精度水平。在示出的实施例中,系统200可包括被配置为从每次迭代接收q位284并产生完整的商296的商累加器206。在最后一次迭代之后,可由系统200将商296和最终的余数298(如果有的话)输出(例如,到存储器等)。
图3是根据公开的主题的数据结构300的示例实施例的示图。在各种实施例中,数据结构300可包括针对基数4的实现的完整的部分余数/除数查找表。在示出的实施例中,LUT可包括16列和44行,共计704个条目。需理解,以上仅是一个说明性示例,公开的主题不限于此。
在示出的实施例中,列由除数的四个MSB确定或进行索引。因此,由于每次除法运算的除数保持恒定,因此选择的列将在整个除法运算的期间保持相同。相反地,行由部分或先前余数的六个MSB确定。由于部分或先前余数每当除法运算的迭代时将改变,所以除法运算的每次迭代时预期选择的行改变。
在示出的实施例中,示出了三种一般类型的条目或单元值。具有“超出范围”的值的条目被认为是“不在意”值,这意味着他们的值是不重要的。一般情况下,这些表示对于给定的除数的不可能的余数值(例如,除数3不能具有余数7)。具有固定值(例如,±2或10,±1或01,±0或00等)的条目是常数,并且不管除数如何都不变化。用一个或两个星号(“*”)标记的条目基于除数变化,并可由给定除数的个性关键字表示。每个条目表示二进制值,或(当被转换为十进制符号时)在商集{0,1,2}中的条目。在各种实施例中,可包括部分或先前余数的符号位,以形成冗余的商集{-2,-1,0,+1,+2}。需理解,以上仅是一个说明性示例,公开的主题不限于此。
此外,在示出的实施例中,存在六个加框的或突出显示的条目。应注意到,这些条目(关于行0000.00和行1111.11之间的中心线)是不对称的,因此提出表折叠操作的问题。
图4是根据公开的主题的系统400的示例实施例的框图。在各种实施例中,系统400可包括稀疏LUT产生器的实施例,如图1所示。在各种实施例中,稀疏LUT产生器400可被配置为基于输入的除数,产生每次除法运算或指令的稀疏LUT。
在示出的实施例中,稀疏LUT产生器400可包括完整的部分余数/除数(PD)表402,诸如在图3中示出的。在这样的实施例中,PD表402可包括针对每个除数的一系列的列以及针对每个部分余数(正和负两者)的一系列的行。
在示出的实施例中,稀疏LUT产生器400可包括:列选择器电路404,被配置为基于给定除数,选择当前除法运算将访问的列。在这样的实施例中,这可将LUT从很多列(例如,对于基数4,16列)减少到单个列。这已经发生了16:1或更大的缩减。
在示出的实施例中,稀疏LUT产生器400可包括行压缩器电路406。在这样的实施例中,具有带有类似条目值的相邻行的多个行可被减少为共同的或折叠(collapsed,坍塌)的行。例如,返回参照图3,针对行1100.00、1100.01、1100.10和1100.11的所有条目具有值0b01或X(不在意)。由于X可以是任何方便的值,所以在这种情况下,X可具有值0b01。因此,可认为所有从1100开始的行(1100.XX)具有0b01的值。可将这四个行折叠成具有1100.XX的索引和0b01的条目的单个行。在这四个行的情况下,可获得4:1的压缩率。这同样适用于其他行。
尽管示出的实施例显示列选择(404)和行压缩(406)同时发生,但是在各种实施例中,它们可顺序发生。在这样的实施例中,行压缩(406)可在列选择(404)之后发生。这样,任何非相似的行的条目可由允许更大行压缩的列选择进行移除。需理解,以上仅是一个说明性示例,公开的主题不限于此。
在一些实施例中,可组合列选择器电路404的输出和行压缩器电路406的输出以形成稀疏LUT 490。如以上参照图2所述,在每次迭代的期间,可采用稀疏LUT 490来产生或输出一个或多个q位484。
在一个实施例中,如图2所示,稀疏LUT 490可包括直接引用个性关键字482(例如,关键字[5:4],关键字[1:0]等)的各部分的条目,并且当访问稀疏LUT 490时,在每次迭代的期间可“填入”这些值。在这样的实施例中,存储关键字482的寄存器可以是向稀疏LUT 490逻辑的输入。相反地,在图4的示出的实施例中,由于个性关键字482在整个除法运算和指令期间是不变(静态)的,因此可将引用关键字482的稀疏LUT 490的值静态地嵌入到稀疏LUT 490。例如,如果条目指的是key[5:4]并且key[5:4]具有0b11的值,那么可将条目的值改变为0b11。因此,稀疏LUT 490可变为常数的阵列(针对该特定的除法运算)。在这样的实施例中,可对在图2中示出的系统进行适当地改变。需理解,以上仅是一个说明性示例,公开的主题不限于此。
图5是根据公开的主题的数据结构500的示例实施例的示图。在各种实施例中,数据结构500可包括针对基数4的实施方式的未折叠的稀疏部分余数/除数查找表。在示出的实施例中,可能已经将LUT减少到1列和25行,共计25个条目,或接近28:1的缩减。需理解,以上仅是一个说明性示例,公开的主题不限于此。
在示出的实施例中,只保留列0000。这提供了LUT大小的16:1的缩减。然后,已折叠各种相似的行。例如,已经将行1111.11和1111.10折叠成共同的行1111.1?(其中,“?”意味着不在意的1位)。这已经造成了LUT大小的进一步的缩减。
在示出的实施例中,各种行(例如,0010.11、1111.00等)包括常数或静态的条目值(例如,分别为0b01和0b10)。其他条目值可以是动态的或者依赖于个性关键字。例如,行0001.10的条目包括个性关键字的第24位和第23位。行1111.01的条目包括与常数值0b0相连的关键字的第27位。因为已经折叠了相似的行,所以稀疏LUT 500不再包括任何“X”或“不在意”条目。例如,行0010.11的先前的“不在意”条目已经被转换为常数0b01。需理解,以上仅是一些说明性示例,公开的主题不限于此。
当在图5中示出了未折叠稀疏LUT 500时,可见表沿着中心线(在0000.0?和1111.1?之间)是对称的。因此,在各种实施例中,可对折稀疏LUT 500,将行减少至13行。为了做到这一点,可不在严格的正值和负值之间折叠LUT500。相反,按照固定量(例如,-0.25或0b0.01)对中心线进行移位或偏移。当移位时,负的行和非负(正或者零)行可变得对称并可被折叠。
此外,可注意,在负值和非负值之间的部分余数的行索引或MSB仅是彼此的逆。因此,在一个实施例中,可在负的余数值被输入到折叠稀疏LUT500之前,将简单的反向器应用于负的余数值。在这样的实施例中,折叠稀疏LUT 500可作为多路复用器实现,并且折叠和反向可显著地减少实现折叠稀疏LUT查找功能所需的逻辑的量。
图6a是根据公开的主题的系统600的示例实施例的框图。在各种实施例中,系统600可包括如图1所示的稀疏LUT产生器的实施例。在各种实施例中,稀疏LUT产生器600可被配置为针对基于输入的除数的指令或每个除法运算产生稀疏LUT。
在示出的实施例中,稀疏LUT产生器600可包括完整的部分余数/除数(PD)表402和列选择器电路404。在这样的实施例中,稀疏LUT产生器600可包括行压缩器电路406。在一些实施例中,如上所述,可组合列选择器电路404的输出与行压缩器电路406的输出,以形成稀疏LUT 490。
在示出的实施例中,可折叠稀疏LUT 490以形成折叠稀疏LUT 690。在这样的实施例中,可按系数50%再次减小LUT的大小。在各种实施例中,可沿着划分负值和非负值(即,正值和零值)的中心线来折叠未折叠的稀疏LUT490。现在,折叠LUT 690的最终大小可以仅为11行的2位值。在这样的实施例中,与完整PD表402的704个条目相比,折叠LUT 690可很小。
图6b是根据公开的主题的表651的数据结构的示例实施例的框图。在各种实施例中,表651可包括如图5所示的稀疏LUT的实施例。在各种实施例中,可针对每次除法或平方根运算或指令产生稀疏LUT 651。
在示出的实施例中,稀疏LUT 651可包括正的和负的行或值。如可见的,正行和负行不是对称的,并且妨碍简单的折叠。换言之,行值的绝对值不是相等的。在行646(+1.50)和648(-1.75)之间可轻易看出不重合(不一致)。对于行646,正行+1.50具有个性关键字(p关键字[9:8])的第九位和第八位的值,而负行-1.50具有0b10的值。类似的,对于行648,正行+1.75具有个性关键字(p关键字[7:6])的第七位和第六位的值,而负行-1.75具有个性关键字(p关键字[9:8])的第九位和第八位的值。此外,在示出的实施例中,+0.00行642和-5.50行644不具有等同的配对物。不存在-0.00行和+5.50行。在这样的实施例中,必须采用额外的逻辑以处理这些边角情况。该额外逻辑增加了执行单元的大小和复杂度。
图6c是根据公开的主题的表652的数据结构的示例实施例的框图。在各种实施例中,表652可包括图6a所示的折叠的稀疏LUT的实施例。在各种实施例中,可针对每次除法或平方根运算或指令产生稀疏LUT 652。
在示出的实施例中,折叠的稀疏LUT 652可包括非负(即,正值和零值)行和负行。在这样的实施例中,可应用偏移(例如,0.25等)以对行(例如,负行等)进行移位,使得他们对齐并且对称。
在行666和668中可见这种对称的对齐。对于行666,正行+1.50具有个性关键字(p关键字[9:8])的第九位和第八位的值,同样,移位的或偏移的负行-1.750具有个性关键字(p关键字[9:8])的第九位和第八位的值。同样,对于行668,正行+1.75具有个性关键字(p关键字[7:6])的第七位和第六位的值,并且移位的或偏移的负行-2.00具有个性关键字(p关键字[7:6])的第七位和第六位的值。此外,在该实施例中,+0.00行和-5.50行现在分别在-0.25行和+5.25行具有等同的配对物。需理解,以上仅是一些说明性示例,公开的主题不限于此。
图7是根据公开的主题的系统的示例实施例的框图。在各种实施例中,系统700可以是图2的系统的局部实施例的特定示例。在示出的实施例中,示出了折叠稀疏LUT 790的示例。
在示出的实施例中,示出了10行折叠稀疏LUT 790。此外,行索引已经从6位减少到5位。行索引的MSB包括符号位,并且通过只将负行折叠到非负行,(在行索引中)不需要符号位。可仍然使用符号位来指示应被反向的行(或部分余数的MSB),但是,一旦行被反向(为非负值),行索引的MSB可被忽略。该反向(由紧挨着行触发器299的反向器799示出)可从折叠稀疏LUT 790处理逻辑的关键路径中去除多路复用电平。因此,可进一步降低处理折叠稀疏LUT 790的逻辑的复杂度。
在示出的实施例中,对于示出的列0000,折叠稀疏LUT 790可包括下面的行和条目:
000.0?=0b00
000.10=key[10],与0b0连接
000.11=0b01
001.0?=0b01
001.10=key[9:8]
001.11=key[7:6]
010.00=key[5:4]
010.01=key[3:2]
010.10=key[1:0]
011.1?=0b01
因此,折叠稀疏LUT 790可包括均为2位的10个条目,或者共计20位。与全部704个条目的PD LUT相比,这可以是根本的节省。需理解,以上仅是一个说明性示例,公开的主题不限于此。
在各种实施例中,可使用其他列或除数。此外,虽然示出的示例展现基数4的实施例的使用,但是需理解,可将个性关键字和折叠稀疏LUT的原理应用于其他基数实施方式。例如,可以看到对于更高的基数(诸如,基数8、16或32)的除法运算的益处。潜在地,可采用可能非常高的基数的运算(例如,64和128等)。
图8是可包括根据公开的主题的原理而形成的半导体装置的信息处理系统800的示意性框图。
参照图8,信息处理系统800可包括根据公开的主题的原理而构造的一个或多个装置。在另一个实施例中,信息处理系统800可采用或执行根据公开的主题的原理的一个或多个技术。
在各种实施例中,信息处理系统800可包括计算装置(例如,诸如笔记本电脑、台式电脑、工作站、服务器、刀片式服务器、个人数字助手、智能电话、平板电脑以及其他合适的计算机等)或者虚拟机或其虚拟计算装置。在各种实施例中,信息处理系统800可由用户(未示出)使用。
根据公开的主题的信息处理系统800还可包括中央处理器(CPU)、逻辑或处理器810。在一些实施例中,处理器810可包括一个或多个功能单元块(FUB)或组合逻辑块(CLB)815。在这样的实施例中,组合逻辑块可包括各种布尔逻辑运算(例如,NAND(与非)、NOR(或非)、NOT(非)、XOR(异或)等)、稳定逻辑装置(例如,触发器、锁存器等)、其他逻辑装置或它们的组合。这些组合逻辑运算可被配置为以简单或复杂的方式处理输入信号来获得期望的结果。需理解,尽管描述了一些同步组合逻辑运算的说明性示例,但是公开的主题不受此限制并且可包括异步运算或它们的混合。在一个实施例中,组合逻辑运算可包括多个互补金属氧化物半导体(COMS)晶体管。在各种实施例中,可将这些COMS晶体管布置到执行逻辑运算的门中;但是需理解,其他技术可被使用并且在公开的主题的范围内。
根据公开的主题的信息处理系统800还可包括易失性存储器820(例如,随机存取存储器(RAM)等)。根据公开的主题的信息处理系统800还可包括非易失性存储器830(例如,硬盘驱动器、光学存储器、NAND或闪速存储器等)。在一些实施例中,易失性存储器820、非易失性存储器830或它们的组合或部分可被称为“存储介质”。在各种实施例中,易失性存储器820和/或非易失性存储器830可被配置为以半永久或基本上永久的形式存储数据。
在各种实施例中,信息处理系统800可包括:一个或多个网络接口840,被配置为允许信息处理系统800通过通信网络而成为通信网络的一部分并进行通信。Wi-Fi协议的示例可包括(但不限于)电气和电子工程师协会(IEEE)802.11g,IEEE 802.11n等。蜂窝协议的示例可包括(但不限于)IEEE 802.16m(亦称,先进无线MAN(城域网))、先进长期演进(LTE)、增强型数据速率的GMS(全球移动通信系统)演进(EDGE)、演化高速分组接入(HSPA+)等。有线协议的示例可包括(但不限于)IEEE 802.3(亦称,以太网)、光纤通道和电力线通信(例如,电力猫(HomePlug),IEEE 1901等)等。需理解,以上仅是一些说明性示例,公开的主题不限于此。
根据公开的主题的信息处理系统800还可包括用户接口单元850(例如,显示适配器、触觉接口、人机接口装置等)。在各种实施例中,该用户接口单元850可被配置为从用户接收输入和/或为用户提供输出。也可使用其他种类的装置来提供与用户的交互;例如,向用户提供的反馈可以是任何形式的感知反馈(例如,视觉反馈、听觉反馈或触觉反馈);并且可以以任何方式接收来自用户的输入(包括声音、语音或触觉输入)。
在各种实施例中,信息处理系统800可包括一个或多个其他装置或硬件组件860(例如,显示器或监视器,键盘,鼠标,相机,指纹读取器,视频处理器等)。需理解,以上仅是一些说明性示例,公开的主题不限于此。
根据公开的主题的信息处理系统800还可包括一条或多条系统总线805。在这样的实施例中,系统总线805可被配置为通信地连接处理器810、易失性存储器820、非易失性存储器830、网络接口840、用户接口单元850和一个或多个硬件组件860。可将由处理器810处理的数据或从非易失性存储器830的外部输入的数据存储在非易失性存储器830或易失性存储器820中。
在各种实施例中,信息处理系统800可包括或执行一个或多个软件组件870。在一些实施例中,软件组件870可包括操作系统(OS)和/或应用。在一些实施例中,OS可被配置为向应用提供一个或多个服务,并管理信息处理系统800的应用和各种硬件组件(例如,处理器810、网络接口840等)或充当信息处理系统800的应用和各种硬件组件之间的中介。在这样的实施例中,信息处理系统800可包括一个或多个本地应用,本地应用可被安装在本地(例如,在非易失性存储器内等),并被配置为由处理器810直接执行并与OS直接交互。在这样的实施例中,本地应用可包括预编译的机器可执行代码。在一些实施例中,本地应用可包括被配置为将源代码或目标代码转换为随后由处理器810执行的可执行代码的脚本解释器(例如,C shell(csh)、AppleScript、AutoHotkey等)或虚拟执行机(VM)(例如,Java虚拟机、微软公共语言运行库等)。
上述半导体装置可使用各种封装技术进行封装。例如,根据公开的主题的原理构造的半导体装置可通过使用以下任何一种技术或本领域普通技术人员所公知的其他技术进行封装:层叠封装(POP)技术、球栅阵列(BGA)技术、芯片级封装(CSP)技术、塑料引线芯片载体(PLCC)技术、塑料双列直插式封装(PDIP)技术、裸片格栅技术、裸片级晶片形式技术、板上芯片(COB)技术、陶瓷双列直插式封装(CERDIP)技术、塑料方形扁平封装(公制)(PMQFP)技术、塑料方形扁平封装(PQFP)技术、小外形封装(SOIC)技术、紧缩型小外形封装(SSOP)技术、薄型小外形封装(TSOP)技术、薄型方形扁平封装(TQFP)技术、系统级封装(SIP)技术、多芯片封装(MCP)技术、晶圆级封装(WFP)技术、晶圆级处理堆栈封装(WSP)技术。
方法步骤可由执行计算机程序以通过操作输入数据并产生输出来执行功能的一个或多个可编程处理器执行。方法步骤还可由专用逻辑电路(例如,FPGA(现场可编程门阵列)或ASIC(应用专用集成电路))执行,并且设备可被实现为专用逻辑电路。
在各种实施例中,计算机可读介质可包括指令,当所述指令被执行时,使装置执行所述方法步骤的至少一部分。在一些实施例中,计算机可读介质可被包括在磁介质、光学介质、其他介质或它们的组合(例如,CD-ROM、硬盘驱动器、只读存储器、闪存驱动器等)中。在这样的实施例中,计算机可读介质可以是有形和非暂时性地实现的制造品。
虽然已经参照示例实施例对公开的主题的原理进行了描述,但是本领域技术人员将清楚,在不脱离这些公开的构思的精神和范围的情况下,可对示例实施例进行各种改变和修改。因此,应理解,上述实施例不是限制性的,而仅是说明性的。因此,公开的构思的范围将由权利要求及其等同物的最宽泛的可允许的解释来确定,而不应该被前述的描述所局限或限制。因此,将理解,权利要求旨在覆盖落入实施例的范围之内的所有修改和改变。
Claims (20)
1.一种设备,包括:
关键字选择器,被配置为从输入值的至少一部分选择个性关键字;
稀疏查找表,被配置为基于个性关键字和先前余数确定结果的部分;
加法器,被配置为至少基于输入值和结果的所述部分计算当前余数;
其中,所述设备被配置为迭代地计算当前余数和结果的部分,直到当前余数为零或者达到预定义水平的精度。
2.如权利要求1所述的设备,还包括稀疏查找表产生器,被配置为:
基于输入值的至少一部分,选择部分余数查找表的列;
基于先前余数,选择部分余数查找表的行;
其中,部分余数查找表包括多个条目,所述多个条目包括个性关键字的部分。
3.如权利要求2所述的设备,其中,稀疏查找表包括折叠的稀疏查找表;
其中,稀疏查找表产生器被配置为:
折叠具有共同条目的行,
按预定义的量对负行进行移位,
折叠非负行和负行以形成折叠的稀疏查找表。
4.如权利要求1所述的设备,其中,加法器包括全加器。
5.如权利要求1所述的设备,其中,对于基数4,稀疏查找表包括20位。
6.如权利要求1所述的设备,其中,个性关键字在迭代之间保持不变。
7.如权利要求1所述的设备,其中,从由2、4、8、16、32、64和128构成的组中选择稀疏查找表的基数。
8.如权利要求1所述的设备,其中,如果所述设备被配置为计算除法运算,则输入值是除数,结果是商;
如果所述设备被配置为计算平方根运算;则输入值是被开方数,结果是根。
9.如权利要求1所述的设备,其中,稀疏查找表包括:反向器,如果先前余数为负,则反向器用于将先前余数进行反向。
10.一种方法,包括:
基于除数的至少一部分选择个性关键字;
基于个性关键字和先前余数从稀疏查找表确定商的部分;
基于被除数、除数和商的所述部分计算当前余数;
迭代地执行确定商的部分和计算当前余数的步骤,直到当前余数为零或者达到预定义水平的精度。
11.如权利要求10所述的方法,还包括产生稀疏查找表,
其中,产生稀疏查找表的步骤包括:
基于除数的至少一部分,选择部分余数查找表的列;
基于先前余数,选择部分余数查找表的行;
其中,部分余数查找表包括多个条目,所述多个条目包括个性关键字的部分。
12.如权利要求11所述的方法,其中,稀疏查找表包括折叠的稀疏查找表;
其中,产生稀疏查找表的步骤包括:
折叠具有共同条目的行,
按预定义的量对负行进行移位,
折叠非负行和负行以形成折叠的稀疏查找表。
13.如权利要求10所述的方法,其中,计算当前余数的步骤包括:
将除数乘以商的所述部分,以形成倍乘的除数;
通过全加器将倍乘的除数与当前余数相加。
14.如权利要求10所述的方法,其中,可从由4、8和16构成的组中选择稀疏查找表的基数。
15.如权利要求10所述的方法,其中,确定商的部分的步骤包括:如果先前余数为负,则将先前余数进行反向。
16.如权利要求10所述的方法,其中,与相同基数的完整的部分余数查找表相比,稀疏查找表的每列包括少于50%的条目。
17.一种片上系统(SoC),包括:
指令单元,被配置为将指令发送给算术单元,其中,所述指令与输入值有关;
算术单元,包括:
关键字选择器,被配置为从输入值的至少一部分选择个性关键字,稀疏查找表,被配置为基于个性关键字和先前余数确定结果的部分,加法器,被配置为基于输入值和结果的所述部分计算当前余数,
其中,算术单元被配置为迭代地计算当前余数和结果的部分,直到当前余数为零或者达到预定义水平的精度为止;
存储器,被配置为存储结果。
18.如权利要求17所述的片上系统,其中,所述指令是除法指令或平方根指令。
19.如权利要求17所述的片上系统,包括:稀疏查找表产生器,被配置为:
基于输入值的至少一部分,选择部分余数查找表的列;
基于先前余数,选择部分余数查找表的行;
其中,部分余数查找表包括多个条目,所述多个条目包括个性关键字的部分。
20.如权利要求19所述的片上系统,其中,稀疏查找表包括折叠的稀疏查找表;
其中,稀疏查找表产生器被配置为:
折叠具有共同条目的行,
按预定义的量对中心线进行移位,
折叠非负行和负行以形成折叠的稀疏查找表。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562156804P | 2015-05-04 | 2015-05-04 | |
US62/156,804 | 2015-05-04 | ||
US14/972,077 US10209957B2 (en) | 2015-05-04 | 2015-12-16 | Partial remainder/divisor table split implementation |
US14/972,077 | 2015-12-16 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106126190A true CN106126190A (zh) | 2016-11-16 |
CN106126190B CN106126190B (zh) | 2021-04-13 |
Family
ID=57223270
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610290437.2A Active CN106126190B (zh) | 2015-05-04 | 2016-05-04 | 部分余数/除数表拆分实现 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10209957B2 (zh) |
KR (1) | KR102449169B1 (zh) |
CN (1) | CN106126190B (zh) |
TW (1) | TWI695315B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110069237A (zh) * | 2019-04-19 | 2019-07-30 | 哈尔滨理工大学 | 一种基于查找表的基-8除法器信号处理方法 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10209959B2 (en) | 2016-11-03 | 2019-02-19 | Samsung Electronics Co., Ltd. | High radix 16 square root estimate |
US10809980B2 (en) * | 2017-06-14 | 2020-10-20 | Arm Limited | Square root digit recurrence |
CA3125393A1 (en) * | 2018-12-31 | 2020-07-09 | Huawei Technologies Co., Ltd. | Method and apparatus of cross-component linear modeling for intra prediction |
KR102342994B1 (ko) * | 2020-07-21 | 2021-12-24 | 고려대학교 산학협력단 | 산술 연산을 지원하는 인메모리 컴퓨팅 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3235717A (en) * | 1955-08-05 | 1966-02-15 | Kienzle Apparate Gmbh | Matrix information transforming device |
US5777917A (en) * | 1996-03-21 | 1998-07-07 | Hitachi Micro Systems, Inc. | Simplification of lookup table |
KR20010060033A (ko) * | 1999-12-31 | 2001-07-06 | 이계철 | 디지털신호처리기를 이용한 직교 주파수 분할 다중화처리시 나눗셈 구현방법 |
CN1668995A (zh) * | 2002-06-06 | 2005-09-14 | 克瑞迪科公司 | 用于改善伪随机数发生器的输出的不可预测性的方法 |
US7107135B2 (en) * | 2003-10-31 | 2006-09-12 | Ford Global Technologies, Llc | Auxiliary gearset shift progression command generator for a swap-shift automatic transmission |
US7127483B2 (en) * | 2001-12-26 | 2006-10-24 | Hewlett-Packard Development Company, L.P. | Method and system of a microprocessor subtraction-division floating point divider |
CN1979411A (zh) * | 2005-11-30 | 2007-06-13 | 北京中电华大电子设计有限责任公司 | 一种高速除法器的实现方法与装置 |
CN101645001A (zh) * | 2009-09-07 | 2010-02-10 | 中国电子科技集团公司第十四研究所 | 基于可编程逻辑器件的二进制移位除法的处理过程 |
CN101986259A (zh) * | 2010-11-25 | 2011-03-16 | 中国人民解放军国防科学技术大学 | 无符号定点除法及无符号定点除法器 |
CN102184086A (zh) * | 2011-05-11 | 2011-09-14 | 电子科技大学 | 一种Booth编码器及乘法器 |
CN103491370A (zh) * | 2012-06-11 | 2014-01-01 | 晨星半导体股份有限公司 | 一元/k阶指数哥伦布码的解码方法及解码器 |
CN103593159A (zh) * | 2012-08-14 | 2014-02-19 | 重庆重邮信科通信技术有限公司 | 一种高效率高精度除法实现方法及装置 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5031138A (en) * | 1990-06-04 | 1991-07-09 | International Business Machines Corporation | Improved ratio decoder for use in a non-restoring binary division circuit |
US7181484B2 (en) * | 2001-02-21 | 2007-02-20 | Mips Technologies, Inc. | Extended-precision accumulation of multiplier output |
US6782405B1 (en) | 2001-06-07 | 2004-08-24 | Southern Methodist University | Method and apparatus for performing division and square root functions using a multiplier and a multipartite table |
KR100433131B1 (ko) | 2002-07-31 | 2004-05-28 | 학교법인연세대학교 | 작은 사이즈의 룩업 테이블을 갖는 파이프라인 나눗셈연산기 및 연산방법 |
JP4273071B2 (ja) * | 2004-12-15 | 2009-06-03 | エヌイーシーコンピュータテクノ株式会社 | 除算・開平演算器 |
US8898215B2 (en) * | 2007-06-28 | 2014-11-25 | King Fahd University Of Petroleum And Minerals | High-radix multiplier-divider |
US8725786B2 (en) | 2009-04-29 | 2014-05-13 | University Of Massachusetts | Approximate SRT division method |
TWI403952B (zh) * | 2009-05-15 | 2013-08-01 | Chunghwa Telecom Co Ltd | A large integer modulus index chip structure for signature cryptography |
US8819094B2 (en) | 2009-06-10 | 2014-08-26 | Synopsys, Inc. | Multiplicative division circuit with reduced area |
KR20120027827A (ko) | 2010-09-13 | 2012-03-22 | 한국전자통신연구원 | 디바이더 및 그것의 동작 방법 |
US8914431B2 (en) * | 2012-01-03 | 2014-12-16 | International Business Machines Corporation | Range check based lookup tables |
CN103984521B (zh) * | 2014-05-27 | 2017-07-18 | 中国人民解放军国防科学技术大学 | Gpdsp中simd结构浮点除法的实现方法及装置 |
US20160313976A1 (en) * | 2015-04-21 | 2016-10-27 | Qualcomm Incorporated | High performance division and root computation unit |
-
2015
- 2015-12-16 US US14/972,077 patent/US10209957B2/en active Active
-
2016
- 2016-03-11 KR KR1020160029635A patent/KR102449169B1/ko active IP Right Grant
- 2016-03-15 TW TW105107826A patent/TWI695315B/zh active
- 2016-05-04 CN CN201610290437.2A patent/CN106126190B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3235717A (en) * | 1955-08-05 | 1966-02-15 | Kienzle Apparate Gmbh | Matrix information transforming device |
US5777917A (en) * | 1996-03-21 | 1998-07-07 | Hitachi Micro Systems, Inc. | Simplification of lookup table |
KR20010060033A (ko) * | 1999-12-31 | 2001-07-06 | 이계철 | 디지털신호처리기를 이용한 직교 주파수 분할 다중화처리시 나눗셈 구현방법 |
US7127483B2 (en) * | 2001-12-26 | 2006-10-24 | Hewlett-Packard Development Company, L.P. | Method and system of a microprocessor subtraction-division floating point divider |
CN1668995A (zh) * | 2002-06-06 | 2005-09-14 | 克瑞迪科公司 | 用于改善伪随机数发生器的输出的不可预测性的方法 |
US7107135B2 (en) * | 2003-10-31 | 2006-09-12 | Ford Global Technologies, Llc | Auxiliary gearset shift progression command generator for a swap-shift automatic transmission |
CN1979411A (zh) * | 2005-11-30 | 2007-06-13 | 北京中电华大电子设计有限责任公司 | 一种高速除法器的实现方法与装置 |
CN101645001A (zh) * | 2009-09-07 | 2010-02-10 | 中国电子科技集团公司第十四研究所 | 基于可编程逻辑器件的二进制移位除法的处理过程 |
CN101986259A (zh) * | 2010-11-25 | 2011-03-16 | 中国人民解放军国防科学技术大学 | 无符号定点除法及无符号定点除法器 |
CN102184086A (zh) * | 2011-05-11 | 2011-09-14 | 电子科技大学 | 一种Booth编码器及乘法器 |
CN103491370A (zh) * | 2012-06-11 | 2014-01-01 | 晨星半导体股份有限公司 | 一元/k阶指数哥伦布码的解码方法及解码器 |
CN103593159A (zh) * | 2012-08-14 | 2014-02-19 | 重庆重邮信科通信技术有限公司 | 一种高效率高精度除法实现方法及装置 |
Non-Patent Citations (1)
Title |
---|
马上等: "一种余数系统基扩展算法及VLSI实现", 《电子科技大学学报》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110069237A (zh) * | 2019-04-19 | 2019-07-30 | 哈尔滨理工大学 | 一种基于查找表的基-8除法器信号处理方法 |
Also Published As
Publication number | Publication date |
---|---|
US20160328207A1 (en) | 2016-11-10 |
US10209957B2 (en) | 2019-02-19 |
KR20160130700A (ko) | 2016-11-14 |
KR102449169B1 (ko) | 2022-09-29 |
CN106126190B (zh) | 2021-04-13 |
TWI695315B (zh) | 2020-06-01 |
TW201643691A (zh) | 2016-12-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106126190A (zh) | 部分余数/除数表拆分实现 | |
Samimi et al. | Res-DNN: A residue number system-based DNN accelerator unit | |
US20080069337A1 (en) | System and method for multi-precision division | |
KR102581403B1 (ko) | 공유 하드웨어 로직 유닛 및 그것의 다이 면적을 줄이는 방법 | |
Boppana et al. | Low-cost and high-performance 8× 8 booth multiplier | |
US11954456B2 (en) | Float division by constant integer | |
Mohajer et al. | Routing magic: Performing computations using routing networks and voting logic on unary encoded data | |
CN108021477B (zh) | 执行递归操作的方法、计算机设备、制造和测试方法 | |
US9684489B2 (en) | Squaring circuit | |
Lee et al. | Efficient $ M $-ary exponentiation over $ GF (2^{m}) $ using subquadratic KA-based three-operand Montgomery multiplier | |
Asibelagh et al. | Partial ternary full adder versus complete ternary full adder | |
US10175943B2 (en) | Sorting numbers in hardware | |
Namin et al. | A Fully Serial-In Parallel-Out Digit-Level Finite Field Multiplier in $\mathbb {F} _ {2^{m}} $ Using Redundant Representation | |
WO2022247193A1 (zh) | 用于数据处理的装置、方法、芯片、计算机设备及介质 | |
CN104615404A (zh) | 一种基于查表操作的高速浮点除法部件装置 | |
US11157672B1 (en) | System and method for determining hybrid-manufacturing process plans for integrated circuits based on satisfiability modulo difference logic solver | |
Parashar et al. | Fast combinational architecture for a vedic divider | |
Barik et al. | An efficient redundant binary adder with revised computational rules | |
Blanton et al. | Secure and Accurate Summation of Many Floating-Point Numbers | |
US20230031551A1 (en) | Constant multiplication by division | |
US20230030495A1 (en) | Hybrid fixed logic for performing multiplication | |
Fit-Florea et al. | A discrete logarithm number system for integer arithmetic modulo 2^{k}: algorithms and lookup structures | |
Li et al. | High-speed modulo (2n+ 3) multipliers | |
Miclea | Speeding-up polynomial multiplication on Virtex FPGAs: Finding the best addition method | |
CN113554163A (zh) | 卷积神经网络加速器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |