может кто-нибудь объяснить, что такое буфер загрузки и как он отличается от очередей недействительности. а также разницу между буферами хранилища и буферами записи? В документе Paul E Mckenny http://www.rdrop.com/users/paulmck/scalability/paper/whymb.2010.07.23a.pdf очень хорошо объясняется буферы хранилищ и очереди недействительности, но, к сожалению, не говорится о буферах объединения писем
Что такое буфер хранилища?
Ответ 1
Недействительная очередь больше похожа на буфер хранилища, но это часть системы памяти, а не процессор. В основном это очередь, которая отслеживает недействительности и гарантирует, что они будут выполнены должным образом, чтобы кэш мог взять на себя ответственность за линию кэша, чтобы затем записать эту строку. Очередь загрузки представляет собой спекулятивную структуру, которая отслеживает нагрузки в полете в процессоре вне порядка. Например, может произойти следующее:
- Процессор спекулятивно выдает нагрузку с X
- Эта загрузка была в программном порядке после хранения до Y, но адрес Y еще не разрешен, поэтому хранилище не продолжается.
- Y разрешен и оказывается равным X. В то время, когда хранилище для Y разрешено, это хранилище ищет очередь загрузки для спекулятивных загрузок, которые были выпущены, но присутствуют после хранения до Y в программе заказ. Он заметит нагрузку на X (которая равна Y) и должна раздавить эти инструкции, начиная с нагрузки X и следующих.
Буфер хранения - это спекулятивная структура, которая существует в ЦП, так же, как и очередь загрузки, и предназначена для того, чтобы процессор мог спекулировать на магазинах. Буфер объединения записи является частью системы памяти и, по сути, берет кучу небольших записей (думаю, 8 байтов) и упаковывает их в одну большую транзакцию (64-байтную строку кэша), прежде чем отправлять их в систему памяти. Эти записи не являются спекулятивными и являются частью протокола согласованности. Цель состоит в том, чтобы сохранить пропускную способность шины. Как правило, буфер с объединением записи используется для неадресации операций записи на устройства ввода/вывода (часто для видеокарт). В устройствах ввода/вывода типично выполнять кучу программирования регистров устройств, выполняя 8-байтовые записи, и буфер объединения записи позволяет объединять эти записи в более крупные транзакции при отправке их через кеш.