1) Основные типы ПУ. Классификация. Общая архитектура. Периферийное устройство (ПУ) - устройство, входящее в состав внешнего оборудования микро-ЭВМ, обеспечивающее ввод/вывод данных, организацию промежуточного и длительного хранения данных. Можно выделить следующие основные функциональные классы периферийных устройств. 1. 2. 3. 4. ПУ, предназначенные для связи с пользователем. К ним относят различные устройства ввода (клавиатуры, сканеры, а также манипуляторы - мыши, трекболы и джойстики), устройства вывода (мониторы, индикаторы, принтеры, графопостроители и т.п.) и интерактивные устройства (терминалы, ЖК-планшеты с сенсорным вводом и др.) Устройства массовой памяти (винчестеры1), дисководы2), стримеры3) , накопители на оптических дисках, флэш-память4) и др.) Устройства связи с объектом управления (АЦП, ЦАП, датчики, цифровые регуляторы, реле и т.д.) Средства передачи данных на большие расстояния (средства телекоммуникации) (модемы, сетевые адаптеры). Устройства последовательного доступа (sequential access) и устройства произвольного доступа (random access). Для последовательных устройств характерно наличие определенного естественного порядка данных, при этом обработка данных в ином порядке либо невозможна, либо крайне затруднена. Классическим примером являются магнитные ленты, для которых чтение и запись данных ведутся от начала ленты к концу, а попытка доступа в ином порядке потребует постоянной перемотки ленты, резко снижающей скорость работы. К устройствам последовательного доступа можно отнести также клавиатуру, мышь, принтер, модем. Для устройств произвольного доступа возможно обращение к различным порциям данных в любом порядке, причем эффективность работы не зависит (или слабо зависит) от порядка обращения. Для таких устройств характерно наличие адресации данных и операции поиска нужного адреса. Наиболее известный пример – магнитные диски и другие дисковые устройства. Кроме того, к устройствам произвольного доступа можно отнести монитор ПК (там есть адресация точек-пикселов, хотя операция поиска не нужна). Символьные (байтовые) и блочные устройства. Для символьных устройств наименьшей порцией вводимых и выводимых данных является один байт. Для некоторых символьных устройств можно за одну операцию выполнить ввод или вывод любого (в разумных пределах) требуемого количества байт. Для блочных устройств наименьшей порцией ввода/вывода, выполняемого за одно обращение к устройству, является один блок, равный, как правило, 2k байт. Типичным размером блока может быть 512 байт, 1K байт, 4K байт и т.п., в зависимости от конкретного устройства. Наиболее известные примеры блочных устройств – магнитные диски и магнитные ленты. Для диска понятие блока обычно совпадает с понятием сектора. В частности, для IBM-совместимых ПК сектор (блок) диска равен 512 байт. Блочная архитектура обусловлена особенностями используемой среды и, кроме того, блочный ввод/вывод более эффективен для высокоскоростных устройств, поскольку при этом уменьшается относительная доля времени, расходуемая на подготовительные и заключительные операции при каждом обращении к устройству. · Физические, логические и виртуальные устройства. Под физическим устройством обычно понимается некоторый реально существующий прибор, «железка». На самом деле, с точки зрения программной архитектуры для наличия физического устройства достаточно знать набор адресов, команд, прерываний и других сигналов, позволяющих выполнять операции с данными. Куда идут или откуда приходят эти сигналы – это вопрос, не касающийся программиста. 2) Порты ввода/вывода и устройства отображаемые в адресное пространство оперативной памяти. Традиционными портами ввода-вывода являются последовательный, параллельный и игровой порт. В настоящее время наиболее популярны внешние интерфейсы последовательного типа. Прошли времена толстых многожильных кабелей для параллельных интерфейсов. На данный момент практически вся потребительская внешняя периферия использует последовательный тип соединения. Причины такого предпочтения очевидны - используя достижения современной микроэлектроники и технологий, выгоднее заложить в чип максимум функциональных возможностей, необходимых для получения из пары проводов требуемой пропускной способности, нежели иметь дело с многоконтактными многожильными кабелями, многочисленными пайками и необходимостью экранирования кабелей. В наше время последовательные шины становятся не только более удобными с точки зрения эксплуатации, но и более выгодны экономически. В современных последовательных шинах используются: возможность горячего подключения, последовательное кодирование и декодирование данных, передача и прием, механизмы защиты от ошибок и т.п. Параллельный порт Стандартный параллельный порт LPT (Line PrinTer) предназначен, в основном, для подключения принтеров. Подключение к LPT порту выполняется с помощью 25-контактного разъема. Порт LPT имеет малую скорость передачи данных - от 50 до 150 Кб/с, в зависимости от модификации, что обуславливает его ограниченное применение в современных ПК. В связи, с этим появилось несколько модификаций параллельного интерфейса. Усовершенствованный параллельный порт EPP (Enhanced Parallel Port) позволяет обмениваться данными на скорости до 2 Мб/с, порт с расширенными возможностями ЕСР (Enhanced Capabilities Port) имеет быстродействие до 4 Мб/с. Стандарт IEEE1284, объединяет протоколы LPT, EPP и ЕСР. Стандарты ЕСР и ЕРР поддерживают двустороннюю передачу данных и позволяют подключать к порту накопитель на CD-ROM и винчестер. Причем возможно подключение к одному порту нескольких устройств (до 64). Параллельный порт, работающий в стандарте ЕСР, дополнительно поддерживает распознавание ошибок, автоматическую установку скорости передачи данных, буферизацию и компрессию данных, расширяя тем самым возможности асинхронного обмена с подключаемыми к компьютеру устройствами. Порт имеет восемь линий для параллельной передачи данных, линию стробирования и восемь линий для обмена служебными сигналами между компьютером и устройством. Последовательный порт Имеющий долгую историю использования стандартный последовательный порт COM (Communications), используется для подключения таких низкоскоростных устройств, как мышь, плоттер, внешний модем, программатор riT.n., и позволяет вести обмен на предельной скорости до 920 Кбит/с. В компьютере может использоваться до четырех таких портов, имеющих логические имена СОМ 1, COM2, COM3, COM4. Для подключения к СОМ-портам используются стандартные 25- или 9-контактные разъемы, соответственно DB25 и DB9. Для работы с устройствами, подключаемыми к СОМ-порту, используется интерфейс RS-232. Простота и широкие возможности обеспечили широкое применение этого стандарта. Разработано большое количество устройств и приборов, взаимодействующих с компьютером по интерфейсу RS-232. Из 25 сигналов, предусмотренных стандартом RS-232, в IBM PC используется только девять. В самом простейшем случае для передачи через последовательный порт используются три линии, по которым передаются сигналы TxD (Transmit Data - Передача данных), RxD (Receive Data - Прием данных) и GND (Ground - Земля). Стандарт предусматривает использование в линиях высоких уровней сигналов ±12 В, уровень логической единицы соответствует напряжению -12 В, а логического нуля +12 В. Обеспечивается возможность пересылки данных на расстояния не менее 30 м. Игровой порт Игровой (game) порт, как правило, расположен на звуковой карте. Порт позволяет подключать игровые манипуляторы типа джойстика, а также электромузыкальные инструменты с MIDI-интерфейсом (MIDIклавиатуры и синтезаторы). Основным элементом игрового порта является 4-каналь-ный аналого-цифровой преобразователь, позволяющий подключать определенные аналоговые схемы и контролировать их состояние по уровню напряжения. Четыре цифровых входа могут контролировать состояние «включено/выключено» четырех подключаемых кнопок. Одна из линий порта используется для приема потока данных от MIDIинструмента, другая - для передачи данных к инструменту. В то время как память легко можно представить себе в виде последовательности пронумерованных адресами ячеек, локализованных внутри одной микросхемы или набора микросхем, к устройствам вводавывода подобный подход неприменим. Внешние устройства разнесены пространственно и могут подключаться к локальной магистрали в одной точке или множестве точек, получивших название портов ввода-вывода. Тем не менее, точно так же, как ячейки памяти взаимно однозначно отображались в адресное пространство памяти, порты ввода-вывода можно взаимно однозначно отобразить в другое адресное пространство – адресное пространство ввода-вывода. При этом каждый порт ввода-выводаполучает свой номер или адрес в этом пространстве. В некоторых случаях, когда адресное пространство памяти (размер которого определяется шириной адресной шины) задействовано не полностью (остались адреса, которым не соответствуют физические ячейки памяти) и протоколы работы с внешним устройством совместимы с протоколами работы с памятью, часть портов ввода -вывода может быть отображена непосредственно в адресное пространство памяти (так, например, поступают с видеопамятью дисплеев), правда, тогда эти порты уже не принято называть портами. Надо отметить, что при отображении портов в адресное пространство памяти для организации доступа к ним в полной мере могут быть задействованы существующие механизмы защиты памяти без организации специальных защитных устройств. В ситуации прямого отображения портов ввода-вывода в адресное пространство памяти действия, необходимые для записи информации и управляющих команд в эти порты или для чтения данных из них и их состояний, ничем не отличаются от действий, производимых для передачи информации между оперативной памятью и процессором, и для их выполнения применяются те же самые команды. Если же порт отображен в адресное пространство ввода-вывода, то процесс обмена информацией инициируется специальными командами ввода-вывода и включает в себя несколько другие действия. Например, для передачи данных в порт необходимо выполнить следующее. На адресной шине процессор должен выставить сигналы, соответствующие адресу порта, в который будет осуществляться передача информации, в адресном пространстве ввода-вывода. На шину данных процессор должен выставить сигналы, соответствующие информации, которая должна быть передана в порт. После выполнения действий 1 и 2 на шину управления выставляются сигналы, соответствующие операции записи и работе с устройствами ввода-вывода (переключение адресных пространств!), что приведет к передаче необходимой информации в нужный порт. Существенное отличие памяти от устройств ввода-вывода заключается в том, что занесение информации в память является окончанием операции записи, в то время как занесение информации в порт зачастую представляет собой инициализацию реального совершения операции ввода-вывода. Что именно должны делать устройства, приняв информацию через свой порт, и каким именно образом они должны поставлять информацию для чтения из порта, определяется электронными схемами устройств, получившими названиеконтроллеров. Контроллер может непосредственно управлять отдельным устройством (например, контроллер диска), а может управлять несколькими устройствами, связываясь с ихконтроллерами посредством специальных шин ввода-вывода (шина IDE, шина SCSI и т. д.). Современные вычислительные системы могут иметь разнообразную архитектуру, множество шин и магистралей, мосты для перехода информации от одной шины к другой и т. п. Для нас сейчас важными являются только следующие моменты. Устройства ввода-вывода подключаются к системе через порты. Могут существовать два адресных пространства: пространство памяти и пространство ввода-вывода. Порты, как правило, отображаются в адресное пространство ввода-вывода и иногда – непосредственно в адресное пространство памяти. Использование того или иного адресного пространства определяется типом команды, выполняемой процессором, или типом ее операндов. Физическим управлением устройством ввода-вывода, передачей информации через порт и выставлением некоторых сигналов на магистрали занимается контроллер устройства. Именно единообразие подключения внешних устройств к вычислительной системе является одной из составляющих идеологии, позволяющих добавлять новые устройства без перепроектирования всей системы. 3) Способы информационного обмена между процессором и ПУ. Программный опрос (polling). Построив модель контроллера и представляя себе, что скрывается за словами "прочитать информацию из порта" и "записать информацию в порт", мы готовы к рассмотрению процесса взаимодействия устройства и процессора. Как и в предыдущих случаях, примером нам послужит команда записи, теперь уже записи или вывода данных на внешнее устройство. В нашей модели для вывода информации, помещающейся в регистр входных данных, без проверки успешности вывода процессор и контроллер должны связываться следующим образом. 1. 2. 3. 4. 5. 6. 7. 8. 9. Процессор в цикле читает информацию из порта регистра состояний и проверяет значение бита занятости. Если бит занятости установлен, то это означает, что устройство еще не завершило предыдущую операцию, и процессор уходит на новую итерацию цикла. Если бит занятостисброшен, то устройство готово к выполнению новой операции, и процессор переходит на следующий шаг. Процессор записывает код команды вывода в порт регистра управления. Процессор записывает данные в порт регистра входных данных. Процессор устанавливает бит готовности команды. В следующих шагах процессор не задействован. Когда контроллер замечает, что бит готовности команды установлен, он устанавливает бит занятости. Контроллер анализирует код команды в регистре управления и обнаруживает, что это команда вывода. Он берет данные из регистра входных данных и инициирует выполнение команды. После завершения операции контроллер обнуляет бит готовности команды. При успешном завершении операции контроллер обнуляет бит ошибки в регистре состояния, при неудачном завершении команды – устанавливает его. Контроллер сбрасывает бит занятости. При необходимости вывода новой порции информации все эти шаги повторяются. Если процессор интересует, корректно или некорректно была выведена информация, то после шага 4 он должен в цикле считывать информацию из порта регистра состояний до тех пор, пока не будет сброшен бит занятости устройства, после чего проанализировать состояние бита ошибки. Как видим, на первом шаге (и, возможно, после шага 4) процессор ожидает освобождения устройства, непрерывно опрашивая значение бита занятости. Такой способ взаимодействия процессора и контроллера получил название polling или, в русском переводе, способа опроса устройств. Если скорости работы процессора и устройства ввода-вывода примерно равны, то это не приводит к существенному уменьшению полезной работы, совершаемой процессором. Если же скорость работы устройства существенно меньше скорости процессора, то указанная техника резко снижает производительность системы и необходимо применять другой архитектурный подход. 4) Способы информационного обмена между процессором и ПУ. Прерывания. Для того чтобы процессор не дожидался состояния готовности устройства ввода-вывода в цикле, а мог выполнять в это время другую работу, необходимо, чтобы устройство само умело сигнализировать процессору о своей готовности. Технический механизм, который позволяет внешним устройствам оповещать процессор о завершении команды вывода или команды ввода, получил название механизма прерываний. В простейшем случае для реализации механизма прерываний необходимо к имеющимся у нас шинам локальной магистрали добавить еще одну линию, соединяющую процессор и устройства вводавывода – линию прерываний. По завершении выполнения операции внешнее устройство выставляет на эту линию специальный сигнал, по которому процессор после выполнения очередной команды (или после завершения очередной итерации при выполнении цепочечных команд, т. е. команд, повторяющихся циклически со сдвигом по памяти) изменяет свое поведение. Вместо выполнения очередной команды из потока команд он частично сохраняет содержимое своих регистров и переходит на выполнение программы обработкипрерывания, расположенной по заранее оговоренному адресу. При наличии только одной линии прерываний процессор при выполнении этой программы должен опросить состояние всех устройств ввода-вывода, чтобы определить, от какого именно устройства пришло прерывание (polling прерываний!), выполнить необходимые действия (например, вывести в это устройство очередную порцию информации или перевести соответствующий процесс из состояния ожидание в состояние готовность) и сообщить устройству, что прерывание обработано (снять прерывание). 5) Способы информационного обмена между процессором и ПУ. Средства управления прерываниями (назначение обработчика прерывания, маскирование, приоритеты). В большинстве современных компьютеров процессор стараются полностью освободить от необходимости опроса внешних устройств, в том числе и от определения с помощью опроса устройства, сгенерировавшего сигнал прерывания. Устройства сообщают о своей готовности процессору не напрямую, а через специальный контроллер прерываний, при этом для общения с процессором он может использовать не одну линию, а целую шину прерываний. Каждому устройству присваивается свой номер прерывания, который при возникновении прерывания контроллер прерывания заносит в свой регистр состояния и, возможно, после распознавания процессором сигнала прерывания и получения от него специального запроса выставляет на шину прерываний или шину данных для чтения процессором. Номер прерывания обычно служит индексом в специальной таблице прерываний, хранящейся по адресу, задаваемому при инициализации вычислительной системы, и содержащей адреса программ обработки прерываний – векторы прерываний. Для распределения устройств по номерам прерываний необходимо, чтобы от каждого устройства к контроллеру прерываний шла специальная линия, соответствующая одному номеру прерывания. При наличии множества устройств такое подключение становится невозможным, и на один проводник (один номер прерывания) подключается несколько устройств. В этом случае процессор при обработке прерывания все равно вынужден заниматься опросом устройств для определения устройства, выдавшего прерывание, но в существенно меньшем объеме. Обычно при установке в систему нового устройства ввода-вывода требуется аппаратно или программно определить, каким будет номер прерывания, вырабатываемый этим устройством. Рассматривая кооперацию процессов и взаимоисключения, мы говорили о существовании критических секций внутри ядра операционной системы, при выполнении которых необходимо исключить всякие прерывания от внешних устройств. Для запрещения прерываний, а точнее, для невосприимчивости процессора к внешним прерываниям обычно существуют специальные команды, которые могут маскировать (запрещать) все или некоторые изпрерываний устройств ввода-вывода. В то же время определенные кризисные ситуации в вычислительной системе (например, неустранимый сбой в работе оперативной памяти) должны требовать ее немедленной реакции. Такие ситуации вызывают прерывания, которые невозможно замаскировать или запретить и которые поступают в процессор по специальной линии шины прерываний, называемой линией немаскируемых прерываний (NMI – Non-Maskable Interrupt). Не все внешние устройства являются одинаково важными с точки зрения вычислительной системы ("все животные равны, но некоторые равнее других"). Соответственно, некоторые прерывания являются более существенными, чем другие. Контроллер прерываний обычно позволяет устанавливать приоритеты для прерываний от внешних устройств. При почти одновременном возникновении прерываний от нескольких устройств (во время выполнения одной и той же команды процессора) процессору сообщается номер наиболее приоритетного прерывания для его обслуживания в первую очередь. Менее приоритетное прерывание при этом не пропадает, о нем процессору будет доложено после обработки более приоритетного прерывания. Более того, при обработке возникшего прерывания процессор может получить сообщение о возникновении прерывания с более высоким приоритетом и переключиться на его обработку. Механизм обработки прерываний, по которому процессор прекращает выполнение команд в обычном режиме и, частично сохранив свое состояние, отвлекается на выполнение других действий, оказался настолько удобен, что зачастую разработчики процессоров используют его и для других целей. Хотя эти случаи и не относятся к операциям ввода-вывода, мы вынуждены упомянуть их здесь, для того чтобы их не путали с прерываниями. Похожим образом процессор обрабатывает исключительные ситуации и программные прерывания. Для внешних прерываний характерны следующие особенности. Внешнее прерывание обнаруживается процессором между выполнением команд (или между итерациями в случае выполнения цепочечных команд). Процессор при переходе на обработку прерывания сохраняет часть своего состояния перед выполнением следующей команды. Прерывания происходят асинхронно с работой процессора и непредсказуемо, программист никоим образом не может предугадать, в каком именно месте работы программы произойдет прерывание. Исключительные ситуации возникают во время выполнения процессором команды. К их числу относятся ситуации переполнения, деления на ноль, обращения к отсутствующей странице памяти и т. д. Для исключительных ситуаций характерно следующее. Исключительные ситуации обнаруживаются процессором во время выполнения команд. Процессор при переходе на выполнение обработки исключительной ситуации сохраняет часть своего состояния перед выполнением текущей команды. Исключительные ситуации возникают синхронно с работой процессора, но непредсказуемо для программиста, если только тот специально не заставил процессор делить некоторое число на ноль. Программные прерывания возникают после выполнения специальных команд, как правило, для выполнения привилегированных действий внутри системных вызовов. Программные прерывания имеют следующие свойства. Программное прерывание происходит в результате выполнения специальной команды. Процессор при выполнении программного прерывания сохраняет свое состояние перед выполнением следующей команды. Программные прерывания, естественно, возникают синхронно с работой процессора и абсолютно предсказуемы программистом. Надо сказать, что реализация похожих механизмов обработки внешних прерываний, исключительных ситуаций и программных прерываний лежит целиком на совести разработчиков процессоров. Существуют вычислительные системы, где все три ситуации обрабатываются по-разному. 6) Способы информационного обмена между процессором и ПУ. Прямой доступ к памяти (DМА). Использование механизма прерываний позволяет разумно загружать процессор в то время, когда устройство ввода-вывода занимается своей работой. Однако запись или чтение большого количества информации изадресного пространства ввода-вывода (например, с диска) приводят к большому количеству операций ввода-вывода, которые должен выполнять процессор. Для освобождения процессора от операций последовательного вывода данных из оперативной памяти или последовательного ввода в нее был предложен механизм прямого доступа внешних устройств к памяти – ПДП или Direct Memory Access – DMA. Давайте кратко рассмотрим, как работает этот механизм. 7) Способы информационного обмена между процессором и ПУ. Цикл взаимодействия между контроллером DMA и процессором. Для того чтобы какое-либо устройство, кроме процессора, могло записать информацию в память или прочитать ее из памяти, необходимо чтобы это устройство могло забрать у процессора управление локальной магистральюдля выставления соответствующих сигналов на шины адреса, данных и управления. Для централизации эти обязанности обычно возлагаются не на каждое устройство в отдельности, а на специальный контроллер – контроллер прямого доступа к памяти. Контроллер прямого доступа к памяти имеет несколько спаренных линий – каналов DMA, которые могут подключаться к различным устройствам. Перед началом использования прямого доступа к памяти этот контроллер необходимо запрограммировать, записав в его порты информацию о том, какой канал или каналы предполагается задействовать, какие операции они будут совершать, какой адрес памяти является начальным для передачи информации и какое количество информации должно быть передано. Получив по одной из линий – каналов DMA, сигнал запроса на передачу данных от внешнего устройства, контроллер по шине управления сообщает процессору о желании взять на себя управление локальной магистралью. Процессор, возможно, через некоторое время, необходимое для завершения его действий с магистралью, передает управление ею контроллеру DMA, известив его специальным сигналом. Контроллер DMA выставляет на адресную шину адрес памяти для передачи очередной порции информации и по второй линии канала прямого доступа к памяти сообщает устройству о готовности магистрали к передаче данных. После этого, используя шину данных и шину управления, контроллер DMA, устройство ввода-вывода и память осуществляют процесс обмена информацией. Затем контроллер прямого доступа к памяти извещает процессор о своем отказе от управления магистралью, и тот берет руководящие функции на себя. При передаче большого количества данных весь процесс повторяется циклически. При прямом доступе к памяти процессор и контроллер DMA по очереди управляют локальной магистралью. Это, конечно, несколько снижает производительность процессора, так как при выполнении некоторых команд или при чтении очередной порции команд во внутренний кэш он должен поджидать освобождения магистрали, но в целом производительность вычислительной системы существенно возрастает. При подключении к системе нового устройства, которое умеет использовать прямой доступ к памяти, обычно необходимо программно или аппаратно задать номер канала DMA, к которому будет приписано устройство. В отличие от прерываний, где один номер прерывания мог соответствовать нескольким устройствам, каналы DMA всегда находятся в монопольном владении устройств. 8) Интерфейсы ПУ. Общие принципы. Большинство периферийных устройств подключаются через промежуточные периферийные интерфейсы, находящиеся на нижних уровнях иерархии подключений (на верхнем уровне — системная шина). Периферийные интерфейсы — самые разнообразные из всех аппаратных интерфейсов. К периферии, подключаемой через промежуточные интерфейсы, относятся большинство устройств хранения (дисковые, ленточные), устройств ввода-вывода (дисплеи, клавиатуры, мыши, принтеры, плоттеры), ряд коммуникационных устройств (внешние модемы). По назначению периферийные интерфейсы можно разделить на специализированные и универсальные, выделенные и разделяемые: Специализированные интерфейсы ориентированы на подключение устройств определенного узкого класса, и в них используются сугубо специфические протоколы передачи информации. Примеры — популярнейший интерфейс мониторов VGA, интерфейс накопителя на гибких дисках, традиционные интерфейсы клавиатуры и мыши, IDE/АТА и ряд других. Универсальные интерфейсы имеют более широкое назначение, их протоколы обеспечивают доставку данных, не привязываясь к специфике передаваемой информации. Примеры — коммуникационные порты (СОМ), интерфейс SCSI, шины USB и FireWire. Выделенные интерфейсы позволяют подключить к одному порту (точке подключения) адаптера (контроллера) лишь одно устройство; число подключаемых устройств ограничено числом портов. Примеры — СОМ-порт, интерфейс VGA-монитора, порт AGP, интерфейс Serial SCSI. Разделяемые интерфейсы позволяют подключить к одному порту адаптера множество устройств. Варианты физического подключения разнообразны: шина (жесткая, как ISA или PCI; кабельная шина SCSI и IDE/ATA), цепочка (daisy chain) устройств (SCSI, IEEE 1284.3), логическая шина на хабах (USB) или встроенных повторителях (IEEE 1394 FireWire). 9) Интерфейсы ПУ. Классификация по способу подключения и управления группой ПУ. (8) 10)Интерфейсы ПУ. Классификация по способам передачи данных. Параллельный интерфейс — для каждого бита передаваемой группы имеется своя сигнальная линия (обычно с двоичным представлением), и все биты группы передаются одновременно за один квант времени, то есть продвигаются по интерфейсным линиям параллельно. Примеры: параллельный порт подключения принтера (LPT-порт, 8 бит), интерфейс ATA/ATAPI (16 бит), SCSI (8 или 16 бит), шина PCI (32 или 64 бита). Последовательный интерфейс — используется лишь одна сигнальная линия, и биты группы передаются друг за другом по очереди; на каждый из них отводится свой квант времени (битовый интервал). Примеры: последовательный коммуникационный порт (СОМ-порт), последовательные шины USB и FireWire, интерфейсы локальных и глобальных сетей. На первый взгляд, организация параллельного интерфейса проще и нагляднее (не надо выстраивать биты в очередь на передачу и собирать байты из принятой последовательности битов). Также, на первый взгляд, параллельный интерфейс обеспечивает более быструю передачу данных, поскольку биты передаются сразу пачками. Очевидный недостаток параллельного интерфейса — большое количество проводов и контактов разъемов в соединительном кабеле (по крайней мере, по одному на каждый бит). Отсюда громоздкость и дороговизна кабелей и интерфейсных цепей устройств, но с этим мирятся ради вожделенной скорости. У последовательного интерфейса приемно-передающие узлы функционально сложнее, зато кабели и разъемы гораздо проще и дешевле. Понятно, что на большие расстояния тянуть многопроводные кабели параллельных интерфейсов неразумно (и невозможно), здесь гораздо уместнее последовательные интерфейсы. Эти рассуждения были основополагающими при выборе типа интерфейса примерно до начала 1990-х годов. Тогда выбор был прост: на ближних расстояниях (максимум — до пары десятков метров) при требованиях к высокой скорости использовали параллельные интерфейсы, а на дальних расстояниях или в случае неприемлемости параллельных кабелей — последовательные, жертвуя скоростью передачи. Теперь поточнее разберемся со скоростью передачи данных. Очевидно, что она равна числу бит, передаваемых за квант времени, деленному на длительность кванта. Для простоты можно оперировать тактовой частотой интерфейса — величиной, обратной длительности кванта. Это понятие естественно для синхронных интерфейсов, у которых имеется сигнал синхронизации (clock), определяющий возможные моменты возникновения всех событий (смены состояния). Для асинхронных интерфейсов можно пользоваться эквивалентной тактовой частотой — величиной, обратной минимальной длительности одного состояния интерфейса. Теперь можно сказать, что максимальная (пиковая) скорость передачи данных равна произведению тактовой частоты на разрядность интерфейса. У последовательного интерфейса разрядность 1 бит, у параллельного — столько, сколько имеется параллельных сигнальных цепей для передачи битов данных. Остаются вопросы о достижимых тактовой частоте и разрядности. И для последовательного, и для параллельного интерфейсов максимальная тактовая частота определяется достижимым (при разумных цене и затратах энергии) быстродействием приемопередающих цепей устройств и частотными свойствами кабелей. Здесь уже проглядывают преимущества последовательного интерфейса: для него затраты на построение высокоскоростных элементов не приходится умножать на разрядность интерфейса, как в случае параллельного интерфейса. В параллельном интерфейсе есть явление перекоса (skew), существенно влияющее на достижимый предел тактовой частоты. Суть его в том, что сигналы, одновременно переданные с одного конца интерфейсного кабеля, доходят до другого конца не одновременно из-за отклонений характеристик цепей. На время прохождения влияют длина проводов, свойства изоляции, соединительных элементов и т. п. Очевидно, что перекос (разница во времени прибытия) сигналов разных битов должен быть явно меньше кванта времени, иначе биты будут искажаться (путаться с одноименными битами предшествующих и последующих посылок). Вполне понятно, что перекос ограничивает и допустимую длину интерфейсных кабелей: при одной и той же относительной погрешности скорости распространения сигналов на большей длине «набегает» и больший перекос. Перекос сдерживает и увеличение разрядности интерфейса: чем больше параллельных цепей, тем труднее добиться их идентичности. Из-за этого даже приходится «широкий» (многоразрядный) интерфейс разбивать на несколько «узких» групп и для каждой группы использовать свои управляющие сигналы. В 90-х годах в схемотехнике приемно-передающих узлов стали осваиваться частоты в сотни мегагерц и выше, то есть длительность кванта стала измеряться единицами и долями наносекунд. Достичь соизмеримо малого перекоса можно лишь в пределах жестких компактных конструкций (печатная плата), а для связи отдельных устройств кабелями длиной в десятки сантиметров пришлось остановиться на частотах до десятков мегагерц. Для того чтобы ориентироваться в числах, отметим, что за 1 наносекунду сигнал пробегает по электрическому проводнику порядка 20-25 сантиметров. Для повышения пропускной способности параллельных интерфейсов с середины 90-х годов стали применять двойную синхронизацию (Dual Data Rate, DDR). Ее идея заключается в выравнивании частот переключения информационных сигнальных линий и линий стробирования (синхронизации). В «классическом» варианте данные информационных линий воспринимаются только по одному перепаду (фронту или спаду) синхросигнала, что удваивает частоту переключения линии синхросигнала относительно линий данных. При двойной синхронизации данные воспринимаются и по фронту, и по спаду, так что частота смены состояний всех линий выравнивается, что при одних и тех же физических параметрах кабеля и интерфейсных схем позволяет удвоить пропускную способность. Волна этих модернизаций началась с интерфейса АТА (режимы UltraDMA) и прошла уже и по SCSI (Ultral60 и выше), и по памяти (DDR SDRAM). Кроме того, на высоких частотах применяется синхронизация от источника данных (source synchronous transfer): сигнал синхронизации, по которому определяются моменты переключения или действительности данных, вырабатывается самим источником данных. Это позволяет точнее совмещать по времени данные и синхронизирующие импульсы, поскольку они распространяются по интерфейсу параллельно в одном направлении. Альтернатива — синхронизация от общего источника (common clock) — не выдерживает высоких частот переключения, поскольку здесь в разных (географически) точках временные соотношения между сигналами данных и синхронизации будут различными. Повышение частоты переключений интерфейсных сигналов, как правило, сопровождается понижением уровней сигналов, формируемых интерфейсными схемами. Эта тенденция объясняется энергетическими соображениями: повышение частоты означает уменьшение времени, отводимого на переключения сигналов. Чем больше амплитуда сигнала, тем большие требуются скорость нарастания сигнала и, следовательно, выходной ток передатчика. Повышение выходного тока (импульсного!) нежелательно по разным причинам: большие перекрестные помехи в параллельном интерфейсе, необходимость применения мощных выходных формирователей, повышенное тепловыделение. Тенденцию снижения напряжения можно проследить на примере порта AGP (3,3/1,5/0,8 В), шин PCI/PCI-X (5/3,3/1,5 В), SCSI, шин памяти и процессоров. В последовательном интерфейсе явление перекоса отсутствует, так что повышать тактовую частоту можно вплоть до предела возможностей приемно-передающих цепей. Конечно, есть ограничения и по частотным свойствам кабеля, но изготовить хороший кабель для одной сигнальной цепи гораздо проще, чем для группы цепей, да еще и с высокими требованиями к идентичности. А когда электрический кабель уже «не тянет» требуемые частоту и дальность, можно перейти на оптический, у которого есть в этом плане огромные, еще не освоенные «запасы прочности». Устраивать же параллельный оптический интерфейс — слишком дорогое удовольствие. Приведенные соображения объясняют тенденцию перехода на последовательный способ передачи данных. Асинхронные, синхронные и изохронные переда чи Теперь обсудим требования, которые могут предъявляться ко времени и темпу выполнения транзакций, используемых для организации асинхронных, синхронных и изохронных передач данных. Сразу заметим, что связь типов интерфейсов (асинхронных и синхронных) и типов передач не является жесткой. В асинхронных передачах данных и интерфейсах участники не имеют друг перед другом никаких особых обязательств по времени: инициатор в любой момент может начать транзакцию, а целевое устройство, как правило, может ее приостановить в случае своей неготовности. Асинхронная передача применима для всех устройств, не связанных с реальным временем: принтеров, сканеров, устройств хранения и т. п. Синхронная передача данных — это передача с постоянной мгновенной скоростью. Она требуется, например, для мультимедийных данных, в частности — для передачи оцифрованного звука в формате ИКМ (он же РСМ — передача отсчетов сигнала через равные промежутки времени). В телефонии отсчеты (8 бит) передаются с частотой 8 кГц (итого получаем скорость 64 Кбит/с), а для высококачественного звуковоспроизведения в аудио-CD — с частотой 44,1 кГц по 16 бит на стереоканал (около 1,4 Мбит/с). Нарушение синхронности ведет к потере данных — искажениям, помехам, провалам звука. Синхронная передача данных требует выделенного синхронного интерфейса для каждого подключаемого устройства (или сложных систем мультиплексирования). Изохронная передача данных — это передача с постоянной средней скоростью: за определенный (фиксированный) интервал времени должен быть передан определенный объем данных, но сама скорость (мгновенная), с которой данные передаются, не оговаривается. Конечно, мгновенная скорость должна быть, по крайней мере, не ниже средней. Обычно мгновенная скорость (пропускная способность интерфейса) выбирается намного выше требуемой средней скорости. Это позволяет использовать один интерфейс для подключения множества устройств и организовывать множество одновременных изохронных каналов передачи (с суммарной скоростью несколько меньшей, чем пропускная способность интерфейса). В одном интерфейсе изохронные передачи спокойно уживаются с асинхронными. Вопросами распределения полосы пропускания интерфейса занимается диспетчер изохронных ресурсов — отдельная функция программной поддержки. Изохронные передачи требуются мультимедийным устройствам — аудио- и видеоаппаратуре. В устройствах имеется буферная память, в которую складываются поступающие пакеты изохронных передач, а «расходование» этих данных (например, на звуковоспроизведение) внутри устройств происходит уже с постоянной мгновенной скоростью (обратная передача происходит похожим образом). Изохронные передачи удобны и в мультимедийных приложениях с переменной скоростью (когда используется сжатие данных, скорость их поступления может колебаться, но, конечно, до известного предела). Изохронные передачи поддерживаются шинами USB, FireWire, радиоинтерфейсом Bluetooth; изохронный трафик могут нести и обычные сети передачи данных с достаточно высокой пропускной способностью. Поддержка изохронного обмена введена и в новые интерфейсы системного уровня: AGP 3.0, PCI Express. Точная синхронизация изохронных устройств имеет свои особенности: устройствам приходится задействовать собственные (очень точные!) тактовые генераторы, поскольку непосредственной синхронизации (как в синхронных интерфейсах) у них нет. Для решения задачи синхронизации используются, например, механизмы обратной связи, позволяющие устройствам корректировать уход своих «часов». 11) Синхронные интерфейсы. Способы передачи данных и синхронизации. (10) 12)Асинхронные интерфейсы. Способы передачи данных и синхронизации.(10) 13) Общесистемные шины. Шина ISA. Шины расширения (Expansion Bus) предназначены для подключения различных адаптеров ПУ. Интерфейсы шин расширения PC ведут историю с 8-битной шины ISA. Ее открытость обеспечила появление широкого спектра плат расширений, позволивших использовать PC в различных сферах. ISA Bus (Industry Standard Architecture) — шина расширения, применявшаяся с первых моделей PC и ставшая промышленным стандартом. В классическом варианте шина имела разрядность данных 8 бит и адреса — 20 бит. Позднее разрядность данных и адреса были расширены до 16 бит и 24 бит соответсвенно. В таком виде она существует и поныне. Конструктивно шина выполнена в виде двух щелевых разъемов с шагом выводов 2,54 мм. Подмножество ISA-8 использует только 62-контактный слот (ряды А, В), в ISA-16 применяется дополнительный 36-контактный слот (ряды С, D). Шина обеспечивает возможность отображения 8-ми или 16-битных регистров на пространство ввода/вывода и памяти. Диапазон адресов памяти ограничен областью UMA (выше A0000h). Диапазон адресов ввода/вывода сверху ограничен количеством используемых для дешифрации бит адреса, нижняя граница ограничена областью адресов 0—FFh, зарезервированных под устройства системной платы. В PC была принята 10-битная адресация ввода/вывода, при которой линии адреса А[15:10] устройствами игнорировались. Таким образом, диапазон адресов устройств шины ISA ограничивается областью 100h— 3FFh, то есть всего 758 адресов 8-битных регистров. На некоторые из адресов претендуют системные устройства. Впоследствии стали применять 12-битную адресацию (диапазон l00h-FFFh). При ее использовании необходимо учитывать возможность присутствия на шине старых 10-битных адаптеров, которые «отзовутся» на адрес с подходящими ему битами А[9:0] во всей допустимой области 12-битного адреса четыре раза (у каждого 10-битного адреса будет еще по три 12-битных псевдонима). Протокол передачи данных Для передачи данных от исполнителя к задатчику предназначены циклы чтения ячейки памяти или порта ввода-вывода, для передачи данных от задатчика к исполнителю — циклы записи ячейки памяти или порта ввода-вывода. В каждом цикле текущий (на время данного цикла) задатчик формирует адрес обращения и управляющие сигналы, а в циклах записи еще и данные на шине. Адресуемое устройство-исполнитель в соответствии с полученными управляющими сигналами принимает (в цикле записи) или формирует (в цикле чтения) данные. Также оно может, при необходимости, управлять длительностью цикла и разрядностью передачи. Здесь условный сигнал CMD изображает один из следующих сигналов: SMEMR, MEMR — в цикле чтения памяти; SMEMW, MEMW — в цикле записи памяти; IOR — в цикле чтения порта ввода-вывода; IOW — в цикле записи порта ввода-вывода. В начале каждого цикла контроллер шины устанавливает адрес обращения: на линиях SA[19:0] и SBHE действительный адрес сохраняется на время всего текущего цикла; на линиях LА[23:17] адрес действителен только в начале цикла, так что требуется его «защелкивание». Каждое устройство имеет дешифратор адреса — комбинационную схему, срабатывающую только тогда, когда на шине присутствует адрес, относящийся к данному устройству. В фазе адресации устройства еще «не знают», к какому из пространств (памяти или ввода-вывода) относится выставленный адрес. Но дешифраторы адресов уже срабатывают, и, когда в следующей фазе шина управления сообщает тип операции, адресуемое устройство уже оказывается готовым к ее исполнению. Если устройство использует линии LA[23:17] (они нужны лишь для обращений к памяти выше границы FFFFFh), то они на дешифратор адреса должны проходить через регистр-защелку, «прозрачный» во время действия сигнала BALE и фиксирующий состояние выходов по его спаду. Это позволяет дешифратору, всегда вносящему некоторую задержку, начинать работу раньше, чем поступит управляющий сигнал чтения или записи. При обращении к портам ввода-вывода сигналы LА[32:17] не используются. Если устройство имеет более одного регистра (ячейки), то для выбора конкретного регистра (ячейки) ему требуется несколько линий адреса. Как правило, старшие биты шины адреса поступают на вход дешифраторов адреса, формирующих сигналы выборки устройств, а младшие биты — на адресные входы самих устройств. Тогда каждое устройство в пространстве будет занимать наиболее компактную область смежных адресов размером в 2n байт, где n — номер младшей линии адреса, поступающей на дешифратор. Из них реально необходимы 2m адресов, где m — номер самой старшей линии адреса, участвующей в выборе регистра устройства. В идеале должно быть n=m+l: при большем значении n отведенное (по дешифратору) пространство адресов не будет использовано полностью и регистры устройства будут повторяться в отведенной области 2 n-m-1 раз, то есть у них появятся адреса-псевдонимы (alias). Адреса-псевдонимы будут отличаться от истинного адреса (минимального из всех псевдонимов) на K×2 m+1, где К — целое число. Меньшее значение n недопустимо, поскольку тогда не все регистры устройства будут доступны задатчику. В принципе можно использовать дешифратор адреса, срабатывающий только на какой-то части адресов из области 2n (не кратной степени двойки), если устройству требуется «неудобное» количество регистров. Однако на практике «фигурное выпиливание» областей из пространства адресов обычно не делают, так что часть адресов может пропадать бесполезно. Разрядность данных в каждом цикле обращения определяется потребностями текущего задатчика и возможностями исполнителя. Момент помещения действительных данных на линии SD[15:0] определяется управляющими сигналами чтения/записи, так что исполнителю не требуется синхронизация с тактовым сигналом шины. В циклах чтения адресованный исполнитель должен выдать данные на шину по началу (спаду) соответствующего сигнала чтения (IOR, MEMR, SMEMR) и удерживать их до конца действия сигнала (пока не произойдет подъем сигнала). В циклах записи задатчик выставляет действительные данные несколько позже начала (спада) сигнала записи (IOW, MEMW, SMEMW). Устройство-исполнитель должно фиксировать для себя эти данные в конце цикла по подъему сигнала записи. От устройства-исполнителя не предусматривается никаких подтверждений исполнения циклов; длительность цикла устанавливает задатчик, но исполнитель может потребовать удлинения или укорочения циклов. С помощью сигнала IOCHRDY исполнитель может удлинить цикл на произвольное число тактов, при этом задатчик будет вводить дополнительные такты ожидания (wait states). Обычно контроллер шины следит за длительностью цикла и по достижении критического времени принудительно его завершает (по тайм-ауту, возможно, и не сообщая об этом событии). Слишком длинные циклы тормозят работу компьютера, а превышение длительности 15 мкс может привести к сбою регенерации и потере данных в ОЗУ. С помощью сигнала 0WS исполнитель предлагает задатчику укоротить цикл, исключив такты ожидания. Реакция задатчика на одновременное использование сигналов IOCHRDY и 0WS непредсказуема, этой ситуации следует избегать. Согласование разрядности данных Разрядность данных в каждом цикле обращения определяется потребностями текущего задатчика и возможностями исполнителя. На системной плате имеется специальный буфер, он же перестановщик байтов, который при необходимости транслирует данные с младшего байта шины на старшую или обратно. Его задача - точно согласовать размер данных, которыми обмениваются устройства. Прерывания На шине ISA имеются линии запросов маскируемых и немаскируемых аппаратных прерываний. Линии запросов маскируемых прерываний IRQ2-IRQ7 поступают на входы первичного контроллера прерываний, IRQ9-IRQ15 — на входы вторичного. Контакт В4 (IRQ2/9) запрос IRQ2 вырабатывал только у машин РХ/ХТ. На всех современных машинах (класса AT) он является запросом IRQ9, хотя на многих адаптерах (всех 8-битных) он обозначается как IRQ2. Приоритеты у запросов убывают по порядку IRQ9...IRQ15 и далее IRQ3...IRQ7. Запросы от конкретных линий могут быть замаскированы записью в регистры контроллера, общий запрет/разрешение осуществляется манипулированием флагом разрешения прерываний (IF) процессора. Устройство может использовать одну или несколько линий запроса прерывания. На используемой линии запроса устройство в покое должно формировать низкий уровень сигнала, а при возникновении условия прерывания устанавливать на нем высокий уровень запроса. Неиспользуемые линии должны быть электрически отключены от шины или же их выходные формирователи должны переводиться в третье состояние. Переход из низкого в высокий уровень является сигналом для контроллера прерываний на формирование запроса прерывания к процессору. Устройство должно удерживать высокий уровень запроса до тех пор, пока к нему не обратится программа-обработчик прерывания, что будет означать не только обнаружение, но и правильную идентификацию источника запроса прерывания. Если запрос снят преждевременно, идентификация будет некорректной. Способ подачи сигнала прерывания, принятый в ISA, — чувствительность к уровню, причем к высокому, — имеет меньшую помехозащищенность, чем срабатывание по отрицательному перепаду, и отрезает путь к нормальному разделению (совместному использованию) линий запросов. Линия IOСНК# позволяет вызывать немаскируемое прерывание (NMI), на которое процессор реагирует вне зависимости от каких-либо флагов. Это прерывание принято использовать для сообщения о серьезных ошибках, требующих реакции системы, но не для регулярной работы. Вызов NMI от данной линии разрешается установкой бита 3 (EIC) системного порта 061h, а признаком того, что прерывание NMI вызвано сигналом IOСНК#, является единичное значение бита 6 (IOCHK) того же порта. Прямое управление шиной В случае прямого управления шиной (bus mastering) инициатором обмена становится контроллер какоголибо устройства или интерфейса, но не процессор и не канал DMA. Прямое управление позволяет контроллеру, не отвлекая центральный процессор, выполнять обмен данными с высокой производительностью и, возможно, по более сложным правилам и без ограничений, присущих каналам DMA (невозможность пересечения границы страницы). Контроллер, как правило, обеспечивает обмен данными между системным ОЗУ и своим периферийным устройством или интерфейсом. В принципе он может общаться с памятью или портами другого абонента шины, но для упрощения организации всех информационных связей центральным «перевалочным пунктом» все-таки является системное ОЗУ. Получить право на управление шиной ISA может только контроллер, подключенный к 16-битному слоту. Для арбитража запросов на управление шиной от нескольких источников — центрального процессора, контроллера DMA и контроллеров-абонентов шины используется второй контроллер DMA (каналы 5-7). Устройство, желающее получить управление, выставляет запрос DRQx (x=5...7), по которому контроллер DMA запрашивает управление шиной у центрального процессора. Получив подтверждение от процессора, контроллер устанавливает сигнал AEN (для блокировки дешифрации адреса портов) и формирует сигнал DACKx. Получив этот сигнал, устройство устанавливает низкий уровень на линии MASTER, по которому контроллер шины DMA снимает сигнал AEN и освобождает линии командных сигналов. Таким образом, управление шиной переходит к данному устройству до тех пор, пока оно не снимет запрос DRQx. В режиме прямого управления шиной ISA устройство становится полновластным и бесконтрольным хозяином как самой шины, так и системы в целом (через мост шины). Если шина захватывается более чем на 15 мкс, контроллер устройства должен заботиться о регенерации памяти (см. ниже). Устройства (и память), к которым обращается задатчик шины, могут потребовать введения тактов ожидания сигналом IOCHRDY, и это требование должно удовлетворяться. 14) Общесистемные шины. Шина PCI. «Peripheral component interconnect» ― шина соединения периферийных компонентов ― является основной шиной расширения современных ПК. Шина является синхронной, фиксация всех сигналов осуществляется по фронту сигнала CLK. Номинальной частотой синхронизации считается 33 МГц, при необходимости частота может быть понижена. Начиная с версии 2.1 допускается повышение частоты до 66 МГц при согласии всех устройств на шине. С устройствами PCI процессор может взаимодействовать командами обращения к портам ввода-вывода, адресованным к областям, выделенным каждому порту при конфигурировании. Адресация устройств PCI Для PCI принята иерархия понятий адресации: шина, устройство, функция. Эти понятия фигурируют только при обращении к регистрам конфигурационного пространства. К этим регистрам обращаются на этапе конфигурирования и назначения номеров аппаратных прерываний. В дальнейшем, в ходе работы, устройства будут отзываться на обращения по назначенным им адресам памяти и портов ввода-вывода. Эти адреса принимаются с шины AD в начале каждой транзакции. Для доступа к конфигурационному пространству используются отдельные линии IDSEL. Устройством PCI называется отдельная микросхема или карта расширения, подключенная к одной из шин PCI и использующая для идентификации выделенную линию IDSEL, принадлежащую этой шине. Устройство может быть многофункциональным, т.е. состоять из множества (от 1 до 8) функций. Каждой функции отводится свое конфигурационное пространство в 256 байт. Многофункциональные устройства должны отзываться только на конфигурационные циклы с номерами функций, для которых имеется конфигурационное пространство. При этом функция «0» должна быть обязательно, номера остальных функций назначаются разработчиком устройства произвольно. В системе может присутствовать несколько шин PCI, соединенных мостами PCI. Мосты электрически отделяют интерфейсные сигналы одной шины от другой, соединяя их логически; главный мост, соединяет главную шину с ядром системы. Шины нумеруются последовательно; главная шина имеет нулевой номер. С точки зрения конфигурирования минимально адресуемой единицей является функция. Ее полный адрес состоит из трех частей: номер шины; номер устройства и номер функций. Номер устройства определяется той линией адреса (данных), к которой подключена линия IDSEL слота. В соседних слотах PCI задействуются соседние номера устройств, их нумерация определяется разработчиком системной платы. Одна карта PCI может содержать только одно устройство, поскольку ей выделяется только одна линия IDSEL. Протокол шины PCI В каждой транзакции участвуют два устройства «Master» и «Slave». PCI все транзакции трактует как пакетные. Каждая транзакция начинается фазой адреса, за которой может идти одна или несколько фаз данных. В каждый момент времени шиной может управлять только одно ведущее устройство, получившее на это право у арбитра. Каждое ведущее устройство имеет два сигнала REQ# - для запроса управления шиной и GNT# - для подтверждения права управления шиной. Устройство может начинать транзакцию (устанавливать сигнал FRAME#) только при активном сигнале GNT#. Снятие сигнала GNT# не позволяет устройству начать следующую транзакцию. Арбитражем запросов занимается специальный узел на материнской плате. Схема приоритетов определяется программированием арбитра. Для адреса (данных) используются общие мультиплексированные линии. Четыре мультиплексированные линии C\BE [3:0] обеспечивают кодирование команд в фазе адреса и разрешения байт в фазе данных. Цикл обмена на шине PCI В начале транзакции ведущее устройство формирует сигнал FRAME#, по шине AD передается адрес SLAVE, а по линиям С\ВЕ — информация о типе транзакции. Адресованное SLAVE устройство отзывается сигналом DEVSEL#. MASTER устройство указывает на свою готовность к обмену данными сигналом IRDY#. Когда к обмену данными будет готово SLAVE устройство, оно установит сигнал TRDY#. Данные будут передаваться только при одновременном наличии сигналов IRDY# и TRDY#. С помощью этих сигналов ведущее устройство и SLAVE устройство согласуют свои скорости, вводя такты ожидания. Количество фаз данных в пакете явно не указывается, но перед последней фазой данных ведущее устройство при введенном сигнале IRDY# снимает сигнал FRAME#. В одиночных транзакциях сигнал FRAME# активен лишь один такт. Если устройство не поддерживает пакетные транзакции, то оно должно потребовать прекращения пакетной транзакции во время первой фазы данных (сигнал STOP# вводится одновременно с TRDY#). В ответ ведущее устройство завершит данную транзакцию и продолжит обмен последующей транзакцией с новым значением адреса. После последней фазы данных ведущее устройство снимает сигнал IRDY#, и шина переходит в состояние покоя (PCI Idle) — оба сигнала FRAME# и IRDY# находятся в пассивном состоянии. Протокол квитирования обеспечивает надежность обмена — ведущее устройство всегда получает информацию об отработке транзакции SLAVE устройством. Дополнительно линии AD[31:0] и С\ВЕ[3:0] и в фазе адреса, и в фазе данных защищены битом паритета PAR. При обнаружении ошибки MASER вырабатывается сигнал PERR#. Каждая транзакция на шине должна быть завершена планово или прекращена, при этом шина должна перейти в состояние покоя (сигналы FRAME# и IRDY# пассивны). Завершение транзакции выполняется либо по инициативе ведущего устройства, либо по инициативе SLAVE устройства. Ведущее устройство может завершить транзакцию одним из следующих способов. 1. Нормальное завершение ― выполняется по окончании обмена данными. 2. Завершение по тайм-ауту происходит, когда во время транзакции у устройства отбирают право на управление шиной (снятием сигнала GNT#). 3. Транзакция отвергается, когда в течение заданного времени ведущее устройство не получает ответа от SLAVE устройства (DEVSEL#). Транзакция может быть прекращена по инициативе SLAVE устройства. Для этого оно может ввести сигнал STOP#. Возможны три типа прекращения. 1. Повтор (Retry) — сигнал STOP# вводится при пассивном сигнале TRDY# до первой фазы данных. Эта ситуация возникает, когда ЦУ из-за внутренней занятости не успевает выдать первые данные в положенный срок (16 тактов). Повтор является указанием ведущему устройству на необходимость нового запуска той же транзакции. 2. Отключение (Disconnect) — сигнал STOP# вводится во время или после первой фазы данных. Если сигнал STOP# введен при активном сигнале TRDY# очередной фазы данных, то эти данные передаются и на том транзакция завершается. Если сигнал STOP# введен при пассивном сигнале TRDY#, то транзакция завершается без передачи данных очередной фазы. Отключение производится, когда SLAVE устройство неспособно своевременно выдать или принять очередную порцию данных. 3. Отказ (Target-Abort) — сигнал STOP# вводится одновременно со снятием сигнала DEVSEL# (в предыдущих случаях во время появление сигнала STOP# сигнал DEVSEL# был активен). После этого данные уже не передаются. Отказ вводится, когда SLAVE устройство обнаруживает фатальную ошибку. Прерывания Устройство PCI вводит сигнал прерывания низким уровнем на выбранную линию INTA#, INTB#, INTC# или INTD#. Этот сигнал должен удерживаться до тех пор, пока программный драйвер, вызванный по прерыванию, не сбросит запрос прерывания, обратившись по шине к данному устройству. Если после этого контроллер прерываний снова обнаруживает низкий уровень на линии запроса, это означает, что запрос на ту же линию ввело другое устройство, разделяющее данную линию с первым, и оно тоже требует обслуживания. Каждая функция устройства PCI может задействовать свою линию запроса прерывания, но должно быть готовым к ее разделению (совместному использованию) с другими устройствами. Назначение прерываний устройствам (функциям) выполняет процедура POST. Драйвер, работающий с устройством PCI, определяет вектор прерывания, доставшийся устройству (точнее, функции), чтением конфигурационного регистра Interrupt Line. 15) Параллельный порт. LPT. Интерфейс LPT также часто называют параллельным (имеется ввиду параллельный порт). Из его названия следует, что обмн данными происходит в этом интерфейсе параллельно Это означает, что биты передаются не один за другим, как это делается в последовательных интерфейсах, а несколько бит передаются одновременно (паралельно), или, точнее, рядом, друг возле друга. То число бит, которое может быть передано за один такт, определяет разрядность интерфейса. Интерфейс LPT является 8-разрядным. Существует также множество других паралельных интерфейсов (например, SCSI, PCI и др.), поэтому название "параллельный" здесь не совсем корректно и оно вовсе не означает, что LPT "параллельнее" остальных - просто исторически сложилось такое название, и нет особых причин его менять. Сегодня параллельный порт есть в каждом компьютере. Первоначально он предназначался исключительно для подключения принтера (LPT означает Line PrinTer), но впоследствии стали появляться и другие устройства: сканеры, мобильные дисководы, цифровые фотоаппараты, так что сейчас работа параллельного интерфейса не ограничивается только принтером, хотя в большинстве случаев это именно так и есть. LPT также часто называют Centronics в честь соответствующей фирмы, ставшей основным разработчиком параллельного порта. Соответственно и кабель для подключения принтера к РС тоже называется Centronics. Но это тоже не совсем правильно, так как разъем, непосредственно подключаемый к компьютеру, представленный в виде 25-контактной вилки (рисунок, верхняя часть), называют Amphenolstakcer, а собственно разъем Centronics находится на другом конце кабеля, идущего к устройству (нижняя часть рисунка), он тоже представлен в виде вилки, но имеет 36 контактов. Передача данных по кабелю может вестись только в одном направении. Но некоторые устройства (современные принтеры, дисководы ZIP и т. д.) позволяют осуществлять и обратную связь. Для это го нужен другой кабель, называемый Bitronics. Внешне он (и его разъемы) ничем не отличается от кабеля Centronics, но там нужен улучшенный параллельный порт (EPP/ECP). Схема цоколевки Розетка (устанавливается на корпусе компьютера) Вилка (устанавливается на кабеле) Названия и функциональные назначения выводов № вывода Обозначение Описание 15 /ERROR Error (Ошибка) 1 /STROBE Strobe (Строб) 16 /INIT Initialize (Инициализация) 2 D0 Data Bit 0 (данные, нулевой бит) 17 /SELIN Select In (Выбор) 3 D1 Data Bit 1 (данные, 1-й бит) 18 GND Signal Ground (Корпус) 4 D2 Data Bit 2 (данные, 2-й бит) 19 GND Signal Ground (Корпус) 5 D3 Data Bit 3 (данные, 3-й бит) 20 GND Signal Ground (Корпус) 6 D4 Data Bit 4 (данные, 4-й бит) 21 GND Signal Ground (Корпус) 7 D5 Data Bit 5 (данные, 5-й бит) 22 GND Signal Ground (Корпус) 8 D6 Data Bit 6 (данные, 6-й бит) 23 GND Signal Ground (Корпус) 9 D7 Data Bit 7 (данные, 7-й бит) 24 GND Signal Ground (Корпус) 10 /ACK Acknowledge (Подтверждение) 25 GND Signal Ground (Корпус) 11 BUSY Busy (Занято) 12 PE Paper End (Нет бумаги) 13 SEL Select (Выбор) 14 /AUTOFD Autofeed (Перевод строки) 16) Последовательный порт. RS-232. RS-232 (англ. Recommended Standard 232) — в телекоммуникациях, стандарт последовательной синхронной и асинхронной передачи двоичных данных между терминалом (англ. Data Terminal Equipment, DTE) и коммуникационным устройством (англ. Data Communications Equipment, DCE). Описание RS-232 — интерфейс передачи информации между двумя устройствами на расстоянии до 15 метров. Информация передается по проводам с уровнями сигналов, отличающимися от стандартных 5 В, для обеспечения большей устойчивости к помехам. Логической "1" соответствует положительное напряжение (от +5 до +15 В для передатчика), а логическому "0" отрицательное (от -5 до -15 В для передатчика). Приемник воспринимает сигналы от +3 до +25 В для логической "1", и от -3 до -25 В для логического "0". Асинхронная передача данных осуществляется с установленной скоростью при синхронизации уровнем сигнала стартового импульса. Назначение Интерфейс RS-232-C был разработан для простого применения, однозначно определяемого по его названию: «Интерфейс между терминальным оборудованием и связным оборудованием с обменом по последовательному двоичному коду». Чаще всего используется в промышленном и узкоспециальном оборудовании, встраиваемых устройствах. Иногда присутствует на современных персональных компьютерах. Принцип работы По структуре это обычный асинхронный последовательный протокол, то есть передающая сторона по очереди выдает в линию 0 и 1, а принимающая отслеживает их и запоминает. Данные передаются пакетами по одному байту (8 бит). Вначале передаётся стартовый бит, противоположной полярности состоянию незанятой (idle) линии, после чего передаётся непосредственно кадр полезной информации, от 5 до 8-ми бит. Увидев стартовый бит, приемник выжидает интервал T1 и считывает первый бит, потом через интервалы T2 считывает остальные информационные биты. Последний бит — стоповый бит (состояние незанятой линии), говорящий о том, что передача завершена. Возможно 1, 1.5, 2 стоповых бита. В конце байта, перед стоп битом, может передаваться бит четности (parity bit) для контроля качества передачи. Он позволяет выявить ошибку в нечетное число бит (используется, так как наиболее вероятна ошибка в 1 бит). 17) Последовательный порт. RS-485. RS-485 (RS485 — англ. Recommended Standard 485, EIA-485 — англ. Electronic Industries Alliance-485) — стандарт передачи данных по двухпроводному полудуплексномумноготочечному последовательному каналу связи. Стандарт RS-485 совместно разработан двумя ассоциациями: Ассоциацией электронной промышленности (EIA — Electronics Industries Association) и Ассоциацией промышленности средств связи (TIA — Telecommunications Industry Association). Ранее EIA маркировала все свои стандарты префиксом «RS» (англ. Recommended Standard — Рекомендованный стандарт). Многие инженеры продолжают использовать это обозначение, однако EIA/TIA официально заменил «RS» на «EIA/TIA» с целью облегчить идентификацию происхождения своих стандартов. На сегодняшний день, различные расширения стандарта RS-485 охватывают широкое разнообразие приложений, этот стандарт стал основой для создания целого семейства промышленных сетей широко используемых в промышленной автоматизации. В стандарте RS-485 для передачи и приёма данных часто используется единственная витая пара проводов. Передача данных осуществляется с помощью дифференциальных сигналов. По одному проводу (условно А) идет оригинальный сигнал, а по-другому (условно В)- его инверсная копия Другими словами, если на одном проводе "1", то на другом "0" и наоборот. Таким образом, между проводниками витой пары всегда есть разность потенциалов: при "1" она положительна, при "0" -отрицательна. Примечание: 1. Стандарт RS-485 оговаривает только электрические характеристики, физический уровень (среду), но не программную платформу. 2. Стандарт RS-485 не оговаривает: возможность объединения несимметричных и симметричных цепей, параметры качества сигнала, уровень искажений (%), методы доступа к линии связи, протокол обмена, аппаратную конфигурацию (среда обмена, кабель), типы соединителей, разъёмов, колодок, нумерацию контактов, качество источника питания (стабилизация, пульсация, допуск), отражения в длинных линиях. 18) Драйверы ПУ. Основные понятия. Классификация ПУ по способу программного взаимодействия. Драйвер устройства — это системная программа, которая под управлением ОС выполняет все операции с конкретным периферийным устройством. Драйвер является как бы посредником между ОС и устройством. Перед драйверами стоят две одинаково важные, но трудно совместимые задачи: · обеспечить возможность стандартного обращения к любому устройству, скрывая от остальных частей ОС специфические особенности отдельных устройств; · добиться максимально эффективного использования всех функциональных возможностей и особенностей конкретных устройств. Возможность стандартными средствами работать с разными устройствами очень желательна с точки зрения архитектуры ОС и удобства программирования. Было бы крайне противно, если бы при написании прикладной программы нужно было заранее учитывать, какая модель принтера будет использоваться для выдачи результатов. Наоборот, в большинстве случаев прикладной программист даже не должен знать, будет ли это принтер или плоттер-графопостроитель, или же результаты будут отображаться на экране. Большие проблемы могли бы возникнуть и при замене одной модели принтера, диска, монитора на другую, если бы такая замена потребовала переписывать заново все программы, работающие с этим устройством. Другое дело, если все особенности устройства учитываются в одном-единственном месте, а именно — в драйвере этого устройства. Разумеется, полностью скрыть все различия между устройствами невозможно. Никаким образом нельзя приравнять, скажем, диск к клавиатуре, и даже разные типы дисков похожи, но не совсем. Например, для дискет можно выполнить такую операцию, как проверка смены носителя (фактически при этом проверяется, открывался ли карман дисковода). Для жестких дисков эта операция не имеет смысла. В большинстве ОС различаются, как минимум, два разных типа драйверов: для символьных и для блочных устройств. Обращаясь к драйверу, ОС указывает функцию, которую требуется выполнить. Список этих функций общий для драйверов различных устройств, при этом каждый драйвер может реализовать только те функции, которые имеют смысл для данного устройства. Наиболее общими являются функции чтения данных, записи данных, инициализации устройства (эта функция вызывается системой один раз, сразу после загрузки), открытия и закрытия устройства (используются, когда символьное устройство открывается как файл). Для блочных устройств имеют смысл функции форматирования, поиска сектора. Для символьных устройств ввода — функция «неразрушающего ввода», т.е. проверки очередного символа без его изъятия из входного потока. Для того, чтобы учесть все разнообразие возможных операций, в число функций драйвера вводят такую, как «выполнение специальных функций», и здесь уже для каждого устройства определен свой набор этих специальных функций. Типичный драйвер устройства содержит, как минимум, три основных блока: · заголовок драйвера; · блок стратегии; · блок прерываний. Заголовок содержит различную информацию о данном драйвере и об управляемом устройстве. Сюда может включаться имя устройства, тип устройства, число однотипных устройств, обслуживаемых одним драйвером, объем памяти на устройстве и т.п. Заголовок содержит также адреса блока стратегии и блока прерываний. В обязанность блока стратегии входит прием заявок на выполнение операции, ведение очереди заявок (в многозадачных системах, а также при асинхронных операциях, выполнения могут дожидаться несколько заявок), а также запуск операции и ее завершение. Заявка на выполнение операции представляет собой стандартную запись, формируемую системой перед обращением к драйверу. Заявка содержит код требуемой функции драйвера и сведения об адресе данных в памяти и на устройстве, о количестве передаваемых данных. Заявка также содержит поле, в которое драйвер должен будет записать код завершения операции (обычно 0 — нормально выполненная операция, другие значения — коды ошибок). Блок прерываний выполняет примерно тот алгоритм, который в п. 2.5.1 назывался вводом/выводом по прерываниям. Система вызывает этот блок, когда получает сигнал прерывания от устройства, обслуживаемого драйвером. Закончив выполнение заявки, блок прерываний возвращает управление блоку стратегии для завершения операции. Помимо трех основных блоков, в разных ОС драйверы могут содержать, например, блок инициализации (он используется один раз при загрузке ОС, а затем может быть выгружен из памяти), блок изменения параметров драйвера и др. В последние годы возрастающее усложнение периферийных устройств и самих ОС сделало популярной многоуровневую схему использования драйверов. По этой схеме, помимо описанных выше низкоуровневых драйверов аппаратуры, допускается еще создание высокоуровневых драйверов, лежащих между драйверами аппаратуры и остальной частью ОС. Высокоуровневый драйвер не содержит блока прерываний, он принимает заявки от системы, преобразует данные тем или иным образом, а затем вызывает низкоуровневый драйвер для работы с устройством. Например, высокоуровневый графический драйвер может преобразовывать команды рисования фигур, заливок, текста в набор команд конкретной модели принтера, а связанный с ним драйвер параллельного порта отвечает за передачу этих команд принтеру. Для диска можно реализовать в виде отдельного драйвера алгоритм шифрации данных, которые потом передаются обычному драйверу диска. ПУ: символьные, блочные (????????????) 19) Драйверы ПУ под UNIX. Виртуальная файловая система. Драйверы в ОС UNIX довольно точно соответствуют стандартной схеме драйвера, приведенной в п. 2.7. Тем не менее, ввиду существенных различий в работе с символьными и с блочными устройствами, в UNIX различаются два основных типа драйверов: символьные и блочные. Для символьных устройств используются только символьные драйверы. Для каждого блочного устройства обычно имеется два разных драйвера: блочный и символьный. Блочный драйвер позволяет выполнять операции только с целым числом блоков, как и положено работать с блочными устройствами. Символьный драйвер блочного устройства является более высокоуровневой программой, которая имитирует выполнение операций чтения и записи произвольного количества байт, на самом деле используя обращения к блочному драйверу. Помимо драйверов реальных физических устройств, система может включать драйверы «псевдоустройств». Примером может служить драйвер, обеспечивающий обращение программ к содержимому системной памяти. При загрузке системы формируются две таблицы, для символьных и для блочных драйверов. Строки таблицы соответствуют конкретным драйверам, а столбцы — функциям, которые должен уметь выполнять драйвер, так что в ячейках таблицы содержатся адреса, по которым вызываются функции драйвера. Набор функций для символьных и для блочных драйверов слегка разнится, поэтому используются две разных таблицы. К наиболее важным функциям драйвера относятся следующие. · Открытие устройства. Как минимум, при этом увеличивается счетчик текущих обращений к устройству, что позволяет ставить обращения в очередь, если устройство занято. Некоторые устройства при открытии могут выполнять еще какие-то начальные действия. · Закрытие устройства — операция, противоположная открытию. · Обработка прерывания — выполняет ввод или вывод очередной порции данных, когда устройство переходит в состояние готовности. · Опрос устройства — эта функция выполняется для тех устройств, которые не генерируют прерываний, или если при разработке драйвера почему-либо решено не использовать прерывания от устройств. Опрос выполняется не постоянно, а с некоторым периодом, по прерыванию от таймера. · Чтение данных с устройства. · Запись данных на устройство. · Вызов стратегии. Это способ выполнения операций ввода/вывода, характерный для блочных устройств. При этом запрос может быть поставлен в очередь. Запрос в ряде случаев может быть удовлетворен путем обращения к дисковому кэшу (см. п. 2.6.6), без выполнения чтения или записи на устройство. · Выполнение специальных функций. Набор этих функций зависит от конкретного устройства. Это может быть, например, опрос или установка текущего режима работы устройства, форматирование дорожек диска, перемотка ленты и т.п. Устройство как специальный файл Интересной отличительной особенностью UNIX является то, что для работы с периферийными устройствами прикладные программы могут и должны использовать те же средства, что для работы с файлами. Вообще, устройства в UNIX представлены как специальные файлы, вписанные в каталог файловой системы наравне с обычными файлами. Каждому драйверу устройства соответствует отдельный специальный файл, символьный или блочный, в зависимости от типа драйвера. Как правило, все специальные файлы размещаются в каталоге /dev. Чтобы начать работу с устройством, программа должна вызвать функцию открытия файла, указав ей имя специального файла. При этом происходит обращение к функции открытия из драйвера соответствующего устройства. С каждым специальным файлом связаны два числа, называемые старшим и младшим номерами устройства. Старший номер определяет номер строки в таблице символьных либо блочных драйверов. Младший номер передается драйверу как дополнительный параметр. Он может означать, например, номер конкретного дискового устройства. 20) Драйверы ПУ под UNIX. Доступ к пространству портов ввода/вывода и устройствам отображаемым в память. Команда dd. dd (англ. dataset definition — oпределение набора данных) — программа Unix, предназначенная как для копирования, так и для конвертации файлов. Введение Поскольку в Unix очень многие объекты являются файлами, спектр применения dd гораздо более широк, чем кажется на первый взгляд. Регулярно возникает необходимость не просто скопировать файл или несколько файлов (для чего предназначена утилита cp), а скопировать первые n байт файла, пропустить m байт от начала, прочитать файл с дефектного носителя, транслировать содержимое файла в ASCII, «развернуть» порядок байт в файле (Little-Endian vs. Big-Endian),[1] просто скопировать очень большой файл или все вместе взятое. Для этой цели и служит dd. Кроме всего прочего, данная утилита позволяет скопировать регионы из файлов «сырых» устройств, например, сделать резервную копию загрузочного сектора жёсткого диска, или прочитать фиксированные блоки данных из специальных файлов, таких, как /dev/zero или /dev/random.[2] Название утилиты dd иногда в шутку расшифровывают, как «disk destroyer», «data destroyer» или «delete data», так как утилита позволяет производить низкоуровневые операции на жёстких дисках — при малейшей ошибке, такой, как реверс параметров if и of, можно потерять часть данных на диске (или даже все данные). Некоторые параметры При написании статьи были использованы материалы man dd, описывающие версию dd от GNU. Версии dd на других операционных системах могут отличаться. Базовые параметры if=файл — читает данные из файла вместо стандартного ввода. of=файл — пишет данные в файл вместо стандартного вывода. bs=n — размер блока. ibs=nn и obs=nn — задаёт, сколько байтов нужно считывать или записывать за раз. count=n — сколько блоков скопировать. seek=n — сколько блоков пропустить от начала в результирующем файле. skip=n — сколько блоков от начала файла пропустить перед началом копирования. conv=фильтр,фильтр — применить фильтры конвертациии. ascii — сконвертировать в ASCII из EBCDIC… ebcdic — …и наоборот. block — выравнивание блоков. lcase — преобразовать к нижнему регистру. ucase — преобразовать к верхнему регистру. swap — менять местами пары байт. noerror — игнорировать ошибки ввода-вывода. 21)Периферийные устройства ввода. Клавиатура. Когда пользователь нажимает клавишу, клавиатура переходит в состояние готовности и по этому поводу посылает сигнал аппаратного прерывания Int 09h. Одновременно в порт, к которому подключена клавиатура, посылается скан-код нажатия клавиши. Этот код представляет собой однобайтовое число, означающее порядковый номер нажатой клавиши. Если клавиша долго удерживается нажатой, то через некоторое время начинается «автоповтор» — сигнал прерывания и скан-код посылаются многократно. Наконец, когда клавиша отпускается, генерируется еще одно прерывание и посылается скан-код отпускания клавиши, который отличается от кода нажатия единичным значением старшего бита. Этим практически исчерпываются аппаратные события, связанные с клавиатурой. Все остальное делается программно. На самом деле, все происходило именно так со старой, 83-клавишной клавиатурой компьютеров IBM PC XT. Современные клавиатуры за одно нажатие умудряются послать от 1 до 4 скан-кодов подряд. Причины этого объяснять долго и не очень интересно. Подпрограмма BIOS, обрабатывающая аппаратное прерывание от клавиатуры, должна, во-первых, запоминать текущее состояние клавиатуры: нажаты или нет «сдвиговые» клавиши Shift, Ctrl, Alt, включены или нет режимыCaps Lock, Num Lock. Во-вторых, обработчик должен с учетом этого состояния определить, какой символ хотел ввести пользователь. Одна и та же клавиша может, например, означать букву ‘Z’ прописную или строчную, русскую букву ‘Я’ прописную или строчную, а также быть частью комбинаций Ctrl+Z, Alt+Z. Соответствующий символ будет помещаться в буфер клавиатуры в виде двух байт: скан-код нажатой клавиши и ASCII-код символа. Для некоторых клавиш и комбинаций, которым не соответствует никакой ASCII-код (например, F1, Insert, Ctrl+Home, Alt+буква,à), фирма IBM разработала собственный набор «расширенных» кодов. Буфер клавиатуры может вместить до 15 введенных символов, а при переполнении начинает противно пищать. Программное прерывание Int 16h также обрабатывается BIOS’ом. Его назначение — удовлетворять запросы программ, обращающихся к клавиатуре. Наиболее часто используются следующие три функции этого прерывания. · Ввод символа с ожиданием. Эта функция возвращает значение кодов очередного символа из буфера клавиатуры и удаляет этот символ из буфера. Если буфер был пуст, функция выполняет активное ожидание до тех пор, пока при обработке очередного нажатия клавиши в буфере не появится введенный символ. · Ввод символа без ожидания. Он отличается тем, что при пустом буфере не происходит ожидания, а возвращается соответствующий признак. Без этой функции было бы невозможно запрограммировать большую часть игр. · Опрос состояния клавиатуры. Возвращает информацию о текущем состоянии «сдвиговых» клавиш. Прикладные программы могут вызывать либо прерывание Int 16h, либо одну из функций DOS, предназначенных для ввода символов с консоли. Следует подчеркнуть, что эти функции работают не с клавиатурой, а с устройством CON (консолью оператора), через драйвер этого устройства. Конечно, практически всегда устройство CON — это и есть клавиатура (плюс еще и экран монитора, который используется при выводе символов на консоль). Однако теоретически есть возможность написать нестандартный драйвер устройства CON, который будет брать вводимые символы, например, с удаленного терминала, через модем. Или в качестве консольного устройства можно использовать пишущую машинку, как это и делалось раньше, до широкого распространения мониторов. Набор функций DOS для ввода с консоли довольно разнообразен. Однако ни одна из этих функций не использует особенностей клавиатуры как устройства. В частности, функции DOS не знают понятия «состояние клавиатуры». Зато набор функций включает ввод с «эхо-отображением» введенного символа на устройстве CON (т.е. на экране) или без отображения, с ожиданием или без ожидания, ввод одного символа или сразу строки (завершающейся нажатиемEnter), а также ввод с предварительной очисткой буфера (чтобы давно завалявшиеся там символы не были случайно введены как ответ на задаваемый программой вопрос). 22)Периферийные устройства ввода. Мышь (механическая, оптико-механическая, оптическая). Манипуля́тор «мышь» (в обиходе просто «мышь» или «мышка») — одно из указательных устройств ввода, обеспечивающее интерфейс пользователя с компьютером. Датчики перемещения В процессе «эволюции» компьютерной мыши наибольшие изменения претерпели датчики перемещения. Прямой привод Изначальная конструкция датчика перемещения мыши, изобретённой Дугласом Энгельбартом в Стенфордском исследовательском институте в 1963 году, состояла из двух перпендикулярных колес, выступающих из корпуса устройства. При перемещении колеса мыши крутились каждое в своем измерении. Такая конструкция имела много недостатков и довольно скоро была заменена на мышь с шаровым приводом. Шаровой привод В шаровом приводе движение мыши передается на выступающий из корпуса обрезиненный стальной шарик (его вес и резиновое покрытие обеспечивают хорошее сцепление с рабочей поверхностью). Два прижатых к шарику ролика снимают его движения по каждому из измерений и передают их на датчики, преобразующие эти движения в электрические сигналы. Основной недостаток шарового привода — загрязнение шарика и снимающих роликов, приводящее к заеданию мыши и необходимости в периодической её чистке (отчасти эта проблема сглаживалась путём металлизации роликов). Несмотря на недостатки, шаровой привод долгое время доминировал, успешно конкурируя с альтернативными схемами датчиков. В настоящее время шаровые мыши почти полностью вытеснены оптическими мышами второго поколения. Существовало два варианта датчиков для шарового привода. Контактные датчики Контактный датчик представляет собой текстолитовый диск с лучевидными металлическими дорожками и тремя контактами, прижатыми к нему. Такой датчик достался шаровой мыши «в наследство» от прямого привода. Основными недостатками контактных датчиков является окисление контактов, быстрый износ и невысокая точность. Поэтому со временем все мыши перешли на бесконтактные оптопарные датчики. Оптопарные (оптомеханические) датчики Оптронный датчик состоит из двойной оптопары — светодиода и двух фотодиодов (обычно — инфракрасных) и диска с отверстиями или лучевидными прорезями, перекрывающего световой поток по мере вращения. При перемещении мыши диск вращается, и с фотодиодов снимается сигнал с частотой, соответствующей скорости перемещения мыши. Второй фотодиод, смещённый на некоторый угол или имеющий на диске датчика смещённую систему отверстий/прорезей, служит для определения направления вращения диска (свет на нём появляется/исчезает раньше или позже, чем на первом, в зависимости от направления вращения). Оптические мыши первого поколения Оптические датчики призваны непосредственно отслеживать перемещение рабочей поверхности относительно мыши. Исключение механической составляющей обеспечивало более высокую надёжность и позволяло увеличить разрешающую способность детектора. Первое поколение оптических датчиков было представлено различными схемами оптопарных датчиков с непрямой оптической связью — светоизлучающих и воспринимающих отражение от рабочей поверхности светочувствительных диодов. Такие датчики имели одно общее свойство — они требовали наличия на рабочей поверхности (мышином коврике) специальной штриховки (перпендикулярными или ромбовидными линиями). На некоторых ковриках эти штриховки выполнялись красками, невидимыми при обычном свете (такие коврики даже могли иметь рисунок). Недостатками таких датчиков обычно называют: необходимость использования специального коврика и невозможность его замены другим. Кроме всего прочего, коврики разных оптических мышей часто не были взаимозаменяемыми и не выпускались отдельно; необходимость определённой ориентации мыши относительно коврика, в противном случае мышь работала неправильно; чувствительность мыши к загрязнению коврика (ведь он соприкасается с рукой пользователя) — датчик неуверенно воспринимал штриховку на загрязнённых местах коврика; высокую стоимость устройства. В СССР оптические мыши первого поколения, как правило, встречались только в зарубежных специализированных вычислительных комплексах. Оптические мыши второго поколения Второе поколение оптических мышей имеет более сложную начинку. В нижней части мыши установлен специальный светодиод, который подсвечивает поверхность, по которой перемещается мышь. Миниатюрная камера «фотографирует» поверхность более тысячи раз в секунду, передавая эти данные процессору, который и делает выводы об изменении координат. Оптические мыши второго поколения имеют огромное преимущество перед первым: они не требуют специального коврика и работают практически на любых поверхностях, кроме зеркальных. Они также не нуждаются в чистке. Предполагалось, что такие мыши будут работать на произвольной поверхности, однако вскоре выяснилось, что многие продаваемые модели (в особенности первые широко продаваемые устройства) не так уж и безразличны к рисункам на коврике. На некоторых участках рисунка графический процессор способен сильно ошибаться, что приводит к хаотичным движениям указателя, абсолютно неадекватным реальному перемещению. Для склонных к таким сбоям мышей необходимо подобрать коврик с иным рисунком или вовсе с однотонным покрытием. Отдельные модели также склонны к детектированию мелких движений при нахождении мыши в состоянии покоя, что проявляется дрожанием указателя на экране, иногда с тенденцией сползания в ту или иную сторону. Датчики второго поколения постепенно совершенствуются, и в настоящее время мыши, склонные к сбоям, встречаются гораздо реже. Кроме совершенствования датчиков, некоторые модели оборудуются двумя датчиками перемещения сразу, что позволяет, анализируя изменения сразу на двух участках поверхности, исключать возможные ошибки. Такие мыши иногда способны работать на стеклянных, оргстеклянных и зеркальных поверхностях (на которых не работают другие мыши). Также выпускаются коврики для мышей, специально ориентированные на оптические мыши. Например, коврик, имеющий на поверхности силиконовую плёнку с взвесью блёсток (предполагается, что оптический сенсор гораздо чётче определяет перемещения по такой поверхности). Недостатком данной мыши является сложность ее одновременной работы с графическими планшетами, последние ввиду своей аппаратной особенности иногда теряют истинное направление сигнала при движении пера и начинают искажать траекторию движения инструмента при рисовании. При использовании мышей с шаровым приводом подобных отклонений не наблюдается. Для устранения данной проблемы рекомендуется использовать лазерные манипуляторы. Также, к недостаткам оптических мышей некоторые люди относят свечение таких мышей даже при выключенном компьютере(большинство дешёвых оптических мышей имеют полупрозрачный корпус, пропускающий красный свет диодов, и мешающий уснуть в случае, если компьютер находится в спальне). Лазерные мыши В последние годы была разработана новая, более совершенная разновидность оптического датчика, использующего для подсветки полупроводниковый лазер. О недостатках таких датчиков пока известно мало, но известно об их преимуществах: более высоких надёжности и разрешении успешной работе на стеклянных и зеркальных поверхностях (недоступных оптическим мышам) отсутствии заметного свечения (сенсору достаточно слабой подсветки лазером видимого или, возможно, инфракрасного диапазона) низком энергопотреблении Индукционные мыши Графический планшет с индукционной мышью Индукционные мыши используют специальный коврик, работающий по принципу графического планшета или собственно входят в комплект графического планшета. Некоторые планшеты имеют в своем составе манипулятор, похожий на мышь со стеклянным перекрестием, работающий по тому же принципу, однако немного отличающийся реализацией, что позволяет достичь повышенной точности позиционирования за счёт увеличения диаметра чувствительной катушки и вынесения её из устройства в зону видимости пользователя. Индукционные мыши имеют хорошую точность, и их не нужно правильно ориентировать. Индукционная мышь может быть «беспроводной» (к компьютеру подключается планшет, на котором она работает), и иметь индукционное же питание, следовательно, не требовать аккумуляторов, как обычные беспроводные мыши. Мышь в комплекте графического планшета позволит сэкономить немного места на столе (при условии, что на нём постоянно находится планшет). Индукционные мыши редки, дороги и не всегда удобны. Мышь для графического планшета практически невозможно поменять на другую (например, больше подходящую по руке, и т. п.). Гироскопические мыши Мышь, оснащённая гироскопом, распознаёт движение не только на поверхности, но и в пространстве: её можно взять со стола и управлять движением кисти в воздухе. Гироскопические датчики совершенствуются, например по заявлению Logitech, механические датчики выполненные по её технологии MEMS, используемые, например в мышиMX Air миниатюрнее традиционных гироскопических. 23)Переферийные устройтва вывода. Принтеры ( знаковые, матричные, струйные, лазерные). Принтер(от англ. print - печать) - периферийное устройство компьютера, предназначенное для перевода текста или графики на физический носитель, из как правило, хранящегося в электронном виде. Классификация По принципу переноса изображения на носитель принтеры делятся на: литерные; матричные; лазерные (также светодиодные принтеры); струйные; сублимационные; термические, По количеству цветов печати — на чёрно-белые (монохромные) и цветные. Матричные принтеры Матричные принтеры — старейшие из ныне применяемых типов принтеров, их механизм был изобретён в 1964 году японской корпорацией Seiko Epson.[источник не указан 69 дней] Изображение формируется печатающей головкой, которая состоит из набора иголок (игольчатая матрица), приводимых в действиеэлектромагнитами. Головка передвигается построчно вдоль листа, при этом иголки ударяют по бумаге через красящую ленту, формируя точечное изображение. Основными недостатками матричных принтеров являются монохромность (хотя существовали и цветные матричные принтеры, по очень высокой цене), низкая скорость работы и высокий уровень шума, который достигает 25 дБ. Выпускаются также высокоскоростные линейно-матричные принтеры, в которых большое количество иголок равномерно расположены на челночном механизме (фрете) по всей ширине листа. Матричные принтеры, несмотря на полное вытеснение их из бытовой и офисной сферы, до сих пор достаточно широко используются в некоторых областях (банковское дело - печать документов под копирку, и др.) Струйные принтеры Принцип действия струйных принтеров похож на матричные принтеры тем, что изображение на носителе формируется из точек. Но вместо головок с иголками в струйных принтерах используется матрица сопел (т. н. головка), печатающая жидкими красителями.Печатающая головка может быть встроена в картриджи с красителями (в основном такой подход используется компаниями Hewlett-Packard, Lexmark), а может и является деталью принтера, а сменные картриджи содержат только краситель (Epson, Canon). Существуют два способа технической реализации способа распыления красителя: Пьезоэлектрический (Piezoelectric Ink Jet) — над соплом расположен пьезокристалл с диафрагмой. Когда на пьезоэлемент подаётсяэлектрический ток, он изгибается и тянет за собой диафрагму — формируется капля, которая впоследствии выталкивается на бумагу. Широкое распространение получила в струйных принтерах компании Epson. Технология позволяет изменять размер капли. Термический (Thermal Ink Jet) (также называемый BubbleJet, разработчик — компания Canon, принцип был разработан в конце 1970-х годов) — в сопле расположен микроскопический нагревательный элемент, который при прохождении электрического тока мгновенно нагревается до температуры около 500 °C, при нагревании в чернилах образуются газовые пузырьки (англ. bubbles — отсюда и название технологии), которые выталкивают капли жидкости из сопла на носитель. Печатающие головки струйных принтеров создаются с использованием следующих типов подачи красителя: Непрерывная подача (Continuous Ink Jet) — подача красителя во время печати происходит непрерывно, факт попадания красителя на запечатываемую поверхность определяется модулятором потока красителя (утверждается, что патент на данный способ печати выдан Вильяму Томпсону (William Thomson) в 1867 году[источник не указан 211 дней]). В технической реализации такой печатающей головки в сопло под давлением подаётся краситель, который на выходе из сопла разбивается на последовательность микро капель (объёмом нескольких десятков пиколитров), которым дополнительно сообщается электрический заряд. Разбиение потока красителя на капли происходит расположенным на сопле пьезокристаллом, на котором формируется акустическая волна (частотой в десятки килогерц). Отклонение потока капель производится электростатической отклоняющей системой (дефлектором). Те капли красителя, которые не должны попасть на запечатываемую поверхность, собираются в сборник красителя и, как правило, возвращаются обратно в основной резервуар с красителем. Первый струйный принтер, изготовленный с использованием данного способа подачи красителя, выпустила Siemens в 1951 году.[1] Подача по требованию[2] — подача красителя из сопла печатающей головки происходит только тогда, когда краситель действительно надо нанести на соответствующую соплу область запечатываемой поверхности. Именно этот способ подачи красителя и получил самое широкое распространение в современных струйных принтерах. При длительном простое принтера (неделя и больше) происходит высыхание остатков красителя на соплах печатающей головки (особенно критично засорение сопел печатающей матрицы принтеров Epson, Canon). Принтер умеет сам автоматически чистить печатающую головку. Но также возможно провести принудительную очистку сопел из соответствующего раздела настройки драйвера принтера. При прочистке сопел печатающей головки происходит интенсивный расход красителя. Если штатными средствами принтера не удалось очистить сопла печатающей головки, то дальнейшая очистка и/или замена печатающей головки проводится в ремонтных мастерских. Замена картриджа, содержащего печатающую головку, на новый проблем не вызывает. Для уменьшения стоимости печати и улучшения некоторых других характеристик печати также применяют систему непрерывной подачи чернил (СНПЧ). Сублимационные принтеры Термосублимация (возгонка) — это быстрый нагрев красителя, когда минуется жидкая фаза. Из твёрдого красителя сразу образуется пар. Чем меньше порция, тем больше фотографическая широта (динамический диапазон) цветопередачи. Пигмент каждого из основных цветов, а их может быть три или четыре, находится на отдельной (или на общей многослойной) тонкой лавсановой ленте (термосублимационные принтеры фирмы Mitsubishi Electric). Печать окончательного цвета происходит в несколько проходов: каждая лента последовательно протягивается под плотно прижатой термоголовкой, состоящей из множества термоэлементов. Эти последние, нагреваясь, возгоняют краситель. Точки, благодаря малому расстоянию между головкой и носителем, стабильно позиционируются и получаются весьма малого размера. К серьёзным проблемам сублимационной печати можно отнести чувствительность применяемых чернил к ультрафиолету. Если изображение не покрыть специальным слоем, блокирующим ультрафиолет, то краски вскоре выцветут. При применении твёрдых красителей и дополнительного ламинирующего слоя с ультрафиолетовым фильтром для предохранения изображения, получаемые отпечатки не коробятся и хорошо переносят влажность, солнечный свет и даже агрессивные среды, но возрастает цена фотографий. За полноцветность сублимационной технологии приходится платить большим временем печати каждой фотографии (печать одного снимка 10×15 см принтером Sony DPP-SV77 занимает около 90 секунд). Фирмыпроизводители пишут о фотографической широте цвета в 24 бит, что больше желаемое, чем действительное. Реально, фотографическая широта цвета не более 18 бит. Наиболее известными производителями термосублимационных принтеров являются Canon и Sony. Лазерные принтеры Технология — прародитель современной лазерной печати появилась в 1938 году — Честер Карлсон изобрёл способ печати, названныйэлектрография, затем переименованный в ксерографию. Принцип технологии заключался в следующем. По поверхности фотобарабана коротроном (скоротроном) заряда (вал заряда) равномерно распределяется статический заряд, после этого светодиодным лазером (в светодиодных принтерах — светодиодной линейкой) в нужных местах этот заряд снимается — тем самым на поверхность фотобарабана помещается скрытое изображение. Далее на фотобарабан наносится тонер. Тонер притягивается к разряженным участкам поверхности фотобарабана, сохранившей скрытое изображение. После этого фотобарабан прокатывается по бумаге, и тонер переносится на бумагу коротроном переноса (вал переноса). После этого бумага проходит через блок термозакрепления (печка) для фиксации тонера, а фотобарабан очищается от остатков тонера и разряжается в узле очистки. Первым лазерным принтером стал EARS (Ethernet, Alto, Research character generator, Scanned Laser Output Terminal), изобретённый и созданный в 1971 году в корпорации Xerox, а их серийное производство было налажено во второй половине 1970-х. Принтер Xerox 9700 можно было приобрести в то время за 350 тысяч долларов, зато печатал он со скоростью 120 стр./мин.