Когда я изучал компьютерную организацию, мы говорили о зависимостях данных и о том, как они ограничивают пропускную способность конвейера, поскольку выполнение одной инструкции блокируется невыполнением другой инструкции.
В современных процессорах до сих пор так? Можно ли создать в реальной программе сценарий, в котором у процессора достаточно данных (он не ждет данных из памяти), но из-за зависимостей данных он не работает на полной скорости (максимум инструкций за такт)?
Я полагаю, что компиляторы попытаются разорвать цепочки зависимостей. Бывают ли случаи, когда это невозможно?