· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ZEN —› Измерение скорости записи/чтения в ОЗУ под ДОС

. 1 . 2 . >>

Посл.отвђт Сообщенiе


Дата: Ноя 14, 2003 19:44:46 · Поправил: TriCK

В рамкал лабораторной работы в универе необходимо написать сабж.
Машины стоят только с Досом и писать надо исключительно на ассемблере.
Подкинте идеи для реализации...
Пока есть несколько доводов.
1.Необходимо писать/читать большие блоки памяти и засекать время.
2.640 килов основной памяти будет явно мало для адекватного отображения скорости при дискретизации таймера в 18.2Hz.
3. а)Надо или задействовать верхнюю память
б)или задействовать что-то типа APIC и выставить на таймере около 1кHz и использовать те же 640кб.

При пункте а) я думаю, что использовать досовские или биосовые функции и прерывания для адресации выше 1мб будет не целесообразно, надо в память писать напрямую. Но что б это делать, нужно переходить в защищённый режим. Но правильно ли это и стоит ли оно того?!

Возможно, и мои соображение кое-где не верны...Поделитесь вашими соображениями...Направьте, в каком направлении нуна копать..


Дата: Ноя 15, 2003 17:20:15

рекомендую книгу криса касперски

Техника оптимизачии программ :
эффективное использование памяти

она конечно на Си но в конце есть АСМ

и возьми код из Зубкова для обрамления проги
вполне грамотный мануал ведь по x86


Дата: Ноя 15, 2003 17:23:04

да кстати на каких машинах будешь испытывать?
на EDO + 586 памяти выгодно читать последовательно
а на SDRAM + 686 - с шагом 8*n Кб +/- 2Кб


Дата: Ноя 15, 2003 23:52:09

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

Спецификой работы чего объясняется потребность использования разной последовательности для разных типов памяти?
Сдавать буду на первых пнях+EDO...Но хотелось бы и универсальное, что б можно было от EDO до RamBus и DDR.


Дата: Ноя 16, 2003 00:02:54

Нашёл книгу Касперски только в магазине:(


Дата: Ноя 16, 2003 17:05:19 · Поправил: Narkomanius

это особенности SDRAMа у которого на карточке 4 банка чередующиеся через 2Кб
и поэтому читать их последовательно невыгодно изза латентности BUI проца+чипсета+памяти+обратно чипсета+BUI проца
а с шагом - на шине оказываются несколько запросов котрые попадают в разные банки и поэтому пока один банк изза латентности еще не ответил идет передача со сторого банка


Дата: Ноя 16, 2003 20:00:02 · Поправил: Narkomanius

Мля мой привет автору сайта по поводу кодировок и куча мату мозилле 1.4

берем код из зубкова стр 493-497
на 496 странице после Вывод на экран
и до слеующего комента пише всой код

И вот еще тест от миня на латентност памяти
работает ТОЛЬКО на 586 и кое как наК6
врет на 686 и просто порет чушь на П4 или Атлон
это тест чтения для записи меняем все
mov ebp,dword ptr [...] на
mov dword ptr [..],ebp
но при это имеют смысл только тайминги А и С
эти тайминги времена в тактах проца
A от обращения до появления данных в кэше
B от обращения до заполнения строки кэша
C то же что и А но при открытой странице
D то же что и В ------------------------
С=А и D=В если чипсет закрывает страницу после завершения пакетного цикла


.data
;Это нам не надо - чисто временная переменная
time_rdtsc:
dd 0,0
;а вот это тайминги - читай только нижние 32 бита верхние все равно 0
time_a:
dd 0,0
time_b:
dd 0,0
time_c:
dd 0,0
time_d:
dd 0,0
.text

__call_here__:
pushad
mov esi,0x100000
mov edi,0x800000
cli
;сносим кэш чтоб не мешал
wbinvd
;два цикла чтоб на результат не влияли непопадания кода в кэшь
mov esi,2
rdtsc_loop:
rdtsc
mov ecx,eax
mov ebx,edx
rdtsc
sub eax,ecx
sbb edx,ebx
dec esi
jnz short rdtsc_loop
;edx=0 в eax=t(rdtsc)+1
mov dword ptr [time_rdtsc],eax
mov dword ptr [time_rdtsc+4],edx
;16 циклов такакак теперь мы обращаемся в память и не хотим столкнуться с предвыборкой кода
mov esi,16
mov edi,0x100000

dram_latency_loop:
rdtsc
mov ebx,eax
mov ecx,edx
mov ebp,dword ptr [edi]
rdtsc
sub eax,ebx
sbb edx,ecx
sub eax,dword ptr [time_rdtsc]
sbb eax,dword ptr [time_rdtsc+4]
;8 Килобайт чтоб точно попасть в закрытую страницу
add edi,8*1024
;ждать завершения пакетного цикла чтоб не влиять на следующую итерацию
mov ebp,dword ptr [edi+28]
dec esi
jnz short dram_latency_loop
mov dword ptr [time_a],eax
mov dword ptr [time_a+4],edx

mov esi,16
dram_latency_loop_2:
rdtsc
mov ebx,eax
mov ecx,edx
mov ebp,dword ptr [edi]
mov ebp,dword ptr [edi+28]
rdtsc
sub eax,ebx
sbb edx,ecx
sub eax,dword ptr [time_rdtsc]
sbb eax,dword ptr [time_rdtsc+4]
add edi,8*1024
dec esi
jnz short dram_latency_loop2

mov dword ptr [time_b],eax
mov dword ptr [time_b+4],edx

;15 чтоб не выйти за 2Кб страницу
mov esi,15
dram_latency_loop_3:
rdtsc
mov ebx,eax
mov ecx,edx
mov ebp,dword ptr [edi]
rdtsc
sub eax,ebx
sbb edx,ecx
sub eax,dword ptr [time_rdtsc]
sbb eax,dword ptr [time_rdtsc+4]
mov ebp,dword ptr [edi+28]
add edi,128
dec esi
jnz short dram_latency_loop3

mov dword ptr [time_х],eax
mov dword ptr [time_х+4],edx

mov esi,15
dram_latency_loop_4:
rdtsc
mov ebx,eax
mov ecx,edx
mov ebp,dword ptr [edi]
mov ebp,dword ptr [edi+28]
rdtsc
sub eax,ebx
sbb edx,ecx
sub eax,dword ptr [time_rdtsc]
sbb eax,dword ptr [time_rdtsc+4]
add edi,128
dec esi
jnz short dram_latency_loop4

mov dword ptr [time_d],eax
mov dword ptr [time_d+4],edx


popad
sti
retn


Дата: Ноя 18, 2003 20:45:49

Да, спасибо за код...

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


Дата: Янв 26, 2004 17:00:40

Хм, а относительно чего ты будешь мерять скорость ??? Таймер слишком медленен и неточен. В принципе, попробуй писать куски памяти в память и засекать колличество тиков процессора (есть такой регистр введён с Пня первого, описан у Зубкова). Хотя если честно, похоже у вашего препода моразм . Хотя чё я те говорю, вон уже кто то выше идейку подкинул.. в принципе это оптимальный метод.


Дата: Янв 26, 2004 20:15:00

Что такое ОЗУ?


Дата: Янв 26, 2004 20:26:43

RAM


Дата: Янв 27, 2004 00:21:40

А как переводитса именно?


Дата: Янв 27, 2004 00:24:18

ОЗУ-оперативное запоминающее устройство, кажется :-)


Дата: Янв 27, 2004 00:31:56

В пятом классе учили... всё забыл. Сидел кружки на кол-басике рубал :(

Asterix
Место жительства?


Дата: Янв 27, 2004 00:42:33

Чьё? :-)

. 1 . 2 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.083