curs1_ro

59
Calculatoare Numerice - Cursul 0 - Dan Tudose 1 20.02.2013 Facultatea de Automatică și Calculatoare Universitatea Politehnica București

Upload: mihai-ilie

Post on 31-Dec-2015

17 views

Category:

Documents


6 download

DESCRIPTION

curs cn 1

TRANSCRIPT

Page 1: Curs1_ro

Calculatoare Numerice

- Cursul 0 -

Dan Tudose

1 20.02.2013

Facultatea de Automatică și Calculatoare Universitatea Politehnica București

Page 2: Curs1_ro

28-Feb-13

Comic of the day

slide 2 Calculatoare Numerice

htt

p:/

/ab

stru

sego

ose

.co

m/9

8

Page 3: Curs1_ro

28-Feb-13

Important Stuff

slide 3 Calculatoare Numerice

Dan Tudose • [email protected][email protected] Laboratoare: http://elf.cs.pub.ro/cn/wiki Notare: 3 puncte activitatea laborator 2 puncte lucrare laborator 5 puncte examen final

Cerinte pentru a promova: • minim 6 prezente la laborator • minim 1.5 puncte din cele 3 puncte pentru activitatea laborator • minim 2.5 puncte din cele 5 puncte din examenul final • Activitate la curs!

Page 4: Curs1_ro

28-Feb-13

Ce este o arhitectură de calcul?

slide 4 Calculatoare Numerice

Aplicație

Fenomen fizic

Distanță prea mare pentru a fi acoperită într-un singur pas

Definiție generală: o arhitectura de calcul presupune design-ul unor niveluri succesive de abstractizare ce ne permit implementarea eficientă a unei aplicații de procesare de informație, în limitele tehnologiilor curente de fabricație.

(cu câteva excepții, e.g. Busola magnetică)

Page 5: Curs1_ro

28-Feb-13

Niveluri de abstractizare într-

un sistem de calcul modern

slide 5 Calculatoare Numerice

Algoritm

Porți logice/Transfer de registre

Aplicație

Instruction Set Architecture (ISA)

Sistem de operare/Mașină virtuală

Microarhitectură

Dispozitive și componente

Limbaj de programare

Circuite electronice

Fenomen fizic

Page 6: Curs1_ro

28-Feb-13

Arhitectura este într-o

continuă schimbare

slide 6 Calculatoare Numerice

Costul software development face compatibilitatea să fie o forță puternică pe piață

Aplicații

Technologie

Aplicațiile dau indicii asupra modului în care poate fi îmbunătățită tehnologia de fabricație și produc venit pentru a finanța dezvoltarea.

Îmbunătățirea tehnologiei de calcul face posibilă dezvoltarea de noi aplicații

Page 7: Curs1_ro

28-Feb-13

Sistemele de calcul atunci...

slide 7 Calculatoare Numerice

EDSAC, University of Cambridge, UK, 1949

Page 8: Curs1_ro

28-Feb-13

Sisteme de calcul

contemporane

slide 8 Calculatoare Numerice

Roboți

Supercalculatoare Automobile

Laptopuri

Set-top boxes

Smart phones

Servere Playere media

Rețele de senzori

Rutere

Camere Console

Page 9: Curs1_ro

28-Feb-13

Performanța procesoarelor

slide 9 Calculatoare Numerice

1

10

100

1000

10000

1978 1980 1982 1984 1986 1988 1990 1992 1994 1996 1998 2000 2002 2004 2006

Pe

rfo

rma

nce

(vs. V

AX

-11

/78

0)

25%/year

52%/year

??%/year

• VAX : 25%/an 1978 to 1986 • RISC + x86: 52%/an 1986 to 2002 • RISC + x86: ??%/an 2002 to present

Din Hennessy and Patterson, Computer Architecture: A Quantitative Approach, 4th edition, October, 2006

Page 10: Curs1_ro

28-Feb-13 slide 10 Computer Engineering

[from Kurzweil]

Major Technology Generations Bipolar

nMOS

CMOS

pMOS

Relays

Vacuum Tubes

Electromechanical

?

Page 11: Curs1_ro

28-Feb-13

Sfârșitul erei uni-procesor

slide 11 Calculatoare Numerice

Cea mai importantă schimbare din întreaga istorie a sistemelor de calcul

Page 12: Curs1_ro

28-Feb-13

Arhitectura Calculatoarelor:

Scurt Istoric

slide 12 Calculatoare Numerice

De ce ar trebui să ne preocupe așa ceva?

• Ajută în înțelegerea procesului de proiectare a structurilor de calcul și explică de ce au fost luate anumite decizii

• Pentru că tehnologiile viitoare ar putea fi la fel de supuse la constrângeri ca și cele trecute

• Cei care ignoră istoria sunt predispuși să o repete

– Fiecare greșeală făcută în proiectarea de calculatoare mainframe a fost făcută și în proiectarea minicomputerelor și a microcomputerelor.

Page 13: Curs1_ro

28-Feb-13

Charles Babbage 1791-1871 Lucasian Professor of Mathematics,

Cambridge University, 1827-1839

slide 13 Calculatoare Numerice

Page 14: Curs1_ro

28-Feb-13

Charles Babbage

slide 14 Calculatoare Numerice

• Mașina diferențială 1823 • Mașina analitică 1833

– Precursorul calculatorului digital modern!

Aplicații – Tabele matematice - astronomie – Tabele nautice - marină

Ideea de bază – Orice funcție continuă poate fi aproximată printr-un polinom ---

Weierstrass

Tehnologie – mecanică – roți dințate, războiul lui Jacquard, calculatoare

simple

Page 15: Curs1_ro

28-Feb-13

Mașina diferențială O mașină pentru calculul tabelelor matematice

slide 15 Calculatoare Numerice

Weierstrass: – Orice funcție continuă poate fi aproximată printr-un polinom

– Orice polinom poate fi calculat folosind tabele diferențiale

De exemplu f(n) = n2 + n + 41

d1(n) = f(n) - f(n-1) = 2n

d2(n) = d1(n) - d1(n-1) = 2

f(n) = f(n-1) + d1(n) = f(n-1) + (d1(n-1) + 2)

Tot ce trebuie să faci este să aduni!

n

d2(n)

d1(n)

f(n)

0

41

1

2

2

2

3

2

4

2

4 6 8

43 47 53 61

Page 16: Curs1_ro

28-Feb-13

Mașina diferențială

slide 16 Calculatoare Numerice

1823 – Babbage publică un articol în care descrie

mașina diferențială

1834 – Articolul este citit de Scheutz și fiul lui în

Suedia

1842 – Babbage renunță la ideea de-a construi un

prototip funcțional; dorește să construiască Mașina Analitică!

1855 – Scheutz expune mașina la Expoziția Mondială

de la Paris – Poate calcula orice polinom până la gradul 6. – Viteză de calcul: 33 până la 44 numere de 32

de cifre pe minut!

Acum, mașina se află la Smithsonian

Page 17: Curs1_ro

28-Feb-13

Mașina Analitică

slide 17 Calculatoare Numerice

1833: Babbage publică un articol în care-i descrie funcționarea – Dezvoltată în timpul unei pauze pe care a făcut-o în

dezvoltarea mașinii diferențiale

Inspirația: Războaiele de țesut Jacquard – Controlate prin cartele perforate

• Modelul găurilor perforate în cartele dictează modelul țesăturii program

• Același set de cartele poate fi folosit cu fire de culori diferite

numere

1871: Babbage moare – Mașina analitică rămâne neconstruită

Nu este clar dacă mașina analitică ar fi putut fi construită cu tehnologia din vremea lui Babbage

Page 18: Curs1_ro

28-Feb-13

Mașina Analitică Primul model al unui calculator numeric

slide 18 Calculatoare Numerice

1. Unitatea de stocare, în care sunt păstrate toate variabilele folosite precum și rezultatele operațiilor precedente.

2. Râșnița, în care sunt aduși operanzii.

Programul Operația variabila1 variabila2 variabila3 O operație în râșniță necesită introducerea a două catele perforate și rezultă în producerea unei noi cartele perforate ce va fi dusă în unitatea de stocare.

Page 19: Curs1_ro

28-Feb-13

Primul programator Ada Byron aka “Lady Lovelace” 1815-52

slide 19 Calculatoare Numerice

Mentorul lui Lady Lovelace a fost chiar Babbage!

Page 20: Curs1_ro

28-Feb-13

Influența lui Babbage

slide 20 Calculatoare Numerice

• Ideile lui Babbage au fost influențiale, în mare parte datorită – Luigi Menabrea, care a publicat lucrările lui Babbage în Italia – Lady Lovelace, care a tradus notițele lui Menabrea în engleză, cu multe

adăugiri “... Analytic Engine weaves algebraic patterns....”

• La începutul sec. XX – interesul s-a mutat spre calculatoarele analogice, dar – Harvard Mark I construit în 1944 este foarte apropiat ca și concept de

Mașina Analitică.

Page 21: Curs1_ro

28-Feb-13

Harvard Mark I

slide 21 Computer Engineering

• Construit în 1944 în Labortoarele IBM Endicott – Howard Aiken – Profesor de fizică la Harvard – În mare parte mecanic, dar include și relee și angrenaje acționate

electro-magnetic – Cântarea 5 tone și avea 750,000 de componente – Ceas pentru sincronizare cu o perioadă de 0.015 secunde (66Hz)

Performanță: 0.3 secunde pentru adunare 6 secunde pentru o înmulțire 1 minut pentru calculul sin(x) Aritmetică zecimală Fără salturi condiționale!

Se defecta o dată pe saptamână!

Page 22: Curs1_ro

28-Feb-13

Linear Equation Solver John Atanasoff, Iowa State University

slide 22 Calculatoare Numerice

1930: – Atanasoff construiește Linear Equation Solver. – Avea 300 de tuburi! – Calculator digital binar dedicat. – RAM dinamic(valori binare stocate în

condensatoare la care se făcea refresh) Aplicație:

– Rezolvarea ecuațiilor liniare integrale și diferențiale.

Competiția: – Analizorul Diferențial al lui Vannevar Bush --- calculator analogic

Tehnologie: – Tuburi și relee electromagnetice

Atanasoff a decis că modul corect de-a face calcule este prin folosirea de numere binare stocate electronic ca tensiuni.

Page 23: Curs1_ro

28-Feb-13

Electronic Numerical Integrator

and Computer (ENIAC)

slide 23 Calculatoare Numerice

• Inspirați de Atanasoff și Berry, Eckert și Mauchly construiesc ENIAC (1943-45) la University of Pennsylvania

• Primul calculator electronic digital, complet operațional și general-purpose!

– 30 tone, 72 metri pătrați, 200KW

• Performanță

– Citea 120 cartele pe minut

– Adunare în 200ms, Împărțire in 6ms

– De 1000x mai rapid decât Mark I

• Nu și foarte fiabil!

Applicație: Calcule balistice unghi = f (locație, vânt spate, vânt lateral, densitate aer, temperatură, greutate obuz, putere propelant, ... )

Proiectat în timpul WW2

Page 24: Curs1_ro

28-Feb-13

Electronic Discrete Variable

Automatic Computer (EDVAC)

slide 24 Calculatoare Numerice

• Unitatea de programare pt ENIAC era externă

– Diferite secvențe de operații erau executate independent de rezultatele operațiilor respective

– Pentru a modifica ordinea execuției era nevoie de intervenția unui operator uman

• Eckert, Mauchly, John von Neumann și alții au proiectat EDVAC (1944) pentru a rezolva această problemă

– Soluția era calculatorul cu program stocat (stored program computer)

“programul poate fi manipulat ca și datele”

• Primul draft despre EDVAC publicat în 1945, dar avea doar pe von Neumann ca autor!

– În 1973 tribunalul Minneapolis atribuie onoarea inventării primului calculator lui John Atanasoff

Page 25: Curs1_ro

28-Feb-13

Stored Program Computer

slide 25 Calculatoare Numerice

control manual calculatoare Control automat

extern (bandă perforată) Harvard Mark I , 1944 Zuse Z1, WW2

intern Tablou de conexiuni ENIAC 1946 read-only memory ENIAC 1948

read-write memory EDVAC 1947 (concept )

– Aceeași memorie poate fi folosită și pentru instrucțiuni și pentru date

Program = O secvență de instrucțiuni

Cum poate fi controlată secvențierea instrucțiunilor?

EDSAC 1950 Maurice Wilkes

Page 26: Curs1_ro

28-Feb-13

Probleme tehnologice

slide 26 Calculatoare Numerice

ENIAC vs. EDVAC 18,000 tuburi 4,000 tuburi 20 numere de 10 cifre 2000 de cuvinte stocate linii de întârziere cu mercur ENIAC avea mai multe unități asincrone paralele dar numai una era activă la un moment dat

BINAC : Două procesoare care se verificau unul pe celălalt pentru a mări fiabilitatea.

nu a funcționat foarte bine pentru ca procesoarele cădeau rareori de acord

Page 27: Curs1_ro

28-Feb-13

Problema majoră: Fiabilitatea!

slide 27 Calculatoare Numerice

Mean time between failures (MTBF) Whirlwind de la MIT, cu un MTBF de 20 min. era probabil cea mai fiabilă mașină de calcul a vremii!

Motivele lipsei de fiabilitate 1. Tuburi cu vid 2. Mediul de stocare

Linii acustice de întârziere Linii de întârziere cu mercur Tuburi Williams Selecții

Fiabilitatea mărită odată cu inventarea memoriei cu miez de ferită de J. Forrester 1954 la MIT pentru proiectul Whirlwind

Page 28: Curs1_ro

28-Feb-13

Activitate comercială: 1948-52

slide 28 Calculatoare Numerice

IBM SSEC (versiunea avansată a Harvard Mark I)

Selective Sequence Electronic Calculator

– Memorie de 150 cuvinte. – Instrucțiuni, constrângeri, și tabele de date citite de pe bandă

de hârtie perforată. – 66 citittoare de bandă! – Benzile puteau fi lipite la capate pentru a forma o buclă! – Datele puteau fi scrise într-o etapă a calculelor apoi citite

într-o altă fază a calculelor.

Page 29: Curs1_ro

28-Feb-13

Și apoi a venit IBM 701

slide 29 Calculatoare Numerice

IBM 701 -- 30 mașini vândute intre 1953-54 foloseau tuburi catodice drept memorie, 72 tuburi, 32x32 biti fiecare IBM 650 -- versiune mai ieftină bazată pe memorie pe tambur, mai mult de 120 de unități vândute în 1954 și comenzi pentru încă 750!

De ce a intrat IBM în industria tehnicii de calcul?

IBM făcea prea mulți bani! Chiar și fără calculatoare, veniturile IBM se dublau o dată la 4-5 ani în anii 40 și 50.

Page 30: Curs1_ro

28-Feb-13

Calculatoarele anilor 50

slide 30 Calculatoare Numerice

• Hardware-ul foarte costisitor

• Memorii foarte mici (mii de cuvinte) Fără un program rezident de sistem în memorie!

• Accesul la memorie de 10-50x mai lent decât un ciclu de procesor Timpul de execuție al unei instrucțiuni era dominat de timpul de acces la

memorie.

• Capabilitatea de-a proiecta circuite complexe de control pentru execuția unei instrucțiuni era principala problemă și nu viteza de execuție sau decodificare a unei instrucțiuni

• Modul în care un programator vedea mașina de calcul nu era deloc diferit față de un proiectant hardware.

Page 31: Curs1_ro

28-Feb-13

IBM 650 (1953-4)

slide 31 Calculatoare Numerice

[Din 650 Manual, © IBM]

Tambur magnetic (1,000 sau 2,000

cuvinte de 10 cifre zecimale)

Registru acumulator de 20

de cifre

Instrucțiunea curentă (inclusiv

contorul de program)

UAL serială

Page 32: Curs1_ro

28-Feb-13

IBM 650 – perspectiva

programatorului

slide 32 Calculatoare Numerice

O mașină cu tambur magnetic și 44 de instrucțiuni Instrucțiune: 60 1234 1009

• “Încarcă conținutul locației 1234 în registrul distribuție; încarcă-l de asemenea în acumulatorul superior; setează acumulatorul inferior la zero; apoi merrgi la locația 1009 pentru următoarea instrucțiune”

Programatorii pricepuți optimizau amplasamentul instrucțiunilor pe tambur pentru a reduce latența!

Page 33: Curs1_ro

28-Feb-13

Primele seturi de instrucțiuni

slide 33 Calculatoare Numerice

Single Accumulator - o moștenire de la mașinile de calcul. LOAD x AC <- M[x] STORE x M[x] <- (AC) ADD x AC <- (AC) + M[x] SUB x MUL x exista un registru pentru rezultat DIV x SHIFT LEFT AC <- 2 (AC) SHIFT RIGHT JUMP x PC <- x JGE x if (AC) >= 0 then PC <- x LOAD ADR x AC <- adresa la care pointează (M[x]) STORE ADR x

De obicei, mai puțin de 24 de instrucțiuni!

Page 34: Curs1_ro

28-Feb-13

Programare:

Single Accumulator Machine

slide 34 Calculatoare Numerice

LOOP LOAD N JGE DONE ADD ONE STORE N

F1 LOAD A F2 ADD B F3 STORE C

JUMP LOOP DONE HLT

Ci Ai + Bi, 1 i n

Cum pot modifica adresele A, B și C ?

A

B

C

N

ONE

cod

-n

1

Page 35: Curs1_ro

28-Feb-13

Cod care se auto-modifică

slide 35 Calculatoare Numerice

LOOP LOAD N JGE DONE ADD ONE STORE N

F1 LOAD A F2 ADD B F3 STORE C

JUMP LOOP DONE HLT

Modifică programul pentru următoarea iterație

Fiecare iterație total book- keeping instruction fetches operand fetches stores

Ci Ai + Bi, 1 i n

LOAD ADR F1 ADD ONE STORE ADR F1 LOAD ADR F2 ADD ONE STORE ADR F2 LOAD ADR F3 ADD ONE STORE ADR F3 JUMP LOOP

DONE HLT

17

10 5

14 8 4

Page 36: Curs1_ro

28-Feb-13

Registre de index Tom Kilburn, Manchester University, mid 50’s

slide 36 Calculatoare Numerice

Modifică instrucțiunile existente LOAD x, IX AC M[x + (IX)] ADD x, IX AC (AC) + M[x + (IX)] ...

Addaugă instrucțiuni noi pentru a modifica registrele de index

JZi x, IX if (IX)=0 then PC x else IX (IX) + 1 LOADi x, IX IX M[x] (truncated to fit IX) ...

De ce să nu folosim unul sau mai multe registre special pentru calculul adreselor?

Registrele de index au o funcționalitate similară cu acumulatoarele

Page 37: Curs1_ro

28-Feb-13

Folosirea registrelor index

slide 37 Calculatoare Numerice

LOADi -n, IX LOOP JZi DONE, IX

LOAD LASTA, IX ADD LASTB, IX STORE LASTC, IX JUMP LOOP

DONE HALT

• Programul nu se mai auto-modifică • Eficiență îmbunătățită dramatic (ops / iter) cu index regs fără index regs

instruction fetch 17 (14) operand fetch 10 (8) store 5 (4)

• Costuri: Instrucțiunile sunt cu 1-2 biți mai lungi

Registrele index necesită circuite similare cu UAL Control complex

A

LASTA

Ci Ai + Bi, 1 i n

5(2) 2 1

Page 38: Curs1_ro

28-Feb-13

Operații cu registre index

slide 38 Calculatoare Numerice

Incrementează registrul index cu k AC (IX) instrucține nouă AC (AC) + k IX (AC) instrucțiune nouă

De asemenea, conținutul AC trebuie salvat și refăcut.

Mai bine incrementăm IX direct INCi k, IX IX (IX) + k

Mai multe instrucțiuni care manipulează reg. index STOREi x, IX M[x] (IX)

...

IX începe să arate ca un reg. acumulator mai multe registre index

Mai multe acumuatoare General Purpose Registers

Page 39: Curs1_ro

28-Feb-13

Evoluția modurilor de

adresare

slide 39 Calculatoare Numerice

1. Single accumulator, absolute address LOAD x

2. Single accumulator, index registers LOAD x, IX

3. Indirection LOAD (x)

4. Multiple accumulators, index registers, indirection LOAD R, IX, x

sau LOAD R, IX, (x) ce înseamnă?

R M[M[x] + (IX)]

or R M[M[x + (IX)]] 5. Indirect through registers

LOAD RI, (RJ)

6. The works LOAD RI, RJ, (RK) RJ = index, RK = base addr

Page 40: Curs1_ro

28-Feb-13

Varietatea formatelor de

instrucțiune

slide 40 Calculatoare Numerice

• One address format: Mașină cu acumulator – Registrul acumulator este întotdeauna sursa precum și destinația pentru

unul din operanzi

• Two address format: destinația este identică cu unul din operanzi

(Reg Reg) to Reg RI (RI) + (RJ) (Reg Mem) to Reg RI (RI) + M[x] – x poate fi operand imediat sau specificat printr-un registru – Calculul efectiv al lui x poate implica indexare, adresare indirectă etc.

• Three address format: O destinație și până la două surse pentru operanzi pentru fiecare instrucțiune

(Reg x Reg) to Reg RI (RJ) + (RK) (Reg x Mem) to Reg RI (RJ) + M[x]

Page 41: Curs1_ro

28-Feb-13

Formatul pentru Zero Address

slide 41 Calculatoare Numerice

• Operanzii sunt puși pe stivă

add M[sp-1] M[sp] + M[sp-1] load M[sp] M[M[sp]] – Stiva poate fi mapată peste registre sau în memorie (de obicei,

pointer-ul cître vârful stivei se află într-un registru general)

C

B

A SP

Registru

Page 42: Curs1_ro

28-Feb-13

Arhitectura Burrough B5000: Mașină ALGOL, Robert Barton, 1960

slide 42 Calculatoare Numerice

• Implementarea hadware poate fi complet transparentă pentru programator, dacă acesta are la dispoziție o interfață de limbaj de nivel înalt.

• Organizată ca o mașină cu stivă, pentru că astfel de mașini sunt utile pentru:

1. Evaluarea expresiilor; 2. Apeluri la subrutine, recursivitate, întreruperi imbricate; 3. Accesul la variabile pentru limbajele structurate pe blocuri.

• B6700, un model mai târziu, avea mai multe funcționalități – Date etichetate – Memorie virtuală – Suport pentru procesoare și memorii multiple

Page 43: Curs1_ro

28-Feb-13

Evaluarea Expresiilor

slide 43 Calculatoare Numerice

a

b

c

(a + b * c) / (a + d * c - e)

/

+

* + a e

-

a c

d c

* b

Reverse Polish a b c * + a d c * + e - /

push a push b push c multiply

*

Evaluation Stack

b * c

Page 44: Curs1_ro

28-Feb-13

Evaluarea Expresiilor

slide 44 Calculatoare Numerice

a

(a + b * c) / (a + d * c - e)

/

+

* + a e

-

a c

d c

* b

Reverse Polish a b c * + a d c * + e - /

add

+

Evaluation Stack

b * c

a + b * c

Page 45: Curs1_ro

28-Feb-13

Organizarea hardware a stivei

slide 45 Calculatoare Numerice

• Stiva face parte din starea procesorului stiva trebuie sa fie limitată și de

dimensiune mică numărul de registre, nu mărimea memoriei principale

• Conceptual, stiva este nelimitată o parte a stivei este inclusă în starea

procesorului; restul este ținută în memoria principală

Page 46: Curs1_ro

28-Feb-13

Operațiile pe stivă și referințele

implicite la memorie

slide 46 Calculatoare Numerice

• Presupunem că primele 2 elemente din stivă sunt ținute în registre și restul în memorie.

fiecare push 1 referintă la memorie pop 1 referință la memorie

Nu e suficient de bine!

• Performanțe mai bune pot fi atinse dacă primele N elemente sunt stocate în registre și referințele la memorie sunt făcute doar atunci când stiva face overflow sau underflow.

Problemă – când să fac Load/Unload la registre?

Page 47: Curs1_ro

28-Feb-13

Mărimea stivei și referințele la

memorie

slide 47 Calculatoare Numerice

program stack (size = 2) memory refs push a R0 a push b R0 R1 b push c R0 R1 R2 c, ss(a) * R0 R1 sf(a) + R0 push a R0 R1 a push d R0 R1 R2 d, ss(a+b*c) push c R0 R1 R2 R3 c, ss(a) * R0 R1 R2 sf(a) + R0 R1 sf(a+b*c) push e R0 R1 R2 e,ss(a+b*c) - R0 R1 sf(a+b*c) / R0

a b c * + a d c * + e - /

4 stores, 4 fetches (implicit)

Page 48: Curs1_ro

28-Feb-13

Mărimea stivei și evaluarea

expresiilor

slide 48 Calculatoare Numerice

program stack (size = 4) push a R0 push b R0 R1 push c R0 R1 R2 * R0 R1 + R0 push a R0 R1 push d R0 R1 R2 push c R0 R1 R2 R3 * R0 R1 R2 + R0 R1 push e R0 R1 R2 - R0 R1 / R0

a b c * + a d c * + e - /

a și c sunt “încărcate” de 2x

Nu e cea mai bună utilizare a registrelor!

Page 49: Curs1_ro

28-Feb-13

Folosirea registrelor într-o

mașină GPR

slide 49 Calculatoare Numerice

Mai mult control asupra registrelor. Pot fi numite explicit în cod.

Load Ri m Load Ri (Rj) Load Ri (Rj) (Rk)

- Elimină nevoia pentru

Load-uri și Store-uri inutile -Mai puține registre

dar crește dimensiunea instrucțiunilor!

Load R0 a Load R1 c Load R2 b Mul R2 R1

(a + b * c) / (a + d * c - e)

Reuse R2

Add R2 R0 Load R3 d Mul R3 R1 Add R3 R0

Reuse R3

Load R0 e Sub R3 R0 Div R2 R3

Reuse R0

Page 50: Curs1_ro

28-Feb-13

Mașini cu stivă: caracteristici

esențiale

slide 50 Calculatoare Numerice

• Pe lângă push și pop, setul de instrucțiuni trebuie să aibă și capabilități pentru:

– Adresarea oricui element din

memoria de date – Salturi la orice instrucțiune

din memoria de program – Mută orice element din stivă

în vârful stivei

machinery to carry out +, -, etc.

stack SP

DP

PC

data

.

.

.

a b c

push a push b push c * + push e /

code

Page 51: Curs1_ro

28-Feb-13

Mașinile cu stivă au dispărut

în anii 80

slide 51 Calculatoare Numerice

1. Programele lor nu sunt mai mici ca dimensiune dacă este permisă adresarea scurtă.

2. Compilatoarele moderne pot să adreseze mai eficient registrele generale decât să lucreze cu stiva.

Registrele și memoriile cache sunt mai bune decât stiva

Arhitecturile timpurii nu țineau cont de rolul pe care îl avea compilatorul! B5000, B6700, HP 3000, ICL 2900, Symbolics 3600

Page 52: Curs1_ro

28-Feb-13

Dezvoltarea software

slide 52 Calculatoare Numerice

Până în 1955 – librării de rutine numerice - Operații în virgulă mobilă - Funcții transcendentale - Manipulare de matrici, rezolvare de ecuații . . .

1955-60 Limbaje de nivel înalt - Fortran 1956

Sisteme de operare - - Asambloare, Loadere, Linkere, Compilatoare

- Programe pentru monitorizarea utilizării și încărcării sistemului

Mașinile aveau nevoie de operatori experimentați Majoritatea utilizatorilor nici nu puteau înțelege programele darămite să scrie altele noi

Mașinile de calcul erau vândute cu suita software aferentă

Page 53: Curs1_ro

28-Feb-13

Probleme de compatibilitate

slide 53 Calculatoare Numerice

În anii 60’, IBM avea 4 familii incompatibile de calculatore!

701 7094 650 7074 702 7080 1401 7010

Fiecare sistem avea propriul • Set de instrucțiuni • Sistem I/O și elementr de stocare: bandă magnetică, memorii pe tambur și unități de disc • asambloare, compilatoare, librării,... • nișă de piață afaceri, cercetare, timp real, ...

IBM 360

Page 54: Curs1_ro

28-Feb-13

IBM 360 : Idei de design Amdahl, Blaauw and Brooks, 1964

slide 54 Calculatoare Numerice

• Design-ul trebuie să fie făcut a.î. să permită extinderea și dezvoltarea de mașini succesoare

• O metodă generală de-a conecta dispozitive de I/O

• Performanța totală – rezultate pe lună în locul biți pe microsecundă

• Mașina trebuie să fie capabilă să se auto-monitorizeze, fără intervenția operatorului uman.

• Fault checking construit în hardware și metode de-a localiza un defect, pentru a reduce timpii de nefuncționare

• Sisteme simplu de asamblat cu dispozitive I/O, memorii, procesoare redundante, pentru a implmenta toleranta la defecte

• Operații în virgulă mobilă cu precizie mare

Page 55: Curs1_ro

28-Feb-13

IBM 360: O mașină General-

Purpose Register (GPR)

slide 55 Calculatoare Numerice

• Starea procesorului – 16 registre General-Purpose de 32 de biti

• Pot fi folosite pentru adresare indexată și bazată

• Registrul 0 avea proprietăți speciale

– 4 registre în virgulă mobilă de 64 de biți

– Program Status Word (PSW)

• PC, Flag-uri condiționale, Flag-uri de control

• O mașină de 32 de biți cu adresare pe 24 de biți – Nici o instrucțiune nu putea să conțină o adresă pe 24 de biți!

• Format diferit pentru date – 8-bit bytes, 16-bit half-words, 32-bit words, 64-bit double-words

Din cauza IBM 360 un byte are 8 biți în ziua de azi!

Page 56: Curs1_ro

28-Feb-13

IBM 360: Implementări inițiale

slide 56 Calculatoare Numerice

Model 30 . . . Model 70

Storage 8K - 64 KB 256K - 512 KB

Datapath 8-bit 64-bit

Circuit Delay 30 nsec/level 5 nsec/level

Local Store Main Store Transistor Registers

Control Store Read only 1~sec Conventional circuits

Arhitectura setului de instrucțiuni (ISA) IBM 360 ascundea complet diferențele tehnologice dintre diferitele modele.

Primul ISA proiectat să aibă o interfață portabilă hardware-software!

Încă este prezent în ziua de azi, cu mici modificări!

Page 57: Curs1_ro

28-Feb-13

IBM 360: 47 de ani mai târziu… The zSeries z11 Microprocessor

slide 57 Calculatoare Numerice

• 5.2 GHz in IBM 45nm PD-SOI CMOS technology

• 1.4 billion transistors in 512 mm2

• 64-bit virtual addressing – original S/360 was 24-bit, and S/370 was 31-bit extension

• Quad-core design

• Three-issue out-of-order superscalar pipeline

• Out-of-order memory accesses

• Redundant datapaths – every instruction performed in two parallel datapaths and results

compared

• 64KB L1 I-cache, 128KB L1 D-cache on-chip

• 1.5MB private L2 unified cache per core, on-chip

• On-Chip 24MB eDRAM L3 cache

• Scales to 96-core multiprocessor with 768MB of shared L4 eDRAM

[ IBM, HotChips, 2010]

Page 58: Curs1_ro

28-Feb-13

În concluzie …

slide 58 Calculatoare Numerice

• Arhitectura Calculatoarelor >> ISA și RTL

• CN se bazează pe interacțiunea dintre hardware și software și design-ul nivelelor de abstractizare

• Arhitectura de calcul este modelată de tehnologie și aplicații – Istoria dispozitivelor de calcul ne poate da indicii despre viitorul

tehnologiei

• Computer Science este la un punct de trecere între calculul secvențial și cel paralel – Menținerea creșterii de performanță necesită numeroase

inovații, inclusiv în domeniul arhitecturii de calcul.

Page 59: Curs1_ro

28-Feb-13

Acknowledgements

slide 59 Calculatoare Numerice

• Aceste slide-uri contin materiale dezvoltate de: – Arvind (MIT)

– Krste Asanovic (MIT/UCB)

– Joel Emer (Intel/MIT)

– James Hoe (CMU)

– John Kubiatowicz (UCB)

– David Patterson (UCB)

• MIT material derived from course 6.823

• UCB material derived from course CS252