본문 바로가기
Computer Science

컴퓨터 구조

by 뇌 속의 통 2024. 11. 14.

컴퓨터가 이해할 수 있는 2가지 정보

 

1. 데이터

2. 명령어

 

예시)

110 더해라

"메세지"을 출력하라

 

여기서 1과 10은 데이터, 더해라는 명령어다.

마찬가지로 메세지는 데이터이며 출력하라는 명령어이다.

 

컴퓨터의 핵심부품

1. CPU

컴퓨터의 두뇌역할

메모리에 저장된 명령어를 읽고 해석하고 실행하는 장치.

 

CPU의 핵심구성요소

ALU : 산술논리연산장치(계산을 위한 회로들 집합체)

제어장치 : 제어 신호(컴퓨터 부품들을 관리하고 작동시키기 위한 전기신호)를 내보내고 명령어를 해석하는 장치

레지스터 : CPU내 작은 저장장치

 

워드(Word) : CPU가 한번에 처리하는 정보 단위

Half Word : 워드의 절반 크기

Full Word : 워드 크기

Double Word : 워드의 두배

 

2. 메모리(주기억장치, RAM)

 

현재 실행되는 프로그램(프로세스)의 명령어와 데이터를 저장하는 장치

메모리는 자신의 공간을 각 주소로 나누어 관리한다. 그래서 데이터를 저장하거나 불러오는 경우 해당 주소로 접근하여 데이터를 가져오는 것이다.

전원이 종료되면 데이터는 소멸된다.

 

3. 보조기억장치(SSD, HDD 등)

 

전원이 종료되면 메모리의 데이터는 소멸되기 때문에 전원이 꺼지더라도 데이터를 저장할 저장장치.

현재 실행중이 아닌 프로그램의 데이터도 모두 저장하고 있다.

 

 

4. 입출력장치(키보드, 마우스, 모니터, 스피커 등등)

 

컴퓨터 외부와 연결되어 내부와 정보를 교환할 수 있는 장치

 

 

* 메인보드

위의 4가지 핵심부품을 연결시켜주는 부품

 

명령어를 실행시키는 순서

1. 메모리 특정 주소(명령어, 함수가 있는 메모리 주소)에 제어 장치가 '메모리 읽기'라는 제어 신호를 보낸다.

2. CPU의 레지스터로 해당 명령어를 가져와 저장한다.

3. 제어장치는 레지스터에 저장된 명령어를 해석한다.

4. 데이터가 필요한 경우 해당 메모리 주소로 제어 장치가 '메모리 읽기' 제어 신호를 보낸다.

5. 가져온 데이터도 레지스터로 저장한다.

6. 제어장치는 ALU에게 데이터를 연산하도록 하고, ALU는 레지스터의 데이터를 연산한다.

7. 연산한 데이터는 레지스터에 저장한다.

8. 그 다음 명령어를 제어 신호가 다시 메모리 읽기로 가져오고 해당 명령어가 연산 결과를 저장하라는 의미라면

연산 결과를 가지고 제어장치는 메모리에 '메모리 쓰기' 제어신호를 보내 해당 연산결과를 메모리에 저장하게 된다.

 

보조기억장치와 입출력장치를 합쳐서 주변 장치라고도 칭한다.

이 보조기억장치와 입출력장치는 버스라는 것을 이용하여 컴퓨터 내부와 정보를 주고 받는다.

 

이 중 가장 중요한 4대 핵심부품(CPU, 메모리, 보조기억장치, 입출력장치)간의 소통하는 버스를 시스템 버스라 한다.

메인 보드에 각 부품을 연결함으로서 이 버스를 이용할 수 있게 되는 것이다.

 

시스템 버스

시스템 버스는 주고 받는 정보에 따라 주소, 데이터, 제어 버스 3개로 구성되어 있다.

메모리에 제어 신호를 보낼때 읽을 메모리 주소는 주소 버스로 '메모리 읽기' 라는 제어 신호는 제어 버스를 통해 전달되는 것이다.

 

컴퓨터의 숫자 저장 방법

 

이진법 : 0과 1만으로 숫자를 표현할 수 있는 방법

컴퓨터는 0과 1밖에 모르기 때문에 이진법을 이용하여 숫자를 저장한다.

 

이진법은 1을 넘어가는 값은 자리를 올려서 표현하는 것이다.

 

그러면 음수는 어떻게 표현하는가?

2의 보수법을 사용한다.

 

* 2의 보수법

어떤 수를 그보다 큰 2의 n승에서 뺀 값

쉽게 생각하면 모든 0과 1을 뒤짚고 1을 더한 값이다.

 

그러다면 이진수로 표현된 수가 음수인지 양수인지 어떻게 알 수 있을까?

CPU 레지스트에는 flag라고 별도의 숫자가 있어서 양수인지 음수인지 알 수 있다.

 

또한, 이진법의 경우 큰 수를 표현할수록 너무 숫자가 길어지기 때문에 16진법도 많이 사용한다.

15를 넘어가는 순간 자리올림을 하며 0부터 A~F까지 사용한다.

 

대신 이진법과의 구분을 위해 앞에 0X를 붙여 16진법임을 표현해주어야한다.

 

* 16진수와 2진수 변환

 

16진수는 1A2B라는 값을 2진수로 바꾸면 0001 1010 0010 1011이된다.

이는 각 하나의 숫자를 이진수로 변환해 나열한 것과 같다.

1은 0001, A는 1010, 2는 0010, B는 1011이므로 이 2진수를 모두 쓰면 16진수를 2진수로 변환하는 것이다.

 

반대로 2진수를 16진수로 변환하려면 마찬가지로 각 4자리씩 끊어서 16진수로 바꾼후 다시 합치면 된다.

1101 0101이라면 1101은 D, 0101은 5가 되므로 16진수로 D5가 된다.

 

이처럼 상호간 변환이 쉬워 컴퓨터에서는 두가지의 숫자 표기법이 사용된다.

 

컴퓨터의 문자 저장 방법

컴퓨터는 숫자를 문자 집합의 문자로 변환하여 문자를 인식하고 출력하게 된다.

 

문자 집합 : 컴퓨터가 인식할 수 있는 문자의 모음

인코딩(Encoding) : 코드화하는 과정을 일컫는 말. 문자로 따지자면 문자 집합에 있는 문자를 0과 1로 이루어진 형식으로 변환하는 과정이다.

디코딩(Decoding) : 코드를  해석하는 과정으로 인코딩의 반댓말. 문자로 따지면 0과 1로 이루어진 문자 코드를 다시 문자 집합의 문자로 변환하는 과정이다.

 

대표적인 문자 집합

 

1. 아스키코드 (ASCII)

알파벳, 아라비아 숫자, 일부 특수 및 제어 문자가 포함되어 있다.

7비트로 하나의 문자를 표현하며, 1비트는 오류 검출을 위해 패리티 비트로 사용된다.

7비트로 표현하다보니 한글을 포함한 다른 언어의 문자, 다양한 특수 문자 사용 불가

 

2. 유니코드

통일된 문자 집합. 한글, 영어, 다양한 특수문자, 이모티콘까지 포함됨

UTF-8, UTF-16, UTF-32 등의 인코딩 방식을 사용함.(모든 언어의 인코딩 방식이 들어가있는 인코딩)

 

UTF-8(Unicode Transformation Format)

유니코드 인코딩 방법

가변 길이 인코딩이라 인코딩 결과가 1~4Byte로 나온다.

인코딩 결과가 몇 Byte가 될지는 유니코드에 부여된 값에 따라 다르다.

 

* 한글의 인코딩 방식

1) 완성형

하나의 완성된 글자 하나 자체에 문자 코드를 부여하는 것

 

2) 조합형

각 초성, 중성, 종성마다 문자 코드를 부여하는 방식

 

EUC-KR

완성형 인코딩 방식

2300여개의 한글 표현 가능

단, 모든 한글에 대응되지 않음.

'Computer Science' 카테고리의 다른 글

객체 지향 개발의 5대 원리 SOLID  (0) 2024.11.12