Всього книг:

139

Останнє оновлення:

 2012-02-24 10:46:24

 

Реклама

 




 

 

Наші Друзі

rozvAGA!info - Приколи,фото,дівчата,он-лайн ігри,форум,телепрограма

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Основи програмування : Схема роботи фон-нейманівського процесора

Електронна бібліотека. Художня та наукова література.

 

 

 

Основи програмування:Схема роботи фон-нейманівського процесора

 

загрузка...

Основні елементи фон-нейманівського процесора

Типовий фон-нейманівський процесор містить у своєму складі такі основні елементи:

* керуючий пристрій;
* арифметико-логічний пристрій;
* спеціальні регістри: програмний лічильник (завжди вказує на чергову команду, яка повинна виконуватися, тобто його вмістом є адреса поточної команди; інша назва - лічильник команд); регістр адреси пам’яті; регістр даних пам’яті; регістр команд; регістр стану процесора;
* універсальні регістри (один або декілька); вони є доступними для програмування на рівні машинних команд. Як мінімум, повинен бути один універсальний регістр (акумулятор) для зберігання проміжних результатів обчислень. Сучасні процесори мають декілька універсальних регістрів.

Кількість бітів, які можна запам’ятати за допомогою одного регістра, називається розрядністю процесора.

Структура процесорної шини

Процесор обмінюється даними з оперативною пам’яттю по процесорній шині, яка має порівняно високу швидкодію. Типова процесорна шина має такі складові частини:

* шина адреси. По цій шині передається адреса комірки пам’яті, з якої потрібно зчитати або до якої потрібно записати інформацію. Розрядність шини адреси визначає кількість комірок оперативної пам’яті, до яких може звертатися процесор. Кажуть, що процесор може адресувати таку кількість пам’яті. Так, якщо шина адреси має розрядність 20 біт, то процесор може адресувати 220 байтів (1 мегабайт) пам’яті;
* шина даних, по якій передаються дані. Розрядність цієї шини визначає кількість байтів, які можуть бути одночасно передані по шині. Це, в свою чергу, істотно впливає на швидкість роботи процесора;
* керуюча шина, призначена для передачі керуючих сигналів.

Операнди та основні режими адресації.

Як уже зазначалося, операнди команд (тобто дані, над якими виконуються операції) вказуються в самій команді. Коли процесор зчитує ім'я команди, він може визначити за цим ім'ям кількість і тип операндів. В залежності від типу операндів розрізняють такі основні режими адресації:

* безпосередня. Значення операндів безпосередньо вказуються в самій команді;
* пряма; в команді вказується адреса комірки пам'яті, в якій зберігається потрібне дане;
* регістрова; в команді вказується назва регістру процесора, в якому зберігається значення операнду;
* непряма; в команді вказується ім'я регістру процесора, але в ньому зберігається не саме значення операнду, а адреса комірки пам'яті, з якої його потрібно вибрати.

Етапи виконання команд

Традиційно виділяють три етапи виконання кожної команди: вибірка команди; декодування команди; безпосереднє виконання.

На початку вибірки чергової команди її адреса міститься в програмному лічильнику. Ця адреса пересилається до регістру адреси пам'яті, а керуючий пристрій надсилає до оперативної пам'яті сигнал зчитування. Інформація, яка зчитується з оперативної пам'яті, пересилається до регістру даних пам'яті, а звідти - до регістру команд та універсальних регістрів. З конструктивних міркувань хоча б один операнд команди, яка здійснює арифметичні операції, як правило, повинен знаходитись в регістрах процесора, а не в оперативній пам'яті.
Декодування - це перетворення двійкових кодів команд та операндів на послідовність електричних імпульсів, які є необхідними для виконання команди апаратними засобами. Розрізняють апаратне та мікропрограмне декодування. В останньому випадку мова йде про використання мікрокоду - набору правил, відповідно до яких здійснюється декодування. Мікрокод по суті являє собою мову програмування, але це є дуже специфічна мова, рівень якої є ще нижчим, ніж рівень машинної мови. Мікрокод є недоступним для програміста і є прерогативою розробників процесора.
Нарешті, на етапі безпосереднього виконання декодована команда реалізується апаратними засобами.

Після завершення виконання команди відповідним чином змінюється вміст програмного лічильника (він вказує на наступну команду). Під час виконання команди стан процесора може змінитися, що відображається в регістрі станів процесора.
Можна виділяти ще як мінімум два етапи виконання команди: кодування результату та його запис до оперативної пам'яті.

Адресність та її вплив на формат команд

Адресністю команди називається кількість її операндів. Адресність команди завжди відома процесорові, і тому він вибирає з пам'яті рівно стільки операндів, скільки потрібно. Відповідно до цього можна говорити і про адресність машини.

Приклад.
Нехай перед проектувальником деякого гіпотетичного процесора стоїть задача: реалізувати команду, яка могла б виконувати операцію додавання двох чисел. Нехай він може вибирати між одно-, дво- і триадресним варіантом реалізації. Для простоти викладення ми вважаємо, що всі операнди цієї команди повинні зберігатися в регістрах процесора.Триадресний варіант. Тут все просто: триадресна команда
SUM3 R1,R2,R3

вимагає, щоб перший доданок містився в одному регістрі (наприклад, R3), другий доданок - в іншому (R2), а результат залишався в третьому (R1).Двоадресний варіант. Маємо двоадресну команду
SUM2 R1,R2

Проблема полягає в тому, що ми працюємо з трьома числами (два доданки і результат), а регістрів, які використовуються в якості операндів, всього два. Типове рішення таке: доданки містяться в обох регістрах, а результат виконання команди залишається в одному з них. Це призведе до того, що один з доданків буде затертий та втрачений (якщо, звичайно, він не був попередньо збережений в якомусь іншому місці).Як приклади двоадресних команд, що входять до системи команд процесора Intel, можна навести ADD (додавання), SUB (віднімання) та інші.Одноадресний варіант. Можливе таке рішення: один з доданків одноадресної команди
SUM1 R1

міститься в єдиному регістрі R1; там же залишається результат. Що стосується другого доданка, то він повинен бути взятим за замовченням з деякого іншого регістру, причому проектувальник повинен заздалегідь визначити, з якого саме.Як приклади одноадресних команд, що входять до системи команд процесора Intel, можна навести MUL (множення), DIV (ділення) та інші.

Звичайно, якщо дані зберігаються не в регістрах процесора, а в оперативній пам'яті, арифметичній операції повинні передувати команди пересилання, які пересилають операнди з оперативної пам'яті до регістрів процесора.

Часові співвідношення при виконанні різних операцій

Співвідношення часу, яке витрачається на виконання різних операцій, залежить від особливостей конкретного процесора. Взагалі кажучи, швидкість виконання кожної операції залежить від таких основних факторів:

* де знаходяться операнди: в регістрах процесора чи в оперативній пам'яті; операції над даними, що містяться в регістрах, виконуються швидше;
* тип даних: операції з фіксованою точкою виконуються, взагалі кажучи, значно швидше, ніж з плаваючою.
* тип операцій. Найтиповіше співвідношення є таким: найшвидше виконуються прості логічні операції, які відповідають основним булевим функціям; далі в порядку спадання швидкості: додавання і віднімання; множення; ділення.

З огляду на це існує ряд практичних рекомендацій для прискорення обчислень.

Наприклад,
замість виразу 2а рекомендується обчислювати рівний йому вираз a+a,
замість a/3 (повільне ділення) писати 0.3333a (більш швидке множення і т.п).

Операції зсуву

Множення і ділення на ступені двійки можна значно прискорити за рахунок використання значно більш швидких операцій зсуву на певну кількість двійкових розрядів. В процесорі реалізовані спеціальні обчислювальні елементи, які виконують зсув. Множення числа на 2b відповідає зсуву на b розрядів вліво, ділення на 2b - зсуву на b розрядів вправо. Це правило аналогічно загальновідомому правилу "зсуву десяткової точки" при множенні і діленні десяткових чисел на 10, 100 і т.п.

Приклади.
Результатом множення числа 00000110 (десяткове число 6) на 4 є число 00011000 (зсув на 2 розряди вліво; десяткове число 24).
Результатом ділення числа 00010110 (десяткове число 22) на 2 є число 00001011 (зсув на 1 розряд вправо; десяткове число 11).

Попереднє питання | Змiст | Наступне питання

 

Увага!

1. Всі книги та матеріали належать їх авторам.
2. Призначені для приватного перегляду.
3.Будь-яке комерційне використовування їх категорично заборонене.

 

 


Content-Pro | 2006-2015

Контакти:

317197170