LINUX.ORG.RU

История изменений

Исправление 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%, и нет тут никакой Охрененно Сложной Исследовательской Задачи

я думал, что это очевидно, поэтому и не остановился на этом в первом своем ответе

(да, можно запросить чтение массива без сохранения в кэше, но это только во вред)