CH06_ 메모리와 캐시 메모리

Jobmania·2023년 5월 3일
0

컴퓨터 구조

목록 보기
6/8
post-thumbnail

06-1 강 RAM의 특징과 종류

"주기억 장치(Main Memory)는 RAM과 ROM 두가지가 있지만 '메모리'는 RAM을 지칭하는 경우가 많다!!"

RAM의 특징.

RAM은 실행할 대상을 저장, 전원이 끄면 내용이 소실되는 휘발성 저장장치이다.

RAM의 용량과 성능.

"RAM의 용량이 커지면 생기는 이점은??"

작을 경우

  • CPU가 동시에 여러프로그램을 실행하는데 실행시간이 길어진다..
  • 보조기억장치에서 데이터를 들고오기 때문에

클 경우

  • 보조기억장치에서 덜 거치기때문에 상대적으로 빠름.

마치 책상과 책장에 비유가 가능함.
책상(메모리)이 크다면 그만큼 책장(보조기억장치)을 많이 안 왔다갔다하면서 책(명령어)을 여러번 읽을 수잇다.

하지만 완전 비례는 아니다.

메모리의 용량이 필요 이상 커졌을때는 실행 속도가 그에 비례해서 증가하지는 않는다!!

RAM의 종류.

  • DRAM
  • SRAM
  • SDRAM
  • DDR SDRAM

DRAM (Dynamic Ram)

  • 저장된 데이터가 동적(Dynamic)으로 사라지는 RAM이다.
  • 그래서 데이터 소멸을 막기 위해서 주기적으로 재활성화(Refresh)를 해야한다.
  • 이런 단점이 있지만! 일반적으로 메모리로 사용되는 RAM
  • 상대적으로 소비전력이 낮고, 저렴, 집적도(더작고 빡빡하게)를 높아, 대용량으로 설계하기가 용이하기 때문.

SRAM(Static Ram)

  • 저장된 데이터가 정적(Static)인 RAM으로 전원이 연결되어 있다면 저장된 데이터가 사라지지 않는다.
  • DRAM보다 입출력 속도는 빠르나 소비전력과 가격이 높으며, 집적도가 낮음
  • 그래서 대용량으로 설계할 필요는 없으나 빨라야 하는 장치(캐시메모리)에 사용..

DRAM VS SRAM

SDRAM(Synchronous Dynamic RAM)

"SRAM과 DRAM을 합친건 아니다.."

  • 특별한 DRAM(발전된 형태)
  • 클럭신호와 동기화(Synchronous)된 DRAM이다

DDR SDRAM(Double Data Rate SDRAM)

  • 특별한 SDRAM(발전된 형태)
  • 대중적인 RAM
  • 대역폭을 넓혀 속도를 빠르게 만듬

    대역폭(data rate)이란?
    DDR SDRAM VS SDRAM(Single Data Rate SDRAM)
    SDRAM은 한 클럭에 하나씩 데이터를 주지만, 반면에 DDR은 데이터 전송속도가 두배가량 빠르다!!

DDR2, DDR3...

DDR2 SDRAM은 DDR SDRAM보다 2배의 대역폭을 가지고 있고
DDR3 SDRM은 DDR2 SDRAM보다 2배의 대역폭을 가지고 있다.
즉 DDR3는 DDR보다 8배의 대역폭을 가지고 있다. !

  • 요새 대중적인 RAM은 DDR4 RAM이다~

나의 노트북 메모리는 ??

DDR4 8GB를 두개사용

06-2 강 메모리의 주소 공간.

"메모리 주소는 물리 주소와 논리주소가 있다."

  • 물리주소 : 메모리 하드웨어가 사용하는 주소
  • 논리주소 : CPU와 실행중인 프로그램이 사용하는 주소.

물리 주소와 논리주소

" CPU와 실행중인 프로그램은 현재 메모리에 몇 번지에 무엇이 저장되어 있는지 다 알 고 있을까용?" - > NO!

  • 새롭게 실행되는 프로그램이 시시때때로 적재된다.
  • 실행이 끝나 프로그램은 삭제된다.
  • 같은 프로그램이더라도 실행될때마다 적재되는 주소는 달라진다.

물리 주소

-메모리 입장에서 본 주소

  • 실제로 저장된 하드웨어상 주소

논리 주소

  • cpu와 실행중인 프로그램 입장에서 본 주소
  • 실행중인 프로그램에 부여된 0번지부터 시작되는 주소를 의미..
  • 논리 주소의 0번지는 각 프로그램마다 가지고 있음
  • 물리주소의 주소는 고유값.

물리주소와 논리주소의 주소 변환이 필요함..

  • 그래서 논리주소를 물리주소로 변홚해서 처리해야함

메모리 관리 장치 MMU(Memory Management Unit)

MMU는 하드웨어에 의해서 논리주소는 물리주소로 변환된다.

  • MMU는 논리 주소와 베이스 레지스터 값을 더하여 논리주소를 물리 주소로 변환환다.

    기준 주소로 부터 100번지 데이터 삭제해줘 ->
    MMU 베이스레지스터의 기준주소 15000 ->
    메모리 상 실제 주소 15000+100 번지 물리주소 값 데이터 삭제!

베이스 레지스터 : 프로그램의 가장 작은 물리주소, 즉 프로그램의 첫 물리 주소를 저장

논리주소 : 프로그램의 시작점으로부터 떨어진 거리

메모리 보호 기법

"이러한 명령어는 어떻게 될까? 또한 안전할까?"

-> 다른 프로그램의 영역을 침범하는 명령어가 된다!..
그래서! 다른영역을 침범하는 논리 주소를 막아야한다

한계 레지스터(Limit register)

  • 프로그램의 영역을 침범할 수 있는 명령어의 실행을 막음.
  • 베이스 레지스터가 실행 중인 프로그램의 가장 작은 물리주소를 저장한다면, 한계 레지스터는 논리 주소의 최대 크기를 저장한다.
  • 베이스 레지스터 값 <= 프로그램 물리주소 < 베이스 레지스터 + 한계 레지스터 값

  • 그래서 CPU는 메모리 접근하기 전 접근하고자 하는 논리주고사 한계레지스터보터 작은지를 항상 검사한다!
  • 이렇게 실행 중인 프로그램의 독립적인 실행공간은 확보하고 하나의 프로그램이 다른 프로그램을 침범하지 못하도록 보호 가능!!

06-3 강 캐시 메모리

"CPU가 메모리 접근하는 속도는 레지스터 접근속도보다 느려 성능과 관련이 있다! 그래서 이를 극복하기 위한 저장 장치가 캐시메모리 이다!"

저장 장치 계층 구조(Memory hieracrchy)

일반적으로 '빠른 저장장치'와 '용량이 큰저장장치'는 양립하기 어렵다.

  • CPU와 가까운 저장창치는 빠르고, 멀리있는 저장장치는 느리다.
  • 속도가 빠른 저장장치는 저장용량이 작고, 가격이 비싸다.

캐시 메모리

  • CPU와 메모리 사이에 위치한 레지스터보단 용량이 크고 메모리보단 빠른 SRAM 기반의 저장 장치
  • CPU의 연산속도와 메모리 접근 속도의 차이를 조금이나마 줄이기 위해 탄생
  • CPU가 매번 메모리에 왔다갔다 하는 것보다 CPU가 사용할 일부 데이터를 미리 캐시 메모리로 가지고 와서 쓰자!!


계층적 캐시 메모리(L1-L2-L3 캐시)

  • 캐시 메모리들은 CPU(코어)와 가까운 순서대로 계층을 구성.
  • 일반적으로 L1,L2캐시는 CPU코어 내부, L3캐시는 코어 외부에 위치.
  • 용량 1<2<3, 속도 1>2>3

멀티 코어 프로세서에서의 캐시메모리

  • L1,L2는 코어마다 하나씩, L3는 공유하는 캐시메모리
    🎇 멀티코어에서는 L1, L2등 캐시 내용이 달라질수도 있기 때문에 Sync를 맞춰주는 중요 하다!!

분리형 캐시(Split cache)

  • 코어와 가장 가까운 L1캐시는 조금이라도 접근 속도를 빠르게 만들기 위해서 명령어만을 저장하는 L1캐시인 L1l 캐시와 데이터만을 저장하는 L1D캐시로 분리하기도 한다!
  • 또한 클라우스 스토리지 등 여러가지 하위 계층도 있을 수 있다!!

참조 지역성 원리

"모든 내용을 저장할 수 없기때문에 캐시메모리는 어떤 데이터를 저장해야될까???" -> CPU가 자주 사용할 법한 내용을 예측하여 저장하자!!

캐시히트! (예측에 성공)

캐시미스! (예측에 실패)

캐시 적중률!

  • 캐시 히트 횟수 / (캐시히트횟수 + 캐시 미스횟수)
  • 일반적으로 85~95%

    즉, 캐시 적중률을 높여야한다! == CPU가 사용할 법한 데이터를 잘 예측해야한다. -> 데이터 예측하는방법, 참조 지역성의 원리

CPU의 경향성

  1. CPU 는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있다.
  2. CPU 는 접근한 메모리 공간 근처를 접근하려는 경향이 있다.

여기서 변수(num)에 다시 접근하려는 경향이 있다! -> 시간 지역성(temporal locality)

private int gugu(){
		int num  = 2;
        for(int i = 0 ; i < =9 ; i ++){
        System.println(num * i);
        }
	}

접근한 메모리 공간 근처를 접근하려는 경향 -> 공간지역성(spatial locality)
서로 연관된 데이터들은 관련데이터끼리 모여서 저장된다.

profile
HelloWorld에서 RealWorld로

0개의 댓글