CS/컴퓨터 구조

4장 : 기억장치 - (7) 사상방식2

infobox503 2024. 12. 18. 09:52

<요약>

  • 완전 연관 사상
    • 태그 필드, 단어 필드
    • 블록 크기 = 라인 크기
  • 세트-연관 사상
    • 태그 필드, 세트 필드, 단어 필드
    • 태그 필드
      • 한 “세트”를 공유하는 서로 다른 블록 구분
    • 세트 수 = 라인 수
      • ⇒ 직접 사상
    • 세트 수 = 1
      • ⇒ 완전 연관 사상

※세트 연관 사상

  • 세트 안에 있는 라인 중 어느 라인을 택할지는 미리 정해놓음(알고리즘)

1. 완전 연관 사상

  • 의미
    • 모든 주기억장치 번지들이 모든 캐시 번지 접근 가능
    • 블록의 크기 = 라인 크기
  • 기억장치 형식
    • CPU가 캐시, 기억장치에게 요구하는 명령어 형식
    • (실제로 기억장치, 캐시에 저장되는 값이 아님)

<구조>

 

  • 과정
    • 캐시의 모든 태그를 비교(모든 태그에서 서로 맞는 태그를 찾음)
      • = 연관 액세스
    • 캐시 적중 시,
      • 해당 캐시 내용을 cpu에게 반환
    • 캐시 미스 시,
      • 교체 알고리즘 사용

※ 연관 액세스

  • 캐시의 모든 번지와 비교
  • 장점
    • 캐시 적중률 상승
    • 캐시 라인의 선택권 상승
  • 단점
    • 캐시 라인들을 전부 탐색하므로 회로가 복잡해짐

2. 세트-연관 사상

  • 의미
    • 직접, 완전 사상의 조합
    • 세트를 사용
      • ⇒ 캐시의 라인을 그룹화(=세트)하여 사용
    • 세트 → 태그 → 번지 접근(해당 세트 안에서 태그 값들을 전부 비교함)
      • 태그 필드
        • 각 세트 안에서 각 블록들을 구분함
        • 블록 수 / 세트 수 = 태그 필드 비트 수
  • k-way
    • 1 세트 = k개의 라인(같은 세트에 서로 다른 라인 여러개 적재)
    • 전체 세트 = v * k
    • (v = 세트 전부)
  • 캐시 세트 번호
    • i = j mod v
    • i = 캐시 세트 번호, j = 주기억장치 블록 번호, v = 캐시 세트들의 수
  • 기억장치 주소 형식
    • CPU가 캐시, 기억장치에게 요구하는 명령어 형식
    • (실제로 기억장치, 캐시에 저장되는 값이 아님)

 

  • 예시
    • 2-way 세트, 캐시 전체 8(태그 필드 = 3bit)
      • ⇒ 세트 필드 = 2 = (2^3 / 2)
  • 구조

  • 과정
    • 세트 → 태크 → 캐시 적중 or 미스
    • 캐시 적중 시,
      • 캐시 사용
    • 캐시 미스 시,
      • 교체 알고리즘 사용

3. 대용량 세트(실제 메모리 크기)

  • 세트 연관 사상 방식
    • 세트 수 = 라인 수
      • ⇒ 직접 사상
    • 세트 수 = 1
      • ⇒ 완전 연관 사상
  • 사상 방식 비교

 

  • 문제 예시
    • 가정
      • 2-way 세트 연관 사상
      • 주기억장치 용량 16M바이트
      • 단어 길이 1바이트
      • 각 블록의 용량 4byte
      • 캐시 용량 64K바이트
    • 문제
      • 주기억장치 주소 비트?
        • 24bit
        • 16M개 주소 구분
      • 블록의 개수?
        • 4M개
      • 라인 수?
        • 16K개
      • 세트 수?
        • 8K 개
      • 기억장치주소 형식?
        • 태그 9bit
        • 세트 13bit
        • 단어 2bit
        • 단어
          • 블록 크기 = 4byte
          • 단어 크기 = 1byte
          • 블록 마다 4개의 번지 각 단어를 구분하기 위해 2^2의 값이 필요
          • 2bit
        • 세트
          • 8K 구분 = 13bit
        • 태그
          1. 전체에서 빼기
            • 주소지정형식 크기 = 24bit( = 기억장치 번지 수)
            • 24 - 15 = 9bit
          2. 태그 필드만 구하기
            • 블록 수 / 세트 수 = 4M / 8K = 9bit