IBM 704: razlika između inačica
| Redak 596: | Redak 596: | ||
| 27-bitni eksponent + 8-bitna mantisa | | 27-bitni eksponent + 8-bitna mantisa | ||
| Omogućavalo znanstvene izračune velike preciznosti. | | 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. | |||
|} | |} | ||
Inačica od 7. srpanj 2026. u 10:00
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]. Povijesna važnost ovog računala jest da je na njemu bio razvijen programski jezik FORTRAN i LISP te SAP asembler.
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.
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.
| 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.
| 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.
Instrukcijski skup 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
| 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
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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.
| 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.
| 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.
| 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. |