4 바이트의 자연 정렬을 가정합니다.캐시에로드하는 동안 데이터 정렬
struct Node
{
int data;
char c_data;
};
int main() {
int global = 10;
struct Node N;
for (register int i = 0; i < 10; i++)
cout << global << N.data << endl; }
캐시 라인 크기가 16 바이트이고 내 프로그램이 루프에서이 두 변수를 액세스하는 경우 어떻게 이러한 변수가 캐시에 존재합니까? 다른 모든 것은 레지스터 변수라고 가정합니다.
동일한 캐시 라인에서?
On 다른 캐시 라인?
동일한 캐시 라인 인 경우, 각 구성원은 캐시의 4 바이트 정렬 주소에서 시작합니까? like 전역 변수는 [0,3]에서 스팬하고 N은 [4,7]에서 스팬합니다. 또는 구조체가 char을 가지고 있다면 캐시 라인의 [5]부터 시작할 수 있습니다.
기본적으로 캐시에 데이터를로드하는 동안 구조체의 크기 또는 첫 번째 멤버를 기준으로 정렬이 고려됩니까?
데이터는 데이터 크기가 아닌 라인 크기에 따라 캐시 라인에로드되므로 메모리의 데이터 구성/정렬이 캐시에 반영됩니다. – LPs