- •9.5. Суперскалярная обработка команд
- •9.5.1. Внеочередное завершение команд
- •9.5.2. Завершение выполнения
- •9.5.3. Операция диспетчеризации
- •9.6 Семейство процессоров Intel ia-32
- •9.6.1. Сегментация памяти для семейства процессоров ia-32
- •9.6.2. 16-Разрядный режим
- •9.6.3. Процессоры 80386 и 80486
- •9.6.4. Процессор Pentium
- •9.6.5. Процессор Pentium Pro
- •9.6.6. Процессоры Pentium II и Pentium III
- •9.6.7. Процессор Pentium 4
- •9.6.8. Технология Hyper-Threading от Intel Производительности всегда мало
- •Hyper-Threading
- •Углубляемся в технологию
- •Максимум эффективности от Hyper-Threading
- •9.6.9. Архитектура ia-64
- •Описание ia-64
- •Архитектура е2к
Максимум эффективности от Hyper-Threading
Сначала Intel разработала Hyper-Threading для своей линейки серверных процессоров, но на кристалле в первых же процессорах Pentium 4 была реализована эта технология, но не включена, т.к предполагала, что уже существующие в широком пользовании приложения будут только уменьшать производительность обработки из-за увеличения количества аппаратных конфликтов. Хотя по сути, архитектура NetBurst, использующаяся в Pentium 4 и Xeon, как нельзя лучше подходит для ядра с поддержкой одновременной многопоточности. Давайте ещё раз представим себе процессор. На этот раз в нем будет ещё одно исполнительное устройство – второе целочисленное устройство. Посмотрим, что случится, если потоки будут выполняться обоими устройствами:
ALU |
|
|
|
ALU |
|
|
|
FPU |
|
|
|
Load/ Store |
|
|
|
|
1 |
2 |
3 |
|
Clock Cycle |
Рис. 9.6.8.
С использованием второго целочисленного устройства, единственный конфликт случился только на последней операции. Наш теоретический процессор в чем-то похож на Pentium 4. В нем имеется целых три целочисленных устройства (два ALU и одно медленное целочисленное устройство для циклических сдвигов). А что ещё более важно, оба целочисленных устройства Pentium 4 способны работать с двойной скоростью – выполнять по две микрооперации за такт. А это, в свою очередь, означает, что любое из этих двух целочисленных устройств Pentium 4/Xeon могло выполнить те две операции сложения из разных потоков за один такт.
Но это не решает нашей проблемы. Было бы мало смысла просто добавлять в процессор дополнительные исполнительные устройства с целью увеличения производительности от использования Hyper-Threading. С точки зрения занимаемого на кремнии пространства это было бы крайне дорого. Вместо этого, Intel предложила разработчикам оптимизировать программы под Hyper-Threading.
Используя инструкцию HALT (конкурентные языки программирования), можно приостановить работу одного из логических процессоров, и тем самым увеличить производительность приложений, которые не выигрывают от Hyper-Threading. Итак, приложение не станет работать медленнее, вместо этого один из логических процессоров будет остановлен, и система будет работать на одном логическом процессоре – производительность будет такой же, что и на однопроцессорных компьютерах. Затем, когда приложение сочтет, что от Hyper-Threading оно выиграет в производительности, второй логический процессор просто возобновит свою работу.
9.6.9. Архитектура ia-64
В IA-64 два нововведения по сравнению с RISC-процессорами:
Применение технологии явного параллелизма на уровне команд (EPIC - Explicitly Parallel Instruction Computing).
Применение предикатных вычислений. Предикаты - способ обработки ветвлений (условных переходов).
В сочетании с новым уровнем спекулятивных вычислений это значительно уменьшает количество условных переходов и, соответственно, ошибочных предсказаний направления переходов. В свою очередь, применение EPIC однозначно диктует появление в архитектуре большого числа ФУ и сверхбольших файлов регистров.
Особенности EPIC:
Большое количество регистров.
Масштабируемость архитектуры до большого количества функциональных устройств. Это свойство представители фирмы Intel и HP называют "наследственно масштабируемый набор команд".
Явный параллелизм в машинном коде. Поиск зависимостей между командами производит не процессор, а компилятор.
Предикация. Команды из разных ветвей условного ветвления снабжаются предикатными полями (полями условий) и запускаются параллельно.
Загрузка по предположению. Данные из медленной основной памяти загружаются заранее.