GotAI.NET

Форум: Проблемы искусственного интеллекта

 

Регистрация | Вход

 Все темы | Новая тема Стр.1 (1)   Поиск:  
 Автор Тема: Самое главное.
zzz
Сообщений: 18
Самое главное.
Добавлено: 16 дек 25 4:41

Часть I
Часть II
Часть III
Часть IV
Часть V
Одна из глав книги «Код» Чарльза Петцольда посвящена проектированию блоков CPU и в начале главы описывается устройство, позволяющие суммировать наборы чисел, хранящихся в памяти. Спроектируем похожую схему в Logisim. Возьмем набор восьмиразрядных чисел и подключим его к мультиплексору, переход от одного числа к другому будем осуществлять с помощью счетчика, подключенного к выбирающему входу мультиплексора, а к выходу мультиплексора подключим сумматор и аккумулятор. В качестве тактового генератора будем использовать кнопку. Данные будут загружаться в аккумулятор при отпускании кнопки. Это осуществляется с помощью элемента НЕ, подключенного к кнопке. Про реализацию этих функциональных блоков в виде отдельных микросхем далее в статье.

[/url]
Будем хранить числа в ОЗУ (RAM).

ОЗУ можно представить в виде набора регистров, доступ к которым производится с помощью демультиплексора и мультиплексора (DMX и MUX).

Гарвардская архитектура
Предположим, в ОЗУ хранится набор чисел, а нам нужно сложить все числа и сохранить результат (в свободную ячейку). Будем хранить команды («сложить» и «сохранить») в одном ОЗУ, а обрабатываемые числа — в другом. Такой способ хранения является отличительным признаком Гарвардской архитектуры.
Команда «1» будет записывать число из сумматора в аккумулятор, команда «2» будет записывать число из аккумулятора во 2-ое ОЗУ.

Предположим, в ОЗУ хранятся несколько массивов чисел. Т.е. нам необходимо
[list]
[*]загружать числа из ОЗУ в аккумулятор
[*]загружать числа из сумматора в аккумулятор
[*]сохранять числа из аккумулятора в ОЗУ
[/list]
Будем использовать для выборки данных из ОЗУ мультиплексор MUX.
Новая инструкция «5» по переднему фронту тактового генератора переключает мультиплексор MUX, а по заднему фронту (по спаду) производит запись в аккумулятор.
[Ответ][Цитата]
zzz
Сообщений: 18
На: Самое главное.
Добавлено: 16 дек 25 4:42

Архитектура фон Неймана
Далее, будем хранить инструкции и данные в одном ОЗУ. Такой способ хранения является отличительным признаком архитектуры фон Неймана.
В первых четырех разрядах восьмиразрядной ячейки памяти будет храниться команда, во вторых четырех разрядах будет храниться адрес (https://ru.wikipedia.org/wiki/%D0%90%D0%B4%D1%80%D0%B5%D1%81%D0%B0%D1%86%D0%B8%D1%8F_%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D0%B8#%D0%9F%D1%80%D1%8F%D0%BC%D0%B0%D1%8F_%D0%B0%D0%B4%D1%80%D0%B5%D1%81%D0%B0%D1%86%D0%B8%D1%8F -> прямая адресация).
Будем загружать адрес и команду в отдельные регистры, а затем с помощью мультиплексора переходить по сохраненному адресу. Для записи данных в ОЗУ будем сначала загружать данные во временный регистр Temp (иначе в ОЗУ запишутся инструкции, а не данные), а потом в аккумулятор Асс. Запись данных в Temp и Асс будем производить по заднему фронту.
Будем складывать, например, числа 2 и 3, которые лежат в ячейках 8 и 9, а сохранять результат в ячейку с адресом a.

Добавим также возможность совершать безусловные переходы.
Реализуем устройство, в котором будет выполняться всего одна команда — команда безусловного перехода. Для этого на счетчик, генерирующий адрес, будем отправлять четыре младших разряда (собственно, адрес), а на порт загрузки будем подавать команду, хранящуюся в старших разрядах ячейки памяти.
Например, для прыжка в ячейку с адресом 2 используется команда 82.

Добавим команду безусловного перехода в предыдущую схему.

Вообще, на geektimes уже была статья, посвященная проектированию CPU в Logisim.
Все схемы, представленные выше, можно скачать одним файлом.
Logisim можно скачать здесь.
Терминал
Добавим к схеме терминал для демонстрации того, как ассемблерные инструкции преобразуются в машинный код.

Добавим конечный автомат для обработки последовательностей поступающих символов.
Семизначный код буквы «i» равняется 1101001
Семизначный код буквы «n» равняется 1101110
Семизначный код буквы «p» равняется 1110000
Для выделения конкретной буквы из потока символов будем использовать компаратор. В начальном состоянии компаратор сравнивает поступивший символ с семизначным кодом буквы «i»

Автомат переходит в следующее состояние, если после буквы «i» поступает буква «n»

Автомат переходит в следующее состояние, если после букы «i», а затем «n» поступает буква «p»

Добавим команду out

Подробнее о командах inp и out можно прочитать в следующей части.
[Ответ][Цитата]
zzz
Сообщений: 18
На: Самое главное.
Добавлено: 16 дек 25 4:43

Железо
Рассмотрим, как работает сумматор на примере микросхемы 155им3 (7483). Для микросхем 155-й серии условимся, что на входах есть внутренний резистор, подтягивающий к плюсу (если ножка «висит в воздухе», то на ней присутствует логическая «единица»), поэтому при подключении питания к микросхеме зажгутся все светодиоды, присоединенные к выходу.

На картинке представлена МС 74ls283 (современный аналог 155им3).
Для того, чтобы в Logisim спроектировать такую микросхему, необходимо выбрать «Меню» — «Проект» — «Добавить схему».
Вот как эта МС выглядит внутри подсхемы. Это четыре полусумматора, объединённые в полный сумматор.

В качестве аккумулятора будем использовать микросхему 155тм8 (74175) — счетверённый D-триггер.
Триггеры, входящие в состав МС, пропускают насквозь всё время, пока на входе синхронизации присутствует 1, а не только по фронту (триггеры со статическим управлением), но в программе Logisim нам доступны только триггеры с динамическим управлением, но в данном случае это не важно; будем использовать то, что есть.
Подробнее про триггеры можно прочитать в Википедии.
Соберём из D-триггеров модель МС 155тм8.
[Ответ][Цитата]
zzz
Сообщений: 18
На: Самое главное.
Добавлено: 16 дек 25 4:43


Далее соберём схему, позволяющую складывать наборы чисел.
Например, если сложить набор из чисел 2 (0010), мы получим 2 (0010), 4 (0100), 6 (0110) и т.д.

Сперва 2 появляется на выходе сумматора (красные светодиоды), затем 2 загружается в счетверенный D-тригер (желтые светодиоды), а на выходе сумматора появляется 4, затем 4 загружается в 155тм8, а на выходе сумматора появляется 6 и т.д.
Для того, чтобы спроектировать простой модуль памяти, нам понадобится мультиплексор. Спроектируем сдвоенный мультиплексор 155кп2.

Также нам понадобится счетчик. Спроектируем микросхему 155ие5.

Это четырехразрядный счетчик, но нам понадобится только два младших разряда.
Будем хранить числа, например, 2 (0010), 3 (0011), 5 (0101).

Объединим все компоненты в одну схему. Будем складывать числа, которые хранятся в «памяти»
2 + 3 + 5.

Logisim можно скачать здесь.
P.S. Статья про книгу «Код. Тайный язык информатики.» есть на Хабре вот здесь.
З.Ы. Переводные статьи (автор переводов PatientZero) про архитектуру процессора здесь, здесь и [url=https://habr.com/ru/post/457952/]здесь
[Ответ][Цитата]
Илья Кудрявцев
Сообщений: 12
На: Самое главное.
Добавлено: 16 дек 25 8:03
Современная сборка компьютера — это квест, где главный барьер часто не технический, а финансовый, из-за сложившейся олигополии на рынке компонентов. Однако эта ситуация отражает более тревожный глобальный тренд: приватизацию и сегментацию знаний.

Вполне вероятно, что в будущем доступ к специализированной информации будет строго регламентирован по профессиональному признаку, подобно доступу к рецептурным лекарствам. Образование станет не открытой системой, а системой целевой выдачи компетенций. Юриста будут глубоко учить праву, инженера — микроэлектронике, врача — анатомии. Но междисциплинарное любопытство может быть заблокировано.

Любитель или специалист из другой области, пожелавший изучить, скажем, тонкости кардиохирургии или принципы проектирования процессоров для общего развития, столкнётся не с запретом, а с непреодолимой стеной платных профессиональных баз данных, закрытых публикаций и патентованных методик. Глубокое знание станет элитным продуктом, а свободный доступ останется лишь к поверхностной, "попсовой" информации, создающей лишь видимость информированности.
[Ответ][Цитата]
zzz
Сообщений: 18
На: Самое главное.
Добавлено: 17 дек 25 4:36
Цитата:
Автор: Илья Кудрявцев

главный барьер часто не технический, а финансовый
А я и не пытаюсь что-то продавать, где-то работать и с кем то конкурировать, это просто хобби. Так что нахрен вся эта шелуха про социум и сертификаты. Давайте лучше поговорим про нейрочипы, имеет ли смысл делать нейросеть аппаратно?
[Ответ][Цитата]
Колян
Сообщений: 67
На: Самое главное.
+1
Добавлено: 18 дек 25 4:47
Цитата:
Автор: zzz

имеет ли смысл делать нейросеть аппаратно?
При всём уважении, но вопрос довольно ламерский. Какая именно "нейросеть", зачем делать её аппаратно, чем гпу не подойдёт или "тензорные" процессоры?

Нет, ну вы конечно можете любую логику засунуть в верилог и даже такой чип напечатать(это можно сделать по разным шаровым программам почти бесплатно(считанные килобаксы)). Но это будет проект в стиле "о! как круто, я спаял радио со своими фишками!" То есть это действительно круто для школьника или студента, признак живого ума, интереса и творческого потенциала, но не более. Например Митио Каку школьником спаял ускоритель позитронов "в гараже" и получил бесплатное обучение в Гарварде.
[Ответ][Цитата]
zzz
Сообщений: 18
На: Самое главное.
Добавлено: 19 дек 25 5:31
Цитата:
Автор: Колян

При всём уважении, но вопрос довольно ламерский. Какая именно "нейросеть", зачем делать её аппаратно, чем гпу не подойдёт или "тензорные" процессоры?
GPU тоже тема, можно и про него. Вот покажи мне MLP на GPU, чтобы MNIST за секунду считал, до 98%? Быстрее библиотек сможете?
[Ответ][Цитата]
гость
176.65.134.*
На: Самое главное.
Добавлено: 19 дек 25 11:02
вам нужен Игнат Игнатов
[Ответ][Цитата]
гость
185.181.61.*
На: Самое главное.
Добавлено: 20 дек 25 16:00
Цитата:
Автор: zzz

GPU тоже тема, можно и про него. Вот покажи мне MLP на GPU, чтобы MNIST за секунду считал, до 98%? Быстрее библиотек сможете?
свой код покажи
[Ответ][Цитата]
 Стр.1 (1)