728x90
Memory hierarchy

Memory hierarchy

  • 주 메모리에는 프로그램과 데이터가 저장
  • 한편 모든 프로그램을 할당하기에는 메모리 용량이 모자람
  • 주 메모리는 CPU와 연결
    • 현 시점에서 사용되는 프로그램/데이터가 주 메모리에 저장
  • 보조 저장소에는 그 외의 데이터가 저장
  • 싸고 빠를수록 CPU에 가깝고(레지스터, 메모리, ...), 느리고 쌀수록 주변장치에 저장(HDD, SSD, ...)

Main memory

  • CPU가 동작시키는 프로그램과 데이터가 저장
  • Static RAM / Dynamic RAM
    • 비용, 전력, 접근 시간 등에서 차이
  • ROM : 초기 프로그램(부트로더)가 저장
  • 전원 인가 후
    • 컴퓨터는 부트로더 맨 앞 주소의 데이터를 불러옴
    • 부트로더는 디스크에서 메인 메모리로 데이터를 가져옴

  • ROM
    • 읽기 기능이 없어 Chip select와 주소 입력만이 존재
    • 칩에 따라 read 입력이 있을 수도 있음
  • RAM
    • ROM에서 read, write 신호 입력이 추가
    • chip select 입력이 맞지 않거나, read/write 신호가 모두 low인 경우 high-z상태로 사용되지 않는 상태가 됨

Hard Disk

  • HDD의 구성 단위
    • Track : hdd에서 지름이 같은 하나의 동신원 구역
    • Sector : hdd를 중심을 기준으로 n등분했을 때 1개 구역
    • Cylinder : HDD는 여러 개의 판(platter)로 구성되는데, 플래터들의 같은 트랙의 집합을 실린더라고 칭한다.
  • HDD의 데이터 저장 : 헤드가 자기장을 가하면 데이터가 1, 가하지 않으면 0으로 인식

Assiciative memory(CAM)

  • 메모리 내용 자체가 주소 역할
  • RAM 대비 고기이나, 탐색 시 시간이 매우 빠름
  • CAM 동작
    • m개 word, n개 bit
    • Argument register에 데이터가 입력
    • 해당 데이터가 존재 시 Match register의 인덱스가 set
    • Argument register과 메모리 내용 사이에서 탐색할 범위를 Key register로 설정 (Masking)
    • 데이터를 쓸 때는 tag register가 사용 : 데이터의 저장 여부를 판단

Cache memory

  • 캐시 메모리의 동작
    • CPU가 데이터를 필요로 할 때, 캐시로 먼저 접근
    • 캐시 데이터 존재시 읽음
    • 캐시에 데이터가 존재하지 않을 경우 메모리 접근
  • hit ratio
    • CPU가 찾는 데이터가 캐시에 있을 확률
    • (1 - hit ratio) * main memory 접근시간 + cache memory 접근시간 = 평균 접근 시간
    • 반대어 : miss ratio(없을 확률)
  • mapping
    • RAM 데이터를 캐시로 옮기는 과정
    • Associative mapping
      • CAM을 이용한 addressing - 주소 | data로 된 표 형태로 저장
    • direct mapping
      • 주소 필드의 일부를 cache memory 접근 시 사용
      • cache memory의 tag register과 주소 필드의 tag register를 비교하여 동일할 경우 데이터를 가져옴
      • 불일치 시 원래 캐시 정보를 메인메모리로 갱신하고, 새로운 메인메모리 정보의 tag와 데이터 갱신
    • set associative mapping
      • direct mapping의 개선
      • 캐시의 tag-data 표가 2중으로 존재
  • replacement policy
    • 캐시 메모리의 용량이 제한되어 있기 때문에, miss로 인한 새 데이터 진입 시 갱신 알고리즘이 필요
    • LRU(Least Recently Used) : 가장 과거에 사용된 데이터가 갱신됨
    • FIFO : 가장 먼저 들어온 데이터가 갱신됨

  • cache의 read/write 정책
    • CPU가 캐시 word를 읽을 때 : 메인 메모리에 접근 x
    • 캐시에 쓸 때 : 메인 메모리는 갱신된 데이터를 저장해야 함 (coherency problem)
      • write through
        • 캐시 업데이트시마다 메모리 갱신
        • 이동하는 데이터가 많아짐(traffic problem)
      • write back : 캐시에 replace 발생 시 메모리 갱신
    • cache initialize
      • 캐시 각 주소에는 valid, dirty의 2가지 bit가 할당
      • valid는 데이터의 가용성을, dirty는 데이터의 변형 여부(coherence problem 여부)를 나타냄
      • write-back 정책의 경우 dirty bit가 설정되어 있으면 갱신하게 됨

Virtual Memory

  • 프로그램 실행 시 보조 장치(ex. HDD)의 데이터를 주 메모리에 적재 후 실행하게 됨
  • 이때 주 메모리의 크기보다 큰 프로그램은 다 적재할 수 없게되는 문제가 존재
    • 보조 저장 장치의 Controller를 이용하여 저장소 주소를 주 메모리로 Mapping함
    • 캐시 - 주 메모리의 관계와 유사하게 동작
  • 가상 메모리 존재 시 주소 space 크기는 실제 메모리 공간보다 크게 할당
    • 임베디드 등 가상메모리가 사용되지 않는 경우 주소필드와 메모리 영역은 동일

  • page를 이용한 주소 매핑
    • 실제 메모리는 일정 크기의 block으로 분할
    • 가상 메모리 주소는 일정 크기의 page로 분할 = 프로그램 실행 시 page 단위로 나누어 메모리에 적재
    • virtual address = page number + page line

  • virtual address 중 page number는 memory page table에 접근
    • page table의 주소로 접근하여 address를 반환
  • virtual address의 line number와 mem.page table에서 반환받은 값을 합쳐 실제 메모리로 접근
  • 실제 메모리가 할당 가능한 block 크기에 따라 memory page table도 갱신을 거쳐야 함(FIFO or LRU)
    • 경우에 따라 associative memory table을 이용하여 page / block을 대응시켜 mapping하기도 함

Memory management

  • segment : 논리적으로 연관 있는 명령어나 데이터의 집합
    • 서브루틴, 데이터 배열, symbol, 프로그램 등
    • 세그먼트 관리 시 인증되지 않은 접근에서 보호할 필요 존재
  • logical address는 segment, page, word로 구성됨
    • segment는 table을 거쳐 page와 합쳐짐
    • page table에서 block 위치를 탐색하여 word와 함께 실제 주소를 탐색
    • 최대 접근 가능한 메모리 주소는 page와 word 개수의 곱으로 나타남 2pagebit×2wordbit2^{pagebit}\times2^{wordbit}
728x90

+ Recent posts