Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
shpory.docx
Скачиваний:
5
Добавлен:
17.08.2019
Размер:
476.75 Кб
Скачать
  1. Що таке сегментування пам'яті? Як сегментування пам'яті організовано в процесорі Intel 80386?

В защищенном режиме работы микропроцессоров x86 обеспечивается лучшая защита операционной системы от несанкционированного доступа программ пользователя. Это происходит путем усложнения формирования линейного адреса в микропроцессорах i80386 и выше. Уже в микропроцессоре i80386 сняты ограничения на размер сегмента. Он может иметь значение от 1 байта до 4 Гбайт.

Вся архитектура x86 была расширена до 32 бит — все регистры (за исключением сегментных) стали 32-битными, получив в названии префикс «E» (EAX, EBX, EIP, EFLAGS и т. п.), с сохранением полного набора команд для работы с ними.

32-битной стала и адресация в защищенном режиме (с возможностью создания 16-битных сегментов, для совместимости с 80286). Она позволила впервые со времени появления 8086 забыть о сегментации, а точнее, ограничении размера сегмента 64 килобайтами (ограничение 16-битного адреса).

32-битный адрес позволил использовать одну простую плоскую модель (англ. flat) — 32-битный вариант крохотной модели, в которой все сегменты задачи находятся в одном адресном пространстве. Плоская модель обеспечивает размер такого «общего» сегмента до почти 4 гигабайт.

Плоская модель имеет и недостатки:

  1. в ней появляются проблемы перемещаемости машинного кода, которые ранее легко обходились сегментацией, обеспечение перемещаемости легло на плечи операционных систем.

  2. плоская модель практически сводит на нет управление памятью в защищенном режиме (ограничение доступа и поддержка виртуальной памяти), которое до i386 могло выполняться только на уровне сегментации. Только появление новой модели управления памятью — страничного преобразования — обеспечило плоской модели её сегодняшнюю популярность.

Страничное преобразование

В i386 был введён новый механизм управления памятью — адресное пространство, к которому обращается процессор за данными и кодом, в котором располагаются сегменты (названное линейным адресным пространством) может не соответствовать реальной физической памяти. Физическая память (включая буферы внешних устройств, например видеобуфер) может быть отображена в линейное адресное пространство произвольным образом — каждая страница (размером 4 килобайта) линейного пространства может быть переадресована на любую страницу физической памяти через каталог страниц, располагающийся в оперативной памяти .

Через страничное преобразование i386 может адресовать до 4 Гбайт физической памяти и до 64 Тбайт виртуальной памяти.

  1. Дайте детальну характеристику регістрам процесора.

Р егистры (8086):

(AH и AL-это соответственно половинки AX-регистра, BH и BL- BX регистра, где H-старший регистр, L –младший…..)

Регистр-аккумулятор AX используется для хранения промежуточных данных и результатов.

При базовых типах адресации регистр BX содержит адрес области памяти либо адрес, который суммируется для получения нового значения со смещением.

Регистр-счетчик CX предназначен для управления числом итераций в цикле

Регистр данных DX используется как вторичный аккумулятор для хранения промежуточных данных и результатов.

Индексный регистр-источник SI применяется в качестве указателя адреса байта или слова.

Индексный регистр-источник DI используется как указатель назначения для адреса байта или слова в строковых командах.

Регистр-указатель стека SP применяется для работы с данными в стековых структурах. Его содержимое указывает адрес элемента на вершине стека.

Регистр-указатель базы BP используется как дополнительный указатель для работы с данными в стековых структурах. В режиме базово-индексной адресации содержимое регистра BP может суммироваться с содержимым регистров SI или DI.

Регистры сегментов используются для идентификации текущего сегмента адресного пространства:

Регистр сегмента команд CS указывает сегмент, содержащий адрес текущей выполняемой программы.

Регистр сегмента данных DS содержит начало зоны адресов, которая в общем случае включает программно изменяемые таблицы и константы.

Регистр дополнительного сегмента ES указывает начало области памяти, которая обычно используется для запоминания промежуточных данных.

Регистр сегмента стека SS содержит начальный адрес стековой структуры в памяти ЭВМ.

Указатель команд IP «следит» за ходом выполнения программы, указывая в каждый момент относительный адрес команды, следующей за исполняемой.

Регистр флагов FLAGS содержит информацию о текущем состоянии микропроцессора. Имеет 6 однобитовых флагов состояния, которые индицируют результаты выполнения арифметических и логических операций и 3 бита управления состоянием процессора

В 32-х, 64-х разрядных процессорах длина регистров увеличивается

Так например как регистры данных уже используются не AX,BX,BP(16 bit), a EAX, EBP,ECX(32 bit), (RAX,RBP,RCX) (64bit), где EAX яв. половинкой RAX, AX младшей половиной EAX

Регистр процессора — сверхбыстрая оперативная память (СОЗУ) внутри процессора, предназначенная прежде всего для хранения промежуточных результатов вычисления. Большая часть регистров используется самим процессором и недоступна программисту.

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

У загальному випадку система команд процесора включає в себе наступні чотири основні групи команд:      * команди пересилання даних;      * арифметичні команди;      * логічні команди;      * команди переходів.

Команди пересилання даних не вимагають виконання ніяких операцій над оперантами. Операнти просто пересилаються (точніше, копіюються) з джерела (Source) в приймач (Destination). Джерелом і приймачем можуть бути внутрішні регістри процесора, комірки пам'яті або пристрою вводу / виводу. АЛП у даному випадку не використовується.

Арифметичні команди виконують операції додавання, віднімання, множення, ділення, збільшення на одиницю (инкрементирования), зменшення на одиницю (декрементірованія) і т.д. Цим командам потрібно один або два вхідних операнда. Формують команди один вихідний операнд.

Логічні команди проводять над операндами логічні операції, наприклад, логічне І, логічне АБО, виключає АБО, інверсію, різноманітні зрушення (вправо, вліво, арифметичний зсув, циклічний зсув). Цим командам, як і арифметичним, потрібно один або два вхідних операнда, і формують вони один вихідний операнд. Нарешті, команди переходів призначені для зміни звичайного порядку послідовного виконання команд. З їх допомогою організуються переходи на підпрограми і повернення з них, різноманітні цикли, розгалуження програм, пропуски фрагментів програм і т.д. Команди переходів завжди міняють вміст лічильника команд. Переходи можуть бути умовними і безумовними. Саме ці команди дозволяють будувати складні алгоритми обробки інформації.

У різних процесорів системи команд суттєво різняться, але в основі своїй вони дуже схожі. Кількість команд у процесорів також різна. Наприклад, у процесора МС68000 всього 61 команда, а у процесора 8086 - 133 команди. У сучасних потужних процесорів кількість команд досягає декількох сотень. У той же час існують процесори з скороченим набором команд (так звані RISC-процесори), в яких за рахунок максимального скорочення кількості команд досягається збільшення ефективності і швидкості їх виконання. Тепер розглянемо докладніше команди пересилання даних.

Команди пересилання даних займають дуже важливе місце в системі команд будь-якого процесора. Вони виконують такі найважливіші функції:     * Завантаження (запис) вмісту у внутрішні регістри процесора;     * Збереження в пам'яті вмісту внутрішніх регістрів процесора;     * Копіювання вмісту з однієї області пам'яті в іншу;     * Запис у пристрої введення / виводу і читання з пристроїв введення / виводу.

У деяких процесорах (наприклад, Т-11) всі ці функції виконуються однією єдиною командою MOV (для байтових пересилань - MOVB) але з різними методами адресації операндів.

В інших процесорах крім команди MOV є ще кілька команд для виконання перерахованих функцій. Наприклад, для завантаження регістрів можуть використовуватися команди завантаження, причому для різних регістрів - різні команди (їх позначення зазвичай будуються з використанням слова LOAD - завантаження). Часто виділяються спеціальні команди для збереження в стеку і для вилучення зі стека (PUSH - зберегти в стеці, POP - витягти з стека). Ці команди виконують пересилку з автоінкрементною і з автодекрементною адресацією (навіть якщо ці режими адресації не передбачені в процесорі в явному вигляді).

Іноді в систему команд вводиться спеціальна команда MOVS для рядкової (або цепочечнойї) пересилки даних (наприклад, в процесорі 8086). Ця команда пересилає не одне слово або байт, а задану кількість слів або байтів (MOVSB​​), тобто ініціює не один цикл обміну по магістралі, а декілька. При цьому адреса пам'яті, з яким відбувається взаємодія, збільшується на 1 або на 2 після кожного звернення або ж зменшується на 1 або на 2 після кожного використання. Тобто в неявному вигляді застосовується автоінкрементні або автодекрементная адресація.

У деяких процесорах (наприклад, в процесорі 8086) спеціально виділяються функції обміну з пристроями вводу / виводу. Команда IN використовується для введення (читання) інформації з пристрою вводу / виводу, а команда OUT використовується для виведення (запису) у пристрій вводу / виводу. Обмін інформацією в цьому випадку проводиться між регістром-акумулятором та пристроєм вводу / виводу. У більш просунутих процесорах цього ж сімейства (починаючи з процесора 80286) додані команди рядкового (цепочечной) вводу (команда INS) і рядкового виведення (команда OUTS). Ці команди дозволяють пересилати цілий масив (рядок) даних з пам'яті в пристрій вводу / виводу (OUTS) або з пристрою вводу / виводу в пам'ять (INS). Адреса пам'яті після кожного звернення збільшується або зменшується (як і у випадку з командою MOVS). Також до команд пересилки даних відносяться команди обміну інформацією (їх позначення будується на основі слова Exchange). Може бути передбачено обмін інформацією між внутрішніми регістрами, між двома половинами одного регістра (SWAP) або між регістром і осередком пам'яті.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]