Architektura Dreamcast

Praktyczna analiza autorstwa Rodrigo Copetti

Przetłumaczone przez LunaDook & MoonbowPlushie

Jeśli korzystasz z narzędzi ułatwień dostępu lub starszych przeglądarek, przełącz się na wersję 'klasyczną'.




Zdjęcia pomocnicze

Model

Image
Dreamcast.
Wydany 29.11.1998 w Japonii, 09.09.1999 w Ameryce i 14.10.1999 w Europie.

Płyta Główna

Image
Płyta Główna
Pokazuję wersję 'VA1'.
Podczas gdy oficjalna dokumentacja podaje, że system zawiera 128 KB pamięci flash, ta płyta główna zawiera z jakiegoś powodu układ 256 KB EEPROM.
Porty baterii i kontrolera znajdują się na karcie towarzyszącej o nazwie 'Panel przedni'.
Image
Płyta główna z zaznaczonymi ważnymi częściami

Diagram

Image
Schemat głównej architektury
Ważne magistrale danych są oznaczone ich szerokością i prędkością.

Wstęp

Sega Dreamcast wprowadziła wiele nowych funkcji w stosunku do swojego poprzednika (Sega Saturn), aby spodobać się zarówno twórcom gier, jak i graczom konsolowym. Chociaż była to ostatnia próba podbicia rynku konsol przez firmę Sega, niektóre z technologii, które były pionierami w Dreamcast, przeniosły się na przyszłe urządzenia głównego nurtu.


CPU

Nic dziwnego, że Sega ponownie wybrała Hitachi do opracowania swojego procesora. Jeśli czytałeś poprzedni artykuł o Sega Saturn to pozwólcie, że przedstawię Wam następną generację procesora SH: SH-4 działający z niesamowitą prędkością 200 MHz [1]. Więc co jest interesującego w tym procesorze?

Dodatkowa praca

Typowe obowiązki CPU konsoli do gier obejmują obsługę logiki gry, prowadzenie wrogiej sztucznej inteligencji i dostarczanie instrukcji GPU. W Dreamcast SH-4 jest również zaangażowany w większość potoku graficznego, przetwarzając dane geometryczne, takie jak obliczanie przekształceń perspektywy. W rezultacie zawiera 128-bitową jednostkę SIMD, która może przyspieszyć operacje wektorowe [2].

Polepszenie dostępu do pamięci

Procesor zawiera dedykowaną Jednostkę Zarządzania Pamięcią lub ‘MMU’ do adresowania wirtualnego, jest to pomocne, ponieważ fizyczna przestrzeń adresowa pamięci tego procesora ma szerokość 29 bitów. Tak więc za pomocą czterech TLB programiści mogą używać adresów 32-bitowych bez pogorszenia wydajności.

Ponieważ do adresowania potrzeba tylko 29 bitów, dodatkowe trzy bity kontrolują ochronę pamięci, odpowiednio zmieniając mapę pamięci i omijając pamięć podręczną [3] [4].

Programista decyduje, czy korzystać z tych funkcji, czy nie. Gry dla tego systemu z pewnością niekoniecznie wymagają ochrony pamięci, a MMU musi być ręcznie włączane przy starcie.

Brak UMA ale…

Chociaż ten system nie jest zaprojektowany w oparciu o ścisłą architekturę zunifikowanej pamięci, jak znany konkurent, deleguje dostęp WE/WY do GPU. Oznacza to, że jeśli procesor musi pobrać coś, co jest poza dedykowaną RAM lub interfejsem szeregowym (który jest również podłączony), będzie musiał zażądać GPU i poczekać, jeśli to konieczne.

Zapytania specjalne

Ten CPU posiada również unikalną funkcjonalność o nazwie Równoległe WE/WY lub ‘PIO’, która służy do manipulowania wieloma lokalizacjami WE/WY w tym samym czasie. Sega podłączyło te piny, aby CPU mógł manipulować trybem wideo GPU (więcej szczegółów na ten temat później).


Grafika

Pakiet GPU to wykonany na zamówienie układ o nazwie Holly działający z częstotliwością 100 MHz, zaprojektowany przez firmę VideoLogic (obecnie znana jako Imagination Technologies) i wyprodukowany przez NEC. Tak się składa, że rdzeniem 3D Holly jest PowerVR2 firmy Videologic (nazywany również ‘PowerVR Series2’ i ‘CLX2’).

Image
Sonic Adventure (1999).

Firma VideoLogic wybrała alternatywne podejście do budowy swojego silnika 3D o nazwie Opóźnione Renderowanie Oparte na Kafelkach (lub TBDR).

Zamiast renderować całą klatkę naraz (jak to robią tradycyjne Renderery w Trybie Natychmiastowym lub ‘IMR’ [5]), TBDR dzieli obszar renderowania na wiele sekcji zwanych ‘kafelki’. Następnie wykonuje proces renderowania na każdym kafelku osobno, a wynik jest łączony, tworząc ostateczną klatkę [6].

Ta innowacyjna konstrukcja przynosi ciekawe korzyści:

Nic dziwnego, że firma Imagination wykorzystała tę wydajną technologię do budowy rdzeni PowerVR z serii 4, które zasilały niewiarygodną liczbę urządzeń, w tym pierwszą generację iPhone’a, iPhone’a 3G, Nokię N95 i Della Axim x51.

Architektura

Przyjrzyjmy się dwóm głównym komponentom GPU Dreamcasta [7]:

Tile Accelerator

Image
Architektura Tile Accelerator.

Przed rozpoczęciem procesu renderowania komponent znany jako Tile Accelerator wykonuje wstępne przetwarzanie. Rozpoczyna się od przydzielenia kilku pojemników 32x32 kafelków, w których zostanie wyrenderowana geometria.

Następnie Tile Accelerator:

  1. Pobiera dane geometrii i polecenia rysowania wydawane przez CPU (za pomocą DMA lub tradycyjnych transferów).
  2. Przekonwertuje te dane na format wewnętrzny.
  3. Rozprowadzi geometrię do każdego pojemnika na podstawie jego współrzędnych. Przycięta geometria również zostanie odrzucona.
  4. Wygeneruje wynikowe listy wyświetlania.

Te listy wyświetlania są następnie interpretowane przez silnik 3D: PowerVR2.

Rdzeń PowerVR2

Image
Architektura Rdzenia PowerVR2.

W tym miejscu grafika zostaje ożywiona, listy wyświetlania otrzymane od TA informują rdzeń o renderowaniu geometrii pojedynczego kafelka przy użyciu wewnętrznego bufora-klatki. Proces wygląda następująco:

  1. Image Synthesis Processor lub ‘ISP’ pobiera prymitywy (trójkąty lub czworokąty) i wykonuje Usuwanie ukrytych powierzchni aby usunąć niewidoczne wielokąty. Następnie, po obliczeniu buforów Z i szablonów, dane przechodzą przez Testowanie Głębokości, aby uniknąć renderowania wielokątów, które pojawiałyby się za innymi i Testy Szablonowe, aby usunąć geometrię, która nie będzie widoczna, jeśli znajduje się za wielokątem 2D (nazywanym również Maską).
    • Zwróć uwagę na to, że testy te są przeprowadzane na początku potoku. W przeciwieństwie do tego poprzednie konsole używające późnego buforowania Z odrzucają geometrię na końcu potoku. Podejście ISP zapobiega przetwarzaniu geometrii, która ostatecznie zostanie odrzucona [8], oszczędzając w ten sposób zasoby.
  2. Texture and Shading Processor lub ‘TSP’ stosuje kolorowanie, cieniowanie i wiele efektów na obszarze kafelka.
    • Tekstury nie są stosowane, dopóki kafelek nie zostanie wyeksportowany, co oznacza, że pojawiające się przerysowanie (jeśli występuje) nie obniży współczynnika wypełniania.

Po zakończeniu operacji wyrenderowany kafelek jest zapisywany w głównym buforze klatki w VRAM. Ten proces jest powtarzany, aż wszystkie kafelki zostaną ukończone. Po zakończeniu wynikowy bufor ramki jest pobierany przez enkoder wideo i wysyłany przez sygnał wideo.

Szersza perspektywa

Oprócz wyraźnej różnicy architektonicznej, Texture and Shading Processor ma wiele możliwości, które dają wyobrażenie o tym, jak daleko ta konsola jest od starego Saturna. Oto kilka godnych uwagi przykładów:

W rezultacie…

Holly może teraz narysować ~10 razy więcej wielokątów niż jego poprzednik, oto przykład Przed & Po który pokazuje, że projekty modeli nie są już tak ograniczone. Spróbuj się z nimi pobawić!

SzkieletPowierzchniaOteksturowany
3D model
Sonic R (1997) dla Saturna.
286 trójkątów (lub 185 czworokątów).
SzkieletPowierzchniaOteksturowany
3D model
Sonic Adventure (1999) dla Dreamcast.
1001 trójkątów.

Tryby Wideo

System wideo został zaprojektowany do obsługi wielu typów ekranów i formatów, dlatego wideoenkoder wysyła sygnał do gniazda o jednym kształcie, które obsługuje następujące rodzaje sygnałów:

Dreamcast nie może zakodować ich wszystkich jednocześnie, więc GPU i procesor Audio zawierają rejestr o nazwie Tryb Obrazu, który koordynuje, które magistrale wideo/audio zostaną aktywowanie, aby wygenerować żądany sygnał. Procesor wykrywa rodzaj włożonego kabla (sprawdzając, które ‘wybrane bity’ złącza wideo są aktywne) i zapisuje wymagane wartości na GPU. Na koniec wartości są przekazywane do procesora Audio.

Ponieważ VGA jest ściśle progresywnym typem sygnału (w przeciwieństwie do tradycyjnego sygnału z przeplotem), pojawiły się pewne problemy ze zgodnością z grami, które zostały zaprojektowane tylko dla wideo z przeplotem. Te wyraźnie stwierdzają w swoim kodzie, że gra nie będzie wyświetlana na VGA, więc procesor zablokuje grę, dopóki użytkownik nie wymieni kabla VGA na inny typ.


Dźwięk

Funkcjonalność audio jest obsługiwana przez niestandardowy układ o nazwie AICA firmy Yamaha, jest to ulepszona wersja SCSP używanego w Saturnie i składa się z czterech komponentów:

Aby pomóc w programowaniu, oficjalny SDK zawierał wiele sterowników dźwięku do różnych potrzeb (sekwencjonowanie, dekodowanie, itp).

Ewolucja

Zaszliśmy tak daleko od czasów Mega Drive/Genesis, aby pokazać, jak bardzo poczyniono postępy w syntezie dźwięku, oto przykład dwóch gier, jednej dla Mega Drive i drugiej dla Dreamcast, które wykorzystywały tą samą kompozycję:

Sonic 3D Blast (1996) dla Mega Drive.
Poprzednik wykonuje syntezę FM w celu generowania sygnałów audio w locie.
Sonic Adventure (1999) dla Dreamcastu.
Nowy podsystem audio przetwarza próbki PCM bez żadnych problemów.

Zamiast programować chip FM, kompozytorzy Sonic Adventure wyprodukowali własną ścieżkę dźwiękową, a następnie zakodowali ją w ‘ADX’, stratnym formacie opracowanym przez CRI Middleware. W związku z tym wykorzystuje tylko dwa z 64 kanałów PCM (stereo).

Kompresja ADX umożliwia grze dekodowanie i przesyłanie strumieniowe danych z GD-ROM do Sound IC bez wyczerpania pamięci lub przepustowości. Sterownik można zaimplementować na wiele sposobów, ponieważ istnieje wiele różnych podejść do zrównoważenia obciążenia głównego CPU i ARM7.

Pozostając przy życiu

Z jakiegoś powodu ten układ jest również odpowiedzialny za dostarczanie Zegara Czasu Rzeczywistego (RTC) do BIOS-u, jest również podłączony do baterii zegara, aby kontynuować pracę bez zasilania prądem zmiennym.


System Operacyjny

2 MB ‘System ROM’ przechowuje BIOS, który uruchamia grę lub małą powłokę, gdy konsola jest włączona.

BIOS zawiera również procedury, których używają gry do uproszczenia funkcji WE/WY [9], takich jak odczyt z napędu GD-ROM.

Powłoka

Jeśli nie ma włożonej prawidłowej płyty z grą, konsola uruchomi powłokę graficzną.

Image
Powłoka po uruchomieniu bez dysku.

Powłoka zawiera prosty graficzny interfejs użytkownika, który umożliwia użytkownikowi wykonywanie podstawowych, ale niezbędnych zadań, takich jak:

  • Uruchomienie gry, jeśli jeszcze nie została uruchomiona.
  • Manipulowanie danymi zapisu przechowywanymi w VMU (więcej szczegółów na temat tego urządzenia później!).
  • Odtwarzanie muzyki, jeśli jest włożona płyta Audio CD.
  • Zmienianie niektórych ustawień (Data, Czas, Dźwięk, itp).

Windows CE

Od czasu ogłoszenia Dreamcasta mówiono, że na konsoli można uruchomić Windows CE: uproszczoną wersję systemu Windows zaprojektowaną do użytku na urządzeniach osadzonych. Jest to trochę mylące, biorąc pod uwagę, że niektórzy użytkownicy spodziewaliby się, że na ich konsoli będzie działać pełne środowisko graficzne Windows CE.

Image
Logo Windows CE wybite z przodu obudowy.

W rzeczywistości cel tego ‘OS’ był bardzo podobny do tego, co Nintendo zrobiło z Nintendo 64: zapewnienie programistom rzetelnej warstwy abstrakcji w celu uproszczenia niektórych operacji.

Microsoft współpracował z firmą Sega, aby wprowadzić system Windows CE do Dreamcasta [10]. W rezultacie powstał podzbiór CE z minimalnymi komponentami potrzebnymi do zapewnienia grafiki, dźwięku i debugowania. Obejmowało to użycie najlepszego IDE Microsoftu, Visual Studio, do rozwoju.

Niektórzy programiści uznali tę opcję za bardzo atrakcyjną. Ponieważ struktura audio-graficzna dołączona do CE była niczym innym jak DirectX 6, tysiące gier na PC z tamtej epoki możnaby teoretycznie łatwo przenieść na Dreamcasta…

Jednak różnice architektoniczne między Dreamcastem a konwencjonalnym komputerem PC były zbyt duże, aby je zignorować [11]. Ponadto osadzenie tego systemu wydłużyło czas ładowania gry (w końcu ‘system operacyjny’ musiał być ładowany z dysku), a Windows CE zużywał znaczną część zasobów Dreamcasta (nie jest to zaskoczeniem - komputery PC już cierpiały z tego powodu).

Ostatecznie ‘Windows CE dla Dreamcast’ był po prostu kolejnym zestawem SDK wybieranym przez programistów (powszechnie określany jako Dragon SDK). Niemniej jednak znaczna liczba gier Dreamcast ostatecznie wybrała Windows API i DirectX.


WE/WY

GPU zawiera również inny moduł do obsługi większości WE/WY o nazwie System Bus. Zapewnia następujące interfejsy:


Gry

Programowanie odbywało się głównie w C lub C++. Początkowo zalecanym wyborem było C, ponieważ dostępne kompilatory C++ były początkowo bardzo ograniczone pod względem funkcjonalności.

Firma Sega dostarczyła również sprzęt programistyczny w postaci wieży podobnej do komputera PC o nazwie Sega Katana Development Box. To jest sprzęt Dreamcast z ulepszonymi WE/WY do rozwoju. Był również dostarczany z płytą CD zawierającą oficjalny Katana SDK i narzędzia do zainstalowania na komputerze z systemem Windows 98.

W przypadku, gdy programiści wybrali Dragon SDK, dostępne były również DirectX 6.0 i Visual C++ 6.0.

Nośnik danych

Gry są przechowywane na GD-ROM-ach, które są po prostu CD-ROM-ami o większej gęstości pitów (osiągającej gigabajt pojemności). Prędkość wynosi 12x, co jest całkiem niezłe w porównaniu z czytnikiem CD 2x Saturna.

Platforma online

Dreamcast jest dostarczany z zainstalowanym modułem modem, którego gry mogą używać do ‘wywoływania’ usługi dial-up do gier online. Firma Sega świadczyła dwie usługi: SegaNet (używaną w Ameryce i Japonii) oraz Dreamarena (europejski odpowiednik).

Gracze rejestrowali się w usłudze przy użyciu DreamKey, dodatkowej płyty dołączonej do niektórych gier. DreamKey dostarczał przeglądarkę internetową do rejestracji konta. Początkowo DreamKey był wstępnie skonfigurowaną usługą w zależności od regionu, ale późniejsze wersje pozwoliły użytkownikom zmienić ustawienia ISP, aby połączyć się z dowolnym z nich.

Do kupienia była również klawiatura i mysz marki Dreamcast, na wypadek gdyby użytkownik chciał surfować po sieci w stylu PC.

Niestety SegaNet i Dreamarena zostały porzucone dwa lata po premierze. W ten sposób gry, które opierały się wyłącznie na nich, stały się bezużyteczne, chyba że takie usługi są emulowane za pomocą dodatkowych narzędzi (takich jak DreamPi, obraz Raspberry Pi, który replikuje je za pomocą serwerów obsługiwanych przez społeczność użytkowników).

Interaktywna karta pamięci

Inną innowacyjną funkcją, którą zaprezentował Dreamcast, była Visual Memory Unit lub ‘VMU’. Jest dołączony do kontrolera i oprócz tego, że służy jako karta pamięci, jest pełnoprawnym urządzeniem, które zawiera [12]:

Image
VMU odłączony od kontrolera.
Image
Kontroler bez podłączonego VMU.
Image
Kontroler z dołączonym VMU.
  • Sanyo LC86K87: 8-bitowy procesor o małej mocy.
  • Monochromatyczny wyświetlacz LCD 32x48 z czterema dodatkowymi ikonami: Sterowany przy użyciu 196B XRAM (zewnętrznej pamięci RAM) jako bufora klatki.
  • Dwa złącza szeregowe: Jedno dla WEJŚCIA, a drugie dla WYJŚCIA.
  • Sześć fizycznych przycisków: Używane, gdy VMU jest odłączony od kontrolera.
  • 16 KB Mask ROM: Przechowuje BIOS-IPL.
  • 64 KB Flash: 32 KB do przechowywania pojedynczego programu (przeniesionego z konsoli) i pozostałe 32 KB do przechowywania zapisów Dreamcast.
  • 512 B RAM: 256 B jest zarezerwowane dla systemu, pozostawiając tylko 256 B dostępne dla programu.

VMU ma dwa tryby pracy:


Przeciwdziałanie-Piractwu & Homebrew

Korzystanie z zastrzeżonego formatu GD-ROM pomogło zahamować produkcję nieautoryzowanych kopii gier (i uruchamianie ich na innych konsolach). Gry Dreamcast są również zablokowane na region, co oznacza, że konsola odmówi uruchomienia gry przeznaczonej dla innego regionu.

Pokonywanie

W praktyce środki antypirackie były całkowicie bezużyteczne, ponieważ firma Sega pozostawiła otwarte drzwi: MIL-CD. Music Interactive Live-CD lub ‘MIL-CD’ to format stworzony przez firmę Sega w celu rozszerzenia płyty Audio-CD o programy interaktywne… i Dreamcast jest z nim kompatybilny [13].

Nieautoryzowane płyty komercyjne (programy ładujące kody, odtwarzacze filmów, itp.) zamaskowane jako płyty MIL-CD mogły działać na konsoli bez zgody firmy Sega. Później różne społeczności hakerów przeanalizowały ten exploit i opracowały obejście umożliwiające uruchamianie pirackich gier przy użyciu dysków CD-ROM. To spowodowało, że w sieci pojawiła się niepowstrzymana fala obrazów ISO.

Później pojawiły się pewne problemy: Chociaż GD-ROM-y mogą przechowywać gigabajt danych, CD-ROM-y mogą zmieścić tylko ~700 MB, więc jak ‘ripperzy’ mogą zmniejszyć większe gry, aby zmieściły się na płycie CD? Ponownie kompresując muzykę i grafikę, aż będą pasować. Mogą nawet próbować podzielić je na dwa dyski. W końcu dane gry nie są już pojedynczą blokiem (jak na starym kartridżu), ale są teraz zorganizowane hierarchicznie w pliki i katalogi.


To wszystko ludziska

Image
Dreamcast, którego musiałem zdobyć, żeby napisać tu dużo rzeczy.
Niezły jak na swój wiek!

Mam nadzieję, że podobało Ci się czytanie tego artykułu. Skończyłem go pisać na początku mojego ostatniego roku na uniwersytecie.

Prawdopodobnie od teraz będę bardzo zajęty, ale lubię pisać te artykuły, więc mam nadzieję, że za kilka tygodni dostaniesz następny!

Do następnego razu!
Rodrigo


Współpraca

Ten artykuł jest częścią serii Architektura Konsol. Jeśli uznałeś go za interesujący, rozważ darowiznę. Twój wkład zostanie wykorzystany na sfinansowanie zakupu narzędzi i zasobów, które pomogą mi poprawić jakość istniejących i przyszłych artykułów.

Donate with PayPal
Become a Patreon

Możesz także zakupić wydanie e-bookowe w języku angielskim. Zyski traktuję jako darowizny.

Image

Lista pożądanych narzędzi i najnowsze nabytki do tego artykułu są śledzone tutaj:

### Interesting hardware to get (ordered by priority)

- Nothing else, unless you got something in mind worth checking out

### Acquired tools used

- A Dreamcast console with controllers and VMUs (£40)
- A game (Sonic Adventure, £9)

Możesz też pomóc proponując zmiany i/lub dodając tłumaczenia.


Copyright and permissions

This work is licensed under a Creative Commons Attribution 4.0 International License. You may use it for your work at no cost, even for commercial purposes. But you have to respect the license and reference the article properly. Please take a look at the following guidelines and permissions:

Article information and referencing

For any referencing style, you can use the following information:

For instance, to use with BibTeX:

@misc{copetti-dreamcast,
    url = {https://www.copetti.org/writings/consoles/dreamcast/},
    title = {Dreamcast Architecture - A Practical Analysis},
    author = {Rodrigo Copetti},
    year = {2019}
}

or a IEEE style citation:

[1]R. Copetti, "Dreamcast Architecture - A Practical Analysis", Copetti.org, 2019. [Online]. Available: https://www.copetti.org/writings/consoles/dreamcast/. [Accessed: day- month- year].
Special use in multimedia (Youtube, Twitch, etc)

I only ask that you at least state the author’s name, the title of the article and the URL of the article, using any style of choice.

You don’t have to include all the information in the same place if it’s not feasible. For instance, if you use the article’s imagery in a Youtube video, you may state either the author’s name or URL of the article at the bottom of the image, and then include the complete reference in the video description. In other words, for any resource used from this website, let your viewers know where it originates from.

This is a very nice example because the channel shows this website directly and their viewers know where to find it. In fact, I was so impressed with their content and commentary that I gave them an interview 🙂.

Appreciated additions

If this article has significantly contributed to your work, I would appreciate it if you could dedicate an acknowledgement section, just like I do with the people and communities that helped me.

This is of course optional and beyond the requirements of the CC license, but I think it’s a nice detail that makes us, the random authors on the net, feel part of something bigger.

Third-party publishing

If you are interested in publishing this article on a third-party website, please get in touch.

If you have translated an article and wish to publish it on a third-party website, I tend to be open about it, but please contact me first.


Źródła / Czytaj Dalej

Przeciwdziałanie Piractwu

CPU

Gry

Grafika

System Operacyjny

Fotografia


Rodrigo Copetti

Rodrigo Copetti

Mam nadzieję, że podobał Ci się ten artykuł! Jeśli chcesz dowiedzieć się więcej o autorze, kliknij tutaj a jeśli chcesz go wesprzeć, zamiast tego kliknij tutaj

rsslinkedintwittergithub facebookreddit