KR102340871B1 - 인터럽트 처리 장치 및 방법 - Google Patents

인터럽트 처리 장치 및 방법 Download PDF

Info

Publication number
KR102340871B1
KR102340871B1 KR1020190152461A KR20190152461A KR102340871B1 KR 102340871 B1 KR102340871 B1 KR 102340871B1 KR 1020190152461 A KR1020190152461 A KR 1020190152461A KR 20190152461 A KR20190152461 A KR 20190152461A KR 102340871 B1 KR102340871 B1 KR 102340871B1
Authority
KR
South Korea
Prior art keywords
interrupt
context
module
stack pointer
enable signal
Prior art date
Application number
KR1020190152461A
Other languages
English (en)
Other versions
KR20210063851A (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 KR1020190152461A priority Critical patent/KR102340871B1/ko
Priority to PCT/KR2019/016355 priority patent/WO2021107173A1/ko
Publication of KR20210063851A publication Critical patent/KR20210063851A/ko
Application granted granted Critical
Publication of KR102340871B1 publication Critical patent/KR102340871B1/ko

Links

Images

Classifications

    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/26Address formation of the next micro-instruction ; Microprogram storage or retrieval arrangements
    • G06F9/262Arrangements for next microinstruction selection
    • G06F9/268Microinstruction selection not based on processing results, e.g. interrupt, patch, first cycle store, diagnostic programs
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/327Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for interrupts
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

본 발명은 인터럽트 처리 장치 및 방법에 관한 것이다. 본 발명의 실시예에 따른 인터럽트 처리 장치 및 방법은 프로세서 코어; 상기 프로세서 코어에서 태스크 처리 시 발생하는 인터럽트의 우선순위를 판단하여 인터럽트 허용 신호를 생성하는 인터럽트 컨트롤부; 상기 인터럽트 컨트롤부로부터 인터럽트 허용 신호를 전달받고, 콘텍스트 리스트에 마지막으로 저장된 콘텍스트 레지스터의 포인터 값인 이전 콘텍스트 포인터 값을 추출하는 콘텍스트 정보 관리부; 및 상기 콘텍스트 정보 관리부로부터 상기 이전 콘텍스트 포인터 값을 전달받고, 스택 포인터에 상기 이전 콘텍스트 포인터 값을 저장하는 스택 포인터 관리부; 를 포함할 수 있다.
를 포함할 수 있다.

Description

인터럽트 처리 장치 및 방법{APPARATUS AND METHOD FOR PROCESSING INTERRUPT}
본 발명은 인터럽트 처리 장치 및 방법에 관한 것으로, 보다 구체적으로는 인터럽트가 발생하는 경우에 있어서, 인터럽트 수행 시 데이터가 오버라이팅으로 인해 손실되는 것을 방지하고 인터럽트를 안정적으로 처리하기 위한 장치 및 방법에 관련된 것이다.
본 발명은 산업통상자원부 및 한국에너지기술평가원의 에너지수요관리핵심기술사업의 일환으로 수행한 연구로부터 도출된 것이다. [과제관리번호: 1415156896, 과제명: 초소형 전기차용 개방형 S/W 아키텍처 기반 에너지 효율 향상 제어시스템 개발]
인터럽트는 컴퓨터 작동 중에 발생한 예기치 않은 문제를 빠르게 처리하고 업무 처리가 계속될 수 있도록 하는 컴퓨터 운영체제의 한 기능으로, 컴퓨터 운영체제의 프로세서 코어에서 어떤 프로그램을 실행하고 있는데 당장 처리해야 하는 프로그램이 생겼을 경우, 인터럽트 신호를 보내서 먼저 처리해야 하는 프로그램을 처리하고 다시 예전 프로그램으로 돌아가는 것을 말한다.
일반적으로 한 개의 프로세서 코어는 한번에 하나의 작업만 할 수 있기 때문에, 여러 가지 작업이 있다면 여러 작업을 작게 쪼개어 하나씩 처리하게 된다.
하지만 여러 가지 프로그램 중 어느 하나에 갑작스럽게 문제가 생긴다면 문제가 되는 부분을 빨리 해결하여 다른 프로그램을 이용하는 데에도 지장이 가지 않도록 처리하는 것이 필요하다.
따라서, 프로세서 코어에서 다른 프로그램에도 기존에 진행하던 작업을 잠시 멈추고 문제가 있는 프로그램 먼저 해결할 수 있도록 신호를 보내 인터럽트를 수행하게 된다.
본 발명은 기존에 인터럽트를 수행하는 단계에서 발생하는 콘텍스트 정보의 오버라이팅을 방지하는 것이 가능한 인터럽트 처리 장치 및 방법을 제공하는 것을 목적으로 한다.
한편, 본 발명에서 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급하지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 발명의 실시예에 따른 인터럽트 처리 장치 및 방법은 프로세서 코어; 상기 프로세서 코어에서 태스크 처리 시 발생하는 인터럽트의 우선순위를 판단하여 인터럽트 허용 신호를 생성하는 인터럽트 컨트롤부; 상기 인터럽트 컨트롤부로부터 인터럽트 허용 신호를 전달받고, 가장 최근에 저장된 콘텍스트 레지스터의 스택 포인터 값인 이전 콘텍스트 포인터 값을 추출하는 콘텍스트 정보 관리부; 및 상기 콘텍스트 정보 관리부로부터 상기 이전 콘텍스트 포인터 값을 전달받고, 스택 포인터에 상기 이전 콘텍스트 포인터 값을 저장하는 스택 포인터 관리부;를 포함할 수 있다.
상기 인터럽트 컨트롤부는 상기 인터럽트의 우선순위를 판단하는 우선순위 판단 모듈; 상기 인터럽트의 허용 조건을 만족하는지 판단하는 인터럽트 허용 판단 모듈; 상기 인터럽트 허용 판단 모듈의 판단에 따라, 인터럽트를 활성화하는 글로벌 인터럽트 모듈; 및 상기 글로벌 인터럽트가 활성화되면 인터럽트 처리 함수를 불러오는 인터럽트 핸들러를 실행하는 인터럽트 핸들러 모듈을 포함할 수 있다.
상기 콘텍스트 정보 관리부는 콘텍스트 리스트를 작성하는 콘텍스트 리스트 모듈; 상기 콘텍스트 리스트에 마지막으로 저장된 레지스터의 스택 포인터 값을 추출하는 이전 콘텍스트 포인터 추출 모듈; 및 상기 이전 콘텍스트 포인터를 상기 스택 포인터 관리부에 전달하는 이전 콘텍스트 포인터 전달 모듈;을 포함할 수 있다.
상기 스택 포인터 관리부는 상기 이전 콘텍스트 포인터 값을 스택 포인터 레지스터에 저장하는 스택 포인터 저장 모듈; 및 상기 인터럽트 컨트롤부에 글로벌 인터럽트 활성화 신호를 전달하는 글로벌 인터럽트 활성화 신호 전달 모듈;을 포함할 수 있다.
프로세서 코어를 포함하는 인터럽트 처리 장치가 복수의 태스크 실행 시 인터럽트를 처리하는 방법에 있어서, 인터럽트 컨트롤부가 상기 프로세서 코어에서 태스크 처리 시 발생하는 인터럽트의 우선순위를 판단하여 인터럽트 허용 신호를 생성하는 단계; 콘텍스트 정보 관리부가 상기 인터럽트 허용 신호를 전달받고, 콘텍스트 리스트에 마지막으로 저장된 콘텍스트 레지스터의 포인터 값인 이전 콘텍스트 포인터 값을 추출하는 단계; 스택 포인터 관리부가 상기 이전 콘텍스트 포인터 값을 전달받고, 스택 포인터에 상기 이전 콘텍스트 포인터 값을 스택 포인터에 저장하는 단계; 및 인터럽트 컨트롤부가 상기 스택 포인터 관리부로부터 상기 글로벌 인터럽트 활성화 신호를 전달받아 인터럽트 핸들러를 실행하는 단계;를 포함할 수 있다.
상기 인터럽트 허용 신호를 생성하는 단계는 우선순위 판단 모듈이 상기 인터럽트의 우선순위를 판단하는 단계; 및 인터럽트 허용 판단 모듈이 상기 인터럽트의 허용 조건을 만족하는지 판단하는 단계;를 포함할 수 있다.
상기 이전 콘텍스트 포인터 값을 추출하는 단계는 콘텍스트 리스트 모듈이 상기 프로세서 코어에서 태스크 처리 시 발생하는 콘텍스트의 리스트를 작성하는 단계; 이전 콘텍스트 포인터 추출 모듈이, 상기 상기 프로세서 코어에서 태스크 처리 시 발생하는 콘텍스트를 콘텍스트 리스트 모듈에 의해 작성된 콘텍스트 리스트에 마지막으로 저장된 레지스터의 스택 포인터 값인 이전 콘텍스트 포인터 값을 추출하는 단계; 및 이전 콘텍스트 포인터 전달모듈이 상기 이전 콘텍스트 포인터를 상기 스택 포인터 관리부에 전달하는 단계;를 포함할 수 있다.
상기 이전 콘텍스트 포인터 값을 스택 포인터에 저장하는 단계는 스택 포인터 저장 모듈이 상기 이전 콘텍스트 포인터 값을 스택 포인터 레지스터에 저장하는 단계; 및 글로벌 인터럽트 활성화 신호 전달 모듈이 상기 인터럽트 컨트롤부에 글로벌 인터럽트 활성화 신호를 전달하는 단계;를 포함할 수 있다.
상기 인터럽트 핸들러를 실행하는 단계는 글로벌 인터럽트 모듈이 상기 스택 포인터 관리부로부터 전달받은 글로벌 인터럽트 활성화 신호에 따라, 인터럽트를 활성화하는 단계; 및 상기 글로벌 인터럽트가 활성화되면, 인터럽트 핸들러 모듈이 인터럽트 처리 함수를 불러오는 인터럽트 핸들러를 실행하는 단계;를 포함할 수 있다.
컴퓨터로 읽을 수 있는 기록 매체에 있어서, 제 6 항에 따른 인터럽트 처리 방법을 컴퓨터에서 실행시키기 위한 프로그램이 기록된 기록매체도 포함할 수 있다.
본 발명의 실시예에 따른 인터럽트 처리 장치 및 방법은, 인터럽트를 수행하던 중에 새로운 인터럽트가 발생한 경우 기존의 인터럽트 콘텍스트 정보가 오버라이팅 되는 것을 방지하는 것이 가능하다.
또한 인터럽트의 현재 스택 포인터에 이전 콘텍스트 값을 저장하기 때문에 복수의 인터럽트가 발생하더라도 오버라이팅을 방지하고 인터럽트를 안정적으로 처리하는 것이 가능하다.
한편, 본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 일 실시예에 따른 인터럽트 처리 장치의 블록도이다.
도 2는 본 발명의 일 실시예에 따른 인터럽트 처리 장치의 인터럽트 컨트롤부의 블록도이다.
도 3은 본 발명의 일 실시예에 따른 인터럽트 처리 장치의 콘텍스트 정보 관리부의 블록도이다.
도 4는 본 발명의 일 실시예에 따른 인터럽트 처리 장치의 스택 포인터 관리부의 블록도이다.
도 5는 본 발명의 일 실시예에 따른 인터럽트를 처리 장치의 작동을 설명하기 위한 도면이다.
본 발명의 다른 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술 되는 실시 예를 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시 예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예는 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
만일 정의되지 않더라도, 여기서 사용되는 모든 용어들(기술 혹은 과학 용어들을 포함)은 이 발명이 속한 종래 기술에서 보편적 기술에 의해 일반적으로 수용되는 것과 동일한 의미를 가진다. 일반적인 사전들에 의해 정의된 용어들은 관련된 기술 그리고/혹은 본 출원의 본문에 의미하는 것과 동일한 의미를 갖는 것으로 해석될 수 있고, 그리고 여기서 명확하게 정의된 표현이 아니더라도 개념화되거나 혹은 과도하게 형식적으로 해석되지 않을 것이다.
본 명세서에서 사용된 용어는 실시 예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 '포함한다' 및/또는 이 동사의 다양한 활용형들 예를 들어, '포함', '포함하는', '포함하고', '포함하며' 등은 언급된 조성, 성분, 구성요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 조성, 성분, 구성요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다. 본 명세서에서 '및/또는' 이라는 용어는 나열된 구성들 각각 또는 이들의 다양한 조합을 가리킨다.
한편, 본 명세서 전체에서 사용되는 '~부', '~기', '~블록', '~모듈' 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미할 수 있다. 예를 들어 소프트웨어, FPGA 또는 ASIC과 같은 하드웨어 구성요소를 의미할 수 있다. 그렇지만 '~부', '~기', '~블록', '~모듈' 등이 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '~부', '~기', '~블록', '~모듈'은 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다.
따라서, 일 예로서 '~부', '~기', '~블록', '~모듈'은 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 및 변수들을 포함한다. 구성요소들과 '~부', '~기', '~블록', '~모듈'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~부', '~기', '~블록', '~모듈'들로 결합되거나 추가적인 구성요소들과 '~부', '~기', '~블록', '~모듈'들로 더 분리될 수 있다.
이하, 본 명세서의 첨부된 도면을 참조하여 본 발명의 실시예를 상세하게 설명한다.
도 1은 본 발명의 일 실시예에 따른 인터럽트 처리 장치의 블록도이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 인터럽트 처리 장치(100)는 프로세서 코어(110), 저장창치(120), 인터럽트 컨트롤부(130), 콘텍스트 정보 관리부(140) 및 스택 포인터 관리부(150)을 포함할 수 있다.
좀 더 구체적으로는, 상기 프로세서 코어(110)는 운영체제(OS)를 통해 데이터를 처리하는 것이 가능하다. 상기 운영체제는 소프트웨어 또는 각종 함수가 실행되는 환경으로서, 태스크를 처리할 수 있다.
상기 프로세서 코어(110)는 태스크의 콘텍스트를 전환으로 인해 발생하는 인터럽트를 데이터의 손실없이 처리하기 위하여, 상기 저장장치, 상기 인터럽트 컨트롤부(130), 상기 콘텍스트 정보 관리부(140) 및 상기 스택 포인터 관리부(150)의 동작을 제어할 수 있다.
상기 프로세서 코어(110)는 시스템 운영체제에 포함된 복수의 콘텍스트들을 상호 전환하는 동작을 수행할 수 있다.
상기 저장장치(120)는 휘발성 및/또는 비휘발성 메모리를 포함할 수 있다. 또한, 본 발명의 일 실시예에 따른 상기 저장장치(120)는 인터럽트 처리 장치(100)에 포함된 구성요소와 관련된 명령 또는 데이터를 저장할 수 있다.
상기 저장장치(120)는 소프트웨어 및/또는 프로그램을 저장할 수 있다.
상기 프로그램은 커널, 미들웨어, 어플리케이션 프로그래밍 인터페이스(application programming interface(API)), 및/또는 어플리케이션 프로그램(또는 "어플리케이션") 등을 포함할 수 있다.
상기 인터럽트 컨트롤부(130)는 프로세서 코어에서 태스크 처리시 발생하는 콘텍스트 전환에 의한 인터럽트를 수행할 수 있다.
상기 인터럽트 컨트롤부(130)는 콘텍스트가 전환되어 인터럽트가 발생하면, 인터럽트 발생 신호를 상기 콘텍스트 정보 관리부(140)에 전달할 수 있다.
또한, 상기 인터럽트 컨트롤부(130)는 상기 스택 포인터 관리부(150)로부터 글로벌 인터럽트 활성화 신호를 전달받을 수 있으며, 상기 글로벌 인터럽트 활성화 신호를 전달받으면 글로벌 인터럽트를 활성화하고 인터럽트 핸들러를 실행할 수 있다.
상기 콘텍스트 정보 관리부(140)는 각 태스크의 콘텍스트 정보를 스택하여 저장할 수 있다. 또한, 상기 인터럽트 컨트롤부(130)로부터 인터럽트 허용 신호를 전달받을 수 있으며, 상기 인터럽트 허용 신호를 전달받으면 콘텍스트 스택 포인터 레지스터에 접근하여 이전 콘텍스트 포인터 값을 추출할 수 있다.
또한 상기 콘텍스트 정보 관리부(140)는 상기 스택 포인터 관리부(150))에 이전 콘텍스트 포인터 값을 전달할 수 있다.
상기 스택 포인터관리부(150)는 상기 콘텍스트 정보 관리부(140)에서 전달받은 이전 콘텍스트 포인터 값을 스택 포인터 레지스터에 저장할 수 있다.
또한, 상기 인터럽트 컨트롤부(130)에 글로벌 인터럽트 활성화 신호를 전달할 수 있다.
상기한 프로세서 코어, 저장장치, 레지스터 들은 본 발명의 기술적 사상을 수행하기 위한 하드웨어 및/또는 상기 하드웨어를 구동하기 위한 소프트웨어의 기능적 및/또는 구조적 결합을 의미할 수 있다.
도 2는 본 발명의 일 실시예에 따른 인터럽트 처리 장치의 인터럽트 컨트롤부(130)의 블록도이다.
도 2를 참고하면, 본 발명의 일 실시예에 따른 인터럽트 컨트롤부는 우선순위 판단 모듈(131), 인터럽트 허용 판단 모듈(132), 글로벌 인터럽트 모듈(133) 및 인터럽트 핸들러 모듈(134)를 포함할 수 있다.
본 발명의 일 실시예에 따르면, 프로세서 코어에서 태스크 수행 중에 인터럽트가 발생하면, 상기 인터럽트 컨트롤부(130)의 우선순위 판단 모듈(131)에서 상기 인터럽트의 우선순위를 판단할 수 있다.
상기 인터럽트 허용 판단 모듈(132)은 우선순위 판단 모듈(131)에서 판단한 인터럽트의 우선순위 판단 결과를 바탕으로, 상기 인터럽트가 사전에 저장되어 있는 인터럽트 허용 조건을 만족하는지 판단할 수 있다.
상기 인터럽트 허용 판단 모듈(132)은 상기 인터럽트가 미리 저장된 인터럽트 허용 조건을 만족하는 것으로 판단하는 경우에는 인터럽트 허용 신호를 생성할 수 있다.
상기 인터럽트 허용 판단 모듈(132)은 상기 인터럽트 허용 신호를 생성한 경우에는 상기 콘텍스트 정보 관리부(140)로 상기 인터럽트 허용 신호를 전달할 수 있다.
상기 인터럽트 허용 판단 모듈(132)은 상기 인터럽트가 미리 저장된 인터럽트 허용 조건을 만족하지 않는 것으로 판단하는 경우에는 인터럽트 허용 신호를 생성하지 않을 수 있다.
상기 인터럽트 허용 판단 모듈(132)은 상기 인터럽트 허용 신호를 생성하지 않은 경우에는 상기 인터럽트를 수행하지 않을 수 있다.
상기 글로벌 인터럽트 모듈(133)은 상기 인터럽트의 활성화 여부를 판단할 수 있는 인터럽트 활성화 비트를 포함할 수 있다.
예를 들어, 상기 인터럽트 활성화 비트가 '0'으로 표시되어 상기 글로벌 인터럽트가 활성화되면, 상기 프로세서 코어에서는 미리 정해진 순서에 따라 상기 인터럽트를 수행할 수 있다.
또한, 상기 인터럽트 활성화 비트가 '0'으로 표시되면 상기 프로세서 코어에서는 추가적인 인터럽트가 실행되는 것을 방지할 수도 있다.
예를 들어, 상기 인터럽트 활성화 비트가 '1'로 표시되어 상기 글로벌 인터럽트가 비활성화 되면, 상기 프로세서 코어에서는 상기 인터럽트를 수행하지 않을 수 있다.
상기 인터럽트 핸들러 모듈(134)은 상기 글로벌 인터럽트가 활성화되면 기존에 저장된 인터럽트 처리 함수를 불러올 수 있다.
상기 인터럽트 처리 함수는 발생한 인터럽트에 대응하여 특정 기능을 처리하는 코드 루틴일 수 있으며, 인터럽트 발생 원인에 따라 다른 방식의 작업을 수행하는 함수를 불러올 수 있다.
상기 인터럽트 핸들러 모듈(134)은 상기 글로벌 인터럽트가 비활성화되면 작동하지 않을 수 있다.
도 3은 본 발명의 일 실시예에 따른 인터럽트 처리 장치의 콘텍스트 정보 관리부(140)의 블록도이다.
본 발명의 일 실시예에 따르면, 상기 콘텍스트 정보 관리부(140)는 콘텍스트 리스트를 작성하는 콘텍스트 리스트 모듈(141)과 상기 콘텍스트 리스트에 마지막으로 저장된 콘텍스트 레지스터의 포인터 값을 추출하는 이전 콘텍스트 포인터 추출 모듈(142) 및 이전 콘텍스트 포인터 전달 모듈(143)을 포함할 수 있다.
상기 콘텍스트 정보 관리부(140)는 상기 프로세서 코어(110)에서 태스크를 처리하면서 상기 태스크의 흐름 정보인 콘텍스트 정보를 획득할 수 있다.
상기 콘텍스트 정보는 콘텍스트 리스트 모듈(141)의 콘텍스트 리스트에 저장될 수 있다.
상기 콘텍스트 리스트는 각각의 콘텍스트 정보를 저장할 수 있는 레지스터로 구성될 수 있다.
상기 콘텍스트 리스트의 레지스터에 콘텍스트 정보가 저장되는 방법을 예를 들어 설명하면 다음과 같다.
상기 콘텍스트 정보는 태스크를 처리하는 순서대로 스택하여 저장될 수 있으며, 가장 최근에 처리된 태스크의 콘텍스트 정보는 콘텍스트 리스트의 가장 위에 저장될 수 있다.
상기 이전 콘텍스트 포인터 추출 모듈(142)은 상기 콘텍스트 리스트의 가장 위에 저장된 레지스터의 스택 포인터 정보를 추출할 수 있다,
상기 콘텍스트 리스트의 가장 위에 저장된 레지스터의 스택 포인터 정보는 상기 프로세서 코어(110)에서 수행하여 저장될 콘텍스트 정보의 이전 콘텍스트 정보라고 할 수 있다.
따라서, 상기 이전 콘텍스트 포인터 추출 모듈(142)은 상기 이전 콘텍스트 정보가 저장된 레지스터의 스택 포인터 정보를 추출할 수 있다.
이러한 구성에 의하면, 콘텍스트 정보는 상기 프로세서 코어(110)에서 작업을 수행할 때에 생성되는 콘텍스트 정보가 순차적으로 스택되기 때문에, 새로운 인터럽트가 발생하여도 기존에 저장되었던 콘텍스트 정보가 오버라이팅되어 손실되는 것을 방지할 수 있다.
도 4는 본 발명의 일 실시예에 따른 인터럽트 처리 장치의 스택 포인터 관리부(150)의 블록도이다.
본 발명의 일 실시예에 따른 상기 스택 포인터 관리부(150)는 스택 포인터 저장 모듈(151)과 글로벌 인터럽트 활성화 신호 전달 모듈(152)를 포함할 수 있다.
상기 스택 포인터 저장 모듈(151)은 상기 콘텍스트 정보 관리부(140)로부터 전달받은 이전 콘텍스트 포인터 값을 상기 스택 포인터 레지스터의 스택 포인터 레지스터에 저장할 수 있다.
상기 글로벌 인터럽트 활성화 신호 전달 모듈(152)은 상기 스택 포인터 레지스터에 이전 콘텍스트 포인터 값을 저장한 뒤, 상기 인터럽트 컨트롤부(130)에 글로벌 인터럽트 활성화 신호를 전달할 수 있다.
도 5는 본 발명의 일 실시예에 따른 인터럽트를 처리 장치의 작동을 설명하기 위한 도면이다.
인터럽트 발생 단계(S100)에서, 상기 프로세서 코어(110)에서 복수의 태스크 실행 시 콘텍스트 전환으로 인해 인터럽트가 발생할 수 있다.
상기 인터럽트 컨트롤부(130)는 상기 인터럽트 발생 정보를 전달받고, 상기 인터럽트 컨트롤부의 상기 우선순위 판단 모듈(131)은 상기 인터럽트의 우선순위를 판단하는 단계를 포함할 수 있다.
상기 인터럽트 컨트롤부(130)의 인터럽트 허용 판단 모듈(132)은 상기 우선순위 판단 모듈(131)에서 판단한 인터럽트의 우선순위 판단 결과를 바탕으로, 상기 인터럽트가 사전에 저장되어 있는 인터럽트 허용 조건을 만족하는지 판단하는 단계를 포함할 수 있다.
상기 인터럽트 허용 판단 모듈(132)은 상기 인터럽트가 미리 저장된 인터럽트 허용 조건을 만족하는 것으로 판단하는 경우에는 인터럽트 허용 신호를 생성할 수 있다.
상기 인터럽트 허용 판단 모듈(132)은 상기 인터럽트가 미리 저장된 인터럽트 허용 조건을 만족하지 않는 것으로 판단하는 경우에는 인터럽트 허용 신호를 생성하지 않을 수 있다.
인터럽트 허용 신호를 전달하는 단계(S200)에서, 상기 인터럽트 허용 판단 모듈(132)에서 생성한 인터럽트 허용 신호를 상기 콘텍스트 정보 관리부(140)으로 전달할 수 있다.
상기 콘텍스트 정보 관리부(140)는 상기 인터럽트 허용 신호를 전달받고, 콘텍스트 리스트 모듈(141)의 콘텍스트 리스트에 접근하는 단계를 포함할 수 있다.
상기 콘텍스트 리스트는 각각의 레지스터 마다 스택 포인터 정보를 포함할 수 있다.
또한, 상기 이전 콘텍스트 포인터 추출 모듈(142)은 상기 콘텍스트 리스트의 가장 위에 저장된 레지스터의 스택 포인터 정보인 이전 콘텍스트 포인터 값을 추출하는 단계를 포함할 수 있다
이전 콘텍스트 포인터 값을 전달하는 단계(S300)에서, 상기 이전 콘텍스트 포인터 값을 상기 스택 포인터 관리부(150)에 전달하는 단계를 포함할 수 있다.
상기 스택 포인터 관리부(150)의 스택 포인터 저장 모듈(151)은 전달 받은 이전 콘텍스트 포인터 값을 스택 포인터 레지스터에 저장하는 단계를 포함할 수 있다.
상기 스택 포인터 관리부(150)의 글로벌 인터럽트 활성화 신호 전달 모듈(152)은 상기 인터럽트 컨트롤부(130)에 전달하기 위한 글로벌 인터럽트 활성화 신호를 생성할 수 있다.
글로벌 인터럽트 활성화 신호를 전달하는 단계(S400)에서, 상기 글로벌 인터럽트 활성화 신호 전달 모듈(152)에서 생성한 글로벌 인터럽트 활성화 신호를 상기 인터럽트 컨트롤부(130)에 전달하는 단계를 포함할 수 있다.
글로벌 인터럽트를 활성화하는 단계(S500)에서, 상기 인터럽트 컨트롤부(130)의 글로벌 인터럽트 모듈(133)은 인터럽트의 활성화 여부를 판단할 수 있는 인터럽트 활성화 비트를 포함할 수 있으며, 상기 인터럽트 활성화 비트를 변경하여 글로벌 인터럽트를 활성화하는 단계를 포함할 수 있다.
상기 인터럽트 핸들러 모듈(134)은 상기 글로벌 인터럽트가 활성화되면 기존에 저장된 인터럽트 처리 함수를 불러오는 단계를 포함할 수 있다.
이상의 상세한 설명은 본 발명을 예시하는 것이다. 또한 전술한 내용은 본 발명의 바람직한 실시 형태를 나타내어 설명하는 것이며, 본 발명은 다양한 다른 조합, 변경 및 환경에서 사용할 수 있다. 즉 본 명세서에 개시된 발명의 개념의 범위, 저술한 개시 내용과 균등한 범위 및/또는 당업계의 기술 또는 지식의 범위내에서 변경 또는 수정이 가능하다. 저술한 실시예는 본 발명의 기술적 사상을 구현하기 위한 최선의 상태를 설명하는 것이며, 본 발명의 구체적인 적용 분야 및 용도에서 요구되는 다양한 변경도 가능하다. 따라서 이상의 발명의 상세한 설명은 개시된 실시 상태로 본 발명을 제한하려는 의도가 아니다. 또한 첨부된 청구범위는 다른 실시 상태도 포함하는 것으로 해석되어야 한다.
400: 인터럽트 처리 장치
410: 프로세서 코어
420: 저장장치
430: 인터럽트 컨트롤 레지스터
440: 인터럽트 스택 포인터 레지스터
450: 스택 포인터 레지스터
460: 콘텍스트 저장 레지스터

Claims (10)

  1. 프로세서 코어;
    상기 프로세서 코어에서 태스크 처리 시 발생하는 인터럽트의 우선순위를 판단하여 인터럽트 허용 신호를 생성하는 인터럽트 컨트롤부;
    상기 인터럽트 컨트롤부로부터 인터럽트 허용 신호를 전달받고, 가장 최근에 저장된 콘텍스트 레지스터의 스택 포인터 값인 이전 콘텍스트 포인터 값을 추출하는 콘텍스트 정보 관리부; 및
    상기 콘텍스트 정보 관리부로부터 상기 이전 콘텍스트 포인터 값을 전달받고, 스택 포인터에 상기 이전 콘텍스트 포인터 값을 저장하는 스택 포인터 관리부를 포함하고,
    상기 인터럽트 컨트롤부는:
    상기 인터럽트의 우선순위를 판단하는 우선순위 판단 모듈;
    상기 인터럽트의 허용 조건을 만족하는지 판단하는 인터럽트 허용 판단 모듈;
    글로벌 인터럽트 활성화 신호를 전달 받으면, 인터럽트의 활성화 여부를 판단할 수 있는 인터럽트 활성화 비트를 변경하여 글로벌 인터럽트를 활성화하는 글로벌 인터럽트 모듈; 및
    상기 글로벌 인터럽트가 활성화되면 인터럽트 처리 함수를 불러오는 인터럽트 핸들러를 실행하는 인터럽트 핸들러 모듈을 포함하고,
    상기 스택 포인터 관리부는:
    상기 이전 콘텍스트 포인터 값을 스택 포인터 레지스터에 저장하는 스택 포인터 저장 모듈; 및
    상기 스택 포인터 저장 모듈에 의한 이전 콘텍스트 포인터 값의 저장이 완료된 후에, 글로벌 인터럽트 활성화 신호를 생성하여 이를 상기 인터럽트 컨트롤부에 전달하는 글로벌 인터럽트 활성화 신호 전달 모듈;
    을 포함하는 인터럽트 처리 장치.
  2. 삭제
  3. 제 1항에 있어서,
    상기 콘텍스트 정보 관리부는:
    콘텍스트 리스트를 작성하는 콘텍스트 리스트 모듈;
    상기 콘텍스트 리스트에 마지막으로 저장된 레지스터의 스택 포인터 값을 추출하는 이전 콘텍스트 포인터 추출 모듈; 및
    상기 이전 콘텍스트 포인터를 상기 스택 포인터 관리부에 전달하는 이전 콘텍스트 포인터 전달 모듈;
    을 포함하는 인터럽트 처리 장치.
  4. 삭제
  5. 프로세서 코어를 포함하는 인터럽트 처리 장치가 복수의 태스크 실행 시 인터럽트를 처리하는 방법에 있어서,
    인터럽트 컨트롤부가 상기 프로세서 코어에서 태스크 처리 시 발생하는 인터럽트의 우선순위를 판단하여 인터럽트 허용 신호를 생성하는 단계;
    콘텍스트 정보 관리부가 상기 인터럽트 허용 신호를 전달받고, 콘텍스트 리스트에 마지막으로 저장된 콘텍스트 레지스터의 포인터 값인 이전 콘텍스트 포인터 값을 추출하는 단계;
    스택 포인터 관리부가 상기 이전 콘텍스트 포인터 값을 전달받고, 스택 포인터에 상기 이전 콘텍스트 포인터 값을 스택 포인터에 저장하는 단계; 및
    인터럽트 컨트롤부가 상기 스택 포인터 관리부로부터 글로벌 인터럽트 활성화 신호를 전달받아 인터럽트 핸들러를 실행하는 단계를 포함하고,
    상기 인터럽트 허용 신호를 생성하는 단계는:
    우선순위 판단 모듈이 상기 인터럽트의 우선순위를 판단하는 단계; 및
    인터럽트 허용 판단 모듈이 상기 인터럽트의 허용 조건을 만족하는지 판단하는 단계를 포함하고,
    상기 이전 콘텍스트 포인터 값을 스택 포인터에 저장하는 단계는:
    스택 포인터 저장 모듈이 상기 이전 콘텍스트 포인터 값을 스택 포인터 레지스터에 저장하는 단계; 및
    글로벌 인터럽트 활성화 신호 전달 모듈이 상기 스택 포인터 저장 모듈에 의한 이전 콘텍스트 포인터 값의 저장이 완료된 후에, 글로벌 인터럽트 활성화 신호를 생성하여 이를 상기 인터럽트 컨트롤부에 전달하는 단계룰 포함하고,
    상기 인터럽트 핸들러를 실행하는 단계는:
    글로벌 인터럽트 모듈이 상기 글로벌 인터럽트 활성화 신호 전달 모듈로부터 글로벌 인터럽트 활성화 신호를 전달받으면, 인터럽트 활성화 여부를 판단할 수 있는 인터럽트 활성화 비트를 변경하여 글로벌 인터럽트를 활성화하는 단계; 및
    상기 글로벌 인터럽트가 활성화되면, 인터럽트 핸들러 모듈이 인터럽트 처리 함수를 불러오는 인터럽트 핸들러를 실행하는 단계;
    를 포함하는 인터럽트 처리 방법.
  6. 삭제
  7. 제 5항에 있어서,
    상기 이전 콘텍스트 포인터 값을 추출하는 단계는:
    이전 콘텍스트 포인터 추출 모듈이, 상기 상기 프로세서 코어에서 태스크 처리 시 발생하는 콘텍스트를 콘텍스트 리스트 모듈에 의해 작성된 콘텍스트 리스트에 마지막으로 저장된 레지스터의 스택 포인터 값인 이전 콘텍스트 포인터 값을 추출하는 단계; 및
    이전 콘텍스트 포인터 전달모듈이 상기 이전 콘텍스트 포인터를 상기 스택 포인터 관리부에 전달하는 단계;
    를 포함하는 인터럽트 처리 방법.
  8. 삭제
  9. 삭제
  10. 컴퓨터로 읽을 수 있는 기록 매체에 있어서,
    제 5 항에 따른 인터럽트 처리 방법을 컴퓨터에서 실행시키기 위한 프로그램이 기록된 기록매체.
KR1020190152461A 2019-11-25 2019-11-25 인터럽트 처리 장치 및 방법 KR102340871B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020190152461A KR102340871B1 (ko) 2019-11-25 2019-11-25 인터럽트 처리 장치 및 방법
PCT/KR2019/016355 WO2021107173A1 (ko) 2019-11-25 2019-11-26 인터럽트 처리 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190152461A KR102340871B1 (ko) 2019-11-25 2019-11-25 인터럽트 처리 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20210063851A KR20210063851A (ko) 2021-06-02
KR102340871B1 true KR102340871B1 (ko) 2021-12-20

Family

ID=76130608

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190152461A KR102340871B1 (ko) 2019-11-25 2019-11-25 인터럽트 처리 장치 및 방법

Country Status (2)

Country Link
KR (1) KR102340871B1 (ko)
WO (1) WO2021107173A1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020184423A1 (en) 2001-05-10 2002-12-05 Safi Khan Mobile communication device having a prioritized interrupt controller
US20150220464A1 (en) 2014-02-04 2015-08-06 Freescale Semiconductor, Inc. Dynamic interrupt stack protection
US20180203722A1 (en) * 2017-01-19 2018-07-19 Samsung Electronics Co., Ltd. Method for reducing interrupt latency in embedded systems

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6401155B1 (en) * 1998-12-22 2002-06-04 Philips Electronics North America Corporation Interrupt/software-controlled thread processing
KR100498469B1 (ko) * 2002-12-23 2005-07-01 삼성전자주식회사 지연 시간을 최소화한 인터럽트 콘트롤 시스템 및 그 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020184423A1 (en) 2001-05-10 2002-12-05 Safi Khan Mobile communication device having a prioritized interrupt controller
US20150220464A1 (en) 2014-02-04 2015-08-06 Freescale Semiconductor, Inc. Dynamic interrupt stack protection
US20180203722A1 (en) * 2017-01-19 2018-07-19 Samsung Electronics Co., Ltd. Method for reducing interrupt latency in embedded systems

Also Published As

Publication number Publication date
WO2021107173A1 (ko) 2021-06-03
KR20210063851A (ko) 2021-06-02

Similar Documents

Publication Publication Date Title
JP6185487B2 (ja) ドメイン間で切り替わる際のセキュアなデータの非セキュアなアクセスから隔離された状態での維持
US9727343B2 (en) Apparatus and method for handling exception events
US8176485B2 (en) Launching hypervisor under running operating system
EP2812836B1 (en) Exception handling in a data processing apparatus having a secure domain and a less secure domain
US5701493A (en) Exception handling method and apparatus in data processing systems
US10025923B2 (en) Data processing apparatus and method for protecting secure data and program code from non-secure access when switching between secure and less secure domains
JP6209611B2 (ja) 安全なドメイン及びより安全性の低いドメインを有するデータ処理装置における例外処理
US20030056071A1 (en) Adaptable boot loader
EP3306470B1 (en) Method and apparatus for executing non-maskable interrupt
US6666383B2 (en) Selective access to multiple registers having a common name
US9202071B2 (en) Exception handling in a data processing apparatus having a secure domain and a less secure domain
EP3048551B1 (en) Systems and methods for active operating system kernel protection
EP3457283B1 (en) Centralized error handling in aplication specific integrated circuits
US10031773B2 (en) Method to communicate task context information and device therefor
CN102822802A (zh) 多核处理器系统、控制程序以及控制方法
KR930002322B1 (ko) 데이타 처리 시스템
JP2023511815A (ja) 例外を処理するための装置及び方法
KR102340871B1 (ko) 인터럽트 처리 장치 및 방법
US20190034259A1 (en) Systems and Methods for Implementing a Thread Trace Log
US20030126520A1 (en) System and method for separating exception vectors in a multiprocessor data processing system
KR101785540B1 (ko) 비결정적인 하드웨어 인터럽트에 대한 요청을 처리하는 에뮬레이션 방법 및 장치
US11593159B2 (en) External exception handling
CN111788555B (zh) 数据处理装置和方法
US11152076B2 (en) Apparatus and method for executing debug instructions
JP2019511042A (ja) レジスタ・アクセス制御

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant