CN108027866B - 具有轮常数生成的sms4加速处理器 - Google Patents

具有轮常数生成的sms4加速处理器 Download PDF

Info

Publication number
CN108027866B
CN108027866B CN201680055767.1A CN201680055767A CN108027866B CN 108027866 B CN108027866 B CN 108027866B CN 201680055767 A CN201680055767 A CN 201680055767A CN 108027866 B CN108027866 B CN 108027866B
Authority
CN
China
Prior art keywords
bits
bit sequence
output bit
variable bits
constant
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.)
Active
Application number
CN201680055767.1A
Other languages
English (en)
Other versions
CN108027866A (zh
Inventor
S.K.萨特帕菲
S.K.马修
K.S.亚普
V.戈帕尔
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 CN108027866A publication Critical patent/CN108027866A/zh
Application granted granted Critical
Publication of CN108027866B publication Critical patent/CN108027866B/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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • 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
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/24Key scheduling, i.e. generating round keys or sub-keys for block encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/34Encoding or coding, e.g. Huffman coding or error correction

Abstract

处理系统包括存储器和操作地耦合到存储器的处理逻辑。处理逻辑识别输出位序列的一个或多个常数位。处理逻辑生成输出位序列的多个可变位。处理逻辑产生包括识别的常数位和生成的多个可变位的输出位序列。

Description

具有轮常数生成的SMS4加速处理器
技术领域
本公开的实施例一般涉及计算装置,并且更具体地涉及具有轮常数生成的SMS4加速处理器,以用于在处理器中提供面积最优配置,同时允许用于密钥生成的飞行中(on-the-fly)密钥扩展。
背景技术
密码学是经常用于保护计算机系统和其它电子装置中的机密或秘密信息的技术。密码学一般涉及使用密码算法和密码密钥(cryptographic key)来保护信息。例如,可以执行加密(有时被称为暗码(cipher)),其中使用加密密钥(例如,位串)对未加密或明文输入数据(例如,表示文本、数字、可理解字符的位串等)执行如由密码算法指定的一系列变换或操作来产生加密的数据。加密的数据有时也被称为暗码文本或暗码数据。加密的数据一般是无法理解的。在不知道密码密钥的情况下,从加密的数据中确定未加密的明文数据一般是不可能的,或者至少不是实际可行的。如果密码密钥是已知的,则可以对加密的数据执行解密(有时称为反暗码)以重新产生对应的明文或未加密的数据。在解密期间执行的变换或操作可基本上与在加密期间执行的那些变换或操作相反。
附图说明
从以下给出的详细描述以及从本公开的各种实施例的附图中,将更完全地理解本公开。然而,附图不应被认为是将本公开限制于特定实施例,而是仅用于解释和理解。
图1示出根据本公开的实施例的包括用以执行密码术的处理系统的片上系统(SoC)。
图2示出根据本公开的实施例的图1的处理系统中的轮常数生成的逻辑图的示例。
图3示出根据本公开的实施例的图1的处理系统中的轮常数生成的逻辑图的示例。
图4示出根据本公开的实施例的在处理器中生成轮常数的流程图。
图5示出根据本公开的实施例的在处理器中生成轮常数的流程图。
图6A是示出在其中可使用本公开的一个实施例的处理器的微架构的框图。
图6B是示出根据本公开的至少一个实施例实现的有序流水线和寄存器重命名阶段、无序发布/执行流水线的框图。
图7示出根据本公开的一个实施例的处理器的微架构的框图。
图8是示出在其中可以使用本公开的实施例的系统的框图。
图9是在其中可以操作本公开的实施例的系统的框图。
图10是在其中可以操作本公开的实施例的系统的框图。
图11是根据本公开的实施例的片上系统(SoC)的框图。
图12是根据本公开的SoC设计的实施例的框图。
图13示出计算机系统的一个实施例的框图。
图14示出根据本公开的处于计算系统形式的机器的框图。
具体实施方式
SMS4是对于无线网络中的数据加密/解密采用的块暗码密码算法。SMS4数据加密操作可以包括多个加密轮。每个轮涉及多个不同的数据操纵操作,所述操作被执行以便将输入数据(明文)变换成加密的数据(暗码文本)。数据解密操作可以包括涉及多个类似的数据操纵操作的多个解密轮。
常规SMS4加速器将轮常数映射到查找表(LUT),其在硬件上占用大量的面积并导致附加的密钥生成等待时间。轮常数是通过增加或减小固定常数从32位累加器推导的。
本公开的方面消除对LUT的需要,这大大减小了硬件上的面积。本公开的方面允许快速和有效的飞行中密钥扩展,而不会导致任何附加的密钥生成等待时间,从而减小总体等待时间开销。在一个实施例中,SMS4加速器包括轮常数生成逻辑,其识别输出位序列中的常数位并利用输出位序列的可变位上的重复模式,使能位的有效生成。在说明性示例中,常数位是两个最低有效位,并且可变位是下两个最低有效位。
图1示出根据本公开实施例的包括处理系统的片上系统(SoC)100。SoC 100可以包括经由总线系统108彼此连接的处理器(诸如中央处理单元(CPU))102和存储器。处理器102可以使用存储器104执行诸如系统应用和用户应用的任务来存储程序和与程序关联的数据的指令。
在一个实施例中,处理器102还可以包括通信地耦合到处理核110的一个或多个处理核110和SMS4硬件加速器112。SMS4硬件加速器112起作用以生成用于加密和解密操作模式两者的轮常数。
SMS4硬件加速器112包括用于存储包括多个数据位的输入位数据的数据寄存器114。在一个实施例中,多个数据位包括128位数据。在一个实施例中,SMS4硬件加速器112在加密模式中处理多个数据位。在一个实施例中,SMS4硬件加速器112在解密模式中处理多个数据位。SMS4硬件加速器112还包括密钥寄存器116,以用于存储包括多个密钥位的输入密钥数据。在一个实施例中,多个密钥位包括128位密钥。数据位和密钥位两者都被发送到第一混合模块118以执行与数据位和密钥位两者的字节混合操作,引起第一混合数据。在一个实施例中,来自密钥的较高阶32位与32位数据混合,引起32位字。
由替换盒(Sbox)模块120处理第一混合数据(即32位字)以通过混合数据执行字节替换操作,引起替换数据(即32位Sbox输出)。从数据Sbox模块120输出的替换数据由旋转模块122进一步旋转以执行旋转操作来输出旋转的数据。在一个实施例中,数据旋转操作通过将携带Sbox输出的线拌合(swzzle)到如本文下面进一步描述的第二(最终)混合模块来完成。在一个实施例中,数据被移位某个数量的位。
SMS硬件加速器112还包括第二混合模块124,其混合旋转的数据以输出第二混合数据。第二混合数据将主Sbox输出、旋转的Sbox输出与来自数据的唯一字组合以生成新字,其代替来自数据的现有字。第二混合数据然后作为输入发送到暗码模块126。在第二混合模块124中的第二混合操作之后,来自第二混合模块124的32b输出被用来代替数据寄存器114中的32b字的一个中的一个。剩余的三个32b字通过在加密或解密中向左或右移位数据寄存器114而获得。在32轮操作之后,使用暗码模块126对128b数据进行混洗以生成加密或解密的输出。
在一个实施例中,常数值FK是仅在第一轮迭代中使用的128b常数。在密钥扩展的第一轮迭代中,通过加法操作130,FK与128b用户提供的密钥相加以生成存储在密钥寄存器116中的第一密钥。在第二轮迭代中,发送第一密钥到复用器132,其输出被发送到密钥扩展模块134,以生成发送到密钥寄存器116的下一个密钥。相应地,密钥扩展模块134对第一轮的用户提供的密钥进行操作,并且推导供在下一轮中使用的新的密钥。对于32轮密钥扩展,密钥扩展模块134需要由轮常数生成模块136生成并被存储在常数寄存器138中的32个轮常数(被称为CK)。因此,与当前轮计算并行的下一轮的并发密钥推导隐藏密钥扩展等待时间。由轮常数生成模块136生成的32b轮常数CK存储在常数寄存器模块138中。每次迭代使用新密钥,所述新密钥使用类似操作集合从先前密钥推导。在第32轮之后,最终选择的密钥位包括加密或解密密钥的32b密钥字。在一个实施例中,轮常数生成模块136利用8位累加器来计算32b轮常数CK,如下面就图2更详细描述的。在另一个实施例中,轮常数生成模块136利用2位计数器以计算32b轮常数CK,如下面就图3更详细描述的。
图2示出根据本公开的一个实施例的轮常数生成模块236的逻辑图200。轮常数生成模块236与利用8位累加器的图1的轮常数生成模块136相同。轮常数生成模块236起作用以在加密和解密模式中生成用于密钥扩展的32b轮常数CK。在一个实施例中,加密操作模式中的所有32轮的常数在下面的表1中示出:
表1
在一个实施例中,上面列出的CK在解密操作模式期间以相反顺序被访问。如上面所讨论的,每个SMS4轮要求使用32b轮常数CK来从先前密钥推导的新的128b密钥。
逻辑图200包括具有指示操作是加密模式还是解密模式的输入的第一复用器202。由于第一CK值是00070el5,所以第一复用器202的输入指示加密模式。指示加密操作模式的第一复用器202的输出是第二复用器204的输入。第二复用器204的另一个输入是在第一轮中提供的第一CK值00070e15,现在正通过第二轮被使用到32位寄存器206中。32位寄存器206被划分成四个8位寄存器206a、206b、206c和206d,其中的每个分别包括常数值CKi0、CKil、CKi2和CKi3。来自第一轮的常数值CKi0、CKi1、CKi2和CKi3分别为00 07 0e和15。
在一个实施例中,对于在加密模式中的每一个周期,32位寄存器206增加28(+28)。因此,+28是到第三复用器208的输入。指示增加28的第三复用器的输出+28,以及这些常数值CKi0、CKi1、CKi2和CKi3中的每个分别发送到加法操作210a、210b、210c和210d。加法操作210a、210b、210c和210d的输出对于第二轮分别生成存储在它们相应的32位寄存器212中的下一个常数(NK)值NKi0、NKi1、NKi2和NKi3。32位寄存器212被划分成四个8位寄存器212a、212b、212c和212d,其中每个分别包括常数值NKi0、NKi1、NKi2和NKi3。对于第二轮,NKi0、NKi1、NKi2和NKi3值分别为lc 23 2a和31。来自第二轮的这些NK值输入到第二复用器204并加载回32位寄存器206中,其被分别划分成作为常数值CKi0、CKi1、CKi2和CKi3的8位寄存器206a、206b、206c和206d。相应地,第二轮中的CKi0、CKi1、CKi2和CKi3分别为1c 23 2a和31。
因此,使用分别来自第二轮的、对于第三轮要分别加载到CKi0、CKi1、CKi2和CKi3中的NKi0、NKi1、NKi2和NKi3值1c 23 2a和31重复该过程。在第三轮中,所生成的NKi0、NKi1、NKi2和NKi3值分别为38 3f 46和4d。使用分别来自第三轮的、对于第四轮要分别加载到CKi0、CKi1、CKi2和CKi3中的NKi0、NKi1、NKi2和NKi3值38 3f 46和4d重复该过程。在第四轮中,生成的NKi0、NKi1、NKi2和NKi3值分别为54 5b 62和69。重复该过程,直到第32轮,其中生成的NKi0、NKi1、NKi2和NKi3值分别为64 6b 72和79。
相应地,在如上面所示的表格中,NKi3的第一末两个数字(digit)始终将是5 1 d和9,NKi 2的第一末两个数字始终将是e a 6和2,NKi1的第一末两个数字始终将是7 3 f和b,并且NKi0的第一末两个数字始终将是0 c 8和4。NKi3的5 1 d和9的二进制值是01,所以NKi3的第一末两位是01,NKi2的e a 6和2的二进制值是10,所以Nki2的第一末两位是10,NKi2的7 3 f和b的二进制值是11,所以Nkil的第一末两位是11以及NKi0的0 c 8和4的二进制值是00,所以Nki0的第一末两位是00。
因此,所有4个字节(即,NKi0、NKi1、NKi2和NKi3)的第一末两位不改变值并且分别保持恒定在00、11、10和01。在一个实施例中,第一末两位是轮常数字节中的两个最低有效位。因此,32位中的8位值将在每一个轮中重复,因此消除对用以生成上面表中的CK值的8位累加器的需要。在一个实施例中,常数位值0连接到芯片中的低电压(例如,大地),并且常数位值1连接到芯片中的高电压(例如,电压供应),其实质是上累加器的部分。因此,与累加器中的这些常数位值对应的八个寄存器被消除以节省芯片中的面积,同时仍然生成具有100%准确度的轮常数。
图3示出根据本公开的一个实施例的轮常数生成模块336的逻辑图300。轮常数生成模块236与利用2位计数器的图1的轮常数生成模块136相同。轮常数生成模块336起作用以在加密和解密模式中生成用于密钥扩展的32b轮常数CK。
在一个实施例中,在加密操作模式中的所有32轮的常数在上面的表1中示出。在一个实施例中,上面列出的CK在解密操作模式期间以相反顺序访问。如上面所讨论的,每个SMS4轮要求新128b密钥,所述新128b密钥使用32b轮常数CK从先前密钥推导。
如上面所讨论的,表1中的每个列中重复的常数值5 1 d 9的第一末两位始终将是常数位01。在一个实施例中,逻辑图300起作用以生成常数值5 1 d 9的第二末两位作为NK3。同样地,如上面所讨论的,表1中每个列中重复的常数值e a 6 2的第一末两位始终将是常数位10,并且逻辑图300起作用以生成常数值e a 6 2的第二末两位作为Nk2。同样地,如上面所讨论的,表1中每个列中重复的常数值7 3 f b的第一末两位始终将是常数位10,并且逻辑图300起作用以生成常数值7 3 f b的第二两位作为Nk1。此外,如上面所讨论的,表1中每个列中重复的常数值0 c 8 4的第一末两位始终将是常数位00,并且逻辑图300起作用以生成常数值0 c 8 4的第二末两位作为Nk1。在一个实施例中,第二末两位是轮常数字节中的下两个最低有效位。本文下面描述生成常数值的这些第二末两位的逻辑图300的细节。
逻辑图300包括具有指示操作是加密模式还是解密模式的输入的第一复用器302。在一个实施例中,在加密模式中,到第一复用器302的输入以二进制值11开始。在一个实施例中,在解密模式中,到第一复用器302的输入以二进制值00开始。第一复用器302的输出是到2b计数器304的输入,其在解密模式中增加(向上计数)并且在加密模式中减小(向下计数)。
如上面所讨论的,在加密模式中,到第一复用器302的输入以二进制值11开始。第一复用器302的输出是到2b计数器304的输入。在第一周期中,二进制值11从2b计数器304输出并被加到+2(二进制值10)加法操作306。+2加法操作306的输出是具有二进制值01的1,其是到第二复用器308的输入,所述第二复用器308输出二进制值01。此二进制值01是常数值5的第二末两位。
在一个实施例中,在加密模式中,2b计数器304减小(向下计数),使得二进制值将在每一个周期中减小1。因此,在第二周期中,2b计数器304从具有二进制值11的3减小(向下计数)到具有二进制值10的2。在第二周期中从2b计数器304输出的二进制值10被加到+2(10)加法操作306。加法操作306的输出是具有二进制值00的00,其是到第二复用器308的输入,所述第二复用器308输出二进制值00。此二进制值00是常数值1的第二末两位。在第三周期中,2b计数器304从具有二进制值10的2减小到具有二进制值01的1。在第三周期中从2b计数器304输出的二进制值01被加到+2(10)加法操作306。加法操作306的输出是具有二进制值11的3,其是到第二复用器308的输入,所述第二复用器308输出二进制值11。此二进制值11是常数值d的第二末两位。在第四周期中,2b计数器304从具有二进制值01的1减小(向下计数)到具有二进制值00的0。在第四周期中从2b计数器304输出的二进制值00被加到+2(10)加法操作306。加法操作306的输出是具有二进制值10的2,其是到第二复用器308的输入,所述第二复用器308输出二进制值10。此二进制值10是常数值9的第二末两位。相应地,生成NK3的第二末两位。因此,在加密模式中对于NK3生成的第二末两位遵循表1的每一行中的01 00 11 10的周期性模式。
在一个实施例中,在加密模式中使用与上面相对于如上面使用复用器310而不是复用器308所描述的NK3的第二末两位所描述的相同的逻辑300,生成对于NK1生成的第二末两位。在一个实施例中,二进制值01是常数值7的第二末两位,二进制值00是常数值3的第二末两位,二进制值11是常数值f的第二末两位以及二进制值10是常数值b的第二末两位。因此,在加密模式中对于NK1生成的第二末两位遵循与表1的每一行中的01 00 11 10的NK3相同的周期性模式。
在一个实施例中,在加密模式中使用与上面相对于如上面相对于如上面使用复用器312而不是复用器308所描述的NK3的第二末两位所描述的Nk3生成的第二末两位所描述的相同逻辑300生成Nk0的第二末两位。然而,对于Nk0生成的第二末两位遵循与NK3和NK1不同的周期性模式。由于常数CK由SMS4标准指定,在此情形中,NK0遵循与NK3和NK1不同的模式。在一个实施例中,二进制值00是常数值0的第二末两位,二进制值11是常数值c的第二末两位,二进制值10是常数值8的第二末两位以及二进制值01是常数值4的第二末两位。因此,在加密模式中对于Nk0生成的第二末两位遵循在表1的每一行中的00 11 10 01的周期性模式。
在一个实施例中,在加密模式中使用除了如上面相对于对于Nk3生成第二末两位所描述的+2(10)加法操作306之外的相同逻辑300生成Nk2的第二末两位。因此,Nk2的第二末两位的二进制值与从2b计数器304直接输出的相同。相应地,在加密模式中对于Nk2生成11 10,01和00的周期性模式二进制值。在一个实施例中,二进制值11是常数值e的第二末两位,二进制值10是常数值a的第二末两位,二进制值01是常数值6的第二末两位以及二进制值00是常数值2的第二末两位。因此,在加密模式中对于NK2生成的第二末两位遵循表1的每一行中11 10 01 00的周期性模式。
在一个实施例中,在解密模式中,使用除了到第一复用器302的输入以二进制值00而不是11开始并且+2(10)加法操作通过+1(01)加法操作314代替之外的相同的逻辑300生成第二末两个NK3 Nk1和Nk0。在一个实施例中,解密模式中的NK3分别对于第一、第二、第三和第四周期遵循10 11 00和01的模式。二进制值10是常数值9的第二末两位,二进制值11是常数值d的第二末两位,二进制值00是常数值1的第二末两位并且二进制值01是常数值5的第二末两位。因此,在解密模式中对于NK3生成的第二末两位遵循表1的每一行中10 11 00和01的周期性模式。
在一个实施例中,在解密模式中使用与上面相对于如上面使用复用器310而不是复用器308所描述的NK3的第二末两位所描述的相同的逻辑300,生成对于NK1生成的第二末两位。在一个实施例中,二进制值10是常数值b的第二末两位,二进制值11是常数值f的第二末两位,二进制值00是常数值3的第二末两位以及二进制值01是常数值7的第二末两位。因此,在解密模式中对于NK1生成的第二末两位遵循与表1的每一行中的10 11 00和01的NK3相同的周期性模式。
在一个实施例中,在解密模式中使用与上面相对于如上面使用复用器312而不是复用器308所描述的NK3的第二末两位所描述的相同的逻辑300,生成对于NK0生成的第二末两位。然而,对于Nk0生成的第二末两位遵循与NK3和NK1不同的周期性模式。由于常数CK由SMS4标准指定,在此情形中,NK0遵循与NK3和NK1不同的模式。在一个实施例中,二进制值01是常数值4的第二末两位,二进制值10是常数值8的第二末两位,二进制值11是常数值c的第二末两位以及二进制值00是常数值0的第二末两位。因此,在解密模式中对于Nk0生成的第二末两位遵循表1的每一行中的01 10 11和00的周期性模式。
在一个实施例中,在解密模式中使用除了如上面相对于对于Nk3生成的第二末两位所描述的+1(01)加法操作312之外的相同逻辑300生成Nk2的第二末两位。因此,Nk2的第二末两位的二进制值与从2b计数器304直接输出的相同。相应地,在解密模式中对于Nk2生成二进制值00 01 10和11的周期性模式。在一个实施例中,二进制值00是常数值2的第二末两位,二进制值01是常数值6的第二末两位,二进制值10是常数值a的第二末两位以及二进制值11是常数值e的第二末两位。因此,在解密模式中对于NK2生成的第二末两位遵循表1的每一行中的00 01 10和11的周期性模式。
如上面所讨论的,轮常数字节中的第二末两位(即,下两个最低有效位)在加密和解密操作模式两者中均展现周期性模式。相应地,可以使用2b计数器来生成这些第二末两位。因此,在累加器中对应于这些常数位值的六个寄存器被消除以节省芯片上的面积,同时仍然生成具有100%的精确度的轮常数。
图4示出根据本公开的实施例的用于生成轮常数的方法的流程图。方法400可以通过处理逻辑来执行,所述处理逻辑可以包括硬件(例如电路、专用逻辑、可编程逻辑、微代码等)、软件(诸如在处理系统、通用计算机系统或专用机器上运行的指令)、固件或其组合。在一个实施例中,方法400可以部分地通过执行关于图1的操作系统的处理核110中的任何一个的处理逻辑来执行。
为了解释的简单性,方法400被描绘和描述为一系列动作。然而,根据本公开的动作可以以各种顺序和/或并发发生以及与本文未呈现和描述的其它动作一起发生。此外,并非所有示出的动作都可以被执行以实现根据所公开的主题的方法400。此外,本领域的技术人员将理解并认识到,方法400可以备选地经由状态图或事件表示为一系列相互关联的状态。
参考图4,在框402,处理逻辑识别输出位序列的一个或多个常数位。在框404,处理逻辑生成输出位序列的多个可变位。在一个实施例中,多个可变位包括多个位的集合的周期性重复。在一个实施例中,通过将累加器增加整数值,在加密模式中生成多个可变位。在一个示例中,加密模式中的整数值是2。在一个实施例中,通过将累加器整数值,在解密模式中生成多个可变位。在一个示例中,解密模式中的整数值是1。在框406,处理逻辑产生包括识别的常数位和所生成的多个可变位的输出位序列。
图5示出了根据本公开的实施例的用于生成轮常数的方法的流程图。方法500可以通过处理逻辑来执行,所述处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、微代码等)、软件(诸如在处理系统、通用计算机系统或专用机器上运行的指令)、固件或其组合。在一个实施例中,方法500可以部分地通过执行关于图1的操作系统的处理核110中的任何一个的处理逻辑来执行。
为了解释的简单性,方法500被描绘和描述为一系列动作。然而,根据本公开的动作可以以各种顺序和/或并发发生以及与本文未呈现和描述的其它动作一起发生。此外,并非所有示出的动作都可以被执行以实现根据所公开的主题的方法500。此外,本领域的技术人员将理解并认识到,方法500可以备选地经由状态图或事件表示为一系列相互关联的状态。
参考图5,在框502,处理逻辑生成在输出位序列的多个可变位之中的变量的第一集合。在一个实施例中,通过将计数器初始化成多个模式之中的第一模式来生成变量的第一集合。在框504,处理逻辑生成多个模式之中的第二模式。在一个实施例中,通过将加法器电路耦合到计数器来生成第二模式。可变位的第二集合不同于可变位的第一集合。在框506,处理逻辑包括利用第二模式来生成输出位序列的多个可变位之中的可变位的第二集合。在一个实施例中,输出位序列包括常数位和多个可变位。在一个实施例中,输出位序列包括常数位和所生成的多个可变位。
图6A是示出根据本发明的至少一个实施例的监视处理装置的性能以管理非精确事件的处理器的有序流水线和寄存器重命名阶段、无序发布/执行流水线的框图。图6B是示出根据本公开的至少一个实施例的要包括在处理器中的无序发布/执行逻辑、寄存器重命名逻辑和有序架构核的框图。图6A中的实线框示出有序流水线,而虚线框示出寄存器重命名、无序发布/执行流水线。类似地,图6B中的实线框示出有序架构逻辑,而虚线框示出寄存器重命名和无序发布/执行逻辑。
在图6A中,处理器流水线600包括获取阶段602、长度解码阶段604、解码阶段606、分配阶段608、重命名阶段610、调度(也称为分派或发布)阶段612、寄存器读/存储器读阶段614、执行阶段616、写回/存储器写阶段618、异常处置阶段622及提交阶段624。在一些实施例中,以不同的顺序提供阶段并且可以有序和无序考虑不同阶段。
在图6B中,箭头表示在两个或更多个单元之间的耦合,并且箭头的方向指示在那些单元之间数据流的方向。图6B示出处理器核690,其包括耦合到执行引擎单元650的前端单元630,并且两者均耦合到存储器单元670。
核690可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIM)核或混合或备选核类型。作为又一选项,核690可以是专用核,诸如,例如网络或通信核、压缩引擎、图形核等等。
前端单元630包括耦合到指令高速缓存单元634的分支预测单元632,其耦合到指令翻译后援缓冲器(TLB)636,所述TLB 636耦合到指令获取单元638,其耦合到解码单元640。解码单元或解码器可将指令解码,并且生成作为输出的一个或多个微操作、微代码入口点、微指令、其它指令或其它控制信号,其从原始指令解码或者其以其它方式反映原始指令或者从原始指令推导。解码器可使用各种不同机制实现。适合的机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。指令高速缓存单元634还耦合到存储器单元670中的2级(L2)高速缓存单元676。解码单元640耦合到执行引擎单元650中的重命名/分配器单元652。
执行引擎单元650包括耦合到引退单元654和一个或多个调度器单元656的集合的重命名/分配器单元652。引退单元654可包括用于在允许根据本发明的实施例的用于密钥生成的飞行中密钥扩展的同时在处理器中提供面积最优配置的轮常数生成模块603。一个或多个调度器单元656表示任何数量的不同调度器,包括预留站、中央指令窗口等。一个或多个调度器单元656耦合到一个或多个物理寄存器文件(一个或多个)单元658。一个或多个物理寄存器文件单元658的每个表示一个或多个物理寄存器文件,这些文件的不同文件存储一个或多个不同数据类型,诸如标量整数、标量浮点、压缩整数、压缩浮点、向量整数、向量浮点等,状态(例如,作为要执行的下一指令的地址的指令指针)等。一个或多个物理寄存器文件(一个或多个)单元658由引退单元654重叠以示出其中可实现寄存器重命名和无序执行的各种方式(例如,使用一个或多个重新排序缓冲器和一个或多个引退寄存器文件;使用一个或多个将来文件、一个或多个历史缓冲器和一个或多个引退寄存器文件;使用寄存器映射和寄存器池等)。
一般地,架构寄存器从处理器外部或者从程序设计器(programmer)的角度而言是可见的。寄存器不限于任何已知具体类型的电路。各种不同类型的寄存器是适合的,只要它们能够如本文中所描述地存储和提供数据。适合寄存器的示例包括但不限于专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合等。引退单元654和一个或多个物理寄存器文件(一个或多个)单元658耦合到一个或多个执行集群660。一个或多个执行集群660包括一个或多个执行单元662的集合和一个或多个存储器访问单元664的集合。执行单元662可执行各种操作(例如,移位、加法、减法、乘法),并且对各种类型的数据(例如,标量浮点、压缩整数、压缩浮点、向量整数、向量浮点)执行。
虽然一些实施例可包括专用于特定功能或功能的集合的多个执行单元,但其它实施例可包括一个执行单元或全部执行所有功能的多个执行单元。一个或多个调度器单元656、一个或多个物理寄存器文件(一个或多个)单元658和一个或多个执行集群660示出为可能是多个,因为某些实施例为某些类型的数据/操作创建单独的流水线(例如,标量整数流水线、标量浮点/压缩整数/压缩浮点/向量整数/向量浮点流水线,和/或存储器访问流水线,其各自具有它们自己的调度器单元、一个或多个物理寄存器文件单元和/或执行集群—并且在单独的存储器访问流水线的情况下,实现其中此流水线的执行集群具有一个或多个存储器访问单元664的某些实施例)。还应理解的是,在使用单独流水线的情况下,这些流水线中的一个或多个可以是无序发布/执行,并且其余是有序的。
存储器访问单元664的集合耦合到存储器单元670,其包括耦合到数据高速缓存单元674的数据TLB单元672,所述数据高速缓存单元674耦合到2级(L2)高速缓存单元676。在一个示范实施例中,存储器访问单元664可包括负载单元、存储地址单元和存储数据单元,它们中的每个耦合到存储器单元670中的数据TLB单元672。L2高速缓存单元676耦合到一个或多个其它级的高速缓存,并且最终耦合到主存储器。
通过示例,示范寄存器重命名、无序发布/执行核架构可如下实现流水线600:1)指令获取38执行获取阶段602和长度解码阶段604;2)解码单元640执行解码阶段606;3)重命名/分配器单元652执行分配阶段608和重命名阶段610;4)一个或多个调度器单元656执行调度阶段612;5)一个或多个物理寄存器文件(一个或多个)单元658和存储器单元670执行寄存器读/存储器读阶段614;执行集群660实行执行阶段616;6)存储器单元670和一个或多个物理寄存器文件(一个或多个)单元658执行写回/存储器写阶段618;7)各种单元可涉及异常处置阶段622;以及8)引退单元654和一个或多个物理寄存器文件(一个或多个)单元658执行提交阶段624。
核690可支持一个或多个指令集(例如,x86指令集(具有更新版本已添加的一些扩展)、MIPS Technologies of Sunnyvale,CA的MIPS指令集、ARM Holdings of Sunnyvale,CA的ARM指令集(具有诸如NEON的附加扩展)。
应理解的是,核可以支持多线程(执行两个或更多个操作或线程的并行集合)并且可以以多种方式这样做,包括时间分片多线程、同时多线程(其中,单个物理核为物理核在同时进行多线程的每个线程提供逻辑核)或其组合(例如诸如在Intel®超线程技术中的时间分片获取和解码及之后的同时多线程)。
虽然寄存器重命名在无序执行的上下文中描述,但应理解的是,可在有序架构中使用寄存器重命名。虽然处理器的所示实施例也包括单独的指令和数据高速缓存单元634/674及共享L2高速缓存单元676,但备选实施例可具有诸如例如1级(L1)内部高速缓存的用于指令和数据两者的单个内部高速缓存,或多个级的内部高速缓存。在一些实施例中,系统可包括内部高速缓存和在核和/或处理器外的外部高速缓存的组合。备选地,所有高速缓存可在核和/或处理器的外部。
图7是示出根据本发明的一个实施例的包括用以执行指令的逻辑电路的处理器700的微架构的框图。在一个实施例中,处理器700监视处理装置的性能以管理非精确事件。在一些实施例中,可以实现根据一个实施例的指令,以对具有字节、字、双字、四字等大小以及诸如单和双精度整数和浮点数据类型的数据类型的数据元素进行操作。在一个实施例中,有序前端701是处理器700的一部分,该部分获取要执行的指令,并且准备它们以稍后用在处理器流水线中。前端701可包括若干单元。在一个实施例中,指令预获取器726从存储器中获取指令,并将它们馈送到指令解码器728,其又解码或解释它们。例如,在一个实施例中,解码器将接收的指令解码成机器可执行的称为“微指令”或“微操作”(也称为微op或uop)的一个或多个操作。
在其它实施例中,解码器将指令解析成操作码和对应的数据以及控制字段,其由微架构使用以执行根据一个实施例的操作。在一个实施例中,追踪(trace)高速缓存730取出解码的uop并将其汇编成uop队列734中的程序排序的序列或追踪以用于执行。当追踪高速缓存730遇到复杂指令时,微代码ROM 732提供完成该操作所需的uop。
一些指令被转换成单个微op,而其它指令使用若干微op来完成全部操作。在一个实施例中,如果需要多于四个微op来完成指令,则解码器728访问微代码ROM 732以进行指令。对于一个实施例,指令可被解码成小数量的微op,以用于在指令解码器728处理。在另一实施例中,指令可被存储在微代码ROM 732内,如果需要多个微op来完成操作的话。追踪高速缓存730指入口点可编程逻辑阵列(PLA)以确定正确的微指令指针,以用于读微代码序列,来完成来自微代码ROM 732的根据一个实施例的一个或多个指令。在微代码ROM 732完成排序指令的微op后,机器的前端701恢复从追踪高速缓存730获取微op。
无序执行引擎703是准备指令以用于执行的地方。无序执行逻辑具有多个缓冲器,以在指令沿流水线向下并且被调度以用于执行时,平滑处理和重新排序指令的流以优化性能。分配器逻辑分配每个uop需要以便执行的机器缓冲器和资源。寄存器重命名逻辑将逻辑寄存器重命名到寄存器文件中的条目上。在指令调度器(存储器调度器、快速调度器702、慢速/通用浮点调度器704和简单浮点调度器706)前面,分配器还为两个uop队列(一个用于存储器操作,并且一个用于非存储器操作)之一中的每个uop分配条目。Uop调度器702、704、706基于它们的相关输入寄存器操作数源的准备度和uop使用来完成它们的操作的执行资源的可用性,来确定uop何时准备好执行。一个实施例的快速调度器702可在主时钟周期的每半个周期上进行调度,而其它调度器可每主处理器时钟周期调度一次。调度器对于分派端口进行裁决以调度uop以用于执行。
寄存器文件708、710位于调度器702、704、706与执行块711中的执行单元712、714、716、718、720、722、724之间。对于整数和浮点操作分别存在单独寄存器文件。一个实施例的每个寄存器文件708、710还包括旁路网络,其可向新的相关uop旁路或转发尚未写入寄存器文件中的刚刚完成的结果。整数寄存器文件708和浮点寄存器文件710也能够相互传递数据。对于一个实施例,整数寄存器文件708被分成两个单独的寄存器文件,一个寄存器文件用于数据的低位32位,并且第二寄存器文件用于数据的高位32位。一个实施例的浮点寄存器文件710具有128位宽条目,因为浮点指令典型地具有从64位到128位的宽度的操作数。
执行块711包含执行单元712、714、716、718、720、722、724(在其中实际执行指令)。此部分包括存储整数和浮点数据操作数值(微指令使用其来执行)的寄存器文件708、710。一个实施例的处理器700包括多个执行单元:地址生成单元(AGU)712、AGU 714、快速ALU716、快速ALU 718、慢速ALU 720、浮点ALU 722、浮点移动单元724。对于一个实施例,浮点执行块722、724执行浮点、MMX、SIMD和SSE或其它操作。一个实施例的浮点ALU 722包括64位×54位浮点除法器以执行除法、平方根和余数微op。对于本发明的实施例,涉及浮点值的指令可通过浮点硬件处置。
在一个实施例中,ALU操作去到高速ALU执行单元716、718。一个实施例的快速ALU716、718可以通过一半时钟周期的有效等待时间执行快速操作。对于一个实施例,最复杂的整数操作去到慢速ALU 720,因为慢速ALU 720包括用于长等待时间类型操作的整数执行硬件,诸如乘法器、移位、标记逻辑和分支处理。存储器加载/存储操作由AGU 712、714执行。对于一个实施例,整数ALU 716、718、720在对64位数据操作数执行整数操作的上下文中描述。在备选实施例中,可实现ALU 716、718、720以支持各种数据位,包括16、32、128、256等。类似地,可实现浮点单元722、724以支持具有各种宽度的位的操作数的范围。对于一个实施例,浮点单元722、724可结合SIMD和多媒体指令对128位宽压缩数据操作数进行操作。
在一个实施例中,在父加载(parent load)已经完成执行之前,uop调度器702、704、706分派相关操作。当在处理器700中推测性地调度和执行uop时,处理器700还包括处置存储器丢失的逻辑。如果数据加载在数据高速缓存中丢失,则流水线中可存在飞行(inflight)相关操作,其为调度器留下了暂时不正确的数据。重放机制跟踪和重新执行使用不正确数据的指令。应当重放相关操作,并且允许完成独立操作。处理器的一个实施例的调度器和重放机制也设计成捕捉用于文本字符串比较操作的指令序列。
处理器700可包括耦合到执行块711的引退单元774。引退单元774可包括轮常数生成模块705以用于提供处理器中的面积最优配置同时允许用于密钥生成的飞行中密钥扩展。
术语“寄存器”可指用作识别操作数的指令的部分的板上处理器存储位置。换而言之,寄存器可以是从处理器的外部(从程序设计器的角度而言)可使用的那些寄存器。然而,实施例的寄存器应当不限于意指具体类型的电路。相反,实施例的寄存器能够存储数据以及提供数据,并且执行本文中描述的功能。本文中描述的寄存器可使用任何数量的不同技术由处理器内的电路实现,诸如专用物理寄存器、使用寄存器重命名的动态分配物理寄存器、专用和动态分配物理寄存器的组合等。在一个实施例中,整数寄存器存储三十二位整数数据。
一个实施例的寄存器文件也包含用于压缩数据的八个多媒体SIMD寄存器。对于下面的讨论,将寄存器理解为设计成保持压缩数据的数据寄存器,诸如利用来自加利福尼亚州Santa Clara的Intel Corporation的MMX™技术使能的微处理器中的64位宽MMX寄存器(在一些实例中也称为‘mm’寄存器)。在整数和浮点形式两者中可用的这些MMX寄存器可与伴随SIMD和SSE指令的压缩数据元素一起操作。类似地,与SSE2、SSE3、SSE4或更高(一般称为“SSEx”)技术有关的128位宽XMM寄存器也可用于保持此类压缩数据操作数。在一个实施例中,在存储压缩数据和整数数据中,寄存器不在两种数据类型之间区分。在一个实施例中,整数和浮点包含在相同寄存器文件或不同寄存器文件中。此外,在一个实施例中,浮点和整数数据可存储在不同寄存器或相同寄存器中。
现在参考图8,示出了根据本发明的一个实施例的系统800的框图。系统800可包括一个或多个处理器810、815,它们耦合到图形存储器控制器集线器(GMCH)820。在图8中用虚线表示附加处理器815的可选性质。在一个实施例中,处理器810、815监视处理装置的性能以管理非精确事件。
每个处理器810、815可以是如上面描述的电路、集成电路、处理器和/或硅集成电路的某个版本。然而,应当注意,在处理器810、815中将存在集成图形逻辑和集成存储器控制单元是不可能的。图8示出GMCH 820可耦合到存储器840,所述存储器840例如可以是动态随机存取存储器(DRAM)。对于至少一个实施例,DRAM可与非易失性高速缓存关联。
GMCH 820可以是芯片集,或者芯片集的一部分。GMCH 820可与一个或多个处理器810、815通信,并控制一个或多个处理器810、815与存储器840之间的交互。GMCH 820也可充当一个或多个处理器810、815与系统800的其它元件之间的加速总线接口。对于至少一个实施例,GMCH 820经由多点总线(诸如前侧总线(FSB)895)与一个或多个处理器810、815通信。
此外,GMCH 820耦合到显示器845(诸如平面面板或触摸屏显示器)。GMCH 820可包括集成图形加速器。GMCH 820进一步耦合到输入/输出(I/O)控制器集线器(ICH)850,其可用于将各种外设装置耦合到系统800。例如在图8的实施例中示出外部图形装置860,其可以是连同另一外设装置870耦合到ICH 850的分立图形装置。
备选地,在系统800中也可存在附加的或不同的处理器。例如,一个或多个附加处理器815可包括可与处理器810相同的一个或多个附加处理器、与处理器810异质或不对称的一个或多个附加处理器、加速器(诸如例如图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其它处理器。在品质度量谱(包括架构、微架构热、功耗特性等等)方面,在一个或多个处理器810、815之间可存在各种差异。这些差异在处理器810、815之中可有效地将它们自己标明为不对称并且异质。对于至少一个实施例,各种处理器810、815可驻留在同一管芯封装中。
实施例可以以许多不同系统类型实现。图9是根据本公开的实施例的SoC 900的框图。虚线框是更高级SoC上的可选特征。在图9中,一个或多个互连单元902耦合到:应用处理器920,其包括一个或多个共享高速缓存单元906以及一个或多个核902A-N的集合;系统代理单元910;一个或多个总线控制器单元916;一个或多个集成存储器控制器单元914;媒体处理器918集合或一个或多个媒体处理器918,其可包括集成图形逻辑908、用于提供静止和/或视频相机功能性的图像处理器924、用于提供硬件音频加速的音频处理器926以及用于提供视频编码/解码加速的视频处理器928;静态随机存取存储器(SRAM)单元930;直接存储器存取(DMA)单元932;以及用于耦合到一个或多个外部显示器的显示单元940。在一个实施例中,存储器模块可以包括在一个或多个集成存储器控制器单元914中。在另一个实施例中,存储器模块可以包括在可用于访问和/或控制存储器的SoC 900的一个或多个其它组件中。应用处理器920可包括条件分支、间接分支和事件执行逻辑(如本文实施例中所描述的)。
存储器层级包括核内的一个或多个级的高速缓存,共享高速缓存单元906集合或一个或多个共享高速缓存单元906,以及耦合到集成存储器控制器单元914的集合的外部存储器(未示出)。共享高速缓存单元906的集合可以包括诸如2级(L2)、3级(L3)、4级(L4)或其它级高速缓存的一个或多个中级高速缓存、末级高速缓存(LLC)和/或其组合。
在一些实施例中,核902A-N中的一个或多个能够进行多线程。
系统代理910包括协调和操作核902A-N的那些组件。系统代理单元910可以包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括用于调节集成图形逻辑908和核902A-N的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核902A-N在架构和/或指令集方面可以是同质的或异质的。例如,核902A-N中的一些可以是有序的而其它核是无序的。作为另一示例,核902A-N中的两个或更多个可以能够执行相同的指令集,而其它核可以仅能够执行该指令集的子集或不同指令集。
应用处理器920可以是通用处理器,诸如从加利福尼亚州Santa Clara的Intel™Corporation可获得的Core™ i3、 i5、 i7、 2双核和四核、Xeon™、Itanium™、Atom™、XScale™或StrongARM™处理器。备选地,应用处理器920可以来自另一公司,诸如ARMHoldings™,Ltd、MIPS™等。应用处理器920可以是专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、协处理器、嵌入式处理器等等。应用处理器920可以在一个或多个芯片上实现。应用处理器920可以是使用诸如例如BiCMOS、CMOS或NMOS的多个处理技术的任何处理技术在一个或多个衬底上的一部分和/或可以使用诸如例如BiCMOS、CMOS或NMOS的多个处理技术的任何处理技术在一个或多个衬底上实现。
图10是根据本公开的片上系统(SoC)设计的实施例的框图。作为特定的说明性示例,SoC 1000包括在用户设备(UE)中。在一个实施例中,UE指要由最终用户使用来进行通信的任何装置,诸如手持电话、智能手机、平板、超薄笔记本、具有宽带适配器的笔记本或任何其它类似的通信装置。通常UE连接到基站或节点,其潜在地本质上对应于GSM网络中的移动台(MS)。
这里,SOC 1000包括2个核—1006和1007。核1006和1007可以符合指令集架构,诸如基于Intel® Architecture Core™的处理器、Advanced Micro Devices, Inc.(AMD)处理器、基于MIPS的处理器、基于ARM的处理器设计或其客户,以及它们的许可证持有者或采用者。核1006和1007耦合到与总线接口单元1008和L2高速缓存1010关联的高速缓存控制1008,以与系统1000的其它部分进行通信。互连1010包括芯片上互连,诸如IOSF、AMBA或上面讨论的其它互连,其潜在地实现所描述的公开的一个或多个方面。在一个实施例中,条件分支、间接分支和事件执行逻辑可包括在核1006、1007中。
互连1010提供通信信道到其它组件,诸如与订户身份模块(SIM)卡、引导ROM 1035对接以保持用于由核1006和1007执行的引导代码来初始化和引导SoC 1000的SIM 1030、与外部存储器(例如,DRAM 1060)对接的SDRAM控制器1040、与非易失性存储器(例如,闪速存储器1065)对接的闪速存储器控制器1045、与外设对接的外设控制1050(例如,串行外设接口)、显示和接收输入(例如,触摸使能输入)的视频接口1025和视频编解码器1020、执行图形相关的计算的GPU 1015等。这些接口中的任何接口可以结合本文所述的公开的方面。此外,系统1000示出用于通信的外设,诸如蓝牙模块1070、3G调制解调器1075、GPS 1080和Wi-Fi 1085。
现在参考图11,示出了根据本发明的实施例的系统1100的框图。如图11中所示的,多处理器系统1100是点对点互连系统,并且包括经由点对点互连1150耦合的第一处理器1170和第二处理器1180。处理器1170和1180中的每个可以是如本文描述的计算系统的处理器的某个版本。在一个实施例中,监视处理装置的性能以管理非精确事件的处理器1170、1180以监视处理装置的性能以管理非精确事件。
虽然示出两个处理器1170、1180,但要理解,本公开的范围不那样限制。在其它实施例中,在给定处理器中可存在一个或多个附加处理器。
分别示出包括集成存储器控制器单元1172和1182的处理器1170和1180。处理器1170还包括点对点(P-P)接口1176和1178作为其总线控制器单元的部分;类似地,第二处理器1180包括P-P接口1186和1188。处理器1170、1180可经由点对点(P-P)接口1150使用P-P接口电路1178、1188交换信息。如图11中所示的,IMC 1172和1182将处理器耦合到相应存储器,即存储器1132和存储器1134,其可以是本地附连到相应处理器的主存储器的部分。
处理器1170、1180可各自经由独立P-P接口1152、1154使用点对点接口电路1176、1194、1186、1198与芯片集1190交换信息。芯片集1190还可经由高性能图形接口1139与高性能图形电路1138交换信息。
共享高速缓存(未示出)可被包括在任一处理器中或两个处理器外部,仍经由P-P互连与处理器连接,使得任一或两个处理器的本地高速缓存信息可被存储在共享高速缓存中,如果处理器被置于低功率模式中的话。
芯片集1190可经由接口1116耦合到第一总线1116。在一个实施例中,第一总线1116可以是外设组件互连(PCI)总线,或诸如PCI高速总线的总线,或另一个第三代I/O互连总线,尽管本公开的范围不这样限制。
如图11中所示的,各种I/O装置1114,连同将第一总线1116耦合到第二总线1120的总线桥1118,可耦合到第一总线1116。在一个实施例中,第二总线1120可以是低引脚计数(LPC)总线。在一个实施例中,各种装置可耦合到第二总线1120,例如包括键盘和/或鼠标1122、通信装置1127和存储单元1128,诸如盘驱动器或可包括指令/代码和数据1130的其它大容量存储装置。此外,音频I/O 1124可耦合到第二总线1120。注意到,其它架构是可能的。例如,替代图11的点对点架构,系统可实现多点总线或其它此类架构。
现在参考图12,示出了根据本发明的实施例的系统1200的框图。图12示出处理器1270、1280。在一个实施例中,处理器1270、1280监视处理装置的性能以管理非精确事件。此外,处理器1270、1280可分别包括集成存储器和I/O控制逻辑(“CL”)1272和1282,并分别经由点对点(P-P)接口1278和1288之间的点对点互连1250彼此互通信。如所示的,处理器1270、1280各自经由点对点互连1252和1254通过相应的P-P接口1276至1294和1286至1298与芯片集1290进行通信。对于至少一个实施例,CL 1272、1282可以包括集成存储器控制器单元。CL 1272、1282可以包括I/O控制逻辑。如所描绘的,耦合到CL 1272、1282和I/O装置1214的存储器1232、1234也耦合到控制逻辑1272、1282。遗留I/O装置1215经由接口1296耦合到芯片集1290。
图13示出平板计算装置、智能手机或其它移动装置(其中可以使用触摸屏接口连接器)的实施例的框图1300。处理器1310可以监视处理装置的性能以管理非精确事件。此外,处理器1310执行主处理操作。音频子系统1320表示与向计算装置提供音频功能关联的硬件(例如音频硬件和音频电路)和软件(例如,驱动器、编解码器)组件。在一个实施例中,用户通过提供由处理器1310接收和处理的音频命令来与平板计算装置或智能手机交互。
显示子系统1332表示为用户提供视觉和/或触觉显示以与平板计算装置或智能手机交互的硬件(例如,显示装置)和软件(例如,驱动器)组件。显示子系统1330包括显示接口1332,所述显示接口1332包括用于向用户提供显示的具体屏幕或硬件装置。在一个实施例中,显示子系统1330包括向用户提供输出和输入两者的触摸屏装置。
I/O控制器1340表示与和用户交互相关的硬件装置和软件组件。I/O控制器1340可以操作来管理作为显示子系统1330和/或音频子系统1320的部分的硬件。此外,I/O控制器1340示出用于连接到平板计算装置或智能手机(用户可通过其交互)的附加装置的连接点。在一个实施例中,I/O控制器1340管理诸如加速度计、照相机、光传感器或其它环境传感器或可包括在平板计算装置或智能手机中的其它硬件的装置。输入可以是直接用户交互的部分,以及向平板计算装置或智能手机提供环境输入。
在一个实施例中,平板计算装置或智能手机包括管理电池功率使用、电池充电以及与功率节省操作相关的特征的功率管理1350。存储器子系统1360包括用于在平板计算装置或智能手机中存储信息的存储器装置。连接性1370包括到平板计算装置或智能手机的硬件装置(例如,无线和/或有线连接器和通信硬件)和软件组件(例如,驱动器、协议栈)以与外部装置通信。蜂窝连接性1372可以包括例如诸如GSM(全球移动通信系统)、CDMA(码分多址)、TDM(时分复用)或其它蜂窝服务标准)的无线载波。无线连接性1374可以包括例如不是蜂窝的活动,例如个域网(例如蓝牙)、局域网(例如WiFi)和/或广域网(例如WiMax),或者其它无线通信。
外设连接1380包括硬件接口和连接器,以及使外设连接作为到其它计算装置的外设装置(“至”1382)的软件组件(例如,驱动器、协议栈),以及具有连接到平板计算装置或智能手机(包括例如与其它计算装置连接的“接合(docking)”连接器)的外设装置(例如“从”1384)。外设连接1380包括基于标准的或普通的连接器,例如通用串行总线(USB)连接器、包括MiniDisplayPort(MDP)、高清多媒体接口(HDMI)、火线等的DisplayPort。
图14示出采用计算系统1400的示例形式的机器的图解表示,在所述计算系统1400内可以执行用于使机器执行本文所讨论的任何一个或多个方法论的指令的集合。在备选实施例中,机器可以连接(例如连网)到LAN、内联网、外联网或因特网中的其它机器。机器可以以客户端-服务器网络环境中的服务器或客户端装置的能力来操作或者作为对等(或分布式)网络环境中的对等机器来操作。机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、web装备、服务器、网络路由器、交换机或桥,或者能够执行指令的集合(顺序的或以其它方式)的任何机器,所述指令指定由该机器要采取的动作。此外,虽然仅示出单个机器,但术语“机器”也应被理解成包括独立或联合执行指令集合(或多个集合)以执行本文讨论的任何一种或多种方法论的机器的任何集合。
计算系统1400包括处理装置1402、主存储器1404(例如,只读存储器(ROM)、闪速存储器、动态随机存取存储器(DRAM)(例如同步DRAM(SDRAM)或DRAM(RDRAM)等)、静态存储器1406(例如,闪速存储器、静态随机存取存储器(SRAM)等)以及数据存储装置1418(其经由总线1430彼此通信)。
处理装置1402表示一个或多个通用处理装置,诸如微处理器、中央处理单元等等。更特别地,处理装置可以是复杂指令集计算(CISC)微处理器、精简指令集计算机(RISC)微处理器、超长指令字(VLIW)微处理器或实现其它指令集的处理器,或者实现指令集的组合的处理器。处理装置1402也可以是诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等等的一个或多个专用处理装置。在一个实施例中,处理装置1402可以包括一个或多个处理核。处理装置1402配置成执行处理逻辑1426以用于执行本文讨论的操作。在一个实施例中,处理装置1402与实现NPEBS模块106的就图1所描述的计算机系统100和200相同。备选地,计算系统1400可以包括如本文所描述的其它组件。
计算系统1400还可以包括可通信地耦合到网络1420的网络接口装置1408。计算系统1400还可以包括视频显示单元1410(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入装置1412(例如键盘)、光标控制装置1414(例如鼠标)、信号生成装置1416(例如扬声器)或其它外设装置。此外,计算系统1400可以包括图形处理单元1422、视频处理单元1428和音频处理单元1432。在另一个实施例中,计算系统1400可以包括芯片集(未示出),其指的是被设计成与处理装置1402一起工作并且控制处理装置1402与外部装置之间的通信的集成电路或芯片的群组。例如,芯片集可以是母板上的芯片的集合,其将处理装置1402链接到超高速装置(诸如主存储器1404和图形控制器),以及将处理装置1402链接到外设的较低速度外设总线,诸如USB、PCI或ISA总线。
数据存储装置1418可以包括计算机可读存储介质1424,在该计算机可读存储介质1424上存储体现本文描述的功能的方法论中的任何一个或多个的软件1426。在由计算系统1400执行软件1426期间,软件1426还可以完全或至少部分地驻留在主存储器1404内作为指令1426和/或驻留在处理装置1402内作为处理逻辑1426;主存储器1404和处理装置1402也构成计算机可读存储媒体。
计算机可读存储介质1424还可以用于利用就图1描述的NPEBS模块106和/或包含调用上面应用的方法的软件库来存储指令1426。虽然计算机可读存储介质1424在示例实施例中示出成是单个介质,但是术语“计算机可读存储介质”应当被理解成包括存储指令的一个或多个集合的单个介质或多个媒体(例如,集中式或分布式数据库,和/或关联的高速缓存和服务器)。术语“计算机可读存储介质”还应当被理解成包括能够存储、编码或携带用于由机器执行的指令的集合以及使机器执行实施例的方法论中的任何一个或多个的任何介质。相应地,术语“计算机可读存储介质”应被理解成包括但不限于固态存储器以及光和磁媒体。尽管已经相对于有限数量的实施例描述了本发明,但是本领域的技术人员将从中认识到多个修改和变化。意图是所附权利要求覆盖落入本发明的真实精神和范围内的所有此类修改和变化。
以下示例涉及另外的实施例。
示例1是包括存储器和操作地耦合到存储器的处理逻辑的处理系统,处理逻辑用以识别输出位序列的一个或多个常数位,以生成输出位序列的多个可变位并产生包括识别的常数位和生成的多个可变位的输出位序列。
在示例2中,示例1的主题可以可选地包括,其中在加密模式中生成多个可变位包括使累加器增加整数值。
在示例3中,示例1-2的主题可以可选地包括,其中在解密模式中生成多个可变位包括使累加器减小整数值。
在示例4中,示例1-3的主题可以可选地包括,其中多个可变位包括多个可变位的集合的周期性重复。
在示例5中,示例1-4的主题可以可选地包括,其中输出位序列存储在寄存器中。
示例6是包括存储器和操作地耦合到存储器的处理逻辑的处理系统,处理逻辑包括计数器,其初始化成多个模式之中的第一模式以生成在输出位序列的多个可变位之中的可变位的第一集合;以及加法器电路,其耦合到计数器以生成多个模式之中的第二模式,其中加法器电路的输出利用第二模式来生成输出位序列的多个可变位之中的可变位的第二集合,其中可变位的第二集合不同于可变位的第一集合。
在示例7中,示例6的主题可以可选地包括,其中在加密操作模式中计数器在每个周期中减小整数,其中在解密操作模式中,计数器在每个周期中增加整数。
在示例8中,示例6-7的主题可以可选地包括,其中第一模式是可变位的第一集合的周期性重复,并且第二模式是可变位的第二集合的周期性重复。
在示例9中,示例6-8的主题可以可选地包括,其中输出位序列包括常数位以及生成的多个可变位。
在示例10中,示例6-9的主题可以可选地包括,其中输出位序列包括常数位和生成的多个位。
示例11是一种方法,包括识别输出位序列的一个或多个常数位;生成输出位序列的多个可变位;以及产生包括识别的常数位和生成的多个可变位的输出位序列。
在示例12中,示例11的主题可以可选地包括:在加密模式中生成多个可变位包括使累加器增加整数值。
在示例13中,示例11-12的主题可以可选地包括在解密模式中生成多个可变位包括使累加器减小整数值。
在示例14中,示例11-13的主题可以可选地包括将输出位序列存储在寄存器中。
在示例15中,示例11-14的主题可以可选地包括,其中多个可变位包括多个可变位的集合的周期性重复。
示例16是一种方法,包括:生成输出位序列的多个可变位之中的可变位的第一集合,其中所述生成包括:将计数器初始化成多个模式之中的第一模式;生成多个模式之中的第二模式,其中所述生成包括将加法器电路耦合到计数器;以及利用第二模式来生成输出位序列的多个可变位之中的可变位的第二集合,其中可变位的第二集合不同于可变位的第一集合。
在示例17中,示例16的主题可以可选地包括将输出位序列存储在寄存器中。
在示例18中,示例16-17的主题可以可选地包括,其中在加密操作模式中计数器在每个周期中减小整数,其中在解密操作模式中计数器在每个周期中增加整数。
在示例19中,示例16-18的主题可以可选地包括:其中第一模式是可变位的第一集合的周期性重复,以及第二模式是可变位的第二集合的周期性重复。
在示例20中,示例16-19的主题可以可选地包括,其中输出位序列包括常数位和生成的多个可变位。
尽管已经相对于有限数量的实施例描述了本公开,但是本领域的技术人员将从其中认识到多个修改和变化。意图是所附权利要求覆盖落在本公开的真实精神和范围内的所有此类修改和变化。
设计从创建到模拟到制造可经过各种阶段。表示设计的数据可采用多个方式来表示设计。首先,如在模拟中有用的,硬件可使用硬件描述语言或另一功能描述语言表示。此外,在设计过程的某些阶段,可产生具有逻辑和/或晶体管栅极的电路级模型。此外,大多数设计在某个阶段达到表示硬件模型中的各种装置的物理放置的数据的级别。在其中使用常规半导体制造技术的情况下,表示硬件模型的数据可以是指定在用于产生集成电路的掩模的不同掩模层上各种特征的存在或缺乏的数据。在设计的任何表示中,数据可存储在任何形式的机器可读介质中。存储器或者磁或光存储装置(诸如盘)可以是机器可读介质,以存储经由调制或以其它方式生成以传送信息的光波或电波而传送的此类信息。在传送指示或携带代码或设计的电载波时,就执行电信号的复制、缓冲或重新传送而言,进行新的复制。从而,通信提供商或网络提供商可在有形机器可读介质上至少暂时存储体现本公开的实施例的技术的物品,诸如编码到载波中的信息。
如本文使用的模块指硬件、软件和/或固件的任何组合。作为示例,模块包括与非暂时性介质关联的硬件(诸如微控制器),以存储适于由微控制器执行的代码。因此,在一个实施例中,对模块的参考指硬件,其被具体配置为辨别和/或执行要被保持在非暂时性介质上的代码。此外,在另一个实施例中,模块的使用指包括代码的非暂时性介质,该代码具体地适于由微控制器执行以执行预定操作。并且如可以推断的,在又一个实施例中,术语模块(在此示例中)可以指微控制器和非暂时性介质的组合。经常,示出为单独的模块边界通常变化并潜在地重叠。例如,第一和第二模块可以共享硬件、软件、固件或其组合,同时潜在地保留某一独立的硬件、软件或固件。在一个实施例中,术语逻辑的使用包括诸如晶体管、寄存器或其它硬件(诸如可编程逻辑装置)的硬件。
在一个实施例中,短语“配置成”的使用指布置、放在一起、制造、提供出售、导入和/或设计设备、硬件、逻辑或元件以执行指定或确定的任务。在此示例中,不操作的设备或其元件仍然‘配置成’执行指定的任务,如果其被设计、耦合和/或互连来执行所述指定的任务的话。作为纯粹的说明性示例,逻辑门可以在操作期间提供0或1。但是‘配置成’向时钟提供使能信号的逻辑门不包括可能提供1或0的每一个潜在的逻辑门。相反,逻辑门是采用在操作期间1或0输出要使能时钟的某个方式耦合的逻辑门。再次注意,术语“配置成”的使用不要求操作,而是相反聚焦于设备、硬件和/或元件的潜在状态,其中在潜在状态中,当设备、硬件和/或元件在操作时,设备、硬件和/或元件被设计成执行特定任务。
此外,在一个实施例中,短语“用以”、“能够/能够以”和或“可操作以”的使用指以此类方式设计以使能采用指定的方式使用设备、逻辑、硬件和/或元件的某个设备、逻辑、硬件和/或元件。如上面注意到的,在一个实施例中,用以、能够以或可操作以的使用指设备、逻辑、硬件和/或元件的潜在状态,其中设备、逻辑、硬件和/或元件未正在操作但是以此类方式设计以使能以指定的方式使用设备。
如本文所使用的,值包括数字、状态、逻辑状态或二进制逻辑状态的任何已知表示。经常,逻辑电平、一个或多个逻辑值的使用也被称为1和0,其仅仅表示二进制逻辑状态。例如,1指高逻辑电平,以及0指低逻辑电平。在一个实施例中,诸如晶体管或闪速存储器单元的存储单元可以能够保持单个逻辑值或多个逻辑值。然而,计算机系统中的值的其它表示已被使用。例如,十进制数十也可以表示为二进制值910和十六进制字母A。因此,值包括能够保持在计算机系统中的信息的任何表示。
此外,状态可以通过值或值的部分来表示。作为示例,诸如逻辑1的第一值可以表示默认或初始状态,而诸如逻辑0的第二值可以表示非默认状态。此外,在一个实施例中,术语重置和设置分别指默认和更新值或状态。例如,默认值潜在地包括高逻辑值,即重置,而更新值潜在包括低逻辑值,即设置。注意,可以利用值的任何组合来表示任何数量的状态。
上面阐述的方法、硬件、软件、固件或代码的实施例可以经由存储在机器可访问、机器可读、计算机可访问或计算机可读介质上的由处理元件可执行的代码或指令来实现。非暂时性机器可访问/可读介质包括提供(即,存储和/或传送)采用由机器(诸如计算机或电子系统)可读形式的信息的任何机制。例如,非暂时性机器可访问介质包括诸如静态RAM(SRAM)或动态RAM(DRAM)的随机存取存储器(RAM);ROM;磁或光存储介质;闪速存储器装置;电存储装置;光存储装置;声存储装置;用于保持从暂时性(传播)信号(例如,载波、红外信号、数字信号)接收的信息的其它形式的存储装置;等,其要与可以从其中接收信息的非暂时性介质区分。
用于对逻辑编程以执行本公开的实施例的指令可存储在系统中的存储器(诸如DRAM、高速缓存、闪速存储器或其它存储装置)内。此外,指令可经由网络或通过其它计算机可读媒体的方式来分发。从而,机器可读介质可包括用于存储或传送采用由机器(例如计算机)可读形式的信息的任何机制,但不限于软盘、光盘、压缩盘只读存储器(CD-ROM)和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪速存储器或在通过因特网经由电、光、声或其它形式的传播信号(例如载波、红外信号、数字信号等)传送信息中使用的有形、机器可读存储装置。相应地,计算机可读介质包括适合用于存储或传送采用由机器(例如计算机)可读形式的电子指令或信息的任何类型的有形机器可读介质。
遍及本说明书提及的“一个实施例”或“实施例”意味着联系实施例描述的特定特征、结构或特性被包括在本公开的至少一个实施例中。从而,遍及本说明书在各种位置出现的短语“在一个实施例中”或“在实施例中”不一定都指相同的实施例。此外,特定特征、结构或特性可以在一个或多个实施例中以任何适合的方式组合。
在前述说明书中,已经参考具体的示范实施例给出了详细的描述。然而,将显而易见的是,可以对其进行各种修改和改变而不背离如在所附权利要求中所阐述的本公开的更宽泛的精神和范围。相应地,说明书和附图被认为采用说明性意义而不是限制性意义。此外,实施例和其它示范语言的前述使用不一定指相同的实施例或相同的示例,但是可以指不同的和相异的实施例以及潜在地相同实施例。

Claims (25)

1.一种处理系统,包括:
存储器;以及
处理逻辑,所述处理逻辑操作地耦合到所述存储器,所述处理逻辑用来:
识别输出位序列的一个或多个常数位,所述输出位序列用于导出密钥,所述密钥用于由所述处理逻辑执行的块暗码的加密操作或解密操作中的至少一个,以应用于由所述处理逻辑经由所述块暗码处理的数据,其中所述一个或多个常数位包括响应于生成所述输出位序列而保持相同的位;
生成所述输出位序列的多个可变位;以及
产生包括所识别的常数位和所生成的多个可变位的所述输出位序列。
2.如权利要求1所述的处理系统,其中在加密模式中生成所述多个可变位包括使累加器增加整数值。
3.如权利要求1所述的处理系统,其中在解密模式中生成所述多个可变位包括使累加器减小整数值。
4.如权利要求1所述的处理系统,其中所述多个可变位包括所述多个可变位的集合的周期性重复。
5.一种处理系统,包括:
存储器;以及
处理逻辑,所述处理逻辑操作地耦合到所述存储器,所述处理逻辑包括:
识别输出位序列的一个或多个常数位,所述输出位序列用于导出密钥,所述密钥用于由所述处理逻辑执行的块暗码的加密操作或解密操作中的至少一个,以应用于由所述处理逻辑经由所述块暗码处理的数据,其中所述一个或多个常数位包括响应于生成所述输出位序列而保持相同的位;
计数器,所述计数器被初始化成多个模式之中的第一模式,以生成输出位序列的多个可变位之中的可变位的第一集合;以及
加法器电路,所述加法器电路耦合到所述计数器以生成所述多个模式之中的第二模式,其中加法器电路的输出利用所述第二模式以生成所述输出位序列的多个可变位之中的可变位的第二集合,其中可变位的所述第二集合不同于可变位的所述第一集合。
6.如权利要求5所述的处理系统,其中在加密操作模式中所述计数器在每个周期中减小整数,其中在解密操作模式中所述计数器在每个周期中增加整数。
7.如权利要求5所述的处理系统,其中所述第一模式是所述可变位的所述第一集合的周期性重复,并且所述第二模式是所述可变位的所述第二集合的周期性重复。
8.如权利要求5所述的处理系统,其中所述输出位序列包括常数位和所生成的多个可变位。
9.一种片上系统,包括:
存储器;以及
处理器,所述处理器通信地耦合到所述存储器,所述处理器包括:
处理核;以及
硬件加速器,所述硬件加速器通信地耦合到所述处理核,用来:
识别输出位序列的一个或多个常数位,所述输出位序列用于导出密钥,所述密钥用于由处理逻辑执行的块暗码的加密操作或解密操作中的至少一个,以应用于由所述处理逻辑经由所述块暗码处理的数据,其中所述一个或多个常数位包括响应于生成所述输出位序列而保持相同的位;
生成所述输出位序列的多个可变位;以及
产生包括所识别的常数位和所生成的多个可变位的所述输出位序列。
10.根据权利要求9所述的片上系统,其中所述多个可变位包括所述多个可变位的集合的周期性重复。
11.一种片上系统,包括:
存储器;以及
处理器,所述处理器通信地耦合到所述存储器,所述处理器包括:
处理核;以及
硬件加速器,所述硬件加速器通信地耦合到所述处理核,所述处理核包括:
识别输出位序列的一个或多个常数位,所述输出位序列用于导出密钥,所述密钥用于由处理逻辑执行的块暗码的加密操作或解密操作中的至少一个,以应用于由所述处理逻辑经由所述块暗码处理的数据,其中所述一个或多个常数位包括响应于生成所述输出位序列而保持相同的位;
计数器,所述计数器被初始化成多个模式之中的第一模式,以生成输出位序列的多个可变位之中的可变位的第一集合;以及
加法器电路,所述加法器电路耦合到所述计数器以生成所述多个模式之中的第二模式,其中加法器电路的输出利用所述第二模式以生成所述输出位序列的多个可变位之中的可变位的第二集合,其中可变位的所述第二集合不同于可变位的所述第一集合。
12.如权利要求11所述的片上系统,其中,所述输出位序列包括常数位和所生成的多个可变位。
13.一种计算方法,包括:
识别输出位序列的一个或多个常数位,所述输出位序列用于导出密钥,所述密钥用于由处理器执行的块暗码的加密操作或解密操作中的至少一个,以应用于由所述处理器经由所述块暗码处理的数据,其中所述一个或多个常数位包括响应于生成所述输出位序列而保持相同的位;
生成所述输出位序列的多个可变位;以及
产生包括所识别的常数位和所生成的多个可变位的所述输出位序列。
14.如权利要求13所述的方法,其中所述多个可变位包括所述多个可变位的集合的周期性重复。
15.如权利要求13所述的方法,其中在加密模式中生成所述多个可变位包括使累加器增加整数值,并且其中在解密模式中生成所述多个可变位包括使累加器减小整数值。
16.一种计算方法,包括:
生成输出位序列的多个可变位之中的可变位的第一集合,所述输出位序列用于导出密钥,所述密钥用于由处理器执行的块暗码的加密操作或解密操作中的至少一个,以应用于由所述处理器经由所述块暗码处理的数据,其中所述一个或多个常数位包括响应于生成所述输出位序列而保持相同的位,其中所述生成包括将计数器初始化成多个模式之中的第一模式;
生成多个所述模式之中的第二模式,其中所述生成包括将加法器电路耦合到所述计数器;以及
利用所述第二模式以生成所述输出位序列的多个可变位之中的可变位的第二集合,其中可变位的所述第二集合不同于可变位的所述第一集合。
17.如权利要求16所述的方法,其中所述输出位序列包括常数位和所生成的多个可变位。
18.如权利要求16所述的方法,其中在加密操作模式中所述计数器在每个周期中减小整数,其中在解密操作模式中所述计数器在每个周期中增加整数。
19.如权利要求16所述的方法,其中所述第一模式是所述可变位的所述第一集合的周期性重复,并且所述第二模式是所述可变位的所述第二集合的周期性重复。
20.至少一种机器可读介质,包括多个指令,所述多个指令响应于在计算装置上执行而使所述计算装置执行根据权利要求13至15中任一项所述的方法。
21.一种实现用于生成轮常数的SMS4加速处理器的引擎的设备,所述SMS4加速处理器配置成执行权利要求13至15中任一项所述的方法。
22.一种计算设备,包括:用于执行权利要求13至15中任一项所述的方法的部件。
23.至少一种机器可读介质,包括多个指令,所述多个指令响应于在计算装置上执行而使所述计算装置执行根据权利要求16至19中任一项所述的方法。
24.一种实现用于生成轮常数的SMS4加速处理器的引擎的设备,所述SMS4加速处理器配置成执行权利要求16至19中任一项所述的方法。
25.一种计算设备,包括:用于执行权利要求16至19中任一项所述的方法的部件。
CN201680055767.1A 2015-09-24 2016-08-15 具有轮常数生成的sms4加速处理器 Active CN108027866B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/864,227 US10103877B2 (en) 2015-09-24 2015-09-24 SMS4 acceleration processors having round constant generation
US14/864,227 2015-09-24
PCT/US2016/047054 WO2017058374A2 (en) 2015-09-24 2016-08-15 Sms4 acceleration processors having round constant generation

Publications (2)

Publication Number Publication Date
CN108027866A CN108027866A (zh) 2018-05-11
CN108027866B true CN108027866B (zh) 2023-07-25

Family

ID=58409341

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680055767.1A Active CN108027866B (zh) 2015-09-24 2016-08-15 具有轮常数生成的sms4加速处理器

Country Status (4)

Country Link
US (1) US10103877B2 (zh)
CN (1) CN108027866B (zh)
DE (1) DE112016004364T5 (zh)
WO (1) WO2017058374A2 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11057205B2 (en) * 2017-12-05 2021-07-06 Marc Leo Prince Seed key expansion method and its uses

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19733829C2 (de) * 1997-08-05 2000-02-24 Micronas Semiconductor Holding Verfahren zum Verschlüsseln bzw. Entschlüsseln einer Datenfolge
JP3499810B2 (ja) * 2000-03-06 2004-02-23 株式会社東芝 暗号化装置、暗号化方法及び暗号化装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体並びに復号装置、復号方法及び復号装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体
GB0121793D0 (en) * 2001-09-08 2001-10-31 Amphion Semiconductor Ltd An apparatus for generating encryption/decryption keys
WO2006085038A1 (fr) 2005-02-14 2006-08-17 France Telecom Procede systeme et dispositif de generation d'une sequence de donnees pseudo aleatoire
US7702100B2 (en) * 2006-06-20 2010-04-20 Lattice Semiconductor Corporation Key generation for advanced encryption standard (AES) Decryption and the like
US8538015B2 (en) * 2007-03-28 2013-09-17 Intel Corporation Flexible architecture and instruction for advanced encryption standard (AES)
US20100011047A1 (en) * 2008-07-09 2010-01-14 Viasat, Inc. Hardware-Based Cryptographic Accelerator
US8891756B2 (en) * 2008-10-30 2014-11-18 Certicom Corp. Collision-resistant elliptic curve hash functions
US9544133B2 (en) 2009-12-26 2017-01-10 Intel Corporation On-the-fly key generation for encryption and decryption
US9361106B2 (en) 2013-12-27 2016-06-07 Intel Corporation SMS4 acceleration processors, methods, systems, and instructions
KR101516574B1 (ko) 2014-02-21 2015-05-04 한국전자통신연구원 형태보존 암호화를 위한 가변길이 블록암호 장치 및 방법
CN104219043B (zh) * 2014-07-25 2018-03-20 西华师范大学 一种可预置和重构的密钥装置及运行方法

Also Published As

Publication number Publication date
WO2017058374A2 (en) 2017-04-06
DE112016004364T5 (de) 2018-05-30
US10103877B2 (en) 2018-10-16
WO2017058374A3 (en) 2017-05-18
CN108027866A (zh) 2018-05-11
US20170093562A1 (en) 2017-03-30

Similar Documents

Publication Publication Date Title
US10985903B2 (en) Power side-channel attack resistant advanced encryption standard accelerator processor
US20220224510A1 (en) Encryption interface
EP3326107B1 (en) Supporting configurable security levels for memory address ranges
CN106575215B (zh) 处理指令的系统、设备、方法、处理器、介质和电子设备
US10129018B2 (en) Hybrid SM3 and SHA acceleration processors
CN108351786B (zh) 在指令集架构中对数据进行排序并且合并经排序数据
CN109565438B (zh) 混合加密算法的硬件加速器及其系统
CN108027864B (zh) 经双仿射映射的s-盒硬件加速器
US10140458B2 (en) Parallelized authentication encoding
US11507699B2 (en) Processor with private pipeline
US9996708B2 (en) SMS4 acceleration processors having encryption and decryption mapped on a same hardware
US9473296B2 (en) Instruction and logic for a simon block cipher
CN108027866B (zh) 具有轮常数生成的sms4加速处理器
US9716646B2 (en) Using thresholds to gate timing packet generation in a tracing system

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