Alasir Enterprises
Main Page >  Articles >  Принципы работы кэш-памяти  

 
Main Page
 
 
Reviews
 
Articles
 
Software
 
Reference
 
Motley
 
 
About Us
 
 
Принципы работы кэш-памяти

Павел Болотов
 
Дата публикации: 20 апреля 2007
Дата последнего изменения: 20 апреля 2007

Содержание:
in English

"Третьей структурной особенностью БЭСМ-6 является метод использования сверхоперативной, не адресуемой из программы памяти небольшого объёма, цель которого — автоматическая экономия обращений к основному оперативному запоминающему устройству. Эта сверхоперативная память управляется таким образом, что часто используемые операнды и небольшие внутренние командные циклы оказываются на быстрых регистрах и готовы к немедленному использованию в арифметическом устройстве или системе управления машиной. Быстрые регистры в ряде случаев позволяют экономить до 60% всех обращений к памяти, уменьшают тем самым временные затраты на ожидание чисел и команд из основной памяти..."
 
"Четвёртой структурной особенностью БЭСМ-6, имеющей очень важное значение для построения операционных систем и работы машины в мультипрограммном режиме, является принятый аппаратный способ преобразования математических, или виртуальных адресов в физические адреса машины. В машине БЭСМ-6 чётко выдержано деление на физическую и математическую память, принята постраничная организация..."

 
Л. Н. Королёв, "Структуры ЭВМ и их математическое обеспечение", 1974.

БЭСМ-6 (Большая Электронная Счётная Машина - 6) была последней советской ЭВМ из семейства БЭСМ. Её проектировка велась в ИТМиВТ АН СССР (Институт Точной Механики и Вычислительной Техники Академии Наук СССР) под руководством С. А. Лебедева и В. А. Мельникова. Работы были завершены в 1966, а построенная машина стала обладателем рекордной на то время пиковой вычислительной способности в 1 MIPS (Million Instructions Per Second).
BESM-6
БЭСМ-6 в помещении ИТМиВТ АН СССР

Вступление

Вопросы, связанные с устройством и функционированием кэш-памяти (cache memory) часто интересуют людей, связанных или просто проявляющих интерес к компьютерной технике. Тем не менее, найти относительно исчерпывающие ответы на них весьма нелегко, в особенности без обращения к многочисленным книгам и статьям. Когда заходит речь о кэш-памяти, люди обычно уделяют почти всё внимание её размеру и тактовой частоте, опуская прочие характеристики как малопонятные. Однако, этот подход настолько же абсурден, как сравнение процессоров исключительно по их тактовой частоте или модулей оперативной памяти по их размеру — разумеется, в байтах, а не в сантиметрах или дюймах, хотя с точки зрения корректности сравнения разница невелика. В целом, данная статья призвана ликвидировать это неуважение к кэш-памяти. В то же время, для понимания излагаемого материала у читателя предполагается наличие некоторых познаний в области математики и компьютерной архитектуры.

 
Коротко о главном

Кэш-память является местом временного хранения наиболее часто запрашиваемой информации и представляет собой относительно небольшие участки быстрой локальной памяти. Она позволяет значительно сократить временные издержки на доставку информации в регистры процессора по причине куда меньшего быстродействия внешних носителей (оперативной памяти и дисковой подсистемы). Как следствие, уменьшаются вынужденные простои процессора, а часто и полностью устраняются, что повышает общую производительность компьютерной системы. Кэш-память почти всегда состоит из ячеек статической памяти, так как данный подход обеспечивает максимальный уровень быстродействия. Одна ячейка кэш-памяти (другими словами, хранилище одного бита информации) обычно состоит из 6 полевых транзисторов, хотя возможны и другие варианты, например, с увеличением их числа до 8 или 12. Стоит отметить, что в прошлом, примерно до появления технологических процессов с детализацией в 0,5µ, использовались и ячейки на 4 транзисторах, но такая реализация требовала наличие дополнительного слоя поликремния и характеризовалась меньшим быстродействием. Вне зависимости от реализации, логическое значение содержимого отдельной ячейки ("0" или "1") определяется по состоянию каналов транзисторов, которые открываются или закрываются в зависимости от приложенного к затворам транзисторов напряжения. Что касается размещения, то в современном процессоре кэш-память обычно встраивается в его ядро, хотя также может находиться где-либо снаружи, но быть связанной с ядром посредством высокоскоростных шинных интерфейсов.
 
Оперативная память устанавливается в гораздо больших размерах, чем вся имеющаяся в отдельно взятой машине кэш-память, так как предназначена для хранения тел всех активных программных задач (процессов и потоков). Поскольку использование для формирования микросхем оперативной памяти ячеек статического типа является экономически нецелесообразным, почти всегда предпочтение отдаётся ячейкам динамического типа, каждая из которых состоит всего из 1 полевого транзистора и 1 конденсатора, откуда и следует низкая стоимость при производстве. Логическое значение такой ячейки определяется по напряжению заряда конденсатора. Тем не менее, время зарядки/разрядки конденсатора динамической памяти выше, чем время открытия/закрытия канала полевого транзистора статической памяти, и уже только этот фактор определяет более низкое быстродействие динамической памяти по сравнению со статической. Кроме того, из-за неизбежных утечек тока в конденсаторах их необходимо периодически перезаряжать, то есть считывать содержимое ячеек и записывать прочитанное обратно. В конце концов, любая операция чтения из ячейки динамической памяти сама по себе приводит к потере конденсатором своего заряда. Итого, динамическая память дешевле статической, но в то же время и медленнее. Фактически, выбор динамических ячеек для оперативной памяти и статических ячеек для кэш-памяти обусловлен соотношением цена/производительность, в оптимуме которого заинтересованы как покупатели, так и производители.
 
Кэш-память не является универсальной альтернативой высокой пропускной способности системной шины и шины памяти по той простой причине, что разные программные задачи имеют обыкновение по-разному кэшироваться. Оптимально используют кэш-память задачи, следующие принципам временной и пространственной локальности (temporal and spatial locality). Если точнее, то принцип временной локальности предполагает, что информация, которая была использована в недалёком прошлом, с большой степенью вероятности будет запрошена и в ближайшем будущем. Второй следует гипотезе, что информация, соседствующая с уже запрошенной, также потребуется в ходе дальнейшего выполнения задачи. В то же время задачи, использующие потоковые данные (например, видео- и аудиоинформацию), кэшируются исключительно плохо, так как попросту забивают кэши информацией, которая явно не потребуется в ближайшем будущем, хотя специальные команды невременного (non-temporal) чтения и записи могут помочь в деле минимизации засорения кэш-памяти. То же самое относится и к задачам, использующим слишком большие объёмы данных, превышающие размеры имеющейся кэш-памяти.
 
Также стоит отметить, что кэш-память не всегда была стандартным компонентом процессора. Долгое время процессоры работали с той же тактовой частотой, что и их системные шины и оперативная память, причём из-за отсутствия конвейеризации вычислений среднее количество выполненных команд в расчёте на такт было низким, поэтому ярко выраженной необходимости в кэш-памяти не было. Хотя и в то время на материнские платы иногда устанавливали микросхемы кэш-памяти, используемые системной логикой для компенсации больших задержек на доступ к оперативной памяти, особенно до массового внедрения страничного режима работы. Только в начале 1990-х, когда тактовые частоты процессоров превысили тактовые частоты их системных шин и оперативной памяти, а также начали входить в моду основные принципы конвейеризации, тогда и началось массовое внедрение кэш-памяти в процессорные ядра. С другой стороны, прироста производительности можно достичь путём увеличения ширины системной шины и шины памяти. На сегодняшний день имеются высокопроизводительные системы с 256-битными или 512-битными каналами данных шин памяти, в то время как уделом массовых компьютеров являются 64-битные или 128-битные каналы данных. Имеется много причин, благодаря которым широкие каналы данных шин памяти и системных шин непопулярны в наше время и никогда не были популярны в прошлом. Во-первых, широкие каналы обмена данных предполагают наличие сложной обслуживающей логики с большой площадью кремниевой подложки и большим количеством выходных контактов. Естественно, это самым непосредственным образом отражается на производственных расходах. Во-вторых, требуется большое количество проводников, соединяющих контроллер памяти и модули памяти, проложенных на сложных печатных платах с большим количеством слоёв. Очень желательно, чтобы все эти проводники обладали одинаковой длиной/сопротивлением, низкой чувствительностью к помехам и т. д. Должно быть очевидно, что чем больше шинных проводников потребуется разместить, тем сложнее будет обеспечить их эффективную синхронную работу. И опять же, всё это выливается в увеличение производственных затрат. С другой стороны, значительно легче проложить шину к встроенной в процессор кэш-памяти в те же 256 или даже 512 бит. В конечном итоге, коммерчески эффективной альтернативы кэш-памяти пока не существует.
 
  Следующая страница >>

Copyright (c) Болотов Павел Владимирович, 2007. Все права сохранены.
Полная или частичная перепечатка без разрешения автора запрещена.
 
Designed and maintained by Alasir Enterprises, 1999-2007
rhett from alasir.com, walter from alasir.com