'최신 컴퓨터 구조' 임석구, 홍경호를 참고하였습니다.
4. 컴퓨터 명령어
5. 주소 지정 방식
컴퓨터 명령어
- 연산코드, 오퍼랜드, 피연산자의 위치, 연산결과의 저장 위치 등 여러가지 정보로 구성
1. 명령어 형식
예시 : Z=(B+C)xA 구현
1) 0-주소
PUSH B
PUSH C
ADD
PUSH A
MUL
POP Z
2) 1-주소 (누산기 관련)
LOAD B
ADD C
MUL A
STOR Z
3) 2-주소
MOV R1 B
ADD R1 C
MUL R1 A
MOV Z R1
4) 3-주소
ADD R1, B, C
MUL Z, A, R1
2. 명령어 형식 설계 기준
1. 명령어 길이
2. 명령어 형식의 공간
3. 주소필드의 비트 수
3. 확장 opcode
- 연산 코드의 비트 수와 주소비트의 수의 비율로 명령어 수와 메모리 크기를 조절 가능하다.
예시1) 8비트 연산 코드와 24개의 주소비트를 가지는 32비트 명령어
-> 명령어 256개, 2의24승 메모리
예시2) 명령어 길이 16비트, 오퍼랜드 4비트 시스템을 대상으로 명령어 설계를 하려고 할 때,
3-주소 명령어는 14개, 2-주소 명령어는 30개, 1-주소 명령어는 31개, 0-주소 명령어는 16개가 필요하다면 어떻게 설계를 할것인가?
설계)
3-주소 : 0000 ~ 1101
2-주소 : 1110 0000 ~ 1111 1101
1-주소 : 1111 1110 0000 ~ 1111 1111 1110
0-주소 : 1111 1111 1111 0000 ~ 1111 1111 1111 1111
4. 명령어 종류 (ISA)
1. 데이터 이동 명령
2. 2항 연산
3. 단항 연산
(더 있지만 생략)
1. 데이터 이동 명령 (LOAD, STORE, MOVE)
- 원본과 동일한 새로운 객체를 다른 장소에 복사본으로 생성
- 데이터를 복사하는 이유
-> 변수에 값 할당을 하기 위해서 (A=B, B의 값을 주소 A에 복사)
-> 메모리와 레지스터간 데이터를 이동하여 데이터의 효율적인 액세스 및 사용을 하기 위해서
2. 2항연산
- 오퍼랜드 2개를 합쳐서 생성
사용 예시
1) AND -> 워드에 특정비트를 추출하는 용도
8비트 문자 총 4개, 32비트 워드에서 3번째 문자만 남기고 나머지는 제거한다면?
-> 세번째문자에만 11111111로 AND 나머지는 0으로 AND하고 오른쪽 8비트 시프트하여 결과를 만든다.
2) OR -> 원하는 위치에 값 교체
위와 같은 상황에서 마지막 8비트 A를 C로 교체한다면?
-> 마지막 비트만 0으로 설정된 B와 A를 AND 처리하고 교체하려는 C와 OR처리
3. 단항연산
- 오퍼랜드 1개, 결과도 1개
- 시프트(비트를 왼쪽, 오른쪽으로 이동), 회전(시프트와 같지만 한쪽 끝을 반대로 옮겨 손실이 없는 구조)
특징
- 오른쪽 시프트시 음수인 경우, 첫번째 비트 계속 1처리
- 시프트는 특정 산수 연산의 속도를 높이는 데 사용된다.
- 회전연산으 모든 비트 테스트를 할 경우 사용된다.
주소 지정 방식
1. 즉시 주소 지정
- 명령어안에 오퍼랜드(주소)를 설정
- 명령어 호출시 오퍼랜드도 자동으로 인출
ex) MOVE R1 4
장점 : 오퍼랜드 인출을 위한 메모리 참조가 필요가 없다.
단점 : 상수만 가능
2. 직접 주소 지정
- 주기억 장치의 주소를 통해 오퍼랜드 설정
ex) LOAD 0x8C30
3. 레지스터 주소 지정
- 직접 주소 지정과 같지만 그 위치가 레지스터
ex) opcode R12 R7
4. 레지스터 간접 주소 지정
- 포인터를 통해 레지스터의 데이터 주소가 주기억장치의 데이터를 가리키게 만들어 간접적으로 메모리 참조하게 만드는 방식
ex) opcode R1 (R7) -> R7은 레지스터에 있지만 이는 실제 메모리의 주소와 포인터로 연결되어 있음
메모리에 저장된 1차원 배열 A의 요소 100개를 더하는 예제 (각 요소는 4바이트의 크기를 갖는다)
5. 변위 주소 지정
- 특정 레지스터에 저장된 주소에 변위를 더해 메모리 위치 지정
- 결과는 주 메모리의 인덱스, PC등 다양한 위치 + 변위
ex) opcode R1 변위
-> if 레지스터 주소 R1=0, 변위=400 일 때, 메모리 주소는 400이 됨.
5-1) 인덱스 주소 지정
'CS Knowledge > Computer Structure' 카테고리의 다른 글
Computer Structure - Memory (1) | 2023.06.14 |
---|---|
Computer Structure - Controller (0) | 2023.04.18 |
Computer Structure - CPU(1) (0) | 2023.04.17 |
Computer Structure - Digital Logic Circuits(2) (0) | 2023.04.17 |
Computer Structure - Digital Logic Circuits(1) (0) | 2023.04.17 |