CrossFire jest wyszukaną i wydajną technologią dostępną obecnie przede wszystkim dla kart graficznych z serii X800 i X1000. Składa się z następujących elementów:
- karty Radeon CrossFire Edition z 'silnikiem składającym'
- drugiej karty PCI Express z serii X800 lub X1000
- płyty głównej obsługującej CrossFire z dwoma slotami PCI Express dla kart graficznych
- sterowników Catalyst z obsługą CrossFire
Diagram budowy CrossFire
W systemie CrossFire każdy GPU ma swój dedykowany slot PCI Express połączony z układem North Bridge płyty głównej i ma przydzielony swój własny bufor komend i pamięć systemową. Przydzielenie osobnych buforów komend pozwala każdemu GPU wykonywać unikalny zestaw zadań. Część pamięci systemowej przeznaczona jest do współdzielenia danych pomiędzy dwa GPU. Dzielone dane zawierają komendy synchronizacji, tekstury, pozaekranowe, oraz inne dane generowane podczas procesów modelowania. Konfiguracja wykorzystuje zalety szybkiego dwukierunkowego połączenia PCI Express, aby zapewnić płynną i wydajną współpracę pomiędzy GPU. Gdy każdy z GPU ukończy przydzielone mu zadania dla danej klatki, wyniki przesyłane są do 'silnika składającego' (CrossFire Compositing Engine). Urządzenie to łączy wyniki z każdego GPU w zależności od wybranego trybu pracy, po czym wysyła końcowe klatki do monitora. Jest ono w stanie wykonywać zaawansowane operacje łączenia bez obciążania żadnego z GPU. CrossFire obsługuje cztery tryby pracy, z czego trzy poświęcone są wydajności (AFR, Supertile i Scissor) a jeden jakości (Super AA). Każdy z trybów wykorzystuje inną metodę dzielenia materiału potrzebnego do generowania obrazów 3D pomiędzy wiele GPU.
Wyższa wydajność
Kluczem do wyższej wydajności wieloprocesorowych systemów jest maksymalnie wydajne podzielenie obrabianego materiału. Ważne jest także zminimalizowanie dodatkowych zadań wywołanych przetwarzaniem sterowników, czy też synchronizacją pomiędzy GPU - a wszystko przy równoczesnym zachowaniu kompatybilności z szerokim wachlarzem aplikacji. Aby osiągnąć taki efekt, CrossFire wykorzystuje jedną z trzech różnych technik dzielenia generowanego obrazu. Optymalna technika określana jest automatyczne dla każdej aplikacji 3D za pomocą Catalyst A.I., który jest składnikiem sterowników ATI. Te trzy techniki to: Alternate Frame Rendering, Supertiling, i Scissor.
Tryb Alternate Frame Rendering (AFR) - naprzemiennego generowania klatek.
W tym trybie wszystkie parzyste klatki renderowane są przez jeden GPU, a nieparzyste przez drugi. Ukończone klatki z obu GPU przesyłane są do 'Compositing Engine' na karcie CrossFire Edition, która z kolei przesyła je do monitora. Dzięki możliwości całkowicie osobnej pracy GPU, AFR zapewnia największą poprawę wydajności ze wszystkich dostępnych trybów. Jest to także jedyny tryb, który pozwala na połączenie pełnych możliwości przetwarzania vertex obu GPU.
Głównym ograniczeniem tego trybu jest fakt, że nie może on być wykorzystywany w aplikacjach, w których obraz jest zależny od danych wygenerowanych w poprzedniej klatce. Wynika to stąd, że AFR generuje kolejne klatki równocześnie za pomocą różnych GPU. W takich przypadkach, zamiast AFR, zastosowanie znajdują tryby Supertile lub Scissor.
Tryb Supertile
W tym trybie każda klatka, która ma zostać wygenerowana, dzielona jest na kawałki według wzoru szachownicy, w wyniku czego trafiają one po połowie do dwóch GPU. Z racji tego, że przetwarzane części są małe (32x32 piksele), metoda ta sprawdza się bardzo dobrze ponieważ równo dzieli materiał pomiędzy GPU, bez względu na to jaki obraz wyświetlany jest na ekranie i bez dodatkowego obciążenia ze strony oprogramowania.
Tryb Supertile ma tę zaletę, że jest w stanie współpracować w zasadzie z każdą aplikacją 3D. Równocześnie, istnieje niewielka liczba aplikacji, w których rozkład materiału wg Supertile nie zapewnia optymalnej wydajności. W tych przypadkach wykorzystany może być tryb Scissor.
Tryb Scissor
W tym trybie każda klatka dzielona jest na dwie sekcje, z których każda przetwarzana jest przez jeden GPU. Podział może być poziomy lub pionowy, równy (50/50) lub nierówny (np. 60/40 lub 70/30). Właściwa konfiguracja określana jest automatycznie dla każdej aplikacji.
Mimo że generalnie tryb Scissor jest mniej wydajnym sposobem dzielenia materiału niż metoda Supertile, istnieją okoliczności, w których sytuacja może być odwrotna. Tryb Scissor jest obsługiwany przez CrossFire w celu maksymalizacji kompatybilności i wydajności.