Inclusive ou exclusivo? L1, cache L2 no processador Intel Core IvyBridge

Estou tendo o processador Intel Core IvyBridge, CPU Intel Core i7-3770 @ 3.40GHz (L1-32KB, L2-256KB, L3-8MB). Eu sei que a L3 é inclusiva e compartilhada entre vários núcleos. Eu quero saber o seguinte em relação ao meu sistema

PARTE 1 :

L1 é inclusivo ou exclusivo?L2 é inclusivo ou exclusivo?

PARTE 2 :

Se L1 e L2 são inclusivas, então para encontrar o tempo de acesso de L2, primeiro declaramos um array (1MB) de tamanho maior que o cache L2 (256KB), então começamos a acessar o array inteiro para carregar no cache L2. Depois disso, acessamos o elemento da matriz do índice inicial ao índice final com stride de 64B, pois o tamanho da linha do cache é 64B. Para obter um resultado mais preciso, repetimos esse processo (acessando elementos de matriz no índice, início-fim) várias vezes, digamos 1 milhão de vezes e obtendo a média.

Meu entendimento por que essa abordagem fornece resultado correto da seguinte maneira: Quando acessamos a matriz de tamanho mais do que o tamanho do cache L2, toda a matriz é carregada da memória principal para L3, depois de L3 para L2, depois de L2 para L1. Os últimos 32KB de toda a matriz estão em L1 como são acessados ​​recentemente. A matriz inteira também está presente no cache L2 e L3 também devido à propriedade inclusiva e à coerência do cache. Agora, quando eu começo a acessar a matriz novamente a partir do índice inicial, que énão no cache L1, mas no cache L2, então haverá um erro no cache e ele será carregado do cache L2. E desta forma, haverá maior tempo de acesso necessário para todos os elementos da matriz inteira e no total eu vou ter o tempo total de acesso da matriz inteira. Para obter o acesso único, tomo a média do total de não acesso.

Minha pergunta é -Estou correcto ?

Desde já, obrigado .

questionAnswers(1)

yourAnswerToTheQuestion