largando

03장 명령어 집합 본문

컴퓨터시스템설계

03장 명령어 집합

ensoojn 2019. 9. 2. 01:51

1   명령어 집합

 

2   명령어의 특성

    2.1  Instruction = operation code + operand (address or value)

    2.2  Havered Architecture => 명령어& 데이터 분리

          C (destination) <- A (source 1) + B (source 2)

    2.3  묵시적 피연산자 사용

          Add a (1-address)

    2.4  Stack 사용 // 0 – address

 

3   CPU의 기본 구성과 가상 명령어 집합

    3.1  CPU의 기본 구성과 명령어의 실행 순서

        3.1.1  프로그램 계수기(PC): 다음 실행 할 명령어의 주소 보관 레지스터

        3.1.2  명령어 레지스터(IR): 가장 최근에 인출 한 명령어를 보관하는 레지스터

        3.1.3  누산기(Acc): 데이터를 일시적으로 보관하는 레지스터(다다익선)

        3.1.4  메모리 주소 레지스터(MAR): 프로세서가 메모리에 접근하기 위해 참조하려는 데이터의 주소를 명시하는 버퍼

        3.1.5  메모리 버퍼 레지스터(MBR): 프로세서가 메모리로부터 읽거나 메모리에 저장할 데이터 자체를 보관하기 위한 버퍼 = (MDR)

               >> 메모리 참조 명령어 <=> 참조 명령어

        3.1.6  적재과정 (Memory -> CPU) LOAD

               3.1.6.1  프로세서는 DATA가 있는 메모리 주소를 MAR에게 보낸다.

               3.1.6.2  MAR이 지정하는 메모리 주소에 있는 데이터를 읽어와 MBR에 저장한다.

               3.1.6.3  프로세서는 MBR에 저장된 DATA를 읽는다.

        3.1.7  저장과정(CPU-> Memory) STORE

               3.1.7.1  프로세서는 DATA를 저장할 메모리 주소를 MAR에게 보낸다.

               3.1.7.2  프로세서는 DATAMBR에 저장한다.

               3.1.7.3  메모리는 MAR이 지정하는 위치에 MBR의 내용을 지정한다.

        3.1.8  명령어 사이클

               3.1.8.1  LOAD (인출: instruction fetch cycle), 연산(실행: execution cycle)

 

4   연산

    4.1  연산의 종류

        4.1.1  전송연산: 적재 & 저장 연산

        4.1.2  처리연산: 산술(+,-)연산, 논리(자리이동, 회전)연산, 변환(10진수->2진수)연산

                or 단항, 이항, 삼항 연산으로 구분

        4.1.3  제어연산: CPU의 제어장치가 프로그램 실행 순서를 제어하는 연산.

                1) 순차적 / 비 순차적

                2) 반복, 조건, 프로시저

                3) 조건 무조건분기(JMP), 조건분기

                at) 가상컴퓨터 HLR, CAL,RET

        4.1.4  입출력연산: CPU내 레지스터와 외부장치 사이의 데이터 이동 전송 연상에 포함,

                at) 가상 컴퓨터: 입출력 연산 없음

    4.2   분기 명령

        4.2.1  체인 방식: 명령어가 다음 명령어의 위치를 명시하는 방식

                >> 명령어의 길이가 길어진다.

        4.2.2  분기 방식: 명령어에 다음 명령어를 명시하지 않고, 실행 될 다음 명령어는 기본적으로 현재 명령어 다음 위치에 있다고 간주하는 방식

                >> 오늘날에는 분기방식을 사용한 제어 연산 지원

        4.2.2.1  조건 분기: If, then, else

                4.2.2.1.1   묵시적 조건: 부수적 결과 양, , 0을 검사 조건으로 사용

                4.2.2.1.2   명시적 조건: CMT, TST와 같은 특별한 명령어르 사용,

                              레지스터의 내용을 파괴하지 않고 단순히 비교연산만 수행

                              플래그 레지스터 = 상태 레지스터 = 조건 코드 레지스터

                              = 프로그램 상태 워드: 실행 순서를 변경할 수 있도록 조건 분기 명령어 제공

        4.2.2.2  무조건 분기: JMP

        4.2.2.3  올림 수(C): 연산결과 올림수가 있으면 1, 없으면 0 // carry

        4.2.2.4  오버 플로우(V): 오버 플로우가 있으면 1, 없으면 0

                    >> 부호가 같은데 캐리가 생기는 경우

        4.2.2.5  부호(S): 연산결과 음수면 1, 양수면 0 (MSㅠ와 동일 값)

        4.2.2.6  (Z):연산 결과가 0 이면 1, 아니면 0

    4.2.3  부호 있는 이진수

        1. Signed magnitude

            0 1 0 1 (+5)

            1 1 0 1 (-5)

            >> 연산이 복잡, 부동소수점 자리에서 사용

        2. 1’s complement (invert)

            0 1 0 1 (+5)

            1 0 1 0 (-5)

        3. 2’s complement (negate)

            0 1 0 1

            1 0 1 0

            +    1

            0 0 0 0 (1: End Around Carry)

            >> 정수 연산에 사용

        4.3  프로시저 호출과 복귀

        = unconditional – subroutine, interrupt RA 저장

        : 프로시저는 특정 작업을 하나의 패키지처럼 수행하기 위한 일련의 명령어

        장점:  a. 중복 코드를 없애 준다.

                b. 구현의 상세 내역을 숨겨준다.

                c. 프로그램의 의미 파악 쉬움 by 프로시저 name

                단점: 프로시저를 종료하면 호출 프로그램으로 복귀 부담 발생

            4.3.1  cal proc

                1. 인출 사이클: IR <- M[PC]; PC <- PC +d(명령어의 길이)

                2. 실행 사이클: TOS <- PC; PC <- proc

            4.3.2  ret

                1. 인출 사이클: IR <- M[PC]; PC <- PC +d(명령어의 길이)

                2. 실행 사이클: PC <- TOS

 

5   명령어와 CPU 기억장치

    5.1  연산 부호 크기는 8비트, 1바이트

    5.2  연산마다 최대 2개의 피연산자 필드

    5.3  첫 번째 피연산자 필드는 근원지 및 목적지 겸용

    5.4  메모리 주소는 16비트, 2바이트

    5.5  데이터 크기는 32비트, 4바이트

    5.6  메모리-메모리 컴퓨터 예제) y= ax2+bx+c

    연산부호 1byte 피연산자 2*2 bytes 명령어의크기는 1+4=5bytes이고 명령어의 개수는 7개임으로 CPU와 메모리 사이에 35bytes의 트래픽이 발생한다. mov명령어에서는 a 데이터를 가져와 y에 넣음으로 데이터 트래픽이 8bytes이고 mul연산시 y번지와 x번지에 있는 데이터를 가져와 결과 데이터를 y에 저장하므로 데이터 트래픽은 12bytes이다. 따라서 총 데이터 트래픽은 8*2+12*5 = 76bytes이고 총 76+35 = 111bytes의 메모리 트래픽이 발생한다.

'컴퓨터시스템설계' 카테고리의 다른 글

02장 컴퓨터 세대별 발전  (0) 2019.09.08