Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf ·...
Transcript of Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf ·...
![Page 1: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!](https://reader033.fdocument.pub/reader033/viewer/2022041508/5e263306b5e34a195d5e50d7/html5/thumbnails/1.jpg)
Υ-‐01 Αρχιτεκτονική Υπολογιστών Ιεραρχία μνήμης: προχωρημένα θέματα
Αρης Ευθυμίου
![Page 2: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!](https://reader033.fdocument.pub/reader033/viewer/2022041508/5e263306b5e34a195d5e50d7/html5/thumbnails/2.jpg)
Το σημερινό μάθημα
Εικονική μνήμη και κρυφές μνήμες – Physical/Virtual indexing – Σκοπός: μείωση hit Ome
Τεχνικές σχετικές με associaOvity – pseudo-‐associaOvity, way-‐predicOon, vicOm cache
Αλγόριθμοι αντικατάστασης Lockup-‐free caches
2
![Page 3: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!](https://reader033.fdocument.pub/reader033/viewer/2022041508/5e263306b5e34a195d5e50d7/html5/thumbnails/3.jpg)
Εικονική μνήμη και cache
Απαραίτητη σε ένα σύγχρονο σύστημα Απαιτείται υποστήριξη από υλικό
– TLB για γρήγορη μετάφραση Πώς συνδιάζεται η μετάφραση με προσπέλαση κρυφής μνήμης;
Physically Indexed, Physically Tagged – πρώτα μετάφραση, μετά προσπέλαση κρυφής μνήμης
Virtually Indexed, Virtually Tagged – μετάφραση μόνο για αστοχίες κρυφής μνήμης
Virtually Indexed, Physically Tagged – ταυτόχρονη μετάφραση, προσπέλαση κρυφής μνήμης
Physically Indexed, Virtually Tagged
3
![Page 4: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!](https://reader033.fdocument.pub/reader033/viewer/2022041508/5e263306b5e34a195d5e50d7/html5/thumbnails/4.jpg)
Virtually Indexed, Virtually Tagged
Μετάφραση μόνο για αστοχίες κρυφής μνήμης – Το TLB δε θα είναι ενημερωμένο για εγγραφές, πληροφορία LRU
Ομώνυμες διευθύνσεις (homonyms) – Ιδιες εικονικές διευθύνσεις (διαφορετικών διεργασιών)
αντιστοιχούν σε διαφορετικές φυσικές διευθύνσεις
– Λύση: προσθήκη του Process ID (PID) στην εικονική διεύθυνση, ή άδειασμα (flush) της κρυφής μνήμης σε κάθε αλλαγή διεργασίας (context switch)
Συνώνυμες διευθύνσεις (synonyms) – Διαφορετικές εικονικές διευθύνσεις (διαφορετικών διεργασιών)
αντιστοιχούν στην ίδια φυσική διεύθυνση
4
![Page 5: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!](https://reader033.fdocument.pub/reader033/viewer/2022041508/5e263306b5e34a195d5e50d7/html5/thumbnails/5.jpg)
Virtually Indexed, Physically Tagged
Παράλληλη προσπέλαση TLB, cache – η σύγκριση των tag της cache θα γίνει μετά τη μετάφραση διευθ.
Δεν υπάρχουν ομώνυμες διευθύνσεις – το TLB πρέπει να περιέχει PID ή να αδειάζει σε αλλαγή
διεργασίας
Συνώνυμες διευθύνσεις μπορούν να υπάρχουν
5
TLB
Processor Core
VIPT Cache
Main Memory VA
hit
miss
cache line return
PA
![Page 6: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!](https://reader033.fdocument.pub/reader033/viewer/2022041508/5e263306b5e34a195d5e50d7/html5/thumbnails/6.jpg)
Αποφυγή συνωνύμων
Αν το a είναι 0 bits, ή το Set index βρίσκεται “δεξιότερα” του page offset, δεν μπορούν να υπάρχουν συνώνυμα – τυχόν συνώνυμες γραμμές θα είναι στο ίδιο set
Το μέγεθος page καθορίζει τη μέγιστη χωρητικότητα της κρυφής μνήμης (για direct mapped)
ή τον μέγιστο αριθμό των set – Max number of sets = page size / cache line size
6
VPN Page Offset
Cache Tag Set Index Line Offset
εικονική διεύθυνση
a
![Page 7: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!](https://reader033.fdocument.pub/reader033/viewer/2022041508/5e263306b5e34a195d5e50d7/html5/thumbnails/7.jpg)
Ανίχνευση συνωνύμων, a > 0
Μεταβολή του συστήματος μετάφρασης ώστε οι μοιραζόμενες σελίδες να έχουν ίδια τα a bits διευθύνσεων – ονομάζεται page colouring
Κάθε cache miss εξετάζει όλες τις πιθανές θέσεις/set για συνώνυμα – π.χ. για a=2, τα συνώνυμα μπορούν να βρισκονται σε 4 μόνο set
Ελεγχος συνωνύμων στη L2 cache – L2 direct mapped, δυσκολότερο αν είναι associaOve
– L2 physically indexed, physically tagged – L2 inclusive
7
![Page 8: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!](https://reader033.fdocument.pub/reader033/viewer/2022041508/5e263306b5e34a195d5e50d7/html5/thumbnails/8.jpg)
Συνώνυμα στο MIPS R10000 (L2)
Αποθήκευση του VPN[1:0] (που αντιστοιχεί στο a) στα tags της L2, επιπλέον του κανονικού tag
Εστω 2 συνώνυμες διευθύνσεις VA1, VA2 που διαφέρουν στο VPN[1:0], αλλά απεικονίζονται στην ίδια φυσική διεύθυνση PA
Υποθ. VA1, υπάρχει ήδη στις L1, L2 Προσπέλαση VA2 αστοχεί στην L1 Στην L2 θα υπάρχει ήδη η γραμμή, με το επιπλέον PPN
(VA1)[1:0], που θα πρέπει να αντικατασταθεί
8
VPN 12 bit
10 bit 4-‐bit
![Page 9: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!](https://reader033.fdocument.pub/reader033/viewer/2022041508/5e263306b5e34a195d5e50d7/html5/thumbnails/9.jpg)
Way-‐associaOve caches
Βελτιώνουν το miss rate, μειώνουν conflict misses – law of diminishing returns
Αυξάνουν το hit Ome και την κατανάλωση ενέργειας – προσπέλαση πολλαπλών ways και επιλογή του way που ευστοχεί – τα δεδομένα όλων των υπόλοιπων δεν χρησιμοποιούνται
Ενδιαφέρουσες τεχνικές: Way-‐predicOon
– πρόβλεψη του way που θα ευστοχήσει Faking-‐associaOvity
– Μικρές αλλαγές σε direct-‐mapped ώστε να έχει όφελος παρόμοιο με way associaOve
VicOm cache – μειώνει conflict misses χωρίς associaOvity
9
![Page 10: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!](https://reader033.fdocument.pub/reader033/viewer/2022041508/5e263306b5e34a195d5e50d7/html5/thumbnails/10.jpg)
Column-‐associaOve cache
Βασική ιδέα:
Κοινή direct-‐mapped cache Δεύτερη ευκαιρία αν υπάρχει αστοχία: re-‐hash τη
διεύθυνση (αντιστοίχιση σε άλλη γραμμή της cache)
Το hashing πρέπει να είναι απλό, π.χ. αντιστροφή του msb του index – το tag πρέπει να επεκταθεί ώστε να περιέχει το επιπλέον bit
Η διαπίστωση αστοχίας παίρνει λίγο παραπάνω χρόνο
10
![Page 11: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!](https://reader033.fdocument.pub/reader033/viewer/2022041508/5e263306b5e34a195d5e50d7/html5/thumbnails/11.jpg)
Column-‐associaOve cache
Δύο είδη ευστοχίας (hit): με διαφορετικούς χρόνους Η MRU γραμμή θα πρέπει να έχει γρήγορο hit
– Ανταλλαγή των 2 γραμμών του ψεύτο-‐set Προσπέλαση: a,b,c,b,c,b,c,…
– a, b έχουν ίδιο index, c διαφέρει στο msb του index από τις a,b
Σε μία κανονική 2-‐way με LRU – οι πρώτες, a,b,c είναι miss, μετά πάντα hit
Στη Column AssociaOve Cache:
11
a a b c a a b
![Page 12: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!](https://reader033.fdocument.pub/reader033/viewer/2022041508/5e263306b5e34a195d5e50d7/html5/thumbnails/12.jpg)
Skewed associaOve cache
Η χρήση απλής αντιστοίχισης διεύθυνσης σε cache index προκαλεί συχνά συγκρούσεις ακόμη και σε set-‐associaOve caches
Μια λύση είναι η χρήση διαφορετικής αντιστοίχισης (hash) σε κάθε way
Η χρήση αλγόριθμου αντικατάστασης LRU είναι δύσκολη
12
![Page 13: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!](https://reader033.fdocument.pub/reader033/viewer/2022041508/5e263306b5e34a195d5e50d7/html5/thumbnails/13.jpg)
Way predicOon
Πρόβλεψη του way που έχει τη γραμμή – δεν γίνεται προσπέλαση στα άλλα ways – Χρησιμοποιείται για περιορισμό κατανάλωσης ενέργειας – Αν η πρόβλεψη αποτύχει: προσπέλαση σε άλλα ways – Μεταβλητός χρόνος hit
Διάφορες τεχνικές πρόβλεψης: – Most recently used way (στον R10K μαζί με pseudo-‐associaOve) – Σε συνδιασμό με τον branch predictor στον Alpha 21264
Εχει μεγαλύτερα ποσοστά επιτυχούς πρόβλεψης σε I$
13
![Page 14: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!](https://reader033.fdocument.pub/reader033/viewer/2022041508/5e263306b5e34a195d5e50d7/html5/thumbnails/14.jpg)
VicOm cache
Μικρός buffer με μεγάλη associaOvity – 4 – 64 γραμμές
«Πίσω» από την κρυφή μνήμη Περιέχει γραμμές που πρόσφατα εκδιώχθηκαν
(evicted) από τη L1
Κάθε miss της L1 εξετάζει τη vicOm cache πρίν προσπελάσει το επόμενο επίπεδο ιεραρχίας – αν hit, ξαναφέρνει τη γραμμή στη L1
Μειώνει τα conflict misses – αυξάνει λίγο το miss penalty
14
![Page 15: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!](https://reader033.fdocument.pub/reader033/viewer/2022041508/5e263306b5e34a195d5e50d7/html5/thumbnails/15.jpg)
Αλγόριθμοι αντικατάστασης
Σε associaOve caches υπάρχουν αρκετές επιλογές για κάθε αντικατάσταση – η επιλεγόμενη γραμμή λέγεται θύμα (vicOm)
Ο πιο γνωστός αλγόριθμος αντικατάστασης είναι ο least recently used (LRU) – στηρίζεται στην αρχή τοπικότητας αναφορών
Ακριβή υλοποίηση σε υλικό για associaOvity >= 8 – για m-‐ways, υπάρχουν m! δυνατές κατατάξεις
– άρα απαιτούνται τουλάχιστον log2(m!) bits
Προσεγγιστικοί αλγόριθμοι LRU Αλγόριθμος NMRU (not most recently used)
15
![Page 16: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!](https://reader033.fdocument.pub/reader033/viewer/2022041508/5e263306b5e34a195d5e50d7/html5/thumbnails/16.jpg)
Αλγόριθμος LRU (matrix) Κάθε θέση γραμμής κρατάει πληροφορίες για το χρόνο
τελευταίας προσπέλασης – επιπλέον του tag, dirty, valid – πρέπει να ανανεώνεται (ανάγνωση, εγγραφή) σε κάθε
προσπέλαση χωρίς να επηρεάσει το κύκλο ρολογιού
16
0
1
2
3
0 1 2 3
![Page 17: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!](https://reader033.fdocument.pub/reader033/viewer/2022041508/5e263306b5e34a195d5e50d7/html5/thumbnails/17.jpg)
Tree PLRU
Η σειρά των προσπελάσεων καταγράφεται σε ένα δυαδικό δέντρο – τα φύλλα αντιστοιχούν στα ways και δεν αποθηκεύουν τίποτα – Χρειάζονται m-‐1 bit για m ways (για m δύναμη του 2)
Το θύμα επιλέγεται ακολουθώντας το δέντρο – Αν ο κόμβος είναι 0, πήγαινε αριστερά, αν 1, δεξιά
Κάθε προσπέλαση αλλάζει τις τιμές των κόμβων που διάσχισε έτσι ώστε να δείχνουν προς την αντίθετη μεριά από το φύλλο που αντιστοιχεί στο MRU
17
![Page 18: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!](https://reader033.fdocument.pub/reader033/viewer/2022041508/5e263306b5e34a195d5e50d7/html5/thumbnails/18.jpg)
Tree PLRU operaOon
Path shows the vicOm
18
![Page 19: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!](https://reader033.fdocument.pub/reader033/viewer/2022041508/5e263306b5e34a195d5e50d7/html5/thumbnails/19.jpg)
Tree PLRU operaOon Previous allocaOon changes tree nodes to point away from last way (0)
Path for next vicOm
19
![Page 20: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!](https://reader033.fdocument.pub/reader033/viewer/2022041508/5e263306b5e34a195d5e50d7/html5/thumbnails/20.jpg)
Tree PLRU operaOon
20
![Page 21: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!](https://reader033.fdocument.pub/reader033/viewer/2022041508/5e263306b5e34a195d5e50d7/html5/thumbnails/21.jpg)
Tree PLRU operaOon
Now we have a hit in way 4. Not a new allocaOon as in previous steps
21
![Page 22: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!](https://reader033.fdocument.pub/reader033/viewer/2022041508/5e263306b5e34a195d5e50d7/html5/thumbnails/22.jpg)
Tree PLRU operaOon
Nodes 202, 205 were poinOng away from way 4 already, so they don’t change!
22
![Page 23: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!](https://reader033.fdocument.pub/reader033/viewer/2022041508/5e263306b5e34a195d5e50d7/html5/thumbnails/23.jpg)
Αλγόριθμος NMRU
1 bit για κάθε way Σε κάθε hit, το bit παίρνει τη τιμή 1 Περιοδικά, όλα τα bits μηδενίζονται
– ή/και όταν όλα γίνουν 1 Για αντικατάσταση επιλέγεται η «πρώτη» way που έχει
τιμή 0 – η θέση που ξεκινάμε την αναζήτηση αλλάζει με round-‐robin
23
![Page 24: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!](https://reader033.fdocument.pub/reader033/viewer/2022041508/5e263306b5e34a195d5e50d7/html5/thumbnails/24.jpg)
Sector cache
Τα tags μιας κρυφής μνήμης καταλαμβάνουν σημαντικό ποσοστό του συνολικού χώρου της
Χρησιμοποιώντας (πολύ) μεγάλες γραμμές, μειώνεται ο αριθμός των απαιτούμενων bit για tags – αλλά αυξάνεται ο χρόνος μεταφοράς ολόκληρων γραμμών
μεταξύ cache, κύριας μνήμης – επιπλέον, σε πολυεπεξεργαστές, αυξάνεται η πιθανότητα false
sharing
Sector cache: χωρίζει γραμμές σε υπο-‐τμήματα (sector) και μεταφέρει μόνο sectors μεταξύ επιπέδων της ιεραρχίας μνήμης – καθε sector χρειάζεται ξεχωριστό valid bit
![Page 25: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!](https://reader033.fdocument.pub/reader033/viewer/2022041508/5e263306b5e34a195d5e50d7/html5/thumbnails/25.jpg)
Lockup-‐free (non-‐blocking) caches
Επιτρέπουν προσπελάσεις μετά από 1 ή περισσότερες αστοχίες – hit-‐under-‐miss
– hit under mulOple miss, miss under miss
Δεν έχουν νόημα χωρίς – εκτέλεση εκτός σειράς – ιεραρχία μνήμης που δεν
επιτρέπει πολλαπλές προσπελάσεις σε εξέλιξη
Εξετάζουμε μόνο αναγνώσεις – Εγγραφές: βλ. write-‐buffer
25
![Page 26: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!](https://reader033.fdocument.pub/reader033/viewer/2022041508/5e263306b5e34a195d5e50d7/html5/thumbnails/26.jpg)
Miss Status Holding Registers
MSHR αποθηκεύει πληροφορία σχετική με την αστοχία:
αν η καταχώρηση είναι έγγυρη διεύθυνση της γραμμής που αστόχησε
– με δυνατότητα παράλληλης (associaOve) αναζήτησης για κάθε load/store σχετική με τη γραμμή:
– είδος, μέγεθος προσπέλασης – block offset – ο αριθμός φυσικού καταχωρητή που θα φορτώσει την τιμή ή
store buffer
26
![Page 27: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!](https://reader033.fdocument.pub/reader033/viewer/2022041508/5e263306b5e34a195d5e50d7/html5/thumbnails/27.jpg)
MSHR λειτουργία
Κάθε νέο miss ελέγχει όλους τους MSHRs – αν η γραμμή υπάρχει, προσθέτει πληροφορία – αλλιώς, χρησιμοποίησε ελεύθερο MHSR – αλλιώς, stall
Κάθε cache refill ή μέρος του, ελέγχει όλους τους MSHRs – αν η γραμμή υπάρχει, ψάχνει αν μια load/store περιμένει τη λέξη
και τη γράφει στον αντίστοιχο καταχωρητή – γράφει στην κρυφή μνήμη
Οταν το refill ολοκληρωθεί – ο αντίστοιχος MSHR ενημερώνεται ως μη έγγυρος
27
![Page 28: Υ0 1%Αρχιτεκτονική%Υπολογιστώνefthym/Site/gradCAR_files/adv_cache1.pdf · Εικονικήμνήμηκαι cache! Απαραίτητη!σεένα!σύγχρονο!σύστημα!](https://reader033.fdocument.pub/reader033/viewer/2022041508/5e263306b5e34a195d5e50d7/html5/thumbnails/28.jpg)
Non-‐uniform cache access
Μεγάλες μνήμες δεν υλοποιούνται ως ένα ενιαίο ορθογώνιο από κελιά μνήμης – οργανώνονται ως μικρότερα “arrays” (mats) – κάποια bit της διεύθυνσης επιλέγουν ένα από τα arrays
Σε αρκετά μεγάλες μνήμες (μερικά Mbytes) η διαφορά καθυστέρησης δεν είναι ομοιομορφη – κοντινά arrays έχουν μικρότερη καθυστέρηση από μακρινά
Οι NUCAs δεν κρύβουν τις διαφορές καθυστέρησης Θέματα τοποθέτησης δεδομένων
– στατική ή δυναμική