АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Мал. 8.2 - Розміщені слова з 8 байтів в пам'яті: вирівняне (а); невирівняне (б)

Проте вимога вирівнювання адрес іноді викликає деякі проблеми. В процесорі Pentium II програми можуть звертатися до слів, починаючи з будь-якої адреси, — ця якість сходить до моделі 8088 з шиною даних завширшки в 1 байт, в якій не було такої вимоги, щоб комірки розташовувалися в 8-байтних межах. Якщо програма в процесорі Pentium II прочитує 4-байтне слово з адреси 7, апаратне забезпечення повинне зробити одне звернення до пам'яті, щоб викликати байти з 0-го по 7-й, і друге звернення до пам'яті, щоб викликати байти з 8-го по 15-й. Потім центральний процесор повинен витягнути необхідні 4 байти з 16 байтів, лічених з пам'яті, і упорядкувати їх в потрібному порядку, щоб сформувати 4-байтне слово.

Можливість прочитувати слова з довільними адресами вимагає ускладнення мікросхеми, яка після цього стає більшою за розміром і дорожча. Розробники були б раді позбавитися такої мікросхеми і просто вимагати, щоб всі програми зверталися до слів пам'яті, а не до байтів. Проте на питання інженерів: «Кому потрібне виконання старих програм для машини 8088, які неправильно звертаються до пам'яті?» послідує відповідь продавців: «Нашим покупцям».

Більшість машин має єдиний лінійний адресний простір, який тягнеться від адреси 0 до якогось максимуму, переважно 232 байтів або 264 байтів. В деяких машинах містяться окремі адресні простори для команд і для даних, так що при виклику команди з адресою 8 і виклику даних з адресою 8 відбувається звернення до різних адресних просторів. Така система набагато складніше, ніж єдиний адресний простір, та зате вона має дві переваги. По-перше, з'являється можливість мати 232 байтів для програми і додаткові 232 байтів для даних, використовуючи тільки 32-бітні адреси. По-друге, оскільки запис завжди автоматично відбувається тільки в простір даних, випадковий перезапис програми стає неможливим, і отже, усувається одне з джерел програмних збоїв.

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



Ще один аспект моделі пам'яті — семантика пам'яті. Природно чекати, що команда LOAD, яка зустрічається після команди STORE і яка звертається до тої ж адреси, поверне тільки що збережене значення. Проте, як ми бачили в розділі 4, в багатьох машинах мікрокоманди переупорядковуються.

Яку архітектуру команд можна вважати хорошою? Існує два основні чинники. По-перше, хороша архітектура повинна визначати набір команд, які можна ефективно реалізувати в сучасній і майбутній техніці, що приводить до рентабельних розробок на декілька поколінь. Поганий проект реалізувати складніше. При погано розробленій архітектурі команд може бути потрібна більша кількість вентилів для процесора і більший об'єм пам'яті для виконання програм. Крім того, машина може працювати повільніше, оскільки така архітектура команд погіршує можливості перекриття операцій, тому для досягнення більш високої продуктивності тут буде потрібний складніший проект. Розробка, в якій використовуються особливості конкретної техніки, може спричинити за собою виробництво цілого покоління комп'ютерів, і ці комп'ютери зможе випередити тільки більш продвинута архітектура команд.

По-друге, хороша архітектура команд повинна забезпечувати ясну мету для відтрансльованої програми. Регулярність і повнота варіантів — важливі риси, які не завжди властиві архітектури команд. Ці якості важливі для компілятора, якому важко зробити кращий вибір з декількох можливих, особливо коли деякі очевидні на перший погляд варіанти не дозволені архітектурою команд. Якщо говорити коротко, оскільки рівень команд є проміжною ланкою між апаратним і програмним забезпеченням, він повинен бути зручний і для розробників апаратного забезпечення, і для складачів програмного забезпечення.

 


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 |


Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.)