Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архітектура / Lekciyi / 011_processory.doc
Скачиваний:
32
Добавлен:
14.04.2015
Размер:
617.47 Кб
Скачать

Реальний режим

У первинному IBM PC використовувався процесор 8088, який міг виконувати 16-розрядні команди, застосовуючи 16-розрядні внутрішні регістри, і адресувати тільки 1 Мбайт пам'яті, використовуючи 20 розрядів для адреси. Все програмне забезпечення PC спочатку було призначене для цього процесора; воно було розроблене на основі 16-розрядної системи команд і моделі пам'яті об'ємом 1 Мбайт. Наприклад, DOS, все програмне забезпечення DOS, Windows від 1.x до 3.x і всі програми для Windows від 1.x до 3.x написані з розрахунку на 16-розрядні команди. Ці 16-розрядні операційні системи і програми були розроблені для виконання на первинному процесорі 8088.

Пізніші процесори, наприклад 286, могли також виконувати ті ж самі 16-розрядні команди, що і первинний 8088, але набагато швидше. Іншими словами, процесор 286 був повністю сумісний з первинним 8088 і міг виконувати всі 16-розрядні програми точно так, як і 8088, але, звичайно ж, значно швидше. Шістнадцятирозрядний режим, в якому виконувалися команди процесорів 8088 і 286, був названий реальним режимом. Всі програми, що виконуються в реальному режимі, повинні використовувати тільки 16-розрядні команди, 20-розрядні адреси і підтримуватися архітектурою пам'яті, розрахованою на місткість до 1 Мбайт. Для програмного забезпечення цього типу звичайно використовується однозадачний режим, тобто одночасно може виконуватися тільки одна програма. Немає ніякого вбудованого захисту для запобігання перезапису елементів пам'яті однієї програми або навіть операційної системи іншою програмою; це означає, що при виконанні декількох програм цілком можуть бути зіпсовані дані або код однієї з них, а це може привести всю систему до краху (або останову).

Захищений режим

Першим 32-розрядним процесором, призначеним для PC, був 386-й. Цей чіп міг виконувати абсолютно нову 32-розрядну систему команд. Щоб повністю використовувати перевагу 32-розрядної системи команд, були необхідні 32-розрядна операційна система і 32-розрядні програми. Цей новий режим називався захищеним, оскільки програми, що виконуються в ньому, захищені від перезапису своїх областей пам'яті іншими програмами. Такий захист робить систему надійнішою, оскільки жодна програма з помилками вже не зможе так легко пошкодити інші програми або операційну систему. Крім того, програму, "потерпілу крах", можна досить просто завершити без збитку для всієї системи.

Знаючи, що розробка нових операційних систем і програм, що використовують переваги 32-розрядного захищеного режиму, займе якийсь час, Intel передбачила в процесорі 386 назад сумісний реальний режим. Завдяки цьому процесор 386 міг виконувати немодифіковані 16-розрядні програми. Причому вони виконувалися набагато швидше, ніж на будь-якому процесорі попереднього покоління. Для більшості користувачів цього було досить; їм не потрібне все 32-розрядне програмне забезпечення — достатньо було того, щоб 16-розрядні програми, що були у них, працювали швидше. На жаль, через це процесор ніколи не працював в 32-розрядному захищеному режимі, і всі можливості такого режиму не використовувалися.

Коли високопродуктивний процесор, подібний Pentium Ш, працює в реальному режимі, він нагадує 'Turbo 8088". Слово 'Turbo" означає, що процесор має перевагу в швидкодії при виконанні 16-розрядних програм; хоча він може виконувати тільки 16-розрядні команди і звертатися до пам'яті в межах все того ж 1 Мбайт, передбаченого картою пам'яті процесора 8088. Тому, навіть якщо у вас система з Pentium Ш і оперативною пам'яттю місткістю 128 Мбайт, при роботі з Windows 3.x або DOS насправді використовується тільки перший мегабайт пам'яті, а інші 127 практично не застосовуються!

В зв'язку з цим з'явилася необхідність в нових операційних системах і програмах, які б використовували всі переваги сучасних процесорів. Проте деякі користувачі спочатку чинили опір усіляким спробам переходу до 32-розрядного середовища. Співтовариство користувачів виявилося вельми стійким в своїх прив’язаностей і не бажало змінювати звичок.

Через опір користувачів 32-розрядні операційні системи, такі, як Unix і її різновиди (наприклад, Linux), OS/2 і навіть Windows NT\2000, розповсюджувалися на ринку персональних комп'ютерів достатньо повільно. Зі всіх перерахованих систем тільки Windows 2000 стала по-справжньому широко поширеним програмним продуктом, та і то завдяки величезній популярності ОС Windows 95 і що послідували за нею Windows 98 і Me. Останньою повністю 16-розрядною операційною системою була Windows серії 3.x. Хоча насправді вона працювала як надбудова DOS.

У Microsoft зрозуміли, наскільки вперті користувачі комп'ютерів, і розробили Windows 95 як проміжну систему для переходу в 32-розрядний світ. Windows 95 — в основному 32-розрядна операційна система, але в ній можна виконувати старі 16-розрядні програми. Windows 95 побачила світло в серпні 1995 року, тобто через 10 років після появи першого 32-розрядного процесора для PC. Потрібно "всього лише" 10 років, щоб впровадити програмне забезпечення, яке може повністю використовувати процесори!

Процесор Itanium, що з'явився не так давно, став первістком миру 64-розрядних можливостей. Цей процесор також сумісний зі всім існуючим 32-розрядним програмним забезпеченням. Але для того, щоб скористатися властивостями процесора в повному об'ємі, потрібно повноцінні 64-розрядні операційні системи і програми. Компанія Microsoft вже випустила 64-розрядні версії операційної системи Windows XP, тоді як різними компаніями створюються 64-розрядні програми для серверів і робочих станцій.

Віртуальний реальний режим

Для зворотної сумісності 32-розрядна система Windows 9x використовує третій режим в процесора — віртуальний реальний режим. Він, по суті, є режимом виконання 16-розрядного середовища (реальний режим), яке реалізоване усередині 32-розрядного захищеного режиму (тобто віртуально, а не реально). Виконуючи команди у вікні підказки DOS усередині Windows 95/98, ви створюєте віртуальний сеанс реального режиму. Оскільки захищений режим є достовірно багатозадачним, фактично можна виконувати декілька сеансів реального режиму, причому в кожному сеансі власне програмне забезпечення працює на віртуальному комп'ютері. І всі ці програми можуть працювати одночасно, навіть під час виконання інших 32-розрядних програм.

Зверніть увагу, що будь-яка програма, що виконується у віртуальному вікні реального режиму, може звертатися тільки до пам'яті об'ємом до 1 Мбайт, причому для кожної такої програми це буде перший і єдиний мегабайт пам'яті в системі. Іншими словами, якщо ви виконуєте програму DOS у віртуальному реальному вікні, йому буде доступна пам'ять тільки об'ємом до 640 Кбайт. Так відбувається тому, що є тільки 1 Мбайт загальної оперативної пам'яті в 16-розрядному середовищі, а верхні 384 Кбайт зарезервовані для системи. Віртуальне реальне вікно повністю імітує середовище процесора 8088, і, якщо не враховувати швидкодію, програмне забезпечення виконуватиметься так, як воно виконувалося першим PC в реальному режимі. Кожна віртуальна машина одержує власні 1 Мбайт адресного простору і власний екземпляр реальних апаратних підпрограм управління апаратурою (базову систему вводу-виводу), причому при цьому емулюються всі регістри і можливості реального режиму.

Віртуальний реальний режим використовується при виконанні програм у вікні DOS, а також при виконанні 16-розрядних програм, написаних для DOS або Windows 3.x, в Windows 95/98. При запуску програми DOS операційна система Windows 9x створює віртуальну машину DOS, на якій ця програма може виконуватися.

Важливо відзначити, що всі процесори Intel (а також Intel-сумісні AMD і Cyrix) при включенні живлення починають працювати в реальному режимі. При завантаженні 32-розрядна операційна система автоматично перемикає процесор в 32-розрядний режим і управляє ним в цьому режимі.

Деякі програми DOS і Windows 3.x поводяться непередбаченим чином, тобто роблять речі, які не підтримуються навіть у віртуальному реальному режимі. Діагностичне програмне забезпечення — прекрасний тому приклад: воно коректно не працюватиме у вікні реального режиму (віртуального реального) під управлінням Windows 95/98 або NT. Щоб на Pentium II запустити таке програмне забезпечення в первинному спрощеному режимі, необхідно перервати процес початкового завантаження системи і просто завантажити DOS. Це можна виконати в Windows 95/98, натискаючи клавішу <F8>, коли на екрані з'являється підказка Starting Windows.... Потім, коли з'явиться завантажувальне меню, в ньому потрібно вибрати команду завантаження простої 16-розрядної операційної системи реального режиму DOS. Краще всього вибрати Safe mode command prompt, якщо ви збираєтеся використовувати діагностичні процедури (звичайно не виконувані в захищеному режимі), які повинні бути запущені з мінімумом драйверів і іншого програмного забезпечення.

Операційна система Windows Me створювалася, як ви знаєте, на основі Windows 98. Намагаючись відучити користувачів від 16-розрядного режиму роботи, Microsoft видалила опцію завантажувального меню (Startup). Операційні системи Windows NT і 2000 також позбавлені можливості перервати завантаження так само. Для запуску комп'ютера в режимі DOS доведеться створити завантажувальний диск, який і буде потім використовуватися для завантаження системи в реальному режимі. Як правило, цей режим потрібен для певного технічного обслуговування, зокрема для виконання апаратної діагностики або безпосереднього редагування секторів диска.

Хоча реальний режим використовується DOS і "стандартними" програмами DOS, є спеціальні програми, які "розширюють" DOS і дозволяють доступ до додаткової пам'яті XMS (понад 1 Мбайт). Вони іноді називаються розширювачами DOS і звичайно включаються як частина програмного забезпечення DOS або Windows 3.x, в якому використовуються. Протокол, що описує, як виконувати DOS в захищеному режимі, називається DPMI (DOS protected mode interface — інтерфейс захищеного режиму DOS). Він використовувався в Windows 3.x для звернення до додаткової пам'яті XMS при роботі програм для Windows 3.x. Цей протокол дозволяв 16-розрядним програмам використовувати пам'ять, що перевищує 1 Мбайт. Розширювачі DOS особливо часто застосовуються в іграх DOS; саме завдяки ним ігрова програма може використовувати набагато більший об'єм пам'яті, ніж стандартний (1 Мбайт), до якого може адресуватися більшість програм, що працюють в реальному режимі. Ці розширювачі DOS перемикають процесор в реальний режим і назад, а у разі запуску під управлінням Windows застосовують DPMI, вбудований в Windows, і тим самим дозволяють іншим програмам спільно використовувати частину додаткової пам'яті XMS системи.

Є ще одне виключення — перші 64 Кбайт додаткової пам'яті в реальному режимі доступні програмам. Це результат помилки в першому комп'ютері IBM AT, пов'язаної з 21-й лінією адреси пам'яті (А20, оскільки АТ — перший рядок адреси). Управляючи сигналом на лінії А20, програмне забезпечення реального режиму може діставати доступ до перших 64 Кбайт додаткової пам'яті — це перші 64 Кбайт пам'яті, наступні за першим мегабайтом. Ця область пам'яті називається областю верхніх адрес пам'яті (high memory area НМА).

Технологія ММХ

Залежно від контексту, ММХ може означати multi-media extensions (мультимедійні розширення) або matrix math extensions (матричні математичні розширення). Технологія ММХ використовувалася в старших моделях процесорів Pentium п'ятого покоління як розширення, завдяки якому швидшає компресія/декомпресія відеоданих, маніпулювання зображенням, шифрування і виконання операцій вводу-виводу — майже всі операції, використовувані в багатьох сучасних програмах.

У архітектурі процесорів ММХ є два основні удосконалення. Перше, фундаментальне, полягає у тому, що всі мікросхеми ММХ мають більший внутрішній вбудований кеш, ніж їх побратими, що не використовують цю технологію. Це підвищує ефективність виконання кожної програми і всього програмного забезпечення незалежно від того, чи використовує воно фактично команди ММХ.

Інше удосконалення ММХ полягає в розширенні набору команд процесора 57 новими командами, а також у введенні нової можливості виконання команд, що називається одиночний потік команд — множинний потік даних (Single Instruction — Multiple Data, SIMD).

У сучасних мультимедійних і мережевих програмах часто використовуються цикли; хоча вони займають близько 10% (або навіть менше) об'єму повного коду програми, на їх виконання може піти до 90% загального часу. SIMD дозволяє одній команді здійснювати одну і ту ж операцію над декількома даними, подібно тому як викладач, читаючи лекцію, звертається до всієї аудиторії, а не до кожного студента окремо. Технологія SIMD дозволяє прискорити виконання циклів при обробці графічних, анімаційних, відео- і аудіофайлів; інакше ці цикли віднімали б час у процесора.

Intel також додала 57 нових команд, спеціально розроблених для ефективнішої обробки звукових, графічних і відеоданих. Ці команди призначені для виконання з високим ступенем паралелізму послідовностей, які часто зустрічаються при роботі мультимедійних програм. Високий ступінь паралелізму в даному випадку означає, що одні і ті ж алгоритми застосовуються до багатьох даних, наприклад до даних в різних точках при зміні графічного зображення.

Такі компанії, як AMD і Cyrix, ліцензіювали у Intel технологію ММХ і реалізували її у власних процесорах.

Інструкції SSE

У лютому 1999 року Intel представила процесор Pentium Ш, що містить оновлення технології ММХ, що одержала назву SSE (Streaming SIMD Extensions — потокові розширення SIMD). До цього моменту інструкції SSE носили ім'я Katmai New Instructions (KNI), оскільки спочатку вони були включені в процесор Pentium Ш з кодовим ім'ям Katmai. Процесори Celeron 533А і вище, створені на основі ядра Pentium III, теж підтримують інструкції SSE. Раніші версії процесора Pentium II, рівно як Celeron 533 і нижче (створені на основі ядра Pentium II), SSE не підтримують.

Інструкції SSE містять 70 нових команд для роботи з графікою і звуком на додаток до існуючих команд ММХ. Фактично цей набір інструкцій окрім назви KNI мав ще і другу назву — ММХ-2. Інструкції SSE дозволяють виконувати операції з плаваючою комою, реалізовані в окремому модулі процесора. У технологіях ММХ для цих цілей використовувався стандартний пристрій з плаваючою комою.

Інструкції SSE2, що містять в собі 144 додаткові команди SIMD, були представлені в листопаді 2000 року разом з процесором Pentium 4. У SSE2 були включені всі інструкції попередніх наборів ММХ і SSE.

Потокові розширення SIMD (SSE) містять цілий ряд нових команд для виконання операцій з плаваючою комою і цілими числами, а також команди управління кеш-пам’яттю. Нові технології SSE дозволяють ефективніше працювати з тривимірною графікою, потоками аудіо- і відеоданих (DVD-відтворення), а також додатками розпізнавання мови. В цілому SSE забезпечує наступні переваги:

  • Вищу роздільну здатність /якість при перегляді і обробці графічних зображень;

  • поліпшена якість відтворення звукових і відеофайлів у форматі MPEG2, а також одночасне кодування і декодування формату MPEG2 в мультімедій них програмах;

  • зменшення завантаження процесора і підвищення точності/швидкості реагування при виконанні програмного забезпечення для розпізнавання мови.

Інструкції SSE і SSE2 особливо ефективні при декодуванні файлів формату MPEG2, який є стандартом стиснення звукових і відеоданих, використовуваним в DVD-дисках. Отже, SSE-оснащені процесори дозволяють досягти максимальної швидкості декодування MPEG2 без використовування додаткових апаратних засобів (наприклад, платня декодера MPEG2). Крім того, процесори, що містять набір інструкцій SSE, значно перевершують попередні версії процесорів при розпізнаванні мови.

Однією з основних переваг SSE по відношенню до ММХ є підтримка операцій SIMD з плаваючою комою, що дуже важливе при обробці тривимірних графічних зображень. Технологія SIMD, як і ММХ, дозволяє виконувати відразу декілька операцій при отриманні процесором однієї команди. Зокрема, SSE підтримує виконання до чотирьох операцій з плаваючою комою за цикл; одна інструкція може одночасно обробляти чотири блоки даних. Для виконання операцій з плаваючою комою інструкції SSE можуть використовуватися разом з командами ММХ без помітного зниження швидкодії. SSE також підтримує попереджуючу вибірку даних (prefetching), яка є механізмом попереднього прочитування даних з кеш-пам'яті.

Зверніть увагу, що якнайкращий результат використовування нових інструкцій процесора забезпечується тільки при їх підтримці на рівні використовуваних програм. На сьогоднішній день більшість компаній, що займаються розробкою програмного забезпечення, модифікувала програми, пов'язані з обробкою графіки і звуку, що дозволило більш повно використовувати можливості SSE. Наприклад, графічний додаток Adobe Photoshop підтримує інструкції SSE, що значно підвищує ефективність використовування SSE-оснащених процесорів. Підтримка інструкцій SSE вбудована в DirectX 6.1 і в самі останні відео- і аудіодрайвери, що поставляються з операційними системами Windows 98 Second Edition, Windows Me, Windows NT 4.0 (з пакетом оновлення 5 або пізнішим) і Windows 2000.

Інструкції SSE є розширенням технологій ММХ, а SSE2 — розширенням інструкцій SSE. Таким чином, процесори, що підтримують SSE2, підтримують також інструкції SSE, а процесори, що підтримують інструкції SSE, у свою чергу, підтримують оригінальні команди ММХ. Це означає, що стандартні ММХ-програми можуть виконуватися практично на будь-яких системах.

Соседние файлы в папке Lekciyi