Как стать автором
Обновить

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

Скорее всего, на винрарном тесте 386й тупо свапался большую часть времени — все-таки если вдруг словарь у винрара оказался 32МБ, то он просто не помещался в памяти, и операции поиска в словаре должны были задействовать диск.

Вполне вероятно. Я привел результаты для расчета 128К знаков, там заметно быстрее получается. Можно конечно нарастить память 386-го до 128 мегабайт, но это будет совсем нереалистичная система.

А он может столько адресовать? Последний раз, когда я интересовался, я запомнил цифру в 24 адресных бита у какого-то компа на 386м. Может быть, это лимит материнской платы был, а не процессора — у него все-таки unreal mode все 4ГБ позволяла адресовать. Правда, 24 бита это 16МБ, то есть меньше, чем здесь.

Насколько мне известно, каких-то серьезных ограничений на объем памяти у 386-го нет, если не брать в расчет 386SX, у которого внешняя шина данных ограничена. Теоретически я могу найти и поставить 16-мегабайтные SIMM, но практического смысла это не имеет. Наоборот, думаю уменьшить объем памяти до 16МБ.
Там еще в чипсете дело. DRAM адресуется как матрица, а не линейно, так что процессор напрямую с ней не взаимодействует и от него зависит только нижний лимит, верхний определяет сам чипет
80386 DX40: 16 часов 58 минут 31.445 секунды

Мда. Этот процессор не тормозит, он соблюдает баланс работы и личной жизни. Получается, что процессор 2001 года считает число Pi в 332 раза быстрее 386-го. Xeon быстрее Pentium III в 17.5 раз, и в 5800 раз быстрее 386-го процессора. Неплохой прогресс, согласитесь.
Если 386 без математического сопроцессора, то результаты не имеют смысла. SuperPI использует FPU.

В комплектации был заявлен NPU 80387.


компьютер на базе процессора 80386DX с частотой 40 мегагерц, 32 мегабайтами оперативной памяти, сопроцессором 80387
А вот так DOS-версия игры SimCity 2000 реагирует на 32 мегабайта оперативной памяти:

Точно 32 МБ? Очень похоже на знаковое 16 битное отображение числа 65535
Кстати, когда я подобные тесты проводил, у меня бенчмарки Win гораздо лучше масштабировались по скорости, чем ДОС. Начиная где-то с 450 МГц бенчмарки ДОС становились бессмысленными, а Win еще что-то показывали. Особенно это видно было на примере Quake(DOS)/Quake2(Win)
Точно 32 мегабайта. А вот инсталлятор SimCity мог что-то своё посчитать.

Кстати, Quake под Dos на 386 запускается. Бенчмарк показывает 0.8 fps :) Проблему с Win-бенчмарками я показал наглядно: не все запускаются на 386, и есть подозрение, что упираются не в процессор, а в объем памяти. Непростое выходит сравнение при таком разбросе характеристик.
Да 386 вообще способный. Я на нем и q2 запускал )). Современным бенчмаркам еще может не хватать инструкций более современных, которых не было в 386.

Тогдашние функции обнаружения размеров оперативной памяти были 16-битными и возвращали число КБ. И таки да, знаковыми. И эти показанные -32768 КБ это MAXINT+1 или 0x8000.

Черт, точно, там же two's compliment, FFFF это -1.
Провёл собственные исследования на примере ASM.NG файла (кто помнит это? тому респект)

Заголовок спойлера
Сусликов пишет:
        Это не есть тестирование архиваторов, просто
однажды ради спортивного интереса мне захотелось свернуть
какой-нибудь большой файл всеми архиваторами, какие найду
под рукой. Большой файл - это ASM.NG (597407 байт).
Все это делалось на машине с процессором 8088.

-----------+----------+-----+--------+--------+-------
  release    options           size     time     %%
                              (bytes)   (min)
-----------+----------+-----+--------+--------+-------
0.20 beta      ARJ/1    ARJ   176088   20.34    29.5
0.20 beta      ARJ/2    ARJ   186246   20.34    31.2
0.20 beta      ARJ/3    ARJ   198319    5.41    33.2
0.20 beta      ARJ/4    ARJ   213318    5.5     35.7
2.5            HYPER    HYP   184669    6.8     30
2.05           ICE      LZH   176018    8.39    29
3.5            PKARC    ARC   274403    1.5     45
1.1            ZIP/EX   ZIP   196799    4.10    32
1.1            ZIP/EI   ZIP   196799    4.9     32
1.1            ZIP/ES   ZIP   287426    1.44    48
-----------+----------+-----+--------+--------+-------


С.Чернивецкий отвечает:

     В Софтпанораме 3.4 было помещено сообщение Сусликова
(\forum\arc-club\suslikov.034) о сравнении архиваторов на большом файле,
в качестве которого был взят ASM.NG (597407 байт). Хотя, по его словам,
это сравнение проводилось ради спортивного интереса, и по-видимому файл
был выбран совершенно случайно, мне показалось интересным расширить
таблицу Сусликова, включив в нее также и архиватор Charc. К сожалению,
у меня не оказалось под рукой компьютера с процессором 8088, поэтому
для сравнения пришлось повторить архивирование и другими архиваторами.
Был использован процессор 80286. Замечу, что преимущества архиватора
Charc версии 1.3 в полной мере проявляются только на больших файлах
(длиной в сотни килобайт, как ASM.NG), на меньших же файлах либо
преимущества нет, либо даже может быть небольшой проигрыш.

Упаковщик    Время работы    Размер архива    Сжатие
               (мин.сек)         (байт)         (%)
ARJ 1.00          2.25           176019       29.46%
CHARC 1.3         0.55           168405       28.19%
LHA 2.05          1.04           175950       29.45%
PKARC 3.5         0.14           274541       45.96%
PKZIP 1.1         0.31           196733       32.93%



Я нашел этот файл, вот md5 его
be35ceab78e512da6c9942db58944575 *ASM.NG

Раскопировал его в 1000 директорий (на SSD диске), используя программу:

#include <stdio.h>
#include <stdlib.h>
#include <dir.h>

void main(void)
{
	for(int i=0;i<1000;i++)
	{
		char path[100];
		sprintf(path, "%d", i);
		mkdir(path);
		sprintf(path, "copy asm.ng %d", i);
		system(path);
	}
}


И получил на моем процессоре AMD FX-8150 (8 ядер, 3.60 GHz)
на архиваторе WinRAR 5.71 (64 разряда)

метод сжатия ZIP максимальный
1000 файлов — 75 сек
0,075 сек на файл
размер после сжатия: 156030 байт

метод сжатия ZIP скоростной
1000 файлов — 10 сек
0,01 сек на файл
размер после сжатия: 165058 байт

Размер поражает — даже на скоростном методе сжатия размер меньше, чем древний ZIP 1.1 на максимальном. Ну ладно, сравним скорость с максимальным. Хотя это и неправильно, сравнивать 16-ти битовые программы и 64 битовые.

Вывод — скорость возросла
по сравнению с 80286 в 400 раз
по сравнению с 8088 в 3300 раз

Повторяю у меня не Xeon, а средненький AMD FX-8150 на Xeon, наверное, нужно ещё умножать на 5. Но и сравнивалось не с 80386, а с 80286, поэтому наверное, делить на 5 надо. В итоге равновесие. Но цифра 400 тоже поражает.

PS. Кстати, Софтпанорама 1991 уже не гуглится. Неужели всё погибло?
Нашёл только это http://www.softpanorama.org/People/Gurtyak/Articles/gurtyak034.txt
Спасибо, очень интересный метод усложнения задачи для современных компьютеров. Надо попробовать погонять на своих железках.

Хотя это и неправильно, сравнивать 16-ти битовые программы и 64 битовые.

Так как задача не меняется, мне кажется это оправдано. Но я бы хотел протестировать тот же WinRAR 3.80. Как вы замеряли время выполнения?
Время показывает сам WinRAR, суммируем и получаем 75 сек

image
PS. Кстати, Софтпанорама 1991 уже не гуглится. Неужели всё погибло?
Много чего сохранилось (хотя и не всё). Просто надо понимать, что HTML только в 1993м году появился. Ранние выпуски лежат ровно на том сайте, который вы нашли — просто в архивах.
В 90-е была такая утилита ДОСовская как Check IT (если не ошибаюсь в правильном написании).Гоняли её на 2\3\486 машинках. Там кроме тестов памяти, видео и HDD был замер производительности процессора в странных «попугаях» под названием dristones кажется :).
Dry/Wet stones для CPU/FPU, — это, по-моему, Landmark. Но могу ошибаться.
Может имеет смысл посмотреть тесты от сюда Dhrystone Benchmark Results On PCs
Результаты тестов от 386 и выше
Dhry1 Dhry1 Dhry2 Dhry2
Opt NoOpt Opt NoOpt
VAX VAX VAX VAX
CPU MHz MIPS MIPS MIPS MIPS

AMD 80386 40 17.5 4.32 13.7 4.53
IBM 486D2 50 26.6 7.89 22.4 7.89
80486 DX2 66 45.1 12.0 35.3 12.4
IBM 486BL 100 53.9 12.0 40.9 11.8
AMD 5X86 133 84.5 9.37 84.5 9.42
Pentium 75 112 19.3 87.1 18.9
Cyrix P150 120 175 27.9 160 28.3
Pentium 100 169 31.8 122 32.2
Cyrix PP166 133 219 38.4 180 39.8
IBM 6x86 150 234 44.1 188 43.9
Pentium 133 239 38.3 181 39.0
Pentium 166 270 43.6 189 43.9
Cyrix PR233 188 286 46.4 232 45.8
Pentium 200 353 47.4 269 48.1
Pentium MMX 200 352 51.4 276 51.0
AMD K6 200 349 43.1 289 43.3
Pentium Pro 200 373 92.4 312 91.9
Celeron A 300 553 133 484 136
Pentium II 300 544 132 477 136
AMD K62 500 778 77.8 606 76.8
AMD K63 450 804 76.3 645 77.4
Pentium II 450 813 199 713 204
Celeron A 450 828 198 720 202
Pentium III 450 846 197 722 203
Pentium III 600 1105 263 959 270
Athlon 600 1316 321 942 316
Duron 600 1382 350 999 349
Pentium III 1000 1858 461 1595 465
PIII Tualatin 1200 2205 546 1907 571
Pentium 4 1700 2262 239 1843 242
Athlon Tbird 1000 2282 634 1659 602
Duron 1000 2288 576 1674 587
Celeron M 1295 2440 640 2273 645
Atom 1600 2462 717 1828 728
Pentium 4 1900 2593 261 2003 269
Atom 1666 2600 772 1948 780
P4 Xeon 2200 3028 300 2265 309
Atom Z8300 1840 3203 904 2686 927
Athlon 4 1600 3707 956 2830 1004
Pentium M 1862 4082 954 3933 975
Ath4 Barton 1800 4181 1061 3172 1099
Pentium 4E 3000 4379 566 3553 566
Athlon XP 2080 4826 1228 3700 1312
Turion 64 M 1900 4972 1186 3742 1150
Pentium 4 3066 5052 432 4012 434
Opteron 1991 5077 1268 3985 1223
Core 2 Duo M 1830 5379 892 4952 966
Athlon XP 2338 5433 1400 4160 1482
Athlon 64 2150 5658 1312 4288 1355
Pentium 4 3678 5787 511 4227 480
Athlon 64 2211 5798 1348 4462 1312
Celeron C2 M 2000 5804 932 5275 1050
Core 2 Duo 1 CP 2400 7145 1198 6446 1251
Core i5 2467M @@@@ 8338 1183 4752 1148
Phenom II 1 CP 3000 9462 2250 7615 2253
Core i7 930 **** 9826 1662 8684 1661
Core i7 860 #### 10094 1789 9978 1847
Core i7 3930K &&&& 13871 1960 11197 1972
Core i7 4820K $$$1 14136 1958 11867 1981
Core i7 4820K $$$2 14776 2006 11978 2014
Core i7 3930K OC 17269 2444 13877 2432

#### Rated as 2800 MHz but running at up to
3460 MHz using Turbo Boost
**** Rated as 2800 MHz but running at up to
3066 MHz using Turbo Boost
@@@@ Rated as 1600 MHz running at up to
2300 MHz using Turbo Boost
&&&& Rated as 3200 MHz but running at up to
3800 MHz, OC OverClocked ~4730 MHz
$$$1 Rated as 3700 MHz but running at up to
3900 MHz, using Turbo Boost
$$$2 Performance not Balanced Power Setting
for 3900 MHz
M = Mobile CPU

To Start

Dhry1 Dhry1 Dhry2 Dhry2
Opt NoOpt Opt NoOpt
VAX VAX VAX VAX
CPU MHz MIPS MIPS MIPS MIPS

Later Results 32 and 64 Bit MS Compilers

Pentium 4 32b1 1900 2613 1795

Athlon 64 32b1 2211 6104 3720
Athlon 64 64b1 2211 8668 5214
Athlon 64 64b2 2211 8549 4654

Core 2 Duo 32b1 2400 8094 5476
Core 2 Duo 64b1 2400 12600 8550
Core 2 Duo 64b2 2400 11726 6248

Core i7 64b1 &&&& 33048 18355
Core i7 64b2 &&&& 27873 15753

Core i7 32b1 $$$1 15470 10302
Core i7 64b1 $$$1 27113 15580
Core i7 64b2 $$$1 22362 13279
Core i7 32b1 $$$2 15587 10347
Core i7 64b1 $$$2 29291 15756
Core i7 64b2 $$$2 23652 13364

Phenom II 32b1 3000 9768 6006
Phenom II 64b1 3000 9862 6878
Phenom II 64b2 3000 11837 8006

b1 = 32 bit integers, b2 = 64 bit integers
&&&& overclocked i7-3930K see above
$$$1 Turbo Boost < 3900 MHz see above
$$$2 Turbo Boost at 3900 MHz see above

Later MS Compilers Version 18.00

Atom Z8300 32b1 1840 3044
Atom Z8300 64b1 1840 3201

Core 2 Mob 32b1 1830 4546

Core 2 Duo 32b1 2400 6587
Core 2 Duo 64b1 2400 5946

Core i7 32b1 $$$1 12090
Core i7 64b1 $$$1 11686

Phenom II 32b1 3000 7321
Phenom II 64b1 3000 8137

To Start

,B.32 Bit and 64 Bit Linux Results from Ubuntu GCC

Dhry1 Dhry1 Dhry2 Dhry2
Opt NoOpt Opt NoOpt
VAX VAX VAX VAX
CPU OS MHz MIPS MIPS MIPS MIPS

Atom N455 32b Ub 1666 5485 1198 2055 1194
Atom N455 64b Ub 1666 5926 1065 2704 1098

Core 2 Mob 32b Ub 1830 9876 2602 4833 2584
Core 2 Mob 64b Ub 1830 15382 2265 8241 2502

Athlon 64 32b Ub 2211 9034 2286 4580 2347
Athlon 64 64b Ub 2211 14783 2243 6873 2580

Core 2 Duo 32b Ub 2400 13599 3428 5852 3348
Core 2 Duo 64b Ub 2400 18738 3643 12265 3288

Phenom II 32b Ub 3000 13406 3368 6676 3470
Phenom II 64b Ub 3000 21996 3908 11982 3826
Phenom II 64b Fe 3000 21841 3882 12000 3798

Core i7 930 64b Ub **** 24396 5361 16435 5302

Core i7 4820K 32b Ub $$$1 29277 7108 16356 7478
Core i7 4820K 64b Ub $$$1 32659 8436 23607 8481

Ub = Ubuntu Linux, Fe = Fedora Linux
**** Rated as 2800 MHz but running at up to
3066 MHz using Turbo Boost
$$$1 Rated as 3700 MHz but running at up to
3900 MHz, using Turbo Boost

To Start

Android Results Compiled By Native Development Kit
Also results for Raspberry Pi & Linux

Opt NoOpt
System ARM MHz Android Vax Vax
MIPS MIPS

T5 MIPS CPU 1000 4.0.1 56 E
T1 926EJ 800 2.2 356 196
T2 v7-A9 800 2.3.4 962 458
P13 v7-A9 1200 4.1.2 1491
T7 v7-A9 1300a 4.1.2 1610 810
T4 v7-A9 1500a 4.0.3 1650 786
P11 v7-A9v3 1400 4.0.4 1937 866
T11*I v7-A15 2000b 4.2.2 2533
T11 v7-A15 2000b 4.2.2 3189 1504
T21*I QU-800 2150 4.4.3 3319
T21 QU-800 2150 4.4.3 3854 1628

A1*C Z3745 1866 4.4.2 1840 1310
A1*I Z3745 1866 4.4.2 2451
A1*I Z8300 1840 5.1.1 2430

ARM v8-A53 1300 5.0.2 1683
ARM*I v8-A53 1300 5.0.2 1423
ARM*I v8-A53 1300 5.1 1493
ARM*I v8-A53 1500 6.0.1 1649
R1=Atom Z8300 1840 6.0.1 2390
R2 Core i7 3900 6.0.1 10489

64 Bit Version
ARM v8-A53*I 1300 5.0.2 2569
ARM v8-A53*I 1300 5.1 2658
R1=Atom Z8300 1840 6.0.1 3769
R2 Core i7 3900 6.0.1 17003

System — T = Tablet, P = Phone, E = Emulator?
a running at 1500, b at 1700
*I Atom Native Intel/ARM version
*C Atom using Intel to ARM conversion
QU = Qualcomm CPU
R1, R2 Android via REMIX for PC

Raspberry Pi Linux
ARM 1176 700 3.6.11 847
ARM 1176 1000 3.6.11 1226

Raspberry Pi 2
ARM V7A 900 3.18.5 1538
ARM v7A 1000 3.18.5 1694
gcc 4.8
ARM V7A 900 3.18.5 1667
ARM V7A 1000 3.18.5 1852

Raspberry Pi 3, 32 Bit
ARM v8-A53 1200 4.1.19 2201
gcc 4.8
ARM v8-A53 1200 4.1.19 2469

Raspberry Pi 3, 64 Bit
OpenSuse
ARM v8-A53 1200 4.4.36 3536
Gentoo
ARM v8-A53 1200 4.10.0 3475

NOTE: ARM's own results are much faster than these
— different compiler and optimisation?

To Start

16 Bit Results

Dhry1 Dhry1 Dhry2 Dhry2
Opt NoOpt Opt NoOpt
VAX VAX VAX VAX
CPU MHz MIPS MIPS MIPS MIPS

80486 DX2 66 29 14 18 8
Pentium 100 89 41 78 42
Pentium Pro 200 176 95 164 94
Celeron M 1295 705
Pentium 4E 3000 754
Athlon 4 2080 1256
Core i7 4820K 3700 1832

OS/2 Results

80486 75 37 9 35 9
IBM 80486BL 100 54 12 41 12
80486 DX2 66 59 12 48 12
Cyrix P150 120 175 28 160 28
Pentium Pro 150 276 53 218 52
Pentium Pro 166 307 59 242 57
Pentium Pro 200 362 69 285 67

To Start

а древние это какие звуковые карты? :) из того что сам щупал на ум приходит SB AWE64
вроде ничего так было в конце 90ых, да и раз иса, то и 386ому пойти должна :)
AWE64 (Gold) будет самой новой в подборке :)
AWE64 это скорее к пентиуму
Для 386 это наверное SB Pro/SB 16. GUS первый тоже наверное оттуда.
О нет, только не гусь :)
Да, простите, gus это уже глубоко 486е. С памятью уже не очень ))
Я ориентируюсь на 1992 год, а это как раз актуальный год для первого GUS. И по спекам он тогда был круче Sound Blaster. Но блин, слишком много переменных получается :)
Да, для вашего сценария имхо ГУС вообще слабо подходит. Особенно первый. Он не особо совместим был ни с чем, нужна была нативная поддержка.
Звуковые карты тех времен — зоопарк плохо совместимых между собой технологий. Я планирую ограничиться тремя версиями SB — Pro 2, 16 и AWE 64.
В многопоточном режиме он быстрее в 15 раз, хотя разница между одним потоком и несколькими немного не соответствует количеству ядер — возможно это ограничения кода WinRAR.

Поразмыслив несколько минут, мне кажется, я знаю в чем дело. Ну или меня поправят системные программисты под Win95/98. Насколько я помню, у этих операционок коооперативная многозадачность, т.е. операционка не может честно исполнять код в каждый конкретный квант времени более, чем на одном процессоре. Честный параллелизм был только у Windows NT (и даже там были какие-то ограничения в лицензиях Pro vs Server). Поэтому я едва ли могу себе представить, как WinRar обходит это ограничение. Потоки-то порождать он может, а вот исполнять параллельно — это вряд ли.
Судя про скриншоту на Xeon'е таки на Windows 95, а, возможно, XP.

А к кооперативной многозадачности это всё и тем более не имеет отношения (тем более что в Windows 95 кооператиный доступ к GUI, числодробилки вполне себе в вытесняющем режиме работают).
А к кооперативной многозадачности это всё и тем более не имеет отношения (тем более что в Windows 95 кооператиный доступ к GUI, числодробилки вполне себе в вытесняющем режиме работают).
Тем не менее, wiki говорит, что поддержка SMP есть только в Windows, основанных на ядре WinNT. То есть, планировщик операционной системы Win9x ничего не знает ни о каких других процессорах и процессорных ядрах.
Ну, вытесняющая многозадачность же не обязательно означает поддержку мультипроцессорности. Если я ничего не путаю, даже в NT были разные ядра с поддержкой SMP и без.
С кооперативной многозадачностью я, пожалуй, погорячился — это времена Win3.1. Про разные ядра в NT я выше упоминал — она разное количество процессоров поддерживала в зависимости от версии (Pro vs Server). Опять же, память меня подводит. Но или количество поддерживаемых процессоров, или Pro в Server можно было легко поменять путем внесения нехитрых изменений в реестр. Умельцы даже reg-файлы писали для упрощения этих метаморфоз. Короче говоря, все дело в Win95 и в отсутствии поддержки многопроцессорности :) Нужны дальнейшие эксперименты!
Но или количество поддерживаемых процессоров, или Pro в Server можно было легко поменять путем внесения нехитрых изменений в реестр.
Всё не так просто. Потому что бывает «один» и «много». Во времена, когда одноядерные процессоры были популярны (а это не так давно и было-то) и Windows NT и Linux имели два, принципиально отличных, ядра (хотя, конечно, компилировались они из одного исходника): UP (UniProcessing) и SMP (Symmetric MultiProcessing). И одно в другое не переделывалось принципиально (хотя современные Linux'ы умеют добавлением NOPов превратить SMP-ядро в UP… но вот в обратную сторону даже Linux не умеет).

А вот уже если пара процессоров поддерживается — тогда уже не так важно: 2, 10, или 32… хотя кстати в NT 4.0 был забавный факт: NT 4.0 поддерживает максимум 32 ядра на x86, однако до 64х на Alpha… догадайтесь почему.

Современные системы могут и больше, чем 64 ядра содержать, так что это ограничение убрали.
Уточню: в многопоточном режиме WinRAR запускался только на Xeon, и там это происходило под управлением Windows 10.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий