Arhitectura calculatorului - Computer architecture

Schema bloc a unui computer de bază cu CPU uniprocesor. Liniile negre indică fluxul de date, în timp ce liniile roșii indică fluxul de control. Săgețile indică direcția de curgere.

În ingineria computerelor , arhitectura computerelor este un set de reguli și metode care descriu funcționalitatea, organizarea și implementarea sistemelor informatice . Arhitectura unui sistem se referă la structura acestuia în ceea ce privește componentele specificate separat ale sistemului respectiv și relațiile lor.

Unele definiții ale arhitecturii o definesc ca descriind capacitățile și modelul de programare al unui computer, dar nu o implementare specială. În alte definiții, arhitectura computerului implică proiectarea arhitecturii setului de instrucțiuni, proiectarea microarhitecturii , proiectarea logică și implementarea .

Istorie

Prima arhitectură computerizată documentată a fost în corespondența dintre Charles Babbage și Ada Lovelace , descriind motorul analitic . Când a construit computerul Z1 în 1936, Konrad Zuse a descris în două cereri de brevet pentru proiectele sale viitoare că instrucțiunile mașinii ar putea fi stocate în același spațiu utilizat pentru date, adică conceptul de program stocat . Alte două exemple timpurii și importante sunt:

Termenul „arhitectură” din literatura de informatică poate fi urmărit la lucrările lui Lyle R. Johnson și Frederick P. Brooks, Jr. , membri ai departamentului de Organizare a mașinilor din principalul centru de cercetare IBM în 1959. Johnson a avut ocazia să scrie un proprietar comunicare de cercetare despre Stretch , un supercomputer dezvoltat de IBM pentru Los Alamos National Laboratory (pe atunci cunoscut sub numele de Los Alamos Scientific Laboratory). Pentru a descrie nivelul de detaliu pentru discutarea computerului frumos înfrumusețat, el a menționat că descrierea sa de formate, tipuri de instrucțiuni, parametri hardware și îmbunătățiri ale vitezei se afla la nivelul „arhitecturii sistemului”, un termen care părea mai util decât „organizarea mașinii” ”.

Ulterior, Brooks, un designer Stretch, a deschis capitolul 2 al unei cărți numită Planificarea unui sistem computerizat: Project Stretch afirmând: „Arhitectura computerelor, ca și alte arhitecturi, este arta de a determina nevoile utilizatorului unei structuri și apoi de a proiecta să satisfacă aceste nevoi cât mai eficient posibil în cadrul constrângerilor economice și tehnologice. ”

Brooks a continuat să ajute la dezvoltarea liniei de computere IBM System / 360 (numită acum IBM zSeries ), în care „arhitectura” a devenit un substantiv care definește „ceea ce trebuie să știe utilizatorul”. Mai târziu, utilizatorii de computere au ajuns să folosească termenul în multe moduri mai puțin explicite.

Cele mai vechi arhitecturi de calculatoare au fost proiectate pe hârtie și apoi direct integrate în forma hardware finală. Mai târziu, prototipurile arhitecturii computerelor au fost construite fizic sub forma unui computer tranzistor – logică tranzistor (TTL) - cum ar fi prototipurile modelului 6800 și PA-RISC - testate și modificate, înainte de a se angaja la forma hardware finală. Începând cu anii 1990, noile arhitecturi de computere sunt de obicei „construite”, testate și modificate - în interiorul altor arhitecturi de calculatoare într-un simulator de arhitectură de computer ; sau în interiorul unui FPGA ca microprocesor moale ; sau ambele - înainte de a vă angaja în formularul hardware final.

Subcategorii

Disciplina arhitecturii computerelor are trei subcategorii principale:

Există alte tehnologii în arhitectura computerelor. Următoarele tehnologii sunt utilizate în companii mai mari precum Intel și au fost estimate în 2002 pentru 1% din totalul arhitecturii computerelor:

  • Macroarhitectura : straturi arhitecturale mai abstracte decât microarhitectura
  • Arhitectura setului de instrucțiuni de asamblare : un asamblator inteligent poate converti un limbaj de asamblare abstract comun pentru un grup de mașini într-un limbaj de mașină ușor diferit pentru diferite implementări .
  • Macroarhitectură vizibilă de programator : instrumentele de limbaj la nivel superior, cum ar fi compilatoarele, pot defini o interfață sau un contract coerent pentru programatorii care le utilizează, abstractizând diferențele dintre ISA, UISA și microarhitecturi subiacente . De exemplu, standardele C , C ++ sau Java definesc diferite macroarhitecturi vizibile de programator.
  • Microcod : microcod este un software care traduce instrucțiuni pentru a rula pe un cip. Acționează ca un înveliș în jurul hardware-ului, prezentând o versiune preferată a interfeței setului de instrucțiuni hardware. Această facilitate de traducere a instrucțiunilor oferă designerilor de cipuri opțiuni flexibile: de ex. 1. O nouă versiune îmbunătățită a cipului poate utiliza microcodul pentru a prezenta exact același set de instrucțiuni ca vechea versiune a cipului, astfel încât toate software-urile care vizează acel set de instrucțiuni vor rula pe noul cip fără având nevoie de schimbări. De ex. 2. Microcodul poate prezenta o varietate de seturi de instrucțiuni pentru același cip de bază, permițându-i să ruleze o varietate mai largă de software.
  • UISA : User Instruction Set Architecture, se referă la unul dintre cele trei subseturi ale instrucțiunilor CPU RISC furnizate de procesoarele PowerPC RISC. Subsetul UISA sunt acele instrucțiuni RISC de interes pentru dezvoltatorii de aplicații. Celelalte două subseturi sunt instrucțiunile VEA (Virtual Environment Architecture) utilizate de dezvoltatorii de sisteme de virtualizare și OEA (Operating Environment Architecture) utilizate de dezvoltatorii de sisteme de operare.
  • Arhitectura pin : Funcțiile hardware pe care un microprocesor ar trebui să le ofere unei platforme hardware, de ex. Pinii x86 A20M, FERR / IGNNE sau FLUSH. De asemenea, mesajele pe care procesorul ar trebui să le emită, astfel încât cache-urile externe să poată fi invalidate (golite). Funcțiile arhitecturii pinului sunt mai flexibile decât funcțiile ISA, deoarece hardware-ul extern se poate adapta la noi codificări sau poate trece de la un pin la un mesaj. Termenul „arhitectură” se potrivește, deoarece funcțiile trebuie furnizate pentru sisteme compatibile, chiar dacă se modifică metoda detaliată.

Roluri

Definiție

Arhitectura computerelor este preocupată de echilibrarea performanței, eficienței, costurilor și fiabilității unui sistem de calculatoare. Cazul arhitecturii setului de instrucțiuni poate fi folosit pentru a ilustra echilibrul acestor factori concurenți. Seturi de instrucțiuni mai complexe permit programatorilor să scrie programe mai eficiente din punct de vedere spațial, deoarece o singură instrucțiune poate codifica o abstractizare de nivel superior (cum ar fi instrucțiunea buclă x86). Cu toate acestea, instrucțiunile mai lungi și mai complexe durează mai mult pentru decodarea procesorului și pot fi mai costisitoare pentru a fi implementate eficient. Complexitatea crescută a unui set mare de instrucțiuni creează, de asemenea, mai mult spațiu pentru fiabilitate atunci când instrucțiunile interacționează în moduri neașteptate.

Implementarea implică proiectarea, ambalarea, alimentarea și răcirea circuitelor integrate. Optimizarea proiectării necesită familiarizarea cu compilatoarele, sistemele de operare la proiectarea logică și ambalarea.

Arhitectura setului de instrucțiuni

O arhitectură de set de instrucțiuni (ISA) este interfața dintre software-ul și hardware-ul computerului și, de asemenea, poate fi privită ca vizualizarea programatorului asupra mașinii. Computerele nu înțeleg limbaje de programare la nivel înalt, cum ar fi Java, C ++ sau majoritatea limbajelor de programare utilizate. Un procesor înțelege doar instrucțiunile codate într-o manieră numerică, de obicei ca numere binare . Instrumentele software, cum ar fi compilatoarele , traduc acele limbaje de nivel înalt în instrucțiuni pe care procesorul le poate înțelege.

Pe lângă instrucțiuni, ISA definește elementele din computer care sunt disponibile pentru un program - de exemplu, tipuri de date , registre , moduri de adresare și memorie. Instrucțiunile localizează aceste elemente disponibile cu indexuri de registre (sau nume) și moduri de adresare a memoriei.

ISA-ul unui computer este de obicei descris într-un mic manual de instrucțiuni, care descrie modul în care sunt codificate instrucțiunile. De asemenea, poate defini nume scurte (vag) mnemonice pentru instrucțiuni. Numele pot fi recunoscute de un instrument de dezvoltare software numit asamblor . Un asamblator este un program de computer care traduce o formă lizibilă de către om a ISA într-o formă care poate fi citită de computer. Dezasamblatoarele sunt, de asemenea, disponibile pe scară largă, de obicei în depanatoare și programe software pentru a izola și corecta defecțiunile din programele binare de computer.

ISA variază în ceea ce privește calitatea și completitudinea. Un compromis ISA bun între comoditatea programatorului (cât de ușor este de înțeles codul), dimensiunea codului (cât de mult cod este necesar pentru a face o acțiune specifică), costul computerului pentru interpretarea instrucțiunilor (mai multă complexitate înseamnă mai mult hardware necesar pentru decodificați și executați instrucțiunile) și viteza computerului (cu hardware de decodare mai complex vine timpul de decodare mai lung). Organizarea memoriei definește modul în care instrucțiunile interacționează cu memoria și modul în care memoria interacționează cu ea însăși.

În timpul emulării de proiectare , emulatoarele pot rula programe scrise într-un set de instrucțiuni propus. Emulatoarele moderne pot măsura dimensiunea, costul și viteza pentru a determina dacă un anumit ISA își îndeplinește obiectivele.

Organizarea computerelor

Organizarea computerelor ajută la optimizarea produselor bazate pe performanță. De exemplu, inginerii software trebuie să cunoască puterea de procesare a procesoarelor. Este posibil să fie nevoie să optimizeze software-ul pentru a obține cea mai bună performanță la cel mai mic preț. Acest lucru poate necesita o analiză destul de detaliată a organizării computerului. De exemplu, într-un card SD, proiectanții ar putea avea nevoie să aranjeze cardul astfel încât cele mai multe date să poată fi procesate în cel mai rapid mod posibil.

Organizarea computerelor ajută, de asemenea, la planificarea selecției unui procesor pentru un anumit proiect. Proiectele multimedia pot avea nevoie de acces la date foarte rapid, în timp ce mașinile virtuale pot avea nevoie de întreruperi rapide. Uneori, anumite sarcini au nevoie de componente suplimentare. De exemplu, un computer capabil să ruleze o mașină virtuală are nevoie de hardware de memorie virtuală, astfel încât memoria diferitelor computere virtuale să poată fi păstrată separată. Organizarea și caracteristicile computerului afectează, de asemenea, consumul de energie și costurile procesorului.

Implementare

Odată ce un set de instrucțiuni și micro-arhitectura au fost proiectate, trebuie dezvoltată o mașină practică. Acest proces de proiectare se numește implementare . Implementarea nu este de obicei considerată proiectare arhitecturală, ci mai degrabă inginerie de proiectare hardware . Implementarea poate fi împărțită în mai mulți pași:

  • Implementarea logică proiectează circuitele necesare la nivel de poartă logică .
  • Punerea în aplicare a circuitului face tranzistor modele de nivelul doi elemente de bază ( de exemplu, porți, multiplexoare , clanțe ) , precum și a unor blocuri mai mari ( UMA , cache - uri etc.) care pot fi puse în aplicare la nivel logic poarta, sau chiar la nivel fizic dacă designul o cere.
  • Implementarea fizică atrage circuite fizice. Componentele circuitului diferite sunt plasate într - un cip floorplan sau pe o tablă și sunt create firele de legătură le.
  • Validarea proiectării testează computerul în ansamblu pentru a vedea dacă funcționează în toate situațiile și toate momentele. Odată ce începe procesul de validare a proiectării, proiectarea la nivel logic este testată folosind emulatoare logice. Cu toate acestea, acest lucru este de obicei prea lent pentru a rula un test realist. Deci, după efectuarea corecțiilor pe baza primului test, prototipurile sunt construite folosind Field-Programmable Gate-Arrays ( FPGA ). Majoritatea proiectelor hobby se opresc în această etapă. Ultimul pas este testarea prototipurilor de circuite integrate, care pot necesita mai multe reproiectări.

Pentru procesoare , întregul proces de implementare este organizat diferit și este adesea denumit design CPU .

Proiectează obiective

Forma exactă a unui sistem informatic depinde de constrângeri și obiective. Arhitecturile computerelor schimbă de obicei standardele, puterea versus performanță, costul, capacitatea memoriei, latența (latența este cantitatea de timp necesară pentru ca informațiile de la un nod să se deplaseze la sursă) și prin transfer. Uneori, alte considerații, cum ar fi caracteristicile, dimensiunea, greutatea, fiabilitatea și extensibilitatea sunt, de asemenea, factori.

Cea mai obișnuită schemă face o analiză aprofundată a puterii și descrie cum să mențină consumul de energie scăzut, menținând în același timp performanțe adecvate.

Performanţă

Performanța modernă a computerului este adesea descrisă în instrucțiunile pe ciclu (IPC), care măsoară eficiența arhitecturii la orice frecvență de ceas; o rată IPC mai rapidă înseamnă că computerul este mai rapid. Computerele mai vechi aveau un număr de IPC de până la 0,1, în timp ce procesoarele moderne ajung cu ușurință aproape de 1. Procesoarele suprascalare pot ajunge la trei până la cinci IPC executând mai multe instrucțiuni pe ciclu de ceas.

Numărarea instrucțiunilor în limbajul mașinii ar fi înșelătoare, deoarece acestea pot face cantități diferite de muncă în diferite ISA. „Instrucțiunea” din măsurătorile standard nu este un număr al instrucțiunilor ISA în limbajul mașinii, ci o unitate de măsură, de obicei bazată pe viteza arhitecturii computerului VAX .

Mulți oameni obișnuiau să măsoare viteza unui computer în funcție de rata de ceas (de obicei în MHz sau GHz). Aceasta se referă la ciclurile pe secundă ale ceasului principal al procesorului. Cu toate acestea, această valoare este oarecum înșelătoare, deoarece o mașină cu o rată de ceas mai mare poate să nu aibă neapărat o performanță mai mare. Ca urmare, producătorii s-au îndepărtat de viteza ceasului ca măsură a performanței.

Alți factori influențează viteza, cum ar fi amestecul de unități funcționale , viteza magistralei , memoria disponibilă și tipul și ordinea instrucțiunilor din programe.

Există două tipuri principale de viteză: latența și randamentul. Latența este timpul dintre începutul unui proces și finalizarea acestuia. Randamentul este cantitatea de muncă efectuată pe unitate de timp. Latența de întrerupere este timpul maxim de răspuns garantat al sistemului la un eveniment electronic (cum ar fi atunci când unitatea de disc termină de mutat unele date).

Performanța este afectată de o gamă foarte largă de opțiuni de proiectare - de exemplu, canalizarea unui procesor înrăutățește de obicei latența, dar îmbunătățește randamentul. Computerele care controlează utilajele au nevoie de obicei de latențe de întrerupere reduse. Aceste computere funcționează într-un mediu în timp real și eșuează dacă o operațiune nu este finalizată într-un interval de timp specificat. De exemplu, frânele antiblocare controlate de computer trebuie să înceapă frânarea într-o perioadă de timp previzibilă și limitată după ce se simte pedala de frână sau altfel se va produce defectarea frânei.

Benchmarking-ul ia în considerare toți acești factori prin măsurarea timpului pe care un computer îl trece printr-o serie de programe de testare. Deși evaluarea comparativă arată punctele forte, nu ar trebui să fie modul în care alegeți un computer. Adesea mașinile măsurate se împart pe diferite măsuri. De exemplu, un sistem ar putea gestiona rapid aplicațiile științifice, în timp ce altul ar putea reda jocurile video mai ușor. În plus, proiectanții pot viza și adăuga caracteristici speciale produselor lor, prin hardware sau software, care permit un anumit parametru de referință să se execute rapid, dar nu oferă avantaje similare sarcinilor generale.

Eficiență energetică

Eficiența energiei este o altă măsură importantă în computerele moderne. O eficiență energetică mai mare poate fi adesea tranzacționată pentru o viteză mai mică sau un cost mai mare. Măsurarea tipică atunci când se referă la consumul de energie în arhitectura computerului este MIPS / W (milioane de instrucțiuni pe secundă pe watt).

Circuitele moderne au o putere mai mică necesară pe tranzistor, pe măsură ce crește numărul de tranzistoare pe cip. Acest lucru se datorează faptului că fiecare tranzistor care este introdus într-un nou cip necesită propria sursă de alimentare și necesită construirea de noi căi pentru alimentarea acestuia. Cu toate acestea, numărul de tranzistoare pe cip începe să crească într-un ritm mai lent. Prin urmare, eficiența energiei începe să devină la fel de importantă, dacă nu chiar mai importantă decât montarea tot mai multor tranzistoare într-un singur cip. Proiectele recente ale procesorului au arătat acest accent deoarece pun mai mult accent pe eficiența energiei, mai degrabă decât să înghesuie cât mai mulți tranzistori într-un singur cip posibil. În lumea computerelor încorporate, eficiența energiei a fost mult timp un obiectiv important alături de capacitate și latență.

Schimbări ale cererii pieței

Creșterile frecvenței ceasului au crescut mai lent în ultimii ani, comparativ cu îmbunătățirile de reducere a puterii. Acest lucru a fost determinat de sfârșitul legii lui Moore și de cererea pentru o durată mai mare de viață a bateriei și reduceri de dimensiuni pentru tehnologia mobilă. Această schimbare a focalizării de la rate de ceas mai mari la consum de energie și miniaturizare poate fi demonstrată de reducerile semnificative ale consumului de energie, de până la 50%, care au fost raportate de Intel în lansarea microarhitecturii Haswell ; unde au scăzut valoarea de referință a consumului de energie de la 30 la 40 de wați până la 10-20 wați. Comparând acest lucru cu creșterea vitezei de procesare de la 3 GHz la 4 GHz (2002-2006), se poate observa că accentul în cercetare și dezvoltare se îndepărtează de frecvența ceasului și se îndreaptă către consumul de energie mai puțin și ocuparea mai puțin spațiu.

Vezi si

Referințe

Surse

linkuri externe