50182 (Работа и устройство процессоров), страница 3

2016-07-28СтудИзба

Описание файла

Документ из архива "Работа и устройство процессоров", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "лабораторные работы", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "50182"

Текст 3 страницы из документа "50182"

Конвейер

Конвейер (англ. conveyer, от convey — перевозить), транспортёр, машина непрерывного действия для перемещения сыпучих, кусковых или штучных грузов. Идея конвейера, давным-давно предложенная Генри Фордом, состоит в том, что производительность цепочки последовательных действий определяется не сложностью этой цепочки, а лишь длительностью самой сложной операции. Иными словами, совершенно неважно, сколько человек занимаются производством автомобиля и как долго длится его изготовление в целом, - важно то, что если каждый человек в цепочке тратит, скажем, на свою операцию одну минуту, то с конвейера будет сходить один автомобиль в минуту, ни больше и ни меньше; независимо от того, сколько операций нужно совершить с отдельным автомобилем и сколько заняла бы его сборка одним человеком. Применительно к процессорам принцип конвейера означает, что если мы сумеем разбить выполнение машинной инструкции на несколько этапов, то тактовая частота (а вернее, скорость, с которой процессор забирает данные на исполнение и выдает результаты) будет обратно пропорциональна времени выполнения самого медленного этапа. Если это время удастся сделать достаточно малым (а чем больше этапов на конвейере, тем они короче), то мы сумеем резко повысить тактовую частоту, а значит, и производительность процессора. Процедуру выполнения практически любой инструкции можно разбить как минимум на пять непересекающихся этапов:

1.Выборка инструкции (FETCH) из памяти. Из программы извлекается инструкция, которую нужно выполнить.

2.Декодирование инструкции (DECODE). Процессор обрабатывает полученную команду, и переправляет запрос на нужное исполнительное устройство.

3.Подготовка исходных данных для выполнения инструкции.

4.Собственно выполнение инструкции (EXECUTE).5.Сохранение полученных результатов.

Конвейеризация потенциально применима к любой процессорной архитектуре, независимо от набора команд и положенных в ее основу принципов. Даже самый первый x86-процессор, Intel 8086, уже содержал своеобразный примитивный "двухстадийный конвейер" - выборка новых инструкций (FETCH) и их исполнение осуществлялись в нем независимо друг от друга. Однако реализовать что-то более сложное для CISC-процессоров оказалось трудно: декодирование неоднородных CISC-инструкций и их очень сильно различающаяся сложность привели к тому, что конвейер получается чересчур замысловатым, катастрофически усложняя процессор(о CISC и RISC пойдет немного дальше). Подобных трудностей у RISC-архитектуры гораздо меньше (а SPARC и MIPS, например, и вовсе были специально оптимизированы для конвейеризации), так что конвейеризированные RISC-процессоры появились на рынке много раньше, чем аналогичные x86.Недостатки конвейера неочевидны, но, как обычно и бывает, из-за нескольких "мелочей" реализовать грамотно организованный конвейер совсем не просто.

Основных проблем три.

1.Необходимость наличия блокировок конвейера. Дело в том, что время исполнения большинства инструкций может очень сильно варьироваться. Скажем, умножение (и тем более деление) чисел требуют (на стадии EXECUTE) нескольких тактов, а сложение или побитовые операции - одного такта; а для операций Load и Store, которые могут обращаться к разным уровням кэш-памяти или к оперативной памяти, это время вообще не определено (и может достигать сотен тактов). Соответственно, должен быть какой-то механизм, который бы "притормаживал" выборку и декодирование новых инструкций до тех пор, пока не будут завершены старые. Методов решения этой проблемы много, но их развитие приводит к одному - в процессорах прямо перед исполнительными устройствами появляются специальные блоки-диспетчеры (dispatcher), которые накапливают подготовленные к исполнению инструкции, отслеживают выполнение ранее запущенных инструкций и по мере освобождения исполнительных устройств отправляют на них новые инструкции. Даже если исполнение займет много тактов - внутренняя очередь диспетчера позволит в большинстве случаев не останавливать подготавливающий все новые и новые инструкции конвейер [Новые инструкции тоже не каждый такт удается декодировать, так что возможна и обратная ситуация: новых инструкций за такт не появилось, и диспетчер отправляет инструкции на выполнение "из старых запасов"]. Так в процессоре возникает разделение на две независимо работающие подсистемы: Front-end (блоки, занимающиеся декодированием инструкций и их подготовкой к исполнению) и Back-end (блоки, собственно исполняющие инструкции).

2.Необходимость наличия системы сброса процессора. Поскольку операции FETCH и EXECUTE всегда выделены в отдельные стадии конвейера, то в тех случаях, когда в программном коде происходит разветвление (условный переход), зачастую оказывается, что по какой из веток пойти - пока неизвестно: инструкция, вычисляющая код условия, еще не выполнена. В результате процессор вынужден либо приостанавливать выборку новых инструкций до тех пор, пока не будет вычислен код условия (а это может занять очень много времени и в типичном цикле страшно затормозит процессор), либо, руководствуясь соображениями блока предсказания переходов, "угадывать", какой из переходов скорее всего окажется правильным.3.Наконец, конвейер обычно требует наличия специального планировщика (scheduler), призванного решать конфликты по данным. Если в программе идет зависимая цепочка инструкций (когда инструкция-2, следующая за инструкцией-1, использует для своих вычислений данные, только что вычисленные инструкцией-1), а время исполнения одной инструкции (от момента запуска на стадию EXECUTE и до записи полученных результатов в регистры) превосходит один такт, то мы вынуждены придержать выполнение очередной инструкции до тех пор, пока не будет полностью выполнена ее предшественница. К примеру, если мы вычисляем выражение вида A•B+C с сохранением результата в переменной X (XfA•B+C), то процессор, выполняя соответствующую выражению цепочку из двух команд типа R4fR1•R2; R0fR3+R4, должен вначале дождаться, пока первая инструкция сохранит результат умножения A•B, и только потом прибавлять к полученному результату число С. Цепочки зависимых инструкций в программах - скорее правило, нежели исключение, а исполнение команды с записью результата в регистры за один такт - наоборот, скорее исключение, нежели правило, поэтому в той или иной степени с проблемой зависимости по данным любая конвейерная архитектура обязательно сталкивается. Оттого-то в конвейере и появляются сложные декодеры, заранее выявляющие эти зависимости, и планировщики, которые запускают инструкции на исполнение, выдерживая паузу между запуском главной инструкции и зависимой от нее. Идея конвейера в процессоре очень красива на словах и в теории, однако реализовать ее даже в простом варианте чрезвычайно трудно. Но выгода от конвейеризации столь велика и несомненна, что приходится с этими трудностями мириться, ведь ничего лучшего до сих пор не придумано. В 1991-92 годах корпорация Intel, освоив производство сложнейших кристаллов с более чем миллионом транзисторов, выпустила i486 - классический CISC-процессор архитектуры x86, но с пятистадийным конвейером. Чтобы вы смогли оценить этот рывок, приведу две цифры: тактовую частоту по сравнению с i386 введение конвейера позволило увеличить втрое, а производительность на единицу частоты - вдвое. В i386 многие инструкции выполнялись за несколько тактов; а в i486 среднее "время" исполнения инструкции в тактах удалось снизить почти вдвое. Правда, расплатой за это стала чудовищная сложность ядра i486; но такие "мелочи" по меркам индустрии центральных процессоров - пустяк: быстро растущие технологические возможности кремниевой технологии уже через пару лет позволили освоить производство i486 всем желающим. Но к тому моменту RISC-архитектуры сделали еще один шаг вперед - к суперскалярным процессорам.


Кэш-память

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


Кэш-память первого уровня


Во всех процессорах, начиная с 486-го, имеется встроенный (первого уровня) кэш-контроллер с кэш-памятью объемом 8 Кбайт в процессорах 486DX, а также 32, 64 Кбайт и более в современных моделях. Кэш — это быстродействующая память, предназначенная для временного хранения программного кода и данных. Обращения к встроенной кэш-памяти происходят без состояний ожидания, поскольку ее быстродействие соответствует возможностям процессора, т. е. кэш-память первого уровня (или встроенный кэш) работает на частоте процессора. Использование кэш-памяти сглаживает традиционный недостаток компьютера, состоящий в том, что оперативная память работает более медленно, чем центральный процессор (так называемый эффект "бутылочного горлышка"). Благодаря кэш-памяти процессору не приходится ждать, пока очередная порция программного кода или данных поступит из относительно медленной основной памяти, что приводит к ощутимому повышению производительности. В современных процессорах встроенный кэш играет еще более важную роль, потому что он часто является единственным типом памяти во всей системе, который может работать синхронно с процессором. В большинстве современных процессоров используется множитель тактовой частоты, следовательно, они работают на частоте, в несколько раз превышающей тактовую частоту системной платы, к которой они подключены. Например, тактовая частота (1,4 ГГц), на которой работает процессор Pentium III, в 10,5 раз превышает тактовую частоту системной платы, равную 133 МГц. Поскольку оперативная память подключена к системной плате, она также может работать только на тактовой частоте, не превышающей 133 МГц. В такой системе из всех видов памяти только встроенный кэш может работать на тактовой частоте 1,4 ГГц. Рассмотренный в этом примере процессор Pentium III на 1,4 ГГц имеет встроенный кэш первого уровня общим объемом 32 Кбайт (в двух отдельных блоках по 16 Кбайт) и кэш второго уровня объемом 512 Кбайт, работающий на полной частоте ядра процессора. Если данные, необходимые процессору, находятся уже во внутренней кэш-памяти, то задержек не возникает. В противном случае центральный процессор должен получать данные из кэш-памяти второго уровня или (в менее сложных системах) из системной шины, т. е. непосредственно из основной памяти. Чтобы понять значение кэш-памяти, необходимо сравнить относительные скорости процессоров и ОЗУ Основная проблема заключается в том, что быстродействие процессора выражается обычно в МГц (в миллионах тактов в секунду), в то время как скорость памяти выражается в наносекундах (т е в миллиардных долях секунды)Для процессора, работающего на частоте 200 МГц, потребуется 4 нс памяти. Обратите внимание, что с процессором 233 МГц обычно используется системная плата с тактовой частотой 66 МГц, что соответствует скорости 15 нс на цикл. Основная память, скорость которой равна 60 нс (общий параметр практически для всех систем класса Pentium), приравнивается к тактовой частоте, примерно равной 16 МГц. Таким образом, в типичную систему Pentium 233 входит процессор, работающий на частоте 233 МГц (4,3 нс на цикл), системная плата, тактовая частота которой 66 МГц (15 нс на цикл) и основная память, работающая на частоте 16 МГц (60 нс на цикл).


Как работает кэш-память первого уровня


Для того чтобы разобраться с принципами работы кэш-памяти первого и второго уровней, рассмотрим прекрасную аналогию, написанную Скотом Мюллером. Герой нашей истории (в данном случае — вы), вкушающий различные яства, выступает в роли процессора, который извлекает необходимые данные из памяти и проводит их обработку. Кухня, на которой готовятся ваши любимые блюда, представляет собой основную оперативную память (SIMM/DIMM). Официант является кэш-контроллером, а стол, за которым вы сидите, выступает в качестве кэш-памяти первого уровня. Роль кэш-памяти второго уровня выполняет тележка с заказанными блюдами, неспешно путешествующая между кухней и вашим столом. Роли распределены, пора начинать нашу историю. Ежедневно примерно в одно и то же время вы обедаете в определенном ресторане. Входите в обеденный зал, садитесь за столик и заказываете, например, хот-дог. Для того чтобы сохранить соответствие событий, предположим, что средняя скорость поглощения пищи равна одному биту в четыре секунды (цикл процессора 233 МГц составляет около 4 нс). А также определим, что повару (т. е. кухне) для приготовления каждого заказанного блюда потребуется 60 с (значит, скорость основной памяти 60 нс). Таким образом, при первом посещении ресторана вы садитесь за столик и заказываете хот-дог, после чего приходится ждать целых 60 секунд, пока приготовят заказанное блюдо. Когда официант наконец-то приносит заказ, вы не спеша, со средней скоростью, принимаетесь за еду. Быстренько доев хот-дог, подзываете к себе официанта и заказываете гамбургер. Пока его готовят, вы снова ждете те же 60 секунд. Принесенный гамбургер съедается с той же скоростью. Подобрав последние крошки, снова зовете официанта и заказываете уже котлеты "по-киевски". После 60-секундного ожидания принесенное блюдо съедается с аналогичной скоростью. После этого вы решаете заказать на десерт, скажем, яблочный пирог. Заказанный пирог вы получаете после ставшего привычным 60-секундного ожидания. Одним словом, обед состоит главным образом из длительных ожиданий, которые перемежаются энергичным поглощением заказываемых блюд. После того как два дня подряд ровно в 18.00 вы приходите в ресторан и заказываете одни и те же блюда в одной и той же последовательности, у официанта появляется дельная мысль: "Сегодня в 18.00 снова появится этот странный посетитель и сделает свой обычный заказ: хот-дог, гамбургер, котлеты "по-киевски" и яблочный пирог на десерт. Почему бы не приготовить эти блюда заранее? Я думаю, он должным образом оценит мои старания". Итак, вы приходите в ресторан, заказываете хот-дог и официант сразу же, без малейшей паузы, ставит перед вами заказанное блюдо. После того как вы разделались с хот-догом и собираетесь заказать очередное блюдо, на столе появляется тарелка с гамбургером. Оставшаяся часть обеда проходит примерно так же. Вы стремительно, со скоростью один бит в четыре секунды, поглощаете пищу, не ожидая, пока заказанное блюдо будет приготовлено на кухне. На сей раз время обеда заполнено исключительно тщательным пережевыванием пищи, и все благодаря смекалке и практичному подходу официанта. Приведенный пример достаточно точно описывает работу кэш-памяти первого уровня в процессоре. Роль кэш-памяти первого уровня в данном случае выполняет поднос, на котором может находиться одно или несколько блюд. При отсутствии официанта пространство подноса представляет собой некий резервный запас (т. е. буфер) продуктов питания. Если буфер заполнен, значит, можно есть до тех пор, пока поднос не опустеет. Обдуманно пополнить его содержимое, к сожалению, некому. Официант представляет собой кэш-контроллер, предпринимающий определенные меры и пытающийся решить, какие же блюда следует заранее поставить на стол в соответствии с вашими возможными пожеланиями. Подобно настоящему кэш-контроллеру, официант воспользуется своим опытом для того, чтобы определить, какое блюдо будет заказано следующим. Если он определит правильно, значит, не придется долго ждать. Настал день четвертый. Вы появляетесь в ресторане, как обычно, ровно в 18.00 и начинаете с привычного хот-дога. Официант, изучивший к тому времени ваши вкусы, уже приготовил хот-дог, и вы сразу же, не ожидая, приступаете к трапезе. После хот-дога официант приносит вам гамбургер и вместо слов благодарности слышит: "Вообще-то я гамбургер не заказывал. Принесите мне, пожалуйста, отбивную". Официант ошибся в своих предположениях, и вам снова придется ждать целых 60 секунд, пока на кухне не приготовят заказанное блюдо. Подобное событие, т. е. попытка доступа к той части кэшированного файла, которая отсутствует в кэш-памяти, называется промахом кэша (cache miss). Как следствие, возникает пауза, или, если говорить о системе Pentium 233 МГц, при каждом промахе кэша быстродействие системы снижается до 16 МГц (т. е. до скорости оперативной памяти). Кэш-память первого уровня большей части процессоров Intel имеет коэффициент совпадения, равный примерно 90%.Это означает, что кэш-память содержит корректные данные 90% времени, а следовательно, процессор работает на полной скорости (в данном случае с частотой 233 МГц) примерно 90% всего времени. Оставшиеся 10% времени кэш-контроллер обращается к более медленной основной памяти, во время чего процессор находится в состоянии ожидания. Фактически происходит снижение быстродействия системы до уровня оперативной памяти, скорость которой равна 60 нс, или 16 МГц. В нашем примере, быстродействие процессора примерно в 14 раз выше скорости оперативной памяти. С развитием научного прогресса скорость памяти увеличилась с 16 МГц (60 нс) до 266 Мгц (3,8 нс), в то время как тактовая частота процессоров выросла до 2 ГГц и более. Таким образом, даже в самых современных системах память все еще в 7,5 (или более) раз медленнее процессора. Кэш-память позволяет компенсировать эту разность. Основная особенность кэш-памяти первого уровня состоит в том, что она всегда интегрирована с ядром процессора и работает на той же частоте. Это свойство в сочетании с коэффициентом совпадений, равным 90%, делает кэш-память важной составляющей эффективности системы.


Кэш-память второго уровня


Для того чтобы уменьшить ощутимое замедление системы, возникающее при каждом промахе кэша, задействуется кэш-память второго уровня. Развивая аналогию с рестораном, которая использовалась для объяснения кэш-памяти первого уровня, можно обозначить вторичный кэш как сервировочный столик с "дежурными" блюдами, расположение которого позволяет официанту принести любое из имеющихся блюд через 15 секунд. В системе класса Pentium (Socket 7) кэш-память второго уровня установлена на системной плате, т. е. работает на тактовой частоте системной платы (66 МГц, или 15 нс). Рассмотрим ситуацию, когда вы заказываете блюдо, которого нет в числе ранее принесенных. В этом случае, вместо того чтобы отправиться на кухню и через 60 секунд принести приготовленное блюдо, официант в первую очередь проверяет столик с дежурными блюдами. При наличии там заказанного блюда он возвращается уже через 15 секунд. Результат в реальной системе выражается в следующем: вместо снижения быстродействия системы с 233 до 16 Мгц и соответственно скорости основной памяти до 60 нс происходит извлечение необходимых данных из кэш-памяти второго уровня, скорость которой равна 15 нс (66 МГц). Таким образом, быстродействие системы изменяется с 233 до 66 МГц. Более современные процессоры содержат встроенную кэш-память второго уровня, которая работает на той же скорости, что и ядро процессора, причем скорости кэш-памяти первого и второго уровней одинаковы. Если описывать новые микросхемы с помощью аналогий, то в этом случае официант размещает столик с дежурными блюдами рядом с тем столиком, за которым вы сидите. При этом, если заказанного блюда на вашем столе нет (промах кэш-памяти первого уровня), официанту всего лишь необходимо дотянуться к находящемуся рядом столику с дежурными блюдами (кэш-память второго уровня), что потребует гораздо меньше времени, чем 15-секундная прогулка на кухню, как это было в более ранних конструкциях


Конструкция и эффективность кэш-памяти


Коэффициент совпадения кэш-памяти как первого, так и второго уровней составляет 90%. Таким образом, рассматривая систему в целом, можно сказать, что 90% времени она работает с полной тактовой частотой (в нашем примере 233 МГц), получая данные из кэш-памяти первого уровня. Десять процентов времени данные извлекаются из кэш-памяти второго уровня. Процессор работает с кэш-памятью второго уровня только 90% этого времени, а оставшиеся 10% вследствие промахов кэша — с более медленной основной памятью. Таким образом, объединяя кэш-память первого и второго уровней, получаем, что обычная система работает с частотой процессора 90% времени (в нашем случае 233 МГц), с частотой системной платы 9% времени (т. е. 90% от 10% при частоте 66 МГц) и с тактовой частотой основной памяти примерно 1% времени (10% от 10% при частоте 16 МГц). Это ясно демонстрирует важность кэш-памяти первого и второго уровней; при отсутствии кэш-памяти система часто обращается к ОЗУ, скорость которого значительно ниже, чем скорость процессора. Это наводит на интересные мысли. Представьте, что вы собираетесь повысить эффективность оперативной памяти или кэш-памяти второго уровня вдвое. На что же именно потратить деньги? Принимая во внимание, что оперативная память непосредственно используется примерно 1% времени, двойное увеличение ее производительности приведет к повышению быстродействия системы только в 1% времени! Нельзя сказать, что это звучит достаточно убедительно. С другой стороны, если вдвое повысить эффективность кэш-памяти второго уровня, получится двойное увеличение эффективности системы в 9% времени, что является более значимым улучшением. Системотехники и специалисты по разработке процессоров компаний Intel и AMD зря времени не теряли и разработали методы повышения эффективности кэш-памяти второго уровня. В системах класса Pentium (P5) кэш-память второго уровня обычно устанавливается на системной плате и работает соответственно с ее тактовой частотой. Intel значительно повысила производительность процессоров, переместив кэш-память с системной платы непосредственно в процессор, что повлекло за собой увеличение ее рабочей частоты до частоты процессора. Сначала микросхемы кэша устанавливались в одном корпусе вместе с основным процессором. Но такая конструкция оказалась слишком дорогой, поэтому, начиная с процессоров семейства Pentium II, компания Intel стала приобретать микросхемы кэш-памяти у сторонних производителей (Sony, Toshiba, NEC, Samsung и т. д.). Микросхемы поставлялись уже в готовом виде, в корпусном исполнении, поэтому Intel начала их устанавливать на монтажной плате рядом с процессором. Именно поэтому процессор Pentium II был изначально разработан в виде картриджа. Одна из существенных проблем заключалась в быстродействии микросхем кэш-памяти сторонних производителей. Скорость наиболее быстрых микросхем достигала 3 нс и выше, что было эквивалентно тактовой частоте 333 МГц. Но процессоры уже работали на более высоких скоростях, поэтому в Pentium II и первых моделях Pentium III кэш-память второго уровня работает на половинной частоте процессора. В некоторых моделях процессора Athlon скорость кэш-памяти второго уровня уменьшена до двух пятых или даже одной трети тактовой частоты ядра. Качественный скачок в технологии произошел с появлением процессоров Celeron 300A и выше. В этих процессорах внешние микросхемы кэш-памяти второго уровня не используются. Вместо этого кэш-память как первого, так и второго уровней была интегрирована непосредственно в ядро процессора. Таким образом, кэш-память обоих уровней работает с полной тактовой частотой процессора, что позволяет повышать ее быстродействие при возможном увеличении скорости процессора. В последних моделях Pentium III, а также во всех процессорах Xeon и Celeron кэш-память второго уровня по-прежнему работает с тактовой частотой ядра процессора, а значит, при неудачном обращении в кэш-память первого уровня ожидания или замедления операций не происходит. В современных моделях процессоров Athlon и Duron также используется встроенная кэш-память, работающая с частотой ядра. Как вы знаете, при неудачном обращении к внешней кэш-памяти происходит снижение скорости кэша до половинной частоты ядра или, что еще хуже, до частоты более медленной системной платы. Использование встроенного кэша позволяет значительно повысить эффективность процессора, так как 9% времени в системе будет использоваться кэш-память второго уровня, работающая с полной частотой ядра. К числу преимуществ встроенной кэш-памяти относится также уменьшение ее стоимости, так как она содержит меньшее число компонентов. Вернемся к рассмотренной ранее аналогии, используя в качестве примера современный процессор Pentium 4 с тактовой частотой 2 ГГц. Теперь ваша скорость поглощения пищи равна одному байту в секунду (тактовой частоте 2 ГГц соответствует длительность цикла 0,5 нс). Кэш-память первого уровня работает на этой же частоте, т. е. скорость поглощения блюд, находящихся на вашем столе, равна скорости процессора (а столик соответствует кэш-памяти первого уровня). Ощутимое повышение быстродействия происходит в том случае, когда вы заказываете блюдо, которого нет на столе (промах кэша первого уровня), и официанту приходится обращаться к столику с дежурными блюдами. В девяти случаях из десяти он находит там нужное блюдо, которое приносит через полсекунды (частота кэш-памяти второго уровня равна 2 ГГц, что соответствует скорости 0,5 нс). Итак, современные системы работают 99% времени (суммарный коэффициент совпадения кэш-памяти первого и второго уровней) с частотой 2 ГГц и, как и прежде, в одном случае из ста понижают скорость до частоты оперативной памяти (приготовление блюда на кухне). При увеличении скорости памяти до 400 МГц (2,5 нс) время ожидания заказанного блюда из кухни достигнет 2,5 с. Эх, если бы скорость обслуживания в ресторане повышалась так же, как быстродействие процессора!


Организация работы кэш-памяти


Организация кэш-памяти в процессорах 486 и семействе Pentium называется четырехстраничным набором ассоциативного кэша (four-way set associative cache), что подразумевает разделение кэш-памяти на четыре блока. Каждый блок, в свою очередь, организуется в виде 128 или 256 строк по 16 байт в каждой. Чтобы понять, как работает четырехстраничный кэш, рассмотрим следующий пример. В простейшем случае кэш состоит из одного блока, в который можно загрузить содержимое соответствующего блока основной памяти. Это похоже на закладку, используемую для того, чтобы отметить нужную страницу в книге. Если основная память — это вся книга, то по закладке можно определить, какая страница находится в кэше. Но этого бывает достаточно только в том случае, если все необходимые данные находятся на странице, отмеченной закладкой. Если же вам нужно вернуться к одной из уже прочитанных страниц, то закладка будет бесполезной. Можно воспользоваться несколькими закладками (выписками), отмечая сразу несколько мест в книге. При этом, конечно, усложняется схема процессора, но зато можно проверить сразу несколько закладок. Каждая дополнительная закладка усложняет систему, но вероятность того, что нужная страница уже отмечена (выписана), повышается. Если ограничиться четырьмя отметками-выписками, то можно получить четырехстраничный кэш. Вся кэш-память разбивается на четыре блока, в каждом из которых хранятся копии различных фрагментов основной памяти. Хорошим примером работы процессора сразу с несколькими областями памяти является использование многозадачной операционной системы Windows. Здесь четырехстраничный кэш значительно повышает производительность процессора. Содержимое кэша всегда должно соответствовать содержимому основной памяти, чтобы процессор работал с самыми свежими данными. Поэтому в семействе процессоров 486 используется кэш со сквозной записью (write-through), при которой данные, записанные в кэш, автоматически записываются и в основную память. В процессорах Pentium используется двунаправленный кэш (write-back), который работает при выполнении как операций считывания, так и операций записи. Это позволяет еще больше повысить производительность процессора. Хотя встроенный кэш в процессоре 486 используется только при чтении, внешний кэш в системе может быть двунаправленным. Кроме того, в процессорах 486 предусмотрен дополнительный 4-байтовый буфер, в котором можно хранить данные вплоть до передачи в память. Это необходимо в том случае, если шина памяти занята. Еще одна из особенностей улучшенной архитектуры кэша состоит в том, что кэш-память является неблокируемой. Это свойство позволяет уменьшать или скрывать задержки памяти, используя перекрытие операций процессора с выборкой данных. Неблокируемая кэш-память дает возможность продолжать выполнение программы одновременно с неудачными обращениями в кэш при наличии некоторых ограничений. Другими словами, кэш-память улучшает обработку промаха кэша и позволяет процессору продолжать выполнение операций, не связанных с отсутствующими данными. Кэш-контроллер, встроенный в процессор, также используется для наблюдения за состоянием системной шины при передаче управления шиной альтернативным процессорам, которые называются хозяевами шины (bus masters). Процесс наблюдения, в свою очередь, называется отслеживанием шины (bus snooping). Если устройство, управляющее передачей данных по шине (т. е. хозяин шины), записывает какие-либо данные в область памяти, копия которой хранится в кэше процессора, то содержимое кэша перестает соответствовать содержимому основной памяти. В этом случае кэш-контроллер отмечает эти данные как ошибочные и при следующем обращении к памяти обновляет содержимое кэша, поддерживая тем самым целостность всей системы. При увеличении тактовой частоты время цикла уменьшается. В новых системах не используется кэш на системной плате, поскольку быстрые модули DDR-SDRAM или RDRAM, применяемые в современных системах Pentium II/Celeron/III, могут работать на тактовой частоте системной платы. Как видите, кэш-память двух уровней улучшает взаимодействие между быстрым центральным процессором и более медленной оперативной памятью, а также позволяет минимизировать периоды ожидания, возникающие при обработке данных. Решающую роль в этом играет кэш-память второго уровня, расположенная в кристалле процессора. Это дает возможность процессору работать с тактовой частотой, наиболее близкой к его максимальной частоте.


Свойства процессора


По мере появления новых процессоров их архитектура дополняется все новыми и новыми возможностями, которые позволяют не только улучшить эффективность выполнения тех или иных приложений, но и повысить надежность центрального процессора в целом. В следующих разделах представлено краткое описание различных технологий, включая режим управления системой, суперскалярное выполнение, технологии MMX и SSE.

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5221
Авторов
на СтудИзбе
429
Средний доход
с одного платного файла
Обучение Подробнее