Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 10 лет назад пользователемГаля Тобуркина
1 Чибисов Петр Александрович НИИСИ РАН Запуск ОС Linux как этап функционального тестирования микропроцессоров
2 2/30 Типы тестов микропроцессоров : – Тесты разработчика; – Программы аттестации архитектуры; – Псевдослучайные тесты; – Переборные тесты; – Загрузка одной или нескольких ОС; – Программы и приложения под ОС ; – Тесты производительности.
3 3/30 Тесты под ОС Linux: – Зачем их запускать? – Какие ОС и тесты запускать? – Типичные сценарии запуска тестов. – Что показывают тесты производительности? – Какие ошибки были найдены? – Что в планах на будущее?
4 4/30 Зачем запускать тесты под ОС? – большой архитектурный тест; – множество самопроверяющихся testcase'ов; – идеи для шаблонов псевдослучайных тестов; – огромное количество тестов системы под ОС (LTP, сборка RPM-пакетов, SPEC, X...); – изучение производительности процессора (анализ трасс + результаты тестов); – решение задач на native-платформе (gcc, gdb, тесты C+asm), программирование cp2; – измерение основных электрических параметров потребления ядер микропроцессоров; – академический интерес.
5 5/30 Схема тестовой установки
6 6/30 Какие ОС и тесты запускаются? ОС: ОСРВ 2000/3000, Linux Red Hat / Debian Тесты: - baget и baget- 2.6, компиляция ядер ОС Linux; - LTP, пакет тестов Linux Test Project, версии ; - memtester , тест памяти; - тесты производительности процессора CPU SPEC 2000, CPU SPEC 2006 ; - CP_NDEV, тест копирования файлов;
7 7/30 Тесты, запускаемые под ОС Linux - mpfr-3.0.0, mpc-0.8.2, mpfrcx-0.3.1, mpir-2.2.1, gappa , gmp-5.0.1, математические библиотеки точных вычислений, содержат встроенные тесты; - glucas-2.9.2, пакет вычислений простых чисел, хорошо нагружает FPU; - ruby-1.9.2, Python-2.5, perl-5.8.8, php-5.3.8, языки программирования, содержат встроенные тесты; - icarus verilog-0.9.3, моделирование VerilogHDL; - lame-3.97, flac-1.2.1, ffmpeg-0.5, кодеры/декодеры mp3/flac/видео; - kdegames , графические приложения – игры для KDE; - koffice-1.6.3, полный пакет офисных программ KDE;
8 8/30 Тесты, запускаемые под ОС Linux - mozilla-firefox , Интернет-браузер (gtk , cairo-1.2.6, pango , pkgconfig , neon , bison-2.4, atk-1.9.1, libIDL-0.8.8, libnotify-0.4.4, libsigc , libxml , m , numactl-2.0.3, dbus-0.60, sqlite , curl ); - wormux , графическая игра; - gcc–4.5.2 (C,C++,F77,F90,Java,…) selftests;
9 9/30 Тесты, запускаемые под ОС Linux - Lmbench, тест производительности системы; - paranoia (разные оптимизации); - X : KDE/Gnome; - тесты gcc (кросс-компиляция); - тесты производительности: dhrystone, whetstone, coremark, iobench, …; - тесты cp2 (dsplib); - HPL (MPI + ATLAS/GotoBLAS); - тесты posix под oc3000;
10 10/30 Типичные сценарии запуска тестов Вариант 1: for i in `find …`; do … ; done Вариант 2: tar zxf …. tgz./configure CC=gcc –march=7k … make make check
11 11/30 Тесты производительности – dhrystone; – whetstone; – coremark; – lmbench-3.0.9; – SPEC2000 (INT + FP); – SPEC2006 (INT + FP); – read / write speed в ОС3000; – Switch Context / Thread response time в ОС3000.
12 12/30 Сравнение производительности 1. Тест dhrystone под ОС3000: 1 – ВМ 5 Ф, 2 – ВМ6Я, 3 – разрабатываемый 65 нм
13 13/30 Сравнение производительности 2. Тест whetsone (fpu) под ОС3000: 1 – ВМ 5 Ф, 2 – ВМ6Я, 3 – разрабатываемый 65 нм
14 14/30 Сравнение производительности 3. Тест coremark под ОС Linux: 1 – ВМ5Ф, 2 – ВМ6Я
15 15/30 Сравнение производительности 4.1 Тесты lmbench под ОС Linux: 1 – ВМ5Ф, 2 – ВМ6Я [F core =260, F mem =130 MHz ] Processor, Processes - times in microseconds - smaller is better Host OS Mhz null null open slct sig sig fork exec sh call I/O stat clos TCP inst hndl proc proc proc VM5 Linux K 45K 1890VM6 Linux K Basic integer operations - times in nanoseconds - smaller is better Host intgr intgr intgr intgr intgr bit add mul div mod VM VM
16 16/30 Сравнение производительности 4.2 Тесты lmbench под ОС Linux: 1 – ВМ5Ф, 2 – ВМ6Я Basic float/double operations - times in nanoseconds - smaller is better Host float float float float double double double double add mul div bogo add mul div bogo VM VM
17 17/30 Сравнение производительности 4.3 Тесты lmbench под ОС Linux: 1 – ВМ5Ф, 2 – ВМ6Я Memory latencies in nanoseconds - smaller is better Host L1 $ L2 $ Main mem Rand mem VM VM File & VM system latencies in microseconds - smaller is better Host 0K File 10K File Mmap Prot Page 100fd Create Delete Create Delete Latency Fault Fault selct VM K VM K
18 18/30 Сравнение производительности CPU SPEC2000 INT (F core = 192 MHz, F mem = 96 MHz)
19 19/30 Сравнение производительности CPU SPEC2000 FP (F core = 192 MHz, F mem = 96 MHz)
20 20/30 Сравнение производительности CPU SPEC2000 INT: +28.4% CPU SPEC2000 FP: +36.6%
21 21/30 Локализация ошибок в микропроцессоре 1. Однократный сбой? 2. Программная ошибка? 3. Какая именно shell-команда вызывает сбой? (локализация testcase) 4. Как влияют F core / F mem, SS, BP, Sp, L2? 5. Как ведет себя testcase на ПЛИС и на vmips (golden model emulator)? 6. Есть ли ошибка в RTL-коде?
22 22/30 Примеры найденных ошибок 1. процессор 1890 ВМ 5 Ф, 18 марта 2011: make check для perl Зависание процессора в ситуации: 2624 PC=0x4cf0ec [38560ec] 8e lw $v0,0x0($s2) 2625 PC=0x4cf0f0 [38560f0] 8f lw $v1,0x8024($gp) 2626 PC=0x4cf0f4 [38560f4] c lwc1 f2,0x14($v0) Exception CpUnusable, cause=11 at PC=0х4cf0f4 triggered, instr=c Priority is 10; delay state is NORMAL;
23 23/30 Примеры найденных ошибок 2. процессор 1890 ВМ6Я, ноябрь 2010: компиляция теста ATLAS под ОС Linux. (компилятор иногда останавливается с сообщением о неизвестной ошибке - падает программа CC1 ). Ошибка в цикле: 72d62c: ac sw zero,20(v0) 72d630: 8c lw v0,4(v0) 72d634: nop [ INT] 72d638: 1440fffc bnez v0,72d62c 72d63c: nop в случае прихода прерывания в один из тактов выполнения инструкции перехода (bnez). При этом, переход ошибочно происходил, несмотря на v0==0. Ошибка исчезает при отключении суперскалярности. В новой версии 1890 ВМ6Я (сентябрь 2011) этой ошибки нет.
24 24/30 Примеры найденных ошибок 3. процессор 1890 ВМ6Я, 2 сентября 2011: запуск инсталлятора ОС Linux Debian Процессор не вызвал Reserved Instruction Exception по инструкции rdhwr 3,29 (opcode= 0x7c03e83b ), тогда как ядро ОС ждёт исключения. 1). Замена в исходниках ядра (balo) инструкции с опкодом 0х7c03e83b [rdhwr v1,$29] на инструкцию 0x7c03e833 (всегда вызывает RI - см. II-й pdf описание поля special3). 2). Замена 0х7c03e83b на 0x7c03e833 во всех библиотечных файлах файловой системы.
25 25/30 Примеры найденных ошибок 4. процессор 1890ВМ6Я, 16 сентября 2011: запуск поправленной версии инсталлятора ОС Linux Debian. Процессор неправильно отработал инструкцию eret в обработчике RI Exception, вызывав Coprocessor Unusable Exception. Пример кода: PC=0x [8480] df ld $v1,0x18($k1) PC=0x [8484] eret Ошибка только в случае, если ld вызывает dcache miss + dTLB hit. Ошибка исправляется добавлением двух ssnop между ld и eret. (Файл ядра arch/mips/kernel/genex.S)
26 26/30 Примеры найденных ошибок 5. процессор 1890 ВМ 5 Ф, ревизия 2 ( 2008 г.), тест SPEC eon: неверные данные у mfc1 в ситуации: madd.D $fp0,... lw … addiu … jr mfc1...,$fp1 в режиме 32 -х разрядной совместимости FPU.
27 27/30 Изучение кода ошибок – Трассы кода, набор инструкций; – Сегментация памяти; – Режимы работы (K,S,U; 32/64); – Исключительные ситуации; – Прерывания; – Кэш-память; – Сопроцессоры.
28 28/30 Выводы + огромное количество готовых тестов; + относительно простой запуск; + тестирование с большим уровнем асинхронных прерываний/событий; + большая уверенность в проекте, чем после прогона базы тестов; – избыточность тестов; – иногда трудно локализовать ошибку.
29 29/30 Планы по развитию методики - MPI и параллельные вычисления; - изучение QEMU, OVP - эмуляция многотредовых многоядерных процессоров; - тесты на F77, F90 ; - test profiling и test coverage; - Использование системы buildroot; - улучшение шаблонов для псевдослучайного тестирования.
30 30/30 Спасибо за внимание! Вопросы?
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.