Wednesday, January 07, 2009
Retabbed
Login | Register
아티클
  Search
컴퓨터의 기초[3] - 중앙처리장치(CPU)
컴퓨터의 기초[3] - 중앙처리장치(CPU)

중앙처리장치, CPU(Central Processing Uint)라고 많이 쓴다. 컴퓨터가 하는일 계산, 저장 중에서 계산을 담당하는 부분이다. 이 부분의 동작원리를 이해 하면 좀 더 컴퓨터의 깊은 부분을 이해하고 프로그래밍을 할 수 있게 된다.

왼쪽의 그림은 아주 단순화된  CPU의 형태이다. 매우 간단하다. CPU는 메모리와 마찬가지로 소프트웨어가 아니다. 소프트웨어가 아니니 하드웨어다. 하드웨어라 함은 반도체와 전선으로 이루어진 칩 같은 것을 말한다. 프로그래머들은 소프트웨어적으로 컴퓨터가 계산하는 것에 익숙해져 있지만 소프트웨어가 어떤 계산을 실행하면 결국 마지막으로 컴퓨터는 어떤 메모리에 계산된 결과를 저장하여야 한다. 이는 비트, 바이트 편에서 보았던 특정 주소에 특정 값을 넣는 과정을 말한다.

CPU에서 계산을 실제로 담당하는 부분은  ALU라고 불리는 곳이다. ALU는  Arithmetic Logic Unit의 줄임말로 우리말로는 계산기 정도로 보면 되겠다. 그림에서 보면 ALU는 Register에서 내용을 가져와서 계산을 수행하는 것으로 되어 있는데 이 Register는 특별한 메모리의 일종이다. 즉 계산을 할 수 있는 기능을 담은 메모리 이다. 그러므로 이 메모리는 특별히 더 많은 전기, 전자적인 회로를 포함하고 있으며 일반 메모리를 만드는 것 보다 비싸다.

Register는 대부분의 현대적인 CPU에서도 100개를 넘지 못하며 각각의 크기는 비트,바이트 편에서 배운바 있는 한 주소에 몇 바이트를 저장하도록 설계된 컴퓨터냐에 따라서 달라진다. 보통 32비트 컴퓨터라 하면 32비트 레지스터를 가지게 된다.

어떤 메모리에 있는 두개의 값을 더해서 다시 메모리에 저장하자면 우선 메모리에 있는 두개의 값을 레지스터로 옮겨야 한다. Memory Interface라는 것이 그 옮기는 역할을 하는 곳이다. 즉 메모리에 있는 값을 직접 계산할 수는 없는 것이다. ALU는 메모리에 직접 붙어 있지 않고 레지스터에만 붙어 있기 때문이다. 일단 값을 레지스터로 옮기면 ALU가 계산을 수행하며 수행된 결과 또한 레지스터로 옮겨진다.(요즘의 CPU들은 이 결과를 저장하는 과정은 직접 메모리로 보내기도 한다.)

그렇다면 이제까지 설명하지 않은 Instruction Fetcher, Instruction Decoder는 무엇일까? 이부분을 깊이 자세히 이해하자면 책이 한권이므로 간략하게 정리하도록 하자. 이 부분은 컴퓨터하는 어떤 계산을 할지를 정해 주는 부분이다. 어떤계산이라고 함은 두개의 메모리에 있는 값을 더할 것인지, 뺄것인지, 곱할것인지 등을 결정해준다는 얘기다. 뭘할지를 정해주는 것을 컴퓨터 용어로 Instruction이라고 한다. 이 인스트럭션은 어디서 오는 것인가? 바로 프로그램에서 온다.

우리가 어떤 프로그램을 만들게 되면 이 또한 0,1의 순서로된 컴퓨터에 저장가능한 형태로 바꾸어햐 한다(이 과정을 컴파일이라고 한다). 이렇게 바꾸어진 형태는 결국 메모리에 저장되며 이 저장된 값은 크게 두가지로 나뉘는데 계산할 대상과 계산의 종류를 정해주는 명령 즉 인스트럭션으로 나뉜다.

인스트럭션 페쳐는 메모리로 부터 인스트럭션(명령)을 읽어오는 역할을 하며 인스트럭션 디코더는 이 읽어온 명령을 분석하여 적절한 레지스터에 분배하고  ALU로 하여금 정해진 명령이 실행 되도록 조정해 준다. 이 하나의 인스트럭션을 수행하는 데는 여러번의 전기적인 단계가 필요할 수도 있고 한 단계에 끝날 수도 있다. 이러한 단계를 클럭이라고 부르는데 컴퓨터의 심장박동과도 같은 것이다.

즉 컴퓨터가 단계적인 작업수행을 위해서는 각 단계를 잘라주는 단위가 필요하게 되는데 이것을 담당하는 부분이 CPU클럭이다. 컴퓨터 광고를 보면 몇GHz(기가 헬쯔)의 CPU를 탑재했다고 광고하는 경우가 많으며 통상 이 GHz값이 높을 수록 빠른 컴퓨터를 의미하며 값이 비싸진다. 이 GHz가 의미하는 것이 바로 CPU클럭 속도이며 CPU가 초당 몇번의 기본 계산 단위를 수행 할 수 있는 지를 결정해주는 것이다. 2.0GHz CPU라면 대략 초당 20억번의 기본 계산단위를 수행한다는 의미이며 정확히는

2 * 230 = 2 * 1073741824 = 2,147,483,648

번을 수행한다.

 


게시일자 Saturday, November 24, 2007 (Archive on Saturday, December 01, 2007)
게시자: 불나방  저자: 불나방
돌아가기

평점:
평가:
평가 올리기

현재평점평균: 3.67
평점: 1
quffh
평점: 5
평점: 5
Terms | Privacy | host
Copyright 2005 Code99.NET
 | 아티클 | 자료실 | 블로그 | Q&A | 관리자에게