2014년 3월 21일 금요일

CPU는 어떻게 동작하는가?(How does the CPU work?)

CPU가 어떻게 생겼는지 좀 이해들이 되었는지 모르겠다. 단순하게 설명하기엔 너무 복잡하고, 복잡하게 설명하면 알아먹기 어려운 것이 CPU의 구성이 아닌가 싶다. 다양한 내부 구성요소를 갖고 있는 CPU는 어떻게 동작하는 것일까?

CPU가 동작한 다는 것은 우리가 지시한 명령어와 데이터의 집합, 즉, 프로그램을 실행시킨다는 것을의미한다. 그렇다면 CPU가 동작을 하기위해서는 명령어나 데이터를 프로그램으로부터 가져와야한다. 프로그램은 컴퓨터에서 실행될 때 주메모리에 적재되어 실행되므로, CPU는 주메모리에 적재되어있는 프로그램에서 명령어나 데이터를 가져와서 CPU가 이해할 수 있는 형태로 해석하고, 해당 동작을 실행하여 생성된 결과를 저장함으로써 하나의  명령어에 대한 동작 사이클(머신사이클: machine cycle)을 마무리 한다. 이러한 동작을 반복적으로 수행함으로서 프로그램에서 지정한 작업을 처리할 수 있다. 이러한 과정을 순서대로 정리하면 다음과 같다.

  1. Fetch: 메모리에서 명령어를 가져오는 단계
  2. Decode: 명령어를 ALU나 FPU가 이해할 수 있도록 해독하는 단계
  3. Execution: ALU나 FPU가 주어진 연산을 처리하는 단계
  4. Store: 연산처리 결과를 메모리에 저장하는 단계


이렇게 순차적으로 머신사이클이 반복된다면 하나의 명령을 처리하는데 기본적으로 4단계가 걸리는 것이며, 하나의 코어만 존재하는 CPU는 다음 명령을 수행하기 위해서는 4단계가 지나가길 기다려야 한다. 그렇지만 오늘날과 같이 멀티코어를 탑재하고 있는 CPU는 동시에 여러개의 명령어를 처리할 수 있기 때문에 메모리로부터 명령어를 가져오는 효과적인 방식이 필요한데, 대표적으로 파이프라이닝(Pipelining) 방식이 널리 사용된다.

아래 그림은 파이프라이닝이 없는 단일 코어 CPU의 명령어 실행동작과 파이프라이닝으로 동작하는 쿼드코어 CPU의 명령어 실행 동작을 나타내고 있다.

출처: Understanding Computer Today and Tomorrow
이렇게 파이프라이닝과 같은 방식으로 머신사이클을 처리하는 이유는 여러개의 코어가 동시에 동작하여 작업을 재빨리 처리하도록 만드는 것이다. 하지만 여러개의 코어에서 동시에 작업을 처리하기 위해서는 프로그램을 만들때 여러개의 작은단위의 작업으로 나눠서 동시에 처리할 수 있도록 만들어줘야 한다. 때로는 반드시 순차적으로 처리해야하는 작업이 있다면, 순차적인 작업이 처리될 동안 다른 코어들은 작업진행을 못하고 쉴 수 밖에 없을 것이다.
  • 파이프라인은 우리가 바다에서 파도타기를 하는 사람들이 파도가 말려서 마치 파이프처럼 생긴 곳을 멋지게 서핑하면서 빠져나오는 것처럼 명령어를 수행하는 머신사이클이 서로 말려서 처리되는 것과 같은 것이다. 




2014년 3월 20일 목요일

CPU가 알고싶어?(Do you want to know the CPU - Central Processing Unit ?)

컴퓨터에서 가장 중요한 역할을 수행하는 부품을 하나 뽑으라면 CPU라고 할 수 있다. 열손가락 깨물어 안 아픈 손가락이 없다고, 컴퓨터의 핵심부품들은 모두가 존재 이유가 있지만 가장 중요한 역할을 수행하는 것이 바로 CPU라는데는 이견이 없을 것이다. 사람으로 말하면 CPU는 우리의 두뇌역할을 하는 것이다. 단순히 두뇌역할을 한다고 말하기에는 두뇌의 기능이나 역할이 매우 다양한 반면에 CPU가 수행하는 역할은 그렇게 많지 않다는 차이가 있지만 우리 몸이 제대로 움직이게 해주는 것은 두뇌의 역할이며, 컴퓨터가 제대로 움직이도록 전체적인 운영관리를 책임지고 있는 것이 CPU이기 때문에 두뇌와 같은 역할을 수행한다고 말해도 무리가 없다. 일반적으로 좌뇌는 논리적 능력을, 우뇌는 감성적 능력을 담당한다고하니, CPU는 좌뇌에 가까운 기능을 수행한다고 할 수 있겠다.


컴퓨터 발전의 역사는 CPU 발전의 역사라고 할 수 있다. 오늘날 우리가 사용하는 CPU는 반도체 기술에 의해서 만들어진 것으로써 마이크로프로세서(Microprocessor)라고도 불린다.

그렇다면 이런 CPU는 어떻게 구성된 것일까? 일단 CPU 내부에는 몇가지 기능별로 구분되는 모듈이 있다. 다음 그림은 CPU의 내부 구성요소를 간단하게 보여주고 있다.


위 그림에서 가운데 녹색선으로 블록처리 되어있는 부분이 CPU로써 가장 기본적인 3가지 기능을 보여주고 있다. 각각의 기능을 요약하면 다음과 같다.
  • ALU(Arithmetic Logic Unit): CPU의 가장 기본적인 기능으로 산술논리 연산을 담당
  • CU(Control Unit): 데이터와 명령어의 흐름과 ALU의 처리를 제어하는 역할을 담당
  • Cache Memory: 컴퓨터의 주메모리와 CPU사이의 속도차이를 해결하기 위해서 CPU에 내장된 속도가 매우 빠른 메모리
우리가 저작권과 컴퓨터과학 교과목에서 사용하는 교재인 "Understanding Computers Today and Tomorrow"에서는 보다 세분화된 CPU 구성요소를 나타내고 있는데 아래 그림은 이러한 세분화된 CPU 구성을 보여주고 있다.

CPU의 세부 구성
추가적인 구성요소에 대해서 알아보자.

  • FPU(Floating Point Unit): 부동소수점(실수) 연산은 ALU만으로 처리하기에는 연산량이 소요되므실수연산만을 하는 기능
  • Prefetch Unit: 컴퓨터의 동작 속도를 높이기 위해서 현재 CU가 다음에 처리해야 할 명령어와 데이터를 미리 가져오는 기능
  • Decode Unit: Prefetch Unit이 가져온 명령어를 CU가 이해할 수 있는 형태로 해석하는 기능
  • Register: 연산에 필요한 데이터나 연산결과, 명령어, 명령어 처리순서등을 일시적으로 저장하는데 사용되는 고속의 메모리(CPU의 속도와 같이 동작하며, 일반적으로 캐시메모리보다 빠름)
  • BIU(Bus Interface Unit): CPU외부에 있는 메모리나 I/O와의 연결을 위한 인터페이스

Register와 관련해서는 아래 그림에 보다 자세한 내용이 있다. 아래 그림과 같이 CPU이외에도 주메모리와 플래시 메모리, 주변장치회로까지 하나의 칩으로 구성된 것을 마이크로콘트롤러(Microcontroller)라고 한다.

아래 그림에 나온 레지스터의 종류를 간단히 살펴보자.

  • Program Counter: 기계어로 변환된 명령어가 프로그램 메모리에 저장되어있는데, 현재 CPU가 수행하고 있는 명령어의 위치(주소)를 저장하고 있는 레지스터
  • Instruction Register: Prefetch Unit이 읽어들인 명령어를 Decode Unit이 해석할 수 있도록 저장하고 있는 레지스터
  • General Register: 범용레지스터라고하며, 연산과정이나 연산후의 데이터를 일시적으로 저장하는 레지스터


CPU의 동작속도는 동일한 CPU라면 당연히 클록속도가 높은 것이 빠르겠지만 몇년 전부터 CPU제조기술의 급속한 발전은 CPU안에 CPU 코어를 여러개 탑재하여 동시에 작업을 처리할 수 있는 멀티코어(Multi Core)방식이 도입되고 있다. 이러한 CPU는 내부에 2개, 4개, 8개의 코어가 들어있다고해서 듀얼코어, 쿼드코어, 옥타코어라고 불린다. 최근 등장한 스마트폰들이 쿼드코어나 옥타코어로 구성되어있으며, i5는 듀얼코어, i7은 쿼드코어로 구성되어있다.


AMD 8-Core CPU


2014년 3월 19일 수요일

멀티미디어에 대해서 알아보자.(Let's see the Multimedia !)

스마트 기기가 대중화된 요즘은 멀티미디어를 사용하는 것이 당연시되고 있다. 영화관이나 거실에서 누리던 멀티미디어가 컴퓨터와 네트워크 기술의 발전과 더불어서 책상위(데스크톱)에서 무릎위(랩톱)로, 무릎위에서 손바닥위(팜톱)로 이동하여 즐길 수 있게 된 것이다. 위키피디아에서는 멀티미디어는 서로 다른 콘텐츠를 조합하여 이용하는 콘텐츠라고 정의하고 있다. 이것은 한 종류만 사용하는 미디어와 대비되는 개념이며, 텍스트, 오디오, 정지영상, 애니메이션, 동영상 또는 인터랙티브 콘텐츠의 형태를 조합하는 것을 포함한다.

"Multimedia refers to content that uses a combination of different content forms. This contrasts with media that use only rudimentary computer displays such as text-only or traditional forms of printed or hand-produced material. Multimedia includes a combination of textaudiostill imagesanimationvideo, or interactivity content forms." (위키피디아)

멀티미디어를 활용하는 환경과 개념을 그림하나로 간략히 보여주면 좋을 것 같은데 마땅한 것이 없다. 그나마 아래와 같은 그림을 보면 쉽게 이해되려나?




멀티미디어는 마치 그 옛날 유행했던 애니메이션의 독수리 5형제(원제 Gotcha man)의 합체와 같다. 독수리 5형제가 조종하는 비행체는 각자 독자적으로 움직이는 비행체(미디어)이지만, 합체하면 엄청난 위력을 발휘하는 비행체(멀티미디어)가 되는 것이다. 특히 악당을 쳐부수기 위해서 마지막에 피닉스로 변하는 장면은 합체된 비행체가 완전하게 다른 하나의 모습으로 변하는 것은 각자의 미디어가 합쳐져 새로운 멀티미디어가 탄생하는 모습과 같다할 것이다. 


그나저나 독수리 5형제가 나중에 실사판으로도 만들어졌는데 어찌되었나 모르겠다. 자료를 찾아보니 조악한 특수효과로 망했다고 한다.



독수리 5형제 실사판 영화 포스터

멀티미디어는 저작권적 관점에서 바라보면 저작물에 해당된다. 저작물은 어문저작물을 비롯하여 음악, 미술, 영상, 사진, 건축, 컴퓨터프로그램 등 다양한 형태의 저작물이 존재하며, 인간의 사상과 감정을 표현한 것을 저작물로 인정하고 보호하고 있다. 따라서 멀티미디어도 창의적이고 인간의 사상과 감정을 표현한 것이라면 당연히 저작권을 보호 받겠지?


2014년 3월 18일 화요일

그럼 컴퓨터 소프트웨어는 뭔데?(What is the computer software?)

앞선 포스트에서 컴퓨터 하드웨어 대하여 개략적으로 알아보았다. 컴퓨터 하드웨어는 사람으로 따지면 뼈와 근육으로 이루어진 몸에 비유할 수 있다. 운동선수나 몸이 좋은 사람에게 하드웨어가 좋다고 말하는 것과 같은 개념이다. 그렇다면 컴퓨터 소프트웨어는 컴퓨터 하드웨어가 제대로 동작하도록 만들어주는 것이며, 사람으로 친다면 두뇌활동 또는 정신(영혼)에 해당한다고 할 수 있다. 혼수상태에 빠진 사람을 식물인간이라고 말하는 것 처럼, 소프트웨어가 없는 하드웨어는 고철덩어리에 불과하다.

이렇게....


우리가 우리의 몸은 만질 수 있지만 정신이나 영혼은 만질 수 없는 것 처럼, 하드웨어는 우리가 보고 만질 수 있는 물리적인 유형의 부속품으로 이루어져 있으나 소프트웨어는 만지거나 볼 수 없는 무형의 부속(무형의 자산)이다.

무형의 자산 ? 우리학과가 다루고 있는 것이 바로 무형이 자산이 아닌가 !!

기본적으로 소프트웨어는 컴퓨터가 수행해야할 명령어를 순서대로 나열해놓은 것이다. 이들 명령어는 CPU가 읽어들여 코드를 해석하고 원하는 동작을 수행하도록 주변 하드웨어로 지시를 내리거나 연산한 결과를 메모리에 저장하도록 보내기도 한다.

우리들이 익숙하게 사용하는 소프트웨어 또는 프로그램 용어들을 몇가지 살펴보자. 안드로이드, 앱, 윈도우즈, iOS, 한글, 오피스, WoW, LoL, 스타크래프트 등등등... 많은 소프트웨어와 관련된 용어를 사용하고 있는데, 안드로이드, iOS, 윈도우즈는 컴퓨터의 기동에 필수적인 것으로 시스템 소프트웨어에 해당되며, 앱, 한글, 오피스는 응용 소프트웨어에 해당되는 것이다.

그렇다면 소프트웨어는 시스템 소프트웨어와 응용 소프트웨어로 구분할 수 있으며, 시스템 소프트웨어는 운영체제(안드로이드, iOS, 윈도우즈)와 디바이스 드라이버, 유틸리티 소프트웨어로 나뉘고, 응용 소프트웨어는 사용자들이 널리 사용하는 한글이나 오피스 프로그램, 게임용 소프트웨어, 스마트폰에서 사용하는 앱들이 포함된다.


  • 시스템 소프트웨어
  1. 운영체제는 일반 사용자가 하드웨어에 대한 지식이 없이도 손쉽게 컴퓨터를 활용할 수 있도록 하거나 앱을 실행시킬 수 있도록 하드웨어와 사용자 사이에서 중재하는 역할을 수행한다. 우리가 컴퓨터를 켜거나 스마트 기기들의 전원을 켰을 때 처음 기동되는 소프트웨어가 운영체제에 해당된다.  
  2. 디바이스 드라이버는 컴퓨터에 탑재되어있거나 연결되는 주변장치 또는 하드웨어를 소프트웨어에서 손쉽게 접근하여 사용할 수 있도록 운영체제에 설치되는 소프트웨어를 말한다. 우리가 USB메모리나 프린터를 USB포트에 처음 컴퓨터에 연결하면 우측 하단에 새 하드웨어가 발견되었다는 메시지와 드라이버 소프트웨어를 설치한다는 메시지가 나온다. 이 때 컴퓨터에 설치되는 하드웨어를 사용할 수 있도록 하는 소프트웨어가 디바이스 드라이버 또는 드라이버 소프트웨어이다.


  3. 유틸리티 소프트웨어는 사용자가 컴퓨터를 유지보수하거나 관리하는데 사용하는 소프트웨어로써 파일 매니저와 같은 것이 유틸리티의 예이다.

  • 응용 소프트웨어
    응용 소프트웨어는 사용자를 위해서 만들어진 대부분의 소프트웨어이다. 오늘날과 같은 스마트 기기 환경에서는 앱이라는 이름으로 널리 사용되고 있다. 인터넷을 브라우징하는 앱에서부터 게임, 일정관리, 문서편집기, 사진편집기, 동영상이나 음악을 재생하는 재생기 등 다양한 응용 소프트웨어가 존재한다.





컴퓨터 하드웨어가 뭐지?(What is the computer hardware?)

앞에서 컴퓨터에 대하여 소개를 하면서 컴퓨터를 구성하는 하드웨어와 소프트웨어가 있다고 했다. 그렇다면 컴퓨터 하드웨어란 무엇일까?

지금은 누구나 아이스크림이라고 부르지만 내가 어린시절에는 아이스께끼, 하드라고 불렀다. 지금처럼 크림처럼 부드럽게 만들어진 것이 아니라 물에 주스가루같은 것을 섞어서 얼린 것이기 때문에 아마도 단단해서 하드라고 불렀던 것 같다.

하드웨어(hardware)에서 하드는 단단하다는 의미이고 웨어는 제품이나 방식을 의미한다. 따라서 단단한제품 즉, 물리적으로 만질 수 있는 존재를 하드웨어라고 하겠다. 그래서 컴퓨터 하드웨어는 우리가 눈으로 보고 만질 수 있는 상태의 컴퓨터라고 할 수 있다. 일반적으로 우리가 가지고 있는 컴퓨터 하드웨어는 다음과 같은 형태로 많은 부속품들로 구성되어있다.


가정에서 사용하는 PC는 본체라고하는 박스가 있고, 그 박스를 열면 아래와 같이 여러가지 부속품들이 내장되어 있는 모습을 볼 수 있다. 물론 여러분이 처음에 컴퓨터를 구매하였을 때 내부 모습은 이렇게 깨끗한 모습을 보일 것이다.



그러나 기대와 달리 여러분의 가정에 있는 PC의 내부 모습은  얼마나 오래되었는지 알 수 도없는 먼지 투성이의 내부가 될 것이다. 이게 진정한 여러분 집에 있는 PC의 내부 모습이다. 아니라고? 한번 열어보시길..



어쨌든 컴퓨터 하드웨어에서 가장 중요한 부분은 본체이고, 본체 속에는 다양한 하드웨어 부속들이 들어가 있다. 이 가운데 CPU(Central Processing Unit)와 RAM(Random Access Memory) 모듈, 하드드라이브, 주기판(Motherboard)는 컴퓨터를 운영하는데 반드시 필요한 장치이며, Heat sink는 CPU에서 발생하는 열을 방출하는 역할을 수행한다. 물론 컴퓨터는 전기를 먹으면서 동작하니까 파워서플라이는 기본..

본체 속의 하드웨어들
세분화된 하드웨어들

이렇게 다양한 하드웨어 부속품들은 우리가 사용하는 컴퓨터를 다양하게 활용할 수 있도록 보조해주는 역할을 해주고 있으며, 아래 그림에 나타낸 것과 같이 다양한 컴퓨터 하드웨어의 형태를 볼 수 있다. 다양한 RAM 모듈의 종류와 하드디스크 종류, CPU를 탑재할 수 있는 소켓, 외부장치와 연결을 위한 포트와 슬롯의 종류 등 다양한 하드웨어가 있다. 그림을 상세히 보기 원하면 이곳을 누르면 원본을 볼 수 있다.


컴퓨터 하드웨어 도표

각 부속품 별로 상세한 내용은 나중의 포스트를 통해서 알아보자. ^^