Читать «Архитектура компьютера» онлайн - страница 15

Эндрю Таненбаум

Многие команды добавлялись в микропрограмму по той же причине. Среди них можно назвать команды для:

+ умножения и деления целых чисел;

+ арифметических действий над числами с плавающей точкой;

+ вызова и прекращения действия процедур;

+ ускорения циклов;

+ работы с символьными строками.

Как только производители поняли, что добавлять новые команды очень легко, они начали думать, какими дополнительными техническими возможностями можно наделить микропрограмму. Приведем несколько примеров:

+ ускорение работы с массивами (индексная и косвенная адресация);

+ перемещение программы из одного раздела памяти в другой после запуска программы (переадресация);

+ системы прерывания, которые дают сигнал процессору, как только закончена операция ввода или вывода;

+ способность приостановить одну программу и начать другую, используя небольшое число команд (переключение процесса);

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

За последующие годы добавилось много других команд и технических средств, обычно ускорявших выполнение некоторой конкретной операции.

Конец микропрограммирования

В 60-х-70-х годах количество микропрограмм значительно увеличилось. Однако они работали все медленнее и медленнее, поскольку занимали все больше места. В конце концов исследователи осознали, что отказ от микропрограмм резко сократит количество команд, и компьютеры станут работать быстрее. Таким образом, компьютеры вернулись к тому состоянию, в котором они находились до изобретения микропрограммирования.

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

Мы рассмотрели развитие компьютеров, чтобы показать, что граница между аппаратным и программным обеспечением постоянно смещается. Сегодняшнее программное обеспечение может быть завтрашним аппаратным обеспечением, и наоборот. Более того, также обстоит дело и с уровнями — между ними нет четких границ. Для программиста не важно, как на самом деле исполняется команда (за исключением, может быть, скорости исполнения). Программист, работающий на уровне архитектуры набора команд, может использовать команду умножения, как будто это аппаратная команда, и даже не задумываться об этом. То, что для одного человека — программное обеспечение, для другого — аппаратное. Позже мы еще вернемся к этим вопросам.