Введение
В вычислительной технике кража циклов — это метод доступа к памяти компьютера (RAM) или шине без прерывания работы ЦП. Он аналогичен прямому доступу к памяти (DMA), позволяя контроллерам ввода-вывода читать или записывать в оперативную память без участия ЦП. Умелое использование особенностей синхронизации ЦП или шины может позволить ЦП работать на полной скорости без задержек, если внешние устройства получают доступ к памяти, не задействованной в текущей деятельности ЦП, и завершают операции до возникновения потенциального конфликта. Кража циклов была распространена на более старых платформах, изначально на суперкомпьютерах, использовавших сложные системы для синхронизации доступа к памяти, а затем на ранних микрокомпьютерах, где она применялась как для периферийных устройств, так и для драйверов дисплея. Реализация этого метода затруднена на современных платформах из-за наличия нескольких уровней памяти, работающих с разной скоростью, и часто опосредованного доступа через блок управления памятью. В тех случаях, когда эта функциональность необходима, современные системы часто используют оперативную память с двумя портами, обеспечивающую доступ для двух систем, однако это обычно дорогостоящее решение. В более ранних источниках этот термин также использовался для описания традиционных систем DMA, где ЦП приостанавливает работу во время передачи данных в память. В этом случае устройство отнимает циклы у ЦП, что является противоположным смыслом современного использования. В младших моделях IBM System/360 и System/370 хранилище управления содержит микрокод как для архитектуры процессора, так и для архитектуры канала. Когда каналу требуется обслуживание, аппаратное обеспечение отнимает циклы у микрокода ЦП для запуска микрокода канала.
In computing, traditionally cycle stealing is a method of accessing computer memory (RAM) or bus without interfering with the CPU. It is similar to direct memory access (DMA) for allowing I/O controllers to read or write RAM without CPU intervention. Clever exploitation of specific CPU or bus timings can permit the CPU to run at full speed without any delay if external devices access memory not actively participating in the CPU's current activity and complete the operations before any possible CPU conflict. Cycle stealing was common in older platforms, first on supercomputers which used complex systems to time their memory access, and later on early microcomputers where cycle stealing was used both for peripherals as well as display drivers. It is more difficult to implement in modern platforms because there are often several layers of memory running at different speeds, and access is often mediated by the memory management unit. In the cases where the functionality is needed, modern systems often use dual port RAM which allows access by two systems, but this tends to be expensive. In older references, the term is also used to describe traditional DMA systems where the CPU stops during memory transfers. In this case the device is stealing cycles from the CPU, so it is the opposite sense of the more modern usage. In the smaller models of the IBM System/360 and System/370, the control store contains microcode for both the processor architecture and the channel architecture. When a channel needs service, the hardware steals cycles from the CPU microcode in order to run the channel microcode.
Общие реализации
Некоторые процессоры были разработаны с возможностью перехвата циклов, или, по крайней мере, легко поддерживали эту функцию. Это касалось систем Motorola 6800 и MOS 6502 благодаря конструктивной особенности, из-за которой процессор обращался к памяти только на каждом втором такте. Использование оперативной памяти, работающей в два раза быстрее тактовой частоты процессора, позволяло второй системе чередовать свои обращения с обращениями процессора, синхронизируясь на каждом втором такте. Это широко использовалось для обновления дисплея, используя основную память в качестве буфера кадров. Типичная оперативная память конца 1970-х годов работала на частоте 2 МГц, поэтому большинство компьютеров имели процессор с частотой около 1 МГц. BBC Micro обеспечил поставки оперативной памяти на 4 МГц, что позволило его процессору работать на 2 МГц. Другим распространенным решением было использование отдельных банков памяти для хранения инструкций и данных, или нескольких пулов данных. В таких случаях системы ввода-вывода могли обращаться к своей памяти данных, пока процессор использовал другой банк. Примером является Zilog Z80, у которого линия M1 указывает, что процессор читает инструкции; если эти инструкции находятся в другом банке, или, что более распространено, в ПЗУ, системы ввода-вывода могли обращаться к оперативной памяти, не мешая процессору.
Современная архитектура
В современных системах реализовать кражу циклов затруднительно из-за множества факторов, таких как конвейеризация, при которой предварительная выборка и параллельные элементы постоянно обращаются к памяти, оставляя мало предсказуемых периодов простоя для незаметного доступа к памяти. Прямой доступ к памяти (DMA) – единственный формальный и предсказуемый метод доступа внешних устройств к оперативной памяти. Этот термин используется реже в современной компьютерной архитектуре (свыше 66 100 МГц), поскольку различные внешние шины и контроллеры обычно функционируют с разными частотами, а внутренние операции процессора больше не синхронизированы с операциями шины ввода-вывода.