У нас есть приложение, копирующее массовые данные 80 МБ из одного места памяти в другое с использованием существующего memcpy и немодифицированного компилятора RISCV. Мы могли видеть, что количество циклов ~ 900, которое кажется неправильным. Если я изменю размер, подсчет останется тем же или меньше. Это, очевидно, неверно. Является ли проблема из-за использования компилятора RISCV? Мы использовали riscv64-unknown-эльф. Нужно ли нам riscv64-unknown-linux-gnu?Ошибка «memcpy»
0
A
ответ
1
я сделал подобный тест производительности и сравнили результат с процессором LEON3 SPARC-V8, таким образом, я получил следующие данные:
- Копирование 8 KB (Кило байт) блокировать
- LEON3: 11780 тактов.
- Ракета: 14630 тактов.
Я использовал модифицированную одноядерную конфигурацию Rocket с отключенным кэшем L2 и собственной реализацией арбитров NASTI для обеспечения 1 тактового доступа к устройствам AXI. Скорее всего, у вас будет худший результат с настройкой по умолчанию.
Мой SoC деле ввода: https://github.com/sergeykhbr/riscv_vhdl
Что ваш симулятор RISC-V? Как вы можете получить 900 циклов? Можете ли вы опубликовать исходный код тестового и ассемблерного кода? – osgx