Способи адресації пам'яті: відмінності між версіями

[неперевірена версія][неперевірена версія]
Вилучено вміст Додано вміст
Dmitry Kazany (обговорення | внесок)
мНемає опису редагування
Dmitry Kazany (обговорення | внесок)
Немає опису редагування
Рядок 1:
'''СПОСОБИ АДРЕСАЦІЇ ПАМ'ЯТІ''' – комплекс стандартизованих для певної [[архітектура системи команд|архітектури системи команд]] [[центральний процесор|центрального процесора]] способів для визначення (обчислення) місця розташування операндів в пам’яті ЕОМ.
 
Для того, щоби отримати можливість використовувати дані з пам'яті в обчислювальних операціях, необхідно однозначно вказати процесору їхнє місцезнаходження. В [[Архітектура фон Ноймана|фон-нойманівських машинах]] кожна комірка пам'яті має власну адресу й проблема визначення місця розташування потрібних даних зводиться до визначення цієї адреси.
В перших ЕОМ адреса або номер комірки необхідно було вказувати явно, і такий метод адресації виявлявся дуже незручним. Труднощі в алгоритмізації різних задач, де була потрібна автоматизація процесу визначення адреси, стали причиною введення згодом широкого спектру методів адресації. Кожний з них фактично пропонує певну формулу для обчислення ефективної (тобто фактичної) адреси, зручну в тій або іншій ситуації.
Пік винахідництва в цій області припав на час панування [[CISC]]-архітектур «регістр-пам'ять», які дозволяли безпосередньо використовувати в якості одного з операндів комірку пам'яті. [[RISC]]-архітектури типу «регістр-регістр», в яких доступ до пам'яті регламентується значно більш жорстко, мають у порівнянні з CISC, дуже скромний набір методів адресації, і у найбільш радикальних представниках цієї ідеології зведений до єдиного.
 
==СІSC-модель (архітектури "регістр-пам'ять")==
Рядок 9:
Як приклад [[CISC]]-моделі адресації пам'яті, розглянемо різноманітну палітру методів популярної колись архітектури [[VAX-11]] і розглянемо її на прикладі [[архітектура системи команд|двохоперандной команди]] додавання ADD a,b (a:=a+b), де кожний [[операнд]] може бути як регістром, так і безпосередньо знаходитись в пам'яті. В таблиці зведені основні методи адресації VAX (загальна кількість їх перевищує за два десятки, але інші є похідними від наведених) за умови, що операнд а завжди перебуває в регістрі R1, а ефективна адреса операнда b обчислюється залежно від зазначеного в команді методу адресації.
 
[[Зображення:VAXoperation.PNG|thumb|350px|right|Формат двохоперандної команди архітектури VAX. Поля "режим" визначають режим адресації, поля "регістр" - номери задіяних регістрів]]
Інформація про операнд міститься в його специфікаторі, формат якого варіюється, але для більшості методів адресації складається з полів «регістр» і «режим». Тобто, режим адресації задається полем «режим», а номер задіяного регістра втримується в поле «регістр». В режимі адресації по зсуву, в команді після полів режиму й регістра, з’являється додаткове поле із зазначенням величини самого зсуву. В режимі масштабування також застосовується розширення команди й у додатковому полі знаходиться специфікатор для третього задіяного регістра.
Реалізація абсолютної та безпосередньої адресації в машинах [[PDP]] і VAX досить цікава й використовує неявно, як залучений регістр, регістр лічильника команди (PC). Абсолютна адресація реалізується через непряму регістрову з автоінкрементом, а безпосередня – через непряму з автоінкрементом та дописуванням зсуву або константи безпосередньо після команди. При цьому регістр PC, у момент виконання команди завжди вказує на наступну після неї комірку пам'яті, яка містить адресу зсуву або константи, й обчислення абсолютної адреси відбудеться коректно. Після цього необхідно лише збільшити PC до адреси наступної команди. Це робиться шляхом додання до поточного значення лічильника одиниці (автоінкремента).
Рядок 83 ⟶ 84:
[[RISC]]-архітектури, які ми маємо на увазі, говорячи про машини типу «регістр-регістр» (хоча, якщо точніше, [[RISC]] є всього лише підмножиною цього класу), власне, використовують дуже обмежений набір методів адресації, які несуть інше функціональне навантаження й не є складовою частиною обчислювальних операцій.
 
[[Зображення:AlphaInstr.PNG|thumb|right|330px|Формати команд архітектури DEC Alpha]]
Під ефективною адресою тепер будемо розуміти адресу комірки пам'яті, призначеної для завантаження в регістр спеціальною командою LD (load) або збереження результату спеціальною командою ST (store).
 
Рядок 173 ⟶ 175:
|}
 
{{TODO}}
[[Category:Архітектура ЕОМ]]