Что делает процессор
Процессор на 3 ГГц тикает 3 миллиарда раз в секунду, один такт каждую треть наносекунды.
Представь урок информатики. (Сцена придумана.) На доске нарисованы шестнадцать пронумерованных клеток, в каждой записано восемь битов. Трое учеников играют процессор. У одного карточка с надписью PC, у другого с надписью IR, у третьей с надписью ACC. На карточке PC написано 0. Ученик с IR идёт к клетке 0 и переписывает то, что там есть, 0001 1110, а ученик с PC меняет число на карточке на 1. Класс ищет первые четыре бита в таблице на стене: 0001 означает LOAD. Последние четыре, 1110, дают 14. Тогда ученица с ACC идёт к клетке 14 и переписывает найденное там число 7. Потом всё начинается снова с клетки 1.
В клетке 1 написано ADD 15, поэтому ACC становится 7 + 5 = 12. В клетке 2 написано STORE 13, и ученица с ACC записывает 12 в клетку 13. В клетке 3 написано HALT, и все садятся. Всего двенадцать ходов. Никому из троих не нужно было знать, что программа «складывает 7 и 5». Каждый выполнял одно маленькое правило. Клетки служат памятью, карточки играют роль регистров, а таблица на стене работает как дешифратор. Настоящий процессор работает так же, миллиарды раз в секунду, и внутри него программу тоже никто не понимает.
Один и тот же короткий цикл миллиарды раз в секунду
Вентили умеют складывать, сравнивать и выбирать, но кто-то должен говорить им, что делать, в каком порядке и с какими числами. Этим занимается центральный процессор (CPU). Он повторяет один короткий цикл. Счётчик команд (PC) хранит адрес следующей команды. Выборка: процессор читает ячейку, на которую указывает PC, в регистр команд (IR) и увеличивает PC на единицу. Декодирование: управляющие схемы смотрят на биты кода операции и настраивают нужные пути, например подключают сумматор для ADD. Выполнение: работа делается. Число загружается, складывается или сохраняется, или меняется PC, чтобы программа перешла в другое место. Потом цикл начинается заново. Одна команда, JZ, делает переход, только когда аккумулятор равен нулю, и именно этот единственный вид перехода позволяет программе принимать решения и повторять действия.
Перетащи, чтобы повернуть. Колёсико или щипок для масштаба.
Сцена выполняет ту же программу, которую разыграл класс. Нажми «Шаг», и PC, IR и ACC будут меняться точно так же, как карточки: LOAD 14, затем ADD 15, STORE 13 и HALT, четыре команды по три фазы, всего двенадцать фаз. Программа умножения использует те же несколько команд, но её JZ и JUMP дважды возвращают PC к 0, прежде чем счётчик в ячейке 15 дойдёт до нуля, поэтому она выполняет 24 команды за 72 фазы. Это в шесть раз больше команд, чем при сложении.
Программа лежит в той же памяти, что и числа
На доске команды и числа 7 и 5 стояли в одном ряду клеток. Это не случайно. В июне 1945 года Джон фон Нейман написал «Первый проект отчёта об EDVAC» (First Draft of a Report on the EDVAC), где описал компьютер, который хранит команды в той же памяти, что и данные. Почти все компьютеры с тех пор устроены так же. Команда представляет собой просто число, биты которого разделены на поля. В этом игрушечном компьютере каждая ячейка хранит 8 бит. Первые четыре говорят, что делать (код операции), а последние четыре говорят, какую ячейку использовать (адрес). 0001 означает LOAD, поэтому 0001 1110 означает «LOAD 14»: скопировать число из ячейки 14 в аккумулятор, рабочий регистр процессора.
Как быстро идёт цикл
Шаги идут в такт с тактовым сигналом, то есть напряжением, которое включается и выключается с постоянной частотой. Тактовый генератор на 3 ГГц тикает 3 000 000 000 раз в секунду, поэтому один такт длится 1 ÷ 3 000 000 000 секунды, примерно 0.333 наносекунды. Свет за это время проходит всего около 10 сантиметров. Если тратить одну фазу на такт, этого хватит, чтобы выполнять программу 7 + 5 нашей игрушки 250 миллионов раз в секунду. Настоящие процессоры не завершают по одной целой команде за такт так просто, как наша игрушка. Они совмещают фазы нескольких команд, как на конвейере, и это называется конвейерной обработкой. А современные микросхемы содержат рядом несколько полноценных процессоров, которые называются ядрами. В игрушке ничего этого нет, и именно поэтому за ней можно проследить вручную.
| Код операции | Название | Что делает |
|---|---|---|
| 0000 | HALT | Стоп |
| 0001 | LOAD a | ACC = ячейка a |
| 0010 | ADD a | ACC = ACC + ячейка a |
| 0011 | SUB a | ACC = ACC − ячейка a |
| 0100 | STORE a | ячейка a = ACC |
| 0101 | JUMP a | PC = a |
| 0110 | JZ a | если ACC = 0, то PC = a |
- «PC считает, сколько команд выполнено». PC хранит адрес следующей команды. В программе 4 × 3 его дважды возвращают к 0, а число выполненных команд продолжает расти до 24.
- «Процессор читает программу так же, как мы». Он читает 8 бит, делит их на код операции и адрес и действует по жёстко заданной схеме для этого кода. Как ученики с карточками, он никогда не знает, что программа складывает 7 и 5.
- «Чем больше ГГц, тем быстрее компьютер, всегда». Тактовая частота задаёт, как часто может происходить шаг, а не сколько работы делается за каждый такт. Настоящие микросхемы совмещают фазы команд и имеют несколько ядер, поэтому две микросхемы с одинаковой частотой в ГГц могут выполнить очень разный объём работы.
- Расставь фазы цикла команды по порядку.
- Процессор выбирает команду по адресу 3. Чему равен PC сразу после выборки?
- Что означает 0010 1111 в игрушечном компьютере?
- ADD 15
- LOAD 15
- STORE 2
- ADD 7
- Запиши LOAD 14 в виде 8 бит.
- Тактовая частота 3 ГГц. Сколько длится один такт в наносекундах? (три знака после точки)
- Сколько команд выполняет программа 7 + 5 вместе с HALT?
- Каждая команда проходит три фазы. Сколько фаз занимает программа 7 + 5?
- Что делает STORE 13?
- Копирует аккумулятор в ячейку 13
- Копирует ячейку 13 в аккумулятор
- Переходит по адресу 13
- Прибавляет 13 к аккумулятору
- Какая команда позволяет программе повторять цикл, пока счётчик не дойдёт до нуля?
- JZ (переход, если ноль)
- STORE
- HALT
- LOAD
- В каком году фон Нейман написал «Первый проект отчёта об EDVAC»?
- Программы хранятся в виде чисел в той же памяти, что и данные (фон Нейман, 1945).
- Процессор повторяет выборку, декодирование и выполнение; PC указывает на следующую команду.
- Биты команды делятся на код операции и адрес.
- Темп задаёт тактовый генератор: при 3 ГГц один такт приходится на каждые 0.333 нс.
Источники курса (9)
- (checked 2026-10-17; reordered 2026-10-19: standards first, then official documentation, then the teaching model and calculations, history sources last)
- Standards: NIST, "Prefixes for binary multiples" (physics.nist.gov/cuu/Units/binary.html: IEC approved kibi, mebi, gibi in December 1998; 1 B = 8 bit; 1 MiB = 1 048 576 B; 1 MB = 1 000 000 B; 1 GiB = 1 073 741 824 B; historical note: memory makers usually mean 2²⁰ bytes by megabyte, storage makers 1 000 000, and the "1.44 MB" diskette uses a megabyte of 1 024 000 bytes)
- IETF RFC 20 "ASCII format for Network Interchange" (1969, 7-bit codes, A = 65, a = 97, 0 = 48)
- IETF RFC 3629 "UTF-8, a transformation format of ISO 10646" (2003: 1 to 4 octets per character, ASCII unchanged, code points up to U+10FFFF, U+0800 to U+FFFF take three octets, "the first octet of a multi-octet sequence indicates the number of octets", example U+D55C U+AD6D U+C5B4 = ED 95 9C EA B5 AD EC 96 B4)
- Official documentation: MDN Web Docs, "<color>" (hexadecimal colour notation #RRGGBB)
- Intel, "Intel Chips" timeline poster (2012: Intel 4004 of 1971 with 2,300 transistors; 2nd generation Core 2010 with 1.16 billion)
- Claude E. Shannon, "A Symbolic Analysis of Relay and Switching Circuits", Transactions of the AIEE vol. 57 (1938)
- abstract of his MIT master's thesis. Computer History Museum, The Silicon Engine, "1947: Invention of the Point-Contact Transistor" (Bardeen and Brattain, December 1947, germanium)
- John von Neumann, "First Draft of a Report on the EDVAC" (30 June 1945, Moore School, reprinted in IEEE Annals of the History of Computing 15:4, 1993).
Проверено: 2026-10-17