Примечание: я не читал / не видел эту книгу.
Для учебных материалов;если автор точно описывает реальность со всеми деталями, читатель просто запутается и не сможет учиться.Чтобы обойти это, авторы упрощают (опускают детали и игнорируют реальность), вводя различные концепции, так что читатель может изучать каждую концепцию по одному, накапливая знания, необходимые для понимания сложности реальности.
Проблема в том, что разные упрощения имеют смысл на разных этапах, и авторы являются людьми (несовершенными), поэтому иногда упрощения, которые были полезны в одной точке (в одной главе), вступают в противоречие с упрощениями, которые полезны в более поздней точке (вдругая глава).
Например, я мог бы (изначально) сказать кому-то «каждый доступ из виртуальной памяти включает в себя второй выбор памяти из ОЗУ для определения перевода», чтобы помочь им понять, как работают таблицы страниц и что есть(потенциальные) проблемы с производительностью (вдвое больше обращений к памяти).Затем я мог бы представить концепцию «буферов перевода в сторону» (после того, как читатель поймет, как работают таблицы страниц и узнает о проблеме, для решения которой предназначены TLB).Затем я мог бы объяснить, что часто реальные системы имеют несколько уровней таблиц страниц (например, в 64-битной 80x86 это четыре уровня, потенциально предполагающих 4 обращения к памяти для определения перевода) и что могут быть задействованы кэши / буферы более высокого уровня (а не толькоTLB, которые кэшируют окончательные переводы).В этом случае мое первоначальное утверждение («каждый доступ из виртуальной памяти включает в себя второй выбор памяти из ОЗУ для определения перевода») является преднамеренной ложью (упрощением), чтобы избежать сложности такого утверждения, как «каждый доступ из виртуальной памяти можетили может не включать одну или несколько дополнительных выборок из некоторых или всех уровней таблиц страниц "(что изначально слишком запутанно для новичков, потому что создает множество вопросов, на которые у них пока нет ответов).
Я не могу понять, почему автор предполагает, что в случае отсутствия ошибки страницы потребуется только один доступ к памяти.
Одна реальность такова (для одного реального процессора 80x86 в длинномрежим, но не все процессоры 80x86 в длинном режиме и никакие 80x86 в других режимах, если виртуализация не используется), для чтения из виртуальной памяти, которая не приводит к сбою страницы, если доступ не выровнен / не распределен по страницеграницы (где процессор должен был бы сделать все это дважды, чтобы получить байты от 2 разныхges и объединить байты):
* if the translation is not in the TLB, then:
* if the area is not in the "page directory cache"
* fetch the PML4 entry to determine address of PDPT (try L1 cache, then L2 cache, then L3 cache, then RAM)
* do access checks based on flags in PML4 entry
* fetch the PDPT entry to determine address of PD (try L1 cache, then L2 cache, then L3 cache, then RAM)
* do access checks based on flags in PDPT entry
* insert data into "page directory cache"
* if the area is in the "page directory cache"
* do access checks based on flags in "page directory cache entry"
* fetch the PD entry to determine address of PT (try L1 cache, then L2 cache, then L3 cache, then RAM)
* do access checks based on flags in PD entry
* fetch the PT entry to determine address of page (try L1 cache, then L2 cache, then L3 cache, then RAM)
* do access checks based on flags in PT entry
* insert data into TLB (including setting the "accessed" flag in the page table entry)
* if the translation is in the TLB, then:
* do access checks based on flags in "TLB entry"
* do the "physical address = physical address of page + offset in page" calculation
* read the data for the physical address (try L1 cache, then L2 cache, then L3 cache, then RAM)
Для этой реальности (с упомянутыми ограничениями);число выборок из ОЗУ может быть любым от нуля до 5.
Можете ли вы понять, почему автор (пытаясь объяснить ошибки страниц и не пытаясь объяснить стоимость перевода) может захотеть не показывать что-то подобное иможет упростить (предполагая, что требуется только одна выборка, потому что перевод находится в TLB) вместо этого?