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

4.4.4. Атрибут политики записи кэша.

Кэшируемым страницам с отложенной записью (writeback) нужно только модифицировать процессорную копию расположения физической памяти; записанным данным нужно только быть переданными в систему памяти при изменении места процессорной копии, либо запускается инструкцияfc(flushcache– смыть кэш), чтобы смыть виртуальную адресацию. Запись строки кэша в память может быть отложена, если без ошибки выполнилась, указывающая на эту строку инструкция – сохранения, семафорная (успешная либо нет),ld.bias, принудительное сохранениеRSEилиlfetchс подсказкой.excl. Эти события допускают отложенную запись. Синхронизирующая инструкцияfc, запрещает последующую отложенную запись (после того как строка будет смыта).

Как описано в разделе первого тома 4.4.5.3.2 «Аннулирование элементов ALAT», платформо видимое удаление строк кэша из кэшей процессоров (например, откладывание записи строк кэша или платформо видимые замены) вызывает аннулирование соответствующих элементовALAT.

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(FlushCache), сливает все объединенно записанные данные, чей адрес находится в пределах 32 байтов, от выровненного на 32-байтовую границу адреса заданного в инструкцииfc, вынуждая данные стать видимыми. Инструкцияfcможет также слить дополнительные объединенно записанные данные. Инструкцияfwb(FlushWriteBuffers– слить буфера записи) является подсказкой процессору для облегчения сливания (визуализации) любых задержанных сохранений, содержащихся в буфере (или буферах) объединения, безотносительно к адресу.

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

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

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

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