적중률은 발견 된 데이터의 캐시에 대한 비율입니다. 하지만 알고리즘에 대한 히트를 찾는 방법을 모르겠습니다. 나는 코드 1에 대해 각각 4 개의 엘리먼트로 11 개의 블록을 가질 것이고 코드 2에 대해서는 11 개의 엘리먼트로 4 개의 블록을 가질 것이며 매번 4 개의 엘리먼트를 놓친다는 것을 알게 될 것이라고 생각했다. 그것이 의미가 있는지 확실하지 않습니다. 어떤 조언은 각 메모리 블록 들고,도 10 개의 메모리 블록 완전 연관 단일 레벨 캐시 가정이 [0][0], [0][1], [0][2], [0][3], [1][0], [1][1], …[10][2], [10][3]
알고리즘에 대한 캐시 및 적중률 코드 작성
같은 메모리에 저장
4 열로 11 개 행이 2 차원 어레이 A를 가정 환영 4 바이트 및 FIFO 대체 정책이 있습니다.
각 행은 정확히 하나의 캐시 블록에 적합하지만 불행히도 전체 배열은 캐시에 맞지 않습니다. 캐시가 너무 작은 한 행입니다 ...
1- 어떻게 캐시 방문 시간이 5ns이고 메모리 액세스 시간이 70ns라고 가정하면 2를 계산합니까? 메모리 및 캐시에 대한 중복 액세스, 각 코드의 EAT는 어떻게 계산합니까?
코드 1 :
for (int row = 0; row < 11; row ++)
{
for (int column = 0; column < 4; column ++)
{
myByte = A [ row, column ];
}
}
코드 2 : 어떤 도움에 감사드립니다
for (int column = 0; column < 4; column ++)
{
for (int row = 0; row < 11; row ++)
{
myByte = A [ row, column ];
}
}
. 감사합니다
나는 숙제를 냄새 맡는다. 캐시 적중률은 구현에 따라 다릅니다. 'valgrind'시도 – phoeagon