가끔씩 많은 양의 메모리를 복제해야하는 실시간 시스템을 설계하고 있습니다. 메모리는 작은 영역으로 구성되어 있으므로 복사 성능이 관련 구성 요소 (CPU, RAM, MB)가 수행 할 수있는 최대 대역폭에 상당히 근접 할 것으로 예상됩니다. 이것은 내가 현대 상품 기계가 소집 할 수있는 원시 메모리 대역폭의 종류를 궁금해하게했다.현대 기계의 메모리 대역폭 성능
하나의 스레드를 memcpy()
에 사용하면 내 에이징 Core2Duo에서 1.5GB/s를 제공합니다. (두 코어를 동시에 사용하면 memcpy()
이 적어집니다.) 1.5GB는 상당한 양의 데이터이지만, m 작업은 1/50th, 즉 30MB를 의미합니다. 기본적으로, 거의 아무것도. 그리고 아마도 최악의 경우, 여러 개의 코어를 추가 할 때 필 요한 복제 단계의 성능을 향상시키지 않고 훨씬 많은 데이터를 처리 할 수 있습니다.
하지만 저가형 Core2Due는 요즘 엄청난 인기를 얻지 못합니다. 실제 벤치 마크와 같은 정보가있는 사이트가 현재 및 미래의 하드웨어의 원시 메모리 대역폭에 있습니까?
또한 많은 양의 데이터를 메모리에 복제하려면 단축키가 있습니까? 아니면 memcpy()
만큼 좋을까요?
짧은 시간에 할 일없이 가능한 한 많은 메모리를 복제 할 수있는 코어가 제공된다면 무엇을 할 수 있을까요?
편집 : 아직 원시 메모리 복사 성능에 대한 좋은 정보를 찾고 있습니다. 방금 memcpy()
벤치 마크를 실행했습니다. 동일한 기계 및 설정은 이제 2.5GB/s를 제공합니다 ...
첫 번째 질문은 "왜"라고 생각합니다. 특히, 달성해야 할 많은 양의 메모리를 복제하는 것은 무엇입니까? 복사 할 때 메모리를 수정하지 않으므로 포인터를 전달하면 대역폭을 전혀 사용하지 않고 동일한 작업을 수행해야합니다. –
"왜"를 기다리고있었습니다. 이 경우에는 두 가지 상태가 필요하기 때문에 : 원격 백업으로 천천히 보내야 할 사본과 원본을 수정 유지해야하기 때문입니다. – porgarmingduod