Давай начнём чуть раньше. В каких случаях это может применяться? Когда нужно получить доступ к защищённой памяти (скажем, код выполняется из ядра)? Или когда мы не знаем адреса данных, но имеет доступ к памяти? Или ещё в каких-то случаях?
Давай начнём чуть раньше. В каких случаях это может применяться? Когда нужно получить доступ к защищённой памяти (скажем, код выполняется из ядра)? Или когда мы не знаем адреса данных, но имеет доступ к памяти? Или ещё в каких-то случаях?
при спекулятивном исполнении проц для ускорения одновременно выполняет и taken и non-taken ветку, затем как условие вычислится, результат ненужной ветки отбрасывается
Всё так, но там вроде еще был - нюанс, что систему предсказания (branch prediction) сначала нужно натренировать, чтобы проц начал выполнять две ветки вместо одной, по инерции ))
если проверка прав доступа идет не после фетча из памяти, когда данные уже почти лежат в регистрах, а до него, то есть даже до оперативы не успели достучаться, то трюк не сработает
Всё так, но там вроде еще был - нюанс, что систему предсказания (branch prediction) сначала нужно натренировать, чтобы проц начал выполнять две ветки вместо одной, по инерции ))