Alexiy:Caesar
Я ничего не путаю, вы меня не поняли, кажется.
Хочу заметить, что я не изобретал/находил эти цифры; я всего лишь увидел пост, процитировал его, и продемонстрировал бредовость "расчётов", приведенных в нём. 75 нс - это много. Есть ли на самом деле те 75 нс - не знаю.
Я тот Ваш пост
120 - 45 = 75 нс разницы, это 75 нс * 4 такта/нс = 300 тактов на частоте 4 ГГц.
300 тактов - это дофига, это больше задержки доступа к L3 и где-то на уровне доступа к основной памяти.
несколько раз перечитал. И не я один не понял. Потому, что расчёт, увы, не "бредовый", хотя цифры могут отличаться. Когда данные уже в кэше (благодаря предвыборке), время доступа к ним минимальное. Если их там нет (промах) - общее время доступа (к кэшу + к ОЗУ), несколько больше, чем доступ только к ОЗУ, когда заранее известно, что этих данных в кэше точно нет.
В случае нескольких кристаллов на подложке (или процессоров на плате),
как я понимаю, после промаха в "свой" кэш следует ещё промах в "чужие" кэши потому, что из-за миграции потоков между ядрами данные остаются в старом, теперь уже "чужом" кэше. Вообще-то, это обязанность ОС (диспетчера задач) - оптимально переносить потоки между ядрами, по возможности только
в пределах кристалла с учётом внутреннего строения, избегая миграции потоков
между кристаллами. Но в ОС эти особенности не всегда учтены сразу, и проходит немало времени, прежде чем поправят патчем (обновлением) - примеров тому в истории немало.
А зачинщик "доступа" под конец и сам запутался в конец
m9c1k:В самом низу статьи про межядерные задержки, аида показыает задержки к ОЗУ.