Подавляющее число процессоров создано в соответствии с архитектурами CISC и RISC, которые находятся в постоянном развитии. В своей эволюции каждая из них часто заимствует достоинства и решения соперника
Евгений Рудометов
Эволюция CISC
Набор x86 и его расширения
Необходимо еще раз отметить, что эволюция указанных в предыдущей части статьи процессоров, а также их более производительных потомков, сопровождалась неуклонным ростом тактовых частот и постоянным расширением наборов выполняемых команд. Тем не менее, несмотря на архитектурные изменения внутренних структур процессоров, конструкторы старались максимально сохранить программную совместимость. Постепенно для процессоров Intel и многочисленных их клонов, созданных другими компаниями, появился ряд стандартов и рекомендаций для разработчиков и пользователей. Они были объединены в некий набор, получивший наименование x86. Под этим наименованием понимается процессорная архитектура и одноименный набор команд, которые были впервые реализованы в соответствующих изделиях Intel. Кстати, название образовано от двух цифр, которыми заканчивались названия процессоров Intel ранних моделей: x86 от Intel 80×86.
За время своего существования набор процессорных команд постоянно расширялся, сохраняя совместимость с предыдущими поколениями. Однако постепенно стало очевидно, что 32-битное адресное пространство архитектуры x86 ограничивает производительность приложений. Действительно, 32-разрядное адресное пространство позволяет процессору осуществлять непосредственную адресацию лишь 4 Гбайт данных, что часто недостаточно для современных приложений. Для решения этой проблемы было предложено ввести 64-разрядное расширение к уже существующей 32-разрядной архитектуре x86. Новая версия архитектуры получила название EM64T или чаще x86-64, хотя по старинке часто называют просто x86.
По мере совершенствования полупроводниковых технологий, внутреннего устройства процессоров и усложнения аппаратно-программного обеспечения компьютеров, призванных решать все более сложные задачи, состав x86 дополняется различными расширениями. В качестве примера можно привести следующие наборы: x87, IA-32, MMX, SSE, SSE2, x86-64, SSE3, SSSE3, SSE4, SSE5, AVX, AVX2, SGX. Эти и последующие расширения, поддержанные соответствующими электронными средствами, интегрированными в состав процессоров, призваны увеличить производительность, а также сократить время разработки и выполнения системных и прикладных программ.
Конечно, совершенствование и расширение наборов команд является важным, но не единственным направлением в обеспечении высоких уровней производительности процессоров. Очевидно, что производительность пропорциональна числу выполняемых команд в секунду. Она увеличивается с ростом тактовой частоты, но сильно зависит от типа и реализации команд. При этом выполнение каждой из них требует нередко десятков, а иногда и сотен циклов тактового генератора. Это означает, что выполнение сложных команд требует больше времени, чем выполнение простых. Компенсировать эту особенность и повысить производительность удается внедрением соответствующих конструкторских решений и новых технологий. В качестве примера можно привести две очень интересные и весьма эффективные разработки, внедренные в процессоры разных производителей, начиная с Intel Pentium (1993 г.). Речь идет о суперскалярности и суперконвейерности.
Процессор Intel Pentium
(Википедия)
О суперскалярности и суперконвейерности в следующей части данной статьи.
>> Часть 3