일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 단층퍼셉트론
- 노드
- 파이썬 날코딩으로 알고 짜는 딥러닝
- 선형 리스트
- 자료구조
- DB
- 딥러닝 교차엔트로피
- 파이썬 딥러닝
- 연결 자료구조
- 딥러닝
- 자연어처리
- 퍼셉트론
- 회귀분석
- 자료구조 알고리즘
- 파라미터
- 확률분포
- 순차 자료구조
- 리스트
- 오퍼랜드
- DBMS
- 뇌를 자극하는 알고리즘
- 딥러닝 교차 엔트로피
- 단층 퍼셉트론
- 신경망
- 편미분
- 교차 엔트로피
- 인공지능
- lost function
- 컴퓨터구조
- 엔트로피
- Today
- Total
YZ ZONE
[ 컴퓨터구조 ] 2.4 명령어 세트 본문
[ 명령어 세트(instruction set) ]
▣ 명령어 세트란?
▪ CPU의 기능은 명령어들에 의해 결정
▪ 명령어들의 종류와 수는 CPU마다 약간씩 다름
▪ 명령어 세트 = 어떤 한 CPU를 위하여 정의되어 있는 명령어들의 집합
▣ 명령어 세트 설계를 위해 결정되어야 할 사항들
▪ 연산 종류(operation repertoire)
➢ CPU가 수행할 연산들의 수와 종류 및 복잡도
▪ 데이터 형태(data type) –> 3장에서 자세히
➢ 연산을 수행할 데이터들의 형태, 데이터의 길이(비트 수), 수의 표현 방식 등
▪ 명령어 형식(instruction format)
➢ 명령어의 길이, 오퍼랜드 필드들의 수와 길이, 등
▪ 주소지정 방식(addressing mode)
➢ 오퍼랜드의 주소를 지정하는 방식
[ 연산의 종류 ]
▣ 기본적인 연산의 종류
▪ 데이터 전송
➢레지스터와 레지스터 간, 레지스터와 기억장치 간, 혹은 기억장치와 기억 장치 간에 데이터를 이동하는 동작
▪ 산술 연산
➢덧셈, 뺄셈, 곱셈 및 나눗셈과 같은 기본적인 산술 연산들
▪ 논리 연산
➢데이터의 각 비트들 간에 대한 AND, OR, NOT 및 exclusive-OR 연산
▪ 입출력(I/O)
➢CPU와 외부 장치들 간의 데이터 이동을 위한 동작들
▪ 프로그램 제어
➢명령어 실행 순서를 변경하는 연산들
➢분기(branch), 서브루틴 호출(subroutine call)
[ 서브루틴 호출을 위한 명령어들 ]
▣ CALL 명령어
▪ 서브루틴을 호출(call)하는 명령어
▪ 현재의 PC 내용을 스택에 저장하고 서브루틴의 시작 주소로 분기하는 명령어
▣ RET 명령어
▪ 서브루틴으로부터 원래 프로그램으로 복귀(return)시키는 명령어
[ CALL/RET 명령어의 마이크로 연산 ]
▣ CALL X 명령어에 대한 마이크로-연산
t0 : MBR ← PC
t1: MAR ← SP, PC ← X
t2: M[MAR] ← MBR, SP ← SP - 1
▪ 현재의 PC 내용(서브루틴 수행 완료 후에 복귀할 주소)을 SP가 지정하는 스 택의 최상위(top of stack: TOS)에 저장
▪ 만약 주소지정 단위가 바이트이고 저장될 주소는 16비트라면, SP ← SP – 2 로 변경
▣ RET 명령어의 마이크로-연산
t0 : SP ← SP + 1
t1 : MAR ← SP
t2 : PC ← M[MAR]
[ 명령어 형식 ]
▣ 명령어
▪명령어는 CPU에 의해 실행될 때 제공해야 할 모든 정보를 포함하고 있어야 함 = 구성요소
▣ 명령어의 구성요소들
▪ 연산 코드(Operation Code)
➢수행될 연산을 지정 (예: LOAD, ADD 등)
▪ 오퍼랜드(Operand)
➢연산을 수행하는 데 필요한 데이터 혹은 데이터의 주소
➢각 연산은 한 개 혹은 두 개의 입력 오퍼랜드들과 한 개의 결과 오퍼랜드를 포함
➢데이터는 CPU 레지스터, 주기억장치, 혹은 I/O 장치에 위치
▪ 다음 명령어 주소(Next Instruction Address)
➢현재의 명령어 실행이 완료된 후에 다음 명령어를 인출할 위치 지정
➢분기 혹은 호출 명령어와 같이 실행 순서를 변경하는 경우에 필요 (순차 X)
▣ 명령어 형식(instruction format)
▪ 명령어 내 필드들의 수와 배치 방식 및 각 필드의 비트 수를 의미함
▣ 필드(field)
▪ 명령어의 각 구성 요소들에 소요되는 비트들의 그룹
▣ 명령어의 길이
▪ 단어(word) 길이
▪ [예] 세 개의 필드들로 구성된 16-비트 명령어
[ 명령어 형식의 결정에서 고려항 사항들 ]
▣ 연산 코드 필드 길이 : 연산의 개수를 결정
[예]4비트→2^4 =16가지의연산정의가능
➢만약 연산 코드 필드가 5 비트로 늘어나면, 2^5 = 32 가지 연산들 정의 가능 → 다른 필드의 길이가 감소
▣ 오퍼랜드 필드의 길이 : 오퍼랜드의 범위 결정
▪ 오퍼랜드의 종류에 따라 범위가 달라짐
➢데이터 : 표현 가능한 수의 범위 결정
➢기억장치 주소 : CPU가 오퍼랜드 인출을 위하여 직접 주소를 지정할 수 있는 기억장치 용량 결정
➢레지스터 번호 : 데이터 저장에 사용될 수 있는 레지스터의 개수 결정
[ 오퍼랜드 필드 범위의 예 ]
▣ 오퍼랜드1은 레지스터 번호를 지정하고, 오퍼랜드2는 기억 장치 주소를 지정하는 경우
▪오퍼랜드1: 4비트→16개의레지스터사용가능
▪오퍼랜드2: 8비트→기억장치의주소범위: 0∼255번지
▣ 두 개의 오퍼랜드들을 하나로 통합하여 사용하는 경우
▪ 오퍼랜드가 2의 보수로 표현되는 데이터라면, 표현범위: -2048∼+2047
▪ 오퍼랜드가 기억장치 주소라면,
2^12 = 4096 개의 기억장치 주소들 지정 가능
[ 오퍼랜드 수에 따른 명령어 분류 ]
▣ 1-주소 명령어(one-address instruction)
▪ 오퍼랜드를 한 개만 포함하는 명령어 (다른 한 오퍼랜드는 묵시적으로 AC가 됨)
[예] ADD X ; AC<-AC + M[X]
▣ 2-주소 명령어(two-address instruction)
▪ 두 개의 오퍼랜드를 포함하는 명령어
[예] ADD R1, R2 ;R1 <- R1 + R2
MOV R1, R2 ;R1 <- R2
ADD R1, X ;R1 <- R1 + M[X]
▣ 3-주소 명령어(three-address instruction)
▪ 세 개의 오퍼랜드들을 포함하는 명령어.
[예] ADD R1, R2, R3 ; R1<-R2 + R3
1-주소 명령어의 예
▣ 길이가 16 비트인 1-주소 명령어에서 연산 코드가 5 비트인 경우의 명령어 형식을 정의하고, 주소지정 가능한 기억장치 용량을 결정하라
▪ 명령어 형식(instruction format)
▪주소지정 가능한 기억장치 용량 : 211 = 2048 바이트
2-주소 명령어의 예
▣ 2-주소 명령어 형식을 사용하는 16-비트 CPU에서 연산 코 드가 5 비트이고, 레지스터의 수는 8 개이다. (a) 두 오퍼랜드 들이 모두 레지스터 번호인 경우와, (b) 한 오퍼랜드는 기억 장치 주소인 경우의 명령어 형식을 정의하라
3-주소 명령어의 예
명령어 형식이 프로그래밍에 미치는 영향(예)
[예] X = (A + B) x (C - D) 계산을 위한 어셈블리 프로그램 작성
▣ 아래와 같은 니모닉을 가진 명령어들을 사용
▪ADD :덧셈
▪SUB :뺄셈
▪MUL :곱셈
▪ DIV : 나눗셈
▪MOV :데이터이동
▪LOAD :기억장치로부터데이터적재
▪STOR :기억장치로데이터저장
1-주소 명령어를 사용한 프로그램
LOAD A ; AC ← M[A]
ADD B. ; AC ← AC + M[B]
STOR T ;M[T]←AC
LOAD C ; AC ← M[C]
SUB D ; AC ← AC - M[D]
MUL T ; AC ← AC × M[T]
STOR X ;M[X]←AC
단, M[A]는 기억장치 A번지의 내용, T는 기억장치 내 임시 저장장소 의 주소
▣ 프로그램의 길이 = 7 (7개 명령어 사용)
2-주소 명령어를 사용한 프로그램
MOV R1, A ; R1 ← M[A]
ADD R1, B ; R1 ← R1 + M[B]
MOV R2, C ; R2 ← M[C]
SUB R2, D ; R2 ← R2 - M[D]
MUL R1, R2 ; R1 ← R1 × R2
MOV X, R1 ; M[X] ← R1
▣ 프로그램의 길이 = 6 (레지스터 번호를 포함)
3-주소 명령어를 사용한 프로그램
ADD R1, A, B ; R1 ← M[A] + M[B]
SUB R2, C, D ; R2 ← M[C] - M[D]
MUL X, R1, R2 ; M[X] ← R1 × R2
▣프로그램의길이= 3 (3개의명령어만으로가능)
▣ 단점
▪ 명령어의 길이가 증가한다
▪ 명령어 해독 과정이 복잡해지고, 실행 시간이 길어진다
'IT > 컴퓨터구조' 카테고리의 다른 글
[ 컴퓨터구조 ] 2.4.3 명령어 세트 (2) | 2023.02.05 |
---|---|
[ 컴퓨터구조 ]2.4.2 명령어 세트 (0) | 2023.02.05 |
[ 컴퓨터구조 ] 2.3 명령어 파이프라이닝 (0) | 2023.02.05 |
[컴퓨터구조] 2.2 명령어 실행 (0) | 2023.02.04 |
[컴퓨터구조] 2.1 CPU의 기본 구조 (0) | 2023.02.04 |