Цитата Сообщение от ivagor Посмотреть сообщение
В таблице результатов Мандельброта litwr есть такое примечание "The number in parentheses after @ is the approximated effective CPU frequency". Использовано это у Apple IIgs, Sinclair QL, Amstrad PCW, Amstrad CPC, БК0011, БК0010, Commodore 128 c Z80, Commodore +4. А остальные компьютеры, у которых процессор тормозится? А у них ничего не написано, ни "не знаю" ни "требует уточнения", ничего.
В число остальных попал и вектор, хотя казалось бы, раз он с 3 МГц уступает корвету с 2.5, значит очевидно торможение есть. Благодаря Emu можно точно определить "эффективную частоту" для конкретных программ, а не среднюю по больнице, как в таблице (точность "эффективных частот" в таблице - отдельный вопрос). Заодно будет видно, какая программа лучше оптимизирована для вектора - чем меньше "эффективная частота", значит тем больше используются тормозные, "неудобные" для вектора команды.
Для m256 использовал встроенное определение времени расчета/рисования (T).
Для m256x256 засекал по брякам в отладчике эмулятора.
По второму рисунку (отличия от первого минимальные - в районе одной сотой, но по второму рисунку результат чуть лучше для litwr и чуть хуже для меня):
"Эффективная частота" m256 - 2.2826 МГц
"Эффективная частота" m256x256 - 2.3748 МГц
Если сравнить с ранее приводившимися результатами (1, 2), то вариант litwr почти на уровне не оптимизированных для вектора программ, мой получше, но даже до 2.4 не дотянул. Предполагаю, что дело или в побочных эффектах оптимизации по размеру или просто я плохо старался (или и то и другое).
Интересная тема эффективная частота. Для Коммодора+4, 64 и 128 (под 8502) - это весьма точная характеристика, не зависящая от используемого набора команд. Поэтому эффективные частоты для +4 и 128 (под 8502) в таблице точны, для +4 эта частота зависит только от выбранного видеорежима. Хотя для 128 (под 8502 и VDC) эффективная частота возможно должна быть чуть пониже из-за возможных циклов регенерации памяти, но скорее эти циклы вставляют в холостые циклы 8502. С этим можно ещё поразбираться. Для систем с Z80 ситуация сложнее, так как эффективная частота может зависeть от исполняемого набора команд. Однако для Амстрада и Коммодора 128 (под Z80) приведенные частоты практически подтверждаются почти всегда и общепризнанны. С MSX сложнее, какое-то время назад в таблице была частота 3.1 для этих систем, но большой статистики не собирал и само понятие ЭЧ для этих систем почему-то не используется. С БК похожая история, но есть некоторая статистика, которая подтверждает приведенные числа как некие ориентировочные средние. Для первых Макинтошей часто приводится эффективная частота, но возможности потестировать эту величину пока мне не представилось, поэтому из таблицы убрал. Аналогичная ситуация с IIgs, но особенности систем на базе семейства процессоров 6502 позволили мне эту частоту оставить. С Вектором практически не знаком, но если вы рекомендуете поставить 2.4, то поставлю.
В таблице эффективная частота величина близкая к иллюстративной. Никаких данных прямо направленных на установление этой характеристики там нет. Она используется для расчета ER процессора, но для 8080 данные, как лучшие, берутся с Корвета. Но и ER - это тоже побочная иллюстративная характеристика.
Мне кажется, мне стало примерно понятна ваша проблема. Вы ищите однозначности там, где её нет. Для некоторых систем практически невозможно сказать даже просто о частоте процессора однозначно, например, для MSX turboR или некоторых моделей PDP-11. В моём проекте просто собираются данные по скорости работе на одном фиксированном алгоритме. Если кто из ценителей Вектора найдет возможным сделать код быстрее, это будет отражено в результатах.
Что до скорости моего кода, то могу обратить ваше внимание на одно важное обстоятельство. Все коды в проекте используют абсолютно одинаковую математику, что, в частности, требует 60 лишних циклов в главном цикле для Вектора для сброса нулевого бита в индексе массива. Этого легко избежать, что сделало бы код процентов на 20% быстрее, но это слегка изменило бы математику, хотя визуальный результат остался бы практически неотличимым.
Идея измерять эффективную частоту по конкретной программе - это реально интересно. Но не факт, что код лучше использующий особенности тормозов будет быстрее того, что просто эффективнее реализует алгоритм. Поэтому ваши расчеты никак прямо скорость работы кода не отражают.