메모리의 종류에는 레지스터, 캐시, 메인 메모리, 보조기억장치 등이 있다.

메모리는 속도가 빠를 수록 비싸고 용량이 작기 때문에, 메모리간 계층구조를 구성하여 성능을 상호보완한다.

레지스터는 프로세서 내부에 존재한다. 프로세서가 사용할 데이터를 보관하는 가장 빠른 메모리이다.

캐시는 프로세서와 메인 메모리 간의 속도 차이를 보완하기 위한 고속 버퍼이다.

메인 메모리는 프로세서 외부에 존재하며, 프로세서에서 즉각적으로 수행할 프로그램과 데이터를 저장하거나, 프로세서에서 처리한 결과를 저장한다.

보조기억장치는 하드디스크(HDD)같이 접근시간은 느리지만 기억용량이 큰 기억장치를 말한다.

이러한 성능(속도, 용량, 비용)이 다른 기억장치를 효과적으로 사용해 시스템의 성능을 향상시키는것이 메모리 계층 구조의 목적이다

.

캐시(Cache)는 프로세서와 메인 메모리간의 처리 속도 차이를 보완하기 위한 고속 *버퍼이다.

(*버퍼 : 데이터를 한곳에서 다른 한곳으로 전송하는 동안, 일시적으로 그 데이터를 보관하는 메모리 영역)

캐시는 메인 메모리에서 데이터를 블록 단위(저속/낮은 대역폭)로 가져와 프로세서에 워드 단위(고속/높은 대역폭)로 전달한다.

프로세서에서 읽어들인 워드에 참조하려는 정보가 있는 경우를 캐시 적중(cache hit), 없는 경우는 캐시 실패(cache miss)라 한다.

 

Principle of locality

캐시에는 지역성이란것이 존재한다.

지역성이란 기억장치에 대해 특정 영역에만 참조가 집중적으로 이루어지는것으로, 공간적 지역성시간적 지역성 등이 존재한다. 

 

공간적 지역성이 발생하는 이유는 다음과 같다.

1)프로그램이 명령어를 순차적으로 실행하는 경향때문에 발생

2)대부분의 컴파일러를 메모리에 인접한 블록에 배열로 저장. 따라서 프로그램이 배열 원소에 순차적 접글을 시도하므로, 지역적 접근 경향 발생

 

시간적 지역성이 발생하는 이유는 다음과 같다.

1) 같은 주소를 반복해서 참조한 경우

ex) for문, while문...

 

CPU칩에는 여러개의 cache가 들어간다.

그리고 그 성능과 역할에 따라 L1, L2, L3 캐시 등으로 나눌 수 있다.

1) L1 cache : 프로세서와 가장 가까운 캐시이며, 속도를 위해 *Instruction cache와 *Data cache로 나눈다.

(Instruction cache : 메모리의 TEXT영역 데이터를다루는 캐시 / Data cache : TEXT영역을 제외한 모든 영역을 다루는 캐시)

2) L2 cache : L1 캐시보다 용량이 큰 캐시

3) L3 cache : 멀티코어 시스템에서 여러 코어가 공유하는 캐시

캐시의 용량은 L1 < L2 < L3 순이다.

뒤에 붙은 숫자가 늘어날 수록 비교적 코어에서 멀고, 속도가 느리다.

CPU (Central Processing Unit)는 컴퓨터 하드웨어에 부착된 모든 장치의 동작을 제어하고 명령을 실행한다. (프로세서라고도 한다)

프로세서는 연산장치, 제어장치, 레지스터 세 부분으로 구성되며, 각 장치는 내부 버스로 연결되어있다.

연산장치는 산술/논리 연산 등의 기능을 수행한다.

제어장치는 입출력장치간 통신 및 조율을 제어한다.

레지스터는 프로세서 내에 자료를 저장하는 가장 빠른 기억장치이다.

위 사진이 CPU이다.

CPU마다 구성에 있어 차이는 있을 수 있다.

(*I/O - Input Output Processer / QPI - Quick Path Interconnect) 

캐시(Cache)는 속도가 빠른 프로세서와 프로세서에 비해 비교적 느린 메인 메모리간의 처리 속도 격차를 보완하기 위한 고속 버퍼이다.

캐시에 대해서는 다른 글에서 자세히 다룰 예정이다.

+ Recent posts