Some random GrafanCon EU 2k18 Notes – Telegram
Some random GrafanCon EU 2k18 Notes
73 subscribers
312 photos
9 files
54 links
Заметки по докладам на которые я пошел (начинаются с #talk) и флуд фоточками.

Связаться с автором можно так: @Civiloid
Download Telegram
и делая cflush можно сказать что данные были в кэше
пример:
time = rdtsc(); // чтение счетчика
maccess(&data[0x300]) //
delta = rdtsc() - time
и можно сказать были ли данные по адресу в кше
Почему же это вообще полезно?
ЧТобы понять - поговорим про предсказание ветвлений
когда цпу выполняет код
может встретится место в виде:
if (raining) { take_umbrella(); } else { do_something_else(); };
и тут два пути для процессора
можно подождать данных
и понять куда пойти
а можно попытаться предсказать куда мы пойдем дальше
и подгрузить данные дальше
процессор переходит в специальный режим - speculation
каждая инструкция анотируется флагом (speculative)
если процессор угадал - он работает быстрее
и если вдруг мы ошиблись и пошли не по той ветке - то происходит сброс данных
если не угадал - то данные удалятся и мы пойдем по другой ветке
и это не замедлит процессор по сравнению со случаем когда мы бы остановились
если мы выполним невилидные инструкции - то ничего не случится пока не поймем в какую втеку попали
Предполагается что из кода программы не узнать было ли предсказание успешным или нет
Предсказатель ветвлений так или иначе записывает историю