Sisteme de calcul
Chișinău
Cuprins Introducere ..................................................................................... 3 Tema 1. Evoluţia sistemelor de calcul ........................................... 5 Tema 2. Evoluţia arhitecturii sistemelor de calcul ...................... 22 Tema 3. Structura sistemelor de calcul ........................................ 28 Tema 4. Caracteristicile sistemelor de calcul. ............................. 48 Tema 5. Tehnici de exploatare a sistemelor de calcul. ................ 57 Tema 6. Prelucrarea paralelă a informaţiei. ................................. 77 Tema 7. Clasificarea sistemelor de calcul.................................... 84 Tema 8. Sisteme de calcul multicalculator. ................................. 96 Tema 9. Sisteme de calcul multiprocesor. ................................. 104 Tema 10. Particularităţile organizării proceselor de calcul. ...... 116 Tema 11. Sisteme multiprocesor matriciale. .............................. 121 Tema 12. Sisteme multiprocesor vectoriale. .............................. 128 Tema 13. Sisteme multiprocesor asociative ............................... 138 Lista de abrevieri........................................................................ 142 Bibliografie ................................................................................ 143
2
Introducere Acest manual este destinat pentru cursul „Sisteme de calcul” sau pentru persoanele interesate în a afla mai mult despre tipurile de calculatoare, clasificarea, modul de funcţionare, scopul creării, domeniul utilizării. Materialul este expus în conformitate cu cerinţele faţă de curs şi ţinând cont că are unele tangenţe cu cursurile: „Asamblare, depănare PC”, „Sisteme de operare”. De obicei, când întrebăm ce este o sistemă de calcul ne aducem aminte de calculatoare personale (CP) şi supercalculatoare. Dar aceasta este o clasificare simplistă, ce ne lămureşte termenul dat ca în comparaţie cu un aisberg. Clasificarea dată ne arată doar careva termeni, ca vârful aisbergului ce este la suprafaţă, dar în dependenţă de domeniul utilizării, tehnologiile folosite avem mult mai multe tipuri de sisteme. Chiar, lucrând în fiecare zi la un calculator personal folosim doar o parte mică din posibilităţile ce ne oferă diferite sisteme de calcul. De obicei, folosim calculatorul ca un loc de lucru sau de joc, însă problemele ce pot fi rezolvate sunt mult mai numeroase. De exemplu: servicii de informare, rezervarea biletelor; construcţia, proiectarea automobilelor, avioanelor, proiectarea unor detalii; extragerea petrolului şi gazului; farmacologia; prognozarea timpului; prezicerea cutremurelor; proiectarea dispozitivelor electronice; sinteza materialelor noi; sisteme de prelucrare a datelor statistice; dinamica fluidelor; fizica particulelor, chimia moleculară, matematici aplicate; simularea numerică a sistemelor, etc. 3
La prima vedere s-ar părea că problemele date pot fi îndeplinite şi la un CP performant, mai ales că din an în an performanţele CP cresc, dar luând în vedere numărul impunător de date de intrare aceasta este imposibil sau ar dura în timp de zeci, sute de ani. O închipuire bună poate da exemplul cu calcule necesare pentru extragerea petrolului din tema „Clasificarea sistemelor de calcul”. Cu cât mai mari sunt datele de intrare, cu cât funcţiile ce trebuie îndeplinite sunt mai complicate cu atât mai performant trebuie să fie calculatorul. De exemplu, pentru a rezolva probleme din cele enumerate mai sus, la un CP ar lua timp de câțiva zeci sau sute de ani, la un supercalculator o lună sau chiar mai puțin, în dependenţă de tipul problemei. În 2013 cel mai performant supercalculator era anunţat supercalculatorul chinez Tianhe-2 care are 3 120 000 nuclee cu frecvenţa de 2,2 Ghz, memorie RAM de 1 024 000 Go, sistema de operare Kylin Linux şi are viteza de lucru de aproximativ 34 Pflops, unde flops>Hz şi Peta=1015, adică este mai performant de câteva milioane de ori decât un calculator personal mediu.
Figura 1. Calculatorul Tianhe-2
4
Tema 1. Evoluţia sistemelor de calcul Sistemă de calcul (SC) este o sistemă destinată pentru păstrarea, prelucrarea, transmiterea informaţiei. În literatură se mai folosesc termeni sinonimi complex de calcul sau sistemă de prelucrare a datelor. 1.1.1 Introducere Din cele mai vechi timpuri oamenii au căutat să simplifice anumite activităţi, cum este şi aceea de numărare. Astfel a luat naştere abacul (figura 1.1), care poate fi considerat unul dintre cele mai primitive instrumente menite să automatizeze procesul de numărare.
Figura 1.1 Abacul Mult timp după inventarea abacului, matematicieni şi alţi oameni de ştiinţă au pus bazele ştiinţei calculatoarelor de astăzi, dintre care amintim pe: Blaise Pascal, Gotfried Wilhelm Leibniz, Charles Babbage, George Boole şi Claude Shannon. Unul dintre pionierii în domeniu este considerat matematicianul francez Blaise Pascal (1623-1662), care a inventat în anul 1642 prima maşină de calcul operaţională, denumită „Maşina aritmetică”. Această „maşină aritmetică” realiza operaţiile de adunare şi de scădere; interesant este faptul că scăderea se realiza utilizându-se tehnici complementare, foarte asemănătoare cu cele existente în calculatoarele din zilele noastre. Operaţiile de înmulţire şi împărţire erau implementate prin serii de adunări, respectiv scăderi repetate. Matematicianul britanic Charles Babbage (1791-1871) a 5
inventat primul dispozitiv ce poate fi considerat un computer în sensul modern al cuvântului. Acest prim dispozitiv modern calcula tabele de funcţii logaritmice şi trigonometrice prin intermediul unor oameni ce se numeau „computers”. Cea dintâi maşină concepută în 1822 de Charles Babbage se numea „Difference Engine” (figura 1.2), fiind construită parţial, iar cea de-a doua maşină a fost denumită „Analytical Engine” (1830), dar nu a fost construită. „Difference Engine” a fost construită ulterior conform desenelor originale de către o echipă la Muzeul Ştiinţei din Londra. Această maşină de calcul avea următoarele caracteristici: 4000 componente, cântărea 3 tone, aproximativ 3 metri lăţime şi 2 metri şi jumătate lungime. Acest echipament a efectuat prima secvenţă de calcule la începutul anilor 1990, obţinându-se rezultate cu o precizie de 31 de cifre zecimale.
Figura 1.2 Difference Engine O mare parte din activitatea lui Babbage a fost dedicată realizării de calculatoare analogice, dar tehnologia existentă la acea dată nu i-a permis realizarea de mecanisme de mare precizie. Sistemul de calcul analogic nu avea sistem de operare, simţind nevoia de software pentru calculatorul său. O contribuţie deosebită în domeniul pionieratului 6
calculatoarelor au avut-o şi George Boole şi Claude Shannon. În jurul anului 1850 matematicianul englez George Boole a inventat Algebra booleană (Algebra Boole), care astăzi este baza construirii unităților calculatorului. Însă, la început era necunoscută şi neutilizată până în anul 1938, când teza de masterat a lui Claude Elwood Shannon a demonstrat cum conceptele lui Boole „TRUE” şi „FALSE” pot fi utilizate pentru a reprezenta funcţionalitatea comutatoarelor din circuitele electronice. De la mijlocul secolului XX calculatoarele au evoluat continuu, specialiştii în domeniu împărţind această perioadă în cinci etape, denumite generaţii de calculatoare. Fiecare generaţie de calculatoare este caracterizată de o dezvoltare tehnologică majoră ce a schimbat fundamental modul în care calculatoarele operează, având ca rezultat echipamente mai mici, mai puternice, mai ieftine, mai eficiente şi mai fiabile. De asemenea, fiecare generaţie se întinde pe o perioadă de aproximativ zece ani, în prezent aflându-ne în generaţia a cincea de calculatoare. Criteriile care au stat la baza acestei clasificări includ: Arhitectura sistemelor; Tehnologia de construcţie a componentelor; Modalităţile de procesare a programelor; Caracteristicile sistemelor de operare; Limbajele de programare folosite. 1.1.2 Prima generaţie de calculatoare Prima generaţie în evoluţia calculatoarelor (1938-1953) a fost caracterizată de utilizarea tuburilor electronice iar calculatoarele erau destinate calculelor ştiinţifice şi comerciale. Din această perioadă pot fi evedențiate calculatoarele Harvard Mark 1, Zuse Z1 şi ENIAC (figura 1.3). Harvard Mark 1 (IBM Automatic Controlled Calculator) a fost construit între anii 1938 şi 1944, fiind format din mai multe calculatoare ce lucrau asupra unor părţi ale aceleiaşi probleme sub supravegherea unei singure unităţi de control. 7
Această maşină de calcul era construită din comutatoare, relee şi alte dispozitive mecanice, conţinând 750.000 de componente, având 16 metri lungime, 2 metri şi jumătate înălţime şi cântărind 5 tone. Numerele folosite în calcule erau de 23 de cifre, o înmulţire dintre două numere dura 4 secunde iar o împărţire dura 10 secunde.
Figura 1.3 Calculatorul ENIAC ENIAC - Electronic Numerical Integrator And Computer a fost realizat prin contribuţia inginerilor William Mauchly şi J. Presper Eckert de la Universitatea din Pennsylvania între anii 1943 şi 1946. Acest calculator avea 3 metri înălţime, ocupa un spaţiu de 30 mp şi cântarea 30 tone. În construcţia sa erau folosite 18.000 tuburi cu vacuum, având nevoie de o putere de 150 kW (suficient pentru a ilumina un mic oraş). Principala problemă cu acest tip de calculator era fiabilitatea: în fiecare zi trebuiau să fie înlocuite aproximativ 50 de tuburi cu vacuum. Prin realizarea acestui calculator, în anul 1943 Eckert şi Mauchly au iniţiat conceptul de creare a unui program stocat în calculator pentru care era folosită o memorie internă utilizată pentru a stoca atât instrucţiuni cât şi date. Succesorii lui ENIAC au fost: EDVAC - Electronic 8
Discrete Variable Automatic Computer (4000 de tuburi); EDSAC - Electronic Delay Storage Automatic Calculator (1949 - 3000 de tuburi); UNIVAC I - Universal Automatic Computer (1951 - primul computer comercial); ILLIAC I (1949) - construit la Universitatea Illinois, primul computer deţinut de o instituţie academică. 1.1.3 A doua generaţie de calculatoare Generaţia a doua (1954 - 1963) a fost caracterizată prin folosirea tranzistorului pentru realizarea circuitelor logice. Cercetarea în domeniul semiconductorilor a început în anul 1945 la faimosul centru de cercetare Bell Laboratories din SUA. Cei trei ingineri ce lucrau la acest proiect, William Shockley, Walter Brattain şi John Bardeen au creat primul tranzistor pe 23 decembrie 1947. După această realizare au luat o pauză pentru sărbătorile de Crăciun înainte de a publica evenimentul; de aceea cărţile de referinţă indică faptul că primul tranzistor a fost creat în 1948. Calculatoarele din cea de-a doua generaţie aveau în jur de 100 de instrucţiuni complexe, memorie de tip magnetic şi dispozitive periferice. Prelucrarea se făcea secvenţial prin intermediul unui sistem de operare simplu (FMS şi IBSYS pentru maşina de calcul IBM 7094), folosindu-se atât limbajul de asamblare cât şi limbaje evoluate. Limbajul de programare Fortan a apărut în anul 1956 iar limbajele Algol şi Cobol (Common Business Oriented Language - limbaj orientat spre aplicaţiile de afaceri) după anul 1960. Calculatoarele erau folosite în mare parte pentru calcule ştiinţifice, rezolvarea sistemelor de ecuaţii liniare şi neliniare, ecuaţii diferenţiale etc. În anul 1955 a devenit operaţional primul calculator cu tranzistori, denumit TRADIC (Transistor Digital Computer). Această perioadă în evoluţia calculatoarelor se caracterizează prin distincţia creată între proiectanţi, constructori, programatori şi personalul de întreţinere. Calculatoarele aveau nevoie de încăperi speciale, climatizate, pentru a se asigura parametrii de funcţionare, aceste maşini de calcul fiind întreţinute 9
şi exploatate de către operatori calificaţi. Programele erau scrise în limbajul Fortran sau în limbaj de asamblare şi erau imprimate pe cartele perforate. Programatorii duceau programul scris în camera de intrare şi îl înmânau operatorilor. După ce programul era executat, operatorul aducea rezultatele de la imprimantă în aşa numita cameră de ieşire, pentru a fi ridicate de către programator. În acest moment existau două variante: fie programul era corect şi programatorul obţinea rezultatele dorite, fie trebuia depanat programul şi reluat acest proces. Primele calculatoare din această a doua generaţie au fost construite pentru a fi utilizate în industria energiei atomice. 1.1.4 A treia generaţie de calculatoare Generaţia a treia de calculatoare (1964 – 1980) se caracterizează prin utilizarea circuitelor integrate pe scară mică (SSI - Small Scale Integration) şi medie (MSI - Medium Scale Integration). Cercetările în domeniul circuitelor integrate au debutat cu succes în cadrul firmei Texas Instruments, unde în anul 1958 inginerul Jack Kilby a reuşit să combine mai multe componente pe o singură bucată de semiconductor, realizând astfel primul circuit integrat. La numai trei ani după această realizare, în anul 1961, Fairchild (cercetător la Texas Instruments) şi Texas Instruments au realizat primele circuite integrate comerciale ce conţineau funcţii logice de bază, două porţi logice fiind implementate prin intermediul a 4 tranzistori bipolari şi 4 rezistoare. Tot Fairchild introducea în anul 1970 pentru prima oară memoria de 256 biţi static RAM (Random Access Memory). Această perioadă de dezvoltare a calculatoarelor poartă denumirea de anii „big iron”, în care calculatoarele de tip mainframe ale firmei IBM deţineau supremaţia. În anul 1970 compania japoneză Busicom de calculatoare a cerut firmei Intel un set de 12 circuite integrate pentru a le utiliza într-un nou calculator. T. Hoff, proiectant la Intel, inspirat de această cerere, a creat primul microprocesor, denumit Intel 4004. Acest procesor avea 2300 de tranzistoare şi putea 10
executa 60.000 operaţii pe secundă. Primul microprocesor de uz general, denumit 8080, a fost introdus de Intel în 1974, fiind un procesor pe 8-biţi, cu 4500 tranzistori şi putând efectua 200.000 operaţii pe secundă. Alte procesoare din această vreme au fost: Motorola 6800, MOS Technology 6502, Zilog Z80. Treptat începe deschiderea spre era calculatoarelor personale; astfel, în 1974 Ed Roberts lansează pe piaţă calculatorul Altair 8800 (figura 1.4) ce avea următoarele caracteristici: Era bazat pe microprocesorul 8080. Avea preţul de 375$. Fără tastatură, ecran, capacitate de stocare. Avea 4KB memorie, programabil prin intermediul unui panou frontal cu comutatoare.
Figura 1.4 Calculatorul Altair 8800 În anul 1975 Bill Gates şi Paul Allen fondează firma Microsoft şi implementează limbajul de programare BASIC 2.0 pe Altair 8800, care devine primul limbaj de nivel înalt disponibil pe un calculator personal. Alte exemple de calculatoare din această perioadă sunt: S. Wozniak şi S. Jobs produc Apple I în 1976 şi Apple II în 1977. Caracteristici: 16k ROM, 4k de RAM, tastatură şi display color; preţ de 1300$, în 1977 afacere de 700.000 $ iar în 1978 de 7 milioane de dolari. TRS-80 (bazat pe microprocesorul Z80) de la Radio Shack în anul 1977. Caracteristici: 4k ROM, 4k RAM, tastatură şi drive de tip casetă; preţ de 600$. 11
1.1.5 A patra generaţie de calculatoare Generaţia a patra de calculatoare (1981 - prezent) se caracterizează prin construcţia de calculatoare ce utilizează circuite integrate pe scară mare (LSI -Large Scale Integration) şi foarte mare (VLSI - Very Large Scale Integration). Folosirea microprocesorului şi a microprogramării a oferit calculatoarelor posibilitatea utilizării unui set complex de instrucţiuni şi asigură un grad sporit de flexibilitate. În această perioadă a fost scos pe piaţă primul calculator personal (PC - Personal Computer) de către firma IBM în anul 1981. Toate calculatoarele personale ce au fost construite ulterior şi au păstrat arhitectura originală IBM au fost denumite calculatoare compatibile IBM-PC. Primul IBM-PC avea următoarele caracteristici: Microprocesor pe 16-biţi 8088; Memorie ROM BASIC; Floppy-disc de 360KB capacitate; Sistem de operare DOS 1.0 Preţ de 1365 $ În continuare sunt prezentate câteva momente din evoluţia ulterioară a calculatoarelor: În 1983 calculatorul IBM-XT are hard-disc (10MB de memorie costau 3000$). În 1985 Intel introduce microprocesorul 80386 (primul membru pe 32-biţi din familia 80x86). În 1986 firma Compaq introduce primul sistem bazat pe 80386. În 1989 Intel introduce microprocesorul 80486, ce includea coprocesor matematic. În 1992 apar procesoarele Intel Pentium (cu 64-biţi pentru magistrala de memorie), AMD şi Cyrix (procesoare compatibile „clone”). În 1996 apare Intel Pentium Pro. În 1998 apare Intel Pentium II. 12
În 2000 apare Intel Pentium IV la 1.5 GHz. În 2003 este depăşită graniţa de funcţionare a procesoarelor comerciale.
3
Ghz
de
În prezent, cele mai moderne calculatoare sunt cele care au şi gradul de miniaturizare cel mai mare, aici incluzând calculatoarele portabile de tipul laptop, palmtop (denumit şi PDA - Personal Digital Assistant sau PocketPC) și tablete (figura 1.5).
Figura 1.5 Laptop, PDA, tabletă 1.1.6 A cincea generaţie de calculatoare. Calculatoarele din cea de-a cincea generaţie (mijlocul anilor 90 - viitor), sunt încă în faza de dezvoltare. Ele se bazează pe utilizarea inteligenţei artificiale, a circuitelor integrate specializate şi a procesării paralele. Există unele aplicaţii ale celei de-a cincea generaţii de calculatoare care sunt deja utilizate astăzi, cum ar fi recunoaşterea vorbirii. Utilizarea procesării paralele şi a superconductorilor face viabilă inteligenţa artificială. Procesarea moleculară şi cuantică precum şi nanotehnologiile se pare că vor schimba faţa calculatoarelor în următorii ani. Scopul principal al celei de-a cincea generaţii de calculatoare este acela de a dezvolta echipamente capabile să răspundă limbajului natural uman şi să fie capabile de învăţare şi organizare proprie. Procesarea cuantică reprezintă un termen introdus încă din anii ’70 şi se bazează pe fizica cuantică, folosindu-se anumite proprietăţi ale atomilor şi nucleelor ce le permite să lucreze împreună drept biţi cuantici (denumiţi qubits) pentru a 13
fi utilizaţi de procesor şi memorie. Prin interacţiunea dintre ei, izolaţi de mediul exterior, qubiţii pot realiza anumite calcule matematice mult mai rapid decât calculatoarele convenţionale. Qubiţii nu se bazează pe natura binară tradiţională a procesării. Spre deosebire de codificarea tradiţională a numerelor ce foloseşte doar 0 şi 1, calculatoarele cuantice codifică informaţia ca o serie de stări mecanico-cuantice precum mişcarea de rotaţie a electronilor sau orientarea polarizării ce pot reprezenta un 0 sau un 1, o combinaţie a celor două sau pot reprezenta un număr ce semnifică faptul că starea unui qubit este undeva între 0 şi 1. Este important faptul că, utilizând această idee, un calculator cuantic monoprocesor poate executa o sumedenie de operaţii în paralel. Prelucrarea cuantică nu este cea mai bună soluţie pentru activităţi de procesare de texte sau poştă electronică, dar este ideală pentru aplicaţii criptografice sau de modelare şi indexare a bazelor de date de dimensiuni foarte mari. 1.2 Evoluția tipurilor de sisteme de calcul. În primul punct sau cercetat generațiile de calculatoare și descrierea lor, însă această clasificare nu ne dă răspuns la întrebarea ce tipuri de sisteme de calcul în ce domenii se folosesc. De exemplu, pentru diferite domenii ca: lucrul în oficiu, lucrul la domiciliu, jocuri, serverele întreprinderilor mici, serverele întreprinderilor mari, prognozarea timpului, prognozarea cutremurelor, prognozarea comportării reacțiilor termo-nucleare, proiectarea pieselor sau chiar a avioanelor și automobilelor, servicii de vânzare de bilete pentru companii se au peste 100000 terminale în peste 100 de țări. Este clar, ca nu se poate folosi un singur tip de calculator pentru toată gama de servicii. De aceea, este important de a cunoaște în ce domeniu ce tip de SC se folosește și ce regimuri de lucru utilizează. 1.2.1 Sisteme de prelucrare a datelor pe loturi Primele calculatoare a anilor 50 erau mari, scumpe şi ocupau clădiri întregi. Astfel de calculatoare î-şi puteau permite numai ţările cele mai dezvoltate sau companiile cele mai bogate 14
din aceste ţări, vezi figura 1.1. Aceste calculatoare nu erau destinate pentru lucrul individual al utilizatorilor şi lucrau în mod secvențial în regim de prelucrare a datelor pe loturi. Printre primele calculatoare ce lucrau în regim de prelucrare pe loturi sau menţionat deja, Harvard Mark 1, Zuse Z1, ENIAC [Na1] și descrierea cărora a fost dată în primul punct. Sistemele de prelucrare a datelor pe loturi se construiau pe baza unui calculator puternic numit mainframe, un calculator performant, sigur şi universal, destinat prelucrării mai multor tipuri de probleme. Utilizatorii pregăteau cartele perforate ce conţineau datele şi instrucţiunile programului şi le transmiteau în centrul de calcul. Operatorii introduceau cartelele în calculator iar rezultatele le primeau în ziua următoare. Astfel, o mică greşeală măcar pe o cartelă însemna întârzierea obţinerii rezultatului încă cu o zi. Pentru utilizatori ar fi mai comod lucrul în regim de dialog, unde utilizatorul conduce cu procesul de prelucrare a datelor sale. Dar, interesele utilizatorilor, atunci, nu erau luate în vedere deoarece regimul de prelucrare a datelor pe loturi este cel mai efectiv regim de folosite a sistemei de calcul. Adică, acest regim permite într-o unitate de timp de a îndeplini cele mai multe (sau mai rapid) lucrări a utilizatorului. Deoarece, anume regimul de prelucrare a datelor pe loturi permite de a folosi cel mai eficient, cel mai scump detaliu, pe atunci, procesorul, dar în detrimentul comodităţii specialiştilor ce deservesc sistema de calcul. 1.2.2. Sisteme multiterminal Dar, odată cu ieftinirea procesoarelor, la începutul anilor 60, au apărut metode noi de organizare a procesului de prelucrare a informaţiei, ce luau în vedere comoditatea lucrului utilizatorilor simpli. Au început să se dezvolte sisteme multiterminal interactive de partajare a timpului. Fiecare utilizator lucra la un terminal, cu care lucra în regim de dialog, vezi figura 1.6. Timpul de primire a răspunsului era destul de mic, pentru ca utilizatorul să nu observe lucrul în paralel (acelaşi timp) şi a altor utilizatori. 15
Folosind terminale ieftine şi un supercalculator puternic şi scump, utilizatorii puteau folosi avantajele informatizării la un preţ redus.
Figura 1.6. Exemple de sisteme multiterminal. Cu timpul terminalele au început să apară prin toată întreprinderea, dar nu numai în centrul de calcul. Chiar dacă unele funcţii, ca introducerea şi extragerea datelor (engleză Input/Output), au devenit decentralizate, puterea de calcul a rămas centralizată (funcţie centralizată este funcţia ce este îndeplinită de un singur dispozitiv, calculator). Utilizatorul putea obţine acces la fişierele şi unităţile periferice comune şi se crea iluzia că lucra de unul singur la calculator, deoarece el putea porni programul necesar în orice moment de timp şi practic imediat obţinea rezultatul. Unii utilizatori, ce nu prea aveau cunoştinţe în tehnica de calcul, credeau că toate calculele se făceau înăuntrul monitorului. 1.2.3. Reţele informatice Astfel, sistemele multiterminal ce lucrau în regim de partajare a timpului a fost primul pas la apariţia reţelelor informatice. Dar, la moment, întreprinderea nu î-şi putea permite procurarea a două sau mai multor supercalculatoare. Însă, necesitatea de a uni câteva supercalculatoare, ce se aflau la distanţe mari, era foarte acută. Totul a început de la a da acces la careva terminale îndepărtate, aflate la câteva sute sau, chiar, mii de kilometri. Terminalul se conecta la calculator prin modem. Astfel de reţele permiteau multor utilizatori de a obţine acces la supercalculator din afara întreprinderii. Cu timpul au apărut 16
sisteme unde era realizată conexiunea calculator-calculator. Astfel, primele rețele au fost rețele globale care uneau calculatoare aflate la distanțe mari. Calculatoarele puteau face schimb de informaţie în regim automat ce este mecanismul de bază a reţelelor informatice, vezi figura 1.7.
Figura 1.7. Exemplu de reţea informatică. La început unirea calculatoarelor era un fel de artă şi se puteau uni doar dispozitivele prin cabluri speciale pentru care au fost proiectare. De exemplu, minicalculatorul PDP-11 cu supercalculatorul IBM 360. La mijlocul anilor 80 lucrurile se schimbă radical, au fost elaborate tehnologii de unire a calculatoarelor în reţele: Ethernet, Arcnet, Token Ring… Un stimul pentru apariţia lor a fost apariţia calculatoarelor personale. Anume calculatorul personal (CP sau engleză personal computerPC) a fost elementul ideal de formare a reţelelor de calculatoare. Pe de o parte CP era destul de performant pentru a folosi softul de reţea, pe de altă parte era nevoie de a uni calculatoarele pentru a putea folosi partajarea datelor în întreprindere sau a rezolva probleme complexe ce nu puteau fi rezolvate de un CP. Dacă, înainte procesul de construire a reţelelor era o artă, deoarece se puteau uni doar dispozitivele pentru care era elaborat 17
şi cu anumit tip de cablu, cu apariţia tehnologiilor de reţea, unde se folosesc dispozitive şi cabluri de un anumit standard, procesul a devenit o rutină. Pentru a construi o reţea este necesar de a procura o cartelă de reţea, cablul corespunzător şi de a instala softul (driver) necesar. În reţele informatice nodurile sistemei de calcul sunt cele mai îndepărtate, unde elementele reţelei sunt calculatoarele ce nu au blocuri de memorie comună şi nici dispozitive periferice comune. Legătura se poate face cu calculatoare din diferite colţuri a lumii prin placa de reţea sau modem. Fiecare calculator lucrează cu sistema de operare proprie, iar o sistemă de operare sau program unic, comun tuturor calculatoarelor ce ar coordona cu lucrul tuturor calculatoarelor lipseşte. Dialogul între calculatoare are loc prin transmiterea mesajelor prin placa de reţea sau modem şi linii de legătură. Cu ajutorul acestor mesaje un calculator cere acces la resursele locale a altui calculator. Astfel de resurse pot fi datele ce se păstrează pe hard disk. Partajarea resurselor calculatoarelor, transferul de date dintre calculatoare este scopul principal de creare a reţelelor informatice. Apariţia reţelelor informatice a adus noi factori pozitivi de utilizare a SC, printre care se pot menţiona: acces la resurse enorme de informaţie, spectru larg de servicii: poştă electronică, teleconferinţe, chat, folosirea în comun a fişierelor, programelor … mărirea eficacităţii folosirii sistemelor de calcul. Unirea tuturor reţelelor informatice împreună cu informaţiile ce le conţin a fost numit ciberspaţiu. La moment cea mai mare comunitate de reţele informatice este Internetul. În 2010 la Internet erau conectaţi peste 2 miliarde de oameni, dar se preconizează că în 2020 la Internet vor fi conectate deja 50 miliarde de dispozitive. Reţelele de calculatoare, deja, fac parte din sisteme de calcul decentralizate. Deoarece, factorul principal a unei sisteme de calcul decentralizate este existenţa a câtorva centre de prelucrare a datelor. La fel din sisteme de calcul decentralizate fac parte complexe de calcul multiprocesor şi multicalculator. 18
1.2.4. Complexe de calcul multiprocesor În complexe multiprocesor sunt câteva procesoare, unde fiecare procesor, relativ, independent poate prelucra lucrările, programele proprii. În această sistemă de calcul există o sistemă de operare comună pentru toate procesoarele, ce dirijează cu lucrul întregului complex ca un tot întreg, vezi figura 1.8. O metodă, simplă, de interacţiune între procesoare este folosirea memoriei operative comune.
Figura 1.8. Exemple de sisteme de calcul multiprocesor. Cel mai mare merit a calculatoarelor multiprocesor este productivitatea sa sporită (viteza de calcul) care se primeşte datorită lucrului paralel a câtorva procesoare. Deoarece schimbul de date dintre procesoare la folosirea memoriei operative comune se efectuează rapid, aceste sisteme pot îndeplini programe cu legături de date strânse. Un alt factor pozitiv, al acestor sisteme, este siguranţa lor, adică posibilitatea de a prelungi lucrul chiar la deteriorarea unor dispozitive. De exemplu, la ieşirea din funcţie a unui procesor sau a unei memorii operative productivitatea sistemei scade, dar lucrul nu se opreşte ca în cazul sistemelor monoprocesor. Dintre primele sisteme multiprocesor se pot menţiona [La1, Go1]: PILOT (3 procesoare, 1958), TRW 400 (16 procesoare, 1960), LARC (2 procesoare, 1960), Gamma 60 (până 19
la 128 procesoare, 1961), D825 (1962, până la 4 procesoare şi 16 module de memorie operativă). 1.2.5. Complexe de calcul multicalculator. Complex de calcul multicalculator, i se mai spune cluster, este o sistemă de calcul ce are în componenţa sa câteva calculatoare, unde fiecare lucrează cu sistema de operare proprie şi programe şi dispozitive ce permit funcţionarea ca un tot întreg. Adică, toate calculatoarele pot participa la rezolvarea problemelor comune, vezi figura 1.9.
Figura 1.9. Exemplu de sistemă de calcul multicalculator. În afară de ridicarea siguranţei complexul multicalculator permite ridicarea productivităţii din contul organizării prelucrării paralele a informaţiei. Spre deosebire de complexele multiprocesor posibilităţile prelucrării paralele a datelor în complexe multicalculator sunt mai reduse, din cauza legăturii strânse dintre date la calcule paralele. Primul complex multicalculator a fost SEAC+DYSEAC construit sub conducerea lui A. M. Leiner în 1954 în Regatul Unit al Marii Britanii, unde fiecare dispozitiv era ca dispozitiv de intrare, ieşire pentru celălalt. În 1955 IBM a creat un complex din două calculatoare identice, ce era folosit în sistema de apărare antiaeriană SAGE (Semi-Automatic Ground Equipment) a SUA. În 2011 cel mai puternic calculator era supercalculatorul japonez K-Computer (top500.org), construit de compania Fujitsu. 20
Care conținea 705 024 procesoare, memorie RAM de 1 410 098 Go, productivitate de 10,51 Petaflops.
21
Tema 2. Evoluţia arhitecturii sistemelor de calcul Scopul principal al evoluţiei SC este ridicarea productivităţii. Acest scop poate fi atins prin metode hardware (echipament tehnic) şi software (aplicaţii, sisteme de operare). În această temă vom cerceta metodele hardware. Ridicarea productivităţii prin această metodă se poate realiza prin două metode: 1) folosirea celui mai performant utilaj; 2) asamblarea mai ingenioasă a echipamentului tehnic. De exemplu, dacă doi producători folosesc acelaşi echipament, în majoritatea cazurilor vom obţine productivitate diferită. Deoarece, producătorii folosesc diferite metode de asamblare a SC. În această temă noi vom cerceta primele şi cele mai importante metode, ce au permis ridicarea productivităţii SC. 2.1. Combinarea proceselor de intrare/ieşire şi prelucrare a datelor. La baza majorităţii calculatoarelor monoprocesor stă conceptul maşinii de calcul a lui John von Neumann, expus în lucrarea sa prin mijlocul anilor 40 şi ulterior revizuită de multe ori. UC
EII
MO
Magistrala de control Magistrala de date
UAL Figura 2.1. Conceptul maşinii de calcul a lui John von Neumann. Printre dispozitivele de bază a calculatorului erau evidenţiate unitatea aritmetico-logică (UAL sau în engleză ALUaritmetic/logic unit), memoria operativă (MO) pentru păstrarea 22
datelor şi instrucţiunilor, unitatea de control (UC sau în engleză CU- control unit, în unele surse întâlnim termenul de unitate de comandă şi control), echipamente de intrare/ieşire a datelor (EII), vezi figura 2.1. Unde UC şi UAL sunt părţi componente a procesorului (CPU, central processing unit) Deja, la primele calculatoare era prevăzută prelucrarea paralelă a datelor în UAL, la operaţiile intrare/ieşire a datelor, la schimbul de date dintre diferite unităţi a calculatorului, la transmiterea semnalelor de comandă. Alte procese erau secvenţiale, unde datele şi instrucţiunile se prelucrau pe rând. Erau şi calculatoare la care UAL era de tip secvenţial, unde datele se prelucrau bit după bit, de-a rândul. Aceste calculatoare lucrau destul de încet şi se foloseau ca echipamente adăugătoare de calcul. Printre primele complexe unde a fost aplicat acest principiu au fost complexele IBM70 (1953) și IBM704 (1955)[Vo]. La calculatoarele din figura 2.1 operaţiile de intrare/ieşire se efectuau prin UAL, de aceia în timpul acestor operaţii se opreau toate calculele. În scopul ridicării productivității calculatoarelor, la mijlocul anilor 50, a fost realizată combinarea în timp (lucrul paralel) a operaţiilor de intrare/ieşire a datelor cu cele de calcul, prin organizarea schimbului de date cu MO a acestor operaţii, fără a apela la ajutorul UAL, vezi figura 2.2. UC
EII
Magistrala de control
MO Magistrala de date
UAL Figura 2.2. Conceptul maşinii de calcul a lui John von Neumann, revizuit. Structura dată de calculatoare lucra mai eficient, dar avea un neajuns mare, scăderea vitezei e lucru în timpul operaţiilor de 23
intrare/ieşire, din necesitatea controlului şi dirijării din partea UC. De aceia, în calea combinării proceselor de intrare/ieşire şi cel de calcul sa făcut următorul pas, în componenţa calculatorului sa inclus o unitate nouă de control a operațiilor intrare/ieşire a datelor şi instrucţiunilor (CII), vezi figura 2.3. UC
EII
CII
MO
UAL Figura 2.3. Conceptul maşinii de calcul a lui John von Neumann, revizuit. Unde CII are acces aparte la MO şi control aparte a operaţiilor de intrare/ieşire. UC păstrează numai funcţiile de bază, de coordonare a operaţiilor de intrare/ieşire, legate de începutul şi sfârşitul acestor operaţii sau situaţii nestandarde. Programa de lucru a CII se află în memoria calculatorului, de aceia în timpul lucrului nu are loc scăderea vitezei în comparaţie cu schemele precedente. Printre primele complexe, unde a fost aplicat acest principiu, a fost complexul IBM709, în 1958. Maşina de calcul poate fi echipată cu mai multe astfel de linii, care conțin mai multe unități CII, care pot lucra în paralel. Astfel, procesul de calcul şi unul sau mai multe procese de intrare/ieşire pot fi efectuate în paralel. Unități de control conțin majoritatea componentelor calculatorului: unitatea HDD, placa de rețea, unitatea optică… 2.2. Prelucrarea paralelă a datelor. 2.2.1. Conducta de instrucțiuni. Unele posibilităţi de ridicare a productivităţii sistemelor de calcul sunt în cazul combinării mai ingenioase a sistemului de 24
activităţi. De exemplu, îndeplinirea operaţiilor aritmetice poate fi combinată, în timp (lucrul paralel) cu adresarea la memorie. Aici se poate refuza de ciclul standard de prelucrare a operaţiilor, când chemarea următoarei instrucţiuni are loc numai după trimiterea rezultatului, dar de făcut alegerea instrucţiunii în acelaşi timp cu trimiterea rezultatului. În acest caz din ciclul de lucru a UAL se scade timpul care mergea la chemarea următoarei instrucţiuni. Aceasta se poate realiza prin folosirea a două linii de transfer aparte. Printre primele complexe unde a fost aplicat acest principiu a fost complexul ATLAS (1963). În afară de îmbunătăţirea vitezei de lucru a UAL se poate mări viteza de lucru prin micşorarea timpului de apel la unităţile de păstrare a datelor. Una din metode este adăugarea unor memorii suplimentare, de mic volum (cashe). Acest fapt permite scăderea timpului la efectuarea calculelor aritmetice. 2.2.2. Conducta a mai multor unități. Pentru îmbunătăţirea performanţei calculatorului a fost organizat lucrul asincron a diferitor componente a calculatorului. Fapt ce a permis introducerea unităţilor de control locale, ceia ce a permis prelucrarea a mai multor instrucţiuni din etape diferite a unei probleme complexe în paralel. La o astfel de funcţionare la un moment dat prima grupă de instrucţiuni se află la ultima etapă de îndeplinire şi ocupă o unitate a calculatorului, următoarea grupă se află la penultima etapă şi ocupă altă unitate … Când prima grupă de instrucţiuni a fost prelucrată, celelalte trec la următoarea etapă, iar unitatea eliberată este ocupată de următoarea grupă de instrucţiuni. Acest principiu se numeşte regim de lucru conductă (pipelines) şi va fi cercetat mai amănunţit în altă temă. O astfel de organizare este îndreptată spre încărcarea a mai multor dispozitive a calculatorului, însă din cauza numărului diferit de etape, segmente liniare a problemei care nu permit lucrul paralel dispozitivele calculatorului lucrează cu întreruperi. 25
2.2.3. Prelucrarea paralelă a datelor. În afară de conductă, unde se folosesc diferite tipuri de dispozitive, se pot folosi conducte cu mai multe dispozitive de același tip. Unele probleme importante, în particular ce operează cu masive multidimensionale, din fizică şi matematică cer viteze mari de lucru de la procesor. O cale de rezolvare a acestei probleme este prelucrarea lor de mai multe sisteme de calcul (SC), unite împreună prin dispozitive de legătură şi transfer date. Însă poate fi, economic, mai rentabil de a folosi lucrul paralel a câtorva dispozitive de calcul (procesoare sau chiar UAL) a unei şi aceleaşi SC. În astfel de caz trebuie să avem memorie principală pentru păstrarea datelor şi instrucţiunilor comune unei probleme complexe. Din această memorie fiecare unitate de calcul îşi ea, aparte, date şi instrucţiuni din careva etapă de rezolvare a problemei. Iar, lucrul paralel a mai multor astfel de unităţi ridică considerabil viteza de lucru. Acest principiu este larg folosit chiar şi în calculatoarele monoprocesor. În aceste SC procesorul are mai multe unităţi UAL, careva îndeplinesc operaţii în virgulă fixă, alte unităţi lucrează cu numere întregi, alta îndeplineşte operaţii de un tip anumit (de exemplu înmulţirea şi împărţirea a două numere reale). Mai larg, acest principiu este folosit la procesoarele moderne, ce au 2, 4 sau mai multe nuclee. Şi mai larg, acest principiu este folosit la sisteme mai performante cu mai multe procesoare. 2.3. Partajarea MO. În scopul ridicării vitezei de lucru a UAL, dispozitive periferice … la adresare către memoria operativă au fost realizate adresările paralele către memorie. Pentru aceasta memoria principală este partajată în mai multe părţi, cu adresare aparte către ele. Numărul părţilor este de obicei un numărul doi la o putere. Fie că memoria e împărţită în m=2n secţii,vezi figura 2.4, atunci celulele cu adresele 0, 1, … n-1 sunt primele secţii a celor n celule, celulele cu adresele n, n+1, … 2n-1 secţiile doi … 26
La o astfel de organizare a memoriei timpul prelucrării scade în cel mai bun caz de n ori, spre deosebire dacă memoria ar fi de tip secvenţial. În afară de partajarea memoriei pe segmente, pentru ca să fie posibilă adresarea paralelă la ea trebuie realizate intrările multiple la memorie. Numai în acest caz mai multe unităţi a calculatorului pot apela la memorie în acelaşi timp, astfel se evită conflictele de accesare a memoriei. Fizic, memoria este formată pe baza de registre. Adresa
celula 1
0 1 2
… n
8, 16, … biţi
Figura 2.4. Structura memoriei, exemplu [Ta2 pag.74]. Printre primele complexe unde a fost aplicat acest principiu a fost complexul IBM STRETCH, 1961. Metodele examinate de organizare a proceselor de calcul în paralel la sistemele monoprocesor sunt și mai larg folosite în sistemele de calcul multiprocesor, multicalculator.
27
Tema 3. Structura sistemelor de calcul Sistemele de calcul existente cunosc un număr mare de variante arhitecturale. Principiul de bază al proiectării calculatoarelor clasice a fost ordonarea secvenţială a operaţiilor elementare. Acesta se rezumă prin două aspecte majore: execuţia unui ansamblu de funcţii de către un procesor unic şi descrierea prelucrărilor în conformitate cu algoritmii secvenţiali (modelul lui Von Neumann). Putem afirma că, un sistem de calcul reprezintă o colecţie de resurse hardware (unitatea centrală de prelucrare - UCP, memoria, dispozitivele periferice de intrare/ieşire) şi software (sistem de operare, programe utilitare) care interacţionează între ele în vederea satisfacerii cerinţelor utilizatorilor. Ţinând cont de acest model, componenta hardware a unui PC va arăta ca în figura 3.1. Memoria internă CPU
RAM
CMOS
ROM
cache
Blocul de alimentare Magistrala de sistemă
Controler discuri
Controler ODD
Controler tastieră
Adaptor monitor
Disc Disc fix flexibil (HDD) (FDD) Memoria () externă ()
Unitatea optică
Tastiera
Monitor
Controler porturi
Şoricel
Imprimantă
Figura 3.1. Componentele hardware ale unui PC. Calculatoarele personale moderne îşi au rădăcinile în SUA începând cu anul 1940, deşi pe piaţă au apărut în 1981. Dintre oamenii de ştiinţă ce şi-au adus contribuţia în acest domeniu, trebuie amintit John von Neumann (1903-1957), matematician 28
născut în Ungaria. El a fost primul care a proiectat un calculator cu memorie de lucru (memoria RAM de astăzi). Modelul unui calculator personal al lui Von Neumann include: UCP, intrarea, ieşirea, memoria de lucru şi memoria permanentă. Dintre elementele care au determinat ca PC-urile să se impună pe piaţa sistemelor de calcul enumerăm: • au reprezentat un început pentru standardizare, având o arhitectură deschisă; • fiind bine documentate au oferit posibilităţi de extindere; • au fost ieftine, simple şi robuste. Primele calculatoare personale, realizate de către firma IBM, aveau la bază microprocesorul Intel 8088 iar ca sistem de operare MS-DOS de la Microsoft. Numele original de calculator personal sau PC (Personal Computer) provine deci de la IBM iar toate calculatoarele construite după aceea, având aceeaşi arhitectură de bază, poartă denumirea de calculator compatibil IBM-PC, tocmai datorită faptului că păstrează arhitectura funcţională de bază a primului calculator personal scos pe piaţă de către firma IBM. PC-urile existente astăzi sunt la fel de puternice ca minicalculatoarele şi calculatoarele mainframe de acum câţiva ani. 3.1. Procesorul Componenta cea mai importantă a unui sistem de calcul, în particular a unui calculator personal, este procesorul (figura 3.2) sau unitatea centrală de prelucrare (UCP, engleză CPU-central processing unit). Denumirea de unitate centrală de prelucrare provine din următoarele consideraţii: procesor, deoarece prelucrează datele; central, deoarece este centrul de prelucrare a datelor din sistem; unitate, deoarece, de cele mai multe ori, este un circuit integrat care conţine până la câteva sute de milioane de tranzistoare – un microprocesor.
29
Figura 3.2. Exemple de microprocesoare. După cum am văzut procesorul este cea mai complexă unitate a calculatorului ce poate conține câteva sute de milioane de tranzistoare, pentru a ne da seama de complexitatea sa vezi figura 3.3.
Figura 3.3. Structura procesorului Cele mai importante unități a procesorului sunt (figura 3.4): unitatea aritmetico-logică (UAL, engleză ALUaritmetic/logic unit); unitatea de control (engleză CU- control unit); un ansamblu de registre. Unitatea aritmetico-logică execută operaţii aritmetice şi funcţii logice. Unitatea centrală de procesare coordonează activitatea din calculator în vederea prelucrării datelor. Pentru aceasta, ea primeşte şi transmite date în mod continuu. Datele pentru prelucrare vin de la memorie şi diversele dispozitive periferice din calculator (tastatură, hard-disc etc.) iar după 30
procesare vor fi trimise către memorie sau alte unităţi. Transmisia se face prin intermediul magistralelor (figura 3.5).
Figura 3.4. Cele mai importante unități a procesorului.
Figura 3.5. Organizarea unui sistem de calcul Unitatea centrală de procesare primeşte instrucţiunile care vor fi executate. Fiecare instrucţiune reprezintă o comandă pentru prelucrarea datelor (figurile 3.6). Activitatea procesorului constă din calcule şi transportul datelor.
31
Figura 3.6. Modalitatea de operare a UCP. Ca să poată îndeplini funcţiile de administrare procesorul are nevoie de un set de instrucţiuni bine tocmite, ca să poată administra orice situaţie ce poate apărea. Când lucrăm la calculator folosim instrucţiuni de nivel înalt, instrucţiuni din sistema de operare, din diferite limbaje de programare sau instrucţiuni din manipulări a unor dispozitive a calculatorului (de exemplu, instrucţiunile mouse-lui: copy, paste şi multe alte). Aceste instrucţiuni sunt convertite de procesorul de limbaje întrun limbaj de nivel jos, limbaj înţeles numai de procesor, limbajul maşinii. Programele scrise pentru un tip de calculator nu pot rula pe alt tip de calculator, fără folosirea unor echipamente speciale de convertire. De exemplu, programele scrise pentru calculatoare de tip IBM nu pot rula pe calculatoarele companiei Apple, sau programele scrise pentru PC nu pot rula pe mainframe. În limbajul maşinii datele şi instrucţiunile au formă binară, adică sunt prezentate sub o formă de 0 şi 1. Fiecare tip de calculator: microcalculator, minicalculator, calculator (mainframe), complexe multiprocesor lucrează cu o singură versiune. Odată convertite datele şi instrucţiunile sunt păstrate în memoria principală, pentru a fi prelucrate de procesor. În conformitate cu instrucţiunile sale UC spune altor unităţi ce trebuie să facă. De exemplu: trimiterea 32
datelor la imprimantă sau spune unităţii UAL să adune două numere, conform setului de instrucţiuni, vezi figura 3.7. a) Apple b) IBM C=A+B C=A+B 10101001 10001011 00000101 00011110 00011000 00010001 01101001 00000000 00000110 10111000 00000000 00000000 00000001 11011000 Figura 3.7. Adunarea a două numere la procesoarele companiilor Apple şi IBM [Ha2]. La ora actuală, unitatea centrală de prelucrare poate utiliza una din tehnologiile: Tehnologia CISC (Complex Instruction Set Computer) care a fost adoptată încă de la primele arhitecturi de calculatoare. Procesoarele sunt capabile să interpreteze mai mult de 400 instrucţiuni şi execuţia se realizează în mai multe cicluri maşină. Numărul de cicluri maşină necesare în execuţia unei instrucţiuni variază de la o instrucţiune la alta. Tehnologia RISC (Reduced Instruction Set Computer) prin care se implementează numai instrucţiunile de bază (cele mai folosite). Fiecare instrucţiune se execută într-un singur ciclu maşină, având consecinţe pozitive asupra performanţelor. Această tehnologie permite construcţia unor maşini foarte puternice, capabile să asigure prelucrarea paralelă a mai multor aplicaţii. Tehnologia VLIW (Very Long Instruction Word) prin care procesorul utilizează instrucţiunea într-un format lung. Ideea este de a reuni mai multe instrucţiuni în una singură. Astfel procesorul poate pregăti mai multe instrucţiuni printr-o singură operaţie şi va fi mult mai eficient. În mod normal procesoarele care nu sunt de tip VLIW recepţionează o instrucţiune pe cuvânt. Un cuvânt este o 33
cantitate de date transmisă la procesor, iar procesoarele VLIW recepţionează mai multe instrucţiuni în fiecare cuvânt. Pentru reordonarea instrucţiunilor se utilizează un compilator. În acest caz unitatea centrală de prelucrare proiectată în tehnologie VLIW devine foarte complexă. Procesorul Itanium pe 64 de biţi al firmei Intel a fost proiectat în tehnologie VLIW. O altă companie care utilizează VLIW este TransMeta cu procesorul Crusoe. Alte tehnologii folosite la UCP sunt: ASIP, EDGE, EPIC, MISC, OISC, NISC, ZISC, TRIPS, Comparison. Compania Sun Microsystems a definitivat între anii 1984 şi 1987 arhitectura SPARC (Scalable Processor ARChitecture) ce se bazează pe tehnologia RISC. Începând din 1990, IBM a lansat pe piaţă sistemul RISC/6000, prin staţii de lucru şi servere, având la bază arhitectura POWER (Performance Optimization With Enhanced RISC). Acest sistem reprezintă rezultatul muncii susţinute de IBM, în vederea obţinerii unor performanţe sporite la un preţ de cost cât mai redus. În afară de UAL în calculatoare, într-o perioadă de timp, sa folosit coprocesorul matematic, care îndeplineşte numai operaţii aritmetice şi logice de un anumit tip, mărind astfel viteza de calcul a procesoarelor. Mai mult ca atât, procesorul poate avea mai multe unităţi UAL (procesor superscalar), unde unul îndeplineşte operaţii în virgulă fixă, altul lucrează cu numere întregi, altul îndeplineşte operaţii de un tip anumit (de exemplu înmulţirea şi împărţirea a două numere reale). Astăzi, pentru mărirea vitezei de lucru se folosește o altă metodă, un procesor modern are mai multe nuclee. 3.2. Registre Registre sunt locurile unde se păstrează datele temporare din interiorul procesorului. Registrul rapid acceptă, păstrează, transferă datele şi instrucţiunile dintre diferite unităţi a procesorului. În registre se păstrează informaţia ce se prelucrează la moment de procesor, memoria principală reţine datele se sunt în aşteptare de a fi prelucrate de procesor, iar pe discul fix se 34
păstrează informaţia ce va fi prelucrată şi mai târziu. Numărul şi tipul registrelor din procesor e în conformitate cu design-ul său. Mărimea sau capacitatea şi numărul lor direct afectează viteza de lucru a procesorului. În general cu cât sunt mai mari şi mulţi cu atât mai multă informaţie se păstrează, prelucrează într-o unitate de timp. Registru calculatorului poate fi de: 8, 16, 32, 64, 128 biţi. Un octet (B- bait) este egal întotdeauna cu 8 biţi. În afară de registre, în componenţa procesoarelor au început a fi folosite memorii cache (figura 3.8), care permit şi mai rapid de a transfera datele şi instrucţiunile dintre MP şi procesor.
Figura 3.8. Memoria cache la procesor [Ha1]. Pentru a îndeplini o instrucţiune UC o plasează din MP în registru și apoi o decodifică, care este o operaţie tipică şi se numeşte ciclul procesor sau tact, care este format din ciclul de instrucţiune (I-ciclu) şi ciclul execuţie (E-ciclu), adică I-ciclu + E-ciclu = ciclu procesor, vezi figura 3.9. I-ciclu este procesul de alertare a circuitelor procesorului pentru a îndeplini operaţia specificată, timpul de îndeplinire se numeşte I-timp. E-ciclu îndeplineşte instrucţiunea iar rezultatul îl plasează în registre, timpul de îndeplinire a acestei operaţii se numeşte E-timp. Procesorul are un generator impulsuri de tact care sincronizează toate operaţiile şi se numeşte ciclu (cycle) sau ciclu de sincronizare (clock cycle), iar orice instrucţiune se execută în câteva cicluri procesor (CPI, clock cycle per instruction).
35
UC I-ciclu
Ciclu procesor
UAL decodificare a
E-ciclu
MP
instrucţiunea
Rezultatele se scriu în registre
Figura 3.9. Ciclu procesor, schemă Viteza de lucru a procesoarelor CP se exprimă prin hertz (Hz), adică câte cicluri procesor se pot îndeplini în timp de o secundă. De exemplu: 1MHz= 1milion cicluri procesor pe secondă, 1GHz= 1 miliard cicluri pe secundă. Cu cât este mai mare cu atât procesorul prelucrează informaţia mai rapid. În afară de Hz pentru supercalculatoare se utilizează alţi parametri ce ne arată viteza de lucru, deoarece mai precis ne arată performanţele supercalculatoarelor. La supercalculatoare viteza de lucru la început se măsura în MIPS, acum FLOPS. MIPS (Million Instruction Per Second) – milioane de operaţii pe secundă, unde, de obicei, în calitate de operaţii se iau cele mai simple, de exemplu, adunarea a două numere întregi şi FLOPS (Floating point Operations Per Second) – operaţii în virgulă mobilă. După cum se poate observa 1MHz< 1MIPS< 1FLOPS. Folosirea mai multor parametri de evaluare a performanţei calculatoarelor rezultă din faptul că nu există un parametru unic ce ar evalua corect performanţele diferitor tipuri de SC şi pentru diferite tipuri de probleme, această problemă va fi cercetată în una din următoarele teme. 36
3.3. Memoria principală Memoria principală sau memoria operativă (RAM, Random Access Memory) are funcţia de a stoca instrucţiunile programelor şi datele asupra cărora acţionează aceste instrucţiuni. De remarcat, un program pentru a se executa trebuie să se găsească în memoria principală. Fazele execuţiei unui program sunt: se selectează o instrucţiune din memoria principală; se încarcă instrucţiunea în microprocesor, are loc decodificarea ei pentru stabilirea operaţiei care se va executa şi identificarea operanzilor; se execută instrucţiunea; se repetă aceste etape în mod secvenţial, pentru fiecare instrucţiune a programului. Memoria are la bază un ansamblu de registre de aceeaşi mărime (o matrice de registre). Succesiunea de poziţii binare ce este recunoscută şi adresată individual se numeşte locaţie de memorie sau cuvânt de memorie. Lungimea unui cuvânt de memorie este, în general, un multiplu de 8 biţi (1 byte), putând avea: 8 biţi, 16 biţi, 32 biţi, 64 biţi, în funcţie de modelul calculatorului. Fiecare locaţie de memorie este identificată prin adresa sa. Procesorul selectează o anumită locaţie din memorie prin plasarea adresei sale pe magistrala de adrese. Numărul total al locaţiilor adresabile care pot fi accesate de procesor reprezintă capacitatea memoriei sau spaţiul de adresare fizică. 3.6 Echipamentele periferice Echipamentele periferice sunt dispozitivele cuplate sau având posibilitatea de a fi cuplate la un calculator. După funcţia de bază, acestea se pot clasifica în: Echipamente de intrare - având rolul de a capta şi colecta informaţiile, în forma lor uzuală, pentru a fi prelucrate în calculator. Din această categorie amintim: tastatura, mouse-ul, 37
creionul optic, tableta digitală, scanner-ul, cititorul de coduri de bare (un scanner foarte simplu), cititorul de cartele magnetice/perforate, captatorul de sunete (microfonul), terminalul inteligent (terminalul pentru tranzacţii financiare) etc. Echipamentele de ieşire - au rolul de a genera informaţia prelucrată în calculator într-o formă direct utilizabilă. Redarea în exterior a informaţiei se poate obţine în mod vizual, prin echipamentele periferice: ecran (de tip CRT - Cathode Ray Tube sau LCD - Liquid Crystal Display, monitoare monocrom sau color; CGA - Color Graphic Adapters, EGA - Enhanced Graphics Adapters; VGA - Video Graphic Adapter; XGA, XGA/HDA; VESA etc.), imprimantă (matricială, cu jet de cerneală, termică, laser). Echipamente de memorare sau echipamente de intrare/ieşire - au rolul de a stoca o mare cantitate de informaţie, pentru un timp nedeterminat, în vederea utilizării ulterioare. Din această grupă de periferice fac parte unităţile de: discuri (HDD, SDD), benzi magnetice şi discuri optice (CD-ROM, Compact Disk-Read Only Memory; DVD-RW, Digital Video Disc rewritable ...). Echipamente de transport la distanţă au rolul de a oferi o formă adecvată informaţiei ce se emite/recepţionează prin suportul fizic (cablu electric, unde electro-magnetice, fibră optică). În această categorie sunt modemul, placa de rețea... 3.7.
Magistralele
Una dintre componentele esenţiale din structura unui sistem de calcul, alături de unitatea centrală de prelucrare, este magistrala („bus” în engleză). O magistrală sau un set de magistrale are rolul de a conecta procesorul la memoria principală şi la echipamentele periferice. Este bine ştiut că magistrala are o importanţă majoră în obţinerea unor performanţe optime, ea asigurând viteza de lucru a sistemului de calcul. O magistrală bine aleasă permite calculatorului să lucreze la parametrii maximi a procesorului. Primele PC-uri aveau numai o magistrală (figura 3.10), care 38
era comună pentru unitatea centrală de prelucrare (UCP), memoria RAM şi componentele de I/E (Intrare/Ieşire).
Figura 3.10. Magistrală unică. În anul 1987, firma Compaq a demonstrat pentru prima dată cum se poate separa magistrala de sistem de magistrala de I/E, astfel încât acestea să poată fi utilizate la parametri diferiţi. Această arhitectură multi-magistrală a devenit standard industrial. Magistralele unui sistem se pot diviza în (figura 3.11): magistrala de sistem sau magistrala locală care conectează unitatea centrală de prelucrare (UCP) cu memoria RAM; magistralele de I/E care conectează UCP cu celelalte componente.
Figura 3.11. Magistralele unui PC. Fizic, o magistrală este reprezentată printr-un ansamblu de trasee de pe placa de circuit imprimat. Aceste trasee sunt utilizate pentru transmisia datelor, adreselor de memorie sau a unor semnale de control. Din aceste considerente, în literatura de specialitate se regăsesc denumirile de magistrala de date, magistrala de adrese şi magistrala de control (figura 3.12). 39
Figura 3.12. Magistralele de date, adrese şi control. Magistrala de adrese este utilizată de procesor pentru a selecta o locaţie de memorie sau un anumit periferic. Magistrala de date este utilizată pentru transferul datelor între procesor şi unitatea de memorie sau un dispozitiv periferic. Magistrala de control oferă semnalele pentru sincronizarea fluxului de date între procesor şi unitatea de memorie sau un dispozitiv periferic. O arhitectură de magistrală reprezintă modul în care componentele unui sistem de calcul, în particular ale unui PC, sunt interconectate. Principalele caracteristici care trebuie luate în calcul la alegerea unei arhitecturi de magistrală sunt: să asigure performanţe maxime microprocesorului; să fie operaţională pe întreaga durată de viaţă a sistemului; să permită eventuala modernizare a microprocesorului; să permită includerea pe sistem a celor mai noi aplicaţii: multimedia, transfer de informaţie etc. Magistrala locală asigură comunicarea între UCP şi memoria RAM, eventual printr-o memorie de tip cache. Ea se află pe placa de bază şi este proiectată în aşa fel încât să corespundă specificaţiilor microprocesorului. Tehnologia microprocesorului determină caracteristicile magistralei de sistem. În modelul iniţial de PC, magistrala de sistem funcţiona pe 8 biţi şi putea transfera aproximativ 106 octeţi/secundă. Acum, pentru a putea face faţă unui procesor Pentium, este necesară o magistrală pe 64 biţi, cu o 40
viteză de transfer a datelor de 5*109 octeţi/secundă. În tabelul 3.1 sunt prezentate diferite microprocesoare şi magistralele lor de sistem. Tabelul 3.1. Caracteristici ale magistralei de sistem (FSB) CPU Pentium Pentium Overdrive Pentium II Pentium II Xeon Pentium III Pentium III Xeon Pentium 4 Pentium 4 HT Extreme Edition Pentium D Pentium Dual-Core Celeron Celeron Mobile Itanium Itanium 2 Xeon Core Duo Core 2 Duo Core 2 Extreme Core 2 Extreme Mobile Atom
FSB Frequency (MHz) 50 - 66 25 - 66 66 / 100 100 100 / 133 100 / 133 100 / 133 200 / 266
Bus Width 64-bit 64-bit 64-bit 64-bit 64-bit 64-bit 64-bit 64-bit
Transfer Rate (MB/sec) 400 - 528 200 - 528 528 / 800 800 800 / 1064 800 / 1064 3200 - 4256 6400 / 8512
133 / 200 200 / 266 66 - 200 133 - 200 100 / 133 100 - 166 100 - 400 133 / 166 200 - 333 266 - 400 200 / 266 100 - 166
64-bit 64-bit 64-bit 64-bit 64-bit 64-bit 64-bit 64-bit 64-bit 64-bit 64-bit 64-bit
4256 - 6400 6400 / 8512 528 - 6400 4256 - 6400 800 / 1064 3200 - 5312 3200 - 12800 4256 / 5312 6400 - 10656 8512 - 12800 6400 / 8512 3200 - 5312
Magistralele de I/E conectează UCP la toate celelalte componente ale sistemului şi reprezintă extensii ale magistralei locale. Principalele tipuri de magistrale de I/E sunt: PC AT, ISA, EISA, IBM Micro Channel, VESA Local Bus, PCI, SCSI, USB. Primul PC produs de firma IBM (proiect demarat în 1980) folosea un procesor Intel 8088. Arhitectura magistralei de sistem, cât şi cea de extensie reprezentau o continuitate a magistralei locale a procesorului. Pentru realizarea transferurilor de acces direct la memorie (DMA - Direct Memory Access), întreruperilor şi funcţiilor de ceas/numărător, erau prevăzute cipuri speciale. Arhitectura era simplă şi prezenta o mare disponibilitate 41
de extensie. Drept urmare, plăcile adaptoare proiectate pentru primul PC pot fi utilizate pe calculatoarele mai noi, dotate cu procesor Pentium şi magistrală PCI. Sistemul suporta 1 sau 2 unităţi de dischete de 160 K şi posibilitatea de a conecta încă două unităţi de dischete externe. Magistrala lucra pe 8 biţi. O dată cu crearea de către Microsoft a interfeţei grafice Windows, este necesară o suprafaţă mai mare a ecranului precum şi o rezoluţie mai bună. Adaptoarele VGA ataşate magistralei ISA erau depăşite. Soluţia a constat în conectarea adaptorului video şi a memoriei asociate pe magistrala locală a sistemului. VESA a încercat să standardizeze monitoarele PC (diagonala ecranului, rata de împrospătare a imaginilor sau timpul de afişare pentru o imagine) magistrala şi conectorii prin care se ataşează echipamentele la magistrala locală a procesorului. Standardul VESA a ales ca etalon magistrala locală a microprocesorului Intel 80486. Magistrala VESA (Video Electronics Standard Association) acceptă echipamente pe 32 şi 64 biţi, putând lucra la frecvenţe mai mari 33 MHz în cazul formatului pe 32 biţi. Magistrala PCI (Peripheral Component Interconect) a fost dezvoltată de Intel în 1993, la concurenţă cu standardul VESA. Versiunea 1.0 acceptă 32 biţi la 33 Mhz, ceea ce permite să se atingă o rată de transfer de 132 MB/s, ca şi în cazul magistralei VESA. Magistrala PCI (figura 3.13) prezintă marele avantaj de a fi total independentă de procesor şi dispune de propria memorie buffer. Arhitectura PCI poate fi combinată cu o altă arhitectură de magistrală, cum ar fi ISA sau EISA. PCI este autoconfigurabilă, plăcile conectate fiind automat detectate şi utilizate în mod optim (Plug and Play). În specificaţia 2.0 PCI permite accesul pe 64 de biţi, pentru a se putea utiliza cu microprocesorul Intel Pentium.
42
Figura 3.13. Tipurile de magistrale. Magistrala SCSI (Small Computer System Interface) suportă diverse periferice. Viteza de transfer variază de la 4 Mocteţi/s la 80 Mocteţi/s. USB (Universal Serial Bus) este o magistrală serie apărută în 1996 şi care a devenit succesoarea magistralelor tradiţionale. Ea permite utilizarea a 127 de periferice conectate la un singur canal. În plus, permite recunoaşterea automată a perifericelor conectate pe canal şi determinarea driver-ului necesar în funcţionare. Pe o astfel de magistrală, informaţiile codificate în NRZI (Non Return to Zero Inverted) pot circula la un debit adaptat perifericului (variază de la 1.5 la 12 Mocteţi/s pe un cablu torsadat). USB utilizează principiile de funcţionare similare celor din reţelele locale. În tabelul 3.2 sunt ilustrate caracteristicile 43
diferitelor tipuri de magistrale de I/E. Tabelul 3.2. Magistrale de I/E Magistrala de I/E
An Lăţime Viteza apariţie magistrală magistrală
Debit maxim (teoretic)
1980-82
8 biţi
Sincronă: 4.77 şi 6MHz
1984
16 biţi
Asincronă: 8 MHz
8 MBps
1987
32 biţi
Asincronă: 10 MHz
40 MBps
EISA, magistrală inteligentă pentru servere.
1988
32 biţi
Asincronă: 8 MHz
32 MBps
VL, magistrală de mare viteză, utilizată în 486s
1993
32 biţi
Sincronă cu UCP: 33, 40, 50 MHz
100-160 MBps
PCI, magistrală inteligentă de mare viteză
1993
32 biţi
Asincronă: 33 MHz
132 MBps
USB, magistrală inteligentă, simplă şi modernă
1997
Serială
1.2 MBps
FireWire (IEEE1394), magistrală inteligentă de mare viteză pentru video, memorare etc.
1999
Serială
80 MBps
PC şi XT ISA (AT), magistrală simplă MCA, magistrală inteligentă realizată de IBM
4-6 MBps
Lăţimea magistralei (bandwith) este volumul de date transportate într-o unitate de timp. Deci, depinde de numărul de conductoare paralele utilizate pentru transferul informaţiei ce se măsoară în biţi, numărul cărora formează dimensiunea cuvântului magistralei. La fel ca la registre dimensiunea cuvântului magistralei poate fi de: 8, 16, 32, 64, 128 biţi. Magistrala de 128 de biți se 44
folosește la calculatoare performante. Magistrala de date la microprocesorul Intel 8088 este de 8 biţi lăţime, iar magistrala de date la microprocesoarele din familia Pentium este de 64 biţi. Aceasta înseamnă că magistrala la microprocesoarele Pentium transportă de 8 ori mai multă informaţie într-o unitate de timp, adică lucrează de 8 ori mai repede. La procesorul Mobile Pentium 4 de frecvenţa 3,2 GHz şi magistrala procesorului (FSB- Front-Side Bus) de 64 biţi şi 533 MGz viteza de transfer a datelor (bandwith) este de 533 x 8 Octeţi (64 biţi) = 4266 Mo/s [M1]. La sfârşit de temă să dăm caracteristicile a câtorva microprocesoare Intel:
Mfg. Process (nm)
Transistors (milion)
Cache
Addressable Memory
3.20 GHz
Nov08
45
731
8 MB
64 GB
Desktop PC
Intel® Core™ i7940
2.93 GHz
Nov08
45
731
8 MB
64 GB
Desktop PC
Intel® Core™ Duo Processor T27002300
2.331.66 GHz
Aug06
65
152
2MB L2
2 667 Mobile PC GB MHz
Intel® Core™ Duo Processor T2300E
1.66 GHz
May06
65
152
2MB L2
2 667 Mobile PC GB MHz
Intel® Core™ Solo Processor T1350
1.86 GHz
Jul-06
65
152
2MB L2
2 533 Mobile PC GB MHz
Intel® Core™ Solo 1.83/1.6 AugProcessor 6 GHz 06 T1400/T1300
65
152
2MB L2
2 667 Mobile PC GB MHz
Intel® Core™ Solo ULV Processor U1300
Mar06
65
152
2MB L2
2 533 Mini/Thin GB MHz and Light
Intel® Core™ Solo 1.33/1.2 MarULV Processor 0 GHz 06 U1500/U1400
65
151
2MB L2
2 533 Mobile PC GB MHz
1.06 GHz
45
Typical Use
Intro Date(s)
Intel® Core™ i7965
Bus Speed
Processor
Clock Speed(s)
Tabelul 3.3. Сaracteristicile a unor procesoare Intel
3.8. Arhitecturi paralele Viitorul arhitecturilor de calculator este în strânsă concordanţă cu noţiunea de paralelism. Acest principiu arhitectural permite tratarea în paralel a informaţiei ce presupune execuţia evenimentelor concurente. Aceste evenimente se pot regăsi la nivel de program, de procedură, instrucţiune sau în interiorul unei instrucţiuni. Ca o definiţie foarte simplă, un calculator paralel reprezintă o colecţie de procesoare interconectate între ele pentru a permite coordonarea activităţilor acestora şi schimbul de date. Calculatoarele paralele necesită algoritmi paraleli, adică algoritmi ce pot fi implementaţi pe calculatoare paralele. La nivelul cel mai înalt, tratarea paralelă permite execuţia simultană a mai multor programe independente. Se utilizează în sistemele mari de tip mainframe şi se tratează la nivelul sistemului de operare (multiprograme, timp partajat, multiprelucrare). Tratarea paralelă a instrucţiunilor independente utilizează tehnica de vectorizare. Se tratează la nivel de sistem (vectorial), de limbaj de programare (Fortran vectorial) sau la nivel de algoritm. Tehnica denumită pipeline permite introducerea paralelismului la nivel de instrucţiune. În acest sens, o instrucţiune este împărţită în mai multe etape succesive şi se execută în acelaşi timp etape diferite ale mai multor instrucţiuni. Condiţiile paralelismului trebuie să ţină seama de restricţiile inerente în tratarea informaţiei (algoritmi) şi de posibilităţile oferite de componentele fizice (multiplicarea structurilor de execuţie). Creşterea numărului de procesoare în acelaşi calculator, modifică structura de bază a acestuia. Problemele de acces la memorie devin foarte importante, pentru a putea transmite datele în ritmul de tratare al procesoarelor. De asemenea, problemele de comunicare între procesoare sunt esenţiale. Deoarece procesul principal într-un calculator constă din execuţia unei succesiuni de instrucţiuni asupra unui ansamblu de date, arhitecturile paralele pot fi clasificate după fluxurile de 46
instrucţiuni şi date (după Flynn) astfel: SISD - Single Instruction (Stream), Single Data (Stream); SIMD - Single Instruction (Stream), Multiple Data (Stream); MISD - Multiple Instruction (Stream), Single Data (Stream); MIMD - Multiple Instruction (Stream), Multiple Data (Stream). O descriere mai detailată a arhitecturilor paralele se va da în tema 7.
47
Tema 4. Caracteristicile sistemelor de calcul. 4.1. Introducere 4.2. Calcularea productivităţii. 4.3. Timpul de răspuns, timpul de execuţie, timpul de aşteptare. 4.4. Caracteristicile siguranţei. 4.5. Preţul sistemelor de calcul. 4.1. Introducere Primele calculatoare electronice au apărut aproximativ jumătate de secol în urmă. De atunci tehnica de calcul şi industria informaticii în ansamblu a devenit un suport semnificativ al progresului tehnico-ştiinţific, pătrunzând în toate ramurile de activitate a societăţii, începând de la efectuarea calculelor complexe, până la asistarea conducerii proceselor de producţie, învăţământ, ecologie ş.a.m.d. Aceasta se explică prin faptul că calculatorul poate prelucra toate tipurile de informaţie: numerică, textuală, tabelară, grafică, sonoră, video mult mai eficient. La proiectarea sistemelor de prelucrare a datelor se ţine cont de faptul ca sistema să corespundă destinaţiei. Nivelul de corespundere a sistemei se numeşte eficacitatea (calitatea) sistemei. Pentru sisteme complicate ca sisteme de prelucrare a datelor (SPD) eficacitatea nu se poate măsura numai printr-o singură mărime. Totalitatea variabilelor ce exprimă eficacitatea se numesc caracteristicile sistemei. Caracteristicile de bază a SPD sunt: productivitatea, timpul de răspuns, siguranţa, preţul. În afară de cele de bază se mai folosesc: mărimea, greutatea, energia consumată, diapazonul de temperatură la care poate lucra SPD, timpul necesar pentru reparare. Din punct de vedere al problemelor ce se prelucrează, eficacitatea se determină cu ajutorul a unor obiecte matematice, care se numesc parametrii sistemei. În calitate de parametri se pot lua: numărul, viteza de lucru a dispozitivelor, volumul memoriei, volumul de lucru ce îl prelucrează… În dependenţă de domeniul în care se foloseşte, sunt necesare calculatoare şi programe specifice domeniului dat, care 48
cel mai bine prelucrează informaţiile respective. În afară de domeniul în care se utilizează, o mare importanţă are productivitatea şi rapiditatea prelucrării informaţiei. Rapiditatea se caracterizează prin numărul de instrucţiuni de un anumit tip efectuate într-o unitate de timp, de exemplu într-o secundă. Productivitatea este volumul de lucru (de exemplu numărul de instrucţiuni, programe standard) efectuat de calculator într-o unitate de timp. Calcularea productivităţii şi rapidităţii prezintă o problemă complexă din punct de vedere atât ştiinţific, cât şi ingineresc. Ea şi până astăzi foloseşte diverse abordări şi metode, încă nu este acceptată o metodă unică, universală. Se consideră că cu cât calculatorul e mai performant cu atât e mai mare productivitatea şi cu atât în mai multe domenii acesta poate fi folosit. Practica arată că în dependenţă de tipul problemelor, tipul calculatoarelor obţinem date contradictorii. Problema de bază este, ce şi cum de măsurat. De regulă se cercetează asemenea caracteristici generale ale sistemului de calcul ca: timpul de răspuns (response time); timpul de execuţie (ezecution time); timpul trecut (pased time); timpul de lucru a procesului la un program – timpul procesorului (CPU time), care nu include timpul de intrare-ieşire a datelor; ciclul (cycle) sau ciclul de sincronizare (clock cycle); CPI (clock cycles per instinction) – în câte cicluri de procesor se execută o instrucţiune. În ce priveşte unitatea de măsură a productivităţii, de la început, se folosea MIPS (Million Instructions Per Second)– milioane de instrucţiuni pe secundă. În calitate de instrucţiuni aici se evidenţiază operaţiile cele mai scurte ce pot fi executate de către sistemul de calcul. Folosirea acestei unităţi are şi neajunsuri: numărul de instrucţiuni ale unui microprocesor modern poate fi de câteva sute – instrucţiunile diferă, de regulă, una de alta, uneori considerabil, în ce priveşte timpul de execuţie; valoarea exprimată în MIPS diferă la unele şi aceleaşi calculatoare pentru diferite tipuri de programe; valoarea MIPS şi performanţele calculatorului pot fi contradictorii. De exemplu, un calculator poate conţine 49
coprocesor pentru operaţii în virgulă mobilă, iar un altul poate să nu conţină asemenea coprocesor. Astăzi, unitatea de măsură a productivităţii pentru CP este MHz, iar pentru supercalculatoare FLOPS (Floating Point Operations Per Second) - instrucţiuni în virgulă mobilă pe secundă. La rezolvarea problemelor tehnico-ştiinţifice, în programe creşte brusc ponderea operaţiilor în virgulă mobilă. Pentru calculatoarele multiprocesor și multicalculator se foloseşte pe larg flops. Pentru calculatoarele personale, această caracteristică practic nu se foloseşte din cauza rezolvării problemelor de diferit tip. În scopul aprecierii mai adecvate, se folosesc mai multe produse program speciale. Acestea pot fi grupate la general în următoarele categorii: pachete de testări a firmelor producătoare pentru evaluarea calităţii propriilor produse: De exemplu, compania Intel pentru microprocesoarele sale a introdus valoarea ICOMP (Intel Comparative Microprocessor Performance); teste universale pentru calculatoare folosite pentru calcule de mare volum. De exemplu, pachetul de probleme matematice Linpack, folosit şi evaluarea performanţelor supercalculatoarelor, inclusiv Top 500, în care sunt incluse cele mai performante calculatore; teste specializate pentru domenii concrete de folosire a calculatoarelor (de exemplu, pentru calculatoarele personale folosite în oficii se folosesc pachetele Winstone şi WinBench); Menţionăm că compararea rezultatelor după diferite teste sunt incompatibile. Pachetele de testare se folosesc corespunzător domeniului. Mai jos sunt descrise pe scurt unele din aceste pachete. Pachetul Linpack este un pachet de programe scrise în Fortran pentru rezolvarea problemelor algebrei liniare. Algoritmii algebrei liniare se folosesc în multe domenii. În calcule se folosesc două matrice de dimensiunea 100X100, iar în ultimii anii 1000X1000, şi se lucrează cu ele. În acest pachet se evidenţiază 50
mai multe subprograme, fiecare din care îndeplineşte o operaţie elementară cu matricele. De exemplu pachetul BLAS (Basic Linear Algebra Subprograms) conţine două subprograme SAXPY (înmulţirea vectorului cu un număr şi adunarea vectorilor) şi SDOT (produsul vectorilor). Toate operaţiile se efectuează asupra numerelor în virgulă mobilă, reprezentate cu exactitate dublă. Rezultatul se măsoară în flops. Pentru sisteme multiprocesor se folosesc versiuni ale Linpack ce operează cu algoritmi de procesare paralelă a datelor. Pachetul Winstone operează cu asemenea pachete ca Microsoft Word, Acces, Excel ş.a. Se consideră că Winstone apreciază cel mai adecvat productivitatea calculatorului personal, dar de fapt este un test ce generalizează productivitatea întregului sistem. O influenţă mare asupra rezultatului testării o are productivitatea discului. O altă metodă de calculare a productivităţii este propusă de organizaţia SPEC (www.spec.org) care propune calcularea coeficientului productivităţii SPEC ce este egal cu raportul timpului de îndeplinire a problemei la calculatorul etalon carte timpul de îndeplinire a problemei la calculatorul testat. După cercetarea mulţimii metodelor existente de calcul a productivităţii sa trecem la cercetarea mai detailată a unor metode clasice. 4.2. Calcularea productivităţii. Caracteristicile tehnice a SPD nu depind de sistema de operare sau de programele aplicative. Productivitatea tehnică se calculează prin – numărul de operaţii efectuate de calculator sau dispozitiv într-o unitate de timp. Fie V=(V1, V2, … Vn) determină productivitatea a n dispozitive şi exprimă productivitatea nominală a sistemei. Ca să fie mai uşor de exprimat productivitatea nominală se recurge la micşorarea componentelor (V1, V2, … Vn). Aceasta se poate face prin două metode: 1. dispozitive ce îndeplinesc operaţii identice şi capabile de a lucra în paralel se exprimă printr-o mărime unică, prin suma lor; 51
2. viteza de lucru a memoriei externe şi sistemelor de intrare/ieşire se consideră neimportante şi atunci productivitatea nominală a tuturor acestor dispozitive se exprimă, la fel, printr-o mărime unică, prin suma lor; Cel mai simplu, productivitatea se exprimă prin numărul de lucrări (job, task) efectuate de sistemă într-o unitate de timp. Această comparare poate fi efectuată numai pentru o clasă de lucrări (sarcini) şi nu este bună pentru SPD ce operează cu diferite tipuri de lucrări. Fie că în timpul T sistema a finisat îndeplinirea a n lucrări, atunci productivitatea sistemei este: n (4.1) T De obicei, lucrările vin în mod aleator şi timpul de prelucrare depinde de tipul şi numărul lor. Cu mărirea lui T creşte şi n, deci când T eroarea care apare la calcularea lui de asemenea tinde la 0. O altă metodă de a afla productivitatea este calcularea intervalului mediu dintre momentele de finisare a prelucrării lucrărilor. În acest caz, in timpul T se înregistrează intervalele 1, 2, … n, vezi figura 4.1, unde prima axă este începutul prelucrării lucrărilor iar axa doi ne arată momentele de timp când lucrările sunt finisate. J1
J2 J3
J4
J5
J6
J7
J8 tîn
J2
J1
J3
J4
J6 tfis
u3 u4
u1 u2
1
2
u6 3
4
Figura 4.1. Schema de îndeplinire a lucrărilor[La1].
52
Valoarea medie este
1 n i , atunci productivitatea n i 1
sistemei este:
1
(4.2) (4.1) şi (4.2) coincid dacă începutul şi sfârşitul intervalului de timp T coincide cu începutul şi sfârşitul timpului de îndeplinire a lucrărilor. Să cercetăm dependenţa a două variabile: - intensitatea fluxului de lucrări la intrare (numărul mediu de lucrări la intrare) şi - intensitatea fluxului de lucrări la ieşire (numărul mediu de lucrări la ieşire). Dependenţa lor este ,foarte clar, redată de figura 4.2.
*
* Figura 4.2. Dependenţa dintre şi
În regiunea 0* intensitatea fluxului de ieşire depinde de intensitatea fluxului de intrare , adică odată cu creșterea crește și sau altfel zis, odată cu creşterea numărului de lucrări creşte şi productivitatea. În regiunea * avem maximum *, deoarece sistema din cauza numărului limitat de resurse (număr şi proprietăţi ca viteză, volum…) nu poate prelucra lucrări noi. * este productivitatea maximă a sistemei pentru un tip de lucrări. Când 0<* resursele sistemei nu se folosesc pe deplin, când * măcar un dispozitiv este încărcat cu lucru pe deplin şi mărirea numărului de lucrări nu duce la mărirea productivităţii. Fie V1, V2, … Vn volumul de lucru îndeplinit de dispozitivele de 53
intrare/ ieşire într-o unitate de timp. De exemplu, V1 numărul de simboluri introduse iar V2 numărul de simboluri tipărite într-o unitate de timp, fie V1*, V2*, … Vn* valorile maxime. 1, 2, … n ne arată complexitatea lucrării (calculelor), atunci Vi= i , de unde rezultă:
Vi i
(4.3)
Să presupunem că toate dispozitivele pot lucra paralel, atunci productivitatea maximă este: V V V * min( 1 , 2 , ... n ) (4.4) 1 2 n * va fi şi mai precis dacă folosim valorile maxime V1*, V2*, … Vn*. 4.3. Timpul de răspuns, timpul de execuţie, timpul de aşteptare. Timpul de răspuns sau timpul de îndeplinire a lucrării este timpul dintre momentul începerii şi sfârşitul prelucrării lucrării, în figura 4.1 timpurile de răspuns a lucrărilor J1, J2, … Jn sunt notate prin u1, u2, … un. Timpul de răspuns este o mărime aleatoare şi depinde de: 1) tipul şi numărul lucrărilor aflate în sistemă, 2) tipul şi numărul lucrărilor prelucrate la moment. Unde, ambele mărimi sunt mărimi aleatorii. Cel mai des, timpul de răspuns se calculează ca timpul 1 n mediu u ui . Timpul de răspuns este suma timpului de n i 1 execuţie şi timpului de aşteptare. Timpul de execuţie depinde de complexitatea lucrărilor 1, 2, … n şi viteza de lucru (productivitatea nominală) a dispozitivelor V1, V2, … Vn: n v (4.5) i 1 Vi Timpul de aşteptare este suma intervalelor de timp în care însărcinarea a fost în aşteptarea resurselor necesare 54
(dispozitiv). Când 0 timpul de răspuns uv. SPD este cu atât mai bună cu cât este mai mic timpul mediu de răspuns. 4.4. Caracteristicile siguranţei. Lucrul SPD poate fi întrerupt din cauza ieşirii din funcţie a unor dispozitive. O caracteristică importantă este intensitatea staţionărilor (din cauza unor defecte tehnice), care este numărul mediu de staționari într-o unitate de timp. Dacă orice defect poartă caracter catastrofal, adică duce la oprirea lucrului SPD, atunci n
intensitatea staţionărilor este I I j , unde Ij este intensitatea j 1
ieşirii din funcţie a dispozitivului j. De exemplu, dacă I=10-2 oră, atunci în timp de 100 ore în mediu are loc un defect catastrofal. Timpul dintre două staţionări vecine se numeşte timpul mediu de siguranţă şi este TS=1/I, în exemplul de mai sus TS=100. Intervalele dintre două staţionări este o mărime aleatorie, care de obicei se exprimă în mod exponenţial. Probabilitatea -t/Ts apariţiei unei staţionări în timpul t este P(t<x)=1-e , în exemplul de mai sus P(t<100)0,63 şi cu probabilitatea 37% că oprirea va avea loc în mai mult de 100 ore. Timpul necesar pentru găsirea şi repararea problemei se numeşte timp de reparare TR, care de asemenea este aleator şi depinde cât de perfectă este sistema de diagnosticare. Atunci coeficientul de pregătire este: KP=TS/(TS+TR)
(4.6)
Siguranţa poate fi ridicată prin dublarea, triplarea elementelor celor mai importante, care însă duce la ridicarea preţului. 4.5. Preţul sistemelor de calcul. Preţul SPD este preţul tuturor dispozitivelor şi produselor program (din engleză hard şi soft). De obicei, dispozitivele cu proprietăţi tehnice mai ridicate: viteză, volum, siguranţă… au şi preţ mai ridicat. Preţul produselor program constă din cheltuielile 55
de elaborare şi multiplicare al programelor, cel mai mult depinde de complexitatea programului elaborat. De exemplu: în preţul calculatoarelor Apple și a SO Windows intră preţul hard al calculatorului şi preţul programelor de bază, unele sunt versiuni trial (temporare sau cu funcţional redus), la necesitate se pot procura programe adăugătoare, care sunt mai sofisticate, mai comode în lucru... În preţul calculatoarelor cu SO Unix, Linux, Free Dos, de obicei, intră preţul hard al calculatorului iar sistema de operare și programele de bază sunt gratis, iar unele programe, mai sofisticate, trebuie procurate.
56
Tema 5. Tehnici de exploatare a sistemelor de calcul. 5.1. Tehnica monoprogramării 5.2. Tehnica multiprogramarii 5.3. Tehnica SPOOLING 5.4. Exploatarea sistemelor de calcul în time-sharing 5.5. Exploatarea sistemelor de calcul în timp real 5.6. Exploatarea sistemelor în rețea de calculatoare Funcţia sistemului de operare de optimizare a utilizării resurselor sistemului de calcul este realizată în mod diferit, de către sistemul de operare, în funcţie de tehnica de exploatare a sistemului de calcul folosită. Tehnica de exploatare (regim de prelucrare a informaţiei) a unui sistem de calcul se referă la modalităţile utilizate de sistemul de operare pentru planificarea execuţiei programelor şi pentru gestionarea resurselor solicitate. Trebuie avute în vedere următoarele aspecte legate de execuţia programelor: resursele sistemului sunt folosite neuniform în timpul execuţiei unui program: în orice moment al execuţiei unui program vor exista resurse neutilizate de către acesta; caracterul secvenţial al execuţiei unui program impune o anumită ordine în utilizarea resurselor; rezultă că, la un moment dat, execuţia unui program poate fi condiţionată de existenţa şi de disponibilitatea unei resurse solicitate; diferitele componente ale sistemului de calcul, care concură la executarea unui program, au viteze de lucru diferite; asta înseamnă că activitatea unei componente hardware poate să fie temporizată de viteza de lucru a alteia, cu care colaborează în timpul execuţiei programului (de exemplu, preluarea datelor de pe un suport de memorie externă este mult mai lentă decât prelucrarea lor utilizând UAL). Rezultă că, în general, se poate obţine o utilizare mai eficientă a resurselor în condiţiile partajării resurselor între mai 57
multe programe care se execută concurent. În aceste condiţii se poate obţine o reducere a timpilor de neutilizare pentru fiecare resursă din sistem şi o micşorare a timpului total de execuţie, pentru acelaşi volum de lucrări executate. Din acest motiv, s-au dezvoltat mai multe tehnici de exploatare a sistemelor de calcul, care să asigure execuţia cât mai eficientă a programelor. Fiecare tehnică de exploatare a sistemelor de calcul se particularizează prin obiectivele pe care şi le propune, în funcţie de care sunt definite componentele sistemului de operare cu rol în gestionarea resurselor, care fac parte din componenta de comandă şi control a sistemului de operare. 5.1. Tehnica monoprogramării Monoprogramarea este o tehnică de exploatare pentru sistemele seriale. Obiectivul acestei tehnici este automatizarea lansării în execuţie a lucrărilor (programelor). Pentru aceasta, lucrările sunt organizate secvenţial, în loturi de lucrări şi lansate automat în execuţie. Lansarea în execuţie a unei lucrări se face, în cadrul lotului din care face parte, secvenţial, adică respectând condiţiile: o lucrare se lansează în execuţie numai după încheierea execuţiei lucrării care o precede; ordinea de lansare în execuţie a lucrărilor este strict ordinea în care se află lucrările în lotul de lucrări; la un moment dat, toate resursele sistemului sunt puse la dispoziţia lucrării aflate în execuţie. Putem spune, deci, că planificarea execuţiei lucrărilor se face prin intermediul lotului de lucrări. Acest mod de organizare a prelucrărilor se numeşte prelucrare batch (pe loturi sau pachete), iar sistemele de operare care utilizează această tehnică de exploatare se numesc sisteme de operare batch (BPS - Batch Processing Systems). Lansarea în execuţie a lucrărilor din lotul de lucrări se face automat, sub controlul componentei sistemului de operare numită monitor de înlănţuiri. 58
Modul de exploatare batch a sistemului de calcul a fost caracteristic perioadei până la sfârşitul anilor ’70, când suporţii de memorie externă ofereau, în general, posibilitatea organizării secvenţiale a datelor (banda magnetică reprezenta suportul principal de memorie externă). În prezent, modul de exploatare în loturi poate fi folosit atunci când anumite seturi de prelucrări se execută periodic, în aceeaşi ordine, şi când nu este necesară coordonarea interactivă a execuţiei lor. Exemplu: sub MS-DOS pot fi generate fişiere de comenzi care definesc o secvenţă de programe şi o ordine de execuţie a lor; un astfel de fişier de comenzi defineşte un lot de lucrări care poate fi executat prin lansarea în execuţie a fişierului de comenzi. Avantajul utilizării modului de prelucrare în monoprogramare este realizarea automatizării lansării în execuţie a lucrărilor. Inconvenientele sunt determinate de: timpul mare de răspuns al sistemului (toţi utilizatorii primesc rezultatul prelucrărilor numai după executarea întregului lot); eficienţa scăzută în utilizarea resurselor sistemului (toate resursele sunt afectate, pe rând, câte unei singure lucrări în execuţie). Creşterea eficienţei sistemelor batch se poate realiza prin implementarea unor metode software care să diminueze decalajul de performanţă între componentele hardware ale sistemului de calcul. De exemplu, pentru micşorarea timpului de aşteptare al UCP în cazul operaţiilor de intrare/ieşire, se pot folosi următoarele soluţii: utilizarea bufferelor de intrare/ieşire. Acestea sunt zone din memoria internă dedicate pentru schimbul de informaţii cu echipamentele de intrare/ieşire. Schimbul de date cu echipamentele I/O se realizează în doi paşi: o un pas rapid, între memoria internă şi buffer, sub controlul UCP, 59
o un pas mai lent, la viteza echipamentului I/O, între buffer şi echipamentul I/O, sub controlul unităţii de canal corespunzătoare dispozitivului I/O; acest pas nu necesită controlul UCP care, în acest timp, îşi poate continua activitatea. în sistemele moderne, viteza operaţiilor I/O se poate mări utilizând funcţii cache de citire/scriere. Memoria cache a dispozitivului periferic poate fi o memorie dedicată sau poate fi o zonă din memoria RAM. Transferul de date cu dispozitivul periferic se face prin intermediul memoriei cache, tot în doi paşi; diferenţa faţă de lucrul cu bufferele I/O constă în faptul că, în cazul utilizării memoriei cache, apare funcţia de predicţie care stabileşte care este volumul de date, din vecinătatea datelor care se transferă, care are cea mai mare probabilitate de a fi solicitat în următorul interval de timp; aceste date vor fi transferate în avans, între dispozitivul I/O şi memoria cache. Programul care controlează acest transfer şi care asigură şi funcţia de predicţie face parte din sistemul de operare. Exemplu: la MS-DOS, variantele mai mari de 5.0, este programul SMARTDRV; la Windows95 este programul VCache. 5.2. Tehnica multiprogramării Am văzut că execuţia concurentă a programelor permite o utilizare mai eficientă a resurselor sistemului de calcul. Multiprogramarea este tehnica de exploatare a sistemelor de calcul care permite existenţa simultană în memoria internă a mai multor programe care se execută concurent, în partiţii fixe de memorie, cu restricţia ca ele să nu folosească în acelaşi timp aceeaşi resursă. Obiectivul multiprogramării este de a face posibilă execuţia unui număr mai mare de programe într-un interval de timp, prin optimizarea utilizării resurselor sistemului de calcul. Organizarea execuţiei în multiprogramare a lucrărilor se face după următoarele reguli: lucrările sunt organizate în loturi; 60
fiecare lot de lucrări are afectată o partiţie fixă în memoria internă;
O partiţie de memorie trebuie să fie o zonă contiguă de memorie, adică o zonă de memorie formată numai din locaţii de memorie adiacente. O partiţie are o anumită lungime şi o adresă fixă: în cadrul fiecărui lot, lucrările sunt executate secvenţial, fiind lansate automat în execuţie; pentru fiecare program lansat în execuţie se generează un proces în partiţia corespunzătoare lotului; sub controlul sistemului de operare, UCP comută de la o partiţie la alta, pentru a realiza executarea concurentă a proceselor; comutarea se face în momentul în care UCP nu este utilizată de procesul respectiv (de exemplu, UCP aşteaptă terminarea unei operaţii I/O); comutarea între procese se face în urma unor evenimente interne proceselor care se execută (evenimente generate de procese); fiecare partiţie are asociată o prioritate de execuţie; resursele sistemului de calcul sunt alocate proceselor, conform solicitărilor acestora şi în funcţie de disponibilitatea resurselor; în cazul solicitării unei resurse care nu este disponibilă, procesul respectiv intră în aşteptare, până la eliberarea resursei; ordinea de alocare a resurselor între procesele care solicită aceeaşi resursă este determinată de prioritatea de execuţie determinată de prioritatea partiţiei (procesele cu prioritate mai mare au acces la aceeaşi resursă înaintea celor cu prioritate mai mică); sistemul de calcul dispune de un sistem de întreruperi, prin intermediul căruia se semnalează apariţia unui eveniment care poate fi cauza comutării între procese. Funcţiile pe care le asigură un sistem de operare în multiprogramare sunt: lansarea automată în execuţie a lucrărilor unui lot, prin intermediul monitorului de înlănţuiri, ca la sistemele în monoprogramare; gestionarea execuţiei concurente a proceselor încărcate în 61
cele n partiţii, prin alocarea succesivă a UCP fiecăruia; comutarea între procese are loc la momentele determinate de procese; componenta sistemului de operare care gestionează comutarea între procese a UCP este numită planificator al procesorului (CPU Scheduller); gestionarea alocării aceleiaşi resurse între mai multe procese, conform priorităţii partiţiilor; asigurarea protecţiei între lucrările încărcate în memoria internă pentru execuţie, astfel încât execuţia unui proces să nu altereze rezultatele execuţiei celorlalte procese. Se observă o creştere a complexităţii sistemului de operare, comparativ cu sistemele de operare în monoprogramare. Ca efect al utilizării multiprogramării se poate constata: o utilizare mai eficientă a resurselor sistemului, în primul rând a resurselor critice: UCP şi memoria internă creşterea volumului de lucrări executate într-un anumit interval de timp. Numărul şi dimensiunea partiţiilor din sistem depinde de capacitatea memoriei interne. Rezultă de aici principalul inconvenient al multiprogramării: numărul şi dimensiunea programelor care pot fi executate concomitent este limitat de numărul şi dimensiunea partiţiilor definite în sistem. Pentru înlăturarea acestui inconvenient se poate recurge la creşterea capacităţii memoriei interne, fizic sau logic. O metodă de mărire logică a capacităţii memoriei interne este prin utilizarea procedeului de swapping; o alta este prin utilizarea memoriei virtuale. Ambele metode sunt folosite pentru realizarea prelucrărilor concurente, în sistemele interactive. Swapping-ul este o metodă de lucru cu memoria internă, care permite gestionarea execuţiei în paralel a mai multor procese. Într-un sistem care utilizează swapping-ul, un proces în execuţie poate fi evacuat temporar în memoria externă, cu memorarea stării sale în momentul evacuării (prin intermediul indicatorilor de stare ai procesului); în locul lui este încărcat în memoria internă un alt proces care poate fi şi el executat parţial şi evacuat apoi în 62
memoria externă, în favoarea altui proces, şamd. În acest fel, în sistem se execută, în paralel, mai multe procese, alternând momentele de execuţie cu cele de evacuare, până la execuţia lor completă. Cât timp un proces este încărcat în memoria internă şi se execută, el are acces la toate resursele sistemului (ca la sistemele monotasking). Conceptul de memorie virtuală porneşte de la considerentul că, pentru un program în execuţie, un număr relativ redus de instrucţiuni succesive sunt utilizate la un moment dat, în timpul prelucrării. Întregul program poate fi încărcat în memoria externă, numită memorie virtuală, iar în memoria internă se încarcă numai secvenţe contigue de program, numite pagini (în cazul organizării paginate a memoriei virtuale) sau segmente (în cazul organizării segmentate), de dimensiuni relativ reduse. În timpul execuţiei programului au loc schimburi permanente între memoria virtuală şi memoria internă, pentru a încărca în memoria internă pagina sau segmentul dorite. Avantajele care decurg din utilizarea memoriei virtuale sunt: creşte numărul proceselor care se pot executa simultan, pentru aceeaşi capacitate a memoriei interne, determinând astfel o mai bună utilizare a resurselor sistemului de calcul; dispar restricţiile privind lungimea maximă a unui program, în funcţie de capacitatea memoriei interne; utilizând memoria virtuală, programele pot fi oricât de mari şi ele pot fi executate şi pe sisteme mici. 5.3. Tehnica SPOOLING Tehnica SPOOLING (Simultaneus Peripheral Operations On-Line) reprezintă un mod eficient de exploatare a sistemelor de calcul seriale, bazat pe principiul separării operaţiilor de intrare de operaţiile de ieşire şi de restul prelucrărilor şi pe executarea lor în paralel. Executarea lucrărilor se face în multiprogramare, cu respectarea unor reguli suplimentare: se definesc în memoria externă periferice virtuale corespunzătoare perifericelor standard I/O utilizate în lucrările 63
care se execută; în timpul execuţiei unei lucrări, dispozitivul standard I/O solicitat este înlocuit cu perifericul virtual corespunzător; ca urmare, lucrul UCP cu informaţiile de intrare/ieşire este mult mai rapid, pentru că rata de schimb a informaţiei cu un suport magnetic este mult mai bună decât în cazul dispozitivelor I/O (care depind de componente mecanice, de factorul uman, etc.); conversia de suport pentru informaţiile de intrare/ieşire între dispozitivele periferice lente şi perifericele virtuale rapide, definite în memoria externă, se poate face: o on-line, prin organizarea în sistem a două partiţii speciale, una pentru operaţiile de intrare şi a doua pentru operaţiile de ieşire; o off-line, adică în afara timpului destinat execuţiei propriuzise a lucrărilor, alegând ca variante de lucru: 1) utilizarea unui sistem de calcul mai slab, dedicat operaţiilor de conversie de suport (culegere date de la terminale, editare rapoarte la imprimantă, etc.); 2) utilizarea aceluiaşi sistem de calcul în momente de încărcare minimă (de exemplu în schimbul de noapte).
Pentru utilizarea tehnicii SPOOLING este nevoie de o memorie externă de capacitate mare, direct adresabilă, unde să fie organizate perifericele virtuale. Efectele utilizării tehnicii SPOOLING sunt: creşterea randamentului de exploatare a unui sistem serial cu 40-50%, în primul rând prin scăderea timpilor de aşteptare ai UCP, creşterea randamentului de utilizare a echipamentelor I/O; acestea sunt utilizate în reprize dar într-o repriză sunt utilizate la capacitatea maximă. Exemplu: tehnica SPOOLING se foloseşte sub MS-DOS pentru listările la imprimantă, utilizând comanda Print care poate fi executată în paralel cu alte lucrări în execuţie, conform tehnicii de exploatare în multiprogramare. 64
5.4. Exploatarea sistemelor de calcul în time-sharing Exploatarea în time-sharing (cu "partajarea timpului") porneşte de la un obiectiv asemănător cu exploatarea în multiprogramare: executarea concurentă a proceselor, cu partajarea resurselor sistemului de calcul, de această dată în cazul sistemelor interactive, multiuser. Obiectivul este reducerea timpului de răspuns al sistemului, pentru servirea cererilor cât mai multor utilizatori. Caracteristic exploatării în time-sharing este faptul că fiecare proces din sistem are alocată, în mod ciclic, o cuantă de timp, în care dispune de resursele sistemului; la consumarea cuantei respective, un alt proces primeşte controlul pentru o altă cuantă de timp, şamd. Această schemă de execuţie în paralel a proceselor permite unui mare număr de procese să fie în sistem, la un moment dat, în diverse stadii ale execuţiei lor. Evenimentul care determină comutarea între procese nu mai este determinat de proces ci este determinat de consumarea timpului de execuţie afectat procesului. Segmentul de timp alocat unui proces nu este fix şi poate să difere de la un proces la altul; el se determină după anumite criterii, cum ar fi: numărul de procese din sistem, natura lor, etc. Criteriile de împărţire a timpului între procese au în vedere: minimizarea timpului necesar comutării între procese (o cuantă prea mică de timp pentru execuţie duce la creşterea timpului necesar comutării între procese în comparaţie cu timpul de execuţie propriu-zisă a proceselor) minimizarea timpului de execuţie a fiecărui proces (o cuantă prea mare de timp de execuţie pentru un proces duce la creşterea timpului de aşteptare pentru celelalte procese din sistem). Metoda de alocare a resurselor între mai multe procese, prin împărţirea timpului de alocare în cuante şi alocarea resursei fiecărui proces câte o cuantă de timp se numeşte multiplexarea resurselor. Tehnica time-sharing este utilizată în sisteme interactive, în 65
care importanţa lucrărilor care se execută în sistem este relativ aceeaşi. În cazul sistemelor multiuser, ea face posibilă conectarea simultană la sistem a unui mare număr de utilizatori şi tratarea tuturor cererilor acestora în condiţii asemănătoare. Accesul utilizatorilor la sistem se face prin intermediul terminalelor I/O de la care pot trimite comenzi sau lansa în execuţie programe şi la care pot primi mesaje de la sistem sau pot extrage rezultatele prelucrărilor. Obiectivul principal al exploatării în time-sharing este satisfacerea tuturor cererilor utilizatorilor conectaţi la sistem şi reducerea timpului de răspuns al sistemului. Consultarea stării terminalelor de intrare-ieşire, pentru identificarea unor noi cereri utilizator se face utilizând metoda polling: sunt parcurse circular terminalele conectate la sistemul de calcul şi, prin intermediul unei instrucţiuni de test, este verificată starea fiecărui terminal; dacă este identificată apariţia unei cereri la un terminal, atunci aceasta este tratată, generându-se un proces. Consultarea stării terminalelor este făcută în parallel cu executarea proceselor. Terminalele sunt inspectate circular, în aşa fel încât starea fiecărui terminal este testată periodic. Caracteristic activităţii de polling este frecvenţa cu care se face consultarea unui terminal: o frecvenţă prea mică poate duce la întârzierea răspunsului sistemului la solicitările utilizatorilor o frecvenţă prea mare implică afectarea unui timp prea mare acestei operaţii, în detrimentul prelucrărilor propriuzise solicitate de procesele în execuţie. Funcţiile pe care le realizează un sistem în time-sharing sunt: consultarea stării terminalelor prin polling şi lansarea în execuţie a proceselor, în momentul identificării unei noi cereri la un terminal; planificarea alocării UCP la procesele în execuţie, circular, câte o cuantă de timp pentru fiecare proces; executarea fiecărui proces până la consumarea cuantei de timp sau până la completarea sa (execuţia sa completă), 66
caz în care procesul este distrus şi se activează un alt proces în execuţie; alocarea resurselor la fiecare proces prin multiplexarea resurselor; în cazul în care memoria internă devine insuficientă, sistemul poate utiliza tehnica swapping, pentru evacuarea temporară a unor procese din memoria internă sau poate folosi memoria virtuală; comutarea între procese se face la iniţiativa sistemului de operare, la consumarea cuantei de timp afectate procesului; comutarea între procese se face cu memorarea stării procesului întrerupt, pentru a fi posibilă reluarea lui; comutarea între procese poate necesita şi transferuri între memoria internă şi memoria externă, dacă procesul care se activează a fost evacuat în memoria externă; este asigurată protecţia între procesele concurente, în cazul resurselor utilizate de mai multe procese;
Necesităţi hardware pentru sistemele de calcul exploatate în time-sharing: dispozitiv de timp care să genereze întreruperi la încheierea unei cuante de timp, ca semnal pentru comutarea între procese; memorie internă de capacitate mare, pentru a scădea necesitatea folosirii memoriei externe ca extensie logică a memoriei interne, reducând necesitatea schimburilor cu memoria externă la comutarea între procese; UCP rapidă, pentru scăderea timpului de răspuns la cererile utilizator şi pentru realizarea unei comutări rapide între procese. Exemplu: de sistem în time-sharing este sistemul de operare Unix. 5.5. Exploatarea sistemelor de calcul în timp real Sistemele de operare în timp real sunt sisteme care permit să se urmărească şi să se controleze evenimente din mediul extern 67
sistemului de calcul, în momentul producerii acestora, preluând datele de intrare de la locul producerii lor şi furnizând informaţii de ieşire la locul desfăşurării evenimentelor. Avantajul utilizării unui sistem în timp real este capacitatea sa de a furniza la timp informaţii într-un mediu de date care se modifică foarte rapid. Caracteristicile sistemelor în timp real sunt următoarele: informaţiile de intrare sunt preluate în momentul şi la locul generării lor, prin intermediul unor dispozitive de intrare specializate; aceste dispozitive de intrare pot fi situate local sau la distanţă faţă de sistem de calcul care prelucrează datele, numit sistem de calcul “central”; la primirea informaţiilor de intrare, sistemul transmite mesaje de răspuns către utilizatorul care a generat informaţiile; răspunsul este trimis prin intermediul aceloraşi terminale sau al altora; timpul de răspuns al sistemului este resursa critică în sistemele în timp real; el trebuie să se încadreze sub o anumită limită, determinată în funcţie de procesul urmărit. Obiectivul principal al sistemelor în timp real este ca timpul de răspuns al sistemului să fie suficient de scurt în raport cu procesul real care produce datele furnizate sistemului de calcul. Clasificarea sistemelor în timp real, după măsura timpului de răspuns: 1. Sisteme in-line (sisteme de proces) – sunt sistemele în timp real cu ajutorul cărora se realizează urmărirea unui proces (un proces de fabricaţie, o reacţie chimică, etc.). Timpul de răspuns se măsoară în secunde. Aceste sisteme primesc datele de intrare de la echipamente specializate numite traductoare; traductoarele preiau valorile parametrilor procesului, în timpul desfăşurării lui, şi le convertesc într-un format convenabil prelucrării lor în sistemul de calcul. La primire, sistem de calcul prelucrează aceste date şi generează un răspuns; răspunsul sistemului de calcul poate 68
constitui o comandă pentru un dispozitiv integrat în proces sau se poate adresa utilizatorului uman, ca suport în luarea unei decizii. Exemplu: pot utiliza sisteme in-line sistemele de supraveghere a proceselor de producţie. 2. Sisteme tranzacţionale – sunt sistemele în timp real orientate pentru prelucrarea unui volum mare de date de aceeaşi natură (de exemplu: evidenţa vânzărilor într-un mare magazin, eliberarea biletelor cu locuri rezervate, etc.). Timpul de răspuns se măsoară în minute. Datele sunt primite de sistemul de calcul de la terminale prin intermediul unor mesaje cu format fix, numite tranzacţii. Tranzacţiile trebuie să aibă un format accesibil utilizatorului. Ca răspuns, utilizatorul poate primi informaţii de sinteză, în legătură cu datele prelucrate, lansând comenzi de interogare (cereri) tot de la terminal; şi comenzile de interogare au un format fix, predefinit. Numărul şi tipurile mesajelor şi comenzilor cu care poate lucra utilizatorul este limitat, pentru a uşura utilizarea lor. Scopul acestor sisteme este de a asigura prelucrarea unui număr mare de tranzacţii, asigurând o viteză mare de răspuns. Exemplu: sistemele tranzacţionale sunt utilizate pentru sisteme informatice bancare, pentru sisteme de urmărire operativă a producţiei, sisteme de rezervare a locurilor la societăţi de transport aerian, feroviar, etc. Sistemele în timp real sunt sisteme interactive multiuser. Ele trebuie să realizeze prelucrarea concomitentă a intrărilor primite de la un mare număr de dispozitive de intrare. Prelucrarea fiecărei intrări se face prin generarea în sistem a unui proces. Funcţiile unui sistem în timp real sunt: să gestioneze cererile de la toate dispozitivele de intrare din sistem, lansând imediat câte un proces; să asigure executarea concurentă a proceselor din sistem, urmărind reducerea timpului total de execuţie a fiecărui proces; 69
să asigure accesul concurent la resursele sistemului de calcul; să asigure protecţia între procesele din sistem.
Planificarea execuţiei proceselor în sistemele în timp real trebuie să ţină seama de obiectivul principal al acestor sisteme: minimizarea timpului de răspuns. Comutarea între procese se face la momente determinate prin intermediul sistemului de întreruperi iar ordinea de activare a proceselor este stabilită prin nivelul priorităţilor ataşate lor. Pentru a gestiona execuţia proceselor, sistemul în timp real trebuie să asigure următoarele funcţii: stabilirea priorităţilor de execuţie a proceselor, după următorul algoritm: fiecare proces primeşte o prioritate la intrarea lui în sistem; această prioritate poate fi modificată până la încheierea execuţiei procesului. De exemplu, dacă durata de execuţie a procesului depăşeşte durata maximă de execuţie stabilită de monitor, acesta micşorează prioritatea de execuţie a procesului, pentru a permite executarea cu prioritate a proceselor care se încadrează în limita de timp stabilită; în acest fel se garantează servirea tuturor cererilor primite în sistem în mod optim, ţinând cont de resursa critică: timpul de răspuns. gestionarea întreruperilor, conform următoarelor reguli: o planificatorul acţionează de câte ori se produce în sistem un “eveniment” semnalat de o întrerupere; o întreruperile pot fi generate: de un dispozitiv de intrare, pentru iniţierea unui proces, de ceasul de timp real, în cazul depăşirii duratei limită de execuţie a unui proces, de încheierea unei operaţii de I/O sau a execuţiei unui proces; o la apariţia unei întreruperi, planificatorul predă controlul altui proces, în funcţie de prioritatea procesului. 70
Optimizarea exploatării sistemelor în timp real se poate realiza prin: organizarea de buffere multiple de I/O, care să permită reducerea timpilor de aşteptare ai UCP; utilizarea programelor reentrante: este vorba despre programele care concură la executarea tranzacţiilor. Este frecvent cazul în care, de la mai multe dispozitive de intrare, sunt iniţiate concomitent cereri care trebuiesc prelucrate de acelaşi program; în acest caz, ar trebui încărcate în memoria internă atâtea copii ale programului câte execuţii ale sale au fost lansate prin cererile în curs de onorare. Este foarte convenabil, în această situaţie, să se poată utiliza un program reentrant. Un program reentrant este un program care, odată încărcat pentru execuţie în memoria internă, se poate afla, la un moment dat, în mai multe faze ale execuţiei sale, deci imaginea sa din memoria internă poate fi folosită în comun de mai multe procese care execută programul respectiv. 5.6. Exploatarea sistemelor în reţea de calculatoare Cel mai simplu mod de utilizare a unui sistem de calcul este prin furnizarea datelor de intrare la locul unde este instalat sistemul şi preluarea rezultatelor prelucrărilor din acelaşi loc. În cazul în care acest loc nu coincide cu locul unde se produc datele de intrare, sau cu locul unde sunt utilizate rezultatele prelucrărilor, atunci trebuie găsită o modalitate convenabilă de colectare a datelor şi de distribuire a rezultatelor. Un exemplu în acest sens sunt sistemele în time-sharing sau în timp real, care folosesc în acest scop echipamente cu rol de terminal de intrare/ieşire. O altă problemă o constituie tendinţa de “diviziune a muncii” în sistemele mari de prelucrare automată a datelor, în aşa fel încât fiecare componentă din sistem să aibă funcţii de prelucrare specifice şi să colaboreze cu celelalte componente, în scopul realizării unor prelucrări complexe ale datelor. Există sisteme de prelucrare automată a datelor în care sarcini specifice sunt executate pe calculatoare dedicate, de exemplu: 71
culegerea datelor se face pe un sistem de calcul la care sunt, de regulă, conectate mai multe terminale; prelucrările complexe asupra datelor se execută pe sisteme de calcul cu procesor puternic, folosind ca date de intrare datele furnizate de sistemul de culegere a datelor; imprimarea datelor se face prin intermediul unui alt sistem de calcul mai slab, dar care are conectate echipamentele periferice de ieşire necesare.
Un sistem informatic astfel organizat asigură utilizarea cu eficienţă maximă a echipamentelor şi, totodată, un timp de răspuns foarte bun, în toate etapele prelucrării informaţiilor. Şi în acest caz, principala problemă care trebuie rezolvată este realizarea transferului de date între sistemele de calcul care realizează prelucrarea lor, în toate etapele. Transferul de date trebuie să se realizeze în condiţii optime de viteză şi de siguranţă (adică datele să fie transmise corect, complet şi la timp). Folosirea sistemelor de calcul în conjuncţie cu comunicaţia de date la distanţă a dus la crearea unor sisteme de prelucrare automată a datelor de mare putere. Un sistem de prelucrare automată a datelor care are asigurată comunicarea de date la distanţă cu alte echipamente, prin cel puţin o linie de comunicaţie reprezintă un sistem de teleprelucrare a datelor. Tehnica transmiterii datelor la distanţă, prin intermediul liniilor de comunicaţie se numeşte teletransmisie. Dacă printre echipamentele unui sistem de teleprelucrare figurează cel puţin două calculatoare atunci sistemul se numeşte reţea de calculatoare. Un mediu de teleprelucrare a datelor reprezintă un ansamblu de mijloace hardware şi software care permit prelucrarea la distanţă a informaţiei. Într-un mediu de teleprelucrare a datelor sunt realizate două categorii de funcţii: funcţii comune oricărui sistem de prelucrare automată a datelor: 72
colectarea datelor stocarea datelor prelucrarea datelor difuzarea rezultatelor asigurarea protecţiei datelor funcţii specifice teletransmisiei: gestionarea transmisiei de date prin căile de comunicaţie conversii de date între formatul specific transmisiei de date şi formatul de reprezentare internă a datelor în sistemul de calcul transferul fizic al datelor controlul, detecţia şi tratarea erorilor de transmisie.
Reţelele de calculatoare au înregistrat o dezvoltare spectaculoasă în ultimii ani, datorită: creşterii necesităţii de realizare a schimburilor informaţionale la distanţă în sistemele informatice; avantajelor oferite de sistemele de prelucrare distribuită a datelor; progreselor realizate în domeniul tehnologiilor folosite în telecomunicaţii; progreselor înregistrate în crearea suportului software pentru lucrul în reţea de calculatoare, inclusiv prin dezvoltarea sistemelor de operare pentru reţele de calculatoare. Sistemele de operare în reţea controlează funcţionarea componentelor hardware şi software ale sistemului de calcul, în condiţiile specifice lucrului într-o reţea de calculatoare, precum şi accesul utilizatorilor la resursele reţelei, permiţând partajarea acestor resurse. Sistemele de operare proiectate pentru gestionarea lucrului în reţea trebuie să asigure câteva funcţii suplimentare, faţă de celelalte funcţii ale unui sistem de operare. Aceste funcţii se referă la: 73
1. Comunicarea între nodurile reţelei (nodurile reţelei sunt sistemele de calcul din reţea). Această funcţie trebuie să asigure transferul de date între sistemele de calcul din reţea, utilizând un set de reguli care reglementează comunicarea în reţea, set de reguli numit protocol de reţea; problema transferului de date este complexă şi implică: realizarea legăturii punctuale între două sisteme de calcul, un sistem transmite date şi celălalt le recepţionează; asigurarea transferului de date între două noduri, prin intermediul altor noduri; operaţii de selecţie a traseului pe care să se facă transferul de date între două sisteme de calcul din reţea (funcţii de rutare); operaţii de conversie a datelor în şi din formatul specific transmiterii datelor în reţea, codificarea sau împachetarea datelor, conform anumitor reguli, numite protocoale de comunicaţie; mecanisme de detectare şi tratare a erorilor de transmisie; autentificarea proceselor implicate în transfer, cu verificarea drepturilor de acces în reţea. 2. Partajarea resurselor unui sistem de calcul între nodurile reţelei. Se numeşte host un nod al reţelei care permite partajarea resurselor sale de către celelalte noduri din reţea. Partajarea propriilor resurse de către un nod presupune gestionarea cererilor multiple şi simultane de acces la resursele partajate, care pot să apară de la celelalte noduri din reţea. Aceasta înseamnă că sistemul host trebuie să fie un sistem multitasking şi multiuser. Exemplul 1: O “maşină” DOS este un sistem monotasking, monouser şi deci nu poate să îşi partajeze resursele într-o reţea. Din acest motiv, într-o reţea, o maşină DOS va funcţiona doar ca simplu nod (poate folosi resursele partajate de alte noduri), nu ca host. Cu toate acestea, într-o reţea Windows 3.11, implementată sub MSDOS, orice nod este host. Acest lucru este posibil pentru că Windows 3.11 aduce în sistemul de operare o componentă de 74
reţea, care constituie o dezvoltare a sistemului de operare ce include funcţiile necesare lucrului în reţea, inclusiv cea care face posibilă partajarea resurselor. Exemplul 2: Opţiunea Sharing (utilizare în comun) din meniul de context al unor obiecte Windows permite definirea modului de partajare a resursei respective în cadrul reţelei 3. Accesarea resurselor partajate din reţea se referă la capacitatea unui nod de a avea acces la resursele partajate de un alt nod din reţea. Pentru a permite accesul la o resursă partajată din reţea, se definesc, pentru această resursă, drivere virtuale, care sunt declarate pe sistemul nodului care utilizează resursa partajată. Aceste drivere se referă deci la resurse care nu există fizic în sistemul de calcul respectiv dar există fizic pe host. Definirea unei corespondenţe între unităţile fizice partiţionate, din reţea, şi driverele virtuale definite pe nodul local se numeşte operaţie de mapare. Gestionarea driverelor virtuale este realizată de o componentă de reţea specializată, instalată pe fiecare nod. Exemplul 1: Opţiunea Map Network Drive (Mapare unitate de reţea) este oferită, în sistemul de operare Windows, de aplicaţia Explorer; ea dă posibilitatea mapării unei unităţi virtuale locale la o unitate din reţea. Operaţia inversă, de anulare a mapării, se realizează cu opţiunea Disconnect Network Drive (Deconectare unitate de reţea). Exemplul 2: Sistemul de operare NetWare al firmei Novell este un sistem de operare în reţea, dezvoltat pentru o reţea locală (LAN), cu un calculator central, numit server , care îşi partajează resursele celorlalte noduri ale reţelei, numite staţii de lucru. NetWare are pe server un sistem de operare propriu, de reţea, care emulează MS-DOS (adică are înglobate funcţiile MSDOS şi, în plus, alte funcţii proprii). Pe celelalte sisteme din reţea, NetWare trebuie să găsească instalat MS-DOSul, la care adaugă o componentă proprie de reţea, 75
care asigură accesul în reţea a staţiei de lucru respective. Alte sisteme de operare care pot fi instalate pe staţiile de lucru, într-o reţea NetWare, sunt Unix sau Windows95. Componenta care realizează funcţia de partajare a resurselor proprii se încarcă numai pe server. Este posibil să fie partajate numai anumite resurse ale unui server; de exemplu, un sistem host îşi poate partaja numai imprimanta şi este numit server de imprimantă sau poate partaja suporţii de memorie externă şi se numeşte server de date, etc. Reţeaua NetWare Novell are componente distincte pentru realizarea comunicării în reţea şi pentru realizarea accesului de pe staţiile de lucru la resursele partajate de pe server. 4. Identificarea nodurilor reţelei şi stabilirea drepturilor de acces în reţea. Aceste funcţii sunt implementate pe serverul de reţea şi presupun asocierea unui sistem de parole fiecărui utilizator din reţea, pentru identificarea acestuia; în felul acesta pot fi reglementate drepturile de acces la resursele partajate de server, pentru fiecare utilizator şi pot fi definite acţiunile permise utilizatorilor din reţea. Mecanismul de identificare a utilizatorilor oferă şi posibilitatea urmăririi (înregistrării) activităţii utilizatorilor în reţea. Exemplul 1:Windows 95, Windows 98 implementează o reţea în care fiecare nod este host şi nu este definit un nod principal (server); în această reţea nu sunt asigurate servicii speciale de protecţie pentru nici un nod al reţelei. În schimb, Windows NT Server este un sistem de operare pentru un server de reţea şi are implementată funcţia de definire şi control ale drepturilor de acces.
76
Tema 6. Prelucrarea paralelă a informaţiei. Principalul factor al dezvoltării tehnicii de calcul este ridicarea productivității SC, pentru a putea fi folosită în cât mai multe domenii. Acest scop poate fi atins prin ridicarea parametrilor tehnici sau prin îmbunătățirea algoritmelor de prelucrare a informației. Punctul doi ține de îmbunătățirea sistemei de operare și programelor aplicative, unde principalul factor este folosirea prelucrării paralele a informației. În 2012 cel mai performant calculator era supercalculatorul Titan a companiei Cray, care conținea 560640 de nuclee Opteron cu frecvența 2,2 GHz. Conform testului Linpak Performance acest complex a atins productivitatea de 1,76 Pflops (1Pflop =1015 flops). Deci, anume lucrul paralel a tuturor procesoarelor permite de a atinge aceste productivități. În afară de aceasta prelucrarea paralelă a informației poare fi folosită și la calculatoarele monoprocesor cu un singur nucleu. De exemplu, cum a fost menționat în tema precedentă, doar, folosirea a tehnicii spooling permite ridicarea productivității cu 40%-50%, în dependență de tipul problemei. Diferite tipuri de SC folosesc diferite dispozitive pentru prelucrarea informației, de aceia dispozitivele ce se folosesc le vom numi nod de calcul. Pentru CP nodul de calcul este procesorul și memoria operativă, care sunt câte unu la număr. Complexele multiprocesor au de la câteva zeci până la câteva milioane noduri de calcul, care de asemenea constau din procesor și MO. Pentru rețele informatice și complexe multicalculator ca nod de calcul servește calculatorul. Metodele principale de prelucrare în paralel a informaţiei sunt: 1) combinarea în timp a diferitor etape a mai multor probleme, când există doar un nod de calcul; 2) rezolvarea simultană a mai multor probleme sau a mai multor etape a unei probleme, când există mai multe noduri de calcul; 3) prelucrarea informaţiei în regim pipeline. 77
6.1. Prima metodă este prelucrarea informaţiei în regim multiprogram, care este posibilă chiar la calculatoarele monoprocesor şi care a fost deja studiată, unde pe larg se pot folosi tehnicile time-sharig și spooling (figura 6.1).
Figura 6.1. Folosirea pe rând a procesorului de programele aplicative şi de programele SO [Ha1]. Aici, se prelucrează mai multe lucrări a sistemei de operare sau a aplicațiilor, sau lucrează în paralel mai multe unități: imprimanta, HDD, discul optic..., adică, există mai multe lucrări intrare/ieșire. Dar, deoarece există doar un singur procesor el prelucrează într-un moment de timp doar o singură lucrare. 6.2. Metoda a doua este posibilă atunci când sunt câteva noduri de calcul. În dependenţă de tipul problemei sau setului de date se pot evidenţia câteva tipuri de paralelism: 6.2.1. Paralelismul problemelor independente care constă în aceia că în sistemă vine un flux de probleme independente, adică rezolvarea unei nu depinde de rezultatul rezolvării altei probleme. În acest caz folosirea a mai multor noduri de calcul creşte productivitatea sistemei. 6.2.2. Paralelismul ramurilor independente este cel mai răspândit tip de paralelism, care constă în aceia că la rezolvarea 78
unei probleme mari se pot evidenţia părţi independente, care se numesc ramuri şi pot fi prelucrate independent şi paralel. Două ramuri pot fi independente dacă corespund următoarelor condiţii, vezi figura 6.2: lipsa legăturilor funcţionale, când datele unei ramuri dintr-un nivel nu sunt rezultatele altei ramuri; lipsa conflictelor de folosire a memoriei operative comune, adică două ramuri dintr-un nivel nu trebuie să folosească aceleaşi câmpuri de memorie operativă; independenţa de conducere, condiţiile de îndeplinire a unei ramuri nu depind de rezultatele primite de alte ramuri din dintr-un nivel; independenţa de program, ambele ramuri trebuie să fie îndeplinite de diferite blocuri a programei.
Figura 6.2. Exemplu cu două ramuri independente [Ul1]. O închipuire bună a paralelismului ramurilor independente poate fi dată cu ajutorul prezentării grafice a formei paralele pe nivele a problemei din figura 6.3. Se poate uşor de calculat că timpul de răspuns (timpul de execuţie plus timpul de așteptare) a problemei este: 14
T ti 435. i 1
79
x1
x2 10
1 x6
2 x7 y 2
50
x5
15
nivel 0
y 22
1
y 12
y11 3 20
x4
x3
5 40
4
y32 x 8 10
6 1
y
y
4 1
y
x3
y 23 y33
n. 1
6
3 1
y
7 20
4 2
50
y
y
x9
8
y18
y 27
5 1
2 4
y38 y 28 y19
30
y17 x5
10 25
y110
11 15
y111
y 11 2
12 60
y12 2
- ramura i,
10, 15 – timpul de execuţie a ramurii, xi – datele problemei
yij - rezultatul i a ramurii j.
x2
x10
y37
n. 2
9
i
n. 3
y112 x11
13 10
n. 4
14 40
y110
y110
Figura 6.3. Forma paralelă pe nivele a programei [La1]. Dacă programa se execută cu ajutorul a două procesoare atunci timpul de răspuns scade, dar este diferit în dependenţă de etapele alese. De exemplu: primul procesor îndeplineşte lucrările 1-4-5-9-10-13 în 260 ns (unităţi de timp), din care 55 staţionează deoarece nu sunt gata datele pentru ramura 13; procesorul doi îndeplineşte lucrările 2-6-3-7-8-11-12-14 în 230 ns. În acest caz rezultatul se obţine după 260 ns, timpul maxim a ambelor procesoare. După cum se vede timpul de execuţie scade aproape de două ori. Se pot găsi şi alte căi de prelucrare, ce au un timp mai bun, aceasta este uşor de realizat când se cunoaşte precis timpul de îndeplinire a fiecărei ramuri înainte de execuţie. În afară de 80
aceasta, este greu de evitat unele staţionări din cauza lipsei datelor pentru ramura următoare. Cu toate aceste mici neajunsuri, rezolvarea problemelor din: programarea liniară, lucrul cu masive mari, prelucrarea spectrală a semnalelor, problemele Fourier cu ajutorul paralelismului ramurilor independente duce la micşorarea considerabilă a timpului de execuţie. 6.2.3. Paralelismul obiectelor sau a datelor are loc atunci când după una şi aceiaşi programă (algoritm) se prelucrează mai multe fluxuri de date, care vin în sistemă în acelaşi timp. Acestea pot fi datele ce vin de la staţiile de radiolocare, de la mai mulţi senzori ce măsoară unul şi acelaşi parametru. Programele pot fi de la cele mai simple până la cele mai complicate, ce conţin câteva mii sau milioane de operaţii. Aici pot fi şi probleme matematice ca: adunarea a două masive A+B= [aik]+[bik]= [aik+bik], înmulţirea masivului cu un număr αA= α[ai]= [αai], unde operaţiile se efectuează cu masive de dimensiuni mari. Evident că aceste operaţii pot fi efectuate paralel şi independent. Exemplu 6.1. Fie că trebuie să aflăm suma a două masive din n numere. În limbajul Pascal aceasta poate fi efectuată conform secvenţei de cod: for i:=1 to n do c(i):=a(i)+b(i); writeln(c(i)); După cum se vede numerele se adună consecutiv a(1)+b(1), a(2)+b(2) … a(n)+b(n). În cazul când avem două procesoare, organizăm lucrul astfel încât primul procesor face adunările a(1)+b(1), a(3)+ b(3), …, procesorul doi face adunările a(2)+b(2), a(4)+ b(4), …. Astfel, primim un algoritm unde în paralel lucrează ambele procesoare, în acest caz viteza de lucru creşte de două ori. 6.3. Prelucrarea datelor în regim pipeline (conductă) poate fi efectuată şi de un procesor. În acest caz, careva problemă se împarte în mai multe etape, astfel încât se pot îndeplini paralel şi independent. 81
Ideea de bază este foarte simplă, să ne închipuim că suntem la o uzină de asamblare a automobilelor. O grupă de muncitori montează caroseria la un automobil, altă grupă montează motorul la automobilul doi, alta interiorul automobilului trei… Toate echipele lucrează în acelaşi timp (paralel), se poate primi că în același timp se asamblează 5-10 automobile. În cazul nostru mai multe echipe sunt mai multe dispozitive. Fie că trebuie să adunăm două numere cu punct flotant A∙2x+ B∙2y= С∙2xvy care poate fi împărţită în patru paşi (etape): compararea puterilor (CP), decalarea mantiselor (DM) care constă în mişcarea mantisei mai mici către cea mai mare, adunarea mantiselor (AM), prelucrarea (normalizarea) rezultatului (PR). Timpul de îndeplinire a fiecărei operaţii este de 60, 100, 140, 100 ns corespunzător, în total primim o operație de acest tip se execută în 400 ns. Aranjăm lucrul conform tabelului 6.1. Tabelul 6.1. Exemplu de prelucrare a datelor în regim conductă. Etapa 1 2 3 4 5 … n n+1 n+2 a b a b a b a b a b a b 1 1 2 2 3 3 4 4 5 5 n n CP a1b1 a2b2 a3b3 a4b4 an-1bn-1 anbn DM a1b1 a2b2 a3b3 an-2bn-2 an-1bn-1 anbn AM c1 c2 cn-3 cn-2 cn-1 PR
n+3
cn
Se execută prima operaţie CP cu primul set de numere, rezultatul se transmite operaţiei DM, dar în acelaşi timp se îndeplinesc două operaţii asupra două perechi de numere. După cum se vede numărul maxim de operaţii îndeplinite în acelaşi timp este egal nu numărul de etape, adică 4. Aici, timpul de îndeplinire se ia după valoarea maximă a tuturor etapelor, adică t=140 ns. Primul rezultat îl primim după 4∙140=560 ns, dar toate rezultatele următoare le primim peste fiecare 140 ns. În regim secvenţial fiecare rezultat îl primim peste 400 ns. Cu cât sunt mai multe etape şi cu cât avem mai multe date cu atât câştigul este mai mare. Fie că, pentru exemplul nostru, avem vectori din 25 numere, atunci T25= (n+m-1)t= (25+4-1)140= 3920 ns, unde n- dimensiunea masivelor, m- numărul de etape, t- timpul 82
maxim îndeplinire a etapelor. În mod obişnuit avem T0= 25∙400= 10000 ns, aproximativ 2,5 ori mai mult. În exemplul de mai sus sa cercetat conducta operaţiilor aritmetice, dar ideea de conductă poate fi aplicată şi pentru îndeplinirea tuturor instrucţiunilor din procesor, unde ciclul de îndeplinire a instrucţiunilor se poate împărţi, de exemplu, în [La1]: formarea adresei instrucţiunii (FAI), alegerea instrucţiunii din memorie (AI), descifrarea codului operaţiei (DCO), formarea adresei operatorului (FAO), alegerea operatorului din memorie şi în sfârşit operaţia aritmetico-logică (OAL) sau o formă mai simplă [Ha1]: F-citirea instrucţiunii din memorie (Fetch), D- decodarea instrucţiunii şi selectarea operanzilor (Decode), E- executarea instrucţiunii (Execute), W- salvarea rezultatului (Write). Organizăm prelucrarea instrucţiunilor conform tabelului 6.2. Tabelul 6.2. Prelucrarea instrucţiunilor în regim conductă. Etapa F D E W
1 I1
2 I2 I1
3 I3 I2 I1
4 I4 I3 I2 I1
5 I5 I4 I3 I2
6 I6 I5 I4 I3
7 I7 I6 I5 I4
…
În toate tipurile de sisteme de calcul se pot folosi şi conducta operaţiilor aritmetico-logice şi conducta de instrucţiuni, sau chiar mai multe conducte de ambele tipuri împreună. Anume după acest principiu sunt construite cele mai moderne şi performante sisteme de calcul, care permit mai rapid de a prelucra date din meteorologie, dinamica fluidelor, aerodinamică, analiza structurilor, microelectronică, fizica particulelor, chimia moleculară, matematici aplicate, simularea numerică a sistemelor, prelucrarea imaginilor şi multe alte.
83
Tema 7. Clasificarea sistemelor de calcul. Marea varietate a calculatoarelor a impus clasificarea lor după diferite criterii: cost, capacitate, complexitate, aplicaţii, metoda de prelucrare paralelă a datelor, organizarea memoriei, topologia legăturilor dintre procesoare, metoda de îndeplinire a operaţiilor aritmetice. Sistematizarea acestor sisteme a început în anii 60. În general, tipul calculatorului se determină după: tipul unităţii centrale de prelucrare (UCP) sau al microprocesorului – cele mai mari calculatoare tind să utilizeze unităţi centrale de prelucrare constituite separat, de mare viteză, cu componente complexe; cantitatea de memorie principală pe care microprocesorul o poate utiliza – un calculator echipat cu o memorie principală de mare capacitate poate memora programe mai complexe şi chiar mai multe programe diferite în acelaşi timp; capacitatea de stocare a memoriei auxiliare – sistemele de calcul tind să fie echipate cu dispozitive periferice de memorare de mare capacitate; viteza perifericelor de ieşire este o altă caracteristică – cele mai mari calculatoare sunt dotate cu dispozitive de ieşire rapide, a căror viteză se măsoară, de exemplu, în sute de mii de linii care pot fi tipărite pe minut; viteza de prelucrare exprimată în Hz, MIPS, FLOPS șamd; numărul utilizatorilor care pot avea acces la calculator în acelaşi timp – calculatoarele personale admit numai un singur utilizator, alte tipuri acceptă mai mult de doi sau trei utilizatori în acelaşi timp, iar cele mai mari calculatoare suportă de la câteva sute până la câteva milioane de utilizatori simultan; costul sistemului poate varia foarte mult. Având în vedere totalitatea criteriilor enumerate mai 84
sus, calculatoarele sunt, în general, grupate în patru categorii de bază [Na1]: microcalculatoare, minicalculatoare, calculatoare mainframe (calculatoare mari) şi supercalculatoare. Este dificil să se asocieze o definiţie fiecărei categorii, ţinând seama de progresele tehnologice şi de rapiditatea cu care se pot schimba parametrii de mai sus. Totuşi următoarele definiţii ar putea fi suficiente. Microcalculatorul, numit adesea calculator personal (PC - Personal Computer - vezi figura 7.1), reprezintă tipul de calculator care utilizează un microprocesor ca unitate centrală de prelucrare (UCP) şi care poate fi folosit numai de o singură persoană la un moment dat. Există un mare număr de variante, în ceea ce priveşte dimensiunea, de la calculatoare personale portabile (laptop) la puternice staţii de lucru (desktop workstations) care sunt utilizate pentru calcule inginereşti şi ştiinţifice. Calculatoarele personale lucrează folosind sistemul de operare Windows, Unix, MacOS sau un alt sistem de operare similar, fiind folosite pentru aplicaţii standard. Microcalculatoarele pot fi folosite cu uşurinţă de neprogramatori datorită numărului mare de pachete de programe de aplicaţii disponibile.
Figura 7.1 Calculator personal În ultimii ani PC-urile au devenit un lucru comun în instituţii, şcoli, universităţi şi locuinţe. PC-urile au schimbat modul în care se gândeşte, se învaţă şi se lucrează. Astăzi PC-ul este un ajutor de nepreţuit pentru cei care vor să-şi 85
îmbunătăţească performanţele şi calitatea muncii. Piaţa explozivă a PC-urilor a condus la creşterea numărului utilizatorilor, la accelerarea dezvoltării domeniilor de aplicaţii, de la programele de prelucrare de texte până la tehnologii care au permis oamenilor să lucreze acasă, să se joace, să înveţe sau să facă cercetări avansate. Minicalculatorul este cunoscut ca un calculator de mărime medie, ce nu este portabil. Sunt în majoritatea cazurilor calculatoare cu procesoare RISC puternice (cum ar fi Digital Alpha, PowerPC sau MIPS) sau cu procesoare Intel Pentium (şi compatibile), şi folosesc SO Unix Server sau Windows Server, cu acces la distanţă. Se folosesc pentru lucrul unui grup mic de utilizatori. El suportă până la câteva sute de utilizatori de utilizatori simultan şi are o memorie principală de capacitate mare. În mod normal minicalculatorul deserveşte o reţea de terminale simple.
Figura TEMPEST mini computer
86
Figura 7.2 Fujitsu GS 8900 mainframe computer, Japan, 1997. Calculatorul mainframe reprezintă un calculator de mari dimensiuni şi foarte puternic care este amplasat într-un cadru care poate fi controlat. Un astfel de calculator suportă prelucrări cerute de sute, chiar mii de utilizatori precum şi calcule specializate. Din această clasă fac parte complexele multiprocesor și multicalculator cu până la câteva mii de procesoare. Este solicitat de companiile care vehiculează şi prelucrează un volum mare de informaţie. Supercalculatorul posedă resurse hardware şi software deosebite. Se utilizează în industria de apărare, în lumea cercetării ştiinţifice, în câteva universităţi, în industria aeronautică şi spaţială. Din această clasă fac parte complexele multiprocesor și multicalculator (cluster) cu de la câteva de mii până la câteva milioane de procesoare. În 2011 cel mai performant supercalculator era anunţat supercalculatorul japonez K Computer, ce conţine 705024 procesoare. 87
Figura 7.2. Supercalculatorul multiprocesor K Computer. O altă clasificare, este clasificarea sistemelor de calcul propusă de M. Flynn în 1966 și care pe larg se folosește și astăzi. Clasificarea se bazează pe prelucrarea paralelă a informației și evidențiază aşa termeni ca flux de date şi flux de instrucţiuni ce sunt prelucrate de procesor. Procesul de îndeplinire a oricărei probleme poate fi privit ca influenţa a unei succesiuni (flux, set) de instrucţiuni asupra unui ansamblu de date (flux de date). Diferite metode de organizare a prelucrării paralele a informaţiei pot fi reprezentate ca metode de organizare a influenţei a unui sau câtorva fluxuri de instrucţiuni asupra unui sau câtorva fluxuri de date. Reieșind din faptul că clasificarea operează cu un flux sau câteva fluxuri toate sistemele pot fi împărţite în patru categorii: 1. SISD (Single Instruction Single Data) un singur flux de instrucţiuni şi un flux de date. 2. MISD (Multiple Instruction Single Data) o mulţime de fluxuri de instrucţiuni şi un flux de date. 88
3. SIMD (Single Instruction Multiple Data) un flux de instrucţiuni şi o mulţime de fluxuri de date. 4. MIMD (Multiple Instruction Multiple Data) o mulţime de fluxuri de instrucţiuni şi o mulţime de fluxuri de date. SISD (fluxuri unice pentru instrucţiuni şi date – figura 7.3) reprezintă structura de bază a unei maşini secvenţiale (numită maşină Von Neumann). Exemple: IBM 370, DEC VAX, SUN, IBM PC, Macintosh. Arhitecturile monoprocesor SISD au, în general, o structură de bază comună: o memorie principală, procesorul central şi un ansamblu de echipamente periferice. Multe calculatoare monoprocesor fac apel la tehnica tratării paralele, dar există limitări. Paralelismul se poate realiza: între mai multe unităţi funcționale; între UAL paralele; prin multiprogramare şi timp partajat.
Figura 7.3. Arhitectura SISD În sisteme din această clasă prelucrarea paralelă se efectuează prin combinarea în timp a diferitor etape de rezolvare a problemelor, unde în acelaşi timp lucrează dispozitive diferite: de intrare, ieşire şi prelucrare a informaţiei. Lucrul paralel a mai multor dispozitive intrare/ieşire se face cu ajutorul a mai multor linii de intrare/ieşire. Ridicarea productivităţii se poate creşte considerabil la partajarea memoriei operative (MO) în mai multe părţi independente ce pot lucra în paralel. În acest caz se micşorează timpul de acces la memoria operativă în situaţii de conflict. Situaţia de conflict este situaţia când mai multe unităţi de intrare/ieşire şi procesor au nevoie de MO. O altă metodă de 89
ridicare a productivităţii sistemelor SISD este prelucrarea informaţiei în regim pipeline (conductă), care constă în prelucrarea paralelă a diferitor etape a unei probleme. În afară de aceste metode în SISD se poate realiza conducta operaţiilor aritmetice şi logice, deoarece fluxul de date rămâne acelaşi, dar instrucţiunile se împart în mai multe microinstrucţiuni, formând astfel mai multe fluxuri de microinstrucţiuni. Din această cauză, sistemele cu conducta operaţiilor aritmetice şi logice se referă la sisteme MISD. În sistemele MISD câteva fluxuri de instrucţiuni prelucrează un flux de date. În realitate aşa o schemă nu prea se foloseşte, de aceia, în practică un flux de instrucţiuni se împarte în mai multe fluxuri de microinstrucţiuni, unde fiecare se prelucrează de UAL propriu. SIMD (flux unic de instrucţiuni, flux multiplu de date) (fig. 7.4) conţine mai multe unităţi de prelucrare ce sunt supravegheate de o singură unitate de control. Toate unităţile de tratare primesc aceeași instrucţiune (sau acelaşi program în cazul arhitecturii SPMD (Single Program, Multiple Data) transmisă prin unitatea de control, dar operează pe ansambluri de date distincte.
Figura 7.4. Arhitectura SIMD. Fiecare unitate de prelucrare Pi, execută aceeaşi instrucţiune în acelaşi moment, obţinându-se o funcţionare sincronă a procesoarelor. Memoria poate fi împărţită în mai multe module, Mj. În această situaţie, accesul unităţilor de prelucrare la 90
diferitele module de memorie se face printr-o reţea de interconexiune. Această arhitectură include şi procesoarele vectoriale şi reţelele sistolice. Exemple: CRAY-1, DAP CM1, WARP, CM-2, ILLIAC IV. Sistemele SIMD prelucrează foarte bine problemele cu paralelismul datelor şi obiectelor. În aceste sisteme după unul şi aceiaşi algoritm se prelucrează mai multe seturi de date, unde fiecare set de date se prelucrează de o unitate UAL aparte. Sistemele SIMD se împart în matriciale şi asociative. MIMD (fluxuri multiple de instrucţiuni, fluxuri multiple de date), permite realizarea unui paralelism explicit. Exemple de astfel de calculatoare sunt: transputerele, Supernode, DADO, N-cube, Ultracomputer, Butterfly, Alliant, Sequent Balance, CRAY X-MP. Sistemele MIMD sunt de două tipuri, multiprocesor figura 7.5 şi multicalculator (cluster) figura 7.6. După cum memoria centrală este comună pentru mai multe procesoare sau mai multe unităţi centrale (procesor + memorie centrală proprie) ce comunică între ele prin mesaje, se poate spune că structura este puternic cuplată. MIMD cu memorie partajată (figura 7.5) sau slab cuplată sau se mai numesc complexe multiprocesor, MIMD cu memorie distribuită (figura 6.6) care se mai numesc complexe multicalculator. În primul model, procesoarele execută sarcinile prin partajarea datelor din memoria comună, ce este divizată în module (Mi). În al doilea model, procesoarele execută sarcinile schimbând mesaje. În ambele modele fiecare procesor (Pi) posedă propria unitate de control (UCi).
91
Figura 7.5. Sistemă multiprocesor, arhitectura MIMD cu memorie partajată
Figura 7.6. Sistemă multicalculator, arhitectura MIMD cu memorie distribuită. În viitor se prevede o revenire a constructorilor la arhitecturi mai puţin complexe, având la bază procesoare care integrează o mai mare putere de calcul şi facilităţi de comunicaţie. Alternativa „distribuită” constituie varianta cea mai potrivită din punct de vedere economic. 92
O sistemă multicalculator este formată din mai multe sisteme SISD conectate între ele şi sunt mai bine adaptate pentru rezolvarea problemelor independente, iar lucrul în comun a mai multor calculatoare duce la mărirea productivităţii. Sistemele multiprocesor sunt mai universale şi pot rezolva probleme cu orice tip de paralelism, cel mai bine rezolvă probleme cu paralelismul ramurilor independente. Sistemele MIMD sunt cele mai universale, deoarece permit cel mai rapid de a executa toate tipurile de probleme. Cele mai performante SC moderne (top500.org) sunt de fapt niște sisteme hibride, unde se utilizează toate metodele posibile de ridicare a productivității. După cum se vede din figura 7.7 avem mai multe tower (rack) conectate între ele, asemenea complexelor multicalculator. Iar, fiecare tower funcționează ca un complex multiprocesor, unde se pot folosi mai multe tehnici din complexele matriciale, vectoriale, asociative, descrierea lor se va da în următoarele teme.
Figura 7.7. Structura unui cluster. Pentru a estima complexitatea problemelor rezolvate de supercalculatoare să luăm un exemplu, fie că la optimizarea procesului de dobândire a petrolului avem un număr de fântâni, prin care prin unele se extrage petrol, prin altele se injectează apă. Trebuie modelate mai multe situaţii pentru a estima cantitatea de petrol şi dacă este necesar de a adăuga fântâni noi. 93
Schema simplificată a problemei este reprezentarea regiunii modelate în cub. Dimensiunea cubului, pentru care putem primi date adevărate, este 100x100x100 puncte. În fiecare punct trebuie calculate de la 5 până la 20 funcţii: trei componente de viteză, presiune, temperatură, componenţa resurselor (apă, gaz, petrol – care sunt componente minimale, în realitate sunt mai multe, de exemplu fracţiuni de petrol). Pentru calcularea funcţiilor trebuie efectuate de la 200 până la 1000 de operaţii aritmetice neliniare. Pentru a vedea cum sistema se va comporta într-o perioadă de timp, trebuie de divizat timpul în 100 – 1000 paşi. Astfel, primim în mediu: 106 puncte în cub · 10 funcţii · 500 operaţii · 500 paşi = 2,5 · 1012 operații, sau 2500 miliarde de operaţii aritmetice pentru îndeplinirea doar a unui calcul. Dar la modificarea parametrilor modelului, modificarea datelor de intrare … situaţia se complică şi mai tare. Alte domenii de utilizare a supercalculatoarelor sunt: construcţia automobilelor, extragerea petrolului şi gazului, farmacologia, prognozarea timpului, prezicerea cutremurelor, proiectarea dispozitivelor electronice, sinteza materialelor noi, etc. Conform datelor lui Mark Miller de la Ford Motor Company pentru îndeplinirea testărilor crash, compania Ford are nevoie de la 10 până la 150 de automobile de modele noi, la preţ total de la 4 până la 60 milioane dolari. Folosirea supercalculatoarelor a permis de a micşora aceste cheltuieli cu o treime. În 1995 la proiectarea automobilului Nissan Maxima caroseria automobilului sa primit cu 10% mai trainică, deoarece la proiectarea automobilului sa folosit supercalculatorul CRAY (The Atlanta Journal, 28 mai, 1995). Pentru sistema de rezervări de bilete Amadeus, folosită de mii de agenţii de la 180 000 terminale în mai mult de 100 de ţări, 94
folosirea a două servere Hewlett-Packard T600 a câte 12 procesoare a permis de a avea acces operativ la sistemă până la un procentaj de 99,85%, la aproximativ 60 milioane cereri pe zi.
95
Tema 8. Sisteme de calcul multicalculator. Sisteme de calcul multicalculator (SCMC) sunt complexe care au, în componența sa, două sau mai multe calculatoare, fiecare din care are procesor, memorie operativă, dispozitive periferice şi fiecare calculator are sistema de operare proprie, vezi figura 8.3. În literatură se mai folosește termenul de cluster. Sistemele multicalculator au devenit o prelungire logică a ideilor puse în sisteme multiprocesor simetrice. Aici sa mers mai departe, în calitate de nod de calcul sau luat calculatoare personale (CP) produse în serie. Plusul acestor sisteme este că în calitate de nod de calcul se pot folosi diferite tipuri de calculatoare, începând cu CP şi terminând cu un supercalculator multiprocesor. Printre primele proiecte de acest tip a fost proiectul COCOA, unde sau folosit 25 de CP cu două procesoare cu costul comun de 100 000$. Această sistemă avea, aproximativ, aceiaşi productivitate ca şi sistema CRAY T3D, compusă din 48 procesoare, dar la preţ de câteva milioane de dolari. Desigur, în acest caz nu putem vorbi despre o echivalenţă deplină a acestor sisteme. În primul rând aceasta depinde de productivitatea mediului de comunicare, în al doilea rând de tipul de probleme ce pot fi eficient rezolvate de un număr mare de procesoare. Companiile Scali Computer şi Myranet propun clustere pe baza reţelelor informatice la viteze mari. Susţinătorii activi ai sistemelor cluster sunt producătorii calculatoarelor personale: SUN, HP, Silicon Graphics. Să examinăm mai detailat un exemplu de SCMC, supercalculatorul SCHIRRA a companiei IBM, figura 8.1, ce conţine 40 de calculatoare IBM 9118-575 cu 320 procesoare dual core POWER5+, în total având 640 nuclee de 1.9GHz, memorie totală 1,280GB, reţea de 10Gb Ethernet LAN/WAN şi SO AIX Unix [ht3]. Se foloseşte de compania NASA pentru următoarele aplicaţii: Cart3D, debris, Estimating the Circulation and Climate of the Ocean (ECCO), The NASA Finite Volume General 96
Circulation Model (fvGCM), INS3D, Overflow, The Parallel Ocean Program (POP), PHANTOM [ht4], vezi figura 8.2.
Figura 8.1. Cluster SCHIRRA a companiei IBM. Aplicaţia Cart3D este utilizată pentru a evalua ameninţarea pe care o au rămăşiţele desprinse la decolarea navelor spaţiale. Aplicaţia debris include programe de calcul a traiectoriilor resturilor a unui vehicul în zbor. Cu ajutorul aplicaţiei ECCO oamenii de ştiinţa vor să înţeleagă modul în care curenţii oceanici şi nivelul de gheaţă afectează clima, pentru a studia schimburile pe termen lung la modificarea climei.
a)
b)
c)
d) 97
e)
f)
g)
i)
Figura 8.2 Aplicaţiile a) Cart3D, b) debris, c) Estimating the Circulation and Climate of the Ocean (ECCO), d) The NASA Finite Volume General Circulation Model (fvGCM), e) INS3D, f) Overflow, g) The Parallel Ocean Program (POP), i) PHANTOM. Alte exemple de complexe cluster sunt: IBM-SP1/SP2, Parsytec GC, CM5 (Thinking Machine Corporation) , Cray T3D, Paragon (Intel Corp.), KSR1, nCUBE, Meiko CS-2, AVX (Alex Parallel Computers), IMS B008, clastere din seria Beowulf (Microway, VA Linux Systems, ParaStation), clastere din seria NT-cluster . Scopul unirii calculatoarelor împreună poate fi mărirea productivităţii sau mărirea siguranţei, sau chiar ambele împreună. În dependenţă de scop şi tipul legăturilor deosebim următoarele tipuri de CCMC: slab cuplate (cu legături indirecte); strâns cuplate (cu legături directe); CCMC neomogene unde un calculator este principal iar al doilea secundar (terminal). 8.1. Complexe slab cuplate. 98
În complexele cu legătură indirectă calculatoarele sunt legate numai prin memoria externă comună (MEC), unde MEC trebuie să aibă mai multe intrări, vezi figura 8.3. MOC
P
LLD
P
MO
MO
CD
CD
ACC UII
UII
UC
MOC – memoria operativă comună, P – procesor, LLD – linie de legătură direct, MO – memorie operativă, CD – canal de date, UII – unităţi intrare/ieşire, ACC – adaptor canal-canal, UC – unitate de control, MEC – memorie externă comună.
MEC
Figura 8.3. Toate tipurile de legături în CCMC. În desen se arată legăturile dintre 2 calculatoare, în cazul când avem mai multe calculatoare ele se conectează la fel, dar topologia este mai complexă. De exemplu, să luăm arhitectura clusterului Sandia (o descriere mai detailată o găsiți pe adresa http://www.cs.sandia.gov/cplant/), figurile 8.4, 8.5. După cum se vede fiecare calculator comunică direct cu altele patru, în afară de aceasta fiecare calculator trebuie să comunice cu MEC, UII, dar deoarece conectarea directă a fiecărui calculator cu unitățile necesare este imposibilă tehnic, pentru aceasta se folosesc calculatoare sau unități dedicate.
99
Figura 8.4. Clusterul Sandia.
Figura 8.5. Arhitectura clusterului Sandia După cum sa menţionat cele mai performante calculatoare sunt complexele din lista top500. Structura tipică a unui complex de acest tip, este formată din mai multe tower (rack), unde fiecare tower poate avea câteva mii de procesoare. Iar unirea a câteva sute de tower-e permite de a ridica productivitatea clusterelor până la zeci de petaflops, care sunt de câteva milioane de ori mai rapide ca un calculator personal, vezi figura 7.7 sau 11.6. În SCMC cu legături indirecte schimbul de informaţie este de tipul căsuţei poştale, adică un calculator plasează informaţia în MEC conform programelor sale şi celălalt le ia conform 100
necesităţilor. Aşa o organizare se foloseşte pentru ridicarea siguranţei SCMC, aici calculatorul de bază rezolvă toate lucrările şi întruna plasează date necesare pentru prelungirea lucrului. În cazul ieşirii din funcţie a calculatorului de bază cel de rezervă poate prelungi lucrul folosind datele din MEC. Legătura dintre calculatoare trebuie să lucreze la viteze mari şi să aibă lăţimea bandei mare, altfel, productivitatea sistemei va fi mică. La astfel de complexe deosebim următoarele moduri de organizare a lucrului: 1. Calculatorul de rezervă este deconectat şi la necesitate poate fi pornit. În acest caz până la începerea lucrului se pierde timp la pornirea calculatorului, încărcarea sistemei de operare, controlul sistemei, încărcarea datelor. 2. Calculatorul de rezervă este conectat şi poate rezolva careva lucrări sau lucrează în regim de autocontrol. În acest caz trecerea la lucru a celui de rezervă se face foarte repede şi practic fără întreruperi în primirea rezultatelor. 3. Pentru ca pe deplin de a esclude întreruperile în lucru, ambele calculatoare rezolvă unele şi aceleaşi probleme, dar rezultatele se iau numai de la cel de bază. În cazul ieşirii din funcţie a calculatorului de bază rezultatele, fără întrerupere, se iau de la cel de rezervă. În unele cazuri se adaugă o programă de control ce compară rezultatele. În cazul când avem 3 calculatoare rezultatul se ia dacă el apare la cel puţin 2 calculatoare. Siguranţa complexului creşte dar creşte esenţial şi preţul. Trecerea de la calculatorul de bază la cel de rezervă se poate face sau de operator sau de unităţi de control. 8.2. Complexe strâns cuplate. Mult mai practice sunt complexele cu legătură directă, care pot avea 3 tipuri de legături: prin memorie operativă comună (MOC), control direct sau legătură procesor-procesor prin linie de legătură direct (LLD), prin adaptor canal-canal (ACC), figura 8.3. Legătura prin MOC este mult mai rapidă decât prin MEC deoarece procesoarele au legătură directă cu MOC. Neajunsul este 101
că, în SCMC numai cu legătură MOC, la ieşirea din funcţie a MOC se întrerupe lucrul complexului, iar MOC este un dispozitiv complicat şi scump. Legătura dintre procesoare prin LLD poate fi nu numai de tip informaţional dar şi de tip comandă, adică un procesor poate conduce lucrul altui procesor. Dar aceasta duce la micşorarea productivităţii, deoarece la lucrările de calcul se adaugă şi cele de control. Legătura prin ACC elimină neajunsurile prin MOC. În afară de mărirea siguranţei, viteza de transfer a datelor prin ACC este la fel de mare ca şi prin MOC. SCMC cu legătură directă pot lucra în toate cele trei regimuri ca şi SCMC cu legătură indirectă, dar din cauza adăugării a noi tipuri de legături de viteză mare trecerea la cel de rezervă are loc mult mai rapid. La fel cu adăugarea a noi tipuri de legături de viteză mare creşte şi productivitatea complexului. În complexele reale se folosesc mai multe tipuri de legături şi împreună cu cele indirecte. 8.3. Complexe neomogene. La complexele neomogene (principal–secundar, cu terminal) legătura dintre calculatoare cel mai des se face prin ACC, diferenţa cea mai mare faţă de complexele cu legătură directă şi indirectă constă în plasarea şi funcţiile îndeplinite de fiecare calculator. De obicei, calculatorul cel mai performant se foloseşte pentru prelucrarea informaţiei, iar cel secundar pentru transferul de date dintre calculatorul de bază şi unităţile periferice, memoria externă, utilizatorii îndepărtaţi. În afară de aceasta calculatorul terminal poate sorta datele pentru prelucrarea mai rapidă la cel de bază sau poate aranja datele într-o formă mai comodă pentru utilizatori. În acest caz calculatorul de bază este eliberat de lucrări ce nu cer performanţe mari, mai mult ca atât, fiecare calculator este orientat pentru îndeplinirea sarcinilor proprii, dar lucrul în comun duce la ridicarea productivităţii la un preţ mai mic faţă de SCMC cu calculatoare omogene. 102
Unele SCMC includ nu numai un calculator secundar dar mai multe, unde fiecare are funcţiile proprii: unul îndeplineşte funcţiile de legătură a calculatorului de bază cu unităţile intrare/ieşire, altul îndeplineşte legătura cu abonaţii îndepărtaţi, al treilea este server de fişiere, etc.
103
Tema 9. Sisteme de calcul multiprocesor. Aplicaţiile ce au nevoie de un număr enorm de calcule are sens de folosit, numai, pe SC ce operativ dau rezultate. Printre aceste aplicaţii se pot enumera aplicaţiile din astfel de domenii ca: prognoze meteo, proiectarea automobilelor, cercetarea comportării oceanului mondial, climei şi multe alte care au fost, de mai multe ori, enumerate. Dintre cele mai rapide SC sunt complexele de calcul multiprocesor . Sistem de calcul multiprocesor (SCMP) este complexul ce are în componenţa sa două sau mai multe procesoare, memorie operativă comună, dispozitive periferice comune şi o sistemă de operare comună, vezi figura 9.1. În unele cazuri fiecare procesor poate avea memorie operativă şi dispozitive periferice proprii. P1
P2
MO1
P3
Pn – procesor n, MOm – memorie operativă m, SII – subsistema de intrare- ieşire.
MO2 SII
Figura 9.1. Exemplu de complex de calcul multiprocesor. În figura 9.1 avem 3 procesoare, 2 memorii operative şi un subsistem de intrare-ieşire, chiar şi pentru o aşa variantă simplă avem o schemă de conectare a unităţilor complexului destul de complicată, deoarece orice procesor trebuie să aibă acces la orice memorie şi orice dispozitiv de intrare-ieşire. În cazul când avem mai multe procesoare, memorii, șamd putem să ne închipuim cât de complicată este topologia complexului. Lucrurile se complică, şi mai tare, în cazul sistemei de operare, care trebuie să împartă resursele între procesoare în regim multiprogram, să sincronizeze şi să planifice lucrul procesoarelor astfel încât lucrul lor să fie optim: fără staţionări, fără conflicte. 104
Cu toate greutăţile ce apar la construirea CCMP, ele au următoarele părţi pozitive: siguranţă mare, din posibilitatea de a rezerva resursele şi a reconfigura sistema; productivitate mare, deoarece se poate folosi pe larg prelucrarea paralelă a informaţiei; eficacitate economică sporită, deoarece mai pe deplin se folosesc resursele sistemei, deci creşte coeficientul de folosire a unităţilor complexului. Printre primele CCMP se mai pot menţiona: PILOT (3 procesoare, 1958), TRW-400 (16 procesoare, 1960), LARC (2 procesoare, 1960), Gamma60 (până la 128 procesoare, 1961). În CCMP D-825, construit de compania Barrouz în 1962 SUA pentru sisteme cu scop militar, factorul principal era ridicarea siguranţei. Acest complex avea 4 procesoare, 16 module de MO, 10 linii de intrare-ieşire şi 256 de unităţi periferice. În zilele noastre CCMP se produc, în principal, pentru ridicarea productivităţii sistemelor de calcul. Printre primele companii care au produs supercalculatoare pentru piață ("comerciale") s-a numărat compania Cray prin anii 1970, numită așa după fondatorul ei Seymour Cray. Primul său supercalculator vândut și instalat oficial a fost celebrul Cray-1, care în anul 1976 a atins viteza de calcul de 130 MFLOPS (130 milioane de instrucțiuni cu virgulă mobilă pe secundă). Drept comparație, un PC normal din zilele noastre poate atinge câțiva GigaFLOPS, cu alte cuvinte, PC-ul de azi este deja de circa 1000 ori mai rapid la acest gen de instrucțiuni decât supercalculatorul din 1976. Supercalculatorul se utilizează la numeroase modelări și simulări, în special pe următoarele domenii: biologie, chimie, geologie, medicină, meteorologie, fizică, matematică, criptografie, tehnica militară șamd. Dar, nu orice problemă se pretează la rezolvarea pe un supercalculator. De asemenea, dacă se folosește de exemplu un supercalculator cu 200 procesoare în loc de 100, asta nu înseamnă o înjumătățire automată a timpului de rezolvare. Viteza totală de 105
calcul care se poate atinge depinde de arhitectura sa internă precum și de tipul problemei, de metoda de programare utilizată, de compilator și de alți factori. Sistemele multiprocesor sunt caracterizate prin : un multiprocesor este un singur calculator care include mai multe procesoare şi un singur spaţiu de memorie adresabil de acestea; procesoarele pot comunica şi coopera la diferite niveluri pentru rezolvarea unei probleme date; un multiprocesor este controlat de un singur sistem de operare integrat, care permite interacţiunea între procesoare şi programele lor la nivel de proces, set de date şi chiar date elementare. Clasificarea complexelor multiprocesor se poate face după mai multe criterii: după modul de conectare a nodurilor de calcul (strâns cuplate, slab cuplate), după fluxul de date şi instrucţiuni (SISD, MISD, SIMD, MIMD), după modul în care se accesează memoria (memorie partajată, UMA, NUMA)… După modul de conectare a nodurilor de calcul: multiprocesoare slab cuplate LCM (Loosely Coupled Multiprocessors); multiprocesoare strâns cuplate TCM (Tightly Coupled Multiprocessors).
Multiprocesoarele slab cuplate se caracterizează prin: grad mai scăzut al conflictelor de memorie, faţă de multiprocesoarele strâns cuplate; fiecare procesor dispune de un set de echipamente periferice şi o memorie locală mare, unde sunt accesate aproape toate instrucţiunile şi datele; procesorul, dispozitivele de I/E şi memoria locală formează modul de calcul (nod); modulele de calcul sunt conectate între ele printr-o reţea de interconectare.
106
modulele calculator pot fi conectate pentru realizarea unui sistem multiprocesor ierarhic sau neierarhic; un modul calculator poate fi fabricat într-un singur cip, care este folosit pentru construirea de sisteme de calcul mari; reţeaua de interconectare între modulele calculatorului: magistrala multiplexata în timp sau memorie multiport. Multiprocesoarele strâns cuplate se caracterizează prin: productivitate mai buna; în prelucrările de viteză mare sau de timp real; un grad înalt de interacţiune între procesoarele componente. reţeaua de interconectare procesoare memorie PMIN (Processor-Memory Interconnection Network), care oferă rată mare de comunicaţie (comutatoare grilă şi reţele de comutatoare multinivel); PMIN trebuie să permită înscrierea simultan a datelor în mai multe module de memorie şi să rezolve conflictele de acces. accesul procesoarelor la echipamente comune: reţea de interconectare procesoare-dispozitive de I/E, IOPIN (I/O Processor Memory Interconnection Network); procesoarele pot comunica direct, eventual pot executa operaţii de sincronizare prin reţeaua de interconectare ISIN (Interrupt Signal Interconnection Network). Tipuri de sisteme multiprocesor strâns cuplate: sisteme bazate pe magistrală, multiplexată în timp; sisteme bazate pe comutator grilă; sisteme bazate pe comutator multinivel.
După modul în care se accesează memoria CCMP se împart în două mari categorii: 1. Sisteme cu memorie partajată (shared memory): 1.1. sisteme cu acces uniform la memorie (UMA, Uniform Memory Access). În aceste sisteme oricare ar fi sursa şi destinaţia datelor, timpul de acces a lor este acelaşi pentru fiecare procesor; 107
1.2. sisteme cu acces neuniform la memorie (NUMA, NonUniform Memory Access). În astfel de sisteme, fiecare procesor are memorie proprie, în acest caz datele se accesează rapid. Iar, accesarea memoriei altui procesor ia mai mult timp. NUMA, la rândul său, pot fi: Cache Coherent NUMA (CC-NUMA), Non Cache NUMA (NC-NUMA). 2. Sisteme message passing, unde un procesor nu poate accesa memoria altuia, iar comunicarea între procesoare se face prin mesaje. După cum se vede sunt multe tipuri şi clasificări de SCMP. Să examinăm ce tipuri SCMP sunt în dependență de metodele de conectarea a dispozitivelor. În SCMP bazate pe magistrală totul este organizat foarte simplu (figura 9.2), toate dispozitivele se unesc la magistrala comună, transmiterea datelor într-un moment de timp se poate face numai între 2 dispozitive. P1
P2
MO1
MO2
MO3
ME
DII1
DII2
Pn – procesorul n, MOm – memoria operativă m, ME – memorie externă, DIIk – dispozitiv intrare- ieşire k.
Figura 9.2. SCMP cu magistrală comună. Dacă apare necesitatea schimbului de date dintre mai mult de 2 dispozitive atunci situaţia se rezolvă cu ajutorul sistemei de priorităţi şi cu ajutorul organizării rândului conform acestei sisteme de priorităţi. Plusurile acestor sisteme este simplitatea construirii şi reconfigurării complexului, adică adăugarea, schimbarea unor dispozitive şi simplitatea folosirii MO. Neajunsul acestui tip de complex este productivitatea scăzută, deoarece într-un moment de timp schimbul de informaţie se poate face numai între 2 108
dispozitive, deci face imposibilă folosirea legăturilor de lungă durată, deoarece duce la staționarea a altor dispozitive. Această situaţie poate fi îmbunătăţită folosind o magistrală mai rapidă ca orice dispozitiv sau folosirea a două magistrale, vezi figura 9.3. În ambele cazuri creşte costul sistemei. P1
P2
MO1
MO2
MO3
ME
DII1
DII2
Pn – procesorul n, MOm – memoria operativă m, ME – memorie externă, DIIk – dispozitiv intrare- ieşire k.
Figura 9.3. SCMP cu două magistrale comune. De aceste neajunsuri sunt lipsite CCMP cu comutator, vezi figura 9.4. Comutatorul (sau comutator matricial) permite comunicarea într-un moment de timp a mai multor dispozitive. În aceste complexe nu apar conflicte de legătură, dar rămân conflictele din cauza resurselor. Însă posibilitatea folosirii simultane a mai multor legături creşte esenţial productivitatea complexului. Aici se poate remarca şi posibilitatea folosirii legăturilor de lungă durată. În afară de aceste plusuri în cazul ruperii unei legături nu se întrerupe lucrul, doar se deconectează dispozitivul cu pricina.
109
MO1
MO2
MO3
P1
DII1
P2 DII2 CM Figura 9.4. SCMP cu comutator matricial (CM). Dintre neajunsurile complexelor cu comutator se pot menţiona: 1. dacă de la început nu sau prevăzut mai multe intrări, atunci adăugarea a noi unităţi poate duce la schimbarea comutatorului; 2. dacă avem un număr mare de dispozitive atunci avem nevoie de un comutator mare, care este scump, complicat și consumă mai multă energie. Pentru a diminua neajunsurile complexelor cu comutator şi de a micşora preţul lor se pot folosi mai multe comutatoare mai mici şi ieftine, vezi figura 9.5.
110
MO1
MO2
MO3
UC1
UC2
UC3
LII1
LII2 CUP
P1
CDP
UC4
P2
UC5
Figura 9.5. SCMP cu două comutatore. În acest caz avem un comutator al unităţilor principale (CUP) la care se conectează procesoare şi MO, iar al doilea este comutator al dispozitivilor periferice (CDP) la care prin unităţi de control (UC) se conectează dispozitivele de intrare-ieşire, comutatoarele se interconectează prin linii de intrare-ieşire (LII). În complexele cu MO partajată toate dispozitivele se conectează prin module de MO, vezi figura 9.6. Diferenţa dintre complexul a şi b este că în complexul b se poate repartiza MO proprie fiecărui procesor (NUMA). Acest fapt permite de a evita unele conflicte ce apar la folosirea în comun a MO, în afară de aceasta scade probabilitatea deteriorării informaţiei de alte procesoare. Neajunsul în cazul doi (UMA) constă în aceia că la ieşire din funcţie a MO proprii accesul al procesor se face prin canale de intrare-ieşire (CII), care lucrează mai încet.
111
P1
MO1
P2
MO2
CII1
MO3
CII2 a)
P1
MO1
P2
MO2
CII1
MO3
MO3
MO3
CII2
b) Figura 9.6. SCMP cu memorie operativă cu intrări multiple. După cum se vede fiecare, tip din cele trei, are puncte slabe şi puncte tari. În zilele noastre din clasa sistemelor multiprocesor cele mai răspândite sunt: sisteme multiprocesor simetrice (SMP), sisteme cu paralelism masiv (MPP), vectoriale PVP și memorie partajată NUMA, care, de fapt, sunt cele 3 tipuri examinate cu careva modificări pentru a micșora neajunsurile tehnologiilor de bază, cu toate acestea și ele la rândul lor au neajunsuri specifice fiecărei arhitecturi. Sisteme multiprocesor simetrice (SMP, Symetric MultiProcessing) sunt sistemele unde toate procesoarele au acces direct şi egal la memorie. Minusul acestor sisteme este că nu se pot crea sisteme masive, deoarece apar multe conflicte la adresare către 112
magistrală. Sistemele SMP moderne constau din câteva procesoare de acelaşi tip şi memorie operativă comună. Conectarea la memorie se face cu ajutorul magistralei comune sau a unui comutator matricial, vezi figura 9.7. CPU
CPU
CPU
Cache
Cache
Cache
bus or switch
Shared Memory . Figura 9.7. Sisteme multiprocesor simetrice. Minusul acestor sisteme este că, cu mărirea numărului de procesoare, preţul creşte mai repede ca productivitatea. În afară de aceasta din cauza reţinerilor la adresarea către memoria comună are loc reţinerea reciprocă a procesoarelor, chiar la prelucrarea problemelor independente. Exemple de complexe SMP pot complexele din seriile HP 9000 V-class, N-class; Probleme ce apar la SMP cu memorie comună uşor sunt evitate de sisteme cu paralelism masiv (MPP), vezi figura 9.8. Calculatoarele de acest tip sunt nişte sisteme multiprocesor unde cu ajutorul unui mediu de comutare sunt unite în comun nodurile de calcul. Această arhitectură permite evitarea conflictelor la adresare către memorie, care la rândul său permite creşterea nelimitată a numărului de procesoare, ceia ce duce la ridicarea productivităţii.
113
M
M
M
CPU
CPU
CPU
Cache
Cache
Cache
Communication enviroment Figura 9.8. Sisteme MPP cu memorie distribuită. Astfel, cu succes funcţionează sisteme cu sute şi mii de procesoare: ASCI White cu 8192 procesoare, Blue Mountain cu 6144 procesoare ce ating productivităţi de 10 Tflops. Exemple de complexe MPP pot fi: IBM RS/6000 SP2, Intel PARAGON/ASCI Red, CRAY T3E, Hitachi SR8000, complexele de tip transputer Parsytec. Complexele NUMA sunt asemănătoare cu cele SMP, diferă prin aceia că au acces neomogen la memorie. În cazul care complexul susține tehnologia cache-coherent pentru memoria chace se spune despre complexe cc-NUMA (cache-coherent NUMA). Exemple de complexe NUMA pot fi: HP 9000 V-class cu configurația SCA, SGI Origin2000, Sun HPC 10000, IBM/Sequent NUMA-Q 2000, SNI RM600. Complexele PVP (PVP, Parallel Vector Processor) sunt asemănătoare cu SMP și MPP, care conțin noduri de calcul vectoriale, unde procesoarele sunt conectate astfel încât, la maximum, se poate folosi tehnica pipeline. Exemple de complexe PVP pot fi: NEC SX-4/SX-5, seria de complexe CRAY( CRAY-1, CRAY J90/T90, CRAY SV1, CRAY X1…), seria de complexe Fujitsu VPP. Și la sfârșit să examinăm caracteristicile a câtorva SCMP din lista top500, tabelul 9.1. După cum sa menționat, pentru a 114
construi un cel mai performant complex, se folosesc toate metodele (arhitecturi, regimuri de prelucrare a datelor șamd) posibile de ridicare a productivității. Arhitectura de bază este SIMD, dar unirea a mai multor rack-uri este asemenea unui cluster, iar la interconectarea nodurilor de calcul se pot folosi toate tehnicile specifice complexelor multiprocesor. Tabel 9.1. Top calculatoare, noiembrie 2014 (top500.org) RMAX
POWER
SYSTEM
CORES
(TFLOP/S)
(KW)
1
Tianhe-2 (MilkyWay-2) - TH-IVBFEP Cluster, Intel Xeon E5-2692 12C 2.200GHz, TH Express-2, Intel Xeon Phi 31S1P NUDT
3 120 000
33 862.7
17 808
2
Titan - Cray XK7 , Opteron 6274 16C 2.200GHz, Cray Gemini interconnect, NVIDIA K20x Cray Inc.
560 640
17 590.0
8 209
3
Sequoia - BlueGene/Q, Power BQC 16C 1.60 GHz, Custom IBM
1 572 864
17 173.2
7 890
4
K computer, SPARC64 VIIIfx 2.0GHz, Tofu interconnect Fujitsu
705 024
10 510.0
12 660
5
Mira - BlueGene/Q, Power BQC 16C 1.60GHz, Custom IBM
786 432
8 586.6
3 945
115
Tema 10. Particularităţile organizării proceselor de calcul. În dependență de domeniul utilizării, SC trebuie să prelucreze diferite tipuri de probleme. Deci, şi metodele de îndeplinire a lucrărilor diferă. Aceste diferențe se reflectă în tehnicile de prelucrare a datelor și în sistema de operare (SO). Până acum am examinat arhitecturile calculatorului personal, complexelor multiprocesor și multicalculator, dar aceste sisteme diferă și prin SO și aplicații. Deoarece, diferite sisteme de calcul diferă după structură și se folosesc pentru prelucrarea diferitor tipuri de probleme diferă și sistema de operare, programele aplicative și metodele și tehnicile de prelucrare a datelor. Cu toate că SCMP şi SCMC ambele se referă la sisteme MIMD, organizarea proceselor de prelucrare a datelor diferă esenţial. SCMC sunt mai bine adaptate pentru rezolvarea fluxurilor de lucrări independente, adică unde datele iniţiale, rezultatele intermediare şi rezultatele finale a unei lucrări nu se folosesc de alte lucrări. Sau altfel spus, SCMC mai bine rezolvă lucrările la care volumul informaţiei transmis între calculatoare nu este mare, se poate observa că cât volumul informaţiei transmis între calculatoare este mai mare cu atât productivitatea este mai mică. Rezolvarea acestui neajuns poate fi prin folosirea memoriei operative comune (MOC), în acest caz productivitatea se pierde nu la transferul informaţiei ci la sincronizarea etapelor de rezolvare. La folosirea MOC creşterea productivităţii are loc liniar faţă de creşterea numărului de calculatoare. După cum se vede greutăţile cele mai mari revin sistemei de operare (SO), de obicei SO a SCMC puţin diferă a SO a CP, pur şi simplu la sistema existentă se adaugă componente noi: 1) componente ce asigură transferul informaţiei între calculatoare; 2) componente de control reciproc între calculatoare; 3) componente ce asigură lucrul operatorului cu complexul de calcul; 4) îndeplinirea lucrărilor de reglementare.
116
Programele de schimb a informaţiei pot fi diferite în dependenţă de tipul legăturilor. Programele de control reciproc sunt necesare când complexul este creat pentru asigurarea unei siguranţe ridicate şi este obligatorie în cazul când are loc trecerea de la calculatorul de bază la cel de rezervă. În cazul când această trecere are loc conform instrucţiunilor operatorului sunt obligatorii programe de control pentru operator. Uneori aceste programe sunt destul de complicate, dar în mediu ele sunt de circa 10% din volumul SO. Lucrările de reglementare sunt necesare pentru testarea și controlul corectitudinii funcționării SC. SCMP sunt mai bine adaptate pentru rezolvarea lucrărilor cu calcule paralele, ridicarea siguranţei. Aceste fapte rezultă din aceia că toate procesoarele lucrează cu MOC, au la dispoziţia sa toate unităţile periferice şi sunt conduse de o SO unică. SCMP rezolvă cu o productivitate mai mare problemele cu schimb mare de informaţie, deoarece se foloseşte MOC, MEC fapt care micşorează volumul şi distanţa informaţiei transmise. Astfel, SCMC mai bine rezolvă probleme cu mai multe fluxuri de lucrări iar SCMP la rezolvarea unei probleme complexe cu schimb mare de date dintre etapele problemei. O importanţă mare are şi faptul că în SCMP creşte coeficientul de folosire a echipamentului. Se ştie că chiar în regim multiprogram majoritatea componentelor calculatorului staţionează, deoarece cele mai folosite sunt procesorul și memoria operativă. În afară de aceasta, SCMP au o siguranţă mai mare faţă de SCMC, deoarece la ieşirea din funcţie a unui procesor lucrul continue doar fără un procesor, până când în sistemă există măcar un dispozitiv de acest tip. În SCMC în cazul ieşirii din funcţie a unui procesor nu se folosesc şi celelalte dispozitive a calculatorului respectiv: MO, dispozitive periferice, iar în unele cazuri când calculatorul este de bază se poate întrerupe lucrul întregului complex. Din cele menţionate mai sus se poate face concluzie că SCMP are un coeficient de folosire a echipamentului şi o siguranţă mai mare ca la SCMC. Se cunosc trei tipuri de bază de organizare a lucrului procesoarelor în SCMP: 1) principal-secundar; 117
2) repartizarea resurselor şi lucrărilor de la început; 3) prelucrarea simetrică a informaţiei de toate procesoarele sistemei. SO în primul caz se primeşte destul de simplă, deoarece lucrul este condus de un procesor şi conflictele din cauza resurselor chiar şi celelalte conflicte se reduc la minimum şi deoarece prelucrarea informaţiei este centralizată ele se pot evitata la repartizarea resurselor şi lucrărilor. Procesorul principal poate să nu difere de celelalte, iar în cazul ieşirii lui din funcţie poate fi înlocuit cu altul. Uneori procesorul principal are funcţii specializate şi îndeplineşte doar aceste funcţii, astfel prin specializarea funcţiilor îndeplinite creşte productivitatea la preţ redus, dar în cazul ieşirii lui din funcţie şi imposibilităţii înlocuirii lui se poate întrerupe lucrul întregului complex. Dintre neajunsurile acestor SCMP se pot menţiona, la un flux mare de lucrări scurte procesorul principal nu dovedeşte să repartizeze lucrările între procesoare, ceia ce duce la staţionarea unor procesoare. Acelaşi neajunsuri apar şi la rezolvarea unei probleme mari de mai multe procesoare, aici un lucru important procesorul principal îl face la sincronizarea etapelor problemei astfel încât procesoarele să funcţioneze cu minim de staţionări. Însă toate neajunsurile sunt subminate de faptul că SO este destul de simplă. Mult mai universală este organizarea lucrului cu rezolvarea lucrărilor aparte de fiecare procesor. Aici toate procesoarele sunt egale şi fiecărui procesor din timp, de la bun început, i se împart lucrările şi resursele. Aici apar puţine conflicte deoarece de la început se împart lucrările şi resursele, dar procesoarele nu lucrează uniform, deoarece este, practic, imposibil de a calcula precis timpul de execuţie de la început, de aceia o parte din dispozitive staţionează. Aşa o organizare face ca aceste SCMP să fie asemănătoare cu SCMC, dar sunt şi unele diferenţe: resursele sistemei se folosesc mai eficient, deoarece sunt mai puţine, siguranţa e mai mare deoarece rezervarea se face mai simplu și deoarece toate dispozitivele sunt comune. 118
Cel mai bine toate calităţile bune a SCMP se evidenţiază la prelucrarea simetrică a informaţiei. În acest caz toate procesoarele au independenţă maximă, în complex nu există repartizare preventivă a lucrărilor, fiecare procesor singur î-şi alege însărcinarea din listă. Nu există nici repartizarea resurselor, fiecare procesor î-şi alege resursele conform necesităţilor. Toate procesoarele pot participa la rezolvarea unei probleme, dacă etapele de rezolvare sunt incluse în listă. CCMP în acest caz se caracterizează printr-o încărcare bună a dispozitivelor cu lucru, ceia ce permite atingerea unei productivităţi ridicate. La prima vedere SO a CCMP nu mult diferă de SO a CP, dar aceasta nu este aşa. La CP la prelucrarea multiprogram a informaţiei are loc combinarea în timp a diferitor etape de rezolvare. Lucrul în paralel a mai multor dispozitive permite prelucrarea datelor din mai multe lucrări (probleme), dar procesorul lucrează, într-un moment de timp, doar cu o lucrare. Astfel, regimul multiprogram este posibil la lucrul paralel a procesorului şi a celorlalte dispozitive. În SCMP are loc prelucrarea paralelă a mai multor lucrări de mai multe procesoare, ceia ce duce la complicarea oricărui proces. De exemplu, CP în situaţia de conflict când procesorul şi canalul intrare-ieşire (CII) apelează către acelaşi modul de memorie, aici situaţia se rezolvă simplu deoarece CII are prioritate. Dar în cazul când mai multe procesoare apelează către acelaşi modul de memorie? În acest caz, organizarea rândului şi rezolvarea tuturor conflictelor cer programe speciale de la SO. Destul de complicată este şi sincronizarea proceselor paralele în CCMP. În acest scop se folosesc aşa numitele “semafoare”, care opresc lucrul în anumite condiţii. Semafor de obicei este o variabilă de tip întreg ce scade sau creşte în anumite condiţii. Alt moment este că, CP lucrează cu o configurare stabilă. SO în CCMP nu numai că trebuie să îndeplinească lucrul pentru diferite configurări, dar şi să îndeplinească reconfigurarea automată în cazul ieşirii din funcţie a oricărui dispozitiv. În acest caz, reconfigurarea duce la o nouă repartizare a resurselor. Numai 119
în acest caz, se poate vorbi despre o siguranţă a complexului. În afară de aceasta, în CCMP e de dorit ca fiecare procesor să aibă: MO proprie pentru păstrarea datelor, întreruperilor, programe de restabilire proprii.
120
Tema 11. Sisteme multiprocesor matriciale. Cele mai răspândite sisteme din clasa SIMD sunt sistemele multiprocesor matriciale (SMM), care cel mai bine sunt adaptate pentru rezolvarea problemelor ce se caracterizează prin paralelismul obiectelor independente şi paralelismul datelor. Organizarea sistemei de acest tip, la prima vedere, pare simplă, unitatea de control comună (UCC), un număr mare de unităţi ce lucrează în paralel şi fiecare prelucrează fluxul său de date. Astfel, productivitatea sistemei este egală cu productivitatea sumară a unităţilor de calcul. În practică pentru a asigura o astfel de productivitate trebuie rezolvate multe probleme, una din cele mai importante este organizarea unor legături eficiente între toate elemente de procesare (EP) sau nod de calcul. În clasa complexelor multiprocesor matriciale se încadrează complexele SMP și MPP. Dacă nu luăm în vedere sistema lui Unger 1958, care era destinată numai pentru recunoaşterea imaginilor, atunci prima sistemă matricială trebuie poate fi considerată sistema SOLOMON, schema simplificată este arătată în figura 11.1. UCC
EP
EP
EP
EP
EP
EP
EP
EP
EP
Figura 11.1. Sistema de tip SIMD. 121
Sistema conţine 1024 EP, unite sub formă de matrice 32x32. Fiecare EP e unit cu alte 4 EP vecine, fiecare EP are un procesor şi MO de 16 Kb. Prin canale de legătură se transmit instrucţiuni şi date. Sistema SOLOMON sa primit destul de masivă şi neeficientă, dar ideile sale au fost reluate şi dezvoltate în sistema ILLIAC-IV, elaborată de universitatea din Illinois şi construită de compania Barrouz, figura 11.2.
Figura 11.2. Sistema ILLIAC-IV. În proiectul iniţial sistema trebuia să includă 256 EP, împărţite în 4 grupe (GEP- grupa EP), unde fiecare grupă lucra sub conducerea procesorului de control propriu (PrC). Toate PrC, memoria externă, unităţile intrare-ieşire (UII) trebuiau să lucreze sub conducerea procesorului de comandă central (PrCC), vezi figura 11.3. Dar, din cauza greutăţilor de caracter tehnic care au apărut la elaborarea schemelor integrale, MO şi a creşterii preţului aproape de două ori, în rezultat, cu întârziere de doi ani în 1971 a apărut sistema compusă numai dintr-o singură GEP (vezi figura 11.3) şi un singur PrC şi în 1974 a fost dată în folosire. De la început, în proiect, se presupunea de a primi o productivitate de 1 mld. operaţii pe sec., dar sa primit o productivitate de 200 mln. operaţii pe sec. Cu toate acestea sistema a fost, la timpul ei, cea mai bună din lume. Dacă la calcule nu se folosesc toate 64 EP, atunci PrC poate împărţi GEP în 2 părţi a câte 32 EP, sau chiar 122
8x8. Aceasta permite de a prelucra mai repede operanzii vectoriali din 64, 2∙64=128, 8∙64=512 elemente. GEP
PrC
PrC
GEP
GEP
PrC
PrC
GEP
Comutator intrare-ieşire
Memoria laser
PrCC
ME pe discuri magnetice
UII Figura 11.3. Sistema ILLIAC-IV, proiect. După cum se vede din figura 11.4 fiecare EPi este conectat cu altele 4: i-1, i+1, i+8, i-8. La aşa o organizare transferul de date dintre orice 2 EP se efectuează prin cel mult 7 paşi, minim un pas, numărul mediu este de 4 paşi. Sistema de intrare-ieşire este compusă din CP B-6700 (iniţial B-6500) şi două tipuri de ME: pe discuri magnetice şi laser (laser cu discuri metalice). Pentru a realiza transferul de date dintre ME şi procesorul de comandă central PrCC în sistemă este inclusă MO compusă din 4 module de memorie. Capacitatea sumară a memoriei este de 1200 Gb, timpul de apel al datelor de la 0,2 până la 5 secunde.
123
Figura 11.4. GEP a sistemei ILLIAC-IV. Trebuie de menţionat că productivitatea ridicată poate fi atinsă numai pentru unele tipuri de probleme: lucrul cu masive, programare liniară, probleme Fourier, prelucrarea semnalelor, unde are loc paralelismul datelor şi obiectelor independente. Trebuie, de asemenea, de menţionat faptul că elaborarea programelor pentru sistema ILLIAC-IV, ce ar permite atingerea unei productivităţi sporite, este de asemenea complicată. În acest scop au fost create limbaje algoritmice speciale. Sistema ILLIACIV a fost inclusă în reţeaua de calcul ARPA şi în rezultatul îmbunătăţirii programelor productivitatea a crescut până la 300 mln. operaţii pe secundă. La începutul anilor 80 în Uniunea Sovetică din tipul SIMD a fost construită sistema SP-2000 (sistema paralelă, original ПС2000), care de asemenea face parte din clasa SMM. Această sistemă a fost proiectată pentru a rezolva aşa probleme ca: prelucrarea informaţiei geofizice la căutarea gazului şi petrolului, calcularea siguranţei aparatelor de zbor, prelucrarea semnalelor de la hidrolocator, probleme din fizica nucleară, probleme din aerodinamică, prelucrarea imaginilor șamd. 124
Practica de folosire a sistemei SP-2000 a arătat că pentru unele tipuri de probleme se poate atinge productivitatea de 200 mln. operaţii pe secundă. În prezent nu putem vorbi despre folosirea doar SMM clasice, SC moderne folosesc de fapt tehnologii comune mai multor SC: sisteme matriciale, multiprocesor, multicalculator, asociative, vectoriale. Din, astfel de, SC moderne unde pe larg se folosesc tehnologiile SMM clasice se poate menţiona IBM Blue Gene P, apărut 26 iunie 2007 (figura 11.5), este a doua generaţie de Blue Gene [Wi1]. Conceput pentru productivitatea de 1 PFLOPS, acesta poate fi configurat să atingă viteze de peste 3 PFLOPS. În plus, este de cel puţin şapte ori mai eficient energetic decât oricare alt supercalculator, realizat prin utilizarea mai multe chip-uri lowpower conectate prin intermediul a cinci reţele specializate. Patru calculatoare 850 MHz PowerPC 450 sunt integrate pe fiecare Blue Gene/P. Varianta simplă are o configuraţie de 294912-procesore, sistem de 72 de tower (rack), reţele optice. Blue Gene/P poate conţine 884736-procesore, 216 tower-uri de grup pentru a atinge 3-PFLOPS de performanţă. Un tower standard Blue Gene / P de configurare va găzdui 4096 procesoare pe un tower.
Figura 11.5. Supercalculatorul IBM Blue Gene P. Un alt complex din această serie este IBM BlueGene/L, ce are o viteză de vârf de peste 596 teraflopi şi o memorie totală 125
de 69 de Tbiţi, vezi figura 11.6. Sistema poate avea 106496 procesoare dual. Nodurile sunt configurate ca un cub sau matrice 3D de dimensiunea 8x8x16, unde fiecare nod de calcul este conectat în şase direcţii diferite pentru a comunica cu cel mai apropiat vecin, vezi figura 11.7 [ht5].
Figura 11.6. Arhitectura sistemei IBM BlueGene/L.
Figura 11.7. Conectarea nodurilor de calcul în complexul IBM BlueGene/L. 126
127
Tema 12. Sisteme multiprocesor vectoriale. Un complex vectorial este complexul în care pe larg se folosește prelucrarea informației în tehnica pipeline (conductă). Tehnica pineline, într-o măsură mai mare sau mai mică, se foloseşte în toate SC, începând cu calculatorul personal şi terminând cu sisteme cluster. Complexe unde pe larg se foloseşte tehnica pipeline se numesc sisteme vectoriale PVP. Sistemele PVP (Parallel Vector Processor) conțin noduri de calcul vectoriale, unde procesoarele sunt conectate astfel încât se poate folosi tehnica pipeline. Exemple de complexe PVP pot fi: NEC SX-4/SX-5, seria de complexe CRAY( CRAY-1, CRAY J90/T90, CRAY SV1, CRAY X1…), seria de complexe Fujitsu VPP. Tehnica pipeline are o largă aplicare în tehnica de calcul, în primul rând aceasta se referă la conducta de instrucţiuni. Toate calculatoarele moderne folosesc acest principiu. În afară de aceasta pe larg se foloseşte şi conducta de date, mai ales când avem mai multe procesoare care pot lucra paralel. Anume aşa se construiesc cele mai performante sisteme. În temele precedente a fost menţionată prelucrarea informaţiei în regim pipeline ce duce la ridicarea productivităţii sistemelor de calcul. În afară de aceasta în caz când avem mai multe unităţi de prelucrare a informaţiei, lucrul lor de asemenea poate fi planificat în regim conductă, ceia ce, la fel, duce la ridicarea productivităţii SC. La fel, tehnica pipeline se poate folosi la interconectarea registrelor și modulelor de memorie, astfel încât datele intermediare dintre diferite etape sa fie salvate în memoria proprie nodului sau procesorului, fără a o plasa în memoria comună, fapt ce permite de a micșora timpul de apel a datelor. O largă răspândire a conductei de instrucţiuni a fost aplicată în complexul BĂSM-6 (БЭСМ-6) elaborată de Lebedev S.A. în 1966 în URSS. Aici conducta de instrucţiuni se realiza cu ajutorul a 8 module de MO independente şi un număr mare de registre. Aceasta a permis de a atinge o productivitate de 1 milion operaţii pe secundă. 128
Folosirea regimului pipeline la lucrul procesoarelor, modulelor memoriei operative permite de a ridica considerabil productivitatea SC, vezi figura 12.1. Aici, se arată arhitectura procesoarelor PowerISA, care concine mai multe UAL ce lucrează în regim pipeline.
Figura 12.1. Arhitectura microprocesoarelor PowerISA [Wi1]. Un interes aparte prezintă şi sistemele IBM 360/91 şi IBM 360/195, care au cinci dispozitive de bază: MO, procesor de instrucţiuni, procesor de efectuare a operaţiilor în virgulă mobilă, procesor de efectuare a operaţiilor în virgulă fixă şi dispozitiv de control a memoriei. Toate aceste dispozitive lucrează independent unul de altul, fapt ce permite de a folosi tehnica pipeline. MO este construită pe principiul modulelor multiple, până la 32 de module. Dispozitivul de control a memoriei, de asemenea, folosește tehnica pipeline. În afară de conducta de instrucţiuni, în aceste complexe, este organizată şi conducta de date. Toate cele 129
enumerate mai sus permit în complexul IBM 360/195 de a efectua în acelaşi timp până la 50 de instrucţiuni. Cu mult mai bine este organizată prelucrarea datelor în regim conductă în sistema STAR-100, elaborată de compania CDC în 1973. Sistema conţine trei procesoare ce pot lucra în tehnică pipeline: procesor de adunare şi înmulţire a numerelor cu punct flotant (PAÎPFL); procesor de adunare a numerelor cu punct flotant şi înmulţire a numerelor cu punct fix, împărţire şi aflarea rădăcinii pătrate (PÎPF) pătrate şi un şir de funcţii logice; procesor special de îndeplinire a operaţiilor cu punct fix şi un şir de funcţii logice (PS), vezi figura 12.2. MM1 …
Dispozitiv de control a memoriei
Bloc de control a fluxului de date
MM32 Module de memorie
PAÎPFL PÎPF PS
CII
Figura 12.2. Sistema STAR-100. Procesoarele lucrează cu numere de 32 şi 64 biţi şi în fiecare 40 ns dau rezultate în blocul de control, MO este compusă din 32 de module şi lucrează sub conducerea dispozitivului de control. Fiecare ciclu de adresare la memorie este de 40 ns, în total avem 40 ns∙32=1,28 ms. Adunarea numerelor cu punct flotant este compusă din 4 segmente, timpul de execuţie a unui segment este de 40 ns, deci operaţia dată se execută în 160 ns. Înmulţirea este compusă din 8 segmente, deci operaţia dată se execută în 320 ns. Dar încărcarea procesoarelor cu un flux de operaţii de acelaşi tip permite de a obţine mai multe rezultate peste fiecare 40 ns. Productivitatea sumară a sistemei STAR-100 este de 100 mln. operaţii pe secundă. 130
Dispozitivele de îndeplinire a operaţiilor în afară de faptul că lucrează în regim conductă în majoritatea cazurilor îndeplinesc mai multe operaţii. Un exemplu este sistema ASC a companiei “Tehas Instruments”, vezi figura 12.3. După cum se vede unele segmente se folosesc la mai multe operaţii, ceia ce de asemenea ridică productivitatea SC. Adunarea cu punct flotant
Registru de intrare
Înmulţirea cu punct fix
Scăderea puterilor Egalarea puterilor Înmulţirea Adunarea mantiselor Normalizarea Depozitarea Registru de ieşire Figura 12.3. Conducta sistemei ASC. Complexele tipice acestei categorii sunt supercalculatoarele CRAY a companiei CRAY Research, începând cu prima elaborată în 1976. În această sistemă tehnica pipeline se foloseşte la maximum, există conducta de instrucţiuni şi conducta operaţiilor aritmetice şi logice. În afară de aceasta se foloseşte lucrul paralel a mai multor dispozitive în regim pipeline, 131
toate acestea au permis de a atinge, pentru unele tipuri de probleme, o productivitate de 250 mln. operaţii pe secundă. Sistema constă din 4 secţii: secţia de gestiune a programelor, secţia dispozitivelor de calcul, secţia registrelor, secţia de memorare şi intrare-ieşire, vezi figura 12.4.
Figura 12.4. Sistema CRAY, 1976. În sistemă sunt 12 dispozitive de calcul ce lucrează în regim conductă, împărţite în 4 grupe: de adrese, scalară, operaţii cu punct flotant şi vectorială. Numărul de segmente pentru fiecare operaţie se arată în paranteze şi poate fi de la 1 până la 14. Durata de execuţie este de 12,5 ns, ceia ce înseamnă că fiecare dispozitiv de calcul dă rezultat peste 12,5 ns. Memoria operativă are capacitatea de 1 MO, organizată în formă de 16 blocuri de câte 64 KO, fiecare bloc include 72 de module, mai târziu memoria a fost mărită, ciclu de adresare la memorie este de 50 ns. 132
Un rol important la mărirea productivităţii a avut-o sistema de registre, care este împărţită în trei grupe: A- de adrese, Sscalari, V- vectoriali. Timpul de apel la registre este de 6 ns. În afară de ei se mai folosesc şi B şi T registre. Toate tipurile de registre permit dispozitivelor ce lucrează în tehnică pipeline de a lucra fără a apela la MO, deoarece rezultatele intermediare se înscriu tot în registre. În afară de aceasta rezultatele primite de la un dispozitiv pot fi date de intrare pentru altul, ceia ce la fel permite de a lucra fără a apela la MO. Toate cele menţionate permit de a ridica, semnificativ, viteza de lucru. Numărul total de instrucțiuni este de 128, numai că în loc de împărţire se foloseşte calcularea valorii inverse. Intrarea-ieşirea datelor se face prin 24 de canale grupate în 4 grupe, unde fiecare grupă este ori numai de intrare ori de ieşire. Productivitatea ridicată se primeşte şi din alte cauze: 1. Construcţia este relativ compactă, ceia ce permite ca timpul de transmitere a semnalelor să fie mic, cu tactul de lucru 12,5 ns. 2. În sistemă este inclusă memorie fixă de un volum mare, divizată în 4, cu un volum sumar de 76854 mld. biţi (≈10To în 1976). 3. Se foloseşte adresare rigidă (asociativă): alegerea datelor se face pe rânduri, coloane, diagonale. 4. Sistema are SO şi programe aplicative bune, ce permit prelucrarea în regim multiprogram până la 63 de lucrări. Printre complexele moderne unde pe larg se utilizează tehnica pipeline se poate menționa complexul Earth Simulator. În martie 2002 compania NEC a prezentat sistema Earth Simulator compusă din 5120 procesoare conductă-vectoriale, vezi figura 12.5. Denumirea grupei sisteme conductă-vectoriale a fost dată datorită a două principii de bază folosite la proiectarea procesoarelor: 1) prelucrarea fluxului de instrucţiuni în tehnică pipeline, 2) folosirea operaţiilor vectoriale ce permit operarea cu masive întregi de date mai rapid. 133
Figura 12.5. Complexul Earth Simulator a companiei NEC. Supercalculatorul japonez Earth Simulator este atât de complex, încât crearea sa a fost posibilă datorită unui proiect național. Calculatorul a fost finisat în februarie 2002, după ce a fost instalat în centrul Japan Marine Science and Technology Center. Calculatorul și toate încăperile tehnologice: sistema de condiționare, de alimentare electrică, de iluminare, de protecție împotriva cutremurelor ocupă o clădire de mărimea 50x65x17 m, vezi figura 12.6.
Figura 12.6. Încăperile tehnologice a complexului Earth Simulator. 134
Earth Simulator are 640 noduri de calcul, conectate printrun comutator ce lucrează la viteze mari. Nodul conține 8 procesoare vectoriale, memoria operativă este compusă din 2048 unități de memorie care în comun au 16 Go. Productivitatea maximă a unui nod de calcul este de 8 Gflops, deci productivitatea maximă a complexului compus din 640*8=5120 procesoare este de circa 40 Tflops, vezi figura 12.7.
Figura 12.7. Nodurile de calcul a complexului Earth Simulator. Din 2002 până 2004 Earth Simulator a fost pe primul loc în lista Top500, cu productivitatea de 35,86 Tflops conform testului Linpack. Rețeaua de conectare a nodurilor de calcul este arătată în figura 12.8. Viteza de transfer dintre noduri este de 12,3 Go/s. Lungimea sumară a cablurilor ce unesc nodurile de calcul este de 2400 km.
135
Figura 12.8. Rețeaua de conectare a nodurilor de calcul a complexului Earth Simulator. Fiecare procesor aritmetic este compus din unități scalare și vectoriale. Procesorul lucrează la viteza de 500 GHz, dar unele componente lucrează la viteza de 1GHz. Unitatea scalară are o structură superscalară ce are 128 de registre de câte 64 KO. Sunt 8 unități vectoriale compuse din 72 registre vectoriali și 6 unități conductă: adunare, înmulțire, împărțire, pentru operații logice, 136
operații de mascare și citire/înscriere. Unitățile de unul și același tip din diferite noduri simultan prelucrează una și aceiași instrucțiune vectorială, iar diferite unități a unui nod pot lucra simultan și independent. Schema unui procesor vectorial este dată în figura 12.9.
Figura 12.9. Schema unui procesor vectorial. Pentru păstrarea datelor calculatorul Earth Simulator are masive de discuri dure de 250 To și un masiv pe bază de bandă StorageTek 9310 de 1,5 Po. Tehnologiile de bază folosite la programarea paralelă sunt: Message Passing Interface (MPI), High Performance Fortran, OpenMP. Arhitectura complexului combină mai multe tehnologii de construire a supercalculatoarelor. În general, Earth Simulator este un complex cu paralelism masiv (MPP), care conține noduri de calcul vectoriale, care prelucrează informația în regim conductă. 137
Tema 13. Sisteme multiprocesor asociative Din sisteme de tipul SIMD fac parte şi sistemele asociative. Aceste sisteme ca şi cele matriciale se caracterizează prin număr mare de dispozitive capabile în acelaşi timp să prelucreze câteva fluxuri de date. Complexele multiprocesor asociative pot fi numite acelea care utilizează memoria asociativă. Complexele reale pot fi SMP, MPP, PVP, NUMA care utilizează și memoria asociativă și memoria obișnuită. După cum a fost menționat în temele precedente, complexele mainframe și supercalculatoarele pe lângă memoria obișnuită utilizează și memoria asociativă. De exemlu: Cray 1976, Earth Simulator șa. În sistemele matriciale datele vin de la memoria externă comună sau individuală, sau direct de la dispozitive intrare-ieşire. În sistemele asociative informaţia vine de la memoria asociativă (MA), care se caracterizează prin aceia că informaţia se alege nu după adresă ci după conţinut, vezi figura 13.1. Masivul de memorare este împărţit în n celule a câte m elemente. Practic pentru orice MA sunt caracteristice următoarele componente: registrul semnelor asociative (RgSA), registru mască (RgM), registru indicilor adresei (RIA, ce conţin registre Ti) cu schema de comparare la intrare. În MA pot fi şi alte elemente, existenţa şi funcţia cărora este determinată de metoda de utilizare a MA. Din unitatea de control (UC) se transmite codul informaţiei căutate, care are mărimea de la 1 până la m elemente. Dacă el se foloseşte pe deplin, atunci el fără schimbări vine la schema de comparare. Dacă însă se foloseşte numai o parte a codului, atunci elementele de prisos se maschează cu ajutorul RgM. Înainte de căutare toţi RIA au valoarea 1, după se compară primul element a tuturor n celule cu primul element din RgSA. Dacă elementele coincid atunci Ti respectiv rămâne egal cu 1, altfel Ti primeşte valoarea 0. Acelaşi procedeu se repetă cu elementele 2, 3, … După comparare valoarea 1 o are acel Ti la 138
care celula i conţine informaţia căutată din RgSA. Trebuie de menţionat că timpul de căutare a informaţiei în masivul de memorare după metoda asociativă depinde de mărimea informaţiei căutate şi viteza de comparare, dar nu depinde de numărul de celule. Acesta şi este principalul avantaj a memoriei asociative faţă de memoria cu adrese. UC
RgSA
RgM
Masiv de memorare
T0 T1
Celula 0 Celula 1 … Celula n-2 Celula n-1
Schema de comparare
… Tn-2 Tn-1
Figura 13.1. Memorie asociativă, schemă. Înscrierea în masivul de memorare se face fără a arăta numărul celulei. De obicei, pentru aceasta se foloseşte un element a fiecărei celule, care are valoarea 0 când celula e liberă şi 1 când este ocupată. Uneori MA este construită astfel încât pe lângă adresarea asociativă este permisă şi adresarea directă, care este mai comodă când se lucrează cu dispozitive periferice. Spre deosebire de memoria obişnuită (de adrese) MA nu numai păstrează informaţia dar poate îndeplini şi careva funcţii logice. Aceasta permite căutarea informaţiei nu numai după egalitate dar 139
şi după alte condiţii, conţinutul celulei este: mai mic, mai mare, mai mic egal decât conţinutul din RgSA. Cercetările au arătat că pentru aşa lucrări ca: prelucrarea informaţiei de la radiolocator, recunoaşterea imaginilor, şi alte lucrări cu structură matricială a datelor se rezolvă mai rapid cu ajutorul MA. În afară de aceasta, programarea unor astfel de lucrări este mai simplă pentru complexe cu MA. Printre primele sisteme asociative, face parte complexul STARAN, SUA. În această sistemă apelul la memorie se poate face nu numai cu câte un element, dar după cuvinte întregi, vezi figura 13.2. Sistema are EP pentru fiecare celulă şi o schemă unică ce permite regruparea datelor în memorie. 255 0 element EP0 EP1
cuvânt
…
EP255 255 Figura 13.2. Prelucrarea datelor în sistema STARAN. Elementul de bază a sistemei este MA compusă din 255 de celule a câte 255 elemente, adică de 65536 biţi. Schema de regrupare permite de a aranja datele astfel încât asupra datelor ce se păstrează în memorie se pot efectua în paralel operaţiile aritmetice şi logice. Majoritatea operaţiilor lucrează cu celula întreagă, operaţiile unde participă mai multe celule se folosesc foarte rar, la necesitate celula poate fi împărţită în câteva părţi. Modelul de bază conţine un modul asociativ de memorie, dar numărul lor poate varia de la 1 până la 32. Memoria este compusă din 6 secţii: 1- memoria subprogramelor (512 cuvinte), 2,3- memoria instrucţiunilor (512 cuvinte), 4- memoria buffer (512 cuvinte), 5- memoria principală (16384 cuvinte), 6- memoria 140
cu acces direct (10729 cuvinte). Lungimea unui cuvânt este de 32 de elemente. La necesitate volumul memoriei 5 se poate dubla. Prelucrarea greşelilor, încărcarea iniţială a MP, legătura dintre operator şi sistemă, diagnosticarea sistemei se face de un calculator monoprocesor RDR-11. Subsistemul de intrare-ieşire a datelor permite conectarea a unor dispozitive noi. Accesul direct la memorie permite de a folosi memoria şi de un calculator din exterior, în acelaşi timp nu este nevoie de memorie buffer. Toate modificările aplicate în complexul STARAN permit de a îndeplini mii de operaţii în paralel.
141
Lista de abrevieri ALU CI CISC CLC CLD CP CPU CU EP FCD FLOPS MA MEC MHz MIPS MO MOC MP RAM RISC ROM SC SMM SCMC SCMP UAL UC VLIW
Aritmetic/logic unit Circuitul integrat Complex Instruction Set Computer Circuitele logice combinaţionale Canal de legătură direct Calculator personal Central processing unit Control unit Elemente de procesare Forma canonică disjunctivă FLoating point Operations Per Second Memoria asociativă Memoria externă comună 1milion cicluri procesor pe secondă Million Instruction Per Second Memorie operativă Memorie operativă comună Memoria principală Random Acces Memory Reduced Instruction Set Computer Read-Only Memory Sistemă de calcul Sisteme mutiprocesor matriciale Sistem de calcul multicalculator Sistem de calcul multiprocesor Unitatea aritmetico-logică Unitatea de control Very Long Instruction Word
142
Bibliografie 1. [La1]. Ларионов..., „Вычислительные комплексы, системы и сети”, Ленинград 1987. 2. [Do1]. Dobrescu…, “Sisteme de calcul şi operare”, Bucureşti 1995, 2000, 2001. 3. [Go1]. Головкин “Параллельные вычислительные системы”, Наука 1980. 4. [Bo1]. Ion Bolun, Ion Covalenco „Bazele informaticii aplicate”, ASEM 2001, pag 1-150. 5. [Pi1]. Пятибратов, “Вычислительные машины, системы и сети”, Москва 1991. 6. [Bo2]. Ion Bolun, „Iniţiere în reţele Internet”, Chişinău 1997. 7. [Ta1]. Tanenbaum „Organizarea structurală a calculatoarelor”, Agora 1999. 8. [Ha1]. Хамахер, Вранешич, Заки, “Организация ЭВМ. 5-е издание”, 2003. 9. [Ha2]. Hauses, “Computer architectures and Organization”, USA, MC Grow-Hill Book, 1978. 10. [Ta2]. Таненбаум, “Архитектура компьютера. 4-е издание”, 2003. 11. [Ol1]. Олифер В., Олифер Н., Компьютерные сети. Учебник для вузов. Санкт-Петербург: Издательский дом «Питер», 2002. 12. [An1]. Andronatiev V. Cu privire la analiza productivităţii sistemelor de calcul. În: Simpozionul internaţional al tinerilor cercetători, 18-19 aprilie, 2003, Ediţia I, Chişinău: Editura ASEM, 2003, p. 374. 13. [M1]. Мюллер. “Модернизация и ремонт ноутбуков”, 2006. 14. [Ul1]. Ульянов М.В. АРХИТЕКТУРЫ ПРОЦЕССОРОВ. Учебное пособие. Москва 2002. 15. [ht1]. http://www.citforum.ru/hardware/app_kis/ glava_6.shtml 16. [ht2]. http://www.comphouse.ru/art2_4.htm 143
17. [Si2]. Silver M. A., Federica Troni, Mark A. Margevicius. Desktop Total Cost of Ownership. Gartner Research, 2007. www.gartner.com/ DisplayDocument?ref= g_search&id= 588719&subref= browse (citat 14.05.2007). 18. [Tu1]. Tucker C. , Nunno T. Spend Less, Get More: 25 IT Cost Containment Techniques. Gartner Research, 2007. http://www.gartner.com/ DisplayDocument? ref= g_search&id= 497421&subref= simplesearch (citat 5.06.2007). 19. [Na1]. F. NASTASE, R. ZOTA. Sisteme de calcul si operare. http://www. ase.ro. 20. [Vo]. Воеводин В., Воеводин Вл., «Параллельные вычисления». Санкт-Петербург. Издательство БХВПетербург, 2002. 21. [Wi1]. http://wikipedia.org. 22. [Bu1]. Букатов, Дацюк, Жегуло, “Программирование многопроцессорных вычислительных систем”. Ростов-наДону, 2003. 23. [ht3]. http://www.nas.nasa.gov/Resources/Systems/ schirra.html. 24. [ht4]. http://www.nas.nasa.gov/Resources/Applications/ applications.html. 25. [ht5]. https://asc.llnl.gov/computing_resources/bluegenel/ configuration.html. Literatura recomandată 26. Sima…, “Advanced Computer architectures”, Addison Wesley Longman 1997. 27. Столинг „Структурная организация и архитектура компьютерных систем”, Москва 2002. 28. Hutchinson..., „Computers. The user perspective”, Richard D. Irwin, INC. 1990.
144