오늘은 CPU가 데이터를 어떻게 처리하는가 자세하게 알아 볼 것입니다.


모두가 아시는 것처럼 컴퓨터의 성능을 좌우하는 가장 큰 요소가 바로 CPU입니다.

모든 데이터를 가공하여 처리하는 과정을 담당하며

컴퓨터의 머리라고 할 수 있습니다.


CPU('CENTRAL PROCESSING UNIT' )​는 중앙처리장치로써

컴퓨터 본체 안에 메인보드의 중앙에 위치하고 있습니다. ​


알기 쉽게 그림으로 그려가며 설명하겠습니다.

여러분도 머리에 약도를 그려가며 공부하시면 비록 이론으로 공부하는 것이지만

보다 더 피부로 와닿을 것입니다.


컴퓨터의 모든 각 장치들은 입출력 버스(I/O BUS)를 통해 CPU에게 신호를 보내거나

데이터를 보냅니다.


Input / Output Bus

정보들이 드나드는 통로인데 버스의 종류도 데이터의 조소정보가 드나드는

Address Bus, 여러 정보가 드나드는 Data Bus, 그리고 실질적으로 이 정보들을

어떻게 처리할 것인가에 대한 정보가 드나드는 Control Bus가 있습니다.

버스는 그냥 어떠한 정보가 입력(들어가고)되고 출력(나가는) 통로라고 생각 하시면 됩니다.

이 버스를 통해우리가 키보드로 입력하는 신호가 보내지고 또 화면에 정보를 표출하는가나

메모리에 프로세싱중인 프로그램을 처리하는 정보등 여러가지 정보가

버스를 통해 CPU로 간 뒤에 처리됩니다.


Memory 

​여기서 말하는 메모리는 주 기억장치인 램을 말합니다.

운영체제도 여기서 작동되고 모든 프로그램들은 램에 올려져서 프로세싱됩니다.

램에 있는 데이터들이 위에 말했듯이 버스를 타고 CPU로 이동되서

다시 가공을 거친뒤에 다시 램으로 이동 됩니다.


Bus interface 

버스 인터페이스는 입출력 버스의 각 종류나 데이터가 드나드는 과정을 '알고 있는'

인터페이스입니다.

CPU에게 '이 버스는 어떤 버스다' 알려주는 시스템입니다.

'윤성호'의 '뇌를 자극하는 윈도우즈 프로그래밍'에서 버스 인터페이스 관련 부분을 보면

버스인터페이스는 즉, CPU 내에는 I/O BUS의 통신 방식을 이해하고 있는 장치가 필요하다고

합니다.

말 그대로 CPU를 위한 I/O bus전용 인터페이스 입니다.



ALU (Arithmetic Logic Unit)

​실질적으로 들어오는 모든 데이터들을 처리하는 CPU의 핵심 요소 입니다.

ALU는 두 가지 형태의 연산만을 이용하여 데이터를 가공하는데

하나는 산술연산이고 또하나는 논리연산입니다.

간단한 연산 방식을 굉장히 빠른 속도로 하기 때문에

복잡한 연산 과정을 거칠 필요가 없습니다.


Control Unit

컨트롤 유닛은 ALU에게 명령어를 알려주는 역할을 합니다.

우리가 입력하는 정보들은 결국 컴퓨터 내부에는 0과 1로만 된 정보기때문에

이를 컨트롤 유닛이 어떻게 처리해야하는지 알려주는 요소입니다.



Register

CPU내부에도 작은 메로리가 존재하는데 이 레지스터들은 들어온 데이터를 임시로 두기도하며

처리할 명령어를 두기도합니다.

또한 이 레지스터가 필요한 중요한 이유는 ALU가 Control Unit에게 명령어를 받아서 데이터를

처리한다고 했는데 이 명령어들이 임시로 머무는곳도 이 레지스터중 하나입니다.



​즉, 요약하자면 외부로 부터 들어온 데이터를 입출력버스를 통해 메모리에 위치하게 되고

​다시 메모리에 있는 데이터들은 입출력 버스를 타고 CPU의 입출력 인터페이스를 통해

레지스터에 순서대로 들어가게되서 컨트롤유닛이 처리내용을 알려주고

ALU가 실질적 처리를 담당하게 됩니다.


그렇게 처리된 데이터는 다시 입출력 버스를 타고 메모리에 위치하게 되어 화면에 표출하게되거나 과공된 정보를 프로세싱하게 됩니다.


​이것이 CPU가 한번의 명령을 수행하는 과정이고 이 한번 수행하는 과정을 한 Tick

이라고 합니다.

​그리고 그렇게 처리한다음 다시 다음 명령을 처리하는 속도를 Clock 이라고 합니다.

​오늘은 CPU가 데이터를 어떻게 처리하는지에 대해서 알아 보았습니다.

여러분도 프로그래밍을 공부하시는 입장이기에 단순한 코더가 아닌 생각할 수 있는

프로그래머의 역량을 키울 수 있도록 같이 공부하는게 중요하다 생각합니다. 

다음 시간에는 C의 기본적 구조와 C++의 기본적인 구조에 대해 공부하겠습니다.

감사합니다.


참고문헌-​ '뇌를 자극하는 윈도우즈 프로그래밍'  저- 윤성호

 

본문 http://back582cool.blog.me/220675919707 (사람과인터페이스 블로그  CPU의 데이터 처리 과정)

오류나 오타 지적은 언제나 감사합니다.

무단 변조 및 복사를 금합니다.

영리목적의 복사를 허가합니다. (조- 출처를 밝혀 주세요.)

 





우선 우리가 알고있는 시스템이란 프로그램을 동작시키기위한

알고리즘의 유한 집합이라 알고 있습니다.


국어 사전에는

SYSTEM [명사] 필요한 기능을 실현하기 위하여 관련 요소를 어떤 법칙에 따라 조합한 집합체.

라고 명시 되어 있습니다.



제가 위에 그림은 시스템에 대해 쉽게 설명하기 위해 그린 것입니다.

유저가 주변 장치 밑 응용프로그램을 사용하려면 중간에서 시스템이

이 둘을 연결 시켜주어야 합니다.

시스템은 굉장히 포괄적인 의미라 운영체제도 시스템에 해당되고 혹은 하나의

응용프로그램을 움직이는 알고리즘도 시스템에 해당할 수 있습니다.

즉, 거대한 몸을 움직이기위한 명령 체계라고 생각하시면 되겠습니다.

여기서 가장 중요한 역할인 '인터페이스'가 필요한데 이는 나중에 더 자세히 다루겠습니다.


시스템에 대해서는 개념은 쉽습니다.

그럼 여기서 시스템 프로그램이란 무엇인가.

쉽게 말해서 시스템을 구조화하기위한 작업을 뜻합니다.


하지만 여기서 여러분들이 아셔야 할 것은 저는 어디까지나

넓은 범위의 시스템프로그래밍에대해서 쓰고 있기 때문에 여러분들이

윈도우즈 환경에서 시스템을 개발을 할지 리눅스 환경에서 개발을 할지에 따라

프로그래밍 환경이 달라지니 우선은 개념만 익히시기 바랍니다.


그리고 여러분들이 시스템프로그래밍을 공부하신 다면 필히 아셔야하는 개념인데

이는 컴퓨터 시스템의 구성 요소에 대해 아셔야 합니다.

알기 쉽게 설명해 드리겠습니다.


      Main compornents of computer

 



CPU부터 캐쉬까지가 컴퓨터의 기본적 구조이고

메모리부터 하드디스크까지가 운영체제가 있는 부분입니다.

하드디스크에 저장되어있는 데어터를 메인 메모리에 프로세싱시켜 놓고

CPU에서 연산처리하는 동안 캐쉬가 CPU의 속도와 메모리의 속도 차이를

중간에서 감화시켜줍니다.


이것이 기본적인 컴퓨터 시스템의 구조 입니다.

우리가 이 그림을 통해 알아야 할것은 '메모리에 있던 데이터가 옳겨저서 가공 된다'

라는 것을 아시면 됩니다.

즉, 데이터의 흐름의 개념만 이해하시면 됩니다.


각 요소는 일종의 버스로 연결되어있고 데이터는 그 버스를 타고

순서도에 따라 흘러가 가공되고 이 과정을 제어하는 것이 시스템이고 

시스템을 구조화 시키는 작업을 '시스템 프로그래밍' 이라합니다.

여러분들이 사용하시는 운영체제는 매우 복잡하며 또 각 프로그램들을 프로세싱할 때

메모리를 효율적으로 사용하기위해 수많은 작업을 단 시간만에 해치웁니다.

우리는 프로그래머들의 노력의 산물을 이용하고 있는 것이지요.


물론 저도 공부하는 입장에서 많이 멀었지만 우리가 좋은 프로그래머가 되려면

단순한 코딩이 아닌 생각하는 프로그래밍을 할 줄 알아야 한다고 생각합니다.

때문에 C언어나 DB나 네트워크 등도 중요하지만 먼저 시스템적인 부분을

알고 가야 한다고 생각이 듭니다.


다음시간에는 CPU의 데이터 처리과정에 대해 같이 공부해보록 하겠습니다.

감사합니다.


본문 http://back582cool.blog.me/220662200085   (사람과인터페이스 블로그 - 시스템프로그래밍)

오류나 오타 지적은 언제나 감사합니다.

상업적 목적의 무단 복사나 변조를 금합니다.

영리 목적의 복사를 허가합니다. (조-출처를 밝혀 주세요)

'강한 Editor > 시스템 프로그래밍' 카테고리의 다른 글

CPU의 데이터 처리 과정  (0) 2017.11.03