Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы Экзамен АрхЭВМ.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.08 Mб
Скачать

29. Прямой доступ к памяти

Прямой доступ к памяти (англ. Direct Memory Access, DMA) —режим обмена данными между устройствами или же между устройством и основной памятью (RAM) безучастия Центрального Процессора (ЦП). В результате скорость передачи увеличивается, так как данные непересылаются в ЦП и обратно.

Кроме того, данные пересылаются сразу для многих слов, расположенных по подряд идущим адресам, чтопозволяет использование т. н. «пакетного» (burst) режима работы шины — 1 цикл адреса и следующие заним многочисленные циклы данных. Аналогичная оптимизация работы ЦП с памятью крайне затруднена.

В оригинальной архитектуре IBM PC (шина ISA) был возможен лишь при наличии аппаратного DMA-контроллера (микросхема с индексом Intel 8237).

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

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

30. Суперскалярная обработка команд

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

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

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

На рис. 9.9 приведен пример процессора с двумя блоками выполнения: для целочисленных операций и операций с плавающей запятой. Блок выборки ко­манд способен считывать из кэша по две команды за раз и сохранять их в очереди. На каждом такте блок диспетчеризации извлекает из очереди и декодирует одну или две команды. Если одна из команд обрабатывает целочисленные значения, а другая — числа с плавающей запятой, при отсутствии конфликтов обе команды диспетчеризируются на одном такте.

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