Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Процессор персонального компьютера. Назначение функции, классификация процессора

Содержание:

Введение

Процессор персонального компьютера

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

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

Главными характеристиками ЦПУ являются: тактовая частота, производительность, энергопотребление, нормы литографического процесса, используемого при производстве (для микропроцессоров), и архитектура.

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

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

Первым этапом, затронувшим период с 1940-х по конец 1950-х годов, было создание процессоров с использованием электромеханических реле, ферритовых сердечников (устройств памяти) и вакуумных ламп. Они устанавливались в специальные разъёмы на модулях, собранных в стойки. Большое количество таких стоек, соединённых проводниками, в сумме представляли процессор. Отличительной особенностью была низкая надёжность, низкое быстродействие и большое тепловыделение.

Вторым этапом, с середины 1950-х до середины 1960-х, стало внедрение транзисторов. Транзисторы монтировались уже на близкие к современным по виду платы, устанавливаемые в стойки. Как и ранее, в среднем процессор состоял из нескольких таких стоек. Возросло быстродействие, повысилась надёжность, уменьшилось энергопотребление.

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

Четвёртым этапом, в начале 1970-х годов, стало создание, благодаря прорыву в технологии создания БИС и СБИС (больших и сверхбольших интегральных схем, соответственно), микропроцессора — микросхемы, на кристалле которой физически были расположены все основные элементы и блоки процессора. Фирма Intel в 1971 году создала первый в мире 4-разрядный микропроцессор 4004, предназначенный для использования в микрокалькуляторах. Постепенно практически все процессоры стали выпускаться в формате микропроцессоров. Исключением долгое время оставались только малосерийные процессоры, аппаратно оптимизированные для решения специальных задач (например, суперкомпьютеры или процессоры для решения ряда военных задач), либо процессоры, к которым предъявлялись особые требования по надёжности, быстродействию или защите от электромагнитных импульсов и ионизирующей радиации. Постепенно, с удешевлением и распространением современных технологий, эти процессоры также начинают изготавливаться в формате микропроцессора.

Сейчас слова «микропроцессор» и «процессор» практически стали синонимами, но тогда это было не так, потому что обычные (большие) и микропроцессорные ЭВМ мирно сосуществовали ещё, по крайней мере, 10—15 лет, и только в начале 1980-х годов микропроцессоры вытеснили своих старших собратьев. Тем не менее, центральные процессорные устройства некоторых суперкомпьютеров даже сегодня представляют собой сложные комплексы, построенные на основе микросхем большой и сверхбольшой степени интеграции.

Переход к микропроцессорам позволил потом создать персональные компьютеры, которые проникли почти в каждый дом.

Первым общедоступным микропроцессором был 4-разрядный Intel 4004, представленный 15 ноября 1971 года корпорацией Intel. Он содержал 2300 транзисторов, работал на тактовой частоте 92,6 кГц[1] и стоил 300 долл.

Далее его сменили 8-разрядный Intel 8080 и 16-разрядный 8086, заложившие основы архитектуры всех современных настольных процессоров. Из-за распространённости 8-разрядных модулей памяти был выпущен дешевый 8088, упрощенная версия 8086, с 8-разрядной шиной данных.

Затем последовала его модификация, 80186.

В процессоре 80286 появился защищённый режим с 24-битной адресацией, позволявший использовать до 16 Мб памяти.

Процессор Intel 80386 появился в 1985 году и привнёс улучшенный защищённый режим, 32-битную адресацию, позволившую использовать до 4 Гб оперативной памяти и поддержку механизма виртуальной памяти. Эта линейка процессоров построена на регистровой вычислительной модели.

Параллельно развиваются микропроцессоры, взявшие за основу стековую вычислительную модель.

За годы существования микропроцессоров было разработано множество различных их архитектур. Многие из них (в дополненном и усовершенствованном виде) используются и поныне. Например, Intel x86, развившаяся вначале в 32-битную IA-32, а позже в 64-битную x86-64 (которая у Intel называется EM64T). Процессоры архитектуры x86 вначале использовались только в персональных компьютерах компании IBM (IBM PC), но в настоящее время всё более активно используются во всех областях компьютерной индустрии, от суперкомпьютеров до встраиваемых решений. Также можно перечислить такие архитектуры, как Alpha, POWER, SPARC, PA-RISC, MIPS (RISC-архитектуры) и IA-64 (EPIC-архитектура).

В современных компьютерах процессоры выполнены в виде компактного модуля (размерами около 5×5×0,3 см), вставляющегося в ZIF-сокет (AMD) или на подпружинивающую конструкцию — LGA (Intel). Особенностью разъёма LGA является то, что выводы перенесены с корпуса процессора на сам разъём — socket, находящийся на материнской плате. Большая часть современных процессоров реализована в виде одного полупроводникового кристалла, содержащего миллионы, а с недавнего времени даже миллиарды транзисторов.

Глава 1. Назначение и Функции ЦП.

Главная задача любого центрального процессора – выполнение вычислительных процессов, с помощью которых устройствам передается набор команд, необходимых для выполнения. Команды находятся в ОЗУ ПК и считываются CPU оттуда напрямую. Соответственно, чем выше вычислительные мощности процессора, тем большим быстродействием обладает вся система.

Функции

Микропроцессор выполняет следующие функции:

· Выборку команд программы из основной памяти;

· Дешифрацию команд;

· Выполнение арифметических, логических и других операций, закодированных в командах;

· Управление пересылкой информации между регистрами (регистр-быстродействующая ячейка памяти) и основной памятью, между устройствами ввода/вывода;

· Отработку сигналов от устройств ввода/вывода, в том числе реализацию прерываний с этих устройств;

· Управление и координацию работы основных узлов МП.

Большинство современных процессоров для ПК основаны на той или иной версии циклического процесса последовательной обработки информации, изобретенного Джоном Фон Нейманом.

Этапы цикла выполнения:

1. процессор выставляет число, хранящееся в регистре счетчика команд, на шину адреса, и отдает памяти команду чтения;

2. выставленное число является для памяти адресом;

3. память, получив адрес и команду чтения, выставляет содержимое, хранящееся по этому адресу, на шину данных и сообщает о готовности;

4. процессор получает число с шины данных, интерпретирует его как команду (машинную инструкцию) из своей системы команд и исполняет ее;

5. если последняя команда не является командой перехода, процессор увеличивает на 1-цу число, хранящееся в счетчике команд. В результате там образуется адрес следующей команды;

6. снова выполняется п.1.

Микропроцессоры можно классифицировать по:

· принципу реализации (RISC, CISC, VLIW, MISC);

· внутренней структуре (гарвардская, фон-Неймана);

· системе команд (аккумуляторные, с регистрами общего назначения).

Глава 2. Классификация процессора.

2.1 Архитектура фон Неймана

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

Основы учения об архитектуре вычислительных машин заложил фон Нейман в 1944 году, когда подключился к созданию первого в мире лампового компьютера ЭНИАК. В процессе работы над ЭНИАКом в Институте Мура в Пенсильванском Университете во время многочисленных дискуссий фон Неймана с его коллегами Джоном Уильямом Мокли, Джоном Эккертом, Германом Голдстайном и Артуром Бёрксом, возникла идея более совершенной машины под названием EDVAC. Исследовательская работа над EDVAC продолжалась параллельно с конструированием ЭНИАКа.

В марте 1945 года принципы логической архитектуры были оформлены в документе, который назывался «Первый проект отчёта о EDVAC» — отчёт для Баллистической Лаборатории Армии США, на чьи деньги осуществлялась постройка ЭНИАКа и разработка EDVACа. Отчёт, поскольку он являлся всего лишь наброском, не предназначался для публикации, а только для распространения внутри группы, однако Герман Голдстайн — куратор проекта со стороны Армии США — размножил эту научную работу и разослал её широкому кругу учёных для ознакомления. Так как на первой странице документа стояло только имя фон Неймана[1], у читавших документ сложилось ложное впечатление, что автором всех идей, изложенных в работе, является именно он. Документ давал достаточно информации для того, чтобы читавшие его могли построить свои компьютеры, подобные EDVACу на тех же принципах и с той же архитектурой, которая в результате стала называться «архитектурой фон Неймана».

После завершения Второй Мировой войны и окончания работ над ЭНИАКом в феврале 1946 года команда инженеров и учёных распалась, Джон Мокли, Джон Экерт решили обратиться в бизнес и создавать компьютеры на коммерческой основе. Фон Нейман, Голдстайн и Бёркс перешли в Институт перспективных исследований, где решили создать свой компьютер «IAS-машина», подобный EDVACу, и использовать его для научно-исследовательской работы. В июне 1946 года они изложили свои принципы построения вычислительных машин в ставшей классической статье «Предварительное рассмотрение логической конструкции электронно-вычислительного устройства». С тех пор прошло более полувека, но выдвинутые в ней положения сохраняют свою актуальность и сегодня. В статье убедительно обосновывается использование двоичной системы для представления чисел, а ведь ранее все вычислительные машины хранили обрабатываемые числа в десятичном виде. Авторы продемонстрировали преимущества двоичной системы для технической реализации, удобство и простоту выполнения в ней арифметических и логических операций. В дальнейшем ЭВМ стали обрабатывать и нечисловые виды информации — текстовую, графическую, звуковую и другие, но двоичное кодирование данных по-прежнему составляет информационную основу любого современного компьютера.

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

Ещё одной революционной идеей, значение которой трудно переоценить, является принцип «хранимой программы». Первоначально программа задавалась путём установки перемычек на специальной коммутационной панели. Это было весьма трудоёмким занятием: например, для изменения программы машины ЭНИАК требовалось несколько дней, в то время как собственно расчёт не мог продолжаться более нескольких минут — выходили из строя лампы, которых было огромное количество. Однако программа может также храниться в виде набора нулей и единиц, причём в той же самой памяти, что и обрабатываемые ею числа. Отсутствие принципиальной разницы между программой и данными дало возможность ЭВМ самой формировать для себя программу в соответствии с результатами вычислений.

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

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

Принцип однородности памяти

Команды и данные хранятся в одной и той же памяти и внешне в памяти неразличимы. Распознать их можно только по способу использования; то есть одно и то же значение в ячейке памяти может использоваться и как данные, и как команда, и как адрес в зависимости лишь от способа обращения к нему. Это позволяет производить над командами те же операции, что и над числами, и, соответственно, открывает ряд возможностей. Так, циклически изменяя адресную часть команды, можно обеспечить обращение к последовательным элементам массива данных. Такой приём носит название модификации команд и с позиций современного программирования не приветствуется. Более полезным является другое следствие принципа однородности, когда команды одной программы могут быть получены как результат исполнения другой программы. Эта возможность лежит в основе трансляции — перевода текста программы с языка высокого уровня на язык конкретной вычислительной машины.

Принцип адресности

Структурно основная память состоит из пронумерованных ячеек, причём процессору в произвольный момент доступна любая ячейка. Двоичные коды команд и данных разделяются на единицы информации, называемые словами, и хранятся в ячейках памяти, а для доступа к ним используются номера соответствующих ячеек — адреса.

Принцип программного управления

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

По плану, первым компьютером, построенным по архитектуре фон Неймана, должен был стать EDVAC (Electronic Discrete Variable Automatic Computer) — одна из первых электронных вычислительных машин. В отличие от своего предшественника ЭНИАКа, это был компьютер на двоичной, а не десятичной основе. Как и ЭНИАК, EDVAC был разработан в Институте Мура Пенсильванского Университета для Лаборатории баллистических исследований (англ.) Армии США командой инженеров и учёных во главе с Джоном Преспером Экертом и Джоном Уильямом Мокли при активной помощи математика, однако до 1951 года EDVAC не был запущен из-за технических трудностей в создании надёжной компьютерной памяти и разногласий в группе разработчиков. Другие научно-исследовательские институты, ознакомившись с ЭНИАКом и проектом EDVAC, сумели решить эти проблемы гораздо раньше. Первыми компьютерами, в которых были реализованы основные особенности архитектуры фон Неймана, были:

1. прототип — Манчестерская малая экспериментальная машина — Манчестерский университет, Великобритания, 21 июня 1948 года;

2. EDSAC — Кембриджский университет, Великобритания, 6 мая 1949 года;

3. Манчестерский Марк I — Манчестерский университет, Великобритания, 1949 год;

4. BINAC — США, апрель или август 1949 года;

5. CSIR Mk 1 — Австралия, ноябрь 1949 года;

6. EDVAC — США, август 1949 года — фактически запущен в 1952 году;

7. CSIRAC — Австралия, ноябрь 1949 года;

8. SEAC — США, 9 мая 1950 года;

9. ORDVAC — США, ноябрь 1951 года;

10. IAS-машина — США, 10 июня 1952 года;

11. MANIAC I — США, март 1952 года;

12. AVIDAC — США, 28 января 1953 года;

13. ORACLE — США, конец 1953 года;

14. WEIZAC — Израиль, 1955 год;

15. SILLIAC — Австралия, 4 июля 1956 года.

В СССР первой полностью электронной вычислительной машиной, близкой к принципам фон Неймана, стала МЭСМ, построенная Лебедевым (на базе киевского Института электротехники АН УССР), прошедшая государственные приёмочные испытания в декабре 1951 года.

Совместное использование шины для памяти программ и памяти данных приводит к узкому месту архитектуры фон Неймана, а именно ограничению пропускной способности между процессором и памятью по сравнению с объёмом памяти. Из-за того, что память программ и память данных не могут быть доступны в одно и то же время, пропускная способность канала «процессор-память» и скорость работы памяти существенно ограничивают скорость работы процессора — гораздо сильнее, чем если бы программы и данные хранились в разных местах. Так как скорость процессора и объём памяти увеличивались гораздо быстрее, чем пропускная способность между ними, узкое место стало большой проблемой, серьёзность которой возрастает с каждым новым поколением процессоров.

Данная проблема решается совершенствованием систем кэширования, что в свою очередь усложняет архитектуру систем и увеличивает риск возникновения побочных ошибок (например, в 2017 году были обнаружены уязвимости Meltdown и Spectre, присутствовавшие в современных процессорах в течение десятилетий, но не обнаруженные ранее из-за сложности современных вычислительных систем и, в частности, их взаимодействия с кэш-памятью).

2.2 Конвейерная архитектура.

Конвейерная архитектура была введена в центральный процессор с целью повышения быстродействия. Обычно для выполнения каждой команды требуется осуществить некоторое количество однотипных операций, например: выборка команды из ОЗУ, дешифровка команды, адресация операнда в ОЗУ, выборка операнда из ОЗУ, выполнение команды, запись результата в ОЗУ. Каждую из этих операций сопоставляют одной ступени конвейера. Например, конвейер микропроцессора с архитектурой MIPS-I содержит четыре стадии:

• получение и декодирование инструкции,

• адресация и выборка операнда из ОЗУ,

• выполнение арифметических операций,

• сохранение результата операции.

После освобождения k-й ступени конвейера она сразу приступает к работе над следующей командой. Если предположить, что каждая ступень конвейера тратит единицу времени на свою работу, то выполнение команды на конвейере длиной в n ступеней займёт n единиц времени, однако в самом оптимистичном случае результат выполнения каждой следующей команды будет получаться через каждую единицу времени.

Действительно, при отсутствии конвейера выполнение команды займёт n единиц времени (так как для выполнения команды по-прежнему необходимо выполнять выборку, дешифровку и т. д.), и для исполнения m команд понадобится m*n единиц времени; при использовании конвейера (в самом оптимистичном случае) для выполнения m команд понадобится всего лишь m+n единиц времени.

Факторы, снижающие эффективность конвейера:

1. Простой конвейера, когда некоторые ступени не используются (например, адресация и выборка операнда из ОЗУ не нужны, если команда работает с регистрами).

2. Ожидание: если следующая команда использует результат предыдущей, то последняя не может начать выполняться до выполнения первой (это преодолевается при использовании внеочередного выполнения команд — out-of-order execution).

3. Очистка конвейера при попадании в него команды перехода (эту проблему удаётся сгладить, используя предсказание переходов).

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

2.3 Суперскалярность.

Суперскалярный процессор — процессор, поддерживающий так называемый параллелизм на уровне инструкций (то есть, процессор, способный выполнять несколько инструкций одновременно) за счёт включения в состав его вычислительного ядра нескольких одинаковых функциональных узлов (таких как АЛУ, FPU, умножитель (integer multiplier), сдвигающее устройство (integer shifter) и другие устройства). Планирование исполнения потока инструкций осуществляется динамически вычислительным ядром (не статически компилятором).

Способы увеличения производительности, которые могут использоваться совместно:

• Использование конвейера

• увеличение количества функциональных узлов процессора (суперскалярность)

• увеличение количества ядер (многоядерность)

• увеличение количества процессоров (многопроцессорность)

При использовании конвейера количество узлов остаётся прежним; увеличение производительности достигается за счёт одновременной работы узлов, ответственных за разные стадии обработки инструкций одного потока. При использовании суперскалярности увеличение производительности достигается за счёт одновременной работы большего количества одинаковых узлов, независимо обрабатывающих инструкции одного потока (в том числе, и большего количества конвейеров). При использовании нескольких ядер каждое ядро выполняет инструкции отдельного потока, причем каждое из них может быть суперскалярным и/или конвейерным. При использовании нескольких процессоров каждый процессор может быть многоядерным.

Иллюстрация работы суперскалярного двухконвейерного процессора, за один такт одновременно обрабатывающего две независимые инструкции. Функциональные узлы (модули, устройства, составные части) процессора:

• IF (англ. instruction fetch) — узел, ответственный за получение инструкции;

• ID (англ. instruction decode) — узел, ответственный за раскодирование инструкции;

• EX (англ. execute) — узел, ответственный за выполнение инструкции;

• MEM (англ. memory access) — узел, ответственный за доступ к памяти;

• WB (англ. register write back) — узел, ответственный за запись в регистр.

Обозначения:

• i — номер инструкции;

• t — время в тактах

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

По классификации Флинна одноядерные суперскалярные процессоры относят к группе процессоров SISD (англ. single instruction stream, single data stream — один поток инструкций, один поток данных). Подобные процессоры, поддерживающие инструкции для работы с короткими векторами, могут быть отнесены к группе SIMD (англ. single instruction stream, multiple data streams — один поток инструкций, несколько потоков данных). Многоядерные суперскалярные процессоры относят к группе MIMD (англ. multiple instruction streams, multiple data streams — несколько потоков инструкций, несколько потоков данных).

Первой в мире суперскалярной ЭВМ была CDC 6600 (1964 года), разработанная Сеймуром Крэем[1]. В СССР первой суперскалярной ЭВМ считался компьютер «Эльбрус», разработка которого велась в 1973—1979 годах в ИТМиВТ. Основным структурным отличием Эльбруса от CDC 6600 (кроме совершенно другой видимой программисту системы команд — стекового типа) являлось то, что все узлы в нём были конвейеризованы, как в современных суперскалярных микропроцессорах. На основании этого факта Б. А. Бабаян заявлял о приоритете советских ЭВМ в вопросе построения суперскалярных вычислительных машин, однако уже следующая за CDC 6600 машина фирмы Control Data, CDC 7600 (англ.), созданная в 1969 году, за 4 года до начала разработки «Эльбруса», имела конвейеризацию исполнительных устройств. Кроме того, несколько ранее (в 1967 году) фирмой IBM была выпущена машина IBM 360/91, использующая внеочередное исполнение, переименование регистров и конвейеризацию исполнительных устройств[2].

Первыми промышленными суперскалярными однокристальными (англ. single-chip) микропроцессорами стали микропроцессор MC88100 1988 года фирмы Motorola, микропроцессор Intel i960CA 1989 года и микропроцессор 29050 серии AMD 29000 1990 года. Первым же коммерчески широкодоступным суперскалярным микропроцессором стал i960, вышедший в 1988 году. В 1990-е годы основным производителем суперскалярных микропроцессоров стала фирма Intel.

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

Процессоры Pentium с микроархитектурой P5 (англ.) стали первыми суперскалярными процессорами архитектуры x86. Микропроцессоры Nx586, P6 Pentium Pro и AMD K5стали первыми суперскалярными процессорами, преобразующими инструкции x86 во внутренний код, который затем исполняли.

Если в процессе работы процессора несколько инструкций, обрабатываемых конвейером, независимы, то ядро может выполнить их одновременно. В суперскалярных системах решение о запуске инструкции на исполнение принимает само ядро процессора, что требует много ресурсов. В более поздних системах, таких, как Эльбрус-3 и Itanium, используется статпланирование, то есть решение о том, какие инструкции выполнять одновременно, принимает компилятор; компилятор находит независимые инструкции и объединяет их в одну длинную инструкцию (архитектура VLIW).

Узел суперскалярного процессора, называемый диспетчером инструкций (англ. instruction dispatcher, ID), ответственен:

• за чтение инструкций из памяти;

• за принятие решений о том, какие инструкции могут быть выполнены одновременно;

• за распределение инструкций между несколькими функциональными узлами процессора.

Узел ID должен распределять инструкции между узлами так, чтобы узлы работали без простоев. Первые суперскалярные процессоры имели по два АЛУ и по одному FPU. Современные процессоры содержат больше узлов. Например, процессор PowerPC 970 содержит четыре АЛУ, два FPU и два узла SIMD. Если узел ID не справится со своей работой (не нагрузит работой все узлы), производительность суперскалярного процессора будет не лучше производительности скалярного процессора.

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

Ускорение вычислений

В суперскалярных вычислительных машинах используется ряд методов для ускорения вычислений, характерных прежде всего для них, однако такие методики могут использоваться и в других типах архитектур:

• внеочередное исполнение;

• переименование регистров;

• объединение нескольких команд в одну.

Также используются общие методики увеличения производительности, применяемые и в других типах вычислительных машин:

• предсказатель переходов;

• кэш;

• конвейер (используется во всех современных суперскалярах);

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

Скалярные и суперскалярные процессоры

При выполнении одной инструкции скалярным процессором обрабатывается одно или два числа (скаляра). При выполнении одной инструкции векторным процессоромобрабатывается несколько чисел (вектор). При единовременном выполнении нескольких инструкций суперскалярным процессором одновременно обрабатывается несколько чисел (несколько скаляров).

Ограничения

Увеличение производительности суперскалярных процессоров ограничивается следующими факторами:

1. степенью внутреннего параллелизма инструкций;

2. сложностью поиска зависимостей между инструкциями и затратами времени на этот поиск; сложностью схемы переименования регистров и затратами времени на переименование;

3. обработкой инструкций ветвления.

Возможность одновременного выполнения инструкций зависит от степени внутреннего параллелизма инструкций — от того, насколько одни инструкции зависят от других. Одна инструкция зависит от другой инструкции, если использует ресурсы, также используемые другой инструкцией, или использует результат работы другой инструкции. Одновременное выполнение возможно в случаях, когда инструкции программы не зависят друг от друга. Например, инструкция «a = b + c» и инструкция «d = e + f» могут быть выполнены одновременно, так как результат вычисления ни одной из них не зависит от результата вычисления другой. Инструкция «a = b + c» и инструкция «b = e + f» взаимозависимы и не могут выполняться одновременно, так как результат их выполнения зависит от того, какая из них выполнится первой.

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

2.4 CISC .

(англ. complex instruction set computing или complex instruction set computer) — тип процессорной архитектуры, которая характеризуется следующим набором свойств:

• нефиксированное значение длины команды;

• арифметические действия кодируются в одной команде;

• небольшое число регистров, каждый из которых выполняет строго определённую функцию.

Методика построения системы команд CISC противостоит методике, применяемой в другом распространённом типе процессорных архитектур — RISC, где используется набор упрощённых инструкций.

Типичными представителями CISC-архитектуры являются процессоры на основе команд x86, процессоры Motorola MC680x0, процессоры мейнфреймов zSeries.

Благодаря распространённости процессоров архитектур x86 и x86-64 CISC-системы являются самыми распространённым в мире вычислительной техники — они доминируют в сегментах рабочих станций, персональных компьютеров, серверов начального и среднего уровня, а также мейнфреймов (RISC-системы превалируют в сегментах мобильных устройств, микроконтроллеров и Unix-серверов старшего уровня).

При этом поздние х86-процессоры (Intel Pentium 4, Pentium D, Core, AMD Athlon, Phenom), хотя и CISC-совместимы, но являются процессорами с RISC-ядром, и в формальном смысле считаются гибридными[1]. В таких гибридных CISC-процессорах CISC-инструкции преобразовываются в набор внутренних RISC-команд, при этом одна команда x86 может порождать несколько RISC-команд (в случае процессоров типа P6 — до четырёх RISC-команд в большинстве случаев), исполнение команд происходит на суперскалярном конвейере одновременно по несколько штук.

Основной недостаток CISC-архитектуры в сравнении с RISC — более сложный подход к распараллеливанию вычислений

2.5 RISC.

(англ. reduced instruction set computer — компьютер с набором коротких (простых, быстрых) команд) — архитектура процессора, в которой быстродействие увеличивается за счёт упрощения инструкций, чтобы их декодирование было более простым, а время выполнения — меньшим. Первые RISC-процессоры даже не имели инструкций умножения и деления. Это также облегчает повышение тактовой частоты и делает более эффективной суперскалярность (распараллеливание инструкций между несколькими исполнительными блоками).

Наборы инструкций в более ранних архитектурах, для облегчения ручного написания программ на языках ассемблеров или прямо в машинных кодах, а также для упрощения реализации компиляторов, выполняли как можно больше работы. Нередко в наборы включались инструкции для прямой поддержки конструкций языков высокого уровня. Другая особенность этих наборов — большинство инструкций, как правило, допускало все возможные методы адресации (т. н. «ортогональность системы команд (англ.)») — к примеру, и операнды, и результат в арифметических операциях доступны не только в регистрах, но и через непосредственную адресацию, и прямо в памяти. Позднее такие архитектуры были названы CISC (англ. Complex instruction set computer (Компьютер с комплексным набором команд)).

Однако многие компиляторы не задействовали все возможности таких наборов инструкций, а на сложные методы адресации уходит много времени из-за дополнительных обращений к медленной памяти. Было показано, что такие функции лучше исполнять последовательностью более простых инструкций, если при этом процессор упрощается и в нём остаётся место для большего числа регистров, за счёт которых можно сократить количество обращений к памяти. В первых архитектурах, причисляемых к RISC, большинство инструкций для упрощения декодирования имеет одинаковую длину и похожую структуру, арифметические операции работают только с регистрами, а работа с памятью идёт через отдельные инструкции загрузки (load) и сохранения (store). Эти свойства и позволили лучше сбалансировать этапы конвейеризации, сделав конвейеры в RISC значительно более эффективными и позволив поднять тактовую частоту.

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

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

Позднее было отмечено, что наиболее значимая характеристика RISC в разделении инструкций для обработки данных и обращения к памяти — обращение к памяти идёт только через инструкции load и store, а все прочие инструкции ограничены внутренними регистрами. Это упростило архитектуру процессоров: позволило инструкциям иметь фиксированную длину, упростило конвейеры и изолировало логику, имеющую дело с задержками при доступе к памяти, только в двух инструкциях. В итоге RISC-архитектуры стали называть также архитектурами load/store.[5]

Количество инструкций

Нередко слова «сокращённый набор команд» понимаются как минимизация количества инструкций в системе команд. В действительности, инструкций у многих RISC-процессоров больше, чем у CISC-процессоров.[6][7] Некоторые RISC-процессоры вроде транспьютеров фирмы INMOS (англ.) имеют наборы команд не меньше, чем, например, у CISC-процессоров IBM System/370; и наоборот — CISC-процессор DEC PDP-8 имеет только 8 основных и несколько расширенных инструкций.

На самом деле, термин «сокращённый» в названии описывает тот факт, что сокращён объём (и время) работы, выполняемый каждой отдельной инструкцией — как максимум один цикл доступа к памяти, — тогда как сложные инструкции CISC-процессоров могут требовать сотен циклов доступа к памяти для своего выполнения.[8]

Некоторые архитектуры, специально разработанные для минимизации количества инструкций, сильно отличаются от классических RISC-архитектур и получили другие названия: Minimal instruction set computer (MISC), Zero instruction set computer (ZISC), Ultimate RISC (также называемый OISC), Transport triggered architecture (TTA) и т. п.

Характерные особенности RISC-процессоров

• Фиксированная длина машинных инструкций (например, 32 бита) и простой формат команды.

• Специализированные команды для операций с памятью — чтения или записи. Операции вида Read-Modify-Write («прочитать-изменить-записать») отсутствуют. Любые операции «изменить» выполняются только над содержимым регистров (т. н. архитектура load-and-store).

• Большое количество регистров общего назначения (32 и более).

• Отсутствие поддержки операций вида «изменить» над укороченными типами данных — байт, 16-разрядное слово. Так, например, система команд DEC Alphaсодержала только операции над 64-разрядными словами, и требовала разработки и последующего вызова процедур для выполнения операций над байтами, 16- и 32-разрядными словами.

• Отсутствие микропрограмм внутри самого процессора. То, что в CISC-процессоре исполняется микропрограммами, в RISC-процессоре исполняется как обыкновенный (хотя и помещённый в специальное хранилище) машинный код, не отличающийся принципиально от кода ядра ОС и приложений. Так, например, обработка отказов страниц в DEC Alpha и интерпретация таблиц страниц содержалась в так называемом PALcode (Privileged Architecture Library), помещённом в ПЗУ. Заменой PALCode можно было превратить процессор Alpha из 64-разрядного в 32-разрядный, а также изменить порядок байтов в слове и формат входов таблиц страниц виртуальной памяти.

Первая попытка создать процессор с архитектурой «RISC» на микросхеме была предпринята «IBM» в 1975 году. Эта работа привела к созданию семейства процессоров «IBM 801», которые широко использовались в различных устройствах «IBM». 801-й, в конце концов, был выпущен в форме микросхемы под именем «ROMP» в 1981 году. «ROMP» расшифровывается как «Research OPD (Office Product Division) Micro Processor», то есть «исследовательский микропроцессор», разработанный в подразделении офисных разработок. Как следует из названия, процессор был разработан для «мини»-задач, и когда в 1986 году «IBM» выпустила на его основе компьютер «IBM RT-PC», он работал не слишком хорошо. Однако за выпуском 801-го процессора последовало несколько исследовательских проектов, в результате одного из которых появилась система «POWER».

Однако наиболее известные системы «RISC» были разработаны в рамках университетских исследовательских программ, финансировавшихся программой «DARPA VLSI».

RISC в Беркли

Проект «RISC» в Университете Беркли был начат в 1980 году под руководством Дэвида Паттерсона и Карло Секвина. Исследования основывались на использовании конвейерной обработки и агрессивного использования техники регистрового окна. В обычном процессоре имеется небольшое количество регистров, и программа может использовать любой регистр в любое время. В процессоре, использующем технологии регистрового окна, очень большое количество регистров (например, 128), но программы могут использовать ограниченное количество (например, только 8 в каждый момент времени).

Программа, ограниченная лишь восемью регистрами для каждой процедуры, может выполнять очень быстрые вызовы процедур: «окно» просто сдвигается к 8-регистровому блоку нужной процедуры, а при возврате из процедуры сдвигается обратно, к регистрам вызвавшей процедуры. (В обычном процессоре большинство процедур при вызове вынуждены сохранять значения некоторых регистров в стеке для того, чтобы пользоваться этими регистрами при исполнении процедуры. При возврате из процедуры значения регистров восстанавливаются из стека).

Проект «RISC» произвёл на свет процессор «RISC-I» в 1982 году. В нём было 44 420 транзисторов (для сравнения: в процессорах «CISC» того времени их было около 100 тыс.). «RISC-I» имел всего 32 инструкции, но превосходил по скорости работы любой одночиповый процессор того времени. Через год, в 1983 году, был выпущен «RISC-II», который состоял из 40 760 транзисторов, использовал 39 инструкций и работал в три раза быстрее «RISC-I». Проект RISC-Беркли оказал влияние на RISC-процессоры семейства SPARC и DEC Alpha.

RISC в Стэнфорде

Практически в то же время, в 1981 году, Джон Хеннесси начал аналогичный проект, названный «архитектура „MIPS“» в Стэнфордском университете. Создатель «MIPS» практически полностью сосредоточился на конвейерной обработке, попытавшись «выжать всё» из этой технологии. Конвейерная обработка использовалась и в других продуктах, некоторые идеи, реализованные в MIPS, позволили разработанному процессору работать значительно быстрее аналогов. Наиболее важным было требование выполнения любой из инструкций процессора за один такт. Это требование позволило конвейеру работать на гораздо больших скоростях передачи данных и привело к значительному ускорению работы процессора. С другой стороны, исполнение этого требования имело отрицательный побочный эффект в виде удаления из набора инструкций таких полезных операций, как умножение или деление.

В первые годы попытки развития архитектуры «RISC» были хорошо известны, однако оставались в рамках породивших их университетских исследовательских лабораторий. Многие в компьютерной отрасли считали, что преимущества процессоров «RISC» не проявятся при использовании в реальных продуктах из-за низкой эффективности использования памяти в составных инструкциях. Однако с 1986 года исследовательские проекты «RISC» начали выпускать первые работающие изделия. RISC-процессор из Стэнфорда был реализован в процессорах семейства Rxxxx компании MIPS Technologies.

Как оказалось в начале 1990-х годов, RISC-архитектуры позволяют получить большую производительность, чем CISC, за счёт использования суперскалярного и VLIW-подхода, а также за счёт возможности серьёзного повышения тактовой частоты и упрощения кристалла с высвобождением площади под кэш, достигающий огромных ёмкостей. Также RISC-архитектуры позволили сильно снизить энергопотребление процессора за счёт уменьшения числа транзисторов.

Первое время RISC-архитектуры с трудом принимались рынком из-за отсутствия программного обеспечения для них. Эта проблема была решена переносом UNIX-подобных операционных систем (SunOS) на RISC-архитектуры.

В настоящее время многие архитектуры процессоров являются RISC-подобными, к примеру, ARM, DEC Alpha, SPARC, AVR, MIPS, POWER и PowerPC. Наиболее широко используемые в настольных компьютерах процессоры архитектуры x86 ранее являлись CISC-процессорами, однако новые процессоры, начиная с Intel Pentium Pro (1995 г.), являются CISC-процессорами с RISC-ядром[10]. Они непосредственно перед исполнением преобразуют CISC-инструкции x86-процессоров в более простой набор внутренних инструкций RISC.

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

2.6 MISC.

Увеличение разрядности процессоров привело к идее укладки нескольких команд в одно большое слово (связку, bound). Это позволило использовать возросшую производительность компьютера и его возможность обрабатывать одновременно несколько потоков данных. Кроме этого, MISC использует стековую модель вычислительного устройства и основные команды работы со стеком языка Forth.

Процессоры с MISC, как и процессоры RISC, характеризуются небольшим числом чаще всего встречающихся команд. Вместе с этим принцип «очень длинных командных слов» (VLIW) обеспечивает выполнение группы непротиворечивых команд за один цикл работы процессора. Порядок выполнения команд распределяется таким образом, чтобы в максимальной степени загрузить маршруты, по которым проходят потоки данных. Таким образом архитектура MISC объединила вместе суперскалярную и VLIW-концепции. Компоненты процессора просты и работают на высоких частотах.

2.7 VLIW.

(англ. very long instruction word — «очень длинная машинная команда») — архитектура процессоров с несколькими вычислительными устройствами. Характеризуется тем, что одна инструкция процессора содержит несколько операций, которые должны выполняться параллельно. Фактически это «видимое программисту» микропрограммное управление, когда машинный код представляет собой лишь немного свёрнутый микрокод для непосредственного управления аппаратурой.

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

VLIW можно считать логическим продолжением идеологии RISC, расширяющей её на архитектуры с несколькими вычислительными модулями. Так же, как в RISC, в инструкции явно указывается, что именно должен делать каждый модуль процессора. Из-за этого длина инструкции может достигать 128 или даже 256 бит.

Рассмотрим работу модельного VLIW-процессора с двумя арифметическо-логическими устройствами (АЛУ). Пусть нам надо сложить четыре числа, находящиеся в регистрах R1, R2, R3 и R4. Тогда псевдокод может выглядеть так:

R5=R1+R2, R6=R3+R4 ; каждое АЛУ складывает свою пару чисел

R0=R5+R6, NOP ; первое АЛУ находит сумму, второе простаивает

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

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

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

Первые VLIW-процессоры были разработаны в конце 1980-х компаниями Cydrome (1984−1988), MultiFlow (1984—1990)[3], Culler.

В чистом виде архитектуру VLIW имеют процессоры TriMedia фирмы Philips и семейство DSP C6000 фирмы Texas Instruments.

Микропроцессор Transmeta Crusoe содержит слой двоичной совместимости с архитектурой x86, который компилирует инструкции во внутренний формат процессора (code morphing). Ядро Crusoe является VLIW-процессором.[5]

Микропроцессор Intel Itanium имеет 64-битную систему команд EPIC-процессора с явным параллелизмом, которая является одним из вариантов VLIW.

Многопроцессорный вычислительный комплекс «Эльбрус-3» и микропроцессоры серии «Эльбрус» («Эльбрус 2000», «Эльбрус S») являются VLIW-процессорами.

Процессоры, выпускаемые фирмой Tilera, также имеют VLIW-архитектуру.

VLIW также получила хорошее распространение на рынке GPU, так, видеопроцессоры AMD/ATI Radeon начиная с R600 и до Northern Islands включительно имеют VLIW-архитектуру.[8][9] Начиная с Southern Islands (первый квартал 2012) компания AMD/ATI отошла от подхода VLIW[10]

Современные системы на кристалле Qualcomm Snapdragon фирмы Qualcomm, предназначенные для использования в качестве центрального процессора телефонов и планшетов, содержат сопроцессоры с VLIW-архитектурой Hexagon (QDSP6). На нём могут выполняться алгоритмы обработки звука и мультимедиа, а также часть цифровой обработки беспроводных сигналов. Ежетактно могут запускаться на исполнение наборы из 4 инструкций; поддерживается аппаратная многопоточность (временное мультиплексирование, в частности, в некоторых версиях архитектуры — револьверного типа).

Заключение.

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

В первом разделе описаны назначение и функции ЦП. Дано определение ЦП, расписан цикл работы.

Во втором разделе описаны различные архитектуры ЦП:

Архитектура фон Неймана

Конвейерная архитектура

Суперскалярность

CISC

RISC

MISC

VLIW

История создания , принципы работы и различия

Список используемой литературы:

  1. Скотт Мюллер. Модернизация и ремонт ПК = Upgrading and Repairing PCs. — 17-е изд. — М.: Вильямс, 2007. — С. 59—241. — ISBN 0-7897-3404-4.
  2. Николай Алексеев. Кремниевая эволюция // ComputerBild : журнал. — 2011. — 10 октября (№ 22). — С. 80—85.
  3. Каган Борис Моисеевич Электронные вычислительные машины и системы. Третье издание. М.: Энергоатомиздат, 1991. — 590 с.
  4. Лазарев В. Г., Пийль Е. И. Синтез управляющих автоматов 1989.
  5. Modern Processor Design: Fundamentals of Superscalar Processors. 2004. ISBN 0070570647.