Электронный учебник:


Курс лекций:


Дополнительно:

Практикум:


КЭШ

КЭШи применяются для ускорения доступа к какому-нибудь устройству.

Например, при записи на диск данные сначала пишутся в кэш, а уж потом,

независимо от работы ЭВМ переносятся на диск. Это называется

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

Для работы с КЭШами используется страничная адресация. Применительно к дисковому КЭШу это означает, что каждая «страница» КЭШа символизирует какой-то сектор на диске. И если диску требуется что-то записать в кэш, то он проверяет - если в нем свободные страницы, а если нет, то выбирает какую-нибудь используемую, скидывает хранящуюся в ней информацию на диск, и только потом выводит в нее то, что ему было нужно. Таким образом говорят, что часть диска отображена в кэш.

Кэш на диске представляет из себя микросхему памяти... мегабайт на 8.

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

КЭШа у процессора два: L1 и L2. Они оба работают на частоте одинаковой с процессором. L2 - кэш работает также как и дисковый кэш (с помощью страничной адресации) Каждая страница КЭШа соответствует какой-либо странице памяти. Процессор работает только с КЭШем. Когда ему требуются данные, которых в КЭШе нет - они записываются в кэш менеджером памяти (а если в КЭШе места нет, то часть данных из КЭШа скидывается в оперативку). Кыш ускоряет работу, когда процессор производит множество операций, требующих обмена с памятью. А если он производит вычисления (то есть память не пользуется), то кэш на скорость соответственно не влияет.

Кэш L1 - это то, с чем процессор работает в данный момент времени. Этот кэш намного проще (он использует линейную адресацию - то есть просто длинный кусок памяти), но он разбит на две части - в одной хранятся коды исполняемой сейчас программы (и те команды, которые будут исполняться следующими) а в другой данные, необходимые этой программе. Но размер КЭШа L1 -очень мал... поэтому используются весьма хитрые алгоритмы предсказания того, как будет далее выполняться программа, чтобы заполнить этот кэш лучшим образом.

Данные в кэш L1 поступают из КЭШа L2. А в L2 они поступают из оперативки.

Все эти кэш работают на аппаратном уровне - то есть независимо от ОС.

Но ОС может создавать и собственные КЭШи в оперативке. Например (так в Linux), при чтении с диска она записывает все, что читается в оперативку. Поэтому при последующем обращении к данным на диске, эти данные получаются мгновенно.

предыдущая тема следующая тема