С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Кстати, а есть нормальный кроссассемблер под 8080? Интернет выдает какую то ерунду, а мне хочется нечто близкое к turbo assembler, или к masm.
А компиляторы Си существуют?
Такой вариант нормально работает! Завтра доделаю - добавлю пару миксов команд, они уже были в другой версии, а сюда забыл, + остальные режимы.
В предыдущем варианте такие странные цифры были потому, что запрос прерывания висел, когда его разрешал, то считалось сколько команд выполнится за оставшееся время до следующего прерывания, а не с начала.
---------- Post added at 23:34 ---------- Previous post was at 23:27 ----------
Сам я вот этим пользуюсь. Он слабенький, много чего не умеет, но как-то привык.
Вот здесь можно посмотреть.
Комплект дополненных (добавил одну команду и 3 комбинации команд) тестов, сделан на основе pst0new, поэтому все должно нормально работать. Как будут результаты с реала я выложу еще исходник и "расшифрованные" длительности команд в тактах.
Заранее могу сказать, что результаты в SCR0 и недокументированном (который полностью или частично совпадает со SCR0) режимах скорее всего будут с "нецелыми" тактами из за разного торможения при выводе разных частей экрана (в отличие от SCR1/2), т.е. это будет "среднее время выполнения команды в течении кадра". Чтобы точно определить по отдельности время выполнения команд в этих режимах на бордюре и в активной области нужен, например, таймер, синхронно работающий с процом, но его нет.
DemonId7 - не против, если я включу в финальный комплект результаты с реала, с указанием автора, конечно?
Прогонял по два раза, разбросов результатов нет. Сами результаты весьма интересны и наконец то выявилась закономерность:
В принципе могу подать на какой-нибудь вход импульсы известной частоты. Думаю схэмку генератора найти не сложно?
Дык вроде и тестируем на реале для выяснения тонкостей архитектуры. Не? А чего тогда спрашивать?
Выкладываю полный комплект с исходниками и результатами.
Нужен таймер, причем чтобы обеспечить нормальную точность нужно тактировать процессор и таймер из одного источника. Такой тест для вектора я делал (там частота таймера в 2 раза меньше чем у процессора, но это не принципиально), он успешно работал. Т.е. для ПК8000 я бы смог адаптировать тот тест. Таймер - это не единственный вариант, но, как мне кажется, самый точный. Возможно у кого-то есть альтернативные идеи, интересно было бы ознакомится.
А еще остается не полностью протестированным выполнение команд из ПЗУ и внешней памяти. Есть результаты по отдельным командам, полученные Mickом. Мне кажется, что этого достаточно, и я могу рассчитать полные результаты и по уже имеющимся, но я могу ошибиться + мне никто не поверит
Есть тонкость - некоторые предпочитают, чтобы их результаты оставались, например, на их сайтах и не утягивались в другие места.
А если так: цепляем на выход LPT какой-нибудь PIC на 20МГц. Выставляем в порту признак начала замера и выполняем некую команду, к примеру INX, 10000 раз. По окончании опять сигнализируем в порт и PIC подсчитывает сколько времени было затрачено на одну команду INX. Поскольку у пика частота на порядок выше и тактов на выполнение команд тратится меньше, а прогонов много, то точность будет очень даже приличной.
Идея хорошая, но детали реализации я вижу иначе. Если мы померяем время выполнения 10000 команд в SCR0/недокументированном, то это улучшит точность определения "средней температуры по больнице". Это неплохо, но мне кажется, что интереснее определить время выполнения команд в двух разных (повторюсь, речь про SCR0/UNDC, не про SCR1/SCR2, с ними и так все понятно) интервалах строки (тут я может забегаю вперед, но пока у меня рабочая версия именно с делением строки на две части в определенном отношении). Простые 1-2х цикловые команды у меня "сошлись", а длинные команды на пальцах считать сложновато, т.к. если мое предположение верно, то длина "короткой" части сравнима с длительностью сложных команд.
Многабакаф написал, но если коротко - IMHO теперь, при наличии результатов pst, важнее померять в нужные моменты времени (если смотреть изнутри - то относительно момента прихода прерывания), причем в пределе даже время исполнения одной (если длительной) команды, чем померять время исполнения большого количества команд.
господа, подскажите, везде написано что у ПК8000 частота 1.78 mhz
а по этим тестам получается ~49168 тактов в прерывании
что дает почти 2.5 мхз
где я обчитался ?
в эмуляторе B2M стоит 1800khz
у меня получилось для сравнения (вроде похоже)
для Вектора ~59824
для Корвета ~50092 (великовато, посмотрю, может где моя версияя теста кривая)
p.s. появилась идея сделать сводную тему имени теста Ivagora бысродействия
данные в табличку по вектору ПК8020 ПК8000 я свел, надо дооформить
и в ней же поставитт ссылки на сами тесты и их комментарии
Последний раз редактировалось esl; 16.02.2013 в 19:50.
Эту тему просматривают: 2 (пользователей: 0 , гостей: 2)