720 likes | 961 Views
Facultatea de Informatică - Iaşi. Arhitectura Calculatoarelor Curs pentru anul I Informatică FII – 2007 hluchian@infoiasi.ro. Structura cursului. Prelegeri 2 ore pe săptămână: marţi 10-12 / 12-14, s ala C2 Ore de laborator / seminar 2 ore pe săptămână Două jumătăţi de semestru:
E N D
Facultatea deInformatică - Iaşi Arhitectura Calculatoarelor Curs pentru anul I Informatică FII – 2007 hluchian@infoiasi.ro
Structura cursului • Prelegeri • 2 ore pe săptămână: marţi 10-12 / 12-14, sala C2 • Ore de laborator / seminar • 2 ore pe săptămână • Două jumătăţi de semestru: • Săptămânile 1-7 – prof.dr. Henri Luchian • Probă finală în săptămâna a noua • Verificare pe parcurs: nu poate fi repetată decât odată cu întregul curs!! • Săptămânile 8-14 – lect.dr. Vlad Rădulescu • Probă finală în sesiunea de examene – ianuarie • Poate fi repetată doar în anul academic curent !!
Cerinţe eliminatoriila fiecare dintre cele două părţi • Minimum 6 din 7 prezenţe la orele de laborator / seminarii • Minimum 5 din cele 7 teme, date în timpul prelegerilor, predate în scris la prelegerea din săptămâna următoare.
Notare • 3 note de ponderi egale: • activitate şi test la laborator • proba scrisă la jumătatea semestrului • proba scrisă din sesiunea de examene • Nota finală: • trei note de promovare: media aritmetică, rotunjire • două note de promovare şi un 4: media aritmetică, trunchiere (exemple: 9 + 10 + 4 7; 5+5+4nepromovat) • două note de promovare şi un 3 (2): idem, minus 1 • Exemple: 10 + 10 + 3 6 ; 7 + 8 + 2 4 (nepromovat) • mai puţin de atât sau mai puţin de 6 prezenţe la laborator/seminar: nepromovat • Eventuală re-examinare (unică!) sau mărire: doar proba din sesiune
Autori ale cărorprezentări publice au fost folosite pentru pregătirea acestei forme a cursului • Sivarama Dandamundi • Jerry Breecher • Randy Katz • Michel Allemand • Daniel Amyot • John Morris • Mikko Lipasti • Gregory Byrd
CUPRINS • I. Introducere în Arhitectura şi organizarea calculatorului • II. Circuite combinaţionale şi funcţii booleene • III. Circuite secvenţiale şi automate • IV. Reprezentări interne
Capitolul I INTRODUCERE
Când au apărutmaşinile de calcul? • După fiecare redefinire a noţiunii de calcul • abac: adunări • roţi dinţate Leibniz (2) şi Pascal (10): adunări, înmulţiri • Babbage: instrucţiuni din exterior, calcul ramificat • von Neumann: program memorat; execuţie în secvenţă de instrucţiuni; ierarhii de memorii • calculatoare “paralele” (de fapt, calcul paralel) • calcul(atoare) probabilist(e), neuronal(e), evolutiv(e), cuantic(e) … • Încearcă automatizarea calculului în înţelesul respectiv
Maşini de calcul universale • O maşină de calcul universală se poate comporta ca oricare maşină de calcul particulară • Exemple: • Introducând în calculator un program corect de lucru cu • matrici, calculatorul se va comporta ca o maşină de calcul cu matrici • linii, unghiuri, forme – maşină de proiectare grafică • cuvinte, paragrafe, texte – maşină de tehnoredactat • Toate calculatoarele construite conform aceleiaşi definiţii a calculului pot calcula exact aceleaşi lucruri • dacă au la dispoziţie suficient timp şi memorie
Scurtă istoriea ideilor • inventarea scrierii poziţionale a numerelor • indieni, arabi • inventarea logaritmilor • John Napier of Edinburgh • algebra booleană • George Boole, 1854 • teorema de incompletitudine • Kurt Gödel, 1935 • conceptul de calculator neumannian • John von Neumann, 1946 • Toate sunt legate de calcul(ator) în înţelesul de astăzi
Scurtă istorie- invenţii abstracte şi concrete • 1850: George Boole inventează algebra booleană • propoziţii logice sunt transformate în simboli • calcule cu propoziţii logice, folosind reguli de tip matematic • 1938: Claude Shannon leagă algebra booleană de circuite (comutatoare) • în teza sa de dizertaţie • 1945: John von Neumann proiectează primul calculator cu program memorat • comutatoarele erau lămpi • 1946: ENIAC – primul calculator electronic • 18,000 de lămpi • 5000 de adunări, sute de înmulţiri pe secundă • 1947: Shockley, Brittain şi Bardeen inventează tranzistorul • permite integrarea mai multor circuite într-un modul • deschide drumul electronicii moderne
Scurtă istoriea calculatoarelor • 1642-1945 : Calculatoare mecanice • Leibniz, Pascal, Babbage; Z1, Mark I • 1945-1955 : Lămpi • ENIAC, EDSAC, UNIVAC, IBM 70x • 1952: primul succes comercial – 19 calculatoare IBM vâdute • 1955-1965 : Tranzistori • PDP-1, IBM 7094, CDC 6600, • 1965-1980 : Circuite integrate • IBM 360, PDP-11, 4004, 8008, VAX • VLSI, ULSI
Scurtă istoriea microprocesoarelor • IBM-PC (8088) : 1980 • Mac Plus (68000) : 1984 • 80486 : 1990 • Pentium : 1994 • Pentium II : 1997 • Pentium III : 1999 • Pentium IV : 2001
Calculatoare von Neumann • program memorat • memorie infinită (ideal), timp de acces egal • realizată practic prin ierarhii de memorie • la execuţie, după o instrucţiune i urmează • instrucţiunea memorată imediat după ea (regula) • eventual instrucţiunea indicată de i (dacă i este instrucţiune de control) • adresa instrucţiunii următoare se află într-un registru – PC • în fiecare moment, o singură instrucţiune nouă este încărcată pentru execuţie
Calculatoare von Neumann • Anterior: • conceptul de automatizare a operaţiilor luate separat (Pascal, Leibniz) • conceptul de program – exterior (Babbage) • conceptul de calcul ramificat / control • Conceptul de program memorat • John von Neumann e.a. (1946) • Concept arhitectural fundamental - procesoarele moderne
Calculatoare von Neumann • Programul şi datele - stocate în (aceeaşi) memorie • ideal: infinită, omogenă (locaţii la fel de rapid accesabile) • practic: o ierarhie de memorii fiecare fiind omogenă • Program counter (PC) indică locul din memorie al instrucţiunii de executat • conţinutul PC este actualizat la execuţia fiecărei instrucţiuni • o dată sau de două ori • Instrucţiunile programului sunt aduse pe rând din locaţii de memorie în procesor • regula: locaţii succesive incrementare PC • excepţia: instrucţiuni de salt • ordine fizică şi ordine logică
Arhitecturaunui sistem de calcul programe utilizator sistem de operare compilatoare LIMBAJ MAŞINĂ procesor-memorie intrări / ieşiri proiectare digitală circuite
Componentele hardware ale unui calculator Procesor Intrări (Input) Control Memorie Calea de date Ieşiri (Output)
Controler Controler Controler Organizarea unui calculator Magistrala sistem Cache N2 Memorie centrală Procesor Adaptor CPU Cache N1 Magistrala de intrări/ieşiri Reţea
Legi empirice • Legi ale oricărei ştiinţe depind într-un fel sau altul de experiment sau de observaţii în lumea concretă • unele ştiinţe sunt – sau au capitole – preponderent empirice (medicina) • Repetabilitatea, inerentă noţiunii de experiment, duce la ideea de legi empirice: adevăruri valabile de cele mai multe ori, conform observaţiilor • Formulate în Informatică încă de la începuturi • inginerie
Legi empirice în informatică • Există legi empirice aplicabile hard-ului sau soft-ului: • legea “90:10” (Donald Knuth): 90% din timpul de execuţie al unui program, este utilizat pentru 10% din instrucţiuni; • legea lui Amdahl: eficienţa maximă în îmbunătăţirea unui sistem (concret sau abstract) se atinge dacă se optimizează subsistemul cel mai folosit • legile localizării – spaţială, temporală.
Legea lui Amdahl • Îmbunătăţirea unui sistem trebuie făcută în partea cel mai frecvent folosită. • Pentru creşteri semnificative, trebuie ca a şi fa să fie cât mai mari. • Exemplu: Dacă procesorul lucrează 50% din timp şi devine de două ori mai rapid, atunci A = 4/3. • Observaţie. Sumatorul va fi cel mai intens îmbunătăţit.
Legile localizării (pentru instrucţiuni) • Localizare spaţială: • dacă la un moment dat se execută o instrucţiune i, atunci este probabil ca la momente apropiate să se execute instrucţiuni din apropierea lui i (în ordine fizică) • spaţiul de memorie, în care se află instrucţiunile. • Localizare temporală: • dacă la un moment dat se execută instrucţiunea i, atunci este probabil ca instrucţiunea i să se execute la momente apropiate în timp
Ordine fizică şi ordine logică • Instrucţiunile de executat se află în memorie într-o anumită ordine: ordinea fizică. • Ele se citesc din memorie şi se execută • regula: în ordinea în care sunt memorate • excepţia: sărind peste un număr de instrucţiuni • Rezultă ordinea logică a instrucţiunilor • În ordinea logică la o anumită rulare, fiecare instrucţiune din ordinea fizică poate să apară de 0, 1, 2, … ori • Legile localizării indică un tip esenţial de relaţie între ordinea fizică şi ordinea logică: • Secvenţa de instrucţiuni din ordinea logică este alcătuită în general din sub-secvenţe construite din porţiuni restrânse ale secvenţei de instrucţiuni din ordinea fizică.
Legile localizării: în fiecare interval “mic” de timp, programul utilizează o mică porţiune din spaţiul de adrese • Valabil pentru instrucţiuni ca şi pentru date • Temporală: iteraţii (program), reutilizări • Spaţială: ordinea fizică; tablouri de date • De mai bine de 20 de ani, soluţiile hardware se bazează pe legile localităţii pentru a câştiga viteză • Un exemplu: ierarhia de memorii
Ierarhia de memorii • Soluţionează două probleme: • “separation of concerns” • Programele foarte mari nu încap în memoria principală • Nivelul inferior al ierarhiei (memoria secundară) • Necesitatea creşterii vitezei de execuţie a programelor • Nivel superior al ierarhiei (memoria cache)
Ierarhia de memorii • Niveluri: • regiştrii-generali – procesor ( 1/4 Ko) • memoria cache ( 1 Mo) • memoria RAM ( 4 Go) • memoria secundară – disc (1 To) • Preţul pe bit scade pe măsura depărtării de procesor. • Timp de comunicare şi capacitate de memorare foarte mici pe primele două niveluri • corespunzând “ferestrelor” din legile localizării • dar comparativ foarte mari pe ultimul • permiţând memorarea programelor foarte mari
Nivelurile ierarhiei de memorii Nivel superior Capacitate Timp de acces Cost Viteză mai mare Controlul transferului Unitatea de transfer Regiştrii CPU 4-64 octeţi 1 ns Regiştri Program utilizator 1-8 octeţi Instr. / operanzi Memorie Cache Nivel 1: <16 Kilo-octeţi Nivel 2: < 2Mega-octeţi 3 ns; 15 ns 0.1 cenţi/bit Cache Hardware (Controller cache) 8-128 octeţi Blocuri Memorie principală < 4Giga-octeţi 150 ns .01-.001 cenţi/ bit Memorie principală Sistemul de operare 512-4 Kilo-octeţi Pagini Disc 100 Giga-octeţi 5 ms (5,000,000 ns) 10-5 - 10-6 cenţi/bit Disc Utilizator Mega-octeţi Fişiere Capacitate mai mare Bandă secunde-minute 10-8 cenţi/bit ? bandă Nivel inferior
Ierarhia de memorii • Programul întreg se află în memoria secundară • Cu fiecare nivel urcat în ierarhie, sunt aduse de pe nivelul inferior “ferestre” din ce în ce mai mici ale programului. • Execuţia – direct din cache. • succes: instrucţiunea următoare este găsită în cache • eşec : instrucţiunea următoare trebuie adusă de pe un nivel inferior • eşecuri dese ar cauza o execuţie mai lentă decât dacă instrucţiunile ar fi aduse direct din memoria secundară • Legile localizării fac ca ierarhiile de memorii să accelereze execuţia programelor • pe porţiuni. • O valoare uzuală a ratei de succes poate fi de ordinul a 95%.
Arhitectura calculatorului(Computer Architecture) • Ce este arhitectura unui calculator? Arhitectura setului de instrucţiuni (ISA) + organizarea maşinii Arhitectura calculatorului = Viziunea programatorului asupra maşinii Arhitectura setului de instrucţiuni =
Aplicaţii software Software sistem Sistemul hardware Sistem hardware Viziunea utilizatorului
Viziunea programatorului • Depinde de tipul şi nivelul limbajului utilizat • O ierarhie a limbajelor: • Limbajul maşină • Limbajul de asamblare creşterea nivelului • Limbaje de nivel înalt de abstracţie • Programe - aplicaţii • Independente de maşină: • Limbaje de nivel înalt / programe - aplicaţii • Specifice maşinii: • Limbajele maşină şi de asamblare
Programe-aplicaţii Limbaje de nivel înalt Limbaj de asamblare Limbaj maşină Control microprogram Hardware Viziunea programatorului Independente de maşină Limbaje de nivel scăzut Specificefiecărei maşini
Viziunea programatorului • Limbajul maşină • Caracteristic fiecărui procesor • Constă din cuvinte peste alfabetul {0, 1} 1111 1111 0000 0110 0000 1010 0000 0000 • Limbajul de asamblare • Nivel ceva mai înalt • mnemonice, adrese simbolice • Mai apropiat de modul de înţelegere al omului • Corespondenţă 1-la-1 cu majoritatea instrucţiunilor din limbajul maşină inc count
Comparaţie Limbaj de asamblare Limbaj maşină (Assembly Language) (Machine Language) în hexazecimal inc result FF060A00 mov cl_size,45 C7060C002D00 and mask,128 80260E0080 add marks,10 83060F000A
Viziunea programatorului • Asambloarele (assemblers) traduc din limbaj de asamblare în limbaj maşină • Dual: dez-asamblare • Compilatoarele traduc din limbaje de nivel înalt în limbaj maşină • Direct sau • Indirect, via limbaj de asamblare • interpretoare
Limbaje de nivel înalt Compilator Limbaj de asamblare Assembler Limbaj maşină Viziunea programatorului
Viziunea programatorului • Limbaj de nivel înalt În C: result = count1 + count2 + count3 + count4 • Limbaj de nivel jos În limbaj de asamblare Pentium: mov AX,count1 add AX,count2 add AX,count3 add AX,count4 mov result,AX
Niveluri de limbaje • Unele instrucţiuni simple de nivel înalt pot fi exprimate printr-o singură instrucţiune în limbaj de asamblare: Limbaj de asamblareC inc result result++; mov size,45 size = 45; and mask1,128 mask1 &= 128; add marks,10 marks += 10;
Niveluri de limbaje • Cea mai frecventă situaţie este cea în care o instrucţiune de nivel înalt este echivalentă cu o secvenţă de instrucţiuni în limbaj de asamblare: C Limbaj de asamblare size = value; mov AX,value mov size,AX sum += x + y + z; mov AX,sum add AX,x add AX,y add AX,z mov sum,AX
Viziunea programatorului • Arhitectura setului de instrucţiuni (Instruction set architecture - ISA) • Specifică funcţionarea unui procesor • Defineşte nivelul logic al procesorului • O ISA poate fi implementată fizic în diverse feluri, care sunt • identice la nivel logic (interpretarea funcţionării), dar • pot diferi ca • performanţă (viteză) • preţ
Viziunea programatorului: avantajele limbajelor de nivel înalt • Dezvoltarea de programe este mai rapidă • Instrucţiuni de nivel înalt (mai puţine instrucţiuni de scris) • Întreţinerea programelor este mai uşoară • Aceleaşi motive ca mai sus • Programele sunt portabile • Conţin puţine detalii dependente de maşină • Se pot folosi cu mici modificări sau chiar fără pe diverse tipuri de maşini • Traducerea în limbajul-maşină ţintă urmează să fie făcută automat de un compilator specific calculatorului • Programele în limbaj de asamblare nu sunt portabile
Viziunea programatorului:La ce ajută programareaîn limbaj de asamblare? • Două mari avantaje: • eficienţă • Spaţiu • cod compact • şi din limbaj de nivel înalt se ajunge la programe în limbaj-maşină, dar compactitate mai mică • Timp • Legile localităţii cu mai puţine excepţii şi pe ferestre mai mici, deci execuţie mai rapidă (mai puţine eşecuri) • accesibilitate la resursele hardware ale sistemului • deoarece specificităţile maşinii sunt luate în considerare