내용출처 : 소프트웨어 세상을 여는 컴퓨터과학, 모바일 시대의 컴퓨터개론
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. 함수 호출)
'전공과목 정리 > IT개론' 카테고리의 다른 글
[IT개론🗃️] 자료구조 (2) | 2022.06.21 |
---|---|
[IT개론🗃️] 프로그래밍 언어 (0) | 2022.06.21 |
[IT개론🗃️] 운영체제 (0) | 2022.06.21 |
[IT개론🗃️] 데이터 표현과 디지털 논리 (0) | 2022.02.02 |
[IT개론🗃️] 컴퓨터과학 도입부 (0) | 2022.01.28 |