Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Bασικά Αρχιτεκτονικής Συνόλου Εντολών •Διαλέξεις βασίζονται εν μέρη –Σημειώσεις αντιστοίχων μαθημάτων CS UW-Madison(Smith, Lipasti, Hill, Sohi, Wood),

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Bασικά Αρχιτεκτονικής Συνόλου Εντολών •Διαλέξεις βασίζονται εν μέρη –Σημειώσεις αντιστοίχων μαθημάτων CS UW-Madison(Smith, Lipasti, Hill, Sohi, Wood),"— Μεταγράφημα παρουσίασης:

1 Bασικά Αρχιτεκτονικής Συνόλου Εντολών •Διαλέξεις βασίζονται εν μέρη –Σημειώσεις αντιστοίχων μαθημάτων CS UW-Madison(Smith, Lipasti, Hill, Sohi, Wood), ECE Purdue(Vijakumar) και CS- Berkeley (D. Culler) •Διαβάστε κεφάλαιο 2 από το βιβλίο και appendix D (links στο web page)

2 Περιγραφή •Τι είναι η ΑΣΕ –Τυπική συμπεριφορά προγραμμάτων (κατανομή εντολών) κατα την εκτέλεση τους •Παραδείγματα –Ιntel ΙΑ32, Cray, ΜΙPS, DEC VAX, IBM360, Sparc,Intel IA64 •Έννοιες σε σχέση με compilers –basic block, dependence graph (control και data), slice, στατική vs δυναμική

3 ΑΣΕ(ISA):Tι είναι; •“τα χαρακτηριστικά ενός υπολογιστικού συστήματος ορατά στον προγραμματιστή” Amdhal et al IBM JR&D 1964 •“η δομή ενός υπολογιστή που ενας προγραμματιστής (ή μεταγλωτιστής) πρεπεί να καταλάβει για να γράψει ορθά προγράμμα για αυτή την μηχανή”, - IBM introducing 360 in 1964 •Εντολές (σύνταξη και σημμασιολογία) –instruction types και instruction formats •Τελεσταίοι(δεδομένα): που, πως (addressing modes), τυποί •Καταχωρητές (registers), 32-bit data/address •Moντέλο μνήμης: heap, stack, data, text, reserved

4 Τύποι Εντολών •arithmetic and logical - add, οr •data transfer - move, load, store •control - branch, jump, call •floating point - add, mul, div, sqrt, convert •decimal - addd, convert •string - move, compare •system - system call, traps •Multimedia/DSP/Embedded (e.g. Intel MMX/SSE and SunVIS) –fixed point –block floating point –partitioned arithmetic

5 Code in MIPS ISA begin: addi $t0,$zero,1 addi$t1,$zero,1 loop:slt$t2, $a0, $t1 bne $t2,$zero, finish add$t0,$t0,$t1 addi$t1,$t1,2 jloop finish:add$v0,$t0,$zero

6 Μορφές Εντολών (Instruction Formats) Variable: Fixed: Hybrid: … •Addressing modes –each operand requires addess specifier => variable format •Small code size => variable length instructions (CISC) •Best performance => fixed length instructions (RISC) –simple decoding, predictable operations •With load/store instruction arch, only one memory address and few addressing modes •=> simple format, address mode given by opcode

7 Moρφή Εντολών Υπολογισμού •Number of explicit operands –two - r i := r i op r j –three - r i := r j op r k •Οperands in registers or memory –any combo - VAX - orthogonal but variable length instrs –at least one register - IBM 360/ not orthogonal –all registers - Cray, RISCs - orthogonal but loads/ stores •Επίσης Accumulator(πρώτα χρόνια λόγο κόστους): 1 addressadd Aacc  acc + mem[A] 1+x addressaddx Aacc  acc + mem[A + x] Stack (JVM): 0 addressaddtos  tos + next

8 Πού είναι τα δεδομένα και διευθυνσιοδότηση μνήμης •register: Ri displacement M[ Ri + #n] •immediate: #n register indirect M[ Ri ] •indexed: M[ Ri + Rj ] absolute: M[# n] •memory indirect: M[ M[ Ri ]] •auto-increment: M[ Ri ]; Ri += d •auto-decrement: M[ Ri ]; Ri -= d •scaled: M[ Ri + #n + Rj * d] •update: M[ Ri = Ri + #n] •τα πρώτα 4 αναλογούν στο 93% ολών των τελεσταίων στο VAX [Clark and Emer]

9 Πχ πού βρίσκονται τα δεδομένα •Καταχωρητές –xor r4,r5,r6 (r4  r5  r6) •Άμεση τιμή μέρος της εντολής –add r4,r5,1 (r4  r5+1) •Μνήμη –add r4, 24(r5),r6 (r4  [24+r5]+r6) –store r4,24(r5) ([24+r5]  r4) •Ταξινόμηση Aρχιτεκτονικών –mem-mem, reg-mem, reg-reg(load/store arch) •Γιατί όχι ολά τα δεδομένα στην μνήμη;

10 Τεχνολογία και Ιεραρχία Μνήμης CPU Registers 100s Bytes <1s ns Cache 10s-100s K Bytes 1-10 ns $10/ MByte Main Memory M Bytes 100ns- 300ns $1/ MByte Disk 10s G Bytes, 10 ms (10,000,000 ns) $0.0031/ MByte Capacity Access Time Cost Tape infinite sec-min $0.0014/ MByte Registers Cache Memory Disk Tape Instr. Operands Blocks Pages Files Staging Xfer Unit prog./compiler 1-8 bytes cache cntl bytes OS 512-4K bytes user/operator Mbytes Upper Level Lower Level faster Larger

11 Moντέρνες Αρχιτεκτονικές: Load/Store ISAs •εντολές με υπολογισμό (πχ add, mult) μόνο με καταχωρητές ( reg-reg ) ή αμεσες τιμές (immediates) •Υπαρχούν εντολές μεταφοράς από και προς μνήμη (store και loads) •Oι εντολές υπολογισμού έχουν τελεσταίους μόνο σε καταχωρητές ή άμεσες τιμές •Τι είναι τα πιο κάτω: –xor r4,r5,r6 (r4  r5  r6) –store r4,24(r5) ([24+r5]  r4) –add r4, 24(r5),r6 (r4  [24+r5]+r6) •Load/Store ΑΣΕ: χρειάζονται περισσότερες αλλά πιο απλές εντολές για να εκτελεσούν ένα πρόγραμμα

12 Καταχωρητές (registers) •Μοντέρνες Αρχιτεκτονικές (Power, Sparc, IA64) –διευθύνσεις για διαχείρηση και ακεραιες τιμές: καταχωρ. –64b data –για πραγματικές τιμές(FP): –καταχωρητής εντολών •Program Counter ή Instruction Pointer : 1 (ή number of threads) –καταχωρητής ελέγχου (control register) –καταχωρητές συστήματος •ΙΑ32 (x86, x86-64) –8 καταχωρητές –stack για FP

13 Tύποι Δεδομένων •b yte 8 bits •h alfword 16 bits •w ord 32 bits •d oubleword 64 bits •q uad word 128 bits •Εντολές για επεξεργασία ακεραίων και πραγματικών αριθμών –ίδια bits διαφορετική σημασια (ακέραια ή πραγματική-IEEE floating point format ) εξαρτάται από τύπο εντολής

14 Μοντέλο Μνήμης (MIPS) καταχωρητές με διευθύνσεις για διαχείρηση χώρων της μνήμης

15 Μοντέλο Μνημης MIPS (συν) •Segments –Stack, $sp (0x7fff ffff - down) –Dynamic Data (0x up) –Static Data, $gp (0x x1000 ffff) –Text, pc (0x x0fff ffff) –Reserved (0x x003f ffff)

16 Μνήμη και Endianess •Order of bytes in words στην μνήμη –Big endian - MSB at address xxxx00 –Little endian MSB at address xxxx11 •Big endian - IBM, Motorola, SPARC •Little endian - DEC, Intel •Mode selectable: PowerPC, MIPS

17 Eυθυγράμιση στην μνήμη (memory allignement) •What is alignment? –address % size = 0 •e. g., aligned word (4 bytes) – –d0 d1 d2 d3 •e. g., unaligned word (4 bytes) – – d0 d1 d2 d3 •No restrictions –simpler software –hardware must detect misalignment •and make 2 memory accesses •expensive logic, may slow down all references – sometimes required for backward compatibility

18 Eυθυγράμιση στην μνήμη (memory allignement) •Το τι γίνεται... –misaligned data ok but requires multiple instructions –compiler must still know –still trap on misaligned access

19 Εντολές Ροής Ελέγχου (CTI-control trasnfer instructions) •instructions that can change the PC more than the instruction size 1. taken or not 2. where is the target 3. link return address 4. save or restore state –(conditional) branches [1- 2] –(unconditional) jumps [2] –function calls [2,3,4], function returns [2,4] –system calls [2,3,4], system returns [2,4]

20 Επιλογές για CTI με συνθήκη (conditional branches) •compare and branch –bne $5,$6,foo •implicitly set condition codes - Z, N, V, C –sub $4,$5,$6 –bnz foo •explicitly set condition codes –sub.z $4,$5,$6 –bnz foo •condition in general- purpose register sub $4,$5,$6 bnz $4,foo

21 Τυπική συμπεριφορά προγραμμάτων - AΣΕ MIPS •> 80% branches use immediate data, > 80% of those zero •50% branches use == 0 or <> 0 •compromise in MIPS: παρέχει εντολές μόνο για branch== 0 και branch<> 0 •Χρήση compare instructions for all other cases (i.e. two instructions)

22 Που είναι ο στόχος - κωδικοποιήση στις διάφορες εντολές •branches - pc- rel PC+4+immediatex4 –πιο λίγα bits, δεν τρώει καταχωρητή, συνήθως στόχοι κοντά •jumps - pc- rel, reg PC+ immediatex4, PC+ reg –με το register ο στόχος μπορεί να ειναι οπουδήποτε •function calls - pc- rel, reg same (links return address) •returns - regreg •system calls - trapbased on code in reg. or imm. •OS returns - regreg

23 Αποθήκευση και Επαναφορά Κατάστασης •what state? –function calls: registers –system calls: registers, flags, PC, PSW, etc –also on context switch (10ms) •hardware need not save registers –caller can save registers in use –callee save registers it will use •hardware register save –IBM STM, VAX CALLS –faster? •recent architectures do no register saving or do implicit register saving with register windows(SPARC,IA64)

24 Παραδείγματα Αρχιτεκτονικών •VAX11/780 •IA32 (x86) •IA64 •MIPS

25 VAX-11/780 η πιο CISC μηχανή •DEC 1977 VAX- 11/ 780 •upward compatible from PDP- 11 •32- bit words and addresses •virtual memory •16 GPRs (r15 PC r14 SP), CCs •extremely orthogonal and memory- memory •decode as byte stream - variable in length –opcode: operation, #operands, operand types •data types –8, 16, 32, 64, 128 –char string - 8 bits/ char –decimal - 4 bits/ digit –numeric string - 8 bits/ digit

26 VΑΧ-11/780 •addressing modes –literal 6 bits –8, 16, 32 bit immediates –register, register deferred –8, 16, 32 bit displacements –8, 16, 32 bit displacements deferred –indexed (scaled) –autoincrement, autodecrement –autoincrement deferred

27 VAX11/780 •Operations –data transfer including string move –arithmetic and logical (2 and 3 operands) –control (branch, jump, etc) –function calls save state –bit manipulation –floating point - add, sub, mul, div, polyf –system - exception, VM –polynomial –other - crc (cyclic redundancy check), insque (insert in Q) •VAX has too many modes and formats •Big deal with RISC is not fewer instrs –few modes/ formats => fast decoding to facilitate pipelining

28 Παράδιεγμα εντολής στο VAX addl3 R1,737\( R2\),# 456 byte 1: addl3 byte 2: mode, R1 byte 3: mode, R2 byte 4- 5: 737 byte 6: mode byte 7- 10: 456 Αποκωδικοποίηση εφιάλτης Μεταγλωτιστές δεν χρησιμοποιούσαν τις πλείστες εντολές!!

29 Παρατηρήσεις για κώδικα του VAX •First implementation of VAX ISA –Used microcode hack to count instruction frequencies –84% of instructions simple, 19% branches –loop branches 91% taken, other branches 41% taken –Operands: register mode 41%, complex addressing 6% •Implementation – ns => 0.5 MIPS –50% of time decoding, simple instructions only 10% of time –memory stalls 2.1 CPI (<< 10.6)

30 Ιntel IA32 (x86) και ΙΑ64 •Selected history of most popular architecture –1974: bit accumulator architecture –1978: bit architecture •Also 8088 is 8086 w/ 8- bit memory bus chosen for IBM PC –1985: defines 32- bit ISA but is upward compatible –1989: 80486, –1993: Pentium, –1995: Pentium Pro –1997: MMX multimedia extensions –2000: Pentium4 –2000: IA-64 (Merced, McKinley, etc.)??

31 IA32 πολύ CISC •“Difficult to explain and impossible to love” -- an x86 designer –See H&P Appendix D. 8 •Eight 32- bit registers (EAX, EBX,..., but also ESP & EBP) •Also 16- and 8- bit versions (AX, AH, AL) •Most instructions have two operands, one possibly from memory •CISCness: addressing mode w/ effective address = –base_ reg + (index_ reg * scaling_ factor) + displacement –Many formats - see H& P fig D. 8

32 MMX •MultiMedia eXension to IA- 32 [Peleg & Weiser, IEEE Micro, 8/ 96] –Multimedia data values often need much less than 32 bits –But are organized in groups (e. g., red/ green/ blue) –So in 64- bit FP registers: 2x32, 4x16, or 8x8 •E. g., ADDB (for byte) more more (saturating or 44 with wraparound) •MMX takes 16- element dot product ( a0* b0 + a1* b a15* b15 ) –from 200 to 16 instructions & from 76 to 12 cycles (6x)

33 IA64 •IA-32: 2 32 = 4GB memory, inadequate for servers, soon for PCs? •Add segmentation, or 64- bit extensions to IA-32 (AMD) •Or, create brand new ISA: IA-64 –Based on VLIW concepts, but called EPIC •Instruction bundles: 3x41 bits + template info •Predication: can eliminate short conditional branches –Why is this a bad idea? Lengthening critical path… •1st implementation: Itanium available 01 (poor) •2nd implementation: Itanium2, Sept02 (much better)

34 MIPS Programmable storage 2^32 x bytes 31 x 32-bit GPRs (R0=0) 32 x 32-bit FP regs (paired 16 DP) HI, LO, PC Data types ? Format ? Addressing Modes? Arithmetic logical Add, AddU, Sub, SubU, And, Or, Xor, Nor, SLT, SLTU, AddI, AddIU, SLTI, SLTIU, AndI, OrI, XorI, LUI SLL, SRL, SRA, SLLV, SRLV, SRAV Memory Access LB, LBU, LH, LHU, LW, LWL,LWR SB, SH, SW, SWL, SWR Control J, JAL, JR, JALR BEq, BNE, BLEZ,BGTZ,BLTZ,BGEZ,BLTZAL,BGEZAL 32-bit instructions on word boundary (alligned)

35 MIPS Addressing Modes & Formats • Simple addressing modes • All instructions 32 bits wide oprsrtrd immed register Register (direct) oprsrt register Base+index + Memory immedoprsrt Immediate immedoprsrt PC PC-relative + Memory • Register Indirect?

36 MIPS: Load/Store Architecture MEM reg ° Substantial increase in instructions ° Decrease in data BW (due to many registers) ° Even more significant decrease in CPI (pipelining) ° Cycle time, Real estate, Design time, Design complexity ° 3 address GPR ° Register to register arithmetic ° Load and store with simple addressing modes (reg + immediate) ° Simple conditionals compare ops + branch z compare&branch condition code + branch on condition ° Simple fixed-format encoding op rrr rrimmed offset

37 MIPS R3000 ISA (Summary) •Instruction Categories –Load/Store –Computational –Jump and Branch –Floating Point •coprocessor –Memory Management –Special R0 - R31 PC HI LO OP rs rt rdsafunct rs rt immediate jump target 3 Instruction Formats: all 32 bits wide Registers FP0 -FPR31 CC

38 Cray-1: the original RISC Op 015 RdRs1R Load, Store and Branch 35 Op 015 RdRs1Immediate Register-Register Αλλές RISC αρχιτεκτονικές Power (IBM,Motorrola), Sparc (Sun) Alpha (DEC/Compaq) out of business 2001, PARISC (HP) phased out

39 Basic Block •Σειρά εντολών που μονό η τελευταία ειναι CTI και μόνο η πρώτη μπορεί να ειναι στόχος CTI (έχει label) begin: addi $t0,$zero,1 addi$t1,$zero,1 loop:slt$t2, $a0, $t1 bne $t2,$zero, finish add$t0,$t0,$t1 addi$t1,$t1,2 jloop finish:add$v0,$t0,$zero

40 Static Data Dependence Graph •Γράφημα με εξαρτήσεις begin: 1. addi $t0,$zero,1 2. addi$t1,$zero,1 loop:3. slt$t2, $a0, $t1 4. bne $t2,$zero,finish finish 5. add$t0,$t0,$t1 6. addi$t1,$t1,2 7. jloop finish:8. add$v0,$t0,$zero

41 Δυναμική Συμπεριφορά •υποθεστε πως $a0 = 1. Ποιά blocks και σε ποιά σειρά εκτελούνται; begin: addi $t0,$zero,1 addi$t1,$zero,1 loop:slt$t2, $a0, $t1 bne $t2,$zero, finish add$t0,$t0,$t1 addi$t1,$t1,2 jloop finish:add$v0,$t0,$zero ABCDABCD

42 Dynamic Dependence Graph 5. add$t0,$t0,$t1 6. addi$t1,$t1,2 7. jloop 3. slt$t2, $a0, $t1 4. bne $t2,$zero,finish 1. addi $t0,$zero,1 2. addi$t1,$zero,1 8. add$v0,$t0,$zero 3. slt$t2, $a0, $t1 4. bne $t2,$zero,finish

43 Περίληψη •Τι είναι η ΑΣΕ –Τυπική συμπεριφορά προγραμμάτων (κατανομή εντολών) κατα την εκτέλεση τους •Παραδείγματα –VAX, Ιntel ΙΑ32, ΜΙPS, Intel IA64 •Έννοιες σε σχέση με compilers –basic block, dependence graph (control και data), στατική vs δυναμική


Κατέβασμα ppt "Bασικά Αρχιτεκτονικής Συνόλου Εντολών •Διαλέξεις βασίζονται εν μέρη –Σημειώσεις αντιστοίχων μαθημάτων CS UW-Madison(Smith, Lipasti, Hill, Sohi, Wood),"

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google