Structură și performanțe

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 transferate 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.500 relee, 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 167 m², și consuma 150 kW. 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 Tabulating machine⁠(d).
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.