본문 바로가기
Computer Architecture/Virtual Address & Cache

I-cache 와 D-cache

by FastBench 2024. 11. 7.
반응형

- 캐시 메모리 시리즈 모아보기 - 
https://microelectronics.tistory.com/102

I-cache 와 D-cache

1. 인스트럭션 캐시(I-cache)와 데이터 캐시(D-cache)의 필요성

프로세서에는 인스트럭션 캐시와 데이터 캐시가 따로 필요하다. 인스트럭션과 데이터를 동시에 로드해야 할 때가 많기 때문이다.

즉, I-cache와 D-cache의 분리를 통해 인스트럭션과 데이터를 병렬로 가져올 수 있어 성능이 향상된다.

모든 명령어가 인스트럭션을 불러와야 하므로 I-cache가 필수적이며, 명령어 중 약 33%는 데이터를 로드하거나 저장해야 하므로 D-cache가 필요하다. 예를 들어, load word 명령어를 실행할 때, 명령어를 로드하는 메모리 접근과 그 명령어가 참조하는 데이터를 로드하는 메모리 접근이 동시에 필요하다.

 

1.1 I-cache와 D-cache의 이점

  • 성능 향상: I-cache와 D-cache를 분리하면 인스트럭션과 데이터를 병렬로 가져올 수 있어 전반적인 성능이 향상된다.
  • 전력 소모 감소: 별도의 I-cache와 D-cache 구조는 성능을 높이면서 전력 소모도 효율적으로 관리할 수 있다.

2. I-cache와 D-cache의 접근 패턴 차이

인스트럭션과 데이터는 서로 다른 메모리 접근 패턴을 가진다.

 

2.1 인스트럭션 캐시의 특성

  • 드문 쓰기 작업: 인스트럭션 캐시는 코드가 자주 수정되지 않는다는 가정을 기반으로 설계된다. 예를 들어, AMD의 프로세서 최적화 가이드에서는 L1 인스트럭션 캐시가 채워지면 프리디코딩(predecoding)이 시작되고, 프리디코딩 정보가 인스트럭션 캐시와 함께 저장된다고 명시되어 있다.
  • 특화된 기능: Intel의 Nehalem CPU는 루프백 버퍼(loopback buffer)를 제공하고, Sandy Bridge는 µop 캐시를 추가로 제공한다. 이러한 기능은 코드와 관련된 최적화에 중점을 두며, 데이터에는 직접적인 대응 기능이 없다.
  • 코드의 특성: 코드 수정은 데이터 수정보다 훨씬 드물다. 이 때문에 인스트럭션 캐시는 쓰기 작업에 대한 최적화가 덜 필요하고, 전력 소비를 최소화할 수 있다.

2.2 데이터 캐시의 특성

  • 데이터 전달 네트워크: 대부분의 CPU는 저장-로드 전달(store to load forwarding) 네트워크를 제공해 데이터 접근 성능을 높인다. 하지만 코드에는 이러한 전달 네트워크가 필요하지 않다. 이는 코드가 데이터를 수정하는 빈도보다 수정 빈도가 훨씬 낮기 때문이다.

3. AMAT(평균 메모리 접근 시간) 계산

캐시 성능을 평가할 때 중요한 지표 중 하나는 평균 메모리 접근 시간(AMAT)이다. 인스트럭션 캐시와 데이터 캐시가 분리되어 있으면, 각각의 AMAT를 계산하고 두 값을 결합해 최종 AMAT를 구한다.

 

3.1 AMAT 공식

AMAT = (인스트럭션 캐시 AMAT × 인스트럭션 접근 비율) + (데이터 캐시 AMAT × 데이터 접근 비율)

 

3.2 미스율의 중요성

인스트럭션 캐시와 데이터 캐시의 미스율은 서로 다를 수 있다. 예를 들어, 인스트럭션 캐시의 미스율이 데이터 캐시보다 낮다면 인스트럭션 접근이 성능에 미치는 영향은 비교적 적을 수 있다. 이 점을 고려하여 최종 AMAT를 계산해야 한다.

 

3.3 예시

한 시스템에서 다음과 같은 조건을 가정해보자:

  • 캐시 히트 시간: 1 사이클
  • 메모리 접근 시간: 100 사이클
  • 인스트럭션 캐시의 미스율: 1%
  • 데이터 캐시의 미스율: 5%
  • 명령어 중 33%가 데이터 접근(로드/스토어)

 

이 조건에서 인스트럭션 캐시와 데이터 캐시 각각의 AMAT를 계산한 후 이를 결합하면 총 AMAT는 약 4 사이클이 된다.

4. 프로세서의 캐시 구조

프로세서 내 캐시의 구조는 각 제조사마다 조금씩 다르지만, 기본적으로 인스트럭션 캐시와 데이터 캐시를 포함하고 있다.

  • AMD의 Bulldozer 프로세서: 두 개의 코어를 가지고 있으며, 인스트럭션과 데이터 캐시가 포함되어 있다.
  • Intel의 Sandy Bridge 프로세서: 네 개의 코어를 가지고 있으며, 각 코어에 데이터와 인스트럭션 캐시가 별도로 존재한다. 이 외에도 혼합된 캐시와 공유 캐시가 포함된다.

Apple의 A6 칩이나 AMD의 Fusion 칩과 같은 프로세서들도 별도의 인스트럭션 캐시와 데이터 캐시를 사용하며, 일부는 CPU와 GPU가 함께 탑재된 구조를 가진다.

 

결론

I-cache와 D-cache의 분리는 성능을 극대화하고 전력 소모를 줄이기 위해 필수적이다. 이를 통해 인스트럭션과 데이터를 동시에 불러올 수 있어 성능이 향상되며, 프로세서의 캐시 구조는 이 분리된 접근 방식을 기반으로 설계된다.

 

Reference

반응형

댓글