Оптимальное программирование
В истории вычислений оптимальное программирование или оптимальное кодирование — это практика расположения инструкций компьютерной программы в памяти таким образом, чтобы минимизировать время, которое машина тратит на ожидание инструкций. Он представляет исторический интерес, главным образом, из-за конструкции многих первых цифровых компьютеров.
Большинство ранних компьютеров использовали ту или иную форму последовательной памяти, в первую очередь память с линией задержки или магнитные барабаны . В отличие от оперативной памяти современных компьютеров, слова в последовательной памяти доступны по одному; время, необходимое для доступа к определенному слову, зависит от «расстояния» между ним и читаемым в данный момент словом. Если бы данная линия задержки содержала n слов, среднее время чтения слова было бы n /2 раз слова. Без оптимального кодирования такая машина проводила бы большую часть времени в ожидании инструкций и данных. [1]
Чтобы обойти эту проблему, многие машины, особенно Алана Тьюринга и ACE его потомки, включали в свой формат инструкций поле, определяющее адрес следующей команды, которая должна быть выполнена. Программист, использующий оптимальное кодирование, будет определять время, необходимое для выполнения текущей инструкции, вычислять, как далеко продвинется система памяти за это время, а затем помещать следующую команду программы в это место. Таким образом, когда текущая инструкция завершится и компьютер начнет искать следующую, как указано в инструкции, эта ячейка памяти только что прибудет и ее можно будет немедленно прочитать. Например, если программист только что написал код ADD
инструкция по адресу 400, а ADD
Для выполнения инструкции требовалось 4 слова, программист устанавливал в поле «следующий адрес» инструкции значение 404 и помещал туда следующую инструкцию.
В Соединенных Штатах оптимальное кодирование чаще всего использовалось на IBM 650. [2] и Бендикс G-15 . Обе машины имели оптимизирующие ассемблеры (SOAP для IBM, POGO для Bendix), которые могли автоматизировать эту задачу.
См. также
[ редактировать ]- Мел Кэй , автор одной особенно умной части оптимального программирования, вошедшей в компьютерную науку, описан в « Истории Мела» .
Ссылки
[ редактировать ]- ^ Руководство IBM по SOAP .
- ^ Кугель, Херб (22 октября 2001 г.). «ИБМ 650» . Доктор Добб.