Taxa de falta de cache da matriz
Eu estou tentando descobrir como calcular a taxa de falta de uma matriz. Eu tenho a resposta, mas não estou entendendo como a resposta chegou. Eu tenho o seguinte código:
int C[N1][N2];
int A[N1][N3];
int B[N3][N2];
initialize_arrays(A, B, C, N1, N2, N3);
for(i=0; i<N1; ++i)
for(j=0; j<N2; ++j)
for(k=0; k<N3, ++k)
C[i][j] += A[i][k] * B[k][j];
Eu também tenho as seguintes informações:N1=N2=N3=2048
(O que isto significa??). O processador possui um cache de dados L1 de 32kB com tamanho de linha de 64B (sem cache L2). (qual é o tamanho da linha?)
Eu sei que a taxa de erro da matriz C é(N^2/16)/N^3
. Eu sei que a fórmula é(total misses)/(total accesses)
. Vejo que existemN^3
total de acessos, mas como eles conseguiram o total de erros?
Eu também sei a taxa de falta da matriz B:(N^3)/(N^3)
e A:(N^2/16)/N^3
. Alguém poderia me explicar como eles conseguiram as falhas totais aqui também?