Cpu 구조 및 기능 Cpu의 동작 명령어 집합 명령어 형식 주소 지정 방식

Slides:



Advertisements
Similar presentations
컴퓨터와 인터넷.
Advertisements

3. 명령어 집합 구조 순천향대학교 정보기술공학부 이상정.
Lecture #2 제2장 CPU의 구조와 기능(1).
2.1 CPU의 기본 구조 2.2 명령어 실행 2.3 명령어 파이프라이닝 2.4 명령어 세트
연결리스트(linked list).
제7강 학습 내용 주소지정 방식의 예 값 즉시 지정 방식과 실행 예 레지스터 직접지정 방식 메모리 직접지정 방식과 실행 예
12장. 제어 장치 다루는 내용 CPU속의 제어장치 마이크로 연산 제어장치의 동작.
어셈블리 문법 보강 4월 10일.
컴퓨터시스템 구조 Computer System Architecture.
제 3장 컴퓨터 시스템의 구조.
System Programming 제1장 배경지식 시스템 프로그래밍.
REVERSE ENGINEERING HeXA 1st
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
9장. 중앙처리 장치의 조직과 기능 다루는 내용 컴퓨터 본체에서 CPU의 위치 살펴보기 CPU의 성능, 기능, 조직
9장. 제어장치 Lecture #9.
Chapter 08 제어장치와 마이크로 오퍼레이션.
4장 컴퓨터의 중앙 처리 장치 하 효 순.
제10강 중앙처리장치 1.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
6 중앙처리장치의 조직과 기능 IT CookBook, 컴퓨터 구조와 원리 2.0.
제2장 CPU의 구조와 기능. 제2장 CPU의 구조와 기능 CPU의 기능 명령어 인출(Instruction Fetch): 기억장치로부터 명령어를 읽어온다. 명령어 해독(Instruction Decode): 수행해야 할 동작을 결정하기 위하여 인출된 명령어를 해독한다.
Chapter 06 명령어와 번지지정 방식.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
컴퓨터 프로그래밍 기초 #02 : printf(), scanf()
Error Detection and Correction
DK-128 실습 EEPROM 제어 아이티즌 기술연구소
타이머카운터 사용법 휴먼네트웍스 기술연구소
PSW : PROGRAM STATUS WORD
10장. 중앙처리 장치의 명령어 다루는 내용 어셈블리 프로그램의 이해 인터럽트(interrupt) 명령어 세트 주소 지정 방식.
14 마이크로 연산과 제어장치 IT CookBook, 컴퓨터 구조와 원리 2.0.
JA A V W. 03.
디지털회로설계 (15주차) 17. 시프트 레지스터와 카운터 18. 멀티바이브레이터 * RAM & ROM.
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
Computer System Architecture
Quiz #7 다음 수들을 합병 정렬과 퀵 정렬 알고리즘을 이용하여 오름 차순으로 정렬하였을 때, 데이터 이동 회수를 각각 구하라. 여러분은 정렬 과정을 단계별로 보이면서 이동 회수를 추적해야 한다. 단, 퀵 정렬시에 피봇으로 배열의 왼쪽 첫 번째 원소를 선택한다. 5.
컴퓨터시스템 구조 Computer System Architecture.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
논리회로 설계 및 실험 5주차.
6 레지스터와 카운터.
DK-128 실습 내부 EEPROM 제어 아이티즌 기술연구소 김태성 연구원
DK-128 실습 타이머카운터 사용법 아이티즌 기술연구소
2. 컴퓨터 시스템의 동작 명령어 구성 연산 종류와 기능에 따라 오퍼랜드 부분을 다양하게 활용 가능.
6. 레지스터와 카운터.
제4강 처리장치 1.
ARM Development Suite v1.2
“사람과 컴퓨터” 이 점 숙 컴퓨터와 소프트웨어 “사람과 컴퓨터” 이 점 숙
ATmega128의 특징 아이티즌 기술연구소
계산기.
9장. 중앙처리 장치의 조직과 기능 다루는 내용 컴퓨터 본체에서 CPU의 위치 살펴보기 CPU의 성능, 기능, 조직
Canary value 스택 가드(Stack Guard).
제2강 : 전자계산기구조-컴퓨터 시스템 구성.
Lecture #3 제2장 CPU의 구조와 기능(2).
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
Chapter 1 단위, 물리량, 벡터.
DK-128 직렬통신 실습 아이티즌 기술연구소
AT MEGA 128 기초와 응용 I 기본적인 구조.
ARM Development Suite v1.2
컴퓨터구조 연습문제 발표 Chapter 3 - 컴퓨터의 기능 및 상호연결의 최상위 관점
논리회로 설계 및 실험 4주차.
TVM ver 최종보고서
3.2 분기 명령어.
Numerical Analysis Programming using NRs
제 4 장 Record.
1. 지역변수와 전역변수 2. auto, register 3. static,extern 4. 도움말 사용법
컴퓨터는 어떻게 덧셈, 뺄셈을 할까? 2011년 10월 5일 정동욱.
버스와 메모리 전송 버스 시스템 레지스터와 레지스터들 사이의 정보 전송을 위한 경로
Assembly 05 방호남 07 반지훈 09 박상욱.
7 생성자 함수.
ARM Development Suite v1.2
4-1. 명령어 형식.
Presentation transcript:

Cpu 구조 및 기능 Cpu의 동작 명령어 집합 명령어 형식 주소 지정 방식 4장. 중앙처리장치 Cpu 구조 및 기능 Cpu의 동작 명령어 집합 명령어 형식 주소 지정 방식

Cpu – Central Processing Unit 컴퓨터에서 가장 핵심적인 장치, 데이터를 처리하고 각 장치들을 제어 컴퓨터 구조

Cpu 내부

전달기능 기억기능 연산기능 제어기능 버스 레지스터 ALU 제어장치 * 4가지 기능 * 기억 기능 범용 레지스터(General Register) AX, BX, CX, DX 연산용 레지스터(Arithmetic Register) AC(누산기) 주소 레지스터(Address Register) IR 명령어 레지스터 PC 메모리 주소 레지스터 MAR MBR 프로그램 상태 레지스터 PSW 범용 레지스터(General Register) Accumulator X, Base X, Counter X와 Data X 연산을 수행할 때 피연산자를 기억하는 용도 연산용 레지스터(Arithmetic Register) ALU의 입력과 출력 데이터의 임시 기억 CPU가 1개인 경우 누산기(AC) 누산기(AC : Accumulator) 산술 및 논리 연산에서 오퍼랜드나 연산 결과를 일시적으로 기억하는 레지스터 명령어 레지스터(IR : Instruction Register) : CPU가 명령어를 메모리로부터 인출하여 그 명령어가 무슨 내용인가를 판독하기 위하여 기억하고 있는 레지스터 주소 레지스터(Address Register) 인덱스 레지스터, Stack 포인터, 세그먼트 레지스터 등 1) 인덱스 레지스터(Index Register) 주소를 계산할 때 사용, 명령어 주소나 인덱스 수정. 2) 스택 포인터(Stack Pointer) 스택 주소 지정 LIFO(Last In First Out)구조 최상위(TOP) 지점의 주소 를 저장 3) 세그먼트 레지스터(Segment Register) 세그먼트 주소방식을 사용할 경우 세그먼트의 Base Address저장

범용 레지스터(General Register) Accumulator X, Base X, Counter X와 Data X 연산을 수행할 때 피연산자를 기억하는 용도 연산용 레지스터(Arithmetic Register) ALU의 입력과 출력 데이터의 임시 기억 CPU가 1개인 경우 누산기(AC) 누산기(AC : Accumulator) 산술 및 논리 연산에서 오퍼랜드나 연산 결과를 일시적으로 기억하는 레지스터 AX(어큐뮬레이터, accumulator) 산술 연산에 가장 자주 쓰이는 레지스터 계산 결과를 모아서 더하는 데에 사용될 수 있음. BX(베이스 레지스터, base register) 베이스 주소를 저장하는데 쓰임. CX(카운트 레지스터, count register) 반복적으로 실행되는 특정 명령에 사용됨 명령 반복 횟수가 CX에 저장되어야 함. DX(데이터 레지스터, data register) 일반 자료를 저장하는데 사용됨. ALU 누산기 레지스터 ALU : 연산장치

명령어 레지스터(IR : Instruction Register) CPU가 명령어를 메모리로부터 인출하여 그 명령어가 무슨 내용인가를 판독하기 위하여 기억하고 있는 레지스터 프로그램 카운터(Program Counter : PC) 데이터가 저장되어 있는 메모리 주소를 지정 다음에 수행해야 할 명령어가 저장된 메모리 주소를 지정 주소 레지스터(Address Register) 인덱스 레지스터, Stack 포인터, 세그먼트 레지스터 등 1) 인덱스 레지스터(Index Register) 주소를 계산할 때 사용, 명령어 주소나 인덱스 수정. 2) 스택 포인터(Stack Pointer) 스택 주소 지정 LIFO(Last In First Out)구조 최상위(TOP) 지점의 주소 를 저장 3) 세그먼트 레지스터(Segment Register) 세그먼트 주소방식을 사용할 경우 세그먼트의 Base Address저장

메모리 주소 레지스터(Memory Address Register:MAR) 코드나 데이터 인출 시 주기억장치의 위치 주소를 저장 주소 버스(Address Bus)에 직접 접속 메모리 버퍼 레지스터(Memory Buffer Register:MBR) 주기억장치에 기록될 데이터를 임시 저장 최근에 읽혀진 명령어나 데이터를 임시 저장 데이터 버스(Data Bus)에 직접 접속 PSW – Program Status Word 특정 연산 후의 관련된 중앙 처리 장치의 상황을 나타냄. - 부호플래그(C) : 양수이면 1로, 음수는 0 (마지막 산술의 결과부호) - 제로플래그(Z) : 마지막 산술결과 0이면 1로 설정 - 캐리플래그(C) : 덧셈,뺄셈에서 올림수 발생하면 1로 세팅 - 오버플로 플래그(V) : 오버플로이면 1, 아니며 0으로 설정

연산 기능 Cpu 내에서 연산기능을 가진 장치는 ALU 산술 연산(+, -, *, /) – 산술 회로 논리연산 을 한다(And, Or, Not, Xor) – 논리 회로 시프터 연산(비트의 자리 이동) – 시프터 회로

전달 기능 – 버스로 이루어짐 (시스템 버스 = 주소 + 데이터 + 제어) 주소 버스 CPU는 주소를 주소 버스로 출력 각 I/O 장치들로 고유의 주소를 사용 : 주소 버스의 주소로 각 장치의 접근파악 CPU는 주소 버스를 읽지 않는다(단방향성) 데이터 버스 Cpu가 메모리 또는 I/O장치들과 데이터를 주고 받을 때 사용 데이터의 주소가 인출된 후 데이터 버스가 사용 제어 버스 개별 제어 신호들의 집합으로 구성 Cpu 와 전달하는 장치에 따라서 내부 버스 - Cpu 내의 ALU와 레지스터 간 전달 기능 신호 회선 외부 버스 – Cpu 와 기억장치 또는 주변 장치들 간 전달

제어 기능 - 데이터의 처리과정을 제어하는 기능 제어장치의 기능 제어장치는 기억장치, 연산장치, 입출력장치에 제어 신호를 보내고 또 이들 장치로부터 신호를 받아서, 다음에 해야 할 조작을 결정함 인간의 중추신경에 해당 제어장치는 주기억장치에 저장되어 있는 명령어를 한 명령어씩 호출하여 해석하고, 해석한 결과에 따라 연산, 자료의 이동 및 입출력을 실행하는 기능을 가짐

Cpu 동작 Execute Fetch Interrupt Indirect 직접, 간접 주소에 의한 명령 실행 인터럽트 발생 페치 사이클(Fetch Cycle) - 명령이 메모리로부터 IR로 읽혀질 때를 명령 -인출단계 간접 사이클(Indirect Cycle) - 오퍼랜드가 번지일 경우 -인출단계 실행사이클(Execute Cycle) - 구해진 오퍼랜드의 명령을 수행 -실행단계 이때 더 긴급한 일이 발생하게 되면 인터럽트 사이클(Interrupt Cycle)을 수행하게 되고 그렇지 않으면 다시 페치 사이클을 수행한다.

t0 : MAR ← PC t1 : MBR ← M[MAR], PC ← PC + 1 t2 : IR ← MBR 시작 종료 CPU의 활용이 가능한가? MAR=PC MBR=M(MAR) IR=MBR(명령어코드) PC의 값을 1 증가시킨다. 명령어를 해독한다. Add 명령어? BR 명령어? MAR = MBR(주소) AC = AC + MBR PC = MAR(주소) 명령어 인출 단계 명령어 실행 단계 NO YES t0 : MAR ← PC t1 : MBR ← M[MAR], PC ← PC + 1 t2 : IR ← MBR 단, t0, t1 및 t2는 CPU 클럭 주기 인출 [첫번째 주기] 현재의 PC 내용(명령어)을 CPU 내부 버스를 통하여 MAR로 전송. [두번째 주기] 그 주소가 지정하는 기억장치 위치로부터 읽혀진 명령어가 데이터 버스를 통하여 MBR로 적재되며, PC의 내용에 1을 더한다. [세번째 주기] MBR에 있는 명령어 코드가 명령어 레지스터인 IR로 이동 실행 [첫번째 주기] 데이터를 저장할 기억장치의 주소를 MAR로 전송. [두번째 주기] 저장할 데이터를 버퍼 레지스터인 MBR로 이동. [세번째 주기] 그 데이터와 AC의 내용을 더하고 결과값을 다시 AC에 저장. t0 : MAR ← IR t1 : MBR ← M[MAR] t2 : AC ← AC + MBR

명령어 집합 컴퓨터 구조에 따라 명령어 형식(Instruction Format)이 다르고, 이에 따른 명령어 집합(Instruction Set)의 종류도 많다. 중앙 처리 장치가 제공해야 될 명령어의 집합을 결정할 때에는 명령어의 종류와 주소 지정 방식, 명령어 형식 등을 고려해야 한다. 명령어 집합이 갖추어야 될 요구 사항 프로그래머가 적절한 양의 주기억 장치를 사용해서 계산할 수 있는 임의의 함수를 구현하도록 기계어 프로그램을 작성 (완벽성) 자주 사용되는 기능들이 상대적으로 짧은 명령어들을 이용해서 빠르게 수행(신속성) 예상되는 명령어와 주소지정방식을 포함해야 한다는 점에서 가능한 규칙적(규칙성) 하드웨어와 소프트웨어 설계 비용을 줄일 수 있도록 명령어 집합은 기존에 있는 컴퓨터의 명령어들과 호환성 유지(호환성) 명령의 분류 데이터 전송 명령어(Data Transfer Instruction) 데이터 처리 명령어(Data Manipulation) 프로그램 제어 명령어(Program Control Instruction)

데이터 전송 명령어 데이터를 내용 변경 없이 다른 장소로 위치를 옮기는 것. 메모리와 레지스터 사이, 레지스터와 입출력 장치 사이, 레지스터간의 데이터 전송목적 데이터 전송 명령어 명 칭 부 호 기 능 Load LD 메모리로부터 레지스터로의 정보 전송 명령어 Store ST 레지스터에서 메모리로의 정보 전송 명령어 Move MOV 레지스터간의 정보 전송 명령어 Exchange XCH 두 레지스터 사이, 레지스터와 메모리 사이의 정보 교환 명령어 Input IN 입력 장치에서 레지스터로의 정보 전송 명령어 Output OUT 레지스터와 출력 장치로의 정보전송 명령어 Push PUSH 레지스터에서 스택으로의 정보 전송 명령어 Pop POP 스택에서 레지스터로의 정보 전송 명령어

Negate(2’s complement) 데이터 처리 명령어 데이터에 대해 동작을 수행할 연산 능력을 컴퓨터에 부여해 주는 것. 산술연산명령어, 논리연산명령어, 비트처리명령어, 시프트명령어 산술 연산 명령어 명 칭 부 호 기 능 Increment INC 레지스터나 메모리의 값을 증가시키는 명령어 Decrement DEC 레지스터나 메모리의 값을 감소시키는 명령어 Add ADD 덧셈 명령어 Subtract SUB 뺄셈 명령어 Multiply MUL 곱셈 명령어 Divide DIV 나눗셈 명령어 Add with Carry ADDC 올림수가 가지는 덧셈 명령어 Subtract with borrow SUBB 내림수를 가지는 뺄셈 명령어 Negate(2’s complement) NEG 2의 보수를 취하는 명령어

데이터 처리 명령어 논리 연산 명령어는 피연산자의 각 비트를 하나씩 논리적으로 처리하는 것으로 비트마다의 값을 변경하거나, 비트 군(Bit Set)을 0으로 만들거나, 새로운 비트의 값을 피연산자에 집어넣거나 할 수 있다. 논리 연산 및 비트 처리 명령어 명 칭 부 호 기 능 Clear CLR 피연산자의 모든 비트를 0으로 하는 명령어 Complement COM 피연산자의 값을 1의 보수로 취하는 명령어 AND 피연산자의 특정 부분을 0으로 만드는 명령어 OR 피연산자의 특정 비트나 비트 군을 1로 만드는 명령어 Exclusive-OR XOR 어떤 비트의 보수를 취할 때 사용하는 명령어 Clear Carry CLRC 올림수를 0으로 하는 명령어 Set Carry SETC 올림수를 1로 하는 명령어 COMC 올림수를 보수로 취하는 명령어 Enable Interrupt EI 인터럽트를 가능하게 하는 명령어 Disable DI 인터럽트를 불가능하게 하는 명령어

데이터 처리 명령어 시프트 명령은 어떤 워드의 비트들을 일괄적으로 왼쪽이나 오른쪽으로 이동시키는 명령어로서 논리 시프트, 산술 시프트, 회전 시프트 등으로 구분되는데, 이는 시프트 되는 맨 끝의 비트가 어떻게 처리되느냐에 따라 정해진다. 시프트 전송 명령어 명 칭 부 호 기 능 Logical Shift Right SHR 0을 왼쪽 끝에 넣어 주는 명령어 Logical shift Left SHL 0을 오른쪽 끝에 넣어 주는 명령어 Arithmetic Shift Right SHRA 부호 비트와 함께 오른쪽으로 자리 이동하는 명령어 Arithmetic Shift Left SHRL Rotate Right ROR 현재 비트의 값을 그대로 유지하고 오른쪽으로 자리 이동하는 명령어 Rotate Left ROL 현재 비트의 값을 그대로 유지하고 왼쪽으로 자리 이동하는 명령어 Rotate Right through Carry RORC 올림수 비트와 함께 오른쪽으로 자리 이동하는 명령어 Rotate Left through Carry ROLC 올림수 비트와 함께 왼쪽으로 자리 이동하는 명령어

프로그램 제어 명령어 프로그램 제어 명령어가 수행되면 프로그램 카운터(PC)의 값이 바뀌어 프로그램이 진행되는 위치가 달라지게 된다. 프로그램 제어 명령어 명 칭 부 호 기 능 Branch BR 지정된 주소로 분기하는 명령어 Jump JMP 지정된 주소로 점프하는 명령어 Skip SKP PC 값을 하나 증가시켜 자로 다음 명령을 뛰어넘게 하는 명령어 Call CALL 현재 PC 값을 기억시켜 놓고, 서부루틴의 시작으로 가게하는 명령어 Return RET 기억해 둔 리턴 주소를 PC에 넣는 명령어 Compare (by Subtraction) CMP 두 수의 크기를 비교하는 명령어 Test(by ANDing) TST 두 수를 AND 시켜서 특정 상태를 나타내는 비트를 조정하는 명령어

명령어 형식 기본형식 명령코드 오퍼랜드 (operation code) (operand) 연산 코드(Operation Code) : 수행될 연산을 지정 (예: LOAD, ADD 등) 2n(n : 비트 수)의 명령어 수 오퍼랜드(Operand) 연산을 수행하는 데 필요한 데이터 혹은 데이터의 주소. 데이터는 CPU 레지스터, 주기억장치, 혹은 I/O 장치에 위치

스택구조(Stack Organization) : 0-주소 명령형식 - 명령 코드와 하나의 오퍼랜드를 기술하기 위한 주소가 필요하며 ADD나 MUL 등의 명령어에서는 주소 필드가 필요하지 않다. 이러한 컴퓨터는 수식을 계산하기 위해 중위식을 후위식(역 폴리쉬)으로 바꾸어 주어야만 한다. 오퍼랜드부가 없고 연산자부만 있는 명령 형식이다. 모든 연산은 스택에 기억된 자료를 이용하여 연산하며, 그 결과는 다시 스택에 저장 OP-Code 예 X = ( A + B ) * ( C + D ) X = AB+CD+* (역 폴리쉬) PUSH A TOS A PUSH B TOS B ADD TOS (A + B) PUSH C TOS C PUSH D TOS D ADD TOS (C + D) MUL TOS (A +B) * (C + D) POP X M[X] TOS (TOS : Top Of Stack)

단일 누산기 구조 : 1-주소 명령 형식 - 모든 데이터 처리가 내장된 누산기(Accumulator)에 의해 이루어지며 곱셈이나 나눗셈을 우위 별도의 레지스터가 필요한 명령어 형식이다. 하나의 연산자부와 하나의 오퍼랜드부가 있는 명령 형식이다. 누산기에 미리 기억된 자료와 오퍼랜드부에 지정된 주소에 기억된 자료와 연산을 한다. OP-Code 주소-1 예 X = ( A + B ) * ( C + D) LOAD A AC M[A] ADD B AC AC + M[B] STORE T M[T] AC LOAD C AC M[C] ADD D AC AC + M[D] MUL T AC AC * M[T] STORE X M[X] AC

load 주소(R1, 30H) r1,30h = 300 Add 10 300 + 10 ->AC Store t ac(310) -> t Load 주소(R2, 31H) r2,31h = 200 Add 20 200 + 20 -> AC Mul t 310 * 220 -> AC Store 주소(R3, 32H) r3, 32번지에 저장 300 200 310 * 220 R1,30H R2,31H R3,32H

범용 레지스터 구조 : 2-주소 명령 형식 OP-Code 주소-1 주소-2 예 하나의 연산자부와 두개의 오퍼랜드부가 있는 명령 형식이다. 연산할 자료를 첫 번째 오퍼랜드에 지정된 주소와 두 번째 오퍼랜드에 지정된 주소에 각각 저장하고 연산된 결과는 첫 번째 오퍼랜드에 지정된 주소에 기억된다. 입력 자료가 연산 후에는 보존되지 않는다. 실행 속도가 빠르고 기억 장소를 많이 차지하지 않는다. OP-Code 주소-1 주소-2 예 X = ( A + B ) * ( C + D) MOV R1 , A R1 M[A] ADD R1 , B R1 R1 + M[B] MOV T2 , C R2 M[C] ADD R2 , D R2 R2 + M[D] MUL R1 , R2 R1 R1 * R2 MOV X , R1 M[X] R1

Add operand1, operand2 9와 5의 곱 Op1, op2 더한것을 op1에 저장 두 크기가 같아야 한다. Add r1, r2 - 레지스터, 레지스터 Add A, @R0 Add r1, M[x] - 레지스터, 메모리 Add A, #data 9와 5의 곱 Mov A, #9 Mov B, #5 Mul AB

범용 레지스터 구조 : 3-주소 명령 형식 OP-Code 주소-1 주소-2 주소-3(결과값) 예 하나의 연산자부와 세 개의 오퍼랜드부가 있는 명령 형식이다. 연산할 자료를 첫 번째 오퍼랜드와 두 번째 오퍼랜드에 지정된 주소에 각각 저장하고 연산된 결과는 세 번째 오퍼랜드에 지정된 주소에 기억되는 명령 형식이다. 연산 후에 입력 자료가 변하지 않고 보존된다. 명령어 처리 속도가 느리고 프로그램 작성이 불편하다. OP-Code 주소-1 주소-2 주소-3(결과값) 예 X = ( A + B ) * ( C + D) ADD R1 , A , B R1 M[A] + M[B] ADD R2 , C , D R2 M[C] + M[D] MUL X , R1 , R2 R1 R1 * R2

주소 지정 방식 주소 지정 방식(Addressing Mode) : 연산에 사용될 데이터를 주기억 장치의 어느 주소에서 꺼내올 것인가를 명령어 형식의 오퍼랜드에 지정하는 방식을 말한다. 장점 피연산자 부분의 비트 수를 줄여서 명령어의 길이를 짧게 할 수 있다. 여러 가지의 주소 지정 방식에 의해 프로그램 작성의 융통성이 있다 프로그램들을 재배치 가능한 방식을 이용하여 시스템의 지원을 효율적으로 사용할 수 있다.

2) 즉시 주소 지정 방식(Immediate Addressing Mode) 무주소 지정방식 1) 암시 방식(Implied Mode) : 피연산자가 명령어에 묵시적으로 정의. Stack, Pop, Push 명령을 사용하는 형태이다. 2) 즉시 주소 지정 방식(Immediate Addressing Mode) 오퍼랜드 값 자체가 실제 데이터 값을 지정하는 방식이다. 오퍼랜드가 명령어 내에 있는 주소 지정의 가장 간단한 형태로 오퍼랜드가 참조할 주소를 나타내는 것이 아니라 주어지는 ‘값’이다 변수의 초기값을 설정하거나 상수를 사용 또는 정의할 경우 사용된다. - 장점 : 메모리 참조가 없으므로 처리 속도가 가장 빠르다. - 단점 : 오퍼랜드의 크기, 즉 자료의 길이에 제한이 있다. 명령코드 데이터

1) 레지스터 방식(Register Mode) 명령어의 피연산자가 중앙 처리 장치 내의 레지스터를 지정하는 방식이다. 1) 레지스터 방식(Register Mode) 직접 주소 지정 방식과 유사하다. 차이점은 오퍼랜드 필드가 메인 메모리의 주소가 아닌 레지스터를 참조한다는 점만이 다르다. 장점 : 명령을 위한 주소 필드가 작아지며, 메모리를 참조하지 않는다. 단점 : 주소 공간의 제한이 있다. 레 지 스 터 방 식 명령어 형식 명령 코드 피연산자(X) 번호 중앙 처리 장치 1 2 : X 데이터 : :

2) 레지스터 간접 방식(Register Indirect Mode) 간접 주소 방식과 유사하나 차이점은 오퍼랜드 필드가 메모리 위치가 기억된 레지스터를 참조한다는 것이다. 장점 : 많은 Address 공간을 활용할 수 있다. 단점 : 간접 주소 방식보다는 메모리 참조가 적게 일어나지만 여분의 메모리 참조가 필요하다. 레 지 스 터 간 접 방 식 명령어 형식 명령 코드 피연산자(X) 주소 중앙 처리 장치 주소 주기억 장치 1 1 2 2 : : X Y Y 데이터 : : : :

직접 주소 지정 방식(Direct Addressing Mode) 주소 필드가 오퍼랜드의 실제적인 주소를 포함한다. 즉 오퍼랜드가 직접 접근할 주소를 가지고 있는 형태이다. 프로그램의 주소와 기억장치의 주소가 동일한 주소 지정 방식으로 한 번의 메모리 참조만이 있을 뿐 특별한 연산은 없다. 장점 : 명령어 형식이 간단하다. 단점 : 제한된 주소 공간을 제공하므로 융통성이 없다. 직 접 주 소 지 정 방 식 명령어 형식 명령 코드 피연산자(X) 주소 주기억 장치 1 2 : X 데이터 : :

2) 간접 주소 지정 방식(Indirect Addressing Mode) 직접 주소 방식의 문제점을 해결하기 위한 것이다. 오퍼랜드 필드가 메모리 내의 주소를 참조하여 그 주소로부터 유효 번지를 계산하여 메모리에 접근하는 방식으로 두 번의 메모리 액세스가 일어난다. 장점 : 길이가 n인 워드에 대하여 2n의 Address 공간을 활용할 수 있다. 즉, 짧은 길이를 가진 명령어로 튼 용량의 기억 장소를 주소를 지정할 수 있다. 단점 : 내용을 액세스하기 위해 두 번의 메모리 참조를 해야 하므로 처리 속도가 제일 느리다. 간 접 주 소 지 정 방 식 명령어 형식 명령 코드 피연산자(X) 주소 주기억 장치 1 : X Y(주소) : Y 데이터 :

유효번지(Effective Address) = 명령어의 피연산자 내용 + CPU의 레지스터 내용 계산 주소 지정 방식 주어진 주소에 상수 혹은 별도로 특정 레지스터에 기억된 주소의 일부분을 합해서 실제 자료가 기억된 장소를 지정하는 방식이다. 유효번지(Effective Address) = 명령어의 피연산자 내용 + CPU의 레지스터 내용 계 산 주 소 지 정 방 식 명령어 형식 명령 코드 피연산자(X) 주소 주기억 장치 1 + X + Y : Y X : X+Y 레지스터(Y) 데이터 :

1) 상대 주소 지정방식(Relative Addressing Mode) 기준주소는 명령어주소, 상대적 변위는 프로그램 카운터의 값 2) 인덱스 주소 지정 방식(Indexed Addressing Mode) 계산에 의해 주소를 지정하는 방식이다(Index Register를 이용). 장점: Array 구조에 유용하다. 단점 : 시간 소요가 많다. 3) 기준 레지스터 주소 지정방식(Base Register Addressing Mode) - 인덱스 주소 지정 방식에서 인덱스 레지스터 대신에 베이스 레지스터가 사용된다는 점 이외에는 모두 같다. 유효번지(Effective Address) = 명령어의 오퍼랜드 + 프로그램 카운터(PC)의 내용 유효번지(Effective Address) = 명령어의 오퍼랜드(기준) + 인덱스 레지스터(변위)의 내용 유효번지(Effective Address) = 명령어의 오퍼랜드(변위) + 베이스 레지스터(기준)의 내용

주소지정 유효주소 AC내용 직접 400 700 즉시 100 간접 300 상대 501 375 인덱스 500 800 레지스터 - 실제 예) 주소 100 LDA Mode 400 Nest Instruction 325 600 700 800 375 300 주소지정 유효주소 AC내용 직접 400 700 즉시 100 간접 300 상대 501 375 인덱스 500 800 레지스터 - 레지간접 600 pc 101 100 R1 300 299 XR 100 300 AC 400 500 501 700