home.social

#кэш_cpu — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #кэш_cpu, aggregated by home.social.

  1. [Перевод] Структуры данных на практике. Глава 2: Иерархия памяти

    «Память — это современный диск, диск — это современная лента», — Джим Грей Проблема ста тактов В Главе 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 миллиона тактов?

    habr.com/ru/articles/985292/

    #кэш_процессора #кэш_cpu

  2. [Перевод] Структуры данных на практике. Глава 2: Иерархия памяти

    «Память — это современный диск, диск — это современная лента», — Джим Грей Проблема ста тактов В Главе 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 миллиона тактов?

    habr.com/ru/articles/985292/

    #кэш_процессора #кэш_cpu

  3. [Перевод] Структуры данных на практике. Глава 2: Иерархия памяти

    «Память — это современный диск, диск — это современная лента», — Джим Грей Проблема ста тактов В Главе 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 миллиона тактов?

    habr.com/ru/articles/985292/

    #кэш_процессора #кэш_cpu

  4. [Перевод] Структуры данных на практике. Глава 2: Иерархия памяти

    «Память — это современный диск, диск — это современная лента», — Джим Грей Проблема ста тактов В Главе 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 миллиона тактов?

    habr.com/ru/articles/985292/

    #кэш_процессора #кэш_cpu