Re[15]: Эльбрус
От: vdimas Россия  
Дата: 19.07.19 00:58
Оценка:
Здравствуйте, netch80, Вы писали:

N>У тебя пачка команд (в его терминах — "широкая команда"), которую надо выполнить, прежде чем приступать к следующей. Процессор не имеет права и не будет исполнять следующую ШК, пока не закончена предыдущая.


А на деле, даже вшивые RISC-микроконтроллеры имеют до 4-х стадий исполнения команды.


N>А теперь у тебя одна команда из предыдущей ШК ждёт чего-то из оперативки, в кэше данных нет. Всё, все встали, даже те, кому давно ничего не нужно, ждут одного отставшего.


Команды fapb загружаются в специальный буфер инструкций предподкачки (Prefetch Instruction Buffer -PIB) и, циклически повторяясь, работают асинхронно по отношению к основной программе. Подкачанные ими данные помещаются в специальный буфер предварительно подкачанных массивов (Array Prefetch Buffer — APB), откуда непосредственно перед использованием пересылаются синхронными командами пересылки элементов массивов (mova) в регистровый файл. Таким образом, компилятор, обнаружив в программе регулярный доступ к данным, может реализовать предварительное асинхронное их считывание, забросив операции считывания на достаточное для подкачки расстояние от команд, использующих данные. Далее можно в коде программы заменить все инструкции загрузки из памяти (load) на инструкции пересылки данных (mova) из буфера APB.

 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.