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

Обновлено: 06.07.2024

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

С аппаратной позиции архитектура процессора, называемая иногда микроархитектурой, является набором свойств, характерным для всего семейства процессоров и отражающим базовые особенности его внутренней организации. К примеру, микроархитектура процессоров Intel Pentium имела обозначение Р5, а процессоры Pentium 4 относились к NetBurst. После закрытия Intel микроархитектуры Р5 для производителей AMD разработала архитектуру К7 и К8 для процессоров Athlon, Athlon XP и Athlon 64 соответственно.

CISC

CISC-архитектура (Complex Instruction Set Computer) относится к процессорам с полным набором команд. Она имеет нефиксированную длину команд, отличается кодированием арифметических действий в единой команде и малым количеством регистров, большинство из которых выполняет только выделенную функцию.

CISC реализована во множестве типов микропроцессоров, таких как Pentium, которые выполняют большое количество разноформатных команд (порядка 200-300), применяя более десяти различных способов адресации. Командная система может включать несколько сотен команд различного уровня сложности или формата (от 1 до 15 байт).


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

  • x86 (IA-32, сокращенное от "Intel Architecture, 32-bit") - ;
  • x86_64 (AMD64);
  • Motorola MC680x0;
  • мейнфреймы zSeries.

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

RISC-архитектура (Reduced Instruction Set Computer) относится к процессорам с сокращённым набором команд. В ней быстродействие увеличивается посредством упрощения инструкций: за счёт того, что их декодирование становится проще, уменьшается время исполнения. Изначально RISC-процессоры не обладали инструкциями деления и умножения и не могли работать с числами, имеющими плавающую запятую. Их появление связано с тем, что в CISC достаточно много способов адресации и команд использовались крайне редко.

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

RISC процессор ARM Cortex-A15

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

Характерными примерами RISC-архитектур являются:

  • PowerPC;
  • DEC Alpha;
  • ARC;
  • AMD Am29000;
  • серия архитектур ARM;
  • Atmel AVR;
  • Intel i860 и i960;
  • BlackFin;
  • MIPS;
  • PA-RISC;
  • Motorola 88000;
  • SuperH;
  • RISC-V;
  • SPARC.

RISC быстрее CISC, и даже при условии выполнения системой RISC четырёх или пяти команд вместо единственной, выполняемой CISC, RISC выигрывает в скорости, поскольку его команды выполняются в разы оперативнее. Однако CISC продолжает использоваться. Это связано с совместимостью: x86_64 продолжает лидировать в десктоп-сегменте, а поскольку старые программы могут функционировать только на x86, то и новые десктоп-системы должны быть x86(_64), чтобы дать возможность старым программам работать на новых устройствах.

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

MISC

MISC-архитектура (Minimal Instruction Set Computer) является процессором с минимальным набором команд. Она отличается ещё большей простотой и используется для ещё большего снижения энергопотребления и итоговой стоимости процессора. MISC-архитектура применяется в IoT-сегменте и компьютерах малой стоимости вроде роутеров. Первой вариацией такого процессора стал MuP21.

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

Все вышеназванные архитектуры могут применять «спекулятивное исполнение команд», то есть исполнение команды заранее, когда ещё неизвестна её необходимость. Это позволяет увеличить производительность.

VLIW

VLIW-архитектура (Very Long Instruction Word) относится к микропроцессорам, применяющим очень длинные команды за счёт наличия нескольких вычислительных устройств. В отдельных полях команды присутствуют коды, которые обеспечивают реализацию различных операций. Одна команда в VLIW может исполнить одновременно несколько операций в разных узлах микропроцессора. Формированием таких длинных команд занимается соответствующий компилятор во время трансляции программ, которые написаны на высокоуровневом языке.

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

  • Intel Itanium;
  • AMD/ATI Radeon (с R600 до Northern Islands);
  • серия «Эльбрус».

VLIW процессор Эльбрус-8С

VLIW схожа с архитектурой CISC, имея собственный аналог спекулятивной реализации команд. Однако спекуляция выполняется не при работе программы, а при компиляции, что делает VLIW-процессоры устойчивыми к уязвимостям Spectre и Meltdown. Компиляторы в этой архитектуре привязаны к определённым процессорам. Так, в следующем поколении наибольшая длина одной команды может из 256 бит превратиться в 512 бит, и тогда придётся выбирать между обратной совместимостью со старым типом процессора и возрастанием производительности посредством компиляции под новый процессор. И в этом случае Open Sourсe даёт возможность получить программу под определённый процессор при помощи перекомпиляции.

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

Курс IT Essentials: PC HArdware and Software.

Контрольная работа по главе 1. Знакомство с системой персонального компьютера.

Вопрос 1.
Заказчик попросил собрать ПК, который будет поддерживать eSATA. Какой компонент необходимо проверить, чтобы убедиться в поддержке этой функции?

жесткий диск
ЦП
+++ чипсет
модуль ОЗУ

Вопрос 2.
Какие три компонента должны иметь один и тот же форм-фактор при сборке компьютера? (Выберите три варианта.)

монитор
клавиатура
+++ материнская плата
+++ блок питания
+++ корпус
видеокарта

Вопрос 3.
Что из нижеперечисленного относится к приемам увеличения производительности процессора по сравнению с фабричным значением?

++++ разгон
ограничение
гиперпоточность
многозадачность

Вопрос 4.

Какие единицы используются при измерении величины сопротивления току в цепи?

+++ омы
ватты
вольты
амперы

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

Вопрос 6.
Какую характеристику имеют тонкие клиенты?

Им требуется быстрое ОЗУ большого объема.
Они выполняют все задачи обработки локально.
Они способны одновременно запускать несколько операционных систем.
+++ Для доступа к вычислительным ресурсам и хранилищу им требуется сетевое соединение.

Вопрос 7.
Какое обновление оборудования позволит процессору игрового ПК обеспечивать оптимальный уровень производительности для видеоигр?

внешний жесткий диск большой емкости
+++ быстрое ОЗУ большого объема
жидкостное охлаждение
диск EIDE с высоким быстродействием

Вопрос 8.
Какая плата адаптера в ПК обеспечивает отказоустойчивость данных?

+++ плата RAID
карта SD
плата ввода-вывода
плата захвата

Вопрос 9.
Что необходимо знать перед тем, как выбирать блок питания? (Выберите два варианта.)
требования к напряжению периферийных устройств
установленная операционная система
++++ общая мощность всех компонентов
++++форм-фактор корпуса
тип ЦП

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

коммутатора USB
монитора с сенсорным экраном
ИБП
+++ KVM-переключателя
концентратора PS/2

Вопрос 11.
Какие устройства являются устройствами вывода? (Выберите три варианта).
клавиатура
+++ принтер
+++ наушники
мышь
+++ монитор
дактилоскопический сканер

Вопрос 12.
Заполните пустое поле.
В серверах и высокопроизводительных рабочих станциях обычно используется _______ память. Это специальная память, в которой имеется дополнительная схема для управления ОЗУ большого объема. Используйте русскоязычный термин.

Ответ 1: буферизуемая

Вопрос 13.
Какой тип памяти встроен в микросхему ЦП для обеспечения быстрого доступа к данным?
SODIMM
DDR3
Оперативная динамическая память DRAM
+++ Статическое ОЗУ (SRAM)

Вопрос 14.
Назовите два программных интерфейса, которые позволяют настраивать напряжение ЦП. (Выберите два варианта.)

Вопрос 15.
Какой опасности подвергает себя инженер, открывая блок питания, даже если последний был давно отключен от сети?

+++ поражению накопленным зарядом высокого напряжения
воздействию тяжелых металлов
ожогу от горячих компонентов
отравлению ядовитыми парами

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

Чем мощнее процессор, тем выше быстродействие ПК.

Центральный процессор часто называют просто процессором, ЦПУ (Центральное Процессорное Устройство) или CPU (Central Processing Unit), реже – кристаллом, камнем, хост-процессором.

Современные процессоры являются микропроцессорами.

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

Микропроцессор Intel 4004 (1971 г.)

Рисунок 1. Микропроцессор Intel 4004 (1971 г.)

Микропроцессор Intel Pentium IV (2001 г.). Слева – вид сверху, справа – вид снизу

Рисунок 2. Микропроцессор Intel Pentium IV (2001 г.). Слева – вид сверху, справа – вид снизу

ЦП предназначен для автоматического выполнения программы.

Устройство процессора

Основными компонентами ЦП являются:

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

Готовые работы на аналогичную тему

Получить выполненную работу или консультацию специалиста по вашему учебному проекту Узнать стоимость

Упрощенная схема процессора

Рисунок 3. Упрощенная схема процессора

Принципы работы процессора

ЦП работает под управлением программы, которая находится в оперативной памяти.

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

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

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

Характеристики процессора

Тактовая частота указывает частоту, на которой работает ЦП. За $1$ такт выполняется несколько операций. Чем выше частота, тем выше быстродействие ПК. Тактовая частота современных процессоров измеряется в гигагерцах (ГГц): $1$ ГГц = $1$ миллиард тактов в секунду.

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

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

Разрядность шины данных указывает на количество информации (в байтах), которое можно передать за $1$ раз (за $1$ такт). От разрядности адресной шины зависит максимальный объем оперативной памяти, с которым может работать ЦП.

От частоты системной шины зависит количество данных, которые передаются за отрезок времени. Для современных ПК за $1$ такт можно передать несколько бит. Важна также и пропускная способность шины, равная частоте системной шины, умноженной на количество бит, которые можно передать за $1$. Если частота системной шины равна $100$ Мгц, а за $1$ такт передается $2$ бита, то пропускная способность равна $200$ Мбит/сек.

Пропускная способность современных ПК исчисляется в гигабитах (или десятках гигабит) в секунду. Чем выше этот показатель, тем лучше. На производительность ЦП влияет также объем кэш-памяти.

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

Существует кэш-память трех видов:

  • Кэш-память $1$-го уровня самая быстрая, находится в ядре ЦП, поэтому имеет небольшие размеры ($8–128$ Кб).
  • Кэш-память $2$-го уровня находится в ЦП, но не в ядре. Она быстрее оперативной памяти, но медленнее кэш-памяти $1$-го уровня. Размер от $128$ Кбайт до нескольких Мбайт.
  • Кэш-память $3$-го уровня быстрее оперативной памяти, но медленнее кэш-памяти $2$-го уровня.

От объема этих видов памяти зависит скорость работы ЦП и соответственно компьютера.

ЦП может поддерживать работу только определенного вида оперативной памяти: $DDR$, $DDR2$ или $DDR3$. Чем быстрее работает оперативная память, тем выше производительность работы ЦП.

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

Типы процессоров

Основной компанией, выпускающей ЦП для ПК, является компания Intel. Первым процессором для ПК был процессор $8086$. Следующей моделью была $80286$, далее $80386$, со временем цифру $80$ стали опускать и ЦП стали называть тремя цифрами: $286$, $386$ и т.д. Поколение процессоров часто называют семейством $x86$. Выпускаются и другие модели процессоров, например, семейства Alpha, Power PC и др. Компаниями-производителями ЦП также являются AMD, Cyrix, IBM, Texas Instruments.

В названии процессора часто можно встретить символы $X2$, $X3$, $X4$, что означает количество ядер. Например в названии Phenom $X3$ $8600$ символы $X3$ указывают на наличие трех ядер.

Итак, основными типами ЦП являются $8086$, $80286$, $80386$, $80486$, Pentium, Pentium Pro, Pentium MMX, Pentium II, Pentium III и Pentium IV. Celeron является урезанным вариантом процессора Pentium. После названия обычно указывается тактовая частота ЦП. Например, Celeron $450$ обозначает тип ЦП Celeron и его тактовую частоту – $450$ МГц.

Процессор нужно устанавливать на материнскую плату с соответствующей процессору частотой системной шины.

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

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


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

Наверно, он важен, иначе зачем бы его устанавливать? Но что же делает кэш, и для чего ему разные уровни? И что означает «12-канальный ассоциативный кэш» (12-way set associative)?

Что такое кэш?

TL;DR: это небольшая, но очень быстрая память, расположенная в непосредственной близости от логических блоков центрального процессора.

Однако мы, разумеется, можем узнать о кэше гораздо больше…

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

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

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


Великий Т'Фон хранения данных

Причина этого заключается в том, что современные процессоры невероятно быстры — им требуется всего один тактовый цикл для сложения двух 64-битных целочисленных значений; если процессор работает с частотой 4 ГГЦ, то это составляет всего 0,00000000025 секунды, или четверть наносекунды.

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

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


Увы, но это Великий А'Туин хранения данных

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

Ну, у нас уже есть такая система, и она называется ОЗУ (RAM); она присутствует в каждом компьютере и выполняет именно эту задачу.

Почти все такие хранилища имеют тип DRAM (dynamic random access memory); они способны передавать данные гораздо быстрее, чем любой накопитель.


Однако, несмотря на свою огромную скорость, DRAM не способна хранить такие объёмы данных.

Одни из самых крупных чипов памяти DDR4, разработанных Micron, хранят 32 Гбит, или 4 ГБ данных; самые крупные жёсткие диски хранят в 4 000 раз больше.

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

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


10 МБ DRAM слева от графического процессора Xbox 360. Источник: CPU Grave Yard

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

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

На сцене появляется оставшаяся ступень: SRAM (static random access memory). DRAM использует микроскопические конденсаторы для хранения данных в виде электрического заряда, а SRAM для той же задачи применяет транзисторы, которые работают с той же скоростью, что и логические блоки процессора (примерно в 10 раз быстрее, чем DRAM).


Разумеется, у SRAM есть недостаток, и он опять-таки связан с пространством.

Память на основе транзисторов занимает гораздо больше места, чем DRAM: в том же размере, что чип DDR4 на 4 ГБ, можно получить меньше 100 МБ SRAM. Но поскольку она производится по тому же технологическому процессу, что и CPU, память SRAM можно встроить прямо внутрь процессора, максимально близко к логическим блокам.

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

И так мы добрались до более строгого определения понятия кэша: это набор блоков SRAM, расположенных внутри процессора; они обеспечивают максимальную занятость процессора благодаря передаче и сохранению данных с очень высокими скоростями. Вас устраивает такое определение? Отлично, потому что дальше всё будет намного сложнее!

Кэш: многоуровневая парковка


На приведённом выше изображении процессор (CPU) обозначен прямоугольником с пунктирной границей. Слева расположены ALU (arithmetic logic units, арифметико-логические устройства); это структуры, выполняющие математические операции. Хотя строго говоря, они не являются кэшем, ближайший к ALU уровень памяти — это регистры (они упорядочены в регистровый файл).

Каждый из них хранит одно число, например, 64-битное целое число; само значение может быть элементом каких-нибудь данных, кодом определённой инструкции или адресом памяти каких-то других данных.

Регистровый файл в десктопных процессорах довольно мал, например, в каждом из ядер Intel Core i9-9900K есть по два банка таких файлов, а тот, который предназначен для целых чисел, содержит всего 180 64-битных целых чисел. Другой регистровый файл для векторов (небольших массивов чисел) содержит 168 256-битных элементов. То есть общий регистровый файл каждого ядра чуть меньше 7 КБ. Для сравнения: регистровый файл потоковых мультипроцессоров (так в GPU называются аналоги ядер CPU) Nvidia GeForce RTX 2080 Ti имеет размер 256 КБ.

Регистры, как и кэш, являются SRAM, но их скорость не превышает скорость обслуживаемых ими ALU; они передают данные за один тактовый цикл. Но они не предназначены для хранения больших объёмов данных (только одного элемента), поэтому рядом с ними всегда есть более крупные блоки памяти: это кэш первого уровня (Level 1).


Одно ядро процессора Intel Skylake. Источник: Wikichip

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

ALU и регистровые файлы расположены слева и обведены зелёной рамкой. В верхней части фотографии белым обозначен кэш данных первого уровня (Level 1 Data cache). Он не содержит много информации, всего 32 КБ, но как и регистры, он расположен очень близко к логическим блокам и работает на одной скорости с ними.

Ещё одним белым прямоугольником справа показан кэш инструкций первого уровня (Level 1 Instruction cache), тоже имеющий размер 32 КБ. Как понятно из названия, в нём хранятся различные команды, готовые к разбиению на более мелкие микрооперации (обычно обозначаемые μops), которые должны выполнять ALU. Для них тоже существует кэш, который можно классифицировать как Level 0, потому что он меньше (содержит всего 1 500 операций) и ближе, чем кэши L1.

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

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


Кэш L2 процессора Skylake: 256 КБ SRAM

Но если бы это был единственный кэш внутри процессора, то его производительность наткнулась бы на неожиданное препятствие. Именно поэтому в ядра встраивается еще один уровень памяти: кэш Level 2. Это обобщённый блок хранения, содержащий инструкции и данные.

Он всегда больше, чем Level 1: в процессорах AMD Zen 2 он занимает до 512 КБ, чтобы кэши нижнего уровня обеспечивались достаточным объёмом данных. Однако большой размер требует жертв — для поиска и передачи данных из этого кэша требуется примерно в два раза больше времени по сравнению с Level 1.

Во времена первого Intel Pentium кэш Level 2 был отдельным чипом, или устанавливаемым на отдельной небольшой плате (как ОЗУ DIMM), или встроенным в основную материнскую плату. Постепенно он перебрался в корпус самого процессора, и, наконец, полностью интегрировался в кристалл чипа; это произошло в эпоху таких процессоров, как Pentium III и AMD K6-III.

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


Чип Intel Kaby Lake. Источник: Wikichip

На этом изображении чипа Intel Kaby Lake в левой части показаны четыре ядра (интегрированный GPU занимает почти половину кристалла и находится справа). Каждое ядро имеет свой «личный» набор кэшей Level 1 и 2 (выделены белыми и жёлтым прямоугольниками), но у них также есть и третий комплект блоков SRAM.

Кэш третьего уровня (Level 3), хоть и расположен непосредственно рядом с одним ядром, является полностью общим для всех остальных — каждое ядро свободно может получать доступ к содержимому кэша L3 другого ядра. Он намного больше (от 2 до 32 МБ), но и намного медленнее, в среднем более 30 циклов, особенно когда ядру нужно использовать данные, находящиеся в блоке кэша, расположенного на большом расстоянии.

Ниже показано одно ядро архитектуры AMD Zen 2: кэши Level 1 данных и инструкций по 32 КБ (в белых прямоугольниках), кэш Level 2 на 512 КБ (в жёлтых прямоугольниках) и огромный блок кэша L3 на 4 МБ (в красном прямоугольнике).


Увеличенный снимок одного ядра процессора AMD Zen 2. Источник: Fritzchens Fritz

Но постойте: как 32 КБ могут занимать больше физического пространства чем 512 КБ? Если Level 1 хранит так мало данных, почему он непропорционально велик по сравнению с кэшами L2 и L3?

Не только числа

Кэш повышает производительность, ускоряя передачу данных в логические блоки и храня поблизости копию часто используемых инструкций и данных. Хранящаяся в кэше информация разделена на две части: сами данные и место, где они изначально располагаются в системной памяти/накопителе — такой адрес называется тег кэша (cache tag).

Когда процессор выполняет операцию, которой нужно считать или записать данные из/в память, то он начинает с проверки тегов в кэше Level 1. Если нужные данные там есть (произошло кэш-попадание (cache hit)), то доступ к этим данным выполняется почти сразу же. Промах кэша (cache miss) возникает, если требуемый тег не найден на самом нижнем уровне кэша.

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

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


Для изучения информации кэша в процессоре вашего компьютера можно использовать бесплатные программы, например CPU-Z. Но что означает вся эта информация? Важным элементом является метка set associative (множественно-ассоциативный) — она указывает на правила, применяемые для копирования блоков данных из системной памяти в кэш.

Представленная выше информация кэша относится к Intel Core i7-9700K. Каждый из его кэшей Level 1 разделён на 64 небольших блока, называемые sets, и каждый из этих блоков ещё разбит на строки кэша (cache lines) (размером 64 байта). «Set associative» означает, что блок данных из системы привязывается к строкам кэша в одном конкретном сете, и не может свободно привязываться к какому-то другому месту.


Инклюзивный кэш L1+L2, victim cache L3, политики write-back, есть даже ECC. Источник: Fritzchens Fritz

Ещё один аспект сложности кэша связан с тем, как хранятся данные между разными уровнями. Правила задаются в inclusion policy (политике инклюзивности). Например, процессоры Intel Core имеют полностью инклюзивные кэши L1+L3. Это означает, что одни данные в Level 1, например, могут присутствовать в Level 3. Может показаться, что это пустая трата ценного пространства кэша, однако преимущество заключается в том, что если процессор совершает промах при поиске тега в нижнем уровне, ему не потребуется обыскивать верхний уровень для нахождения данных.

В тех же самых процессорах кэш L2 неинклюзивен: все хранящиеся там данные не копируются ни на какой другой уровень. Это экономит место, но приводит к тому, что системе памяти чипа нужно искать ненайденный тег в L3 (который всегда намного больше). Victim caches (кэши-жертвы) имеют похожий принцип, но они используются для хранения информации, переносимой с более низких уровней. Например, процессоры AMD Zen 2 используют victim cache L3, который просто хранит данные из L2.

Существуют и другие политики для кэша, например, при которых данные записываются и в кэш, и основную системную память. Они называются политиками записи (write policies); большинство современных процессоров использует кэши write-back — это означает, что когда данные записываются на уровень кэшей, происходит задержка перед записью их копии в системную память. Чаще всего эта пауза длится в течение того времени, пока данные остаются в кэше — ОЗУ получает эту информацию только при «выталкивании» из кэша.


Графический процессор Nvidia GA100, имеющий 20 МБ кэша L1 и 40 МБ кэша L2

Для проектировщиков процессоров выбор объёма, типа и политики кэшей является вопросом уравновешивания стремления к повышению мощности процессора с увеличением его сложности и занимаемым чипом пространством. Если бы можно было создать 1000-канальные ассоциативные кэши Level 1 на 20 МБ такими, чтобы они при этом не занимали площадь Манхэттена (и не потребляли столько же энергии), то у нас у всех бы были компьютеры с такими чипами!

Самый нижний уровень кэшей в современных процессорах за последнее десятилетие практически не изменился. Однако кэш Level 3 продолжает расти в размерах. Если бы десять лет назад у вас было 999 долларов на Intel i7-980X, то вы могли бы получить кэш размером 12 МБ. Сегодня за половину этой суммы можно приобрести 64 МБ.

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

Был ли у вас компьютер с кэшем L2 на материнской плате? Как насчёт слотовых Pentium II и Celeron (например, 300a) на дочерних платах? Помните свой первый процессор с общим L3?

На правах рекламы

Наша компания предлагает в аренду серверы с процессорами от Intel и AMD. В последнем случае — это эпичные серверы! VDS с AMD EPYC, частота ядра CPU до 3.4 GHz. Максимальная конфигурация — 128 ядер CPU, 512 ГБ RAM, 4000 ГБ NVMe.

Читайте также: