OSDev

для всех
Текущее время: 15 дек 2017, 01:27

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 81 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8, 9  След.
Автор Сообщение
 Заголовок сообщения: PlutOS
СообщениеДобавлено: 15 июл 2012, 07:00 
Аватара пользователя

Зарегистрирован: 27 апр 2012, 00:27
Сообщения: 22
Откуда: Узбекистан, Ташкент
Yoda писал(а):
AlikberOFF писал(а):
С одной стороны, он предельно примитивен и собирается "на коленке".

Очень сильно сомневаюсь.
Хм, почему?
Вот набросок схемы (таблица - прошивка ПЗУ)
Изображение
На адрес ПЗУ подаём поток ASCII-кодов символов листинга. Регистры наклапливают данные: V00..V29 - Vector (имя переменной), F00..F23 - Factor (Окты, Хексы, Дексы). Конечно, это фрагмент. Там ещё селекторы нужны, мультиплексоры, сумматоры (для десятичного накопления) и пр. муть.
А так, на коленке - реально. Причём, вдохновляет это
Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: PlutOS
СообщениеДобавлено: 15 июл 2012, 17:56 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 938
Откуда: Дагоба
Ну-ну :D.
Мой совет. Если рискнёшь разрабатывать свою идею, не кидайся паять такие стойки. Сделай для начала программный эмулятор своего CPU. Если всё заработает и всё понравится, пиши HDL описание. Его можно прогнать на симуляторах. Если и тогда всё заработает, делай макет на FPGA.
Но мне почему-то кажется, что всё заглохнет на этапе программного эмулятора.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: PlutOS
СообщениеДобавлено: 16 июл 2012, 00:03 
Аватара пользователя

Зарегистрирован: 27 апр 2012, 00:27
Сообщения: 22
Откуда: Узбекистан, Ташкент
Yoda писал(а):
Ну-ну :D.
Мой совет. Если рискнёшь разрабатывать свою идею, не кидайся паять такие стойки. Сделай для начала программный эмулятор своего CPU. Если всё заработает и всё понравится, пиши HDL описание. Его можно прогнать на симуляторах. Если и тогда всё заработает, делай макет на FPGA.
Но мне почему-то кажется, что всё заглохнет на этапе программного эмулятора.
Я извиняюсь, но именно об этом я писал постами выше:
AlikberOFF писал(а):
Иными словами, процессор сам является парсером текстового листинга. Причём даже без польской записи языка Форт. Экспериментально написал JavaScript так, будто это - заготовка vhdl. Т.е. каждый вызов функции является одиночным фронтом тактового генератора. Имеются переменные, симулирующие шины адреса и данных, а также управления. На чтение одного байта уходит три такта (вызова функции).
При этом, симулятор написан предельно просто и без лишних ухищрений, чтобы с лёгкостью мог быть портирован в аппаратуру.
...
В качестве эксперимента я средствами JavaScript попытался воспроизвести такой симулятор в спартанских условиях. А именно, описать всё крайне просто, практически как аппаратуру в VHDL. Я применил ПЗУ (массив) на 128 байтов с прошивкой сепарации ASCII-кодов. Цифры направляются в один аккумулятор, латинские буквы с цифрами - в другой. Математические знаки - в третий.
Т.е. в JavaScript'е я написал симулятор процессор по всем правилам цифровой электронники:
  • Есть шина адреса (переменная busAddr)
  • Есть шина данных (переменная busData)
  • Есть шина контролля (busCtrl) и т.д.
И работает всё подобно электронному узлу: При чтении данных выставляется адрес и отчищаются биты контроля; На втором такте (вызове функции эмуляции ядра) выставляется бит RD контроля. На третьем такте копируется busData во внутреннюю переменную. На четвёртом - отчищаются биты контроля и начинается анализ считанного байта...
В общем, никакого прямого обращения к массиву с текстом программы. Говорю же, хоть мизерный, но опыт построения узлов цифровых имею. Обижаете :mrgreen:

Опыт показал, что всё чертовски тормозит! Как уже сказал, на чтение байта уходит четыре такта. Следовательно, слово из четырёх байт требует 16 тактов. Симулятор таки отображает состояние всех шин в реальном времени со скоростью 4 такта в секунду! Пока дождусь результата - спать хочу.
Вопрос: Зачем так медленно?
Отлаживаю же! Должен видеть, на каком такте сбой произошёл. Так как в сотнях строк лога теряюсь.
К сожалению, продемонстрировать симулятор не могу из-за стыда: Написан хоть и аккуратно (избегал все специфические конструкции JS: Уйма явных скобок и инструкционных блоков, дабы избежать двусмысленности компиляции в VHDL), но не так красиво, как у профессионалов.

P.S.: Симулятор работает, но с кучей багов. Будь всё в Си, отлаживать было бы в сто раз легче. В JS же это жутко сложно.
Почему же JS, а не Си?
Проект с открытым кодом. Чтобы онлайн одним кликом видеть работу.

P.P.S.: Из-за проблем с прямым парсингом текста, решил, как и писал выше, UTF-8 использовать в качестве внутреннего байт-кода (ASCII считываются и сцепляются в цепочки внешним контроллером, переводятся в UTF для внутреннего процессора, который выполняет из за такт!)
Но тут возник конфликт: Блоки составных операций в листинге создаются явным отступом TAB-символа, без {...} конструкций. Так процессор явно знает уровень вложенности путём тупого подсчёта табуляции. Но это вызывает тормоза жутчайщие!
Тогда как UTF вариант имеет опцию прямого указания размера блока.
Конфликт: Чтобы на-лету конвертировать ASCII-цепочки в UTF-слова, нужно точно определить размер блоков...
А их нельзя точно указать из-за различной гранулярности листинга: ASCII - 1 байт, UTF - от 2 до 6 байтов, внутренний байт-код - 4 байта. Появляется сильнейщая рассинхронизация указателей адресов на символ в листинге.

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

Код:
41 3D 30 ... A=0 // ASCII-запись листинга
---
// UTF-8 вариант листинга
FC 80 80 80 80 8A // Символ A
FC A0 B0 80 80 8D // Оператор =
FC 84 80 80 80 80 // Децимальная величина (0)
...
// Внутренний байт-код
80 00 00 0A // Символ A
A0 E0 00 0D // Оператор =
84 00 00 00 // Децимальное (0)
Нету идей у меня по корректировке указателя...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: PlutOS
СообщениеДобавлено: 16 июл 2012, 00:57 
Аватара пользователя

Зарегистрирован: 16 апр 2010, 10:10
Сообщения: 319
Откуда: Псковская обл.
Если всё предельно упрощать и оптимизировать - то лучше всё же готовить текст предварительно (можно аппаратно) в более удобную форму.
Но тогда получается многопроходность нужна - в случае с хоть немного сложным и удобным языком.
Я вообще не понимаю как обрабатывать адреса - если на вход процессору давать исходные тексты. а как же макросы.
Компилятор решил бы массу проблем.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: PlutOS
СообщениеДобавлено: 16 июл 2012, 02:13 
Аватара пользователя

Зарегистрирован: 27 апр 2012, 00:27
Сообщения: 22
Откуда: Узбекистан, Ташкент
iz56 писал(а):
Если всё предельно упрощать и оптимизировать - то лучше всё же готовить текст предварительно (можно аппаратно) в более удобную форму.
Но тогда получается многопроходность нужна - в случае с хоть немного сложным и удобным языком.
Я вообще не понимаю как обрабатывать адреса - если на вход процессору давать исходные тексты. а как же макросы.
Компилятор решил бы массу проблем.
Я уже писал про механизмы.
Имя переменной (до пяти букв) - шифрованный вектор.
Буквы имени - "0123456789ABCDEFPQRSTUVWXYZKLMNO@abcdefghijklmnopqrstuvwxyzGHIJ_".
Т.е. переменная XY имеет адрес ((code("X") << 6) | code("Y") равный (0x18 << 6) | 0x19, т.е. 0x0619. Тем самым, если в листинге встречается метка "XY:", то текущий указатель листинга помещается в ячейку 0x0619*4 т.е. в [0x1864]. Тем самым, вызов функции XY(...) извлечёт тот адрес и перейдёт.
Фокус в том, что если адрес - нулевой, процессор переключается в холостой режим и бежит вперёд. Все записи при этом парсируются, но не исполняются. Отдыхает АЛУ и т.д. Пока не заполнится ячейка [0x1864]!
Из-за этого возможны сильные тормоза в самом начале! Потому следует соблюдать правила любого нормального языка (как Паскаль или Си): сначала описываются функции (вхолостую, лишь устанавливаются метки), а потом уж и основная процедура ими оперирует.
В этом случае сам процессор выполняет роль компилятора!

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

P.S.: Сегодня начал писать новую версию эмулятора ascii-процессора. Специально для публичной демонстрации. Пока результаты не очень из-за copy-paste из тех опытных версий. Пытаюсь смоделировать работу по posedge/negedge, чтобы экономить такты. Но, так как всё описываю средствами JavaScript в рамках одного HTML документа, тяжело применять принципы VHDL к Web-скриптам. :roll:
Напрямую в VHDL открыть проект не могу: Установлен OrCAD 10, где неизвестно как с ПЛИС работать. А всякие новые WebPack'и не стоят: Скачал с оффициального сайта гиговый архив, а он - битый (несколько важных файлов не извлекаются). :evil:
Да ещё человек, что обещал купить мне Terasic демо-плату, что-то молчит. :?
Это как пытаться отвёрткой гаечные ключи затягивать: можно, но кучу сил и давления надо прикладывать, да руки беречь! Вот так я собственно и воспринимаю разработку этого симулятора.

Да, кстати, этот форум посвящён разработкам операционнок. А есть ли подобные по разработкам процессоров :?:
А то у меня, кажется, оффтоп пошёл. За что извиняюсь! :roll:


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: PlutOS
СообщениеДобавлено: 18 июл 2012, 16:55 
Аватара пользователя

Зарегистрирован: 16 апр 2010, 10:10
Сообщения: 319
Откуда: Псковская обл.
Форум всё стерпит. А если сделаешь хоть половину из того что заявлено. Предметная область форума - не столько инструкции процессора - любого, а процессы, управление памятью,ФС, и другие общие для большинства ос вещи. Если развить эту идею - то получается офффорум. Первое что напрашивается - выделить подфорум для других вещей - таких как эта ветка и моя виртуальная машина то же туда пойдёт. С другой стороны слишком мало сделано что б что-то выделять. А вообще раскладывать всё по категориям - значит самовольно загонять себя в рамки, которые будут заставлять принимать решения.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: PlutOS
СообщениеДобавлено: 18 июл 2012, 17:50 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 938
Откуда: Дагоба
AlikberOFF писал(а):
Да, кстати, этот форум посвящён разработкам операционнок. А есть ли подобные по разработкам процессоров :?:

Таковых, по-видимому, нет, в связи с тем, что это занятие не очень-то доступно каждому желающему. Тем не менее, думаю, что разработка ОС весьма тесно связана с процессорами, так что думаю, полезно здесь обсуждать и архитектуры процессоров. На международном форуме есть интересная тема, посвящённая разработке архитектур: OSDev's dream CPU (в вольном переводе: Процессор - предел мечтаний разработчика ОС). Я там описал и свои взгляды/идеи на эту тему.
Предлагаю выделить ЦПУшные сообщения и завести аналогичную тему на этом форуме.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: PlutOS
СообщениеДобавлено: 18 июл 2012, 18:20 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1315
Откуда: Зеленоград
Это уже не тема, а цельный раздел. Только как его обозвать получше?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: PlutOS
СообщениеДобавлено: 18 июл 2012, 18:58 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1057
Так и обозвать "Процессор - предел мечтаний разработчика ОС"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: PlutOS
СообщениеДобавлено: 19 июл 2012, 10:26 
Аватара пользователя

Зарегистрирован: 14 мар 2011, 12:31
Сообщения: 938
Откуда: Дагоба
Да не надо раздел! Я сомневаюсь, что даже одна тема долго жить будет.
Всё ж для раздела требуются глубокие знания участников и большая работа.

_________________
Yet Other Developer of Architecture.
The mistery of Yoda’s speech uncovered is:
Just an old Forth programmer Yoda was.

<<< OS Boot Tools. >>>


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 81 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8, 9  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB