2012-06-19 2 views
24

может кто-нибудь объяснить, что такое буфер загрузки и как он отличается от очередей недействительности. а также разницу между буферами хранилища и буферами записи? В статье Пола E Mckenny http://www.rdrop.com/users/paulmck/scalability/paper/whymb.2010.07.23a.pdf объясняет очень хорошо о магазине буферах и очередях недостоверности но, к сожалению, не говорит о записи объединения буферовЧто такое буфер хранилища?

ответ

27

очередь Invalidate больше похож буфером хранения, но это часть системы памяти, а не ЦП. В основном это очередь, которая отслеживает недействительности и гарантирует, что они будут выполнены должным образом, чтобы кэш мог взять на себя ответственность за линию кэша, чтобы затем записать эту строку. Очередь загрузки представляет собой спекулятивную структуру, которая отслеживает нагрузки в полете в процессоре вне порядка. Например, следующее может произойти

  1. процессора умозрительно выдать груз из X
  2. что нагрузка была в программном порядке после того, как магазин, чтобы Y, но адрес Y пока не решен, так что магазин не продолжается.
  3. Y разрешен и оказывается равным X. В то время, когда хранилище до Y разрешено, это хранилище ищет очередь загрузки для спекулятивных загрузок, которые были выпущены, но присутствуют после хранения до Y в программе заказ. Он заметит нагрузку на X (которая равна Y) и должна раздавить эти инструкции, начиная с нагрузки X и далее.

Буфер хранения - это спекулятивная структура, которая существует в ЦП, как и очередь загрузки, и предназначена для того, чтобы позволить процессору спекулировать на магазинах. Буфер объединения записи является частью системы памяти и, по сути, берет кучу небольших записей (думаю, 8 байтов) и упаковывает их в одну большую транзакцию (64-байтную строку кэша), прежде чем отправлять их в систему памяти. Эти записи не являются спекулятивными и являются частью протокола согласованности. Цель состоит в том, чтобы сохранить пропускную способность шины. Как правило, буфер с объединением записи используется для неадресации операций записи на устройства ввода/вывода (часто для видеокарт). В устройствах ввода/вывода типично выполнять кучу программирования регистров устройств, выполняя 8-байтовые записи, а буфер объединения записи позволяет объединять эти записи в более крупные транзакции при отправке их через кеш.

+19

Я только что заметил этот вопрос и собирался ответить на него - черт возьми, я придумал, как комбинировать и загружать буферы Intel, или, по крайней мере, мое имя принадлежит многим патентам, но ответ выше - это прекрасно. –

+7

Хранить буферы = не всегда спекулятивные, а не всегда внутри ЦП. Там могут быть буферы хранения вне ЦП, например. между записью через L1 и L2. –

+9

Буферы загрузки (1) содержат нагрузки после того, как адреса загрузки были рассчитаны, но до тех пор, пока нагрузка не будет готова к выполнению; или после того, как вы попытались выполнить загрузку, но определили, что возникла проблема, например, промаха в кеше или более раннего хранилища с тем же адресом, который еще не готов. (2) можно использовать для проверки того, что нагрузки вне порядка правильно интерпретируются, как описывает Мартин. –

Смежные вопросы