Jump to content
BulForum.com

RAM-ът пише по-бързо отколкото чете ?


Recommended Posts

Правя един benchmark за линукс и като се поразрових малко открих този интересен факт. Оперативната памет пише няколко пъти по-бързо отколкото чете. На моята машина чете с около 500 MB/s и пише с около 1400 MB/s според cachebench под линукс. Като се разрових из гугъл на много места има статистики на компютри, чиито RAM наитина чете по-бавно отколкото пише. Също така има и много, при които четенето е по-бързо. На един компютър тука aida32 вади 600 MB/s ПИСАНЕ и 1700 MB/s ЧЕТЕНЕ. Искам да знам в крайна сметка кое е по-бързо: четенето или писането в RAM-a.

Link to comment
Share on other sites

Правя един benchmark за линукс и като се поразрових малко открих този интересен факт. Оперативната памет пише няколко пъти по-бързо отколкото чете. На моята машина чете с около 500 MB/s и пише с около 1400 MB/s според cachebench под линукс. Като се разрових из гугъл на много места има статистики на компютри, чиито RAM наитина чете по-бавно отколкото пише. Също така има и много, при които четенето е по-бързо. На един компютър тука aida32 вади 600 MB/s ПИСАНЕ и 1700 MB/s ЧЕТЕНЕ. Искам да знам в крайна сметка кое е по-бързо: четенето или писането в RAM-a.

По принцип Паметите имат еднаква скорост на четене и запис.

Това което наблюдаваш се дължи на кеш паметта. При четене инструкцията блокира докато се извърши истинското им прочитане (дори при суперскаларен процесор не може да се отлага повече от няколко инструкции), докато записа се кешира (освен ако не се ползва специална MMX инструкция). Повторно четене ще покаже огромна скорост. Екпериментирай с различни големини на блоковете. Няколкото нива на кеш правят нещата трудно отличими. Можеш да пробваш и да го изключиш.

 

АА, да най-важното, винаги използвай поне uint32_t (4 байта) и извърършвай четенето/записа на кратни на 4 адреси. Побайтовото и неизравнено четене е около поне 10 пъти по-бавно. MMX копирането е по-бързо защото използа 8 байта наведнъж, а SSE по 16.

 

 

Ако имаш други въпроси... Питай където трябва.

Link to comment
Share on other sites

При мене не е баш еднаква, а точно обратно чете с 1890 Мбайта/с, а записва с 606 Мбайта/с.

Защо така.

Link to comment
Share on other sites

По принцип Паметите имат еднаква скорост на четене и запис.

Това което наблюдаваш се дължи на кеш паметта. При четене инструкцията блокира докато се извърши истинското им прочитане

Тогава защо AIDA32 вади много по-бързо четене и защо:

чете с 1890 Мбайта/с, а записва с 606 Мбайта/с

:confused

Link to comment
Share on other sites

Aida32

read2185

write595 ????

Link to comment
Share on other sites

Май грешката е била в cachebench. С един друг бенчмарк вадя следното:

INTEGER & READING 16384 Kb block: 578.77 Mb/s

INTEGER & WRITING 16384 Kb block: 252.29 Mb/s

Тъй че .. в RAM-а се пише по-бавно, отколкото се чете оттам :)

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...