Читайте также:
|
|
Напомним, что в самом общем виде компьютер можно представить в виде трех основных функциональных частей.
- Центральный процессор ЦП.
- Основная электронная память ОП.
- Периферийные устройства ПУ.
Совокупность ЦП и ОЗУ часто называют ядром компьютера.
Центральный процессор осуществляет реализацию операций обработки и пересылки информации, предусмотренные системой команд компьютера, а также общее управление компьютером в целом.
Основная электронная память предназначена для оперативного хранения информации в компьютере: ядра операционной системы, основных утилит, задач прикладного программного обеспечения, а также для долговременного хранения BIOS, тестовых процедур и некоторых таблиц и констант.
Периферийные устройства представляют собой совокупность устройств, предназначенных для хранения, ввода и вывода больших объемов информации, формируемые или используемые внешними по отношению к ядру компьютера объектами.
Связь между этими основными устройствами компьютера, обеспечивающая их эффективное взаимодействие и, в конечном счете, нормальную работу компьютера в целом, осуществляется с помощью, так называемых интерфейсных устройств.
Под интерфейсом (Interface) понимается совокупность аппаратных и программных средств, обеспечивающих эффективную связь между двумя или несколькими блокам или устройствами, и объединяющую их в некоторую систему.
Строго говоря, любой, достаточно сложный, интерфейс стандартизируется и должен рассматриваться на 3х уровнях.
- Механический интерфейс (провода, элементы связи, типы соединений, разъемы, номера контактов и т. п.).
- Электрический интерфейс (схемы соединений, типы сигналов, их длительность, полярности, периоды повторения, амплитудные значения и т. п.).
- Программный интерфейс (протоколы взаимодействия, процедуры драйверов и т.д.).
В этом разделе мы кратко коснемся только общих принципов организации интерфейса с устройствами ввода/вывода информации в компьютер, на простейшем уровне блок-схем соединений и общих понятий протоколов взаимодействий.
В процессе работы компьютера, между процессором, основной электронной памятью и периферийными устройствами происходит непрерывный обмен информацией. При этом основной поток осуществляется между ЦП и ОП, а также между ОП и ПУ. Последний может происходить как через ЦП, так и непосредственно.
Связь ЦП с ОП регулярна, стандартна и в большой степени унифицирована. Это объясняется тем, что модули памяти выпускаются в виде нескольких основных типов, обладающих близкими скоростями, и требующих для своей работы достаточно простых сигналов управления. Кроме того, информация, передаваемая в основную память, никуда далее не отсылается, модули памяти сохраняют свое содержимое, и у центрального процессора нет необходимости выбирать данные из памяти или записывать их туда в моменты времени, которые определяла бы память, а не сам процессор.
Связь же ЦП или ОП с ПУ весьма нестандартна и, как правило, достаточно сложна. Информация, передаваемая в порт ввода/вывода, в нем не задерживается и обычно сразу же передается какому-нибудь устройству, подсоединенному к этому порту. Последовательно считывая информацию из одного и того же порта, вы чаще всего будете получать совершенно новые данные, и даже последовательность переданных и считанных байт может не сохраняться.
Кроме того, большие проблемы, при обмене информации между ЦП и ПУ, возникают и по следующим причинам.
- Большое разнообразие периферийных устройств. Это могут быть внешние магнитные и оптические запоминающие устройства, клавиатура, АЦП, ЦАП, кодировщики, дисплеи, фотосчитыватели, графопостроители, объекты контроля технологических процессов, объекты научного и производственного эксперимента и т.п.
- Огромный диапазон скоростей обмена информацией. Скорости обмена информацией могут изменяться от минут, в случае, например, температурных первичных преобразователей с АЦП в системах контроля; секунд и миллисекунд, в случае использования в качестве ПУ телетайпов и фотосчитывателей; и до микросекунд, при обмене информацией с магнитными дисками. А при обслуживании компьютером целого ряда физических экспериментов, например, в ядерной физике, время ввода данных может измеряться уже наносекундами. И, при этом, сам обмен информацией может быть как синхронный, так и асинхронный.
- Большое разнообразие типов и уровней сигналов обмена. Кроме того, эта информация может быть представлена в самом различном виде, (символьная кодированная информация, графические данные, аналоговые электрические сигналы и т.д.)
- Сложность структуры сигналов обмена. Обмен информацией с ПУ может осуществляться параллельными словами или байтами (параллельный интерфейс), как, например, в целом ряде случаев обмена информацией с системами управления производственными процессами или научного эксперимента. Последовательными кодами, например, при обмене информацией с жесткими (HDD) или гибкими (FDD) магнитными дисками, с клавиатурой, мышью или другими устройствами, подключаемыми через шины USB, Fire Wire. А то и параллельно-последовательными кодами, как бывает в случае обмена информацией с накопителями на магнитной ленте (Streamer).
Поэтому организация каждого ПУ и его связь с компьютером может порождать уникальную проблему.
В современных компьютерах используются три основных принципа организации ввода/вывода информации между ядром компьютера и ПУ.
- Программно-управляемый ввод/вывод с активным ожиданием.
- Ввод/вывод с управлением по прерываниям.
- Ввод/вывод с прямым доступом к памяти.
36. ПРИНЦИП ОРГАНИЗАЦИИ ПРОГРАММНО-УПРАВЛЯЕМОГО ВВОДА/ВЫВОДА С АКТИВНЫМ ОЖИДАНИЕМ
Программно-управляемый ввод/вывод с активным ожиданием является самым простым и исторически самым первым методом ввода и вывода информации от внешних устройств.
При программно-управляемом вводе/выводе с активным ожиданием ввод и вывод информации в компьютере осуществляется по специальным командам ввода (IN) и вывода (OUT) c адресацией специальных регистров в периферийных устройствах. Прямая адресация с помощью этих команд позволяет адресовать не более 256 объектов, в связи с тем, что при прямой адресации под адрес выделен 1 байт кода команды. При необходимости увеличения адресного пространства периферийных устройств прибегают к косвенной адресации через регистр DX. В этом случае, адресное пространство ввода/вывода расширяется до 65536 адресов. Отметим, что одно периферийное устройство, как правило, использует несколько портов (адресов) ввода/вывода. А иногда их количество может достигать нескольких десятков. Поэтому дополнительно вводится понятие базового адреса данного периферийного устройства, который является младшим адресом группы портов, принадлежащих этому периферийному устройству (обычно адресу порта регистра данных). Это облегчает процесс программирования, поскольку адреса других портов этого устройства осуществляется путем задания смещения (целое число) относительно базового адреса.
Заметим, что в ряде компьютеров (например, в компьютерах «Macintosh», использующих микропроцессоры фирмы Motorola), не предусматривается отдельного адресного пространства периферийных устройств и, следовательно, их система команд не имеет специальных команд ввода/вывода. Обращение же к регистрам ПУ осуществляется обычными командами пересылки MOV. Таким образом, адреса этих регистров являются частью общего адресного пространства компьютера. Этот способ часто называют «распространением адресов ввода/вывода на память». Он делает адресацию устройств ввода/вывода более гибкой, поскольку позволяет использовать все возможные разновидности адресации: базовой, индексной, базово-индексной и базово-индексной со смещением. Однако, с другой стороны, такие команды обращения к внешним устройствам будут сложнее, и выполняться дольше, чем команды IN и OUT, при которых адреса ПУ образуют отдельное адресное пространство
Рассмотрим пример обращения к двум типам периферийных устройств, клавиатуре и дисплею, как простейшим устройствами с которыми связывается процессор в процессе своего функционирования (см. рис XIII.1). Вначале рассмотрим работу регистров клавиатуры.
Как только клавиатура, после нажатия пользователем клавиши, сформирует и занесет очередной код символа в свой буферный регистр данных, аппаратно (автоматически) заносится единица в бит регистра состояния клавиатуры, оповещающий о наличии символа в ее регистре данных.
При выполнении команды IN, процессор обращается к адресуемому в команде регистру состояния и считывает этот бит наличия символа. Если этот бит равен 0, процессор зацикливается, и непрерывно опрашивает регистр состояния клавиатуры до тех пор, пока там не появится 1. После появления 1 в этом бите, процессор считывает байт символа с регистра данных клавиатуры, одновременно сбрасывая бит наличия символа в регистре состояния в 0.
Вывод информации на дисплей осуществляется аналогичным образом. Чтобы вывести символ на экран, программное обеспечение при появлении команды OUT, сначала считывает содержимое регистра состояния дисплея, чтобы узнать, установлен ли бит готовности в 1. Если он не установлен, программное обеспечение осуществляет цикл считывания снова и снова до тех пор, пока данный бит не примет значение 1. Это означает, что дисплей готов принять сигнал. Как только дисплей придет в состояние готовности, программное обеспечение заносит символ в буферный регистр данных дисплея, который переносит символ на экран и дает сигнал устройству сбросить бит готовности в регистре состояния в нулевое состояние. Когда символ уже отображен на экране, а устройство управления дисплея готово к обработке следующего символа, бит готовности снова устанавливается в состояние 1.
Основным недостатком программно-управляемого ввода/вывода с активным ожиданием является то, что процессор проводит большую часть времени в цикле опроса регистров состояния, ожидая готовности периферийного устройства к обмену информацией. Если процессору в это время все равно нечего делать, например, при управлении стиральными машинами, в этом ничего страшного нет (хотя и простейшему микрокомпьютеру часто нужно контролировать несколько параллельных процессов). Но если процессор управляет более сложными процессами, он во время активного ожидания готовности периферийных устройств мог бы эффективно выполнять в фоновом режиме и другие задачи. Поэтому, в большинстве практических случаев требуется использовать какие-то другие методы осуществления обмена информацией с периферийными устройствами.
Разновидностью программно-управляемого ввода/вывода является ввод/вывод с использованием цепочечных команд, или блочный ввод/вывод. Этот способ используется в случаях ввода или вывода цепочек данных, которые часто называют строками символов. Разница в этих названиях заключается только в том, что под строкой понимается обычно строка байт (поскольку каждый символ кодируется одним байтом). В то же время, в понятие цепочки данных включаются как последовательность символов, так и последовательность слов или даже двойных слов. При этом, байты, слова и двойные слова, которые составляют цепочку, называют элементами цепочки.
Рассматриваемый метод ввода/вывода данных основан на том, что любой однородный массив данных может быть представлен в виде цепочки соответствующих элементов. Естественно, что буферный регистр данных периферийного устройства, по своей емкости, должен всегда соответствовать размеру элемента цепочки (т.е. быть 8-ми, 16-ти или 32 разрядным). Командами, которые используются при блочном вводе/выводе, являются соответственно команды INS (IN String): - INSB, INSW, INSD, и команды OUTS (OUT String): - OUTSB, OUTSW, OUTSD, применяемые с соответствующими префиксами повторения REP. В случае необходимости переопределения сегмента источника при выводе, следует использовать полный формат цепочечных команд с операндами, т.е. OUTS DX, r/m.
Особенностями применения этих команд для ввода/вывода данных является то, что перед их исполнением в программе должно быть предусмотрено занесение в соответствующие регистры следующей предварительной информации:
- длина цепочки, (количество байт, слов или двойных слов в массиве данных, подлежащих передаче);
- место ее занесения в память компьютера (или извлечения из памяти), т.е. начальный адрес размещения цепочки;
- направление считывания (или занесения) элементов цепочки в процессе передачи (от элементов с младшими адресами к старшим, или наоборот);
- номер порта, откуда (или куда) передаются данные.
Длина цепочки (число ее элементов) заносится в регистр-счетчик процессора (CX). Номер порта заносится в регистр DX. Направление считывания (или занесения) элементов цепочки в память определяется состоянием флага DF в регистре флагов Flags. При этом, сброс этого флага в 0 командой CLD, определяет передачу начиная от элементов с младшими адресами в сторону увеличения адресов элементов, а установка этого флага в состояние 1 командой STD, определяет передачу в направление от элементов со старшими адресами к младшим.
Начальный адрес размещения массива данных при вводе задается содержимым регистра DI (EDI), при этом он будет передаваться обязательно в сегмент ES. Выводимая цепочка данных, по умолчанию, должна находиться в сегменте DS. Начальный адрес передаваемой цепочки при этом задается содержимым регистра SI (ESI). Однако выводимая цепочка данных может находиться и в другом сегменте, но для этого сегмент выводимой цепочки должен быть переопределен соответствующим префиксом переопределения.
Особенностью работы цепочечных команд является то, что они автоматически выполняют приращение (инкремент) или уменьшение (декремент) содержимого регистров SI (ESI) и DI (EDI) в зависимости от используемой цепочечной команды. При цепочках байт, изменение этих регистров происходит на 1, при цепочках слов – на 2, а при цепочках двойных слов – на 4. Инкремент регистров происходит при флаге DF = 0, а декремент – при флаге DF = 1.
При блочном программно-управляемом вводе/выводе с помощью цепочечных команд скорость передачи информации в пределах одной цепочки получается максимальной из всех возможных.
Однако, зацикливание процессора при опросе битов разрешения в регистрах состояния периферийных устройств, и при методе ввода/вывода данных с помощью организации цепочек, все равно имеет место.
От этого зацикливания можно избавиться путем организации ввода/вывода с помощью системы прерывания.
37. ПРИНЦИП ОРГАНИЗАЦИИ В КОМПЬЮТЕРАХ ВВОДА/ВЫВОДА ПО ПРЕРЫВАНИЮ
Напомним основные принципы обслуживания запросов прерывания от периферийных устройств
Периферийные устройства, при необходимости передачи информации в память компьютера, или ее приема от него, посылают в контроллер прерывания запрос прерывания в виде электрического сигнала. Эти запросы фиксируются в регистре запросов прерываний контроллера, а в процессор посылается общий запрос прерывания – сигнал INTR, который определяет наличие в данный момент хотя бы одного незамаскированного запроса прерывания от периферийных устройств. Процессор, в конце цикла выполнения каждой очередной команды опрашивает этот бит INTR и, в случае наличия разрешения приема запросов прерывания (IF = 1), приостанавливает процесс выполнения текущей программы и запоминает состояние процессора на данный момент времени (как минимум содержимое регистров CS, IP и регистра флагов Flags). После этого процессор посылает контроллеру прерывания сигнал готовности выполнять процесс обслуживания прерывания – INTA (Interrupt Acknowledge). Получив этот сигнал, контроллер прерываний выдает процессору код типа прерывания от источника, который имеет наивысший приоритет изо всех принятых к этому времени запросов на прерывания. Этот код представляет собой 8-ми разрядное слово, определяющее логический адрес (вектор) процедуры обработки данного прерывания, хранящийся в таблице векторов прерывания, расположенной в первом килобайте адресного пространства оперативной памяти.
Получив код типа прерывания, процессор по указанному коду извлекает логический адрес процедуры, формирует из него физический адрес и передает управление процедуре обслуживания данного прерывания. А эта процедура заключается в передаче в периферийное устройство, запросившее прерывание, или приеме из периферийного устройства адресуемых данных. Таким образом, ввод/вывод по прерываниям позволяет существенно сократить непроизводительное время процессора, затрачиваемое на опрос и ожидание готовности периферийных устройств к приему или выдачи информации. Однако сам процесс ввода или вывода происходит под управлением процессора и, следовательно, при операциях ввода/вывода процессор все равно отвлекается от своей основной обязанности – обработки информации. Поэтому, когда приходится вводить или выводить большие объемы данных, например, при обмене информации с дисками при свопинге, или при одновременном вводе больших объемов данных при проведении научно-технических экспериментов, то отвлечение процессора от вычислительных задач, особенно при мультипрограммном режиме работы процессора, крайне нежелательно. При этом следует учитывать, что обмен большими объемами информации осуществляется всегда блоками между периферийными устройствами и оперативной памятью компьютера.
Поэтому, в таких случаях используется более эффективная система ввода/вывода информации путем прямого доступа к памяти.
38. ПРИНЦИП ОРГАНИЗАЦИИ ВВОДА/ВЫВОДА ЧЕРЕЗ КАНАЛЫ ПРЯМОГО ДОСТУПА К ПАМЯТИ
Прямым доступом к памяти (ПДП) называют процесс обмена информацией между периферийными устройствами (ПУ) и памятью, или между двумя областями памяти, непосредственно, минуя процессор.
Прямой доступ к памяти называют также обменом информацией по каналам DMA (Direct Memory Access).
Напомним, что пересылка слова информации между периферийным устройством и памятью, или между двумя областями памяти в предыдущих описанных способах обмена проходит в два этапа. На первом этапе процессор получает это слово из памяти или периферийного устройства и записывает в свой регистр (AL, AX, EAX). На втором этапе он записывает этот байт в место назначения. Этот способ, характерный как для программно-управляемого обмена, так и при обмене по прерыванию, имеет два недостатка:
- во время перемещения слова процессор не может заниматься ничем другим;
- на перемещение слова требуется два шага.
Это кажется мелочью, но если нужно переместить не одно слово, а целый блок это становится существенным. А обмен информацией с такими периферийными устройствами как HDD, FDD, CD и DVD – накопителями, а также Streamer’ами, осуществляется, как правило, большими массивами данных (блоками) и с большой скоростью. Звуковые карты также очень интенсивно пересылают блоки байт, и в настоящее время широко используются такие периферийные интерфейсы, как USB, Fire Wire и др. Кроме того, следует учесть, что большой объем пересылок информации необходим и при осуществлении регенерации оперативной памяти.
Поэтому, в таких случаях, используют так называемый способ прямого доступа к памяти. Для организации прямого доступа к памяти используется контроллер прямого доступа к памяти, так называемый контроллер ПДП (контроллер DMA). Раньше в компьютерах он представлял собой отдельную интегральную схему, распаянную на материнской плате, но в последних моделях компьютеров контроллер DMA, как и контроллер прерываний, входит в микросхему южного моста Chipset.
Инициализация процесса прямого доступа к памяти осуществляется процессором. Он настраивает контроллер DMA на определенный режим работы (передача память – память, память – ПУ или ПУ – память), заносит в него начальные адреса блоков памяти, подлежащих обмену, а также количество передаваемых байт в блоке. Сам процесс DMA может быть инициирован как процессором (при передаче память – память), так и ПУ. Запрос ПУ на передачу DMA передается контроллеру DMA через соответствующий вход запроса в контроллере. После этого контроллер DMA, который в этом случае имеет больший уровень приоритета, чем процессор, предлагает процессору, чтобы тот отключился от внешних шин и передал управление шинами контроллеру DMA. Процессор отключается, переводя свои выводы в третье, высокоомное состояние, и информирует об этом контроллер DMA. После получения этой информации контроллер DMA берет требуемый процесс обмена информацией полностью в свои руки. Процессор в это время может заниматься своими делами, продолжать выполнение своей текущей программы, если это не связано с обращением к внешней шине.
Контроллер DMA, таким образом, при обмене информацией берет на себя целый ряд вспомогательных операций, таких как:
- буферизация данных;
- преобразование форматов данных;
- формирование очередного адреса в памяти;
- подсчет количества слов переданных данных; и т.п.
После окончания пересылки блока данных, контроллер DMA сообщает об этом процессору, который снова подключается к системным шинам и берет управление системой на себя.
Принцип организации системы прямого доступа к памяти иллюстрирован на рис.XIII.2.
В заключение следует, однако, напомнить, что программно-управляемый ввод/вывод, выполняемый командами REP INS/OUTS, может иметь производительность почти в 2 раза выше, чем обмен по каналам DMA. Поэтому часто обмен информацией с жесткими дисками (винчестерами) выполняется с помощью этих команд, несмотря на то, что процессор, при этом, будет занят.
Дата добавления: 2015-10-26; просмотров: 401 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
А) Программный поллинг. | | | ТИПОВЫЕ ШИНЫ СОЕДИНЕНИЯ КОМПОНЕНТОВ, ИСПОЛЬЗУЕМЫЕ В СОВРЕМЕННЫХ КОМПЬЮТЕРАХ |