Как процессор x86 узнает, когда данные из кэша или DRAM загружены и готовы? - PullRequest
0 голосов
/ 26 мая 2020

Для чтения данных требуется несколько циклов, например, ~ 4 цикла кэша L1, ~ 10 циклов кэша L2, ... и ~ 100 циклов из DRAM. Предположим, у нас есть инструкция, загружающая данные из DRAM. Поскольку x86 поддерживает конвейерную обработку и выполнение вне очереди, он может планировать / выполнять другие инструкции, пока ожидает данных.

1) Как x86 узнает, когда данные доступны? Контроллер памяти уведомит ЦП? Вероятно, это не прерывание, а какой-то другой механизм. Как x86 продолжает выполнение приостановленной инструкции?

2) Используется ли этот механизм уведомления для каждого ядра (например, 4-ядерный ЦП)?

3) Где сохраняется состояние зависшей инструкции ? Вероятно, он блокирует исполнительный блок конвейера, где он сейчас находится, верно? Это как-то связано с станцией резервирования / буфером повторного заказа?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...