Динамическое исполнение
Динамическое исполнение - совокупность трех методов обработки информации в процессоре, таких как: Предсказание ветвлений, анализ потока команд, упреждающее выполнение. Динамическое выполнение - важнейшее архитектурное преимущество современных процессоров, оказывает серьезное влияние на производительность. Давайте вкратце рассмотрим, что такое динамическое выполнение. Предсказание ветвлений (branch prediction) С помощью этого метода можно выяснить, каким будет поток управления программы через несколько команд ветвления. При использовании специального механизма процессор может предсказать переходы или ветвления в потоке команд. В процессорах прежних поколений инструкция перехода приостанавливала конвейер (выборку инструкций) до исполнения собственно перехода, на чем, естественно, терялась производительность. Предсказание переходов направляет поток выборки и декодирования по одной из ветвей. Статический метод предсказания работает по схеме, заложенной в процессор, считая, что переходы по одним условиям, вероятнее всего, произойдут, а по другим — нет. Динамическое предсказание опирается на предысторию вычислительного процесса — для каждого конкретного случая перехода накапливается статистика поведения, и переход предсказывается, основываясь именно на ней. Анализ потока команд (out-of-order execution) Это средство анализирует и планирует выполнение команд в оптимальной последовательности, независимо от их первоначального порядка в программе. Свойственный RISC-архитектуре, данный метод теперь реализуется и для процессоров х86. При этом изменяется порядок внутренних манипуляций данными, а внешние (шинные) операции ввода-вывода и записи в память выполняются, конечно же, в порядке, предписанном программным кодом. Однако эта способность процессора в наибольшей степени может блокироваться несовершенством программного кода (особенно 16-битных приложений), если он генерируется без учета возможности изменения порядка исполнения инструкций. Процессор рассматривает команды, из которых состоит выполняемая программа, и определяет, доступны ли они для обработки или же зависят от других команд, которые следует выполнить предварительно. Затем процессор определяет оптимальную последовательность обработки и выполняет команды наиболее эффективным способом. Упреждающее выполнение (data forwarding) Подразумевает начало исполнения инструкции до готовности всех операндов. При этом выполняются все возможные действия, и декодированная инструкция с одним операндом помещается в исполнительное устройство, где дожидается готовности второго операнда, выходящего с другого конвейера. С помощью этого метода процессор просматривает стоящие на очереди команды и выполняет те из них, к которым вероятно потребуется обратиться позже. Таким образом ряд команд процессор может выполнить заранее, а затем пользоваться результатами произведенных вычислений позже.
|