stringtranslate.com

Blitter

Un blitter es un circuito, a veces como un coprocesador o un bloque lógico en un microprocesador , dedicado al movimiento rápido y modificación de datos dentro de la memoria de una computadora . Un blitter puede copiar grandes cantidades de datos de un área de memoria a otra con relativa rapidez y en paralelo con la CPU , mientras libera las capacidades más complejas de la CPU para otras operaciones. Un uso típico de un blitter es el movimiento de un mapa de bits , como ventanas e íconos en una interfaz gráfica de usuario o imágenes y fondos en un videojuego 2D. El nombre proviene de la operación bit blit de la Xerox Alto de 1973 , [1] que significa transferencia de bloques de bits. [2] Una operación blit es más que una copia de memoria, porque puede involucrar datos que no están alineados en bytes (de ahí el bit en bit blit ), manejo de píxeles transparentes (píxeles que no deben sobrescribir el destino) y varias formas de combinar los datos de origen y destino.

Los blitters han sido reemplazados en gran medida por unidades de procesamiento de gráficos programables .

Historia

En los ordenadores sin gráficos rasterizados acelerados por hardware , que incluyen la mayoría de los ordenadores domésticos de los años 1970 y 1980 y los compatibles con IBM PC hasta mediados de los años 1990, el búfer de trama se almacena habitualmente en la memoria accesible por la CPU. El dibujo se logra actualizando el búfer de trama mediante software. Para rutinas gráficas básicas, como componer una imagen más pequeña en una más grande (como para un videojuego) o dibujar un rectángulo relleno, se necesitan manipular grandes cantidades de memoria y se gastan muchos ciclos en buscar y decodificar bucles cortos de instrucciones de carga/almacenamiento. Para CPU sin cachés, el requisito de bus para las instrucciones es tan significativo como los datos. Para reducir el tamaño del búfer de trama, un solo byte puede no corresponder necesariamente a un píxel, sino que puede contener 8 píxeles de un solo bit, 4 píxeles de dos bits o un par de píxeles de 4 bits. La manipulación de píxeles empaquetados requiere operaciones adicionales de desplazamiento y enmascaramiento en la CPU.

Los blitters se desarrollaron para descargar tareas repetitivas de copia de datos o de llenado de bloques de memoria más rápido de lo que lo hace la CPU. Esto se puede hacer en paralelo con la CPU y también manejar casos especiales que serían significativamente más lentos si se codificaran a mano, como omitir píxeles marcados como transparentes o manejar datos que no están alineados por bytes.

Blitters en ordenadores y videojuegos

1973: La Xerox Alto , donde se originó el término bit blit , tiene una instrucción de transferencia de bloques de bits implementada en microcódigo , lo que la hace mucho más rápida que la misma operación escrita en la CPU. [1] El microcódigo fue implementado por Dan Ingalls . [1]

1982: Además de dibujar primitivas de formas, el procesador de pantalla de video NEC μPD7220 puede transferir mapas de bits rectangulares a la memoria de visualización a través del acceso directo a la memoria y llenar porciones rectangulares de la pantalla. [3] [4]

1982: El videojuego arcade Robotron: 2084 de Williams Electronics incluye dos chips blitter que permiten que el juego tenga hasta 80 objetos en movimiento simultáneo. [5] El rendimiento se midió en aproximadamente 910 KB/segundo. [5] El blitter opera en píxeles de 4 bits (16 colores) donde el color 0 es transparente, lo que permite formas no rectangulares. [6] Williams utilizó el mismo hardware en otros juegos de la época, incluidos Sinistar y Joust . [6]

1984: La computadora personal Mindset compatible con MS-DOS contiene un chip VLSI personalizado para mover secciones rectangulares de un mapa de bits. El hardware maneja la transparencia y ocho modos para combinar los datos de origen y destino. [7] Se afirmaba que Mindset tenía gráficos hasta 50 veces más rápidos que los compatibles con IBM PC de la época, [8] pero el sistema no tuvo éxito.

1985: Uno de los coprocesadores del ordenador personal Amiga es un blitter. La primera solicitud de patente estadounidense en la que se utilizó el término blitter fue "Aparato informático personal para la transferencia en bloque de datos de imágenes en mapa de bits", asignada a Commodore-Amiga, Inc. [9] El blitter realiza una operación booleana arbitraria sobre tres vectores de bits de tamaño 16:

destination := op(source A, source B, source C)

1986: El TMS34010 es un procesador de 32 bits de propósito general con instrucciones integradas, incluyendo PIXBLT(Pixel Block Transfer), para manipular datos de mapa de bits. Está optimizado para casos que requerirían procesamiento adicional si se implementaran en software, como el manejo de píxeles transparentes, el trabajo con datos no alineados por bytes y la conversión entre profundidades de bits. PIXBLTproporciona 22 formas de combinar los datos de origen y destino. [10] El TMS34010 sirve como CPU y GPU para una serie de juegos arcade a partir de 1988 con Narc e incluyendo Hard Drivin' , Smash TV , Mortal Kombat y NBA Jam , [11] También se utilizó en placas aceleradoras de gráficos en la década de 1990.

1986: El Intel 82786 es un procesador gráfico programable con una BIT_BLTinstrucción para mover secciones rectangulares de mapas de bits. [12]

1987: El adaptador de pantalla IBM 8514/A , introducido con las computadoras IBM Personal System/2 en abril de 1987, incluye hardware de transferencia de bloques de bits. [13]

Chip Atari ST BLiTTER

1987: El Atari Mega ST 2 se entrega con un chip blitter. [14] Oficialmente llamado "Procesador de transferencia de bloques de bits Atari ST", estilizado como BLiTTER, proporciona 16 opciones para fusionar datos de origen y destino. [15] El blitter es compatible con la mayoría de las máquinas ST posteriores.

1989: La efímera Atari Transputer Workstation contiene hardware blitter como parte de su sistema de video "Blossom" (basado en Mega ST). [16]

1989: El sistema de juego portátil a color Atari Lynx tiene un blitter personalizado con efectos de escala y distorsión.

1993: La consola de juegos Atari Jaguar tiene hardware blitter como parte del chip "Tom" personalizado. [17]

1996: El Grupo VESA introdujo una forma estandarizada de acceder a funciones como transferencias de bloques de bits de hardware con funciones VBE/acelerador (VBE/AF) en PC compatibles con IBM.

Operación

Sprites (izquierda) y máscaras asociadas

Normalmente, un programa informático introduce información en determinados registros de hardware que describen qué transferencia de memoria se debe completar y las operaciones lógicas que se deben realizar con los datos. A continuación, la CPU activa el blitter para que comience a funcionar. La CPU queda libre para realizar otros procesos mientras el blitter está funcionando, aunque el blit que se ejecuta en paralelo utiliza ancho de banda de memoria.

Para copiar datos con píxeles totalmente transparentes (como sprites), algunos dispositivos permiten ignorar un valor de píxel específico, como el color 0, durante la transferencia. Esos píxeles no se escriben en el destino.

Otro enfoque en algunos sistemas es tener una segunda imagen de 1 bit por píxel utilizada como máscara para indicar qué píxeles se deben transferir y cuáles se deben dejar intactos. La máscara funciona como una plantilla . La operación lógica es:

destination := (background AND NOT mask) OR sprite

Otros enfoques

Los sprites de hardware son pequeños mapas de bits que se pueden colocar de forma independiente y que el chip de vídeo combina con el fondo sobre la marcha. El búfer de cuadros no se modifica. [18] La desventaja de los sprites es el límite de gráficos en movimiento por línea de exploración, que puede variar de tres ( Atari 2600 ) a ocho ( computadoras Commodore 64 y Atari de 8 bits ) a significativamente más alto para consolas de 16 bits y hardware arcade ( Neo Geo puede mostrar 96 sprites por línea), y la incapacidad de actualizar un mapa de bits permanente (lo que los hace inadecuados para la aceleración de GUI de escritorio general).

Véase también

Referencias

  1. ^ abc Shirriff, Ken. "Restauración de la Xerox Alto de YCombinator, día 5: seguimiento de microcódigo con un analizador lógico". Blog de Ken Shirriff .
  2. ^ "Función BitBlt". Windows Dev Network . Microsoft . Consultado el 2 de octubre de 2016 .
  3. ^ Peddie, Jon. "Chips gráficos famosos: Controlador de pantalla gráfica NEC μPD7220". computer.org .
  4. ^ "Manual del usuario: NEC μPD7220/7220A" (PDF) . NEC Electronics. Diciembre de 1985. Archivado desde el original (PDF) el 16 de junio de 2012.
  5. ^ ab Wolf, Mark JP (junio de 2012). Antes de la crisis: la historia de los videojuegos en sus inicios. Prensa de la Universidad Estatal de Wayne. pág. 185. ISBN 9780814334508.
  6. ^ de Riddle, Sean. "Información de Blitter".
  7. ^ Williams, Gregg (abril de 1984). "Vista previa del producto: La computadora personal Mindset". Byte Magazine . 9 (4): 278–280.
  8. ^ Anderson, John J. (febrero de 1985). "Micromindset: ¿superando los límites o qué pasó con la innovación?". Creative Computing . 11 (2): 50.
  9. ^ "Patente de EE.UU. 4874164 "Aparato de computadora personal para transferencia en bloque de datos de imágenes de mapa de bits"".
  10. ^ Killebrew Jr., Carrell R. (diciembre de 1986). "El procesador de sistema gráfico TMS34010". Byte . Vol. 11, núm. 13. pág. 204.
  11. ^ "Lista de juegos que se ejecutan en el procesador TMS34010". mamedb.com . Archivado desde el original el 4 de marzo de 2016. Consultado el 15 de mayo de 2016 .
  12. ^ 82786 Manual del usuario del coprocesador gráfico. Intel. 1988. pág. 2-29.
  13. ^ Necasek, Michael. "El acelerador gráfico 8514/A". Museo OS/2 .
  14. ^ "Atari Mega ST 2". Centro de Historia de la Computación .
  15. ^ "Manual de usuario del procesador de transferencia de bloques de bits Atari ST". archive.org . Atari Corporation. 17 de junio de 1987.
  16. ^ Rosenthal, Marshal M. (noviembre de 1989). "La conexión Transputer: una entrevista exclusiva con el Dr. Tim King de Perihelion". Start . 4 (4).
  17. ^ "Manual de referencia técnica Tom & Jerry" (PDF) . Febrero de 2001. págs. 4-5.
  18. ^ Hague, James. "¿Por qué existen las consolas de juegos dedicadas?". Programación en el siglo XXI . Archivado desde el original el 23 de abril de 2018. Consultado el 3 de septiembre de 2019 .