KR102462578B1 - 주변장치 정보 프리페치를 이용한 인터럽트 제어기 및 이를 통한 인터럽트 처리 방법 - Google Patents

주변장치 정보 프리페치를 이용한 인터럽트 제어기 및 이를 통한 인터럽트 처리 방법 Download PDF

Info

Publication number
KR102462578B1
KR102462578B1 KR1020210001585A KR20210001585A KR102462578B1 KR 102462578 B1 KR102462578 B1 KR 102462578B1 KR 1020210001585 A KR1020210001585 A KR 1020210001585A KR 20210001585 A KR20210001585 A KR 20210001585A KR 102462578 B1 KR102462578 B1 KR 102462578B1
Authority
KR
South Korea
Prior art keywords
interrupt
processor
data
isr
peripheral device
Prior art date
Application number
KR1020210001585A
Other languages
English (en)
Other versions
KR20220099399A (ko
Inventor
이찬호
Original Assignee
숭실대학교산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 숭실대학교산학협력단 filed Critical 숭실대학교산학협력단
Priority to KR1020210001585A priority Critical patent/KR102462578B1/ko
Publication of KR20220099399A publication Critical patent/KR20220099399A/ko
Application granted granted Critical
Publication of KR102462578B1 publication Critical patent/KR102462578B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Multi Processors (AREA)

Abstract

본 발명은 주변장치 정보 프리페치를 이용한 인터럽트 제어기 및 이의 처리 방법을 개시한다. 본 발명에 따르면, 주변장치로부터 인터럽트 전용 신호선을 통해 인터럽트 요청 신호를 수신하는 경우 마스터 인터페이스 및 온칩 네트워크를 통해 상기 주변장치로부터 인터럽트 처리에 필요한 상태 정보 및 데이터를 읽고 상기 상태 정보를 디코딩하는 페치(fetch)/디코드 유닛; 및 상기 상태 정보 및 데이터를 내부 버퍼에 저장하고, 프로세서에 인터럽트 요청 신호를 전송하며, 슬레이브 인터페이스 및 상기 온칩 네트워크를 통해 상기 프로세서가 접근하는 경우 상기 상태 정보에 상응하는 ISR 수행을 위한 명령어 및 상기 내부 버퍼에 저장된 데이터를 상기 프로세서로 공급하는 인터럽트 매니저를 포함하는 인터럽트 제어기가 제공된다.

Description

주변장치 정보 프리페치를 이용한 인터럽트 제어기 및 이를 통한 인터럽트 처리 방법{Interrupt controller using peripheral device information prefetch and interrupt handling method using the same}
본 발명은 주변장치 정보 프리페치를 이용한 인터럽트 제어기 및 이를 통한 인터럽트 처리 방법에 관한 것으로, 보다 상세하게는 프로세서가 효율적으로 인터럽트 요청을 처리할 수 있도록 하는 인터럽트 제어기 및 인터럽트 처리 방법에 관한 것이다.
기존의 프로세서 기반 시스템은 프로세서와 주변장치의 통신이 단방향이어서 효율성이 좋지 않고 특히 다중 프로세서가 존재하는 경우 여러 가지 문제점이 있다.
프로세서는 그 특성상 마스터(master)로만 동작하는 특성을 가지고 있다. 따라서 슬레이브(slave)인 주변장치와의 통신은 폴링이나 인터럽트를 이용하여 가능하다. 프로세서의 작업량이 많은 요즘은 대부분 인터럽트 방식이 이용된다. 인터럽트 방식은 별도의 인터럽트 전용 연결선이 필요하고 슬레이브가 다수인 경우 인터럽트 제어기를 한 단계 더 거치게 된다. 인터럽트 요청 신호(패킷)를 받은 프로세서는 인터럽트 제어기를 거쳐 주변장치에 접근해야 인터럽트의 원인을 파악하고 그에 대한 대응 동작을 시작한다.
따라서 인터럽트는 동작을 위한 오버헤드가 상당히 크다. 더 큰 문제는 다중 프로세서가 존재하는 시스템의 경우 인터럽트 요청 신호를 전달하는 것이 더 복잡하고 제한 조건이 많다는 것이다. 다수의 프로세서가 존재하는 경우 작업 요청을 받은 주변장치 슬레이브의 인터럽트 요청 신호를 어디로 보내야하는지에 대한 문제가 발생한다. 또한, AXI와 같은 고성능 인터페이스 프로토콜의 경우 슬레이브가 여러 개의 요청을 받아 저장하고 동시에 또는 순차적으로 처리가 가능하므로 인터럽트 처리 과정은 더 복잡해진다.
ARM사의 경우 GICv3 구조에서 PPI/SPI/SGI/MSI의 네 가지 인터럽트를 도입하고 프로세서와 GIC가 AXI 버스와 스트림버스를 연결하여 인터럽트를 처리하는 복잡한 방식을 이용하면서도 그 동작에 여러 가지 제약 사항이 있다.
한국등록특허 제10-0820255호
상기한 종래기술의 문제점을 해결하기 위해, 본 발명은 인터럽트 요청을 효율적으로 처리할 수 있는 주변장치 정보 프리페치를 이용한 인터럽트 제어기 및 이를 통한 인터럽트 처리 방법을 제안하고자 한다.
상기한 바와 같은 목적을 달성하기 위하여, 본 발명의 일 실시예에 따르면, 주변장치로부터 인터럽트 전용 신호선을 통해 인터럽트 요청 신호를 수신하는 경우 마스터 인터페이스 및 온칩 네트워크를 통해 상기 주변장치로부터 인터럽트 처리에 필요한 상태 정보 및 데이터를 읽고 상기 상태 정보를 디코딩하는 페치(fetch)/디코드 유닛; 및 상기 상태 정보 및 데이터를 내부 버퍼에 저장하고, 프로세서에 인터럽트 요청 신호를 전송하며, 슬레이브 인터페이스 및 상기 온칩 네트워크를 통해 상기 프로세서가 접근하는 경우 상기 상태 정보에 상응하는 ISR 수행을 위한 명령어 및 상기 내부 버퍼에 저장된 데이터를 상기 프로세서로 공급하는 인터럽트 매니저를 포함하는 인터럽트 제어기가 제공된다.
상기 페치/디코드 유닛은 상기 주변장치에 접근하여 인터럽트를 비활성화한 후 상기 상태 정보 및 데이터를 읽어올 수 있다.
상기 상태 정보는 주변장치 ID(DID), 우선순위, 작업 ID(TID), 프로세서 ID(PID) 및 첨부 데이터 수(NAD)를 포함할 수 있다.
상기 인터럽트 매니저는 상기 DID 및 TID를 인식하는 경우 상기 인식된 DID 및 TID에 상응하는 ISR의 초기 명령어를 상기 프로세서에 공급할 수 있다.
상기 내부 버퍼는, 상기 상태 정보에 포함된 우선순위에 따라 상기 인터럽트 요청 신호를 저장하는 인터럽트 큐; 상기 상태 정보를 저장하는 인터럽트 상태 레지스터; 및 상기 데이터를 저장하는 데이터 메모리를 포함할 수 있다.
각 ISR의 초기 명령어 및 상기 각 ISR이 저장된 메모리 주소를 포함하는 인터럽트 벡터 테이블을 더 포함할 수 있다.
본 발명의 다른 측면에 따르면, 프로세서 및 복수의 주변장치와 연결되는 인터럽트 제어기에서 인터럽트를 처리하는 방법으로서, 상기 복수의 주변장치 중 적어도 하나로부터 인터럽트 전용 신호선을 통해 인터럽트 요청 신호를 수신하는 단계; 마스터 인터페이스 및 온칩 네트워크를 통해 상기 인터럽트 요청 신호를 전송한 주변장치로부터 인터럽트 처리에 필요한 상태 정보 및 데이터를 읽고 상기 상태 정보를 디코딩하는 단계; 상기 상태 정보 및 데이터를 내부 버퍼에 저장하는 단계; 상기 프로세서에 상기 인터럽트 요청 신호를 전송하는 단계; 및 슬레이브 인터페이스 및 상기 온칩 네트워크를 통해 상기 프로세서가 접근하는 경우 상기 상태 정보에 상응하는 ISR 수행을 위한 명령어 및 상기 내부 버퍼에 저장된 데이터를 상기 프로세서로 공급하는 단계를 포함하는 인터럽트 처리 방법이 제공된다.
본 발명에 따르면, 인터럽트 발생 시, 주변장치 정보를 프리페치하여 프로세서의 주변장치 접근과 공통 ISR 실행을 없앰으로써 인터럽트 요청을 신속하게 처리할 수 있는 장점이 있다.
도 1은 종래기술에 따른 인터럽트 처리 과정을 설명하기 위한 도면이다.
도 2는 본 발명의 바람직한 일 실시예에 따른 인터럽트 처리 과정을 도시한 도면이다.
도 3은 본 발명의 바람직한 일 실시예에 따른 인터럽트 제어기의 상세 구성을 도시한 도면이다.
도 4는 인터럽트 처리에 필요한 사이클 수를 나타낸 것이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다.
그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
본 발명은 프로세서가 주변장치의 인터럽트를 효율적으로 처리할 수 있는 방법에 관한 것으로서, 본 발명에 관한 설명에 앞서 기존의 인터럽트 처리 방식을 우선 설명한다.
도 1은 종래기술에 따른 인터럽트 처리 과정을 설명하기 위한 도면이다.
도 1을 참조하면, 기존의 인터럽트 처리 방식은 마스터-슬레이브 구조의 비대칭적 네트워크 프로토콜에 기반하기 때문에 주변장치(Peripheral)가 별도의 인터럽트 전용 신호선을 통해 인터럽트 제어기(Interrupt controller, IC)에 인터럽트 요청 신호(Interrupt Request, IRQ)를 보내고(ⓛ), 인터럽트 제어기는 입력된 인터럽트 요청 신호를 내부 정책에 따라 선정하여 프로세서(processor)로 전송한다(②).
프로세서는 온칩 네트워크(On-chip-network)를 통해 인터럽트 제어기에 접근하여 인터럽트를 생성한 주변장치 정보를 확인하고(③), 온칩 네트워크를 통해 주변장치에 접근하여 상태 정보를 확인한 후(④), 그에 적합한 작업(Interrupt Service Routine, ISR)을 수행한다(⑤).
따라서 종래에는 2번 이상의 온칩 네트워크를 통해 접근 후에 인터럽트에 대한 대응 작업을 진행할 수 있다. 또한 주변장치는 인터럽트 신호를 보낸 후 인터럽트 제어기가 해당 신호를 처리할 때까지 계속 인터럽트 요청 상태를 유지하며 대기해야 한다.
한편, 다중 프로세서 시스템의 경우 인터럽트 요청을 모든 프로세서에 보내 먼저 응답하는 프로세서가 처리하거나 인터럽트 제어기가 우선순위 정책과 부하에 따라 프로세서를 배정하는 방식을 이용한다.
이러한 경우, 특정 프로세서가 해당 인터럽트 요청을 처리해야 하는 경우 동작 조건에 따라 여러가지 문제가 발생한다.
본 발명은 상기한 비효율적인 문제를 해결하기 위해, 인터럽트 제어기가 인터럽트 요청 신호 발생 시 해당 주변장치에 접근하여 프로세서가 필요로 하는 상태 정보와 데이터를 직접 읽어 내부에 저장하고, 프로세서가 인터럽트 제어기에 접근하여 주변장치 관련 정보를 읽을 때 기존 인터럽트 제어기가 단순히 주변장치 ID만 제공하는 것과는 달리 주변장치에서 인터럽트 처리에 필요한 상태 정보와 데이터를 미리 읽어오고, 상태 정보 디코딩 후 관련 ISR의 초기 명령어를 읽어오거나 프로세서의 캐시 제어기를 제어하여 캐시에 관련 ISR의 초기 명령어를 채우도록 하고, 동시에 프로세서에 명령어와 데이터를 제공하여 프로세서가 주변장치에 접근하지 않고 인터럽트 제어기에 한 번 접근하는 것으로 인터럽트 처리를 위한 작업(ISR)을 바로 실행할 수 있도록 한다. 또한 특정 프로세서가 해당 인터럽트 요청을 처리하여야 하는 경우 주변장치에서 읽어 온 정보에 특정 프로세서에 대한 정보가 포함되므로 용이하게 특정 프로세서를 지정하여 인터럽트 요청을 할 수 있다.
도 2는 본 발명의 바람직한 일 실시예에 따른 인터럽트 처리 과정을 도시한 도면이다.
도 2에 도시된 바와 같이, 본 실시예에 따른 인터럽트 제어기(200)는 마스터 인터페이스(202)와 슬레이브 인터페이스(204)를 동시에 갖고 DMAC(Direct Memory Access Controller) 기능도 포함한다.
본 실시예에 따른 인터럽트 제어기(200)는 프로세서(210)에 독립적인 주변장치로 동작하며, 복수의 주변장치(220-1 내지 220-3)의 인터럽트 요청을 내부 버퍼에 저장하여 우선순위에 따라 처리 순서를 조절할 수 있어 인터럽트 발생이 많은 주변장치의 경우 대기 상태에서 주변장치에서 필요한 정보와 데이터를 미리 읽어오고 관련 ISR를 파악하여 실행 준비를 할 수 있으며, 먼저 발생하여 대기중인 우선 순위가 낮은 인터럽트 요청보다 나중에 발생한 우선순위가 높은 인터럽트 요청을 먼저 처리하고 다음 동작을 수행할 수 있다. 이를 통해 인터럽트 처리를 위한 불필요한 과정을 없애 최소한의 동작만으로 인터럽트 동작을 완료할 수 있다. 또한 기존 시스템에서 인터럽트 제어기만 재설계하면 바로 작용할 수 있어 기존 시스템과의 호환성을 보장할 수 있다.
도 2를 참조하면, 복수의 주변장치(220)에서 인터럽트 상황이 발생하면 인터럽트 요청 신호를 인터럽트 전용 신호선을 통해 인터럽트 제어기(200)로 전송한다(ⓛ).
인터럽트 제어기(200)는 마스터 인터페이스(202) 및 온칩 네트워크(On-chip-network)를 통해 주변장치로부터 인터럽트 처리에 필요한 상태 정보 및 데이터를 미리 읽어온다(②).
단계 ②에서 읽어오는 상태 정보는 주변장치 ID(DID), 우선순위, 작업 ID(TID), 프로세서 ID(PID) 및 첨부 데이터 수(NAD)를 포함할 수 있고, 이에 대해서는 이하에서 다시 상술할 것이다.
인터럽트 제어기(200)는 미리 읽어온 상태 정보 및 데이터를 내부 버퍼에 저장한 후 프로세서(210)로 인터럽트 요청 신호(IRQ)를 전송한다(③).
단계 ③에서 상태 정보는 디코딩되어 내부 버퍼에 저장된다. 동시에 관련 ISR 정보를 파악하여 초기 명령어들을 메모리에서 읽어와 내부 버퍼에 저장하거나 프로세서(210)의 캐시제어기에 해당 명령어들을 미리 읽어오도록 요청한다. 초기 명령어는 ISR에서 처음 실행되는 명령어 블록으로 프로세서(210)의 캐시 라인을 채우거나 프로세서(210)가 버스트로 읽는다. 이 과정은 기존 방식과는 달리 인터럽트 요청 신호(IRQ)를 전송하면서 동시에 시작하여 프로세서(210)가 인터럽트 모드로 변환하여 인터럽트 제어기(200)로 접근하는 동안에도 이루어지고 해당 주변장치의 인터럽트 처리 요청에 필요한 특정 ISR을 찾아가는 과정을 포함한 공통 ISR 부분을 실행할 필요가 없어 ISR 실행에 필요한 사이클 수를 줄일 수 있다.
인터럽트 제어기(200)는 온칩 네트워크 및 인터럽트 제어기(200)의 슬레이브 인터페이스(204)를 통해 인터럽트 요청 신호를 수신한 프로세서(210)가 접근하는 경우 내부 버퍼에 저장된 상태 정보에 상응하는 ISR 수행을 위한 명령어 및 데이터를 프로세서(210)에 공급한다(④, ⑤).
여기서, 단계 ④, ⑤는 도 1의 온칩 네트워크를 통해 주변장치에 접근하여 상태 정보를 확인하는 과정 및 그에 적합한 작업(Interrupt Service Routine, ISR)을 수행하는 과정에 대응되나, 기존 방식과는 달리 본 실시예에서는 프로세서(210)가 인터럽트 제어기(200)에 접근하는 것만으로 상태 정보 확인 및 상태 정보에 상응하는 ISR 수행을 위한 명령어를 공급 받게 된다.
프로세서(210)는 온칩 네트워크를 통해 주변장치(220)에 접근할 수 있으나(단계 ⑤*), 이는 필요한 경우에만 수행되며 기존 방식에 비해 그 빈도가 낮다.
기존 방식은 프로세서가 인터럽트를 처리하기 시작하면 인터럽트 제어기와 주변장치를 온칩 네트워크를 통해 각각 접근하여 인터럽트 요청을 파악하고 처리해야 할 작업을 결정하는 공통 ISR 부분을 실행한다. 이때 쓰기와 읽기 동작을 각각 1번 이상 수행하여야 한다. 작업이 결정된 뒤에도 다시 네트워크를 통해 ISR을 저장한 메모리와 데이터를 저장한 주변장치에 접근하여 작업을 완료한다. 이렇게 인터럽트를 요청한 주변장치를 찾아 접근하여 수행해야 할 작업을 결정하는 과정에서 항상 공통 ISR을 실행하여야 한다.
반면에 본 실시예에 따른 인터럽트 처리 방식은 인터럽트 요청 신호를 받은 인터럽트 제어기(200)에서 프로세서(210)를 대신해 주변장치(220)에 미리 접근하여 인터럽트 처리에 필요한 상태 정보와 데이터를 읽어와 인터럽트 제어기(200) 내부에 저장한다. 그리고 인터럽트 상태 정보를 해석(디코딩)하여 프로세서(210)가 수행해야 할 작업(ISR)을 결정하고 프로세서(210)가 접근하면 미리 읽어온, 상태 정보에 상응하는 특정 ISR의 명령어와 데이터를 제공하여 프로세서가 공통 ISR을 거치지 않고 특정 ISR를 바로 시작할 수 있도록 한다. 따라서 기존 방식에서 프로세서가 공통 ISR 실행을 통해 진행하던 작업을 인터럽트 제어기가 미리 대신 수행하고 프로세서는 특정 ISR을 바로 실행할 수 있도록 하여 프로세서의 부하와 실행 시간을 줄여 성능과 효율을 향상시킨다. 한편, 프로세서(210)에서 주변장치(220)의 데이터를 지속적으로 읽어야 하는 경우에만 ISR에서 주변장치에 접근하게 되는데 그 빈도수가 매우 낮다.
도 3은 본 발명의 바람직한 일 실시예에 따른 인터럽트 제어기의 상세 구성을 도시한 도면이다.
도 3에 도시된 바와 같이, 본 실시예에 따른 인터럽트 제어기(200)는 페치(fetch)/디코더 유닛(300), 인터럽트 매니저(302) 및 메모리(304)를 포함할 수 있다.
또한, 인터럽트 제어기(200)는 마스터 인터페이스(202) 및 슬레이브 인터페이스(204)에 연결될 수 있다.
여기서, 슬레이브 인터페이스(204)는 인터럽트 제어기(200)를 제어하고 프로세서(210)가 특정 ISR 관련 명령어 또는 주소 정보와 주변장치(220)의 데이터를 읽기 위한 것이다.
마스터 인터페이스(202)는 인터럽트 요청 신호를 보낸 주변장치(220)에 접근하여 인터럽트 처리에 필요한 상태 정보와 데이터를 읽고 필요시 특정 ISR의 초기 명령어를 읽기 위한 것이다.
본 실시예에 따른 페치/디코드 유닛(300)은 주변장치(220)로부터 인터럽트 전용 신호선을 통해 인터럽트 요청 신호를 수신하는 경우 마스터 인터페이스(202) 및 온칩 네트워크를 통해 주변장치(220)로부터 인터럽트 처리에 필요한 상태 정보 및 데이터를 읽고, 상태 정보를 디코딩한다.
페치/디코드 유닛(300)은 미리 설정된 우선순위 정책에 따라 인터럽트 요청 신호를 보낸 주변장치 중 하나를 선택하여 마스터 인터페이스(202)와 온칩 네트워크를 통해 해당 주변장치에 접근하여 인터럽트를 비활성화시키고 필요한 상태 정보와 데이터를 읽어온다.
페치/디코드 유닛(300)은 메모리(304)에 특정 ISR의 초기 명령어가 없거나 프로세서(210)의 캐시제어기에 접근이 어려운 경우 인터럽트 요청을 디코딩하여 해당하는 특정 ISR의 초기 명령어를 미리 읽어와 메모리(304)에 저장한다. 캐시 제어기에 접근 가능한 경우에는 캐시 제어기를 통해 특정 ISR의 명령어를 명령어 캐시 메모리에 저장하도록 한다.
해당 주변장치는 인터럽트 제어기(200)가 상태 정보와 데이터를 읽어가면 예외적인 경우를 제외하고는 프로세서가 인터럽트 처리를 위해 주변장치에 접근하지 않으므로 인터럽트 요청이 처리된 것으로 간주하여 다음 작업을 진행할 수 있다.
메모리(304)는 내부 버퍼(310)를 포함할 수 있다.
인터럽트 매니저(302)는 주변장치(220)로부터 읽고 디코딩한 상태 정보 및 상기한 데이터를 내부 버퍼(310)에 저장하고, 프로세서(210)에 인터럽트 요청 신호를 전송한다.
또한, 인터럽트 매니저(302)는 슬레이브 인터페이스(204) 및 온칩 네트워크를 통해 인터럽트 요청 신호를 수신한 프로세서(210)가 접근하는 경우 미리 저장된 상태 정보에 상응하는 ISR 수행을 위한 초기 명령어 및 내부 버퍼(310)에 저장된 데이터를 프로세서(210)의 요청에 따라 슬레이브 인터페이스(204)를 통해 제공한다. 캐시 제어기에 접근 가능한 경우는 프로세서(210)가 캐시 제어기에서 특정 ISR의 명령어를 제공받으므로 명령어를 위해 프로세서(210)가 슬레이브 인터페이스(204) 및 온칩 네트워크를 통해 접근하지 않는다.
본 실시예에 따른 내부 버퍼(310)는 상태 정보에 포함된 우선순위에 따라 인터럽트 요청 신호(이하, '인터럽트 요청'이라 함)를 저장하는 인터럽트 큐(320), 상태 정보를 저장하는 인터럽트 상태 레지스터(322) 및 데이터를 저장하는 데이터 메모리(324)를 포함할 수 있다.
인터럽트 요청은 우선순위에 따라 인터럽트 큐(320)에 저장되는 위치가 결정되며, 인터럽트 제어기(200)는 인터럽트 큐(320)의 맨 앞에 위치한 인터럽트 요청을 프로세서(210)로 전송한다.
본 실시예에 따른 인터럽트 제어기(200)는 각 특정 ISR의 초기 명령어 및 상기 각 특정 ISR이 저장된 메모리 주소를 포함하는 인터럽트 벡터 테이블(326)을 더 포함한다.
프로세서(210)가 인터럽트 제어기(200)에 접근하면 인터럽트 매니저(302)는 프로세서(210)가 어떠한 인터럽트 요청을 수행할지 알고 있으므로 인터럽트 벡터 테이블(326)에서 특정 ISR을 수행할 수 있는 명령어를 제공하여 공통 ISR 수행없이 특정 ISR을 직접 수행할 수 있도록 한다.
여기서, 특정 ISR을 수행할 수 있는 명령어는 상기한 상태 정보에 상응하는 ISR 수행을 위한 명령어로 ISR 실행시 특정 ISR 부분을 찾아가는 과정인 공통 ISR 부분은 건너 뛰고 필요한 작업을 즉시 실행할 수 있다.
본 실시예에 따른 인터럽트 벡터 테이블(326)에는 각 ISR의 초기 명령어만 존재하고, 프로세서(210)는 이후 메모리 접근을 통해 ISR을 실행한다. 또한 캐시 제어기를 이용할 수 있는 경우에는 명령어의 시작 주소만 존재할 수 있다. 따라서 인터럽트 벡터 테이블(326)을 위한 저장 공간은 크지 않다. 또한 다중 프로세서가 있는 경우 인터럽트 벡터 테이블(326)을 공유할 수도 있다.
본 실시예에 따른 상태 정보는 인터럽트 요청 처리에 필요한 정보를 포함하며, 표 1에 나타난 바와 같이 장치 ID(DID), 우선순위(PR), 작업 ID(TID), 프로세서 ID(PID), 첨부 데이터 수(NAD)를 포함한다.
DID PR TID PID NAD Reserved
8b 3b 4b 4b 2b 1b
장치 ID는 주변장치의 고유 번호를 나타내며, 우선순위는 인터럽트 처리 우선순위를 나타내는 것으로 시스템 설계자가 필요에 따라 정의할 수 있다.
작업 ID는 인터럽트 요청의 내용을 정의하는 것으로 항상 동일한 작업을 하는 주변장치의 경우에는 의미가 없고 주변장치가 둘 이상의 서로 다른 작업을 할 경우 해당 작업에 대한 ISR를 선택하기 위해 사용된다.
프로세서 ID는 다중 프로세서 시스템에서 특정 프로세서를 지정하는 ID로 특정 프로세서가 해당 인터럽트 요청을 처리해야 하는 경우 이용한다. 프로세서 ID가 특정한 값을 갖는 경우 프로세서가 지정되지 않았음을 의미할 수 있다.
인터럽트 제어기(200)가 장치 ID 및 작업 ID를 인식하는 경우 프로세서(210)에 해당 장치 ID 및 작업 ID에 해당하는 ISR 명령어를 공급할 수 있다. 인터럽트 제어기에서 장치 ID 및 작업 ID를 인식하지 않고 프로세서에서 ISR 실행 후 장치 ID 및 작업 ID를 확인한 후에 필요한 작업을 수행할 수도 있다. 이 경우 프로세서는 단일 ISR 또는 장치 ID에 의한 ISR을 실행한다. 또한 인터럽트 제어기(200)의 인터럽트 매니저(302)는 다중 프로세서 시스템인 경우 PID를 인식하여 PID에 상응하는 프로세서(210)에 인터럽트 요청 신호를 전송한다.
첨부 데이터 수는 인터럽트 요청과 함께 전달된 데이터가 몇 개인지를 나타내며 데이터 메모리(324)에 저장된다. 프로세서(210)가 주변장치에 접근하여 첨부 데이터에 대한 읽기 요청을 하는 대신 프로세서(210)는 인터럽트 제어기(200)에 접근하고 인터럽트 제어기(200)는 이를 예상하고 해당 첨부 데이터가 저장된 주소를 확인 후 주변장치 접근없이 데이터 메모리(324)에 저장된 데이터를 프로세서(210)의 요청에 따라 슬레이브 인터페이스(204)를 통해 제공한다.
상태 정보에 따라 인터럽트 큐(320)에는 페치/디코드 유닛(300)이 생성한 인터럽트 ID와 인터럽트 상태 정보의 우선순위가 저장되는데, 인터럽트 큐(320)가 비어있지 않은 경우에는 이미 저장되어 있는 인터럽트 요청과 우선순위를 비교하여 적절한 위치에 저장한다.
이를 통해 인터럽트 요청이 우선순위에 따라 실행되도록 한다.
본 실시예에 따른 인터럽트 상태 레지스터(322)에는 인터럽트 ID, 장치 ID, 작업 ID, 프로세서 ID 및 첨부 데이터 수를 저장하거나 ISR에 해당되는 인터럽트 벡터 테이블(326)의 주소를 저장한다.
이를 이용하여 프로세서(210)가 인터럽트 모드에서 인터럽트 제어기(200)에 ISR을 요청하면 인터럽트 벡터 테이블(326)에서 상태 정보에 상응하는 특정 ISR 수행을 위한 초기 명령어를 읽어 프로세서(210)로 전달한다.
인터럽트 벡터 테이블(326)에는 각 특정 ISR의 초기 명령어 또는 시작 주소만 존재하고 이후에는 프로세서(210)는 메모리 접근을 통해 ISR을 실행한다. 따라서 인터럽트 벡터 테이블(326)을 위한 저장 공간은 크지 않아도 된다.
인터럽트 제어기(200)에서 프로세서(210)의 캐시 제어기에 접근 가능한 경우에는 캐시 제어기가 특정 ISR의 초기 명령어를 미리 읽어 프로세서(210)의 캐시 메모리에 저장하도록 하거나 인터럽트 벡터 테이블(326)의 초기 명령어를 직접 캐시 제어기에 전달하여 캐시 메모리에 저장 하도록 할 수 있다. 인터럽트 제어기(200)가 초기 명령어를 직접 전달하는 경우는 캐시 제어기가 느린 주메모리에 접근할 필요가 없어 성능을 향상할 수 있으나 초기 명령어를 저장할 공간만큼 인터럽트 벡터 테이블(326)의 크기가 커진다.
또한 다중 프로세서가 있는 경우 인터럽트 벡터 테이블(326)을 공유할 수도 있다. 이후에 첨부 데이터 수에 따라 데이터를 데이터 메모리(324)에 저장하고, 해당하는 시작 주소를 인터럽트 상태 레지스터(322)에 저장한다. 인터럽트 큐(320)의 수는 인터럽트 제어기(200)가 받아 들여 처리 가능한 인터럽트 요청의 수로 결정되고, 데이터 메모리(324)의 데이터 저장 용량은 주변장치(220)에서 인터럽트 요청 시 프로세서(210)로 보낼 수 있는 데이터의 최대 크기로 결정된다.
전술한 바와 같이, 인터럽트 벡터 테이블은 특정 ISR의 초기 명령어와 특정 ISR이 저장된 메모리의 시작 주소를 포함한다.
따라서 캐시 제어기에 신호를 보내 해당하는 특정 ISR 코드를 미리 명령어 캐시에 읽어오도록 할 수 있다. 이 경우 IRQ 신호를 보내면서부터 초기 명령어가 실행될 때까지의 사이클 수만큼 대기시간을 줄일 수 있다.
도 4는 인터럽트 처리에 필요한 사이클 수를 나타낸 것으로, 도 4a는 기존 방식, 도 4b는 본 실시예에 따른 인터럽트 처리 방식을 도시한 도면이다.
도 4는 가장 간단한 3단계 파이프라인 구조의 프로세서에서 인터럽트 요구를 처리하는 과정과 사이클 수를 보여준다.
도 4a에 도시된 바와 같이, 기존 방식에서는 인터럽트가 발생하면(①) 다음 사이클에 인터럽트 모드를 시작하여 메모리의 인터럽트 벡터 테이블에서 초기 명령어를 읽어 와야 하는데 해당 열이 열려 있을 가능성은 낮으므로 열을 닫고 여는 동작 이후 읽기가 가능하다(②). 초기 명령어는 공통 ISR을 가리키는 branch 계열 명령어이므로 다시 메모리의 해당 영역을 접근하여 명령어들을 읽어 와야 하는데, 이 경우에도 열을 닫고 여는 동작을 한다. 또한 이후 연속된 명령어들을 읽어와야 하므로 캐시 제어기에서 캐시에 명령어 블록을 채우는 작업을 한다(③).
이후 공통 ISR이 실행되는데 프로세서가 인터럽트 제어기와 해당 주변장치를 접근하여 인터럽트에 적합한 특정 ISR을 실행하므로 메모리 접근 과정에서 추가 대기 시간이 필요하다(④).
반면, 도 4b에 도시된 바와 같이, 본 실시예에 따르면, 인터럽트 대기가 있는 경우에는 기다리는 동안 인터럽트 제어기(200)가 주변장치(220)에 접근하여 필요한 정보와 데이터를 읽어오고 인터럽트 요청을 프로세서(210)로 보내면서 캐시 제어기에 관련 ISR 코드가 저장된 주소 정보를 보내 명령어들을 미리 읽어 오도록 요청하거나 초기 명령어를 직접 제공한다.
프로세서(210)가 인터럽트 모드로 전환하고 프로세서 인터럽트 벡터 테이블 주소의 명령어를 요청하면 이 명령어는 기존 방식과 마찬가지로 branch 계열이나 공통 ISR이 아닌 인터럽트 제어기(200) 접근을 지시하고 인터럽트 제어기(200)는 공통 ISR 실행을 건너 뛰고 특정 ISR에 해당하는 초기 명령어를 즉시 프로세서(210)에 제공하거나, 프로세서(210)에서 캐시 메모리에 저장된 특정 ISR 명령어를 읽어 실행한다.
따라서 본 실시예에서는 기존 방식의 ②부터 ③까지의 과정이 생략되고 ④의 경우에도 인터럽트 요청이 프로세서(210)로 전달됨과 동시에 시작하므로 그 만큼의 대기 시간을 줄일 수 있다. ISR의 동작이 단순하고 인터럽트가 빈번하게 발생할수록 이러한 오버헤드의 감소는 시스템 성능에 큰 영향을 미친다. 반면에 인터럽트 대기가 없는 경우에는 인터럽트 제어기(200)가 주변장치에 접근하여 필요한 정보와 데이터를 읽어 오는 동안 기다린 후 프로세서(210)에 인터럽트 요청을 전송하기 때문에 그 만큼 인터럽트 처리가 지연된다. 그러나 특정 ISR 초기 명령어는 인터럽트 신호 전송과 동시에 캐시 제어기가 처리하거나 인터럽트 벡터 테이블(326)에 이미 저장되어 있으므로 여전히 기존 방식보다는 대기 시간을 줄일 수 있다. 도 4는 3단계 파이프라인의 간단한 프로세서 구조를 고려하였으나 실제로 이용되는 프로세서는 7단 이상의 더 복잡한 파이프라인을 갖는다. 이 경우 인터럽트 발생후 인터럽트 처리 시작까지 더 많은 사이클이 필요하므로 제안하는 방식에서는 ISR 시작 이후 메모리 접근과 캐시 채우기를 기다리는 시간이 짧아져 더 유리하다.
상기한 본 발명의 실시예는 예시의 목적을 위해 개시된 것이고, 본 발명에 대한 통상의 지식을 가지는 당업자라면 본 발명의 사상과 범위 안에서 다양한 수정, 변경, 부가가 가능할 것이며, 이러한 수정, 변경 및 부가는 하기의 특허청구범위에 속하는 것으로 보아야 할 것이다.

Claims (8)

  1. 복수의 주변장치에 접근하기 위한 마스터 인터페이스;
    프로세서의 접근을 위한 슬레이브 인터페이스;
    상기 복수의 주변장치 중 적어도 하나로부터 인터럽트 전용 신호선을 통해 인터럽트 요청 신호를 수신하는 경우 상기 마스터 인터페이스 및 온칩 네트워크를 통해 상기 인터럽트 요청 신호를 전송한 주변장치로부터 인터럽트 처리에 필요한 상태 정보 및 데이터를 읽고 상기 상태 정보를 디코딩하는 페치(fetch)/디코드 유닛; 및
    상기 상태 정보 및 데이터를 내부 버퍼에 저장하고, 상기 프로세서에 인터럽트 요청 신호를 전송하며, 상기 슬레이브 인터페이스 및 상기 온칩 네트워크를 통해 상기 프로세서가 접근하는 경우 상기 상태 정보에 상응하는 ISR 수행을 위한 초기 명령어 및 상기 내부 버퍼에 저장된 데이터를 상기 프로세서로 공급하는 인터럽트 매니저를 포함하되,
    상기 페치/디코드 유닛은 상기 주변장치에 접근하여 인터럽트를 비활성화한 후 상기 상태 정보 및 데이터를 읽어오고,
    상기 상태 정보는 주변장치 ID(DID), 우선순위(PR), 작업 ID(TID), 프로세서 ID(PID) 및 첨부 데이터 수(NAD)를 포함하는 인터럽트 제어기.
  2. 삭제
  3. 삭제
  4. 제1항에 있어서,
    상기 인터럽트 매니저는 상기 DID 및 TID를 인식하는 경우 상기 인식된 DID 및 TID에 상응하는 ISR의 초기 명령어를 상기 프로세서에 공급하는 인터럽트 제어기.
  5. 제4항에 있어서,
    상기 내부 버퍼는,
    상기 상태 정보에 포함된 우선순위에 따라 상기 인터럽트 요청 신호를 저장하는 인터럽트 큐;
    상기 상태 정보를 저장하는 인터럽트 상태 레지스터; 및
    상기 데이터를 저장하는 데이터 메모리를 포함하는 인터럽트 제어기.
  6. 제5항에 있어서,
    각 ISR의 초기 명령어 및 상기 각 ISR이 저장된 메모리 주소를 포함하는 인터럽트 벡터 테이블을 더 포함하는 인터럽트 제어기.
  7. 제1항에 있어서,
    다중 프로세서 시스템인 경우, 상기 인터럽트 매니저는 상기 프로세서 ID를 인식하여 상기 프로세서 ID에 상응하는 프로세서에 인터럽트 요청 신호를 전송하는 인터럽트 제어기.
  8. 프로세서 및 복수의 주변장치와 연결되는 인터럽트 제어기에서 인터럽트를 처리하는 방법으로서,
    상기 복수의 주변장치 중 적어도 하나로부터 인터럽트 전용 신호선을 통해 인터럽트 요청 신호를 수신하는 단계;
    마스터 인터페이스 및 온칩 네트워크를 통해 상기 인터럽트 요청 신호를 전송한 주변장치로부터 인터럽트 처리에 필요한 상태 정보 및 데이터를 읽고 상기 상태 정보를 디코딩하는 단계;
    상기 상태 정보 및 데이터를 내부 버퍼에 저장하는 단계;
    상기 프로세서에 상기 인터럽트 요청 신호를 전송하는 단계; 및
    슬레이브 인터페이스 및 상기 온칩 네트워크를 통해 상기 프로세서가 접근하는 경우 상기 상태 정보에 상응하는 ISR 수행을 위한 초기 명령어 및 상기 내부 버퍼에 저장된 데이터를 상기 프로세서로 공급하는 단계를 포함하되,
    상기 디코딩하는 단계는, 상기 주변장치에 접근하여 인터럽트를 비활성화한 후 상기 상태 정보 및 데이터를 읽어오고,
    상기 상태 정보는 주변장치 ID(DID), 우선순위(PR), 작업 ID(TID), 프로세서 ID(PID) 및 첨부 데이터 수(NAD)를 포함하는 인터럽트 처리 방법.
KR1020210001585A 2021-01-06 2021-01-06 주변장치 정보 프리페치를 이용한 인터럽트 제어기 및 이를 통한 인터럽트 처리 방법 KR102462578B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210001585A KR102462578B1 (ko) 2021-01-06 2021-01-06 주변장치 정보 프리페치를 이용한 인터럽트 제어기 및 이를 통한 인터럽트 처리 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210001585A KR102462578B1 (ko) 2021-01-06 2021-01-06 주변장치 정보 프리페치를 이용한 인터럽트 제어기 및 이를 통한 인터럽트 처리 방법

Publications (2)

Publication Number Publication Date
KR20220099399A KR20220099399A (ko) 2022-07-13
KR102462578B1 true KR102462578B1 (ko) 2022-11-03

Family

ID=82401291

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210001585A KR102462578B1 (ko) 2021-01-06 2021-01-06 주변장치 정보 프리페치를 이용한 인터럽트 제어기 및 이를 통한 인터럽트 처리 방법

Country Status (1)

Country Link
KR (1) KR102462578B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116774637B (zh) * 2023-08-16 2023-12-08 通用技术集团机床工程研究院有限公司 数控系统及数控系统的数据传输方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040268007A1 (en) * 2003-06-25 2004-12-30 Nguyen Hung T. Data processing systems including high performance buses and interfaces, and associated communication methods
US20070186022A1 (en) * 2006-02-08 2007-08-09 Texas Instruments, Inc. Interrupt control system and method for reducing interrupt latency

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100820255B1 (ko) 2006-05-01 2008-04-08 엘아이지넥스원 주식회사 인터럽트 제어기

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040268007A1 (en) * 2003-06-25 2004-12-30 Nguyen Hung T. Data processing systems including high performance buses and interfaces, and associated communication methods
US20070186022A1 (en) * 2006-02-08 2007-08-09 Texas Instruments, Inc. Interrupt control system and method for reducing interrupt latency

Also Published As

Publication number Publication date
KR20220099399A (ko) 2022-07-13

Similar Documents

Publication Publication Date Title
US20070074214A1 (en) Event processing method in a computer system
US5819111A (en) System for managing transfer of data by delaying flow controlling of data through the interface controller until the run length encoded data transfer is complete
US5574868A (en) Bus grant prediction technique for a split transaction bus in a multiprocessor computer system
US5937200A (en) Using firmware to enhance the functionality of a controller
US8473717B2 (en) Coprocessor reset controller with queue for storing configuration information of subsequent sessions prior to completion of current session
US20040122986A1 (en) Method, system, and program for handling device interrupts
JPH0863354A (ja) コンピュータプロセッシングを行うための装置及び方法
JP5040050B2 (ja) 複数チャネルdmaコントローラおよびプロセッサシステム
US5371857A (en) Input/output interruption control system for a virtual machine
KR920010951B1 (ko) 데이타 제어장치 및 그것을 사용하는 시스템
KR102462578B1 (ko) 주변장치 정보 프리페치를 이용한 인터럽트 제어기 및 이를 통한 인터럽트 처리 방법
US6789142B2 (en) Method, system, and program for handling interrupt requests
JPH0142415B2 (ko)
CN112799723A (zh) 一种数据读取方法、装置及电子设备
US20110022767A1 (en) Dma controller with interrupt control processor
JP2001167058A (ja) 情報処理装置
KR20040045446A (ko) 버스트 모드를 지원하는 외부 메모리가 있는 인터페이싱프로세서
JP4451010B2 (ja) プログラマブルコントローラ
JP2001188745A (ja) 制御装置及び制御方法
KR102260820B1 (ko) 대칭적 인터페이스 기반 인터럽트 신호 처리 장치 및 방법
JP2001325148A (ja) アクセス制御方法及び装置
JPH10283302A (ja) 複数のプロセッサに接続されたバスにデータを供給する方法およびシステム
US7272680B2 (en) Method of transferring data between computer peripherals
JPH056333A (ja) マルチプロセサシステム
JP2000047930A (ja) データ処理装置

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant