- •Цифро-аналоговый преобразователь.
- •Цап с суммированием весовых токов
- •Параметры цап
- •Статические параметры
- •Динамические параметры
- •Шумы цап
- •Компараторы.
- •Аналого-цифровые преобразователи.
- •Реализации ацп. Параллельные ацп
- •Последовательные ацп
- •Последовательно-параллельные ацп
- •Пакетный или однотактный
- •Когерентность кэша
Пакетный или однотактный
Что случается после получения DMA-контроллером контроля над шиной памяти, зависит от того, какой режим работы установлен для DMA-контроллера. Есть два основных режима для DMA-контроллеров. Первый из них называется пакетный. Когда DMA-контроллер работает в этом режиме, он сохраняет контроль над шиной памяти на протяжении всего процесса передачи данных. Отрицательным аспектом работы в таком режиме является то, что ЦП не сможет работать с шиной памяти, пока DMA-контроллер не завершит передачу данных. То есть процессор сможет работать только со своими кэшами первого и второго уровней, но не с чем-либо другим в памяти; очевидно, это ограничивает возможности ЦП на время ожидания процессором завершения операции и возвращения контроля над шиной памяти DMA-контроллером.
Чтобы избежать такой невыгодной ситуации, когда ЦП приходится ожидать завершения передачи данных, DMA-контроллер может работать в другом режиме, который называется однотактным (single-cycle). При работе в однотактном режиме DMA-контроллер возвращает контроль над шиной памяти после передачи каждого отдельного блока данных. Размер этого блока обычно составляет 256 или 512 байт. Это дает возможность процессору использовать шину памяти для своих целей без необходимости долго ждать. К сожалению, есть недостатки и у однотактного режима работы. После возвращения контроля над шиной памяти DMA-контроллеру нужно снова посылать запрос процессору, опять ждать разрешения на контроль над шиной памяти, чтобы сделать передачу очередного блока данных. То есть необходимость повторять последовательность запросов может в несколько раз увеличить время простоя в процессе передачи данных.
И все-таки однотактный режим работы используется чаще всего, хотя большинство DMA-контроллеров могут работать в обоих режимах. Оптимальный размер блока, который будет передаваться перед возвращением контроля над шиной памяти и повторением запроса, - вопрос довольно сложный. Одним из главных факторов тут является наблюдаемая частота ошибок. Когда обнаруживаются ошибки при передаче данных (часто это бывает при передаче через сеть), необходимо повторить передачу данных. Поэтому, если ошибки случаются часто, оптимальными являются блоки небольшой длины. Однако если ошибок мало, малый размер блоков приведет к увеличению количества циклов запросов и ответов между DMA-контроллером и ЦП, что будет увеличивать общее время передачи данных. Как именно реализуются эти решения, зависит от конкретного производителя DMA-контроллеров (а еще точнее, от инженера, проектировавшего их!); и об этом не сильно распространяются. Если вы захотите узнать, как размер блоков определяется для конкретного DMA-контроллера, вероятно, эту информацию можно отыскать в документации, или же вам придется обращаться к компании-производителю.
Когда DMA-контроллер завершает передачу блока и возвращает контроль над шиной памяти ЦП, процессор может использовать шину для своих целей. В вышеприведенном примере, да и во многих других примерах, это дает процессору возможность обновлять индикаторы прогресса и обновлять файловую систему информацией, относящейся к осуществляемым операциям прямого доступа к памяти (например, информацию о появлении нового файла).
