[МУЗЫКА]
[МУЗЫКА] Уважаемые слушатели.
Сегодня мы поговорим об организации памяти.
ADV имеет много устройств памяти,
и они образуют определённую иерархию от самых быстрых до самых медленных.
Начинается всё с регистров.
Регистры — это устройства, которые считаются с триггеров и расположены
прямо в процессоре, поэтому доступ к ним самый быстрый.
Сегодняшние ЭВМ имеют сотни или даже тысячи регистров с тем,
чтобы обеспечить скорость работы.
Следующий уровень иерархии образует так называемая кэш-память.
Кэш — это по-французски cacher, «кошелёк» или место,
куда вы кладёте что-нибудь, что может быстро понадобиться.
Исторически такое название сложилось.
Как обычно, в нашей специальности очень много жаргонных слов с течением времени
становятся нормальными официальными терминами.
Так вот кэш-память — это очень быстрая память, довольно дорогая,
в которой хранятся часто используемые фрагменты основной памяти.
Как она устроена я чуть позже расскажу.
Следующая — это основная оперативная память.
Когда я начинал работу программистом память была там 1000 слов,
потом 512 тысяч слов, теперь уже мегабайты и даже гигабайты.
Я — генеральный директор большого предприятия, и меня раздражает,
когда мои молодые программисты говорят, что им 2 гигабайтов не хватает, им надо 6,
8 гигабайтов.
Я про себя думаю: «Куда они эту память девают?» Но тем не менее сегодняшняя жизнь
именно такова, что оперативная память довольно большая.
Следующий уровень памяти образует дисковая память.
Тоже довольно быстрая и довольно большая, но, конечно, медленнее,
чем оперативная память.
Надо сказать, что раньше ещё использовались барабаны,
поскольку я очень люблю историю ЭВМ, я вам обязательно упомяну об этом.
Такие металлические цилиндры, на них был нанесён магнитный слой,
на них можно было читать и писать.
И 30–40 лет назад это была основная внешняя память.
Но потом диски их вытеснили.
Наконец после дисков по иерархии памяти идут ленты, магнитные ленты.
Опять-таки одно время это была очень популярная основная внешняя память.
Я помню, как мы с бобинами с лентами ездили в Москву, ставили, снимали,
но потом диски стали всё больше по ёмкости и больше,
ленты вытеснили, а потом вдруг неожиданно появилась вторая реинкарнация лент,
и ленты стали применять для хранения бэкап-памяти, это запасная память,
если диск испортился, чтобы была где-то информация сохранена.
И для полноты картины упомянем ещё перфоленты и перфокарты —
такие бумажные полоски с дырочками.
Я на них очень много работал, очень долго,
но сегодня это, по-моему, тоже, скорее, история ЭВМ.
Поподробнее разберём каждый из этих уровней памяти.
Кэш-память.
Кэш-память — это быстрая память, довольно дорогая, надо это знать,
и поэтому она не может быть очень большой.
Скажем, 256 килобайт или 512 килобайт, но вряд ли больше.
И в кэш-памяти хранятся наиболее часто используемые участки основной памяти.
Хранятся в кэш-памяти не слова отдельные, а целые линейки,
скажем, в процессоре x86, основной микропроцессор,
который используется в персоналках, там линейка составляет 64 байта.
И эти линейки связываются в цепные списки так,
что наиболее часто используемые линейки находятся в начале списка
и при каждом обращении к линейке она перетаскивается в самое начало списка.
А таким образом редко используемые линейки потихонечку из списка уходят.
И, в общем, надо сказать, что сегодня уже научились так делать,
что кэш-память довольно высокий процент обращений берёт на себя,
не давая обращаться к основной памяти, которая в разы медленнее.
Основная память бывает двух типов: статическая,
которая состоит из триггеров, быстрая,
но довольно дорогая; и динамическая, которая состоит из конденсаторов.
Если вы помните школьный курс физики, конденсатор — это две пластины,
и между ними диэлектрик.
И вот если есть заряд на конденсаторе, считается, что единичка есть,
а если нет заряда, считается, что на конденсаторе 0.
Но поскольку идеальных диэлектриков не бывает, заряд потихонечку истекает,
поэтому приходится всё время делать так называемый refresh.
То есть читать и писать куски памяти.
Это тоже является некоим накладным расходом и ещё более
замедляет динамическую память.
Короче, сегодня можно сказать, что сегодня динамические памяти бывают,
нормальная машина содержит какие-то гигабайты: 2, 4,
8 гигабайтов динамической памяти.
А статическая память применяется для кэш-памяти и ещё для каких-то особо важных
участков, для каких-то особо важных работ, где требуется высокая скорость работы.
Какие характеристики можно назвать у основной памяти?
Прежде всего это latency — задержка.
Память всегда была медленнее процессоров.
Когда я был молодой, соотношение было 3 — 4, то есть память была в три,
в четыре раза медленнее процессоров.
А сегодня память в 15–20 раз медленнее, чем процессоры.
Мне трудно сказать, в чем дело, я не инженер,
а математик, но в общем так устроена современная электроника,
что память как-то развивается в сторону величины, гигабайтов, а процессоры в
основном развиваются в сторону увеличения производительности скорости.
Поэтому сегодня соотношение между памятью и процессорами ещё более плохое,
чем оно было 15–20 лет назад.
Следующая характеристика — cycle time, время цикла.
Если вы помните, на первой лекции я вам показывал основную синхросерию на слайде.
Так вот расстояние между двумя фронтами этих прямоугольничков называется циклом,
или тактом.
И чем больше частота тактов, тем больше скорость работы машины.
Сегодняшние ЭВМ работают на скоростях в гигагерцах,
то есть миллиарды тактов в секунду.
Не все команды занимают один такт,
некоторые команды требуют для исполнения многих тактов.
Тем не менее, в общем, когда вы покупаете персональный компьютер, то прежде
всего обращаете внимание на скорость работы, а именно частота в тактах.
И вот если там 1–2 гигагерца, то это уже хорошая машина,
а если там совсем только килогерцы, то это медленная машина.
Следующая характеристика — ширина доступа к памяти, bandwidth.
Такое труднопроизносимое английское слово.
То есть сколько байтов вы можете передать за один такт из памяти в процессор.
Здесь я хочу привести вам очень характерный пример, исторический пример.
IBM вообще хорошая компания, я про неё ещё много раз буду упоминать в данном курсе,
но вот момент выпуска персональных компьютеров IBM прозевала.
И уже были Commodore, там Apple первые пошли.
А IBM это дело прозевала.
Но в конце концов все-таки они прочухали, что это дело важное,
выделили аж трех инженеров, и эти инженеры создали персональный компьютер IBM PC XT.
Кстати, очень хороший компьютер, видимо, инженеры были хорошие,
а начальство просто прозевало такой важный момент.
Так вот в первых IBM PC XT был процессор Intel i8086,
16-разрядный процессор, и ширина доступа к памяти тоже была 16.
И компьютеры, я их просто хорошо помню, стоили примерно 5000 долларов,
персональный компьютер стоил 5000 долларов.
Их покупали, естественно, мало, все-таки дорого.
И тогда IBM пошло на следующий шаг, на мой взгляд,
очень интересное инженерное решение.
Они стали использовать микропроцессор Intel i8088,
который тоже 16-разрядный, как и 86-й, но ширина доступа к памяти была не 16,
а 8, поэтому 16-разрядное слово надо было читать за два такта.
Так вот, стоимость упала до 1500 долларов, то есть больше чем, в два раза.
Больше, чем в три раза упала стоимость.
Вот теперь вы понимаете,
что такое шина доступа к памяти и насколько она определяет стоимость машины.
Итак, на этом примере хорошо видно, какую высокую роль играет понятие
bandwidth — ширина доступа и как это влияет
на стоимость компьютера.