Развитие и устранение микропрограммирования.
С 1970 года, когда получило развитие микропрограммирование, производители осознали, что теперь новые машинные команды можно добавлять простым расширением микропрограммы. Иначе говоря, они могли добавлять «аппаратное обеспечение» (новые команды) путем программирования. Это открытие буквально привело к взрыву в производстве наборов машинных команд, поскольку производители начали конкурировать друг с другом — каждый старался, чтобы его набор команд был больше и лучше, чем у других. Многие команды не представляли особой ценности, поскольку те же задачи можно было легко решить, используя уже существующие команды, но обычно они выполнялись немного быстрее. Например, во многих компьютерах использовалась команда INC (INCrement), которая прибавляла к числу единицу. Тогда уже существовала общая команда сложения ADD, и не было необходимости вводить новую команду, прибавляющую к числу единицу. Тем не менее команда INC работала немного быстрее, чем ADD, поэтому ее также включили в набор команд.
Многие команды добавлялись в микропрограмму по той же причине. Среди них можно назвать команды для:
- умножения и деления целых чисел;
- арифметических действий над числами с плавающей точкой;
- вызова и прекращения действия процедур;
- ускорения циклов;
- работы с символьными строками.
Как только производители поняли, что добавлять новые команды очень легко, они начали думать, какими дополнительными техническими возможностями можно наделить микропрограмму. Приведем несколько примеров:
- ускорение работы с массивами (индексная и косвенная адресация);
- перемещение программы из одного раздела памяти в другой после запуска
программы (переадресация);
системы прерывания, которые дают сигнал процессору, как только закончена операция ввода или вывода; - способность приостановить одну программу и начать другую, используя
небольшое число команд (переключение процесса); - специальные команды для обработки изображений, звуковых и мультимедийных данных.
За последующие годы добавилось много других команд и технических средств,
обычно ускорявших выполнение некоторой конкретной операции.
Конец микропрограммирования
В 60-х–70-х годах количество микропрограмм значительно увеличилось. Однако они работали все медленнее и медленнее, поскольку занимали все больше места. В конце концов исследователи осознали, что отказ от микропрограмм резко сократит количество команд, и компьютеры станут работать быстрее. Таким образом, компьютеры вернулись к тому состоянию, в котором они находились до изобретения микропрограммирования. Впрочем, нельзя сказать, что эта ветвь привела в тупик. Современные процессоры продолжают использовать микропрограммы для преобразования сложных команд во внутренний микрокод, который может напрямую выполняться на оптимизированных аппаратных компонентах. Мы рассмотрели развитие компьютеров, чтобы показать, что граница между аппаратным и программным обеспечением постоянно смещается. Сегодняшнее программное обеспечение может быть завтрашним аппаратным обеспечением, и наоборот. Более того, также обстоит дело и с уровнями — между ними нет четких границ. Для программиста не важно, как на самом деле исполняется команда (за исключением, может быть, скорости исполнения). Программист, работающий на уровне архитектуры набора команд, может использовать команду умножения, как будто это аппаратная команда, и даже не задумываться об этом. То, что для одного человека — программное обеспечение, для другого — аппаратное.