[Special] Geschreven door Paul S op 2003-01-29 16:34:19
DM: Het geheugen
Voor de mensen die nieuw zijn: DreamMachine is een feature van GameQube.nl waarin we zelf een console ontwerpen. Het is de bedoeling dat de console een realistisch geheel gaat vormen en dus niet zomaar uit wat astronomisch grote getallen bestaat. Een processor van 34OctaHertz is dus geen mogelijkheid. Net als 2TerraByte geheugen. Daarnaast moet alles ook nog eens in het teken staan van games, dus geen onnodige Super Audio CD playback. Voordat we verder gaan met onze console eerst een opsomming van de al besloten zaken: - Een minimale resolutie van 640x480p en maximaal 720x480p (de laatste gebruiken we voor berekeningen). - 60 (volledige) frames per seconde - 62.4 miljoen polygonen per seconde Wil je polygonen gebruiken dan zal al die informatie over die polygonen wel ergens opgeslagen moeten worden. Dit gebeurt uiteraard in het geheugen van een console. Maar nog grotere geheugen vreters dan polygonen zijn de textures in games. Een texture is in het geheugen niet meer dan een plaatje, maar plaatjes zijn stiekem toch geheugen verslinders. Een bitmap plaatje (vroeger het gangbare formaat texture) met een resolutie van 1024x756 pixels (zowat de huidige standaard scherm resolutie van PC’s) en een kleurdiepte van 24bit neemt al ruim 2.2MB geheugen in! Natuurlijk is het mogelijk om plaatjes te verkleinen qua aantal bytes dat ze innemen (op het web zijn er de GIF en JPEG standaards), maar ze zullen altijd omgezet moeten worden naar BMP’s om toegepast te kunnen worden. Nintendo heeft in de GameCube echter een techniek gestopt die gebruik maakt van gecomprimeerde textures die on-the-fly (dus tijdens het toepassen) omgezet worden. Er wordt hierdoor nergens een bitje verspild aan het opslaan. Alleen de gecomprimeerde gegevens worden opgeslagen. Deze zijn tot 6 keer kleiner dan BMP’s en slaan ook transparante delen op (standaard 24bit BMP’s kunnen geen transparante delen hebben (32bit BMP’s wel)). De techniek die dit mogelijk maakt heet S3 Texture Compression. Deze techniek maakt het mogelijk om plaatjes met transparante delen 6 keer kleiner te maken. Een plaatje van 6MB zou dus nog maar 1MB groot zijn. Wisten jullie dat bijna alle huidige games maar maximaal zo’n 200-300MB groot zijn? Dat zijn alle essentiële onderdelen van een game (en dat zou een grote game zijn) zoals kern-code, geometrie en AI. De rest van het schijfje wordt gevuld met zaken als textures, muziek en filmpjes. Zoals ik al zei, een texture kan erg veel geheugen innemen, om maar niet te spreken over muziek en vooral filmpjes. Het mooie van muziek en filmpjes is dat ze ook snel enorm veel ruimte opnemen (oké midi muziek niet). Ook spraak kan al snel enkele MB’s weg snoepen. Voor de meeste van deze zaken zijn al oplossingen gevonden. De meeste aangedragen door Factor 5, een 3rd party-developer van Nintendo, meest bekend om Rogue Leader. Check de onderstaande technologieën maar eens: MORT MORT is een techniek om spraak te comprimeren. De maximale compressie ratio is 15:1, wat dus erg veel is. Een voorbeeldje voor wat dat betekend. Een 16bit 8KHz Mono (goed genoeg voor spraak, luister maar naar de beste speech op de N64) spraak sample kon op de N64 met 5% processor tijd gedecomprimeerd worden. Dit was dus op de N64! Bij de GameCube zou dit nog geen 1% van de processor tijd betekenen. Bij een next-gen console dus nog minder! Maar let op. Bij deze geluidskwaliteit kun je in 4MB geheugen ongeveer 56 minuten aan gesproken tekst stoppen! Dat is bijna 1 uur!!! DivX for GameCube Dit is duidelijk neem ik aan. DivX laat je Filmpjes comprimeren en voor de GameCube gebeurd dat in een ratio van 7:1 tot 10:1. Hier komt bij dat het ge-encode kan worden met snelheden van 2-3x sneller dan real-time. Een 7GB DVD (ongeveer The Matrix) zou 2 keer op een GameCube schijfje passen! Het is met deze techniek ook mogelijk om filmpjes direct op Polygonen te plakken. Daarnaast kan het hele pakket gebruikt worden met de MusyX software van Factor 5. Dit is ook weer een hele handige techniek om te gebruiken in een Next-gen console zoals de DreamMachine (want daar gaat het allemaal over). MusyX MusyX is bij jullie misschien ook wel bekend. Het is in ieder geval het software pakket van Factor 5 waar zowel de N64 als de GameCube gebruik van maken, dus het zou logisch zijn om het voor een next-gen console ook te gebruiken. MusyX is eigenlijk een super MIDI speler. Het is mogelijk om de gehele midi afdeling van een console te herprogrammeren (inclusief effecten) zodat het precies aangepast kan worden aan de mogelijkheden die een developer wil hebben. De software bestaat al langer en wordt naast de N64 en GC ook gebruikt in de GameBoy Color en Advance. Je kunt wel stellen dat er dus al veel ervaring mee is opgedaan. De mogelijkheden van MusyX zijn eigenlijk inbeperkt. Je kunt de muziek beïnvloeden terwijl hij speelt. Dus een reverb of echo toevoegen terwijl de muziek speelt is erg simpel. Hierdoor krijg je ook de sublieme geluidseffecten in bijvoorbeeld donkey Kong 64 of Banjo-Tooie (ga maar eens een stukje onder water zwemmen), maar ook de muziek in Star Fox Adventures is hier mee gemaakt. Het hele pakket kan ook nog eens samenwerken met zowel Divx als MORT, dus het zou stom zijn om dit pakket niet te gebruiken in een next-gen console. Oh, ja het begon allemaal om ruimte. Na deze technieken moeten we nog snel de mogelijkheden noemen om andere data te comprimeren. Zo maakt de GameCube het mogelijk om zowel zijn vertex als animatie data te comprimeren (effectief wordt alles dan 2 keer zo klein), wat niet alleen ruimte in het geheugen scheelt, maar ook bandwijdte. En dan nu de beslissingen. De GameCube heeft een goede architectuur, waar erg veel developers enthousiast over zijn. Ik heb me voorgenomen om die dan ook grotendeels te behouden. Het is makkelijk voor de developers, want die hebben er ervaring mee, maar het kan het verkrijgen van ports tegen gaan. Lees hier meer over in het forum. Hier moeten we dus ook rekening mee houden. De GameCube heeft 3 soorten geheugen: -Main geheugen: 24MB groot, razendsnel en duur -A-geheugen: 16MB groot, langzaam en goedkoop -GPU geheugen: Klein (3.2MB), razendsnel en erg duur Mijn idee voor de DreamMachine was: -Main geheugen: 72MB 1T-SRAM (zelfde type als nu gebruikt wordt) -A-geheugen: 128MB SD-RAM (sneller dan DRAM, wat voor de GC gebruikt wordt) -GPU geheugen: wordt besproken op het moment dat we het over de GPU gaan hebben. Maar toen ik dit had opgeschreven, kwam ik ook tot een andere opstelling namelijk: -Main geheugen: 256MB DDR-RAM (Double-Data Rate, 2 keer zo snel als SD-RAM op dezelfde kloksnelheid) of zelfs 256MB RDRAM (tikkie sneller qua latency, maar kan wel op hogere kloksnelheden lopen). -En eventueel extra 24MB 1T-SRAM om de GPU te ondersteunen, dus niet in de GPU, maar erbuiten. Dit geheugen is razendsnel en er kunnen makkelijk textures in opgeslagen worden. Dankzij S3TC zou dit geheugen gelijk staan aan 144MB geheugen voor normale textures! -Daar komt dan nog het GPU geheugen bij. Mijn vraag is dus nu, wat vinden jullie ervan? Het laatste is niet eens zo’n slecht idee. Hoewel zowel DDR- als DR-RAM minder efficiënt met hun bandwijdte omgaan dan 1T-SRAM, zijn ze beide wel goedkoper (als je dezelfde hoeveelheid wil kopen) en je levert een grote brok geheugen mét veel bandwijdte aan developers. De keus is aan jullie. Sorry overigens voor het wat rommelige artikel. Ik ben in het begin iets te veel opgegaan in m’n geheugen-besparings-verhaal. Hetr artikel ging iets te lang duren dus ik heb het maar snel afgekapt. Tot de volgende keer!