세대별 구분
1세대
- 진공관
- 프로그램 내장방식
- 전력소모 크고 발열 심함
- 기계어, 어셈블리어
2세대
- 트랜지스터
- 진공관 컴퓨터에서 1/100 축소
- 고급언어 (COBOL)
3세대
- 집적회로 (IC: Integrated Circuit)
- 고급언어 (베이직)
4세대
- 고밀도 집적회로 (LSI: Large Scale Integrated circuit)
- 초고밀도 집적회로 (VLSI: Very Large Scale Integrated Circuit)
- PC
- 고급언어, 문제지향적 언어
컴퓨터 시스템의 전체적 구성
시스템 버스
- CPU, 기억장치, I/O 장치들을 상호 연결해주는 중심 통로
- 단방향 어드레스 버스, 양방향 데이터 버스, 양방향 제어버스로 구성
입력장치
출력장치
기억장치
중앙처리장치
- 연산장치, 제어장치, 레지스터로 구성
사람 | 컴퓨터 |
---|---|
감각 | 입력장치 |
뇌세포 | 기억장치 |
신경망 | 중앙처리장치 |
움직임 | 출력장치 |
운영체제
- HW와 SW 자원을 관리하고 제어
- 편리한 인터페이스 제공
- 입출력의 보조적 기능 수행
- 오류 처리
자원관리
- 프로세스 관리
- 주기억장치 관리
- 보조기억장치 관리
- 입출력장치 관리
- 파일 관리
컴파일러, 인트프리터: 고급언어를 기계어로 변환하기 위한 번역기
분류
성능과 규모
- 마이크로 컴퓨터: 현재 범용컴퓨터
- 미니컴퓨터: 멀티유저 시스템
- 메인프레임: 범용목적의 대형컴퓨터, 다수의 터미널 사용
- 슈퍼컴퓨터
구조
- 병렬컴퓨터: 동시에 여러 개의 마이크 로프로세서 사용
- 분산컴퓨터: 데이터가 네트워크 상에 분산되어 있을 때
- 클라우드컴퓨터
사용목적
- 전용컴퓨터: 군사용, 기상예보용, 천문학 등
- 범용컴퓨터: 여러 분야의 다양한 업무 처리할 목적으로 설계된 컴퓨터 (과학계산, 통계 등)
처리방법
- 일괄처리 컴퓨터: 일정 시점 단위로 한꺼번에 처리
- 실시간 처리 컴퓨터: real-time, 온라인 처리 시스템, 즉시처리 시스템
자료표현
- 디지털 컴퓨터
- 아날로그 컴퓨터: 자료를 입력받아 곡선이나 그래프로 출력하는 컴퓨터
- 하이브리드 컴퓨터: 아날로그, 디지털 데이터 모두 처리, A/D (Analog-Digital conveter) 변환기, D/A(Digital-Analog converter)로 데이터 변형 출력 가능
발달과정
특징 | 컴퓨터 |
---|---|
최초 기계식 | 마크원 |
최초 전자식 | ENIAC |
최초 프로그램내장 | EDSAC |
최초 상업용 | UNIVAC-I |
진공관 > TR > IC > LSI > VLSI 폰노이만 모델: 기억장치에 프로그램과 데이터를 넣고 순서대로 처리하는 방식 (프로그램 내장방식) 시스템버스: 어드레스 버스, 데이터 버스, 제어 버스
컴퓨터 명령어
주소필드
- mode, operation code, address 필드로 구성
- mode = 0 => 주소가 직접번지, mode = 1 => 주소가 간접번지
- 주소필드는 주소 || 레지스터 || 데이터를 나타냄
- 16bit 명령어의 경우: 1bit, 3bit, 12bit
3주소 명령어
- 범용 레지스터 구조의 컴퓨터에서 사용
- 연산코드와 3개의 주소필드로 구성
- 프로그램은 간단하나 명령어의 길이가 너무 길다
2주소 명령어
- 범용 레지스터 구조의 컴퓨터에서 사용
- 연산코드와 2개의 주소필드로 구성
- 연산시에 주소1의 내용은 실행 후에 출력값으로 저장되므로 원래 주소1의 내용은 없어진다.
1주소 명령어
- 단일 누산기 방식의 컴퓨터에서 사용
- ACC와 Operand의 연산결과는 다시 ACC에 저장되는 형식
- 입력으로 사용된 누산기는 결과값이 저장되어 원래 값은 없어진다.
0주소 명령어
- STACK
주소지정방식
의미주소지정
- Implied Addressing Mode
- 묵시적 주소지정방식
- 데이터의 위치를 지정하지 않아도 묵시적으로 정해져 있음
- PUSH, POP: Stack Pointer 사용
- SHL, SHR: ACC의 내용을 시프트
- 명령어가 짧다
즉치주소지정
- Immediated Addressing Mode
- Operand의 내용이 연산에 사용될 실제 데이터
- 프로그램상에서 레지스터나 변수의 초기값을 설정하는데 사용
레지스터 주소지정
- Register Addressing Mode
- 레지스터에 데이터가 존재
- 레지스터를 지정하는 오퍼랜드가 4bit라면 16개의 레지스터를 지정할 수 있음
- 메모리를 액세스하지 않아 실행시간 단축
- 데이터를 저장하는 공간이 레지스터로 한정
레지스터 간접주소지정
- Register Indirect Addressing Mode
- 레지스터의 내용이 유효주소가 되기 때문에 지정된 레지스터의 내용이 메모리 주소가 되어 유효 데이터를 가져옴
- 레지스터가 10bit면 2^10B, 20bit면 1MB의 메모리 영역을 지정 가능
- 데이터 인출을 위해 한 번만 메모리를 액세스하면 된다.
직접주소지정
- Direct Addressing Mode
- 오퍼랜드가 데이터의 유효주소
- 데이터 인출을 위해 한 번만 메모리 액세스
간접주소지정
- Indirect Addressing Mode
- 오퍼랜드의 데이터가 가리키는 기억장소의 데이터가 유효주소 (2번)
- 오퍼랜드가 nbit면 최대 2^n개의 주소공간
- 명령어의 I비트가 0이면 직접주소, 1이면 간접주소
상대주소지정
- Relative Addressing Mode
- 명령어의 주소필드에 PC(Program Counter) 값이 더해져서 유효주소가 결정되는 방식
- 기준 주소는 명령어의 주소, 변위는 PC
- 주로 분기명령어에서 사용
인덱스된 주소지정
- Indexed Addressing Mode
- 인덱스 레지스터의 내용과 주소필드의 내용이 더해져서 유효주소가 결정
- 기준 주소는 명령어의 주소, 변위는 인덱스 레지스터
베이스 레지스터 주소지정
- Base Register Addressing Mode
- 베이스 레지스터의 내용과 주소필드의 내용이 더해져서 유효주소가 결정
- 기준 주소가 베이스 레지스터, 변위는 명령어의 주소필드
명령어의 종류
데이터 전송명령
- 데이터가 변경되지 않고 위치만 옮기는 명령
명령어 | 부호 | 기능 |
---|---|---|
load | LD | mem => reg |
store | ST | reg => mem |
move | MOV | reg 간 전송 |
input | IN | 입력장치 => reg |
output | OUT | reg => 출력장치 |
push | PUSH | reg => stack |
pop | POP | stack => reg |
데이터 처리 명령
- 실제로 연산이 이뤄지는 명령
- 산술연산명령어, 논리연산명령어, 비트처리명령어, 시프트명령어로 구분
산술연산
명령어 | 부호 | 기능 |
---|---|---|
add | ADD | 덧셈 |
subtract | SUB | 뺄셈 |
multiply | MUL | 곱셈 |
increment | INC | mem, reg 1 증가 |
decrement | DEC | mem, reg 1 감소 |
negate | NEG | 2의 보수 |
add with carry | ADDC | 올림수와 함께 덧셈 |
논리연산
명령어 | 부호 | 기능 |
---|---|---|
AND | AND | 특정부분 0으로 셋 |
clear | CLR | 모든 비트 0으로 셋 |
clear carry | CLRC | 캐리비트를 0으로 셋 |
enable interrupt | EI | 인터럽트 가능 |
disable interrupt | DI | 인터럽트 불가능 |
시프트
명령어 | 부호 | 기능 |
---|---|---|
logical shift right | SHR | 오른쪽 논리 시프트 |
logical shift left | SHL | 왼쪽 논리 시프트 |
rotate right | ROR | 현재값 유지하면서 오른쪽 자리이동 |
rotate lest | ROL | 현재값 유지하면서 왼쪽 자리이동 |
프로그램 제어명령
조건에 따라 PC가 변경되어 수행순서가 달라진다
명령어 | 부호 | 기능 |
---|---|---|
branch | BR | 지정된 주소로 분기 |
jump | JMP | 지정된 주소로 점프 |
skip | SKP | PC값 증가 후 다음 명령으로 skip |
call | CALL | PC값 저장, 서브루틴 콜 |
return | RET | 리턴 주소를 PC에 저장 |
compare | CMP | 두 수 크기 비교 |
프로그램 인터럽트
외부 인터럽 트
- 입출력장치, 전원 등 외부 요인으로 발생
- 입출력장치의 데이터 전송 요구, 정보전송의 마감, timeout, 전원공급이 끊어질 때 발생
- 프로그램 외적인 상황에서 발생
내부 인터럽트
- 올바르지 않은 명령어나 데이터 사용시 발생
- overflow, div 0, stack overflow, 메모리 보호영역 침범 등
- 프로그램 자체에서 주로 발생
소프트웨어 인터럽트
- 특수한 CALL 명령어로 프로그래머가 원하는 위치에서 인터럽트 발생
- supervisor call instruction
- 사용자 모드엥서 supervisor 모드로 CPU 상태를 변환
외부 인터럽트 처리
- 외부 인터럽트 발생
- CPU는 현재 수행하는 명령어의 실행 사이클 종료
- 다음 실행할 PC의 내용을 스택에 저장
- 인터럽트 서비스 루틴의 시작주소를 PC에 저장
- 인터럽트 처리 후 스택영역에 저장된 PC를 복구
- 프로그램 복귀 후 계속 실행
복합, 단축 명령어 컴퓨터
CISC
- Complex Instruction Set Computer
- 다양한 데이터와 주소방식 제공
- 많은 명령어와 주소지정방식을 구현하기 위해 많은 하드웨어 필요
- 실행속도가 느림
RISC
- Reduced Instruction Set Computer
- Load와 Store를 제외하고는 레지스터 간의 연산으로 구성
- 고정된 명령어 형식 사용
- 복잡한 간접주소지정방식은 사용하지 않음
시스템 버스
- 컴퓨터 시스템의 각각의 장치를 연결하여 정보를 전송하는 공유전송매체
- CPU를 중심으로 주기억장치, 보조기억장치, 입력장치, 출력장치가 데이터를 주고받는 통로
주소버스
- Address Bus
- 주기억장치에 데이터를 읽기/쓰기 위해서 주소를 지정하기 위한 선들의 집합
- 단방향 전송
- 주소 버스가 16bit이면 2^16 => 65536개의 주소 지정
데이터버스
- 각각의 장치들 사이의 데이터를 전송하는 선들의 집합
- 양방향 전송
- 버스의 폭은 주소를 지정하고 한 번에 R/W하는 비트의 수
- 주소당 32bit 씩 데이터를 전송한다면 데이터 버스의 수는 32개
제어버스
- CPU, I/O장치, Memory 장치를 제어하는 신호선들의 집합
- 인터럽트 요구 신호
- 인터럽트 승인 신호
- 버스요구 신호
- 버스승인 신호
- 기억장치 읽기 신호
- 기억장치 쓰기 신호
- 입출력장치 읽기 신호
- 입출력장치 쓰기 신호
- 리셋 신호
- 버스 클록
- 전송 확인 (transfer acknowledge)
동기식버스
- 클록 펄스에 의해 데이터 전송이 발생
- 마스터와 슬레이브는 모두 같은 클록 펄스에 동기
- 인터페이스 회로가 간단
- 클록의 주기보다 짧은 동작은 다음 주기까지 기다려야하는 단덤
비동기식버스
- 핸드셰이킹 프로토콜 사용
- 속도의 차이가 많은 장치에서 사용
- 복잡
- 소규모에선 비동기, 중형이상에선 동기방식을 주로 사용
버스중재
- 동시에 여러 장치에서 버스를 요구할 때 필요 = 버스 경합
중앙집중식 중재방식
- centralized arbitration scheme
- 시스템 내에 중재기가 1개
분산식 중재방식
- decentralized arbitration scheme
- 여러 개의 버스중재기가 존재
대표적 버스 중재기: 데이지 체인, 폴링 방식
내부버스
- 칩들 사이에 신호를 전달
외부버스
내부 버스를 경유해 CPU와 상호간을 연결하는 버스
VME
- VMEbus 컴퓨터 버스 표준
- 모토로라, 톰슨 사 등이 개발한 32bit, 64bit 버스 규격
멀티 버스
- 인텔에서 개발한 범용 버스 시스템
- 현재 산업용으로 사용
- 멀티플렉서를 통해 다른 소자와 데이터를 송수신
- 다중처리 가능
- 마스터나 슬레이브로 동작
- 마스터는 버스사용권을 얻어 데이터 전송 가능
- 슬레이브는 스스로 버스를 제어할 수 없음
ISA 버스
- Industry Standard Architecture bus
- CPU와 각종 주변장치를 연결하여 정보를 전달하는 버스 설계 규격
- AT 버스라고도 한다.
- 16bit 버스 구조, 현재는 PCI 버스로 대체
EISA 버스
- Extended Industry Standard Architecture bus
- 32bit ISA 버스
- 비싸서 사용 안함
VESA 로컬 버스
- Video Electronics Standards Association local bus
- 버스 제어기를 통하지 않고 직접 CPU와 데이터를 송수신하는 방식
PCI 버스
- ISA, EISA, VESA의 후속
- 32bit, 64bit 사용 가능
- CPU의 종류가 달라도 CPU와 버스 사이의 브릿지 회로만 있으면 사용 가능
- 독자적으로 작업을 처리할 수 있음
GPIB 버스
- General Purpose Interface bus
- 병렬 데이터를 전송하고 제어할 수 있는 버스
- 테스트 및 측정장치를 컴퓨터와 연결하여 자동 테스트 시스템을 만든다.
마이크로 연산
- 레지스터 사이의 전송정보 동작
- Micro Operation
레지스터 종류
- 소자는 플립플롭
- 고유의 주소값을 가진다.
- MAR, PC, SP, R0 등
- 데이터 레지스터, 주소 레지스터, 상태 레지스터로 구분
- 범용 레지스터 (GPR), 특수레지스터 (SPR)로 구분
주소 레지스터
- Address Register
MAR
- 메모리 주소 레지스터
- 주소를 먼 저 지정
PC
- 프로그램 카운터
- 다음 명령어의 주소를 지정
- PC의 내용은 MAR로 전송되고 MAR의 내용이 주소 버스를 통해 메모리 주소를 지정
SP
- 스택 포인터
- 서브루틴 또는 인터럽트가 발생시 현재 레지스터의 내용을 저장하는데 레지스터를 저장하기 위한 스택 영역 메모리의 주소를 기억
CMAR
- Control Memory Address Register
- 마이크로프로그램이 있는 메모리의 주소를 기억
XR
- 인덱스 레지스터
- 기준 되는 주소에 XR의 변위값을 더해서 유효 주소를 발생
- 데이터 블록 전송에 사용
BR
- 베이스 레지스터
- 베이스 레지스터에 기준이 되는 주소가 있고 여기에 변위값이 더해져 유효주소를 발생
데이터 레지스터
MBR
- Memory Buffer Register
- 주기억장치에서 데이터를 읽거나 데이터를 주기억장치에 기록할 때 사용되는 레지스터
ACC
- ACCucmulator
- 연산장치의 입력값을 저장하거나 연산이 끝난 후의 결과값을 저장
- ACC => MBR => 데이터 버스 => 주기억장치 저장
TR
- T buffer = Temporary Register
- 연산 중에 중간값을 임시 저장
PSR
- Program Status Register
- CPU에서 수행되고 있는 프로그램의 상태정보를 기억하고 있는 레지스터
- Carry, Negative, oVerflow, Zero, Interrupt 플래그의 내용 표시
레지스터 전송
직렬전송
- 한 클록에 1bit씩 전송
- 워드 타임 (Word time): 4bit 모두 전송하는 데 걸리는 시간
병렬전송
- 데이터 전송이 한 클록 펄스 동안 이루어지는 전송
산술 마이크로 연산
덧셈, 뺄셈, 1 증가, 1 감소, 보수
논리 마이크로 연산
SET
- 특정 비트를 강제로 1로 만들 때 사용
- OR 연산
MASK
- 특정 비트를 강제로 0으로 만들 때 사용
- AND 연산
Selective Complement
- 특정 비트를 강제로 보수로 만들 때 사용
- XOR 연산
시프트 마이크로 연산
논리 시프트
- Logical Shift
- 버리고 0 삽입
순환 시프트
- Circular Shift = Rotate
- 버린걸 반대편 끝으로 삽입
산술 시프트
- Arithmatic Shift
- 부호 비트를 고려하여 수행되는 시프트
- 부호 비트는 남기고 데이터 비트만 시프트
처리장치의 구성요소
- ALU: 제어장치에서 명령어를 해독한 다음 실질적으로 연산을 수행하는 장치
- 연산장치는 산술연산장치와 논리연산장치로 구성
단일 누산기 CPU의 내부 버스
3개의 레지스터 간 병렬전송
- 레지스터가 n비트면 6n개의 신호선
단일 버스에 연결된 레지스터 선택회로
- 4개의 레지스터 선택시 2X4 디코더 필요
ALU
- 산술/논리 연산장치 = Arithmatic and Logical Unit
- 산술, 논리, 시프트 등을 수행하는 장치
- 가산기(산술연산장치), 시프트, 논리연산회로, 보수기(complementer), 상태레지스터(PSR)로 구성
산술연산장치
- 전가산기를 이용한 병렬 가산기
- n비트의 2진 병렬가산기는 n개의 전가산기로 구성
상태 레지스터와 flag
- C: Carry bit
- S: Sign bit
- Z: Zero bit, 값이 0일시 1로 셋
- V: oVerflow bit
- 연산 결과에 따라 1 또는 0
논리연산장치
- AND, OR, NOT, XOR
- 멀티플렉서와 조합논리회로 (& | ! ^) 게이트를 이용하여 구성 가능
시프터
제어단어
- Control word
- 하드와이어드 제어방식과 마이크로프로그램 제어방식 (제어장치 구현방법)
- 마이크로 프로그램 제어방식은 제어장치 내의 기억장치에 마이크로 명령어를 저장하여 마이크로 연산을 순차적으로 수행시키는데 이 마이크로 명령어를 제어단어라고 한다.
파이프라인 처리구조
- 명령어 파이프라인: CPU에서 명령어를 읽어 순차적으로 실행, 하나의 명령어가 실행되는 도중에 다른 명령어 실행을 시작하는 식으로 동시에 여러 개의 명령어를 실행하는 기법
실행과정
- 명령어 인출: Instruction Fetch
- 명령어 해독: Instruction Decode
- 오퍼랜드 인출: Operand Fetch
- 실행: Excute
마이크로프로그램 제어
- 마이크로 명령어들의 집합
제어장치
- 주기억장치에 있는 프로그램, 명령어를 순서대로 읽어옴
- 명령어를 해독
- 각 장치에 신호를 보내 프로그램 처리
제어장치 제어기능
- 오퍼레이션 부분과 오퍼랜드로 구성 (Op Code와 Address)
- 명령어 수행단계는 인출단계와 실행단계로 나뉨
제어장치 구성
- IR (Instruction Register): 명령 레지스터, 주기억 장치에서 인출된 명령어를 기억하는 레지스터
- Instruction Decoder: 명령 해독기, 명령 레지스터로부터 명령코드를 받아서 해독하고 결과는 제어신호 발생기에 전송
- 제어신호 발생기: 타이밍 발생회로와 제어회로로 구성
- Program Counter: 프로그램 계수기, 다음 실행될 명령어를 가진 주기억장치의 주소를 기억하는 레지스터
명령어 수행 과정
- PC의 주소를 MAR로 전송
- MAR 번지에 있는 명령어를 읽어 MBR로 전송, PC 1 증가
- MBR에서 IR로 전송, OP Code와 주소필드를 각각 해독기와 주소 레지스터로 전송
- MAR에서 데이터와 Operand 주소를 계산하고 주기억장치에 접근
- 제어신호 발생기에서는 연산자를 해독하여 명령수행을 위한 제어신호 발생
- 반복
명령어 사이클
상태 | 기능 |
---|---|
Fetch | 1. 명령어를 주기억장치에서 읽음 2. 명령어 해독 3. 1사이클이면 실행 후 fetch로 이동 4. 아니면 유효주소를 계산해 간접주소면 indirect, 직접이면 execute |
Indirect | 1. 주소를 주기억장치에서 읽음 2. 간접주소이면 다시 indirect 3. 분기명령이면 실행 후 fetch 4. 아니면 execute |
Execute | 1. 데이터를 주기억장치에서 읽음 2. 실행 후 fetch |
Interrupt | 1. PC 내용을 스택에 저장 2. PC는 인터럽트 시작주소로 변경 3. PSR I bit에 1 처리 4. 인터럽트 처리루틴의 fetch로 이동 |
플리플롭 | 메이저 상태 |
---|---|
0 0 | Fetch |
0 1 | Indirect |
1 0 | Execute |
1 1 | Interrupt |
Fetch Cycle
MAR <= PC
MBR <= M[MAR], PC <= PC + 1
IR <= MBR
Indirect Cycle
MAR <= IR(addr)
MBR <= M[MAR]
IR(addr) <= MBR
Execute Cycle
- ADD X
MBR <= M[MAR]
AC <= AC + MBR
- LDA X: X번지에서 데이터를 읽어 누산기에 저장하는 명령어 (LOAD)
MBR <= M[MAR]
AC <= MBR
- STA X: 누산기의 내용을 X번지에 저장하는 명령어 (STORE)
M[MAR] <= AC
- ISZ X: X번지의 내용을 1증가 시키고 결과값이 0이면 다음 명령어를 실행하지 않고 건너뛰는 명령 (Increment & Skip if Zero)
MBR <= M[MAR]
MBR <= MBR + 1
M[MAR] <= MBR, if( MBR = 0 ) then ( PC <= PC + 1 )
- AND X: 누산기와 X번지 내용을 AND 연산해 결과값을 누산기에 저장하는 명령어
MBR <= M[MAR]
AC <= AC & MBR
Interrupt Cycle
MBR <= PC
MAR <= SP, PC <= ISR
(Interrupt Service Routine)M[MAR] <= MBR
마이크로 연산
한 개의 클록펄스 동안 레지스터의 데이터가 실행하는 기본 동작
수평 마이크로 명령어
- 제어신호필드, 조건분기필드, 주소필드
- 마이크로 명령어는 0, 1로 제어신호 출력
- 한 개의 비트가 하나의 마이크로 연산을 지정
- 조건분기필드는 branch에 사용
- 주소필드는 다음에 실행될 마이크로 명령어의 주소 지정
- 동작속도가 빠르고 하드웨어를 효율적으로 사용하는 장점
- 긴 제어단어가 필요해 비용이 많이 드는 단점
수직 마이크로 명령어
- 디코딩을 통해 제어신호 발생
- 제어단어의 비트 수가 줄어든다
- nbit로 2^n개의 마이크로 연산 표시 가능
- 디코더 필요
단일 사이클 제어
모든 레지스터의 이동은 클록 펄스에 의해 제어
- 마이크로 사이클: 하나의 마이크로 연산이 수행되는 과정
- 마이크로 사이클 타임
- 마이크로 오퍼레이션: 마이크로 사이클 동작
- 동기식과 비동기식으로 구분
- 하드웨어 제어방식
- 1개의 클록 사이클에 1개의 명령어를 실행
동기 고정식
- 가장 수행시간이 긴 것을 사이클 타임으로 설정
- 모든 마이크로 연산의 시간이 유사한 경우 사용
- 구현 간단
- CPU 처리시간 낭비 발생
동기 가변식
- 유사한 것끼리 몇 개의 군으로 모아서 마이크로 사이클 타임을 설정
- CPU의 성능을 높이고 전체적으로 속도 향상
- 제어 복잡
비동기식
- 각각의 마이크로 연산에 대해 서로 다른 마이크로 사이클 타임을 설정
- 하나의 마이크로 연산이 끝나면 다음 마이크로 연산 타임이 신호가 발생
- 복잡해서 안 사용함
하드웨어 제어
2X2bit 인 경우 4개의 AND 게이트와 2개의 반가산기 필요
파이프라인 제어
하나의 프로세서를 서로 다른 기능을 가진 여러 개의 서브 프로세서로 나누어 각 프로세서가 동시에 서로 다른 데이터를 처리하도록 하는 기법
명령어 집합
마이크로 명령어의 형식
- 연산 필드
- 조건 필드: 상태 비트 조건 선택 필드
- 분기 필드
- 주소 필드: 다음 주소 지정
처리장치
명령어 해독기
- instruction decoder
- op code를 해독하고 연산의 시작주소를 결정