Labirynt dwuprocesorowy: Jak złożona architektura Segi Saturn skazała konsolę na zagładę

Osiem wyspecjalizowanych procesorów, kwadratowe wielokąty zamiast trójkątów i koszmar programisty z połowy lat 90. Szczegółowa analiza tego, dlaczego inżynieryjne arcydzieło Segi okazało się dla deweloperów niezdobytą twierdzą.

FactBox: Specyfikacja techniczna Sega Saturn

Podsystem

Komponenty i specyfikacja

Centralne procesory (CPU)

2 × Hitachi SH-2 @ 28,6 MHz (32-bitowe procesory RISC, ok. 25 MIPS każdy)

Podsystem graficzny

VDP1: Renderowanie sprite'ów, wielokąty (quady), wypełnianie, geometria 3D. VDP2: 4 niezależne płaszczyzny tła 2D, sprzętowe obliczenia horyzontu i przezroczystości

Procesor dźwięku

Motorola 68EC000 @ 11,3 MHz + SCSP (Sega Custom Sound Processor / Yamaha YMF292, 32 kanały)

Kontrolery pomocnicze

SCU (System Control Unit / DSP), CD-ROM MCU (Hitachi SH-1)

Całkowita pamięć RAM

2 MB Work RAM (1 MB High RAM + 1 MB Low RAM) + 1,5 MB VRAM + 512 KB Sound RAM

Przepustowość magistrali

Szczytowa 28,6 MB/s

01. Odpowiedź Sony: Napędzana paniką przebudowa architektury przed premierą

Na początku lat 90. Sega znajdowała się u szczytu swojej potęgi. Dominacja konsoli Sega Mega Drive (Genesis) w Ameryce Północnej i Europie dała kierownictwu niezachwianą wiarę w jutro. Dział inżynierii sprzętowej pod kierownictwem Hideki Sato rozpoczął pracowity rozwój platformy nowej generacji pod the codename „Project Gigadrive”, która później przekształciła się w Segę Saturn.

Oryginalny projekt Saturna miał być absolutnym królem grafiki 2D. Inżynierowie czerpali inspirację z bogatego dziedzictwa automatów arcade Segi, wierząc, że grafika 3D pozostanie niszową atrakcją przez długi czas. Konsola została zaprojektowana z myślą o bezbłędnej wydajności z setkami sprite'ów, bogatą paletą barw i wielowarstwowym przewijaniem.

Jednak jesienią 1993 roku na targach Shoshinkai doszło do tektonicznego wstrząsu: Sony publicznie zaprezentowało demonstrację technologiczną swojej nadchodzącej konsoli PlayStation. Interaktywna demonstracja 3D w czasie rzeczywistym przedstawiająca głowę dinozaura T-Rexa oraz symulator wyścigowy zszokowała kierownictwo Segi. Okazało się, że układ Sony PlayStation, opracowany we współpracy z LSI Logic, potrafił bez wysiłku obliczać setki tysięcy oświetlonych i oteksturowanych trójkątów na sekundę.

Zdając sobie sprawę, że obecny projekt Saturna przegra z konkurencją u progu ery 3D, kierownictwo Segi nakazało awaryjną przebudowę architektury. Nie było jednak czasu na zaprojektowanie zupełnie nowego procesora graficznego od zera. Podjęto brzemienną w skutki decyzję: dodano drugi centralny procesor Hitachi SH-2 do architektury i spróbowano zparalelizować obliczenia graficzne oraz geometryczne.

Ten pośpiech sprawił, że systemowi brakowało jednolitej magistrali spójnej z pamięcią podręczną. Drugi procesor został dosłownie „przylutowany” równolegle do istniejącej infrastruktury, zmieniając płytę główną Saturna w chaotyczny labirynt ośmiu mikroczipów walczących o dostęp do pamięci współdzielonej.

02. Dwa procesory SH-2 i układy wideo VDP1/VDP2: Geniusz 2D kontra nieuniknione 3D

Aby zrozumieć złożoność Segi Saturn, wystarczy spojrzeć na skład jej chipsetu. Na płycie głównej konsoli znajdowały się:

• Master CPU: Hitachi SH-2 (Main logic, geometry)

• Slave CPU: Hitachi SH-2 (Auxiliary computations)

• VDP1: Geometry, sprite, and quad video processor

• VDP2: Background planes and special effects video processor

• SCU: System Control Unit with built-in DSP

• Sound CPU: Motorola 68EC000

• SCSP: Yamaha YMF292 sound chip

• CD-ROM Controller: Hitachi SH-1

Labirynt dwuprocesorowy: Jak złożona architektura Segi Saturn skazała konsolę na zagładę 2
Labirynt dwuprocesorowy: Jak złożona architektura Segi Saturn skazała konsolę na zagładę 2

Podział pracy: VDP1 i VDP2

System graficzny został podzielony pomiędzy dwa wysoce wyspecjalizowane procesory:

• VDP1 handled object rendering: characters, vehicles, and environmental elements. It worked with sprites and polygons, calculating transforms, texture mapping, and simple shading effects.

• VDP2 was a monstrous 2D co-processor. It could simultaneously output up to four independent scrolling background layers at resolutions up to 704×480 pixels, perform hardware floor and sky plane rotation, and compute heat haze and transparency effects.

Gdy deweloperi nauczyli się poprawnie łączyć oba układy (jak uczynił to AM2 w Virtua Fighter 2 czy Sega Rally Championship), Saturn dostarczał oszałamiającą jakość wizualną: VDP2 w pełni obsługiwał renderowanie horyzontu, toru i nieba bez zużywania zasobów procesora, podczas gdy VDP1 skupiał całą swoją moc na wysoce szczegółowych modelach trójwymiarowych wojowników lub samochodów.

Labirynt dwuprocesorowy: Jak złożona architektura Segi Saturn skazała konsolę na zagładę 3
Labirynt dwuprocesorowy: Jak złożona architektura Segi Saturn skazała konsolę na zagładę 3

Wąskie gardła pamięci i magistrali

Główną wadą systemu była jego pofragmentowana struktura pamięci RAM. Zamiast jednej jednolitej puli RAM, Saturn posiadał:

• 1 MB High-speed Work RAM (32-bit bus)

• 1 MB Low-speed Work RAM (16-bit bus)

• 512 KB Framebuffer VRAM for VDP1

• 512 KB Texture VRAM for VDP1

• 512 KB Background VRAM for VDP2

Jeśli oba procesory SH-2 próbowały uzyskać dostęp do tego samego obszaru pamięci jednocześnie, dochodziło do konfliktu na magistrali sprzętowej, a jeden z procesorów po prostu zamrażał się w stanach oczekiwania. Bez języka asemblera i delikatnej synchronizacji zegara, drugi SH-2 często bezczynnie czekał, wykonywał bezużyteczne cykle lub wprost zakłócał pracę głównego procesora.

03. Quady kontra Trójkąty: Dlaczego portowanie z PS1 było piekłem

Przemysł grafiki 3D został zbudowany na standardzie de facto — siatce trójkątów (poligonach trójkątnych). Trójkąt to najprostsza płaska figura geometryczna zdefiniowana przez trzy punkty w przestrzeni. PlayStation, Nintendo 64 i akceleratory graficzne PC (3dfx Voodoo, Direct3D, OpenGL) zostały pierwotnie zaprojektowane do pracy z trójkątami.

Sega Saturn sprzeciwiła się całemu światu: jej układ graficzny VDP1 nie potrafił rastrować trójkątów. Podstawowym elementem pierwotnym Saturna był zdeformowany czworokąt (Quad), w zasadzie odkształcalny, teksturowany sprite.

Labirynt dwuprocesorowy: Jak złożona architektura Segi Saturn skazała konsolę na zagładę 4
Labirynt dwuprocesorowy: Jak złożona architektura Segi Saturn skazała konsolę na zagładę 4

Parametr renderowania

Sony PlayStation (Trójkąty)

Sega Saturn (Quady)

Podstawowy element (primitiv)

Trójkąt (3 wierzchołki)

Czworokąt / Quad (4 wierzchołki)

Łączenie wielokątów

Dokładne dopasowanie krawędzi

Ryzyko powstawania szczelin i dziur

Korekcja perspektywy

Sprzętowe mapowanie tekstur afinicznych

Deformacja sprite'a na 4 punktach

Emulacja obcego formatu

Natywny standard branżowy

Wymaga „zdegenerowanych” quadów (2 nakładające się punkty)

Problemy z portowaniem wieloplatformowym:

• Lack of Hardware Stitching (Gaps & Overlapping): When attempting to build a complex 3D model out of quads, rotating the camera inevitably caused quad vertices to separate, forming visible gaps and holes through which the background peeked.

• Zero Coordinates: To draw a triangle on the Saturn, programmers had to define a quadrilateral where two vertices overlapped at the same point. VDP1 wasted resources processing the degenerate edge, lowering rendering performance.

• Texture Distortion: Trying to wrap a 2D texture onto a deformed quad without perspective correction resulted in warped, "wobbly" textures.

• Engine Rewriting: Major publishers (including EA, Capcom, and Konami) refused to rewrite their game geometry for quads. Simple ports from PlayStation to Saturn shipped with terrible frame rates, missing effects, and graphical glitches.

04. Yu Suzuki i Shenmue: Jak wycisnąć niemożliwe z Saturna

Pomimo piekła architektonicznego, wewnętrzny zespół AM2 Segi pod dowództwem legendarnego projektanta gier i inżyniera Yu Suzukiego dokonał prawdziwych cudów technologicznych.

Suzuki i jego zespół pisali kod bezpośrednio w asemblerze, omijając niedoskonałe kompilatory Segi. Nauczyli się ręcznie rozdzielać zadania pomiędzy oba układy SH-2: jeden procesor był poświęcony w całości obliczeniom geometrii i kolizji, podczas gdy drugi zajmował się animacją, obsługą wejścia i logiką sztucznej inteligencji.

Labirynt dwuprocesorowy: Jak złożona architektura Segi Saturn skazała konsolę na zagładę 5
Labirynt dwuprocesorowy: Jak złożona architektura Segi Saturn skazała konsolę na zagładę 5

Legenda Saturnowego Shenmue (Project Berkeley)

Najbardziej ambitnym projektem dla Saturna była gra Shenmue (znana wówczas pod kryptonimem Project Berkeley). AM2 stworzyło w pełni działające RPG w otwartym świecie 3D z cyklem dnia i nocy, setkami unikalnych postaci niezależnych (NPC) oraz szczegółowo oddanymi starożytnymi Chinami.

Gdy lata później wypłynęły materiały filmowe z prototypu Shenmue na Segę Saturn, publiczność była oszołomiona: platforma uznawana za nieprzystosowaną do prawdziwego 3D dostarczała poziom graficzny porównywalny z wczesnymi grami na Dreamcasta i PlayStation 2! Jednak cena tego sukcesu była zbyt wysoka: stworzenie takiego silnika zajęło lata i pochłonęło miliony dolarów, co było dostępne tylko dla głównego studia Segi.

Labirynt dwuprocesorowy: Jak złożona architektura Segi Saturn skazała konsolę na zagładę 6
Labirynt dwuprocesorowy: Jak złożona architektura Segi Saturn skazała konsolę na zagładę 6

Ostateczny werdykt

Sega Saturn pozostaje w historii jako majestatyczny i tragiczny pomnik myśli inżynieryjnej. Konsola wyprzedziła swoją epokę pod względem przetwarzania wielordzeniowego, jednak okazała się zbyt złożona jak na czas, gdy narzędzia programistyczne dopiero raczkowały. Niesłusznie zapomniana przez ogół społeczeństwa, Saturn obdarował świat ponadczasowymi arcydziełami i nauczył całą branżę gier kluczowej lekcji: równowaga i łatwość tworzenia są zawsze ważniejsze niż surowa, nieortogonalna moc.