
- •1.1 Пояснити що таке мікроархітектурний рівень комп’ютера
- •1.2 Дати опис послідовності мікрооперацій в іjvm Міс-1 в одному циклі синхронізації?
- •1.3 Дати опис взаємодії іjvm Міс-1 з основною пам’яттю.
- •1.5 Скільки команд має іjvm Міс-1. Перерахуйте основні групи команд і дайте пояснення їх призначення.
- •1.6 Поясніть роботу стека операндів на прикладі
- •1.7 Опишіть інтерпретацію в Міс-1 команди умовного переходу ifeq
- •1.8 Поясніть призначення мікрокоманди Маіn1
- •1.9 Як побудована кеш-пам’ять прямого відображення? Поясніть, що таке тег. Що таке «промах кеш-пам’яті»
- •1.10 Опишіть типи даних і формати команд віртуальної машини Java
- •1. Намалювати тракт даних мікроархітектури віртуальної машини іjvm. Пояснити призначення і його функціонування.
- •2. Намалювати схему мікроархітектури Міс-1 і коротко пояснити управління її мікрокомандами.
- •3. Пояснити що таке старший біт і призначення бітів n і z.
- •4. Яке призначення регістра sp і які значення він набуває?
- •5. Приведіть простий приклад компіляції з мови Java на мову ассемблера Java
- •6. Опишіть інтерпретацію в Міс-1 команди bipush
- •7. Опишіть інтерпретацію в Міс-1 команди if_icmeq
- •8. Які типи організації (моделі) кеш-пам’яті вам відомі. Які типи взаємодії процесор пам’ять вам відомі?
- •9. Поясніть як здійснюється прогнозування переходів (галужень)
- •10. Опишіть типи команд віртуальної машини Java
- •Пояснити синхронізацію тракту даних із використанням часової діаграми віртуальної машини Java
- •Пояснити що таке мікрокоманда іjvm. Дати опис формату мікрокоманд віртуальної машини Java.
- •Пояснити, що таке стек і його призначення. Привести приклад графічного зображення стеку і пояснити його роботу.
- •Описати принцип організації пам’яті іjvm. Пояснити призначення і адресацію різних областей пам’яті: констант, фреймів локальних змінних і області процедур
- •Поясніть в загальних рисах, як здійснюються інтерпретація команд іjvm Міс-1.
- •Опишіть інтерпретацію в Міс-1 команди iload.
- •Опишіть інтерпретацію в Міс-1 команди istore
- •Що таке просторова і часова локалізація адрес в кеш-пам’яті
- •Опишіть, як здійснюється програмне введення-виведення.
Пояснити, що таке стек і його призначення. Привести приклад графічного зображення стеку і пояснити його роботу.
Для
змінних резервується особлива область
пам'яті, яка називається стеком, але
окремі змінні не о
держують
у ньому абсолютних адрес. Який-небудь
регістр, скажімо, LV, вказує на базову
адресу локальних змінних для поточної
процедури.. У даному випадку викликається
процедура А з локальними змінними а1,
а2 і аЗ, і для цих змінних резервується
ділянка пам'яті, що починається з адреси,
яка вказується регістром LV. Інший
регістр, SP, вказує на старше слово
локальних змінних процедури А. Якщо
значення регістра LV дорівнює 100, а слова
складаються з 4 байтів, то значення SP
буде 108. Для звернення до змінної потрібно
обчислити її зсув від адреси LV. Структура
даних між LV і SP (включаючи обидва
зазначених слова) називається фреймом
локальних змінних.
Описати принцип організації пам’яті іjvm. Пояснити призначення і адресацію різних областей пам’яті: констант, фреймів локальних змінних і області процедур
А тепер ми можемо розглянути архітектуру IJVM. Вона складається з пам'яті, яку можна розглядати або як масив з 4294967296 байтів (4 Гбайт), або як масив з 1073741824 слів, кожне з яких містить 4 байта. На відміну від більшості архітектур команд, віртуальна машина Java не робить звернень до пам'яті, видимих на рівні команд, але тут існує кілька неявних адрес, які складають основу для покажчика. Команди IJVM можуть звертатися до пам'яті лише через ці покажчики. Визначено такі області пам'яті:
Набір констант. Ця область складається з констант, ланцюжків і покажчиків на інші області пам'яті, на які можна робити посилання. Дана область завантажується в той момент, коли програма завантажується з пам'яті, і після цього не змінюється. Існує неявний регістр СРР (Constant Pool Pointer - покажчик набору констант), який містить адресу першого слова набору констант
.
Фрейм локальних змінних. Ця область призначена для зберігання змінних під час виконання процедури. Вона називається фреймом локальних змінних. На початку цього фрейму розташовуються параметри викликаної процедури. Фрейм локальних змінних не включає в себе стек операндів. Він міститься окремо. Виходячи з міркувань продуктивності, ми помістили стек операндів прямо над фреймом локальних змінних. Існує неявний регістр, який містить адресу першої змінної фрейму. Ми назвемо цей регістр LV (локальна змінна). Параметри викликаної процедури зберігаються на початку фрейму локальних змінних.
Стек операндів. Стек операндів не повинен перевищувати певний розмір, який заздалегідь обчислюється компілятором Java. Простір стека операндів розташовується прямо над фреймом локальних змінних. У будь-якому випадку існує віртуальний регістр, який містить адресу верхнього слова стека. Відзначимо, що на відміну від регістрів СРР і LV цей покажчик змінюється під час виконання процедури, оскільки операнди поміщаються в стек і виштовхуються з нього.
Область процедур. Нарешті, існує область пам'яті, в якій міститься програма. Є віртуальний регістр, що містить адресу команди, яка буде викликана наступною. Цей покажчик називається лічильником команд, або PC (Program Counter). На відміну від інших ділянок пам'яті, область процедури представляє собою масив байтів.