Blitter – Wikipedia, wolna encyklopedia
Blitter (zapis stylizowany: BLiTTER; akronim od ang. block image transferrer) – specjalizowany układ realizujący operacje przenoszenia danych z jednego obszaru pamięci (także VRAM) do innego. Zadaniem jego jest odciążenie głównego procesora od takich operacji, co ma szczególne znaczenie w generowaniu grafiki 2D.
Działanie na przykładzie blittera Atari ST
[edytuj | edytuj kod]Blitter w komputerach Atari został wprowadzony dopiero w wersji "Mega series". Była to próba nawiązania walki rynkowej z komputerem Amiga firmy Commodore, który Blitter posiadał od samego początku. Ze względu na to, że twórcy gier starali się wykorzystać najniższy wspólny mianownik sprzętowy rodziny Atari ST, Blitter Atari, jako dostępny tylko na niektórych maszynach, był rzadko wykorzystywany w grach. Od wersji TOS 1.02 (rok 1987) operacje interfejsu graficznego GEM (VDI oraz AES) były wspomagane Blitterem.
Atari Blitter operuje na 16 bitowych słowach, pobierając i zapisując je nieliniowo.
W jednym przebiegu może:
- pobierać dane z trzech źródeł:
- rotować binarnie,
- dokonywać na nich 21 różnych operacji logicznych:
- 4 - pomiędzy Source i Halftone,
- 16 - dla Source i Destiantion,
- 1 - dla Source i Mask
- maskować,
- oraz zapisywać wynik (Destination).
Operacje Logiczne pomiędzy źródłem Source i Destination:
- 0
- Source AND Destination
- Source AND NOT Destination
- Source
- NOT Source AND Destination
- Destination
- Source XOR Destination
- Source OR Destination
- NOT Source AND NOT Destination
- NOT Source XOR Destination
- NOT Destination
- Source OR NOT Destination
- NOT Source
- NOT Source OR Destination
- NOT Source OR NOT Destination
- 1
Operacje pomiędzy źródłem Source i Halftone:
- 1
- Halftone
- Source
- Source & Halftone (specjalny tryb w którym zawartość Source jest indeksem dla rejestru Halftone)
Operacja logiczna pomiędzy Source i Mask
- Source AND Mask
BLiTTER w Atari ST/Falcon ma dostęp do całej pamięci ST RAM i do rejestrów sprzętowych. Dzięki tej właściwości może być wykorzystywany jako szybki kanał DMA.
Przykładowo może:
- zmieniać zawartość rejestrów kolorów Shiftera - więcej kolorów w linii niż w Spectrum512!
- odbierać dane z portu kartridża
- wysyłać/odbierać dane z DSP poprzez Hostport
- wysyłać/odbierać dane z dysku IDE (powstał sterownik dysków twardych dla ST, który był niezwykle wydajny)
- cieniować wielokąty metodą Gouraud[1]
Wykorzystując tryb 'Source & Halftone' można dokonywać transformacji Chunky do Planar (c2p).
W Atari ST pojawił się razem z Mega ST i dedykowanym systemem Atari TOS 1.02 (Blitter TOS) w roku 1987. Instalacja Blittera możliwa jest również we wszystkich Atari ST wyprodukowanych po 1987 roku, mają wolne miejsce na płycie głównej.
Inne platformy
[edytuj | edytuj kod]Pierwszym komputerem osobistym wyposażonym w pełni funkcjonalny Blitter była Amiga firmy Commodore. Pierwszy patent w USA zawierający słowo "Blitter" również dotyczył Amigi[2]. Wszystkie współczesne procesory graficzne zawierają w sobie funkcjonalność blittera, ale obecnie jej wykorzystanie jest niewielkie.
Wiele innych urządzeń ma obecnie bezpośredni dostęp do pamięci (DMA) co odciąża procesor pozwalając asynchronicznie przesyłać dane, na przykład z/do kontrolerów dysków, kart sieciowych czy układów kryptograficznych. Istnieją również specjalizowane układy realizujące tylko tę funkcję (tzw. silniki DMA, w procesorach jak Xeon czy Cell lub oddzielnych układach na płycie głównej), stosowane w wydajnych serwerach, na przykład jako bardzo szybki sprzętowy i asynchroniczny sposób wykonania funkcji memcpy na dużych blokach pamięci (które występują np. w trakcie operacji IO pomiędzy jądrem systemu operacyjnego a programami przestrzeni użytkownika).