350 likes | 584 Views
3 장 인텔 프로세서의 내부구조. 32 비트 인텔 프로세서 16 비트 인텔 프로세서 기억장치 레지스터 데이터표현. 학습내용. 내부적으로는 32 비트 데이터 버스 외부적으로는 64 비트 데이터 버스 수퍼스칼라 구조. 펜티엄 프로세스. 주소 공간. 기본 프로그램 실행 레지스터. 2 32 -1. 8 개의 32 비트 레지스터. 범용 레지스터. 6 개의 16 비트 레지스터. 세그먼트 레지스터. EFLAGS 레지스터. 32 비트. EIP ( 명령어 포인터 레지스터 ).
E N D
32비트 인텔 프로세서 16비트 인텔 프로세서 기억장치 레지스터 데이터표현 학습내용
내부적으로는 32비트 데이터 버스 외부적으로는 64비트 데이터 버스 수퍼스칼라 구조 펜티엄 프로세스
주소 공간 기본 프로그램 실행 레지스터 232-1 8개의 32비트 레지스터 범용 레지스터 6개의 16비트 레지스터 세그먼트 레지스터 EFLAGS 레지스터 32 비트 EIP (명령어 포인터 레지스터) 32 비트 FPU 레지스터 8개의 80비트 레지스터 실수 포인터 데이터 레지스터 0 제어 레지스터 16 비트 상태 레지스터 16 비트 태그 레지스터 16 비트 연산 부호 레지스터 11 비트 FPU 데이터 연산 포인터 레지스터 48 비트 FPU 명령어 포인터 레지스터 48 비트 SSE 와 SSE2 레지스터 MMX 레지스터 MXSCR 레지스터 32 비트 8개의 64비트 레지스터 8개의 128비트 레지스터 MMX 레지스터 XMM 레지스터 32비트 프로세스의 기본 실행 환경
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 Single-Instruction Multiple-Data(SIMD)
Single-Instruction Multiple-Data(SIMD) Pentium II Pentium with MMX Pentium III Pentium 4 Intel Xeon
범용 레지스터(8개) : 연산항, 포인터 저장 세그먼트 레지스터 : 메모리 세그먼트 식별 EFLAGS 레지스터 : 실행 되고 있는 프로그램 상태보고 및 애플리케이션 레벨로 제한된 프로세서 제어를 한다. EIP: 다음에 실행될 명령어를 가리킨다. 기본 프로그램 실행 레지스터(16개)
EAX : 연산항과 결과에 대한 누산기 EBX : DS 세그먼트의 데이터에 대한 포인터 ECX : 문자열과 반복문에 대한 계수기 EDX : 입출력에 대한 포인터 ESI : 문자열 연산에 대한 출발항 또는 DS 레지스터가 가리키고 있는 세그먼트의 데이터에 대한 포인터 EDI : 문자열 연산에 대한 목적항 또는 ES 레지스터가 가리키고 있는 세그먼트의 데이터에 대한 포인터 ESP : 스택 포인터 EBP : 스택에 있는 데이터에 대한 포인터 범용 레지스터의 특별한 사용
31 7 8 0 16-bit 16 15 32-bit AH AL AX EAX BH BL EBX BX CH CL CX ECX DH DL DX EDX BP EBP SI ESI DI EDI SP ESP 범용 레지스터 이름
코드 세그먼트 데이터 세그먼트 스택 세그먼트 CS DS SS ES FS GS 데이터 세그먼트 데이터 세그먼트 데이터 세그먼트 세그먼트 레지스터
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 0 0 0 0 0 0 0 0 0 0 ID VIP VIF AC VM RF 0 NT IOPL OF DF IF TF SF ZF 0 AF 0 PF 1 C F X ID FLAG (ID) X Virtual Interrupt Pending (VIP) X Virtual Interrupt Flag (VIF) X Alignment Check (AC) X Virtual-8085 Mode (VM) XResume 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) Flag C 제어 (Control) Flag X 시스템 (System) Flag 예약 비트 현재 사용하지는 않는다.
8086 프로세서 구조 AH . . DH AL . . DL (EU) (BIU) Adder SP,BP,SI,DI CS DS SS ES IP 명 령 어 실 행 버스 제어 로직 임시 레지스터 내부 커뮤 니케이션 레지스터 EU 제어 시스템 ALU 명령큐 버퍼 플래그레지스터
명령어의 형태 명령어 코드 오퍼랜드 } 주소지정방식 레지스터
1 1 0 1 0 1 1 0 명령어의 구성 예 7 0 명령어 코드(25=32) 4가지의 주소지정 방식 2개의 레지스터 명령어의 길이는 레지스터의 개수, 주소지정 방식의 종류,명령어의 종류에 따라 결정
1 1 0 1 0 1 1 0 명령어의 구성 예 7 0 명령어 코드(25=32) } 4주소지정방식 00 = 직접 01 = 베이스 10 = 인덱스 11 = 베이스+인덱스
1 1 0 1 0 1 1 0 명령어의 구성 예 7 0 명령어 코드(25=32) } 4주소지정방식 00=직접 01=베이스 10=인덱스 11=베이스+인덱스 } 1=레지스터 A 0=레지스터 B
14개의 기본레지스터 범용레지스터 : 8개 세그먼트 레지스터 : 4개 명령어 포인트 : 1개 플래그 레지스터 : 1개 필요한 레지스터를 명시하기 위하여 3비트 필요 8086 명령어의 형태
레지스터와 데이터버스 : 16비트 레지스터 기록 : 1 사이클 명령어의 일반적 크기 : 1단어 데이터의 크기를 나타내기 위하여 1 비트 필요 주소 지정 방식을 나타내기 위해 5비트 이용 주소버스의 크기 : 20비트 8086 명령어의 형태
8086 프로세서의 예 0 0 1 바이트 0 바이트 바이트 0 1 3 2 1 2 . . . . N N+1 N-1 N-1 N N N+2 N+3 N N+2 . . . . FFFFE FFFFF FFFFE FFFFF 기억장치의 모델 바이트주소 단어주소 좌 측 바 이 트 짝 수 우 측 바 이 트 홀 수 ( ( ( ( 7 0 15 8 7 0
기억장치의 실제구성 홀수 뱅크 짝수 뱅크 1048574 1048575 . . . . . . 4 5 2 3 0 1 16비트 데이터 8086 프로세서
주소지정에 의한 액세스 효율 기억장치 번지 41 0000 짝수,홀수 번지의 조합(1번 액세스) 68 0001 64 0002 . . . C1 00011 홀수,짝수 번지의 조합(2번 액세스) B4 00012 41 00013
기억장소 주소는 바이트 단위 바이트 주소는 1씩 증가 단어 주소는 2씩 증가 N번지의 단어에 접근 → N,N+1 바이트에 접근 N번지의 긴 단어에 접근 → N,N+1,N+2,N+3에 접근 데이터 기록시 일반적인 규칙
기억장치에서 단어 배열 레지스터 51 2A 15 7 0 기억장치 0 . . . 단어의 하위 바이트 단어의 상위 바이트 2A N 51 N+1 N+2 . . .
데이터 레지스터 일시적인 결과 기록 포인터 레지스터 스텍 포인터와 베이스 포인터 인덱스 레지스터 데이터의 주소저장 플래그 레지스터 연산결과의 정보저장 세그먼트 레지스터 세그먼트의 시작 주소저장 레지스터의 종류
데이터 레지스터 32비트 16비트 8비트 8비트 EAX AX AH AL EBX BX BH BL ECX CX CH CL EDX DX DH DL
포인터와 인덱스 레지스터 32비트 16비트 ESP Stack Pointer SP Base Pointer EBP BP Source Index SI ESI Destination Index EDI DI
세그먼트 레지스터 Code Segment : CS Data Segment : DS Stack Segment : SS Extra Segment : ES
플래그 레지스터의 구성 상위 하위 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 O D S Z A P C I T × × × × × × × 오 버 플 로 우 트 랩 보 조 캐 리 패 리 티 디 렉 션 제 로 인 터 럽 트 인 에 이 블 사 인 캐 리
세그먼트레지스터와 물리주소 16비트 4비트 세그먼트 레지스터값 오프셋(offset)값 CPU로부터 출력되는 실제주소값
메모리 공간에서 세그먼트 영역 FFFFFH DS EFFFFH ×16 E000 데이터 세그먼트 E0000H CS C3FEFH ×16 코드 세그먼트 B3FF B3FF0H 7D260H SS 스텍 세그먼트 ×16 6D26 6D260H 6288FH ES 엑스트라 세그먼트 ×16 52B90H 52B9 00000H
논리주소와 물리주소의 관계 1F2A5 물리주소 세그먼트값 세그먼트 베이스주소 1F000 1F00 세그먼트 레지스터값×16 =세그먼트 물리번지 02A5 + 02A5 0 1 F 0 0 논리주소 A 5 2 0 + 1 F 2 A 5
명령어 포인터의 동작 8086 CPU 기억장치 코드 세그먼트 EU : F0201 주소의 명령 실행 F0000 ×16 CS F0001 F0202 F0203 F0204 F0205 F000 . . . 명 령 큐 F0204 IP F0205 F0206 F0206 F0207 BIU
직접 엑세스 가능한 레지스터 AX, BX, CX, DX AH, BH, CH, DH AL, BL, CL, DL SI, DI DS, ES, SS BP, SP 직접 수정이 가능한 플래그 CF, DF, IF 레지스터의 특성
부호있는 숫자의 표현 데이터의 표현 15 0 0 ~ 32,767 0 15 0 -32,768 ~ -1 1 부호없는 숫자의 표현 15 0 0 ~ 65,535
32비트 인텔 프로세서 이해 8086 프로세서구조 이해, 명령어길이 명령어의 길이와 구성형태를 이해 기억장치 모델과 구성형태를 이해 주소지정과 데이터 기록을 이해 데이터, 포인터, 인덱스, 세그먼트, 플래그레지스터 이해 논리주소는 물리주소로 변환됨 데이터 표현시 부호비트 사용 유무 제 3 장 요약