CN100437467C - 部分逐位置换 - Google Patents

部分逐位置换 Download PDF

Info

Publication number
CN100437467C
CN100437467C CNB028086317A CN02808631A CN100437467C CN 100437467 C CN100437467 C CN 100437467C CN B028086317 A CNB028086317 A CN B028086317A CN 02808631 A CN02808631 A CN 02808631A CN 100437467 C CN100437467 C CN 100437467C
Authority
CN
China
Prior art keywords
register
instruction
specifier
bit
source
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.)
Expired - Fee Related
Application number
CNB028086317A
Other languages
English (en)
Other versions
CN1503936A (zh
Inventor
K·D·基斯塞尔
H·W·J·埃克纳
M·斯特里贝克
J·S·詹森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Arm Overseas Finance Co ltd
Overpass Bridge Co ltd
Original Assignee
MIPS Technologies Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by MIPS Technologies Inc filed Critical MIPS Technologies Inc
Publication of CN1503936A publication Critical patent/CN1503936A/zh
Application granted granted Critical
Publication of CN100437467C publication Critical patent/CN100437467C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • CCHEMISTRY; METALLURGY
    • C04CEMENTS; CONCRETE; ARTIFICIAL STONE; CERAMICS; REFRACTORIES
    • C04BLIME, MAGNESIA; SLAG; CEMENTS; COMPOSITIONS THEREOF, e.g. MORTARS, CONCRETE OR LIKE BUILDING MATERIALS; ARTIFICIAL STONE; CERAMICS; REFRACTORIES; TREATMENT OF NATURAL STONE
    • C04B2237/00Aspects relating to ceramic laminates or to joining of ceramic articles with other articles by heating
    • C04B2237/30Composition of layers of ceramic laminates or of ceramic or metallic articles to be joined by heating, e.g. Si substrates
    • C04B2237/32Ceramic
    • C04B2237/36Non-oxidic
    • C04B2237/366Aluminium nitride
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)

Abstract

在微处理器或微控制器中提供了部分逐位置换指令。部分逐位指令可以由下列方式中的一项或多项来指定:目标说明符、先前的部分值的源、目标子集说明符和控制说明符。微处理器或微控制器中的阵列单元(3030)包括两个并行乘法器(Marray 4100和MParray 4200)和置换逻辑(4300)。第一个阵列Marray 4100执行算术乘法。Marray(4100)使用Acc1(3031)、Acc2(3032)、M(3033)和sel(3034)作为输入,产生结果C和结果S作为输出。第二个阵列MParray 4200执行二进制多项式乘法。置换逻辑(4300)用来根据RThold(3012)中的值对RShold的低阶执行各种置换。

Description

部分逐位置换
技术领域
本发明涉及用于在微处理器中执行部分逐位置换的技术。
背景技术
随着工业趋势趋向于更大更复杂的指令集,精简指令集计算机(RISC)体系结构被开发出来。通过简化指令集设计,RISC体系结构使得使用像流水线和高速缓存这样的技术更加容易,从而提高系统性能。
RISC体系结构的指令通常是固定长度的(例如,16-位、32-位或64-位),指令格式很少变化。指令集结构(ISA)中的每条指令都可以具有总是在相同位置的源寄存器。例如,32-位ISA可以总是具有由16-20位和21-25位指定的源寄存器。这允许为每条指令提取指定的寄存器而不需要进行任何复杂的指令译码。
发明内容
密码系统(“cryptosystem”)正日益用来保护事务、加密通信、鉴别用户并保护信息。
很多密钥加密系统,例如数字加密标准(DES),对数据块执行异或、循环和置换的序列操作的硬件解决方案来说,在计算上相对简单并且经常可简化。
在一个通用方面,在指令集体系结构中提供了用于执行部分逐位置换的指令。该指令包括标识该指令为部分置换指令的操作码和置换操作规范。置换操作规范包括标识目标寄存器的目标说明符、先前的部分值的源说明符、目标子集说明符和控制说明符。目标子集说明符标识目标寄存器的一个或多个目标位,控制说明符为标识出的目标位中的每一位标识源。该指令通过执行由置换操作规范定义的部分逐位置换加以处理。
实现方案可以包括显式或隐式地标识目标寄存器的目标说明符。目标寄存器可以被指定为微处理器的乘/除单元中的累加器和/或通用寄存器。同样,部分值的源说明符可以隐式或显式地标识先前部分值的源寄存器。先前的部分值的源寄存器可以被指定为累加器和/或通用寄存器。另外,目标寄存器和先前的部分值的源寄存器也可以被标识为相同的寄存器。
在一些实现方案中,目标子集说明符标识目标寄存器中的一个连续的位块。该连续的位块可以包括目标寄存器的最低有效位。不同的实现方案可以在该连续的位块中包括1-6位或者更多位。
控制子集符可以包括一个或多个源位说明符,还可以包括一个掩码位和一个缺省位。另外,控制子集说明符可以作为指令内的一个字段加以存储或被存储在通用寄存器中。
实现方案可以包括在RISC指令集中提供部分置换指令。
在本发明的一个方面,提供了一种用指令执行部分逐位置换的方法,该方法包括:
从数据存储区提取指令,以执行操作;
读一个或多个寄存器;
执行由该指令指定的操作,该指令包括:
用于标识该指令为部分置换指令的操作码;和
置换操作规范,包括:
用于标识目标寄存器的目标说明符;
先前的部分值的源说明符;
标识所述目标寄存器中的一个或多个目标位的目标子集说明符;以及
用于为由所述目标子集说明符标识的所述一个或多个目标位中的每一个标识源的控制说明符;
其中该指令是通过执行由所述置换操作规范定义的部分逐位置换而加以处理的。
在本发明的另一个方面,提供了一种用于在一包含第一通用寄存器、第二通用寄存器和扩展精度累加器的微处理器中执行部分置换的方法包括:
把扩展精度累加器的内容移位以产生预定数量的开位的位置;
用第一个通用寄存器中包含的信息选择填充所述开位的位置的位;以及
用从第二个通用寄存器中获取的位填充所述开位的位置,其中移位、选择和填充均响应单条指令而发生。
在附图和下面的描述中将阐明一种或多种实现方案的细节。从描述、附图以及权利要求中也可以明显地看到其它特性和优点。
附图说明
图1是可以用在RISC体系结构中的一种示例性五步流水线的框图。
图2是包括执行单元和乘/除单元的处理器内核的框图。
图3是在一种支持二进制多项式算术的乘/除单元中实现的数据通路图。
图4是在一种实现方案中支持算术和二进制多项式乘法的乘法器阵列的框图。
图5是可以用在图4所示的实现方案中的算术乘法器阵列的框图。
图6是可以用在图4中所示的实现方案中的二进制多项式乘法器的框图。
图7A是描述在一种实现方案中的32-位乘16-位的操作的时序图。
图7B是描述在一种实现方案中的32-位乘32-位的操作的时序图。
图7C是描述在一种实施方案中的除法操作的时序图。
图8是实现用于执行乘法指令的步骤的有限状态机。
图9是实现用于执行除法指令的步骤的有限状态机。
图10A是具有四个操作数的示例性部分置换指令的指令编码。
图10B是一种用于诸如图10A中所示的部分置换指令的操作数的示例性控制字编码格式。
图11A和11B是不使用控制字操作数的示例性部分置换指令的指令编码。
图12A是隐式地使用乘/除单元的寄存器的示例性部分置换指令的指令编码。
图12B是一种用于诸如图12A中所示的部分置换指令的操作数的示例性控制字编码格式。
图13A是隐式地使用乘/单元的寄存器的另一条部分置换指令的指令编码。
图13B是一种用于诸如图13A中所示的部分置换指令的示例性控制字编码格式。
具体实施方式
一些加密操作,例如数字加密标准(DES)(以及准备用来代替DES的高级加密标准(AES)的几个候选标准),对数据值执行某种程度的逐位置换。这些很难映射到传统微处理器指令集体系结构的操作可以用硬件非常有效地实现。然而,国家标准与技术局还处在制定新的AES标准过程中。因此,不太确定在将来会使用哪些算法。至少就这个原因来说,希望提供支持逐位置换的微处理器,其可以用于提升像分组密码这样的加密算法的性能。
参考图1,它描述了一种可以用来实现多项式乘法的示例性微处理器体系结构,它包括一个五步流水线,在该流水线中每条指令都按固定的时间来执行,例如四个时钟周期。每条指令的执行被分为五步:提取指令(IF)步1001、寄存器读(RD)步1002、算术/逻辑单元(ALU)步1003、存储器(MEM)步1004和写回(WB)步1005。在IF步1001,从指令高速缓存储器中取出指定的指令。该被提取的指令的一部分被用来指定在执行该指令中可以被使用的源寄存器。在寄存器读(RD)步1002,系统取出所述指定源寄存器的内容。这些取出的值可以被用来在ALU步1003中执行算术或逻辑操作。在MEM步1004,执行中的指令可以读/写数据高速缓存储器中的存储器。最后,在WB步1005,由指令执行而获得的值可以被写回到一寄存器中。
因为一些操作例如浮点计算和整数乘/除不能在一个时钟周期内加以执行,所以一些指令仅仅开始指令的执行。在经过了足够的时钟周期后,可以用另一条指令来取回结果。例如,当一条整数乘法指令用了五个时钟周期时,一条指令可以启动乘法计算,另一条指令可以在乘法操作完成以后把乘法操作的结果装入寄存器。如果乘法操作在请求结果时仍然没有完成,则流水线将停下来直到获得该结果为止。
参考图2,通过实例提供了一种示例性的RISC体系结构。处理器内核2000(也称作“微处理器内核”)包括以下部件:执行单元2010、乘/除单元(MDU)2020、系统控制协处理器(CPO)2030、存储管理单元2040、高速缓存储器控制器2050和总线接口单元(BIU)2060。在图2中,MDU2020是组合的乘/除单元;不过,其它实现方案也可以提供相互独立的乘和除单元。
执行单元2010是处理器内核2000中用于执行指令的主要机构。执行单元2010包括寄存器堆2011和算术逻辑单元(ALU)2012。在一种实现方案中,寄存器堆2011包括32个可以用在例如标量整数操作和地址计算中的32-位通用寄存器。寄存器堆2011包括两个读端口和一个写端口,而且可以被完全绕过以使该流水线中的操作等待时间为最小。ALU2012支持逻辑和算术操作,例如加、减和移位。
MDU2020包括三个可以供各种操作使用的寄存器(ACX2021、H12022和LO 2023)。根据一种实施方案,这三个寄存器可以被一起使用来保存最多72-位的值。在一种实现方案中,LO寄存器2023和HI寄存器2022均是32-位宽并且用作MDU2020的专用输出寄存器。在一种实现方案中,ACX寄存器2021在HI/LO寄存器对已经提供的精度之外还提供8-位额外的整数精度。精确的位数随实现而变,但优选的最小位数是2位。对具有32位数据通路的处理器来说,ACX寄存器的优选的最大位数是32位。与此相反,对具有64位数据通路的处理器来说,ACX寄存器的优选最大位数是64位。因此,在具有32-位宽的HI和LO寄存器的处理器中,ACX/HI/LO的组合能够保存64或以上位的连接的值。MDU2020可以用来执行各种操作,包括下列指令中的一些或全部:DIV、DIVU、MADD、MADDU、MFHI、MFLO、MSUB、MSUBU、MTHI、MTLO、MUL、MULT、MULTU、MFLHXU、MTLHX、MADDP、MULTP和PPERM。
指令MUL、MULT和MULTU可以被用来把两个32-位数一起相乘。对MUL指令来说结果被存储在一个指定的寄存器中,对MULT和MULTU指令来说,结果被存储在HI/LO寄存器中。例如,“MUL$7,$6,$5”把寄存器$6和$5的内容相乘并把结果存储在寄存器$7中。指令“MULT$6,$5”把寄存器$6和$5的内容相乘并把结果存储在HI/LO寄存器中。MULTU指令执行和MULT相同的操作,MULTU应用于无符号操作数,而MULT应用于带符号操作数。另外,MULTU指令把ACX寄存器清为全零。
指令DIV和DIVU执行除法操作并把结果存储在ACX/HI/LO寄存器中。例如,“DIV$6,$5”用寄存器$6的内容除以寄存器$5的内容并把产生的余数和商存储在HI/LO寄存器中。DIVU指令对无符号操作数执行相同的操作。
指令MSUB、MSUBU、MADD和MADDU可以用来把两个寄存器的内容相乘然后把所得的乘积与ACX/HI/LO寄存器的内容相加或相减。例如,“MSUB$6,$5”把寄存器$6和$5的内容相乘,从ACX/HI/LO寄存器的内容中减去所述乘法的结果,然后把结果值存储在ACX/HI/LO寄存器中。MADD指令同样把两个寄存器的内容相乘,然后把结果加到ACX/HI/LO寄存器,并把结果存储在ACX/HI/LO寄存器中。MSUBU和MADDU对无符号操作数执行类似的操作。在一些实现方案中,ACX寄存器并不用于一些操作,上述操作之后的ACX寄存器的内容可以不加以定义。
MFHI、MFLO、MTHI、MTLO、MFLHXU和MTLHX被用来在ACX/HI/LO寄存器和通用寄存器之间移动数据。第一条指令MFHI把HI寄存器的内容装入到一个通用寄存器中。例如,“MFHI$5”把HI寄存器的内容装入到寄存器$5中。同样,MFLO把LO寄存器的内容装入到一个通用寄存器中。相反,指令MTHI和MTLO被用来把一个通用寄存器的内容装入到HI或LO寄存器中。例如“MTHI$5”把寄存器$5的内容装入到HI寄存器中。
在一种实现方案中,ACX寄存器的内容是不能够直接访问的。为了间接地访问ACX寄存器,存储在ACX/HI/LO寄存器中的值可以被左移或右移。例如,“MFLHXU$5”把ACX、HI和LO寄存器的内容右移一个寄存器位置,把LO寄存器的内容装入到寄存器$5中。因而,在执行该操作之后,ACX寄存器为0。HI寄存器包含ACX寄存器先前的内容,LO寄存器包含HI寄存器先前的内容,寄存器$5包含LO寄存器先前的内容。因为8-位的ACX寄存器的内容被装入到了32-位寄存器中,因而在装入HI寄存器之前,该8-位值可以被零扩展到32-位。
MTLHX执行相反的操作。例如,“MTLHX$5”用HI寄存器先前的内容装载ACX寄存器,用LO寄存器先前的内容装载HI寄存器,并用寄存器$5的内容装载LO寄存器。
PPERM操作执行在寄存器中所指定的置换操作,结果存储在ACX/HI/LO寄存器中。例如,“PPERM$5,$6”使ACX/HI/LO寄存器左移6位。然后,按照寄存器$6指定的从寄存器$5选取低6位。特别地,寄存器$6的32-位内容被用来选择寄存器$5的哪些位将被用来填充ACX/HI/LO寄存器的低位。因为寄存器$5中有32位,所以需要5位来指定32位中的一个特定位。例如,“01101”是对应13的二进制。因而,这五个位可以指定位13。同样,“00000”是对应0的二进制数,“11111”是对应31的二进制表示。因而,可以用一个5-位的说明符来指定这32-位中的任意一位,用30位(即,6个5-位的说明符)可以指定6个位。
寄存器$6可以以如下方式指定寄存器$5中用来填充ACX/HI/LO寄存器的低位的那些位:0-4位用来指定位0的源,5-9位用来指定位1,位10-14用来指定位2,位15-19用来指定位3,位20-24用来指定位4,以及位25-29用来指定位5。其余位30-31可以不用。因而,该指令是使用所描述的说明符以便用来自寄存器$5的指定的位来填充LO寄存器的最低6位而被执行的。
最后,MULTP可以用来执行二进制多项式乘,并且MADDP可以用来执行二进制多项式乘并把结果加到ACX/HI/LO寄存器上。这些操作与MULT和MADD类似,只是对二进制多项式操作数进行操作而已。
MULTP和MADDP的多项式操作数被编码在32-位寄存器中,每一位表示多项式的系数。例如,多项式“x4+x+1”可以被编码为“10011”,因为x3和x2的系数为“0”,其余系数为“1”。MULTP指令执行两个操作数的二进制多项式乘法。例如:
(x4+x+1)(x+1)=x5+x4+x2+2x+1
减去多项式模2,得到x5+x4+x2+1。如果按照上述二进制表示对该多项式进行编码,相同的乘法操作可以表示为(10011)(11)=110101。
MADDP指令就像MULTP一样执行乘法操作,然后把结果加到ACX/HI/LO寄存器。多项式加法可以用逐位XOR来执行。例如,二进制多项式加法(x4+x+1)+(x+1)得到x4+2x+2。减去系数模2得到x4,可以表示为“100000”。
参考图3,MDU2020接收两个32位操作数,RS和RT。MDU2020使用这些操作数执行所请求的操作并把结果存储在寄存器ACX2021、HI2022和L02023中。图3中描述了可以用来执行这些操作的主要数据通路。RShold寄存器3010和RThold寄存器3012用来保存RS和RT操作数。多路转换器3020、3022和3024用来选择是直接使用RS和RT操作数还是使用存储在RShold寄存器3010和RThold寄存器3012中的值。另外,多路转换器3022可以用来在RT或RThold寄存器3012中所存储的值的低位和高位之间进行选择。
RThold寄存器3012与多路转换器3022相连接。多路转换器3022通过选择RThold 3012的高位、RThold 3012的低位、RT操作数的高位或RT操作数的低位而产生一个16-位的结果。多路转换器3022的输出由Booth重编码器3040进行处理,并且被存储在寄存器RTB3042中。Booth重编码是一种允许乘法器阵列对有符号和无符号操作数做同样处理的技术。寄存器RTB3042的输出成为至阵列单元3030的输入SEL3034。
阵列单元3030被用来执行下面参考图4而描述的算术和二进制多项式乘法。阵列单元3030把ACC1 3031、ACC2 3032、M 3033、SEL 3034和RThold3012作为输入。输入ACC1 3031和ACC2 3032是累加结果,用于执行乘法并把产生的值加到累加结果或从累加结果减去乘积的操作。输入SEL 3034(由寄存器RTB 3042确定)和M 3033(由寄存器RShold3010确定)形成用于算术操作的操作数。输入RThold 3012(或者RThold 3012的低位或高位)和M3033(由RShold 3010确定)形成用于多项式操作和置换的操作数。这些输入的组合被用于执行下面所详细描述的各种计算。
阵列单元3030还包括两个输出,结果C 3035和结果S 3036。在执行算术操作中,存储进位加法器(CSA)可以用来构造乘法阵列。存储进位加法器独立地计算和以及进位以产生两个输出。这样,结果C 3035和结果S 3036分别代表CSA乘法器阵列的进位以及和输出。在一种实现方案中,ACC1 3031、ACC2 3032、结果C 3035和结果S 3036均长72位,其余的输入至多长32位。输入ACC1 3031和ACC2 3032可以使用多路转换器3037和3038加以选择。
多路转换器3050和3052被用来选择作为至寄存器CPAA 3054和CPAB 3056的输入的值。例如,多路转换器3050可以用来在结果C 3035、CPA 3058的输出或多路转换器3020的输出(即,操作数RS或RShold3010的输出)之间进行选择。同样,多路转换器3052可以用来在结果S 3036、数值0和多路转换器3024的输出(即,操作数RT或RThold3012的输出)之间进行选择。寄存器CPAA 3054和CPAB 3056存储至进位传播加法器(CPA)3058的输入。CPA 3058可以用来完成如下所述的乘法操作(乘)和执行迭代除法操作(除)。
寄存器RDM 3060存储CPA 3058的结果。最后,多路转换器3070和3072选择哪些值形成要装入寄存器ACX、HI和LO中的结果。多路转换器3070可以用来选择ACX/HI/LO寄存器、RDM 3060或CPA 3058的结果。多路转换器3072可以用来相反装入由多路转换器3070选择的结果的各种置换。多路转换器3072可被用来通过允许选择下列值(当被连接时形成72位的值)而执行对ACX/HI/LO寄存器的各种循环和装载:(1)ahl,多路转换器3070的72位输出;(2)arl,多路转换器3070的高8位,RShold 3010的内容以及多路转换器3070的低32位;(3)ahr,多路转换器3070的高40位和RShold 3010的内容;(4)hlr,多路转换器3070的低40位以及RShold 3010的内容;以及(5)Oah,多路转换器3070的高40位(前32位为0)。
一些操作导致存储在结果寄存器ACX、HI和LO中的数值被重写。出于这个原因,可以提供一个独立的结果寄存器3080以在没有累加器ACX的情况下存储高位和低位结果。
下面描述的数据通路包括6个主要部分:(1)输入寄存和选择;(2)Booth重编码;(3)乘法器阵列和置换逻辑:(4)进位传播加法器;(5)结果寄存和选择;和(6)一个用于给出结果的独立的32位输出寄存器。
输入寄存和选择是使用RShold和RThold寄存器来实现的,以保存RS和RT操作数。多路转换器选择是直接使用这些操作数还是使用已经寄存的版本。Booth重编码每次对RT操作数的一半加以执行,以将输入提供至乘法器阵列和置换逻辑。
Booth重编码是一种允许乘法器阵列对有符号的操作数和无符号的操作数给予相同处理的技术。这种技术把操作数“重编码”为从2的下一个最高幂的减法。例如,7可以被Booth重编码为:8-1=10002-00012=1001,这里1代表-1。Hennessy和Patterson在附录A“Computer Architecture:A Quantitative Approach”中描述了Booth重编码,在此将其全部引入为各种目的作为参考。
阵列单元3030的一个阵列执行算术乘法,阵列单元3030的一个阵列执行二进制多项式乘法。在一种实现方案中,这两个阵列都是32位乘以16位(32×16),并且这两个阵列根据RT操作数的大小被使用一次或两次(即,在RT是16位长时,合适的阵列就被使用一次,在RT是32位长时,合适的阵列就被使用两次)。CPA可以用来完成乘法并执行迭代除法。其它实现方案可以包括用于更快地执行除法的装置。
算术乘法阵列可以用Hennessy和Patterson在被纳入本文的“Computer Architecture:A Quantitative Approach”中所描述的任何一种技术来实现。例如,Hennessy和Patterson的附录A描述了几种加速算术乘法器的方法。所描述的任何一种技术都可用作下面所描述的多项式乘法扩展的基础。
参考图4,阵列单元3030包括两个并行乘法器(Marray 4100和MParray4200)和置换逻辑4300。第一个阵列Marray 4100按照下面参考图5所描述的执行算术乘法。Marray 4100使用ACC1 3031、ACC23032、M 3033和SEL 3034作为输入并产生ResultC和ResultS作为输出。第二个阵列MParray 4200按照下面参考图6如下文所描述执行二进制多项式乘法。MParray 4200用RThold 3012的低位或RThold3012的高位(由多路转换器4305选择)、RShold 3010和ACC1 3031作为输入并产生结果作为输出。最后,置换逻辑4300被用来根据RThold3012中所存储的值对RShold 3010的低位执行各种置换。
多路转换器4310在Marray 4100的输出ResultS和0之间进行选择以产生结果S 3036。多路转换器4315和4320在由Marray 4100产生的结果C、ACC1的25位和由MParray 4200产生的结果的47位以及由置换逻辑4300产生的结果的组合之间进行选择以产生结果C 3035。
参考图5,Marray 4100是32位乘16位的Wallace树乘法器阵列,已经对其进行了修改以支持两个72-位宽的操作数ACC1和ACC2的相加。ACC1和ACC2操作数保存了一个72-位值的存储进位表示。因为已经执行了加法操作来实现乘法操作(即,通过存储进位加法器(CSA)),所以可以包括一个额外的加法器以便允许ACC1和ACC2加到乘法的中间结果。Marray 4100产生以存储进位表示的一个72-位宽的结果。因为每个周期处理32×16位,因而对32×32位的乘法需要两次通过该阵列。
Marray 4100被实现为从CSA阵列构建成的Wallace树。这些阵列的宽度可以变化。可以用自动安置和选路来实现这一设计,而不用数据通路样式。因为来自前一次阵列通过的累加值晚些时被输入该阵列,因而累加值不需要直接来自寄存器。Booth重编码是用重叠三联体的方法来实现的,为的是更有效地处理乘法操作。Booth重编码的输出表明是否加上操作数M乘以对应4的每次幂-2、-1、0、1或2。顶级CSA输入上的多路转换器用来选择多个M。
Marray 4100把来自Booth重编码的8个乘积加上一个特殊的部分乘积累加起来。后者可以用于使用来自多路转换器的“0”和“1×”选择的32位无符号计算。在Wallace树中,操作数可以是有符号的以正确地累加2的补码结果。
参考图6,基于二进制多项式的乘法操作可以和对应的无符号算术操作相类似的方式进行处理。在一种实现方案中,MParray 4200是32×16位的阵列,该阵列还通过对一个操作数(例如,ACC1)执行异或(XOR)操作来实现加法操作。和用Marray 4100一样,每周期处理32×16位,而对32×32位乘使用两次通过该阵列。在第一个周期中,ACC1是0(对MULTP操作而言)或上一个结果(对MADDP操作而言)。在第二个周期中ACC1是来自第一个周期的输出的高位。
MParray 4200用一个阵列把两个操作数(例如,OpA和OpB)相乘,该阵列的每一行取OpA和OpB的一位的与而形成。例如,第一行是OpA和OpB的第0位的逻辑与。第二行是OpA和OpB的第1位的逻辑与。每个相继行的结果都被向左移动一位。通过取每一列的异或形成最终结果。因为逐位异或可以用来执行二进制多项式算术中的加法,因而可以把一个累加器的行加到阵列MParray 4200以便支持像MADDP这样的指令。
再看参考图1,MDU 2020在流水线执行步1003的第一个周期启动计算。如果该计算在指令已经通过流水线中的存储器步1004之前已经完成,那么结果就被保存在那个点上。如果操作在指令已经通过流水线中的存储器步1004时才完成,那么该指令已经被提交并且结果被直接写到ACX/HI/LO寄存器。
MDU 2020被从环境流水线去耦合;它不随环境而停顿。也就是说MDU 2020将在流水线停顿时继续它的计算。通过这种方式,可以通过系统停顿和/或其它非-MDU指令来部分掩蔽多周期MDU操作。
图7A描述了流水线流过用于32×16位乘法的MDU 2020。RS和RT稍晚到达,因此第一个周期可以用于Booth重编码。第二个周期运行阵列,第三个周期CPA 3058完成计算。因为结果总是可以由MFxx指令加以访问而读取,因此32×16位乘法可以在没有停顿的情况下运行。一个直接返回结果给通用寄存器(GPR)的32×16MUL可以停顿一个周期。
参考图7B,对32×32位乘法来说,该阵列被使用两次,这样就把一个额外的时钟周期加到32×16位乘法操作上。当第一次阵列通过正在完成RT操作数的第一部分时,Booth重编码对操作数的第二部分加以执行。因而,RT的Booth重编码的部分可以用来在第一次通过完成以后立即开始第二次通过。随后用CPA 3058计算出乘法操作的结果。
参考图7C,一种简单的非-恢复除法算法可以用于正操作数。如果需要的话,第一个周期用来对RS求反。出于定时的原因,即使RS为正也要占用这个周期。随后,执行迭代加/减操作的32、25、18或10周期。实际的数是基于正的RS操作数上的前导0的数量。如果余数为负可能也需要最后的余数调整。出于定时的原因,即使不需要余数调整也要占用这个周期。最后,如果需要的话要对商和/或余数执行符号调整。如果两个操作数都为正,可以跳过这个周期。
在一种实现方案中,目标应用需要快速除法。有很多技术可以用来提高除法的性能,例如,可以使用Sweeney、Robertson和Tocher(SRT)算法或它们的一些变体。
参考图8,用一个有限状态机来执行乘法操作。乘法操作以空闲状态8010开始。乘法器停留在空闲状态直到开始信号有效为止。然后,乘法器根据RT操作数是包含一个32-位值还是16-位值转换到ARR1状态8020或ARR2A状态8030。如果RT中存储的是一个16-位值,则系统就转换到状态ARR2A 8030,在此状态下运行第一个阵列通过。随后乘法器转换到状态ARR2B 8040,在此状态下运行第二个阵列通过。如果RT操作数中存储的是16-位值,则乘法就在状态ARR1 8020下被运行通过阵列单元。
在这一实现方案中,乘法器被以流水线的方式来运行。一个乘法操作可以通过阵列单元,另一个可以通过CPA。因而,如果没有额外的乘法操作要执行的话,则乘法器就从ARR1 8020或ARR2B 8040转换到CPA8050,或者开始第二个乘法操作。如果不需要额外的乘法操作,则乘法器就运行通过CPA 8050并且随后或者返回空闲8010或者如上所述开始一个新的乘法操作。
如果在第一个乘法操作准备运行通过CPA时准备执行第二个乘法操作,那么乘法器或者转换到CPA1 8060(对32×16位乘而言)或者转换到CPA2A 8070(对32×32位乘而言)。在状态CPA1 8060下,第一个乘法操作运行通过CPA,第二个乘法操作运行通过阵列单元。乘法器随后转换到状态CPA 8050以结束第二个乘法操作。
如果第二个乘法操作是一个32-位乘,那么在状态CPA2A 8070下,第一个乘法操作运行通过CPA,第二个乘法操作运行通过阵列单元。乘法器随后转换到状态ARR2B 8040以完成这个32×32乘法操作。这一流水线的方法可以在每个时钟周期启动32×16位乘法操作,带有两个周期的等待时间。另外,可以每隔一个时钟周期启动32×32乘法操作,带有三个周期的等待时间。
参考图9,可以用一个有限状态机来实现迭代除法操作。在一种实现方案中,MDU在空闲状态9010开始。当接收到信号启动除法操作时,如果操作是有符号的,则MDU就转换到DIV1 9020,如果操作是无符号的MDU,则MDU就转换到DIV1U 9030。状态DIV1 9020和ERLY 9040用来为除法操作准备有符号操作数并在必要时调整符号。状态DIV1U9030和ERLYU 9050用来准备一个无符号除法操作。在状态ERLY 9040和ERLYU 9050中,检测RS操作数中的前导0以调整所需的除法迭代次数。
迭代除法在状态DIV 9060和DIVU 9070中执行。可以通过一系列迭代加/减和移位来实现除法。最后,在状态REM 9080和REMU 9090中最终确定余数。如果任一个操作数为负,就在状态SGN 9100中执行符号调整。
再来参考图4,在一种实现方案中,置换逻辑4300用来支持上述PPERM指令。置换逻辑4300包括6个单一位32:1选择器,这些选择器可以用来根据RThold 3012的值选择RShold 3010的32位中的任意一位。这个逻辑可以直接实现在数据通路模块中。
例如,置换逻辑4300可以用来执行指令“PPERM$5,$6”。置换逻辑4300使用由RThold 3012确定的6个5-位选择器来标识要包括哪些位作为来自RShold 3010的输出。例如,如果寄存器$5包含低位“010101”,那么选择器“00010”(对应于寄存器$6的低位)会选择包含“1”的位2(即,从右数第3位)。如果RThold 3012包含低位“0001000011”(相应于寄存器$6的低10位),那么就会选中位2(包含“1”)和位3(包含“0”)以产生“10”。采用这种方法,置换逻辑4300可以根据RThold 3012从RShold 3010选择位来生成6个位。生成的6个位被连接到ACC1的低66位以形成结果。这有效地把ACC1的低66位向左移动了6位并把低6位替换成置换逻辑4300的输出。
上述PPERM指令是一种可以用来在硬件中提供逐位置换支持的技术。从严格的数学意义上来说,逐位置换包括对寄存器或存储单元中的有序位组的任意重新排序,就像1对1的映射那样。这里所描述的置换可以是更通用的操作,在其中还可以实现1对多和1对无的映射。如果使用了足够的硬件,就可以在单一的时钟周期中执行任意置换。但是,对除了固定置换以外的任何操作来说,必须在执行置换之前建立起大量的状态。例如,如果把来自32-位值的位置换为扩展的48-位值,这48个目标位中的每个位都需要数据的5位来指示对应的源位。因而,需要240个状态位来完全地指定这个操作。
可以通过减少可被置换的目标位数来减少指定置换所需的状态的数量。这些部分置换操作允许在多个时钟周期上完成大范围的置换操作,同时相对于可以和没有扩大的指令集一起使用的移位-和-掩蔽算法提供了增强的性能。可以提供以下列项作为输入的部分置换指令:(1)要置换成的目标位的子集;(2)要置换成的目标位的子集中的每一位的源的描述;(3)先前的部分值;和(4)目标寄存器。
可以随着改变经济等级而用几种方式来指定目标位。例如,可以用自由形式格式来指定目标位,每个目标位用至少一个5-位的值来指定它的位置。还可以把目标位指定为以一个显式受控制的位开始的连续组,要求每条指令至少5位。另外,可以把目标位指定为以一个隐式受控制的位开始的连续组,完整的置换操作作为规范的指令序列加以实现。
PPERM指令在微处理器的乘或乘/除单元中提供了部分逐位置换的硬件实现。在上述PPERM指令之外,还希望有部分逐位置换的几种替代实现方案。
参考图10A,可以指定采用四个操作数的部分置换操作。rd操作数指定存储结果的目标寄存器。rs操作数指定用作执行部分置换的源位的输入字。rt操作数标识存储前一个部分值的寄存器。最后,ru操作数用作指定要执行的部分置换的控制输入。
参考图10B,由ru操作数指定的控制寄存器可以用四个指定源位的5-位的值、一个指定要置换这四个目标位中的哪一位的掩码、一个缺省位和一个目标四位字段来实现。目标四位字段可以用来指定目标寄存器中特定的4-位域以放置结果的置换位。例如,如果目标四位字段是0,则替换目标寄存器的低四位。
四个源位标识符指定输入字(由rs指定)中的哪些位用来替换目标寄存器(由rd指定)中的对应位。这些源位标识符形成了由目标四位字段指定的要替换的4-位的域。例如,如果源位0是“00010”,那么rs的位2是该4-位域的低位。如果rs包含“1010”,那么“0”(位2是从右开始的第3位)形成目标四位字段的低位。
掩码用来指定是否置换对应的源位。例如,掩码“00111”将只执行由源位0、1和2指定的置换操作。如果对应的掩码位是0,就在目标四位字节中使用缺省位。在这个实例中,对应于源位3的掩码位是“0”,因此对目标四位字节的高位使用缺省位的值。掩码和缺省位的使用在期望的结果值是从多个源字汇集得到的位的置换的地方是非常有用的,这里缺省位可以是0、1或者是按照掩码未被选择来置换的目标位的值保持不变的指示。没有被选中用于该操作的目标寄存器的所有半位元组的值都从由rt操作数指定的前一个部分值复制。
参考图11A,在部分置换的另一种实现方案中,使用更少的寄存器来指定部分置换指令。在这种实现方案中,指定了目标操作数rd和源操作数rs。代替使用控制寄存器,如上所述,在这条指令中包括了两个源位说明符。采用这种指令格式,指令指定要置换更少的位。但其重复速率要更高一些。
因为在这种指令格式中使用了掩码或开始标识符,所以先前的部分置换的源寄存器隐式地是目标寄存器,并且该指令在并入来自源的两个附加位之前隐式地对先前的值执行移动或循环两位。如下位的掩码的缺少,可以通过使用显式移位/循环指令并通过单个位部分置换指令来加以处理,其中所述位的值无法从当前源(rs)寄存器导出。
参考图11B,单个位部分置换指令包括与参考图11A所述的两位格式相类似的格式。在这种实现方案中,在指令域中指定一个单一位并在用所选择的源位替换低位之前执行隐式的一位位移。
参考图12A,也可以用乘/除单元中的累加器来实现部分置换。例如,图12A中所示的指令格式包括源寄存器操作数r s、控制字操作数rt和目标五位字节(5-位域标识符)。MDU 2020的HI/LO寄存器可以隐式地用作源数据寄存器和先前的部分值的源。
参考图12B,控制字可以包含一个缺省位、一个掩码和上面参考图10B所描述的源位。但是,在这个实现方案中,目标五位字节(与四位字节相反)是在指令中指定的,留下用于控制字中附加源位标识符的空间。这种格式的指令在HI/LO寄存器对上进行操作,并且可以用来使扩展置换更有效(例如,32位值扩展为48-位值)。
参考图13A,也可以用乘法器或乘/除单元中的累加器来执行部分置换,并且没有掩码。例如,图13A中所示的指令格式包括源寄存器操作数rs和控制字操作数rt。MDU 2020的HI/LO寄存器可以被隐式地用作前一部分值的源。参考图13B,控制字可以包含上面参考图10B所描述的6个源位的描述。
附加的部分置换实现方案可以通过使用一个以上的控制字操作数来增加指定的位数。例如,一种实现方案使用图10A中所描述那样的指令编码和图10B中所描述那样的控制字编码,但可以指定两个控制字。这种实现方案用rt操作数来指定第二个控制字操作数而不是用来指定先前的部分值的源,先前的部分值来源由另一寄存器例如HI/LO寄存器隐式指定。附加实现方案允许(1)通过修改图13A的指令编码以提供两个诸如在图13B中描述的控制字操作数的12位的置换;(2)使用参考图12B所描述的两个控制字操作数的10位的置换。
除了采用硬件(例如,在微处理器或微控制器中)的乘法器实现方案之外,也可以用配置成用于存储软件(例如,计算机可读程序代码)的计算机可用(例如,可读)介质中的软件实现。程序代码使得能够实现这里所描述的系统和技术的功能或制做,或者同时实现这两者。例如,这可以通过使用通用编程语言(例如,C、C++)、硬件描述语言(包括Verilog HDL、VHDL、AHDL(Altera HDL)等等)或者其它可用的编程和/或电路(即图解的)捕捉工具加以实现。程序代码可以放置在任何已知的计算机可用介质中,包括半导体、磁盘、光盘(例如,CD-ROM、DVD-ROM)和作为在计算机可用(例如,可读)传输介质(例如,载波或包括基于数字、光学或模拟的任何其它介质)中体现的计算机数据信号。这样,就可以通过通信网络(包括因特网和内联网)传输所述代码。
可以理解,由上述系统和技术所实现的功能和/或所提供的设备可以被提供在一个内核(例如,微处理器内核)中,该内核被体现在程序代码中并且可以被转换为硬件作为集成电路产品的一部分。另外,这些系统和技术可以被体现为硬件和软件的组合。因此,其它实施方案也在下面这些权利要求的范围内。

Claims (21)

1.一种用指令执行部分逐位置换的方法,该方法包括:
从数据存储区提取指令,以执行操作;
读一个或多个寄存器;
执行由该指令指定的操作,该指令包括:
用于标识该指令为部分置换指令的操作码;和
置换操作规范,包括:
用于标识目标寄存器的目标说明符;
先前的部分值的源说明符;
标识所述目标寄存器中的一个或多个目标位的目标子集说明符;以及
控制说明符,用于为由所述目标子集说明符标识的所述一个或多个目标位中的每一个标识源,使得可各别地为所述一个或多个目标位中的每一个选择所述源位;
其中该指令是通过执行由所述置换操作规范定义的部分逐位置换而加以处理的。
2.如权利要求1所述的方法,其中所述目标说明符隐式地标识所述目标寄存器。
3.如权利要求2所述的方法,其中所述目标寄存器包括一乘法单元累加器。
4.如权利要求1所述的方法,其中所述目标说明符显式地指定一通用寄存器。
5.如权利要求1所述的方法,其中所述先前的部分值的源说明符隐式地标识部分值的源寄存器。
6.如权利要求5所述的方法,其中所述部分值的源寄存器包括一乘法单元累加器。
7.如权利要求1所述的方法,其中所述先前的部分值的源说明符显式地指定一通用寄存器。
8.如权利要求1所述的方法,其中所述目标说明符和先前的部分值的源说明符均标识相同的寄存器。
9.如权利要8所述的方法,其中所标识的寄存器包括一通用寄存器。
10.如权利要求8所述的方法,其中所标识的寄存器包括一乘法单元累加器。
11.如权利要求1所述的方法,其中所述目标子集说明符标识所述目标寄存器中一连续的位块。
12.如权利要求11所述的方法,其中所述连续的位块包括所述目标寄存器的最低有效位。
13.如权利要求12所述的方法,其中所述连续的位块包括12位或更少的位。
14.如权利要求1所述的方法,其中所述控制说明符包括一个或多个源位标识符。
15.如权利要求14所述的方法,其中所述控制说明符还包括:
用于选择位以接收置换数据的掩码;和
用于标识要指派给未被所述掩码选择的位的缺省值以接收置换数据的缺省位。
16.如权利要求14所述的方法,其中所述一个或多个源位标识符中的每一个都是该指令中的域。
17.如权利要求14所述的方法,其中所述一个或多个源位标识符中的每一个都被存储在控制寄存器中,该控制寄存器由所述控制说明符标识。
18.如权利要求1所述的方法,其中所述指令是指令集的一部分,并且所述指令集包括一RISC指令集。
19.一种用于在一包含第一通用寄存器、第二通用寄存器和扩展精度累加器的微处理器中执行部分置换的方法包括:
把扩展精度累加器的内容移位以产生预定数量的开位的位置;
用第一个通用寄存器中包含的信息选择填充所述开位的位置的位,使得可各别地为所述开位的位置中的每一个选择所述位;以及
用从第二个通用寄存器中获取的位填充所述开位的位置,其中移位、选择和填充均响应单条指令而发生。
20.如权利要求19所述的方法,其中所述单条指令指定第一和第二个通用寄存器。
21.如权利要求19所述的方法,其中开位的位置的预定数量是扩展精度累加器的6个最低有效位。
CNB028086317A 2001-02-21 2002-02-15 部分逐位置换 Expired - Fee Related CN100437467C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/788,683 US7237097B2 (en) 2001-02-21 2001-02-21 Partial bitwise permutations
US09/788,683 2001-02-21

Publications (2)

Publication Number Publication Date
CN1503936A CN1503936A (zh) 2004-06-09
CN100437467C true CN100437467C (zh) 2008-11-26

Family

ID=25145241

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB028086317A Expired - Fee Related CN100437467C (zh) 2001-02-21 2002-02-15 部分逐位置换

Country Status (5)

Country Link
US (1) US7237097B2 (zh)
EP (1) EP1379939B1 (zh)
JP (1) JP3837113B2 (zh)
CN (1) CN100437467C (zh)
WO (1) WO2002069135A1 (zh)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7162621B2 (en) 2001-02-21 2007-01-09 Mips Technologies, Inc. Virtual instruction expansion based on template and parameter selector information specifying sign-extension or concentration
US7181484B2 (en) 2001-02-21 2007-02-20 Mips Technologies, Inc. Extended-precision accumulation of multiplier output
US6975250B2 (en) * 2002-05-28 2005-12-13 Broadcom Corporation Methods and systems for data manipulation
US20040086114A1 (en) * 2002-11-06 2004-05-06 Sun Microsystems, Inc. System and method for implementing DES permutation functions
CN100353702C (zh) * 2004-01-20 2007-12-05 海信集团有限公司 可重构密码协处理器的可重构置换模块
US7315937B2 (en) * 2004-10-01 2008-01-01 Mips Technologies, Inc. Microprocessor instructions for efficient bit stream extractions
US7873810B2 (en) * 2004-10-01 2011-01-18 Mips Technologies, Inc. Microprocessor instruction using address index values to enable access of a virtual buffer in circular fashion
US7933405B2 (en) * 2005-04-08 2011-04-26 Icera Inc. Data access and permute unit
US7421566B2 (en) * 2005-08-12 2008-09-02 International Business Machines Corporation Implementing instruction set architectures with non-contiguous register file specifiers
US20070124631A1 (en) * 2005-11-08 2007-05-31 Boggs Darrell D Bit field selection instruction
US9146706B2 (en) * 2006-05-05 2015-09-29 Qualcomm Incorporated Controlled-precision iterative arithmetic logic unit
JP5055993B2 (ja) * 2006-12-11 2012-10-24 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
US9135008B2 (en) 2009-09-24 2015-09-15 Freescale Semiconductor, Inc. Device and method for performing conditional bitwise set/clear/toggle manipulations in a general purpose register
US9003170B2 (en) 2009-12-22 2015-04-07 Intel Corporation Bit range isolation instructions, methods, and apparatus
KR101281275B1 (ko) 2011-09-01 2013-07-03 서울대학교산학협력단 부울 함수 표현을 이용한 블록암호 암/복호화 과정의 난독화 방법 및 이를 위한 장치
US9946540B2 (en) 2011-12-23 2018-04-17 Intel Corporation Apparatus and method of improved permute instructions with multiple granularities
US9619236B2 (en) 2011-12-23 2017-04-11 Intel Corporation Apparatus and method of improved insert instructions
CN104025038A (zh) * 2011-12-23 2014-09-03 英特尔公司 用于执行置换操作的装置和方法
WO2013095610A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Apparatus and method for shuffling floating point or integer values
US20170235516A1 (en) * 2011-12-23 2017-08-17 Intel Corporation Apparatus and method for shuffling floating point or integer values
CN104011616B (zh) * 2011-12-23 2017-08-29 英特尔公司 改进置换指令的装置和方法
US20140013082A1 (en) * 2011-12-30 2014-01-09 Intel Corporation Reconfigurable device for repositioning data within a data word
CN103186363B (zh) * 2013-03-26 2015-09-30 北京经纬恒润科技有限公司 一种数值编辑方法及系统
US9645820B2 (en) 2013-06-27 2017-05-09 Intel Corporation Apparatus and method to reserve and permute bits in a mask register
FR3021428B1 (fr) * 2014-05-23 2017-10-13 Kalray Multiplication de matrices de bits utilisant des registres explicites
US20160179548A1 (en) * 2014-12-22 2016-06-23 Intel Corporation Instruction and logic to perform an inverse centrifuge operation
US9959247B1 (en) 2017-02-17 2018-05-01 Google Llc Permuting in a matrix-vector processor
US10521338B2 (en) * 2017-06-05 2019-12-31 Arm Ltd. Method, system and device for memory device operation

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0757312A1 (en) * 1995-08-01 1997-02-05 Hewlett-Packard Company Data processor
US5781457A (en) * 1994-03-08 1998-07-14 Exponential Technology, Inc. Merge/mask, rotate/shift, and boolean operations from two instruction sets executed in a vectored mux on a dual-ALU
US5838986A (en) * 1991-07-08 1998-11-17 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2253415A5 (zh) * 1973-12-04 1975-06-27 Cii
US4085447A (en) * 1976-09-07 1978-04-18 Sperry Rand Corporation Right justified mask transfer apparatus
US4928223A (en) 1982-10-06 1990-05-22 Fairchild Semiconductor Corporation Floating point microprocessor with directable two level microinstructions
US4569016A (en) * 1983-06-30 1986-02-04 International Business Machines Corporation Mechanism for implementing one machine cycle executable mask and rotate instructions in a primitive instruction set computing system
US4949250A (en) 1988-03-18 1990-08-14 Digital Equipment Corporation Method and apparatus for executing instructions for a vector processing system
JP2646778B2 (ja) * 1990-01-17 1997-08-27 日本電気株式会社 ディジタル信号処理装置
US5765011A (en) * 1990-11-13 1998-06-09 International Business Machines Corporation Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams
US5471628A (en) * 1992-06-30 1995-11-28 International Business Machines Corporation Multi-function permutation switch for rotating and manipulating an order of bits of an input data byte in either cyclic or non-cyclic mode
JPH0720778A (ja) 1993-07-02 1995-01-24 Fujitsu Ltd 剰余計算装置、テーブル作成装置および乗算剰余計算装置
US6067615A (en) 1993-11-30 2000-05-23 Trw Inc. Reconfigurable processor for executing successive function sequences in a processor operation
US5673407A (en) 1994-03-08 1997-09-30 Texas Instruments Incorporated Data processor having capability to perform both floating point operations and memory access in response to a single instruction
FR2723223B1 (fr) * 1994-07-29 1996-08-30 Sgs Thomson Microelectronics Procede de brouillage numerique et application a un circuit programmable
US5748979A (en) 1995-04-05 1998-05-05 Xilinx Inc Reprogrammable instruction set accelerator using a plurality of programmable execution units and an instruction page table
US5696937A (en) * 1995-04-28 1997-12-09 Unisys Corporation Cache controller utilizing a state machine for controlling invalidations in a network with dual system busses
GB9509987D0 (en) * 1995-05-17 1995-07-12 Sgs Thomson Microelectronics Manipulation of data
US6295599B1 (en) * 1995-08-16 2001-09-25 Microunity Systems Engineering System and method for providing a wide operand architecture
US5768172A (en) 1995-10-04 1998-06-16 Apple Computer, Inc. Graphic software functions without branch instructions
US5819117A (en) 1995-10-10 1998-10-06 Microunity Systems Engineering, Inc. Method and system for facilitating byte ordering interfacing of a computer system
US6041403A (en) * 1996-09-27 2000-03-21 Intel Corporation Method and apparatus for generating a microinstruction responsive to the specification of an operand, in addition to a microinstruction based on the opcode, of a macroinstruction
US5729554A (en) * 1996-10-01 1998-03-17 Hewlett-Packard Co. Speculative execution of test patterns in a random test generator
US5909572A (en) * 1996-12-02 1999-06-01 Compaq Computer Corp. System and method for conditionally moving an operand from a source register to a destination register
JPH10171350A (ja) 1996-12-10 1998-06-26 Hitachi Ltd ハッシュ値生成方法および装置
FR2758195B1 (fr) 1997-01-09 1999-02-26 Sgs Thomson Microelectronics Coprocesseur d'arithmetique modulaire comprenant deux circuits de multiplication operant en parallele
US6154834A (en) 1997-05-27 2000-11-28 Intel Corporation Detachable processor module containing external microcode expansion memory
US6009450A (en) 1997-12-24 1999-12-28 Motorola, Inc. Finite field inverse circuit
US6044389A (en) * 1997-12-29 2000-03-28 Quantum Corporation System for computing the multiplicative inverse of a field element for galois fields without using tables
US6138229A (en) 1998-05-29 2000-10-24 Motorola, Inc. Customizable instruction set processor with non-configurable/configurable decoding units and non-configurable/configurable execution units
US6141786A (en) * 1998-06-04 2000-10-31 Intenational Business Machines Corporation Method and apparatus for performing arithmetic operations on Galois fields and their extensions
US6199087B1 (en) 1998-06-25 2001-03-06 Hewlett-Packard Company Apparatus and method for efficient arithmetic in finite fields through alternative representation
US6199088B1 (en) * 1998-06-30 2001-03-06 Quantum Corp. Circuit for determining multiplicative inverses in certain galois fields
DE19907575A1 (de) * 1999-02-23 2000-08-24 Philips Corp Intellectual Pty Schaltungsanordnung zum Liefern eines Speisestromes
JP2001147799A (ja) * 1999-10-01 2001-05-29 Hitachi Ltd データ移動方法および条件付転送論理ならびにデータの配列換え方法およびデータのコピー方法
US6430684B1 (en) * 1999-10-29 2002-08-06 Texas Instruments Incorporated Processor circuits, systems, and methods with efficient granularity shift and/or merge instruction(s)
US6615366B1 (en) * 1999-12-21 2003-09-02 Intel Corporation Microprocessor with dual execution core operable in high reliability mode
US6618804B1 (en) * 2000-04-07 2003-09-09 Sun Microsystems, Inc. System and method for rearranging bits of a data word in accordance with a mask using sorting
US6715066B1 (en) * 2000-04-07 2004-03-30 Sun Microsystems, Inc. System and method for arranging bits of a data word in accordance with a mask
US6952478B2 (en) * 2000-05-05 2005-10-04 Teleputers, Llc Method and system for performing permutations using permutation instructions based on modified omega and flip stages
US6625737B1 (en) * 2000-09-20 2003-09-23 Mips Technologies Inc. System for prediction and control of power consumption in digital system

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5838986A (en) * 1991-07-08 1998-11-17 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
US5781457A (en) * 1994-03-08 1998-07-14 Exponential Technology, Inc. Merge/mask, rotate/shift, and boolean operations from two instruction sets executed in a vectored mux on a dual-ALU
EP0757312A1 (en) * 1995-08-01 1997-02-05 Hewlett-Packard Company Data processor

Also Published As

Publication number Publication date
JP3837113B2 (ja) 2006-10-25
WO2002069135A1 (en) 2002-09-06
CN1503936A (zh) 2004-06-09
US20020116602A1 (en) 2002-08-22
EP1379939A4 (en) 2008-08-20
JP2004524621A (ja) 2004-08-12
WO2002069135A9 (en) 2003-10-09
EP1379939A1 (en) 2004-01-14
EP1379939B1 (en) 2011-09-21
US7237097B2 (en) 2007-06-26

Similar Documents

Publication Publication Date Title
CN100437467C (zh) 部分逐位置换
CN1503937B (zh) 扩展精度累加器
CN106325810B (zh) 微处理器
Pineiro et al. High-speed function approximation using a minimax quadratic interpolator
CN102053817B (zh) 用于执行乘法累加运算的设备和方法
US8473719B2 (en) Data packet arithmetic logic devices and methods
CN109643233A (zh) 具有带读取和读取/前进操作数编码的流引擎的数据处理设备
CN101438239A (zh) 微处理器中的紧缩加减运算
CN1503939A (zh) 多项式算术运算
EP3655851B1 (en) Register-based complex number processing
Eisig et al. The design of a 64-bit integer multiplier/divider unit
KR20080050226A (ko) 모듈러 곱셈 장치 및 설계 방법
EP3499362B1 (en) Vector add-with-carry instruction
Tawalbeh et al. A radix-4 scalable design
KR20210124347A (ko) 앵커 데이터 요소 변환
KR20040045152A (ko) 모듈러 곱셈 장치
KR100602833B1 (ko) 암7 마이크로 프로세서의 나눗셈 실행장치
JP2009282852A (ja) デジタル信号処理装置
JPH04239909A (ja) 演算処理方法および演算処理装置
JPH04242425A (ja) 10進乗算器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: BRIDGE DECK LLC

Free format text: FORMER OWNER: MIPS TECHNOLOGIES, INC.

Effective date: 20141210

Owner name: ARM FINANCE OVERSEAS LTD.

Free format text: FORMER OWNER: BRIDGE DECK LLC

Effective date: 20141210

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20141210

Address after: cambridge

Patentee after: ARM Overseas Finance Co.,Ltd.

Address before: American New Jersey

Patentee before: Overpass Bridge Co.,Ltd.

Effective date of registration: 20141210

Address after: American New Jersey

Patentee after: Overpass Bridge Co.,Ltd.

Address before: California, USA

Patentee before: Mips Technologies, Inc.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20081126

Termination date: 20200215

CF01 Termination of patent right due to non-payment of annual fee