|
|
| Посл.отвђт | Сообщен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 Чьё? :-) |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.083 |