Method and apparatus for improving computer cache performance and for protecting memory systems against some side channel attacks

US9396135B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9396135-B2
Application numberUS-201213458145-A
CountryUS
Kind codeB2
Filing dateApr 27, 2012
Priority dateMay 18, 2011
Publication dateJul 19, 2016
Grant dateJul 19, 2016

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

A physical cache memory that is divided into one or more virtual segments using multiple circuits to decode addresses is provided. An address mapping and an address decoder is selected for each virtual segment. The address mapping comprises two or more address bits as set indexes for the virtual segment and the selected address bits are different for each virtual segment. A cache address decoder is provided for each virtual segment to enhance execution performance of programs or to protect against the side channel attack. Each physical cache address decoder comprises an address mask register to extract the selected address bits to locate objects in the virtual segment. The foregoing can be implemented as a method or apparatus for protecting against a side channel attack.

First claim

Opening claim text (preview).

What is claimed is: 1. An apparatus comprising: one or more processors or cores; a physical memory communicably coupled to the processor(s) or core(s), wherein each location within the physical memory has a physical memory address; one or more physical cache memories communicably coupled to the processor(s) and the physical memory; two or more address mappings associated with each physical cache memory, wherein each of the two or more address mappings divide the physical memory address into at least a first set of address bits and a second set of address bits, the first set of address bits comprising a combination of two or more address bits from the physical memory address that are used as a set index to locate a program object in the physical cache memory, the second set of address bits are used as a tag to correctly identify a data in the physical cache memory with the physical memory address, a total number of bits used as the set index is less than a total number of bits in the physical memory address and the set index for the two or more address mappings are different; an address decoder associated with each address mapping; and a programmable address mask register with each address decoder that extracts (a) the set index from the physical memory address of the program object using changeable mask values which identify the address bits of the set index, and (b) the tag from the physical memory address of the program object using a complement of the changeable mask values which identify the address bits of the tag. 2. The apparatus as recited in claim 1 , wherein the changeable mask values are chosen and/or changed by a control software. 3. The apparatus as recited in claim 1 , wherein the changeable mask values are preset, selected at random, dynamically selected or selected based on one or more criteria. 4. The apparatus as recited in claim 1 , wherein the changeable mask values are chosen to minimize conflicts in the placement of data in cache memories. 5. The apparatus as recited in claim 1 , wherein the changeable mask values are chosen to create a plurality of cache partitions, each partition dedicated to a specific object, function, task or processor (core). 6. The apparatus as recited in claim 5 , wherein each address mapping created by the changeable mask values is restricted to a portion of the physical cache memory, thus creating multiple partitions within a cache and each partition may be dedicated for a specific object, function, program segment, task or processor. 7. The apparatus as recited in claim 1 , wherein the address mappings associated with the address decoders are used to collectively create a set associative cache memory. 8. The apparatus as recited in claim 7 , wherein the set associative cache includes any number of elements using as many address decoders as needed. 9. An apparatus comprising: one or more processors or cores; a physical memory communicably coupled to the processor(s) or core(s), wherein each location within the physical memory has a physical memory address; a physical cache memory (Level 1 cache) communicably coupled to each of the processors; two or more address mappings associated with each physical cache memory, wherein each of the two or more address mappings divide the physical memory address into at least a first set of address bits and a second set of address bits, the first set of address bits comprising a combination of two or more address bits from the physical memory address that are used as a set index to locate a program object in the physical cache memory, the second set of address bits are used as a tag to correctly identify a data in the physical cache memory with the physical memory address, a total number of bits used as the set index is less than a total number of bits in the physical memory address bits and the set index bits for the two or more address mappings are not identical; an address decoder associated with each address mapping; and a programmable address mask register with each address decoder that extracts (a) the set index from the physical memory address of the program object using changeable mask values which identify the address bits of the set index, and (b) the tag from the physical memory address of the program object using a complement of the changeable mask values which identify the address bits of the tag. 10. The apparatus as recited in claim 9 , wherein one of the cache address decoders of each Level-1 cache is dedicated to one or more encryption algorithms to prevent one or more side channel attacks. 11. The apparatus as recited in claim 10 , wherein the changeable mask values for the programmable address mask register associated with the address decoder dedicated for the encryption algorithm(s) is hidden. 12. The apparatus as recited in claim 10 , wherein the changeable mask values for the programmable address mask register of the dedicated address decoder is modified periodically or on program context switches. 13. The apparatus as recited in claim 9 , wherein each of the plurality of decoders associated with each Level-1 cache is dedicated to a specific program object or data structure. 14. The apparatus as recited in claim 13 , wherein the changeable mask values for the programmable address mask registers associated with the address decoders are chosen to optimize the placement of corresponding program object in Level-1 cache and minimize cache misses. 15. The apparatus as recited in claim 13 , wherein the changeable mask values for the programmable address mask registers of the plurality of decoders are collectively chosen to minimize Level-1 cache conflicts among the program objects. 16. The apparatus as recited in claim 9 , wherein each of the plurality of decoders associated with Level-1 cache is dedicated to a function or program segment. 17. The apparatus as recited in claim 16 , wherein the changeable mask values for the programmable address mask registers associated with the address decoders are chosen to optimize the Level-1 cache memory accesses and minimize cache misses caused by the corresponding function or program segment. 18. The apparatus as recited in claim 16 , wherein the changeable mask values for the programmable address mask registers of the plurality of decoders are collectively chosen to minimize the Level-1 cache memory conflicts among all program functions or segments. 19. The apparatus as recited in claim 9 , wherein each of the decoders associated with the Level-1 cache is dedicated to a task whenever multiple programs or tasks are executed on a single processor. 20. The apparatus as recited in claim 19 , wherein the changeable mask values for the programmable address mask registers associated with the address decoders are chosen to optimize the Level-1 cache memory accesses and minimize cache misses caused by the corresponding task or program. 21. The apparatus as recited in claim 19 , wherein the changeable mask values for the programmable address mask registers of the decoders are collectively chosen to minimize the Level-1 cache memory conflicts among all program functions or segments. 22. An apparatus comprising: two or more processors or cores; a physical memory communicably coupled to the processor(s) or cores, wherein each location within the physical memory has a physical memory address; one or more physical cache memories (Level 2 cache or Last Level Cache) communicably coupled to the processor(s) or core(s); two or more address mappings ass

Assignees

Inventors

Classifications

  • by using cryptography (for digital transmission H04L9/00) · CPC title

  • using pseudo-associative means, e.g. set-associative or hashing · CPC title

  • Performance improvement · CPC title

  • with two or more cache hierarchy levels (with multilevel cache hierarchies G06F12/0811) · CPC title

  • Security improvement · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9396135B2 cover?
A physical cache memory that is divided into one or more virtual segments using multiple circuits to decode addresses is provided. An address mapping and an address decoder is selected for each virtual segment. The address mapping comprises two or more address bits as set indexes for the virtual segment and the selected address bits are different for each virtual segment. A cache address decode…
Who is the assignee on this patent?
Kavi Krishna M, Univ North Texas
What technology area does this patent fall under?
Primary CPC classification G06F12/1408. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Jul 19 2016 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).