Файл: Процессор персонального компьютера. Назначение, функции, классификация процессоров.pdf
Добавлен: 01.04.2023
Просмотров: 466
Скачиваний: 2
Основные функции структурных частей процессора следующие:
Схема управления выборкой команд отвечает за получение новых инструкций для процессора из запоминающего устройства (оперативного или постоянного). В ранних процессорах все происходило по очереди, и пока схема управления выборкой команд не выберет адрес, команда не начинала выполняться. Однако в современных процессорах, как правило, выборка и выполнение команд идут параллельно – пока выбирается команда (или даже несколько команд), в это время выполняются предыдущие команды, которые были выбраны ранее. Естественно, для записи всех выбранных, но еще не выполненных команд нужна какая-то память внутри процессора, не очень большого объема.
Такая схема хорошо справляется с программами, в которых инструкции выполняются параллельно. Однако в программах часто встречаются и команды переходов, причем не ясно заранее, произойдет переход или нет. В таких случаях можно, например, попробовать предсказать, произойдет переход или нет (если предсказание окажется неверным, придется очистить очередь команд и начинать набор новой). Например, можно собирать статистику переходов и «не переходов» по каждой инструкции перехода, и в зависимости от того, каких случаев было больше, делать предсказание.
Развитием данной идеи стало использование специальной кэш-памяти, куда записываются результаты выборок команд, и которые затем могут использоваться при их выполнении. Чем больше объем кэш-памяти, тем больше команд могут туда поместиться, и тем быстрее они будут выполнены [4, с 64].
Арифметическо-логическое устройство (АЛУ), собственно, обрабатывает поступившую информацию. Например, оно может выполнять побитовые операции (И, ИЛИ, НЕ, исключающее ИЛИ), математические операции (сложение, вычитание). Именно быстродействие АЛУ, как правило, определяет общую производительность процессора. В современных процессорах может быть несколько АЛУ, работающих параллельно, что приводит к общему ускорению работы. Кроме того, существуют процессоры с уменьшенным набором команд (RISC-процессоры), что позволяет упростить АЛУ, и, тем самым, заставить его работать на более высокой тактовой частоте.
АЛУ отличаются друг от друга по количеству поддерживаемых операций и количеству тактов, которые нужны, чтобы их выполнить. Кроме того, имеет значение и разрядность АЛУ, например, если АЛУ работает только с 8-битными данными, то произвести на ней сложение двух 32-битных чисел можно, но это будет гораздо медленнее, чем если бы у нас была АЛУ, которая сразу могла работать с 32-битными числами.
Регистры процессора, по сути, представляют собой обычные ячейки памяти. Различие между ними только в том, что регистры процессора имеют свои, заранее заданные имена (и существуют специальные команды, которые к ним обращаются), а также тем, что регистры работают гораздо быстрее, чем любая оперативная память или даже кэш-память. Поэтому, в общем случае, чем больше у процессора регистров, или чем большего они размера, тем лучше, так как с их использованием можно писать более быстрые программы.
Существует несколько основных подходов к регистрам процессора. Некоторые разработчики (как, например, Intel), наделяют каждый регистр определенным значением. Например, чтобы вывести данные в порт, необходимо поместить их в специальный регистр, называемый «аккумулятором», а номер порта в регистр EDX. Чтобы скопировать строку в памяти с одного места на другое, нужно указать адрес исходной строки в регистре ESI, а адрес, куда нужно ее скопировать указать в регистре EDI. С одной стороны, это упрощает проектирование процессора и уменьшает время выполнения команд, с другой стороны, программист, который, например, хочет вывести данные в порт, но они у него находятся в другом регистре (не в аккумуляторе), должен будет выполнить еще одну команду – переслать свои данные в аккумулятор. Если же в это время аккумулятор у него будет занят чем-то важным, то могут потребоваться и дополнительные команды – временного сохранения и восстановления значения аккумулятора.
Другие разработчики, например, фирма ARM, разработавшая свою одноименную систему команд, не стала делить регистры по назначению, а сделала так, что любой регистр может использоваться для любой операции (хотя, как правило, два регистра все же, имеют особую специализацию – это указатель стека и счетчик команд). При этом достигается высокая гибкость, но процессор будет иметь более сложную структуру.
Можно поступить и третьим путем, как, например, поступила фирма MOS Technology в своем процессоре 6502. В нем было очень малое число регистров общего назначения (всего 3, называемых A, X, Y), однако программисту были доступны специальные команды для быстрой работы с первыми 256 байтами памяти. Таким образом, программист мог работать с ними практически так же, как с регистрами, и ему «казалось», что регистров у него много. Естественно, работа с памятью была гораздо медленнее, чем с «настоящими» регистрами, поэтому такая архитектура регистров в последнее время не используется.
Как правило, при любом подходе из вышеперечисленных, несколько регистров все же имеют узкую специализацию, и их можно использовать только определенным образом. Это такие регистры, как:
- Регистр состояния – в нем содержится информация о выполнении предыдущей команды. Например, был ли результатом выполнения предыдущей команды 0, произошло ли переполнение, и так далее. Обычно данный регистр используется для переходов по условию. Например, «если в регистре состояния записано, что результат предыдущей команды равен нулю, то перейти на адрес 401567»;
- Регистр счетчика команд – в нем хранится адрес текущей выполняемой инструкции в памяти. Изменяется он, как правило, только последовательно, по мере исполнения программы, либо командами перехода, однако в некоторых старых процессорах (например, DEC PDP-11) этим регистром можно было управлять как обычным регистром общего назначения (например, занеся в него определенный адрес можно было добиться перехода на него, если в команде написать, что данные хранятся по адресу данного регистра, то процессор понимал, что в памяти они располагаются сразу после самой команды, и так далее);
- Регистр указателя стека – в нем хранится адрес текущего положения стека в памяти. При выполнении команд «сохранить в стек» или «восстановить из стека» он указывает, по какому адресу нужно сохранить данные или восстановить их. Как правило, стек настраивается либо в начале каждой программы (как это было, например, в MS-DOS), либо настраивается операционной системой, и программист не заботится о его значении;
- В различных процессорах могут существовать и дополнительные регистры. Что именно означает каждый из них нужно узнавать в спецификации на каждый конкретный процессор. Например, в новых процессорах фирмы Intel существуют регистры MSR, регистры CR, DR, и множество других. Как правило, они очень специфичны, и используются очень редко.
Схема управления прерываниями обрабатывает поступающие на процессор запросы прерываний. Прерывания это сигналы для процессора, чтобы он выполнил некие действия, которые нужно выполнить немедленно, и они не могут подождать, пока текущая программа завершит свою работу. Например, это нажатие кнопок на клавиатуре, движение мыши, изменение системных часов, некоторые данные, поступающие с какого-то прибора. В этом случае программа, которая в данный момент выполняется, временно приостанавливается, и ее состояние записывается в стек. Схема управления прерываниями, затем, получает адрес программы, которую нужно вызвать для обработки этого «критического события» и вызывает ее. После ее завершения (а программа обработки прерывания должна быть короткой, так как иначе программа будет задержана на очень долгое время, и с компьютером станет невозможно работать), состояние программы восстанавливается, и она продолжает работать, как ни в чем не бывало. Кроме прерываний, поступающих от внешних устройств, существуют также и программные прерывания – прерывания, которые программа запрашивает самостоятельно. Например, она может это сделать для вызова функций операционной системы или программы, находящейся в ПЗУ. Кроме того, иногда прерывания используются для выполнения программы по шагам (отладки), когда прерывание выполняется после каждой выполненной команды, после чего обработчик прерывания (отладчик) выдает текущее состояние программы.
Схема управления прямым доступом к памяти служит для организации режима работы внешних устройств и памяти без участия процессора. В этом случае некоторое устройство может прочитать или изменить какие-либо адреса памяти без необходимости просить это сделать процессор (например, прерыванием). Как правило, это используется для ускорения работы с внешними устройствами и для разгрузки
процессора [1, с. 175].
Логика управления соединяет все узлы процессора воедино, и заставляет работать их слаженно. Она синхронизирует работу процессора со внешними сигналами и шинами.
4 Классификация процессоров
Процессоры можно классифицировать по целому ряду параметров – например по разрядности, тактовой частоте, или даже фирме-производителю. Ниже мы рассмотрим несколько примеров такой классификации:
4.1 Фирма производитель
Когда персональные компьютеры только появились, их выпускало достаточно много фирм, многие из которых в настоящее время не существуют (по крайней мере, как производители процессоров), например, Zilog, Cyrix или VIA. Однако в последнее время, если не принимать во внимание мобильные процессоры, то основных фирм, производящих процессоры осталось две – Intel и AMD.
На первый взгляд, они отличаются довольно слабо – поддерживают практически одинаковую систему команд, являются 64-битными, и могут выполнять одни и те же программы без их переработки под конкретную архитектуру. Однако на самом деле, между ними немало отличий.
Прежде всего, сильно отличаются «глобальные цели» данных компаний – если цель Intel – создать самые мощные, дорогие и производительные процессоры (в том числе и для персональных компьютеров), то цель AMD – создать более дешевые, и хоть и не такие производительные, но достаточные для обычного человека процессоры. Таким образом, они ориентируются на разные сегменты – если Intel ориентирована главным образом, на «геймеров» - игроков в компьютерные игры, которым важно выжать из компьютера все, на что он способен, то AMD лучше подходит для обычного офисного работника, которому нужно писать документы и выходить в Интернет.
К тому же, при этом компьютер будет стоить гораздо дешевле.
Однако все вышенаписанное было правдой вплоть до 2019 года, когда произошло одно довольно знаковое событие – выпуск фирмой AMD нового поколения процессоров Ryzen 2. В этих процессорах было 64 ядра, причем AMD удалось существенно улучшить их взаимодействие друг с другом. В результате, по оценке экспертов [12], процессор работает даже быстрее, чем лучшие процессоры Intel (чего не было уже очень давно), в то время как он все еще остается более дешевым, и имеет более низкую производительность в пересчете на каждое ядро. Исходя из этого будет интересно наблюдать, во что выльется данная ситуация, и поможет ли это фирме AMD упрочить свои позиции на рынке процессоров.
4.2 Техпроцесс
Понятно, что чем больше возможностей умеет делать конкретный процессор, тем больше транзисторов необходимо, чтобы его создать. Однако максимальное их количество также ограничено – чем больше транзисторов будет в процессоре, тем больше они будут нагреваться, и, после некоторого порога, процессор просто не сможет работать, потому что мгновенно перегреется.
Для того, чтобы разместить в процессоре как можно больше транзисторов, необходимо уменьшать их размеры. Приблизительные размеры одного транзистора на чипе называются (с некоторыми оговорками [14]) техпроцессом.
Очевидно, что во-первых, техпроцесс – это довольно небольшое число (один транзистор в процессоре мы вряд ли сможем увидеть), а во-вторых, что чем меньше техпроцесс, тем больше транзисторов можно разместить в процессоре, тем лучше и быстрее он будет работать, тем больше функций и ядер в него можно добавить, однако тем сложнее и дороже он будет в производстве (так как чем меньше объект, тем сложнее с ним работать).
Достаточно долго (все 70-е и 80-е годы) техпроцесс измерялся в микрометрах. В 1990-х годах он стал меньше одного микрометра, и чтобы не работать с дробными числами, его стали выражать в нанометрах.
К 1997 году (в процессоре Intel Pentium MMX) техпроцесс составлял всего 350 нанометров. С 1997 по 2002 год техпроцесс продолжал быстро сокращаться, и в итоге стал ниже 100 нм.
Затем снижение техпроцесса замедлилось, так как стоимость новых техпроцессов начала очень быстро возрастать. К настоящему времени (2019 год) большинство процессоров Intel выпускаются по техпроцессу 14 нанометров, а AMD уже освоила более новый техпроцесс – 10 нм. Фирма Intel пыталась перейти на новый техпроцесс в течение двух лет (2017-2018), однако так и не смогла, и в итоге заявила, что вместе с AMD будет стремиться освоить сразу же техпроцесс в 7 нанометров [6].
В то же время, все компании (как AMD и Intel, так и производители мобильных процессоров) уже вовсю строят планы по покорению техпроцессов 6, 5, и даже 3 нанометра, однако когда появятся первые процессоры по данной технологии пока неизвестно. Также неизвестно, появится ли когда-нибудь процесс, измеряемый в «пикометрах».
Для конечного потребителя техпроцесс достаточно важен, так как, как правило, даже если в процессоре практически ничего не изменилось, однако он построен по более новому техпроцессу, он может работать чуть быстрее, и греться чуть меньше. Однако при этом это можно оценить и не прибегая к цифрам техпроцесса – можно посмотреть на цифры тепловыделения, тактовую частоту и количество ядер. Поэтому можно сказать, что хотя техпроцесс – достаточно важная характеристика, однако для конечного потребителя проще отследить улучшение характеристик процессора по более «важным» для него вещам.