IBM 650 Magnetic Drum Calculator

Source: http://www.columbia.edu/cu/computinghistory/650.html


Foto: US Army Anniston Ordnance Depot, från BRL Report 1115, 1961 – klicka på bilden för att förstora.

IBM 650 Magnetic Drum Data Processing Machine tillkännagavs den 2 juli 1953 (som "Magnetic Drum Calculator", eller MDC), men levererades inte förrän i december 1954 (samma tid som NORC ) . Huvuddesigner: Frank Hamilton , som också hade designat ASCC och SSEC . Två IBM 650 installerades vid IBM Watson Scientific Computing Laboratory vid Columbia University, 612 West 116th Street , med början i augusti 1955.

IBM hänvisar ibland till 650 som sin första dator, även om den är föregått av åtminstone ASCC (1943) och SSEC (1947), som inte var produkter, och 701 (1952), vilket definitivt var det . Kanske är det mer korrekt att kalla den IBM:s första kommersiella företagsdator (eftersom 701 var avsedd för vetenskapligt bruk), och den första datorn som gjorde en meningsfull vinst. I alla fall var IBM 650 den första allmändatorn som installerades och användes vid Columbia University ( NORC byggdes här 1950-54, men de enda colombianerna som kunde använda den var ett par Watson Lab-insiders [ 61,65 ]). Som noterat i tidslinjen, stödde Watson Lab 650s mer än 200 Columbia-forskningsprojekt och användes också i en serie intensivkurser om datoranvändning. Tyvärr har jag inte kunnat hitta bilder på Watson Lab-maskinerna.


Den grundläggande 650-konfigurationen. Vänster till höger: Typ 650 Strömförsörjning; Typ 650 konsolenhet; Typ 533 Read-Punch Unit. Foto: IBM.

650 är en vakuumrörslogik, trumminne, decimal - inte binär - dator. Data lagras i ord som innehåller tio decimalsiffror och ett tecken, och instruktioner fungerar på siffror som lagras i detta format. IBM kallade 650 för en automatisk kalkylator , inte en dator:

En av de mest spännande prestationerna i vår generation är utvecklingen av den elektroniska automatiska digitalräknaren. Även om vilken skolpojke som helst kan utföra vilken operation som helst som görs av räknaren, är hastigheten och ekonomin med vilken räknaren gör dem så stor att automatisk beräkning revolutionerar stora områden inom vetenskap, teknik, näringsliv, industri och försvar. En enda gigantisk kalkylator kan göra mer aritmetik än vad hela USA:s befolkning skulle kunna göra med penna och papper [ 64 ] .

Fram till mitten till slutet av 1950-talet syftade ordet "dator" på personer som utförde beräkningar, inte maskiner [ 57 ]. Men innan decenniet var ute användes "digital dator" för 650:an och andra "jättehjärnor" och en "kalkylator" var det klumpiga på ditt skrivbord .

Ursprungligen en kortmaskin, var 650 kompatibel med IBM:s populära linje av enhetsregisterutrustning ( sorterare , sorterare , stansar , bokföringsmaskiner , etc.), men framsteg som först sågs i 700-serien har eftermonterats till den under åren: magnetband enheter, linjeskrivare; IBM 407 interconnect, RAMAC-diskenhet , kärnminne . Här är en konfiguration från 1955, som visas i IBM Type 650 Manual of Other Features:

Från vänster till höger: fyra magnetbandenheter av typ 727, en kontrollenhet av typ 652, bokföringsmaskin typ 407 (förgrund), extraenhet typ 653 (höghastighetslagring, baksida), konsolenhet typ 650 (förgrund), kraftenhet typ 655 (baksida) och en typ 533 Read-Punch Unit. KLICKA BILD för att förstora.

Några IBM 650-foton finns på www.computer-history.info , George A. Michael, Lawrence Livermore National Laboratory (pensionerad), åtkoms 2 april 2021; klicka på var och en för att förstora.

650 var en riktig dator för allmänt bruk, den naturliga utvecklingen av CPC (Card Programmed Calculator) till en dator med lagrat program med en komplett uppsättning decimala aritmetik, logik och kontrollinstruktioner, plus (senare) förmågan att hantera alfabetisk data. Det programmerades från början i maskinspråk, sedan i SOAP (Symbolic Optimal Assembly Program), dess inhemska optimerande assembler (om "optimering assembler" slår dig som en oxymoron, fortsätt läsa). SOAP skrevs 1955 på Watson Lab av Stan Poley [ 65 ] ; det var inte den första montören, men den var nära (krediten för det går vanligtvis till Nat Rochesters montör för IBM 701 1954).

År 1957 fanns en FORTRAN-kompilator (FORTRANSIT) tillgänglig (som kompilerade FORTRAN till SOAP; en inbyggd FORTRAN-kompilator dök upp 1959). (Du kommer ihåg att FORTRAN själv var barn till Columbia University och Watson Lab-alumnen John Backus .) Andra språk som användes på 650 var ADES II, BACAIC, BALITAC, BELL, CASE SOAP III, COMTRAN, DRUCO I, DYANA, EASE II , ELI, ESCAPE, FAST, FLAIR, GAT, IPL, IT (intern översättare), KISS, Bell Labs L1 och L2, MAC, MITILAC, MYSTIC, OMNICODE, RELATIVE, RUNCIBLE (se referenser nedan), FORTRUNCIBLE (ett kors av FORTRAN och RUNCIBLE), SIR, Speedcoding, SPIT, SPUR. (Tack till Diarmuid Pigott för korrigeringar av listan över IBM 650-programmeringsspråk.)

Här är en illustration från 1958 års sektion av tidslinjen av vad det innebär att vara en kortmaskin:

Även om FORTRAN – det första maskinoberoende programmeringsspråket på hög nivå – markerade ett stort steg framåt vad gäller användarvänlighet, och förmodligen var tillgängligt för 650 vid det här laget, är det värt att komma ihåg hur man skötte ett FORTRAN-jobb i början. Först stansade du ditt FORTRAN-program på en nyckelstansmaskin, tillsammans med eventuella data- och kontrollkort. Men eftersom 650 inte hade någon disk var FORTRAN-kompilatorn inte hemma. Så för att kompilera ditt program matade du in FORTRAN-kompilatordäcket i kortläsaren, följt av ditt FORTRAN-källprogram som data. Efter en tid slog maskinen det resulterande föremålsdäcket. Sedan matade du in FORTRAN runtime-biblioteksobjektdäcket och ditt programs objektdäck i kortläsaren, följt av eventuella datakort för ditt program. Ditt program skulle köras och resultaten skulle stansas på ytterligare en kortlek. För att se resultatet skulle du mata in resultatdäcket i en annan maskin, till exempel en IBM 407 , för att få det utskrivet på papper (om själva datorn inte hade någon skrivare, som original 650s inte hade).

650:an hade en enda 10-siffrig ackumulator (kallad "Övre") för addition och subtraktion, med en 10-siffrig förlängning ("Lower") för multiplikation, division och skiftning, plus en 10-siffrig distributör (i huvudsak en annan ackumulator ), och 1000, 2000 eller 4000 10-siffriga ord i trumminnet. Instruktionerna var en sekvens av tio siffror: en 2-siffrig opkod, en 4-siffrig operandadress och den 4-siffriga adressen till nästa instruktion som skulle utföras.

Här är ett urval av instruktionsuppsättningen. Symboliska opkoder och annan information kommer från referens [1] nedan; olika mnemonics används av olika assemblers (t.ex. i SOAP II är alla mnemonics tre bokstäver).

Mnemonisk

Värde

Fungera

Msek

AU

10

Lägg till Upper

0,4

RAU

60

Återställ Lägg till övre

0,4

SU

11

Subtrahera Övre

0,4

RSU

61

Återställ Subtrahera Övre

0,4

STU

21

Store Övre

0,4

MPY

19

Multiplicera

10,0

DIV

14

Dela upp

15,0

DIVR

64

Återställ Divide

15,0

BRNZ

45

Filial på Nonzero

0,4

BR-

46

Filial på minus

0,4

BROV

47

Filial på Overflow

0,4

SHRT

30

Skift åt höger

2.5

SHRD

31

Skift runda

2.5

SHLT

35

Skift åt vänster

2.5

TLU

84

Tabelluppslag

SPOP

69

Specialoperation

RD

70

Läs kort

PCH

71

Hålkort

SLUTA

01

Sluta

"Återställ Lägg till" betyder att rensa ackumulatorn och sedan lägga till innehållet i minnesadressen till den. En instruktion hanterar alltså både "ladda" och "lägg till". SPOP används för biblioteksanrop (t.ex. när sinus- eller naturliga logaritmfunktionen laddas på en känd adress) eller blockera överföringar. De flesta av de "Övre" instruktionerna har "Nedre" partners (AU/AL, SU/SL, etc), och vissa hänvisar också till distributören. Varje instruktion innehåller en explicit GOTO-adress, som indikerar nästa instruktion som ska exekveras. Att avbryta kontrollflödet åstadkommes med Branch-instruktionerna. Sådana saker som aritmetik med dubbel precision eller komplexa tal hanteras av subrutiner. Flyttalsaritmetik kan göras med valfri flyttals-hårdvara eller genom subrutin. Tro det eller ej,

Operativ system? Vilket operativsystem?

Anledningen till att varje instruktion inkluderade en GOTO har att göra med 650:s roterande trumminne. I datorer med solid state-minne lagras och exekveras instruktioner naturligt i sekvens - efter varje icke-greninstruktion inkrementeras programräknaren automatiskt till adressen för nästa. Men när programmet lagras på en trumma, var är nästa instruktion? När den aktuella instruktionen är klar har nästa roterats utom räckhåll och vi måste vänta på att den kommer tillbaka under läshuvudet för att hämta den. Sålunda var 650-programmering inte bara en fråga om algoritm och numerisk analys, utan också om att optimera arrangemanget av instruktioner för att förhindra trumlatens från att sakta ner programmet. Tabellen ovan visar körtider för varje instruktion. Trumman cyklar vid 12 500 RPM. Programmeraren tar reda på var trumman kommer att vara när den aktuella instruktionen avslutas och lägger nästa instruktion på den plats på trumman. Eller ännu bättre, SOAP, the SymbolicOptimal Assembly Program, väljer platsen åt dig automatiskt om du lämnar den tom.

Peter Capek, en användare av Columbia 650s, nu på IBM, minns: "Anledningen till att maskinen hade kärnminne är intressant... det var inte bara för att det var trevligt, eller för prestanda. Det behövdes som en buffert mellan kl. trumman och band, som överfördes i olika takt. Så du var tvungen att uttryckligen läsa/skriva in i kärnan och sedan överföra till enheten. Du kunde lägga in ett program i kärnminnet och undvika problemet med att vänta på att trumman skulle snurra, men eftersom det var bara 60 ord, det var inte mycket du kunde göra med det."

Under åren lades instruktioner till tills, som Jim Thomas från University of Hawaii påpekar, "vid slutet av sin livstid använde den nästan de 100 tillgängliga möjligheterna (med tejp, kärnminnet som du beskriver det, 407:an). , etc.)"


Don Knuth, IBM 650 (1958)

IBM förväntade sig att bara distribuera cirka 50 av dessa system, men efterfrågan överraskade dem. 650:an var relativt billig, hade en rejäl akademisk rabatt, var kompatibel med befintlig kortutrustning, den passade i ett rum och den var "användarvänlig" - decimalräkning, liten instruktionsuppsättning, praktisk konsol. Det var en av de första datorerna som kunde användas "hands on" av programmerare. Sammanlagt installerades 2000 under de nio tillverkningsåren (1953-62), vilket överträffade hela den sammanlagda försäljningen av alla 700-serien . Support för 650 drogs tillbaka av IBM 1969. 650 fick en efterföljare, IBM 7070(1959), arkitektoniskt lika men med transistorer istället för rör och kärnor istället för en trumma, och som kom med inte bara kortläsare och hålslag, utan även skrivmaskinskonsol, och (valfritt) disk- och bandenheter, linjeskrivare, etc. Det verkar ha varit populärt i Italien — "Il primo sistema elettronico completamente transistorizzato".

I augusti 2015 skickade Gerardo Cacciari följande svar på ovanstående (och korrigerade även några stavfel). Den felaktiga hänvisningen (och stavningen) kom från denna sida (i Italien och på italienska); Jag borde ha citerat det. När det gäller att vara den första transistoriserade datorn har Gerardo rätt; 7070 var IBM:s första transistoriserade dator ( enligt IBM ).

Det märkliga är att det påståendet (dvs. IBM 7070 är den första helt transistoriserade datorn) inte är helt sant eller åtminstone borde delas med andra tillverkare. Eftersom jag är italienare är jag mest förtjust i Olivetti Elea 9003, som var ganska avancerad för sin tid. Den kunde köra upp till tre samtidiga program (den var "partitionerad"), hade konceptet avbrott och var mycket snabb. Den tillkännagavs 1955 och den första produktionsmaskinen skickades 1960 till en stor textilfabrik. Den andra skickades till en storbank och när den gick i pension (på sjuttiotalet!) donerades den till en teknisk skola som höll den igång i utbildningssyfte. Idag är det den enda överlevande Elea 9003 i körskick efter mer än femtio år.

Följande är bilder jag personligen tog när jag besökte den för några år sedan:
https://www.flickr.com/photos/30299761@N00/albums/72157619791037553/

Det här är bilder som en vän till mig tog samma dag:
https://www.flickr.com/photos/31231773@N02/sets/72157623560120103/

Detta förklarar ganska bra hur det fungerade:
http://www.site.uottawa.ca/~luigi/papers/elea.htm

Och dessa är för referens:
https://en.wikipedia.org/wiki/List_of_transistorized_computers
https://en.wikipedia.org/wiki/Olivetti_Elea

Watson Lab 650s förblev i drift tills... när? De var definitivt igång 1962 (där de nämns i universitetspublikationer), och definitivt borta 1970, när IBM lämnade byggnaden.

Från webbplatsen för John H Clark, på users.nwark.com (nu nedlagd), med [korrigeringar] från Jim Thomas:

"CPU:n var 5 fot gånger 3 fot gånger 6 fot och vägde 1966 lbs och hyrdes för $3200 per månad. Kraftenheten var 5x3x6 och vägde 2972 ​​pund. Kortläsaren/punchen vägde 1295 pund och hyrdes för $550/månad. 650:an kunde lägga till eller subtrahera på 1,63 millisekunder, multiplicera i 12,96 ms och dividera med 16,90 ms. Minnet var en roterande magnetisk trumma med kapacitet på 2000 ord (10 siffror och tecken) och slumpmässig åtkomsttid på 2,496 ms. För ytterligare 1 500 $/månad lägg till magnetiskt kärnminne på 60 ord med åtkomsttid på 0,096 ms.

"En snygg funktion med ett IBM 650-program var användningen av [två] adresser; den [andra för nästa] instruktionen. Det betyder att du kan släppa din lek och så länge du fick det första kortet framför skulle ditt program köras. [Även om 650 har 2-adressinstruktioner, innehåller ett assembly-språkkort en tredje adress: adressen till själva instruktionen.]

IBM 650-konsolen

"Även om IBM 650 inte var en superhet maskin, hade den en funktion som fick den att sälja: massor av blinkande lampor. Med det kunde vem som helst se att något pågick. Vissa författare tillskriver IBMs framgång till dessa blinkande lampor och det faktum att datorn använde samma kort som IBMs andra enhetsregisterutrustning. Faktiskt stansades utdata från ditt 650-program på kort och du skulle ta kortleken över till en 402 Accounting Machine för att få en utskrift." KLICKA PÅ BILDEN för en närbild och beskrivning av IBM 650-kontrollkonsolen.

Typ 533 kortläsare och hålslag

Foton: IBM 650 Manual (se referenser nedan). Klicka på bilderna för att förstora:


Typ 533 Read-Punch


IBM 650-kortflöden


Kontrollpanel

Från Mike Radow, tidigare från Watson Lab:

Det finns några saker jag kan lägga till för perioden 1958-1968 på Watson, etc.:

  1. Watson "north", 612 West 116th Street , hade två IBM 650, som jag använde ofta. Var och en hade en 511-kortläsare och en 403-skrivare.
    Patch-kort (för icke-en-till-ett-format 511 och 403) var alltid få och dyra. Folk skulle gömma dem på de jäklaste platserna, som inuti 650-talets elskåp. 1959 var jag på jakt efter skinkdelar på "Radio Row" - nu platsen för WTC [ detta skrevs i maj 2001] . Jag hittade och köpte fyra kort till 403-skrivaren, för totalt $10! Var och en var fylld med lapptrådar, vilket butiken ansåg vara en smärta. Deras härkomst var osäker, men de var i perfekt skick. Jag behöll en, tog bort sladdarna från de andra. Jag gav sedan de tre andra brädorna till vänner och fick på så sätt en livstid av chits. Jag "Dremeled" mitt namn på mitt och har det fortfarande; det är här, någonstans...
  2. Endast maskinen "upstairs" (icke-källaren) kunde användas för att skapa SOAP_decks, eftersom maskinen "downstairs" inte hade "Alpha"-funktionen. Det här alternativet krävdes för att läsa icke-numeriska (flerhålslagna) kortkolumner. Strikt polisarbete begränsade till stor del denna maskin till att kompilera-före-"körning", eftersom "Alpha"-funktionen var en kritisk resurs. Macho-typer undvek flaskhalsen genom att skriva direkt i maskinkod. Detta var mycket knepigt, eftersom 650 var en 3-adress, decimalmaskiner, med allt minne på en roterande trumma. För att få någon form av effektivitet måste programmen optimeras för de (olika) körtiderna för de olika op-koderna. SOAP, Symbolic Optimum Assembly Program gjorde detta, även om bättre "handoptimering" var möjlig av (mycket) patienten. Tillfälligtvis,
    Naturligtvis, efter att Fortransit, IT och SOAP-översättningar var färdiga och stansade ut på numeriska kortlekar, kunde alla 650 köra programmen.
    1958 skrev Tom Guttman en handskriven varning på ett 3x5 filkort och tejpade det överst på Watsons "övervåningen" IBM_650. Där stod den kvar i åratal, tills maskinen togs isär och avlägsnades. Detta är inte 100% korrekt, även om det är väldigt nära. Toms varningsskylt – som han hade kopierat från en liknande tejpad till 650 i IBMs White Plains "Service Bureau" – kommer att vara bekant, även i våra nuvarande och icke-blinkande ljusa tider...:
    Achtung! Allt lookenspeepers!
    Das datormaskin är inte fur gefingerpoken och mittengrabben.
    Ist easy schnappen der springenwerk, blowenfusen, und poppencorken mit spitzensparken.
    Ist nicht fur gewerken bei das dumpkopfen.
    Das rubbernecken sichtseeren keepen hans in das pockets muss...:
    Relaxen and watch das blinkenlichten.
  3. Det fanns också en 650 i "Sheffield Dairy"-byggnaden, på 125th Street [ Prentis Hall ]. Den användes till stor del av ERL (= Electronic Research Labs), som – efter upploppen 1968 – lämnade Columbia och fortsatte sin hemliga militära forskning som RRL (= Riverside Research Labs).
    I denna byggnad fanns också Columbia-Princeton Electronic Music Center .
    Under några år, medan jag studerade, arbetade jag där, medan det drevs i samarbete av de "tidiga storheterna" på området, nämligen Vladimir Ussachevsky, Otto Luening och Milton Babbitt . Jag hade redan haft stor erfarenhet av inspelningsstudior, skinkradio och WKCR, så jag gjorde mig nyttig med att underhålla deras (endast vacuum_tube) anläggning. Alla tre var riktiga herrar, men "karaktärer" och ibland ganska galna... När jag jobbade för dem lärde jag känna folk på ERL mycket bättre, även om jag först träffade flera av dem några år tidigare, under min HS " Science Honours" dagar... Så här kom jag till jobbet på ERL.
    Jag arbetade för John Bose och skrev och körde ofta program på "deras" 650. Bose var en stark och konstant kraft för att få mer datorkraft på campus. Intressant nog var Bose också en stark troende på _analoga_ datorer, som använde massor av op-förstärkare (= operationsförstärkare) och patch-kablar. Jag programmerade och körde också deras två analoga datorer, nu en helt förlorad konst, men inte föremål för Franks historia! [Bara för att jag inte har kunnat hitta någon information.]
    För övrigt hade professor Bose, som hade utnämningar både i EE och vid ERL, varit doktorand till Columbias kanske mest kända EE-professor, major Edwin H. Armstrong ! EHA uppfann FM, superheterodynmottagaren och den superregenerativa förstärkningsdetektorn. En ganska bra livsprestation för den här CU-studenten!

I augusti 2005, när vi närmar oss 50-årsdagen av installationen av 650 i Watson Lab, avslöjade Melissa Metz från AcIS att hennes mamma, Claire, fysiker, hade varit på Watson Lab vid den tiden; Claire minns:

Jag arbetade på 612 West 116th Street , i källaren sommaren 1954 för IBM, för Erwin Hahn, som lämnade University of California i Berkeley (1953 arbetade jag i Pupin för Gardner Tucker, och fick mindre betalt än Erwin Hahn såg till att jag fick samma lön). Han undersökte "spin-eko"-effekten, som ledde till MRT. Han kunde också spela Yankee Doodle genom att knacka på hans huvud och ändra ansikte och mun. IBM blev upprörd eftersom han inte ville jobba 9 till 5 även om han lade ner många fler timmar. De hade en tidkortsenhet och räknade tiden i hundradels timme (Mer om klockan HÄR och HÄR )Det kallades Watson Lab på den tiden. Men det fanns många IBM-labb, som alla hette Watson som jag minns.

Jag gjorde också min ursprungliga programmering, medan jag var doktorand, för IBM 650. Jag skrev ett litet program efter Watson Lab Short Course för 650, som jag tog runt 1960, men någon annan skrev in det i datorn. Bara Marian Hamann Biavati och jag, de enda kvinnorna på kursen, fick rätt första gången.

I oktober 2018 skriver Paul Muzio:

1960-61 var Columbia värd för ett NSF-sponsrat program för gymnasieelever. Var tvungen att göra ett prov våren 1960 för att få tillträde till programmet. En av de stora fördelarna med programmet var att jag fick skriva ett datorprogram på maskinspråk. I din artikel ( kommentar av Mike Radow ) diskuteras ett High School Science Honours-program som använder IBM 1620, jag trodde att vi fick använda IBM 650, men det är länge sedan. Jag minns dock starkt följande: "650-instruktionerna bestod av en tvåsiffrig operationskod, en fyrsiffrig dataadress och den fyrsiffriga adressen till nästa instruktion." Inget minne av att jag någonsin använt SPS.