|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Загальний огляд рівня команд машини Pentium IIУ цьому розділі ми обговоримо три абсолютно різна архітектура команд: IA-32 компанії Intel (вона реалізована в Pentium II), Version 9 SPARC (вона реалізована в процесорах SPARC) і JVM (вона реалізована в picojava II). Ми не переслідуємо мету дати вичерпний опис кожній з цієї архітектури. Ми просто хочемо продемонструвати важливі аспекти архітектури команд і показати, як ці аспекти міняються від однієї архітектури до іншої. Почнемо з машини Pentium П. Процесор Pentium II розвивався впродовж багатьох років. Його історія йде до найперших мікропроцесорів, як ми говорили у розділі 1. Основна архітектура команд забезпечує виконання програм, написаних для процесорів 8086 і 8088 (які мають одну і ту ж архітектуру команд), а в машині навіть містяться елементи 8080 — 8-розрядний процесор, який був популярним в 70-і роки. На процесор 8080, у свою чергу, сильно вплинули потреби сумісності з процесором 8008, який був заснований на процесорі 4004 (4-бітовій мікросхемі, що застосовувалася ще в кам'яному столітті). З погляду програмного забезпечення, комп'ютери 8086 і 8088 були 16-розрядними машинами (хоча комп'ютер 8088 містив 8-бітову шину даних). Їх послідовник 80286 також був 16-розрядним. Його головним здобутком був більший об'єм адресного простору, хоча невелике число програм використовували його, оскільки воно складалося з 16 384 64 К сегментів, а не представляло собою лінійну 224-байтну пам'ять. Процесор 80386 був першою 32-розрядною машиною, випущеною компанією Intel. Всі подальші процесори (80486, Pentium, Pentium Pro, Pentium II, Celeron і Хеоn) мають таку саму 32-розрядну архітектуру, яка називається IA-32, тому ми зосередимо нашу увагу саме на цій архітектурі. Єдиною істотною зміною архітектури з часів процесора 80386 було введення команд MMХ в пізніші версії системи Pentium і їх включення в Pentium II і подальші процесори. Pentium II має 3 операційних режима, в двох з яких він працює як 8086. У реальному режимі всі особливості, які були додані до процесора з часів системи 8088, відключаються, і Pentium II працює як простий комп’ютер 8088. Якщо програма здійснює помилку, то відбувається повна відмова системи. Якби компанія Intel займалася розробкою людських істот, то всередину кожної людини був би поміщений біт, який перетворює людей назад на режим шимпанзе (примітивний мозок, відсутність мови, живлення в основному бананами і т. д.). На наступному ступені знаходиться віртуальний режим 8086, який робить можливим виконання старих програм, написаних для 8088, із захистом. Щоб запустити стару програму 8088, операційна система створює спеціальне ізольоване середовище, яке працює як процесор 8088, за винятком того, що якщо програма дає збій, операційній системі передається відповідна інформація і повної відмови системи не відбувається. Коли користувач WINDOWS починає роботу з MS-DOS, програма, яка діє там, запускається у віртуальному режимі 8086, щоб програма WINDOWS не могла вмішуватися в програми MS-DOS. Останній режим — це захищений режим, в якому Pentium II працює як Pentium II, а не як 8088. У цьому режимі доступні 4 рівні привілеїв, які управляються бітами в регістрі прапора. Рівень 0 відповідає привілейованому режиму на інших комп'ютерах і має повний доступ до машини. Цей рівень використовується операційною системою. Рівень 3 призначений для призначених для користувача програм. Він блокує доступ до певних команд і регістрів управління, щоб помилки якої-небудь призначеної для користувача програми не привели до поломки всієї машини. Рівні 1 і 2 використовуються рідко. Pentium II має величезний адресний простір. Пам'ять розділена на 16 384 сегменти, кожний з яких йде від адреси 0 до адреси 232-1. Проте більшість операційних систем (включаючи UNIX і всі версії WINDOWS) підтримують тільки один сегмент, тому більшість прикладних програм бачать лінійний адресний простір в 232 байтів, а іноді частина цього простору займає сама операційна система. Кожен байт в адресному просторі має свою адресу. Слова складаються з 32 бітів. Байти нумеруються справа наліво (тобто найперша адреса відповідає наймолодшому байту). Регістри процесора Pentium II показані на мал. 5.3. Перші чотири регістри EAХ, EВХ, EСХ і EDX 32-бітові. Це регістри загального призначення, хоча у кожного з них є певні особливості. EAХ — основний арифметичний регістр; EВХ призначений для зберігання покажчиків (адрес пам'яті); EСХ зв’язаний з організацією циклів; EDX потрібен для множення і ділення — цей регістр разом з EAХ містить 64-бітові числа. Кожний з цих регістрів має 16-розрядний регістр в молодших 16 бітах і 8-розрядний регістр в молодших 8 бітах. Дані регістри дозволяють легко маніпулювати 16-бітними і 8-бітовими значеннями відповідно. У комп'ютерах 8088 і 80286 є тільки 8-бітові і 16-бітові регістри. 32-бітові регістри з'явилися в системі 80386 разом з приставкою Е (Extended — розширений). Наступні три регістри також є регістрами загального призначення, але з більшим ступенем спеціалізації. Регістри ESI і EDI призначені для зберігання покажчиків, особливо для команд маніпулювання ланцюжками, де ESI вказує на вхідний ланцюжок, а EDI — на вихідний ланцюжок. Регістр EВР теж призначений для зберігання покажчиків. Особливо він використовується для вказівки на основу поточного фрейму локальних змінних, як і регістр LV в машині IJVM. Такий регістр звичайно називають покажчиком фрейму. Нарешті, регістр ESP — це вказівник стека. Наступна група регістрів від CS до GS - сегментні регістри. Це електронні трилобіти-атавізми, що залишилися від процесора 8088, який звертався до 220 байтів пам'яті, використовуючи 16-бітові адреси. Досить сказати, що коли Pentium II встановлений на використання єдиного лінійного Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |