largando
03장 명령어 집합 본문
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 프로세서는 DATA를 MBR에 저장한다.
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 |
---|