рассчитать эффективное время доступа

Это абзац из Концепции операционной системы, 9-е издание Зильбершатц и др.:

Процент случаев, когда интересующий номер страницы находится в TLB, называется коэффициентом попадания. Например, 80-процентный коэффициент попадания означает, что мы находим нужный номер страницы в TLB в 80 процентах случаев. Если для доступа к памяти требуется 100 наносекунд, то доступ к отображаемой памяти занимает 100 наносекунд, когда номер страницы находится в TLB. Если нам не удастся найти номер страницы в TLB, то мы должны сначала получить доступ к памяти для таблицы страниц и номера кадра (100 наносекунд), а затем получить доступ к нужному байту в памяти (100 наносекунд), всего 200 наносекунд. (Мы предполагаем, что поиск в таблице страниц требует только одного обращения к памяти, но, как мы увидим, может потребоваться и больше.) Чтобы найти эффективное время доступа к памяти, мы взвешиваем случай по его вероятности: эффективное время доступа = 0,80. × 100 + 0,20 × 200 = 120 наносекунд

но в 8-м издании той же книги введите здесь описание изображения

я запутался с

эффективное время доступа

Может ли кто-нибудь объяснить это для меня?


person Aysha Almaqtari    schedule 31.08.2013    source источник
comment
«Эффективное время доступа» — это, по сути, (взвешенное) среднее время, необходимое для получения значения из памяти. Если вы сделаете 100 запросов на чтение значений из памяти, 80 из этих запросов займут 100 нс, а 20 из них потребуют 200 (с использованием скоростей 9-го издания), поэтому общее время составит 12 000 нс при среднем времени 120 нс. за доступ. Ни один доступ к памяти не займет 120 нс; каждый займет 100 или 200 нс. (В средней семье 2,3 ребенка, но в любой реальной семье 0, 1, 2 или 3 ребенка — или целое число детей; вы не увидите много бродячих «трех десятых ребенка»).   -  person Jonathan Leffler    schedule 31.08.2013
comment
Дело в том, что автор пытался упростить в 9-м издании и допустил ошибку. Он попытался объединить время доступа 20 нс для TLB с временем доступа 80 нс для памяти, чтобы получить хорошие 100 нс. Если это так, промах займет 20 нс + 80 нс + 80 нс = 180 нс, а не 200 нс. В 9-м издании опечатка.   -  person kainaw    schedule 07.10.2015


Ответы (6)


В случае, если страница найдена в TLB (попадание в TLB), общее время будет равно времени поиска в TLB плюс время доступа к памяти, поэтому

TLB_hit_time := TLB_search_time + memory_access_time

В случае, если страница не найдена в TLB (промах TLB), общее время будет равно времени поиска в TLB (вы ничего не нашли, но тем не менее искали) плюс время доступа к памяти для получения таблицы страниц. и кадр, плюс время доступа к памяти для получения данных, поэтому

TLB_miss_time := TLB_search_time + memory_access_time + memory_access_time

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

EAT := TLB_miss_time * (1- hit_ratio) + TLB_hit_time * hit_ratio

or

EAT := (TLB_search_time + 2*memory_access_time) * (1- hit_ratio) +
       (TLB_search_time + memory_access_time) * hit_ratio
person Santiago    schedule 01.07.2015
comment
Если бы это была трехуровневая пейджинговая система, было бы TLB_hit_time равным: TLB_search_time + 3* memory_access_time, а TLB_miss_time равнялось TLB_search_time + 3*(memory_access_time + memory_access_time), а EAT было бы таким же? - person qwerty; 27.04.2016
comment
@qwerty да, EAT будет таким же. В вашем примере memory_access_time всегда будет 3 *, потому что вам всегда нужно проходить 3 уровня страниц, поэтому EAT не зависит от используемой системы подкачки. - person Santiago; 19.05.2016

Эффективное время здесь — это просто среднее время с использованием относительных вероятностей попадания или промаха. Таким образом, если попадание происходит в 80 % случаев, а промах — в 20 %, тогда эффективное время (т. е. среднее время) для большого количества попаданий/промахов будет равно 0,8 * (время попадания) + 0,2 * (время промаха). ).

person Paul R    schedule 31.08.2013

Общая формула EAT

Коэффициент попадания = а

Время доступа к основной памяти = m

Ассоциативный поиск (доступ к TLB) = e

ЕАТ = (т + е) а + (2т + е) (1 - а)

    = 2m - ma + e
person emon    schedule 03.12.2016

В TLB сохраняется копия часто используемого номера страницы и кадра из таблицы страниц, сохраненной в памяти.

Сначала он смотрит в TLB. Если он найден, он переходит в ячейку памяти, поэтому общее время доступа равно:

20 + 100 = 120 ns

Теперь, если TLB отсутствует, вам нужно сначала найти TLB, а затем таблицу страниц, которая хранится в памяти. Таким образом, один доступ к памяти плюс один доступ к конкретной странице, не что иное, как еще один доступ к памяти. Таким образом, общее время равно:

20 + 100 + 100 = 220 ns

А эффективное время доступа к памяти равно:

0.80 * 120 + 0.20* 220 = 140 ns
person Kuntal    schedule 05.05.2015

Эффективное время доступа — это общее время, затраченное на доступ к памяти (т. е. сумма времени доступа к основной памяти и кэшу), деленное на общее количество обращений к памяти.

person chila    schedule 04.03.2015
comment
Похоже на комментарий, а не на ответ - person sqluser; 04.03.2015

Среднее время доступа - это время попадания + частота промахов * время промаха, не согласен с ответом @Paul R

person sunjiayang    schedule 25.11.2015
comment
Это было бы верно для штрафа за промах (время промаха - время попадания), но время промаха — это общее время промаха, поэтому вам не следует учитывать время попадания сверх этого для промахов. - person Peter Cordes; 16.02.2021