Здравствуйте, ononim, Вы писали:
C>>Обычный барьер не очищает L1-кэш. Он лишь форсирует его синхронизацию.
O>....которая занимает время, равное времени записи в память. То есть разрешение твоего таймера будет заведомо больше самого большого интервала, который нужно измерить, чтобы провести атаку.
Чтение данных из DRAM — это около 300 наносекунд, или около 600 циклов на типичном CPU. Межпроцессорная синхронизация — это около 50 циклов. Более чем достаточно запаса.
C>>Подумай сам:
C>>C>> Time: [ 1 2 3 4 5 6 7 8 9 10 ] [ 1 2 3 4 5 6 7 8 9 10 ]
C>> ping start -> * * <- ping end
C>>
O>Ненене, Дэвид Блейн. В моем эксперименте начало отсчета таймера привязано к началу операции.
Кто такую ересь сказал? У меня таймер будет в соседнем потоке, метрономно касаться определённого участка кэша.
Впрочем, даже в твоём сценарии я смогу сделать измерение. Просто делаем его 20 раз для того, чтобы накопить время.
O>Понятно, ты значит никогда не пинговал виндой до версии ХР или уже забыл как оно там. Так вот, поясню — там никогда пинг не возвращал 0 мсек. Он, сцуко, ВСЕГДА выдавал для всех локальных компов 10 мсек. И никакой статистикой нельзя было определить находится хост через один свич или через два свича от тебя.
Очевидно, что ping в Винде не разрабатывался для того, чтобы обойти ограничения таймера. Там, скорее всего, и потоков-то не было.
C>>Тут вот ещё предложили атаковать сетевыми пакетами. Их точности тоже достаточно на скорости в 10Gb.
O>Предложить можно что угодно
Я предлагаю атаковать почтовыми голубями.
Предлагай. Только вот что с 10G Ethernet делать будем?
C>>Для защиты от SPECTRE добавляют новые инструкции и плугины к компиляторам, которые их автоматически могут вставлять. В более длительной переспективе, производители процессоров будут исправлять спекуляцию, чтобы она была не видна.
O>Ну ясно-понятно теперь, зачем эту штуку так активно пропиарили. Простое элегантное решение никому не нужно.
Это решение ничерта не простое и уж совсем не элегантное.
Проще перейти тогда на in-order и не заниматься сексом с мозгом.