본문 바로가기

COMPUTER SCIENCE/Introduction to CS

[Section 1] 컴퓨터 시스템의 목적

컴퓨터 과학 미리 보기

 

[INTRO] 컴퓨터 과학 미리 보기

컴퓨터 과학의 개요 컴퓨터 과학은 컴퓨터의 시스템과 구조를 이해하고 어떻게 설계하는지에 대한 기본 지식을 공부하는 학문이다. 중간중간 프로그램 언어와 함께 공부하면 컴퓨터 과학의 기

hookspedia.tistory.com

INTRO

소프트웨어를 떼어놓고 단순히 하드웨어 측면에서 컴퓨터를 바라보면, 그저 전기로 작동하는 기계와 다름이 없다. 컴퓨터를 컴퓨터답게 만드는 것은 강력한 시스템이 존재하기 때문이다. 컴퓨터 시스템이 왜 강력한지 이해하기 위해 시스템의 목적에 대해 알아보도록 하자.

컴퓨터 아키텍처(Architecture)의 이해

건축에서도 사용되는 아키텍처라는 단어는 구조라는 의미를 가지고 있다. 컴퓨터 아키텍처는 단순한 기계인 컴퓨터가 만능 기계로 바꾸어줄 수 있는 원동력을 제공해준다. 이 컴퓨터 구조를 이해하기 위해서는 먼저 컴퓨터의 기본적인 하드웨어 구성을 알 필요가 있다. 

 

가장 단순한 컴퓨터 구조

 

컴퓨터를 가장 단순히 나타내면 위와 같은 구조를 지닐 것이다. 즉, 가장 기본적으로 모니터, 키보드, 마우스 등과 같은 입출력 장치(I/O Device)입/출력 제어기(I/O control Unit)를 통해 컴퓨터와 정보를 주고받는다. 그렇다면 , 입력받은 정보들은 컴퓨터 내부에서 어떻게 처리되는 것일까?

 

컴퓨터는 입력된 정보를 일련의 명령을 통해서 처리하고 가공하여 저장하거나 이를 출력한다. 다시 말해서, 입력받은 정보들을 체계적으로 사용자에게 보여주기 위해 컴퓨터 내부에는 수많은 추상 계층(Abstract levels)들을 통해서 정보들이 처리되고, 인터페이스(interface)를 통해 정보가 제공된다는 것이다. 그리고 이 추상 계층을 설계하는 것이 바로 컴퓨터 아키텍처라 할 수 있겠다.   

컴퓨터 시스템의 목적

컴퓨터 아키텍처가 추상 계층을 설계하는 것이라면, 설계된 모든 추상 계층을 통해서 구현된 컴퓨터의 기능과 인터페이스를 종합해놓은 것이 바로 컴퓨터 시스템이라 할 수 있겠다. 즉, 컴퓨터 시스템의 목적은 좋은 컴퓨터를 구성함에 있다. 그렇다면, 좋은 컴퓨터란 무엇일까? 컴퓨터의 아키텍처는 좋은 컴퓨터를 설계하기 위해 다음과 같은 4가지 관점을 제시한다.

 

" 시스템의 기능(functionality), 조직(Organization), 구현(implementation), 그리고 성능(performance)"

 

따라서 컴퓨터 아키텍처의 목적은 어떠한 컴퓨터 작업을 위해 더 간결한 지시(instruction)를 내리는 것에 있다. 이 과정은 더 적은 읽기와 쓰기 작업에서 더 적은 메모리가 요구되고, 기능을 수행하는 데 걸리는 시간을 단축시킨다. 하지만 좋은 컴퓨터의 정의는 위와 같이 간단하지만은 않다. 왜냐하면 시스템 설계를 위해 고려해야 할 사항이 하나 더 존재하기 때문이다. 바로 중앙 처리 장치(central processing unit)에서 새로운 아키텍처 기술이 등장했기 때문이다.

 

CPU의 실물 사진

 

중앙처리 장치는 일반적으로 컴퓨터의 시스템을 통제하는 것으로 잘 알려져 있다. 이 CPU에는 MCU(Micro Control Unit) 장치와 외부 확장 장치에 관한 직접회로(Integrated Circuit)가 존재한다.

 

* 이렇게 외부 확장 장치에 관한 IC를 하나의 시스템 온 칩(System On Chip)이라는 용어로 구분한다.

 

결과적으로 MCU의 성능 향상을 위해서는 작업 지시를 최대한 간결하게 설계하는 것이 좋다. 그리고 이렇게 지시를 간결하게 하여 지시 복잡도(complexity of instructions)를  줄이는 것이 CISCs(Complex instructions set computers)의 핵심 아키텍처 목표이다. 

 

1980년대에 등장한 RISCs(Reduced instructions set computers) 개념은 기존의 목표를 반전시키는 결과를 가져왔다. 그 기본 아이디어는 파이프라인이라 불리는 간단한 지시를 고정된 길이의 명령어를 병렬 프로세싱을 통해 조금씩 수행하는 것이다. 이 개념에 대한 이해는 CPU의 클럭 개념을 알아야 하므로 여기에서는 더 이상 언급하지는 않겠다. 어떤 방식이 아키텍처 설계에 최고인지는 여전히 판단이 불가능하고, 두 방식 모두 고유한 특성과 장단점을 가지고 있다.

 

* CPU는 프로세서(processor)를 통해 명령어를 해독하거나 실행한다.

 

컴퓨터 과학의 기본 용어 정리

위에서 언급되지 않은 기본 용어들을 다음과 같이 정리한다.

 

런타임(runtime)? _ 런타임이란 컴퓨터 과학에서 어떤 프로그램의 동작 시간이라고 할 수 있다. 즉, 일련의 명령을 수행하는데 걸린 동작 시간이다.

 

이진화 십진법(Binary coded decimal, BCD)? _ 컴퓨터 과학에서 사용되는 이진화 십진법은 이진수를 4자리씩 묶어서 10진법을 나타내는 방법이다.  

 

양극성 접합 트랜지스터 (Bipolar Junction Transistor) _ 지금은 사용이 점차 줄어들고 있지만, 1947년에 개발된 트랜지스터로 전압을 증폭하거나 스위칭하는 기능을 가진 소자이다. 

 

금속 산화막 반도체 전계효과 트랜지스터(Metal-Oxide-semiconductor field-effect Transistor)? _ MOSFET은 일반적으로 널리 알려진 트랜지스터로 N형 반도체냐 P형 반도체냐에 따라 N-MOSFET 혹은 P-MOSFET으로 불리기도 한다. 

 

상보성 금속 산화막 반도체(Complemantary metal-oxide-semiconductor) _ 시모스라고도 불리는 이 직접회로는 SRAM 등의 디지털 회로 구조를 일컫는다. 

 

클럭 속도(Clock rate) _ CPU의 특성을 나타내는 지표이다. CPU의 프로세서(Processor)는 클럭 발생기(Clock generator)라는 장치를 가지고 있는데, 이 장치가 만들어내는 주파수를 클럭 속도라 칭한다.