CN104395876B - 没有算术和逻辑单元的计算机处理器和系统 - Google Patents

没有算术和逻辑单元的计算机处理器和系统 Download PDF

Info

Publication number
CN104395876B
CN104395876B CN201380036045.8A CN201380036045A CN104395876B CN 104395876 B CN104395876 B CN 104395876B CN 201380036045 A CN201380036045 A CN 201380036045A CN 104395876 B CN104395876 B CN 104395876B
Authority
CN
China
Prior art keywords
instruction
computer system
memory
processor
address
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
CN201380036045.8A
Other languages
English (en)
Other versions
CN104395876A (zh
Inventor
M.邓
P.M.H.M.A.戈里斯森
L.M.G.M.托休伊泽恩
A.J.尼伊斯森
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.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips Electronics NV
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 Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of CN104395876A publication Critical patent/CN104395876A/zh
Application granted granted Critical
Publication of CN104395876B publication Critical patent/CN104395876B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/02Digital function generators
    • G06F1/03Digital function generators working, at least partly, by table look-up
    • 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
    • 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/3001Arithmetic 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/30029Logical and Boolean instructions, e.g. XOR, NOT
    • 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30061Multi-way branch instructions, e.g. CASE
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/324Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address using program counter relative addressing
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

一种计算机系统包括处理器和存储器,处理器包括被配置成重复地获得计算机程序的下一个指令的指令循环电路、被配置成对指令循环电路获得的指令解码并且执行该指令的指令解码器,该计算机系统支持在一个或多个所述指令的控制下的多个算术和/或逻辑操作,其中存储器存储多个表格,所述多个算术和/或逻辑操作中的每一个特定操作受存储器中存储的特定表格支持,每个特定表格包括针对一系列输入的所述特定算术操作的结果。

Description

没有算术和逻辑单元的计算机处理器和系统
技术领域
本发明涉及一种包括处理器和存储器的计算机系统。
背景技术
人们早已知道,计算机系统通过所谓的边信道泄漏一些信息。观察计算机系统的输入-输出行为可能不提供关于诸如计算机系统使用的秘密密钥之类的敏感信息的任何有用信息。但是,计算机系统具有可以被观察的其他信道,例如其功耗或者电磁辐射;这些信道称为边信道。
通过边信道,计算机系统可能在其使用期间“泄漏”秘密信息。观察和分析边信道可能给予攻击者对于比可以从输入-输出行为获得的信息更好的信息的访问。
边信道问题的当前方法设法在计算中引入随机性。这些方法被证明不那么令人满意。它们使得计算复杂并且使用附加的功率。而且,经常可以使用统计手段对基于随机性的对抗措施进行反演。
发明内容
本发明人的见解是,计算机系统的各种不同的元件并不以相同的方式对边信道产生贡献。特别地,ALU的能耗直接依赖于它处理的数据。特别地,如果ALU处理秘密信息,则其对于功耗的贡献依赖于秘密信息。计算机的其他元件的功耗少得多地依赖于实际数据值。
有利的将是拥有一种改进的计算机系统,该系统的功耗较少依赖于秘密数据。
提供了一种计算机系统,该系统包括处理器和存储器,该处理器包括被配置成重复地获得计算机程序的下一个指令的指令循环电路、被配置成对指令循环电路获得的指令解码并且执行该指令的指令解码器,该计算机系统支持一个或多个所述指令的控制下的多个算术和/或逻辑操作,其中存储器存储多个表格,所述多个算术和/或逻辑操作中的每一个特定操作受存储器中存储的表示针对一系列输入的所述特定算术操作的结果的至少一部分的至少一个特定表格支持。
通过从该系统中消除ALU,也消除了其对于边信道的所有贡献。这使得系统更有弹性地反对边信道攻击。
所述计算机系统提供了一种促进表格驱动的程序或虚拟机的硬件解决方案。该计算机系统允许任何顺序的表格访问。使用该计算机系统,可以实现安全的虚拟机。应当指出的是,像在白盒密码术中那样,可以使实现指令的表格混淆,从而不能对表格的功能进行反演工程;然而,不必一定应用混淆。
所述计算机系统提供了更多的优点,下面列出了其中一些优点:
- 简化的处理器设计:在寄存器文件与ALU之间无需复杂的连接(总线),
- 指令集合的自由选择。操作的语义在表格中。可以向表格填充简单、复杂或者加密的操作。
- 可扩展的指令集合。可以在执行其他程序期间在存储器中添加新表格。
- 在电学上,所有操作都是表格访问,因此,表格中的操作具有相似的电学行为。结果,通过采用不同操作的电学行为的差异的程序反演工程是不可行的。
- 由于不存在ALU的原因,BoM减少,
- 功率效率提高。
- 通过高效流水线化而快速执行,
- 反对临时功率短缺(其可能在近场通信(NFC)中出现)的弹性增大。之所以如此,是因为中间处理状态保持在存储器中,并且可以在能量再次可用时恢复处理,
- 安全性增强:利用ALU的性质的密码攻击(已知为边信道攻击)不可行,因为不存在ALU。而且,代替ALU操作的表格可以处于加密域,换言之,索引被加密和/或表值也被加密。
无ALU的表格驱动的处理器对于其中能量消耗、速度和安全性重要的应用而言是理想的。所述计算机系统可以应用于NFC。
提供了无ALU的表格驱动的处理器的各个不同的实施例,利用这些实施例,利用常规处理器在ALU中执行的操作作为存储器中的表格访问而被执行。处理器上的表格可以包含昂贵的分计算,但是它们事先经过计算。
例如,存储器可以存储多个表格,使得所述多个算术和/或逻辑操作中的每个特定操作受存储器中存储的特定表格支持,每个特定表格包括针对一系列输入的所述特定算术操作的结果。在存储器中具有操作的结果具有需要更少表格查找的优点。另一方面,通过将操作拆分到多个表格上,表格的尺寸更小。例如,所述算术和/或逻辑指令中的一个或多个或者全部可以受存储器中存储的多个表格支持,使得所述多个表格一起表示针对一系列输入的所述特定算术操作的结果。
例如,次乘法表格可以用来减小乘法表格的查找表尺寸。
在一个实施例中,处理器包括表格转化器,该表格转化器被配置成接收来自指令寄存器的算术和/或逻辑指令并且产生相应的表格查找操作。例如,表格转化器可以连接到处理器的内部总线。表格转化器可以使用微程序执行该指令。表格转化器可以包含在指令解码器中。
在一个实施例中,所述计算机系统具有备用设备,该设备被配置成保存包括指令指针的处理器的寄存器的内容。依照本发明的计算机系统对于待机操作是特别高效的,因为无需保存ALU的内容。指令指针可以实现为指令指针寄存器。
在一个实施例中,算术和/或逻辑操作排他地受查找表支持。在一个实施例中,所述计算机系统不包括从处理器的内部总线接收第一和第二操作数并且向内部总线产生根据第一和第二操作数计算的输出的组合逻辑电路。
在一个实施例中,指令解码器被配置用于通过在表格中的与条件值相应的位置处从表格获取表示地址的数据项并且将该地址写到指令指针而进行以该条件值为条件的跳转。例如,指令解码器可以包括用于获取数据项的数据项获取器以及用于将地址写到指令指针的地址写入器。数据项可以是绝对地址本身。数据项可以是相对于指令指针中存储的当前地址的偏移量。按照这种方式,可以在无需状态寄存器的情况下实现条件跳转。
在一个实施例中,指令循环电路包括微指令,其例如使用来自指令循环电路中包括的存储器中存储的表格的表格查找。在一个实施例中,支持指令的查找表和支持指令循环电路的查找表处于相同的存储器中。甚至可以将微码存储在存储器中。这样的指令循环电路实现起来甚至更简单。
在一个实施例中,存储器具有结合了表格处理的存储器架构。这具有缓解存储器与处理器之间的带宽有限连接并且允许紧密的高带宽集成的优点。
在一个实施例中,所述计算机系统具有用于根据基地址和索引计算表格中的条目的地址的地址计算单元,其中该地址计算单元串接基地址和索引。
在一个实施例中,存储器包括指令类型表格,该指令类型表格存储了支持算术和逻辑函数的所有表格的基地址。
在一个实施例中,通过例如由获取器例如从指令类型表格获取支持所述算术和/或逻辑操作的表格的基地址、例如由加法器将从所述算术和/或逻辑操作的第一操作数获得的索引相加到该基地址、并且根据相加的基地址获取结果或者另外的表格地址而支持算术和/或逻辑操作。应当指出的是,加法器可以串接基地址和索引,而不是常规的相加。
本发明的另一方面涉及如所述计算机系统中那样的计算机处理器。
本发明的另一方面涉及一种编译器,该编译器被配置成以用于如前面的权利要求中任何一项中的计算机系统的第一计算机语言编译计算机程序。例如,可以使用用于具有ALU的处理器的常规编译器,其被修改成将所有算术和逻辑操作码转化为表格查找操作。
该编译器也可以通过计算针对一系列输入值的算术或逻辑操作的结果并且将该结果存储在表格中而编译所需的查找表。用于具有查找表的存储器的非易失性存储器是优选的。
查找表也可以存在于处理器中的ROM中。
所述计算机系统是一种电子设备,尤其是一种移动电子设备,例如移动电话、机顶盒、计算机等等。该计算机系统可以是智能卡。
一种计算机系统被提供,其具有处理器和存储器。处理器包括重复地将来自存储器的下一个指令传输至指令寄存器的通常的指令循环电路。该传输的指令利用指令解码器解码和执行。该计算机系统支持多个算术和逻辑操作,例如加法、乘法等等,这些操作可以在指令的控制下执行。令人惊奇的是,存储器存储多个表格;所述多个操作中的每个特定操作受存储器中存储的所述多个表格支持。这些表格可以包含针对一系列输入的特定操作的结果。特别地,所述多个算术操作可以排他地受多个表格支持,使得处理器无需ALU。优点是不太复杂、更加安全的处理器。
附图说明
本发明的这些和其他方面根据下文描述的实施例是清楚明白的,并且将参照这些实施例进行阐述。在附图中,
图1示出了常规计算机处理器中的ALU,
图2示出了具有不带ALU的处理器的计算机系统,
图3a示出了第一指令循环电路,
图3b示出了第二指令循环电路,
图4图示出了基于表格的算术,
图5和图6图示出基于表格的程序的执行,
图7图示出使用表格控制寄存器的基于表格的程序的执行,
图8图示出用于表格的无进位地址计算。
应当指出的是,不同图中具有相同附图标记的项目具有相同的结构特征和相同的功能或者是相同的信号。在已经解释了这样的项目的功能和/或结构的情况下,在具体实施方式中无需对其重复解释。
具体实施方式
尽管本发明容许许多不同形式的实施例,但是在附图中示出且将在这里详细地描述一个或多个特定实施例,同时理解,本公开应当被认为例示了本发明的原理并且不意在将本发明限制为所示出和描述的特定实施例。
图1示出了包括ALU 120的常规处理器100。例如,ALU 120为32位(bit)ALU。在计算中,ALU(算术逻辑单元)是一种执行算术和逻辑操作的数字电路。ALU是计算机的中央处理单元的基本构造块,并且甚至最简单的微处理器也包含一个或多个ALU。处理器的大多数操作由一个或多个ALU执行。ALU加载来自输入寄存器的数据,外部控制单元接着告知ALU对该数据执行什么操作,并且然后ALU将其结果存储到输出寄存器中。控制单元负责在这些寄存器、ALU和存储器之间移动处理的数据。例如,ALU可以使用多路复用器选择与操作相应的输出。
ALU 120被实现为组合逻辑(有时也称为结合逻辑),其是通过布尔电路实现的一种类型的数字逻辑,其中输出是仅仅当前输入的纯函数。组合逻辑没有将结果从一个操作带至下一个操作的存储器。
图1示出了内部总线110和ALU 120。ALU 120从内部总线110接收输入122和124,并且将输出128提供给内部总线。ALU 120执行的操作处于ALU控制信号126的控制之下。处理器100可以包括其他电路系统,例如指令循环电路、地址计算单元等等,其利用计算机处理器电路系统130示意性地指示。处理器100可以连接到存储器140。
图2示出了一种计算机系统200。计算机系统200包括计算机处理器210,例如CPU。系统200,尤其是处理器210不包括ALU。算术和逻辑操作使用如本文所描述的查找表实现。
除了处理器之外,系统可以具有附加的部件。图2中示出在系统200内但是在处理器210外部的是存储器250、存储器映射I/O接口255、数据和地址总线235以及控制总线260。存储器映射I/O接口255是可选的;可以使用其他方式的I/O接口。代替让存储器在外部的是,可以将存储器250集成到处理器210中。处理器210可以具有包括接口230的地址计算单元(ACU)。
处理器210包括内部总线220、数据和地址总线接口230、指令循环电路240、指令解码器241和寄存器文件245。
处理器210可以经由数据和地址总线接口230获取来自存储器250的数据。典型地,数据和地址总线235作为单独的数据总线和地址总线而执行。使用接口230将地址置于地址总线上,作为响应,存储器250获取具有该地址的存储器位置的数据内容。通过接口230,将获取的数据置于内部总线220上。可以将存储器或I/O异常或者故障等置于控制总线260上,其写到寄存器文件245的寄存器。如果不想得到异常等或者以不同的方式传送异常等,那么可以省略总线260。
寄存器文件245包括多个寄存器。例如,这些寄存器可以为8位宽。例如,处理器210可以在寄存器文件245中具有三个寄存器,X、Y和Z。例如,处理器210可以具有更多寄存器,例如8、12、16、32或者更多个。
指令解码器241被示为包括在指令循环电路240中,但这不是必须的。这两个电路可以分开实现,并且经由例如内部总线220或者经由附加的内部总线等等通信。
指令循环电路240被配置成重复地获得计算机程序的下一个指令。计算机程序可以存储在存储器250中,或者来自另一个源,例如高速缓存器、外部源等等。例如,指令循环电路240可以包括程序计数器寄存器,该指令循环电路被配置成在程序计数器寄存器的控制下获得下一个指令。例如,指令循环电路240可以将来自存储器250的在由程序计数器寄存器指示的存储器地址处的指令传输至指令寄存器。指令解码器241有权访问指令寄存器。
指令循环电路可以包括程序计数器寄存器推进器(图2中未示出),其被配置成推进程序计数器寄存器,使得程序计数器寄存器控制下一个指令的获得。程序计数器寄存器推进器可以修改程序计数器寄存器,使得它包含下一个指令在存储器中的地址。特别地,程序计数器寄存器推进器可以以字节单位的指令宽度增大程序计数器寄存器。
处理器210(例如指令循环电路240)包括指令解码器,该指令解码器被配置成解码和执行指令循环电路240获得的指令。
处理器210可以包括用于获取来自存储器中存储的表格的数据的寻址单元(未示出),该寻址单元可以包括将处理器连接到数据和地址总线的数据和地址总线接口230。寻址单元可以被配置成根据基地址和索引计算地址。寻址单元也称为地址计算单元(ACU)。表格(例如数组、地址)的计算可以如本文所描述的通过将基地址选择为2的幂的倍数而优化。
例如,处理器210可以经过多个指令循环。一个指令循环可以以找取开始,其中指令循环电路240将程序计数器的值置于地址总线上以便将它发送至存储器。存储器通过在数据总线上发送该存储器位置的内容而响应。在找取之后,处理器210继续执行,基于它获得的存储器内容而采取某个行动。在该循环中的某个点处,程序计数器将被修改,使得执行的下一个指令是不同的指令。例如,使其递增,使得下一个指令是下一个顺序存储器地址处的指令。像其他处理器寄存器那样,程序计数器可以是二进制锁存器组,每个锁存器表示程序计数器的值的一位。
在一个实施例中,除了寻址单元、存储器和寄存器之外,处理器210还具有与指令指针一起的(微)程序逻辑。处理器210的指令执行可以使用所谓的微程序。例如,指令解码器241可以包括微编程控制单元,将以给定时间步长生成的控制信号一起存储在控制字(即所谓的微指令)中。实现指令的控制字集合称为微程序,并且微程序存储在称为控制仓的存储器元件中。
然而,处理器210无需包括微程序或者甚至指令指针。相反地,可以预先确定指令并且将其存储在硬件中。此外,也可以利用逻辑门或者在编程逻辑阵列(PLA)中直接实现控制信号逻辑表达式。
处理器210示出了一种用于以硬件实现表格驱动的处理器的方法。表格驱动的实现方式不包括ALU,但是可以包括ACU(地址计算单元)。表格驱动的计算机程序是查找表网络。将程序转化成被实现为表格访问链(序列)的表格网络。
图3a和图3b图示出可以在处理器210中使用的指令循环电路240的两种不同实现方式。
图3a示出了一种指令循环电路,其包括指令解码器241、加法器242、指令指针243和指令寄存器244。在指令循环开始时,指令解码器241将指令指针243中的地址置于到存储器的地址总线上并且从存储器接收下一个指令,该指令被置于指令寄存器244中。接着,指令解码器241继续以执行存储在指令寄存器244中的指令。在执行指令之后或期间,加法器242推进指令指针243中的地址。例如,增大指令指针中的地址。
图3b示出了指令循环电路240的一个可替换实施例,除了没有加法器242之外,它与图3a相同。作为替代,图3b的指令循环电路包括加法查找表246和基于表格的加法器247。代替计算的是,下一个地址由基于表格的加法器247在表格246中查找。在一个实施例中,加法查找表246是一种ROM,其对于每个可寻址存储器位置存储了下一个位置。其他实现方式将所述加法分解成多个加法,每个加法具有表格。例如,可以将所述加法分解成四个逐字节加法以便执行32位加法。可以将进位处理成附加的输入,从而获得9位输出、两个8位输入和1个进位输入。因此,指令循环电路被配置成通过查找程序计数器寄存器内容中的全部或部分地址而修改程序计数器寄存器。
表格驱动的指令指针推进的优点是由于表格驱动的构造的原因而改进了安全性和对功率输出的弹性。然而,缺点是由于引入更多的计算循环(例如找取存储器位置、执行查找、反馈至寄存器等等)而损失了速度。
处理器210和系统200二者都不包含ALU;然而,所述计算机系统确实支持多个算术操作,这些操作可以在一个或多个所述指令的控制下执行。常规上由ALU执行的操作现在通过访问一个或多个表格而执行。来自表格访问的结果被存储在寄存器中,并且然后可以用在下一个表格访问中。表格描述的操作可能是复杂的,但是由于事先计算了表格,因而这不损害操作速度。
算术和逻辑操作可以由处理器210执行,该处理器主要执行以下三个操作:
Z := X[Y], (以加载寄存器)
X[Y] := Z (以加载存储器)
R := 常数;
X、Y、Z和R表示寄存器。方括号表示索引的存储器检索。Z:=X[Y]表示将由X索引的表格中的由Y索引的条目的值写到寄存器Z,即,将存储器位置X+Y的数据内容传输至寄存器Z。另外,处理器可以写入存储器并且将常数分配给寄存器。处理器包括执行上面三个操作的指令,例如“操作码”。
所述常数可以例如为基地址、针对基地址的索引或者操作数。特别地,该常数可以是指令类型表格(O)的基地址。指令类型表格存储了支持算术和/或逻辑功能的多个表格的基地址。
在一个实施例中,既没有在该处理器中由组合逻辑执行的算术操作(即加法、减法、乘法、除法),也没有在该处理器中由组合逻辑执行的逻辑操作(即与三个条件的比较:等于、大于和小于,或者这些组合中的任何一个)。存储器可以包含用于这些算术和比较操作的表格。对于一元操作而言,具有单索引的表格就足够了。例如,为了在寄存器上实现循环移位(rotate)操作,例如8051指令RL——左循环移位累进。可以执行表格查找X[Y],其中X包含循环移位表格的基地址,并且Y为要循环移动1位的寄存器。
两个变量的函数可以在两个步骤中求值。如果寄存器Rt包含表格的基地址,那么可以通过依次确定Rc=Rt[Ra]和Rc=Rc[Rb]而计算Ra和Rb的函数。换言之,表格Rt[Ra]的条目y等于(表格函数的基地址)f[Ra, y]。
这个过程利用存储在存储器中的表格O进行简化。表格O包含所有被支持的算术和逻辑函数(例如加、乘、除等等)的基地址。存储在存储器O中的不同指令类型可以具有不同数量的输入和不同数量的输出。出于解释的目的,考虑O中的操作f,比如f=O[i],其具有两个输入和单个输出。我们希望获得f(a, b),其中ab的值存储在寄存器Ra和Rb中,并且将f(a, b)存储在寄存器Rr中。然后,如下继续。首先,定义Rt:=O[i]。然后,依次确定Rc=Rt[Ra]和Rc=Rc[Rb]。换言之,表格O[i][Ra]的条目y等于(表格函数的基地址)f[Ra, y]。
图4对以上所述内容可视化,其中f等于“加”操作。图4示出了指令类型表格410,即“O”。表格410包含加法表420的地址。在表格420中,给出了用于函数+0(430)、+1(431)等等,包括+V(432)的地址。为了计算2+3,在表格410中查找“加”基地址。接下来,在加法表420中,找到用于+3的表格。在+3表格中,条目号2(在0处开始计数)是所需的和。存储器O可以通过使用定位各个不同操作的任何地址集合(不必是连续的地址)而优化。
依照图2的处理器可以支持若干类型的指令。示例在下面给出:
处理器210可以支持绝对和相对跳转。
处理器210可以支持条件跳转。条件跳转也可以利用表格实现。表格的索引是要在其上进行条件跳转的寄存器。表格可以给出要跳转的绝对地址。例如,1字节寄存器可以根据该寄存器的值引起条件跳转。条件跳转表格也可以给出要跳转的相对地址。后者具有表格可以容易重新用于更多跳转的优点。
例如,处理器可以通过具有这样的表格而支持“零值跳转”,该表格对于索引0具有跳转地址并且对于所有非零条目具有非跳转地址。跳转地址可以为正值或者可能地为负值,非跳转地址可以是指向下一个指令的+1。这些类型的跳转可以由特殊操作码支持,该操作码将表格条目的内容移到指令指针,即X[Y]的内容,其中Y为寄存器并且X可以为寄存器或者可选地为指令指针的直接操作数。
处理器210可以支持使用索引操作的往来存储器的移动操作。例如,处理器210可以支持从X[Y]移动到寄存器Z或者反之亦然。
处理器210可以具有堆栈,并且可以支持例如寄存器的弹出和压入操作。处理器210也可以支持指令寄存器的压入和弹出以便支持子例程调用。
最后,处理器210可以支持算术和逻辑操作,例如,加、带进位加、逐位与、减、带进位减、补码(取反)、除、逐位或、循环移位等等。对于这些操作而言,可以使用明确的指令,然后可以例如使用微码将该指令转化成表格查找。这允许易于使用。例如,处理器可以明确地支持8051指令集合,或者在执行程序指令时类似地将指令转化成表格查找。例如,处理器210可以包括用于将ALU操作码转化成表格查找的ALU-表格转化器。
然而,在处理器210上也可以不存在诸如加法、逐位与等等之类的ALU操作码。在这种情况下,编译器产生将这些指令直接实现为表格查找的代码。
该处理器可以支持任何虚拟机。在所提出的处理器支持的VM中的这样的程序的指令仅仅操纵寄存器、存储器,但是不使用ALU——算术逻辑单元。因此,可以构造无需保存ALU(CPU)的状态的处理器,并且因而可以构造一种基于该处理器的无ALU的VM。
如上面所描述的,指令循环电路可以包括指令指针以及用于计算指令指针的推进的查找表。使用在指令循环电路中实现的本地查找表和微码指令的这种计算方法类似于存储器中的用于实现加法计算的查找表和处理器指令集合。可能的是不将指令循环电路实现为单独的电路,而是可以使用通用机器功能部分地或者全部地实现指令循环电路功能。这简化了处理器设计并且增加了反对边信道攻击和反演工程攻击的弹性。
图5、图6和图7图示出处理器210上的计算机程序的执行。图5、图6和图7为时序图,时间从上向下流动。
用于表格驱动的处理器210的计算机程序可以基于构成程序语义的表格网络。程序包括独立存储器访问链。用于程序的初始输入可以是到存储器组的地址,并且程序的最终输出可以是存储在存储器组中的数据或者其组合。之间的阶段是来自存储器组的输出和到存储器组的输入二者。
如图5中所示,可以将软件指令实现为一个寄存器-存储器-寄存器层。指令的操作数(例如X和Y)存储在存储器组,并且可以使用存储器中存储的表格执行算术或逻辑操作。
图5示出了一种寄存器-表格-寄存器层实现方式,没有使用微程序,并且每个软件指令将使用一个寄存器-存储器-寄存器层实现。
处理器210的结构允许实现作为表格网络呈现的程序。应当指出的是,(存储器中的)表格可能必须填充有包含部分指令的信息。
速度改进通过查找流水线化而成为可能。如上面所限定的简单处理器需要相对多的表格查找以用于执行一定功能。如果速度是重要的,那么可以采用查找的流水线化。
在一种表格驱动的实现方式中,表格查找的结果用作下一个查找表的输入。因此,结果一传递至下一个链元素,每个寄存器-表格-寄存器层(与单个表格查找相应)就可以再次执行。从寄存器中的一个值到另一个的转变将通过存储器访问实现。处理器流水线化因此可以表征为表格和寄存器链,其中第一层寄存器-表格-寄存器执行可以包含在存储器(其保持所述表格)的访问周期内的活动,第二寄存器-表格-寄存器进行下一部分,依次类推。这给出表格的自然定时和效率。
图6示出了具有寄存器-表格-寄存器层的流水线化的有限指令的访问链。图6可以被看作实现有限数量的指令的寄存器-表格构造的级联(即具有表格的硬件的重复),其中每个表格层等效于指令将做的工作。它也解释了可以如何链接(流水线化)寄存器-表格-寄存器。应当指出的是,寄存器是共享的。
图7示出了图5的另一改进,其在处理器210中使用在这里示为4位的存储器控制寄存器,以控制其中进行表格查找的存储器组。按照这种方式,可以控制执行的操作。表格可以通过选择适当的存储器组而加以选择。存储器控制寄存器是这样的寄存器,其内容与内部总线上的地址组合,例如前置、串接等等,或者通过寻址计算单元生成。例如,一个存储器组可以具有加法表格,而另一个具有逐位与表格。通过使用存储器控制寄存器选择适当的存储器组,可以在两个操作,即加法与逐位与之间做出选择。图7作为示例在附图标记710下示出了存储器控制寄存器的内容。
图8示出了简化ACU(地址计算单元)的2的幂索引。诸如处理器210之类的表格驱动的实现方式不包括ALU,但是它很可能包括ACU(地址计算单元)。在这样的ACU中,一种操作是索引地址和基地址相加。进位通常从索引和基地址的加法操作产生,并且在这种情况下,位将从0翻转至1或者反之亦然。应当指出的是,数组是实现表格的典型选择。
可以进一步通过消除进位而对此优化,从而不会存在由于进位引起的位翻转。这改进了我们的处理器的能耗。此外,获得了更恒定的行为,从而最小化了通过功耗边信道的信息泄漏。
通过将表格的基地址选择为2的幂的倍数而避免进位;没有进位被生成,加法仅仅涉及索引和基地址的串接。为了计算M[索引]的地址,可以计算2k *基+索引。在这里,M=2k *基。加法可以通过串接基和索引而计算。要使这点起作用,最大的索引应当小于2k
图8中示出了包括最高有效部分820和最低有效部分830的基地址810。最低有效部分830中的所有位具有0值。同样示出的是索引840。如果数组需要乘法,即,因为数组包括大于单个存储单位(例如大于1字节)的元素,就假设这样的乘法已经在索引840中执行了。830的尺寸被选择成使得它至少具有与最大使用的索引840一样多的位。其中要进行表格查找的地址815通过基地址810和索引840的和而给出。由于lsb 830只有零,因而该和可以通过串接msb 820和索引840而计算。
这种寻址计算操作的优化可以直接在程序中限定。
应当理解的是,本发明也扩展到计算机程序,尤其是载体上或载体内的适于将本发明付诸实施的计算机程序。该程序可以是源代码、目标代码、介于源代码与目标代码之间的代码的形式,例如部分编译的形式,或者是适用于实现依照本发明的方法的任何其他形式。涉及计算机程序产品的实施例包含与所阐述的方法中的至少一个的每个处理步骤相应的计算机可执行指令。这些指令可以细分成子例程和/或存储到可以静态地或动态地链接的一个或多个文件中。涉及计算机程序产品的另一个实施例包含与所阐述的系统和/或产品中的至少一个的每个装置相应的计算机可执行指令。
应当指出的是,上述实施例说明了而不是限制了本发明,并且本领域技术人员应当能够设计出许多可替换的实施例。
在权利要求书中,置于括号之间的任何附图标记都不应当被解释为限制了权利要求。动词“包括”及其变体的使用并没有排除存在与权利要求中阐明的那些不同的元件或步骤。元件之前的冠词“一”或“一个”并没有排除存在多个这样的元件。本发明可以借助于包括若干不同元件的硬件以及借助于经过适当编程的计算机来实现。在列举了若干装置的设备权利要求中,这些装置中的一些可以由同一硬件项实施。在相互不同的从属权利要求中记载了特定的措施这一事实并不指示这些措施的组合不可以有利地加以利用。
附图标记列表:
100 计算机系统
110 内部总线
120 ALU
122, 124 ALU输入
126 ALU控制信号
128 ALU输出
130 计算机处理器电路系统
140 存储器
200 计算机系统
210 计算机处理器
220 内部总线
230 数据和地址总线接口
235 数据和地址总线
240 指令循环电路
241 指令解码器
242 加法器
243 指令指针
244 指令寄存器
246 加法查找表
247 基于表格的加法器
245 寄存器文件
250 存储器
255 存储器映射I/O接口
260 控制总线

Claims (12)

1.一种计算机系统,包括处理器和第一存储器,
- 该处理器包括
- 指令循环电路,其被配置成重复地获得计算机程序的下一个指令,
- 指令解码器,其被配置成对指令循环电路获得的指令解码并且执行该指令,
- 该计算机系统支持在一个或多个所述指令的控制下的多个算术和/或逻辑操作,其中
- 第一存储器存储多个表格,所述多个算术和/或逻辑操作中的每一个特定操作受第一存储器中存储的表示针对一系列输入的所述特定操作的结果的至少一部分的至少一个特定表格支持,
其中第一存储器存储计算机程序,
- 指令循环电路包括程序计数器寄存器,指令循环电路被配置成在程序计数器寄存器的控制下获得下一个指令,指令循环电路包括程序计数器寄存器推进器,该推进器被配置成推进程序计数器寄存器,使得程序计数器寄存器控制下一个指令的获得,
其中指令循环电路包括第二存储器和基于表格的加法器,该第二存储器存储加法表格,指令循环电路被配置成通过由基于表格的加法器在加法表格中进行查找而修改程序计数器寄存器。
2.如权利要求1的计算机系统,其中指令循环电路被配置成将程序计数器寄存器修改为由程序计数器寄存器内容中的地址索引的所述加法表格的条目。
3.如权利要求1或权利要求2的计算机系统,其中处理器包括表格转化器,该表格转化器被配置成接收来自指令寄存器的算术和/或逻辑指令并且产生相应的表格查找操作。
4.如权利要求1或权利要求2的计算机系统,其中该计算机系统具有备用设备,该备用设备被配置成保存包括指令指针寄存器的处理器的寄存器的内容。
5.如权利要求1或权利要求2的计算机系统,其中该计算机系统具有用于根据基地址和索引计算表格中的条目的地址的地址计算单元,其中该地址计算单元串接基地址和索引。
6.如权利要求1或权利要求2的计算机系统,其中通过以下方式支持算术和/或逻辑操作
- 获取支持所述算术和/或逻辑操作的表格的基地址,
- 将从所述算术和/或逻辑操作的第一操作数获得的索引相加到该基地址,
- 根据相加的基地址获取结果或者另外的表格地址。
7.如权利要求1或权利要求2的计算机系统,其中第一存储器包括指令类型表格,该指令类型表格存储了支持算术和逻辑函数的表格的基地址。
8.如权利要求1或权利要求2的计算机系统,在这里,所述多个算术和/或逻辑操作排他地受所述多个表格支持。
9.如权利要求1或权利要求2的计算机系统,其中计算机处理器包括至少两个寄存器,该计算机系统至少支持用于将这两个寄存器的内容相加的加法操作以及用于对这两个寄存器的内容逐位与的与操作,其中第一存储器包含加法表格和与表格。
10.如权利要求1或权利要求2的计算机系统,其中该计算机系统不包括从处理器的内部总线接收第一和第二操作数并且向内部总线产生根据第一和第二操作数计算的输出的组合逻辑电路。
11.如权利要求1或权利要求2的计算机系统,其中指令解码器被配置用于通过以下方式而进行以条件值为条件的跳转
- 在表格中的与该条件值相应的位置处从表格获取表示地址的数据项,
- 将该地址写到指令指针。
12.一种如前面的权利要求中任何一项中的计算机处理器。
CN201380036045.8A 2012-07-06 2013-07-06 没有算术和逻辑单元的计算机处理器和系统 Expired - Fee Related CN104395876B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201261668482P 2012-07-06 2012-07-06
US61/668482 2012-07-06
EP13156975.8 2013-02-27
EP13156975 2013-02-27
PCT/IB2013/055541 WO2014006605A2 (en) 2012-07-06 2013-07-06 Computer processor and system without an arithmetic and logic unit

Publications (2)

Publication Number Publication Date
CN104395876A CN104395876A (zh) 2015-03-04
CN104395876B true CN104395876B (zh) 2018-05-08

Family

ID=47757440

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380036045.8A Expired - Fee Related CN104395876B (zh) 2012-07-06 2013-07-06 没有算术和逻辑单元的计算机处理器和系统

Country Status (9)

Country Link
US (1) US20150324199A1 (zh)
EP (1) EP2870529A2 (zh)
JP (1) JP6300796B2 (zh)
CN (1) CN104395876B (zh)
BR (1) BR112014032625A2 (zh)
MX (1) MX2014015093A (zh)
RU (1) RU2015103934A (zh)
WO (1) WO2014006605A2 (zh)
ZA (1) ZA201500848B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10496372B2 (en) * 2014-09-30 2019-12-03 Koninklijke Philips N.V. Electronic calculating device for performing obfuscated arithmetic
US10114795B2 (en) 2016-12-30 2018-10-30 Western Digital Technologies, Inc. Processor in non-volatile storage memory
US10885985B2 (en) 2016-12-30 2021-01-05 Western Digital Technologies, Inc. Processor in non-volatile storage memory
CN107527189B (zh) * 2017-08-31 2021-01-29 上海钜祥精密模具有限公司 一种产品状态的存储方法及可编程逻辑控制器
US10902113B2 (en) * 2017-10-25 2021-01-26 Arm Limited Data processing
FR3083351B1 (fr) * 2018-06-29 2021-01-01 Vsora Architecture de processeur asynchrone
FR3083350B1 (fr) * 2018-06-29 2021-01-01 Vsora Acces memoire de processeurs
CN110058884B (zh) * 2019-03-15 2021-06-01 佛山市顺德区中山大学研究院 用于计算型存储指令集运算的优化方法、系统及存储介质
CN111723920B (zh) * 2019-03-22 2024-05-17 中科寒武纪科技股份有限公司 人工智能计算装置及相关产品
US20220164442A1 (en) * 2019-08-12 2022-05-26 Hewlett-Packard Development Company, L.P. Thread mapping

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0629944A1 (de) * 1993-06-18 1994-12-21 GSF-Forschungszentrum für Umwelt und Gesundheit GmbH Datenverarbeitungsmaschine
CN1348560A (zh) * 1998-11-13 2002-05-08 坦斯利卡公司 高数据密度risc处理器

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL256940A (zh) * 1959-10-19 1900-01-01
JPS60133496A (ja) * 1983-12-21 1985-07-16 三菱電機株式会社 画像処理装置
US5907711A (en) * 1996-01-22 1999-05-25 Hewlett-Packard Company Method and apparatus for transforming multiplications into product table lookup references
JP4004915B2 (ja) * 2002-06-28 2007-11-07 株式会社ルネサステクノロジ データ処理装置
JP2007087045A (ja) * 2005-09-21 2007-04-05 Canon Inc 時刻同期デバイス装置
JP2008191807A (ja) * 2007-02-02 2008-08-21 Seiko Epson Corp プログラム実行装置及び電子機器

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0629944A1 (de) * 1993-06-18 1994-12-21 GSF-Forschungszentrum für Umwelt und Gesundheit GmbH Datenverarbeitungsmaschine
CN1348560A (zh) * 1998-11-13 2002-05-08 坦斯利卡公司 高数据密度risc处理器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Table Look Up Pipeline;IBM;《IBM TECHNICAL DISCLOSURE BULLETIN》;19690601;第12卷(第1期);1-3 *

Also Published As

Publication number Publication date
BR112014032625A2 (pt) 2017-06-27
CN104395876A (zh) 2015-03-04
EP2870529A2 (en) 2015-05-13
WO2014006605A2 (en) 2014-01-09
JP6300796B2 (ja) 2018-03-28
MX2014015093A (es) 2015-03-05
JP2015527642A (ja) 2015-09-17
ZA201500848B (en) 2017-01-25
WO2014006605A3 (en) 2014-03-13
RU2015103934A (ru) 2016-08-27
US20150324199A1 (en) 2015-11-12

Similar Documents

Publication Publication Date Title
CN104395876B (zh) 没有算术和逻辑单元的计算机处理器和系统
TWI804200B (zh) 執行複數的熔合乘-加指令的系統與方法
US9141131B2 (en) Methods and systems for performing exponentiation in a parallel processing environment
CN101299185B (zh) 一种基于cisc结构的微处理器结构
CN109213723A (zh) 用于具有安全、功率降低和性能特征的可配置空间加速器的处理器、方法和系统
CN102231102B (zh) 基于余数系统的rsa密码处理方法及协处理器
CN108009126B (zh) 一种计算方法及相关产品
CN104025502A (zh) 用于处理blake安全散列算法的指令处理器、方法以及系统
CN103970720B (zh) 基于大规模粗粒度嵌入式可重构系统及其处理方法
US10635404B2 (en) Mixed-coordinate point multiplication
KR20220047797A (ko) 암호화 연산을 위한 코프로세서
WO2014051720A1 (en) Accelerated interlane vector reduction instructions
Mei et al. CUDA-based AES parallelization with fine-tuned GPU memory utilization
EP3702940A1 (en) Systolic array accelerator systems and methods
WO2014004394A1 (en) Vector multiplication with operand base system conversion and re-conversion
KR20170097618A (ko) 큰 정수 산술 연산을 수행하기 위한 방법 및 장치
Yalçin Compact ECDSA engine for IoT applications
KR20150038407A (ko) 단일 명령어에 응답하여 회전 및 xor을 수행하기 위한 시스템들, 장치들, 및 방법들
US9047069B2 (en) Computer implemented method of electing K extreme entries from a list using separate section comparisons
WO2009141612A2 (en) Improvements relating to data processing architecture
CN104364755B (zh) 用于通过中间阶层运算的并行计算来加速计算的方法和装置
US6694407B1 (en) Cache memory with data transfer control and method of operating same
CN105005465B (zh) 基于比特或字节并行加速的处理器
CN114371828A (zh) 多项式乘法器及具有该乘法器的处理器
Muri et al. Embedded Processor-In-Memory architecture for accelerating arithmetic operations

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
EXSB Decision made by sipo to initiate substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180508

Termination date: 20200706

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