[저장 장치 계층 구조 (memory hierarchy)]
- CPU 와 가까운 저장 장치는 빠르고, 멀리 있는 장치는 느리다.
- 속도가 빠른 저장 장치는 저장 용량이 작고, 가격이 비싸다
CPU 가 메모리에 접근하는 시간은 CPU의 연산 속도보다 느리다
저장장치의 계층 구조는
레지스터
메모리
USB
로 피라미드 형태로 표현하곤 한다.
레지스터는 메모리보다 용량은 적으나 접근 시간이 제일 빠르고, 가격이 비싸다
메모리는 USB보다 용량은 적으나 접근 시간이 빠르고, 가격이 상대적으로 비싸다
낮은 가격대의 대용향 저장 장치를 원한다면 느린 속도는 감수해야 되고,
빠른 속도의 저장 장치를 원한다면 적은 용량과 비싼 가격을 감수해야 된다.
이걸 그림으로 표현하면 다음와 같다
[캐시 메모리]
- CPU 와 메모리 사이에 위차한 저장 장치로 레지스터보다 용량이 크고, 메모리보다는 빠른 SRAM 기반 저장 장치다.
CPU 연산 속도와 메모리 접근 속도의 차이를 줄이기 위해 만들어졌다
CPU가 매번 메모리에 접근하는 시간이 오래 걸리니, 메모리에서 CPU 가 사용할 일부 데이터를 미리 캐시 메모리에 저장하여 사용함으로써 소모되는 시간을 줄인다.
캐시 메모리가 포함된 저장 장치 계층 구조는 다음과 같이 표현한다.
레지스터
캐시 메모리
메모리
보조기억장치
(CPU 내부에 있는 캐시 메모리도 있으나 속도는 레지스터가 더 빠르다)
[계층적 캐시 메모리]
- 현대식 캐시 메모리 설계 방식으로 캐시 메모리는 한 개가 아닌 여러개의 구성으로 사용되며 보통 3가지 L1, L2, L3 로 구성되어 있다.
L1 - 레지스터보다 크지만 L2 보다 작은 캐시 메모리로 캐시 메모리중 CPU에 제일 가깝기 때문에 가장 빠르다
L1 캐시를 조금 더 빠르게 사용하고자 두 개의 캐시메모리로 다시 나눌 수 있는데 이를 분리형 캐시 메모리라 하며 L1D 와 L1I 이다.
분리형 캐시메모리
L1D = Data 전용 L1 캐시메모리
L1I = Instruction 전용 L1 캐시메모리
L2 - L1 보다는 크지만 L3 보다는 작은 캐시 메모리로 L3 보다 빠르다.
L3 - 캐시 메모리중 가장 크다.
(보통 L1, L2 캐시 메모리는 CPU 내에, L3 는 CPU 외부에 위치해 있다)
멀티코어 프로세서의 캐시 메모리는 각 코어 마다 L1, L2 캐시 메모리가 존재하고, 각 L2 캐시 메모리가 외부의 L3 캐시 메모리와 데이터를 주고 받는다.
(각 코어별로 있는 캐시 메모리일지라도 서로 동일한 내용을 갖겠끔 싱크를 맞춰줘야 데이터의 일관성을 유지할 수 있다)
계층적 캐시 메모리까지 저장 장치 계층 구조에 반영한다면
레지스터
L1
L2
L3
메모리
보조기억장치
로 표현한다.
위에서도 언급했듯이 캐시 메모리는 메모리의 '일부'를 저장한다고 했으며, 이는 당연하게도 캐시 메모리의 용량은 저장 장치 계층에서도 작은 편에 속해있기 때문에 메모리의 모든 내용을 저장할 수 없다.
[캐시 히트 / 미스]
캐시 메모리에 저장되는 일부 데이터는 <CPU 가 자주 사용할 법한 내용을 예측한 것을 저장> 한 데이터 이다.
즉, 예측이기 때문에 캐시 메모리가 가져온 데이터를 활용할 수도 있고, 아닐 수도 있다는 얘기다.
(단순 하드웨어일 뿐인 캐시 메모리가 예측을 한다는 것이 모호하다고 생각될 수 있는데, 이는 다시 말해서 캐시 메모리 제작시 "CPU 가 가장 자주 접근하는 메모리를 가져 올 수 있겠끔 사람이 제작을 한다" 라고 해석을 하면 될 것으로 보인다)
캐시 히트 - 캐시 메모리가 예측해서 가져온 데이터를 활용한 경우
캐시 미스 - 캐시 메모리가 예측해서 가져온 데이터를 활용하지 않는 경우
캐시 적중률 = 캐시 히트 횟수 / (캐시 히트 횟수 + 캐시 미스 횟수)
캐시 적중률이 높아야 캐시 메모리의 성능이 우수하다고 볼 수 있다.
(캐시 메모리의 적중률은 캐시 메모리 설계시 특정 분야에 특화된 컴퓨터들의 경향에 따라 설계를 하게 되어있어, 해당 분야에서 자주 사용하지 않는 프로그램을 사용시 캐시 적중률이 현저히 떨어지게 된다.
일반인들이 사용하는 보통의 컴퓨터의 캐시 메모리는 실행하고자 하는 프로그램의 종류가 다앙하게 있기 때문에 어떠한 기준을 잡을 수 없어 프로그램마다 캐시 적중률 차가 크게 날 수 밖에 없다. 하지만 이정도는 일반인들이 작업하면서 느끼기엔 미비한 정도라 작업에 지장을 주진 않는다)
캐시 적중률이 높으려면 캐시 히트 횟수가 미스보다 많아야 하고, 캐시 히트가 많으려면 CPU 가 자주 사용할 법한 메모리를 잘 예측하여야 되는건데, 이는 CPU가 가지고 있는 성질을 잘 파악해야 되는 것과 같은 맥락으로 볼 수 있다.
[참조 지역성의 원리]
CPU 가 메모리에 접근하는 과정에서 두드러지게 나타나는 두 가지 경향이 있는데
1. CPU 는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있다. (시간 지역성(Temporal Locality) 이라고 함)
2. CPU는 접근한 메모리 공간 근처를 접근하려는 경향이 있다. (공간 지역성(Spatial Locality) 이라고 함)
현재 실행하는 프로그램은 프로세스가 사용하고 있는 메모리 공간 범위 내에서 접근을 할 것이기 때문에 인접한 메모리에 자연스럽게 접근하게 되고, 해당 프로세스에서도 자주 사용되는 메모리 공간 또한 존재하는기 때문에 위와 같은 참조 지역성의 원리가 성립될 수 있다.
'OS' 카테고리의 다른 글
프로세스 (0) | 2024.08.16 |
---|---|
입출력 장치 / 장치 컨트롤러 & 장치 드라이버 (0) | 2024.08.11 |
보조기억장치 (0) | 2024.08.11 |
메모리 주소 공간 (0) | 2024.08.08 |
File System (0) | 2024.08.06 |