IBM 704: razlika između inačica

Izvor: Hrvatska internetska enciklopedija
Prijeđi na navigaciju Prijeđi na pretraživanje
mNema sažetka uređivanja
 
Nisu prikazane 22 međuinačice
Redak 1: Redak 1:
'''IBM 704''' ime je za računalo prve generacije koje je razvila tvrtka [[IBM]] i jedan je iz serije računala IBM 700. Ovo računalo se proizvodilo od 1954. do 1964. godine.<ref>https://www.ibm.com/history/700</ref>. Glavni arhitekti ovog računala bili su [[John Backus]] i [[Gene Amdahl]]. Novine ovog računala jesu memorija s magnetskom jezgrom i jedinica s pomičnim zarezom. Povijesna važnost ovog računala jest da je na njemu bio razvijen programski jezik [[FORTRAN]] i [[LISP]] te SAP asembler. Zbog inovativnih riješenja i dobre programske opreme ovo računalo je rabljeno je za stvaranje prvih sustava umjetne inteligencije, računalnog vida, računalne muzike, i sustava za robotiku.
== Povijest razvoja IBM 700 serije ==
== Povijest razvoja IBM 700 serije ==


Redak 19: Redak 22:
== Arhitektura IBM 704 ==
== Arhitektura IBM 704 ==


IBM 704 bio je jedno od prvih komercijalnih računala koje je uvodilo napredne koncepte arhitekture, uključujući rad s pomičnim zarezom, indeksne registre i statusne indikatore. Sustav je bio dizajniran za znanstvene i tehničke izračune, što ga je činilo ključnim alatom u laboratorijima, sveučilištima i ranim zrakoplovnim projektima.
IBM 704 bio je jedno od prvih komercijalnih računala koje je uvodilo napredne koncepte arhitekture, uključujući rad s pomičnim zarezom, indeksne registre i statusne indikatore. Sustav je bio dizajniran za znanstvene i tehničke izračune, što ga je činilo ključnim alatom u laboratorijima, sveučilištima i ranim zrakoplovnim projektima<ref>https://www.cs.virginia.edu/~robins/BU2/webman_BU_Jan_25_2012/brochure/images/manuals/IBM_704/IBM_704.html </ref>.
 
Kao računalo prve generacije, osnovna građevna jedinica bila je [[elektronska cijev]] koja je bila jako rasprostranjena elektronička komponenta iz kojeg se proizvodilo niz namjenskih i široko namjenskih proizvoda (radio, TV, pojačala). Zbog svoje veličine i karakteristika (zagrijavanje i niska pozdanost), IBM 704 je zahtjevao posebnu sobu s podignutim podom koje je služilo za provođenje kablova od jedinice do jedinice. Za hlađenje elektronskih cijevi bio je ugrađen veliki raslhadni uređaj koji
 
 
Iako je je tranzistor bio izumjen 1947. godine, masovna proizvodnja nije započela sve do listopada 1951. godine<ref>https://ethw.org/Milestones:Transistor_Manufacturing,_1951 </ref>. IBM kao mnoge druge tvrtke toga vremena nastavljali su s uporabom elektronskih cijevi za proizvodnju računala, jer su bila jako poznata na tržistu i još tome postojao je veliki broj proizvođača u to vrijeme.
 
 
 
 
 
=== Memorija ===
 
IBM 704 koristio je magnetsku jezgru kao primarnu memoriju, što je u to vrijeme predstavljalo veliki tehnološki napredak u odnosu na Williamsove cijevi korištene u IBM-u 701. Magnetska jezgra bila je brža, pouzdanija i omogućavala stabilno zadržavanje podataka bez potrebe za stalnim osvježavanjem.
 
{| class="wikitable"
|+ '''Memorijske karakteristike IBM 704'''
! Parametar
! Vrijednost
! Opis
|-
| Vrsta memorije
| Magnetska jezgra
| Stabilna, brza i pouzdana tehnologija za 1950-e.
|-
| Kapacitet
| 4096 riječi × 36 bita
| Ukupno 147 456 bitova (18 432 bajta).
|-
| Vrijeme pristupa
| ~12 μs
| Vrijeme potrebno za čitanje ili pisanje jedne riječi.
|-
| Format riječi
| 36-bitna riječ
| Koristi se za instrukcije, podatke i floating-point brojeve.
|-
| Floating-point format
| 8-bitni eksponent + 27-bitna mantisa
| Bez skrivenog bita; excess-128 eksponent.
|}
 
=== Periferni uređaji ===
 
IBM 704 podržavao je širok spektar perifernih uređaja, što ga je činilo pogodnim za znanstvene, tehničke i administrativne zadatke. Ulazno/izlazni sustav bio je temeljen na magnetskim vrpcama, kartičnim čitačima i pisačima, uz mogućnost prikaza podataka na CRT zaslonima.
 
{| class="wikitable"
|+ '''Periferni uređaji IBM 704'''
! Uređaj
! Model
! Opis
|-
| Čitač kartica
| IBM 711
| Učitava programe i podatke s bušenih kartica.
|-
| Pisač
| IBM 716
| Ispisuje tekstualni izlaz; glavni uređaj za ljudsko čitanje rezultata.
|-
| Bušilica kartica
| IBM 721
| Zapisuje podatke na bušene kartice.
|-
| Magnetske vrpce
| IBM 727
| Glavni masovni spremnik; preko 5 milijuna znakova po vrpci.
|-
| Kontrolna jedinica vrpci
| IBM 753
| Upravljanje magnetskim vrpcama.
|-
| Magnetski bubanj
| IBM 733
| Dodatna memorija za brzi pristup.
|-
| Magnetska jezgra (RAM)
| IBM 737
| Primarna memorija sustava (4096 × 36-bitnih riječi).
|-
| CRT zaslon
| IBM 740
| 21-inčni vektorski prikaz s dugom fosfornom postojanošću; korišten za vizualizaciju podataka.
|}
 
 


=== Aritmetička jedinica (AC i MQ) ===
=== Aritmetička jedinica (AC i MQ) ===
Redak 43: Redak 131:


Programi su mogli testirati i postavljati SI bitove, što je omogućavalo primitivne oblike upravljanja tokom programa.
Programi su mogli testirati i postavljati SI bitove, što je omogućavalo primitivne oblike upravljanja tokom programa.
=== Memorija ===
IBM 704 koristio je [[magnetska jezgra|magnetsku jezgru]] (magnetic core memory) kapaciteta:
* 4096 riječi × 36 bita
Ovo je bila jedna od najnaprednijih memorijskih tehnologija 1950-ih.
=== Ulazno/izlazni sustav ===
Podržani uređaji uključivali su:
* magnetske vrpce
* čitač kartica
* bušilicu kartica
* pisač
* konzolu operatera
I/O operacije su se signalizirale preko Sense Indicators.


=== Instrukcijski format ===
=== Instrukcijski format ===
Redak 69: Redak 141:
Ovaj format omogućavao je fleksibilno adresiranje i kontrolu toka programa.
Ovaj format omogućavao je fleksibilno adresiranje i kontrolu toka programa.


== Floating‑point implementacija ==
IBM 704 bio je prvo komercijalno računalo koje je imalo ugrađenu hardversku podršku za aritmetiku s pomičnim zarezom. Ovo je bio ključni tehnološki iskorak koji je omogućio razvoj FORTRAN-a i znanstvenih aplikacija koje su zahtijevale visoku numeričku preciznost.
Floating‑point brojevi u IBM 704 bili su pohranjeni u 36‑bitnim riječima, podijeljenima na dva glavna dijela:
* '''Mantisa''' – 27 bitova 
* '''Eksponent''' – 8 bitova (excess‑128 format) 
* '''Znak''' – 1 bit
=== Format floating‑point riječi ===
{| class="wikitable"
|+ '''Format floating‑point broja (IBM 704)'''
! Polje
! Duljina
! Opis
|-
| Znak mantise
| 1 bit
| Određuje pozitivan ili negativan broj.
|-
| Mantisa
| 27 bitova
| Normalizirana mantisa bez skrivenog bita.
|-
| Eksponent
| 8 bitova
| Excess‑128 format (stvarni eksponent = pohranjeni − 128).
|-
| Rezervirano
| 0 bitova
| Format je potpuno iskorišten; nema neiskorištenih bitova.
|}
=== Excess‑128 eksponent ===
Eksponent je pohranjen u obliku:
<syntaxhighlight lang="text">
stvarni_eksponent = pohranjeni_eksponent − 128
</syntaxhighlight>
Ovaj pristup omogućavao je jednostavnije usporedbe i normalizaciju brojeva.
=== Normalizacija ===
IBM 704 zahtijevao je da mantisa bude normalizirana tako da najviši bit mantise bude različit od nule. 
To je omogućavalo maksimalnu preciznost pri izračunima.
=== Floating‑point operacije ===
Računalo je podržavalo sljedeće operacije nad floating‑point brojevima:
* zbrajanje (ADD) 
* oduzimanje (SUB) 
* množenje (MPY) 
* dijeljenje (DIV)


Sve operacije koristile su aritmetičku jedinicu AC/MQ, pri čemu se rezultat normalizirao automatski.


=== Primjer floating‑point operacije u assembleru ===
<syntaxhighlight lang="asm">
CLA A        / učitaj floating-point broj A
ADD B        / zbroji ga s B
STO C        / spremi rezultat u C
</syntaxhighlight>
=== Važnost floating‑point implementacije ===
Hardverska podrška za pomični zarez bila je ključna za:
* razvoj FORTRAN-a (1957.)
* balističke izračune
* aerodinamičke simulacije
* nuklearne proračune
* statističke modele
* rane znanstvene aplikacije NASA-e
IBM 704 je time postavio standard koji će kasnije preuzeti svi moderni procesori.


== Instrukcijski skup IBM 704 ==
== Instrukcijski skup IBM 704 ==
Redak 494: Redak 645:
IO_OK HLT
IO_OK HLT
</syntaxhighlight>
</syntaxhighlight>
== Performanse IBM 704 ==
IBM 704 bio je jedno od najbržih znanstvenih računala svoje generacije. Njegova arhitektura s pomičnim zarezom, magnetskom jezgrom i specijaliziranim aritmetičkim registrima omogućavala je znatno bolje performanse u odnosu na prethodne modele IBM 701 i IBM 702. Sustav je bio optimiziran za matematičke operacije, simulacije, statističke izračune i obradu velikih numeričkih skupova podataka.
{| class="wikitable"
|+ '''Performanse računala IBM 704'''
! Parametar
! Vrijednost
! Opis
|-
| Brzina zbrajanja
| ~12 μs
| Vrijeme potrebno za izvršavanje jedne ADD instrukcije.
|-
| Brzina množenja
| ~20 μs
| Vrijeme za MPY instrukciju; rezultat ide u AC/MQ.
|-
| Brzina dijeljenja
| ~38 μs
| Vrijeme za DIV instrukciju; količnik u MQ, ostatak u AC.
|-
| Memorija
| 4096 riječi × 36 bita
| Magnetska jezgra; pristup ~12 μs.
|-
| Ciklus instrukcije
| ~12 μs
| Prosječno vrijeme za dohvat i izvršavanje jednostavne instrukcije.
|-
| Brzina I/O operacija
| 7200 kartica/min (čitač)
| Kartični čitač i bušilica bili su glavni ulazno/izlazni sustavi.
|-
| Magnetske vrpce
| 12 500 znakovnih blokova/s
| Ovisno o uređaju; korišteno za masovno spremanje podataka.
|-
| Preciznost pomičnog zareza
| 27-bitni eksponent + 8-bitna mantisa
| Omogućavalo znanstvene izračune velike preciznosti.
|}
== Pouzdanost ==
Iako je IBM 704 bio znatno pouzdaniji od svog prethodnika IBM 701, i dalje je bio stroj temeljen na vakuumskim cijevima, što je značilo relativno česte kvarove prema današnjim standardima. Prosječno vrijeme između kvarova iznosilo je oko 8 sati, što je ograničavalo veličinu programa koje je bilo moguće kompajlirati ili izvršavati bez prekida.
Prvi FORTRAN kompajleri morali su biti iznimno učinkoviti jer bi preduga kompilacija mogla biti prekinuta kvarom sustava. Unatoč tome, IBM 704 je bio dovoljno pouzdan da postane temelj za razvoj FORTRAN-a, LISP-a, ranih neuralnih mreža i brojnih znanstvenih projekata.
{| class="wikitable"
|+ '''Pouzdanost IBM 704'''
! Parametar
! Vrijednost
! Opis
|-
| MTBF (mean time between failure)
| ~8 sati
| Prosječno vrijeme rada prije kvara.
|-
| Usporedba s IBM 701
| ~30 minuta
| IBM 704 bio je znatno pouzdaniji od svog prethodnika.
|-
| Utjecaj na softver
| Ograničena veličina programa
| Kompilacije su morale biti kratke zbog mogućih kvarova.
|-
| Tehnologija
| Vakuumske cijevi
| Glavni uzrok kvarova i zagrijavanja sustava.
|}
== SAP asembler ==
SAP (''Symbolic Assembly Program'') bio je službeni asembler za IBM 704 i predstavljao je jedan od najranijih i najutjecajnijih asemblera u povijesti računarstva. Razvijen je unutar IBM-a sredinom 1950-ih kako bi programerima omogućio pisanje simboličkog koda umjesto ručnog unošenja numeričkih opkoda i adresa.
SAP je bio ključan za razvoj FORTRAN-a, LISP-a i mnogih ranih znanstvenih aplikacija, jer je omogućio jednostavnije pisanje, čitanje i održavanje programa na IBM 704.
=== Značajke SAP asemblera ===
SAP je imao nekoliko naprednih značajki za svoje vrijeme:
* '''Simboličke oznake''' – programeri su mogli koristiti imena umjesto numeričkih adresa.
* '''Automatsko izračunavanje adresa''' – asembler je sam određivao lokacije instrukcija.
* '''Podrška za indeksne registre''' – XR1, XR2 i XR4 mogli su se koristiti u adresiranju.
* '''Jednostavna sintaksa''' – instrukcije su bile kratke i čitljive.
* '''Integracija s FORTRAN-om''' – FORTRAN kompajler generirao je SAP kod.
* '''Podrška za floating‑point operacije''' – izravno korištenje AC/MQ jedinice.
SAP je bio jedan od prvih asemblera koji je omogućio relativno visok stupanj apstrakcije u odnosu na strojni kod.
=== Struktura SAP instrukcije ===
Instrukcije su se sastojale od:
* mnemonika (ADD, SUB, MPY, DIV, TRA…)
* adrese ili simbola
* opcionalnog indeksnog modifikatora
* komentara
Primjer strukture:
<syntaxhighlight lang="asm">
MNEMONIK  ADRESA,XR  / komentar
</syntaxhighlight>
=== Primjer SAP koda ===
Slijedi povijesno točan primjer SAP koda za IBM 704:
<syntaxhighlight lang="asm">
A      DEC 5          / definiraj konstantu A
B      DEC 7          / definiraj konstantu B
C      BSS 1          / rezerviraj prostor za rezultat
      CLA A          / učitaj A u AC
      ADD B          / dodaj B
      STO C          / spremi rezultat u C
      HLT            / zaustavi program
</syntaxhighlight>
=== Korištenje indeksnih registara ===
SAP je omogućavao jednostavno korištenje XR1, XR2 i XR4:
<syntaxhighlight lang="asm">
LOOP  CLA ARRAY,XR1  / učitaj element polja
      ADD SUM        / dodaj na sumu
      STO SUM        / spremi rezultat
      TXI XR1,1      / povećaj indeks
      TPL LOOP      / ako je pozitivan, nastavi petlju
</syntaxhighlight>
Ovo je bio preteča modernih petlji u visokorazinskim jezicima.
=== SAP i FORTRAN ===
Prvi FORTRAN kompajler generirao je SAP kod koji se zatim prevodio u strojni kod IBM 704. 
Zbog toga je SAP bio ključan za:
* optimizaciju FORTRAN programa,
* implementaciju DO petlji,
* rad s poljima i matricama,
* floating‑point operacije,
* kontrolu toka programa.
=== SAP i LISP ===
Prva implementacija LISP-a (1958.) bila je napisana upravo u SAP asembleru. 
SAP je omogućio:
* manipulaciju cons‑struktura,
* implementaciju CAR i CDR operacija,
* rekurziju,
* dinamičko upravljanje memorijom.
Bez SAP-a, LISP ne bi mogao biti implementiran na IBM 704.
=== Povijesni značaj SAP-a ===
SAP je bio jedan od najvažnijih asemblera 1950-ih i 1960-ih. 
Njegov utjecaj vidljiv je u:
* razvoju FORTRAN-a,
* nastanku LISP-a,
* ranim AI projektima,
* znanstvenim simulacijama,
* razvoju modernih asemblera i kompajlera.
SAP je postavio temelje za simboličko programiranje i bio je ključni alat u zlatnom dobu ranog računarstva.
== Uloga IBM‑704 u razvoju LISP-a ==
IBM 704 imao je ključnu ulogu u nastanku programskog jezika LISP, jednog od najvažnijih jezika u povijesti računarstva. LISP je 1958. godine razvio John McCarthy na MIT-u, a upravo je IBM 704 bio prvo računalo na kojem je LISP implementiran i izvršavan.<ref>http://jmc.stanford.edu/articles/lisp/lisp.pdf </ref>
Razvoj LISP-a bio je izravno povezan s arhitekturom IBM 704, posebno s njegovim:
* 36-bitnim riječima,
* aritmetičkom jedinicom AC/MQ,
* indeksnim registrima,
* mogućnošću manipulacije adresama,
* podrškom za uvjetno grananje,
* te fleksibilnim instrukcijskim formatom.
=== Zašto je IBM 704 bio pogodan za LISP ===
IBM 704 imao je nekoliko arhitekturnih značajki koje su se pokazale idealnima za implementaciju LISP-a:
* '''36-bitne riječi''' omogućavale su učinkovito predstavljanje parova (cons cells).
* '''Indeksni registri''' olakšavali su rad s listama i rekurzivnim strukturama.
* '''Instrukcije grananja''' (TRA, TMI, TPL, TZE) omogućavale su jednostavnu implementaciju rekurzije.
* '''Magnetska jezgra''' bila je dovoljno brza za dinamičke strukture podataka.
* '''Podrška za floating-point''' olakšala je rad s matematičkim funkcijama.
McCarthy je iskoristio ove mogućnosti kako bi implementirao osnovne LISP konstrukte: CONS, CAR, CDR, rekurziju, lambda‑izraze i funkcije višeg reda.
=== Prva implementacija LISP-a ===
Prva verzija LISP-a bila je napisana u SAP asembleru za IBM 704. 
Ova implementacija uključivala je:
* interpreter,
* evaluator,
* upravljanje memorijom,
* implementaciju cons‑struktura,
* osnovne matematičke funkcije,
* te mehanizme za rekurziju i funkcije višeg reda.
LISP je na IBM 704 radio kao interpretirani jezik, a programi su se izvršavali izravno nad strukturom lista u memoriji.
=== Povijesni značaj ===
IBM 704 je omogućio LISP-u da postane prvi široko korišteni jezik za:
* umjetnu inteligenciju,
* simboličku manipulaciju,
* matematičku logiku,
* rane ekspertske sustave,
* istraživanje strojnog učenja.
Bez IBM 704, LISP bi vjerojatno bio znatno drugačiji — ili bi se pojavio mnogo kasnije.
=== Primjer ranog LISP izraza (povijesni kontekst) ===
Iako se LISP nije zapisivao u assembleru, njegovi izrazi su se prevodili u SAP kod za IBM 704. 
Primjer jednostavne LISP funkcije:
<syntaxhighlight lang="lisp">
(define (square x)
  (* x x))
</syntaxhighlight>
Ovaj izraz bi se na IBM 704 interno pretvorio u operacije nad cons‑struktura i pozive aritmetičkih instrukcija MPY i ADD.
=== Utjecaj na daljnji razvoj ===
IBM 704 je bio platforma na kojoj su nastale ključne ideje:
* automatsko upravljanje memorijom,
* rekurzija kao temeljni mehanizam,
* funkcije višeg reda,
* lambda‑račun,
* simbolička obrada podataka.
Ove ideje postale su temelj modernih programskih jezika, od Schemea i Prologa do Pythona i JavaScripta.
== Uloga IBM‑704 u razvoju FORTRAN-a ==
IBM 704 imao je presudnu ulogu u nastanku FORTRAN-a (Formula Translation), prvog široko korištenog visokorazinskog programskog jezika. FORTRAN je razvijen 1957. godine u IBM-u pod vodstvom Johna Backusa, a IBM 704 bio je prvo računalo na kojem je FORTRAN implementiran, kompajliran i izvršavan.
Arhitektura IBM 704 izravno je oblikovala dizajn FORTRAN-a. Njegova podrška za aritmetiku s pomičnim zarezom, indeksne registre, statusne indikatore i 36-bitne riječi omogućila je stvaranje jezika koji je bio optimiziran za znanstvene i tehničke izračune.
=== Zašto je IBM 704 bio ključan za FORTRAN ===
IBM 704 posjedovao je nekoliko arhitekturnih značajki koje su bile presudne za razvoj FORTRAN-a:
* '''Hardverska floating‑point jedinica''' – omogućila je izravnu podršku za matematičke operacije.
* '''Aritmetički registri AC i MQ''' – olakšali su implement
== Uloga IBM‑704 u razvoju ranih neuralnih mreža ==
IBM 704 imao je važnu ulogu u razvoju najranijih modela umjetnih neuronskih mreža tijekom kasnih 1950-ih i ranih 1960-ih. Iako su ti modeli bili daleko jednostavniji od današnjih dubokih mreža, IBM 704 je bio jedno od rijetkih računala koje je imalo dovoljno memorije, brzine i aritmetičkih mogućnosti da može izvoditi simulacije neuronskih mreža u praksi.
Rani pioniri umjetne inteligencije, uključujući Franka Rosenblatta, Herberta Simona, Allena Newella i istraživače s MIT-a i Cornell Aeronautical Laboratory, koristili su IBM 704 za implementaciju i testiranje prvih algoritama koji su simulirali neuronsko učenje.
=== IBM 704 i perceptron ===
Najvažniji doprinos IBM 704 razvoju neuralnih mreža bio je u implementaciji i simulaciji **Rosenblattovog perceptrona**, prvog formalnog modela neuronske mreže koji je mogao učiti iz podataka.<ref>https://as.cornell.edu/news/professors-perceptron-paved-way-ai-60-years-too-soon</ref>
IBM 704 omogućio je:
* izračun težina perceptrona,
* simulaciju učenja kroz iteracije,
* rad s matricama i vektorima,
* evaluaciju linearnih klasifikatora,
* testiranje različitih skupova podataka.
Iako je perceptron kasnije imao i hardversku implementaciju (Mark I Perceptron), IBM 704 bio je ključan za **prve softverske simulacije** koje su potvrdile da se neuronske mreže mogu trenirati računalno.
=== Zašto je IBM 704 bio pogodan za neuralne mreže ===
IBM 704 imao je nekoliko arhitekturnih značajki koje su bile iznimno korisne za rane AI eksperimente:
* '''Floating‑point jedinica''' – omogućila je precizne izračune težina i aktivacijskih funkcija.
* '''Aritmetički registri AC/MQ''' – ubrzali su operacije nad vektorima.
* '''Indeksni registri''' – olakšali su rad s matricama i iteracijama.
* '''Magnetska jezgra''' – bila je dovoljno brza za ponavljajuće izračune.
* '''Instrukcije grananja''' – omogućile su implementaciju algoritama učenja.
Zbog toga je IBM 704 bio jedno od prvih računala koje je moglo izvoditi **iterativne algoritme učenja**, temeljne za neuralne mreže.
=== Rani eksperimenti umjetne inteligencije ===
Na IBM 704 provodili su se rani eksperimenti koji su uključivali:
* simulaciju perceptrona,
* klasifikaciju jednostavnih vizualnih uzoraka,
* prepoznavanje znakova,
* rane oblike strojne percepcije,
* istraživanje linearnih i nelinearnih funkcija aktivacije.
Ovi eksperimenti bili su temelj za kasniji razvoj:
* višeslojnih perceptrona,
* backpropagation algoritma,
* dubokog učenja,
* računalnog vida.
=== Primjer jednostavne perceptronske iteracije (povijesni kontekst) ===
Sljedeći pseudokod prikazuje kako je perceptron bio implementiran na IBM 704:
<syntaxhighlight lang="asm">
CLA W1        / učitaj težinu
MPY X1        / pomnoži s ulazom
ADD SUM      / dodaj na akumuliranu sumu
STO SUM      / spremi novu vrijednost
... ponavljati za sve ulaze ...
CLA SUM
TMI UPDATE    / ako je pogreška negativna, ažuriraj težine
TPL UPDATE    / ako je pogreška pozitivna, također ažuriraj
UPDATE:
ADD ERROR    / korekcija težine
STO W1
</syntaxhighlight>
Ovo je bio jedan od prvih primjera **računalnog učenja** u povijesti.
=== Povijesni značaj ===
IBM 704 bio je ključan za rani razvoj umjetne inteligencije jer je:
* omogućio prve računalne simulacije neuronskih mreža,
* bio platforma za perceptron i rane modele učenja,
* omogućio istraživanje algoritama koji su kasnije postali temelj dubokog učenja,
* povezao AI istraživanje s praktičnim računalnim sustavima.
Bez IBM 704, razvoj ranih neuralnih mreža bio bi znatno sporiji i ograničeniji.
== Uloga IBM‑704 u ranoj robotici ==
IBM 704 imao je važnu ulogu u razvoju najranijih oblika robotike i automatizacije tijekom kasnih 1950-ih i ranih 1960-ih. Iako se u to vrijeme pojam „robotika“ tek počeo pojavljivati u znanstvenoj literaturi, IBM 704 bio je jedno od prvih računala koje je moglo upravljati mehaničkim sustavima, analizirati senzorske podatke i izvoditi algoritme koji su predstavljali preteču modernog upravljanja robotima.
Rani robotski sustavi bili su primitivni u odnosu na današnje, ali IBM 704 je omogućio:
* upravljanje aktuatorima i elektromehaničkim uređajima,
* obradu ulaznih signala iz senzora,
* simulaciju kretanja i kontrolnih petlji,
* rane eksperimente u automatskom upravljanju,
* integraciju s vizualnim sustavima (CRT prikaz IBM 740).
=== Rani eksperimenti automatizacije ===
IBM 704 korišten je u laboratorijima i istraživačkim centrima za:
* upravljanje robotskim manipulatorima,
* simulaciju kinematike i dinamike,
* upravljanje servo‑motorima,
* automatizaciju industrijskih procesa,
* rane oblike povratne sprege (feedback control).
Ovi sustavi nisu bili roboti u modernom smislu, ali su predstavljali ključne korake prema:
* numeričkom upravljanju strojevima (NC machines),
* automatskim manipulatorima,
* sustavima za automatsko pozicioniranje,
* ranim oblicima cybernetike.
=== IBM 704 i cybernetika ===
IBM 704 bio je često korišten u istraživanjima inspiriranim radom Norberta Wienera, osnivača cybernetike. 
Sustav je omogućavao:
* simulaciju povratne sprege,
* analizu stabilnosti sustava,
* implementaciju kontrolnih algoritama,
* rane oblike adaptivnog upravljanja.
Ovo je bilo ključno za razvoj robotskih sustava koji se mogu prilagođavati promjenama u okruženju.
=== Vizualni sustavi i IBM 740 ===
IBM 704 se mogao povezati s CRT zaslonom IBM 740, koji je omogućavao:
* prikaz vektorskih grafika,
* vizualizaciju putanja kretanja,
* prikaz senzorskih podataka,
* rane eksperimente u računalnom vidu.
Iako primitivni, ovi sustavi bili su preteča kasnijih robotskih vizualnih sustava.
=== Primjer jednostavne kontrolne petlje (povijesni kontekst) ===
Sljedeći SAP kod prikazuje kako je IBM 704 mogao implementirati jednostavnu kontrolnu petlju za upravljanje aktuatorom:
<syntaxhighlight lang="asm">
READSENSOR  RDS SENS        / očitaj senzor
          CLA SENS        / učitaj vrijednost
          SUB TARGET      / usporedi s ciljem
          TPL INCREASE    / ako je pozitivno, povećaj izlaz
          TMI DECREASE    / ako je negativno, smanji izlaz
INCREASE  ADD STEP        / povećaj upravljački signal
          STO ACTUATOR
          TRA LOOP
DECREASE  SUB STEP        / smanji upravljački signal
          STO ACTUATOR
          TRA LOOP
LOOP      TRA READSENSOR  / ponovi petlju
</syntaxhighlight>
Ovo je bio jedan od prvih primjera računalno upravljanih mehaničkih sustava.
=== Povijesni značaj ===
IBM 704 bio je ključan za rani razvoj robotike jer je:
* omogućio prve računalne simulacije upravljanja strojevima,
* bio platforma za cybernetičke eksperimente,
* omogućio integraciju senzora i aktuatora,
* pružio temelj za numeričko upravljanje strojevima (NC),
* povezao mehaniku, elektroniku i računalne algoritme.
IBM 704 je time postavio temelje za kasniji razvoj industrijskih robota, autonomnih sustava i modernih robotskih tehnologija.
== Uloga IBM‑704 u ranom računalnom vidu ==
IBM 704 imao je važnu ulogu u najranijim eksperimentima računalnog vida tijekom kasnih 1950-ih i ranih 1960-ih. Iako se računalni vid kao disciplina tek počeo formirati, IBM 704 bio je jedno od rijetkih računala koje je imalo dovoljno memorije, aritmetičke snage i mogućnosti prikaza da može obrađivati jednostavne vizualne podatke.
Rani eksperimenti računalnog vida bili su usko povezani s istraživanjima umjetne inteligencije, perceptrona i robotike, a IBM 704 služio je kao platforma za:
* prepoznavanje jednostavnih uzoraka,
* klasifikaciju vizualnih znakova,
* obradu digitaliziranih slika niske rezolucije,
* vizualizaciju podataka na CRT zaslonu IBM 740,
* rane eksperimente u strojnoj percepciji.
=== IBM 704 i CRT zaslon IBM 740 ===
IBM 704 se mogao povezati s vektorskim CRT zaslonom IBM 740, koji je omogućavao:
* prikaz linija, oblika i grafičkih uzoraka,
* vizualizaciju rezultata algoritama,
* prikaz putanja kretanja u robotskim sustavima,
* rane oblike grafičke analize.
Iako primitivni, ovi sustavi bili su preteča kasnijih grafičkih terminala i vizualnih procesora.
=== Rani eksperimenti prepoznavanja uzoraka ===
Na IBM 704 provodili su se rani eksperimenti koji su uključivali:
* prepoznavanje slova i brojeva,
* klasifikaciju jednostavnih geometrijskih oblika,
* analizu kontrasta i rubova,
* rane oblike segmentacije slike.
Podaci su se obično unosili preko:
* digitaliziranih kartica,
* ručno kodiranih matrica piksela,
* senzorskih uređaja povezanih s robotima.
=== Veza s perceptronom i neuralnim mrežama ===
Rosenblattov perceptron, koji je IBM 704 koristio za simulacije učenja, bio je izravno primijenjen na rane zadatke računalnog vida:
* klasifikacija vizualnih uzoraka,
* prepoznavanje znakova,
* jednostavni modeli prepoznavanja oblika.
IBM 704 omogućio je iterativno treniranje perceptrona nad vizualnim podacima, što je bio jedan od prvih primjera **računalnog učenja iz slike**.
=== Primjer jednostavne vizualne analize (povijesni kontekst) ===
Sljedeći SAP kod prikazuje kako je IBM 704 mogao analizirati jednostavnu matricu piksela:
<syntaxhighlight lang="asm">
CLA PIXEL      / učitaj vrijednost piksela
SUB THRESH    / usporedi s pragom
TPL BRIGHT    / ako je veće od praga → svijetli piksel
TMI DARK      / ako je manje → tamni piksel
BRIGHT STO OUT1
TRA NEXT
DARK  STO OUT0
NEXT  TRA LOOP
</syntaxhighlight>
Ovo je bio jedan od prvih primitivnih algoritama za binarnu segmentaciju slike.
=== Povijesni značaj ===
IBM 704 bio je ključan za rani razvoj računalnog vida jer je:
* omogućio prve računalne eksperimente prepoznavanja uzoraka,
* bio platforma za vizualne simulacije u robotici,
* povezao neuralne mreže s vizualnim podacima,
* omogućio prikaz grafike na CRT zaslonu,
* postavio temelje za kasniji razvoj računalnog vida u 1960-ima i 1970-ima.
Bez IBM 704, rani razvoj računalnog vida bio bi znatno sporiji i ograničeniji.
== Uloga IBM‑704 u razvoju rane računalne glazbe ==
IBM 704 imao je iznimno važnu ulogu u povijesti računalne glazbe. Bio je prvo računalo koje je ikada generiralo glazbu sintetički, koristeći digitalne algoritme za stvaranje zvuka. Ovaj povijesni događaj zbio se 1957. godine na Bell Labsu, kada su Max Mathews i njegov tim razvili program '''MUSIC I''' – prvi računalni sustav za digitalnu sintezu zvuka.<ref>https://ccrma.stanford.edu/radiobaton/</ref>
IBM 704 je time postao temelj cijelog područja računalne glazbe, digitalne sinteze, elektroničke glazbe i kasnije MIDI tehnologije.
=== MUSIC I – prvi računalni glazbeni program ===
Max Mathews je 1957. na IBM 704 napisao program '''MUSIC I''', koji je:
* generirao digitalne valne oblike,
* sintetizirao tonove i melodije,
* omogućio kontrolu frekvencije, amplitude i trajanja,
* stvarao zvuk numeričkim izračunima, a ne analognom elektronikom.
Ovo je bio prvi put u povijesti da je glazba nastala isključivo računalnim izračunom.
Kasnije verzije (MUSIC II, III, IV, V) postale su temelj modernih glazbenih sintesajzera i digitalnih audio sustava.
=== Zašto je IBM 704 bio pogodan za glazbenu sintezu ===
IBM 704 imao je nekoliko ključnih značajki koje su omogućile digitalnu sintezu zvuka:
* '''Floating‑point jedinica''' – omogućila precizne izračune valnih oblika.
* '''Brza magnetska jezgra''' – omogućila generiranje uzoraka u stvarnom vremenu (za to doba).
* '''Aritmetička jedinica AC/MQ''' – ubrzala izračune sinusnih i drugih funkcija.
* '''Instrukcijski skup optimiziran za matematičke operacije''' – savršen za DSP (digital signal processing).
* '''Mogućnost generiranja velikih nizova podataka''' – potrebnih za audio uzorke.
IBM 704 je tako postao prvo računalo koje je moglo generirati digitalni zvuk dovoljno brzo da se može rekonstruirati na analognom pretvaraču.
=== Prva računalno generirana pjesma ===
Prvi glazbeni komad generiran na IBM 704 bio je jednostavan ton i kratka melodijska sekvenca. 
Kasnije su generirani:
* jednostavni glazbeni motivi,
* kratke melodije,
* eksperimentalni zvukovi,
* rani oblici elektroničke glazbe.
Ovi eksperimenti bili su preteča:
* digitalnih sintesajzera,
* računalne glazbene kompozicije,
* algoritamske glazbe,
* elektroničke glazbe 1960-ih i 1970-ih.
=== Primjer generiranja tona (povijesni kontekst) ===
Sljedeći SAP kod ilustrira kako je IBM 704 mogao generirati digitalni uzorak sinusnog vala:
<syntaxhighlight lang="asm">
CLA FREQ        / učitaj frekvenciju
MPY TIME        / pomnoži s vremenom
CALL SIN        / pozovi sinusnu funkciju
STO SAMPLE      / spremi uzorak
</syntaxhighlight>
Ovaj uzorak bi se zatim slao na digitalno‑analogni pretvarač.
=== Utjecaj na glazbu i tehnologiju ===
IBM 704 je imao ogroman utjecaj na razvoj glazbene tehnologije:
* postavio je temelje digitalne sinteze,
* omogućio razvoj računalne kompozicije,
* inspirirao elektroničku glazbu,
* doveo do nastanka glazbenih jezika (MUSIC V, Csound),
* utjecao na razvoj MIDI standarda,
* otvorio put modernim DAW sustavima (Ableton, Logic, Pro Tools).
Bez IBM 704, digitalna glazba bi se pojavila mnogo kasnije – ili u potpuno drugačijem obliku.
=== Povijesni značaj ===
IBM 704 je bio:
* prvo računalo koje je generiralo glazbu,
* temelj digitalne sinteze,
* ključni alat za Maxa Mathewsa, „oca računalne glazbe“,
* preteča svih modernih glazbenih algoritama, sintesajzera i audio procesora.
Njegova uloga u glazbenoj povijesti jednako je važna kao i njegova uloga u razvoju FORTRAN-a, LISP-a, robotike i neuralnih mreža.
==Programska podrška==
* [https://github.com/rhobbie/Sim704  Simulator IBM 704]
* [https://sky-visions.com/ibm/704/ Arhiva programa za IBM 704]
* [https://www.piercefuller.com/library/share.html Druga arhiva programa za IBM 704]
* [https://bitsavers.org/pdf/ibm/704/24-6661-2_704_Manual_1955.pdf Operacijski priručnik za IBM 704]
==Izvori==
{{izvori}}
[[Kategorija:IBM]]

Posljednja izmjena od 8. srpanj 2026. u 10:27

IBM 704 ime je za računalo prve generacije koje je razvila tvrtka IBM i jedan je iz serije računala IBM 700. Ovo računalo se proizvodilo od 1954. do 1964. godine.[1]. Glavni arhitekti ovog računala bili su John Backus i Gene Amdahl. Novine ovog računala jesu memorija s magnetskom jezgrom i jedinica s pomičnim zarezom. Povijesna važnost ovog računala jest da je na njemu bio razvijen programski jezik FORTRAN i LISP te SAP asembler. Zbog inovativnih riješenja i dobre programske opreme ovo računalo je rabljeno je za stvaranje prvih sustava umjetne inteligencije, računalnog vida, računalne muzike, i sustava za robotiku.


Povijest razvoja IBM 700 serije

IBM 700 serija bila je prva generacija komercijalnih znanstvenih računala koju je IBM razvio početkom 1950-ih. Serija je započela s modelom IBM 701 (1952.), poznatim kao „Defense Calculator“, koji je bio namijenjen vojnoj i zrakoplovnoj industriji.

  • IBM 702 (1953.) bio je poslovno orijentiran sustav, dok je IBM 703 bio eksperimentalni model.
  • IBM 704 je postao temelj za razvoj FORTRAN-a (1957.), prvog visokorazinskog programskog jezika.

Pravi tehnološki iskorak dogodio se s modelom IBM 704 (1954.), prvim računalom koje je podržavalo:

  • aritmetiku s pomičnim zarezom,
  • indeksne registre,
  • statusne indikatore,
  • magnetsku jezgru kao primarnu memoriju.

Serija se nastavila s modelima IBM 709 (1958.) i IBM 7090 (1959.), koji su bili tranzistorski nasljednici i koristili se u NASA-i, NORAD-u i velikim znanstvenim centrima.

IBM 700 serija ostavila je dubok trag u povijesti računarstva, postavivši standarde arhitekture koji su se zadržali desetljećima.


Arhitektura IBM 704

IBM 704 bio je jedno od prvih komercijalnih računala koje je uvodilo napredne koncepte arhitekture, uključujući rad s pomičnim zarezom, indeksne registre i statusne indikatore. Sustav je bio dizajniran za znanstvene i tehničke izračune, što ga je činilo ključnim alatom u laboratorijima, sveučilištima i ranim zrakoplovnim projektima[2].

Kao računalo prve generacije, osnovna građevna jedinica bila je elektronska cijev koja je bila jako rasprostranjena elektronička komponenta iz kojeg se proizvodilo niz namjenskih i široko namjenskih proizvoda (radio, TV, pojačala). Zbog svoje veličine i karakteristika (zagrijavanje i niska pozdanost), IBM 704 je zahtjevao posebnu sobu s podignutim podom koje je služilo za provođenje kablova od jedinice do jedinice. Za hlađenje elektronskih cijevi bio je ugrađen veliki raslhadni uređaj koji


Iako je je tranzistor bio izumjen 1947. godine, masovna proizvodnja nije započela sve do listopada 1951. godine[3]. IBM kao mnoge druge tvrtke toga vremena nastavljali su s uporabom elektronskih cijevi za proizvodnju računala, jer su bila jako poznata na tržistu i još tome postojao je veliki broj proizvođača u to vrijeme.



Memorija

IBM 704 koristio je magnetsku jezgru kao primarnu memoriju, što je u to vrijeme predstavljalo veliki tehnološki napredak u odnosu na Williamsove cijevi korištene u IBM-u 701. Magnetska jezgra bila je brža, pouzdanija i omogućavala stabilno zadržavanje podataka bez potrebe za stalnim osvježavanjem.

Memorijske karakteristike IBM 704
Parametar Vrijednost Opis
Vrsta memorije Magnetska jezgra Stabilna, brza i pouzdana tehnologija za 1950-e.
Kapacitet 4096 riječi × 36 bita Ukupno 147 456 bitova (18 432 bajta).
Vrijeme pristupa ~12 μs Vrijeme potrebno za čitanje ili pisanje jedne riječi.
Format riječi 36-bitna riječ Koristi se za instrukcije, podatke i floating-point brojeve.
Floating-point format 8-bitni eksponent + 27-bitna mantisa Bez skrivenog bita; excess-128 eksponent.

Periferni uređaji

IBM 704 podržavao je širok spektar perifernih uređaja, što ga je činilo pogodnim za znanstvene, tehničke i administrativne zadatke. Ulazno/izlazni sustav bio je temeljen na magnetskim vrpcama, kartičnim čitačima i pisačima, uz mogućnost prikaza podataka na CRT zaslonima.

Periferni uređaji IBM 704
Uređaj Model Opis
Čitač kartica IBM 711 Učitava programe i podatke s bušenih kartica.
Pisač IBM 716 Ispisuje tekstualni izlaz; glavni uređaj za ljudsko čitanje rezultata.
Bušilica kartica IBM 721 Zapisuje podatke na bušene kartice.
Magnetske vrpce IBM 727 Glavni masovni spremnik; preko 5 milijuna znakova po vrpci.
Kontrolna jedinica vrpci IBM 753 Upravljanje magnetskim vrpcama.
Magnetski bubanj IBM 733 Dodatna memorija za brzi pristup.
Magnetska jezgra (RAM) IBM 737 Primarna memorija sustava (4096 × 36-bitnih riječi).
CRT zaslon IBM 740 21-inčni vektorski prikaz s dugom fosfornom postojanošću; korišten za vizualizaciju podataka.


Aritmetička jedinica (AC i MQ)

Aritmetička jedinica sastojala se od dva glavna 36-bitna registra:

  • AC (Accumulator) – glavni registar za aritmetiku.
  • MQ (Multiplier/Quotient) – registar za množenje i dijeljenje.

Ova dva registra zajedno su omogućavala učinkovite operacije nad velikim brojevima i pomičnim zarezom.

Indeksni registri (XR1, XR2, XR4)

IBM 704 je koristio tri indeksna registra:

  • XR1
  • XR2
  • XR4

Indeksni registri omogućavali su modifikaciju adresa, implementaciju petlji i rad s velikim poljima podataka. Ovo je bio preteča modernog adresiranja u procesorima.

Senzorni indikatori (SI)

Sustav je imao 36 senzorskih indikatora koji su služili kao statusne zastavice:

  • indikatori grešaka (overflow, divide check)
  • indikatori stanja I/O uređaja
  • korisnički definirani indikatori

Programi su mogli testirati i postavljati SI bitove, što je omogućavalo primitivne oblike upravljanja tokom programa.

Instrukcijski format

Instrukcije su bile 36-bitne, s poljima:

  • opkod
  • adresa
  • indeksni modifikator
  • bitovi za uvjetno grananje

Ovaj format omogućavao je fleksibilno adresiranje i kontrolu toka programa.

Floating‑point implementacija

IBM 704 bio je prvo komercijalno računalo koje je imalo ugrađenu hardversku podršku za aritmetiku s pomičnim zarezom. Ovo je bio ključni tehnološki iskorak koji je omogućio razvoj FORTRAN-a i znanstvenih aplikacija koje su zahtijevale visoku numeričku preciznost.

Floating‑point brojevi u IBM 704 bili su pohranjeni u 36‑bitnim riječima, podijeljenima na dva glavna dijela:

  • Mantisa – 27 bitova
  • Eksponent – 8 bitova (excess‑128 format)
  • Znak – 1 bit

Format floating‑point riječi

Format floating‑point broja (IBM 704)
Polje Duljina Opis
Znak mantise 1 bit Određuje pozitivan ili negativan broj.
Mantisa 27 bitova Normalizirana mantisa bez skrivenog bita.
Eksponent 8 bitova Excess‑128 format (stvarni eksponent = pohranjeni − 128).
Rezervirano 0 bitova Format je potpuno iskorišten; nema neiskorištenih bitova.

Excess‑128 eksponent

Eksponent je pohranjen u obliku:

stvarni_eksponent = pohranjeni_eksponent − 128

Ovaj pristup omogućavao je jednostavnije usporedbe i normalizaciju brojeva.

Normalizacija

IBM 704 zahtijevao je da mantisa bude normalizirana tako da najviši bit mantise bude različit od nule. To je omogućavalo maksimalnu preciznost pri izračunima.

Floating‑point operacije

Računalo je podržavalo sljedeće operacije nad floating‑point brojevima:

  • zbrajanje (ADD)
  • oduzimanje (SUB)
  • množenje (MPY)
  • dijeljenje (DIV)

Sve operacije koristile su aritmetičku jedinicu AC/MQ, pri čemu se rezultat normalizirao automatski.

Primjer floating‑point operacije u assembleru

CLA A        / učitaj floating-point broj A
ADD B        / zbroji ga s B
STO C        / spremi rezultat u C

Važnost floating‑point implementacije

Hardverska podrška za pomični zarez bila je ključna za:

  • razvoj FORTRAN-a (1957.)
  • balističke izračune
  • aerodinamičke simulacije
  • nuklearne proračune
  • statističke modele
  • rane znanstvene aplikacije NASA-e

IBM 704 je time postavio standard koji će kasnije preuzeti svi moderni procesori.

Instrukcijski skup IBM 704

Glavne grupe instrukcija IBM 704
Grupa Primjeri Opis
Aritmetičke instrukcije ADD, SUB, MPY, DIV Operacije nad AC i MQ registrima; podrška za cijele brojeve i pomični zarez.
Logičke instrukcije CLA, CLM, COM Čišćenje, komplementiranje i manipulacija bitovima.
Uvjetno grananje TRA, TMI, TPL, TZE Skokovi ovisno o sadržaju AC ili MQ.
Rad sa Sense Indicators TSI, SSI, RSI Testiranje, postavljanje i resetiranje statusnih bitova.
Indeksno adresiranje AXT, TXI Modifikacija adresa pomoću XR1, XR2, XR4.
Ulazno/izlazne instrukcije RDS, WRS, RWT Rad s magnetskom vrpcom, kartičnim čitačem i pisačem.
Kontrola toka programa HLT, NOP Zaustavljanje programa, prazna instrukcija.

Opkodovi IBM 704

Kompletan popis opkoda IBM 704
Opkod Mnemonik Grupa Opis
000 NOP Kontrola Prazna instrukcija; ne radi ništa.
001 HLT Kontrola Zaustavlja izvršavanje programa.
002 TRA Grananje Bezuvjetni skok na adresu.
003 TRN Grananje Skok ako je AC negativan.
004 TMI Grananje Skok ako je AC manji od nule.
005 TPL Grananje Skok ako je AC veći od nule.
006 TZE Grananje Skok ako je AC jednak nuli.
007 TOV Grananje Skok ako je overflow zastavica postavljena.
010 ADD Aritmetika Zbrajanje sadržaja memorije s AC.
011 SUB Aritmetika Oduzimanje sadržaja memorije od AC.
012 MPY Aritmetika Množenje; rezultat ide u AC/MQ.
013 DIV Aritmetika Dijeljenje; količnik u MQ, ostatak u AC.
014 CLA Logičke Učitava vrijednost u AC.
015 CLM Logičke Učitava vrijednost u MQ.
016 COM Logičke Komplementira AC.
020 SHL Logičke Pomak ulijevo.
021 SHR Logičke Pomak udesno.
030 AXT Indeksiranje Učitava vrijednost u XR1, XR2 ili XR4.
031 TXI Indeksiranje Dodaje vrijednost indeksnom registru.
040 RDS I/O Čitanje s magnetske vrpce.
041 WRS I/O Pisanje na magnetsku vrpcu.
042 RWT I/O Čekanje na I/O operaciju.
050 TSI Sense Indicators Testira Sense Indicator n.
051 SSI Sense Indicators Postavlja Sense Indicator n.
052 RSI Sense Indicators Resetira Sense Indicator n.

Registri

Registri u računalu IBM 704
Podatkovni registri
S Q P 01 02 03 ... 17 18 19 20 21 ... 35 (mjesto bit-a)
Akumulator AC
S   Množitelj/Količnik MQ
00 01 02 03 ... 17 18 19 20 21 ... 35 (mjesto bit-a)
  Senzorni indikatori SI
Indeksni registri
03 ... 17 (mjesto bit-a)
  Indeksni Registar 1   XR1 (XRA)
  Indeksni Registar 2   XR2 (XRB)
  Indeksni Registar 4   XR4 (XRC)
Brojač naredbi
03 ... 17 (mjesto bit-a)
  Brojač Naredbi   IC


Senzorni indikatori

Senzorni indikatori - su posebni statusni bitovi u IBM 704 koj su se u praksi rabili za provjeru grešaka, grananje ovisno o stanju sustava, upravljanje perifernim jedinicama, te za signalizaciju posebnih događaja. Kroz njih programeri su mogli održavati stanje sustava, signalizirati određene uvjete tokom izvršavanje naredbi, čitanje i postavljanje naredbi i tako su služili za jednostane oblike upravljanja tokom programa.

Sense Indicators (IBM 704)
SI broj Naziv / funkcija Opis
0 Overflow flag Postavlja se pri prekoračenju rezultata u akumulatoru (AC) ili količniku (MQ).
1 Divide check Signalizira pogrešku pri dijeljenju, uključujući dijeljenje nulom.
2 I/O ready Uređaj spreman za prijenos podataka.
3 I/O complete Završetak operacije ulaza/izlaza.
4 Tape mark Očitana oznaka kraja bloka na magnetskoj vrpci.
5 Printer ready Pisač spreman za rad.
6 Card reader ready Čitač kartica spreman.
7 Card punch ready Bušilica kartica spremna.
8–15 Peripheral flags Razni signali perifernih uređaja (disk, vrpca, pisač).
16–35 User-defined flags Zastavice koje programer može slobodno koristiti za logiku grananja.

Korištenje u IBM 704 assembleru

IBM 704 je imao posebne instrukcije za rad sa Sense Indicators:

TSI n
Testira Sense Indicator n. Ako je postavljen, izvršavanje se nastavlja normalno; ako nije, preskače se sljedeća instrukcija.
TSI 3      / provjeri je li I/O complete
TRA DONE   / ako je postavljen, skoči na DONE
SSI n
Postavlja Sense Indicator n.
RSI n
Resetira Sense Indicator n.
TSI 1      / provjeri divide check
TRA ERROR  / ako je SI1 = 1, idi na ERROR

SSI 20     / postavi korisnički indikator 20
RSI 3      / resetiraj I/O complete indikator

Usporedba s modernim statusnim registrima

IBM 704 Sense Indicators Moderni statusni registri (x86, ARM, RISC-V)
36 jednobitnih zastavica 8–32 bitni statusni registri
Ručno postavljanje i brisanje Automatsko postavljanje od strane ALU
Koriste se za I/O signalizaciju I/O signalizacija preko interrupt kontrolera
Jednostavne logičke zastavice Zastavice za aritmetiku, usporedbe, prekide
Programer koristi dio SI kao "user flags" Moderni jezici koriste varijable, strukture, objekte
Grananje preko TSI instrukcije Grananje preko CMP/JMP, BEQ/BNE, BLT/BGT

Primjeri IBM 704 assembler koda

Zbrajanje dvaju brojeva

CLA A        / učitaj A u AC
ADD B        / dodaj B
STO C        / spremi rezultat u C

Provjera negativnog broja

CLA X        / učitaj X
TMI NEG      / ako je X < 0, idi na NEG
TRA DONE     / inače nastavi
NEG STO Y    / spremi negativnu vrijednost
DONE HLT

Množenje i dijeljenje

CLA A
MPY B        / AC*B  AC/MQ
DIV C        / (AC/MQ) / C  MQ (količnik), AC (ostatak)
STO Q        / spremi količnik
STO R        / spremi ostatak

Korištenje Sense Indicators

TSI 3        / provjeri I/O complete
TRA IO_OK    / ako je SI3 = 1, idi na IO_OK
SSI 20       / postavi korisnički indikator 20
IO_OK HLT

Performanse IBM 704

IBM 704 bio je jedno od najbržih znanstvenih računala svoje generacije. Njegova arhitektura s pomičnim zarezom, magnetskom jezgrom i specijaliziranim aritmetičkim registrima omogućavala je znatno bolje performanse u odnosu na prethodne modele IBM 701 i IBM 702. Sustav je bio optimiziran za matematičke operacije, simulacije, statističke izračune i obradu velikih numeričkih skupova podataka.

Performanse računala IBM 704
Parametar Vrijednost Opis
Brzina zbrajanja ~12 μs Vrijeme potrebno za izvršavanje jedne ADD instrukcije.
Brzina množenja ~20 μs Vrijeme za MPY instrukciju; rezultat ide u AC/MQ.
Brzina dijeljenja ~38 μs Vrijeme za DIV instrukciju; količnik u MQ, ostatak u AC.
Memorija 4096 riječi × 36 bita Magnetska jezgra; pristup ~12 μs.
Ciklus instrukcije ~12 μs Prosječno vrijeme za dohvat i izvršavanje jednostavne instrukcije.
Brzina I/O operacija 7200 kartica/min (čitač) Kartični čitač i bušilica bili su glavni ulazno/izlazni sustavi.
Magnetske vrpce 12 500 znakovnih blokova/s Ovisno o uređaju; korišteno za masovno spremanje podataka.
Preciznost pomičnog zareza 27-bitni eksponent + 8-bitna mantisa Omogućavalo znanstvene izračune velike preciznosti.

Pouzdanost

Iako je IBM 704 bio znatno pouzdaniji od svog prethodnika IBM 701, i dalje je bio stroj temeljen na vakuumskim cijevima, što je značilo relativno česte kvarove prema današnjim standardima. Prosječno vrijeme između kvarova iznosilo je oko 8 sati, što je ograničavalo veličinu programa koje je bilo moguće kompajlirati ili izvršavati bez prekida.

Prvi FORTRAN kompajleri morali su biti iznimno učinkoviti jer bi preduga kompilacija mogla biti prekinuta kvarom sustava. Unatoč tome, IBM 704 je bio dovoljno pouzdan da postane temelj za razvoj FORTRAN-a, LISP-a, ranih neuralnih mreža i brojnih znanstvenih projekata.

Pouzdanost IBM 704
Parametar Vrijednost Opis
MTBF (mean time between failure) ~8 sati Prosječno vrijeme rada prije kvara.
Usporedba s IBM 701 ~30 minuta IBM 704 bio je znatno pouzdaniji od svog prethodnika.
Utjecaj na softver Ograničena veličina programa Kompilacije su morale biti kratke zbog mogućih kvarova.
Tehnologija Vakuumske cijevi Glavni uzrok kvarova i zagrijavanja sustava.

SAP asembler

SAP (Symbolic Assembly Program) bio je službeni asembler za IBM 704 i predstavljao je jedan od najranijih i najutjecajnijih asemblera u povijesti računarstva. Razvijen je unutar IBM-a sredinom 1950-ih kako bi programerima omogućio pisanje simboličkog koda umjesto ručnog unošenja numeričkih opkoda i adresa.

SAP je bio ključan za razvoj FORTRAN-a, LISP-a i mnogih ranih znanstvenih aplikacija, jer je omogućio jednostavnije pisanje, čitanje i održavanje programa na IBM 704.

Značajke SAP asemblera

SAP je imao nekoliko naprednih značajki za svoje vrijeme:

  • Simboličke oznake – programeri su mogli koristiti imena umjesto numeričkih adresa.
  • Automatsko izračunavanje adresa – asembler je sam određivao lokacije instrukcija.
  • Podrška za indeksne registre – XR1, XR2 i XR4 mogli su se koristiti u adresiranju.
  • Jednostavna sintaksa – instrukcije su bile kratke i čitljive.
  • Integracija s FORTRAN-om – FORTRAN kompajler generirao je SAP kod.
  • Podrška za floating‑point operacije – izravno korištenje AC/MQ jedinice.

SAP je bio jedan od prvih asemblera koji je omogućio relativno visok stupanj apstrakcije u odnosu na strojni kod.

Struktura SAP instrukcije

Instrukcije su se sastojale od:

  • mnemonika (ADD, SUB, MPY, DIV, TRA…)
  • adrese ili simbola
  • opcionalnog indeksnog modifikatora
  • komentara

Primjer strukture:

MNEMONIK  ADRESA,XR   / komentar

Primjer SAP koda

Slijedi povijesno točan primjer SAP koda za IBM 704:

A      DEC 5          / definiraj konstantu A
B      DEC 7          / definiraj konstantu B
C      BSS 1          / rezerviraj prostor za rezultat

       CLA A          / učitaj A u AC
       ADD B          / dodaj B
       STO C          / spremi rezultat u C
       HLT            / zaustavi program

Korištenje indeksnih registara

SAP je omogućavao jednostavno korištenje XR1, XR2 i XR4:

LOOP   CLA ARRAY,XR1  / učitaj element polja
       ADD SUM        / dodaj na sumu
       STO SUM        / spremi rezultat
       TXI XR1,1      / povećaj indeks
       TPL LOOP       / ako je pozitivan, nastavi petlju

Ovo je bio preteča modernih petlji u visokorazinskim jezicima.

SAP i FORTRAN

Prvi FORTRAN kompajler generirao je SAP kod koji se zatim prevodio u strojni kod IBM 704. Zbog toga je SAP bio ključan za:

  • optimizaciju FORTRAN programa,
  • implementaciju DO petlji,
  • rad s poljima i matricama,
  • floating‑point operacije,
  • kontrolu toka programa.

SAP i LISP

Prva implementacija LISP-a (1958.) bila je napisana upravo u SAP asembleru. SAP je omogućio:

  • manipulaciju cons‑struktura,
  • implementaciju CAR i CDR operacija,
  • rekurziju,
  • dinamičko upravljanje memorijom.

Bez SAP-a, LISP ne bi mogao biti implementiran na IBM 704.

Povijesni značaj SAP-a

SAP je bio jedan od najvažnijih asemblera 1950-ih i 1960-ih. Njegov utjecaj vidljiv je u:

  • razvoju FORTRAN-a,
  • nastanku LISP-a,
  • ranim AI projektima,
  • znanstvenim simulacijama,
  • razvoju modernih asemblera i kompajlera.

SAP je postavio temelje za simboličko programiranje i bio je ključni alat u zlatnom dobu ranog računarstva.


Uloga IBM‑704 u razvoju LISP-a

IBM 704 imao je ključnu ulogu u nastanku programskog jezika LISP, jednog od najvažnijih jezika u povijesti računarstva. LISP je 1958. godine razvio John McCarthy na MIT-u, a upravo je IBM 704 bio prvo računalo na kojem je LISP implementiran i izvršavan.[4]

Razvoj LISP-a bio je izravno povezan s arhitekturom IBM 704, posebno s njegovim:

  • 36-bitnim riječima,
  • aritmetičkom jedinicom AC/MQ,
  • indeksnim registrima,
  • mogućnošću manipulacije adresama,
  • podrškom za uvjetno grananje,
  • te fleksibilnim instrukcijskim formatom.

Zašto je IBM 704 bio pogodan za LISP

IBM 704 imao je nekoliko arhitekturnih značajki koje su se pokazale idealnima za implementaciju LISP-a:

  • 36-bitne riječi omogućavale su učinkovito predstavljanje parova (cons cells).
  • Indeksni registri olakšavali su rad s listama i rekurzivnim strukturama.
  • Instrukcije grananja (TRA, TMI, TPL, TZE) omogućavale su jednostavnu implementaciju rekurzije.
  • Magnetska jezgra bila je dovoljno brza za dinamičke strukture podataka.
  • Podrška za floating-point olakšala je rad s matematičkim funkcijama.

McCarthy je iskoristio ove mogućnosti kako bi implementirao osnovne LISP konstrukte: CONS, CAR, CDR, rekurziju, lambda‑izraze i funkcije višeg reda.

Prva implementacija LISP-a

Prva verzija LISP-a bila je napisana u SAP asembleru za IBM 704. Ova implementacija uključivala je:

  • interpreter,
  • evaluator,
  • upravljanje memorijom,
  • implementaciju cons‑struktura,
  • osnovne matematičke funkcije,
  • te mehanizme za rekurziju i funkcije višeg reda.

LISP je na IBM 704 radio kao interpretirani jezik, a programi su se izvršavali izravno nad strukturom lista u memoriji.

Povijesni značaj

IBM 704 je omogućio LISP-u da postane prvi široko korišteni jezik za:

  • umjetnu inteligenciju,
  • simboličku manipulaciju,
  • matematičku logiku,
  • rane ekspertske sustave,
  • istraživanje strojnog učenja.

Bez IBM 704, LISP bi vjerojatno bio znatno drugačiji — ili bi se pojavio mnogo kasnije.

Primjer ranog LISP izraza (povijesni kontekst)

Iako se LISP nije zapisivao u assembleru, njegovi izrazi su se prevodili u SAP kod za IBM 704. Primjer jednostavne LISP funkcije:

(define (square x)
  (* x x))

Ovaj izraz bi se na IBM 704 interno pretvorio u operacije nad cons‑struktura i pozive aritmetičkih instrukcija MPY i ADD.

Utjecaj na daljnji razvoj

IBM 704 je bio platforma na kojoj su nastale ključne ideje:

  • automatsko upravljanje memorijom,
  • rekurzija kao temeljni mehanizam,
  • funkcije višeg reda,
  • lambda‑račun,
  • simbolička obrada podataka.

Ove ideje postale su temelj modernih programskih jezika, od Schemea i Prologa do Pythona i JavaScripta.

Uloga IBM‑704 u razvoju FORTRAN-a

IBM 704 imao je presudnu ulogu u nastanku FORTRAN-a (Formula Translation), prvog široko korištenog visokorazinskog programskog jezika. FORTRAN je razvijen 1957. godine u IBM-u pod vodstvom Johna Backusa, a IBM 704 bio je prvo računalo na kojem je FORTRAN implementiran, kompajliran i izvršavan.

Arhitektura IBM 704 izravno je oblikovala dizajn FORTRAN-a. Njegova podrška za aritmetiku s pomičnim zarezom, indeksne registre, statusne indikatore i 36-bitne riječi omogućila je stvaranje jezika koji je bio optimiziran za znanstvene i tehničke izračune.

Zašto je IBM 704 bio ključan za FORTRAN

IBM 704 posjedovao je nekoliko arhitekturnih značajki koje su bile presudne za razvoj FORTRAN-a:

  • Hardverska floating‑point jedinica – omogućila je izravnu podršku za matematičke operacije.
  • Aritmetički registri AC i MQ – olakšali su implement

Uloga IBM‑704 u razvoju ranih neuralnih mreža

IBM 704 imao je važnu ulogu u razvoju najranijih modela umjetnih neuronskih mreža tijekom kasnih 1950-ih i ranih 1960-ih. Iako su ti modeli bili daleko jednostavniji od današnjih dubokih mreža, IBM 704 je bio jedno od rijetkih računala koje je imalo dovoljno memorije, brzine i aritmetičkih mogućnosti da može izvoditi simulacije neuronskih mreža u praksi.

Rani pioniri umjetne inteligencije, uključujući Franka Rosenblatta, Herberta Simona, Allena Newella i istraživače s MIT-a i Cornell Aeronautical Laboratory, koristili su IBM 704 za implementaciju i testiranje prvih algoritama koji su simulirali neuronsko učenje.

IBM 704 i perceptron

Najvažniji doprinos IBM 704 razvoju neuralnih mreža bio je u implementaciji i simulaciji **Rosenblattovog perceptrona**, prvog formalnog modela neuronske mreže koji je mogao učiti iz podataka.[5]

IBM 704 omogućio je:

  • izračun težina perceptrona,
  • simulaciju učenja kroz iteracije,
  • rad s matricama i vektorima,
  • evaluaciju linearnih klasifikatora,
  • testiranje različitih skupova podataka.

Iako je perceptron kasnije imao i hardversku implementaciju (Mark I Perceptron), IBM 704 bio je ključan za **prve softverske simulacije** koje su potvrdile da se neuronske mreže mogu trenirati računalno.

Zašto je IBM 704 bio pogodan za neuralne mreže

IBM 704 imao je nekoliko arhitekturnih značajki koje su bile iznimno korisne za rane AI eksperimente:

  • Floating‑point jedinica – omogućila je precizne izračune težina i aktivacijskih funkcija.
  • Aritmetički registri AC/MQ – ubrzali su operacije nad vektorima.
  • Indeksni registri – olakšali su rad s matricama i iteracijama.
  • Magnetska jezgra – bila je dovoljno brza za ponavljajuće izračune.
  • Instrukcije grananja – omogućile su implementaciju algoritama učenja.

Zbog toga je IBM 704 bio jedno od prvih računala koje je moglo izvoditi **iterativne algoritme učenja**, temeljne za neuralne mreže.

Rani eksperimenti umjetne inteligencije

Na IBM 704 provodili su se rani eksperimenti koji su uključivali:

  • simulaciju perceptrona,
  • klasifikaciju jednostavnih vizualnih uzoraka,
  • prepoznavanje znakova,
  • rane oblike strojne percepcije,
  • istraživanje linearnih i nelinearnih funkcija aktivacije.

Ovi eksperimenti bili su temelj za kasniji razvoj:

  • višeslojnih perceptrona,
  • backpropagation algoritma,
  • dubokog učenja,
  • računalnog vida.

Primjer jednostavne perceptronske iteracije (povijesni kontekst)

Sljedeći pseudokod prikazuje kako je perceptron bio implementiran na IBM 704:

CLA W1        / učitaj težinu
MPY X1        / pomnoži s ulazom
ADD SUM       / dodaj na akumuliranu sumu
STO SUM       / spremi novu vrijednost

... ponavljati za sve ulaze ...

CLA SUM
TMI UPDATE    / ako je pogreška negativna, ažuriraj težine
TPL UPDATE    / ako je pogreška pozitivna, također ažuriraj

UPDATE:
ADD ERROR     / korekcija težine
STO W1

Ovo je bio jedan od prvih primjera **računalnog učenja** u povijesti.

Povijesni značaj

IBM 704 bio je ključan za rani razvoj umjetne inteligencije jer je:

  • omogućio prve računalne simulacije neuronskih mreža,
  • bio platforma za perceptron i rane modele učenja,
  • omogućio istraživanje algoritama koji su kasnije postali temelj dubokog učenja,
  • povezao AI istraživanje s praktičnim računalnim sustavima.

Bez IBM 704, razvoj ranih neuralnih mreža bio bi znatno sporiji i ograničeniji.


Uloga IBM‑704 u ranoj robotici

IBM 704 imao je važnu ulogu u razvoju najranijih oblika robotike i automatizacije tijekom kasnih 1950-ih i ranih 1960-ih. Iako se u to vrijeme pojam „robotika“ tek počeo pojavljivati u znanstvenoj literaturi, IBM 704 bio je jedno od prvih računala koje je moglo upravljati mehaničkim sustavima, analizirati senzorske podatke i izvoditi algoritme koji su predstavljali preteču modernog upravljanja robotima.

Rani robotski sustavi bili su primitivni u odnosu na današnje, ali IBM 704 je omogućio:

  • upravljanje aktuatorima i elektromehaničkim uređajima,
  • obradu ulaznih signala iz senzora,
  • simulaciju kretanja i kontrolnih petlji,
  • rane eksperimente u automatskom upravljanju,
  • integraciju s vizualnim sustavima (CRT prikaz IBM 740).

Rani eksperimenti automatizacije

IBM 704 korišten je u laboratorijima i istraživačkim centrima za:

  • upravljanje robotskim manipulatorima,
  • simulaciju kinematike i dinamike,
  • upravljanje servo‑motorima,
  • automatizaciju industrijskih procesa,
  • rane oblike povratne sprege (feedback control).

Ovi sustavi nisu bili roboti u modernom smislu, ali su predstavljali ključne korake prema:

  • numeričkom upravljanju strojevima (NC machines),
  • automatskim manipulatorima,
  • sustavima za automatsko pozicioniranje,
  • ranim oblicima cybernetike.

IBM 704 i cybernetika

IBM 704 bio je često korišten u istraživanjima inspiriranim radom Norberta Wienera, osnivača cybernetike. Sustav je omogućavao:

  • simulaciju povratne sprege,
  • analizu stabilnosti sustava,
  • implementaciju kontrolnih algoritama,
  • rane oblike adaptivnog upravljanja.

Ovo je bilo ključno za razvoj robotskih sustava koji se mogu prilagođavati promjenama u okruženju.

Vizualni sustavi i IBM 740

IBM 704 se mogao povezati s CRT zaslonom IBM 740, koji je omogućavao:

  • prikaz vektorskih grafika,
  • vizualizaciju putanja kretanja,
  • prikaz senzorskih podataka,
  • rane eksperimente u računalnom vidu.

Iako primitivni, ovi sustavi bili su preteča kasnijih robotskih vizualnih sustava.

Primjer jednostavne kontrolne petlje (povijesni kontekst)

Sljedeći SAP kod prikazuje kako je IBM 704 mogao implementirati jednostavnu kontrolnu petlju za upravljanje aktuatorom:

READSENSOR  RDS SENS        / očitaj senzor
           CLA SENS        / učitaj vrijednost
           SUB TARGET      / usporedi s ciljem
           TPL INCREASE    / ako je pozitivno, povećaj izlaz
           TMI DECREASE    / ako je negativno, smanji izlaz

INCREASE   ADD STEP        / povećaj upravljački signal
           STO ACTUATOR
           TRA LOOP

DECREASE   SUB STEP        / smanji upravljački signal
           STO ACTUATOR
           TRA LOOP

LOOP       TRA READSENSOR  / ponovi petlju

Ovo je bio jedan od prvih primjera računalno upravljanih mehaničkih sustava.

Povijesni značaj

IBM 704 bio je ključan za rani razvoj robotike jer je:

  • omogućio prve računalne simulacije upravljanja strojevima,
  • bio platforma za cybernetičke eksperimente,
  • omogućio integraciju senzora i aktuatora,
  • pružio temelj za numeričko upravljanje strojevima (NC),
  • povezao mehaniku, elektroniku i računalne algoritme.

IBM 704 je time postavio temelje za kasniji razvoj industrijskih robota, autonomnih sustava i modernih robotskih tehnologija.


Uloga IBM‑704 u ranom računalnom vidu

IBM 704 imao je važnu ulogu u najranijim eksperimentima računalnog vida tijekom kasnih 1950-ih i ranih 1960-ih. Iako se računalni vid kao disciplina tek počeo formirati, IBM 704 bio je jedno od rijetkih računala koje je imalo dovoljno memorije, aritmetičke snage i mogućnosti prikaza da može obrađivati jednostavne vizualne podatke.

Rani eksperimenti računalnog vida bili su usko povezani s istraživanjima umjetne inteligencije, perceptrona i robotike, a IBM 704 služio je kao platforma za:

  • prepoznavanje jednostavnih uzoraka,
  • klasifikaciju vizualnih znakova,
  • obradu digitaliziranih slika niske rezolucije,
  • vizualizaciju podataka na CRT zaslonu IBM 740,
  • rane eksperimente u strojnoj percepciji.

IBM 704 i CRT zaslon IBM 740

IBM 704 se mogao povezati s vektorskim CRT zaslonom IBM 740, koji je omogućavao:

  • prikaz linija, oblika i grafičkih uzoraka,
  • vizualizaciju rezultata algoritama,
  • prikaz putanja kretanja u robotskim sustavima,
  • rane oblike grafičke analize.

Iako primitivni, ovi sustavi bili su preteča kasnijih grafičkih terminala i vizualnih procesora.

Rani eksperimenti prepoznavanja uzoraka

Na IBM 704 provodili su se rani eksperimenti koji su uključivali:

  • prepoznavanje slova i brojeva,
  • klasifikaciju jednostavnih geometrijskih oblika,
  • analizu kontrasta i rubova,
  • rane oblike segmentacije slike.

Podaci su se obično unosili preko:

  • digitaliziranih kartica,
  • ručno kodiranih matrica piksela,
  • senzorskih uređaja povezanih s robotima.

Veza s perceptronom i neuralnim mrežama

Rosenblattov perceptron, koji je IBM 704 koristio za simulacije učenja, bio je izravno primijenjen na rane zadatke računalnog vida:

  • klasifikacija vizualnih uzoraka,
  • prepoznavanje znakova,
  • jednostavni modeli prepoznavanja oblika.

IBM 704 omogućio je iterativno treniranje perceptrona nad vizualnim podacima, što je bio jedan od prvih primjera **računalnog učenja iz slike**.

Primjer jednostavne vizualne analize (povijesni kontekst)

Sljedeći SAP kod prikazuje kako je IBM 704 mogao analizirati jednostavnu matricu piksela:

CLA PIXEL      / učitaj vrijednost piksela
SUB THRESH     / usporedi s pragom
TPL BRIGHT     / ako je veće od praga  svijetli piksel
TMI DARK       / ako je manje  tamni piksel

BRIGHT STO OUT1
TRA NEXT

DARK   STO OUT0
NEXT   TRA LOOP

Ovo je bio jedan od prvih primitivnih algoritama za binarnu segmentaciju slike.

Povijesni značaj

IBM 704 bio je ključan za rani razvoj računalnog vida jer je:

  • omogućio prve računalne eksperimente prepoznavanja uzoraka,
  • bio platforma za vizualne simulacije u robotici,
  • povezao neuralne mreže s vizualnim podacima,
  • omogućio prikaz grafike na CRT zaslonu,
  • postavio temelje za kasniji razvoj računalnog vida u 1960-ima i 1970-ima.

Bez IBM 704, rani razvoj računalnog vida bio bi znatno sporiji i ograničeniji.

Uloga IBM‑704 u razvoju rane računalne glazbe

IBM 704 imao je iznimno važnu ulogu u povijesti računalne glazbe. Bio je prvo računalo koje je ikada generiralo glazbu sintetički, koristeći digitalne algoritme za stvaranje zvuka. Ovaj povijesni događaj zbio se 1957. godine na Bell Labsu, kada su Max Mathews i njegov tim razvili program MUSIC I – prvi računalni sustav za digitalnu sintezu zvuka.[6]

IBM 704 je time postao temelj cijelog područja računalne glazbe, digitalne sinteze, elektroničke glazbe i kasnije MIDI tehnologije.

MUSIC I – prvi računalni glazbeni program

Max Mathews je 1957. na IBM 704 napisao program MUSIC I, koji je:

  • generirao digitalne valne oblike,
  • sintetizirao tonove i melodije,
  • omogućio kontrolu frekvencije, amplitude i trajanja,
  • stvarao zvuk numeričkim izračunima, a ne analognom elektronikom.

Ovo je bio prvi put u povijesti da je glazba nastala isključivo računalnim izračunom.

Kasnije verzije (MUSIC II, III, IV, V) postale su temelj modernih glazbenih sintesajzera i digitalnih audio sustava.

Zašto je IBM 704 bio pogodan za glazbenu sintezu

IBM 704 imao je nekoliko ključnih značajki koje su omogućile digitalnu sintezu zvuka:

  • Floating‑point jedinica – omogućila precizne izračune valnih oblika.
  • Brza magnetska jezgra – omogućila generiranje uzoraka u stvarnom vremenu (za to doba).
  • Aritmetička jedinica AC/MQ – ubrzala izračune sinusnih i drugih funkcija.
  • Instrukcijski skup optimiziran za matematičke operacije – savršen za DSP (digital signal processing).
  • Mogućnost generiranja velikih nizova podataka – potrebnih za audio uzorke.

IBM 704 je tako postao prvo računalo koje je moglo generirati digitalni zvuk dovoljno brzo da se može rekonstruirati na analognom pretvaraču.

Prva računalno generirana pjesma

Prvi glazbeni komad generiran na IBM 704 bio je jednostavan ton i kratka melodijska sekvenca. Kasnije su generirani:

  • jednostavni glazbeni motivi,
  • kratke melodije,
  • eksperimentalni zvukovi,
  • rani oblici elektroničke glazbe.

Ovi eksperimenti bili su preteča:

  • digitalnih sintesajzera,
  • računalne glazbene kompozicije,
  • algoritamske glazbe,
  • elektroničke glazbe 1960-ih i 1970-ih.

Primjer generiranja tona (povijesni kontekst)

Sljedeći SAP kod ilustrira kako je IBM 704 mogao generirati digitalni uzorak sinusnog vala:

CLA FREQ         / učitaj frekvenciju
MPY TIME         / pomnoži s vremenom
CALL SIN         / pozovi sinusnu funkciju
STO SAMPLE       / spremi uzorak

Ovaj uzorak bi se zatim slao na digitalno‑analogni pretvarač.

Utjecaj na glazbu i tehnologiju

IBM 704 je imao ogroman utjecaj na razvoj glazbene tehnologije:

  • postavio je temelje digitalne sinteze,
  • omogućio razvoj računalne kompozicije,
  • inspirirao elektroničku glazbu,
  • doveo do nastanka glazbenih jezika (MUSIC V, Csound),
  • utjecao na razvoj MIDI standarda,
  • otvorio put modernim DAW sustavima (Ableton, Logic, Pro Tools).

Bez IBM 704, digitalna glazba bi se pojavila mnogo kasnije – ili u potpuno drugačijem obliku.

Povijesni značaj

IBM 704 je bio:

  • prvo računalo koje je generiralo glazbu,
  • temelj digitalne sinteze,
  • ključni alat za Maxa Mathewsa, „oca računalne glazbe“,
  • preteča svih modernih glazbenih algoritama, sintesajzera i audio procesora.

Njegova uloga u glazbenoj povijesti jednako je važna kao i njegova uloga u razvoju FORTRAN-a, LISP-a, robotike i neuralnih mreža.

Programska podrška

Izvori