View

300x250

 

가장 단순한 IO Interrupt 형태 : 모든 IO Device들이 OR gate로 묶여있다.

        IO Interrupt가 발생했다는 신호가 CPU에 들어오면, CPU는 누가 이 신호를 보냈는지 IO Device를 추적한다.

        이를 통해 해당 Interrupt를 실행한다. Priority는 Status Register를 먼저 읽어 Check 한다.

                - 누가 보냈는지, Priority는 어떤지를 알기 위해서는 모든 IO에 접근 ... 응답시간이 길고 효율이 낮다.

        

        더 나은 Interrupt 처리가 필요하다.

 

INTC ( Interrupt Controller ) / PIC ( Programmable Interrupt Controller ) / APIC ( Advanced PIC ) / GIC ( Generic IC )

조금씩 다르지만 모두 같은 성질을 가지고 있다.

        - Priority Check, Masking Interrupt, Interrupt Distribute, 기타 작업을 수행한다.

 

        IO Device들과 CPU 중간에서 Interrupt를 Control 하는 역할을 수행.

 

GIC는 Distributer, CPU Interface 등으로 구성되어있다.

        Distributer 는 1020 Byte ( 1kb )

                - SGI ( Software Generated Interrupt )

                        [ #0 ~ #15 ] 16개의 ID를 가지고 있다.     ( Interrupt의 ID는 미리 배정되어있음 ( 수정 불가 ) )

 

                - PPI ( Private Peripheral Interrupt )

                        [ #16 ~ #31 ] 16개의 ID를 가지고 있다.

 

                - SPI ( Shared Peripheral Interrupt )

                        [ #32 ~ #1019 ] 이지만, 모든 ID를 다 사용하지는 않는다.

 

                GICD_Enable, Disable Bit : IO Device 하나당 1bit의 공간을 필요로 한다. 

                        -> Register 한 개당 32Bit ... 32개의 Register가 있으면 모든 Device에 할당가능.

 

                GICD_Priority Bit : IO Device 하나당 8bit의 공간을 필요로 한다.

                        -> Register 한 개당 32Bit ... 255개의 Register가 있으면 모든 Device에 할당가능.

                        But, Priority Level을 위해 모든 Bit을 사용하지는 않는다. ( 5 Bit을 사용함 )

 

                GICD_Target Register : CPU하나당 8Bit을 이용해 지정한다. 

                        -> 8개의 CPU를 처리할 수 있도록 디자인 되어있음.

                

        CPU Interface

                - PMR : Priority Mask Register 

                        Mask Value보다 Priority가 낮으면 수행하지 않음. ( 수행중인 것보다 우선순위가 높은지 검사 )

                - IAC : Interrupt Acknowledge Register

                        Interrupt Code로 Branch할 때 어디로 가야할 지 값을 저장 ( Interrupt ID Value에 해당 )

                        Read Only ( HW가 알아서 Set 해준다 )

                - EOIR : End Of Interrupt Register

                        Interrupt의 처리종료를 HW에 알려서 다음 Interrupt 또는 작업을 수행하도록 명령한다.

                        Write Only ( Read는 HW가 한다 )

                - RPR : Running Priority Register

                        현재 실행중인 코드의 Priority 값을 저장 -> PMR과 비교

                - HPPIR : Highest Priority Pending Interrupt Register

                        다음 수행할 Interrupt를 저장

                - BPR : Binary Point Register

                        Priority를 둘로 나눈다. ( Group Priority + Subpriority )

                        Priority를 따질 때는 이 중 Group만 따진다.

 

                        Preemption : Interrupt를 수행하는 동안 먼저 하는 작업을 대기시킴

                                [ Priority가 PMR보다 높다 + Group Priority가 수행중인 Priority보다 높다 ] 두 조건 모두 만족

                                -> preempt 후 Interrupt를 수행한다.

 

----------

SGI ( Software Generated Interrupt ) 와 SVC ( SuperVisor Call ) 는 엄연히 다르다!!

        SGI : CPU가 발생시킴 -> 외부로 전달하여 IO Interrupt로 받아온다.

        SVC : CPU가 발생시킴 -> 내부에서 Interrupt로 전달한다.

 

        SGIR : Software Generated Interrupt Register

                Target List : 수신자가 나, 남, 모두를 설정하는 Bit

                CPU Target : 몇 번 CPU에게 전달할 지 결정하는 Bit

                SGI ID : 어떤 Interrupt 인지 Interrupt ID를 전달하는 Bit

----------

 

Inter Processor Interrupt - IPI  ( = 내부 프로세서인 CPU 끼리의 소통에 해당한다 )
        SIPI ( = Start IPI )
                Booting 되는 시점에서 하나의 CPU가 다른 CPU에 Interrupt를 보내 Setup을 하도록 명령을 보냄
        Task Dispatch
                Processor에게 OS가 작업을 할당 -> 하나의 CPU가 다른 CPU에게 Interrup를 보냄
        TLB ShootDown ( Translation Lookaside Buffer )
                Virtual Memory ( CPU의 Virtual address -> TLB -> Physical memory address )
                CPU끼리의 TLB Update에 대한 신호를 Interrupt로 전달
        System Shutdown
                CPU 하나가 다른 CPU에 Interrupt를 통해 Shutdown을 전달

 

// 이 시리즈의 글들은 고려대학교의 Computer System Design 과목 ( COSE321 ) 을 수강하며 제가 공부한 내용입니다.

// 노트필기를 바탕으로 정리하여 올리고 있으므로, 부정확한 정보가 있을 수도 있습니다.

// 추후에 종강을 하면 워터마크를 삽입한 최종노트 PDF를 첨부할 계획입니다.

320x100
Share Link
reply
반응형
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31