메모리 계층 구조
- 메모리 계층 구조란 메모리를 필요에 따라 여러 종류로 나누는 것으로 CPU가 메모리에 더 빨리 접근하기 위해 구성되었다.
- 레지스터와 캐시는 CPU 내부에 존재
- 메모리는 CPU 외부에 존재 (캐시와 레지스터 보다 접근 속도 느림)
- 하드 디스크는 CPU가 직접 접근할 수 없다.
- 하드 디스크의 데이터를 읽으려면 먼저 메모리로 데이터를 이동시켜야 함
레지스터
- CPU가 요청을 처리하는 데 필요한 데이터를 일시적으로 저장하는 기억 장치
- 메모리로 연산의 결과를 보내고, 데이터를 하드 디스크에 저장해야 하는 등의 명령을 처리하기 위해 이들에 대한 주소와 명령 종류를 저장할 수 있는 기억 공간
- 명령 수행을 위해선 메모리보다 빨라야 한다.
- 레지스터는 데이터 저장 뿐 아니라 데이터를 처리하는 기능도 있다.
- CPU는 자체적으로 데이터를 저장할 수 없고 레지스터를 통해 메모리로 데이터를 전송할 수 있다.
- 프로세스가 바로 사용 가능한 데이터(소량의 데이터, 처리 중인 중간 결과 등)를 담고 있는 영역
캐시
- 메인 메모리 접근을 빠르게 하기 위해 사용하는 CPU 내부의 작은 메모리
- 프로세서가 메모리를 읽거나 쓸 때 캐시를 먼저 확인하고 데이터가 없으면 메인 메모리에 직접 접근한다.
- 다음에 데이터를 읽을 때 캐시에서 읽을 수 있도록 메인 메모리의 데이터를 캐시에 복사
캐시 종류
속도와 크기에 따라 분류
- L1 캐시
- 데이터 사용 및 참조에 가장 먼저 사용되는 캐시 메모리
- 보통 8 ~ 64KB 정도의 용량으로 가장 빠르게 접근하게 된다.
- 여기서 데이터를 찾지 못하면 L2 캐시로 넘어간다.
- L2 캐시
- L1 캐시와 용도와 역할이 비슷
- L1 캐시 보다는 느리다.
- 일반적으로 64KB ~ 4MB 정도가 사용된다.
- L3 캐시
- L1, L2와 동일한 원리로 작동
- CPU가 아닌 메인보드에 내장되는 경우가 많다.
- L1, L2는 CPU 코어마다 존재하는 것에 비해 L3 캐시는 모든 코어가 공유
메인 메모리
- 주 기억 장치로 컴퓨터에서 수치, 명령, 자료 등을 기억하는 컴퓨터 하드웨어 장치
- RAM(Random Access Memory): 휘발성 기억 장치
- 빠른 접근을 위한 단기간 데이터 저장 공간
- 프로그램이나 문서를 디스크에서 메모리로 로드하여 각 정보에 엑세스
- 전원 종료 시 저장 공간 삭제
- random access: 어느 위치에서든 똑같은 속도로 접근하여 읽고 쓸 수 있음
- ROM(Read Only Memory): 고정 기억 장치
- 비휘발성 메모리
- 전원 종료 시 기억된 내용 유지
- 변경 가능성이 거의 없는 기능 및 부품에 사용
CPU에서는 L1 → L2 → L3 → RAM 순으로 데이터를 탐색한다.
하드 디스크 드라이브 (HDD)
- 비휘발성 - 전원이 꺼져도 데이터 보존
- 순차접근이 가능한 보조 기억 장치
- 보호 케이스 내의 플래터를 회전시켜, 이것이 자기 패턴으로 정보를 기록
- 플래터를 구동하는 장치가 스핀들 모터로 이루어진 것이 특징
메모리 계층 구조 필요성
- 디코딩 속도
- CPU가 빠르게 데이터에 접근하기 위해선 데이터를 저장하는 메모리가 작아야 한다
- 실제로 접근이 빠른 순으로 레지스터, 캐시, 메인 메모리인데 용량도 비례해서 작아진다.
- 메모리에 접근하기 위해선 디코딩이 필요한데 메모리 용량이 크면 디코딩하는 데 많은 시간이 소요되기 때문
- 메모리가 크면 디코더를 통해 CPU가 여러 메모리 중 어느 쪽에 접근하기 원하는지 알아야 한다.
- 참조의 지역성
- 모든 데이터가 고르게 접근 되지는 않는다.
- 자주 쓰이는 데이터와 쓰이지 않는 데이터가 존재
- 자주 쓰이는 데이터를 메모리에서 캐시로 읽어와 성능을 높일 수 있다.
- 자주 쓰이는 데이터는 전체 데이터에 비해 적은 양이므로 캐시 > 메모리 > 하드디스크 순으로 용량 크기를 할당해도 된다.
- 경제성
- 메모리 구조에서 작고 빠른 상층일수록 더 비싸다
- 비싼 하드웨어는 필요한 만큼의 크기만 사용하고, 싼 하드웨어를 넉넉하게 사용하기에 계층 구조가 피라미드인 것이다.
https://velog.io/@yu-jin-song/CS-메모리-계층-구조
https://ko.wikipedia.org/wiki/메모리_계층_구조
https://ko.wikipedia.org/wiki/CPU_캐시
https://it.donga.com/215/
https://ko.wikipedia.org/wiki/하드_디스크_드라이브
자바 최적화