Processors with private pipelines
The private processing pipeline architecture addresses data privacy and compliance issues by performing computations on encrypted data, ensuring secure and efficient processing compliant with GDPR and industry standards, while resisting side-channel attacks.
Patent Information
- Application Number
- JP2020104325
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2019-09-27
- Filing Date
- 2020-06-17
- Publication Date
- 2025-01-17
- Estimated Expiration
- 2040-06-17
AI Technical Summary
Existing computer systems face vulnerabilities in data privacy due to the need to decrypt data for processing, making it susceptible to side-channel attacks and exposing cryptographic keys, while also failing to comply with regulations like GDPR and industry standards for data encryption.
A private processing pipeline architecture that maintains encrypted data throughout its lifecycle, using masked functional units to perform computations on encrypted data, ensuring compliance with encryption standards and resistance to side-channel attacks.
Guarantees data privacy by keeping data encrypted during processing, resisting side-channel attacks, and complying with regulatory and industry standards, while maintaining computational efficiency and flexibility.
Smart Images

Figure 0007615549000027 
Figure 0007615549000028 
Figure 0007615549000029
Abstract
Description
[Technical field]
[0001] The present disclosure relates generally to computer technology, and more particularly to on-die signal termination in multi-chip packages. [Background technology]
[0002] Various regulations (e.g., the General Data Protection Regulation (GDPR)) require that data within computer systems be encrypted both at rest (e.g., by performing disk encryption) and at run-time (e.g., by performing main memory encryption or chip-to-chip encryption). Additionally, industry standards require the use of standard ciphers and encryption modes for data encryption at rest (e.g., AES-XTS) and at run-time (e.g., AES-GCM). [Brief description of the drawings]
[0003] [Figure 1] 1 illustrates a schematic diagram of an exemplary private processing pipeline architecture implemented in accordance with one or more aspects of the present disclosure.
[0004] [Diagram 2] 1 illustrates generally an exemplary implementation of a private processing pipeline architecture for integer computations performed within the Galois Field GF(2n).
[0005] [Diagram 3] 1 illustrates a flow diagram of an example method by which a masked multiplication operation is performed by a functional unit operating in accordance with one or more aspects of the present disclosure.
[0006] [Figure 4] 1 illustrates a flow diagram of an exemplary method by which a masked addition operation is performed by a functional unit operating in accordance with one or more aspects of the present disclosure.
[0007] [Diagram 5]1 illustrates a flow diagram of an example method in which a masked lookup table is implemented by functional units operating in accordance with one or more aspects of the present disclosure.
[0008] [Figure 6] 1 illustrates a flow diagram of an example method of a masked comparison operation performed by a functional unit operating in accordance with one or more aspects of the present disclosure.
[0009] [Figure 7] 1 illustrates a flow diagram of an example method by which computations are performed by a private processing pipeline operating in accordance with one or more aspects of the present disclosure.
[0010] [Figure 8A] FIG. 1 is a block diagram illustrating the micro-architecture of an example processor incorporating a private processing pipeline that operates in accordance with one or more aspects of the present disclosure.
[0011] [Figure 8B] FIG. 8B is a block diagram illustrating an in-order pipeline and register renaming stage, an out-of-order issue / execution pipeline, implemented by the example processor of FIG. 8A.
[0012] [Figure 8C] FIG. 2 is a block diagram illustrating the micro-architecture of another example processor incorporating a private processing pipeline that operates in accordance with one or more aspects of the present disclosure.
[0013] [Figure 9] FIG. 1 is a block diagram of a multi-processor system incorporating a private processing pipeline that operates in accordance with one or more aspects of the present disclosure.
[0014] [Figure 10] FIG. 2 is a block diagram of another multi-processor system incorporating a private processing pipeline operating in accordance with one or more aspects of the present disclosure.
[0015] [Figure 11] FIG. 1 is a block diagram of an example system-on-chip (SoC) including one or more cores incorporating a private processing pipeline that operates in accordance with one or more aspects of the present disclosure.
[0016] [Figure 12] FIG. 1 is a block diagram of another example system-on-chip (SoC) including one or more cores incorporating a private processing pipeline that operates in accordance with one or more aspects of the present disclosure.
[0017] [Figure 13] 1 illustrates a diagrammatic representation of a machine in the example form of a computing system having an instruction set therein that causes the machine to implement a private processing pipeline that operates in accordance with one or more aspects of the present disclosure. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0018] Various regulations (e.g., the General Data Protection Regulation (GDPR)) require that data within computer systems be encrypted both at rest (e.g., by performing disk encryption) and at run-time (e.g., by performing main memory encryption or chip-to-chip encryption). Additionally, industry standards require the use of standard ciphers and encryption modes for data encryption at rest (e.g., AES-XTS) and at run-time (e.g., AES-GCM).
[0019] Thus, data to be processed by a computer is stored in encrypted form. Before computer processing can occur, the data needs to be retrieved from the disk, decrypted and re-encrypted and put into main memory. The data then needs to be retrieved from the main memory, decrypted and stored in the processor's cache memory. Thus, the data in the cache memory appears in clear (unencrypted) form so the processor can fetch the data, process it and store the results in the cache memory. The data from the cache memory is then encrypted and put into main memory, and then re-encrypted and put into disk.
[0020] The procedure described above is vulnerable to several data privacy risks. Data present in the cache in clear (unencrypted) form can be leaked by copying, snooping or side-channel analysis. Moreover, side-channel analysis can be used to reconstruct the encryption key protecting the encrypted data. "Side-channel analysis" in this specification refers to a method of deriving one or more protected information items from specific aspects of the physical implementation and / or operation of a target data processing device by measuring the values of one or more physical parameters related to the operation of the target data processing device, such as the power consumption by a specific circuit, the value of heat or electromagnetic waves emitted by the target data processing device, etc. To provide data privacy, a computer system needs to be capable of computing on encrypted data.
[0021] Aspects of the present disclosure overcome the above-noted shortcomings by providing a system that is capable of computing on encrypted data while complying with industry-standard cryptographic practices and ensures compliance with relevant regulations and industry standards. In particular, the private processing pipeline described herein ensures that the data is encrypted at every stage of its life (even during computing on the functional units). Thus, even a very powerful attacker who controls most of the authorized levels, except for the level that has control over key management, cannot read the data. The private processing pipeline described herein further ensures that the data follows standard practices for storage encryption (e.g., using an appropriate mode of AES) when stored in main memory, thus enabling legacy compatibility and extensibility. The private processing pipeline described herein is resistant to first-order side-channel attacks. In some implementations, protection against higher-order side-channel attacks may also be implemented. Furthermore, the implementation of the functional units (for example in GF(2^n)) may exhibit constant time, thus the data cannot be obtained via timing side-channel attacks.
[0022] The exemplary private processing pipelines described herein may be used to combine multiple functional units in a domain-specific private data path (e.g., to perform integer and fixed-point calculations such as multiply and add, multiply and subtract, compare (sign), etc. In particular, the systems and methods described herein may be used to perform training and inference stages of various artificial intelligence (AI)-based solvers such as, for example, trainable classifiers, artificial neural networks, etc.
[0023] Thus, the private pipeline architecture described herein ensures data privacy and is resistant to at least first order side channel attacks. Moreover, the private pipeline architecture described herein is more efficient in terms of computation time and hardware footprint than various prior art techniques for providing data privacy and security.
[0024] 1 illustrates a schematic diagram of an exemplary private processing pipeline architecture implemented according to one or more aspects of the present disclosure. The private processing pipeline may be implemented as a standalone pipeline or may augment a conventional microprocessor's pipeline by adding a functional unit capable of computing on encrypted data, the encrypted data being encrypted with a standardized block cipher processing mode such as AES.
[0025] In the following description, the term "masked process" refers to a masked implementation of a block cipher E that takes as its input a message m and a key k, and produces a ciphertext c = E(m,k). A decryption procedure of the same block cipher recovers m = D(c,k). A masked implementation converts the masked input m' = m + m a where + is an XOR or arithmetic operation, and an input mask m a It takes as input a random number and a key k. The masked implementation returns the masked ciphertext c'=c+m c and the output mask m a The ciphertext may be removed by reversing the masking process. Thus, (c',m c ) = maskedE(m',m a Similarly, (m',m a ) = maskedD(c',m c ,k).
[0026] As shown generally in Figure 1, the private processing pipeline 100 includes a masked decryption unit 110, one or more masked functional units 120, and a masked encryption unit 130. The masked decryption unit 110 performs a masked decryption process to convert input data (which may be encrypted, for example, by AES-XTS or another standard processing mode) into masked decrypted data (e.g., protected by an arithmetic or Boolean mask), and then provides the masked decrypted data to an input of the masked functional unit 120. The masked decryption process uses a masked encryption key, so that the encryption key is never visible in the clear in memory or on the communication bus, thus ensuring data privacy.
[0027] Masked functional units 120 may perform various arithmetic operations (e.g., multiplication, addition, and / or comparison) on masked data, so that the data is never seen in the clear in memory or on a communication bus. Furthermore, updating the mask with each operation within the functional unit ensures side-channel resistance of masked functional units 120.
[0028] In various implementations, masked functional unit 120 may represent a broad functional unit that performs computer operations on encrypted data, provided that appropriate conversions are made between the encryption types implemented by masked functional unit 120 and other components of a computing system that uses processing pipeline 100. Conversions may be performed by optional mask / encrypt conversion units 140 and 150.
[0029] The masked output of masked functional unit 120 is provided to masked encryption unit 130, which performs a masked encryption process that converts the output of masked functional unit 120 into an encrypted result. Because the masked encryption process uses a masked encryption key, the encryption key is never seen in the clear in memory or on the communication bus, thus ensuring data privacy.
[0030] The private processing pipeline 100 may further include a cryptographic key manager 160 and a random number generator 170. The cryptographic key manager 160 may be used to securely provide private cryptographic keys for encryption and decryption operations. The random number generator 170 is for generating cryptographic masks for the masking operations.
[0031] Thus, the disclosed private processing pipeline architecture ensures that at any point between loading encrypted data into private processing pipeline 100 from the memory or other component of a computing system, performing computational processing on the data, and outputting the encrypted data to the memory or other component of the computing system using private processing pipeline 100, the data is in the clear and never exposed.
[0032] It should be noted that Figure 1 is illustrative only and should not be construed as limiting. In some implementations, the mask operations performed by the units of the private pipeline 100 may be replaced with other cryptographic operations. The components shown may be configured in various ways, and some examples may include more or fewer components than those shown.
[0033] Figure 2 shows the Galois field GF(2 n2 illustrates an exemplary implementation of the private processing pipeline architecture 100 of FIG. 1 for integer computations performed within a mask generator 270. As illustrated diagrammatically in FIG. 2, the private processing pipeline 200 includes two masked decryption units 210A-210B, a masked functional unit 220 and a masked encryption unit 230. The masked decryption units 210A-210B perform a masked decryption operation that converts a respective encrypted input Enc(a) and Enc(b) into a masked output. In particular, the masked decryption unit 210A performs a masked decryption operation (e.g., a masked AES decryption operation) on a combination of the received encrypted input Enc(a) and the mask m′ generated by the mask generator 270, and generates a masked decryption output m. a and a+m a Similarly, the masked decryption unit 210B performs a masked decryption process (e.g., a masked AES decryption process) on the combination of the received encrypted input Enc(b) and the mask m′ generated by the mask generator 270, and generates a masked decryption output m b and a+m b Generate the enriched plus sign in Figure 2.
number
[0034] The outputs of the masked decoding units 210A-210B are provided to a masked functional unit 220, which performs one or more arithmetic operations (e.g., addition, multiplication, or a combination thereof) on its masked inputs to produce a masked output m c and c+m cThe masked output of masked functional unit 220 is provided to masked encryption unit 230, which performs a masked encryption operation (e.g., a masked AES encryption operation) on its input to produce an encrypted masked output Enc(c)+m o Then, Enc(c)+m o is the mask value m o An exclusive-or operation with is performed to unmask it, so that the output of the private processing pipeline 200 is represented as Enc(c), which is the encrypted result of the arithmetic operation performed by the masked functional unit 220.
[0035] The encryption keys for the masked decryption and masked encryption operations are provided by the encryption key manager 260. Note that FIG. 2 is illustrative only and should not be construed as limiting. In some implementations, the private processing pipeline 200 may be generalized to arithmetic calculations outside the Galois field. Additionally, various other implementations of the private processing pipeline architecture 100 of FIG. 1 may be used for direct calculations or lookup tables, as will be described in more detail below. The components shown may be configured in various ways, and some examples may include more or fewer components than those shown.
[0036] As noted above, the functional units 120 of Figure 1 may perform one or more arithmetic operations (e.g., addition, multiplication, or a combination thereof) on masked inputs to generate masked outputs. In particular, the functional units may perform masked multiplication operations, such as those illustrated generally in Figure 3.
[0037] 3 illustrates a flow diagram of an exemplary method in which a masked multiplication operation is performed by a functional unit operating according to one or more aspects of the present disclosure. Method 300 and / or each of its individual functions, routines, subroutines or operations may be performed by one or more hardware modules.
[0038] Let c=a×b denote a multiplication operation with all operands and outputs clear, and a', b', c' denote its corresponding masked inputs and masked outputs (e.g., by applying a Boolean mask), i.e., a'=a+m a、 b'=b+m b and c'=c+m c where m a、 m b and m c Assume that a′=a+m is a random integer that masks its input and its output, respectively. A functional unit that executes the method 300 has a masked input a′=a+m a and b'=b+m b In addition, the input mask m a and m b takes c', performs a masked multiplication operation, and produces a masked output c'=c+m c and the output mask m c Return.
[0039] At block 310, the functional unit generates an output mask m c Generate a random integer to be used as
number
[0040] In block 320, the functional unit applies a second mask m to the first masked input a′. b Calculate a first share d1 of the intermediate result D as the product of multiplication by
number
[0041] At block 330, the functional unit applies the first mask m to the second masked input b′. b Calculate a second share d2 of the intermediate result D as the product of multiplication by
number
[0042] At block 340, the functional unit generates a first mask m a The second mask m b Calculate a third share d3 of the intermediate result D as the product of multiplication by
number
[0043] At block 350, the functional unit computes an intermediate result D as the sum of the three shares.
number
[0044] At block 360, the functional unit computes a masked sum c' as the product of the first masked input a' multiplied by the second masked input b'.
number
number
[0045] At block 370, the functional unit applies the output mask m to the computed masked output c'. c of Add do.
number
number
[0046] At block 380, the functional unit adds the intermediate result D and the computed masked output c'.
number
number
[0047] At block 390, the functional unit calculates the masked output c′ and the output mask m c and the method ends.
[0048] As noted above, the functional units perform one or more arithmetic operations (e.g., addition, multiplication, or a combination thereof) on masked inputs to generate masked outputs. In particular, the functional units may perform a masked addition operation, such as that illustrated generally in FIG.
[0049] 4 illustrates a flow diagram of an exemplary method in which a masked addition operation is performed by a functional unit operating according to one or more aspects of the present disclosure. The method 400 and / or each of the individual functions, routines, subroutines or operations may be performed by one or more hardware modules.
[0050] Let c=a+b denote an addition operation with all operands and outputs clear, and a', b', and c' denote their corresponding masked inputs and masked outputs (e.g., by applying a Boolean mask), i.e., a'=a+m a、 b'=b+m b and c'=c+m c where m a、 m b and m c Assume that a′=a+m is a random integer that masks its input and its output, respectively. A functional unit that executes the method 400 has a masked input a′=a+m a and b'=b+mb In addition, the input mask m a and m b takes c', performs a masked addition operation, and produces a masked output c'=c+m c and the output mask m c Return.
[0051] At block 410, the functional unit generates an output mask m c Generate a random integer to be used as
number
[0052] At block 420, the functional unit receives two input masks m a and m b Calculate an intermediate result D as the sum of
number
[0053] At block 430, the functional unit computes a masked result c' as the sum of the two masked inputs a' and b'.
number
number
[0054] At block 440, the functional unit applies a mask c' to the computation result c'.
number
number
[0055] At block 450, the functional unit adds the intermediate result D and the computation result c'.
number
number
[0056] At block 460, the functional unit generates the masked result c′ and the mask m c and the method ends.
[0057] 5 illustrates a flow diagram of an example method in which a masked lookup table is implemented by functional units operating according to one or more aspects of the present disclosure. Method 500 and / or each of its individual functions, routines, subroutines or operations may be performed by one or more hardware modules.
[0058] Let T denote a lookup table that returns an element c identified by two inputs a and b, such that c=T(a,b) where all operands and outputs are clear. A functional unit that implements the method 500 may be a function that returns a masked input a'=a+m a and b'=b+m b In addition, the input mask m a and m b and the masked output c'=c+m c and the output mask m c Return.
[0059] At block 510, the functional unit generates a random integer to be used as the output mask.
number
[0060] At block 520, the functional unit copies the element identified by index (i,j) from the clear-text lookup table T to the masked lookup table T' while simultaneously shifting the respective index by the input mask.
number
[0061] At block 530, the functional unit computes a masked result c' for elements of the masked table T' identified by the masked inputs a' and b'.
number
[0062] At block 540, the functional unit generates the masked result c′ and the output mask m c and the method ends.
[0063] As noted above, the functional units perform one or more arithmetic operations (e.g., addition, multiplication, or a combination thereof) on the masked inputs to generate masked outputs. As shown generally in Figure 6, in some implementations the functional units may further perform a masked comparison operation that compares two masked inputs.
[0064] 6 shows a flow diagram of an exemplary method of a masked comparison operation performed by a functional unit operating according to one or more aspects of the present disclosure. Method 600 and / or each of its individual functions, routines, subroutines or operations may be performed by one or more hardware modules. A functional unit implementing method 500 may perform a masked comparison operation on a masked input a′=a+m a and b'=b+m b In addition, the input mask m a and m b and the masked output c'=c+m c and the output mask m c Return.
[0065] At block 610, the functional unit generates a random integer to be used as the mask.
number
[0066] At block 620, the functional unit computes the sum of the two input masks.
number
[0067] At block 630, the functional unit calculates the following intermediate values:
number
[0068] At block 640, the functional unit computes a result c'. If (a'+b'==D), then c'=m c , otherwise c'=m' c
[0069] At block 650, the functional unit generates the masked result c′ and the output mask m c and the method ends.
[0070] 7 illustrates a flow diagram of an exemplary method for performing computations with a private processing pipeline operating in accordance with one or more aspects of the present disclosure. Method 700 and / or each of its individual functions, routines, subroutines or operations may be performed by one or more hardware modules.
[0071] At block 710, the private processing pipeline receives input data.
[0072] At block 720, the private processing pipeline performs a masked decoding process, as described in detail above, that converts the input data into masked decoded data via a masked decoding unit.
[0073] At block 730, the private processing pipeline performs masked operations on the masked decoded data by the masked functional units to produce masked results, as described in detail above.
[0074] At block 740, the private processing pipeline performs a masked encryption process, as described in detail above, that converts the masked result into an encrypted result via a masked encryption unit.
[0075] At block 750, the private processing pipeline outputs the encrypted result and the method ends.
[0076] 8A is a block diagram illustrating the micro-architecture of an exemplary processor incorporating a private processing pipeline operating in accordance with one or more aspects of the present disclosure. In particular, processor 800 illustrates an in-order architecture core and register renaming logic, out-of-order issue / execution logic to be included in a processor in accordance with at least one implementation of the present disclosure.
[0077] Processor 800 includes a front end unit 830 coupled to an execution engine unit 850, both of which are coupled to a memory unit 880. Processor 800 may include a reduced instruction set computing (RISC) core, a complex instruction set computing (CISC) core, a very long instruction word (VLIW) core, or a hybrid or alternative core type. As yet another option, processor 800 may include special-purpose cores, such as, for example, a network or communication core, a compression engine or a graphics core, etc. In one implementation, processor 800 may be a multi-core processor or may be part of a multi-processor system.
[0078] The front-end unit 830 includes a branch prediction unit 832 coupled to an instruction cache unit 834, which is coupled to an instruction translation lookaside buffer (TLB) 836, which is coupled to an instruction fetch unit 838, which is coupled to a decode unit 840. The decode unit 840 (also known as a decoder) decodes instructions and generates as output one or more micro-operations, microcode entry points, microinstructions, other instructions, or other control signals that are decoded from, reflect, or are derived from the original instruction. The decoder 840 may be implemented using a variety of different mechanisms. Examples of suitable mechanisms include, but are not limited to, look-up tables, hardware implementations, programmable logic arrays (PLAs), microcode read-only memories (ROMs), and the like. The instruction cache unit 834 is further coupled to a memory unit 880. The decode unit 840 is coupled to a rename / allocator unit 852 within the execution engine unit 850 .
[0079] The execution engine unit 850 includes a rename / allocator unit 852 coupled to a retirement unit 854 and a set of one or more scheduler units 856. The scheduler units 856 represent any number of different scheduler circuits including reservation stations (RS), central instruction window, etc. The scheduler units 856 are coupled to physical register set units 858. Each of the physical register set units 858 represents one or more physical register sets, different of which store one or more different data types such as scalar integer, scalar floating point, packed integer, packed floating point, vector integer, vector floating point, status (e.g., an instruction pointer, which is the address of the next instruction to be executed), etc. The physical register set unit 858 may be stacked on the retirement unit 854 and illustrates various ways in which register renaming and out-of-order execution may be implemented (e.g., using a reorder buffer and retirement register set, using a future file, a history buffer, and a retirement register set, using a register map and register pools, etc.).
[0080] Generally, the registers of the architecture are visible from outside the processor or from a programmer's perspective. The registers are not limited to any known particular type of circuit. A variety of different types of registers are suitable as long as they are capable of storing and providing data as described herein. Examples of suitable registers include, but are not limited to, dedicated physical registers, dynamically allocated physical registers using register renaming, a combination of dedicated and dynamically allocated physical registers, and the like. The retirement unit 854 and the physical register set unit 858 are coupled to the execution clusters 860. The execution clusters 860 include a set of one or more execution units 862 and a set of one or more memory access units 864. The execution units 862 may perform a variety of operations (e.g., shift, add, subtract, multiply) and may perform operations on a variety of data types (e.g., scalar floating point, packed integer, packed floating point, vector integer, vector floating point).
[0081] Some implementations may include multiple execution units dedicated to a particular function or set of functions, while other implementations may include only one execution unit, or multiple execution units that all perform all functions. Scheduler unit 856, physical register set unit 858, and execution clusters 860 are shown as multiple possibilities because in a particular implementation, separate pipelines are formed for particular data types / operations (e.g., a scalar integer pipeline, a scalar floating point / packed integer / packed floating point / vector integer / vector floating point pipeline, and / or a memory access pipeline, each of which has its own scheduler unit, physical register set unit, and / or execution cluster, and in the case of a separate memory access pipeline, only the execution cluster of this pipeline has a memory access unit 864, in a particular implementation). It should also be understood that if separate pipelines are used, one or more of these pipelines may be out-of-order issue / execution and the rest in-order.
[0082] A set of memory access units 864 is coupled to a memory unit 880, which includes a data prefetcher 880, a data TLB unit 882, a data cache unit (DCU) 884, and a level 2 (L2) cache unit 886, to name a few. In some implementations, the DCU 884 is also known as a first level data cache (L1 cache). The DCU 884 may process multiple outstanding cache misses and may continue to service incoming stores and loads. The DCU 884 also supports maintaining cache coherency. The data TLB unit 882 is a cache used to map virtual and physical address spaces to improve virtual address translation speed. In one exemplary implementation, the memory access units 864 include a load unit, a store address unit, and a store data unit, each of which is coupled to the data TLB unit 882 in the memory unit 880. The L2 cache unit 886 may be coupled to one or more other levels of cache and ultimately to main memory.
[0083] In one implementation, data prefetcher 880 speculatively loads / prefetches data into DCU 884 by automatically predicting data that a program is going to use. Prefetching refers to transferring data stored in one memory location (e.g., location) in a memory hierarchy (e.g., a lower level cache or memory) to a higher level memory location closer to the processor (e.g., resulting in reduced access latency) before the data is actually requested by the processor. More specifically, prefetching refers to retrieving data from one of the lower level caches / memories into a data cache and / or prefetch buffer early on before the processor issues a request for the particular data to be returned.
[0084] Processor 800 may support one or more instruction sets (e.g., the x86 instruction set (with several extensions added in newer versions), the MIPS instruction set from Imagination Technologies of Kings Langley, Hertfordshire, UK, or the ARM instruction set (with optional extensions such as NEON) from ARM Holdings of Sunnyvale, California).
[0085] It will be appreciated that the cores may support multithreading (executing two or more parallel sets of operations or threads) and may do so in a variety of ways, including time sliced multithreading, simultaneous multithreading (wherein a single physical core provides a logical core for each of the threads that the physical core is simultaneously multithreading), or a combination thereof (e.g., time sliced fetch and decode followed by simultaneous multithreading, such as in Intel® Hyper-Threading Technology).
[0086] Although register renaming is described in the context of out-of-order execution, it should be understood that register renaming may be used in an in-order architecture. An exemplary implementation of the processor also includes separate instruction and data cache units and a shared L2 cache unit, while alternative implementations may have a single internal cache, such as a level 1 (L1) internal cache, or multiple levels of internal cache for both instructions and data. In some implementations, the system may include a combination of an internal cache and an external cache that is external to the core and / or processor. Alternatively, all of the caches may be external to the core and / or processor.
[0087] FIG. 8B is a block diagram illustrating an in-order pipeline and a register renaming stage, an out-of-order issue / execution pipeline implemented by the processor 800 of FIG. 8A in accordance with some implementations of the present disclosure. The solid lined boxes in FIG. 8B show the in-order pipeline 801, while the dashed lined boxes show the register renaming, out-of-order issue / execution pipeline 803. In FIG. 8B, the pipelines 801 and 803 include a fetch stage 802, a length decode stage 804, a decode stage 806, an allocation stage 808, a renaming stage 810, a scheduling (also known as dispatch or issue) stage 812, a register read / memory read stage 814, an execute stage 816, a writeback / memory write stage 818, an execute processing stage 822, and a commit stage 824. In some implementations, the order of the stages 802-824 may differ from that shown and is not limited to the particular order shown in FIG. 8B.
[0088] 8C is a block diagram illustrating the micro-architecture of another exemplary processor incorporating a private processing pipeline operating according to one or more aspects of the present disclosure. In some implementations, instructions according to an implementation may be implemented to operate on data elements having sizes such as bytes, words, double words, quad words, etc., and data types such as single and double precision integers and floating point data types. In one implementation, an in-order front end 801 is the part of the processor 800 that fetches instructions to be executed and prepares them for later use in the processor pipeline. Page append and content copy implementations may be implemented in the processor 800.
[0089] Front end 801 includes several units. In one implementation, instruction prefetcher 816 fetches instructions from memory and provides them to instruction decoder 818, which decodes or interprets them. For example, in one implementation, the decoder decodes the received instructions into one or more machine-executable operations called "microinstructions" or "micro-operations" (also called micro-ops or uops). In another implementation, the decoder parses the instructions into opcodes and corresponding data and control fields that the microarchitecture uses to perform the operation according to an implementation. In one implementation, trace cache 830 takes the decoded uops and assembles them into an ordered sequence or trace of the program in uop queue 834 for execution. When trace cache 830 encounters a decoded instruction, microcode ROM (or RAM) 832 provides the uops needed to complete the operation.
[0090] Some instructions are converted to a single micro-op, while other instructions require several micro-ops to complete the entire operation. In one implementation, if an instruction requires more than four micro-ops to complete, the decoder 818 accesses the microcode ROM 832 to execute the instruction. In one implementation, the instruction may be decoded in the instruction decoder 818 into a small number of micro-ops to process. In another implementation, if multiple micro-ops are required to complete an operation, the instruction may be stored in the microcode ROM 832. In one implementation, to complete one or more instructions from the microcode ROM 832, the trace cache 830 references an entry point programmable logic array (PLA) to determine the correct microinstruction pointer to read the microcode sequence. After the microcode ROM 832 completes sequencing multiple micro-ops for an instruction, the machine front end 801 resumes fetching micro-ops from the trace cache 830.
[0091] The out-of-order execution engine 803 is where instructions are prepared for execution. The out-of-order execution logic has multiple buffers that smooth the flow of instructions and reorder them to optimize performance as they move through the pipeline and are scheduled for execution. The allocator logic allocates the buffers and resources each uop needs to execute to the machine. The register renaming logic renames logic registers and places them on entries in the register set. The allocator also allocates entries for each uop in one of two uop queues in front of the instruction scheduler, one for memory operations and one for non-memory operations, which consists of the memory scheduler, the fast scheduler 802, the slow / general floating point scheduler 804, and the simple floating point scheduler 806. The uop schedulers 802, 804, 806 determine when uops are ready to execute based on the readiness of their dependent input register operand sources and the availability of execution resources that the uops need to complete their operations. In one implementation, the fast scheduler 802 may schedule every half of the main clock cycle, while the other schedulers may schedule only once per main processor clock cycle. These schedulers coordinate multiple dispatch ports to schedule multiple uops for execution.
[0092] The register sets 808, 810 are located between the schedulers 802, 804, 806 and the execution units 812, 814, 816, 818, 820, 822, 824 in the execution block 811. There are separate register sets 808, 810 for integer and floating point operations, respectively. Each register set 808, 810 in one implementation also includes a bypass network, which may bypass or forward just completed results that have not yet been written to the register set to new dependent uops. The integer register set 808 and the floating point register set 810 can also communicate data with each other. In one implementation, the integer register set 808 is split into two separate register sets, one register set for the lower 32 bits of data and a second register set for the upper 32 bits of data. In one implementation, floating point register set 810 has 128-bit wide entries since floating point instructions typically have operands that are 64 bits to 128 bits wide.
[0093] The execution block 811 includes execution units 812, 814, 816, 818, 820, 822, 824, which are where the instructions are actually executed. This section includes register sets 808, 810 that store the integer and floating point data operand values that the microinstructions need to execute. In one implementation, the processor 800 is composed of multiple execution units: an address generation unit (AGU) 812, an AGU 814, a fast ALU 816, a fast ALU 818, a slow ALU 820, a floating point ALU 812, and a floating point move unit 814. In one implementation, the floating point execution blocks 812, 814 perform floating point, MMX, SIMD, SSE, or other operations. In one implementation, the floating-point ALU 812 includes a 64-bit by 64-bit floating-point divider that performs divide, square root, and remainder micro-ops. In implementations of the present disclosure, instructions that include floating-point values may be processed using floating-point hardware.
[0094] In one implementation, ALU operations are moved to fast ALU execution units 816, 818. In one implementation, the fast ALUs 816, 818 may perform fast operations with an effective latency of half a clock cycle. In one implementation, many complex integer operations are moved to the slow ALU 820 because the slow ALU 820 includes integer execution hardware for long latency type operations such as multipliers, shifts, flag logic, and branching. Memory load / store operations are performed by AGUs 822, 824. In one implementation, the integer ALUs 816, 818, 820 are described in the context of performing integer operations on 64-bit data operands. In alternative implementations, the ALUs 816, 818, 820 may be implemented to support a variety of data bits, including 16, 32, 128, 256, etc. Similarly, the floating point units 822, 824 may be implemented to support a range of operands having various widths of bits. In one implementation, the floating point units 822, 824 may operate on 128-bit wide packed data operands, as well as SIMD and multimedia instructions.
[0095] In one implementation, uop schedulers 802, 804, 806 dispatch dependent operations before the parent load finishes execution. Uops are speculatively scheduled and executed within processor 800, which also includes logic for handling memory misses. If a data load misses in the data cache, dependent operations may be in-flight in the pipeline, leaving the scheduler temporarily with incorrect data. A replay mechanism tracks and re-executes instructions that use the incorrect data. Only dependent operations need to be replayed, and independent operations are allowed to complete. The scheduler and replay mechanism of one processor implementation is also designed to catch instruction sequences for string comparison operations.
[0096] The term "register" refers to an on-board processor storage location used as part of an instruction to identify an operand. In other words, a register may be available externally to the processor (from a programmer's perspective). However, a register in an implementation should not be limited to a particular type of circuit. A register in an implementation can store and provide data and perform the functions described herein. The registers described herein may be implemented by circuits within the processor using any number of different techniques, such as dedicated physical registers, dynamically allocated physical registers using register renaming, or a combination of dedicated and dynamically allocated physical registers. In one implementation, the integer registers store 32-bit integer data. The register set in one implementation also includes eight multimedia SIMD registers for packed data.
[0097] In the present description, a register is understood to be a data register designed to hold packed data, such as the 64-bit wide MMX™ registers (sometimes referred to as “mm” registers) in microprocessors enabled with MMX technology from Intel Corporation, Santa Clara, Calif. Available in both integer and floating-point forms, these MMX registers may operate with the packed data elements associated with SIMD and SSE instructions. Similarly, the 128-bit wide XMM registers associated with SSE2, SSE3, SSE4 or later (commonly referred to as “SSEx”) technologies may also be used to hold such packed data operands. In one implementation, when storing packed data and integer data, the registers do not need to distinguish between these two data types. In one implementation, integers and floating points are included in either the same register set or different register sets. Furthermore, in one implementation, floating point data and integer data may be stored in different registers or the same register.
[0098] Implementations may be implemented in many different system types. Referring now to FIG. 9, a block diagram of a multiprocessor system 900 incorporating a private processing pipeline operating according to one or more aspects of the present disclosure is shown. As shown in FIG. 9, the multiprocessor system 900 is a point-to-point interconnect system and includes a first processor 970 and a second processor 980 coupled via a point-to-point interconnect 950. As shown in FIG. 9, each of the processors 970 and 980 may be a multi-core processor including a first processor core and a second processor core (i.e., processor cores 974a and 974b and processor cores 984a and 984b), although potentially many additional cores may be present within the processor. Although two processors 970, 980 are shown, it should be understood that the scope of the present disclosure is not so limited. In other implementations, one or more additional processors may be present in a particular processor.
[0099] Processors 970 and 980 are shown to include integrated memory controller units 972 and 982, respectively. Processor 970 also includes point-to-point (PP) interfaces 976 and 988 as part of its bus controller unit, and similarly second processor 980 includes PP interfaces 986 and 988. Processors 970, 980 may exchange information over a point-to-point (PP) interface 950 using PP interface circuits 978, 988. As shown in FIG. 9, IMCs 972 and 982 couple the processors to respective memories, i.e., memory 932 and memory 934, which may be part of a main memory locally attached to the respective processors.
[0100] The processors 970, 980 may exchange information with the chipset 990 through respective PP interfaces 952, 954 using point-to-point interface circuits 976, 994, 986, 998. The chipset 990 may also exchange information with the high performance graphics circuit 938 through a high performance graphics interface 939.
[0101] Chipset 990 is coupled to a first bus 916 via an interface 996. In one implementation, first bus 916 may be a bus such as a Peripheral Component Interconnect (PCI) bus, or a PCI Express bus or interconnect bus, although the scope of the disclosure is not so limited.
[0102] 10, there is shown a block diagram of another multiprocessor system 1000 incorporating a private processing pipeline operating in accordance with one or more aspects of the present disclosure. Like elements in FIG. 9 and FIG. 10 have like reference numbers, and certain aspects of FIG. 10 have been omitted from FIG. 9 to avoid obscuring other aspects of FIG. 9.
[0103] FIG. 10 illustrates processors 1070, 1080 as including integrated memory and I / O control logic (“CL”) 1072 and 1092, respectively. In at least one implementation, CL 1072, 1082 includes an integrated memory controller unit as described herein. CL 1072, 1092 may also include I / O control logic. FIG. 10 illustrates memory 1032, 1034 coupled to CL 1072, 1092, and I / O devices 1014 also coupled to control logic 1072, 1092. Legacy I / O devices 1015 are coupled to chipset 1090.
[0104] 11 is a block diagram of an exemplary system-on-chip (SoC) including one or more cores incorporating a private processing pipeline operating according to one or more aspects of the present disclosure. Other system designs and configurations known in the art for laptops, desktops, handheld PCs, personal digital assistants, engineering workstations, servers, network devices, network hubs, switches, embedded processors, digital signal processors (DSPs), graphics devices, video game devices, set-top boxes, microcontrollers, mobile phones, portable media players, handheld devices, and various other electronic devices are also suitable. In general, a wide variety of systems or electronic devices capable of incorporating a processor and / or other execution logic as disclosed herein are generally suitable.
[0105] In the example SoC 1100 of Figure 11, the dashed boxes are functions of a more advanced SoC. The interconnect unit 1102 is coupled to an application processor 1117 including a set of one or more cores 1102A-N and a shared cache unit 1106, a system agent unit 1110, a bus controller unit 1116, an integrated memory controller unit 1114, a set of one or more media processors 1120 that may include integrated graphics logic 1108, an image processor 1124 for providing still and / or video camera functionality, an audio processor 1126 for providing hardware audio acceleration, and a video processor 1128 for providing video encoding / decoding acceleration, a static random access memory (SRAM) unit 1130, a direct memory access (DMA) unit 1132, and a display unit 1140 for coupling to one or more external displays.
[0106] Referring now to FIG. 12, a block diagram of another exemplary system-on-chip (SoC) including one or more cores incorporating a private processing pipeline operating according to one or more aspects of the present disclosure is shown. As an illustrative example, the SoC 1200 is included in a user equipment (UE). In one implementation, the UE refers to any device to be used by an end user to communicate, such as a handheld phone, a smartphone, a tablet, an ultra-thin notebook, a notebook with a broadband adapter, or any other similar communication device. The UE may connect to a base station or node that may be served by a mobile station (MS) in a GSM network. Implementations of page adding and content copying may be implemented in the SoC 1200.
[0107] Here, SoC 1200 includes two cores 1206 and 1207. As described above, cores 1206 and 1207 may conform to the instruction set architecture of a processor having Intel® architecture Core™, an Advanced Micro Devices, Inc. (AMD) processor, a MIPS-based processor, an ARM-based processor design, or a customer of these and their licensees or adopters. Cores 1206 and 1207 are coupled to a bus interface unit 1209 and a cache control 1208 associated with an L2 cache 1210 for communicating with other parts of system 1200. Interconnect 1211 may include an on-chip interconnect, such as an IOSF, AMBA, or other interconnect as described above, which may implement one or more aspects of the present disclosure as described.
[0108] In one implementation, SDRAM controller 1240 connects to interconnect 1211 via cache 1210. Interconnect 1211 provides a communication channel to other components, including subscriber identity module (SIM) 1230 to interface with a SIM card, boot ROM 1235 to hold boot code for initializing and booting SoC 1200 executed by cores 1206 and 1207, SDRAM controller 1240 to interface with external memory (e.g., DRAM 1260), flash controller 1245 to interface with non-volatile memory (e.g., flash 1265), peripheral control 1250 (e.g., serial peripheral interface) to interface with peripherals, video codec 1220 and video interface 1225 to display and receive input (e.g., touch-enabled input), GPU 1215 to perform graphics-related computer processing, etc. Any of these interfaces may incorporate aspects of the implementations described herein.
[0109] The system also shows peripherals for communication such as a Bluetooth module 1270, a 3G modem 1275, a GPS 1280 and a Wi-Fi 1285. Note that, as noted above, the UE includes a radio for communication. As a result, it is not necessary for all of these peripheral communication modules to be included. However, some form of radio for external communication should be included in the UE.
[0110] FIG. 13 illustrates a diagrammatic representation of a machine in an exemplary form of a computing system 1300 including an instruction set therein for causing the machine to implement a private processing pipeline operating according to one or more aspects of the present disclosure. In alternative implementations, the machine may be connected (e.g., networked) to other machines in a LAN, an intranet, an extranet, or the Internet. The machine may operate in the capacity of a server or a client device in a client-server network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. The machine may be a personal computer (PC), a tablet PC, a set-top box (STB), a personal digital assistant (PDA), a mobile phone, a web appliance, a server, a network router, a switch, or a bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by the machine. Moreover, although only a single machine is shown, the term "machine" should be construed to include any combination of machines individually or jointly executing an instruction set (or multiple instruction sets) for performing any one or more of the methodologies described herein. Implementations of page adding and content copying may be implemented in the computing system 1300 .
[0111] The computing system 1300 includes a processing device 1302, a main memory 1304 (e.g., flash memory, dynamic random access memory (DRAM) (such as synchronous DRAM (SDRAM) or DRAM (RDRAM), etc.), a static memory 1306 (e.g., flash memory, static random access memory (SRAM), etc.), and a data storage device 1316, which communicate with each other via a bus 1308.
[0112] The processing device 1302 represents one or more general-purpose processing devices, such as a microprocessor or central processing unit. More specifically, the processing device may be a complex instruction set computer (CISC) microprocessor, a reduced instruction set computer (RISC) microprocessor, a very long instruction word (VLIW) microprocessor, or a processor implementing other instruction sets, or processors implementing a combination of instruction sets. The processing device 1302 may be one or more special-purpose processing devices, such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), or a network processor. In one implementation, the processing device 1302 includes one or more processor cores. The processing device 1302 is configured to execute the processing logic 1326 to perform the operations described herein.
[0113] In one implementation, the processing device 1302 may be part of a processor or integrated circuit including the disclosed LLC cache architecture. Alternatively, the computing system 1300 may include other components as described herein. It should be understood that the cores may support multithreading (executing parallel sets of two or more operations or threads) and may do so in a variety of ways, including time sliced multithreading, simultaneous multithreading (wherein a single physical core provides a logical core for each of the threads that the physical core is simultaneously multithreading), or a combination thereof (e.g., time sliced fetch and decode followed by simultaneous multithreading, as in Intel® Hyper-Threading Technology).
[0114] The computing system 1300 may further include a network interface device 1318 communicatively coupled to a network 1319. The computing system 1300 may also include a video display device 1310 (e.g., a liquid crystal display (LCD) or cathode ray tube (CRT)), an alphanumeric input device 1312 (e.g., a keyboard), a cursor control device 1314 (e.g., a mouse), a signal generating device 1320 (e.g., a speaker) or other peripheral devices. Additionally, the computing system 1300 may include a graphics processing unit 1322, a video processing unit 1328, and an audio processing unit 1332. In another implementation, the computing system 1300 may include a chipset (not shown), which refers to a group of integrated circuits or integrated chips, designed to operate with the processing device 1302 and control communication between the processing device 1302 and external devices. For example, a chipset may be a set of chips on a motherboard that connects the processing device 1302 to very high speed devices, such as main memory 1304 and a graphics controller, and that connects the processing device 1302 to a peripheral bus for slower peripherals, such as a USB, PCI or ISA bus.
[0115] The data storage device 1316 may include a computer-readable storage medium 1324 having stored thereon software 1326 embodying any one or more of the functional methodologies described herein. The software 1326 may also reside, completely or at least partially, within the main memory 1304 as instructions 1326 and / or within the processing device 1302 as processing logic during its execution by the computing system 1300, with the main memory 1304 and the processing device 1302 also constituting computer-readable storage media.
[0116] The computer-readable storage medium 1324 may be used to store software libraries including instructions 1326 for using the processing device 1302 and / or methods for invoking the application. Although in the exemplary implementation, the computer-readable storage medium 1324 is shown as a single medium, the term "computer-readable storage medium" should be interpreted as including a single medium or multiple media (e.g., a centralized or distributed database and / or associated caches and servers) that store one or more sets of instructions. The term "computer-readable storage medium" should also be interpreted as including any medium capable of storing, encoding or retaining a set of instructions that can be executed by a machine and cause the machine to perform any one or more of the methodologies of the disclosed implementation. Thus, the term "computer-readable storage medium" should be interpreted to include, but is not limited to, solid-state memory and optical and magnetic media.
[0117] The following examples relate to further implementations.
[0118] Example 1 is a processing system comprising a masked decryption unit circuit for performing a masked decryption process that converts input data into masked decrypted data, a masked functional unit circuit for performing masked arithmetic operations on the masked decrypted data to produce a masked result, and a masked encryption unit circuit for performing a masked encryption process that converts the masked result into an encrypted result.
[0119] Example 2 is the processing system of example 1, wherein the masked arithmetic operation includes at least one of a masked addition operation or a masked multiplication operation.
[0120] Example 3 is the processing system of example 1 or 2, wherein the masked arithmetic operations include masked comparison operations.
[0121] Example 4 is the processing system of any of Examples 1 to 3, wherein the masked arithmetic operation includes a masked lookup operation.
[0122] Example 5 is the processing system of any of Examples 1-4, wherein the masked decoded data is protected with one of an arithmetic mask or a Boolean mask.
[0123] Example 6 is the processing system of any of Examples 1 to 5, further comprising a first transform unit circuit for converting a first mask scheme applied to the masked decoded data to a second mask scheme, and a second transform unit circuit for converting the second mask scheme applied to the masked result to the first mask scheme.
[0124] Example 7 is the processing system of any of Examples 1-6, further comprising an encryption key manager for providing an encryption key for performing at least one of the encryption process or the decryption process.
[0125] Example 8 is the processing system of any of Examples 1-7, further comprising a random number generator for providing a cryptographic mask to the masked functional unit circuitry for performing the masked arithmetic operation.
[0126] Example 9 is a system-on-chip (SoC) comprising: a first masked decryption unit circuit for performing a first masked decryption process that converts first input data into first masked decrypted data; a second masked decryption unit circuit for performing a second masked decryption process that converts second input data into second masked decrypted data; a masked functional unit circuit for performing masked arithmetic operations on the first masked decrypted data and the second masked decrypted data to generate a masked result; and a masked encryption unit circuit for performing a masked encryption process that converts the masked result into an encrypted result.
[0127] Example 10 is the SoC of example 9, wherein the masked arithmetic operation includes at least one of a masked addition operation or a masked multiplication operation.
[0128] Example 11 is the SoC of example 9 or 10, wherein the masked arithmetic operations include masked comparison operations.
[0129] Example 12 is the SoC of any of Examples 9 to 11, wherein the masked arithmetic operation includes a masked lookup operation.
[0130] Example 13 is the SoC of any of Examples 9-12, wherein the masked decrypted data is protected with one of an arithmetic mask or a Boolean mask.
[0131] Example 14 is the SoC according to any one of Examples 9 to 13, further comprising an encryption key manager for providing an encryption key for performing at least one of the encryption process or the decryption process.
[0132] Example 15 is the SoC of any of Examples 9-14, further comprising a random number generator for providing a cryptographic mask to the masked functional unit circuitry for performing the masked arithmetic operation.
[0133] Example 16 is a method comprising: receiving, by a private processing pipeline, input data; performing, by a masked decryption unit circuit of the private processing pipeline, a masked decryption operation that converts the input data into masked decrypted data; performing, by a masked functional unit circuit of the private processing pipeline, a masked arithmetic operation on the masked decrypted data to produce a masked result; performing, by a masked encryption unit circuit of the private processing pipeline, a masked encryption operation that converts the masked result into an encrypted result; and outputting the encrypted result.
[0134] Example 17 is the method of example 16, wherein the masked arithmetic operation includes at least one of a masked addition operation or a masked multiplication operation.
[0135] Example 18 is the method of example 16 or 17, wherein the masked arithmetic operation includes a masked comparison operation.
[0136] Example 19 is the method of any of examples 16-18, wherein the masked arithmetic operation includes a masked lookup operation.
[0137] Example 20 is the method of any of examples 16-19, wherein the masked decoded data is protected with one of an arithmetic mask or a Boolean mask.
[0138] Example 21 is the method of any of Examples 16 to 20, further comprising: transforming, by a first transform unit circuit, a mask scheme applied to the masked decoded data; and transforming, by a second transform unit circuit, a mask scheme applied to the masked result.
[0139] Example 22 is the method of any of Examples 16-21, further comprising receiving an encryption key from an encryption key manager for performing at least one of the encryption operation or the decryption operation.
[0140] Example 23 is the method of any of Examples 16-22, further comprising receiving a cryptographic mask from the random number generator for performing the masked arithmetic operation.
[0141] Example 24 is a system comprising means for carrying out the method according to any one of Examples 16 to 23.
[0142] Example 25 is an apparatus system comprising a processor configured to execute the method of any of Examples 16-23.
[0143] Example 26 is a non-transitory machine-readable storage medium comprising executable instructions that, when executed by a computing system having a private processing pipeline, cause the computing system to implement a method according to any of Examples 16-23.
[0144] Example 27 is a non-transitory machine-readable storage medium comprising executable instructions that, when executed by a private processing pipeline, cause the private processing pipeline to perform the following steps: receiving input data; performing, by a masked decryption unit circuit of the private processing pipeline, a masked decryption operation that converts the input data into masked decrypted data; performing, by a masked functional unit circuit of the private processing pipeline, a masked arithmetic operation on the masked decrypted data to produce a masked result; performing, by a masked encryption unit circuit of the private processing pipeline, a masked encryption operation that converts the masked result into an encrypted result; and outputting the encrypted result.
[0145] Example 28 is the non-transitory machine-readable storage medium of example 27, wherein the masked arithmetic operation includes at least one of a masked addition operation or a masked multiplication operation.
[0146] Example 29 is the non-transitory machine-readable storage medium of example 27 or 28, wherein the masked arithmetic operations include masked comparison operations.
[0147] Example 30 is the non-transitory machine-readable storage medium of any of Examples 27-29, wherein the masked arithmetic operation includes a masked lookup operation.
[0148] Example 31 is the non-transitory machine-readable storage medium of any of Examples 27-30, wherein the masked decoded data is protected with one of an arithmetic mask or a Boolean mask.
[0149] Example 32 is the non-transitory machine-readable storage medium of any of Examples 27-31, further comprising executable instructions that, when executed by the private processing pipeline, cause the private processing pipeline to perform steps of transforming, by the first transform unit circuit, a mask scheme applied to the masked decoded data, and transforming, by the second transform unit circuit, a mask scheme applied to the masked result.
[0150] Example 33 is a non-transitory machine-readable storage medium of any of Examples 27 to 32, further comprising executable instructions that, when executed by the private processing pipeline, cause the private processing pipeline to perform a procedure of receiving an encryption key from the encryption key manager for performing at least one of an encryption operation or a decryption operation.
[0151] Example 34 is the non-transitory machine-readable storage medium of any of Examples 27-33, further comprising executable instructions that, when executed by the private processing pipeline, cause the private processing pipeline to perform a procedure of receiving a cryptographic mask from the random number generator for performing a masked arithmetic operation.
[0152] Various implementations may have different combinations of the structural features described above, for example, all optional features of the processors and methods described above may be implemented with respect to the systems described herein, and individual features of the examples may be used anywhere in one or more implementations.
[0153] While the present disclosure has been described with respect to a limited number of implementations, those skilled in the art will recognize various modifications and variations therein, and it is intended in the appended claims to cover all such modifications and variations that fall within the true spirit and scope of the present disclosure.
[0154] In the description herein, many specific details are set forth, such as, for example, specific types of processors and system configurations, specific hardware structures, specific architectural and microarchitectural details, specific register configurations, specific instruction types, specific system components, specific measurements / heights, specific processor pipeline stages and operations, etc., to provide a thorough understanding of the present disclosure. However, it will be apparent to one of ordinary skill in the art that these specific details need not be employed to practice the present disclosure. In other instances, well-known components or methods, such as, for example, specific and alternative processor architectures, specific logic circuits / code for the described algorithms, specific firmware code, specific interconnect operations, specific logic configurations, specific manufacturing techniques and materials, specific compiler implementations, representations of specific algorithms in code, specific power-down and gating techniques / logic, and other specific operational details of computer systems, have not been described in detail to avoid unnecessarily obscuring the present disclosure.
[0155] The implementation is described with respect to determining the validity of data in a cache line of a sector-based cache in a particular integrated circuit, such as in a computing platform or microprocessor. The implementation may also be applicable to other types of integrated circuits and programmable logic devices. For example, the disclosed implementation is not limited to desktop computer systems or portable computers, such as Intel® Ultrabook™ computers. The implementation may also be used in other devices, such as handheld devices, tablets, other thin notebooks, system-on-a-chip (SoC) devices, and embedded applications. Some examples of handheld devices include mobile phones, Internet protocol devices, digital cameras, personal digital assistants (PDAs), and handheld PCs. Embedded applications typically include microcontrollers, digital signal processors (DSPs), system-on-a-chips, network computers (NetPCs), set-top boxes, network hubs, wide area network (WAN) switches, or any other system capable of performing the functions and operations taught hereinafter. It is noted that the system may be any type of computer or embedded system. The disclosed implementations may be used, inter alia, for low-end devices, such as wearable devices (e.g., watches), electronic implants, sensor and control infrastructure devices, controllers or Supervisory Control And Data Acquisition (SCADA) systems, etc. Furthermore, the apparatus, methods and systems described herein are not limited to physical computing devices, but may also relate to software optimization for energy savings and efficiency. As will be readily apparent from the following description, implementations of the methods, apparatus and systems described herein (whether in hardware, firmware, software, or a combination thereof) are essential to the future of "green technology" balanced with performance considerations.
[0156] Although the implementations herein are described in relation to a processor, other implementations are applicable to other types of integrated circuits and logic devices. Similar techniques and teachings of the implementations of the present disclosure may be applicable to other types of circuits or semiconductor devices, which may benefit from the higher throughput and improved performance of the pipeline. The teachings of the implementations of the present disclosure are applicable to any processor or machine that performs data manipulation. However, the present disclosure is not limited to processors or machines that perform 512-bit, 256-bit, 128-bit, 64-bit, 32-bit, or 16-bit data operations, but are applicable to any processor and machine in which data manipulation or management is performed. Also, the description herein is illustrative, and the accompanying drawings show various examples for illustrative purposes. However, these examples should not be construed in a limiting sense, as they are merely intended to illustrate examples of the implementations of the present disclosure, rather than to exhaustively list all possible implementations of the implementations of the present disclosure.
[0157] While the above examples describe instruction processing and instruction delivery in the context of execution units and logic circuits, other implementations of the present disclosure may be implemented using data or instructions stored on a machine-readable tangible medium that, when executed by a machine, causes the machine to perform functions consistent with at least one implementation of the present disclosure. In one implementation, functions associated with an implementation of the present disclosure may be embodied in machine-executable instructions. The instructions may be used to cause a general-purpose or special-purpose processor programmed with the instructions to perform the steps of the present disclosure. An implementation of the present disclosure may be provided as a computer program product or software that may include a machine or a computer-readable medium having stored instructions, and the instructions may be used to program a computer (or other electronic device) to perform one or more operations according to an implementation of the present disclosure. Alternatively, the operations of an implementation of the present disclosure may be performed by specific hardware components that include fixed-function logic for performing the operations, or by any combination of programmed computer components and fixed-function hardware components.
[0158] The instructions used to program the logic to perform the implementation of the present disclosure may be stored in a memory such as a DRAM, cache, flash memory, or other storage in the system. Additionally, the instructions may be provided over a network or using other computer-readable media. Thus, a machine-readable medium may include any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computer), including, but not limited to, a floppy disk, an optical disk, a compact disk, a read-only memory (CD-ROM), and a magneto-optical disk, a read-only memory (ROM), a random access memory (RAM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), a magnetic or optical card, a flash memory, or a tangible machine-readable storage used to transmit information via an electrical, optical, acoustic, or other form of propagated signal (e.g., carrier wave, infrared signal, digital signal, etc.) over the Internet. Accordingly, computer-readable media includes any type of tangible machine-readable medium suitable for storing or transmitting electronic instructions or information in a form readable by a machine (eg, a computer).
[0159] A design may go through various stages from creation to simulation to fabrication. Data representing a design may represent the design in multiple ways. First, the hardware may be represented using a hardware description language or another functional description language, as is useful in simulation. Also, a circuit level model with logic and / or transistor gates may be generated at some stages of the design process. Furthermore, at some stages, many designs reach a level of data that represents the physical placement of various devices in the hardware model. If conventional semiconductor fabrication techniques are used, the data representing the hardware model may be data that specifies the presence or absence of various features in different mask layers of the mask used to generate the integrated circuit. In any representation of a design, the data may be stored in any form of machine-readable medium. Memory, or magnetic or optical storage such as a disk, may be a machine-readable medium for storing information transmitted via optical or electrical waves modulated or generated to transmit such information. When an electrical carrier wave indicating or carrying a code or design is transmitted, to the extent that copying, buffering, or retransmission of the electrical signal is performed, a new copy is made. Thus, a communications provider or network provider may store, at least temporarily, on a tangible machine-readable medium, items such as information encoded in a carrier wave that embody techniques of the implementations of the present disclosure.
[0160] A module, as used herein, refers to any combination of hardware, software, and / or firmware. As an example, a module includes hardware such as a microcontroller associated with a non-transitory medium for storing code adapted to be executed by the microcontroller. Thus, in one implementation, reference to a module refers to hardware specifically configured to recognize and / or execute code to be held in the non-transitory medium. Furthermore, in another implementation, the use of a module refers to a non-transitory medium containing code, the code being specifically adapted to be executed by a microcontroller to perform a predetermined operation. As can be inferred, in yet another implementation, the term module (in this example) may refer to a combination of a microcontroller and a non-transitory medium. Often, the boundaries of modules illustrated as separate typically vary and potentially overlap. For example, a first module and a second module may share hardware, software, firmware, or a combination thereof, while potentially retaining some independent hardware, software, or firmware. In one implementation, the use of the term logic includes hardware such as transistors, registers, or other hardware such as programmable logic devices.
[0161] In one implementation, the use of the phrase "configured to" refers to arranging, organizing, manufacturing, offering for sale, importing, and / or designing an apparatus, hardware, logic, or element to perform a specified or determined task. In this example, an apparatus or element of an apparatus that is not in operation is still "configured to" perform a specified task if it is designed, coupled, and / or interconnected to perform the specified task. Purely as an illustrative example, a logic gate may provide a 0 or a 1 when in operation. However, a logic gate "configured" to provide an enable signal to a clock does not include any potential logic gate that may provide a 1 or a 0. Instead, the logic gate is coupled in some manner such that, when in operation, an output of 1 or 0 enables the clock. It should be noted again that the use of the term "configured to" does not require operation, but instead focuses on potential states of the apparatus, hardware, and / or element in which the apparatus, hardware, and / or element is designed to perform a particular task when the apparatus, hardware, and / or element is in operation.
[0162] Additionally, in one implementation, the use of the terms "to," "capable of / to," and / or "operable to" refers to some apparatus, logic, hardware, and / or elements that are designed to enable the apparatus, logic, hardware, and / or elements to be used in a particular embodiment. As noted above, it should be noted that in one implementation, the use of "to," "capable to," or "operable to" refers to the potential state of the apparatus, logic, hardware, and / or elements, where the apparatus, logic, hardware, and / or elements are not operational, but are designed in a manner that enables the apparatus, logic, hardware, and / or elements to be used in a particular embodiment.
[0163] A value, as used herein, includes any known representation of a number, state, logic state, or binary logic state. Often, the use of logic level, logic value, or logic value also refers to 1 and 0, which simply represent binary logic states. For example, 1 refers to a high logic level and 0 refers to a low logic level. In one implementation, a storage cell, such as a transistor or flash cell, may be capable of holding a single logic value or multiple logic values. However, other representations of values are used in computer systems. For example, the decimal number 10 may also be represented as a binary value of 1010 and the letter A in hexadecimal. Thus, a value includes any representation of information that can be held in a computer system.
[0164] Additionally, a state may be represented by a value or a portion of a value. As an example, a first value, such as a logical one, may represent a default or initial state, whereas a second value, such as a logical zero, may represent a non-default state. Also, in one implementation, the terms reset and set refer to a default value or state and an updated value or state, respectively. For example, a potential default value may include a high logical value, i.e., reset, whereas an updated value may include a potential low logical value, i.e., set. It should be noted that any combination of values may be used to represent any number of states.
[0165] The implementation of the above method, hardware, software, firmware or code may be implemented via instructions or codes stored on a machine-accessible, machine-readable, computer-accessible or computer-readable medium that can be executed by a processing element. A non-transitory machine-accessible / readable medium includes any mechanism that provides (i.e., stores and / or transmits) information in a form readable by a machine, such as a computer or electronic system. For example, non-transitory machine-accessible media include random access memory (RAM), such as static RAM (SRAM) or dynamic RAM (DRAM), ROM, magnetic or optical storage media, flash memory devices, electrical storage devices, optical storage devices, acoustic storage devices, other forms of storage devices for holding information received from a transitory (propagated) signal (e.g., carrier wave, infrared signal, digital signal), and the like, which should be distinguished from a non-transitory medium that can receive information.
[0166] The instructions used to program the logic to perform the implementation of the present disclosure may be stored in a memory such as a DRAM, cache, flash memory, or other storage in the system. Additionally, the instructions may be provided over a network or using other computer-readable media. Thus, a machine-readable medium may include any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computer), including, but not limited to, a floppy disk, an optical disk, a compact disk, a read-only memory (CD-ROM), and a magneto-optical disk, a read-only memory (ROM), a random access memory (RAM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), a magnetic or optical card, a flash memory, or a tangible machine-readable storage used to transmit information via electrical, optical, acoustic, or other forms of propagated signals (e.g., carrier waves, infrared signals, digital signals, etc.) over the Internet. Accordingly, computer-readable media includes any type of tangible machine-readable medium suitable for storing or transmitting electronic instructions or information in a form readable by a machine (eg, a computer).
[0167] Reference throughout this specification to "an implementation" or "an implementation" means that a particular feature, structure, or characteristic described in connection with that implementation is included in at least one implementation of the present disclosure. Thus, the appearances of the phrase "in one implementation" or "in an implementation" in various places throughout this specification are not necessarily all referring to the same implementation. Furthermore, particular features, structures, or characteristics may be combined in any suitable manner in one or more implementations.
[0168] In the above specification, the detailed description has been described in relation to specific exemplary implementations. However, it is apparent that various modifications and changes may be made without departing from the broader spirit and scope of the present disclosure as set forth in the appended claims. Accordingly, the specification and drawings should be interpreted in an illustrative, rather than a restrictive, sense. Moreover, the foregoing use of implementation and other exemplary language does not necessarily refer to the same implementation or identical example, but may refer to different separate implementations and potentially identical implementations.
[0169] Some portions of the detailed description are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey their work to others skilled in the art. An algorithm is herein, and generally, understood to be a self-consistent sequence of operations leading to a desired result. The operations are those requiring physical manipulations on physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like. The blocks described herein may be hardware, software, firmware, or a combination thereof.
[0170] It should be noted, however, that all of these and similar terms are to be associated with the appropriate physical quantities, and that all of these and similar terms are merely convenient labels applied to these physical quantities. As is apparent from the above description, unless specifically stated otherwise, descriptions using terms such as "defining," "receiving," "determining," "issuing," "linking," "associating," "obtaining," "authenticating," "prohibiting," "executing," "requesting," or "communicating" throughout this specification are understood to refer to the actions and processes of a computing system or similar electronic computing device that manipulate and convert data represented as physical (e.g., electronic) quantities in the registers and memory of the computing system into other data that are similarly represented as physical quantities in the registers or memory of the computing system or other such information storage, transmission, or display device.
[0171] The phrase "example" or "exemplary" is used herein to mean serving as an example, example, or illustration. Any aspect or design described herein as "example" or "exemplary" should not necessarily be construed as preferred or advantageous over other aspects or designs. Use of the phrase "example" or "exemplary" is intended to present a concept in a specific embodiment. The term "or" as used herein is intended to mean an inclusive or, not an exclusive or. That is, unless otherwise stated or clear from the context, "X includes A or B" is intended to mean any of the natural inclusive permutations. That is, if X includes A, X includes B, or X includes both A and B, then "X includes A or B" is satisfied under any of the conditions of the preceding examples. Additionally, the articles "a" and "an" as used in this application and the appended claims should generally be construed to mean "one or more" unless otherwise specified to the contrary or unless the context makes clear that a singular form is intended. Furthermore, use of the terms "implementation" or "an implementation" throughout this specification is not intended to refer to the same implementation unless otherwise specified. Additionally, the terms "first," "second," "third," "fourth," etc., as used herein are meant as labels to distinguish between different elements and do not necessarily have an ordinal meaning due to their numerical designation. Other possible claims (Item 1) a masked decoding unit circuit for performing a masked decoding process that converts input data into masked decoded data; a masked functional unit circuit for performing masked arithmetic operations on the masked decoded data to produce a masked result; and a masked encryption unit circuit for performing a masked encryption process that converts the masked result into an encrypted result. (Item 2) 2. The processing system of claim 1, wherein the masked arithmetic operation includes at least one of a masked addition operation or a masked multiplication operation. (Item 3) 2. The processing system of claim 1, wherein the masked arithmetic operation comprises a masked comparison operation. (Item 4) 2. The processing system of claim 1, wherein the masked arithmetic operation comprises a masked lookup operation. (Item 5) 2. The processing system of claim 1, wherein the masked decoded data is protected with one of an arithmetic mask or a Boolean mask. (Item 6) a first transformation unit circuit for transforming the first mask scheme applied to the masked decoded data into a second mask scheme; Item 1, further comprising: a second transformation unit circuit for transforming the second mask scheme applied to the masked result into the first mask scheme. (Item 7) 2. The processing system of claim 1, further comprising a cryptographic key manager for providing a cryptographic key for performing at least one of the masked encryption operation or the masked decryption operation. (Item 8) 2. The processing system of claim 1, further comprising a random number generator for supplying a cryptographic mask to the masked functional unit circuitry for performing the masked arithmetic operation. (Item 9) a first masked decoding unit circuit for performing a first masked decoding process to convert the first input data into a first masked decoded data; a second masked decoding unit circuit for performing a second masked decoding process to convert the second input data into a second masked decoded data; a masked functional unit circuit for performing masked arithmetic operations on the first masked decoded data and the second masked decoded data to generate a masked result; and a masked encryption unit circuit for performing a masked encryption operation to convert the masked result into an encrypted result. (Item 10) 10. The SoC of item 9, wherein the masked arithmetic operation includes at least one of a masked addition operation or a masked multiplication operation. (Item 11) 10. The SoC of item 9, wherein the masked arithmetic operation includes a masked comparison operation. (Item 12) 10. The SoC of item 9, wherein the masked arithmetic operation includes a masked lookup operation. (Item 13) 10. The SoC of claim 9, wherein the masked decrypted data is protected by one of an arithmetic mask or a Boolean mask. (Item 14) 10. The SoC of claim 9, further comprising an encryption key manager for providing an encryption key for performing at least one of the first masked encryption process, the second masked encryption process, or the masked decryption process. (Item 15) 10. The SoC of claim 9, further comprising a random number generator for supplying a cryptographic mask to the masked functional unit circuitry for performing the masked arithmetic operation. (Item 16) receiving input data by a private processing pipeline; performing, by a masked decode unit circuit of said private processing pipeline, a masked decode process for converting input data into masked decoded data; performing, by masked functional unit circuitry of the private processing pipeline, a masked arithmetic operation on the masked decoded data to produce a masked result; performing, by a masked encryption unit circuit of said private processing pipeline, a masked encryption process converting said masked result into an encrypted result; and outputting the encrypted result. (Item 17) Item 17. The method of item 16, wherein the masked arithmetic operation includes at least one of a masked addition operation or a masked multiplication operation. (Item 18) Item 17. The method of item 16, wherein the masked arithmetic operation includes a masked comparison operation. (Item 19) Item 17. The method of item 16, wherein the masked arithmetic operation includes a masked lookup operation. (Item 20) Item 17. The method of item 16, wherein the masked decoded data is protected by one of an arithmetic mask or a Boolean mask.
Claims
1. An encryption key manager for providing encryption keys; a random number generator for providing the first encryption mask and the second encryption mask; a first masked decryption unit circuit for receiving the first encryption mask and first encrypted input data and performing a first masked decryption process using the encryption key to convert the first encrypted input data into first masked decrypted data; a second masked decryption unit circuit for receiving the second encryption mask and second encrypted input data and performing a second masked decryption process using the encryption key to convert the second encrypted input data into second masked decrypted data; a masked functional unit circuit for performing a masked arithmetic operation with the first masked decoded data and the second masked decoded data to generate a masked result; a masked encryption unit circuit for receiving a third mask and the masked result and performing a masked encryption process using the third mask and the encryption key to convert the masked result into an encrypted result. Processing system.
2. The processing system of claim 1 , wherein the masked arithmetic operation comprises at least one of a masked addition operation or a masked multiplication operation.
3. The processing system of claim 1 , wherein the masked arithmetic operation comprises a masked comparison operation.
4. The processing system of claim 1 , wherein the masked arithmetic operation comprises a masked lookup operation.
5. 5. The processing system of claim 1, wherein the first masked decoded data and the second masked decoded data are protected with one of an arithmetic mask or a Boolean mask.
6. a first conversion unit circuit for converting a first mask scheme applied to the first masked decoded data and the second masked decoded data to a second mask scheme; 5. The processing system of claim 1, further comprising: a second transformation unit circuit for transforming the second mask scheme applied to the masked result into the first mask scheme.
7. A cryptographic key manager for providing cryptographic keys; a random number generator for providing the first encryption mask and the second encryption mask; a first masked decryption unit circuit for receiving the first encryption mask and first encrypted input data and performing a first masked decryption process using the encryption key to convert the first encrypted input data into first masked decrypted data; a second masked decryption unit circuit for receiving the second encryption mask and second encrypted input data and performing a second masked decryption process using the encryption key to convert the second encrypted input data into second masked decrypted data; a masked functional unit circuit for performing a masked arithmetic operation with the first masked decoded data and the second masked decoded data to generate a masked result; a masked encryption unit circuit for receiving a third mask and the masked result and performing a masked encryption process with the encryption key to convert the masked result into an encrypted result. System on a chip (SoC).
8. The SoC of claim 7 , wherein the masked arithmetic operation includes at least one of a masked addition operation or a masked multiplication operation.
9. The SoC of claim 7 , wherein the masked arithmetic operation comprises a masked compare operation.
10. The SoC of claim 7 , wherein the masked arithmetic operation comprises a masked lookup operation.
11. The SoC of claim 7 , wherein the first masked decoded data and the second masked decoded data are protected by one of an arithmetic mask or a Boolean mask.
12. receiving, by a private processing pipeline, an encryption key from an encryption key manager, first and second encryption masks from a random number generator, and first and second encrypted input data; performing, by a first masked decryption unit circuit of the private processing pipeline, a first masked decryption process using the first encryption mask and the encryption key to convert the first encrypted input data into first masked decrypted data; performing, by a second masked decryption unit circuit of the private processing pipeline, a second masked decryption process using the second encryption mask and the encryption key to convert the second encrypted input data into second masked decrypted data; performing, by masked functional unit circuitry of the private processing pipeline, a masked arithmetic operation using the first masked decoded data and the second masked decoded data to generate a masked result; performing, by a masked encryption unit circuit of said private processing pipeline, a masked encryption process using a third mask and said encryption key to convert said masked result into an encrypted result; and outputting the encrypted result.
13. The method of claim 12 , wherein the masked arithmetic operation comprises at least one of a masked addition operation or a masked multiplication operation.
14. The method of claim 12 , wherein the masked arithmetic operations include masked comparison operations.
15. The method of claim 12 , wherein the masked arithmetic operation comprises a masked lookup operation.
16. The method of claim 12 , wherein the masked decoded data is protected by one of an arithmetic mask or a Boolean mask.
17. 13. The method of claim 12, further comprising: transforming, by a first transform unit circuit, a mask scheme applied to the first masked decoded data and the second masked decoded data; and transforming, by a second transform unit circuit, a mask scheme applied to the masked result.
18. A system comprising means for carrying out the method according to any one of claims 12 to 17.
19. In the computing system, receiving an encryption key from an encryption key manager, first and second encryption masks from a random number generator, and first and second encrypted input data; performing a first masked decryption process by a first masked decryption unit circuit using the first encryption mask and the encryption key to convert the first encrypted input data into first masked decrypted data; performing a second masked decryption process using the second encryption mask and the encryption key by a second masked decryption unit circuit, converting the second encrypted input data into second masked decrypted data; performing, by a masked functional unit circuit, a masked arithmetic operation using the first masked decoded data and the second masked decoded data to generate a masked result; performing, by a masked encryption unit circuit, a masked encryption process using a third mask and the encryption key to convert the masked result into an encrypted result; outputting the encrypted result; A computer program for executing the following:
20. 20. A machine-readable storage medium storing the computer program of claim 19.
Citation Information
Patent Citations
Apparatus and method for manipulating masked data
JP2006517036A
Method for securing a computer installation involving a cryptographic algorithm using boolean operations and arithmetic operations and the corresponding embedded system
US20040139136A1
Apparatus and method for detecting a potential attack on a cryptographic calculation
US20060159257A1
Operation based on two operands
US20150220307A1
Encryption Interface
US20160182223A1