자격/임베디드기사

[임베디드기사] [필기] 메모리 계층구조 / 가상메모리 / 캐시메모리

메모리 계층구조(Memory Hierchy)

메모리 계층구조는 다음의 그림으로 표현된다.

단순하다.. ㅎ 아무쪼록 위의 그림과 같이 저장장치를 필요에 따라 여러 가지 종류로 구분한 것을 의미한다. 이 중 CPU안에 레지스터와 캐시가 존재하며 CPU의 연산에 직접적인 지원을 한다. 반면 그들보다 비교적 큰용량의 메모리는 CPU외부에 존재하며 CPU와 아주 느린 저장장치 하드디스크 사이에서 동작한다.

 

메모리 계층구조는 컴퓨터를 설계함에 있어 성능과 용량의 Trade-off관계 속 최적화를 위해서 존재한다. 생각해보자, 만약 메모리가 하드디스크보다 빠르니까 메모리를 2TB연결해버리면 가격이 무지막지 하게 올라갈 것이다. 실제로는 그렇지 않아도 속도가 많이 차이나지 않는데, 바로 지역성(Locality) 때문이다. 컴퓨터에서 한번 참조된 기억장치 영역은 다음번에도 자주 사용될 가능성이 크다는 성질인데, 이 성질을 생각해보면 굳이 비싼 돈 들여서 고 비용의 저장장치로 사용자가 원하는 용량을 채울 필요가 없다는 결론이 나온다.

 

지난일련의 포스팅으로 레지스터 + 메모리는 설명이 되었고, 하드디스크는 보조기억장치이니 중간에 있는 캐시 메모리의 설명이 부족한 상황이다. 자세하게 알아보도록 하자


캐시메모리

메모리 계층구조에서 나눈 경계에는 속도차이가 반드시 발생한다. 특히 CPU내부와 외부의 경계에서 이 속도차이가 극화되는데, 이 속도차이를 어느정도 보상하는 메모리가 캐시메모리이다. 메모리에서 자주사용되는(지역성있는) 공간을 캐시메모리에 적재하여 전체적인 성능을 향상시키는 것이다.

위와 같이 이해하면 되겠다. 캐시가 바로 지역성(Locality)를 최대로 활용하는 소자이다. 말이나왔으니 조금 더 알아보면 지역성은 최근의 사용된 데이터의 인접한 데이터가 자주 사용되는 공간지역성(Spatial Locality)와 최근에 사용된 데이터가 재참조될 가능성이 높은 시간지역성(Temporal Locality)로 구분할 수 있다.


가상메모리(Virtual Memory)

보조기억매체속의 프로그램은 PID를 부여받고 주기억장치(메모리)에 적재되는 순간 프로세스라는 이름으로 불리우는데, 만약 이 주기억장치(메모리)에 모든 공간이 차면 어떻게 될까? 더는 프로세스를 생성할 수 없는 것은 아니고 넓은 용량을 가지는 보조기억장치 공간의 일부 구역을 주기억장치(메모리)처럼 사용하는 “가상 메모리(Virtual Memory)”라는 기법이 해결책이다.

 

CPU는 메모리 관리 장치를 사용한다. MMU(Memory Management Unit)이라고 불리는 이 요소는 CPU에 직접적인 접근을 방지하고 메모리를 통해서만 접근할 수 있도록 한다. 위에 서술된 상황처럼 메모리가 부족하거나 모종의 이유로 메모리에 원하는 데이터가 없는 경우를 페이지 폴트(Page Fault)라고 칭한다. 이러면 MMU가 메모리의 일부영역을 메모리영역으로 지정해서 실제의 메모리와 그 영역을 교환하여 데이터를 참조할 수 있게하는데 이 과정을 SAWP이라고 한다. 당연하겠지만 이런 SWAP이 자주 발생되면 성능이 많이 저하된다. 그 현상을 Thrashing이라고 부른다.

 


메모리 단편화(Fragmentation)

메모리리 상에 데이터가 적재될 때는 적절하게 크기를 맞출 수 없어서 발생하는 낭비가 있다. 이를 단편화(Fragmentation)라고 칭한다. 단편화에는 내부단편화와 외부단편화가 존재하는데, 내용은 아래도표와 같다.

메모리를 분할하는 기법은 고정된 길이로 분할하는 페이지(Page)기법가변길이로 분할하는 세그멘테이션 기법이 발생한다. 단편화는 페이지기법의 경우에는 고정된 크기보다 낮은 크기의 프로세스를 할당할 때 발생하는 낭비인 내부 단편화, 세그멘테이션 기법의 경우에는 프로세스를 아예 할당을 하지못하는 외부 단편화가 존재한다.


정리

이번시간에는 메모리에 대해서 세부적으로 알아보았다. 캐시와 가상메모리도 알아보고, 메모리에서 발생할 수 있는 낭비인 단편화에 대해서 알아보았다.

 

다음시간에는

저장장치를 자세하게 알아보았으니 다음시간에는 입출력장치에 대해서 자세하게 알아보도록 하겠다.