ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
27 апреля
823056
Evgeny_CD, Архитектор (11.03.2018 17:22 - 23:12, просмотров: 1190)
Симулятор процессорного ядра по принципу статической компиляции. Интересная идея. Пусть у нас есть elf. Коорый мы распарсили, и знаем - вот код, вот здесь надо править константы для переходов, вот тут данные и проч. Пусь у нас есть "библиотека эмуляции ядра" - набор функций, которые реализуют все группы команд ядра. Для современных RISC ядер их не более 200, хотя самих вариантов команд очень много. Мы берем распарсенный код и elf, и делаем из него массив. Типа вот адрес, вот лежит команда по адресу, а вот указатель на функцию, а вот указатель на набор данных, с которыми надо функцию вызвать. Устраняется этап декодирования команд, также можно сделать много оптимизации для повышения скороси симуляции. На этом же этапе проводится компиляция модели аппаратуры, и она исполняется синхронно с "кодом ядра". Высвободившееся процессорное время тратим на симуляцию кешей, MMU, и периферии процессорного ядра. Можно получить cycle accurate симулятор досаточно сложной системы с эффективной частотой в сотни Мгц, чего достаточно для многих практических целей. Есть еще одна тонкость. Многопоточность современных ПК. AMD Ryzen Threadripper 1950X - примерно 63кр у нас. AMD Ryzen Threadripper 1920X - примерно 50кр у нас. 12 ядер 24 потока ASUS PRIME X399-A - мамка под него, одна з самых дешевых. 19кр. Получаем 16 ядер 32 потока https://3dnews.ru/956770 Можно Intel® Xeon® Processor D - подешевле, медленее. http://caxapa.ru/584927.html Думаю, найдется не так много практических дизайнов встраиваемх систем, в которых более 32 аппаратных блоков (UART можно симулировать в режиме разделения времени одного процессорного ядра симулятора - он в жизни работает сильно медленее любого современного ядра). Будет полный параллелизм моделирования. Хоть что-то загрузит всю кучу потоков :)