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

Операции

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

Сообщество

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

См. также

Ссылки