InfiniteReality es una arquitectura de hardware de gráficos 3D y una familia de sistemas de gráficos que implementaron la arquitectura de hardware antes mencionada que fue desarrollada y fabricada por Silicon Graphics entre 1996 a 2005. InfiniteReality se posicionó como el hardware de visualización de gama alta de Silicon Graphics para su plataforma MIPS/IRIX y se usó exclusivamente en su familia de sistemas de visualización Onyx, que a veces se denominan "supercomputadoras gráficas" o "supercomputadoras de visualización". InfiniteReality fue comercializado y utilizado por grandes organizaciones, como empresas y universidades, que participan en la simulación por computadora, la creación de contenido digital, la ingeniería y la investigación.
InfiniteReality InfiniteReality se introdujo a principios de 1996 y se utilizó en el Onyx. Sucedió a RealityEngine, aunque RealityEngine coexistió con InfiniteReality durante algún tiempo para Onyx como una opción de nivel de entrada para configuraciones de "estación de trabajo" de escritorio.
La arquitectura InfiniteReality fue un diseño de tercera generación y se clasifica como una arquitectura intermedia. Fue diseñado para representar escenas complejas en alta calidad a 60 fotogramas por segundo, aproximadamente de dos a cuatro veces el rendimiento del RealityEngine al que reemplazó. Fue diseñado explícitamente para su uso junto con la biblioteca de gráficos OpenGL e implementa la mayor parte de la canalización de OpenGL en hardware.
La implementación se divide en placas de geometría (también conocida como Geometry Engine), memoria de ráster (también conocida como administrador de ráster) y generador de visualización, y cada placa corresponde a cada etapa de las tres etapas principales en la canalización de la arquitectura. El esquema de partición del conjunto de placas es el mismo que el de RealityEngine, como resultado de que Silicon Graphics quiere que RealityEngine sea fácilmente actualizable a InfiniteReality. Cada tubería consta de una placa de Geometry Engine, una, dos o cuatro placas de administrador de ráster y una placa de generador de visualización.John S. Montrym et al. "InfiniteReality: A Real-Time Graphics System". ACM SIGGRAPH.
La implementación comprende doce diseños ASIC fabricados en procesos de 0,5 y 0,35 micrómetros con tres capas de interconexión de metal.John S. Montrym et al. "InfiniteReality: A Real-Time Graphics System". ACM SIGGRAPH. Estos ASIC requieren una fuente de alimentación de 3,3 V. Una canalización de InfiniteReality en una configuración máxima contiene 251 millones de transistores. InfiniteReality fue desarrollado por 55 ingenieros.John Montrym, Brian McClendon. "InfiniteReality Graphics - Power Through Complexity". Advanced Systems Division, Silicon Graphics, Inc.
Dado un sistema lo suficientemente capaz, como ciertos modelos de Onyx2 y Onyx 3000, se pueden alojar hasta 16 canalizaciones de InfiniteReality. Las tuberías se pueden operar en tres modos: multipuesto, multipantalla y multitubería. En el modo multipuesto, cada tubería puede atender hasta ocho usuarios simultáneos, cada uno con sus propias pantallas, teclados y ratones independientes. En el modo de múltiples pantallas, múltiples salidas manejan múltiples pantallas, lo cual es útil para la realidad virtual. El modo multitubería tiene dos métodos de operación: el primer método requiere que se instale una placa secundaria de multiplexor digital (DPLEX) en cada canalización, que combina la salida de múltiples canalizaciones. El segundo método utiliza el software MonsterMode para distribuir los datos utilizados para representar un marco en varias canalizaciones.
Para conectar la tubería al sistema, se utiliza un cable de interfaz de cable plano (FCI) para conectar el ASIC del procesador de interfaz de host en la placa de geometría al Ibus en la placa IO4, una parte del sistema host.
Geometry Engine La placa de geometría (Geometry Engine) es responsable del procesamiento de imágenes y geometría y se divide en cuatro etapas, y cada etapa se implementa mediante dispositivos independientes. La primera etapa es la interfaz de host. Debido a que InfiniteReality se diseñó para dos plataformas muy diferentes, el Onyx tradicional basado en el bus de memoria compartida que usa el bus POWERpath-2 y el Onyx2 basado en la red de memoria compartida distribuida que usa la interconexión NUMAlink2, InfiniteReality tenía que tener una interfaz que pudiera proporcionar un rendimiento similar en ambas plataformas, que tenían una gran diferencia en el ancho de banda entrante (200 MB/s frente a 400 MB/s respectivamente).John S. Montrym et al. "InfiniteReality: A Real-Time Graphics System". ACM SIGGRAPH.
Con este fin, se utiliza un procesador de interfaz de host, un núcleo RISC incorporado, para obtener objetos de la lista de visualización mediante el acceso directo a la memoria (DMA). El procesador de interfaz de host está acompañado por 16 MB de memoria de acceso aleatorio dinámico síncrono (SDRAM), de los cuales 15 MB se utilizan para almacenar en caché los objetos de visualización. El caché puede entregar datos a la siguiente etapa a más de 300 MB/s. La siguiente etapa es el distribuidor de geometría, que transfiere datos e instrucciones desde el procesador de interfaz del host a los motores de geometría individuales.
La siguiente etapa es realizar geometría y procesamiento de imágenes. Geometry Engine se usa para este propósito, con cada placa de geometría que contiene hasta cuatro que funcionan en MIMD. Geometry Engine es un ASIC semipersonalizado con una canalización de datos múltiples de instrucción única (SIMD) que contiene tres núcleos de punto flotante, cada uno con una unidad lógica aritmética (ALU), un multiplicador y un archivo de registro de 32 bits por 32 entradas con dos puertos de lectura y dos de escritura. Estos núcleos cuentan con una memoria de 32 bits por 2560 entradas que contiene elementos del estado OpenGL y proporciona almacenamiento de memoria virtual. Cada núcleo también tiene un convertidor de flotante a fijo para convertir valores de punto flotante en forma de entero. Geometry Engine es capaz de completar tres instrucciones por ciclo, y cada placa de geometría, con cuatro dispositivos de este tipo, puede completar 12 instrucciones por ciclo. Geometry Engine utiliza una microinstrucción de 195 bits, que se comprime para reducir el tamaño y el uso del ancho de banda a cambio de un rendimiento ligeramente inferior.
El procesador Geometry Engine opera a 90 MHz, logrando un rendimiento teórico máximo de 540 MFLOPS. Como hay cuatro procesadores de este tipo en una placa GE12-4 o GE14-4, el rendimiento teórico máximo es de 2,16 GFLOPS. Por lo tanto, un sistema de 16 tuberías alcanza un rendimiento teórico máximo de 34,56 GFLOPS.
La cuarta etapa es Geometry-Raster FIFO, un búfer FIFO que fusiona las salidas de los cuatro motores de geometría en uno, volviendo a ensamblar las salidas en el orden en que se emitieron. El FIFO está construido a partir de SDRAM y tiene una capacidad de 4 MB,Mark J. Kilgard. "Realizing OpenGL: Two Implementations of One Architecture". 1997 SIGGRAPH Eurographics Workshop, August 1997. lo suficientemente grande como para almacenar 65.536 vértices. Los vértices transformados se mueven desde este FIFO a las placas Raster Manager para el reensamblaje y la configuración del triángulo mediante el Triangle Bus (también conocido como Vertex Bus), que tiene un ancho de banda de 400 MB/s.
Placa de memoria ráster La función de la placa de memoria ráster (Raster Memory board) es realizar la rasterización. También contiene la memoria de textura y la memoria de trama, que se conoce más comúnmente como framebuffer. La rasterización se realiza en el generador de fragmentos y en los ochenta Image Engine. El generador de fragmentos consta de cuatro diseños ASIC: Scan Converter (SC), Texel Address Calculator (TA), Texture Memory Controller (TM) y Texture Fragment (TF).John S. Montrym et al. "InfiniteReality: A Real-Time Graphics System". ACM SIGGRAPH.
Los ASIC SC y TA realizan conversión de escaneo, interpolación de color y profundidad, interpolación de coordenadas de textura correcta de perspectiva y cálculo de nivel de detalle en los datos entrantes, y los resultados se pasan a los ocho ASIC TM, que son controladores de memoria especializados optimizados para acceso texel. Cada TM controla cuatro SDRAM que constituyen una octava parte de la memoria de textura. Las SDRAM utilizadas tienen 16 bits de ancho y tienen buses de datos y direcciones separados. Las placas Raster Manager con 16 MB de memoria de textura utilizan SDRAM con una capacidad de 4 Mb, mientras que las placas Raster Manager con 64 MB de memoria de textura utilizan SDRAM de 16 MB. Los ASIC TM realizan búsquedas de texel en sus SDRAM de acuerdo con las direcciones de texel emitidas por el ASIC TA. Los Texels de los ASIC TM se reenvían al ASIC TF apropiado, donde se realiza el filtrado de texturas, la combinación del entorno de textura con el color interpolado y la aplicación de niebla. Como cada SDRAM contiene parte de la memoria de textura, las 32 SDRAM deben estar conectadas a los 80 motores de imagen. Para lograr esto, los ASIC TM y TF implementan una red omega de dos rangos, que reduce la cantidad de rutas individuales requeridas para el tipo 32 a 80 mientras mantiene la misma funcionalidad.
Los ochenta Image Engine tienen múltiples funciones. En primer lugar, cada Image Engine controla una parte de la memoria ráster, que en el caso de InfiniteReality, es un SGRAM de 1 MB organizado como 262.144 palabras de 32 bits.John S. Montrym et al. "InfiniteReality: A Real-Time Graphics System". ACM SIGGRAPH. En segundo lugar, los Image Engine realizan las siguientes operaciones OpenGL por fragmento: prueba de propiedad de píxeles, prueba de plantilla, prueba de búfer de profundidad, combinación, interpolación y operación lógica. Por último, los Image Engine realizan operaciones de búfer de acumulación y suavizado. Para entregar datos de píxeles para la visualización, cada motor de imagen tiene un bus serie de 2 bits a la placa del generador de visualización. Si hay una placa de administrador de ráster en la canalización, Image Engine usa todo el ancho del bus, mientras que si hay dos o más placas de administrador de ráster, Image Engine usa la mitad del bus. Cada bus serie es en realidad parte del Video Bus, que tiene un ancho de banda de 1,2 GB/s. Cuatro "núcleos" de Image Engine están contenidos en un ASIC de Image Engine, que contiene casi 488.000 puertas lógicas, que comprenden 1,95 millones de transistores, en una matriz de 42 mm2 (6,5 por 6,5 mm) que fue fabricada en un proceso de 0,35 micrómetros por VLSI Technology.
InfiniteReality utiliza los administradores de ráster RM6-16 o RM6-64. Cada canalización es capaz de mostrar resoluciones de 2,62, 5,24 o 10,48 millones de píxeles, siempre que estén presentes una, dos o cuatro placas Raster Manager respectivamente.Onyx2 Reality, Onyx2 InfiniteReality and Onyx2 InfiniteReality2 Technical Report, August 1998. Silicon Graphics, Inc. La memoria ráster se puede configurar para usar 256, 512 o 1024 bits por píxel. 320 MB admite una resolución de 2560 por 2048 píxeles y cada píxel contiene 512 bits de información. En una configuración con cuatro administradores de ráster, la memoria de textura tiene un ancho de banda de 15,36 GB/s y la memoria de ráster tiene un ancho de banda de 72,8 GB/s.
Placa de generador de pantalla