LabHub

컴퓨터 구조 · 메모리 계층 · 퀴즈

퀴즈: 메모리 계층

LabHub 에서 이어서 보기

문항 7개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.

  1. 캐시가 데이터를 한 바이트가 아니라 64바이트 라인 단위로 가져오는 주된 이유는?

    1. 공간 지역성 때문에 인접 주소가 곧 쓰일 가능성이 높기 때문
    2. DRAM 이 64바이트 미만은 읽을 수 없기 때문
    3. 캐시 태그를 저장할 공간을 아끼기 위해서만
    4. 64바이트가 CPU 레지스터의 폭이기 때문
  2. 행 우선으로 저장된 2차원 배열을 열 방향으로 순회하면 왜 느려지는가?

    1. 곱셈과 나눗셈이 늘어나서
    2. TLB 가 열 방향 접근을 지원하지 않기 때문
    3. 매 접근마다 새 캐시 라인을 가져오고 그중 일부만 쓰고 버리기 때문
    4. 컴파일러가 열 방향 접근을 최적화하지 않기 때문
  3. 작업 집합이 L3 캐시보다 조금 큰 상태에서 발생하는 미스를 무엇이라 하며, 가장 적절한 대응은?

    1. 용량 미스 — 타일링처럼 작업 집합을 잘라 재사용을 늘린다
    2. 강제 미스 — 프리페치를 켠다
    3. 충돌 미스 — 배열의 보폭을 바꾼다
    4. 일관성 미스 — 스레드 수를 줄인다
  4. 산술 강도(arithmetic intensity)가 낮은 워크로드에서 성능을 올리는 방법으로 가장 효과가 없는 것은?

    1. 메모리 대역폭이 더 높은 장비로 옮긴다
    2. 양자화로 읽어야 할 바이트 수를 줄인다
    3. 연산 성능(peak FLOPS)이 더 높은 칩으로 교체한다
    4. 온칩 메모리를 활용해 한 번 읽은 데이터의 재사용을 늘린다
  5. 스레드마다 자기 슬롯에만 쓰는 8바이트 카운터 배열이 있다. 락이 전혀 없는데도 스레드를 늘릴수록 처리량이 떨어진다. 가장 유력한 원인은?

    1. 거짓 공유 — 여러 슬롯이 한 캐시 라인에 들어가 소유권을 주고받고 있다
    2. 컨텍스트 스위치 비용이 선형으로 증가했다
    3. 카운터가 원자 연산을 쓰지 않아 값이 깨졌다
    4. 메모리 할당자가 잠금을 사용한다
  6. 원자 연산의 피연산자가 두 캐시 라인에 걸쳐 있을 때 벌어지는 일로 옳은 것은?

    1. 연산이 실패하고 예외가 발생한다
    2. 캐시 일관성 프로토콜 대신 외부 버스 잠금이 걸려 수백 사이클이 들고 다른 코어도 영향을 받는다
    3. 컴파일러가 자동으로 두 개의 원자 연산으로 쪼갠다
    4. 성능은 같고 정확성만 보장되지 않는다
  7. 메모리 계층에서 '용량'과 '대역폭'을 구분해야 하는 이유로 가장 적절한 설명은?

    1. 용량이 크면 대역폭도 비례해서 커지기 때문
    2. 대역폭은 하드웨어 스펙이고 용량은 소프트웨어 설정이기 때문
    3. 둘은 사실상 같은 지표를 다르게 부르는 것이기 때문
    4. 용량은 모델이 올라가느냐를, 대역폭은 얼마나 빨리 처리되느냐를 결정하는 서로 다른 질문이기 때문