Инженер по верификации микропроцессорных ядер
62,6
рейтинг
16 января в 08:59

Разработка → Как начать работать с MIPSfpga

MIPSfpga — это пакет, который содержит процессорное ядро в исходниках на Verilog, которое можно менять, добавлять новые инструкции, строить многопроцессорные системы, менять одновременно софтвер и хардвер, симулировать на симуляторе верилога, синтезировать для ПЛИС/FPGA и т.д. Его можно в целях эксперимента например запускать с частотой 1 такт в секунду и выводить наружу информацию о состоянии кэша, конвейера, и любых структур внутри процессора. При этом ядро MIPS microAptiv UP внутри MIPSfpga — это то же ядро которое например используется в платформе IoT Samsung Artik 1 и Microchip PIC32MZ, т.е. студенты получают возможность работать с тем же кодом, с которым работают инженеры в Samsung и Microchip.

MIPSfpga не предназначен для введения в предмет с абсолютного нуля. Для его плодотворного использования нужно чтобы студент или исследователь уже знал основы цифровой схемотехники, умел бы программировать на Си и на ассемблере, а также представлял бы концепции микроархитектуры — конвейера, конфликтов конвейера и т.д. Желательно, чтобы до работы с MIPSfpga студент уже бы построил собственный простой процессор с нуля и мог бы сравнивать свой простой процессор с процессором, используемым в промышленности и совместимым с развитой экосистемой разработки.




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

Если студент и исследователь недостаточно владеет знаниями из списка, из можно освежить из книжки Дэвида Харриса и Сары Харрис «Цифровая схемотехника и архитектура компьютера», русский перевод которой можно бесплатно скачать по инструкции из поста:
http://habrahabr.ru/post/259505/
Бесплатный учебник электроники, архитектуры компьютера и низкоуровневого программирования на русском языке


Пакет MIPSfpga как таковой можно скачать по иструкции из поста:
Инструкция по скачиванию MIPSfpga

Сначала желательно прочитать базовую презентацию в MIPSfpga_Fundamentals/Slides/MIPSfpga_LectureSlides.pdf

Потом можно просмотреть «MIPSfpga/MIPSfpga Getting Started Guide.pdf» — на нем не нужно зацикливаться; это популярное описание, которое расжевывает слайды, но не заменяет ни в коей мере коммерческую дукументацию на ядро MIPS microAptiv UP, публичная часть которой находится в директории MIPSfpga/Documents, в том числе документация по внешним сигналам (MIPS32 microAptiv UP Processor Core Family Integrator’s Guide) и программированию (MIPS32 microAptiv UP Processor Core Family Software User’s Manual).

Документацию по архитектуре MIPS стоит скачать (с регистрацией) из:

http://imgtec.com/mips/architectures/mips32/
http://imgtec.com/mips/architectures/mcu-ase/

и других мест на сайте Imagination Technologies.

Для понимания программирования на ассемблере где-нибудь желательно найти несколько устаревшую, но полезную книжку http://www.amazon.com/Second-Edition-Kaufmann-Computer-Architecture/dp/0120884216
See MIPS Run, Second Edition by Dominic Sweetman, 2006
.

Помимо основной документации по MIPSfpga и MIPS может быть полезным скачать материалы семинаров в России:
Публичные презентации, использованные во время семинаров по MIPSfpga в России

Вскоре после выпуска, у MIPSfpga начали появляться разнообразные расширения и улучшения. Вместо исходного пакеты мы рекомендуем использовать одно из таких расширений, которое называется MIPSfpga+.

Его описание и код можно найти по следующим ссылкам:
MIPSfpga+ allows loading programs via UART and has a switchable clock

http://github.com/MIPSfpga/mipsfpga-plus
https://github.com/MIPSfpga/mipsfpga-plus/blob/master/README.md
http://github.com/MIPSfpga/mipsfpga-plus/wiki

Одна из инструкций по работе с платой и синтезатором:
Инструкция по лабораторным работам по MIPSfpga для платы Terasic DE0-CV c Altera Cyclone V

Если вы готовы сделать проект на основе MIPSfpga, но у вас есть трудности с нахождением или покупкой оборудования, вы можете попробовать бесплатно одолжить FPGA плату:
Раздача слонов: FPGA платы для образовательных проектов с MIPSfpga

В завершение, в качестве лирического отступления — репортаж о семинарах по MIPSfpga в России:
Путешествие по микроэлектронной России 2015 года
Юрий Панчул @YuriPanchul
карма
113,0
рейтинг 62,6
Инженер по верификации микропроцессорных ядер
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (11)

  • +6
    Надеялся увидеть здесь подробный tutorial на русском, а увидел набор ссылок.
    • 0
      Аналогично, статья прям говорит «вот вам ссылки, которые меня попросил выложить профессор N-ного вуза». Направление становится популярным если кого-то в нем заинтересовать, а так куча ссылок на ресурсы, которые заинтересованные лица и сами найдут, а люди слабо понимающие о чем идет речь забросят в конец списка «к прочтению»
      • 0
        Базовый tutorial для MIPSfpga на русском языке можно скачать с регистрацией здесь community.imgtec.com/university/resources
        но так как регистрация сделана криво, то к ней требуется инструкция которая находится здесь www.silicon-russia.com/2015/12/11/mipsfpga-download-instructions

        Есть также описание улучшенной версии MIPSfpga под названием MIPSfpga+, но оно пока на английском — github.com/MIPSfpga/mipsfpga-plus/wiki — есть план сделать его и на русском и выходить на хабре где-то через месяц.
    • 0
      Базовый tutorial для MIPSfpga на русском языке можно скачать с регистрацией здесь community.imgtec.com/university/resources
      но так как регистрация сделана криво, то к ней требуется инструкция которая находится здесь www.silicon-russia.com/2015/12/11/mipsfpga-download-instructions

      Есть также описание улучшенной версии MIPSfpga под названием MIPSfpga+, но оно пока на английском — github.com/MIPSfpga/mipsfpga-plus/wiki — есть план сделать его и на русском и выходить на хабре где-то через месяц.
  • 0
    Я правильно понял что простым смертным (не студентам/сотрудникам вузов) MIPSfpga не доступен?
    • 0
      Ну лично вам я думаю стоит предоставить попробовать, если вы обещаете распостранить информацию про MIPSfpga среди каких-нибудь ваших вузовских знакомых (разумеется если MIPSfpga вам понравится). Зарегистрируйтесь, введите вуз, в котором вы учились или имеете хоть косвенное отношение, если будут проблемы регистрации — пришлите мне емейл на yuri.panchul@imgtec.com, я поговорю с Робертом Оуэном и Лоренсом Кенгом (они заняты регистрациями).
      • 0
        Как вы оцениваете образовательные перспективы полностью открытых проектов, таких как RISC-V или OpenCores?

        Как мне видится RISC-V должен быть более привлекателен с академической точки зрения. Тем более что помимо развития открытой ISA, Беркли также занимаются исследованиями в области design flow. В тот же Chisel порог входа для разработчиков ниже, чем в Verilog, например, какой-нибудь проект в области статического анализа на Chisel вполне можно выполнить в рамках магистерской дисертации.

        Не хватает только книжки Computer Organization and Design: RISC-V edition.
        • 0
          RISC/V по ассемблеру очень похож на MIPS, хотя его инструкции кодируются иначе.

          В Беркли преподаватели действительно хотят перевести все на RISC/V, но есть объективное обстоятельство: на RISC/V еще нет реализованных в индустрии процессоров, тогда как только у MIPS microAptiv UP есть десятки компаний-лицензиатов, которые использовали это ядро для проектирования своих ASIC-ов.

          Многие профессора хотят строить курсы по микроархитектуре в два этапа:

          1. Сначала студенты строят совсем простой процессор в несколько сотен строк на Verilog, делают его конвейерным и понимают на нем концепции конвейера, stalls, forwarding и т.д.

          2. Потом студенты работают с широко используемым в индустрии процессором, делают с ним эксперименты, добавляя инструкции и проверяя как это отразится на производительности.

          MIPSfpga вписывается в это лучше, чем RISC/V по двум причинам:

          1. Архитектура MIPS имеет 25-летнюю традицию использования в качестве примера как архитектуры, так и микроахитектуры не только в Computer Organization and Design, но и ряде других учебников. На это можно было бы наплевать, если бы RISC/V был бы принципиально другим, но он принципиально другим не является.

          2. Для второго этапа (работа с индустриальными процессорами) MIPSfpga сейчас вписывается, а RISC/V — нет, OpenRISC и SPARC / Leon вписываются частично (у них есть индустриальные лицензиаты, но их принципиально меньше чем у MIPS вообще и даже у MIPS microAptiv UP в частности).

          • 0
            Что-то похожее у нас было в первом семестре первого курса, называлось «Введение в МикроЭВМ». Правда на Verilog мы не писали, а изучали готовую архитектуру и программировали на ассемблере. В качестве экспериментов по добавлению инструкций была последняя лаба, на которой нужно было программировать ROM с микрокомандами. Само ядро чем-то напоминало multicycle MIPS из CoD, но с программируемым Control-Unit'ом, вместо железно-механического.

            В общем всё это как-то архаично. Тот же конвейер придумали полвека назад. Непонятно, где хорошие учебники про архитектуру GPU и SIMT. Про суперскалярные и VLIW процессоры классические книги есть, но в новых редакциях почему-то не выходят.
            • 0
              *** В качестве экспериментов по добавлению инструкций была последняя лаба, на которой нужно было программировать ROM с микрокомандами. ***

              Да, микропрограммирование с микрокомандами в ROM — это как включить в курс по бензиновым двигателям главу про паровые машины. Может быть интересно, но для автомобилестроения не очень актуально.

              После RISC-революции 1980-х это лучше из курса удалить, или оставить в качестве исторического прикола, для расширения сознания так сказать.

              *** Про суперскалярные и VLIW процессоры классические книги есть, но в новых редакциях почему-то не выходят. ***

              Выходят например в 2013 году www.amazon.com/Modern-Processor-Design-Fundamentals-Superscalar-ebook/dp/B00HCLUL5O

              Modern Processor Design: Fundamentals of Superscalar Processors by John Paul Shen & Mikko H. Lipasti


              • 0
                Ну этот курс читался ещё по советскому учебнику, так что немудрено.

                Книжка эта у меня есть, она вышла в 2004 году. В данном случае это просто репринт, а не новая редакция.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.