Операционные системы -вопросы теории

         

[Www acnc com] часто упоминаются



[www.acnc.com], часто упоминаются также дополнительные и комбинированные уровни RAID, в именовании которых общего согласия не достигнуто.

Впрочем, один дополнительный уровень, не упоминавшийся в статье [Gibson/Katz/Patterson 1988], практически везде понимается и именуется одинаково. Под RAID уровня 0 практически единогласно понимают простой стриппинг (stripping — дословно, разделение на полосы). Стриппинг, строго говоря, не является методом создания избыточных массивов, потому что он не предполагает избыточности: емкость результирующего логического диска равна сумме объемов физических дисков (Рисунок 9.40). Из-за этого RAID 0 не обсуждался в работе [Gibson/Katz/Patterson 1988].
RAID уровня 1 известен также как зеркалирование (mirroring). При зеркали-ровании на каждый из дисков записывается полная копия данных (Рисунок 9.41). Обычно в зеркальном режиме используется не более двух дисков. Зеркалирование обеспечивает некоторое падение производительности (обычно все-таки менее, чем двукратное), но гарантирует работоспособность системы при отказе любого из дисков. Оба эти приема широко применяются па практике, обычно с небольшим количеством дисков, не более двух, реже, трех. Они не требуют значительных вычислительных ресурсов и потому обычно реализуются программно, драйвером диска или файловой системы.
RAID уровня 2 предлагает снабжение блоков данных на дисках кодом Хэмминга (см. разд. Контрольные суммы) и размещение этого кода на отдельном диске массива. Эта технология имеет смысл, если контроллеры дисков не хранят код восстановления ошибок в собственных заголовках секторов. Поскольку современные диски практически без исключения используют восстанавливающее кодирование и динамическое переназначение дефектных секторов, RAID 2 практически не применяется.







[Www microchip com PICMicro]



[www.microchip.com PICMicro].

USART может использоваться либо как полнодуплексный асинхронный порт с форматом кадра, совместимым с RS232, либо как полудуплексный синхронный стробируемый порт. Устройство состоит из приемника (receiver), передатчика (transmitter) и генератора тактовой частоты (baud rate generator) (Рисунок 9.10).









[Www microchip com PICMicro] содержит



[www.microchip.com PICMicro] содержит таблицу, по которой можно рассчитать коэффициент деления, чтобы из типичных тактовых частот процессора получить (иногда с определенной ошибкой) стандартные частоты RS232.

Счетчик генератора тактовой частоты программно недоступен, а начальное значение этого счетчика (оно же коэффициент деления) задается 8-разрядным регистром SPBRG. USART использует одну и ту же тактовую частоту и для приемника, и для передатчика. При синхронной работе в режиме ведомого встроенный генератор тактовой частоты не используется вообще.
Приемник и передатчик во многом аналогичны по структуре и имеют по два программно-доступных 8-разрядных регистра. Первый регистр называется регистром управления и статуса (status and control register), а второй — регистром данных. Значения битов управляющих регистров приемника и передатчика приведены в табл. 9.1 и 9.2. И приемник, и передатчик имеют также программно-недоступный сдвиговый регистр, называемый TSR (Transmit Shift Register) у передатчика и RSR (Receive Shift Register) у приемника.
При передаче значение регистра данных передатчика помещается в сдвиговый регистр и возможно расширяется девятым битом, который берется из бита TX9D управляющего регистра. Значение младшего бита выставляется на выходе ТХ микроконтроллера. Затем на каждом такте генератора регистр сдвигается на один бит — в результате получается последовательная передача бит кадра с заданной скоростью (Рисунок 9.11). Когда биты кончаются, передатчик устанавливает бит TRMT управляющего регистра и, если это требуется, генерирует прерывание по завершении передачи.
Приемник имеет несколько более сложное устройство. Значение входа RX анализируется не один раз за каждый такт генератора, а 16 раз и усредняется — благодаря этому значительно увеличивается помехоустойчивость (Рисунок 9.12). Кроме того, приемник USART имеет скрытый буферный регистр, в который помещается значение принятого байта, если регистр данных приемника еще не был прочитан с момента последнего приема (Рисунок 9.13).







[Www microchip com PICMicrol описывается



[www.microchip.com PICMicrol описывается встроенный контроллер жидкокристаллического дисплея микроконтроллера PIC.
 












[Www t13 org] и до сих пор является



[www.t13.org], и до сих пор является основным способом подключения жестких дисков к настольным компьютерам и иногда даже к маломощным серверам, причем не только на основе процессоров х86, но и PowerMac, SPARCStation и др.

Современные версии стандарта поддерживают обмен 16-разрядными данными (при нормальной отработке команды код ошибки не нужен, а прекомпенсация современными контроллерами вообще не используется, поэтому для данных можно использовать регистры 0x1 FO и 0x1 F1, образующие при этом единый 16-разрядный регистр), автоидентификацию геометрии и других параметров жестких дисков, логическую адресацию блоков (LBA — Logical Block Addressing, когда регистры SN, CY и 4 младших бита он образуют линейный 28-битный адрес сектора), работу в режиме ПДП и передачу данных со скоростями до 60 Мбит/с [Гук 2000, citforum.ukrpak.net IDE, PC Guide IDE, www.t13.org].
Расширение протокола ATAPI (ATA Packet Interface) пакетный интерфейс ATA предусматривает также возможность управления недисковыми устройствами (CD-ROM, стриммерами, магнитооптическими дисками) путем передачи через регистр данных 12-байтовых блоков команд, аналогичных командам SCSI.
 











Битовые плоскости



Рисунок 9.29. Битовые плоскости


Большинство контроллеров включают в себя также более или менее сложную логику управления содержимым видеобуфера со стороны центрального процессора. Простейшим случаем такого управления является отображение видеобуфера на адресное пространство системной шины. Это, привлекательное во многих отношениях, решение не всегда применимо, например, если адресное пространство процессора слишком мало или плотно занято, либо устройство не подключается непосредственно ни к системной, ни к периферийной шине (например, контроллеры жидкокристаллических дисплеев, предназначенных для использования во встраиваемых приложениях, используют для общения с микропроцессором шину PC или нестандартные протоколы последовательных портов).
При простой нехватке адресного пространства нередко видеобуфер отображают на адресное пространство не целиком, а частями, банками. При этом контроллер должен иметь специальный регистр — селектор банка.
Более радикальное решение, применимое даже при подключении через последовательный порт, состоит в том, чтобы предоставить процессору два регистра — адрес в видеопамяти и регистр данных, соответствующий ячейке видеопамяти по этому адресу. Это решение можно считать вырожденным случаем банков видеопамяти, когда банк имеет размер один байт. При этом требуется всего два регистра в адресном пространстве ввода-вывода (этот метод редко применяется с видеобуферами объемом более 64 Кбайт), и доступ к видеобуферу замедляется минимум вдвое. При использовании последовательных шин и портов адрес и данные передаются последовательно. Многие графические контроллеры с такой организацией предоставляют различные способы доступа с автоинкрементом, позволяющие передать в буфер последовательность байтов без явного доступа к регистру адреса.
Контроллеры с битовыми плоскостями часто предоставляют групповые операции над байтами, кодирующими биты смежных пикселов.
Контроллеры, применяемые в современных персональных компьютерах и рабочих станциях, содержат более или менее сложные видеопроцессоры, способные без участия ЦПУ рисовать в видеобуфере различные графические примитивы, начиная от прямых линий и окружностей, и заканчивая проекциями и/или фотореалистичными изображениями трехмерных объектов, описываемых языком OpenGL.
Видеоконтроллеры представляют собой довольно сложные устройства. Подробные описания современных видеоконтроллеров можно найти во многих доступных книгах, например в [Гук 2000]. В документе



Обмен данными осуществляется кадрами, состоящими



Рисунок 9.9. Диаграмма напряжений RS232


Обмен данными осуществляется кадрами, состоящими из стартового бита, семи или восьми битов данных (младший бит передается первым), возможно — контрольного бита четности (см. разд. Контрольные суммы), и одного или двух стоповых битов. Игнорируя ошибки четности или вообще не проверяя четность, можно использовать этот бит для передачи данных, и получить, таким образом, девять битов данных в одном кадре.
Минимальная скорость передачи составляет 300 бит/с, последующие допустимые скорости получаются удвоением предыдущей— 600 бит/с, 1200, 2400 и т.д. Современные реализации RS232 поддерживают скорости 115 200 бит/с и более. Скорость и вариации формата кадра определяются настройками приемника и передатчика. Необходимо, чтобы у соединенных портом устройств эти настройки совпадали, однако протокол сам по себе не предоставляет средств для их согласования.
Кроме линий приема, передачи, нуля и питания спецификация RS232 предусматривает ряд дополнительных сигналов, в просторечии называемых модемными линиями— признак несущей, разрешение передачи данных (очисткой этого сигнала приемник может сигнализировать передатчику, что он не успевает обрабатывать поступающие данные) и др. Эти сигналы не должны обязательно поддерживаться всеми устройствами и используются, главным образом, акустическими модемами, откуда и происходит название. Полная спецификация при использовании 25-контактного разъема предусматривает также возможность синхронной передачи данных с отдельными стробирующими сигналами, но основная масса реализаций RS232 этого не поддерживает.
Протокол RS232 весьма прост и легко может быть реализован программными средствами с использованием двух бит порта ввода-вывода (пример 9.1) — впрочем, в этом случае потребуется еще внешняя микросхема приемопередатчика, преобразующая TTL-совместимые напряжения в диапазон напряжений RS232. Однако использующие этот протокол, применяются очень широко, и многие модели микроконтроллеров и практически все комплекты вспомогательных микросхем для микропроцессоров предлагают аппаратные реализации этого стандарта.


Диск с переменным количеством секторов на дорожках



Рисунок 9.36. Диск с переменным количеством секторов на дорожках


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

электродвигателя шпинделя; шагового двигателя подачи головки; аналоговых каскадов управления магнитной головкой.

Устройство, управляющее всем этим, называется дисковым контроллером и состоит из кодеров и декодеров используемой схемы модуляции, логики формирующей заголовок сектора при записи или проверяющей его целостность при считывании, буфера данных сектора и сдвигового регистра, подключенного к кодеру и декодеру управления головкой (Рисунок 9.37). Современные контроллеры обычно содержат более сложную логику, обеспечивающую передачу данных в основное ОЗУ компьютера в режиме ПДП (в том числе и распределение/сборку (scatter/gather) — передачу одного сектора или группы секторов в несмежные участки памяти), очередь обслуживаемых запросов, опережающее считывание, отложенную запись и кэширование данных, переадресацию дефектных секторов и др.



Дисковые массивы



Дисковые массивы

У тебя, Федот, жена, хоть умна, а все ж одна!
А соткать такое за ночь — их дивизия нужна!
Л. Филатов

Еще один прием оптимизация производительности дисковых накопителей — это объединение нескольких физических дисков в один большой логический диск. При таком объединении некоторые диски могут передавать данные, в то время, как другие позиционируют блок головок или ждут подхода нужного сектора к головке. Дисковые массивы выгодны не только с точки зрения производительности, но и повышают единичную емкость запоминающего устройства — это может быть, например, полезно для хранения крупных неделимых объектов, таких, как таблицы реляционной СУБД.
Следует учесть, что объединение дисков приводит к резкому снижению наработки массива на отказ: вероятности независимых событий складываются поэтому вероятность отказа любого из дисков массива равна сумме вероятностей отказа одиночного диска. Для компенсации или устранения этого недостатка данные в дисковых массивах обычно хранятся с избыточностью. Общее название всех технологий объединения дисков — RAID (Redundant Irray of Inexpensive Disks — избыточный массив недорогих дисков). Этот термин был предложен в работе [Gibson/Katz/Patterson I988], в которой проведен анализ различных технологий создания дисковых массивов с точки зрения их производительности и надежности и было рассмотрено пять возможных способов размещения избыточных данных. Предложенная авторами статьи нумерация этих технологий без ссылки на источник используется в самых разнообразных публикациях в форме RAID уровня X. В современных публикациях, например



Дорожка диска отформатированного с чередованием



Рисунок 9.38. Дорожка диска, отформатированного с чередованием


Благодаря чередованию, если ЦПУ сформирует команду чтения следующего сектора немгновенно после завершения передачи предыдущего (на практике, это всегда происходит немгновенно), не придется ждать следующего оборота диска. Впрочем, если коэффициент чередования окажется слишком большим, ждать подхода следующего сектора все-таки придется. В годы молодости автора подбор оптимальных параметров чередования для жестких дисков был почти столь же популярным развлечением, каким ныне является "разгон" (подбор частот процессора и системной и периферийной шин, которые выше паспортных, но обеспечивают более или менее устойчивую работу системы).
Ряд файловых систем, разработанных в 80-е годы, реализовали свои собственные схемы чередования, размещая последовательные блоки файлов в чередующиеся физические секторы. Современные дисковые контроллеры предоставляют логику опережающего считывания и отложенной записи, которые снижают потребность в таких приемах. Кроме того, фабричное форматирование жестких дисков обычно сразу осуществляется с оптимальным чередованием.
Для сокращения времени подачи головки нередко используют сортировку запросов по номеру дорожки. В [Дейтел 1987) приводится анализ нескольких алгоритмов такой сортировки. В наше время шире всего используется элеваторная сортировка (в |Дейтел 1987] она называется SCAN). При отсортированных в соответствии с этим алгоритмом запросах, блок головок начинает от внутренней дорожки (или, точнее, от запроса, ближайшего к этой дорожке) и движется к наружной, исполняя последовательные запросы так, чтобы направление движения головки не изменялось (Рисунок 9.39). Запросы, поступающие на уже пройденные дорожки, откладываются на обратный проход. Достигнув внешней дорожки (или, точнее, самой внешней из дорожек, на которую есть запрос), блок головок меняет направление движения.



Доступ к внешним устройствам



Доступ к внешним устройствам

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



Фиксированная и географическая адресация



Рисунок 9.2. Фиксированная и географическая адресация


Географическая адресация обладает свойством, которое на первый взгляд кажется противоестественным: перемещение платы устройства в другой разъем приводит к необходимости переконфигурации ОС (а в некоторых случаях, например, если перемещенная плата была контроллером загрузочного диска, а вторичный загрузчик или процедура инициализации ядра недостаточно сообразительны, может даже привести к ошибкам при загрузке). Однако этот способ распределения адресного пространства удобен тем. тго исключает возможность конфликта адресов между устройствами разных производителей или между двумя однотипными устройствами (с этой проблемой должен быть знаком каждый, кто пытался одновременно установить в компьютер сетевую и звуковую карты конструктива ISA). Большинство периферийных шин современных мини- и микрокомпьютеров, такие, как PCI, S-Bus и др., реализуют географическую адресацию.
Многие современные конструктивы требуют, чтобы кроме регистров управления и данных устройства имели также конфигурационные регистры, через обращение к которым ОС может получить информацию об устройстве: фирму-изготовителя, модель, версию, количество регистров и т. д. Наличие таких регистров позволяет ОС без вмешательства (или с минимальным вмешательством) со стороны администратора определить установленное в системе оборудование и автоматически подгрузить соответствующие управляющие модули.

 




Гибридная топология



Рисунок 9.19. Гибридная топология


Во всех перечисленных случаях сохраняется логическая шинная топология: каждый потенциальный задатчик шины может обращаться по адресу к любому другому устройству, поэтому разработчикам программного обеспечения не всегда интересны детали реализации физического подключения устройств.
Шины (как физические, так и логические) находят широчайшее применение в вычислительной технике. В частности, один из важнейших сетевых протоколов канального уровня, Ethernet, начинал свою карьеру как последовательная шина с совмещением синхросигнала и данных, да и современные реализации этого протокола, хотя физически и представляют собой коммутируемую или, все реже и реже гибридную сеть, с логической точки зрения по-прежнему являются шиной.
Связь центральных процессоров с банками ОЗУ и внешними устройствами в подавляющем большинстве современных компьютеров осуществляется параллельными стробируемыми шинами.
В вычислительных системах общего назначения чаще всего используется топология с двумя или более шинами. Процессоры и память связаны системной шиной. К этой шине также присоединены один или несколько адаптеров периферийных шин, к которым и подключаются внешние устройства (Рисунок 9.20). Основное преимущество такого решения состоит в том, что одни и те же периферийные устройства могут использоваться в вычислительных системах с различными системными шинами. Высокоскоростные устройства, например дисковые адаптеры FC-AL у серверов или графические контроллеры у персональных компьютеров, иногда подсоединяются к системной шине непосредственно.



Электроннолучевая трубка



Рисунок 9.24. Электронно-лучевая трубка


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



Элеваторная сортировка



Рисунок 9.39. Элеваторная сортировка


Сортировке подвергаются только запросы на чтение. По причинам, которые мы в полной мере поймем в главе 11, запросы на запись практически никогда не переупорядочиваются.

 




Коммутатор с несколькими внутренними шинами



Рисунок 9.18. Коммутатор с несколькими внутренними шинами


Таким образом, коммутируемая магистраль позволяет уменьшить производительности, порождаемые коллизиями, и повысить реальную пропускную способность магистрали. Однако коммутируемая магистраль значительно повышает общую стоимость системы и далеко не всегда оправдана этой точки зрения.
Применяются также гибридные топологии, когда все или некоторые устройства подключаются к коммутатору полудуплексным портом или коротки участком шины — при этом возможны локальные коллизии, но их гораздо меньше, чем при единой шине. Гибридная топология позволяет использовать устройства с одними и теми же приемопередатчиками как в обычной шинной, так и в коммутируемой топологии (Рисунок 9.19). В частности, именно такую гибридную топологию имеют описанные в разд. Многопроцессорные архитектуры многопроцессорные системы IBM NUMA-Q и SGI Origin — процессоры и память подключаются к локальной шине процессорного модуля, а сами модули соединяются коммутируемой сетью.
Гибридная топология также позволяет снизить стоимость системы по сравнению с полностью коммутируемой сетью — коммутаторы можно устанавливать только в тех участках шины, где расстояния или большое количество коллизий становятся проблемой. В таких сетях часто используются двухпортовые коммутаторы, называемые мостами (bridge). Так же называются и адаптеры, используемые для соединения двух шин с разными протоколами.



Конфигурационные и рабочие регистры устройства PCI



Рисунок 9.23. Конфигурационные и рабочие регистры устройства PCI


Современные спецификации SCSI по структуре аналогичны спецификациям сетевых протоколов и состоят из трех уровней: команд, протокола и соединений. Уровень команд определяет формат и семантику команд и ответов на них, т. е. приблизительно соответствует тому, что в сетевых протоколах называется прикладным уровнем. Уровень протокола определяет способ передачи команд и ответов и соответствует канальному уровню сетевых протоколов. И, наконец, уровень соединений определяет физическую реализацию линий передачи данных (способ кодирования данных, допустимые токи и напряжения, конструкцию разъемов и т. д.), т. е. соответствует физическому уровню [



Контроллер гибких дисков ДВК



Контроллер гибких дисков ДВК

В качестве простейшего дискового контроллера рассмотрим микросхему К1801ВП1-097 [МикроЭВМ 1988] (Эта микросхема является советским функциональным аналогом микросхемы контроллера гибких магнитных дисков, разработанной фирмой DEC для использования в мини- и микрокомпьютерах семейства PDP-11. К сожалению, автору не удалось найти маркировку оригинальной микросхемы и ссылку на документацию о ней).
Микросхема допускает подключение четырех приводов 5-дюймовых гибких дисков и содержит в себе порты управления основным и шаговым электродвигателями привода, сдвиговый регистр, модулятор и демодулятор МФМ, логику обнаружения маркеров, генератор циклической контрольной суммы и интерфейс системной шины Q-Bus. У микросхемы есть два 16-разрядных регистра, регистр управления и регистр данных. Описание битов регистра управления приведено в табл. 9.6.







Более сложный контроллер ST506 был



Контроллер жестких дисков ST506

Более сложный контроллер ST506 был разработан фирмой Western Digital в конце 70-х годов прошлого века для управления жесткими дисками, подключаемыми к микропроцессорным системам. Этот контроллер и его усовершенствованная версия, ST412, широко применялись для подключения жестких дисков к IBM PC и совместимых с ними компьютерах [citforum.ukrpak.net IDE, Гук 2000, PC Guide IDE].
Контроллер ST506 допускал подключение двух жестких дисков емкостью до 40МЬ, использующих модифицированную частотную модуляцию, а более поздние версии контроллера — групповую модуляцию RLL. Как и описанный выше КМД, контроллер содержал логику управления мотором шпинделя и подачей головок, буфер для одного сектора и схемы модуляции и демодуляции МЧМ. Диски присоединялись к контроллеру двумя плоскими кабелями: один, с 34-мя проводами, использовался для передачи сигналов управления двигателями, а второй, 20-проводной — для передачи модулированных сигналов МЧМ.
Центральному процессору контроллер ST506 доступен в виде двух блоков регистров, управляющего и командного. Блок управляющих регистров размещается по адресам Ox3F4-Ox3F7, а блок командных— по адресам 1FO-1F7 (табл. 9.8).
Управляющие регистры используются для доступа к регистрам данных и статуса без подачи контроллеру сигнала о том, что регистр прочитан (смысл этого станет ясен далее). Пожалуй, единственный самостоятельно полезный бит в этих регистрах управляет разрешением прерываний от контроллера. Основная работа с контроллером происходит через блок из восьми командных регистров, один из которых является регистром данных.
При исполнении команды записи контроллер подает головку к дорожке, указанной регистрами CY и DK, генерирует прерывание и выставляет сигнал DRQ (табл. 9.9), сигнализируя процессору, что готов принять данные. Затем процессор производит 512 операций записи в порт данных, заполняя буфер. Контроллер выполняет запись, генерирует прерывание и, если счетчик секторов еще не сравнялся с нулем, увеличивает номер сектора и снова выставляет сигнал DRQ.
Операция чтения выполняется аналогично, с той лишь разницей, что контроллер сначала считывает сектор, и лишь потом выставляет DRQ. Циклы чтения и записи регистра данных, таким образом, приводят к увеличению счетчика буфера. Набор команд контроллера приведен в табл. 9.10.

Контроллеры жестких дисков ESDI IDE EIDE



Контроллеры жестких дисков ESDI, IDE, EIDE

Дальнейшее совершенствование ST506 шло в направлении переноса функции контроллера на сам жесткий диск. Первым шагом стал интерфейс ESDI, предложенный фирмой IBM в 1985 году. В ESDI модулирование сигнала выполнялось не контроллером, а платой, установленной на диске. Это позволило, во-первых, использовать жесткие диски со схемами модуляции, отличными от МЧМ и RLL и, во-вторых, увеличить допустимую длину кабелей до трех метров. Контроллер ESDI по регистрам и набору команд был полностью совместим с ST506/412, но обеспечивал работу с дисками большей емкости и большей производительности.
Следующий, более радикальный, шаг был сделан в следующем году фирмами Western Digital и Compaq, предложившими перенести весь контроллер на жесткий диск. Соответствующий конструктив был назван IDE (Integrated Drive Electronics — интегрированная на приводе электроника).
40-жильный плоский кабель IDE представляет собой, фактически, расширение шин адреса и данных ISA. По нему передаются 16 бит данных и пять линий адреса. Первые две линии адреса выбирают группу регистров — контрольный или командный блок регистров, расположенных по тем же адресам шины ISA, что и соответствующие регистры ST506. Последние три линии выбирают один из регистров соответствующей группы и через линии данных кабеля подключают его к шине данных ISA.
IDE, как и ST506, допускает подключение двух жестких дисков, Каждый из дисков имеет свой контроллер и свои блоки регистров. Когда ЦПУ производит запись в эти регистры, она происходит в регистры обоих контроллеров. Однако на запросы чтения и, тем более, исполнения команды откликается только тот контроллер, который выбран регистром он. Эта весьма своеобразная архитектура позволила сохранить полную программную совместимость с контроллером ST506 при полном же изменении конструктива. Основным недостатком этой архитектуры является тот печальный факт, что пока один диск отрабатывает команду или передает данные, обращения ко второму диску невозможны.
IDE несколько позднее получил статус стандарта ANSI под названием ATA (AT Attachment— [интерфейс] присоединения к IBM PC/AT)







Мост системной шины



Рисунок 9.21. Мост системной шины


PCI предусматривает как монтаж устройств на материнскую плату системы, так и их исполнение в виде плат расширения. Шина допускает подключение не более 4 устройств. По исходным спецификациям, не более трех из них может подключаться через внешние разъемы, однако это не мешает многим поставщикам оборудования изготавливать платы с четырьмя внешними разъемами без мостов. Предусмотренный стандартом способ обхода указанного ограничения состоит в установке в системе нескольких адаптеров PCI, через собственные мосты системной шины или через PCI-to-PCI bridge. Допустимы также мосты, подключающие другие периферийные шины, например ISA, USB и т. д (Рисунок 9.22).
Каждое устройство на шине обязано иметь набор конфигурационных регистров, адресуемых географически (по номерам шины и разъема). Эти регистры содержат информацию об изготовителе и модели устройства. Кроме того, устройство может иметь до шести базовых адресных регистров, указывающих на связанные с устройством адресуемые объекты — блоки регистров ввода-вывода и отображенные на адреса ОЗУ буферы (Рисунок 9.23). Адреса этих объектов определяются динамически во время инициализации системы загрузочным монитором. Как правило, эти адреса также распределяются по географическому принципу.



Мосты PCItoPCI и PCItoISA



Рисунок 9.22. Мосты PCI-to-PCI и PCI-to-ISA


Устройство может работать в пассивном режиме (передавая данные по запросам процессоров) или через ПДП в режиме задатчика шины. Во втором случае мост системной шины преобразует выставляемые устройством адреса PCI в адреса системной шины. Современные спецификации шины (т. н. PCI64) допускают 32-разрядную адресацию для регистров устройств и 32- или 64-битную адресацию для отображенных в память буферов и при работе по ПДП.



Подключение внешнего устройства к шине



Рисунок 9.1. Подключение внешнего устройства к шине


Два основных подхода к адресации этих регистров — это отдельное адресное пространство ввода-вывода и отображенный в память ввод-вывод (memory-mapped I/O), когда память и регистры внешних устройств размещаются в одном адресном пространстве. В первом случае для обращения к регистрам Устройств используются специальные команды IN и OUT. Во втором случае Могут использоваться любые команды, способные работать с операндами в памяти. Как правило, даже в случае раздельных адресных пространств, для обмена данными с памятью и внешними устройствами процессор использу-ет одни и те же шины адреса и данных, но имеет дополнительный сигнал адресной шины, указывающий, какое из адресных пространств используется в данном конкретном цикле.
Любопытный гибридный подход, сочетающий преимущества обоих вышеназванных, предоставляют микропроцессоры с системой команд SPARC v9 У этих процессоров команды имеют поле, служащее селектором адресного пространства. Этот селектор, в частности, может использоваться для выбора адресного пространства памяти или ввода-вывода. Благодаря этому, с одной стороны, можно применять для работы с регистрами портов любые команды работы с памятью, как при отображенном в память вводе-выводе, и в то же время полностью задействовать адресное пространство памяти.
Два основных подхода к выделению адресов внешним устройствам — это фиксированная адресация, когда одно и то же устройство всегда имеет одни и те же адреса регистров, и географическая адресация, когда каждому разъему периферийной (или системной, если внешние устройства подключаются непосредственно к ней) шины соответствует свой диапазон адресов (Рисунок 9.2). Географически можно распределять не только адреса регистров, но и другие ресурсы — линии запроса прерывания, каналы ПДП.



ССIТТ V24 широко применяется для



Порт RS232

Протокол последовательного асинхронного обмена RS5232/ ССIТТ V24 широко применяется для подключения к компьютеру алфавитно-цифровых терминалов, низкоскоростных печатающих устройств, позиционных устройств ввода (мышей, планшетов), низкоскоростного телекоммуникационного оборудования и т.д., а иногда и для соединения компьютеров между собой, например, если более скоростное сетевое оборудование отсутствует или не может быть использовано.
Такие порты используются для передачи данных за пределы корпуса компьютера, поэтому кроме линии передачи данных предусмотрен также провод, передающий опорное нулевое напряжение, Вместо TTL-совместимых напряжений, RS232 использует в качестве 1 напряжения в диапазоне от -25 до -3 В, а в качестве 0 — соответственно, в диапазоне от +3 до +25 В (Рисунок 9.9).
RS232 предполагает двусторонний обмен данными. Для этой цели предусмотрено две линии данных — для приема и для передачи, обозначаемые ТХ и RX-В соответствии со стандартом, устройства делятся на два типа: "компьютеры и "терминалы". Различие между ними состоит в том, что "компьютер" передает данные по линии ТХ, а получает по линии RX, а "терминал" — наоборот. Для соединения двух "компьютеров" необходим специальный, так называемый нуль-модемный кабель, в котором провода ТХ и RX перекрещены. Любопытно, что стандартные порты IBM PC являются "терминалами", а не "компьютерами".

Порт ввода



Рисунок 9.4. Порт ввода


Разработчики микросхем часто совмещают входы портов ввода и выходы портов вывода, создавая таким образом комбинированное устройство — порт ввода-вывода. Такое устройство должно быть существенно сложнее, чем простая комбинация порта ввода и порта вывода. Если порт вывода пытается установить на определенном выходе высокое напряжение, а другое Устройство пытается установить низкое, в соответствии с законом Ома это приведет к возникновению электрического тока. Внутреннее сопротивление типичного мпкроконтроллерного порта составляет около 200 Ом. При разности напряжений в 5 В это соответствует упоминавшемуся выше предельно Допустимому току в 25 мА: таким образом, устройство с нулевым внутренним сопротивлением все-таки может выставить ноль, но попытка сделать это на нескольких линиях одновременно приведет к перегрузке схем питания контроллера. В любом случае, большие токи приводят к потерям энергии и разогреву схемы, поэтому без крайней необходимости их лучше избегать. Если мы хотим использовать одни и те же "ноги" микросхемы как для ввода, так и для вывода, мы должны иметь возможность контролируемого включения выходных каскадов порта вывода.
Отключаемые выходные каскады называются тристабильными, а третье, отключенное, состояние выхода — высокоимпедансным. Тристабильные выходы используются не только для реализации двунаправленных контактов микросхем, но и для подключения устройств к шине: устройство, перешел шее в третье состояние, освобождает шину и позволяет какому-то другому задатчику выставлять на ней свои данные. Для управления переводом выходов в высокоимпедансное состояние, порт ввода-вывода должен иметь еще один регистр, называемый регистром или маской направления данных (data direction register) (Рисунок 9.5).



Порты передачи данных



Порты передачи данных

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



Последовательные и параллельные порты



Рисунок 9.8. Последовательные и параллельные порты












Программная имитация



Пример 9.1. Программная имитация Р5232-совместимого последовательного порта, цит. по [www.atmel.com AVR305]

;**** APPLICATIONNOTEAVR305 ************************ . *

;* Название : Полудуплексный программный UART
;* Версия : 1.20
;* Последнее обновление : 97.08.27
;* Целевое устройство : Все микроконтроллеры AVR . *
;* Адрес поддержки : avr@atmel.com . *
;* Размер кода : 32 слова
;* Мин. Регистров : О
;* Макс. Регистров : 4 .
;* Прерывания : Не используются
;* Описание
;* Этот пример содержит эффективный с точки зрения объема кода программный UART.
;* Программа-пример получает один символ и передает его назад.
.include "1200def.inc" .***** определения контактов
.equ RxD =0 /Контакт приема PDO .equ TxD =1 ;Контакт передачи PD1
.*****
Глобальные регистровые переменные
.def bitcnt =R16 ;счетчик битов
.def temp =R17 промежуточный регистр
.def Txbyte =R18 ;Передаваемые данные
def Rxbyte =.<19 /Полученные данные .cseg
.org
0
* "putchar" *
* Эта подпрограмма передает байт из регистра "Txbyte"
* Количество стоповых битов определяется константой sb *
* Количество слов :14 включая возврат
* Количество циклов :Зависит от частоты передачи
* Мин. Регистров :Нет
* Макс. Регистров :2 (bitcnt,Txbyte)
* Указатели :Не используются
.equ sb =1 ;Кол-во стоповых битов (1, 2, ...)
putchar: Idi bitcnt,9+sb ;1+8+sb com Txbyte ;Инвертировать все sec ;Стартовый бит
putcharO: brcc putchar1 ;Если перенос установлен cbi PORTD,TxD ; передать 'О' rjmp putchar2 ;иначе
putcharl: sbi PORTD,TxD ; передать '!' пор
Putchar2: rcall UART_delay /Задержка в один бит real! UART_delay
Isr Txbyte /Получить следующий бит dec bitcnt /Если не все биты переданы brne putcharO ; послать следующий ;иначе
.Leu ; возврат
* "getchar"
?
* Эта подпрограмма получает один байт и возвращает его в "Rxbyte" *
* Кол-во слов :14 включая возврат
* Кол-во циклов :Зависит от скорости приема
* Мин. Регистров :Нет
* Макс. Регистров :2 (bitcnt,Rxbyte)
* Указатели :Не используются
getchar: Idi bitcnt,9 ;8 бит данных + 1 столовый
*
getcharl: sbic PIND,RxD ;Ждать стартового бита rjmp getcharl
rcall UART_delay ;задержка в 0.5 бита
getchar2: rcall UART_delay /задержка в один бит rcall UART__delay
clc /очистить перенос
sbic PIND,RxD ;если вход RX = 1
sec
dec bitcnt ;Если бит столовый breq getcharS ; возврат
/иначе
ror Rxbyte ; сдвинуть бит в Rxbyte rjmp getchar2 ; получить следующий
getcharS: ret
I "UART_delay"
*
I Эта подпрограмма задержки генерирует требуемую задержку между битами
* при передаче и приеме байтов. Полное время исполнения определяется I константой "Ь":
*3*Ь + 7 cycles (включая rcall и ret)
*
f Кол-во слов :4 включая возврат
* Мин. Регистров :Нет
* Макс. Регистров :1 (temp)
* Указатели :Не используются
Допустимые значения Ь:
1 MHz crystal: 9600 bps - b=14 19200 bps - b=5 28800 bps - b=2
2 MHz crystal: 19200 bps - b=14 28800 bps - b=8 57600 bps - b=2
4 MHz crystal: 19200 bps - b=31 28800 bps - b=19 57600 bps - b=8 115200 bps - b=2
•equ ь =31 ;19200 bps @ 4 MHz crystal
UART_delay: Idi temp,b uART_delayl: dec temp Brne UART delayl
ret
;***** Исполнение программы начинается здесь ;***** Тестовая программа
reset: sbi PORTD,TxD ;Установить контакты порта sbi DDRD,TxD
Idi Txbyte,12 /Очистить терминал rcall putchar
forever: rcall getchar mov Txbyte,Rxbyte
rcall putchar ;Воспроизвести полученный символ
rjmp forever



Принципиальная схема передатчика USART



Рисунок 9.11. Принципиальная схема передатчика USART












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



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


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

 




Принципиальная схема приемника USART



Рисунок 9.13. Принципиальная схема приемника USART


Приемники большинства современных аппаратных реализаций RS232 имеют буферные регистры. Так, последовательные порты подавляющего большинства современных IBM PC-совместимых компьютеров основаны на микросхеме National Semiconductor PC16552 [NS PC16552D] и имеют буферы объемом 16 байт (у оригинальной IBM PC были небуферизованные порты).
Помимо освобождения центрального процессора от исполнения работы сдвиговых регистров, аппаратная реализация RS232 позволяет заменить ожидание данных в режиме опроса на работу по прерываниям, что во многих случаях тоже весьма полезно. Многопортовые адаптеры, используемые, например, для организации модемных пулов интернет-провайдеров, часто могут передавать данные в режиме ПДП.

 




Принципиальная схема ТТЛсовместимых



Рисунок 9.3. Принципиальная схема ТТЛ-совместимых выходных каскадов порта вывода (здесь и далее Vss — высокое напряжение питания, Vdd — ноль)


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

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

Впрочем, сигналы, порожденные с помощью вышеперечисленных приемов, будут состоять не только из сигнала заданного тембра и частоты, по и из гармоник тактовой частоты. Если последняя частота достаточно высока, с этим можно смириться в надежде на то, что динамик не сможет се воспроизвести, а слушатель — уловить.
Кроме того, к выводу порта можно присоединить внешнюю цифровую, аналоговую или электромеханическую схему (например, шаговый электродвигатель), которая будет выполнять какую-то полезную работу. Таким образом, порт вывода, как правило, не является внешним устройством сам по себе, а служит интерфейсом между микропроцессором и собственно внешним устройством.
Другое столь же простое устройство — это порт ввода. Порт ввода также состоит из регистра и нескольких входных линий, соответствующих битам реги~ стра (Рисунок 9.4). Бит регистра имеет значение 0, если на вход подано низко6 напряжение (точнее говоря, если во время последнего цикла тактового генератора порта на вход было подано низкое напряжение) и, наоборот, единицу — если высокое. Понятно, что напряжение практически никогда не соответствует в точности 0 или 5 В, поэтому в спецификациях портов ввода всегда указывают диапазон напряжений, которые считаются нулем (например, от 0 до 0.2 В) и единицей (например, от 4.5 до 5 В), для промежуточных же напряжений значение соответствующего бита не определено (а на практике определяется случайными факторами). Регистр порта ввода часто называют регистром-защелкой (latch register), потому что основная его функция — зафиксировать напряжения на входах в определенный момент времени и передать их центральному процессору в виде однозначно (пусть и негарантированно правильно) определенных значений.



Производительность жестких дисков



Производительность жестких дисков

Скорость работы дискового накопителя определяется рядом параметров. Во-первых, любой обмен данными с таким устройством предваряется двумя обязательными задержками: позиционированием блока головок и ротационной задержкой (rotational delay), когда контроллер ждет, пока требуемый сектор подъедет к головке. Кроме того, само чтение сектора происходит не мгновенно, и, наконец, необходимо принимать во внимание скорость передачи данных по шине, к которой подключен диск, и возможные коллицизии на этой шине.
Задержку позиционирования головки можно в определенных пределах сокращать облегчением блока головок и совершенствованием механики. Единственный способ сокращения ротационной задержки — это увеличение скорости вращения диска. У современных дисков эта скорость достигает 15000 об/мин. Скорость вращения повышает также и скорость чтения отдельного сектора. Кроме того, увеличение плотности записи (как за счет улучшения физических характеристик магнитного слоя, так и за счет совершенствования способов модуляции) и обусловленное этим увеличение количества секторов на дорожке также ускоряет считывание каждого отдельного сектора.
Любопытный прием сокращения ротационной задержки при чтении последовательных секторов — это форматирование дисков с чередованием (interleave), когда номера секторов на дорожке не совпадают с их физической последовательностью (Рисунок 9.38). Количество физических секторов, размещенных между логически последовательными секторами, называется коэффициентом чередования.



Простая и модифицированная фазовая модуляция



Рисунок 9.32. Простая и модифицированная фазовая модуляция


Головка чтения/записи может перемещаться вдоль радиуса диска шаговым электродвигателем. У жестких дисков головка обычно размещена на рычаге, напоминающем звукосниматель граммофона. У гибких дисков головка движется по направляющим под действием червячной передачи, а у CD-ROM — зубчатой рейки. Накопители, имеющие более одной рабочей поверхности, имеют столько же головок, сколько и поверхностей, но подача этого блока головок все равно осуществляется одним двигателем.
Когда блок головок неподвижен, каждая головка может считывать данные, записанные на диске в виде кольцевой дорожки (track). Совокупность дорожек всех поверхностей, соответствующих одному положению блока головок, образует цилиндр (cylinder). Количество цилиндров у накопителя определяется шириной магнитной головки (и обусловленной ею шириной намагниченной полосы) и точностью, которую может обеспечить механика подачи головки. Стандартные приводы 3-дюймовых дискет имеют 80 дорожек. Количество цилиндров у современных жестких дисков достигает нескольких тысяч. При всех перечисленных выше, а также при более сложных современных способах модуляции запись данных на дорожку осуществляется блоками или секторами. Секторы аналогичны кадрам, которыми осуществляется передача данных через последовательные порты и шины. Сектор состоит из заголовка и блока данных. Заголовок обычно содержит номер дорожки (чтобы контроллер мог убедиться, что правильно позиционировал головку) и сектора на дорожке, а иногда также и поверхности. Кроме того, заголовок практически всегда содержит контрольную сумму или иногда две отдельных контрольных суммы — для заголовка и для данных. Пространство между секторами заполнено специальными зонами, служащими для выравнивания и синхронизации (Рисунок 9.35 и табл. 9.5). Нередко используются также специальные маркеры — последовательности изменений сигнала, которые не могут появиться при принятой схеме модуляции. Маркеры используются для отметки начала дорожки или, реже, начала сектора.



Простые внешние устройства



Простые внешние устройства

У кошки четыре ноги -
Вход, выход, земля и питание

По-видимому, самым простым из мыслимых (а также и из используемых) внешних устройств является порт вывода. Такие устройства являются стандартным компонентом большинства микропроцессорных систем. У микропроцессоров первых поколений порты реализовались отдельными микросхемами, у современных микроконтроллеров они обычно интегрированы в один кристалл с процессором.
Порт вывода представляет собой регистр и несколько выходных контактов, называемых на жаргоне микроэлектронщиков "ногами". В литературе входные и выходные контакты микросхем обычно называют просто входами и выходами. Количество выходов порта, как правило, соответствует, и никогда не превосходит количества битов в регистре. Если в бит регистра записан ноль, напряжение на выходе порта будет низким, а если единица, то, соответственно, высоким. Большинство современных микропроцессорных комплектов используют так называемые ТТЛ-совместимые напряжения, когда нулю соответствует напряжение 0 В, а единице — 5 В или, при работе от источника питания с более низким напряжением, напряжение этого самого источника (Рисунок 9.3).



RAID1 (зеркалирование)



Рисунок 9.41. RAID1 (зеркалирование)


RAID уровня 3 и 4 похожи во многих отношениях. Каждый из этих методов требует не менее трех дисков и подсчета контрольной суммы таким способом, чтобы данные могли быть однозначно восстановлены при полной потере одного из дисков. В RAID уровня 3 контрольные суммы подсчитываются для каждого байта записываемых данных, а в RAID уровня 4 — для групп блоков. Для хранения контрольных сумм отводится отдельный диск.
Эти методики обеспечивают более низкую (хотя и достаточную для большинства практических целей) избыточность, чем зеркалирование, но, как стриппинг. увеличивают единичную емкость диска и повышают производительность. Для отказа всей системы требуется полный отказ более чем от одного диска; многие конструктивы дисковых массивов уровня более 2 предусматривают "горячую" (без выключения системы) замену дисков, что допускает теоретически неограниченную наработку на останов, недостижимую при использовании одиночных дисков.
RAID 3 требует изменения формата секторов диска и соответствующей переделки контроллера и не может применяться с серийными дисковыми приводами. Основным недостатком RAID 4 является необходимость обращения к диску с контрольной суммой при каждой модификации одного из блоков группы. При записи большого количества логически последовательных блоков это не проблема, но может превратиться в проблему при случайно распределенных записях одиночных блоков.
Этого недостатка лишен RAID уровня 5, в котором контрольные суммы распределены по всем дискам массива (Рисунок 9.42). RAID 5 находят широкое применение в серверах уровня рабочей группы, или подразделения. При программной реализации, впрочем, подсчет контрольных сумм требует значительной доли вычислительной мощности ЦПУ, поэтому широкое распространение получили "аппаратные" контроллеры RAID 5, имеющие собственный процессор и, как правило, довольно большой объем собственной памяти. Это не мешает некоторым ОС, в частности Windows NT/2000/XP, реализовать RAID 5 программно на уровне файловой системы.

Рисунок 9.42. RAID уровня 5

 




Разрешение коллизий в I2С



Разрешение коллизий в I2С

Синхронная последовательная шина I2С (Inter-Integrated Circuit — [протокол соединения] между интегральными схемами) широко применяется для соединения цифровых микросхем во встраиваемых приложениях [Paret-Fenger 1997]. Шина состоит из двух линий, строба и данных (Рисунок 9.16). Предполагается, что все подключенные к шине устройства имеют общие шины питания и нуля. Хотя бы одно из устройств шины должно быть ведущим (master).







Развертка ЭЛТ



Рисунок 9.25. Развертка ЭЛТ


Катушки развертки не могут мгновенно изменить направление магнитного поля, поэтому и обратный ход луча как по вертикали, так и по горизонтали происходит не мгновенно. Чтобы луч на обратном ходе не был виден устройство управления ЭЛТ должно генерировать кадровый (для вертикально обратного хода) и строчный гасящие импульсы (Рисунок 9.26).



Сеть доступа к дискам (SAN)



Рисунок 9.44. Сеть доступа к дискам (SAN)





 











Сеть FCAL с несколькими кольцами и коммутаторами



Рисунок 9.43. Сеть FC-AL с несколькими кольцами и коммутаторами


Такая механика подключения запоминающих устройств к компьютерам изменяет взгляд на взаимоотношение между вычислительными и запоминающими устройствами: вместо сервера с подключенными к нему одним или несколькими дисками мы имеем массив постоянной памяти, к которому подключены один или несколько серверов, осуществляющих поиск и транзакции над хранящимися в массиве данными. Такой взгляд на организацию внешней памяти называется SAN (Storage Access Network— сеть доступа запоминающим устройствам) (Рисунок 9.44).
Не следует путать SAN с файловыми серверами, серверами транзакции другими СУБД. Если последние предоставляют относительно высокоуров невые операции над хранимыми данными (поиск файлов в каталогах, транзакции над таблицами реляционной СУБД и т. д.), то SAN обеспечивает доступ к разделяемым устройствам на уровне команд SCSI— чтения и записи отдельных блоков данных.
Средства для разрешения возможных коллизий, возникающих при этом весьма ограничены: SCSI III предусматривает лишь простые средства взаимоисключения при доступе нескольких инициаторов к одному целевому устройству, сводящиеся к захвату или освобождению целого логического устройства. Это может быть приемлемо лишь для разделения ресурсов, относительно редко используемых различными серверами (например, устройств резервного копирования) или применяемых преимущественно для чтения (например, загрузочных дисков). Как мы видели в разд. Мониторыи серверы транзакций , для разрешения коллизий при интенсивной асинхронной модификации данных предпочтительнее архитектура сервера транзакций или мониторного процесса для реализации которой у современных устройств SCSI явно недостаточно интеллекта.
Впрочем, SAN представляет собой молодую технологию с неясными на момент написания книги перспективами развития. Повышение интеллекта запоминающих устройств и превращение их в серверы транзакций является одним из перспективных направлений. Второе возможное направление развития, не противоречащее первому, — конвергенция транспортных протоколов SAN с протоколами гигабитных локальных и даже глобальных сетей, например путем инкапсуляции команд и блоков данных SCSI в кадры Ethernet или даже в пакеты TCP/IP. Перспективы такой конвергенции обсуждаются (правда, в пессимистическом ключе) в работе [Neil 2000].



Сети доступа к дискам



Сети доступа к дискам

— А теперь, прикинь солдат — где Москва, а где
Багдад!
Али ты смотался за ночь до Богдаду и назад?
Л. Филатов

Волоконно-оптические каналы подключения дисковых устройств к компьютерам, как, например, упоминавшийся в разд. Шины FC-AL, обеспечивают высокую пропускную способность и возможность устанавливать диски на значительном удалении от компьютера, иногда даже в другом здании.
Высокая пропускная способность позволяет одновременно нескольким системам использовать одну и ту же логическую шину. В частности, это дает возможность перераспределять диски или даже их логические разделы между системами без их физического переключения. Распределение вычислительных систем, дисков (особенно зеркальных или включенных в RAID более высокого уровня) и устройств резервного копирования по разным помещениям позволяет снизить риск потери данных в случае пожара или какого-либо другого бедствия и даже обеспечить бесперебойный сервис в этих условиях (Рисунок 9.43).



Схема формирования изображения



Рисунок 9.27. Схема формирования изображения на жидкокристаллическом дисплее


Типичный графический контроллер (Рисунок 9.28) состоит из:

видеобуфера (frame buffer — буфер кадра) — блока памяти, элементы которого соответствуют пикселам дисплея; генератора тактовой частоты; собственно контроллера — устройства, которое передает содержимое видеобуфера, а также, если это необходимо, гасящие импульсы и синхросигналы аналоговым схемам управления дисплеем. ЦАП (цифро-аналогового преобразователя), который преобразует значения пикселов в аналоговый сигнал, и, если это необходимо, усилителей видеосигнала.

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



Схема графического контроллера



Рисунок 9.28. Схема графического контроллера


Это достигается двумя способами. Первый состоит в организации битовых плоскостей, когда в видеобуфере последовательно хранятся сначала младшие биты значений пикселов, затем — вторые и т. д. (Рисунок 9.29). При этом восемь последовательных пикселов описываются несколькими байтами, размещенными в разных частях видеобуфера. Эта, немного странная на первый взгляд, логика кодирования изображения удобна тем, что облегчает перенос программного обеспечения, предназначенного для работы с черно-белыми дисплеями, на цветные дисплеи.
Второй подход, чаще применяемый при больших цветовых глубинах, состоит в кодировании одного пиксела одним или несколькими последовательными байтами видеобуфера. Графические контроллеры современных персональных компьютеров имеют цветовую глубину 24 или 32 бита, что соответствует трем или четырем байтам на пиксел. Этого хватает, чтобы (с учетом Диапазона яркости современных дисплеев) представить любой цвет, который человеческий глаз способен отличить на дисплее от другого.
Контроллеры с такой цветовой глубиной обычно предоставляют по одному байту для кодирования каждой из трех цветовых составляющих цветного изображения. Устройства с меньшими цветовыми глубинами часто реализуют более сложную схему кодирования цвета, называемую отображением цветов (color mapping). Значение пиксела при этом представляет собой индекс в специальной таблице, палитре. Элементы палитры — это значения компонентов пиксела.



Схема контроллера диска



Рисунок 9.37. Схема контроллера диска












Схема приемопередатчиков I2С



Рисунок 9.17. Схема приемопередатчиков I2С


Необходимость обнаружения коллизий и арбитража накладывает ограничения на физический размер шины: сигналы распространяются по шине с конечной скоростью, а любые два конфликтующих устройства должны узнать коллизии за время, меньшее чем минимальный цикл передачи данных (цикл шины). Описанная выше шина 12С предназначена для низкоскоростной связи в пределах одной печатной платы, поэтому для нее эта проблема не актуальна, однако для локальных сетей, протяженность которых составляет сотни метров или даже километры, и для системных шин компьютеров с большим количеством процессоров и банков памяти это превращается в серьезную проблему. Кроме того, большое количество коллизий само по себе снижает производительность системы.
Один из основных путей решения этой проблемы упоминался в разд. Многопроцессорные архитектуры: замена шины центральным коммутатором, либо более или менее сложной сетью коммутаторов. Устройства соединяются с ближайшим коммутатором полнодуплексными двухточечными каналами, такие же каналы используются для соединения коммутаторов друг с другом, а все коллизии возникают и разрешаются только внутри коммутаторов.
Внутренняя шина коммутатора, как правило, имеет большую пропускную способность, чем внешние соединения — у многих практически используемых коммутаторов несколько внутренних шин, поэтому разрешение коллизии внутри коммутатора часто состоит в отправке данных другим путем (Рисунок 9.18).



Шина



Рисунок 9.14. Шина


Подключение N устройств двухточечными портами требует, чтобы центральный процессор имел N приемопередатчиков, использование же многоточечного порта позволяет обойтись одним. В частности, за счет этого Удается уменьшить количество выводов микросхемы процессора или периферийного контроллера. Кроме того, при удачном размещении устройств Можно получить значительный выигрыш в общей длине проводов и, таким образом, например, уменьшить количество проводников на печатной плате. Во многих случаях это приводит к столь значительному снижению общей стоимости системы, что оказывается целесообразным смириться с усложнением протокола передачи данных и другими недостатками, присущими шинной архитектуре.
Основной недостаток шин состоит в том, что в каждый момент времени только одно устройство на шине может передавать данные. Если у двухточечных портов часто оказывается целесообразным реализовать полподуплексный обмен данными при помощи двух комплектов линий (один прием, другой на передачу, как в описанном выше RS232), то в случае шинной топологии это невозможно. Поэтому шины бывают только полудуплексные или симплексные.
Невозможность параллельно осуществлять обмен с двумя устройствами может привести к падению производительности по сравнению с собственным портом обмена данными у каждого устройства. Если устройства не занимают пропускную способность каналов передачи полностью, проигрыш оказывается не так уж велик. Благодаря этому шины широко используются даже в ситуациях, когда только одно устройство имеет возможность инициировать обмены данными.
Если передачу данных могут инициировать несколько устройств (как, например, в случае системной шины с несколькими процессорами и/или контроллерами ПДП), шинная топология оказывается наиболее естественным выбором. Такая конфигурация требует решения еще одной проблемы: обеспечения арбитража доступа к шине со стороны возможных инициаторов обмена — задатчиков шины (Рисунок 9.15). Методы арбитража отличаются большим разнообразием.



Шина PCI



Шина PCI

Шина PC/ (Peripherial Component Interconnect), разработанная фирмой Intel в настоящее время используется в вычислительных системах разного уровня, начиная от персональных компьютеров с архитектурами х86 и PowerMac и заканчивая старшими моделями серверов Sun Fire. В конструктиве PCI исполняется множество различных периферийных устройств— сетевые карты, адаптеры SCS/, графические и звуковые карты, платы видеоввода и видеовывода и лр [PC Guide PCI].
PCI не рассчитана на использование в качестве системной шины. Напротив спецификации шины предполагают ее подключение к процессорам и памяти через специальное устройство, мост системной шины (host-to-PCI bridge) (Рисунок 9.21). Это позволяет использовать PCI в системах, основанных на различных процессорах, таких, как х86, Power, SPARC.







Шина с несколькими задатчиками



Рисунок 9.15. Шина с несколькими задатчиками












Шина SCSI



Шина SCSI

Среди других практически важных применений шин необходимо упомянуть стандарт SCS/ (Small Computer System Interface — системный интерфейс малых компьютеров), наиболее известный как интерфейс для подключения жестких дисков, но используемый для подключения широкого спектра высокоскоростных устройств (табл. 9.3), в том числе и не являющихся устройствами памяти, например, сканеров [Гук 2000].







Шины



Шины

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



Симплексные полудуплексные и полнодуплексные порты



Рисунок 9.7. Симплексные, полудуплексные и полнодуплексные порты


Еще одна практически важная классификация портов передачи данных -это деление их на последовательные и параллельные порты (Рисунок 9.8).
Последовательный порт состоит из одного провода, по которому, как следует из названия, последовательно передаются биты данных, а также, возможно, синхронизационные или стартовые и стоповые биты. Параллельный порт имеет несколько линий передачи данных, обычно 8 (чтобы можно было передать за один прием один байт), а иногда и больше.
правило, последовательные порты — асинхронные или синхронные с совмещенной передачей синхросигнала, но исключения из этого правила — стробируемые последовательные порты — также нередки. Напротив, если уж мы проложили восемь проводов для данных, то экономить на девятом — синхронизующем проводе — было бы совсем уж глупо, поэтому подавляющee большинство практически используемых параллельных портов — синхронные стробируемые.



Системная и периферийные шины



Рисунок 9.20. Системная и периферийные шины












Строка развертки ЭЛТ



Рисунок 9.26. Строка развертки ЭЛТ


Вертикальное разрешение изображения соответствует количеству видимых строк на экране. Горизонтальное разрешение определяется двумя факторами: частотой, с которой схемы управления ЭЛТ способны модулировать луч и, у цветных мониторов, разрешением маски кинескопа. Второй параметр указывают в паспортных данных кинескопов под названием размер точки (dot pilch). У большинства мониторов первый параметр обычно более или менее соответствует второму. Электронно-лучевые трубки громоздки, создают сильные электромагнитные помехи и сами чувствительны к ним и, наконец, имеют высокое энергопотребление, но они во много раз дешевле всех альтернативных способов генерации изображений высокого качества и высокого разрешения.
Жидкокристаллические экраны основаны на способности некоторых органических соединений — жидких кристаллов — менять свою прозрачность и другие оптические свойства под воздействием электрического поля. Жидкокристаллический экран представляет собой две стеклянные или прозрачные пластиковые пластины (обкладки), на которые нанесены полупрозрачные металлические электроды. Пространство между пластинами заполнено жидким кристаллом. За пластинами находится подложка — у черно-белых дисплеев зеркальная или черная, у цветных дисплеев — цветная. Для повышения контрастности изображения подложка нередко подсвечивается.
Подавая напряжение на электроды, контроллер ЖКД может избирательно делать прозрачными те или иные участки экрана и, таким образом, формировать различные изображения. Изменяя напряжение, можно в определенных пределах управлять яркостью, или, скорее, контрастностью изображения. В современных дисплеях высокого разрешения используется более сложный способ формирования цветного изображения, чем просто разноцветная подложка: в таких дисплеях используется жидкий кристалл, поворачивающий плоскость поляризации проходящего через него света. Этот угол зависит от напряжения на электродах и от частоты световой волны. Снабдив обкладки экрана поляризационными фильтрами, можно управлять цветом участка экрана.
Формы электродов ЖКД отличаются большим разнообразием. Нередко применяются прямоугольные матрицы точек, позволяющие создавать произвольные растровые изображения. Однако многие приложения — часы, калькуляторы, простые дисплеи — не требуют произвольных изображений, поэтому часто изготавливают пластины с электродами сложной формы, соответствующей элементам цифр и букв и/или различным пиктограммам.
ЖКД низкого разрешения дешевы, компактны, имеют низкое энергопотребление и находят широкое применение в самых разнообразных устройствах — сотовых и стационарных телефонах, калькуляторах, часах, измерительных и бытовых приборах. Однако высококачественные цветные ЖКД большой площади представляют собой весьма дорогостоящие устройства, цена которых составляет более половины цены современных портативных компьютеров.
Подача напряжения на каждую пару электродов ЖКД отдельным контроллером недопустимо дорога. К счастью, пара электродов представляет собой конденсатор, который способен некоторое время без вмешательства извне сохранять электрический заряд и, следовательно, изображение. Наличие у пиксела электрической емкости позволяет свести поддержание изображения на жидкокристаллической матрице к аналогу развертки ЭЛТ — периодическому сканированию электродов с подачей на них напряжения, соответствующего яркости элемента изображения (Рисунок 9.27).
При изменении изображения емкость элементов матрицы скорее вредна — быстрая перезарядка элемента требует больших токов, поэтому многие ЖКД, в том числе и дисплеи старых переносных компьютеров, обладают высокой инерционностью изображения. В современных высококачественных дисплеях каждый пиксел экрана снабжается собственной усилительной схемой, способной быстро перезарядить электроды. Такие экраны называются активной матрицей. Широкое распространение получили активные матрицы с усилителями, реализованными на основе TFT (Thin Film Transistor— тонкопленочный транзистор), нанесенных на обкладки экрана.
Несмотря на коренное различие физических способов формирования изображения в электронно-лучевых трубках и жидкокристаллических панелях, функции контроллера этих устройств весьма похожи и сводятся к передаче значений яркости элементов изображения с частотой, соответствующей частоте развертки дисплея. Контроллер, предназначенный для работы с ЭЛТ, должен уметь также делать в потоке данных
паузы, соответствующие строчным и кадровым гасящим импульсам и должен быть несколько сложнее. Однако общая структура графически контроллеров для дисплеев различных типов удивительно похожа.



Структура дорожки дискеты с двойной плотностью



Рисунок 9.35. Структура дорожки дискеты с двойной плотностью


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



Структура USART микроконтроллера PIC



Рисунок 9.10. Структура USART микроконтроллера PIC


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



Описание битов управляющего



Таблица 9.1. Описание битов управляющего регистра передатчика USART

Бит Описание
7 CSRC: Clock SouRCe — выбор источника тактовой частоты при асинхронном режиме игнорируется, при синхронном режиме:
1 = режим ведущего (USART генерирует стробовый сигнал)
0 = режим ведомого (стробовый сигнал генерирует другое устройство)
6 ТХ9: передавать 9 бит
1 = передавать 9 бит
0 = передавать 8 бит
5 TXEN: Transmission ENabled — разрешить передачу
1 = передача разрешена
0 = передача запрещена
4 SYNC: бит выбора режима USART
1 = синхронный режим
0 = асинхронный режим
3 Не используется. Читается как О
2 BRGH: Baud Rate Generator High — переключение режимов работы
тактового генератора
1 TRMT: бит состояния сдвигового регистра передатчика
1 = TSR пуст
0 = TSR содержит данные (идет передача)
0 TX9D: девятый бит передаваемых данных (может использоваться как бит четности)


Описание битов управляющего



Таблица 9.2. Описание битов управляющего регистра приемника USART

Бит Описание
7 SPEN: Serial Port Enable — включить последовательный порт
1 = последовательный порт включен
0 = последовательный порт выключен
6 RX9: разрешение приема 9 бит
1 = выбран прием 9 бит
0 = выбран прием 8 бит
5 SREN: Single Receive ENable — бит одиночного приема Асинхронный режим — не используется. Синхронный режим (ведущий):
1 = одиночный прием разрешен;
0 = одиночный прием запрещен.
Этот бит очищается после завершения приема. Синхронный режим (ведомый) — не используется
4 CREN: Continuous Receive ENable — бит непрерывного приема. Асинхронный режим:
1 = прием разрешен;
0 = прием запрещен. Синхронный режим:
1 = непрерывный прием разрешен;
0 = непрерывный прием запрещен
3 Не используется. Читается как 0
2 FERR: Framing ERRor — ошибка кадра
1 = ошибка кадра
0 = нет ошибки кадра
1 OERR: Overrun ERRor — ошибка переполнения буфера
1 = переполнение буфера приема
0 = нет ошибки переполнения
0 RX9D: девятый бит принятых данных.
Может использоваться как бит четности


Типы устройств SCSI


Обмен данными по шине происходит не байтами и даже не словами, а кадрами, которые могут содержать команды, информацию о состоянии устройства (sense data) или собственно данные. Формат кадров и способ разрешения коллизий зависит от используемого типа соединений — в этом смысле разделение уровня соединений и уровня протокола не реализовано в полной мере. Каждый кадр содержит адреса отправителя и получателя. Каждое устройство имеет собственный адрес, называемый SCSI target ID. У старых версий протокола этот адрес был 3-битным, допуская адресацию восьми устройств, у современной версии (Ultra-SCSI или SCSI III) адрес 4- или 5-битный. Адаптер, через который шина SCSI подключается к системной или периферийной шине компьютера — НВА (Host Bus Adapter— адаптер системной шины) — также считается устройством и обычно имеет ID, равный, в зависимости от разрядности адреса, 7, 15 или 127.
Устройство, имеющее один target ID, может содержать несколько логически устройств, идентифицируемых номерами логических устройств (LUN — Logjc Unit Number). Спецификации протокола предусматривают два байта для код рования LUN, но реальное число логических устройств, поддерживаемых практике, обычно невелико.
Устройства SCSI делятся на два типа: инициаторы (initiator) и целевые ройства (target). Инициатор посылает команды, а целевое устройство их полняет. Спецификация допускает, что в разных актах обмена данными инициатор может становиться целевым устройством и наоборот, но в пределах одной операции эти роли заданы однозначно. Как правило, НВА может выступать только в роли инициатора, а периферийные устройства — только в роли целевых.
Блоки команд — CDB (Command Descriptor Block — блок описания команды) — невелики по размеру и могут содержать 6, 8, 10, 12 или 16 байт. Различие в длине обусловлено размером используемых в команде адресов: 6-байтовая команда использует 21-битный адрес блока на устройстве и 8-битное поле для длины требуемого блока данных, 8-байтовая — 32-разрядный адрес и 16-битное поле длины, а более длинные команды— 32-разрядные адрес и длину. 16-байтовая форма команды содержит, кроме 32-разрядных адреса и длины, также и 32-битное поле параметра. Кроме того, команда обязательно содержит код операции и поле управления. Под код операции отводится байт. Старшие три бита этого байта кодируют формат SCB. Некоторые команды используют только один формат SCB, другие допускают применение различных форматов (обычно с адресами и полем длины различной разрядности). Кроме перечисленных в табл. 9.4, различные типы устройств имеют собственные команды.
Блоки данных, в отличие от команд, имеют практически неограниченную длину. Многие команды интерпретируют поле длины CDB как указанное в блоках. При размере блока 512 байт это позволяет передать за одну операцию до 2 Тбайт (1 Тбайт=1024 Гбайт) данных. На практике, пакет данных, передаваемых за одну операцию шины, ограничен размерами буферов устройств, поэтому запросы на передачу больших объемов данных обрабатываются в несколькр приемов. Команда может либо принимать, либо передавать данные. В качестве данных могут передаваться либо блоки параметров и ответов, либо собственно данные. Существование команд, способных и передавать, и принимать данные, явно запрещено спецификациями, поэтому в CDB предусмотрена только одна группа полей описания буфера. Впрочем, операция может исполняться в виде последовательности команд и поэтому может предусматривать двусторонний обмен данными.
Большинство команд требует от устройства более или менее длительных подготовительных операций (перемещения головки, перемотки ленты), поэтому передача данных не может следовать немедленно за командой. По этой причине большинство современных устройств поддерживает очереди команд. Чтобы связать команду с пришедшим на нее ответом, команды могут снабжаться тегом задачи. Устройство способно параллельно исполнять несколько задач, а в рамках одной задачи может быть исполнена последовательность команд.

Список команд SCSI



Таблица 9.4. Список команд SCSI, поддерживаемых всеми устройствами, цит. по www.t10.org commands]

Имя команды Код Тип Описание
CHANGE DEFIKTTION 40h O Изменить версию протокола, используемого устройством
COMPARE 39h O Сравнить данные
COPY 18h O Копировать данные внутри устройства или
между устройствами
COPY AND VERIFY 3Ah O Копировать данные с проверкой
INQUIRY 12h M Проверить наличие устройства, его тип и поддерживаемые им операции
LOG SELECT 4Ch   Включить сбор статистики
LOG SENSE 4Dh O Считать собранную статистику
MODE SELECT(6) 15h Z Выбор режима работы устройства
MODE SELECT(10) 55h Z  
MODE SENSE(6) 1Ah Z Считывание режима работы
MODE SENSE(10) 5Ah Z  
MOVE MEDIUM ATTACHED A7h Z Для устройств с автоматической сменой носителя
PERSISTENT RESERVE IN 5Eh Z Управление режимом блокировки устройства
PERSISTENT RESERVE
OUT
5Fh Z  
PREVENT ALLOW MEDIUM REMOVAL 1Eh 0 Заблокировать сменный носитель в устройстве
READ BUFFER 3Ch 0 Чтение данных
READ ELEMENTSTATUS ATTACHED B4h Z Для устройств с автоматической сменой носителя
RECEIVE DIAGNOSTIC RESULTS 1Ch O Получить результаты самотестирования устройства
RELEASE (6) 17h Z Разблокировка (освобождение) устройства
RELEASE (10) 57h z  
REPORT LUNS A0h O Считывание списка логических устройств
REQUEST SENSE 03h М Считывание статуса устройства
RESERVE(6) 16h Z Блокировка (захват) устройства
RESERVE(10) 56h Z  
SEND DIAGNOSTIC 1Dh M Запрос самотестирования устройства
TEST UNIT READY 00h M Проверка готовности устройства
WRITE BUFFER 3Bh O Запись данных

Здесь:

M — реализация команды обязательна; O— реализация команды возможна (может быть реализована, а может и не быть); Z— реализация и семантика команды зависит от типа устройства.
 


Структура сектора



Таблица 9.5. Структура сектора дискеты с двойной плотностью, цит. по [МикроЭВМ 1988]

Длина в байтах Описание
12 Зона синхронизации
4 Адресный маркер
1 Номер дорожки
1 Номер стороны
1 т Номер сектора
1 Длина сектора
2 Циклическая контрольная сумма
22 Зона типа 2 (см. Рисунок 9.35)
12 Зона синхронизации
4 Маркер данных
256/512/1024 Данные
2 Циклическая контрольная сумма
36-116 т Зона типа 3 (см. Рисунок 9.35)

Зона типа 1 длиной 32 байта отмечает начало дорожки, а зона типа 4 длиной от 118 до 266 байт служит для заполнения дорожки до полной длины.
Количество секторов в одной дорожке определяется, с одной стороны, длиной сектора, а с другой — частотой модуляции. Частота модуляции, в свою очередь, ограничена частотной характеристикой схемы управления магнитной головкой, индуктивностью самой головки и параметрами ферромагнитной поверхности диска (размером минимального домена намагничивания). Последний фактор, фактически, ограничивает линейную плотность записи (количество битов на миллиметр или дюйм длины дорожки), поэтому в более длинных внешних дорожках целесообразно делать больше секторов, чем во внутренних (Рисунок 9.36). Это решение усложняет адресацию секторов и логику контроллера, поэтому начало широко применяться лишь относительно недавно.

в этот бит, головка перемещается



Таблица 9.6. Управляющий регистр К1801ВП1-097

Бит Описание Комментарий
00 (W) Выбор накопителя 0
00 (R) Дорожка 0 Головка чтения/записи установлена на дорожку 0
01 (W) Выбор накопителя 1
01 (R) Накопитель готов
02 (W) Выбор накопителя 2
02 (R) Запись запрещена На дискете установлена защита записи
03 (W) Выбор накопителя 3
04 Включение двигателя
05 Поверхность Если 1, запись (чтение) происходите верхней поверхности диска
06 Направление шага При записи 1 , направление к оси диска
07 (W) Шаг При записи 1 в этот бит, головка перемещается на один шаг и бит очищается
07 (R) Данные готовы Контроллер выставляет этот бит, когда считано или записано очередное слово данных. ЦПУ должно прочитать или записать следующее слово сектора
08 Частичный сброс
09 Запись маркера  
10 Включение внешней схемы прекоррекции фазовых искажений  
14 Успех операции 0, если операция завершилась ошибкой
15 Начало дорожки  
Видно, что микросхема предусматривает работу с ней центрального процессора в режиме опроса. Более сложный контроллер КМД (Контроллер МиниДисков), основанный на этой микросхеме, содержит микропроцессор, ПЗУ с программой для него и 2Кб ОЗУ (которое может использоваться и для промеж, точных данных программы микропроцессора, и для хранения самих данных передаваемого блока) [МикроЭВМ 1988]. Работа с этим контроллером осуществляется посредством двух регистров, команды/состояния и данных. Центральный процессор записывает в эти регистры команду (табл. 9.7) и адрес блока параметров в основном ОЗУ. Контроллер в режиме ПДП считывает блок параметров и пытается выполнить операцию, передавая данные, если это необходимо, также в режиме ПДП. Указатель на блок данных содержится в блоке параметров. Одной операцией можно прочитать или записать несколько последовательных секторов. После завершения передачи контроллер генерирует прерывание.


Список команд контроллера



Таблица 9.7. Список команд контроллера КМД, цит. по [МикроЭВМ 1988]

Код Мнемоника Описание
0h RD Чтение
1h WR Запись
2h RDM Чтение с маркером
3h WRM Запись с маркером
4h RDTR Чтение дорожки
5h RDID Чтение заголовка
6h FORMAT Форматирование дорожки
7h SEEK Подача головки
8h SET Установка параметров
9h RDERR Чтение состояния и ошибок
Fh LOAD Загрузка


Командные регистры



Таблица 9.8. Командные регистры контроллера ST506, цит. по [chip.ms.mff.cuni.cz АТА2]

Адрес Функция (чтение) Функция (запись) Код
0x1 F0 Данные (младш.) Данные (младш.)
0x1 F1 Ошибка Прекомпенсация PC
0x1 F2 Счетчик секторов — " — SC
0x1 F3 Номер сектора — " — SN
0x1 F4 Цилиндр (младш.) — " — CY
0x1 F5 Цилиндр (старш.) — " — CY
0x1 F6 Устройство/поверхность — " — DH
0x1 F7 Статус Команда  


Биты регистра статуса



Таблица 9.9. Биты регистра статуса ST506, цит. по [chip.ms.mff.cuni.cz IDE]

Бит Мнемоника Описание
7 BUSY Устройство занято
6 DRDY Устройство готово принимать команды
5 DWF Ошибка записи
4 DSC Подача головки завершена
3 DRQ Запрос данных
2 CORR Исправимая ошибка при чтении данных
1 INDEX Маркер начала дорожки
0 ERROR Ошибка


Команды контроллера



Таблица 9.10. Команды контроллера ST506, цит. по [chip.ms.mff.cuni.cz IDE]

Код Описание PC SC SN CY DH
90h Диагностика привода D+
50h Форматировать дорожку V V
20h Чтение секторов с повтором V V V V
21h Чтение секторов V V V V
40h Проверка секторов с повтором V V V V
41h Проверка секторов V V V V
1Xh Возврат к дорожке D
7Xh Подача головки V V
30h Запись секторов с повтором V V V V
31h Запись секторов V V V V

V— используется значение регистра
D — используется только бит выбора диска
D+ — независимо от бита выбора диска, реагируют оба диска



USART микроконтроллера PIC



USART микроконтроллера PIC

В качестве примера аппаратной реализации последовательного порта, которую, помимо других вариантов использования, мЪжно применить и для реализации RS232, давайте рассмотрим устройство USART (Universal Synchronous Asynchronous Receiver Transmitter), включенное в состав ряда моделей микроконтроллеров PIC фирмы Microchip







Устройства графического вывода



Устройства графического вывода

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



Внешние устройства



Внешние устройства

  Митрофан. Эта? Прилагательна.
Правдин. Почему ж?
Митрофан. Потому что она приложена ксвоему месту. Вон у чулана шеста неделя дверь стоит еще не навешана:так та покамест существительна
Д. Фонвизин

Все без исключения прилохсения вычислительных систем, так или иначе, связаны с использованием внешних, или периферийных устройств. Даже чисто вычислительные задачи нуждаются в устройствах для ввода исходных данных и вывода результата. Без преувеличения можно сказать, что процессор, не имеющий никаких внешних устройств, абсолютно бесполезен.
У вычислительных систем первых поколений набор периферийных устройств часто исчерпывался упомянутыми устройствами для ввода исходных данных и вывода результата вычислений, поэтому до сих пор модули ОС, работающие с периферией, называют подсистемой ввода-вывода (input/output subsystem). У большинства современных компьютеров набор внешних устройств весьма обширен, и функции многих из них не могут или лишь с определенной натяжкой могут быть описаны как ввод и вывод.
С функциональной точки зрения внешние устройства, подключаемые к современным компьютерам, можно разделить на следующие категории (приведенную классификацию вряд ли можно считать исчерпывающей, а порядок перечисления не является критерием важности данного типа устройств).

Устройства внешней памяти, которые в свою очередь, можно разделить на два класса. Устройства памяти с произвольным доступом, главным образом магнитные диски. К этому же классу относятся дискеты, магнитооптические и оптические диски и практически не применяемые в настоящее время магнитные барабаны. Удачным универсальным обозначением для этого класса устройств является принятое в документации фирмы IBM сокращение DASD (Direct Access Storage Device — запоминающее устройство прямого доступа). Устройства памяти с последовательным доступом. В основном, это лентопротяжные устройства (стриммеры и др.). Сетевые и телекоммуникационные устройства. Устройства алфавитно-цифрового ввода-вывода: печатающие устройства телетайпы, текстовые терминалы. О Устройства звукового ввода-вывода. Устройства графического ввода-вывода: сканеры или видеодекодеры (ввод), графические дисплеи, плоттеры, графические принтеры или видеокодеры (вывод). Позиционные устройства ввода: мыши, планшеты-дигитайзеры, световые перья и т. д. Сенсорные и исполнительные устройства управляющих систем.

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

 



Временная диаграмма работы приемника USART



Рисунок 9.12. Временная диаграмма работы приемника USART












Временная диаграмма шины I2С



Рисунок 9.16. Временная диаграмма шины I2С


Ведущее устройство генерирует стробовый сигнал и инициирует все передачи данных по шине. Частота строба может составлять 100 или 400 кГц или 1 МГц. Все передачи начинаются с того, что ведущий передает адрес целевого устройства. В зависимости от конфигурации адрес может состоять из семи или десяти бит. Восьмой или, соответственно, одиннадцатый бит адреса содержит указание на тип запроса: чтение или запись. Услышав свой адрес, ведомое устройство генерирует на линии стробового сигнала импульс подтверждения.
Импульса подтверждения может не последовать не только при отсутствии устройства с таким адресом, но и, например, если соответствующее устройство не готово принять или передать данные.
Если подтверждение все-таки последовало, начинается передача данных. Данные состоят из восьми бит. Если запрос был на чтение, данные передает ведомое устройство, если на запись — ведущее.
Спецификации I2С допускают конфигурацию с несколькими ведущими. Чтобы избежать конфликтов, ведущее устройство генерирует стробовый сигнал только во время инициируемых им передач данных, в остальное же время тихо слушает линию и может, при запросе другого ведущего, стать ведомым.
Из-за того, что сигнал распространяется по шине с конечной скоростью, да и внутренняя логика ведущих устройств срабатывает не мгновенно, возможна ситуация, когда два ведущих с небольшим интервалом попытаются захватить шину. Эта ситуация называется коллизией (collision — дословно, столкновение). Протоколы арбитража большинства других шин считают коллизией любую попытку двух устройств одновременно вести передачу. I2С предлагает более слабое определение коллизии — в соответствии со спецификациями этой шины, коллизия происходит, только когда ведущие пытаются выставить на шине данных разные значения. Таким образом, если два (или даже больше!) ведущих отправят один и тот же запрос одному и тому же ведомому, это не будет считаться коллизией!
Механизм арбитража, используемый I2С, отличается крайней простотой.Ведущий, пытающийся выставить на линии данных 1 в то время, как другой ведущий пытается выставить там же 0, считается проигравшим арбитраж. Он должен остановить передачу и дождаться, пока победитель завершит обмен и освободит шину.
Важно подчеркнуть, что протокол арбитража не может просто объявить обоим устройствам, что дескать, случилась коллизия — если оба устройства прeкратят передачу и, не предприняв более ничего, сделают вторую попытку, мы получим живую блокировку! Странное, на первый взгляд, определение коллизии принятое в I2С, дает победителю арбитража возможность продолжить передачу после обнаружения коллизии, исключая, таким образом, для него возможность повторной коллизии после повторной попытки передачи, и, соответственно, исключая опасность живой блокировки.
Видно, что спецификации I2С допускают ситуацию, когда два устройства пытаются установить на шине разные напряжения. Чтобы избежать при этом больших токов, стандарт устанавливает несколько необычный способ подключения устройств к шине (рис, 9.17). Устройство, пытающееся выставить 1, должно просто отключить свои выходные каскады — тогда через резистор Rp (для питания 5 В его сопротивление должно быть не менее 1,7 кОм) конденсатор Сb будет заряжен до напряжения питания. Только при попытке выставить ноль устройство должно пропускать через себя ток.



Временная диаграмма стробируемого порта



Рисунок 9.6. Временная диаграмма стробируемого порта


Передача стробирующего сигнала требует прокладки дополнительных проводов, но с реализационной точки зрения гораздо проще совмещения синхросигнала и данных и поэтому широко применяется в самых разнообразных ситуациях. Большинство стробируемых портов асимметричны: одно из устройств, ведущий (master — хозяин), генерирует стробовый сигнал, а второе ведомый (slave — раб), пользуется этим сигналом для приема или передачи. Нередко вместо одиночного строба используется несколько различных сиг налов — например, один сигнал выставляется передатчиком и сообщает чт следующая порция данных готова, а второй сигнал — приемником и сооб шает, что приемник принял эти данные и готов принять следующие Дополнительные сигналы могут также решать вопрос о том, какое из устройств в данном цикле будет приемником, а какое — передатчиком.
При асинхронном обмене данными передающее устройство посылает специальный стартовый символ, сигнализирующий о том, что сейчас пойдут данные, и с фиксированным интервалом выставляет на своих выходах символы данных. Передаваемый за один прием блок данных обычно невелик по объему — ведь необходимо считаться с опасностью того, что часы приемника и передатчика, посредством которых они отмеряют интервал между последовательными порциями данных, недостаточно точны и могут разойтись. Обычно блок данных состоит из фиксированного количества символов и называется кадром или фреймом (frame). Кадр обычно завершается одним или несколькими стоповыми символами. Не обнаружив этих символов (или обнаружив на месте этих символов неверные значения), приемник может понять, что его часы все-таки разошлись с часами передатчика.
Асинхронная передача позволяет сэкономить на проводах (не требуется стробирующих сигналов) и при этом избежать сложных способов кодирования, характерных для совмещенной синхронной передачи, однако стартовые и стоповые символы составляют значительную часть потока передаваемых данных и создают ощутимые накладные расходы.
Кроме того, при передаче большого объема данных в виде плотно следующих друг за другом кадров велика опасность, что приемник потеряет заголовок очередного кадра и не сможет восстановить структуру потока, поэтому многие асинхронные протоколы требуют паузы между последовательными кадрами.
Асинхронная передача данных удобна в ситуациях, когда объем передаваемых данных невелик, а потребность в их передаче возникает в труднопредсказуемые моменты. Обычно асинхронные порты работают на небольших скоростях, не более нескольких килобит в секунду.
Изохронная передача данных по идее напоминает асинхронную, с тем лишь отличием, что при обмене данными приемник и передатчик пользуются вы-сокостабильными, но независимыми — при использовании одного тактового генератора получится синхронная передача — тактовыми генераторами, и благодаря этому могут обмениваться кадрами большого размера. В идеале, изохронная передача сочетает преимущества синхронной и асинхронной. но на практике сложности обеспечения стабильности и калибровки тактовых операторов достаточно велики и в чистом виде изохронная передача используется очень редко.
Как синхронные, так и асинхронные порты бывают следующих типов (Рисунок 9.7):

симплексные (simplex — передавать данные может только одно устройство); полудуплексные (half-duplex — оба устройства могут принимать и передавать данные, но не способны делать это одновременно, например, потому, что прием и передача идут по одному проводу); полнодуплексные (full-duplex) или просто дуплексные (оба устройства способны одновременно передавать и принимать данные, чаще всего -по различным проводам).

Www t10 org architecture Friedhelm/Shmidt



www.t10.org architecture, Friedhelm/Shmidt 1997]. Сетевой (в данном случае описывающий способ адресации устройств) и транспортный уровни в спецификациях SCSI также присутствуют, хотя и в рудиментарном виде.







Запоминающие устройства прямого доступа



Запоминающие устройства прямого доступа

Приобрел себе винчестер у дороги во кустах Обнаружились бэд-блохи в восемнадцати местах
Ахх
Ю. Нестеренко

Как уже говорилось, основную массу устройств этого типа составляют диски — жесткие и гибкие, магнитные, магнитооптические и оптические. Ассоциация между понятиями "постоянное запоминающее устройство прямого доступа" и "диск" столь плотно укоренилась в общественном сознании, что запоминающие устройства, основанные на иных принципах, например, банки флэш-памяти, иногда называют "твердотельными дисками". В этой главе мы будем рассматривать преимущественно устройство магнитных дисковых накопителей. Принцип устройства дискового накопителя широко известен [Гук 2000].
Для хранения данных служит диск, покрытый ферромагнитным слоем. В современных накопителях запись осуществляется на обе стороны диска. Многие приводы с неудаляемыми дисками имеют несколько дисков. Диск может быть как гибким, так и жестким. Диск насажен на ось, называемую шпиндель.
В зависимости от способа крепления, диски делятся на съемные (удаляемые) и несъемные (фиксированные). В действительности, съемность накладывает серьезные ограничения не только на крепление диска к оси, но и на конструкцию блока головок и привода в целом, а также предъявляет определенные требования к контроллеру — тот должен отслеживать наличие диска в приводе и факт его замены. Несъемные диски, как правило, помещаются в герметичный корпус, защищающий головки и поверхность диска от пыли и других вредных атмосферных воздействий.
Включение двигателя и раскрутка шпинделя до рабочей скорости обязательно производятся до начала форматирования диска или обмена данными с ним. Контроллеры съемных дисков обычно останавливают мотор в то время, когда накопитель не используется, контроллеры же дисков несъемных обычно останавливают шпиндель только при выключении питания.
Запись на магнитный диск и считывание данных с него осуществляется головкой чтения-записи, по принципу действия похожей на головку обычного бытового магнитофона. Головка состоит из ферромагнитного сердечника, на который намотан провод. Сердечник имеет разрез, как раз в той части, которая ближе всего к поверхности диска. Подавая ток по проводу, можно создавать в сердечнике и, соответственно, в разрезе сердечника магнитное поле, которое будет намагничивать диск. Таким образом, осуществляется запись данных. С другой стороны, когда направление намагниченности проходящего под головкой участка диска меняется, в проводах возникает индуктивный ток — детектируя его, можно осуществлять считывание. В отличие от простой передачи по проводу, головка считывает не сам записанный сигнат, а его производную по времени (в аналоговых магнитофонах это компенсируется аналоговым интегрированием сигнала).
Способ кодирования нулей и единиц при такой записи представляет собой несколько более сложную задачу, чем при немодулированной передаче данных по проводу. Видно, что записать на диск постоянное высокое или низкое напряжение (соответствующее последовательности нулей или единиц в принципе, можно — в виде участка дорожки с постоянной намагниченностью, но такая последовательность не может быть считана головкой. Считывать можно только изменения намагниченности. Таким образом, использовать простые изменения напряжения для кодирования единиц и нулей невозможно, и мы должны изобрести более сложную схему кодирования.
Выбирая схему кодирования, мы должны обязательно решить также вопрос о способе синхронизации считывания: добиться высокой стабильности от мотора, вращающего шпиндель, невозможно. Кроме того, в приводах низкоскоростных, особенно гибких, дисков приходится считаться с опасностью механического заедания подшипников и самого диска, а в приводах жестких дисков с высокой скоростью вращения — с механическими вибрациями всей конструкции, которые могут повлиять на скорость прохождения диска под головкой даже при стабильной средней угловой скорости шпинделя.
На лентопротяжных устройствах с несколькими головками нередко используется отдельная синхродорожка, но на дисковых устройствах ее введение потребовало бы существенного усложнения и недопустимого утяжеления блока головок, поэтому обычно применяются схемы кодирования с совмещенным синхросигналом.
Простейшая форма такого кодирования, называется DFM (Double Frequency Modulation— модуляция с двойной частотой). Видно, что при записи нуля мы осуществляем одно изменение направления тока за интервал кодирования одного бита, а при кодировании единицы — два, причем первое из этих изменений смещено относительно начала интервала. Такое кодирование использовалось на 8-дюймовых гибких дисках.
Несколько более сложная схема кодирования, использовалась на 5- и 3-дюймовых гибких дисках низкой плотности. Эта схема называется модифицированной фазовой модуляцией. На жестких дисках в 80-е годы использовались частотная и модифицированная частотная Модуляция. Современные жесткие диски используют сложные схемы группового кодирования, когда одно изменение фазы или частоты намагничива-кодирует несколько битов.