Стек технологий

 

Проектирование на ПЛИС

 

ПЛИС: AMD / Xilinx, Intel, Lattice.

Языки описания аппаратуры: VHDL, Verilog, System Verilog, Migen, Chisel.

 

 

Разработка микросхем и IP-блоков

 

Языки описания аппаратуры: VHDL, Verilog, System Verilog, Migen, Chisel.

ПО: Yosys, OpenROAD, Magic, Netgen, KLayout.

Фреймворки: cocotb, VUnit, собственные разработки.

 

 

Серверное ПО

 

Операционные системы: Linux на базе Debian и Rocky Linux.

Языки программирования: С, С++, Python.

Протоколы взаимодействия с другими системами: HTTP, SSH.

 

 

Пользовательское ПО

 

Операционные системы: Windows, Linux, MacOS.

Языки программирования: С, С++, Assembler (x86/ARM/RISC-V), Python, Shell, Tcl.

Компиляторы: gcc, llvm.

 

 

Общее

 

Непрерывная интеграция и DevOps: Git, Mercurial, GitLab, Jenkins, Docker.

Документация: Sphinx, Latex, draw.io.

Управление проектами: Redmine.

Применения

 

Доверенное блокчейн-решение

 

Мы первые спроектировали отечественный чип для блокчейна! Да, для майнинга он тоже подходит. Если вам интересен майнинг - напишите нам, и мы расскажем вам о разрабатываемых нами решениях для майнинга существующих сегодня и перспективных криптовалют. Но, блокчейн - это не только майнинг и в первую очередь это не майнинг. Блокчейн - это подход, гарантирующий достоверность данных, хранимых в децентрализованной сети равноправных узлов. Не важно, о какой операции идет речь, о передачи средств в Bitcoin или исполнении контракта в Ethereum, от блокчейн-транзакций, как всегда, требуется скорость и энергоэффективность. 

 

Семейство процессоров MALT-C специально разработано для выполнения вычислительно сложных криптопреобразований, в частности, блокчейн-транзакций с предельной энергоэффективностью. Благодаря нашему процессору вы сможете обеспечить доверенное цифровое взаимодействие, при котором информация и документы будут успешно передаваться и храниться с использованием технологии блокчейн. Процессоры семейства MALT-C потребляют единицы Ватт, поэтому вы сможете создать компактные блокчейн-терминалы, в том числе встраиваемые или носимые. Оборудование на основе архитектуры MALT гарантировано защищено от программных и аппаратных backdoor’ов, здесь вы контролируете все от железа до ПО! Применив свой собственный криптографический алгоритм на MALT-C, вы сможете исключить возможность использования специализированных интегральных схем (ASIC) для “взлома” хэш функции прямым перебором, защитив свою блокчейн-систему.

 

 

Замена графической карте

 

Сегодня все чаще графические процессоры или GPU находят своё применение для задач, не связанных с визуализацией в компьютерных играх. Это связано с исключительной вычислительной мощностью современных GPU, содержащих тысячи вычислительных элементов, развитыми средствами программирования GPU и, что очень важно, невысокой ценой. Однако, насколько бы GPU не становились похожи на универсальные процессоры, их стихия - обработка графики в играх, там их архитектура раскрывается на 100% и реальная производительность приближается к пиковой. На остальных же задачах, таких как блокчейн, большие данные и математическая физика, их функциональность, с одной стороны, избыточна, так как в блокчейн применениях не используется работа с плавающей точкой, с другой - недостаточна, так как ограниченная поддержка ветвлений и произвольной адресации в общей памяти может снижать на 1-2 порядка производительность в задачах класса "большие данные" относительно теоретического предела.

 

Напрашивается специализированное решение. Что, если создать чип, 80% которого занимают однотипные вычислительные элементы, спроектированные “с нуля” специально под заданный целевой класс задач? Вычислительные элементы объединить в группы, управляемые компактными универсальными RISC процессорами, объединенными в вычислительный массив, “выглядящий” для программиста как обычный, программируемый на C/C++ многопотоковый процессор? Мы получим удобный для программиста и исключительно производительный специализированный процессор. Мы спроектировали три семейства таких процессоров и назвали проект MALT. Читайте подробнее об архитектуре в соответствующем разделе.

Программирование

 

Мы уверены, что вы имеете опыт работы с коммерчески доступными x86/GPU/ARM вычислительными системами на языках С/С++. Скорее всего, вы программировали GPU на специализированных языках типа OpenCL или CUDA. Очень вероятно, что как для универсальных, так и для графических процессоров вы использовали специальные, ориентированные на конкретное “железо”, приемы для повышения производительности работы вашего кода. И, как любому программисту, вам бы хотелось, с одной стороны, “поменьше копаться в железе” и использовать уже изученные, привычные для вас, языки программирования, с другой - “выжать из оборудования все, на что оно способно”, и получить действительно быстрый и/или, в зависимости от требования заказчика, энергоэффективный код.

 

Учитывая вышесказанное, отлично понимая трудности работы с любой новой архитектурой, мы собираемся предложить для программирования всех процессоров, построенных на базе архитектуры MALT, универсальный подход, который позволяет начать работать на MALT с C/C++ кодом, либо уже имеющимся у вас, либо написанным на основе предлагаемых нами примеров. Далее, оптимизируя его в соответствии с рекомендациями из нашего руководства, выжать из оборудования все, на что оно способно. Для удобной отладки пользовательского кода мы предоставляем полнофункциональный эмулятор. Для выявления узких мест и оптимизации в комплекте с эмулятором идет профилировщик.

 

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

 

C++ для MALT. Наиболее простой путь начала работы с MALT. Для программирования скалярных ядер поддерживается стандарт С++17. Работа с потоками осуществляется через конструкции C++ std::thread, std::mutex и другие. MALT выступает в роли классического многоядерного процессора, поэтому портировать существующее ПО и библиотеки легко.

 

OpenCL для MALT. Реализация стандарта OpenCL для работы со скалярными и векторными ядрами MALT. Реализация OpenCL поставляется вместе с библиотекой проблемно-ориентированных алгоритмов, оптимизированных под MALT. Теперь перейти на MALT для пользователей ускорителей AMD, NVIDIA, ARM стало проще.

 

Написать свою программу или запустить интересующий Вас пример можно в онлайн-компиляторе, который скомпилирует исходный код и выполнит его онлайн в виртуальной среде. Онлайн-компилятор позволит не только ознакомиться с системой MALT, но и оценить возможности системы.

 

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

 


 

C++ для MALT

 

При использовании потоков C++ решения MALT "выглядят" как обычные многоядерные процессоры. Поддерживаются стандарты языка вплоть до С++17. Функции для использования аппаратных расширений содержатся в пространстве имён malt::

 

Пример программы на С++ для MALT:

 


#include <vector> 
#include <thread>  
#include <functional>  

int main() {
     const int size_x = 1920;
     const int size_y = 1080;
     uint8_t frame[size_x * size_y], buffer[size_x * size_y];
     load_grayscale_image(frame, size_x, size_y);
     memset(buffer, 0, size_x * size_y * sizeof(uint8_t));

     auto f = [](uint8_t *in, uint8_t *out,
                 int start, int end, int shift) {
         out[start] = in[start];
         for (int offset = start + shift; offset < end; offset++)
             out[offset] = in[offset - 1] / 4 + in[offset] / 2 + in[offset - 1] / 4;
         out[end] = in[end];
     };

   std::vector<std::thread>threads;
   threads.resize(size_y);
   for (int y = 0; y < threads.size(); y++)
       threads[y] = std::thread(f, frame, buffer,
                                y * size_x, (y - 1) * size_x - 1, 1);

   for (auto &t : threads) t.join();

   threads.resize(size_x); 
   for (int x = 0; x < threads.size(); x++) 
      threads[x] = std::thread(f, buffer, frame x, x + (size_y - 1) * size_x, size_x); 
   for (auto &t : threads) t.join(); 
   return 0; }

 

 


 

OpenCL для MALT 

 

Реализация стандарта OpenCL для работы со скалярными и векторными ядрами MALT. Реализация OpenCL поставляется вместе с библиотекой проблемно-ориентированных алгоритмов, оптимизированных под MALT. Теперь перейти на MALT для пользователей ускорителей AMD, NVIDIA, ARM стало проще.

 

Пример программы на OpenCL для MALT:

 


// Примерный код OpenCL-ядра для выделения особых точек изображения

#define DIM_X   128
#define DIM_Y   128

#define M       9
#define MASK(n) (masks+(n)*M*M)
#define HESS_L  100

int D(__global uchar* img, int x, int y, __constant uchar *mask) {
  x -= M/2; y -= M/2; int v = 0;
  for (int dx=0; dx<M; dx++)
    for (int dy=0; dy<M; dy++) 
      v += mask[dx+M*dy] * img[(x+dx)+DIM_X*(y+dy)];
  return v;    
}

__kernel void mark_ipoints(__global uchar *img, __constant uchar* masks) {
  for (int x=M/2; x<DIM_X-M/2; x++) { 
    for (int y=M/2; y<DIM_Y-M/2; y++) {
      int Dxx = D(img,x,y,MASK(0)), 
          Dyy = D(img,x,y,MASK(1)), 
          Dxy = D(img,x,y,MASK(2));
      img[x+DIM_X*y] |= (abs(5*Dxx*Dyy - 4*Dxy*Dxy) > HESS_L) << 7; 
    } 
  }
}

Архитектура

 

Как это работает?

 

Около 80% любого из разрабатываемых нами кристаллов, занимают однотипные вычислительные элементы, спроектированные “с нуля” специально под целевой класс задач. Эти элементы определяют производительность и энергетику чипа. Их на кристалле от сотен до тысяч! Все вычислительные элементы программируемы на языке С или его подмножестве. Вычислительные элементы объединены в группы, управляемые компактными универсальными RISC процессорами, объединенными в вычислительный массив, “выглядящий” для программиста как обычный, программируемый на C/C++ многопотоковый процессор. Классические проблемы многопоточного программирования (механизмы разрешения конфликтов одновременного доступа к общим данным, в том числе атомарные операции) мы решили аппаратно на уровне контроллера памяти.

 

Краткий взгляд на архитектуру MALT

 

Основу архитектуры MALT составляют десятки или сотни, в зависимости от модели, компактных асинхронных универсальных вычислительных ядер, объединенных одной или несколькими оригинальными worm-hole сетями с топологией типа fat-tree. Коммуникация между сетями - программно-аппаратная. Иерархия универсальных ядер включает три уровня: supermaster - управляющее ядро, master - коммуникационные ядра, slave - доступные для задач пользователя вычислительные ядра. Slave ядра, в зависимости от модели, могут содержать векторные ускорители, выполняющие специализированные задачи целевого класса, каждый ускоритель содержит от 8-ми до 128-ми однотипных процессорных элементов с общей памятью команд. Все вычислительные ядра и ускорители имеют собственную локальную память данных. Все универсальные ядра непосредственно адресуют общую внешнюю динамическую память DRAM и другие общие ресурсы (PCIe, Ethernet, SATA). Арбитраж доступа к внешним ресурсам обеспечивается smart memory controller’ом (SMC) - аппаратным контроллером «умной памяти» с дополнительным признаком готовности данных. Количество SMC-контроллеров, перечень и конфигурация общих внешних ресурсов зависит от семейства MALT и определяется требованиями целевых задач.

 

 

Условия Использования

 

Официальное уведомление

 

Данные правила распространяются на всех посетителей и пользователей сайта. Пользуясь материалами сайта, потребитель выражает свое согласие с данными правилами. MALT System сохраняет за собой право изменять данные правила и инструкции по своему усмотрению. В случае нарушения данных правил MALT System оставляет за собой право применить все допустимые законом средства по отношению к нарушителям. Данные правила распространяются на настоящих и будущих посетителей сайта (maltsystem.com) MALT System.  MALT System содержит данный веб-сайт для периодического оперативного и постоянного предоставления необходимой, достаточной и актуальной информации о проекте MALT System всем пользователям интернета, заинтересованным в получении информации о тех или иных аспектах его деятельности, инициативах и достижениях. Хотя мы и будем стараться предоставлять максимально точную информацию, ее точность и полнота не может быть гарантирована. Кроме того, данный веб-сайт содержит некоторые сведения о перспективах (т. е. планы, цели, стратегия и т. д.), отражающие знание нашего менеджмента и включающее в себя риски и неопределенности. Мы бы хотели предупредить вас, что реальный ход событий или результаты могут отличаться от публикуемых на сайте заявлений и проспектов. Таким образом MALT System не несет ответственности или обязательств любого рода за информацию на веб-сайте maltsystem.com.

 

Информация об ограничениях и порядок использования информации

 

Вся информация, размещенная на веб-сайте maltsystem.com,  включая статьи, тексты, фотоизображения, иллюстрации, дизайн сайта, а также подбор и расположение материалов является объектом авторских прав и охраняется в соответствии с законодательством РФ и международным законодательством об авторском праве и смежных правах. MALT System является обладателем исключительных авторских имущественных прав на указанную информацию и представляет интересы авторов статей, размещенных на веб-сайте maltsystem.com. Копирование (в том числе запись на носители информации), воспроизведение (включая воспроизведение на сайтах сети интернет для любых целей, включая обзоры), переработка, распространение, передача в эфир, сообщение по кабелю для всеобщего сведения, доведение до всеобщего сведения через сеть интернет, иное использование статей и других материалов веб-сайта maltsystem.com любым способом без письменного разрешения MALT System (требуется не электронная копия разрешения) запрещено и влечет ответственность, предусмотренную законодательством РФ о защите авторских прав.  При цитировании материалов в сети Интернет ссылка на www.maltsystem.com обязательна. Для получения разрешения на републикацию свяжитесь с нами.

 

Конфиденциальность

 

В то время как пользователи просматривают, читают и скачивают информацию с данного сайта, мы автоматически собираем и сохраняем информацию о посетителях для статистических целей (т. е. IP-адрес, имя домена, тип браузера и операционная система, дата и время посещения и т. д.). Подразумевается, что эта информация является общедоступной. MALT System и ее дочерние структуры не несут ответственности или обязательств за ее разглашение. Никакая персональная информация о посетителях данного веб-сайта (т. е. имя, адрес, номер телефона, адрес электронной почты и т. д.) автоматически не собирается без конкретного разрешения посетителя.

 

Cookies

 

Сайт использует файлы cookies. В соответствии с требованиями законодательства разных стран в области электронной связи, лица, посещающие веб-сайты, использующие cookies, должны быть предупреждены о данном факте и о способах их отключения. Cookie-файл - это небольшой текстовый файл, отсылаемый сайтом на ваш ПК, когда вы заходите на сайт. Этот файл сохраняется на компьютере, и при повторном посещении сайт обращается к данной информации. На нашем сайте файлы cookies используются по техническим соображениям и для ускорения его работы. Если вы не желаете получать данные файлы, вы можете отключить их в настройках безопасности веб-браузера. Однако при отключении cookies MALT System не может гарантировать правильность работы данного сайта. Чтобы сайт запомнил выбранные вами страницы и ускорил их загрузку при следующем посещении сайта, убедитесь, что файлы cookies-включены.

 

Ограничение ответственности

 

Текстовая и графическая информация, использованные на настоящем веб-сайте, не возлагают никаких контрактных или иных обязательств на MALT System  также данная информация не может рассматриваться как предложение или приглашение иного рода к покупке или продаже товаров или услуг. Контрактные и иные обязательства, взятые в соответствии со стандартными условиями и положениями MALT System по продаже, а также условиями и положениями, согласованными с MALT System в письменном виде, имеют приоритет над Информацией, которая приведена на настоящем сайте.  Информация может содержать технические неточности или опечатки. MALT System принимает все возможные меры, чтобы гарантировать точность Информации на момент ее занесения на сайт. Однако, как и любой другой печатный материал, Информация может быть неактуальна на момент обращения к ней посетителя сайта. MALT System не несет ответственности за ошибки, упущения, несвоевременное обновление подобной информации, а ответственность за все решения, принимаемые на основании данной Информации, возлагается исключительно на пользователя. MALT System оставляет за собой право в любое время вносить изменения в содержимое сайта без предварительного уведомления. 

 

Информация не подпадает под действие гарантий или заявлений, выраженных явно или подразумеваемых, а MALT System прямо отказывается от всех подразумеваемых гарантий или положений в части названия, описания, качества, пригодности или непосягательства на право третьих лиц на интеллектуальную собственность. При наличии законодательных актов, ограничивающих область действия ограничительных оговорок, данные ограничения применяются в полном объеме, разрешенном местным законодательством. MALT System не несет ответственности, прямой или косвенной, за косвенные убытки, возникающие при использовании настоящего сайта, включая, в частности, упущенную выгоду, производственный простой, потерю программ и иных данных в системах обработки Информации и потерями иного рода. 

 

Материалы

 

Сайт содержит материалы, охраняемые авторским правом. Все используемые материалы, размещенные на сайте, являются собственностью их автора (владельца прав) и охраняются 4-ой частью Гражданского кодекса Российской Федерации от 18 декабря 2006 г. N 230-ФЗ”. Эти материалы предназначены только для ознакомления. Для прочих целей Вы должны купить лицензионное издание. Если Вы оставляете у себя в каком-либо виде материалы, полученные на этом сайте, но не приобретаете право на их использование, Вы нарушаете законы об Интеллектуальной собственности и Авторском праве, что может повлечь за собой преследование по соответствующим статьям существующего законодательства. 

 

Ссылки

 

Любые ссылки на другие (внешние) веб-сайты предоставлены бесплатно. Информацию с этих сайтов нельзя интерпретировать как дополнение к материалам сайта maltsystem.comMALT System не контролируют эти веб-сайты и доступ к ним — исключительно ваша ответственность. Ссылки, размещенные на данном сайте, могут привести на другие сайты, за которые MALT System не несет ответственности. Соответственно компания MALT System снимает с себя ответственность, прямую или косвенную, за информацию, содержащуюся на данных сайтах.  Все комментарии и материалы, предоставляемые MALT System через настоящий сайт, включая ответы на вопросы или предложения, должны рассматриваться как неконфиденциальные. MALT System не несет ответственности за данные комментарии или материалы и имеет полное право на их копирование, использование или распространение без ограничений. Кроме того, компания MALT System может свободно использовать любые идеи, концепции, ноу-хау и другие технические совершенствования, содержащиеся в подобных комментариях или материалах.

Если у вас есть вопросы по поводу всего вышеизложенного — пожалуйстасвяжитесь с нами.