오늘은 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의 데이터 처리 과정)

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

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

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