Σχεδίαση στατικών μνημών RAM Γιώργος Δημητρακόπουλος Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Φθινόπωρο 2008 ΗΥ422 1
Περιεχόμενα μαθήματος Οργάνωση μνημών τυχαίας προσπέλασης (Random Access Memories RAM) Κελί αποθήκευσης Λειτουργία ανάγνωσης - εγγραφής Επιλογή μεγεθών των τρανζίστορ Περιθώρια θορύβου Καθυστέρηση ανάγνωσης/εγγραφής Φυσικό σχέδιο πίνακα μνήμης Αποκωδικοποιητής και φυσικό σχέδιο Περιφερειακά κυκλώματα μνήμης Χρονισμός λειτουργιών Φθινόπωρο 2008 ΗΥ422 2
Oργάνωση μνήμης Σκοπός μας είναι να σε έναν δεδομένο εμβαδό να μπορέσουμε να αποθηκεύσουμε όση περισσότερη πληροφορία μπορούμε Διαισθητικά η μνήμη RAM είναι ένα μονοδιάστατος πίνακας Όταν «Διαβάζουμε» data-out = RAM[address] ; Όταν «Γράφουμε» RAM[address] = data-in ; Αυτή η οργάνωση δεν οδηγεί σε «εύχρηστο» φυσικό σχέδιο Αντίθετα χρησιμοποιούμε ένα δισδιάστατο πίνακα Αποκωδικοποιώντας κατάλληλα τις γραμμές και τις στήλες παίρνουμε τη ζητούμενη πληροφορία Φθινόπωρο 2008 ΗΥ422 3
Πίνακας μνήμης βασική δομή 2 n λέξεις των 2 m δυαδικών ψηφίων η καθεμία Οργάνωση:... wordlines bitline conditioning bitlines row decoder memory cells: 2 n-k rows x 2 m+k columns n-k n k column decoder 2 m bits column circuitry Πολύ ομοιόμορφος σχεδιασμός εύκολος στη σχεδίασης Αν στα στοιχεία μνήμης σχεδιαστούν κατάλληλα πετυχαίνουμε πολύ υψηλή πυκνότητα αποθήκευσης Φθινόπωρο 2008 ΗΥ422 4
Βασικό κελί αποθήκευσης Αν το D είναι 1 τότε το D_b οδηγείται στο 0 το οποίο με τη σειρά του οδηγεί το D να είναι 1 Θετική ανάδραση Φθινόπωρο 2008 ΗΥ422 5
Πως γράφουμε στο βασικό κελί Αντιστέκεται στην αλλαγή Για να καταφέρουμε να αντιστρέψουμε την τιμή από 1 σε 0 (Εγγραφή 0) πρέπει το access NMOS τρανζίστορ να «νικήσει» το PMOS τρανζίστορ Τότε ο κόμβος θα κινηθεί από το Vdd προς το Gnd Κατά τη μετάβαση ο άλλος αντιστροφέας θα ενεργοποιηθεί και θα «κλείσει» το PMOS τρανζίστορ που αντιστέκεται στη μετάβαση. Φθινόπωρο 2008 ΗΥ422 6
Πως γράφουμε οποιαδήποτε τιμή D En D En D En En En D D Επιλέγουμε τη διαφορική λύση για λόγους απλότητας και απλής καλωδίωσης Η ανάγνωση και η εγγραφή πραγματοποιούνται από τον ίδιο δρόμο. Αποτελείται από μία γραμμή επιλογής λέξης (wordline) και δύο γραμμές δυαδικών ψηφίων δεδομένων (bitline) Τα bit lines μεταφέρουν τα δεδομένα Φθινόπωρο 2008 ΗΥ422 7
Διαφορική εγγραφή Bάζουμε την τιμή που θέλουμε στο bit και την αντίθετη στο bit_bar H εγγραφή θα επιτευχθεί πάντα από την πλευρά που βάζουμε το 0 Συμμετρική αντιμετώπιση Φθινόπωρο 2008 ΗΥ422 8
Αποκωδικοποίηση γραμμής Row decoder drives one WL high, all other WLs low Exactly one cell is selected on each (, ) pair All other cells are disconnected from the bitlines Both Wordlines and Bitlines have high capacitance Wordlines drive a lot of xitor gates and interconnect Bitlines have a lot of S/D diffusion & interconnect Because of these caps it s challenging to make SRAM fast Φθινόπωρο 2008 ΗΥ422 9
Γενικός τρόπος λειτουργίας μνήμης SRAM To βασικό πρόβλημα των μνημών SRAM που χρησιμοποιούν το 6T κελί μνήμης είναι πως θα διαχωρίσουμε τις αναγνώσεις από τις εγγραφές Υπάρχει μόνο ένα wordline το οποίο πρέπει να είναι στο 1 τόσο για την ανάγνωση όσο και για την εγγραφή. Η λειτουργία διαφοροποιείται από τον τρόπο που χρησιμοποιούμε τα bitlines Ανάγνωση Αρχικά τόσο οι γραμμή Bit όσο και η Bit_b ξεκινούν με τιμή ίση με Vdd. Έτσι το λογικό-1 στα bitlines δεν την τιμή που έχει αποθηκευμένο το κελί. Το κελί θα αποφορτίσει μόνο μία από τις δύο bitlines Εγγραφή Το ένα bitline ωθείτε στο 0 ή στο 1 και το άλλο στην αντίθετη τιμή Η τιμή 0 νικάει το PMOS τρανζίστορ του αντιστροφέα που αντιστέκεται Φθινόπωρο 2008 ΗΥ422 10
Ανάγνωση από τα κελιά SRAM A_b bit_b 1.5 1.0 word bit 0.5 A 0.0 0 100 200 300 400 500 600 time (ps) Το πρόβλημα είναι πως στο bitline που έχει το 0 φορτίζεται στο Vdd και μπορεί να προκαλέσει flip του κελιού Αναμένουμε στον εσωτερικό κόμβο μια ΔV στιγμιαία αύξηση της τάσης Για να βρούμε το ΔV Ι Τ (saturation) = I N (linear). Όσο μεγαλύτερο το ρεύμα του Ν σε σχέση με το Τ τόσο μικρότερο το ΔV ΔV θέλουμε να είναι μικρό Vdd/6 έως Vdd/5 Επομένως I N 1.2-1.5 φορές Ι Τ Να μην μπορέσει το access τρανζίστορ να κάνει overpower το pull down Ο χρόνος αποφόρτισης του ενός bitline είναι μεγάλος εξαιτίας της μεγάλης χωρητικότητας του Φθινόπωρο 2008 ΗΥ422 11
Σύνοψη σχεδίασης κελιών SRAM Οι bitlines που είναι προφορτισμένες στο Vdd δεν πρέπει να νικήσουν το pull-down μονοπάτι των αντιστροφέων κατά την ανάγνωση. Access τρανζίστορ μικρότερα από τα pull-down Όταν μία από τις bitlines πέρνει τιμή 0 πρέπει να μπορεί να αντιστρέψει την τιμή του cell. Access τρανζίστορ μεγαλύτερα από τα pull-up που αντιστέκονται στην αλλαγή Τυπική επιλογή μεγεθών: Το μικρότερο επιτρεπτό τρανζίστορ (W=4λ, L=2λ) for PMOS Access ΝΜΟS (W=4λ, L=2λ) ώστε να υπερνικάει το PMOS κατά τις εγγραφές (Διπλάσιο ρεύμα) Το pulldown NMOS μεγαλύτερο από το access ΝΜΟS για να μην επιτρέπει μεγάλες διακυμάνσεις κατά το Read (W=6λ, L=2λ) (1.5 x μεγαλύτερο ~ ΔV = 0.17 0.2xVdd ) bit bit_b word med weak med A strong A_b Φθινόπωρο 2008 ΗΥ422 12
Φυσικό σχέδιο κελιών SRAM GND BIT BIT_B GND VDD N3 N1 WORD Cell boundary Σκοπός είναι να διαμοιράσουμε τόσο καλώδια όσο και επαφές Aυτό το φυσικό σχέδιο χρησιμοποιήθηκε για πολλά χρόνια από τη βιομηχανία Σε χρήση εν μέρει και σήμερα Γεννάει προβλήματα η μη-ενιαία κατεύθυνση των γραμμών της πολυσιλικόνης Φθινόπωρο 2008 ΗΥ422 13
Φυσικό σχέδιο κελιών SRAM-εναλλακτικές N3 N1 Vdd Gnd N1 N3 _b Nwell for PMOS Μοντέρνο φυσικό σχέδιο Ομοιόμορφη κατεύθυνση πολυσιλικόνης Πολλές άλλες επιλογές IBM Power 6 Φθινόπωρο 2008 ΗΥ422 14
Οργάνωση πίνακα κελιών H Mirror Horizontally Mirror Vertically V H Βασικός πυρήνας 4 κελιά μνήμης αντεστραμμένα κατάλληλα Ο βασικός πυρήνας των 4 κελιών εύκολα γενικεύεται σε διάφορα μεγέθη Φθινόπωρο 2008 ΗΥ422 15
Οργάνωση πίνακα κελιών (4x4) Στήλη 0 Στήλη 1 Στήλη 2 Στήλη 3 N1 N1 N1 N1 N3 N3 _b _b _b _b N3 N3 N3 N3 _b _b _b _b N3 N3 N1 N1 N1 N1 N1 N1 N1 N1 N3 N3 _b _b _b _b N3 N3 N3 N3 _b _b _b _b N3 N3 N1 N1 N1 N1 Οι γειτονικές συνδέσεις εμφανίζονται αυτόματα Διαμοίραση επαφών Τα Vdd/Gnd και τα Bitlines και Inverted Bitlines δρομολογούνται σε υψηλότερα επίπεδα μετάλλου (metal-2, metal-3) Φθινόπωρο 2008 ΗΥ422 16
Άλλες μορφές κελιών SRAM Περισσότερες πόρτες ανάγνωσης/εγγραφής Δύο πόρτες ανάγνωσης (single-ended) Μία πόρτα εγγραφής (πρέπει να ενεργοποιηθούν και τα δύο wordlines) Time-multiplex read and writes in the same cycle Επιτρέπει την ανεξάρτητη επιλογή μεταξύ δύο γραμμών ανάγνωσης ή εγγραφής Απαιτεί 2 wordlines και 4 bit lines Χρησιμοποιείται σε custom υλοποίηση FIFO μνημών Επιτρέπει τον καθαρισμό (εγγραφή 0) όλων των δυαδικών ψηφίων μιας στήλης σε έναν κύκλο Σε αντίθετη περιπτωση θα έπρεπε να διατρέξουμε όλες τις γραμμές μία-μία Χρησιμοποιείται για να καθαρίσει τα valid bits σε caches και TLB Φθινόπωρο 2008 ΗΥ422 17
Κυκλώματα προφόρτισης Κάθε bitline στη φάση της ανάγνωσης πρέπει να είναι προφορτισμένο στο Vdd Δυο PMOS τρανζίστορ αναλαμβάνουν την προφόρτιση Το επιπλέον τρανζίστορ εξασφαλίζει ότι τα bitlines έχουν ακριβώς την ίδια τάση Χρειάζεται στην περίπτωση που τα άκρα των bitlines οδηγούνται σε ένα διαφορικό ενισχυτή bit Pre bit_b bit Pre bit_b Φθινόπωρο 2008 ΗΥ422 18
Περιφερειακά κυκλώματα ανάγνωσης Στo τέλος των bitlines χρειαζόμαστε στατικές πύλες οι οποίες γρήγορα να αντιλαμβάνονται την πτώση του ενός bitline WL i Pre Όταν η χωρητικότητα των bitlines είναι πολύ μεγάλη η αποφόρτιση τους πολύ αργή. WL k. Για την αύξησης της ταχύτητας χρειαζόμαστε κυκλώματα (sense amplifiers) τα οποία να αντιδρούν όταν οι τάσεις των bit και bit_b έχουν διαχωριστεί για μερικές εκατοντάδες mv Πολύ πριν να δούμε την τάση του ενός να έχει φτάσει στο Gnd (Λεπτομέριες στη συνέχεια) D Low skew - Help Falling transitions D 8 1 Φθινόπωρο 2008 ΗΥ422 19
Περιφερειακά κυκλώματα εγγραφής Προφόρτισε τις γραμμές bitlines Ενεργοποίησε τη γραμμή επιλογής εγγραφής (W) και εφάρμοσε τα δεδομένα D H μια bitline θα πέσει στο 0 ενώ η άλλη θα μείνει στο 4. Απελευθέρωσε έναν παλμό για το wordline WL H τιμή του κελιού q είτε θα αλλάξει είτε όχι. Εξαρτάται από την προηγούμενη τιμή που είχε αποθηκευμένη Φθινόπωρο 2008 ΗΥ422 20
Πολύπλεξη στηλών Πολυπλέκτης στήλης Καταφέρνουμε να επιλέγουμε από φαρδιά wordlines μόνο τα cells που χρειαζόμαστε στην έξοδο Ο πολυπλέκτης στήλης συνήθως τοποθετείται μεταξύ των κελιών της μνήμης και των κυκλωμάτων εγγραφής και ανάγνωσης Ο αποκωδικοποιητής στήλης ίδιος με τον αποκωδικοποιητή γραμμής Φθινόπωρο 2008 ΗΥ422 21
Πολύπλεξη στηλών (2) Χρειαζόμαστε μια πλήρη transmission gate για τον πολυπλέκτη της στήλης Θέλουμε τα NMOS τρανζίστορς του transmission gate ώστε να μπορούμε να ωθούμε τα bitlines προς το 0 (Gnd) για τις εγγραφές Αντίθετα θέλουμε τα PMOS ώστε να περνάμε τιμές των bitlines κοντά στο VDD κατά τις αναγνώσεις Μην ξεχνάτε ότι τόσο κατά την ανάγνωση όσο και κατα την εγγραφή μοιραζόμαστε ένα κοινό δρόμο δεδομένων (τα σύρματα των bitlines) τα οποία μοιάζουν να συμπεριφέρονται σαν γραμμές διπλής κατεύθυνσης Φθινόπωρο 2008 ΗΥ422 22
Διαχωρισμένοι πολυπλέκτες στήλης Μπορείς να χωρίσεις τον πολυπλέκτη στήλης σε δύο μέρη και να το κάνεις μονής κατεύθυνσης Τα nmos για να ωθούν τις γραμμές προς το Gnd κατά τις εγγραφές Τα pmos για να επιτρέπουν τιμές κοντά στο Vdd για την ανάγνωση (Σε ορισμένες περιπτώσεις θα μπορούσαμε και αυτά να τα κρατήσουμε μόνο ΝΜΟS Φθινόπωρο 2008 ΗΥ422 23
Δενδρική πολύπλεξη στήλης Μπορούμε να φτιάξουμε τον πολυπλέκτη με μια δενδρική δομή Μπορούμε να αποφύγουμε τα pmos και να χρησιμοποιήσουμε μόνο nmos αν πριν την ανάγνωση προφορτίσουμε και την έξοδο του πολυπλέκτη στήλης και όχι μόνο τα bitlines Αποφέγουμε τη χρήση επιπλέον αποκωδικοποιητή στήλης A0 A0 B0 B1 B2 B3 B4 B5 B6 B7 B0 B1 B2 B3 B4 B5 B6 B7 A1 A1 A2 A2 Y to read / write circuits Y Φθινόπωρο 2008 ΗΥ422 24
Sense amplifiers Επιτάχυνση της ανάγνωσης Ας μην περιμένουμε ολόκληρη την αποφόρτιση του bit ή του bit_b Χρειαζόμαστε νέα κυκλώματα Nα «αισθάνονται» (sense) γρήγορα την αλλαγή του bit ή του bit_b προς το 0 Πρέπει να αρκούν κάποια εκατοντάδες mv για να αντιληφθούμε την τελική τιμή που θα λάβει το bit και το bit_b (Αρχικά και τα δύο σε Vdd) Να καταλαμβάνουν λίγο χώρο Θα χρησιμοποιούμε ένα sense amplifier για κάθε στήλη ή θα μοιράζουμε ένα μέσω του πολυπλέκτη στήλης σε περισσότερες στήλες (2 8) Φθινόπωρο 2008 ΗΥ422 25
Κυκλώματα sense amplifiers Δύο αντιστροφείς ο ένας μετά τον άλλο Ενα μονοπάτι προς τη γή που θα ελέγχεται από ένα επιπλέον σήμα χρονισμού (SenseEnable) Μόλις τα Bit και Bit_b ενεργοποιηθούν άνοιξε το μονοπάτι προς τη γη ώστε να ενεργοποιηθούν οι αντιστροφείς Η πλευρά με τη χαμηλότερη τάση θα πέσει γρήγορα στο 0 ενώ η άλλη θα παραμείνει στο Vdd Φθινόπωρο 2008 ΗΥ422 26
Ενναλακτικό κύκλωμα sense amplifier Τρείς φάσεις λειτουργίας Προφόρτιση των bitlines από το κύκλωμα προφόρτισης Δειγματοληψία των bitlines. Ανοίγουν τα isolation τρανζίστορ (, ) οπότε οι τιμές των bit και bit_b περνάνε στα sense και sense_b. Εκείνη τη στιγμή ανοίγει και το pull-down M1 τρανζίστορ Sense Enable H μικρή διαφορά μεταξύ του sense και του sense_b ενιχύεται από το ζευγάρι των αντιστροφέων. Αποκατάσταση Ανοίγουν Μ2 και Μ3 Η διαφορά δυναμικού μεταξύ του sense και του sense_b προκαλεί αλλαγή στο ρεύμα η οποία ενισχύει τη διαφορά δυναμικού wordline bit sense Μ2 Μ1 Μ3 bit_b isolation transistor regenerative amplifier sense_b Φθινόπωρο 2008 ΗΥ422 27
Παράδειγμα ανάγνωσης μέσω sense-amplifier Φθινόπωρο 2008 ΗΥ422 28