A Standards Western Automatic Computer (SWAC) a korai elektronikus számítógépek egyik fontos, bár ma már kevéssé ismert szereplője volt. A gépet az Egyesült Államok National Bureau of Standards (NBS) – a mai National Institute of Standards and Technology (NIST) elődje – fejlesztette ki, és a Los Angeles-i Institute for Numerical Analysis (INA) keretében üzemeltette 1950. augusztus 17-i indulással. A SWAC különlegessége az volt, hogy nem kísérleti alkatrészek tesztpadjaként szolgált, hanem viszonylag „polcról levehető” (off-the-shelf) technológiákból építve egy ténylegesen használható, általános célú számítógépet kívánt megvalósítani.
Míg a NBS másik híres gépe, a SEAC (Standards Eastern Automatic Computer) kifejezetten új, kísérleti komponensek – például félvezető diódák – kipróbálására és értékelésére készült, addig a SWAC célja az volt, hogy a gyakorlatban is nagy mennyiségű numerikus számítást végezzen. Ez a kettősség – kelet-nyugat, SEAC–SWAC – jól mutatja, hogyan próbálta az NBS egyszerre előmozdítani a technológiai kísérletezést és a stabil, megbízható számítási infrastruktúra kiépítését.
A SWAC architektúrája: 37 bites szóhossz és vegyes memória
A SWAC egyik legérdekesebb sajátossága a 37 bites szóhossz volt. A korai gépeknél még nem létezett ipari szabvány a szóhosszra; a tervezők a matematikai igények, a hardver bonyolultsága és a memória-korlátok között kerestek kompromisszumot. A 37 bit elegendő pontosságot adott a numerikus számításokhoz, miközben a hardver még kezelhető maradt. A szóhosszhoz igazodott az utasításkészlet, a regiszterek és a tárolási formátum is.
A SWAC memóriaarchitektúrája két fő komponensre épült:
- Williams-csöves memória: ez egy módosított katódsugárcsöves (CRT) technológia volt, amely elektrostatikus elven tárolta a biteket. A SWAC esetében 256 szó kapacitású, gyors elérésű tárolót biztosított. A Williams-csőben a foszforréteg töltéseloszlása reprezentálta a biteket; a leolvasás és frissítés folyamatos „regenerálást” igényelt, hasonlóan a későbbi dinamikus memóriákhoz (DRAM), csak jóval primitívebb formában.
- Mágnesdob memória: a gép másodlagos, lassabb, de nagyobb kapacitású tárolója egy mágnesdob volt, 4 096 szó kapacitással. A mágnesdob egy forgó henger, amelynek felületén mágneses sávok futnak; a fejek fixen állnak, a dob forgása hozza a megfelelő szektorokat a fej alá. A hozzáférési idő így forgási késleltetéstől függött, ami nagyságrendekkel lassabb volt a Williams-csöves memóriánál, de jóval nagyobb tárterületet biztosított.
A két szintű memória – gyors, de kicsi Williams-cső, illetve lassú, de nagyobb mágnesdob – a mai cache–főmemória–háttértár hierarchia korai előfutárának tekinthető. A programozóknak és a rendszertervezőknek tudatosan kellett szervezniük az adatok és programrészek elhelyezését, hogy a kritikus részek a gyors tárolóban legyenek, míg a ritkábban használt adatok a dobon maradhattak.
Teljesítmény: 64 mikroszekundumos összeadás
A SWAC teljesítményét a kor mércéjével mérve kifejezetten jónak tartották. A dokumentált adatok szerint két operandus összeadását 64 mikroszekundum alatt végezte el. Ez nagyjából 15 625 összeadási műveletet jelent másodpercenként. A mai processzorokhoz képest ez elenyésző, de a korabeli vákuumcsöves technológiával, a hőtermeléssel, a megbízhatósági problémákkal és a bonyolult logikai áramkörökkel együtt ez komoly mérnöki teljesítmény volt.
A 37 bites szóhossz miatt a műveletek logikája is bonyolultabb volt, mint egy 16 vagy 32 bites rendszerben. A vákuumcsöves aritmetikai egység (ALU) több tucat, sőt több száz csőből állhatott, és a megbízhatóság érdekében a tervezőknek minimalizálniuk kellett a szükséges komponensek számát. A 64 mikroszekundumos összeadási idő tehát nemcsak a sebességet, hanem a megbízhatóság és a komplexitás közötti kompromisszumot is tükrözi.
Williams-cső: korai RAM a gyakorlatban
A Williams-csöves memória a SWAC egyik legfontosabb technikai eleme volt. Ezt a technológiát több korai gépben is használták (például a Manchester Mark 1-ben), de a SWAC esetében kifejezetten az volt a cél, hogy viszonylag kiforrott, már ismert megoldásként szolgáljon, ne pedig kísérleti újdonságként.

A Williams-cső működése röviden:
- A katódsugár a foszforrétegre rajzol „pontokat”, amelyek töltéseloszlása eltér a környezetüktől.
- Ezek a pontok reprezentálják a biteket (jellemzően a jelenlét/hiány, vagy a töltéskülönbség alapján).
- Egy érzékelő elektróda figyeli a visszaszórt elektronokat, így olvasható ki, hogy az adott pozícióban 0 vagy 1 található.
- A tárolt információ idővel elhalványul, ezért periodikusan frissíteni kell – ez a regenerálási ciklus.
A SWAC 256 szavas Williams-csöves memóriája a programok „forró” részeinek és a legfontosabb adatoknak adott helyet. A programozóknak gondosan kellett optimalizálniuk, hogy mi kerüljön ide, mivel a mágnesdobhoz képest nagyságrendekkel gyorsabb elérésről volt szó.
Mágnesdob: forgó memória és programozási trükkök
A 4 096 szavas mágnesdob a SWAC tartósabb, de lassabb memóriája volt. A dobmemória használata speciális programozási technikákat igényelt. A hozzáférési idő a dob forgási sebességétől és az adatok fizikai elhelyezkedésétől függött. Ha egy programrész vagy adat „rossz helyre” került, a processzor sok időt veszíthetett várakozással, amíg a megfelelő szektor a fej alá fordult.
Ezért a korabeli programozók gyakran alkalmaztak úgynevezett dob-optimalizálást: a program utasításait és adatait úgy helyezték el a dobon, hogy a végrehajtás sorrendje és a dob forgása minél jobban szinkronban legyen. Ez a fajta alacsony szintű optimalizáció ma már szinte elképzelhetetlen a magas szintű nyelvek és a komplex memóriakezelő rendszerek korában, de a SWAC-hoz hasonló gépeknél alapvető fontosságú volt a hatékony futás érdekében.
Gyakorlati felhasználás: Mersenne-prímek, kristályszerkezetek és differenciálegyenletek
A SWAC nemcsak technológiai demonstrátor volt, hanem valódi tudományos munkát végzett. A dokumentált felhasználási területek közé tartozott:
- Mersenne-prímek keresése: a Mersenne-prímek olyan prímszámok, amelyek a 2p − 1 alakot követik, ahol p maga is prím. Ezek keresése rendkívül számításigényes feladat, különösen nagy p esetén. A SWAC a maga idejében a világ leggyorsabb gépei közé tartozott, így alkalmas volt ilyen nagyméretű, iteratív számításokra. A szakirodalom szerint több korai nagy Mersenne-prím felfedezésében is szerepet játszottak NBS/NIST gépek; a SWAC konkrétan is részt vett ilyen keresésekben, bár az egyes prímekhez kötődő részletek esetében óvatosan kell fogalmazni, mert a különböző források nem mindig egyértelműek.
- Röntgen-kristallográfia: a kristályszerkezetek meghatározása röntgendiffrakciós adatokból tipikusan nagy mennyiségű numerikus számítást igényel (Fourier-transzformációk, mátrixműveletek, iteratív közelítések). A SWAC ilyen jellegű feladatokat is futtatott, segítve a kémiai és fizikai kutatásokat.
- Lineáris és differenciálegyenletek megoldása: a mérnöki és fizikai problémák jelentős része lineáris egyenletrendszerekre vagy differenciálegyenletekre vezethető vissza. A SWAC-ot kifejezetten numerikus analízisre szánták, így természetes volt, hogy ilyen feladatok széles körét futtatták rajta – a mátrixműveletektől kezdve a különféle numerikus integrálási és differenciálási eljárásokig.
A gép hosszú ideig, egészen 1967 decemberéig üzemelt. Ez a több mint másfél évtizedes üzemidő vákuumcsöves technológiával kifejezetten figyelemre méltó, és azt mutatja, hogy a SWAC nem csupán kísérleti prototípus volt, hanem tartósan használt, megbízható számítási eszköz.
SWAC és SEAC: két eltérő filozófia
A SWAC-ot gyakran a SEAC-cal együtt említik, mivel mindkettőt az NBS fejlesztette, de eltérő célokkal. A SEAC (Standards Eastern Automatic Computer) inkább kísérleti platform volt, amelyben új technológiákat – például félvezető diódákat – próbáltak ki, és amelynek egyik fő feladata az volt, hogy mércét adjon a jövőbeli számítógépek tervezéséhez.

A SWAC ezzel szemben „nyugati” párjaként a gyakorlatiasabb megközelítést képviselte: a cél a viszonylag elérhető, ismert technológiákból épített, stabil, nagy teljesítményű számítógép volt, amelyet konkrét tudományos és mérnöki problémák megoldására használnak. Ez a kettős stratégia – kísérleti platform és termelésre fogott számítógép – ma is ismerős lehet a kutatás-fejlesztés és az ipari alkalmazások világából.
Összehasonlítás más korai gépekkel
A SWAC-ot érdemes más, hasonló korszakbeli gépekkel is összevetni:
- ENIAC: az ENIAC korábbi, programozása kezdetben kapcsolótáblákkal történt, és nem tárolt programú gép volt. A SWAC már a tárolt program elvét követte, ami rugalmasabbá és hatékonyabbá tette.
- EDSAC: az EDSAC (Cambridge) szintén tárolt programú gép volt, de higanykésleltető-vonalas memóriát használt. A SWAC Williams-csöves megoldása más technológiai kompromisszumot képviselt: gyorsabb elérés, de bonyolultabb és érzékenyebb hardver.
- Manchester Mark 1: ez a gép is Williams-csöves memóriát használt, és a tárolt program elvének egyik első gyakorlati megvalósítása volt. A SWAC ebből a technológiai vonalból merített, de az NBS céljaihoz igazítva.
A SWAC tehát nem elszigetelt fejlesztés volt, hanem egy szélesebb technológiai ökoszisztéma része, amelyben a különböző laboratóriumok és intézetek eltérő megoldásokkal kísérleteztek a memória, az aritmetikai egységek és az architektúra terén.
Tanulságok a mai Linux- és nyílt forráskódú világ számára
Bár a SWAC és a mai Linux-alapú rendszerek között technikailag szinte áthidalhatatlan szakadék tátong, néhány alapelv mégis meglepően ismerős:
- Rétegezett memóriahierarchia: a gyors, de kicsi Williams-cső és a lassabb, de nagyobb mágnesdob viszonya a mai cache–RAM–SSD/HDD hierarchia korai előképe. A teljesítményoptimalizálás ma is nagyrészt azon múlik, mennyire sikerül a „forró” adatok és kódok számára a leggyorsabb tárolót biztosítani.
- Hardver–szoftver együtttervezés: a SWAC esetében a programozóknak mélyen érteniük kellett a hardver működését (dob-optimalizálás, memóriaelhelyezés). Ma a magas szintű nyelvek és az absztrakciók sokat elfednek ebből, de a teljesítménykritikus Linux-alkalmazásoknál (pl. HPC, adatbázisok, kernel-fejlesztés) továbbra is kulcsfontosságú a hardver ismerete.
- Speciális célú numerikus számítás: a SWAC-ot kifejezetten numerikus analízisre és tudományos feladatokra szánták. Ma a Linux a nagy teljesítményű számítástechnika (HPC) de facto szabványa, és a SWAC-hoz hasonlóan rengeteg numerikus feladatot futtat – csak éppen nagyságrendekkel nagyobb skálán.
Örökség és jövőbeli perspektívák
A SWAC 1967 decemberéig tartó üzemelése jól mutatja, hogy a korai, vákuumcsöves gépek is képesek voltak hosszú távon hasznos munkát végezni, ha megfelelően karbantartották őket. Bár a gép fizikailag már nem aktív, szellemi öröksége – a memóriahierarchia, a numerikus fókusz, a hardver–szoftver együttgondolkodás – ma is jelen van a modern számítástechnikában.
A jövő szempontjából a SWAC története arra emlékeztet, hogy a technológiai ugrások gyakran kísérleti és „termelésre fogott” rendszerek együtteséből születnek. Ahogy akkor a SEAC és a SWAC kiegészítették egymást, ma a kísérleti architektúrák (pl. RISC-V, speciális gyorsítók) és a stabil, széles körben használt platformok (pl. Linux-alapú szerverek, felhőinfrastruktúrák) együtt formálják a számítástechnika jövőjét.
A SWAC tehát nem csupán egy régi, fekete-fehér fotókon látható gép a UCLA laborjaiban, hanem egy fontos lépcsőfok a modern, nagy teljesítményű, nyílt forráskódú rendszerekhez vezető úton. A 37 bites szóhossz, a Williams-csöves memória és a mágnesdob ma már történelem, de az a mérnöki gondolkodás, amely ezeket a megoldásokat életre hívta, ma is ugyanúgy szükséges, akár egy Linux kernel optimalizálásáról, akár egy új architektúra támogatásáról van szó.

