?

Log in

No account? Create an account
По просьбе преподавателя одного из российских вузов выписал список тем, связанных с MIPSfpga - Юрий Панчул [entries|archive|friends|userinfo]
Money can buy bandwidth. Latency requires bribing God.

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

По просьбе преподавателя одного из российских вузов выписал список тем, связанных с MIPSfpga [Aug. 6th, 2015|11:06 pm]
Yuri Panchul

По просьбе преподавателя одного из российских вузов выписал список тем, связанных с MIPSfpga. Это теоретически может помочь встроить лабы в различные программы. Список является микстурой из Харриса & Харриса и всяких индустриальных навыков. Короче чего вижу, о том пою:



  1. Концепции, которыми, как мы ожидаем, студент уже владеет. Если чем-то нет, можно будет устроить короткий ликбез:


    1. Общие вопросы электронной промышленности


      1. Электронная индустрия, полупроводниковая индустрия, индустрия средств автоматизации проектирования (Electronic Design Automation - EDA), индустрия полупроводниковой интеллектуальной собственности (Semiconductor IP).


      2. Уровни абстракции системы на кристалле - программы, архитектура / система команд, микроархитектура / устройство конвейера, уровень регистровых передач (Register Transfer Level - RTL), уровень логических элементов, уровень транзисторов, уровень физики.


      3. Маршрут разработки системы на кристалле: спецификация, описание  на RTL, logic synthesis, place & route, GDSII, производство.


      4. Уровни моделирования: моделирование системы, моделирование на уровне системы команд (instruction set simulator), моделирование на уровне языка описание аппаратуры (Hardware Description Language - HDL), дискретное моделирование, очередь событий, дельта-цикл.


      5. Почему FPGA? Почему ASIC? Экономика разработки и производства разных типов микросхем - Application-Specific Integrated Circuit (ASIC) и Field-Programmable Gate Array (FPGA). Баланс между стоимостью, гибкостью, количеством, начальными тратами и тратами за время жизни проекта.



    2. Основый цифровой логики


      1. Комбинационная логика: базовые логические элементы, базовые комбинационные блоки (мультиплексоры, дешифраторы), временные характеристики (задержка распостранения, задержка реакции)


      2. Последовательностная логика: D-триггеры, временные характеристики (время предустановки, время удержания), временные ограничения, максимальная тактовая частота, синхронизаторы асинхронных входов


      3. Цифровые функциональные узлы: арифметические схемы, базовые последовательностные блоки (счетчики, сдвигающие регистры), память (статическая, динамическая)


      4. Конечные автоматы, диаграммы состояний, использование


      5. Концепция конвейера, применимость для повышения пропускной способности



    3. Языки описания аппаратуры, желательно Verilog (хотя и VHDL OK)


      1. Модули, порты, экземпляры (instance), иерархия модулей, параметризованные модули


      2. Типы данных (reg, wire, logic), значения x, регистовые файлы, выражения


      3. Оператор непрерывного присваивания, always-блоки, блокирующие и неблокирующие единовременные присваивания


      4. Операторы if, case, for; конструкции task и function; полезно но не обязательно - generate


      5. Подмножество для синтеза и симуляции, правила использования присваиваний в синтезируемом RTL-подмножестве


      6. Среда тестирования на Verilog (не SystemVerilog), timescale, спецификация задержек, несинтезируемые циклы while, генерация тактового сигнала и сброса


      7. Использование любого симулятора Verilog-а (Synopsys VCS, Cadence IUS / NCVerilog, Mentor ModelSim / Questa, Icarus Verilog)


      8. Понимание временных диаграмм


      9. Общее представление, как синтезируются различные конструкции синтезируемого подмножеста HDL



    4. Концепция архитектуры компьютера, ассемблер


      1. Команды, операнды, регистры, константы


      2. Адрес, память, базовый регистр, смещение, прямое и обратное размещение байтов (little/big endian)


      3. Арифметические и логические операции


      4. Метки, условные и безусловные переходы


      5. Вызов подпрограммы, стек, передача параметров, возврат значения


      6. Представление соответствия конструкций и деклараций языка программирования Си и ассемблера


      7. Исключения и прерывания



    5. Элементы микроархитектуры, устройство конвейера


      1. Измерение производительности, максимальная тактовая частота, IPC, DMIPS / MHz, CoreMark / MHz


      2. Сравнение однотактного процессора, многотактного процессора и конвейерного процессора, приостановки, сбросы, байпас / форвардинг


      3. Основы кэшей, локальность обращений к памяти, ассоциативные кэши, кэши прямого отбражения, наборно-ассоциативные кэши, алгоритмы выткснения



    6. Протоколы для систем на кристалле и систем на плате


      1. Протоколы систем на кристалле - AMBA APB, AHB-Lite, AXI, OCP


      2. Протоколы систем на плате - SPI, UART, I2C - общие принципы



    7. Общие для разработчика навыки работы с компьютером


      1. Программирование на Си, использование make, системы контроля версий (GitHub) итд




  2. Концепции и навыки, которыми владеть желательно, но их можно ввести и в процессе семинара по MIPSfpga


    1. Работа с Xilinx Vivado и Altera Quartus II - общие вопросы


      1. Создание проекта


      2. Связывание портов с выходами FPGA


      3. Задание ограничений по временным характеристикам


      4. Рассматривание схем до и после синтеза и mapping-а


      5. Чтение отчетов синтезатора, place & route, negative slack, max frequency, utilization


      6. Загрузка в FPGA



    2. Работа с Xilinx Vivado и Altera Quartus II - более специальные вопросы


      1. Генерация макро для PLL. Что это такое, зачем это нужно, как это сделать


      2. Как подсказать синтезатору, что тот или иной модуль - память. Файлы инициализации памяти, директивы ram_style (Xilinx), ram_init_file (Altera), синтезируемого $readmemh



    3. Работа с симулятором Verilog-а Mentor ModelSim Student Edition


      1. Структура среды тестирования / testbench


      2. Создание проекта, симуляция


      3. Анализ временных диаграм, использование waveform viewer



    4. Работа с Codescape - средой разработки программного обеспечения для MIPS на основе GNU (gcc, gdb и т.д.)


    5. Использование BusBlaster и OpenOCD


      1. BusBlaster - проба для загрузки программ с PC в устройство с интерфейсом JTAG (в данном случае MIPS-specific EJTAG) и работе с отладчиком GDB


      2. OpenOCD - программное обеспечение для BusBlaster



    6. Элементы ассемблера MIPS


      1. Можно для скорости введения попрактиковаться полчаса на MIPS MARS Simulator



    7. Обзор процессорного ядра MIPS microAptiv UP, на основе которого сделан MIPSfpga


      1. Структура конвейера


      2. Кэши и управление ими


      3. Протокол внешней шины AHB-Lite




  3. Разного рода связанные темы, которые привязаны к тематике


    1. Улучшенные микроархитектуры, длинные конвейеры, предсказание переходов, суперскалярные конвейеры, внеочередное выполнение команд, векторные расширения, многопоточность - как вообще, так и на примере MIPS


    2. Виртуальная  память вообще и конкретно в MIPSfpga, трансляция адресов и ее применение, буфер ассоциативной трансляции и его строение, защита памяти


    3. Создание многоядерных систем с когерентными кэшами, протоколы MESI, directory-based и т.д. - как вообще, так и на примере MIPS


    4. Технологии верификации on-chip протоколов и RTL блоков используя SystemVerilog и coverage-driven constrained-random verification methodology, обзор библиотеки Universal Verification Methodology (UVM)


    5. Технологии верификации процессора и систем, совместная симуляция аппаратного и программного обеспечения


    6. Создание сопроцессоров, специализированных вычислителей на основе UDI/CorExtend и Cop2


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








Добавления приветствуются
LinkReply

Comments:
[User Picture]From: stolbvoy_d
2015-08-07 07:38 am (UTC)
Студент должен быть не чужд добродетели.
(Reply) (Thread)
From: realurix
2015-08-07 08:23 am (UTC)
Какие добавления, Юра? Экономика России порвана в клочья. Вот уже западные СМИ публикуют вот такие фотографии:

Тут такое творится-деется, а ты тут с какими-то FPGA...
(Reply) (Thread)
[User Picture]From: panchul
2015-08-07 03:47 pm (UTC)
Это из какого СМИ?
(Reply) (Parent) (Thread)
From: realurix
2015-08-07 05:39 pm (UTC)
Кажется с какого-то украинского сайта. Украина ж цеевропа, а значит западное СМИ. Меня фотка впечатлила. Наглядная агитация называется. Сразу подумал куда лучше эмигрировать от этих ужастей: на Марс или на Венеру? Или попробовать дома пересидеть? Вдруг не всё так плохо?

Edited at 2015-08-07 05:52 pm (UTC)
(Reply) (Parent) (Thread)
[User Picture]From: Александр Смекалов
2015-08-07 07:36 pm (UTC)
http://dambledor.livejournal.com/138032.html#comments

Из этой статьи, но не гуглится, увы.
(Reply) (Parent) (Thread)
From: gandhi_2
2015-08-07 08:28 pm (UTC)
(Reply) (Parent) (Thread)
From: realurix
2015-08-12 08:33 am (UTC)
Ну я же говорил, что откуда-то из западенских СМИ. Кино тоже как бы СМИ, когда трубы горят...
(Reply) (Parent) (Thread)
[User Picture]From: barbuljak
2015-08-07 09:13 am (UTC)
очень интересно и познавательно.
(Reply) (Thread)
[User Picture]From: 18cc
2015-08-07 10:39 pm (UTC)

Оффтоп.

Юрий, а зачем на fpga борду добавляют микропроцессор? Для тестов, для реконфигурации на лету или чего-то еще?...
(Reply) (Thread)
[User Picture]From: panchul
2015-08-07 11:04 pm (UTC)

Re: Оффтоп.

Что вы имеете в виду под словом "добавляют"?

1. Реализуют микропроцессор с помощью логических элементов самого FPGA или

2. Ставят микропроцессор (реализованный в ASIC) сбоку и соединяют его с FPGA проводами?

(Reply) (Parent) (Thread)
[User Picture]From: 18cc
2015-08-08 10:33 am (UTC)

Re: Оффтоп.

Имею в виду 2), т.е. ставят микропроцессор и соединяют его с FPGA проводами. Зачем?
(Reply) (Parent) (Thread)
(Deleted comment)
[User Picture]From: panchul
2015-08-08 05:45 pm (UTC)

Re: Оффтоп.

Про связку CPU+FPGA вы правы, хотя можно еще и добавить аргумент про интерфейс к необычным устройствам ввода-вывода

*** делать CPU на FPGA глупо - он будет медленным и сожрет половину а то и больше площади FPGA ***

Для целей отладки процессора или целей образования - не глупо (вы это и сам понимаете, так для других людей добавил)
(Reply) (Parent) (Thread)
[User Picture]From: techwork
2015-08-09 04:59 pm (UTC)

Re: Оффтоп.

Я бы сказал что для того случая что продвигает Юрий не безсмысленно - а вот для того что предлагает ARM бесмысленно. Все равно черный ящик. Тут же дела получше.
(Reply) (Parent) (Thread)
[User Picture]From: panchul
2015-08-09 05:28 pm (UTC)

Re: Оффтоп.

Надо бы написать лабы, которые через USB будут гонять на PC отчет о текущем состоянии кэша и т.д. - чтобы это было видно наглядно.
(Reply) (Parent) (Thread)
[User Picture]From: techwork
2015-08-09 07:36 pm (UTC)

Re: Оффтоп.

да что то такое наверное нужно - просто не всем до конца понятно что вы даёте, потому что не слишком наглядно наверно - а может стереотипы - слышат ядро и ладно. Ядро и ядро. А в каком виде , что это даёт как то не думают. Либо сразу на всё замахиваются, либо наоборот не вникают. как то так.
(Reply) (Parent) (Thread)
[User Picture]From: 18cc
2015-08-08 07:59 pm (UTC)

Re: Оффтоп.

Ясно, благодарю.
(Reply) (Parent) (Thread)
From: Иван Графский
2015-08-10 12:49 am (UTC)
Если это реализуется хоть на одной кафедре в институте, то за 3-5 лет количество fpga designers в стране превысит предложение, но зато общий уровень сильно вырастет.
(Reply) (Thread)
[User Picture]From: panchul
2015-08-10 04:34 am (UTC)
Избыток дизайнеров может рвануть в писатели EDA тулов. Под соусом импортозамещения можно было бы создать всякие альтернативные toolchains а потом их коммерциализировать на международном рынке.
(Reply) (Parent) (Thread)
From: realurix
2015-08-12 08:36 am (UTC)
Ты предлагаешь нам делать так же, как делает США - ракета "Atlas", а двигатели РД-180?
(Reply) (Parent) (Thread)
[User Picture]From: panchul
2015-08-12 05:41 pm (UTC)
Дык!
(Reply) (Parent) (Thread)
From: korolev_dweller
2015-08-11 12:48 pm (UTC)
Юрий, может быть ещё добавить преобразование Фурье (дискретное и нормальное) и прочие элементы высшей математики, чтобы raygo опять поплохело?
(Reply) (Thread)
[User Picture]From: panchul
2015-08-12 01:38 am (UTC)
Это бы я обязательно сделал, если бы наш маркетинг не выдрал из MIPSfpga расширение DSP, которое как раз для всяких фурье-преобразований.
(Reply) (Parent) (Thread)
From: realurix
2015-08-12 08:38 am (UTC)
А что, на FPGA нельзя сделать ту же "бабочку"?
(Reply) (Parent) (Thread)
[User Picture]From: panchul
2015-08-12 05:40 pm (UTC)
Можно, но для некоторых задач DSP extension на ядре достаточно и при этом дешевле для больших тиражей изделий, если потом из этого сделать ASIC

Edited at 2015-08-12 05:41 pm (UTC)
(Reply) (Parent) (Thread)
From: realurix
2015-08-12 08:52 am (UTC)
Если серьёзно, то я бы предложил в качестве лабы не закладку - нечего троллей, креаклов и всяких хацкеров плодить, а аппаратный компилятор. Например, с языка EBNF. Всё больше пользы будет. А то постоянно хочется морду набить пейсателям LLVM...

Хотя от этих тоже польза бывает


Edited at 2015-08-12 08:54 am (UTC)
(Reply) (Thread)
[User Picture]From: ckotinko
2015-08-18 03:35 pm (UTC)
Панчул, у меня вопрос возник к тебе:

сколково для регистрации участника требует в команду человека "с международным опытом работы в сфере или бизнесе". это с одной стороны. с другой, между описанием на RTL и готовым решением пусть неблизкий, и было бы хорошо, если бы на каком-то этапе разработка была использована кем-то крупным. хотя бы по кускам, у нас например можно сходу ALU оторвать целиком, оно умеет float, double, integer и очень простое. Плотное участие не требуется, там скорее формальность. Деньги даст родина. Даст деньги - будет куча времени а не "по вечерам", и прототип на плате с плисинами будет к новому году. В общем, для начала нужно формальное согласие без обязательств.

Есть идеи, кому это может быть интересно?

Конечный результат, который ожидается: массивно-непараллельный GPU, который может крутить как обычные приложения, так и шейдеры, причем без всякого драйвера. если подумать, можно еще добавить ускорение сборки мусора, я презираю жабистов, но для веб-приложений будет ускорение огромное. кроме того, можно приделать аппаратный античит. Может быть это будет интересно твоей компании.

(Reply) (Thread)
[User Picture]From: panchul
2015-08-18 06:23 pm (UTC)
*** Есть идеи, кому это может быть интересно? ***

Надо подумать. Пришлите более подробное описание на yuri.panchul@imgtec.com
(Reply) (Parent) (Thread)