CARDboard Illustrative Aid to Computation

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

CARDIAC (англ.  CARDboard Illustrative Aid to Computation — «Картонное Наглядное Пособие по Вычислениям») — учебная модель компьютера, сделанная из бумаги, разработанная Дэвидом Хагельбаргером и Солом Фингерманом в 1968 для Bell Telephone Laboratories в целях обучения студентов принципам работы компьютера.

То есть на самом деле это не совсем компьютер, так как проводником сигналов, а также АЛУ в нем выступает человек. Тем не менее, он позволяет понять некоторые принципы, лежащие в основе современной вычислительной техники.

Компьютер «функционирует» с помощью карандаша и бумажных полос. Любые вычисления происходят в голове пользователя данного компьютера. Компьютер использует десятичную систему счисления. Значения хранятся в 100 ячейках памяти, которые хранят вписанные цифры от 0 до ± 999. Используется набор из 10 команд, которые позволяют CARDIAC складывать, вычитать, проверять, сдвигать, вводить, выводить и перескакивать ячейки памяти.

Устройство

[править | править код]

CARDIAC состоит из двух блоков — памяти и процессора. В процессорный блок вставлены 4 бумажные полоски, с помощью которых нужно выбирать выполняющуюся инструкцию. Кроме этого, в блок памяти вставляется лента, куда происходит вывод, а в процессор — лента со входными данными.

Компьютер имеет 100 ячеек памяти с адресами от 00 до 99. Каждая из них может быть использована для хранения одной инструкции или одного трехзначного числа. Любая из ячеек может быть перезаписана, так что при желании можно даже написать самомодифицирующуюся программу. Ячейка 0 принадлежит к «ПЗУ», всегда содержит «1». Ячейки с 1 по 98 принадлежат к «ЗУПД», в них хранятся инструкции и данные. Ячейка 99 наиболее похожа на «EEPROM».

Значения в ячейки заносятся в десятичной системе счисления от 0 до ±999 с помощью карандаша, а модифицируются с помощью карандаша и ластика. В качестве счетчика инструкций используются «божья коровка». Она вставляется в специальные отверстия, пробитые около каждой из ячеек памяти.

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

[править | править код]

CARDIAC может «выполнять» 10 различных инструкций машинного языка (с кодами от 0 до 9). Каждая инструкция кодируется с помощью трехзначного десятичного числа. Первая цифра (O) — это всегда код операции. Остальные две цифры (A) представляют собой адрес ячейки, которой оперирует инструкция. Инструкции позволяют переносить содержимое аккумулятора в ячейку, содержимое ячейки в аккумулятор, вводить информацию с входной ленты в ячейку памяти и выводить информацию из ячейки памяти в выходную ленту.

    OAA

Для CARDIAC не существует высокоуровневых языков программирования, так как цель проекта показать работу простейшего процессора.

Программы пишутся вручную и записываются карандашом в ячейки памяти.

Система команд

[править | править код]
CARDIAC набор инструкций
Код операции Сокращение Инструкция Описание
0 INP Ввод запись содержимого входной ленты в ячейку памяти.
1 CLA Загрузить очищает аккумулятор и переносит в него содержимое ячейки памяти.
2 ADD Сложение прибавление содержимого ячейки памяти к аккумулятору.
3 TAC Условие проверка значения содержимого аккумулятора; переход по заданному адресу, если значение аккумулятора отрицательное.
4 SFT Сдвиг операция сдвига аккумулятора влево и вправо на заданное число десятичных разрядов
5 OUT Вывод запись содержимого ячейки памяти в выходную ленту.
6 STO Сохранить очищает ячейку памяти и переносит в неё содержимое аккумулятора.
7 SUB Вычитание вычитание содержимого ячейки памяти из аккумулятора.
8 JMP Прыжок безусловный переход по заданному адресу. Номер активной ячейки хранится в ячейке 99. Это позволяет выполнять возврат из подпрограмм.
9 HRS Остановка и сброс переход по заданному адресу, затем следует завершение программы.

Человек последовательно выполняет инструкции, в чем и заключается функционирование компьютера. Перед началом выполнения, необходимо посмотреть где находится «божья коровка» (то есть счетчик инструкций) и перемещая полоски набрать значение из этой ячейки памяти в окошке «Instruction Register». Дальше необходимо следовать по стрелкам, начиная с надписи «Start» и выполнять все предписания. Вычисления (сложение, вычитание и сдвиг) придется выполнять вручную. Для этого рядом с надписью «Accumulator» есть несколько окошек, позволяющих выполнять сложение/вычитание в столбик.

Сообщество

[править | править код]

Сообщество пользователей CARDIAC в Facebook и Google+