geektimes

Как работает CPU: интерактивный урок для начинающих

  • вторник, 21 октября 2014 г. в 03:10:47
http://habrahabr.ru/post/240929/

Simple CPU — маленький урок, который знакомит новичка с ключевыми понятиями информатики. Хотя урок далеко не полный и предназначен для «самых маленьких», но даже образованному человеку приятно видеть, насколько доступно и элегантно можно изложить сложный материал.

Урок состоит из 8 интерактивных примеров.

1. Бинарное счисление.

2. Логические операции на примере штриха Шеффера (NAND gate).


Штрих Шеффера (NAND gate)

3. Триггер. Демонстрирует, как хранится информация в компьютере. Верхний переключатель изменяет значение бита, а нижний включает/отключает хранение.


D-триггер (триггер задержки)

Восемь триггеров сохраняют 1 байт информации.

4. Логические операции AND, OR, XOR. Щёлкая мышкой по входящим значениям, можно наглядно посмотреть, как они работают.



Что делать с числами, которые мы храним в памяти?

5. На схеме показано устройство под названием сумматор, которое складывает два бита. Если нужно сложить несколько бит, то последовательно используется несколько сумматоров: вход одного (carry in) подключается к выходу другого (carry out).



Опять же, это интерактивная схема.

Далее, как из калькулятора сделать компьютер?

6. Программирование.

С точки зрения CPU, программа не отличается от данных в том смысле, что здесь такой же двоичный код. Но он воспринимаются как инструкции. Например:

Инструкция Код
«Добавить одно число к другому»    00000001
«Вычесть одно число из другого»    00000010

У каждого байта в памяти есть свой адрес, так что мы можем обратиться к CPU и попросить сделать что-то с конкретным байтом. Например, если нужно обратиться к ячейке памяти № 5, то мы указываем её адрес 00000101.

Таким образом, команда «Сложить число в ячейке памяти № 5 с числом в ячейке памяти № 7 транслируется в машинный код:

00000001 00000101 00000111
(сложить)(адрес № 5)(адрес № 7)

7. Набор инструкций CPU.

8. Эмулятор CPU.

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

Simple CPU на Github

Об авторе
P.S. Интересно, что проект родился на форумах Reddit, а его автор — только что закончивший школу пользователь r00nk. Поскольку r00nk двоечник, его сейчас не берут ни в один хороший колледж, так что он пытается пройти курс информатики самостоятельно, попутно изучая OpenGL.