Введение

В вычислительной технике кража циклов — это метод доступа к памяти компьютера (RAM) или шине без прерывания работы ЦП. Он аналогичен прямому доступу к памяти (DMA), позволяя контроллерам ввода-вывода читать или записывать в оперативную память без участия ЦП. Умелое использование особенностей синхронизации ЦП или шины может позволить ЦП работать на полной скорости без задержек, если внешние устройства получают доступ к памяти, не задействованной в текущей деятельности ЦП, и завершают операции до возникновения потенциального конфликта. Кража циклов была распространена на более старых платформах, изначально на суперкомпьютерах, использовавших сложные системы для синхронизации доступа к памяти, а затем на ранних микрокомпьютерах, где она применялась как для периферийных устройств, так и для драйверов дисплея. Реализация этого метода затруднена на современных платформах из-за наличия нескольких уровней памяти, работающих с разной скоростью, и часто опосредованного доступа через блок управления памятью. В тех случаях, когда эта функциональность необходима, современные системы часто используют оперативную память с двумя портами, обеспечивающую доступ для двух систем, однако это обычно дорогостоящее решение. В более ранних источниках этот термин также использовался для описания традиционных систем DMA, где ЦП приостанавливает работу во время передачи данных в память. В этом случае устройство отнимает циклы у ЦП, что является противоположным смыслом современного использования. В младших моделях IBM System/360 и System/370 хранилище управления содержит микрокод как для архитектуры процессора, так и для архитектуры канала. Когда каналу требуется обслуживание, аппаратное обеспечение отнимает циклы у микрокода ЦП для запуска микрокода канала.

Общие реализации

Некоторые процессоры были разработаны с возможностью перехвата циклов, или, по крайней мере, легко поддерживали эту функцию. Это касалось систем Motorola 6800 и MOS 6502 благодаря конструктивной особенности, из-за которой процессор обращался к памяти только на каждом втором такте. Использование оперативной памяти, работающей в два раза быстрее тактовой частоты процессора, позволяло второй системе чередовать свои обращения с обращениями процессора, синхронизируясь на каждом втором такте. Это широко использовалось для обновления дисплея, используя основную память в качестве буфера кадров. Типичная оперативная память конца 1970-х годов работала на частоте 2 МГц, поэтому большинство компьютеров имели процессор с частотой около 1 МГц. BBC Micro обеспечил поставки оперативной памяти на 4 МГц, что позволило его процессору работать на 2 МГц. Другим распространенным решением было использование отдельных банков памяти для хранения инструкций и данных, или нескольких пулов данных. В таких случаях системы ввода-вывода могли обращаться к своей памяти данных, пока процессор использовал другой банк. Примером является Zilog Z80, у которого линия M1 указывает, что процессор читает инструкции; если эти инструкции находятся в другом банке, или, что более распространено, в ПЗУ, системы ввода-вывода могли обращаться к оперативной памяти, не мешая процессору.

Современная архитектура

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