Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПиП МПС(Ассемблер Левицкий экт 4) / MProc / M9 / Системная архитектура часть 4..doc
Скачиваний:
73
Добавлен:
16.04.2013
Размер:
751 Кб
Скачать

4.4.5. Атрибут объединения

Для некэшируемых страниц, атрибут объединения (Coalescing) информирует процессор, что множество сохранений для этой страницы может быть собрано в буфере объединения и запущено позднее, как одна большая объединенная транзакция. Процессор может накапливать сохранения в течение неопределенного периода времени. Множество задержанных загрузок, также может быть объединено в одну большую объединенную транзакцию, которая помещается в буфер объединения. Объединение является подсказкой эффективности для процессора; процессор может реализовывать, а может и не реализовывать объединение.

Процессор с множеством буферов объединения, должен обеспечивать потоковую политику, в которой, потоки буферизуются в примерно одинаковых долях, даже если некоторые буфера полны только частично. Процессор может делать видимыми сливания буферов объединения, в любом порядке. Более того, отдельные байты в одном объединенном буфере могут быть слиты и станут видимыми в любом порядке.

Сохранения (включая IA-32), которые объединены, выполняются не по порядку; объединение может произойти и по пространству и по времени. Например, запись в байты 4 и 5, а также запись в байты 6 и 7 могут быть объединены в единую запись байтов 4, 5, 6 и 7. Кроме того, запись байтов 5 и 6, может быть скомбинирована с записью байтов 6 и 7 в единую запись байтов 5, 6 и 7.

Любая операция освобождения (release) (не зависимо от того обращается ли она к странице с атрибутом объединения памяти), либо любая инструкция типа забора (fence), принудительно записывает объединенные данные, чтобы их смыть, и делает видимым все предшествующее этой самой инструкции. (Список инструкций освобождения и забора см. табл. 4.14). Любая, типа IA-32, сериализационная инструкция или обращение к некэшируемому типу памяти, принудительно записывает объединенные данные, чтобы их смыть, и делает видимым все предшествующее этой самой инструкции. Даже если IA-32 сохранения и загрузки упорядочены, объединенно записанные данные, не смываются, если IA-32 сохранения и загрузки не связаны с некэшируемыми типами памяти.

Инструкция сливания кэша fc (Flush Cache), сливает все объединенно записанные данные, чей адрес находится в пределах 32 байтов, от выровненного на 32-байтовую границу адреса заданного в инструкции fc, вынуждая данные стать видимыми. Инструкция fc может также слить дополнительные объединенно записанные данные. Инструкция fwb (Flush Write Buffers – слить буфера записи) является подсказкой процессору для облегчения сливания (визуализации) любых задержанных сохранений, содержащихся в буфере (или буферах) объединения, безотносительно к адресу.

При завершении сливания сохранений не делается никакой индикации. Инструкция fwb не гарантирует упорядочения объединенных сохранений, поэтому более поздние сохранения могут быть слиты раньше, чем более ранние. Чтобы гарантировать, что предшествующие объединенные сохранения станут видимыми до более поздних сохранений, программа должна запустить между сохранениями операцию освобождения.

Процессор может в любой момент, слить объединенные сохранения в любом порядке, прежде чем программное обеспечение явно потребует это сделать.

Для объединенных страниц не гарантируется когерентность с объединенными буферами или кэшами других процессоров или с другими кэшами локального процессора. При загрузках в страницы объединенной памяти, процессор видит результаты всех предыдущих сохранений того же самого процессора в ту же самую страницу объединенной памяти. Обращения к памяти делаемые буфером объединения (например, сливы буфера) имеют атрибут упорядочивания памяти – не упорядоченная и не последовательная. См. раздел 4.4.7 «Атрибут последовательности и упорядочивание».

Данные, которые читаются или предварительно выбираются в буфер объединения до выполнения Itanium инструкций типа запрос или забор (acquire, fence), аннулируются инструкциями типа запрос или забор. (Список инструкций запроса и забора см. табл. 4.14).