본문 바로가기

Programming/Linux

컴퓨터 시스템 구조

반응형

컴퓨터 시스템의 구성요소

CPU : 컴퓨터의 두뇌에 해당하며 연산과 제어 기능을 제공한다

MEMORY : 데이터와 프로그램을 저장하는 장치로써 메인 메모리와 보조기억장치로 구분한다.

입출력 주변장치 : 통신장치, 키보드, 마우스, 프린터 등의 외부와의 연결통로이다.

버스 : 프로세서와 메모리 그리고 입출력 장치들의 데이터가 이동하는 통로

 

 

폰 노이먼 방식의 컴퓨터 구조

폰노이만

1947년 John von Neumann에 의해서 고안된 구조로서 현대 컴퓨터 구조의 근간을 이루고 있다.

- 메모리로부터 프로그램을 가져와서 순차적으로 처리

- 명령어와 데이터를 모두 메모리에 저장

- 명령어 실행은 CPU에서 수행

 

 

CPU

컴퓨터의 모든 장치들의 동작을 제어하고 연산을 수행하는 장치다.

현재는 3GHz이상의 클럭(Clock)속도에서 64비트로 동작하며 멀티 코어 방식으로 출시되고 있다.

 

레지스터

데이터를 보관하는 작은 메모리로서 프로그램의 실행 중에 사용되며 속도가 빠르고 실행의 중간 결과나 적은 양의 자료를 임시로 저장한다.

CPU의 종류에 따라서 사실 레지스터의 종류는 많이 다르다. 아래는 전반적인 내용이다.

 

IR(Instruction Register) :  현재 수행하는 명령어를 기억

폰노이만 구조에서는 프로그램 명령어가 메모리에 저장되어 있고, 프로그램이 다루는 데이터도 메모리에 저장되어 있다.

 

PC(Program Counter) : 다음에 실행될 명령어의 주소를 기억

MBR(Memory Buffer Register) : 모든 자료가 거치게 되는 자료 입출력용 레지스터

MAR(Memory Address Register) : 기억장치내의 정보를 호출하기 위한 주소 저장용 레지스터

GPR(General Purpose Register) : 사용자가 프로그램에서 활용하는 범용 레지스터

CSR(Control and Status Register) : 연산장치에서 수행한 계산 결과의 상태(Zero, Carry, Negative, Overflow)를 나타내는 레지스터

if문 등을 실행할 때에 a==b와 같은 조건문을 작성했다고하면, 사실 a-b의 연산을 하게 되고, 이것이 만약 제로이면 그 if문을 실행하게 되는데, 이때 사용되는 레지스터라고 할 수 있다.

 

 

연산장치(ALU, Arithmetic Logic Unit)

사칙산술연산이나 논리연산을 수행한다.

 

제어장치(Control Unit)

명령어를 해석하고 그것을 실행하는데 필요한 컴퓨터 내부의 자원(기억장치, 산술연산장치, 입출력장치 등) 사이의 데이터 흐름을 제어한다.

 

 

메인 메모리

- 레지스터와 더불어 CPU가 직접 접근 가능한 장치

- 실행 중인 모든 명령어와 데이터는 메인 메모리에 위치

- 일반적으로 DRAM(Dynamic Random Access Memory)라고 부르는 반도체 기술로 구현

- 전원이 공급되지 않으면 그 내용이 소실되는 휘발성 장치이다. 

 

 

캐시

- 레지스터는 일반적으로 CPU 클럭으로 1사이클 이내에 접근이 가능하지만 메인 메모리는 많은 사이클이 소요된다.

- 메모리와 CPU간의 속도 차이를 해결하기 위해서 메인 메모리와 CPU 사이에 고속의 메모리를 추가한 것

- CPU는 메인 메모리 이전에 캐시에 해당 데이터를 확인하고 있으면 바로 캐시 데이터를 사용하며, 그렇지 않은 경우에 메인메모리를 접근한다.

 

- CPU 성능 발전에 따라 캐시 중요성도 커졌다. 캐시가 없다면 CPU성능이 아무리 개선되어도 결국 메모리 접근에 따른 속도 때문에 성능이 저하된다.

- 캐시는 명령어 캐시, 데이터 캐시로 구분된다.

 

캐시의 성능

캐시의 성능은 프로세서가 이후에 참조할 정보를 얼마나 보유하고 있는 지에 의해 좌우된다.

캐시에서 찾고자 하는 데이터를 찾을 수 있느냐 없느냐로 전체 컴퓨터 성능을 이야기하기도 한다.

한 번에 찾았을 때를 hit라고 표현한다.(반대의 경우 miss)

 

- 캐시에 저장된 데이터와 실제 메인 메모리에 저장된 데이터를 어떻게 일치시킬 것인가도 중요한 이슈이다.

-> 운영체제에서 취급

 

 

보조기억장치

주변장치들 중에서 프로그램과 데이터를 저장하는 장치

 

 

메모리 계층구조

 

 

 

시스템 버스

- 하드웨어 장치들을 물리적으로 연결하여 서로 데이터를 주고받을 수 있게 하는 통로

- 버스가 전송하는 정보의 종류에 따라서 제어, 주소, 데이터 신호 그룹으로 구분된다.

- 위치에 따라서 내부버스와 외부버스

- 여러비트 동시전송 가능여부에 따라 직렬버스와 병렬버스로 나뉘기도 한다.

- 요즘 트렌드는 직렬, 여러개로 나누어서 복잡하게 만들기보다 하나로 보내되 빠르게 보내자로 통일. 병렬버스의 경우 속도는 당연히 더 빠르지만, 물리적인 버스라인에 동시적으로 보내지는 신호간의 간섭 문제가 해결하기 쉽지 않기 때문.

 

버스의 종류

 

입출력장치

컴퓨터와 사용자를 연결해주는 역할을 수행한다.

- 운영체제의 주요 기능 중 하나가 데이터의 입출력을 위한 모든 컴퓨터의 장치들을 운영체제가 제어하는 것이다.

 

폴링

- CPU가 주변장치를 연속하여 감시하는 방법

- 장치 제어기의 상태 레지스터를 주기적으로 읽어서 입력 데이터가 있는 지를 확인하거나 출력 데이터를 처리할 수 있는 지 확인 -> CPU 처리 효율이 저하된다.(키보드) -> 항상 주변장치에 처리할 데이터가 있는 경우는 효과적일 수 있음.(거의 없음)

 

인터럽트

대부분은 인터럽트 방식을 사용(키보드 마우스)

- 입출력 요구가 있을 때에만 CPU가 관여 -> 효율적

- 주변 장치가 데이터 전송을 위한 준비가 되면 CPU에게 인터럽트를 전달

- 인터럽트가 발생하면 현재 CPU상태(레지스터값)를 저장(중지)하고 인터럽트 핸들러의 절차를 수행한 이후에 저장된 CPU상태를 복구한다.

- 인터럽트 발생여부는 CPU 하드웨어가 판단해서 계산성능을 저하시키지 않는다.

- 인터럽트가 빈번하게 발생하면 CPU상태를 저장하고 복구하는 시간이 많이 소요되어서 비효율적일 수 있다.

- 이벤트 발생 빈도가 낮은 환경에서는 인터럽트가 효율적.

 

DMA(Direct Memory Access)

- 주변장치와 메모리간의 데이터 전달을 위해서 CPu가 관여하지 않고 주변장치와 메모리가 상호간에 직접 수행하는 방식

- CPU는 입출력 장치의 주소 및 데이터의 양 등의 정보를 DMA 콘트롤러에 전달하고 다른 작업을 계속한다.

 

반응형