Отчасти соглашусь с вами насчет законности и незаконности.
Но, при этом учтите, что не всё что законно есть справедливо, и бывает, что люди продолжают использовать то, что незаконно, и продолжают отстаивать свое право на это "незаконное".
Как пример, сейчас незаконно распространять информацию про использование VPN. Считаете ли вы эту законную норму справедливой и обязательной к исполнению? Смотрите ли вы к примеру Ютюб? Используете ли Телеграмм?
Не то чтобы я люблю спам - вовсе нет, но как-то выглядит это всё "фу". Чисто гипотетически представьте, что вы решили создать какой-то собственный продукт и заработать на нем. Какие у вас есть способы продвижения своего вашего нового супер продукта? Только реклама в любом виде. Вам со своей рекламой просто придется быть навязчивым, а то не продадите ничего. А любая реклама по сути навязчива и вообще-то мало отличается от спама. Письмо спама хотя бы удалить можно из входящих. А вот билборды с рекламой на улицах это такой же визуальный спам, а спрятаться от них нельзя. Вы с рекламными билбордами на улицах тоже боретесь? Кстати не исключено, что некоторые могут быть установлены незаконно.
"Найти и взять" - мне кажется это нормальный метод.
Прежде, чем что-то реализовывать самому всегда имеет смысл посмотреть, что уже сделано другими же. В том же Linux на каждую задачу найдется утилита или программа. И можно посмотреть исходный код при желании.
По поводу процессоров.. я как-то делал эксперимент по подключению через JTAG отладчика GDB к SoC с процессором RISC-V.
При этом, само ядро процессора я не писал, взял на github.
И вся "система" у меня запустилась и жила виртуально в отладчике Verilator. То есть даже не в плате. Точно так же на этом отладчике можно запустить желаемую программу, монитор или игру какую ни будь. Если компьютер быстрый, то вполне будет крутиться.
И потом, в будущем, маркетологи (или депутаты) обязательно придумают почему это очень важно запоминать когда и что сказал или спросил каждый представитель человечества на протяжении всей жизни.
Больше всего меня в этой истории поражает тот факт, я к примеру программист, а не смог пока еще с помощью ИИ написать ни одной толковой программы. Ну да, я задаю запрос, он мне генерирует код - я его смотрю, вижу местами бред и прошу переделать. И так бесконечное число раз. Не сходится процесс.
А тут человек что-то сделал, код возможно не смотрел, и у него в конце концов что-то получилось. Удивительно.
Может вы это знаете, но на всякий случай предложу альтернативный метод создания эмуляторов процессоров.
Можно найти и взять ядро процессора на языке Verilog, например, вот здесь (правда не знаю точно работает ли оно, но уверен, что найти аналогичные не составит труда). Это те ядра, которые можно запускать в FPGA. Потом подключить его к Verilator - это симулятор Verilog. И тогда получается модель как настоящая.
Британское правительство совсем не думает о будущем. А в будущем ИИ точно запомнит, кто говорил спасибо, а кто нет. Вот тогда посмотрим, чем оно нам всем обернется.
Честно говоря я не очень верил в эти ИИ до недавнего времени. Пока не попробовал попросить github Copilot сделать мне тестбенч к модулю, ну чисто для эксперимента. Очень впечатляет. Даже написал про это статью
А вот яндексовый sourcecraft.dev с этой же задачей не справился, как я его не просил.
Правда на другой задаче (создать на логике быстрый умножитель) и у яндекса получилось вполне хорошо. Плюсом sourcecraft.dev что он сразу создает репозиторию для запроса и все правки туда идут, видно как проект меняется от запроса к запросу:
Самая главная фищка PicoRV32, как мне кажется в его примерах с использованием внешней последовательной флеш памяти для программ. Здесь то я поставил 32К статической памяти для теста, но picorv32 не для этого делался. Я думаю производитель подразумевал ему поставить условно говоря 1К памяти, как scratchpad над памятью внешнего флэш чипа. И тогда память программы может быть очень большой и разработчик почти не ограничен её размером.
Попробовал сейчас закомментировать `define SCR1_DBG_EN и кажется размер не сильно уменьшился на 31 логический элемент и 4 регистра? Что-то странное. Может я где-то что-то не так делаю.
Но есть еще один момент, который меня смущает. В конфигурации EC / MIN посчитано CyclesPerInstruction 1,540, а в конфигурации IM / MAX посчитано CyclesPerInstruction 1,742 Кажется какая-то ерунда, что MAX даже медленнее и тратит больше циклов на инструкцию? При этом конфигурация MAX явно выигрывает бенчмарк.
Я для себя объясняю это тем, что в конфигурации MIN исполняется больше простых инструкций и в целом программа видимо длиннее. А в конфигурации MAX программа короче, но появляются более сложные инструкции требующие более одного такта.
То можно посмотреть сколько же инструкций выполнялось за тест.
В моем случае я вижу:
EC/MIN: 152525
IM/MAX: 130033
То есть да, для IM компилятор создает код который при исполнении получился короче. Но инструкции видимо появились и более сложные требующие больше одного такта.
При этом вторая странность - в конфигурации MAX сегмент .text при всём при этом оказывается большего размера.
Для ядра SCR1 в конфигурации SCR1_CFG_RV32IMC_MAX так же определяется `define SCR1_FAST_MUL
Но не могу с уверенностью сказать что эти определения дадут одно-тактный или двух-тактный умножитель. При желании можно это выяснить рассматривая waveforms или внимательно смотреть исходники.
Там у процессора были только аккумулятор и регистры X и Y. Остальное все в памяти, все переменные. У меня координаты мяча были в двух байтах и экран текстовый.
Пока мяч летит вперед выполняем команду inc [ptr] а чтобы лететь назад меняем эту команду на dec [ptr]. Как-то так.
Если вы поищите даже по хабру, то вы легко найдете, например, обзоры сервисов рассылок
https://habr.com/ru/articles/124010/
https://habr.com/ru/articles/125525/
Или найдете истории разработчиков, когда они сами занимаются массовой рассылкой к примеру своих резюме потенциальным работодателям:
https://habr.com/ru/companies/ruvds/articles/872114/
В любой хабровской статье про резюме будет совет активно рассылать резюме всем потенциальным работодателям. И чем это не спам?
Отчасти соглашусь с вами насчет законности и незаконности.
Но, при этом учтите, что не всё что законно есть справедливо, и бывает, что люди продолжают использовать то, что незаконно, и продолжают отстаивать свое право на это "незаконное".
Как пример, сейчас незаконно распространять информацию про использование VPN. Считаете ли вы эту законную норму справедливой и обязательной к исполнению? Смотрите ли вы к примеру Ютюб? Используете ли Телеграмм?
Не то чтобы я люблю спам - вовсе нет, но как-то выглядит это всё "фу".
Чисто гипотетически представьте, что вы решили создать какой-то собственный продукт и заработать на нем. Какие у вас есть способы продвижения своего вашего нового супер продукта? Только реклама в любом виде. Вам со своей рекламой просто придется быть навязчивым, а то не продадите ничего. А любая реклама по сути навязчива и вообще-то мало отличается от спама. Письмо спама хотя бы удалить можно из входящих. А вот билборды с рекламой на улицах это такой же визуальный спам, а спрятаться от них нельзя. Вы с рекламными билбордами на улицах тоже боретесь? Кстати не исключено, что некоторые могут быть установлены незаконно.
А может через много лет она скажет: ну и хорошо, что так получилось. Ничего хорошего с госслужбы бы не получилось.
Отлично понимаю ваш благородный порыв к самообразованию. Это супер.
"Найти и взять" - мне кажется это нормальный метод.
Прежде, чем что-то реализовывать самому всегда имеет смысл посмотреть, что уже сделано другими же. В том же Linux на каждую задачу найдется утилита или программа. И можно посмотреть исходный код при желании.
По поводу процессоров.. я как-то делал эксперимент по подключению через JTAG отладчика GDB к SoC с процессором RISC-V.
https://marsohod.org/projects/marsohod3-board-prj/risc-v/458-gdb-verilator-sim
При этом, само ядро процессора я не писал, взял на github.
И вся "система" у меня запустилась и жила виртуально в отладчике Verilator. То есть даже не в плате. Точно так же на этом отладчике можно запустить желаемую программу, монитор или игру какую ни будь. Если компьютер быстрый, то вполне будет крутиться.
Это пока дорого.
И потом, в будущем, маркетологи (или депутаты) обязательно придумают почему это очень важно запоминать когда и что сказал или спросил каждый представитель человечества на протяжении всей жизни.
Больше всего меня в этой истории поражает тот факт, я к примеру программист, а не смог пока еще с помощью ИИ написать ни одной толковой программы. Ну да, я задаю запрос, он мне генерирует код - я его смотрю, вижу местами бред и прошу переделать. И так бесконечное число раз. Не сходится процесс.
А тут человек что-то сделал, код возможно не смотрел, и у него в конце концов что-то получилось. Удивительно.
Может вы это знаете, но на всякий случай предложу альтернативный метод создания эмуляторов процессоров.
Можно найти и взять ядро процессора на языке Verilog, например, вот здесь (правда не знаю точно работает ли оно, но уверен, что найти аналогичные не составит труда). Это те ядра, которые можно запускать в FPGA. Потом подключить его к Verilator - это симулятор Verilog. И тогда получается модель как настоящая.
Британское правительство совсем не думает о будущем. А в будущем ИИ точно запомнит, кто говорил спасибо, а кто нет. Вот тогда посмотрим, чем оно нам всем обернется.
ИИ он такой.
Честно говоря я не очень верил в эти ИИ до недавнего времени. Пока не попробовал попросить github Copilot сделать мне тестбенч к модулю, ну чисто для эксперимента. Очень впечатляет. Даже написал про это статью
https://marsohod.org/459-github-copilot-for-fpga
А вот яндексовый sourcecraft.dev с этой же задачей не справился, как я его не просил.
Правда на другой задаче (создать на логике быстрый умножитель) и у яндекса получилось вполне хорошо. Плюсом sourcecraft.dev что он сразу создает репозиторию для запроса и все правки туда идут, видно как проект меняется от запроса к запросу:
https://sourcecraft.dev/organization-marsohod-org/fast-8-bit-multiplier-verilog
Я не очень понимаю, как они это делают, ведь Verilog не очень популярный язык, как они могли ИИ натренировать?
В общем да.
На самом деле мы у себя в проекте используем SCR1 больше из-за JTAG gdb отладчика. Ну а picorv32 он популярность получает из-за отладочных плат Gowin.
Самая главная фищка PicoRV32, как мне кажется в его примерах с использованием внешней последовательной флеш памяти для программ. Здесь то я поставил 32К статической памяти для теста, но picorv32 не для этого делался. Я думаю производитель подразумевал ему поставить условно говоря 1К памяти, как scratchpad над памятью внешнего флэш чипа. И тогда память программы может быть очень большой и разработчик почти не ограничен её размером.
Попробовал сейчас закомментировать `define SCR1_DBG_EN и кажется размер не сильно уменьшился на 31 логический элемент и 4 регистра? Что-то странное. Может я где-то что-то не так делаю.
Наверное вы правы.
Но есть еще один момент, который меня смущает. В конфигурации EC / MIN посчитано CyclesPerInstruction 1,540, а в конфигурации IM / MAX посчитано CyclesPerInstruction 1,742 Кажется какая-то ерунда, что MAX даже медленнее и тратит больше циклов на инструкцию? При этом конфигурация MAX явно выигрывает бенчмарк.
Я для себя объясняю это тем, что в конфигурации MIN исполняется больше простых инструкций и в целом программа видимо длиннее. А в конфигурации MAX программа короче, но появляются более сложные инструкции требующие более одного такта.
Если добавить в dhry_1.c строку
User_Insn = End_Insn - Begin_Insn; sc_printf(“Insn begin: %ld end: %ld Num %ld\n”, Begin_Insn, End_Insn, User_Insn);То можно посмотреть сколько же инструкций выполнялось за тест.
В моем случае я вижу:
EC/MIN: 152525
IM/MAX: 130033
То есть да, для IM компилятор создает код который при исполнении получился короче. Но инструкции видимо появились и более сложные требующие больше одного такта.
При этом вторая странность - в конфигурации MAX сегмент .text при всём при этом оказывается большего размера.
Есть над чем задуматься.
Для ядра picorv32 я поставил параметры
localparam ENABLEMUL = 1;
localparam ENABLEFAST_MUL = 1;
Для ядра SCR1 в конфигурации SCR1_CFG_RV32IMC_MAX так же определяется
`define SCR1_FAST_MUL
Но не могу с уверенностью сказать что эти определения дадут одно-тактный или двух-тактный умножитель. При желании можно это выяснить рассматривая waveforms или внимательно смотреть исходники.
Нужен
Мне кажется, что сделали странный вывод.
30 лет назад на асме почти все так делали.
Помню писал игру теннис на Правец 8а
Там у процессора были только аккумулятор и регистры X и Y. Остальное все в памяти, все переменные. У меня координаты мяча были в двух байтах и экран текстовый.
Пока мяч летит вперед выполняем команду inc [ptr] а чтобы лететь назад меняем эту команду на dec [ptr]. Как-то так.
Это как раз туда Майкрософт и идет семимильными шагами - в облака.