Перевод TLB против кеша

У меня есть сомнения относительно управления памятью в операционных системах. Я знаю, что кеш - это временное хранилище, используемое для ускорения доступа к памяти, тогда как TLB используется для ускорения трансляции виртуального адреса в физический.

  1. Теперь, если адрес виртуальной памяти сгенерирован, что нужно сделать в первую очередь?
  2. Если первый шаг ссылается на TLB и генерирует физический адрес, какой будет второй шаг? (Относится ли он к кешу, чтобы увидеть, хранятся ли эти данные в кэше)?
  3. Используют ли современные компьютеры TLB?
  4. как ЦП узнает, где находится таблица страниц?

person DesirePRG    schedule 18.05.2013    source источник


Ответы (1)


  1. Это зависит от того, что вы подразумеваете под «сгенерированным». Если вы действительно имели в виду «чтение», то первым шагом было бы либо посмотреть в TLB, если адрес уже был переведен, либо, если ваш кеш поддерживает виртуальные адреса, посмотреть в самом кэше, чтобы увидеть, есть ли запись, соответствующая этому виртуальному адресу (и если он принадлежит соответствующему процессу, самого виртуального адреса недостаточно).
  2. Если первым шагом было преобразование виртуального в физический, то кэш предназначен для физических адресов. Если вы хотите прочитать, тогда действительно следующим шагом будет просмотр кеша.
  3. Да, это так. Большинство процессоров, использующих виртуальную память, используют TLB.
  4. Да, но это зависит от вашей архитектуры. Например, на процессоре Intel (x86) указатель таблицы страниц хранится в регистре cr3.
person Guillaume Ballet    schedule 18.05.2013