Τελικά το SNES είναι πραγματική 16αμπιτη κονσόλα;
Super Nintendo Entertainment System η αλλιώς SNES, ES EN E ES και Super Famicom
(δηλαδή Family Computer) όπως και το έλεγαν στην χώρα του ανατέλλοντος ηλίου.
Η κονσόλα ήταν 4ης γενιάς και κυκλοφόρησε στις 21 Νοεμβρίου του 1990 στην γενέτειρα της την Ιαπωνία και έπειτα την είδαμε στην Ευρώπη στις 30 Αυγούστου το 1993.
Το 2003 σταμάτησε η επίσημα η υποστήριξη της.
Στο hardware κομμάτι είδαμε τη Nintendo για πρώτη φορά να τσιγκουνεύεται και να χαντακώνει το μηχάνημα τοποθετώντας στο τιμόνι έναν χαμηλών επιδόσεων κεντρικό επεξεργαστή για τα δεδομένα της εποχής, ανίκανο να τροφοδοτήσει επάξια το εξελιγμένο υποσύστημα γραφικών με πολύτιμα data.
Σα να μην έφτανε αυτό, έκανε και άλλη στραβοτιμονιά τοποθετώντας ελάχιστη μνήμη στο chip ήχου με αποτέλεσμα τα samples, δηλαδή οι δειγματοληψίες του ήχου να είναι μικρές.
Για να έχουν μεγαλύτερη διάρκεια χαμήλωναν την ανάλυση των samples, ρίχνοντας έτσι τη ποιότητα και τη σκαπούλαραν με ένα “φίλτρο” για να κρύψουν το χάλι.
Αυτό είχε ως αποτέλεσμα τη γνωστό muffled – μουντό ήχο που διακρίνουμε στη κονσόλα.
Τέρμα όμως με αυτά και πάμε στο ερώτημα που μας καίει (όσους από εμάς)
Τελικά το SNES είναι πραγματική 16αμπιτη κονσόλα?
Δυστυχώς πάλι θα λοξοδρομήσουμε λίγο για να δούμε τι πραγματικά καθορίζει κάτι τέτοιο στη καθημερινότητα των υπολογιστικών συστημάτων.
Ένας επεξεργαστής λοιπόν ξεχωρίζει από τα παρακάτω:
- Συχνότητα λειτουργίας
- Στους πόσους κύκλους – παλμούς δηλαδή χτυπάει το ρολόι του Hz, KHz, MHz, GHz.
- Σε πόσους κύκλους μπορεί να εκτελέσει μια εντολή, πχ μερικές χρειάζονται 1 – 4 η και 8 κύκλους.
- Το εύρος της πληροφορίας που μπορεί να επεξεργαστεί εσωτερικά (Internall Databus)
- Το εύρος της πληροφορίας που μπορεί να κυκλοφορήσει στα υπόλοιπα υποσυστήματα μέσο του εξωτερικού διαύλου (External Databus) από τα pins.
- Ο δίαυλος προσπέλασης μνήμης (Address Bus)
- Η Αριθμητική και Λογική Μονάδα (ALU Arithmetic logic unit)
- Συνεπεξεργαστής εσωτερικός ή εξωτερικός όταν αυτός είναι διαθέσιμος όπως η Μονάδα Επεξεργασίας Κινητής Υποδιαστολής (FPU Floating Point Unit) για μαθηματικά συμπίεσης η δημιουργίας 3D απεικονίσεων.
Όλα τα παραπάνω ενορχηστρώνονται από τα κανάλια της Απευθείας Προσπέλασης Μνήμης,
DMA (Direct Memory Access)
Πάμε να δούμε τον κεντρικό επεξεργαστή του SNES λοιπόν.
Είναι ο Ricoh 5A22, μια υλοποίηση του WDC 65C816.
Η CPU αυτή είναι η δεκαεξάμπιτη έκδοση του επιτυχημένου MOS6502 που υπήρχε σε κονσόλες και υπολογιστές της εποχής όπως NES και Commodore 64 κτλ.
Ο 65816 ήταν κεντρικός επεξεργαστής και στο Apple IIGS και με το 8bit mode του, είχε συμβατότητα με το παλαιότερο Apple ][.
Στο SNES όμως δεν είχαμε backwards compatibility με το NES.
Η συχνότητα λειτουργίας του ήταν σε τρεις ταχύτητες μιας και το bus επέτρεπε τη διαβάθμιση αυτή.
Έτσι είχαμε 2.68 ή 3.58 MHz όταν είχε πρόσβαση στο Bus A και 1.79 MHz μόνο όταν λειτουργούσε τον ελεγκτή της σειριακής θύρας.
Η μάξιμουμ απόδοσή του άγγιζε το 1.5 MIPS (εκατομμύρια εντολές το δευτερόλεπτο)
Ας αναλύσουμε τα παρακάτω σχηματικά:
Οι ακροδέκτες (pins) που είναι μαρκαρισμένοι
στο σχεδιάγραμμα, είναι το external data bus.
Ενώ λοιπόν εσωτερικά έχουμε 16bit καταχωρητές (registers), εξωτερικά έχουμε 8bit.
Η CPU λειτουργεί έτσι ώστε να δίνει ανά μισό κύκλο 8bit wide data και τα υπόλοιπα 8 στον άλλο μισό.
Το φαινόμενο αυτό λέγεται bottleneck, δηλαδή όπως όταν αδειάζουμε το νερό από ένα μπουκάλι και μας καθυστερεί τη ροή ο λαιμός του μπουκαλιού.
Στο address bus τώρα θα δούμε 24 διευθύνσεις
από την CA0 έως την CΑ23, δηλαδή ένα εύρος της τάξης των 24bit.
Αν κάνουμε την πράξη 2^24 x 1 byte θα πάρουμε αποτέλεσμα 16.177.216, δηλαδή όριο 16MB μνήμης.
Στο παρακάτω σχηματικό θα δούμε τη μητρική της κονσόλας.
Η κονσόλα διαθέτει 3 buses όπου και συνδέονται με διάφορα ολοκληρωμένα.
Έχουμε λοιπόν:
- BUS A : 24bit wide address bus
Αυτό είναι και το κεντρικό bus διεύθυνσης μνήμης όπου και είναι υπεύθυνο για την επικοινωνία του επεξεργαστή με το cartridge, την SRAM και τη κεντρική μνήμη WRAM.
- BUS B : 8bit wide address bus
Δευτερεύον bus διεύθυνσης μνήμης όπου επικοινωνεί με την APU του ήχου και τα 2 PPUs για τα γραφικά.
- CPU BUS : 8bit wide data bus D0-D7
Το κεντρικό bus της CPU όπου ελέγχεται από τα 2 address buses για να μεταφέρει πληροφορίες
σε διάφορα ολοκληρωμένα.
Το bus αυτό μπλοκάρετε όποτε η CPU έχει παραπάνω από 1 DMA νήμα.
Έχει εύρος 1 byte και η CPU τροφοδοτείτε από 16-bit registers.
Αυτό έχει ως αποτέλεσμα πως ένας 16bit καταχωρητής ΠΟΤΕ δεν μπορεί να γίνει read/write σε έναν κύκλο παρά μόνο σε 2.
Τελικό πόρισμα*
Κάποιοι θεωρούν πως τα bits σε ένα μηχάνημα το καθορίζει ο επεξεργαστής, άλλοι η μητρική πλακέτα.
Εγώ ακολουθώ πάντα τη δεύτερη μέθοδο διοτί πιστεύω είναι αυτή που καθορίζει τη ροή των δεδομένων.
Το να έχεις 16bit αποτελέσματα από μια CPU και να έρχονται στον τελικό χρήστη σε 2 δόσεις των 8… δεν είναι το πραγματικό αποτέλεσμα που περιμένεις.
Χρειάζεται το διπλό χρόνο, αλλά και αρκετό CPU overhead για να γίνει κάτι τέτοιο.
Αν λοιπόν αποδεχτούμε πως το SNES είναι 16bit, τότε όλα τα υπόλοιπα μηχανήματα όπως τα Megadrive, Amiga και αρκετά arcades με 68000 ως κεντρικό επεξεργαστή θα είναι 32bit.
Και αυτός είναι 32bit εσωτερικά μα με 16bit data bus.
Στην ίδια κατηγορία ανήκουν τα PC Engine, Atari Falcon και Jaguar.
Τα συμπεράσματα δικά σας.
Δημήτρης Αθανασίου (aka VincentGR)
12/03/2019
Για τη Retropolis.gr
*Η παραπάνω μελέτη είναι προσωπική και δεν είναι πιστοποιημένη από πραγματικό hardware engineer.
Δεν έχω κάποιο μίσος για την κονσόλα και παρακαλώ μη το δείτε σαν κόντρα, απλά είναι μια απορία που προσπαθώ να λύσω.