zHz00 Untitled

воскресенье, 20 марта 2022
02:46 Turing Compete! (игра)
С одной стороны можно сказать, что это "игра", но с другой -- это учебник по цифровой электронике и микропроцессорной технике.

Начинаете вы с одного элемента типа NAND (И-НЕ). Далее вам предложат десятки (!) миссий, в ходе которых вам предстоит собрать:
-- другие логические элементы
-- триггер
-- регистр
-- сумматор
-- АЛУ
-- процессор целиком.

А после того, как процессор будет собран, вам придётся его, сука, программировать. Сначала в машинных кодах, а потом на ассемблере.

Это первая половина игры. Во второй половине вам предстоит собрать более крутой процессор и решать на нём более сложные задачи.

Архитектура второго процессора названа авторами игры LEG. Это почти наверняка является отсылкой к архитектуре ARM, поскольку у них есть определённые сходства. А вот почему первый процессор называется OVERTURE я не догадался. Если у вас есть идеи -- сообщите, пожалуйста. Вот, кстати, что я собрал (кликабельно).
Здесь:
DEST_SEL -- селектор целевого регистра операции
BUS_MUXER_v2 -- определяет, откудать брать входные операнды для операции: из памяти, из регистра, или трактовать номер регистра как константу.
REG_MUXER -- на вход получает все регистры, на выход выдаёт тот, который просят.
INP_SW_v2 -- фактически, является УУ (устройство управления). Подаёт команды чтения/записи в память, в стек, или "внешний вход"
ALU_LEG, ALU_LEG_S -- два АЛУ, один для двухоперандных операций, другой для однооперандных
COND_LEG -- блок условных переходов
STACK_CTL -- блок маршрутизации данных стека



Не очень понятно, для кого предназначена эта игра. Я, например, от неё в восторге. Я джва года проходил всё это в институте, а кроме того по работе занимаюсь связанными вещами. Но ни в институте, ни на работе, у меня не было задач по созданию процессоров с нуля. И тем не менее, для меня эта игра -- что-то вроде симулятора тракториста. Типа, тракторист весь день по работе водит трактор, а потом приходит домой и запускает симулятор.

А кто ещё может в неё играть, кроме айтишников, близких к железу? Не знаю. На эту игру мало отрицательных отзывов, но те, которые есть, сходятся в одном: эта игра ничему не учит. Вы должны либо догадаться о решении миссии самостоятельно, либо загуглить стандартный метод. Либо вы должны ЗНАТЬ решение, как знал решение для большинства задач я.

Поиграть стОит, если вы хотите узнать, как работает компьютер на низком уровне. Или если вы уже знаете, но хотите пощупать руками. Симулятор работает хорошо, видно как чиселки бегают.


Если вы соберётесь в это играть, дам два совета, которые вам могут очень пригодиться.

Первый касается ассемблера. Не просто так в руководстве написано, что в командах можно использовать логические (побитовые) операции. Байты команд содержат битовые поля, поэтому если вы соберётесь самостоятельно создавать мнемонические команды (а это вам придётся делать), то если не использовать логические операции, то вам придётся создавать по одной мнемонике на каждую команду. Допустим:
mov_r1_r2 (00-001-010)
mov_r2_r3 (00-010-011)
и так далее. Это крайне неудобно, но на первый взгляд с этим ничего не сделаешь, потому что если поставить пробел, то ассемблер начнёт следующий байт, а указания на регистры расположены в том же байте. Вот для этого-то и пригодится операция "или" (труба, "|").
Назначаем коды:
mov = 00-000-000
from_r1 = 00-001-000
from_r2 = 00-010-000
to_r2 = 00-000-010
to_r3 = 00-000-011

После этого становится можно комбинировать поля в одном байте:
mov|from_r1|to_r2 (00-001-010)

Второй совет касается блоков. Не стесняйтесь выделять отдельные функции процессора в блоки. Это сильно упрощает понимание того, что где расположено. Более того, в задаче The Maze, например, я реализовал поворот робота в лабиринте как отдельный блок, чем сильно сократил программу. Есть, однако, минус: блоки сложнее отлаживать. Если вы обнаружили ошибку, то вам придётся вручную запомнить состояние входов блока, потом открыть редактор и их выставить. Это следовало бы автоматизировать.

@темы: Электроника, Игры

URL
Получила по носу. Ничего, бывает. Бывает, но не всегда ...
недавно Владимир поинтересовался, чем же мы занимаемся с ...
Этот кофе уже просто бесит.. но не могу без него. Без нег...
...всё страньше и страньше:) У: Никогда не думала, ч...
Зачем-то идёт дождь. Зачем-то я простыл. Всё это вместо с...
Вчера оттягивались вот с етими парнями www.hitchhikersgui...

15.08.2022 в 13:56

15.08.2022 в 13:56
CD_Eater, Urban knight, а также остальным: прошу воздержаться от обсуждения политики и, особенно, Украины. Я буду удалять сообщения по этой теме.

Urban knight, название предметов второстепенно. У нас это были длинные непонятные последовательности слов, которые в зачётке мы сокращали до АИУЭО или чего-то подобного. По сути предметы называются "цифровая электроника" и "микропроцессорная техника".
URL

15.08.2022 в 14:06

15.08.2022 в 14:06
zHz00, я как-то хотел сделать из транзисторов сделать логические модули, чтобы на входе лампочка, на выходе лампочка и всё наглядно. А потом модули собрать в сумматор, а то и на процессор замахнуться. Но "как работает процессор" я прочитал, а вот чуть глубже - сложно найти литературу.
Уже не в первый раз слышу, что кто-то в ВУЗах изучал и проектировал такие вещи, но вот название предмета узнать, всё никак не получается.

А игрушка выглядит клевой. Уже много раз за нее глаз зацепился =) Спасибо, куплю на днях.
URL

15.08.2022 в 14:32

15.08.2022 в 14:32
прошу воздержаться от обсуждения политики и, особенно, Украины.
ок
отредактировать старое сообщение не могу, но могу удалить старое и создать новое:

Xersareeth, в дневничке Urban knight есть немного интересного про отношение Wube к россии:
00010010.diary.ru/p221291602.htm
URL
Добавить комментарий

Расширенная форма

Подписаться на новые комментарии
Получать уведомления о новых комментариях на E-mail