RAM
RAM에는 실행할 프로그램의 명령어와 데이터가 저장된다.
전원을 끄면 저장된 명령어와 데이터가 모두 날라간다.
이러한 저장 장치를 휘발성 저장 장치라고 한다.
반대로 전원이 꺼져도 데이터가 날라가지 않는 장치를 비휘발성 저장 장치라고 한다.
하드디스크나 SSD등이 대표적으로 있다.
비휘발성 저장 장치는 CPU에 직접접으로 접근을 못하므로 보관할 대상을 저장하고 휘발성 저장 장치에는 실행할 대상을 저장한다.
RAM의 용량과 성능
RAM의 용량이 크면 보조기억장치에서 실행할 프로그램을 가져오는 일이 줄어든다. 그렇다면 용량이 크면 프로그램을 가져오는 일이 줄기 때문에 성능이 용량에 비례해서 빨라질까? 정답은 그렇지 않다. RAM과 보조기억장치간 이동하는 속도는 같기 때문에 무한정으로 빨라지지 않는다.
DRAM
Dynamic RAM으로 데이터가 동적으로 변하는(사라지는) RAM을 의미한다.
시간이 지남에 따라 저장된 데이터가 점차 사라지는 RAM이다.
그렇기에 DRAM은 데이터 소멸을 막기 위해 일정 주기로 데이터를 재활성화해야 한다.
우리가 사용하는 RAM이 DRAM인 이유는 소비전력이 비교적 낮고, 저렴하고, 집적도가 높기 떄문에 대용량으로 설계하기 용이하기 때문에 사용한다.
SRAM
Static RAM으로 저장된 데이터가 변하지 않는 RAM을 의미한다.
DRAM과 다르게 주기적으로 데이터 재활성화가 필요없고 일반적으로 더 빠르다.
하지만 반대로 소비전력은 크고, 비싸며, 집적도가 낮기에 대용량으로 만들필요가 없으며, 속도가 빠른 저장장치인 캐시 메모리에 사용된다.
SDRAM
클럭 신호와 동기화된, 발전된 형태의 DRAM이다.
클럭에 맞춰 동작하며 클럭마다 CPU와 정보를 주고 받을 수 있는 DRAM이다.
DDR SDRAM
최근 가장 흔히 사용되는 RAM이다.
대역폭을 넓혀 속도를 빠르게 만든 SDRAM이다.
SDRAM과 비교하여 두배가 넓다.
DDR2는 DDR보다 2배 넓고, DDR3는 DDR2보다 2배 넓다.
메모리의 주소 공간
주소에는 물리주소와 논리주소가 있다.
물리주소 : 메모리 하드웨어상의 주소
논리주소 : CPU와 실행 중인 프로그램이 사용하는 주소(0번지 부터 시작되는 주소)
MMU(메모리 관리 장치) : CPU와 주소 버스 사이에 위치했으며 논리 주소와 물리 주소 간 변환을 수행한다.
CPU가 발생시킨 논리 주소에 베이스 레지스터 값을 더하여 논리 주소를 물리 주소로 변환한다.
베이스 레지스터 : 프로그램의 가장 작은 물리주소, 즉 프로그램의 첫 물리주소를 저장하는 것과 같다.
논리주소 : 프로그램의 시작점으로부터 떨어진 거리
메모리 보호 기법
다른 영역을 침범할 수 있는 명령어는 위험하기에 논리 주소 범위를 벗어나는 명령어 실행을 방지가 필요한데 이를 한계 레지스터가 해준다.
한계 레지스터 : 논리 주소의 최대 크기를 저장
CPU가 메모리에 접근하는 방법
CPU는 메모리에 접근하기 전 논리주소가 한계 레지스터보다 작은지 검사한다.
- 작다면 인터럽트를 발생시켜 중단
- 크다면 베이스 레지스터와 논리주소를 더한 물리주소로 접근
캐시 메모리
CPU와 메모리 사이에 위치하며 레지스터보다 용량이 크고 메모리보다 빠른 SRAM기반의 저장장치
저장 장치 계층 구조
- CPU와 가까운 저장 장치는 빠르고, 멀리 있는 장치는 느리다.
- 속도가 빠른 저장장치는 용량이 작으며, 가격이 비싸다.
레지스터 - 캐시 메모리(L1- L2 - L3) - 메모리 - 보조기억장치
코어와 가장 가까운 캐시 메모리를 L1캐시 그 다음 메모리는 L2캐시, 그다음 가까운 캐시 메모리를 L3캐시라고 부른다.
일반적으로 L1, L2는 코어 내부에, L3는 코어 외부에 위치한다.
참조 지역성 원리
CPU가 사용할 법한 대상을 예측하여 저장한다.
자주 사용될 것으로 예측한 데이터가 실제로 들어맞아 캐시 메모리 내 데이터가 CPU에서 활용될 경우를 캐시 히트라고 한다.
반대로 저장했지만 메모리에서 데이터를 직접 가져오는 경우를 캐시 미스라고 한다.
캐시 적중률 = 캐시 히트 횟수 / (캐시 히트 횟수 * 캐시 미스 횟수)
CPU가 예측하는 방법
- CPU는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있다.
- 프로그래밍에서 변수는 한번 선언하면 자주 접근한다.
- 이러한 경향을 시간 지역성이라고 한다.
- CPU는 접근한 메모리 공간 근처를 접근하려는 경향이 있다.
- 실행하려는 프로그램은 보통 관련 데이터들이 모여 있어 그 공간 근처를 집중적으로 접근한다.
- 이러한 경향을 공간 지역성이라고 한다.
참고) 혼자 공부하는 컴퓨터 구조+운영체제
'공부 > 컴퓨터구조, 운영체제' 카테고리의 다른 글
8장 입출력장치 (0) | 2023.03.27 |
---|---|
7장 보조기억장치 (0) | 2023.03.27 |
5장 CPU 성능 향상 기법 (0) | 2023.03.23 |
4장 CPU의 작동 원리 (0) | 2023.03.23 |
3장 명령어 (0) | 2023.03.20 |