VyÜlo v t²denφku: COMPUTERWORLD
╚φslo:21/93
RoΦnφk:1993
Rubrika/kategorie: Co (ne)najdete ve slovnφku

zp∞t do archivu Φlßnk∙ | rejst°φk | p°edchozφ Φlßnek | nßsledujφcφ Φlßnek

Ji°φ Peterka

Von Neumannova architektura

P°edstav o tom, jak by poΦφtaΦe m∞ly vypadat a jak by m∞ly fungovat, existovalo a existuje vφce. P°esto drtivß v∞tÜina dneÜnφch poΦφtaΦ∙ vychßzφ z jedinΘ takovΘto p°edstavy. Ta se zrodila v polovin∞ padesßt²ch let v USA, v rßmci projekt∙, kterΘ daly vzniknout dnes ji₧ legendßrnφm poΦφtaΦ∙m EDVAC (Electronic Discrete Variable Computer) a EDSAC (Electronic Delay Storage Automatic Calculator). èlo samoz°ejm∞ o kolektivnφ dφlo, kterΘ vÜak bylo pojmenovßno jen po jednom ze sv²ch autor∙ - z°ejm∞ po tom, kter² m∞l na utvß°enφ celΘ koncepce nejv∞tÜφ vliv. Tφm byl vÜestrann² v∞dec, americk² matematik ma∩arskΘho p∙vodu John von Neumann (1903-1957), kter² krom∞ prßce na v²voji poΦφtaΦ∙ stihl jeÜt∞ zalo₧it matematickou teorii her, v²znamn∞ p°isp∞t fyzik∙m k jejich kvantovΘ teorii a takΘ se po urΦitou dobu podφlet i na v²voji prvnφ atomovΘ bomby.

Tzv. von Neumannova architektura (von Neumann architecture), n∞kdy oznaΦovanß takΘ jako von Neumannova koncepce Φi von Neumannovo schΘma, je tedy ucelenou soustavou nßzor∙ a p°edstav o tom, jak by m∞l poΦφtaΦ fungovat, z jak²ch hlavnφch Φßstφ by se m∞l sklßdat, co a jak by tyto Φßsti m∞ly d∞lat, jak by m∞ly vzßjemn∞ spolupracovat atd.

Dnes nßm ji₧ p°ipadß zcela samoz°ejmΘ, ₧e poΦφtaΦ by se m∞l sklßdat z procesoru, tvo°enΘho °adiΦem a aritmeticko-logickou jednotkou, dßle z operaΦnφ pam∞ti a nezbytn²ch vstupn∞-v²stupnφch za°φzenφ. To vφce Φi mΘn∞ p°edpoklßdaly i vÜechny koncepce, kterΘ p°edchßzely von Neumannov∞. Novum vÜak p°edstavovala zßsada, ₧e vnit°nφ struktura poΦφtaΦe by se nem∞la nijak m∞nit v zßvislosti na zpracovßvanΘ ·loze. Vnit°nφ struktura by tedy m∞la b²t maximßln∞ univerzßlnφ, tak aby dokßzala vyjφt vst°φc pot°ebßm ·loh nejr∙zn∞jÜφho typu. VeÜkerΘ p°izp∙sobenφ konkrΘtnφm ·kol∙m mß b²t °eÜeno v²hradn∞ programem.

Velmi revoluΦnφ pak byla na svou dobu myÜlenka, ₧e programy i jejich data by se m∞ly uchovßvat v tΘ₧e operaΦnφ pam∞ti. VÜechny p°edchßzejφcφ koncepce toti₧ vychßzely z p°edstavy, ₧e programy a data jsou dv∞ r∙znΘ v∞ci, kterΘ nelze sm∞Üovat. P°edpoklßdaly proto existenci samostatnΘ pam∞ti pro data a samostatnΘ pam∞ti pro programy a tyto dva druhy pam∞tφ se nijak nep°ekr²valy - m∞ly mj. samostatnΘ adresy a nebylo v principu mo₧nΘ zam∞nit program za data a naopak. Von Neumannova koncepce poprvΘ p°iÜla s myÜlenkou, ₧e jak programy, tak i data jsou ve svΘ podstat∞ jedno a totΘ₧ (posloupnosti nul a jedniΦek) a rozdφl mezi nimi je dßn pouze v²znamem, kter² jim p°isuzuje ten, kdo s nimi pracuje. PoΦφtaΦ vychßzejφcφ z von Neumannovy koncepce, proto uchovßvß programy i data "na jednΘ hromad∞" - tedy v jedinΘ spoleΦnΘ pam∞ti. Zßle₧φ pak na prßv∞ probφhajφcφm programu, jak bude interpretovat to, co v operaΦnφ pam∞ti najde.

To je na jednΘ stran∞ velmi nebezpeΦnΘ, nebo¥ nelze vylouΦit riziko chybnΘ interpretace - prßv∞ probφhajφcφ ·loha m∙₧e omylem "zabrousit" do dat a interpretovat je jako program, nebo naopak. Na druhΘ stran∞ vÜak tato mo₧nost p°ipouÜtφ takovΘ v∞ci, bez kter²ch bychom se dnes ji₧ t∞₧ko obeÜli: nap°φklad p°ekladaΦe generujφ p°elo₧en² k≤d jako svß v²stupnφ data, ale ta mohou b²t vzßp∞tφ interpretovßna jako program a spuÜt∞na.

DalÜφm v²znaΦn²m rysem von Neumannovy architektury je samotn² zp∙sob provßd∞nφ programu. Dnes nßm asi p°ipadß zcela samoz°ejmΘ, ₧e strojovΘ instrukce, ze kter²ch se ka₧d² p°φmo spustiteln² program sklßdß, se provßd∞jφ postupn∞, jedna za druhou. ╪eΦeno jin²mi slovy: ka₧dß instrukce se provede tehdy, a₧ na ni dojde °ada, a nad takov²mi daty, jakß jsou prßv∞ k dispozici. Je ale takov²to postup jedinou mo₧nostφ, nebo k n∞mu existuje n∞jakß alternativa? Co kdyby se okam₧ik provedenφ urΦitΘ akce °φdil nikoli tφm, kdy na tuto akci dojde °ada (jako je tomu u von Neumannovy koncepce), ale naopak p°ipravenostφ vÜech dat, kterß jsou k provedenφ urΦitΘ akce zapot°ebφ? Pak by se jednalo o alternativu k von Neumannov∞ koncepci, kterß se oznaΦuje jako data-flow neboli °φzenφ tokem dat. V²hodou by byla mo₧nost provßd∞t vφce Φinnostφ soub∞₧n∞ - tedy v∞tÜφ potencißl paralelismu, kter² von Neumannov∞ koncepci naopak chybφ. Podle von Neumannovy koncepce (v protikladu k "data-flow" oznaΦovanΘ takΘ jako control-flow) jso u jednotlivΘ akce, reprezentovanΘ strojov²mi instrukcemi, °azeny za sebe a provßd∞ny postupn∞, tj. sekvenΦn∞.

Von Neumannova architektura je tedy ryze sekvenΦnφ a ve svΘ ΦistΘ podob∞ nep°edpoklßdß ₧ßdn² paralelismus. To je na jednΘ stran∞ velkß v²hoda, nebo¥ sekvenΦnφ postup je p°irozen∞jÜφ a intuitivn∞jÜφ ne₧ postup paralelnφ. Psßt programy, kterΘ p°edpoklßdajφ Φist∞ sekvenΦnφ zpracovßnφ, je pak snazÜφ ne₧ psanφ paralelnφch program∙. I to je z°ejm∞ jeden z d∙vod∙, proΦ se von Neumannova koncepce udr₧ela a₧ dodnes, zatφmco alternativnφ koncepce, podporujφcφ v∞tÜφ mφru paralelismu, nejsou zdaleka tak ·sp∞ÜnΘ.

SekvenΦnφ charakter von Neumannovy architektury je vÜak zßrove≥ i jejφ velkou nev²hodou. PostupnΘ provßd∞nφ jednotliv²ch Φinnostφ bez mo₧nosti soub∞h∙ znamenß, ₧e v ka₧dΘm okam₧iku bude v₧dy vytφ₧ena jen jedna Φßst poΦφtaΦe, zatφmco ostatnφ budou zahßlet.

DalÜφ velkou nev²hodou se poslΘze ukßzala i p∙vodnφ p°ednost von Neumannovy architektury - jejφ snaha o maximßlnφ univerzßlnost a nem∞nnou vnit°nφ strukturu. PoΦφtaΦ, kter² je univerzßlnφ, dokß₧e sice (tΘm∞°) vÜechno, ale neefektivn∞. SpecializovanΘ poΦφtaΦe, jejich₧ vnit°nφ struktura je uzp∙sobena pro urΦit² konkrΘtnφ typ ·loh, dokß₧φ b²t mnohem efektivn∞jÜφ (nejlΘpe je to asi patrnΘ na specializovan²ch Üachov²ch poΦφtaΦφch).

UrΦitou nev²hodou von Neumannovy architektury je pak takΘ to, ₧e neodpovφdß p°φliÜ dob°e p°edstavßm vyÜÜφch programovacφch jazyk∙. Nabφzφ nap°φklad jen jednorozm∞rnou (lineßrnφ) operaΦnφ pam∞¥, zatφmco vyÜÜφ programovacφ jazyky umo₧≥ujφ pracovat s vφcerozm∞rn²mi poli, obecn∞jÜφmi datov²mi strukturami a zßznamy, kterΘ nemajφ p°φmΘ ekvivalenty v hardwaru. VÜe je pak nutnΘ zajistit programov²mi prost°edky (tedy nap°φklad "zamapovat" vφcerozm∞rnΘ pole do jednorozm∞rnΘho), ale to s sebou nese urΦitou re₧ii, kterß dßle zvyÜuje celkovou neefektivnost a komplikuje i konstrukci p°ekladaΦ∙ (p°edevÜφm t∞ch jejich Φßstφ, kterΘ se starajφ o generovßnφ k≤du).

Univerzßlnφ, na °eÜenΘ ·loze nezßvislß, sekvenΦnφ a relativn∞ jednoduchß von Neumannova architektura, kterou majφ tΘm∞° vÜechny dneÜnφ poΦφtaΦe, mß tedy svΘ v²hody i svΘ nev²hody. Vznikla sice ji₧ pom∞rn∞ dßvno, ale vydr₧ela a₧ dodnes, a p°itom se nijak zßsadn∞ nezm∞nila (o jejφm pr∙b∞₧nΘm v²voji si povφme v p°φÜtφch dφlech). Alternativnφch koncepcφ sice existuje vφce (nejen v²Üe citovanß koncepce "data-flow"), ale ₧ßdnß z nich se neujala natolik, aby dominantnφ postavenφ von Nemannovy architektury n∞jak ohrozila.


zp∞t do archivu Φlßnk∙ | rejst°φk | p°edchozφ Φlßnek | nßsledujφcφ Φlßnek
Tento Φlßnek m∙₧e b²t voln∞ Üφ°en, pokud se tak d∞je pro studijnφ ·Φely, na nev²d∞leΦnΘm zßklad∞ a se zachovßnφm tohoto dov∞tku. Podrobnosti hledejte zde, resp. na adrese http://archiv.czech.net/copyleft.htm