stringtranslate.com

Воровство цикла

В вычислительной технике «кража цикла» традиционно представляет собой метод доступа к памяти компьютера (ОЗУ) или шине без вмешательства в работу ЦП. Это похоже на прямой доступ к памяти (DMA), позволяющий контроллерам ввода-вывода читать или записывать ОЗУ без вмешательства ЦП. Умное использование определенных таймингов ЦП или шины может позволить ЦП работать на полной скорости без каких-либо задержек, если внешние устройства обращаются к памяти, не участвуя активно в текущей активности ЦП, и завершать операции до любого возможного конфликта ЦП.

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

В старых источниках этот термин также используется для описания традиционных систем DMA, в которых ЦП останавливается во время передачи памяти. В этом случае устройство крадет циклы у ЦП, поэтому это противоположный смысл более современного использования.

В меньших моделях IBM System/360 и System/370 хранилище управления содержит микрокод как для архитектуры процессора, так и для архитектуры канала. Когда каналу требуется обслуживание, аппаратное обеспечение крадет циклы из микрокода ЦП для запуска микрокода канала.

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

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

Другим распространенным решением было использование отдельных банков памяти, в которых хранились инструкции, а не данных, или более одного пула данных. В этих случаях системы ввода-вывода могут получить доступ к своей памяти данных, пока процессор использует другой банк. Одним из примеров является Zilog Z80 , линия M1 которого указывает, что процессор читает инструкции; если эти инструкции находятся в другом банке или, чаще, в ПЗУ , системы ввода-вывода могут получить доступ к ОЗУ, не мешая процессору.

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

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

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

Примеры в реальных компьютерных системах

Неожиданный перехват цикла радаром сближения во время спуска чуть не привел к прерыванию посадки Аполлона-11 , но конструкция компьютера управления позволила продолжить посадку, отказавшись от задач с низким приоритетом.

«Кража цикла» IBM 1130 на самом деле является DMA, поскольку тактовая частота процессора останавливается во время доступа к памяти. Некоторые контроллеры ввода-вывода получают доступ к оперативной памяти таким образом. Они самостоятельно выносят решения по схеме с фиксированным приоритетом. Большинство контроллеров намеренно ускоряют доступ к ОЗУ, чтобы минимизировать влияние на способность системы выполнять инструкции, но другие, такие как графические видеоадаптеры, работают на более высокой скорости и могут замедлять работу системы.

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

Процессор «завязан» только на один цикл во время передачи символа данных. Частота, с которой устройства крадут циклы, зависит от типа устройства.

Поскольку ЦП намного быстрее, чем любое устройство ввода-вывода в системе, ЦП может выполнять другую функцию, например арифметику, одновременно с выполнением операции ввода-вывода. Фактически, некоторые операции ввода-вывода могут перекрываться друг с другом и с другими функциями ЦП. [1]

Кража цикла была причиной серьезного снижения производительности на таких машинах, как Sinclair QL , где по соображениям экономии видеопамять не имела двойного доступа . Следовательно, процессору M68008 было отказано в доступе к шине памяти, когда «главный контроллер» ZX8301 обращался к памяти, и машина работала хуже по сравнению с машинами, использующими аналогичные процессоры на аналогичных скоростях.

Рекомендации

  1. ^ Концепция кражи цикла IBM 1130