Народ, у меня назрел вопрос как измеряется латентность памяти, если результат в наносекундах? Что это? Кол-во наносекунд на инструкцию чтения из памяти, на байт чтения или что то еще? Это не праздный вопрос - суть понятно, но как измерить, напишите КОД (с пояснениями) ... Заранее Спасибо...
ECk Вах, Ты не шутишь? Серьезно? Я же сказал - суть ясна, что это такое я знаю... Вопрос как програмным путем ее измерить.
What is Memory Latency? When we see what a RAM’s CAS latency is, it is 4 numbers, such as 2-2-2-5, which correspond with CAS – tRCD – tRP – tRAS. You should be able to change the CAS Latency in your BIOS. In most BIOSes, it can be found under the “advanced chipset” menu, though it can be found in different areas in different BIOSes. CAS stands for Column Address Strobe. This is the number of memory cycles that pass between the time a column is requested from the active page and the time the data is ready to send across the bus. This number is usually 2, 2.5, and 3, on DDR memory. This is actually the last part to come into effect. RAS to CAS Delay is referred to as tRCD. This is the delay in memory cycles between the time a row is activated and when data within the row can be requested. This only happens when data is not on the active row. tRP is the time for RAS Precharge. This is the time in memory cycles that is required to clear out the active row out of the cache, before a new row can be requested. In other words, it’s the time it takes for the memory to stop accessing one row and start accessing another. Once again this only takes place it the data is not in the active row. tRAS refers to the minimum time that a row must remain active before a new row can be activated in each memory bank. A new row can not be opened until the minimum amount of time has passed. If there is more than one bank on memory, this will help the performance of the tRAS. If there is only one active bank, then the need to change rows is guaranteed, and if there is more than one bank with memory, then there is only half the chance that there will be a need to change rows. In turn, the tRAS will only come into effect half the time. The tRP and tRAS together are often referred to as the Row Cycle time, because they happen together. Let's compare this to a library. Let's say you want a book about Florida. Let's say the librarly is putting books away, and you ask for the book on Florida. The librarian would have to get off the ladder, move the ladder to the travel section, and then get back up on the ladder. This would compare with the tRP. The tRCD would be the time the librarian is at the right shelf and right row of the bookcase. The tRAS would be the time when the librarian finds the books about Florida, and when he finds the specific book you want. The CAS latency in this case would be the time from when he takes the book off the shelf, and the time it takes him to walk back to you. If he walks fast, it might be 2; if he walks slower, the number would be larger. Let's say the library is putting books on Florida back; then the time required would be a lot less. All of the moving of the ladder would not be needed. This could happen in the memory if the data needed is on the active row. I hope this helps you understand how memory latency works.
locki Ее не мерят. Она записанна в SPD блоке на планке памяте такая маленькая микруха. Еще есть реальная, так каторая выставленна на материнке, ее можно узнать на северном мосту. Для того чтобы узнать, какие задержки в виндоусе можно воспользоваться WMI.
Pavia Ух ты ж ! Еще один! А что же тогда делает программа Райтмарк Мэмори Анализер? В Эвересте 2.8 в закладке тесты памяти и т. д.
ECk Не, ну русским же языком сказал, что я знаю, что существуют задержки поиска строки и столбца и т. д., но вот напр. Everest (Бывшая Aida32) говорит что у меня к примеру латентность памяти 80ns Воппрос как она это измерила.
locki Наверное используется benchmark на доступ. Здесь где-то есть тема по измерению скорости чтения/копирования памяти. Из исходников можно слепить тест, что будет замерять полное время доступа и только. Всякие промежуточные значения, с его помощью получить не удастся.
locki Видимо, она просто читает данные в разброс (чтоб кеш не помогал), замеряет общее время и делит на кол-во данных.
Quantum ВРОДЕ, ТИПА ДА, используется случайное чтение промежутка 0-32мв, Но как именно Кол-во наносекунд на инструкцию чтения из памяти, на байт чтения или что то еще? Кто знает точно "скока вешать граммов"?
locki Проще на dword, но этот dword должен иметь адрес, кратный 4м. Иначе на его чтение уйдёт 2 цикла обращения к памяти.
locki У меня Эверест 2,0 там нет тестов и все данные она читала через WMI. Еще раз повторяюсь те 80нс взела из SPD блока. Если это был тест цифра не была бы круглой. Вот Райтмарк Мэмори Анализер - она тестирует четая в разброс. Но почему то я этой проги больше всего не доверяю.
Она и не круглая и зависит от частоты проца 80,82, 86 ( 3,6Ghz;3,2Ghz;3Ghz) и опер памяти тоже, скачай с http://www.lavalys.com/downloads/everestultimate301.exe
locki Частота FSB завязанна с частотой процессора, у них один генератор частоты. Поэтому при разгоне проца FSB тоже будет расти, а задержки уменьшаться. Канал памяти имеет 64Бита. В двух кональном 128 бита. Там есть буфер размером в 16Байт(128бит). Поэтому и считаю что нужно читать через XMM регистр 128бит. Ну и разумеется учесть сопряжение команд по этому подряд 2 команды.
locki Читать всю строку смысла нет - процессор сам ее загрузит при чтении даже одного байта. Поэтому достаточно читать по одному дворду из линейки, имея ввиду, что при этом грузится линейка целиком (32, 64, 128 байт в завис-ти от проца) А вообще лучше погуглить на эту тему, в частности на ixbt были статьи по тестированию памяти