Pipe PDF

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 41

Υ-­‐01

 Αρχιτεκτονική  Υπολογιστών  
 Υπόβαθρο:  Διοχέτευση  

Αρης  Ευθυμίου  
Το  σημερινό  μάθημα  

  Υπόβαθρο:  Διοχέτευση  (Pipelining)  


–  Βασική  οργάνωση  
–  Δομικοί  κίνδυνοι    
–  Κίνδυνοι  δεδομένων  (hazards):  RAW,  WAR,  WAW  
–  Stall  (αναμονή,  σταμάτημα)  και  προώθηση  (forwarding)  
–  Κίνδυνοι  ελέγχου  
–  Ακριβείς  διακοπές  
–  Διοχετευμένες  λειτουργικές  μονάδες    

2
Βήματα  εκτέλεσης  εντολής  
  Από  το  μοντέλο  von  Neumann,  για  επεξεργαστές  RISC:  
1.  Fetch  –  προσκόμιση  εντολής,  από  τη  διεύθυνση  που  δείχνει  ο  PC  
(program  pointer)  
2.  Decode  –  αποκωδικοποίηση  
3.  Execute  –  εκτέλεση  
4.  Αποθήκευση  αποτελέσματος  και  ενημέρωση  του  PC  
  Μικρές  παραλλαγές  ανάλογα  με  το  είδος  εντολής,  π.χ.  
στο  3ο  βήμα:  
–  load/store:  υπολογισμός  διεύθυνσης  μνήμης  και  προσπέλαση  
–  branch:  υπολογισμός  νέου  PC  αν  η  διακλάδοση  ακολουθείται  
  Παρατήρηση:  δυνατή  η  επικάλυψη  βημάτων  

3
Διοχέτευση  -­‐  pipelining  
  Κάθε  έργο  A,  B,  …  διαιρείται  σε  n  δουλειές  (A1,  …,  An)  που  
εκτελούνται  με  τη  σειρά  
–  κάθε  δουλειά  απαιτεί  παρόμοιο  χρόνο  εκτέλεσης  
  Τα  έργα  περνούν  μέσα  από  n  στάδια  (stages)  
–  Το  i-­‐οστό  στάδιο  εκτελεί  την  i-­‐οστή  δουλειά  
–  Κάθε  δουλειά  εκτελείται  από  διαφορετικό  σταθμό  
  Εστω  ti  ο  χρόνος  εκτέλεσης  της  δουλειάς  Ai  και  tM=max{ti}  
  Με  γεμάτη  διοχέτευση,  ένα  έργο  τελειώνει  κάθε  tM  
  Αύξηση  ρυθμού  εκτέλεσης  έργων  
  Καθυστέρηση  ενός  έργου  n  x  tM  
–  μπορεί  να  είναι  μεγαλύτερη  από  t1  +  t2  +  …  +  tn  

4
Παράδειγμα  
  Πλύσιμο  πιάτων:  5  άνθρωποι,  4  βρώμικα  πιάτα  ο  καθένας  
  Δουλειές:  
–  μεταφορά  πιάτου  στη  κουζίνα  –  20  sec  
–  πέταγμα  υπολειμάτων  –  30  sec  
–  πλύσιμο  –  30  sec  
–  στέγνωμα  –  30  sec  
–  αποθήκευση  –  40  sec  
  Σειριακό  πλύσιμο:  4x5  x  (20+30+30+30+40)  =  3000  =  50m  
–  ρυθμός:  150  sec  το  πιάτο  
  Αν  βοηθήσουν  όλοι;  
–  κάθε  βήμα  θα  παίρνει  40  sec  

5
Διοχέτευση:  παρατηρήσεις  
  Ο  χρόνος  κάθε  σταδίου  πρέπει  να  είναι  παρόμοιος  
(balanced  pipeline)  
  Χρειάζεται  αποθήκευση  (buffering)  μεταξύ  σταδίων  για  
τις  μικροδιαφορές  του  χρόνου  εκτέλεσής  τους  
  Κάθε  έργο  περνά  από  όλα  τα  στάδια  και  με  την  ίδια  σειρά  
  Κάθε  στάδιο  πρέπει  να  έχει  διαθέσιμους  όλους  τους  
πόρους  που  χρειάζεται  για  να  λειτουργήσει  
–  αλλιώς  δομικός  κίνδυνος  (structural  hazard)  
  Διακοπές  προκαλούν  άδειασμα  της  διοχέτευσης  

6
Στοιχεία  υπόθ.  επεξεργαστή  
  RISC,  load-­‐store,  
  32  general  purpose  registers  (R0-­‐R31)  
  32bit  registers,  PC  
  Ξεχωριστές  Instruc‡on,  Data  caches  
–  υποθέτουμε  ότι  πάντα  έχουν  ό,τι  ζητηθεί  
Εντολές  
  Αριθμητικές,  λογικές:    Ri    Rj  op  Rk  
–  Το  Rt  μπορεί  να  αντικατασταθεί  από  μία  σταθερά  (immediate)  
  Μεταφορές  δεδομένων:    Ri    Mem[Rj  +  disp]  
  Αλλαγή  ροής:  br  (R  op  R),  disp  
–  Αν  η  συνθήκη  ισχύει,  PC  =  PC  +  disp  

7
Διαχωρισμός  σταδίων  
Εξετάζουμε  τη  load  που  χρειάζεται  τα  περισσότερα  βήματα:  
  Fetch   pipeline  
register  
  Decode  
  Execute  
  Memory  access  
  Writeback  

8
Στάδιο  προσκόμισης  εντολής  
Instruc‡on  Fetch  (IF)  
  Ανάγνωση  μνήμης  στη  διεύθυνση  που  δείχνει  ο  
καταχωρητής  PC  (program  counter)  
  Υπολογισμός  της  διεύθυνσης  επόμενης  εντολής:  PC+4  
–  κάθε  εντολή  είναι  4  bytes  
–  μνήμη  είναι  διευθυνσιοδοτημένη  σε  bytes  

9
Στάδιο  αποκωδικοποίησης  
Instruc‡on  decode/register  fetch  (ID)  
  Αποκωδικοποίηση  εντολής  
  Ανάγνωση  από  το  αρχείο  καταχωρητών  (register  file)  των  
(μέχρι)  2  καταχωρητών  πηγής  
  Επέκταση  προσήμου  του  τμήματος  offset  της  εντολής  
–  για  εντολές  με  σταθερά  κωδικοποιημένη  μέσα  στην  εντολή  
–  π.χ.  branch,  load,  store,  …  
  Υπολογισμός  PC  σε  περίπτωση  διακλάδωσης:  
–  PC  +  sgn-­‐ext(offset).    Σημ.  το  PC  έχει  ήδη  αυξηθεί  κατά  4  στο  
προηγούμενο  κύκλο  
  Πολλές  πράξεις  γίνονται  πρότερα,  ίσως  να  μή  χρειαστούν!  

10
Στάδιο  Εκτέλεσης  
Execu‡on  /  effec‡ve  address  (EX)  
  Εκτέλεση  αριθμητικών  πράξεων  ανάλογα  με  την  εντολή  
  Μεταφορές  από  μνήμη:  υπολογισμός  διεύθυνσης  
–  τιμή  καταχωρητή  +  σταθερά  (με  επέκταση  προσήμου)  
–  effec‡ve  address  =  base  register  +  offset  
  Εντολές  πράξεων  ALU  
–  η  ALU  εκτελεί  τη  κατάλληλη  πράξη  είτε  μεταξύ  τιμών  
καταχωρητών  ή  μεταξύ  σταθεράς  και  καταχωρητή.  
  Υπολογισμός  συνθήκης  για  εντολές  διακλάδοσης  

11
Στάδιο  προσπέλασης  μνήμης  
 Memory  access  (MEM)  
  Η  διεύθυνση  που  έχει  υπολογιστεί  στο  προηγούμενο  
κύκλο  χρησιμοποιείται  για  προσπέλαση  μνήμης  
  Εκτέλεση  εγγραφών  (store)  ολοκληρώνεται  εδώ.  

12
Στάδιο  επανεγγραφής  
Write-­‐back  
  Εντολές  load  γράφουν  τη  τιμή  που  διαβάστηκε  από  τη  
μνήμη  πίσω  στο  αρχείο  καταχωρητών  
–  και  οι  εντολές  ΑLU.  

13
Σχηματική  αναπαράσταση  

14
Διοχετευμένος  MIPS  

IF/ID ID/EX EX/MEM MEM/WB

4
M Branch
ADD u taken
x
Zero?
IR6..10

PC IR11..15 M
u
Instruction IR
x
memory MEM/WB.IR Registers ALU
M
u Data M
x memory u
x

16 32
Sign-
extend

15
Κίνδυνοι  διοχέτευσης  
  Αν  όλες  οι  εντολές  στη  διοχέτευση  ήταν  ανεξάρτητες,  
επίδοση  *=  αριθμός  σταδίων  
  Καταστάσεις  που  εμποδίζουν  μία  εντολή  να  εκτελεστεί  
στο  χρόνο  ρολογιού  που  της  αναλογεί  
–  κίνδυνοι  –  hazards  
  Δομικοί  -­‐  structural  hazards  
–  δεν  υπάρχει  αρκετό  υλικό  για  όλους  τους  δυνατούς  συνδιασμούς  
εντολών  της  διοχέτευσης  
  Δεδομένων  -­‐  data  hazards  
–  μία  εντολή  εξαρτάται  από  το  αποτέλεσμα  μιας  άλλης  
  Ελέγχου  -­‐  control  hazards  
–  διακλαδώσεις,  άλματα,  κλήση-­‐επιστροφή  υπορουτίνας,  διακοπές  

16
Δομικοί  κίνδυνοι  
  Συμβαίνουν  όταν  δεν  επαρκούν  οι  πόροι  (resources)  για  
όλους  τους  πιθανούς  συνδιασμούς  εντολών  στη  
διοχέτευση  
  Παράδειγμα:  
–  σε  κάποιες  περιπτώσεις  πρέπει  να  επανεγγραφούν  2  
αποτελέσματα  στον  ίδιο  κύκλο  αλλά  το  αρχείο  καταχωρητών  έχει  
μία  θύρα  εγγραφής  
  Μπορούν  πάντα  να  απαλειφθούν  «πληρώνοντας»  
περισσότερο  υλικό  
–  Αν  συμβαίνουν  σπάνια,  το  κόστος  είναι  μεγαλύτερο  από  το  
όφελος  

17
Παράδειγμα  
  Μία  θύρα  μνήμης  για  εντολές  και  δεδομένα  
  Προσπελάσεις  μνήμης  (δεδομένων)  40%  των  εντολών  
  CPI  χωρίς  stalls  =  1  
  Συχνότητα  ρολογιού  επεξεργαστή  με  το  δομικό  κίνδυνο  
1.05  φορές  από  αυτού  χωρίς  τον  κίνδυνο  
AvgInstTimenohazard = CPI × ClockCyclenohazard = 1 × ClockCyclenohazard

AvgInstTimewithhazard = CPI × ClockCyclewithhazard


ClockCyclenohazard
€ = (1+ 0.4 × 1) ×
1.05
= 1.3 × ClockCyclenohazard

18
Κίνδυνοι  δεδομένων  
  Συμβαίνουν  λόγω  εξαρτήσεων  μεταξύ  εντολών  
–  π.χ.  μία  εντολή  περιμένει  το  αποτέλεσμα  μιας  προηγούμενης  

R7  R12 + R15
R8  R7 - R12
R15  R8 + R7

  Κίνδυνος  Read-­‐A—er-­‐Write  (RAW)  


-  R7  (2  φορές),  R8  
  Κίνδυνος  Write-­‐A—er-­‐Read  (WAR)  
-  R15  
  Κίνδυνος  Write-­‐A—er-­‐Write  (WAW)  
19
Kίνδυνοι  στη  διοχέτευση  
Time (in clock cycles)

CC 1 CC 2 CC 3 CC 4 CC 5 CC 6

Program execution order (in instructions)


R7  R12 DADD
+ RR1,15R2, R3

ALU
IM Reg DM Reg

R8  R7 DSUB
- R

ALU
R4,12
R1, R5 IM Reg DM Reg

R15  R8 AND+R6,
R7R1, R7

ALU
IM Reg DM

ALU
IM Reg
OR R8, R1, R9

XOR R10, R1, R11


IM Reg

20
Αποφυγή  κινδύνων  -­‐  προώθηση  
Time (in clock cycles)

CC 1 CC 2 CC 3 CC 4 CC 5 CC 6

Program execution order (in instructions)


R7  R12 DADD
+ RR1,15R2, R3

ALU
IM Reg DM Reg

R8  R7 DSUB
- R

ALU
R4,12
R1, R5 IM Reg DM Reg

R15  R8 AND+R6,
R7R1, R7

ALU
IM Reg DM

… …R

ALU
IM
OR 7R8, R1, R9 Reg

XOR R10, R1, R11


IM Reg

21
Υλοποίηση  προώθησης  

22
Προώθηση  -­‐  λεπτομέρειες  
R10  R4 + R5
R5  Mem[R6]
R10  R7 + R10
Mem[R8]  R5
R8  R10 + R7

  Η  προώθηση  πρέπει  να  δίνει  το  πιο  πρόσφατο/καινούριο  


αποτέλεσμα  
–  βλ.  1ο  πρόγραμμα  
  Υπάρχουν  αρκετά  μονοπάτια  προώθησης  
–  βλ.  2ο  πρόγραμμα  

23
Αναμονή  -­‐  stall  
Time (in clock cycles)

CC 1 CC 2 CC 3 CC 4 CC 5 CC 6

Program execution order (in instructions)


R6  Mem[R
DADD R1,] R2, R3

ALU
IM Reg DM Reg
2

R7  R6 +DSUBRR4,

ALU
4 R1, R5 IM Reg DM Reg

ALU
AND R6, R1, R7 IM Reg DM

ALU
IM Reg
OR R8, R1, R9

XOR R10, R1, R11


IM Reg

24
Pipeline  interlocks  
  Το  προηγ.  παράδειγμα  είναι  γνωστή,  συνηθισμένη  
περίπτωση:  load-­‐use  stall  (ή  hazard)  
–  Συνεπάγεται  αντίστοιχη  καθυστέρηση  (l-­‐u  delay,  penalty)  
  Το  υλικό  πρέπει  να  ανιχνεύσει  τέτοιες  περιπτώσεις  και  να  
σταματήσει  (stall)  μέρος  της  διοχέτευσης  για  κατάλληλο  
αριθμό  κύκλων  
–  τουλάχιστον  1  κύκλο  στη  περίπτωση  load-­‐use  
  Αυτή  η  τεχνική  λέγεται  pipeline  interlock  

25
Αναμονή  
  Οταν  μια  εντολή  πρέπει  να  περιμένει  (stall)  σε  ένα  στάδιο  
διοχέτευσης  για  κάποιους  κύκλους  
–  (όλες)  οι  επόμενες  εντολές  πρέπει  επίσης  να  περιμένουν  
–  Δεν  μπορούν  να  ξεκινήσουν  καινούριες  εντολές  
  Οι  προηγούμενες  εντολές  συνεχίζουν  την  εκτέλεσή  τους  
–  αλλιώς  δε  θα  ξαναξεκινούσε  ποτέ  η  διοχέτευση!  
  Δημιουργούνται  κενά  (bubbles)  στη  διοχέτευση  
–  στάδια  που  δεν  έχουν  εντολές  για  εκτέλεση  

26
Υλοποίηση  αναβολής  

load  enable  
stall  
IF/ID ID/EX EX/MEM MEM/WB

4
M Branch
ADD u taken
x
Zero?
IR6..10

PC IR11..15 M
u
Instruction IR
x
memory MEM/WB.IR Registers ALU
M
u Data M
x memory u
x

16 32
Sign-
extend

27
Κίνδυνοι  ελέγχου  
  Η  διοχέτευση  είναι  αποδοτική  όταν  είναι  πάντα  γεμάτη  
  Αλλαγές  στη  ροή  του  προγράμματος  διακόπτουν  τη  
συνεχή  ροή  εντολών  στη  διοχέτευση  και  προκαλούν  
κινδύνους  ελέγχου  
  Εντολές  που  αλλάζουν  τη  ροή  εκτέλεσης:  
–  διακλάδωση  υπό  συνθήκη  
–  άλμα  (διακλάδωση  χωρίς  συνθήκη)  
–  κλήση  υπορουτίνας  
–  επιστροφή  υπορουτίνας  

28
Διακλάδωση  υπό  συνθήκη  
Εντολή:  br (Rj op Rk), displ
1.  Σύγκριση:  Rj  op  Rk  
–  στο  στάδιο  EX  (ίσως  στο  ID,  αν  η  σύγκριση  είναι  απλή)  
2.  αν  χρειάζεται,  υπολογισμός:  PC  +  displ  
–  γίνεται  πρότερα  στο  στάδιο  ID  με  επιπλέον  ALU  
3.  αν  χρειάζεται,  εγγραφή  νέας  τιμής  στο  PC  

29
Διοχέτευση  και  διακλάδωση  

30
Ποινή  διακλάδωσης  
  Η  καθυστέρηση  που  προκαλεί  μια  διακλάδωση  
ονομάζεται  ποινή  διακλάδωσης  –  branch  penalty  

  Ακόμα  και  ένας  κύκλος  ποινής  προκαλεί  απώλεια  


επίδοσης  10%-­‐30%  ανάλογα  με  τη  συχνότητα  εντολών  
διακλάδωσης  και  τη  κατεύθυνση  που  ακολουθούν  
–  Αν  η  απόφαση  της  κατεύθυνσης  και  ο  προορισμός  υπολογίζονται  
ταυτόχρονα  στο  στάδιο  ID  
–  Σε  άλλες  αρχιτεκτονικές  ή  υλοποιήσεις  μπορεί  να  υπολογίζονται  
σε  διαφορετικούς  κύκλους  και  αργότερα  

31
Χειρισμός  διακλαδώσεων  
  Αναβολλή  προσκόμισης  
–  όταν  γνωρίζουμε  ότι  η  εντολή  είναι  διακλάδωση:  1  κύκλο  μετά!  
–  πιθανό  κέρδος  μόνο  σε  κατανάλωση  ενέργειας  
  Υπόθεση  ότι  δεν  θα  ακολουθηθεί  (predict  not-­‐taken)  
–  συνέχιση  προσκόμισης,  μέχρι  να  έχουμε  το  αποτέλεσμα  της  
συνθήκης  
–  ακύρωση  των  λάθος  εντολών,  αν  η  συνθήκη  ισχύει  
  Υπόθεση  ότι  θα  ακολουθηθεί  (predict  taken)  
–  όταν  γνωρίζουμε  ότι  η  εντολή  είναι  διακλάδωση  
–  χρήσιμο  αν  ο  υπολογισμός  του  προορισμού  γίνεται  πριν  τον  
υπολογισμό  της  συνθήκης  
  Καλύτερα:  δυναμική  πρόβλεψη  
–  θα  εξεταστεί  αργότερα  
32
Αλλοι  κίνδυνοι  ελέγχου  
  Διακοπή  ροής  προγράμματος  από  απρόβλεπτες  
καταστάσεις  (excep‡ons,  interrupts)  
–  π.χ.  υπερχειλίσεις,  page  faults,  διακοπές  από  περιφερειακά  
  Οι  διακοπές  διαχειρίζονται  από  το  Λ.Σ.  με  βοήθεια  από  το  
υλικό  
–  σταματά  η  εκτέλεση  του  προγράμματος  
–  τρέχει  ο  χειριστής  διακοπών  του  Λ.Σ.  
–  ξαναξεκινά  η  εκτέλεση  του  προγράμματος,  αν  το  επιτρέπει  το  Λ.Σ.  
  Αποθήκευση  «κατάστασης»  
–  τιμές  καταχωρητών,  PC  
  Πρέπει  το  πρόγραμμα  να  μπορεί  να  συνεχίσει  από  το  
σημείο  που  διακόπηκε    
33
Ακριβείς  διακοπές  precise  excep‡ons  
Χρήσιμες  για  εύκολη  αποθήκευση  κατάστασης  διεργασίας  
και  γρήγορη  εξυπηρέτησης  της  διακοπής.  
Εστω  ότι  η  διακοπή  προκαλείται  από  i-­‐οστή  εντολή  
Συνθήκες  για  precise  excep‡ons:  
  Οι  προηγούμενες  εντολές  (i-­‐1,  …)  ολοκληρώνουν  την  
εκτέλεσή  τους  και  αποθηκεύουν  τα  αποτελέσματά  τους  
  Η  εντολή  i  και  οι  επόμενες  ακυρώνονται  (no-­‐op),  χωρίς  να  
έχουν  αποθηκεύσει  αποτελέσματα  
  Η  διεύθυνση  της  εντολής  i  κρατείται  ως  το  PC  της  
διεργασίας  

34
Υλοποίηση  precise  excep‡ons  
Οταν  ανιχνευθεί  excep‡on:  
  η  εντολή  που  το  προκαλεί  παίρνει  ένα  σημάδι  (flag)  
–  που  την  ακολουθεί  μέχρι  το  τελευταίο  στάδιο  
  οι  επόμενες  εντολές  ακυρώνονται  
  σταματά  η  προσκόμιση  εντολών  
  αφήνουμε  τη  διοχέτευση  να  αδειάσει  
–  δλδ  η  σημαδεμένη  εντολή  να  φτάσει  στο  τελευταίο  στάδιο  
  θέτουμε  το  excep‡on  PC  =  διεύθυνση  της  εντολής  που  
προκάλεσε  excep‡on  

35
Εναλλακτικές  οργ.  διοχέτευσης  
  Προβλήματα  της  οργάνωσης  που  εξετάσαμε  
–  1  κύκλος  καθυστέρη  load-­‐use  
–  Αριθμητικές  εντολές  δεν  κάνουν  τίποτα  στο  MEM  
  χρειάζονται  forwarding  paths  
  Εναλλακτική  ιδέα:  
–  3ο  στάδιο  μόνο  για  υπολογισμό  διεύθυνσης  (AG)  
  επιπλέον  αθροιστής  
–  4ο  στάδιο  για  προσπέλαση  μνήμης  ή  αριθμ.  εντολές  (MEM-­‐EX)  
  μετακίνηση  της  ALU  στο  4ο  στάδιο  

36
Βάθος  διοχέτευσης  
  Η  διοχέτευση  5  σταδίων  χρησιμοποιείται  ελάχιστα  πλέον  
–  π.χ.  σε  φτηνούς  μικροελεγκτές  
  Θα  εξετάσουμε  τα  στάδια  IF,  ID,  ΜΕΜ,  WB  αργότερα  
  Το  στάδιο  EX  περιλαμβάνει  διάφορα  είδη  λειτουργικών  
μονάδων  (func‡onal  unit)  
–  γρήγορες  ακέραιες  αριθμητικές  λογικές  μονάδες  
–  αργές  ακέραιες  αριθμητικές  μονάδες:  πολλαπλασιαστές,  
διαιρέτες  
–  μονάδες  κινητής  υποδιαστολής  

37
Διοχετ.  λειτουργικές  μονάδες  
  Καθυστέρηση/Latency:  αριθμός  κύκλων  που  απαιτούνται  
μεταξύ  της  εντολής  που  παράγει  ένα  αποτέλεσμα  και  
αυτής  που  το  χρησιμοποιεί  
–  Integer  ALU  latency  =  0!  Η  επόμενη  εντολή  μπορεί  να  
χρησιμοποιήσει  το  αποτέλεσμα  της  προηγούμενης  (με  
προώθηση)  
–  Γενικά  είναι:    βάθος  διοχέτευσης  (της  μονάδας)  -­‐  1  
–  Υποθέτουμε  ότι  η  εντολή  «καταναλωτής»  χρειάζεται  το  
αποτέλεσμα  στο  στάδιο  EX.  
–  Αν  το  χρειάζεται  στο  MEM  (εντολή  store),  η  καθυστέρηση  είναι  1  
κύκλο  μικρότερη  
–  Αν  το  χρειάζεται  στο  ID  (σύγκριση  για  διακλάδωση)  η  
καθυστέρηση  είναι  1  κύκλο  μεγαλύτερη  

38
Διοχετ.  λειτουργικές  μονάδες  
  Ini‡a‡on/repeat  interval  (μεσοδιάστημα  έναρξης):  
αριθμός  κύκλων  για  εκκίνηση  (issue)  εντολών  του  ίδιου  
τύπου  (εννοείται  ανεξάρτητη  εντολή)  
–  Integer  unit:  ini‡a‡on  interval  =  1  -­‐    σε  κάθε  κύκλο  μπορούμε  να  
ξεκινήσουμε  μια  νέα  εντολή  

39
Υλοποίηση  
Integer unit
EX

FP/integer multiply
M1 M2 M3 M4 M5 M6 M7

IF ID MEM WB
FP adder
A1 A2 A3 A4

FP/integer divider
DIV

40
Επόμενη  φορά  
  Υπόβαθρο:  κρυφές  μνήμες  (+  βοήθεια  υλικού  για  
εικονική  μνήμη)  

41

You might also like