Для чтения данных требуется несколько циклов, например, ~ 4 цикла кэша L1, ~ 10 циклов кэша L2, ... и ~ 100 циклов из DRAM. Предположим, у нас есть инструкция, загружающая данные из DRAM. Поскольку x86 поддерживает конвейерную обработку и выполнение вне очереди, он может планировать / выполнять другие инструкции, пока ожидает данных.
1) Как x86 узнает, когда данные доступны? Контроллер памяти уведомит ЦП? Вероятно, это не прерывание, а какой-то другой механизм. Как x86 продолжает выполнение приостановленной инструкции?
2) Используется ли этот механизм уведомления для каждого ядра (например, 4-ядерный ЦП)?
3) Где сохраняется состояние зависшей инструкции ? Вероятно, он блокирует исполнительный блок конвейера, где он сейчас находится, верно? Это как-то связано с станцией резервирования / буфером повторного заказа?