3 장 인텔 프로세서의 내부구조
DESCRIPTION
3 장 인텔 프로세서의 내부구조. 32 비트 인텔 프로세서 16 비트 인텔 프로세서 기억장치 레지스터 데이터표현. 학습내용. 내부적으로는 32 비트 데이터 버스 외부적으로는 64 비트 데이터 버스 수퍼스칼라 구조. 펜티엄 프로세스. 범용 레지스터 (8 개 ) : 연산항 , 포인터 저장 세그먼트 레지스터 : 메모리 세그먼트 식별 EFLAGS 레지스터 : 실행 되고 있는 프로그램 상태보고 및 애플리케이션 레벨로 제한된 프로세서 제어를 한다 . - PowerPoint PPT PresentationTRANSCRIPT
시스템 프로그래밍
학습내용학습내용
• 32 비트 인텔 프로세서
• 16 비트 인텔 프로세서
• 기억장치
• 레지스터
• 데이터표현
Page 2
시스템 프로그래밍
펜티엄 프로세스펜티엄 프로세스
• 내부적으로는 32 비트 데이터 버스
• 외부적으로는 64 비트 데이터 버스
• 수퍼스칼라 구조
Page 3
시스템 프로그래밍
기본 프로그램 실행 레지스터기본 프로그램 실행 레지스터 (16(16개개 ))
• 범용 레지스터 (8 개 ) : 연산항 , 포인터 저장
• 세그먼트 레지스터 : 메모리 세그먼트 식별
• EFLAGS 레지스터 : 실행 되고 있는 프로그램 상태보고
및 애플리케이션 레벨로 제한된 프로세서 제어를 한다 .
• EIP: 다음에 실행될 명령어를 가리킨다 .
Page 4
시스템 프로그래밍
범용 레지스터의 특별한 사용범용 레지스터의 특별한 사용
• EAX : 연산항과 결과에 대한 누산기 • EBX : 함수나 변수의 주소 저장 ( 특히 DS 세그먼트의 데이터에
대한 포인터 ) • ECX : 문자열과 반복문에 대한 계수기 ( 카운터 역활을 수행하며
반복될 때마다 ECX 값이 자동 감소 ) • EDX : 입출력에 대한 포인터 • ESI : 문자열 연산에 대한 출발항 또는 DS 레지스터가 가리키고
있는 세그먼트의 데이터에 대한 포인터 • EDI : 문자열 연산에 대한 목적항 또는 ES 레지스터가 가리키고
있는 세그먼트의 데이터에 대한 포인터 • ESP : 스택 포인터 (SS 를 기반으로 스택의 최상위 주소를
유지하는 용도로 사용 )• EBP : 스택에 있는 데이터에 대한 포인터 (SS 를 기반으로
스택내의 데이터에 접근하기 위한 기준주소를 저장 ) Page 5
시스템 프로그래밍
범용 레지스터 이름범용 레지스터 이름
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
시스템 프로그래밍
세그먼트 레지스터세그먼트 레지스터
CSDSSSESFSGS
코드세그먼트
데이터세그먼트
스택 세그먼트
데이터세그먼트
데이터세그먼트
데이터세그먼트
Page 7
시스템 프로그래밍
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
시스템 프로그래밍
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
시스템 프로그래밍
명령어의 구성 예명령어의 구성 예
명령어 코드 (25=32)
11 11 00 11 0000 111177 00
4 가지의 주소지정 방식
2 개의 레지스터
명령어의 길이는 레지스터의 개수명령어의 길이는 레지스터의 개수 ,,주소지정 방식의 종류주소지정 방식의 종류 ,, 명령어의 종류에 따라 결정명령어의 종류에 따라 결정
Page 11
시스템 프로그래밍
명령어의 구성 예명령어의 구성 예
명령어 코드 (25=32)
11 11 00 11 0000 111177 00
4 주소지정방식 00 = 직접 01 = 베이스 10 = 인덱스 11 = 베이스 + 인덱스
}}
Page 12
시스템 프로그래밍
명령어의 구성 예명령어의 구성 예
명령어 코드명령어 코드 (2(255=32)=32)
11 11 00 11 0000 111177 00
44 주소지정방식 주소지정방식 0000 == 직접직접 0101 == 베이스베이스 1010 == 인덱스인덱스 1111 == 베이스베이스 ++ 인덱스인덱스
11 == 레지스터 레지스터 AA 00 == 레지스터 레지스터 BB
}}
}}Page 13
시스템 프로그래밍
8086 8086 명령어의 형태명령어의 형태
• 14 개의 기본레지스터– 범용레지스터 : 8 개
– 세그먼트 레지스터 : 4 개
– 명령어 포인트 : 1 개
– 플래그 레지스터 : 1 개
– 명령어에 따라서 범용레지스터를 사용하는 것이 있고 이 경우 ,
필요한 레지스터를 명시하기 위하여 3 비트 필요
Page 14
시스템 프로그래밍
8086 8086 명령어의 형태명령어의 형태
• 레지스터와 데이터버스 : 16 비트– 레지스터 기록 : 1 사이클
• 명령어의 일반적 크기 : 1 단어– 데이터의 크기를 나타내기 위하여 1 비트 필요 (0: 바이트 표
시 , 1: 워드 단위 표시 )
• 주소 지정 방식을 나타내기 위해 5 비트 이용 (4 장에서
수업 )
• 주소버스의 크기 : 20 비트
Page 15
시스템 프로그래밍
기억장치의 모델기억장치의 모델
• 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
시스템 프로그래밍
기억장치의 실제구성기억장치의 실제구성
1048575104857510485751048575
홀수 뱅크
5555
3333
1111
......
......
1048574104857410485741048574
짝수 뱅크
4444
2222
0000
......
......
8086 프로세서
16 비트 데이터
Page 17
시스템 프로그래밍
주소지정에 의한 액세스 효율주소지정에 의한 액세스 효율
기억장치번지
41414141
68686868
64646464......
C1C1C1C1
B4B4B4B4
41414141
00000000
00010001
00020002
0001100011
0001200012
0001300013
짝수 , 홀수 번지의 조합 (1 번 액세스 )
홀수 , 짝수 번지의 조합 (2 번 액세스 )
Page 18
시스템 프로그래밍
데이터 기록시 일반적인 규칙데이터 기록시 일반적인 규칙
• 기억장소 주소는 바이트 단위
• 바이트 주소는 1 씩 증가
• 단어 주소는 2 씩 증가
• N 번지의 단어에 접근
→ N,N+1 바이트에 접근
• N 번지의 긴 단어에 접근
→ N,N+1,N+2,N+3 에 접근
Page 19
시스템 프로그래밍
기억장치에서 단어 배열기억장치에서 단어 배열
기억장치기억장치
2A2A
5151
레지스터레지스터
00
NN
N+1N+1
......
......N+2N+2
단어의 하위 바이트단어의 하위 바이트단어의 상위 바이트단어의 상위 바이트
2A2A5151
001515 77
Page 20
시스템 프로그래밍
레지스터의 종류레지스터의 종류
• 데이터 레지스터– 일시적인 결과 기록
• 포인터 레지스터– 스텍 포인터와 베이스 포인터
• 인덱스 레지스터– 데이터의 주소저장
• 플래그 레지스터– 연산결과의 정보저장
• 세그먼트 레지스터– 세그먼트의 시작 주소저장
Page 21
시스템 프로그래밍
데이터 레지스터데이터 레지스터
AHAH
1616 비트비트
88 비트비트 88 비트비트
BHBH
CHCH
DHDH
ALAL
BLBL
CLCL
DLDL
AXAX
BXBX
CXCX
DXDX
3232 비트비트
EAXEAX
EBXEBX
ECXECX
EDXEDX
Page 22
시스템 프로그래밍
포인터와 인덱스 레지스터포인터와 인덱스 레지스터
SISI
DIDI
ESPESP
EBPEBP
ESIESI
EDIEDI
SPSP
BPBP
Stack PointerStack Pointer
Base PointerBase Pointer
Source IndexSource Index
Destination IndexDestination Index
1616 비트비트
3232 비트비트
Page 23
시스템 프로그래밍
세그먼트 레지스터세그먼트 레지스터
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
시스템 프로그래밍
플래그 레지스터의 구성플래그 레지스터의 구성
상위상위
오오버버플플로로우우
하위하위
×× ×× ×× ×× 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
시스템 프로그래밍
세그먼트레지스터와 물리주소세그먼트레지스터와 물리주소
1616 비트비트1616 비트비트 44 비트비트44 비트비트
세그먼트 레지스터값 세그먼트 레지스터값
오프셋오프셋 (offset)(offset)값 값
CPUCPU 로부터 출력되는 실제주소값 로부터 출력되는 실제주소값
Page 26
시스템 프로그래밍
메모리 공간에서 세그먼트 영역메모리 공간에서 세그먼트 영역
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
시스템 프로그래밍
논리주소와 물리주소의 관계논리주소와 물리주소의 관계
1F001F001F001F00
세그먼트값세그먼트값 1F2A51F2A5물리주소물리주소
세그먼트 레지스터값세그먼트 레지스터값 ×16×16 == 세그먼트 물리번지세그먼트 물리번지
++++02A502A502A502A5
02A502A502A502A5
세그먼트세그먼트베이스주소베이스주소 1F0001F000
11 FF 00 00 00
00 22 AA 55++
11 FF 22 AA 55
논리주소논리주소
Page 28
시스템 프로그래밍
명령어 포인터의 동작명령어 포인터의 동작
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
시스템 프로그래밍
레지스터의 특성레지스터의 특성
• 직접 엑세스 가능한 레지스터– AX, BX, CX, DX
– AH, BH, CH, DH
– AL, BL, CL, DL
– SI, DI
– DS, ES, SS
– BP, SP
• 직접 수정이 가능한 플래그– CF, DF, IF
Page 30
시스템 프로그래밍
데이터의 표현데이터의 표현
001515 000 ~ 32,7670 ~ 32,767
11
1515 00-32,768 ~ -1-32,768 ~ -1
1515 000 ~ 65,5350 ~ 65,535
부호있는 숫자의 표현
부호없는 숫자의 표현
Page 31
시스템 프로그래밍
제 제 3 3 장 요약장 요약
• 32 비트 인텔 프로세서 이해
• 8086 프로세서구조 이해 , 명령어길이
• 명령어의 길이와 구성형태를 이해
• 기억장치 모델과 구성형태를 이해
• 주소지정과 데이터 기록을 이해 데이터 , 포인터 , 인덱스 ,
세그먼트 , 플래그레지스터 이해
• 논리주소는 물리주소로 변환됨
• 데이터 표현시 부호비트 사용 유무
Page 32