답변 감사합니다. (위의 영문 위키를 포함하여) 구글 검색은 이미 해보았지만 확신이 서지 않아 질문을 올렸던 것입니다. 지적해 주신 부분을 보고 질문을 좀 더 구체화하여 다시 정리해 보았습니다.
1. STREAM convention 관련 (영문 위키 http://en.wikipedia.org/wiki/Memory_bandwidth에서)
1-1. bcopy convention: counts the amount of data copied from one location in memory to another location per unit time. For example, copying 1 million bytes from one location in memory to another location in memory in one second would be counted as 1 million bytes per second.
-> 이것은 초당 1MB를 복사(read+wirte)했으므로 대역폭이 1MB/s 란 말이므로 직관적으로 이해가 됩니다.
1-2. STREAM convention: sums the amount of data that the application code explicitly reads plus the amount of data that the application code explicitly writes. Using the previous 1 million byte copy example, the STREAM bandwidth would be counted as 1 million bytes read plus 1 million bytes written in one second, for a total of 2 million bytes per second.
-> 그런데, 이 말은 무슨 뜻인지 이해가 안됩니다. 예를들어, bcopy convention으로 1MB/s의 대역폭은 가진 메모리가 읽기/쓰기 속도 비율이 1:1로 같다면 STREAM convention에서는 2MB/s가 된다는 말인지 궁금합니다. 다시 말해, STREAM 대역폭= 읽기 대역폭 + 쓰기 대역폭 인지 궁금합니다.
2.
그러면, 실제 시스템으로 돌아와서, CPU가 내장 메모리 컨트롤러를 가진 I7-2700K 이고, 메인 메모리가 SAMSUNG DDR3 PC3-10600로 네 개 장착된 컴퓨터 시스템의 이론적 메모리 대역폭(STREAM convention)은 어떻게 계산하는지 궁금합니다.
결국 구글링해서 답을 얻었습니다 ㅠ.
DDR3 PC-10600 DIMM모듈들을 듀얼 채널로 구성했을 때 얻을 수 있는 최대 메모리 대역폭은 10.6GB/s * 2(dual channels)= 21.2GB/s입니다[1]. 그러나 I7-2700K의 내장 메모리 컨트롤러의 한계[2]로 인해 21.0GB/s에서 제한이 걸립니다. (이 제한이 소숫점을 버림한 것이 아니라면) 그래서 I7-2700K에서 DDR3 PC-10600 모듈들을 듀얼 채널로 구성하였을 때 얻을 수 있는 최대 메모리 대역폭은 21GB/s라는 결론을 내게 되었습니다.
[2]에 Max Memory bandwidth is the maximum rate at which data can be read from or stored into a semiconductor memory by the processor (in GB/s)라는 말이 있는 것으로 보아 그 메모리 대역폭 수치는 STREAM convention을 따르는 것으로 생각됩니다.
4개 장착했다 하더라도 dual channel로 구성되기 때문에 1 channel 당 10.6GB/s 씩 해서 total 10.6 * 2 = 21.2GB/s 가 맞습니다.
내장 메모리 컨트롤러 한계로 인해 21.0GB/s 제한은 잘못된 이야기 같네요. (소수점 버리고 표현한게 맞습니다.)
물론 실제 Bandwidth는 21.2GB/s 보다 낮게 나오며 (CPU와 병목 현상, Bank 인터리빙 및 Dimm 에 따른 Efficiency 등 여러가지 이유로 인해) 약 20~30% 낮추면 될 것 같습니다.
자게에 질문 글 작성하고 기다릴 시간에 구글하는게 시간 절약아닐지...
http://en.wikipedia.org/wiki/Memory_bandwidth
답변 감사합니다. (위의 영문 위키를 포함하여) 구글
답변 감사합니다. (위의 영문 위키를 포함하여) 구글 검색은 이미 해보았지만 확신이 서지 않아 질문을 올렸던 것입니다. 지적해 주신 부분을 보고 질문을 좀 더 구체화하여 다시 정리해 보았습니다.
1. STREAM convention 관련 (영문 위키 http://en.wikipedia.org/wiki/Memory_bandwidth에서)
1-1. bcopy convention: counts the amount of data copied from one location in memory to another location per unit time. For example, copying 1 million bytes from one location in memory to another location in memory in one second would be counted as 1 million bytes per second.
-> 이것은 초당 1MB를 복사(read+wirte)했으므로 대역폭이 1MB/s 란 말이므로 직관적으로 이해가 됩니다.
1-2. STREAM convention: sums the amount of data that the application code explicitly reads plus the amount of data that the application code explicitly writes. Using the previous 1 million byte copy example, the STREAM bandwidth would be counted as 1 million bytes read plus 1 million bytes written in one second, for a total of 2 million bytes per second.
-> 그런데, 이 말은 무슨 뜻인지 이해가 안됩니다. 예를들어, bcopy convention으로 1MB/s의 대역폭은 가진 메모리가 읽기/쓰기 속도 비율이 1:1로 같다면 STREAM convention에서는 2MB/s가 된다는 말인지 궁금합니다. 다시 말해, STREAM 대역폭= 읽기 대역폭 + 쓰기 대역폭 인지 궁금합니다.
2.
그러면, 실제 시스템으로 돌아와서, CPU가 내장 메모리 컨트롤러를 가진 I7-2700K 이고, 메인 메모리가 SAMSUNG DDR3 PC3-10600로 네 개 장착된 컴퓨터 시스템의 이론적 메모리 대역폭(STREAM convention)은 어떻게 계산하는지 궁금합니다.
결국 구글링해서 답을 얻었습니다 ㅠ.DDR3
결국 구글링해서 답을 얻었습니다 ㅠ.
DDR3 PC-10600 DIMM모듈들을 듀얼 채널로 구성했을 때 얻을 수 있는 최대 메모리 대역폭은 10.6GB/s * 2(dual channels)= 21.2GB/s입니다[1]. 그러나 I7-2700K의 내장 메모리 컨트롤러의 한계[2]로 인해 21.0GB/s에서 제한이 걸립니다. (이 제한이 소숫점을 버림한 것이 아니라면) 그래서 I7-2700K에서 DDR3 PC-10600 모듈들을 듀얼 채널로 구성하였을 때 얻을 수 있는 최대 메모리 대역폭은 21GB/s라는 결론을 내게 되었습니다.
[2]에 Max Memory bandwidth is the maximum rate at which data can be read from or stored into a semiconductor memory by the processor (in GB/s)라는 말이 있는 것으로 보아 그 메모리 대역폭 수치는 STREAM convention을 따르는 것으로 생각됩니다.
[1] http://techreport.com/review/15967/exploring-the-impact-of-memory-speed-on-core-i7-performance
[2] http://ark.intel.com/products/61275/Intel-Core-i7-2700K-Processor-8M-Cache-up-to-3_90-GHz?q=i7-2700K
DDR3 대역폭
4개 장착했다 하더라도 dual channel로 구성되기 때문에 1 channel 당 10.6GB/s 씩 해서 total 10.6 * 2 = 21.2GB/s 가 맞습니다.
내장 메모리 컨트롤러 한계로 인해 21.0GB/s 제한은 잘못된 이야기 같네요. (소수점 버리고 표현한게 맞습니다.)
물론 실제 Bandwidth는 21.2GB/s 보다 낮게 나오며 (CPU와 병목 현상, Bank 인터리빙 및 Dimm 에 따른 Efficiency 등 여러가지 이유로 인해) 약 20~30% 낮추면 될 것 같습니다.