Intel i80x86 CPU Architecture

1. Intel i8086/i8088 Microprocessor

CPU 내부 구조(Internal Architecture)

 

Memory Mapping

 

img5.gif

1.1.2 Memory 구조



1.1.3 I/O Interface


1.1.4 Interrupt System


1. Interrupt 종류

3. Interrupt Vector Table(Interupt Vector Table; IVT)


1.1.5 Real-mode


1.1.6 DOS의 Memory  map


1.2. Protected Mode

1. i80286 Architecture


2. Protected-mode


1. 16-bit Segment Register (CS, DS, SS, ES)

15                                                                                                 3

2

1                  0

INDEX

TABLE

RPL

Fig- A.6 80286 Selector 구조

2. 16-bit 일반 Register(AX, BX, CX, DX, BP, SI, DI, SP)

3. 16-bit IP, 16-bit Status Register(Flag Status Register, 머신 Status Register)

4. 16-bit Selector(TR, LDTR), 48-bit GDTR, IDTR

1.2.3 Mode 전환


1.2.4 Protected-mode 


1. i80286 CPU의 Protected-mode

2. Segment Descriptor

Bit

0 0 0 0(reserved) 0 0 0 0

7

0 0 0 0(reserved) 0 0 0 0

6

P

DPL

S

TYPE

5

Segment Base(D16 - D23)

4

Segment Base(D8 - D15)

3

Segment Base(D0 - D7)

2

Segment Limit (D8 - D15)

1

Segment Limit (D0 - D7)

0

Fig- A.7 80286 Segment Descriptor 구조  


3. GDT(Global Descriptor Table)

4. LDT(Local Descriptor Table)

5. IDT(Interrupt Descriptor Table)

6. TSS(Task State Segment) : Task 수행을 복귀시키는데 필요한 Processor Status정보를 포함한다.

7. TSS Descriptor : TSS의 Base Address와 크기 정보를 갖으며, GDT에 위치한다.

8. TR  : GDT 내에 TSS Descriptor offset 위치 정보를 갖는 Selector

9. Gate Descriptor

1.2.5 Memory 구조


  1. Protected-mode로 동작하는 경우에는 총 참조가능 주소 공간은 16MB(24bits)이며, Segmentation을 지원한다(Paging은 지원하지 않음).
  2. Protected-mode Segmentation Memory 관리구조는 'Selector'와 'Physical Address' 사이에 'Segment Descriptor'를 이용한 간접방식이다.

1.2.6 Interrupt와 예외














1.2.7 Protection Mechanism


1. 보호는 한 Task가 다른 Task의 Data나 명령을 침해하는 것을 막아 신뢰성 있는 Multitasking이 가능하게 한다.

2. Program 개발도중에는 Program 버그에 대한 보다 분명한 Fig-을 제공할 수 있으며, 엔드유저 Program에서는 Program이 실패하는 경우라도 그 영향이 다른 Program에 전파되지 않게 한다.

보호는 Segment와 Page 모두에 적용될 수 있는데, i80286은 Paging을 지원하지 않으므로 Segment Level에서의 보호 mechanism만 있다.

3. Memory 참조시에 Memory 사이클이 시작되기 전에 보호가 만족되는 지가 확인되며, 보호 점검은 주소변환과 동시에 수행되므로 성능의 열화는 없다.

4. 보호 점검에는 다음이 있다.

5. 보호 점검 위반시에는 fault(Fault)가 발생된다.

6. 타입 검사

7. Limit 검사 : Segment Descriptor의 Limit field는 Program이 Segment 밖으로 주소 지정하는 것으로 막는다.

8. 특권 Level(Privilege Levels) 검사

9. Protected-mode에서의 명령 set의 제한

1.2.8 Windows-3.x의 Memory  map





1-3. Intel i386 Microprocessor의 Protected-mode 및 Virtual-86 Mode(VM-86)

1-3.1 개요


 

  1. 32-bit Address Bus, Data Bus를 갖는 32-bit Processor로 Real-mode, Protected-mode, Virtual 86-mode(이하 VM-86)의 3가지 -mode가 있다.
  2. Real-mode는 i8086/i8088과 (하방)호환되며, 32-bit Register 조작, 확장된 Real-mode 명령을 더 지원한다.
  3. Protected-mode는 4GB(32 bits) 주소 공간을 갖으며, Segment Memory 뿐만 아니라 Flat Memory도 지원한다. Segment 크기는 최대 4GB이며, 마찬가지로 Flat Memory 크기도 최대 4GB이다. 또한 가상 Memory 지원으로 Paging을 추가 지원한다. VM-86는 O/S가 여러 Real-mode 응용을 수행할 수 있도록 하기 위해 특별히 고안됐다(사실상 Windows를 위해).
  4. VM-86는 Real-mode와 동작이 유사하나 VM-86 응용들이 서로 방해되지 않도록 하기 위해 몇 가지 다른 mechanism이 지원된다.
    • Paging 허용
    • 각 VM-86 응용에 따른 각각의 I/O 포트 접근 허용의 제어가 가능
    • Interrupt Flag에 영향을 미치는 명령의 트랩이 가능

1-3.2 Real-mode


 1. Real-mode Processor 구조



2. 확장된 리얼 -mode 명령

1-3.3 Protected-mode의 이해


1-3.4 Protected-mode Software 구조


1-3.4.1 Protected-mode의 Processor Model

1-3.4.2 Control Register



1-3.5 Interrupts


1-3.6 Windows-95/98의 Interrupt 처리


1-3.7 Protected-mode Memory 관리


img2.gif

1-3.8 Flat Model


1-3.9 Multi-Segment Model


1-3.10 Segment Translation



 i286 Segment Descriptor에서 예약된 상위 2바이트의 형식이 추가 결정된 점 외에 i286과 동일하다.

 

Bit

Segment Base(D24 - D31)

7

G

X(*)

0

AVL

Segment Limit(D16-D19)

6

P

DPL

S

TYPE

A

5

Segment Base(D16 - D23)

4

Segment Base(D8 - D15)

3

Segment Base(D0 - D7)

2

Segment Limit(D8 - D15)

1

Segment Limit(D0 - D7)

0

Fig- A.20(a) 80386 Segment Descriptor 구조  




1-3.11 Paging 주소 변환 mechanism


  1. Paging mechanism은 Segmentation을 통해 변환된 Linear Address를 3부분으로 구성된 것으로 처리한다.



2. Paging 주소 변환 mechanism은 다음과 같다.


3. Translation Lookaside Buffer에는 최근 사용된 Page Table entry들이 Cache 되어 있다(32개까지 가능).


1-3.12 Combining Segment and Page Translation


1- Segmentation과 Paging이 결합된 주소 변환 mechanism은 다음 Fig-과 같이 정리된다.



1-3.14 Multitasking 지원 자료구조


2. TSS Descriptor


3. Task Register

4. Task Gate Descriptor



5 Task Address Space



Microsoft (R) Macro Assembler Version 5.104/10/2

1 PAGE 120,200
2
3                             .386P
4                             ; REF : The Intel Microprocessor P633
5
6 0000                        DATA     Segment AT0000H
7 0000                                 ORG    0000H
8                             ;===============================================
9                             ; First 32bit Interrupt Table
10                             ;-----------------------------------------------
11 0100                                 ORG    0100H
12
13                             ;===============================================
14                             ; Global Segment Descriptor
15                             ;-----------------------------------------------
16                             ; GDT
17 0100 0000000000000000                DES0DQ0                                ; Null Descriptor
18
19                             ;===============================================
20                             ; Code Segment Descriptor
21                             ;-----------------------------------------------
22 0108 FFFF                    DES1:   DW     0FFFFH                          ; Limit 4GB
23 010A 0000                            DW     0                               ; Base Address = 0000000H
24 010C 00                              DB     0
25 010D 9E                              DB     10011110B                       ; 9EH Code Segment
26 010E 8F                              DB     8FH                             ; G=1
27 010F 00                              DB     0
28                             ;===============================================
29                             ; Data Segment Descriptor
30                             ;-----------------------------------------------
31 0110 FFFF                    DES2:   DW     0FFFFH                          ; Limit 4GB
32 0112 0000                            DW     0                               ; Base Address = 0000000H
33 0114 00                              DB     0
34 0115 92                              DB     10010010B                       ; 92H Data Segment
35 0116 8F                              DB     8FH                             ; G=1
36 0117 00                              DB     0
37                             ;===============================================
38                             ; IDT Table Data
39                             ;-----------------------------------------------
0
1 0118 00FF                    IDT      DW      0FFH                           ; Set Limit to FFH
2 011A 0000000000000000                 DQ      0                              ; Base Address 0H
43
44                             ;===============================================
45                             ; GDT Table Data
46                             ;-----------------------------------------------
47
48 0122 0017                    GDT     DW      017H                           ; Set Limit to 17H
49 0124 0001000000000000                DQ      100H                           ; Base Address 100H
50 012C                         DATA    ENDS
51
52                             ;===============================================
53
54                             ;-----------------------------------------------
55 0000                         CODE    Segment USE16
56                              Assume  CS:CODE, DS:DATA
57 0000 B8 ---- R               START:  MOV    AX,DATA                         ; Load DS
58 0003 8E D8                           MOV    DS,AX
59 0005 67| 0F 01 1D 00000118           LIDT   fword ptr IDT                   ; Load IDTR
60 R
61 000D 67| 0F 01 15 00000122           LGDT   fword ptr GDT                   ; Load GDTR
62 R
63 0015 0F 20 C0                        MOV    EAX, CR0
64 0018 0C 01                           OR     AL,1                            ; Set PE
65 001A 0F 22 C0                        MOV    CR0, EAX
66 001D EB 01 90                        JMP    START1                          ; Near jump
67 0020                          START1:
68 0020 B8 0010                         MOV    AX,10H                          ; Selector 2
69 0023 8E D8                           MOV    DS,AX
70 0025 8E C0                           MOV    ES,AX
71 0027 8E D0                           MOV    SS,AX
72 0029 8E E0                           MOV    FS,AX
73 002B 8E E8                           MOV    GS,AX
74 002D 66| BC FFFFFFFF                 MOV    ESP,0FFFFFFFFH
75
76 0033                                 CODE   ENDS
77                                      END    START
 Microsoft (R) Macro Assembler Version 5.104/10/2                
Symbols-1                                                      
                                                                
                                                                
Segments and Groups:                                            
                                                                
N a m e Size LengthAlign Combine Class                         
                                                                
CODE . . . . . . . . . . . . . . 16 Bit   0033  PARA NONE       
DATA . . . . . . . . . . . . . . 32 Bit   012C  AT0000          
                                                                
Symbols:                                                        
                                                                
N a m e                         Type     Value Attr            
                                                                
DES0 . . . . . . . . . . . . . . L QWORD  0100  DATA            
DES1 . . . . . . . . . . . . . . L NEAR   0108  DATA            
DES2 . . . . . . . . . . . . . . L NEAR   0110  DATA            
GDT  . . . . . . . . . . . . . . L WORD   0122  DATA            
ID T . . . . . . . . . . . . . . L WORD   0118  DATA            
START  . . . . . . . . . . . . . L NEAR   0000  CODE            
START1 . . . . . . . . . . . . . L NEAR   0020  CODE            
                                                                
@CPU . . . . . . . . . . . . . .   TEXT   3471                  
@FILENAME  . . . . . . . . . . .   TEXT   protect               
@VERSION . . . . . . . . . . . .   TEXT   510               

1-4. VM-86(VM-86)

1. Overview


 

2. VM-86의 Memory 관리


VM-86의 주소 지정은 기본적으로 Real-mode와 Paging의 결합으로 이루어진다.

3. VM-86의 Interrupt 처리


 

4. V86 -mode I/O Interface


5. V86 Task의 구조


V86 Task는 i8086 Program과 Intel Processor(386 이상) 고유 Code인 Virtual-Machine Monitor로 구성되며, 이 V86 Task는 TSS로 표현되어야 한다.


 Reference

http://raptor.springnote.com/pages/420655