Microprocessor that fetches and decrypts encrypted instructions in same time as plain text instructions
    1.
    发明授权
    Microprocessor that fetches and decrypts encrypted instructions in same time as plain text instructions 有权
    微处理器在纯文本指令的同时提取和解密加密的指令

    公开(公告)号:US08671285B2

    公开(公告)日:2014-03-11

    申请号:US13091487

    申请日:2011-04-21

    IPC分类号: G06F21/00

    摘要: A fetch unit (a) fetches a block of instruction data from an instruction cache of the microprocessor; (b) performs an XOR on the block with a data entity to generate plain text instruction data; and (c) provides the plain text instruction data to an instruction decode unit. In a first instance the block comprises encrypted instruction data and the data entity is a decryption key. In a second instance the block comprises unencrypted instruction data and the data entity is Boolean zeroes. The time required to perform (a), (b), and (c) is the same in the first and second instances regardless of whether the block is encrypted or unencrypted. A decryption key generator selects first and second keys from a plurality of keys, rotates the first key, and adds/subtracts the rotated first key to/from the second key, all based on portions of the fetch address, to generate the decryption key.

    摘要翻译: 提取单元(a)从微处理器的指令高速缓冲存储器获取指令数据块; (b)使用数据实体在块上执行异或以产生明文指令数据; 和(c)将明文指令数据提供给指令译码单元。 在第一种情况下,块包括加密指令数据,数据实体是解密密钥。 在第二种情况下,该块包括未加密的指令数据,并且数据实体为布尔零。 执行(a),(b)和(c)所需的时间在第一和第二实例中是相同的,而不管该块是加密还是未加密。 解密密钥生成器从多个密钥中选择第一和第二密钥,旋转第一密钥,并且基于获取地址的部分,将旋转后的第一密钥加到/从第二密钥中加减乘以产生解密密钥。

    MICROPROCESSOR THAT FETCHES AND DECRYPTS ENCRYPTED INSTRUCTIONS IN SAME TIME AS PLAIN TEXT INSTRUCTIONS
    3.
    发明申请
    MICROPROCESSOR THAT FETCHES AND DECRYPTS ENCRYPTED INSTRUCTIONS IN SAME TIME AS PLAIN TEXT INSTRUCTIONS 有权
    微处理器在同一时间内刻录和分解加密指令作为平面文本指令

    公开(公告)号:US20120096282A1

    公开(公告)日:2012-04-19

    申请号:US13091487

    申请日:2011-04-21

    IPC分类号: G06F21/00 H04L9/00

    摘要: A fetch unit (a) fetches a block of instruction data from an instruction cache of the microprocessor; (b) performs an XOR on the block with a data entity to generate plain text instruction data; and (c) provides the plain text instruction data to an instruction decode unit. In a first instance the block comprises encrypted instruction data and the data entity is a decryption key. In a second instance the block comprises unencrypted instruction data and the data entity is Boolean zeroes. The time required to perform (a), (b), and (c) is the same in the first and second instances regardless of whether the block is encrypted or unencrypted. A decryption key generator selects first and second keys from a plurality of keys, rotates the first key, and adds/subtracts the rotated first key to/from the second key, all based on portions of the fetch address, to generate the decryption key.

    摘要翻译: 提取单元(a)从微处理器的指令高速缓冲存储器获取指令数据块; (b)使用数据实体在块上执行异或以产生明文指令数据; 和(c)将明文指令数据提供给指令译码单元。 在第一种情况下,块包括加密指令数据,数据实体是解密密钥。 在第二种情况下,该块包括未加密的指令数据,并且数据实体为布尔零。 执行(a),(b)和(c)所需的时间在第一和第二实例中是相同的,而不管该块是加密还是未加密。 解密密钥生成器从多个密钥中选择第一和第二密钥,旋转第一密钥,并且基于获取地址的部分,将旋转后的第一密钥加到/从第二密钥中加减乘以产生解密密钥。

    BRANCH TARGET ADDRESS CACHE FOR PREDICTING INSTRUCTION DECRYPTION KEYS IN A MICROPROCESSOR THAT FETCHES AND DECRYPTS ENCRYPTED INSTRUCTIONS
    4.
    发明申请
    BRANCH TARGET ADDRESS CACHE FOR PREDICTING INSTRUCTION DECRYPTION KEYS IN A MICROPROCESSOR THAT FETCHES AND DECRYPTS ENCRYPTED INSTRUCTIONS 有权
    分支目标地址缓存指令在微处理器中进行预测指令,其中的指令和DECACKPTS加密指令

    公开(公告)号:US20110296206A1

    公开(公告)日:2011-12-01

    申请号:US13091828

    申请日:2011-04-21

    IPC分类号: G06F21/00

    摘要: A branch target address cache (BTAC) caches history information associated with branch and switch key instructions previously executed by a microprocessor. The history information includes a target address and an identifier (index into a register file) for identifying key values associated with each of the previous branch and switch key instructions. A fetch unit receives from the BTAC a prediction that the fetch unit fetched a previous branch and switch key instruction and receives the target address and identifier associated with the fetched branch and switch key instruction. The fetch unit also fetches encrypted instruction data at the associated target address and decrypts (via XOR) the fetched encrypted instruction data based on the key values identified by the identifier, in response to receiving the prediction. If the BTAC predicts correctly, a pipeline flush normally associated with the branch and switch key instruction is avoided.

    摘要翻译: 分支目标地址缓存(BTAC)缓存与微处理器先前执行的分支和切换密钥指令相关联的历史信息。 历史信息包括用于识别与先前分支和切换键指令中的每一个相关联的键值的目标地址和标识符(到寄存器文件的索引)。 获取单元从BTAC接收预取,该预测获取单元获取先前的分支并切换密钥指令,并接收与获取的分支和切换键指令相关联的目标地址和标识符。 提取单元还在相关联的目标地址处获取加密指令数据,并且响应于接收到预测,基于由标识符标识的键值来解密(通过XOR)获取的加密指令数据。 如果BTAC正确预测,则避免通常与分支和切换键指令相关联的流水线清除。

    MICROPROCESSOR THAT FACILITATES TASK SWITCHING BETWEEN MULTIPLE ENCRYPTED PROGRAMS HAVING DIFFERENT ASSOCIATED DECRYPTION KEY VALUES
    5.
    发明申请
    MICROPROCESSOR THAT FACILITATES TASK SWITCHING BETWEEN MULTIPLE ENCRYPTED PROGRAMS HAVING DIFFERENT ASSOCIATED DECRYPTION KEY VALUES 有权
    微处理器在多个加密程序之间进行任务切换,具有不同的相关分解键值

    公开(公告)号:US20110296205A1

    公开(公告)日:2011-12-01

    申请号:US13091785

    申请日:2011-04-21

    IPC分类号: G06F12/14

    摘要: A microprocessor includes a storage element having a plurality of locations each storing decryption key data associated with an encrypted program. A control register field (may be x86 EFLAGS register reserved field) specifies a storage element location associated with a currently executing encrypted program. The microprocessor restores from memory to the control register a previously saved value of the field in response to executing a return from interrupt instruction. A fetch unit fetches encrypted instructions of the currently executing encrypted program and decrypts them using the decryption key data stored the storage element location specified by the restored field value. A kill bit associated with each storage element location may be employed if the location is clobbered because more encrypted programs are multitasked than available locations in the storage element, in which case an exception is generated to re-load the clobbered decryption key data in response to the return from interrupt instruction.

    摘要翻译: 微处理器包括具有多个位置的存储元件,每个位置存储与加密程序相关联的解密密钥数据。 控制寄存器字段(可以是x86 EFLAGS寄存器保留字段)指定与当前执行的加密程序相关联的存储元件位置。 响应于执行中断指令的返回,微处理器从存储器恢复到控制寄存器先前保存的字段值。 提取单元获取当前执行的加密程序的加密指令,并使用存储由恢复的字段值指定的存储单元位置的解密密钥数据进行解密。 如果位置被破坏,则可以采用与每个存储元件位置相关联的杀死位,因为更多的加密程序比存储元件中的可用位置多任务,在这种情况下生成异常以重新加载被破译的解密密钥数据,以响应于 从中断指令返回。

    Microprocessor that facilitates task switching between multiple encrypted programs having different associated decryption key values
    6.
    发明授权
    Microprocessor that facilitates task switching between multiple encrypted programs having different associated decryption key values 有权
    微处理器,有助于在具有不同关联的解密密钥值的多个加密程序之间进行任务切换

    公开(公告)号:US08719589B2

    公开(公告)日:2014-05-06

    申请号:US13091785

    申请日:2011-04-21

    IPC分类号: G06F21/00

    摘要: A microprocessor includes a storage element having a plurality of locations each storing decryption key data associated with an encrypted program. A control register field (may be x86 EFLAGS register reserved field) specifies a storage element location associated with a currently executing encrypted program. The microprocessor restores from memory to the control register a previously saved value of the field in response to executing a return from interrupt instruction. A fetch unit fetches encrypted instructions of the currently executing encrypted program and decrypts them using the decryption key data stored the storage element location specified by the restored field value. A kill bit associated with each storage element location may be employed if the location is clobbered because more encrypted programs are multitasked than available locations in the storage element, in which case an exception is generated to re-load the clobbered decryption key data in response to the return from interrupt instruction.

    摘要翻译: 微处理器包括具有多个位置的存储元件,每个位置存储与加密程序相关联的解密密钥数据。 控制寄存器字段(可以是x86 EFLAGS寄存器保留字段)指定与当前执行的加密程序相关联的存储元件位置。 响应于执行中断指令的返回,微处理器从存储器恢复到控制寄存器先前保存的字段值。 提取单元获取当前执行的加密程序的加密指令,并使用存储由恢复的字段值指定的存储单元位置的解密密钥数据进行解密。 如果位置被破坏,则可以采用与每个存储元件位置相关联的杀死位,因为更多的加密程序比存储元件中的可用位置多任务,在这种情况下生成异常以重新加载被破译的解密密钥数据,以响应于 从中断指令返回。

    Microprocessor that facilitates task switching between encrypted and unencrypted programs
    7.
    发明授权
    Microprocessor that facilitates task switching between encrypted and unencrypted programs 有权
    微处理器,有助于加密和未加密程序之间的任务切换

    公开(公告)号:US08683225B2

    公开(公告)日:2014-03-25

    申请号:US13091698

    申请日:2011-04-21

    IPC分类号: G06F21/00

    摘要: A microprocessor includes an architected register having a bit (may be x86 EFLAGS register reserved bit) set by the microprocessor. A fetch unit fetches encrypted instructions from an instruction cache and decrypts them (via XOR) prior to executing them, in response to the microprocessor setting the bit. The microprocessor saves the bit value to a stack in memory and then clears the bit in response to receiving an interrupt. The fetch unit fetches unencrypted instructions from the instruction cache and executes them without decrypting them after the microprocessor clears the bit. The microprocessor restores the saved value from the stack in memory to the bit in the architected register (and in one embodiment, also restores decryption key values) in response to executing a return from interrupt instruction. The fetch unit resumes fetching and decrypting the encrypted instructions in response to determining that the restored value of the bit is set.

    摘要翻译: 微处理器包括由微处理器设置的位(可以是x86 EFLAGS寄存器保留位)的架构化寄存器。 读取单元从指令高速缓存中获取加密指令,并在执行它们之前对其进行解密(通过XOR),以响应微处理器设置该位。 微处理器将位值保存到存储器中的堆栈,然后响应于接收到中断而清除该位。 提取单元从指令高速缓存中提取未加密的指令,并在微处理器清零位之后执行它们而不对其进行解密。 响应于执行中断指令的返回,微处理器将存储器中的保存值从存储器中的位恢复到构造寄存器中的位(并且在一个实施例中,还恢复解密密钥值)。 响应于确定该位的恢复值被设置,获取单元恢复取出和解密加密指令。

    BRANCH AND SWITCH KEY INSTRUCTION IN A MICROPROCESSOR THAT FETCHES AND DECRYPTS ENCRYPTED INSTRUCTIONS
    8.
    发明申请
    BRANCH AND SWITCH KEY INSTRUCTION IN A MICROPROCESSOR THAT FETCHES AND DECRYPTS ENCRYPTED INSTRUCTIONS 有权
    分支和切换微处理器中的关键指令,其中包括加密指令和DECACKPTS加密指令

    公开(公告)号:US20110296203A1

    公开(公告)日:2011-12-01

    申请号:US13091641

    申请日:2011-04-21

    IPC分类号: G06F21/00

    摘要: A microprocessor includes a fetch unit that fetches and decrypts an (atomic) branch and switch key instruction using first decryption key data. If the branch direction is not taken, the fetch unit fetches and decrypts the next sequential instruction after the branch and switch key instruction using the first decryption key data. If the direction is taken, the fetch unit fetches and decrypts a target instruction of the branch and switch key instruction using second decryption key data that is different from the first decryption key data. The instruction points to the decryption key data; alternatively, the microprocessor consults a mapping of target address ranges to decryption key data. An encryption program replaces conventional inter-program-chunk branch instructions with branch and switch key instructions before encrypting the program using information that divides the program into a sequence of chunks each chunk being a sequence of instructions and having distinct associated encryption key data.

    摘要翻译: 微处理器包括提取单元,其使用第一解密密钥数据来提取和解密(原子)分支和切换密钥指令。 如果不采取分支方向,则提取单元使用第一解密密钥数据在分支和切换密钥指令之后取出并解密下一个顺序指令。 如果采取方向,则提取单元使用与第一解密密钥数据不同的第二解密密钥数据来获取并解密分支的目标指令并切换密钥指令。 指令指向解密密钥数据; 或者,微处理器参考目标地址范围到解密密钥数据的映射。 在使用将程序分成每个块作为指令序列并具有不同的相关联的加密密钥数据的块的序列的信息之前,加密程序使用分支和交换密钥指令来代替传统的程序间块分支指令。

    Branch target address cache for predicting instruction decryption keys in a microprocessor that fetches and decrypts encrypted instructions
    9.
    发明授权
    Branch target address cache for predicting instruction decryption keys in a microprocessor that fetches and decrypts encrypted instructions 有权
    分支目标地址缓存,用于预测提取和解密加密指令的微处理器中的指令解密密钥

    公开(公告)号:US08645714B2

    公开(公告)日:2014-02-04

    申请号:US13091828

    申请日:2011-04-21

    IPC分类号: G06F21/00

    摘要: A branch target address cache (BTAC) caches history information associated with branch and switch key instructions previously executed by a microprocessor. The history information includes a target address and an identifier (index into a register file) for identifying key values associated with each of the previous branch and switch key instructions. A fetch unit receives from the BTAC a prediction that the fetch unit fetched a previous branch and switch key instruction and receives the target address and identifier associated with the fetched branch and switch key instruction. The fetch unit also fetches encrypted instruction data at the associated target address and decrypts (via XOR) the fetched encrypted instruction data based on the key values identified by the identifier, in response to receiving the prediction. If the BTAC predicts correctly, a pipeline flush normally associated with the branch and switch key instruction is avoided.

    摘要翻译: 分支目标地址缓存(BTAC)缓存与微处理器先前执行的分支和切换密钥指令相关联的历史信息。 历史信息包括用于识别与先前分支和切换键指令中的每一个相关联的键值的目标地址和标识符(到寄存器文件的索引)。 获取单元从BTAC接收预取,该预测获取单元获取先前的分支并切换密钥指令,并接收与获取的分支和切换键指令相关联的目标地址和标识符。 提取单元还在相关联的目标地址处获取加密指令数据,并且响应于接收到预测,基于由标识符标识的键值来解密(通过XOR)获取的加密指令数据。 如果BTAC正确预测,则避免通常与分支和切换键指令相关联的流水线清除。

    Branch and switch key instruction in a microprocessor that fetches and decrypts encrypted instructions
    10.
    发明授权
    Branch and switch key instruction in a microprocessor that fetches and decrypts encrypted instructions 有权
    在提取和解密加密指令的微处理器中分支和切换密钥指令

    公开(公告)号:US08639945B2

    公开(公告)日:2014-01-28

    申请号:US13091641

    申请日:2011-04-21

    IPC分类号: G06F21/00

    摘要: A microprocessor includes a storage element that stores decryption key data and a fetch unit that fetches and decrypts program instructions using a value of the decryption key data stored in the storage element. The fetch unit fetches an instance of a branch and switch key instruction and decrypts it using a first value of the decryption key data stored in the storage element. If the branch is taken, the microprocessor loads the storage element with a second value of the decryption key data for subsequent use by the fetch unit to decrypt an instruction fetched at a target address specified by the branch and switch key instruction. If the branch is not taken, the microprocessor retains the first value of the decryption key data in the storage element for subsequent use by the fetch unit to decrypt an instruction sequentially following the branch and switch key instruction.

    摘要翻译: 微处理器包括存储解密密钥数据的存储元件和使用存储在存储元件中的解密密钥数据的值来取得和解密程序指令的提取单元。 提取单元获取分支的实例并切换密钥指令,并使用存储在存储元件中的解密密钥数据的第一值进行解密。 如果分支被采取,则微处理器用解密密钥数据的第二值加载存储元件,以便随后由提取单元使用以解密在由分支指定的目标地址处获取的指令和切换键指令。 如果不采取分支,则微处理器将解密密钥数据的第一值保存在存储元件中,以便随后由提取单元使用,以在分支和切换键指令之后顺序地解密指令。