메모리 계층
아래 그림에서 볼 수 있는 여러 가지 기억장치들을 통해 CPU가 데이터를 읽고 쓰는 일을 한다.
이때, 접근 속도가 빠른 순서대로 메모리에 접근하여 데이터를 읽고 쓰는 등의 일을 처리하는데, 이를 메모리 계층이라고 한다.
RAM (Random Access Memory)
RAM은 Random Access가 가능한 메모리이다. 즉, '임의 접근'을 할 수 있는 메모리이다.
따라서 원하는 위치에 순차적으로 접근하지 않고 바로 접근하여 데이터를 읽고 쓰고 지울 수 있다.
이 Random Access라는 용어는 어느 위치든지 똑같은 속도로 접근하여 읽고 쓸 수 있다는 뜻이다.
RAM은 컴퓨터가 켜지는 순간부터 꺼지기 전까지 CPU가 연산을 하고 동작을 하는데에 필요한 모든 내용이 저장되는 공간이다. 다시 말하면, 일반적으로 RAM은 전원이 차단되고 컴퓨터가 꺼지면 내용이 지워지는 휘발성 기억 장치이다.
RAM의 역할
RAM은 주 기억 장치이고, HDD(하드디스크)는 보조 기억 장치이다.
하드디스크의 용량은 보통 500GB, 1TB 등 매우 큰 반면, RAM의 용량은 보통 4GB, 8GB로 비교적 적다.
- HDD는 용량이 매우 큰 대신, 데이터 접근 속도가 느리고
- RAM은 용량이 적은 대신 데이터 접근 속도가 빠르다.
CPU는 일초에 수십억 번의 연산을 하는데, 이때 CPU가 필요한 데이터를 하드디스크에서 찾게 되면 너무 느리다.
그래서 속도가 빠른 RAM이 필요하다.
그래서 컴퓨터가 실행되면, 보조기억장치인 HDD에서 필요한 데이터들을 주 기억장치인 RAM으로 불러와서 CPU가 필요한 작업을 하게 된다.
즉, RAM은 CPU가 데이터를 빠르게 처리하는 것을 도와주는 역할을 한다.
레지스터(Register)
레지스터는 CPU에 위치한 고속 메모리로, CPU가 요청을 처리하는데 필요한 데이터를 일시적으로 저장한다.
CPU가 레지스터에 접근하는 시간은 0 ~ 1 CPU cycle이다.
레지스터는 CPU가 가장 빠른 속도로 접근할 수 있는 메모리이고, 메모리 계층의 최상위에 위치한다.
그 아래로는 캐시(Cache), 메인메모리(RAM), SDD, HDD 순이다.
캐시(Cache)
L1 캐시
L1캐시는 일반적으로 코어 안에 내장되어 데이터 사용/참조에 가장 먼저 사용된다.
L1캐시는 보통 8 ~ 64KB 정도의 용량으로 CPU가 가장 빠르게 접근한다.
L2 캐시
L2 캐시는 L1 캐시와 비슷하지만 상대적으로 속도가 느리고, 64KB ~ 4MB의 용량으로 상대적으로 많은 용량을 저장한다.
L3 캐시
L3 캐시도 L1, L2 캐시와 비슷하게 속도가 비교적 느리고, 용량이 비교적 크지만, L3 캐시는 잘 사용하지 않는다고 한다.
CPU는 L1 캐시 -> L2 캐시 -> L3 캐시 순으로 데이터를 찾아보고, 없으면 그다음(RAM) 메모리에서 찾아보는 식으로 메모리에 접근한다.
CPU가 L2 캐시에 접근하는 시간은 대략 10 CPU cycle 이내이다.
최신 CPU
2022년도에 구매한
12세대 intel i5-12600KF CPU의 경우 캐시의 용량이 아래와 같다.
기술이 발전하며 캐시 용량의 크기도 더 커진 것으로 보인다.
작업관리자에서 확인할 수 있다.
- 캐시를 SRAM이라고도 부른다.
- 'L'은 level을 의미한다.
하드디스크(HDD), SDD
하드디스크는 보조 기억 장치로 비휘발성 기억장치이다.
용량이 위에서 언급한 RAM, Register, Cache에 비해 비교할 수 없을 정도로 크지만,
접근 속도도 비교할 수 없을 만큼 느리다.
RAM은 200 CPU cycle 정도, 레지스터는 1 cycle, 캐시는 10 cycle 이내 인 데에 비해
HDD로의 접근 속도는 수십 ms 정도이다.
1 CPU cycle은 대략 0.25 ns 정도라고 생각하면 된다. ( 1 ns = 10^-9 sec , 1ms = 10^-3 sec)
즉 RAM에 접근하는 것과 HDD에 접근하는 것은 1,000,000(백만) 배 이상의 속도 차이가 난다.
이 때문에, 위의 RAM 부분부터 설명했다시피 CPU는 HDD에 접근하여 데이터를 가져오기보다는 RAM, 캐시 등을 통해 데이터에 접근하는 것이다.
SDD (SSD)
SDD는 Solid Disk Drive의 약자이고, SSD와 같은 말이다. SSD는 Solid State Drive의 약자이다.
SSD는 반도체를 이용하여 데이터를 저장하는 장치이고, HDD에 비해 읽기, 쓰기가 빠르다.
즉, 데이터 접근 속도가 빠르다. 접근 속도는 데이터를 얼마나 빨리 찾아내는지를 말한다.
예전에는 데이터의 신뢰도가 HDD에 비해 낮고, 가격이 비싸서 잘 사용하지 않았지만,
기술이 발전하며 접근 시간을 줄이기 위해 SSD도 많이 사용한다고 한다.
위의 글을 모두 읽고 다시 이 그림을 보면 조금 더 이해하기 쉬울 것이다.
1 CPU cycle은 4 Ghz CPU일 때 0.25ns정도이다. 즉, 40억 분의 1초이다.
위의 그림을 보면 메인메모리인 RAM까지 접근하는 데 걸리는 시간은 200 CPU cycle 정도이다.
200 cycle이라고 해봐야 50ns로 2천만 분의 1초이다.
그러나 HDD의 경우 수백 분의 1초 단위로 훌쩍 뛴다. 수백만 배가 느려지는 것이다.
이러한 이유 때문에 CPU에서 HDD로 직접 접근하는 것이 아닌 RAM으로 데이터를 올려서 사용하는 것이다.
'컴퓨터 공학' 카테고리의 다른 글
[CS/Network] TCP와 UDP 프로토콜 (0) | 2023.07.20 |
---|---|
[CS] CPU 파이프라인 (0) | 2023.07.14 |
[CS] CPU의 구조와 동작 원리, 데이터 접근 (0) | 2023.07.12 |
[CS/디지털논리회로] 덧셈기(adder), 반 가산기, 전 가산기 (0) | 2023.07.11 |
[CS/디지털 논리 회로] 논리 게이트 (0) | 2023.07.06 |