MAA Posted January 6, 2017 Share Posted January 6, 2017 Hello, 1) As i see, Memory Copy ≈ Memory Read ≈ Memory Write speed. How it possible? Memory and memory controller can operate in full-duplex? 2) Memory bench result is speed via one thread, or sum of multiple threads? Link to comment Share on other sites More sharing options...
MAA Posted January 7, 2017 Author Share Posted January 7, 2017 If memory test is synthetic sum of multiple threads, how can I see more "real life" performance of single-thread speed? Link to comment Share on other sites More sharing options...
Fiery Posted January 9, 2017 Share Posted January 9, 2017 1) Memory Copy means writing a memory block and then reading it back. If there are no separate (dedicated) paths for writing and reading, then the copy scores will be close to the read and write scores. 2) AIDA64 uses multiple threads to perform memory bandwidth benchmarks. Modern applications are multi-threaded, so a single-threaded memory bandwidth benchmark (that we used in AIDA64 1.xx and 2.xx) is considered obsolete in 2017. Regards, Fiery Link to comment Share on other sites More sharing options...
MAA Posted January 9, 2017 Author Share Posted January 9, 2017 1) Copying can be done in two ways: a) read, then write. In this case copy speed is 1/2 of r/w speed. b ) read and write simultaneously. In this case copy speed = r/w speed, but memory and memory controller should operate in full-duplex. which method uses your copy bench? 2) may you can provide also single-threaded memory bench for information purposes? Link to comment Share on other sites More sharing options...
Fiery Posted January 9, 2017 Share Posted January 9, 2017 We do 1/a, so we read something and then write it. It's not full duplex. And the read and write block sizes are added up together, so it's not 1/2 of read/write speed, but 1/1. There's no consensus in the benchmark industry about how to calculate the memory/cache copy scores, some software does it the "AIDA64 way", some others use your approach of 1/2. 2) No, we have no plans to go back to providing single-threaded memory bandwidth benchmarks. You can still use AIDA64 v2.85 to have that. Link to comment Share on other sites More sharing options...
MAA Posted January 9, 2017 Author Share Posted January 9, 2017 >> There's no consensus in the benchmark industry about how to calculate the memory/cache copy scores It can not be two opinions. If you have B bytes and copying time is t sec, then copy speed = B/t bytes/sec. Link to comment Share on other sites More sharing options...
Fiery Posted January 11, 2017 Share Posted January 11, 2017 On 2017. 01. 09. at 9:47 PM, MAA said: >> There's no consensus in the benchmark industry about how to calculate the memory/cache copy scores It can not be two opinions. If you have B bytes and copying time is t sec, then copy speed = B/t bytes/sec. It can and there is. E.g. Sandra uses the same score calculation method as AIDA64, while RMMA uses a different one that yields to half the score on the same system. Link to comment Share on other sites More sharing options...
MAA Posted January 12, 2017 Author Share Posted January 12, 2017 On 09.01.2017 at 5:57 PM, Fiery said: We do 1/a, so we read something and then write it. It's not full duplex. And the read and write block sizes are added up together, so it's not 1/2 of read/write speed, but 1/1. you do math calculations incorrect. you do not must add up read and write block sizes, but you must add up read and write times. Link to comment Share on other sites More sharing options...
Fiery Posted January 12, 2017 Share Posted January 12, 2017 In our memory read benchmark, we read a 64 MegaByte sized block from the RAM, and measure the time it takes to complete. Score = 64MB / time_it_took_in_seconds. In our memory write benchmark, we write a 64 MegaByte sized block into the RAM, and measure the time it takes to complete. Score = 64MB / time_it_took_in_seconds. In our memory copy benchmark, we copy a 32 MegaByte sized block by reading small chunks (into CPU registers) in each cycle and writing it back to a different RAM location (from the CPU registers). We measure the time it takes to complete the whole operation. Score = 64MB / time_it_took_in_seconds --> that's what can be debated, ie. whether it should rather be "Score = 32MB / time_it_took_in_seconds". Whether you consider copying 32MB as moving 32MB of data, or moving 64MB of data. From the memory interface perspective, reading 32MB and writing 32MB is considered transferring a total of 64MB data, that's why we use the formula "Score = 64MB / time_it_took_in_seconds". Link to comment Share on other sites More sharing options...
MAA Posted January 12, 2017 Author Share Posted January 12, 2017 3 hours ago, Fiery said: From the memory interface perspective, reading 32MB and writing 32MB is considered transferring a total of 64MB data, that's why we use the formula "Score = 64MB / time_it_took_in_seconds". It can be Ok if benchmark called "memory throughput" or "memory bandwidth". But your benchmark called "memory copy", and must show the speed of copying = 32MB/time. Link to comment Share on other sites More sharing options...
Fiery Posted January 12, 2017 Share Posted January 12, 2017 2 minutes ago, MAA said: It can be Ok if benchmark called "memory throughput" or "memory bandwidth". But your benchmark called "memory copy", and must show the speed of copying = 32MB/time. Thank you, but we'd like to stick with our formula -- which is used by other benchmark software (like Sandra) as well BTW. Link to comment Share on other sites More sharing options...
MAA Posted January 12, 2017 Author Share Posted January 12, 2017 7 minutes ago, Fiery said: Thank you, but we'd like to stick with our formula -- which is used by other benchmark software (like Sandra) as well BTW. Sandra do not have benchmark with name "Memory copy". Sandra have bench with name "Memory bandwidth" with correct formula for this case. Link to comment Share on other sites More sharing options...
Fiery Posted January 12, 2017 Share Posted January 12, 2017 Sandra performs Stream benchmark, which is essentially a variant of a memory copy bandwidth benchmark, spiced with some simple CPU instructions performed on the copied data. Link to comment Share on other sites More sharing options...
MAA Posted January 12, 2017 Author Share Posted January 12, 2017 7 minutes ago, Fiery said: Sandra performs Stream benchmark, which is essentially a variant of a memory copy bandwidth benchmark, spiced with some simple CPU instructions performed on the copied data. end user looks at the name of the test, he not interested how test perform it. Link to comment Share on other sites More sharing options...
Fiery Posted January 12, 2017 Share Posted January 12, 2017 Okay, then let's just agree to disagree, and move on. Thread locked. Link to comment Share on other sites More sharing options...
Recommended Posts