C에서 CPU의 캐시 크기를 결정하는 방법이 있습니까? 나는 많은 데이터를 처리하는 알고리듬을 가지고 있으며,이 데이터를 캐시에 넣을 때와 같이 덩어리로 나누고 싶다. 이것이 가능한가? (특히 다중 스레드/다중 코어 데이터 처리와 관련하여) 캐시 크기를 염두에두고 프로그래밍 할 때 다른 힌트를 제공 할 수 있습니까? 감사합니다.
내 프로그램이 릴리스 의미론 또는 전체 펜스를 사용하여 획득 의미/저장 연산으로로드 연산을 수행하면 CPU 캐시를 무효화합니다. 내 질문은 : 캐시의 어느 부분이 실제로 무효화 되었습니까? 내가 사용했던 변수를 보유하고있는 캐시 라인 만 획득/해제 할 수 있습니까? 아니면 전체 캐시가 무효화 되었습니까? (L1 + L2 + L3 .. 등). 획득/릴리스 의
L1 및 L2 캐시 (데이터 캐시)의 크기와 순서를 프로그래밍 방식으로 측정 할 수 있습니까? 그것은 (단지 P4 +와 같은) 하드웨어 프리 페치 유닛을 가질 수있다 그것은 L1 및 L2 캐시 (L3 캐시를 공유 할 수도있다)하고있다, : 시스템에 대한 가정 안정적인 클럭 소스 (tickcounter 또는 gettimeofday에 적합한 HPET)가 있습니
최신 CPU의 캐시 액세스 속도는 얼마나됩니까? Intel P4, Core2, Corei7, AMD의 프로세서 클럭 틱마다 메모리에서 얼마나 많은 바이트를 읽거나 쓸 수 있습니까? 이론상 (처리량이 uOPs/tick 단위 인 ld/sd 단위의 너비) 및 실용적인 수 (심지어 memcpy 속도 테스트 또는 STREAM 벤치 마크) (있는 경우)로 답하십시오.
ARM Cortex A8 프로세서에서 작은 코드를 이식하려고합니다. L1 캐시와 L2 캐시는 모두 제한되어 있습니다. 내 프로그램에는 3 개의 배열이 있습니다. 그 중 두 개는 순서대로 액세스됩니다 (size> Array A : 6MB 및 Array B : 3MB). 세 번째 배열 (size> Array C : 3MB)에 대한 액세스 패턴은 예측할 수 없습