프로그램은 sbrk(
함수를 사용하여 큰 배열을 선언합니다. Sbrk은 데이터 세그먼트 크기를 지정된 증가분만큼 변경합니다. 표준 라이브러리 함수는 내가 사용하고 예 :캐시 블록의 크기를 측정하는 C 프로그램을 만듭니다.
#include <stdio.h>
#include <sys/time.h>
#include <unistd.h>
내 main() 함수는 변수를 선언하여 시작합니다 레지스터 *는; 내 목표는 배열에있는 메모리 액세스가 유일한 이기 때문에 레지스터에 메모리 액세스 중에 사용할 모든 변수를 넣으려고하는 것입니다. 지역 변수가 메모리에 상주 할 경우 에 액세스하면 측정에 영향을 미칠 수 있습니다. 다음은 약 4 백만 개의 정수 배열 인 배열을 할당하는 것입니다.이 배열은 32 비트의 컴퓨터에서 16MB입니다.
a=sbrk(4*1024*4096+8192);
a=(int *)((((int)a>>13)<<13)+8192);
프로그램이 시작되면 일부 메모리가 할당됩니다. sbrk()
함수는이 메모리를 주어진 값만큼 증가시킵니다. 함수 호출 후에 "a"는이 거대한 배열의 시작 부분을 가리 킵니다.
이제는 내가 알고있는 이러한 조각이 있습니다. 캐시 블록 크기를 얻으려면 어떻게해야할지 모릅니다.
이 모든 것을 달성하기 위해 무엇을하려고합니까? – NPE
메신저 캐시 블록의 크기를 찾으려고합니다 – Nabmeister
정확히 원하는 것은 무엇입니까? 프로세서의 캐시 크기를 알고 싶습니까? x86 기반 프로세서입니까? 일반적으로 캐시가 두 개 이상 있다는 것을 알고 있습니다. –