개요 OS에서 프로세스가 프로그램을 실행시키기 위해서, 메모리에 접근 (load, save)하는데, OS는 프로그램에 크게 코드, 데이터, 힙, 스택의 4부분으로 분할하여 접근토록 한다. 1. Code(Text) area프로세스가 실행할 코드와 매크로 상수 등의 기계어의 형태로 저장된 공간이다. CPU는 코드영역에 저장된 명령을 가져가서 처리한다. 이 영역은 컴파일 타임에 결정되고 런타임에 수정이 이루어지지 않는다. 2. Data area전역변수 혹은 정적변수 등의 변수들이 저장된 공간이다. 전역변수나 정적변수는 프로그램의 시작과 함께 할당되며, 프로그램 종료시 소멸한다. 3. Heap area힙 영역은 프로그래머가 직접 공간을 할당/해제하는 공간이다. 힙 영역은 메모리의 낮은 주소부터 높은 주소까지..
실제 메모리가 얼마나 있던지에 상관없이 프로세서에 일정한 크기의 메모리가 있는 것처럼 환상을 주자! 앞서 Processor와 Main memory의 속도적 한계를 극복하기 위하여 캐시메모리를 사용했다. 캐시메모리에 사용될 확률이 높은 데이터들을 미리 저장해두고 hit이면 빠르게 사용할 수 있게 한 것이다. 이번 Virtual Memory는 메인메모리와 Disk사이의 크기적 한계를 극복하기 위해서 메인메모리를 프로세서와 disk사이의 일종의 '캐시'로 사용하는 것이다. 실제 물리적인 메모리의 크기가 nGB라고 하면 프로그램 하나에서 메모리 전체를 사용하는 경우는 드물기에 필요한 메모리만 사용하게 하는 것이다. VM의 특징 캐시메모리와는 다르게 VM의 경우 miss penalty가 매우 크기 때문에 page..
저번의 Direct Mapped Cache에 이어서 1-2. n-way Set Associative Cache Direct Mapped Cache의 경우 block의 개수가 1개였다. 여러개의 Word를 하나의 index에 저장하는 n-word block방식으로 여러개의 word를 한꺼번에 저장하여 hit rate를 높일 수 있다는 장점이 존재하기는 했지만 index단위로 갱신되는 특성상 같은 index에는 하나의 block만 저장할 수 있었다. 이러한 단점을 해결하기 위해 n-way Set Associative Cache라는 방법이 존재한다. block의 크기를 단순히 늘리는 것이 아니라, 하나의 index에 여러개의 set을 두는 것이다. n-word block 방식과 비슷해 보일수도 있지만 여기서는..
0. 캐시 메모리란? 그 필요성 메모리를 계층적으로 재구성하여 빠르고 큰 메모리인것처럼 Processor(CPU)를 속이는 것. 일반적으로 빠른 메모리는 비싸고 크기가 작고, 느린 메모리는 싼 대신 크기가 크다. 빠른 메모리를 프로세서 가까이에, 느린 메모리는 그 밑에 계층적으로 배치하고, 데이터 지역성을 활용하여 효율적인 메모리 구성이 가능하도록 한다. 데이터 지역성 시간 지역성 한번 참조된 데이터는 곧 재참조될 가능성이 높다는 것을 의미. loop문을 생각해보면 이해가 편하다. 공간 지역성 배열구조처럼 같은 데이터 배열에 연속적으로 접근할때 참조된 데이터 근처에 있는 데이터가 재참조될 가능성이 높음을 의미. -Block : 데이터 전달의 최소단위. -Hit : CPU가 원하는 데이터가 상위계층에 존재..