Лекции / lections-rtf / lect04
.rtf-
Архитектура компьютера
Архитектура ЭВМ – это абстрактное представление ЭВМ, которое отражает ее структурную, схемотехническую и логическую организацию. Понятие архитектуры ЭВМ является комплексным и включает в себя следующее:
-
структурную схему ЭВМ;
-
средства и способы доступа к элементам структурной схемы;
-
набор и доступность регистров;
-
организацию и способы адресации памяти;
-
способы представления и форматы данных;
-
организацию и разрядность интерфейсов;
-
набор машинных команд;
-
форматы машинных команд;
-
обработку нештатных ситуаций (прерываний).
Программы могут взаимодействовать с устройствами разными способами:
-
используя вызовы функций операционной системы (DOS, API);
-
используя вызовы функций базовой системы ввода/вывода (BIOS);
-
непосредственно взаимодействуя с регистрами периферийных устройств или контроллеров интерфейсов.
Обилие вариантов взаимодействия связано с необходимостью совместимости с младшими моделями компьютера. Любой PC-совместимый компьютер имеет следующие характерные черты:
-
процессор, совместимый с семейством x86 фирмы Intel;
-
единую систему распределения пространства адресов памяти;
-
унифицированное распределение адресов пространства ввода/вывода с фиксированным положением обязательных портов;
-
систему аппаратных прерываний;
-
систему прямого доступа к памяти;
-
набор системных устройств и интерфейсов ввода/вывода;
-
унифицированные по конструктиву и интерфейсу шины расширения;
-
базовую систему ввода/вывода (BIOS).
Стандартная архитектура компьютера определяет набор обязательных средств ввода/вывода и средств поддержки периферии – системы аппаратных прерываний (i8259A) и прямого доступа к памяти (i8237A). К обязательным стандартизованным средствам ввода/вывода относятся:
-
трехканальный счетчик (XT – i8253, AT – i8254);
-
интерфейс клавиатуры и управления (XT – i8255, AT – i88042);
-
канал управления звуком;
-
графический адаптер
Рассмотрим сложившуюся архитектуру персонального компьютера.
Рис. 4.1. Структурная схема персонального компьютера.
Любая запущенная программа получает в свое распоряжение определенный набор ресурсов микропроцессора. Эти ресурсы необходимы для выполнения и хранения в памяти команд программы, данных и информации о текущем состоянии программы и микропроцессора. Набор этих ресурсов представляет собой программную модель микропроцессора.
Программную модель микропроцессора составляют:
-
набор регистров общего назначения (32 бита: eax, ax, ah, ala, d, с, b; ebp, bp bp, si, di, sp);
-
набор сегментных регистров (16 бит: cs, ds, ss, es, fs, gs);
-
набор регистров состояния и управления (32 бита: eip, eflags и т.д.);
-
пространство адресуемой памяти (236-1 Pro/II/III,232-1 i486/Pentium);
-
набор регистров устройства вычислений с плавающей точкой (сопроцессора) (80 бит: st(0)..st(7));
-
набор регистров целочисленного MMX-расширения (64 бит: mmx0…mmx7);
-
набор регистров MMX-расширения с плавающей точкой (128 бит: xmm0…xmm7);
-
программный стек.
Рис. 4.2. Основные наборы регистров.
Регистры общего назначения (РОН) используются в программах для хранения операндов логических и арифметических операций; компонентов адреса и указателей на ячейки памяти. Основное применение РОН:
-
eax/ax/ah/al (Accumulator register) – аккумулятор. Применяется для хранения промежуточных данных. В некоторых командах использование этого регистра обязательно;
-
ebx/bx/bh/bl (Base register) – базовый регистр. Применяется для хранения базового адреса объекта;
-
ecx/cx/ch/cl (Count register) – регистр-счетчик. Применяется в командах, производящих повторяющиеся действия;
-
edx/dx/dh/dl (Data register) – регистр данных. Так же как и регистр eax/ax/ah/al он хранит промежуточные данные;
-
esi/si (Source Index register) – индекс источника;
-
edi/di (Destination Index register) – индекс приемника;
-
esp/sp (Stack Pointer register) – регистр указателя стека. Содержит указатель вершины стека в текущем сегменте стека;
-
ebp/bp (Base Pointer register) – регистр указателя базы кадра стека.
В программной модели микропроцессора имеется шесть сегментных регистров. Это обусловлено аппаратной организацией использования оперативной памяти микропроцессорами Intel в виде трех частей, называемых сегментами. Существуют следующие типы сегментов:
-
Сегмент кода. Содержит команды программы, которые микропроцессор загружает в конвейер. Для доступа к сегменту служит регистр cs (code segment register) – сегментный регистр кода.
-
Сегмент данных. Содержит обрабатываемые программой данные. Для доступа к этому сегменту служит регистр ds (data segment register) – сегментный регистр данных, который хранит адрес сегмента данных текущей программы.
-
Сегмент стека. Область памяти, в которую микропроцессор записывает данные по принципу LIFO (last-in-first-out) – последним вошел, первым вышел. Для доступа к этому сегменту служит регистр ss (stack segment register) – сегментный регистр стека, содержащий адрес сегмента стека.
-
Дополнительный сегмент данных. Если программе не достаточно одного сегмента данных, то она имеет возможность использовать еще три дополнительных. Адреса дополнительных сегментов данных должны содержаться в регистрах es, gs, fs.
Регистры состояния и управления содержат информацию о текущем состоянии микропроцессора и команды, которая в данный момент загружена в конвейер:
-
регистр флагов eflags/flags (flag register). Регистр используется побитно, т.е. каждый бит имеет определенное функциональное назначение, который называется флагом;
-
регистр указателя программы eip/ip (instruction pointer register). Этот регистр непосредственно не доступен программисту и содержит смещение следующей подлежащей выполнению команды относительно содержимого сегментного регистра cs в текущем сегменте команд.
Организация памяти
Физическая память компьютера организована как последовательность ячеек – байтов. Каждому байту соответствует свой уникальный адрес, называемый физическим. Диапазон физических адресов зависит от разрядности шины адреса микропроцессора. Для i486 и Pentium он находится в пределах от 0 до 232-1 (4Гб). Для микропроцессоров семейства P6 – от 0 до 236–1 (64Гб). Аппаратно микропроцессор поддерживает две модели использования оперативной памяти:
-
сегментированная модель;
-
страничная модель – надстройка над сегментированной моделью. Основное применение связано с организацией виртуальной памяти, что позволяет операционной системе использовать пространство памяти больше, чем объем физической оперативной памяти,
и может работать в следующих режимах:
-
режим реальных адресов;
-
защищенный режим;
-
режим виртуального i8086;
-
режим системного управления.
Программы никогда не указывают физические адреса памяти, а работают только с логическими адресами. Это верно для всех режимов работы процессора.
Различают три модели логической организации памяти:
-
сегментированная модель памяти реального режима (MS-DOS);
-
сегментированная модель памяти защищенного режима (Windows 9x);
-
сплошная модель памяти защищенного режима (Windows NT).
Модель памяти реального режима
В реальном режиме диапазон изменения адреса от 0 до 1 Мбайт. Эта величина определяется шиной адреса процессора i8086 – 20 линий. А максимальный размер сегмента 64 Кбайт, что связано с 16-разрядной архитектурой этого процессора.
Логический адрес формируется из сегмента и смещения в таком виде: [сегмент: смещение]. Для обращения к конкретному адресу необходимо определить адрес начала сегмента (16-битное значение), поместив его в один из сегментных регистров, а также смещение внутри этого регистра. Смещение определяется в регистрах общего назначения и также является 16-разрядным. Механизм получения физического адреса в реальном режиме представлен на рис. 4.3.
Рис. 4.3. Получение физического адреса в реальном режиме работы процессора.
Схема преобразования адреса реального режима не позволяет адресовать больше 1 Мбайта памяти (рис. 4.4).
Рис. 4.4. Адресация памяти в MS-DOS.
Несмотря на то, что программы используют логические, а не физические адреса, преобразователь адреса реального режима позволяет программам легко сконструировать логический адрес для любого нужного ей физического адреса (рис. 4.5). В этом смысле можно говорить о возможности физической адресации памяти в реальном режиме. Другими словами, для программы, работающей под управлением MS-DOS, доступна вся память, включая системные области BIOS, вектор прерываний и т.д., что сказывается на надежности всей операционной системы.
Рис. 4.5. Преобразование логического адреса в физический.
Недостатки организации памяти реального режима:
-
сегменты бесконтрольно могут размещаться с любого адреса, кратного 16 (т.к. содержимое сегментного регистра аппаратно смещается на 4 разряда). Как следствие, программа может обращаться к любым адресам, в том числе и реально не существующим;
-
сегменты имеют максимальный размер 64 Кбайт;
-
сегменты могут перекрываться друг другом.