Fresh fruit: Sipeed Lichee Pi 4A
Перевод: https://medium.com/@davidly_33504/fresh-fruit-sipeed-lichee-pi-4a-1148b85b2edb
Новый фрукт одноплатной системы
![](https://gavrilov.info/pictures/image-43.png)
Lichee Pi 4 слева и Raspberry PI 4 Model B справа. Фото автора.
Недавно я использовал Lichee Pi 4A от Sipeed для нескольких дней разработки. Он работал прямо из коробки и был стабилен. За исключением небольшой медлительности и отсутствия поддержки VS Code для RISC-V, плата отлично подходит в качестве системы разработки на RISC-V.
Lichee несколько крупнее, чем одноплатные компьютеры Raspberry PI, от которых она позаимствовала название, но обладает функциями, которых отсутствуют у этих систем, включая NPU для машинного обучения, два Ethernet-порта, больше ОЗУ, флеш-память и т. д. Мой экземпляр имеет четыре ядра RISC-V с частотой 1,85 ГГц, 128 ГБ флеш-памяти и 16 ГБ ОЗУ. Он пришел с предустановленной последней версией Debian. Подробная информация о применении платы доступна на вики Sipeed.
Я заинтересовался RISC-V в начале этого года, когда увидел глобально растущую поддержку архитектуры, особенно в Китае, что усилилось повышением лицензионных сборов за новые версии ARM. RISC-V бесплатен и хорошо спроектирован. Хотя для развития экосистемы потребуется время, я не вижу технических причин, по которым он не сможет со временем вытеснить ARM, как ARM вытеснил Intel.
В феврале я купил первый RISC-V Kendryte K210 от Sipeed, который является значительно меньшей системой, использующей Arduino для программирования. Он заметно медленнее с частотой 400 МГц и имеет элементарные, нестандартные API для встроенных систем. Я использовал его для выполнения некоторых эталонных тестов, написанных на ассемблере RISC-V и C. Также я проверял генерацию кода RISC-V с помощью моего компилятора BASIC — BA.
Arduino довольно трудно использовать, поэтому в итоге я написал эмулятор RISC-V, поддерживающий системные вызовы Linux, используемые в среде выполнения g++. Этот эмулятор (rvos) требовал много работы, но значительно упростил дальнейшую разработку компилятора BA и стал отличным способом для изучения RISC-V и Linux.
Все это было замечательно, но использование Lichee в качестве универсальной системы для кодирования и тестирования явно превосходит среду K210 и RVOS. Теперь я могу писать, компилировать, запускать и отлаживать код на одной машине. Установка g++ была простой командой apt, вместо клонирования репозитория GNU и его сборки для целевой архитектуры RISC-V.
Я создал эмулятор RVOS для RISC-V и запустил его проверочный набор на Lichee. Это немного забавно иметь эмулятор, работающий на той же платформе, которую он эмулирует, но это был хороший способ убедиться, что все работает. То же самое я сделал с моими эмуляторами для 6502 + Apple 1 и Z80 + CP/M 2.2. Они отлично работают на Lichee. Меня все еще поражает, что я могу запускать версию Turbo Pascal 1.0 на Z80 на RISC-V и это более чем в 100 раз быстрее, чем на моем старом Kaypro II.
Хотел бы сказать, что нашел ошибки в Debian или оборудовании, но они работали как ожидалось. Я обнаружил одну ошибку — но она была моей. Я установил более новую версию g++, чем полугодовалый кросс-компилятор, который я использовал на Ubuntu AMD64. Новый компилятор генерирует инструкции RISC-V SC.D, что выявило ошибку в RVOS, не обнаруженную ранее из-за того, что старые компиляторы не генерировали эту инструкцию.
Наибольший недостаток для разработки на Lichee — это отсутствие поддержки VS Code для RISC-V. Мне приходится использовать редактор Mousepad для написания кода. Хм... VS Code — это open-source, и это проблема, которую я могу решить.
Производительность приемлема для разработки ПО. Он в 5 раз быстрее, чем плата K210, но по-прежнему далеко от современных процессоров. В одном кри核ном эталонном тесте, написанном на C, его скорость примерно такая же, как у Intel Q9650 3.0 Ггц 2008 года. Тот же тест работает примерно на 23% быстрее, чем на Raspberry PI 4 2019 года. Он в 6,3 раза медленнее, чем AMD 5950x с частотой 3.4 Ггц 2020 года.
Эталонный тест выполняется с одним ядром и затем используя до 3-х ядер (если доступны), называемых ниже 3c и 2c. Для более современных машин я использовал g++. Для двух старых Windows-машин я использовал компилятор C++ от Microsoft. Я также запускал версии эталонного теста на C++ в трех эмуляторах, чтобы понять производительность более сложных приложений. Все времена в миллисекундах для одной итерации доказательства невозможности выиграть в крестики-нолики, если противник компетентен. (Никогда не забывай, что WOPR потратил 72 секунды на решение этой задачи в фильме “Военные игры”). Меньшие значения времени лучше.
Время выполнения эталона в миллисекундах для одного ядра и до 3 ядер на различных системах.
Системы на базе RISC-V будут улучшаться; нет ничего в архитектуре набора команд, что бы помешало ему догнать ARM и Intel. Но учитывая, что большинство инвестиций в RISC-V поступает из Китая, а остальной мир исключил Китай из производства следующего поколения кремния, будет интересно увидеть, что произойдет дальше.
Я могу рекомендовать Lichee каждому, кто хочет глубже погрузиться в RISC-V. Оборудование и Debian стабильны, и нет лучшего способа изучить платформу, чем разрабатывать для нее непосредственно**.
** Я работал над Windows много лет и самостоятельно использовал предрелизное оборудование/ПО для MIPS, DEC Alpha, PowerPC, AMD64, Itanium и ARM32.