전공과목 정리/IT개론

[IT개론🗃️] 컴퓨터구조

최연재 2022. 2. 14. 18:59

내용출처 :  소프트웨어 세상을 여는 컴퓨터과학, 모바일 시대의 컴퓨터개론

1. 컴퓨터 시스템의 구성

1) 컴퓨터 시스템의 구성 요소

(1) 하드웨어의 구성

- 중앙처리장치 : 프로그램을 실행하고 입력된 데이터 처리

- 주기억장치 : 실행 중인 프로그램과 프로그램 실행에 필요한 데이터를 일시적으로 저장

- 보조기억장치 : 프로그램과 데이터를 영구히 저장

- 입출력장치 : 중앙처리장치나 주기억장치에 데이터를 입력하거나 출력

 

(2) 하드웨어의 역할

 

2) 중앙처리장치(Central Processing Unit)

중앙처리장치 : 메모리에 저장된 프로그램과 자료를 이용하여 실제 작업을 수행하는 회로 장치

 

 

(1) 중앙처리장치의 구성

① 제어장치 : 프로그램 명령어를 해독하고, 해독된 명령의 의미에 따라 다른 하드웨어에 동작을 지시

- Control Unit

산술 및 논리 연산에 요구되는 작업을 연속적으로 수행하는 신호를 보냄으로써 연산장치와 레지스터가 명령을 수행하게 하는 장치

- 구성 : 여러 개의 해독기(decoder)와 제어기로 구성

 

② 연산장치 : 제어장치의 지시에 따라 연산 수행

 

③ 레지스터 : 중앙처리장치에서 명령어를 실행하는 동안 필요한 정보를 저장

(중앙처리장치는 여러 개의 레지스터를 가진다.)

명령어 레지스터 (Instruction Register) : 현재 실행 중인 명령어를 저장

자료 레지스터 (Data Register) : 연산에 필요한 피연산자를 저장하는 레지스터

주소 레지스터 (Adress Register) : 현재 접근할 기억장소의 주소를 기억하는 레지스터

누산 레지스터 (Accumulator Register) : 연산장치의 입출력 데이터를 임시적으로 기억하는 레지스터

프로그램 카운터 (Program Counter) : 다음에 실행할 명령어의 메모리 주소가 저장된 레지스터

임시 레지스터 (Temporary Register) : 임시로 자료를 저장하는 레지스터로 범용 레지스터라고도 부름

 

AR = MAR (memory address register) : 주소 버스와 연결되어 있음

MBR(memory buffer register) : 데이터 버스와 연결되어 있음

 

스택 포인터  : 주기억장치 스택의 데이터 삽입과 삭제가 이루어지는 주소를 저장

레지스터 A, 레지스터B : 명령어 실행 중에 연산과 관련된 데이터를 저장한다. 

 

(3) 명령어 처리 과정 : 주기억장치 간의 다양한 자료 전송이 발생

- 주기억장치의 명령어와 자료가 중앙처리장치의 여러 임시 저장장소인 레지스터에 저장되어 명령어를 처리한 후, 다시 처리결과인 자료가 주기억장치로 전송되는 과정을 거침

 

(4) 기계 주기

- 중앙처리장치는 하나의 명령어를 실행하기 위해 인출, 해독, 실행의 세 단계를 거침.

① 인출 단계 (fetch) : 주기억장치에 저장된 명령어 하나를 읽어 온다.

제어장치가 프로그램 카운터(PC)에 있는 주소에 들어있는 다음 명령어를 명령어 레지스터(IR)에 저장

이후 다음 명령어를 수행하기 위해 프로그램 카운터를 하나 증가시킴.

② 해독 단계 (decode) : 읽어 온 명령어를 제어정보로 해독한다.

제어장치는 명령어 레지스터(IR)에 있는 명령어를 연산 부분과 피연사나 부분으로 해독

만일 명령어가 피연산 부분이 있는 명령어라면 피연산 부분의 메모리 주소를 주소 레지스터(MAR)에 저장

③ 실행 단계 (execute) : 해독된 명령어를 실행한다. 

중앙처리장치는 각 구성 요소에게 작업 지시를 내림

하나의 명령어 실행이 종료되면 프로그램 카운터가 가리키는 다음 명령어를 가지고 다시 기계 주기를 반복

 

 

 

3) 주기억장치

(1) 주기억장치의 구조

- 전체 기억 공간이 바이트 단위로 분할되어 있으며 분할 공간마다 주소*가 할당

* 주소

메모리의 저장소는 주소를 이용하여 각각 바읕 단위로 고유하게 식별함. 컴퓨터가 한 번에 작업할 수 있는 데이터를 단위를 워드라고 함. (워드는 32비트나 64비트이다.)

 

(2) 주기억장치의 동작

- 쓰기 : 중앙처리장치가 주기억장치에 데이터를 저장하는 것

- 읽기 : 주기억장치에 저장된 데이터를 중앙처리장치가 읽는 것

 

(2) 버스의 종류

버스 : 관련 자료 전달 경로

- 제어버스 : 쓰기 또는 읽기 동작을 결정하는 제어 정보 전송

- 주소 버스 : 주기억장치의 주소 전송

- 데이터 버스 : 데이터 전송

 

 

 

2. 컴퓨터 시스템의 동작

1) 컴퓨터 시스템의 동작 과정

(1) 컴퓨터를 이용하여 작업하는 예

부팅 -> 프로그램 실행 명령 -> 프로그램 실행

 

(2) 부팅

 

(3) 프로그램 실행

ex) 

MOV  변수a 20   // 상수 20을 변수 a에 저장

MOV  레지스터A 변수a // 변수 a의 값을 레지스터 A에 저장

ADD 레지스터A 1 // 레지스터A의 값과 1을 더한 결과를 레지스터A에 저장

MOV 변수a 레지스터A // 레지스터A의 값을 변수a 에 저장.

 

 

3. 프로그램 명령어

1) 명령어의 기본 형식과 종류

(1) 명령어 형식

- 연산코드 : 중앙처리장치가 실행해야 할 동작을 나타내는 부분

- 피연산자 : 동작에 필요한 값 또는 저장 공간을 나타내는 부분

 

(2) 명령어 분류

- 데이터 전송 명령어 : 레지스터 또는 주기억장치의 데이터를 레지스터 또는 주기억장치로 이동

- 연산 명령어 :  산술 연산, 논리 연산, 시프트 수행

- 분기 명령어 : 다음에 실행될 명령어 지정

 

(3) 중앙처리장치의 구조

 

2) 데이터 전송 명령어

(1) 데이터 전송 명령어의 기능

- 레지스터 또는 주기억장치에 저장된 값을 레지스터 또는 주기억장치로 전송

- 상수값을 레지스터 또는 주기억장치로 전송

- 스택에 저장된 값을 레지스터로 전송

- 레지스터에 저장된 값을 스택으로 전송

 

(2) MOV 명령어

MOV A B

- B의 값을 A로 전송

- A에는 주기억장치 주소, 레지스터, B에는 레지스터, 주기억장치 주소, 상수값 등이 올 수 있다. 

 

(3) PUSH 명령어

PUSH 레지스터A

- 레지스터 A에 저장된 값을 스택에 삽입

 

(4) POP 명령어

POP 레지스터B

- 스택에서 데이터 하나를 삭제해 레지스터B에 저장

 

3) 연산 명령어

(1) 산술 연산 명령어의 종류

- ADD A B : A에 B를 더해서 A에 저장

- SUB A B : A에 B를 빼서 A에 저장

- MUL A B : A에 B를 곱해서 A에 저장

- DIV A B : A를 B로 나눠서 A에 저장

 

ex.

 

(2) 논리 연산 명령어의 종류

- AND A B : A와 B를 AND 연산해서 A에 저장

대응되는 비트가 둘 다 1인 경우에만 1이고 나머지 경우에는 0

- OR A B : A와 B를 OR 연산해서 A에 저장

대응되는 비트가 둘 다 0인 경우에만 0이고 나머지 경우에는 1

- NOT A : A의 1의 보수를 A에 저장

1은 0으로, 0은 1로 바뀜

- XOR A B : A와 B를 XOR 연산해서 A에 저장 

대응되는 비트가 같으면 0이고 다르면 1

 

(3) 시프트 명령어의 종류

-SHR 레지스터A B

레지스터A에 저장된 값을 오른쪽으로 B비트만큼 이동시키고 왼쪽의 비는 곳에 0을 저장

- SHL 레지스터A B

레지스터A에 저장된 값을 왼쪽으로 B비트만큼 이동시키고 오른쪽의 비는 곳에 0을 저장

- CIR 레지스터A B

레지스터A에 저장된 값을 오른쪽으로 B비트만큼 이동시키고 벗어나는 비트들을 왼쪽의 비는 곳에 저장

-CIL 레지스터A B

레지스터A에 저장된 값을 왼쪽으로 B비트만큼 이동시키고 벗어나는 비트들을 오른쪽의 비는 곳에 저장

 

 

 

4) 분기 명령어

(1) 주소 레지스터

- 다음에 실행될 명령어가 저장된 주기억장치 주소 저장

(2) JUMP 명령어

- 주기억장치의 특정 주소로 분기

(3) CALL 명령어

- 다른 위치로 잠시 분기했다가 다시 돌아올 때 사용 (ex. 함수 호출)