# Архитектура компьютера ## Лекция 5 ## Схема процессора.
Производство аппаратуры Пенской А.В., 2026 --- ## Схема процессора 1. Язык Brainfuck 1. DataPath (обработка данных) 1. ControlUnit (выборка инструкций и управление) 1. Чтение из памяти (фрагмент DataPath) Источник: [ryukzak/brainfuck](https://github.com/ryukzak/brainfuck/blob/master/python/README.md#datapath) — пример отчёта по лаб. №4. ---- ### Язык Brainfuck Учебный эзотерический язык:
8 операций над лентой ячеек памяти и указателем.
| Символ | Действие | | :-----: | :------------------------------ | | `>` `<` | сдвинуть указатель вправо/влево | | `+` `-` | увеличить/уменьшить ячейку | | `.` `,` | вывести/ввести значение ячейки | | `[` `]` | цикл, пока значение ячейки ≠ 0 |
Процессору нужны: 1. память данных с адресацией (лента); 1. регистр-указатель и `+1`/`-1`; 1. аккумулятор + inc/dec 1. порты ввода/вывода; 1. сравнение с нулём (флаг `zero`) для циклов; 1. память команд и переход по адресу (для `[`/`]`).
---- ### DataPath (обработка данных) ```text latch ─────────►┌──────────────┐ addr ┌────────┐ data │ data_address │───┬────►│ data │ addr ┌────►└──────────────┘ │ │ memory │ │ │ │ │ ┌───────┐ │ │ │ sel ──►│ MUX │ ┌──────────┘ │ │ └───────┘ │ │ │ ▲ ▲ │ │ │ │ │ │ data_in │ │ data_out │ └───(+1)───┘ ┌────►│ │─────┐ │ │ │ │ │ │ └─────────(-1)───┘ │ oe │ │ │ │ ───►│ │ │ │ │ │ │ │ wr │ │ │ │ ───►│ │ │ │ └────────┘ │ │ ▼ ┌────────┐ latch_acc ┌─────┐ sel ────►│ MUX │ ─────────►│ acc │ └────────┘ └─────┘ ▲ ▲ ▲ │ │ │ │ └───(==0)───► zero │ │ │ │ │ │ └───(+1)────────┘ │ │ │ │ └──────(-1)────────┘ │ │ input ───────────────────┘ └──────────► output ``` ---- ### ControlUnit (управление) ```text ┌─────────────────(+1)────────┐ │ │ │ latch_program_counter │ │ │ │ │ ┌─────┐ ▼ │ └──►│ │ ┌─────────┐ │ ┌─────────┐ │ MUX │────►│ program │───┴───►│ program │ ┌──►│ │ │ counter │ │ memory │ │ └─────┘ └─────────┘ └─────────┘ │ ▲ │ │ │ sel_next │ current instruction │ │ │ └──────────────(select-arg)────────────┘ │ │ ┌─────────┐ │ │ │ step │ │ │ ┌───│ counter │ │ │ │ └─────────┘ │ ▼ ▼ ▲ │ ┌─────────────┐ │ └───────────────────────│ instruction │─────┘ │ decoder │ │ │◄───────┐ └─────────────┘ │ │ │ │ signals │ ▼ │ ┌──────────┐ zero │ │ │─────────┘ │ DataPath │ input ─────────► ├─────────► output └──────────┘ ``` --- ### Чтение из памяти (фрагмент DataPath) ```text latch ─────────►┌──────────────┐ addr ┌────────┐ data │ data_address │───┬────►│ data │ addr ┌────►└──────────────┘ │ │ memory │ │ │ │ │ ┌───────┐ │ │ │ sel ──►│ MUX │ ┌──────────┘ │ │ └───────┘ │ │ │ ▲ ▲ │ │ │ │ │ │ │ │ data_out │ └───(+1)───┘ │ │─────┐ │ │ │ │ │ └─────────(-1)───┘ oe │ │ │ ───►│ │ │ │ │ │ │ │ │ │ │ │ └────────┘ │ ▼ latch_acc ┌─────┐ output ─────────►│ acc │────────► └─────┘ ``` - `data_address` (за один такт) - $\rightarrow$ `data_memory[data_address]` $\rightarrow$ `acc_internal` (by latch) - $\rightarrow$ `(+1)` $\vee$ `(-1)` by MUX $\rightarrow$ `data_address` (by latch) ---- #### Временная диаграмма DataPath  ```verilog // signal will establish after each clock signal latch_data_address <= 0; data_address_sel <= 0; latch_acc <= 0; @(posedge clk); repeat(2) @(posedge clk); // addr to 3 latch_data_address <= 1; data_address_sel <= 1; latch_acc <= 0; @(posedge clk); latch_data_address <= 1; data_address_sel <= 1; latch_acc <= 0; @(posedge clk); latch_data_address <= 1; data_address_sel <= 1; latch_acc <= 0; @(posedge clk); // latch acc latch_data_address <= 0; data_address_sel <= 0; latch_acc <= 1; @(posedge clk); // addr to 2 latch_data_address <= 1; data_address_sel <= 0; latch_acc <= 0; @(posedge clk); // addr to 1 and latch acc at same time latch_data_address <= 1; data_address_sel <= 0; latch_acc <= 1; @(posedge clk); latch_data_address <= 0; data_address_sel <= 0; latch_acc <= 0; @(posedge clk); repeat(2) @(posedge clk); ``` ---- #### Реализация DataPath на Verilog
Интерфейс и инициализация ```verilog module data_memory ( input wire clk , input wire signal_latch_data_address , input wire signal_data_address_sel , input wire signal_latch_acc , output wire [7:0] acc ); reg [3:0] data_address; reg [7:0] mem[15:0]; wire [7:0] mem_out; reg [7:0] acc_internal; // not a part of hardware integer i; initial begin data_address = 0; for (i = 0; i < 8; i = i+1) mem[i] = i[7:0]; end ```
Адресация ```verilog always @(posedge clk) if ( signal_latch_data_address ) data_address <= // < = signal_data_address_sel ? data_address + 1 : data_address - 1; ``` Чтение аккумулятора ```verilog assign mem_out = mem[data_address]; always @(posedge clk) if ( signal_latch_acc ) acc_internal <= mem_out; // < = assign acc = acc_internal; endmodule ```
---- #### Синтезированная схема DataPath  - Так как память используется только для чтения, она выродилась в комбинационную схему. - Смысл цветов линий мне неизвестен. --- ### Лаб. 3. Схема. Как надо делать (примеры смотри выше) 1. Схема (схемы) должна помещаться на экран. 1. Не рисуйте линии clk. 1. Не рисуйте все сигнальные линии от ControlUnit ко всем элементам — обозначайте, как в примерах выше. 1. Уровень — Register Transfer Level (RTL): мультиплексоры, комбинационные схемы (blackbox), регистры. 1. Не дублируйте входы/выходы. Не стоит рисовать 10 выходов из 1 регистра. 1. Слева-направо, сверху-вниз, без лишних пересечений и "шума". ---- #### Лаб. 3. Схема. Как не надо делать (1..n) (так делать не надо — корректный и достаточный отзыв)  ----  ----  ----  ----  ----  ----  ----  ----  ----  --- ## Производство аппаратного обеспечения документация + технология + элементная база = изделие
Технология
проектные нормы (оснастка)
Элементная база
каталог "кирпичиков"
*Тенденции*: 1. рост уровня интеграции 1. снижение затрат на производство изделия 1. усложнение производственной цепочки *Disclaimer*: 1. я не занимаюсь производством и проектированием РЭА 1. обзор не претендует на полноту 1. откуда взялась "производственная документация" — неважно --- ### Навесной монтаж
Элементы располагаются на изолирующем шасси и соединяются проводами или непосредственно выводами.

----
Достоинства: 1. простота производства 1. простота подготовки производства 1. гибкость
(если не "залить компаундом") Недостатки: 1. сложность автоматизации, дорого в серии 1. надёжность
(если не "залить компаундом") 1. плотность ограничена прямотой рук монтажника
На макетной плате: 
--- ### Монтаж на печатную плату
Печатная плата
пластина из диэлектрика, на поверхности и/или внутри которой электрические цепи.
Различают: 1. однослойные, 1. двухслойные, 1. многослойные платы.

----
### Виды монтажа компонентов 1. выводной (в отверстие) 1. поверхностный 1. встроенный 
 
---- #### Поверхностный монтаж (SMD)
Surface-mount technology (SMT)

 Ball Grid Array (BGA)
----
##### Поверхностный монтаж: Достоинства 1. автоматизация 1. плотность размещения компонентов 1. размеры 1. стоимость в серии
##### Поверхностный монтаж: Недостатки 1. необходимость подготовки производства 1. удлинение производственной цепочки 1. сложность внесения исправлений
--- ### Производственная цепочка для поверхностного монтажа  ---- #### Дизайн-центр ЛМТ ([lmt.spb.ru](https://lmt.spb.ru)) реализует полный цикл разработки РЭА: от схемотехники до опытного и серийного производства.       Экскурсия --- ## Интегральные схемы.
Кремниевое производство
СБИС (сверхбольшая интегральная схема)
интегральная схема с очень высокой плотностью транзисторов (миллионы — миллиарды).
ASIC (Application-Specific Integrated Circuit)
интегральная схема, спроектированная и изготовленная под конкретную задачу.

---- ### Кремниевый песок Начало производственной цепочки  ---- ### Выращиваем монокристалл кремния (буля)


---- ### Производим подложку будущих чипов (Wafer)


---- ### Фотолитография и "море" транзисторов
"свет-шаблон-фоторезист" 1. На кремниевую подложку наносят материал для рисунка. 1. Наносится фоторезист. 1. Экспонирование через фотошаблон. 1. Удаление отработанного фоторезиста.

----
### Interconnect
Чип в разрезе

 ---- ### Извлечение чипов и корпусирование


---- ### Производственная цепочка  --- ### Современный степпер
(засветка фотошаблона)
  [источник](https://habr.com/ru/company/dcmiran/blog/490682/)
 ~ 180 тонн, ~ двухэтажный автобус
---- "Внутри самой современной EUV-машины каждую секунду 50 000 капель расплавленного олова падают через камеру в её основании. Пара высокоэнергетических лазеров на углекислом газе ударяет по каждой капле, создавая плазму, которая, в свою очередь, испускает свет нужной длины волны. Первый импульс преобразует каплю олова в туманную форму блина, так что второй импульс, который является более мощным и следует за ним всего через 3 микросекунды, взрывает олово в плазму, которая светится на длине волны 13,5 нанометров, как показано на [видео](https://www.youtube.com/watch?v=aR-4AH6n_w8&list=PLLROOWd6snSJjAHlf9YvdjSF7DGxMDJsD&index=1&ab_channel=ASML)."  --- ## Физический мир это больно

1. Производственная цепочка и цепочка поставок 1. Логистика, склады 1. Специалисты, мастера... 1. Тестирование, упаковка, дистрибуция 1. *Эксплуатация, поддержка, обслуживание, ремонт* 1. *Замена, модернизация*
----
### Эксплуатация, обслуживание 1. Поломка оборудования. 1. Физический доступ и среда эксплуатации. 1. Амортизация, срок службы, деградация. 1. Ремонт / исправление.
Навесной > плата > кремний. One-Way Light Time: 23:51:58 (hh:mm:ss)
  
---- #### Замена, модернизация
1. Воспроизводство. - Устаревшая элементная база. - Штучное производство. 1. Нет расходников и сопутствующего оборудования - CD-ROM, дискеты. 1. Замена на новое изделие: - Перепроектирование со старым интерфейсом. - Виртуализация. 1. Изменение UX: время старта, помехоустойчивость, задержки, и т.п.
 Парадокс Тесея.
--- ### Вопрос: почему происходит разбег?

`P1` и `P2` — идентичные процессоры, с идентичным ПО, с единым тактовым сигналом. `comparator` — сравнивает результат работы `P1` и `P2` и, в случае ошибки, — аварийная перезагрузка. Почему процессоры могут регулярно выдавать разные значения?
Notes: сигнал такта и данных идёт до `P1` и `P2` по проводникам разной длины — разная задержка распространения (skew). У границы такта расходящийся по времени фронт может быть по-разному воспринят двумя формально идентичными схемами. Решение — выравнивание длины линий (см. следующий слайд). ----  Выравнивание длины линий на плате. ---- #### Вопрос: что это?      Оловянные нитевидные кристаллы [источник](https://alex-avr2.livejournal.com/211190.html) ---- ### О надёжности кремниевого производства Производственный брак неизбежен: не все транзисторы на пластине работают корректно. **Чип биннинг** — один и тот же кристалл продаётся под разными марками: дефектные или нестабильные блоки блокируются программно или лазером. 1. Разные частоты процессоров → разные SKU из одного wafer. 1. Core Single / Core Duo / Core Quad → одинаковый кристалл, разное число активных ядер. 1. Intel Pentium / Celeron → урезанные Core с отключёнными кэшем и функциями.