Как стать автором
Обновить
82.63
ГК ICL
Цифровые технологии для бизнеса

Вышла новая версия эмулятора Qemu процессора Эльбрус

Время на прочтение3 мин
Количество просмотров7.4K

Энтузиасты выпустили новую версию эмулятора Qemu процессорной архитектуры Эльбрус-2000 (e2k).

Основные нововведения версии qemu-e2k-v8.1.3:

  • Переход с 7-й версии QEMU на 8-ю версию.

  • Добавлено много проверок, которые до этого пропускались из-за чего код мог работать в эмуляторе, но падал бы на реальной машине.

  • Выполнен переход на Int128 для передачи параметров в «функции помощники». Существенно упростило сопровождение связанного кода.

  • Поддержка диагностических тегов в предикатных регистрах. Может случайно «ронять» программу если включить теги, т.к. не все варианты взаимодействия реализованы/известны. Будет улучшаться со временем по мере выявления таких мест.

  • Эмулятор начал «отравлять» результаты с включенными тегами.

  • Повышена скорость работы. Производительность выросла более чем на 40%. С включенными тегами на 10-15% быстрее.

  • e2k-linux-gdb пока работает нестабильно. Но планируется исправить в будущем.

  • rustc с тегами ещё не работает.

  • Системная эмуляция всё ещё не реализована.

Большая часть тестов с прошлой ветки проходит. Остальные тесты пока пропускаются:

Ok:                 91 
Expected Fail:      74 
Fail:               0 
Unexpected Pass:    0 
Skipped:            17 
Timeout:            0
Однопоточный тест производительности Coremark на предыдущей версии Qemu-e2k
qemu-e2k-old ./coremark_static_O3_ffast 
2K performance run parameters for coremark.
CoreMark Size    : 666
Total ticks      : 16789
Total time (secs): 16.789000
Iterations/Sec   : 178.688427
Iterations       : 3000
Compiler version : GCC9.3
Compiler flags   : O3
Memory location  : Please put data memory location here
                        (e.g. code in flash, data on heap etc)
seedcrc          : 0xe9f5
[0]crclist       : 0xe714
[0]crcmatrix     : 0x1fd7
[0]crcstate      : 0x8e3a
[0]crcfinal      : 0xcc42
Correct operation validated. See README.md for run and reporting rules.
CoreMark 1.0 : 178.688427 / GCC9.3 O3 / Heap

Однопоточный тест производительности Coremark на текущей версии Qemu-e2k
qemu-e2k-new ./coremark_static_O3_ffast 
2K performance run parameters for coremark.
CoreMark Size    : 666
Total ticks      : 15725
Total time (secs): 15.725000
Iterations/Sec   : 254.372019
Iterations       : 4000
Compiler version : GCC9.3
Compiler flags   : O3
Memory location  : Please put data memory location here
                        (e.g. code in flash, data on heap etc)
seedcrc          : 0xe9f5
[0]crclist       : 0xe714
[0]crcmatrix     : 0x1fd7
[0]crcstate      : 0x8e3a
[0]crcfinal      : 0x65c5
Correct operation validated. See README.md for run and reporting rules.
CoreMark 1.0 : 254.372019 / GCC9.3 O3 / Heap

Однопоточный тест производительности Coremark на реальной машине с процессором Эльбрус-8С 1200 МГц
./coremark_static_O3_ffast
2K performance run parameters for coremark.
CoreMark Size    : 666
Total ticks      : 17575
Total time (secs): 17.575000
Iterations/Sec   : 3413.940256
Iterations       : 60000
Compiler version : GCC9.3
Compiler flags   : O3
Memory location  : Please put data memory location here
      (e.g. code in flash, data on heap etc)
seedcrc          : 0xe9f5
[0]crclist       : 0xe714
[0]crcmatrix     : 0x1fd7
[0]crcstate      : 0x8e3a
[0]crcfinal      : 0xbd59
Correct operation validated. See README.md for run and reporting rules.
CoreMark 1.0 : 3413.940256 / GCC9.3 O3 / Heap

Инструкция по сборке Qemu-e2k
$ git clone --depth=1 -b e2k https://git.mentality.rip/OpenE2K/qemu-e2k.git
$ cd qemu-e2k
$ mkdir build
$ cd build
$ ../configure --target-list=e2k-linux-user --static --disable-capstone --disable-werror
$ nice ninja
$ sudo cp qemu-e2k /usr/local/bin

$ cat hello.c
#include <stdio.h>
int main(int argc, char *argv[]) {
        const char *name = argc > 1 ? argv[1] : "world";
        printf("Hello, %s!\n", name);
        return 0;
}
$ lcc -O2 hello.c -o hello-e2k
$ qemu-e2k hello-e2k $USER
Hello, denis!

# setup binfmt
$ cat /etc/binfmt.d/qemu-e2k.conf 
:qemu-e2k:M::\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xaf\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/local/bin/qemu-e2k:OC
:qemu-e2k-old:M::\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x31\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/local/bin/qemu-e2k:OC
:qemu-e2k32:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xaf\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/local/bin/qemu-e2k32:OC
:qemu-e2k32-old:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x31\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/local/bin/qemu-e2k32:OC
$ ./hello-e2k $USER
Hello, denis!

Подробнее в Телеграм-каналах OpenE2K и Процессоры Эльбрус | Фан-клуб.

Теги:
Хабы:
Всего голосов 27: ↑25 и ↓2+26
Комментарии37

Другие новости

Информация

Сайт
icl.ru
Дата регистрации
Дата основания
Численность
1 001–5 000 человек
Местоположение
Россия