Важная информация

User Tag List

Страница 15 из 32 ПерваяПервая ... 111213141516171819 ... ПоследняяПоследняя
Показано с 141 по 150 из 312

Тема: Вычисление числа Пи на ассемблере

  1. #141
    Master
    Регистрация
    16.12.2014
    Адрес
    г. Ожерелье
    Сообщений
    743
    Спасибо Благодарностей отдано 
    223
    Спасибо Благодарностей получено 
    40
    Поблагодарили
    39 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    Корвет опередит вектор в pi32, но 6128 все же быстрее корвета.
    Цитата Сообщение от ivagor Посмотреть сообщение
    При выполнении pi32 6128 быстрее корвета, корвет быстрее вектора. В чем противоречие?
    В этих двух ваших фразах. Или вы противопоставляете разные Векторы? Если так, то понятно.

    Цитата Сообщение от perestoronin Посмотреть сообщение
    Аппаратное умножение должно дать существенный выигрыш, странно, что разница почти не заметна
    Архитектура PDP-11 какая-то спартанская: мало памяти, ФС без сверхминималистская, но как-то душевно и качественно в мелочах, трогательно. В наших вычислениях главный тормоз - это деление, поэтому разгон умножения проявляется незначительно. Возможно, если ivagor возмется за оптимизацию деления на pdp-11, то это даст выигрыш больший, чем аппаратное умножение.

    Цитата Сообщение от perestoronin Посмотреть сообщение
    знаков без их вывода на экра
    Извините, но это уже какое-то выхолащевание. Какой-то компьютерный аутизм... Скорость вывода на экран - это тоже характеристика архитектуры. По данным ivagor даже в самом крайнем случае это менее 10% (0.3 на вывод при более трех на весь счёт и с трудом верится в компьютер, печатающий 1000 знаков за три секунды), и это при том, что он сам скорее работал с другой системой. Есть же категория 100 символов, 1000 символов. В первой вывод на экран чуть влияет, но только в крайне редких случаях, которые можно и отметить как недостатки системы.

    А теперь сюрприз, полученный благодаря уважаемому form: данные по PDP-11/83 (процессор на 18 мгц (?), 4 мб памяти, RT-11 v5.7).
    100 знаков - 0.3/0.2/0.5
    1000 знаков - 21.8/21/49
    2000 знаков - 85.9/84/199.2 (больше посчитать не получилось, система выдала только 21 кб свободной памяти, а про VRUN не знал).
    Первые числа - это время стандартного счета, вторые - время без вывода на экран, третьи с выводом, но без EIS.
    Аппаратное деление более, чем вдвое ускорило работу. Любопытно, что на ДВК-3 - втрое. Может это какой-то особенный ДВК, с улучшенным процессором?
    Привёл данные по выводу на экран только с целью показать их незначительное влияние на результат. Знаки пролетали пол-России прежде чем напечататься. Больше таких данных приводить не собираюсь. Гораздо больше погрешностей могут дать эмуляторы редких компьютеров, хороший эмулятор не один год пишут. А тут используют эмуляторы мелкосерийных компьютеров и даже может опытных образцов. БК сравнительно массовый компьютер, а эмулятора с точными таймингами и близко нет.
    Последний раз редактировалось litwr; 06.12.2015 в 00:18.

  2. #142
    Guru Аватар для Vslav
    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    755
    Поблагодарили
    353 сообщений
    Mentioned
    86 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Запустил модуль на 1801ВМ2, на 10МГц (внутренняя эффективная ядра 5МГц), пока только с аппаратным умножением (программа та же что для 1801ВМ1Г):
    1000 знаков - 83,7 сек
    100 знаков - 0.92 сек

    Кстати, если отнормировать первую цифру 83,7 на частоту 18/5, то получается 23.3 секунды, почти как у J11 в PDP-11/83 из предыдущего поста. А если добавить использование аппаратного деления, то J11 на эквивалентной частоте будет уверено обойден. Такие дела. Архитектурно ВМ2 конечно попроще J11, но и побыстрее удельно на такт, и это неудивительно - у него память микропрограмм внутри, а не в отдельной микросхеме как у J11.

    Update:
    - на 12.5МГц ВМ2 работать не захотел, хотя и стартанул. Так что пока продолжаем опыты на 10.0МГц
    - с аппаратным делением и умножением 1000 знаков - 52.9 секунды, нормируем на 18/5, получаем 14,7 секунды. Этот результат лучше чем у J11. В-общем, если 1801ВМ2 хорошо кормить из быстрой памяти, то он очень даже неплох.
    Последний раз редактировалось Vslav; 06.12.2015 в 01:50.

  3. #143
    Master
    Регистрация
    16.12.2014
    Адрес
    г. Ожерелье
    Сообщений
    743
    Спасибо Благодарностей отдано 
    223
    Спасибо Благодарностей получено 
    40
    Поблагодарили
    39 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    Реальный 1801ВМ1Г, на модуле + плата DE0, частота 5МГц, быстрая память без ожидания, терминал асинхронный, время измеряется 50Гц таймером
    А система какая?
    Цитата Сообщение от Vslav Посмотреть сообщение
    Запустил модуль на 1801ВМ2, на 10МГц (внутренняя эффективная ядра 5МГц)
    Странно, что выигрыш от деления так мал - менее двух раз - получается на ВМ2 медленное деление - оптимизированным программным можно обогнать. На ВМ2 отделять деление от умножения смысла нет. Лучше дать данные с EIS и без (как с microPDP-11/83). А возможно, что J11 медленнее из-за задержек памяти?

    Цитата Сообщение от perestoronin Посмотреть сообщение
    После беглого знакомства с содержимым книги "Алгоритмические трюки для программистов"
    Давно известно, что простого способа перевести знаковое деление в беззнаковое нет. Поэтому у Интел их два. И, конечно, энергичный оптимизатор всегда может пару процентов отжать.

    Цитата Сообщение от perestoronin Посмотреть сообщение
    Нас интересуют скорость вычисления числа Пи
    Должен быть результат. Если его нет, то это не программа, а восточная медитация пусть и с высочайшим непостижимым смыслом. Кого не устраивает скорость вывода пусть оптимизируют, отключают экран на время счета и т.п. Но π нужно показать - иначе будет история про то, не знаю что.
    Кроме того, точность эмуляторов редких компьютеров под большим вопросом. 10-40% тут разброса более чем вероятны. Также настораживает непроверяемость данных по 8085 - массовых компьютеров с таким процессором не было и соответственно результаты эмуляции тут очень условны. Кажется, что ответственные за результаты программисты в таких случаях должны хотя бы раз найти возможность сверить полученные данные с реальным железом.

    Цитата Сообщение от perestoronin Посмотреть сообщение
    Его требуется сменить
    А кто против? Только получается как про двух или даже трёх непойманных зайцев: поиск лучшего алгоритма, исследование быстродействия компьютерных архитектур, поиск лучшего оптимизатора. Но и с лучшим алгоритмом в два раза более быстрое деление даст в два раза лучший результат.

    Цитата Сообщение от sinchuk Посмотреть сообщение
    у меня есть несколько разных процов z80, в том числе ВМ1 , могу протестить на реале но надо файл для дисковода. Тар я не знаю как загрузить ((((
    Для z80 можно взять за основу код для Амстрада. Подставьте туда правильный вызов своей систем для печати знака и уберите (это самое простое) таймерные коды. Если сообщите адрес процедуры печать и ее параметр, а также адрес загрузки, то могу собрать бинарник, который можете поместить куда угодно. Для ВМ1 (БК) есть загрузочный диск, могу сделать bin-файл для загрузки с кассеты, но только для 0010 - для 0011 что-то не так системными вызовами. Даже подозреваю, что ПЗУ 11М по базовым вызовам неработоспособно.

  4. #144
    Guru Аватар для Vslav
    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    755
    Поблагодарили
    353 сообщений
    Mentioned
    86 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от litwr Посмотреть сообщение
    А система какая?
    Никакой, bare metall. Процессор на модуле, подключенный к отладочной FPGA-плате DE0.

    Цитата Сообщение от litwr Посмотреть сообщение
    Лучше дать данные с EIS и без (как с microPDP-11/83).
    Реальный 1801ВМ2, 10МГц внешней частоты, измерение времени через 50Гц таймер, вывод на терминал асинхронный, по прерываниям (то есть вывод знаков почти не влияет на время)

    EIS On (HMUL=1, HDIV=1):
    1000 знаков 52,92 сек
    100 знаков 0,58 сек

    EIS Off (HMUL=0, HDIV=0):
    1000 знаков 152,8 сек
    100 знаков 1,50 сек

    Цитата Сообщение от litwr Посмотреть сообщение
    А возможно, что J11 медленнее из-за задержек памяти?
    Может быть из-за памяти, можеть быть там частота не 18МГц, может быть и не "честных" 18МГц, а с растягиванием циклов как у F11. Смотреть на конкретную машину надо.

  5. #145
    Guru Аватар для Vslav
    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    755
    Поблагодарили
    353 сообщений
    Mentioned
    86 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Проанализировал обмен по шине и сделал отдельный вариант моста Winshbone-МПИ для 1801ВМ2 - убрал синхронизацию RPLY по срезу, которая была добавлена для 1801ВМ1, также сделал коротким строб AR. Циклы шины сократились на 2 такта 10МГц, общая скорость теста возросла примерно на 10-15 процентов:

    1801ВМ2 @ 10MHz

    EIS On (HMUL=1, HDIV=1):
    1000 знаков 47,42 сек (было 52,92)
    100 знаков 0,50 сек (было 0,58)

    EIS Off (HMUL=0, HDIV=0):
    1000 знаков 123,91 сек (было 152,8)
    100 знаков 1,20 сек (было 1.50)

  6. #146
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,842
    Спасибо Благодарностей отдано 
    654
    Спасибо Благодарностей получено 
    1,814
    Поблагодарили
    1,043 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    6128 бьет рекорды:
    Нажмите на изображение для увеличения. 

Название:	pi100_6128.gif 
Просмотров:	241 
Размер:	1.7 Кб 
ID:	55141Нажмите на изображение для увеличения. 

Название:	pi1000_6128.gif 
Просмотров:	256 
Размер:	7.9 Кб 
ID:	55142
    100 цифр - 2.94 сек
    1000 цифр - 297.90 сек - 4 мин 57.90 сек
    Вложения Вложения

  7. #147
    Guru Аватар для Vslav
    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    755
    Поблагодарили
    353 сообщений
    Mentioned
    86 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Запустил 1801ВМ3, на данный момент есть непонятки - с включенным таймером не работает устойчиво на 5МГц. Без таймера считает Пи верно и на 6.25МГц. Включаешь прерывания от таймера (тумблером) - зависает. Второй экземпляр процессора пока холодный - может пару раз Пи и с таймером посчитать, прогреется - виснет. На 4.5МГц оба процессора считают Пи с включенным таймером без зависаний. На диаграммах шины все красиво и большим запасом по времянке.

    В вообще - 1801ВМ3 медленнее 1801ВМ2 при той же частоте ядра (5МГц):
    EIS On, 1000 знаков - 52,5 секунды

    Похоже недостаточно высокого уровня на входе CLK (3.3V) - трогаешь щупом - зависает. Припаял резистор 2k2 на +5V стало заметно надежнее - можно потрогать уже, даже тест на 5МГц проходит один раз из трех.

  8. #148
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,842
    Спасибо Благодарностей отдано 
    654
    Спасибо Благодарностей получено 
    1,814
    Поблагодарили
    1,043 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Удалось в векторовской версии получить все и сразу
    1. Ускорил
    2. Избавился от использования sp в процедуре деления (и при этом она стала быстрее!). Теперь расчет пи полнофункционален (с подсчетом времени) и на голом векторе, без квазидиска
    Нажмите на изображение для увеличения. 

Название:	pi100.gif 
Просмотров:	256 
Размер:	1.7 Кб 
ID:	55160Нажмите на изображение для увеличения. 

Название:	pi1000.gif 
Просмотров:	282 
Размер:	7.9 Кб 
ID:	55161
    100 цифр - 3.48 сек
    1000 цифр - 351.14 сек - 5 мин 51.14 сек
    Посты с парой предыдущих версий удалил.
    Вложения Вложения

  9. #149
    Guru Аватар для Vslav
    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    755
    Поблагодарили
    353 сообщений
    Mentioned
    86 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Нормально заработал 1801ВМ3А на 7,14МГц
    EIS On, 1000 знаков - 41,52 сек

    Если удастся заставить процессор тратить 4 такта на выборку, то возможно результат улучшится.

    Update: удалось добиться 3 тактов на выборку, итоговый результат 1000 знаков на 7.14МГц - 37,52 секунды.
    Последний раз редактировалось Vslav; 11.12.2015 в 02:34.

  10. #150
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,842
    Спасибо Благодарностей отдано 
    654
    Спасибо Благодарностей получено 
    1,814
    Поблагодарили
    1,043 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Версия для вектора с древовидной организацией процедуры деления:
    Нажмите на изображение для увеличения. 

Название:	pi100.gif 
Просмотров:	263 
Размер:	1.7 Кб 
ID:	55187Нажмите на изображение для увеличения. 

Название:	pi1000.gif 
Просмотров:	253 
Размер:	10.5 Кб 
ID:	55188
    100 цифр - 3.36 сек
    1000 цифр - 340.00 сек - 5 мин 40.00 сек
    Решение несколько спорное, т.к. деление очень сильно разбухло, но зато удалось обогнать текущую версию 6502 не только при расчете 100 цифр, но и 1000.
    Вложения Вложения

Страница 15 из 32 ПерваяПервая ... 111213141516171819 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Арифметические процедуры на ассемблере
    от spensor в разделе Программирование
    Ответов: 27
    Последнее: 13.05.2017, 20:56
  2. Мнемокоманды и числа.
    от ALKO в разделе Программирование
    Ответов: 0
    Последнее: 15.02.2014, 03:49
  3. try-catch на ассемблере z80
    от siril в разделе Программирование
    Ответов: 22
    Последнее: 30.10.2012, 21:17
  4. Определение числа сторон
    от mungo в разделе Внешние накопители
    Ответов: 1
    Последнее: 16.03.2012, 18:06

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •