Почему большая по объему память обычно работает медленнее чем маленькая
Содержание урока
§34. Процессор
§35. Память
Взаимодействие разных видов памяти
§36. Устройства ввода
§37. Устройства вывода
§35. Память
Взаимодействие разных видов памяти
Итак, мы познакомились с разными видами внутренней и внешней памяти. Осталось разобраться, как они взаимодействуют между собой.
Иерархия памяти. Кэширование. Как следует из обсуждения в § 32, невозможно создать память, которая имела бы одновременно большой объём и высокое быстродействие. Поэтому используют многоуровневую (иерархическую) систему из нескольких типов памяти. Как правило, чем больший объём имеет память, тем медленнее она работает.
Самая быстрая (и очень небольшая) память — это регистры процессора. Гораздо больше по объёму, но заметно медленнее внутренняя память (ОЗУ и ПЗУ). Далее следует огромная, но ещё более медленная внешняя память. Наконец, последний уровень — это данные, которые можно получить из компьютерных сетей (рис. 5.19).
Для редактирования файла, расположенного на диске (внешняя память), программа обработки загружает его в ОЗУ (внутренняя память), а конкретные символы, с которыми в данные доли секунды работает процессор, «поднимаются» по иерархии выше — в регистры процессора.
Производительность компьютера в первую очередь зависит от «верхних» уровней памяти — процессорной памяти и ОЗУ. Быстродействие процессоров значительно выше, чем скорость работы ОЗУ, поэтому процессору приходится ждать, пока до него дойдут данные из оперативной памяти. Чтобы улучшить ситуацию, между процессором и ОЗУ добавляют ещё один слой памяти, который называют кэш-памятью, или кэшем (от англ, cache — тайник, прятать).
Кэш-память — это память, ускоряющая работу другого (более медленного) типа памяти, за счёт сохранения прочитанных данных на случай повторного обращения к ним.
Кэш-память — это статическая память, которая работает значительно быстрее динамического ОЗУ. В ней нет собственных адресов, она работает не по фон-неймановскому принципу адресности.
1 Это напоминает поиск в Интернете содержимого документа по его названию.
Если нужных данных нет в кэш-памяти, они читаются из ОЗУ, но одновременно попадают и в кэш — при следующем обращении их уже не нужно читать из ОЗУ.
Обычно в кэш-память заносится содержимое не только запрошенной ячейки, но и ближайших к ней (эта стрелка на рис. 5.20 показана более толстой). Таким образом, в кэше хранятся копии часто используемых ячеек ОЗУ, и передача этих данных в процессор происходит быстрее.
В работе кэш-памяти есть две основные трудности. Во-первых, объём кэша намного меньше объёма ОЗУ, и он быстро заполняется — приходится заменять наиболее «ненужные» (например, редко используемые) данные. Во-вторых, если считанные из кэш-памяти данные обрабатываются процессором и сохраняются в ОЗУ, нужно обновлять и содержимое кэша. Обе эти задачи решает контроллер кэш-памяти. Несмотря на трудности, кэширование во многих случаях повышает скорость выполнения программы в несколько раз.
Сама кэш-память также строится по многоуровневой схеме: в современных процессорах есть, по крайней мере, 2-3 уровня. Некоторые из них входят в состав процессора, а остальные выполнены в виде отдельных микросхем (поэтому на схеме многоуровневой памяти на рис. 5.19 кэш только частично расположен внутри процессора). Кэш для программ и для данных изготовляется раздельно. Это удобно потому, что считываемую программу, в отличие от данных, не принято изменять, поэтому кэш команд можно делать проще.
Подчеркнём, что термин «кэширование» в вычислительной технике имеет довольно широкий смысл: речь идёт о сохранении информации в более быстродействующей памяти с целью повторного использования. Например, браузер кэширует файлы, полученные из Интернета, сохраняя их на жёстком диске в специальной папке. В накопителе на жёстком диске также используется кэширование. Таким образом, кэш может быть организован как с помощью аппаратных средств (кэш процессора), так и программно (кэш браузера).
Виртуальная память. Пользователям хочется, чтобы программное обеспечение было интеллектуальным и дружественным и чтобы в нём были предусмотрены все самые мелкие детали, которые им могут потребоваться. Программистам хочется написать программу с наименьшими затратами сил и времени, поэтому они широко используют среды быстрой разработки программ (англ. RAD — Rapid. Application Development). В результате программы всё больше увеличиваются в размере. Кроме того, объём обрабатываемых данных постоянно растёт. Поэтому компьютерам требуется все больше и больше памяти, особенно в многозадачном режиме, когда одновременно запускаются сразу несколько программ.
Как же согласовать эти требования с ограниченным объёмом ОЗУ? Современные операционные системы используют для этого идею виртуальной памяти. Предполагается, что компьютер обладает максимально допустимым объёмом памяти, с которым может работать процессор, а реально установленное ОЗУ — лишь некоторая часть этого пространства. Оставшаяся часть размещается в специальном системном файле или отдельном разделе жёсткого диска. Если ёмкости ОЗУ не хватает для очередной задачи, система копирует «наименее нужную» (дольше всего не использовавшуюся) часть ОЗУ на диск, освобождая необходимый объём памяти. Когда, наоборот, потребуются данные с диска, они будут возвращены в освобожденное таким же образом место ОЗУ (и это совсем не обязательно будет то самое первоначальное место!).
При использовании виртуальной памяти выполнение программ замедляется, но зато они могут выполняться на компьютере с недостаточным объёмом ОЗУ. В этом случае установка дополнительного ОЗУ может повысить быстродействие во много раз.
Использование виртуальной памяти ещё раз подтверждает, что деление памяти на внутреннюю и внешнюю память — это искусственная мера. Она вызвана тем, что невозможно создать идеальную память, удовлетворяющую всем требованиям сразу.
Следующая страница Основные характеристики памяти
Cкачать материалы урока
Какая бывает память
Краткий обзор для тех, кто не хочет глубоко копать.
Если хотите понимать, как работают компьютеры, полезно понимать, как устроена их память. Когда вам будут говорить, что «не хватает памяти», вы будете точно знать, какой именно памяти не хватает и что с этим делать.
Оперативная память
Компьютер, телефон или любое умное устройство работает за счёт программ. Программы — это команды для процессора. Чтобы процессор знал, какую команду выполнить следующей, он должен иметь под рукой всю программу. Для этого программы сидят в оперативной памяти.
👉 Оперативной память называется потому, что доступ к ней должен происходить очень быстро и в любом порядке. Представьте, что это ваш рабочий стол: вы на него сложите все приборы и бумаги, которые нужны для работы прямо сейчас.
Технически оперативная память — это микросхема или, по-другому, чип. Для пользователей она выглядит как чёрный прямоугольник, хотя сам этот прямоугольник — это лишь защитный корпус. Внутри под корпусом массивы из миллионов транзисторов.
Модуль оперативной памяти, которые вставляют в компьютеры. Чёрные прямоугольники (в том числе под наклейкой) — те самые чипы памяти. В каждом чипе — 512 МБ оперативной памяти.
Чем больше объём оперативной памяти, тем проще компьютеру запускать одновременно несколько программ. Если компьютеру не хватает оперативы, он либо об этом сообщает, либо начинает складировать часть оперативной памяти на диск, и тогда общая скорость работы снижается.
Особенность оперативной памяти в том, что данные в ней зависят от внешнего электричества. Если компьютер выключить, то всё содержимое оперативной памяти исчезнет. Поэтому компьютеру при включении требуется некоторое время, чтобы всё загрузить обратно и запустить все нужные программы.
Жёсткий магнитный диск
В оперативной памяти программы не могут храниться постоянно, потому что она энергозависимая. Для долгого хранения программ и данных используют жёсткие диски. Если оперативная память — это «рабочий стол», то жёсткий диск — «книжный шкаф».
Жёсткий диск хранит данные хоть во включённом, хоть в выключенном состоянии. Принцип действия простой: внутри корпуса установлены металлические диски, которые при работе очень быстро вращаются, а специальная магнитная головка считывает или записывает на них данные. Для этого она намагничивает всё содержимое диска по кругу, разделяя всё на мелкие радиусы, секторы и ячейки. Намагниченная область — это 1, а ненамагниченная — 0.
Принцип работы очень похож на то, как устроен виниловый проигрыватель с пластинками, только тут вместо иглы — маленький магнит, который может не только читать, но и записывать данные. Чтобы объём хранимых данных и скорость работы с ними была больше, в жёсткие диски ставят одновременно несколько пластин:
Жёсткий диск со снятой крышкой. Видны 4 пластины, считывающая головка и большой мощный магнит в левом нижнем углу — он помогает намагничивать нужные участки.
Жёсткие диски считаются довольно долговечным способом хранения: однажды намагнитившись, диск может хранить заряд 5—10 лет. Но со временем из-за квантовых эффектов заряд теряется, поэтому для долговечности архивные жёсткие диски намагничивают заново каждые 3—5 лет.
SSD-накопители
Чтобы увеличить скорость работы компьютера, вместо жёстких дисков используют SSD-диски. Они тоже направлены на то, чтобы долго хранить все данные, но работают по другому принципу.
Вместо пластин с магнитами SSD-накопители используют чипы флеш-памяти, похожие на чипы в обычных флешках. Только в SSD-накопителях используют качественные, дорогие и быстрые чипы.
Главный минус SSD — цена. Если обычный жёсткий диск на 1 терабайт можно купить за 3000 рублей, то SSD того же объёма будет стоить примерно в 3 раза дороже. Поэтому часто в компьютеры ставят два диска — SSD и обычный. На SSD устанавливается операционная система и все рабочие файлы, а на обычном хранят справочную информацию, фильмы, музыку и фотографии — то, к чему не нужен мгновенный доступ.
SSD-диск на 256 гигабайт. Подключается к тем же разъёмам, что и простой жёсткий диск.
SSD расшифровывается как Solid State, то есть твердотельный. Твёрдые у него чипы памяти. Если обычный жёсткий диск имеет внутри подвижные элементы, которые легко повредить из-за тряски или ударов, то SSD убьёт только пуля или очень мощный магнитный разряд.
Компьютер тормозит. У меня мало памяти?
Компьютер может тормозить по множеству причин. Вот какие причины могут быть связаны с памятью:
Что делать: перезагрузить, очистить корзину, поискать лишние большие файлы.
Телефон пишет, что не хватает места для новых фото. Пора менять?
Чаще всего достаточно поудалять старые видео, даже не фото. Одна фотография занимает не так много места, как минута видео, поэтому если нужно освободить память — удаляйте видео.
Если у вас Айфон, он автоматически заботится о том, чтобы чистить память: он в фоновом режиме отгружает ваши старые фото и видео в «облако». Когда они нужны, он их сам оттуда загрузит. Но «облако» тоже не резиновое, поэтому чистите память.
Есть компьютер 8 ГБ и 16 ГБ памяти. Какой взять?
Если есть возможность взять побольше памяти — берите. Если есть деньги только на 8 ГБ, то это неприятно, но несмертельно.
Например, на компьютере, на котором это пишется, одновременно запущено несколько вкладок Гугл-документов, работает почта, графический редактор и Телеграм. Вместе с операционной системой это хозяйство занимает 11 ГБ, из которых 2 ГБ занимает Телеграм.
Если бы у компьютера было 8 ГБ, он бы начал в какой-то момент оптимизировать память, усыплять фоновые программы, складывать часть памяти на диск. Оттого, что у вас будет 8 ГБ, компьютер не умрёт.
Раньше 8 ГБ считалось большим объёмом памяти. А сейчас?
А сейчас это средненький такой объём.
Со временем программы и файлы становятся жирнее: в видеороликах больше пикселей, в программах — больше команд и вспомогательных файлов. Поэтому один какой-нибудь современный чатик может занимать сейчас больше памяти, чем огромный архитектурный софт лет 10 назад. Такова цена прогресса.
Можно ли самостоятельно обновить память в компьютере?
В стационарном — можно и нужно. Откручиваете болты, отсоединяете провода, заменяете компоненты. Всё довольно легко, самая неприятная часть процесса — скопившаяся пыль.
В ноутбуках чем дальше — тем это сложнее. Например, лет пять назад можно было спокойно снять крышку ноутбука и заменить в нём и память, и жёсткий диск. Сейчас память и SSD распаяны на плате, поэтому заменить их можно только в авторизованном сервисном центре, да и то не в каждом.
Что лучше для телефона: больше оперативы или больше хранилища?
В оперативной памяти живут текущие программы, поэтому телефоны с кучей оперативы нужны для игр и сложных программ (но кому они нужны на телефоне?). А вот фотографии и видео живут в хранилище. Чем его больше, тем больше фото и видео вы туда запишете.
# факты | Преодоление ограничений компьютерной памяти
Сегодня мы продолжим повествование о компьютерной памяти, начатое рассказом о ее иерархии. В наши дни процессоры способны работать с невероятной скоростью. Но вся их мощь упирается в те ограничения, которые накладывает медлительная память. Если бы не разработанные инженерами методики преодоления этих досадных ограничений, могучий процессор не столько работал бы, сколько ждал запрошенной из хранилища информации. И в разработке быстрых и мощных чипов не было бы никакого смысла. Разумеется, компьютерные профессионалы всё это уже знают, но для миллионов искренних ценителей высоких технологий этот материал может оказаться познавательным.
Рассмотреть все существующие в мире разновидности запоминающих устройств в рамках краткого обзора не представляется возможным. Поэтому мы остановимся только на тех типах памяти, которыми оснащено большинство персональных компьютеров в современном мире. Речь идет о кеш-памяти первого (L1) и второго (L2) уровней; системной оперативной памяти; виртуальной памяти и, разумеется, жестком диске. Зачем обычному компьютеру так много самой разнообразной памяти? Чтобы ответить на этот вопрос, потребуется немного рассказать о том, для чего служит каждый тип компьютерной памяти.
Медленная и дешевая виртуальная память на жестком диске
Когда промышленность только преодолела 1-гигагерцовый рубеж тактовой частоты процессора, она столкнулась с проблемой: память, которая способна справится с запросами могучего процессора стоит очень дорого. Но ни одна преграда на пути технического прогресса не способна надолго задержать его ход. Решение было найдено: небольшой объем быстрой и дорогой памяти сочетается в современных машинах с более емкими и менее затратными хранилищами информации.
Самым дешевым (и очень медленным) видом перезаписываемой компьютерной памяти является жесткий диск. Скорость доступа к нему невелика, зато он позволяет за умеренные деньги создавать большие постоянные хранилища информации. Стоимость хранения одного мегабайта данных на диске незначительна. Зато и времени на то, чтобы считать этот мегабайт потребуется существенно больше, чем если бы он располагался на более дорогом (и быстром) носителе. Поскольку жесткий диск дешев и ёмок, он образует нижнюю ступень иерархии памяти, к которой обращается процессор, именуемую виртуальной памятью.
На ступеньку выше в этой иерархии располагается оперативная память (ОЗУ, RAM). Ранее мы уже рассмотрели, как работает этот тип памяти. Но в предыдущем нашем повествовании некоторые подробности остались за кадром, которые имеют отношение не столько к оперативной памяти, сколько к процессору и его возможностям взаимодействия с ОЗУ. Сегодня мы прольем свет на эти детали.
Битность процессора указывает нам на то, к скольким битам информации, размещенной в оперативной памяти, он способен получить доступ одновременно. В качестве примера возьмем устаревшие 16-битные процессоры. Они были способны одновременно оперировать с двумя байтами данных (1 байт = 8 битам, таким образом 16 бит = 2 байта). Следовательно, современные 64-битные процессоры обращаются к 8 байтам информации в один момент времени.
В мегагерцах (МГц, миллионах герц) и гигагерцах (ГГц, миллиардах герц) измеряется скорость обработки данных процессором. То есть сколько циклов (тактов) обработки он способен выполнить за одну секунду. Чтобы не погружаться в невообразимо огромные цифры, в качестве примера возьмем старенький (а когда-то представлявшийся верхом совершенства и мощи) процессор Pentium III с тактовой частотой 800 мегагерц в секунду. Его 32-битная архитектура говорит о том, что он способен работать одновременно с четырьмя байтами информации. Не впечатляет? Но он мог проделать эту операцию 800 миллионов раз в секунду. Перед оперативной памятью стоит непростая задача: успевать за процессором, не отставать от него и вовремя предоставлять ему информацию. Иначе все поразительные возможности чипа будут простаивать в ожидании очередной порции байтов.
Системная оперативная память компьютера в одиночку с этой задачей не справляется. Поэтому нужен еще один тип сверхбыстрого хранилища данных: кеш-память (о которой мы поговорим ниже). Но, конечно, чем быстрее работает оперативная память, тем лучше для системы в целом. Скорость чтения и записи оперативной памяти зависит от того типа ОЗУ, который используется в данном компьютере. Поэтому вновь вернемся к оперативной памяти, но на сей раз рассмотрим ее технические характеристики.
Системная оперативная память
Например: 32-битная 100-мегагерцовая шина теоретически способна одновременно передавать 4 байта информации (32 бита делить на 8 = 4 байта) 100 миллионов раз в секунду. 66-мегагерцовая 16-битная шина может одновременно передать всего 2 байта 66 миллионов раз в секунду. Простые математические вычисления показывают нам, что первая шина превосходит вторую по объему ежесекундно передаваемой процессору информации примерно втрое (400 миллионов байт против 132 миллионов байт).
Но в реальности оперативная память, разумеется, обычно не работает на пределе возможностей. И сейчас настала пора ввести еще один термин, который тоже накладывает свои ограничения на фактическую скорость передачи данных. Латентность оперативной памяти указывает на количество циклов, необходимых для чтения бита информации. К примеру, оперативная память с тактовой частотой 100 МГц, казалось бы, способна передавать бит за одну стомиллионную долю секунды. На самом же деле, пять стомиллионных долей секунды уйдет на запуск процесса чтения первого бита. Чтобы сократить влияние фактора латентности памяти, процессор использует специальную технологию, именуемую пакетно-монопольным (групповым или просто монопольным) режимом (burst mode).
Память ожидает, что данные, расположенные в ее определенных ячейках, будут запрошены процессором. Поэтому контроллер памяти считывает одновременно несколько битов данных, расположенных в памяти по определенным адресам. Это означает, что вызванная латентностью задержка чтения в полной мере коснется только первого бита информации. Чтение следующих битов займет существенно меньше времени. Характеристики группового режима памяти обыкновенно обозначается в виде четырех чисел, разделенных тире. Первое число говорит нам о количестве циклов, которые потребуются для осуществления операции чтения. Второе, третье и четвертое числа показывают, сколько циклов потребуется для чтения каждого следующего бита в группе.
К примеру, строка «5-1-1-1» способна поведать нам, что для чтения первого бита необходимы пять циклов и один цикл для чтения каждого последующего бита информации. Чем меньше это число, тем выше производительность памяти.
Групповой режим нередко сочетается с другим средством снижения эффекта латентности, так называемой конвейеризацией. Эта методика организует наборы данных в своего рода конвейерные процессы. Контроллер памяти параллельно считывает из памяти одно или несколько слов; отправляет процессору текущее слово или слова; записывает одно слово или несколько в ячейки памяти. Групповой режим и конвейеризация, применяемые в связке, значительно снижают замедляющее влияние латентности.
У читателей может возникнуть вопрос: а почему бы сразу не приобрести самую быструю память с самой высокой из возможных в современном мире пропускной способностью? Но тут вступает в силу ограничение, накладываемое системной шиной материнской платы компьютера. Вы, конечно, можете поставить 100-мегагерцовую память в материнскую плату с 66-мегагерцовой системной шиной. Но ее предельная скорость все равно будет составлять 66 МГц в секунду. И вы не получите никакого преимущества. Так и 32-битная память не соответствует 16-битной шине.
И даже очень скоростная память с широкой полосой пропускания всё равно не достигает той скорости, с которой процессор способен обрабатывать данные. Именно для этого и нужна сверхбыстрая кеш-память.
Кеш-память и регистр процессора
Вторичный кеш, или кеш-память второго уровня (L2), может быть технически реализована в виде расположенной рядом с процессором и напрямую с ним связанной карты. Специальная микросхема на материнской плате — L2-контроллер (контроллер кеш-памяти второго уровня) — регулирует использование этой памяти центральным процессором компьютера. В зависимости от модели процессора, размер кеш-памяти второго уровня может составлять от 256 килобайт до 2 мегабайт. Но технологии развиваются очень быстро, поэтому из данного «правила» возможны и случаются исключения. У процессора Jaguar как раз 2 мегабайта кеша L2. О причинах, по которым именно этот чип лег в основу игровой приставки PlayStation 4 еще в начале апреля 2013 года поведал ее конструктор.
Современный компьютер устроен таким образом, чтобы в 95 % случаев процессор получает данные из кеш-памяти, не нуждаясь в обращении к более медленным хранилищам информации. Некоторые дешевые системы обходятся вовсе без L2-кеша. Зато во многих высокопроизводительных процессорах кеш-память второго уровня встроена непосредственно в чип. Размер кеша второго уровня и его интегрированность непосредственно в центральный процессор являются важнейшими факторами, оказывающими влияние на производительность процессора.
Технически кеш является статической оперативной памятью (SRAM). В памяти этого типа каждая ее ячейка сформирована несколькими транзисторами: обычно их бывает от четырех до шести. Она обладает внешней логической матрицей, именуемой мультивибратором с двумя устойчивыми состояниями (бистабильным мультивибратором, bistable multivibrator). С его помощью реализуется переключение между двумя состояниями. Это означает, что память этого типа не нуждается (в отличие от динамической памяти DRAM) в постоянном обновлении.
Каждая ячейка способна удерживать размещенные в ней данные в течение любого длительного времени. До тех пор, пока не будет отключена энергия. Благодаря отсутствию потребности в постоянном обновлении, SRAM работает необычайно быстро. Но сложная конструкция каждой ячейки памяти этого типа делает ее слишком дорогой для использования в качестве стандартной оперативной памяти компьютера.
Статическая кеш-память бывает асинхронной и синхронной. Синхронная SRAM сконструирована таким образом, чтобы ее скорость в точности соответствовала скорости процессора. Чего нельзя сказать об асинхронном кеше. Эта, казалось бы, незначительная разница сказывается на производительности. Не станем вдаваться в технические подробности, скажем только, что синхронная память предпочтительнее.
На самой вершине иерархической пирамиды компьютерной памяти находится регистр процессора. Он встроен непосредственно в чип и содержит специальные — необходимые процессору — данные: арифметические и логические выражения. Являясь составной частью процессора, его регистр управляется непосредственно компилятором, отправляющим процессору информацию для обработки.
Причиной рассмотрения взаимодействия компьютерной памяти и центрального процессора на примерах устаревших систем, является сравнительная простота вычислений. Дело в том, что современные компьютеры базируются на многоядерных процессорах. При этом принцип обращения процессора к памяти остался прежним и каждый может, при желании, самостоятельно произвести вычисления для сложнейшей из современных систем. В рамках краткого обзора эти вычисления выглядели бы нагромождением информации, усложняющей материал, но не вносящей в него ничего нового.