Проблемы при регистрации на сайте? НАЖМИТЕ СЮДА!                               Не проходите мимо весьма интересного раздела нашего сайта - проекты посетителей. Там вы всегда найдете свежие новости, анекдоты, прогноз погоды (в ADSL-газете), телепрограмму эфирных и ADSL-TV каналов, самые свежие и интересные новости из мира высоких технологий, самые оригинальные и удивительные картинки из интернета, большой архив журналов за последние годы, аппетитные рецепты в картинках, информативные Интересности из Интернета. Раздел обновляется ежедневно.                               Всегда свежие версии самых лучших бесплатных программ для повседневного использования в разделе Необходимые программы. Там практически все, что требуется для повседневной работы. Начните постепенно отказываться от пиратских версий в пользу более удобных и функциональных бесплатных аналогов.                               Если Вы все еще не пользуетесь нашим чатом, весьма советуем с ним познакомиться. Там Вы найдете много новых друзей. Кроме того, это наиболее быстрый и действенный способ связаться с администраторами проекта.                               Продолжает работать раздел Обновления антивирусов - всегда актуальные бесплатные обновления для Dr Web и NOD.                               Не успели что-то прочитать? Полное содержание бегущей строки можно найти по этой ссылке.                              

Энциклопедия процессорных терминов

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

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

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

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

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


CPU (central processing unit: «центральный блок обработки»), ЦП (центральный процессор) — главный и обязательно присутствующий процессор компьютера, обрабатывающий данные любого вида (в отличие от сопроцессоров).


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


vendor («продавец»), вендор — тут: производитель оборудования, в т. ч. процессоров.


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


SMP (symmetric multiprocessing: симметричная многопроцессорность) — одновременное присутствие и работа в компьютере нескольких одинаковых процессоров и/или ядер.


uncore («внеядро»), system agent (системный агент) — термины Intel для обозначения части ЦП за пределами ядра или ядер (в т. ч. специализированных — например, графического). Ресурсы внеядра динамически разделяются между ядрами в зависимости от потребности.


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


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

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

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


conditional, условнаякоманда или операция, исполняющаяся при совпадении требуемого условия с состоянием флагов.


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


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

По характеру доступа Источник (хранит аргумент) Приёмник (получает результат) Модификанд (источник до операции и приёмник после)
По типу Регистр (указан его номер) Память (одно- или многобайтовое значение по указанному адресу) Константа (непосредственное значение, записанное в самой команде; может быть только источником)

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


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


float (плавающий), FP (floating point, плавающая точка), вещественный — относящийся к вещественный числам (с плавающей запятой). Имеют точности HP, SP, DP и EP. Обработка вещественных труднее и дольше, чем целых.


register, регистр — ячейка, хранящая одно значение определённой разрядности и типа (например, целый векторный). Наиболее частоиспользуемый тип операнда. Несколько однотипных регистров объединены в регистровый файл.


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


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


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


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


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


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


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


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


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


DSP (digital signal processor: цифровой обработчик сигналов), цифровой сигнальный процессорсопроцессор, оптимизированный для обработки потока данных, в т. ч. в реальном времени. Почти никогда не встраивается в ЦП.


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


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


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


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


ARMRISC-архитектура, первая по распространённости в мире (вторая — x86). Применяется в мобильных компьютерах и производных от них устройствах (коммуникаторах, телефонах, планшетах и пр.) и в большинстве встроенных систем. Имеет недеструктивный формат операндов. Число доступных регистров в РФ — 16.

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

x86 — самая популярная архитектура для универсальных компьютеров. Изначально создана как 16-битная версия для процессоров Intel i8086 и i8088, применявшихся в первых IBM PC, значительно обновлена и расширена до 32-битной версии при выходе ЦП i80386, далее продолжала расширяться за счёт дополнительных поднаборов команд. Как правило, под x86 понимается наиболее современная её версия — x86-64. Учитывая все дополнения (чаще всего вводимые самой Intel), в x86 сейчас более 500 команд. Число регистров в РФ (включая РОНы) — 8 или 16. Длина одинарного слова данных — 2 байта.

Состав команды x86:

  • один или несколько префиксов;
  • опкод;
  • байт modR/M, кодирует типы операндов и регистровые операнды;
  • байт SIB, кодирует регистры для доступа к памяти при сложных видах адресации;
  • адрес или (чаще) адресное смещение (address displacement);
  • непосредственный операнд (imm, immediate).

Обязателен только опкод, но в большинстве команд также есть несколько префиксов и байт modR/M. Оригинальная x86 кодирует операнды деструктивным образом.


x86-64 — 64-битная расширение архитектуры x86. Основные изменения:

  • расширена разрядность РОНов до 64 бит;
  • удвоено до 16 число РОНов и регистров xmm (но не x87);
  • отменены некоторые старые команды и режимы.

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


AMD64, EM64T, Intel 64 — коммерческие названия реализаций архитектуры x86-64, использованные AMD, Intel (раннее) и Intel (позднее). Практически идентичны.


prefix, префикс — часть команды, модифицирующая её исполнение или дополняющая опкод. В x86 бывает нескольких видов:

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

Использование префиксов удлинняет команду и является следствием ранних попыток Intel укоротить наиболее частые команды x86, а позже — следствием добавления новых команд, сохраняя старые. Из-за префиксов трудно определить длину команды, что ограничивает скорость исполнения и требует сложной логики для длиномера и декодера. У каждого x86-ЦП есть ограничение на максимальное число префиксов в команде, при котором достижима пиковая скорость исполнения.


opcode, опкод — главная часть команды, кодирующая операцию(и) и тип и разрядность операндов. В x86 кодируется одним байтом, чего хватает примерно для 100 команд, т. к. большинство из них имеют несколько вариантов типов и разрядностей операндов. Для увеличения числа команд применяются префиксы-переключатели таблиц опкодов. Чаще всего, в 32-битном коде с векторной обработкой команды имеют по 2–3 переключателя, а в 64-битном — по 3–4.


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


VA (virtual address: виртуальный адрес) — адрес для виртуальной памяти, который до использования необходимо пересчитать (транслировать) в физический адрес в блоках TLB и PMH. Каждый виртуальный адрес попадает в какую-либо страницу.


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


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


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


F… (float: вещественный) — приставка к мнемонике команд x87 и к названиям вещественных ФУ (включая векторные).


HP, SP, DP, EP (half-, single, double, extended precision: половинная, одинарная, двойная, расширенная точность) — форматы представления вещественного числа в большинстве ЦП и сопроцессоров.

Формат HP SP DP EP
Размер, байт* 2 4 8 10
Особенности В ЦП доступен лишь как аргумент для преобразования в SP и обратно В SSE-командах SP и DP сокращаются как S и D Используется только в x87 и считается избыточным
Как правило, для мультимедийных вычислений требуется HP и SP… …а для научных — DP
Современные GPU могут использовать 100% ресурсов для вычислений с HP и SP… …но не с DP

* — больший размер позволяет иметь бо́льшую точность и диапазон степеней.


CVT16 — набор из двух команд для преобразования вещественных чисел из HP в SP и обратно. Доступен только для новых ЦП AMD.


MMX (matrix math extension: расширения [для ISA добавлением] матричной математики; или multimedia extension: мультимедийные расширения) — первое применение парадигмы SIMD в x86: набор команд для работы с векторами длиной 8 байт, расположенными в стеке регистров FPU (mm-регистры) и содержащими 2, 4 или 8 целых элементов по 4, 2 или 1 байт, соответственно. Устарел после выхода поднабора SSE2.


EMMX (extended MMX: расширенное MMX) — расширения MMX введенные AMD и Cyrix. Были малопопулярны даже во время активного использования оригинального MMX.


P… (packed: «упакованная») — приставка к мнемонике векторных целочисленных команд x86 и команд 3Dnow.


3Dnow! — первое применение парадигмы SIMD для вещественных чисел в x86: набор команд для работы с векторами длиной 8 байт, расположенными в стеке регистров FPU и содержащими по два SP-элемента. Использовался только в процессорах AMD. Устарел после выхода поднабора SSE.


SSE (streaming SIMD extensions: потоковые SIMD-расширения)SIMD-наборы для векторов, хранящихся в отдельном регистровом файле с 16-байтовыми регистрами xmm. Оригинальный SSE работал только с SP-элементами. Далее дополнялся несколько раз: SSE2 — работа с целыми и DP-элементами; SSE3, SSSE3, SSE4.1, SSE4.2, SSE4.a — специфические команды для конкретных видов программ (медиа-кодирование, комплексные вычисления, работа с текстом и пр.). Вещественные SSE-операции могут быть и скалярными, используя только младший элемент вектора. Мнемоника вещественной SSE-команды состоит из:

  • краткого названия операции (часто совпадает с названием исполняющего её ФУ);
  • буквы S (scalar, скалярная) или P (packed, векторная, «упакованная»);
  • буквы S (для SP) или D (для DP).

xmm — общее название 16-байтового регистра для команд SSE.


AVX (advanced vector extensions: продвинутые векторные расширения) — надстройка над обычным способом кодирования команд x86. AVX-код позволяет:

  • обрабатывать 32-байтовые векторы в регистрах ymm (кроме целочисленной арифметики);
  • использовать во всех векторных командах 3–4 операнда в недеструктивной форме;
  • сэкономить на размере векторных команд заменой нескольких старых префиксов одним обязательным VEX-байтом.

Также добавлены новые векторные команды.


ymm — общее название 32-байтового регистра для команд AVX. Обратно совместим с регистром xmm с тем же номером, т. к. последний представляется младшей половиной первого.


XOP (extended operation: расширенная операция) — надстройка компании AMD, дополняющая набор AVX командами FMA и другими векторными. Имеет те же преимущества и ограничения (для целых — только 16-байтовая обработка), но отличается кодировкой (использует обязательный XOP-байт).


FMA (fused multiply-add: слитое умножение-сложение) — поднабор команд для слитых умножения-сложения и умножения-вычитания. Реализуется в блоке MADD двумя вариантами:

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


AMD-V, VT (virtualization technology: технология виртуализации) — названия технологий аппаратной поддержки виртуализации в ЦП AMD и Intel. Практически идентичны. Виртуализация позволят одновременно запускать несколько программно изолированных ОС.


AES-NI (AES new instructions: новые команды AES) — поднабор команд для ускорения операций (де)шифрования по стандарту AES. Сюда же можно отнести PCLMULQDQ — команду безпереносного умножения, ускоряющего алгоритмы шифрования.


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


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


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


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


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


mov (move: «перемещение, движение») — команда копирования данных.


cmov (conditional move: условное перемещение) — команда условного копирования. Использование cmov позволяет ускорить программу за счёт уменьшения числа труднопредсказуемых условных переходов.


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

  • безусловный — происходит всегда;
  • условный;
  • циклический — условный переход после модификации счётчика цикла и проверки условия выхода из него; редко применяется;
  • вызов подпрограммы и возврат из неё;
  • вызов прерывания и возврат из него.

Поведение переходов предсказывается заранее, чаще всего удачно.


nop (no operation: нет операции), ноп — единственная команда, не кодирующая операцию. Чаще всего используется как «затычка» для заполнения места при отладке или выравнивании кода. В некоторых архитектурах (включая x86) ноп как отдельный опкод отсутствует, поэтому заменяется комбинацией простой команды и операндов, не меняющей состояние процессора (кроме указателя на исполняемую команду). В x86 имеет длину 1–9 байт.

Общее устройство конвейера

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


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


way («путь») — в конвейере: магистраль для прохождения одного потока команд или мопов. Число путей применяется ко всему конвейеру и ограничивает максимальную величину суперскалярности, хотя между некоторыми смежными стадиями число путей может быть больше.


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


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


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


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

  • сравнение + условный переход;
  • меняющая флаги арифметическая команда + условный переход;
  • копирование «регистр–регистр» + вычислительная команда с регистром-модификандом;
  • ноп (иногда — несколько нопов) + любая другая команда;
  • умножение + сложение или умножение + вычитание (пока не реализовано).

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


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


back-end («задняя часть»), тыл конвейера — часть конвейера, обрабатывающая данные исполнением мопов от «фронта».


in-order, поочерёдный — о последовательной обработке или исполнении команд и мопов в указанном программой порядке. Фронт конвейера всегда обрабатывает команды упорядоченно.


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


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


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


SMT (simultaneous multithreading: одновременная многопоточность) — одновременное исполнение конвейером одного ядра нескольких потоков для минимизации простоев стадий.


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


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


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


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


OPC (operations per clock), операций за такт — величина, аналогичная IPC, но замеряющая операции исполняемых команд или мопов. При вычислении пиковой величины OPC конвейера, как правило, учитываются лишь вычислительные команды.


FLOPS (float operations per second: вещественных операций в секунду) — произведение максимальной устоявшейся частоты процессора на величину OPC для вещественных вычислительных команд. Применяется к ядру, а при умножении на число ядер — ко всему процессору, являясь в этом случае одной из его главных скоростных характеристик.


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


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

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

Стадии конвейера

BPU (branch predictor unit: блок предсказания ветвлений), предсказатель переходов — начальная часть конвейера, реализующая спекулятивное исполнение. Предсказывает поведение команд перехода (целевой адрес и предположение об исполнении), используя накопленную в специальных таблицах и регистрах статистику о дошедших до отставки переходах. Состоит из 1–2 стадий, работает отдельно от остального конвейера и раз в 2–3 такта выдаёт вероятный адрес следующей порции команд для исполнения. Для переходов разного типа применяет разные алгоритмы. Предсказания даются на несколько переходов вперёд вне зависимости от темпа реального исполнения команд или даже их наличия в L1I.


IF (instruction fetch: загрузка команд) — несколько стадий (число которых совпадает с латентностью L1I), тратящихся на загрузку порции команд из L1I в предекодер или декодер по предсказанному адресу.


IChunk (instruction сhunk: «кусок команд»), порция команд — блок команд, загружаемый из L1I в предекодер или декодер. В x86 ЦП — 16 или 32 байта.


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


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


ID (instruction decoder: декодер команд), decoder (декодер) — набор блоков, преобразующих команды в мопы. В x86-ЦП состоит из нескольких трансляторов и одного микросеквенсера (генератора последовательности мопов) с ПЗУ для микрокода. Осуществляет микрослияние и макрослияние.


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


µcode, microcode, микрокод — совокупность микропрограмм — последовательностей мопов (до нескольких сот длиной), задающих исполнение наиболее сложных команд, которые не могут быть обработаны трансляторами. Хранится в ПЗУ микропрограмм.


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


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


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


ROB (reorder buffer: «буфер переупорядочивания») — вопреки названию, хранит оригинальный (программный) порядок мопов, поэтому иногда называется «retirement queue» (очередь отставки). Число мопов в ROB определяет т. н. OoO-окно — диапазон, в котором OoO-планировщик выбирает несколько мопов для исполнения.


register rename, переименование регистров — процедура привязки архитектурного регистра, описываемого в ISA и указанного в мопе, к аппаратному. Является первой стадией тыла конвейера и выполняется при размещении мопа в ROB и резервации(ях). Физических регистров в 4–10 раз больше, чем архитектурных того же типа, что позволяет реализовать одновременное исполнение мопов, до переименования ссылавшихся на один регистр, за счёт удаления ложных взаимозависимостей по операндам. Переименовываются также 4 важнейших флага.


RS (reservation station: резервационная станция), резервация

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

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


RF (register file), РФ (регистровый файл) — набор одинаковых регистров, отличающихся лишь номером. С точки зрения архитектуры в ядре современного ЦП есть как минимум целочисленный РФ (набор РОНов для скалярных целых данных и адресов) и векторно-вещественный РФ (для остальных видов данных). Аппаратных РФ может быть больше. Имеет по несколько портов чтения и записи, реализуя одновременный доступ.


ARF (architectural RF), архитектурный РФ, RRF (retired RF, «отставленный РФ»)РФ, хранящий последнее достоверно известное состояние описываемых архитектурой регистров, обновляемое при отставке мопов. В ЦП с SMT есть по одному ARF на поток.


FF (future file: «файл будущего»), спекулятивный РФРФ, хранящий регистры со спекулятивными операндами. При отставке мопа планировщик переносит записанный им результат из спекулятивного РФ в архитектурный. Число регистров спекулятивного РФ совпадает с размером ROB в мопах.


PRF (physical RF), физический РФРФ, монопольно хранящий регистровые операнды мопов. Использующий его планировщик манипулирует в ROB и резервации только мопами и номерами переименованных регистров, отслеживая архитектурные и спекулятивные записи в таблице привязки. В ЦП с SMT есть по одной такой таблице на поток.


EX (execution), исполнение — стадия исполнения мопов, содержащая все ФУ. Физически реализована в виде одного или нескольких исполнительных трактов.


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


datapath («путь данных»), исполнительный тракт — физическая структура процессора, реализующая обработку данных определённого типа. Начинается с одного или нескольких РФ, после чего цепочкой расположены несколько ФУ и шлюзов. Эти блоки связаны несколькими шинами, по максимальному числу портов из подключенных РФ. Шины чтения из РФ передают аргументы в ФУ, шины записи возвращают результаты (в т. ч. в РФ).


bypass («обход»), шлюз — порт перепуска (перенаправления) данных на исполнительном тракте. Внутренние шлюзы связывают шины записи и входные порты ФУ, позволяя немедленно использовать результат только что исполненного мопа (в т. ч. в этом же ФУ). Внешние шлюзы ведут в другие тракты и LSU.


AG (address generation: генерация адреса) — стадия арифметических действий с содержимым регистров и адресных смещений, необходимая для получения адреса аргумента в памяти. Выполняется в AGU.


DCA (data cache access: доступ к кэшу данных) — стадия чтения аргумента из кэша или записи в кэш по вычисленному адресу под управлением LSU.


WB (write-back: обратная запись) — стадия записи результатов из ФУ и/или чтений из памяти — в РФ и/или в ФУ (через шлюзы). Не путать с одноимённой политикой работы кэша.


retire, отставка, commit («совершение») — функция планировщика, «легализующая» спекулятивные результаты мопов в программном порядке. Является последней стадией конвейера. Отказ в отставке возможен в случае обнаружения:

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


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

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

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

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


taken («взят»), not taken («не взят», пропущен) — срабатывание и несрабатывание команды перехода при исполнении, а также соответствующее предсказание.


mispredict («фальш-предсказание») — ошибка предсказания поведения перехода. Обнаруживается при отставке перехода и вызывает сброс конвейера.


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


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


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


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


domain, домен — совокупность команд, исполняемых во всех ФУ какого-либо исполнительного тракта.


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

  • ALU (без уточнений): для скалярных целочисленных данных;
  • SIMD ALU, SSE ALU, MMX ALU: для векторных целочисленных данных.

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

  • x87 FPU: для скалярных данных и команд x87;
  • SIMD FPU, SSE FPU: для векторных данных.

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


ADD (adder: сумматор) — относительно простое ФУ, выполняющее сложения, вычитания, сравнения и другие простые арифметические операции. Для вещественных является самостоятельным (FADD). Для целых — входит в состав ALU.


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


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


MAC (multiplier-accumulator: умножитель-накопитель) — неверное название MADD.


DIV (divider: делитель) — сложное неконвейерное ФУ для выполнения деления. Часто тесно связан с умножителем.


pack (упаковать), shuffle (переставить)векторные команды, исполняемые в перестановщике и меняющие взаимное расположение элементов вектора.


shifter («сдвигатель») — ФУ или блок для битового сдвига целых или логических операндов.


AGU (address generation unit: блок генерации адреса) — арифметическое ФУ для адресных компонент из команды и регистров, фактически — целочисленный сумматор с простым сдвигателем.


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


fuses, перемычки — матрица плавких перемычек для однократного программирования или коррекции работы некоторых блоков процессора (в частности, микрокода в декодере).

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


cache, кэш — программно недоступная буферная память, используемая процессором для ускорения операций обмена (увеличением ПС и уменьшением задержки) с основной памятью. В ЦП имеет 2–3-уровневую иерархию, причём оперативная память может считаться дополнительным (последним) уровнем. Как правило, каждый следующий уровень кэша относительно текущего (начиная с L1) имеет…
…бо́льшие: …равные или меньшие:
информационный объём удельное потребление энергии (на байт)
занимаемую площадь влияние на общую производительность
физическую плотность (в транзисторах на бит) информационную плотность (в байтах на мм²)
ассоциативность сложность реализации
задержку ПС
частоту промахов частоту работы

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


mop cache (кэш мопов) — часть фронта конвейера, находящаяся на стадии отправки. Кэширует декодированные из команд мопы, потому иногда называется кэшем 0-го уровня для мопов (L0m).


L1 (level 1: 1-й уровень) — общее название для кэшей L1I и L1D. Также применим к TLB.


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


L1D (level 1 for data: 1-й уровень для данных) — кэш для данных, подключенный к тылу конвейера. Чаще всего 2–3-портовый, с разрядностью порта, совпадающей с размерностью наибольшего операнда команд. В ЦП с MCMT есть несколько L1D на модуль.


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


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


hit, попадание — ситуация нахождения нужной информации при обращении в кэш. Антоним промаха.


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


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


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


way, путь — совокупность всех строк наборно-ассоциативного кэша с одинаковым номером во всех наборах.


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


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


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


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


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


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


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


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


fetch (достать, принести) — операция загрузки из L1. Как правило, указывается с приставкой I для команд (из L1I) или D для данных (из L1D).


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

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


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


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


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


misaligned, невыровненный — о данных, к которым не применено выравнивание. Некоторые x86-ЦП запрещают доступ к невыровненным данным для некоторых векторных команд. В некоторых других архитектурах невыровненный доступ запрещён полностью.


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


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


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


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


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


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


WCB (write combine buffer: буфер слияния записи) — буфер для слияния записей в L2 из L1D.


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


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


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


queue, очередьбуфер, работающий по принципу FIFO.


FIFO (first-in, first-out: первым пришёл, первым вышел) — принцип работы буфера, при котором чтение слов происходят в порядке их записи.


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


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


DDR (double data rate: двойной темп данных) — принцип удвоения ПС шины передачей двух слов за такт — на фронте и спаде тактового импульса.


QDR (quad data rate: четверной темп данных) — принцип учетверения ПС шины передачей четырёх слов за такт — на фронтах и спадах тактовых импульсов двух линий тактирования, причём вторая смещена по фазе относительно первой на 90° (т. е. на половину длительности импульса).


МТ/s (megatransfers/second: «мегапередачи/секунду», миллионы передач в секунду), GТ/s (gigatransfers/second: «гигапередачи/секунду», миллиарды передач в секунду) — меры производительности шины с переменной разрядностью, равные произведению частоты и числа передаваемых каждой линией битов/такт (1, 2 или 4).


FSB (front-side bus: «фронтовая шина») — общее название шины от x86-ЦП до северного моста чипсета.


QPI (QuickPath Interconnect) — межпроцессорная шина для ЦП Intel.


HT (HyperTransport) — межпроцессорная и чипсетная шина для ЦП AMD.


DMI (Direct Media Interface) — шина от ЦП Intel с ИКП до южного моста.


IMC (integrated memory controller), ИКП, интегрированный (встроенный) контроллер памяти — контроллер памяти, встроенный в процессор. Встраивание уменьшает задержки при доступе.


parity, чётность — простой способ обнаружения 1-битных ошибок. Применяется для защиты от ошибок чтения информации низкой важности, либо при низкой частоте возникновения ошибок, либо при возможности простого восстановления слова из внешнего источника. Применяется для кэша L1I и, иногда, L1D, а также некоторых шин. Как правило, требует 1 бит чётности на каждые 8–32 бита данных.


ECC (error correction code), код коррекции ошибок — в процессоре и памяти: способ обнаружения 2-битных ошибок и коррекции 1-битных. Требует больше времени и энергии для генерации и проверки, чем чётность. В ЦП используется во всех кэшах, кроме L1I и, изредка, L1D. Применяется для 8-байтовых слов, занимая дополнительный ECC-байт.

Физическая реализация


chip, чип, микросхема — интегральный полупроводниковый прибор, заменяющий тысячи и миллионы отдельных (дискретных) элементов. Состоит из корпуса и одного или нескольких размещённых внутри кристаллов. Чаще всего размещается на печатной плате — монтируется припаиванием или вставляется в разъём. Микросхемы являются главными и самыми сложными частями почти всех электронных приборов. Большинство микросхем — цифровые.


socket, разъём — физический и электрический интерфейс для установки микросхемы на печатную плату с возможностью быстрой замены. Как правило, называется по типу подходящего для него корпуса и числа выводов. Часто имеет физическую защиту от неверной установки. При верной установке микросхемы особая деталь («ключ») в одном из её углов должна совпасть с ключом на разъёме.


BGA (ball grid array: сеточный массив шаров) — корпус микросхемы с массивом выводов на нижней стороне в виде шариков припоя. Как правило используется для припаивания на плату.


LGA (land grid array: сеточный массив площадок) — корпус микросхемы с массивом выводов на нижней стороне в виде контактных площадок. Подходит только для установки в разъём.


PGA (pin grid array: сеточный массив штырей) — корпус микросхемы с массивом выводов на нижней стороне в виде штырьков. Подходит для монтажа и установки в разъём.


die («кубик»), кристалл — главная часть микросхемы, тонкий прямоугольный кремниевый кристалл, на поверхности которого расположено большое множество интегральных элементов (чаще всего транзисторов) и межсоединений. Расположен в корпусе, с которым соединён чаще всего по принципу FC-BGA-монтажа. Чем больше площадь кристалла (и их число — для MCM), тем дороже микросхема. При производстве кристаллы получаются после разрезания кремниевой пластины.


wafer («вафля»), пластина — круглая кремниевая пластина диаметром до 300 мм, используемая на микроэлектронной фабрике для производства микросхем. На пластине формируется регулярный массив «клеток», которые после разрезки пластины образуют кристаллы, устанавливаемые в корпусы.


MCM (multi-chip module: многочиповый модуль) — микросхема, в корпус которой установлено несколько кристаллов: как правило, друг на друге, реже (для сильногреющихся кристаллов) — на одном уровне. Кристаллы могут быть подключены не только к выводам, но и напрямую друг к другу. MCM чаще всего применяется для микросхем памяти и SoC, реже — для многоядерных ЦП.


TSV (through silicon vias: «сквозькремниевые отверстия») — перспективный метод соединения нескольких кристаллов микросхемы, устанавливаемых друг на друга.


FC (flip-chip: перевёрнутый кристалл) — метод установки кристалла в корпус «транзисторами вниз». Применяется в большинстве современных микросхем, но без использования TSV не даёт возможность установить в MCM несколько кристаллов друг на друга.


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


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


stepping, степпинг — для x86-ЦП: модификация модели, сделанная для улучшения второстепенных численных потребительских характеристик относительно предыдущего степпинга (например, увеличения частоты шины). Обозначается шестнадцатиричной цифрой.


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


ES (engineering sample), инженерный образец — «бета-версия» микросхемы, не предназначенная для массового производства. Изготавливается малыми партиями для отладки и тестирования. Иногда содержит недокументированные режимы или функции, недоступные в массовых моделях.


MOS (metal-oxide-semiconductor: металл-оксид-полупроводник), МОП — слоистая структура, лежащая в основе интегральных полевых транзисторов для первых микросхем. В современных чипах управляющий затвор делается из поликремния, но в наиболее продвинутых снова применяется металлический затвор. Подзатворный диэлектрик также изготавливается не из диоксида кремния, а high-k-материалов. Часть кристалла, образующая канал с управляемой проводимостью между истоком и стоком, в современных микросхемах имеет механические напряжение. Идеальный МОП-транзистор имеет квадратичную зависимость потребления энергии от напряжения питания и линейную от частоты, причём максимум частоты линейно зависит от напряжения.

90 нм МОП-транзистор

process technology, техпроцесс — технологический процесс для массового производства микросхем. Характеризуется технормой, числом слоёв межсоединений, диаметром пластин, различными оптимизациями под скорость и/или энергоэффективность и пр. На передовых фабриках переход на новый техпроцесс происходит примерно каждые 2 года.


critical dimension (критический размер), технорма — главная характеристика техпроцесса. Измеряется в нанометрах (nm, нм; ранее — в микронах). Технорма равна минимальному полушагу линейно-регулярной структуры на кристалле (с некоторыми допущениями — удвоенной минимальной длине затвора транзистора) и минимальной ширине дорожки). Длина и ширина всего транзистора в несколько раз превышает технорму. Из-за того, что начиная с 90 нм техпроцесса длина затвора уменьшается медленнее остальных частей транзистора, при переходе на следующий техпроцесс (технорма которого, как правило, в 1,4 раза меньше) площадь транзистора и всего кристалла уменьшается не вдвое, а в 1,6–1,8 раза. Перевод микросхемы на меньшую технорму увеличивает массовость её производства и максимальную частоту, а также уменьшает себестоимость и энергопотребление. Оборудование для производства с меньшей технормой значительно дороже.


CMOS (complementary MOS: комплементарный МОП), КМОП — вид логики для цифровых микросхем, использующей в логических вентилях p- и n-канальные МОП-транзисторы. По сравнению с другими схемами такой вентиль занимает больше места и имеет меньшую предельную частоту, но потребляет меньше энергии. Применяется в особо энергоэффективных схемах и редко — в процессорах.


SRAM (static RAM: статическое ОЗУ), СОЗУ — энергозависимая полупроводниковая память, используемая в микросхемах в качестве кэшей, буферов и регистров. Среди остальных видов памяти является самой быстрой, энергопотребляющей и малоплотной. Элементарная ячейка СОЗУ, хранящая 1 бит, имеет 6 транзисторов для кэшей L2 и L3, 6–8 для L1 и 4+4W+2R для РФ с W портами записи и R портами чтения.


interconnect, межсоединения — совокупность проводящих каналов (дорожек), соединяющих элементы микросхемы друг с другом, а также с её выводами. Расположены на 5–12 уровнях, причём самый нижний (на уровне транзисторов) изготовлен из поликремния, а остальные — из меди (в старых чипах — из алюминия). Верхний слой имеет контактные площадки для соединения кристалла с корпусом, следующий является силовым (поставляет питание), оставшиеся используются для синхронизации и переноса данных. Электрические контакты между слоями и до транзисторов образуются с помощью металлизированных отверстий (vias). Межслойный диэлектрик является high-k-соединением.

90 нм межсоединения

k, диэлектрическая проницаемость — безразмерная физическая величина (часто называемая диэлектрической константой), характеризующая изолирующие свойства. По определению, k(вакуума)=1. До 2000 г. в микросхемах в качестве диэлектрика применялся диоксид кремния (SiO2) с k=3,9; материалы с большей k относятся к классу high-k, с меньшей — к low-k. В новых чипах используются оба вида.


high-k (высокая «k») — о диэлектриках с показателем k больше, чем у SiO2. Диэлектрики на основе гафния (HfSiO или HfSiON с k≈25) применяются вместо SiO2 между затвором и каналом МОП-транзистора, уменьшая токи утечки, вызванные туннелированием электронов из-за малой толщины слоя — high-k-диэлектрик позволяет утолщить изолятор без замедления транзистора.


low-k (низкая «k») — о диэлектриках с показателем k меньше, чем у SiO2. Легированный углеродом пористый SiO2 (с k≤3) применяется вместо обычного SiO2 как межслойный изолятор для межсоединений, уменьшая паразитную ёмкость. Это позволяет ускорить схему и уменьшить её потребление.


strained silicon, напряжённый кремний — техника ускорения переключения МОП-транзисторов, применяемая к области канала: для p-канальных транзисторы применяется сжатие шага кристаллической решётки вдоль канала, для n-канальных — растяжение.


SOI (silicon on insulator, кремний на изоляторе) — техника уменьшения токов утечки за счёт размещения под всеми транзисторами кристалла изолирующего слоя.


metal gate, металлический затвор — использование в качестве затвора МОП-транзистора металлокремниевого соединения или сплава металлов вместо поликремния (поликристаллического кремния) для ускорения и уменьшения потребления энергии.


TDP (thermal design power: мощность по термопроекту) — теоретически максимальная рассеиваемая (выделяемая в виде тепла) мощность микросхемы. Как правило, чуть выше фактически достижимого максимума при полной загрузке. Используется как показатель потребления энергии (почти 100% её рассеивается).


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


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


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


P-state (performance state: состояние производительности) — состояние микросхемы с точки зрения баланса скорости и потребления энергии в энергосостоянии C0. Для каждого питающего слоя описывает его напряжение, а каждого блока — частоту тактирования. Каждая такая комбинация обозначается отдельной цифрой, причём P0 обозначает максимальные скорость и потребление, а бо́льшие цифры означают их постепенное уменьшение.


SpeedStep, Cool’n’Quiet, PowerNow! — название фирменных технологий энергосбережения для ЦП Intel, AMD и VIA.


TurboBoost, TurboCore — название фирменных технологий аппаратного (программно-независимого) частотного авторазгона для ЦП Intel и AMD. При простое части ядер и непредельной температуре кристалла авторазгон увеличивает множитель частоты (и, возможно, напряжение питания) полностью загруженным ядрам (иногда вместе с некоторыми простаивающими, но неотключаемыми), пока общее потребление энергии, частота и температура не превышают допустимые для данного ЦП пределы (включая TDP).


frequency ceiling, частотный потолок — максимально достижимая на данный момент частота надёжной работы микросхемы данного типа при массовом производстве на данном оборудовании. Увеличивается при переходе на меньший техпроцесс, следующий степпинг и другую микроархитектуру с «простыми» (по метрике FO4) стадиями конвейера (для нового ЦП).


FO4 (fan-out of 4: коэффициент разветвления 4) — относительная метрика времени срабатывания логической схемы, не зависящая от используемого техпроцесса (в отличие от абсолютной, измеряемой в долях секунды). Равна времени срабатывания логического вентиля, нагруженного на выходе четырьмя другими того же размера. В процессорах применяется для измерения логической сложности стадии конвейера. Типичное её значение для современных x86-ЦП — 21–23 единицы FO4. Конвейер, разделённый на большее число стадий меньшей сложности, сможет работать на большей частоте, исполняя ту же совокупную работу, т. к. каждой стадии потребуется меньшее время для срабатывания. Реальная работа в стадии меньше, т. к. при замере «полной FO4-эквивалентной» задержки учитывается дрожание частоты (джиттер) и нечёткие срезы сигнала тактирования (≈2 FO4), а также задержки межстадийных буферов данных (≈3 FO4).

.:: Статистика ::.
Пользователи
HTTP: 5
IRC: 4
Jabber: 0
( состояние на 05:28 )
ADSL-газета: Ежедневно свежие анекдоты, гороскоп, погода, новости, ТВ-программа, курс валют

Интересности из Интернета: Интересные статьи на разнообразные темы, найденные на просторах интернета

Компьютерная консультация

Единый личный кабинет