Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВМСиС.docx
Скачиваний:
23
Добавлен:
22.04.2019
Размер:
278.98 Кб
Скачать

49.Математический сопроцессор: исключения и их маскирование.

При выполнении команд FPU могут возникать шесть типов особых ситуаций, называемых исключениями. При возникновении исключения соответствующий флаг в регистре SR устанавливается в 1 и, если маска этого исключения в регистре CR не установлена, вызывается обычное прерывание INT 10h (если бит NE в регистре центрального процессора CR0 установлен в 1) или IRQ13 (INT 75h), обработчик которого может прочитать регистр SR, чтобы определить тип исключения (и FIP, и FDP) и команду, которая его вызвала, а затем попытаться исправить ситуацию. Если бит маски наступившего исключения в регистре CR установлен в 1, выполняются следующие действия по умолчанию:

неточный результат: результат округляется в соответствии с битами RC (на самом деле это исключение происходит очень часто. Например: дробь 1/6 не может быть представлена точно десятичным вещественным числом любой точности и округляется). При этом флаг С1 показывает, в какую сторону произошло округление: 0 — вниз, 1 — вверх;

антипереполнение: результат слишком мал, чтобы быть представленным обычным числом, — он преобразуется в денормализованное число;

переполнение: результат преобразуется в бесконечность соответствующего знака;

деление на ноль: результат преобразуется в бесконечность соответствующего знака (учитывается и знак нуля);

денормализованный операнд: вычисление продолжается, как обычно;

недействительная операция: результат определяется из таблицы 12.

Таблица 12. Результаты операций, приводящих к исключениям

Операция

Результат

Ошибка стека

Неопределенность

Операция с неподдерживаемым числом

Неопределенность

Операция с SNAN

QNAN

Сравнение числа с NAN

C0 = C2 = C3 = 1

Сложение бесконечностей с одним знаком или вычитание  — с разным

Неопределенность

Умножение нуля на бесконечность

Неопределенность

Деление бесконечности на бесконечность или 0/0

Неопределенность

Команды FPREM и FPREM1, если делитель  — 0 или делимое — бесконечность

Неопределенность и C2 = 0

Тригонометрическая операция над бесконечностью

Неопределенность и C2 = 0

Корень или логарифм, если x < 0, log(x+1), если x < -1

Неопределенность

FBSTP, если регистр-источник пуст, содержит NAN, бесконечность или превышает 18 десятичных знаков

Десятичная неопределенность

FXCH, если один из операндов пуст

Неопределенность

50. Дисковые накопители. Логическая и физическая геометрия жесткого диска, линейная адресация.

1. Магнитные: гибкие и жесткие

Диски предоставляют прямой доступ к данным в отличии от ленточных накопителей.

Головка диска, содержащая индукционную катушку, двигается над поверхностью диска, опираясь на воздушную подушку. Отметим, что у дискет головка касается поверхности. Когда через головку проходит положительный или отрицательный ток, он намагничивает поверхность под головкой. При этом магнитные частицы намагничиваются направо или налево в зависимости от полярности тока. Когда головка проходит над намагниченной областью, в ней (в головке) возникает положительный или отрицательный ток, что дает возможность считывать записанные ранее биты. Поскольку диск вращается под головкой, поток битов может записываться, а потом считываться Конфигурация дарожки:

Дорожкой называется, круговая последовательность битов записанных на диск за его полный оборот. Каждая дорожка делится на секторы фиксированной длины. Каждый сектор обычно содержит 512 байтов данных. Перед данными располагается преамбула (preamble), которая позволяет головке синхронизироваться перед чтением или записью. После данных идет код с исправлением ошибок (код Хэмминга или чаще код Рида—Соломона, который может исправлять много ошибок, а не только одиночные). Между соседними секторами находится межсекторный интервал. Многие производители указывают размер неформатированного диска (как будто каждая дорожка содержит только данные), но более честно было бы указывать вместимость форматированного диска, когда не учитываются пре-амбулы, коды с исправлением ошибок и межсекторные интервалы. Емкость форматированного диска обычно на 15% меньше емкости неформатированного диска.

Совокупность дорожек, расположенных на одном расстоянии от центра, называется цилиндром.

В настоящее время используется другая стратегия. Цилиндры делятся на зоны (на диске их обычно от 10 до 30). При продвижении от центра диска число секторов на дорожке в каждой зоне возрастает. Это изменение усложняет процедуру хранения информации на дорожке, но зато повышает емкость диска, что считается более важным. Все секторы имеют одинаковый размер

С диском связан так называемый контроллер — микросхема, которая управляет диском. Некоторые контроллеры содержат целый процессор. В задачи контроллера входит получение от программного обеспечения таких команд, как READ, WRITE и FORMAT (то есть запись всех преамбул), управление перемещением рычага, обнаружение и исправление ошибок, преобразование 8-битных байтов, считываемых из памяти, в непрерывный поток битов и наоборот. Некоторые контроллеры производят буферизацию совокупности секторов и кэширование секторов для дальнейшего потенциального использования, а также устраняют поврежденные секторы. Необходимость последней функции вызвана наличием секторов с поврежденным, то есть постоянно намагниченным, участком. Когда контроллер обнаруживает поврежденный сектор, он заменяет его одним из свободных секторов, которые выделяются специально для этой цели в каждом цилиндре или зоне.

Виды адресации (трехмерная адресация)

2. оптические: CD, DVD,

3. твердотельные накопители SDD: представляют линейную память EEPROM. Применение настольные системы, ноутбуки, высоко производительные сервера, промышленные контроллеры

Устройство жесткого диска

Жесткий диск (НDD - Hard Disk Drive) устроен следующим образом: на шпинделе, соединенным с электромотором, расположен блок из нескольких дисков (блинов), над поверхностью которых находятся головки для чтения/записи информации. Форма головкам придается в виде крыла и крепятся они на серпообразный поводок. При работе они "летят" над поверхностью дисков в воздушном потоке, который создается при вращении этих же дисков. Очевидно, что подъемная сила зависит от давления воздуха на головки. Оно же, в свою очередь, зависит от внешнего атмосферного давления. Поэтому некоторые производители указывают в спецификации на свои устройства предельный потолок эксплуатации (например, 3000 м). Ну чем не самолет? Диск разбит на дорожки (или треки), которые в свою очередь поделены на сектора. Две дорожки, равноудаленные от центра, но расположенные по разные стороны диска, называются цилиндрами.

Хранение информации

Жесткий диск, как и всякое другое блочное устройство, хранит информацию фиксированными порциями, которые называются блоками. Блок является наименьшей порцией данных, имеющей уникальный адрес на жестком диске. Для того чтобы прочесть или записать нужную информацию в нужное место, необходимо представить адрес блока в качестве параметра команды, выдаваемой контроллеру жесткого диска. Размер блока уже довольно с давних пор является стандартным для всех жестких дисков - 512 байт.

К сожалению, достаточно часто происходит путаница между такими понятиями как "сектор", "кластер" и "блок". Фактически, между "блоком" и "сектором" разницы нет. Правда, одно понятие логическое, а второе топологическое. "Кластер" - это несколько секторов, рассматриваемых операционной системой как одно целое.

Для того чтобы однозначно адресовать блок данных, необходимо указать все три числа (номер цилиндра, номер сектора на дорожке, номер головки). Такой способ адресации диска был широко распространен и получил впоследствии обозначение аббревиатурой CHS (cylinder, head, sector).

Со временем, производители стали делать HDD большего размера. Соответственно число цилиндров на них превысило 1024, максимально допустимое число цилиндров (с точки зрения старых BIOS). Однако, адресуемая часть диска продолжала равняться 504 Мбайтам, при условии, что обращение к диску велось средствами BIOS. Это ограничение со временем было снято введением так называемого механизма трансляции адресов, о котором чуть ниже.

Проблемы, возникшие с ограниченностью BIOS по части физической геометрии дисков, привели в конце концов к появлению нового способа адресации блоков на диске. Этот способ довольно прост. Блоки на диске описываются одним параметром - линейным адресом блока. Адресация диска линейно получила аббревиатуру LBA (logical block addressing). Линейный адрес блока однозначно связан с его CHS адресом:

lba = (cyl*HEADS + head)*SECTORS + (sector-1);

Введение поддержки линейной адресации в контроллеры жестких дисков дало возможность BIOS'aм заняться трансляцией адресов. Суть этого метода состоит в том, что если в приведенной выше формуле увеличить параметр HEADS, то потребуется меньше цилиндров, чтобы адресовать то же самое количество блоков диска. Но зато потребуется больше головок. Однако головок-то как раз использовалось всего 16 из 255. Поэтому BIOS'ы стали переводить избыточные цилиндры в головки, уменьшая число одних и увеличивая число других. Это позволило им использовать разрядную сетку головок целиком. Это отодвинуло границу адресуемого BIOS'ом дискового пространства до 8Gb.

Дальнейшее увеличение адресуемых объемов диска с использованием прежних сервисов BIOS стало принципиально невозможным. Действительно, все параметры задействованы по максимальной "планке" (63 сектора, 1024 цилиндра и 255 головок). Тогда был разработан новый расширенный интерфейс BIOS, учитывающий возможность очень больших адресов блоков. Однако этот интерфейс уже не совместим с прежним, вследствие чего старые операционные системы, такие как DOS, которые пользуются старыми интерфейсами BIOS, не смогли и не смогут переступить границы в 8GB. Практически все современные системы уже не пользуются BIOS'ом, а используют собственные драйвера для работы с дисками. Поэтому данное ограничение на них не распространяется. Но следует понимать, что прежде чем система сможет использовать собственный драйвер, она должна как минимум его загрузить. Поэтому на этапе начальной загрузки любая система вынуждена пользоваться BIOS'ом. Это и вызывает ограничения на размещение многих систем за пределами 8GB, они не могут оттуда загружаться, но могут читать и писать информацию (например, DOS который работает с диском через BIOS).