본문 바로가기

윈도우즈 시스템 프로그래밍

컴퓨터 구조 - 1

CPU , 캐쉬  => 컴퓨터 구조


메인 메모리, 하드디스크  => 운영체제



* 컴퓨터 하드웨어의 구성


1) CPU(Central Processing Unit)


-흔히 "중앙처리장치"라고 불리며 연산을 담당한다. 



2) 메인 메모리


-컴파일이 완료된 프로그램 코드가 올라가서 실행되는 영역이라고 생각하면 된다. => 프로그램 실행  을 위해 존재하는 메모리.


3) 입 ˚ 출력 버스


-컴퓨터를 구성하는 구성요소 사이에서 데이터를 주고 받기 위해 사용되는 경로. => '다리'역할

 종류와 역할에 따라 1. 어드레스 버스 2. 데이터 버스 3. 컨트롤 버스 등으로 나눈다.



* CPU에 대한 이해


1) ALU(Arithmetic Logic Unit)


-산술연산논리 연산을 하는 곳!


-연산만 하고 다른 기능은 할 줄 아는 게 없음.


2) 컨트롤 유닛


-ALU가 연산밖에 할 줄 모르는 바보라서 '컨트롤 유닛'이 명령어를 해석해 주는 역할을 함.

ex) 어떤 명령어가 덧셈을 뜻하면 컨트롤 유닛이 그것을 해석하고 ALU에게 덧셈을 하도록 신호를 본냄


3)CPU 내부에 존재하는 레지스터들


-레지스터 => 명령어피연산자들을 저장해 두는 곳

  아주 작은 메모리 공간 - 2진 데이터를 저장하기 위한 저장공간



* 버스 인터페이스


-버스가 어떻게 데이터를 전송하는지 , 그에 대한 프로토콜 혹은 통신방식을 알고 있다. 따라서 CPU는 버  스 인터페이스를 통해서 CPU 내부에 저장되어 있는 데이터를 I/O 버스를 통해서 전송되어 오는 데이터  들을 수신하기도 한다.


* 클럭 신호


-클럭 신호는 타이밍을 제공하기 위해서 필요한 것이다.


ex) CPU 클럭 속도가 1.6Mhz인데, 컴퓨터에 있는 클럭발생기(오실레이터)는 1초당 1,600,000번의 클럭을 발생시키게 설정되어 있다. 그리고 CPU는 매 클럭이 발생할 때마다 그 클럭에 맞춰서 일을 한다. 

= 클럭 속도가 1.6Mhz인 CPU는 1초에 백 6십만 번 일(연산)을 하게 된다. 따라서 CPU의 클럭 속도가 높으면 초당 처리하는 명령어의 개수가 많아지므로 컴퓨터의 전체적인 성능은 좋아지게 된다.


-동기화의 필요성

 

ex) '+연산장치'는 입력된 두 개의 정수값을 더해서 그 결과를 '버퍼'에 가져다 놓는다. 그러면, '출력장치'는 '버퍼'에 존재하는 데이터를 가져다가 사용자에게 그 결과를 보여준다. 만약에 '출력장치'가 데이터를 가져가는 속도가 더 빠르다면, '출력장치'는 이미 한번 가져간 데이터를 다시 가져다가 출력하는 문제점을 드러낼 것이고, '+연산장치'가 더 빠르다면, 버퍼를 덮어쓰게 되어 연산결과의 일부가 출력되지 않는 문제점이 발생할 것이다.


=>해결법!!!!!!!

속도가 느린 장치의 장단에 맞추면 된다.


* 프로그램의 실행과정


   - 이전까지의 프로그램이란 것은 단순히 진공관 회로의 스위치 구성을 의미하는 것 이었다. 그러나 오늘  날  말  하는 컴퓨터 프로그램은 '폰 노이만'이 생각해 낸 구조로, 프로그램이 컴퓨터 내부에 저장되는 구조이다.


  폰 노이만이 주장한 컴퓨터 구조는 다음과 같다.

  - 프로그램이라는 것이 존재하고, 이 프로그램은 컴퓨터 내부에 저장되어서 순차적으로 실행되어야 한다.  


 -프로그램의 실행 과정은 크게 4단계이다.

 

1단계 : 전처리기에 의한 치환작업


2단계 : 컴파일러에 의한 번역

          

컴파일러에 의해서 어셈블리 코드로 번역된다.


3단계 : 어셈블러에 의한 바이너리 코드 생성


바이너리 코드 -> 0,1로만 구성되는 코드


바이너리 코드로 번역하는 이유는 컴퓨터가 0,1만 이해하기 때문이다.


4단계 : 링커에 의한 연결과 결합


링커에 역할은 프로그램 내에서 참조하는 함수나 라이브러리들을 하나로 묶는 작업을 한다고 설명할 수 있다.


※메모리상에서 CPU로 옮겨져 실해되는 과정 3단계


1단계 : Fetch - 메모리상에 존재하는 명령어를 CPU로 가져오는 작업이다.


2단계 : Decode - 가져다 놓은 명령어를 CPU가 해석하는 단계이다.


3단계 : Execution : 해석된 명령어의 명령대로 CPU가 실행하는 단계이다. 


※ 산술 및 논리 연산을 하는 Execution의 주체는 ALU이다.



*데이터 이동의 기반이 되는 버스 시스템


- 데이터를 이동하는 데 있어서 사용되는 전송 경로를 가리켜 버스 시스템이라 하고 버스 시스템은 주고 받는 데이터의 종류에 따라서 1) 어드레스 버스, 2) 데이터 버스, 3) 컨트롤 버스 이렇게 3가지 종류가 있다. 


※ CPU의 레지스터에 저장되어 있는 데이터를 메인 메모리에 저장하는 일들도 발생하는 데 여기서 CPU와 메인 메모리를 연결해 주는 역할을 하는게 버스 시스템이다.


1) 어드레스 버스 : 주소값을 이동하기 위해 필요한 버스이다.


2) 데이터 버스 : 데이터를 이동하기 위해 필요한 버스이다.


3) 컨트롤 버스 : CPU가 원하는 바를 메모리에 전달할 때 사용된다.

                         => CPU와 메모리가 서로 특별한 사인을 주고받는 용도로 사용되는 버스이다. 사인을 주고 받는 이유는 CPU가 데이터를 가져오기도 하지만 데이터를 메인 메모리에 저장도 하기 때문이다.


 






'윈도우즈 시스템 프로그래밍' 카테고리의 다른 글

컴퓨터 구조 - 4  (0) 2016.08.08
컴퓨터 구조 - 3  (0) 2016.08.08
컴퓨터 구조 -2  (1) 2016.08.08