운영체제에 대해서 알기위해 하드웨어를 어느정도 알아야 한다. 컴퓨터 구조에서 만큼 깊게 들어가진 않지만 설명하는 기조는 비슷하다. 컴퓨터 하드웨어의 구성은 아래와 같다.

 

- 중앙처리장치 ( CPU : Central Processing Unit )

CPU 또는 프로세서(Processor) 라고 불리며, 운영체제와 가장 밀접한 하드웨어이다. CPU 는 '프로그램 실행' 과 '데이터 처리' 를 담당하며 CPU의 내부는 레지스터, 산술 논리 연산 장치, 제어 장치 등으로 구성된다. 여기서 레지스터(Register)는 데이터를 저장할 수 있는 기억장치의 일종으로 액세스 속도가 가장 빠르다. 

 

- 기억장치 ( Memory )

기억장치는 CPU가 실행할 프로그램과 데이터를 저장하는 장치로 주기억장치와 보조기억장치로 나뉜다.

 

1) 주기억 장치와 보조 기억 장치

- 주기억 장치(Main Memory)

주기억 장치는 CPU 가까이에 위치하며 1차 기억장치로서 고속 액세스가 가능하다. 하지만 가격이 높고 면적을 많이 차지하기 때문에 저장 용량의 한계를 가지고 있다. 주기억 장치는 영구 저장 능력이 없는 휘발성의 성질을 지니고 있다. 

 

- 보조 기억 장치

2차 기억 장치를 가리키며, 기계적인 장치가 포함되기 때문에 저속 액세스가 이루어진다. 하지만 저장 밀도가 높고, 비트당 비용이 낮은 특징을 가지고 있다. 영구 저장 능력을 가지고 있기 때문에 비휘발성의 성질을 지니고 있다.

 

2) 액세스 방법에 따른 기억 장치 분류

 

액세스(Access) 란, CPU 가 기억장치에서 어떤 정보를 쓰거나(Write) or 읽는(Read) 동작을 지칭한다.

 

- 순차적 액세스

순차적 액세스는 저장된 정보를 처음부터 순서대로 액세스하는 방식

 

- 직접 액세스

직접 액세스는 액세스할 위치 근처로 직접 이동한 다음에, 순차적 검색을 통해서 최종위치에 도달하는 방식

 

- 임의 액세스

임의 액세스는 주소에 의해 직접 기억 장소를 찾아 액세스하며, 어떤 기억 장소든 액세스하는 시간은 동일하다.

 

- 연관 액세스

연관 액세스 방식은 저장된 내용의 특정 비트들을 비교하여 일치하는 내용을 액세스하는 방식으로 연관 기억 장치가 여기에 해당한다.

 

3) 제조 기술에 따른 기억 장치 분류

- DRAM(Dynamic RAM)

DRAM은 캐패시터에 전하를 충전하는 방식으로 데이터를 저장하는 기억 소자들로 구성된다. 

 

- SRAM(Static RAM)

SRAM은 기억 소자로서 플리플롭(한 비트 정보를 저장하는 기능을 가진 전자 회로)을 이용한다. 전원이 공급되는 동안에는 재충전 없이 데이터를 계속 유지가 가능하며, DRAM보다 속도가 빠르다. 높은 속도가 필요한 캐시로 사용한다.

 

4) 계층적 기억 장치 시스템

기억 장치 설계에 있어서 가장 중요한 요소는 세가지다. 용량, 속도, 가격 이다.

 

액세스 속도가 높아질수록, 비트당 가격은 높아진다.

용량이 커질수록, 비트당 가격은 낮아진다.

용량이 커질수록, 액세스 시간은 길어진다.

 

기억 장치 계층은 내부 기억 장치와 외부 기억 장치로 구성된다. 기억 장치는 상위 계층으로 갈수록 비트당 가격이 높아지고, 용량이 감소하며, 액세스 시간은 짧아지고, CPU에 의한 액세스 빈도는 높아지는 특성을 가진다.

 

[ CPU 레지스터 ㅡㅡ 캐시 ㅡㅡ 주기억장치 ㅡㅡ ] 

위의 세 가지 기억장치가 내부 기억 장치로서, CPU가 직접 액세스 할 수 있는 기억장치이다. 반면에 

 

[ ㅡㅡ 디스크 캐시 ㅡㅡ 디스크 ㅡㅡ 자기 테이프 및 CD-ROM ] 

위의 세 가지 기억장치는 외부 기억 장치로서, CPU가 직접 액세스 하지 못하는 기억장치이다. 장치 제어기를 통해서 액세스 할 수 있다.

 

여기서 캐시에 주목할 필요가 있다.

 

 

캐시(Cache Memory)

위의 글에서 SRAM 이 캐시로 사용된다고 하였다. 캐시는 주기억장치의 액세스 속도가 CPU 레지스터에 비해 현격하게 느리기 때문에 CPU와 주기억장치, 즉 메인메모리 사이에 설치한 고속의 반도체 기억장치이다. 따라서 캐시가 둘 사이의 속도 완충 역할을 하게된다. 

 

하지만, 만일 캐시가 특별한 알고리즘 없이 일반적인 속도로 둘 사이에 위치해 있다면 어떻게 될 것인가?

 

CPU가 데이터를 읽고 쓰는 것에 있어서 캐시를 통해 메인메모리로 접근하거나 혹은 바로 메인메모리로 접근하는 것에 있어서 속도는 별반 차이가 없을 것이다. 즉 캐시 메모리의 존재가치가 사라진다. 

 

따라서 캐시 메모리가 제 역할을 하는 것은 지역성의 원리가 작용하기 때문이다. 

 

 

- 지역성의 원리(Principle of locality)

동일한 값 혹은 해당되는 값에 의해 관계된 스토리지 위치가 자주 액세스되는 특성이다. 균일한 액세스를 말하는 것이 아닌, 첫번째 계층의 기억장치에 대한 액세스가 두번째 계층의 기억장치 액세스보다 훨씬 더 많다는 의미이다.

 

지역성의 원리가 적용되면 향상된 성능을 얻을 수 있다. 데이터의 지역성은 공간적 지역성과 시간적 지역성으로 나뉜다.

 

- 공간적 지역성

현재 코드의 주변에 있는 코드를 읽을 확률이 높다. 즉, 메인메모리에서 CPU가 요청한 주소지점의 데이터에 인접한 주소의 데이터가 참조될 확률이 높음을 의미한다.

 

- 시간적 지역성

한 번 읽은 코드는 다시 읽을 확률이 높다. 즉, 한 번 참조되었던 데이터는 빠른 시간 안에 재 참조될 확률이 높음을 의미한다.

 

따라서 참조될 확률이 높은 데이터들을 선인출(pre-fetch)하고 캐시내에 저장하고 있으면 CPU는 메인메모리에 접근하지 않더라도 상대적으로 빠른 캐시에 접근함으로 바로 데이터를 사용할 수 있는 것이다.

 

좋은 캐시메모리는 항상 CPU 가 원하는 데이터를 담아 그때그때 CPU 가 데이터를 필요로 하는 경우, 빠르게 공급해주어야 좋은 캐시메모리라고 할 수 있을 것이다. 만약 CPU 가 원하는 데이터가 캐시메모리에 존재할 때 이를 캐시적중(Cache Hit) 라고 말한다. 그리고 이 캐시 적중의 정도(비율) 을 캐시적중룔(Cache Rate) 라고 부르기도 한다. 반면에 캐시메모리에 CPU 가 원하는 데이터가 없다면 일정 시간을 소요하더라도 메인메모리에서 데이터를 가져올 것이다. 이를 미스(Miss) 라고 표현한다.

 

[ 참고링크 ]

cache memory

Posted by doubler
,