Kacam.net

Системы

一次内存读,硬件走了几步

一次普通的内存读,硬件到底走了几步?

Скопируйте заготовку и выберите модель. Она будет вести себя как интервьюер и разбирать задачу с вами по действиям, а не выкладывать ответ.

ChatGPT Claude DeepSeek 豆包 Kimi Gemini

На телефоне с установленным приложением система откроет само приложение. Внутри WeChat внешние приложения не открываются — сначала откройте ссылку в браузере.

В конце скопированного текста лежит разбор, по которому модель вас оценивает. Не читайте его заранее: ценно именно то, что вы дошли сами.

这一份的分水岭是一问:翻译缓存没命中,和一个页根本不在内存里,是同一件事吗? 两者差三到四个数量级,一个纯硬件几十周期,一个要陷进内核 —— 分不清这两个,线上看到 fault 数飙升时就不知道该往哪查。

前面几幕会逼你自己算出「一张页表要 4MB、每个进程一张」,然后自己推出为什么必须分级、为什么必须有那个缓存。

顺带回答一个很多人记反的问题:虚拟内存的主要目的到底是不是「内存不够时拿磁盘顶上」。

★★★★☆ · около 35 мин · Что проверяется: 多级页表为什么存在、TLB 与缺页的区别、四个数量级

Что тренирует эта

Страницы и трансляция адресов Кэши и кэш-линии Порядки задержек

Делали эту задачу?

Войдите, чтобы отметить, что задача пройдена: в следующий раз будет видно, когда это было.

Заметки тех, кто уже прошёл

Пока никто не написал. После разбора расскажите, что из него вышло: на каком действии вы застряли и какой вывод потом поменяли.

Войти, чтобы написать заметку.

Как этим пользоваться

Эта серия учит, а не допрашивает: она ведёт, а не давит, пока вам нечего станет сказать. Когда вы застряли, она сначала спрашивает, на каком уровне (не слышал / знаю, но не понимаю почему / понимаю, но не применяю), и только потом решает, что дать. Прямой ответ — лишь после двух попыток вас подвести, и затем просит пересказать своими словами.

Она будет всё время требовать цифры: ответите «есть накладные расходы» или «быстрее» — вас оборвут. Вывод, к которому вы не можете назвать порядок, — это заученный вывод, и именно это здесь тренируется.

С чего начать

  1. Выберите одну, откройте, скопируйте промпт.
  2. Вставьте в совершенно новый пустой диалог, ничего не говорите и ждите первого вопроса.
  3. Готовьтесь называть порядки: сколько наносекунд, сколько микросекунд, во сколько раз медленнее. Сказать «не знаю» нормально — она пометит и пойдёт дальше.

Четыре команды, которые можно бросить в любой момент

  • 跳过 сразу к следующей сцене
  • 换个说法 объяснить это место под другим углом
  • 直说吧 дать полный ответ, а потом заставить меня пересказать
  • 复盘 перейти к финалу и выдать карточку разбора

Три ловушки

  • Не читайте ответы в конце заранее — раздел «как обычно ошибаются» и есть ответ на каждый вопрос.
  • Не хватайтесь за термин. Сказать «это промах TLB» легко; сказать, насколько он дешевле отказа страницы, — вот это и считается.
  • Когда начнёт вас хвалить, напомните про правило «не хвали меня». Вести — не значит нянчить.

Чтобы набрать чувство порядков: случайное чтение, затем первый байт. Для разбора инцидентов: malloc, залипания TCP, переключения контекста. Для многопоточного кода: переупорядочивание и ложное разделение.