Arhitectura von Neumann ( modelul von Neumann , arhitectura Princeton ) este un principiu binecunoscut al stocării în comun a comenzilor și datelor în memoria computerului . Mașinile de calcul de acest fel sunt adesea menționate prin termenul „mașină von Neumann”, dar corespondența acestor concepte nu este întotdeauna clară. În general, când oamenii vorbesc despre arhitectura von Neumann, se referă la principiul stocării datelor și instrucțiunilor în aceeași memorie.
Bazele doctrinei arhitecturii computerelor au fost puse de John von Neumann în 1944, când s-a alăturat la crearea primului computer cu tub vid ENIAC din lume . În timp ce lucra la ENIAC la Institutul Moore de la Universitatea din Pennsylvania, în timpul numeroaselor discuții dintre von Neumann și colegii săi John William Mauchly , John Eckert , Herman Goldstein și Arthur Burks, a apărut ideea unei mașini mai avansate numită EDVAC . Lucrările de cercetare privind EDVAC au continuat în paralel cu construcția ENIAC.
În martie 1945, principiile arhitecturii logice au fost oficializate într-un document numit „ Primul proiect de raport asupra EDVAC ” - un raport pentru Laboratorul de Balistică al Armatei SUA, pe ai cărui bani s-a realizat construcția ENIAC și dezvoltarea EDVAC . Raportul, deoarece era doar o schiță, nu era destinat publicării, ci doar distribuției în cadrul grupului, dar Herman Goldstein , curatorul proiectului din partea Armatei SUA, a reprodus această lucrare științifică și a trimis-o într-un cerc larg. a oamenilor de știință pentru revizuire. Întrucât doar numele lui von Neumann [1] apărea pe prima pagină a documentului , cei care au citit documentul au avut falsa impresie că el este autorul tuturor ideilor prezentate în lucrare. Documentul a oferit suficiente informații pentru cei care l-au citit pentru a-și construi computerele precum EDVAC pe aceleași principii și cu aceeași arhitectură, care în cele din urmă a devenit cunoscută sub numele de „arhitectura von Neumann”.
După sfârșitul celui de-al Doilea Război Mondial și finalizarea lucrărilor la ENIAC în februarie 1946, echipa de ingineri și oameni de știință s-a despărțit, John Mauchly , John Eckert a decis să intre în afaceri și să creeze computere pe o bază comercială. Von Neumann, Goldstein și Burks s-au mutat la Institutul pentru Studii Avansate , unde au decis să-și construiască computerul „ mașină IAS ” asemănător EDVAC și să-l folosească pentru activități de cercetare. În iunie 1946, ei [2] [3] și-au subliniat principiile pentru construirea computerelor în articolul acum clasic „Considerarea preliminară a designului logic al unui dispozitiv electronic de calcul” [4] [5] [6] . De atunci a trecut mai bine de jumătate de secol, dar prevederile prezentate în acesta rămân actuale și astăzi. Articolul confirmă în mod convingător utilizarea sistemului binar pentru a reprezenta numere și, de fapt, mai devreme toate computerele stocau numerele procesate în formă zecimală. Autorii au demonstrat avantajele sistemului binar pentru implementarea tehnică, comoditatea și ușurința de a efectua operații aritmetice și logice în acesta. În viitor, computerele au început să prelucreze tipuri de informații non-numerice - textuale, grafice, sonore și altele, dar codarea datelor binare formează încă baza informațională a oricărui computer modern.
O altă idee revoluționară, a cărei importanță cu greu poate fi supraestimată, este principiul „programului stocat”. Inițial, programul a fost setat prin instalarea de jumperi pe un panou de corecție special. Aceasta a fost o sarcină foarte consumatoare de timp: de exemplu, a fost nevoie de câteva zile pentru a schimba programul mașinii ENIAC, în timp ce calculul real nu putea dura mai mult de câteva minute - lămpile, dintre care erau un număr mare, au eșuat . Totuși, programul poate fi stocat și ca un set de zerouri și unu și în aceeași memorie cu numerele pe care le procesează. Absența unei diferențe fundamentale între program și date a făcut posibil ca computerul însuși să formeze un program pentru el însuși în conformitate cu rezultatele calculelor.
Prezența unui anumit set de comenzi și programe executabile a fost o trăsătură caracteristică primelor sisteme informatice. Astăzi, un design similar este utilizat pentru a simplifica proiectarea unui dispozitiv de calcul. Deci, calculatoarele desktop sunt, în principiu, dispozitive cu un set fix de programe executabile. Ele pot fi folosite pentru calcule matematice , dar aproape imposibil de utilizat pentru procesarea de text și jocuri pe calculator , pentru vizualizarea imaginilor grafice sau videoclipurilor . Schimbarea firmware-ului pentru aceste tipuri de dispozitive necesită o reproiectare aproape completă și, în majoritatea cazurilor, este imposibilă. Cu toate acestea, reprogramarea sistemelor informatice timpurii a fost încă efectuată, cu toate acestea, a necesitat o cantitate imensă de muncă manuală pentru a pregăti noi documentații , a re-comuta și a reconstrui blocuri și dispozitive etc.
Ceea ce a schimbat totul a fost ideea de a stoca programe de calculator în memoria partajată. Până în momentul în care a fost introdus, utilizarea arhitecturilor bazate pe seturi de instrucțiuni executabile și reprezentarea unui proces de calcul ca proces de executare a instrucțiunilor scrise într-un program, au crescut foarte mult flexibilitatea sistemelor de calcul în ceea ce privește prelucrarea datelor. Aceeași abordare a luării în considerare a datelor și a instrucțiunilor a făcut ușoară schimbarea programelor în sine.
Comenzile și datele sunt stocate în aceeași memorie și nu se pot distinge din exterior în memorie. Ele pot fi recunoscute doar după modul în care sunt folosite; adică aceeași valoare dintr-o celulă de memorie poate fi folosită atât ca date, cât și ca comandă, și ca adresă, în funcție doar de modul în care este accesată. Acest lucru vă permite să efectuați aceleași operații asupra comenzilor ca și asupra numerelor și, în consecință, deschide o serie de posibilități . Deci, prin schimbarea ciclică a părții de adresă a comenzii, este posibil să se ofere acces la elementele succesive ale matricei de date. Această tehnică se numește modificarea comenzii și nu este binevenită din punctul de vedere al programării moderne. Mai utilă este o altă consecință a principiului omogenității, în care instrucțiunile unui program pot fi primite ca urmare a execuției unui alt program. Această posibilitate stă la baza traducerii - traducerea textului programului dintr-o limbă de nivel înalt în limba unui anumit computer.
Principiul țintiriiDin punct de vedere structural, memoria principală este formată din celule numerotate, iar orice celulă este disponibilă procesorului în orice moment. Codurile binare de comenzi și date sunt împărțite în unități de informații, numite cuvinte, și stocate în celule de memorie, iar pentru a le accesa, se folosesc numerele celulelor - adrese corespunzătoare.
Principiul controlului programuluiToate calculele furnizate de algoritmul pentru rezolvarea problemei trebuie prezentate sub forma unui program format dintr-o succesiune de cuvinte de control - comenzi. Fiecare instrucțiune prescrie o operațiune din setul de operații implementate de computer. Comenzile programului sunt stocate în celulele de memorie secvențiale ale computerului și sunt executate într-o secvență naturală, adică în ordinea poziției lor în program. Dacă este necesar, cu ajutorul comenzilor speciale, această secvență poate fi schimbată. Decizia de modificare a ordinii de execuție a comenzilor programului se ia fie pe baza unei analize a rezultatelor calculelor anterioare, fie necondiționat.
Conform planului, primul computer construit conform arhitecturii von Neumann urma să fie EDVAC (Electronic Discrete Variable Automatic Computer) - unul dintre primele computere electronice. Spre deosebire de predecesorul său ENIAC , a fost mai degrabă un computer binar decât zecimal. La fel ca ENIAC, EDVAC a fost dezvoltat la Institutul Moore al Universității din Pennsylvania pentru Laboratorul de Cercetare Balistică al Armatei SUA de către o echipă de ingineri și oameni de știință condusă de John Presper Eckert și John William Mauchley cu ajutorul activ al unui matematician, totuși, până în 1951. , EDVAC nu a fost lansat din -din cauza dificultăților tehnice în realizarea memoriei fiabile a computerului și a dezacordurilor în cadrul echipei de dezvoltare. Alte institute de cercetare, familiarizându-se cu ENIAC și cu proiectul EDVAC, au reușit să rezolve aceste probleme mult mai devreme. Primele computere care au implementat principalele caracteristici ale arhitecturii von Neumann au fost:
În URSS, primul computer complet electronic apropiat de principiile lui von Neumann a fost MESM , construit de Lebedev (pe baza Institutului de Inginerie Electrică de la Kiev al Academiei de Științe a RSS Ucrainei ). MESM ca prototip a fost lansat pentru prima dată public pe 6 noiembrie 1950 și deja ca mașină cu drepturi depline a trecut testele de acceptare de stat pe 25 decembrie 1951.
Partajarea magistralei pentru memoria programului și memoria de date duce la un blocaj al arhitecturii von Neumann, și anume limitarea lățimii de bandă dintre procesor și memorie în comparație cu cantitatea de memorie. Deoarece memoria programului și memoria datelor nu pot fi accesate în același timp, lățimea de bandă de la procesor la memorie și viteza de memorie limitează semnificativ viteza procesorului - mult mai mult decât dacă programele și datele ar fi stocate în locuri diferite.
Această problemă este rezolvată prin îmbunătățirea sistemelor de stocare în cache , ceea ce, la rândul său, complică arhitectura sistemului și crește riscul erorilor secundare (de exemplu, problema coerenței memoriei ).
Termenul „gâtul de sticlă al arhitecturii von Neumann” a fost introdus de John Backus în 1977 în prelegerea sa „Poate fi eliberată programarea de stilul von Neumann?” , pe care a citit-o la prezentarea Premiului Turing [7] [8]
Oamenii de știință din SUA și Italia au anunțat în 2015 crearea unui prototip de procesor meme ( ing. memprocessor ) cu o arhitectură diferită de cea a lui von Neumann și posibilitatea de a-l folosi pentru a rezolva probleme NP -complete [9] [10] [ 11] .
Tehnologii de procesoare digitale | |||||||||
---|---|---|---|---|---|---|---|---|---|
Arhitectură | |||||||||
Arhitectura set de instrucțiuni | |||||||||
cuvânt mașină | |||||||||
Paralelism |
| ||||||||
Implementări | |||||||||
Componente | |||||||||
Gestionare a energiei |