티스토리 뷰

목차

     

     

    명령어 구성

    컴퓨터 명령어는 연산코드(operation code)와 오퍼랜드(operand)로 나누어져있다.

    연산코드 : 처리해야할 연산의 종류. 1+2의 +의 개념이 연산코드이다. ex) ADD, SUB, MUX, LOAD ...

    오퍼랜드 : 처리할 정보. 1+2의 1과 2가 오퍼랜드의 개념이다.

     

    명령어의 기능

    1. 함수 연산
    2. 전달 : 레지스터 사이에 정보 전달
    3. 제어 : 조건분기 
    4. 입출력 : 기억장치와 입출력장치 사이의 정보이동

     

    명령어 형식

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

    누산기(AC, accumulator)

    누산기란 연산을 위해 오퍼랜드를 저장하기 위해 준비한 전용 레지스터이다.

    누산기를 사용하는 CPU에서는 다음과 같은 명령어를 사용한다.

     

    AC : 누산기

    X : 메모리 주소값

    M[X] : 메모리에서 해당 주소를 가져온다는 의미이다.

    명령어 의미
    ADD  X AC <- AC + M[X] AC에서 값을 가져와 덧셈한 결과를 AC에 넣는다.
    LOAD  X AC <- M[X] 메모리의 값을 AC에 저장
    STORE  X M[X] <- AC AC의 값을 메모리에 저장

     

    특징

    • 필요한 오퍼랜드는 X 1개이다. 
    • AC가 있기 때문에 데이터를 어디서 가져오고 저장할지를 생략할 수 있다. (다중 레지스터와 비교하면 이해할 수 있다.)

     

     

    다중 레지스터

    AC가 없는 경우 2개 이상의 레지스터를 사용하여 명령어를 처리한다.

     

    R1, R2, R3 : 서로다른 레지스터 주소

    명령어 의미
    ADD  R1, R2, R3 R3 <- R1 + R2 R1, R2 값을 더하고 R3에 저장한다
    ADD  R1, R2 R2 <- R1 + R2 R1, R2 값을 더하고 R2에 저장한다
    LOAD  X, R1 R1 <- M[X] 메모리의 값을 R1에 저장
    STORE  R1, X M[X] <- R1 R1의 값을 메모리에 저장

     

     

    스택(stack)

    흔히 알고 있는 LIFO 구조이다. 마지막에 넣은 데이터가 가장 먼저 빠져나온다.

     

    TOS : Top Of Stack. stack의 가장 위쪽 데이터라는 의미이다.

    명령어 의미
    ADD  TOS <- TOS + TOS-1 stack에서 두 값을 꺼내 더하고 stack에 저장한다
    PUSH  X TOS <- M[X] 메모리의 값을 TOS에 저장
    POP X M[X] <- TOS TOS의 값을 메모리에 저장

    특징

    • 필요한 오퍼랜드가 없다. stack에서 가져온다는 가정을 하기 때문이다. 

     

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

    필요한 오퍼랜드 갯수에 따라 구분지었다.

      예시
    3-주소 ADD  R1, R2, R3
    2-주소 ADD  R1, R2
    1-주소 ADD  X
    0-주소 ADD 

    필요 명령어 수 : 0-주소 > 1-주소 > 2-주소 > 3-주소

    필요 비트 수 : 3-주소 > 2-주소 > 1-주소 > 0-주소

     

    필요 명령어 수에 대해 설명할 필요가 있겠다.

    X = (A + B) * C 를 계산한다고 하면아래와 같다.

      필요 명령어
    3-주소 ADD A, B, R1
    MUL R1, C, X
    2-주소 LOAD    A, R1
    ADD      B, R1
    MUL     C, R1
    STORE R1, X
    1-주소 LOAD    A
    ADD      B
    STORE  X
    LOAD    C
    MUL      X
    STORE  X
    0-주소 PUSH  A
    PUSH  B
    ADD
    PUSH  C
    MUL
    POP     X

    3에서 1로 갈수록 명령어가 늘어나는 것을 알 수 있다.

    0-주소 명령어 스택의 경우, 1-주소와 갯수는 같지만 데이터의 입출력이 빈번하여 비효율적이다.

     

     

     

    주소지정방식

    주소지정방식이란 오퍼랜드가 데이터를 가져오는 방식에 대한 내용이다.

    여기서 주소는 데이터가 위치하고 있는 주소를 의미한다.

     

    유효주소 : 실제 데이터가 존재하는 주소

    의미 주소지정 암묵적으로 생략된 주소. 1-주소 명령어의 경우 AC가 생략이 되어 있다. ADD X; AC <- AC + M[X]
    즉치 주소지정 오퍼랜드 그 자체가 값이다. ADD 100; AC <- AC + 100
    직접 주소지정 오퍼랜드 그 자체가 유효주소이다. ADD X; AC <- AC + M[X]
    간접 주소지정 유효주소를 저장하고 있는 주소. ADD [X]; AC <- AC + M[M[X]]
    레지스터 주소지정 레지스터의 주소 ADD R1, R2 ; R2 <- R1 + R2
    레지스터 간접 주소지정 레지스터가 데이터가 저장된 메모리 주소를 가진 경우 ADD (R1), R2; R2 <- M[R1] + R2
    상대 주소지정 유효주소를 계산하기 위해 프로그램 카운터를 이용 ADD $X; AC <- AC + M[X + PC]
    인덱스된 주소지정 주소와 레지스터 내용을 더해서 유효주소를 얻는다 ADD X(R1); AC <- AC + M[X + R1]

     

    명령어의 종류

    데이터 전송 LOAD LD 기억장치로부터 레지스터로 전송
    STORE ST 레지스터로부터 기억장치로 전송
    MOVE MOVE 기억장치에서 다른 기억장치로
    EXCHANGE XCH 두 기억장치간 데이터 교환
    PUSH PUSH 레지스터로부터 스택에 전송
    POP POP 스택으로부터 레지스터에 전송
    INPUT IN 레지스터와 입출력장치 간의 전송
    OUTPUT OUT
    데이터 처리 INCREMENT INC 1 증가
    DECREMENT DEC 1 감소
    ADD ADD 덧셈
    SUBSTRACT SUB 뺄셈
    MULTIPLY MUL 곱셈
    DEVIDE DIV 나눗셈
    ADD WITH CARRY ADDC 올림을 포함한 덧셈
    SUBSTRACK WITH BORROW SUBB 내림을 포함한 뺄셈
    NEGATE NEG 2의 보수
    프로그램 제어 BRANCH BR 조건 혹은 무조건적으로 유효주소로 분기
    JUMP JMP
    SKIP NEXT INSTRUCTION SKP 조건이 만족되면 다음 명령어를 수행하지 않고 넘어감
    CALL PROCEDURE CALL 서브루틴 호출
    RETURN FROM PROCEDURE RET 서브루틴 실행 후 복귀
    COMPARE CMP 뺄셈을 통해 상대 레지스터 값 반환
    TEST TEST 논리 AND 연산만 구현

     

     

     

    '방송대 > 컴퓨터구조' 카테고리의 다른 글

    제어장치  (0) 2022.09.20
    4장 처리장치  (0) 2022.08.26
    2장 컴퓨터와 디지털 논리회로  (0) 2022.08.18
    1장 컴퓨터 시스템의 개요  (0) 2022.08.17
    댓글
    공지사항
    최근에 올라온 글
    최근에 달린 댓글
    Total
    Today
    Yesterday
    링크
    «   2024/07   »
    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
    글 보관함