# Центральный процессор (CPU, Central Processing Unit) 

### Джон фон Нейман и архитектуры процессоров

Основы об архитектуре вычислительных машин заложил Джон фон Нейман в 1944 году, когда подключился к созданию **первого в мире лампового компьютера ENIAC** (Electronic Numerical Integrator, Analyzer and Computer/Электронный числовой интегратор и вычислитель). 

![ComputerFonNeiman](/pictures//Memory/ComputerFonNeiman.jpg?raw=true)

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

Сущность фон-неймановской концепции ЭВМ можно свести к четырем принципам:
* Двоичное кодирование: вся информация (как команды, так и данные) кодируется двоичными циф- рами 0 и 1, поскольку двоичное кодирование по теории информации близко к оптимальному, а кроме того, легче реализовать элементы с двумя устойчивыми состояниями (магнитные сердечники, триггеры);
* Программное управление: команды программы, так же как и данные, хранятся в памяти машины; хранимая программа позволяет выполнять команды в естественном порядке следования либо осуществлять произвольный переход от одной команды к другой;
* Однородность памяти: Вид хранимой информации (команды или данные непосредственно в па- мяти) неразличим, а зависит от последующего использования; команды могут обрабатываться так же, как и числовые данные (модификация команд – сейчас не поощряется), либо порождать в процессе обработки другие команды (трансляция – широко применяется);
* Адресность: в команде указываются не сами данные, а адреса их размещения в памяти;

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

![](/pictures/Memory/ArchitectureComputerFonNeiman.svg.png?raw=true)

Cхема устройства современных компьютеров несколько отличается. В частности, арифметическо-логическое устройство и устройство управления, как правило, объединены в единое устройство — **центральный процессор (CPU)**. Тем не менее, **большинство современных компьютеров** в основных чер­тах **соответствуют принципам*, **изложенным фон Нейманом**.

## Что же такое процессор?

**Процессор** – устройство или программа, которые предназначаются для **обработки чего-либо**. Центральный вычислительный элемент любого компьютера. Он управляет всеми остальными компонентами оборудования, поэтому его также называют CPU (Central Processing Unit)

<div style="text-align: center;">
    <img src="https://github.com/eldaroid/iTWiki/blob/master/pictures/Memory/MicroScheme.jpeg?raw=true" alt="Memory hierarchy" style="width: 70%; height: auto;">
</div>

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

![Processor_Scheme](/pictures/Memory/Processor_Scheme.png?raw=true)

Google заявляет, что процессор – это электронный блок или интегральная схема, исполняющая машинные инструкции. Главная часть аппаратного обеспечения ЭВМ и программируемых логических контроллеров.

### Принцип работы CPU

Принцип функционирования CPU Google описывает так:

1) Сначала блок управления процессора забирает из оперативной памяти необходимые данные и команды, загружая их в кэш;
2) После получения информации из кэша процессор записывает их в регистры. Инструкции отправляются в регистры команд, а значения – отправляются в регистры данных;
3) Как только инструкции считаны, начинается их выполнение. За данный этап отвечает арифметико-логическое устройство;
4) Результаты обработки данных записываются в регистр. Google говорит о том, что при завершении вычислений они записываются в буферную память. Промежуточные результаты сохраняются в кэше;

Если цикл вычислений завершен, результат сохраняется в [оперативную память устройства](/3%20Memory%20and%20Concurrency/3.1%20Memory/3.1.2%20RandomAccessMemory/3.1.2.1%20RAM.md) – это помогает освободить место в буферной памяти. 

![Processor_CPU](/pictures/Memory/Processor_CPU.jpg?raw=true)


### Архитектура: x86 vs ARM (CISC vs RICS)

Каждый производитель в 70х считал свою платформу лучшей и делал свою архитектуру процессора. Это привело к изобилию разных платформ, пока не пришёл Intel 8086 в 1978 году впервые и не представила **x86-архитектура**. На фоне других форматов x86 предлагал наиболее оптимальные и эффективные инструкции обработки данных - **CISC (Complex Instruction Set Computing)**.

**ARM** появилась в 1985 году, как упрощённая альтернатива x86. В ней используется упрощённый набор инструкций **RISC (reduced instruction set computer)**, поэтому не нужны «тяжеловесные» вычислительные блоки => требуется меньше времени и энергии на обработку каких-то базовых задач.

> Сейчас все телефоны и планшеты построены на чипах по архитектуре ARM

### Ядра (Cernel)

Кристалл как раз и содержит Ядра:

![Processor_Core](https://github.com/eldaroid/iTWiki/blob/master/pictures/Memory/CPUwithCernel.jpg?raw=true)

Внутренность ядра схематично можно изобразить следующи образом:

![Processor_Core](https://github.com/eldaroid/iTWiki/blob/master/pictures/Memory/Processor_Core2.png?raw=true)

> ❗ В однопоточном процессоре каждое ядро обрабатывает только один поток данных.
>
> Hyper-Threading (HT) — это технология Intel, позволяет 1му физическому ядру обрабатывать два потока данных одновременно. Достигается за счет создания двух виртуальных (логических) ядер на базе одного физического.


### Memory hierarchy или самая быстрая память компьютера

1) **Cамая быстрая «память»** — это **регистры процессора**, находятся внутри вычислительных ядер ЦП и доступны за один–несколько тактов, без каких-либо обращений к кэшам или оперативной памяти. Поэтому регистры считаются самым быстрым местом для хранения данных в компьютере.

2) Сразу после регистров по скорости доступа и близости к ядрам процессора идёт кэш-память. Причём внутри кэша существует ещё несколько уровней:
* L1-кэш – самый быстрый, но самый маленький по объёму;
* L2-кэш – больше, чем L1, но чуть медленнее;
* L3-кэш – общий для всех ядер  .

3) После кэшей идёт оперативная память ([RAM/ОЗУ](/3%20Memory%20and%20Concurrency/3.1%20Memory/3.1.2%20RandomAccessMemory/3.1.2.1%20RAM.md));
4) затем постоянные накопители (SSD, HDD), которые намного медленнее;

<div style="text-align: center;">
    <img src="https://github.com/eldaroid/iTWiki/blob/master/pictures/Memory/MemoryHierarchy.png?raw=true" alt="Memory hierarchy" style="width: 60%; height: auto;">
</div>

### Что делают транзисторы в процессорах?

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

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

<div style="text-align: center;">
    <img src="https://github.com/eldaroid/iTWiki/blob/master/pictures/Memory/TransistorsEvolution.jpg?raw=true" alt="Memory hierarchy" style="width: 70%; height: auto;">
</div>

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

* Единица - есть ток (ламка горит);
* Ноль - нет тока (лампа не горит);

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

### Закон Мура

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

<div style="text-align: center;">
    <img src="https://github.com/eldaroid/iTWiki/blob/master/pictures/Memory/Mure.jpg?raw=true" alt="Memory hierarchy" style="width: 75%; height: auto;">
</div>

> ❗ Количество транзисторов на кристалле удваивается примерно каждые 2 года. 

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

<div style="text-align: center;">
    <img src="https://github.com/eldaroid/iTWiki/blob/master/pictures/Memory/SquareMure.jpg?raw=true" alt="Memory hierarchy" style="width: 50%; height: auto;">
</div>

Так родилась маркировка техпроцесса: каждые два года эту цифру умножали на 0.7. Например, при переходе от 1000-нм техпроцесса к 700-нм, количество транзисторов на чипе возросло в 2 раза. Примерно то же можно сказать и обо всех современных процессорах: 14 нм -> 10 нм -> 7 нм -> 5 нм.

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

### Создание транзистора

1. [Магия транзисторов: как мы научили компьютеры думать с помощью кусочков кремния?](https://www.youtube.com/watch?v=_5W_GZOPa8E)

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

![TransistorBase](/pictures/Memory/TransistorBase.jpg?raw=true)

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

![Transistor-with-NP-areas](/pictures/Memory/Transistor-with-NP-areas.jpg?raw=true)

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

![transistor-make-metal-gate](https://github.com/eldaroid/iTWiki/blob/master/pictures/Memory/transistor-make-metal-gate.jpg?raw=true)

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

![how-transistor-control-flow](/pictures/Memory/how-transistor-control-flow.jpg?raw=true)

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

* Вход — Исток;
* Выход — Сток;
* Металл с изоляцией — Затвор;

![processor-transistor-description](/pictures/Memory/processor-transistor-description.jpg?raw=true)

### Техпроцесс

Производители освоили производство чипов, а вернее сказать транзисторов, по 5-нанометровой технологии.

> Волос человека имеет толщину 80 тысяч нанометров — выходит, на его разрезе в теории можно разместить 16 тысяч транзисторов. 
> 
> Вирус COVID-19 имеет размер 110 нм и на нём можно разместить целых 22 транзистора от Apple M1.

#### Что внутри такого транзистора имеет размер 7 нанометров?

Если бы этот же вопрос я задал лет 20 назад, правильным ответом была бы **длина затвора** (или длина канала, по которому протекает ток от стока к истоку):

![processor-transistor-size](/pictures/Memory/processor-transistor-size.jpg?raw=true)

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

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

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

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

![finfet-transistor](/pictures/Memory/finfet-transistor.jpg?raw=true)

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

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

#### Что важнее — нанометры или плотность?

Длина канала в 14-нм процессоре от Intel составляет 24 нанометра, а у Samsung — 30 нанометров. Отличаются и другие метрики этих процессоров, сделанных, казалось бы, по одинаковому техпроцессу. Более того, длина затвора — не самая миниатюрная часть транзистора. В том же 14-нм процессоре ширина канала вообще состоит из нескольких атомов и составляет 8 нанометров! То есть, техпроцесс — это даже не описание самой маленькой части транзистора.

![ComapreIntelTSMCGlobal](/pictures/Memory/ComapreIntelTSMCGlobal.png?raw=true)

> 10/7-нанометровые чипы у Intel и TSMC соответственно. Размеры составляющих у них почти идентичны, поэтому 10-нанометров Intel не сильно-то и уступают 7 нм у TSMC

Ругают Intel за то, что не смогли выпустить коммерческий процессор на архитектуре 5-7 нм, как Apple и Qualcomm. Но вот по плотности размещения транзисторов — Intel безусловный лидер. На один квадратный миллиметр 10 нм процессора Intel помещается на целых 5% больше транзисторов, чем в чипах от Apple, Qualcomm или AMD. Кстати, последние поколения процессоров от этих трёх брендов производит TSMC. 

![CompareTransistor](/pictures/Memory/CompareTransistor.jpg?raw=true)

#### Вывод

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

> Разница техпроцесса в 0.7 раз означает двукратное увеличение количества транзисторов

Для примера можем посмотреть на последние чипы от Apple. В 10-нм процессоре Apple A11 Bionic содержится 4.3 млрд транзисторов, в 7-нм  A13 Bionic — 8.5 млрд транзисторов, в А14 11.8 млрд. 

![AppleA14](/pictures/Memory/AppleA14.jpg?raw=true)

То есть, видим, что техпроцесс отличается в 0.7 раз, а количество транзисторов — в 2 раза

---

[2.0.1 Linux Theme](./2.0.1%20Linux.md) | [Back To iTWiki Contents](https://github.com/eldaroid/iTWiki) | [2.0.3 File System in Linux Theme](./2.0.3%20FileSystemLinux.md)