Таненбаум Э.- Архитектура компьютера. стр.72 Таненбаум Э.- Архитектура компьютера.

Рис. 2.13. Кэш-память по логике вещей должна находиться между процессором и основной памятью. В действительности существует три возможных варианта размещения кэш-памяти

Мы можем сделать и более строгие вычисления. Пусть с — время доступа к кэш-памяти, т — время доступа к основной памяти и h — коэффициент кэш-попаданий (hit ratio), который показывает соотношение числа обращений к кэш памяти и общего числа всех обращений к памяти. В нашем примере h = (k - l)/k. Некоторые авторы выделяют коэффициент кэш-промахов (miss ratio), равный 1 -h.

Таким образом, мы можем вычислить среднее время доступа: Среднее время доступа = с + (1 - К) т.

Если h —> 1, то есть все обращения делаются только к кэш-памяти, то время доступа стремится к с. С другой стороны, если h —» 0, то есть каждый раз нужно обращаться к основной памяти, то время доступа стремится кс + ш: сначала требуется время с для проверки кэш-памяти (в данном случае безуспешной), а затем — время т для обращения к основной памяти. В некоторых системах обращение к основной памяти может начинаться параллельно с исследованием кэш-памяти, чтобы в случае кэш-промаха цикл обращения к основной памяти уже начался. Однако эта стратегия требует способности останавливать процесс обращения к основной памяти в случае кэш-попадания, что усложняет разработку подобного компьютера.

Основная память и кэш-память делятся на блоки фиксированного размера с учетом принципа локальности. Блоки внутри кэш-памяти обычно называют строками кэша (cache lines). При кэш-промахе из основной памяти в кэш-па мять загружается вся строка, а не только необходимое слово. Например, если строка состоит из 64 байт, обращение к адресу 260 влечет за собой загрузку в кэш-память всей строки (байты с 256 по 319) на случай, если через некоторое время понадобятся другие слова из этой строки. Такой путь обращения к памяти более эффективен, чем вызов каждого слова по отдельности, потому что одно кратный вызов k слов происходит гораздо быстрее, чем вызов одного слова k раз.

Кэш-память очень важна для высокопроизводительных процессоров. Однако здесь возникает ряд вопросов. Первый вопрос — объем кэш-памяти. Чем больше объем, тем лучше работает память, но тем дороже она стоит. Второй вопрос — размер строки кэша. Кэш-память объемом 16 Кбайт можно разделить на 1024 строки по 16 байт, 2048 строк по 8 байт и т. д. Третий вопрос — механизм организации кэш-памяти, то есть то, как она определяет, какие именно слова находятся в ней в данный момент. Устройство кэш-памяти мы рассмотрим подробно в главе 4.

Четвертый вопрос — должны ли команды и данные находиться вместе в общей кэш-памяти. Проще всего разработать объединенную кэш-память (unified cache), в которой будут храниться и данные и команды. В этом случае вызов команд и данных автоматически уравновешивается. Однако в настоящее время существует тенденция к использованию разделенной кэш-памяти (split cache), когда команды хранятся в одной кэш-памяти, а данные — в другой. Такая архитектура также называется гарвардской (Harvard architecture), поскольку идея использования отдельной памяти для команд и отдельной памяти для данных впервые воплотилась в компьютере Marc III, который был создан Говардом Айкеном (Howard Aiken) в Гарварде. Современные разработчики пошли по это му пути, поскольку сейчас широко распространены конвейерные архитектуры, а при конвейерной организации должна быть возможность одновременного доступа и к командам, и к данным (операндам). Разделенная кэш-память позволяет осуществлять параллельный доступ, а общая — нет. К тому же, поскольку команды обычно не меняются во время выполнения программы, содержание кэша команд не приходится записывать обратно в основную память.


⇐ Предыдущая страница| |Следующая страница ⇒