Тема 1

Основни архитектурни принципи на изчислителните системи. Изпълнение на инструкциите.


страницата се нуждае от дописване/преглеждане


Компютрите са много готино нещо, но как работят?
Първо ще кажем как са измислени.
Разбира се, че са военните - те са измислили всичко(от захарта до порното) с цел губене на време.

А сега сериозно. През 40-те години група инженери и математици от Пентагона измислят принципа на работа на мощно изчислително устройство. Дотогава има много опити и регистрирани патенти в тази сфера, но всички те не са разработени добре като проекти. Проектът, който ни интересува, е ENIAC. В него са залегнали принципите на Джон фон Нойман, който се присъединява към екипа на създателите му.



Това се счита за първата сериозна разработка по създаването на компютър. Фон Нойман предлага принципа на работа на изчислителното устройство, който, с изменения, се използва и до днес.

Преди идеята на фон Нойман се е искало да се създадат крайни автомати с много устойчиви състояния и начин за преминаване между тях. За целта са били необходими много бързи преходи без междинни състояния. Така се въвеждат електронни елементи с две стабилни състояния - "електронни ключове".
PB_switch_Circuitlarge.JPG Но това не е електронен ключ, а механичен ключ. Електронният ключ си сменя състоянието при подаване на електричен сигнал. Как точно става това, ще разберем малко по-късно.
"Ключът" е елемент с две стабилни състояния - включено и изключено (не го очаквахте, нали?). Много важно е ключът да превключва бързо и недвусмислено (без междинни варианти) между състоянията си. В съвременните компютри ключовете преминават от едното състояние в другото за части от наносекундата и няма да станат по-бързи, защото трябва да движим електрони със скорости, сравними с тази на светлината, а ако не се сещате, (все още) не можем да направим такова нещо.



Архитектура на фон Нойман

karh_block_sheme_main_comparh_lecture1_small.PNG
Първата схема е на компютърната архитектура на фон Нойман, според която компютърът е разделен на две основни части - Централен процесор и Оперативна памет. При тази архитектура, програмата представлява поредица инструкции, които процесорът изпълнява. Инструкциите трябва да са еднозначни. Те определят от къде (кои адреси в паметта) процесорът да вземе операндите и операцията, която ще извърши над тях. През периода 1960-1980 са правени много опити за създаване на друга ефективна архитектура, има интегрални схеми, които стигат до пазара, но не са достатъчно добри, за да се наложат.

Сега малко разяснения по първата картинка:


АЛУ - Аритметично-Логическо Устройство


БУ - Блок за Управление


БР - Блок регистри


ЦП - Централен Процесор


ОП - Оперативна памет


Разяснения по втората схема.

Това е схемата на работа на един фон Нойманов процесор:

  1. Чрез програмния брояч се извличат толкова на брой байтове, колкото е дължината на инструкцията, и се обновява програмния брояч.
  2. След като е извлечена инструкцията, тя трябва да се дешифрира и да се пресметнат адресите на операндите. Дешифрирането дава кода на операцията, която трябва да се извърши върху операндите, ако има такива.
  3. Следва адресирането на операндите. Инструкциите много рядко работят с явно зададен адрес, в тях по-често има начини, по които ЦП да изчисли този адрес. Адресите се пращат на ОП и съдържанието на клетките, чиито адреси са изпратени постъпва като вход на АЛУ.
  4. АЛУ изпълнява операцията, която трябва над операндите, и
  5. после резултатът се записва на определено от инструкцията място.

Централният процесор изпълнява инструкциите асинхронно (с изчакване) - изчаква се всяка инструкция да завърши и чак тогава започва следващата. Налага се, понеже инструкциите могат да са с различна дължина.
Освен това, оказва се, че при линейно изпълнение на инструкциите от паметта и при достатъчно дълго време на работа на ЦП, с течение на времето той ще се придвижи през цялата ОП. Това не е никак желателно, тъй като (дано съм разбрал идеята правилно!), за разлика от теоретичните модели, като машина на Тюринг с безкрайна лента, физическата памет е ограничена, и освен това далеч не можем да си позволим да я запълним цялата с инструкции (помислете за операндите!). Решението: въведена е специална инструкция за преход. Тя представлява изчисление на адреса, който след това се записва в програмния брояч. Вкарването на инструкцията за преход нарушава линейността на извършваните операции от ЦП, в известен смисъл програмите се накъсват.

Внимание!
Следващите две секции се различават съществено в зависимост от това, дали слушате лекциите, четете книга или ровите в интернет. Затова давам най-безопасното предложение: запомнете отбелязаното като "първи" и "втори" принцип, запомнете и параграфчето след тях, а накрая погледнете допълнителните материали, и преценете за себе си къде е истината (защото тя е някъде там).
Ако някой знае как стоят нещата в действителност, да се чувства поканен да поправи нашите бъркочи.

Първи принцип на фон Нойман:

Както казахме по-горе, принципът гласи: данните и операндите се съхраняват в една и съща оперативна памет и няма логическа разлика между записа на данни и инструкции (всичко е поредица от 1 и 0). Това е голямата разлика между компютърните архитектури на Джон Атанасов и фон Нойман - при чичо Атанасов инструкциите и операндите са разделени.

Втори принцип на фон Нойман:

Показан (неявно) на втората картинка (тази, която е "зациклила"). Идеята е, че инструкциите се изпълняват принципно последователно, тоест процесорът върви "линейно" напред по инструкциите. Постулатът на фонНойман е фундаментален за компютърните архитектура - всички съвременни компютри са с фон Нойманова архитектура - с определени изменения. Досега няма успешно наложила се друга архитектура.

С развитието на новите технологии от физична (хардуерна) страна не се спазва толкова точно този постулат - съвременните процесори могат да приемат и повече от една команда, но от софтуерна страна нищо не се променя. За програмиста инструкциите се изпълняват последователно. Това е изключително важно, тъй като много често разчитаме на резултата от дадена операция за изпълнението на следващата(-ите): например, нека имаме операция $X$ с операнд с адрес $b$ и резултат с адрес $a$, и операция $Y$ с операнд с адрес $a$ и резултат с адрес $c$ в следната последователност:

X : a  b
Y : c  a

Това означава, че $Y$ използва като операнд резултата от $X$, и за да се изпълни коректно $Y$, трябва първо да завърши $X$;
цялото програмиране се базира на това, че инструкциите се изпълняват последователно.

Работата на компютъра се определя от програмите и наредбата на инструкциите в тях. Правени са опити да се изгради архитектура, при която данните също да имат роля – например, ако някакъв операнд е готов, програмата, използваща този операнд сама да се изпълни. Оказва се, обаче, че е непостижимо за човешката мисъл да използва такива архитектури.

?Трети принцип на фон Нойман?:

Обособяват се два основни блока - централен процесор и оперативна памет. ЦП се управлява от инструкциите в паметта и централният процесор изпълнява инструкциите последователно от оперативната памет. Двата блока са свързани чрез шина.
von-Neuman_2.PNG

Допълнителни четива

http://www.informa.hit.bg/urok11-w.htm
http://en.wikipedia.org/wiki/Von_Neumann_architecture
"Бебето" (Manchester Small-Scale Experimental Machine) отблизо, с обяснения относно функциите на отделните блокове

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License