ES2345733T3 - Gestion eficiente de la jerarquia de memorias. - Google Patents

Gestion eficiente de la jerarquia de memorias. Download PDF

Info

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
Application number
ES07710245T
Other languages
English (en)
Inventor
Michael William Morrow
Thomas Andrew Sartorius
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2345733T3 publication Critical patent/ES2345733T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0846Cache with multiple tag or data arrays being simultaneously accessible
    • G06F12/0848Partitioned 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.
Campo
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í.
Antecedentes
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é.
Resumen
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.
Breve descripción de los dibujos
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.
Descripción detallada
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)

  1. \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. 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. 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. 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. 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. 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. 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. 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. 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. 10. El procedimiento de la reivindicación 9, que comprende adicionalmente:
    extraer la instrucción desde una memoria del sistema.
    \vskip1.000000\baselineskip
  11. 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. 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. 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. 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. 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.
ES07710245T 2006-01-20 2007-01-22 Gestion eficiente de la jerarquia de memorias. Active ES2345733T3 (es)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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