Одношинна структура процесора
Почнемо розгляд процесора з аналізу його структури та організації роботи. Однією з найпростіших структур процесора є одношинна структура. Одношинну структуру процесора і його зв’язки з іншими пристроями комп’ютера показано на рис. 4.1. Як бачимо, до складу процесора входять пристрій керування, арифхметико-логічний пристрій АЛП з вхідним РгУ та вихідним РгZ регістрами, і регістрова пам’ять, до складу якої входять регістр команд РгК, регістр даних РгД, регістр адреси РгА, програмний лічильник ПЛ, та регістровий файл - стек програмно доступних регістрів Рг0, Рг1... Рг(n-І). Обмін інформацією між названими пристроями здійснюється через спільну внутрішню шину процесора. Зв’язок процесора з основною пам’яттю проводиться через регістри адрес РгА та даних РгД.
Рис. 4.1. Одношинна структура процесора
РгА зберігає адресу даного або команди при зверненні до основної пам’яті. РгК зберігає команду після її зчитування з основної пам’яті. РгД зберігає операнд при його запису або зчитуванні з основної пам’яті. ПЛ - програмний лічильник, який підраховує команди та зберігає адресу поточної команди.
Регістри загального призначення Рг0-Рг(n-1) регістрового файла є програмно доступними. Вони можуть використовуватися програмістом в якості адресних регістрів, індексних регістрів при виконанні операцій модифікації адрес або в якості регістрів для зберігання проміжних результатів обчислень. Більшість комп’ютерів мають в складі процесора тригери для зберігання бітів стану процесора, або як їх ще називають, прапорців. Кожен прапорець має спеціальне призначення. Частина прапорців вказує на результати арифметичних і логічних операцій: додатній результат (Р), від’ємний результат (М), нульовий результат (Z), перенос (С), арифметичне переповнення (V) тощо.
Різні команди вказують процесору, коли встановити чи очистити ці тригери. Інша частина прапорців вказує режими захисту пам’яті. Існують також прапорці, які вказують пріоритети виконуваних програм. В деяких процесорах додаткові тригери слугують для зберігання кодів умов, формуючи регістр кодів умов. Взяті разом описані прапорці формують слово стану програми (ССП), а відповідні тригери - регістр ССП.
4.1.2. Основні операції процесора
Можна виділити дві фази виконання команди в процесорі: фаза вибірки та фаза виконання. Фаза вибірки передбачає вибірку вмісту комірки основної пам’яті, в якій зберігається команда, за значенням програмного лічильника ПЛ і засилання команди в РгК (РгК := [[ПЛ]]), а також прирощення ПЛ на одиницю: [ПЛ] := [ПЛ] + 1. Фаза виконання команди передбачає її дешифрування та виконання операцій, вказаних в коді операції команди. Для того, щоб побачити, як обидві фази виконуються в процесорі, розглянемо його основні операції, до виконання яких задіяні представлені на рис. 4.1 елементи.
4.1.2.1. Вибірка слова з пам’яті
Нехай адреса комірки основної пам’яті знаходиться в регістрі Рг1, а дані потрібно розмістити в регістрі Рг2.
Для вибірки із основної пам’яті необхідно виконати наступну послідовність операцій:
1. РгА := Ргі1(запис до регістра адреси РгА вмісту регістра Рг1).
2. Зчитування (виконання операції зчитування команди з комірки основної пам’яті до регістра РгД шляхом подання сигналу Read на вхід керування режимом роботи основної пам’яті та сигналу запису до регістра РгД).
3. Чекання на сигнал підтвердження зчитування.
4. Рг2 := РгД (запис до регістра Рг2 даного з регістра РгД).
Пункт 3 виконується при асинхронному принципі обміну між процесором і основною пам’яттю, коли потрібно чекати на сигнал підтвердження зчитування. При синхронному принципі обміну чекати на сигнал підтвердження зчитування не потрібно, оскільки до подання сигналу запису в регістр РгД передбачається гарантована наявність даного на його вході.
Запам’ятовування слова в пам’яті
Нехай слово, яке запам’ятовується в основній пам’яті, знаходиться в регістрі Рг2, а адреса - в регістрі Рг1. Тоді послідовність операцій буде наступною:
1. РгА := Ргі (запис до регістра адреси РгА вмісту регістра Ргі).
2. РгД := Рг2 (запис до регістра даних РгД вмісту регістра Рг2), запис (виконання операції запису слова з регістра РгД до комірки основної пам’яті шляхом подання сигналу Write на вхід керування режимом роботи основної пам’яті).
3. Чекання на сигнал підтвердження запису (при асинхронному принципі обміну між процесором і основною пам’яттю).
Обмін даними між регістрами
Символьне зображення вхідних і вихідних елементів регістрів процесора показане на рис. 4.2 у вигляді ключів, які пропускають або не пропускають інформацію з входу на вихід, залежно від значення сигналів керування на їх входах. Тут сигнал керування входом і-го регістра Ргі позначено як Ргі in, а сигнал керування виходом і-го регістра Ргі позначено як Ргі out. В конкретній схемі регістра це можуть бути, наприклад, вхід запису числа до регістра та його тристабільний вихід.
Pr(i-1) in
Pr(i-1) out
Pr Yin
PrZin
PrZout
Рис. 4.2. Фрагмент схеми процесора з вхідними та вихідними елементами регістрів
Подання 1 на вхід керування регістра Priout з’єднує вихід регістра Ргі з шиною, а подання 1 на вхід керування регістра Ргііn записує число з шини в регістр Ргі. Подаючи на регістри вказані сигнали, можна переписувати числа з одного регістра в інший наприклад, для перезапису числа із регістра РгЗ до регістра Рг5 необхідно подати наступні сигнали: Pr3out, Рг5іп.
4.1.2.4. Виконання арифметичних і логічних операцій
Арифметико-логічний пристрій (АЛП) процесора призначений для виконання операцій обробки даних. Тип виконуваної операції вказується кодом на вході керування АЛП. В АЛП, зокрема, виконуються такі операції: зсув - зміщення кодів, які зберігаються в регістрах регістрового файлу, вліво або вправо на задане число розрядів; додавання до слова 1 або -1 - операція рахунку; дешифрування - перетворення двійкових кодів у сигнали (однорядний код); шифрування - перетворення однорядного коду в двійковий; порівняння - визначення відношення старшинства двох чисел або їх рівності; пороз- рядне доповнення - формування оберненого коду; порозрядні логічні множення і додавання двох чисел; порозрядне додавання двох чисел по модулю; додавання двох чисел. Звичайно, цей перелік може бути розширений.
Розглянемо виконання операції додавання двох чисел з регістрів Ргі і Рг2 з записом результату в регістр РгЗ на одношинній структурі процесора, представленій на рис. 4.1:
1. Priout, РгУіп (запис до вхідного регістра АЛП РгУ вмісту регістра Ргі).
2. Pr2out, Add, PrZin (подання числа з регістра Рг2 на внутрішню шину процесора, звідки воно поступає на другий вхід АЛП, виконання в АЛП операції додавання чисел з регістра РгУ та з шини і запам’ятовування результату в регістрі PrZ).
3. РгZout, РгЗіn (запис до регістра РгЗ вмісту регістра РгZ).
Подібним чином виконуються інші вище перераховані операції. Необхідно відзначити, що сигнали Ргіоut та Ргjin, де і та j — номери регістрів, мають бути рознесеними в часі для забезпечення коректного перезапису інформації з одного регістра до іншого з врахуванням часу спрацювання їх вхідних та вихідних схем, ємності провідників шини та затримки в комбінаційних схемах АЛП. Цей час визначає такт роботи процесора.