Современные процессоры состав. Как работает процессор компьютера? Тип и частота поддерживаемой оперативной памяти

19.06.2020

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

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

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

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

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

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

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

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

  • УУ на жёсткой логике (англ. 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).

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

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

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

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

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

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

Архитектура

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

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

Ядра

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

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

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

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

Кэш-память

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

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

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

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

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

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

Итак, что же окажется внутри микропроцессора, если его разобрать:

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

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

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

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

Кристалл соединяется с подложкой с помощью пайки и герметика, контакты подложки соединяются с контактами кристалла. На этом рисунке наглядно показано как соединяются контакты кристалла с контактами подложки при помощи очень тонких проводков (на фото 170-кратное увеличение):

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

Так например выглядит контактная подложка процессора Intel Pentium 4 (процессор перевернут):

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

А бывает другая ситуация, где "штырьки" контактов торчат прямо из контактной подложки. Эта особенность характерна в основном для процессоров AMD:

Как уже упоминалось выше, устройство разных моделей процессоров одного производителя может различаться, перед нами яркий тому пример - четырехъядерный процессор Intel Core 2 Quad, который по сути представляет собой 2 двухъядерных процессора линейки core 2 duo, совмещенных в одном корпусе:

Важно! Количество кристаллов внутри процессора и количество ядер процессора - не одно и то же.

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

Вот и все устройство центрального микропроцессора , вкратце конечно же.

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

Заметим, что энциклопедия не заменяет, а дополняет другие статьи общего характера (например «Современные десктопные процессоры архитектуры 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: блок шинного интерфейса) - контроллер шины между процессором и северным мостом чипсета или межпроцессорной шины.

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

Из чего состоит процессор

ЦП ‒ это миниатюрная кремниевая пластина прямоугольной формы, которая содержит миллионы транзисторов (полупроводников). Именно они реализуют все функции, которые выполняет процессор.

Почти все современные процессоры состоят из следующих компонентов:

  1. Несколько ядер (редко 2, чаще 4 или 8), которые выполняют все функции. По сути, ядро представляет собой отдельный миниатюрный процессор. Несколько интегрированных в основной чип ядер параллельно работают над задачами, что ускоряет процесс обработки данных. Однако не всегда большее количество ядер означает более быструю работу чипа.
  2. Несколько уровней памяти КЭШ (2 или 3), благодаря чему время взаимодействия ОЗУ и процессора сокращается. Если информация находится в КЭШе, то время доступа к ней минимизировано. Следовательно, чем большим будет объем КЭШа, тем больше информации в него поместится и тем быстрее будет сам процессор.
  3. Контроллер ОЗУ и системной шины.
  4. Регистры ‒ ячейки памяти, где хранятся обрабатываемые данные. Они всегда имеют ограниченный размер (8, 16 или 32 бит).
  5. Сопроцессор. Отдельное ядро, которое предназначается для выполнения операций определенного типа. Чаще всего в виде сопроцессора выступает графическое ядро (видеокарта).
  6. Адресная шина, которая связывает чип со всеми подключенными к материнской плате устройствами.
  7. Шина данных - для связи процессора с оперативной памятью. По сути, шина представляет собой набор проводников, посредством которых передается или принимается электрический сигнал. И чем больше будет проводников, тем лучше.
  8. Шина синхронизации - позволяет контролировать такты и частоту работы процессора.
  9. Шина перезапуска - обнуляет состояние чипа.

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

Ядра

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

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

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

Задача ядер

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

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

Регистры

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

  1. A, B, C - используются для хранения информации во время обработки. Их всего три, но этого достаточно.
  2. EIP - в этом регистре хранится адрес следующей в очереди инструкции.
  3. ESP - адрес данных в ОЗУ.
  4. Z - здесь находится результат последней операции сравнения.

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

Заключение

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

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