
- •Мови, рівні і віртуальні машини
- •Сучасні багаторівневі машини
- •Поняття архітектури пк
- •1.4. Розвиток комп’ютерної архітектури
- •Розвиток багаторівневих машин
- •Типи сучасних еом
- •Питання до лекції
- •2.1. Принципи розробки сучасних комп'ютерів
- •2.2. Паралелізм на рівні команд
- •2.3. Конвеєри
- •2.4. Суперскалярні архітектури
- •2.5. Паралелізм на рівні процесорів
- •2.6. Векторні комп'ютери
- •Блок управління
- •2.7. Мультипроцессори
- •2.8. Мультикомпьютери
- •Питання до лекції
- •3. Основи комп’ютерної організації : пам’ять
- •3.1. Ієрархічна структура пам'яті
- •3.2. Загальні відомості про пам'ять
- •3.4. Методи звертання до пам'яті
- •3.5. Модулі пам'яті
- •3.6. Ряди і банки пам'яті
- •3.8. Код з виправленням помилок
- •3. 9. Скільки потрібно пам'яті
- •Питання до лекції
- •4. Цифровий рівень побудови ом
- •4.1. Вентилі і булева алгебра
- •4.2. Булева алгебра
- •4.3. Реалізація булевих функцій
- •4.4. Еквівалентність схем
- •Основні цифрові логічні схеми Інтегральні схеми
- •4.5. Комбінаційні схеми
- •3 Входи і 8 виходів
- •4.6. Арифметичні схеми.
- •4.7. Тактові генератори
- •Питання до лекції
- •Цифровий рівень побудови ом.
- •5. Цифровий логічний рівень архітектури: пам’ять, мікропроцесори
- •5.2. Синхронні sr-защіпки
- •5.3. Синхронні d-защіпки
- •5.4. Тригери (flip-flops)
- •5.5. Регістри
- •5.6. Організація пам'яті
- •Тригер (б)
- •Кожний ряд представляє одне з 3-бітних слів. При операції зчитування і запису завжди зчитується або записується ціле слово
- •5.7. Мікросхеми пам'яті
- •5.9. Мікросхеми процесорів
- •Стрілочки указують вхідні і вихідні сигнали. Короткі діагональні лінії вказують на наявність декількох висновків.
- •Питання до лекції
- •6. Шини
- •6.1. Ширина шини
- •6.2. Синхронізація шини
- •6.3. Синхронні шини
- •6.5. Асинхронні шини
- •6.6. Арбітраж шини
- •6.7. Принципи роботи шини
- •Питання до лекції
- •7. Мікроархітектурний рівень
- •7.1. Приклад мікроархітектури
- •7.2. Тракт даних
- •В цьому розділі
- •Табліця 7.1. Деякі комбінації сигналів аллу і відповідні їм функції
- •7.3. Синхронізація тракту даних
- •7.4. Робота пам'яті.
- •7.5. Мікрокоманди
- •7.6. Управління мікрокомандами: Mic-1
- •7.7. Приклад архітектури команд: ijvm
- •7.8. Модель пам'яті ijvm
- •Питання до лекції
- •8. Рівень архітектури команд
- •8.1. Моделі пам'яті
- •8.2. Загальний огляд рівня архітектури команд
- •8.3. Властивості рівня команд
- •8.4. Регістри
- •8.5. Команди
- •8.6. Загальний огляд рівня команд машини Pentium II
- •8.8. Загальний огляд рівня команд системи ultrasparc II
- •8.9. Загальний огляд віртуальної машини Java
- •8.10. Типи даних
- •8.11. Числові типи даних
- •8.12. Нечислові типи даних
- •8.13. Типи даних процесора Pentium II
- •Підтримувані типи відмічені хрестом (х)
- •8.14. Типи даних машини UltraSparc II
- •8.16. Типи даних віртуальної машини Java
- •8.17. Формати команд
- •Питання до лекції
- •9. Адресація
- •9.1. Способи адресації
- •9.2. Безпосередня адресація
- •9.3. Пряма адресація
- •9.4. Регістрова адресація
- •9.5. Непряма регістрова адресація
- •Лістинг 9.1 - Програма на асемблері для обрахунку суми елементів масиву.
- •9.6. Індексна адресація
- •Листинг 9.2. Програма на мові асемблера для обчислення операції або від (Аі і Ві ) для масиву з 1024 елементів.
- •9.7. Відносна індексна адресація
- •9.8. Стекова адресація
- •9.9. Зворотній польський запис
- •9.10. Обчислення формул в зворотнім польськім записі
- •Питання до лекції
7.8. Модель пам'яті ijvm
А заразом мі можемо розглянути архітектуру IJVM. Вона складається з пам'яті, яку можна розглядати або як масив з 4 294 967 296 байтів (4 Гбайт), або як масив з 1 073 741 824 слів, кожне з яких містить 4 байти. На відміну від більшості архітектури команд, віртуальна машина Java не здійснює звертання до пам'яті, видимих на рівні команд, але тут існує декілька неявних адресу, які складають основу для покажчика. Команді IJVM можуть звертатися до пам'яті тільки через ці покажчики. Визначені наступні області пам'яті:
Набір констант. Ця область складається з констант, ланцюжків і покажчиків на інші області пам'яті, на які можна робити посилання. Дана область завантажується в тій момент, коли програма завантажується з пам'яті, і після цього не міняється. Існує неявний регістр СРР (Constant Pool Pointer — покажчик набору констант), який містить адресі першого слова набору констант.
Фрейм локальних змінних. Ця область призначення для зберігання змінних під годину виконання процедури. Вона називається фреймом локальних змінних. На качану цього фрейма розташовуються параметри (або аргументи) викликаної процедури. Фрейм локальних змінних не включає в собі стік операндів. Він поміщається окремо. Віходячи з міркувань продуктивності, мі помістили стік операндів прямо над фреймом локальних змінних. Існує неявний регістр, який містить адреси першої змінної фрейма. Мі назвемо цей регістр LV (Local Variable — локальна змінна). Параметрі викликаної процедури зберігаються на качану фрейма локальних змінних.
Стік операндів. Стек операндів не повинний перевищувати певний розмір, який наперед обчислюється компілятором Java. Простір стека операндів розташовується прямо над фреймом локальних змінних, як показано на рис. 7.9. В даному випадку стек операндів зручно вважати частиною фрейма локальних змінних. Біля будь-якому випадку існує віртуальний регістр, який містить адресі верхнього слова стека. Відзначимо, що на відмінну від регістрів СРР і LV цей покажчик міняється під годину виконання процедури, оскільки операнди поміщаються в стек і виштовхуються з нього.
Область процедур. Нарешті, існує область пам'яті, в якій міститься програма. Є віртуальний регістр, що містить адресі команди яка буде викликана наступною. Цей покажчик називається лічильником команд, або PC (Program Counter). На відміну від інших ділянок пам'яті область процедури є масивом байтів.
Слід зробити одну примітку з приводу покажчиків. Регістри СРР, LV і SP вказують на слова, а не на байти, і зсуви відбуваються на певне число слів. Наприклад, LV, LV+1 і LV+2 вказують на перші три слова з фрейма локальних змінних, а LV, LV+4 і LV+8 — на слова, розташовані на відстані чотирьох слів (16 байтів) один від одного.
SP
Область процедур
LV
Набір констант
CPP PC
Рис.7.9. Області пам’яті IJVM
Регістр PC, навпаки, містить адреси байтів, і зміна цього значення означає збільшення на певну кількість байтів, а не слів. Звернення до пам'яті регістром PC відрізняється від обігу інших регістрів, тому в машині Mic-1 і передбачений спеціальний порт пам'яті для PC. Запам'ятайте, що його розмір складає всього один байт. Якщо збільшити PC на одиницю і почати процес читання, то це приведе до виклику наступного байта. Якщо збільшити SP на одиницю і почати процес читання, то це приведе до виклику наступного слова.