Ahpub - Компьютер Шаг за Шагом

Энциклопедия процессорных терминов. Как устроен процессор компьютера Принцип работы процессора компьютера

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

1. История появления процессора

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

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

В 1969 г. компания Busicom заказала двенадцать микросхем у Intel , которые они планировали использовать в собственной разработке – в настольном калькуляторе. Уже в то время разработчиков Intel посещала идея заменить несколько микросхем одной. Идею одобрило руководство корпорации, поскольку подобная технология позволяла существенно сократить расходы на производстве микросхем, при этом у специалистов появилась возможность сделать процессор универсальным для использования его в других вычислительных устройствах.

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

7. Сравнение фирм-производителей Intel и AMD

Американская компания под названием Intel была основана в 1968 году, тогда как ее основной конкурент – компания AMD – появилась спустя год.

То, что AMD явила себя свету на год позже, нежели Intel, в существенной мере отразилось на их соперничестве. Первые процессоры от компании AMD представляли собой копии процессоров, выпущенных компанией Intel, однако этот факт не помешал AMD разработать первый 16-ядерный процессор . При этом в 2005 обычному пользователю был предложен первый 2-ядерный процессор , носящий название AMD Athlon 64 X2 .

Двухъядерные процессоры Core 2 Duo, разработанные компанией Intel, на год позже появились на соответствующем рынке, при этом стоимость процессоров AMD и сегодня намного дешевле процессоров от Intel.

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

Процессоры AMD – отличный вариант для игровых ПК и в ситуациях, не требующих высокой производительности аппаратной начинки.

8. Кэш-память процессора

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

Оперативная память реализуемых сегодня компьютеров, составляет от 1 Гб, при этом кэш процессоров не превышает 8 Мб. Как видно из приведенных данных, разница в этих разновидностях памяти довольно существенная. Несмотря на это, даже указанного объема достаточно для обеспечения нормального быстродействия всей системы. Немалый интерес у пользователей сегодня вызывают процессоры с двухуровневой кэш-памятью: L1 и L2. Память первого уровня меньше памяти второго уровня и необходима она для хранения инструкций. При этом второй уровень за счет того, что он больше, используется для непосредственного хранения данных. У многих процессоров на данный момент кэш второго уровня общий.

9. Функции и технологии процессоров: MMX, SSE, 3DNow!, Hyper Threading

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

3DNow!, ММХ, SSE, SSE2, SSE3 – технологии, оптимизирующие работу с объемными данными и мультимедийными файлами;

В процессорах AMD с целью защиты от ряда вирусов предусмотрена технология NX-bit (No Execute), при этом в процессорах Intel имеется аналогичная технология XD (Execute Disable Bit);

Cool"n"Quiet (в AMD), ТМ1/ТМ2, С1Е, EIST (в Intel) снижается потребление электрической энергии;

В технологии AMD64 или ЕМТ64 (для процессоров Intel) нуждаются 64-битные инструкции;

Одновременное выполнение нескольких потоков команд в некоторых процессорах Intel подразумевает наличие технологии НТ (Hyper-Threading Technology).

10. Многоядерность процессоров

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

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

Перечень преимуществ многоядерного процессора:

Появляется возможность распределить работу приложений по нескольким ядрам;

Процессы, нуждающиеся в интенсивных вычислениях, работают существенно быстрее;

Увеличивается скорость отклика приложений;

Снижение потребления электрической энергии;

Более продуктивное использование ресурсоемких мультимедийных программ;

Более комфортная работа пользователей ПК.

11. Производство процессоров

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

Сегодня такие ведущие производители процессоров, как AMD и Intel стараются наладить выпуск продукции, задействовав при этом максимально возможные сегменты рынка, максимально сократив возможный ассортимент кристаллов. Отличным тому подтверждением являются процессоры Intel Core 2 Duo. В линейку упомянутой продукции входят три процессора с разными кодовыми наименованиями: Merom, предназначенный для мобильных устройств, Conroe – для настольных версий, Woodcrest – для серверных версий. У всех трех процессоров одна технологическая основа, что дает возможность производителю принимать решение, будучи на последнем этапе производства. Так, например, если на рынке будут более востребованы мобильные процессоры, компания сфокусируется на выпуске модели Socket 479. Если возрастет потребность в настольных моделях, то компания Intel упакует кристаллы, необходимые для Socket 775. В случае роста спроса на серверные процессоры, все вышеуказанные действия будут применены для Socket 771.

12. Маркировка и кодовые названия процессоров

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

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

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

13. Гнезда (socket) для процессоров

Сокет процессора в переводе с английского языка означает «разъем» или «гнездо» . Если применить этот термин к компьютеру, то гнездом называется место установки центрального процессора. Каждая модель процессора снабжена своим вариантом разъема, связанно это с тем, что технологии изготовления процессоров совершенствовались, а потому модернизировалась их архитектура, количество транзисторов, гнезда и т.д.

Сокет центрального процессора имеет вид щелевого или гнездового разъёма, предназначенного для того, чтобы упростить процесс установки центрального процессора. Использование разъёмов значительно упрощает замену процессора для последующего ремонта или модернизации ПК.

14. Охлаждение процессора

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

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

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

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

О необходимости смазать устройство можно узнать характерному и постепенно увеличивающемуся шуму от кулера.

15. Неисправности и ошибки в процессорах

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

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

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

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

В состав ЦП входит небольшое количество различных элементов. Каждый из них выполняет свое действие, происходит передача данных и управления. Обычные пользователи привыкли отличать процессоры по их тактовой частоте, количеству кэш-памяти и ядрам. Но это далеко не все, что обеспечивает надежную и быструю работу. Стоит уделить отдельное внимание каждому компоненту.

Архитектура

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

Но многие под архитектурой процессора привыкли подразумевать немного другое значение. Если рассматривать ее с точки зрения программирования, то она определяется по его возможности выполнять определенный набор кодов. Если вы покупаете современный CPU, то скорее всего он относится к архитектуре x86.

Ядра

Основная часть CPU называется ядром, в нем содержатся все необходимые блоки, а также происходит выполнение логических и арифметических задач. Если вы посмотрите на рисунок ниже, то сможете разобрать как выглядит каждый функциональный блок ядра:

  1. Модуль выборки инструкций. Здесь осуществляется распознавание инструкций по адресу, который обозначается в счетчике команд. Число одновременного считывания команд напрямую зависит от количества установленных блоков расшифровки, что помогает нагрузить каждый такт работы наибольшим количеством инструкций.
  2. Предсказатель переходов отвечает за оптимальную работу блока выборки инструкций. Он определяет последовательность исполняемых команд, нагружая конвейер ядра.
  3. Модуль декодирования. Данная часть ядра отвечает за определения некоторых процессов для выполнения задач. Сама задача декодирования очень сложная из-за непостоянного размера инструкции. В самых новых процессорах таких блоков встречается несколько в одном ядре.
  4. Модули выборки данных. Они берут информацию из оперативной или кэш-памяти. Осуществляют они именно выборку данных, которая необходима на этот момент для исполнения инструкции.
  5. Управляющий блок. Само название говорит уже о важности данного компонента. В ядре он является главнейшим элементом, поскольку производит распределение энергии между всеми блоками, помогая выполнять каждое действие вовремя.
  6. Модуль сохранения результатов. Предназначен для записи после окончания обработки инструкции в RAM. Адрес сохранения указывается в исполняющейся задаче.
  7. Элемент работы с прерываниями. ЦП способен выполнять сразу несколько задач благодаря функции прерывания, это позволяет ему останавливать ход работы одной программы, переключаясь на другую инструкцию.
  8. Регистры. Здесь хранятся временные результаты инструкций, данный компонент можно назвать небольшой быстрой оперативной памятью. Часто ее объем не превышает несколько сотен байт.
  9. Счетчик команд. Он хранит в себе адрес команды, которая будет задействована на следующем такте процессора.

Системная шина

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

Кэш-память

Быстродействие ЦП зависит от его возможности максимально быстро выбирать команды и данные из памяти. За счет кэш-памяти сокращается время выполнения операций благодаря тому, что она играет роль временного буфера, обеспечивающего мгновенную передачу данных CPU к ОЗУ или наоборот.

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

Сокет (разъем)

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

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

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

Заметим, что энциклопедия не заменяет, а дополняет другие статьи общего характера (например «Современные десктопные процессоры архитектуры x86: общие принципы работы») и аналитику по частным вопросам (например «О разрядности процессоров» и «Методы увеличения вычислительной производительности»). Тут приводятся лишь краткие описания, но не по отдельным терминам, а почти по всем, которые могут встретиться - кроме очень редких и устаревших.

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

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

Энциклопедия постоянно уточняется и пополняется (дата последнего обновления - в конце) и на данный момент содержит 234 термина (без учёта переводов и синонимов).

Общие положения и вычислительные парадигмы

processor (обработчик), процессор - часть компьютера, обрабатывающая данные. Управляется программой или потоком - последовательностью закодированных . Физически представляет собой одну . Работает на определённой частоте, означающей количество тактов в секунду. За каждый такт процессор делает некоторую часть полезной работы. По умолчанию под процессором понимается .

coprocessor, сопроцессор - специализированный (например, вещественный или периферийный), обрабатывающий данные только какого-то одного вида, но быстрее, чем это смог бы сделать , за счёт оптимизированного устройства. Может быть как отдельной , так и частью ЦП.

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

word, слово - в общем случае - последовательность информации длиной 2 N байт, где целое N>0. По содержимому может быть данными, адресом или. Иногда используется как мера разрядности (полуслово, двойное слово и т. п.) наряду с битами и байтами. В обозначает 2-байтовое данное.

instruction, инструкция, команда - элементарная часть программы процессора. Команда задаёт над данными и/или адресами. Наиболее часто используемые команды делятся на такие виды:

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

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

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

integer, целый, целочисленный - относящийся к целым числам. Имеют разрядность 1, 2, 4 и 8 байт. Как правило, к ним также причисляют логический тип данных, описывающий набор бит. Обработка целых проще и быстрее, чем .

float («плавающий»), FP (floating point: плавающая точка), вещественный - относящийся к вещественным числам (точнее, к их рациональному подмножеству с плавающей запятой). Имеют точности . Обработка вещественных труднее и дольше, чем .

GPR (general purpose register), РОН (регистр общего назначения) - регистр для скалярных данных или адресов, используемый для наиболее частых команд.

ISA (instruction set architecture: архитектура набора команд) - описание процессора как математической модели, каковой он представляется программисту. Состоит из описаний всех исполняемых команд, имеющихся регистров, режимов и пр. структур и состояний, доступных программисту. Основывается на одной или более . Без уточнения термин «архитектура» часто обозначает .

microarchitecture, микроархитектура - реализация в виде блок-схемы процессора, каждый блок которой выполняет обособленную роль или функцию и состоит из массивов логических вентилей («экземпляров») и связывающих их линий. Для каждой ISA, как правило, есть несколько микроархитектур, отличающихся скоростью исполнения отдельных команд и всей программы, сложностью и ценой получаемого процессора, потребляемой энергией на каждую операцию и т. п. Большинство описываемых микроархитектурой блоков и состояний «прозрачны» для программиста (т. к. не указаны в ISA) и нужны для автоматического улучшения какой-либо численной характеристики - скорости, надёжности, потребления энергии и т. д. Часто обозначается термином « ».

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

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

CISC (complex instruction set computer: вычислитель со сложным набором команд) - парадигма архитектуры, максимально удобной для эффективного (по числу ) программирования (в противоположность ): процессор имеет большое число команд (сотни), исполняющих в т. ч. сложные действия с аргументами разной разрядности, местоположения и типа. Сложные команды исполняются как последовательность простых, для чего процессору нужен . Команды имеют переменную длину; по сравнению с RISC-ЦП код получается более компактным как по числу команд, так и по общей длине. За счёт разнообразия и сложности команд, меньшего числа архитектурных регистров и (часто) формата операндов программирование CISC-ЦП для компилятора сложнее, чем RISC-ЦП, но для человека-программиста это не обязательно. CISC-ЦП для достижения производительности RISC-ЦП на одинаковой частоте должен быть сложнее.

SIMD (single instruction, multiple data: одна команда - много данных), векторность - парадигма параллелизма на уровне данных: помимо скалярных, имеются векторные команды для обработки аргументов-векторов, объединяющих несколько отдельных скалярных значений. Результат векторной команды - чаще всего также вектор. Применяется во всех современных архитектурах для удобной реализации высокоскоростной обработки, когда над большим объёмом данных требуется совершить одно действие. SIMD также подразумевает наличие команд элементов вектора без изменения их содержимого.

EPIC (explicitly parallel instruction computing: вычисление с явным параллелизмом команд) - парадигма, упрощающая микроархитектуру за счёт явного указания «связок» команд, которые могут одновременно отправиться на исполнение при готовности требуемых данных. Применяется только к -архитектурам, хотя теоретически применима и к . Для обработки данных общего назначения не подходит из-за относительно большого размера кода и сложности эффективного программирования и исполнения на любом алгоритме, поэтому для ЦП малопригодна, но применяется в некоторых и .

GPGPU (general purpose GPU: вычисления общего назначения на ГП) - программы обработки неграфических данных, алгоритмы которых удобны для эффективного исполнения не только на ЦП, но и на ГП. Составление таких алгоритмов сложней из-за бо́льших ограничений ГП по сравнению с ЦП.

APU (accelerated processing unit: блок ускоренной обработки) - термин AMD для обозначения процессора с или ядрами общего назначения архитектуры и встроенным , архитектура которого допускает относительно простую обработку неграфических данных с помощью .

SoC (system on chip: система на чипе) - микросхема, на единственном или основном которой находятся или ядра ЦП, и/или и контроллеры памяти и ввода-вывода. (Остальные кристаллы в случае их присутствия являются памятью.) Используется вместо нескольких отдельных с похожей совокупной функциональностью для уменьшения массы, размеров, сложности монтажа, потребления энергии и цены конечного устройства.

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

VM (virtual memory: виртуальная память) - технология, позволяющая каждой исполняемой программе в многозадачной среде использовать отдельное непрерывное адресное пространство, причём большего размера, чем имеется физической оперативной памяти, а также реализовать защищённое исполнение с изоляцией программ и их данных друг от друга. Виртуальная память физически размещается в ОЗУ и файле подкачки (своп-файле) на массовом носителе. В режиме работы с виртуальной памятью программы оперируют .

VA (virtual address: виртуальный адрес) - адрес для , который до использования необходимо пересчитать (транслировать) в в блоках и . Каждый виртуальный адрес попадает в какую-либо , описываемую дескриптором («описателем») размером 4 (в 32-битном режиме ЦП) или 8 (в 64-битном) байт, содержащим физический адрес, тип и права доступа страницы или их группы. 512 или 1024 дескриптора формируют таблицу трансляции, а сами таблицы объединяются операционной системой в 2–4-ярусную древовидную структуру, уникальную для каждой задачи. Ссылка на корневую таблицу дерева передаётся в ЦП при переключении на новую задачу, каждая из которых таким образом получает отдельное виртуальное адресное пространство.

page, страница - элементарный блок памяти при выделении программе. Младшие биты обозначают смещение внутри страницы. Остальные биты задают начальный (базовый) адрес, который требуется транслировать. Для архитектуры чаще всего используются страницы по 4 КБ, но также доступны «большие» страницы: для 32-битного режима - на 4 МБ, а для 64-битного - на 2 МБ и 1 ГБ.

Команды x86 и их наборы

PadLock - поднабор команд для ускорения операций (де)шифрования для всех популярных шифров, включая AES. Также включает аппаратный генератор случайных чисел, применяемый для криптографических программ. Применяется в ЦП VIA.

CPUID (CPU identify: идентификация ЦП) - команда выдачи «паспорта процессора» с перечислением всех основных качественных и количественных характеристик, включая поддерживаемые поднаборы команд.

MSR (model-specific register: специфический для модели регистр) - регистр специального назначения для аппаратной настройки какой-либо функции или режима ЦП. В x86-ЦП MSR-регистров несколько сотен, причём их количество и использование определяются и не зависят от ЦП. Для пользовательских программ чаще всего недоступны.

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

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

jmp (jump: прыжок), переход - команда передачи управления, указывающая адрес другой команды, исполняемой после перехода. Различные варианты переходов реализуют структурные конструкции программы. Виды переходов:

stall, ступор - останов работы или одной или нескольких его из-за нехватки какого-либо ресурса. Ступор одной стадии в течение одного такта называется пузырь (bubble). Во избежание ступоров и приближения достижимой производительности к её теоретическому максимуму применяются многочисленные методы поддержания конвейера в максимально загруженном состоянии.

front-end («передняя часть»), фронт конвейера - часть , читающая и обрабатывающая , подготавливая их для исполнения в в виде . Включает в себя от до или расположенных после него и/или мопов (в случае их присутствия). В терминах Intel буфер мопов отделяет фронт и тыл, так что запись в него является последней стадией фронта.

back-end («задняя часть»), тыл конвейера - часть , обрабатывающая данные исполнением от . Включает в себя от чтения из и мопов в до их . Непосредственно обработка данных осуществляется только , однако к тылу относят также остальные части , и планировщик(и). , и прочие блоки подсистемы памяти номинально не являются частью конвейера, несмотря на то, что при обработке доступов в память LSU должен сработать до отставки затребовавшей доступ команды.

µop, mop, микрооперация, моп - -подобная (неверно названная ) во внутреннем формате ЦП, исполняющая одно или несколько элементарных действий. Команды -ЦП переводятся в мопы в , причём каждая простая команда генерирует один моп, а сложная - несколько. В RISC-ЦП декодер состоит лишь из простых блоков, выполняющих несложную подготовку команд для исполнения. Одна CISC-команда порождает в среднем более одного мопа, а число конвейера до и после декодера чаще всего одинаково, что создаёт дисбаланс нагрузок на стадии. Для его исправления применяются и .

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

macrofusion, макрослияние - надстройка над , позволяющая одним закодировать две (редко больше) , чтобы увеличить значение на 1 (более одного микрослияния за такт -ЦП не допускают). Варианты сливаемых команд:

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

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

OoO (out-of-order), внеочерёдность - для команд при обработке : обработка в порядке, наиболее удобном ядру в данный момент. Применяется к конвейера: отдельно к исполнительной части () и доступу в память (). Требует наличия аппаратной структуры, хранящей оригинальный порядок мопов (исходя из последовательности породивших их команд) для их .

OoOE (out-of-order execution), внеочерёдное исполнение - концепция , применяемая при исполнении мопов: моп запускается на выполнение, когда готовы все его и целевое , даже если декодированные до него мопы ещё не исполнены. Является одним из видов для команд.

HT (Hyper-Threading), гиперпоточность - «тонкая» версия в ЦП Intel: каждый такт каждая стадия или их группа выбирает один из двух или оба потока команд или мопов, исходя из готовности ресурсов для каждого из них.

MCMT (multicluster multithreading: многокластерная многопоточность) - ускоряющее производительность решение AMD, промежуточное между и : исполняющий два потока делится на параллельно работающие кластеры по несколько стадий каждый, причём одни кластеры разделяют свои ресурсы между потоками (как в SMP), а другие выделяются им монопольно (как в SMT).

IPC (instructions per clock), команд (-а, -ы) за такт - мера производительности , его или отдельного . Пиковая величина IPC измеряется при выполнении потока или , независимых друг от друга по данным, что позволяет по возможности осуществить их одновременное исполнение.

CPI (clocks per instruction), такт (-а, -ов) на команду - величина, обратная . Применяется для удобства, когда IPC

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

throughput, пропуск, темп, ПС (пропускная способность) - о командах: обратная пропускная способность - значение при исполнении мопа(ов) данной команды для отдельного , либо всей исполнительной конвейера. ФУ с пропуском в 1 CPI является полноконвейерным, т. е. принимающим на исполнение новый моп каждый такт, при том, что может быть более 1 такта. ФУ с пропуском 2 является полуконвейерным, а с пропуском, (почти) равным задержке, - неконвейерным. Дробные значения пропуска команд получаются при исполнении. Например, 0,5 означает наличие либо двух одинаковых конвейерных (для исполнения данной команды) ФУ, либо четырёх полуконвейерных, а 1,5 - наличие двух одинаковых с CPI=3.

ILD (instruction length decoder: декодер длин команд), длиномер - определитель длин -команд. В -ЦП анализирует их , и байты modR/M. В ЦП Intel длиномер является частью , измеряя длины «на лету». В большинстве ЦП AMD он работает с командами при их загрузке из в , сохраняя разметку байтов команд в дополнительных битах в L1I, считываемых предекодером при загрузке .

translator («переводчик»), транслятор - часть , обрабатывающая простые и частые команды без использования . В -ЦП Intel есть 1–3 простых транслятора (на 1 меньше числа конвейера), каждый из которых переводит команду в 1 моп за такт, и 1 сложный транслятор, переводящий команду в 1–4 мопа/такт. Как правило, число генерируемых трансляторами мопов не больше числа путей. Большинство ЦП AMD имеют 3–4 транслятора, каждый из которых переводит команду в 1–2 мопа/такт. команды обрабатываются парами любым транслятором, но не более одной пары за такт.

mROM, µROM («микроПЗУ») - энергонезависимое хранилище для размером в несколько сотен килобит. читает микропрограммы из микроПЗУ по несколько мопов за такт (согласно числу конвейера). Для исправления ошибок содержимое может корректироваться прямым программированием или.

mop buffer, буфер мопов - последняя стадия конвейера, принимающая от декодера и/или и отправляющая их в . По терминологии Intel называется IDQ (instruction decode queue: декодирования команд). В ЦП Intel мопов (как и кэш) может работать в режиме блокировки цикла, освобождая на время его исполнения остальные стадии фронта для простоя, накопления мопов команд после цикла или работы над другим потоком (в процессорах с ). Обнаружение и блокировка цикла в IDQ осуществляется блоком LSD (loop stream detector: детектор циклического потока).

dispatcher, диспетчер - блок конвейера, архитектурно занимающий бо́льшую часть , включая его первую и последнюю стадии. Принимая от или , диспетчер осуществляет , мопов, приём сигналов о завершении мопов и породивших их команд. диспетчер проще: он не делает переименование и размещение и заменяет собой .

register rename, переименование регистров - привязка номера архитектурного -приёмника, описываемого в и указанного в , к аппаратному регистру (должна точнее называться перенумерацией). Является первой стадией и выполняется перед мопа. Аппаратных регистров в 4–10 раз больше, чем архитектурных того же типа, что позволяет реализовать одновременное исполнение мопов, до переименования ссылавшихся на один регистр, за счёт удаления ложных зависимостей по операндам. Не смотря на поочерёдность операции, диспетчер может не только переименовать несколько регистров за такт (учитывая, что в мопе приёмник максимум один, не считая регистра ), но и несколько раз за такт переименовать один и тот же архитектурный регистр. Часто также переименовываются 4–6 важнейших флагов и регистр управления вещественными вычислениями. Аппаратные регистры иногда бывают вдвое меньше архитектурных - в этом случае переименование делается для старшей и младшей половин архитектурного. В продвинутых мопы некоторых команд (обмен, копирование и обнуление) при работе только с регистрами уже на этой стадии и до размещения не доходят.

ROB (reorder buffer: «буфер переупорядочивания») - вопреки названию (термин Intel), хранит оригинальный (программный) порядок мопов, поэтому правильней называется RQ (retire(ment) queue: ; термин AMD). Число мопов в ROB определяет т. н. OoO-окно - диапазон, внутри которого мопы могут . Ячейка в ROB хранит урезанную версию мопа, в которой оставлены лишь необходимые планировщику поля. В частности, если подключен к хранящему , то ROB после исполнения мопов хранит копии их результатов; если к ссылочному - то он хранит ссылки на результаты в ; ни одна из версий не хранит и другую информацию, нужную для мопа.

SC, scheduler, планировщик - логический анализатор, принимающий мопы от , планирующий и производящий их и фиксирующий их завершение (указывая об этом диспетчеру для породивших их команд). Планирование основано на определении зависимости мопов по операндам и отслеживании занятости ресурсов . Виды и свойства:

Ссылочный планировщик Хранящий планировщик
Не хранит и не перемещает мопы и данные в резервации. Хранит в резервации мопы и данные, сдвигая их при каждом запуске.
Манипулирует только мопами и номерами регистров, отслеживая и записи в таблице привязки. Манипулирует мопами и уже известным (в т. ч. упреждающим) содержимым регистров, перехватывая результаты, возвращаемые исполненными мопами.
Имеет резервацию, рассчитанную на все . Имеет либо одну многопортовую резервацию, либо несколько однопортовых (с распределением ФУ между ними).
мопы привязаны номерами регистров к . Размещаемые мопы привязаны номерами регистров к ; разместитель записывает в резервацию уже известные значения их операндов из .
После исполнения мопа возвращает его диспетчеру со ссылкой на результат. После исполнения мопа копирует в резервацию записанный им в упреждающий РФ результат и возвращает моп с результатом диспетчеру.

issue («выпуск»), запуск - передача из в для . Если планировщик допускает хранение в своей и мопов (не требуя их разделения при ), то такие мопы запускаются по нескольку раз. Вычислительные мопы, читающие аргумент из памяти, сначала попадают в , затем в и, наконец, в нужное для обработки. Мопы, сохраняющие аргумент в памяти (и которые в не бывают вычислительными), должны в любом порядке запуститься в AGU и LSU. Каждый получатель слитого мопа интерпретирует его по-своему, исполняя одну операцию. После выполнения последней из них моп удаляется из резервации, а планировщик сообщает о возможности удалённого мопа.

EX (execution), исполнение - одна или несколько стадий исполнения мопов, содержащая все (при сюда не включены). Фактическая длина этой стадии определяется для каждого мопа числом стадий обрабатывающего его ФУ.

EU (execution unit: исполнительный блок), FU (functional unit: функциональный блок), ФУ, функциональное устройство - блок , исполняющий и обрабатывающий данные и адреса. Имеет управления для приёма мопов из , 2–3 порта приёма аргументов и порт выдачи результата. Чаще всего именуется по названию исполняемой в нём команды или группы похожих команд. Физически находится в . Для наиболее частых команд может содержать более одного ФУ нужного типа. Производительность ФУ определяется исполняемых команд.

bypass («обход»), шунт, шлюз - коммутаторы и связанные с ними шины передачи данных внутри (шунт) или между ним и другими блоками (шлюз). Каждый шунт связывает одну из шин записи со всеми шинами чтения, позволяя использовать в следующем такте результат только что исполненного мопа - в обход записи в и чтения из . Шлюзы на шинах записи ведут в другие тракты и , а на шинах чтения - от них и от (для подачи констант, включая адреса и адресные смещения).

retire, отставка, commit («совершение») - последняя стадия конвейера и , «легализующая» результаты команд, мопы которых находятся в . Для этого диспетчер (в зависимости от типа ) либо переносит результат мопа из ROB в , либо корректирует используемую для таблицу ссылок на , чтобы записанный мопом архитектурный регистр указывал на верный физический. Т. к. во диспетчер мопы возвращаются из планировщика не обязательно в программном порядке, в отставку заранее завершившийся моп может уйти, только если все предыдущие внесённые в ROB мопы уже отставлены или уходят в данном такте. Многомоповые команды могут отставиться только после отставки всех своих мопов. Отказ в отставке возможен в случае обнаружения:

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

exception, исключение, исключительная ситуация - событие при обработке , требующее аварийной реакции:

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

Блоки процессора

BTB (branch target buffer: буфер целей ветвлений) - таблица адресов, на которые нацелены часто встречаемые . Позволяет сделать , не читая сами команды. Пополняется (с вытеснением старых адресов) при исполнении нового или «забытого» перехода. (Однако в некоторых ЦП целевые адреса условных переходов попадают в BTB, только если переход .)

GBHR (global branch history register: регистр глобальной истории ветвлений) - регистр сдвига, хранящий поведение нескольких последних исполненных условных переходов. При исполнении перехода GBHR смещается, вытесняя самый «старый» бит и добавляя новый в зависимости от поведения перехода: 1 - , 0 - «пропущен». Используется для индексации .

BHT (branch history table: таблица истории ветвлений) - таблица 2-битных счётчиков, предсказывающих поведение переходов по 4-позиционной шкале (от «наверняка будет пропущен» до «наверняка будет взят»). Индексируется кодирующей хэш-функцией, использующей биты и адреса перехода.

RSB (return stack buffer: буфер стека возврата) - часть BPU, буферизующая адреса возвратов из подпрограмм, вызванных последними. (Отдельного стека для адресов возврата в x86 нет - они находятся в общем стеке среди аргументов и результатов подпрограмм.) Для x86-ЦП имеет размер 12–24 адреса.

ALU (arithmetic-logic unit), АЛУ, арифметико-логическое устройство - тесно связанный набор , исполняющий за 1 такт простые арифметические, логические и некоторые невычислительные команды над операндами, являясь, таким образом, наиболее универсальным и часто используемым исполнительным блоком. Виды:

FPU (floating point unit: «устройство плавающей точки») - блок вещественных операций, состоящий из нескольких ФУ. Виды:

Иногда под FPU понимается весь векторно-вещественный .

MUL (multiplier: умножитель) - ФУ, выполняющее умножения. Является самым сложным и большим видом ФУ, поэтому иногда для экономии места (в ущерб скорости) делается половинной разрядности (относительно наибольших операндов).

MAD, MADD (multiplier-adder: умножитель-сумматор) - тесно спаренные и , выполняющие слитое умножение-сложение и умножение-вычитание быстрее и точнее пары отдельных ФУ. Исполняет команды , отдельное умножение и (иногда) отдельные сложение и вычитание.

DIV (divider: делитель) - сложное неконвейерное ФУ для выполнения деления (а для вещественных чисел - и извлечения квадратного корня). Часто тесно связан с . Иногда для экономии вместо двух специализированных делителей имеется один универсальный - для целых и вещественных чисел.

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

driver, драйвер - в микроэлектронике: оконечное устройство внешней шины (до памяти, периферии или процессоров), выполняющее приём и передачу сигналов и физическую защиту от перенапряжения. Наборы драйверов расположены по краю .

Подсистема памяти

cache, «$», кэш - программно недоступная буферная память, используемая процессором для ускорения обмена с оперативной памятью (улучшением ) заменой обращений к ОЗУ обращениями к самому кэшу в случае кэш- . В ЦП имеет 2–4-уровневую иерархию, причём оперативная память может считаться дополнительным (последним) уровнем. Как правило, каждый следующий уровень кэша относительно текущего (чаще всего начиная с ) имеет…

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

mop cache (кэш мопов) - часть конвейера, находящаяся перед стадией . Кэширует из команд , потому также называется кэшем 0-го уровня для мопов (L0m). В терминологии Intel называется DIC (decoded instruction cache: кэш декодированных команд) или DSB (decode stream buffer: буфер потока декодера).

L1I (level 1 for instructions: 1-й уровень для команд) - кэш для команд, подключенный к конвейера. Записывается только со стороны , со стороны конвейера только читается. Почти всегда 1-портовый, разрядность совпадает с размером . Иногда освобождается от в пользу .

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

L3 (level 3: 3-й уровень) - кэш для данных и команд, используемый при в (других структур с тремя и более уровнями иерархии в процессорах нет). Иногда называется LLC (last level cache: кэш последнего уровня), имея ввиду, что после промаха в нём идёт обращение в память. Является общим для (в ЦП с - модулей). Иногда работает на частоте, меньшей, чем у ядер. В ЦП имеет по одному на , начиная от простого 1-банкового устройства.

miss, промах - ситуация не нахождения нужной информации при обращении в кэш. Антоним . Если текущий уровень кэша не последний - далее происходит обращение к следующему, иначе - к памяти. Возвращённые оттуда данные отдаются инициатору обращения и заполняют (fill) текущий уровень кэша, вытесняя (evict) из выбранного старую, наименее нужную информацию - причём если она пока больше нигде не записана, то её надо сохранить в следующем уровне. Почти все кэши являются неблокирующими (non-blocking), т. е. продолжают принимать запросы, пока обрабатываются промахи. Число удерживаемых промахов определяется размером специального , при заполнении которого кэш блокирует обработку запросов.

line, строка - основная единица ёмкости кэша размером 32–128 байт. Обмен данными между разными уровнями кэша и между кэшем и памятью почти всегда происходит целыми строками.

associativity, ассоциативность - индексируемость не адресом, а содержимым. Для наборно-ассоциативного и ассоциативность это показатель числа. При прочих равных, кэш/TLB с бо́льшей ассоциативностью имеет меньшую частоту , но бо́льшие площадь , потребление энергии (на байт) и (иногда) задержку. Полная ассоциативность означает, что кэш/TLB состоит из единственного (это также применимо к ). Может принимать значения, не равные целой степени двойки. Кэш с ассоциативностью 1 также называется кэшем с прямым отображением (direct-mapped).

port, порт - для кэша: интерфейс между кэшем и его контроллером, управляющим обменом данных. Истинная N-портовая структура позволяет одновременно осуществлять N обращений по разным адресам, однако это требует больших затрат транзисторов и применяется только в . Для кэша используется более простая псевдомногопортовая схема: кэш делится на несколько , каждый из которых работает независимо, но обслуживает лишь свою часть адресов. Как правило, 2-портовому для минимизации адресных конфликтов между портами достаточно 8 банков.

bank, банк - часть кэша, организованная как отдельный 1- или 2- кэш, обслуживающий часть адресов. Многобанковая схема используется для создания псевдомногопортового кэша.

tag («метка»), тэг - вспомогательное слово, хранящее адрес записанной в кэша информации, состояние строки (согласно ) и её популярность (используется при вытеснении старых данных новыми после ). Физически все теги кэша хранятся в отдельном массиве и считываются либо одновременно с выборкой кэша, либо (для экономии энергии в ущерб скорости) до выборки. кэш имеет N-портовый массив тегов или N 1-портовых массивов с одинаковым содержимым.

TLB (translation look-aside buffer: буфер-шпаргалка для трансляции) - кэш дескрипторов страниц , заменяющий трансляцию в более быстрым считыванием. Обращение в TLB нужно для обращения в физически адресуемый кэш (чаще всего - ) и происходит либо одновременно с чтением и выборкой этого кэша, либо (реже) - до. При в TLB полученный физический адрес используется для проверки наличия нужной информации в выбранном теге кэша. Часто несколько TLB организуются в иерархию: TLB L1I и TLB L1D обслуживают запросы к кэшам и , при обращаются во TLB бо́льшего размера (общий TLB L2 или отдельные TLB L2I и TLB L2D), а при промахе в нём (них) виртуальный адрес поступает в . TLB L2 не обслуживают кэш L2, а только промахи в TLB L1: трансляция адресов нужна только для доступа к кэшам L1, а при промахе в них обращения в остальные кэши и память используют уже готовый физический адрес. Часто TLB делится на несколько массивов: самый большой - для страниц по 4 КБ, меньшие - для страниц по 2/4 МБ и 1 ГБ (может вовсе отсутствовать). TLB L1 часто . кэшу требуется N-портовый TLB или N 1-портовых TLB с одинаковым содержимым.

PMH (page miss handler: обработчик промахов страниц) - транслятор в , также проверяющий и права доступа. Активируется при промахе в последнего уровня, читает из кэша или памяти дескриптор нужной страницы, обновляет им TLB и возвращает физический адрес для обращения в кэш. Включает собственный небольшой и .

LSU (load-store unit: блок загрузки-сохранения), MEU (memory unit: блок памяти) - блок интерфейса между конвейера и . Содержит чтений и записей с отслеживанием их зависимостей и функциями, и. Иногда неточно называется MOB (memory order buffer, «буфер порядка» [записей в] память), имея ввиду очередь программного порядка записей - часть LSU, аналогичную для .

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

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

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

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

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

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

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

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

non-exclusive («неисключающая»), mainly inclusive («в основном включающая»), свободная - комбинированная политика работы кэша, допускающая (необязательное) хранение копий некоторых строк кэшей меньших уровней.

WT (write-through), сквозная запись - проведение записи в кэш следующего уровня или память сразу после записи в данный уровень. Упрощает взаимодействие кэшей (при большом темпе записей и отсутствии - в ущерб производительности).

WB (write-back: «обратная запись»), отложенная запись - проведение записи в кэш следующего уровня или память много позже записи в данный уровень (например, при вытеснении этой строки при ). Усложняет взаимодействие кэшей, но позволяет осуществить . Не путать с стадией конвейера.

WC (write combine: слияние записи) - операция замены нескольких записей по одинаковому адресу последней из этих записей и/или замены нескольких записей по последовательным адресам одной записью совокупной длины. Выполняется в очереди записи и отдельном , увеличивая производительность при большом темпе записей.

coherency, когерентность - согласование содержимого кэшей в многоядерной и/или многопроцессорной системе с помощью протокола когерентности. Разные протоколы описывают 4–5 состояний кэша, определяющих действия при её локальных и удалённых чтениях и записях, а также (по первым буквам состояний) название самого протокола (чаще всего - MESI, MOESI и MESIF). С числом ядер растут сложность соблюдения когерентности и синхронизирующий её -трафик.

snoop (подсматривание), снуп - проверка состояния строки с данным адресом в кэше другого ядра (относительно инициатора проверки). Используется для реализации . В многопроцессорных системах снуп-запросы могут занимать значительную долю всего межпроцессорного трафика, заметно снижая производительность.

buffer, буфер - общее название структуры, разделяющей поток данных (в т. ч. между стадиями ). Если буфер содержит более одного, то оформлен в виде или памяти и в таком виде позволяет сглаживать неравномерность поступления потока данных относительно его приёма.

IO, I/O (input-output), ввод-вывод - общее название операций или блоков для обмена даннымимежду процессором и периферией.

BIU (bus interface unit: блок шинного интерфейса) - контроллер шины между процессором и северным мостом чипсета или межпроцессорной шины.

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

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

Почему мы подняли тему процессоров? Все просто. За последние десять лет произошла настоящая революция в мире мобильных устройств.

Между этими устройствами всего 10 лет разницы. Но Nokia N95 тогда нам казалась космическим девайсом, а на ARKit сегодня мы смотрим с определенным недоверием

А ведь все могло бы сложиться иначе и потрепанный Pentium IV так бы и остался пределом мечтаний рядового покупателя.

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

1. С чего все началось

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

Вместо микросхем в 40-е годы XX века использовались электромеханические реле , дополненные вакуумными лампами. Лампы выполняли роль диода, регулировать состояние которого можно было за счет понижения или повышения напряжения в цепи. Выглядели такие конструкции так:

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

2. Появление транзисторов

Первые полевые транзисторы появились еще в 1928 году. Но мир изменился лишь после появления так называемых биполярных транзисторов , открытых в 1947-м.

В конце 40-х физик-экспериментатор Уолтер Браттейн и теоретик Джон Бардин разработали первый точечный транзистор. В 1950 его заменил первый плоскостной транзистор, а в 1954 году небезызвестный производитель Texas Instruments анонсировал уже кремниевый транзистор.

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

Да, это немного сложно, поэтому давайте копнем немного глубже и разберемся с теоретической частью.

3. Как работает транзистор

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

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

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

Задача компьютера заключается в том, чтобы представить электрический ток в виде чисел.

И если раньше задачу переключения состояний выполняли неповоротливые, громоздкие и малоэффективные электрические реле, то теперь эту рутинную работу взял на себя транзистор.

С начала 60-х транзисторы стали изготавливать из кремния, что позволило не только делать процессоры компактнее, но и существенно повысить их надежность.

Но сначала разберемся с диодом

Кремний (он же Si – "silicium" в таблице Менделеева) относится к категории полупроводников, а значит он, с одной стороны, пропускает ток лучше диэлектрика, с другой, – делает это хуже, чем металл.

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

Задача транзистора заключается в усилении слабого сигнала за счет дополнительного источника питания.

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

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

Так стали использовать 5-валентную примесь фосфора, за счет чего получили транзисторы n-типа . Наличие дополнительного электрона позволило ускорить их движение, повысив пропуск тока.

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

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

Теперь электроны, находящиеся в n-части, будут стремится перейти в дырки, расположенные в p-части. При этом n-сторона будет иметь незначительный отрицательный, а p-сторона – положительный заряды. Образованное в результате этого «тяготения» электрическое поле –барьер, будет препятствовать дальнейшему перемещению электронов.

Если к диоду подключить источник питания таким образом, чтобы "–" касался p-стороны пластины, а "+" – n-стороны, протекание тока будет невозможно из-за того, что дырки притянутся в минусовому контакту источника питания, а электроны – к плюсовому, и связь между электронами p и n стороны будет утеряна за счет расширения объединенного слоя.

Но если подключить питание с достаточным напряжением наоборот, т.е. "+" от источника к p-стороне, а "–" – к n-стороне, размещенные на n-стороне электроны будут отталкиваться отрицательным полюсом и выталкиваться на p-сторону, занимая дырки в p-области.

Но теперь электроны притягивает к положительному полюсу источника питания и они продолжаются перемещаться по p-дыркам. Это явление назвали прямым смещением диода .

Диод + диод = транзистор

Сам по себе транзистор можно представить как два, состыкованных друг к другу диода. При этом p-область (та, где размещены дырки) у них становится общей и именуется «базой».

У N-P-N транзистора две n-области с дополнительными электронами – они же «эмиттер» и «коллектор» и одна, слабая область с дырками – p-область, именуемая «базой».

Если подключить источник питания (назовем его V1) к n-областям транзистора (независимо от полюса), один диод получит обратное смещение и транзистор будет находиться в закрытом состоянии .

Но, как только мы подключим еще один источник питания (назовем его V2), установив "+" контакт на «центральную» p-область (базу), а "–" контакт на n-область (эмиттер), часть электронов потечет по вновь образованной цепи (V2), а часть будет притягиваться положительной n-областью. В результате, электроны потекут в область коллектора, а слабый электрический ток будет усилен.

Выдыхаем!

4. Так как все-таки работает компьютер?

А теперь самое главное .

В зависимости от подаваемого напряжения, транзистор может быть либо открыт , либо закрыт . Если напряжение недостаточное для преодоления потенциального барьера (того самого на стыке p и n пластин) – транзистор будет находится в закрытом состоянии – в состоянии «выключен» или, говоря языком двоичной системы – "0".

При достаточно напряжении транзистор открывается, а мы получаем значение «включен» или "1" в двоичной системе.

Такое состояние, 0 или 1, в компьютерной индустрии назвали «битом».

Т.е. мы получаем главное свойство того самого переключателя, который открыл человечеству путь к компьютерам!

В первом электронном цифровом вычислителе ЭНИАК, а проще говоря – первом компьютере, использовалось около 18 тысяч ламп-триодов. Размер компьютера был сопоставим с теннисным кортом, а его вес составлял 30 тонн.

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

Момент 1 . Итак, мы определились с тем, что такое бит . Но с его помощью мы можем лишь получить две характеристики чего-либо: или «да» или «нет». Для того, чтобы компьютер научился понимать нас лучше, придумали комбинацию из 8 битов (0 или 1), которую прозвали байтом .

Используя байт можно закодировать число от нуля до 255. Используя эти 255 чисел – комбинаций нулей и единиц, можно закодировать все что угодно.

Момент 2. Наличие чисел и букв без какой-либо логики нам бы ничего не дало. Именно поэтому появилось понятие логических операторов .

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

Стараниями программистов значения нулей и единиц, двоичной системы, стали переводить в десятичную для того, чтобы мы могли понять, что именно «говорит» компьютер. А для ввода команд привычные нами действия, вроде ввода букв с клавиатуры, представлять в виде двоичной цепи команд.

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

Это довольно примитивное объяснение принципа работы процессора и компьютера, но именно понимание этого позволяет нам двигаться дальше.

5. И началась транзисторная гонка

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

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

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

  • 1964 год IBM System/360. Компьютер, совместимый с универсальным программным кодом. Набор инструкций для одной модели процессора мог использоваться и для другой.
  • 70-e годы. Появление первых микропроцессоров. Однокристальный процессор от Intel. Intel 4004 – 10 мкм ТП, 2 300 транзисторов, 740 КГц.
  • 1973 год Intel 4040 и Intel 8008. 3 000 транзисторов, 740 КГц у Intel 4040 и 3 500 транзисторов при 500 кГц у Intel 8008.
  • 1974 год Intel 8080. 6 мкм ТП и 6000 транзисторов. Тактовая частота около 5 000 кГц. Именно этот процессор использовался в компьютере Altair-8800. Отечетсвенная копия Intel 8080 – процессор КР580ВМ80А, разработанный Киевским НИИ микроприборов. 8 бит.
  • 1976 год Intel 8080 . 3 мкм ТП и 6500 транзисторов. Тактовая частота 6 МГц. 8 бит.
  • 1976 год Zilog Z80. 3 мкм ТП и 8500 транзисторов. Тактовая частота до 8 МГц. 8 бит.
  • 1978 год Intel 8086 . 3 мкм ТП и 29 000 транзисторов. Тактовая частота около 25 МГц. Система команд x86, которая используется и сегодня. 16 бит.
  • 1980 год Intel 80186 . 3 мкм ТП и 134 000 транзисторов. Тактовая частота – до 25 МГц. 16 бит.
  • 1982 год Intel 80286. 1,5 мкм ТП и 134 000 транзисторов. Частота – до 12,5 МГц. 16 бит.
  • 1982 год Motorola 68000 . 3 мкм и 84 000 транзисторов. Этот процессор использовался в компьютере Apple Lisa.
  • 1985 год Intel 80386 . 1,5 мкм тп и 275 000 транзисторов.Частота – до 33 МГц в версии 386SX.

Казалось бы, продолжать список можно было бы до бесконечности, но тут инженеры Intel столкнулись с серьезной проблемой.

6. Закон Мура или как чипмейкерам жить дальше

На дворе конец 80-х. Еще в начале 60-х один из основателей компании Intel Гордон Мур формулировал так называемый «Закон Мура». Звучит он так:

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

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

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

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

  • кэш-памяти;
  • конвейера;
  • встроенного сопроцессора;
  • множителя.

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

Процессор Intel i486 состоял уже из 1,2 млн транзисторов, а максимальная частота его работы достигла 50 МГц.

В 1995 году к разработке присоединяется компания AMD и выпускает самый быстрый на тот момент i486-совместимый процессор Am5x86 на 32-битной архитектуре. Изготавливался он уже по 350 нанометровому техпроцессу, а количество установленных процессоров достигло 1,6 млн штук. Тактовая частота повысилась до 133 МГц.

Но гнаться за дальнейшим наращиванием количества установленных на кристалле процессоров и развитии уже утопической архитектуры CISC (Complex Instruction Set Computing) чипмейкеры не решились. Вместо этого американский инженер Дэвид Паттерсон предложил оптимизировать работу процессоров, оставив лишь самые необходимые вычислительные инструкции.

Так производители процессоров перешли на платформу RISC (Reduced Instruction Set Computing]. Но и этого оказалось мало.

В 1991 году выходит 64-битный процессор R4000, работающий на частоте 100 МГц. Через три года появляется процессор R8000, а еще через два года – R10000 с тактовой частотой вплоть до 195 МГц. Параллельно развивался рынок SPARC-процессоров, особенностью архитектуры которых стало отсутствие инструкций умножения и деления.

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

Вот лишь некоторые из появившихся с период с 1980 по 1995 год архитектур:

  • SPARC;
  • ARM ;
  • PowerPC;
  • Intel P5;
  • AMD K5;
  • Intel P6.

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

В августе 1999 года на рынок выходе AMD K7 Athlon, изготовленный по 250 нанометровому техпроцессу и включающий 22 млн транзисторов. Позднее планку подняли до 38 млн процессоров. Потом до 250 млн.

Увеличивался технологический процессор, росла тактовая частота. Но, как гласит физика, всему есть предел.

7. Конец транзисторных соревнований близко

В 2007 году Гордон Мур выступил с весьма резким заявлением:

Закон Мура скоро перестанет действовать. Устанавливать неограниченное количество процессоров до бесконечности невозможно. Причина тому - атомарная природа вещества.

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

И пока производители полупроводников грозятся запустить многослойные транзисторы, проводя параллель с 3DNand памятью, у упершейся в стену архитектуры x86 еще 30 лет назад появился серьезный конкурент.

8. Что ждет «обычные» процессоры

«Закон Мура» признан недействительным еще с 2016 года. Об этом официально заявил крупнейший производитель процессоров Intel. Удваивать вычислительную мощность на 100% каждые два года чипмейкеры больше не состоянии.

И теперь у производителей процессоров есть несколько малоперспективных вариантов.

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

К тому же, о серийном запуске подобных устройств в ближайшие десятилетия не может идти и речи. Дорого, неэффективно и… медленно!

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

Второй вариант – процессоры со слоями транзисторов . О данной технологии всерьез задумались и в Intel, и в AMD. Вместо одного слоя транзисторов планируют использовать несколько. Похоже, что в ближайшие годы вполне могут появится процессоры, в которых будут важны не только количество ядер и тактовая частота, но и количество транзисторных слоев.

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

Сегодня же, понимая стремительное развитие ARM-архитектуры, Intel провела негромкий анонс чипов семейства Ice Lake. Процессоры будут изготавливаться по 10-нанометровому технологическому процессу и станут основой для смартфонов, планшетов и мобильных устройств. Но произойдет это в 2019 году.

9. Будущее за ARM

Итак, архитектура x86 появилась в 1978 году и относится к типу платформы CISC. Т.е. сама по себе она предполагает наличие инструкций на все случаи жизни. Универсальность – главный конек x86.

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

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

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

В тоже время разработкой ARM (Arcon Risk Machine) занимаются сразу несколько компания. Еще в 1985 году в качестве основы для дальнейшего развития архитектуры разработчики выбрали платформу RISC.

В отличие от CISC, RISC предполагает разработку процессора с минимально необходимым количеством команд, но максимальной оптимизацией. Процессоры RISC намного меньше CISC, более энергоэффективны и просты.

Более того, ARM изначально создавался исключительно как конкурент x86. Разработчики ставили задачу построить архитектуру, более эффективную чем x86.

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

Архитектуру ARM в свое время поддержала компания Apple, запустив производство планшетов Newton на базе семейства ARM-процессоров ARM6.

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

  • мобильность;
  • автономность.

x86 архитектура сильна в производительности, но стоит вам отказаться от активного охлаждения, как мощный процессор покажется жалким на фоне архитектуры ARM.

10. Почему ARM – неоспоримый лидер

Вряд ли вы будете удивлены, что ваш смартфон, будь то простенький Android или флагман Apple 2016 года в десятки раз мощнее полноценных компьютеров эпохи конца 90-х.

Но во сколько мощнее тот же айфон?

Само по себе сравнение двух разных архитектур – штука очень сложная. Замеры здесь можно выполнить лишь приблизительно, но понять то колоссальное преимущество, что дает построенные на ARM-архитектуре процессоры смартфона, можно.

Универсальный помощник в таком вопросе – искусственный тест производительности Geekbench. Утилита доступна как на стационарных компьютерах, так и на Android и iOS платформах.

Средний и начальный класс ноутбуков явно отстает от производительности iPhone 7. В топовом сегменте все немного сложнее, но в 2017 году Apple выпускает iPhone X на новом чипе A11 Bionic.

Там, уже знакомая вам архитектура ARM, но показатели в Geekbench выросли почти вдвое. Ноутбуки из «высшего эшелона» напряглись.

А ведь прошел всего один год.

Развитие ARM идет семимильными шагами. Пока Intel и AMD год за годом демонстрируют 5 – 10% прирост производительности, за тот же период производители смартфонов умудряются повысить мощность процессоров в два – два с половиной раза.

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

Установите на стол моноблок с мощным 18-ядерный процессором, который «в клочья разрывает ARM-архитектуру», а затем положите рядом iPhone. Чувствуете разницу?

11. Вместо вывода

Объять 80-летнюю историю развития компьютеров в одном материале невозможно. Но, прочитав данную статью, вы сможете понять как устроен главный элемент любого компьютера – процессор, и чего стоит ждать от рынка в последующие годы.

Безусловно, Intel и AMD буду работать над дальнейшим наращиванием количества транзисторов на одном кристалле и продвигать идею многослойных элементов.

Но нужна ли вам как покупателю такая мощность?

Вряд ли вас не устраивает производительность iPad Pro или флагманского iPhone X. Не думаю, что вы недовольны производительностью расположившейся на кухне мультиварки или качеством картинки на 65-дюймовом 4K-телевизоре. А ведь во всех этих устройствах используются процессоры на ARM-архитектуре.

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

На ARM успела посмотреть и Google – операционная система Chrome OS поддерживает эту архитектуру. Появились сразу несколько дистрибутивов Linux, которые также совместимы с данной архитектурой. И это только начало.

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

4.61 из 5, оценили: 38 )

сайт Большая статья, наливайте чай.

Инструмент проще, чем машина. Зачастую инструментом работают руками, а машину приводит в действие паровая сила или животное.

Чарльз Бэббидж

Компьютер тоже можно назвать машиной, только вместо паровой силы здесь электричество. Но программирование сделало компьютер таким же простым, как любой инструмент.

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

Два основных компонента процессора

Устройство управления

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

Существует два типа реализации УУ:

  • УУ на жёсткой логике (англ. hardwired control units). Характер работы определяется внутренним электрическим строением - устройством печатной платы или кристалла. Соответственно, модификация такого УУ без физического вмешательства невозможна.
  • УУ с микропрограммным управлением (англ. microprogrammable control units). Может быть запрограммирован для тех или иных целей. Программная часть сохраняется в памяти УУ.

УУ на жёсткой логике быстрее, но УУ с микропрограммным управлением обладает более гибкой функциональностью.

Арифметико-логическое устройство

Это устройство, как ни странно, выполняет все арифметические и логические операции, например сложение, вычитание, логическое ИЛИ и т. п. АЛУ состоит из логических элементов, которые и выполняют эти операции.

Большинство логических элементов имеют два входа и один выход.

Ниже приведена схема полусумматора, у которой два входа и два выхода. A и B здесь являются входами, S - выходом, C - переносом (в старший разряд).

Схема арифметического полусумматора

Хранение информации - регистры и память

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

Регистры

Регистр - минимальная ячейка памяти данных. Регистры состоят из триггеров (англ. latches/flip-flops). Триггеры, в свою очередь, состоят из логических элементов и могут хранить в себе 1 бит информации.

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

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

  • RS-триггер: сохраняет своё состояние при нулевых уровнях на обоих входах и изменяет его при установке единице на одном из входов (Reset/Set - Сброс/Установка).
  • JK-триггер: идентичен RS-триггеру за исключением того, что при подаче единиц сразу на два входа триггер меняет своё состояние на противоположное (счётный режим).
  • T-триггер: меняет своё состояние на противоположное при каждом такте на его единственном входе.
  • D-триггер: запоминает состояние на входе в момент синхронизации. Асинхронные D-триггеры смысла не имеют.

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

Принцип действия RS-триггера

Память (ОЗУ)

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

Прим. перев. Оперативная память бывает статической и динамической - SRAM и DRAM соответственно. В статической памяти ячейками являются триггеры, а в динамической - конденсаторы. SRAM быстрее, а DRAM дешевле.

Команды (инструкции)

Команды - это фактические действия, которые компьютер должен выполнять. Они бывают нескольких типов:

  • Арифметические : сложение, вычитание, умножение и т. д.
  • Логические : И (логическое умножение/конъюнкция), ИЛИ (логическое суммирование/дизъюнкция), отрицание и т. д.
  • Информационные : move , input , outptut , load и store .
  • Команды перехода : goto , if ... goto , call и return .
  • Команда останова : halt .

Прим. перев. На самом деле все арифметические операции в АЛУ могут быть созданы на основе всего двух: сложение и сдвиг. Однако чем больше базовых операций поддерживает АЛУ, тем оно быстрее.

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

В процессоре инструкции реализуются на аппаратном уровне. За один такт одноядерный процессор может выполнить одну элементарную (базовую) инструкцию.

Группу инструкций принято называть набором команд (англ. instruction set).

Тактирование процессора

Быстродействие компьютера определяется тактовой частотой его процессора. Тактовая частота - количество тактов (соответственно и исполняемых команд) за секунду.

Частота нынешних процессоров измеряется в ГГц (Гигагерцы). 1 ГГц = 10⁹ Гц - миллиард операций в секунду.

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

Выполнение инструкций

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

Ниже рассмотрен пример набора команд, который суммирует два числа:

  1. LOAD_A 8 . Это команда сохраняет в ОЗУ данные, скажем, <1100 1000> . Первые 4 бита - код операции. Именно он определяет инструкцию. Эти данные помещаются в регистры инструкций УУ. Команда декодируется в инструкцию load_A - поместить данные 1000 (последние 4 бита команды) в регистр A .
  2. LOAD_B 2 . Ситуация, аналогичная прошлой. Здесь помещается число 2 (0010) в регистр B .
  3. ADD B A . Команда суммирует два числа (точнее прибавляет значение регистра B в регистр A). УУ сообщает АЛУ, что нужно выполнить операцию суммирования и поместить результат обратно в регистр A .
  4. STORE_A 23 . Сохраняем значение регистра A в ячейку памяти с адресом 23 .

Вот такие операции нужны, чтобы сложить два числа.

Шина

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

Кэш

У процессора есть механизм сохранения инструкций в кэш. Как мы выяснили ранее, за секунду процессор может выполнить миллиарды инструкций. Поэтому если бы каждая инструкция хранилась в ОЗУ, то её изъятие оттуда занимало бы больше времени, чем её обработка. Поэтому для ускорения работы процессор хранит часть инструкций и данных в кэше.

Если данные в кэше и памяти не совпадают, то они помечаются грязными битами (англ. dirty bit).

Поток инструкций

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

Однако такое решение подходит только для тех инструкций, которые не зависят друг от друга.

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

Загрузка...