ES2346045T3 - Sistema y metodo de control de acceso a memoria compartida para una arquitectura de ordenador para redes de banda ancha. - Google Patents

Sistema y metodo de control de acceso a memoria compartida para una arquitectura de ordenador para redes de banda ancha. Download PDF

Info

Publication number
ES2346045T3
ES2346045T3 ES02705345T ES02705345T ES2346045T3 ES 2346045 T3 ES2346045 T3 ES 2346045T3 ES 02705345 T ES02705345 T ES 02705345T ES 02705345 T ES02705345 T ES 02705345T ES 2346045 T3 ES2346045 T3 ES 2346045T3
Authority
ES
Spain
Prior art keywords
memory
key
bits
treatment
access
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
ES02705345T
Other languages
English (en)
Inventor
Masakazu Suzuoki
Takeshi Yamazaki
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.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Computer Entertainment 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 Sony Computer Entertainment Inc filed Critical Sony Computer Entertainment Inc
Application granted granted Critical
Publication of ES2346045T3 publication Critical patent/ES2346045T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/12Protocol engines

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multi Processors (AREA)
  • Storage Device Security (AREA)
  • Image Processing (AREA)

Abstract

Un sistema (101) de tratamiento por ordenador, comprendiendo dicho sistema (101) de tratamiento: una primera memoria (225) para almacenar programas y datos asociados con dichos programas; una pluralidad de primeras unidades (402) de tratamiento para tratar dichos programas y dichos datos asociados; un controlador de memoria (205) para controlar los accesos a dicha primera memoria por dichas primeras unidades (402) de tratamiento; una segunda memoria para almacenar una tabla de acceso (2102) y una tabla de claves (1902), comprendiendo dicha tabla de acceso (2102) una pluralidad de entradas de acceso, incluyendo cada una de dichas entradas de acceso una clave de acceso y una identificación de un espacio de memoria dentro de dicha primera memoria asociado con dicha clave de acceso, comprendiendo dicha tabla de claves (1902) una pluralidad de entradas de claves, incluyendo cada una de dichas entradas de claves una identificación de una de dichas primeras unidades (402) de tratamiento y una clave de solicitud asociada con dicha primera unidad (402) de tratamiento; y una segunda unidad (203) de tratamiento para controlar dicho tratamiento de dichos programas y dichos datos asociados por dichas primeras unidades (402) de tratamiento, siendo accionable dicha segunda unidad (203) de tratamiento para construir y mantener dicha tabla de acceso (2102) y dicha tabla de claves (1902), siendo además accionable dicha segunda unidad (203) de tratamiento para dirigir cualquiera de dichas primeras unidades (402) de tratamiento para procesar uno de dichos programas, siendo accionable dicha primera unidad (402) de tratamiento para tratar dicho programa para emitir una solicitud a dicho controlador de memoria (205) para acceder a una posición de almacenamiento dentro de dicha primera memoria (225), siendo accionable dicho controlador de memoria, en respuesta a dicha solicitud, para comparar la clave de solicitud asociada con dicha primera unidad (402) de tratamiento en dicha tabla de claves (1902) con las claves de acceso en dicha tabla de acceso (2102), y si una de dichas claves de acceso corresponde con la clave de solicitud asociada con dicha primera unidad (402) de tratamiento en dicha tabla de claves (1902) y dicha posición de almacenamiento corresponde al espacio de memoria asociado con dicha clave de acceso e identificado en dicha tabla de acceso (2102), ejecutar dicha solicitud.

Description

Sistema y método de control de acceso a memoria compartida para una arquitectura de ordenador para redes de banda ancha.
Campo técnico
El presente invento se refiere a una arquitectura para procesadores de ordenador y redes de ordenadores y, en particular, a una arquitectura para procesadores de ordenador y redes de ordenadores en un entorno de banda ancha, y más particularmente a un sistema de tratamiento por ordenador con un sistema de control de acceso a memoria compartida de multiprocesador. El presente invento se refiere además a un modelo de programación para tal arquitectura y, en particular, a un método de tratamiento por ordenador.
Técnica antecedente
Los ordenadores y dispositivos informáticos de redes actuales de ordenadores, por ejemplo redes de área local (LAN) usados en redes de oficinas y redes globales tales como Internet, fueron diseñados principalmente para informática autónoma. La acción de compartir datos y programas de aplicación ("aplicaciones") sobre una red de ordenadores no era un objetivo del diseño principal de estos ordenadores y dispositivos informáticos. Estos ordenadores y dispositivos informáticos también fueron diseñados típicamente usando una amplia variedad de diferentes procesadores hechos por una variedad de diferentes fabricantes, por ejemplo, Motorola, Intel, Texas Instruments, Sony y otros. Cada uno de estos procesadores tiene su propio conjunto de instrucciones particulares y arquitectura de conjunto de instrucciones (ISA), es decir, su propio conjunto particular de instrucciones de estructura de lenguaje de ensamblaje para las principales unidades informáticas y unidades de memoria principales para que realicen estas instrucciones. Se requiere un programador para comprender, por ello, cada conjunto de instrucciones del procesador y la ISA para escribir aplicaciones para estos procesadores. Esta combinación heterogénea de ordenadores y dispositivos informáticos en las redes de ordenadores de hoy en día complica el tratamiento y la acción de compartir datos y aplicaciones. A menudo se requieren múltiples versiones de la misma aplicación, además, para acomodar este entorno
heterogéneo.
Los tipos de ordenadores y dispositivos informáticos conectados a redes globales, particularmente a Internet, son extensivos. Además de los ordenadores personales (PC) y servidores, estos dispositivos informáticos incluyen teléfonos móviles, ordenadores móviles, asistentes digitales personales (PDA), codificadores, televisiones digitales y muchos otros. La acción de compartir datos y aplicaciones entre esta variedad de ordenadores y dispositivos informáticos presenta problemas sustanciales.
Se han empleado varias técnicas en un intento de resolver estos problemas. Estas técnicas incluyen, entre otras, interfaces sofisticadas y técnicas de programación complicadas. Estas soluciones requieren a menudo aumentos sustanciales en la potencia de tratamiento para llevarlas a la práctica. También a menudo dan como resultado un aumento sustancial del tiempo requerido para procesar aplicaciones y para transmitir datos sobre redes.
Los datos son transmitidos típicamente sobre Internet por separado desde las aplicaciones correspondientes. Esta aproximación evita la necesidad de enviar la aplicación con cada conjunto de datos transmitidos correspondientes a la aplicación. Aunque esta aproximación minimiza la cantidad de ancho de banda necesario, también causa a menudo frustración entre los usuarios. La aplicación correcta, o la aplicación más corriente, para los datos transmitidos puede no estar disponible en el ordenador del cliente. Esta aproximación también requiere la escritura de una multiplicidad de versiones de cada aplicación para la multiplicidad de ISA y conjuntos de instrucciones diferentes empleados por los procesadores de la red.
El modelo Java intenta resolver este problema. Este modelo emplea una pequeña aplicación ("miniprograma" o en inglés "applet") que cumple con un protocolo de seguridad estricto. Los miniprogramas son enviados desde un ordenador servidor sobre la red para ser ejecutados por un ordenador de cliente ("cliente"). Para evitar tener que enviar diferentes versiones del mismo miniprograma a clientes que emplean diferentes ISA, todos los miniprogramas de Java son ejecutados en una máquina virtual Java del cliente. Esta máquina virtual Java es un software que emula un ordenador que tiene una ISA de Java y un conjunto de instrucciones Java. Este software sin embargo, se ejecuta sobre la ISA del cliente y el conjunto de instrucciones del cliente. Una versión de la máquina virtual Java es proporcionada para cada ISA y conjunto de instrucciones diferentes de los clientes. Por ello, no se requiere una multiplicidad de diferentes versiones de cada miniprograma. Cada cliente descarga solo la máquina virtual Java correcta para su ISA y conjunto de instrucciones particulares para ejecutar todos los miniprogramas de Java.
Aunque proporciona una solución al problema de tener que escribir versiones diferentes de una aplicación para cada ISA y conjunto de instrucciones diferentes, el modelo de tratamiento Java requiere una capa adicional de software sobre el ordenador del cliente. Esta capa adicional de software degrada significativamente una velocidad de tratamiento del ordenador. Esta disminución de la velocidad es particularmente significativa para aplicaciones multimedia en tiempo real. Un miniprograma o "applet" de Java descargado también puede contener virus, fallos de tratamiento, etc. Estos virus y fallos pueden corromper una base de datos de un cliente y causar otros daños. Aunque un protocolo de seguridad empleado en el modelo Java intenta resolver este problema implantando un entorno restringido ("sandbox") de software, es decir, un espacio en la memoria del cliente más allá del cual el miniprograma de Java no puede escribir datos, este modelo de seguridad activado mediante software es a menudo inseguro en su implantación y requiere incluso más tratamiento.
Las aplicaciones de red, multimedia, en tiempo real están resultando cada vez más importantes. Estas aplicaciones de red requieren velocidades de tratamiento extremadamente rápidas. Muchos miles de megabits de datos por segundo pueden ser necesarios en el futuro para tales aplicaciones. La arquitectura común de redes, y particularmente la de Internet, y el modelo de programación actualmente puesto en práctica, por ejemplo, en el modelo Java, hace que alcanzar tales velocidades de tratamiento sea extremadamente difícil.
Por ello, se requieren una nueva arquitectura de ordenador, una nueva arquitectura para redes de ordenadores y un nuevo modelo de programación. Esta arquitectura y modelo de programación nuevos deberían resolver los problemas de compartir datos y aplicaciones entre los distintos miembros de una red sin imponer cargas informáticas añadidas. Esta arquitectura de ordenador y modelo de programación nuevos deberían también resolver los problemas de seguridad inherentes al compartir aplicaciones y datos entre los miembros de una red.
El documento US-A-5.978.839 describe un sistema de tratamiento por ordenador en el que, cuando se asigna memoria para una CPU, la información de la CPU (por ejemplo el número de CPU, ID de CPU, y/o el tipo de CPU) deberían ser previamente clarificados o proporcionados al sistema. Si tal información no ha sido proporcionada previamente, el sistema no puede asignar memoria para la CPU ya que el sistema no conoce la información de la CPU.
Descripción del invento
El presente invento está definido en las reivindicaciones. En un aspecto, el presente invento proporciona una nueva arquitectura para ordenadores, dispositivos informáticos y redes de ordenadores. En otro aspecto, el presente invento proporciona un nuevo modelo de programación para estos ordenadores, dispositivos informáticos y redes de ordenadores.
De acuerdo con el presente invento, todos los miembros de una red de ordenadores, es decir, todos los ordenadores y dispositivos informáticos de la red, están construidos a partir de un módulo informático común. Este módulo informático común tiene una estructura consistente y preferiblemente emplea la misma ISA. Los miembros de la red pueden ser, por ejemplo, clientes, servidores, PC, ordenadores móviles, maquinas de juegos, PDA, codificadores, aparatos, televisiones digitales y otros dispositivos que usan procesadores de ordenador. La estructura modular consistente permite un tratamiento de aplicaciones y datos eficiente, de elevada velocidad por los miembros de la red y la rápida transmisión de aplicaciones y datos sobre la red. Esta estructura también simplifica la construcción de miembros de la red de distintos tamaños y potencia de tratamiento y la preparación de aplicaciones para su tratamiento por estos miembros. Además, de acuerdo con una realización del presente invento, se ha proporcionado una red de ordenadores que comprende una pluralidad de procesadores conectados a dicha red, comprendiendo cada uno de dichos procesadores una pluralidad de primeras unidades de tratamiento que tienen la misma arquitectura de conjunto de instrucciones y una segunda unidad de tratamiento para controlar dichas primeras unidades de tratamiento, siendo dichas primeras unidades de tratamiento operables para procesar celdas de software transmitidas sobre dicha red, comprendiendo cada una de dichas celdas de software un programa compatible con dicha arquitectura de conjunto de instrucciones, datos asociados con dicho programa y un identificador que identifica únicamente dicha celda de software entre la totalidad de dichas celdas de software transmitidas sobre dicha red. Preferiblemente, el identificador tiene un número de identificación que identifica únicamente dicha celda de software entre la totalidad de dichas celdas de software transmitidas sobre dicha red.
En otro aspecto, el presente invento proporciona un nuevo modelo de programación para transmitir datos y aplicaciones sobre una red y para tratar datos y aplicaciones entre los miembros de la red. Este modelo de programación emplea una celda de software transmitida sobre la red para su tratamiento por cualquiera de los miembros de la red. Cada celda de software tiene la misma estructura y puede contener tanto aplicaciones como datos. Como resultado del tratamiento de alta velocidad y de la velocidad de transmisión proporcionada por la arquitectura de ordenador modular, las celdas pueden ser procesadas rápidamente. El código para las aplicaciones está basado preferiblemente en el mismo conjunto de instrucción e ISA comunes. Cada celda de software contiene preferiblemente una identificación global (ID global) e información que describe la cantidad de recursos informáticos requeridos para el tratamiento de las celdas. Como todos los recursos informáticos tienen la misma estructura básica y emplean la misma ISA, el recurso particular que realiza este tratamiento puede estar situado en cualquier lugar de la red y asignado dinámicamente.
El módulo de tratamiento básico es un elemento de procesador (PE). Un PE comprende preferiblemente una unidad de tratamiento (PU), un controlador de acceso directo a la memoria (DMAC) y una pluralidad de unidades de tratamiento unidas (APU). En una realización preferida, un PE comprende ocho APU. La PU y las APU actúan entre ellas con una memoria dinámica compartida de acceso aleatorio (DRAM) que tiene preferiblemente una arquitectura de cruz. La PU programa y orquesta el tratamiento de datos y aplicaciones por las APU. Las APU realizan este tratamiento de una forma independiente y paralela. El DMAC controla los accesos por la PU y las APU a los datos y aplicaciones almacenados en la DRAM compartida.
De acuerdo con esta estructura modular, el número de PE empleado por un miembro de la red está basado en la potencia de tratamiento requerida por dicho miembro. Por ejemplo, un servidor puede emplear cuatro PE, una estación de trabajo puede emplear dos PE y una PDA puede emplear un PE. El número de APU de un PE asignado para procesar una celda de software particular depende de la complejidad y magnitud de los programas y datos contenidos dentro de la celda.
En una realización preferida, una pluralidad de PE está asociada con una DRAM compartida. La DRAM esta preferiblemente segregada en una pluralidad de secciones, y cada una de estas secciones está segregada en una pluralidad de bancos de memoria. En una realización preferida particularmente, la DRAM comprende sesenta y cuatro bancos de memoria, y cada banco tiene un megabyte de capacidad de almacenamiento. Cada sección de la DRAM es controlada preferiblemente por un controlador de banco, y cada DMAC de un PE accede preferiblemente a cada controlador de banco. El DMAC de cada PE en esta realización, por ello, puede acceder a cualquier parte de la DRAM compartida.
En otro aspecto que no es parte del presente invento pero que sirve para un mejor entendimiento del tema reivindicado, puede proporcionarse un sistema y un método sincronizados para una lectura de datos de una APU desde la DRAM compartida, y la escritura de datos a la misma. Este sistema evita conflictos entre las múltiples APU y los múltiples PE que comparten la DRAM. De acuerdo con este sistema y método, un área de la DRAM es designada para almacenar una pluralidad de bits llenos-vacíos. Cada uno de estos bits llenos-vacíos corresponde a un área designada de la DRAM. El sistema sincronizado está integrado en el hardware de la DRAM y, por ello, evita la sobrecarga informática de un esquema de sincronización de datos puesto en práctica en software.
El presente invento también implanta entornos restringidos dentro de la DRAM para proporcionar seguridad contra la corrupción de datos para un programa que está siendo tratado por una APU a partir de los datos para un programa que está siendo tratado por otra APU. Cada entorno restringido define un área de la DRAM compartida más allá de la cual una APU particular, o conjunto de APU, no puede leer o escribir datos.
En otro aspecto que no es parte del presente invento pero que sirve para un mejor entendimiento del tema reivindicado, puede proporcionarse un sistema y un método para la emisión de órdenes de la PU a las APU para iniciar el tratamiento de aplicaciones y datos de las APU. Estas órdenes, denominadas llamadas de procedimiento remoto de la APU (ARPC), permiten que las PU orquesten y coordinen el tratamiento paralelo de aplicaciones y datos de las APU sin que las APU realicen la función de coprocesadores.
En otro aspecto que no es parte del presente invento pero que sirve para un mejor entendimiento del tema reivindicado, puede proporcionarse un sistema y un método para establecer una estructura de tubería dedicada para el tratamiento de la corriente de datos. De acuerdo con este sistema y método, un grupo coordinado de APU, y un grupo coordinado de entornos restringidos de memoria asociadas con estas APU, son establecidos por una PU para el tratamiento de estos datos. Las APU de tubería dedicada y los entornos restringidos de memoria permanecen dedicados a la tubería durante períodos en los que el tratamiento de datos no tiene lugar. En otras palabras, las APU dedicadas y sus entornos restringidos asociados son colocados en un estado reservado durante estos períodos.
En otro aspecto que no es parte del presente invento pero que sirve para un mejor entendimiento del tema reivindicado, puede proporcionarse un temporizador absoluto para el tratamiento de tareas. Este temporizador absoluto es independiente de la frecuencia de los relojes empleados por las APU para el tratamiento de aplicaciones y datos. Las aplicaciones son escritas basándose en el período de tiempo para tareas definido por el temporizador absoluto. Si la frecuencia de los relojes empleados por las APU aumenta debido, por ejemplo, a mejoras en las APU, el período de tiempo para una tarea dada como ha sido definido por el temporizador absoluto permanece el mismo. Este esquema permite la utilización de tiempos de tratamiento mejorados por versiones más nuevas de las APU sin incapacitar a estas APU más nuevas en aplicaciones de tratamiento más viejas escritas para los tiempos de tratamiento más lentos de las APU más viejas.
También puede proporcionarse, como un aspecto que no es parte del presente invento pero que sirve para un mejor entendimiento del tema reivindicado, un esquema alternativo para permitir que las APU más nuevas que tienen velocidades de tratamiento más rápidas traten aplicaciones más viejas escritas para las velocidades de tratamiento más lentas de las APU más viejas. En este esquema alternativo, las instrucciones o el microcódigo particulares empleados por las APU en el tratamiento de estas aplicaciones más viejas son analizados durante el tratamiento para problemas en la coordinación del tratamiento paralelo de las APU creado por las velocidades mejoradas. Las instrucciones "sin funcionamiento" ("NOOP") son insertadas en las instrucciones ejecutadas por alguna de estas APU para mantener la terminación secuencial del tratamiento por las APU esperado por el programa. Insertando estas NOOP en estas instrucciones, es mantenida la temporización correcta para la ejecución de todas las instrucciones de las APU.
En otro aspecto que no es parte del presente invento pero que sirve para un mejor entendimiento del tema reivindicado, puede proporcionarse un paquete de chip que contiene un circuito integrado en el que está integrada una guía de onda óptica.
Breve descripción de los dibujos
La fig. 1 ilustra la arquitectura total de una red de ordenadores que no es parte del presente invento pero que sirve para un mejor entendimiento del tema reivindicado.
La fig. 2 es un diagrama que ilustra la estructura de un elemento procesador (PE) de acuerdo con el presente invento.
La fig. 3 es un diagrama que ilustra la estructura de un motor de banda ancha (BE) que no es parte del presente invento pero que sirve para un mejor entendimiento del tema reivindicado.
La fig. 4 es un diagrama que ilustra la estructura de una unidad de tratamiento unida (APU) de acuerdo con el presente invento.
La fig. 5 es un diagrama que ilustra la estructura de un elemento de procesador, visualizador (VS) y una interfaz óptica que no es parte del presente invento pero que sirve para un mejor entendimiento del tema reivindicado.
La fig. 6 es un diagrama que ilustra una combinación de elementos de procesador de acuerdo con el presente invento.
La fig. 7 ilustra otra combinación de elementos de procesador que no es parte del presente invento pero que sirve para un mejor entendimiento del tema reivindicado.
La fig. 8 ilustra aún otra combinación de elementos de procesador que no es parte del presente invento pero que sirve para un mejor entendimiento del tema reivindicado.
La fig. 9 ilustra aún otra combinación de elementos de procesador que no es parte del presente invento pero que sirve para un mejor entendimiento del tema reivindicado.
La fig. 10 ilustra aún otra combinación de elementos de procesador que no es parte del presente invento pero que sirve para un mejor entendimiento del tema reivindicado.
La fig. 11A ilustra la integración de interfaces ópticas dentro de un paquete de chip que no es parte del presente invento pero que sirve para un mejor entendimiento del tema reivindicado.
La fig. 11B es un diagrama de una configuración de procesadores que usan las interfaces ópticas de la fig. 11A.
La fig. 11C es un diagrama de otra configuración de procesadores que usan las interfaces ópticas de la fig. 11A.
La fig. 12A ilustra la estructura de un sistema de memoria que no es parte del presente invento pero que sirve para un mejor entendimiento del tema reivindicado.
La fig. 12B ilustra la escritura de datos desde un primer motor de banda ancha a un segundo motor de banda ancha que no es parte del presente invento pero que sirve para un mejor entendimiento del tema reivindicado.
La fig. 13 es un diagrama de la estructura de una memoria compartida para un elemento de procesador de acuerdo con el presente invento.
La fig. 14A ilustra una estructura para un banco de la memoria mostrado en la fig. 13.
La fig. 14B ilustra otra estructura para un banco de la memoria mostrado en la fig. 13.
La fig. 15 ilustra una estructura para un controlador de acceso directo a la memoria de acuerdo con el presente invento.
La fig. 16 ilustra una estructura alternativa para un controlador de acceso directo a la memoria de acuerdo con el presente invento.
Las figs. 17A a 17O ilustran la operación de sincronización de datos que no es parte del presente invento pero que sirve para un mejor entendimiento del tema reivindicado.
La fig. 18 es un diagrama de memoria de tres estados que ilustra los distintos estados de una posición de memoria de acuerdo con el esquema de sincronización de datos que no es parte del presente invento pero que sirve para un mejor entendimiento del tema reivindicado.
La fig. 19 ilustra la estructura de una tabla de control de claves para un entorno restringido de hardware de acuerdo con el presente invento.
La fig. 20 ilustra un esquema para almacenar claves de acceso a la memoria para un entorno restringido de hardware de acuerdo con el presente invento.
La fig. 21 ilustra la estructura de una tabla de control de acceso a la memoria para un entorno restringido de hardware de acuerdo con el presente invento.
La fig. 22 es un diagrama de flujo de las operaciones para acceder a un entorno restringido de memoria que usa la tabla de control de claves de la fig. 19 y la tabla de control de acceso a la memoria de la fig. 21.
La fig. 23 ilustra la estructura de una celda de software que no es parte del presente invento pero que sirve para un mejor entendimiento del tema reivindicado.
La fig. 24 es un diagrama de flujo de las operaciones para emitir llamadas de procedimiento remoto a las APU que no es parte del presente invento pero que sirve para un mejor entendimiento del tema reivindicado.
La fig. 25 ilustra la estructura de una tubería dedicada para tratar la corriente de datos que no es parte del presente invento pero que sirve para un mejor entendimiento del tema reivindicado.
Las figs. 26A-26B son diagramas de flujos de las operaciones realizadas por la tubería dedicada de la fig. 25 en el tratamiento de la corriente de datos que no es parte del presente invento pero que sirve para un mejor entendimiento del tema reivindicado.
La fig. 27 ilustra una estructura alternativa para una tubería dedicada para el tratamiento de la corriente de datos que no es parte del presente invento pero que sirve para un mejor entendimiento del tema reivindicado.
La fig. 28 ilustra un esquema para un temporizador absoluto para coordinar el tratamiento paralelo de aplicaciones y datos por las APU que no es parte del presente invento pero que sirve para un mejor entendimiento del tema reivindicado.
Mejor modo para poner en práctica el invento
La arquitectura total para un sistema informático 101 que no es parte del presente invento pero que sirve para un mejor entendimiento del tema reivindicado, es mostrada en la fig. 1.
Como se ha ilustrado en esta figura, el sistema 101 incluye una red 104 a la que están conectada una pluralidad de ordenadores y dispositivos informáticos. La red 104 puede ser una LAN, una red global, tal como Internet, o cualquier otra red informática.
Los ordenadores y dispositivos informáticos conectados a la red 104 (los "miembros" de la red) incluyen, por ejemplo, ordenadores de cliente 106, ordenadores servidores 108, asistentes digitales personales (PDA) 110, televisión digital (DTV) 112 y otros ordenadores y dispositivos informáticos conectados por cable o inalámbricos. Los procesadores empleados por los miembros de red 104 son construidos a partir del mismo módulo informático común. Estos procesadores preferiblemente también tienen todos la misma ISA y realizan el tratamiento de acuerdo con el mismo conjunto de instrucciones. El número de módulos incluido dentro de cualquier procesador particular depende de la potencia de tratamiento requerida por ese procesador.
Por ejemplo, como los servidores 108 del sistema 101 realizan más tratamiento de datos y aplicaciones que los clientes 106, los servidores 108 contienen más módulos informáticos que los clientes 106. Las PDA 110, por otro lado, realizan la menor cantidad de tratamiento. Las PDA 110, por ello, contienen el menor número de módulos informáticos. La DTV 112, realiza un nivel de tratamiento entre las de los clientes 106 y los servidores 108. La DTV 112, por ello, contiene un número de módulos informáticos entre el de los clientes 106 y los servidores 108. Como se ha descrito más adelante, cada módulo informático contiene un controlador de tratamiento y una pluralidad de unidades de tratamiento idénticas para realizar el tratamiento paralelo de los datos y aplicaciones transmitidos sobre la red 104.
Esta configuración homogénea para el sistema 101 facilita su adaptabilidad, velocidad de tratamiento y eficiencia de tratamiento. Debido a que cada miembro del sistema 101 realiza el tratamiento usando uno o más (o alguna fracción) del mismo módulo informático, el ordenador o dispositivo informático particular que realiza el tratamiento real de datos y aplicaciones no tiene importancia. El tratamiento de una aplicación y de datos particulares, además, puede ser compartido entre los miembros de red. Identificando únicamente las celdas que comprenden los datos y aplicaciones tratados por el sistema 101 a través del sistema, los resultados del tratamiento pueden ser transmitidos al ordenador o sistema informático solicitando el tratamiento independientemente de donde ha ocurrido este tratamiento. Debido a que los módulos que realizan este tratamiento tienen una estructura común y emplean una ISA común, las cargas informáticas de una capa añadida de software son evitadas para conseguir la compatibilidad entre los procesadores. Esta arquitectura y modelo de programación facilitan la velocidad de tratamiento necesaria para ejecutar, por ejemplo, aplicaciones multimedia en tiempo real.
Para aprovecharse más de las velocidades y eficiencias de tratamiento facilitadas por el sistema 101, los datos y aplicaciones tratados por este sistema son empaquetados en celdas de software 102 uniformemente formateadas identificadas únicamente. Cada celda de software 102 contiene, o puede contener tanto aplicaciones como datos. Cada celda de software también contiene una ID para identificar globalmente la celda a través de toda la red 104 y el sistema 101. Esta uniformidad de estructura para las celdas de software, y la identificación única de las celdas de software en toda la red, facilita el tratamiento de aplicaciones y datos sobre cualquier ordenador o dispositivo informático de la red. Por ejemplo, un cliente 106 puede formular una celda de software 102 pero, debido a la capacidades de tratamiento limitadas del cliente 106, transmitir esta celda de software a un servidor 108 para su tratamiento. Las celdas de software pueden migrar, por ello, a través de toda la red 104 para su tratamiento sobre la base de disponibilidad de recursos de tratamiento en la red.
La estructura homogénea de procesadores y celdas de software del sistema 101 también evita muchos problemas de las redes heterogéneas actuales. Por ejemplo, modelos de programación ineficientes que buscan permitir el tratamiento de aplicaciones sobre cualquier ISA usando cualquier conjunto de instrucciones, por ejemplo, máquinas virtuales tales como la máquina virtual Java, son evitados. El sistema 101, por ello, puede poner en práctica el tratamiento de banda ancha mucho más efectiva y eficientemente que las redes de hoy en día.
El módulo de tratamiento básico para todos los miembros de red 104 es el elemento de procesador (PE). La fig. 2 ilustra la estructura de un PE. Como se ha mostrado en esta figura, PE 201 comprende una unidad de tratamiento (PU) 203, un controlador de acceso directo de memoria (DMAC) 205 y una pluralidad de unidades de tratamiento unidas (APU), particularmente, APU 207, APU 209, APU 211, APU 213, APU 215, APU 217, APU 219 y APU 221. Un bus o línea de transmisión local 223 de PE transmite datos y aplicaciones entre los APU, DMAC 205 y PU 203. El bus local 223 de PE puede tener, por ejemplo, una arquitectura tradicional o ser implantado como una red conmutada por paquetes. La implantación como una red conmutada por paquetes, al tiempo que requiere más hardware, aumenta el ancho de banda disponible.
El PE 201 puede ser construido usando distintos métodos para poner en práctica la lógica digital. El PE 201 es construido preferiblemente, sin embargo, como un único circuito integrado que emplea un semiconductor de óxido metálico complementario (CMOS) sobre un substrato de silicio. Materiales alternativos para substratos incluyen arseniuro de galio, arseniuro de galio aluminio y otros compuestos denominados III-B que emplean una amplia variedad de dopantes. El PE 201 también podría ser puesto en práctica usando un material superconductor, por ejemplo, lógica rápida de quantum de flujo único (RSFQ).
El PE 201 está estrechamente asociado con una memoria dinámica de acceso aleatorio (DRAM) 225 a través de una conexión 227 de memoria de ancho de banda elevado. La DRAM 225 funciona como la memoria principal para el PE 201. Aunque una DRAM 225 es preferiblemente una memoria dinámica de acceso aleatorio, la DRAM 225 podría ser puesta en práctica usando otros medios, por ejemplo, como una memoria estática de acceso aleatorio (SRAM), una memoria magnética de acceso aleatorio (MRAM), una memoria óptica o una memoria holográfica. El DMAC 205 facilita la transferencia de datos entre la DRAM 225 y las APU y PU de PE 201. Como se ha descrito adicionalmente más adelante, el DMAC 205 designa para cada APU un área exclusiva en la DRAM 225 en la que sólo la APU puede escribir datos y desde la que sólo la APU puede leer datos. Esta área exclusiva es designada un entorno restringido.
La PU 203 puede ser, por ejemplo, un procesador estándar capaz de tratamiento autónomo de datos y aplicaciones. En funcionamiento, la PU 203 programa y orquesta el tratamiento de datos y aplicaciones por las APU. Las APU son preferiblemente procesadores de múltiples datos de una única instrucción (SIMD). Bajo el control de la PU 203, las APU realizan el tratamiento de estos datos y aplicaciones de una manera paralela e independiente. El DMAC 205 controla los accesos por la PU 203 y las APU a los datos y aplicaciones almacenados en la DRAM 225 compartida. Aunque el PE 201 incluye preferiblemente ocho APU, un mayor o menor número de APU puede ser empleado en un PE dependiendo de la potencia de tratamiento requerida. También, un número de PE, tal como el PE 201, puede estar unido o empaquetado junto para proporcionar la potencia de tratamiento mejorada.
Por ejemplo, como se ha mostrado en la fig. 3, cuatro PE pueden ser empaquetados o unidos juntos, por ejemplo, dentro de uno o más paquetes de chip, para formar un único procesador para un miembro de red 104. Esta configuración es designada un motor de banda ancha (BE). Como se ha mostrado en la fig. 3, el BE 301 contiene cuatro PE, particularmente, PE 303, PE 305, PE 307 y PE 309. Las comunicaciones entre estos PE están sobre el bus 311 del BE. La conexión 313 de memoria amplia de banda ancha proporciona comunicación entre la DRAM compartida 315 y estos PE. En lugar del bus 311 del BE, las comunicaciones entre los PE del BE 301 pueden ocurrir a través de la DRAM 315 y de esta conexión de memoria.
La interfaz de entrada/salida (I/O) 317 y el bus externo 319 proporcionan comunicaciones entre el motor de banda ancha 301 y los otros miembros de red 104. Cada PE del BE 301 realiza el tratamiento de datos y aplicaciones de una manera paralela e independiente análoga al tratamiento paralelo e independiente de aplicaciones y datos realizado por las APU de un PE.
La fig. 4 ilustra la estructura de una APU. La APU 402 incluye una memoria local 406, registros 410, cuatro unidades 412 de coma flotante y cuatro unidades 414 de número entero. De nuevo, sin embargo, dependiendo de la potencia de tratamiento requerida, puede emplearse un número mayor o menor de unidades 412 de coma flotante y unidades 414 de número entero. En una realización preferida, la memoria local 406 contiene 128 kilobytes de almacenamiento, y la capacidad de registros 410 es 128 x 128 bits. Las unidades 412 de coma flotante funcionan preferiblemente a una velocidad de 32 billones de operaciones de coma flotante por segundo (32 GFLOPS), y las unidades 414 de número entero funcionan preferiblemente a una velocidad de 32 billones de operaciones por segundo (32 GOPS).
La memoria local 406 no es una memoria caché. La memoria local 406 es construida preferiblemente como una SRAM. El soporte de coherencia caché para una APU es innecesario. Una APU puede requerir el soporte de coherencia caché para accesos de memoria directos iniciados por la PU. El soporte de coherencia caché no es requerido, sin embargo, para accesos de memoria directos iniciados por una APU o para accesos desde y hacia dispositivos externos.
\newpage
La APU 402 incluye además el bus 404 para transmitir aplicaciones y datos hacia y desde la APU. En una realización preferida, este bus es de 1.024 bits de ancho. La APU 402 incluye además buses internos 408, 420 y 418. En una realización preferida, el bus 408 tiene una anchura de 256 bits y proporciona comunicaciones entre la memoria local 406 y los registros 410. Los buses 420 y 418 proporcionan comunicaciones entre, respectivamente, registros 410 y unidades 412 de coma flotante, y registros 410 y unidades 414 de número entero. En una realización preferida, el ancho de los buses 418 y 420 desde las unidades de cómo flotante o de número entero es de 384 bits, y el ancho de los buses 418 y 420 desde las unidades de número entero o de coma flotante hasta los registros 410 es de 128 bits. La anchura mayor de estos buses desde los registros 410 hasta las unidades de número entero o de coma flotante que desde estas unidades a registros 410 acomoda el mayor flujo de datos desde los registros 410 durante el tratamiento. Un máximo de tres palabras son necesarias para cada cálculo. El resultado de cada cálculo, sin embargo, normalmente es sólo una palabra.
Las figs. 5 a 10 ilustran además la estructura modular de los procesadores de los miembros de red 104. Por ejemplo, como se ha mostrado en la fig. 5, un procesador puede comprender un único PE 502. Como se ha descrito antes, este PE comprende típicamente una PU, un DMAC y ocho APU. Cada APU incluye un almacenamiento local (LS). Por otro lado, un procesador puede comprender la estructura del visualizador (VS) 505. Como se ha mostrado en la fig. 5, el VS 505 comprende la PU 512, el DMAC 514 y cuatro APU, particularmente, APU 516, APU 518, APU 520 y APU 522. El espacio entre el paquete de chip normalmente ocupado por las otras cuatro APU de un PE está ocupado en este caso por el motor de píxel 508, la imagen caché 510 y el controlador de tubo de rayos catódicos (CRTC) 504. Dependiendo de la velocidad de comunicaciones requerida para el PE 502 o el VS 505, el enlace óptico 506 también puede ser incluido en el paquete de chip.
Usando esta estructura modular, estandarizada, otras numerosas variaciones de procesadores pueden ser construidas fácil y eficientemente. Por ejemplo, el procesador mostrado en la fig. 6 comprende dos paquetes de chip, particularmente, un paquete de chip 602 que comprende un BE y un paquete de chip 604 que comprende cuatro VS. La entrada/salida (I/O) 606 proporciona una interfaz entre el BE del paquete de chip 602 y la red 104. El bus 608 proporciona comunicaciones entre el paquete de chip 602 y el paquete de chip 604. El procesador 610 de entrada salida (IOP) controla el flujo de datos dentro y fuera de la I/O 606. La I/O 606 puede ser fabricada como un circuito integrado específico de aplicación (ASIC). La salida desde los VS es una señal de video 612.
La fig. 7 ilustra un paquete de chip para un BE 702 con dos interfaces ópticas 704 y 706 para proporcionar comunicaciones de velocidad ultra elevada a los otros miembros de red 104 (u otros paquetes de chip localmente conectados). El BE 702 puede funcionar como, por ejemplo, un servidor en red 104.
El paquete de chip de la fig. 8 comprende dos PE 802 y 804 y dos VS 806 y 808. Una I/O 810 proporciona una interfaz entre el paquete de chip y la red 104. La salida del paquete de chip es una señal de video. Esta configuración puede funcionar como, por ejemplo, una estación de trabajo gráfica.
La fig. 9 ilustra aun otra configuración. Esta configuración contiene una mitad de la potencia de tratamiento de la configuración ilustrada en la fig. 8. En lugar de dos PE, hay previsto un PE 902, y en lugar de dos VS, hay previsto un VS 904. La I/O 906 tiene una mitad del ancho de banda de la I/O ilustrada en la fig. 8. Tal procesador también puede funcionar, sin embargo, como una estación de trabajo gráfica.
Se ha mostrado una configuración final en la fig. 10. Este procesador consiste de sólo un único VS 1002 y una I/O 1004. Esta configuración puede funcionar como, por ejemplo, una PDA.
La fig. 11A ilustra la integración de interfaces ópticas en un paquete de chip de un procesador de red 104. Estas interfaces ópticas convierten señales ópticas a señales eléctricas y señales eléctricas a señales ópticas y pueden ser construidos a partir de una variedad de materiales que incluyen, por ejemplo, arseniuro de galio, arseniuro de aluminio galio, germanio y otros elementos o compuestos. Como se ha mostrado en esta figura, las interfaces ópticas 1104 y 1106 son fabricadas sobre el paquete de chip de BE 1102. El bus 1108 del BE proporciona comunicación entre los PE del BE 1102, particularmente, PE 1110, PE 1112, PE 1114, PE 1116, y estas interfaces ópticas. La interfaz óptica 1104 incluye dos puertos, particularmente el puerto 1118 y el puerto 1120, y la interfaz óptica 1106 también incluye dos puertos, principalmente, el puerto 1122 y el puerto 1124. Los puertos 1118, 1120, 1122 y 1124 están conectados, respectivamente, a guías de onda óptica 1126, 1128, 1130 y 1132. Las señales ópticas son transmitidas hacia y desde el BE 1102 a través de estas guías de onda óptica a través de los puertos de interfaces ópticas 1104 y 1106.
Una pluralidad de BE pueden estar conectados juntos en distintas configuraciones usando tales guías de onda óptica y los cuatro puertos ópticos de cada BE. Por ejemplo, como se ha mostrado en la fig. 11B, dos o más BE, por ejemplo, BE 1152, BE 1154 y BE 1156, pueden estar conectados en serie a través de tales puertos ópticos. En este ejemplo, la interfaz óptica 1166 del BE 1152 está conectada a través de sus puertos ópticos a los puertos ópticos de la interfaz óptica 1160 del BE 1154. De modo similar, los puertos ópticos de la interfaz óptica 1162 en el BE 1154 están conectados a los puertos ópticos de la interfaz óptica 1164 del BE 1156.
Se ha ilustrado una configuración de matriz en la fig. 11C. En esta configuración, la interfaz óptica de cada BE está conectada a otros dos BE. Como se ha mostrado en esta figura, uno de los puertos ópticos de interfaz óptica 1188 de BE 1172 está conectado a un puerto óptico de la interfaz óptica 1182 de BE 1176. El otro puerto óptico de la interfaz óptica 1188 está conectado a un puerto óptico de la interfaz óptica 1184 de BE 1178. De manera similar, un puerto óptico de la interfaz óptica 1190 de BE 1174 está conectado a otro puerto óptico de la interfaz óptica 1184 de BE 1178. El otro puerto óptico de la interfaz óptica 1190 está conectado a un puerto óptico de la interfaz óptica 1186 de BE 1180. Esta configuración de matriz puede ser extendida de forma similar a otros BE.
Usando o bien una configuración en serie o bien una configuración de matriz, puede construirse un procesador para red 104 de cualquier tamaño y potencia deseados. Desde luego, pueden añadirse puertos adicionales a las interfaces ópticas de los BE, o a procesadores que tienen un mayor o menor número de PE que un BE, para formar otras configuraciones.
La fig. 12A ilustra el sistema de control y la estructura para la DRAM de un BE. Un sistema de control y estructura similares son empleados en procesadores que tienen otros tamaños y que contienen más o menos PE. Como se ha mostrado en esta figura, un interruptor de travesaño conecta cada DMAC 1210 de los cuatro PE que comprende el BE 1201 a ocho controles de banco 1206. Cada control de banco 1206 controla ocho bancos 1208 (sólo se han mostrado cuatro en la figura) de DRAM 1204. La DRAM 1204, por ello, comprende un total de sesenta y cuatro bancos. En una realización preferida, la DRAM 1204 tiene una capacidad de 64 megabytes, y cada banco tiene una capacidad de 1 megabyte. La menor unidad accesible dentro de cada banco, en esta realización preferida, es un bloque de 1024 bits.
El BE 1201 también incluye la unidad de conmutador 1212. La unidad de conmutador 1212 permite a otras APU en los BE estar estrechamente acopladas al BE 1201 para acceder a la DRAM 1204. Un segundo BE, por ello, puede estar estrechamente acoplado a un primer BE, y cada APU de cada BE puede acceder dos veces el número de posiciones de memoria normalmente accesibles a una APU. La lectura o escritura directa de datos desde o a la DRAM de un primer BE desde o a la DRAM de un segundo BE puede ocurrir a través de una unidad de conmutador tal como la unidad de conmutador 1212.
Por ejemplo, como se ha mostrado en la fig. 12B, para realizar tal escritura, la APU de un primer BE, por ejemplo, la APU 1220 del BE 1222, emite una orden de escritura a una posición de memoria de una DRAM de un segundo BE, por ejemplo, la DRAM 1228 del BE 1226 (en vez de, como en el caso normal, a la DRAM 1224 del BE 1222). El DMAC 1230 del BE 1222 envía la orden de escritura a través de un conmutador de cruz 1221 al control de banco 1234, y el control de banco 1234 transmite la orden a un puerto externo 1232 conectado al control de banco 1234. El DMAC 1238 del BE 1226 recibe la orden de escritura y transfiere esta orden a la unidad de conmutador 1240 del BE 1226. La unidad de conmutador 1240 identifica la dirección de la DRAM contenida en la orden de escritura y envía los datos para almacenarlos en esta dirección a través del control de banco 1242 del BE 1226 al banco 1244 de la DRAM 1228. La unidad de conmutador 1240, por ello, permite tanto a la DRAM 1224 como a la DRAM 1228 funcionar como un único espacio de memoria para las APU del BE 1222.
La fig. 13 muestra la configuración de sesenta y cuatro bancos de una DRAM. Estos bancos están dispuestos en ocho filas, particularmente, las filas 1302, 1304, 1306, 1308, 1310, 1312, 1314 y 1316 y ocho columnas, particularmente, las columnas 1320, 1322, 1324, 1326, 1328, 1330, 1332 y 1334. Cada fila es controlada por un controlador de banco. Cada controlador de banco, por ello, controla ocho megabytes de memoria.
Las figs. 14A y 14B ilustran diferentes configuraciones para almacenar y acceder a la menor unidad de memoria accesible de una DRAM, por ejemplo, un bloque de 1024 bits. En la fig. 14A, el DMAC 1402 almacena en un único banco 1404 ocho bloques 1406 de 1024 bits. En la fig. 14B, por otro lado, mientras el DMAC 1412 lee y escribe bloques de datos que contienen 1024 bits, estos bloques son entrelazados entre dos bancos, particularmente, el banco 1414 y el banco 1416. Cada uno de estos bancos, por ello, contiene dieciséis bloques de datos, y cada bloque de datos contiene 512 bits. Este entrelazado puede facilitar un acceso más rápido de la DRAM y es útil en el tratamiento de algunas aplicaciones.
La fig. 15 ilustra la arquitectura para un DMAC 1506 dentro de un PE. Como se ha ilustrado en esta figura, el hardware estructural que comprende el DMAC 1506 es distribuido totalmente en el PE de tal modo que cada APU 1502 tiene un acceso directo a un nudo estructural 1504 del DMAC 1506. Cada nudo ejecuta la lógica apropiada para accesos de memoria por la APU a la que el nodo tiene acceso directo.
La fig. 16 muestra una realización alternativa del DMAC, particularmente, una arquitectura no distribuida. En este caso, el hardware estructural del DMAC 1606 está centralizado. La APU 1602 y la PU 1604 comunican con el DMAC 1606 a través del bus local 1607 del PE. El DMAC 1606 está conectado a través de un conmutador de cruz a un bus 1608. El bus 1608 está conectado a la DRAM 1610.
Como se ha descrito antes, todas las múltiples APU de un PE pueden acceder independientemente a datos en la DRAM compartida. Como resultado, una primera APU podría estar operando sobre datos particulares en su almacenamiento local en un instante el cual una segunda APU solicita estos datos. Si los datos han sido proporcionados a la segunda APU en ese instante desde la DRAM compartida, los datos podrían ser inválidos debido al tratamiento en curso de la primera APU que podría cambiar el valor de los datos. Si el segundo procesador ha recibido los datos desde la DRAM compartida en ese instante, por ello, el segundo procesador podría generar un resultado erróneo. Por ejemplo, los datos podrían ser un valor específico para una variable global. Si el primer procesador ha cambiado ese valor durante su tratamiento, el segundo procesador recibiría un valor no actualizado. Un esquema es necesario, por ello, para sincronizar la lectura y escritura de datos de las APU desde posiciones de memoria dentro de la DRAM compartida y a las mismas. Este esquema debe impedir la lectura de datos desde una posición de memoria después de que otra APU al mismo tiempo está operando en su almacenamiento local y, por ello, que no son actuales, y la escritura de datos a una posición de memoria que almacena datos actuales.
Para resolver estos problemas, para cada posición de memoria accesible de la DRAM, un segmento adicional de memoria está asignado en la DRAM para almacenar la información de estado relativa a los datos almacenados en la posición de memoria. Esta información de estado incluye un bit de lleno/vacío (F/E), la identificación de una APU (ID de la APU) que solicita datos desde la posición de memoria y la dirección del almacenamiento local de las APU (dirección del LS) al que los datos solicitados deberían ser leídos. Una posición de memoria accesible de la DRAM puede ser de cualquier tamaño. En una realización preferida, el tamaño es de 1024 bits.
El ajuste del bit de F/E a 1 indica que los datos almacenados en la posición de memoria asociada son actuales. El ajuste del bit de F/E a 0, por otro lado, indica que los datos almacenados en la posición de memoria asociada no son actuales. Si una APU solicita los datos cuando este bit está ajustado a 0, se le impide a la APU leer inmediatamente los datos. En este caso, una ID de la APU que identifica la APU que solicita los datos, y una dirección del LS que identifica la posición de memoria dentro del almacenamiento local de esta APU a la que los datos han de ser leídos cuando los datos resulten actuales, son introducidos en el segmento de memoria adicional.
Un segmento de memoria adicional también está asignado para cada posición de memoria dentro del almacenamiento local de las APU. Este segmento de memoria adicional almacena un bit, designado el "bit ocupado". El bit ocupado es usado para reservar la posición de memoria del LS asociada para el almacenamiento de datos específicos que han de ser recuperados desde la DRAM. Si el bit ocupado es ajustado a 1 para una posición de memoria particular en el almacenamiento local, la APU puede usar esta posición de memoria solo para la escritura de estos datos específicos. Por otro lado, si el bit ocupado es ajustado a 0 para una posición de memoria particular en el almacenamiento local, la APU puede usar esta memoria para la escritura de cualquier dato.
Ejemplos de la manera en la que el bit de F/E, la ID de la APU, la dirección del LS y el bit ocupado son usados para sincronizar la lectura y escritura de datos desde y a la DRAM compartida de un PE están ilustrados en las figs. 17A-17O.
Como se ha mostrado en la fig. 17A, uno o más PE, por ejemplo el PE 1720 interactúa con la DRAM 1702. El PE 1720 incluye la APU 1722 y la APU 1740. La APU 1722 incluye la lógica de control 1724, y la APU 1740 incluye la lógica de control 1742. La APU 1722 incluye también el almacenamiento local 1726. Este almacenamiento local incluye una pluralidad de posiciones de memoria accesibles 1728. La APU 1740 incluye el almacenamiento local 1744, y este almacenamiento local incluye también una pluralidad de posiciones de memoria accesibles 1746. Todas estas posiciones de memoria accesibles son preferiblemente de 1024 bits de tamaño.
Un segmento adicional de memoria está asociado con cada posición de memoria accesible de LS. Por ejemplo, los segmentos de memoria 1729 y 1734 están asociados respectivamente con posiciones de memoria local 1731 y 1732, y el segmento de memoria 1752 está asociado con la posición de memorial local 1750. Un "bit de ocupación" como se ha descrito antes, está almacenado en cada uno de estos segmentos de memoria adicionales. La posición de memoria local 1732 está mostrada con varias X para indicar que esta posición contiene datos.
La DRAM 1702 contiene una pluralidad de posiciones de memoria accesibles 1704, incluyendo posiciones de memoria 1706 y 1708. Estas posiciones de memoria son preferiblemente también de 1024 bits de tamaño. Un segmento adicional de memoria está también asociado con cada una de estas posiciones de memoria. Por ejemplo, el segmento de memoria adicional 1760 está asociado con la posición de memoria 1706, y el segmento de memoria adicional 1762 está asociado con la posición de memoria 1708. La información de estado relacionada con los datos almacenados en cada posición de memoria es almacenada en el segmento de memoria asociado con la posición de memoria. Esta información de estado incluye, como se ha descrito antes, el bit de F/E, la ID de la APU y la dirección de LS. Por ejemplo, para la posición de memoria 1708, esa información de estado incluye el bit de F/E 1712, la ID de la APU 1714 y la dirección de LS 216.
Usando la información de estado y el bit de ocupación, la lectura y escritura sincronizadas de datos desde la DRAM compartida y a la misma entre las APU de un PE, o un grupo de PE, puede ser conseguida.
La fig. 17B ilustra la iniciación de la escritura sincronizada de datos desde la posición de memoria de LS 1732 de APU 1722 a la posición de memoria 1708 de la DRAM 1702. El control 1724 de la APU 1722 inicia la escritura sincronizada de estos datos. Como la posición de memoria 1708 está vacía, el bit de F/E 1712 es ajustado a 0. Como resultado, los datos en la posición de LS 1732 pueden ser escritos en la posición de memoria 1708. Si este bit fuera ajustado a 0 para indicar que la posición de memoria 1708 está llena y contiene datos actuales, válidos, por otro lado, el control 1722 recibiría un mensaje de error y se prohibiría escribir datos en esta posición de memoria.
El resultado de la escritura sincronizada satisfactoria de los datos en la posición de memoria 1708 está mostrado en la fig. 17C. Los datos escritos son almacenados en la posición de memoria 1708 y el bit de F/E es ajustado a 1. Este ajuste indica que la posición de memoria 1708 está llena y que los datos en esta posición de memoria son actuales y válidos.
\newpage
La fig. 17D ilustra la iniciación de la lectura sincronizada de datos desde la posición de memoria 1708 de la DRAM 1702 a la posición de memoria de LS 1750 del almacenamiento local 1744. Para iniciar esta lectura, el bit de ocupación en el segmento de memoria 1752 de la posición de memoria de LS 1750 es ajustado a 1 para reservar esta posición de memoria para estos datos. El ajuste de este bit de ocupación a 1 impide que la APU 1740 almacene otros datos en esta posición de memoria.
Como se ha mostrado en la fig. 17E, la lógica de control 1742 siguiente emite una orden de lectura sincronizada para la posición de memoria 1708 de la DRAM 1702. Como el bit de F/E 1712 asociado con esta posición de memoria es ajustado a 1, los datos almacenados en la posición de memoria 1708 son considerados actuales y válidos. Como resultado, en preparación para transferir los datos desde la posición de memoria 1708 a la posición de memoria de LS 1750, el bit de F/E 1712 es ajustado a 0. Este ajuste está mostrado en la fig. 17F. El ajuste de este bit a 0 indica, que después de la lectura de estos datos, los datos en la posición de memoria 1708 serán inválidos.
Como se ha mostrado en la fig. 17G, los datos dentro de la posición de memoria 1708 siguiente son leídos desde la posición de memoria 1708 a la posición de memoria de LS 1750. La fig. 17H muestra el estado final. Una copia de los datos en la posición de memoria 1708 es almacenada en la posición de memoria de LS 1750. El bit de F/E 1712 es ajustado a 0 para indicar que los datos en la posición de memoria 1708 son inválidos. Esta invalidez es el resultado de alteraciones de estos datos que han de ser hechas por la APU 1740. El bit de ocupación en el segmento de memoria 1752 es también ajustado a 0. Este ajuste indica que la posición de memoria de LS 1750 está ahora disponible a la APU 1740 para cualquier propósito, es decir, esta posición de la memoria de LS ya no está en un estado reservado esperando la recepción de datos específicos. La posición de la memoria de LS 1750, por ello, puede ahora ser accedida por la APU 1740 para cualquier propósito.
Las figs. 17I-17O ilustran la lectura sincronizada de datos desde una posición de memoria de la DRAM 1702, por ejemplo posición de memoria 1708, a una posición de memoria de LS de un almacenamiento local de la APU, por ejemplo, posición de memoria de LS 1752 de almacenamiento local 1744, cuando el bit F/E para la posición de memoria de DRAM 1702 es ajustado a 0 para indicar que los datos en esta posición de memorias no son actuales o válidos. Como se ha mostrado en la fig. 17I, para iniciar esta transferencia, el día de ocupación en el segmento de memoria 1752 de la posición de memoria de LS 1750 es ajustado a 1 para reservar esta posición de memoria de LS para esta transferencia de datos. Como se ha mostrado en la fig. 17J, la lógica de control 1742 siguiente emite una orden de lectura sincronizada para posición de memoria 1708 de la DRAM 1702. Como el bit F/E asociado con esta posición de memoria, el bit de F/E 1712, es ajustado a 0, los datos almacenados en la posición de memoria 1708 son inválidos. Como resultado, una señal es transmitida a la lógica de control 1742 para bloquear la lectura inmediata de datos desde esta posición de memoria.
Como se ha mostrado en la fig. 17K, la ID de la APU 1714 y la dirección de LS 1716 para esta orden de lectura siguiente están escritas en el segmento de memoria 1782. En este caso, la ID de la APU para la APU 1740 y la posición de memoria de LS para la posición de memoria de LS 1750 están escritas en el segmento de memoria 1762. Cuando los datos situados dentro de la posición de memoria 1708 resultan actuales, por ello, esta ID de la APU y posición de memoria de LS son usadas para determinar la posición a la que los datos actuales han de ser transmitidos.
Los datos en la posición de memoria 1708 resultan válidos y actuales cuando una APU escribe datos en esta posición de memoria. La escritura sincronizada de datos en la posición en memoria 1708 desde, por ejemplo, la posición de memoria 1732 de la APU 1722 está ilustrada en la fig. 17L. Esta escritura sincronizada de estos datos es permitida debido a que el bit de F/E 1712 para esta posición de memoria es ajustado a 0.
Como se ha mostrado en la fig. 17M, después de esta escritura, los datos en la posición de memoria 1708 resultan actuales y válidos. La ID de la APU 1714 y la dirección de LS 1716 procedente del segmento de memoria 1762, por ello, son inmediatamente leídas desde el segmento de memoria 1782, y esta información es a continuación borrada de este segmento. El bit de F/E 1712 es también ajustado a 0 en anticipación de la lectura inmediata de los datos en la posición de memoria 1708. Como se ha mostrado en la fig. 17N, después de leer la ID de la APU 1714 y la dirección de LS 1716, esta información es usada inmediatamente para leer los datos válidos en la posición de memoria 1708 a la posición de memoria de LS 1750 de la APU 1740. El estado final está mostrado en la fig. 17O. Esta figura muestra los datos válidos procedentes de la posición de memoria 1708 copiados a la posición de memoria 1750, el bit de ocupación en el segmento de memoria 1752 ajustado a 0 y el bit de F/E 1712 en el segmento de memoria 1762 ajustado a 0. El ajuste de este bit de ocupación a 0 permite que la posición de memoria de LS 1750 sea ahora accedida por la APU 1740 para cualquier propósito. El ajuste de este bit de F/E a 0 indica que los datos en la posición de memoria 1708 ya no son actuales ni válidos.
La fig. 18 resume las operaciones descritas anteriormente y los distintos estados de una posición de memoria de la DRAM basado en los estados del bit de F/E, la ID de la APU y la dirección de LS almacenados en el segmento de memoria correspondiente a la posición de memoria. La posición de memoria puede tener tres estados. Estos tres estados son un estado vacío 1880 en el que el bit de F/E es ajustado a 0 y no se proporciona información para la ID de la APU o la dirección de LS, un estado lleno 1882 en el que el bit de F/E es ajustado a 1 y no se proporciona información para la ID de la APU o la dirección de LS y un estado de bloqueo 1884 en el que el bit de F/E es ajustado a 0 y se proporciona información para la ID de la APU y la dirección de LS.
\newpage
Como se ha mostrado en esta figura, en el estado vacío 1880, se permite una operación de escritura sincronizada y da como resultado una transición al estado lleno 1882. Una operación de lectura sincronizada, sin embargo, da como resultado una transición al estado de bloqueo 1884 debido a que los datos en la posición de memoria, cuando la posición de memoria está en el estado vacío, no son actuales.
En el estado lleno 1882, se permite una operación de lectura sincronizada y da como resultado una transición al estado vacío 1880. Por otro lado, una operación de escritura sincronizada en el estado lleno 1882 es prohibida para impedir la sobrescritura de datos válidos. Si tal operación de escritura es intentada en este estado, no ocurren cambios de estado y se transmite un mensaje de error a la lógica de control correspondiente de las APU.
En el estado de bloqueo 1884, la escritura sincronizada de datos en la posición de memoria es permitida y da como resultado una transición al estado vacío 1880. Por otro lado, un operación de lectura sincronizada en el estado de bloqueo 1884 es prohibida para impedir un conflicto con la operación lecturas sincronizada anterior que da como resultado este estado. Si se intenta una operación de lectura sincronizada en estado de bloqueo 1884, no ocurren cambios de estado y se tramite un mensaje de error a la lógica de control correspondiente de la APU.
El esquema descrito anteriormente para la lectura y escritura sincronizadas de datos desde y a la DRAM compartida también puede ser usado también para eliminar los recursos informáticos normalmente dedicados por un procesador para leer datos desde dispositivos externos y escribir datos en ellos. Esta función de entrada/salida (I/O) podría ser realizada por una PU. Sin embargo, usando una modificación de este esquema de sincronización, una APU que ejecuta un programa apropiado puede realizar esta función. Por ejemplo, usando este esquema, una PU que recibe una solicitud de interrupción para la transmisión de datos desde una interfaz de I/O iniciada por un dispositivo externo puede delegar la manipulación de esta solicitud a esta APU. La APU emite entonces una orden de escritura sincronizada a la interfaz de I/O. Esta interfaz a su vez señala al dispositivo externo que los datos pueden ser escritos ahora en la DRAM. La APU siguiente emite una orden de lectura sincronizada a la DRAM para ajustar el espacio de memoria importante de la DRAM en un estado de bloqueo. La APU también ajusta a 1 los bits de ocupación para las posiciones de memoria del almacenamiento local de la APU necesarias para recibir los datos. En el estado de bloqueo, los segmentos de memoria adicional asociados con el espacio de memoria importante de la DRAM contienen la ID de la APU y la dirección de las posiciones de memoria importantes del almacenamiento local de la APU. El dispositivo externo siguiente emite una orden de escritura sincronizada para escribir los datos directamente al espacio de memoria importante de la DRAM. Como este espacio de memoria está en el estado de bloqueo, los datos son inmediatamente leídos de este espacio en las posiciones de memoria del almacenamiento local de la APU identificados en los segmentos de memoria adicionales. Los bits de ocupación para estas posiciones de memorias son entonces ajustados a 0. Cuando el dispositivo externo completa la escritura de los datos, la APU emite una señal a la PU de que la transmisión está completada.
Usando este esquema, por ello, las transferencias de datos desde dispositivos externos pueden ser tratadas con una carga informática mínima sobre la PU. La APU que ha delegado esta función, sin embargo, debería ser capaz de emitir una solicitud de interrupción a la PU, y el dispositivo externo debería tener acceso directo a la DRAM.
La DRAM de cada PE incluye una pluralidad de entornos restringidos. Un entorno restringido define un área de la DRAM compartida más allá de la cual una APU particular, o un conjunto de APU, no puede leer o describir datos. Estos entornos restringidos proporcionan seguridad contra la corrupción de datos que son tratados por una APU por datos que son tratados por otra APU. Estos entornos restringidos también permiten la descarga de celdas de software desde la red 104 a un entorno restringido particular sin la posibilidad de que la celda de software corrompa datos en todas la DRAM. En el presente invento, los entornos restringidos son implantados en el hardware de las DRAM y los DMAC. Implantando las entornos restringidos en este hardware en vez de en el software, se obtienen ventajas en la velocidad y en la seguridad.
La PU de un PE controla los entornos restringidos asignados a las APU. Como la PU ejecuta solo programas de confianza, tales como un sistema operativo, este esquema pone en peligro la seguridad. De acuerdo con este esquema, la PU construye y mantiene una tabla de control de claves. Esta tabla de control de claves está ilustrada en la fig. 19. Como se ha mostrado en esta figura, cada entrada en la tabla 1902 de control de claves contiene una identificación (ID) 1904 para una APU, una clave 1906 de APU para esa APU y una máscara de claves 1908. El uso de esta máscara de claves es explicado a continuación. La tabla 1902 de control de claves es almacenada preferiblemente en una memoria relativamente rápida, tal como una memoria estática de acceso aleatorio (SRAM), y es asociada con el DMAC. Las entradas en la tabla 1902 de control de claves son controladas por la PU. Cuando una APU solicita la escritura de datos, o la lectura de datos desde, una posición de almacenamiento particular de la DRAM, el DMAC evalúa la clave 1906 de APU asignada a esa APU en la tabla 1902 de control de claves contra una clave de acceso de memoria asociada con esta posición de almacenamiento.
Como se ha mostrado en la fig. 20, un segmento 2010 de memoria dedicado es asignado a cada posición 2006 de almacenamiento accesible de una DRAM 2002. Una clave 2012 de acceso a la memoria para la posición de almacenamiento es almacenada en este segmento de memoria dedicado. Como se ha descrito antes, otro segmento 2008 de memoria dedicado adicional, también asociado con cada posición 2006 de almacenamiento accesible, almacena la información de sincronización para escribir datos en la posición de memoria, y leer datos desde ella.
En funcionamiento, una APU emite una orden de DMA al DMAC. Esta orden incluye la dirección de una posición 2006 de almacenamiento de la DRAM 2002. Antes de ejecutar esta orden, el DMAC busca la clave 1906 de la APU solicitante en la tabla 1902 de control de claves usando la ID 1904 de la APU. El DMAC compara entonces la clave 1906 de la APU de la APU solicitante a la clave 2012 de acceso a la memoria almacenada en el segmento 2010 de memoria dedicado asociado con la posición de almacenamiento de la DRAM a la que busca acceso la APU. Si las dos claves no coinciden, la orden de DMA no es ejecutada. Por otro lado, si las dos claves coinciden, la orden de DMA continúa y el acceso a la memoria solicitado es ejecutado.
Una realización alternativa está ilustrada en la fig. 21. En esta realización, la PU también mantiene una tabla 2102 de control de acceso a la memoria. La tabla 2102 de control de acceso a la memoria contiene una entrada para cada entorno restringido dentro de la DRAM. En el ejemplo particular de la fig. 21, la DRAM contiene 64 entornos restringidos. Cada entrada en la tabla 2102 de control de acceso a la memoria contiene una identificación (ID) 2104 para un entorno restringido, una dirección 2106 de memoria de base, un tamaño 2108 de entorno restringido, una clave 2110 de acceso a la memoria y una máscara 2110 de claves de acceso. La dirección 2106 de memoria de base proporciona la dirección a la DRAM que inicia un entorno restringido de memoria particular. El tamaño 2108 del entorno restringido proporciona el tamaño del entorno restringido y, por ello, el punto final del entorno restringido particular.
La fig. 22 es un diagrama de flujo de las operaciones para ejecutar una orden de DMA usando la tabla 1902 de control de claves y la tabla 2102 de control de acceso a la memoria. En la operación 2202, una APU emite una orden de DMA al DMAC para el acceso a una posición o posiciones de memoria particular dentro de un entorno restringido. La orden incluye una ID 2104 de entorno restringido que identifica el entorno restringido particular para el que es solicitado el acceso. En la operación 2204, el DMAC busca la clave 1906 de las APU solicitantes en la tabla 1902 de control de claves usando la ID 1904 de las APU. En la operación 2206, el DMAC usa la ID 2104 de entorno restringido en la orden para buscar en la tabla 2102 de control de acceso a la memoria la clave 2110 de acceso a la memoria asociada con el entorno restringido. En la operación 2208, el DMAC compara la clave 1906 de la APU asignada a la APU solicitante con la clave 2110 de acceso asociada con el entorno restringido. En la operación 2210, se hace una determinación de si coinciden las dos claves. Si las dos claves no coinciden, el proceso se mueve a la operación 2212 donde la orden de DMA no prosigue y un mensaje de error es enviado bien a la APU solicitante, o bien a la PU o a ambas. Por otro lado, si en la operación 2210 se ha encontrado que las dos claves coinciden, el proceso continúa a la operación 2214 donde el DMAC ejecuta la orden de DMA.
Las máscaras de claves para las claves de la APU y las claves de la memoria de acceso proporcionan una mayor flexibilidad a este sistema. Una máscara de claves para una clave convierte un bit enmascarado en un comodín o carácter de reemplazamiento. Por ejemplo, si la máscara de claves 1908 asociada con la clave de la APU 1906 tiene sus dos últimos bits ajustados a la "máscara" designada por ejemplo, ajustando estos bits en la máscara de claves 1908 a 1, la clave de la APU puede ser o bien un 1 o bien un 0 y aún coincidir con la clave de acceso a la memoria. Por ejemplo, la clave de la APU podría ser 1010. Esta clave de APU normalmente permite acceso a un entorno restringido que tiene una clave de acceso de 1010. Si la máscara de claves de la APU para esta clave de APU es ajustada a 0001, sin embargo, entonces esta clave de APU puede ser usada para ganar acceso a entornos restringidos que tienen una clave de acceso o bien de 1010 o bien de 1011. Similarmente, una clave de acceso 1010 con un ajuste de máscara a 0001 puede ser accedida por una APU con una clave de APU o bien de 1010 o bien de 1011. Como tanto la máscara de claves de la APU como la máscara de claves de la memoria pueden ser usadas simultáneamente, pueden ser establecidas numerosas variaciones de accesibilidad por las APU a los entornos restringidos.
El presente invento proporciona también un modelo de programación para los procesadores del sistema 101. Este modelo de programación emplea celdas 102 de software. Estas celdas pueden ser transmitidas a cualquier procesador en la red 104 para su tratamiento. Este nuevo modelo de programación también utiliza la arquitectura modular única del sistema 101 y los procesadores del sistema 101.
Las celdas de software son tratadas directamente por las APU a partir del almacenamiento local de las APU. Las APU no operan directamente sobre ningún dato ni programa en la DRAM. Datos y programas en la DRAM son leídos en el almacenamiento local de la APU antes de que la APU procese estos datos y programas. El almacenamiento local de las APU, por ello, incluye un contador, apilamiento de programas y otros elementos de software para ejecutar estos programas. La PU controlaba las APU emitiendo órdenes de acceso directo a la memoria (DMA) al DMAC.
La estructura de celda 102 de software está ilustrada en la fig. 23. Como se ha mostrado en esta figura, una celda de software, por ejemplo la celda 2302 de software contiene la sección 2304 y el cuerpo 2306 de información de encaminamiento. La información contenida en la sección 2304 de información de encaminamiento depende del protocolo de red 104. La sección 2304 de información de encaminamiento contiene el encabezamiento 2308, la ID de destino 2310, la ID de fuente 2312 y la ID de réplica 2314. La ID de destino incluye una dirección de red. Bajo el protocolo TCP/IP, por ejemplo, la dirección de red es una dirección de protocolo de Internet (IP). La ID de destino 2310 incluye además la identidad de la PE y la APU a la que la celda debía ser transmitida para su tratamiento. La ID de la fuente 2314 contiene una dirección de red e identifica la PE y la APU a partir de las cuales la celda se ha originado para permitir el destino de PE y APU para obtener información adicional relativa a la celda si fuera necesario. La ID de la réplica 2314 contiene una dirección de red e identifica el PE y la APU a las que deberían ser dirigidas solicitudes relativas a la celda, y el resultado del tratamiento de la celda.
El cuerpo 2306 de la celda contiene información independiente del protocolo de la red. La parte despiezada ordenadamente de la fig. 23 muestra los detalles del cuerpo 2306 de la celda. El encabezamiento 2320 del cuerpo 2306 de la celda identifica el comienzo del cuerpo de la celda. La interfaz 2322 de la celda contiene información necesaria para la utilización de la celda. Esta información incluye una ID global única 2324, las APU 2326 requeridas, el tamaño 2328 del entorno restringido y la ID previa de la celda 2330.
La ID única global 2324 identifica únicamente la celda 2302 de software a través de la red 104. La ID única global 2324 es generada sobre la base de la ID de la fuente 2312, por ejemplo la identificación única de un PE o una APU dentro de la ID de fuente 2312, y el tiempo y fecha de generación o transmisión de la celda 2302 de software. Las APU requeridas 2326 proporcionan el número mínimo de APU requeridas para ejecutar la celda. El tamaño 2328 del entorno restringido proporciona la cantidad de memoria protegida en la DRAM asociada a las APU requeridas necesaria para ejecutar la celda. La ID 2330 de la celda previa proporciona la identidad de una celda previa en un grupo de celdas que requieren ejecución secuencial, por ejemplo una corriente de datos.
La sección 2332 de puesta en práctica contiene la información del núcleo de la celda. Esta información incluye la lista de órdenes 2334 de DMA, los programas 2336 y los datos 2338. Los programas 2336 contienen los programas que han de ser ejecutados por unas APU (llamados "apulets"), por ejemplo los programas de las APU 2360 y 2362, y los datos 2338 contienen los datos que han de ser tratados con estos programas. La lista de órdenes 2334 de DMA contiene una serie de órdenes de DMA necesarias para iniciar los programas. Estas órdenes de DMA incluyen órdenes de DMA 2340, 2350, 2355 y 2358. La PU emite estas órdenes de DMA al DMAC.
Las órdenes de DMA 2340 incluyen la VID 2342. La VID 2342 es la ID virtual de una APU que se hace corresponder a una ID física cuando las órdenes de DMA son emitidas. La orden de DMA 2340 incluye también una orden de carga 2344 y dirección 2346. La orden de carga 2344 dirige la APU para leer información particular desde la DRAM al almacenamiento local. La dirección 2346 proporciona la dirección virtual en la DRAM que contiene esta información. La información puede ser, por ejemplo, programas a partir de la sección de programas 2336, datos a partir de la sección de datos 2338 u otros datos. Finalmente, la orden de DMA 2340 incluye la dirección 2348 de almacenamiento local. Esta dirección identifica la dirección en el almacenamiento local donde debería ser cargada la información. Las órdenes de DMA 2350 contienen información similar. Son también posibles otras órdenes de DMA.
La lista 2334 de órdenes de DMA también incluye una serie de órdenes de expulsión ("kick"), por ejemplo órdenes de expulsión 2355 y 2358. Las órdenes de expulsión son órdenes emitidas por una PU a una APU para iniciar el tratamiento de una celda. La orden de DMA 2355 incluye la ID virtual de APU 2352, la orden de expulsión 2354 y el contador de programa 2356. La ID virtual de APU 2352 identifica la APU que ha de ser expulsada, la orden de expulsión 2354 proporciona la orden de expulsión importante y el contador de programa 2356 proporciona la dirección para el contador de programa para ejecutar el programa. La orden de expulsión de DMA 2358 proporciona información similar para la misma APU u otra APU.
Como se ha observado, las PU tratan a las APU como procesadores independientes, no coprocesadores. Para controlar el tratamiento por las APU, por ello, la PU usa ordenes análogas a las llamadas de procedimiento remotas. Estas órdenes son designadas "Llamadas de Procedimiento Remotas de la APU" (ARPC). Una PU pone en práctica una ARPC emitiendo una sede de órdenes de DMA al DMAC. El DMAC carga el programa de APU y su imagen de apilamiento asociado al almacenamiento local de una APU. La PU emite entonces una expulsión inicial a la APU para ejecutar el Programa de APU.
La fig. 24 ilustra las operaciones de un ARPC para ejecutar un "apulet". Las operaciones realizadas por la PU al iniciar el tratamiento del "apulet" por una APU designada están mostradas en la primera parte 2402 de la fig. 24, y las operaciones realizadas por la APU designada en el tratamiento del "apulet" están mostradas en la segunda parte 2404 de la fig. 24.
En la operación 2410, la PU evalúa el "apulet" y a continuación designa una APU para tratar el "apulet". En la operación 2412, la PU asigna espacio en la DRAM para ejecutar el "apulet" emitiendo una orden de DMA al DMAC para ajustar las claves de acceso a la memoria para el entorno restringido o los entornos restringidos necesarios. En la operación 2414, la PU permite una solicitud de interrupción para la APU designada para señalar la terminación del "apulet". En la operación 2418, la PU emite una orden de DMA al DMAC para cargar el "apulet" desde la DRAM al almacenamiento local de la APU. En la operación 2420, la orden de DMA es ejecutada, y el "apulet" es leído desde la DRAM al almacenamiento local de las APU. En la operación 2422, la PU emite una orden de DMA a la DMAC para cargar el imagen de apilamiento asociado con el "apulet" desde la DRAM al almacenamiento local de las APU. En la operación 2423, la orden de DMA es ejecutada y el imagen de apilamiento es leído desde la DRAM al almacenamiento local de las APU. En la operación 2424, la PU emite una orden de DMA para el DMAC para asignar una clave a la APU para permitir que la APU lea y escriba datos desde y al entorno restringido o entornos restringidos designados en la operación 2412. En la operación 2426, el DMAC actualiza la tabla de control de claves (KTAB) con la clave asignada a la APU. En la operación 2428, la PU emite una orden de "expulsión" de la DAM a la APU para iniciar el tratamiento del programa. Otras órdenes de DMA pueden ser emitidas por la unidad en la ejecución de un ARPC particular dependiendo del "apulet" particular.
Como se ha indicado anteriormente, la segunda parte 2404 de la fig. 24 ilustra las operaciones realizadas por la APU al ejecutar el "apulet". En la operación 2430, la APU comienza a ejecutar el "apulet" en respuesta a la orden de expulsión emitida en la operación 2428. En la operación 2432, la APU, en la dirección del "apulet", evalúa el imagen de apilamiento asociado al "apulet". En la operación 2434, la APU emite múltiples órdenes DMA al DMAC para cargar datos asignados cuando sea necesario por el imagen de apilamiento desde la DRAM al almacenamiento local de las APU. En la operación 2436, estas órdenes de DMA son ejecutadas, y los datos son leídos desde la DRAM al almacenamiento local de las APU. En la operación 2438, la APU ejecuta el "apulet" y genera un resultado. En la operación 2440, la APU emite una orden de DMA al DMAC para almacenar el resultado en la DRAM. En la operación 2442, la orden de DMA es ejecutada y el resultado del "apulet" es escrito desde el almacenamiento local de las APU a la DRAM. En la operación 2444, la APU emite una solicitud de interrupción a la PU para señalar que el ARPC ha sido completado.
La capacidad de las APU para realizar tareas independientemente bajo la dirección de una PU permite que una PU dedique un grupo de APU, y los recursos de memoria asociados con un grupo de APU, para realizar tareas extendidas. Por ejemplo, una PU puede dedicar una o más APU, y un grupo de entornos restringidos de memoria asociados con estas una o más APU, para recibir datos transmitidos sobre la red 104 durante un período prolongado y para dirigir los datos recibidos durante este período a una o más APU distintas y sus entornos restringidos de memoria asociados para un tratamiento adicional. Esta capacidad es particularmente ventajosa para tratar una corriente de datos transmitidos sobre la red 104, por ejemplo una corriente de MPEG o una corriente de datos de audio o de video ATRAC. Una PU puede dedicar una o más APU y sus entornos restringidos de memoria asociados para recibir estos datos y una o más APU distintas y sus entornos restringidos de memoria asociados para descomprimir y tratar adicionalmente estos datos. En otras palabras, la PU puede establecer una relación de tubería dedicada entre un grupo de APU y sus entornos restringidos de memoria asociados para tratar tales datos.
A fin de que tal tratamiento sea realizado eficientemente, sin embargo, las APU de tubería dedicada y las entornos restringidos deberían permanecer dedicados a la tubería durante períodos en los que el tratamiento de "apulets" que comprenden la corriente de datos no ocurre. En otras palabras, las APU dedicadas y sus entornos restringidos asociados deberían ser colocadas en un estado reservado durante estos períodos. La reserva de una APU y su entorno restringido o entornos restringidos de memoria asociados al terminar el tratamiento de un "apulet" es denominada una "terminación residente". Una terminación residente ocurre en respuesta a una instrucción procedente de una PU.
Las figs. 25, 26A y 26B ilustran el establecimiento de una estructura de tubería dedicada que comprende un grupo de APU y sus entornos restringidos asociados para el tratamiento de la corriente de datos, por ejemplo corriente de datos MPEG. Como se ha mostrado en la fig. 25, los componentes de esta estructura de tubería incluyen el PE 2502 y la DRAM 2518. El PE 2502 incluye la PU 2504, el DMAC 2506 y una pluralidad de APU, incluyendo la APU 2508, la APU 2510 y la APU 2512. Las comunicaciones entre la PU 2504, el DMAC 2506 y estas APU ocurren a través del bus 2514 del PE. El bus 2516 de ancho de banda amplio conecta el DMAC 2506 a la DRAM 2518. La DRAM 2518 incluye una pluralidad de entornos restringidos por ejemplo el entorno restringido 2520, el entorno restringido 2522, el entorno restringido 2524 y el entorno restringido 2526.
La fig. 26A ilustra las operaciones para establecer la tubería dedicada. En la operación 2610, la PU 2504 asigna a la APU 2508 para tratar un "apulet" de red. Un "apulet" de red comprende un programa para tratar el protocolo de red de la red 104. En este caso, este protocolo es el Protocolo de Control de Transmisión/Protocolo de Internet (TCP/IP). Los paquetes de datos de TCP/IP que son conformes a este protocolo son trasmitidos sobre la red 104. A la recepción, la APU 2508 procesa estos paquetes y ensambla los datos en los paquetes en las celdas 102 de software. En la operación 2612, la PU 2504 instruye a la APU 2508 para realizar terminaciones residentes a la terminación del tratamiento del "apulet" de red. En la operación 2614, la PU 2504 asigna las APU 2510 y 2512 para tratar "apulets" de MPEG. En la operación 2616, la PU 2504 designa el entorno restringido 2520 como un entorno restringido fuente para acceso por la APU 2508 y la APU 2510. En la operación 2618, la PU 2504 designa al entorno restringido 2522 como un entorno restringido de destino para acceso por la APU 2510. En la operación 2620, la PU 2504 designa al entorno restringido 2524 como un entorno restringido fuente para acceso por la APU 2508 y la APU 2512. En la operación 2622, la PU 2504 designa al entorno restringido 2526 como un entorno restringido de destino para acceso por la APU 2512. En la operación 2624, la APU 2510 y la APU 2512 envían órdenes de lectura sincronizadas a los bloques de memoria dentro, respectivamente, del entorno restringido fuente 2520 y del entorno restringido fuente 2524 para ajustar estos bloques de memoria al estado de bloqueo. El proceso finalmente se mueve a la operación 2628 donde el establecimiento del tubería dedicado es completo y los recursos dedicados al tubería son reservados. Las APU 2508, 2510 y 2512 y sus entornos restringidos asociados 2520, 2522, 2524 y 2526, por ello, entran en el estado
reservado.
La fig. 26B ilustra las operaciones para tratar la corriente de datos de MPEG por este tubería dedicado. En la operación 2630, la APU 2508, que trata el "apulet" de red, recibe en su almacenamiento local paquetes de datos de TCP/IP desde la red 104. En la operación 2632, la APU 2508 trata estos paquetes de datos de TCP/IP y ensambla los datos dentro de estos paquetes en celdas de software 102. En la operación 2634, la APU 2508 examina el encabezamiento 2320 (fig. 23) de las celdas de software para determinar si las celdas contienen datos de MPEG. Si una celda no contiene datos de MPEG, entonces, en la operación 2636, la PU 2508 transmite la celda a un entorno restringido de propósito general designado dentro de la DRAM 2518 para tratar otros datos por otras APU incluidas dentro del tubería dedicado. Las APU 2508 también notifican a la PU 2504 de esta transmisión.
Por otro lado, si una celda de software contiene una corriente de datos de MPEG, entonces, en la operación 2638, la APU 2508 examina la ID de la celda previa 2330 (fig. 23) de la celda para identificar la corriente de datos de MPEG a los que pertenece la celda. En la operación 2640, la APU 2508 elige una APU del tubería dedicado para el tratamiento de la celda. En este caso, la APU 2508 elige la APU 2510 para tratar estos datos. Esta elección está basada en la ID de la celda previa 2330 y los factores de equilibrado de carga. Por ejemplo, si la ID de la celda previa 2330 indica que la celda de software previa de la corriente de datos de MPEG a la que pertenece la celda de software fue enviada a la APU 2510 para tratamiento, entonces la celda de software presente normalmente también la enviará a la APU 2510 para su tratamiento. En la operación 2642, la APU 2508 emite una orden de escritura sincronizada para escribir los datos de MPEG en el entorno restringido 2520. Como este entorno restringido fue ajustado previamente al estado de bloqueo, los datos de MPEG, en la operación 2644 automáticamente son leídos desde el entorno restringido 2520 al almacenamiento local de la APU 2510. En la operación 2646, la APU 2510 trata los datos de MPEG en su almacenamiento local para generar datos de video. En la operación 2648, la APU 2510 escribe los datos de video en el entorno restringido 2522. En la operación 2650, la APU 2510 emite órdenes de lectura sincronizada al entorno restringido 2520 para preparar este entorno restringido para recibir datos de MPEG adicionales. En la operación 2652, la APU 2510 trata una terminación residente. Este tratamiento hace que esta APU entre en el estado reservado durante el cual la APU espera para tratar datos de MPEG adicionales en la corriente de datos de MPEG.
Otras estructuras dedicadas pueden ser establecidas entre un grupo de APU y sus entornos restringidos asociados para tratar otros tipos de datos. Por ejemplo, como se ha mostrado en la fig. 27, un grupo dedicado de APU, por ejemplo, las APU 2702, 2708 y 2714, puede ser establecido para realizar transformaciones geométricas sobre objetos tridimensionales para generar dos listas de presentación dimensionales. Estas dos listas de presentación dimensionales pueden ser además tratadas (creadas sus imágenes virtuales) por otras APU para generar datos de píxel. Para realizar este tratamiento, los entornos restringidos son dedicados a las APU 2702, 2708 y 2414 para almacenar los objetos tridimensionales y las listas de presentación resultantes del tratamiento de estos objetos. Por ejemplo, los entornos restringidos fuente 2704, 2720 y 2716 son dedicados para almacenar los objetos tridimensionales tratados por, respectivamente, la APU 2702, la APU 2708 y la APU 2714. De una manera similar, las entornos restringidos de destino 2706, 2712 y 2718 están dedicados a almacenar las listas de presentación resultantes del tratamiento de estos objetos tridimensionales por la APU 2702, la APU 2708 y la APU 2712, respectivamente.
La coordinación de la APU 2720 está dedicada a recibir en su almacenamiento local las listas de presentación procedentes de entornos restringidos de destino 2706, 2712 y 2718. La APU 2720 arbitra entre estas listas de presentación y las envía a otras APU para la creación de imagen virtual de los datos de píxel.
Los procesadores del sistema 101 también emplean un temporizador absoluto. El temporizador absoluto proporciona una señal de reloj a las APU y otros elementos de un PE que es tanto independiente como más rápida que la señal de reloj que acciona estos elementos. El uso de este temporizador absoluto está ilustrado en la
fig. 28.
Como se ha mostrado en esta figura, el temporizador absoluto establece un presupuesto de tiempo para la realización de tareas por las APU. Este presupuesto de tiempo proporciona un tiempo para completar estas tareas que es mayor que el necesario para el tratamiento de las tareas por las APU. Como resultado, para cada tarea, hay dentro del presupuesto de tiempo, un período de ocupación y un período de espera. Todos los "apulets" son escritos para el tratamiento sobre la base de este presupuesto de tiempo independientemente del tiempo o velocidad de tratamiento real de las APU.
Por ejemplo, para una APU particular de un PE, una tarea particular puede ser realizada durante el período de ocupación 2802, del presupuesto de tiempo 2804. Como el período de ocupación 2802 es menor que el presupuesto de tiempo 2804, ocurre un periodo de espera 2806 durante el presupuesto de tiempo. Durante este período de espera, la APU va a un modo durmiente durante el cual se consume menos potencia por la APU.
Los resultados del tratamiento de una tarea no son esperados por otras APU, u otros elementos de un PE hasta que expira un presupuesto de tiempo 2804. Usando el presupuesto de tiempo establecido por el temporizador absoluto, por ello, los resultados del tratamiento de las APU siempre están coordinados independientemente de las velocidades de tratamiento reales de las APU.
En el futuro, la velocidad de tratamiento por las APU resultará más rápida. El presupuesto de tiempo establecido por el temporizador absoluto, sin embargo, permanecerá el mismo. Por ejemplo, como se ha mostrado en la fig. 28, una APU en el futuro ejecutará una tarea en un período más corto y, por ello, tendrá un período de de espera más largo. El período de ocupación 2808, por ello, es más corto que el período de ocupación 2802, y el período de espera 2810 es más largo que el período de espera 2806. Sin embargo, como los programas están escritos para el tratamiento sobre la base del mismo presupuesto de tiempo establecido con el temporizador absoluto, se mantiene la coordinación de los resultados del tratamiento entre las APU. Como resultado, APU más rápidas pueden procesar programas escritos para APU más lentas sin causar conflictos en los tiempos en los que se esperan los resultados de este tratamiento.
En lugar de un temporizador absoluto para establecer la coordinación entre las APU, la PU, o una o más APU designadas, se pueden analizar las instrucciones particulares o microcódigo que son ejecutados por una APU en el tratamiento de un "apulet" para estudiar los problemas en la coordinación del tratamiento paralelo de las APU creado por velocidades de funcionamiento mejoradas o diferentes. Instrucciones de "no funcionamiento" ("NOOP") pueden ser insertadas en las instrucciones y ejecutadas por alguna de las APU para mantener la terminación secuencial propia del tratamiento por las APU esperado por el amuleto. Insertando estas NOOP en las instrucciones, la temporización correcta para la ejecución de las APU de todas las instrucciones puede ser mantenida.
Aunque el invento ha sido descrito aquí con referencia a realizaciones particulares, ha de comprenderse que estas realizaciones son simplemente ilustrativas de los principios y aplicaciones del presente invento. Ha de entenderse por ello que pueden hacerse numerosas modificaciones en las realizaciones ilustrativas y que pueden ser consideradas otras disposiciones sin salir del marco del presente invento según ha sido definido por las reivindicaciones adjuntas.

Claims (40)

1. Un sistema (101) de tratamiento por ordenador, comprendiendo dicho sistema (101) de tratamiento: una primera memoria (225) para almacenar programas y datos asociados con dichos programas; una pluralidad de primeras unidades (402) de tratamiento para tratar dichos programas y dichos datos asociados; un controlador de memoria (205) para controlar los accesos a dicha primera memoria por dichas primeras unidades (402) de tratamiento; una segunda memoria para almacenar una tabla de acceso (2102) y una tabla de claves (1902), comprendiendo dicha tabla de acceso (2102) una pluralidad de entradas de acceso, incluyendo cada una de dichas entradas de acceso una clave de acceso y una identificación de un espacio de memoria dentro de dicha primera memoria asociado con dicha clave de acceso, comprendiendo dicha tabla de claves (1902) una pluralidad de entradas de claves, incluyendo cada una de dichas entradas de claves una identificación de una de dichas primeras unidades (402) de tratamiento y una clave de solicitud asociada con dicha primera unidad (402) de tratamiento; y una segunda unidad (203) de tratamiento para controlar dicho tratamiento de dichos programas y dichos datos asociados por dichas primeras unidades (402) de tratamiento, siendo accionable dicha segunda unidad (203) de tratamiento para construir y mantener dicha tabla de acceso (2102) y dicha tabla de claves (1902), siendo además accionable dicha segunda unidad (203) de tratamiento para dirigir cualquiera de dichas primeras unidades (402) de tratamiento para procesar uno de dichos programas, siendo accionable dicha primera unidad (402) de tratamiento para tratar dicho programa para emitir una solicitud a dicho controlador de memoria (205) para acceder a una posición de almacenamiento dentro de dicha primera memoria (225), siendo accionable dicho controlador de memoria, en respuesta a dicha solicitud, para comparar la clave de solicitud asociada con dicha primera unidad (402) de tratamiento en dicha tabla de claves (1902) con las claves de acceso en dicha tabla de acceso (2102), y si una de dichas claves de acceso corresponde con la clave de solicitud asociada con dicha primera unidad (402) de tratamiento en dicha tabla de claves (1902) y dicha posición de almacenamiento corresponde al espacio de memoria asociado con dicha clave de acceso e identificado en dicha tabla de acceso (2102), ejecutar dicha solicitud.
2. Un sistema de tratamiento por ordenador según la reivindicación 1, que comprende además una pluralidad de memorias locales, estando asociada cada una de dichas memorias locales con una de dichas primeras unidades (402) de tratamiento, y en el que dicha segunda unidad de tratamiento (203) es accionable para dirigir dicha primera unidad (402) de tratamiento para procesar dicho programa dirigiendo dicho controlador de memoria para transferir dicho programa desde dicha primera memoria a la memoria local asociada con dicha primera unidad de tratamiento, tratando después de ello dicha primera unidad (402) de tratamiento dicho programa desde dicha memoria local.
3. Un sistema de tratamiento por ordenador según la reivindicación 1, en el que dicha clave de acceso comprende una primera pluralidad de bits y dicha clave de solicitud asociada con dicha primera unidad (402) de tratamiento comprende una segunda pluralidad de bits, y dicho controlador de memoria es accionable para ejecutar dicha solicitud solo sí la totalidad de dicha primera pluralidad de bits coincide con la totalidad de dicha segunda pluralidad de bits.
4. Un sistemas de tratamiento por ordenador según la reivindicación 1, en el que dicha clave de acceso comprende una primera pluralidad de bits y una máscara de claves y dicha clave de solicitud asociada con dicha primera unidad de tratamiento comprende una segunda pluralidad de bits, y dicho controlador de memoria es accionable para ejecutar dicha solicitud sólo si la totalidad de dicha primera pluralidad de bits coincide con dicha segunda pluralidad de bits o la totalidad de dicha de dicha primera pluralidad de bits que no coincide con dicha segunda pluralidad de bits son enmascarados por dicha máscara de claves.
5. Un sistema de tratamiento por ordenador según la reivindicación 1, en el que dicha clave de acceso comprende una primera pluralidad de bits y dicha clave de solicitud asociada con dicha primera unidad (402) de tratamiento comprende una segunda pluralidad de bits y una máscara de claves, y dicho controlador de memoria es accionable para ejecutar dicha solicitud sólo si la totalidad de dicha segunda pluralidad de bits coincide con dicha primera pluralidad de bits o los bits de dicha segunda pluralidad de bits que no coinciden con dicha primera pluralidad de bits son enmascarados por dicha máscara de claves.
6. Un sistema de tratamiento por ordenador según la reivindicación 1, en el que cada una de dichas entradas de claves incluye además una máscara de claves.
7. Un sistema de tratamiento por ordenador según la reivindicación 1, en el que cada una de dichas entradas de acceso que incluye además una máscara de claves.
8. Un sistema de tratamiento por ordenador según la reivindicación 1, en el que cada una de dichas entradas de claves incluye además una máscara de claves y cada una de dichas entradas de accesos incluye además una máscara de claves.
9. Un sistema de tratamiento por ordenador según la reivindicación 1, en el que cada una de dichas entradas de acceso incluye además una entrada de posición base y una entrada de tamaño, proporcionando dicha entrada de posición base la dirección de comienzo dentro de dicha primera memoria de dicho espacio de memoria asociado con dicha entrada de acceso y proporcionando dicha entrada de tamaño el tamaño dentro de dicha primera memoria de dicho espacio de memoria asociado con dicha entrada de acceso.
10. Un sistema de tratamiento por ordenador según la reivindicación 1, en el que cada una de dichas primeras memoria es una memoria dinámica de acceso aleatorio y es una memoria principal para dicho sistema de tratamiento por ordenador.
11. Un método de tratamiento por ordenador, comprendiendo dicho método: almacenar en una primera memoria (225) programas y datos asociados con dichos programas; tratar con una pluralidad de primeras unidades (402) de tratamiento dichos programas y dichos datos asociados; controlar con un controlador de memoria (205) accesos a dicha primera memoria por dichas primeras unidades (402) de tratamiento; construir con una segunda unidad (203) de tratamiento en una segunda memoria una tabla de acceso (2102) y una tabla de claves (1902), comprendiendo dicha tabla de acceso (2102) una pluralidad de entradas de acceso, incluyendo cada una de dichas entradas de acceso una clave de acceso y una identificación de un espacio de memoria dentro de dicha primera memoria asociado con dicha clave de acceso, comprendiendo dicha tabla de claves (19002) una pluralidad de entradas de claves, incluyendo cada una de dichas entradas de claves una identificación de una de dichas primeras unidades (402) de tratamiento y una clave de solicitud asociada con dicha primera unidad (402) de tratamiento; controlar con dicha segunda unidad (203) de tratamiento dicho tratamiento de dichos programas y dichos datos asociados por dichas primeras unidades (402) de tratamiento; dirigir con dicha segunda unidad (203) de tratamiento de dichas primeras unidades (402) de tratamiento para procesar uno de dichos programas; emitir desde dicha primera unidad (402) de tratamiento, al tratar dicho programa, una solicitud a dicho controlador de memoria (205) para acceder a una posición de almacenamiento dentro de dicha primera memoria; comparar, en respuesta a dicha solicitud, la clave de solicitud asociada con dicha primera unidad (402) de tratamiento en dicha tabla de claves (1902) con las claves de accesos en dicha tabla de accesos (2102); si una de dichas claves de acceso corresponde con la clave de solicitud asociada con dicha primera unidad (402) de tratamiento en dicha tabla de claves (1902) y dicha posición de almacenamiento corresponde al espacio de memoria asociado con dicha clave de accesos identificada en dicha tabla de acceso (2102), ejecutar dicha
solicitud.
12. Un método de tratamiento por ordenador según la reivindicación 11, que comprende además dirigir con dicha segunda unidad (203) de tratamiento dicha primera unidad (402) de tratamiento para tratar dicho programa emitiendo desde dicha segunda unidad (203) de tratamiento una orden a dicho controlador de memoria para transferir dicho programa desde dicha primera memoria a una memoria local asociada con dicha primera unidad (402) de tratamiento, y después de ello tratar con dicha primera unidad (402) de tratamiento dicho programa desde dicha memoria
local.
13. Un método de tratamiento por ordenador según la reivindicación 11, en el que dicha clave de acceso comprende una primera pluralidad de bits y dicha clave de solicitud asociada con dicha primera unidad (402) de tratamiento comprende una segunda pluralidad de bits, y comprendiendo además ejecutar con dicho controlador de memoria dicha solicitud sólo si la totalidad de dicha primera pluralidad de bits coincide con la totalidad de dicha segunda pluralidad de bits.
14. Un método de tratamiento por ordenador según la reivindicación 11, en el que dicha clave de acceso comprende una primera pluralidad de bits y una máscara de claves y dicha clave de solicitud asociada con dicha primera unidad (402) de tratamiento comprende una segunda pluralidad de bits, y comprendiendo además ejecutar con dicho controlador de memoria dicha solicitud sólo si la totalidad de dicha primera pluralidad de bits coincide con dicha segunda pluralidad de bits o si todos los bits de dicha primera pluralidad de bits que no coinciden con dicha segunda pluralidad de bits son enmascarados por dicha máscara de claves.
15. Un método de tratamiento por ordenador según la reivindicación 11, en el que dicha clave de acceso comprende una primera pluralidad de bits y dicha clave de solicitud asociada con dicha primera unidad (402) de tratamiento comprende una segunda pluralidad de bits y una máscara de claves, y comprendiendo además ejecutar con dicho controlador de memoria dicha solicitud sólo si la totalidad de dicha segunda pluralidad de bits coincide con dicha primera pluralidad de bits o todos los bits de dicha segunda pluralidad de bits que no coinciden con dicha primera pluralidad de bits son enmascarados con dicha máscara de claves.
16. Un método de tratamiento por ordenador según la reivindicación 11, en el que cada una de dichas entradas de claves incluye además una máscara de claves.
17. Un método de tratamiento por ordenador según la reivindicación 11, en el que cada una de dichas entradas de acceso incluye además una máscara de claves.
18. Un método de tratamiento por ordenador según la reivindicación 10, en el que cada una de dichas entradas de claves que incluye además una máscara de claves y cada una de dichas entradas de acceso incluye además una máscara de claves.
19. Un método de tratamiento por ordenador según la reivindicación 11, en el que cada una de dichas entradas de acceso incluye además una entrada de posición base y una entrada de tamaño, proporcionando dicha entrada de posición base la dirección de comienzo dentro de dicha primera memoria de dicho espacio de memoria asociado con dicha entrada de acceso y proporcionando dicha entrada de tamaño el tamaño dentro de dicha primera memoria de dicho espacio de memoria asociado con dicha entrada de acceso.
20. Un método de tratamiento por ordenador según la reivindicación 11, en el que dicha primera memoria es una memoria dinámica de acceso aleatorio y es una memoria principal para dicho sistema (101) de tratamiento por ordenador.
21. Un sistema (101) de tratamiento por ordenador, comprendiendo dicho sistema (101) de tratamiento: una primera memoria (225) para almacenar programas y datos asociados con dichos programas, comprendiendo dicha primera memoria (225) una pluralidad de posiciones de almacenamiento accesibles, comprendiendo cada una de dichas posiciones de almacenamiento accesibles un segmento (2010) de memoria adicional asociado con dicha posición de almacenamiento accesible y conteniendo una clave de acceso (2012) para dicha posición de almacenamiento accesible; una pluralidad de primeras unidades (402) de tratamiento para tratar dichos programas y dichos datos asociados; un controlador de memoria (205) para controlar los accesos a dicha primera memoria por dichas primeras unidades (402) de tratamiento; una segunda memoria para almacenar una tabla de claves (1902) que comprende una pluralidad de entradas de claves, incluyendo cada una de dichas entradas de claves una identificación (1904) de una de dichas primeras unidades (402) de tratamiento y una clave de solicitud (1906) asociada con dicha primera unidad (402) de tratamiento; una segunda unidad (203) de tratamiento para controlar dicho tratamiento de dichos programas y dichos datos asociados por dichas primeras unidades (402) de tratamiento, siendo accionable dicha segunda unidad (203) de tratamiento para asignar y mantener dichas claves de acceso (2012) y construir y mantener dicha tabla de claves (1902), siendo además accionable dicha segunda unidad (203) de tratamiento para dirigir cualquiera de dichas primeras unidades (402) de tratamiento para tratar uno de dichos programas, siendo accionable dicha primera unidad (402) de tratamiento en el tratamiento de dicho programa para emitir una solicitud a dicho controlador de memoria (205) para acceder a una de dichas posiciones de almacenamiento accesibles, siendo accionable dicho controlador de memoria, en respuesta a dicha solicitud, para comparar la clave de solicitud (1906) asociada con dicha primera unidad (402) de tratamiento en dicha tabla de claves (1902) con la clave de acceso (2012) contenida en el segmento de memoria adicional asociado con dicha posición de almacenamiento accesible, y si la clave de solicitud (1906) asociada con dicha primera unidad (402) de tratamiento en dicha tabla de claves (1902) corresponde con dicha clave de acceso (2012) contenida en dicho segmento de memoria adicional asociado con dicha posición de almacenamiento accesible, ejecutar dicha solicitud.
22. Un sistema de tratamiento por ordenador según la reivindicación 21, que comprende además una pluralidad de memorias locales, estando asociada cada una de dichas memorias locales con una de dichas primeras unidades (402) de tratamiento, y en el que dicha segunda unidad (203) de tratamiento es accionable para dirigir dicha primera unidad (402) de tratamiento para tratar dicho programa dirigiendo dicho controlador de memorias para transferir dicho programa desde dicha primera memoria a la memoria local asociada con dicha primera unidad (402) de tratamiento, procesando después de ello dicha primera unidad (402) de tratamiento dicho programa desde dicha memoria
local.
23. Un sistema de tratamiento por ordenador según la reivindicación 21, en el que dicha clave de acceso contenida en dicho segmento de memoria asociado con dicha posición de almacenamiento accesible comprende una primera pluralidad de bits, y dicha clave de solicitud asociada con dicha primera unidad (402) de tratamiento comprende una segunda pluralidad de bits, y dicho controlador de memoria es accionable para ejecutar dicha solicitud sólo si la totalidad de dicha primera pluralidad de bits coincide con la totalidad de dicha segunda pluralidad bits.
24. Un sistema de tratamiento por ordenador según la reivindicación 21, en el que dicha clave de acceso contenida en dicho segmento de memoria asociado con dicha posición de almacenamiento accesible comprende una primera pluralidad de bits y una máscara de claves y dicha clave de solicitud asociada con dicha primera unidad (402) de tratamiento comprende una segunda pluralidad de bits, y dicho controlador de memoria es accionable para ejecutar dicha solicitud sólo si la totalidad de dicha primera pluralidad de bits coincide con dicha segunda pluralidad de bits o los bits de dicha primera pluralidad de bits que no coinciden con dicha segunda pluralidad de bits son enmascarados por dicha máscara de claves.
25. Un sistema de tratamiento por ordenador según la reivindicación 21, en el que dicha clave de acceso contenida en dicho segmento de memoria asociado con dicha posición de almacenamiento accesible comprende una primera pluralidad de bits y dicha clave de solicitud asociada con dicha primera unidad (402) de tratamiento comprende una segunda pluralidad de bits y una máscara de claves, y dicho controlador de memoria es accionable para ejecutar dicha solicitud sólo si la totalidad de dicha segunda pluralidad de bits coincide con dicha primera pluralidad de bits o todos los bits de dicha segunda pluralidad de bits que no coinciden con dicha primera pluralidad de bits son enmascarados por dicha máscara de claves.
26. Un sistema de tratamiento por ordenador según la reivindicación 21, en el que cada una de dichas entradas de claves incluye además una máscara de claves.
27. Un sistema de tratamiento por ordenador según la reivindicación 21, en el que cada uno de dichos segmentos de memoria adicional contiene también una máscara de claves.
28. Un sistema de tratamiento por ordenador según la reivindicación 21, en el que cada una de dichas entradas de claves incluye además una máscara de claves y cada uno de dichos segmentos de memoria adicional contiene también una máscara de claves.
29. Un sistema de tratamiento por ordenador según la reivindicación 21, en el que cada uno de dichos segmentos de memoria adicionales contiene también información del estado relativo al estado de los datos almacenados en la posición de almacenamiento accesible asociada con dicho segmento de memoria adicional.
30. Un sistema de tratamiento por ordenador según la reivindicación 21, en el que dicha primera memoria es una memoria dinámica de acceso aleatorio y es una memoria principal para dicho sistema (101) de tratamiento por ordenador.
31. Un método de tratamiento por ordenador, comprendiendo dicho método: almacenar en una primera memoria (225) programas y datos asociados con dichos programas, comprendiendo dicha primera memoria una pluralidad de posiciones de almacenamiento accesibles, incluyendo cada una de dichas posiciones de almacenamiento accesibles un segmento (2040) de la memoria adicional asociado con dicha posición de almacenamiento accesible; almacenar en dicho segmento de memoria adicional para cada posición de almacenamiento accesible una clave de acceso (2012) para dicha posición de almacenamiento accesible; tratar con una pluralidad de primeras unidades (402) de tratamiento dichos programas y dichos datos asociados; controlar con un controlador de memoria (205) accesos a dicha primera memoria por dichas primeras unidades (402) de tratamiento; almacenar en una segunda memoria una tabla de claves (1902) que comprende una pluralidad de entradas de claves, incluyendo cada una de dichas entradas de claves una identificación (1904) de una de dichas primeras unidades (402) de tratamiento y una clave de solicitud (1906) asociada con dicha primera unidad (402) de tratamiento; controlar con una segunda unidad (203) de tratamiento dicho tratamiento de dichos programas y dichos datos asociados por dichas primeras unidades (402) de tratamiento; construir con dicha segunda unidad (203) de tratamiento dicha tabla de claves (1902); dirigir con dicha segunda unidad (203) de tratamiento cualquiera de dichas primeras unidades (402) de tratamiento para tratar uno de dichos programas; emitir desde dicha primera unidad (402) de tratamiento, en el tratamiento de dicho programa, una solicitud a dicho controlador de memoria para acceder a una de dichas posiciones de almacenamiento accesibles; comparar, en respuesta a dicha solicitud, la clave de solicitud (1906) asociada con dicha primera unidad (402) de tratamiento en dicha tabla de claves (1902) con la clave de accesos (2012) contenida en el segmento de memoria adicional asociado con dicha posición de almacenamiento accesible; si la clave de solicitud (1906) asociada con dicha primera unidad (402) de tratamiento en dicha tabla de claves (1902) corresponde con dicha clave de accesos (2012) contenida en dicho segmento de memoria adicional asociado con dicha posición de almacenamiento accesible, ejecutar dicha solicitud.
32. Un método de tratamiento por ordenador según la reivindicación 31, que comprende además dirigir con dicha segunda unidad (203) de tratamiento dicha primera unidad (402) de tratamiento para tratar dicho programa dirigiendo dicho controlador de memoria para transferir dicho programa desde dicha primera memoria a la memoria local asociada con dicha primera unidad (402) de tratamiento, y después de ello tratar con dicha primera unidad (402) de tratamiento dicho programa desde dicha memoria local.
33. Un método de tratamiento por ordenador según la reivindicación 31, en el que dicha clave de acceso contenida en dicho segmento de memoria adicional asociado con dicha posición de almacenamiento accesible comprende una primera pluralidad de bits y dicha clave de solicitud asociada con dicha primera unidad (402) de tratamiento comprende una segunda pluralidad de bits, y comprendiendo además ejecutar con dicho controlador de memoria dicha solicitud sólo si la totalidad de dicha primera pluralidad de bits coincide con la totalidad de dicha segunda pluralidad de bits.
34. Un método de tratamiento por ordenador según la reivindicación 31, en el que dicha clave de acceso contenida en dicho segmento de memoria asociado con dicha posición de almacenamiento accesible comprende una primera pluralidad de bits y una máscara de claves y dicha clave de solicitud asociada con dicha primera unidad (402) de tratamiento comprende una segunda pluralidad de bits, y comprendiendo además ejecutar con dicho controlador de memoria dicha solicitud sólo si la totalidad de dicha primera pluralidad de bits coincide con dicha segunda pluralidad de bits o si todos los bits de dicha primera pluralidad de bits que no coinciden con dicha segunda pluralidad de bits son enmascarados por dicha máscara de claves.
35. Un método de tratamiento por ordenador según la reivindicación 31, en el que dicha clave de acceso contenida en dicho segmento de memoria adicional asociado con dicha posición de almacenamiento accesible comprende una primera pluralidad de bits y dicha clave de solicitud asociada con dicha primera unidad (402) de tratamiento comprende una segunda pluralidad de bits y una máscara de claves, y comprendiendo además ejecutar con dicho controlador de memoria dicha solicitud sólo si la totalidad de dicha segunda pluralidad de bits coincide con dicha primera pluralidad de bits o todos los bits de dicha segunda pluralidad de bits que no coinciden con dicha primera pluralidad de bits son enmascarados con dicha máscara de claves.
36. Un método de tratamiento por ordenador según la reivindicación 31, en el que cada una de dichas entradas de claves incluye además una máscara de claves.
37. Un método de tratamiento por ordenador según la reivindicación 31, en el que cada uno de dichos elementos de memoria adicional contiene también una máscara de claves.
38. Un método de tratamiento por ordenador según la reivindicación 31, en el que cada una de dichas entradas de claves incluye además una máscara de claves y cada uno de dichos segmentos de memoria adicional contiene también una máscara de claves.
39. Un método de tratamiento por ordenador según la reivindicación 31, en el que cada uno de dichos segmentos de memoria adicional contiene también información de estado relativa al estado de datos almacenados en la posición de memoria accesible asociada con dicho segmento de memoria adicional.
40. Un método de tratamiento ordenador según la reivindicación 31, en el que dicha primera memoria es una memoria dinámica de acceso aleatorio y es una memoria principal para dicho sistema (101) de tratamiento por ordenador.
ES02705345T 2001-03-22 2002-03-19 Sistema y metodo de control de acceso a memoria compartida para una arquitectura de ordenador para redes de banda ancha. Expired - Lifetime ES2346045T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US816020 2001-03-22
US09/816,020 US6526491B2 (en) 2001-03-22 2001-03-22 Memory protection system and method for computer architecture for broadband networks

Publications (1)

Publication Number Publication Date
ES2346045T3 true ES2346045T3 (es) 2010-10-08

Family

ID=25219464

Family Applications (1)

Application Number Title Priority Date Filing Date
ES02705345T Expired - Lifetime ES2346045T3 (es) 2001-03-22 2002-03-19 Sistema y metodo de control de acceso a memoria compartida para una arquitectura de ordenador para redes de banda ancha.

Country Status (9)

Country Link
US (7) US6526491B2 (es)
EP (1) EP1370948B1 (es)
JP (2) JP3454808B2 (es)
KR (1) KR100890134B1 (es)
CN (1) CN1291327C (es)
DE (1) DE60236416D1 (es)
ES (1) ES2346045T3 (es)
TW (1) TW556087B (es)
WO (1) WO2002077826A1 (es)

Families Citing this family (250)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1264477A4 (en) * 2000-02-23 2003-10-01 Penta Trading Ltd SYSTEMS AND METHODS FOR LAUNCHING AND ESTABLISHING PREVIEW OF ELECTRONIC FILES OF THE WEB FILE TYPE
US7194557B1 (en) * 2004-11-08 2007-03-20 Palmsource, Inc. Data exchange between a handheld device and another computer system using an exchange manager via synchronization
US6779049B2 (en) * 2000-12-14 2004-08-17 International Business Machines Corporation Symmetric multi-processing system with attached processing units being able to access a shared memory without being structurally configured with an address translation mechanism
US7231500B2 (en) * 2001-03-22 2007-06-12 Sony Computer Entertainment Inc. External data interface in a computer architecture for broadband networks
US7233998B2 (en) * 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
US6826662B2 (en) 2001-03-22 2004-11-30 Sony Computer Entertainment Inc. System and method for data synchronization for a computer architecture for broadband networks
US6526491B2 (en) 2001-03-22 2003-02-25 Sony Corporation Entertainment Inc. Memory protection system and method for computer architecture for broadband networks
US6865639B2 (en) * 2001-12-19 2005-03-08 Northrop Grumman Corporation Scalable self-routing superconductor switch
US6980209B1 (en) * 2002-06-14 2005-12-27 Nvidia Corporation Method and system for scalable, dataflow-based, programmable processing of graphics data
US8108656B2 (en) * 2002-08-29 2012-01-31 Qst Holdings, Llc Task definition for specifying resource requirements
US7243333B2 (en) * 2002-10-24 2007-07-10 International Business Machines Corporation Method and apparatus for creating and executing integrated executables in a heterogeneous architecture
US7225431B2 (en) * 2002-10-24 2007-05-29 International Business Machines Corporation Method and apparatus for setting breakpoints when debugging integrated executables in a heterogeneous architecture
US7213123B2 (en) * 2002-10-24 2007-05-01 International Business Machines Corporation Method and apparatus for mapping debugging information when debugging integrated executables in a heterogeneous architecture
US7222332B2 (en) * 2002-10-24 2007-05-22 International Business Machines Corporation Method and apparatus for overlay management within an integrated executable for a heterogeneous architecture
US7225301B2 (en) * 2002-11-22 2007-05-29 Quicksilver Technologies External memory controller node
JP2004220070A (ja) * 2003-01-09 2004-08-05 Japan Science & Technology Agency コンテキスト切り替え方法及び装置、中央演算装置、コンテキスト切り替えプログラム及びそれを記憶したコンピュータ読み取り可能な記憶媒体
US7577636B2 (en) * 2003-05-28 2009-08-18 Fernandez Dennis S Network-extensible reconfigurable media appliance
JP4028444B2 (ja) * 2003-06-27 2007-12-26 株式会社東芝 スケジューリング方法およびリアルタイム処理システム
JP4624732B2 (ja) * 2003-07-16 2011-02-02 パナソニック株式会社 アクセス方法
US8086752B2 (en) 2006-11-22 2011-12-27 Sonos, Inc. Systems and methods for synchronizing operations among a plurality of independently clocked digital data processing devices that independently source digital data
US11650784B2 (en) 2003-07-28 2023-05-16 Sonos, Inc. Adjusting volume levels
US8290603B1 (en) 2004-06-05 2012-10-16 Sonos, Inc. User interfaces for controlling and manipulating groupings in a multi-zone media system
US11294618B2 (en) 2003-07-28 2022-04-05 Sonos, Inc. Media player system
US11106425B2 (en) 2003-07-28 2021-08-31 Sonos, Inc. Synchronizing operations among a plurality of independently clocked digital data processing devices
US11106424B2 (en) 2003-07-28 2021-08-31 Sonos, Inc. Synchronizing operations among a plurality of independently clocked digital data processing devices
US10613817B2 (en) 2003-07-28 2020-04-07 Sonos, Inc. Method and apparatus for displaying a list of tracks scheduled for playback by a synchrony group
US8234395B2 (en) 2003-07-28 2012-07-31 Sonos, Inc. System and method for synchronizing operations among a plurality of independently clocked digital data processing devices
US8020023B2 (en) 2003-07-28 2011-09-13 Sonos, Inc. Systems and methods for synchronizing operations among a plurality of independently clocked digital data processing devices without a voltage controlled crystal oscillator
US20050071828A1 (en) * 2003-09-25 2005-03-31 International Business Machines Corporation System and method for compiling source code for multi-processor environments
US7236998B2 (en) * 2003-09-25 2007-06-26 International Business Machines Corporation System and method for solving a large system of dense linear equations
US7478390B2 (en) * 2003-09-25 2009-01-13 International Business Machines Corporation Task queue management of virtual devices using a plurality of processors
US7318218B2 (en) * 2003-09-25 2008-01-08 International Business Machines Corporation System and method for processor thread for software debugging
US7516456B2 (en) * 2003-09-25 2009-04-07 International Business Machines Corporation Asymmetric heterogeneous multi-threaded operating system
US7475257B2 (en) * 2003-09-25 2009-01-06 International Business Machines Corporation System and method for selecting and using a signal processor in a multiprocessor system to operate as a security for encryption/decryption of data
US7415703B2 (en) * 2003-09-25 2008-08-19 International Business Machines Corporation Loading software on a plurality of processors
US7549145B2 (en) * 2003-09-25 2009-06-16 International Business Machines Corporation Processor dedicated code handling in a multi-processor environment
US7444632B2 (en) * 2003-09-25 2008-10-28 International Business Machines Corporation Balancing computational load across a plurality of processors
US7523157B2 (en) * 2003-09-25 2009-04-21 International Business Machines Corporation Managing a plurality of processors as devices
US7389508B2 (en) * 2003-09-25 2008-06-17 International Business Machines Corporation System and method for grouping processors and assigning shared memory space to a group in heterogeneous computer environment
US20050071578A1 (en) * 2003-09-25 2005-03-31 International Business Machines Corporation System and method for manipulating data with a plurality of processors
US7146529B2 (en) * 2003-09-25 2006-12-05 International Business Machines Corporation System and method for processor thread acting as a system service processor
US7496917B2 (en) * 2003-09-25 2009-02-24 International Business Machines Corporation Virtual devices using a pluarlity of processors
US7739479B2 (en) * 2003-10-02 2010-06-15 Nvidia Corporation Method for providing physics simulation data
US7895411B2 (en) * 2003-10-02 2011-02-22 Nvidia Corporation Physics processing unit
US20050086040A1 (en) * 2003-10-02 2005-04-21 Curtis Davis System incorporating physics processing unit
TW200532466A (en) 2004-02-03 2005-10-01 Sony Corp Information processing device, information processing method, information processing system and information processing program of accessible media
US8028292B2 (en) 2004-02-20 2011-09-27 Sony Computer Entertainment Inc. Processor task migration over a network in a multi-processor system
JP2005235019A (ja) * 2004-02-20 2005-09-02 Sony Corp ネットワークシステム、分散処理方法、情報処理装置
US7614053B2 (en) * 2004-02-20 2009-11-03 Sony Computer Entertainment Inc. Methods and apparatus for task management in a multi-processor system
JP2005242598A (ja) * 2004-02-26 2005-09-08 Sony Corp 情報処理システム及び情報処理方法、並びにコンピュータ・プログラム
JP4586526B2 (ja) 2004-02-27 2010-11-24 ソニー株式会社 情報処理装置、情報処理方法、情報処理システムおよび情報処理用プログラム
JP4325438B2 (ja) 2004-03-01 2009-09-02 ソニー株式会社 情報処理システム及び情報処理方法、並びにコンピュータ・プログラム
US7657186B2 (en) * 2004-03-05 2010-02-02 Finisar Corporation Consistency checking over internal information in an optical transceiver
EP1723530A4 (en) * 2004-03-05 2008-12-31 Finisar Corp HIERARCHICAL AND BYTE CONFIGURABLE STORAGE IN AN OPTICAL TRANSMITTER / RECEIVER
US7657667B2 (en) * 2004-03-25 2010-02-02 International Business Machines Corporation Method to provide cache management commands for a DMA controller
US8224639B2 (en) 2004-03-29 2012-07-17 Sony Computer Entertainment Inc. Methods and apparatus for achieving thermal management using processing task scheduling
US9977561B2 (en) 2004-04-01 2018-05-22 Sonos, Inc. Systems, methods, apparatus, and articles of manufacture to provide guest access
US9374607B2 (en) 2012-06-26 2016-06-21 Sonos, Inc. Media playback system with guest access
US20050251649A1 (en) * 2004-04-23 2005-11-10 Sony Computer Entertainment Inc. Methods and apparatus for address map optimization on a multi-scalar extension
US7437536B2 (en) 2004-05-03 2008-10-14 Sony Computer Entertainment Inc. Systems and methods for task migration
US20050251644A1 (en) * 2004-05-06 2005-11-10 Monier Maher Physics processing unit instruction set architecture
US7526608B2 (en) * 2004-05-28 2009-04-28 Sony Computer Entertainment Inc. Methods and apparatus for providing a software implemented cache memory
US8326951B1 (en) 2004-06-05 2012-12-04 Sonos, Inc. Establishing a secure wireless network with minimum human intervention
US8868698B2 (en) 2004-06-05 2014-10-21 Sonos, Inc. Establishing a secure wireless network with minimum human intervention
JP4465598B2 (ja) 2004-07-05 2010-05-19 ソニー株式会社 集積回路およびその処理制御方法、並びに、プログラム
JP2006031480A (ja) * 2004-07-16 2006-02-02 Sony Corp 情報処理システム及び情報処理方法、並びにコンピュータプログラム
JP4599923B2 (ja) 2004-07-16 2010-12-15 ソニー株式会社 情報処理システム及び情報処理方法、並びにコンピュータプログラム
JP2006033646A (ja) 2004-07-20 2006-02-02 Sony Corp 情報処理システム及び情報処理方法、並びにコンピュータプログラム
JP2006031525A (ja) 2004-07-20 2006-02-02 Sony Corp 情報処理装置および情報処理方法、並びに、プログラム
US7779177B2 (en) * 2004-08-09 2010-08-17 Arches Computing Systems Multi-processor reconfigurable computing system
US7304646B2 (en) * 2004-08-19 2007-12-04 Sony Computer Entertainment Inc. Image data structure for direct memory access
US7363397B2 (en) * 2004-08-26 2008-04-22 International Business Machines Corporation System and method for DMA controller with multi-dimensional line-walking functionality
US7240137B2 (en) * 2004-08-26 2007-07-03 International Business Machines Corporation System and method for message delivery across a plurality of processors
US20070263514A1 (en) * 2004-08-30 2007-11-15 Yoshiaki Iwata Recorder
US7780533B2 (en) * 2004-08-30 2010-08-24 Panasonic Corporation Client terminal for executing multiplayer application, group forming method, and group forming program
JP2006079280A (ja) 2004-09-08 2006-03-23 Sony Corp 情報処理システムおよび方法、情報処理装置および方法、並びにプログラム
US7240182B2 (en) * 2004-09-16 2007-07-03 International Business Machines Corporation System and method for providing a persistent function server
US8001294B2 (en) * 2004-09-28 2011-08-16 Sony Computer Entertainment Inc. Methods and apparatus for providing a compressed network in a multi-processing system
US20060070069A1 (en) * 2004-09-30 2006-03-30 International Business Machines Corporation System and method for sharing resources between real-time and virtualizing operating systems
US7290112B2 (en) * 2004-09-30 2007-10-30 International Business Machines Corporation System and method for virtualization of processor resources
JP2007334379A (ja) 2004-10-05 2007-12-27 Matsushita Electric Ind Co Ltd 処理装置
US20060080661A1 (en) * 2004-10-07 2006-04-13 International Business Machines Corporation System and method for hiding memory latency
US7506325B2 (en) 2004-10-07 2009-03-17 International Business Machines Corporation Partitioning processor resources based on memory usage
ATE498867T1 (de) * 2004-10-15 2011-03-15 Sony Computer Entertainment Inc Verfahren und vorrichtungen zur unterstützung mehrerer konfigurationen in einem mehrprozessorsystem
US7502928B2 (en) * 2004-11-12 2009-03-10 Sony Computer Entertainment Inc. Methods and apparatus for secure data processing and transmission
US7512699B2 (en) * 2004-11-12 2009-03-31 International Business Machines Corporation Managing position independent code using a software framework
US20060129999A1 (en) * 2004-11-16 2006-06-15 Sony Computer Entertainment Inc. Methods and apparatus for using bookmarks in a trace buffer
JP4606142B2 (ja) * 2004-12-01 2011-01-05 株式会社ソニー・コンピュータエンタテインメント スケジューリング方法、スケジューリング装置およびマルチプロセッサシステム
US7707385B2 (en) * 2004-12-14 2010-04-27 Sony Computer Entertainment Inc. Methods and apparatus for address translation from an external device to a memory of a processor
US20060126770A1 (en) * 2004-12-15 2006-06-15 Takeshi Yamazaki Methods and apparatus for providing an asynchronous boundary between internal busses in a multi-processor device
US7689814B2 (en) 2004-12-20 2010-03-30 Sony Computer Entertainment Inc. Methods and apparatus for disabling error countermeasures in a processing system
US7698473B2 (en) * 2005-01-05 2010-04-13 Sony Computer Entertainment Inc. Methods and apparatus for list transfers using DMA transfers in a multi-processor system
US7386687B2 (en) * 2005-01-07 2008-06-10 Sony Computer Entertainment Inc. Methods and apparatus for managing a shared memory in a multi-processor system
US20060155955A1 (en) * 2005-01-10 2006-07-13 Gschwind Michael K SIMD-RISC processor module
US7644255B2 (en) * 2005-01-13 2010-01-05 Sony Computer Entertainment Inc. Method and apparatus for enable/disable control of SIMD processor slices
US20060177122A1 (en) * 2005-02-07 2006-08-10 Sony Computer Entertainment Inc. Method and apparatus for particle manipulation using graphics processing
US20060179436A1 (en) * 2005-02-07 2006-08-10 Sony Computer Entertainment Inc. Methods and apparatus for providing a task change application programming interface
JP4606339B2 (ja) * 2005-02-07 2011-01-05 株式会社ソニー・コンピュータエンタテインメント セキュアなプロセッサの処理の移行を実施する方法および装置
JP4489030B2 (ja) * 2005-02-07 2010-06-23 株式会社ソニー・コンピュータエンタテインメント プロセッサ内にセキュアな起動シーケンスを提供する方法および装置
JP4601557B2 (ja) * 2005-02-07 2010-12-22 株式会社ソニー・コンピュータエンタテインメント マルチプロセッサシステムにおいてプロセッサのセキュアな連携を行う方法および装置
JP4522372B2 (ja) * 2005-02-07 2010-08-11 株式会社ソニー・コンピュータエンタテインメント プロセッサと外部のデバイスとの間にセキュアセッションを実現する方法および装置
US7613886B2 (en) * 2005-02-08 2009-11-03 Sony Computer Entertainment Inc. Methods and apparatus for synchronizing data access to a local memory in a multi-processor system
US7818724B2 (en) * 2005-02-08 2010-10-19 Sony Computer Entertainment Inc. Methods and apparatus for instruction set emulation
US7774512B2 (en) 2005-02-08 2010-08-10 Sony Computer Entertainment Inc. Methods and apparatus for hybrid DMA queue and DMA table
US20060179275A1 (en) * 2005-02-08 2006-08-10 Takeshi Yamazaki Methods and apparatus for processing instructions in a multi-processor system
US7467204B2 (en) * 2005-02-10 2008-12-16 International Business Machines Corporation Method for providing low-level hardware access to in-band and out-of-band firmware
US7418541B2 (en) * 2005-02-10 2008-08-26 International Business Machines Corporation Method for indirect access to a support interface for memory-mapped resources to reduce system connectivity from out-of-band support processor
US20060184296A1 (en) * 2005-02-17 2006-08-17 Hunter Engineering Company Machine vision vehicle wheel alignment systems
US7685601B2 (en) * 2005-02-28 2010-03-23 Sony Computer Entertainment Inc. Methods and apparatus for segmented stack management in a processor system
US7395411B2 (en) * 2005-03-14 2008-07-01 Sony Computer Entertainment Inc. Methods and apparatus for improving processing performance by controlling latch points
US20060206732A1 (en) * 2005-03-14 2006-09-14 Sony Computer Entertainment Inc. Methods and apparatus for improving processing performance using instruction dependency check depth
WO2006099630A1 (en) * 2005-03-17 2006-09-21 Lubrizol Advanced Materials, Inc. Nanoparticle/vinyl polymer composites
US7689784B2 (en) * 2005-03-18 2010-03-30 Sony Computer Entertainment Inc. Methods and apparatus for dynamic linking program overlay
US7451249B2 (en) * 2005-03-21 2008-11-11 Hewlett-Packard Development Company, L.P. Method and apparatus for direct input and output in a virtual machine environment containing a guest operating system
US7818507B2 (en) 2005-04-04 2010-10-19 Sony Computer Entertainment Inc. Methods and apparatus for facilitating coherency management in distributed multi-processor system
US7650266B2 (en) * 2005-05-09 2010-01-19 Nvidia Corporation Method of simulating deformable object using geometrically motivated model
US7409570B2 (en) * 2005-05-10 2008-08-05 Sony Computer Entertainment Inc. Multiprocessor system for decrypting and resuming execution of an executing program after transferring the program code between two processors via a shared main memory upon occurrence of predetermined condition
US20060259733A1 (en) * 2005-05-13 2006-11-16 Sony Computer Entertainment Inc. Methods and apparatus for resource management in a logically partitioned processing environment
US7444525B2 (en) * 2005-05-25 2008-10-28 Sony Computer Entertainment Inc. Methods and apparatus for reducing leakage current in a disabled SOI circuit
JP5079988B2 (ja) * 2005-06-13 2012-11-21 オリンパス株式会社 分散処理システム、分散処理方法及びプログラム
US8037474B2 (en) * 2005-09-27 2011-10-11 Sony Computer Entertainment Inc. Task manager with stored task definition having pointer to a memory address containing required code data related to the task for execution
US7522168B2 (en) * 2005-09-27 2009-04-21 Sony Computer Entertainment Inc. Cell processor task and data management
US7398482B2 (en) * 2005-07-28 2008-07-08 International Business Machines Corporation Modular design method and apparatus
US20070083870A1 (en) * 2005-07-29 2007-04-12 Tomochika Kanakogi Methods and apparatus for task sharing among a plurality of processors
JP4536618B2 (ja) * 2005-08-02 2010-09-01 富士通セミコンダクター株式会社 リコンフィグ可能な集積回路装置
US7659898B2 (en) * 2005-08-08 2010-02-09 Via Technologies, Inc. Multi-execution resource graphics processor
US7659899B2 (en) * 2005-08-08 2010-02-09 Via Technologies, Inc. System and method to manage data processing stages of a logical graphics pipeline
US20070030280A1 (en) * 2005-08-08 2007-02-08 Via Technologies, Inc. Global spreader and method for a parallel graphics processor
US20070030277A1 (en) * 2005-08-08 2007-02-08 Via Technologies, Inc. Method for processing vertex, triangle, and pixel graphics data packets
US7778271B2 (en) 2005-08-19 2010-08-17 International Business Machines Corporation Method for communicating instructions and data between a processor and external devices
US7386636B2 (en) * 2005-08-19 2008-06-10 International Business Machines Corporation System and method for communicating command parameters between a processor and a memory flow controller
US7500039B2 (en) 2005-08-19 2009-03-03 International Business Machines Corporation Method for communicating with a processor event facility
US8141076B2 (en) * 2005-09-27 2012-03-20 Sony Computer Entertainment Inc. Cell processor methods and apparatus
US7506123B1 (en) * 2005-09-27 2009-03-17 Sony Computer Entertainment Inc. Method and system for performing memory copy function on a cell processor
US7734827B2 (en) * 2005-09-27 2010-06-08 Sony Computer Entertainment, Inc. Operation of cell processors
US8316220B2 (en) * 2005-09-27 2012-11-20 Sony Computer Entertainment Inc. Operating processors over a network
US7975269B2 (en) * 2005-09-27 2011-07-05 Sony Computer Entertainment Inc. Parallel processor methods and apparatus
US7644198B2 (en) * 2005-10-07 2010-01-05 International Business Machines Corporation DMAC translation mechanism
KR100866951B1 (ko) * 2005-10-28 2008-11-05 삼성전자주식회사 메모리에 저장된 데이터를 보호할 수 있는 프로그래머블프로세서 및 방법
US8595747B2 (en) * 2005-12-29 2013-11-26 Sony Computer Entertainment Inc. Efficient task scheduling by assigning fixed registers to scheduler
US20070174411A1 (en) * 2006-01-26 2007-07-26 Brokenshire Daniel A Apparatus and method for efficient communication of producer/consumer buffer status
US7814166B2 (en) * 2006-01-27 2010-10-12 Sony Computer Entertainment Inc. Methods and apparatus for virtualizing an address space
US7768287B2 (en) 2006-01-27 2010-08-03 Sony Computer Enterainment Inc. Methods and apparatus for managing defective processors through power gating
US20070234385A1 (en) * 2006-03-31 2007-10-04 Rajendra Bopardikar Cross-layer video quality manager
EP1903443B1 (en) * 2006-04-06 2011-07-13 Sony Corporation Bridge, processor unit, information processing apparatus and access control method
US7886112B2 (en) * 2006-05-24 2011-02-08 Sony Computer Entertainment Inc. Methods and apparatus for providing simultaneous software/hardware cache fill
US8082289B2 (en) 2006-06-13 2011-12-20 Advanced Cluster Systems, Inc. Cluster computing support for application programs
US20090293072A1 (en) * 2006-07-21 2009-11-26 Sony Service Centre (Europe) N.V. System having plurality of hardware blocks and method of operating the same
US7676683B2 (en) * 2006-08-24 2010-03-09 Sony Computer Entertainment Inc. Method and system for rebooting a processor in a multi-processor system
US8788080B1 (en) 2006-09-12 2014-07-22 Sonos, Inc. Multi-channel pairing in a media system
US8483853B1 (en) 2006-09-12 2013-07-09 Sonos, Inc. Controlling and manipulating groupings in a multi-zone media system
US9202509B2 (en) 2006-09-12 2015-12-01 Sonos, Inc. Controlling and grouping in a multi-zone media system
US12167216B2 (en) 2006-09-12 2024-12-10 Sonos, Inc. Playback device pairing
US20080229143A1 (en) * 2006-09-21 2008-09-18 Sony Computer Entertainment Inc. Management of available circuits to repair defective circuits
US7917667B2 (en) * 2006-09-22 2011-03-29 Sony Computer Entertainment Inc. Methods and apparatus for allocating DMA activity between a plurality of entities
US7882379B2 (en) 2006-09-22 2011-02-01 Sony Computer Entertainment Inc. Power consumption reduction in a multiprocessor system
US7546405B2 (en) * 2006-09-26 2009-06-09 Sony Computer Entertainment Inc. Methods and apparatus for dynamic grouping of requestors of resources in a multi-processor system
US20080091886A1 (en) * 2006-10-17 2008-04-17 Sony Computer Entertainment Inc. Dynamic Path Determination To An Address Concentrator
US7693053B2 (en) * 2006-11-15 2010-04-06 Sony Computer Entertainment Inc. Methods and apparatus for dynamic redistribution of tokens in a multi-processor system
JP5079342B2 (ja) * 2007-01-22 2012-11-21 ルネサスエレクトロニクス株式会社 マルチプロセッサ装置
US8856782B2 (en) 2007-03-01 2014-10-07 George Mason Research Foundation, Inc. On-demand disposable virtual work system
US8726041B2 (en) * 2007-05-09 2014-05-13 Sony Corporation Methods and apparatus for generating a random number in one or more isolated processors
US7788467B2 (en) 2007-05-09 2010-08-31 Sony Computer Entertainment Inc. Methods and apparatus for latency control in a multiprocessor system
US8001390B2 (en) * 2007-05-09 2011-08-16 Sony Computer Entertainment Inc. Methods and apparatus for secure programming and storage of data using a multiprocessor in a trusted mode
US8001592B2 (en) 2007-05-09 2011-08-16 Sony Computer Entertainment Inc. Methods and apparatus for accessing resources using a multiprocessor in a trusted mode
US7958371B2 (en) * 2007-05-09 2011-06-07 Sony Computer Entertainment Inc. Methods and apparatus for secure operating system distribution in a multiprocessor system
EP2026147A1 (de) * 2007-08-13 2009-02-18 Siemens Aktiengesellschaft Verfahren zum Übermitteln von Telegrammen zwischen einer Steuereinrichtung und einem Peripherieelement über ein Zwischengerät
CN101855606B (zh) * 2007-11-13 2012-08-29 惠普开发有限公司 从功率管理状态启动应用程序
US20100037020A1 (en) * 2008-08-07 2010-02-11 Seagate Technology Llc Pipelined memory access method and architecture therefore
US20100058016A1 (en) * 2008-08-26 2010-03-04 Jari Nikara Method, apparatus and software product for multi-channel memory sandbox
US9098698B2 (en) 2008-09-12 2015-08-04 George Mason Research Foundation, Inc. Methods and apparatus for application isolation
US9961388B2 (en) 2008-11-26 2018-05-01 David Harrison Exposure of public internet protocol addresses in an advertising exchange server to improve relevancy of advertisements
US10631068B2 (en) 2008-11-26 2020-04-21 Free Stream Media Corp. Content exposure attribution based on renderings of related content across multiple devices
US10419541B2 (en) 2008-11-26 2019-09-17 Free Stream Media Corp. Remotely control devices over a network without authentication or registration
US10880340B2 (en) 2008-11-26 2020-12-29 Free Stream Media Corp. Relevancy improvement through targeting of information based on data gathered from a networked device associated with a security sandbox of a client device
US10567823B2 (en) 2008-11-26 2020-02-18 Free Stream Media Corp. Relevant advertisement generation based on a user operating a client device communicatively coupled with a networked media device
US9154942B2 (en) 2008-11-26 2015-10-06 Free Stream Media Corp. Zero configuration communication between a browser and a networked media device
US9519772B2 (en) 2008-11-26 2016-12-13 Free Stream Media Corp. Relevancy improvement through targeting of information based on data gathered from a networked device associated with a security sandbox of a client device
US9986279B2 (en) 2008-11-26 2018-05-29 Free Stream Media Corp. Discovery, access control, and communication with networked services
US9026668B2 (en) 2012-05-26 2015-05-05 Free Stream Media Corp. Real-time and retargeted advertising on multiple screens of a user watching television
US8180891B1 (en) 2008-11-26 2012-05-15 Free Stream Media Corp. Discovery, access control, and communication with networked services from within a security sandbox
US9386356B2 (en) 2008-11-26 2016-07-05 Free Stream Media Corp. Targeting with television audience data across multiple screens
US10334324B2 (en) 2008-11-26 2019-06-25 Free Stream Media Corp. Relevant advertisement generation based on a user operating a client device communicatively coupled with a networked media device
US10977693B2 (en) 2008-11-26 2021-04-13 Free Stream Media Corp. Association of content identifier of audio-visual data with additional data through capture infrastructure
US8555089B2 (en) * 2009-01-08 2013-10-08 Panasonic Corporation Program execution apparatus, control method, control program, and integrated circuit
US8839422B2 (en) 2009-06-30 2014-09-16 George Mason Research Foundation, Inc. Virtual browsing environment
US8225061B2 (en) * 2009-07-02 2012-07-17 Apple Inc. Method and apparatus for protected content data processing
US9779057B2 (en) 2009-09-11 2017-10-03 Micron Technology, Inc. Autonomous memory architecture
US9015440B2 (en) 2009-09-11 2015-04-21 Micron Technology, Inc. Autonomous memory subsystem architecture
US9582462B2 (en) 2010-07-30 2017-02-28 Hewlett Packard Enterprise Development Lp Computer system and method for sharing computer memory
US20140013129A1 (en) 2012-07-09 2014-01-09 L. Pierre de Rochemont Hybrid computing module
US11265652B2 (en) 2011-01-25 2022-03-01 Sonos, Inc. Playback device pairing
US11429343B2 (en) 2011-01-25 2022-08-30 Sonos, Inc. Stereo playback configuration and control
WO2013082437A1 (en) 2011-12-02 2013-06-06 Invincia, Inc. Methods and apparatus for control and detection of malicious content using a sandbox environment
US9344292B2 (en) 2011-12-30 2016-05-17 Sonos, Inc. Systems and methods for player setup room names
TWI483098B (zh) * 2012-02-23 2015-05-01 Acer Inc 電腦系統及其功率分享方法
JP5598493B2 (ja) * 2012-03-30 2014-10-01 富士通株式会社 情報処理装置、演算装置および情報転送方法
US9729115B2 (en) 2012-04-27 2017-08-08 Sonos, Inc. Intelligently increasing the sound level of player
US9008330B2 (en) 2012-09-28 2015-04-14 Sonos, Inc. Crossover frequency adjustments for audio speakers
US9510055B2 (en) 2013-01-23 2016-11-29 Sonos, Inc. System and method for a media experience social interface
CN103150286A (zh) * 2013-03-09 2013-06-12 郏惠忠 一种智能计算机系统
US9307508B2 (en) 2013-04-29 2016-04-05 Google Technology Holdings LLC Systems and methods for syncronizing multiple electronic devices
CN104375946B (zh) * 2013-08-16 2018-04-20 华为技术有限公司 一种数据处理的方法及装置
US9288596B2 (en) 2013-09-30 2016-03-15 Sonos, Inc. Coordinator device for paired or consolidated players
US20150095679A1 (en) 2013-09-30 2015-04-02 Sonos, Inc. Transitioning A Networked Playback Device Between Operating Modes
US9720576B2 (en) 2013-09-30 2017-08-01 Sonos, Inc. Controlling and displaying zones in a multi-zone system
US9654545B2 (en) 2013-09-30 2017-05-16 Sonos, Inc. Group coordinator device selection
US10003675B2 (en) 2013-12-02 2018-06-19 Micron Technology, Inc. Packet processor receiving packets containing instructions, data, and starting location and generating packets containing instructions and data
US9300647B2 (en) 2014-01-15 2016-03-29 Sonos, Inc. Software application and zones
US9313591B2 (en) 2014-01-27 2016-04-12 Sonos, Inc. Audio synchronization among playback devices using offset information
US20150220498A1 (en) 2014-02-05 2015-08-06 Sonos, Inc. Remote Creation of a Playback Queue for a Future Event
US9226073B2 (en) 2014-02-06 2015-12-29 Sonos, Inc. Audio output balancing during synchronized playback
US9226087B2 (en) 2014-02-06 2015-12-29 Sonos, Inc. Audio output balancing during synchronized playback
US9679054B2 (en) 2014-03-05 2017-06-13 Sonos, Inc. Webpage media playback
US10587693B2 (en) 2014-04-01 2020-03-10 Sonos, Inc. Mirrored queues
US20150324552A1 (en) 2014-05-12 2015-11-12 Sonos, Inc. Share Restriction for Media Items
US20150356084A1 (en) 2014-06-05 2015-12-10 Sonos, Inc. Social Queue
US9874997B2 (en) 2014-08-08 2018-01-23 Sonos, Inc. Social playback queues
EP3114852A1 (en) 2014-09-24 2017-01-11 Sonos Inc. Social media queue
US9723038B2 (en) 2014-09-24 2017-08-01 Sonos, Inc. Social media connection recommendations based on playback information
US9860286B2 (en) 2014-09-24 2018-01-02 Sonos, Inc. Associating a captured image with a media item
US9667679B2 (en) 2014-09-24 2017-05-30 Sonos, Inc. Indicating an association between a social-media account and a media playback system
US9959087B2 (en) 2014-09-24 2018-05-01 Sonos, Inc. Media item context from social media
US10645130B2 (en) 2014-09-24 2020-05-05 Sonos, Inc. Playback updates
EP3114625A1 (en) 2014-09-24 2017-01-11 Sonos, Inc. Social media connection recommendations based on playback information
US9690540B2 (en) 2014-09-24 2017-06-27 Sonos, Inc. Social media queue
US10868880B2 (en) 2015-04-30 2020-12-15 V2Com S.A. Control system with persistent and transient data stores for registration, production and status data for networked devices
US10761900B1 (en) * 2015-04-30 2020-09-01 V2Com S.A. System and method for secure distributed processing across networks of heterogeneous processing nodes
US10248376B2 (en) 2015-06-11 2019-04-02 Sonos, Inc. Multiple groupings in a playback system
US10303422B1 (en) 2016-01-05 2019-05-28 Sonos, Inc. Multiple-device setup
US9886234B2 (en) 2016-01-28 2018-02-06 Sonos, Inc. Systems and methods of distributing audio to one or more playback devices
US10303488B2 (en) 2016-03-30 2019-05-28 Sony Interactive Entertainment Inc. Real-time adjustment of application-specific operating parameters for backwards compatibility
US10712997B2 (en) 2016-10-17 2020-07-14 Sonos, Inc. Room association based on name
JP2018156289A (ja) * 2017-03-16 2018-10-04 東芝メモリ株式会社 共有メモリコントローラ、共有メモリモジュールおよびメモリ共有システム
US10635602B2 (en) 2017-11-14 2020-04-28 International Business Machines Corporation Address translation prior to receiving a storage reference using the address to be translated
US10901738B2 (en) 2017-11-14 2021-01-26 International Business Machines Corporation Bulk store and load operations of configuration state registers
US10761751B2 (en) 2017-11-14 2020-09-01 International Business Machines Corporation Configuration state registers grouped based on functional affinity
US10698686B2 (en) 2017-11-14 2020-06-30 International Business Machines Corporation Configurable architectural placement control
US10642757B2 (en) 2017-11-14 2020-05-05 International Business Machines Corporation Single call to perform pin and unpin operations
US10496437B2 (en) 2017-11-14 2019-12-03 International Business Machines Corporation Context switch by changing memory pointers
US10664181B2 (en) 2017-11-14 2020-05-26 International Business Machines Corporation Protecting in-memory configuration state registers
US10558366B2 (en) 2017-11-14 2020-02-11 International Business Machines Corporation Automatic pinning of units of memory
US10761983B2 (en) 2017-11-14 2020-09-01 International Business Machines Corporation Memory based configuration state registers
US10592164B2 (en) 2017-11-14 2020-03-17 International Business Machines Corporation Portions of configuration state registers in-memory
US10552070B2 (en) 2017-11-14 2020-02-04 International Business Machines Corporation Separation of memory-based configuration state registers based on groups
CN109472133B (zh) * 2017-12-01 2021-09-28 北京安天网络安全技术有限公司 一种沙箱监控方法和装置
BR112020017898A2 (pt) * 2018-03-01 2020-12-22 V2Com S.A. Sistema e método para processamento distribuído seguro através de redes de nós de processamento heterogêneo
US11121302B2 (en) 2018-10-11 2021-09-14 SeeQC, Inc. System and method for superconducting multi-chip module
US12549945B2 (en) 2020-09-25 2026-02-10 Sonos, Inc. Intelligent setup for playback devices
US12536041B2 (en) 2022-05-16 2026-01-27 Bank Of America Corporation System and method for determining memory resource configuration for network nodes to operate in a distributed computing network

Family Cites Families (155)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3576544A (en) 1968-10-18 1971-04-27 Ibm Storage protection system
US4037214A (en) 1976-04-30 1977-07-19 International Business Machines Corporation Key register controlled accessing system
JPS5412643A (en) 1977-06-30 1979-01-30 Hitachi Ltd Main memory protective device
JPS54146555A (en) 1978-05-09 1979-11-15 Nec Corp Data transfer system between processors
US4314349A (en) 1979-12-31 1982-02-02 Goodyear Aerospace Corporation Processing element for parallel array processors
US4332009A (en) 1980-01-21 1982-05-25 Mostek Corporation Memory protection system
JPS5812613B2 (ja) 1980-02-08 1983-03-09 工業技術院長 並列デ−タ処理装置
JPS5835295B2 (ja) 1980-03-03 1983-08-02 オムロン株式会社 マスタ・スレ−ブ・システムにおけるデ−タ転送方式
US4430705A (en) 1980-05-23 1984-02-07 International Business Machines Corp. Authorization mechanism for establishing addressability to information in another address space
JPS576952A (en) 1980-06-16 1982-01-13 Nippon Telegr & Teleph Corp <Ntt> Storage protecting system
US4414624A (en) * 1980-11-19 1983-11-08 The United States Of America As Represented By The Secretary Of The Navy Multiple-microcomputer processing
JPS57176456A (en) * 1981-04-22 1982-10-29 Fanuc Ltd Data processing system
DE3171379D1 (en) 1981-04-28 1985-08-22 Ibm Bus arrangement for interconnectiong circuit chips
JPS5877404A (ja) 1981-10-28 1983-05-10 Heian Tekkosho:Kk ハニカムの薄切削方法
AU542447B2 (en) 1982-02-27 1985-02-21 Fujitsu Limited System for controlling key storage unit
JPS5958700A (ja) 1982-09-29 1984-04-04 Fujitsu Ltd 記憶保護判定方式
US4545016A (en) 1983-01-07 1985-10-01 Tandy Corporation Memory management system
US4622631B1 (en) * 1983-12-30 1996-04-09 Recognition Int Inc Data processing system having a data coherence solution
US5159700A (en) 1984-01-16 1992-10-27 Texas Instruments Incorporated Substrate with optical communication systems between chips mounted thereon and monolithic integration of optical I/O on silicon substrates
JPS60151903A (ja) 1984-01-19 1985-08-10 タツタ電線株式会社 水密絶縁電線およびその製造方法
JPS61180352A (ja) 1984-12-30 1986-08-13 Fujitsu Ltd プログラムダウンロ−ド方式
US4732446A (en) 1985-10-02 1988-03-22 Lamar Gipson Electrical circuit and optical data buss
CA1280829C (en) * 1985-11-13 1991-02-26 Toshio Matsumoto Main storage access control system for virtual computing function system
JPS6319058A (ja) 1986-07-11 1988-01-26 Fujitsu Ltd メモリ装置
JPS6241986A (ja) 1986-08-29 1987-02-23 Hitachi Ltd オイルフリースクリユー圧縮機結合体
JPS6365222A (ja) 1986-09-03 1988-03-23 Tokyo Tatsuno Co Ltd 触媒燃焼装置
US4816989A (en) * 1987-04-15 1989-03-28 Allied-Signal Inc. Synchronizer for a fault tolerant multiple node processing system
JP2960415B2 (ja) 1987-05-22 1999-10-06 株式会社日立製作所 記憶保護方法および装置
JPS6412364A (en) 1987-07-06 1989-01-17 Nippon Telegraph & Telephone System constitution control system
JPS6412364U (es) 1987-07-11 1989-01-23
JPS6423342A (en) 1987-07-20 1989-01-26 Mitsubishi Electric Corp Programmable controller
JPH0719704Y2 (ja) 1987-07-31 1995-05-10 シャープ株式会社 生産ラインの生産管理装置
JPH0612333Y2 (ja) 1987-12-28 1994-03-30 株式会社ゼクセル 車両用熱焼式ヒータの燃焼器
JP2677589B2 (ja) 1988-02-26 1997-11-17 株式会社東芝 携帯可能電子装置およびicチップ
US5056000A (en) 1988-06-21 1991-10-08 International Parallel Machines, Inc. Synchronized parallel processing with shared memory
JPH0212361A (ja) 1988-06-29 1990-01-17 Fujitsu Ltd 階層化バスによる並列計算機システム
US4939682A (en) 1988-07-15 1990-07-03 The Boeing Company Integrated electro-optic arithmetic/logic unit and method for making the same
JP2837413B2 (ja) 1988-08-24 1998-12-16 株式会社日立メディコ 複数端末cpuを有するct装置
EP0369052A1 (en) * 1988-11-17 1990-05-23 International Business Machines Corporation Data base access system
JPH02210542A (ja) 1989-02-10 1990-08-21 Fujitsu Ltd 仮想計算機システムにおける実行制御方式
EP0424618A3 (en) 1989-10-24 1992-11-19 International Business Machines Corporation Input/output system
US5037173A (en) 1989-11-22 1991-08-06 Texas Instruments Incorporated Optical interconnection network
AU645785B2 (en) 1990-01-05 1994-01-27 Maspar Computer Corporation Parallel processor memory system
US5357632A (en) 1990-01-09 1994-10-18 Hughes Aircraft Company Dynamic task allocation in a multi-processor system employing distributed control processors and distributed arithmetic processors
DE69130086T2 (de) 1990-06-15 1999-01-21 Compaq Computer Corp., Houston, Tex. 77070 Mehrstufeneinschluss in mehrstufigen Cache-Speicherhierarchien
US5093879A (en) 1990-06-22 1992-03-03 International Business Machines Corporation Electro-optical connectors
US5144691A (en) 1990-07-20 1992-09-01 Cray Research, Inc. Computer signal interconnect apparatus
US5303369A (en) 1990-08-31 1994-04-12 Texas Instruments Incorporated Scheduling system for multiprocessor operating system
EP0481735A3 (en) 1990-10-19 1993-01-13 Array Technology Corporation Address protection circuit
US5630162A (en) 1990-11-13 1997-05-13 International Business Machines Corporation Array processor dotted communication network based on H-DOTs
US5590345A (en) * 1990-11-13 1996-12-31 International Business Machines Corporation Advanced parallel array processor(APAP)
KR940004404B1 (ko) 1990-11-30 1994-05-25 삼성전자 주식회사 불휘발성 반도체 메모리장치
US5131054A (en) 1991-01-09 1992-07-14 Thinking Machines Corporation Character recognition system using massively parallel computer that identifies a query character using degree of similarity with plurality of training characters of known identity
JPH04284754A (ja) 1991-03-14 1992-10-09 Fujitsu Ltd Atm交換装置
JPH04288643A (ja) 1991-03-18 1992-10-13 Nec Corp マルチプロセッサシステムのメモリマッピング方式
US5519875A (en) 1991-08-08 1996-05-21 Hitachi, Ltd. Distributed processing system for modules, each having modularized objects
US5404563A (en) 1991-08-28 1995-04-04 International Business Machines Corporation Scheduling normally interchangeable facilities in multiprocessor computer systems
JPH0554009A (ja) 1991-08-29 1993-03-05 Nec Eng Ltd プログラムロード方式
US5361370A (en) 1991-10-24 1994-11-01 Intel Corporation Single-instruction multiple-data processor having dual-ported local memory architecture for simultaneous data transmission on local memory ports and global port
JP3364937B2 (ja) 1991-11-29 2003-01-08 株式会社日立製作所 並列演算装置
US5268973A (en) 1992-01-21 1993-12-07 The University Of Texas System Wafer-scale optical bus
JPH05242057A (ja) 1992-02-27 1993-09-21 Sanyo Electric Co Ltd マルチプロセッサシステムの起動方式
JPH05324589A (ja) 1992-03-25 1993-12-07 Nippon Sheet Glass Co Ltd 並列コンピュータ装置および光結合装置
JPH0612333A (ja) 1992-06-25 1994-01-21 Hitachi Ltd 情報処理装置の記憶保護方式
US5394524A (en) * 1992-08-07 1995-02-28 International Business Machines Corporation Method and apparatus for processing two graphics data streams in parallel
EP0610583A1 (en) * 1993-02-08 1994-08-17 International Business Machines Corporation Multizone relocation facility computer memory system
US5619671A (en) 1993-04-19 1997-04-08 International Business Machines Corporation Method and apparatus for providing token controlled access to protected pages of memory
US5487146A (en) 1994-03-08 1996-01-23 Texas Instruments Incorporated Plural memory access address generation employing guide table entries forming linked list
US5815403A (en) 1994-04-19 1998-09-29 Lsi Logic Corporation Fail-safe distributive processing method for producing a highest fitness cell placement for an integrated circuit chip
JPH07287064A (ja) 1994-04-20 1995-10-31 Mitsubishi Electric Corp レーダ信号処理装置
US5513337A (en) 1994-05-25 1996-04-30 Intel Corporation System for protecting unauthorized memory accesses by comparing base memory address with mask bits and having attribute bits for identifying access operational mode and type
JPH08161283A (ja) 1994-12-07 1996-06-21 Sony Corp 複数プロセツサシステム
US5754436A (en) 1994-12-22 1998-05-19 Texas Instruments Incorporated Adaptive power management processes, circuits and systems
JPH08180018A (ja) 1994-12-26 1996-07-12 Toshiba Corp 分散処理システム及び分散処理方法
JPH08212178A (ja) 1995-02-08 1996-08-20 Hitachi Ltd 並列計算機
CA2170468A1 (en) 1995-02-28 1996-08-29 Noriyuki Ando Multi-processor system with virtually addressable communication registers and controlling method thereof
JP2731742B2 (ja) 1995-02-28 1998-03-25 甲府日本電気株式会社 クラスタ構成の並列計算機
JPH08249261A (ja) 1995-03-08 1996-09-27 Mitsubishi Electric Corp メッセージ管理システム
DE19508723A1 (de) 1995-03-10 1996-09-12 Siemens Ag Mehrbenutzerdatenverarbeitungsanlage mit Speicherschutz
US5850534A (en) 1995-06-05 1998-12-15 Advanced Micro Devices, Inc. Method and apparatus for reducing cache snooping overhead in a multilevel cache system
US6331856B1 (en) * 1995-11-22 2001-12-18 Nintendo Co., Ltd. Video game system with coprocessor providing high speed efficient 3D graphics and digital audio signal processing
JP3786993B2 (ja) 1995-12-14 2006-06-21 株式会社日立製作所 データ記憶ユニット及び該ユニットを用いたデータ記憶装置
US6886167B1 (en) 1995-12-27 2005-04-26 International Business Machines Corporation Method and system for migrating an object between a split status and a merged status
JPH09198361A (ja) 1996-01-23 1997-07-31 Kofu Nippon Denki Kk マルチプロセッサシステム
US5729712A (en) 1996-01-26 1998-03-17 Unisys Corporation Smart fill system for multiple cache network
US5761516A (en) * 1996-05-03 1998-06-02 Lsi Logic Corporation Single chip multiprocessor architecture with internal task switching synchronization bus
JPH09311839A (ja) 1996-05-21 1997-12-02 Hitachi Ltd データ共用方式
US5940870A (en) 1996-05-21 1999-08-17 Industrial Technology Research Institute Address translation for shared-memory multiprocessor clustering
US5724551A (en) * 1996-05-23 1998-03-03 International Business Machines Corporation Method for managing I/O buffers in shared storage by structuring buffer table having entries include storage keys for controlling accesses to the buffers
US5787309A (en) * 1996-05-23 1998-07-28 International Business Machines Corporation Apparatus for protecting storage blocks from being accessed by unwanted I/O programs using I/O program keys and I/O storage keys having M number of bits
US5900019A (en) 1996-05-23 1999-05-04 International Business Machines Corporation Apparatus for protecting memory storage blocks from I/O accesses
US5740409A (en) 1996-07-01 1998-04-14 Sun Microsystems, Inc. Command processor for a three-dimensional graphics accelerator which includes geometry decompression capabilities
AT1751U1 (de) 1996-09-30 1997-10-27 Kuehn Eva Koordinations-system
JPH10126771A (ja) 1996-10-15 1998-05-15 Toshiba Corp 画像データ転送システムにおける画像データ送出レート制御方法および画像データ転送方法
JP3421526B2 (ja) 1997-02-14 2003-06-30 モトローラ株式会社 デ−タ処理装置
US6192514B1 (en) 1997-02-19 2001-02-20 Unisys Corporation Multicomputer system
US6424988B2 (en) 1997-02-19 2002-07-23 Unisys Corporation Multicomputer system
US6289434B1 (en) 1997-02-28 2001-09-11 Cognigine Corporation Apparatus and method of implementing systems on silicon using dynamic-adaptive run-time reconfigurable circuits for processing multiple, independent data and control streams of varying rates
JP3739888B2 (ja) 1997-03-27 2006-01-25 株式会社ソニー・コンピュータエンタテインメント 情報処理装置および方法
JP3681026B2 (ja) * 1997-03-27 2005-08-10 株式会社ソニー・コンピュータエンタテインメント 情報処理装置および方法
US6212605B1 (en) 1997-03-31 2001-04-03 International Business Machines Corporation Eviction override for larx-reserved addresses
JPH1139215A (ja) 1997-05-22 1999-02-12 Matsushita Electric Ind Co Ltd キャッシュメモリおよびキャッシュメモリを制御する方法
JPH10340165A (ja) * 1997-06-09 1998-12-22 Canon Inc 情報処理装置及びその方法並びにメモリ媒体
US6457012B1 (en) * 1997-06-10 2002-09-24 Pitney Bowes Inc. Method and system of updating address records utilizing a clientserver interface
JP3490256B2 (ja) 1997-06-12 2004-01-26 三菱電機株式会社 エージェント方式
US5892966A (en) 1997-06-27 1999-04-06 Sun Microsystems, Inc. Processor complex for executing multimedia functions
US6360303B1 (en) * 1997-09-30 2002-03-19 Compaq Computer Corporation Partitioning memory shared by multiple processors of a distributed processing system
US6567839B1 (en) 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
US6209065B1 (en) 1997-10-24 2001-03-27 Compaq Computer Corporation Mechanism for optimizing generation of commit-signals in a distributed shared-memory system
US6002409A (en) * 1997-10-29 1999-12-14 Cirrus Logic, Inc. Arbitration for shared graphics processing resources
US6542926B2 (en) * 1998-06-10 2003-04-01 Compaq Information Technologies Group, L.P. Software partitioned multi-processor system with flexible resource sharing levels
US6965974B1 (en) * 1997-11-14 2005-11-15 Agere Systems Inc. Dynamic partitioning of memory banks among multiple agents
US6173389B1 (en) 1997-12-04 2001-01-09 Billions Of Operations Per Second, Inc. Methods and apparatus for dynamic very long instruction word sub-instruction selection for execution time parallelism in an indirect very long instruction word processor
JPH11232247A (ja) 1998-02-10 1999-08-27 Hitachi Ltd データフロー計算機およびデータフロー制御方法
US6167430A (en) 1998-05-12 2000-12-26 Unisys Corporation Multicomputer with distributed directory and operating system
JPH11338833A (ja) 1998-05-22 1999-12-10 Hitachi Ltd マルチプロセッサ型コントローラ及びスケーラブルコントローラシステム
US6336187B1 (en) * 1998-06-12 2002-01-01 International Business Machines Corp. Storage system with data-dependent security
US6209066B1 (en) * 1998-06-30 2001-03-27 Sun Microsystems, Inc. Method and apparatus for memory allocation in a multi-threaded virtual machine
JP3224782B2 (ja) 1998-08-03 2001-11-05 インターナショナル・ビジネス・マシーンズ・コーポレーション 処理分担動的変更方法及びコンピュータ
US6141762A (en) * 1998-08-03 2000-10-31 Nicol; Christopher J. Power reduction in a multiprocessor digital signal processor based on processor load
JP2000132529A (ja) 1998-10-23 2000-05-12 Sony Corp 並列処理装置、並列処理方法および記録媒体
US6643708B1 (en) 1998-10-29 2003-11-04 International Business Machines Corporation Systems, methods and computer program products for chaining Java servlets across networks
US6633563B1 (en) * 1999-03-02 2003-10-14 Nortel Networks Limited Assigning cell data to one of several processors provided in a data switch
JP3790060B2 (ja) 1999-01-29 2006-06-28 株式会社山武 演算処理装置
US6341338B1 (en) * 1999-02-04 2002-01-22 Sun Microsystems, Inc. Protocol for coordinating the distribution of shared memory
JP4123621B2 (ja) * 1999-02-16 2008-07-23 株式会社日立製作所 主記憶共有型マルチプロセッサシステム及びその共有領域設定方法
US6480941B1 (en) * 1999-02-23 2002-11-12 International Business Machines Corporation Secure partitioning of shared memory based multiprocessor system
US6753878B1 (en) 1999-03-08 2004-06-22 Hewlett-Packard Development Company, L.P. Parallel pipelined merge engines
US6647208B1 (en) 1999-03-18 2003-11-11 Massachusetts Institute Of Technology Hybrid electronic/optical switch system
US6477170B1 (en) 1999-05-21 2002-11-05 Advanced Micro Devices, Inc. Method and apparatus for interfacing between systems operating under different clock regimes with interlocking to prevent overwriting of data
EP1065592B1 (en) 1999-06-25 2008-07-23 Canon Research Centre France S.A. Shared management of data objects in a communication network
US6467012B1 (en) 1999-07-08 2002-10-15 International Business Machines Corporation Method and apparatus using a distributed system structure to support bus-based cache-coherence protocols for symmetric multiprocessors
US6668317B1 (en) 1999-08-31 2003-12-23 Intel Corporation Microengine for parallel processor architecture
US6577311B1 (en) * 1999-12-16 2003-06-10 Picture Iq Corporation Techniques for automatically providing a high-resolution rendering of a low resolution digital image in a distributed network
US6564328B1 (en) * 1999-12-23 2003-05-13 Intel Corporation Microprocessor with digital power throttle
US6694380B1 (en) 1999-12-27 2004-02-17 Intel Corporation Mapping requests from a processing unit that uses memory-mapped input-output space
JP2001195230A (ja) * 2000-01-14 2001-07-19 Mitsubishi Electric Corp 描画処理システム、及び描画演算を行う半導体集積回路
US6694336B1 (en) 2000-01-25 2004-02-17 Fusionone, Inc. Data transfer and synchronization system
US6807620B1 (en) 2000-02-11 2004-10-19 Sony Computer Entertainment Inc. Game system with graphics processor
US6799207B1 (en) 2000-04-10 2004-09-28 International Business Machines Corporation Method and system for downloading software managed trees in a network processing system
JP4640880B2 (ja) 2000-07-14 2011-03-02 国立大学法人東京工業大学 マイクロプロセッサシステム
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US20030069985A1 (en) 2000-10-02 2003-04-10 Eduardo Perez Computer readable media for storing video data
US6865631B2 (en) * 2000-12-14 2005-03-08 International Business Machines Corporation Reduction of interrupts in remote procedure calls
US6779049B2 (en) * 2000-12-14 2004-08-17 International Business Machines Corporation Symmetric multi-processing system with attached processing units being able to access a shared memory without being structurally configured with an address translation mechanism
US7020871B2 (en) 2000-12-21 2006-03-28 Intel Corporation Breakpoint method for parallel hardware threads in multithreaded processor
US6748501B2 (en) 2000-12-30 2004-06-08 International Business Machines Corporation Microprocessor reservation mechanism for a hashed address system
US6779045B2 (en) 2001-03-21 2004-08-17 Intel Corporation System and apparatus for increasing the number of operations per transmission for a media management system
US6526491B2 (en) 2001-03-22 2003-02-25 Sony Corporation Entertainment Inc. Memory protection system and method for computer architecture for broadband networks
US7233998B2 (en) 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
US6826662B2 (en) 2001-03-22 2004-11-30 Sony Computer Entertainment Inc. System and method for data synchronization for a computer architecture for broadband networks
US7254812B1 (en) 2002-05-31 2007-08-07 Advanced Micro Devices, Inc. Multi-processor task scheduling
JP3673245B2 (ja) 2002-06-28 2005-07-20 株式会社東芝 情報処理装置および同装置における電源制御方法
JP2004103347A (ja) 2002-09-09 2004-04-02 Sumitomo Wiring Syst Ltd コネクタ
US7361220B2 (en) * 2003-03-26 2008-04-22 Matsushita Electric Industrial Co., Ltd. Method of manufacturing group III nitride single crystal, device used for the method and group III nitride single crystal obtained by the method

Also Published As

Publication number Publication date
US7999813B2 (en) 2011-08-16
JP2002342165A (ja) 2002-11-29
JP3454808B2 (ja) 2003-10-06
KR20030086320A (ko) 2003-11-07
KR100890134B1 (ko) 2009-03-20
US20050081213A1 (en) 2005-04-14
US8028288B2 (en) 2011-09-27
US7457939B2 (en) 2008-11-25
EP1370948A1 (en) 2003-12-17
WO2002077826A1 (en) 2002-10-03
US20020138701A1 (en) 2002-09-26
US20110302591A1 (en) 2011-12-08
JP4334901B2 (ja) 2009-09-30
JP2003303134A (ja) 2003-10-24
CN1291327C (zh) 2006-12-20
DE60236416D1 (de) 2010-07-01
US8434091B2 (en) 2013-04-30
US20050081209A1 (en) 2005-04-14
TW556087B (en) 2003-10-01
US20050097302A1 (en) 2005-05-05
US20030229765A1 (en) 2003-12-11
CN1496511A (zh) 2004-05-12
EP1370948B1 (en) 2010-05-19
EP1370948A4 (en) 2007-09-05
US7139882B2 (en) 2006-11-21
US6526491B2 (en) 2003-02-25
US8321866B2 (en) 2012-11-27
US20050078117A1 (en) 2005-04-14

Similar Documents

Publication Publication Date Title
ES2346045T3 (es) Sistema y metodo de control de acceso a memoria compartida para una arquitectura de ordenador para redes de banda ancha.
US6809734B2 (en) Resource dedication system and method for a computer architecture for broadband networks
US7720982B2 (en) Computer architecture and software cells for broadband networks
US7093104B2 (en) Processing modules for computer architecture for broadband networks
US6826662B2 (en) System and method for data synchronization for a computer architecture for broadband networks
US7475257B2 (en) System and method for selecting and using a signal processor in a multiprocessor system to operate as a security for encryption/decryption of data
KR100939398B1 (ko) 광대역 네트워크들을 위한 컴퓨터 아키텍쳐에서의 외부데이터 인터페이스
US20080162877A1 (en) Non-Homogeneous Multi-Processor System With Shared Memory
US20060155955A1 (en) SIMD-RISC processor module