- PVSM.RU - https://www.pvsm.ru -

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

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

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

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

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

Как работает CPU: интерактивный урок для начинающих
Штрих Шеффера (NAND gate)

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

Как работает CPU: интерактивный урок для начинающих
D-триггер (триггер задержки)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

8. Эмулятор CPU [9].

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

Simple CPU на Github [10]

Об авторе

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

Автор: alizar

Источник [13]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/programmirovanie/72151

Ссылки в тексте:

[1] Simple CPU: http://www.simplecpu.com/

[2] Бинарное счисление: http://www.simplecpu.com/Binary.html

[3] Логические операции: http://www.simplecpu.com/NAND.html

[4] Триггер: http://www.simplecpu.com/memory.html

[5] Логические операции AND, OR, XOR: http://www.simplecpu.com/moreGates.html

[6] схеме показано устройство под названием сумматор: http://www.simplecpu.com/adder.html

[7] Программирование: http://www.simplecpu.com/code.html

[8] Набор инструкций CPU: http://www.simplecpu.com/InstructionPointer.html

[9] Эмулятор CPU: http://www.simplecpu.com/cpu.html

[10] Simple CPU на Github: https://github.com/r0nk/simplecpu

[11] родился на форумах Reddit: https://www.reddit.com/r/explainlikeimfive/comments/2ax3k3/eli5_how_does_a_computer_actually_work_like_how/cizpwki

[12] r00nk: https://www.reddit.com/user/r00nk

[13] Источник: http://habrahabr.ru/post/240929/