CS/컴퓨터 구조

[컴퓨터 구조](19)[캐시 구조 & 원리]

황올뱀 2025. 2. 13. 18:52

캐시의 구조: set(line(block, valid bit, tag))

  • 캐시는 여러개의 set으로 구성되어 있다
  • set은 여러개의 line으로 구성되어 있다
  • line 안에는 valid bit, tag, cache block이 들어있다
    • valid bit: 이 라인의 캐시 블록이 유효한지 나타냄
    • tag: 데이터의 종류 태그
    • cache block: 데이터(byte)
      캐시의 크기 = set개수*한 set당 line수*cache block

캐시 읽기: 주소 기준으로 찾는다
주소: tag bit, set bit, offset bit

  • set위치 찾기 (set bit)
  • 각 line에서 일치하는 태그 있는지 찾기 (tag bit)
  • 오프셋부터 시작하는 데이터 위치 찾기 (offset bit)
  • 자료형 만큼 읽기

예) 모든 캐시는 비어있고 4개의 set, set당 line은 1개,
cache block엔 2byte일때 다음과 같은 주소(tag, set, offset)가 있다.
읽을 땐 바이트 단위로 읽는다.
    0 00 0: cold 미스 (아예 캐시가 비어있으므로 읽을게 없음) -> 이후 얼른 메모리에서 요청받은 데이터(tag 0) 읽어와 저장
    0 00 1: hit (아까 set 0에 tag 0짜리 데이터를 읽어와 저장했으므로 읽을 수 있음. 1~2바이트를 읽어옴)
    0 11 1: cold 미스 (set 3은 비어있으므로 미스)
    1 00 0: 미스 (set 0엔 tag 1이 아닌 tag 0의 데이터가 있으므로 안읽음) -> 이후 얼른 메모리에서 요청받은 데이터(tag 1) 읽어와 저장
    0 00 0: 미스 (아까 tag 1데이터로 바꿨는데 tag 0 데이터를 또 요청했다...)

 

캐시 성능

  • 미스율: miss/access = 1 - 적중율
  • 적중 시간: 캐시에서 프로세서에 전달하는 시간 (캐시에 원하는 데이터가 있는지 판단시간까지 포함)
  • 미스 패널티: 미스로 인한 추가 시간 소요량
    보통 미스하면 50~200cycle이 추가됨
    예) 99%적중률 캐시와 97%적중률의 캐시 비교 (단, 미스 패널티는 100 cycle)
  • 99%캐시 평균 엑세스 시간: 1cycle + 0.03*100cycle = 2cycle
  • 97%캐시 평균 엑세스 시간: 1cycle + 0.03*100cycle = 4cycle
    약 2배의 성능
728x90
반응형