15_Архитектурные особенности современных ЭВМ (975812)
Текст из файла
Глава 15. Архитектурные особенности современных ЭВМДля лучшего понимания тех важных архитектурных особенностей, которыми обладают современные компьютеры, мы исследуем сейчас следующий вопрос: оценим и сравним между собой скорость работы различных устройств ЭВМ. Оперативная память современных ЭВМ массового производства способна считывать и записывать данные примерно каждые 2 наносекунды (нс., 1нс = 10-9сек.), а центральный процессор может выполнить машинную машинную операцию над содержимымсвоих регистров примерно за 1нс. После некоторого размышления становится понятным, что "что-тоздесь не так".Действительно, рассмотрим, например, типичную машинную команду add ax,X . Для выполнения этой команды центральный процессор должен сначала считать из оперативной памяти саму этукоманду (в нашей архитектуре это 4 байта), затем операнд X (это ещё 2 байта), потом произвестиоперацию сложения.
Таким образом, центральный процессор потратит на выполнение этой команды6байт*2нс+1нс=13нс, причём собственно центральный процессор будет работать только 1нс, и12нс будет ждать, пока команда и числа не поступят из оперативной памяти на его регистры. Спрашивается, зачем делать центральный процессор таким быстрым, если всё равно более 90% своеговремени он будет ждать, пока производится обмен командами и данными между оперативной памятью и его регистрами? Налицо явное несоответствие в скорости работы оперативной памяти ицентрального процессора ЭВМ.Первое, что приходит в голову для преодоления этого несоответствия, это увеличить на порядокскорость работы оперативной памяти.
Технически это вполне возможно, однако при этом стоимостькомпьютера также сильно возрастёт, что, конечно же, недопустимо, так как такие дорогие ЭВМ просто не будут покупать в таких количествах, как сейчас. Кроме того, как мы вскоре увидим, одно лишьтакое увеличение скорости работы оперативной памяти не намного улучшит положение.На современных ЭВМ данная проблема несоответствия скорости работы оперативной памяти ицентрального процессора решается в совокупности несколькими способами, которые мы сейчас ирассмотрим. Сначала, выяснив, что главным тормозом в работе является оперативная память, эту память стали делать таким образом, чтобы за одно обращение к ней она выдавала не по одному байту, асразу по несколько байт с последовательными адресами. Для этого оперативную память разбивают наблоки (обычно называемые банками памяти), причём эти банки памяти могут работать параллельно.Этот приём называют расслоением памяти.
Например, если память разбита на 8 банков, то за однообращение к ней можно сразу считать 8 байт, при этом байты с последовательными адресами располагается в разных банках памяти. Например, байт с адресом 1000 располагается в банке памяти сномером 0, байт с адресом 1001 – в банке памяти с номером 1 и т.д. Таким образом, за одно обращение к памяти можно считать несколько команд или данных, расположенных в памяти подряд (т.е.в байтах с последовательными адресами). Поэтому понятно, почему оперативную память современных ЭВМ разбивают на 8,16,32 и более банков.
Например, в достаточно старом суперкомпьютереNEC SX/3 использовались уже 128 банков памяти.Скорость работы оперативной памяти современных ЭВМ так велика, что требуется какое-то образное сравнение, чтобы это почувствовать. Легко подсчитать, что за одну секунду из оперативнойпамяти, разбитой на 8 банков, можно прочитать порядка 4*109 байт. Если считать, что каждый байтхранит символ печатного текста и учесть, что на стандартной странице книги помещается примерно2000 символов, то получается, что за 1 секунду центральный процессор может прочитать из оперативной памяти целую библиотеку из 4000 томов по 500 страниц в каждом томе.
Очень впечатляюще,не правда ли? Кроме того, надо учесть, что вычислительная техника развивается сейчас очень быстро, уже существуют микросхемы банков оперативной памяти, которые выдают байт не за 2нс, апримерно за 1нс, сейчас эти микросхемы стали всё чаще использоваться и в персональных компьютерах массового производства.Легко, однако, вычислить, что, несмотря на эту огромную скорость, даже такая, обладающая расслоением по банкам, оперативная память продолжает тормозить работу центрального процессора.Проведя заново расчёт времени выполнения нашей предыдущей команды add ax,X мы получим:2нс (чтение команды) + 2нс (чтение числа X) + 1нс (выполнение команды) = 5нс.Как видим, хотя ситуация и несколько улучшилась, однако всё ещё 80% своего времени центральный процессор вынужден ждать, пока из оперативной памяти поступят нужные команды и дан-2ные.
Для того чтобы исправить эту неприятную ситуацию, в архитектуру современных компьютероввстраивается специальная память, которую называют памятью типа кэш, или просто кэшем. Поанглийски слово кэш (cash) чаще всего обозначает наличные деньги "в кошельке", в противовес безналичным деньгам, хранящимся, например, в банке. Как мы вскоре увидим, это название весьма точно отражает суть памяти типа кэш и её взаимодействие с расслоённой на банки оперативной памятьюи центральным процессором.Кэш делается на очень быстрых интегральных схемах статической памяти и работает с такойже скоростью, как и сам центральный процессор, т.е. может, например, выдавать по 8 байт за каждуюнаносекунду.
Для программиста кэш является невидимой памятью в том смысле, что эта память неадресуемая, к ней нельзя обратиться из программы по какой-либо команде чтения или записи данных. Конечно, существуют привилегированные команды для работы с кэшем как с единым целым,это, например, команда очистки кэша от всех находящихся там команд и данных. Такого рода память,в которой команды и числа не имеют адресов, как мы уже не упоминали, называется ассоциативнойпамятью.1 Центральный процессор работает с кэшем по следующей схеме.Когда центральному процессору нужна какая-то команда или данное, то сначала он смотрит, ненаходится ли уже эта команда или данные в кэше, и, если они там есть, читает их оттуда, не обращаясь к оперативной памяти. Разумеется, если требуемой команды или данных в кэше нет, то центральный процессор вынужден читать их из относительно медленной оперативной памяти, однако копиюпрочитанного он обязательно оставляет при этом в кэше.
Заметим, что, используя расслоение оперативной памяти, вместе с требуемыми байтами памяти в кэш одновременно попадают и несколькососедних с ними байтов памяти (обычно этих байт даже больше, чем банков памяти, это называетсястрокой кэш памяти – cash line), что как мы далее увидим, является очень полезным для увеличениябыстродействия ЭВМ.Аналогично, при записи данных центральный процессор помещает их в кэш. Особая ситуацияскладывается, если требуется что-то записать в кэш, а там нет свободного места.
В этом случае поспециальному алгоритму из кэша удаляются некоторые данные, обычно те, к которым дольше всегоне было обращения из центрального процессора. Проще всего это сделать, если вести очередь обращений к данным в кэше, при этом при каждом чтении или записи некоторого данного, оно ставится вначало этой очереди. Легко понять, что при этом в конце очереди автоматически соберутся те данные, к которым дольше всего не было обращения.
При этом, если эти данные в кэш памяти изменялись, то они переписываются в оперативную память. В архитектуре некоторых ЭВМ может быть дваотдельных кэша, один для команд и другой для данных. При этом обычно команды запрещается менять, поэтому в кэш команд никогда не производится запись, что позволяет упростить реализациюэтого кэша.Таким образом, в кэше накапливаются наиболее часто используемые команды и данные выполняемой программы, например, все команды не очень длинных циклов после их первого выполнениябудут находиться в памяти типа кэш.
Как видно из этого алгоритма работы кэша, он весьма "болезненно" реагирует на прерывания, так как при этом производится переключение на другую программу, и информацию в кэше необходимо по большей части полностью сменить. Часто говорят, что кэшобразует буфер между быстрой регистровой памятью центрального процессора и относительно медленной оперативной памятью (буфером обычно называется устройство, сглаживающее неравномерность скорости работы других взаимодействующих между собой устройств). На рис. 15.1 показанасхема взаимодействия центрального процессора и оперативной памяти с использованием кэша.Как уже говорилось, память типа кэш строится из очень быстрых и, следовательно, дорогих интегральных схем, поэтому из экономических соображений её объём сравнительно невелик, примерно5% от объёма оперативной памяти.
Однако, несмотря на свой относительно малый объём, кэш вызывает значительное увеличение скорости работы ЭВМ, так как по статистике примерно 90-95% всехобращений из центрального процессора за командами и данными производится именно в память типакэш.На старых персональных ЭВМ для изучения влияния памяти типа кэш на производительностькомпьютера можно было произвести такой эксперимент. Сначала замеряется усреднённая производительность ЭВМ с помощью какой-нибудь предназначенной для этого программы (например, про1Скорее всего, так же устроена память и у человека.
Действительно, было бы удивительно, если бы у того,что мы помним, были бы ещё какие-то адреса.3граммой SysInfo из пакета Norton Utilities). После этого при перезагрузке машины память типа кэшотключается в настройках BIOS'a, и снова замеряется производительность компьютера, которая приэтом снижается примерно на порядок. Главное, после этого эксперимента не забыть обратно включить на своём компьютере память типа кэш ☺.1ОперативнаяпамятьПамять типа кэшЦентральныйпроцессорРис.
15.1. Схема обмена с использованием памятитипа кэш.В качестве примера рассмотрим одну из простейших реализаций памяти типа кэш, так называемый кэш прямого отображения (смысл этого названия вскоре будет ясен из алгоритма его работы).Пусть размер оперативной памяти ЭВМ составляет 1 Мбайт (220 байт), и выберем объём кэш памятиравным 1/32 от объёма оперативной памяти, это 32 Кбайта (215 байт), что составляет около 3% отобъёма оперативной памяти.
Далее, разобьём всю оперативную память на участки размером по 32Кбайта, будем называть такие участки страницами, как видим, в нашем случае размер страницысовпадает с размером самого кэша. Каждую страницу, как находящуюся в оперативной памяти, так истраницу кэша, в свою очередь, будем рассматривать как состоящую из строк длиной по 16 байт.Таким образом, имеемВся память 220 = 25 страниц х 211 строк х 24 байт.Тогда 20-разрядный физический адрес любого байта оперативной памяти тоже можно разбить натри поля: адрес (номер) страницы (5 бит), адрес строки в странице (11 бит) и адрес байта в строке (4бита):1915№ страницы144№ строки30№ байтаТеперь каждую строку в кэш памяти (это 16 байт или 128 бит) снабдим шестью дополнительными битами, пять из которых будут хранить номер некоторой страницы оперативной памяти, а вшестом бите будет содержаться признак изменения строки в кэш памяти (0 – в строку кэш памяти небыло записи, 1 – была запись).
Объём этой дополнительной (служебной) памяти составляет всегооколо 6% (6 бит/16 байт), что незначительно увеличивает общий объём кэша.Алгоритм работы центрального процессора при наличии такой кэш памяти будет заключаться вследующем. Сначала из физического адреса байта, по которому необходимо обратиться в оперативную память, выделяется номер строки (разряды с 4 по 14), и проверяется строка в кэш памяти с этимже номером. Если номер страницы, приписанный данной строке в кэше, совпадает с номером тойстраницы, к которой мы хотим обратиться, то нужный нам байт уже находится именно в этой строкекэша, и обращаться в оперативную память не надо.
В противном случае строку с данным номером вкэш памяти необходимо сменить на строку с этим же номером из нужной нам страницы оперативнойпамяти. Разумеется, при такой замене сначала проверяется бит-признак изменения этой строки в кэшпамяти, если строка менялась, то её, конечно, надо записать на своё место в оперативной памяти.Таким образом, получается, что, если некоторая строка оперативной памяти присутствует в кэше,то она находится в нём на том же месте, что и в своей странице оперативной памяти.
Характеристики
Тип файла PDF
PDF-формат наиболее широко используется для просмотра любого типа файлов на любом устройстве. В него можно сохранить документ, таблицы, презентацию, текст, чертежи, вычисления, графики и всё остальное, что можно показать на экране любого устройства. Именно его лучше всего использовать для печати.
Например, если Вам нужно распечатать чертёж из автокада, Вы сохраните чертёж на флешку, но будет ли автокад в пункте печати? А если будет, то нужная версия с нужными библиотеками? Именно для этого и нужен формат PDF - в нём точно будет показано верно вне зависимости от того, в какой программе создали PDF-файл и есть ли нужная программа для его просмотра.