본문 바로가기
Programming

[Hardware] L1, L2, L3 캐시 메모리(Cache Memory)란?

by 개발자 염상진 2022. 7. 27.

 

단순한 컴퓨터

컴퓨터란 극단적으로 설명하면 단순한 OP 명령을 인출(Fetch), 해석(Decode), 실행(Execute) 하는 전자 계산기 입니다. 단순히 명령어를 저장공간에서 가져와서 몇개 안되는 명령문을 실행하는데, 굉장히 빠른 속도로 처리 가능하므로, 현재 튜링 완전한 머신으로써 PC, 노트북이 등장했고, 인공지능, 머신러닝, 빅데이터 등의 수준높은 기술까지 구현하게 되었습니다.

여기서 프로세서는 컴퓨터의 핵심으로 실질적으로 명령문을 해석하고 실행하는 공간입니다. 모든 PC들은 프로세스를 내장하고 있고, 프로세서 내에 복수의 코어(Core)를 심어 병렬로 처리가능하도록 하고 있습니다. 프로세서가 명령을 실행하기 위해서는 저장공간에서 명령을 가져와야 하는데, 처리 속도가 빠른 프로세서에 비해 데이터를 가져오는 부분에서 병목현상이 발생하게 됩니다. 이 때 적용 가능한 개념이 캐시(Cache memory) 입니다.

 

 

캐싱(Caching)

캐싱이란 컴퓨터 뿐만 아니라 다양한 분야에서 사용가능한 개념입니다. 프로세서에는 자체적으로 캐시 메모리가 붙게 되는데, 처리 속도가 빠른 프로세서와 처리속도가 느린 주기억장치에서 데이터를 가져올 때 병목 현상을 제거하기 위함입니다.

프로세서는 명령문을 수행하기 위해 저장공간에 접근하게 되는데, 만약 캐시 메모리에 저장되어있는 경우 명령문을 인출하거나, 저장장치의 메모리 작업을 대기할 필요가 없으므로 속도가 개선됩니다. 

프로세서에는 일반적으로 L1~L3 캐시 메모리가 들어갑니다. 레벨 1 캐시 메모리(L1)이 용량이 가장 작으면서 속도가 가장 빠르고, 레벨 3(L3)는 용량은 크지만 속도는 느립니다. 

 

캐싱 과정에서 필요한 데이터를 블록 단위로 동시에 불러오고 연속된 메모리 위치에서 가져오기 때문에 자주 사용하는 데이터 일수록 Fetch 속도가 빨라지게 됩니다. 

컴퓨터 하드웨어 뿐만 아니라 웹 에서도 캐시를 사용합니다. 캐시(Cache)에 이미지 혹은 용량이 큰 Document 사본이 저장되고, 다시 해당 페이지에 접속하는 경우 웹 서버에 요청하는 것이 아니라 캐시 메모리에 저장된 HTML, CSS, IMAGE 파일들을 불러와 로딩 속도를 개선할 수 있습니다. 

로컬 프로그램인 마이크로소프트의 엑셀, 파워포인트 등에서도 사용중인 프로그램에서 자주 사용하는 파일이나 단어는 캐싱(caching) 되고, 사용자가 해당 파일을 찾기 위한 시간을 들일 필요 없이 바로 메뉴바에서 제공해 줄 수 있습니다.

 

 

Cache Hit 이란?

CPU는 명령 데이터를 가져올 때 만약 캐싱되어 있는 데이터라면 메모리 까지 가지 않고 캐시에서 데이터를 바로 가져올 수 있습니다. 이를 Cache Hit이라고 합니다.

 

L1, L2, L3 캐시 메모리

L1 캐시는 Instruction Cache와 Data Cache로 쪼개집니다. Instruction Cache는 프로세서가 사용하며, Data Cache는 기본 메모리에 다시 기록되는 데이터를 저장합니다.

 

최근에 나오는 프로세서들은 각 코어별로 64KB의 L1 캐시 메모리를 제공합니다. L2 캐시 메모리는 코어 당 512KB의 용량이 제공됩니다. 

L1, L2 캐시 메모리와 L3 캐시 메모리의 차이점은 전자는 코어별로 사용하는 개별 메모리지만, L3는 모든 코어에 공유되는 캐시 메모리 라는 점입니다. L3 의 용량은 10~64MB 까지 제공됩니다. 

 

캐시 메모리 이용 방법

먼저 프로세서는 L1 캐시 메모리를 검색합니다. 만약 찾을 수 없는 경우 L2, L3로 레벨을 올려 가며 필요한 데이터를 검색합니다. L3 까지 와서 필요한 데이터를 찾으면 캐시 적중(Cache Hit)이 되는 거고, 만약 찾지 못하면 주기억장치까지 내려와 찾아야 하는데 이를 캐시 미스(Cache Miss)라고 합니다. 

캐시 메모리의 용량이 커질 수록 캐시 적중 확률은 증가합니다. 반대로 캐시 미스가 발생하는 경우 프로그램, PC 성능 저하에 부정적인 영향을 주게 됩니다. 프로세서는 처리 속도가 빠르지만 주기억 장치 심지어 보조기억장치까지 내려가면 데이터 입출력에만 천문학적인 시간이 소요되기 때문입니다.

 

 

캐시 메모리 매핑

프로세서가 사용하는 캐시 메모리에 데이터를 저장하기 위해 주기억 장치에서 데이터를 "블록" 단위로 가져오게 됩니다. 블록은 N개의 64Byte 행으로 나뉘게 됩니다. 주기억장치는 캐시와 동일한 갯수의 블록으로 분할된 다음 두개의 메모리가 연결됩니다.

 

 

 

 

 

 

컴퓨터 구조 (폰 노이만 아키텍처, 프로세서, 주기억 장치, 버스)

현재 우리가 사용하고 있는 컴퓨터는 IBM사에서 1981년 처음 판매한 IBM PC와 거의 유사한 형태를 가지고 있습니다. 30년이 지난 시점에도 기본적인 컴퓨터의 구조는 계속 이어져 오고 있습니다. 마

about-tech.tistory.com

 

 

[WebSocket] 웹 소켓(Web Socket) 이란?

웹 소켓(Web Socket)이란? Node.js에서는 웹 소켓 라이브러리 Socket.IO가 있습니다. 흔히 실시간 데이터를 주고 받기 위해서 사용되는 라이브러리 입니다. 웹 소켓(Web Socket)이란 HTML5에 적용된 스펙으로

about-tech.tistory.com

 

댓글