|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Мал. 8.3 - Основні регістри процесора Pentium II32-бітового адресного простору, їх можна сміливо проігнорувати. Регістр EIP - це лічильник програм (Extended Instruction Pointer - розширений покажчик команд). Регістр EFLAGS — це регістр прапора. Загальний огляд рівня команд системи ULTRASPARC II Архітектура SPARC була вперше введена в 1987 році компанією Sun Microsystems. Ця архітектура була однією з першої архітектури промислового призначення типу RISC. Вона була заснована на дослідженні, проведеному в Берклі в 80-і роки [110, 113]. Спочатку система SPARC була 32-розрядною архітектурою, але UltraSPARC II — це 64-розрядна машина, заснована на Version 9, і саме її ми описуватимемо в цьому розділі. В цілях узгодженості з рештою частин книги ми називатимемо дану систему UltraSPARC II, хоча на рівні команд всі машини UltraSPARC ідентичні. Структура пам'яті машини UltraSPARC II дуже проста: пам'ять є лінійним масивом з 264 байтів. На жаль, пам'ять настільки велика (18 446 744 073 709 551 616 байтів), що в даний час її неможливо реалізувати. Сучасні реалізації мають обмеження на розмір адресного простору, до якого вони можуть звертатися (244байтов у UltraSPARC II), але в майбутньому це число збільшиться. Байти нумеруються зліва направо, але нумерацію можна зрадити і зробити її справа наліво, встановивши біт в регістрі прапора. Важливо, що архітектура команд має більше байт, чим потрібний для реалізації, оскільки в майбутньому, швидше за все, знадобиться збільшити розмір пам'яті, до якої може звертатися процесор. Одна з найсерйозніших проблем при розробці архітектури полягає в тому, що архітектура команд обмежує розмір пам'яті, що адресується. У інформатиці існує одне питання, яке неможливо вирішити: ніколи не вистачає тої кількість бітів, яка є в даний момент. Коли-небудь ваші внуки запитають у вас, як же могли працювати комп'ютери, які містять всього лише 32-бітові адреси і лише 4 Гбайт пам'яті. Архітектура команд SPARC достатньо проста, хоча організація регістрів була небагато ускладнена, щоб зробити виклики процедур ефективнішими. Практика показує, що організація регістрів вимагає великих зусиль і в загальному ці зусилля не коштують того, але правило сумісності не дозволяє позбавитися цього. У системі UltraSPARC II є дві групи регістрів: 32 64-бітових регістра загального призначення і 32 регістри з плаваючою крапкою. Регістри загального призначення називаються R0-R31, але в певних контекстах використовуються інші назви. Варіанти назв регістрів і їх функції приведені в табл. 8.1.
Таблиця 8.1 - Регістри загального призначення в системі UltraSPARC II
Всі регістри загального призначення 64-бітові. Всі вони, окрім R0, значення якого завжди рівне 0, можуть прочитуватися і записуватися за допомогою різних команд завантаження і збереження. Функції, приведені в табл. 8.1, частково визначені за угодою, але частково засновані на тому, як апаратне забезпечення обробляє їх. Взагалі не варто відхилятися від цих функцій, якщо ви не являєтесь крупним фахівцем, блискуче розбираєтесь в комп'ютерах SPARC. Програміст повинен бути упевнений, що програма правильно звертається до регістрів і виконує над ними допустимі арифметичні дії. Наприклад, дуже легко завантажити числа з плаваючою крапкою в регістри загального призначення, а потім провести над ними цілочисельне складання, операцію, яка приведе до повної нісенітниці, але яку центральний процесор обов'язково виконає, якщо цього зажадає програма. Глобальні змінні використовуються для зберігання констант, змінних і покажчиків, які потрібні у всіх процедурах, хоча вони можуть завантажуватися і перезавантажутись при вході в процедуру і при виході з процедури, якщо потрібно. Регістри Іх і Ох використовуються для передачі параметрів процедурам, щоб уникнути звернень до пам'яті. Нижче ми розповімо, як це відбувається. Спеціальні регістри використовуються для особливих цілей. Регістри FP і SP обмежують поточний фрейм. Перший указує на основу поточного фрейма і використовується для звернення до локальних змінних так само як LV на мал. 4.9. Іншою указує на поточну вершину стека і змінюється, коли слова поміщаються в стек або виштовхуються звідти. Значення регістра FP змінюється тільки при виклику і завершенні процедури. Третій спеціальний регістр — R31. Він містить адресу повернення для поточної процедури. Насправді процесор UltraSPARC II має більше 32 регістрів загального призначення, але тільки 32 з них видно для програми у будь-який момент часу. Ця особливість, звана регістровими вікнами, призначена для підвищення ефективності виклику процедур. Система регістрових вікон проілюстрована на мал. 5.4. Основна ідея — імітувати стек, використовуючи при цьому регістри. Тобто існує декілька наборів регістрів, так само як і декілька фреймів в стеку. Рівно 32 регістри загального призначення видно у будь-який момент. Регістр CWP (Current Window Pointer - покажчик поточного вікна) стежить за тим, який набір регістрів використовується в даний момент. Команда виклику процедури приховує старий набір регістрів і шляхом зміни CWP надає новий набір, який може використовувати викликана процедура. Проте деякі регістри переносяться з тієї, що викликає процедури до викликаної процедури, що забезпечує ефективний спосіб передачі параметрів між процедурами. Для цього деякі регістри перейменовуються: після виклику процедури колишні вихідні регістри з R8 по R15 все ще видно, але тепер це вхідні регістри з R24 по R31. Вісім глобальних регістрів не міняються. Це завжди один і той же набір регістрів.
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |