Size: a a a

2021 January 11

А

Алексей in rust_offtopic
Constantine Drozdov
ты восстанавливаешь состояние, а не регистры
ну вот посчитали что кэш в это состояние не входит
источник

CD

Constantine Drozdov in rust_offtopic
Алексей
ну вот посчитали что кэш в это состояние не входит
разумеется, L1 кэш никакого отношения к состоянию ЦПУ не имеет
источник

А

Алексей in rust_offtopic
в принципе это логично, так как никаких ограничений на состояние кэша нет и никаких обязательств по приведению кэша в какое-то определённое состояние у процессора тоже нет
источник

CD

Constantine Drozdov in rust_offtopic
давай зададим вопрос первокурсникам из чатика по С++ что входит в состояние ЦПУ
источник

CD

Constantine Drozdov in rust_offtopic
тем, кто понимает, что такое "состояние"
источник

CD

Constantine Drozdov in rust_offtopic
открываем определение, состояние - то, что полностью описывает реакции системы
источник

А

Алексей in rust_offtopic
ну вообще обычно спекулятивное выполнение не должно по идее восстанавливать состояние кеша
источник

CD

Constantine Drozdov in rust_offtopic
Constantine Drozdov
открываем определение, состояние - то, что полностью описывает реакции системы
открываем мануал к интеловым процам и смотрим, что же там встречается в качестве условий на операции
источник

А

Алексей in rust_offtopic
и что там встречается?
источник

CD

Constantine Drozdov in rust_offtopic
Алексей
ну вообще обычно спекулятивное выполнение не должно по идее восстанавливать состояние кеша
спекулятивное выполнение не должно игнорировать возникновение исключения общей защиты в процессе собственной работы
источник

CD

Constantine Drozdov in rust_offtopic
Алексей
и что там встречается?
например, время доступа к атомику зависит от состояния кэша
источник

CD

Constantine Drozdov in rust_offtopic
разница в 5 раз
источник

А

Алексей in rust_offtopic
Constantine Drozdov
спекулятивное выполнение не должно игнорировать возникновение исключения общей защиты в процессе собственной работы
в каком смысле не должно игнорировать?
источник

CD

Constantine Drozdov in rust_offtopic
Алексей
ну вообще обычно спекулятивное выполнение не должно по идее восстанавливать состояние кеша
источник

CD

Constantine Drozdov in rust_offtopic
ответ на вопрос "каким образом читать состояние кэша" просто записан в мануале
источник

А

Алексей in rust_offtopic
а в мануале описано что это состояние обязано сохраняться?
источник

CD

Constantine Drozdov in rust_offtopic
Алексей
а в мануале описано что это состояние обязано сохраняться?
какая разница, обязано оно сохраняться или нет
если оно содержит секретную информацию оно вообще должно удаляться немедленно как только она перестала использоваться, это ещё один basic которому учат студентов
источник

А

Алексей in rust_offtopic
потому что я могу например читать регистры процессора, но если я вызову функцию, то не факт что все регистры сохранят свои значения, потому что функция не обязана их сохранять
источник

А

Алексей in rust_offtopic
Constantine Drozdov
какая разница, обязано оно сохраняться или нет
если оно содержит секретную информацию оно вообще должно удаляться немедленно как только она перестала использоваться, это ещё один basic которому учат студентов
ага, вот только процессор не знает что там секретное, а что не очень
у него задача выполнить код, да ещё и побыстрее бы
источник

CD

Constantine Drozdov in rust_offtopic
Алексей
а в мануале описано что это состояние обязано сохраняться?
давай посмотрим, догадались ли эти недогадливые людишки, что надо нулить L1 кэш при переходе из r0 в r3 или тут им было очевидно, что кэш это часть состояния, а в случае Spectre - нет
источник