06 메모리와 캐시 메모리
06-1 RAM의 특징과 종류
RAM의 특징
- 휘발성 메모리 : 전원을 끄면 저장된 내용이 사라지는 저장 장치
- 하드 디스크, SSD, CD-ROM, USB 메모리는 전원을 꺼도 저장된 내용이 유지되며 비휘발성 메모리라고 한다.
- 그래서 비휘발성 메모리에는 보관할 대상을 저장하고, 휘발성 메모리에는 실행할 대상을 저장한다.
RAM의 용량과 성능
- RAM 용량이 크면 어떤 점이 좋을까?
- RAM의 용량이 크면 많은 프로그램들을 동시에 빠르게 실행하는데 유리하다. RAM 용량이 작으면 CPU에서 실행해야할 데이터를 보조기억장치에서 가져와야하므로 시간이 오래걸린다. 그러나 RAM 용량이 커서 미리 실행할 프로그램들이 들어가 있으면 그만큼 빠르게 CPU가 가져와 실행할 수 있다.
- RAM 용량만 늘린다고 해서 실행 속도가 그에 비례해서 증가하지 않는다.
RAM의 종류
DRAM
- Dynamic RAM의 준말
- 시간이 지나면 데이터가 점차 사라지는 RAM
- 데이터 소멸을 막기 위해 일정 주기로 데이터를 재활성화해야한다.
- 일반적으로 많이 사용하는 메모리
- 소비 전력이 낮고
- 저렴
- 집적도가 높아 대용량으로 설계하기 용이
SRAM
- Static RAM
- 저장된 데이터가 변하지 않는 RAM
- 속도가 빠름
- 그래서 대용량으로 만들어질 필요는 없지만 속도가 빨라야하는 저장 장치인 캐시 메모리에 사용
SDRAM
- Synchronous Dynamic RAM
- 클럭 타이밍에 맞춰 CPU와 정보를 주고 받을 수 있는 메모리
DDR SDRAM
- Double Data Rate SDRAM
- 대역폭을 넓혀 속도를 빠르게 만든 메모리
- 대역폭 : 데이터를 주고받는 길의 너비
📝
RAM은 실행중인 프로그램의 데이터와 명령어가 저장된 장치이다. RAM의 특징은 휘발성메모리로 전원이 꺼지면 저장된 내용도 사라진다. 그와 반대로 하드 디스크, SSD, USB는 비휘발성 메모리로 전원을 꺼도 저장된 내용이 유지된다. 그래서 실행할 대상은 휘발성 메모리에, 보관할 대상은 비휘발성 메모리에 저장하게 된다.
RAM의 용량이 크면 CPU가 실행할 프로그램을 빠르게 가져올 수 있으므로 실행 속도가 빨라진다. 그러나 RAM의 용량에 비례해서 실행 속도가 증가하지는 않는다. 용량이 작으면 보조프로그램에서 들고와야하니 당연히 느려지겠지만 CPU가 RAM에서 들고오는 건 똑같기 때문이다.
RAM의 종류는 DRAM, SRAM 등이 있으며 DRAM은 시간이 지나면 데이터를 지우는 특징이 있으며 RAM이 여기에 해당된다. SRAM은 데이터 변화가 없으며 속도가 빨라서 캐시 메모리가 해당된다.
06-2 메모리의 주소 공간
물리 주소와 논리 주소
-
물리 주소
메모리가 사용하는 주소로 하드웨어상의 실제 주소
-
논리 주소
CPU와 실행 중인 프로그램이 사용하는 각각의 프로그램에 부여된 주소
-
MMU(Memory Management Unit)
- 논리 주소를 물리 주소로 변환해주는 장치
- CPU가 발생시킨 논리 주소에 베이스 레지스터 값을 더하여 논리 주소를 물리 주소로 변환
-
베이스 레지스터 : 프로그램의 가장 작은 물리 주소, 즉 프로그램의 첫 물리 주소를 저장하는 셈이고, 논리 주소는 프로그램의 시작점으로부터 떨어진 거리인 셈이다.
메모리 보호 기법
- 한계 레지스터 : 다른 프로그램의 영역을 침벌할 수 있는 명령어는 위험하기 때문에 논리 주소를 벗어나는 명령어 실행을 방지하고 실행 중인 프로그램이 다른 프로그램에 영향을 받지 않도록 보호할 방법을 담당
- CPU가 접근하려는 논리 주소는 한계 레지스터가 저장한 값보다 커서는 안됨
📝
물리 주소는 메모리 하드웨어상의 실제 주소를 말하고, 논리 주소는 프로그램의 시작 주소부터 떨어진 거리를 의미하며 프로그램들끼리 중복될 수 있다. 예를 들면 A라는 프로그램의 논리주소가 100이고, B라는 프로그램의 논리주소가 100이다. A를 물리 주소로 변환하면 베이스 레지스터(1000)이라 1100일거고, B는 베이스 레지스터(2000)이라 2100이 되는거다. 논리 주소를 물리 주소로 변환해주는 장치가 MMU로 CPU가 요청한 논리주소값에 베이스 레지스터의 값을 더해서 구한다. 그리고 다른 프로그램이 서로 영향 주는 것을 막기 위해 한계 레지스터가 존재하며, 이는 프로그램의 시작점부터의 크기를 나타낸다. 만약 CPU가 접근하려는 주소가 한계 레지스터보다 크면 인터럽트가 발생한다.
06-3 캐시 메모리
- CPU가 메모리에 접근하는 시간은 CPU의 연산 속도보다 느림
- CPU가 연산을 빨리한다 해도 메모리에 접근하는 시간이 느리면 CPU의 빠른 연산 속도는 아무런 쓸모가 없다.
- 이를 극복하기 위한 저장 장치가 바로 캐시 메모리
저장 장치 계층 구조
- CPU와 가까운 저장 장치는 빠르고, 멀리 있는 저장 장치는 느리다.
- 속도가 빠른 저장 장치는 저장 용량이 작고, 가격이 빘다.
- CPU에 얼마나 가까운가를 기준으로 계층적으로 나타낼 수 있다.
캐시 메모리
- CPU와 메모리 사이에 위치하고, 레지스터보다 용량이 크고 메모리보다 빠른 SRAM 기반의 저장 장치
- 메모리에서 CPU가 사용할 일부 데이터를 미리 캐시 메모리로 가지고 와서 활용하는 것
- 여러 개의 캐시 메모리가 있음.
- CPU와 가까운 순서대로 계층을 구성.
참조 지역성 원리
-
CPU가 사용할 법한 대상을 예측하여 저장
-
캐시 히트 : 자주 사용할 것으로 예측한 데이터가 실제로 들어맞아 캐시 메모리 내 데이터가 CPU에서 활용될 경우
-
캐시 미스 : 예측이 틀려 메모리에서 필요한 데이터를 직접 가져와야 하는 경우
-
캐시 적중률 : 캐시가 히트되는 비율
-
참조 지역성의 원리 : CPU가 메모리에 접근할 때의 주된 경향을 바탕으로 만들어진 원리
- 시간 지역성 : CPU는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있음.
- 공간 지역성 : 접근한 메모리 공간 근처를 접근하려는 경향이 있음.
📝 캐시 메모리란 CPU와 메모리 사이의 속도 차이를 줄일 수 있는 저장 장치이다. CPU가 일을 처리하는 속도보다 메모리에서 데이터를 가져오는 속도가 느리기 때문에 중간 캐시 메모리가 있는데 CPU가 사용할법한 데이터를 미리 가져와서 저장을 한다. 아 그리고 캐시도 CPU에 가까운 순으로 L1, L2, L3가 존재한다. CPU가 사용할 법한 대상을 예측하여 저장하는데 참조 지역성 원리에 따른다. 최근에 실행했던 프로그램의 메모리, 실행했던 프로그램 메모리 근처에 있는 데이터들을 미리 들고와서 저장해놓는데 만약 캐시 메모리에 저장된 데이터가 CPU에서 활용될 경우를 캐시 히트, 없어서 메모리에서 들고오면 캐시 미스, 캐시가 되는 비율을 캐시 적중률이라고 한다.
07 보조기억장치
07-1 다양한 보조기억장치
하드 디스크
- 자기적인 방식으로 데이터를 저장하는 보조기억장치
- 하드 디스크가 데이터에 접근하는 시간은 크게 탐색시간, 회전 지연, 전송 시간으로 나뉘며 데이터를 탐색하고 읽어들이는 시간이 오래 걸린다.
플래시 메모리
- USB메모리, SSD, SD카드 모두 플래시 메모리 기반의 보조기억장치
- 전기적으로 데이터를 읽고 쓸 수 있는 반도체 기반의 저장 장치
- 셀 : 플래시 메모리에서 데이터를 저장하는 가장 작은 단위
- 같은 용량의 플래시 메모리 저장 장치라 할지라도 셀의 타입에 따라 수명, 가격, 성능이 다르다.
- SLC, MLC, TLC
📝 하드 디스크는 자기적인 방식으로 데이터를 저장, 플래시 메모리는 전기적으로 데이터를 읽고 쓸 수 있는 반도체 기반의 저장 장치이다.
07-2 RAID의 정의와 종류
- 1TB 하드 * 4 개 구성이 4TB 하드 1개 구성보다 성능과 안전성이 더 높다.
RAID의 정의
- RAID(Redundant Array of Independent Disks)
- 하드 디스크와 SSD를 사용하는 기술로, 데이터의 안전성 혹은 높은 성능을 위해 여러 개의 물리적 보조기억장치를 마치 하나의 논리적 보조기억장치처럼 사용하는 기술을 의미
RAID의 종류
RAID 0
- 여러 개의 보조기억장치에 데이터를 단순히 나누어서 저장하는 구성 방식
- 스트라입 : 줄무늬처럼 분석되어 저장된 데이터
- 스트라이핑 : 분산하여 저장하는 것
- 장점 : 동시에 데이터를 읽고 쓸 수 있기 때문에 속도가 빠름
- 단점 : 저장된 정보가 안전하지 않다.
RAID 1
- 완전한 복사본을 만드는 방식
- 장점 : 복구가 간단하다
- 단점 : 사용 가능한 용량이 작아지고 느리다.
RAID 4
- 오류를 검출하고 복구하기 위한 정보를 저장한 장치를 두는 구성 방식
- 패리티 비트 : 오류를 검출하고 복구하기 위한 정보
- 단점 : 새로운 데이터 저장할 때마다 패리티를 저장하기 때문에 병목 현상 발생.
RAID 5
- 패리티 정보를 분산하여 저장하는 방식
- 장점 : RAID 4의 문제인 병목 현상 해소
RAID 6
- 서로 다른 두 개의 패리티를 두는 방식
- 데이터를 더욱 안전하게 보관하고 싶을 때 사용
📝 RAID는 데이터의 안전성과 성능을 위한 방법 중 하나로 여러 개의 보조기억장치를 사용하는 전략이다.
08 입출력장치
08-1 장치 컨트롤러와 장치 드라이버
장치 컨트롤러
-> 장치 컨트롤러는 전송률은 높은 CPU와 전송률이 낮은 입출력장치와의 차이를 데이터 버퍼링으로 완화한다.
장치 드라이버
- 장치 컨트롤러의 동작을 감지하고 제어함으로서 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있게 하는 프로그램
- 장치 컨트롤러 : 입출력장치를 연결하기 위한 하드웨어적인 통로
- 장치 드라이버 : 입출력장치를 연결하기 위한 소프트웨어적인 통로
📝
입출력장치는 종류가 많아 규격화가 어렵고 전송률도 낮다. 그래서 CPU와의 통신을 도와주는 장치 컨트롤러가 데이터 버퍼링을 통해 전송률을 비슷하게 맞춰준다.
그리고 소프트웨어적으로도 장치 드라이버가 함께 필요하다.
08-2 다양한 입출력 방법
프로그램 입출력
- 기본적으로 프로그램 속 명령어로 입출력장치를 제어하는 방법
인터럽트 기반 입출력
- 장치 컨트롤러가 입출력 작업을 끈낸 뒤 CPU로 인터럽트 요청을 보내는 방법
DMA 입출력
- 입출력장치와 메모리가 CPU를 거치지 않고 상호작용할 수 있는 입출력 방식
- DMA 컨트롤러 : 직접 시스템 버스로 메모리에 접근하며 장치 컨트롤러와 통신한다. 작업이 끝나면 CPU에 인터럽트를 걸어 작업이 끝났음을 알린다.
- 시스템 버스는 동시 사용이 불가능하기 때문에 DMA 컨트롤러는 입출력 버스를 이용한다.