Обновить

Комментарии 5

идея кнш интересная. Но каждый раз реализовать на практике это та еще проблема

сколько времени будет выполняться какая-нибуть программа по типу цикла с подсчетом суммы чисел фибоначчи? в тактах)
вы говорите "между вывод букв еще входит порядка 1000 команд, что в целом неплохо " немного не ясно. это про производительность или объем памяти?

Это про производительность. Если вычислять числа на ассемблере динамическим программированием, то там 9 команд, это все гарантированно помещается в сектор. Если код крутится в одном секторе , то скорость не будет падать. Основной вопрос сколько времени тратится при переходе между секторами, потому, что частота работы карточки 3.5 МГц, сектор будет грузится 200мкс, а много это или мало - непонятно. Поэтому и предложен такой кейс -линейное выполнение программы: выводим первый символ на семисегментник, делаем паузу в 1000 NOP и потом читаем следующий сектор, выводим второй символ и так далее. Если принять за гипотезу что процессор в основном все равно простаивает поскольку периферия медленней, то такая система даже будет работать.

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

Круто! Если кэшировать по несколько секторов и читать с опережением, то скорость исполнения программы будет вполне приличной.

Я в прошлом году реализовал поддержку XiP для QSPI NOR Flash в своём проекте KarnixSoC. С кэшем кода обьемом 1КБ скорость исполнения достигает 90% от RAM. Далее подумал, что не плохо было бы реализовать аналогичную поддержку для SD-карт (через SPI), но от такой идеи отказался и написал простой драйвер на Си для чтения/записи блока, а поверх него сделал поддержку FAT32 и набор команд для загрузки бинарного файла в память. В общем, получился эдакий MS-DOS (или CP/M ?). И памяти у меня почти как в первых PC: 72K (RAM) + 20K (CGA) + 512K (SRAM). :-)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации