ES2546072T3 - Dispositivo para controlar el acceso a una estructura de memoria caché - Google Patents
Dispositivo para controlar el acceso a una estructura de memoria caché Download PDFInfo
- Publication number
- ES2546072T3 ES2546072T3 ES12184447.6T ES12184447T ES2546072T3 ES 2546072 T3 ES2546072 T3 ES 2546072T3 ES 12184447 T ES12184447 T ES 12184447T ES 2546072 T3 ES2546072 T3 ES 2546072T3
- Authority
- ES
- Spain
- Prior art keywords
- bits
- module
- cache
- cache structure
- access
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
Abstract
Un dispositivo para controlar el acceso a una estructura de memoria caché que comprende varios conjuntos caché durante la ejecución de al menos un programa informático, comprendiendo el dispositivo: - un módulo para generar valores semilla aleatorios o pseudo-aleatorios durante la ejecución del al menos un programa informático; - un módulo de función hash paramétrica para generar un identificador de conjunto caché para acceder a la estructura de memoria caché, generándose el identificador mediante la combinación de un valor semilla generado por el módulo para generar valores semilla y unos bits predeterminados de una dirección para acceder a una memoria principal asociada a la estructura de memoria caché.
Description
E12184447
25-08-2015
registro de control 42 de la figura 4, almacenando el registro de control 32c los bits 0 a 4 del valor semilla 16. El output del módulo de rotación 31c es enviado al módulo de concatenación 33.
-Módulo de rotación 31d (que corresponde al elemento lógico de rotación 41): el valor binario comprende los bits 5 a
5 31 (es decir, los bits predeterminados 17) de la dirección 20, que se almacenan en el registro de dirección 30 (que corresponde al registro de valor binario 40 de la figura 4); el registro de control 32d corresponde al registro de control 42 de la figura 4, almacenando el registro de control 32d los bits 5 a 9 del valor semilla 16. El output del módulo de rotación 31d es enviado al módulo de concatenación 33.
10 Más específicamente, uno de los inputs para todos los módulos de rotación 31a, 31b, 31c, 31d son los bits de la dirección 20 descartando los bits de desplazamiento 23. En la forma de realización particular de la figura 3, hay 5 bits de desplazamiento y la dirección 20 es de 32 bits de ancho, por lo que se utilizan 27 bits de la dirección. Éstos se amplían con 5 bits a la izquierda, cuyo valor es 00000, por lo que hay 32 bits en total. Cada módulo de rotación utiliza un conjunto diferente de bits como registro de control 32a; 32b; 32c; 32d. Estos bits se utilizan para determinar
15 cuántas posiciones se rota el valor binario (es decir, los bits predeterminados 17 de la dirección 20 ampliados con los 5 bits por la izquierda cuyo valor es 00000). En la figura 3, por ejemplo, el módulo de rotación de más a la izquierda 31a utiliza los 5 bits de menos peso de la dirección 20 después de descartar el desplazamiento. En otras palabras, utiliza los 5 bits de más a la derecha del par etiqueta 21 e índice 22 (bits en la posición 0, 1, 2, 3, 4 contando de derecha a izquierda). El segundo módulo de rotación de más a la izquierda 31b utiliza los siguientes 5
20 bits de menos peso del par etiqueta 21 e índice 22 (bits en las posiciones 5 a 9). Los otros dos módulos de rotación 31c, 31d usan bits del valor semilla 16. En particular, usan los bits 0 a 4 y los bits 5 a 9, respectivamente.
De esta manera, el módulo de concatenación 33 concatena los bits 5 a 31 de la dirección 20, los bits 0 a 31 del valor semilla 16, el output del primer módulo de rotación 31a (es decir, 32 bits, que son el resultado de hacer rotar el valor
25 binario que comprende los bits predeterminados 17 con 5 bits por la izquierda cuyo valor es 00000), el output del segundo módulo de rotación 31b (es decir, 32 bits) el output del tercer módulo de rotación 31c (es decir, 32 bits), y el output del cuarto módulo de rotación 31d (es decir, 32 bits), con lo que se obtiene un único valor binario de 187 bits (27 + 32 + 32 + 32 + 32 + 32 = 187 bits).
30 A continuación, varios módulos XOR 34a, 34b, 34c, 34d, 34e se aplican en cascada al output del módulo de concatenación 33 hasta que el valor binario tiene tantos bits como sea necesario para indexar todos los conjuntos caché. En consecuencia, los módulos XOR permiten reducir el número de bits del valor binario hasta que el valor binario tiene tantos bits como sea necesario para indexar todos los conjuntos caché.
35 El funcionamiento de un módulo XOR se describe de acuerdo con la figura 5. Como puede verse en la figura, el módulo XOR está configurado para el caso en que el valor binario tiene 9 bits, aunque su funcionamiento es el mismo independientemente del número de bits del valor binario utilizado como input. Básicamente, el módulo XOR divide en dos mitades los bits del valor binario almacenado en un primer registro 50 y lleva a cabo una operación XOR 51a, 51b, 51c, 51d entre cada par de bits en posiciones simétricas en cada una de las mitades, es decir, XOR
40 entre los bits 0 y 7, los bits 1 y 6, los bits 2 y 5, y los bits 3 y 4. Si el número de bits es impar, entonces el bit de mayor peso simplemente es propagado al output (este es el caso que se muestra en la figura 5). La operación XOR con 2 bits de input produce un "1" si los bits de input son diferentes (es decir, uno de ellos es "0" y el otro es "1") y un "0" si coinciden (ambos son o bien "0" o "1"). El valor binario obtenido se almacena en el registro de output 52.
45 Por ejemplo, si el valor binario de la concatenación proporcionado por el módulo de concatenación 33 tiene 200 bits, y el número de conjuntos caché es 32, se debe hacer XOR de los 200 bits hasta tener sólo 5 bits para indexar todos los conjuntos caché (5 es el logaritmo en base 2 de 32). Por lo tanto, diferentes niveles de módulos XOR reducirán el número de bitsde200 a 100, de 100 a 50, de 50 a 25, de 25 a 13, de 13a 7, y de 7 a 5.
50 Obsérvese que siempre que el número de bits del input es menor que dos veces el número de bits requerido para el índice de conjuntos (por ejemplo, 7 es menor que dos veces 5), la lógica XOR se aplica sólo para tantos pares de bits como el número de bits de input (7 en el ejemplo) menos el número de bits de output requeridos (5 en el ejemplo), lo que significa que se aplica sobre 2 pares de bits. Para ello, simplemente se propagan tantos bits como sea necesario desde el lado izquierdo del input (3 bits en este caso) y los bits restantes (4 bits en el ejemplo) son
9
Claims (1)
-
imagen1
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP12184447.6A EP2709017B1 (en) | 2012-09-14 | 2012-09-14 | Device for controlling the access to a cache structure |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2546072T3 true ES2546072T3 (es) | 2015-09-18 |
Family
ID=46845625
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES12184447.6T Active ES2546072T3 (es) | 2012-09-14 | 2012-09-14 | Dispositivo para controlar el acceso a una estructura de memoria caché |
Country Status (5)
Country | Link |
---|---|
US (1) | US9396119B2 (es) |
EP (1) | EP2709017B1 (es) |
JP (1) | JP2014059871A (es) |
CN (1) | CN103823763B (es) |
ES (1) | ES2546072T3 (es) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9367456B1 (en) * | 2013-06-14 | 2016-06-14 | Marvell International Ltd. | Integrated circuit and method for accessing segments of a cache line in arrays of storage elements of a folded cache |
US9652397B2 (en) * | 2014-04-23 | 2017-05-16 | Texas Instruments Incorporated | Dynamic power reduction and performance improvement in caches using fast access |
WO2016009247A1 (en) * | 2014-07-14 | 2016-01-21 | Via Alliance Semiconductor Co., Ltd. | Cache system with primary cache and overflow cache that use different indexing schemes |
US10089238B2 (en) * | 2014-07-17 | 2018-10-02 | Qualcomm Incorporated | Method and apparatus for a shared cache with dynamic partitioning |
EP3195178B1 (en) | 2014-07-23 | 2019-02-20 | GrammaTech, Inc. | Systems and/or methods for automatically protecting against memory corruption vulnerabilities |
GB2530722B (en) | 2014-09-19 | 2016-08-17 | Imagination Tech Ltd | Cache hashing |
CN105814549B (zh) * | 2014-10-08 | 2019-03-01 | 上海兆芯集成电路有限公司 | 具有主高速缓存器和溢出fifo高速缓存器的高速缓存器系统 |
DE102015205827A1 (de) * | 2015-03-31 | 2016-10-06 | Siemens Aktiengesellschaft | Verfahren zum Schutz sicherheitsrelevanter Daten in einem Cachespeicher |
US9846648B2 (en) * | 2015-05-11 | 2017-12-19 | Intel Corporation | Create page locality in cache controller cache allocation |
CN105335520B (zh) * | 2015-11-24 | 2018-11-16 | 交控科技股份有限公司 | 一种基于地铁综合自动化系统的数据处理方法及处理器 |
GB2546731B (en) * | 2016-01-20 | 2019-02-20 | Advanced Risc Mach Ltd | Recording set indicator |
GB2542646B (en) | 2016-03-18 | 2017-11-15 | Imagination Tech Ltd | Non-linear cache logic |
GB2560336B (en) * | 2017-03-07 | 2020-05-06 | Imagination Tech Ltd | Address generators for verifying integrated circuit hardware designs for cache memory |
US11200166B2 (en) | 2019-07-31 | 2021-12-14 | Micron Technology, Inc. | Data defined caches for speculative and normal executions |
US11048636B2 (en) * | 2019-07-31 | 2021-06-29 | Micron Technology, Inc. | Cache with set associativity having data defined cache sets |
US11194582B2 (en) | 2019-07-31 | 2021-12-07 | Micron Technology, Inc. | Cache systems for main and speculative threads of processors |
US11010288B2 (en) | 2019-07-31 | 2021-05-18 | Micron Technology, Inc. | Spare cache set to accelerate speculative execution, wherein the spare cache set, allocated when transitioning from non-speculative execution to speculative execution, is reserved during previous transitioning from the non-speculative execution to the speculative execution |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5649143A (en) * | 1995-06-02 | 1997-07-15 | Sun Microsystems, Inc. | Apparatus and method for providing a cache indexing scheme less susceptible to cache collisions |
US6275919B1 (en) * | 1998-10-15 | 2001-08-14 | Creative Technology Ltd. | Memory storage and retrieval with multiple hashing functions |
JP2003051819A (ja) * | 2001-08-08 | 2003-02-21 | Toshiba Corp | マイクロプロセッサ |
GB2412987B (en) * | 2002-04-15 | 2005-12-21 | Hewlett Packard Co | A programmable microprocessor cache index hashing function |
US20050259819A1 (en) * | 2002-06-24 | 2005-11-24 | Koninklijke Philips Electronics | Method for generating hashes from a compressed multimedia content |
US7606994B1 (en) * | 2004-11-10 | 2009-10-20 | Sun Microsystems, Inc. | Cache memory system including a partially hashed index |
US7373480B2 (en) * | 2004-11-18 | 2008-05-13 | Sun Microsystems, Inc. | Apparatus and method for determining stack distance of running software for estimating cache miss rates based upon contents of a hash table |
US7366871B2 (en) * | 2004-11-18 | 2008-04-29 | Sun Microsystems, Inc. | Apparatus and method for determining stack distance including spatial locality of running software for estimating cache miss rates based upon contents of a hash table |
US20060206706A1 (en) * | 2005-03-14 | 2006-09-14 | Bryan Dietz | Method and apparatus for dynamically distributing data flow in a communication network |
US7487397B2 (en) * | 2005-10-27 | 2009-02-03 | International Business Machines Corporation | Method for cache correction using functional tests translated to fuse repair |
US7937535B2 (en) * | 2007-02-22 | 2011-05-03 | Arm Limited | Managing cache coherency in a data processing apparatus |
US7743200B1 (en) * | 2007-05-24 | 2010-06-22 | Juniper Networks, Inc. | Instruction cache using perfect hash function |
US7979640B2 (en) * | 2008-07-28 | 2011-07-12 | Oracle America, Inc. | Cache line duplication in response to a way prediction conflict |
US8055848B2 (en) * | 2008-07-31 | 2011-11-08 | Samsung Electronics Co., Ltd. | Method and system for securing instruction caches using substantially random instruction mapping scheme |
-
2012
- 2012-09-14 ES ES12184447.6T patent/ES2546072T3/es active Active
- 2012-09-14 EP EP12184447.6A patent/EP2709017B1/en active Active
-
2013
- 2013-09-12 JP JP2013189544A patent/JP2014059871A/ja active Pending
- 2013-09-13 CN CN201310418254.0A patent/CN103823763B/zh active Active
- 2013-09-13 US US14/026,925 patent/US9396119B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2014059871A (ja) | 2014-04-03 |
US9396119B2 (en) | 2016-07-19 |
CN103823763A (zh) | 2014-05-28 |
EP2709017A1 (en) | 2014-03-19 |
US20140082284A1 (en) | 2014-03-20 |
EP2709017B1 (en) | 2015-05-27 |
CN103823763B (zh) | 2018-08-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2546072T3 (es) | Dispositivo para controlar el acceso a una estructura de memoria caché | |
KR102496680B1 (ko) | 디램-기반의 재설정 가능 로직 | |
US6915323B1 (en) | Macrocells supporting a carry cascade | |
US7218139B1 (en) | Programmable integrated circuit providing efficient implementations of arithmetic functions | |
US7218143B1 (en) | Integrated circuit having fast interconnect paths between memory elements and carry logic | |
JP6785222B2 (ja) | ヘテロジニアスマルチプロセッサシステムにおけるプロセッサ間割込のためのメカニズム | |
US7233168B1 (en) | Methods of setting and resetting lookup table memory cells | |
US7202697B1 (en) | Programmable logic block having improved performance when functioning in shift register mode | |
KR101672358B1 (ko) | Snow 3g 무선 보안 알고리즘을 가속화하기 위한 명령어 | |
US7279929B1 (en) | Integrated circuit with programmable routing structure including straight and diagonal interconnect lines | |
US9343122B2 (en) | Circuit configuration for selecting and outputting digital input data and operating method for same | |
US9898300B2 (en) | Instruction for fast ZUC algorithm processing | |
KR20160054793A (ko) | 쉬프트 레지스터 회로 및 이를 포함하는 메모리 장치 | |
ES2795832T3 (es) | Operaciones SIMD de anchura mixta que tienen operaciones de elementos pares y de elementos impares usando un par de registros para elementos de datos anchos | |
KR102191232B1 (ko) | 제로-딜레이 바이패스 멀티 플렉서 삽입을 위한 플립-플롭 회로 및 그것의 동작 방법 | |
ES2566922T3 (es) | Generación de número aleatorio | |
RU2012117468A (ru) | Программируемое логическое устройство | |
KR102081564B1 (ko) | 파워 게이팅 회로 및 이를 포함하는 전자 시스템 | |
US20170117886A1 (en) | Clock generation circuit having deskew function and semiconductor integrated circuit device including same | |
ES2807214T3 (es) | Procedimiento de protección de circuitos electrónicos contra interceptación por análisis de potencia y circuito electrónico que usa el mismo | |
ES2828365T3 (es) | Aparato y método para el control del tiempo de lectura en memoria flash habilitada por ECC | |
JP2016082587A5 (ja) | 半導体装置 | |
CN106024045B (zh) | 半导体器件 | |
CN105099599B (zh) | 交织、解交织方法以及相应的装置 | |
JP2015026341A (ja) | 論理演算装置 |