Организация побайтного ввода вывода – —

9. Управление вводом-выводом данных » СтудИзба

Лекция 9.   Управление вводом-выводом данных

 9.1 Принципы аппаратуры ввода-вывода

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

 


Рис. 1.  Структура системы ввода-вывода

 

В составе любой ОС существует специальная подсистема, управляющая аппаратурой ввода-вывода. Основные задачи, решаемые с помощью этой подсистемы, состоят в следующем:

 

—    подсистема должна обеспечить пользователей удобным и понятным интерфейсом для обращения к ПУ как в однопользовательском, так и в многопользовательском режимах работы ЭВМ; при этом часто выдвигается требование на достижение унифицированного интерфейса для доступа к различным по своим физическим характеристикам ПУ, для чего реализуется принцип независимости от устройств;

—    в мультипрограммном режиме работы систем разделения времени подсистема должна обеспечить такое планирование процесса ввода-вывода данных, чтобы достичь максимального перекрытия во времени работы центрального процессора (ЦП) и аппаратуры ввода-вывода.

—    состав подсистемы ОС для устройств ввода-вывода и аппаратура ввода-вывода существенно отличаются для различных ЭВМ, но можно выделить и единое концептуальное начало, свойственное всем подсистемам. Аппаратуру ввода-вывода можно рассматривать как совокупность аппаратурных процессоров, которые способны работать параллельно друг относительно друга, а также относительно ЦП. На таких процессорах выполняются так называемые внешние процессы. Например, для печатающего устройства процесс может состоять из совокупности действий, обеспечивающих перевод каретки, продвижение бумаги на одну строку, печать любого заданного числа символов на строке.

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

Подсистема ОС для управления вводом-выводом с точки зрения программных процессов является интерфейсом с ПУ. Различают три типа действий с ПУ:

1. операции чтения-записи данных;

2. операции управления ПУ;

3. операции по проверке состояния ПУ.

 

9.1.1 Устройства ввода-вывода

Устройства делят на две категории (некоторые не попадают ни в одну):

  • блочные устройства — информация считывается и записывается по блокам, блоки имеют свой адрес (диски)
  • символьные устройства — информация считывается и записывается посимвольно (принтер, сетевые карты, мыши)

 

9.1.2 Контроллеры устройств

Устройства ввода-вывода обычно состоят из двух частей:

  • механическая (не надо понимать дословно) — диск, принтер, монитор
  • электронная — контроллер или адаптер

  Если интерфейс между контроллером и устройством стандартизован (ANSI, IEEE или ISO), то независимые производители могут выпускать совместимые как контроллеры, так и устройства. Например: диски IDE или SCSI.

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

 

9.1.3 Отображаемый на адресное пространство памяти ввод-вывод

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

  У многих устройств есть буфер данных (например: видеопамять).

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

 

  • номер порта ввода-вывода — назначается каждому управляющему регистру 8- или 16-рзрядное целое число. Адресные пространства ОЗУ и устройства ввода-вывода в этой схеме не пересекаются.
    Недостатки
    — для чтения и записи применяются специальные команды, например IN и OUT
    — необходим специальный механизм защиты от процессов
    — необходимо сначала считать регистр устройства в регистр процессора

 

  • отображаемый на адресное пространство памяти ввод-вывод — регистры отображаются на адресное пространство памяти.
    Недостатки
    — при кэшировании памяти, могут кэшироваться и регистры устройств
    — все устройства должны проверять все обращения к памяти, чтобы определить, на какие им реагировать. На одной общей шине это реализуется легко, но на нескольких будут проблемы.

 

  • смешанная реализация — используется в х86 и Pentium,
    от 0 до 64К отводится портам,
    от 640 до 1М зарезервировано под буферы данных.

Способы реализации доступа к управляющим регистрам и буферам

 9.1.4 Прямой доступ к памяти (DMA — Direct Memory Access)

  Прямой доступ к памяти реализуется с помощью DMA — контроллера.

  Контроллер содержит несколько регистров:

  • регистр адреса памяти
  • счетчик байтов
  • управляющие регистры, могут содержать:
    — порт ввода-вывода
    — чтение или запись
    — единицы переноса (побайтно или пословно)

  Без контроллера происходит следующее:

  1. Процессор дает команду дисковому контроллеру прочитать данные в буфер,
  2. Считываются данные в буфер, контроллер проверяет контрольную сумму считанных данных (проверка на ошибки). Процессор, до прерывания, переключается на другие задания.
  3. Контроллер диска инициирует прерывание
  4. Операционная система начинает работать и может считывать из буфера данные в память

 

Работа DMA — контроллера

  С контроллером происходит следующее:

  1. Процессор программирует контроллер (какие данные и куда переместить)
  2. Процессор дает команду дисковому контроллеру прочитать данные в буфер
  3. Считываются данные в буфер, контроллер диска проверяет контрольную сумму считанных данных, (процессор, до прерывания, переключается на другие задания).
  4. Контроллер DMA посылает запрос на чтение дисковому контроллеру
  5. Контроллер диска поставляет данные на шину, адрес памяти уже находится на шине, происходит запись данных в память
  6. Когда запись закончена,  контроллер диска посылает подтверждение DMA контроллеру
  7. DMA контроллер увеличивает используемый адрес и уменьшает значение счетчика байтов
  8. Все повторяется с пункта 4, пока значение счетчика не станет равной нулю.
  9. Контроллер DMA инициирует прерывание

Операционной системе не нужно копировать данные в память, они уже там.

 

9.1.5 Прерывания

После того как устройство ввода-вывода начало работу, процессор переключается на другие задачи.

Чтобы сигнализировать процессору об окончании работы, устройство инициализирует прерывание, выставляя сигнал на выделенную устройству линию шины (а не выделенный провод).

 

  Контроллер прерываний — обслуживает поступающие прерывания от устройств.

  1. Если необработанных прерываний нет, прерывание выполняется немедленно.
  2. Если необработанных прерываний есть, контроллер игнорирует прерывание. Но устройство продолжает удерживать сигнал прерывания на шине до тех пор, пока оно не будет обработано.

 

Работа прерываний

 

 

Алгоритм работы:

  • Устройство выставляет сигнал прерывания
  • Контроллер прерываний инициирует прерывание, указывая номер устройства
  • Процессор начинает выполнять обработку прерывания, вызывая процедуру
  • Эта процедура подтверждает получение прерывания контроллеру прерываний

 

 

 

9.2 Принципы программного обеспечения ввода-вывода

 

9.2.1 Задачи программного обеспечения ввода-вывода

Основные задачи, которые должно решать программное обеспечение ввода-вывода:

  • Независимость от устройств — например, программа, читающая данные из файла не должна задумываться с чего она читает (CD, HDD и др.). Все проблемы должна решать ОС.
  • Единообразное именование — имя файла или устройства не должны отличаться. (В системах UNIX выполняется дословно).
  • Обработка ошибок — ошибки могут быть отловлены на уровне контроллера, драйвера и т.д.
  • Перенос данных — синхронный и асинхронный (в последнем случае процессор запускает перенос данных, и переключается на другие задачи до прерывания).
  • Буферизация
  • Проблема выделенных (принтер) и невыделенных (диск) устройств — принтер должен предоставляться только одному пользователю, а диск многим. ОС должна решать все возникающие проблемы.

Три основных способа осуществления операций ввода-вывода:

  • Программный ввод-вывод
  • Управляемый прерываниями ввод-вывод
  • Ввод-вывод с использованием DMA

Рассмотрим их подробнее.

 

9.2.2 Программный ввод-вывод

  В этом случае всю работу выполняет центральный процессор.

Рассмотрим процесс печати строки ABCDEFGH этим способом.

 

 

Этапы печати строки ABCDEFGH

 

Алгоритм печати:

  1. Строка для печати собирается в пространстве пользователя.
  2. Обращаясь к системному вызову, процесс получает принтер.
  3. Обращаясь к системному вызову, процесс просит распечатать строку на принтере.
  4. Операционная система копирует строку в массив, расположенный в режиме ядра.
  5. ОС копирует первый символ в регистр данных принтера, который отображен на памяти.
  6. Символ печатается на бумаге.
  7. Указатель устанавливается на следующий символ.
  8. Процессор ждет, когда бит готовности принтера выставится в готовность.
  9. Все повторяется.

  При использовании буфера принтера, сначала вся строка копируется в буфер, после этого начинается печать.

 

9.2.3 Управляемый прерываниями ввод-вывод

  Если в предыдущем примере буфер не используется, а принтер печатает 100 символов в секунду, то на каждый символ будет уходить 10мс, в это время процессор будет простаивать, ожидая готовности принтера.

  Рассмотрим тот же пример, но с небольшим усовершенствованием.

Алгоритм печати:

  1. До пункта 8 тоже самое.
  2. Процессор не ждет готовности принтера, а вызывает планировщик и переключается на другую задачу. Печатающий процесс блокируется.
  3. Когда принтер будет готов, он посылает прерывание процессору.
  4. Процессор переключается на печатающий процесс.

 

9.2.4 Ввод-вывод с использованием DMA

Недостаток предыдущего метода в том, что прерывание происходит при печати каждого символа.

Алгоритм не отличается, но всю работу на себя берет контроллер DMA.

 

9.3 Программные уровни и функции ввода-вывода

  Четыре уровня ввода-вывода:

 

 

Уровни ввода-вывода

 

 

9.3.1 Обработчики прерываний

  Прерывания должны быть скрыты как можно глубже в недрах операционной системы, чтобы как можно меньшая часть ОС имела с ними дело. Лучше всего блокировать драйвер, начавший ввод-вывод.

  Алгоритм:

  1. Драйвер начинает операцию ввод-вывод.
  2. Драйвер блокирует сам себя,
    — выполнив на семафоре процедуру down
    — выполнив на переменной состояния процедуру wait
    — выполнив на сообщении процедуру receive
  3. Происходит прерывание
  4. Обработчик прерываний начинает работу
  5. Обработчик прерываний может разблокировать драйвер (например, выполнив на семафоре процедуру up)

 

 

 

 

 

 

9.3.2 Драйвера устройств

  Драйвер устройства — необходим для каждого устройства. Для разных ОС нужны разные драйверы.

Драйверы должны быть частью ядра (в монолитной системе), что бы получить доступ к регистрам контроллера.

  Это одна из основных причин приводящих к краху операционных систем. Потому что драйверы, как правило, пишутся производителями устройств, и вставляются в ОС.

 

 

Логическое расположение драйверов устройств. На самом деле обмен данными между контроллерами и драйверами идет по шине.

 

Драйвера должны взаимодействовать с ОС через стандартные интерфейсы.

Стандартные интерфейсы, которые должны поддерживать драйвера:

  • Для блочных устройств
  • Для символьных устройств

Раньше для установки ядра приходилось перекомпилировать ядра системы.

Сейчас в основном ОС загружают драйверы. Некоторые драйверы могут быть загружены в горячем режиме.

Функции, которые выполняют драйвера:

  • обработка запросов чтения или записи
  • инициализация устройства
  • управление энергопотреблением устройства
  • прогрев устройства (сканера)
  • включение устройства или запуска двигателя

 

9.3.3 Независимое от устройств программное обеспечение ввода-вывода

Функции независимого от устройств программного обеспечения ввода-вывода:

  • Единообразный интерфейс для драйверов устройств,
  • Буферизация
  • Сообщения об ошибках
  • Захват и освобождение выделенных устройств(блокирование)
  • Размер блока, не зависящий от устройств

 

Единообразный интерфейс для драйверов устройств

Кроме интерфейса, в него также входят проблемы,

  • именование устройств
  • защита устройств

 

 

Буферизация

Рассмотрим несколько примеров буферизации.

 

 

a) Не буферизованный ввод — после ввода каждого символа происходит прерывание

b) Буферизация в пространстве пользователя — приходится держать загруженными необходимые страницы памяти в физической памяти.

c) Буферизация в ядре с копированием в пространство пользователя — страница загружается только когда буфер ядра полный, данные из буфера ядра в буфер пользователя копируется за одну операцию. Проблема может возникнуть, когда буфер ядра полный, а страница буфера пользователя еще не загружена.

d) Двойная буферизация в ядре — если один буфер заполнен, и пока он выгружается, символы пишутся во второй буфер.

 

Сообщения об ошибках

Наибольшее число ошибок возникает именно от операции ввода-вывода, поэтому их нужно определять как можно раньше. Ошибки могут быть очень разные в зависимости от устройств.

 

Захват и освобождение выделенных устройств

Для устройств (принтер) с которыми должен работать в одно время только один процесс, необходима возможность захвата и освобождения устройств. Когда один процесс занял устройство, остальные встают в очередь.

 

Независимый от устройств размер блока

Размер блока должен быть одинаковый для верхних уровней, и не зависеть от устройств (размеров секторов на диске).

 

 

9.4. Программное обеспечение ввода-вывода пространства пользователя

Функции этого обеспечения:

  • Обращение к системным вызовам ввода-вывода (через библиотечные процедуры).
  • Форматный ввод-вывод (меняют формат, например, в ASCII)
  • Спулинг (для выделенных устройств) — создается процесс (например, демон печати) и каталог спулера.

 

 

 

 

 

 

Обобщение уровней и функций ввода-вывода

 

 

Уровни и основные функции системы ввода-вывода

 

Базовая подсистема ввода-вывода служит посредником между процессами вычислительной системы и набором драйверов. Системные вызовы для выполнения операций ввода-вывода трансформируются ею в вызовы функций необходимого драйвера устройства. Однако обязанности базовой подсистемы не сводятся к выполнению только действий трансляции общего системного вызова в обращение к частной функции драйвера. Базовая подсистема предоставляет вычислительной системе такие услуги, как поддержка блокирующихся, неблокирующихся и асинхронных системных вызовов, буферизация и кэширование входных и выходных данных, осуществление spooling’a и монопольного захвата внешних устройств, обработка ошибок и прерываний, возникающих при операциях ввода-вывода, планирование последовательности запросов на выполнение этих операций. Давайте остановимся на этих услугах подробнее.

 

Блокирующиеся, неблокирующиеся и асинхронные системные вызовы

Все системные вызовы, связанные с осуществлением операций ввода-вывода, можно разбить на три группы по способам реализации взаимодействия процесса и устройства ввода-вывода.

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

·              Ко второй группе относятся неблокирующиеся системные вызовы. Их название не совсем точно отражает суть дела. В простейшем случае процесс, применивший неблокирующийся вызов, не переводится в состояние ожидание вообще. Системный вызов возвращается немедленно, выполнив предписанные ему операции ввода-вывода полностью, частично или не выполнив совсем, в зависимости от текущей ситуации (состояния устройства, наличия данных и т. д.). В более сложных ситуациях процесс может блокироваться, но условием его разблокирования является завершение всех необходимых операций или окончание некоторого промежутка времени. Типичным случаем применения неблокирующегося системного вызова может являться периодическая проверка на поступление информации с клавиатуры при выполнении трудоемких расчетов.

·              К третьей группе относятся асинхронные системные вызовы. Процесс, использовавший асинхронный системный вызов, никогда в нем не блокируется. Системный вызов инициирует выполнение необходимых операций ввода-вывода и немедленно возвращается, после чего процесс продолжает свою регулярную деятельность. Об окончании завершения операции ввода-вывода операционная система впоследствии информирует процесс изменением значений некоторых переменных, передачей ему сигнала или сообщения или каким-либо иным способом. Необходимо четко понимать разницу между неблокирующимися и асинхронными вызовами. Неблокирующийся системный вызов для выполнения операции read вернется немедленно, но может прочитать запрошенное количество байтов, меньшее количество или вообще ничего. Асинхронный системный вызов для этой операции также вернется немедленно, но требуемое количество байтов рано или поздно будет прочитано в полном объеме.

 

Буферизация и кэширование

Под буфером обычно понимается некоторая область памяти для запоминания информации при обмене данных между двумя устройствами, двумя процессами или процессом и устройством. Обмен информацией между двумя процессами относится к области кооперации процессов, и мы подробно рассмотрели его организацию в соответствующей лекции. Здесь нас будет интересовать использование буферов в том случае, когда одним из участников обмена является внешнее устройство. Существует три причины, приводящие к использованию буферов в базовой подсистеме ввода-вывода.

·              Первая причина буферизации – это разные скорости приема и передачи информации, которыми обладают участники обмена. Рассмотрим, например, случай передачи потока данных от клавиатуры к модему. Скорость, с которой поставляет информацию клавиатура, определяется скоростью набора текста человеком и обычно существенно меньше скорости передачи данных модемом. Для того чтобы не занимать модем на все время набора текста, делая его недоступным для других процессов и устройств, целесообразно накапливать введенную информацию в буфере или нескольких буферах достаточного размера и отсылать ее через модем после заполнения буферов.

·              Вторая причина буферизации – это разные объемы данных, которые могут быть приняты или получены участниками обмена единовременно. Возьмем другой пример. Пусть информация поставляется модемом и записывается на жесткий диск. Помимо обладания разными скоростями совершения операций, модем и жесткий диск представляют собой устройства разного типа. Модем является символьным устройством и выдает данные байт за байтом, в то время как диск является блочным устройством и для проведения операции записи для него требуется накопить необходимый блок данных в буфере. Здесь также можно применять более одного буфера. После заполнения первого буфера модем начинает заполнять второй, одновременно с записью первого на жесткий диск. Поскольку скорость работы жесткого диска в тысячи раз больше, чем скорость работы модема, к моменту заполнения второго буфера операция записи первого будет завершена, и модем снова сможет заполнять первый буфер одновременно с записью второго на диск.

·              Третья причина буферизации связана с необходимостью копирования информации из приложений, осуществляющих ввод-вывод, в буфер ядра операционной системы и обратно. Допустим, что некоторый пользовательский процесс пожелал вывести информацию из своего адресного пространства на внешнее устройство. Для этого он должен выполнить системный вызов с обобщенным названием write, передав в качестве параметров адрес области памяти, где расположены данные, и их объем. Если внешнее устройство временно занято, то возможна ситуация, когда к моменту его освобождения содержимое нужной области окажется испорченным (например, при использовании асинхронной формы системного вызова). Чтобы избежать возникновения подобных ситуаций, проще всего в начале работы системного вызова скопировать необходимые данные в буфер ядра операционной системы, постоянно находящийся в оперативной памяти, и выводить их на устройство из этого буфера.

Под словом кэш (cash – «наличные»), этимологию которого мы не будем здесь рассматривать, обычно понимают область быстрой памяти, содержащую копию данных, расположенных где-либо в более медленной памяти, предназначенную для ускорения работы вычислительной системы. Мы с вами сталкивались с этим понятием при рассмотрении иерархии памяти. В базовой подсистеме ввода-вывода не следует смешивать два понятия, буферизацию и кэширование, хотя зачастую для выполнения этих функций отводится одна и та же область памяти. Буфер часто содержит единственный набор данных, существующий в системе, в то время как кэш по определению содержит копию данных, существующих где-нибудь еще. Например, буфер, используемый базовой подсистемой для копирования данных из пользовательского пространства процесса при выводе на диск, может в свою очередь применяться как кэш для этих данных, если операции модификации и повторного чтения данного блока выполняются достаточно часто.

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

 

Spooling и захват устройств

О понятии spooling мы говорили в первой лекции нашего курса, как о механизме, впервые позволившем совместить реальные операции ввода-вывода одного задания с выполнением другого задания. Теперь мы можем определить это понятие более точно. Под словом spool мы подразумеваем буфер, содержащий входные или выходные данные для устройства, на котором следует избегать чередования его использования различными процессами. Правда, в современных вычислительных системах spool для ввода данных практически не используется, а в основном предназначен для накопления выходной информации.

Рассмотрим в качестве внешнего устройства принтер. Хотя принтер не может печатать информацию, поступающую одновременно от нескольких процессов, может оказаться желательным разрешить процессам совершать вывод на принтер параллельно. Для этого операционная система вместо передачи информации напрямую на принтер накапливает выводимые данные в буферах на диске, организованных в виде отдельного spool-файла для каждого процесса. После завершения некоторого процесса соответствующий ему spool-файл ставится в очередь для реальной печати. Механизм, обеспечивающий подобные действия, и получил название spooling.

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

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

 

Обработка прерываний и ошибок

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

Одна и та же процедура обработки прерывания может применяться для нескольких устройств ввода-вывода (например, если эти устройства используют одну линию прерываний, идущую от них к контроллеру прерываний), поэтому первое действие собственно программы обработки состоит в определении того, какое именно устройство выдало прерывание. Зная устройство, мы можем выявить процесс, который инициировал выполнение соответствующей операции. Поскольку прерывание возникает как при удачном, так и при неудачном ее выполнении, следующее, что мы должны сделать, – это определить успешность завершения операции, проверив значение бита ошибки в регистре состояния устройства. В некоторых случаях операционная система может предпринять определенные действия, направленные на компенсацию возникшей ошибки. Например, в случае возникновения ошибки чтения с гибкого диска можно попробовать несколько раз повторить выполнение команды. Если компенсация ошибки невозможна, то операционная система впоследствии известит об этом процесс, запросивший выполнение операции, (например, специальным кодом возврата из системного вызова). Если этот процесс был заблокирован до выполнения завершившейся операции, то операционная система переводит его в состояние готовность. При наличии других неудовлетворенных запросов к освободившемуся устройству операционная система может инициировать выполнение следующего запроса, одновременно известив устройство, что прерывание обработано. На этом, собственно, обработка прерывания заканчивается, и система может приступать к планированию использования процессора.

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

 

Планирование запросов

При использовании неблокирующегося системного вызова может оказаться, что нужное устройство уже занято выполнением некоторых операций. В этом случае неблокирующийся вызов может немедленно вернуться, не выполнив запрошенных команд. При организации запроса на совершение операций ввода-вывода с помощью блокирующегося или асинхронного вызова занятость устройства приводит к необходимости постановки запроса в очередь к данному устройству. В результате с каждым устройством оказывается связан список неудовлетворенных запросов процессов, находящихся в состоянии ожидания, и запросов, выполняющихся в асинхронном режиме. Состояние ожидание расщепляется на набор очередей процессов, дожидающихся различных устройств ввода-вывода (или ожидающих изменения состояний различных объектов – семафоров, очередей сообщений, условных переменных в мониторах и т. д. – см. лекцию 6).

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

Задача планирования использования устройства обычно возлагается на базовую подсистему ввода-вывода, однако для некоторых устройств лучшие алгоритмы планирования могут быть тесно связаны с деталями их внутреннего функционирования. В таких случаях операция планирования переносится внутрь драйвера соответствующего устройства, так как эти детали скрыты от базовой подсистемы. Для этого в интерфейс драйвера добавляется еще одна специальная функция, которая осуществляет выбор очередного запроса, – функция strategy

 

9.5. Принципы, заложенные в подсистему управления вводом-выводом в ОС UNIX

1. Эта подсистема построена единообразно с подсистемой управления данными (файловой системой). Пользователю предоставляется унифицированный способ доступа как к ПУ, так и к файлам. Под файлом в ОС UNIX понимают набор данных на диске, видеотерминале и т.д.; любое ПУ рассматривается как специальный файл. При запросе программного процесса о выводе данных в специальный файл ОС перехватывает запрос и направляет данные на соответствующее устройство. Аналогично организуется чтение данных из специального файла — это прием данных с ПУ. Таким образом, доступ, например, к файлу на диске и к специальному файлу дисплея обеспечивается одним и тем же набором системных вызовов.

2. Другая особенность подсистемы ввода-вывода в ОС UNIX заключается в том, что она работает как синхронная система. Любой программный процесс, требующий ввода данных, приостанавливается в точке, где он выдал запрос, до тех пор, пока не завершится операция ввода из указанного специального файла. При выводе процесс приостанавливается в точке запроса на вывод данных вплоть до того момента, пока выводимые данные будут приняты системой в буфер пользователя. Такая организация ввода-вывода приводит в мультипрограммном режиме работы ЭВМ к повышению эффективности использования времени ЦП вследствие уменьшения простоев этого ЦП. Заметим, что в системах реального времени (СРВ) чаще используется асинхронный принцип работы подсистемы ввода-вывода, так как в этом случае уменьшается время реакции СРВ на события, требующие немедленной обработки.

3. Для управления ПУ в ОС UNIX используются 2 вида интерфейса с этими ПУ: байториентированный и блокориентированный. Блокориентированный интерфейс обеспечивает связь с ПУ, к которым можно адресоваться как к последовательности блоков по 512 байт. Такими ПУ в основном являются ВЗУ. Основой организации такого интерфейса является система буферизации, поддерживаемая в ОП. Байториентированный интерфейс используется для доступа к печатающему устройству, клавиатуре дисплея и некоторым другим устройствам, при этом буферизация не используется.

4. В состав системы управления вводом-выводом входят также драйверы и набор специальных таблиц для логического подключения ядра ОС к драйверам различных устройств. Каждый драйвер содержит 2 части и может обслуживать несколько устройств одного типа.

Первая часть драйвера содержит набор программных модулей для выполнения операций по открытию, закрытию, чтению и записи специальных файлов, а также для управления специальными режимами работы ПУ. Чтобы начать работать с некоторым устройством, необходимо открыть или создать специальный файл, сопоставляемый с этим устройством. Открытие файла — это процесс установления связи между именем файла и некоторой переменной, хранимой в области памяти того процесса, который открывает файл. Эта переменная, называемая номером дескриптора файла, используется далее в операциях над открытым файлом. После открытия файла процессу, проводившему открытие, разрешен доступ к устройству. Операция закрытия обратна по назначению и приводит к разрыву связи между программным процессом и указываемым ПУ.

Вторая часть драйвера — это модуль обработки прерываний. При управлении большинством ПУ в ОС UNIX используется метод прерываний. Для байториентированного ПУ прерывание возникает после передачи байта, для блокориентированного ПУ — после передачи блока. Модуль обработки прерывания, являющийся частью драйвера, или прекращает работу с ПУ, или продолжает работу с ним, выдавая ему новое задание.

Некоторые из изложенных принципов построения системы ввода-вывода ОС UNIX были реализованы в ОС, созданных позднее, например, в MS DOS, функционирующей в ЭВМ IBM РС с МП типа 80х86.

Рассмотрим еще одну особенность построения системы ввода-вывода. В мультипрограммном режиме работы ЭВМ, используемом в СРВ или в системах разделения времени, к одному и тому же ПУ может появиться очередь запросов от различных программ. Для организации последовательного выполнения этим ПУ поступивших к нему заявок на обслуживание в ОП должна быть организована специальная таблица, содержимое которой однозначно отображает в каждый момент времени очередность и содержание поступивших заявок; после выполнения ПУ очередной заявки данные о ней исключаются из рассматриваемой таблицы. Такие таблицы должны быть организованы для большинства ПУ, взаимодействующих с ЭВМ.

 

 

 

 

studizba.com

Организация ввода-вывода в ОС

Подсистема ввода-вывода обеспечивает обмен данными между приложениями и периферийными устройствами

К основным компонентам п/с относятся драйверы и файловая система

Основные задачи:

  • Организация параллельной работы устройств и процессора
  • Кэширование данных
  • Разделение устройств и данных между процессами
  • Удобный логический интерфейс
  • Простое включение нового драйвера и файловых систем
  • Поддержка синхронных и асинхронных операций

Организация параллельной работы устройств и процессора

Каждому устройству ввода-вывода соответствует специальное устройство управления – контроллер. Контроллер работает параллельно с процессором и взаимодействует с прикладными программами через посредство особой программы ОС – драйвера.

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

Кэширование данных

В общем случае скорость генерации данных и их чтения не совпадают. Для согласования данные вводится буферизация , доступ к которому синхронизируется. Буфер обычно располагается в ОЗУ

При больших объемах ввода — вывода, памяти может не хватать и в таких случаях под буфер используется дисковый файл: спул-файл

Другим решением является оснащение контроллера буферной памятью, соизмеримой с ОЗУ

Буферизация решает и другую задачу — сократить количество реальных обращений к устройствам за счет кэширования (дисковый кэш)

Разделение устройств и данных между процессами

Устройства ввода — вывода могут предоставляться процессам в монопольное или совместное использование.

Устройства типа диск позволяют разграничить доступ с точностью до отдельных порций данных, со своими правами

Другие устройства, например терминал, используется только в монопольном режиме

Принтер не выделяется в монопольное использование, но разграничивает порции выдач разных процессов

Удобный логический интерфейс

Практически все современные ОС поддерживают в качестве основного логического интерфейса файловую модель устройств ввода-вывода, когда любое устройство – последовательность байтов, с которыми можно работать с помощью системных вызовов типа Read, Write

На этой базе строится более сложная модель устройств ввода-вывода, с учетом их специфики

Простое включение новых драйверов

Достоинством любой современной ОС является разнообразие набора драйверов для наиболее популярных устройств и поддержка нескольких файловых систем

Удобный интерфейс между драйверами и другими компонентами ОС, необходим для того, чтобы драйверы писали не только разработчики ОС, но и производители устройств

Существуют два типа интерфейсов:

  • “драйвер-ядро” (Driver Kernel Interface, DKI) для взаимодействия с ядром ОС и
  • интерфейс “драйвер-устройство” (Driver Device Interface, DDI) для взаимодействия с контроллером

Для поддержки разработки драйверов обычно выпускается пакет DDK (Driver Development Kit)

Поддержка нескольких файловых систем

Данные на дисках организуются в файловые системы (ФС). Свойства ФС во многом определяют свойства ОС (отказоустойчивость, быстродействие, емкость и пр.)

Популярные системы мигрируют из одной ОС в другую (например FAT мигрировала из MS DOS в OS/2, MS Windows, Unix)

Обычно в ОС имеется слой программного обеспечения, отвечающий за простоту подключения новой файловой системы. Например, слой VFS (Virtual File System) в версиях Unix.

Поддержка синхронных и асинхронных операций ввода-вывода.

Операция ввода-вывода может выполнятся по отношению к модулю, запросившему операцию, синхронно и асинхронно, т.е. с ожиданием завершения операции или без ее ожидания.

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

При микроядерной архитектуре прикладной процесс может запросить и асинхронную операцию ввода-вывода.

Внутренние же вызовы ядра обычно выполняются асинхронно, для свободы дальнейшего поведения ОС

Многослойная модель подсистемы В-В

Многослойная модель подсистемы ввода-вывода

Менеджер ввода-вывода.

В подсистеме ввода-вывода есть модуль общего назначения, который организует работу всех компонентов системы ввода-вывода, это менеджер ввода-вывода. Он образует некую оболочку

Основные задачи менеджера:

  • системные вызовы ввода-вывода,
  • взаимодействие с контроллером,
  • поддержка внутреннего интерфейса взаимодействия модулей ввода-вывода,
  • взаимодействие с другими модулями ОС

Пример: среда STREAMS для UNIX


Помогая проекту BEST-EXAM, вы делаете образование более доступным для каждого человека, внесите и вы свой вклад —
поделитесь этой статьей в социальных сетях!

best-exam.ru

Тема 2.4 Обслуживание ввода-вывода — Мегаобучалка

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

Управление вводом/выводом – одна из основных функций любой операционной системы.

Организация ввода/вывода в различных ОС имеет много общего, а реализация сильно отличается от системы к системе.

Основные понятия и концепции организации ввода/вывода в ОС

Сложность проектирования ввода/вывода возникает из-за огромного числа устройств различной природы и назначения. Разработчик ввода/вывода должен решить две задачи: обеспечение эффективного управления устройствами ввода/вывода и создание удобного и эффективного интерфейса устройств ввода/вывода, позволяющего прикладным программам просто считывать или сохранять данные. Система ввода/вывода должна быть универсальной.

Главный принцип ввода/вывода – любые операции по управлению вводом/выводом объявляются привилегированными и могут выполняться только самой ОС. Для обеспечения этого принципа в большинстве процессоров вводятся два режима: режим пользователя, выполнение команд ввода/вывода запрещено; режим супервизора, выполнение команд ввода/вывода разрешено.

Использование команд ввода/вывода в пользовательском режиме вызывает исключение (прерывание) и управление передается ОС.

Для мультипрограммных ОС одним из основных видов ресурсов – устройства ввода/вывода и обслуживающие их программы. ОС должны управлять разделяемыми и неразделяемыми устройствами и позволять параллельно выполняющимися задачам использовать различные устройства ввода/вывода.



Непосредственное обращение к внешним устройствам из пользовательских программ не разрешено по трем причинам:

— возможные конфликты при доступе к устройствам ввода/вывода;

— повышение эффективности использование этих ресурсов;

— ошибки в программах ввода/вывода могут привести к разрушению системы.

Менеджер ввода-вывода

Компонента ОС, выполняющая ввод/вывод называется супервизором ввода/вывода.

2.4.2.1.Основные задачи супервизора следующие:

— получение, проверка на корректность и выполнение запросов на ввод/вывод от прикладных задач и от модулей самой системы;

— планирование ввода/вывода: выполнение или постановка в очередь;

— инициирование ввода/вывода – передача управления драйверам;

— при получении сигналов прерывания передача управления соответствующей программе обработки прерывания;

— передача сообщений об ошибках, если они появляются;

— передача сигнала о завершении операции ввода/вывода.

2.4.2.2. Состав супервизора:

1. верхний слой – системные вызовы и нижний слой – взаимодействие с контроллерами устройств

2. драйверы – низкоуровневый (традиционные) и высокоуровневые (общие)

3. специальный файл – спулинг файл

Для организации использования многими параллельно выполняющимися задачами устройств ввода/вывода, которые не могут быть разделяемыми, введено понятие виртуального устройства (спулинга). Главная задача спулинга – создать видимость параллельного разделения устройства ввода/вывода с последовательным доступом, которое должно быть монопольным и быть закрепленным. Например, каждому вычислительному процессу можно предоставить не реальный, а виртуальный принтер, и поток выводимых символов сначала направить в файл на диске. По окончанию виртуальной печати в соответствии с дисциплиной обслуживания и приоритетами приложений содержимое спул файла выводится на принтер. Системный процесс, управляющий спул файлом, называется

спулером.

Если устройство ввода/вывода является инициативным, управление со стороны супервизора ввода/вывода заключается в активизации соответствующего вычислительного процесса. Инициативное устройство – устройство, по сигналу прерывания от которого запускается соответствующая ему программа.

2.4.3. Основные режимы ввода/вывода:

1. режим обмена с опросом готовности Центральный процессор посылает устройству управления команду для ввода/вывода, которую оно исполняет, преобразуя в сигнал, понятный ему самому. Устройства ввода/вывода намного медленнее центрального процессора, поэтому сигнал готовности приходится очень долго ждать, постоянно опрашивая устройство интерфейса. В режиме опроса готовности драйвер, управляющий процессом обмена данными с внешним устройством, выполняет в цикле команду «проверить готовность устройства». Центральный процессор в таком режиме используется нерационально.

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

2.4.5. Виды ввода-вывода:

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

2. Асинхронный вывод – буферизованный вывод данных на внешнее устройство, при котором данные из приложения передаются не непосредственно на устройство ввода/вывода, а в специальный системный буфер. В этом случае логически операция вывода считается законченной, и задача может не ожидать реального процесса вывода данных на устройство. Процессом реального вывода занимается супервизор ввода/вывода. Асинхронный вывод возможен при наличии двух условий, когда в запросе на вывод было указано на необходимость буферизации данных; и когда устройство вывода допускает асинхронные операции.

Для организации асинхронного ввода необходимо:

— выделить область памяти для временного хранения считываемых с устройства данных;

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

— запрос на операцию ввода разбить на две части (два запроса).

В первом запросе указывается операция на ввод данных и имя буфера для вводимых данных, после чего задача или продолжает выполнение или переводится в режим ожидания выполнения, но не переводится в ожидание завершения операции ввода/вывода, как при синхронном вводе. После выполнения некоторого объема программного кода задача выдает второй запрос на завершение операции ввода и, если операция ввода данных завершена к этому времени, то выбирает данные из системного буфера, если операция ввода не завершена, то задача приостанавливается до завершения ввода, как при синхронном вводе.

Накопители на магнитных дисках обладают крайне низкой скоростью по сравнению с быстродействием центральной части процессора. С учетом того, что операции чтения/записи на диск производятся несколькими большими процессами или сегментами памяти, средняя скорость работы процессора с оперативной памятью на 2 – 3 порядка выше, чем скорость передачи данных из внешней памяти на магнитных дисках в оперативную память. Чтобы сгладить такое несоответствие в производительности основных подсистем, используется

буферирование и/или кэширование данных.

Простейший вариант – использование двойного буферирования: пока в один буфер заносятся данные с магнитного диска, из второго буфера ранее считанные данные могут быть прочитаны запросившей их программой. Аналогичный процесс происходит при записи. Буферирование используется во всех ОС.

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

2.4.6. Функции ОС по обслуживанию ввода-вывода:

1. Организация параллельной работы устройств ввода-вывода и процессора

2. Согласование скорости обмена, буферизация и кэширование данных

3. Разделение устройств и данных между процессами

4. Обеспечение удобного интерфейса между устройствами ввода-вывода и ОС

5. Динамическая выгрузка и загрузка драйверов устройств ввода-вывода

6. поддержка синхронных и асинхронных операций ввода-вывода

 

megaobuchalka.ru

Тема 2.4 Обслуживание ввода-вывода

Дом Тема 2.4 Обслуживание ввода-вывода

просмотров — 194

Способы организации ввода-вывода.

Организация побайтного ввода-вывода. Организация ввода-вывода с использованием каналов ввода-вывода. Последовательность операций, выполняемых каналом ввода-вывода. Канальная программа. Вовлечение операционной системы в управление вводом-выводом. Рабочая область канала ввода-вывода. Очередь запросов на ввод-вывод. Алгоритм обработки прерываний по вводу-выводу. Пример управления вводом-выводом.

□Основными задачами подсистемы ввода-вывода являются:

  • организация параллельной работы процессора и устройств ввода-вывода, при обеспечении приемлемого уровня реакции каждого драйвера и минимизации общей загрузки процессора;
  • согласование скоростей работы процессора, оперативной памяти и устройств ввода-вывода;
  • разделœение устройств ввода-вывода между процессами;
  • обеспечение удобного логического интерфейса к устройствам ввода-вывода.

□ Подсистема ввода-вывода обычно имеет ярко выраженную многослойную структуру, которая помогает объединить большое количество разнотипных драйверов в систему с общим интерфейсом.

□ Драйверы делятся на низкоуровневые, непосредственно управляющие работой контроллеров внешних устройств, и высокоуровневые, обеспечивающие логический интерфейс к устройствам, к примеру драйверы файловых систем

□ Для координации работы драйверов в подсистеме ввода-вывода может выделяться особый модуль, называемый менеджером ввода-вывода.

□ Аппаратные драйверы делятся на блок-ориентированные, обеспечивающие доступ к устройствам с поблочной непосредственной адресацией, и байт-ориентированные, управляющие устройствами, поддерживающими побайтный не адресуемый обмен.

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

Основными компонентами подсистемы ввода-вывода являются драйверы, управляющие внешними устройствами, и файловая система. К подсистеме ввода-вывода можно также с некоторой долей условности отнести и диспетчер прерываний.

Условность состоит по сути в том, что диспетчер прерываний обслуживает не только модули подсистемы ввода-вывода, но и другие модули ОС, в частности такой важный модуль, как планировщик/диспетчер потоков. Но из-за того, что планирование работ подсистемы ввода-вывода составляет основную долю нагрузки диспетчера прерываний, его вполне логично рассматривать как ее составную часть (к тому же первопричиной появления в компьютерах системы прерываний были в свое время именно операции с устройствами ввода-вывода «П! принтер и диски, графический монитор и сетевой адаптер»).

Необходимость обеспечить программам возможность осуществлять обмен дан­ными с внешними устройствами и при этом не включать в каждую двоичную программу соответствующий двоичный код, осуществляющий собственно управ­ление устройствами ввода/вывода, привела разработчиков к созданию системно­го программного обеспечения и, в частности, самих операционных систем. Про­граммирование задач управления вводом/выводом является наиболее сложным и трудоемким, требующим очень высокой квалификации. По этой причине код, позво­ляющий осуществлять операции ввода/вывода, стали оформлять в виде систем­ных библиотечных процедур; потом его стали включать не в системы програм­мирования, а в операционную систему с тем, чтобы в каждую отдельно взятую программу его не вставлять, а только позволить обращаться к такому коду. Сис­темы программирования стали генерировать обращения к этому системному коду ввода/вывода и осуществлять только подготовку к собственно операциям вво­да/вывода, то есть автоматизировать преобразование данных к соответствую­щему формату, понятному устройствам, избавляя прикладных программистов от этой сложной и трудоемкой работы. Другими словами, системы программиро­вания вставляют в машинный код необходимые библиотечные подпрограммы ввода/вывода и обращения к тем системным программным модулям, которые, собственно, и управляют операциями обмена между оперативной памятью и внеш­ними устройствами. Τᴀᴋᴎᴍ ᴏϬᴩᴀᴈᴏᴍ, управление вводом/выводом — это одна из базовых функций любой ОС.

oplib.ru

СИСТЕМЫ ВВОДА ВЫВОДА

СИСТЕМЫ ВВОДА ВЫВОДА

Организация ввода — вывода микропроцессорного устройства

Ввод _ вывод _ это процесс обмена данными между ядром микропроцессорного устройства и периферийными устройствами. В микропроцессорном устройстве применяют три режима:

  • программный;
  • по прерываниям;
  • прямой доступ к памяти.
Группа бит, к которым обращается микропроцессор при вводе _ выводе, называется портом или регистром ввода _ вывода. При вводе выводе периферийные устройства представлены следующей программной моделью (рис.10).

Все реестры имеют адрес, в зависимости от конкретной реализации порты могут объединяться. Признак готовности периферийного устройства к вводу _ выводу обычно содержится в одном из разрядов порта состояния, различают изолированный и неизолированный ввод _ вывод. В первом случае в системе команд есть специальные команды ввода _ вывода, в которых содержится номер порта, указываемый во втором слове код операции ввода _ вывода. Адресное пространство портов и ячеек памяти в этом случае изолированы, так как для пересылки в память имеются особые команды. В этом случае адреса портов ввода _ вывода, некоторых, ячеек могут совпадать. Во втором случае адресные пространства едины и совпадения адресов нет. При постоянном способе ввода _ вывода инициализируется программой выполняемой в микропроцессорном устройстве. При вводе _ выводе важна проверка готовности периферийного устройства, то есть состояние определяющего бита порта состояния. В некоторых микропроцессорах, это делается независимо от вида команды и при неготовности периферийного устройства микропроцессор переходит в состояние ожидания. Тем самым достигается согласование во времени работы микропроцессора и более медленных периферийных устройств. При асинхронном вводе _ выводе в программу включаются специальные команды проверки готовности.
Микропроцессор проверяет бит готовности с помощью одной или нескольких команд. Если бит установлен в единицу, то инициируется собственно ввод или вывод одного или нескольких слов данных. Если бит сброшен, то микропроцессор выполняет цикл из двух-трех команд, проверяющих состояние бита до тех пор пока периферийное устройство не будет готово к вводу выводу. Этот цикл называется циклом ожидания. Из-за него микропроцессор непроизводительно теряет время, что является главным недостатком программного ввода вывода, достоинство: простота реализации без дополнительных аппаратных затрат.
Ввод вывод по прерываниям лишен недостатка программного ввода вывода и применяется при работе в реальном времени. Периферийное устройство подает сигнал `запрос прерывания’ на соответствующий вход микропроцессора. Микропроцессор после выполнения текущей команды приостанавливает выполнение основной программы, вырабатывает сигнал подтверждения прерывания и переходит к подпрограмме обработки прерывания, расположенной в фиксированной области памяти. После выполнения этой подпрограммы происходит возврат к основной программе. Для реализации подпрограммы обработки прерывания в микропроцессоре должны выполнятся следующие действия:
  • идентификация источника прерывания;
  • сохранение состояния основных регистров микропроцессора с тем, чтобы обеспечить возможность возобновления прерванной программы;
  • собственное выполнение программы обработки прерывания;
  • восстановление запомненного состояния основных регистров микропроцессора;
  • возврат к выполнению основной программы.
Данная последовательность действий может реализоваться в двух вариантах : с опросом периферийных устройств и по вектору прерывания. Наиболее распространенным является второй способ. В этом случае в ответ на сигнал подтверждения прерывания периферийное устройство посылает в микропроцессор параллельный двоичный код, вектор прерывания по которому управление передается соответствующей подпрограмме обслуживания прерываний. При наличии нескольких периферийных устройств возможна ситуация при которой во время обслуживания запроса прерывания от одного периферийного устройства поступает запрос от другого. Если оно более приоритетно, то происходит вложение прерываний ( т.е. прерывание прерывания). Для создания систем приоритетных прерываний используются контроллеры прерываний. С помощью специальных команд запрещающих прием запроса прерывания можно управлять способностью микропроцессора реагировать на запрос прерывания, например для защиты определенных критичных по времени частей программы, некоторые прерывания, например связанные с аварией питания замаскировать нельзя.

Ввод вывод в режиме прямого доступа к памяти

Ввод вывод в режим прямого доступа к памяти используют канал прямого доступа к памяти по которому массивы данных передаются непосредственно между периферийным устройством и АЗУ, минуя микропроцессор. Это позволяет достичь наибольшей скорости передачи, но требует специального контроллера прямого доступа к памяти. Периферийное устройство посылает в контроллер прямого доступа к памяти запрос, который транслируется контроллером в микропроцессор, на что микропроцессор отвечает сигналом подтверждения. При этом микропроцессор прекращает работу по выполнению текущей программы, переводит свои буферные регистры, подключенные к шине адреса и шине данных, в высоко эмпедансное состояние и прекращает выработку управляющих сигналов. В контроллер прямого доступа к памяти в его счетчики заносится адрес ячейки АЗУ с которой начинается массив данных и число слов в нем, а также взводится триггер прямого доступа к памяти. Адрес ячейки выдается затем на шину адреса и начинается обмен. При передаче каждого слова содержимое счетчиков в контроллере изменяется на единицу и обмен данными производиться автоматически пока триггер прямого доступа к памяти не сбросится сигналом переполнения или обнуления счетчика. Запрос снимается и микропроцессор возобновляет приостановленную программу.

Ввод вывод

Как в 86 32 разрядные микропроцессоры позволяют адресовать до 64К однобайтных или 32К двухбайтных регистров в пространстве отдельным от памяти. Дополнительно имеется возможность обращения к 32 битным портам. При операциях ввода вывода линии А16-А31 не используются в шине адреса. Адрес устройства задается либо в команде (только младший байт), либо берется из регистра DX (16 бит). Команды ввода вывода вызывают шинные циклы с активными сигналами OWRD, строковые команды обеспечивают блочный ввод вывод со скоростью превышающей аналогичные операции со стандартным контроллером DMA. В адресном пространстве ввода вывода область 0F8-0FF зарезервирована для использования сопроцессором. В защищенном режиме инструкции ввода вывода являются привилегированными это означает, что они могут исполняться задачами только с определенным уровнем привилегий определяемым полем IOPL, регистром флагов или битовой картой разрешения ввода вывода хранящейся в TSS. Несанкционированная попытка выполнения этих инструкций вызывает исключение 13.

Защищенный режим

Защищенный режим позволяет адресовать до 4 Гбайт физической памяти, через которые при использовании механизма страничной адресации могут отображаться до 64 Кбайт виртуальной памяти каждой задачи. Режим виртуального 86 является особым состоянием задачи защищенного режима, в котором микропроцессор функционирует как 86, но с возможностью использования 32 разрядных адресов и операндов. Защищенный режим предназначен для обеспечения независимости выполнения нескольких задач, что подразумевает защиту ресурсов одной задачи от возможного воздействия другой. Основным защищаемым ресурсом является память, в которой хранятся коды, данные, и различные системные таблицы. Защищать требуется и совместно используемую аппаратуру обращение, к которой обычно происходит через операцию ввода вывода и прерывания. Защита памяти основана на использовании сегментации.
Сегмент _ это блок адресного пространства памяти определенного назначения. К элементам сегмента возможно обращение с помощью различных инструкций использующих разные режимы адресации для формирования адреса в пределах сегмента. Сегменты выделяются операционной системой, но в реальном режиме любая задача может переопределить значение сегментных регистров, задающих положение сегмента в пространстве памяти. В защищенном режиме прикладная программа может использовать только разрешенное для нее сегменты, выбирая их с помощью селекторов через предварительно сформулированные таблицы дескрипторов сегментов.
Селекторы _ это 16 битные указатели, загруженные в сегментные регистры.
Дескрипторы _ это структуры данных используемые для определения свойств программных элементов (сегментов, вентилей и таблиц). Дескриптор определяет положение в памяти размер занимаемой им области элемента (лимит), его назначение и характеристики защиты. Защита памяти с помощью сегментации не позволяет:

  • использовать сегменты не по назначению;
  • нарушать права доступа;
  • адресоваться к элементам выходящим за лимит сегмента;
  • изменять содержимое таблиц дескрипторов, т.е. параметров сегмента задачам без достаточных привилегий.
Защищенный режим предоставляет средства переключения задач состояния каждой задачи, т.е. значения всех связей с ней регистров может быть сохранено в специальном сегменте состояния задачи (TSS) на который указывает селектор в регистре задачи. При переключении задач достаточно загрузить новый селектор в TR и состояние предусматривающей задачи автоматически сохраняется в ее TSS. А в процессор загружается состояние новой, возможно и ранее прерванной задачи, и начнется ее выполнение. 4 уровневая иерархическая система привилегий предназначена для управления использованием привилегированных инструкций и доступом к дескрипторам. Нулевой уровень соответствует неограниченным возможностям доступа и отводится для ядра операционной системы. Уровень 3 имеет самые ограниченные права и предоставляется прикладным задачам. Сервисы, предоставляемые задачам могут находиться на разных уровнях привилегий. Передача управления между задачами контролируется вентилями, проверяющими правильность использования уровня привилегий. Через вентили задачи могут получить доступ только к разрешенным им сервисам других сегментов. Уровни привилегий относятся к дескрипторам, селекторам и задачам. Кроме того, в регистре флагов имеется поле привилегий ввода вывода, с помощью которого обеспечивается управление доступом к инструкциям ввода вывода и управление флагом прерываний. Дескрипторы и привилегии являются основой системы защиты. Дескрипторы определяют структуры элементов без, которых невозможно их использование, а привилегии определяют возможность доступа к дескрипторам и выполнение привилегированных инструкций. Любое нарушение защиты приводит к возникновению специальных исключений обрабатываемых ядром операционной системы.
Механизм виртуальной памяти позволяет любой задаче использовать логическое адресное пространство размером до 16К сегментов по 4 Гбайта. Для этого каждый сегмент в своем дескрипторе имеет специальный бит, который указывает на присутствие данного сегмента в оперативной памяти в текущий момент времени. Не используемый сегмент может быть выгружен из оперативной во внешнюю память, о чем делается пометка в его дескрипторе. На освободившееся место из внешней памяти может восстановиться содержимое другого сегмента и в его дескрипторе делается пометка о присутствии. При обращении задачи к отсутствующему сегменту микропроцессор вырабатывает соответствующее исключение обработчик, которого и заведует виртуальной памятью в операционной системе. После свопинга страницы или сегмента выполнение задачи продолжается. Поэтому виртуализация памяти для прикладных задач прозрачна.

Дескрипторы

Дескрипторы имеют 8 байтный формат, назначение определяется полями байта управления доступа. Два стартовых байта содержат расширение полей базового адреса и лимита, бит дробности G определяющий в каких единицах задан лимит (0 в байтах, 1 в страницах по 4К). Дескрипторы сегментов кода и данных определяют базовый адрес, размер сегмента, права доступа (чтение, чтение/запись, только исполнение кода или исполнение/чтение), а для систем с виртуальной памятью еще и присутствие сегментов физической памяти. В байте управления доступом в этих дескрипторах бит S=1, бит Р присутствие в памяти, биты DPL— уровень привилегий сегмента, бит А — обращения, бит Е — определяет тип сегмента данных или кода, свойства сегмента определяет поле TYPE. В этом поле бит ED контролируемое направления задает расширение вверх, т.е. смещение не должно превышать значение лимита, или расширение вниз (для стека, у которого смещение должно превышать значение лимита). Бит В в предпоследнем байте дескриптора сегмента стека определяет разрядность используемого указателя стека. Бит WQ разрешение или запрет записи данных в сегмент. В сегмент кода запись невозможна, лимит указывает на его последний байт, а биты поля типа имеют следующие назначения: бит С _ подчиненность, при С=1 код может исполняться если текущий уровень привилегий CPL не ниже уровня привилегий дескриптора; DPL при С=0 управление к данному сегменту передается если DPL=CPL; бит R _ это разрешение или запрет чтения сегмента, запись в сегмент кода возможна только через псевдоним, т.е. сегмент данных с разрешенной записью имеющий те же значения базы и лимита; бит D в предпоследнем байте определяет разрядность адресов и данных по умолчанию.
Системные сегменты предназначены для хранения LDT и TSS. Их дескрипторы определяют базовый адрес, лимит от 1 до 64Кбайт, права доступа и присутствие сегментов физической памяти. В байте управления доступом байт S у них равен 0. Бит Р определяет действительность или недействительность данного сегмента. Поле DPL используется только в дескрипторах TSS. Поле типа определяет тип сегмента 2 _ LDT, 9 _ доступный TSS, В _ занятый TSS. Межсегментная передача управления непосредственно (командами JMP, CALL, INT, RET и IRET) возможно только к сегментам кода с тем же уровнем привилегий либо к подчиненным сегментам, уровень привилегий которых выше чем CPL (при этом CPL не изменяется). Для переходов с изменение уровней привилегий используются вентили иногда называемые шлюзами. Для каждого способа косвенной передачи управления имеются соответствующие вентили, их использование позволяет микропроцессору автоматически выполнять контроль защиты. Вентили вызова используются для вызова процедур со сменой уровня привилегий. Вентили задач используются для переключения задач. Вентили прерываний и ловушек определяют процедуру обслуживания прерываний. Вентили вызова позволяют автоматически копировать заданное число слов из старого стека в новый. Вентили прерываний отличаются от вентилей ловушек только тем, что они запрещают прерывания сбрасывая IF, а вентили ловушек не запрещают. Для каждого типа вентилей используются соответствующие дескрипторы вентилей.

Привилегии

В защищенном режиме имеется 4-уровневая система привилегий, которая управляет использованием привилегированных инструкций и доступом к дескрипторам. Уровни привилегий нумеруются от 0 до 3, нулевой имеет высшие привилегии. Уровни привилегий обеспечивают защиту задач изолируемых друг от друга локальными таблицами дескрипторов. Программы, операционные системы, обработчики прерываний и другое системное обеспечение могут включаться в виртуальное адресное пространство каждой задачи и защищаться системой привилегий. Каждая часть системы работает на своем уровне привилегий. Задачи, дескрипторы и селекторы имеют свои атрибуты привилегий. Привилегии задач действуют на выполнение инструкций и использование дескрипторов. Текущий уровень привилегий и задачи CPL определяются двумя младшими битами регистра CS, и может изменяться только при передаче управления к новому сегменту через дескриптор вентиля. Привилегии дескриптора задаются полем DPL байта управления доступом. DPL определяет наименьший уровень привилегий с которым возможен доступ к данному дескриптору. Привилегии селектора задаются полем RPL т.е. двумя младшими битами селектора. С помощью RPL можно урезать эффективный уровень привилегий EPL, который определяется как максимальное арифметическое из значений CPL и RPL. Контроль доступа к сегментным данным производится при исполнении команд загрузки селекторов в SS, DS, ES, FS и GS. Для получения доступа эффективный уровень привилегий EPL должен быть EPL DPL. Контроль типов и привилегий при передаче управления производится при загрузке селектора в регистр CS. Тип дескриптора на который ссылается данный селектор должен соответствовать выполняемой инструкции. Нарушение типа порождает исключение 13. Привилегии и битовая карта разрешения ввода вывода и управляет флагом прерываний IF. Уровень привилегий ввода вывода определяется полем IOPL регистра флагов. Значение IOPL можно изменить только при CPL=0.

Защита

Защита микропроцессора предназначена для предотвращения несанкционированного выполнения критических инструкций: команды HLT, которая останавливает микропроцессор и команд влияющих на сегменты кода и данных.
Механизмы защиты делятся на 3 группы:

  1. ограничение использования сегментов, например, запрет записи в только читаемый сегмент данных. Доступность использования только сегментов дескрипторы которых описаны в GDT и LDT;
  2. ограничение доступа к сегментам через правила привилегий;
  3. выделение привилегированных инструкций или операций, которые можно выполнять только при определенных уровнях CPL и IOPL.
Проверки, порождающие исключения можно тоже разделить на 3 группы:
  1. проверка при загрузке сегментных регистров;
  2. проверка ссылок операндов;
  3. проверка привилегий инструкций.
Для того, чтобы задачи не нарывались на срабатывание защиты, в систему команд введены специальные инструкции тестирования указателей. Они позволяют быстро удостовериться в возможности использования селектора или сегмента без риска порождения исключения.

Переключение задач

Для многозадачных и многопользовательских операционных систем важна способность микропроцессора к быстрому переключению выполняемых задач. Операция переключения задач сохраняет состояние микропроцессора и связь с предыдущей задачей, загружает состояние новой задачи и начинает ее выполнение. Переключение задач выполняется по инструкции межсегментного перехода JMP или вызова CALL ссылающейся на сегмент состояния задачи TSS или дескриптор вентиля задачи в GDT или LDT. Переключение задач может происходить также по операциям и программным прерываниям и исключениям, если соответствующий элемент в IDT является дескриптором вентиля задачи. Дескриптор TSS указывает на сегмент, содержащий полное состояние микропроцессора, а дескриптор вентиля задачи содержит селектор указывающий на дескриптор TSS. Для возврата управления вызвавшей текущую или ей прерванной используется задачи инструкция IRET. Каждая задача должна иметь связанный с ней TSS. В формате TSS содержатся образы регистров микропроцессора, раздельные указатели стеков для уровней привилегий 0, 1, 2., и обратную ссылку на селектор TSS вызвавшей задачи. Кроме того, в TSS содержится битовая карта разрешения ввода вывода и бит отладочной ловушки Т. Карта разрешения ввода вывода расположена в конце TSS и имеет по одному биту на каждый адрес портов ввода вывода. Разрешению обращения соответствует единичное значение бита. Текущий TSS идентифицируется регистром задачи TR в нем содержится селектор, ссылающийся на дескриптор текущего TSS. Смена контекста сопроцессора при переключении задач автоматически не производится, однако микропроцессор обнаруживает первое использование сопроцессора после переключения задач и вырабатывает исключение 7, обработчик которого сам определяет, необходима ли смена контекста.

Страничное управление памятью

Страничное управление памятью является дополнительным средством для организации виртуальной памяти. Страницы не имеют прямой связи с логической структурой данных или программ. Селекторы можно рассматривать как логические имена модулей кодов и данных, страницы же представляют части этих модулей. Учитывая обычные свойства локальности кода и ссылок на данные в оперативной памяти в каждый момент времени надо хранить только небольшие части сегментов необходимые активным задачам. Эту возможность и обеспечивает страничное управление памятью.
Механизм страничного управления использует 2 уровневую табличную трансляцию линейного адреса в физический. Механизм имеет 3 части: каталог страниц, таблицы страниц и собственно страницы.
Регистр CR3 хранит физический адрес каталога страниц. Каталог страниц в 4 Кбайта имеет 1024 строки. Каждая строка содержит 20 старших бит адреса таблицы следующего уровня и признаки этой страницы. Каждая таблица страниц имеет 1024 строки аналогичного формата, но эти строки содержат базовый физический адрес и атрибуты самих страниц. Индексом поиска в каталоге является 10 старших бит линейного адреса, а индексом поиска в таблице является 12-21 биты линейного адреса. Физический адрес собирается из адреса страницы взятого из таблицы и младших 12 бит линейного адреса. Механизм защиты страниц 2 уровня привилегий: пользователь и супервизор. Пользователю соответствует уровень привилегий 3, супервизору уровни 0, 1 и 2. Обращение при каждой операции при доступе к памяти через 2 таблицы расположенные в памяти существенно снижает производительность микропроцессора. Для предотвращения этого замедления существует буфер ассоциативной трансляции TLB для хранения интенсивно используемы строк таблицы. Он представляет собой 4-канальную наборно-ассоциативную КЭШ память на 32 строки таблицы трансляции. Микропроцессоры Pentium и старше позволяют оперировать страницами размером в 4 Мбайта.

Режим виртуального 86 (V86)

Этот режим является особым состоянием задачи защищенного режима. В нем работает защита и механизм страничной переадресации. Основным различием реального и защищенного режимов является интерпретация сегментных регистров. В режиме V86 для получения линейного адреса содержимое сегментных регистров сдвигается на 4 разряда влево и суммируется с эффективным адресом. Один Мбайт адресуемого таким образом пространство с памятью страничной трансляции может отображаться в любую область 4 Гбайт физической памяти. Все программы, выполняемые в режиме V86, имеют уровень привилегий 3. Поэтому программы V86 выполняются со всеми проверками защиты. Прерывание V86 для полной эмуляции машины на микропроцессоре 86 обрабатывается особым образом. Все прерывания и исключения влекут собой смену уровня привилегий обратно к уровню операционной системы защищенного режима. Эта операционная система может распознать по образу регистра флагов в стеке, что прерывание пришло из V86. Далее операционная система может либо обработать это прерывание самостоятельно либо переслать его к операционной системе реального режима работающей в V86. В конечном итоге операционная система защищенного режима может эмулировать окружение обычной 86 машины. Прозрачно для приложения работающего в V86. Вход в режим V86 возможен либо выполнением инструкций IRET в 32 битном режиме, либо переключением задач на задачу, у которой в TSS образ регистра флагов имеет установленный в единицу бит VM. Выход из режима V86 возможен только при обработке прерывания. Если задача имеет CPL=0, то бит VM сбрасывается, и вызываемая задача будет выполняться в защищенном режиме. Если CPI>0, то генерируется исключение 13. Если прерывание вызывает переключение задач, то регистры с флагом VM сохраняются в TSS старой задачи. Новый режим устанавливается по TSS новой задачи. Значение VM не может изменяться никакими другими способами. Более того, его значение не читается.

skachivaem.ru

NGIO (система ввода-вывода нового поколения)

NGIO – новое поколение систем ввода-вывода. Новое поколение процессоров для PC.

Рылов В.Ю.

1. Система ввода-вывода NGIO.

NGIO (The Next Generation Input) – Output это принципиально новый подход в организации периферии персональных компьютеров предложенный и анонсированный фирмой Intel.

Для начала рассмотрим недостатки существующей на сегодняшний момент организации периферии компьютеров. Самой прогрессивной технологией, из реализованных на сегодняшний момент и широко используемой для основных периферийных устройств является шина PCI. Шина ISA уже уходит в прошлое, и даже спецификация PC-98 требует от персональных компьютеров отсутствия шины ISA как самого медленного элемента современных PC. Не смотря на многие хорошие качества шины PCI, она уже подошла к пределу своих физических и технологических перспектив.

Основными ограничениями и недостатками PCI являются следующие свойства:

1. Max пропускная способность около 133 Мб/сек. При частоте шины 33 Мгц. (Вариант на 66 Мгц широкого распространения не получил).

2. Все устройства имеют прямой доступ к первым 64Мб оперативной памяти, и поэтому существует опасность нарушения целостности системы при использовании некорректно написанных драйверов.

3. Шина имеет слотовую организацию и, вследствие этого, накладывается ограничение на число подключенных устройств. Выход из строя одного устройства, как правило, блокирует работу компьютера. Нет возможности подключения устройств налету без отключения питания.

4. В каждый момент времени только одно устройство имеет доступ к шине.

NGIO предоставляет совершенно отличный подход к организации шины периферийных устройств. В основе этого подхода лежит не слотавая, а линковая организация интерфейса между устройствами ввода-вывода и адаптером каналов (Channel Adapter).

У каждого подключаемого устройства имеется TCA (Target Channel Adapter) который обеспечивает физический интерфейс между линком и устройством. Подключаемые устройства коммутируются посредством коммутаторов (Switch) с адаптером HCA (Host Channel Adapter) на компьютере. В HCA рефлизован высокоскоростной DMA контроллер который обеспечивает доставку данных собранных в пакеты от переферийных устройств в память и наоборот. При этом обеспечивается защита памяти, и гарантируется защищенность. Здесь можно провести аналогию с современными сетевыми проьоколами. Т.е. все данные собраны в пакеты размером до 4Gb в которых хранится информация о приемнике, получателе, команде, приоритете, контрольная сумма и т.п. При этом отпадает необходимость участия CPU в операциях ввода-вывода, и нет опасности захвата шины одним устройством.

Таким образом теперь отпадает неоюходимость в разделении устройствами шины т.к. все они имеют DMA доступ к памяти компьютера через TCA и HCA. На уровне приложений и драйверов появляется возможность создания виртуальных каналов, которые на аппаратном уровне будут коммутироваться через один или несколько линков.


С помощью технологии NGIO можно коммутировать устройства разных уровней сложности и типов, обладающие разной скоростью работы и пропускной способностью. Такими устройствами могут быть: всевозможные сетевые адаптеры (от Ethernet до Оптоволокна), SCSI и RAID контроллеры, LAN/WAN шлюзы и прочие.

Сложная организация коммутаторов (Switches) позволяет создовать довольно развитую, многослойную топологию коммутации множества устройств, с возможностью подключения нескольких компьютеров. При этом появляется возможность разделения системы питания устройств и компьютеров и появляется возможность подключения и отключения устройств налету. Также облегчается задача поиска и локализации неисправностей. Физическая организация линков становится независимой от переферийных устройств и драйверов, и, поэтому, остаются большие резервы в увеличении пропускной способности переферийной системы.

2. Новое поколение процессоров для PC.

Бурное развитие высокоточных технологий в микроэлектронике в последние годы было ознаменовано жесткой конкурентной борьбой ведущих производителей микропроцессорной техники для персональных компьютеров в лице фирм Intel, AMD, Cyrix. Прародителем современных микропроцессоров является процессор Pentium-Pro созданный фирмой Intel. В этом микропроцессоре впервые реализован высокоскоросной кэш второго уровня, внеочередное исполнение команд, RISC ядро. Но производство высокоскоросного кэша интегрированного в процессор и работающего на частоте 150-200 Мгц было очень дорогостоящим и сопряжено с большим процентом выбраковки, поэтому процессор P-Pro даже сейчас остается очень дорогим со стоимостью ~ $450. В качестве альтернативы и развития P-Pro фирма Intel выпустила процессор Pentium II с расширенным набором команд (MMX) и кэш памятью 2-го уровня размером 512 Кб выполненной на одной плате с ядром процессора и заключенным в картридж SECC. Кэш память нового процессора работала на частоте ½ частоты ядра для процессоров PII c ядром Klamath (233 — 300МГц) и на 1/3 частоты ядра для процессоров PII с ядром Deshutes (333 – 450 МГц). Себистоимость производства оказалась ниже чем у процессоров P-Pro, что позволило фирме Intel захватить рынок. В качестве замены P-Pro для высокопроизводительных серверных станций был создан процессор Intel PII Xeon c кэш памятью второго уровня 512Кб на частоте ядра выполненный в картридже SECC2 с частотами от 300МГц.

Основным конкурентом фирмы Intel в компьютерах среднего класса стали фирмы Cyrix и AMD. Процессор Cyrix M2 с технологией MMX является процессором 6-го поколения (Наличие внеочередного исполнения, переименования регистров, одновременного использования данных, 64Кб ассоциативного кэша 1-го уровня). Процессор AMD K6-2 с технологией MMX и 3Dnow! стал более успешным конкурентом и вытеснил процессоры Cyrix. (K6 присущи также все черты процессоров 6-го поколения, кроме этого в нем все инструкции x86 разбиваются на более мелкие RISC команды и выполняются в 7 операционных блоках). Основным недостатком процессоров М2 и К6 является неконвейеризированный математический сопроцессор, что и поставило их в невыгодное положение перед процессорами фирмы Intel. Кроме этого фирма AMD выпустила процессор K6-3 в котором интегрирован высокоскоросной кэш второго уровня размером 256 Кб работающий на частоте от 400Мгц. Для возврата позиций на рынке компьютеров среднего и нижнего классов фирма Intel выпустила дешовый вариант процессора PII , процессор Intel Celeron, отличающийся отсутствием кэша 2-го уровня, но зато хорошей “разгоняемостью”.

Ответом фирмы Intel на создание процессора K6-2 с технологией 3Dnow! стало создание и выпуск процессора Pentium III ( ядро Katmai, выполнен по технологии PII + добавлен новый набор команд KNI- Katmai New Instruction set, частота от 450 Мгц ).

Что же нас ждет в будущем на рынке микропроцессоров? Прежде всего хочется отметить новейшую разработку фирмы AMD процессор K7. При его создании активно использовался опыт создания процессора Alpha от фирмы Digital. Этот процессор будет иметь 128 Кб кэш 1-го уровня на частоте ядра (600 МГц), до 8Мб кэша L2 на частоте шины (200 Мгц), шина E6-V от процессора Alpha, конвейеризованный математический сопроцессор с 3-мя операционными блоками, Slot A, что позволяет говорить о его очевидном превосходстве над процессорами Intel. Ниже представлена сводная таблица характеристик современных процессоров.

Intel предпологает выпуск в будущем следующих процессороы:

Tanner: развитие серии Xeon, сначала появится 500 МГц версия, кэш L2 работать на частоте ядра и иметь емкость 512, 1024 или 2048 Кб, системная шина – 100 Мгц, технологический процесс — 0.25мкм.

Cascades: Cascades будет предназначен для использования в серверах и рабочих станциях. Первые версии будут иметь частоту не менее 600 МГц. В преспективе Cascades вряд ли заменит Tanner, вероятно, он станет его дешевой версией, т.к. будет оснащен только 256 Кб кэшем L2, но зато встроенным в корпус процессора и работающем на полной частоте ядра. Технологический процесс — 0.18 мкм; системная шина — 133 МГц.

Coppermine: Это ядро придет на смену Katmai. Главное отличие – использование технологического процесса 0.18 мкм, что даст возможность выпускать процессоры с более высокими внутренними частотами. Судя по всему, к большому сожалению, Coppermine будет иметь L2 кэш емкостью 512 Кб и работающего все так же, на половинной частоте ядра процессора.

mirznanii.com

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *