Я понимаю базовую работу очереди загрузки-хранилища, которая
- когда загрузки вычисляют свой адрес, они проверяют очередь хранилища на наличие любых предыдущих хранилищ по тому же адресу, и если таковая имеется, они получают данные из самого последнего хранилища, а также из буфера записи или кеша данных.
- Когда магазины вычисляют свой адрес, они проверяют очередь загрузки на предмет нарушений загрузки.
Я сомневаюсь, что происходит, когда
В первом случае, когда загрузка кэша данных доступа из-за некоторых неразрешенных адресов хранилища в очереди хранилища и доступ отсутствует в кэше данных L1, и до того, как данные могут быть извлечены из кеша, адрес хранилища разрешается. Теперь магазин проверяет очередь загрузки на наличие нарушений. Зависимая нагрузка уже обращалась к кешу данных ранее, но еще не получила значение из кеша из-за отсутствия длительной задержки. Публикует ли магазин нарушение загрузки или выполняет пересылку от магазина к загрузке и отменяет данные из кеша?
Когда отсутствует доступ к загрузке в кэше данных l1, то загрузки помещаются в MSHR, чтобы не блокировать этап выполнения. Когда промах устраняется, запись MSHR для этой загрузки содержит информацию о регистре назначения и физическом адресе. Таким образом, значение может быть обновлено в физическом регистре, но как MSHR сообщает очереди загрузки, что значение доступно? когда это происходит на стадии конвейера? Потому что я где-то читал, что MSHR хранит физические адреса, а очередь загрузки-хранилища хранит виртуальные адреса. Итак, как MSHR взаимодействует с LSQ?
Я не нашел никаких ресурсов относительно этих сомнений.
load-serial
тестов иp23
счетчиков uop. - person BeeOnRope   schedule 25.01.2021