Вход

Просмотр полной версии : Сравнение быстродействия процессорных плат (почти в одинаковых условиях)



Hunta
31.07.2020, 22:22
По суммарному времени генерации всех шести мониторов RT-11 и генерации RSX на одном и том же файле ответов.

Пока больше заготовка, ибо создать одинаковые условия пока тяжеловато :)
Что будет входить в условия.

1. Дисковая подсистема на основе CF (в будущем добавится CF с ПДП)
2. Современная быстрая память 4 мб с нулевым временем ожидания

Программа тестирования Speed3 (http://www.kpxx.ru/Soft/Utils/Speed3)

Что есть на текущий мОмент (условия одинаковости НЕ соблюдены)

(SSHDD - slow speed HDD, HSHDD - high speed SCSI HDD, CF - он и в Африке CF :) )

Сводная таблица по генерации RT



SB FB XM XB ZM ZB SB-XB SB-ZB
МС 1201.01 01:34:47 01:38:57 01:49:46 01:45:01 01:51:42 01:46:28 06:48:31 10:26:41
МС 1201.02 00:48:57 00:51:00 00:56:34 00:54:01 00:57:23 00:54:42 03:30:32 05:22:37
LSI-11/2 01:27:05 01:31:46 01:42:12 01:36:51 01:44:19 01:38:14 06:17:54 09:40:27
1201.2018 (ВМ3 5 МГц) 00:38:36 00:40:16 00:44:38 00:42:44 00:45:21 00:43:16 02:46:14 04:14:47
1201.2018 (ВМ3 6.25 МГц) 00:31:30 00:32:50 00:36:25 00:34:52 00:37:00 00:35:19 02:15:37 03:27:56
KDF11-B (5.0688 МГц) 00:40:48 00:43:17 00:48:18 00:45:28 00:49:25 00:46:08 02:57:51 04:33:24
KDJ11-A (10 МГц/) 49 минут 03:26:21
KDJ11-B (20 МГц, QBus1) 00:21:08 00:22:48 00:25:51 00:23:41 00:26:35 00:23:59 01:33:28 02:24:02
KDJ11-B (20 МГц, PMI1) 00:18:09 00:19:42 00:22:22 00:20:26 00:23:05 00:20:41 01:20:39 02:04:25
KDJ11-B (20 МГц, QBus2) 00:18:49 00:20:06 00:22:28 00:21:01 00:22:51 00:21:13 01:22:24 02:06:28
KDJ11-B (20 МГц, PMI2) 00:16:02 00:17:11 00:19:20 00:17:55 00:19:43 00:18:05 01:10:28 01:48:16
KDJ11-B (20 МГц, QBus3) 00:18:44 00:19:58 00:22:22 00:20:55 00:22:47 00:21:07 01:21:59 02:05:53
KDJ11-B (20 МГц, PMI3) 00:15:58 00:17:08 00:19:15 00:17:52 00:19:42 00:18:04 01:10:13 01:47:59
KDJ11-B (20 МГц, QBus4) 00:15:37 00:16:20 00:18:09 00:17:19 00:18:26 00:17:32 01:07:25 01:43:23
KDJ11-B (20 МГц, PMI4) 00:12:37 00:13:11 00:14:38 00:13:58 00:14:57 00:14:12 00:54:24 01:23:33
KDJ11-D (18 МГц) 00:24:51 00:26:48 00:30:01 00:27:56 00:30:52 00:28:19 01:49:36 02:48:47
PDP-2011/34 (DE10) 00:02:25 00:02:31 00:02:56 00:02:37 00:02:50 00:02:36 00:10:29 00:15:55

(1) SSHDD-SSHDD - между разделами на одном шпинделе
(2) HSHDD-HSHDD - между разделами на одном шпинделе
(3) HSHDD-SSHDD - между шпинделями
(4) CF-CF - поскольку движущихся физических частей нет - думаю, без разницы - в пределах карты или между картами

RSX. Компиляция ядра



1201.2018 (ВМ3 5 МГц) - 01:22:57
KDJ11-A (J11 10 МГц, реальная - 2.5 МГц) - 01:04:22
KDJ11-A (J11 14.7456 МГц, реальная - 3,6864 МГц, HSHDD) - 00:47:40
KDJ11-D (J11 18 МГц, реальная - 4.5 МГц) - 00:34:39


Генерация RSX



1201.2018 (ВМ3 5 МГц) - 06:09:30
KDJ11-A (J11 10 МГц, реальная - 2.5 МГц) - 04:40:43
KDJ11-A (J11 14.7456 МГц, реальная - 3,6864 МГц) - 03:30:49


Результаты с моим вариантом программы SPEED

Все числа - операций/секунду



ВМ3 F-11 KDJ11-D KDJ11-B некэш KDJ11-B кэш
R1+R0 classic 1 615 261 530 362 2 142 538 733 903 1 328 610
R1(23456.)+R0(12345.) empty 248 303 165 295 542 690 1 211 967 1 222 165
R1(23456.)+R0(12345.) 216 039 -> 1 662 631 126 731 -> 543 200 434 532 -> 2 180 293 342 864 -> 478 124 981 749 -> 4 990 762
R1+@R0 classic 412 633 329 772 879 453 1 645 160 1 618 765
R1(23456.)+@R0(M-12345.) empty 248 303 165 325 542 690 1 212 001 1 222 163
R1(23456.)+@R0(M-12345.) 155 444 -> 415 653 110 318 -> 331 563 339 644 -> 907 781 307 493 -> 412 027 704 520 -> 1 663 382
R0*R0 classic 83 009 40 761 194 377 226 475 225 966
empty 11.*12. 248 302 165 355 542 690 1 212 032 1 222 186
11.*12. 62 280 -> 83 131 32 675 -> 40 721 142 924 -> 194 022 140 748 -> 159 239 191 312 -> 226 816
R2/R0 classic 331 000 140 739 743 447 991 430 981 742
R2-R3(34567.)/R1(321.) empty 216 038 126 474 434 532 343 497 981 744
R2-R3(34567.)/R1(321.) 41 936 -> 52 037 20 126 -> 23 934 99 057 -> 128 305 85 625 -> 114 056 126 997 -> 145 866
MOV 8 word 1 empty 165 984 110 384 362 777 193 127 797 526
MOV 8 word 1 13 679 -> 14 907 13 877 -> 15 872 32 810 -> 36 072 27 913 -> 32 628 39 615 -> 41 685
MOV 8 word 2 empty 165 984 110 386 362 324 192 985 796 537
MOV 8 word 2 17 018 -> 18 962 17 064 -> 20 184 43 168 -> 49 006 33 084 -> 39 929 46 925 -> 49 862


Микрокод:


34567.89022+32109.754321 empty 118 552 оп./сек
34567.89022+32109.754321 53 598 оп./сек -> 97 825 оп./сек
34567.89022*32109.754321 empty 118 552 оп./сек
34567.89022*32109.754321 23 720 оп./сек -> 29 653 оп./сек
34567.89022/32109.754321 empty 118 552 оп./сек
34567.89022/32109.754321 23 970 оп./сек -> 30 044 оп./сек

FPA


34567.89022+32109.754321 empty 165 076 оп./сек
34567.89022+32109.754321 116 460 оп./сек -> 395 440 оп./сек
34567.89022*32109.754321 empty 165 076 оп./сек
34567.89022*32109.754321 116 461 оп./сек -> 395 452 оп./сек
34567.89022/32109.754321 empty 165 076 оп./сек
34567.89022/32109.754321 109 219 оп./сек -> 322 778 оп./сек


Влияние PMI памяти на быстродействие



KDJ11-B некэш KDJ11-B PMI некэш KDJ11-B кэш KDJ11-B PMI кэш
R1+R0 classic 720 308 763 224 1 300 811 1 398 071
R1(23456.)+R0(12345.) empty 1 210 371 1 225 137 1 219 991 1 226 901
R1(23456.)+R0(12345.) 357 564 -> 507 483 586 505 -> 1 125 137 980 307 -> 4 989 760 984 789 -> 4 990 411
R1+@R0 classic 1 643 555 1 648 636 1 614 780 1 626 869
R1(23456.)+@R0(M-12345.) empty 1 210 370 1 225 140 1 219 995 1 226 901
R1(23456.)+@R0(M-12345.) 312 820 -> 421 846 473 716 -> 772 358 703 780 -> 1 663 276 706 108 -> 1 663 472
R0*R0 classic 226 442 226 559 225 888 226 143
empty 11.*12. 1 210 365 1 225 143 1 219 996 1 226 901
11.*12. 142 230 -> 161 168 168 628 -> 195 542 191 256 -> 226 812 191 442 -> 226 836
R2/R0 classic 990 834 992 723 980 297 984 789
R2-R3(34567.)/R1(321.) empty 357 564 586 508 980 298 984 789
R2-R3(34567.)/R1(321.) 85 916 -> 113 089 107 276 -> 131 289 126 960 -> 145 849 127 402 -> 146 333
34567.89022+32109.754321 empty 118 138 118 373 118 552 118 628
34567.89022+32109.754321 48 952 -> 83 587 51 665 -> 91 679 53 598 -> 97 825 53 615 -> 97 830
34567.89022*32109.754321 empty 118 138 118 373 118 552 118 628
34567.89022*32109.754321 22 780 -> 28 221 23 328 -> 29 053 23 720 -> 29 653 23 720 -> 29 648
34567.89022/32109.754321 empty 118 138 118 373 118 552 118 628
34567.89022/32109.754321 22 989 -> 28 543 23 569 -> 29 428 23 970 -> 30 044 23 970 -> 30 039
MOV 8 word 1 empty 202 250 375 747 796 153 811 467
MOV 8 word 1 27 259 -> 31 505 39 695 -> 44 383 37 694 -> 39 567 49 307 -> 52 496
MOV 8 word 2 empty 201 999 375 271 795 142 810 443
MOV 8 word 2 31 932 -> 37 927 49 542 -> 57 077 44 217 -> 46 820 61 257 -> 66 265


32-ух битная целочисленная арифметика на CPU, FPP и FPA

CPU-FPP


.run hx7:speed3

Тест быстродействия

............
R2-R3(34567.)/R1(321.) empty 586 507 оп./сек
R2-R3(34567.)/R1(321.) 107 273 оп./сек -> 131 285 оп./сек
34567./321. (FPU) empty 47 894 оп./сек
34567./321. (FPU) 18 427 оп./сек -> 29 950 оп./сек
..............


CPU-FPA


.run hx7:speed3

Тест быстродействия

........
R2-R3(34567.)/R1(321.) empty 586 505 оп./сек
R2-R3(34567.)/R1(321.) 107 273 оп./сек -> 131 285 оп./сек
34567./321. (FPU) empty 206 932 оп./сек
34567./321. (FPU) 105 182 оп./сек -> 213 911 оп./сек
........


Экзотика. J11 на 24 МГц



...
Type a command then press the RETURN key: MAP


23.996 MHz

Memory Map
...

Type a command then press the RETURN key: BOO DU0


Trying DU0

Starting system from DU0


RT-11SB V05.07

.R MSCPCK

.RUN HX7:SPEED4

Тест быстродействия

....
R1(23456.)+R0(12345.) 1 181 261 оп./сек -> 5 989 094 оп./сек
....

Hunta
01.08.2020, 22:49
Добавил время генерации для KDJ11-D (основное отличие - нет кэш-памяти и, в зависимости от варианта, 15 или 18 МГц и 0.5 или 1.5 мб ОЗУ на борту, при желании можно добить до 4 Мб внешними модулями)

ra3qdp
02.08.2020, 12:11
Добавил время генерации для KDJ11-D
что-то от кэш "толку нету".
Почему ?

Hunta
02.08.2020, 12:46
Почему ?
8 кб - вот прям щас от них такой толк будет

Вот этот результат


Немного поменял SPEED, так что он полностью умещался в кэш (8 кб) и….



.RUN HX7:SPEED2

ТЕСТ БЫСТРОДЕЙСТВИЯ

КОМАНДА СЛОЖЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 2431

КОМАНДА СЛОЖЕНИЯ РЕГИСТР-ПАМЯТЬ
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 817

КОМАНДА УМНОЖЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 113

КОМАНДА ДЕЛЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 492
.



против вот этого





.RUN HX:SPEED

ТЕСТ БЫСТРОДЕЙСТВИЯ

КОМАНДА СЛОЖЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 704

КОМАНДА СЛОЖЕНИЯ РЕГИСТР-ПАМЯТЬ
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 504

КОМАНДА УМНОЖЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 136

КОМАНДА ДЕЛЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 392
.



ничего не подсказал?

- - - Добавлено - - -

Готовлюсь прогнать генерацию RT на .2018 (ВМ3)
Не совсем, конечно, корректное сравнение будет (CF - это не HDD, пусть HDD и с ПДП, но вроде по суммарной пропускной способности на линейном чтении более менее одинаково, так что примерно где то - можно сравнить)

ra3qdp
02.08.2020, 13:02
так почему - нет толку при генерации ? Может кэш в этом случае отключен ?

Hunta
02.08.2020, 13:07
так почему - нет току при генерации ?
Авас - доцент (далее по тексту)
У нас MACRO занимает в памяти меньше 8 кб? Причём в эти 8 кб входит ВСЁ - и трансляция и чтение/запись с/на диск (без участи RT!)??

ra3qdp
02.08.2020, 13:22
По Вашему получается, что практически зря DEC делал кэш в 11/73, 83, т.к. "толк" от него есть ТОЛЬКО в "оптимизированных" программах, которые помещаются в его крошечный размер.

Hunta
02.08.2020, 13:31
толк" от него есть ТОЛЬКО в "оптимизированных" программах, которые помещаются в его крошечный размер.
Почитайте про работу кэша - многое станет понятным.
Так же как и способ оптимизации и каких операций, что бы попасть в кэш.

А вообще решение проблемы кэша на классических J-11 (не плат на его основе) - очевиден.

ra3qdp
02.08.2020, 13:39
"очевиден" он будет, если научиться его включать-выключать по ходу работы, а, может, и как-то достоверно отслеживать работает он в кокретный момент или нет.

Hunta
02.08.2020, 13:42
"очевиден" он будет, если научиться его включать-выключать по ходу работы, а, может, и как-то достоверно отслеживать работает он в кокретный момент или нет.
Если кратко - чушь

ra3qdp
02.08.2020, 13:53
а на мой взгляд - чушь, это обвинять DEC, что они сделали кэш от которого при практической работе нет прироста производительности, что их макро не умеет делать оптимальные задачи под этот размер, советовать им, что бы он перед тем как делать кэш - почитали как он устроен и что вообще они его сделали "для понтов" и что могли бы его хотя бы удвоить что бы он заработал (а ведь мог ли бы сделать - даже тогда это было не сложно).

Hunta
02.08.2020, 13:59
а на мой взгляд
Да ради бога. От вашего взгляда ровно ничего не поменяется

SuperMax
02.08.2020, 14:01
По Вашему получается, что практически зря DEC делал кэш в 11/73, 83, т.к. "толк" от него есть ТОЛЬКО в "оптимизированных" программах, которые помещаются в его крошечный размер.
речь о том, что 8кб кеша оказывают несущественное влияние на производительность, к примеру у меня на 11/73 64КБ кеша и тут прирост производительности очевиден

ra3qdp
02.08.2020, 14:10
11/73 64КБ кеша

интересно...

А у 11/70 - какой размер ?

Hunta
02.08.2020, 14:21
у меня на 11/73 64КБ кеша
Вопрос - а откуда информация, что KDJ11-B 64 кб кэша

- - - Добавлено - - -

На плате я вижу только HM6168, которые могу играть роль кэша, 8 штук и вроде они 4096x4, то есть получается - 16 кб

- - - Добавлено - - -

И из доки - Like the KDJ11-A, the -B also contains an 8K-byte write-through cache (set size 1, block size 1 16-bit word), protected by parity.

SuperMax
02.08.2020, 14:28
Вопрос - а откуда информация, что KDJ11-B 64 кб кэша

смотрим внимательно
https://forum.maxiol.com/index.php?s=&showtopic=5274&view=findpost&p=54320

ps: и я не говорил про KDJ11-B M8190

Hunta
02.08.2020, 14:34
смотрим внимательно
А, всё понятно, это не KDJ11-B. Да, этот момент как то упустил. Ещё удивился, почему у меня 800, а у тебя 3600 с копейками. Собственно - это и сподвигло на эксперимент с SPEED, который чётко показал - причина в тормозной памяти. Тогда нужно точно дорабатывать модуль память для М8 - где то есть тормоза.

Ещё вопрос. Камень стоит -08, он вроде как 15МГц-овый, но на плате кварца что то я не увидел. Тактовая частота известна?

SuperMax
02.08.2020, 14:40
А, всё понятно, это не KDJ11-B. Да, этот момент как то упустил. Ещё удивился, почему у меня 800, а у тебя 3600 с копейками. Собственно - это и сподвигло на эксперимент с SPEED, который чётко показал - причина в тормозной памяти. Тогда нужно точно дорабатывать модуль память для М8 - где то есть тормоза.

Ещё вопрос. Камень стоит -08, он вроде как 15МГц-овый, но на плате кварца что то я не увидел. Тактовая частота известна?
там 15, но потом доберусь и воткну 20 - посмотрим на разницу. если конечно сожрет ж-)

ps: надо заказать ремплаты под qbus, но надо найти где подешевле их сделать - жаба душит делать их по технолгии 6/6mil
вот тогда поизвращаюсь с платой. кварц там под процом прячется - чуть торчит

ra3qdp
02.08.2020, 14:42
и я не говорил про KDJ11-B M8190
эта плата - не DEC.
Почему Вы решили, что на ней есть кэш ?

Hunta
02.08.2020, 14:49
там 15, но потом доберусь и воткну 20 - посмотрим на разницу. если конечно сожрет ж-)
Судя по моим экспериментам (у меня есть -08) - скорее всего не взлетит - он у меня и 16 МГц не переварил.
Честно, я удивился, что и -07 (ну про него хоть писали - 20 МГц) и плата (в принципе рассчитанная на 15 (KDJ11-B)) - стабильно работают с кварцем на 20 МГц :)

- - - Добавлено - - -

Почитав в очередной раз доку на проц, есть мнение, что если проц ВСЕГДА будет получать ПОПАЛИ В КЭШ (на современной памяти и с правильно спроектированной платой (типа KDJ11-E) - это вполне реально), то производительность в SPEED на регистр-регистр будет близка к ТАКТОВАЯ КВАРЦА/4

То есть с кварцем на 15 должен быть результат, близкий в 4500

У меня с KDJ11-B используется старый модуль памяти, так что понятно, откуда только 800

SuperMax
02.08.2020, 14:49
эта плата - не DEC.
Почему Вы решили, что на ней есть кэш ?
я указал ссылку, смотрите внимательно.

Hunta
02.08.2020, 16:21
Посмотрел - да, на ней 64 кб кэша

- - - Добавлено - - -


Почему Вы решили, что на ней есть кэш ?
Потому что гладиолус

- - - Добавлено - - -

1201.2018 c ВМ3 на 5 МГц-ах



ТЕСТ БЫСТРОДЕЙСТВИЯ

КОМАНДА СЛОЖЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 1664

КОМАНДА СЛОЖЕНИЯ РЕГИСТР-ПАМЯТЬ
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 416

КОМАНДА УМНОЖЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 80

КОМАНДА ДЕЛЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 336


Плата SuperMax-а - J-11 15 МГц (почти наверняка), где стоит 64(!) кб кэша



ТЕСТ БЫСТРОДЕЙСТВИЯ

КОМАНДА СЛОЖЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 3648

КОМАНДА СЛОЖЕНИЯ РЕГИСТР-ПАМЯТЬ
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 1224

КОМАНДА УМНОЖЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 168

КОМАНДА ДЕЛЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 736


Против моей 20-ти МГц с попадаловом в её 8-ми кб кэш



ТЕСТ БЫСТРОДЕЙСТВИЯ

КОМАНДА СЛОЖЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 2431

КОМАНДА СЛОЖЕНИЯ РЕГИСТР-ПАМЯТЬ
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 817

КОМАНДА УМНОЖЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 113

КОМАНДА ДЕЛЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 492


А, да, для полноты сравнения - KD11-B, 20 МГц - без попадалова в кэш



ТЕСТ БЫСТРОДЕЙСТВИЯ

КОМАНДА СЛОЖЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 816

КОМАНДА СЛОЖЕНИЯ РЕГИСТР-ПАМЯТЬ
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 616

КОМАНДА УМНОЖЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 184

КОМАНДА ДЕЛЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 496


Вот что крест животворящий... э.... быстрая память творит :)

- - - Добавлено - - -

Уф... драйвера надо вовремя обновлять. А то уже думал - прошивку в мультиконтроллере запорол - я на нём ПДП отлаживал. Хорошо, что для сохранения во флэш-память надо явно команду давать - в отличии от CPLD, где сразу во флэш пишется...

Короче - тестовый прогон генерации на .2018 запустил. По мере прогресса буду обновлять первое сообщение

- - - Добавлено - - -

Добавил для полны картинки KDJ11-B без попадания в кэш.

В будущем, всё такие не совсем равноусловные сравнения перенесу во ВТОРОЕ сообщение в теме :)

- - - Добавлено - - -

Первый результат на ВМ3 - F11 ожидаемо отстал, J11 на равной тактовой микроциклов (тактовая от кварца, делённая на 4) ожидаемо впереди.

Думаю, если J11 поставить память, которую он НЕ БУДЕТ ЖДАТЬ (то есть запрос на чтение - 4 микроцикла, а не 8 или больше) - его опережение на КОМПЛЕКСНОМ тесте - будет ещё больше

Потихоньку клепаю микроплату таймера - тогда можно будет уточнить тесты на F11 и KDJ11-B, благо с таймером мне не нужно будет следить за процессом :)

ra3qdp
02.08.2020, 18:09
Почитав в очередной раз доку на проц, есть мнение, что если проц ВСЕГДА будет получать ПОПАЛИ В КЭШ

можно осцилом посмотреть что на 28й ножке J11(сигнал MISS) во время генерации систем.

Когда Вы оптимизировали код SPEED почему хуже чем у SuperMax-а ?

Hunta
02.08.2020, 18:16
можно осцилом посмотреть что на 28й ножке J11(сигнал MISS) во время генерации систем.
Мне и так всё очевидно.


Когда Вы оптимизировали код SPEED почему хуже чем у SuperMax-а ?

смотрим внимательно
https://forum.maxiol.com/index.php?s...ndpost&p=54320

ra3qdp
02.08.2020, 19:04
что-то у меня эта ссылка получается не прямая - открывается главная страница.

Hunta
02.08.2020, 19:37
что-то у меня эта ссылка получается не прямая - открывается главная страница.
"Смотрим внимательней"

- - - Добавлено - - -

Закончился тест на ВМ3, результаты добавлены на первую страницу

ra3qdp
02.08.2020, 19:43
и внимательно - не получается. Может как-то по-другому объясните ? ("на словах") почему оптимизированный SPEED хуже чем у SuperMax-а ?

Hunta
02.08.2020, 20:06
Платы процессора разные - раз
Платы памяти разные - два

ra3qdp
02.08.2020, 20:21
ВМ3, результаты добавлены
интересно бы и F11 когда-нибудь добавить.

Кстати - нашел картинку МС1601.01 (от МС1211) и выяснил какую именно микросхему на него не ставили (что было только 18 разрядов).



Потихоньку клепаю микроплату таймера

не знаю - в моем комплекте (процессор от PDP-11/53 и немецкий блок питания от ихней PDP) есть таймер или нет, и если придется делать вспомнил про кварцевый генератор (с виду обычный как на мегагерцы), который выдает 50Гц - применялся в таймере видика ВМ-12. Подал на него 5 Вольт - и вот тебе 20mS импульсы ТТЛ.

SuperMax
02.08.2020, 20:21
Платы процессора разные - раз
Платы памяти разные - два
память кстати я пробовал разную - те все что у меня там на фото (кроме PMI конечно)
на результаты speed-теста это никак не повлияло.
правильно конечно отключить кеш и потом тестировать, но тогда у меня не было инструкции по перемычкам.

Hunta
02.08.2020, 20:27
интересно бы и F11 когда-нибудь добавить.
Я фигею, дорогая редакция...

Время сборки SB монитора
...
KDF11-B (F11 5.0688 ?? МГц) - 50 минут
...

ra3qdp, не надо больше меня ни о чем спрашивать

ra3qdp
02.08.2020, 20:51
не понимаю - за что Вы на меня так

Hunta
02.08.2020, 21:25
не понимаю - за что Вы на меня так
За то, что считаете, что интересное Вам за Вас должные искать другие, и в большинстве случаев - всё на виду.


интересно бы и F11 когда-нибудь добавить.
Инфа по F11 была С САМОГО НАЧАЛА, пусть и не полная. Ваша фраза говорит только о том, что даже посмотреть не удосужились. Не то что - внимательно посмотреть.


8 кб - вот прям щас от них такой толк будет


а на мой взгляд - чушь, это обвинять DEC, что они сделали кэш от которого при практической работе нет прироста производительности, что их макро не умеет делать оптимальные задачи под этот размер, советовать им, что бы он перед тем как делать кэш - почитали как он устроен и что вообще они его сделали "для понтов" и что могли бы его хотя бы удвоить что бы он заработал (а ведь мог ли бы сделать - даже тогда это было не сложно).


речь о том, что 8кб кеша оказывают несущественное влияние на производительность, к примеру у меня на 11/73 64КБ кеша и тут прирост производительности очевиден

Что могли бы или не могли бы сделать в DEC - не Вам в 2020 году говорить про середину 80-ых.

Так что свою чушь несите в другом месте.

Hunta
03.08.2020, 21:24
Сделал BEVNT для корзина, так что теперь можно поточнее всякие времена определить. И первый сУрприз преподнесла KDJ11-D

Итак - более полная таблица SPEED

1201.2018 c ВМ3 на 5 МГц-ах



ТЕСТ БЫСТРОДЕЙСТВИЯ

КОМАНДА СЛОЖЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 1664

КОМАНДА СЛОЖЕНИЯ РЕГИСТР-ПАМЯТЬ
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 416

КОМАНДА УМНОЖЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 80

КОМАНДА ДЕЛЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 336


KDJ11-D, 18 МГц, кэша нет



.RUN HX7:SPEED

ТЕСТ БЫСТРОДЕЙСТВИЯ

КОМАНДА СЛОЖЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 2176

КОМАНДА СЛОЖЕНИЯ РЕГИСТР-ПАМЯТЬ
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 880

КОМАНДА УМНОЖЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 192

КОМАНДА ДЕЛЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 744


KD11-B, 20 МГц - без попадалова в кэш



ТЕСТ БЫСТРОДЕЙСТВИЯ

КОМАНДА СЛОЖЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 816

КОМАНДА СЛОЖЕНИЯ РЕГИСТР-ПАМЯТЬ
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 616

КОМАНДА УМНОЖЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 184

КОМАНДА ДЕЛЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 496


KDJ11-B, 20-ти МГц с попадаловом в её 8-ми кб кэш



ТЕСТ БЫСТРОДЕЙСТВИЯ

КОМАНДА СЛОЖЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 2431

КОМАНДА СЛОЖЕНИЯ РЕГИСТР-ПАМЯТЬ
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 817

КОМАНДА УМНОЖЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 113

КОМАНДА ДЕЛЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 492


Плата SuperMax-а - J-11 15 МГц (почти наверняка), где стоит 64(!) кб кэша



ТЕСТ БЫСТРОДЕЙСТВИЯ

КОМАНДА СЛОЖЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 3648

КОМАНДА СЛОЖЕНИЯ РЕГИСТР-ПАМЯТЬ
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 1224

КОМАНДА УМНОЖЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 168

КОМАНДА ДЕЛЕНИЯ РЕГИСТР-РЕГИСТР
БЫСТРОДЕЙСТВИЕ (ТЫС.ОП./СЕК) 736


Вот что крест животворящий... э.... быстрая память творит :)

Пояснения, почему KDJ11-D (18 МГц) без кэша уделывает KDJ11-B (20 МГц) без попадания в кэш.
Всё тривиально - KDJ11-D использует наплатную (зуб даю - более быструю) память, а KDJ11-B - плату памяти в корзине - более старую (зуб даю - более медленную)

Так что, как видно из результатов, слухи о тормознутости KDJ11-D - сильно преувеличены - зависит от того, когда плата делалась.
И получается, что плат D есть как минимум 4 варианта

- 15 МГц, 512 мб
- 18 МГц, 512 Мб
- 15 МГц, 1536 мб
- 18 МГц, 1536 Мб

Мне попался 2 вариант

- - - Добавлено - - -

Тем не менее, если посмотреть на результаты генерации RT, можно увидеть, что KDJ11-B с чуть более быстрым процессором (20 против 18) всё таки опережает, пусть и не сильно - KDJ11-D. Так что кэш определённую роль всё таки (что так же заметно на спец версии программы SPEED, когда её тестовый блок всё таки помещается полностью в кэш).

- - - Добавлено - - -

Кстати, у меня есть некоторые сомнения по поводу моей KDJ11-B. Похоже, я там всё таки неправильно посчитал скорострельность. Надо подумать....

- - - Добавлено - - -

Начал обновлять результаты по KDJ11-D, теперь таймер работает и можно будет время точнее указать

Hunta
04.08.2020, 00:29
С KDJ11-D - закончил.

Запустил KDF11-B.

- - - Добавлено - - -

А, да - таймер работает :) 1801ВП1-065 - сила :)

Hunta
04.08.2020, 08:49
KDF11-B обновил
Запустил KDJ11-B

Hunta
04.08.2020, 10:55
KDJ11-B обновил.

По KDJ11-A позже, сейчас памяти для неё нету :)

falanger
04.08.2020, 13:42
не понимаю - за что Вы на меня так

Он просто такой человек(с), не переживайте, не в вас дело.

Hunta
04.08.2020, 13:51
Он просто такой человек(с), не переживайте, не в вас дело.
Аха. Не в нём. И не в тебе.

Hunta
04.08.2020, 19:31
Начал добавлять время генерации RT на быстром SCSI диске. Пока только SB успел собраться, но уже заметно, что - эффект есть, но не сильно большой - всё таки генерация RT - это нагрузка на процессор, а не на дисковую систему :)

Hunta
06.08.2020, 13:08
Добавил в первое сообщение время компиляции ядра RSX-11M-Plus 4.6

Hunta
11.08.2020, 10:00
Добавил в первое сообщение инфу по LSI-11/2 и пропущенную инфу (ZM, ZB, время генерации 6-ти мониторов) на KDJ11-B (20 МГц и HSHDD) - не помню, почему пропустил :)

- - - Добавлено - - -

А так же попробовал сделать сводную таблицу :)

Hunta
11.08.2020, 22:59
Поскольку комментариев не поступило и поскольку она занимает меньше места - оставил только сводную таблицу в первом сообщении

Hunta
22.08.2020, 13:02
В первое сообщение добавил таблицу сравнения быстродействий - ВМ3 (5 МГц, 1201.2018, нулевое время задержки памяти), F-11 (KDF11-B, старая память) и J-11 (18 МГц, KDJ11-B, память на плате).

Из интересного. Если J-11 работает без кэша, цикл чтения с шины, цикл записи на шину - минимум 8 клоков. 18 000 000/8 = 2 250 000 оп/с. Показанная производительность на операция регистр-регистр - 2 142 538 - то есть весьма близко (минус 4.77 процента) к теоретическому пределу. Нуу... память быстрая - не тормозит проц :)

Hunta
22.08.2020, 18:27
Во первых - в первом сообщении ошибочно указал, что плата KDJ11-B. На самом деле тестировалась KDJ11-D
Во вторых - добавил результаты по действительно KDJ11-B.

Если посмотреть на результаты, то можно заметить, как сильно сказывается старая память - результат регистр-регистр с попаданием в кэш в 10 с копейками раз быстрее результата без (особого) попадания в кэш.

Ну и наконец мы увидели, что действительно, J11 в идеальных условиях (при чтении в кэш попали) выдаёт скорость - частота клока, делённая на 4. Тактовая частота на KDJ11-B - 20 МГц (редакция микросхемы процессора - -07) - и результат только на 0.18 процента хуже идеального - 5-ти миллионов операций в секунду :)

И результаты генерации RT-11 (думаю - процентов на 70-80 - нагрузка на проц) только подтверждают - проц J11 - очень хороший проц :)
Но вот если бы удалось разогнать ВМ3 до 20 МГц - возможно он бы выдал (на регистр-регистр) результат и получше - 6 666 667 операций в секунду. Но учитывая, какое получается число, наши, похоже, решили не рисковать :D

SuperMax
23.08.2020, 21:13
Но вот если бы удалось разогнать ВМ3 до 20 МГц - возможно он бы выдал (на регистр-регистр) результат и получше
на самом деле было бы интересно попробовать его разогнать прицепив на элемент пельтье ( конечно это только при наличии быстрой оперативки)
ну и по всей видимости надо было бы иметь возможность регулировать напряжение питания

Hunta
24.08.2020, 10:35
В первое сообщение добавил скорострельность генерации RT-11 на ВМ3, работающем на 6.25 МГц

- - - Добавлено - - -

Добавил забытое суммарное время :)

Hunta
08.09.2020, 13:16
Другой вариант программы SPEED - для KDJ11-D (ака PDP-11/53) и KDJ11-B (ака PDP-11/83)
KDJ11-D


.RUN HX7:SPEED
File name: P1153.TXT
You computer/processor? PDP-11/53
; Computer speed measure program [V5]
; written by Osipenko A., MPTI
EMPTY LOOP 4.90 mks, 203.9 op/ms 6 mem, 0.82 mks/mem
SEC 0.96 mks, 1042.5 op/ms 1 mem, 0.96 mks/mem
NOP 0.96 mks, 1042.5 op/ms 1 mem, 0.96 mks/mem
MOV R0,R0 0.59 mks, 1688.1 op/ms 1 mem, 0.59 mks/mem
MOV #0,R1 0.96 mks, 1042.5 op/ms 2 mem, 0.48 mks/mem
MOV (R0)+,R1 1.15 mks, 871.7 op/ms 2 mem, 0.57 mks/mem
TST (R0)+ 1.15 mks, 871.7 op/ms 2 mem, 0.57 mks/mem
MOV -(R0),R1 1.47 mks, 682.3 op/ms 2 mem, 0.73 mks/mem
TST -(R0) 1.47 mks, 682.3 op/ms 2 mem, 0.73 mks/mem
MOV R5,-(SP) 1.31 mks, 763.2 op/ms 2 mem, 0.66 mks/mem
MOV @R0,R1 1.20 mks, 830.9 op/ms 2 mem, 0.60 mks/mem
MOV 0(R0),R1 1.86 mks, 537.3 op/ms 3 mem, 0.62 mks/mem
MOV @0(R0),R1 2.46 mks, 406.9 op/ms 4 mem, 0.61 mks/mem
MOV @0(R0),@0(R0) 4.52 mks, 221.3 op/ms 7 mem, 0.65 mks/mem
MOV (R0)+,-(R0) 2.08 mks, 481.7 op/ms 3 mem, 0.69 mks/mem
MOV @(R0)+,@-(R0) 3.47 mks, 288.0 op/ms 5 mem, 0.69 mks/mem
MOV 0,R1 1.86 mks, 537.3 op/ms 3 mem, 0.62 mks/mem
MOV @#0,R1 1.61 mks, 620.8 op/ms 3 mem, 0.54 mks/mem
MOV #0,#0 2.77 mks, 360.5 op/ms 3 mem, 0.92 mks/mem
MOVB R0,R0 0.59 mks, 1688.1 op/ms 1 mem, 0.59 mks/mem
MOVB @R0,R1 1.20 mks, 830.9 op/ms 2 mem, 0.60 mks/mem
MOVB 0(R0),R1 1.86 mks, 537.3 op/ms 3 mem, 0.62 mks/mem
MOVB (R0)+,-(R0) 2.08 mks, 481.7 op/ms 3 mem, 0.69 mks/mem
MOVB @(R0)+,@-(R0) 3.47 mks, 288.0 op/ms 5 mem, 0.69 mks/mem
DEC R0 0.59 mks, 1688.1 op/ms 1 mem, 0.59 mks/mem
DEC @R0 1.61 mks, 620.8 op/ms 2 mem, 0.81 mks/mem
DEC @0(R0) 3.05 mks, 328.3 op/ms 4 mem, 0.76 mks/mem
ADD R0,R0 0.59 mks, 1688.1 op/ms 1 mem, 0.59 mks/mem
ADD #2,R0 0.96 mks, 1042.6 op/ms 2 mem, 0.48 mks/mem
SUB R0,R0 0.59 mks, 1688.1 op/ms 1 mem, 0.59 mks/mem
CLR R0 0.59 mks, 1688.1 op/ms 1 mem, 0.59 mks/mem
CLR @R0 1.20 mks, 831.0 op/ms 2 mem, 0.60 mks/mem
CLR 0(R0) 1.86 mks, 537.3 op/ms 3 mem, 0.62 mks/mem
CLR @0(R0) 2.46 mks, 406.9 op/ms 4 mem, 0.61 mks/mem
TST R0 0.59 mks, 1688.1 op/ms 1 mem, 0.59 mks/mem
COM R0 0.59 mks, 1688.1 op/ms 1 mem, 0.59 mks/mem
NEG R0 0.59 mks, 1688.1 op/ms 1 mem, 0.59 mks/mem
BIS R0,R0 0.59 mks, 1688.1 op/ms 1 mem, 0.59 mks/mem
BIT R0,R0 0.59 mks, 1688.1 op/ms 1 mem, 0.59 mks/mem
XOR R0,R0 0.59 mks, 1688.1 op/ms 1 mem, 0.59 mks/mem
ROL R0 0.59 mks, 1688.1 op/ms 1 mem, 0.59 mks/mem
ROR R0 0.59 mks, 1688.1 op/ms 1 mem, 0.59 mks/mem
ASL R0 0.59 mks, 1688.1 op/ms 1 mem, 0.59 mks/mem
ASR R0 0.59 mks, 1688.1 op/ms 1 mem, 0.59 mks/mem
TRAP 0 ;+ RTI 9.06 mks, 110.4 op/ms 8 mem, 1.13 mks/mem
IOT ;+ RTI 9.06 mks, 110.4 op/ms 8 mem, 1.13 mks/mem
CALL @#$RET ;+RTS 4.58 mks, 218.3 op/ms 5 mem, 0.92 mks/mem
RTS PC 1.93 mks, 518.4 op/ms 2 mem, 0.96 mks/mem
CALL @#$RET 2.65 mks, 377.1 op/ms 2 mem, 1.33 mks/mem
BCC X ; C=1 0.65 mks, 1534.7 op/ms 1 mem, 0.65 mks/mem
BCC X ; C=0 1.47 mks, 682.3 op/ms 1 mem, 1.47 mks/mem
SOB R0,. 0.98 mks, 1023.4 op/ms 1 mem, 0.98 mks/mem
MTPS #0 2.45 mks, 408.7 op/ms 2 mem, 1.22 mks/mem
JMP @R5 1.38 mks, 725.6 op/ms 1 mem, 1.38 mks/mem
JMP 0(R5) 2.08 mks, 481.7 op/ms 2 mem, 1.04 mks/mem
JMP 10$ 1.86 mks, 537.3 op/ms 2 mem, 0.93 mks/mem
JMP 11$ 1.86 mks, 537.3 op/ms 2 mem, 0.93 mks/mem
MUL R2,R0 5.17 mks, 193.3 op/ms 1 mem, 5.17 mks/mem
DIV R2,R0 8.29 mks, 120.6 op/ms 1 mem, 8.29 mks/mem
ASH R2,R0 ; R2=7 2.77 mks, 360.5 op/ms 1 mem, 2.77 mks/mem
ASHC R2,R0 ; R2=7 3.24 mks, 308.7 op/ms 1 mem, 3.24 mks/mem
FSUB R0 ****** - unsupported instruction
FADD R0 ****** - unsupported instruction
FMUL R0 ****** - unsupported instruction
FDIV R0 ****** - unsupported instruction

.RUN HX7:SPEED3

Тест быстродействия

R1+R0 classic 2 142 539 оп./сек
R1(23456.)+R0(12345.) empty 542 691 оп./сек
R1(23456.)+R0(12345.) 434 532 оп./сек -> 2 180 277 оп./сек
R1+@R0 classic 879 453 оп./сек
R1(23456.)+@R0(M-12345.) empty 542 691 оп./сек
R1(23456.)+@R0(M-12345.) 339 644 оп./сек -> 907 778 оп./сек
R0*R0 classic 194 376 оп./сек
empty 11.*12. 542 691 оп./сек
11.*12. 142 924 оп./сек -> 194 021 оп./сек
R2/R0 classic 743 447 оп./сек
R2-R3(34567.)/R1(321.) empty 434 532 оп./сек
R2-R3(34567.)/R1(321.) 99 057 оп./сек -> 128 305 оп./сек
34567.89022+32109.754321 empty 82 100 оп./сек
34567.89022+32109.754321 42 064 оп./сек -> 86 258 оп./сек
34567.89022*32109.754321 empty 82 100 оп./сек
34567.89022*32109.754321 20 025 оп./сек -> 26 484 оп./сек
34567.89022/32109.754321 empty 82 099 оп./сек
34567.89022/32109.754321 20 274 оп./сек -> 26 922 оп./сек
CIS MULPI 1 - команда не реализована
CIS MULP 1 empty - команда не реализована
CIS MULP 1 - команда не реализована
CIS MULPI 2 - команда не реализована
CIS MULP 2 empty - команда не реализована
CIS MULP 2 - команда не реализована
CIS ADDNI 1 - команда не реализована
CIS ADDN 1 empty - команда не реализована
CIS ADDN 1 - команда не реализована
CIS ADDNI 2 - команда не реализована
CIS ADDN 2 empty - команда не реализована
CIS ADDN 2 - команда не реализована
MOV 8 word 1 empty 362 777 оп./сек
MOV 8 word 1 34 049 оп./сек -> 37 575 оп./сек
MOV 8 word 2 empty 362 324 оп./сек
MOV 8 word 2 43 168 оп./сек -> 49 006 оп./сек
CIS MOVCI 8 word 1 - команда не реализована
CIS MOVC 8 word 2 empty - команда не реализована
CIS MOVC 8 word 2 - команда не реализована
.

KDJ11-B


.RUN HX7:SPEED
File name: P1183.TXT
You computer/processor? PDP-11/83
; Computer speed measure program [V5]
; written by Osipenko A., MPTI
EMPTY LOOP 3.00 mks, 333.1 op/ms 6 mem, 0.50 mks/mem
SEC 0.60 mks, 1665.3 op/ms 1 mem, 0.60 mks/mem
NOP 0.60 mks, 1665.2 op/ms 1 mem, 0.60 mks/mem
MOV R0,R0 0.20 mks, 4995.2 op/ms 1 mem, 0.20 mks/mem
MOV #0,R1 0.40 mks, 2497.8 op/ms 2 mem, 0.20 mks/mem
MOV (R0)+,R1 0.60 mks, 1665.3 op/ms 2 mem, 0.30 mks/mem
TST (R0)+ 0.60 mks, 1665.3 op/ms 2 mem, 0.30 mks/mem
MOV -(R0),R1 0.80 mks, 1249.0 op/ms 2 mem, 0.40 mks/mem
TST -(R0) 0.80 mks, 1249.0 op/ms 2 mem, 0.40 mks/mem
MOV R5,-(SP) 1.84 mks, 544.7 op/ms 2 mem, 0.92 mks/mem
MOV @R0,R1 0.60 mks, 1665.2 op/ms 2 mem, 0.30 mks/mem
MOV 0(R0),R1 1.00 mks, 999.2 op/ms 3 mem, 0.33 mks/mem
MOV @0(R0),R1 1.40 mks, 713.7 op/ms 4 mem, 0.35 mks/mem
MOV @0(R0),@0(R0) 3.65 mks, 274.3 op/ms 7 mem, 0.52 mks/mem
MOV (R0)+,-(R0) 2.22 mks, 450.0 op/ms 3 mem, 0.74 mks/mem
MOV @(R0)+,@-(R0) 3.01 mks, 332.5 op/ms 5 mem, 0.60 mks/mem
MOV 0,R1 1.00 mks, 999.2 op/ms 3 mem, 0.33 mks/mem
MOV @#0,R1 0.80 mks, 1249.0 op/ms 3 mem, 0.27 mks/mem
MOV #0,#0 2.61 mks, 383.5 op/ms 3 mem, 0.87 mks/mem
MOVB R0,R0 0.20 mks, 4995.2 op/ms 1 mem, 0.20 mks/mem
MOVB @R0,R1 0.60 mks, 1665.2 op/ms 2 mem, 0.30 mks/mem
MOVB 0(R0),R1 1.00 mks, 999.1 op/ms 3 mem, 0.33 mks/mem
MOVB (R0)+,-(R0) 2.22 mks, 450.3 op/ms 3 mem, 0.74 mks/mem
MOVB @(R0)+,@-(R0) 3.01 mks, 332.5 op/ms 5 mem, 0.60 mks/mem
DEC R0 0.20 mks, 4995.1 op/ms 1 mem, 0.20 mks/mem
DEC @R0 1.98 mks, 504.2 op/ms 2 mem, 0.99 mks/mem
DEC @0(R0) 2.61 mks, 383.4 op/ms 4 mem, 0.65 mks/mem
ADD R0,R0 0.20 mks, 4995.2 op/ms 1 mem, 0.20 mks/mem
ADD #2,R0 0.40 mks, 2497.8 op/ms 2 mem, 0.20 mks/mem
SUB R0,R0 0.20 mks, 4994.9 op/ms 1 mem, 0.20 mks/mem
CLR R0 0.20 mks, 4995.0 op/ms 1 mem, 0.20 mks/mem
CLR @R0 1.60 mks, 624.0 op/ms 2 mem, 0.80 mks/mem
CLR 0(R0) 2.00 mks, 499.0 op/ms 3 mem, 0.67 mks/mem
CLR @0(R0) 2.44 mks, 410.1 op/ms 4 mem, 0.61 mks/mem
TST R0 0.20 mks, 4995.2 op/ms 1 mem, 0.20 mks/mem
COM R0 0.20 mks, 4995.1 op/ms 1 mem, 0.20 mks/mem
NEG R0 0.20 mks, 4995.1 op/ms 1 mem, 0.20 mks/mem
BIS R0,R0 0.20 mks, 4995.1 op/ms 1 mem, 0.20 mks/mem
BIT R0,R0 0.20 mks, 4995.2 op/ms 1 mem, 0.20 mks/mem
XOR R0,R0 0.20 mks, 4995.1 op/ms 1 mem, 0.20 mks/mem
ROL R0 0.20 mks, 4995.1 op/ms 1 mem, 0.20 mks/mem
ROR R0 0.20 mks, 4995.1 op/ms 1 mem, 0.20 mks/mem
ASL R0 0.20 mks, 4995.1 op/ms 1 mem, 0.20 mks/mem
ASR R0 0.20 mks, 4994.9 op/ms 1 mem, 0.20 mks/mem
TRAP 0 ;+ RTI 8.02 mks, 124.6 op/ms 8 mem, 1.00 mks/mem
IOT ;+ RTI 8.02 mks, 124.6 op/ms 8 mem, 1.00 mks/mem
CALL @#$RET ;+RTS 3.65 mks, 274.1 op/ms 5 mem, 0.73 mks/mem
RTS PC 0.98 mks, 1018.8 op/ms 2 mem, 0.49 mks/mem
CALL @#$RET 2.67 mks, 374.9 op/ms 2 mem, 1.33 mks/mem
BCC X ; C=1 0.40 mks, 2497.9 op/ms 1 mem, 0.40 mks/mem
BCC X ; C=0 0.80 mks, 1249.0 op/ms 1 mem, 0.80 mks/mem
SOB R0,. 0.60 mks, 1665.3 op/ms 1 mem, 0.60 mks/mem
MTPS #0 1.80 mks, 555.1 op/ms 2 mem, 0.90 mks/mem
JMP @R5 0.80 mks, 1249.0 op/ms 1 mem, 0.80 mks/mem
JMP 0(R5) 1.20 mks, 832.6 op/ms 2 mem, 0.60 mks/mem
JMP 10$ 1.00 mks, 999.2 op/ms 2 mem, 0.50 mks/mem
JMP 11$ 1.00 mks, 999.2 op/ms 2 mem, 0.50 mks/mem
MUL R2,R0 4.40 mks, 227.1 op/ms 1 mem, 4.40 mks/mem
DIV R2,R0 7.21 mks, 138.8 op/ms 1 mem, 7.21 mks/mem
ASH R2,R0 ; R2=7 2.20 mks, 454.2 op/ms 1 mem, 2.20 mks/mem
ASHC R2,R0 ; R2=7 2.60 mks, 384.3 op/ms 1 mem, 2.60 mks/mem
FSUB R0 ****** - unsupported instruction
FADD R0 ****** - unsupported instruction
FMUL R0 ****** - unsupported instruction
FDIV R0 ****** - unsupported instruction

.RUN HX7:SPEED3

Тест быстродействия

R1+R0 classic 734 082 оп./сек
R1(23456.)+R0(12345.) empty 1 212 050 оп./сек
R1(23456.)+R0(12345.) 345 483 оп./сек -> 483 220 оп./сек
R1+@R0 classic 1 645 133 оп./сек
R1(23456.)+@R0(M-12345.) empty 1 212 009 оп./сек
R1(23456.)+@R0(M-12345.) 307 680 оп./сек -> 412 362 оп./сек
R0*R0 classic 226 475 оп./сек
empty 11.*12. 1 211 987 оп./сек
11.*12. 140 678 оп./сек -> 159 151 оп./сек
R2/R0 classic 991 411 оп./сек
R2-R3(34567.)/R1(321.) empty 345 194 оп./сек
R2-R3(34567.)/R1(321.) 85 679 оп./сек -> 113 965 оп./сек
34567.89022+32109.754321 empty 118 152 оп./сек
34567.89022+32109.754321 48 723 оп./сек -> 82 915 оп./сек
34567.89022*32109.754321 empty 118 152 оп./сек
34567.89022*32109.754321 22 739 оп./сек -> 28 158 оп./сек
34567.89022/32109.754321 empty 118 152 оп./сек
34567.89022/32109.754321 22 938 оп./сек -> 28 463 оп./сек
CIS MULPI 1 - команда не реализована
CIS MULP 1 empty - команда не реализована
CIS MULP 1 - команда не реализована
CIS MULPI 2 - команда не реализована
CIS MULP 2 empty - команда не реализована
CIS MULP 2 - команда не реализована
CIS ADDNI 1 - команда не реализована
CIS ADDN 1 empty - команда не реализована
CIS ADDN 1 - команда не реализована
CIS ADDNI 2 - команда не реализована
CIS ADDN 2 empty - команда не реализована
CIS ADDN 2 - команда не реализована
MOV 8 word 1 empty 193 966 оп./сек
MOV 8 word 1 30 224 оп./сек -> 35 802 оп./сек
MOV 8 word 2 empty 193 731 оп./сек
MOV 8 word 2 33 068 оп./сек -> 39 874 оп./сек
CIS MOVCI 8 word 1 - команда не реализована
CIS MOVC 8 word 2 empty - команда не реализована
CIS MOVC 8 word 2 - команда не реализована
.

Manwe
09.09.2020, 16:34
Для сравнения Союз-Неон (https://zx-pk.ru/threads/25778-otechestvennye-kompyutery-bystrodejstvie.html?p=1080230&viewfull=1#post1080230). Позже добавлю текстовую таблицу. Если кому-то интересно в данной теме.

Hunta
09.09.2020, 17:16
Если кому-то интересно в данной теме.
В эту - не стоит. В этой теме - процессора и процессорные платы, а не полностью собранные компы - в планах - создать для процов одинаковые условия (память и CF карта) и повторить тестирование.

Hunta
09.09.2020, 22:17
Пошла экзотика :)

МС1201.01


.SPEED3

Тест быстродействия

R1+R0 classic 323 171 оп./сек
R1(23456.)+R0(12345.) empty 75 394 оп./сек
R1(23456.)+R0(12345.) 61 434 оп./сек -> 331 787 оп./сек
R1+@R0 classic 150 378 оп./сек
R1(23456.)+@R0(M-12345.) empty 75 391 оп./сек
R1(23456.)+@R0(M-12345.) 50 304 оп./сек -> 151 172 оп./сек
MOV 8 word 1 empty 50 367 оп./сек
MOV 8 word 1 6 610 оп./сек -> 7 608 оп./сек
MOV 8 word 2 empty 50 303 оп./сек
MOV 8 word 2 7 684 оп./сек -> 9 069 оп./сек
.


Вторая МС1201.01


.SPEED3

Тест быстродействия

R1+R0 classic 331 481 оп./сек
R1(23456.)+R0(12345.) empty 76 886 оп./сек
R1(23456.)+R0(12345.) 63 021 оп./сек -> 349 472 оп./сек
R1+@R0 classic 152 719 оп./сек
R1(23456.)+@R0(M-12345.) empty 76 882 оп./сек
R1(23456.)+@R0(M-12345.) 51 275 оп./сек -> 153 947 оп./сек
MOV 8 word 1 empty 51 363 оп./сек
MOV 8 word 1 6 801 оп./сек -> 7 838 оп./сек
MOV 8 word 2 empty 51 290 оп./сек
MOV 8 word 2 7 969 оп./сек -> 9 434 оп./сек
.


Третья МС1201.01


.SPEED3

Тест быстродействия

R1+R0 classic 312 047 оп./сек
R1(23456.)+R0(12345.) empty 72 928 оп./сек
R1(23456.)+R0(12345.) 59 789 оп./сек -> 331 858 оп./сек
R1+@R0 classic 145 367 оп./сек
R1(23456.)+@R0(M-12345.) empty 72 922 оп./сек
R1(23456.)+@R0(M-12345.) 48 659 оп./сек -> 146 243 оп./сек
MOV 8 word 1 empty 48 725 оп./сек
MOV 8 word 1 6 409 оп./сек -> 7 379 оп./сек
MOV 8 word 2 empty 48 664 оп./сек
MOV 8 word 2 7 458 оп./сек -> 8 807 оп./сек
.


МС1201.02


.SPEED3

Тест быстродействия

R1+R0 classic 733 405 оп./сек
R1(23456.)+R0(12345.) empty 155 387 оп./сек
R1(23456.)+R0(12345.) 128 639 оп./сек -> 747 301 оп./сек
R1+@R0 classic 308 336 оп./сек
R1(23456.)+@R0(M-12345.) empty 155 493 оп./сек
R1(23456.)+@R0(M-12345.) 103 892 оп./сек -> 313 065 оп./сек
R0*R0 classic 78 282 оп./сек
empty 11.*12. 155 211 оп./сек
11.*12. 52 137 оп./сек -> 78 508 оп./сек
R2/R0 classic 58 738 оп./сек
R2-R3(34567.)/R1(321.) empty 128 447 оп./сек
R2-R3(34567.)/R1(321.) 40 980 оп./сек -> 60 179 оп./сек
MOV 8 word 1 empty 103 937 оп./сек
MOV 8 word 1 13 106 оп./сек -> 14 997 оп./сек
MOV 8 word 2 empty 103 769 оп./сек
MOV 8 word 2 15 681 оп./сек -> 18 472 оп./сек
.


Вторая МС1201.02


.SPEED3

Тест быстродействия

R1+R0 classic 704 528 оп./сек
R1(23456.)+R0(12345.) empty 148 999 оп./сек
R1(23456.)+R0(12345.) 123 317 оп./сек -> 715 446 оп./сек
R1+@R0 classic 296 526 оп./сек
R1(23456.)+@R0(M-12345.) empty 149 114 оп./сек
R1(23456.)+@R0(M-12345.) 99 525 оп./сек -> 299 271 оп./сек
R0*R0 classic 75 170 оп./сек
empty 11.*12. 149 079 оп./сек
11.*12. 49 982 оп./сек -> 75 191 оп./сек
R2/R0 classic 56 393 оп./сек
R2-R3(34567.)/R1(321.) empty 123 495 оп./сек
R2-R3(34567.)/R1(321.) 39 332 оп./сек -> 57 713 оп./сек
MOV 8 word 1 empty 99 706 оп./сек
MOV 8 word 1 12 562 оп./сек -> 14 372 оп./сек
MOV 8 word 2 empty 99 594 оп./сек
MOV 8 word 2 15 017 оп./сек -> 17 683 оп./сек
.


Третья МС1201.02



.SPEED3

Тест быстродействия

R1+R0 classic 665 829 оп./сек
R1(23456.)+R0(12345.) empty 141 334 оп./сек
R1(23456.)+R0(12345.) 116 845 оп./сек -> 674 350 оп./сек
R1+@R0 classic 282 881 оп./сек
R1(23456.)+@R0(M-12345.) empty 141 321 оп./сек
R1(23456.)+@R0(M-12345.) 94 417 оп./сек -> 284 476 оп./сек
R0*R0 classic 71 694 оп./сек
empty 11.*12. 141 266 оп./сек
11.*12. 47 640 оп./сек -> 71 880 оп./сек
R2/R0 classic 53 786 оп./сек
R2-R3(34567.)/R1(321.) empty 116 845 оп./сек
R2-R3(34567.)/R1(321.) 37 436 оп./сек -> 55 084 оп./сек
MOV 8 word 1 empty 94 496 оп./сек
MOV 8 word 1 11 918 оп./сек -> 13 638 оп./сек
MOV 8 word 2 empty 94 401 оп./сек
MOV 8 word 2 14 248 оп./сек -> 16 780 оп./сек
.


Четвертая МС1201.02


.SPEED3

Тест быстродействия

R1+R0 classic 636 532 оп./сек
R1(23456.)+R0(12345.) empty 134 564 оп./сек
R1(23456.)+R0(12345.) 111 320 оп./сек -> 644 452 оп./сек
R1+@R0 classic 267 736 оп./сек
R1(23456.)+@R0(M-12345.) empty 134 891 оп./сек
R1(23456.)+@R0(M-12345.) 89 875 оп./сек -> 269 311 оп./сек
R0*R0 classic 67 619 оп./сек
empty 11.*12. 134 742 оп./сек
11.*12. 45 056 оп./сек -> 67 691 оп./сек
R2/R0 classic 50 797 оп./сек
R2-R3(34567.)/R1(321.) empty 111 414 оп./сек
R2-R3(34567.)/R1(321.) 35 466 оп./сек -> 52 027 оп./сек
MOV 8 word 1 empty 90 139 оп./сек
MOV 8 word 1 11 349 оп./сек -> 12 983 оп./сек
MOV 8 word 2 empty 90 010 оп./сек
MOV 8 word 2 13 575 оп./сек -> 15 985 оп./сек
.


Пятая МС1201.02


.SPEED3

Тест быстродействия

R1+R0 classic 561 469 оп./сек
R1(23456.)+R0(12345.) empty 119 511 оп./сек
R1(23456.)+R0(12345.) 98 753 оп./сек -> 568 555 оп./сек
R1+@R0 classic 238 191 оп./сек
R1(23456.)+@R0(M-12345.) empty 119 483 оп./сек
R1(23456.)+@R0(M-12345.) 79 757 оп./сек -> 239 883 оп./сек
R0*R0 classic 60 509 оп./сек
empty 11.*12. 119 439 оп./сек
11.*12. 40 211 оп./сек -> 60 619 оп./сек
R2/R0 classic 45 358 оп./сек
R2-R3(34567.)/R1(321.) empty 98 700 оп./сек
R2-R3(34567.)/R1(321.) 31 595 оп./сек -> 46 470 оп./сек
MOV 8 word 1 empty 79 804 оп./сек
MOV 8 word 1 10 075 оп./сек -> 11 530 оп./сек
MOV 8 word 2 empty 79 700 оп./сек
MOV 8 word 2 12 031 оп./сек -> 14 170 оп./сек
.


Шестая МС1201.02


.RUN SPEED3

Тест быстродействия

R1+R0 classic 706 672 оп./сек
R1(23456.)+R0(12345.) empty 149 961 оп./сек
R1(23456.)+R0(12345.) 124 034 оп./сек -> 717 408 оп./сек
R1+@R0 classic 298 757 оп./сек
R1(23456.)+@R0(M-12345.) empty 149 939 оп./сек
R1(23456.)+@R0(M-12345.) 100 025 оп./сек -> 300 469 оп./сек
R0*R0 classic 75 691 оп./сек
empty 11.*12. 149 949 оп./сек
11.*12. 50 370 оп./сек -> 75 848 оп./сек
R2/R0 classic 56 789 оп./сек
R2-R3(34567.)/R1(321.) empty 124 034 оп./сек
R2-R3(34567.)/R1(321.) 39 606 оп./сек -> 58 185 оп./сек
MOV 8 word 1 empty 100 180 оп./сек
MOV 8 word 1 12 633 оп./сек -> 14 455 оп./сек
MOV 8 word 2 empty 100 060 оп./сек
MOV 8 word 2 15 098 оп./сек -> 17 780 оп./сек
.

Hunta
10.09.2020, 18:35
А вот третья 1201.02 показала особое поведение - крайне нестабильные результаты на сложении регистр-регистр.
И провалила тест клавиатуры.

Посмотрю ещё раз на первые две...

- - - Добавлено - - -

Хм.. Какие то крайне не стабильные результаты и на первой.. Надо осциллографом глянуть всякие клоки на генераторе 50-ти Гц

- - - Добавлено - - -

А тест клавиатуры одинаково у всех не проходит...

- - - Добавлено - - -

Вопчем - достаточно стабильные результаты по MOV 8 и пляска по остальным. Уже даже интересно на .01...

- - - Добавлено - - -

Та же пляска результатов и даже хуже, чем у 02.. Ок, тогда пока все результаты можно считать недействительными.. Проверю работу клоков, тогда можно будет предположить - кто виноват и что делать

Hunta
13.09.2020, 17:35
Вот напрочь вылетело, что на всех 1201.0х таймер на плате с процом.. и кнопка Таймер просто давит его...
Всё, теперь понятно, чего у меня плясала производительность :) Перемеряю и поправлю в посте выше :)

Hunta
13.09.2020, 20:03
Ну вот, теперь всё нормально :)
Запустил на последней .01 SYSGEN
Надеюсь - к утру закончится - и можно будет время в таблицу занести :)

Hunta
13.09.2020, 22:17
Первый результат
Время сборки SB монитора на 1801ВМ1 - 1:34:47
Время сборки SB монитора на LSI-11/2 - 1:27:05

- - - Добавлено - - -

То есть к утру закончится точно :)

Hunta
14.09.2020, 12:54
Добавлены данные по RT SYSGEN для 1201.01

- - - Добавлено - - -

Новые, правильные :) результаты по .02. Быстродействие примерно в два раза больше.

- - - Добавлено - - -

Насколько я понимаю - разброс результатов между платами - следствие генератора не на кварце, поэтому включать результаты в таблицу на первой странице смысла как бы нет. Как и, кстати - по LSI-11/2 :) Но с учётом того, что условия и по памяти-жёсткому диску тоже не одинаковые - что бы примерно прикинуть быстродействия - результаты всё таки вставляю :)

- - - Добавлено - - -

Как то .02-ые у меня по уменьшающейся пошли :)

- - - Добавлено - - -

Пятая МС1201.02 - на процессоре стоят две точки, на всех остальных - одна

Hunta
14.09.2020, 22:28
Первый результат
Время сборки SB монитора на 1801ВМ2 - 00:48:57
Время сборки FB монитора на 1801ВМ2 - 00:51:00

Время сборки SB монитора на 1801ВМ1 - 01:34:47
Время сборки FB монитора на 1801ВМ1 - 01:38:57

Время сборки SB монитора на LSI-11/2 - 01:27:05
Время сборки FB монитора на LSI-11/2 - 01:31:46

Hunta
15.09.2020, 08:53
Добавил на первую страницу результаты по МС1201.02

Hunta
20.09.2020, 17:51
На первую страницу добавил время SYSGEN на PDP-2011/34 (DE10)

- - - Добавлено - - -

На операциях регистр регистр PDP-2011/34 (DE10) быстрее МС1201.01 в 42.63 раза
На SYSGEN PDP-2011/34 (DE10) быстрее МС1201.01 в 39,37 раза

Hunta
25.09.2020, 19:41
К вопросу - что даёт использование FPA с J-11
Микрокод:


34567.89022+32109.754321 empty 118 552 оп./сек
34567.89022+32109.754321 53 598 оп./сек -> 97 825 оп./сек
34567.89022*32109.754321 empty 118 552 оп./сек
34567.89022*32109.754321 23 720 оп./сек -> 29 653 оп./сек
34567.89022/32109.754321 empty 118 552 оп./сек
34567.89022/32109.754321 23 970 оп./сек -> 30 044 оп./сек

FPA


34567.89022+32109.754321 empty 165 076 оп./сек
34567.89022+32109.754321 116 460 оп./сек -> 395 440 оп./сек
34567.89022*32109.754321 empty 165 076 оп./сек
34567.89022*32109.754321 116 461 оп./сек -> 395 452 оп./сек
34567.89022/32109.754321 empty 165 076 оп./сек
34567.89022/32109.754321 109 219 оп./сек -> 322 778 оп./сек

Hunta
26.09.2020, 11:10
Поигрался малость с акселератором. Из впечатлений:
- не ожидал ТАКОГО ускорения. Я, конечно, понимаю, что скорее всего скорость выполнения операций будет зависеть от операндов, но ускорение умножения больше чем на порядок - это нечто :)
- микросхема ОЧЕНЬ горячая даже в простое. Обдув - обязателен, лучше даже сделать радиатор, ну нужно помнить - расстояние между платами небольшое, по высоте радиатор будет небольшим, крайне необходима изоляция наверху.

Hunta
01.10.2020, 00:44
Добавил результаты скорости с памятью QBus (более современная, чем была) и PMI, а так же без попадания и с попаданием в кэш. Можно заметить, что с попаданием в кэш результаты операций, работающих с регистрами, не сильно отличаются, но как только операнды начинают находится в памяти - PMI добавляем бодрости :)

- - - Добавлено - - -

Запустил SYSGEN RT-шный... Первыми будут результаты на более медленном SCSI диске, с утра подцеплю более быстрый и повторю

- - - Добавлено - - -

В первое сообщение добавлена генерация RT-11 на медленной SCSI с PMI памятью.
С утра поставлю быстрый диск и повторю.

Hunta
01.10.2020, 23:47
Погонял разные варианты SYSGEN-а, обновил первое сообщение

Hunta
02.10.2020, 18:53
Добавил сравнение QBus и PMI вариантов подключения памяти в первое сообшение

Hunta
03.10.2020, 19:56
Воспользовался тестом 080101 из ТМОС-2 что бы сравнить время выполнения теста памяти в режиме QBus и PMI

Результаты

QBus – 22:35 – 1355 c
PMI – 19:28 – 1168 c

Итого ускорение – на 13 процентов быстрее.

По результатам SYSGEN (SB на CF-CF)

KDJ11-B (20 МГц, QBus) 00:15:37 - 937 c
KDJ11-B (20 МГц, PMI) 00:12:37 – 757 c

Итого ускорение – на 19 процентов быстрее.

Alex
16.10.2020, 09:08
И ещё, по поводу быстродействия с целыми числами...
У PDP-11 есть ещё один способ работы с ними про коий мы не упомянули :)
Там можно даже 32-битные числа обсчитывать :)
Это счёт через FPU.
Было бы интересно сравнить скорость ;) И с FPA и без...
Hunta, я знаю, что я наглый бываю :)

Hunta
16.10.2020, 10:40
Ну, после того как я вспомнил, что нету в FPP целочисленной арифметики, попытка воспользоваться его услугами для работы с 32-ух битными числами окончилась предсказуемым результатом:


.run hx7:speed3

Тест быстродействия

............
R2-R3(34567.)/R1(321.) empty 586 507 оп./сек
R2-R3(34567.)/R1(321.) 107 273 оп./сек -> 131 285 оп./сек
34567./321. (FPU) empty 47 894 оп./сек
34567./321. (FPU) 18 427 оп./сек -> 29 950 оп./сек
..............

Hunta
16.10.2020, 10:41
У PDP-11 есть ещё один способ работы с ними про коий мы не упомянули
Ну, кто имел дело с FPP - о нём знает :) А на СМ1420 я с FPP наигрался в своё время :)


Там можно даже 32-битные числа обсчитывать
И ситуация чуть получше, чем с классическими ADD, SUB. MUL, DIV


Было бы интересно сравнить скорость И с FPA и без...
У меня уже мелькала эта мысль :) На самом деле с моими доработками программы SPEED (то, что я называю SPEED3) - добавлять тестовые блоки не сложно. Как из одной команды, так и из нескольких :) Попробую в выходные добавить..


Hunta, я знаю, что я наглый бываю
Все мы бываем наглыми :):)

- - - Добавлено - - -

Хм.. А вот про что я совсем забыл... Что нету на FPP целочисленной арифметики... :)

- - - Добавлено - - -

Попробовал. Результат - https://zx-pk.ru/threads/32087-sravnenie-bystrodejstviya-protsessornykh-plat-(pochti-v-odinakovykh-usloviyakh).html?p=1085184&viewfull=1#post1085184

Alex
16.10.2020, 11:09
Вычитал пока это..
Про переключение режима работы с целыми 32 бита и 16 бит числами в FPU:
The FL bit is active in conversion between
integer and
floating point format.
set, the intege r
fo rma t
assumed is double
precision 2's complement (i.e., 32 bits).
When reset, the integer format is assumed
to be single precision 2's complement
(i.e., 16 bits).
Буду дальше изучать вопрос...

Hunta
16.10.2020, 13:35
Буду дальше изучать вопрос...
Да там нечего, собственно, изучать. Если регистр состояния, в нём два флажка - целое - 16 бит или 32, плавающее - одинарной точности (32 бита) или двойной (64). И когда команда выполняется - смотрятся эти флажки, в зависимости от этого - длина операндов.

Alex
16.10.2020, 13:35
Мда... картина маслом...
Сначала преобразование в формат плавающей, спецкомандой...
Затем вычисления...
Потом обратное преобразование в формат целого...

Зато вычитал, что обмен логики с регистрами в FP-11 шёл по 32-битной шине...
Сама логика 60-бит.

Hunta
16.10.2020, 13:38
Мда... картина маслом...
Сначала преобразование в формат плавающей, спецкомандой...
Затем вычисления...
Потом обратное преобразование в формат целого...
Вот и я про тоже... Не тянет FPP на целочисленные вычисления :)


шёл по 32-битной шине..
По хорошему - надо 64 бита :)

Alex
16.10.2020, 13:44
Надо было 64 бита...
И нормальную целочисленную арифметику...
Но экономили :(

Alex
16.10.2020, 13:46
Ну по крайней мере теперь знаем что да как и к чему...
Да и прочие смогут прочитать :)

Hunta
16.10.2020, 14:21
Ну, с FPA повеселее :)


.run hx7:speed3

Тест быстродействия

........
R2-R3(34567.)/R1(321.) empty 586 505 оп./сек
R2-R3(34567.)/R1(321.) 107 273 оп./сек -> 131 285 оп./сек
34567./321. (FPU) empty 206 932 оп./сек
34567./321. (FPU) 105 182 оп./сек -> 213 911 оп./сек
........


- - - Добавлено - - -

Добавил на первую страницу

Hunta
16.10.2020, 18:29
Решил я тут устроить... хм... занимательное :)



Testing in progress - Please wait
Memory Size is 4088 K Bytes
9 Step memory test
Step 1 2 3 4 5 6 7 8 9


Message 04 Entering Dialog mode

Commands are Help, Boot, List, Setup, Map and Test.
Type a command then press the RETURN key: MAP


23.996 MHz

Memory Map
Starting Ending Size in CSR CSR Bus
Address address K Bytes address type type

00000000 - 17757776 4088 17772102 Parity PMI

Press the RETURN key when ready to continue

Commands are Help, Boot, List, Setup, Map and Test.
Type a command then press the RETURN key: BOO DU0


Trying DU0

Starting system from DU0


RT-11SB V05.07

.R MSCPCK

.RUN HX7:SPEED4

Тест быстродействия

R1+R0 classic 681 990 оп./сек
R1(23456.)+R0(12345.) empty 1 471 491 оп./сек
R1(23456.)+R0(12345.) 1 181 261 оп./сек -> 5 989 094 оп./сек
R1+@R0 classic 312 411 оп./сек
R1(23456.)+@R0(M-12345.) empty 1 471 491 оп./сек
R1(23456.)+@R0(M-12345.) 847 099 оп./сек -> 1 996 339 оп./сек
R0*R0 classic 271 363 оп./сек
empty 11.*12. 1 471 491 оп./сек
11.*12. 229 727 оп./сек -> 272 226 оп./сек
R2/R0 classic 1 181 261 оп./сек
R2-R3(34567.)/R1(321.) empty 1 181 260 оп./сек
R2-R3(34567.)/R1(321.) 152 805 оп./сек -> 175 508 оп./сек
34567.89022+32109.754321 empty 142 357 оп./сек
34567.89022+32109.754321 64 341 оп./сек -> 117 404 оп./сек
34567.89022*32109.754321 empty 142 357 оп./сек
34567.89022*32109.754321 28 495 оп./сек -> 35 626 оп./сек
34567.89022/32109.754321 empty 142 357 оп./сек
34567.89022/32109.754321 28 764 оп./сек -> 36 047 оп./сек
MOV 8 word 1 empty 970 226 оп./сек
MOV 8 word 1 56 909 оп./сек -> 60 455 оп./сек
MOV 8 word 2 empty 969 032 оп./сек
MOV 8 word 2 70 007 оп./сек -> 75 458 оп./сек
.


- - - Добавлено - - -

Из трёх -09-ых два завелись на 24 МГц, один нет
-07-ой на 24 МГц не завёлся

- - - Добавлено - - -

Нет, ошибся, один из двух вроде стартует, но
- RSX не грузится вообще
- RT грузится, но при попытке в ней работать сыпет ошибками.

Итог - один проц стартует нормально на 24 МГц (паспортная 18 МГц), два других нормально работают на 20 МГц (паспортная 18 МГц)
Проц с паспортной 20 МГц нормально стартует и работает на 20 МГц

К сожалению, из кварцев у меня только 20 и 24, промежуточных (пока) нету. Есть ещё 25 МГц (не пробовал) и 27 МГц (ни один не стартовал)
Может, ещё попробую 25 МГц

Hunta
23.10.2020, 13:32
Немного поработал над работой SPEED3.
Теперь для кодовых блоков она забирает всю доступную память (а не полагается на какие то фиксированные значения). Плюсом - если в системе неожиданно меньше памяти, чем нужно кодовому блоку - система не портится.

Для систем с кэш памятью - теперь собирается два варианта программы (условные названия SPEED3 и SPEED4), первый из которых пытается выключить кэш, а второй - наоборот включить. По заголовку теперь понятней - какой вариант запущен. В будущем планирую их объединить, а вариант запуска - параметр в командной строке.

Поскольку возник вопрос о сравнении эффективности разных действий для достижения одной цели (типа - ADD #2, R0 или TST (R0)+ ) - были добавлены кодовые блоки. И вот тут на J11 с кэшем я получил результаты, которые поставили меня в тупик. Проще всего было бы списать на ошибку в программе, но - на других процессорах и на J11 без кэша - результаты получаются вполне логичные, так что... Пока думаю...



SJ ZM

.RUN HX7:SPEED3 .RUN HX7:SPEED3

Тест быстродействия (кэш, если он есть, выключен) (кэш, если он есть, выключен)

R1+R0 classic оп./сек 1 162 062 1 161 645
R0(23456.)+R0(12345.) empty оп./сек 291 050 290 422
R1(23456.)+R0(12345.) оп./сек 232 838 -> 1 164 150 232 338 -> 1 161 698
R1+@R0 classic оп./сек 425 304 425 244
R1(23456.)+@R0(M-12345.) empty оп./сек 291 051 290 421
R1(23456.)+@R0(M-12345.) оп./сек 172 628 -> 424 271 172 576 -> 425 301
R0*R0 classic оп./сек 230 178 230 160
11.*12. empty оп./сек 291 055 290 424
11.*12. оп./сек 126 636 -> 224 171 126 611 -> 224 468
R2/R0 classic оп./сек 666 803 664 609
R2-R3(34567.)/R1(321.) empty оп./сек 232 839 232 333
R2-R3(34567.)/R1(321.) оп./сек 93 296 -> 155 672 93 284 -> 155 865
34567./321. (FPU) empty оп./сек 41 974 41 972
34567./321. (FPU) оп./сек 19 249 -> 35 553 19 248 -> 35 551
34567.89022+32109.754321 empty оп./сек 62 293 62 287
34567.89022+32109.754321 оп./сек 39 113 -> 105 110 39 111 -> 105 113
34567.89022*32109.754321 empty оп./сек 62 293 62 287
34567.89022*32109.754321 оп./сек 22 167 -> 34 412 22 166 -> 34 412
34567.89022/32109.754321 empty оп./сек 62 304 62 297
34567.89022/32109.754321 оп./сек 22 322 -> 34 784 22 322 -> 34 786
MOV 8 word 1 empty оп./сек 194 277 193 857
MOV 8 word 1 оп./сек 20 682 -> 23 146 20 425 -> 22 830
MOV 8 word 2 empty оп./сек 194 034 193 615
MOV 8 word 2 оп./сек 24 032 -> 27 429 24 031 -> 27 436
#4+R0(2000) empty оп./сек 582 833 581 579
#4+R0(2000) оп./сек 291 054 -> 581 384 290 425 -> 580 122
CMP (R0)+,(R0)+ empty оп./сек 582 119 580 862
CMP (R0)+,(R0)+ оп./сек 193 416 -> 289 658 192 695 -> 288 353
#2+R0(2000) empty оп./сек 582 119 580 866
#2+R0(2000) оп./сек 291 053 -> 582 093 290 424 -> 580 830
INC R0 INC R0 empty оп./сек 582 118 580 864
INC R0 INC R0 оп./сек 291 058 -> 582 114 290 427 -> 580 844
TST (R0)+ empty оп./сек 582 121 580 863
TST (R0)+ оп./сек 247 463 -> 430 449 246 680 -> 428 768



SJ ZM

.RUN HX7:SPEED4 .RUN HX7:SPEED4

Тест быстродействия (кэш, если он есть, включен) (кэш, если он есть, включен)

R1+R0 classic оп./сек 643 031 643 032
R0(23456.)+R0(12345.) empty оп./сек 1 468 790 1 468 791
R1(23456.)+R0(12345.) оп./сек 1 179 516 -> 5 988 997 1 179 516 -> 5 988 981
R1+@R0 classic оп./сек 307 658 307 658
R1(23456.)+@R0(M-12345.) empty оп./сек 1 468 791 1 468 791
R1(23456.)+@R0(M-12345.) оп./сек 846 201 -> 1 996 325 846 202 -> 1 996 331
R0*R0 classic оп./сек 271 271 271 271
11.*12. empty оп./сек 1 468 790 1 468 791
11.*12. оп./сек 229 661 -> 272 226 229 661 -> 272 226
R2/R0 classic оп./сек 1 179 516 1 179 516
R2-R3(34567.)/R1(321.) empty оп./сек 1 179 516 1 179 516
R2-R3(34567.)/R1(321.) оп./сек 153 245 -> 176 127 153 245 -> 176 127
34567./321. (FPU) empty оп./сек 57 530 57 530
34567./321. (FPU) оп./сек 22 420 -> 36 736 22 420 -> 36 736
34567.89022+32109.754321 empty оп./сек 142 332 142 332
34567.89022+32109.754321 оп./сек 64 338 -> 117 411 64 338 -> 117 411
34567.89022*32109.754321 empty оп./сек 142 332 142 332
34567.89022*32109.754321 оп./сек 28 492 -> 35 623 28 492 -> 35 623
34567.89022/32109.754321 empty оп./сек 142 332 142 332
34567.89022/32109.754321 оп./сек 28 764 -> 36 049 28 764 -> 36 049
MOV 8 word 1 empty оп./сек 986 579 986 579
MOV 8 word 1 оп./сек 56 888 -> 60 368 56 888 -> 60 368
MOV 8 word 2 empty оп./сек 985 346 985 346
MOV 8 word 2 оп./сек 70 207 -> 75 593 70 207 -> 75 593
#4+R0(2000) empty оп./сек 1 247 939 1 247 940
#4+R0(2000) оп./сек 1 468 791 -> 0 1 468 791 -> 0
CMP (R0)+,(R0)+ empty оп./сек 1 244 391 1 244 391
CMP (R0)+,(R0)+ оп./сек 741 441 -> 1 834 461 741 441 -> 1 834 461
#2+R0(2000) empty оп./сек 1 244 391 1 244 391
#2+R0(2000) оп./сек 1 468 790 -> 0 1 468 791 -> 0
INC R0 INC R0 empty оп./сек 1 244 390 1 244 390
INC R0 INC R0 оп./сек 1 468 791 -> 0 1 468 791 -> 0
TST (R0)+ empty оп./сек 1 244 390 1 244 390
TST (R0)+ оп./сек 1 179 516 -> 22 625 056 1 179 516 -> 22 625 056


- - - Добавлено - - -

Добавил прогон под ZM монитором

Alex
27.10.2020, 14:14
Со сложными командами Intel хлебнул лиха с iAPX-432, это был 1981 год.
Хотя, если бы они этот проект делали позже, то справились возможно.
Это был этап набивания шишек и приобретения опыта, благодаря чему они справились с 386 :)
Насчёт низкой скорости VAX, вопрос интересный, мне сдаётся, что если бы VAX правильно впихнуть в FPGA мог бы получиться ещё тот зверя :)
У VAX преимущество в том, что там одной командой делаются то, что на других архитектурах требует нескольких инструкций. И в силу этого код получается компактнее.
тактовая PDP-11 на FPGFA до 100 МГц довели, при этом сильно есть куда работать по оптимизации. И сама используемая FPGA далеко не последнее слово ...

Vslav
27.10.2020, 15:17
тактовая PDP-11 на FPGFA до 100 МГц довели, при этом сильно есть куда работать по оптимизации.

Это ты просто так сказал или есть конкретные мысли?
То что получилось по результатам реверса дожимать по скорости некуда.
Возможно, если переделать с нуля и сделать конвейер, частота поднимется, но сильно несильно,
16-битный сумматор, как ни крути, значительно не ускорить.


И сама используемая FPGA далеко не последнее слово ...

Cyclone V несильно впечатлил. Cyclone 10 и MAX10 хуже Cyclone-III. Ну можно покомпилировать для топовых Stratix-ов, но там чуда тоже ждать не приходится.

Hunta
27.10.2020, 15:34
Это ты просто так сказал или есть конкретные мысли?
Я так понимаю, это он имел ввиду мои бодания с PDP2011. Если я с моим уровнем знаний смог поднять тактовую частоту от автора с 50 МГц до 100 МГц - думаю, запас поднятия ещё есть. Плюс ещё можно пободаться с внутренними операциями - там точно есть мысли по улучшению


Cyclone V несильно впечатлил
Ну тем не менее, на моей игрушке скорость Cyclone вроде заявлена до 500 МГц

Vslav
27.10.2020, 16:13
с PDP2011. Если я с моим уровнем знаний смог поднять тактовую частоту от автора с 50 МГц до 100 МГц
Насколько я помню, PDP2011 на 100МГц довольно далек по производительности от реверсенного ВМ2.
Давай 1000 знаков Пи посчитаем, сравним?



думаю, запас поднятия ещё есть
...
вроде заявлена до 500 МГц

Не-а, в проекте PDP-11 всегда есть сумматор на 16 бит, то есть перенос должен отрабатывать через 16 разрядов, даже через специальные выделенные каналы получается не особо быстро.Добавляем к сумматору обвязку чтобы получить хоть что-то похожее на АЛУ - и все, +/-100МГц. Я на EP3C16 для ВМ1 выжал 133МГц со всеми мыслимыми оптимизациями и это видимый предел.

Hunta
27.10.2020, 16:47
Пуркуа бы и не па :)



.run hx7:pieis
number pi calculator v5 (EIS)
number of digits (up to 6712)? 1000
31415926535897932384626433832795028841971693993751 058209749445923078164062862089
98628034825342117067982148086513282306647093844609 550582231725359408128481117450
28410270193852110555964462294895493038196442881097 566593344612847564823378678316
52712019091456485669234603486104543266482133936072 602491412737245870066063155881
74881520920962829254091715364367892590360011330530 548820466521384146951941511609
43305727036575959195309218611738193261179310511854 807446237996274956735188575272
48912279381830119491298336733624406566430860213949 463952247371907021798609437027
70539217176293176752384674818467669405132000568127 145263560827785771342757789609
17363717872146844090122495343014654958537105079227 968925892354201995611212902196
08640344181598136297747713099605187072113499999983 729780499510597317328160963185
95024459455346908302642522308253344685035261931188 171010003137838752886587533208
38142061717766914730359825349042875546873115956286 388235378759375195778185778053
2171226806613001927876611195909216420198 0.95
.


- - - Добавлено - - -

Пардон, там в системе клок 60 Гц. Поправка



.sho conf

RT-11SB V05.07
Booted from RK0:RT11SB

USR is set SWAP
EXIT is set SWAP
KMON is set NOIND
MODE is set NOSJ
TT is set NOQUIET
ERROR is set ERROR
SL is set OFF
EDIT is set KED
FORTRAN is set FORTRA
KMON nesting depth is 3

CLI is set DCL, CCL, UCL, NO UCF

PDP 11/34 Processor
56KB of memory
FP11 Hardware Floating Point Unit
Extended Instruction Set (EIS)
60 Hertz System Clock

FPU support


.run hx7:clkon

.tim 17:28

.DAT 27-OCT-2020

.RUN HX7:PIEIS
number pi calculator v5 (EIS)
number of digits (up to 6712)? 1000
31415926535897932384626433832795028841971693993751 058209749445923078164062862089
98628034825342117067982148086513282306647093844609 550582231725359408128481117450
28410270193852110555964462294895493038196442881097 566593344612847564823378678316
52712019091456485669234603486104543266482133936072 602491412737245870066063155881
74881520920962829254091715364367892590360011330530 548820466521384146951941511609
43305727036575959195309218611738193261179310511854 807446237996274956735188575272
48912279381830119491298336733624406566430860213949 463952247371907021798609437027
70539217176293176752384674818467669405132000568127 145263560827785771342757789609
17363717872146844090122495343014654958537105079227 968925892354201995611212902196
08640344181598136297747713099605187072113499999983 729780499510597317328160963185
95024459455346908302642522308253344685035261931188 171010003137838752886587533208
38142061717766914730359825349042875546873115956286 388235378759375195778185778053
2171226806613001927876611195909216420198 1.14
.


- - - Добавлено - - -

Но ещё раз - я пока не сильно занимался оптимизацией с точки зрения тактовой частоты в целом и производительности в частном. По результатам SPEED3 можно понять, что, скажем, на операцию сложения регистр-регистр тратится семь тактов - так что, как я уже говорил - оптимизировать есть ещё в чём :)

Пока же у меня цель - переделать взаимодействие процессора с миром на мой вариант видиния этого дела :) Ну и код причесать - опять же с той же целью :)

- - - Добавлено - - -



.RUN HX7:SPEED3

Тест быстродействия (кэш, если он есть, выключен)

R1+R0 classic 14 263 452 оп./сек
R0(23456.)+R0(12345.) empty 5 546 027 оп./сек
R1(23456.)+R0(12345.) 3 993 315 оп./сек -> 14 263 451 оп./сек
R1+@R0 classic 11 094 491 оп./сек
R1(23456.)+@R0(M-12345.) empty 5 546 027 оп./сек
R1(23456.)+@R0(M-12345.) 3 698 032 оп./сек -> 11 098 182 оп./сек
R0*R0 classic 8 321 325 оп./сек
11.*12. empty 5 546 027 оп./сек
11.*12. 3 327 982 оп./сек -> 8 321 327 оп./сек
R2/R0 classic 3 566 618 оп./сек
R2-R3(34567.)/R1(321.) empty 4 159 635 оп./сек
R2-R3(34567.)/R1(321.) 1 920 184 оп./сек -> 3 566 617 оп./сек
34567./321. (FPU) empty 1 147 853 оп./сек
34567./321. (FPU) 628 089 оп./сек -> 1 387 079 оп./сек
34567.89022+32109.754321 empty 1 849 217 оп./сек
34567.89022+32109.754321 1 426 956 оп./сек -> 6 249 100 оп./сек
34567.89022*32109.754321 empty 1 849 217 оп./сек
34567.89022*32109.754321 805 358 оп./сек -> 1 426 707 оп./сек
34567.89022/32109.754321 empty 1 849 217 оп./сек
34567.89022/32109.754321 792 575 оп./сек -> 1 387 076 оп./сек
CIS MULPI 1 - команда не реализована
CIS MULP 1 empty - команда не реализована
CIS MULP 1 - команда не реализована
CIS MULPI 2 - команда не реализована
CIS MULP 2 empty - команда не реализована
CIS MULP 2 - команда не реализована
CIS ADDNI 1 - команда не реализована
CIS ADDN 1 empty - команда не реализована
CIS ADDN 1 - команда не реализована
CIS ADDNI 2 - команда не реализована
CIS ADDN 2 empty - команда не реализована
CIS ADDN 2 - команда не реализована
MOV 8 word 1 empty 3 701 979 оп./сек
MOV 8 word 1 557 896 оп./сек -> 656 890 оп./сек
MOV 8 word 2 empty 3 697 352 оп./сек
MOV 8 word 2 628 057 оп./сек -> 756 573 оп./сек
CIS MOVCI 8 word 1 - команда не реализована
CIS MOVC 8 word 2 empty - команда не реализована
CIS MOVC 8 word 2 - команда не реализована
#4+R0(2000) empty 11 105 939 оп./сек
#4+R0(2000) 5 546 027 оп./сек -> 11 078 203 оп./сек
CMP (R0)+,(R0)+ empty 11 092 056 оп./сек
CMP (R0)+,(R0)+ 4 341 157 оп./сек -> 7 132 732 оп./сек
#2+R0(2000) empty 11 092 056 оп./сек
#2+R0(2000) 5 546 027 оп./сек -> 11 092 052 оп./сек
INC R0 INC R0 empty 11 092 056 оп./сек
INC R0 INC R0 4 754 036 оп./сек -> 8 319 953 оп./сек
TST (R0)+ empty 11 092 056 оп./сек
TST (R0)+ 5 254 799 оп./сек -> 9 985 259 оп./сек
.


- - - Добавлено - - -

Быстродействие J11 на 20 МГц - 5 лимонов. Если бы он мог работать на 100 МГц, его быстродействие было 25, то есть вариант реализации от автора PDP-2011 с моим вмешательством уступает по эффективности на клок чуть меньше, чем в два раза :)

- - - Добавлено - - -

Хотя... если сравнить с результатом вычисления пи на 24-ёх МГц-овом J11 - 9.02 c, то получается, что на 100 МГц у J11 будет 2.16 сек, то есть у меня результат лучше почти в 1.9 раза :D

Alex
27.10.2020, 17:07
Оптимизировать всегда есть куда :) Только это труд...
В качестве примера - вопрос памяти... Быстрая память ускорит работу(0 тактов ожидания).
Насчёт сумматора... Если использовать внешний сумматор?(теоретически?) Или будут большие задержки???

Vslav
27.10.2020, 22:24
number of digits (up to 6712)? 1000
31415926535897932384626433832795028841971693993751 058209749445923078164062862089
....
38142061717766914730359825349042875546873115956286 388235378759375195778185778053
2171226806613001927876611195909216420198 1.14


То есть - 1.14 секунды? 1801ВМ2 на 100МГц - 2.46
И это странно, потому что он дает 25MIPS на рег-рег против вот-этого:


R1+R0 classic 14 263 452 оп./сек

Надо будет глянуть как там более сложные инструкции обрабатываются, сколько и каких сумматоров, итд.

- - - Добавлено - - -



Если использовать внешний сумматор?(теоретически?) Или будут большие задержки???
Все что снаружи еще более медленное чем внутреннее - задержки на обмен все съедят.

Hunta
27.10.2020, 23:03
То есть - 1.14 секунды?
Да, 1.14 секунды на 100 МГц-ах :)

На classic, типа вот этого:


R1+R0 classic 14 263 452 оп./сек

лучше не смотреть, там не совсем адекватное выполнение, лучше на то, что под classic, типа вот этого


R1(23456.)+R0(12345.) 3 993 315 оп./сек -> 14 263 451 оп./сек

я немного по другому тестирую у меня на входе всё время одинаковые аргументы. Но, из за особенностей реализации в PDP2011 на умножении и делении результаты по скорости получаются одинаковые...


потому что он дает 25MIPS на рег-рег против вот-этого:
Как я уже писал, сейчас в PDP2011 минимальная длина цикла ОЧЕНЬ большая (семь тактов, если правильно помню) даже для простейших операций - типа пересылка из регистра в регистр. Но на более сложных операциях количество циклов увеличивается уже не так сильно. Видимо, поэтому и получается большее быстродействие. Но.. Чёрт его знает :) По любому - оптимизировать есть что и есть где :) Просто пока мне не до этого - надо добить переделку проекта :) Плюс посмотреть, что ещё автор PDP2011 наделал - может, ещё что то из новых изменений перенести.

- - - Добавлено - - -

Vslav, будет время - прогони, пожалуйста, мой SPEED3 - http://www.KpXX.Ru/Soft/Utils/Speed3 на 100 МГц-овм ВМ2 ?

Vslav
27.10.2020, 23:07
Смотрим в исходники:


eis_temp1 <= signed(alu_input) * signed(alus_input); -- mul is easy, just use the hw multipliers

С аппаратным умножителем оно конечно выезжает.
Попробуем без EIS? 1801ВМ2@100MHz - 6.8 секунды.

Hunta
27.10.2020, 23:08
Щас сделаю

Vslav
27.10.2020, 23:08
Vslav, будет время - прогони, пожалуйста, мой SPEED3 - http://www.KpXX.Ru/Soft/Utils/Speed3 на 100 МГц-овм ВМ2 ?
Обязательно прогоню, сейчас домучаю М4 и буду делать МС1201.01/02, там через HX поднимется RT-11 и можно будет запустить.

Hunta
27.10.2020, 23:13
56KB of memory
Extended Instruction Set (EIS)
50 Hertz System Clock

FPU support


.RUN HX7:PINEIS
number pi calculator v5 (no EIS)
number of digits (up to 6628)? 1000
31415926535897932384626433832795028841971693993751 058209749445923078164062862089
98628034825342117067982148086513282306647093844609 550582231725359408128481117450
28410270193852110555964462294895493038196442881097 566593344612847564823378678316
52712019091456485669234603486104543266482133936072 602491412737245870066063155881
74881520920962829254091715364367892590360011330530 548820466521384146951941511609
43305727036575959195309218611738193261179310511854 807446237996274956735188575272
48912279381830119491298336733624406566430860213949 463952247371907021798609437027
70539217176293176752384674818467669405132000568127 145263560827785771342757789609
17363717872146844090122495343014654958537105079227 968925892354201995611212902196
08640344181598136297747713099605187072113499999983 729780499510597317328160963185
95024459455346908302642522308253344685035261931188 171010003137838752886587533208
38142061717766914730359825349042875546873115956286 388235378759375195778185778053
2171226806613001927876611195909216420198 3.94
.

Vslav
27.10.2020, 23:15
Все равно слишком быстро :). OK, подождем теста SPEED на ВМ2, посмотрим что он покажет

Hunta
27.10.2020, 23:25
Кстати, принимаются заявки на включение кодовых блоков в SPEED3 :)
Оформление примерно такое


; блок инициализации
MOV #ABUF01, R0
MOV #ABUF02, R1
MOV #<ABUF02-ABUF01>/2, R2
; тестовый блок
10$:
MOV (R0)+, (R1)+
SOB R2, 10$

Считается время выполнения кода инициализации, время выполнения полного блока и высчитывается время выполнения тестового блока

Блока инициализации может и не быть, тестовый блок может состоять из одной команды или из нескольких, регистры можно портить любые, а вот стек от указателя SP и выше трогать не надо, ниже - можно, если надо, но по умолчанию глубина стека - от примерно 770 и ниже и указатель на выходе из тестового блока должен остаться прежним

- - - Добавлено - - -


С аппаратным умножителем оно конечно выезжает.
Я, конечно, не видел текст PIEIS, но можно предположить, что используется и деление, а тут ничего аппаратного... Так что... :)

- - - Добавлено - - -

Надо будет попросить модераторов часть сообщений из этой темы перенести в тему про быстродействия - всё таки то, что сейчас пошло - к CIS не имеет отношения. Но это я завтра отпишусь, с утра

forth32
28.10.2020, 07:36
Vslav, будет время - прогони, пожалуйста, мой SPEED3 - http://www.KpXX.Ru/Soft/Utils/Speed3 на 100 МГц-овм ВМ2 ?

Файл по ссылке не отдается. Я бы хоть сейчас мог его прогнать на мс1201.02 100Мгц, у меня-то эта схема давно уже работает в нашей лаборатории.

Hunta
28.10.2020, 08:11
Файл по ссылке не отдается.
Пардон, мой косяк, поправил

forth32
28.10.2020, 08:49
Вот он, результат на моей 1201.02 100МГц:
.RUN RK3:SPEED3

tEST BYSTRODEJSTWIQ (K\[, ESLI ON ESTX, WYKL@^EN)

R1+R0 classic 3 521 479 OP./SEK
R0(23456.)+R0(12345.) empty 850 681 OP./SEK
R1(23456.)+R0(12345.) 685 115 OP./SEK -> 3 520 132 OP./SEK
R1+@R0 classic 1 701 815 OP./SEK
R1(23456.)+@R0(M-12345.) empty 850 681 OP./SEK
R1(23456.)+@R0(M-12345.) 567 037 OP./SEK -> 1 700 609 OP./SEK
R0*R0 classic 1 039 981 OP./SEK
11.*12. empty 850 681 OP./SEK
11.*12. 471 952 OP./SEK -> 1 060 073 OP./SEK
R2/R0 classic 780 017 OP./SEK
R2-R3(34567.)/R1(321.) empty 685 115 OP./SEK
R2-R3(34567.)/R1(321.) 372 678 OP./SEK -> 817 212 OP./SEK
34567./321. (FPU) empty - KOMANDA NE REALIZOWANA
34567./321. (FPU) - KOMANDA NE REALIZOWANA
34567.89022+32109.754321 empty - KOMANDA NE REALIZOWANA
34567.89022+32109.754321 - KOMANDA NE REALIZOWANA
34567.89022*32109.754321 empty - KOMANDA NE REALIZOWANA
34567.89022*32109.754321 - KOMANDA NE REALIZOWANA
34567.89022/32109.754321 empty - KOMANDA NE REALIZOWANA
34567.89022/32109.754321 - KOMANDA NE REALIZOWANA
CIS MULPI 1 - KOMANDA NE REALIZOWANA
CIS MULP 1 empty - KOMANDA NE REALIZOWANA
CIS MULP 1 - KOMANDA NE REALIZOWANA
CIS MULPI 2 - KOMANDA NE REALIZOWANA
CIS MULP 2 empty - KOMANDA NE REALIZOWANA
CIS MULP 2 - KOMANDA NE REALIZOWANA
CIS ADDNI 1 - KOMANDA NE REALIZOWANA
CIS ADDN 1 empty - KOMANDA NE REALIZOWANA
CIS ADDN 1 - KOMANDA NE REALIZOWANA
CIS ADDNI 2 - KOMANDA NE REALIZOWANA
CIS ADDN 2 empty - KOMANDA NE REALIZOWANA
CIS ADDN 2 - KOMANDA NE REALIZOWANA
MOV 8 word 1 empty 567 830 OP./SEK
MOV 8 word 1 79 229 OP./SEK -> 92 076 OP./SEK
MOV 8 word 2 empty 567 120 OP./SEK
MOV 8 word 2 96 374 OP./SEK -> 116 104 OP./SEK
CIS MOVCI 8 word 1 - KOMANDA NE REALIZOWANA
CIS MOVC 8 word 2 empty - KOMANDA NE REALIZOWANA
CIS MOVC 8 word 2 - KOMANDA NE REALIZOWANA
#4+R0(2000) empty 1 703 491 OP./SEK
#4+R0(2000) 850 681 OP./SEK -> 1 699 238 OP./SEK
CMP (R0)+,(R0)+ empty 1 702 386 OP./SEK
CMP (R0)+,(R0)+ 676 675 OP./SEK -> 1 123 086 OP./SEK
#2+R0(2000) empty 1 702 386 OP./SEK
#2+R0(2000) 850 681 OP./SEK -> 1 700 339 OP./SEK
INC R0 INC R0 empty 1 702 386 OP./SEK
INC R0 INC R0 865 448 OP./SEK -> 1 760 377 OP./SEK
TST (R0)+ empty 1 702 386 OP./SEK
TST (R0)+ 850 791 OP./SEK -> 1 700 778 OP./SEK
.

Hunta
28.10.2020, 09:28
Хм.. как то совсем мало... Даже если предположить, что память внешняя и тормозит проц, то на регистр+регистр это не сильно должно сказываться.. Нашёл свои результаты на 1201.02 с 1801ВМ2, там регистр регистре около 700. Не знаю, на какой тактовой, но пусть 5 МГц, то есть на 100 тупым умножением будет 14, а тут в 4 раза меньше..

- - - Добавлено - - -

А прогоните ещё PIEIS и PINEIS, пожалуйста, как будет время

- - - Добавлено - - -

Из интересного - как и на ВМ3 - два INC быстрее, чем ADD #2 :)

- - - Добавлено - - -


Вот он, результат на моей 1201.02 100МГц:

forth32, забыл спросить - проц в FPGA воткнут в 1201.02 или как?

Vslav
28.10.2020, 09:37
Хм.. как то совсем мало... Даже если предположить, что память внешняя и тормозит проц
Да, я тоже полагаю что память внешняя. Подождем уточнения от forth32.
Мой тест для Pi1000 был на внутренней RAM без циклов ожидания.
В своей 1201 подумываю над кешированием.

Hunta
28.10.2020, 09:40
Мой тест для Pi1000 был на внутренней RAM без циклов ожидания.
У меня тоже - память внутренняя, но из за особенностей текущего состояния проекта - циклы ожидания есть (я думаю над этим, но как и с общей производительностью - пока это не приоритет) :)

forth32
28.10.2020, 10:09
Моя схема собрана целиком внутри FPGA. Процессор ВМ2 взят из референсной wishbone-схемы от VSLAV, оттуда же взят контроллер прерываний и уарт. Добавлено ПЗУ 055, контроллер DRAM, ИРПР, контроллер RK05, ну и некоторые интерфейсные схемы для подключения оборудования - это все на скорость не влияет, конечно. Все работает на wb_clk=100 МГц. Я думаю, что все действительно упирается в контроллер DRAM, это самое узкое место. Других источников тормозов мне трудно представить.
Для чистоты эксперимента надо бы запускать код из статической памяти, но в моей использованной FPGA EP4CE10 просто не хватит ресурсов, чтобы выделить 64К SRAM для системы. Там же еще лежит и ПЗУ, и дисковые буфера, и кое-что по мелочи, Плюс, в той же FPGA отдельным модулем работает терминал VT52.
Думаю, что ближе к выходным попробую перенести ради эксперимента схему в более емкую FPGA, EP4CE22, тогда картина будет более правильной.

Даже если предположить, что память внешняя и тормозит проц, то на регистр+регистр это не сильно должно сказываться.
Если бы... Контроллер DRAM ведь тратит кучу тактов на обращение к памяти. Там и RAS, и CAS, и такты ожидания всякие. А поскольку процессор кеша не имеет, то выборка каждой инструкции будет сопровождаться такими тормозами.
Я вполне допускаю, что использованный мной контроллер DRAM не самый оптимальный. Собственно, я его взял из комплекта китайских демонстрационных модулей, идущих вместе с платой. Самому ну совсем уж лень его делать. Надо, конечно, среди готовых корок попробовать поискать.

Hunta
28.10.2020, 11:12
Контроллер DRAM ведь тратит кучу тактов на обращение к памяти.
Ну то есть память получается внешняя по отношению к FPGA.
Моё - на регистр+регистр это не сильно должно сказываться - имелось ввиду, что тут будет один цикл обращения к памяти, а если регистр + память (сохранить результат в регистре) - тот тут уже два. В принципе, если посмотреть, регистр-регистр (примерно) в два раза быстрее, чем регистр-память, это как раз и видно. И раз близко к двум, то основной тормоз - это действительно память.


Самому ну совсем уж лень его делать. Надо, конечно, среди готовых корок попробовать поискать.
Когда доделаю переделку MMU из PDP2011, то, скорее всего, займусь контроллером памяти - у меня внешний кристалл SDRAM на плате. Можно будет сравнить с памятью внутри FPGA. Правда, перед этим неплохо бы обмен по внутренней шине оптимизировать, а то там пока сделано по принципу - мы заставили это работать и пока не трогаем :)

- - - Добавлено - - -


через HX поднимется RT-11
Блин, удобная всё таки это вещь получилась - HX :) Через неё можно загнать RT на комп, а потом с помощью RT - хоть чёрта лысого :)
Ну, в принципе, я могу через мультиконтроллер с его RK на SD запустить RT :) Могу. Когда допилю его до рабочего состояния не только с 1201.2018 :)
Кстати, забыл проверить его на 1201.01-02-03 и -04. Правда, в -134-ой прошивке вроде ошибка есть в загрузчике RK...

forth32
28.10.2020, 11:35
Правда, в -134-ой прошивке вроде ошибка есть в загрузчике RK...

Она и в 055 есть, и в 279. Там в регистр rkwc заносится размер не одного, а двух секторов, в результате второй сектор затирает сам загрузочный код :) Пришлось исправить.

Кстати, есть еще такой момент. У меня в системе таймер работает на частоте 50 Гц. А на какую частоту прерываний рассчитан тест speed3?

Hunta
28.10.2020, 12:19
Она и в 055 есть, и в 279. Там в регистр rkwc заносится размер не одного, а двух секторов, в результате второй сектор затирает сам загрузочный код
В 134-ой код загрузчика начинается с того, что содержимое регистра R2 сдвигается на 5 бит влево и заносится в регистра адреса диска, но проблема в том, что R2 содержит адрес загрузчика RK, а заносить надо содержимое R0 (номер устройства), сдвинутое на 13 бит влево (или циклически на 4 бита вправо). Дальше я не анализировал.

Чтение одного или двух секторов не должно влиять - если они читаются с адреса 0. Но - ни про 055, ни про 279 прошивку ничего сказать не могу - я их не дизассемблил - так что чего там и как... Не знаю


А на какую частоту прерываний рассчитан тест speed3?
Жёстко зашито на 50 Гц - не правильно, конечно, но все доступные стенды работают на 50 Гц-ах, так что код (наследство от SPEED) не исправлял. По правильному, конечно, надо брать из RT :)

forth32
29.10.2020, 10:51
Сделал тестовый стенд со схемой МС1201.02, запихав всю системную память во внутреннюю SRAM (altsyncram). Вот результат:
.RUN RK3:SPEED3

tEST BYSTRODEJSTWIQ (K\[, ESLI ON ESTX, WYKL@^EN)

R1+R0 classic 11 080 036 OP./SEK
R0(23456.)+R0(12345.) empty 2 266 971 OP./SEK
R1(23456.)+R0(12345.) 1 847 153 OP./SEK -> 9 974 422 OP./SEK
R1+@R0 classic 4 536 691 OP./SEK
R1(23456.)+@R0(M-12345.) empty 2 266 971 OP./SEK
R1(23456.)+@R0(M-12345.) 1 511 636 OP./SEK -> 4 536 841 OP./SEK
R0*R0 classic 1 040 127 OP./SEK
11.*12. empty 2 266 971 OP./SEK
11.*12. 702 960 OP./SEK -> 1 018 912 OP./SEK
R2/R0 classic 780 122 OP./SEK
R2-R3(34567.)/R1(321.) empty 1 847 121 OP./SEK
R2-R3(34567.)/R1(321.) 560 796 OP./SEK -> 805 284 OP./SEK
34567./321. (FPU) empty - KOMANDA NE REALIZOWANA
34567./321. (FPU) - KOMANDA NE REALIZOWANA
34567.89022+32109.754321 empty - KOMANDA NE REALIZOWANA
34567.89022+32109.754321 - KOMANDA NE REALIZOWANA
34567.89022*32109.754321 empty - KOMANDA NE REALIZOWANA
34567.89022*32109.754321 - KOMANDA NE REALIZOWANA
34567.89022/32109.754321 empty - KOMANDA NE REALIZOWANA
34567.89022/32109.754321 - KOMANDA NE REALIZOWANA
CIS MULPI 1 - KOMANDA NE REALIZOWANA
CIS MULP 1 empty - KOMANDA NE REALIZOWANA
CIS MULP 1 - KOMANDA NE REALIZOWANA
CIS MULPI 2 - KOMANDA NE REALIZOWANA
CIS MULP 2 empty - KOMANDA NE REALIZOWANA
CIS MULP 2 - KOMANDA NE REALIZOWANA
CIS ADDNI 1 - KOMANDA NE REALIZOWANA
CIS ADDN 1 empty - KOMANDA NE REALIZOWANA
CIS ADDN 1 - KOMANDA NE REALIZOWANA
CIS ADDNI 2 - KOMANDA NE REALIZOWANA
CIS ADDN 2 empty - KOMANDA NE REALIZOWANA
CIS ADDN 2 - KOMANDA NE REALIZOWANA
MOV 8 word 1 empty 1 513 205 OP./SEK
MOV 8 word 1 203 765 OP./SEK -> 235 473 OP./SEK
MOV 8 word 2 empty 1 511 314 OP./SEK
MOV 8 word 2 248 351 OP./SEK -> 297 187 OP./SEK
CIS MOVCI 8 word 1 - KOMANDA NE REALIZOWANA
CIS MOVC 8 word 2 empty - KOMANDA NE REALIZOWANA
CIS MOVC 8 word 2 - KOMANDA NE REALIZOWANA
#4+R0(2000) empty 4 539 619 OP./SEK
#4+R0(2000) 2 266 971 OP./SEK -> 4 528 279 OP./SEK
CMP (R0)+,(R0)+ empty 4 533 945 OP./SEK
CMP (R0)+,(R0)+ 1 720 674 OP./SEK -> 2 773 085 OP./SEK
#2+R0(2000) empty 4 533 945 OP./SEK
#2+R0(2000) 2 266 971 OP./SEK -> 4 533 939 OP./SEK
INC R0 INC R0 empty 4 533 945 OP./SEK
INC R0 INC R0 2 493 370 OP./SEK -> 5 540 008 OP./SEK
TST (R0)+ empty 4 533 945 OP./SEK
TST (R0)+ 2 267 678 OP./SEK -> 4 536 767 OP./SEK

Все на тех же 100 МГц примерно в 3 раза быстрее получилось. Действительно, SDRAM - еще тот тормоз.
Могу и тесты вычисления пи прогнать, если скажете откуда их взять.

Hunta
29.10.2020, 11:08
Всё равно мне ОЧЕНЬ СТРАННО, что ВМ2 от Vslav работает медленней, чем мой вариант PDP-2011. Единственно только предположение - у меня 5CSXFC6D6F31C6N, поэтому и вылезает за счёт его быстроты.


Действительно, SDRAM - еще тот тормоз.
Наверное, всё таки не SDRAM, а вариант контроллера :) Но пока времени с моим SDRAM и его контроллером повоевать - нет.



если скажете откуда их взять.
Я выложил в тот же каталог, где и SPEED3. PIEIS - использует EIS, PINEIS - не использует EIS. Посчитать 1000 знаков

- - - Добавлено - - -


Нашёл свои результаты на 1201.02 с 1801ВМ2, там регистр регистре около 700. Не знаю, на какой тактовой, но пусть 5 МГц, то есть на 100 тупым умножением будет 14, а тут в 4 раза меньше..
Стремится есть ещё куда, но надо будет померить тактовую на 1201.02, а то 5 МГц взято было с потолка :)

- - - Добавлено - - -

Кстати, те строчки, в которых пишется - команда не реализована - можно удалять :) Как очередной раз буду что то делать со SPEED3, сделаю, что бы вообще не выводились, но пока - ручками :)

Vslav
29.10.2020, 11:31
Всё равно мне ОЧЕНЬ СТРАННО, что ВМ2 от Vslav работает медленней, чем мой вариант PDP-2011. Единственно только предположение - у меня 5CSXFC6D6F31C6N, поэтому и вылезает за счёт его быстроты.
М-м-м-м.... Частота же одинаковая - 100МГц, какая тут "быстрота"?
ВМ2 - это микропроцессор, разработанный в условиях предельно жесткого транзисторного бюджета и практически в отсутствие вменяемых средств проектирования. У него единственное АЛУ, все операции происходят только через него. Если писать с нуля и вообще не ограничивать сложность схемы, да еще использовать HDL и синтезатор, то написать архитектуру по-эффективнее не большая проблема. Тут надо смотреть сколько этот PDP-2011 занимает ресурсов (ВМ2 - ОЧЕНЬ компакный), но ресурсы нонче дешевы.

Hunta
29.10.2020, 11:56
Частота же одинаковая - 100МГц, какая тут "быстрота"?
Ну да, пока работаю с ней, повышать не пробую. Но всё равно сильно удивился :)


то написать архитектуру по-эффективнее не большая проблема
Ну.. эффективность - понятие не однозначное. Эффективно использовали транзисторный бюджет - это тоже - эффективность :) Эффективно использовали доступные средства для достижения максимального быстродействия - то же :) Эффективно сбалансировали потребные ресурсы и быстродействие ... ну вы догадались :):)


Тут надо смотреть сколько этот PDP-2011 занимает ресурсов
С ходу не скажешь, ибо синтезируется PDP-11, а не процессор :) Надо попробовать только процессор синтезировать (выключив всё, чего нет в ВМ2) и вывести наружу (то есть в стенде заменить железный проц на FPGA), но.. Может как и сделаю, но не сейчас

Vslav
29.10.2020, 12:45
С ходу не скажешь, ибо синтезируется PDP-11, а не процессор :)
Quartus?
Compilation Report->Fitter->Resources by Entity

Hunta
29.10.2020, 14:05
Да, Квартус :)

Compilation Report->Fitter->Resources by Entity
Спасибо! :)

- - - Добавлено - - -

Текущий проект - полная утилизация


Logic utilization (in ALMs) 5,405 / 41,910 ( 13 % )

В отношении процессора говорит - 4239.8

Блин, я думал FPP вырубил, оказалось - показалось... Щас...

- - - Добавлено - - -

Без FPP


Logic utilization (in ALMs) 3,223 / 41,910 ( 8 % )

и для процессора 2127.1

Vslav
29.10.2020, 14:37
ВМ2 занимает на Cyclone V 1033 ALMs.
Надо смотреть на чем там регистровый файл сделан в PDP-2011, потому что в ВМ2 очень много ячеек уходит на регистры и мультиплесоры.

Hunta
29.10.2020, 14:39
Надо смотреть на чем там регистровый файл сделан в PDP-2011
Если ты про блок регистров R0-R7, то сейчас он у меня на ячейках памяти

forth32
29.10.2020, 21:42
Вот результат вычислений числа пи:

.RUN RK3:PIEIS
number pi calculator v5 (EIS)
number of digits (up to 3392)? 1000
31415926535897932384626433832795028841971693993751 05820974944592307862862089
98628034825342117067982148086513282306647093844609 550582231725359408128481117450
28410270193852110555964462294895493038196442881097 566593344612847564823378678316
52712019091456485669234603486104664821337260249141 2737245870066063155881
74881520920962829254091715364367892590360011330530 548820466521384146951941511609
43305727036575959195309218611738193261179310511854 807446237996274956735188575272
48912279381830119491298336733624406566430860213949 463952247371907021798609437027
70539217176293176752384674818467669405132000568127 145263560827785771342757789609
17363717872146844090122495343014654958537105079227 968925892354201995611212902196
08640344181598136297747713099605187072113499999983 729780499510597317328160963185
95024459455346908302642522308253344685035261931188 171010003137838752886587533208
38142061717766914730359825349042875546873115956286 388235378759375195778185778053
2171226806613001927876611195909216420198 1.62

.RUN RK3:PINEIS
number pi calculator v5 (no EIS)
number of digits (up to 3308)? 1000
31415926535897932384626433832795028841971693993751 05820974944592307862862089
98628034825342117067982148086513282306647093844609 550582231725359408128481117450
28410270193852110555964462294895493038196442881097 566593344612847564823378678316
52712019091456485669234603486104664821337260249141 2737245870066063155881
74881520920962829254091715364367892590360011330530 548820466521384146951941511609
43305727036575959195309218611738193261179310511854 807446237996274956735188575272
48912279381830119491298336733624406566430860213949 463952247371907021798609437027
70539217176293176752384674818467669405132000568127 145263560827785771342757789609
17363717872146844090122495343014654958537105079227 968925892354201995611212902196
08640344181598136297747713099605187072113499999983 729780499510597317328160963185
95024459455346908302642522308253344685035261931188 171010003137838752886587533208
38142061717766914730359825349042875546873115956286 388235378759375195778185778053
2171226806613001927876611195909216420198 6.06

Но, конечно, в чистом виде этот результат не очень интересен. Было бы интереснее сравнить его с вычислением на оригинальной плате мс1201.02. Но боюсь что мою плату восстановить уже не удастся, поэтому и пришлось заморачиваться с fpga-вариантом...

Hunta
29.10.2020, 22:07
Было бы интереснее сравнить его с вычислением на оригинальной плате мс1201.02.
Это я могу устроить :) Только уже завтра :)

Vslav
30.10.2020, 00:12
Вот результат вычислений числа пи:
...
2171226806613001927876611195909216420198 1.62
...

Похоже мой тест Пи сильно отличается, поэтому мои 2.4с не очень ревантны.

Hunta
30.10.2020, 09:38
Похоже мой тест Пи сильно отличается,
Как вариант - выложи свои .SAV, посмотрим на твоём варианте.

Vslav
30.10.2020, 09:42
Как вариант - выложи свои .SAV, посмотрим на твоём варианте.
У меня все выложено (https://github.com/1801BM1/cpu11/tree/master/vm2/tst), pitest.mac.
Собирается штатно под RT-11, но оно под bare-metal, надо немножко пропатчить под сам RT-11.

Hunta
30.10.2020, 10:11
но оно под bare-metal
Я и в прошивку могу этот код запихать - будет голое железо :)

Hunta
30.10.2020, 12:48
Пока не запустилось.. Патчу - у меня не ВМ2 :)

Vslav
30.10.2020, 13:15
Пока не запустилось.. Патчу - у меня не ВМ2 :)
Я на выходных постараюсь переделать под RT-11 и запустить в эмуляторе

Hunta
30.10.2020, 14:20
Я на выходных постараюсь переделать под RT-11
Переделал, но у меня тут работа с PDP2011 была остановлена в середине изменений, так что приходится вспоминать и доделывать.. :)

- - - Добавлено - - -

Vslav, на твоей версии результат похуже, но...



@L 1622
@S
Press zero to start PI calculation..

Enter the number of PI-digits fo calculate: 1000
PI digits will be printed: 1000

31415926535897932384626433832795028841971693993751 058209749445923078164062862089
98628034825342117067982148086513282306647093844609 550582231725359408128481117450
28410270193852110555964462294895493038196442881097 566593344612847564823378678316
52712019091456485669234603486104543266482133936072 602491412737245870066063155881
74881520920962829254091715364367892590360011330530 548820466521384146951941511609
43305727036575959195309218611738193261179310511854 807446237996274956735188575272
48912279381830119491298336733624406566430860213949 463952247371907021798609437027
70539217176293176752384674818467669405132000568127 145263560827785771342757789609
17363717872146844090122495343014654958537105079227 968925892354201995611212902196
08640344181598136297747713099605187072113499999983 729780499510597317328160963185
95024459455346908302642522308253344685035261931188 171010003137838752886587533208
38142061717766914730359825349042875546873115956286 388235378759375195778185778053
2171226806613001927876611195909216420198
System ticks (50Hz) elapsed: 00093

всё равно лучше - 1.86 секунды

Vslav
30.10.2020, 14:25
всё равно лучше - 1.86 секунды
30 процентов - не 140 :) Выложи свой исходник, я его портану на железку и прогоню.

Hunta
30.10.2020, 15:03
Выложи свой исходник, я его портану на железку и прогоню.
Так я твой и взял - просто убрал работу с двумя регистрами и добавил включение таймера

Без EIS



000042 000000 000000 000000
@L 1622
@E 001622 012706
@L 1622
@S
Press zero to start PI calculation..

Enter the number of PI-digits fo calculate: 1000
PI digits will be printed: 1000

31415926535897932384626433832795028841971693993751 058209749445923078164062862089
98628034825342117067982148086513282306647093844609 550582231725359408128481117450
28410270193852110555964462294895493038196442881097 566593344612847564823378678316
52712019091456485669234603486104543266482133936072 602491412737245870066063155881
74881520920962829254091715364367892590360011330530 548820466521384146951941511609
43305727036575959195309218611738193261179310511854 807446237996274956735188575272
48912279381830119491298336733624406566430860213949 463952247371907021798609437027
70539217176293176752384674818467669405132000568127 145263560827785771342757789609
17363717872146844090122495343014654958537105079227 968925892354201995611212902196
08640344181598136297747713099605187072113499999983 729780499510597317328160963185
95024459455346908302642522308253344685035261931188 171010003137838752886587533208
38142061717766914730359825349042875546873115956286 388235378759375195778185778053
2171226806613001927876611195909216420198
System ticks (50Hz) elapsed: 00358


Или 7.16 секунды

- - - Добавлено - - -

Ну теперь всё более менее на свои места встало :)

Vslav
30.10.2020, 16:26
Так я твой и взял - просто убрал работу с двумя регистрами и добавил включение таймера

Я про этот спрашивал: ".run hx7:pieis"
Хочу посмотреть оптимизации, возможно добавить в свои тесты.



Или 7.16 секунды
Ну теперь всё более менее на свои места встало :)
Ага, таки ВМ2 быстрее немножко :)
Почему 2011 с EIS лучше -- тоже понятно, аппаратный умножитель.

Hunta
30.10.2020, 16:54
Хочу посмотреть оптимизации, возможно добавить в свои тесты.
Этот я откуда то готовый скачал


Ага, таки ВМ2 быстрее немножко
Ну, как я и писАл - у меня есть чего оптимизировать :)

Hunta
11.11.2020, 11:20
М6 оказалась тоже рабочей. Инфа по скорострельности (неформальная, просто для понимания уровня):



000001
@10000/057777 12706
010002/136667 10000
010004/075445 12746
.......
010126/040000 4715
010130/110400 5007
@10000G
HX 2.2 RT-11 Cold boot..

HX DSK/TTY multiplexer v3.3 2016

RT-11SB (S) V05.07

.R MSCPCK

.RUN HX7:SPEED3

Тест быстродействия (кэш, если он есть, выключен)

R1+R0 classic 556 915 оп./сек
R0(23456.)+R0(12345.) empty 174 292 оп./сек
R1(23456.)+R0(12345.) 132 441 оп./сек -> 551 561 оп./сек
R1+@R0 classic 314 020 оп./сек
R1(23456.)+@R0(M-12345.) empty 174 299 оп./сек
R1(23456.)+@R0(M-12345.) 111 624 оп./сек -> 310 426 оп./сек
R0*R0 classic 34 473 оп./сек
11.*12. empty 174 342 оп./сек
11.*12. 28 754 оп./сек -> 34 432 оп./сек
R2/R0 classic 125 627 оп./сек
R2-R3(34567.)/R1(321.) empty 132 876 оп./сек
R2-R3(34567.)/R1(321.) 17 813 оп./сек -> 20 570 оп./сек
34567./321. (FPU) empty 16 241 оп./сек
34567./321. (FPU) 2 796 оп./сек -> 3 377 оп./сек
34567.89022+32109.754321 empty 25 434 оп./сек
34567.89022+32109.754321 8 889 оп./сек -> 13 664 оп./сек
34567.89022*32109.754321 empty 25 434 оп./сек
34567.89022*32109.754321 3 096 оп./сек -> 3 525 оп./сек
34567.89022/32109.754321 empty 25 429 оп./сек
34567.89022/32109.754321 3 405 оп./сек -> 3 931 оп./сек
CIS MULPI 1 - команда не реализована
CIS MULP 1 empty - команда не реализована
CIS MULP 1 - команда не реализована
CIS MULPI 2 - команда не реализована
CIS MULP 2 empty - команда не реализована
CIS MULP 2 - команда не реализована
CIS ADDNI 1 - команда не реализована
CIS ADDN 1 empty - команда не реализована
CIS ADDN 1 - команда не реализована
CIS ADDNI 2 - команда не реализована
CIS ADDN 2 empty - команда не реализована
CIS ADDN 2 - команда не реализована
MOV 8 word 1 empty 116 032 оп./сек
MOV 8 word 1 13 829 оп./сек -> 15 700 оп./сек
MOV 8 word 2 empty 116 223 оп./сек
MOV 8 word 2 16 321 оп./сек -> 18 987 оп./сек
CIS MOVCI 8 word 1 - команда не реализована
CIS MOVC 8 word 2 empty - команда не реализована
CIS MOVC 8 word 2 - команда не реализована
#4+R0(2000) empty 348 089 оп./сек
#4+R0(2000) 174 346 оп./сек -> 349 297 оп./сек
CMP (R0)+,(R0)+ empty 348 688 оп./сек
CMP (R0)+,(R0)+ 133 948 оп./сек -> 217 500 оп./сек
#2+R0(2000) empty 348 657 оп./сек
#2+R0(2000) 174 336 оп./сек -> 348 687 оп./сек
INC R0 INC R0 empty 348 629 оп./сек
INC R0 INC R0 154 485 оп./сек -> 277 412 оп./сек
TST (R0)+ empty 348 626 оп./сек
TST (R0)+ 155 312 оп./сек -> 280 092 оп./сек
.

Hunta
28.03.2021, 13:07
Ещё немного инфы по быстродействию - теперь памяти в разных вариантах. В качестве подопытного кролика выступает одна и та же процессорная плата KDJ11-B



Не PMI память PMI память, не правильно подключена, PMI память, подключена правильно
.RUN HX7:SPEED3 .RUN HX7:SPEED3 .RUN HX7:SPEED3

Тест быстродействия (кэш, если он есть, выключен) Тест быстродействия (кэш, если он есть, выключен) Тест быстродействия (кэш, если он есть, выключен)

R1+R0 classic 920 149 R1+R0 classic 883 626 R1+R0 classic 1 162 012
R0(23456.)+R0(12345.) empty 229 522 R0(23456.)+R0(12345.) empty 220 905 R0(23456.)+R0(12345.) empty 291 051
R1(23456.)+R0(12345.) 183 619 -> 918 123 R1(23456.)+R0(12345.) 176 724 -> 883 620 R1(23456.)+R0(12345.) 232 840 -> 1 164 184
R1+@R0 classic 423 098 R1+@R0 classic 388 259 R1+@R0 classic 425 328
R1(23456.)+@R0(M-12345.) empty 229 519 R1(23456.)+@R0(M-12345.) empty 220 904 R1(23456.)+@R0(M-12345.) empty 291 063
R1(23456.)+@R0(M-12345.) 147 043 -> 409 199 R1(23456.)+@R0(M-12345.) 140 753 -> 387 929 R1(23456.)+@R0(M-12345.) 172 399 -> 422 865
R0*R0 classic 219 411 R0*R0 classic 216 607 R0*R0 classic 230 187
11.*12. empty 229 527 11.*12. empty 220 904 11.*12. empty 291 065
11.*12. 110 334 -> 212 467 11.*12. 108 614 -> 213 672 11.*12. 126 994 -> 225 289
R2/R0 classic 567 168 R2/R0 classic 565 061 R2/R0 classic 664 781
R2-R3(34567.)/R1(321.) empty 183 620 R2-R3(34567.)/R1(321.) empty 176 723 R2-R3(34567.)/R1(321.) empty 232 840
R2-R3(34567.)/R1(321.) 82 714 -> 150 515 R2-R3(34567.)/R1(321.) 81 106 -> 149 903 R2-R3(34567.)/R1(321.) 93 308 -> 155 705
34567./321. (FPU) empty 90 287 34567./321. (FPU) empty 86 880 34567./321. (FPU) empty 99 345
34567./321. (FPU) 74 060 -> 412 069 34567./321. (FPU) 72 798 -> 449 132 34567./321. (FPU) 82 274 -> 478 795
34567.89022+32109.754321 empty 61 537 34567.89022+32109.754321 empty 59 818 34567.89022+32109.754321 empty 70 428
34567.89022+32109.754321 56 564 -> 699 935 34567.89022+32109.754321 54 397 -> 600 243 34567.89022+32109.754321 63 540 -> 649 679
34567.89022*32109.754321 empty 61 540 34567.89022*32109.754321 empty 59 818 34567.89022*32109.754321 empty 70 989
34567.89022*32109.754321 56 556 -> 698 325 34567.89022*32109.754321 54 397 -> 600 243 34567.89022*32109.754321 63 579 -> 609 097
34567.89022/32109.754321 empty 61 531 34567.89022/32109.754321 empty 59 831 34567.89022/32109.754321 empty 70 980
34567.89022/32109.754321 56 560 -> 700 099 34567.89022/32109.754321 54 398 -> 599 058 34567.89022/32109.754321 63 614 -> 612 995
MOV 8 word 1 empty 153 550 MOV 8 word 1 empty 147 455 MOV 8 word 1 empty 194 289
MOV 8 word 1 17 422 -> 19 651 MOV 8 word 1 16 780 -> 18 934 MOV 8 word 1 20 425 -> 22 824
MOV 8 word 2 empty 153 013 MOV 8 word 2 empty 147 270 MOV 8 word 2 empty 194 045
MOV 8 word 2 21 646 -> 25 212 MOV 8 word 2 20 349 -> 23 611 MOV 8 word 2 24 020 -> 27 413
R1 := M(word) 291 083 R1 := M(word) 271 564 R1 := M(word) 319 578
R1 := M(even byte) 290 730 R1 := M(even byte) 272 249 R1 := M(even byte) 318 144
R1 := M(odd byte) 290 741 R1 := M(odd byte) 272 249 R1 := M(odd byte) 318 197
#4+R0(2000) empty 460 051 #4+R0(2000) empty 441 811 #4+R0(2000) empty 582 163
#4+R0(2000) 229 521 -> 458 037 #4+R0(2000) 220 905 -> 441 809 #4+R0(2000) 291 073 -> 582 129
CMP (R0)+,(R0)+ empty 459 064 CMP (R0)+,(R0)+ empty 441 812 CMP (R0)+,(R0)+ empty 582 160
CMP (R0)+,(R0)+ 168 517 -> 266 256 CMP (R0)+,(R0)+ 160 357 -> 251 719 CMP (R0)+,(R0)+ 192 612 -> 287 848
#2+R0(2000) empty 460 019 #2+R0(2000) empty 441 811 #2+R0(2000) empty 582 164
#2+R0(2000) 230 001 -> 459 985 #2+R0(2000) 220 905 -> 441 809 #2+R0(2000) 291 069 -> 582 112
INC R0 INC R0 empty 460 063 INC R0 INC R0 empty 441 812 INC R0 INC R0 empty 582 157
INC R0 INC R0 229 523 -> 458 033 INC R0 INC R0 220 905 -> 441 808 INC R0 INC R0 291 073 -> 582 135
TST (R0)+ empty 459 055 TST (R0)+ empty 441 811 TST (R0)+ empty 582 161
TST (R0)+ 220 591 -> 424 648 TST (R0)+ 206 660 -> 388 280 TST (R0)+ 247 104 -> 429 342
CLR R0 - SOB R0, . empty 920 080 CLR R0 - SOB R0, . empty 883 626 CLR R0 - SOB R0, . empty 1 164 319
CLR R0 - SOB R0, . 5 -> 5 CLR R0 - SOB R0, . 5 -> 5 CLR R0 - SOB R0, . 7 -> 7


Занимательно, что не PMI память оказалась чуть быстрее, чем PMI, хотя на ней на чипах памяти стоит пометка - -15, а на PMI - -10. Возможно, PMI-ную можно подстегнуть, подсказав про быстродействие чипов (все в панельках - я поменял после покупки) - есть ещё некоторое количество перемычек, назначение которые не знаю...

Hunta
18.04.2021, 13:00
Захотелось мне тут, как обычно, странного :)
Взял я KDJ11-A (если точнее - M8192YB) и поменял кварц с штатного 15.206 на 24. Ну и J11 воткнул тот, который заводится на этой частоте.

К некоторому удивлению (хоть и небольшому), плата запустилась.

Прогнал тесты SPEED3 (без кэш памяти) и SPEED4 (с кэш памятью). До и после смены кварца.

Когда увидел результаты SPEED3 после смена кварца - аж засомневался - а тот ли я кварц впаял. С воткнутой в бэкплейн платой кварца не видно (память загораживает), поэтому проверку отложил до прогона и SPEED4, но SPEED4 показал - однозначно 24. Чуть позже выложу результаты, пока ещё SPEED4 идёт.

- - - Добавлено - - -

Результаты (стенд один в один, менялся только кварц и процессор) (emp - empty - для расчёта накладных расходов), всё в оп/с



15.206, no cache 24, no cache 15.206, cache 24, cache
R0(23456.)+R0(12345.) emp. 154 284 172 457 926 354 1 457 892
R1(23456.)+R0(12345.) 123 428> 617 156 137 556> 679 708 744 540> 3 793 479 1 172 443> 5 988 093
R1(23456.)+@R0(M-12345.) emp. 154 284 172 457 926 353 1 457 884
R1(23456.)+@R0(M-12345.) 98 286> 270 794 110 776> 309 724 534 663> 1 264 486 842 556> 1 996 250
11.*12. emp. 154 284 172 457 926 353 1 457 887
11.*12. 73 243> 139 438 92 650> 200 209 145 371> 172 430 229 379> 272 207
R2-R3(34567.)/R1(321.) emp. 123 428 137 556 744 541 1 172 444
R2-R3(34567.)/R1(321.) 54 234> 96 742 70 155> 143 176 97 005> 111 536 153 090> 176 081
34567./321. (FPU) emp. 25 837 35 865 36 433 57 506
34567./321. (FPU) 12 022> 22 483 17 709> 34 982 14 182> 23 221 22 413> 36 727
34567.89022+32109.754321 emp. 36 089 44 243 90 117 142 220
34567.89022+32109.754321 23 471> 67 129 30 817> 101 551 40 748> 74 380 64 315> 117 410
34567.89022*32109.754321 emp. 36 089 44 243 90 117 142 220
34567.89022*32109.754321 13 600> 21 824 19 225> 33 998 18 027> 22 534 28 478> 35 608
34567.89022/32109.754321 emp. 36 089 44 243 90 117 142 220
34567.89022/32109.754321 13 705> 22 096 19 757> 35 698 18 227> 22 848 28 764> 36 056
MOV 8 word 1 emp. 102 985 114 774 622 987 981 476
MOV 8 word 1 11 625> 13 104 13 560> 15 376 28 975> 30 388 39 649> 41 318
MOV 8 word 2 emp. 102 857 114 972 622 208 980 249
MOV 8 word 2 14 169> 16 432 16 489> 19 249 34 197> 36 185 45 694> 47 928
R1 := M(word) 189 641 215 838 927 510 1 459 711
R1 := M(even byte) 189 405 215 568 926 352 1 457 896
R1 := M(odd byte) 189 405 215 567 926 352 1 459 896
CLR R0 - SOB R0, . emp. 617 145 687 787 187 277 490 858
CLR R0 - SOB R0, . 3> 3 4> 4 11> 11 18> 18

Hunta
05.11.2021, 17:19
Вспомнилось :)

Вот результат вычислений числа пи:

.RUN RK3:PIEIS
number pi calculator v5 (EIS)
number of digits (up to 3392)? 1000
31415926535897932384626433832795028841971693993751 05820974944592307862862089
......................
2171226806613001927876611195909216420198 1.62

.RUN RK3:PINEIS
number pi calculator v5 (no EIS)
number of digits (up to 3308)? 1000
31415926535897932384626433832795028841971693993751 05820974944592307862862089
......................
2171226806613001927876611195909216420198 6.06



Если я правильно помню, результаты для ВМ2 на 100 МГц
Новые мои результаты (точно на 100 МГц) :)



.RU PIEIS
number pi calculator v5 (EIS)
number of digits (up to 6548)? 1000
31415926535897932384626433832795028841971693993751 058209749445923078164062862089
.....................
2171226806613001927876611195909216420198 1.24
.RUN PINEIS
number pi calculator v5 (no EIS)
number of digits (up to 6464)? 1000
31415926535897932384626433832795028841971693993751 058209749445923078164062862089
.....................
2171226806613001927876611195909216420198 4.58
.


- - - Добавлено - - -


Не-а, в проекте PDP-11 всегда есть сумматор на 16 бит, то есть перенос должен отрабатывать через 16 разрядов, даже через специальные выделенные каналы получается не особо быстро.Добавляем к сумматору обвязку чтобы получить хоть что-то похожее на АЛУ - и все, +/-100МГц
Ну, довёл я до 200 МГц, но только младшие процессора (нет ДП) - так что пока не готов проект перевести на постоянные 200 МГц :) Есть мысли по оптимизации и кое что уже и сделано и дало свой результат - 20 лимонов против 14 на самой быстрой команде (BR). Но на 100 МГц BR в пределе должна давать 50 лимонов - так что - есть куда стремиться :)

Vslav
05.11.2021, 23:14
Ну, довёл я до 200 МГц, но только младшие процессора (нет ДП) - так что пока не готов проект перевести на постоянные 200 МГц :) Есть мысли по оптимизации и кое что уже и сделано и дало свой результат - 20 лимонов против 14 на самой быстрой команде (BR). Но на 100 МГц BR в пределе должна давать 50 лимонов - так что - есть куда стремиться :)

Дык, исходников нет, никак прокомментировать не могу. Надо смотреть что там написано.
Сама по себе частота не фокус, можно, например, с мультицикловыми констрейнами ВМ2 и на 500МГц переписать. Если б он от этого еще стал бы быстрее :)
И у тебя плата на 5-ом циклоне вроде же? Там развлекаться сильно проще - и ресурсов много, и быстрое, и ячейки 8-входовые.

Hunta
06.11.2021, 00:06
Сама по себе частота не фокус, можно, например, с мультицикловыми констрейнами ВМ2 и на 500МГц переписать.
Констрейнтами я так толком и не научился (по крайне мере пока) пользоваться, так что нет, без них

И у тебя плата на 5-ом циклоне вроде же?

Единственно только предположение - у меня 5CSXFC6D6F31C6N, поэтому и вылезает за счёт его быстроты.

М-м-м-м.... Частота же одинаковая - 100МГц, какая тут "быстрота"?
Частота одинаковая - причём здесь 5-ый циклон? ;)

- - - Добавлено - - -


Дык, исходников нет, никак прокомментировать не могу. Надо смотреть что там написано.
Поскольку у меня этот проект в значительной степени экспериментальный и изменения происходят часто и может быть откат изменений и опять возврат к ним - даже через год - я не планирую пока их делать общедоступными :) Смысла не вижу :)

Vslav
06.11.2021, 00:14
Поскольку у меня этот проект в значительной степени экспериментальный и изменения происходят часто и может быть откат изменений и опять возврат к ним - даже через год - я не планирую пока их делать общедоступными :) Смысла не вижу :)
Тогда и обсуждать особо нечего.

Hunta
19.06.2023, 23:47
Что-то в упор не помню, гонял ли я свои SPEEDx на simh. А искать лень. Так что.. встречаем simh на Xeon E5680 3.33 ГГц


LSI 11 or PDP 11/03 Processor
56KB of memory
50 Hertz System Clock

No SYSGEN options enabled


.RUN SPEED0

Тест быстродействия (кэш, если он есть, выключен)

BR .+2 64 031 600 оп./сек
R0(23456.)+R0(12345.) empty 16 171 734 оп./сек
R1(23456.)+R0(12345.) 10 162 680 оп./сек -> 27 350 088 оп./сек
.

То есть... При частоте в почти 139 быстрее, чем мой J11 на 24 МГц его производительность выше только в 10.66 раз...

Woxem
22.06.2023, 18:48
Что-то в упор не помню, гонял ли я свои SPEEDx на simh. А искать лень. Так что.. встречаем simh на Xeon E5680 3.33 ГГц


LSI 11 or PDP 11/03 Processor
56KB of memory
50 Hertz System Clock

No SYSGEN options enabled


.RUN SPEED0

Тест быстродействия (кэш, если он есть, выключен)

BR .+2 64 031 600 оп./сек
R0(23456.)+R0(12345.) empty 16 171 734 оп./сек
R1(23456.)+R0(12345.) 10 162 680 оп./сек -> 27 350 088 оп./сек
.

То есть... При частоте в почти 139 быстрее, чем мой J11 на 24 МГц его производительность выше только в 10.66 раз...

А simh какой версии а то его разработчик в 2023 обновил вроде как

Hunta
22.06.2023, 19:13
А simh какой версии а то его разработчик в 2023 обновил вроде как
"PDP-11 simulator V4.0-0 Beta git commit id: 335b4ef2"
Попробую собрать текущий коммит

Hunta
22.06.2023, 21:13
PDP-11 simulator Open SIMH V4.1-0 Current git commit id: df243aef+uncommitted-changes

Debug:



.RUN SPEED0
OCnt field found :)

Тест быстродействия (кэш, если он есть, выключен)

BR .+2 60 960 291 оп./сек
R0(23456.)+R0(12345.) empty 16 731 092 оп./сек
R1(23456.)+R0(12345.) 10 296 832 оп./сек -> 26 774 989 оп./сек
.


Release:



.RUN SPEED0
OCnt field found :)

Тест быстродействия (кэш, если он есть, выключен)

BR .+2 60 624 900 оп./сек
R0(23456.)+R0(12345.) empty 16 834 212 оп./сек
R1(23456.)+R0(12345.) 10 274 506 оп./сек -> 26 367 525 оп./сек
.