?

Log in

No account? Create an account
Кирилл Зац тем временем задокументировал UDI на русском языке - Юрий Панчул [entries|archive|friends|userinfo]
Money can buy bandwidth. Latency requires bribing God.

[ website | My Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Кирилл Зац тем временем задокументировал UDI на русском языке [Feb. 8th, 2016|01:42 am]
Yuri Panchul
На картинке ниже мы видим аллегорического изображение интеграции процессора и сопроцессора:





Это я к тому, что Кирилл Зац задокументировал протокол расширения процессора UDI и выложил его на русском языке на Хабре, вместе с примерами сопроцессоров:





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

Остальные картинки (модульная иерархия, временные диаграммы) - в посте на Хабре https://habrahabr.ru/post/276205



Является ли фотка медведя с девушкой хорошей аллегорией на UDI картинку справа?

Да, у девушки и медведя видна близкая интеграция
2(15.4%)
Да, в протоколе UDI есть kill transaction которую CPU шлет UDI Unit после прерывания
2(15.4%)
Я вижу сходство в том, что куски девушки пойдут по конвейеру пасть-пищевод-желудок прямо как Fetch-Decode-Execute
9(69.2%)
LinkReply

Comments:
[User Picture]From: bankworm
2016-02-08 09:54 am (UTC)
А что, надо бы этого медведя для рекламы российских процессоров использовать. А девушка пусть изображает продвинутого пользователя ;-)
(Reply) (Thread)
[User Picture]From: maxdz
2016-02-08 10:35 am (UTC)
Big Russian bear is ready to eat Europe.
(Reply) (Parent) (Thread)
[User Picture]From: exshvonder
2016-02-09 06:05 pm (UTC)
You mixed up the bull with the bear and to rape with to eat.

Edited at 2016-02-09 06:07 pm (UTC)
(Reply) (Parent) (Thread)
[User Picture]From: barbuljak
2016-02-15 07:05 pm (UTC)
шо ти верзеш?
(Reply) (Parent) (Thread)
[User Picture]From: norian
2016-02-08 10:27 am (UTC)
превед - няшка

котам чем дальше в лес, тем больше кажецца, что расово правильная архитектура - в коей логика программы отделена от арифметеги и прихреначена шырокой шыной

тогда конвейеры не будут столлицца от плохо угаданных переходов, а количество тредов не будет привязано к количеству арифметических обработчегов

ну то есть инструкции должны быть вида тип-обработчега код-операции адреса-операндов-в-кэше и пусть оно само горит конём до зелёного свистка

в случае с фпга обработчегов можно вообще прописывать столько, сколько нужно софту



Edited at 2016-02-08 10:27 am (UTC)
(Reply) (Thread)
[User Picture]From: panchul
2016-02-08 05:13 pm (UTC)
Типа dataflow architecture?
(Reply) (Parent) (Thread)
[User Picture]From: norian
2016-02-08 05:41 pm (UTC)
что-то вроде, но не так радикально - кэшировать бэйсик-блоки и выполнять их большими кусками, то есть без аццкой гранулированности, но чтобы все котлеты и мухи были отдельно - контрол флов потоков, подкачка данных в большой кэш и вычислительные юниты со своими очередями

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

ну и чтобы можно было играцца с конфигурацией в шыроких пределах - увеличить количество потоков или параллелить ветвления на предикатах, напихать разной арифметеги под разные задачи - её в принципе можно брать уже готовую, из любых камней и систем команд

котеговской пастью да медку, ага

(Reply) (Parent) (Thread)
[User Picture]From: _nekto
2016-02-08 11:16 am (UTC)
Панчул, картинка со скриншотом текста порвала ленту в клочья. Для "бедных" мониторов, уменьшите её размер в ленте, пожалуйста. Причем вот в самой Вашей записи размер отформатирован, как раз, нормально.
(Reply) (Thread)
[User Picture]From: panchul
2016-02-08 05:10 pm (UTC)
OK
(Reply) (Parent) (Thread)
[User Picture]From: _nekto
2016-02-08 08:55 pm (UTC)
Спасибо
(Reply) (Parent) (Thread)
[User Picture]From: levtsn
2016-02-08 12:17 pm (UTC)
/+Ей платят за то, что она лобзается с бурым медведем?+/

Edited at 2016-02-08 12:19 pm (UTC)
(Reply) (Thread)
[User Picture]From: mihaliche
2016-02-08 04:17 pm (UTC)
По цвету смотрится как Гризли,или нет.....?
(Reply) (Parent) (Thread)
[User Picture]From: levtsn
2016-02-08 04:58 pm (UTC)
цвет дело оносительное: http://shpilenok.livejournal.com/277892.html
(Reply) (Parent) (Thread)
[User Picture]From: oppad1
2016-02-08 04:39 pm (UTC)
гораздо сложнее добавить инструкцию в компилятор, чем в процессор. Альтера лет 10 как уже предлагает вставить в свой НИОС сопроцессор (причем гораздо хитрее - у них есть возможность скомпилить кусок кода, С функцию, в кастомскую инструкцию). но саксес сториев от такого подхода я не слышал.

единственно, что можно добавлять, это FPU расширения, но IEEE-шной плавучке чтоб соответствовать, будет проще к сопроцессору процессор приписать, а не наоборот :)
(Reply) (Thread)
[User Picture]From: panchul
2016-02-08 05:10 pm (UTC)
UDI интегрирован с GCC toolchain в том смысле, что вы можете использовать макро в сишной программе, которое введет в генерируемый компилятором код данную инструкцию.

Что касается NIOS II вообще. MIPSfpga служить для совсем других целей, чем NIOS II:

1. NIOS II не предназначен для изучения внутренностей процессора и экспериментирования с одновременным изменением софтвера и хардвера, а вот MIPSfpga — предназначен. NIOS II используется как правило как «черный ящик» для построения систем. В MIPSfpga можно делать добавления к конвейеру, проверять, как это меняет поведение программ, и разбираться что как устроено.

2. NIOS II — это процессор, привязанный к Альтере и состоящий из альтера-специфичных блоков. Хотя у NIOS II есть вариант для ASIC от Synopsys, но студенты не могут использовать один и тот же код для FPGA и ASIC. И уж тем более для Xilinx.

3. MIPS microAptiv UP внутри MIPSfpga используется десятками лицензиатов для создания ASIC-ов, в том числе Samsung Artik 1 и Microchip PIC32MZ. С NIOS II студент не знакомится с популярным ASIC-овым ядром.
(Reply) (Parent) (Thread)
[User Picture]From: oppad1
2016-02-08 07:42 pm (UTC)
про компилятор, я естественно имел в виду оптимизатор, который сумеет потоки данных через эту инструкцию вставить в свои DAG-и. а инструкция _asm() в gcc существует для всех архитектур, и просто передает любой текст в ассемблер

с MIPSfpga тоже не все хорошо (все таки по пропиентарности он ближе к НИОСу чем к труЪ опенсорсу) - я бы студентам рекомендовал полностью открытые архитектуры/реализации LEON от Гейслера, OpenRISC с опенкоресов и т.д. - но об этом мы уже спорили. естественно все они поддерживают конвеер сопроцессора

(Reply) (Parent) (Thread)
[User Picture]From: panchul
2016-02-08 08:14 pm (UTC)
*** про компилятор, я естественно имел в виду оптимизатор, который сумеет потоки данных через эту инструкцию вставить в свои DAG-и ***

Это кстати было бы ценным академическим исследованием, о котором (если бы оно возникло) я бы лично пообщался с нашим корпоративным начальством на предмет потенциала коммерческого внедрения.

*** с MIPSfpga тоже не все хорошо (все таки по пропиентарности он ближе к НИОСу чем к труЪ опенсорсу) ***

С ниосом главный момент имхо не проприетарность а непортабильность на ASIC-и (помимо опции с Synopsys).
(Reply) (Parent) (Thread)
From: rotabler
2016-02-17 11:30 am (UTC)

мрак, как я отстал....

Не работал никогда с MIPS, но вынужден был прямо сейчас сделать для себя обзор (раз уж наткнулся на такой вот пост с медведем)...
И понял для себя так:
1) Благодаря блоку UDI можно определять _свои_ инструкции, например в FPGA, путем их прошивки в систему, как истинные равноправные инструкции. (например вот: http://pcnews.ru/top/blogs/day/dobavlaem_instrukcii_v_mikroprocessor_mips_kotorye_rabotaut_v_konvejere_kak_ego_sobstvennye-679165.html)
2) Еще, у системного сопроцессора (CP0) есть набор прерываний, позволяющих следить за выполнением инструкций, включая расширенные инструкции из блока CorExtend, и т.д. (например вот: http://www.rockbox.org/wiki/pub/Main/IriverLPlayerPort/MIPS-4KEcDataSheet.pdf)

Но 10 минут тут не хватит, чтобы охватить.
(Reply) (Parent) (Thread)
[User Picture]From: oppad1
2016-02-17 01:08 pm (UTC)

Re: мрак, как я отстал....

не готов обсуждать MIPS, но в SPARCе (например, имплементация LEON2/3/4 от Гейслера) точно так же инструкция сопроцессора является полноправной инструкцией процессора. ну из общих соображений: блок FETCH - он один, зачем их делать два. то есть в любой нормальной архитектуре есть отдельный тип инструкций процессора (например плавающей точки или ввода/вывода или вообще что захочется), который передается в сопроцессор(ы)

опять же в любой нормальной архитектуре сопроцессоры имеют свои конвейеры и являются out-of-order устройствами, поэтому должны быть механизмы синхронизации. прерывания (хотя их называют исключениями) один из них - не представляю, как без этого могло бы быть






Edited at 2016-02-17 01:10 pm (UTC)
(Reply) (Parent) (Thread)
[User Picture]From: flying_d
2016-02-09 12:35 pm (UTC)
Хабр- крайне дурной источник информации. Насколько я могу судить, адекватные тексты там иссякли где-то с 2009го, щаз этот сайтег ничем не лучше газеты Метро, ее бесплатно раздают как не странно в метро Спб. С веб-разработчиками надо что-то делать)) Ну как и с фотографами..
(Reply) (Thread)