ES2345733T3 - Gestion eficiente de la jerarquia de memorias. - Google Patents
Gestion eficiente de la jerarquia de memorias. Download PDFInfo
- Publication number
- ES2345733T3 ES2345733T3 ES07710245T ES07710245T ES2345733T3 ES 2345733 T3 ES2345733 T3 ES 2345733T3 ES 07710245 T ES07710245 T ES 07710245T ES 07710245 T ES07710245 T ES 07710245T ES 2345733 T3 ES2345733 T3 ES 2345733T3
- Authority
- ES
- Spain
- Prior art keywords
- instruction
- data
- cache
- data cache
- extraction
- 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
- G06F12/0848—Partitioned cache, e.g. separate instruction and operand caches
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
- Communication Control (AREA)
- Debugging And Monitoring (AREA)
Abstract
Un procedimiento (500) para hallar una instrucción en una memoria caché de datos que es distinta a una memoria caché de instrucciones, comprendiendo el procedimiento: determinar (512) que un intento de extracción de la instrucción falló en la memoria caché de instrucciones, en una dirección de extracción de instrucción; caracterizado por: determinar (518) que un atributo de comprobación de memoria caché de datos ha sido fijado en un estado activo en una entrada de una tabla de páginas asociada a la dirección de extracción de la instrucción; seleccionar (520) la dirección de extracción de la instrucción como una dirección de extracción de datos en respuesta a la determinación de que falló un intento de extracción y de que el atributo de comprobación de memoria caché de datos está en el estado activo; y hacer un intento de extracción en la memoria caché de datos para la instrucción, en la dirección seleccionada de extracción de datos.
Description
Gestión eficiente de la jerarquía de
memorias.
La presente revelación se refiere, en general, a
técnicas para extraer instrucciones de una memoria que tiene
memoria caché para instrucciones y una memoria caché para datos y,
más específicamente, a un enfoque mejorado para extraer una
instrucción después de un fallo en la memoria caché de
instrucciones, extrayendo directamente la instrucción de la memoria
caché para datos si la instrucción reside allí.
Los productos usualmente portátiles, tales como
los teléfonos celulares, los ordenadores portátiles, las agendas
electrónicas (PDA) o similares, requieren el uso de un procesador
que ejecute programas tales como programas de comunicación y
multimedios. El sistema de procesamiento para tales productos
incluye un complejo de procesador y memoria para almacenar
instrucciones y datos. Por ejemplo, las instrucciones y los datos
pueden almacenarse en una memoria jerárquica que consiste en
niveles múltiples de memorias caché, incluyendo, por ejemplo, una
memoria caché para instrucciones, una memoria caché para datos y una
memoria del sistema. El uso de una memoria caché separada para
instrucciones y una memoria caché separada para datos se conoce como
la arquitectura Harvard. Como la arquitectura Harvard aísla la
memoria caché de instrucciones de la memoria caché para datos,
pueden surgir problemas cuando las instrucciones se almacenan en la
memoria caché para datos.
En el procesamiento general de sistemas con una
arquitectura Harvard, hay situaciones que surgen, en las cuales las
instrucciones pueden almacenarse en la memoria caché para datos. Por
ejemplo, si un programa está cifrado o en formato comprimido, debe
ser descifrado/descomprimido antes de permitir que el programa se
ejecute. El proceso de descifrado/descompresión trata el programa
cifrado/comprimido como datos a fin de de procesarlo, y almacena
las instrucciones descifradas/descomprimidas como datos en una
memoria caché para datos, por ejemplo, una memoria caché para datos
de nivel 1, en camino hacia la memoria del sistema. La generación de
instrucciones a partir de códigos de octetos Java es otra situación
en la cual las instrucciones se tratan inicialmente como datos que
se almacenan usando la trayectoria de los datos, incluyendo la
memoria caché para datos, hacia la memoria del sistema. El estado
inicial de un programa en el cual las instrucciones de programa
están tratándose como datos crea un problema de consistencia dentro
de la jerarquía de memorias, dado que al menos algunas partes de un
programa pueden residir en la memoria caché para datos antes de la
ejecución del programa.
A fin de resolver el problema de consistencia,
se adopta habitualmente un enfoque de software, en el cual el
programa, o segmentos de programa, en la memoria caché para datos se
llevan a la memoria del sistema bajo control de programa, la
memoria caché para datos se invalida habitualmente para limpiar la
memoria caché de segmentos de viejos programas, y las instrucciones
que comprenden el programa se extraen luego de la memoria del
sistema. El movimiento de las instrucciones desde la memoria caché
para datos hasta la memoria del sistema, y la extracción de las
instrucciones desde la memoria del sistema antes de la ejecución,
pueden ocupar varios ciclos, reduciendo el rendimiento del
procesador debido al sobregasto de tiempo de procesamiento que debe
tener lugar para acceder a instrucciones que residen inicialmente en
la memoria caché para datos antes de que el programa se ejecute en
el procesador.
El documento US 2002/010837 describe un sistema
y procedimiento de memoria de códigos para controlar la memoria
caché.
Entre sus diversos aspectos, la presente
revelación reconoce que el sobregasto de tratar con instrucciones
en una memoria caché para datos puede estar limitando el rendimiento
del procesador y, posiblemente, limitando la calidad del servicio
que puede lograrse. La presente revelación también reconoce que
puede ser deseable acceder a instrucciones que están residentes en
una memoria caché para datos.
Además, la presente revelación describe un
aparato, procedimientos y un medio legible por ordenador para
extraer directamente una instrucción desde una memoria caché para
datos cuando esa instrucción no ha sido hallada en la memoria caché
para instrucciones, un fallo de la memoria caché para instrucciones,
y se determina que la instrucción está en la memoria caché para
datos. Extrayendo la instrucción directamente de la memoria caché
para datos, después de un fallo de la memoria caché para
instrucciones, puede mejorarse el rendimiento del procesador.
Según la invención, se proporciona el
procedimiento de la reivindicación 1, la disposición de procesador
de la reivindicación 11 y el procedimiento de la reivindicación
15.
Una comprensión más completa de los presentes
conceptos inventivos revelados en el presente documento, así como
otras características, serán evidentes a partir de la siguiente
Descripción Detallada y de los dibujos adjuntos.
La Fig. 1 es un diagrama en bloques de un
sistema ejemplar de comunicación inalámbrica.
La Fig. 2 es un diagrama en bloques funcionales
de un complejo de procesador y memoria, en el cual el funcionamiento
de la memoria caché para datos está adaptado para operaciones
eficientes, en términos de memoria, de extracción de
instrucciones;
La Fig. 3 es un diagrama de flujo de un
procedimiento ejemplar para extraer una instrucción almacenada en
una memoria caché para datos, a fin de reducir el sobregasto de
gestión de fallos asociado a la instrucción inicialmente almacenada
como datos en la memoria caché para datos;
La Fig. 4 es un diagrama en bloques funcionales
de un complejo de procesador y memoria que incluye una tabla de
páginas de instrucciones, en el cual el funcionamiento de la memoria
caché para datos está adaptado para una eficiente extracción de
instrucciones;
La Fig. 5 es un diagrama de flujo de un
procedimiento ejemplar para extraer una instrucción almacenada en
una memoria caché para datos; y
La Fig. 6 es un diagrama de flujo de un
procedimiento ejemplar para ejecutar código que se genera como datos
y que se almacena en una memoria caché para datos.
Aspectos inventivos de la presente revelación se
ilustrarán más completamente con referencia a los dibujos adjuntos,
en los cuales se muestran varias realizaciones de la revelación. La
realización de esta invención, sin embargo, puede realizarse de
diversas formas, y no debería interpretarse como limitada a las
realizaciones expuestas en el presente documento. Antes bien, estas
realizaciones se proporcionan a fin de que esta revelación sea
exhaustiva y completa, y que transmita totalmente el alcance de la
revelación a aquellos versados en la tecnología.
Se apreciará que la presente revelación puede
realizarse como procedimientos, sistemas o productos de programa de
ordenador. En consecuencia, los presentes conceptos inventivos
revelados en el presente documento pueden tomar la forma de una
realización de hardware, una realización de software o una
realización que combina aspectos de software y de hardware. Además,
los presentes conceptos inventivos revelados en el presente
documento pueden tomar la forma de un producto de programa de
ordenador en un medio de almacenamiento utilizable por ordenador,
con código de programa utilizable por ordenador realizado en el
medio. Cualquier medio adecuado legible por ordenador puede
utilizarse, incluyendo los discos rígidos, los
CD-ROM, los dispositivos ópticos de almacenamiento,
las memorias flash o los dispositivos magnéticos de
almacenamiento.
El código de programa de ordenador que pueda
compilarse, ensamblarse y cargarse en un procesador puede escribirse
inicialmente en un lenguaje de programación tal como C, C++,
Ensamblador nativo, JAVA®, Smalltalk, JavaScript®, Visual Basic®,
TSQL, Perl, o en varios otros lenguajes de programación, de acuerdo
a las enseñanzas de la presente revelación. El código de programa,
o el medio legible por ordenador, se refiere a código de lenguaje
de máquina, tal como el código objeto, cuyo formato es comprensible
por un procesador. Las realizaciones de software de la revelación
no dependen de su implementación con un lenguaje de programación
específico. Cuando se ejecuta el código de programa, se crea una
nueva tarea que define el entorno operativo para el código de
programa.
La Fig. 1 muestra un sistema 100 ejemplar de
comunicación inalámbrica, en el cual puede emplearse una realización
de la revelación. Con fines de ilustración, la Fig. 1 muestra tres
unidades remotas 120, 130 y 150, y dos estaciones base 140. Se
reconocerá que los sistemas típicos de comunicación inalámbrica
pueden tener unidades remotas y estaciones base. Las unidades
remotas 120, 130 y 150 incluyen componentes de hardware, componentes
de software, o ambos, según lo representado por los componentes
125A, 125C y 125B, respectivamente, que han sido adaptados para
realizar la revelación, según se expone adicionalmente más adelante.
La Fig. 1 muestra señales 180 del enlace directo desde las
estaciones base 140 a las unidades remotas 120, 130 y 150, y señales
190 del enlace inverso desde las unidades remotas 120, 130 y 150 a
las estaciones base 140.
En la Fig. 1, la unidad remota 102 se muestra
como un teléfono móvil, la unidad remota 130 se muestra como un
ordenador portátil y la unidad remota 150 se muestra como una unidad
remota de ubicación fija en un sistema de bucle local inalámbrico.
Por ejemplo, las unidades remotas pueden ser teléfonos celulares,
unidades de sistemas de mano de comunicación personal (PCS),
unidades de datos portátiles tales como agendas electrónicas, o
unidades de datos de ubicación fija tales como equipos de lectura de
contadores. Aunque la Fig. 1 ilustra las unidades remotas según las
enseñanzas de la revelación, la revelación no se limita a estas
unidades ejemplares ilustradas. La revelación puede ser empleada de
manera adecuada en cualquier dispositivo con un procesador con una
memoria caché para instrucciones, una memoria caché para datos y una
memoria de sistema.
La Fig. 2 es un diagrama en bloques funcionales
de un complejo 200 de procesador y memoria, en el cual el
funcionamiento normal de la memoria caché para datos está adaptado
para una extracción más eficiente de instrucciones, según se
describe adicionalmente en el presente documento. El complejo 200 de
procesador y memoria incluye un procesador 202, una memoria caché
204 de instrucciones de nivel 1 (L1), una unidad 206 de control de
memoria caché de instrucciones L1, una memoria caché 208 de datos
L1, una unidad 210 de control de memoria caché de datos L1, una
sección 211 de control y una memoria 212 de sistema. La unidad 206
de control de memoria caché de instrucciones L1 puede incluir una
memoria direccionable por contenido de instrucciones, para la
asociación de etiquetas de instrucciones, como la que puede usarse
en una memoria caché asociativa fijada. La sección 211 de control
incluye los elementos 220, 226 y 234 de multiplexado, los
dispositivos 232 y 238 de compuerta, y un invertidor 240. Los
dispositivos periféricos que pueden conectarse con el complejo
procesador no se muestran para mayor claridad de la exposición de
la presente revelación. El complejo 200 de procesador y memoria
puede emplearse de manera adecuada en los componentes 125A a 125C
para ejecutar código de programa que está almacenado en la memoria
212 del sistema.
A fin de extraer una instrucción en el complejo
200 de procesador y memoria, el procesador 202 genera una dirección
214 de extracción de instrucción (DI) de la instrucción deseada y
envía la dirección de extracción de la instrucción a la unidad 206
de control de memoria caché de instrucciones L1. La unidad 206 de
control de memoria caché de instrucciones L1 comprueba si la
instrucción está presente en la memoria caché 204 de instrucciones
L1. Esta comprobación se lleva a cabo, por ejemplo, mediante el uso
de una memoria direccionable por contenido interno (CAM) en una
búsqueda asociativa de una coincidencia con la dirección de
extracción de instrucción proporcionada. Cuando la instrucción está
presente, ocurre una coincidencia y la unidad 206 de control de
memoria caché de instrucciones L1 indica que la instrucción está
presente en la memoria caché 204 de instrucciones. Si la
instrucción no está presente, no se hallará ninguna coincidencia en
la búsqueda asociativa CAM y la unidad 206 de control de memoria
caché de instrucciones L1 indica que la instrucción no está
presente en la memoria caché 204 de instrucciones.
Si la instrucción está presente, se selecciona
la instrucción en la dirección de extracción de instrucción en la
memoria caché 204 de instrucciones. La instrucción se envía luego
por el bus 216 de salida de instrucciones, a través del elemento
multiplexador 226, al procesador 202.
Si la instrucción no está presente en la memoria
caché de instrucciones, se activa una señal 218 de fallo de memoria
caché de instrucciones (I\textdollarM=1), lo que indica que ha
ocurrido un fallo. Al detectar un fallo en la memoria caché de
instrucciones, el complejo 200 de procesador y memoria intenta
extraer la instrucción deseada de la memoria caché 208 de datos L1.
Con este fin, el elemento 220 multiplexador es habilitado por la
señal 218 de fallo (I\textdollarM=1) para seleccionar la dirección
214 de extracción de instrucción. La dirección 214 de extracción de
instrucción atraviesa luego un elemento 220 multiplexador, sobre un
bus 222 de direcciones D y se envía a la unidad 210 de control de
memoria caché de datos L1 como una dirección de extracción de datos.
Se hace notar que el complejo 200 de procesador y memoria
representa una vista lógica del sistema, ya que, por ejemplo, la
aplicación de la dirección 214 de extracción de instrucción sobre el
bus 222 de direcciones D puede requerir un arbitraje o un periodo
de espera antes de que pueda obtenerse el acceso al bus 222 de
direcciones D. El enfoque adoptado para multiplexar la dirección 214
de extracción de instrucción con la dirección 223 de datos generada
por el procesador puede variar, y depende del enfoque específico
adoptado en los diseños de la memoria caché de instrucciones y la
memoria caché de datos.
La unidad 210 de control de memoria caché de
datos L1 comprueba si hay un acierto en la memoria caché 208 de
datos L1 en la dirección de extracción de instrucción proporcionada,
mediante una búsqueda asociativa interna, por ejemplo, de la
dirección de extracción de instrucción proporcionada. Un acierto
indica que hay datos presentes en la dirección de extracción de
instrucción proporcionada. Estos datos son, en verdad, una
instrucción, y la entrada de la memoria caché de datos se extrae
desde la memoria caché 208 de datos L1 y se coloca en el bus 224 de
salida de datos. A fin de proporcionar los datos extraídos de la
memoria caché 208 de datos L1 como una instrucción para el
procesador, puede emplearse de manera adecuada un elemento 226
multiplexador. El bus 224 de salida de datos es seleccionado por el
elemento 226 multiplexador colocando los datos extraídos de la
memoria caché de datos en el bus 228 de instrucciones del
procesador, cuando hay un fallo en la memoria caché de
instrucciones seguido por un acierto en la memoria caché de datos en
la dirección de extracción de instrucción.
La ocurrencia del fallo en la memoria caché de
instrucciones, indicada por estar activada en alto la señal 218 de
fallo (I\textdollarM=1), seguida por el acierto en la memoria
caché de datos en la misma dirección de extracción de instrucción,
indicado por estar activada en alto la señal 230 de acierto
(D\textdollarH=1), está lógicamente representada por la compuerta
AND 232. La salida de la compuerta AND 232 es la señal 233 de
selección para el elemento 226 multiplexador. La instrucción
hallada en la memoria caché de datos también es multiplexada, para
cargarla en la memoria caché 204 de instrucciones, por el elemento
234 multiplexador, usando la señal 233 de selección proporcionada
lógicamente por la compuerta AND 232. Mientras el bus 224 de salida
de datos está remitiendo la instrucción al procesador, la entrada
236 de lectura de datos del procesador es desactivada por la
compuerta AND 238, usando el invertidor 240 para proporcionar una
inversa de la señal 233 de selección.
Si se determinó que hubo un fallo en la memoria
caché de datos en la dirección de extracción de instrucción
proporcionada, la instrucción no está en la memoria caché de datos,
y la instrucción se extrae desde la memoria 212 del sistema. La
señal 230 de acierto (D\textdollarH=1) también se envía a la
unidad 206 de control de memoria caché de instrucciones L1 para
indicar, por su estado inactivo, que ocurrió un fallo en el intento
de localizar la instrucción en la memoria caché 208 de datos.
Obsérvese que pueden usarse otros medios de señalización para
indicar que ocurrió un fallo en el intento de localizar la
instrucción en la memoria caché 208 de datos. Como la instrucción
no está en la memoria caché 204 de instrucciones, y no está en la
memoria caché 208 de datos, debe extraerse de la memoria 212 del
sistema.
Una vez que se obtiene la instrucción de la
memoria 212 del sistema, se envía al procesador 202. Obsérvese que
las trayectorias desde la memoria del sistema, para suministrar una
instrucción debido a un fallo en la memoria caché de instrucciones
o la memoria caché de datos, y para suministrar datos debido a un
fallo en la memoria caché de datos, no se muestran, a fin de
ilustrar con claridad la presente revelación.
La Fig. 3 es un diagrama ejemplar de datos de un
procedimiento 300 para extraer directamente una instrucción en una
memoria caché de datos después de un fallo en la memoria caché de
instrucciones, a fin de minimizar el sobregasto usualmente asociado
a la gestión de la instrucción inicialmente almacenada como datos en
la memoria caché de datos. Las relaciones ejemplares entre las
etapas de la Fig. 3 y los elementos de la Fig. 2 se indican
describiendo cómo los elementos del complejo 200 de procesador y
memoria pueden cooperar de manera adecuada para llevar a cabo las
etapas del procedimiento 300.
A fin de extraer una instrucción, se genera una
dirección de extracción de instrucción en la etapa 304. Por
ejemplo, un procesador, tal como el procesador 202, genera una
dirección de extracción de instrucción de la instrucción deseada, y
envía la dirección 214 de extracción de instrucción al controlador
206 de memoria caché de instrucciones L1. En la etapa 308, se
determina si hay un acierto o un fallo en la memoria caché de
instrucciones. Por ejemplo, el controlador 206 de memoria caché de
instrucciones L1 comprueba si la instrucción está presente en la
memoria caché 204 de instrucciones. Si la instrucción está presente,
su presencia se indica como un acierto. Si la instrucción está
presente, el procedimiento 300 avanza a la etapa 312 y se selecciona
la instrucción en la dirección de extracción de la instrucción. En
la etapa 316, la instrucción se envía al procesador. Por ejemplo,
la instrucción seleccionada se coloca en el bus 216 de salida de
instrucciones y se envía al procesador 202 a través del elemento
226 multiplexador.
Si la instrucción no está presente en la memoria
caché de instrucciones, según lo determinado en la etapa 308, se da
una indicación de que ha ocurrido un fallo y se hace un intento de
extraer la instrucción de la memoria caché de datos en la etapa
320. Por ejemplo, la dirección 214 de extracción de instrucción se
envía, a través del elemento 220 multiplexador, como una dirección
222 de extracción de datos, a la memoria caché 208 de datos. En la
etapa 324 se hace una comprobación, por ejemplo, por parte del
controlador 210 de memoria caché de datos L1, en cuanto a si hay
datos válidos presentes en la dirección de extracción de instrucción
proporcionada. Si hay datos válidos presentes en la memoria caché
de datos en la dirección de extracción de instrucción
proporcionada, los datos son, de hecho, una instrucción, y la
entrada de la memoria caché de datos se extrae en la etapa 328. En
la etapa 316, los datos extraídos de la memoria caché de datos se
envían como una instrucción al procesador. Por ejemplo, los datos
extraídos por el bus 224 de salida de datos desde la memoria caché
208 de datos se envían a través del elemento 226 multiplexador y se
suministran como una instrucción al procesador 202 por el bus 228
de instrucciones.
En la etapa 324, si hubo un fallo en la memoria
caché de datos en la dirección de extracción de instrucción
proporcionada, la instrucción no está en la memoria caché de datos
y, en la etapa 332, la instrucción se extrae de la memoria del
sistema. Por ejemplo, la señal 230 D\textdollarH=1 de acierto en
memoria caché de datos se envía a la unidad 206 de control de
memoria caché de instrucciones L1 para indicar, por su estado
inactivo, que ocurrió un fallo en el intento de localizar la
instrucción en la memoria caché 208 de datos. Como la instrucción no
está en la memoria caché 204 de instrucciones y no está en la
memoria caché 208 de datos, debe extraerse de la memoria 212 del
sistema. Una vez que se ha obtenido la instrucción de la memoria 212
del sistema, la instrucción se envía al procesador 202, según lo
indicado en la etapa 316.
La Fig. 4 es un diagrama en bloques funcionales
de un complejo 400 de procesador y memoria que incluye una tabla de
páginas de instrucciones, en el cual el funcionamiento normal de la
memoria caché de datos está adaptado para un funcionamiento
eficiente de la extracción de instrucciones, según la presente
revelación. El complejo 400 de procesador y memoria incluye un
procesador 402, una memoria caché 404 de instrucciones de nivel 1
(L1), una unidad de gestión de memoria de instrucciones (IMMU) y
control 406 de memoria caché (IMMU/\textdollarControl), una
memoria caché 408 de datos L1, una unidad de gestión de memoria de
datos (DMMU) y control 410 de memoria caché
(DMMU/\textdollarControl), una sección 411 de control y una
jerarquía 412 de memorias. El IMMU/\textdollarControl 406 puede
incluir, por ejemplo, un proceso de traducción de direcciones de
instrucciones de virtuales a físicas. La sección 411 de control
incluye los elementos 423, 438 y 448 de multiplexado, los
dispositivos 428, 444 y 452 de compuerta, y un invertidor 454. Los
dispositivos periféricos que pueden conectarse con el complejo
procesador no se muestran, para mayor claridad de la exposición de
la presente revelación. El complejo 400 de procesador y memoria
pueden emplearse de manera adecuada en los componentes 125A a 125C,
para ejecutar código de programa que está almacenado en la memoria
412 del sistema.
La memoria caché de instrucciones puede usar un
almacén temporal de búsqueda colateral de traducciones (TLB) que
contiene una tabla de páginas de instrucciones, a fin de mejorar las
prestaciones de la memoria caché de instrucciones. La tabla de
páginas de instrucciones tiene, por ejemplo, una lista de números de
páginas físicas asociadas a números de páginas virtuales, e
información adicional asociada a cada entrada de número de página.
Una entrada de la tabla de páginas de instrucciones se crea cuando
una página de memoria en la gama de direcciones de instrucciones se
carga en la memoria caché de instrucciones o la memoria caché de
datos. La carga de una página de memoria puede ocurrir bajo la
supervisión de un sistema operativo (OS). En funcionamiento, la
tabla de páginas de instrucciones se examina en búsqueda de una
coincidencia con un número de página virtual proporcionado al TLB.
Si bien se describe en el presente documento un TLB con una tabla de
páginas de instrucciones como parte de la MMU de instrucciones y
control 406 de memoria caché, se reconocerá que pueden usarse
enfoques alternativos.
A fin de extraer una instrucción en el complejo
400 de procesador y memoria, el procesador 402 genera una dirección
414 de extracción de instrucción (DI) para la instrucción deseada y
envía la dirección de extracción de instrucción al
IMMU/\textdollarControl 406. Se selecciona una entrada adecuada en
una tabla de páginas de instrucciones, tal como la tabla 416 de
páginas situada en el IMMU/\textdollarControl 406, sobre la base
de un número de página proporcionado que es parte de la DI 414. La
dirección de instrucción basada en la entrada seleccionada de la
tabla de páginas se combina con una dirección de página, también
parte de la DI 414, generando una dirección 418 de instrucción (DG)
que se aplica internamente a la memoria caché 404 de instrucciones
L1. La entrada seleccionada de la tabla 416 de páginas incluye
información adicional almacenada con esa entrada. Uno de los bits
adicionales de información que pueden almacenarse con cada entrada
de la tabla de páginas es un atributo de comprobación de memoria
caché de datos, etiquetado como el bit D 420.
El bit D se fija en "1" cuando se crea la
entrada en la tabla de páginas de instrucciones debido a la carga
de una página de instrucciones en la memoria caché de datos, o
cuando se generan instrucciones que se almacenan en una página en
la memoria caché de datos durante el procesamiento. El bit D es
habitualmente fijado por el sistema operativo (OS) para indicar que
el contenido de una página puede usarse tanto cual datos como cual
instrucciones. En un escenario ejemplar, un programa, que genera
datos que serán usados como instrucciones, llama al OS para
solicitar que se marquen las páginas adecuadas fijando el bit D en
las entradas asociadas de la tabla de páginas. En otro escenario,
un programa también puede solicitar páginas al OS que ya estén
configuradas con el bit D activado. El bit D no necesariamente
necesita ser desactivado explícitamente. Si un programa especifica
que la memoria caché de datos puede contener instrucciones, causando
que se active(n) el bit D, o los bits D, adecuado(s),
entonces esa especificación puede ser válida a lo largo de la vida
del programa. El bit D, o los bits D, puede(n) desactivarse
luego cuando la tabla de páginas se usa para un proceso
distinto.
El IMMU/\textdollarControl 406 comprueba si la
instrucción está presente en la memoria caché 404 de instrucciones.
Si la instrucción está presente, esta presencia se indica como un
acierto. Si la instrucción está presente, se selecciona la
instrucción en la dirección de extracción de instrucción de la
memoria caché 404 de instrucciones. La instrucción se envía luego
por el bus 422 de salida de instrucciones, a través del elemento 438
multiplexador, al procesador 402. Si la instrucción no está
presente, se da una indicación, por parte del
IMMU/\textdollarControl 406, de que ha ocurrido un fallo, y se
activa una señal 424 de fallo de memoria caché de instrucciones
(I\textdollarM=1), indicando que ha ocurrido un fallo.
Al detectar un fallo en la memoria caché de
instrucciones, conjuntamente con el bit D seleccionado activado en
"1", el complejo 400 de procesador y memoria intenta extraer la
instrucción deseada de la memoria caché 408 de datos L1. Este
intento puede lograrse de manera adecuada, por ejemplo, usando el
bit D seleccionado en una función de compuerta. El bit D 420 de la
entrada seleccionada de la tabla de páginas se envía como la señal
426 del bit D. La señal 426 del bit D, por ejemplo, es sometido a la
operación lógica AND por la compuerta AND 428, con la indicación
424 de fallo (I\textdollarM=1). La salida 430 de la compuerta AND
428 es usada luego por el elemento 432 multiplexador para
seleccionar la dirección 418 de instrucción generada (DG), o una
dirección 433 de datos del procesador 402. Cuando se selecciona, la
DG 418 atraviesa el elemento 432 multiplexador sobre el bus 434 de
direcciones D (DD), y se envía a la MMU de datos y control 410 de
memoria caché para determinar si la instrucción reside en la
memoria caché 408 de datos en la dirección de extracción de datos.
Se observa que el complejo 400 de procesador y memoria representa
una vista lógica del sistema, ya que, por ejemplo, la aplicación de
la dirección 418 de instrucción generada sobre el bus 434 de
direcciones D puede requerir un arbitraje o un periodo de espera
antes de que pueda obtenerse el acceso al bus 434 de direcciones D.
El enfoque adoptado para multiplexar la dirección 418 de
instrucción generada con la dirección 433 de datos generada por el
procesador puede variar, y depende del enfoque específico adoptado
en los diseños de la memoria caché de instrucciones y la memoria
caché de datos.
La memoria caché de datos comprueba luego si hay
datos válidos presentes en la dirección de extracción de
instrucción proporcionada. Si hay datos válidos presentes en la
dirección de extracción de instrucción proporcionada, los datos, de
hecho, son una instrucción, y la entrada de la memoria caché de
datos se extrae de la memoria caché 408 de datos L1, y se coloca en
el bus 436 de salida de datos. A fin de proporcionar la entrada de
memoria caché de datos como una instrucción al procesador, se usa
un elemento 438 multiplexador, por ejemplo. El elemento 438
multiplexador es habilitado para pasar del bus 436 de salida de
datos al bus 440 de instrucciones del procesador cuando hay un
fallo en la memoria caché de instrucciones y el bit D seleccionado
está fijado en "1", seguido por un acierto en la memoria caché
de datos en la dirección de extracción de instrucción. La
ocurrencia del fallo en la memoria caché de instrucciones, indicada
por estar activada en alto la señal 424 de fallo
(I\textdollarM=1), y fijada en "1" la señal 426 del bit D,
seguida por el acierto en la memoria caché de datos en la dirección
de instrucción generada, indicado por estar activada en alto la
señal 442 de acierto (D\textdollarH=1), está lógicamente
representada por la compuerta AND 444. La salida de la compuerta AND
444 es la señal 446 de selección para el elemento 438
multiplexador. La instrucción en el bus de salida de datos también
está multiplexada, para la carga en la memoria caché de
instrucciones, por el elemento 448 multiplexador, usando la señal
446 de selección. Mientras el bus 436 de salida de datos de la
memoria caché de datos L1 está remitiendo la instrucción al
procesador 402, el bus 436 de salida de datos está bloqueado, para
las transferencias a la entrada 450 de lectura de datos del
procesador, por la compuerta AND 452, usando una inversa de la señal
446 de selección proporcionada por el invertidor 454.
Si se determinó que hubo un fallo en la memoria
caché de datos en la dirección de extracción de instrucción
proporcionada, la instrucción no está en la memoria caché de datos,
y la instrucción se extrae de la memoria 412 del sistema. La señal
442 de acierto (D\textdollarH=1) también se envía al
IMMU/\textdollarControl 406 para indicar, por su estado inactivo,
que ocurrió un fallo en el intento de localizar la instrucción en la
memoria caché 408 de datos. Una vez que se ha obtenido la
instrucción de la memoria 412 del sistema, se envía al procesador
402. Obsérvese que las trayectorias desde la jerarquía de memorias
para proporcionar una instrucción, debido a un fallo en la memoria
caché de instrucciones o la memoria caché de datos, y para
suministrar datos debido a un fallo en la memoria caché de datos,
no se muestran, pero puede emplearse cualquiera entre una amplia
variedad de enfoques de conexión, coherentes con la aplicación y el
procesador empleados.
La Fig. 5 es un diagrama ejemplar de flujo de un
procedimiento 500 para extraer una instrucción en una memoria caché
de datos después de un fallo en la memoria caché de instrucciones, y
un atributo de comprobación de la memoria caché de datos indica que
la memoria caché de datos debería comprobarse para la instrucción.
Las relaciones ejemplares entre las etapas de la Fig. 5 y los
elementos de la Fig. 4 se indican haciendo referencia a elementos
ejemplares del complejo 400 de procesador y memoria, que pueden
emplearse de manera adecuada para llevar a cabo las etapas del
procedimiento 500 de la Fig. 5.
A fin de extraer una instrucción, una dirección
de extracción de instrucción para la instrucción deseada se genera
en la etapa 502. Por ejemplo, un procesador, tal como el procesador
402, genera una dirección de extracción de instrucción y envía la
dirección 414 de extracción de instrucción al controlador 406 de
memoria caché de instrucciones L1. La dirección de extracción de
instrucción puede ser una dirección virtual compuesta por un número
504 de página y una dirección 506 de página. En la etapa 508, se
selecciona una entrada adecuada en una tabla de páginas de
instrucciones, tal como la tabla 416 de páginas de instrucciones,
sobre la base del número 504 de página proporcionado. La dirección
generada, basada en la entrada seleccionada de la tabla de páginas,
se combina en la etapa 509 con la dirección 506 de página para
producir una dirección de memoria caché de instrucciones.
La entrada seleccionada de la tabla 416 de
páginas de instrucciones incluye la información adicional almacenada
con esa entrada. Uno de los bits adicionales de información que
puede almacenarse con cada entrada de la tabla de páginas es un
atributo de comprobación de memoria caché de datos, tal como el bit
etiquetado como el bit D 420. Este atributo se selecciona en la
etapa 510.
En la etapa 512, se determina si hay un acierto
o un fallo en la memoria caché de instrucciones. Por ejemplo, la
memoria caché de instrucciones comprueba si la instrucción está
presente. Si la instrucción está presente, su presencia se indica
como un acierto. Si la instrucción está presente, el procedimiento
500 avanza a la etapa 514 y se selecciona la instrucción en la
dirección de extracción de instrucción. En la etapa 516, la
instrucción se envía al procesador. Por ejemplo, la instrucción
seleccionada se coloca en el bus 422 de salida de instrucciones y
se envía a través del elemento 438 multiplexador al bus 440 de
instrucciones del procesador 402.
Si la instrucción no está presente en la memoria
caché de instrucciones, según lo determinado en la etapa 512, se da
una indicación de que ha ocurrido un fallo, y el procedimiento 500
avanza a la etapa 518. En la etapa 518, se comprueba si el bit D
que fue seleccionado en la etapa 510 está fijado en "1", lo que
indica que la memoria caché de datos debería comprobarse en busca
de la instrucción. Si el bit D fue fijado en "1", el
procesador intenta extraer la instrucción de la memoria caché de
datos en la etapa 520. Por ejemplo, la dirección generada 418 de
extracción de instrucción se envía como una dirección 434 de
extracción de datos a la memoria caché de datos.
En la etapa 524, la memoria caché de datos
comprueba si hay datos válidos presentes en la dirección de
extracción de instrucción proporcionada. Si hay datos válidos
presentes en la dirección de extracción de instrucción
proporcionada, los datos, de hecho, son una instrucción, y le
entrada de la memoria caché de datos se extrae en la etapa 528. En
la etapa 516, los datos extraídos de la memoria caché de datos se
envían como una instrucción el procesador. Por ejemplo, los datos
extraídos por el bus 436 de salida de datos se envían a través del
elemento 438 multiplexador, y se suministran como una instrucción
al procesador 402 por el bus 440 de instrucciones.
Volviendo a la etapa 518, si se determina en la
etapa 518 que el bit D era un "0", se sabe que la instrucción
no está presente en la memoria caché de datos, y el procedimiento
500 avanza a la etapa 522. A la etapa 522 también se llega en la
situación donde hubo un fallo en la memoria caché de datos en la
dirección de extracción de instrucción proporcionada, según lo
determinado en la etapa 524. En cualquier caso, se sabe que la
instrucción no está presente en la memoria caché de instrucciones
ni en la memoria caché de datos, y la instrucción se extrae de la
memoria del sistema, según lo indicado en la etapa 522. Por ejemplo,
se accederá a la memoria 412 del sistema para la instrucción. Una
vez que se obtiene la instrucción de la memoria 412 del sistema, la
instrucción se envía al procesador 402, según se indica en la etapa
516.
La Fig. 6 es un diagrama de flujo ejemplar de un
procedimiento 600 para ejecutar código de programa que se genera
como datos y se almacena en una memoria caché de datos. El código de
programa que obedece a este procedimiento puede ejecutarse en un
complejo de procesador y memoria con una memoria caché de
instrucciones, una memoria caché de datos y una memoria del
sistema, tales como las expuestas con respecto a las Figs. 2 y 4, y
puede emplearse de manera adecuada en los componentes 125A a 125C
de la Fig. 1.
En la etapa 602, un programa genera código. Tal
generación puede ocurrir, por ejemplo, cuando un programa genera
código ejecutable a partir de un programa comprimido. El código
generado se trata inicialmente como datos y se almacena en una
memoria caché de datos después de ser generado. Antes de ejecutar el
programa, se invalida una memoria caché de instrucciones en la
etapa 604. La etapa de invalidación garantiza que no hay ninguna
instrucción en la misma dirección que el código generado. En la
etapa 606, el código generado es ejecutado por el procesador
extrayendo instrucciones del espacio de direcciones del programa en
la memoria caché de instrucciones, y puede incluir instrucciones
que se almacenan en la memoria caché de datos. Para aquellas
instrucciones almacenadas en la memoria caché de datos, se siguen
las técnicas de la presente revelación, lo que permite comprobar la
memoria caché de datos en busca de instrucciones en caso de
ocurrencia de un fallo en la memoria caché de instrucciones. Al
hallar una instrucción en la memoria caché de datos, la instrucción
se extrae directamente de la memoria caché de datos para su
ejecución en el procesador.
Si bien la presente revelación se ha revelado en
un contexto actualmente preferido, se reconocerá que las presentes
enseñanzas pueden adaptarse a una gran variedad de contextos
coherentes con esta revelación y las reivindicaciones
siguientes.
Claims (15)
-
\global\parskip0.950000\baselineskip
1. Un procedimiento (500) para hallar una instrucción en una memoria caché de datos que es distinta a una memoria caché de instrucciones, comprendiendo el procedimiento:- determinar (512) que un intento de extracción de la instrucción falló en la memoria caché de instrucciones, en una dirección de extracción de instrucción; caracterizado por:
- determinar (518) que un atributo de comprobación de memoria caché de datos ha sido fijado en un estado activo en una entrada de una tabla de páginas asociada a la dirección de extracción de la instrucción;
- seleccionar (520) la dirección de extracción de la instrucción como una dirección de extracción de datos en respuesta a la determinación de que falló un intento de extracción y de que el atributo de comprobación de memoria caché de datos está en el estado activo; y
- hacer un intento de extracción en la memoria caché de datos para la instrucción, en la dirección seleccionada de extracción de datos.
\vskip1.000000\baselineskip
- 2. El procedimiento de la reivindicación 1, que comprende adicionalmente:
- fijar como activa una señal de acierto si la instrucción se halló en la memoria caché de datos en respuesta al intento de extracción en la memoria caché de datos.
\vskip1.000000\baselineskip
- 3. El procedimiento de la reivindicación 1, que comprende adicionalmente:
- fijar como activo un atributo de comprobación de memoria caché de datos en la entrada asociada de la tabla de páginas, al generar instrucciones que se almacenan como datos en la memoria caché de datos.
\vskip1.000000\baselineskip
- 4. El procedimiento de la reivindicación 3, en el cual el atributo de comprobación de memoria caché de datos es un bit almacenado en una tabla de páginas de instrucciones.
- 5. El procedimiento de la reivindicación 1, que comprende adicionalmente:
- generar, por parte de un programa, datos que se usarán como instrucciones; y solicitar, por parte del programa, que un sistema operativo fije como activo el atributo de comprobación de memoria caché de datos en las entradas de la tabla de páginas asociadas a las instrucciones.
\vskip1.000000\baselineskip
- 6. El procedimiento de la reivindicación 3, en el cual el atributo de comprobación de memoria caché de datos se desactiva más tarde cuando la entrada de la tabla de páginas se usa para un proceso distinto.
- 7. El procedimiento de la reivindicación 1, en el cual la etapa de seleccionar la dirección de extracción de instrucción comprende adicionalmente:
- multiplexar la dirección de extracción de instrucción y una dirección de extracción de datos; y
- seleccionar la dirección de extracción de instrucción para su aplicación a la memoria caché de datos como dirección transformada de extracción de datos, en el que la dirección de extracción de instrucción se selecciona después de determinar que el intento de extracción de instrucción erró en la memoria caché de instrucciones.
\vskip1.000000\baselineskip
- 8. El procedimiento de la reivindicación 1, en el cual la etapa de hacer un intento de extracción en la memoria caché de datos comprende adicionalmente:
- determinar el acierto de la instrucción en la memoria caché de datos; y
- extraer la instrucción de la memoria caché de datos.
\vskip1.000000\baselineskip
- 9. El procedimiento de la reivindicación 1, que comprende adicionalmente:
- determinar que el intento de extracción falló en la memoria caché de datos; y
- informar a un control de memoria de instrucciones de que el intento de extracción falló en la memoria caché de datos.
\global\parskip1.000000\baselineskip
- 10. El procedimiento de la reivindicación 9, que comprende adicionalmente:
- extraer la instrucción desde una memoria del sistema.
\vskip1.000000\baselineskip
- 11. Una disposición de procesador que comprende:
- una memoria caché (406) de instrucciones;
- una memoria caché (408) de datos; caracterizada por:
- una unidad (4064) de gestión de memoria de instrucciones, con una tabla (416) de páginas con entradas que tienen, cada una, un atributo (420) de comprobación de memoria caché de datos, asociado a una dirección de extracción de instrucción; y
- un primer selector (432) para seleccionar una dirección de extracción de instrucción o una dirección de extracción de datos, sobre la base de una señal de selección, causando la señal de selección que se aplique la dirección de extracción de instrucción, o la dirección de extracción de datos, a la memoria caché (408) de datos, por lo que las instrucciones o los datos pueden extraerse selectivamente desde la memoria caché (408) de datos, en donde la señal de selección del primer selector (432) selecciona la dirección de extracción de instrucción si una señal de fallo de instrucción indica que ha ocurrido un fallo en una operación de extracción de instrucción en la memoria caché (406) de instrucciones, y está activo un atributo de comprobación de memoria caché de datos en una entrada asociada a la dirección de extracción de la instrucción.
\vskip1.000000\baselineskip
- 12. La disposición procesadora de la reivindicación 11, que comprende adicionalmente:
- un segundo selector (438) para seleccionar un bus de salida de instrucciones desde la memoria caché de instrucciones, o un bus de salida de datos desde la memoria caché de datos, a aplicar a una entrada del bus de instrucciones del procesador.
\vskip1.000000\baselineskip
- 13. La disposición procesadora (400) de la reivindicación 12, en la cual el segundo selector (438) selecciona el bus de salida de datos desde la memoria caché de datos si ocurrió un fallo en la memoria caché (404) de instrucciones y ocurrió un acierto en la memoria caché (408) de datos, en la dirección de extracción de instrucción seleccionada a través del primer selector (432).
- 14. La disposición procesadora (400) de la reivindicación 12, en la cual el segundo selector (438) selecciona el bus de salida de instrucciones si ocurre un acierto en la memoria caché (404) de instrucciones.
- 15. Un procedimiento para ejecutar código de programa, que comprende:
- generar instrucciones que se almacenan como datos en una memoria caché de datos;
- invalidar una memoria caché de instrucciones antes de la ejecución del código de programa que usa las instrucciones generadas; caracterizado por:
- establecer un atributo de comprobación de memoria caché de datos en una tabla de páginas de instrucciones, para indicar que una instrucción puede estar en la memoria caché de datos; y
- extraer la instrucción de la memoria caché de datos si la instrucción no se halla en la memoria caché de instrucciones y el atributo de comprobación de memoria caché de datos está activado, por lo que el código de programa es ejecutado.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US336282 | 2006-01-20 | ||
| US11/336,282 US7552283B2 (en) | 2006-01-20 | 2006-01-20 | Efficient memory hierarchy management |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2345733T3 true ES2345733T3 (es) | 2010-09-30 |
Family
ID=38058452
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES07710245T Active ES2345733T3 (es) | 2006-01-20 | 2007-01-22 | Gestion eficiente de la jerarquia de memorias. |
Country Status (12)
| Country | Link |
|---|---|
| US (1) | US7552283B2 (es) |
| EP (1) | EP1974256B1 (es) |
| JP (1) | JP5065298B2 (es) |
| KR (1) | KR100955101B1 (es) |
| CN (2) | CN101371224B (es) |
| AT (1) | ATE467174T1 (es) |
| BR (1) | BRPI0707149A2 (es) |
| CA (1) | CA2635116C (es) |
| DE (1) | DE602007006276D1 (es) |
| ES (1) | ES2345733T3 (es) |
| RU (1) | RU2397534C2 (es) |
| WO (1) | WO2007085011A2 (es) |
Families Citing this family (16)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2006054764A1 (ja) * | 2004-11-22 | 2006-05-26 | Honda Motor Co., Ltd. | 自動車用ランチャンネル取付方法及びその装置と、軟体部材取付装置 |
| JP4376173B2 (ja) | 2004-11-30 | 2009-12-02 | 本田技研工業株式会社 | モール装着方法及びその装置 |
| FI20041572L (fi) | 2004-12-03 | 2006-06-04 | Biolan Oy | Kasvihuone, kasvihuoneen ilmastonsäätöjärjestelmä ja menetelmä kasvihuoneen ilmaston säätämiseksi |
| US8181325B2 (en) * | 2005-11-16 | 2012-05-22 | Honda Motor Co., Ltd. | Soft member mounting method and apparatus |
| WO2007060750A1 (ja) * | 2005-11-24 | 2007-05-31 | Honda Motor Co., Ltd. | オープンシールの取付方法及びその取付装置 |
| US7555605B2 (en) * | 2006-09-28 | 2009-06-30 | Freescale Semiconductor, Inc. | Data processing system having cache memory debugging support and method therefor |
| KR100877611B1 (ko) * | 2007-02-08 | 2009-01-09 | 삼성전자주식회사 | 플래시 메모리 내장 마이크로 컨트롤러 유닛 시스템 및상기 마이크로 컨트롤러 유닛의 플래시 메모리 접근 방법 |
| US8255629B2 (en) * | 2009-06-22 | 2012-08-28 | Arm Limited | Method and apparatus with data storage protocols for maintaining consistencies in parallel translation lookaside buffers |
| EP2817714B1 (en) * | 2012-02-22 | 2019-08-21 | Hewlett-Packard Enterprise Development LP | Hiding logical processors from an operating system on a computer |
| WO2014142867A1 (en) | 2013-03-14 | 2014-09-18 | Intel Corporation | Power efficient level one data cache access with pre-validated tags |
| WO2014158161A1 (en) | 2013-03-28 | 2014-10-02 | Hewlett-Packard Development Company, L.P. | Error coordination message for a blade device having a logical processor in another system firmware domain |
| CN105103121B (zh) | 2013-03-28 | 2018-10-26 | 慧与发展有限责任合伙企业 | 刀片系统以及刀片系统的分区执行方法 |
| CN105074653B (zh) | 2013-03-28 | 2018-11-23 | 慧与发展有限责任合伙企业 | 使计算刀片设备和扩展刀片设备的存储器可供由操作系统使用 |
| US9734083B2 (en) * | 2014-03-31 | 2017-08-15 | International Business Machines Corporation | Separate memory address translations for instruction fetches and data accesses |
| US9824021B2 (en) | 2014-03-31 | 2017-11-21 | International Business Machines Corporation | Address translation structures to provide separate translations for instruction fetches and data accesses |
| US9715449B2 (en) | 2014-03-31 | 2017-07-25 | International Business Machines Corporation | Hierarchical translation structures providing separate translations for instruction fetches and data accesses |
Family Cites Families (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO1984002799A1 (en) * | 1982-12-30 | 1984-07-19 | Ibm | A hierarchical memory system including separate cache memories for storing data and instructions |
| US5287467A (en) * | 1991-04-18 | 1994-02-15 | International Business Machines Corporation | Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit |
| US5440707A (en) * | 1992-04-29 | 1995-08-08 | Sun Microsystems, Inc. | Instruction and data cache with a shared TLB for split accesses and snooping in the same clock cycle |
| JPH06100982B2 (ja) * | 1992-05-20 | 1994-12-12 | 工業技術院長 | 階層キャッシュ・メモリ装置 |
| RU2037874C1 (ru) * | 1993-05-10 | 1995-06-19 | Валерий Алексеевич Харитонов | Устройство управления памятью |
| JPH086853A (ja) * | 1994-06-22 | 1996-01-12 | Hitachi Ltd | 記憶制御方法 |
| US5737749A (en) | 1996-05-20 | 1998-04-07 | International Business Machines Corporation | Method and system for dynamically sharing cache capacity in a microprocessor |
| US6260114B1 (en) * | 1997-12-30 | 2001-07-10 | Mcmz Technology Innovations, Llc | Computer cache memory windowing |
| US6480952B2 (en) * | 1998-05-26 | 2002-11-12 | Advanced Micro Devices, Inc. | Emulation coprocessor |
| JP2002007212A (ja) * | 2000-06-19 | 2002-01-11 | Sony Corp | キャッシュ・メモリ・システム及びキャッシュ・メモリ制御方法 |
| US7873776B2 (en) * | 2004-06-30 | 2011-01-18 | Oracle America, Inc. | Multiple-core processor with support for multiple virtual processors |
| GB2426082B (en) | 2005-05-09 | 2007-08-15 | Sony Comp Entertainment Europe | Memory caching in data processing |
-
2006
- 2006-01-20 US US11/336,282 patent/US7552283B2/en not_active Expired - Fee Related
-
2007
- 2007-01-22 KR KR1020087020033A patent/KR100955101B1/ko not_active Expired - Fee Related
- 2007-01-22 AT AT07710245T patent/ATE467174T1/de not_active IP Right Cessation
- 2007-01-22 RU RU2008134124/09A patent/RU2397534C2/ru not_active IP Right Cessation
- 2007-01-22 BR BRPI0707149-3A patent/BRPI0707149A2/pt not_active IP Right Cessation
- 2007-01-22 DE DE602007006276T patent/DE602007006276D1/de active Active
- 2007-01-22 WO PCT/US2007/060815 patent/WO2007085011A2/en not_active Ceased
- 2007-01-22 EP EP07710245A patent/EP1974256B1/en not_active Not-in-force
- 2007-01-22 ES ES07710245T patent/ES2345733T3/es active Active
- 2007-01-22 CN CN2007800024447A patent/CN101371224B/zh not_active Expired - Fee Related
- 2007-01-22 JP JP2008551564A patent/JP5065298B2/ja not_active Expired - Fee Related
- 2007-01-22 CN CN201210297361.8A patent/CN102866879B/zh not_active Expired - Fee Related
- 2007-01-22 CA CA2635116A patent/CA2635116C/en not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| EP1974256B1 (en) | 2010-05-05 |
| CA2635116A1 (en) | 2007-07-26 |
| WO2007085011A3 (en) | 2007-10-04 |
| WO2007085011A2 (en) | 2007-07-26 |
| RU2008134124A (ru) | 2010-02-27 |
| KR20080091481A (ko) | 2008-10-13 |
| JP2009524168A (ja) | 2009-06-25 |
| BRPI0707149A2 (pt) | 2011-04-19 |
| CN101371224B (zh) | 2013-03-27 |
| CN102866879A (zh) | 2013-01-09 |
| CN101371224A (zh) | 2009-02-18 |
| CN102866879B (zh) | 2015-10-28 |
| ATE467174T1 (de) | 2010-05-15 |
| US20070174553A1 (en) | 2007-07-26 |
| US7552283B2 (en) | 2009-06-23 |
| EP1974256A2 (en) | 2008-10-01 |
| DE602007006276D1 (de) | 2010-06-17 |
| JP5065298B2 (ja) | 2012-10-31 |
| RU2397534C2 (ru) | 2010-08-20 |
| KR100955101B1 (ko) | 2010-04-28 |
| CA2635116C (en) | 2011-05-17 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES2345733T3 (es) | Gestion eficiente de la jerarquia de memorias. | |
| US12277234B2 (en) | Cryptographic computing in multitenant environments | |
| US8656113B2 (en) | Accelerating software lookups by using buffered or ephemeral stores | |
| US9177147B2 (en) | Protection against return oriented programming attacks | |
| US11853424B2 (en) | Processor that mitigates side channel attacks by refraining from allocating an entry in a data TLB for a missing load address when the load address misses both in a data cache memory and in the data TLB and the load address specifies a location without a valid address translation or without permission to read from the location | |
| US11734426B2 (en) | Processor that mitigates side channel attacks by prevents cache line data implicated by a missing load address from being filled into a data cache memory when the load address specifies a location with no valid address translation or no permission to read from the location | |
| CN103309644B (zh) | 用于微处理器的转译地址高速缓存 | |
| US20190042453A1 (en) | Hardware based technique to prevent critical fine-grained cache side-channel attacks | |
| US9684511B2 (en) | Using software having control transfer termination instructions with software not having control transfer termination instructions | |
| US8819342B2 (en) | Methods and apparatus for managing page crossing instructions with different cacheability | |
| US11733972B2 (en) | Processor that mitigates side channel attacks by providing random load data as a result of execution of a load operation that does not have permission to access a load address | |
| JP2020525905A (ja) | アドレス変換データの無効化 | |
| US20220121447A1 (en) | Hardening cpu predictors with cryptographic computing context information | |
| US9673985B2 (en) | Apparatus and method to protect digital content | |
| CN115879107A (zh) | 计算机装置及其访存方法、处理装置和存储介质 | |
| CN115618336A (zh) | 缓存及其操作方法、计算机装置 | |
| Chang et al. | Detection of Sensitive Information Based on Transient Data in Store Buffer and Cache | |
| MX2008009316A (es) | Administracion de jerarquia de memoria eficiente |