CN108228960A - 用于熔丝验证的基于Simon的散列 - Google Patents

用于熔丝验证的基于Simon的散列 Download PDF

Info

Publication number
CN108228960A
CN108228960A CN201711143368.3A CN201711143368A CN108228960A CN 108228960 A CN108228960 A CN 108228960A CN 201711143368 A CN201711143368 A CN 201711143368A CN 108228960 A CN108228960 A CN 108228960A
Authority
CN
China
Prior art keywords
simon
fuse
passwords
processor
data
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
Application number
CN201711143368.3A
Other languages
English (en)
Other versions
CN108228960B (zh
Inventor
H·考尔
S·K·马修
M·A·安德斯
J·沃克
J·G·山德里
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN108228960A publication Critical patent/CN108228960A/zh
Application granted granted Critical
Publication of CN108228960B publication Critical patent/CN108228960B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/398Design verification or optimisation, e.g. using design rule check [DRC], layout versus schematics [LVS] or finite element methods [FEM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0625Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2115/00Details relating to the type of the circuit
    • G06F2115/10Processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2117/00Details relating to the type or aim of the circuit design
    • G06F2117/06Spare resources, e.g. for permanent fault suppression
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6026Prefetching based on access pattern detection, e.g. stride based prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/333Design for testability [DFT], e.g. scan chain or built-in self-test [BIST]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Power Engineering (AREA)
  • Advance Control (AREA)
  • Architecture (AREA)
  • Software Systems (AREA)
  • Microcomputers (AREA)

Abstract

本申请公开了用于熔丝验证的基于Simon的散列。描述了用于验证的基于Simon的散列的指令和逻辑。在一个实施例中,处理器包括:存储器,该存储器用于存储多个值;以及散列电路,包括:Simon密码电路,能操作以接收来自存储器的多个值、应用Simon密码以及为多个值中的每一个生成输出;以及电路,耦合到Simon密码电路,用于将来自Simon密码电路的多个值中的每个值的输出组合为散列摘要,该散列摘要指示存储器中的值是否是有效的。

Description

用于熔丝验证的基于Simon的散列
发明领域
本公开涉及处理逻辑、微处理器以及相关联的指令集架构领域,当由处理器或其他处理逻辑执行该指令集架构时,该指令集架构执行逻辑、数学或其他功能性操作。
相关技术的描述
集成电路在过去几年内发展得十分复杂。这些设备中的许多设备使用存储在熔丝阵列中的熔丝值来配置。熔丝值可用于启用或禁用设备上的功能或者可以包括在设备上使用的信息,诸如例如,加密密钥。熔丝值最初被编程到熔丝阵列中。在编程之后,被编程的熔丝值经历验证以确保它们被正确地编程。在大批量制造(HVM)测试期间对秘密熔丝值的验证要求读取熔丝而不损坏它们的机密性的能力。例如,已经被烧制到熔丝中的加密密钥在HVM期间需要被验证而不明显地暴露存储的密钥。该问题的常规解决方案会使用管芯上的电路计算熔丝位的散列,并且读取来自芯片的该散列值以用于熔丝验证。因为散列是单向功能,因此它们允许在不暴露原始熔丝值的情况下的熔丝验证。然而,常规的散列电路(诸如SHA-256)占据相当大的管芯面积,这对于仅在测试时或在对消费者退回的失效零件的调试期间操作的一次性使用的电路是不合理的。
附图说明
在附图中的诸个图中通过示例而非限制地示出各个实施例:
图1A是根据一个实施例的系统的框图;
图1B是根据一个实施例的系统的框图;
图1C是根据一个实施例的系统的框图;
图2是根据一个实施例的处理器的框图;
图3A示出根据一个实施例的紧缩数据类型;
图3B示出根据一个实施例的紧缩数据类型;
图3C示出根据一个实施例的紧缩数据类型;
图3D示出根据一个实施例的指令编码;
图3E示出根据一个实施例的指令编码;
图3F示出根据一个实施例的指令编码;
图4A示出根据一个实施例的处理器微架构的要素;
图4B示出根据一个实施例的处理器微架构的要素;
图5是根据一个实施例的处理器的框图;
图6是根据一个实施例的计算机系统的框图;
图7是根据一个实施例的计算机系统的框图;
图8是根据一个实施例的计算机系统的框图;
图9是根据一个实施例的芯片上系统的框图;
图10是根据一个实施例的处理器的框图;
图11是根据一个实施例的IP核开发系统的框图;
图12示出根据一个实施例的架构仿真系统。
图13示出根据一个实施例的用于转换指令的系统。
图14是大批量制造(HVM)熔丝验证微架构的一个实施例。
图15示出根据一个实施例的依赖熔丝数据尺寸的前缀和填补。
图16示出32b/64b的基于Simon的熔丝散列电路的一个实施例。
图17示出具有16b数据路径的32b/64b的Simon密码电路的一个实施例。
图18示出描绘图16的熔丝散列电路的操作的时序图。
图19示出位串行熔丝散列电路的一个实施例。
图20示出描绘图18的熔丝散列电路的操作的时序图。
图21示出用于实现基于Simon密码的散列熔丝验证的系统的示例。
详细描述
公开了熔丝验证微架构和用于使用熔丝验证微架构的方法。以下描述描述了用于对熔丝阵列中的熔丝执行熔丝验证而不揭示已经被编程到熔丝阵列中的那些熔丝值的处理逻辑。该处理逻辑在处理器或其他集成电路、计算机系统或其他处理装置内或与这些设备相关联。在以下描述中,陈述了诸如处理逻辑、处理器类型、微架构条件、事件、启用机制等众多特定细节,以提供对本发明实施例的更透彻理解。然而,本领域技术人员将领会,没有这些具体细节也可实施本发明。此外,没有详细示出一些公知的结构、电路等,以避免不必要地使本发明的多个实施例模糊。
虽然参照处理器来描述下列各实施例,但是,其他实施例也适用于其他类型的集成电路和逻辑器件。本发明的实施例的类似技术和教导可应用于其他类型的电路或半导体器件,这些其他类型的电路或半导体器件可受益于更高的流水线吞吐量和改善的性能。本发明的实施例的教导适用于执行数据操纵的任何处理器或机器。然而,本发明不限于执行512位、256位、128位、64位、32位或16位数据操作的处理器或机器,并且可适用于执行数据操纵或管理的任何处理器和机器。另外,下列描述提供了示例,并且为了进行说明,所附附图示出各种示例。然而,这些示例不应当被理解为是限制性意义的,因为它们仅仅旨在提供本发明的诸个实施例的示例,而并非提供本发明的实施例的所有可能实现的详尽列表。
虽然下述的示例是在执行单元和逻辑电路情境下描述指令处理和分配,但本发明的其他实施例也可通过存储在机器可读有形介质上的数据或指令来完成,这些数据或指令在被机器执行时使得机器执行与本发明至少一个实施例相一致的功能。在一个实施例中,与本发明的多个实施例相关联的功能被具体化在机器可执行指令中。这些指令可用来使通过这些指令而被编程的通用处理器或专用处理器执行本发明的步骤。本发明的多个实施例也可以作为计算机程序产品或软件来提供,该计算机程序产品或软件可包括其上存储有指令的机器或计算机可读介质,这些指令可被用来对计算机(或其他电子设备)进行编程以执行根据本发明的多个实施例的一个或多个操作。或者,本发明的多个实施例的多个步骤可由包含用于执行这些步骤的固定功能逻辑的专用硬件组件来执行,或由经编程的计算机组件以及固定功能硬件组件的任何组合来执行。
可将用于对逻辑进行编程以执行本发明的多个实施例的指令存储在系统中的存储器(诸如,DRAM、高速缓存、闪存、或其他存储设备)内。此外,指令可经由网络或通过其他计算机可读介质来分配。因此,机器可读介质可包括用于以机器(例如,计算机)可读的形式存储或发送信息的任何机制,但不限于:软盘、光盘、紧致盘只读存储器(CD-ROM)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或在互联网上经由电、光、声、或其他形式的传播信号(例如,载波、红外信号、数字信号等)发送信息中所使用的有形的机器可读存储器。因此,计算机可读介质包括适用于存储或发送机器(例如,计算机)可读形式的电子指令或信息的任何类型的有形的机器可读介质。
设计会经历多个阶段,从创建到仿真到制造。表示设计的数据可以用多种方式来表示该设计。首先,像仿真中有用的那样,可以使用硬件描述语言或另一功能性描述语言来表示硬件。此外,可以在设计过程的一些阶段产生具有逻辑和/或晶体管门的电路级模型。此外,大多数设计在某个阶段都达到表示硬件模型中各种设备的物理布置的数据的层级。在使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于制造集成电路的掩模的不同掩模层上存在或不存在各种各样特征的数据。在任何的设计表示中,数据可被存储在任何形式的机器可读介质中。存储器或磁/光存储器(诸如,盘)可以是存储信息的机器可读介质,这些信息是经由光学或电学波来发送的,这些光学或电学波被调制或以其他方式生成以传送这些信息。当发送指示或承载代码或设计的电学载波达到实现电信号的复制、缓冲或重新发送的程度时,即产生了新的副本。因此,通信提供商或网络提供商可在有形的机器可读介质上至少临时地存储具体化本发明的多个实施例的技术的制品(诸如,被编码成载波的信息)。
在现代处理器中,将多个不同的执行单元用于处理和执行各种代码和指令。并不是所有指令都被同等地创建,因为一些指令更快地完成而其他指令可能需要多个时钟周期来完成。指令的吞吐量越快,则处理器的总体性能越好。因此,使尽可能多的指令尽可能快地执行将会是有利的。然而,存在具有更大的复杂度,并在执行时间和处理器资源方面要求更多的某些指令。例如,存在浮点指令、加载/存储操作、数据移动等。
因为更多的计算机系统被用于互联网、文本以及多媒体应用,所以已逐渐地引进了附加的处理器支持。在一个实施例中,指令集可与一个或多个计算机架构相关联,一个或多个计算机架构包括:数据类型、指令、寄存器架构、寻址模式、存储器架构、中断和异常处理以及外部输入和输出(I/O)。
在一个实施例中,指令集架构(ISA)可由一个或更多微架构来实现,微架构包括用于实现一个或多个指令集的处理器逻辑和电路。因此,具有不同微架构的多个处理器可共享公共指令集的至少一部分。例如,奔腾四(Pentium 4)处理器、酷睿(CoreTM)处理器、以及来自加利福尼亚州桑尼威尔(Sunnyvale)的超微半导体有限公司(Advanced Micro Devices,Inc.)的多个处理器执行几乎相同版本的x86指令集(在更新的版本中加入了一些扩展),但具有不同的内部设计。类似地,由其他处理器开发公司(诸如,ARM控股有限公司、MIPS或它们的授权方或兼容方)设计的多个处理器可共享至少一部分公共指令集,但可包括不同的处理器设计。例如,ISA的相同寄存器架构在不同的微架构中可使用新的或公知的技术以不同方法来实现,包括专用物理寄存器、使用寄存器重命名机制(例如,使用寄存器别名表(RAT)、重排序缓冲器(ROB)以及引退寄存器堆)的一个或多个动态分配物理寄存器。在一个实施例中,寄存器可包括:可由软件编程者寻址或不可由软件编程者寻址的一个或多个寄存器、寄存器架构、寄存器堆、或其他寄存器集合。
在一个实施例中,指令可包括一个或多个指令格式。在一个实施例中,指令格式可指示多个字段(位的数量、位的位置等)以指定将要被执行的操作以及将要对其执行操作的操作数等。一些指令格式可进一步由指令模板(或子格式)细分定义。例如,给定指令格式的指令模板可被定义为具有指令格式字段的不同的子集,和/或被定义为具有以不同方式进行解释的给定字段。在一个实施例中,使用指令格式(并且,如果定义过,则以该指令格式的指令模板中的给定的一个)来表示指令,并且该指令指定或指示操作以及该操作将操作的操作数。
科学应用、金融应用、自动向量化通用应用、RMS(识别、挖掘和合成)应用以及视觉和多媒体应用(例如,2D/3D图形、图像处理、视频压缩/解压缩、语音识别算法和音频处理)可能需要对大量数据项执行相同的操作。在一个实施例中,单指令多数据(SIMD)指的是使得处理器对多个数据元素执行一个操作的指令类型。可将SIMD技术用于可将寄存器中的多个位逻辑地划分为多个固定尺寸或可变尺寸的数据元素(每个数据元素表示单独的值)的处理器中。例如,在一个实施例中,可将64位寄存器中的多个位组织为包含四个单独的16位数据元素的源操作数,每个数据元素表示单独的16位的值。该数据类型可被称为“紧缩”数据类型或“向量”数据类型,并且该数据类型的操作数被称为紧缩数据操作数或向量操作数。在一个实施例中,紧缩数据项或向量可以是存储在单个寄存器中的紧缩数据元素的序列,并且紧缩数据操作数或向量操作数可以是SIMD指令(或“紧缩数据指令”或“向量指令”)的源操作数或目的地操作数。在一个实施例中,SIMD指令指定了将要对两个源向量操作数执行以生成具有相同或不同尺寸的、具有相同或不同数量的数据元素的、具有相同或不同数据元素顺序的目的地向量操作数(也被称为结果向量操作数)的单个向量操作。
诸如由酷睿(CoreTM)处理器(具有包括x86、MMXTM、流SIMD扩展(SSE)、SSE2、SSE3、SSE4.1、SSE4.2指令的指令集)、ARM处理器(诸如,ARM处理器族,具有包括向量浮点(VFP)和/或NEON指令的指令集)和MIPS处理器(诸如,中国科学院计算机技术研究所(ICT)开发的龙芯处理器族)所采用的SIMD技术之类的SIMD技术在应用性能上带来了极大的提高(CoreTM和MMXTM是加利福尼亚州圣克拉拉市的英特尔公司的注册商标或商标)。
在一个实施例中,目的地寄存器/数据和源寄存器/数据是表示对应数据或操作的源和目的地的通用术语。在一些实施例中,它们可由寄存器、存储器或具有与所描绘的那些名称或功能不同的名称或功能的其他存储区域来实现。例如,在一个实施例中,“DEST1”可以是临时存储寄存器或其他存储区域,而“SRC1”和“SRC2”可以是第一和第二源存储寄存器或其他存储区域,等等。在其他实施例中,SRC和DEST存储区域中的两个或更多可对应于相同存储区域中的不同数据存储元素(例如,SIMD寄存器)。在一个实施例中,通过例如将对第一和第二源数据执行的操作的结果写回至两个源寄存器中作为目的地寄存器的那个寄存器,源寄存器中的一个也可以作为目的地寄存器。
图1A是根据本发明的一个实施例的示例性计算机系统的框图,该计算机系统被形成为具有包括执行单元以执行指令的处理器。根据本发明,诸如在本文中所描述的实施例中,系统100包括诸如处理器102之类的组件,该处理器102用于使用包括逻辑的执行单元以执行算法来处理数据。系统100代表基于可从美国加利福尼亚州圣克拉拉市的英特尔公司获得的III、4、XeonTMXScaleTM和/或StrongARMTM微处理器的处理系统,不过也可使用其它系统(包括具有其它微处理器的PC、工程工作站、机顶盒等)。在一个实施例中,样本系统100可执行可从美国华盛顿州雷蒙德市的微软公司获得的WINDOWSTM操作系统的一个版本,不过也可使用其它操作系统(例如UNIX和Linux)、嵌入式软件、和/或图形用户界面。因此,本发明的各实施例不限于硬件电路和软件的任何具体组合。
诸实施例不限于计算机系统。本发明的替代实施例可用于其他设备,诸如手持式设备和嵌入式应用。手持式设备的某些示例包括蜂窝电话、网际协议设备、数码相机、个人数字助理(PDA)以及手持式PC。嵌入式应用可包括微控制器、数字信号处理器(DSP)、芯片上系统、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机、或能够执行根据至少一个实施例的一条或多条指令的任何其他系统。
图1A是计算机系统100的框图,计算机系统100被形成为具有处理器102,处理器102包括一个或多个执行单元108用于执行算法,从而执行根据本发明的一个实施例的至少一条指令。可在单处理器桌面设备或服务器系统的情境中描述一个实施例,但是可将替代实施例包括在多处理器系统中。系统100是“中枢”系统架构的示例。计算机系统100包括用于处理数据信号的处理器102。处理器102可以是复杂指令集计算机(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、实现多个指令集组合的处理器或任意其他处理器设备(例如,数字信号处理器)。处理器102耦合至处理器总线110,该处理器总线可在处理器102和系统100内的其他组件之间传输数据信号。系统100的多个要素执行为熟悉本领域的人员所共知的它们的常规功能。
在一个实施例中,处理器102包括第一级(L1)内部高速缓存存储器104。取决于架构,处理器102可具有单个内部高速缓存或多级内部高速缓存。或者,在另一个实施例中,高速缓存存储器可驻留在处理器102的外部。其他实施例也可包括内部高速缓存和外部高速缓存的组合,这取决于特定实现和需求。寄存器堆106可将不同类型的数据存储在各种寄存器(包括整数寄存器、浮点寄存器、状态寄存器、指令指针寄存器)中。
执行单元108(包括用于执行整数和浮点操作的逻辑)也驻留在处理器102中。处理器102还包括存储用于某些宏指令的微代码的微代码(ucode)ROM。对于一个实施例,执行单元108包括用于处理紧缩指令集109的逻辑。通过将紧缩指令集109包括在通用处理器102以及用于执行指令的相关联的电路的指令集中,可以使用通用处理器102中的紧缩数据来执行由许多多媒体应用使用的操作。因此,通过将处理器数据总线的完整宽度用于对紧缩数据执行操作,可加速并更高效地执行许多多媒体应用。这能消除跨处理器数据总线传输更小数据单元以便一次对一个数据元素执行一个或多个操作的需求。
执行单元108的替代实施例也可被用于微控制器、嵌入式处理器、图形设备、DSP以及其他类型的逻辑电路。系统100包括存储器120。存储器120可以是动态随机存取存储器(DRAM)设备、静态随机存取存储器(SRAM)设备、闪存设备或其他存储器设备。存储器120可存储由可由处理器102执行的数据信号来表示的指令和/或数据。
系统逻辑芯片116耦合至处理器总线110和存储器120。在所示出的实施例中的系统逻辑芯片116是存储器控制器中枢(MCH)。处理器102可经由处理器总线110来与MCH 116通信。MCH 116提供至存储器120的高带宽存储器路径118,用于指令和数据存储,并且用于图形命令、数据和纹理的存储。MCH 116用于在处理器102、存储器120与系统100中的其他组件之间引导数据信号,并且用于在处理器总线110、存储器120与系统I/O 122之间桥接数据信号。在一些实施例中,系统逻辑芯片116可提供用于耦合至图形控制器112的图形端口。MCH 116通过存储器接口118耦合至存储器120。图形卡112通过加速图形端口(AGP)互连114耦合至MCH 116。
系统100使用专有中枢接口总线122以将MCH 116耦合至I/O控制器中枢(ICH)130。ICH 130经由本地I/O总线来提供到某些I/O设备的直接连接。本地I/O总线是用于将外围设备连接到存储器120、芯片组以及处理器102的高速I/O总线。一些示例是音频控制器、固件中枢(闪存BIOS)128、无线收发机126、数据存储设备124、包括用户输入和键盘接口的传统I/O控制器、串行扩展端口(诸如,通用串行总线(USB))以及网络控制器134。数据存储设备124可以包括硬盘驱动器、软盘驱动器、CD-ROM设备、闪存设备、或其他大容量存储设备。
对于系统的另一个实施例,根据一个实施例的指令可以与芯片上系统一起使用。芯片上系统的一个实施例包括处理器和存储器。一个这样的系统的存储器是闪存。闪存可以位于与处理器和其他系统组件相同的管芯上。另外,诸如存储器控制器或图形控制器的其他逻辑块也可以位于芯片上系统上。
图1B示出数据处理系统140,该数据处理系统140实现本发明的一个实施例的原理。本领域的技术人员将容易理解,本文描述的多个实施例可用于替代的处理系统,而不背离本发明的多个实施例的范围。
计算机系统140包括能够执行根据一个实施例的至少一条指令的处理核159。对于一个实施例,处理核159表示任何类型的架构(包括但不限于,CISC、RISC或VLIW类型架构)的处理单元。处理核159也可适于以一种或多种处理技术来制造,并且通过足够详细地表示在机器可读介质上可适用于促进所述制造。
处理核159包括执行单元142、一组寄存器堆145以及解码器144。处理核159也包括对于理解本发明的实施例不是必需的附加电路(未示出)。执行单元142用于执行处理核159接收到的指令。除了执行典型的处理器指令外,执行单元142也可执行紧缩指令集143中的指令,以便对紧缩数据格式执行操作。紧缩指令集143包括用于执行本发明的多个实施例的指令以及其他紧缩指令。执行单元142通过内部总线耦合至寄存器堆145。寄存器堆145表示处理核159上用于存储包括数据的信息的存储区域。如前文所述,可以理解,将该存储区域用于存储紧缩数据并不是关键的。执行单元142耦合至解码器144。解码器144用于将处理核159接收到的指令解码为控制信号和/或微代码进入点。响应于这些控制信号和/或微代码进入点,执行单元142执行合适的操作。在一个实施例中,将解码器用于解释指令的操作码,该操作码将指示应当对该指令内所指示的对应数据执行什么操作。
处理核159与总线141耦合,用于与各种其他系统设备进行通信,其他系统设备可包括但不限于:例如,同步动态随机存取存储器(SDRAM)控制器146、静态随机存取存储器(SRAM)控制器147、猝发闪存接口148、个人计算机存储卡国际协会(PCMCIA)/紧致闪存(CF)卡控制器149、液晶显示器(LCD)控制器150、直接存储器存取(DMA)控制器151、以及替代的总线主接口152。在一个实施例中,数据处理系统140也可包括I/O桥154,用于经由I/O总线153与各种I/O设备进行通信。此类I/O设备可包括但不限于:例如,通用异步接收机/发射机(UART)155、通用串行总线(USB)156、蓝牙无线UART 157、以及I/O扩展接口158。
数据处理系统140的一个实施例提供了移动通信、网络通信和/或无线通信,并提供了能够执行包括文本串比较操作的SIMD操作的处理核159。可利用各种音频、视频、成像和通信算法对处理核159进行编程,这些算法包括:离散变换(诸如Walsh-Hadamard变换、快速傅立叶变换(FFT)、离散余弦变换(DCT)以及它们相应的逆变换);压缩/解压缩技术(例如,色彩空间变换、视频编码运动估计或视频解码运动补偿);以及调制/解调(MODEM)功能(例如,脉冲编码调制(PCM))。
图1C示出了能够执行SIMD文本串比较操作的数据处理系统的其他替代实施例。根据一个替代实施例,数据处理系统160可包括主处理器166、SIMD协处理器161、高速缓存存储器167以及输入/输出系统168。输入/输出系统168可以可选地耦合至无线接口169。SIMD协处理器161能够执行包括根据一个实施例的指令的操作。处理核170可适用于以一种或多种处理技术来制造,并且通过足够详细地表示在机器可读介质上,可适用于促进包括处理核170的数据处理系统160的全部或部分的制造。
对于一个实施例,SIMD协处理器161包括执行单元162以及一组寄存器堆164。主处理器165的一个实施例包括解码器165,该解码器165用于识别包括根据一个实施例的、用于由执行单元162执行的指令的指令集163中的多条指令。对于替代实施例,SIMD协处理器161也包括用于对指令集163中的多条指令进行解码的解码器165B的至少部分。处理核170也包括对于理解本发明的实施例不是必需的附加电路(未示出)。
在操作中,主处理器166执行控制通用类型的数据处理操作(包括与高速缓存存储器167和输入/输出系统168之间的交互)的数据处理指令流。SIMD协处理器指令被嵌入到该数据处理指令流中。主处理器166的解码器165将这些SIMD协处理器指令识别为应当由附连的SIMD协处理器161来执行的类型。因此,主处理器166在协处理器总线166上发布这些SIMD协处理器指令(或表示SIMD协处理器指令的控制信号),由任何附连的SIMD协处理器从该协处理器总线166接收到这些指令。在这种情况下,SIMD协处理器161将接受并执行任何接收到的针对该SIMD协处理器的SIMD协处理器指令。
可经由无线接口169接收数据以通过SIMD协处理器指令进行处理。对于一个示例,能以数字信号的形式接收到语音通信,可由SIMD协处理器指令处理该数字信号以便重新生成表示该语音通信的数字音频样本。对于另一个示例,能以数字位流的形式接收到被压缩的音频和/或视频,可由SIMD协处理器指令处理该数字位流以便重新生成数字音频样本和/或运动视频帧。对于处理核170的一个实施例,主处理器166和SIMD协处理器161被集成在单个处理核170中,该单个处理核170包括执行单元162、一组寄存器堆164以及用于识别包括根据一个实施例的多条指令的指令集163中的多条指令的解码器165。
图2是处理器200的微架构的框图,该处理器200包括用于执行根据本发明的一个实施例的指令的逻辑电路。在一些实施例中,根据一个实施例的指令可被实现为对具有字节尺寸、字尺寸、双字尺寸、四字尺寸等并具有诸多数据类型(诸如单精度和双精度整数和浮点数据类型)的数据元素执行操作。在一个实施例中,有序前端201是处理器200的一部分,其取出将要被执行的指令,并准备这些指令以在稍后供处理器流水线使用。前端201可包括若干单元。在一个实施例中,指令预取器226从存储器取出指令,并将指令馈送至指令解码器228,指令解码器228随后解码或解释指令。例如,在一个实施例中,解码器将所接收到的指令解码为机器可执行的被称为“微指令”或“微操作”(也称为微op或uop)的一个或多个操作。在其他实施例中,解码器将指令解析为操作码和对应的数据及控制字段,它们被微架构用于执行根据一个实施例的操作。在一个实施例中,追踪高速缓存230接受经解码的uop,并将它们组装为程序有序序列或uop队列234中的踪迹,以用于执行。当追踪高速缓存230遇到复杂指令时,微代码ROM 232提供完成操作所需的uop。
一些指令被转换为单个微操作,而其他指令需要若干个微操作以完成整个操作。在一个实施例中,如果需要多于四个微操作来完成指令,则解码器228访问微代码ROM 232以执行该指令。对于一个实施例,指令可被解码为少量的微操作以用于在指令解码器228处进行处理。在另一个实施例中,如果需要若干个微操作来完成操作,则可将指令存储在微代码ROM 232中。追踪高速缓存230参考进入点可编程逻辑阵列(PLA)来确定正确的微指令指针,以从微代码ROM 232中读取微代码序列来完成根据一个实施例的一条或多条指令。在微代码ROM 232完成对于指令的微操作序列化之后,机器的前端201恢复从追踪高速缓存230取出微操作。
乱序执行引擎203是将指令准备好用于执行的单元。乱序执行逻辑具有若干个缓冲器,用于将指令流平滑并且重排序,以优化指令流进入流水线后的性能,并调度指令流以供执行。分配器逻辑分配每个微操作需要的机器缓冲器和资源,以用于执行。寄存器重命名逻辑将诸个逻辑寄存器重命名为寄存器堆中的条目。在指令调度器(存储器调度器、快速调度器202、慢速/通用浮点调度器204、简单浮点调度器206)之前,分配器也将每个微操作的条目分配在两个微操作队列中的一个之中,一个微操作队列用于存储器操作,另一个微操作队列用于非存储器操作。微操作调度器202、204、206基于对它们的依赖输入寄存器操作数源的准备就绪以及微操作完成它们的操作所需的执行资源的可用性来确定微操作何时准备好用于执行。一个实施例的快速调度器202可在主时钟周期的每半个上进行调度,而其他调度器可仅仅在每个主处理器时钟周期上调度一次。调度器对分配端口进行仲裁以调度微操作以便执行。
寄存器堆208、210位于调度器202、204、206与执行块211中的执行单元212、214、216、218、220、222、224之间。存在分别用于整数和浮点操作的分开的寄存器堆208、210。一个实施例的每个寄存器堆208、210也包括旁路网络,旁路网络可将刚完成的还没有被写入寄存器堆的结果旁路或转发给新的依赖微操作。整数寄存器堆208和浮点寄存器堆210也能够彼此传递数据。对于一个实施例,整数寄存器堆208被划分为两个单独的寄存器堆,一个寄存器堆用于低阶的32位数据,第二个寄存器堆用于高阶的32位数据。一个实施例的浮点寄存器堆210具有128位宽度的条目,因为浮点指令通常具有从64至128位宽度的操作数。
执行块211包括执行单元212、214、216、218、220、222、224,在执行单元212、214、216、218、220、222、224中实际执行指令。该区块包括寄存器堆208、210,寄存器堆208、210存储微指令需要执行的整数和浮点数据操作数值。一个实施例的处理器200包括有多个执行单元:地址生成单元(AGU)212、AGU 214、快速ALU 216、快速ALU 218、慢速ALU 220、浮点ALU222、浮点移动单元224。对于一个实施例,浮点执行块222、224执行浮点、MMX、SIMD、SSE或其他操作。一个实施例的浮点ALU 222包括64位/64位浮点除法器,用于执行除法、平方根、以及余数微操作。对于本发明的诸个实施例,涉及浮点值的指令可使用浮点硬件来处理。在一个实施例中,ALU操作进入高速ALU执行单元216、218。一个实施例的快速ALU 216、218可执行快速操作,有效等待时间为半个时钟周期。对于一个实施例,大多数复杂整数操作进入慢速ALU 220,因为慢速ALU 220包括用于长等待时间类型操作的整数执行硬件,诸如,乘法器、移位器、标志逻辑和分支处理。存储器加载/存储操作由AGU 212、214来执行。对于一个实施例,整数ALU 216、218、220被描述为对64位数据操作数执行整数操作。在替代实施例中,可实现ALU 216、218、220以支持包括16、32、128、256等各种数据位。类似地,可实现浮点单元222、224以支持具有各种位宽的多个操作数。对于一个实施例,浮点单元222、224可结合SIMD和多媒体指令对128位宽度紧缩数据操作数进行操作。
在一个实施例中,在父加载完成执行之前,微操作调度器202、204、206就分派依赖性操作。因为在处理器200中微操作被推测性地调度和执行,所以处理器200也包括处理存储器未命中的逻辑。如果数据加载在数据高速缓存中未命中,则在流水线中会存在带着临时错误的数据离开调度器的运行中的依赖性操作。重放机制跟踪使用错误数据的指令,并重新执行这些指令。仅仅依赖性操作需要被重放,而允许独立操作完成。处理器的一个实施例的调度器和重放机制也被设计成捕获用于文本串比较操作的指令序列。
术语“寄存器”可指代被用作为指令的一部分以标识操作数的板上处理器存储位置。换句话说,寄存器可以是那些处理器外部(从编程者的角度来看)可用的处理器存储位置。然而,一实施例的寄存器不限于表示特定类型的电路。相反,一实施例的寄存器能够存储并提供数据,并且能够执行本文所述的功能。本文所描述的寄存器可利用任何数量的不同技术通过处理器中的电路来实现,这些不同技术诸如专用物理寄存器、利用寄存器重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合等。在一个实施例中,整数寄存器存储32位整数数据。一个实施例的寄存器堆也包含八个多媒体SIMD寄存器,用于紧缩数据。对于以下讨论,寄存器应被理解为设计成保存紧缩数据的数据寄存器,诸如来自美国加利福尼亚州圣克拉拉市的英特尔公司的启用了MMX技术的微处理器的64位宽MMXTM寄存器(在一些实例中也称为“mm寄存器”)。这些MMX寄存器(可用在整数和浮点形式中)可与伴随SIMD和SSE指令的紧缩数据元素一起操作。类似地,涉及SSE2、SSE3、SSE4或更新的技术(统称为“SSEx”)的128位宽XMM寄存器也可被用于保持此类紧缩数据操作数。在一个实施例中,在存储紧缩数据和整数数据时,寄存器不需要区分这两类数据类型。在一个实施例中,整数和浮点数据可被包括在相同的寄存器堆中,或被包括在不同的寄存器堆中。进一步的,在一个实施例中,浮点和整数数据可被存储在不同的寄存器中,或被存储在相同的寄存器中。
在下述附图的示例中,描述了多个数据操作数。图3A示出了根据本发明的一个实施例的多媒体寄存器中的各种紧缩数据类型表示。图3A示出用于128位宽操作数的紧缩字节310、紧缩字320以及紧缩双字(dword)330的数据类型。本示例的紧缩字节格式310是128位长,并且包含十六个紧缩字节数据元素。字节在此被定义为8位数据。每一个字节数据元素的信息被存储为:对于字节0存储在位7到位0,对于字节1存储在位15到位8,对于字节2存储在位23到位16,最后对于字节15存储在位120到位127。因此,在该寄存器中使用了所有可用的位。该存储配置提高了处理器的存储效率。同样,因为访问了十六个数据元素,所以现在可并行地对十六个数据元素执行一个操作。
通常,数据元素是与具有相同长度的其他数据元素一起被存储在单个寄存器或存储器位置中的单独的数据片。在涉及SSEx技术的紧缩数据序列中,存储在XMM寄存器中的数据元素的数目是128位除以单独的数据元素的位长。类似地,在涉及MMX和SSE技术的紧缩数据序列中,存储在MMX寄存器中的数据元素的数目是64位除以单独的数据元素的位长。虽然图3A中示出的数据类型是128位长,但是本发明的实施例还可以利用64位宽或其他尺寸的操作数来操作。本示例中的紧缩字格式320是128位长,并且包含八个紧缩字数据元素。每个紧缩字包含十六位的信息。图3A的紧缩双字格式330是128位长,并且包含四个紧缩双字数据元素。每个紧缩双字数据元素包含三十二位的信息。紧缩四字是128位长,并包含两个紧缩四字数据元素。
图3B示出替代的寄存器内数据存储格式。每个紧缩数据可包括多于一个的独立数据元素。示出了三种紧缩数据格式:紧缩半数据元素341、紧缩单数据元素342和紧缩双数据元素343。紧缩半数据元素341、紧缩单数据元素342和紧缩双数据元素343的一个实施例包含固定点数据元素。对于替代实施例,紧缩半数据元素341、紧缩单数据元素342和紧缩双数据元素343中的一个或多个可包含浮点数据元素。紧缩半数据元素341的一个替代实施例是一百二十八位长的,并且包含八个16位数据元素。紧缩单数据元素342的一个实施例是一百二十八位长的,并且包含四个32位数据元素。紧缩双数据元素343的一个实施例是一百二十八位长的,并且包含两个64位数据元素。将会理解,可进一步将此类紧缩数据格式扩展至其他寄存器长度,例如,96位、160位、192位、224位、256位或更长。
图3C示出了根据本发明的一个实施例的多媒体寄存器中的各种有符号和无符号紧缩数据类型表示。无符号紧缩字节表示344示出将无符号紧缩字节存储在SIMD寄存器中。每一个字节数据元素的信息被存储为:对于字节0存储在位7到位0,对于字节1存储在位15到位8,对于字节2存储在位23到位16,最后对于字节15存储在位120到位127。因此,在该寄存器中使用了所有可用的位。该存储配置可提高处理器的存储效率。同样,因为访问了十六个数据元素,所以现在能以并行方式对十六个数据元素执行一个操作。有符号紧缩字节表示345示出了有符号紧缩字节的存储。注意,每个字节数据元素的第八位是符号指示符。无符号紧缩字表示346示出了如何将字7到字0存储在SIMD寄存器中。有符号紧缩字表示347类似于无符号紧缩字寄存器内表示346。注意,每个字数据元素的第十六位是符号指示符。无符号紧缩双字表示348示出了如何存储双字数据元素。有符号紧缩双字表示349类似于无符号紧缩双字寄存器内表示348。注意,必要的符号位是每个双字数据元素的第三十二位。
图3D是与可从美国加利福尼亚州圣克拉拉市的英特尔公司的万维网(www)intel.com/design/litcentr上获得的“IA-32英特尔架构软件开发者手册卷2:指令集参考(IA-32Intel Architecture Software Developer’s Manual Volume 2:Instruction SetReference)”中描述的操作码格式类型相对应的、具有32或更多位的操作编码(操作码)格式360以及寄存器/存储器操作数寻址模式的一个实施例的描绘。在一个实施例中,可通过字段361和362中的一个或多个对指令进行编码。可以对于每条指令标识多至两个操作数位置,包括多至两个源操作数标识符364和365。对于一个实施例,目的地操作数标识符366与源操作数标识符364相同,而在其他实施例中它们不相同。对于替代实施例,目的地操作数标识符366与源操作数标识符365相同,而在其他实施例中它们不相同。在一个实施例中,由源操作数标识符364和365标识的源操作数中的一个被文本串比较操作的结果覆写,而在其他实施例中,标识符364对应于源寄存器元件,而标识符365对应于目的地寄存器元件。对于一个实施例,操作数标识符364和365可被用于标识32位或64位的源和目的地操作数。
图3E是具有四十个或更多位的另一个替代操作编码(操作码)格式370的描绘。操作码格式370对应于操作码格式360,并包括可选的前缀字节378。根据一个实施例的指令可通过字段378、371和372中的一个或多个来编码。通过源操作数标识符374和375以及通过前缀字节378,可对每条指令标识多至两个操作数位置。对于一个实施例,前缀字节378可被用于标识32位或64位的源和目的地操作数。对于一个实施例,目的地操作数标识符376与源操作数标识符374相同,而在其他实施例中它们不相同。对于替代实施例,目的地操作数标识符376与源操作数标识符375相同,而在其他实施例中它们不相同。在一个实施例中,指令对由操作数标识符374和375所标识的操作数中的一个或多个进行操作,并且通过该指令的结果覆写由操作数标识符374和375所标识的一个或多个操作数,而在其他实施例中,将由标识符374和375标识的操作数写入另一寄存器中的另一数据元素中。操作码格式360和370允许由MOD字段363和373以及由可选的比例-索引-基址(scale-index-base)和位移(displacement)字节部分地指定的寄存器到寄存器寻址、存储器到寄存器寻址、由存储器对寄存器寻址、由寄存器对寄存器寻址、由立即数对寄存器寻址、寄存器到存储器寻址。
接下来转到图3F,在一些替代实施例中,可以通过协处理器数据处理(CDP)指令来执行64位单指令多数据(SIMD)算术操作。操作编码(操作码)格式380描绘了具有CDP操作码字段382和389的一条此类CDP指令。对于替代实施例,可由字段383、384、387和388中的一个或多个对CDP指令操作的这种类型进行编码。可以对每个指令标识多至三个操作数位置,包括多至两个源操作数标识符385和390以及一个目的地操作数标识符386。协处理器的一个实施例可对8位、16位、32位和64位的值进行操作。对于一个实施例,对整数数据元素执行指令。在一些实施例中,可使用条件字段381,有条件地执行指令。对于一些实施例,可通过字段383来对源数据尺寸进行编码。在一些实施例中,可对SIMD字段执行零(Z)、负(N)、进位(C)和溢出(V)检测。对于一些指令,可通过字段384对饱和类型进行编码。
图4A是示出根据本发明的至少一个实施例的有序流水线以及寄存器重命名级、乱序发布/执行流水线的框图。图4B是示出根据本发明的至少一个实施例的、要被包括在处理器中的有序架构核以及寄存器重命名逻辑、乱序发布/执行逻辑的框图。图4A中的实线框示出了有序流水线,而虚线框示出了寄存器重命名的、乱序发布/执行流水线。类似地,图4B中的实线框示出了有序架构逻辑,而虚线框示出了寄存器重命名逻辑以及乱序发布/执行逻辑。
在图4A中,处理器流水线400包括取出级402、长度解码级404、解码级406、分配级408、重命名级410、调度(也称为分派或发布)级412、寄存器读取/存储器读取级414、执行级416、写回/存储器写入级418、异常处理级422以及提交级424。
在图4B中,箭头指示两个或更多个单元之间的耦合,并且箭头的方向指示那些单元之间的数据流的方向。图4B示出了包括耦合到执行引擎单元450的前端单元430的处理器核490,且执行引擎单元和前端单元两者都耦合到存储器单元470。
核490可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核或混合或替代核类型。作为又一选项,核490可以是专用核,例如,网络或通信核、压缩引擎、图形核等。
前端单元430包括耦合到指令高速缓存单元434的分支预测单元432,该指令高速缓存单元434耦合到指令转换后备缓冲器(TLB)436,该指令转换后备缓冲器436耦合到指令取出单元438,指令取出单元438耦合到解码单元440。解码单元或解码器可解码指令,并生成从原始指令中解码出的、或以其他方式反映原始指令的、或从原始指令中导出的一个或多个微操作、微代码进入点、微指令、其他指令或其他控制信号作为输出。可使用各种不同的机制来实现解码器。合适机制的示例包括但不限于,查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。指令高速缓存单元434进一步耦合到存储器单元470中的第2级(L2)高速缓存单元476。解码单元440耦合至执行引擎单元450中的重命名/分配器单元452。
执行引擎单元450包括重命名/分配器单元452,该重命名/分配器单元452耦合到引退单元454和一个或多个调度器单元的集合456。(多个)调度器单元456表示任何数量的不同调度器,包括预留站、中央指令窗口等。(多个)调度器单元456耦合到(多个)物理寄存器堆单元458。(多个)物理寄存器堆单元458中的每一个表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一个或多个不同的数据类型(诸如,标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点等)、状态(诸如,作为将要执行的下一指令的地址的指令指针)等等。(多个)物理寄存器堆单元458与引退单元154重叠以示出可以用来实现寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用(多个)未来文件、(多个)历史缓冲器和(多个)引退寄存器堆;使用寄存器映射和寄存器池等等)。通常,架构寄存器从处理器外部或从编程者的视角来看是可见的。这些寄存器不限于任何已知的特定电路类型。多种不同类型的寄存器可适用,只要它们能够存储并提供在此所述的数据。合适的寄存器的示例包括但不限于:专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用物理寄存器和动态分配物理寄存器的组合等等。引退单元454和物理寄存器堆单元458耦合至执行群集460。(多个)执行群集460包括一个或多个执行单元462的集合和一个或多个存储器访问单元464的集合。执行单元462可以对各种类型的数据(例如,标量浮点、紧缩整型、紧缩浮点、向量整型、向量浮点)执行各种操作(例如,移位、加法、减法、乘法)。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但其它实施例可包括仅一个执行单元或全部执行所有功能的多个执行单元。(多个)调度器单元456、(多个)物理寄存器堆单元458和(多个)执行群集460被示为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,各自具有其自己的调度器单元、(多个)物理寄存器堆单元和/或执行群集的标量整型流水线、标量浮点/紧缩整型/紧缩浮点/向量整型/向量浮点流水线和/或存储器访问流水线——以及在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行群集具有(多个)存储器访问单元464的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以为乱序发布/执行,并且其余流水线可以为有序发布/执行。
存储器访问单元的集合464耦合至存储器单元470,该存储器单元包括数据TLB单元472,该数据TLB单元耦合至数据高速缓存单元474,该数据高速缓存单元耦合至第二级(L2)高速缓存单元476。在一个示例性实施例中,存储器访问单元464可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元470中的数据TLB单元472。L2高速缓存单元476被耦合到一个或多个其他级的高速缓存,并最终被耦合到主存储器。
作为示例,示例性寄存器重命名的、乱序发布/执行核架构可以如下实现流水线400:1)指令取出438执行取出和长度解码级402和404;2)解码单元440执行解码级406;3)重命名/分配器单元452执行分配级408和重命名级410;4)调度器单元456执行调度级412;5)物理寄存器堆单元458和存储器单元470执行寄存器读取/存储器读取级414;执行群集460执行执行级416;6)存储器单元470和物理寄存器堆单元458执行写回/存储器写入级418;7)各单元可牵涉到异常处理级422;以及8)引退单元454和物理寄存器堆单元458执行提交级424。
核490可支持一个或多个指令集(诸如,x86指令集(具有增加有更新版本的一些扩展)、加利福尼亚州桑尼威尔的MIPS技术公司的MIPS指令集、加利福尼亚州桑尼威尔的ARM控股公司的ARM指令集(具有可选附加扩展,诸如NEON))。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,此各种方式包括时分多线程化、同步多线程化(其中单个物理核为物理核正在同步多线程化的各线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后诸如用超线程化技术来同步多线程化)。
尽管在乱序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。虽然处理器的所示出的实施例也包括单独的指令和数据高速缓存单元434/474以及共享的L2高速缓存单元476,但替代实施例可具有用于指令和数据两者的单个的内部高速缓存,诸如例如,第1级(L1)内部高速缓存或多个层级的内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。
图5是根据本发明的多个实施例的具有集成存储器控制器和图形器件的单核处理器和多核处理器500的框图。图5的实线框示出了处理器500,其具有单个核502A、系统代理510、一组一个或多个总线控制器单元516,而可选附加的虚线框示出了替代的处理器500,其具有多个核502A-N、位于系统代理单元510中的一组一个或多个集成存储器控制器单元514以及集成图形逻辑508。
存储器层次结构包括核内的一个或多个层级的高速缓存、一组或一个或多个共享高速缓存单元506以及耦合到集成存储器控制器单元514的集合的外部存储器(未示出)。该共享高速缓存单元的集合506可以包括一个或多个中间级高速缓存,诸如二级(L2)、三级(L3)、四级(L4)或其它级别的高速缓存、末级高速缓存(LLC)、和/或其组合。虽然在一个实施例中,基于环的互连单元512将集成图形逻辑508、共享高速缓存单元的集合506和系统代理单元510进行互连,但替代的实施例也可使用任何数量的公知技术来互连此类单元。
在一些实施例中,核502A-N中的一个或多个能够实现多线程。系统代理510包括协调并操作核502A-N的那些组件。系统代理单元510可包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括用于调整核502A-N和集成图形逻辑508的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个从外部连接的显示器。
核502A-N在架构和/或指令集方面可以是同构或异构的。例如,核502A-N中的一些可以是有序的,而另一些是乱序的。作为另一个示例,核502A-N中的两个或更多能够执行相同的指令集,而其他核仅能够执行该指令集的子集或不同的指令集。
处理器可以是通用处理器,诸如酷睿(CoreTM)i3、i5、i7、2Duo和Quad、至强(XeonTM)、安腾(ItaniumTM)、XScaleTM或StrongARMTM处理器,这些均可以从加利福尼亚圣克拉拉市的英特尔公司获得。或者,处理器可以来自另一个公司,诸如来自ARM控股公司、MIPS等。处理器可以是专用处理器,诸如,例如,网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器,等等。该处理器可以被实现在一个或多个芯片上。处理器500可以是一个或多个衬底的一部分,和/或可以使用诸如例如BiCMOS、CMOS或NMOS等的多个工艺技术中的任何一个技术将该处理器实现在一个或多个衬底上。
图6-8是适于包括处理器500的示例性系统,而图9是可包括核502中的一个或多个的示例性芯片上系统(SoC)。本领域已知的对膝上型设备、桌面设备、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其它电子设备的其它系统设计和配置也是合适的。一般地,能够包含本文中所公开的处理器和/或其它执行逻辑的多个系统或电子设备一般都是合适的。
现在参考图6,所示出的是根据本发明一个实施例的系统600的框图。系统600可以包括耦合至图形存储器控制器中枢(GMCH)620的一个或多个处理器610、615。在图6中以虚线表示附加的处理器615的可选的性质。
每个处理器610、615可以是处理器500的某个版本。然而,应当注意,集成图形逻辑和集成存储器控制单元不太可能出现在处理器610和615中。图6示出了GMCH 620可以耦合至存储器640,该存储器640可以是例如动态随机存取存储器(DRAM)。对于至少一个实施例,DRAM可以与非易失性高速缓存相关联。
GMCH 620可以是芯片组或芯片组的部分。GMCH 620可以与处理器610、615进行通信,并控制处理器610、615与存储器640之间的交互。GMCH 620还可担当处理器610、615和系统600的其他元件之间的加速总线接口。对于至少一个实施例,GMCH 620经由诸如前端总线(FSB)695之类的多点总线与处理器610、615进行通信。
此外,GMCH 620耦合至显示器645(诸如平板显示器)。GMCH 620可包括集成图形加速器。GMCH 620进一步耦合至输入/输出(I/O)控制器中枢(ICH)650,该输入/输出(I/O)控制器中枢(ICH)650可用于将各种外围设备耦合至系统600。在图6的实施例中作为示例示出了外部图形设备660以及另一外围设备670,该外部图形设备660可以是耦合至ICH 650的分立图形设备。
替代地,附加的或不同的处理器也可存在于系统600中。例如,附加的处理器615可以包括与处理器610相同的附加的处理器、与处理器610异构的或不对称的附加的处理器、加速器(例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器。在物理资源610和615之间会存在包括架构、微架构、热和功耗特征等的一系列品质度量方面的各种差异。这些差异可以有效显示为处理器610和615之间的不对称性和异构性。对于至少一个实施例,各种处理器610和615可驻留在同一管芯封装中。
现在参照图7,所示出的是根据本发明实施例的第二系统700的框图。如图7所示,多处理器系统700是点对点互连系统,并包括经由点对点互连750耦合的第一处理器770和第二处理器780。处理器770和780中的每一个可以是处理器500的某个版本(如处理器610、615中的一个或多个)。
虽然仅以两个处理器770、780来示出,但是应当理解本发明的范围不限于此。在其他实施例中,在给定处理器中可存在一个或多个附加处理器。
处理器770和780被示为分别包括集成存储器控制器单元772和782。处理器770还包括作为其总线控制器单元的一部分的点对点(P-P)接口776和778;类似地,第二处理器780包括P-P接口786和788。处理器770、780可以经由使用点对点(P-P)接口电路778、788的P-P接口750来交换信息。如图7所示,IMC 772和782将各处理器耦合到相应的存储器,即存储器732和存储器734,这些存储器可以是本地附连至相应的处理器的主存储器的部分。
处理器770、780可各自经由使用点对点接口电路776、794、786、798的各个P-P接口752、754与芯片组790交换信息。芯片组790还可经由高性能图形接口739与高性能图形电路738交换信息。
共享高速缓存(未示出)可被包括在任一处理器中,或在两个处理器的外部但经由P-P互连与这些处理器连接,从而如果处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在该共享的高速缓存中。
芯片组790可经由接口796耦合到第一总线716。在一个实施例中,第一总线716可以是外围组件互连(PCI)总线或诸如PCI高速总线或另一第三代I/O互连总线之类的总线,但是本发明的范围不限于此。
如图7所示,各种I/O设备714可以连同总线桥718被耦合至第一总线716,总线桥718将第一总线716耦合至第二总线720。在一个实施例中,第二总线720可以是低引脚数(LPC)总线。在一个实施例中,各种设备可以耦合至第二总线720,包括例如,键盘和/或鼠标722、通信设备727以及存储单元728(诸如,可包括指令/代码和数据730的盘驱动器或其他大容量存储设备)。此外,音频I/O 724可以被耦合到第二总线720。注意,其它架构是可能的。例如,系统可实现多分支总线或者其他此类架构,而不是图7中的点对点架构。
现在参照图8,所示出的是根据本发明实施例的第三系统800的框图。图7和8中的相同部件用相同附图标记表示,并已从图8中省去了图7中的某些方面,以避免使图8的其他方面变得模糊。
图8示出处理器870、880可分别包括集成存储器和I/O控制逻辑(“CL”)872和882。对于至少一个实施例,CL 872和882可包括诸如以上结合图5和7所描述的集成存储器控制器单元。此外,CL 872、882还可以包括I/O控制逻辑。图8示出不仅存储器832、834耦合到CL872、882,而且I/O设备814也耦合到控制逻辑872、882。传统I/O设备815耦合到芯片组890。
现在参照图9,所示出的是根据本发明的实施例的SoC 900的框图。图5中相似的部件具有同样的附图标记。另外,虚线框是更先进的SoC的可选特征。在图9中,互连单元902耦合至:应用处理器910,包括一组一个或多个核902A-N以及共享高速缓存单元906;系统代理单元910;总线控制器单元916;集成存储器控制器单元914;一组或一个或多个媒体处理器920,可包括集成图形逻辑908、用于提供静态和/或视频照相功能的图像处理器924、提供硬件音频加速的音频处理器926、提供视频编码/解码加速的视频处理器928、静态随机存取存储器(SRAM)单元930;直接存储器存取(DMA)单元932;以及显示单元940,用于耦合至一个或多个外部显示器。
图10示出处理器,包括中央处理单元(CPU)和图形处理单元(GPU),该处理器可执行根据一个实施例的至少一条指令。在一个实施例中,执行根据至少一个实施例的操作的指令可由CPU来执行。在另一实施例中,指令可以由GPU来执行。在又一实施例中,指令可以由GPU和CPU所执行的操作的组合来执行。例如,在一个实施例中,根据一个实施例的指令可被接收,并被解码,以便在GPU上执行。然而,经解码的指令中的一个或多个操作可由CPU来执行,并且结果被返回到GPU,以便进行指令的最终引退。相反,在一些实施例中,CPU可作为主处理器,而GPU作为协处理器。
在一些实施例中,受益于高度并行化的吞吐量处理器的指令可由GPU来执行,而受益于处理器(这些处理器受益于深度流水线架构)性能的指令可由CPU来执行。例如,图形、科学应用、金融应用以及其他并行工作负荷可受益于GPU的性能并相应地被执行,而更多的序列化应用(例如,操作系统内核或应用代码)可更适于CPU。
在图10中,处理器1000包括,CPU 1005、GPU 1010、图像处理器1015、视频处理器1020、USB控制器1025、UART控制器1030、SPI/SDIO控制器1035、显示设备1040、存储器接口控制器1045、MIPI控制器1050、闪存存储器控制器1055、双数据率(DDR)控制器1060、安全引擎1065、I2S/I2C控制器1070。其他逻辑和电路(包括更多的CPU或GPU以及其他外围设备接口控制器)可被包括在图10的处理器中。
至少一个实施例的一个或多个方面可由存储在表示处理器内的各种逻辑的机器可读介质上的表示性数据来实现,当机器读取该表示性数据时,该表示性数据使得该机器用于制造执行本文所述的技术的逻辑。可将此类表示(即所谓“IP核”)存储在有形的机器可读介质(“磁带”)上,并将其提供给各种顾客或生产设施,以便加载到实际制作该逻辑或处理器的制造机器中。例如,IP核(诸如由ARM控股公司所开发的CortexTM处理器族以及由中国科学院计算机技术研究所(ICT)所开发的龙芯IP核)可被授权或销售给各种客户或受许可方,诸如德州仪器、高通、苹果、或三星,并被实现在由这些客户或受许可方生产的处理器中。
图11示出根据一个实施例的IP核开发的框图。存储设备1130包括仿真软件1120和/或硬件或软件模型1110。在一个实施例中,表示IP核设计的数据可经由存储器1140(例如,硬盘)、有线连接(例如,互联网)1150或无线连接1160而被提供给存储设备1130。由仿真工具和模型所生成的IP核信息可随后被发送到生产设施,可由第三方在该生产设施中制造该IP核以执行根据至少一个实施例的至少一条指令。
在一些实施例中,一条或多条指令可以对应于第一类型或架构(例如,x86),并且可在不同类型或架构(例如,ARM)的处理器上被转换或仿真。根据一个实施例,因此可在任何处理器或处理器类型(包括ARM、x86、MIPS、GPU或其他处理器类型或架构)上执行指令。
图12示出了根据一个实施例的第一类型的指令如何被不同类型的处理器仿真。在图12中,程序1205包含可执行与根据一个实施例的指令相同或基本相同的功能的一些指令。然而,程序1205的指令可以是与处理器1215不同或不兼容的类型和/或格式,这意味着不能够由处理器1215原生地执行程序1205中的类型的指令。然而,借助于仿真逻辑1210,将程序1205的指令转换成能够由处理器1215原生执行的指令。在一个实施例中,仿真逻辑被具体化在硬件中。在另一实施例中,将仿真逻辑具体化在有形的机器可读介质中,该机器可读介质包含用于将程序1205中的该类指令转换为能由处理器1215原生地执行的类型的软件。在其他实施例中,仿真逻辑是固定功能或可编程硬件和存储在有形的机器可读介质上的程序的组合。在一个实施例中,处理器包含仿真逻辑,而在其他实施例中,仿真逻辑在处理器之外,并且由第三方提供。在一个实施例中,通过执行被包括在处理器中或者与该处理器相关联的微代码或固件,处理器能够加载被具体化在包含软件的有形的机器可读介质中的仿真逻辑。
图13是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所示的实施例中,指令转换器是软件指令转换器,但作为替代,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图13示出可以使用x86编译器1304来编译高级语言1302形式的程序以生成可由具有至少一个x86指令集核的处理器1316原生地执行的x86二进制代码1306。具有至少一个x86指令集核的处理器1316表示任何处理器,这些处理器能通过兼容地执行或以其他方式处理以下内容来执行与具有至少一个x86指令集核的英特尔处理器基本相同的功能:1)英特尔x86指令集核的指令集的本质部分,或2)目标为在具有至少一个x86指令集核的英特尔处理器上运行以取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果的应用或其他软件的目标代码版本。x86编译器1304表示可用于生成x86二进制代码1306(例如,目标代码)的编译器,该x86二进制代码1306能够通过附加的链接处理或无需附加的链接处理而在具有至少一个x86指令集核的处理器1316上执行。类似地,图13示出可以使用替代的指令集编译器1308来编译高级语言1302的程序以生成可由不具有至少一个x86指令集核的处理器1314(例如,具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集和/或执行加利福尼州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)原生地执行的替代的指令集二进制代码1310。该指令转换器1312被用于将x86二进制代码1306转换为可由不具有x86指令集核的处理器1314原生执行的代码。该转换后的代码不大可能与替代性指令集二进制代码1310相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作并由来自替代指令集的指令构成。因此,指令转换器1312通过仿真、模拟或任何其它过程来表示允许不具有x86指令集处理器或核的处理器或其它电子设备执行x86二进制代码1306的软件、固件、硬件或其组合。
熔丝验证
本发明的实施例涉及可在集成电路(诸如,例如,处理器、芯片上系统(SoC)、控制器、或上述其他结构)中采用的用于熔丝验证的指令和逻辑。技术可用于验证熔丝阵列或存储器结构中的熔丝值。熔丝值通常被编程到阵列中。在一个实施例中,熔丝值被验证而不向测试环境揭示它们的具体值。
图21示出用于实现基于Simon密码的散列熔丝验证的示例系统2100。Simon块密码可以多种不同方式实现。系统2100的各个部分可以由图1-20所示的要素实现。在系统2100中,基于Simon密码的散列熔丝验证可以由验证模块2102完全地或部分地实现。给定密钥,验证模块2102将基于Simon密码的散列算法应用到块。
此外,验证模块2102可以在系统2100的任何合适的部分中实现。对验证模块2102的放置可以取决于集成操作、方便性、速度或灵活性的期望的水平。例如,验证模块2102A可以独立地驻留在系统2100中并且可以被系统2100的一个或多个合适实体(诸如处理器管芯2104A、2104B)访问。验证模块2102B可以驻留在处理器管芯(诸如处理器管芯2104B)上并且可以访问处理器管芯2104B的一个或多个合适实体(诸如处理器2106)或被该一个或多个合适实体访问。验证模块2102C可以驻留在如处理器2106的处理器上并且可以访问处理器2106的一个或多个合适实体(诸如核2108)和/或被该一个或多个合适实体访问。密码模块2102D可以驻留在诸如核2108的核上并且可以访问核2108的一个或多个合适实体和/或被该一个或多个合适实体访问。例如,验证模块2102可以访问在上文所述的实体中的一个中的存储器并且对其中存储的数据的全部或部分执行验证。
在一个实施例中,熔丝微架构包括Simon密码熔丝散列电路。在一个实施例中,基于Simon的熔丝散列电路包括842个门的基于Simon的熔丝散列电路,其利用与常规的基于SHA的散列电路相比占据小17倍的管芯面积的紧凑的位串行实现方式来实现安全的管芯上HVM熔丝验证。
在一个实施例中,熔丝散列电路采用Merkle-Damgard构造的轻量32/64Simon密码,其中熔丝数据的64b块被用作递归地加密32b初始值(IV)的密钥。在使用即时导出轮次的密钥的32个Fiestel轮次的加密之后,所得的32b密码被累积到运行的32b散列摘要中。在一个实施例中,使用累积电路来累积所得的密码。在一个实施例中,累积电路实现逻辑门。在一个实施例中,累积电路执行XOR操作(例如,XOR门)以将来自散列电路的密文输出累积到运行的散列摘要中。该散列摘要被反馈作为被输入Simon密码的下一IV,然后使用熔丝数据的下一64b块来加密Simon密码作为新密钥。该递归的块链接继续,直到熔丝阵列中的所有熔丝数据字节已经被消耗。在该过程的末尾处剩余的累积的32b摘要被读出作为最终散列值。Simon密码在本领域中是公知的。例如,参见Beaulieu等人的“The SIMON and SPECKFamilies of Lightweight Block Ciphers(SIMON和SPECK族的轻量块密码)”,密码学电子件档案,2013/404报告。
Simon密码散列电路以多种方式实现。不同的实现方式提供不同的面积/性能折衷。两种设计还提供相对于常规的基于SHA的散列方案的显著的面积节省。在一个实施例中,散列电路具有1302个门、1轮次/周期、16位并行、32b/64b的基于Simon密码的熔丝散列电路。这表示与常规的SHA-256设计相比小超过11倍的面积。在另一实施例中,散列电路具有842个门的位串行的实现方式。在这种情形下,散列电路进一步将842个门的总面积减少35%的面积,这代表与常规的SHA-256设计相比总的17倍面积节省。
图14示出HVM熔丝验证微架构的一个实施例。参考图14,熔丝验证微架构包括存储多个熔丝值的熔丝阵列1403。在一个实施例中,熔丝验证微架构是集成电路的一部分,集成电路诸如处理器、控制器、或其他设备(诸如,例如,上文所公开的那些设备)。在一个实施例中,每个熔丝值被存储为8位的数据。
在一个实施例中,熔丝阵列103中的熔丝值中的一个或多个包括加密密钥。在另一实施例中,熔丝值包括配置数据以启用或禁用集成电路中的选项或特征。在又一实施例中,熔丝值包括固件数据值。熔丝值可包括加密密钥、配置数据和固件数据的组合。在一个实施例中,熔丝阵列1403是1K位的熔丝阵列。
验证微架构进一步包括访问熔丝阵列1403的熔丝微控制器1402。在一个实施例中,熔丝微控制器1402使用地址(诸如,例如,字节地址1413)访问熔丝阵列1403。熔丝阵列1403包括熔丝阵列读取控制逻辑,熔丝阵列读取控制逻辑接收字节地址1413并响应于此将熔丝数据1414提供回熔丝微控制器1402。熔丝微控制器1402将来自熔丝阵列1403的熔丝数据提供到熔丝散列电路1401。在一个实施例中,熔丝微控制器1402为熔丝数据提供填补,并且在本文中被称为经填补的熔丝数据1412。在熔丝微控制器1402与熔丝散列电路1401之间的熔丝数据的交换由控制/握手信号1411控制。这些将在下面被更加详细地描述。
响应于经填补的熔丝数据1412,熔丝散列电路1401对上文所述的和下文更详细地描述的数据执行Simon密码以产生散列熔丝摘要1420。在一个实施例中,散列熔丝摘要1420是创建自熔丝散列电路1401的输出的32位值。
更具体地,在一个实施例中,1K位的熔丝阵列数据1403可利用熔丝微控制器1402仲裁的请求以任何字节边界访问。在发生在HVM测试或调试模式期间的熔丝验证模式期间,熔丝阵列1403的全部内容被熔丝散列电路1420散列以生成可通过集成电路上的接口被读出的32b摘要。这可以是JTAG或扫描接口。
在一个实施例中,熔丝散列电路1401对64b数据进行操作。然而,熔丝数据长度为8位。在一个实施例中,熔丝微控制器1402在熔丝数据之前加上8字节(64b)的前置并且将加数附加到包括常数和多个位的熔丝数据;然而,加数(在末尾处)的位数的尺寸可以变化以使总尺寸是64b的倍数。图15示出熔丝微控制器1402采用的依赖熔丝数据尺寸的前缀和填补的一个实施例。
参考图15,在一个实施例中,熔丝微控制器1402通过在熔丝数据1502之前加上前缀1501并且包括某个量的填补1503从熔丝数据产生经填补的熔丝数据1412。在一个实施例中,前缀包括具有跟随有常数(例如,0x00000001)的某个数量的位的块长度字段。块长度是包含熔丝数据中的多个位的32b字段。在一个实施例中,常数不随着熔丝数据尺寸变化。熔丝数据1502跟随前缀1501。
填补1503跟随熔丝数据1502。在一个实施例中,填补的量基于熔丝数据字节的数量。即,填补1503的量取决于熔丝数据尺寸。在一个实施例中,熔丝微控制器1402对熔丝数据1502执行模8运算。如果对熔丝数据1502执行模8运算的结果适配字节,则应用的填补1503如1510所示。如果将模8运算应用到熔丝数据1502的结果是对于八个字节余一个字节,则使用的填补1503如1511所示,其中左边的块表示数据的额外字节。三个、四个、五个、六个、七个额外字节的填补数据分别如填补数据1513-1517所示。
在将前缀1501加到熔丝数据1502之前和将填补1503附加到熔丝数据1502之后,熔丝微控制器1402将经填补的熔丝数据1412发送到熔丝散列电路1401。在下文中更详细地描述两个轻量熔丝散列电路:具有16b数据路径的32b/64b的基于Simon密码的散列电路;以及位串行的32b/64b的基于Simon密码的散列电路。
具有16b数据路径的32b/64b的基于Simon密码的散列电路的一个实施例
在一个实施例中,32b/64b的基于Simon密码的散列电路按8字节(8b)捆包处理数据,以8字节前缀开始,并且以填补字节结束。在一个实施例中,因为熔丝数据可以具有任何字节长度的任何字节边界访问,所以5B-12B的适当的填补(图15)确保Simon密码的总数据尺寸(前缀、熔丝数据和填补)是8B的倍数。除了基于握手协议将8B数据紧缩并提供给散列电路之外,熔丝微控制器还计算基于熔丝数据尺寸的前缀和填补字节。
图16示出熔丝散列电路的一个实施例,诸如图14的熔丝散列电路1401。参考图16,在一个实施例中,熔丝散列电路1600包括32b/64b的Simon密码1601、摘要累积门逻辑(例如,累积电路)1603、摘要寄存器1604和本地控制(控制器)1602。
来自熔丝微控制器的8B数据被加载作为Simon密码1601的起始密钥(密钥输入(key_in)1611)。Simon密码1601在轮次输入(roundin)1612处接收明文并且基于在key_in1611处接收的密钥执行加密以在轮次输出(roundout)1613处产生密文或散列输出。在一个实施例中,roundin输入1612和roundout输出1613是32位值,并且表示密钥的key_in 1611是64位。在一个实施例中,key_in 1611是来自熔丝微控制器的经填补的熔丝数据(例如,使用图15所示的依赖熔丝数据尺寸的前缀和填补的图14的经填补的熔丝数据1402)。
在一个实施例中,Simon密码1601对32个轮次的每轮次执行一个周期以在roundout 1613处产生密文。即,在32个轮次的计算之后,密文是可用的并且从Simon密码1601输出到门逻辑1603,利用密钥生成/轮次逻辑的16个阵列的位片数据路径(图17)和每个周期有1个轮次的计算。因此,在结束32个轮次的计算之后完成累积。
在门逻辑1603处,利用XOR操作将来自Simon密码1601的所得的32b密码输出累积到运行的32b散列摘要中。更具体地,门逻辑1603的另一个输入是摘要寄存器1604的输出,摘要寄存器1604在产生了roundout 1613的上一轮次的输入期间将值输入存储在roundin1612输入中。因此,门逻辑将这些值组合以产生roundin 1612的下一输入。
在一个实施例中,门逻辑1603包括XOR门1641,XOR门1641具有连接以接收roundout 1613处的密文输出和存储在摘要寄存器1604中的值的输入。在一个实施例中,XOR门1641包括多个XOR门,输入值的每个位有一个XOR门。因此,在具有32位的输入值的一个实施例中,存在32个XOR门。XOR门1641的输出是摘要1650。在来自熔丝阵列的所有熔丝数据值已经被输入Simon密码1601之后,摘要1650从基于Simon的熔丝散列电路输出。
XOR门1641的输出被输入AND门1640。AND门1640的另一个输入耦合到来自熔丝微控制器的新块信号1671的反相版。AND门1640的输出表示roundin 1612的轮次输入。AND门1640的输出还输入到摘要寄存器1604中,用于当密文从Simon密码1601输出时后续输入到门逻辑1603。因此,更新的(累积的)散列摘要被用作roundin 1612处的Simon密码1601将操作的下一8B块的熔丝数据的起始32b轮次数据(即,初始值(IV))。注意,来自熔丝微控制器的熔丝数据的初始块的IV可以是任何常数。在一个实施例中,常数是0值以减少门计数。
在一个实施例中,Simon密码1601(具有96个密钥/轮次存储触发器)和摘要累积(具有32个摘要存储触发器)电路使用分开的时钟,即kclk 1621和dclk 1681,分开的时钟从主时钟clk 1660导出。dclk 1681控制将累积的摘要写入其32b的摘要寄存器1604。在一个实施例中,当Simon密码1601是空闲的并且等待来自熔丝微控制器的新的熔丝数据时,kclk 1621和dclk 1681均不切换。在一个实施例中,与使用具有单个自由运行的时钟的基于mux逻辑的启用写入的触发器相比,独立的时钟门控减少面积开销。
图17A是图16的Simon密码1601的示例实施例的示图。在一个实施例中,Simon密码1701包括zLFSR 1722(z模块)以用于提供常数zj,该常数zj用于确定用于密钥生成的轮次密钥。在一个实施例中,zLFSR 1722以本领域公知的方式提供zj作为密钥调度的一部分。在另一实施例中,zLFSR 1722包括面积高效的线性反馈移位寄存器电路以生成常数zj
在一个实施例中,Simon密码1601完全地或部分地实现三十二位字和六十四位密钥Simon块密码。然而,任何合适尺寸的字和密钥可与对Simon密码1601的要素的合适调节结合使用。在一个实施例中,Simon密码1601为块密码实现完全并行的解决方案,其中三十二位输入roundin 1612和六十四位轮次密钥1611内的所有位被并行地变换。可以将迭代i的轮次字存储在数据存储xi 1708(包括最低十六位)和数据存储xi+1 1706(包括位十六到三十一)中。在一个实施例中,数据存储1706和1708实现图17B的轮次字xi和xi+1组件,其示出块密码的Feistal映射。
可以将迭代i的轮次密钥存储在密钥存储ki 1710(包括最低十六位)、密钥存储ki+1 1712(包括位十六到三十一)、密钥存储ki+2 1714(包括位三十二到四十七)以及密钥存储ki+3 1716(包括位十六到三十二)。在一个实施例中,密钥存储1710、1712、1714和1716实现图17C所示的轮次密钥ki、ki+1、ki+2和ki+3
在一个实施例中,图17B所示的Feistel图的操作由位片模块1724实现,位片模块1724根据图17B的Feistel图对数据段执行变换操作。位片模块1724可以提供给密钥存储和数据存储的每个不同的位位置。在图17A的示例中,这包括十六个位片模块1724,该十六个位片模块1724可以被组合到位片模块区块1718中。在一个实施例中,每个位片模块1724计算图17B的Feistel图的迭代的两位(xi和xi+1),实现Simon密码1601的变换。具体地,位片模块1724将xi+1(1706)循环到左边一位、将xi+1(1708)循环到左边八位并且对两个结果执行按位AND操作。然后,位片模块1724将XOR应用到该结果和xi(1708)。然后,位片模块1724将XOR应用到该结果和将xi+1(1706)循环到左边两位的结果。然后,位片模块1724将XOR应用到该结果和轮次密钥(1710)。
在位片模块1724的更详细的示图中示出用于执行这些操作的示例逻辑。因此,每个位片模块1724接受数据存储xi 1708中的并行的一个、数据存储xi+1 1706中的并行的一个和密钥存储ki 1710中的并行的一个作为输入。图17B所示的逻辑操作表示单个轮次的操作。在所有三十二个轮次的密码操作完成后,使用输入密钥1611变换roundin数据1612,并且位片模块区块1718的输出构成Simon密码1601的输出。
在一个实施例中,图17C所示的四密钥扩展的操作由密钥位片模块区块1720实现。在一个实施例中,密钥位片模块区块1720包括逻辑的各个元件,诸如对应于Simon密码1601执行的多个并行计算的密钥位片模块1726。这转而可以对应于密钥存储和数据存储的每个不同位位置。在图17A的示例中,这可以包括十六个密钥位片模块1726。在一个实施例中,每个密钥位片模块1726计算轮次密钥ki+3(1716),其可以被传播以用于后续的轮次密钥部分(1710、1712和1714)。具体地,密钥位片模块1726将XOR应用到被向右循环三位的ki+3(1716)与ki+1(1712),产生第一结果。密钥位片模块1726将XOR应用到第一结果与ki(1710),产生第二结果。密钥位片模块1726将XOR应用到向右循环一位的第一结果与第二结果,产生第三结果。密钥位片模块1726将XOR应用到第三结果与zLFSR 1722提供的密钥调度常数。结果被馈送到ki+3(1716)。在四密钥扩展的操作期间,当前轮次密钥ki可供例如位片模块1724使用。在密钥位片模块1726的更详细的示图中示出用于执行这些操作的示例逻辑。因此,每个密钥位片模块1726接受密钥存储ki 1710中的并行的一个、密钥存储ki+1 1712中的并行的一个和密钥存储ki+3 1716中的并行的一个作为输入。最低有效位的位片模块保持这些输入和来自zLFSR 1722的常数。每个密钥位片模块1726将确定输出到密钥存储ki+3 1716中的并行的一个。
Simon密码1601可以包括任何合适数量的元件以完成变换的并行操作。例如,为数据和密钥存储加载寄存器可以由复用器门控,复用器使用加载信号来使填充这些寄存器同步。在周期的末尾,roundout 1613被写入数据寄存器以用于下一轮次计算。轮次密钥的输出类似地由每个密钥位片模块1726消耗来自zLFSR 1722的一位轮次常数产生。
在一个实施例中,给定Simon密码1601的特定字和密钥尺寸,zLFSR 1722输出单个位常数流"1111101000100101011000011100110"。如果Simon密码1601包括其他字或密钥尺寸,则可以根据Simon算法选择不同的合适的常数。为了输出这样的单个位常数流,可以使用具有等于该常数流的宽度的多个位的移位寄存器。例如,给定三十一个不同常数,zLFSR1722可以包括具有三十一位的移位寄存器。然而,在一个实施例中,zLFSR 1722可以被实现为逻辑以减少触发器、闩锁、或存储常数流所需的其他存储器位置的数量。
zLFSR 1722的展开图示出对图17A中的触发器的该减少的利用。代替实现用于流"1111101000100101011000011100110"的移位寄存器的三十一个顺序的触发器,可以使用五个触发器。Simon密码的其他实施例可以使用不同模式或长度的常数位流。因此,实现LFSR所要求的触发器的配置和/或数量可以相应地变化。所得的电路尺寸将仍然比具有常数直接在其内部的长移位寄存器的电路尺寸小得多。最低的触发器"0"的输出可以是zLFSR1722的输出。此外,触发器"0"的输出可以被路由到触发器"1"。此外,可以将XOR应用到触发器"0"的输出与触发器"4"的输出。该XOR的结果可以被发送到触发器"0"的输入。可以将XOR应用到触发器"1"的输出与触发器"4"的输出,并且该结果可以被路由到触发器"2"的输入。触发器"2"的输出可以被路由到触发器"3",并且触发器"3"的输出可以被路由到触发器"4"。
往回参考图16,本地控制1602执行将数据加载到Simon密码1601中以及在本地控制1602本身与熔丝微控制器(例如,图14的熔丝微控制器1402)之间的握手。在一个实施例中,本地控制1602使用新块信号1671、有效信号1672和req(请求)信号1673来与熔丝微控制器对接。
新块信号1671被断言以指示key_in输入1611可从熔丝微控制器获得;这是新的经填补的熔丝阵列块(任何尺寸)的前8个字节,并且这将散列摘要重置为预确定的起始常数。当这被断言时,AND门1640将预确定的数据值输入到roundin 1612中。在一个实施例中,roundin 1612的所有32位为零。然而,初始输入以全部为零开始不是必须的;任何值可以用作起始值。此外,每当新块信号1671被断言时,有效信号1672也被断言。
在一个实施例中,在32轮次之后,本地控制1602将req信号1671断言到熔丝微控制器以指示其已经完成数据并且其可以取出key_in输入1611处的另外8个字节的密钥数据。作为响应,熔丝微控制器发送另外8个字节的数据,或者如果数据已经被熔丝微控制器发送,则熔丝微控制器发出有效信号1672以对本地控制1602指示数据在key_in输入1611上是可用的。本地控制1602还断言时钟信号kclk 1621和被称为kload信号1622的加载信号。时钟信号kclk 1621将时钟信号提供给Simon密码1611中的时钟逻辑的clk 1614。在一个实施例中,本文中被称为kload信号1622的加载信号对Simon密码1601中的密钥生成逻辑发出指示,密钥存储区域中的每一个的密钥数据应当被从key_in 1611加载,而不是使用基于Simon密码1601已经接收的先前的熔丝数据在上一组轮次中已经生成的中间密钥值。在这种情形下,kload信号1622允许输入到key_in 1611的密钥数据被并行地加载到密钥生成逻辑中的一组密钥存储块中。
图18示出图17的16b的熔丝散列电路的一个实施例的时序图。图18中的时序图示出利用控制信号的电路的操作。在一个实施例中,每8B数据伴随来自熔丝微控制器的经断言的有效信号。对新块信号1671的断言将散列摘要/轮次数据的状态重置为0并且强制加载熔丝数据的新块的前8B,其中kload信号1622控制Simon密码1601中的合适的复用(muxing)逻辑。本地控制开销通过使用Simon密码1601的z-LFSR 1722中的现有值来跟踪轮次计算状态而被减少。在32轮次的末尾处,在产生8B的熔丝数据的密码之后,通过断言req信号1673向微控制器发送对新数据的请求。此后,仅当输入有效信号1672为高时加载数据,在加载数据之后req信号1673被本地控制1602解除断言。对新块信号1671和有效信号1672解除断言由熔丝微控制器1402控制。在数据(包括填补)的最后8B块的处理完成之后读出散列摘要。
参考图18,如果存在120字节的熔丝数据被基于Simon的熔丝散列电路转换为32位散列。当clk 1660出现时,当新块的数据被输入到Simon密码1601中时,新块信号1671被断言。此时,新块信号1671还使得roundin 1612被置位为零。在新块信号1671被断言的同时,有效1672被断言以使得新的8字节熔丝数据被呈现在key_in 1611处。门逻辑/累积电路1603使用多达最后8字节熔丝数据的累积摘要值并且将其与当前密文(roundout)组合以产生当前累积摘要。同时,来自熔丝微控制器1402的64位数据(1611)被加载到Simon密码中。摘要寄存器在dclk 1681上更新。当新块信号1671被断言时,初始值存储在摘要寄存器(1604)中;之后,在32的Simon密码利用熔丝数据的每8个字节循环之后,累积的散列值被断言。在一个实施例中,这在每32个周期被断言一次。对于熔丝数据的每8个字节,时钟信号kclk 1621被断言32次。在一个实施例中,密码电路为32个轮次消耗32个周期(1个周期/轮次),然后kclk 1621具有32个脉冲。
在一个实施例中,当req信号1673被断言而有效信号1672还未被断言(因为熔丝微控制器1402正在获得数据)时,kclk 1621是空闲的。
在32个轮次(32个周期)的末尾,req信号1673被本地控制1602断言为高。在req信号1673和有效信号1672已经被断言之后,req信号1673在下一周期期间解除断言。当req信号1673和有效信号1672均为高时,新数据被加载到Simon密码1601中。类似地,如果没有新数据,则有效信号1672在少于32个周期中解除断言。req信号1673解除断言以向熔丝微控制器1602指示当Simon密码1601处理当前数据时其不想要更多数据。这使得熔丝微控制器1602对有效信号1672解除断言。
该过程每32个周期或轮次重复一次,直到所有熔丝数据已经被输入到Simon密码1601中并且已经被处理,在这之后,摘要被读出。
在一个实施例中,zLFSR电路经历31个状态以控制本地控制1602的操作,因此在这种情形下,zLFSR充当计数器。在一个实施例中,本地电路1602具有额外的触发器以实现计数,直到32以及Simon密码块内部的现有的LFSR。替代实施例,如果应用到Simon密码电路的数据生成与Simon电路处理数据的周期的数量不同,则有效/req握手不是必要的。例如,如果时序使得数据在每32个周期可以是可用的,则将不要求握手,并且要被用作密钥的下一组数据将在合适时间是可用的。
在一个实施例中,使用具有上述Simon密码的散列电路将1K位的熔丝数据与相关联的前缀/填补散列的等待时间为576个时钟周期(8B有32个时钟周期)。
(ii)位串行的32b/64b的基于Simon密码的散列电路
图19示出位串行熔丝散列电路的一个实施例。参考图19,在一个实施例中,Simon密码1900每个周期应用单个位片计算以确定其输出(roundout)。在另一实施例中,Simon密码1900每个周期应用单个密钥位生成。Simon密码1900被减少到轮次逻辑和密钥生成逻辑具有一个位片而不是十六个位片,并且所有密钥、轮次和摘要寄存器按16b的移位寄存器操作以启用使用单个位片数据路径的按位计算。
与图17A中描述的并行布置相比,Simon密码1900的这种位串行操作可以具有少得多的吞吐量。然而,Simon密码1900可以被实现在比这种并行实现更少组合的区域上。
尽管图17A的熔丝散列电路并行地加载数据位,但是图19的位串行实施例可以用于每次处理一位数据。因此,用于加载散列电路的摘要和握手从已经为图17A中的散列电路完成的那些摘要和握手修改而得到。在这种情形下,来自熔丝阵列的数据作为字节出现,并且8位被并行地加载到密钥存储寄存器中的一个中。这被示为位位置1990。还注意,尽管八位提供自熔丝控制器,但是熔丝数据仍然如图15所示被填补。
在数据被并行地输入之后,该电路的其他部分串行地处理位。在一个实施例中,因为位被串行地处理,所以需要十六个周期来完成一个轮次。
在一个实施例中,Simon密码1900采用十六位字尺寸的数据路径,类似于图17A中使用的字尺寸。在Simon密码1900的一个实施例中,位片模块1908的输出被写入数据存储xi+1 1906的顶部。此外,密钥位片模块1920的输出可以被写入密钥存储ki+3 1912的顶部。在每个周期期间,可以在给定的存储1906、1910、1912、1914、1916和1918内将数据从高传递到低。此外,当数据要退出给定的存储时,数据可能传递到连续的存储(即,i+3到i+2、到i+1、到i)。
在一个实施例中,Simon密码1900可以包括计数器1901以确定给定字的哪个位置正在被计算。计数器的尺寸可以取决于Simon密码模块中使用的字的尺寸。在图19的示例中,计数器1901包括四个位以跟踪Simon密码1900中的存储的十六个不同位置。除了z-LFSR之外,本地控制(电路)1902也使用该计数值以不仅跟踪32个轮次的完成而且跟踪对8B熔丝数据捆包的基于字节的加载。在一个实施例中,Simon密码1900每十六个时钟周期发布一轮次的经变换的数据。
位片模块1908可以接受从数据存储xi+1 1906、数据存储xi 1910以及密钥存储ki1918获得的以多个单独位形式的输入。位片模块1908可以输出多个单独位,该多个单独位可以是Simon密码模块1900的输出。密钥位片1920可以接受从密钥存储ki 1918、密钥存储ki+1 1916、密钥存储ki+3 1912的底部以及z-LFSR 1926获得的以多个单独位形式的输入。z-LFSR 1926可以以任何合适的方式来实现。可以将密钥位片模块1920的输出串行化并应用到ki+3。输入1912可以被串行化,因为输入密钥1990可以被串行化。
随着经处理的位被写入到给定存储的最高有效位位置中,取决于那些位置处的未经处理的位的任何字尺寸的循环操作(诸如在密钥扩展或轮次计算内使用的那些)可能必须适应这些未经处理的位。位片模块1908和密钥位片模块1920可以使用位计数器值以在存储位置之间复用以考虑未经处理的位。
在一个实施例中,在位片模块1908的展开图中,作为实现图17B的Feistel图的一部分的移位操作的输出可以被保持。如果已经执行了不足的位处理使得有意义的数据将驻留在引用位置中,则这些可以被保持。在另一实施例中,作为图17C所示的实现密钥扩展的一部分的密钥位片模块1920的移位操作的输出可以被类似地保持。如果已经执行了不足的位处理以提供有意义的数据,则这些可以被保持。
在一个实施例中,zLFSR 1926的输出的操作可以被保持以匹配Simon密码1900中的其他地方的串行操作。例如,zLFSR 1926的时钟可以被计数器1901的计数门控,使得从zLFSR 1926输出的常数保持相同,直到全部一轮次的处理被完成。
在一个实施例中,摘要累积也仅使用一对XOR门用于按位操作。即,因为位串行熔丝散列电路串行地操作,所以仅需要两个XOR门并且每次生成两位的摘要。这些位被定时穿过到一对寄存器1981和1982,寄存器1981和1982由dclk 1960定时,并且摘要从寄存器1981和1982输出。
对熔丝微控制器将基于字节的熔丝数据紧缩为8B捆包的要求也通过按字节水平粒度将数据馈送到位串行熔丝散列电路被简化。通过将所有熔丝数据字节仅加载到最高有效字节中并且然后串行地移位到64b存储内的合适位置中,对Simon密码电路中的大部分密钥存储寄存器移除数据加载mux逻辑。这要求熔丝微控制器按照最低有效到最高有效字节顺序馈送数据。
累积电路(用于例如实现逻辑门)和本地控制1902实现与图17A中的散列电路相同的总体功能但是利用位串行操作。添加完成信号1921以指示摘要值可以被从散列电路读出(即,已经被散列电路处理的所有熔丝值)。在一个实施例中,在完成信号被断言后,可以在周期中读取摘要。
由于密钥和轮次存储的不同位宽度,因此它们的按位加载要求不同数量的时钟周期。为了适应这个,在位串行Simon密码块内使用来自本地控制1902的两个本地时钟——rclk仅被轮次逻辑中的寄存器使用,而kclk被所有其他寄存器使用。此外,出于相同的理由,两个加载信号是必要的,rload和kload信号。
本地控制1902的另一个区别是,新块信号1971用于指示新数据是可用的,这在图16的基于Simon的熔丝电路中仅在一个周期被断言。在位串行熔丝散列电路的该实施例中,新块信号1971仍然仅对一个16个时钟周期是有效的,但是被内部地转换为新信号wrconst信号1992,该信号然后被断言16个时钟周期。替代地,在熔丝微控制器1402保证新块信号1971将被保持16个周期的实施例中,本地控制1902可以不需要生成导出的信号wrconst1992并且可以直接地使用反相的新块信号与累积逻辑中的AND门。
除了在32个轮次的末尾断言req信号1973之外,本地控制1902还在8B熔丝数据加载阶段期间对每个字节的加载/串行移位之后断言req信号1973。
本地控制1902还生成用于摘要移位寄存器1971和1972的dclk 1960——产生总共3个从主时钟导出的时钟。
新块信号1971可以仅在单个周期是有效的,伴随新块的数据的第一字节要被散列,但是对于将常数按位移入轮次/摘要寄存器,本地控制将wrconst信号1992断言16个周期。全部为0的起始常数使得该逻辑能仅要求一对AND门(如图19所示)。这与进入Simon密钥寄存器的数据加载操作是并发的。此后,按位加载到累积的摘要/轮次逻辑中与最后一轮计算是并发的——每32个轮次节省16个周期。
图20示出用于图19的位串行熔丝散列电路的时序图的一个实施例。在一个实施例中,与熔丝微控制器的握手协议保持与图17A的散列电路中的相同,除了当在累积来自最后8B数据的摘要的末尾处本地控制1902断言req信号1973时完成信号1921被熔丝微控制器断言。
本地控制1902断言req信号1973多次来为Simon密码1900加载全部8B,其中最少要56个周期来加载全部8B。在一个实施例中,32个轮次上的密码计算要求512个周期(16个周期/轮次)。
在数据加载阶段期间,在每次req信号1973断言后,熔丝微控制器1402发送数据的新字节并且断言有效信号1972。这然后使得数据在下一时钟上被加载到密钥中(其中kload信号1922B被断言)。req信号1973然后解除断言,并且作为响应,熔丝微控制器1402对有效信号1972解除断言。仅在该8b的数据在密钥寄存器内被串行地移位之后,req信号1973将被重新断言。因此,req信号1973将在仅8个周期之后重新断言以请求下一字节。一旦所有8个字节被加载到密钥寄存器中,req信号1973不被重新断言,直到32个轮次的Simon密码1901(在该实施例中为512个周期)在请求下一熔丝数据字节之前已经完成。.
本地控制1902使用Simon密码1901内的四位计数器1901来跟踪每个轮次的完成以及在加载之后数据的每一字节何时被移入。
在该Simon密码实施例中,用于散列1K位的熔丝数据以及相关联的前缀/填补的最小等待时间为10225个时钟周期(对每个8B有568个时钟周期,并且在末尾处有一个额外的周期)。
对于位串行操作,可以使用每个周期有多个位的替代实施例。这些仍然要求每个轮次有多个周期,其中比上述并行实现要求更少的位片,而比上述完全串行版本要求更多的位片。对于位串行版本,在一个实施例中,用于密钥加载的等待时间通过将该操作与上一四个轮次(对于64b的密钥尺寸)重叠被隐藏,使得连续熔丝数据之间的最短的等待时间为512个周期。对于位串行版本,在一个实施例中,更小或更大的熔丝数据可以被并行地加载,但是位串行操作仍然以类似的方法发生。对于位串行版本,实施例可以基于加载多路复用器相对于密钥存储被置于何处而使用不同的熔丝数据加载顺序(在每8B内)。
注意,散列电路的其他实施例使用具有不同的文本和/或密钥尺寸的Simon密码。
所公开的散列电路在HVM测试或调试消费者返回的管芯上的失败期间实现对熔丝编程的验证,同时利用超紧凑的散列电路保护芯片上的基于熔丝的数据。
本公开陈述了多个示例实施例,包括但不限于以下示例实施例。
示例1是处理器,包括:存储器,该存储器用于存储多个值;以及散列电路,包括:Simon密码电路,能操作以将Simon密码应用到多个值中的每一个并且为多个值中的每一个生成输出;电路,耦合到Simon密码电路,用于将来自Simon密码电路的多个值中的每个值的输出组合为散列摘要,该散列摘要指示存储器中的值是否是有效的。
示例2是示例1的处理器,任选地包括:存储器包括熔丝阵列,该熔丝阵列具有利用熔丝值编程的多个半导体熔丝,其中散列电路能操作以接收来自熔丝阵列的熔丝值并且通过将Simon密码应用到熔丝值来生成一个或多个散列。
示例3是示例2的处理器,任选地包括:电路能操作以通过将Simon密码对所述多个值中的一个的前一次应用的输入与源自Simon密码的前一次应用的输出组合来生成散列摘要。
示例4是示例3的处理器,任选地包括:控制器,该控制器耦合到散列电路和熔丝阵列以使得散列电路一次接收熔丝阵列中的一个熔丝值并且将Simon密码单独地应用到熔丝值中的每一个,直到Simon密码已经被应用到来自熔丝阵列的所有熔丝值,其中电路能操作以当Simon密码的全部输出基于Simon密码的先前输出而生成时组合Simon密码的每个输出。
示例5是示例2的处理器,任选地包括:电路实现XOR门,该XOR门具有:第一XOR门输入,耦合到Simon密码的轮次逻辑输出;第二XOR门输入,耦合到Simon密码的前一个轮次逻辑输入;以及XOR门输出,耦合到Simon密码的轮次逻辑输入。
示例6是示例2的处理器,任选地包括:熔丝微控制器,耦合到熔丝阵列以将熔丝值提供给散列电路,其中散列电路包括本地控制器,该本地控制器耦合到熔丝微控制器以仅在熔丝微控制器提供的前一散列值已经被加载到散列电路中之后请求熔丝微控制器发送来自熔丝阵列的下一熔丝值。
示例7是示例1的处理器,任选地包括:Simon密码包括用于密钥生成和轮次逻辑的位片数据路径。
示例8是示例1的处理器,任选地包括:散列电路是位串行的并且包括按位串行方式操作的Simon密码。
示例9是示例1的处理器,任选地包括:微控制器,经由下列各项耦合到散列电路:第一信号接口,用于向散列电路指示新数据可用于散列电路进行散列;第二信号接口,由散列电路使用以向微控制器指示散列电路已经完成了将新数据应用到Simon密码;以及第三信号接口,用于指示当新数据块被启动时散列电路中使用的散列会被重新初始化。
示例10是示例9的处理器,任选地包括:本地控制器,用于协调将数据加载到Simon密码中,其中本地控制器能操作以连续地加载并且如果数据加载尺寸小于密钥尺寸则内部地将Simon密码的密钥存储内的部分数据移位。
示例11是示例10的处理器,任选地包括:本地控制器使用Simon密码内部的线性反馈移位寄存器来跟踪Simon密码中的操作以确定何时请求更多输入数据。
示例12是示例9的处理器,任选地包括:散列电路能操作以接收输入数据,该输入数据具有加在每个经编程的值之前的前缀和被填补以使得输入数据是散列电路中使用的Simon密码密钥尺寸的倍数的加数。
示例13是用于熔丝值验证的方法,包括:接收来自熔丝阵列的熔丝值,该熔丝阵列具有利用熔丝值编程的多个半导体熔丝;通过使用接收熔丝值作为密钥的散列电路应用Simon密码来生成一个或多个散列值;以及基于通过将Simon密码单独地应用到熔丝值中的每一个而生成的输出来生成指示熔丝阵列中的熔丝值是否是有效的值,包括将通过将Simon密码应用到熔丝值中的每一个生成的输出组合为摘要。
示例14是示例13的方法,任选地包括:通过使用散列电路将Simon密码应用到熔丝值来生成一个或多个散列值的步骤包括:将Simon密码应用到包括一个熔丝值的第一密钥输入和第二明文输入,该第二明文输入通过将Simon密码的前一应用的输入与源自Simon密码的前一应用的输出组合而生成。
示例15是示例13的方法,任选地包括:生成一个或多个控制信号以获得来自熔丝阵列的要被一次发送一个到散列电路的熔丝值,以及将Simon密码应用到熔丝值中的每一个与第二明文输入,直到Simon密码已经被应用到来自熔丝阵列的所有熔丝值。
示例16是系统,包括:互连;动态随机存取存储器(DRAM),耦合到互连;以及,处理器,耦合到互连,其中处理器包括:熔丝阵列,该熔丝阵列包括具有熔丝值的多个半导体熔丝,以及散列电路,耦合到熔丝阵列,该散列电路包括:Simon密码电路,能操作以接收来自熔丝阵列的熔丝值并且通过将Simon密码应用到熔丝值中的每一个来生成一个或多个散列,以及电路,耦合到Simon密码电路以将来自Simon密码电路的多个值中的每个值的输出组合为散列摘要,该散列摘要指示熔丝阵列中的熔丝值是否是有效的。
示例17是示例16的系统,任选地包括:电路能操作以通过将Simon密码对所述多个值中的一个的前一次应用的输入与源自Simon密码的前一次应用的输出组合来生成散列摘要。
示例18是示例17的系统,任选地包括:控制器,该控制器耦合到散列电路和熔丝阵列以使得散列电路一次接收熔丝阵列中的一个熔丝值并且将Simon密码单独地应用到熔丝值中的每一个,直到Simon密码已经被应用到来自熔丝阵列的所有熔丝值,电路用于当Simon密码的全部输出基于Simon密码的先前输出而生成时组合Simon密码的每个输出。
示例19是机器可读介质,具有存储于其上的指令,该指令如果被机器执行,使得机器执行用于熔丝值验证的方法,其中该方法包括:接收来自熔丝阵列的熔丝值,该熔丝阵列具有利用熔丝值编程的多个半导体熔丝;通过使用接收熔丝值作为密钥的散列电路应用Simon密码来生成一个或多个散列值;以及基于通过将Simon密码单独地应用到熔丝值中的每一个而生成的输出来生成指示熔丝阵列中的熔丝值是否是有效的值,包括将通过将Simon密码应用到熔丝值中的每一个生成的输出组合为摘要。
示例20是示例19的机器可读介质,任选地包括:方法进一步包括:通过使用散列电路将Simon密码应用到熔丝值来生成一个或多个散列值的步骤包括:将Simon密码应用到包括一个熔丝值的第一密钥输入和第二明文输入,该第二明文输入通过将Simon密码的前一应用的输入与源自Simon密码的前一应用的输出组合而生成。
示例21是处理器或其他装置,能操作以执行示例13至15中的任一项的方法。
示例22是处理器或其他设备,其包括用于执行示例13至15中的任一项所述的方法的装置。
示例23是基本上如本文中所述的处理器或其他装置。
示例24是能操作以执行基本上如本文中所述的任意方法的处理器或其他装置。
示例25是能操作以执行基本上如本文中所述的任意指令/操作的处理器或其他装置。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码应用于输入指令以执行本文描述的功能并产生输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令来实现,指令表示处理器中的各种逻辑,指令在被机器读取时使得该机器制作用于执行本文所述的技术的逻辑。可将被称为“IP核”的此类表示存储在有形的机器可读介质上,并将其提供给各种客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
此类机器可读存储介质可以包括但不限于通过机器或设备制造或形成的制品的非瞬态的有形安排,其包括存储介质,诸如:硬盘;任何其他类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)以及磁光盘;半导体器件,例如只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);磁卡或光卡;或适于存储电子指令的任何其他类型的介质。
因此,本发明的各实施例还包括非瞬态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。这些实施例也被称为程序产品。
在一些情况下,指令转换器可用来将指令从源指令集转换至目标指令集。例如,指令转换器可以变换(例如使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其它方式将指令转换成将由核来处理的一个或多个其它指令。指令转换器可以用软件、硬件、固件、或其组合实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
因此,公开了用于执行根据至少一个实施例的一条或多条指令的技术。虽然已经描述并在附图中示出了某些示例性实施例,但是应当理解,此类实施例仅仅是对本宽泛发明的说明而非限制,并且本发明不限于所示出和所描述的特定结构和配置,因为本领域技术人员在研究了本公开文本之后可以料知到各种其他修改。在诸如本申请这样的、发展迅速且进一步的进展难以预见的技术领域中,所公开的多个实施例在通过启用技术进步所促成的配置和细节上是容易修改的,同时不背离本公开的原理和所附权利要求书的范围。

Claims (20)

1.一种处理器,包括:
存储器,所述存储器用于存储多个值;以及
散列电路,包括:
Simon密码电路,能操作以将Simon密码应用到所述多个值中的每一个并且为所述多个值中的每一个生成输出,
电路,耦合到所述Simon密码电路,用于将来自所述Simon密码电路的所述多个值中的每个值的输出组合为散列摘要,所述散列摘要指示所述存储器中的值是否是有效的。
2.如权利要求1所述的处理器,其特征在于,所述存储器包括熔丝阵列,所述熔丝阵列具有利用熔丝值编程的多个半导体熔丝,其中所述散列电路能操作以接收来自所述熔丝阵列的熔丝值并且通过将所述Simon密码应用到所述熔丝值来生成一个或多个散列。
3.如权利要求2所述的处理器,其特征在于,所述电路能操作以通过将所述Simon密码对所述多个值中的一个的前一次应用的输入与源自所述Simon密码的所述前一次应用的输出组合来生成所述散列摘要。
4.如权利要求3所述的处理器,其特征在于,进一步包括控制器,所述控制器耦合到所述散列电路和所述熔丝阵列以使得所述散列电路一次接收所述熔丝阵列中的一个熔丝值并且将所述Simon密码单独地应用到所述熔丝值中的每一个,直到所述Simon密码已经被应用到来自所述熔丝阵列的所有熔丝值,所述电路用于当所述Simon密码的全部输出基于所述Simon密码的先前输出而生成时组合所述Simon密码的每个输出。
5.如权利要求2所述的处理器,其特征在于,所述电路实现XOR门,所述XOR门具有:
第一XOR门输入,耦合到所述Simon密码的轮次逻辑输出;
第二XOR门输入,耦合到所述Simon密码的前一个轮次逻辑输入;以及
XOR门输出,耦合到所述Simon密码的轮次逻辑输入。
6.如权利要求2所述的处理器,其特征在于,进一步包括:
熔丝微控制器,耦合到所述熔丝阵列以将所述熔丝值提供给所述散列电路;
其中所述散列电路包括本地控制器,所述本地控制器耦合到所述熔丝微控制器以仅在所述熔丝微控制器提供的前一散列值已经被加载到所述散列电路中之后请求所述熔丝微控制器发送来自所述熔丝阵列的下一熔丝值。
7.如权利要求1所述的处理器,其特征在于,所述Simon密码包括用于密钥生成和轮次逻辑的位片数据路径。
8.如权利要求1所述的处理器,其特征在于,所述散列电路是位串行的并且包括按位串行方式操作的Simon密码。
9.如权利要求1所述的处理器,其特征在于,进一步包括微控制器,所述微控制器经由下列各项耦合到所述散列电路:
第一信号接口,用于向所述散列电路指示新数据可用于所述散列电路进行散列;
第二信号接口,由所述散列电路使用以向所述微控制器指示所述散列电路已经完成了将所述新数据应用到Simon密码;以及
第三信号接口,用于指示当新数据块被启动时所述散列电路中使用的散列会被重新初始化。
10.如权利要求9所述的处理器,其特征在于,进一步包括本地控制器,所述本地控制器用于协调将数据加载到所述Simon密码中,其中所述本地控制器能操作以连续地加载并且如果数据加载尺寸小于密钥尺寸则内部地将所述Simon密码的密钥存储内的部分数据移位。
11.如权利要求10所述的处理器,其特征在于,所述本地控制器使用所述Simon密码内部的线性反馈移位寄存器来跟踪所述Simon密码中的操作以确定何时请求更多输入数据。
12.如权利要求9所述的处理器,其特征在于,所述散列电路能操作以接收输入数据,所述输入数据具有加在每个经编程的值之前的前缀和被填补以使得所述输入数据是所述散列电路中使用的所述Simon密码密钥尺寸的倍数的加数。
13.一种用于熔丝值验证的方法,所述方法包括:
接收来自熔丝阵列的熔丝值,所述熔丝阵列具有利用熔丝值编程的多个半导体熔丝;
通过使用接收所述熔丝值作为密钥的散列电路应用Simon密码来生成一个或多个散列值;以及
基于通过将所述Simon密码单独地应用到所述熔丝值中的每一个而生成的输出来生成指示所述熔丝阵列中的所述熔丝值是否是有效的值,包括将通过将所述Simon密码应用到所述熔丝值中的每一个生成的输出组合为摘要。
14.如权利要求13所述的方法,其特征在于,通过使用散列电路将Simon密码应用到所述熔丝值来生成一个或多个散列值的步骤包括:将所述Simon密码应用到包括一个熔丝值的第一密钥输入和第二明文输入,所述第二明文输入通过将所述Simon密码的前一应用的输入与源自所述Simon密码的所述前一应用的输出组合而生成。
15.如权利要求13所述的方法,其特征在于,进一步包括:生成一个或多个控制信号以获得来自所述熔丝阵列的要被一次发送一个到所述散列电路的熔丝值,以及将所述Simon密码应用到所述熔丝值中的每一个与所述第二明文输入,直到所述Simon密码已经被应用到来自所述熔丝阵列的所有熔丝值。
16.一种系统,包括:
互连;
动态随机存取存储器(DRAM),耦合到所述互连;以及
处理器,耦合所述互连,所述处理器包括:
熔丝阵列,所述熔丝阵列包括具有熔丝值的多个半导体熔丝,
散列电路,耦合到所述熔丝阵列,所述散列电路包括:
Simon密码电路,能操作以接收来自所述熔丝阵列的熔丝值并且通过将Simon密码应用到所述熔丝值中的每一个来生成一个或多个散列;以及
电路,耦合到所述Simon密码电路以将来自所述Simon密码电路的所述多个值中的每个值的输出组合为散列摘要,所述散列摘要指示所述熔丝阵列中的所述熔丝值是否是有效的。
17.如权利要求16所述的系统,其特征在于,所述电路能操作以通过将所述Simon密码对所述多个值中的一个的前一次应用的输入与源自所述Simon密码的所述前一次应用的输出组合来生成所述散列摘要。
18.如权利要求17所述的系统,其特征在于,进一步包括控制器,所述控制器耦合到所述散列电路和所述熔丝阵列以使得所述散列电路一次接收所述熔丝阵列中的一个熔丝值并且将所述Simon密码单独地应用到所述熔丝值中的每一个,直到所述Simon密码已经被应用到来自所述熔丝阵列的所有熔丝值,所述电路用于当所述Simon密码的全部输出基于所述Simon密码的先前输出而生成时组合所述Simon密码的每个输出。
19.一种机器可读介质,具有存储于其上的指令,所述指令如果被机器执行,使得所述机器执行用于熔丝值验证的方法,所述方法包括:
接收来自熔丝阵列的熔丝值,所述熔丝阵列具有利用熔丝值编程的多个半导体熔丝;
通过使用接收所述熔丝值作为密钥的散列电路应用Simon密码来生成一个或多个散列值;以及
基于通过将所述Simon密码单独地应用到所述熔丝值中的每一个而生成的输出来生成指示所述熔丝阵列中的所述熔丝值是否是有效的值,包括将通过将所述Simon密码应用到所述熔丝值中的每一个生成的输出组合为摘要。
20.如权利要求19所述的机器可读介质,其特征在于,所述方法进一步包括:通过使用散列电路将Simon密码应用到所述熔丝值来生成一个或多个散列值的步骤包括:将所述Simon密码应用到包括一个熔丝值的第一密钥输入和第二明文输入,所述第二明文输入通过将所述Simon密码的前一应用的输入与源自所述Simon密码的所述前一应用的输出组合而生成。
CN201711143368.3A 2016-12-09 2017-11-17 用于熔丝验证的基于Simon的散列 Active CN108228960B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/374,700 US10374793B2 (en) 2016-12-09 2016-12-09 Simon-based hashing for fuse validation
US15/374,700 2016-12-09

Publications (2)

Publication Number Publication Date
CN108228960A true CN108228960A (zh) 2018-06-29
CN108228960B CN108228960B (zh) 2023-11-07

Family

ID=62490412

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711143368.3A Active CN108228960B (zh) 2016-12-09 2017-11-17 用于熔丝验证的基于Simon的散列

Country Status (2)

Country Link
US (1) US10374793B2 (zh)
CN (1) CN108228960B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110070903A (zh) * 2019-04-22 2019-07-30 北京时代民芯科技有限公司 一种先进的超低功耗的多晶电阻型熔丝电路及方法

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10491401B2 (en) * 2017-02-21 2019-11-26 Google Llc Verification of code signature with flexible constraints
CN108733311B (zh) * 2017-04-17 2021-09-10 伊姆西Ip控股有限责任公司 用于管理存储系统的方法和设备
US11308036B2 (en) * 2019-04-11 2022-04-19 EMC IP Holding Company LLC Selection of digest hash function for different data sets
US11803644B2 (en) * 2019-07-23 2023-10-31 SDG Logic Inc. Security hardened processing device
US11182308B2 (en) 2019-11-07 2021-11-23 Micron Technology, Inc. Semiconductor device with secure access key and associated methods and systems
US11132470B2 (en) * 2019-11-07 2021-09-28 Micron Technology, Inc. Semiconductor device with secure access key and associated methods and systems
US11030124B2 (en) 2019-11-07 2021-06-08 Micron Technology, Inc. Semiconductor device with secure access key and associated methods and systems
US11494522B2 (en) 2019-11-07 2022-11-08 Micron Technology, Inc. Semiconductor device with self-lock security and associated methods and systems
US11868475B1 (en) * 2020-05-06 2024-01-09 Marvell Asia Pte Ltd System and methods for latency reduction for fuse reload post reset

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150280909A1 (en) * 2014-03-27 2015-10-01 Sanu K. Mathew Instruction and Logic for a Simon Block Cipher
CN105409158A (zh) * 2013-08-08 2016-03-16 英特尔公司 提供安全密码散列回合功能的指令和逻辑

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7277950B1 (en) * 2000-12-29 2007-10-02 Swarmcast, Inc. Packet transfer mechanism over a peer to peer network
US7669234B2 (en) * 2002-12-31 2010-02-23 Broadcom Corporation Data processing hash algorithm and policy management
US7664902B1 (en) * 2004-03-16 2010-02-16 Super Talent Electronics, Inc. Extended SD and microSD hosts and devices with USB-like high performance packetized interface and protocol
GB0522531D0 (en) * 2005-11-04 2005-12-14 Isis Innovation Security in computing networks
US9853810B1 (en) * 2016-09-30 2017-12-26 International Business Machines Corporation Message padding for bit-oriented and bit-reversed input messages

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105409158A (zh) * 2013-08-08 2016-03-16 英特尔公司 提供安全密码散列回合功能的指令和逻辑
US20150280909A1 (en) * 2014-03-27 2015-10-01 Sanu K. Mathew Instruction and Logic for a Simon Block Cipher

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
何虎等: "面向寄存器的流水线处理器建模及验证方法", 《半导体学报》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110070903A (zh) * 2019-04-22 2019-07-30 北京时代民芯科技有限公司 一种先进的超低功耗的多晶电阻型熔丝电路及方法
CN110070903B (zh) * 2019-04-22 2021-04-13 北京时代民芯科技有限公司 一种先进的超低功耗的多晶电阻型熔丝电路及方法

Also Published As

Publication number Publication date
CN108228960B (zh) 2023-11-07
US10374793B2 (en) 2019-08-06
US20180167199A1 (en) 2018-06-14

Similar Documents

Publication Publication Date Title
CN108228960A (zh) 用于熔丝验证的基于Simon的散列
CN104484284B (zh) 用于为安全飞地页面高速缓存提供高级分页能力的指令和逻辑
CN104937539B (zh) 用于提供推入缓冲器复制和存储功能的指令和逻辑
CN103970509B (zh) 对条件循环进行矢量化的装置、方法、处理器、处理系统以及机器可读介质
CN104781803B (zh) 用于架构不同核的线程迁移支持
CN104011662B (zh) 用于提供向量混合和置换功能的指令和逻辑
CN105409158B (zh) 提供安全密码散列回合功能的处理器和方法
CN108369509B (zh) 用于基于通道的跨步分散操作的指令和逻辑
CN103827814B (zh) 用于提供利用跨越功能的向量加载操作/存储操作的指令和逻辑
CN104915181B (zh) 用于条件存储器错误帮助抑制的方法、处理器和处理系统
CN103827813B (zh) 用于提供向量分散操作和聚集操作功能的指令和逻辑
CN106547518B (zh) 用于加速器的低等待时间调用的装置和方法
CN106502624B (zh) 用于提供向量横向多数表决功能的处理器、设备和处理系统
CN108268283A (zh) 用于利用约简操作来支持数据并行循环的计算引擎架构
CN107094369A (zh) 用于提供simd sm3密码散列函数的指令和逻辑
CN107209722A (zh) 用于在安全飞地页面高速缓存中使安全飞地的进程分叉和建立子飞地的指令和逻辑
CN104025033B (zh) 利用控制操纵的simd可变移位和循环
CN108292215A (zh) 用于加载-索引和预取-聚集操作的指令和逻辑
CN109478139A (zh) 用于共享存储器中的访问同步的装置、方法和系统
CN108369516A (zh) 用于加载-索引和预取-分散操作的指令和逻辑
CN104813294B (zh) 用于任务可切换的同步硬件加速器的装置和方法
CN110233720A (zh) Sm4加速处理器、方法和系统
CN106445469B (zh) 处理器、机器可读存储介质和计算机实现的系统
CN108351779A (zh) 用于安全指令执行流水线的指令和逻辑
CN105302522B (zh) 提供通用gf(256)simd密码算法功能性的指令和逻辑

Legal Events

Date Code Title Description
PB01 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