Как работает кэш-память первого уровня - Кэш-память

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

Герой нашей истории (в данном случае вы), вкушающий различные яства, выступает в роли процессора, который извлекает необходимые данные из памяти и проводит их обработку. Кухня, на которой готовятся ваши любимые блюда, представляет собой основную оперативную память (SIMM/DIMM). Официант является кэш-контроллером, а стол, за которым вы сидите, выступает в качестве кэш-памяти первого уровня. Роль кэш-памяти второго уровня выполняет тележка с заказанными блюдами, неспешно путешествующая между кухней и вашим столом. Роли распределены, пора начинать нашу историю. Ежедневно примерно в одно и то же время вы обедаете в определенном ресторане. Входите в обеденный зал, садитесь за столик и заказываете, например, хот-дог. Для того чтобы сохранить соответствие событий, предположим, что средняя скорость поглощения пищи равна одному биту в четыре секунды (цикл процессора 233 МГц составляет около 4 нс). А также определим, что повару (т. е. кухне) для приготовления каждого заказанного блюда потребуется 60 с (значит, скорость основной памяти 60 нс).

Таким образом, при первом посещении ресторана вы садитесь за столик и заказываете хот-дог, после чего приходится ждать целых 60 секунд, пока приготовят заказанное блюдо. Когда официант наконец-то приносит заказ, вы не спеша, со средней скоростью, принимаетесь за еду. Быстренько доев хот-дог, подзываете к себе официанта и заказываете гамбургер. Пока его готовят, вы снова ждете те же 60 секунд. Принесенный гамбургер съедается с той же скоростью. Подобрав последние крошки, снова зовете официанта и заказываете уже котлеты "по-киевски". После 60-секундного ожидания принесенное блюдо съедается с аналогичной скоростью. После этого вы решаете заказать на десерт, скажем, яблочный пирог. Заказанный пирог вы получаете после ставшего привычным 60-секундного ожидания. Одним словом, обед состоит главным образом из длительных ожиданий, которые перемежаются энергичным поглощением заказываемых блюд.

После того как два дня подряд ровно в 18.00 вы приходите в ресторан и заказываете одни и те же блюда в одной и той же последовательности, у официанта появляется дельная мысль: "Сегодня в 18.00 снова появится этот странный посетитель и сделает свой обычный заказ: хот-дог, гамбургер, котлеты "по-киевски" и яблочный пирог на десерт. Почему бы не приготовить эти блюда заранее? Я думаю, он должным образом оценит мои старания". Итак, вы приходите в ресторан, заказываете хот-дог и официант сразу же, без малейшей паузы, ставит перед вами заказанное блюдо. После того как вы разделались с хот-догом и собираетесь заказать очередное блюдо, на столе появляется тарелка с гамбургером. Оставшаяся часть обеда проходит примерно так же. Вы стремительно, со скоростью один бит в четыре секунды, поглощаете пищу, не ожидая, пока заказанное блюдо будет приготовлено на кухне. На сей раз время обеда заполнено исключительно тщательным пережевыванием пищи, и все благодаря смекалке и практичному подходу официанта.

Приведенный пример достаточно точно описывает работу кэш-памяти первого уровня в процессоре. Роль кэш-памяти первого уровня в данном случае выполняет поднос, на котором может находиться одно или несколько блюд. При отсутствии официанта пространство подноса представляет собой некий резервный запас (т. е. буфер) продуктов питания. Если буфер заполнен, значит, можно есть до тех пор, пока поднос не опустеет. Обдуманно пополнить его содержимое, к сожалению, некому. Официант представляет собой кэш-контроллер, предпринимающий определенные меры и пытающийся решить, какие же блюда следует заранее поставить на стол в соответствии с вашими возможными пожеланиями. Подобно настоящему кэш-контроллеру, официант воспользуется своим опытом для того, чтобы определить, какое блюдо будет заказано следующим. Если он определит правильно, значит, не придется долго ждать.

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

После хот-дога официант приносит вам гамбургер и вместо слов благодарности слышит: "Вообще-то я гамбургер не заказывал. Принесите мне, пожалуйста, отбивную". Официант ошибся в своих предположениях, и вам снова придется ждать целых 60 секунд, пока на кухне не приготовят заказанное блюдо. Подобное событие, т. е. попытка доступа к той части кэшированного файла, которая отсутствует в кэш-памяти, называется Промахом Кэша (cache Miss). Как следствие, возникает пауза, или, если говорить о системе Pentium 233 МГц, при каждом промахе кэша быстродействие системы снижается до 16 МГц (т. е. до скорости оперативной памяти). Кэш-память первого уровня большей части процессоров Intel имеет коэффициент совпадения, равный примерно 90%.

Это означает, что кэш-память содержит корректные данные 90% времени, а следовательно, процессор работает на полной скорости (в данном случае с частотой 233 МГц) примерно 90% всего времени. Оставшиеся 10% времени кэш-контроллер обращается к более медленной основной памяти, во время чего процессор находится в состоянии ожидания. Фактически происходит снижение быстродействия системы до уровня оперативной памяти, скорость которой равна 60 нс, или 16 МГц.

В нашем примере, быстродействие процессора примерно в 14 раз выше скорости оперативной памяти. С развитием научного прогресса скорость памяти увеличилась с 16 МГц (60 нс) до 333 Мгц (3,0 нс), в то время как тактовая частота процессоров выросла до 3 ГГц и более. Таким образом, даже в самых современных системах память все еще в 7,5 (или более) раз Медленнее процессора. Кэш-память позволяет компенсировать эту разность.

Основная особенность кэш-памяти первого уровня состоит в том, что она всегда интегрирована с ядром процессора и работает на той же частоте. Это свойство в сочетании с коэффициентом совпадений, равным 90%, делает кэш-память важной составляющей эффективности системы.

Похожие статьи




Как работает кэш-память первого уровня - Кэш-память

Предыдущая | Следующая