a

[컴퓨터 구조] CPU와 기억장치

박은성/ 2022. 8. 13. 12:58
반응형

 


0.

CPU는 기본적으로 다음과 같은 일을 한다.

- 명령어 인출(instruction fetch) : 기억장치로부터 명령어를 읽어온다.

- 명령어 해독(instruction decode) : 수행해야할 동작을 결정하기 위해 명령어를 해독한다.

- 데이터 인출(data fetch) : 명령어 실행을 위해 필요한 데이터를 기억장치에서 불러오거나 / IO 장치에서 데이터를 받는다.

- 데이터 처리(data process) : 데이터에 대한 산술적 혹은 논리적 연산을 수행한다.

- 데이터 쓰기(data store) : 수행한 결과를 저장한다.

 

1. CPU 구조

CPU는 제어 유닛(control unit), ALU(Arithmetic and Logic Unit)과 레지스터(register set)으로 구성된다.

제어 유닛은 명령어를 해석하고, 그것을 실행하기 위한 제어 신호들을 순차적으로 발생시키는 하드웨어 이다. ALU는 산술논리연산과 상태 플래그로 구성된다. 상태 플래그는 ALU의 데이터 상태를 표시한다. 레지스터는 기억장치이다. 이들은 내부 CPU 버스로 연결되어 있다.

 

2. 레지스터

CPU 안에서 데이터를 저장하는 장치를 레지스터라고 한다. 기억장치들 중 가장 빠르고 고가이다. ALU에서 처리된 결과 또는 메인메모리에서 읽은 명령어와 데이터를 임시로 보관하는 기능을 한다. CPU 내부의 레지스터에는 다음과 같은 종류가 있다.

 

- 프로그램 카운터(PC) : 다음에 인출할 명령어의 주소를 갖고 있는 레지스터

- 누산기(AC:accumulator) : 데이터를 일시적으로 저장하는 레지스터

- 명령어 레지스터 : 가장 최근에 인출된 명령어 코드가 저장돼 있는 레지스터

- 기억장치 주소 레지스터(memory address register:MAR) : PC에 저장된 명령어 주소가 일시적으로 저장되는 주소 레지스터

- 기억장치 저장 레지스터(memory buffer register:MBR) : 기억장치에 쓰일 데이터 / 읽힌 데이터를 일시적으로 저장하는 버퍼 레지스터

 

3. 기억장치

기억장치는 크게 ROM과 RAM으로 나뉜다. ROM은 비휘발성으로 프로그램을 기억시키는 용도로 사용되고 있다. 그래서 이름이 Read Only인가..? RAM은 읽고 쓰기가 가능하며 휘발성이다.

 

데이터를 불러올 때 중요하게 생각할 것은 지역성 원리(principle of locality)가 있다. 프로세서가 기억장치에 접근할 때 특정 영역에 대해 시간적, 공간적으로 집중되게 접근한다는 얘기이다.

 

기억장치의 데이터에 접근하는 방식으로는 순차적 액세스(sequential access), 직접 액세스(direct access), 임의 액세스(random access), 연관 액세스(associative access)가 있다. 순차적 액세스는 저장된 순서에 따라 접근하기 때문에 접근 시간은 원하는 데이터의 저장 위치에 따라 다르다. such as 자기 테이프. 직접 액세스는 기억 장소 근처로 이동한 후에 순차적 검색을 통해 데이터에 접근한다. 액세스 시간은 원하는 데이터의 위치와 이전 액세스의 위치에 따라 결정된다. 디스크가 대표적이다. 임의 액세스는 어떤 위치에 접근하는 데에 걸리는 시간이 항상 일정하다. RAM과 ROM이 있다. 연관 액세스로는 캐시가 있다.

 

3-1.  캐시

캐시가 메인메모리로부터 데이터를 인출하는 방식에는 요구인출(demand fetch) 방식과 선인출(prefetch) 방식이 있다. 요구인출 방식은 CPU가 현재 필요한 정보만을 메인메모리에서 블록 단위로 인출해 오는 방식이다. 경우에 따라 미스가 나기 때문에 캐시가 존재하는 효과를 얻지 못할 수 있다. 선인출 방식은 CPU가 현재 필요한 데이터 외에도 앞으로 필요할 것이라 예측되는 데이터를 미리 fetch하여 캐시에 저장하는 방식이다. 지역성(Locality)이 높은 경우에 효과가 높다.

 

캐시의 블록의 값이 변경되었을 때, 그 내용을 메인메모리에 갱신하는 시기와 방법을 결정하는 것을 쓰기 정책이라고 한다. 여기에는 즉시 쓰기 방식(write-through)과 나중 쓰기 방식(write-back)이 있다.

즉시 쓰기 방식은 연산결과 변경된 데이터를 캐시와 메인메모리에 동시에 기록한다. 캐시에 기록된 값과 메인메모리에 기록된 값이 항상 같게 유지하는 것이다. 다만 쓰기 시간이 길어진다.

나중 쓰기 방식은 캐시에 기록한 다음, 기록된 블록에서 교체가 발생할 때 메인메모리에 기록한다. 쓰기 동작의 횟수가 최소화되지만 캐시의 내용과 메인메모리의 내용이 서로 달라진다. 블록이 교체될 때 캐시의 장태를 확인하여 메인메모리에 갱신하는 동작이 있어야 하고, 이를 위해 캐시 라인이 상태 비트(status bit)를 갖고 있어야 한다.

 

 

반응형