Суббота, 27.04.2024, 06:16
Приветствую Вас Гость

SYSTEM ADMINISTRATOR

Меню
Разделы
Друзья
Реклама
Наша кнопка
Опрос
Нужен ли нам форум?
Всего ответов: 64
Главная » 2012 » Февраль » 8 » Элементы архитектуры процессора
10:19
Элементы архитектуры процессора

Тактовая частота

Быстродействие процессора во многом зависит от тактовой частоты, обычно измеряемое в мегагерцах (МГц). Тактовая частота определяется параметрами кварцевого резонатора, представляющего собой кристалл кварца в оловянной оболочке. Под воздействие электрического напряжения в кристалле кварца возникают колебания электрического тока с частой, определяемой формой и размерами кристалла. Частота этого переменного тока и называется тактовой частотой. Наименьшей единицей времени для процессора, как для логического устройства является период тактовой частоты или просто такт. На каждую операцию (выполнение команды) процессор затрачивает некоторое количество тактов. Естественно, чем выше тактовая частота процессора, тем производительнее он работает, так как в единицу времени происходит большее количество татов и выполняется большее количество команд. Естественно, более новые процессоры работают на все более высоких тактовых частотах (это достигается, в частности, улучшением технологии их изготовления) показываю большую производительность.

Различное количество тактов, затрачиваемое процессорами на выполнение команд, затрудняет их сравнение с использованием только лишь тактовой частоты. Среднее количество операций выполняемое за один такт работы процессора принято называть производительностью. Как вы уже наверное догадались теоретически сравнивать два процессора нужно рассматривая быстродействие и тактовую частоту работы в совокупности: чем меньше тактов затрачивает в среднем процессор на исполнение команды, тем выше его эффективность (производительность) даже при неизменной тактовой частоте.

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

Шина данных процессора

Одной из самых общих характеристик процессора является разрядность его шины данных и шины адреса. (Вспомните, что такое шина).

Когда говорят о шине процессора, обычно имеют ввиду шину данных, которая является набором соединений, для передачи и приема данных. Чем больше сигналов одновременно поступает на шину, тем больше данных по ней передается за определенный интервал времени, и тем быстрее она работает. Разрядность шины данных подобна количеству полос автомагистрали - чем больше полос, тем больше поток машин, чем шире шина данных, тем больше данных за одинаковые промежутки времени по ней передается. В процессоре 286 для приема и передачи двоичных данных используется 16 соединений, поэтому их шина данных считается 16-разрядной. У 32-х разрядных процессоров (например, 486), таких соединений вдвое больше, поэтому за единицу времени они передают и получают вдвое больше данных, чем 16-и разрядные процессоры - разумеется, эффективность выше. Современные процессоры (начиная с Pentium) имеют 64-х разрядную шину данных, поэтому они могут передавать в системную память по 64 бита за один такт. Такая реализация позволяет ускорить обмен данными между быстрым процессором и относительно медленным ОЗУ при неизменной рабочей частоте последнего за счёт повышения пропускной способности шины данных.

Разрядность шины данных процессора определяет также разрядность банка памяти. Это значит, что, например, 32-х разрядный процессор (например, 486) считывает из памяти и записывает в память 32 бита одновременно. Процессоры класса Pentium и выше считывают и записывают при операциях с памятью 64 бита одновременно. Поскольку разрядность стандартного модуля SIMM 72 pin равна 32 битам, то в системы на базе 486 процессоров можно устанавливать по одному модулю SIMM 72 pin, а в Pentium системы - по два таких модуля или один модуль DIMM 168 pin, у которого ширина шины равна 64 бита. Таким образом мы определили, с помощью какой шины процессор связан с оперативной памятью и от разрядности этой шины конечно же зависит производительность процессора. Теперь давайте разберемся, как процессор обрабатывает полученные из оперативной памяти данные.

Внутренняя шина и регистры процессора

Хоть процессор и получает данные из оперативной памяти с помощью шины некоторой ширины, это не значит, что внутри он может обрабатывать данные такой же разрядности. Давайте разберемся, как это происходит.

Количество битов данных, которые может обработать процессор за один прием, характеризуется разрядностью внутренних регистров.

Регистр - это по существу ячейка памяти внутри процессора, например, процессор может складывать числа, записанные в двух разных регистрах, а результат записывать в третий регистр. Разрядность регистров описывает разрядность обрабатываемых процессором данных. Разрядность регистров определяет также характеристики программного обеспечения и команд, выполняемых процессором. Например, процессоры с 32-разрядными внутренними регистрами могут выполнять 32-разрядные команды, которые обрабатывают данные 32-разрядными порциями, а процессоры с 16-разрядными регистрами этого делать не могут. Кроме того в зависимости от структуры регистров различают два основных типа процессоров:

RISC — Reduced (Restricted) Instruction Set Computer — процессоры (компьютеры) с сокращенной системой команд. Эти процессоры обычно имеют набор однородных регистров универсального назначения; их система команд отличается относительной простотой. В результате аппаратная реализация такой архитектуры позволяет с небольшими затратами выполнять эти инструкции за минимальное (в пределе 1) число тактов синхронизации.

CISC — Complete Instruction Set Computer — процессоры (компьютеры) с полным набором инструкций, к которым относится и семейство х86. Состав и назначение их регистров существенно неоднородны, широкий набор команд усложняет декодирование инструкций, на что расходуются аппаратные ресурсы. Возрастает число тактов, необходимое для выполнения инструкций.

Практически во всех современных процессорах внутренние регистры являются 32-разрядными (исключения Itanium от Intel и Hammer от AMD). В некоторых старых процессорах разрядность внутренней шины данных (а шина состоит из линий передачи данных и регистров), больше, чем разрядность внешней шины данных, той, которую мы с Вами уже обсуждали (которая связывает процессор с оперативной памятью). Обычно такие процессоры являются более дешевыми вариантами своих старших собратьев. Такая архитектура (внутренняя шина и регистры вдвое шире внешней) позволяет проектировать и создавать, например, недорогие 16-разрядные материнские платы, устанавливая в них 32-разрядные процессоры, обеспечивая таким образом 32-разрядную совместимость процессора при 16 разрядном обмене с памятью. Но такой способ удешевления системы остался в прошлом и в настоящее время совершенно не применяется.

В современных процессорах все обстоит наоборот: внешняя шина данных, как мы уже говорили, 64-разрядная, а регистры и внутренняя шина процессора по-прежнему 32-разрядны. Странная ситуация, не правда ли? Но странной она кажется лишь до того момента, как мы узнаем, что в современном процессоре (например, Pentium) для обработки информации, поступающей по внешней 64-разрядной шине данных, существует два обрабатывающих ее (информацию) 32-разрядных блока, называемых конвейерами. Такой процессор напоминает два объединенных в одном корпусе 32-разрядных процессора, а 64-разрядная внешняя шина данных позволяет быстрее наполнить регистры процессора. Такая архитектура, применяющая для обработки поступивших данных несколько конвейеров, называется суперскалярной и применяется сегодня во всех современных процессорах

Шина адреса

Шина данных представляет собой набор проводников, по которым передается адрес ячейки памяти, в которую или из которой пересылаются данные. По каждому проводнику передается один бит адреса, соответствующий одной цифре в адресе. Увеличение количества проводников (разрядов шины) используемых для формирования адреса, позволяет увеличить количество адресуемых ячеек. Разрядность шины адреса определяет максимальный объем памяти, адресуемой процессором. В компьютерах применяется, как Вы знаете, двоичная системы счисления. Если, например, разрядность шины адреса составила бы всего один бит (один провод для передачи данных), то по этому проводу можно было бы передать всего два значения (логический нуль - нет напряжения, логическая единица - есть напряжение) и таким образом можно было бы адресоваться к двум ячейкам памяти. Такой бы процессор поддерживал обмен только с двумя байтами оперативной памяти! Использование двух бит для задания адреса позволило бы адресоваться уже к 4-м байтам памяти (00, 01, 10, 11 на шине - на четыре разных адреса можно указать). Вообще, количество разных значений, принимаемое n-разрядным двоичным числом равно 2 в степени n. Соответственно, при ширине шины адреса n бит, количество разных ячеек памяти, к которым можно адресоваться составляет 2 в степени n, поэтому говорят, что процессор поддерживает 2 в степени n байт оперативной памяти, или говорят, что адресное пространство процессора равно 2 в степени n байт. Например: процессор 8086 имел адресную шину 20 бит. Тогда он мог адресовать {2 в степени 20=1048576} байт оперативной памяти, т.е. 1 Мбайт. Таким образом, максимальный объем оперативной памяти, поддерживаемой процессором 8086 составляет 1 Мбайт. 286-ой процессор имел адресную шину равную 24 битам, адресуя таким образом уже 16 Мбайт (обратите внимание: каждый новый бит в шине адреса, увеличивает объем адресуемой памяти вдвое, это естественно, если вспомнить формулу Объем памяти = 2 в степени разрядность шины). Современные процессоры имеют адресную шину равной 36 бит, что соответствует поддерживаемой оперативной памяти объемом 64 Гбайт!

Шины данных и адреса независимы, и разработчики микросхем выбирают их разрядность по своему усмотрению. Разрядность этих шин является показателем возможностей процессора: разрядность шины данных определяет возможности процессора быстро обмениваться информацией, разрядность адресной шины определяет объем поддерживаемой процессором памяти.

Динамическое исполнение

Динамическое исполнение - совокупность трех методов обработки информации в процессоре, таких как: Предсказание ветвлений, анализ потока команд, упреждающее выполнение. Динамическое выполнение - важнейшее архитектурное преимущество современных процессоров, оказывает серьезное влияние на производительность. Давайте вкратце рассмотрим, что такое динамическое выполнение.

Предсказание ветвлений (branch prediction)

С помощью этого метода можно выяснить, каким будет поток управления программы через несколько команд ветвления. При использовании специального механизма процессор может предсказать переходы или ветвления в потоке команд. В процессорах прежних поколений инструкция перехода приостанавливала конвейер (выборку инструкций) до исполнения собственно перехода, на чем, естественно, терялась производительность. Предсказание переходов направляет поток выборки и декодирования по одной из ветвей. Статический метод предсказания работает по схеме, заложенной в процессор, считая, что переходы по одним условиям, вероятнее всего, произойдут, а по другим — нет. Динамическое предсказание опирается на предысторию вычислительного процесса — для каждого конкретного случая перехода накапливается статистика поведения, и переход предсказывается, основываясь именно на ней.

Анализ потока команд (out-of-order execution)

Это средство анализирует и планирует выполнение команд в оптимальной последовательности, независимо от их первоначального порядка в программе. Свойственный RISC-архитектуре, данный метод теперь реализуется и для процессоров х86. При этом изменяется порядок внутренних манипуляций данными, а внешние (шинные) операции ввода-вывода и записи в память выполняются, конечно же, в порядке, предписанном программным кодом. Однако эта способность процессора в наибольшей степени может блокироваться несовершенством программного кода (особенно 16-битных приложений), если он генерируется без учета возможности изменения порядка исполнения инструкций. Процессор рассматривает команды, из которых состоит выполняемая программа, и определяет, доступны ли они для обработки или же зависят от других команд, которые следует выполнить предварительно. Затем процессор определяет оптимальную последовательность обработки и выполняет команды наиболее эффективным способом.

Упреждающее выполнение (data forwarding)

Подразумевает начало исполнения инструкции до готовности всех операндов. При этом выполняются все возможные действия, и декодированная инструкция с одним операндом помещается в исполнительное устройство, где дожидается готовности второго операнда, выходящего с другого конвейера. С помощью этого метода процессор просматривает стоящие на очереди команды и выполняет те из них, к которым вероятно потребуется обратиться позже. Таким образом ряд команд процессор может выполнить заранее, а затем пользоваться результатами произведенных вычислений позже.

Сопроцессор

Набор команд х86, который мы с Вами уже обсуждали, имеет следующую особенность - он ориентирован на работу с целыми числами. Как быть, если процессору нужно извлечь квадратный корень, найти синус или логарифм? Естественно, что процессор может справиться с такой задачей, но, учитывая то, что он ориентирован на вычисления с целыми числами, выполнение такой операции займет у него много тактов.

В то же время Intel для все своих процессоров разрабатывает так называемый сопроцессор - кристалл, который тоже умеет выполнять команды, но не х86, а другие, и поддерживаемый сопроцессором набор команд (называемый х87) ориентирован на работу с числами с плавающей запятой, таким образом, он (сопроцессор) перечисленные выше задачи как раз и призван решать.

На заре развития PC считалось, что сопроцессор нужен небольшому количеству пользователей (действительно, зачем пользователю текстового редактора математические вычисления) и устанавливался в систему дополнительно; при желании пользователь мог отдельно приобрести сопроцессор и установить его в специальное гнездо на материнской плате. Сегодня ситуация полностью изменилась. Сегодня сопроцессор нужен абсолютно всем пользователям: "в наш век мультимедиа" когда компьютер все больше и больше способен обрабатывать реалистичную 3-х мерную графику, математические расчеты становятся неотъемлемым атрибутом любого мультимедиа приложения (например, современной игры). Поэтому достаточно давно сопроцессор стали устанавливать вместе с процессором на один кристалл. Действительно, раз сопроцессор все равно нужен всем пользователям, то его разумно встроить в процессор, а не изготавливать отдельно: разумеется, это будет дешевле.

Таким образом, современный процессор поддерживает два основных набора команд: х86 и х87. Могут ли производители процессоров отказаться от этих наборов команд? Нет! Тогда получившаяся система уже не будет программно совместима с PC, так как программное обеспечение, написанное для PC на таком процессоре, уже не будет работать! Поддержка этих двух наборов команд - залог программной совместимости. А могут ли производители процессоров создавать и добавлять в процессор новые наборы команд? Конечно. Но что нужно для того, чтобы программы стали работать эффективнее на процессоре с новым набором команд? Будет ли у старого приложения, которое проектировали еще до разработки нового набора команд какие-то преимущества от исполнения на процессоре с новым набором команд? Нет! Ведь программа - это не что иное, как последовательность команд процессору. Если в программе нет ни одной новой команды (а откуда ей там взяться, если в момент написания программы новых команд еще не придумали), то естественно никакой пользы из того, что процессор может исполнять новые команды, старое приложение не извлечет. Поэтому, когда в процессор добавляют новый набор команд, нужно понимать, что пока разработчики программного обеспечения не начнут писать программы с учетом нового набора команд НИКАКОЙ пользы от него не будет. А старым программам от нового набора команд уже никогда не будет пользы (разве что авторы перепишут старую программу с учетом нового набора команд).

Кэш - память

К важнейшим параметрам процессора относится так называемая кэш-память. Представим себе, как происходит обмен информацией между процессором и памятью. В большинстве случаев оперативная память не удовлетворяет потребностям современных процессоров в плане пропускной способности по данным, т.к работает на значительно более низких частотах. Современный процессор работает на частотах до 3 ГГц. Естественно, что при обмене с памятью процессор достаточно долгое время будет ждать прихода новых порций данных и таким образом простаивать. Для того чтобы этого избежать, между памятью и процессором устанавливают дополнительно небольшой объем очень быстрой памяти, работающей без задержек на частоте процессора. Такая память и называется кэш - память. В современном процессоре встроено некоторое количество такой памяти (32 - 512 Кб) и эта память обеспечивает снижение простоев процессора при операциях с оперативной памятью. Та кэш - память, которая установлена непосредственно в кристалле процессора, называется кэш - памятью первого уровня (или L1, Level1).

В переводе слово кэш (cache) означает «тайный склад», «тайник» («заначка»). Тайна этого склада заключается в его «прозрачности» — для программы он не представляет собой дополнительной адресуемой области памяти. Кэш является дополнительным быстродействующим хранилищем копий блоков информации из основной памяти, вероятность обращения к которым в ближайшее время велика. Кэш не может хранить копию всей основной памяти, поскольку его объем во много раз меньше основной памяти. Он хранит лишь ограниченное количество блоков данных и каталог (cache directory) — список их текущего соответствия областям основной памяти. Кроме того, кэшироваться может не вся память, доступная процессору.

При каждом обращении к памяти контроллер кэш-памяти по каталогу проверяет, есть ли действительная копия затребованных данных в кэше. Если она там есть, то это случай кэш-попадания (cache hit) , и данные берутся из кэш-памяти. Если действительной копии там нет, это случай кэш-промаха (cache miss) , и данные берутся из основной памяти. В соответствии с алгоритмом кэширования блок данных, считанный из основной памяти, при определенных условиях заместит один из блоков кэша. От интеллектуальности алгоритма замещения зависит процент попаданий и, следовательно, эффективность кэширования. Поиск блока в списке должен производиться достаточно быстро, чтобы «задумчивостью» в принятии решения не свести на нет выигрыш от применения быстродействующей памяти. Обращение к основной памяти может начинаться одновременно с поиском в каталоге, а в случае попадания — прерываться (архитектура Look aside). Это экономит время, но лишние обращения к основной памяти ведут к увеличению энергопотребления. Другой вариант: обращение к внешней памяти начинается только после фиксации промаха (архитектура Look Through), при этом теряется по крайней мере один такт процессора, зато экономится энергия.

В современных компьютерах кэш обычно строится по двухуровневой схеме. Первичный кэш (L1 Cache) встроен во все процессоры класса 486 и старше; это внутренний кэш . Объем этого кэша невелик (8-32 Кбайт). Для повышения производительности для данных и команд часто используется раздельный кэш (так называемая Гарвардская архитектура — противоположность Принстонской, использующей общую память для команд и данных). Вторичный кэш (L2 Cache) для процессоров 486 и Pentium является внешним (устанавливается на системной плате), а у Р6 располагается в одной упаковке с ядром и подключается к специальной внутренней шине процессора. Более подробно о том, что выгоднее - кэш L2 внутри процессора или на материнской плате, и как от количества кэша зависит производительность системы, мы еще неоднократно поговорим.

Кэш-контроллер должен обеспечивать когерентность (coherency) — согласованность данных кэш-памяти обоих уровней с данными в основной памяти, при том условии, что обращение к этим данным может производиться не только процессором, но и другими активными (busmaster) адаптерами, подключенными к шинам (PCI, VLB, ISA и т. д.). Следует также учесть, что процессоров может быть несколько, и у каждого может быть свой внутренний кэш. Контроллер кэша оперирует строками (cache line) фиксированной длины. Строка может хранить копию блока основной памяти, размер которого, естественно, совпадает с длиной строки. С каждой строкой кэша связана информация об адресе скопированного в нее блока основной памяти и об ее состоянии. Строка может быть действительной (valid) — это означает, что в текущий момент времени она достоверно отражает соответствующий блок основной памяти, или недействительной. Информация о том какой именно блок занимает данную строку (то есть старшая часть адреса или номер страницы), и о ее состоянии называется тегом (tag) и хранится в связанной с данной строкой ячейке специальной памяти тегов (tag RAM) . В операциях обмена с основной памятью обычно строка участвует целиком (несекторированный кэш), для процессоров 486 и старше длина строки совпадает с объемом данных, передаваемых за один пакетный цикл (для 486 это 4х4=16 байт, для Pentium 4х8=32 байт). Возможен и вариант секторированного (sectored) кэша, при котором одна строка содержит несколько смежных ячеек — секторов, размер которых соответствует минимальной порции обмена данных кэша с основной памятью. При этом в записи каталога, соответствующей каждой строке, должны раниться биты действительности для каждого сектора данной строки. Секторирование позволяет экономить память, необходимую для ранения каталога при увеличении объема кэша, поскольку большее количество бит каталога отводится под тег и выгоднее использовать дополнительные биты действительности, чем увеличивать глубину индекса (количество элементов) каталога.

Строки кэша под отображение блока памяти выделяются при промахах операций чтения, в Р6 строки заполняются и при записи. Запись блока, не имеющего копии в кэше, производится в основную память (для повышения быстродействия запись может производиться через буфер отложенной записи). Поведение кэш-контроллера при операции записи в память, когда копия затребованной области находится в некоторой строке кэша, определяется его алгоритмом, или политикой записи (Write Policy) . Существуют две основные политики записи данных из кэша в основную память: сквозная запись WT (Write Through) и обратная запись WB (Write Back) .

Политика WT предусматривает выполнение каждой операции записи (даже однобайтной), попадающей в кэшированный блок, одновременно и в строку кэша, и в основную память. При этом процессору при каждой операции записи придется выполнять относительно длительную запись в основную память. Алгоритм достаточно прост в реализации и легко обеспечивает целостность данных за счет постоянного совпадения копий данных в кэше и основной памяти. Для него не нужно хранить признаки присутствия и модифицированности — вполне достаточно только информации тега (при этом считается, что любая строка всегда отражает какой-либо блок, а какой именно — указывает тег). Но эта простота оборачивается низкой эффективностью записи. Существуют варианты этого алгоритма с применением отложенной буферированной записи, при которой данные в основную память переписываются через FIFO-буфер во время свободных тактов шины.

Политика WB позволяет уменьшить количество операций записи на шине основной памяти. Если блок памяти, в который должна производиться запись, отображен в кэше, то физическая запись сначала будет произведена в эту действительную строку кэша, и она будет отмечена как грязная (dirty), или модифицированная, то есть требующая выгрузки в основную память. Только после этой выгрузки (записи в основную память) строка станет чистой (clean), и ее можно будет использовать для кэширования других блоков без потери целостности данных. В основную память данные переписываются только целой строкой. Эта выгрузка контроллером может откладываться до наступления крайней необходимости (обращение к кэшированной памяти другим абонентом, замещение в кэше новыми данными) или выполняться в свободное время после модификации всей строки.

Технология изготовления

Под технологией изготовления понимают размер элементов в кристалле процессора. Когда о процессоре говорят, что он изготовлен с помощью определенного технологического процесса, например 0,25 мкм, то имеют ввиду, что размер одного отдельно взятого транзистора в кристалле процессора равен 0,25 мкм. В чем преимущество использования более мелкого технологического процесса? Таких преимуществ целый ряд.

Во-первых, чем мельче технология, тем меньшую площадь занимает ядро процессора и тем больше самих кристаллов может изготовить производитель из одной кремниевой пластины. Т.е., процессор, изготовленный по более мелкой технологии, имеет низшую себестоимость, чем процессор, изготовленный с применением более крупного техпроцесса и, таким образом, его розничная цена для пользователя будет ниже. Но этим не ограничиваются достоинства мелких техпроцессов. Далее, процессор, сделанный по более мелкой технологии, может работать на более высоких частотах (если вы изучали физику, то понимаете почему, если нет - придется верить на слово :)). Стало быть, рост частоты процессора возможен только в рамках существующего техпроцесса, затем нужно переходить на новый, более мелкий. И это еще не все. Чем мельче элементы процессора, тем меньшего напряжения питания требует кристалл.

Ну и что, скажете Вы? Какое пользователю до этого дело? Чем меньше напряжение питания процессора, тем меньше мощности он потребляет и соответственно меньше тепла выделяет. А потребление мощности современного процессора достаточно высоко, особенно на больших частотах, и процессор, потребляя, нередко как половина электрической лампочки, так же неслабо как лампочка и греется. Соответственно, чем меньше питание, тем меньше процессор потребляет электрической энергии и тем меньше греется. А это в свою очередь еще один фактор, позволяющий увеличивать частоту процессора. Ведь чем меньше процессор греется, тем на более высокой частоте его можно использовать, и он не будет перегреваться. В общем, важность вопроса о техпроцессе, с помощью которого изготовлен процессор, трудно переоценить.

Категория: FE(Железо) | Просмотров: 4679 | Добавил: AinCross | Теги: Элементы архитектуры процессора, устройство процессора | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Регистрация
Поиск
Пользовательский поиск
Реклама
Архив записей
Календарь
«  Февраль 2012  »
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
272829
Считалки
Яндекс.Метрика

Онлайн всего: 1
Гостей: 1
Пользователей: 0