Microprocessor that facilitates task switching between encrypted and unencrypted programs
First Claim
1. A microprocessor, comprising:
- an architected register, having a bit, wherein the microprocessor is configured to set the bit; and
a fetch unit, configured to fetch encrypted instructions from an instruction cache and decrypt them prior to executing them, in response to the microprocessor setting the bit;
wherein the microprocessor is configured to save the value of the bit to a stack in memory and then clear the bit, in response to receiving an interrupt;
wherein the fetch unit is configured to fetch unencrypted instructions from the instruction cache and execute them without decrypting them, after the microprocessor clears the bit;
wherein the microprocessor is configured to restore the saved value from the stack in memory to the bit in the architected register, in response to executing a return from interrupt instruction; and
wherein the fetch unit is configured to resume fetching and decrypting the encrypted instructions, in response to determining that the restored value of the bit is set; and
wherein the architected register further has index bits that specify a location of storage space in the microprocessor for holding decryption keys used by the fetch unit to decrypt the encrypted instructions.
1 Assignment
0 Petitions
Accused Products
Abstract
A microprocessor includes an architected register having a bit. The microprocessor sets the bit. The microprocessor also includes a fetch unit that fetches encrypted instructions from an instruction cache and decrypts them prior to executing them, in response to the microprocessor setting the bit. The microprocessor saves the value of the bit 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, 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.
55 Citations
18 Claims
-
1. A microprocessor, comprising:
-
an architected register, having a bit, wherein the microprocessor is configured to set the bit; and a fetch unit, configured to fetch encrypted instructions from an instruction cache and decrypt them prior to executing them, in response to the microprocessor setting the bit; wherein the microprocessor is configured to save the value of the bit to a stack in memory and then clear the bit, in response to receiving an interrupt; wherein the fetch unit is configured to fetch unencrypted instructions from the instruction cache and execute them without decrypting them, after the microprocessor clears the bit; wherein the microprocessor is configured to restore the saved value from the stack in memory to the bit in the architected register, in response to executing a return from interrupt instruction; and wherein the fetch unit is configured to resume fetching and decrypting the encrypted instructions, in response to determining that the restored value of the bit is set; and wherein the architected register further has index bits that specify a location of storage space in the microprocessor for holding decryption keys used by the fetch unit to decrypt the encrypted instructions. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A method for operating a microprocessor having an instruction cache and an architected register, the method comprising:
-
setting a bit in the architected register and then fetching encrypted instructions from the instruction cache and decrypting them prior to executing them; saving the value of the bit in the architected register and then clearing the bit, in response to receiving an interrupt; fetching unencrypted instructions from the instruction cache and executing them without decrypting them, after said clearing the bit; restoring the saved value to the bit in the architected register, in response to executing a return from interrupt instruction; and resuming said fetching and decrypting and executing the encrypted instructions, in response to determining that the restored value of the bit is set; and wherein the architected register further has index bits that specify a location of storage space in the microprocessor for holding decryption keys used to decrypt the encrypted instructions. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16)
-
-
17. A computer program product encoded in at least one non-transitory computer usable medium for use with a computing device, the computer program product comprising:
-
computer usable program code embodied in said medium, for specifying a microprocessor, the computer usable program code comprising; first program code for specifying an architected register, having a bit, wherein the microprocessor is configured to set the bit; and second program code for specifying a fetch unit, configured to fetch encrypted instructions from an instruction cache and decrypt them prior to executing them, in response to the microprocessor setting the bit; wherein the microprocessor is configured to save the value of the bit to a stack in memory and then clear the bit, in response to receiving an interrupt; wherein the fetch unit is configured to fetch unencrypted instructions from the instruction cache and execute them without decrypting them, after the microprocessor clears the bit; wherein the microprocessor is configured to restore the saved value from the stack in memory to the bit in the architected register, in response to executing a return from interrupt instruction; and wherein the fetch unit is configured to resume fetching and decrypting the encrypted instructions, in response to determining that the restored value of the bit is set; and wherein the architected register further has index bits that specify a location of storage space in the microprocessor for holding decryption keys used by the fetch unit to decrypt the encrypted instructions. - View Dependent Claims (18)
-
Specification