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 »çÀÌŬÀÌ ½ÃÀ۵DZâ Àü¿¡ º¸È£°¡ ¸¸Á·µÇ´Â Áö°¡ È®ÀεǸç, º¸È£ Á¡°ËÀº ÁÖ¼Òº¯È¯°ú µ¿½Ã¿¡ ¼öÇàµÇ¹Ç·Î ¼º´ÉÀÇ ¿­È­´Â ¾ø´Ù.

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