stringtranslate.com

Кража велосипеда

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

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

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

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

Распространенные реализации

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

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

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

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

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

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

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

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

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

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

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

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

Ссылки

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