Kod

Architektura von Neumanna: zasady i pierwsze komputery na niej oparte

Architektura von Neumanna: zasady i pierwsze komputery na niej oparte

Bezpłatny kurs Pythona ➞ Mini-kurs dla początkujących i doświadczonych programistów. 4 ciekawe projekty w portfolio, bezpośrednia komunikacja z prelegentem. Kliknij i dowiedz się, czego możesz nauczyć się na kursie.

Dowiedz się więcej

W 1946 roku amerykański naukowiec Herman Goldstine przedstawił artykuł matematyka Johna von Neumanna zatytułowany „Wstępne rozważania na temat logicznego projektu komputera elektronicznego”. Artykuł ten był ważnym wkładem w rozwój informatyki, ponieważ przedstawił podstawowe zasady leżące u podstaw architektury wszystkich współczesnych komputerów. Zasady opisane przez von Neumanna obejmują koncepcję przechowywania programów, podział pamięci na dane i instrukcje oraz wykorzystanie jednostki arytmetycznej do wykonywania operacji. Idee te nadal znacząco wpływają na projektowanie i rozwój systemów obliczeniowych, stanowiąc podstawę współczesnych komputerów.

  • Pamięć komputera składa się z komórek, z których każda ma przypisany numer – adres. Komputer ma dostęp do każdej komórki w dowolnym momencie, a dostęp do jej zawartości można uzyskać za pomocą adresu.
  • Pamięć komputera służy zarówno do przechowywania danych, jak i programów. Polecenia i liczby są kodowane w systemie binarnym. Na poleceniach można wykonywać te same operacje, co na liczbach. Na tej zasadzie opiera się tłumaczenie – tłumaczenie tekstu programu z języka wysokiego poziomu na język konkretnego komputera.
  • Komputer jest sterowany programem składającym się z poleceń przechowywanych w sekwencyjnych komórkach pamięci. Każde polecenie wykonuje operację z zestawu operacji dostępnych dla komputera.
  • Komputer wykonuje polecenia sekwencyjnie – od pierwszego do ostatniego, zgodnie z kolejnością, w jakiej występują w programie. Kolejność tę można zmienić za pomocą specjalnych poleceń w zależności od wyników obliczeń.

Jak powstała architektura von Neumanna

Za pierwszy komputer elektroniczny na świecie uważa się ENIAC, który powstał w 1946 roku na Uniwersytecie Pensylwanii w USA. To ogromne urządzenie ważyło 30 ton i wykorzystywało 18 000 lamp próżniowych do wykonywania obliczeń. Komputer działał w systemie dziesiętnym, co znacznie spowolniło przetwarzanie danych i zwiększyło zużycie lamp. ENIAC stał się ważnym etapem w historii informatyki, kładąc podwaliny pod przyszły rozwój w dziedzinie technologii komputerowej.

ENIAC nie był komputerem programowalnym, lecz komputerem komutowanym, sterowanym za pomocą specjalnej tablicy połączeń. Aby skonfigurować program, konieczne było wykonanie skomplikowanego połączenia kablowego, co mogło zająć wiele godzin, a nawet dni. Proces ten wymagał wysokich umiejętności i precyzji, ponieważ każdy błąd w okablowaniu mógł prowadzić do błędnych obliczeń. Pomimo swoich ograniczeń, ENIAC stanowił ważny krok w rozwoju technologii obliczeniowej i utorował drogę przyszłym komputerom programowalnym.

Twórcy ENIAC, John Eckert i John Mauchly, dostrzegli jego wady, dlatego w 1943 roku, jeszcze przed ukończeniem ENIAC, rozpoczęli prace nad ulepszonym modelem komputera elektronicznego. Nowy komputer nazwano EDVAC, co oznacza Elektroniczny Automatyczny Komputer o Zmiennych Dyskretnych. Projekt został wykonany w ścisłej tajemnicy.

Podczas prac nad komputerem EDVAC, John Eckert po raz pierwszy zaproponował koncepcję pamięci programowej. Pamięć EDVAC wykorzystywała linie opóźniające – specjalistyczne lampy rtęciowe do przechowywania informacji. Dane były kodowane binarnie, co pozwoliło zmniejszyć liczbę potrzebnych lamp próżniowych. Ta innowacja była ważnym krokiem w ewolucji informatyki, zapewniając bardziej wydajne i kompaktowe wykorzystanie zasobów.

Półtora roku później do Eckerta i Mauchly'ego dołączył John von Neumann, wybitny matematyk i uczestnik Projektu Manhattan, który został konsultantem naukowym. Szybko dostrzegł potencjał nowego komputera elektronicznego i pomógł w uzyskaniu finansowania od armii USA. Wkład von Neumanna w rozwój komputera okazał się kluczowy dla dalszych badań i ulepszeń technologicznych, które miały znaczący wpływ na rozwój informatyki w kolejnych latach.

Naukowcy byli zobowiązani do regularnego raportowania swoich prac wojsku. Von Neumann przygotował „Wstępny raport o maszynie EDVAC”, w którym szczegółowo opisał główne elementy i logikę jej działania. Po przesłaniu raportu swojemu wojskowemu przełożonemu, Goldstine'owi, zaimponował mu głębią swoich idei i jasnością koncepcji. Ignorując obawy o zachowanie tajemnicy, Goldstine przedrukował i rozpowszechnił raport europejskim i amerykańskim naukowcom bez wiedzy Eckerta i Mauchly'ego, wymieniając jedynie von Neumanna jako autora. Incydent ten stanowił znaczący krok w upowszechnianiu wiedzy o komputerach i ich potencjale, przyczyniając się do rozwoju informatyki.

Raport wywarł kolosalny wpływ na społeczność naukową, wywołując silną reakcję. Architektura von Neumanna opisana w tym dokumencie stała się fundamentem dla konstrukcji nowoczesnych komputerów elektronicznych. Ze względu na sławę Johna von Neumanna w kręgach naukowych nie było wątpliwości, że był on jedynym autorem tego raportu. Ta architektura położyła podwaliny pod rozwój informatyki, definiując fundamentalne zasady działania komputerów, które są używane do dziś.

Eckert i Mauchly byli głęboko niezadowoleni z działań Goldstine'a. Wiedzieli, że z powodu tajności nie mogli publikować materiałów dotyczących swojego rozwoju. Twórcy EDVAC byli pewni ogromnej użyteczności swojej maszyny dla całej ludzkości i dlatego obawiali się, że patent na ich wynalazek nie zostanie prawidłowo zarejestrowany.

Administracja Uniwersytetu Pensylwanii nalegała, aby Mauchly i Eckert zrzekli się praw do EDVAC. Żądanie to wywołało oburzenie wśród wynalazców, którzy w 1946 roku, po premierze komputera ENIAC, postanowili opuścić uczelnię. Wkrótce potem von Neumann i Goldstine opuścili projekt, co dodatkowo opóźniło prace nad EDVAC o kilka lat. Ten konflikt stał się kamieniem milowym w historii informatyki, uwypuklając złożoność, jaka pojawia się na styku nauki i handlu.

Pierwszy amerykański komputer z nową architekturą

EDVAC został ukończony w 1949 roku, a jego komercyjne wykorzystanie rozpoczęło się w 1951 roku, po usunięciu wszystkich błędów. Komputer ten ważył około ośmiu ton i zajmował powierzchnię 45 metrów kwadratowych. EDVAC był znaczącym krokiem w rozwoju technologii komputerowej i położył podwaliny pod przyszłe generacje komputerów.

EDVAC w Laboratorium Badań Balistycznych Zdjęcie: Wikimedia Commons

Komputer wykorzystywał binarny system liczbowy, który znacznie zmniejszył liczbę lamp próżniowych do 3600, podczas gdy ENIAC miał ich 18 000. Potrafił wykonywać dodawanie, odejmowanie i dzielenie. Pojemność pamięci wynosiła 1024 słowa, czyli około 5,5 kilobajta. Pamięć ta przechowywała nie tylko dane, ale także sam program, co stanowiło ważny krok w kierunku nowoczesnych systemów komputerowych.

EDVAC został zainstalowany w Laboratorium Badań Balistycznych Armii Stanów Zjednoczonych, a jego działalność była objęta ścisłą tajemnicą. Maszyna ta działała do 1961 roku, kiedy to została zastąpiona nowocześniejszymi systemami obliczeniowymi. EDVAC odegrał znaczącą rolę w rozwoju technologii komputerowej i matematyki obliczeniowej, stając się jednym z pierwszych przykładów wykorzystania binarnego systemu liczbowego w programowaniu.

Jak brytyjscy konkurenci pokonują Amerykanów

Po raporcie von Neumanna inne kraje zaczęły rozwijać komputery o architekturze opartej na jego zasadach. Pierwszy taki komputer powstał w Wielkiej Brytanii, która od dawna była konkurentem Stanów Zjednoczonych w dziedzinie informatyki, i miało to miejsce dwa lata przed uruchomieniem EDVAC.

W 1946 roku profesor Maurice Wilkes z Cambridge otrzymał możliwość zapoznania się z kopią raportu Johna von Neumanna. Jeden z jego znajomych ze Stanów Zjednoczonych pożyczył dokument na jedną noc. Wilkes głęboko docenił przedstawione w nim idee i doszedł do wniosku, że przyszły rozwój komputerów elektronicznych będzie podążał właśnie w tym kierunku. To spotkanie z pracami von Neumanna miało znaczący wpływ na dalszy rozwój informatyki i technologii.

Przepłynął ocean i dotarł na Uniwersytet Pensylwanii, gdzie uczęszczał na wykłady na temat EDVAC. W drodze powrotnej opracował projekt logiczny swojego przyszłego komputera, który później nazwano EDSAC. Wilkesowi udało się uzyskać fundusze od brytyjskiego Ministerstwa Obrony na budowę tego komputera i w 1949 roku maszyna rozpoczęła pracę.

EDSAC w Cambridge Zdjęcie: Wikimedia Commons

EDSAC powstał w Oparty na architekturze EDVAC, był bardziej kompaktowy. Zajmował tylko 20 metrów kwadratowych i wykorzystywał 3000 lamp próżniowych. EDSAC wykorzystywał również 32 rtęciowe linie opóźniające, które dostarczały 1024 komórki pamięci. System ten był znaczącym krokiem w rozwoju informatyki, demonstrując efektywne wykorzystanie ograniczonej przestrzeni do przechowywania i przetwarzania informacji. Obliczenia były wykonywane w systemie binarnym, zapewniając prędkość obliczeniową od dziesięciu do piętnastu tysięcy operacji na sekundę. Program był ładowany do pamięci za pomocą taśmy perforowanej, a wyniki były wyprowadzane na teletyp. Technologie te stały się podstawą dalszego rozwoju informatyki i automatyzacji procesów. Pierwszy program dla komputera EDSAC został zaprojektowany do obliczania kwadratów liczb dodatnich w zakresie od 0 do 99. Program ten był znaczącym krokiem w historii informatyki, demonstrując możliwości wczesnych komputerów elektronicznych. EDSAC, jako jeden z pierwszych komputerów ogólnego przeznaczenia, otworzył nowe horyzonty programowania i obliczeń.

Początkowo wszystkie programy komputerowe składały się z długich sekwencji zer i jedynek, gdzie 1 oznaczało, że lampa jest włączona, a 0, że jest wyłączona. Profesor Wilkes opracował wygodniejsze metody zapisywania poleceń za pomocą liter i krótkich słów w języku angielskim. Ta innowacja znacznie uprościła proces programowania i uczyniła go bardziej przystępnym dla szerszej publiczności. W rezultacie programowanie stało się mniej pracochłonne i bardziej zrozumiałe, co przyczyniło się do rozwoju technologii informatycznych i powstania nowych języków programowania.

  • S – „odejmowanie”;
  • T – „przeniesienie informacji do pamięci”;
  • Z – „zatrzymanie maszyny” itd.

Po raz pierwszy stworzono mnemoniczne kody operacji dla EDSAC i opracowano translator znany jako asembler. System ten stanowił ważny krok w rozwoju programowania, upraszczając proces pisania programów komputerowych poprzez zapewnienie wygodniejszego sposobu interakcji z kodem maszynowym. Asemblery opracowane dla EDSAC położyły podwaliny pod nowoczesne języki programowania i kompilatory używane do dziś.

Jedną z istotnych innowacji w programowaniu było stworzenie biblioteki podprogramów. Programiści znali już tę koncepcję, ponieważ Grace Hopper i jej zespół korzystali z podprogramów na swojej maszynie obliczeniowej Harvardu. Jednak w tamtym czasie podprogramy zapisywano w notatnikach, co pozwalało uniknąć przepisywania kodu. Biblioteka podprogramów znacznie uprościła proces programowania, zapewniając wygodny dostęp do wcześniej utworzonych fragmentów kodu i promując bardziej wydajne i uporządkowane programowanie.

EDSAC umożliwiał przechowywanie podprogramów w pamięci, umożliwiając ich wstawianie do istniejących programów w razie potrzeby. Aby przywołać podprogramy z pamięci, użytkownik potrzebował jedynie krótkiego polecenia. To znacznie uprościło proces programowania i zwiększyło elastyczność pracy z kodem.

Mnemoniki operacji i biblioteka podprogramów opracowana przez Wilkesa zostały nazwane „systemem asemblera”. Nazwa ta odzwierciedla istotę systemu, który umożliwia tworzenie programów w języku maszynowym przy użyciu kodów mnemotechnicznych i podprogramów. System asemblera znacznie upraszcza proces programowania, umożliwiając programistom pracę z wygodniejszą i bardziej zrozumiałą reprezentacją kodu, co z kolei przyczynia się do efektywności tworzenia oprogramowania.

We współczesnym świecie języki programowania, w których mnemoniki operacji odpowiadają konkretnym instrukcjom maszynowym, nazywane są językami asemblera. Maurice Wilkes jest uważany za jednego z odkrywców takich języków, wnosząc znaczący wkład w ich rozwój. Język asemblera pozwala programistom na interakcję ze sprzętem na niskim poziomie, co czyni go ważnym narzędziem do tworzenia wysokowydajnych aplikacji i oprogramowania systemowego.

Rząd brytyjski zlecił EDSAC wykonywanie obliczeń związanych z testami jądrowymi. Uniwersytet Cambridge wykorzystywał EDSAC do obliczeń w chemii teoretycznej, radioastronomii i innych dyscyplinach naukowych. Jednym ze znaczących osiągnięć EDSAC było obliczenie największej liczby pierwszej w tamtym czasie, składającej się z 79 cyfr. Do tego celu opracowano wiele programów, w tym algorytmy do pracy z liczbami zespolonymi, liczbami zmiennoprzecinkowymi, a także do wykonywania obliczeń na wektorach, macierzach i funkcjach trygonometrycznych. EDSAC stał się ważnym narzędziem w rozwoju informatyki i nauki, demonstrując potencjał pierwszych komputerów elektronicznych w rozwiązywaniu złożonych problemów matematycznych.

W 1951 roku dla EDSAC opracowano pierwszą interaktywną grę komputerową OXO, będącą odmianą gry w kółko i krzyżyk. Gra ta stanowiła ważny krok w historii gier wideo, ponieważ do jej uruchomienia potrzebny był mały wyświetlacz CRT (kineskopowy) podłączony do komputera. OXO zademonstrowało możliwości wczesnych komputerów w dziedzinie rozrywki i interakcji z użytkownikiem, torując drogę przyszłym osiągnięciom w branży gier.

Tak wyglądało OXO. Zdjęcie: Wikimedia Commons

EDSAC, jeden z pierwszych komputerów na świecie, został wyłączony w 1958 roku i zastąpiony nowocześniejszą wersją, EDSAC 2, w której do przechowywania danych zastosowano pamięć z rdzeniem ferrytowym i taśmę magnetyczną. Ta zmiana była znaczącym krokiem w rozwoju technologii komputerowej, ponieważ EDSAC 2 zapewniał wyższą wydajność i niezawodność w porównaniu z poprzednim modelem.

Dowiedz się również:

  • OneHalf: Historia komputerowego „koronawirusa”
  • Matematyka w życiu: Gdzie jest potrzebna i jak jej uniknąć
  • Notacja dużego O: Czym jest i jak ją obliczyć