VonNeumann архитектура

Од Википедија — слободната енциклопедија
Прејди на прегледникот Прејди на пребарувањето

Von Neumann архитектурата, исто така позната какао von Neumann модел и Принцтон архитектура е компјутерска архитектура базирана на истото опишано во 1945 од страна на матиматичарот и физичарот John von Neumann и други во First Draft of a Report on the EDVAC[1]. Ова опишува дизајн на архитектура за електронски дигитален компјутер со делови кои се содрќат од процесирачка единица која содржи аритметичко-логична единица и процесорски регистри, контролна едицина која содржи инструкциски регистар и програмски бројач, меморија за да чува податоци и инструкции, екстерна чување на големи податоци и влезно/излезни механизми[2][3]. Значењето на ова еволуирало да биде такво што се асоцира со секој компјутер кој инструкција може да биде превземена и операција на податоци неможе да се случи во исто време бидејќи тие делат заедничка магистрала. Ова е референцирано како von Neumann bottleneck и ги лимитира перформансите на системот.[4]

Дизајнот на von Neumann архитектура е поедноставен од модерната Харвард архитектура која што е исто така складирачко-програмски копмјутер но има само еден посветен сет од адреси и податочни магистрали за читање и пишување податоци во меморија, и уште еден сет од адреси и магистрали за превземање инструкции.

Складирачко-програмски дигитален компјутер е оној кој ги чува своите програмски инструкции, како и податоци, во RAM меморија. Сладирачко-програмски компјутери биле напредок во однос на програмски контролираните компјутери во 1940-тите, ккао Colossus и ENIAC кои биле програмирани со местење на прекинувачи и вметнување на patch leads за да рутираат податоци и контролираат сигнали помеѓу повеќе функционални единици. Во мнозинството модерни компјутери, истат меморија се користи за податоци и програмски инструкции, von Neumann против Харвардска архитектура се аплицира на кеш архитектурите, не и на главната меморија.

Историја[уреди | уреди извор]

Најраните компјутирачки машини имале фиксни програми. Некои многу еднотавно компјутери сеуште го користат овој дизајн, од едноставни причини или за тренинг и вежби. На пример, обичен калкулатор (во принцип) е компјутер со фискна програма. Може да пресметува основна математика, но не може да биде користен како текст процесор или конзола за игри. Менување на програмата на фиксно-програмска машина бара препишување, пре-структурирање или редизајнирање на машината. Најраните компјутери не биле до толку ‘програмирани’ колку што биле ‘дизајнирани’. ‘Репорограмирање’, кога воопшто било можно, бил напорен процес, започнувајќи со табели и хартиени забелешки, следени со детални инженерски дизајни и тогаш често напорен процес од физичко пре-поврзување и градење на машината. Било потребно три недели да се намести програма во ENIAC и истата притоа да работи.[5] Со предлогот за складирачко-програмски компјутер ова се променило. Ваков компјутер вклучува дизајн за инструкциски сет и може во меморија да чува сет од инструкции (програма) која детално ја знае компјутацијата.

Складирачко-програмски дизајн исто така дозволува самостојно-менувачки код. Рана мотивација за ваква можност била потребата од програма да инкрементира или промени адресен дел од инструкции, кои претходно морало да се направи рачно. Ова настанало помалку важно кога индекс регистри и индиректно адресирање настанало вообичаена функција во машинска архитектура. Друг корист било да се вградат често користени податоци во инструкцискиот проток користејќи итно адресирање. Самостојно-менувачки код бил многу не пожелен за користење, бидејќи било тешко да се разбере и дебагира, исто така бил неефикасен под новите процесорски протоци и шеми на кеш.

На поголема скала, способноста да ги третираат инструкциите како податоци е тоа што ги прави асемблерите, компајлерите, линкерите, полначите и другите автоматски програмски алатки можни. Личност може ‘да напише програма што пишува програми’[6]. На помала скала, повторувачките влезно/излезни операции како BITBLT манипулаторот на слики или пиксел и вертекс засенувачи во модерната 3D графика, биле сметани како неефикасни да се изведуваат без специјален хардвер. Овие операции кои би можеле да бидат забрзани на општо целните процесори со ‘компилирање додека работат’ (‘точно на време компилирање’) технологии пр. програми кои генерираат код--една форма од само модифирачки код кои останале популарни.

Развивање на складирачко-програмски концепт[уреди | уреди извор]

Математичарот Alan Turing, кој бил известен за проблем од математичка логика од страна на предавањата на Max Newman на Универзитетот Кејмбриџ, напишал труд во 1936 со наслов On Computable Numbers, with an Application to the Entscheidungsproblem, кој бил издаден во списанието Proceedings of the London Mathematical Society[7]. Во тоа, тој опишал хипотетичка машина која што ја нарекол ‘универзална компјутирачка машина’, истата сега е позната како ‘Универзална Туринг машина’. Хипотетичката машина имала бесконечна меморија (во денешна терминологија) која содржела и инструкции и податоци. Jon von Neumann се запознал со Turing додека бил професор на Кејмбриџ во 1935 исто така за време на PhD на Turing при Институтот за Напредни Науки во Принцтон, Њу Џерзи помеѓу 1936-37. Не е јасно дали знаел за трудот на Turing од 1936 година.

Во 1936 година, Konrad Zuse исто така предвидел две апликации за патент со кои машинските инструкции би можеле да бидат зачувани во иста меморија која се користела и за податоци.[8]

Независно, J. Presper Eckert и John Mauchly, кои го развивале ENIAC во Moore School of Electrical Engineering на Универзитетот во Пенсилванија напишале за складирачки-програм концепт во Декември 1943 година[9][10]. При планирање нова машина, EDVAC, Eckert напишал во Јануари 1944 година дека тие би можеле да чуваат податоци и програми во нова адресабилна мемориска направа, одложување на мемориска лини со метал од жива. Тоа било првиот пат кога било предложено конструкција на практична складирачко-програмска машина. Во тоа време тој и Mauchly не биле свесни за работата на Turing.

Von Neumann бил инволвиран во Manhattan проектот во Los Alamos Националната Лабараторија, која што имал потреба од големи количини на пресметки. Ова го привлекло кон ENIAC Проектот, за времене летото во 1944 година. Таму тој се приклучил на постоечката дискусија за дизајнирање на овој складирачко-програмски компјутер, наречен EDVAC. Како дел од таа група, тој напишал опис наречен First Draft of a Report on the EDVAC базиран на работата од Eckert и Mauchly[11]. Тоа било недовршено кога неговиот колега Herman Goldstine го пронашол со само името на von Neumann напишано на истото. Трудот бил прочитан од голема бројка на колеги на von Neumann во Америка и Европа и влијаело врз следната рунда компјутерски дизајни.

Jack Copeland го смета тоа за ‘историски неадекватно, да се референцира на електронските складирачко-програмски дигитални компјутери како “von Neumann машини”’[12]. Неговиот колега од Los Alamos, Stan Frankel, изјавил за von Neumann-овиот поглед на идеите на Turing:

   Знам дека во или околу 1943/44 von Neumann беше целосно свезсен за основната важност на Turing-овиот труд од 1936… Von Neumann ми го посочи тој труд и поради неговото инсистирање длабого го проучив.   Многу луѓе го сметаат von Neumann како ‘таткото на компјутерот’ (во модерна смисла на зборот) но јас сум сигурен дека он никогаш не би ја направил таа грешка самиот. Слободно може да се нарече бабица, можеби, но тој строго ми го посочи тоа, сигурен сум дека и на другите, дека основната замисла се должи на Turing-дури не предвидена од страна на Babbage… И Turing и von Neumann, секако, направија значајјни придонеси кон ‘намалувањето на примена’ на овие концепти но не би ги сметал овие како споредливи во важност со претсавувањето и експлицитација на концептот за компјутер кој е способен да ја чува својата меморија, програма на активности и изменување на програмата во однос на тие активности.[13]

Во времето кога ‘First Draft’ извештајот почнал да кружи Turing направил извештај со наслов Proposed Electronic Calculator кој опишал во инженерски и програмерски детал, неговата идеја за машина која била наречена Automatic Computing Engine (ACE)[14]. Тој ја претставил идејата на Извршниот Комитет при Британската Национална Физичка Лабараторија на 19-ти Февруари во 1946 година. Иако Turing знаел од неговото воено искуство во Bletchery Park дека тоа што го предложил било изводливо, тајноста околу Colossus, која што била одржувана неколку декади му го забранувала истото. Неколку успешни имплементации на ACE дизајнот биле направени.

Трудовите на von Neumann и Turing опишуваат складирачко-програмски компјутери, но претходниот труд на von Neumann постигнал поголема циркулација и затоа опишаната архитектура станала позната како ‘von Neumann архитектурата’. Во 1953 година, во објавеното Faster than Thought: A Symposium on Digital Computing Machines (едитирано од страна на B.V Bowden) дело од поглавјето на Компјутери во Америка следува:[15]

    Машинскиот Институт за Напредни Студии, Принцтон 
   Во 1945, професорот J. von Neumann, кој тогаш работел во Муровото школо за инженерство во Филаделфија, каде што E.N.I.A.C бил изграден, на барање од своите колеги објавил извештај на логичниот дизајн на дигиталните компјутери. Извештајот содржел мошне детален предлог за дизајнот на машината која од тогаш е позната како E.D.V.A.C (електронски диксретен варијабилен автоматски компјутер). Оваа машина е неодамна завршена во Америка, но извештајот на von Neumann ја инспирираше конструкцијата на E.D.S.A.C (електронски автоматски калкулатор со задоцнување на меморијата) во Кејмбриџ.

Во 1947, Burks, Goldstine и von Neumann објавија уште еден извештај во кој е опишан дизајнот на уште еден тип на машина (овој пат паралелна) кој што се покажувала како многу брза и способна за можни 20 000 операции во секунда. Тие посочиле дека најголемиот проблем со конструирање на таква машина е развивањето на соодветна меморија, чија содржина била инстантно пристапна, и првично предложиле користење на специјална вакумска туба - нареченеа ‘Selectron’ - која што била изработена од страна на Принцтоновите R.C.A лабаратории. Овие цефки биле скапи и комплицирани за изработка, така што von Neumann последователно решил да изгради машина базирана на Williams меморија. Оваа машина, која била завршена во Јуни, 1952 година во Принцстон била популарно позната како Maniac. Дизајнот на оваа машина е инспирацаија за голем дел од други машини кои моментално се изработуваат во Америка, познати како ‘Johniacs’.

Во истата книга, првите два параграфи од поглавје на ACE следуваат:[16]

   Автоматска Компјутација во Националната Лабараторија за Физика
   Еден од најмодерните дигитални компјутери кои поттикнуваат развој и подобрувања во техниката на автоматско електронско копмјутирање беше неодамна демонстриран во Националната Лабараторија за Физика, во Тедингтон, каде беше дизајнирано и изградено од мал тим на математичкари и инжинери за елетронско истражување како дел од персоналот на Лабараторијата, асистирани од продуктски инженери од English Electric Company, Limited.  Досегашната покрената опера во Лабараторијата е единствениот почетен модел од многу поголема инсталација која ќе биде позната како Автоматскиот Компјутерски Мотор, но покрај тоа што е мал во големина и содржи само 800 термионички вентили, како што може да се заклучи од Plates X//, X/// и X/V, таа е мошне брза и разновидна калкулирачка направа.

Основните концепти и апстрактни принципи на компутанција од страна на машина беше формулирани од Доктор A. M. Turing, F.RS, во труд читан пред Математичкото Општество на Лондон, во 1936 година, но работата на ваква машина во Британија беше одложена поради војната. Во 1945 година, истражување на проблемите беше направено од Националната Лабараторија за Физика од страна на г-дин J. R. Womersley, тогаш надлежен во Математичкиот Оддел на Лабараторијата. Тој беше придружен од страна на г-динот Turing и мал персонал од специјалисти, кои, во 1947 ги напреднаа прелиминарните планирања доволно за да веќе напоменатата група била воспоставена. Во Април, 1948 година, истата прераснала во Електронскиот Оддел од Лабараторијата, под надлежност на г-дин F. M. Colebrook.

Рани компјутери кои содржат von Neumann архитектура[уреди | уреди извор]

Во First Draft е опишан дизајн кој бил користен од многу универзитети и корпорации за констркуцкија на нивните компјутери.[17] Меѓу овие повеќе видови на компјутери, само ILLIAC и ORDVAC имале компатабилни инструкциски сетови.

  • Манчестеровата машина за мало-размерни експерименти (SSEM), со надимак ‘бебе’ (Универзитетот во Манчестер, Англија) го направил своето прво успешно пуштање на складирана програма на 21 Јуни, 1948 година.
  • EDSAC (Универзитетот во Кејмбриџ, Англија) бил првиот практичен складирачко-програмски електронски компјутер (Мај 1949)
  • Манчестер Марк 1 (Универзитетот во Манчестер, Англија) развиен од SSEM (Јуни 1949 година)
  • CISRAC (Совен за Научено и Индустриско истражување) Австралија (Ноември 1949 година)
  • EDVAC (Балистичка лабараторија за истражување, Компјутерска лабараторија во Aberdeen Proving Ground, 1951 година)
  • ORDVAC (У-Илиноис) во Aberdeen Proving Ground, Мериленд (завршен во Ноември 1951 година)[18]
  • IAS машина во Принцтон Универзитет (Јануари 1952 година)
  • MANIAC I во Научната Лабараторија на Лос Аламос (март 1952 година)
  • ILLIAC на Универзитетот во Илиноис (Септември 1952 година)
  • BESM-1 во Москва (1952 година)
  • AVIDAC во Националната Лабараторија на Аргон (1953 година)
  • ORACLE во Националната Лабараторија на Oak Ridge (Јуни 1953 година)
  • BEST во Стокхолм (1953 година)
  • JOHNNIAC на RAND корпорацијата (Јануари 1954 година)
  • DASK во Данска (1955 година)
  • WEIZAC во Rehovoth (1955 година)
  • PERM во Минхен (околу 1956 година)
  • SILLIAC во Сиднеј (1956 година)

Рани складирачко-програмски компјутери[уреди | уреди извор]

Информациите за датумите околу хронолошкиот редослед е тешко да се подреди. Некои датуми се за прво работење на тест програми, некои датуми се за првиот пат кога компјутерот бил завршен или демонстриран, а некои датуми се на привата испорака и инсталација.

  • IBM SSEC ја имала можноста да ги третира инструкциите како податоци, јавно бил претставен на 27 Јануари, 1948 година. Оваа можност била патентирана во Сооединетите Американски Држави.[19] Но била делумно електромеханичка, не целосно електронска. Практично инструкциите биле читани од хратиена лента поради неговата лимитирана меморија.[20]
  • SSEM на Манчестер (Бебето) бил првиот вистински електронски компјутер кој пуштил складирана програма. Пуштила факторска програма со времетраење од 52 минути на 21 Јуни, 1948 година, после пуштање на едноставна програма која делела и прогама која покажувала дека броевите биле парни броеви.
  • ENIAC бил модифициран да пушти примитивна складирана програма (со помош на Функционални Табели за програмскиот ROM) и бил демонстриран на таков начин на 16 Септември, 1948 година работејќи програма на Adele *Goldstine за von Neumann.
  • BINAC пуштил неколку тест програми во Февруари, Март и Април 1949 година, но не бил завршен до Септември 1949 година.
  • Manchester Mark 1 бил развиен од SSEM проект. Средна верзија од Mark 1 имал можност да пушта програми во Април 1949, но не бил завршен до Октомври, 1949 година.
  • EDSAC ја пуштил својата прва програма на 6-ти Мај, 1949 година.
  • EDVAC бил испорачан во Август 1949 година, но имал проблеми кои го спречувале да биде користел до 1951 година.
  • CSIR Mk 1 ја пуштил својата прва програма во Ноември 1949 година.
  • SEAC бил демонстиран во Април 1950 година.
  • Pilot ACE ја пуштил својата прва програма на 10-ти Мај, 1950 година и бил демонстриран во Декември 1950-тата година.
  • SWAC бил завршен во Јули 1950 година.
  • Whirlwind бил завршен во Декемри 1950 година, а бил користен во Април 1951 година.
  • Првиот ERA Atlas (подоцна познат како ERA 1101/UNIVAC 1101) бил инсталиран во Декември 1950 година.

Еволуција[уреди | уреди извор]

Низ 1960-тите и 70-тите компјутерите станале генерално помали и побрзи, што донело до еволуција на нивните архитектури. На пример, мемориско-мапираниот влезно/излезен уред дозволува влезно/излезни направи да се третирани како меморија.[21] Едена системска магистрала можела да биде искористена со пониска цена. Ова е понекогаш наречено ‘streamlining’ на архитектурата. Во подоцни декади, едноставни микроконтролери понекогаш би изоставиле карактеристики од моделот за да се намали големината и цената на истата. Поголеми компјутери додавале карактеристики за да поголеми перформанси.

Дизајнерски Ограничувања[уреди | уреди извор]

Von Neumann bottleneck[уреди | уреди извор]

Заедничката магистрала помеѓу програмската меморија и податочната меморија води кон т.н von Neumann bottleneck, лимитиран проток (податочен трансфер) помеѓу процесорот и меморијата во споредба со количината на меморија. Бидејќи една магистрала може да пристапи во една од две класи на меморија истовремено, протокот е понизок од ратата при што може процесорот да работи. Ова сериозно ја лимитира ефективната процесорска брзина при големи количини на податоци. Процесорот континуирано е присилен да почека за потребните податоци да бидат префрлени од меморијата. Бидејќи процесорската брзина и мемориската големина се имаат зголемено многу побрзо одколку протокот помеѓу нив, bottleneck-от е настанат повеќе како проблем, проблем кој повеќе се зголемува со секоја нова генерација на процесори.

Von Neumann bottleneck-от бил опишан од John Backus во неговото предавање во 1977 на Turing наградите. Според Backus:

   Сигурно мора да има помалку примитивен начин за да се направат големи промени во продавницата одколку туркање на голем број од зборови натака-навака низ bottleneck-от на von Neumann. Не само што оваа туба е буквален bottleneck за податочниот собраќај на еден проблем, туку, поважно, тоа е интелектуален bottleneck кој не има нам приврзано на размислувајќи збор-по-збор наместо да не охрабри да размислуваме подолгорочно за големинте концептуални единици за дадената задача. Со ова програмирањето се сведува на детално планирање на оргомниот сообраќај на зборовите низ bottleneck-от на von Neumann и многу од тие сообраќајните проблеми не се со самите податоци, туку со тоа каде да ги најдеме.[22][23]

Митигација[уреди | уреди извор]

Има повеќе познати методи за митигација на von Neumann-овиот bottleneck на перформанси. На пример следните можат да се подобрат во перформанси:

  • вметнување на кеш меморија помеѓу процесорот и главната меморија
  • вметнување на посебни кешови или посебни пристапни патеки за податоци и инструкции (т.н Модифицираната Харвардска архитектура)
  • користење на алгоритми за предвидување на разгранување и логика
  • користење на лимитиран процесорски стек или дури мемории кои се директно на чипот за да се намали пристапот на меморијата

Проблемот може да биде надминат донекаде со користење на паралелни компјутери, пример. користење на NUMA архитектурата - овој пристап е често користен од суперкомпјутери. Помалку е јасно дали интелектуалниот bottleneck кој Backus го критикувал се има многу променето од 1977 година. Предложеното решение на Backus немало значајно влијание. Модерното функционално програмирање и објектно-ориентираното програмирање се помалку насочени кон ‘разменување големи количини натака-навака’ одколку претходните јазици како Фортран, но внатрешно, на тоа сеуште компјутерите трошат поголем дел од времето; дури и суперкомпјутерите.

Од 1996 година, бенчмарк на паза на податоци има откриено дека три од четири процесорски циклуси се поминати чекајќи на меморијата. Истражувачите очекуваат дека зголеменоста на истовремени инструкциски протоци со мулти-тредирање или мултипроцесирање на еден чип ќе го направи bottleneck-ирањето полошо.[24]

Само-модифицирачки код[уреди | уреди извор]

На страна од von Neumann-овиот bottleneck, програмските модификации може да бидат мошне штетни, ненамерно или од дизајнерска гледна точка. Во некои едноставно складирачки компјутерски дизајни, дисфункционална програма може да се оштети самата себеси, другите програми или оперативниот систем, кој би довело до компјутерска несреќа. Мемориско заштитување и други форми на контрола на пристап можат обично да заштитат од ненамерна и злонамерна модификација на програма

Процесори кои не користат von Neumann архитектура[уреди | уреди извор]

Националниот Полупроводник COP8 бил претставен во 1986: тој има Модифицирана Харвардска архитектура.[25][26] Reduceron е обид да се креира процесор за директна изведба на Функционална Програма. Можеби најчестатат структура што не е на von Neumann се користи во содржински адресинрана меморија (CAM).

Референци[уреди | уреди извор]

  1. von Neumann, John (1945), First Draft of a Report on the EDVAC (PDF), archived from the original (PDF) on March 14, 2013, retrieved August 24, 2011
  2. von Neumann, John (1945), First Draft of a Report on the EDVAC (PDF), archived from the original (PDF) on March 14, 2013, retrieved August 24, 2011
  3. Ganesan 2009
  4. Markgraf, Joey D. (2007), The von Neumann bottleneck, retrieved August 24, 2011
  5. Copeland 2006, p. 104
  6. MFTL (My Favorite Toy Language) entry Jargon File 4.4.7, retrieved 2008-07-11
  7. Turing, A.M. (1936), "On Computable Numbers, with an Application to the Entscheidungsproblem", Proceedings of the London Mathematical Society, 2 (1937) 42, pp. 230–65, doi:10.1112/plms/s2-42.1.230 (and Turing, A.M. (1938), "On Computable Numbers, with an Application to the Entscheidungsproblem. A correction", Proceedings of the London Mathematical Society, 2 (1937) 43 (6), pp. 544–6, doi:10.1112/plms/s2-43.6.544)
  8. "Electronic Digital Computers", Nature 162, September 25, 1948: 487, doi:10.1038/162487a0, retrieved 2009-04-10
  9. Lukoff, Herman (1979), From Dits to Bits…: A Personal History of the Electronic Computer, Robotics Press, ISBN 978-0-89661-002-6
  10. ENIAC project administrator Grist Brainerd's December 1943 progress report for the first period of the ENIAC's development implicitly proposed the stored program concept (while simultaneously rejecting its implementation in the ENIAC) by stating that "in order to have the simplest project and not to complicate matters" the ENIAC would be constructed without any "automatic regulation".
  11. Copeland 2006, p. 113
  12. Copeland, Jack (2000), A Brief History of Computing: ENIAC and EDVAC, retrieved January 27, 2010
  13. Copeland, Jack (2000), A Brief History of Computing: ENIAC and EDVAC, retrieved 27 January 2010 which cites Randell, B. (1972), Meltzer, B.; Michie, D., eds., "On Alan Turing and the Origins of Digital Computers", Machine Intelligence (Edinburgh: Edinburgh University Press) 7: 10, ISBN 0-902383-26-4
  14. Copeland 2006, pp. 108–111
  15. Bowden 1953, pp. 176,177
  16. Bowden 1953, p. 135
  17. "Electronic Computer Project". Institute for Advanced Study. Retrieved May 26, 2011
  18. James E. Robertson (1955), Illiac Design Techniques, report number UIUCDCS-R-1955-146, Digital Computer Laboratory, University of Illinois at Urbana-Champaign
  19. F.E. Hamilton, R.R. Seeber, R.A. Rowley, and E.S. Hughes (January 19, 1949). "Selective Sequence Electronic Calculator". US Patent 2,636,672. Retrieved April 28, 2011. Issued April 28, 1953.
  20. Herbert R.J. Grosch (1991), Computer: Bit Slices From a Life, Third Millennium Books, ISBN 0-88733-085-1
  21. C. Gordon Bell; R. Cady; H. McFarland; J. O'Laughlin; R. Noonan; W. Wulf (1970), "A New Architecture for Mini-Computers—The DEC PDP-11" (PDF), Spring Joint Computer Conference, pp. 657–675.
  22. Backus, John W. "Can Programming Be Liberated from the von Neumann Style? A Functional Style and Its Algebra of Programs". doi:10.1145/359576.359579.
  23. Dijkstra, Edsger W. "E. W. Dijkstra Archive: A review of the 1977 Turing Award Lecture". Retrieved 2008-07-11.
  24. Richard L. Sites, Yale Patt. "Architects Look to Processors of Future". Microprocessor report. 1996.
  25. Richard L. Sites, Yale Patt. "Architects Look to Processors of Future". Microprocessor report. 1996.
  26. "COP888 Feature Family User’s Manual" (PDF). National Semiconductor. Retrieved 2012-01-20.