Кэш-память Процессоры работают быстрее чем память! При обращении процессора к памяти из-за разницы в скорости работы процессору приходится ждать. У этой проблемы существует два способа решения: 1) начать считывать команды заранее. Проблема: если какая- либо команда захочет использовать это слово, то процессор должен простаивать. 2) сконструировать машину, которая не приостанавливает работу, но следит, чтобы компиляторы не использовали слова, до того как они считаются из памяти. Проблема – слишком сложно! Быструю память можно сделать! Но для это она должна быть в одной микросхеме с процессором (это не всегда так, но наиболее близко к истине). Следствие – очень дорого! Промежуточное решение - это сочетание технологий с использованием маленькой и быстрой памяти с большой и медленной. Маленькая память с большой скоростью работы называется кэш-памятью.
Что хранится в кэш-памяти? В ней находятся слова, которые чаще всего используются. Если процессору нужно какое-нибудь слово он сначала обращается к кэш-памяти и только, если и там его нет, он обращается к основной памяти. Если значительная часть слов лежит в кэш- памяти, то скорость значительно возрастает!
Принцип локальности Большинство программ вызывают команды из последовательных участков памяти, кроме того в циклах также обычно используется один и тот же кусок памяти. То, что при последовательных отсылках к памяти в течении некоторого промежутка времени используется только ее небольшой кусок, называется принципом локальности. Он и составляет основу всех систем кэш-памяти.
Подсчитаем выигрыш Среднее время доступа при к запросах к одному и тому же слову будет: t = c + (1 - h)*m, где: c - время доступа к кэш-памяти m - время доступа к основной памяти h - коэффициент совпадения Если слово считывается или записывается k раз, то h = (k – 1)/k При h -> 1 получаем выигрыш При h -> 0 - проигрыш В некоторых системах процесс обращения к основной памяти стартует вместе с процессом обращения к кэш-памяти и, если в кэш-памяти слова нет, то обращение к основной памяти будет уже начато.
Немного об организации кэш-памяти Загрузка в кэш-память идет сразу строками, т.е. вся кэш память поделена на некоторые куски, большие машинного слова. При необходимости загрузить в кэш память слово из основной памяти загружается весь участок в котором это слово находится, по размеру совпадающий со строчкой кэш-памяти. В современных машинах могут разделять кэш- память для данных и для команд. Также могут быть предусмотрены системы с несколькими уровнями кэш-памяти.
Магнитные диски Дорожкой называется круговая последовательность битов, записанных на диск на его полный оборот. Каждая дорожка делится на секторы фиксированной длины. Сектор обычно состоит из преамбулы и самих данных, закодированных методом Хэмминга или чаще Рида-Соломона. Между секторами обычно есть небольшой межсекторный интервал. Совокупность дорожек, расположенных на одном расстоянии от центра называется цилиндром.
Дорожки Секторы Минимальная порция Считывающие головки
Характеристики работы диска Среднее время поиска – усредненное время, которое требуется головке для перемещения на нужное расстояние от оси. Среднее время ожидания сектора (обратно к скорости вращения диска) – усредненное время, которое требуется для того чтобы нужные сектор был перемещен к считывающей головке. Если данные разбросаны по диску – то скорость их чтения гораздо меньше!
RAID-массивы RAID – Redundant Array of Inexpensive Disks противопоставление SLED – Single Large Expensive Disk Основная идея – использование большого числа недорогих дисков, объединенных одним контроллером. Основные задачи RAID: 1) повышение производительности; 2) повышение надежности.
RAID 0-го уровня RAID 1-го (0 + 1) уровня RAID 2-го уровня
RAID 3-го уровня RAID 4-го уровня
Лазерные диски Свет с длиной волны n L = n / 4 Свет отраженный от впадины различается по интенсивности со светом Отраженным от площадки на половину длины волны n/2