메모리 계층 구조란 무엇인가 (Memory Hierachy)
- 메모리를 필요에 따라 여러가지 종류로 나누는 것 => Why?? CPU가 메모리에 더 빨리 접근 가능해짐
- 컴퓨터 설계에 있어 서로 다른 여러 종류의 메모리 저장 장치를 함께 사용하여 최적의 효율을 낼 수 있게 하는 것
- 상황에 맞게 여러 저장 장치를 각각 사용하는 설계 => 컴퓨터 성능이 좋아짐
1. 레지스터(Register)
- CPU가 요청을 처리하는 데 필요한 데이터를 일시적으로 저장하는 기억장치
- CPU는 자체적으로 데이터를 저장할 방법이 없으므로 메모리로 직접 데이터를 전송할 수 없음
→ 연산을 위해서 반드시 레지스터를 거쳐야 하며, 이를 위해 레지스터는 특정 주소를 가리키거나 값을 읽어올 수 있음 - 프로세서에 위치한 고속 메모리로, 프로세스가 바로 사용할 수 있는 데이터(소량의 데이터, 처리 중인 중간 결과 등)를 담고 있는 영역
2. 캐시(Cache)
- cache는 기술적 용어의 어원인 프랑스어로 '숨기다'라는 단어인 cache에서 파생된 단어로 물건을 일시적으로 저장, 보관하기 위해 사용하는 곳
- 데이터나 값을 미리 복사해 놓는 임시 장소
- 시스템의 효율성을 위해 사용
- 캐시의 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우
- 값을 다시 계산하는 시간을 절약하고 싶은 경우
- 속도가 빠른 장치와 느린 장치 사이에서 속도차에 따른 병목 현상을 완화하기 위한 범용 메모리
- 지역성 -
- 데이터 접근이 시간적, 혹은 공간적으로 가깝게 일어나는 것
- 캐시가 효율적으로 동작하기 위해서는 캐시가 저장할 데이터가 지역성을 가져야 함
- 시간적 지역성 - 특정 데이터가 한 번 접근되었을 경우, 가까운 미래에 또 한 번 데이터에 접근할 가능성이 높음
- 공간적 지역성 - 액세스 된 기억장소와 인접한 기억장소가 액세스 될 가능성이 높음
- 캐싱이란? => 데이터를 더 빨리 읽어 올 수 있도록 캐시 기억 장치에 저장하는 일
3. 메인 메모리(Main Memory)
- 주기억장치(= 1차 기억 장치)
- 컴퓨터에서 수치·명령·자료 등을 기억하는 컴퓨터 하드웨어 장치
- RAM(Random Access Memory) : 휘발성 기억 장치
- 컴퓨터가 빠른 액세스를 하기 위해 데이터를 단기간 저장하는 구성 요소
- 사용자가 요청하는 프로그램이나 문서를 스토리지 디스크에서 메모리로 로드하여 각각의 정보에 액세스
- 전원이 유지되는 동안 CPU의 연산 및 동작에 필요한 모든 내용이 저장
- 전원 종료시 기억된 내용 삭제
- Random Access : 어느 위치에서든 똑같은 속도로 접근하여 읽고 쓸 수 있다는 의미
- ROM(Read Only Memory) : 고정 기억 장치
- 컴퓨터에 지시사항을 영구히 저장하는 비휘발성 메모리
- 전원 종료시 기억된 내용 유지
- 변경 가능성이 희박한 기능 및 부품에 사용 (소프트웨어 초기 부팅 관련 부분/ 하드웨어 펌웨어 명령 부분 등)
4. 하드 디스크 드라이브(Hard Disk Drive, HDD)
- 비휘발성, 순차접근이 가능한 컴퓨터의 보조 기억 장치
- 비휘발성 데이터 저장소 가운데 가장 대중적이며 용량 대비 가격이 가장 저렴
- 보호 케이스 내부의 플래터를 회전 → 플래터에 자기 패턴으로 정보 기록
- 회전하는 플래터 위에 부상하는 입출력 헤드에 의해 자기적으로 데이터 기록 및 조회 가능
메모리 계층 구조는 왜 필요한가
- 디코딩 속도
- CPU는 작은 메모리에 더 빨리 접근 가능하다
- 큰 메모리 용량을 사용할 경우 디코딩하는 데 더 많은 시간 소요 (명령어 복호화 단계)
- CPU가 빠르게 데이터에 접근하기 위해서는 데이터를 저장하는 메모리가 작아야 함 => 계층 구조를 통해 해결
- 참조의 지역성
- 자주 쓰이는 데이터는 계속 자주 쓰이고, 자주 쓰이지 않는 데이터는 계속 자주 쓰이지 않음
- 운영체제·CPU → 자동으로 자주 쓰이거나 쓰일 것 같은 데이터를 메모리에서 캐시로 읽어옴 (데이터양이 줄어듦)
- 경제성
- 메모리 구조에서 상층에 속할수록 더 성능이 좋지만 더 비쌈
- 비싼 하드웨어는 꼭 필요한 만큼의 크기만 사용
- 싼 하드웨어를 넉넉한 크기만큼 사용
- 피라미드 구조
'CS' 카테고리의 다른 글
계층화 아키텍처 (Layered Architecture) / MVC Pattern / Node.js에서의 적용 (0) | 2023.01.10 |
---|---|
RESTful API 쉽게 이해하기 (0) | 2023.01.09 |
Object Oriented Programming 객체 지향 프로그래밍 (0) | 2023.01.02 |
[SQL] WHERE 1=1 (0) | 2022.12.31 |
파싱(Parsing)이란 무엇인가 (0) | 2022.12.30 |