Re: тест с матрицами - 2
От: VladD2 Российская Империя www.nemerle.org
Дата: 30.09.05 23:58
Оценка: +1
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Вот такие дела...


Назовите модель своего процессора сэр. А народ должен знать чего лучше никогда не покупать.

Попробую угадать его марку Цэ-лерон или какой-нить Симпсон. Короче то у чего кэш успевает закончиться даже не начавшись.

ЗЫ

У меня:
Size:  100 Time: 00:00:00.0156246
Size:  200 Time: 00:00:00.0468738
Size:  300 Time: 00:00:00.1718706
Size:  400 Time: 00:00:00.5937348
Size:  400 Time: 00:00:00.5937348
Size:  500 Time: 00:00:01.3280910
Size:  600 Time: 00:00:01.9062012
Size:  700 Time: 00:00:03.4686390
Size:  800 Time: 00:00:06.2341755
Size:  900 Time: 00:00:10.5621620
Size: 1000 Time: 00:00:16.5463455

то есть нармальная квадратичная зависимость.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: тест с матрицами - 2
От: TK Лес кывт.рф
Дата: 02.10.05 12:43
Оценка: +1
Hello, "Serginio1"
> Вообще то влад ответил http://www.rsdn.ru/Forum/Message.aspx?mid=1412468&amp;only=1
Автор: VladD2
Дата: 30.09.05

> обычный write barier. Да и по поведению в 1.1 vs 2.0 очень похоже.

вообще, write barier актуален только для reference полей (т.к. при изменении reference поля возможно изменение графа зависимостей объектов). Если же в поле хранится не reference тип то, при записи в данное поле никакой write barier не нужет т.к. такие поля не влияют на сборку мусора. Не знаю, как надо написать тест с матрицами что-бы write barier стал актуальным...
Posted via RSDN NNTP Server 1.9
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
тест с матрицами - 2
От: Pavel Dvorkin Россия  
Дата: 30.09.05 06:49
Оценка:
Подумал я и решил исследовать, как зависит время от размера матрицы.

Release

nSize C++ C#

100 0.16 0.14
200 0.39 0.42
300 0.66 0.71
400 0.92 2.80
500 1.72 6.50
600 3.00 5.46
700 5.23 10.14
800 7.95 51.7
900 12.3 1'22"
1000 17.7 4'11"

На небольших nSize C# ничем не уступает C++. Правда, обращает на себя странная аномалия — при переходе от 500 к 600 время уменьшается. Это не артефакт — проверял дважды.
Резкий рост времени на С# начинается с 800. Переход к 900 — нормальный рост. Переход к 1000 — опять всплеск.

Помолился я тут богу, и запусти еще один тест

1500 6'6"" 18'55"


Вот такие дела...
With best regards
Pavel Dvorkin
Re: тест с матрицами - 2
От: Andrbig  
Дата: 30.09.05 07:00
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Подумал я и решил исследовать, как зависит время от размера матрицы.

<skip>
PD>Вот такие дела...

Посмотри http://www.rsdn.ru/article/dotnet/GCnet.xml
Автор(ы): Игорь Ткачев
Дата: 06.12.2002
Алгоритм работы сборщика мусора (garbage collector, далее просто GC), являющегося частью CLR, подробно описан в книге Джефри Рихтера (Jeffrey Richter) «Applied Microsoft .NET Framework Programming». Мы не будем приводить здесь столь же подробное описание этого алгоритма, но обязательно остановимся на некоторых ключевых моментах.
— там тоже баловались сравнением скорости C++ и C#. И результаты были как у тебя — начиная с определенного размера GC стал сдавать. Так что Америку ты не открыл.
Re[2]: тест с матрицами - 2
От: Mab Россия http://shade.msu.ru/~mab
Дата: 30.09.05 07:38
Оценка:
Здравствуйте, Andrbig, Вы писали:

A>Посмотри http://www.rsdn.ru/article/dotnet/GCnet.xml
Автор(ы): Игорь Ткачев
Дата: 06.12.2002
Алгоритм работы сборщика мусора (garbage collector, далее просто GC), являющегося частью CLR, подробно описан в книге Джефри Рихтера (Jeffrey Richter) «Applied Microsoft .NET Framework Programming». Мы не будем приводить здесь столь же подробное описание этого алгоритма, но обязательно остановимся на некоторых ключевых моментах.
— там тоже баловались сравнением скорости C++ и C#. И результаты были как у тебя — начиная с определенного размера GC стал сдавать. Так что Америку ты не открыл.


Т.е. в проделываемом тесте на каждой итерации матрица создается заново? Но это же безобразие.
Re[3]: тест с матрицами - 2
От: Andrbig  
Дата: 30.09.05 07:44
Оценка:
Здравствуйте, Mab, Вы писали:

Mab>Здравствуйте, Andrbig, Вы писали:


A>>Посмотри http://www.rsdn.ru/article/dotnet/GCnet.xml
Автор(ы): Игорь Ткачев
Дата: 06.12.2002
Алгоритм работы сборщика мусора (garbage collector, далее просто GC), являющегося частью CLR, подробно описан в книге Джефри Рихтера (Jeffrey Richter) «Applied Microsoft .NET Framework Programming». Мы не будем приводить здесь столь же подробное описание этого алгоритма, но обязательно остановимся на некоторых ключевых моментах.
— там тоже баловались сравнением скорости C++ и C#. И результаты были как у тебя — начиная с определенного размера GC стал сдавать. Так что Америку ты не открыл.


Mab>Т.е. в проделываемом тесте на каждой итерации матрица создается заново? Но это же безобразие.


Т.е. автору теста стоит ознакомиться с текстом, возможно тот натокнет его на некие выводы. А что уж там у него создается — я не знаю.
Re[2]: тест с матрицами - 2
От: Pavel Dvorkin Россия  
Дата: 30.09.05 09:48
Оценка:
Здравствуйте, Andrbig, Вы писали:

A>Посмотри http://www.rsdn.ru/article/dotnet/GCnet.xml
Автор(ы): Игорь Ткачев
Дата: 06.12.2002
Алгоритм работы сборщика мусора (garbage collector, далее просто GC), являющегося частью CLR, подробно описан в книге Джефри Рихтера (Jeffrey Richter) «Applied Microsoft .NET Framework Programming». Мы не будем приводить здесь столь же подробное описание этого алгоритма, но обязательно остановимся на некоторых ключевых моментах.
— там тоже баловались сравнением скорости C++ и C#. И результаты были как у тебя — начиная с определенного размера GC стал сдавать. Так что Америку ты не открыл.


Да я и не претендую на лавры Колумба. Хотя и не понимаю — почему здесь GC вообще вмешивается. Я-то здесь никакие объекты не создаю и не освобождаю.
With best regards
Pavel Dvorkin
Re: тест с матрицами - 2
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 30.09.05 10:07
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:
Re[6]: тест с матрицами
Автор: Serginio1
Дата: 29.09.05

Кроме как промаха кэша и его сброса нет очевидных причин, т.к. последовательно проходит на ура.
Какова кстати ситуация с Re: тест с матрицами
Автор: GlebZ
Дата: 29.09.05
... << RSDN@Home 1.1.4 stable rev. 510>>
и солнце б утром не вставало, когда бы не было меня
Re[2]: тест с матрицами - 2
От: Pavel Dvorkin Россия  
Дата: 30.09.05 11:39
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>Здравствуйте, Pavel Dvorkin, Вы писали:

S>Re[6]: тест с матрицами
Автор: Serginio1
Дата: 29.09.05

S> Кроме как промаха кэша и его сброса нет очевидных причин, т.к. последовательно проходит на ура.

Что-то странно он промахивается.

S> Какова кстати ситуация с Re: тест с матрицами
Автор: GlebZ
Дата: 29.09.05


http://www.rsdn.ru/Forum/Message.aspx?mid=1410501&amp;only=1
Автор: Pavel Dvorkin
Дата: 30.09.05
With best regards
Pavel Dvorkin
Re[3]: тест с матрицами - 2
От: GlebZ Россия  
Дата: 30.09.05 14:14
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Что-то странно он промахивается.

Скорее всего это перенос из популяций в популяцию. Просмотреть можно через Performance. Там выбрать как "Performance object" — NET CRL Memory, Counters — %Time In GC и допустим #Gen n Collections и можно еще кучу counterов подключить. Они могут показать сколько времени занимает GC, и сколько сборок мусора делает.

С уважением, Gleb.
Re[4]: тест с матрицами - 2
От: VladD2 Российская Империя www.nemerle.org
Дата: 30.09.05 23:58
Оценка:
Здравствуйте, GlebZ, Вы писали:

GZ>Скорее всего это перенос из популяций в популяцию. Просмотреть можно через Performance. Там выбрать как "Performance object" — NET CRL Memory, Counters — %Time In GC и допустим #Gen n Collections и можно еще кучу counterов подключить. Они могут показать сколько времени занимает GC, и сколько сборок мусора делает.


Нет. ЖЦ тут вообще ни на что не влияет. Там объектов то копейки и занимаются они все до перемножения. Так что время действтилеьно уходит на промахи в кэше и может еще на райт-барьер.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: тест с матрицами - 2
От: GlebZ Россия  
Дата: 01.10.05 11:28
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>то есть нармальная квадратичная зависимость.

У меня PIV(2Г) — тоже самое, квадратичная последовательность. А вообще, именно перемножением матриц меряют эффективность сопроцессора.

С уважением, Gleb.
Re[3]: тест с матрицами - 2
От: GlebZ Россия  
Дата: 01.10.05 13:09
Оценка:
Здравствуйте, GlebZ, Вы писали:

GZ>Здравствуйте, VladD2, Вы писали:


VD>>то есть нармальная квадратичная зависимость.

GZ>У меня PIV(2Г) — тоже самое, НЕ квадратичная последовательность. А вообще, именно перемножением матриц меряют эффективность сопроцессора.

Одно слово забыл, а смысл обратный.
Просто варьирует на 1000 от 2 минут до 3. Стабильного времени алгоритма нет.
С уважением, Gleb.
Re[2]: тест с матрицами - 2
От: Alexey Axyonov Украина  
Дата: 01.10.05 21:43
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Pavel Dvorkin, Вы писали:


PD>>Вот такие дела...


VD>Назовите модель своего процессора сэр. А народ должен знать чего лучше никогда не покупать.


VD>Попробую угадать его марку Цэ-лерон или какой-нить Симпсон. Короче то у чего кэш успевает закончиться даже не начавшись.


VD>ЗЫ


VD>У меня:

VD>
VD>Size:  100 Time: 00:00:00.0156246
VD>Size:  200 Time: 00:00:00.0468738
VD>Size:  300 Time: 00:00:00.1718706
VD>Size:  400 Time: 00:00:00.5937348
VD>Size:  400 Time: 00:00:00.5937348
VD>Size:  500 Time: 00:00:01.3280910
VD>Size:  600 Time: 00:00:01.9062012
VD>Size:  700 Time: 00:00:03.4686390
VD>Size:  800 Time: 00:00:06.2341755
VD>Size:  900 Time: 00:00:10.5621620
VD>Size: 1000 Time: 00:00:16.5463455
VD>

VD>то есть нармальная квадратичная зависимость.

Аналогично.

Athlon 64 3500+ (x86 режим) 512k L2 cache:

.NET 2.0.50727.26

Time 100 = 0,005173283
Time 200 = 0,04024897
Time 300 = 0,1676054
Time 400 = 0,6383289
Time 500 = 1,538195
Time 600 = 2,267745
Time 700 = 4,143095
Time 800 = 7,288717
Time 900 = 11,97331
Time 1000 = 18,38258

.NET 1.1.4322 SP1

Time 100 = 0,004150248
Time 200 = 0,0351419
Time 300 = 0,1544269
Time 400 = 0,6232547
Time 500 = 1,514088
Time 600 = 2,23681
Time 700 = 4,097188
Time 800 = 7,187719
Time 900 = 11,99186
Time 1000 = 18,31991
... << RSDN@Home 1.2.0 alpha rev. 618>>
Re[2]: тест с матрицами - 2
От: Pavel Dvorkin Россия  
Дата: 02.10.05 03:41
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Pavel Dvorkin, Вы писали:


PD>>Вот такие дела...


VD>Назовите модель своего процессора сэр. А народ должен знать чего лучше никогда не покупать.


Извольте, сэр! А покупать его не удастся — машине 3 года, увы

VD>Попробую угадать его марку Цэ-лерон или какой-нить Симпсон. Короче то у чего кэш успевает закончиться даже не начавшись.


Pentium IV 1600 MHz.

А может, попробовать Size 2000 — 3000 ? Интересно, что будет. Дело не в размере ведь...

И еще вопрос. А С++ на твоей машине для этих же размеров что дает ?
With best regards
Pavel Dvorkin
Re[4]: тест с матрицами - 2
От: Pavel Dvorkin Россия  
Дата: 02.10.05 03:48
Оценка:
Здравствуйте, GlebZ, Вы писали:

GZ>>У меня PIV(2Г) — тоже самое, НЕ квадратичная последовательность. А вообще, именно перемножением матриц меряют эффективность сопроцессора.


Во времена оные классическим тестом считалось 50-кратное обращение матрицы.

GZ>Одно слово забыл, а смысл обратный.

GZ>Просто варьирует на 1000 от 2 минут до 3. Стабильного времени алгоритма нет.
GZ>С уважением, Gleb.

Вообще-то интересный эффект. На моих 1600 и твоих 2000 — примерно одна и та же картина, резко отличающаяся от того, что у VladD2 и Alexey Axyonov (он, правда, не сказал, какой у него процессор). А между тем С++ дает нормальные результаты.

Может, .Net специально на старых процессорах помедленнеее работает ? Чтобы апгрейдили их побыстрее ?
With best regards
Pavel Dvorkin
Re: тест с матрицами - 2
От: Pavel Dvorkin Россия  
Дата: 02.10.05 07:35
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

Пропустил я сейчас эти 2 теста для nSize = 1000 на других машинах

Pentium IV, 1.8 GHz, 736 Mb
С++ 16 сек.
C# 140 сек

Pentium IV, 2.8 GHz, 1 Gb

C++ 10 сек
C# 18 сек.

Таким образом, для машин с частотой <= 2GHz имеет место то, о чем я писал в исходном сообщении. Для машин с частотой порядка 3 GHz — то, о чем писал VladD2 и др.

Попробовал для nSize = 3000, на Pentium IV, 2.8 GHz, 1 Gb

С++ 296 сек.

С# 887 сек.

Помолился я богу и поставил nSize = 5000. Делать мне сегодня нечего, у нас олимпиада проходит, до конца ее еще 1.5 часа, мое вмешательство не требуется, все автоматизировано

С++ 2346 сек.

Для С# было ясно, что результатов я не дождусь. Поэтому изменил самый внешний цикл, поставив там 50 вместо 5000. Время для этого теста 124 сек. Так что на полный тест ориентировочное время 12400 сек.

Так что впечатление, что дело здесь не в процессоре. Просто на более мощном процессоре эффект проявляется тот же, только при больших размерах матрицы. На моей слабой машине тоже ведь разнийы практически не было при размерах до 300.
With best regards
Pavel Dvorkin
Re[2]: тест с матрицами - 2
От: Pavel Dvorkin Россия  
Дата: 02.10.05 07:56
Оценка:
2Vlad2D: Если имеешь время, повтори для 3000 хотя бы. Интересно сравнить.
With best regards
Pavel Dvorkin
Re[5]: тест с матрицами - 2
От: Alexey Axyonov Украина  
Дата: 02.10.05 08:10
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

>PD Alexey Axyonov (он, правда, не сказал, какой у него процессор).


Как это не сказал?

Athlon 64 3500+ (x86 режим) 512k L2 cache


Писал в обоих сообщениях.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Re[3]: тест с матрицами - 2
От: Alexey Axyonov Украина  
Дата: 02.10.05 08:25
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>2Vlad2D: Если имеешь время, повтори для 3000 хотя бы. Интересно сравнить.


Athlon 64 3500+ (Winchester) 512k L2


Time 1000 = 18,20987
Time 2000 = 214,3378

Дальше тенденция понятна.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Re[6]: тест с матрицами - 2
От: GlebZ Россия  
Дата: 02.10.05 08:55
Оценка:
Здравствуйте, Alexey Axyonov, Вы писали:

.Хе-хе. У Влада тоже Athlon 64.
Интересно что JIT нерил на строчку temp += a[i][k] * b[k][j] ассемблера.

С уважением, Gleb.
Re[7]: тест с матрицами - 2
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 02.10.05 09:04
Оценка:
Здравствуйте, GlebZ, Вы писали:
Вообще то влад ответил http://www.rsdn.ru/Forum/Message.aspx?mid=1412468&amp;only=1
Автор: VladD2
Дата: 30.09.05

обычный write barier. Да и по поведению в 1.1 vs 2.0 очень похоже.
и солнце б утром не вставало, когда бы не было меня
Re[9]: тест с матрицами - 2
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 02.10.05 12:59
Оценка:
Здравствуйте, TK, Вы писали:

TK>Hello, "Serginio1"

>> Вообще то влад ответил http://www.rsdn.ru/Forum/Message.aspx?mid=1412468&amp;only=1
Автор: VladD2
Дата: 30.09.05

>> обычный write barier. Да и по поведению в 1.1 vs 2.0 очень похоже.

TK>вообще, write barier актуален только для reference полей (т.к. при изменении reference поля возможно изменение графа зависимостей объектов). Если же в поле хранится не reference тип то, при записи в данное поле никакой write barier не нужет т.к. такие поля не влияют на сборку мусора. Не знаю, как надо написать тест с матрицами что-бы write barier стал актуальным...


Я и сам бошку ломаю но
Но при доступе через [][] может быть придоступе ко второму массиву который может записываться во временную переменню.
А как там в GC реально M$ его знает
При последовательном проходе временная переменная один раз на весь цикл и этого эффекта не наблюдается.
Химия где то там. в 2.0 этого эффекта нет. Вообще в 1.1 write barier встречается часто там где его не должно быть. .В 2.0 многие места оптимизированы еще в альфе.
и солнце б утром не вставало, когда бы не было меня
Re: тест с матрицами - 2
От: GlebZ Россия  
Дата: 02.10.05 14:32
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

Случайно набрел на интересную статью, именно по матрицам.
C# In-Depth<br />
Harness the Features of C# to Power Your Scientific Computing Projects



There is a minor limitation in the current JIT compiler regarding the graceful elimination of bound checks on rectangular arrays, hence accessing a relatively small two-dimensional jagged array sequentially (row-by-row) might be quicker than accessing a two-dimensional rectangular array on some machines. The same will not be true for larger array sizes as jagged arrays will lose more time in fetching random elements from different locations in memory. You can approximate that the performance of a jagged array is inversely proportional to the number of elements accessed when not walking linearly through each row.

Jagged arrays perform miserably in cases when elements are accessed diagonally or randomly because of their poor locality. Rectangular arrays, on the other hand, seem to perform four to five times better than jagged arrays in such scenarios.


С уважением, Gleb.
Re[3]: тест с матрицами - 2
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.10.05 18:22
Оценка:
Здравствуйте, GlebZ, Вы писали:

GZ>У меня PIV(2Г) — тоже самое, квадратичная последовательность. А вообще, именно перемножением матриц меряют эффективность сопроцессора.


Какой еще в 21 веке сопроцессор? Если ты о плавающей точке, то в этом тесте ее вообще не используется. Так что это скорее тест на кэш процессора.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: тест с матрицами - 2
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.10.05 18:22
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Вообще-то интересный эффект. На моих 1600 и твоих 2000 — примерно одна и та же картина, резко отличающаяся от того, что у VladD2 и Alexey Axyonov (он, правда, не сказал, какой у него процессор). А между тем С++ дает нормальные результаты.


Ребятки у вас старые Пни 4. У них маленький кэш (256 КБ скорее всего, а может и с 128). У меня же процессор с 512 кэшем. Причем мой кэш L2 работает на частоте ядра. Вот и вся разница. Просто нетовские массивы на 8 байт больше чем С++-ные. Вот и вылетают видимо за пределы кэша.

PD>Может, .Net специально на старых процессорах помедленнеее работает ? Чтобы апгрейдили их побыстрее ?


Возможно оптимизация под AMD64 сделана чуть лучше. Но думаю, основное влияние оказывает размер кэша.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: тест с матрицами - 2
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.10.05 18:22
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Вообще-то интересный эффект. На моих 1600 и твоих 2000 — примерно одна и та же картина, резко отличающаяся от того, что у VladD2 и Alexey Axyonov (он, правда, не сказал, какой у него процессор). А между тем С++ дает нормальные результаты.


PD>Может, .Net специально на старых процессорах помедленнеее работает ? Чтобы апгрейдили их побыстрее ?


Испытал этот тест на значительно более медленном процессор PM 1.7 Ггц.
Результат получился 11 секунд у догтнетного теста и 9 у С++-ного.

Единственное что есть у это "более медленного" процессора — это 2 метровый кэш L2.

Так что теперь я почти уверен, что дело именно в размере кэша.

На всякий случай ниже я привел полное описание обоих процессоров сделанное Сандрой 2005 лайт.
AMD64 3400:
SiSoftware Sandra

Processor
Model : AMD Athlon(tm) 64 Processor 3500+
Speed : 2.25GHz
Model Number : 3500 (estimated)
Performance Rating : PR3371 (estimated)
Type : Standard
Package : FC µPGA939
Multiplier : 11/1x
Minimum/Maximum Multiplier : 11/1x / 11/1x
Generation : G8
Name : MF Athlon 64 (K8 ClawHammer) 90nm ?GHz+ ?V
Revision/Stepping : F / 0 (10D)
Stepping Mask : DH7-CG
Microcode : MU0FF03A
Core Voltage Rating : 1.500V
Min/Max Core Voltage : 1.500V / 1.550V
Maximum Physical / Virtual Addressing : 40-bit / 48-bit
Native Page Size : 4kB

Co-Processor (FPU)
Type : Built-in
Revision/Stepping : F / 0 (10D)

Processor Cache(s)
Internal Data Cache : 64kB Synchronous, Write-Back, 2-way set, 64 byte line size
Internal Instruction Cache : 64kB Synchronous, Write-Back, 2-way set, 64 byte line size
L2 On-board Cache : 512kB ECC Synchronous, Write-Back, 16-way set, 64 byte line size
L2 Cache Multiplier : 1/1x  (2247MHz)

Upgradeability
Socket/Slot : Socket 939
Upgrade Interface : Unknown
Supported Speed(s) : 3.00GHz+

Features
FPU - Co-Processor Built-in : Yes
VME - Virtual Mode Extensions : Yes
DE - Debugging Extension : Yes
PSE - Page Size Extension : Yes
TSC - Time Stamp Counter : Yes
MSR - Model Specific Registers : Yes
PAE - Physical Address Extension : Yes
MCE - Machine Check Exception : Yes
CX8 - Compare & Exchange Instruction : Yes
APIC - Local APIC Built-in : Yes
SEP - Fast System Call : Yes
MTRR - Memory Type Range Registers : Yes
PGE - Page Global Enable : Yes
MCA - Machine Check Architecture : Yes
PAT - Page Attribute Table : Yes
PSE36 - 36-bit Page Size Extension : Yes
PSN - Unique Serial Number : No
CLF - Cache Line Flush Support : Yes
DS - Debug Trace & EMON Store : No
ACPI - Software Clock Control : No
(W)MMX Technology : Yes
FXSR - Fast Float Save & Restore : Yes
SSE Technology : Yes
SSE2 Technology : Yes
SS - Self Snoop : No
HTT - Hyper-Threading Technology : No
TM - Thermal Monitor : No
PBE - Pending Break Enable : No
IA64 Technology : No
SSE3 Technology : No
MON - Monitor/MWait : No
DSCPL - CPL qualified Debug Store : No
EST - Enhanced SpeedStep Technology : No
TM2 - Thermal Monitor 2 : No
CID - Context ID : No
xTPR - Send Task Priority Messages : No
DAZ - Denormals Are Zero : Yes

Extended Features
SYCR - Extended Fast System Call : Yes
EMMX - Extended MMX Technology : Yes
FXSR - Fast Float Save & Restore : Yes
FXSR - Instructions Optimisation : No
3DNow! Technology : Yes
Extended 3DNow! Technology : Yes
DEP/NX - No-execute Page Protection : Yes
AMD64/EM64T Technology : Yes
LAHF/SAHF - Support in Long Mode : No
CMP - Multi-Core Legacy Mode : No

Power Management Features
STC - Software Thermal Control : No
TM - Thermal Monitor : No
TTP - Thermal Trip : Yes
VID - Voltage Control : Yes
FID - Frequency Control : Yes
TS - Thermal Sensor Built-in : Yes

Advanced Settings
System Ack Limit : 1 request(s)
System Victim Limit : 0 request(s)
Extended MTRR Types : Yes
I/O Type Range Registers : Yes
Top of Memory : 40000000 (1024MB)

Machine Check Architecture Settings
Number of Reporting Banks : 5 bank(s)
Exception Reporting Control Support : Yes

Variable Range MTRR Settings
MTRR 0 : 00000000-3FFFFFFF (0MB-1024MB) WB
MTRR 1 : E0000000-E7FFFFFF (3584MB-3712MB) WC

Variable Range IORR Settings
IORR 1 : E0000000-E7FFFFFF (3584MB-3712MB) rdMem wrMem

Fixed Range MTRR Settings
MTRR 0 Range 0 : 00000000-0000FFFF (0kB-64kB) WB rdIO wrIO
MTRR 0 Range 1 : 00010000-0001FFFF (64kB-128kB) WB rdIO wrIO
MTRR 0 Range 2 : 00020000-0002FFFF (128kB-192kB) WB rdIO wrIO
MTRR 0 Range 3 : 00030000-0003FFFF (192kB-256kB) WB rdIO wrIO
MTRR 0 Range 4 : 00040000-0004FFFF (256kB-320kB) WB rdIO wrIO
MTRR 0 Range 5 : 00050000-0005FFFF (320kB-384kB) WB rdIO wrIO
MTRR 0 Range 6 : 00060000-0006FFFF (384kB-448kB) WB rdIO wrIO
MTRR 0 Range 7 : 00070000-0007FFFF (448kB-512kB) WB rdIO wrIO
MTRR 1 Range 0 : 00080000-00083FFF (512kB-528kB) WB rdIO wrIO
MTRR 1 Range 1 : 00084000-00087FFF (528kB-544kB) WB rdIO wrIO
MTRR 1 Range 2 : 00088000-0008BFFF (544kB-560kB) WB rdIO wrIO
MTRR 1 Range 3 : 0008C000-0008FFFF (560kB-576kB) WB rdIO wrIO
MTRR 1 Range 4 : 00090000-00093FFF (576kB-592kB) WB rdIO wrIO
MTRR 1 Range 5 : 00094000-00097FFF (592kB-608kB) WB rdIO wrIO
MTRR 1 Range 6 : 00098000-0009BFFF (608kB-624kB) WB rdIO wrIO
MTRR 1 Range 7 : 0009C000-0009FFFF (624kB-640kB) WB rdIO wrIO
MTRR 2 Range 0 : 000A0000-000A3FFF (640kB-656kB) UC rdIO wrIO
MTRR 2 Range 1 : 000A4000-000A7FFF (656kB-672kB) UC rdIO wrIO
MTRR 2 Range 2 : 000A8000-000ABFFF (672kB-688kB) UC rdIO wrIO
MTRR 2 Range 3 : 000AC000-000AFFFF (688kB-704kB) UC rdIO wrIO
MTRR 2 Range 4 : 000B0000-000B3FFF (704kB-720kB) UC rdIO wrIO
MTRR 2 Range 5 : 000B4000-000B7FFF (720kB-736kB) UC rdIO wrIO
MTRR 2 Range 6 : 000B8000-000BBFFF (736kB-752kB) UC rdIO wrIO
MTRR 2 Range 7 : 000BC000-000BFFFF (752kB-768kB) UC rdIO wrIO
MTRR 3 Range 0 : 000C0000-000C0FFF (768kB-772kB) WP rdIO wrIO
MTRR 3 Range 1 : 000C1000-000C1FFF (772kB-776kB) WP rdIO wrIO
MTRR 3 Range 2 : 000C2000-000C2FFF (776kB-780kB) WP rdIO wrIO
MTRR 3 Range 3 : 000C3000-000C3FFF (780kB-784kB) WP rdIO wrIO
MTRR 3 Range 4 : 000C4000-000C4FFF (784kB-788kB) WP rdIO wrIO
MTRR 3 Range 5 : 000C5000-000C5FFF (788kB-792kB) WP rdIO wrIO
MTRR 3 Range 6 : 000C6000-000C6FFF (792kB-796kB) WP rdIO wrIO
MTRR 3 Range 7 : 000C7000-000C7FFF (796kB-800kB) WP rdIO wrIO
MTRR 4 Range 0 : 000C8000-000C8FFF (800kB-804kB) UC rdIO wrIO
MTRR 4 Range 1 : 000C9000-000C9FFF (804kB-808kB) UC rdIO wrIO
MTRR 4 Range 2 : 000CA000-000CAFFF (808kB-812kB) UC rdIO wrIO
MTRR 4 Range 3 : 000CB000-000CBFFF (812kB-816kB) UC rdIO wrIO
MTRR 4 Range 4 : 000CC000-000CCFFF (816kB-820kB) UC rdIO wrIO
MTRR 4 Range 5 : 000CD000-000CDFFF (820kB-824kB) UC rdIO wrIO
MTRR 4 Range 6 : 000CE000-000CEFFF (824kB-828kB) UC rdIO wrIO
MTRR 4 Range 7 : 000CF000-000CFFFF (828kB-832kB) UC rdIO wrIO
MTRR 5 Range 0 : 000D0000-000D0FFF (832kB-836kB) WB rdIO wrIO
MTRR 5 Range 1 : 000D1000-000D1FFF (836kB-840kB) WB rdIO wrIO
MTRR 5 Range 2 : 000D2000-000D2FFF (840kB-844kB) WB rdIO wrIO
MTRR 5 Range 3 : 000D3000-000D3FFF (844kB-848kB) WB rdIO wrIO
MTRR 5 Range 4 : 000D4000-000D4FFF (848kB-852kB) WB rdIO wrIO
MTRR 5 Range 5 : 000D5000-000D5FFF (852kB-856kB) WB rdIO wrIO
MTRR 5 Range 6 : 000D6000-000D6FFF (856kB-860kB) WB rdIO wrIO
MTRR 5 Range 7 : 000D7000-000D7FFF (860kB-864kB) WB rdIO wrIO
MTRR 6 Range 0 : 000D8000-000D8FFF (864kB-868kB) UC rdIO wrIO
MTRR 6 Range 1 : 000D9000-000D9FFF (868kB-872kB) UC rdIO wrIO
MTRR 6 Range 2 : 000DA000-000DAFFF (872kB-876kB) UC rdIO wrIO
MTRR 6 Range 3 : 000DB000-000DBFFF (876kB-880kB) UC rdIO wrIO
MTRR 6 Range 4 : 000DC000-000DCFFF (880kB-884kB) UC rdIO wrIO
MTRR 6 Range 5 : 000DD000-000DDFFF (884kB-888kB) UC rdIO wrIO
MTRR 6 Range 6 : 000DE000-000DEFFF (888kB-892kB) UC rdIO wrIO
MTRR 6 Range 7 : 000DF000-000DFFFF (892kB-896kB) UC rdIO wrIO
MTRR 7 Range 0 : 000E0000-000E0FFF (896kB-900kB) UC rdIO wrIO
MTRR 7 Range 1 : 000E1000-000E1FFF (900kB-904kB) UC rdIO wrIO
MTRR 7 Range 2 : 000E2000-000E2FFF (904kB-908kB) UC rdIO wrIO
MTRR 7 Range 3 : 000E3000-000E3FFF (908kB-912kB) UC rdIO wrIO
MTRR 7 Range 4 : 000E4000-000E4FFF (912kB-916kB) UC rdIO wrIO
MTRR 7 Range 5 : 000E5000-000E5FFF (916kB-920kB) UC rdIO wrIO
MTRR 7 Range 6 : 000E6000-000E6FFF (920kB-924kB) UC rdIO wrIO
MTRR 7 Range 7 : 000E7000-000E7FFF (924kB-928kB) UC rdIO wrIO
MTRR 8 Range 0 : 000E8000-000E8FFF (928kB-932kB) UC rdIO wrIO
MTRR 8 Range 1 : 000E9000-000E9FFF (932kB-936kB) UC rdIO wrIO
MTRR 8 Range 2 : 000EA000-000EAFFF (936kB-940kB) UC rdIO wrIO
MTRR 8 Range 3 : 000EB000-000EBFFF (940kB-944kB) UC rdIO wrIO
MTRR 8 Range 4 : 000EC000-000ECFFF (944kB-948kB) UC rdIO wrIO
MTRR 8 Range 5 : 000ED000-000EDFFF (948kB-952kB) UC rdIO wrIO
MTRR 8 Range 6 : 000EE000-000EEFFF (952kB-956kB) UC rdIO wrIO
MTRR 8 Range 7 : 000EF000-000EFFFF (956kB-960kB) UC rdIO wrIO
MTRR 9 Range 0 : 000F0000-000F0FFF (960kB-964kB) UC rdIO wrIO
MTRR 9 Range 1 : 000F1000-000F1FFF (964kB-968kB) UC rdIO wrIO
MTRR 9 Range 2 : 000F2000-000F2FFF (968kB-972kB) UC rdIO wrIO
MTRR 9 Range 3 : 000F3000-000F3FFF (972kB-976kB) UC rdIO wrIO
MTRR 9 Range 4 : 000F4000-000F4FFF (976kB-980kB) UC rdIO wrIO
MTRR 9 Range 5 : 000F5000-000F5FFF (980kB-984kB) UC rdIO wrIO
MTRR 9 Range 6 : 000F6000-000F6FFF (984kB-988kB) UC rdIO wrIO
MTRR 9 Range 7 : 000F7000-000F7FFF (988kB-992kB) UC rdIO wrIO
MTRR 10 Range 0 : 000F8000-000F8FFF (992kB-996kB) UC rdIO wrIO
MTRR 10 Range 1 : 000F9000-000F9FFF (996kB-1000kB) UC rdIO wrIO
MTRR 10 Range 2 : 000FA000-000FAFFF (1000kB-1004kB) UC rdIO wrIO
MTRR 10 Range 3 : 000FB000-000FBFFF (1004kB-1008kB) UC rdIO wrIO
MTRR 10 Range 4 : 000FC000-000FCFFF (1008kB-1012kB) UC rdIO wrIO
MTRR 10 Range 5 : 000FD000-000FDFFF (1012kB-1016kB) UC rdIO wrIO
MTRR 10 Range 6 : 000FE000-000FEFFF (1016kB-1020kB) UC rdIO wrIO
MTRR 10 Range 7 : 000FF000-000FFFFF (1020kB-1024kB) UC rdIO wrIO

PAT Settings
PAT 0 : WB
PAT 1 : WC
PAT 2 : UC-
PAT 3 : UC
PAT 4 : WB
PAT 5 : WC
PAT 6 : UC-
PAT 7 : UC

Performance Tips
Tip 210 : Mainboard supports faster CPUs, so the CPU can be upgraded when needed.
Notice 224 : SMBIOS/DMI information may be inaccurate.
Tip 2 : Double-click tip or press Enter while a tip is selected for more information about the tip.


PM 1.7:
SiSoftware Sandra

Processor
Model : Intel(R) Pentium(R) M processor 1.70GHz
Speed : 1.70GHz
Performance Rating : PR2040 (estimated)
Type : Mobile
Package : FC µPGA479M
Rated Speed/FSB : 1700MHz / 4x 100MHz
Multiplier : 17/1x
Minimum/Maximum Multiplier : 6/1x / 17/1x
Generation : G6
Name : P3D (Dothan) Pentium M 90nm 1.7+GHz 0.9-1.5V
Revision/Stepping : D / 6 (16)
Stepping Mask : B1
Microcode : MU06D617
Core Voltage Rating : 1.340V
Maximum Physical / Virtual Addressing : 32-bit / 32-bit
Native Page Size : 4kB
Part Number : To Be Filled By O.E.M.
Asset Tag : To Be Filled By O.E.M.
Serial Number : To Be Filled By O.E.M.

Co-Processor (FPU)
Type : Built-in
Revision/Stepping : D / 6 (16)

Processor Cache(s)
Internal Data Cache : 32kB Synchronous, Write-Back, 8-way set, 64 byte line size
Internal Instruction Cache : 32kB Synchronous, Write-Back, 8-way set, 64 byte line size
L2 On-board Cache : 2MB ECC Synchronous, ATC, 8-way set, 64 byte line size
L2 Cache Multiplier : 1/1x  (1700MHz)

Upgradeability
Socket/Slot : CPU 1
Upgrade Interface : Other
Supported Speed(s) : 1.70GHz+

Processor Power Management
Processor Throttling Enabled : Yes
Throttle Range : 13% - 100%

Features
FPU - Co-Processor Built-in : Yes
VME - Virtual Mode Extensions : Yes
DE - Debugging Extension : Yes
PSE - Page Size Extension : Yes
TSC - Time Stamp Counter : Yes
MSR - Model Specific Registers : Yes
PAE - Physical Address Extension : No
MCE - Machine Check Exception : Yes
CX8 - Compare & Exchange Instruction : Yes
APIC - Local APIC Built-in : Yes
SEP - Fast System Call : Yes
MTRR - Memory Type Range Registers : Yes
PGE - Page Global Enable : Yes
MCA - Machine Check Architecture : Yes
PAT - Page Attribute Table : Yes
PSE36 - 36-bit Page Size Extension : No
PSN - Unique Serial Number : No
CLF - Cache Line Flush Support : Yes
DS - Debug Trace & EMON Store : Yes
ACPI - Software Clock Control : Yes
(W)MMX Technology : Yes
FXSR - Fast Float Save & Restore : Yes
SSE Technology : Yes
SSE2 Technology : Yes
SS - Self Snoop : Yes
HTT - Hyper-Threading Technology : No
TM - Thermal Monitor : Yes
PBE - Pending Break Enable : Yes
SSE3 Technology : No
MON - Monitor/MWait : No
DSCPL - CPL qualified Debug Store : No
EST - Enhanced SpeedStep Technology : Yes
TM2 - Thermal Monitor 2 : Yes
DAZ - Denormals Are Zero : Yes

Advanced Settings
L2 Cacheable Range : 4GB
Data Error Checking : No
IO Queue Depth : 8 request(s)
EST - Enhanced SpeedStep Technology : Yes
TM - Thermal Monitor : Yes
TM2 - Thermal Monitor 2 : No

Machine Check Architecture Settings
Number of Reporting Banks : 5 bank(s)

Variable Range MTRR Settings
MTRR 0 : 00000000-3FFFFFFF (0MB-1024MB) WB

Fixed Range MTRR Settings
MTRR 0 Range 0 : 00000000-0000FFFF (0kB-64kB) WB
MTRR 0 Range 1 : 00010000-0001FFFF (64kB-128kB) WB
MTRR 0 Range 2 : 00020000-0002FFFF (128kB-192kB) WB
MTRR 0 Range 3 : 00030000-0003FFFF (192kB-256kB) WB
MTRR 0 Range 4 : 00040000-0004FFFF (256kB-320kB) WB
MTRR 0 Range 5 : 00050000-0005FFFF (320kB-384kB) WB
MTRR 0 Range 6 : 00060000-0006FFFF (384kB-448kB) WB
MTRR 0 Range 7 : 00070000-0007FFFF (448kB-512kB) WB
MTRR 1 Range 0 : 00080000-00083FFF (512kB-528kB) WB
MTRR 1 Range 1 : 00084000-00087FFF (528kB-544kB) WB
MTRR 1 Range 2 : 00088000-0008BFFF (544kB-560kB) WB
MTRR 1 Range 3 : 0008C000-0008FFFF (560kB-576kB) WB
MTRR 1 Range 4 : 00090000-00093FFF (576kB-592kB) WB
MTRR 1 Range 5 : 00094000-00097FFF (592kB-608kB) WB
MTRR 1 Range 6 : 00098000-0009BFFF (608kB-624kB) WB
MTRR 1 Range 7 : 0009C000-0009FFFF (624kB-640kB) WB
MTRR 2 Range 0 : 000A0000-000A3FFF (640kB-656kB) UC
MTRR 2 Range 1 : 000A4000-000A7FFF (656kB-672kB) UC
MTRR 2 Range 2 : 000A8000-000ABFFF (672kB-688kB) UC
MTRR 2 Range 3 : 000AC000-000AFFFF (688kB-704kB) UC
MTRR 2 Range 4 : 000B0000-000B3FFF (704kB-720kB) UC
MTRR 2 Range 5 : 000B4000-000B7FFF (720kB-736kB) UC
MTRR 2 Range 6 : 000B8000-000BBFFF (736kB-752kB) UC
MTRR 2 Range 7 : 000BC000-000BFFFF (752kB-768kB) UC
MTRR 3 Range 0 : 000C0000-000C0FFF (768kB-772kB) UC
MTRR 3 Range 1 : 000C1000-000C1FFF (772kB-776kB) UC
MTRR 3 Range 2 : 000C2000-000C2FFF (776kB-780kB) UC
MTRR 3 Range 3 : 000C3000-000C3FFF (780kB-784kB) UC
MTRR 3 Range 4 : 000C4000-000C4FFF (784kB-788kB) UC
MTRR 3 Range 5 : 000C5000-000C5FFF (788kB-792kB) UC
MTRR 3 Range 6 : 000C6000-000C6FFF (792kB-796kB) UC
MTRR 3 Range 7 : 000C7000-000C7FFF (796kB-800kB) UC
MTRR 4 Range 0 : 000C8000-000C8FFF (800kB-804kB) UC
MTRR 4 Range 1 : 000C9000-000C9FFF (804kB-808kB) UC
MTRR 4 Range 2 : 000CA000-000CAFFF (808kB-812kB) UC
MTRR 4 Range 3 : 000CB000-000CBFFF (812kB-816kB) UC
MTRR 4 Range 4 : 000CC000-000CCFFF (816kB-820kB) UC
MTRR 4 Range 5 : 000CD000-000CDFFF (820kB-824kB) UC
MTRR 4 Range 6 : 000CE000-000CEFFF (824kB-828kB) UC
MTRR 4 Range 7 : 000CF000-000CFFFF (828kB-832kB) UC
MTRR 5 Range 0 : 000D0000-000D0FFF (832kB-836kB) UC
MTRR 5 Range 1 : 000D1000-000D1FFF (836kB-840kB) UC
MTRR 5 Range 2 : 000D2000-000D2FFF (840kB-844kB) UC
MTRR 5 Range 3 : 000D3000-000D3FFF (844kB-848kB) UC
MTRR 5 Range 4 : 000D4000-000D4FFF (848kB-852kB) UC
MTRR 5 Range 5 : 000D5000-000D5FFF (852kB-856kB) UC
MTRR 5 Range 6 : 000D6000-000D6FFF (856kB-860kB) UC
MTRR 5 Range 7 : 000D7000-000D7FFF (860kB-864kB) UC
MTRR 6 Range 0 : 000D8000-000D8FFF (864kB-868kB) UC
MTRR 6 Range 1 : 000D9000-000D9FFF (868kB-872kB) UC
MTRR 6 Range 2 : 000DA000-000DAFFF (872kB-876kB) UC
MTRR 6 Range 3 : 000DB000-000DBFFF (876kB-880kB) UC
MTRR 6 Range 4 : 000DC000-000DCFFF (880kB-884kB) UC
MTRR 6 Range 5 : 000DD000-000DDFFF (884kB-888kB) UC
MTRR 6 Range 6 : 000DE000-000DEFFF (888kB-892kB) UC
MTRR 6 Range 7 : 000DF000-000DFFFF (892kB-896kB) UC
MTRR 7 Range 0 : 000E0000-000E0FFF (896kB-900kB) WT
MTRR 7 Range 1 : 000E1000-000E1FFF (900kB-904kB) WT
MTRR 7 Range 2 : 000E2000-000E2FFF (904kB-908kB) WT
MTRR 7 Range 3 : 000E3000-000E3FFF (908kB-912kB) WT
MTRR 7 Range 4 : 000E4000-000E4FFF (912kB-916kB) WT
MTRR 7 Range 5 : 000E5000-000E5FFF (916kB-920kB) WT
MTRR 7 Range 6 : 000E6000-000E6FFF (920kB-924kB) WT
MTRR 7 Range 7 : 000E7000-000E7FFF (924kB-928kB) WT
MTRR 8 Range 0 : 000E8000-000E8FFF (928kB-932kB) WT
MTRR 8 Range 1 : 000E9000-000E9FFF (932kB-936kB) WT
MTRR 8 Range 2 : 000EA000-000EAFFF (936kB-940kB) WT
MTRR 8 Range 3 : 000EB000-000EBFFF (940kB-944kB) WT
MTRR 8 Range 4 : 000EC000-000ECFFF (944kB-948kB) WT
MTRR 8 Range 5 : 000ED000-000EDFFF (948kB-952kB) WT
MTRR 8 Range 6 : 000EE000-000EEFFF (952kB-956kB) WT
MTRR 8 Range 7 : 000EF000-000EFFFF (956kB-960kB) WT
MTRR 9 Range 0 : 000F0000-000F0FFF (960kB-964kB) WP
MTRR 9 Range 1 : 000F1000-000F1FFF (964kB-968kB) WP
MTRR 9 Range 2 : 000F2000-000F2FFF (968kB-972kB) WP
MTRR 9 Range 3 : 000F3000-000F3FFF (972kB-976kB) WP
MTRR 9 Range 4 : 000F4000-000F4FFF (976kB-980kB) WP
MTRR 9 Range 5 : 000F5000-000F5FFF (980kB-984kB) WP
MTRR 9 Range 6 : 000F6000-000F6FFF (984kB-988kB) WP
MTRR 9 Range 7 : 000F7000-000F7FFF (988kB-992kB) WP
MTRR 10 Range 0 : 000F8000-000F8FFF (992kB-996kB) WP
MTRR 10 Range 1 : 000F9000-000F9FFF (996kB-1000kB) WP
MTRR 10 Range 2 : 000FA000-000FAFFF (1000kB-1004kB) WP
MTRR 10 Range 3 : 000FB000-000FBFFF (1004kB-1008kB) WP
MTRR 10 Range 4 : 000FC000-000FCFFF (1008kB-1012kB) WP
MTRR 10 Range 5 : 000FD000-000FDFFF (1012kB-1016kB) WP
MTRR 10 Range 6 : 000FE000-000FEFFF (1016kB-1020kB) WP
MTRR 10 Range 7 : 000FF000-000FFFFF (1020kB-1024kB) WP

PAT Settings
PAT 0 : WB
PAT 1 : WC
PAT 2 : UC-
PAT 3 : UC
PAT 4 : WB
PAT 5 : WC
PAT 6 : UC-
PAT 7 : UC

Performance Tips
Notice 224 : SMBIOS/DMI information may be inaccurate.
Tip 2 : Double-click tip or press Enter while a tip is selected for more information about the tip.


Так что "кэш" (наличные значитси) решит все ваши проблемы .
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: тест с матрицами - 2
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.10.05 18:22
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Pentium IV 1600 MHz.


Какого размера кэш? Если не знашь, то зайди сюда http://www.sisoftware.net/ и скачай Сандру. В ней есть подробнейшая информация о процессоре.

PD>А может, попробовать Size 2000 — 3000 ? Интересно, что будет. Дело не в размере ведь...


Боюсь время увеличится просто из-за квадратичного алгоритма.

Ладно... попробуем... Итак на 2000 под дотнетом на AMD64 время составило:
Size: 2000 Time: 00:03:22.9137771

C++^
Size: 2000 Time: 137

то есть 2.28 минуты. Данную разницу уже можно скорее списать на проверки выхода за границы массивов, так как это приблизительно те же самые 25%.

Тоже самое но на PM 1.7 Ггц C#:
Size: 2000 Time: 00:01:40.1815673

C++:
Size: 2000 Time: 74

то есть 1.23 минуты.

PD>И еще вопрос. А С++ на твоей машине для этих же размеров что дает ?

А что он еще даст если даже на 1000 разница не велика?
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: тест с матрицами - 2
От: GlebZ Россия  
Дата: 02.10.05 21:23
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, GlebZ, Вы писали:


GZ>>У меня PIV(2Г) — тоже самое, квадратичная последовательность. А вообще, именно перемножением матриц меряют эффективность сопроцессора.


VD>Какой еще в 21 веке сопроцессор? Если ты о плавающей точке, то в этом тесте ее вообще не используется. Так что это скорее тест на кэш процессора.

Ну да правда? Посмотри дизассемблер через cordbg с оптимизацией. У меня на Net 2.0 и movq встречаются.

С уважением, Gleb.
Re[2]: тест с матрицами - 2
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.10.05 21:24
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Здравствуйте, Pavel Dvorkin, Вы писали:


PD>Пропустил я сейчас эти 2 теста для nSize = 1000 на других машинах


PD>Pentium IV, 1.8 GHz, 736 Mb

PD>С++ 16 сек.
PD>C# 140 сек

Что-то больно сказочный результат. 16 секунд дохлятина вроде P4 1.8 выжать не должна. У меня на 3-х гигогерцовом процессоре результат был 13 секунд.

PD>Pentium IV, 2.8 GHz, 1 Gb


PD>C++ 10 сек

PD>C# 18 сек.

PD>Таким образом, для машин с частотой <= 2GHz имеет место то, о чем я писал в исходном сообщении. Для машин с частотой порядка 3 GHz — то, о чем писал VladD2 и др.


Гигогерцы тут не причем. Влияние оказывает исключительно кэш и его характеристики. На моем PM 1.7 (напомню, что по сути это Пентиум 3 у которого 2 метра кэша) получается 11 и 9 секунд соотвественно.

PD>Попробовал для nSize = 3000, на Pentium IV, 2.8 GHz, 1 Gb


PD>С++ 296 сек.

PD>С# 887 сек.

А это уже совсем сказочный результат. Тут данные уже должны были по любому выйти за кэш.

PD>Помолился я богу и поставил nSize = 5000. Делать мне сегодня нечего, у нас олимпиада проходит, до конца ее еще 1.5 часа, мое вмешательство не требуется, все автоматизировано


PD>С++ 2346 сек.


PD>Для С# было ясно, что результатов я не дождусь. Поэтому изменил самый внешний цикл, поставив там 50 вместо 5000. Время для этого теста 124 сек. Так что на полный тест ориентировочное время 12400 сек.


Совершенно бещссмысленные рассуждения. На 5000 оба теста вылетят из кэша и подение производительности будет приблизительно одинаковое. Разница должна составить процентов 20. У меня уже за 1000 на П4 наблюдается совершенно одинаковый прогресс.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: тест с матрицами - 2
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.10.05 22:22
Оценка:
Здравствуйте, GlebZ, Вы писали:

VD>>Какой еще в 21 веке сопроцессор? Если ты о плавающей точке, то в этом тесте ее вообще не используется. Так что это скорее тест на кэш процессора.

GZ>Ну да правда?

Сопроцессоры начиная с 486 DX встрены в процессор и являются его неотемлемой частью.

GZ>Посмотри дизассемблер через cordbg с оптимизацией. У меня на Net 2.0 и movq встречаются.


movq — это, если мне не изменяет память, команда ММХ. Причем совершенно целочисленная — пересылка данных между регистрами и памятью.

Еще раз повторяю. Тест не содержит плавающей точки в принципе.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: тест с матрицами - 2
От: Pavel Dvorkin Россия  
Дата: 03.10.05 03:35
Оценка:
Здравствуйте, VladD2, Вы писали:


VD>то есть нармальная квадратичная зависимость.


Да здравствует Net Framework, который для кубического алгоритма обеспечивает квадратичную зависимость!

P.S. А нельзя ли с его помощью NP-полные задачи свести к полиномиальным ?
With best regards
Pavel Dvorkin
Re[6]: тест с матрицами - 2
От: Pavel Dvorkin Россия  
Дата: 03.10.05 03:36
Оценка:
Здравствуйте, Alexey Axyonov, Вы писали:

AA>Как это не сказал?


AA>

Athlon 64 3500+ (x86 режим) 512k L2 cache


Сорри, виноват.
With best regards
Pavel Dvorkin
Re[6]: тест с матрицами - 2
От: Pavel Dvorkin Россия  
Дата: 03.10.05 03:38
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Испытал этот тест на значительно более медленном процессор PM 1.7 Ггц.

VD>Результат получился 11 секунд у догтнетного теста и 9 у С++-ного.

VD>Единственное что есть у это "более медленного" процессора — это 2 метровый кэш L2.


VD>Так что теперь я почти уверен, что дело именно в размере кэша.


А почему тогда этот маленький кэш не влияет на C++ ?
With best regards
Pavel Dvorkin
Re[6]: тест с матрицами - 2
От: Pavel Dvorkin Россия  
Дата: 03.10.05 03:40
Оценка:
Здравствуйте, VladD2, Вы писали:


VD>Еще раз повторяю. Тест не содержит плавающей точки в принципе.


Я что-то плохо понимаю. Там же матрицы из float. Как же умножение их элементов идет, эмуляцией, что ли, как в добрые DOS-овскме времена ?
With best regards
Pavel Dvorkin
Re[4]: тест с матрицами - 2
От: Pavel Dvorkin Россия  
Дата: 03.10.05 03:44
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Pavel Dvorkin, Вы писали:


PD>>Pentium IV 1600 MHz.


VD>Какого размера кэш?


256 Кб
With best regards
Pavel Dvorkin
Re[3]: тест с матрицами - 2
От: Pavel Dvorkin Россия  
Дата: 03.10.05 03:48
Оценка:
Здравствуйте, VladD2, Вы писали:


PD>>Pentium IV, 1.8 GHz, 736 Mb

PD>>С++ 16 сек.
PD>>C# 140 сек

VD>Что-то больно сказочный результат. 16 секунд дохлятина вроде P4 1.8 выжать не должна. У меня на 3-х гигогерцовом процессоре результат был 13 секунд.


Так ведь такой же результат был и на моем P4 1.6. Дает. Сказочный или нет, а дает.


PD>>Попробовал для nSize = 3000, на Pentium IV, 2.8 GHz, 1 Gb


PD>>С++ 296 сек.

PD>>С# 887 сек.

VD>А это уже совсем сказочный результат. Тут данные уже должны были по любому выйти за кэш.


Влад, я пишу то, что вижу. Сказочный или нет — не знаю.



VD>Совершенно бещссмысленные рассуждения. На 5000 оба теста вылетят из кэша и подение производительности будет приблизительно одинаковое. Разница должна составить процентов 20. У меня уже за 1000 на П4 наблюдается совершенно одинаковый прогресс.


Чем рассуждать о бессмысленности рассуждений, приведи лучше данные, какие у тебя получились на 5000. Для C++ и C#. Чтобы ты не говорил, что я предлагаю тебе четырехчасовой тест, сделай как и я — внешний цикл до 50, внутренние до 5000 и результат умножь на 100.
With best regards
Pavel Dvorkin
Re[4]: тест с матрицами - 2
От: Pavel Dvorkin Россия  
Дата: 03.10.05 03:50
Оценка:
Здравствуйте, Alexey Axyonov, Вы писали:

AA>Time 1000 = 18,20987

AA>Time 2000 = 214,3378

Не понял. Это C++ или C# ? И все же, просьба — проверь на 5000. На обоих языках. Внешний цикл до 50, внутренние до 5000 и результат умножь на 100.
With best regards
Pavel Dvorkin
Re[2]: тест с матрицами - 2
От: Pavel Dvorkin Россия  
Дата: 03.10.05 03:53
Оценка:
Здравствуйте, GlebZ, Вы писали:

GZ>[q]

GZ>There is a minor limitation in the current JIT compiler regarding the graceful elimination of bound checks on rectangular arrays, hence accessing a relatively small two-dimensional jagged array sequentially (row-by-row) might be quicker than accessing a two-dimensional rectangular array on some machines.

Это так и есть. Если массив b расположить по столбцам, то в итоге быстрее, чем для двумерных массивов.


GZ>Jagged arrays perform miserably in cases when elements are accessed diagonally or randomly because of their poor locality.


А это к моему случаю не относится. Я не прохожу элементы diagonally or randomly.
With best regards
Pavel Dvorkin
Re[8]: тест с матрицами - 2
От: GlebZ Россия  
Дата: 03.10.05 07:31
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>Здравствуйте, GlebZ, Вы писали:

S> Вообще то влад ответил http://www.rsdn.ru/Forum/Message.aspx?mid=1412468&amp;only=1
Автор: VladD2
Дата: 30.09.05

S>обычный write barier. Да и по поведению в 1.1 vs 2.0 очень похоже.
Не понял, и где разница?здесь
Автор: Alexey Axyonov
Дата: 02.10.05


С уважением, Gleb.
Re[6]: тест с матрицами - 2
От: GlebZ Россия  
Дата: 03.10.05 08:48
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Сопроцессоры начиная с 486 DX встрены в процессор и являются его неотемлемой частью.

Кто бы возражал. Но инструкции сопроцессора ведь остались.

GZ>>Посмотри дизассемблер через cordbg с оптимизацией. У меня на Net 2.0 и movq встречаются.


VD>movq — это, если мне не изменяет память, команда ММХ. Причем совершенно целочисленная — пересылка данных между регистрами и памятью.

Это я так, для примера Просто не ожидал встретить MMX.

VD>Еще раз повторяю. Тест не содержит плавающей точки в принципе.

Это еще почему. Как тебе такое:
 [020b] fmul        dword ptr [eax+ebp*4+8]
 [020f] fadd        dword ptr [esp+4]
 [0213] fstp        dword ptr [esp+4]


С уважением, Gleb.
Re[3]: тест с матрицами - 2
От: GlebZ Россия  
Дата: 03.10.05 09:14
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Здравствуйте, GlebZ, Вы писали:


PD>А это к моему случаю не относится. Я не прохожу элементы diagonally or randomly.

Какая разница как это называется. Ты обращаешься к разным массивам. Значения распределены по месту и непоследовательны. Можно считать что диагональ обладает такими же свойствами.
 temp += a[i][k] * b[k][j];


С уважением, Gleb.
Re[5]: тест с матрицами - 2
От: Alexey Axyonov Украина  
Дата: 03.10.05 09:49
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Здравствуйте, Alexey Axyonov, Вы писали:


AA>>Time 1000 = 18,20987

AA>>Time 2000 = 214,3378

PD>Не понял. Это C++ или C# ? И все же, просьба — проверь на 5000. На обоих языках. Внешний цикл до 50, внутренние до 5000 и результат умножь на 100.


Это был C#. Сегодня попробую запустить на AthlonXP 2500+ 512k cache.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Re[7]: тест с матрицами - 2
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.10.05 00:30
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>А почему тогда этот маленький кэш не влияет на C++ ?


Пмяти меньше жрет. Вот и вылетает из кэша чаще. А П4 очень не любит сбороса кэша. В итоге такая разница.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: тест с матрицами - 2
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.10.05 00:30
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Я что-то плохо понимаю. Там же матрицы из float. Как же умножение их элементов идет, эмуляцией, что ли, как в добрые DOS-овскме времена ?


Ой, это я что-то напутал. Что-то в друг вголову засело, что массивы бвли целочисленные. Конечно массивы float... В общем фигню говорю.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: тест с матрицами - 2
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.10.05 00:30
Оценка:
Здравствуйте, GlebZ, Вы писали:

VD>>Еще раз повторяю. Тест не содержит плавающей точки в принципе.

GZ>Это еще почему. Как тебе такое:
GZ>
GZ> [020b] fmul        dword ptr [eax+ebp*4+8]
GZ> [020f] fadd        dword ptr [esp+4]
GZ> [0213] fstp        dword ptr [esp+4]
GZ>


Да это я что-то брежу. Не обратил внимания, что массиы то float.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: тест с матрицами - 2
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.10.05 00:30
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>256 Кб


Ну, вот и смотри зависимость. Самый быстрый оказался Pentium M 1.7 Ггц. Частота у него самая дохлая, но кэш метровый.
Воторой к финишу пришел AMD64 с реальной частотой 2.2 Ггц. Частота у него выше, но кэш полуметровый, т.е. в два раза меньший. Третьим к финишу пришел Pentium 4 3.0 Ггц. Частота у него заоблочная, а кэш четверть метра. При этом именно Pentium 4 очень боится сбросов кэша и конвеера команд, так как имеет очень длинный конвеер и его перезаполнение дико дорого. Видимо после какого-то раммера массива кэш и конвеер начинает сбрасываться и приходит приплызд.

По хорошему нужно бы поиграться с настройками компилятора С++. Задать ему генерацию кода под SSE/MMX и потом наоборот для Pentium (1). Ну, чтобы поглядеть какие при этом изменения в производительности происходят.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: тест с матрицами - 2
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.10.05 00:30
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Здравствуйте, VladD2, Вы писали:



VD>>то есть нармальная квадратичная зависимость.


PD>Да здравствует Net Framework, который для кубического алгоритма обеспечивает квадратичную зависимость!


Не да здравсвтвует Интел который умудрился сделать процессор который хуже чем предыдущие поколения.

PD>P.S. А нельзя ли с его помощью NP-полные задачи свести к полиномиальным ?


Пробуй. Как известно терпение и труд все перепрут.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: тест с матрицами - 2
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.10.05 00:30
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

VD>>Что-то больно сказочный результат. 16 секунд дохлятина вроде P4 1.8 выжать не должна. У меня на 3-х гигогерцовом процессоре результат был 13 секунд.


PD>Так ведь такой же результат был и на моем P4 1.6. Дает. Сказочный или нет, а дает.


Ага. А еще почти такой же на моем P4 3.0. Не кажется странным?

VD>>А это уже совсем сказочный результат. Тут данные уже должны были по любому выйти за кэш.


PD>Влад, я пишу то, что вижу. Сказочный или нет — не знаю.


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

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

PD>Чем рассуждать о бессмысленности рассуждений, приведи лучше данные, какие у тебя получились на 5000. Для C++ и C#. Чтобы ты не говорил, что я предлагаю тебе четырехчасовой тест, сделай как и я — внешний цикл до 50, внутренние до 5000 и результат умножь на 100.


Да, мне пофигу что компьютеры делают когда меня нет. Ладно, запустил тут на P4 (на других процессорах разница в процентах от увеличения матрицы, после 800, не изменяется).
Итак 5000 на P4 C#:
7:33:45 (короче 7 с половиной часов :)) ).

С++:
04:12:45 (то есть 15165 сек).

То есть разница менее чем в два раза. Так что не знаю что там, у тебя получается. Конечно 2 раза это не 20 процентов, но и не 14 раз все же.
... << RSDN@Home 1.2.0 alpha rev. 618>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: тест с матрицами - 2
От: Pavel Dvorkin Россия  
Дата: 04.10.05 05:14
Оценка:
Здравствуйте, VladD2, Вы писали:


PD>>Чем рассуждать о бессмысленности рассуждений, приведи лучше данные, какие у тебя получились на 5000. Для C++ и C#. Чтобы ты не говорил, что я предлагаю тебе четырехчасовой тест, сделай как и я — внешний цикл до 50, внутренние до 5000 и результат умножь на 100.


VD>Да, мне пофигу что компьютеры делают когда меня нет. Ладно, запустил тут на P4 (на других процессорах разница в процентах от увеличения матрицы, после 800, не изменяется).

VD>Итак 5000 на P4

C#:
VD>
VD>7:33:45 (короче 7 с половиной часов :)) ).
VD>

VD>С++:
VD>[c#]
VD>04:12:45 (то есть 15165 сек).

А у меня на P4-2.8GHz — 2346 сек C++ и 12400.

(см.http://www.rsdn.ru/Forum/Message.aspx?mid=1413234&amp;only=1
Автор: Pavel Dvorkin
Дата: 02.10.05
)

Какая частота и кэш у этого P4 ? И можешь ли пропустить на Athlon-64 ?
With best regards
Pavel Dvorkin
Re[9]: тест с матрицами - 2
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 04.10.05 14:57
Оценка:
Здравствуйте, GlebZ, Вы писали:

GZ>Здравствуйте, Serginio1, Вы писали:


S>>Здравствуйте, GlebZ, Вы писали:

S>> Вообще то влад ответил http://www.rsdn.ru/Forum/Message.aspx?mid=1412468&amp;only=1
Автор: VladD2
Дата: 30.09.05



Для сравнения запустил тот же код на VC++ 8.0 получилось 13 секунд. Так что не все такк страшно, как казлось.

В дебаге вообще 17 секунд, так что можно считать, что МС таки доводит джит до уровня С++-ного компилятора.



S>>обычный write barier. Да и по поведению в 1.1 vs 2.0 очень похоже.

GZ>Не понял, и где разница?здесь
Автор: Alexey Axyonov
Дата: 02.10.05


GZ>С уважением, Gleb.
и солнце б утром не вставало, когда бы не было меня
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.