Transputer

Categories:Hardware, Tech
Tags:,
ScorpioGr

Το Transputer είναι μια σειρά πρωτοποριακών μικροεπεξεργαστών από τη δεκαετία του ’80, με ενσωματωμένες μνήμες και σειριακές επικοινωνιακές συνδέσεις, που προορίζονται για παράλληλες υπολογιστικές εφαρμογές. Κάποτε υπήρχε μια εταιρία που λεγότανε INMOS, μια Βρετανική εταιρία σχεδιασμού και κατασκευής επεξεργαστών. Μην ξεχνάτε οτι μιλάμε για την δεκαετία του ’80, τότε που ακόμα τα.. «σοβαρά» μηχανήματα είχαν διαστάσεις καταψύκτη.

Αυτή η εταιρία λοιπόν κατασκεύασε τότε ένα τσιπ, που σήμερα σχεδόν έχει ξεχαστεί, ενώ κατά την ταπεινή μου άποψη, ΈΤΣΙ ακριβώς θα έπρεπε να είχε κινηθεί η τεχνολογία των υπολογιστών γενικότερα.

Το εν λόγω chip λοιπόν λεγότανε «TRANSPUTER«. Αν και ήταν μια εμπορική αποτυχία, ο σχεδιασμός του σίγουρα επηρέασε τις εξελίξεις και σήμερα φαίνεται καθαρά αυτό.

Η ΑΡΧΙΚΗ ΙΔΕΑ:

Στις αρχές του ’80 οι συμβατικές CPU είχανε φτάσει τα όρια τους για τα δεδομένα της εποχής. Το ποσό των τρανσίστορ που μπορούσε να διαθέτει ένα ‘ολοκληρωμένο’ είχαν περιοριστεί από τις συνθήκες, από ένα αδύναμο fabing process να κατασκευάσει επεξεργαστές κάτω από ένα ορισμένο σημείο απόστασης μεταξύ των τρανσίστορ.

Φάνηκε τότε, ότι ο μόνος τρόπος να αυξηθεί η επίδοση ενός υπολογιστή, ήταν η παράλληλη λειτουργία περισσότερου του ενός επεξεργαστών με σκοπό την παράλληλη επεξεργασία περισσότερων της μίας εργασίας ταυτόχρονα σε επίπεδο hardware και όχι software. Ήταν προφανές από τότε ότι αυτή θα είναι η λύση του μέλλοντος.


ΤΟ TRANSPUTER (in theory):

To tranputer (transistor computer) ήταν ο πρώτος επεξεργαστής γενικής χρήσης με δυνατότητα παραλληλίας σε επίπεδο υλικού (hardware linked parallel processing system). Ο σκοπός ήταν να παραχθεί μια γενιά επεξεργαστών με διάφορες κλίμακες ισχύος (και ανάλογες κλίμακες κόστους) οι οποίοι να συνδέονται παράλληλα ώστε να σχηματίσουν ένα πλήρες υπολογιστικό σύστημα. Το όνομα επιλέχθηκε ακριβως για να δείχνει ότι ο ρόλος των διάφορων transputers θα μπορούσε να ποικίλει, π.χ. να παίζουν ρόλο βασικών τμημάτων λειτουργίας, όπως τα κλασικά τρανσίστορς παλαιότερα.

Ο σκοπός ήταν το κάθε transputer να κοστίζει λίγα χρήματα. Η INMOS είχε σκοπό να τους χρησιμοποιεί σε κάθε τμήμα του υπολογιστή. Π.χ. ένα για κεντρικό επεξεργαστή, ένα για τον ήχο, ένα για το σύστημα γραφικών, ένα για τον έλεγχο της μνήμης, ένα για τον έλεγχο των συσκευών, κ.λ.π.

Επίσης η απίστευτα ανοικτή αρχιτεκτονική τους, τους επέτρεπε όταν π.χ. υπήρχαν spare cycles από ένα transputer (αν π.χ. ηταν idle) να χρησιμοποιούνται για την υποβοήθηση κάποιου άλλου που είχε περισσότερο όγκο δεδομένων προς επεξεργασία.

Φωτογραφία από πρωτότυπη πλακέτα σε δοκιμές (ωπα, ψήκτρα σε επεξεργαστή το 1983 ;))

Ένα άλλο πλεονέκτημα που τους προσέφερε η αρχιτεκτονική τους, ήταν η επί της ουσίας απουσία διαύλου, καθώς υπήρχε μόνο ένα κεντρικό data channel με πρόσβαση ενιαία για κάθε chip (δεν ήταν απαραίτητη η ύπαρξή του data bus όπως το γνωρίζουμε από τα pc, και έχει ξαναγίνει και μετέπειτα από το ’80 από την Silicon Graphics σε συνεργασία με την DEC/Alpha). Εκτός από τα προφανή πλεονέκτήματα που προσέφερε αυτή η τεχνική, σημειώστε ακόμα ένα: ο χρήστης μπορούσε να προσθέσει όσα transputer ήθελε με σκοπό να κάνει το σύστημα του πιο δυνατό καθώς η κατανομή της πολυδιεργασίας γινότανε on hardware by default!

..ΚΑΙ ΣΤΗΝ ΠΡΑΞΗ:

Το αρχικό σχέδιο του transputer περιλαμβάνει και τα serial data links που επιτρέπανε να επικοινωνεί με άλλα 4 transputers την φορά (ανά κύκλο λειτουργίας), το καθένα σε ταχύτητες 5, 10 και 20Mbit/s (ταχύτητες εξωφρενικές για το ’80). Λόγω αρχιτεκτονικής, η «ταχύτητα» επεξεργασίας μετριόταν σε Mbits/s αφού αυτό που μετρούσε δεν ήταν ο χρόνος επεξεργασίας αλλά η ταχύτητα διαμεταγωγής των transputer μεταξύ τους.

Ο δε αριθμός των συνολικών transputers στον «υπολογιστή» ήταν θεωρητικά απεριόριστος, αν και στην πράξη διάφοροι περιορισμοί της εποχής φτάνανε το πρακτικό νούμερο σε 32. Για να λύσει το πρόβλημα η Inmos κατασκεύασε ένα διακόπτη μηδενικής καθυστέρησης που συνέδεε ένα σύνολο 32 tranputers σε άλλο ανάλογο δίκτυο, κ.ο.κ.

Φωτογραφία από integer ray tracing program. Ναι όλα τα υπολογίζει η CPU σε real time (εν έτι 1984!)

Το σετ εντολών τους αποτελούταν από 8-bit instruction system διαιρεμένα σε opcodes & operand nibbles. Για να μην σας παιδεύω, το transputer χρησιμοποιούσε ένα μείγμα σετ εντολών που στην ανω ημιπερίοδο δούλευε με μία τεχνική που το ίδιο καθιέρωσε, με όνομα minimal instruction set computing ή M.I.S.C., ενώ στην κάτω ημιπερίοδο εκτελούσε λειτουργίες σχετιζόμενες με τον memory stack pointer & memory workflow registers.

Αν και πολλοί θεωρούσαν το transputer επεξεργαστή τεχνολογίας RISC (Reduced instruction set computing) κυρίως λόγω του απίστευτα ανεπτυγμένου μικροκώδικα, του μειωμένου σετ εντολών καθώς και λόγω της δυνατότητας εκτέλεσης πολύπλοκων memory-to-memory εντολών, στην πραγματικότητα δεν ήταν καθώς διέθετε μόνο τρεις data registers και καθόλου stack registers (τον ρόλο του εκτελούσαν οι data registers μόνο).


Η μνήμη του (τουλάχιστον ότι είδαμε στα πρωτότυπα) λεγότανε T-RAM (Transputer RAM) και σχεδιάστηκε από την ίδια την Inmos. Η TRAM ήταν μια daughterboard η οποία περιλάμβανε ένα transputer (στον ρόλο του memory controller), μνήμη και περιφερειακές συσκευές, σε όσο το δυνατόν απλούστερη κατασκευή.

Τα πρώτα transputers κατασκευάστηκαν το 1983 και βγήκαν στην αγορά το 1984. Η ταχύτητα του κρυστάλλου (αν και δεν έπαιζε τόσο πολύ ρόλο λόγω αρχιτεκτονικής) ήταν στα 5Mhz και μέσω πολλαπλασιαστή ανά transputer έιχαμε τoν «συνολικό» τους χρονισμό όσον αφορά το ρολόι του.

Το πρώτο πρωτότυπο (S43) ήταν 16bit ενώ παρουσιάστηκαν εκδόσεις στα 32bit (Τ414) αλλά και 64bit εκδόσεις με ενσωματομένo Floating Point Unit, με πρότυπο IEEE754.

http://en.wikipedia.org/wiki/IEEE754

Η τελευταία εκδοχή ήταν ο 64μπιτος T9000, ο οποίος εκτός των άλλως διέθετε υποστήριξη τεχνολογίας superscalar, σε αντίθεση με το προηγούμενο 64μπιτο μοντέλο (τον T800 που δούλευε στα 20 ή 25Mhz. Κάποια επόμενα μοντέλα του Τ800, οι T801 & T805 φτάσανε στα 30Mhz.).

Διέθετε όπως και οι προκάτοχοι του 64bit floating point unit, αλλά είχε 3 καταχωρητές ακόμα στο FPU και εξωτερικό σετ εντολών ειδικά για αυτό το σκοπό.

Διέθετε 16kb chip cache (ο πρακάτοχός του είχε 4Kb board cache και όχι On-chip) και είχε δυνατότητα δημιουργίας virtual channel processor, με αποτέλεσμα να υπάρχει δυνατότητα επιτέλους επικοινωνίας όλων των transputers ενός «δικτύου» ταυτόχρονα, ξεπερνώντας επιτέλους τον περιορισμό του Inmos data channel με τα μόνο 5 transputers να επικοινωνούν μαζί ανά κύκλο λειτουργίας.

Δυστυχώς εκεί ήταν και το τέλος της Inmos. Έχοντας ρίξει πολλά λεφτά σε μια σαφώς υποσχόμενη αλλά ανώριμη τεχνολογία δεν είχε την δυνατότητα να συνεχίσει την εξέλιξη και την υποστήριξη της.

Η αγορά είχε δείξει άπειρες φορές ενθουσιασμένη από τις επιδόσεις και την γενικότερη εικόνα του Transputer αλλά ταυτόχρονα είχε δείξει για μία ακόμη φορά απίστευτα διστακτική στο να αγκαλιάσει την νέα τεχνολογία.

Η Inmos πουλήθηκε τελικά στην SGS-Thompson (νυν STMicroelectronics)…

ΣΥΜΠΕΡΑΣΜΑΤΑ:

Τελικά το transputer ώθησε την τεχνολογία στο αντίθετο άκρο. Αντί να έχουμε εξειδικευμένες επεξεργαστικές μονάδες για ειδικές λειτουργίες του συστήματος, έχουμε τον ενίαίο CPU και τα βοηθητικά κυκλώματα (GPU, sound chip, κ.λ.π.). Ομως η Inmos και το Transputer έδωσε το έναυσμα για την παράλληλη επεξεργασία σε επίπεδο hardware κάτι που απολαμβάνουμε μόλις σήμερα με τους πολυπύρηνους επεξεργαστές (σε επίπεδο servers συνέβαινε αρκετά χρόνια πριν αλλά ήταν τεχνολογία πάνάκριβη και με ελαφρώς διαφορετική προσέγγιση.. αυτά μέχρι πρότινος).

Η κοντινότερη τεχνολογία στο transputer link (την τεχνολογία επικοινωνίας transputer-2-transputer) είναι το HyperTransport της AMD. Αν και είναι ικανό να κάνει message passing data, το HyperTransport σε αντίθεση με το transputer link, γενικα χρησιμοποιείται για το implementation της shared μνήμης του συστήματος μέσω αρχιτεκτονικής συμετρικού software multiprocessing.

Επίσης παρόμοια τεχνολογία με το transputer link διαθέτει ο επεξεργαστής του Sony Playstation 3, CELL Processor.

H Inmos ήταν η πρώτη εταιρία 25 χρόνια πριν που «είδε» ότι ο πόλεμος των Mhz, το «τσίτωμα» των διαύλων, και η «φυσική» πίεση στα άκρα των υλικών που αποτελούν έναν επεξεργαστή δεν αποδίδει στην επεξεργαστική ίσχύ τόσο, καθώς και σαν τεχνολογία ήταν περιορισμένων δυνατοτήτων.

Μπορεί να μην έγινε η επανάσταση τότε, αλλά φαίνεται ότι ακόμα και σήμερα αυτοί έπρεπε να την θυμούνται και να παραδειγματίζονται από αυτήν, δεν την έχουν ξεχάσει.

ATARI Transputer ATW800-20
Το μοναδικό μηχάνημα σχεδόν παραγωγής («σχεδόν» γιατί δεν βγήκε σε ευρεία παραγωγή ποτέ) βασισμένο σε Transputer ήταν το Atari Transputer Workstation ή ATW800-20 (βασισμένο αρκετά στο πρωτότυπο ABAQ transputer που η συνεχής επιδείξεις σε εκθέσεις χωρίς να βγαίνει κάτι σε παραγωγή είχε γίνει σχεδόν ανέκδοτο την εποχή εκείνη).

To ΑΒΑQ σε.. έκθεση (όπως συνήθως!)

Το ΑΤW 800 Αποτελούταν από τρία βασικά τμήματα:

1. Το motherboard που στέγαζε ένα Transputer T800-20 και 4mb RAM.

H θηριώδης motherboard του ATW800.

2. Ένα ολοκληρωμένο τσιπ που περιλάμβανε ένα MEGA ST σε ρόλο Ι/Ο controller

Ο Μega ST σε ρόλο I/O card

3. Το υποσύστημα γραφικών Blossom με 1mb DP-RAM (dual-ported Ram, http://en.wikipedia.org/wiki/DPRAM).

Blossom video adapter

Όλα συνδέονταν με το transputer μέσω transputer link των 20mbits/s. Επίσης το board μπορούσε να δεχτεί τις περίφημες farm cards (daughterboards με σκοπό την επέκταση του υπολογιστή με πολλαπλά transputers) με μέγιστο αριθμό 17 ακόμα transputers. To κάθε ένα είχε συχνότητα ρολογίου 20Mhz με θεωρητική απόδοση 10 Μips έκαστο. Δηλαδή περίπου 170+ mips.

Επίσης υπήρχε εξωτερικός διαύλος (αυτό ήταν υλοποίηση της Atari καθώς ο αρχικός σχεδιασμός του transputer δεν το περιλάμβανε) με σκοπό την σύνδεση περισσότερων -εξωτερικών πλέον και μέσω διαύλου- farm cards.

To logo του HeliOS

Το λειτουργικό σύστημα λεγότανε Helios, βασισμένο αρκετά σε Unix. Mια βασική διαφορά ήταν ότι δεν επέτρεπε memory protection γιατί το transputer δεν διεθετε memory management unit (MMU). Αυτό δεν ήταν πρόβλημα γιατί η αρχιτεκτονική του transputer το έκανε να μην ειναι τόσο σημαντική έλλειψη (stack based architecture).

Ετσι το Helios μπορούσε να τρέξει διάφορα προγράμματα σχεδιασμένα για Unix π.χ. X-windows σαν GUI.

Επισης το Helios έτρεχε με όλα τα transputers ενεργά για να επεξεργάζονται δεδομένα σε real time, με αποτέλεσμα την σαφώς καλύτερη κατανομή εργασιών μεταξύ τους σε σχέση με το αρχικό σχεδιασμό που είχε κατά νου της η Inmos.

Τέλος ακόμα και αν έκλεινε η τροφοδοσία σε ένα workstation (αν υποθέσουμε ότι είχαμε πολλά συνδεδεμένα σε ένα δίκτυο εξωτερικών farm cards) τα υπόλοιπα συνέχιζαν να επεξεργάζονται δεδομένα κανονικά χωρίς πρόβλημα αφού μεταφέρονταν αυτόματα στα ενεργά transputers.

Μπορείτε να βρείτε περισσότερες πληροφορίες σχετικά με το λειτουργικό εδώ: http://www.classiccmp.org/transputer/helios.htm

Το Blossom/Χ11 сhip:

To σύστημα γραφικών Blossom είχε τα εξής τεχνικά χαρακτηριστικά:

1280×960, 16 χρώματα on-screen από παλέττα 4096

1024×768, 256 χρώματα on-screen από παλέττα 32 bit

640×480, 256 χρώματα on-screen από παλέττα 32 bit

512×480, σε 32 bit «true color»

Ηταν εντυπωσιακά χαρακτηριστικά για γραφικά υπολογιστή εκείνη την εποχή.

Επίσης το Blossom είχε δυνατοτητα για διάφορα hardware effects με συνολικό fill rate 128Mpixels, διέθετε blitter (κάτι σαν πολύ γρήγορη graphics-dedicated cache memory), και καποιες hardware 3D δυνατότητες (π.χ. z-buffer, texture mapping).

Ήταν ακόμα ένα εντυπωσιακό μηχάνημα που εν τέλει το έφαγε κι αυτό το μαύρο σκοτάδι (όπως π.χ. και τον εξαιρετικό για την εποχή του Acorn Archimedes).

«…sequential computers are approaching a fundamental physical limit on their potential power. Such a limit is the speed of light…»

A. L. DeCegama, 1989

«To achieve higher performance, computers are increasingly relying on parallel processing. Parallel processing computers require memory systems with high capacity and fast parallel access.»

B. Robinson, 1989

End of story…

Σας άρεσε??? Διαδώστε το!!!

Αφήστε μια απάντηση

Name*
Email*
Url
Το μήνυμά σας*

Μπορείτε να τα χρησιμοποιήσετε HTML tags και τα χαρακτηριστικά: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>