ES2642347T3 - Conjuntos de tablas de páginas de múltiples núcleos de campos de atributos - Google Patents

Conjuntos de tablas de páginas de múltiples núcleos de campos de atributos Download PDF

Info

Publication number
ES2642347T3
ES2642347T3 ES14728008.5T ES14728008T ES2642347T3 ES 2642347 T3 ES2642347 T3 ES 2642347T3 ES 14728008 T ES14728008 T ES 14728008T ES 2642347 T3 ES2642347 T3 ES 2642347T3
Authority
ES
Spain
Prior art keywords
page
processing unit
page table
table entry
attribute data
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
ES14728008.5T
Other languages
English (en)
Inventor
Colin Christopher Sharp
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 ES2642347T3 publication Critical patent/ES2642347T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

5
10
15
20
25
30
35
40
45
50
55
60
65
DESCRIPCION
Conjuntos de tablas de paginas de multiples nucleos de campos de atributos
[0001] Esta solicitud esta relacionada con la solicitud de patente estadounidense n.° 13/565.434, presentada el 2 de agosto de 2012, cuyo contenido se incorpora como referencia.
CAMPO TECNICO
[0002] La presente divulgacion se refiere en general a la informatica y, mas particularmente, se refiere a tecnicas para la correlacion de un espacio de direcciones de memoria virtual con un espacio de direcciones de memoria fisica.
ANTECEDENTES
[0003] Los sistemas informaticos tfpicos incluyen multiples unidades de procesamiento, tales como unidades centrales de procesamiento (CPU) y unidades de procesamiento grafico (GPU), que leen de y escriben en una memoria fisica. Las diversas unidades de procesamiento de un dispositivo pueden implementar esquemas de direccionamiento virtual de tal manera que las aplicaciones que estan siendo ejecutadas por los clientes se pueden asignar a un espacio de direcciones virtual contiguo sin tener que reservar un espacio de memoria fisico contiguo. Cada unidad de procesamiento tiene tipicamente una unidad de gestion de memoria (MMU) para traducir las direcciones de memoria virtual a direcciones fisicas en la memoria fisica. Para realizar la correlacion requerida de direcciones virtuales con direcciones fisicas, cada MMU mantiene una tabla de paginas independiente en la memoria del sistema y cada una de estas tablas de paginas independientes puede tener un tamano de varios megabytes. El documento US2007/0168644 A1 divulga una tabla de paginas compartida por varias unidades de procesamiento y que comprende atributos de las unidades de procesamiento para las paginas de memorias.
RESUMEN
[0004] En general, las tecnicas descritas en esta divulgacion estan relacionadas con dispositivos informaticos que implementan una correlacion de direcciones virtuales con direcciones fisicas. De acuerdo con las tecnicas de esta divulgacion, dos o mas unidades de procesamiento pueden compartir una tabla de paginas comun para correlacionar direcciones virtuales con direcciones fisicas. Una primera unidad de procesamiento puede leer una primera entrada de tabla de paginas para correlacionar la direccion virtual con una direccion fisica. Una segunda unidad de procesamiento puede leer la primera entrada de tabla de paginas y una segunda entrada de tabla de paginas adicional cuando se correlaciona desde la direccion virtual a la direccion fisica. La primera entrada de tabla unica puede incluir atributos de la pagina de memoria asociada con la direccion de memoria fisica para la primera unidad de procesamiento. Las segundas entradas de tabla de paginas pueden incluir conjuntos de atributos adicionales que corresponden a los atributos de la misma direccion de memoria fisica para la segunda unidad de procesamiento. Ademas, la primera entrada de tabla de paginas puede incluir datos que identifiquen la segunda entrada de tabla de paginas para las segundas unidades de procesamiento, que incluyen las entradas adicionales de tabla de paginas. Utilizando los multiples conjuntos de campos de atributos, los atributos, que pueden comprender permisos de una pagina de memoria para la primera y segunda unidades de procesamiento, se pueden gestionar individualmente. Por ejemplo, las tecnicas descritas en esta divulgacion pueden permitir la gestion individual de la lectura/escritura, ejecucion, almacenamiento en cache y otros atributos y/o permisos de una pagina de memoria para la primera y segunda unidades de procesamiento.
[0005] Segun un ejemplo, un aparato incluye una memoria que almacena una primera tabla de paginas que incluye una primera entrada de tabla de paginas, donde la primera entrada de tabla de paginas incluye, ademas, una direccion fisica, una ubicacion alternativa asociada con la primera entrada de tabla de paginas, y una pagina fisica de memoria asociada con la direccion fisica. Una primera unidad de procesamiento esta configurada para leer, desde la primera tabla de paginas, la direccion fisica, determinar primeros datos de atributos de pagina de la primera entrada de tabla de paginas, donde los primeros datos de atributos de pagina definen uno o mas atributos de accesibilidad de la pagina fisica de memoria para la primera unidad de procesamiento y acceder a la pagina fisica de memoria asociada con la direccion fisica de acuerdo con el uno o mas atributos de accesibilidad de los primeros datos de atributos de pagina. Una segunda unidad de procesamiento esta configurada para leer, desde la primera tabla de paginas, la primera entrada de tabla de paginas, determinar la direccion fisica a partir de la primera entrada de tabla de paginas, determinar segundos datos de atributos de pagina a partir de la ubicacion alternativa, donde la ubicacion alternativa esta asociada con la primera entrada de tabla de paginas, y donde los segundos datos de atributos de pagina definen uno o mas atributos de accesibilidad de la pagina fisica de memoria para la segunda unidad de procesamiento, y acceden a la pagina fisica de memoria asociada con la direccion fisica de acuerdo con uno o mas atributos de accesibilidad de los segundos datos de atributos de pagina.
[0006] Segun otro ejemplo, un procedimiento de acceso a memoria incluye leer, con una primera unidad de procesamiento, una direccion fisica de una primera entrada de tabla de paginas de una primera tabla de paginas, determinar, con la primera unidad de procesamiento, primeros datos de atributos de pagina a partir de la primera
5
10
15
20
25
30
35
40
45
50
55
60
65
entrada de tabla de paginas, donde los primeros datos de atributos de pagina definen uno o mas atributos de accesibilidad de la pagina ffsica de memoria para la primera unidad de procesamiento, leer, con una segunda unidad de procesamiento, la direccion ffsica de la primera entrada de tabla de paginas de la primera tabla de paginas, determinar, con la segunda unidad de procesamiento, segundos datos de atributos de pagina a partir de una ubicacion alternativa, donde la ubicacion alternativa esta asociada con la primera entrada de tabla de paginas y donde los segundos datos de atributos de pagina definen uno o mas atributos de accesibilidad de la pagina ffsica de memoria para la segunda unidad de procesamiento, acceder, con la primera unidad de procesamiento, a una pagina ffsica de memoria asociada con la direccion ffsica segun el uno o mas atributos de accesibilidad de los primeros datos de atributos de pagina, y acceder, con la segunda unidad de procesamiento, a la pagina ffsica de memoria asociada con la direccion ffsica segun el uno o mas atributos de accesibilidad de los segundos datos de atributos de pagina.
[0007] Segun otro ejemplo, un aparato incluye medios para almacenar una primera tabla de paginas que incluye una primera entrada de tabla de paginas, donde la primera entrada de tabla de paginas incluye, ademas, una direccion ffsica de una ubicacion alternativa asociada con la primera entrada de tabla de paginas, y una pagina ffsica de memoria asociada con la direccion ffsica. El aparato incluye primeros medios de procesamiento, donde los primeros medios de procesamiento comprenden medios para leer, desde la primera entrada de la tabla de paginas, la direccion ffsica, medios para determinar primeros datos de atributos de pagina a partir de la primera entrada de tabla de paginas, donde los primeros datos de atributos de pagina definen uno o mas atributos de accesibilidad de la pagina ffsica de memoria para los primeros medios de procesamiento, y medios para acceder a una pagina ffsica de memoria con la direccion ffsica de acuerdo con uno o mas atributos de accesibilidad de los primeros datos de atributos de pagina. El aparato incluye segundos medios de procesamiento, donde los segundos medios de procesamiento comprenden medios para leer, desde la primera tabla de paginas, la primera entrada de tabla de paginas, medios para determinar la direccion ffsica a partir de la primera entrada de tabla de paginas, medios para determinar segundos datos de atributos de pagina a partir de la ubicacion alternativa, donde la ubicacion alternativa esta asociada con la primera entrada de tabla de paginas, y donde los segundos datos de atributos de pagina definen uno o mas atributos de accesibilidad de la pagina ffsica de memoria para los segundos medios de procesamiento, y medios para acceder a la pagina ffsica de memoria asociada con la direccion ffsica de acuerdo con uno o mas atributos de accesibilidad de los segundos datos de atributos de pagina.
[0008] De acuerdo con otro ejemplo, un medio de almacenamiento no transitorio legible por ordenador almacena instrucciones que cuando se ejecutan hacen que una primera unidad de procesamiento y una segunda unidad de procesamiento lean, con una primera unidad de procesamiento, una direccion ffsica de una primera entrada de tabla de paginas de una primera tabla de paginas, determinen, con la primera unidad de procesamiento, primeros datos de atributos de pagina a partir de la primera entrada de tabla de paginas, donde los primeros datos de atributos de pagina definen uno o mas atributos de accesibilidad de la pagina ffsica de memoria para la primera unidad de procesamiento, lean, con una segunda unidad de procesamiento, la direccion ffsica de la primera entrada de tabla de paginas de la primera tabla de paginas, determinen, con la segunda unidad de procesamiento, segundos datos de atributos de pagina a partir de una ubicacion alternativa, donde la ubicacion alternativa esta asociada con la primera entrada de tabla de paginas, y donde los segundos datos de atributos de pagina definen uno o mas atributos de accesibilidad de la pagina ffsica de memoria para la segunda unidad de procesamiento, accedan, con la primera unidad de procesamiento, a una pagina ffsica de memoria asociada con la direccion ffsica segun el uno o mas atributos de accesibilidad de los primeros datos de atributos de pagina, y accedan, con la segunda unidad de procesamiento, a la pagina ffsica de memoria asociada con la direccion ffsica segun el uno o mas atributos de accesibilidad de los segundos datos de atributos de pagina.
BREVE DESCRIPCION DE LOS DIBUJOS
[0009]
La figura 1 es un diagrama conceptual que ilustra un dispositivo informatico configurado para implementar tecnicas de correlacion de direcciones de memoria virtual con direcciones de memoria ffsica de acuerdo con las tecnicas de esta divulgacion.
La figura 2 es un diagrama conceptual que ilustra una tecnica de ejemplo para correlacionar una direccion de memoria virtual con una direccion de memoria ffsica de acuerdo con las tecnicas de esta divulgacion.
La figura 3 es un diagrama conceptual que ilustra una tecnica de ejemplo para correlacionar una direccion de memoria virtual con una direccion de memoria ffsica de acuerdo con las tecnicas de esta divulgacion.
La figura 4 es un diagrama conceptual que ilustra una tecnica de ejemplo para correlacionar una direccion de memoria virtual con una direccion de memoria ffsica de acuerdo con las tecnicas de esta divulgacion.
La figura 5 es un diagrama de flujo que ilustra tecnicas de correlacion de direcciones de memoria virtual con direcciones de memoria ffsica de acuerdo con las tecnicas de esta divulgacion.
5
10
15
20
25
30
35
40
45
50
55
60
65
DESCRIPCION
[0010] En general, las tecnicas descritas en esta divulgacion estan relacionadas con dispositivos informaticos que implementan una correlacion de direcciones virtuales con direcciones ffsicas, tambien denominada en esta divulgacion como correlacion virtual a ffsico. Mas particularmente, las tecnicas descritas en esta divulgacion estan dirigidas a una arquitectura de memoria virtual que soporta multiples conjuntos de atributos para dos o mas unidades de procesamiento. En algunos ejemplos, una primera entrada de tabla de paginas de la tabla de paginas comun puede incluir un primer conjunto de datos de atributos, tal como un conjunto de datos de atributos para una primera unidad de procesamiento (por ejemplo, una CPU). La primera entrada de tabla de paginas tambien puede incluir datos asociados con una ubicacion alternativa, y la ubicacion alternativa puede incluir datos de atributos para una segunda unidad de procesamiento (por ejemplo, una GPU), asf como otros datos de atributos. Utilizando los multiples conjuntos de datos de atributos, la accesibilidad de una pagina de memoria para las dos o mas unidades de procesamiento se puede gestionar individualmente. Por ejemplo, las tecnicas descritas en esta divulgacion pueden permitir la gestion individual de los atributos de lectura/escritura, ejecucion, almacenamiento en cache y otros atributos de accesibilidad de una pagina de memoria para una primera y segunda unidades de procesamiento.
[0011] Unidades de procesamiento tales como unidades centrales de procesamiento (CPU) y unidades de procesamiento de graficos (GPU) pueden acceder (por ejemplo, leer de y escribir en) una memoria de sistema. Para acceder al sistema, la unidad de procesamiento accede a la ubicacion dentro de la memoria de sistema donde los datos deben ser lefdos o escritos con una direccion ffsica asociada con la ubicacion en la memoria. Sin embargo, puede ser diffcil para la unidad de procesamiento gestionar las direcciones ffsicas de todas las paginas de memoria (es decir, las ubicaciones de la memoria ffsica donde se pueden escribir o leer datos). Para superar esta dificultad, la unidad de procesamiento puede utilizar un direccionamiento virtual. En el direccionamiento virtual, las aplicaciones que se ejecutan en la unidad de procesamiento (es decir, las aplicaciones cliente) son direcciones de memoria virtual contiguas asignadas. Una aplicacion puede comprender varias tareas, donde las diferentes tareas se ejecutan en diferentes unidades de procesamiento. Cada una de las unidades de procesamiento puede incluir respectivas unidades de gestion de memoria (MMU). La MMU de cada una de las unidades de procesamiento se encarga de terminar las direcciones de memoria reales, tambien denominadas direcciones de memoria ffsica, a partir de las direcciones de memoria virtual.
[0012] Por ejemplo, la MMU incluye una memoria cache denominada como memoria intermedia de traduccion anticipada (TLB). La TLB almacena la correlacion de direcciones virtuales con direcciones ffsicas para fragmentos de memoria seleccionados, tal como fragmentos de memoria de acceso reciente o fragmentos de memoria de acceso frecuente. Para acceder a un fragmento de memoria, denominado como "pagina" de memoria, la unidad de procesamiento suministra la direccion de memoria virtual para esa pagina de memoria a la MMU. La MMU, a su vez, accede a la TLB para identificar la direccion de memoria ffsica para esa pagina de memoria. Cuando la correlacion esta disponible en la TLB (lo que se denomina como acierto de TLB), la MMU accede despues a la pagina de memoria utilizando la direccion de memoria ffsica. Alternativamente, la MMU suministra la direccion de memoria ffsica a una unidad o modulo diferente de la unidad de procesamiento que, a continuacion, accede a la pagina de memoria utilizando la direccion de memoria ffsica.
[0013] En algunos casos, la TLB puede no incluir la correlacion de una direccion de memoria virtual (denominada como perdida de TLB). Por ejemplo, la unidad de procesamiento puede tener que acceder a una pagina de memoria cuya direccion ffsica no esta incluida en las entradas de pagina almacenadas por la TLB porque esa pagina de memoria no es una pagina de memoria de acceso reciente o de acceso frecuente. Cuando esto ocurre, la unidad de procesamiento accede a una tabla de paginas almacenada en la memoria de sistema.
[0014] Una tabla de paginas es similar a la TLB porque ambas almacenan entradas de pagina que correlacionan direcciones de memoria virtual con direcciones de memoria ffsica. Una entrada de tabla de pagina, en la tabla de paginas o en la TLB, correlaciona una direccion de memoria virtual con una direccion de memoria ffsica. La tabla de paginas, sin embargo, se almacena en la memoria de sistema en contraste con la TLB, que se almacena localmente en la MMU de la unidad de procesamiento. Ademas, debido a que la tabla de paginas almacena toda la correlacion de direcciones virtuales con direcciones ffsicas para la unidad de procesamiento en lugar de un numero limitado de entradas de pagina como una TLB, el tamano de la tabla de paginas es generalmente mucho mayor que el tamano de la TLB. Por ejemplo, el tamano de la tabla de paginas puede tener un tamano de megabytes.
[0015] En algunas tecnicas, la memoria de sistema almacena tablas de paginas correspondientes para cada una de las unidades de procesamiento. Por ejemplo, la memoria de sistema almacena una tabla de paginas para la CPU y almacena otra tabla de paginas independiente para la GPU. En algunos casos, sin embargo, estas diferentes tablas de paginas incluyen entradas de tablas de paginas identicas. Por lo tanto, puede ser posible que varias entradas de tablas de pagina de una tabla de paginas de CPU sean identicas a las entradas de tabla de paginas de una tabla de paginas de GPU. Por ejemplo, una entrada de tabla de paginas de la tabla de paginas de CPU puede correlacionar una direccion de memoria virtual con una direccion de memoria ffsica, y una entrada de tabla de paginas de la tabla de paginas de GPU puede correlacionar la misma direccion de memoria virtual con la misma direccion de memoria ffsica.
5
10
15
20
25
30
35
40
45
50
55
60
65
[0016] Como un ejemplo, un sistema operativo que se ejecuta en la CPU puede tener la tarea de asignar direcciones de memoria virtual contiguas a una aplicacion. La aplicacion puede incluir una pluralidad de trabajos o tareas, donde algunos trabajos se ejecutan en la CPU y algunos trabajos se ejecutan en la GPU. El sistema operativo tambien puede almacenar la correlacion entre direcciones de memoria virtual y direcciones de memoria ffsica de la tabla de paginas. Debido a que el sistema operativo se encarga de asignar direcciones de memoria virtual y de correlacionar estas direcciones de memoria virtual con las direcciones ffsicas de la CPU y de la GPU, el sistema operativo puede crear una tabla de paginas comun que almacena las correlaciones virtuales a ffsicas que son comunes a la CPU y a la GPU.
[0017] La CPU y la GPU pueden tener como beneficio la comparticion de correlaciones virtual a ffsico comunes. Por ejemplo, en lugar de que la memoria de sistema almacene entradas de tablas de paginas duplicadas, la memoria de sistema puede almacenar una unica entrada de pagina para las entradas de tabla de paginas identicas en la tabla de paginas de la CPU y la tabla de paginas de la GPU, lo que permite ahorrar memoria. Ademas, debido a que hay una entrada de pagina para estas entradas de tabla de paginas identicas, puede ser mas eficiente desde el punto de vista computacional actualizar una unica entrada de tabla de paginas en lugar de dos entradas de tabla de paginas identicas.
[0018] Algunas de las tecnicas anteriores se han desarrollado para lograr la comparticion de tablas de paginas. En estas tecnicas, la MMU de la CPU y la MMU de la GPU almacenan punteros que apuntan a la ubicacion de la tabla de paginas comun en la memoria de sistema. Cuando la CPU y la GPU acceden a una pagina de memoria, sus MMU respectivas utilizan sus punteros para recuperar la direccion de memoria ffsica de la tabla de paginas compartida. Sin embargo, estas tecnicas para compartir una tabla de paginas pueden fallar a veces a la hora de identificar las diferentes capacidades de acceso y/o los permisos de las diferentes unidades de proceso para las paginas de memoria.
[0019] Las diferentes capacidades de acceso pueden estar asociadas con las diferentes unidades de procesamiento. Por ejemplo, una entrada de pagina tiene convencionalmente 32 bits o 64 bits, dependiendo del tamano de palabra de la unidad de procesamiento. Dependiendo de la arquitectura de las unidades de procesamiento, el numero de bits identifica la direccion ffsica de una pagina de memoria, y los bits restantes pueden reservarse para datos de atributos. Los datos de atributos pueden identificar las capacidades de acceso y/o los permisos de una o mas unidades de procesamiento para esa pagina de memoria particular. Como ejemplo, algunas de las paginas de memoria pueden ser designadas como legibles y escribibles, y otras paginas de memoria pueden ser designadas como solo legibles. De forma similar, los datos de atributos pueden indicar si una pagina de memoria puede ser almacenada en cache, esta modificada (debe escribirse de nuevo en la memoria principal desde una memoria cache, como la TLB) o ser ejecutada por una o mas unidades de procesamiento. Uno o mas campos de los datos de atributos, que pueden comprender uno o mas bits, imponen e indican estas limitaciones de accesibilidad y/o permisos.
[0020] Puede haber otros ejemplos de campos de atributo, ademas de campos que designan una pagina de memoria como que se puede leer y escribir o solo leer. Por ejemplo, otro u otros campos de los datos de atributos pueden indicar que los datos de ciertas paginas de memoria son no ejecutables, almacenables en memoria cache interna, almacenables en memoria cache externa, compartibles, almacenables en memoria intermedia, estan modificados y/o son accesibles mediante uno o mas supervisores o hipervisores. Si una pagina no es ejecutable, entonces es posible que uno o mas procesadores no ejecuten el contenido de la pagina de memoria. Los permisos de atributos no ejecutables pueden ser utiles, por ejemplo, para evitar que codigo malicioso ejecute el contenido de una pagina de memoria.
[0021] En algunos ejemplos, los datos de atributos de una entrada de tabla de paginas pueden indicar que el contenido de una pagina de memoria se puede guardar en una memoria cache interna o una memoria cache externa. El contenido de una pagina de memoria indicada como almacenable en memoria cache interna solo puede almacenarse en una o mas memorias cache "internas" (por ejemplo, una memoria cache L1 o memorias cache relativamente mas cerca de una unidad de procesamiento), mientras que una pagina marcada como almacenable en memoria cache externa solo puede almacenarse en memoria cache mediante una o mas memorias cache externas, por ejemplo, una memoria cache L2 o una memoria cache L3, y no una memoria cache L1, como un ejemplo.
[0022] Una entrada de tabla de paginas tambien puede indicar que una pagina de memoria se puede compartir. Una pagina de memoria puede compartirse si dos o mas procesos pueden compartir acceso a la pagina de memoria, lo que puede ser util para reducir el consumo de memoria para paginas de memoria utilizadas comunmente, tal como bibliotecas compartidas. Los datos de atributos de entrada de tabla de paginas tambien pueden marcar una pagina de memoria como modificada. Si los datos de atributos de una entrada de tabla de paginas marcan una pagina como "modificada", el contenido de la pagina de memoria puede haber cambiado y una unidad de procesamiento, tal como la primera unidad de procesamiento 110 o la segunda unidad de procesamiento 120, puede tener que escribir de nuevo la pagina de memoria en la memoria de sistema, por ejemplo, en una memoria cache externa o una memoria de sistema 130.
[0023] Los datos de atributos tambien pueden indicar si una pagina de memoria tiene permisos de supervisor o
5
10
15
20
25
30
35
40
45
50
55
60
65
hipervisor. Si una pagina de memoria tiene permisos de hipervisor, el codigo que se ejecuta en esa pagina puede, por ejemplo, modificar o gestionar codigo que tenga niveles de permisos inferiores, tales como permisos de supervisor, o permisos a nivel de usuario. Los permisos de hipervisor pueden ser utiles, por ejemplo, para gestionar sistemas operativos virtualizados (tambien denominados "sistemas operativos invitados") u otros recursos virtualizados. Del mismo modo, los permisos de supervisor pueden ser utiles para realizar tareas a nivel de sistema operativo (SO), tal como la gestion de aplicaciones, por ejemplo, aplicaciones que se ejecutan en uno o mas sistemas operativos.
[0024] Una entrada de tabla de paginas tambien puede incluir datos de atributos que indican si una pagina es de "reescritura" o de "escritura inmediata". Una pagina de "reescritura" debe ser escrita de nuevo a un nivel superior de memoria de sistema, por ejemplo, la memoria de sistema 130 o un nivel superior de memoria cache (por ejemplo, almacen externo o "de respaldo"), y en una memoria cache interna simultaneamente. Por el contrario, si los datos de atributos de tabla de paginas marcan una pagina como de "reescritura", una unidad de procesamiento puede escribir primero la pagina de memoria en la memoria cache, pero puede posponer la escritura de los contenidos cambiados de nuevo a un nivel superior de memoria cache(por ejemplo, almacen exterior o de respaldo) hasta que los bloques de cache que contienen la pagina de memoria esten a punto de ser modificados y/o reemplazados por nuevos datos.
[0025] Los datos de atributos de una entrada de tabla de paginas tambien pueden indicar si una pagina de memoria se puede guardar en memoria intermedia. Si los datos de atributos indican que una pagina puede almacenarse en una memoria intermedia, entonces una unidad de procesamiento puede escribir los contenidos de la pagina de memoria en una memoria intermedia de escritura para mejorar el rendimiento del sistema. En algunos ejemplos, una unidad de procesamiento puede marcar ciertas regiones de la memoria de sistema 130 como almacenables en memoria intermedia, y otras regiones, tales como un espacio de memoria de E/S (por ejemplo, un espacio de memoria dedicado a E/S correlacionada con memoria) como no almacenable en memoria intermedia.
[0026] En otro ejemplo, uno o mas campos de datos de atributos de tabla de paginas pueden indicar un orden de memoria (por ejemplo, un orden robusto, un orden debil, un orden relajado) para una pagina de memoria. Si los datos de atributos de una entrada de tabla de paginas indican que una pagina de memoria esta fuertemente ordenada, entonces cada instruccion de maquina que interactua con esa pagina se refiere implfcitamente a una semantica de adquisicion y de liberacion. Como resultado, cuando una unidad de procesamiento realiza una secuencia de escrituras, las otras unidades de procesamiento ven esos valores cambiar en el mismo orden en que fueron escritos. Si los datos de atributos de una entrada de tabla de paginas indican que una pagina de memoria esta debilmente ordenada, las escrituras y las lecturas pueden reordenarse arbitrariamente, donde el reordenamiento solo esta limitado por barreras de memoria explfcitas.
[0027] Cualquier combinacion de los datos de atributos descritos anteriormente se puede incluir en una entrada de tabla de paginas. Los ejemplos de datos de atributos descritos anteriormente son solo algunos ejemplos no limitativos. Otros tipos y combinaciones de datos de atributos tambien se pueden incluir en una entrada de tabla de paginas. De la manera descrita en los ejemplos no limitativos anteriores, los valores de campo de datos de atributos de una entrada de tabla de paginas pueden indicar la accesibilidad y/o los permisos de una pagina de memoria ffsica para una unidad de procesamiento de acuerdo con las tecnicas de esta divulgacion.
[0028] En algunos casos, una unidad de procesamiento puede necesitar diferentes permisos de accesibilidad que otra unidad de procesamiento para la misma pagina de memoria. Por ejemplo, el sistema operativo que se ejecuta en una CPU puede designar algunas paginas de memoria como escribibles y legibles por la CPU, y designar estas mismas paginas solo como legibles por la GPU. Para indicar diferentes permisos para diferentes unidades de procesamiento, cada unidad de procesamiento puede estar asociada con un conjunto de datos de atributos que corresponden a los permisos de accesibilidad de pagina de memoria para esa unidad de procesamiento. Por ejemplo, en el ejemplo descrito anteriormente donde la CPU y la GPU incluyen sus propias tablas de paginas respectivas, la correlacion de direcciones virtuales con direcciones ffsicas puede ser identica en cada una de las tablas de paginas, pero los campos de datos de atributos pueden no ser identicos. En el otro ejemplo descrito anteriormente donde la CPU y la GPU comparten una tabla de paginas comun, los campos de datos de atributos pueden ser compartidos tanto por la CPU como por la GPU. Si los campos de datos de atributos se comparten, el sistema operativo se ve forzado a definir datos de atributos para la CPU o la GPU, pero no para ambas.
[0029] Por ejemplo, los campos de datos de atributos, en el ejemplo anterior, incluyen valores que definen la accesibilidad de la CPU, pero no necesariamente la accesibilidad de la GPU. Esto puede conducir potencialmente a una mala gestion de una pagina de memoria. Por ejemplo, puede ser deseable limitar la accesibilidad de una pagina de memoria a solo ser legible por una GPU (y no escribible). Sin embargo, debido a que esta pagina es legible y escribible por la CPU y a que los valores de los campos de datos de atributos no diferencian entre la CPU y la GPU, la GPU puede escribir inadvertidamente en la pagina de memoria, en ejemplos donde los punteros se utilizan en una tabla de paginas comun.
[0030] Las tecnicas de la divulgacion se refieren a la designacion de datos de atributos de pagina, especfficamente para diferentes unidades de procesamiento. Por ejemplo, los datos de atributos de paginas de GPU definen la accesibilidad de una pagina de memoria para la GPU, y los datos de atributos de paginas de CPU definen la
5
10
15
20
25
30
35
40
45
50
55
60
65
accesibilidad para la CPU. De acuerdo con las tecnicas de esta divulgacion, una primera unidad de procesamiento puede leer una direccion ffsica de una primera entrada de tabla de paginas de una primera tabla de paginas, determinar primeros datos de atributos de pagina a partir de la primera entrada de tabla de paginas, donde los primeros datos de atributos de pagina definen uno o mas atributos de accesibilidad de la pagina ffsica de memoria para la primera unidad de procesamiento. Una segunda unidad de procesamiento puede leer la direccion ffsica de la primera entrada de tabla de paginas de la primera tabla de paginas, determinar segundos datos de atributos de pagina a partir de una ubicacion alternativa, donde la ubicacion alternativa esta asociada con la primera entrada de tabla de paginas, y donde los segundos datos de atributos de pagina definen uno o mas atributos de accesibilidad de la pagina ffsica de memoria para la segunda unidad de procesamiento. La primera unidad de procesamiento puede acceder a una pagina ffsica de memoria asociada con la direccion ffsica de acuerdo con el uno o mas atributos de accesibilidad de los primeros datos de atributos de la pagina, y la segunda unidad de procesamiento puede acceder a la pagina ffsica de memoria asociada con la direccion ffsica de acuerdo con el uno o mas atributos de accesibilidad de los segundos datos de atributos de pagina.
[0031] La figura 1 muestra un ejemplo de dispositivo informatico, el dispositivo informatico 100, que puede implementar las tecnicas de esta divulgacion. Ejemplos del dispositivo informatico 100 incluyen, sin limitacion, telefonos moviles inalambricos, asistentes digitales personales (PDA), consolas de videojuegos, unidades de juegos portatiles, unidades moviles de videoconferencia, ordenadores portatiles, ordenadores de escritorio, decodificadores de television, reproductores de medios digitales, telefonos inteligentes, tabletas, camaras y similares. Aunque no se limitan solo a dispositivos con recursos limitados, las tecnicas de esta divulgacion pueden ser de particular beneficio en dispositivos con recursos limitados, incluyendo dispositivos que funcionan con bateffas.
[0032] El dispositivo informatico 100 incluye una primera unidad de procesamiento 110, una segunda unidad de procesamiento 120 y una memoria de sistema 130. La primera unidad de procesamiento 110 incluye una MMU 112, y la segunda unidad de procesamiento 120 incluye una MMU 122. La MMU 110 puede incluir una TLB 114, y la MMU 122 puede incluir una TLB 124. La primera unidad de procesamiento 110 incluye registros 116, y la segunda unidad de procesamiento 120 incluye registros 126. La primera unidad de procesamiento 110 puede ser, por ejemplo, una CPU del dispositivo 100. La segunda unidad de procesamiento 120 puede ser, por ejemplo, una GPU que puede hacerse funcionar para enviar datos graficos para su presentacion en una pantalla. La primera unidad de procesamiento 110 y la segunda unidad de procesamiento 120 pueden representar adicionalmente otros tipos de unidades de procesamiento, tales como unidades de procesamiento para diversos dispositivos perifericos, incluyendo controladores de pantalla, dispositivos de conexion en red o cualquier tipo de nucleo de procesamiento de senales digitales (DSP) que asuma el procesamiento de senales de un procesador, tal como una CPU o una GPU. Ejemplos de la primera unidad de procesamiento 110 y de la segunda unidad de procesamiento 120 pueden incluir, pero no se limitan a, un procesador de senales digitales (DSP), un microprocesador de proposito general, un circuito integrado espedfico de aplicacion (ASIC), una matriz logica programable in situ (FPGa), u otros circuitos logicos integrados o discretos equivalentes. Aunque las tecnicas de esta divulgacion se describiran generalmente con referencias a dos unidades de procesamiento, las tecnicas pueden implementarse con mas de dos unidades de procesamiento.
[0033] Los registros 116 y los registros 126 pueden contener datos sobre los que opera la primera unidad de procesamiento 110 o la segunda unidad de procesamiento 120 (por ejemplo, operandos). En algunos ejemplos, los registros 116 y los registros 126 pueden ser registros de proposito general, registros indirectos de direcciones de memoria, registros de interrupciones, registros SIMD o cualquier otro tipo de registro. En algunos ejemplos, los registros 116 y 126 pueden estar configurados para almacenar datos de atributos de paginas para la primera unidad de procesamiento 110 y/o la segunda unidad de procesamiento 120 de acuerdo con las tecnicas de esta divulgacion.
[0034] La memoria de sistema 130 puede ser un ejemplo de un medio de almacenamiento legible por ordenador. La memoria de sistema 130 puede ser, por ejemplo, un tipo de memoria de acceso aleatorio (RAM), tal como RAM dinamica, RAM estatica, RAM de tiristor, RAM de condensador cero, RAM de doble transistor o algun otro tipo de memoria volatil. La memoria de sistema 130 puede ser tambien una memoria no volatil, tal como una memoria flash u otro tipo de RAM no volatil. La memoria de sistema 130 puede almacenar instrucciones que hacen que la primera unidad de procesamiento 110 y la unidad de procesamiento 120 realicen funciones atribuidas a cada una en esta divulgacion. De esta manera, la memoria de sistema 130 puede considerarse como un medio de almacenamiento legible por ordenador que comprende instrucciones que hacen que uno o mas procesadores, por ejemplo, la primera unidad de procesamiento 110 y la unidad de procesamiento 120, realicen diversas funciones. En algunos ejemplos, sin embargo, tales instrucciones pueden almacenarse en una memoria (no mostrada en la figura 1) distinta de la memoria de sistema 130.
[0035] La primera unidad de procesamiento 110 y la segunda unidad de procesamiento 120 estan configuradas para leer datos desde y escribir datos en la memoria de sistema 130. Para leer o escribir los datos, la primera unidad de procesamiento 110 y la segunda unidad de procesamiento 120 estan configuradas para acceder a ubicaciones ffsicas espedficas de la memoria de sistema 130. Estas ubicaciones espedficas pueden ser, por ejemplo, paginas de cuatro kilobytes (KB), dos megabytes (MB), o algun otro tamano. Cada pagina de memoria puede tener una direccion ffsica asociada. Sin embargo, tal como se ha introducido anteriormente, la primera unidad de procesamiento 110 y la segunda unidad de procesamiento 120 pueden implementar un direccionamiento virtual, de
5
10
15
20
25
30
35
40
45
50
55
60
65
modo que se asignen direcciones de memoria virtual contiguas a las aplicaciones que se ejecutan en la primera unidad de procesamiento 110 o la segunda unidad de procesamiento 120. Las direcciones de memoria ffsica correspondientes a estas direcciones de memoria virtual contiguas pueden, sin embargo, estar fragmentadas y no ser contiguas. De este modo, la primera unidad de procesamiento 110 y la segunda unidad de procesamiento 120 pueden procesar datos usando estas direcciones de memoria virtual contiguas en lugar de las correspondientes direcciones de memoria ffsica no contiguas. Sin embargo, cuando la primera unidad de procesamiento 110 y la segunda unidad de procesamiento 120 acceden (es decir, leen de o escriben en) la memoria de sistema 130, la primera unidad de procesamiento 110 y la segunda unidad de procesamiento 120 traducen estas direcciones de memoria virtual en direcciones de memoria ffsica correspondientes.
[0036] La MMU 112 esta configurada para correlacionar direcciones de memoria virtual con direcciones de memoria ffsica para la primera unidad de procesamiento 110, y la MMU 122 esta configurada para correlacionar direcciones de memoria virtual con direcciones de memoria ffsica para la segunda unidad de procesamiento 120. Una tabla de paginas completa con un conjunto completo de entradas de paginas se almacena en las tablas de paginas 132. En algunos ejemplos, las tablas de paginas 132 pueden comprender tambien una pluralidad de tablas de paginas paralelas. En otros ejemplos, las tablas de paginas 132 pueden comprender una unica tabla de paginas. Cada una de la TLB 114 y la TLB 124 almacena un subconjunto de las entradas de tabla de paginas almacenadas en las tablas de paginas 132. El subconjunto puede, por ejemplo, tener entradas de tabla de paginas de acceso reciente, entradas de tabla de paginas de acceso frecuente o entradas de tabla de paginas seleccionadas en funcion de otros criterios. El subconjunto de entradas de tabla de paginas almacenadas en la TLB 114 puede ser diferente del subconjunto de entradas de paginas almacenadas en la TLB 124. Por ejemplo, las entradas de tabla de paginas a las que accede recientemente o a las que accede con frecuencia la primera unidad de procesamiento 110 a traves de la MMU 112 pueden ser diferentes de las entradas de tabla de paginas a las que accede recientemente o con frecuencia la segunda unidad de procesamiento 120 a traves de la MMU 122. Asf, la TLB 114 puede almacenar un subconjunto de entradas de tabla de paginas diferente al de la TLB 124.
[0037] Si, por ejemplo, la primera unidad de procesamiento 110 tiene que traducir una direccion de memoria virtual a una direccion de memoria ffsica, entonces la MMU 112 puede utilizar la TLB 114 para determinar la direccion de memoria ffsica que corresponde a una direccion de memoria virtual particular, cuando la TLB 114 almacena la entrada de pagina para esa direccion de memoria virtual. Utilizando la direccion de memoria ffsica determinada, la primera unidad de procesamiento 110 puede leer de o escribir en una ubicacion ffsica particular de la memoria del sistema 130. De manera similar, si la segunda unidad de procesamiento 120 necesita traducir una direccion de memoria virtual a una direccion de memoria ffsica, entonces la MMU 122 puede usar la TLB 124 para determinar la direccion de memoria ffsica que corresponde a una direccion de memoria virtual particular cuando la TLB 124 almacena la entrada de pagina para esa direccion de memoria virtual. Utilizando la direccion de memoria ffsica determinada, la segunda unidad de procesamiento 120 puede leer de o escribir en la memoria de sistema 130.
[0038] Como se ha introducido anteriormente, la TLB 114 y la TLB 124 pueden ser memorias cache que almacenan las correlaciones de virtual a ffsico para solo un subconjunto de direcciones de memoria virtual. La TLB 114, por lo tanto, puede no almacenar toda la correlacion virtual a ffsico para la unidad de procesamiento 110 y, de manera similar, la TLB 124 puede no almacenar toda la correlacion virtual a ffsico para la segunda unidad de procesamiento 120. En algunos casos, la MMU 112 puede necesitar determinar una direccion de memoria ffsica correspondiente para una direccion de memoria virtual que no tiene una correlacion almacenada en la TLB 114. Para determinar una correlacion para una direccion de memoria virtual no incluida en la TLB 114, la primera unidad de procesamiento 110 puede acceder a las tablas de paginas 132 almacenadas en la memoria de sistema 130. Las tablas de paginas 132 incluyen toda la correlacion virtual a ffsico para la unidad de procesamiento 110 y la unidad de procesamiento 120 y, por lo tanto, pueden ser mucho mas grandes que la TLB 114 y la TLB 124.
[0039] Al igual que la MMU 112, en algunos casos, la MMU 122 puede necesitar determinar una direccion de memoria ffsica correspondiente para una direccion de memoria virtual que no tiene una correlacion almacenada en la TLB 124. Para determinar una correlacion para una direccion de memoria virtual no incluida en la TLB 124, la segunda unidad de procesamiento 120 accede a las tablas de paginas 132 almacenadas en la memoria de sistema 130. De esta manera, la MMU 122 puede funcionar de una manera sustancialmente similar a la MMU 112. Las tablas de paginas 132 incluyen toda la correlacion virtual a ffsico para la segunda unidad de procesamiento 120, asf como para la unidad de procesamiento 110. De esta manera, la primera unidad de procesamiento 110 y la segunda unidad de procesamiento 120 comparten la misma tabla de paginas (por ejemplo, una de las tablas de paginas 132 en el ejemplo de la figura 1).
[0040] En diversos ejemplos, las tablas de paginas 132 pueden ser una unica tabla de paginas. Las tablas de paginas 132 pueden ser tambien una pluralidad de paginas paralelas. En caso de que las tablas de paginas 132 sean una unica tabla de paginas, para traducir desde una direccion ffsica a una direccion virtual para una pagina de memoria, la primera unidad de procesamiento 110 y la unidad de procesamiento 120 pueden leer una primera entrada de tabla de paginas a partir de las tablas de paginas 132. La primera entrada de tabla de paginas incluye datos de atributos de una pagina de memoria ffsica para una primera unidad de procesamiento, por ejemplo, la primera unidad de procesamiento 110. Ademas de los datos de atributos, la primera entrada de tabla de paginas tambien incluye datos asociados con una segunda entrada de tabla de paginas de la misma tabla de paginas. En
5
10
15
20
25
30
35
40
45
50
55
60
65
varios ejemplos, los datos asociados con la segunda entrada de tabla de paginas pueden ser un puntero, que puede comprender una direccion virtual y/o una direccion ffsica.
[0041] Para determinar los datos de atributos de pagina para la segunda unidad de procesamiento, la segunda unidad de procesamiento 120 lee los datos asociados con la segunda entrada de tabla de paginas de la primera entrada de tabla de paginas. La segunda unidad de procesamiento 120 utiliza los datos asociados con la segunda entrada de tabla de paginas para leer la segunda entrada de tabla de paginas a partir de las entradas de tabla de paginas 132. La segunda entrada de tabla de paginas incluye datos de atributos para la segunda unidad de procesamiento 120, que define la accesibilidad de la pagina de memoria para la segunda unidad de procesamiento 120. En algunos ejemplos, el puntero puede apuntar a un registro de un archivo de registro de la unidad de procesamiento 110 o de la segunda unidad de procesamiento 120. El registro del archivo de registro puede incluir datos de atributos de una entrada de pagina para la segunda unidad de procesamiento 120.
[0042] En un ejemplo donde las tablas de paginas 132 comprenden una pluralidad de tablas de paginas, para traducir desde una direccion ffsica a una direccion virtual para una pagina de memoria, la primera unidad de procesamiento 110 y la segunda unidad de procesamiento 120 pueden leer una primera entrada de tabla de paginas a partir de las tablas de paginas 132 en una direccion virtual especificada. La primera entrada de tabla de paginas incluye datos de atributos de una pagina de memoria ffsica asociada con la direccion virtual para una primera unidad de procesamiento, por ejemplo, la primera unidad de procesamiento 110. La segunda unidad de procesamiento 120 puede leer la primera entrada de tabla de paginas, y tambien puede leer una segunda entrada de tabla de paginas de una tabla diferente de las tablas de paginas 132 basandose en la direccion virtual. La segunda entrada de tabla de paginas incluye datos de atributos para la segunda unidad de procesamiento 120. En algunos ejemplos, la segunda unidad de procesamiento 120 puede leer la primera entrada de tabla de paginas y la segunda entrada de tabla de paginas en paralelo para no tener que esperar a que termine la lectura de la primera entrada de tabla de paginas antes de leer la segunda entrada de tabla de paginas.
[0043] En otro ejemplo donde las tablas de paginas 132 comprenden una pluralidad de tablas de paginas, para traducir desde una direccion ffsica a una direccion virtual para una pagina de memoria, la primera unidad de procesamiento 110 y la segunda unidad de procesamiento 120 pueden leer una primera entrada de tabla de paginas a partir de las tablas de paginas 132 en una direccion virtual especificada. La primera entrada de tabla de paginas incluye datos de atributos de una pagina de memoria ffsica para una primera unidad de procesamiento, por ejemplo, la primera unidad de procesamiento 110. La primera entrada de tabla de paginas tambien incluye datos asociados con una segunda entrada de tabla de paginas. La segunda entrada de tabla de paginas incluye datos de atributos para la segunda unidad de procesamiento 120. La segunda unidad de procesamiento 120 lee los datos asociados con la segunda entrada de tabla de paginas y, basandose en los datos, identifica una tabla de paginas diferente que incluye la segunda entrada de tabla de paginas que tiene los datos de atributos de tabla de paginas para la segunda unidad de procesamiento 120. La segunda unidad de procesamiento 120 lee entonces la segunda entrada de tabla de paginas de la segunda tabla de paginas basandose en la direccion virtual y accede a la pagina ffsica de memoria utilizando los datos de atributos de la segunda entrada de tabla de paginas.
[0044] Las tablas de paginas 132 pueden incluir, cada una, una pluralidad de entradas de paginas que correlacionan una direccion de memoria virtual con una direccion de memoria ffsica de una pagina de memoria. Una pagina de memoria puede ser una porcion de la memoria de sistema 130 que es accesible individualmente a traves de su direccion de memoria ffsica. Cada entrada de tabla de paginas puede incluir uno o mas conjuntos de datos de atributos. Cada conjunto de datos de atributos puede establecer controles, tales como permisos y derechos de acceso, para una o mas unidades de procesamiento. Cada entrada de tabla de paginas puede incluir opcionalmente uno o mas conjuntos adicionales de datos de atributos, tales como un conjunto de datos de atributos que establecen controles comunes para la primera unidad de procesamiento 110 y la segunda unidad de procesamiento 120.
[0045] De acuerdo con las tecnicas de esta divulgacion, la primera unidad de procesamiento 110 y la segunda unidad de procesamiento 120 pueden configurarse para leer, con la primera unidad de procesamiento 110, una primera entrada de tabla de paginas de una primera tabla de paginas, determinar, con la primera unidad de procesamiento 110, primeros datos de atributos de pagina a partir de la primera entrada de tabla de paginas, donde los primeros datos de atributo de pagina definen uno o mas atributos de accesibilidad de la pagina ffsica de memoria para la primera unidad de procesamiento, leer, con la segunda unidad de procesamiento 120, la direccion ffsica de la primera entrada de tabla de paginas de la primera tabla de paginas, determinar, con la segunda unidad de procesamiento 120, segundos datos de atributo de pagina a partir de una ubicacion alternativa, donde la ubicacion alternativa esta asociada con la primera entrada de tabla de paginas, y donde los segundos datos de atributos de pagina definen uno o mas atributos de accesibilidad de la pagina ffsica de memoria para la segunda unidad de procesamiento 120, acceder, con la primera unidad de procesamiento 110, a una pagina ffsica de memoria asociada con la direccion ffsica segun el uno o mas atributos de accesibilidad de los primeros datos de atributos de pagina, y acceder, con la segunda unidad de procesamiento 120, a la pagina ffsica de memoria asociada con la direccion ffsica segun el uno o mas atributos de accesibilidad de los segundos datos de atributos de pagina.
[0046] El primer conjunto de datos de atributos y el segundo conjunto de datos de atributos para las entradas de pagina de las tablas de paginas 132 pueden permitir que la primera unidad de procesamiento 110 y la segunda
5
10
15
20
25
30
35
40
45
50
55
60
65
unidad de procesamiento 120 tengan diferentes permisos y/o derechos de acceso, mientras comparten una tabla de paginas comun. Como un ejemplo, el primer conjunto de datos de atributos puede establecerse de modo que la primera unidad de procesamiento 110 tenga acceso de lectura y escritura a una pagina de memoria particular de la memoria del sistema 130, mientras que la segunda unidad de procesamiento 120 puede tener solo acceso de lectura a la misma pagina de memoria particular. Por supuesto, tambien son posibles otras configuraciones, tal como que la segunda unidad de procesamiento 120 tenga tanto acceso de lectura como de escritura, mientras que la primera unidad de procesamiento 110 tiene solamente acceso de lectura, o una de la primera unidad de procesamiento 110 y la segunda unidad de procesamiento 120 tiene acceso de lectura y escritura, mientras que la otra no tiene acceso de lectura ni de escritura.
[0047] La figura 2 es un diagrama conceptual que ilustra una tecnica de ejemplo para correlacionar una direccion de memoria virtual con una direccion de memoria ffsica de acuerdo con las tecnicas de esta divulgacion. La figura 2 muestra una primera entrada de tabla de paginas 140, una segunda entrada de tabla de paginas 142 y una tercera entrada de tabla de paginas 144. La primera entrada de tabla de paginas 140, la segunda entrada de tabla de paginas 142 y la tercera entrada de tabla de paginas 144 pueden ser, cada una, una entrada de tabla de paginas de una tabla de paginas diferente de las tablas de paginas 132.
[0048] Una ejecucion de la aplicacion en la primera unidad de procesamiento 110 o en la segunda unidad de procesamiento 120 puede intentar acceder (leer o escribir) a una pagina de memoria ffsica asociada con una direccion de memoria virtual. Una unidad de gestion de memoria (MMU) de una unidad de procesamiento traduce la direccion virtual a una direccion ffsica, y gestiona cualquier lectura o escritura con respecto a la pagina ffsica de memoria asociada con la direccion ffsica. Una memoria intermedia de traduccion anticipada (TLB) puede almacenar en memoria cache las paginas de memoria utilizadas con frecuencia basandose en sus direcciones virtuales para reducir la latencia de busqueda en una tabla de paginas.
[0049] En el ejemplo de la figura 2, una aplicacion en la primera unidad de procesamiento 110 que intenta acceder a una direccion virtual particular hace que la primera MMU 112 realice una busqueda usando la TLB 114. Si la TLB 114 tiene una copia en memoria cache de la entrada de tabla de paginas solicitada (denominada "primera entrada de tabla de paginas"), la TLB 114 devuelve la primera entrada de tabla de paginas solicitada a la MMU 112. Si la TLB 114 no tiene una copia en memoria cache de la primera entrada de tabla de paginas, la MMU 112 recupera la primera entrada de tabla de paginas solicitada de las tablas de paginas 132.
[0050] La MMU 112 puede recuperar la entrada de tabla de paginas 140 de una tabla de paginas particular que incluye entradas de tabla de paginas asociadas con la primera unidad de procesamiento 110. Para recuperar la entrada de tabla de paginas solicitada, la MMU 112 o la TLB 114 utiliza la direccion virtual de la aplicacion solicitante como un fndice en la tabla de paginas y recupera la entrada de tabla de paginas solicitada asociada con esa direccion virtual.
[0051] Despues de que la MMU 112 haya recuperado la entrada de tabla de paginas, la MMU 112 traduce la direccion virtual a una direccion ffsica. La MMU 112 determina tambien los datos de atributos de la entrada de tabla de paginas. Los datos de atributos definen permisos de accesibilidad para la primera unidad de procesamiento 110. Despues de terminar los permisos de accesibilidad y la direccion ffsica asociada con la direccion virtual de la pagina ffsica de memoria, la MMU 112 realiza el acceso de memoria solicitado por la aplicacion actualmente en ejecucion.
[0052] La primera entrada de tabla de paginas 140 incluye una direccion ffsica 146, datos de atributos 148 y bits validos 150. La direccion ffsica 146 indica la direccion ffsica de la pagina de memoria ffsica 152. La MMU 112 hace cualquier lectura o escritura en la pagina de memoria ffsica 152 basandose en la direccion ffsica 146. En este ejemplo, los datos de atributos 148 incluyen cuatro campos, designados como "R" (legibles), "W", (escribibles), "X" (ejecutables) y "C" (almacenables en memoria cache). Cada campo es de uno o mas bits de tamano, dependiendo de la arquitectura de la unidad de procesamiento 110 y de la unidad de procesamiento 120. El valor de campo legible y los valores de campo escribibles indican si la unidad de procesamiento 110 puede leer o escribir desde la pagina de memoria ffsica 152. El valor de campo ejecutable indica si la unidad de procesamiento 110 puede ejecutar el contenido de la pagina de memoria ffsica 152. El valor de campo almacenable en memoria cache indica si la unidad de procesamiento 110 puede almacenar en memoria cache el contenido de la pagina de memoria ffsica 152, por ejemplo, en una memoria cache L1 o L2.
[0053] Una vez que la MMU 112 lee la entrada de tabla de paginas 140, la MMU 112 traduce la direccion virtual de la entrada de tabla de paginas a la direccion ffsica 146, la MMU 112 puede acceder a la pagina de memoria ffsica 142 basandose en la direccion ffsica 146. La MMU 112 garantiza que se permita el tipo de acceso, por ejemplo lectura, escritura o ejecucion, en funcion de los valores de campo de los datos de atributos 148. La MMU 112 tambien puede ser responsable de garantizar que una pagina de memoria designada como no almacenable en memoria cache no se almacene en memoria cache mediante la primera unidad de procesamiento 110. Si los valores de los campos de datos de atributos indican que el tipo de acceso solicitado no esta permitido, la MMU 112 puede lanzar una excepcion que un sistema operativo o la aplicacion cliente puede gestionar.
[0054] Los campos legibles, escribibles, ejecutables y almacenables en cache son solo algunos ejemplos de valores
5
10
15
20
25
30
35
40
45
50
55
60
65
de campos que la primera entrada de tabla de paginas 140 puede incluir. La entrada de la tabla de paginas 140 puede incluir cualquier combinacion y numero de campos de datos de atributos. La primera entrada de tabla de paginas 140 tambien puede incluir uno o mas valores adicionales. Ademas de los campos mencionados anteriormente, la primera entrada de tabla de paginas 140 puede incluir tambien uno o mas bits validos. Cada bit valido indica si una entrada adicional de la tabla de paginas, que incluye datos de atributos para una unidad de procesamiento adicional, tal como la segunda unidad de procesamiento 120, es valida. Si un bit valido indica que la entrada de tabla de paginas adicional es valida, la segunda unidad de procesamiento 120 puede leer los datos de atributos de la entrada de tabla de paginas asociados con el bit valido. Si el bit valido indica que la entrada de tabla de paginas adicional no es valida, la segunda unidad de procesamiento 120 puede no leer la entrada de tabla de paginas adicional, en algunos ejemplos. En su lugar, la segunda unidad de procesamiento 120 puede usar los datos de atributos de la primera entrada de tabla de paginas 140.
[0055] La misma aplicacion que se ejecuta en la primera unidad de procesamiento 110 tambien se puede ejecutar en la segunda unidad de procesamiento 120 y tambien puede intentar acceder a la misma direccion de memoria virtual. Sin embargo, puede ser deseable asignar a la pagina de memoria ffsica un conjunto diferente de valores de accesibilidad. Por ejemplo, la primera unidad de procesamiento 110 puede ser una CPU que llena una memoria intermedia de comandos de una GPU, por ejemplo, la segunda unidad de procesamiento 120, con comandos de la GPU para que los ejecute la segunda unidad de procesamiento 120. Los comandos de la GPU no deberfan ser ejecutados por la primera unidad de procesamiento 110, sino que deberfan ser ejecutados por la segunda unidad de procesamiento 120.
[0056] Para aplicar diferentes conjuntos de datos de atributos para la primera unidad de procesamiento 110 y 112, puede haber una o mas ubicaciones alternativas que pueden incluir datos de atributos adicionales de la pagina de memoria ffsica 142 para la segunda unidad de procesamiento 120. La memoria de sistema 130 puede incluir tablas de paginas adicionales que incluyen informacion de atributos para unidades de procesamiento adicionales. Por ejemplo, la primera entrada de tabla de paginas 140 puede residir en una primera tabla de paginas. La segunda entrada de tabla de paginas 142 puede residir en una segunda tabla de paginas y la tercera entrada de tabla de paginas 144 puede residir en una tercera tabla de paginas.
[0057] Cuando se accede a una pagina de memoria de acuerdo con las tecnicas de esta divulgacion, la MMU 122 de la segunda unidad de procesamiento 120 accede a la primera entrada de tabla de paginas 140 de la manera descrita anteriormente con respecto a la primera unidad de procesamiento 110. La primera entrada de tabla de paginas 140 incluye una correlacion desde una direccion virtual a la direccion ffsica 146 de la pagina de memoria ffsica 152, asf como datos de atributos 148 para la unidad de procesamiento 110. En algunos ejemplos, la primera entrada de tabla de paginas 140 puede incluir tambien bits validos 150. La MMU 122 tambien accede a una ubicacion alternativa, tal como una segunda entrada de tabla de paginas, o un registro que incluye informacion de atributos adicional para la segunda unidad de procesamiento 120.
[0058] En un ejemplo, la ubicacion alternativa a la que accede la segunda unidad de procesamiento 120 para determinar los datos de atributos para la segunda unidad de procesamiento 120 puede ser la entrada de la tabla de paginas 142. La MMU 122 lee la entrada de tabla de paginas 142 de una segunda tabla de paginas de entradas de tabla de paginas 132 diferente de la tabla de paginas que almacena la entrada de tabla de paginas 140. La MMU 122 indexa en la ubicacion alternativa, es decir, la segunda tabla de paginas, utilizando la misma direccion virtual utilizada para indexar en la tabla de paginas de la entrada de tabla de paginas 140. La entrada de tabla de paginas 142 incluye segundos datos de atributos 154. Los datos de atributos pueden incluir valores de campo que indican si la segunda unidad de procesamiento 120 puede leer, escribir, ejecutar y almacenar en memoria cache la pagina de memoria ffsica 152. En algunos ejemplos, la unidad de procesamiento lee la entrada de tabla de paginas 140 y la entrada de la tabla de paginas 142 en paralelo. La lectura de las dos entradas de tabla de paginas en paralelo evita la latencia causada por esperar a que termine la lectura de la entrada de tabla de paginas 140 antes de leer la entrada de tabla de paginas 142.
[0059] En otro ejemplo, la ubicacion alternativa puede ser la entrada de tabla de paginas 144. En este ejemplo, la MMU 122 de la segunda unidad de procesamiento 120 puede leer la entrada de tabla de paginas 144 para determinar segundos datos de atributos de la pagina de memoria ffsica 152 para la segunda unidad de procesamiento 120. La entrada de tabla de paginas 144 incluye dos conjuntos de datos de atributos, por ejemplo, para dos unidades de procesamiento diferentes. Un conjunto de datos de atributos puede ser para la segunda unidad de procesamiento 120, y el otro conjunto de datos de atributos puede ser para una tercera unidad de procesamiento. La MMU 122 lee la entrada de tabla de paginas 144 de una tabla de paginas de entradas de tabla de paginas 132 diferente de la tabla de paginas que almacena la entrada de tabla de paginas 140. La MMU 122 indexa en una tabla de paginas diferente de tablas de paginas 132 que utilizan la misma direccion virtual utilizada para indexar en la tabla de paginas que incluye la entrada de tabla de paginas 140. Basandose en los datos de atributos de la entrada de tabla de paginas 144, la MMU 122 determina los permisos de accesibilidad de la pagina de memoria ffsica 152 para la segunda unidad de procesamiento 120.
[0060] Aunque las entradas de tabla de paginas 140, 142 y 144 se ilustran como que tienen los mismos campos de atributos, cada una de las entradas de tabla de paginas puede tener diferentes numeros o tipos de campos de
5
10
15
20
25
30
35
40
45
50
55
60
65
atributos. Como un ejemplo, la entrada de tabla de paginas 142 puede incluir solamente un unico campo de atributos ejecutable. Debido a que la entrada de tabla de paginas 142 no incluye valores para cada campo de atributos, la MMU 122 puede heredar o combinar valores de campos de atributos de la entrada de tabla de paginas 140 con los valores de campo de atributos de la entrada de tabla de paginas 142 para determinar los permisos de accesibilidad de la pagina de memoria ffsica 152 para la segunda unidad de procesamiento 120. Por ejemplo, la MMU 122 puede usar los valores de campo de atributos legibles, escribibles y almacenables en memoria cache de la entrada de tabla de paginas 140 y el valor de campo de atributo ejecutable de la entrada de tabla de paginas 142 para determinar los permisos finales de la segunda unidad de procesamiento 120 para la pagina de memoria ffsica 152.
[0061] La figura 3 es un diagrama conceptual que ilustra una tecnica de ejemplo para correlacionar una direccion de memoria virtual con una direccion de memoria ffsica de acuerdo con las tecnicas de esta divulgacion. La figura 3 incluye una primera entrada de tabla de paginas 160, una segunda entrada de tabla de paginas 162 y una tercera entrada de tabla de paginas 164. La primera entrada de tabla de paginas 160, la segunda entrada de tabla de paginas 162 y la tercera entrada de tabla de paginas 164 pueden ser, cada una, una entrada de tabla de paginas de una tabla de paginas diferente de las tablas de paginas 132.
[0062] Una ejecucion de aplicacion de la primera unidad de procesamiento 110 o la segunda unidad de procesamiento 120 puede intentar acceder a una pagina de memoria ffsica asociada con una direccion de memoria virtual. Una unidad de gestion de memoria (MMU) de una unidad de procesamiento traduce la direccion virtual a una direccion ffsica, y gestiona cualquier lectura o escritura con respecto a la pagina ffsica de memoria asociada con la direccion ffsica. Una memoria intermedia de traduccion anticipada (TLB) puede almacenar en memoria cache las paginas de memoria utilizadas con frecuencia basandose en sus direcciones virtuales para reducir la latencia de consulta en una tabla de paginas.
[0063] En el ejemplo de la figura 3, una aplicacion de la primera unidad de procesamiento 110 que intenta acceder a una direccion virtual particular hace que la primera MMU 112 realice una consulta usando la TLB 114. Si la TLB 114 tiene una copia en memoria cache de la entrada de tabla de paginas solicitada, la TLB 114 devuelve la entrada de tabla de paginas solicitada a la MMU 112. Si la TLB 114 no tiene una copia en memoria cache de la primera entrada de tabla de paginas, la MMU 112 recupera la entrada de tabla de paginas solicitada de una tabla de paginas de las tablas de paginas 132 asociada con la primera unidad de procesamiento 110.
[0064] La MMU 112 puede recuperar la entrada de tabla de paginas 160 de una tabla de paginas particular que incluye entradas de tabla de paginas asociadas con la primera unidad de procesamiento 110. Para recuperar la entrada de tabla de paginas solicitada, la MMU 112 o la TLB 114 utiliza la direccion virtual de la aplicacion solicitante como un fndice en la tabla de paginas asociada con la primera unidad de procesamiento 110 y recupera la entrada de tabla de paginas solicitada, la entrada de tabla de paginas 160 en este ejemplo, asociada con esa direccion virtual.
[0065] La entrada de tabla de paginas 160 incluye la direccion ffsica 166, los datos de atributos 168 y el identificador 170. La direccion ffsica 166 indica la direccion ffsica de la pagina de memoria ffsica 172. La MMU 112 hace cualquier lectura o escritura en la pagina de memoria ffsica 172 basandose en la direccion ffsica 166. En este ejemplo, los datos de atributos 168 incluyen cuatro campos, designados como "R" (legibles), "W", (escribibles), "X" (ejecutables) y "C" (almacenables en memoria cache). Cada campo tiene un tamano de uno o mas bits, dependiendo de la arquitectura de la unidad de procesamiento 110 y de la unidad de procesamiento 120. El valor de campo legible y los valores de campo escribibles indican si la unidad de procesamiento 110 puede leer o escribir en la pagina de memoria ffsica 172. El valor de campo ejecutable indica si la unidad de procesamiento 110 puede ejecutar el contenido de la pagina de memoria ffsica 172. El valor de campo almacenable en memoria cache indica si la unidad de procesamiento 110 puede almacenar en memoria cache el contenido de la pagina de memoria ffsica 172, por ejemplo, en una memoria cache L1 o L2.
[0066] Una vez que la MMU 112 lee la entrada de tabla de paginas 160, la MMU 112 traduce la direccion virtual a la direccion ffsica 166, la MMU 112 puede acceder a la pagina de memoria ffsica 172 basandose en la direccion ffsica 166. La MMU 112 garantiza que el tipo de acceso se permita en base a los valores de campo de los datos de atributos 168. La MMU 112 tambien puede ser responsable de garantizar que una pagina de memoria designada como no almacenable en memoria cache no se almacene en memoria cache mediante la primera unidad de procesamiento 110. Si los valores de los campos de datos de atributos indican que el tipo de acceso solicitado no esta permitido, la MMU 112 puede lanzar una excepcion que un sistema operativo o la aplicacion cliente puede gestionar.
[0067] Los campos legibles, escribibles, ejecutables y almacenables en cache son solo algunos ejemplos de valores de campos que la primera entrada de tabla de paginas 160 puede incluir. La primera entrada de tabla de paginas 160 puede incluir tambien uno o mas valores adicionales y/o combinaciones de valores adicionales. Ademas de los campos mencionados anteriormente, la entrada de tabla de paginas 160 tambien puede incluir uno o mas bits validos. Cada bit valido indica si una entrada de tabla de paginas particular, que incluye datos de atributos para una unidad de procesamiento diferente, es valida.
5
10
15
20
25
30
35
40
45
50
55
60
65
[0068] Algunas o todas las partes de la misma aplicacion que se ejecuta en la primera unidad de procesamiento 110 tambien se pueden ejecutar en la unidad de procesamiento 120 y tambien pueden intentar acceder a la misma pagina de memoria ffsica 172 en las mismas direcciones de memoria ffsicas y virtuales. Sin embargo, puede ser deseable, en algunas circunstancias, asignar a la pagina de memoria ffsica 172 un conjunto diferente de datos de accesibilidad, por ejemplo, un permiso diferente para la pagina de memoria ffsica 172. Por ejemplo, la primera unidad de procesamiento 110 puede ser una CPU que llena una memoria intermedia de comandos de una GPU, por ejemplo, la segunda unidad de procesamiento 120, con comandos de la GPU que se ejecutaran por la segunda unidad de procesamiento 120. Los comandos de la GPU no deberfan ser ejecutados por la primera unidad de procesamiento 110, sino que deberfan ser ejecutados por la segunda unidad de procesamiento 120. Por consiguiente, el valor de campo de atributos ejecutable debe ser diferente para la unidad de procesamiento 110 y para la unidad de procesamiento 120.
[0069] Para aplicar diferentes conjuntos de datos de atributos para la primera unidad de procesamiento 110 y 112, la MMU 114 de la segunda unidad de procesamiento puede leer un segundo conjunto de datos de atributos de pagina a partir de una ubicacion alternativa. En el ejemplo de la figura 3, la memoria de sistema 130 puede incluir tablas de paginas adicionales que incluyen informacion de atributos para unidades de procesamiento adicionales, que pueden comprender la ubicacion alternativa. Por ejemplo, la primera entrada de tabla de paginas 160 puede residir en una primera tabla de paginas. La segunda entrada de tabla de paginas 162 puede residir en una segunda tabla de paginas y la tercera entrada de tabla de paginas 164 puede residir en una tercera tabla de paginas.
[0070] Cuando se accede a una pagina de memoria de acuerdo con las tecnicas de esta divulgacion, una segunda unidad de procesamiento 120 accede a la primera entrada de tabla de paginas 160 de la manera descrita anteriormente con respecto a la primera unidad de procesamiento 110. La entrada de tabla de paginas 160 incluye la direccion ffsica 166 de la pagina de memoria ffsica 172, asf como los datos de atributos 168 para la unidad de procesamiento 110 y el identificador (ID) 170. El identificador 170 puede estar asociado con la ubicacion alternativa, que en el ejemplo de la figura 3 es una segunda entrada de tabla de paginas de una pluralidad de tablas de paginas paralelas. En algunos ejemplos, la primera entrada de tabla de paginas 160 puede incluir tambien uno o mas bits validos que corresponden a una o mas entradas de tabla de paginas adicionales. La segunda unidad de procesamiento 120 tambien accede a una ubicacion alternativa, que en el ejemplo de la figura 3 es una entrada de tabla de paginas adicional que incluye segundos datos de atributos para la segunda unidad de procesamiento 120.
[0071] En el ejemplo de la figura 3, la segunda unidad de procesamiento 120 determina una entrada de tabla de paginas adicional, tal como la entrada de tabla de paginas 162, basandose en el ID 170 de la entrada de tabla de paginas 160. Una vez que la MMU 122 ha determinado el ID 170, la segunda unidad de procesamiento 120 lee la entrada de tabla de paginas adicional, la entrada de tabla de paginas 162, basandose en el ID 170. En algunos ejemplos, el valor del ID 170 puede indicar o identificar una tabla de paginas particular de las tablas de paginas 132 que contiene la entrada de tabla de paginas 162. La MMU 122 lee la entrada de tabla de paginas 162 basandose en la misma direccion virtual utilizada para leer la entrada de tabla de paginas 166, pero desde la tabla de paginas indicada por el ID 170.
[0072] La entrada de tabla de paginas 162 incluye datos de atributos de paginas para la segunda unidad de procesamiento 120. Los datos de atributos de paginas de la entrada de tabla de paginas 162 pueden incluir valores de campo que indican si la segunda unidad de procesamiento 120 puede leer, escribir, ejecutar y almacenar en memoria cache la pagina de memoria ffsica 172. En algunos ejemplos, los datos de atributos de la entrada de tabla de paginas 162 pueden incluir menos campos de atributos que la entrada de tabla de paginas 160. En este caso, la MMU 122 puede determinar valores de campos de atributos de la entrada de tabla de paginas 160 cuando la entrada de tabla de paginas 162 incluye un valor de campo de atributo correspondiente.
[0073] En algunos ejemplos, el ID 170 de la entrada de tabla de paginas 160 puede incluir mas de un valor de
identificador. Como ejemplo, en un sistema que tiene tres procesadores, el ID 170 puede comprender dos valores. El primer valor indica una tabla de paginas para la segunda unidad de procesamiento 120, y el segundo valor indica una tabla de paginas con datos de atributos para una tercera unidad de procesamiento. La primera y segunda tablas de paginas indicadas por ID 170 pueden incluirse en las tablas de paginas 132.
[0074] La figura 4 es un diagrama conceptual que ilustra una tecnica de ejemplo para correlacionar una direccion de
memoria virtual con una direccion de memoria ffsica de acuerdo con las tecnicas de esta divulgacion. La figura 4 incluye una primera entrada de tabla de paginas 180, y una segunda entrada de tabla de paginas 182. La primera entrada de tabla de paginas 180 y la segunda entrada de tabla de paginas 182 pueden ser entradas de tabla de paginas de una unica tabla de paginas de entradas de tabla de paginas 132. En el ejemplo de la figura 4, las
entradas de tabla de paginas 132 pueden comprender una unica tabla de paginas.
[0075] En el ejemplo de la figura 4, una aplicacion que se ejecuta en la primera unidad de procesamiento 110 o la segunda unidad de procesamiento 120 puede intentar acceder a una pagina de memoria ffsica asociada con una direccion de memoria virtual. Una MMU de una unidad de procesamiento traduce la direccion virtual a una direccion ffsica y gestiona cualquier lectura o escritura en la pagina ffsica de memoria asociada con la direccion ffsica. Una TLB puede almacenar en memoria cache las paginas de memoria utilizadas con frecuencia basandose en sus
5
10
15
20
25
30
35
40
45
50
55
60
65
direcciones virtuales para reducir la latencia de consulta en una tabla de paginas.
[0076] En el ejemplo de la figura 4, una aplicacion que se ejecuta en la primera unidad de procesamiento 110 que intenta acceder a una direccion virtual particular hace que la primera MMU 112 realice una consulta usando la TLB 114. Si la TLB 114 tiene una copia en memoria cache de la entrada de tabla de paginas solicitada (denominada "primera entrada de tabla de paginas"), la TLB 114 devuelve la entrada de tabla de paginas solicitada a la MMU 112. Si la TLB 114 no tiene una copia en memoria cache de la primera entrada de tabla de paginas, la MMU 112 recupera la entrada de tabla de paginas solicitada de la tabla de paginas.
[0077] La MMU 112 puede recuperar la entrada de tabla de paginas 180 de una tabla de paginas particular que incluye entradas de tabla de paginas asociadas con la primera unidad de procesamiento 110. Para recuperar la entrada de tabla de paginas solicitada, la MMU 112 o la TLB 114 utilizan la direccion virtual de la aplicacion solicitante como un fndice en la tabla de paginas y recupera la entrada de tabla de paginas solicitada, la entrada de tabla de paginas 180 en este ejemplo, asociada con esa direccion virtual.
[0078] La entrada de tabla de paginas 180 incluye una direccion ffsica 184, datos de atributos 186 y un puntero 188. La direccion ffsica 184 indica la direccion ffsica de la pagina de memoria ffsica 190. La MMU 112 hace cualquier lectura o escritura en la pagina de memoria ffsica 190 basandose en la direccion ffsica 184. En este ejemplo, los datos de atributos 188 incluyen cuatro campos, designados como "R" (legibles), "W" (escribibles), "X" (ejecutables) y "C" (almacenables en memoria cache). Cada campo tiene un tamano de uno o mas bits, dependiendo de la arquitectura de la primera unidad de procesamiento 110 y de la segunda unidad de procesamiento 120. El valor de campo legible y los valores de campo escribibles indican si la unidad de procesamiento 110 puede leer o escribir en la pagina de memoria ffsica 190. El valor de campo ejecutable indica si la unidad de procesamiento 110 puede ejecutar el contenido de la pagina de memoria ffsica 190. El valor de campo almacenable en memoria cache indica si la unidad de procesamiento 110 puede almacenar en memoria cache el contenido de la pagina de memoria ffsica 190, por ejemplo, en una memoria cache L1 o L2.
[0079] Una vez que la MMU 112 lee la entrada de tabla de paginas 180, la MMU 112 traduce la direccion virtual a la direccion ffsica 184, la MMU 112 puede acceder a la pagina de memoria ffsica 190 basandose en la direccion ffsica 184. La MMU 112 garantiza que se permita el tipo de acceso, por ejemplo, lectura, escritura, almacenamiento en memoria cache o ejecucion, basandose en los valores de campo de los datos de atributos 186. La MMU 112 tambien puede ser responsable de garantizar que una pagina de memoria designada como no almacenable en memoria cache no se almacene en memoria cache mediante la primera unidad de procesamiento 110. Si los valores de los campos de datos de atributos indican que el tipo de acceso solicitado no esta permitido, la MMU 112 puede lanzar una excepcion, que un sistema operativo o la aplicacion cliente puede gestionar.
[0080] Los campos que se pueden leer, escribir, ejecutar y almacenar en memoria cache son solo algunos ejemplos de valores de campos que la entrada de tabla de paginas 180 puede incluir. La primera entrada de tabla de paginas 180 tambien puede incluir uno o mas valores adicionales. Ademas de los campos mencionados anteriormente, la entrada de tabla de paginas 180 tambien puede incluir uno o mas bits validos. Cada bit valido indica si una entrada de tabla de paginas particular, que incluye datos de atributos para una unidad de procesamiento diferente, es valida.
[0081] Algunas o todas las partes de la misma aplicacion que se ejecuta en la primera unidad de procesamiento 110 tambien se pueden ejecutar en la segunda unidad de procesamiento 120 y tambien pueden intentar acceder a la misma pagina de memoria ffsica 190 en las mismas direcciones de memoria ffsicas y virtuales. Sin embargo, puede ser deseable asignar a la memoria ffsica 190 un conjunto diferente de datos de atributos de paginas, por ejemplo, permisos, tales como permisos de lectura, escritura, almacenamiento en memoria cache y ejecucion. Por ejemplo, la primera unidad de procesamiento 110 puede ser una CPU que llena una memoria intermedia de comandos de una GPU, por ejemplo, la segunda unidad de procesamiento 120, con comandos de la GPU para seran ejecutados por la segunda unidad de procesamiento 120. Los comandos de la GPU no deberfan ser ejecutados por la primera unidad de procesamiento 110, sino que deberfan ser ejecutados por la segunda unidad de procesamiento 120. Por consiguiente, el valor de campo de atributos ejecutable debe ser diferente para la unidad de procesamiento 110 y para la unidad de procesamiento 120.
[0082] Para aplicar diferentes conjuntos de datos de atributos para la unidad de procesamiento 110 y 112, puede haber una ubicacion alternativa, tal como, por ejemplo, la memoria de sistema 130, que incluye datos de atributos adicionales para unidades de procesamiento adicionales. Cuando se accede a una pagina de memoria de acuerdo con las tecnicas de esta divulgacion, la MMU 122 de la segunda unidad de procesamiento 120 accede a la entrada de tabla de paginas 180 de la manera descrita anteriormente con respecto a la primera unidad de procesamiento 110. La entrada de tabla de paginas 180 incluye una direccion ffsica 184 de la pagina de memoria ffsica 190, asf como datos de atributos 168 para la unidad de procesamiento 110 y un puntero 188. En algunos ejemplos, la entrada de tabla de paginas 180 puede incluir tambien uno o mas bits validos que corresponden a una o mas entradas adicionales de tabla de paginas. De acuerdo con las tecnicas de esta divulgacion, la segunda unidad de procesamiento 120 tambien accede a la ubicacion alternativa, es decir, una entrada de tabla de paginas que incluye datos de atributos adicionales para la segunda unidad de procesamiento 120.
5
10
15
20
25
30
35
40
45
50
55
60
65
[0083] En el ejemplo de la figura 4, la segunda unidad de procesamiento 120 determina la ubicacion alternativa, por ejemplo, la entrada de tabla de paginas 182, en base al valor del puntero 188. Una vez que la MMU 122 tiene el puntero 188, la segunda unidad de procesamiento 120 lee la entrada de tabla de paginas adicional, por ejemplo, la entrada de tabla de paginas 182, basandose en el valor del puntero 188. En algunos ejemplos, el valor del puntero 188 puede indicar la direccion virtual y/o la direccion ffsica de la ubicacion alternativa, por ejemplo, una tabla de paginas particular dentro de la misma tabla de paginas que la entrada de tabla de paginas 184. Si el puntero 188 incluye una direccion virtual, una MMU, tal como la MMU 112 o la MMU 112, puede realizar una segunda traduccion desde una direccion virtual a una direccion ffsica.
[0084] La entrada de tabla de paginas 182 incluye datos de atributos para la segunda unidad de procesamiento 120. Los datos de atributos de la entrada de tabla de paginas 182 pueden incluir valores de campo que indican si la segunda unidad de procesamiento 120 puede leer, escribir, ejecutar y almacenar en memoria cache la pagina de memoria ffsica 190. En algunos ejemplos, los datos de atributos de la entrada de tabla de paginas 182 pueden incluir menos campos de atributos que la entrada de tabla de paginas 180. En este caso, la MMU 122 puede determinar valores de campos de atributos de la entrada de tabla de paginas 180 cuando la entrada de tabla de paginas 182 incluye un valor de campo de atributo correspondiente.
[0085] En algunos ejemplos, el puntero 188 de la entrada de tabla de paginas 180 puede incluir mas de un valor. Como ejemplo, en un sistema que tiene tres procesadores, el puntero 188 puede comprender dos valores (por ejemplo, direcciones virtuales y/o direcciones ffsicas). El primer valor indica una tabla de paginas para la segunda unidad de procesamiento 120, y el segundo valor indica una tabla de paginas con datos de atributos para una tercera unidad de procesamiento. La primera y segunda tablas de paginas indicadas por el puntero 188 pueden incluirse en la misma tabla de paginas que la entrada de tabla de paginas 180. Adicionalmente, el valor del puntero 188 puede comprender un unico valor, que puede indicar un unico valor de ubicacion alternativa, por ejemplo, una entrada de tabla de paginas, que incluye datos de atributos para mas de una unidad de procesamiento. El uso de una unica entrada de tabla de paginas para especificar los datos de atributos para varios procesadores puede reducir los requisitos de memoria para una tabla de paginas en algunos ejemplos.
[0086] En otro ejemplo, el puntero 188 puede no indicar una entrada de tabla de paginas independiente, sino que mas bien puede indicar una ubicacion alternativa que comprende un registro, tal como uno de los registros 116 o de los registros 126 de la figura 1, que incluye datos de atributos de pagina adicionales para una segunda unidad de procesamiento, tal como la unidad de procesamiento 120. Si el valor del puntero 188 indica que los datos de atributos para la segunda unidad de procesamiento 120 se almacenan en un archivo de registro, por ejemplo, un registro en los registros 116 o los registros 126, la MMU 122 puede leer los datos de atributos del registro especificado de un archivo de registro. En un ejemplo en el que la primera unidad de procesamiento 110 o la segunda unidad de procesamiento 120 se ajustan a la arquitectura ARM, el registro al que apunta el puntero puede ser los registros indirectos de atributos de memoria ("registros MAIRn"). En otros ejemplos, puede usarse cualquier registro de cualquier unidad de procesamiento del dispositivo informatico 110 (por ejemplo, la primera unidad de procesamiento 110 o la segunda unidad de procesamiento 120) para almacenar datos de atributos para uno o mas procesadores.
[0087] La figura 5 es un diagrama de flujo que ilustra tecnicas de correlacion de direcciones de memoria virtual con direcciones de memoria ffsica de acuerdo con las tecnicas de esta divulgacion. Las tecnicas de la figura 5 puede realizarse mediante un dispositivo informatico con dos o mas unidades de procesamiento, tal como el dispositivo informatico 100 de la figura 1. Las tecnicas de la figura 5 se describiran con referencia al dispositivo informatico 100, aunque debe entenderse que las tecnicas de la figura 5 son aplicables a una amplia gama de dispositivos informaticos y no se limitan solamente a dispositivos configurados como el dispositivo informatico 100. En el ejemplo de la figura 5, la primera unidad de procesamiento 110 puede ser una CPU y la segunda unidad de procesamiento 120 puede ser una GPU. En varios ejemplos, la primera unidad de procesamiento 110 y/o la segunda unidad de procesamiento 120 pueden comprender cualquier dispositivo de E/S, tal como una camara de video o de fotograffas, una tarjeta de red, un procesador de senales digitales (DSP), un procesador o controlador de E/S, o cualquier otra unidad de procesamiento que pueda estar incluida en el dispositivo informatico 100.
[0088] La primera unidad de procesamiento 110 lee una direccion ffsica de una primera entrada de tabla de paginas de una primera tabla de paginas (410). La primera unidad de procesamiento 110 determina primeros datos de atributos de pagina de la primera entrada de tabla de paginas, donde los primeros datos de atributos de pagina definen uno o mas atributos de accesibilidad de la pagina ffsica de memoria para la primera unidad de procesamiento (420). La segunda unidad de procesamiento 120 lee tambien la direccion ffsica de la primera entrada de tabla de paginas de la primera tabla de paginas (430). En algunos ejemplos, la segunda unidad de procesamiento 120 puede leer la segunda entrada de tabla de paginas a partir de la segunda tabla de paginas en paralelo con la lectura de la primera entrada de tabla de paginas.
[0089] La segunda unidad de procesamiento 120 determina segundos datos de atributos de pagina desde una ubicacion alternativa, en el que la ubicacion alternativa esta asociada con la primera entrada de tabla de paginas y donde los segundos datos de atributos de pagina definen uno o mas atributos de accesibilidad de la pagina ffsica de memoria para la segunda unidad de procesamiento (440). La primera unidad de procesamiento 110 accede
5
10
15
20
25
30
35
40
45
50
55
60
65
entonces a una pagina ffsica de memoria asociada con la direccion ffsica de acuerdo con el uno o mas atributos de accesibilidad de los primeros datos de atributos de pagina (450), y accede a la pagina ffsica de memoria asociada con la direccion ffsica de acuerdo con el uno o mas atributos de accesibilidad de los segundos datos de atributos de pagina (460). En algunos ejemplos, el primer y segundo datos de atributos de pagina definen si la pagina de memoria es al menos una entre legible, escribible, almacenable en memoria cache, ejecutable y modificada. En algunos ejemplos, la segunda entrada de tabla de paginas comprende una segunda entrada de tabla de paginas de la primera tabla de paginas, y para leer la entrada de tabla de paginas, la segunda unidad de procesamiento 120 lee la segunda entrada de tabla de paginas de la primera tabla de paginas basandose en un valor de puntero de la primera entrada de tabla de paginas. En algunos casos, el valor del puntero puede comprender al menos una de entre una direccion virtual y una direccion ffsica. En otros ejemplos, la ubicacion alternativa puede comprender un registro, donde el registro esta asociado con la primera entrada de tabla de paginas en funcion de un valor de puntero de la primera entrada de tabla de paginas.
[0090] En un ejemplo, la primera unidad de procesamiento puede comprender una primera unidad de gestion de memoria (MMU) y la segunda unidad de procesamiento puede comprender una segunda MMU, donde la primera MMU esta configurada para acceder al menos a una de la primera tabla de paginas y la ubicacion alternativa, y la segunda MMU esta configurada para acceder a por lo menos una de la primera tabla de paginas y la ubicacion alternativa.
[0091] En un ejemplo, la ubicacion alternativa puede ser una segunda entrada de tabla de paginas de una segunda tabla de paginas, y la segunda unidad de procesamiento 120 puede leer datos asociados con la segunda tabla de paginas a partir de la primera entrada de tabla de paginas. La segunda unidad de procesamiento 120 puede leer los datos asociados con la segunda tabla de paginas a partir de la primera entrada de tabla de paginas. La lectura de los segundos datos de atributos de pagina puede comprender la identificacion, mediante la segunda unidad de procesamiento 120, de la segunda tabla de paginas en funcion de los datos asociados a la segunda tabla de paginas. En algunos ejemplos, los datos asociados con la segunda tabla de paginas comprenden un identificador que identifica la segunda tabla de paginas a partir de una pluralidad de tablas de paginas paralelas.
[0092] El proceso ilustrado en la figura 5 puede incluir ademas la combinacion, mediante la segunda unidad de procesamiento 120, de los primeros datos de atributos de pagina con segundos datos de atributos de pagina para formar uno o mas atributos de accesibilidad de datos de atributos de pagina combinados. La segunda unidad de procesamiento 120 accede a la pagina ffsica de memoria asociada con la direccion ffsica de acuerdo con el uno o mas atributos de los datos de atributos de pagina combinados. En algunos ejemplos, los segundos datos de atributos de pagina incluyen uno o mas valores de atributos que son diferentes del uno o mas valores de atributos de los primeros datos de atributos de pagina.
[0093] El proceso de la figura 5 puede incluir ademas la lectura, mediante la primera unidad de procesamiento 110, de datos validos a partir de la primera entrada de tabla de paginas que indican si los segundos datos de atributos de pagina son validos. Para determinar los segundos datos de atributo de paginas, la segunda unidad de procesamiento 120 puede determinar los segundos datos de atributos de pagina si los datos validos de la primera entrada de tabla de paginas indican que los segundos datos de atributos de pagina son validos.
[0094] Ejemplos de memoria del sistema 130 incluyen, pero sin limitacion, una memoria de acceso aleatorio (RAM), una memoria de solo lectura (ROM), una memoria de solo lectura programable y borrable electricamente (EEPROM), un CD-ROM u otro almacenamiento de disco optico, almacenamiento de disco magnetico, u otros dispositivos de almacenamiento magnetico, memoria flash, o cualquier otro medio que pueda usarse para transportar o almacenar un codigo de programa deseado en forma de instrucciones o estructuras de datos y a los que se puede acceder mediante un ordenador o un procesador. En algunos ejemplos, la memoria de sistema 130 puede considerarse como un medio de almacenamiento no transitorio. La expresion "no transitorio" puede indicar que el medio de almacenamiento no esta embebido en una onda portadora o una sena propagada. Sin embargo, no debe interpretarse que la expresion "no transitorio" significa que la memoria de sistema 130 es no movil. Como un ejemplo, la memoria de sistema 130 puede retirarse del dispositivo 100, y trasladarse a otro dispositivo. Como otro ejemplo, un dispositivo de almacenamiento, sustancialmente similar a la memoria de sistema 130, puede insertarse en el dispositivo 100. En ciertos ejemplos, un medio de almacenamiento no transitorio puede almacenar datos que, con el tiempo, pueden cambiar (por ejemplo, en RAM).
[0095] En uno o mas ejemplos, las funciones descritas pueden implementarse en hardware, software, firmware o cualquier combinacion de estos. Si se implementan en software, las funciones pueden almacenarse, como una o mas instrucciones o codigo, en un medio legible por ordenador o transmitirse a traves de este, y ejecutarse mediante una unidad de procesamiento basada en hardware. Los medios legibles por ordenador pueden incluir medios de almacenamiento legibles por ordenador, que corresponden a un medio tangible tal como unos medios de almacenamiento de datos o unos medios de comunicacion que incluyen cualquier medio que facilite la transferencia de un programa informatico desde un lugar a otro, por ejemplo, de acuerdo con un protocolo de comunicacion. De esta manera, los medios legibles por ordenador pueden corresponder en general a (1) unos medios de almacenamiento legibles por ordenador tangibles que son no transitorios, o (2) un medio de comunicacion tal como una senal o una onda portadora. Los medios de almacenamiento de datos pueden ser cualquier medio disponible al
5
10
15
20
25
30
35
40
45
que se puede acceder desde uno o mas ordenadores o uno o mas procesadores para recuperar instrucciones, codigo y/o estructuras de datos para implementar las tecnicas descritas en esta divulgacion. Un producto de programa informatico puede incluir un medio legible por ordenador.
[0096] A modo de ejemplo, y no de limitacion, tales medios de almacenamiento legibles por ordenador pueden comprender RAM, ROM, EEPROM, CD-ROM u otro almacenamiento de disco optico, almacenamiento de disco magnetico u otros dispositivos de almacenamiento magnetico, memoria flash o cualquier otro medio que pueda utilizarse para almacenar un codigo de programa deseado en forma de instrucciones o estructuras de datos y al que pueda accederse mediante un ordenador. Ademas, cualquier conexion recibe adecuadamente la denominacion de medios legibles por ordenador. Por ejemplo, si las instrucciones se transmiten desde un sitio web, un servidor u otra fuente remota mediante un cable coaxial, un cable de fibra optica, un par trenzado, una lfnea de abonado digital (DSL) o unas tecnologfas inalambricas tales como infrarrojos, radio y microondas, entonces el cable coaxial, el cable de fibra optica, el par trenzado, la DSL o las tecnologfas inalambricas tales como infrarrojos, radio y microondas se incluyen en la definicion de medio. Sin embargo, deberfa entenderse que los medios de almacenamiento legibles por ordenador y los medios de almacenamiento de datos no incluyen conexiones, ondas portadoras, senales u otros medios transitorios, sino que, en cambio, se orientan a medios de almacenamiento tangibles no transitorios. El termino disco, tal como se utiliza en el presente documento, incluye un disco compacto (CD), un disco laser, un disco optico, un disco versatil digital (DVD), un disco flexible y un disco Blu-ray, de los cuales el disco flexible normalmente reproduce datos de manera magnetica, mientras que el resto de discos reproducen datos opticamente con laseres. Las combinaciones de lo anterior deberfan incluirse tambien dentro del alcance de los medios legibles por ordenador.
[0097] Las instrucciones pueden ser ejecutadas por uno o mas procesadores, tales como uno o mas procesadores de senales digitales (DSP), microprocesadores de proposito general, circuitos integrados especfficos de la aplicacion (ASIC), matrices logicas programables in situ (FPGA) u otros circuitos logicos integrados o discretos equivalentes. Por consiguiente, el termino "procesador", como se usa en el presente documento, puede referirse a cualquiera de las estructuras anteriores o a cualquier otra estructura adecuada para la implementacion de las tecnicas descritas en el presente documento. Ademas, en algunos aspectos, la funcionalidad descrita en el presente documento puede proporcionarse dentro de modulos de hardware y/o software dedicados configurados para la codificacion y la decodificacion, o incorporarse en un codec combinado. Ademas, las tecnicas podrfan implementarse completamente en uno o mas circuitos o elementos logicos.
[0098] Las tecnicas de esta divulgacion se pueden implementar en una amplia variedad de dispositivos o aparatos, que incluyen un telefono inalambrico, un circuito integrado (CI) o un conjunto de CI (por ejemplo, un conjunto de chips). Aunque en esta divulgacion se describen varios componentes, modulos o unidades para enfatizar aspectos funcionales de dispositivos configurados para realizar las tecnicas divulgadas, estos no requieren necesariamente su realizacion mediante diferentes unidades de hardware. En su lugar, como se ha descrito anteriormente, diversas unidades pueden combinarse en una unidad de hardware de codec o proporcionarse por medio de un grupo de unidades de hardware interoperativas, que incluyen uno o mas procesadores como los descritos anteriormente, conjuntamente con software y/o firmware adecuados.
[0099] Se han descrito diversos ejemplos. Estos y otros ejemplos estan dentro del alcance de las siguientes reivindicaciones.

Claims (14)

1.
5
10
15
20
25
2.
30
35
3.
40
45
4.
50
5.
55
6.
7.
60
REIVINDICACIONES
Un procedimiento de acceso a memoria, que comprende:
leer (410), con una primera unidad de procesamiento, una direccion ffsica a partir de una primera entrada de tabla de paginas de una primera tabla de paginas;
determinar (420), con la primera unidad de procesamiento, primeros datos de atributos de pagina a partir de la primera entrada de tabla de paginas, donde los primeros datos de atributos de pagina definen uno o mas atributos de accesibilidad de la pagina ffsica de memoria para la primera unidad de procesamiento;
leer (430), con una segunda unidad de procesamiento, la direccion ffsica a partir de la primera entrada de tabla de paginas de la primera tabla de paginas;
determinar (440), con la segunda unidad de procesamiento, segundos datos de atributos de pagina desde una ubicacion alternativa, donde la ubicacion alternativa esta asociada con la primera entrada de tabla de paginas, y donde los segundos datos de atributos de pagina definen uno o mas atributos de accesibilidad de la pagina ffsica de memoria para la segunda unidad de procesamiento;
acceder (450), con la primera unidad de procesamiento, a una pagina ffsica de memoria asociada con la direccion ffsica de acuerdo con el uno o mas atributos de accesibilidad de los primeros datos de atributos de pagina; y
acceder (460), con la segunda unidad de procesamiento, a la pagina ffsica de memoria asociada con la direccion ffsica de acuerdo con el uno o mas atributos de accesibilidad de los segundos datos de atributos de pagina.
El procedimiento segun la reivindicacion 1, en el que la ubicacion alternativa comprende una segunda entrada de tabla de paginas de una segunda tabla de paginas, donde la determinacion de los segundos datos de atributos de pagina comprenden ademas:
determinar, con la segunda unidad de procesamiento, los segundos datos de atributos de pagina a partir de la segunda entrada de tabla de paginas en paralelo con la lectura de la primera entrada de tabla de paginas.
El procedimiento segun la reivindicacion 1, en el que la ubicacion alternativa es una segunda entrada de tabla de paginas de una segunda tabla de paginas, comprendiendo ademas el procedimiento:
leer, con la segunda unidad de procesamiento, datos asociados con la segunda tabla de paginas a partir de la primera entrada de tabla de paginas,
en donde la determinacion de los segundos datos de atributos de pagina comprende ademas:
identificar, con la segunda unidad de procesamiento, la segunda tabla de paginas en funcion de los datos asociados con la segunda tabla de paginas.
El procedimiento segun la reivindicacion 3, en el que los datos asociados con la segunda tabla de paginas comprenden un identificador que identifica la segunda tabla de paginas a partir de una pluralidad de tablas de paginas paralelas.
El procedimiento segun la reivindicacion 1, en el que la ubicacion alternativa comprende una segunda entrada de tabla de paginas de la primera tabla de paginas,
en donde la segunda entrada de tabla de paginas de la primera tabla de paginas esta asociada con la primera entrada de tabla de paginas en funcion de un valor de puntero de la primera entrada de tabla de paginas.
El procedimiento segun la reivindicacion 5, en el que el valor del puntero comprende al menos una de entre una direccion virtual y una direccion ffsica.
El procedimiento segun la reivindicacion 1, que comprende ademas:
combinar, con la segunda unidad de procesamiento, el uno o mas atributos de los primeros datos de atributos de pagina con uno o mas atributos de los segundos datos de atributos de pagina para formar uno o mas atributos de accesibilidad de datos de atributos de pagina combinados,
en donde la segunda unidad de procesamiento accede a la pagina ffsica de memoria asociada con la direccion ffsica de acuerdo con el uno o mas atributos de los datos de atributos de pagina combinados.
5
10
15
20
25
30
35
40
45
50
55
60
65
8. El procedimiento segun la reivindicacion 7, en el que los segundos datos de atributos de pagina incluyen uno o mas valores de atributos que son diferentes del uno o mas valores de atributos de los primeros datos de atributos de pagina.
9. El procedimiento segun la reivindicacion 1, que comprende ademas:
leer, con la primera unidad de procesamiento, datos validos a partir de la primera entrada de tabla de paginas que indican si los segundos datos de atributos de la pagina son validos, en donde la determinacion de los segundos datos de atributos de pagina comprende ademas:
determinar, con la segunda unidad de procesamiento, los segundos datos de atributos de pagina si los datos validos de la primera entrada de tabla de paginas indican que los segundos datos de atributos de pagina son validos.
10. El procedimiento segun la reivindicacion 1, en el que los primeros datos de atributos de pagina y los segundos datos de atributos de pagina definen si la pagina de memoria es al menos una de entre:
legible, escribible, almacenable en memoria cache, ejecutable y modificada.
11. El procedimiento segun la reivindicacion 1, en el que la ubicacion alternativa comprende un registro,
en el que el registro esta asociado con la primera entrada de tabla de paginas en funcion de un valor de puntero de la primera entrada de tabla de paginas.
12. El procedimiento segun la reivindicacion 1, en el que la primera unidad de procesamiento es una CPU, y la segunda unidad de procesamiento es una GPU.
13. El procedimiento segun la reivindicacion 12, en el que la primera unidad de procesamiento comprende una primera unidad de gestion de memoria (MMU) y la segunda unidad de procesamiento comprende una segunda MMU, en donde la primera MMU esta configurada para acceder al menos a una de entre la primera tabla de paginas y la ubicacion alternativa, y la segunda MMU esta configurada para acceder a por lo menos una de entre la primera tabla de paginas y la ubicacion alternativa.
14. Un aparato, que comprende:
medios para almacenar:
una primera tabla de paginas que incluye una primera entrada de tabla de paginas, donde la primera
entrada de tabla de paginas incluye ademas una direccion ffsica;
una ubicacion alternativa asociada con la primera entrada de tabla de paginas; y
una pagina ffsica de memoria asociada con la direccion ffsica;
primeros medios de procesamiento, donde los primeros medios de procesamiento comprenden:
medios para leer, a partir de la primera entrada de tabla de paginas, la direccion ffsica;
medios para determinar primeros datos de atributos de pagina a partir de la primera entrada de tabla de paginas, en donde los primeros datos de atributos de pagina definen uno o mas atributos de accesibilidad de la pagina ffsica de memoria para los primeros medios de procesamiento; y
medios para acceder a una pagina ffsica de memoria con la direccion ffsica de acuerdo con uno o mas atributos de accesibilidad de los primeros datos de atributos de pagina;
segundos medios de procesamiento, donde los segundos medios de procesamiento comprenden:
medios para leer, a partir de la primera tabla de paginas, la primera entrada de tabla de paginas;
medios para determinar la direccion ffsica a partir de la primera entrada de tabla de paginas;
medios para determinar segundos datos de atributos de pagina a partir de la ubicacion alternativa, en donde la ubicacion alternativa esta asociada con la primera entrada de tabla de paginas y donde los segundos datos de atributos de pagina definen uno o mas atributos de accesibilidad de la pagina ffsica de memoria para los segundos medios de procesamiento; y
medios para acceder a la pagina ffsica de memoria asociada con la direccion ffsica de acuerdo con el uno o mas atributos de accesibilidad de los segundos datos de atributos de pagina.
5
Un medio de almacenamiento legible por ordenador no transitorio que tiene instrucciones almacenadas en el mismo que, al ejecutarse, hacen que una primera unidad de procesamiento y una segunda unidad de procesamiento realicen el procedimiento segun cualquiera de las reivindicaciones 1 a 13.
ES14728008.5T 2013-05-06 2014-04-22 Conjuntos de tablas de páginas de múltiples núcleos de campos de atributos Active ES2642347T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/888,069 US9436616B2 (en) 2013-05-06 2013-05-06 Multi-core page table sets of attribute fields
US201313888069 2013-05-06
PCT/US2014/035036 WO2014182443A1 (en) 2013-05-06 2014-04-22 Multi-core page table sets of attribute fields

Publications (1)

Publication Number Publication Date
ES2642347T3 true ES2642347T3 (es) 2017-11-16

Family

ID=50884497

Family Applications (1)

Application Number Title Priority Date Filing Date
ES14728008.5T Active ES2642347T3 (es) 2013-05-06 2014-04-22 Conjuntos de tablas de páginas de múltiples núcleos de campos de atributos

Country Status (8)

Country Link
US (1) US9436616B2 (es)
EP (1) EP2994837B1 (es)
JP (1) JP6067928B2 (es)
KR (1) KR101708142B1 (es)
CN (1) CN105164653B (es)
ES (1) ES2642347T3 (es)
HU (1) HUE035960T2 (es)
WO (1) WO2014182443A1 (es)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140331019A1 (en) * 2013-05-06 2014-11-06 Microsoft Corporation Instruction set specific execution isolation
US9817689B2 (en) 2015-02-27 2017-11-14 Red Hat, Inc. Dirty page tracking of guest-uncached memory
US10114768B2 (en) * 2016-08-29 2018-10-30 Intel Corporation Enhance memory access permission based on per-page current privilege level
US10713177B2 (en) 2016-09-09 2020-07-14 Intel Corporation Defining virtualized page attributes based on guest page attributes
CN110007987B (zh) * 2018-01-05 2022-03-25 武汉斗鱼网络科技有限公司 一种视图对象的层级管理方法及系统
US10713746B2 (en) 2018-01-29 2020-07-14 Microsoft Technology Licensing, Llc FIFO queue, memory resource, and task management for graphics processing
US10719268B2 (en) * 2018-06-29 2020-07-21 Microsoft Technology Licensing, Llc Techniques for safely and efficiently enqueueing and dequeueing data on a graphics processor
US11914726B2 (en) 2018-08-30 2024-02-27 Micron Technology, Inc. Access control for processor registers based on execution domains
US10915457B2 (en) * 2018-08-30 2021-02-09 Micron Technology, Inc. Memory access control through permissions specified in page table entries for execution domains
US10691592B2 (en) * 2018-10-30 2020-06-23 Micron Technology, Inc. Error-checking in namespaces on storage devices using a namespace table and metadata
US11216385B2 (en) 2019-05-15 2022-01-04 Samsung Electronics Co., Ltd. Application processor, system-on chip and method of operating memory management unit
US11119914B2 (en) * 2019-11-15 2021-09-14 Micron Technology, Inc. Method of operating a memory with dynamically changeable attributes
GB2604629B (en) * 2021-03-10 2023-06-07 Imagination Tech Ltd A computer system and method using a first page table and a second page table
KR20220147277A (ko) 2021-04-27 2022-11-03 삼성전자주식회사 제어 장치, 이를 포함하는 컴퓨팅 시스템, 및 이의 페이지 테이블 엔트리 생성 및 탐색 방법

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03127146A (ja) * 1989-10-12 1991-05-30 Koufu Nippon Denki Kk 情報処理装置
JPH0793220A (ja) * 1993-09-20 1995-04-07 Agency Of Ind Science & Technol 仮想記憶管理方式
US6446034B1 (en) 1998-12-16 2002-09-03 Bull Hn Information Systems Inc. Processor emulation virtual memory address translation
US6286092B1 (en) 1999-05-12 2001-09-04 Ati International Srl Paged based memory address translation table update method and apparatus
US6658538B2 (en) * 2001-06-21 2003-12-02 International Business Machines Corporation Non-uniform memory access (NUMA) data processing system having a page table including node-specific data storage and coherency control
US7444636B2 (en) 2002-07-15 2008-10-28 Hewlett-Packard Development Company, L.P. Method and system of determining attributes of a functional unit in a multiple processor computer system
US7111145B1 (en) 2003-03-25 2006-09-19 Vmware, Inc. TLB miss fault handler and method for accessing multiple page tables
US7366869B2 (en) * 2005-03-17 2008-04-29 Qualcomm Incorporated Method and system for optimizing translation lookaside buffer entries
US7673116B2 (en) * 2006-01-17 2010-03-02 Advanced Micro Devices, Inc. Input/output memory management unit that implements memory attributes based on translation data
US7539842B2 (en) 2006-08-15 2009-05-26 International Business Machines Corporation Computer memory system for selecting memory buses according to physical memory organization information stored in virtual address translation tables
US7865675B2 (en) 2007-12-06 2011-01-04 Arm Limited Controlling cleaning of data values within a hardware accelerator
US8015361B2 (en) 2007-12-14 2011-09-06 International Business Machines Corporation Memory-centric page table walker
WO2009144941A1 (ja) 2008-05-30 2009-12-03 日本電気株式会社 データベースシステム、データベース管理方法、データベース構造およびコンピュータプログラム
US8244981B2 (en) 2009-07-10 2012-08-14 Apple Inc. Combined transparent/non-transparent cache
US20110016290A1 (en) 2009-07-14 2011-01-20 Arie Chobotaro Method and Apparatus for Supporting Address Translation in a Multiprocessor Virtual Machine Environment
US20110161620A1 (en) * 2009-12-29 2011-06-30 Advanced Micro Devices, Inc. Systems and methods implementing shared page tables for sharing memory resources managed by a main operating system with accelerator devices
US20120233439A1 (en) 2011-03-11 2012-09-13 Boris Ginzburg Implementing TLB Synchronization for Systems with Shared Virtual Memory Between Processing Devices
US8938602B2 (en) 2012-08-02 2015-01-20 Qualcomm Incorporated Multiple sets of attribute fields within a single page table entry

Also Published As

Publication number Publication date
CN105164653B (zh) 2018-06-19
HUE035960T2 (en) 2018-05-28
CN105164653A (zh) 2015-12-16
KR101708142B1 (ko) 2017-02-27
JP2016517992A (ja) 2016-06-20
EP2994837A1 (en) 2016-03-16
US9436616B2 (en) 2016-09-06
EP2994837B1 (en) 2017-07-12
US20140331023A1 (en) 2014-11-06
KR20160008176A (ko) 2016-01-21
JP6067928B2 (ja) 2017-01-25
WO2014182443A1 (en) 2014-11-13

Similar Documents

Publication Publication Date Title
ES2642347T3 (es) Conjuntos de tablas de páginas de múltiples núcleos de campos de atributos
ES2763545T3 (es) Múltiples conjuntos de campos de atributos dentro de una única entrada de tabla de páginas
ES2408189T3 (es) Traducción dinámica de dirección con protección de búsqueda y carga.
US9208103B2 (en) Translation bypass in multi-stage address translation
US11003584B2 (en) Technology for managing memory tags
US20140331019A1 (en) Instruction set specific execution isolation
BRPI0515920B1 (pt) Método, meio operável por computador e sistema para virtualização de recursos de processador
US10255069B2 (en) Cleared memory indicator
US9268694B2 (en) Maintenance of cache and tags in a translation lookaside buffer
KR20180054394A (ko) 호스트 메모리 버퍼(Host Memory Buffer)를 관리하기 위한 NVMe(Non-Volatile Memory Express) 컨트롤러를 포함하는 솔리드 스테이트 저장 장치(solid state storage device), 이를 포함하는 시스템 및 호스트의 호스트 메모리 버퍼를 관리하는 방법
US9146879B1 (en) Virtual memory management for real-time embedded devices
US9208088B2 (en) Shared virtual memory management apparatus for providing cache-coherence
US20180018095A1 (en) Method of operating storage device and method of operating data processing system including the device
US8892810B2 (en) Semiconductor device and memory protection method
US9727256B1 (en) Virtual memory management techniques
US8458434B2 (en) Unified virtual contiguous memory manager
US11940927B2 (en) Technologies for memory tagging
US10025726B2 (en) Method in a memory management unit for managing address translations in two stages
US20150134909A1 (en) Managing read operations, write operations and extent change operations
CN116249972A (zh) 一种内存保护方法及保护代理控制装置