티스토리 뷰
https://www.youtube.com/watch?v=Lvf-Su8eEDc&list=PLVsNizTWUw7FCS83JhC1vflK8OcLRG0Hl&index=17
초심으로 돌아가서 다시 정리하는 개념입니다.
이미 알고 있어 스킵하는 부분도 있으니, 직접 보시는 걸 추천드립니다.
메모리와 CPU의 관계
메모리는 주기억장치이자 휘발성 저장장치다.
당연하게도 CPU와 가까울수록 데이터를 읽어오는 속도가 빠르다.
레지스터 -> 메모리 -> 보조기억장치 순서
RAM이 크면 보조기억 장치가 필요 없으나, 문제는 비싸다.
DRAM, SRAM, SDRAM, DDR SDRAM의 종류가 있다.
DRAM (Dynamic RAM)
- 전원이 연결되어 있어도 저장된 데이터가 점점 사라지는 RAM
- 데이터 소멸을 막기 위해서 주기적으로 재활성화 해야 한다.
실제로 메모리에서 사용되는 램이 이 DRAM. 전력이 낮고, 집적도를 높여 대용량으로 설계하기가 편하다.
SRAM (Static RAM)
- 저장된 데이터가 사라지지 않는 RAM
- DRAM보다 일반적으로 더 빠르다
전원을 빼면 데이터가 날아가긴 한다. 하지만 그 전까지는 저장된다.
대신 소비전력이 DRAM보다 높고 집적도가 낮다.
대용량으로 설계할 필요는 없지만, 빨라야 하는 장치(캐시 메모리)같은 곳에 사용한다.
SRAM은 DRAM 보다도 상대적으로 비싸다.
SDRAM (Synchronous DRAM)
- D램의 발전된 형태
- 클럭 신호와 동기화된 DRAM
DDR SDRAM( Double Data Rate SDRAM)
- SDRAM을 발전시킨 형태
- 최근 가장 대중적으로 사용하는 RAM
- 대역폭(데이터를 주고 받는 길)을 넓혀 속도를 빠르게 만든 SDRAM
DDR2면 대역폭을 2배로 넓혔다는 뜻이다.
DDR3면 DDR2에 비해 대역폭을 2배로 넓혔다는 뜻이다.
DDRN이면 대역폭을 2^N배로 넓혔다는 뜻이다.
지금은 DDR4이므로 16배.
메모리의 주소 공간
메모리의 주소 공간은 논리 주소와 물리 주소가 있다.
CPU와 실행 중인 프로그램은 현재 메모리 몇 번지에 무엇이 저장되어 있는지 다 알고 있을까?
메모리에 자장된 값들은 시시각각 변하기 때문에
이러한 점을 극복하기 위해서 물리 주소와 논리 주소로 나뉘었다.
물리 주소
- 메모리 입장에서 바라본 주소
- 말 그대로 정보가 실제로 저장된 하드웨어상의 주소
논리 주소
- CPU와 실행 중인 프로그램 입장에서 바라본 주소
- 실행 중인 프로그램 각가에게 부여된 0번지부터 시작하는 주소
논리 주소는 지금 실행되는 프로그램에 각각 부여되어 있다. 이 주소는 겹칠 수 있다.
그런데 물리 주소는 겹치는 주소 번지가 없이 메모리에 저장되어 있다.
그러면 물리 주소와 논리 주소 간의 변환은 어떻게 이루어질까?(겁치는 게 있으므로 변환해야함)
물리 주소와 논리 주소의 변환
이 변환은 MMU(메모리 관리 장치)라는 하드웨어에 의해 변환된다.
논리 주소 -> MMU -> 물리 주소
MMU는 논리 주소와 베이스 레지스터 값을 더하여 논리 주소를 물리 주소로 변환
베이스 레지스터 안에는 물리 주소 상의 프로그램 시작 주소가 담긴다.
그리고 논리 주소에는 얼마나 상대적으로 떨어져 있느냐는 정보가 담긴다.
베이스 레지스터는 프로그램의 가장 작은 물리 주소(프로그램의 첫 물리 주소)를 저장하는 셈
메모리 보호
메모장의 논리 주소가 0~999일때, 1500번지에 대한 명령어를 보내면 다른 프로그램의 물리 주소를 침범하게 된다.
그래서 메모리를 보호하는 방법이 필요하다.
한계 레지스터를 활용한다.
- 한계 레지스터는 논리 주소의 최대 크기를 저장함으로서 프로그램의 영역을 침범할 수 있는 명령어의 실행을 막음
- 베이스 레지스터 값 <= 프로그램의 물리 주소 범위 < 베이스 레지스터 + 한계 레지스터 값
이처럼 CPU는 메모리에 접근하기 전에
접근하고자 하는 논리 주소가 한계 레지스터보다 작은지 항상 검사한다.
실행 중인 프로그램의 독립적인 실행공간을 확보 후, 다른 프로그램을 침범하지 못하게 보호한다.