Вобщем, задался целью написать прожку для тестирования пропускной способности памяти. За эталонное значение взял результаты из SisSoft Sandra. Написал, в результате получил, что на инструкциях типа stosd скорость получается выше чем при использовании MMX (movq) и SSE(movaps), но гораздо ниже (где то в два раза), чем показывает Sandra. Участок памяти под тест: 64 Мб (чтобы исключить записи в кэш). Потом попробовал использовать инструкции с управлением кэшированием типа movntps и movntq, при этом прога выдает какие то цифры нереальные, но только при первом запуске, а при последующих - все стабилизируется. И по прежнему с Сандрой не сходится. Посмотрите сырцы может что посоветуете. А то меня это сильно зацепило, почему в Сандре больше чем у меня в однозадачной 32 битной проге.
А ты пропускную способность памяти как считаешь? кол-во_памяти / время_за_которое_заполняется (считывается) Это скорость записи (или чтения) получается. Пропускная способность (bandwidth) - это сумма считанных и записанных байт за время. Т.е. копируешь, делишь на время и умножаешь на 2 . А stosd быстрее - потомучто на PIV это аппаратно ускорено, а movq и movaps - не самые эффективные команды записи в память, так как пишут сквозь кэшь. Вот почитай
Да, что то я стормозил, ведь меряю я только по записи. Вот попробовал потом и на чтение, усредняю, в итоге на 20 Мб/с больше чем в Sandra. Сыпасибы S_T_A_S_ за ссылочку. Есть теперь обо что голову ломать
Усреднять - тогда получится "усреднённая скорость чтения/записи" Современная PC - не фоннеймановская машина, поэтому такой подход imho не правилен. Можно просто измерять скорость копирования и умножать на (поскольку при этом происходит и чтения и запись). По крайней мере я так делал и результаты хорошо соответствуют Сандре. _149802809__memcopy_test.zip
Сыпасибы S_T_A_S_, разъяснил что к чему. Я вот начал тут играться с такой штукой как виртуальная машина VMware. И никак не понимаю за счет чего это вообще существует и почему оно работает. Т.е. как из защищенного режима запускается прога а в ней можно запустить хоть DOS, хоть Windows. Причем из запущенного доса работают стабильно все прожки, которые переключают проц в PM, хотя, по сути дела он уже в этом режиме работает.
Про VMware лучше бы отдельную ветку создать - больше шансов, что будут толковые ответы. Это эмулятор x86, но муляция сквозная, т.е. только для привелигированных инструкций (для этого используется драйвер)