Προς το περιεχόμενο

Multi-Channel Memory vs RAID


Apollo69

Προτεινόμενες αναρτήσεις

  • Απαντ. 53
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Συχνή συμμετοχή στο θέμα

Δημοσιευμένες Εικόνες

Όταν έγραψα για "απλούστευση" νωρίτερα, το έκανα για συγκεκριμένο λόγο: Οι μνήμες είναι οργανωμένες σε πίνακες, οπότε διευθυνσιοδοτείται γραμμή/στήλη (εξ ου και τα RAS και CAS που βλέπεις και αναγράφονται) και διαβάζεις τη συγκεκριμένη διεύθυνση (δεν θα αναλύσω τα bursts γιατί θα το μπερδέψω το πράγμα). Ο δίσκος έχει διαφορετική λογική στην ανάγνωση/εγγραφή, με μεταφορά μεγαλύτερου όγκου δεδομένων ανά εντολή και πολύ πιο μεγάλο χρόνο προσπέλασης, οπότε οι δύο προσεγγίσεις δεν είναι άμεσα συγκρίσιμες.

Αν επίσης δεις πώς γίνεται η οργάνωση αρχείων στον δίσκο, θα δεις ότι θα πρέπει να διαβαστεί ένας πίνακας αρχείων ο οποίος θα σε κατευθύνει στο πού είναι σκόρπια τα κομμάτια του αρχείου.

Υπάρχει ο τρόπος να έχεις δύο δίσκους σε ένα χωρίς striping, το JBOD, αλλά δεν έχει ιδιαίτερα πλεονεκτήματα.

Πάμε στα περί αντιγράφων: Το "αντίγραφο" το κάνεις στο RAID 1 με το σκεπτικό να έχεις αντοχή σε βλάβη δίσκου. Σαν επιπλέον μπόνους είναι η αυξημένη ταχύτητα ανάγνωσης, όπου μπορείς να φέρεις μισό τόνο από κάθε αποθήκη, άρα να χρησιμοποιήσεις και τους δύο δρόμους σου ταυτόχρονα.

Α, επίσης, είναι striping (stripe == ρίγα), κι όχι stripping (strip == απογυμνώνω)

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

5 ώρες πριν, Apollo69 είπε

Έχεις 2 δρόμους και 2 αποθήκες (1 δρόμο για κάθε αποθήκη διπλάσιους εργάτες κλπ κλπ κλπ). Dual channel

 

Όταν έχεις να στείλεις 1 τόνο εμπορεύματα πρός τις αποθήκες θα τα μοιράσεις να πάνε 500 κιλά στην μια 500 κιλά στην άλλη; Ή θα κάνεις "αντίγραφο" των εμπορευμάτων για να στείλεις 1 τόνο στην 1 αποθήκη και 1 τόνο στην άλλη; Πως θα τα μοιράσεις πως θα γίνει η κατανομή στις αποθήκες;

 

Όταν έχεις να πάρεις εμπορεύματα από την αποθήκη μπορείς να πάρεις 500 από την 1 και 500 από την άλλη;

 

 

Αυτό δεν μπορεί να γίνει με τους σκληρούς; Γιατί πρέπει να γίνει stripping στους σκληρούς; Ποιο είναι το κόστος του τρόπου που λειτουργεί το dual channel υπάρχει κάποιος κίνδυνος; To λογισμικό/υλισμικό είναι ακριβό;

Για το dual channel έλεγα. Έχεις 2 αποθήκες (2 modules) πως ακριβώς θα γίνει το data spread?

46 λεπτά πριν, Orestis_G είπε

Όταν έγραψα για "απλούστευση" νωρίτερα, το έκανα για συγκεκριμένο λόγο: Οι μνήμες είναι οργανωμένες σε πίνακες, οπότε διευθυνσιοδοτείται γραμμή/στήλη (εξ ου και τα RAS και CAS που βλέπεις και αναγράφονται) και διαβάζεις τη συγκεκριμένη διεύθυνση (δεν θα αναλύσω τα bursts γιατί θα το μπερδέψω το πράγμα). Ο δίσκος έχει διαφορετική λογική στην ανάγνωση/εγγραφή, με μεταφορά μεγαλύτερου όγκου δεδομένων ανά εντολή και πολύ πιο μεγάλο χρόνο προσπέλασης, οπότε οι δύο προσεγγίσεις δεν είναι άμεσα συγκρίσιμες.

Αν επίσης δεις πώς γίνεται η οργάνωση αρχείων στον δίσκο, θα δεις ότι θα πρέπει να διαβαστεί ένας πίνακας αρχείων ο οποίος θα σε κατευθύνει στο πού είναι σκόρπια τα κομμάτια του αρχείου.

Υπάρχει ο τρόπος να έχεις δύο δίσκους σε ένα χωρίς striping, το JBOD, αλλά δεν έχει ιδιαίτερα πλεονεκτήματα.

Πάμε στα περί αντιγράφων: Το "αντίγραφο" το κάνεις στο RAID 1 με το σκεπτικό να έχεις αντοχή σε βλάβη δίσκου. Σαν επιπλέον μπόνους είναι η αυξημένη ταχύτητα ανάγνωσης, όπου μπορείς να φέρεις μισό τόνο από κάθε αποθήκη, άρα να χρησιμοποιήσεις και τους δύο δρόμους σου ταυτόχρονα.

Α, επίσης, είναι striping (stripe == ρίγα), κι όχι stripping (strip == απογυμνώνω)

 

Αλλά καλή νομίζω ήταν η αναλογία αποθήκης module.

 

Πως ακριβώς γίνεται το data spread στο dual channel εκεί που είχες 1 τόνο να αποθηκεύσεις "δημιουργείς" δεύτερο τόνο που έχει την ανάγκη να αποθηκευτεί;

 

Τι γίνεται με την χωρητικότητα τότε στην dual channel memory.

 

Έχεις 4gb μνήμη αλλά το κάθε module μόνο του θα είχε χωρήτικότητα 4gb; Αν σου χαλάσει το ένα module την ώρα που είναι σβηστός ο υπολογιστής χάνεις την μισή ταχύτητα αλλά η χωρητικότητά σου μένει ανέπαφη;

 

Είμαι απρόσεκτος και κάνω συχνά ορθογραφικά (μεγάλο πρόβλημα με τα διπλά σύμφωνα)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Φαντάσου την αναλογία αποθήκης - module, αλλά οι αποθήκες να περιέχουν ραφιέρες με κουτιά συγκεκριμένου μεγέθους. Ο ένας τόνος θα μοιραστεί σε αυτά τα κουτιά. Έτσι πλησιάζει λίγο παραπάνω.

Αν χαλάσει το 1 module μνήμης θα πέσεις στη μισή χωρητικότητα, αλλά και θα έχεις και το μισό εύρος ζώνης. Ας πούμε αν είχες τις δύο αποθήκες και φορτηγά να πηγαίνουν ταυτόχρονα τα κιβώτια, φαντάσου ότι γκρεμίζεται η μία αποθήκη. Αντί για 2 φορτηγά, φεύγει 1.

 

Στο dual channel της μνήμης και στο RAID 0 μοιράζεις τα δεδομένα, άρα δεν αλλάζεις χωρητικότητα. Στο RAID 1 γράφεις τα ίδια και στους 2 δίσκους ταυτόχρονα, άρα ρίχνεις στο μισό τη χωρητικότητα.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

17 ώρες πριν, Orestis_G είπε

Η απλή απάντηση εδώ είναι το interleaving: Ο memory controller γράφει μεν και στα δύο κανάλια, αλλά δεν κάνει stripe τα δεδομένα της  μνήμης. Μπορείς να διαβάσεις τα μπλοκ της μνήμης από το ένα module που απέμεινε. Στην περίπτωση του RAID 0 που τα δεδομένα είναι μοιρασμένα, χρειάζεσαι και τους δύο δίσκους για να διαβάσεις.

Δεν κατάλαβα είσαι ο memory controller (εργοδηγός) και έχεις να αποθηκεύσεις 1 τόνο. Που τα στέλνεις; Μισά μισά; Για να έχεις το κεφάλι σου ήσυχο για ασφάλεια πέρνεις και άλλο 1 τόνο και στέλνεις 1 από εδώ 1 από εκεί; Αν τα στείλεις μισά μισά πως τα στέλνεις (με πια λογική) ώστε να μπορείς να εξυπηρετηθείς και από τις 2 μαζί μετά όταν θες να τα ανασύρεις;

Το striping είναι μια λογική. (is the technique of segmenting logically sequential data, such as a file, so that consecutive segments are stored on different physical storage devices.). Αν δεν κόψεις λογικώς διαδοχικά δεδομένα πως τα στέλνεις μισά μισά; Έχεις να στείλεις 500 κιλά στην μια αποθήκη (στο 1 module) και 500 κιλά στην άλλη. Πως αποφασίζεις;

 

Προσπαθώ να καταλάβω που θα αποθηκευτεί και τι. Στις ραφιέρες κάθε αποθήκης θα αποθηκευτεί 1 τόνος ή 500 κιλά;

 

Ο ένας τόνος θα σου καταλαμβάνει χώρο συνολικά στις 2 αποθήκες μαζί 2 τόνων ή 1;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Κατ' αρχάς στις περιπτώσεις του dual channel στη μνήμη, και του RAID 0 στον δίσκο δεν έχουμε διπλασιασμό των δεδομένων. Ο 1 τόνος στην περίπτωσή σου θα αποθηκευτεί μισός - μισός. Εν τούτοις, η αναλογία δεν είναι απόλυτα σωστή. Δεν θα μπω σε λεπτομέρειες, εσύ μείνε στο μισό  - μισό της αποθήκευσης.

Ο διπλασιασμός των δεδομένων υπάρχει μόνο  στο RAID 1.
 

Στη μνήμη γράφονται ένα κάρο πράγματα, από εκτελέσιμο κώδικα μέχρι caching, μέχρι προσωρινά δεδομένα. Ο επεξεργαστής επιπλέον εκτελεί πολλαπλές διεργασίες. Επίσης, ένας 64 bit επεξεργαστής χρησιμοποιεί λέξεις των 64 bit. Τα δεδομένα λοιπόν, όπως γράφονται στη μνήμη, μπορεί να είναι κομμάτια από διαφορετικά πράγματα, δηλαδή να μην είναι λογικώς διαδοχικά.

Στο δίσκο, φαντάσου ότι στέλνεις έναν μεγάλο όγκο δεδομένων, και χρησιμοποιείται ένα συγκεκριμένο μέγεθος μπλοκ (π.χ. 16KB). Στο παράδειγμα  μίας εικόνας jpg με περίπου 3,5MB μέγεθος, αυτό αντιστοιχεί σε 219 μπλοκ (υπολογίζω με βάση 1000 αντί 1024 για μεγαλύτερη ευκολία, και γιατί οι κατασκευαστές δίσκων έτσι μετρούν). Στην περίπτωση του RAID 0  λοιπόν θα είχες τα μονά μπλοκ να είναι στον πρώτο δίσκο, και τα ζυγά στον δεύτερο.

Η ανάγνωση στις δύο περιπτώσεις όπως σου ξαναέγραψα έχει διαφορετική λογική. Στη μνήμη θα διευθυνσιοδοτήσεις για να διαβάσεις συγκεκριμένη γραμμή, ενώ στο δίσκο θα ανατρέξεις στο File Allocation Table ή στην αντίστοιχη μέθοδο του συστήματος αρχείων που χρησιμοποιείς, και θα βρεις τα κομμάτια που συνθέτουν το αρχείο που θες να διαβάσεις. Ο controller θα είναι υπεύθυνος για να τα μαζέψει από τους δίσκους του RAID 0.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

1 ώρα πριν, Orestis_G είπε

Στο δίσκο, φαντάσου ότι στέλνεις έναν μεγάλο όγκο δεδομένων, και χρησιμοποιείται ένα συγκεκριμένο μέγεθος μπλοκ (π.χ. 16KB). Στο παράδειγμα  μίας εικόνας jpg με περίπου 3,5MB μέγεθος, αυτό αντιστοιχεί σε 219 μπλοκ (υπολογίζω με βάση 1000 αντί 1024 για μεγαλύτερη ευκολία, και γιατί οι κατασκευαστές δίσκων έτσι μετρούν). Στην περίπτωση του RAID 0  λοιπόν θα είχες τα μονά μπλοκ να είναι στον πρώτο δίσκο, και τα ζυγά στον δεύτερο.

Ενώ στο dual channel; Ποια είναι η διαφορά; Ποια μπλοκ θα πάνε στο πρώτο module και ποια στο δέυτερο;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αν ξεχάσουμε όλες τις άλλες διαδικασίες που γίνονται και φανταστούμε απλά μια μεγάλη μεταφορά στη μνήμη, ας πούμε ένα DMA transfer από το δίσκο, μπορείς να θεωρήσεις ότι θα γίνει κάτι αντίστοιχο με την εγγραφή στο RAID 0 (να μην μπλέξω με ganged vs unganged mode)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Στις 17/11/2023 στις 10:35 ΜΜ, JPaxilleas είπε

Όχι. Η εν λόγω αρχιτεκτονική δεν έχει καμία σχέση με το data stripping. Η αρχιτεκτονική μνήμης πολλαπλών καναλιών (multi-channel) είναι μια τεχνολογία που απλά αυξάνει το ρυθμό μεταφοράς δεδομένων μεταξύ της μνήμης DRAM και του ελεγκτή μνήμης, προσθέτοντας περισσότερα κανάλια επικοινωνίας μεταξύ τους. Θεωρητικά, αυτό πολλαπλασιάζει το ρυθμό δεδομένων ακριβώς αναλογικά με τον αριθμό των καναλιών που υπάρχουν (π.χ. η μνήμη δύο καναλιών / Dual-channel memory χρησιμοποιεί δύο κανάλια, κ.ο.κ.).

 

Αυτό με μπέρδεψε. "Απλά αυξάνει" και "Προσθέτοντας περισσότερα κανάλια επικοινωίας".

 

Δεν έχουμε όμως 2 δρόμους που εξηπηρετούν την ίδια αποθήκη (δεν φτιάξαμε μόνο 1 παραπάνω δρόμο συνδεδεμένο με την ίδια αποθήκη και τελειώσαμε).

 

Μαζί με τον έξτρα δρόμο (κανάλι επικοινωνίας) έχουμε και μια έξτρα αποθήκη.

 

Το "κάτι αντίστοιχο" είναι τελείως γενικό και αόριστο. Στο RAID 0 θα έχουμε τα μονά μπλοκ στον 1 και τα ζυγά στον άλλο. Λογικές αλληλουχίες. Έχω ένα σχήμα που τα εξηγεί ικανοποιητικά στο επίπεδο που με ενδιαφέρει. 

image.png.88a5736cf55273c36d2a3725924e1636.png

Με τα 2 (ενδεχομένως 3 ή 4) module τι γίνεται; Το κάτι αντίστοιχο είναι σαν μια λίγο από γιουβέτσι.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Πώς ορίζεις την αποθήκη; Αν με τον όρο "αποθήκη" εννοείς κάθε ανεξάρτητο module τότε σε αυτό καταλήγει μια λωρίδα ενός δρόμου 2 (dual channel) 3 (triple) ή 4 (quad) λωρίδων. Καλύτερα να φανταστείς ως αποθήκη ένα κτιριακό συγκρότημα, το οποίο έχει 2/3/4 κτίρια. Ο δρόμος καταλήγει εκεί, και μέσα από την πύλη χωρίζεται σε λωρίδες που πάνε στο κάθε κτίριο. Στο dual channel έχεις συνήθως 2 συμπλέγματα με 2 κτίρια το καθένα.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

6 λεπτά πριν, Orestis_G είπε

Πώς ορίζεις την αποθήκη; Αν με τον όρο "αποθήκη" εννοείς κάθε ανεξάρτητο module τότε σε αυτό καταλήγει μια λωρίδα ενός δρόμου 2 (dual channel) 3 (triple) ή 4 (quad) λωρίδων. Καλύτερα να φανταστείς ως αποθήκη ένα κτιριακό συγκρότημα, το οποίο έχει 2/3/4 κτίρια. Ο δρόμος καταλήγει εκεί, και μέσα από την πύλη χωρίζεται σε λωρίδες που πάνε στο κάθε κτίριο. Στο dual channel έχεις συνήθως 2 συμπλέγματα με 2 κτίρια το καθένα.

 

Μια αποθήκη είναι το μεμονομένο κτίριο. Όπως δρόμος είναι η "λωρίδα". Που λες εσύ. Όχι δεν είναι λωρίδα αλλά δρόμος λωρίδες έχει π.χ η Αλεξάνδρας που κάποιος αποφάσισε να πει λωρίδα 1. λωρίδα 2, λωρίδα 3, αλλιώς θα ήταν 1 εννιαία οδός με φυσική συνέχεια (στο πλάτος). Δεν μπορείς να πεις ότι 3 παράλληλες οδοί είναι λωρίδες όμως (ακόμα και αν κάποιες πλησιάζουν αφάνταστα). Λόγω τις φυσικής διακριτότητας.

 

Γιατί δεν νομίζω ότι είναι αμιγώς λογικό το θέμα (κάποιος έκοψε την Αλεξάνδρας σε 3 και 3 λωρίδες αλλιώς είναι 1 ενιαία).

 

Το channel δεν έχει φυσική υπόσταση; Δεν είναι ένα καλώδιο; Δεν είναι φυσικώς διακριτά; Ακόμα και αν ήταν 3 σύρματα περιτυλιγμένα στο ίδιο πλαστικό θα είχαν διακριτότητα.

 

Καλύτερο να φαντάζομε αποθήκη ως κτιριακό συγκρότημα γιατί; Αποθήκη είναι το κάθε module. Φυσικά το κάθε κτίριο έχει δικά του ράφια δικά του δωμάτια αλλά αυτά είναι λεπτομέρειες που δεν ενδιαφέρομαι.

 

Όπως αποθήκη είναι ο κάθε 1 από τους 3 δίσκους εδώ

image.png.d7db6b8a1e418cae04fa72fe8462a15e.png

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Όταν αναλύουμε κάτι, κάνουμε και τις λεγόμενες "παραδοχές" για να διευκολύνουμε τη ζωή μας, αλλά ΟΚ, δεν σου αρέσουν οι λωρίδες, ας τις βγάλουμε απ' το κάδρο.

 

Έχεις λοιπόν 4 οικόπεδα, με κάποια από αυτά να έχουν αποθήκες επάνω, και κάποια όχι. 4 δρόμοι οδηγούν σε αυτά. Αν έχεις λοιπόν και στα 4 αποθήκες, ή αν έχεις μόνο στα 1 και 3 ή μόνο στα 2 και 4, τότε μόνο μπορείς να στείλεις 2 φορτηγά ταυτόχρονα στους αντίστοιχους δρόμους

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

3 ώρες πριν, Apollo69 είπε

Το "κάτι αντίστοιχο" είναι τελείως γενικό και αόριστο. Στο RAID 0 θα έχουμε τα μονά μπλοκ στον 1 και τα ζυγά στον άλλο. Λογικές αλληλουχίες. Έχω ένα σχήμα που τα εξηγεί ικανοποιητικά στο επίπεδο που με ενδιαφέρει. 

image.png.88a5736cf55273c36d2a3725924e1636.png

Με τα 2 (ενδεχομένως 3 ή 4) module τι γίνεται; Το κάτι αντίστοιχο είναι σαν μια λίγο από γιουβέτσι.

 

Και οι ερώτηση είναι πως. Οκ θα χρησιμοποιήσεις και τις 2 αποθήκες. Πως ακριβώς;

 

Στο RAID 0 έχουμε τα μονά στον 1 τα ζυγά στον άλλο.

 

Κάπως έτσι image.png.021219fef70cfdfb7fce6c4718080201.png

Στη RAM τι γίνεται; Ποιο είναι το αντίστοιχο σχήμα με Triple Channel; Πως θα κάνουμε segment τα data. Ποιο μπλοκ θα πάει που;

 

Το κάτι αντίστοιχο είναι τελείως αόριστο.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Οπότε τι θες; Πλήρη ανάλυση; Στο έγραψα και πιο πάνω: Αν π.χ. έχεις ένα μεγάλο DMA transfer από το δίσκο μπορεί να είναι και με αντίστοιχο τρόπο η εγγραφή, αλλά με διαφορετικά block sizes. Όμως στη μνήμη γίνεται ένας γενικός χαμός. Γράφουν οι διάφορες συσκευές, γράφουν οι επεξεργαστές, μιας και τα σύγχρονα συστήματα είναι multicore κ.λπ. Συχνά επίσης οι μνήμες λειτουργούν σε unganged mode, οπότε παίζουν πιο κοντά στη λογική του JBOD παρά του RAID 0.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

1 ώρα πριν, Orestis_G είπε

Οπότε τι θες; Πλήρη ανάλυση; Στο έγραψα και πιο πάνω: Αν π.χ. έχεις ένα μεγάλο DMA transfer από το δίσκο μπορεί να είναι και με αντίστοιχο τρόπο η εγγραφή, αλλά με διαφορετικά block sizes. Όμως στη μνήμη γίνεται ένας γενικός χαμός. Γράφουν οι διάφορες συσκευές, γράφουν οι επεξεργαστές, μιας και τα σύγχρονα συστήματα είναι multicore κ.λπ. Συχνά επίσης οι μνήμες λειτουργούν σε unganged mode, οπότε παίζουν πιο κοντά στη λογική του JBOD παρά του RAID 0.

Δεν λες μια ντουζίνα λέξεις πλήρη ανάλυση.

Μια (ανάλογη-αντίστοιχη) εικόνα θέλω και μια ντουζίνα λέξεις όπως segmenting logically sequential data so that consecutive segments are stored on different physical storage devices

image.png.5b9015e93026e5013a157efe7f9e27a6.png

 

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...