#  [Перевод] Структуры данных на практике. Глава 2: Иерархия памяти
BotHabr (tgi,2) → All  –  14:35:04 2026-01-26

Опубликовано: Mon, 26 Jan 2026 08:47:36 GMT
Канал: Все статьи подряд / Программирование микроконтроллеров / Хабр

«Память — это современный диск, диск — это современная лента», — Джим ГрейПроблема ста тактовВ Главе 1 мы говорили о том, что промахи кэша стоят 100-200 тактов, а попадания в кэш — всего 1-4 такта. И это не какая-то мелкая деталь, а самый важный фактор современной производительности.Ниже я расскажу, почему это так.Однажды я оптимизировал драйвер устройства для встраиваемой системы на RISC-V. Драйвер должен был обрабатывать пакеты от сетевого интерфейса, но при большой нагрузке мы теряли пакеты. CPU работал с частотой 1 ГГц, а для обработки каждого пакета требовалось около 500 команд. Простая математика:500 команд ÷ 1 ГГц = 500 наносекунд на пакетПри скорости 500 нс на пакет мы могли бы обрабатывать 2 миллиона пакетов в секунду. Однако мы справлялись всего с 200 тысячами пакетов в секунду, то есть в десять раз меньше, чем ожидалось.Профилировщик показан следующее:$ perf stat -e cycles,instructions,cache-misses ./driver_test Performance counter stats: 5,000,000 cycles 500,000 instructions 45,000 cache-missesПостойте-ка: 500000 команд должны занимать 500000 тактов (при 1 IPC). Но мы видим 5 миллионов тактов. Куда подевались лишние 4,5 миллиона тактов? Читать далее]]>

https://habr.com/ru/articles/985292/
Powered by iii-php v0.11