in ax, #port
mov ds:[si], ax
inc si
dec cx
pop
...
iret
Если темп поступления прерывания высок, не успеем все обработать.
ЦП не участвует в обмене.
Аппаратуре нужно знать: номер порта и адрес буфера. Контроллер прямого доступа (КПДП) и есть та самая железяка!
Это минимальный набор регистров
Как подключить это устройство.
По завершении операции КПДП генерирует прерывание.
Схемы организации прямого доступа:
1) Радиальная:
Канал прямого доступа резервируется для каждого устройства. ВУ выставляет к КПДП запрос DMAx с номером этого канала.
Недостаток: ограничиваем количество физических устройств, которые могут работать ПДП посредством каналов к КПДП.
2) Динамическая
Конкретное физическое устройство не привязывается к номеру канала.
Канал ПД выдается устройству при необходимости в прямом доступе и освобождается по завершению операции.
КПДП выполняет обмен между ОП и ВУ, генерируя цикл шины. В цикле шины могут присутствовать только физические адреса. Необходимо добавить (к регистрам выше) набор регистров адресации памяти, например, таблицу страниц.
Кроме того, буфер должен быть физически непрерывным.
Вопрос с кэшированием!
Общие понятия.
Сильно и слабо связанные:
- Сильно связанные – общая память для всех ЦП;
- Слабо связанные – у каждого ЦП своя память.
Однородные и неоднородные:
- Однородные – все ЦП одинаковые;
- Неоднородные – разные ЦП.
Архитектуры:
- Симметричная (SMP) – сильно связанная система с однородными процессорами;
- Массово-параллельные системы (MPP) – неоднородные слабо связанные системы.
Параллельность команд и параллельность данных.
1. Уровень процессов (изолированных задач)
2. Второй уровень параллельности – общие коды (процесс), общие данные, много потоков – многопоточная обработка.
3. Алгоритмическая параллельность – параллельностью обладает сам алгоритм. Например, умножение матрицы на вектор, можно считать компоненты результирующего вектора одновременно (параллельно).
4. Формами параллельности обладает и самый обычный код (параллельность на уровне машинных команд, независимые операции).
При увеличении числа процессоров скорость системы увеличивается не линейно. Это объясняется тем, что передача информации будет занимать все большую часть времени.
Топологии массово-параллельных систем:
1. Пространственный куб
2. Пространственный тор
Обеспечивают большее количество подключенных устройств при меньшем количестве передач. Каждый узел – это ЦП, ОП, ВУ и т.д.
В SMP-системах синхронизация осуществляется с помощью семафоров.
Команда xchgAX,[BX] – обмен значений регистра AX и содержимого ячейки с адресом BX. Все происходит в цикле – чтение/модификация/запись.
При наличии кэша ситуация резко ухудшается, т.к. ЦП обращается к кэшу, а не к общей ОП. Нужен механизм управления кэшами.
Путь 1 – поместить общие данные в некэшируемые ячейки данных.
Путь 2 – Синхронизация кэшей.
Заводится бит Shared для данных в кэше. Если такие данные изменяются, то ЦП обмениваются данными.
У Интела добавляются четыре бита SMEH.
- Внешние Запоминающие Устройства (ВЗУ)
- Устройства отображения
- Устройства связи
- Устройства сопряжения с объектами управления
- Специальные внешние устройства (таймеры и т.д.)
· Символьные (передают потоки данных в виде потока байтов)
· Блочные (всегда обмениваются блоками информации)
· Файловые (интерпретируют информацию в виде спецификаций ФС)
- Синхронные (поставляют данные только по команде)
- Асинхронные (сами в любой момент времени могут осуществить передачу данных)
Коммуникационные и устройства хранения:
- Произвольного доступа
- Последовательного доступа
По доступу:
- Коллективного доступа (запросы без ограничения из многих задач, не имеют истории запросов)
- Исключительного доступа (заранее задан порядок доступа, имеют историю запросов)
- Транзакционного доступа (исключительный доступ по очереди для разных задач)
Магнитные ВЗУ
Непосредственно записывать и считывать данные с носителя невозможно, нужно использовать специальное кодирование.
Виды кодирования:
- Амплитудное – основано на абсолютном значении параметра;
- Частотное - основано не на значении параметра, а на факте его изменения.
Запись и считывание
Чтение – анализ возникающего при движении головки тока.
Запись – подача тока в головку.
Плотность записи (размер пятна) зависит от формы магнита и магнитных свойств материала.
Нечувствительный материал – жутко большое поле, значит, надо повышать площадь, чтобы не затереть соседние записи (пятна).
Чувствительный материал – больше плотность записи, но меньше уровень сигнала.
Оптические ВЗУ
Кодирование тоже частотное: луч на какое-то время уходит с фотоприемника и возникает импульс.
А если надо писать?
Болванка – диск без канавок.
Запись производится тоже лазером, но при повышенной мощности луча – прожигание канавок. Это однократная запись.
Для многократной записи:
1. Фазовые диски (быстоостывающие сплавы, если остывают медленно – становятся аморфными и работаю как зеркало, если быстро – кристаллизуются и рассеивают свет)
2. Пленочные диски (полимерные пленки, которые под воздействием лазера изменяют свои спектральные свойства)
Магнитооптические ВЗУ
отклонение (поворачивается вектор поляризации). На обычном луче этого не видно, а только на поляризованном.
Луч, попадая на домен, изменяет свой вектор поляризации в зависимости от намагниченности материала (ориентации доменов). Таким образом, луч то проходит через поляризатор фотоприемника, то – нет.
Диаметр пятна в магнитооптических ВЗУ соизмерим с размером луча лазера, т.к. запись происходит в области, нагретой лазером. При нагревании, материал становится более магнитомягким. Магнитная головка может иметь большой размер пятна, но все равно область записи очень мала. Магнитная головка используется только при записи.
Как закодировать импульсами нули и единицы? Наличие импульса в определенном временном диапазоне означает единицу. Надо закодировать саму информацию и временное окно.
Каждое временное окно нужно закодировать. Временные окна делят пополам, следовательно, теряется ровно половина диска. Одно пятно уходит на синхроимпульсы, а второе на импульсы данных.
Плотность записи – 8ms. А исходно – 4ms.
Нужно использовать весь диск под данные и при этом не терять синхронизацию. Надо кодировать так, чтобы при длинных последовательностях нулей не терялась синхронизация.
Применяется на 5-ти и 3-ех дюймовых дисководах.
В нулях нет данных, поэтому будем их использовать для синхронизации. Бит данных располагается в середине временного окна, бит синхронизации – в начале.
В первом нуле синхроимпульс не пишется, чтобы не затереть окно предыдущей единицы.
Недостаток: аппаратура должна чувствовать импульсы с точностью 2ms.
Задача – преобразовать поток данных так, чтобы в нем отсутствовали длинные последовательности нулей (не более заданного количества).
Разобьем байт на две части по 4 бита.
0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 |
0 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 |
0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 |
0 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 1 |
0 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 1 |
. . . | . . . |
В новой последовательности не более двух нулей подряд – не успеем потерять синхронизацию (можно назвать RLL 0.2). Плотность информации на диске уменьшится на 1/5.