컴퓨터구조 시간에 배우는 개념이지만, 운영체제 공부에서 빠질 수 없는 개념이기에 OS 에 포함시키려고 했다(컴퓨터구조 항목을 따로 만들 자신이 없는 것도 있었다). 그러다가 그냥 Computer Science로 이해할 수도 있고, Computer Systems로 이해할 수도 있는 중의적인(개인적으로 나는 중의적인 말장난을 참 좋아한다) 의미를 담아 CS 항목을 OS 항목의 상위항목으로 만들었다. 

 

우선, 'Memory'라는 개념은 데이터를 저장할 수 있는 모든 하드웨어를 포함한다. 그것이 영구적이든, 임시적이든.

 

다음의 그림을 보자:

Memory Hierarchy

투박하지만... 설명할 건 다 할 수 있는 그림이다.

저장 장치들의 종류를 피라미드 형태로 구분해놓은 모습이다. 

이 그림에서 위로 올라갈 수록 CPU와 거리가 가깝고, 따라서 빠르다. 하지만 그림에서 직관적으로 알 수 있듯이, 저장공간은 작다.

당연히 아래로 내려갈 수록 CPU와 거리가 멀고, 따라서 느리다. 하지만 그림에서 직관적으로 알 수 있듯이, 저장공간은 크다.

*가장 위에 위치한 Registers는 아예 CPU에 위치해있다

 

각각의 Memory Hierarchy Level에 위치하는 하드웨어들에는 여러 종류가 있다. 가령, Storage Device에 우리가 현 시점에서 가장 많이 사용하고 있는 것은 SSD (Solid State Drive) 이며, Memory에 가장 많이 사용하고 있는 것은 DRAM(Dynamic Random Access Memory)이다.

 

추후 포스팅할 내용이지만, 최근에는 (2019년에 등장한 것으로 알고있다) Persistent Memory가 새로운 저장 매체로서 (New Memory) 등장했고, PM의 특징을 활용한 다양한 연구가 활발하게 이루어지고있다. 저장매채 및 운영체제 학계에서 가장 권위적으로 손꼽히는 학회들에 (OSDI, SOSP, FAST 등) publish 되는 논문들 중 PM 관련 논문들이 계속 등장하고 있다. 새로운 저장 매체가 등장하면 운영체제의 저장 매체를 관장하는 영역 (대표적으로 파일시스템)을 엔지니어링하여 새로운 매체의 특성을 가장 잘 살릴 수 있으면서도, 기존 운영체제와 호환성을 높일 수 있도록 하는 연구를 진행한다. 커널 엔지니어링의 영역이다. 참고로, PM은 DRAM을 대체할 수도, SSD를 대체할 수도 있다. 어떻게 활용되냐에 따라 달라진다.

#Persistent Memory

 

#Locality, '지역성'

Memory Hierarchy에서는 '지역성'이라는 개념을 활용하여 CPU가 필요한 데이터에 가장 빠르게 접근할 수 있도록 한다.

Locality 에는 두 가지 종류가 있다.

  • Temporal Locality

    : '최근' 접근한 공간에는 곧 다시 접근할 확률이 높은 특성

    ex) 반복문

  • Spatial locality

    : 접근한 공간 '근처에'는 곧 다시 접근할 확률이 높은 특성

    ex) array (배열)

이렇게 설명하기엔 좀 웃기지만(?), 어감으로 이 개념을 이해해보자.

'지역성'은 '근처에 있다는 것'을 의미한다.

시간적인 의미를 지닌 형용사인 'Temporal'에 의하여 'Temporal Locality'는 시간적인 의미의 지역성을 의미하고,

공간적인 의미를 지닌 형용사인 'Spatial'에 의하여 'Spatial Locality'는 공간적인 의미의 지역성을 의미한다.

좀 뻔한 얘기였으려나?

 

자 이제 다시 위의 그림을 참고하며 이해해보자.

Memory Hierarchy에서 윗쪽에 위치한 저장매체에 원하는 데이터가 없으면 (있으면 Hit, 없으면 Miss), 데이터를 그 아래 위치한 (lower level의) 저장매체에서 복사해와야된다. 이때, 데이터를 복사하는 단위(unit of copying)을 Block 이라고 한다.

 

Locality 라는 특성을 이용하면, 곧 다시 접근할 확률이 높은 데이터를 미리 higher level memory에 복사해두어, Hit ratio를 높일 수 있다. 즉, 훨씬 빠른 데이터 액세스가 가능해진다.

 

다음 이야기인 Cache 관련 게시글까지 흐름을 타면서 이해하며 읽으시는 것을 강력히 권해드린다.

 

*오개념 지적 대환영*

#키워드 : (게시글이 있는 경우) 링크를 참고하시거나, 검색하면서 읽어주세요.이해에 꼭 필요한 개념입니다.

David A. Patterson, John L. Hennessy - Computer Organization and Design_ The Hardware_Software Interface 5th Edition 과, 이 도서를 기반으로한 학부 수업자료를 기반으로 작성하였습니다.

'CS' 카테고리의 다른 글

Python_Virtual Environment  (0) 2020.12.30
interval  (0) 2020.11.27