3 장 인텔 프로세서의 내부구조

32
Mi Jung Choi [email protected] Dept. of Computer Science 3 3 장 장장 장장장장장 장장장장 장 장장 장장장장장 장장장장

Upload: abril

Post on 05-Jan-2016

116 views

Category:

Documents


0 download

DESCRIPTION

3 장 인텔 프로세서의 내부구조. 32 비트 인텔 프로세서 16 비트 인텔 프로세서 기억장치 레지스터 데이터표현. 학습내용. 내부적으로는 32 비트 데이터 버스 외부적으로는 64 비트 데이터 버스 수퍼스칼라 구조. 펜티엄 프로세스. 범용 레지스터 (8 개 ) : 연산항 , 포인터 저장 세그먼트 레지스터 : 메모리 세그먼트 식별 EFLAGS 레지스터 : 실행 되고 있는 프로그램 상태보고 및 애플리케이션 레벨로 제한된 프로세서 제어를 한다 . - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 3 장 인텔 프로세서의 내부구조

Mi Jung [email protected]

Dept. of Computer Science

33 장 인텔 프로세서의 내부구조장 인텔 프로세서의 내부구조

Page 2: 3 장 인텔 프로세서의 내부구조

시스템 프로그래밍

학습내용학습내용

• 32 비트 인텔 프로세서

• 16 비트 인텔 프로세서

• 기억장치

• 레지스터

• 데이터표현

Page 2

Page 3: 3 장 인텔 프로세서의 내부구조

시스템 프로그래밍

펜티엄 프로세스펜티엄 프로세스

• 내부적으로는 32 비트 데이터 버스

• 외부적으로는 64 비트 데이터 버스

• 수퍼스칼라 구조

Page 3

Page 4: 3 장 인텔 프로세서의 내부구조

시스템 프로그래밍

기본 프로그램 실행 레지스터기본 프로그램 실행 레지스터 (16(16개개 ))

• 범용 레지스터 (8 개 ) : 연산항 , 포인터 저장

• 세그먼트 레지스터 : 메모리 세그먼트 식별

• EFLAGS 레지스터 : 실행 되고 있는 프로그램 상태보고

및 애플리케이션 레벨로 제한된 프로세서 제어를 한다 .

• EIP: 다음에 실행될 명령어를 가리킨다 .

Page 4

Page 5: 3 장 인텔 프로세서의 내부구조

시스템 프로그래밍

범용 레지스터의 특별한 사용범용 레지스터의 특별한 사용

• EAX : 연산항과 결과에 대한 누산기 • EBX : 함수나 변수의 주소 저장 ( 특히 DS 세그먼트의 데이터에

대한 포인터 ) • ECX : 문자열과 반복문에 대한 계수기 ( 카운터 역활을 수행하며

반복될 때마다 ECX 값이 자동 감소 ) • EDX : 입출력에 대한 포인터 • ESI : 문자열 연산에 대한 출발항 또는 DS 레지스터가 가리키고

있는 세그먼트의 데이터에 대한 포인터 • EDI : 문자열 연산에 대한 목적항 또는 ES 레지스터가 가리키고

있는 세그먼트의 데이터에 대한 포인터 • ESP : 스택 포인터 (SS 를 기반으로 스택의 최상위 주소를

유지하는 용도로 사용 )• EBP : 스택에 있는 데이터에 대한 포인터 (SS 를 기반으로

스택내의 데이터에 접근하기 위한 기준주소를 저장 ) Page 5

Page 6: 3 장 인텔 프로세서의 내부구조

시스템 프로그래밍

범용 레지스터 이름범용 레지스터 이름

SPSP

DIDI

SISI

BPBP

DLDLDHDH

CLCLCHCH

BLBLBHBH

ALALAHAH

31

16

15

8 7 0 16-bit

32-bitAX

BX

CX

DX

EAX

EBX

ECX

EDX

EBP

ESI

EDI

ESP

Page 6

Page 7: 3 장 인텔 프로세서의 내부구조

시스템 프로그래밍

세그먼트 레지스터세그먼트 레지스터

CSDSSSESFSGS

코드세그먼트

데이터세그먼트

스택 세그먼트

데이터세그먼트

데이터세그먼트

데이터세그먼트

Page 7

Page 8: 3 장 인텔 프로세서의 내부구조

시스템 프로그래밍

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

RRFF

VVMM

AACC

VVIIFF

VVIIPP

00000000000000000000CC

FF11PPFF00

AAFF00

ZZFF

SSFF

TTFF

IIFF

DDFF

OOFF

IIOOPPLL

NNTT00

IIDD

X ID FLAG (ID)X Virtual Interrupt Pending (VIP)X Virtual Interrupt Flag (VIF)X Alignment Check (AC)X Virtual-8085 Mode (VM)X Resume Flag (RF)X Nested Task (NT)X I/O Privilege Level (IOPL)S Overflow Flag (OF)C Direction Flag (IF)X Interrupt Enable Flag (IF)X Trap Flag (TF)S Sign Flag (SF)S Zero Flag (SF)S Auxiliary Carry Flag (AF)S Parity Flag (PF)S Carry Flag (CF)

S 상태 (Status) FlagC 제어 (Control) FlagX 시스템 (System) Flag

예약 비트현재 사용하지는 않는다 .

Page 8

Page 9: 3 장 인텔 프로세서의 내부구조

시스템 프로그래밍

8086 8086 프로세서 구조프로세서 구조

AHAH....DHDH

SP,BP,SI,DISP,BP,SI,DI명명령령어어실실행행

ALUALU

임시임시레지스터레지스터

플래그레지스터플래그레지스터

EUEU제어제어시스템시스템

AdderAdder

CSCSDSDSSSSSESESIPIP

내부 커뮤내부 커뮤니케이션니케이션레지스터레지스터

명령큐 버퍼명령큐 버퍼

버스버스제어제어로직로직

(EU)(EU) (BIU)(BIU)ALAL....DLDL

Page 9

Page 10: 3 장 인텔 프로세서의 내부구조

시스템 프로그래밍

명령어의 형태명령어의 형태

명령어 코드명령어 코드

주소지정방식주소지정방식레지스터레지스터

오퍼랜드오퍼랜드

}}

Page 10

Page 11: 3 장 인텔 프로세서의 내부구조

시스템 프로그래밍

명령어의 구성 예명령어의 구성 예

명령어 코드 (25=32)

11 11 00 11 0000 111177 00

4 가지의 주소지정 방식

2 개의 레지스터

명령어의 길이는 레지스터의 개수명령어의 길이는 레지스터의 개수 ,,주소지정 방식의 종류주소지정 방식의 종류 ,, 명령어의 종류에 따라 결정명령어의 종류에 따라 결정

Page 11

Page 12: 3 장 인텔 프로세서의 내부구조

시스템 프로그래밍

명령어의 구성 예명령어의 구성 예

명령어 코드 (25=32)

11 11 00 11 0000 111177 00

4 주소지정방식 00 = 직접 01 = 베이스 10 = 인덱스 11 = 베이스 + 인덱스

}}

Page 12

Page 13: 3 장 인텔 프로세서의 내부구조

시스템 프로그래밍

명령어의 구성 예명령어의 구성 예

명령어 코드명령어 코드 (2(255=32)=32)

11 11 00 11 0000 111177 00

44 주소지정방식 주소지정방식 0000 == 직접직접 0101 == 베이스베이스 1010 == 인덱스인덱스 1111 == 베이스베이스 ++ 인덱스인덱스

11 == 레지스터 레지스터 AA 00 == 레지스터 레지스터 BB

}}

}}Page 13

Page 14: 3 장 인텔 프로세서의 내부구조

시스템 프로그래밍

8086 8086 명령어의 형태명령어의 형태

• 14 개의 기본레지스터– 범용레지스터 : 8 개

– 세그먼트 레지스터 : 4 개

– 명령어 포인트 : 1 개

– 플래그 레지스터 : 1 개

– 명령어에 따라서 범용레지스터를 사용하는 것이 있고 이 경우 ,

필요한 레지스터를 명시하기 위하여 3 비트 필요

Page 14

Page 15: 3 장 인텔 프로세서의 내부구조

시스템 프로그래밍

8086 8086 명령어의 형태명령어의 형태

• 레지스터와 데이터버스 : 16 비트– 레지스터 기록 : 1 사이클

• 명령어의 일반적 크기 : 1 단어– 데이터의 크기를 나타내기 위하여 1 비트 필요 (0: 바이트 표

시 , 1: 워드 단위 표시 )

• 주소 지정 방식을 나타내기 위해 5 비트 이용 (4 장에서

수업 )

• 주소버스의 크기 : 20 비트

Page 15

Page 16: 3 장 인텔 프로세서의 내부구조

시스템 프로그래밍

기억장치의 모델기억장치의 모델

• 8086 프로세서의 예

바이트주소바이트주소 단어주소단어주소

7 7 00

7 7 00

0000

1111

........

N-1N-1N-1N-1

NNNN

FFFFFFFFFFFFFFFFFFFF

........

0000

1111

N-1N-1N-1N-1

NNNN

바이트바이트바이트바이트

15 15 8 8

15 15 8 8

7 07 07 07 0

우우측측바바이이트트

홀홀수수

((

((

0000

2222

........

NNNN

N+2N+2N+2N+2

FFFFEFFFFEFFFFEFFFFE

........

0000

2222

NNNN

N+2N+2N+2N+2

바이트바이트바이트바이트 1111

3333

N+1N+1N+1N+1

N+3N+3N+3N+3

바이트바이트바이트바이트

FFFFEFFFFEFFFFEFFFFE FFFFFFFFFFFFFFFFFFFF

좌좌측측바바이이트트

짝짝수수

((

((

Page 16

Page 17: 3 장 인텔 프로세서의 내부구조

시스템 프로그래밍

기억장치의 실제구성기억장치의 실제구성

1048575104857510485751048575

홀수 뱅크

5555

3333

1111

......

......

1048574104857410485741048574

짝수 뱅크

4444

2222

0000

......

......

8086 프로세서

16 비트 데이터

Page 17

Page 18: 3 장 인텔 프로세서의 내부구조

시스템 프로그래밍

주소지정에 의한 액세스 효율주소지정에 의한 액세스 효율

기억장치번지

41414141

68686868

64646464......

C1C1C1C1

B4B4B4B4

41414141

00000000

00010001

00020002

0001100011

0001200012

0001300013

짝수 , 홀수 번지의 조합 (1 번 액세스 )

홀수 , 짝수 번지의 조합 (2 번 액세스 )

Page 18

Page 19: 3 장 인텔 프로세서의 내부구조

시스템 프로그래밍

데이터 기록시 일반적인 규칙데이터 기록시 일반적인 규칙

• 기억장소 주소는 바이트 단위

• 바이트 주소는 1 씩 증가

• 단어 주소는 2 씩 증가

• N 번지의 단어에 접근

→ N,N+1 바이트에 접근

• N 번지의 긴 단어에 접근

→ N,N+1,N+2,N+3 에 접근

Page 19

Page 20: 3 장 인텔 프로세서의 내부구조

시스템 프로그래밍

기억장치에서 단어 배열기억장치에서 단어 배열

기억장치기억장치

2A2A

5151

레지스터레지스터

00

NN

N+1N+1

......

......N+2N+2

단어의 하위 바이트단어의 하위 바이트단어의 상위 바이트단어의 상위 바이트

2A2A5151

001515 77

Page 20

Page 21: 3 장 인텔 프로세서의 내부구조

시스템 프로그래밍

레지스터의 종류레지스터의 종류

• 데이터 레지스터– 일시적인 결과 기록

• 포인터 레지스터– 스텍 포인터와 베이스 포인터

• 인덱스 레지스터– 데이터의 주소저장

• 플래그 레지스터– 연산결과의 정보저장

• 세그먼트 레지스터– 세그먼트의 시작 주소저장

Page 21

Page 22: 3 장 인텔 프로세서의 내부구조

시스템 프로그래밍

데이터 레지스터데이터 레지스터

AHAH

1616 비트비트

88 비트비트 88 비트비트

BHBH

CHCH

DHDH

ALAL

BLBL

CLCL

DLDL

AXAX

BXBX

CXCX

DXDX

3232 비트비트

EAXEAX

EBXEBX

ECXECX

EDXEDX

Page 22

Page 23: 3 장 인텔 프로세서의 내부구조

시스템 프로그래밍

포인터와 인덱스 레지스터포인터와 인덱스 레지스터

SISI

DIDI

ESPESP

EBPEBP

ESIESI

EDIEDI

SPSP

BPBP

Stack PointerStack Pointer

Base PointerBase Pointer

Source IndexSource Index

Destination IndexDestination Index

1616 비트비트

3232 비트비트

Page 23

Page 24: 3 장 인텔 프로세서의 내부구조

시스템 프로그래밍

세그먼트 레지스터세그먼트 레지스터

Code Segment : CSCode Segment : CSCode Segment : CSCode Segment : CS

Data Segment : DSData Segment : DSData Segment : DSData Segment : DS

Stack Segment : SSStack Segment : SSStack Segment : SSStack Segment : SS

Extra Segment : ESExtra Segment : ESExtra Segment : ESExtra Segment : ES

Page 24

Page 25: 3 장 인텔 프로세서의 내부구조

시스템 프로그래밍

플래그 레지스터의 구성플래그 레지스터의 구성

상위상위

오오버버플플로로우우

하위하위

×× ×× ×× ×× OO DD II TT SS ZZ ×× AA PP CC×× ××

1515 1414 1313 1212 1111 1010 99 88 77 66 55 44 33 22 11 00

인인터터럽럽트트인인에에이이블블

디디렉렉션션

트트랩랩

사사인인

제제로로

보보조조캐캐리리

패패리리티티

캐캐리리

Page 25

Page 26: 3 장 인텔 프로세서의 내부구조

시스템 프로그래밍

세그먼트레지스터와 물리주소세그먼트레지스터와 물리주소

1616 비트비트1616 비트비트 44 비트비트44 비트비트

세그먼트 레지스터값 세그먼트 레지스터값

오프셋오프셋 (offset)(offset)값 값

CPUCPU 로부터 출력되는 실제주소값 로부터 출력되는 실제주소값

Page 26

Page 27: 3 장 인텔 프로세서의 내부구조

시스템 프로그래밍

메모리 공간에서 세그먼트 영역메모리 공간에서 세그먼트 영역

FFFFFH

데이터 세그먼트데이터 세그먼트데이터 세그먼트데이터 세그먼트

코드 세그먼트코드 세그먼트코드 세그먼트코드 세그먼트

스텍 세그먼트스텍 세그먼트스텍 세그먼트스텍 세그먼트

엑스트라 세그먼트엑스트라 세그먼트엑스트라 세그먼트엑스트라 세그먼트

EFFFFH

E0000H

C3FEFH

B3FF0H

7D260H

6D260H6288FH

52B90H

00000H

E000E000E000E000

DSDSDSDS

B3FFB3FFB3FFB3FF

CSCSCSCS

6D266D266D266D26

SSSSSSSS

52B952B952B952B9

ESESESES

×16×16

×16×16

×16×16

×16×16

Page 27

Page 28: 3 장 인텔 프로세서의 내부구조

시스템 프로그래밍

논리주소와 물리주소의 관계논리주소와 물리주소의 관계

1F001F001F001F00

세그먼트값세그먼트값 1F2A51F2A5물리주소물리주소

세그먼트 레지스터값세그먼트 레지스터값 ×16×16 == 세그먼트 물리번지세그먼트 물리번지

++++02A502A502A502A5

02A502A502A502A5

세그먼트세그먼트베이스주소베이스주소 1F0001F000

11 FF 00 00 00

00 22 AA 55++

11 FF 22 AA 55

논리주소논리주소

Page 28

Page 29: 3 장 인텔 프로세서의 내부구조

시스템 프로그래밍

명령어 포인터의 동작명령어 포인터의 동작

F0000F0000F0000F0000

기억장치기억장치코드 세그먼트코드 세그먼트기억장치기억장치코드 세그먼트코드 세그먼트

F0001F0001F0001F0001

8086 CPU8086 CPU8086 CPU8086 CPUEU : F0201 EU : F0201 주소의 주소의 명령 실행명령 실행EU : F0201 EU : F0201 주소의 주소의 명령 실행명령 실행

×16×16

......

......

F0204F0204F0204F0204

F0205F0205F0205F0205

F0206F0206F0206F0206

F0207F0207F0207F0207

CSCSCSCSF00F00

00F00F00

00F020F020

22

F020F020

33

F020F020

44

F020F020

55

F020F020

22

F020F020

33

F020F020

44

F020F020

55

BIUBIUBIUBIU

명명령령큐큐

명명령령큐큐

F020F02066

F020F02066

IPIPIPIP

Page 29

Page 30: 3 장 인텔 프로세서의 내부구조

시스템 프로그래밍

레지스터의 특성레지스터의 특성

• 직접 엑세스 가능한 레지스터– AX, BX, CX, DX

– AH, BH, CH, DH

– AL, BL, CL, DL

– SI, DI

– DS, ES, SS

– BP, SP

• 직접 수정이 가능한 플래그– CF, DF, IF

Page 30

Page 31: 3 장 인텔 프로세서의 내부구조

시스템 프로그래밍

데이터의 표현데이터의 표현

001515 000 ~ 32,7670 ~ 32,767

11

1515 00-32,768 ~ -1-32,768 ~ -1

1515 000 ~ 65,5350 ~ 65,535

부호있는 숫자의 표현

부호없는 숫자의 표현

Page 31

Page 32: 3 장 인텔 프로세서의 내부구조

시스템 프로그래밍

제 제 3 3 장 요약장 요약

• 32 비트 인텔 프로세서 이해

• 8086 프로세서구조 이해 , 명령어길이

• 명령어의 길이와 구성형태를 이해

• 기억장치 모델과 구성형태를 이해

• 주소지정과 데이터 기록을 이해 데이터 , 포인터 , 인덱스 ,

세그먼트 , 플래그레지스터 이해

• 논리주소는 물리주소로 변환됨

• 데이터 표현시 부호비트 사용 유무

Page 32