[오늘의 배움] 015 컴퓨터구조 메모리 체계 - 1

이상민·2020년 12월 8일
0

[오늘의 배움]

목록 보기
15/70
post-thumbnail

1. 메모리 계층 구조

용량, 비용, 속도를 효율적으로 사용하기 위해 메모리는 계층 구조를 가진다


2. 지역성의 원리

프로그램은 어떤 때든 주소 공간의 일부분만 접근한다

2-1. 시간적 지역성

  • 최근 접근한 요소를 다시 접근할 확률이 높다
    ex) loop의 induction variable

2-2. 공간적 지역성

  • 최근 접근한 요소 주변에 있는 요소에 접근할 확률이 높다
    ex) 절차적 명령어 접근, array

2-3. 지역성 활용하기

  • 메모리 계층 구조
  • 디스크에 모든 것 저장
  • 최근 접근한 요소와 그 주변 요소를 DRAM으로 복사
  • 더 최근에 접근한 요소와 그 주변 요소를 SRAM으로 복사
  • 복사 단위 = Block

3. 메모리 기술

3-1. DRAM 기술

  • DRAM의 bit는 2차원 배열으로 정렬
  • Capacitor에 1비트 저장
  • 한번에 한 row를 읽을 수 있음, row buffer 이용
  • DDR = 클럭 업/다운틱에 엑세스
  • capacitor의 한계로 속도 개선이 느려졌고 cpu와의 성능 차이가 심화됨

3-2. Flash Storage 기술

  • 비휘발성 반도체 저장매체
  • 디스크의 100~1000배 속도
  • NOR flash : Random read/write acces
  • NAND flash : block-at-a-time access
  • 비트 10,000번 접근 후 고장

3-3. Disk Storage 기술

  • 비휘발성 자기성 회전 저장매체
  • 단위 = sector
  • 각 sector : sector ID, Data(512B), ECC, Sync fields and gaps 기록
  • sector 접근 지연시간 = 순서 대기 + 헤드를 움직여 찾기 + 회전 지연 + 데이터 전송 + 컨트롤러 오버헤드
    ex) 512B sector, 15,000 rpm, 4ms seek, 100MB/s transfer, 0.2ms controller overhead
    >> 평균 읽기 시간 = 4ms + (0.5)/(15,000rpm/60min) + 512B/100MB/s + 0.2ms = 6.2ms
  • Disk 내 캐시 포함

4. 캐시 메모리

4-1. 캐시

  • CPU에 가장 가까운 메모리

  • Hit : CPU 접근 데이터가 캐시에 존재할 때

  • Miss : CPU 접근 데이터가 키시에 없을 때

  • 데이터의 접근은 주소로 하기 때문에 캐시도 주소 정보를 가지고 있어야함
    = tag

4-2. 직접 사상 캐시

  • 주소와 캐시 블럭 사이즈 모듈러 연산으로 위치 결정

  • 캐시 블럭 사이즈 = 2^인덱스 비트 수

  • 단일 워드 블럭 직접 사상 캐시
    = 시간적 지역성 이용

  • 멀티 워드 블럭 직접 사상 캐시
    = 공간적 지역성 이용

4-3. 캐시의 저장 관리

  • 저장 관리를 하지 않으면 캐시와 메모리의 데이터가 모순될 수 있다
  • 캐시와 메모리의 데이터가 CPU의 작성 시 일관되게 관리해야한다

4-3-1. Write Through

  • 캐시에 쓸 때 메모리도 갱신한다
  • 쓰기 속도가 느려진다
  • write buffer를 통해 단점을 보완할 수 있다.

4-3-2. Write Back

  • 캐시에만 쓰고, dirty bit으로 모순된 데이터를 표시한다
  • dirty block이 다른 데이터로 대체될 때, 메모리에 쓴다

4-4. 캐시 성능

  • CPU time의 요소 : 프로그램 실행 사이클, 메모리 스톨 사이클

  • 메모리 스톨 사이클 : (메모리 접근 횟수/프로그램) * 미스율 * 미스 페널티
    ex) Inst-Cache miss rate = 2%, Data-Cache miss rate = 4%, CPI = 2
    Miss penalty = 100 cycles, Load & Store 36% of instructions
    Miss cycles per instruction : I-Cache = 0.02 * 100, D-Cache = 0.36 * 0.04 * 100
    Actual CPI = 2 + 2 + 1.44 = 5.44

  • Average Memory Access Time = Hit time + Miss rate * Miss penalty
    1ns clock, hit time = 1 cycle, mis penalty = 20 cycle, I-cache miss rate = 5%
    1ns + 0.05 * 20ns = 2ns = 2 cycles per instruction

profile
편하게 읽기 좋은 단위의 포스트를 추구하는 개발자입니다

0개의 댓글