기억장치

  • 모든 컴퓨터시스템들은 프로그램과 데이터를 저장하기 위한 장치로서 주기억 장치보조저장장치를 가지고 있음
  • 기억장치는 CPU가 직접 액세스할 수 있는 내부 기억장치와 장치 제어기를 통하여 액세스할 수 있는 외부 기억장치로 구성

1. 기억장치의 분류와 특성

  • CPU가 어떤 정보를 기억장치에 쓰거나 기억장치로부터 읽는 동작을 액세스한다고 말함
  • 기억장치의 액세스 유형
    1. 순차적 액세스: 기억장치에 저장된 정보들을 처음부터 순서대로 액세스. 정보가 저장된 위치에 따라 액세스 시간이 달라짐
    2. 직접 액세스: 읽기/쓰기 장치를 정보가 위치한 근처로 직접 이동시킨 다음에, 순차적 검색으로 최종 위치에 도달하여 액세스 하는 방식
    3. 임의 액세스: 기억 장소들이 임의로 선택될 수 있으며, 기억장치 내의 어떤 위치든 동일한 액세스 시간이 걸리는 방식
    4. 연관 액세스: 각 기억 장소에 포함된 key값의 검색을 통하여 액세스할 위치를 찾아내는 방식
  • 기억장치 시스템을 설계하는 데 있어 고려해야 할 주요 특성은 용량액세스 속도
  • 기억장치에서 용량을 나타내는 단위는 바이트(byte) 혹은 단어(word)
  • 전송 단위: CPU가 한 번의 기억장치 액세스에 의해 읽거나 쓸 수 있는 비트 수
    • 외부 기억장치에서는 데이터가 단어보다 훨씬 큰 단위로 전송되기도 하는데, 그 단위를 블록이라 부름
  • 주소지정 단위: 하나의 주소에 의해 액세스되는 비트들의 그룹
  • 액세스 속도와 관련된 파라미터
    • 액세스 시간: 주소와 읽기/쓰기 신호가 기억장치에 도착한 순간부터 데이터가 저장되거나 읽혀지는 동작이 완료될 때 까지의 시간
    • 기억장치 사이클 시간: 액세스 시간과 데이터 복원 시간을 합한 시간
    • 데이터 전송률: 기억장치로부터 초당 읽혀지거나 쓰여질 수 있는 비트 수
      • (1/액세스 시간) X (한 번에 읽혀지는 데이터 바이트의 수)
  • 휘발성 기억장치: 전력공급이 중단되면 저장된 내요이 사라지는 기억장치
  • 비휘발성 기억장치: 전력공급이 중단되어도 저장된 내용이 그대로 유지되는 기억장치

2. 계층적 기억장치시스템

  • 기억장치들은 유형에 따라 기능, 속도, 용량 및 가격이 매우 다양
  • 컴퓨터시스템에서는 여러 유형의 기억장치들을 계층적으로 구성하여 설치함으로써, 평균 기억장치 액세스 속도를 높이면서 가격대비 성능비도 적절히 유지되도록 하는 계층적 기억장치시스템을 구성함

2-1. 필요성 및 효과

  • 액세스 속도가 높아질수록, 비트당 가격도 높아짐
  • 용량이 커질수록 비트당 가격은 낮아짐
  • 용량이 커질수록 액세스 속도는 낮아짐
  • 지역성의 원리: CPU가 기억장치의 한정된 몇몇 영역들을 집중적으로 액세스하면서 작업을 수행한다는 원리
  • 지역성의 원리로 인해 계층적 기억장치시스템의 효율이 극대화되게 됨

2-2. 기억장치 계층

  • 상위 기억장치 계층으로 올라갈수록...
    • 비트당 가격이 높아지고,
    • 용량이 감소하며,
    • 액세스 시간은 짧아지고,
    • CPU에 의한 액세스 빈도는 높아짐
  • 내부 기억장치: CPU 레지스터 - 캐시 - 주기억장치
  • 외부 기억장치(by. 장치 제어기): 디스크 캐시 - 디스크 - 자기 테이프 및 CD-ROM
    • 주로 프로그램 파일들과 데이터 파일들이 저장되며, 바이트나 단어 단위가 아닌 블록이나 레코드 단위로 액세스 가능
  • 하위 계층으로 내려갈수록 용량이 더 커지고 비트당 가격은 떨어지는 반면에, 지역성의 원리로 인하여 액세스 빈도가 더 낮아짐

3. 캐시 메모리

  • CPU와 주기억장치의 속도 차이를 보완하기 위하여 그 사이에 설치하는 반도체 기억장치
  • CPU가 원하는 데이터가 이미 캐시에 적재되어 있는 상태가 캐시 적중(cache hit)
  • CPU가 원하는 데이터가 캐시에 없는 상태는 캐시 미스(cache miss)
  • 캐시 적중률: H = 캐시에 적중되는 횟수 / 전체기억장치 액세스 횟수
    • 캐시 미스율 = 1 - H
  • 평균 기억장치 액세스 시간, Ta = H x Tc + (1-H) x Tm
    • Tc: 캐시 액세스 시간
    • Tm: 주기억장치 액세스 시간
  • 지역성의 종류
    • 시간적 지역성: 최근에 액세스된 프로그램 코드나 데이터가 가까운 미래에 다시 액세스될 가능성이 높아지는 특성
    • 공간적 지역성: 기억장치 내에 서로 인접하여 저장되어 있는 데이터들이 연속적으로 액세스될 가능성이 높아지는 특성
    • 순차적 지역성: 분기가 발생하지 않는 한, 명령어들은 기억장치에 저장된 순서대로 인출되어 실행됨
  • 캐시 설계의 공통적 목표
    • 캐시 적중률의 극대화
    • 캐시 액세스 시간의 최소화
    • 캐시 실패에 따른 지연시간의 최소화
    • 주기억장치와 캐시간의 데이터 일관성 유지 및 그에 따른 오버헤드 최소화

3-1. 캐시 용량

  • 캐시의 용량이 커질수록 적중률이 높아짐
  • 그러나 비용도 같은 비율로 상승하기 때문에 캐시의 용량은 비용과의 상호조정을 통하여 적절히 결정해야 함

3-2. 인출 방식

  • 요구 인출: 캐시 미스가 발생한 경우 CPU가 필요한 정보만 캐시로 인출해오는 방식
  • 선인출: CPU가 필요한 정보 외에도 그와 인접해 있는 정보들을 함께 캐시로 인출해오는 방식
    • 주기억장치를 액세스할 때 함께 인출되는 정보들의 그룹을 블록이라 부름
  • 캐시 라인: 주기억장치로부터 캐시로 인출되는 단위인 한 블록이 적재되는 캐시 내 공간
    • 캐시의 각 라인은 여러 개의 블록들에 의해 공유됨
    • 태그: 캐시 라인을 공유하는 블록들 중에서 어느 것이 적재되어 있는지를 가리키는 비트들

3-3. 사상 방식

  • 주기억장치 블록이 어느 캐시 라인에 적재될 수 있는지를 결정해주는 알고리즘
  • 캐시 적중률에 많은 영향을 미치는 주요 설계 요소

1) 직접 사상
  • 주기억장치 블록이 지정된 어느 한 라인에만 적재될 수 있는 사상 방식
  • 주기억장치의 블록 j가 적재될 수 있는 캐시 라인의 번호 i는 modulo 함수에 의해 결정
    • i = j % m(캐시 라인의 수)
  • 캐시의 각 라인에는 태그와 데이터 블록이 함께 저장되며, 캐시 적중 여부는 주소의 태그 비트들과 라인에 저장된 태그 비트들을 비교함으로써 결정됨

2) 완전-연관 사상
  • 주기억장치 블록이 캐시의 어느 라인으로든 적재될 수 있는 사상 방식
  • 주기억장치 블록이 캐시의 어떤 레인에든 적재될 수 있으므로, 캐시 적중 여부를 검사할 때 캐시의 모든 라인들의 태귿르과 주기억장치 주소의 태그 필드 내용을 비교하여 일치하는 것이 있는 지 확인해야 함
    • 많은 수행시간이 걸릴 것이므로, 연관 기억장치 등을 이용하여 비교 동작이 병렬로 신속히 이루어질 수 있도록 구성해야 함
  • 완전-연관 사상에서는 새로운 블록이 캐시로 적재될 때 라인의 선택이 자유롭기 때문에, 프로그램 세그먼트나 데이터 배열 전체가 캐시로 적재될 수 있음
    • 이 경우 만약 지역성이 높다면 적중률이 매우 높아질 것
  • 그러나 모든 태그들을 병렬로 검사하기 위하여 복잡하고 비용이 높은 하드웨어를 포함해야 한다는 단점 때문에 실제로 거의 사용되지 않음

3) 세트-연관 사상
  • 주기억장치 블록이 지정된 어느 한 세트로만 적재될 수 있으며, 각 세트는 두 개 이상의 라인들로 구성된 사상 방식
  • 캐시는 v개의 세트들로 나누어지며, 각 세트는 k개의 라인들로 구성
  • 주기억장치 블록이 적재될 수 있는 캐시 세트의 번호 i = j mod v
  • 세트당 라인이 k개씩 있으면 k-way 세트-연관 사상
  • 세트-연관 사상에서 세트의 수가 캐시 라인의 수가 같고(v=m), 세트 내 라인의 수 k=1이라면, 이 방식은 직접 사상과 같아짐
  • 세트의 수 v=1이고, 세트 내 라인 수가 캐시의 전체 라인 수와 같다면(k=m), 완전-연관 사상에 해당
  • 2-way 세트-연관 사상이 가장 보편적으로 사용되고 있는 세트-연관 조직
    • 직접 사상보다 적중률이 훨씬 높음

3-4. 교체 알고리즘

  • 캐시 미스가 발생하여 새로운 블록이 주기억장치로부터 캐시로 올라왔을 때, 그 블록이 적재될 수 있는 라인들이 이미 다른 블록들로 채워져 있다면, 그 블록들 중의 하나는 교체되어야 함
  • LRU(Least Recently Used) 알고리즘: 세트 라인에 적재되어 있는 블록들 중에서 최근의 사용 빈도가 가장 낮은 블록을 선택하여 교체하는 방식
  • FIFO(First in First Out) 알고리즘: 캐시에 적재된 지 가장 오래된 블록을 교체하는 방식
  • LFU(Least Frequently Used) 알고리즘: 캐시에 적재된 이래 사용된 빈도가 가장 낮은 블록을 교체하는 방식
  • Random: 후보 라인들 중에서 한 라인을 임의로 선택하는 방식

3-5. 쓰기 정책

  • 캐시에 적재되어 있는 데이터는 주기억장치에 있는 데이터의 복사본에 불과
  • 따라서 캐시 데이터가 변경되면, 주기억장치에 있는 해당 데이터도 갱신하여 같은 값을 가지고 있도록 해야 함
  • But, 캐시에서 데이터가 변경될 때마다 주기억장치에도 그 값을 갱신하면 기억장치 쓰기 시간이 그 만큼 더 길어짐
  • 캐시의 라인을 교체할 때마다 해당 데이터가 캐시에 적재되어 있는 동안 '수정된'적이 있는 지를 확인
    • 수정된 적이 없다면, 그 데이터가 포함된 라인에 다른 블록 즉시 적재 가능
    • 수정된 적이 있다면, 수정된 데이터가 포함된 라인의 내용을 주기억장치의 해당 블록에 저장한 다음 새로운 블록을 적재
  • 이와 같이 캐시에 적재된 데이터를 새로운 값으로 변경할 때 주기억장치에 갱신하는 시기와 방법을 결정하는 것이 쓰기 정책
    • write-through: 캐시에 쓰기 동작을 수행할 때 주기억장치에도 동시에 이루어지는 방식
      • 주기억장치의 내용들은 항상 유효하지만, 쓰기 동작에 걸리는 시간이 길어짐
    • write-back: 쓰기 동작이 캐시까지만 이루어지는 방식
      • 기억장치에 대한 쓰기 동작의 횟수가 최소화되고 쓰기 시간이 짧아짐
      • 그러나, 새로운 블록 적재 때 라인 데이터가 수정된 경우 주기억장치 갱신에 추가적 시간이 소요됨
      • 또한 캐시에서 수정된 내용이 갱신될 때까지 주기억장치의 해당 블록이 무효 상태에 있게 됨
      • 데이터 불일치 문제: 주기억장치에 저장된 데이터와 캐시들에 적재된 복사본이 서로 다른 값을 가지는 현상

3-6. 다중 캐시

1) 온-칩 캐시와 계층적 캐시
  • 온-칩 캐시: CPU 칩 내부에 포함되어 있는 캐시
  • 인출할 명령어나 데이터가 온-칩 캐시에 있다면 액세스 시간이 더 짧아져서 전체 시스템의 성능 향상에 도움이 됨

  • 계층적 캐시: 여러 레벨의 캐시들을 계층적으로 설치한 구조
    • L2가 L1의 슈퍼-세트
  • L1과 L2에서는 서로 다른 사상 알고리즘과 교체 알고리즘 및 쓰기 정책이 사용되는 경우가 많음
    • 따라서 이러한 계층적 캐시 시스템에서는 데이터 일관성 유지가 더 복잡해짐

2) 분리 캐시
  • 최근에는 온-칩 캐시를 명령어만 저장하는 명령어 캐시와 데이터만 저장하는 데이터 캐시로 분리시켜 용도를 구분
  • 명령어 실행 파이프라인에서 명령어 인출 단계와 오퍼랜드 인출 단계 간에 캐시에 대한 충돌 현상 제거 가능


'Software Convergence > Computer Architecture' 카테고리의 다른 글

폰 노이만 아키텍쳐  (0) 2018.09.09
CPU의 구조와 기능  (0) 2018.09.08
시스템 버스, I/O 및 인터럽트  (0) 2018.09.07

+ Recent posts