История изменений
Исправление www_linux_org_ru, (текущая версия) :
2. компилятор знает, что [bx] сейчас в кэшах с *определенной* вероятностью
Я не встречал компиляторы, которые пытаются моделировать поведение cache и предсказывать его состояние. Это чрезвычайно сложная задача сама по себе.
на всякий случай уточню, что п.2 встречается достаточно часто: скажем, проц имеет кэш в 4МБ, у нас есть массив в 8МБ, состоящий из структур размером меньше кэш-линии (или даже просто из 4-байтовых целых)
этот массив был ранее заполнен (возможно последовательно), и сейчас мы читаем его в *произвольном* порядке, и при этом в память почти не пишем (или пишем без сохранение в кэш); так как весь массив в кэш не влезет, то после чтения части массива (скажем, 1/8) вероятность найти новое значение в кэше близка к 50%, и нет тут никакой Охрененно Сложной Исследовательской Задачи
я думал, что это очевидно, поэтому и не остановился на этом в первом своем ответе
(да, можно запросить чтение массива без сохранения в кэше, но это только во вред)
другое дело, что ты может быть расскажешь, почему компилятору инфа о 50% бесполезна? в двух разрезах: 1) современная архитектура 2) гипотетическая архитектура с управляемым ooe
Исходная версия www_linux_org_ru, :
2. компилятор знает, что [bx] сейчас в кэшах с *определенной* вероятностью
Я не встречал компиляторы, которые пытаются моделировать поведение cache и предсказывать его состояние. Это чрезвычайно сложная задача сама по себе.
на всякий случай уточню, что п.2 встречается достаточно часто: скажем, проц имеет кэш в 4МБ, у нас есть массив в 8МБ, состоящий из структур размером меньше кэш-линии (или даже просто из 4-байтовых целых)
этот массив был ранее заполнен (возможно последовательно), и сейчас мы читаем его в *произвольном* порядке, и при этом в память почти не пишем (или пишем без сохранение в кэш); так как весь массив в кэш не влезет, то после чтения части массива (скажем, 1/8) вероятность найти новое значение в кэше близка к 50%, и нет тут никакой Охрененно Сложной Исследовательской Задачи
я думал, что это очевидно, поэтому и не остановился на этом в первом своем ответе
(да, можно запросить чтение массива без сохранения в кэше, но это только во вред)