Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags more
Archives
Today
Total
관리 메뉴

ultra_dev

메모리와 캐시 메모리 본문

혼자 공부하는 컴퓨터구조+운영체제

메모리와 캐시 메모리

ultra_dev 2023. 9. 10. 21:54

 

RAM의 특징과 종류

주기억장치의 종류에는 크게 RAM과 ROM 두 가지가 있고, 메모리라는 용어는 그 중 RAM을 지칭하는 경우가 많다.

 

보조기억장치 : 보관할 대상 저장 (비휘발성 저장 장치)

 

메모리가 : 실행할 대상 저장 → but 전원 꺼지면 증발 (휘발성 저장 장치)

 

cpu : 메모리로부터 명령어 같은 것 가져옴

 

 

만약

프로그램 A,B,C 크기가 10이고 RAM 크기가 3이라면?

 

RAM이 크면 프로그램 A,B,C를 다 복사해서 띄울수도 있겠지만

램이 작으면 프로그램 하나만 복사해서 띄움

 

이렇게 되면 만약 cpu가 여러개 실행하고 싶을 때

새 프로그램 실행할 때마다 램이 계속 보조기억장치에서 복사해서 가져와야 하니

성능이 저하될 것

 

즉 램이 크다면 cpu가 램에서 그때그떄 가져올 수 있으니 많은 프로그램 동시에 실행하는데 유리함

 


램의 종류

  • DRAM(Dynamic RAM)
    • 저장된 데이터가 동적으로 사라지는 RAM
      • 전원이 연결돼있어도 사라짐..!!!!
    • 데이터 소멸을 막기 위해 주기적으로 재활성화(리프레시, 다시금 저장) 해야됨
    • 일반적으로 메모리로 사용되는 RAM
      • why? 상대적으로 소비전력이 낮고 저렴하고 집적도가 높아서(빽빽하게 오밀조밀하게 설계 가능) 대용량으로 설계하기 용이하다.
  • SRAM(Static RAM)
    • 저장된 데이터가 정적인(사라지지 않는) RAM → 전원 끄면 당연히 휘발!!!
    • DRAM보다 일반적으로 더 빠름
    • 일반적으로 ‘캐시’메모리에서 사용되는 RAM
      • why? 상대적으로 소비전력이 높고, 가격이 높고, 집적도가 낮아(빽빽하게 설계 불가능) 대용량으로 설계할 필요는 없으나 빨라야 하는 장치에 사용된다!!
  • SDRAM(Synchronous DRAM)
    • 특별한(발전된 형태의) DRAM
    • 클럭 신호와 동기화된 DRAM (클럭 신호가 똑-딱 할때마다 한번에 하나씩 데이터 주고 받을 수 있는..!?)
  • DDR SDRAM(Double Data Rate SDRAM)
    • 대역폭(데이터를 주고받는 길의 너비)을 넓혀 속도를 빠르게 만든 SDRAM (클럭 신호 똑-딱할 때 더 많은 데이터 주고 받음)
    • 특별한(발전된 형태의) SDRAM
    • 최근 가장 대중적으로 사용하는 RAM
    • DDR DRAM vs SDRAM( SDR(Single Data Rate) SDRAM.. SDRAM은 싱글데이타레이트 SDRAM이라고도 부름)
    • DDR2 SDRAM은 DDR SDRAM 대역폭의 2배! 즉 SDR SDRAM보다 대역폭이 4배인 것
    • DDR3 SDRAM은 DDR2 SDRAM 대역폭의 2배! 즉 SDR SDRAM의 8배
    • DDR4 SDRAM은 DDR3 SDRAM 대역폭의 2배! 즉 SDR SDRAM의 16배 (현재 가장 대중적)


메모리의 주소 공간

cpu와 실행중인 프로그램은 메모리 몇 번지에 무엇이 저장되어 있는지 다 알지 못한다

메모리에 저장된 값들은 시시각각 변하기 때문이다

  • 새롭게 실행되는 프로그램은 새롭게 메모리에 적재
  • 실행이 끝난 프로그램은 메모리에서 삭제
  • 같은 프로그램을 실행하더라도 실행할 때마다 적재되는 주소는 달라진다

이러한 점을 극복하기 위해 주소체계를 물리주소와 논리주소로 나눔


물리 주소

  • 메모리 입장에서 바라본 주소
  • 말 그대로 정보가 실제로 저장된 하드웨어 상의 주소

논리 주소

  • CPU와 실행중인 프로그램 입장에서 바라본 주소
  • 실행중인 프로그램 ‘각각에게’ 부여된 0번지부터 시작하는 주소

ex)

물리 주소에서 0번지는 1개이지만, 논리 주소에서는 여러개 존재

이때 메모리에 실제 0번지는 1개 밖에 없으니 물리 주소와 논리 주소의 변환이 필요!

 

그렇다면 물리 주소와 논리 주소간의 변환은 어떻게 이루어지는가

MMU라고 부르는 메모리 관리 장치(하드웨어)를 통해 cpu가 이해하고 있는 논리 주소를 물리 주소로 변환해준다!

  • MMU는 논리 주소와 베이스 레지스터(프로그램의 기준 주소) 값을 더해서 논리 주소를 물리 주소로 변환한다.
    • 예를 들어 프로그램A의 시작주소를 베이스 레지스터로 놓고 논리 주소를 더해주면 물리 주소가 됨
    • 즉 여기서
      베이스 레지스터 : 프로그램의 가장 작은 물리 주소(프로그램의 첫 물리 주소)를 저장
      논리 주소 : 프로그램의 시작점으로부터 떨어진 거리
  • 한계 레지스터
    • 프로그램의 영역을 침범할 수 있는 명령어의 실행을 막음
      • ex) A프로그램은 메모리에서 1000~1500까지 저장돼있는데 cpu에서 A프로그램 논리주소 800을 지우라고하면 물리주소로는 1800이 되는데 이건 A프로그램 영역을 넘어서 버림!
        따라서 한계 범위 정해두는 것
      • 베이스 레지스터가 실행 중인 프로그램의 가장 작은 물리 주소를 저장한다면, 한계 레지스터는
        논리 주소의 최대 크기를 저장
      • 베이스 레지스터값 ≤ 프로그램의 물리 주소 범위 ≤ 베이스 레지스터 + 한계 레지스터 값

CPU는 메모리에 접근하기 전

접근하고자 하는 논리 주소가 한계 레지스터보다 작은지를 항상 검사한다.

이를 통해 실행 중인 프로그램의 독립적인 실행 공간 확보 & 하나의 프로그램이 다른 프로그램 침범하지 못하게 보호



캐시 메모리

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

cpu가 메모리에 접근하는 시간은 cpu 연산 속도 보다 느리다.

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

저장 장치 계층 구조
:저장 장치들은 ‘CPU에 얼마나 가까운가’를 기준으로 계층적으로 나타낼 수 있음

  • 저장 장치 계층 구조는 영문으로 memory hierachy, 메모리 계층 구조를 의미한다.
    여기서 말하는 메모리는 RAM이 아닌 일반적인 저장 장치를 의미한다.
    혼자 공부하는 컴퓨터 구조 + 운영체제 책에서는 용어의 혼동을 방지하기 위해 저장 장치 계층 구조라는 표현을 사용하는 것

캐시 메모리는 하나가 아니다.

계층적으로 구성 가능

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

  • cpu 내부에 있을 수도 외부에 있을 수도 있다.
  • 일반적으로 cpu 내부에는 L1캐시와 L2캐시가 있고, L1 캐시가 Cpu에 보다 가까우니 더 빠르고 용량 적겠지
  • 일반적으로 cpu 외부에는 L3 캐시 존재

멀티코어 프로세서에서

캐시 메모리는

l1,l2는 각각 L3는 공통으로 사용하는 경우 많음



캐시 메모리는 메모리보다 용량이 작다

따라서 메모리의 모든 내용을 저장할 수 없다

그렇다면 뭘 저장해야 좋을까

  • Cpu가 자주 사용할 법한 내용을 예측하여 저장해야 한다.
  • 예측이 들어 맞는 경우 : cpu가 캐시 메모리에 저장된 값을 활용할 경우
    • == 캐시 히트
  • 예측이 틀렸을 경우 : cpu가 메모리에 접근해야하는 경우
    • == 캐시 미스

캐시 적중률

: 캐시 히트 횟수 / (캐시 히트 횟수 + 캐시 미스 횟수)

캐시 적중률이 높을수록 당연히 성능이 좋겠지!

요즘 cpu 캐시 적중률은 80퍼 넘는듯


참조 지역성의 원리

  • cpu가 사용할 법한 데이터를 예측하는 방법..
  • cpu가 메모리에 접근할 때의 주된 경향을 바탕으로 만들어진 원리
    1. cpu는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있다.
    2. cpu는 접근한 메모리 공간 근처를 접근하려는 경향이 있다.(공간 지역성이라고도 부름)
      • cpu가 실행하려는 프로그램은 관련된 데이터끼리 모여있는 경향이 있음
      • 워드 프로세서 프로그램은 메모리에 워드프로세서 기능끼리 모여있고 웹브라우저는 웹브라우저 기능끼리 모여 있겠지
      • 예를 들어, 메모리의 워드 프로세서 자동 저장 기능 근처에 입력기능 있을거고 출력기능도 있겠지

'혼자 공부하는 컴퓨터구조+운영체제' 카테고리의 다른 글

입출력장치  (0) 2023.09.12
보조기억장치  (0) 2023.09.11
cpu의 성능 향상 기법  (0) 2023.09.09
CPU의 작동 원리  (1) 2023.09.05
명령어  (0) 2023.08.28
Comments