Search
🏫

[컴퓨터 구조] 1. 컴퓨터 명령어

[컴퓨터 구조] 4. 중앙처리장치
CS
Computer Architecture
2023/11/28 08:27
[컴퓨터 구조] 4. 중앙처리장치
CS
Computer Architecture
2023/11/28 08:27

1. 컴퓨터 명령어의 개요

컴퓨터 명령어의 필요성
컴퓨터 명령어 (instruction)
컴퓨터가 수행해야하는 일을 나타내기 위한 비트의 집합
일정한 형식을 가짐
명령어 집합 (instruction set)
컴퓨터에서 사용할 수 있는 명령어의 세트
모든 컴퓨터는 자신의 명령어 집합을 가지고 있음
명령어 집합은 그 컴퓨터의 구조적인 특성을 나타내는 가장 중요한 정보
동일 계열의 컴퓨터는 같은 명령어 집합이 사용
따라서 명령어 집합을 이용하여 컴퓨터 시스템의 구조를 살펴 볼 수 있음

2. 명령어의 구성

필드(field) 라는 비트그룹으로 이루어짐
연산코드와 오퍼랜드 필드로 구성
연산코드 필드: 처리해야할 연산의 종류
오퍼랜드 필드: 처리할 대상 데이터 또는 데이터의 주소
컴퓨터 명령어의 수행 기능
함수연산 기능
덧셈, 시프트, 보수 등의 산술연산과 AND, OR, NOT 등의 논리연산 수행 기능
정보전달 기능
레지스터들 사이의 정보 전달기능과 중앙처리장치와 주기억장치 사이의 정보전달 기능
순서제어 기능
조건 분기와 무조건 분기 등을 통해 명령어의 수행순서를 제어하는 기능
입출력 기능
주 기억장치와 입출력 장치 사이의 정보 이동 기능

3. 명령어의 형식

명령어 형식
명령어를 구성하는 필드들의 수와 배치 방식 및 각 필드들의 비트수를 말한다.
명령어는 컴퓨터의 내부구조에 따라 여러 가지 형식이 있음
명령어 형식의 분류
오퍼랜드의 기억장소에 따른 명령어 형식
오퍼랜드의 수에 따른 명령어 형식

4. 기억장소에 따른 명령어 형식

명령어 형식의 분류
오퍼랜드의 기억장소에 따른 명령어 형식
오퍼랜드의 수에 따른 명령어 형식
오퍼랜드가 기억 되는 장소에따라
1.
누산기를 이용하는 명령어 형식
2.
다중레지스터를 이용하는 명령어 형식
3.
스택 구조를 이용하는 명령어 형식

4.1. 누산기를 이용하는 명령어 형식

누산기를 가진 컴퓨터 구조에서 사용되는 형식
누산기
누산기를 가진 컴퓨터 구조에서 중앙처리장치에 있는 유일한 데이터 레지스터로서 명령어가 수행될 때 오퍼랜드를 기억시키는 레지스터
예시)

4.2. 다중 레지스터를 이용하는 명령어 형식

다중 레지스터를 가진 컴퓨터 구조는 중앙처리장치 내에 여러 개의 레지스터를 가지고 있는 컴퓨터이다.
예시)

4.3. 스택 구조를 이용하는 명령어 형식

스택 구조 컴퓨터는 연산에 필요한 오퍼랜드들을 기억장치 스택에 기억시켜야 하고, 연산의 결과도 스택에 기억시키는 구조이다.
예시)

5. 오퍼랜드 수에 따른 명령어 형식

5.1. 3-주소 명령어

명령어 오퍼랜드의 개수가 3개인 명령어 형식
예시)
장점
산술식을 프로그램화하는데 있어서 프로그램의 길이가 짧아짐
단점
3-주소명령어를 2진 코드화했을때 3개의 오퍼랜를 나타내기위한 비트수가 다른 주소 명령어 형식보다 많이 필요함

5.2. 2-주소 명령어

오퍼랜드의 개수가 2개인 명령어 형식
상업용 컴퓨터에서 가장 많이 사용
예시)
장점
3-주소 명령어에 비해 명령어 길이는 짧아짐
단점
같은 내용을 수행하기 위해 수행해야 하는 명령어의 수는 증가됨

5.3. 1-주소 명령어

오퍼랜드의 개수가 1개인 명령어 형식
기억장치로부터 오퍼랜드를 가져오거나 연산결과를 저장하기 위한 임시적인 장소로 누산기 레지스터를 사용함

6. 주소지정방식

명령어 주소지정 방식(addressing mode)
프로그램 수행 시 오퍼랜드를 지정하는 방식
명령어의 주소 필드를 변경하거나 해석하는 규칙을 지정하는 형식
주소지정방식을 사용하면 명령어의 수를 줄일 수 있는 효과적인 프로그래밍 사용
유효 주소
주소지정방식의 각 규칙에 의해 정해지는 오퍼랜드의 실제 주소
별도의 주소지정방식 필드를 가진 명령어 형식
연산코드 필드 (opcode)
수행할 연산의 종류 지정
주소지정방식 필드
연산에 필요한 오퍼랜드의 주소를 알아내는데 사용
주소 혹은 오퍼랜드 필드 (operand)
기억장치주소 혹은 레지스터
주소지정방식의 종류
의미 주소지정방식
즉치 주소지정방식
직접 주소지정방식
간접 주소지정방식
레지스터 주소지정방식
레지스터 간접 주소지정방식
상대 주소지정방식
인덱스된 주소지정방식

6.1. 의미 주소지정

명령어형식에서주소필드를필요로하지않는방식
연산코드 필드에 지정된 묵시적 의미의 오퍼랜드를 지정
예) ADD ; TOS ← TOS + TOS-1
기억장치스택에서 ADD와 같은명령어는 스택의맨위항목과 그 아래 항목을 더하여 스택의 맨 위에 저장하는 명령어로서, 오퍼랜드가 스택의 맨 위에 있다는 것을 묵시적으로 가정함

6.2. 즉치 주소지정

명령어 자체 내에 오퍼랜드를 지정하고 있는 방식
오퍼랜드 필드의 내용이 실제 사용될 데이터
레지스터나 변수의 초기화에 유용
예) LDI 100,R1 ; R1 ←100

6.3. 직접 주소지정과 간접 주소지정

직접 주소지정방식
명령어의 주소필드에 직접 오퍼랜드의 주소를 저장시키는 방식
기억장치에의 접근이 한번에 이루어짐
예) LDA ADRS ; AC ← M[ADRS]
간접 주소지정방식
명령어의 주소필드에 유효주소가 저장되어있는 기억장치 주소를 기억시키는 방식
예) LDA [ADRS] ; AC←M[M[ADRS]]

6.4. 레지스터 주소지정과 레지스터 간접주소지정

레지스터 주소지정방식 (register mode)
오퍼랜드 필드에 레지스터가 기억되는 방식
레지스터에 오퍼랜드가 들어있음 (유효주소가 없음)
예) LDA R1 ; AC←R1
레지스터 간접 주소지정방식(register-indirect mode)
레지스터가 실제 오퍼랜드가 저장된 기억장치의 주소 값을 갖고 있는 방식
예) LDA (R1) ; AC ← M[R1]

6.5. 상대 주소지정

상대 주소지정방식(relative addressing mode)
유효주소를 계산하기 위해 처리장치 내에 있는 특정 레지스터의 내용에 명령어 주소필드 값을 더하는 방식
특정 레지스터로 프로그램 카운터(PC)가 주로 사용
예)
LDA $ADRS ; AC←M[ADRS+PC]
유효주소 =명령어 주소 부분의 내용 + PC의 내용

6.6. 인덱스된 주소지정

인덱스 레지스터의 내용을 명령어 주소 부분에 더해서 유효주소를 얻는 방식
예)
LDA ADRS(R1) ; AC←M[ADRS+R1]
유효주소 = 명령어 주소부분의 내용 + 인덱스 레지스터의 내용

6.7. 주소지정방식의 요약

요약
연산코드
LDA - AC (누산기에 값을 적재하라)
PC: 250
시작주소가 250이라는 의미
250번지에 연산코드는 LDA, 주소지정방식(#NBR: 즉치주소)

7. 명령어의 종류

7.1. 데이터 전송 명령어

한 장소에서 다른 장소로 단지 데이터를 전송하는 명령어
레지스터와 레지스터 사이, 레지스터와 기억장치 사이, 또는 기억장치와 기억장치 사이에 데이터를 이동하는 기능
입출력 명령어가 포함

7.2. 데이터 처리 명령어

데이터에 대한 연산을 실행하고 컴퓨터에 계산능력을 제공
산술 명령어
논리와 비트 처리 명령어
레지스터나 기억장치에 저장된 단어에 대한 2진 연산
주로 2진 부호화 정보를 표현하는 비트 그룹이나 개별 비트를 처리하는데 사용
비트 값을 0으로 만들거나, 기억장치 레지스터에 저장된 오퍼랜드에 새로운 비트 값을 삽입하는 것 등이 가능
시프트 명령어
오퍼랜드의 비트를 왼쪽이나 오른쪽으로 이동시키는 명령어
논리적 시프트와 산술적 시프트, 회전형 시프트 연산 등이 있음

7.3. 프로그램 제어 명령어

프로그램 수행의 흐름을 제어
다른 프로그램의 세그먼트 (segment)로 분기