В 1965 г. Гордон Мур заметил, что количество транзисторов на единицу площади увеличивается вдвое каждые 18-24 месяца. Известное теперь как закон Мура, это наблюдение руководило разработчиками компьютеров в течений 40 месяцев. Рост скорости выполнения команд и тактовой частоты — это безусловно те цели, к которым стоит стремиться, однако разработчики компьютеров могут задействовать дополнительные транзисторы и дня не столь очевидных целей.
Например, пытаясь как можно максимально эффективно расходовать ресурсы процессора, разработчики использовали параллелизм на уровне команд. Параллелизм на уровне команд (ILP) дает процессору возможность переупорядочить команды оптимальным образом с целью исключить остановки вычислительного конвейера.
С развитием ПО приложения стали получать все больше возможностей по одновременному выполнению несколько заданий. Серверные приложения сегодня часто состоят из нескольких программных потоков и процессов. Для поддержки такого параллелизма на уровне программных потоков принято несколько подходов (как программных, так и аппаратных). Один из подходов — использовать многозадачные операционные системы. Однако такая модель не обеспечивает параллельное выполнение. Только один поток команд может обрабатываться в каждый момент времени.
Когда разработчики искали пути адаптировать архитектуры процессоров к параллелизму на уровне программных потоков, то они обнаружили, что во многих случаях ресурсы процессор используются не полностью. После появилась реализация SMT (Simultaneous Multi-Threading) от фирмы Intel известная как технология гиперпоточности. За счет SMT один процессор выглядит как несколько логических процессоров. С точки зрения микроархитектуры команды от логических процессоров поступают постоянно и выполняются одновременно на разделяемых исполняемых ресурсах.
После одновременной многопоточности следующим логическим шагом являлось многоядерный процессор. Производители реализовали два и более исполнительных ядер на одном процессоре, чтобы вновь и вновь не расходовать определенные процессорные ресурсы одноядерного процессора. Исполнительны ядра имеют собственный набор исполнительных и архитектурных ресурсов. Кроме того, каждое ядро может задействовать механизм SMT, увеличивая таким образом количество логических процессоров в два раза по сравнению с количеством исполняемых ядер.
Например, пытаясь как можно максимально эффективно расходовать ресурсы процессора, разработчики использовали параллелизм на уровне команд. Параллелизм на уровне команд (ILP) дает процессору возможность переупорядочить команды оптимальным образом с целью исключить остановки вычислительного конвейера.
С развитием ПО приложения стали получать все больше возможностей по одновременному выполнению несколько заданий. Серверные приложения сегодня часто состоят из нескольких программных потоков и процессов. Для поддержки такого параллелизма на уровне программных потоков принято несколько подходов (как программных, так и аппаратных). Один из подходов — использовать многозадачные операционные системы. Однако такая модель не обеспечивает параллельное выполнение. Только один поток команд может обрабатываться в каждый момент времени.
Когда разработчики искали пути адаптировать архитектуры процессоров к параллелизму на уровне программных потоков, то они обнаружили, что во многих случаях ресурсы процессор используются не полностью. После появилась реализация SMT (Simultaneous Multi-Threading) от фирмы Intel известная как технология гиперпоточности. За счет SMT один процессор выглядит как несколько логических процессоров. С точки зрения микроархитектуры команды от логических процессоров поступают постоянно и выполняются одновременно на разделяемых исполняемых ресурсах.
После одновременной многопоточности следующим логическим шагом являлось многоядерный процессор. Производители реализовали два и более исполнительных ядер на одном процессоре, чтобы вновь и вновь не расходовать определенные процессорные ресурсы одноядерного процессора. Исполнительны ядра имеют собственный набор исполнительных и архитектурных ресурсов. Кроме того, каждое ядро может задействовать механизм SMT, увеличивая таким образом количество логических процессоров в два раза по сравнению с количеством исполняемых ядер.