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 .
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 de la CPU. El dibujo se logra actualizando el búfer de trama mediante software. Para rutinas gráficas fundamentales, 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.
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]
1978: La consola doméstica Bally Astrocade se entrega con un hardware blitter primitivo. [3]
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. [4] [5] El diseño fue licenciado por Intel y vendido como el controlador de pantalla gráfica 82720.
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. [6] El rendimiento se midió en aproximadamente 910 KB/segundo. [6] El blitter opera en píxeles de 4 bits (16 colores) donde el color 0 es transparente, lo que permite formas no rectangulares. [7] Williams utilizó el mismo hardware en otros juegos de la época, incluidos Sinistar y Joust . [7]
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. [8] Se afirmaba que Mindset tenía gráficos hasta 50 veces más rápidos que los compatibles con IBM PC de la época, [9] 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. [10] 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. PIXBLT
proporciona 22 formas de combinar los datos de origen y destino. [11] 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 , [12] También se utilizó en placas aceleradoras de gráficos en la década de 1990.
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]
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.
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
Los sprites de hardware son pequeños mapas de bits que se pueden posicionar de forma independiente y que el chip de vídeo compone junto 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 ) o significativamente más alto para consolas de 16 bits y hardware arcade ( Neo Geo puede mostrar 96 sprites por línea). La incapacidad de actualizar un mapa de bits permanente los hace inadecuados para la aceleración de GUI de escritorio general.