LINUX.ORG.RU

История изменений

Исправление uin, (текущая версия) :

There are many different instruction pipeline microarchitectures, and instructions may be executed out-of-order. A hazard occurs when two or more of these simultaneous (possibly out of order) instructions conflict.

Собственно всё. Процессор обязан номинально соблюдать правильную последовательность кода, и соответственно если он суперскалярный и тем более ОоО он обязан отслеживать зависимость по данным, и вот тут вот:

add r3, r1, r2;
mul r4, r1, r3;
mov r2, r4;

все команды зависят друг от друга и mov не может скопировать r4 пока его не перемножат.

Исправление uin, :

There are many different instruction pipeline microarchitectures, and instructions may be executed out-of-order. A hazard occurs when two or more of these simultaneous (possibly out of order) instructions conflict.

Собственно всё. Процессор обязан номинально соблюдать правильную последовательность кода, и соответственно если он суперскалярный и тем более ОоО он обязан отслеживать зависимость по данным, и вот тут вот:

add r3, r1, r2;
mul r4, r1, r3;
mov r2, r4;

все команды зависят друг от друга и mov не может быть исполнен раньше чем перемножение.

Исходная версия uin, :

There are many different instruction pipeline microarchitectures, and instructions may be executed out-of-order. A hazard occurs when two or more of these simultaneous (possibly out of order) instructions conflict.


Собственно всё. Процессор обязан номинально соблюдать правильную последовательность кода, и соответственно если он суперскалярный и тем более ОоО он обязан отслеживать зависимость по данным, и вот тут вот:

add r3, r1, r2;
mul r4, r1, r3;
mov r2, r4;

все команды зависят друг от друга и mov не может быть исполнен раньше чем перемножение.