컴퓨터구조론#8

LeeMir, 19 April 2021

제5장 기억장치(이어서)


반도체 기억장치
  • 제조기술에 따른 분류
    • DRAM
      • 집적 밀도가 높음
      • 데이터의 저장 상태를 유지하기 위하여 주기적인 재충전(refresh) 필요
      • 같은 용량의 SRAM보다 비트당 가격이 더 저렴
      • 용량이 큰 주기억장치로 사용
    • SRAM
      • 기억 소자로서 플립-플롭(flip-frop)을 이용
        • 집적 밀도가 낮음
      • 전력이 공급되는 동안에는 재충전 없이도 데이터 계속 유지 가능
      • DRAM보다 다소 더 빠름
      • 높은 속도가 필요한 캐시 메모리로 사용
  • ROM
    • 영구 저장이 가능한 반도체 기억장치
    • 읽기만 가능, 쓰기는 불가능
    • 주로 사용되는 곳
      • 시스템 초기화 및 진단 프로그램
      • 빈번히 사용되는 함수들을 위한 서브루틴들
      • 제어 유니트의 마이크로 프로그램
    • ROM의 종류
      • PROM(Programmable ROM)
        • 사용자가 한 번은 쓰는 것이 가능한 ROM
      • EPROM(Erasable PROM)
        • 자외선을 이용하여 내용을 지우는 것이 가능한 PROM
        • 여러 번 쓸 수 있음
      • EEPROM(Electrically EPROM)
        • 전기적으로 지울 수 있는 EPROM
        • 데이터 갱신 횟수 제한(수만 번 정도)
      • 플래시 메모리(Flash Memory)
        • NAND형
          • 페이지 단위 읽기/쓰기 가능, 블록 단위 삭제
          • NOR형은 바이트 단위 읽기/쓰기 가능
        • 삭제 시간이 EEPROM에 비하여 더 빠르고, 집적 밀도도 더 높음
        • 삭제 횟수 제한(10만 ~ 100만 번)
        • 하드 디스크를 대체하는 SSD(Solid State Disk)의 구성요소
기억장치 모듈의 설계
  • 기억장치 칩의 데이터 I/O 비트 수가 단어 길이보다 적은 경우
    • 여러 개의 칩을 병렬로 접속해 기억장치 모듈을 구성해야함
    • 주소 비트와 칩 선택 신호(CS)는 병렬로 연결된 칩들에 공통으로 접속, 출력만 늘어남
    • CS에 바가 붙어있으면 Active Low, 안 붙어있으면 Active High
      • Active High : 전기신호가 0V => 5V일 때 동작
      • Active Low : 5V => 0V일 때 동작
  • 필요한 기억장 소의 수가 각 기억장치 칩의 기억 장소 수보다 많은 경우
    • 여러 개의 칩들을 직렬 접속하여 기억장치 모듈을 구성해야함
    • 늘어난 주소 입력 비트는 칩 선택 신호로 입력됨
      • 4비트 => 5비트로 늘어났을 때, 상위 1비트는 칩 선택 신호로 사용
      • 나머지 4비트는 두 칩에 공통으로 접속
  • 기억장치 모듈의 설계 순서
    • 컴퓨터 시스템에 필요한 기억장치 용량 결정
    • 사용할 칩들을 결정하고, 주소 표(address table 작성)
    • 세부 회로 설계
캐시 메모리
  • 사용 목적 : CPU와 주기억장치의 속도 차이로 인한 CPU 대기 시간을 최소화 시키기 위하여 CPU와 주기억장치 사이에 설치하는 고속 반도체 기억장치
  • 특징
    • 주기억장치(DRAM)보다 액세스 속도가 더 높은 칩(SRAM) 사용
    • 가격 및 제한된 공간 때문에 용량이 적음
  • 캐시 적중(Cache Hit)
    • CPU가 원하는 데이터가 캐시에 있는 상태
  • 캐시 미스(Cache Miss)
    • CPU가 원하는 데이터가 캐시에 없는 상태
    • 이 경우에는 주기억장치로부터 데이터를 읽어옴
  • 적중률(Hit Ratio)
    • 캐시에 적중되는 정도
    • 캐시에 적중되는 횟수 / 전체 기억장치 액세스 횟수
    • 프로그램과 데이터의 지역성(Locality)에 따라 달라짐
  • 미스율(Miss Ratio)
    • (1 - Hit Ratio)
  • 평균 기억장치 액세스 시간
    • Hit Ratio * 캐시 엑세스 시간 + (1 - Hit Ratio) * 주 기억장치 액세스 시간
  • 지역성
    • 시간적 지역성(Temporal Locality)
      • 최근에 액세스된 프로그램이나 데이터가 가까운 미래에 다시 액세스 될 가능성이 높음
    • 공간적 지역성
      • 기억장치내에 인접하여 저장되어 있는 데이터들이 연속적으로 액세스 될 가능성이 높음
    • 순차적 지역성
      • 분기(Branch)가 발생하지 않는 한, 명령어들은 기억장치에 저장된 순서대로 인출되어 실행
  • 캐시 설계에 있어서의 공통적인 목표
    • Hit Ratio의 극대화
    • 액세스 시간의 최소화
    • Miss에 따른 지연 시간의 최소화
    • 주기억장치와 캐시 간의 데이터 일관성 유지 및 그에 따른 오버헤드의 최소화
  • 캐시의 크기(용량)
    • 용량이 커질수록 Hit Ratio가 높아지지만, 비용이 증가
    • 용량이 커질수록 주소 해독 및 정보 인출을 위한 주변 회로가 더 복잡해지기 때문에 액세스 시간이 다소 더 길어짐
  • 인출 방식
    • 요구 인출(Demand Fetch) 방식
      • 필요한 정보만 인출해오는 방법
    • 선인출(Prefetch) 방식
      • 필요한 정보 외에 앞으로 필요할 것으로 예측되는 정보도 미리 인출
      • 지역성이 높은 경우에 효과가 큼
  • 사상 방식
    • 상대적으로 크기가 큰 메인 메모리에서 크기가 작은 캐시를 어떻게 효율적으로 이용할 것인가
    • 캐시부터 탐색해 존재하면 Hit, Miss가 발생하면 메인 메모리에서 값을 가져오고 캐시에도 적재
    • 완전-연관 사상(Fully-Acssociative Mapping)
      • 메인 메모리의 데이터를 캐시의 어느 공간에나 집어넣을 수 있음
      • 7-bit 주소에서 앞 5-bit를 Tag, 나머지 2-bit를 Word로 사용
      • Word Bit는 그 Cache Slot의 몇번째 Data를 뽑을 것인지를 뜻함
      • 라인 선택이 매우 자유로움
      • 지역성이 높으면 적중률이 매우 높아짐
      • 캐시의 모든 태그들을 병렬로 검사하기 위해 비용이 높은 연관 기억장치 및 복잡한 주변 회로가 필요
        • 비교기에 부담이 많이 가기 때문
    • 직접 사상(Direct Mapping)
      • 메인 메모리를 일정한 블록으로 나누고 각 블록을 캐시 메모리의 특정 위치와 매칭
      • 7-bit 주소에서 앞 2-bit를 Tag(블록 번호)로, 뒤 2-bit를 Word로 사용
        • 가운데 3-bit는 라인 번호로, 메인 메모리와 캐시의 라인 번호가 일치하는 곳에 할당
      • 하드웨어가 간단하고, 구현 비용이 적게 듦
      • 각 주기억장치 블록이 적재될 수 있는 캐시 라인이 한 개 뿐이기 때문에 그 라인을 공유하는 다른 블록이 적재되는 경우에는 Overwrite되거나 Swap-out됨
        • 따라서 Hit Ratio가 떨어질 수 있음
    • 세트-연관 사상(Set-Associative Mapping)
      • 캐시 메모리도 세트(블록)로 나눠서 메인 메모리 블록과 매칭
      • 7-bit 주소에서 앞 3-bit를 Tag로, 가운데 2-bit를 Set로, 뒤 2-bit를 Word로 사용
        • 캐시 메모리에서 한 Set에는 각각 두 공간이 있음
      • 완전-연관 사상과 직접 사상을 절충한 방식