plas 01

18
C1 1 Vasile Lungu : Procesoarele Intel. Programare în Limbaj de Asamblare. Ediţia a II-a, Editura Teora, Bucureşti, 450 pg., 2004. Vasile Lungu, Gheorghe Petrescu, Costin Boiangiu, Programare în Limbaj de Asamblare. Probleme de Laborator. Editura PRINTECH, 168pg., 2003. intel.com/design/pentium4/manuals/index_new.htm The Art of Assembly Language, University of California: www.cs.ucr.edu\pub\pc\ibmpcdir

Upload: razvan

Post on 05-Aug-2015

90 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Plas 01

C1 1

• Vasile Lungu : Procesoarele Intel. Programare

în Limbaj de Asamblare. Ediţia a II-a, Editura

Teora, Bucureşti, 450 pg., 2004.

• Vasile Lungu, Gheorghe Petrescu, Costin

Boiangiu, Programare în Limbaj de Asamblare.

Probleme de Laborator. Editura PRINTECH,

168pg., 2003.• intel.com/design/pentium4/manuals/index_new.htm• The Art of Assembly Language, University of

California: www.cs.ucr.edu\pub\pc\ibmpcdir

Page 2: Plas 01

C1 2

De ce utilizăm limbajul de asamblare ?

• compilatoarele translatează codul sursă in limbaj (cod) maşină;

• îndepărtare de limbajul de asamblare, dar nu de renunţare la el; multe medii IDE şi compilatoare C, Pascal, Basic, Fortran, LabView etc.) prezintă facilităţi de inserare de linii scrise direct în limbaj de asamblare.

• componente ale SO, critice şi performante realizate în LA, deoarece aceste secvenţe trebuie să consume cât mai puţin timp şi, eventual, cât mai puţină memorie

Page 3: Plas 01

C1 3

• Programe hibride: LA + LNI.• Modulele complexe sunt scrise în LNI, iar cele ce sunt critice in (LA).

• compilatorul are "cunoştinţe limitate" asupra întregului program -> set generalizat de instr. dar nu sunt optime în situaţii particulare.

• Experienţa LA -> programe mai eficiente şi în limbajele evoluate;

• Depanarea ajunge şi la depanarea codului obiect.

• LA este mult mai dificil decât un LNI, deoarece programatorul trebuie să cunoască pe lângă LA şi structura internă a calculatorului.

Page 4: Plas 01

C1 4

Scurt istoric

• Charles Babbage, 1839, “Maşină Analitic㔕 1937, Howard Aiken, Univ. Harvard, “Calculatorul cu Secvenţă

de Comandă Automată“ (1939-1944), MARK I.• 1942, ENIAC (Electronic Numerical Integrator And Computer),

Pennsylvania, (1945-1946). El conţinea circa 18.000 tuburi electronice şi executa 5.000 adunări/sec.

• John von Neumann- EDVAC (Electronic Discrete VAriable Computer, 1952, universitatea Princeton, USA)- a stabilit cele 5 caracteristici principale ale calculatorului cu program memorat:

• mediu de intrare;• memorie;• secţiune de calcul;• mediu de ieşire

Calculatoare

Page 5: Plas 01

C1 5

• unitate de comandă;

• - generaţia I-a ( 1946-1956), caracterizată prin: hard : relee, tuburi electronice; soft : programe cablate, cod maşină, limbaj de asamblare; capacitate memorie : 2 Kocteţi; viteză de operare : 10.000 operaţii/sec.

• - generaţia II-a (1957-1963) a fost marcată de apariţia tranzistorului:

hard : tranzistoare, memorii cu ferite, cablaj imprimat; soft: limbaje de nivel înalt (Fortran-1956, Algol-1958,

Cobol); memorie : 32 Kocteţi; viteza : 200.000 instrucţiuni/sec.

Page 6: Plas 01

C1 6

Page 7: Plas 01

C1 7

• - generaţia III-a (1964-1981), caracterizată prin : hard : circuite integrate (la început pe scară redusă SSI,

apoi pe scară medie, MSI şi largă, LSI – 1000 componente pe chip; scara de integrare se referă la numărul de componente electronice pe unitatea de suprafaţa), cablaje imprimate multistrat, discuri magnetice, apariţia primelor microprocesoare;

soft : limbaje de nivel foarte înalt (C-1972, care a stat la baza sistemului de operare UNIX), programare structurată, baze de date, grafică pe calculator;

memorie : 1÷2 Mocteţi; viteza : 5.000.000 instrucţiuni/sec.

Page 8: Plas 01

C1 8

• - generaţia IV-a (1982-1989) hard : circuite integrate pe scară foarte mare (VLSI-

100.000 componente/chip), sisteme distribuite de calcul, apar microprocesoarele de 16/32 biţi;

soft : pachete de programe de largă utilizare, sisteme expert, limbaje orientate obiect, baze de date relaţionale;

memorie : 8÷10 Mocteţi; viteza : 30 mil. instr./sec.

• - generaţia V-a, în curs de dezvoltare, se doreşte a atinge următoarele performanţe:

hard : circuite integrate pe scară ultralargă ULSI (proiectare circuite integrate 3D), arhitecturi paralele, reţele de calculatoare, alte soluţii arhitecturale noi (reţele neurale etc.);

Page 9: Plas 01

C1 9

soft : limbaje concurente, programare funcţională FP, prelucrare simbolică, baze de cunoştinţe, sisteme expert evoluate;

memorie : zeci - sute Mocteţi; viteza : 1 Ginstr./sec. - 1 Tinstr./sec.

• Procesoare• 1970, INTEL 4004, 4 biţi, calcule BCD, 60.000 op./sec. Firma

INTEL (INTegrated Electronics) a fost fondată spre sfârşitul anilor ’60 de Robert Noyce şi Gordon Moore.

• 1972, INTEL 8008, 48 de instrucţiuni, 16 Kocteţi, 30.000 instr./sec

• 1974 INTEL 8080, 72 instrucţiuni, 64 Kocteţi, 300.000 op./sec.

Page 10: Plas 01

C1 10

• 1979, INTEL, primul microprocesor de 16 biţi (8086); 2 unităţi: EU + BIU. 8088, mag. ext. 8 biţi. Motorola 68000.

• 1980, Sinclair, Spectrum Zx80 (Z80), Basic.

• 1982, 80186, 286 - multiprelucrare/ acces, “mod protejat”, 4 unităţi, mecanisme gest. mem. virtuală, protecţie mem.

• 1983, primul mediu integrat de programare (TP, Borland).

• 1986, 386, 32 biţi, 6 unit., paginare; coprocesor îmbunătăţit

• 1989, 486 = 386+387+cache unificat 8 Ko., bandă de asamblare, RISC (Reduced Instruction Set Computer);

• 1994, Pentium, 2 benzi (u,v), cache L1 separat 8Ko date + 8Ko instr., BTB(Branch Target Buffer), mag int 128 biţi, APIC (Advanced Programmable Interrupt Controller); P6.

• 1996, Pentium Pro, superscalar pe 3 căi, execuţie dinamică (analiză flux, execuţie în orice ordine, predicţie salt, execuţie speculativă), 5 unit exec, L1 + L2 (256 Ko)

Page 11: Plas 01

C1 11

• 1997, Pentium MMX (8 reg 64 biţi, 3 tipuri de date noi împachetate de 8-16-32 biţi), 57 instr. noi, SIMD (Single Instruction Multiple Data), L1 dublat, alg. predicţie îmb.

• 1998, Pentium II = Pro + MMX, SECC (Single Edge Contact Cartridge);

• 1999, Pentium III = II + arh. SSE (Streaming SIMD Extension), 70 instr., 4*32 biţi (virgulă mobilă, simplă precizie)= 128 biţi.

• 2001, Pentium 4, extinde SIMD, SSE 2, pt. real dublă precizie, NetBurst (MP, Hyper-Threading, superbandă-20 nivele/ faţă de 12 la PII/ PIII), L1: 8Ko date + 12 K micro-operaţii “trace cache”.

• 2001, arhitectura Itanium, extindere a execuţiei paralele, predictive şi speculative; L3 (2 sau 4 Mo), L2 (96 Ko, linie 64 oct., 6 căi).

• 2002, Itanium 2 măreşte performanţa de 1.5-2 ori.

Page 12: Plas 01

C1 12

• Procesoare INTEL: – familia P6 (1995-1999): Pro, II, III

• bandă de asamblare superscalară (2-3 instr/ciclu);• extensia SSE, set 8 registre, XMM, pe 128 biti (real-sp) +

reg. control/stare de 32 biţi;– familia Pentium 4 (2000-2006)

• micro-arh NetBurst (viteza dubla UAL/intregi, executie dinamica avansata, imb alg predictie, expandare reg cu redenumire, dim cache 64 octeti;

• SSE2, set registre pe 128 biti (real-dp, intregi), instrucţiunile utiliz. reg. XMM, MMX şi reg. gen;

– procesoarele Xeon şi Pentium Extr Ed (2001-2007)• micro-arh NetBurst, tehnologia Hyper-Threading, 64 biţi;• instrucţiuni SSE3 (virg. mobilă, sincronizare multi-thread),

SSSE3-Supplemental Streaming SIMD Extensions (instr. accelerează prel. semnal şi MM), SSE4 cu 2 componente: SSE4.1-media, imagine, 3D şi SSE4.2-prel text/string, 128 biţi.

Page 13: Plas 01

C1 13

• Microarhitectura Intel Core : – Execuţie dinamică largă

• fiecare nucleu (core) fetch, decod, execută 4 instr/ciclu;• Bandă asamblare 14 niveluri, 3 UAL, 4 decod, predict av;

– Cache inteligent avansat• rată mare pentru nivel 2 cache: < 4M şi asociativitate pe 16

căi;• mag internă 256 biţi pentru transferul L1-L2;

– Acces la memorie inteligentă• reduce cache-miss pentru execuţia în orice ordine;• hard prefetch ce reduce latenţa pt cache-miss la L2;• hard prefetch ce reduce latenţa pt cache-miss la L1;

– Îmb. prelucrării de date media digitale• execuţie pe singur ciclu pt. maj. instr. SIMD pe 128 biţi;• execuţia până la 8 operaţii în virgulă mobilă/ciclu

Page 14: Plas 01

C1 14

Page 15: Plas 01

C1 15

– Procesoarele iniţial dezvoltate ca uni-core– Procesor multi- core:

– implementează multiprocesarea– pot fi puternic sau slab cuplate:

– partajează memorie cache– comunicaţie prin mesaje sau memorie

partajată inter-core– Performanţa limitată de procentul de soft ce poate fi

paralelizat să ruleze simultan pe coruri multiple– Unele metode de paralelism la nivel instrucţiune (ILP)

precum asamblarea superscalara sunt adecvate

– Consum mai mic decât două procesoare single-core cuplate, nemaifiind necesară transmitere semnale în afara procesorului

– Procesoarele multi- core partajează aceleași circuite: cache L2, interfața cu FSB(Front Side Bus);

– Necesită ajustări atât ale SO cât și ale softului aplicațiilor curente;– Softul multi-thread mai greu de depanat, dar tehnicile de programare paralelă pot

beneficia direct de multiple core-uri.– Administrarea concurenței:

– partiționare/ descompunere problemă în taskuri,– Comunicare între taskuri,– Aglomerare versus combinare taskuri pentru a furniza un număr mai mic de taskuri,

fiecare de o dimensiune mai mare (replicare date sau calcule, pentru eficiență),– Maparea specifică unde se execută fiecare task

Page 16: Plas 01

C1 16

Page 17: Plas 01

C1 17

core

1

core

2

core

3

core

4

several threads

several threads

several threads

several threads

Page 18: Plas 01

C1 18