edubun
Русский

Что делает процессор

Процессор на 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, делает переход, только когда аккумулятор равен нулю, и именно этот единственный вид перехода позволяет программе принимать решения и повторять действия.

Загрузка

Перетащи, чтобы повернуть. Колёсико или щипок для масштаба.

Программа в ячейках от 0 до 3 складывает 7 (ячейка 14) и 5 (ячейка 15) и записывает 12 в ячейку 13. Нажимай «Шаг», чтобы двигаться по одной фазе, и следи за PC, IR и ACC. Четыре команды занимают двенадцать фаз. Потом выбери 4 × 3: эта программа умножает, трижды прибавляя 4 в цикле. Или выбери «Обратный отсчёт».

Сцена выполняет ту же программу, которую разыграл класс. Нажми «Шаг», и 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 миллионов раз в секунду. Настоящие процессоры не завершают по одной целой команде за такт так просто, как наша игрушка. Они совмещают фазы нескольких команд, как на конвейере, и это называется конвейерной обработкой. А современные микросхемы содержат рядом несколько полноценных процессоров, которые называются ядрами. В игрушке ничего этого нет, и именно поэтому за ней можно проследить вручную.

Код операцииНазваниеЧто делает
0000HALTСтоп
0001LOAD aACC = ячейка a
0010ADD aACC = ACC + ячейка a
0011SUB aACC = ACC − ячейка a
0100STORE aячейка a = ACC
0101JUMP aPC = a
0110JZ aесли ACC = 0, то PC = a
Частые ошибки
  • «PC считает, сколько команд выполнено». PC хранит адрес следующей команды. В программе 4 × 3 его дважды возвращают к 0, а число выполненных команд продолжает расти до 24.
  • «Процессор читает программу так же, как мы». Он читает 8 бит, делит их на код операции и адрес и действует по жёстко заданной схеме для этого кода. Как ученики с карточками, он никогда не знает, что программа складывает 7 и 5.
  • «Чем больше ГГц, тем быстрее компьютер, всегда». Тактовая частота задаёт, как часто может происходить шаг, а не сколько работы делается за каждый такт. Настоящие микросхемы совмещают фазы команд и имеют несколько ядер, поэтому две микросхемы с одинаковой частотой в ГГц могут выполнить очень разный объём работы.
Заметка для учителяРазыграй всё до того, как показывать сцену. Нарисуй шестнадцать клеток, раздай три карточки (PC, IR, ACC) и выполни программу 7 + 5 по одной фазе, а класс пусть называет вслух каждую фазу. Ученики теряются на том, что PC сдвигается уже во время выборки, поэтому, когда команда выполняется, PC уже указывает на следующую. Остановись после первой выборки и спроси, что написано на карточке PC. Тогда JUMP и JZ становятся понятны как «написать новое число на карточке PC». Когда игра получится, кнопка «Шаг» в сцене покажется знакомой.
  1. Расставь фазы цикла команды по порядку.
  2. Процессор выбирает команду по адресу 3. Чему равен PC сразу после выборки?
  3. Что означает 0010 1111 в игрушечном компьютере?
    • ADD 15
    • LOAD 15
    • STORE 2
    • ADD 7
  4. Запиши LOAD 14 в виде 8 бит.
  5. Тактовая частота 3 ГГц. Сколько длится один такт в наносекундах? (три знака после точки)
  6. Сколько команд выполняет программа 7 + 5 вместе с HALT?
  7. Каждая команда проходит три фазы. Сколько фаз занимает программа 7 + 5?
  8. Что делает STORE 13?
    • Копирует аккумулятор в ячейку 13
    • Копирует ячейку 13 в аккумулятор
    • Переходит по адресу 13
    • Прибавляет 13 к аккумулятору
  9. Какая команда позволяет программе повторять цикл, пока счётчик не дойдёт до нуля?
    • JZ (переход, если ноль)
    • STORE
    • HALT
    • LOAD
  10. В каком году фон Нейман написал «Первый проект отчёта об 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