[CS]메모리(Memory)

지영·2023년 6월 16일
1

CS

목록 보기
22/77
post-custom-banner

⛳ 오늘은 메모리의 계층 중 주요한 메인 메모리, 캐시 메모리에 대해 알아보겠습니다.

메모리의 사용 순서

  1. CPU에서 어떤 작업을 처리하고자 한다.

  2. 가상주소에 있는 데이터를 메모리에 요청한다.

  3. MMU(Memory Management Unit)이 가상주소를 물리주소로 번역한다.

  4. 물리주소를 캐시(or메인)메모리에 전달한다.

  5. CPU에 전달된 명령을 처리한다.

1. 메인 메모리

메인 메모리는 CPU가 직접 접근할 수 있는 접근 장치로, 프로세스가 실행되려면 프로그램이 메모리에 올라와야 한다.

만약, CPU가 메모리에 접근하는 것을 관리해주는 것이 있다면?

MMU

  • 명령어 수행 시 메모리에 필요한 데이터가 없다면 해당 데이터를 가져옴
  • *논리(가상) 주소 -> 물리 주소
  • 사용자가 기억장소를 일일이 할당해야 하는 불편함 해소
  • 메모리 보호, 캐시 관리 등 CPU가 메모리에 접근하는 것을 총 관리하는 하드웨어
  • 단, 가상주소를 사용해도 메모리 과할당이 일어날 수 있음, 이를 해결할 수 있는 것이 페이지 교체 알고리즘임.(*이전 포스팅 참고)

+) 🧐 가상주소 : 메모리 공간이 한정적이기 때문에, 사용자에게 더 많은 메모리를 제공하기 위해 도입. 따라서 프로세스의 크기가 실제 메모리 용량을 초과해도 실행 될 수 있음

MMU의 메모리 보호

  • BASE : 레지스터는 메모리상의 프로세스 시작주소를 물리 주소로 저장
  • LIMIT : 프로세스의 사이즈를 저장

프로세스는 독립적인 메모리 공간을 가져야 되고, 자신의 공간만 접근해야 함, 따라서 한 프로세스에게 합법적인 주소 영역을 설정하고, 잘못된 접근이 오면 trap을 발생시키며 보호함

2. 캐시

주기억장치에 저장된 내용의 일부를 임시로 저장해두는 기억장치, CPU와 주기억장치 사이에 위치한 고속 버퍼 메모리

  • CPU(빠름)와 주기억 장치 사이(느림)의 속도 차이를 극복하기 위한 방법
  • CPU가 이미 봤던 것을 재접근 시, 캐시에 저장해둔 데이터를 활용하여 메모리 참조,인출 비용을 줄임
  • SRAM으로 되어 있어 DRAM보다 빠른 장점
    +) 🧐 SRAM은 회로의 대칭 구조로 인해서 DRAM보다 상대적으로 입출력 속도가 빠르다.
    SRAM은 DRAM보다 빠르지만 가격이 비싸 cache나 register를 구성하는데 사용,
    DRAM은 SRAM에 비해 느리지만 가격이 저렴하여 주기억장치에 주로 사용

캐시의 Hit ratio (적중률) 🎯

CPU에서 주소를 전달 → 캐시 기억장치에 명령이 존재하는지 확인

Hit

해당 명령어를 CPU로 전송 → 완료

Miss

명령어를 갖고 주기억장치로 접근 → 해당 명령어를 가진 데이터 인출 → 해당 명령어 데이터를 캐시에 저장 → 해당 명령어를 CPU로 전송 → 완료

  • 결과적으로 CPU가 어떤 데이터를 원할지 어느정도 예측할 수 있어야 함

(캐시에 많이 활용되는 쓸모 있는 정보가 들어있어야 성능이 높아짐)

지역성의 원리

: 적중률을 극대화시키기 위해 사용

+) 🧐 지역성 : 기억 장치 내의 정보를 균일하게 액세스 하는 것이 아니라 한 순간에 특정부분을 집중적으로 참조하는 특성

  • 시간 지역성 : 최근에 참조된 주소의 내용은 곧 다음에도 참조되는 특성

  • 공간 지역성 : 실제 프로그램이 참조된 주소와 인접한 주소의 내용이 다시 참조되는 특성

캐싱 라인(Caching Line)

목적 데이터를 바로 접근하여 출력할 수 있어야 캐시가 의미가 있기때문에, 특정 자료구조를 사용하여 묶음으로 저장
즉, 캐시 메모리의 매핑 프로세스라고 말할 수 있음

1. 직접 매핑(Direct Mapping)

메모리 주소와 캐시의 순서를 일치 시켜 지정된 캐시 라인으로만 사상하는 방식으로
하지만 특정메모리 위치의 값을 자주 불러다 사용한다면 저장할 캐시 공간은 1개이므로 매번 캐시 교체가 일어남
즉 적중률과 성능이 낮지만 구현이 간단하고 쉬운 방법

2. 연관 매핑(Associative Mapping)

순서를 일치시키지 않고 필요한 메모리 값을 캐시의 어디든 편하게 저장한다
찾는 과정은 복잡하고 느리지만 필요한 캐시 위주로 저장하기에 적중률은 높다.

3. 직접 연관 매핑( Set Associative Mapping)

연관매핑과 직접매핑을 합쳐놓은 방식.
순서를 일치시키면서 일정 그룹을 두지만, 그 그룹내에서는 편하게 저장하는 방식이다.
블록화가 되어있어 검색에 조금더 효율적이며 적중률이 많이 떨어지지도 않는다.

profile
꾸준함의 힘을 아는 개발자📍
post-custom-banner

0개의 댓글