ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
27 апреля
836199
Evgeny_CD, Архитектор (29.04.2018 00:04, просмотров: 715)
[Какой софткор нам нужен]? Размышлизма по причине достижения -> предела софткоростроения. Неплохая статья по теме гибридных стеково-регистровых процессоров --> http://caxapa.ru/836115.html
http://caxapa.ru/836111.html
  • Исключения
  • На практике могут быть любые, самые невероятные извращения, которые делают неприменимыми все описанные мною мысли.
  • Зачем нам нужен софткор?
  • Он нужен, чтобы сэкономить ресурсы на программировании гигантских не очень быстрых конечных автоматов в FPGA. Например, 1Г Ethernet - это 200к пакетов в секунду по 512 байт [грубая прикидка]. И для 50 MIPS софткора у нас будет 250 32 битных операций на обработку этого пакета. Не так и сложно успеть. А вот КА для обработки пакета - это монстр! Софткор нам нужен, чтобы управлять чем-то.
  • Что софткор не должен делать?
  • Софткор не должен проводить массивные вычисления самостоятельно. Он может управлять вычислительнымп блоком, но не сам проводить вычисления. Аппаратные умножение и деление стоит оставить для удобства программиста. Никакой плавучки! Linux на софткоре - это эпическая глупостью. Одно время это было очень продвигаемым решением, но увы - это время закончилось. Для этого есть FPGA со встроенными железными ядрами. "Linux микросхема за $16" http://caxapa.ru/686130.html сделает это сильно быстрее и сильно-сильно дешевле.
  • Каким должен быть софткор
  • Event-система. Мы засунули софткор внутрь чипа потому, что нам надо быстро, и внешний MCU черех SPI не успевает? Значит, нужна система событий. Во многих современных MCU она есть, но в программируемом варианте это достаточно сложная вещь, по сути специализированная FPGA внутри MCU. Если на этапе синтеза FPGA мы пропишем все связи, то ресрурсов надо будет очень немного. Быстрая работа с прерываниями. Раз нам надо быстро, то и прерывания должны быть очень быстрыми. Безрегистровая архитектура - самое то. Нет нужды сохранять контекст по причине его отсуствия. Быстрая IO шина - идеи Cortex-M0+ Нужны команды прямой работы с виртуальными регистрами, которые отображены на отдельную IO шину. Чтобы не "считать содержимое регистра, наложить маску, понять, что там творится", а чтобы был некий виртуальный регистр (несколько штук - единицы), с содержимым которого софткор работал бы за 1 такт. В том числе переходы. Еще раз - таких регистров буквально 1-2. Могут сильно ускорить реальные задачи.
  • Asm программизм.
  • Эта часть сильно отличается от общепринятой традиции. Чистое IMHO. Наш кастомный процессор управляет кастомной периферией - готовых либ не будет. Так что совместимость нас заботит не очень сильно. Пусть у нас есть безрегистровое ядро, в которого ALU делает все операции над 32 битными числами. Кроме плавучки. Если писать в нормальной IDE, с человеческими именами переменных и визуализатором стека, то будет эффективно.