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

Preview:

DESCRIPTION

3 장 인텔 프로세서의 내부구조. 32 비트 인텔 프로세서 16 비트 인텔 프로세서 기억장치 레지스터 데이터표현. 학습내용. 내부적으로는 32 비트 데이터 버스 외부적으로는 64 비트 데이터 버스 수퍼스칼라 구조. 펜티엄 프로세스. 주소 공간. 기본 프로그램 실행 레지스터. 2 32 -1. 8 개의 32 비트 레지스터. 범용 레지스터. 6 개의 16 비트 레지스터. 세그먼트 레지스터. EFLAGS 레지스터. 32 비트. EIP ( 명령어 포인터 레지스터 ). - PowerPoint PPT Presentation

Citation preview

Mi Jung Choimjchoi@kangwon.ac.kr

Dept. of Computer Science

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

시스템 프로그래밍

학습내용학습내용

• 32 비트 인텔 프로세서

• 16 비트 인텔 프로세서

• 기억장치

• 레지스터

• 데이터표현

Page 2

시스템 프로그래밍

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

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

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

• 수퍼스칼라 구조

Page 3

시스템 프로그래밍

3232 비트 프로세스의 기본 실행 비트 프로세스의 기본 실행 환경환경

8 개의 32 비트레지스터

6 개의 16 비트레지스터

32 비트

32 비트

8 개의 80 비트 레지스터

16 비트16 비트16 비트

11 비트48 비트48 비트

8 개의 64 비트레지스터 8 개의 128 비트

레지스터

범용 레지스터

세그먼트 레지스터

EFLAGS 레지스터32 비트 EIP ( 명령어 포인터 레지스터 )

실수 포인터 데이터 레지스터

제어 레지스터상태 레지스터태그 레지스터연산 부호 레지스터

FPU 명령어 포인터 레지스터

FPU 데이터 연산 포인터 레지스터

MMX 레지스터XMM 레지스터

MXSCR 레지스터

FPU 레지스터

기본 프로그램 실행 레지스터주소 공간

MMX 레지스터SSE 와 SSE2 레지스터

232-1

0

Page 4

시스템 프로그래밍

Single-Instruction Multiple-Single-Instruction Multiple-Data(SIMD)Data(SIMD)

• Beginning with the Pentium II and Pentium with Intel MMX technology processor families, four extensions have been introduced into the IA-32 architecture to permit IA-32 processors to perform single-instruction multiple-data (SIMD) operations

• These extensions include the MMX technology, SSE extensions, SSE2 extensions, and SSE3 extensions

• Each of these extensions provides a group of instructions that perform SIMD operations on packed integer and/or packed floating-point data elements contained in the 64-bit MMX or the 128-bit XMM registers

Page 5

시스템 프로그래밍

Single-Instruction Multiple-Single-Instruction Multiple-Data(SIMD)Data(SIMD)

Pentium IIPentium with MMX

Pentium III

Pentium 4Intel Xeon

Page 6

시스템 프로그래밍

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

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

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

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

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

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

Page 7

시스템 프로그래밍

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

• EAX : 연산항과 결과에 대한 누산기 • EBX : DS 세그먼트의 데이터에 대한 포인터 • ECX : 문자열과 반복문에 대한 계수기 • EDX : 입출력에 대한 포인터 • ESI : 문자열 연산에 대한 출발항 또는 DS 레지스터가

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

가리키고 있는 세그먼트의 데이터에 대한 포인터 • ESP : 스택 포인터 • EBP : 스택에 있는 데이터에 대한 포인터

Page 8

시스템 프로그래밍

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

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 9

시스템 프로그래밍

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

CSDSSSESFSGS

코드세그먼트

데이터세그먼트

스택 세그먼트

데이터세그먼트

데이터세그먼트

데이터세그먼트

Page 10

시스템 프로그래밍

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)X 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 11

시스템 프로그래밍

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

AHAH....DHDH

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

ALUALU

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

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

EUEU제어제어시스템시스템

AdderAdder

CSCSDSDSSSSSESESIPIP

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

명령큐 버퍼명령큐 버퍼

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

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

Page 12

시스템 프로그래밍

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

명령어 코드명령어 코드

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

오퍼랜드오퍼랜드

}}

Page 13

시스템 프로그래밍

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

명령어 코드 (25=32)

11 11 00 11 0000 111177 00

4 가지의 주소지정 방식

2 개의 레지스터

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

Page 14

시스템 프로그래밍

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

명령어 코드 (25=32)

11 11 00 11 0000 111177 00

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

}}

Page 15

시스템 프로그래밍

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

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

11 11 00 11 0000 111177 00

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

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

}}

}}Page 16

시스템 프로그래밍

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

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

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

– 명령어 포인트 : 1 개

– 플래그 레지스터 : 1 개

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

Page 17

시스템 프로그래밍

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

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

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

• 주소 지정 방식을 나타내기 위해 5 비트 이용

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

Page 18

시스템 프로그래밍

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

• 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 19

시스템 프로그래밍

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

1048575104857510485751048575

홀수 뱅크

5555

3333

1111

......

......

1048574104857410485741048574

짝수 뱅크

4444

2222

0000

......

......

8086 프로세서

16 비트 데이터

Page 20

시스템 프로그래밍

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

기억장치번지

41414141

68686868

64646464......

C1C1C1C1

B4B4B4B4

41414141

00000000

00010001

00020002

0001100011

0001200012

0001300013

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

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

Page 21

시스템 프로그래밍

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

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

• 바이트 주소는 1 씩 증가

• 단어 주소는 2 씩 증가

• N 번지의 단어에 접근

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

• N 번지의 긴 단어에 접근

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

Page 22

시스템 프로그래밍

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

기억장치기억장치

2A2A

5151

레지스터레지스터

00

NN

N+1N+1

......

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

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

2A2A5151

001515 77

Page 23

시스템 프로그래밍

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

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

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

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

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

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

Page 24

시스템 프로그래밍

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

AHAH

1616 비트비트

88 비트비트 88 비트비트

BHBH

CHCH

DHDH

ALAL

BLBL

CLCL

DLDL

AXAX

BXBX

CXCX

DXDX

3232 비트비트

EAXEAX

EBXEBX

ECXECX

EDXEDX

Page 25

시스템 프로그래밍

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

SISI

DIDI

ESPESP

EBPEBP

ESIESI

EDIEDI

SPSP

BPBP

Stack PointerStack Pointer

Base PointerBase Pointer

Source IndexSource Index

Destination IndexDestination Index

1616 비트비트

3232 비트비트

Page 26

시스템 프로그래밍

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

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 27

시스템 프로그래밍

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

상위상위

오오버버플플로로우우

하위하위

×× ×× ×× ×× 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 28

시스템 프로그래밍

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

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

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

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

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

Page 29

시스템 프로그래밍

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

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 30

시스템 프로그래밍

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

1F001F001F001F00

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

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

++++02A502A502A502A5

02A502A502A502A5

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

11 FF 00 00 00

00 22 AA 55++

11 FF 22 AA 55

논리주소논리주소

Page 31

시스템 프로그래밍

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

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 32

시스템 프로그래밍

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

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

– AH, BH, CH, DH

– AL, BL, CL, DL

– SI, DI

– DS, ES, SS

– BP, SP

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

Page 33

시스템 프로그래밍

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

001515 000 ~ 32,7670 ~ 32,767

11

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

1515 000 ~ 65,5350 ~ 65,535

부호있는 숫자의 표현

부호없는 숫자의 표현

Page 34

시스템 프로그래밍

제 제 3 3 장 요약장 요약

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

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

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

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

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

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

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

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

Page 35

Recommended