История изменений
Исправление numas13, (текущая версия) :
Я не понимаю, что мешает делать разбор команд вперёд.
Конвейер. Процессору необходимо некоторое время чтобы понять какую инструкцию он исполняет.
Как это выглядит сейчас.
J: ibranch label
...
L: label: ops...
A F0 F1 S D B
0 J << адрес ibranch
1 J << загрузка 1
2 J << загрузка 2
3 J << распаковка ШК
4 J << декодирование
5 J << тут процессор понимает что это ibranch
6 L << начинается исполнение label
Т.к. сейчас в Эльбрусах нет предсказателя, то у него вырисовывается та самая задержка у ibranch/rbranch
. С предсказателем необходимо хотя бы раз выполнить код, чтобы предсказатель понял что после инструкции J
надо подавать адрес label
на конвейер.
J: ibranch label
...
L: label: ops...
A F0 F1 S D B
0 J
1 L J << если предсказатель уже знает про ibranch
2 L J
3 L J
4 L J
5 L J
6 L << инструкция из label
Исходная версия numas13, :
Я не понимаю, что мешает делать разбор команд вперёд.
Конвейер. Процессору необходимо некоторое время чтобы понять какую инструкцию он исполняет.
Как это выглядит сейчас.
J: ibranch label
A F0 F1 S D B
0 J << адрес ibranch
1 J << загрузка 1
2 J << загрузка 2
3 J << распаковка ШК
4 J << декодирование
5 J << тут процессор понимает что это ibranch
Т.к. сейчас в Эльбрусах нет предсказателя, то у него вырисовывается та самая задержка у ibranch/rbranch
. С предсказателем необходимо хотя бы раз выполнить код, чтобы предсказатель понял что после инструкции J
надо подавать адрес label
на конвейер.
J: ibranch label
...
L: label: ops...
A F0 F1 S D B
0 J
1 L J << если предсказатель уже знает про ibranch
2 L J
3 L J
4 L J
5 L J
6 L << инструкция из label