Организация ЭВМ

Вид материалаДокументы
Вопрос № 11 Передача данных с прямым доступом к памяти
Рассмотрим, как работает этот механизм
Вопрос № 12 Особенности ЭВМ с конвейерными архитектурами
Подобный материал:
1   2   3   4   5   6   7   8   9   10

Вопрос № 11 Передача данных с прямым доступом к памяти



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

Для осуществления прямого доступа к памяти используется механизм DMA (Direct Memory Access). В режиме прямого доступа к памяти ВУ (внешнее или периферийное устройство) связано с ОП (оперативной памятью) непосредственно через каналы прямого доступа – каналы DMA, а не через внутренние регистры МП (микропроцессора).

Рассмотрим, как работает этот механизм:

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

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

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

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





Вопрос № 12 Особенности ЭВМ с конвейерными архитектурами



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

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

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

Идея конвейерной обработки заключается в выделении отдельных этапов выполнения общей операции, причем каждый этап, выполнив свою работу, передавал бы результат следующему, одновременно принимая новую порцию входных данных. Получаем очевидный выигрыш в скорости обработки за счет совмещения прежде разнесенных во времени операций. Предположим, что в операции можно выделить пять микроопераций, каждая из которых выполняется за одну единицу времени. Если есть одно неделимое последовательное устройство, то 100 пар аргументов оно обработает за 500 единиц. Если каждую микрооперацию выделить в отдельный этап (или иначе говорят - ступень) конвейерного устройства, то на пятой единице времени на разной стадии обработки такого устройства будут находится первые пять пар аргументов, а весь набор из ста пар будет обработан за 5+99=104 единицы времени - ускорение по сравнению с последовательным устройством почти в пять раз (по числу ступеней конвейера).

Казалось бы, конвейерную обработку можно с успехом заменить обычным параллелизмом, для чего продублировать основное устройство столько раз, сколько ступеней конвейера предполагается выделить. В самом деле, пять устройств предыдущего примера обработают 100 пар аргументов за 100 единиц времени, что быстрее времени работы конвейерного устройства! В чем же дело? Ответ прост, увеличив в пять раз число устройств, мы значительно увеличиваем как объем аппаратуры, так и ее стоимость.

Все современные микропроцессоры, будь то Pentium III или PA-8700, MIPS R14000, Е2К или Power3 используют тот или иной вид параллельной обработки. В ядре Pentium 4 на разных стадиях выполнения может одновременно находиться до 126 микроопераций.

Таким образом, конвейеризация основана на расщеплении выполняемой функции на ступени и выделение для каждой из них отдельного блока аппаратуры. Скорость передвижения команд не зависит от длины, а зависит от скорости передачи команд. Максимальная скорость поступления на конвейер новых объектов зависит только от максимального времени прохождения ступени и не зависит от числа ступеней. Если некоторая функция при прямой схеме выполняется за С наносекунд и эта схема может быть разделена на N ступеней, то конвейер, спроектированный для выполнения функции может выполнить ее за C/N наносекунд. Ограничения на достижимые скорости связаны с аппаратурой и функциями. Базовые операции, которые могут быть конвейезированы – это операции, начиная с арифметических операций с плавающей точкой. Основная проблема – обнаружение и устранение помех. Одним из классов процессоров с высоким уровнем совмещения операций является класс векторных процессоров. При работе с ними программист организует наборы данных или векторы, которые обрабатываются как единое целое единичными командами. Данные на вход ступени поступают дискретно. Поэтому необходимо чтобы между ступенями находились элементы памяти. Этот элемент будет препятствовать преждевременному перескоку данных на следующую ступень, что может привести к ошибочному воздействию на эту ступень до истечения установленного периода обработки. Т.е. эти элементы памяти предотвращают перескоки, и обеспечивают синхронизацию. Синхроимпульс приводит к тому, что элемент памяти выбирает данные с выхода предыдущей ступени. Эти элементы называются фиксатором или фиксатором ступени.