NIAC, prescurtat de la Electronic Numerical Integrator And Computer[1][2] (Calculator și Integrator Electronic Numeric), a fost primul calculator electronic de uz general. Era un calculator numeric (digital), Turing-complet, capabil de a fi reprogramat pentru a rezolva o gamă largă de probleme calculatorii.[3] ENIAC a fost proiectat și construit pentru a calculat tabele balistice pentru laboratorul de cercetări balistice armatei americane.
Când a fost anunțată terminarea sa în 1946, presa l-a etichetat drept un „creier uriaș”. Avea o viteză de calcul de o mie de ori mai mari decât mașinile electromecanice, salt în domeniul puterii de calcul neegalat de atunci de nicio mașină. Această putere matematică, împreună cu programabilitatea sa, a satisfăcut necesitățile oamenilor de știință și industriașilor. Inventatorii ENIAC au promovat răspândirea ideilor lor printr-o serie de cursuri de arhitectura calculatoarelor.
Proiectul și construcția ENIAC au fost finanțate de armata SUA în timpul celui de-al doilea război mondial. Contractul de construcție a fost semnat la 5 iunie 1943, iar lucrul a început la Școala Moore de Inginerie Electrică din Universitatea Pennsylvania din luna următoare, sub numele de cod „Proiectul PX”. Mașina terminată a fost arătată la 14 februarie 1946 la Universitatea Pennsylvania, ea costând 500.000 de dolari. A fost primită oficial de U.S. Army Ordnance Corps în iulie 1946. ENIAC a fost oprit la 9 noiembrie 1946 pentru o extindere de memorie și alte modificări și a fost transferat la Aberdeen Proving Ground, Maryland, în 1947. Acolo, la 29 iulie 1947, a fost pornit și a funcționat în permanență până la 2 octombrie 1955, ora 11:45 seara.
ENIAC a fost conceput și proiectat de John Mauchly și J. Presper Eckert de la Universitatea Pennsylvania.[4] Echipa de ingineri proiectanți era formată, printre alții, de Bob Shaw (tablouri funcționale), Chuan Chu (împărțire/rădăcină pătrată), Kite Sharpless (programator principal), Arthur Burks (înmulțire), Harry Huskey(citire/imprimare), Jack Davis (acumulatori) și Iredell Eachus Jr.[5]
Cuprins
[arată]
Structură și performanțe[modificare | modificare sursă]
ENIAC era un calculator modular, compus din panouri separate care efectuau diferite funcții. Douăzeci de astfel de module reprezentau acumulatorii, pe care se puteau efectua adunări și scăderi și care puteau stoca un număr de zece cifre zecimale. Între aceste unități, numerele erau transfrate prin mai multe magistrale generice. Pentru a funcționa la viteză mare, panourile trebuia să trimită și să primească numere, să calculeze, să salveze răspunsul și să declanșeze următoarea operație — toate fără componente în mișcare. Cheia versatilității sale era capabilitatea de ramificație; ENIAC putea declanșa operații diferite în funcție de semnul unui răspuns calculat.
Pe lângă viteză, cel mai remarcabil fapt la ENIAC era dimensiunea și complexitatea sa. ENIAC avea 17.468 de tuburi electronice, 7.200 diode cu cristal, 1.500relee, 70.000 de rezistoare, 10.000 de condensatoare și aproximativ 5 milioane de conexiuni lipite manual. Cântărea 27 t, și avea aproximativ 2,6 m pe 0,9 m pe 26 m), ocupa 63 m², și consuma 150 kW.[6] Intrările de date se făceau printr-un cititor de cartele perforate IBM și un perforator de cartele IBM reprezenta principalul dispozitiv de ieșire. Aceste cartele se puteau folosi pentru a produce separat rezultate tipărite cu ajutorul unui dispozitiv IBM cum ar fi IBM 405.
ENIAC utiliza numărătoare ciclice cu zece poziții pentru a stoca numerele; fiecare cifră folosea 36 de tuburi electronice, din care 10 erau triodele duale ce compuneau bistabilii numărătorului. Operațiile aritmetice se efectuau prin numărarea impulsurilor în numărătoarele ciclice și generarea de impulsuri de transport în cazul în care numărătorul aflat la valoarea maximă era incrementat și se reseta la 0, ideea fiind cea de a emula prin electronică funcționarea roților cu numere ale unui sumator mecanic. ENIAC avea douăzeci de acumulatori pe zece cifre cu semn care utilizau reprezentarea în complement față de zece și puteau efectua 5000 de adunări sau scăderi simple între oricare dintre ele și sursă (de exemplu, un alt acumulator, sau o constantă) pe secundă. Se puteau conecta mai mulți acumulatori simultan, astfel că viteza maximă de funcționare putea fi mai mare datorită funcționării în paralel.
Se putea cabla transportul unui acumulator la un alt acumulator pentru a efectua calcule cu dublă precizie, dar limitările circuitului de sincronizare al transportului împiedica legarea mai multor acumulatori pentru mai multă precizie. ENIAC utiliza patru acumulatori controlați de o unitate specială de înmulțire, pentru a efectua 385 de înmulțiri pe secundă; de asemenea, folosea cinci acumulatori, controlați de o unitate de împărțire și extragere de radicali, pentru a efectua până la patruzeci de împărțiri pe secundă sau trei extrageri de radicali pe secundă.
Celelalte nouă unități ale ENIAC erau Unitatea de integrare (care pornea și oprea mașina), Unitatea de ciclare (folosită pentru sincronizarea celorlalte unități), Programatorul Master (care controla secvențierea buclelor), Cititorul (care controla un cititor de cartele perforate IBM), Imprimatorul (care controla perforatorul de cartele), Transmițătorul de constante, și trei Tablouri funcționale.

Ciclul de bază al mașinii era de 200 microsecunde (20 cicluri ale ceasului de 100 kHz al unității de ciclare), sau 5000 de cicluri pe secundă pentru operațiile pe numere de 10 cifre. Într-unul din aceste cicluri, ENIAC putea să scrie un număr într-un registru, să citească un număr dintr-un registru, să adune sau să scadă două numere. O înmulțire a unui număr de 10 cifre cu un număr de d cifre (pentru d până la 10) dura d+4 cicluri, astfel că o înmulțire a două numere pe 10 cifre dura 14 cicluri, sau 2800 microsecunde—o viteză de 357 pe secundă. Dacă un număr avea mai puțin de 10 cifre, înmulțirea se realiza mai repede. Împărțirea și radicalul durau 13(d+1) cicluri, unde d este numărul de cifre al rezultatului (câtul sau radicalul). Deci, o împărțire sau un radical durau 143 de cicluri, sau 28.600 μs—o viteză de 35 pe secundă. (Wilkes 1956:20[4] arată că o împărțire cu un cât de 10 cifre dura 6 milisecunde.) Dacă rezultatul avea mai puțin de zece cifre, se obținea mai repede.