Docstoc

Computer Architecture - Download as PowerPoint

Document Sample
Computer Architecture - Download as PowerPoint Powered By Docstoc
					A Lecture on
Computer Architecture
For Readers
    프로그래머입장에서 바라본
    컴퓨터 구조와 보호 모드

    컴퓨터 구조에 대한 이해;
    자신이 작성한 프로그램이 어떻게 수행될지
    좀더 세밀하게 이해하기 위해서는 컴퓨터
    구조에 대한 이해가 필수적이다.

    정 덕 영
    Software Design & Developer
    human@ahnlab.com
    andymail@korea.com
2
Agenda

    First Computer
       ENIAC
       von Neumann

    80xx
    Protected Mode
       Descriptor
       PDE, PTE
       IDT (Interrupt Descriptor Table)
       I/O Privilege

    Organization
       Pipe Line
       Super scalar
       Cache
       Hyper Threading

    Procedure & Stack
       Stack
       Stack Frame
       Calling Conventions
       Stack Back Tracing

3
    First computer




4
ENIAC - background


    Electronic Numerical Integrator And Computer
    University of Pennsylvania
    Started 1943
    Finished 1946
     Too late for war effort

    Used until 1955
    Programmed manually by switches (hard wired)
    18,000 vacuum tubes
    30 tons
    15,000 square feet
    140 kW power consumption

5   5,000 additions per second
von Neumann


    Stored Program concept
    Main memory storing programs and data
    ALU operating on binary data
    Control unit interpreting instructions from memory and executing
    Input and output equipment operated by control unit
    Princeton Institute for Advanced Studies
      IAS

    Completed 1952




6
Structure of von Neumann machine




7
     Structure of ISA (Instruction Set Architecture)


        1000 x 40 bit words
          Binary number
          2 x 20 bit instructions

        Set of registers (storage in CPU)
          Memory Buffer Register
 명령어               오퍼랜드                   오퍼랜드
가져오기               가져오기                   결과 저장
                                                        프로세서와 외부 모듈과

          Memory Address Register
                                                          의 데이터 교환



                                                        프로세서 내부의 동작

 명령어
          Instruction Register
          명령어
                    Source
                                    데이터   Destination
                   오퍼랜드                   오퍼랜드
주소 계산     해석                         연산

          Instruction Buffer Register
                   주소 계산                  주소 계산


                  주소 지정 방식
          Program Counter
                (Addressing Mode)



          Accumulator
          Multiplier Quotient




 8
    80xx




9
8086 Registers

 15         7           0
      AH           AL       AX: Accumulator register
      BH           BL       BX: Base register
      CH           CL       CX: Count register
      DH           DL       DX: Data register


            SP              Stack Pointer
            BP              Base Pointer


            SI              Source Index
            DI              Destination Index


            IP              Instruction Pointer


           Flags            Status flags


            CS              Code Segment
            DS              Data Segment
            SS              Stack Segment
            ES              Extra Segment




10
8bit, 16bit

          8비트           8비트            8비트           8비트
                                                                                    8비트 크기



     15         8   7         0   15         8   7         0
      00000010 11011100            00001001 11000100



                1500                         2500




                                                                                     메모리

                                       20Bit 주소 버스             주소
                                                               선택기
                                                                                             0 ~ 1,048,575




                         CPU




                                                                                     읽고/쓰기
                                                                                      메모리
                                                                     16Bit 데이터 버스




11
  80386 Registers

                                                                              31                                                                                                  0
         31   16 15          7           0
                                                                        CR0 PG                                                                           ET TS EM MP PE
  EAX                  AH           AL       AX: Accumulator register
                                                                        CR1
  EBX                  BH           BL       BX: Base register          CR2                                    Page fault linear address
  ECX                  CH           CL       CX: Count register         CR3                       PDBR

  EDX                  DH           DL       DX: Data register                                                        Control Register


                                                                              31                                                                                                      0
  ESP                        SP              Stack Pointer
                                                                        DR0                                 Linear address for break point 0
  EBP                        BP              Base Pointer
                                                                        DR1                                 Linear address for break point 1
                                                                        DR2                                 Linear address for break point 2
   ESI                       SI              Source Index               DR3                                 Linear address for break point 3
  EDI                        DI              Destination Index          DR4
                                                                        DR5
                                                                        DR6                                    BT BS BD                                          B3 B2 B1 B0
   EIP                       IP              Instruction Pointer
                                                                        DR7    len3 RW3 len2 RW2 len1 RW1 len0 RW0        GD         G3 LE G3 L3 G2 L2 G1 L1 G0 L0


EFlags                      Flags            Status flags                                                              Debug Register


              CS             CS
              DS             DS
              SS             SS                                           31                                              12 11 10       9   8   7   6   5                        0
              ES             ES              Segment Register           TR6                Linear Address                    V   D D# U U# W W#                               C

              FS             SS                                         TR7               Physical Address                                                   H       RP
                                                                                                                                                         5       4        2
              GS             ES
                                                                                                                     Test Register


                   General Register




  12
     Protected Mode




13
Protected Mode


                 Application Code
                      PL = 3        특별한 방법    Applications
                                    에 의해 접근
                     PL = 2
                                              Operating System
                                                  Services
                     PL = 1



                    OS Code                   Operating System
                     PL = 0                        Kernel




14
     Protected Mode – Memory Access


                                                                                  Logical(Virtual) Address

                             세그먼트 레지스터             메모리 주소



                          Descriptor table


                                                                                         Segmentation




                               Segment
                               Descriptor



                                                         +                            Linear Address




                          선형 주소             DIR   Page          Offset




                    Page Directory
                                                     Page Table          실제 메모리
              CR3                                                                           Paging




                          Page
                                                             Page




                                                                                             Physical
                                                                                             Address



15
     Protected Mode – Descriptor Table

                                                     Global Descriptor                                       Local Descriptor
                       GDTR                            Table (GDT)                                             Table (LDT)

            GDT Size GDT Base Address                         Entry 0                                            Entry 0
                                                              Entry 1                                            Entry 1
                                                                            TI = 0                TI = 1
                                                                  ...                                              ...




                                                   Segment Descriptors                                     Segment Descriptors
                                                           …                                                       …




                                                                  ...                                              ...
                                                              Entry n                                            Entry n
                              15                      3       2         0
                                        Index          TI RPL

                                                                                     Index   TI    RPL
                                      세그먼트 레지스터
                                                                                 TI 비트가 0일 경우 GDT 참조
                                                                                 TI 비트가 1일 경우 LDT 참조

             1B                   0000000000011          0       11



               8                  0000000000001       0          00

16
     Protected Mode – Descriptor

        63            56 55            52 51      48 47                44               40 39                   16 15                  0

              Base Bits                    Limit Bits                                           Base Bits             Limit Bits
                            G D    X   U                P   DPL        S     TYPE       A
              (31 ~ 24)                    (19~16)                                              (23 ~ 0)              (15 ~ 0)


                                                             43               42              41

                                                            Code/           Expand-
                                                                                             Write
                                                             Data            Down

                   0으로 세팅된 경우 데이터로 사용됨

         63               56 55        52 51       48 47               44               40 39                   16 15                  0

              Base Bits                    Limit Bits                                              Base Bits              Limit Bits
                             G D   X   U                P    DPL        S    TYPE        A
              (31 ~ 24)                    (19~16)                                                 (23 ~ 0)               (15 ~ 0)


                                                                  43               42              41

                                                            Code/
                                                                            Conforming             Read
                                                             Data

                  1으로 세팅된 경우 코드로 사용됨




                                                  System 비트가 1로 세팅된 경우

                                                                                                                           시스템 비트가 0로 세팅되어짐


                                                             63                    56 55                52 51       48 47                  44          39               16 15            0

                                                                    Base Bits                                Limit Bits                                     Base Bits       Limit Bits
                                                                                        G D        X    U                   P   DPL        S    TYPE
                                                                    (31 ~ 24)                                (19 ~16)                                       (23 ~ 0)        (15 ~ 0)



                                                                                                            시스템 세그먼트 디스크립터(System Segment descriptor)



17
     Protected Mode – updating segment


데이터 세그먼트 갱신 (DS, ES, FS, GS)




     스택 세그먼트 갱신 (SS)




18
     Protected Mode – call gate


코드 세그먼트 갱신 (CS)


                       셀렉터 :      오프셋


       Call gate
       Descriptor                                     콜게이트의
                                                       오프셋
                       셀렉터


                                             31               0          31                      0
     Code Descriptor                 낮은 주소                                                           낮은 주소




                                                                  콜게이트
                               SS : ESP
                                                   PARAM3
                                                                                                         SS : ESP
                                                   PARAM2                           EIP
                                                   PARAM1                     XX          CS
                                                                                   PARAM3
                                                                                   PARAM2
                                                                                   PARAM1
     디스크립터 테이블               행선 코드 세그먼트
                                                                                    ESP
                                                                              XX            SS
                                     높은 주소                                                           높은 주소

                                                  RING 3 스택                   RING 0 스택                      TSS의
                                                                                                             SS0:ESP0

19
     Protected Mode – Jump Kernel using Interupt
                                       IDTR Register
               47                                   16 15                 0
                                                                                               CreateFile() 호출
                                                User Application
                      32Bit Linear Base Address       16Bit Segment Limit


                                                                                               NTCreateFile() 호출
                                     Kernel32.dll에 정의되어 있는 Win32 API
                                                                                IDT(Interrupt Descriptor Table)

                                                                                                                                                  0 Entry
                                           ntdll.dll에 정의되어 있는 Attributes
                                                               native API          Code Selector                 32Bit Offset
                                                               Attributes          Code Selector                 32Bit Offset
                (user32.dll, gdi32.dll, imm32.dll, winsrv.dll)
                                                               Attributes          Code Selector                 32Bit Offset

                    User Level                                  Attributes         Code Selector                 32Bit Offset
                                                            Int 2E
                                                                Attributes         Code Selector                 32Bit Offset
                                                                 Attributes        Code Selector           32Bit Offset
                                                                                             Ntoskrnl.exe의
                    Kernel Level                                 Attributes              KiSystemService() 호출 Offset
                                                                                   Code Selector           32Bit
                                                               Attributes          Code Selector                 32Bit Offset
                                                System Call Layer
                                                               Attributes          Code Selector           32Bit Offset
                                                                                             Ntoskrnl.exe의
                                                                 Attributes                NTCreateFile() 호출
                                                                                   Code Selector           32Bit Offset
                                                                 Attributes        Code Selector                 32Bit Offset
                                                  NT executive
                                                                 Attributes        Code Selector                 32Bit Offset




                                                                                                                                                 255 Entry
                                                                 Attributes        Code Selector                 32Bit Offset



                                                                              18 17 16 15 14      12 11 10 9     8   7   6   5   4   3   2   1   0

                                                                              AC VM RF   NT IOPL     O   D   I   T   S   Z       A       P       C

20
        Protected Mode – Paging
              가상 ES, SS, FS,
  세그먼트 레지스터(CS, DS, 메모리 번지GS)                     사용자가 지정한 주소
                 가상 메모리 번지

                     12 12            0                                                 Logical(Virtual) Address
                                  0
                                                                                             (가상 메모리)
0x1001      000000000 변위(offset)
                 000000001 000000000001
                        Selector        Offset




                         Descriptor table               실제
                                                    실제 메모리메모리
                                                            0    0
        0    0 매핑된 페이지 프레임
            매핑된 페이지 프레임 번호 번호                     페이지페이지 프레임 0
                                                     프레임 0                                   Segmentation
                                                            4096 4096
        1    1                       000002       페이지페이지 프레임 1
                                                     프레임 1
                                                            8192 8192
                                                  페이지페이지 프레임 2
                                                     프레임 2                                프로세스 A
                                                                 8193              0                              실제 메모리
              매핑된 페이지Segment
                       프레임
            매핑된 페이지 프레임 번호 번호                     페이지페이지 프레임 3
                                                     프레임 3
                              Descriptor                                      4096                                             0
                                                     프레임 4
                                                  페이지페이지 프레임 4                                                     페이지 프레임 0
                                                                                                                               4096
                                                     프레임 5
                                                  페이지페이지 프레임 5                                                     페이지 프레임 1
                                                                                                                               8192
            선형 주소                                   + 프레임 6
                                                  페이지페이지 프레임 6                               Linear Address
                                                                                                                   페이지 프레임 2
                                                                                              (선형 메모리)
                 페이지 테이블
                   페이지 테이블                           프레임 7
                                                  페이지페이지 프레임 7                                                     페이지 프레임 3
                                                                                                                   페이지 프레임 4
                                           DIR   Page       Offset                                                 페이지 프레임 5
                                                                            프로세스 B                                 페이지 프레임 6
                                                                        0                                          페이지 프레임 7
                    Page Directory
                                                    Page Table       4096   실제 메모리
  CR3                                                                                             Paging




                         Page                           Page                 Page                     프로세스 C
                                                                                              0
                                                                                          4096


                                                                                              Physical
                                                                                              Address
                                                                                            (물리적 메모리)



                                                                     최종적으로 얻어진 물리 주소



   21
     Protected Mode – Paging

                                              32비트의 선형 주소(Linear Address)




              31                              21                         11                       0

                            10 bits                      10 bits                    12 bits
                     (page directory index)         (page table index)         (offset in page)


                                          Page Directory                  Page Tables



                     CR3
                   register                                                                                            4KB Pages




                                                                                                                       4KB Pages




                                                                                                                       4KB Pages


                                                                                                                                      32비트의 선형 주소(Linear Address)




                                                                                                      31                              21                         11                       0

                                                                                                                    10 bits                      10 bits                    12 bits
                                                                                                             (page directory index)         (page table index)         (offset in page)


                                                                                                                                  Page Directory                  Page Tables



                                                                                                             CR3
                                                                                                           register                                                                             4KB Pages




                                                                                                                                                                                                4KB Pages




                                                                                                                                                                                                4KB Pages

                                                                                                                실제의 물리 메모리




22
                                                                                                                                                                                              실제의 물리 메모리
     Protected Mode – PDE, PTE

 31                                                                             11                                    4   3

               페이지 디렉토리의 PFN(Page Frame Number)
                                                                                                0000000               0   0   000
                   1101100010000011  0xD883

                                                          CR3 (Control Register 3)




      31                                                                        12 11             9   8 7         6   5   4 3 3 1   0
                                                                                                                          P P
                                                                                                          P                   U R
                      페이지 테이블의 실번지 PFN (31~12)                                            AVIL        0           D   A   C W       P
                                                                                                          S                   S W
                                                                                                                          D T

                                                                 페이지 디렉토리, 테이블 엔트리



                                      32비트의 선형 주소(Linear Address)




      31                              21                         11                         0

                    10 bits                      10 bits                    12 bits
             (page directory index)         (page table index)         (offset in page)


                                  Page Directory                  Page Tables

                                                                                                                                        커널 영역
             CR3
           register                                                                                   4KB Pages




                                                                                                      4KB Pages
                                                                                                                                        유저 영역

                                                                                                      4KB Pages




23                                                                                                실제의 물리 메모리
     Protected Mode – I/O Privilege
                            18 17 16 15 14       12 11 10 9        8   7   6   5   4    3   2   1   0            31                        15                     0
                                                                                                                              0                   Back Link           0
                            AC VM RF   NT IOPL       O     D   I   T   S   Z       A        P       C
                                                                                                                                         ESP 0                        4
                                                                                                                              0                     SS 0              8
                                                                                                                                         ESP 1                        C
                                                                                       TSS(Task State Segment)                0                     SS 1              10

                                             Global Descriptor                                                                           ESP 2                        14

                 GDTR                          Table (GDT)                                                                    0                     SS 2              18
                                                                                                                                          CR3                         1C

     GDT Size GDT Base Address                   Entry 0                                                                                  EIP                         20
                                                                                                                                         EFLAGS                       24
                                                                                                                                          EAX                         28
                                        Task gate descriptor                                                                              ECX                         2C
                                                                                                                                          EDX                         30
                                                                                                                                          EBX                         34
        TR(Task Register)                                                                                                                 ESP                         38
       15        3                                                                                                                        EBP                         3C
                                                                                                                                          ESI                         40
         Index
                                                                                                                                          EDI                         44
                                                                                                                              0                      ES               48
                                        Segment Descriptors                                                                   0                      CS               4C
                                                …                                                                             0                      SS               50
                                                                                                                              0                      DS               54
                                                                                                                              0                      FS               58
                                                                                                                              0                      GS               5C
                                                                                                                              0                     LDT               60
                                                                                                                       I/O번지 비트마스크 오프셋              0          T      64


                                        Task gate descriptor
                                                 Entry n                                                          31        24 23        16 15      8 7       0
                                                                                                                  63        56 55        48 47     40 39      32




                                                                                                                  65535




24
     Protected Mode – IDT (Interrupt Descriptor Table)
                                               IDTR Register
                        47                                 16 15                      0

                             32Bit Linear Base Address         16Bit Segment Limit




                                                                                     IDT(Interrupt Descriptor Table)

                                                                                                                                                      0 Entry
                                                                      Attributes          Code Selector               32Bit Offset
                                                                      Attributes          Code Selector               32Bit Offset
                                                                      Attributes          Code Selector               32Bit Offset
                                                                      Attributes          Code Selector               32Bit Offset
                                                                      Attributes          Code Selector               32Bit Offset
                                                                      Attributes          Code Selector               32Bit Offset
                                                                      Attributes          Code Selector               32Bit Offset
                                                                      Attributes          Code Selector               32Bit Offset
                                                                      Attributes          Code Selector               32Bit Offset
                                                                      Attributes          Code Selector               32Bit Offset
                                                                      Attributes          Code Selector               32Bit Offset
                                                                      Attributes          Code Selector               32Bit Offset




                                                                                                                                                     255 Entry
                                                                      Attributes          Code Selector               32Bit Offset




                                                                  18 17 16 15 14            12 11 10 9        8   7   6   5   4      3   2   1   0

                                                                  AC VM RF         NT IOPL      O   D     I   T   S   Z       A          P       C

25
     Exception, Interrupt (Intel)




                  31                              12 11      9   8 7     6   5   4 3 3 1   0
                                                                                 P P
                                                                     P               U R
                       페이지 테이블의 실번지 PFN (31~12)       AVIL       0       D   A   C W       P
                                                                     S               S W
                                                                                 D T

                                            페이지 디렉토리, 테이블 엔트리




26
     Page Fault Handler


                                                                                            (3)
                                                                                            Disk로
                                                                                            읽기 요청

                                                                                  (2)
                                                                               Exception
                                                                                  발생
                                               운영체제의
                                            Page Fault Handler                      P
                                                                                        0


                                                                     색
                                                            (1) le 검
                                                              ab
              0x10000                                  g   eT
                                                  Pa
                                                    (6)
                        MOV EAX [0x40000]       명령어를 재시작함
                                                                             Page Table




              0x40000



                                                 (5)
                                            Page Table을
                                               갱신함
                                                                                                    Disk 장치

                                                                                     (4)
                          Virtual Memory                                             Disk로부터
                                                                                     데이터를 읽어옴




                                                           Physical Memory



27
     Organization




28
80486 – Pipe Line

                             명령어 1 끝남               명령어 2 끝남




             1단계 2단계 3단계 4단계 5단계 1단계 2단계 3단계 4단계 5단계

                                                           시간
                                                         (클록 수)




     명령어 1   1단계 2단계 3단계 4단계 5단계


     명령어 2       1단계 2단계 3단계 4단계 5단계


     명령어 3            1단계 2단계 3단계 4단계 5단계


     명령어 4                1단계 2단계 3단계 4단계 5단계


     명령어 5                    1단계 2단계 3단계 4단계 5단계
                                                                          명령어                  오퍼랜드                     오퍼랜드
                                                                         가져오기                  가져오기                     결과 저장
     명령어 6                         1단계 2단계 3단계 4단계 5단계
                                                                                                                                      프로세서와 외부 모듈과
                                                                                                                                        의 데이터 교환

                                                         시간
                                                       (클록 수)                                                                         프로세서 내부의 동작
                                                                                                Source                  Destination
                                                                          명령어    명령어                            데이터
                                                                                               오퍼랜드                     오퍼랜드
                                                                         주소 계산   해석                              연산
                                                                                               주소 계산                    주소 계산


                                                                                              주소 지정 방식
                                                                                            (Addressing Mode)




                                   명령어 해석 및                  오퍼랜드
             명령어 패치                                                                    실행                             기록
                                   유효 번지 계산                   패치


               1 단계                  2 단계                         3 단계                 4 단계                           5 단계




29
     Pentium – Super scalar

                                                                                                        Branch Prediction
                                                                          Code cache
                                                                                                             Buffer


                                                           64 Bit
                                                                           256 Bit

                                                                         Prefetch buffer


                                                                     32 Bit         32 Bit


                                                                      ALU           ALU
                                                                                                         Floating point Pipeline
명령어 1    1단계 2단계 3단계 4단계 5단계                                        U-pipeline    V-pipeline
                                       64 Bit   Bus Unit
명령어 2    1단계 2단계 3단계 4단계 5단계                                                                                 Floating Point
                                                                     32 Bit         32 Bit                     Arithmetic

                                                                           Registers
명령어 3        1단계 2단계 3단계 4단계 5단계
명령어 4        1단계 2단계 3단계 4단계 5단계
                                                                     32 Bit                    64 Bit

명령어 5            1단계 2단계 3단계 4단계 5단계
명령어 6            1단계 2단계 3단계 4단계 5단계                       64 Bit
                                                                          Data cache


명령어 7                1단계 2단계 3단계 4단계 5단계
명령어 8                1단계 2단계 3단계 4단계 5단계


명령어 9                    1단계 2단계 3단계 4단계 5단계
명령어 10                   1단계 2단계 3단계 4단계 5단계

                                              시간
                                            (클록 수)
30
Cache - Direct mapping

           Tag 값   실제 주소    Line 번호          데이터
                   000000    0000           12345678
                   000004    0001
                    워드 사이즈                                                    사이즈
            00               0002
                             0003
     마이크로프로세서                                 캐쉬                                                   메인 메모리



                                                                                    Tag 값            데이터              Line 번호
                   010000    0000                                                    00            12345678             0000
                                    Tag 값    실제 주소     Line 번호      데이터
                   010004    0001           11111111    0000       12345678
                                                                                     01            11111111             0001
                                              000000

            01               0002            000004     0001                         FF            37593818             0002
                                     00                 0002
                             0003           22222222    0003                         01            22222222             0003



                                                                                             Tag 값       데이터         Line 번호
                                             010000     0000                                  00      12345678        0000
                                                                                     FF            77777777             3FFF
                                             010004     0001       11111111                   01        11111111      0001

                                     01                 0002                                  FF        37593818      0002
                                                        0003       22222222                   01        22222222      0003

                                                                                           64-KByte의 Cache

                   FF0000    0000                                                             FF        77777777      3FFF

                   FF0004    0001
                                                                                                   64-KByte의 Cache
            FF               0002           37593818
                                             FF0000     0000
                             0003            FF0004     0001

                                     FF                 0002       37593818
                                                        0003


                   FFFFF0
                                             FFFFF0
                   FFFFFC    3FFF           77777777
                                              FFFFFC    3FFF       77777777


                                                          16-MByte의 메인 메모리
                               16-MByte의 메인 메모리
                                                                                     Tag                    Line
                                                                                                                               Word
                                                                 메인 메모리의 주소          8                      14                 2

                                                                              Tag                        Line
                                                                                                                                      Word
                                          메인 메모리의 주소                          8                          14                           2

31
Cache - Associative mapping

               Word
                            실제 주소       데이터
     Tag 값            데이터   000000    12345678
     000000     12345678
                            000004
     004001     11111111
     3FC001     37593818
     004003     22222222




     3FFFFF     77777777                                        Tag 값          데이터
                                                                000000     12345678
     22 Bits    32 Bits     010004    11111111                  004001     11111111
                                                                3FC001     37593818
      64-KByte의 Cache
                            01000C    22222222                  004003     22222222




                                                                3FFFFF     77777777



                                                                22 Bits    32 Bits


                                                                 64-KByte의 Cache
                            FF0000
                            FF0004    37593818




                            FFFFF0
                            FFFFFC    77777777



                                       32 Bits
                                                                                          Tag   Word
                            16-MByte의 메인 메모리     메인 메모리의 주소                         22          2


32
Cache - Set Associative mapping

     Tag 값   실제 주소     Line 번호    데이터
             000000     0000     12345678
             000004     0001

      000               0002
                        0003


                                                           32KByte의 1번 Set                         32KByte의 2번Set



                                                           Tag 값          데이터     Line 번호      Tag 값        데이터
             008000     0000     10248282                   000     12345678        0000           001    10248282
             008004     0001     11111111                   001     11111111        0001

      001    008008     0002                                1FF     37593818        0002
             00800C     0003     22222222                                           0003           001    22222222




                                                                                    1FFF           1FF    77777777



                                                           9 Bits    32 Bits                     9 Bits    32 Bits

             FF8000     0000
                                                                          2-way Set 64-KByte의 Cache
             FF8004     0001
             FF8008     0002     37593818
      1FF               0003



             FFFFF0
             FFFFFC     1FFF     77777777



                                  32 Bits

                      16-MByte의 메인 메모리
                                                                    Tag                     Line
                                                                                                                     Word
                                            메인 메모리의 주소              9                      13                        2



33
Pentium’s cache




34
Pentium 4(xeon) – Hyper Threading




                         Processor 1




                         Processor 2




35
     Procedure & Stack




36
Stack

           Main() Return Address                  Main() Return Address            Main() Return Address
           Local1 변수의 저장 위치           ESP     Local1 변수의 저장 위치                    Local1 변수의 저장 위치
                                                   A() Return Address               A() Return Address
                                              Local2 변수의 저장 위치                    Local2 변수의 저장 위치
                                              Local3 변수의 저장 위치             ESP    Local3 변수의 저장 위치
                                                                                    B() Return Address
                                                                                  Local4 변수의 저장 위치           ESP




        1. Main 함수 시작 시의 Stack 모양           2. A 함수 시작 시의 Stack 모양               3. B 함수 시작 시의 Stack 모양




            Main() Return Address                  Main() Return Address             Main() Return Address

           Local1 변수의 저장 위치                       Local1 변수의 저장 위치                  Local1 변수의 저장 위치
             A() Return Address                      A() Return Address                A() Return Address

           Local2 변수의 저장 위치                       Local2 변수의 저장 위치                  Local2 변수의 저장 위치

           Local3 변수의 저장 위치                       Local3 변수의 저장 위치                  Local3 변수의 저장 위치
                                                                           ESP
             B() Return Address                      B() Return Address                C() Return Address
           Local4 변수의 저장 위치                       Local4 변수의 저장 위치                  Local5 변수의 저장 위치          ESP

             D() Return Address                      D() Return Address               D() Return Address

           Local6 변수의 저장 위치             ESP       Local6 변수의 저장 위치                  Local6 변수의 저장 위치




         4. D 함수 시작 시의 Stack 모양               5. D 함수 Return                      6. C 함수 시작 시의 Stack 모양
                                                 B 함수 Return
                                                후에 C 함수 호출 바로 직전의
                                                A 함수에서의 모양

              Main() Return Address
             Local1 변수의 저장 위치               ESP
               A() Return Address
             Local2 변수의 저장 위치
             Local3 변수의 저장 위치
                C() Return Address
             Local5 변수의 저장 위치
               D() Return Address
             Local6 변수의 저장 위치




           7. 모든 함수가 다 Return되어지고
              main 함수로 돌아왔을 때의 스택



37
Stack Frame
              Main() 복귀 주소   ESP + 0xc
                   2         ESP + 0x8
                   1         ESP + 0x4
              Sum() 복귀 주소    ESP




38
Calling Conventions




 __cdecl              __stdcall




39
Stack Back Tracing




                       Main() 복귀 주소
                           이전 EBP
                     Local 변수 p(값:”Test”)
                         파라미터 0 값
                         A() 복귀 주소
                           이전 EBP
                         Local 변수 a
                         Local 변수 b
                      파라미터 p 값(값:0)
                         B() 복귀 주소
                                            EBP
                           이전 EBP
                         Local 변수 c         ESP




40
     Question And Answer




41
     GOOD BYE



42

				
DOCUMENT INFO