KR20170065845A - 프로세서 및 제어 방법 - Google Patents

프로세서 및 제어 방법 Download PDF

Info

Publication number
KR20170065845A
KR20170065845A KR1020150172093A KR20150172093A KR20170065845A KR 20170065845 A KR20170065845 A KR 20170065845A KR 1020150172093 A KR1020150172093 A KR 1020150172093A KR 20150172093 A KR20150172093 A KR 20150172093A KR 20170065845 A KR20170065845 A KR 20170065845A
Authority
KR
South Korea
Prior art keywords
register
instruction
processor
data
change
Prior art date
Application number
KR1020150172093A
Other languages
English (en)
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 KR1020150172093A priority Critical patent/KR20170065845A/ko
Priority to US15/136,183 priority patent/US10318452B2/en
Publication of KR20170065845A publication Critical patent/KR20170065845A/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/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
    • 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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/3017Runtime instruction translation, e.g. macros
    • 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/30181Instruction operation extension or modification
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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 or look ahead
    • G06F9/3802Instruction prefetching
    • 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 or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • 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 or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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/461Saving or restoring of program or task context
    • G06F9/462Saving or restoring of program or task context with multiple register sets
    • 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

Landscapes

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

Abstract

프로세서 및 제어 방법이 개시된다. 프로세서는 인터럽트 서비스 루틴의 처리를 요청받는 경우, 레지스터에 저장된 데이터의 백업없이 인터럽트 서비스 루틴의 제1 명령어를 입력받는 명령어 페치 모듈, 입력된 제1 명령어를 분석하여 레지스터에 저장된 데이터의 변경이 필요한지 여부를 판단하는 감지 모듈, 저장된 데이터의 변경이 최초 변경인 경우, 데이터를 임시 메모리에 저장하는 제2 명령어를 생성하는 명령어 생성 모듈, 생성된 제2 명령어 및 제1 명령어를 순차적으로 선택하는 명령어 선택 모듈 및 제2 명령어 및 제1 명령어를 수행하는 제어 모듈을 포함한다.

Description

프로세서 및 제어 방법{PROCESSOR AND CONTROLLING METHOD THEREOF}
본 발명은 프로세서 및 제어 방법에 관한 것으로, 보다 상세하게는 인터럽트 서비스를 처리하는 프로세서 및 제어 방법에 관한 것이다.
전자 장치는 응용 프로그램을 실행하여 특정 기능을 수행한다. 응용 프로그램은 연속하는 명령어를 포함하는 서비스 루틴이며, 전자 장치의 프로세서가 연속하는 명령어를 처리한다. 프로세서는 연속하는 명령어를 순차적으로 처리한다. 그러나, 응용 프로그램은 필요에 따라 인터럽트 서비스 루틴을 포함할 수 있다. 인터럽트 서비스 루틴은 메인 서비스 루틴의 처리 중에 설정된 이벤트의 발생에 따라 실행될 수 있다. 인터럽트가 발생되면 프로세서는 메인 서비스 루틴의 처리를 중지하고 인터럽트 서비스 루틴을 처리한다. 프로세서는 인터럽트 서비스 루틴의 처리를 위해 프로세서 내부의 레지스터를 사용해야 한다. 그러나, 프로세서는 인터럽트 서비스 루틴이 시작되는 시점에서 어느 레지스터를 사용할지 알 수 없다. 따라서, 프로세서는 모든 레지스터에 저장된 데이터를 메모리에 저장한 후 인터럽트 서비스 루틴을 처리한다. 그리고, 인터럽트 서비스 루틴이 종료되면 프로세서는 메모리에 저장한 데이터를 다시 모든 레지스터로 복원한다. 따라서, 인터럽트 서비스 루틴의 처리 시간이 많이 소요되는 문제점이 있다.
본 발명의 목적은 인터럽트 서비스 루틴의 처리 시간을 줄일 수 있는 프로세서 및 제어 방법을 제공함에 있다.
이상과 같은 목적을 달성하기 위한 본 발명의 일 실시 예에 따른 프로세서는 인터럽트 서비스 루틴의 처리를 요청받는 경우, 레지스터에 저장된 데이터의 백업없이 상기 인터럽트 서비스 루틴의 제1 명령어를 입력받는 명령어 페치 모듈, 상기 입력된 제1 명령어를 분석하여 상기 레지스터에 저장된 데이터의 변경이 필요한지 여부를 판단하는 감지 모듈, 상기 저장된 데이터의 변경이 최초 변경인 경우, 상기 데이터를 임시 메모리에 저장하는 제2 명령어를 생성하는 명령어 생성 모듈, 상기 생성된 제2 명령어 및 상기 제1 명령어를 순차적으로 선택하는 명령어 선택 모듈 및 상기 제2 명령어 및 상기 제1 명령어를 수행하는 제어 모듈을 포함한다.
그리고, 상기 제어 모듈은 상기 데이터를 상기 임시 메모리에 저장한 후 상기 제1 명령어를 수행할 수 있다.
또한, 상기 제어 모듈은 상기 인터럽트 서비스 루틴이 종료되는 경우, 상기 임시 메모리에 저장된 상기 데이터를 상기 레지스터로 복원(restore)할 수 있다.
또한, 상기 감지 모듈은 레지스터 플래그를 포함하여 상기 인터럽트 서비스 루틴의 처리를 요청받는 경우 상기 레지스터 플래그의 값을 초기화하고, 상기 저장된 데이터의 변경이 최초 변경이 경우 상기 레지스터 플래그의 값을 변경할 수 있다.
그리고, 상기 감지 모듈은 상기 레지스터 플래그의 값이 변경된 경우, 상기 저장된 데이터가 변경된 것으로 판단할 수 있다.
한편, 상기 레지스터는 복수 개 존재할 수 있다.
그리고, 상기 제어 모듈은 상기 복수 개의 레지스터 중 상기 레지스터 플래그의 값이 변경된 레지스터에 대응하는 데이터만을 상기 임시 메모리로부터 복원할 수 있다.
또한, 상기 명령어 생성 모듈은 상기 레지스터에 저장된 상기 데이터의 변경이 없거나 최초의 변경이 아닌 경우, 상기 제2 명령어를 생성하지 않을 수 있다.
한편, 본 발명의 일 실시 예에 따른 프로세서의 제어 방법은 인터럽트 서비스 루틴의 처리를 요청받는 경우, 레지스터에 저장된 데이터의 백업없이 상기 인터럽트 서비스 루틴의 제1 명령어를 입력받는 단계, 상기 입력된 제1 명령어를 분석하여 상기 레지스터에 저장된 데이터의 변경이 필요한지 여부를 판단하는 단계, 상기 저장된 데이터의 변경이 최초 변경인 경우, 상기 데이터를 임시 메모리에 저장하는 제2 명령어를 생성하는 단계, 상기 생성된 제2 명령어 및 상기 제1 명령어를 순차적으로 선택하는 단계 및 상기 제2 명령어 및 상기 제1 명령어를 수행하는 단계를 포함한다.
그리고, 상기 수행하는 단계는 상기 데이터를 상기 임시 메모리에 저장한 후 상기 제1 명령어를 수행할 수 있다.
한편, 프로세서의 제어 방법은 상기 인터럽트 서비스 루틴이 종료되는 경우, 상기 임시 메모리에 저장된 상기 데이터를 상기 레지스터로 복원(restore)하는 단계를 더 포함할 수 있다.
그리고, 상기 판단하는 단계는 레지스터 플래그를 포함하여 상기 인터럽트 서비스 루틴의 처리를 요청받는 경우 상기 레지스터 플래그의 값을 초기화하고, 상기 저장된 데이터의 변경이 최초 변경인 경우 상기 레지스터 플래그의 값을 변경할 수 있다.
또한, 상기 판단하는 단계는 상기 레지스터 플래그의 값이 변경된 경우, 상기 레지스터에 저장된 상기 데이터가 변경된 것으로 판단할 수 있다.
한편, 상기 레지스터는 복수 개 존재하고, 상기 복원하는 단계는 상기 복수 개의 레지스터 중 상기 레지스터 플래그의 값이 변경된 레지스터에 대응하는 데이터만을 상기 임시 메모리로부터 복원할 수 있다.
그리고, 상기 생성하는 단계는 상기 레지스터에 저장된 상기 데이터의 변경이 없거나 최초의 변경이 아닌 경우, 상기 제2 명령어를 생성하지 않을 수 있다.
이상 설명한 바와 같이 본 발명의 다양한 실시 예에 따르면 프로세서 및 제어 방법은 인터럽트 서비스 루틴의 처리 시간을 줄임으로써 프로세서의 성능을 높일 수 있다.
도 1은 본 발명의 일 실시 예에 따른 프로세서의 블록도이다.
도 2는 본 발명의 일 실시 예에 따른 인터럽트 서비스 루틴을 처리하는 과정을 설명하는 도면이다.
도 3은 동일한 인터럽트 서비스 루틴을 처리하는 다른 프로세서 코어와의 속도를 비교하는 도면이다.
도 4는 본 발명의 일 실시 예에 따른 명령어를 분석하는 과정을 설명하는 도면이다.
도 5는 본 발명의 일 실시 예에 따른 데이터를 백업한 레지스터를 표시하는 방법을 설명하는 도면이다.
도 6은 본 발명의 일 실시 예에 따른 프로세서 제어 방법의 흐름도이다.
이하에서는 첨부된 도면을 참조하여 본 발명의 실시예를 보다 상세하게 설명한다. 본 명세서에 기재된 실시 예는 다양하게 변형될 수 있다. 특정한 실시 예가 도면에서 묘사되고 상세한 설명에서 자세하게 설명될 수 있다. 그러나, 첨부된 도면에 개시된 특정한 실시 예는 본 발명의 다양한 실시 예를 쉽게 이해하도록 하기 위한 것일 뿐이다. 따라서, 첨부된 도면에 개시된 특정 실시 예에 의해 본 발명의 기술적 사상이 제한되는 것은 아니며, 본 발명은 본 발명의 사상 및 기술 범위에 포함되는 모든 균등물 또는 대체물을 포함하는 것으로 이해되어야 한다. 다만, 본 발명을 설명함에 있어서, 관련된 공지 기능 혹은 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우, 그에 대한 상세한 설명은 축약하거나 생략한다.
제1, 제2 등과 같이 서수를 포함하는 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이러한 구성요소들은 상술한 용어에 의해 한정되지는 않는다. 상술한 용어는 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다.
본 명세서에서, "포함한다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다. 어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
한편, 본 명세서에서 사용되는 구성요소에 대한 "모듈" 또는 "부"는 적어도 하나의 기능 또는 동작을 수행한다. 그리고, "모듈" 또는 "부"는 하드웨어, 소프트웨어 또는 하드웨어와 소프트웨어의 조합에 의해 기능 또는 동작을 수행할 수 있다. 또한, 특정 하드웨어에서 수행되어야 하거나 적어도 하나의 프로세서에서 수행되는 "모듈" 또는 "부"를 제외한 복수의 "모듈들" 또는 복수의 "부들"은 적어도 하나의 모듈로 통합될 수도 있다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다.
도 1은 본 발명의 일 실시 예에 따른 프로세서의 블록도이다.
도 1을 참조하면, 프로세서(100)는 명령어 페치 모듈(110), 감지 모듈(120), 명령서 생성 모듈(130), 명령어 선택 모듈(140) 및 제어 모듈(150)을 포함한다. 명령어 페치 모듈(110)은 인터럽트 서비스 루틴(Interrupt Service Routine: ISR)의 처리를 요청받는 경우, 레지스터에 저장된 데이터의 백업없이 인터럽트 서비스 루틴의 제1 명령어를 입력받는다. 인터럽트 서비스 루틴은 인터럽트 이벤트가 발생하는 경우 실행될 수 있다. 일반적으로 프로세서(100)는 응용 프로그램을 실행한다. 응용 프로그램은 메인 서비스 루틴을 포함한다. 프로세서(100)는 메인 서비스 루틴에 포함된 명령어를 순차적으로 처리한다. 프로세서(100)가 메인 서비스 루틴을 실행하는 중에 외부 장치(미도시)에서 인터럽트 이벤트가 발생할 수 있다. 예를 들어, 외부 장치는 디스크, 키보드, 프린터, 디스플레이 장치 등을 포함할 수 있다. 인터럽트 이벤트가 발생하면, 프로세서(100)는 처리중인 메인 서비스 루틴을 잠시 중단하고 발생된 인터럽트에 대응하는 인터럽트 서비스 루틴을 실행할 수 있다.
종래 기술의 경우, 인터럽트 서비스 루틴을 실행하기 전에 프로세서가 레지스터의 데이터를 임시 메모리에 백업한다. 예를 들어, 임시 메모리는 스택일 수 있다. 프로세서가 인터럽트 서비스 루틴을 실행할 때, 인터럽트 서비스 루틴에 포함된 명령어를 처리하면서 데이터를 레지스터에 쓸(write) 필요가 있다. 따라서, 프로세서가 메인 서비스 루틴을 실행하면서 레지스터에 쓴 데이터를 유지하기 위해 프로세서는 인터럽트 서비스 루틴을 실행하기 전에 레지스터의 데이터를 임시 메모리에 백업한다. 프로세서는 인터럽트 서비스 루틴을 실행하면서 어느 레지스터가 사용될 지 알 수 없으므로 모든 레지스터에 저장된 데이터를 임시 메모리에 백업한다. 따라서, 종래 기술의 경우 프로세서가 인터럽트 서비스 루틴을 처리하기 전에 많은 시간이 소요될 수 있다.
그러나, 본 발명의 프로세서(100)는 인터럽트 서비스 루틴을 실행하기 전에 레지스터에 저장된 데이터를 임시 메모리에 백업하지 않는다. 따라서, 본 발명의 프로세서(100)는 레지스터의 데이터를 백업하는 시간을 절약할 수 있다. 인터럽트 서비스 루틴이 실행되면, 프로세서(100)는 인터럽트 서비스 루틴의 명령어를 입력받는다. 즉, 프로세서(100) 내부의 명령어 페치 모듈(110)은 인터럽트 서비스 루틴의 처리를 요청받는 경우, 레지스터에 저장된 데이터의 백업없이 인터럽트 서비스 루틴의 명령어를 입력받는다.
감지 모듈(120)은 입력된 제1 명령어를 분석하여 레지스터에 저장된 데이터의 변경이 필요한지 여부를 판단한다. 상술한 바와 같이, 본 발명의 프로세서(100)는 인터럽트 서비스 루틴을 실행하기 전에 레지스터에 저장된 데이터를 백업하지 않는다. 그러나, 프로세서(100)는 인터럽트 서비스 루틴을 처리하면서 레지스터에 데이터를 쓰는 것이 필요하다. 따라서, 감지 모듈(120)은 명령어 페치 모듈(110)에 입력된 제1 명령어를 처리할 때 레지스터를 사용할 필요가 있는지 판단한다. 만일, 레지스터를 사용할 필요가 있는 경우, 프로세서(100)는 사용할 레지스터에 저장된 데이터를 임시 메모리에 백업하고 입력된 제1 명령어를 처리한다. 또는, 레지스터를 사용할 필요가 없는 경우, 프로세서(100)는 데이터의 백업없이 입력된 제1 명령어를 처리한다. 감지 모듈(120)이 입력된 명령어를 분석하는 구체적인 과정은 후술한다.
명령어 생성 모듈(130)은 저장된 데이터의 변경이 최초 변경인 경우, 레지스터에 저장되어 있는 데이터를 임시 메모리에 저장하는 제2 명령어를 생성한다. 제2 명령어는 저장 명령어일 수 있다. 명령어를 처리하기 위해 프로세서(100)가 레지스터를 사용할 필요가 있으면, 프로세서(100)는 레지스터에 저장된 데이터를 백업해야 한다. 프로세서(100)는 입력되는 명령어를 처리하는 기능을 수행한다. 프로세서(100)는 데이터 백업 명령어를 입력받아야 데이터 백업 기능을 수행할 수 있다. 그러나, 데이터 백업 명령어는 인터럽트 서비스 루틴에 포함된 명령어가 아니므로 명령어 생성 모듈(130)이 데이터 백업 명령어를 생성한다. 즉, 데이터 백업 명령어는 임시 메모리에 데이터를 저장하는 저장 명령어일 수 있다. 프로세서(100)는 내부의 명령어 생성 모듈(130)에서 생성된 저장 명령어를 먼저 수행함으로써 레지스터의 데이터를 임시 메모리에 저장할 수 있다. 그리고, 프로세서(100)는 명령어 페치 모듈(110)에 입력된 제1 명령어를 처리한다.
프로세서(100)가 인터럽트 서비스 루틴의 제1 명령어를 처리하기 전에 백업해야 하는 레지스터의 데이터는 메인 서비스 루틴을 실행하면서 레지스터에 저장된 데이터이다. 따라서, 프로세서(100)는 메인 서비스 루틴을 실행하면서 레지스터에 저장된 데이터를 백업하면 충분하다. 인터럽트 서비스 루틴에 포함된 명령어들은 인터럽트 서비스 루틴의 실행을 할 수 있도록 만들어져 있다. 예를 들어, 인터럽트 서비스 루틴의 첫번째 명령어를 처리하면서 레지스터에 저장하는 제1 데이터가 뒤에 처리되는 명령어에 사용되어야 한다면, 두번째 명령어를 처리하면서 레지스터에 저장하는 제2 데이터는 다른 레지스터에 저장하도록 인터럽트 서비스 루틴은 만들어져 있다. 만일 제2 데이터가 제1 데이터를 덮어 쓰도록 인터럽트 서비스 루틴이 만들어져 있다면(즉, 제2 데이터가 제1 데이터가 저장된 레지스터와 동일한 레지스터에 저장된다면), 제1 데이터는 더 이상 필요없는 데이터라는 것을 의미한다. 따라서, 명령어 생성 모듈(130)은 레지스터에 저장된 데이터의 변경이 최초 변경인 경우에만 데이터를 백업한다.
레지스터를 사용할 필요가 없는 경우, 명령어 생성 모듈(130)은 제2 명령어를 생성하지 않는다. 그리고, 프로세서(100)는 입력된 제1 명령어만을 처리한다.
명령어 선택 모듈(140)은 생성된 제2 명령어와 입력된 제1 명령어를 순차적으로 선택한다. 예를 들어, 생성된 제2 명령어는 레지스터에 저장된 데이터를 임시 메모리에 저장하는 저장 명령어일 수 있다. 그리고, 제1 명령어는 사칙연산 또는 비교 등과 같은 산술 및 논리 연산 명령어일 수 있다. 프로세서(100)는 레지스터를 사용하는 경우 레지스터에 저장된 데이터를 먼저 임시 메모리에 백업해야 한다. 따라서, 명령어 선택 모듈(140)은 제2 명령어가 먼저 처리되도록 제2 명령어를 먼저 선택하여 제어 모듈(150)로 출력하고 다음에 제1 명령어를 출력한다.
한편, 레지스터를 사용할 필요가 없는 경우, 명령어 선택 모듈(140)은 입력된 제1 명령어를 제어 모듈(150)로 출력할 수 있다.
제어 모듈(150)은 명령어 선택 모듈(150)로부터 입력된 제2 명령어와 제1 명령어를 처리한다. 명령어 선택 모듈(140)이 제2 명령어를 먼저 출력하므로 제어 모듈(150)도 제2 명령어를 먼저 처리한다. 즉, 프로세서(100)는 먼저 레지스터에 저장된 데이터를 임시 메모리에 백업한다. 다음에, 명령어 선택 모듈(140)이 제1 명령어를 출력하므로 제어 모듈(150)도 제2 명령어 다음에 제1 명령어를 처리한다. 즉, 프로세서(100)는 레지스터의 데이터를 백업한 후에 산술 또는 논리 연산 명령어를 처리한다. 따라서, 프로세서(100)는 메인 서비스 루틴에서 필요한 데이터를 백업하면서 인터럽트 서비스 루틴의 명령어를 처리할 수 있다. 또한, 프로세서(100)는 인터럽트 서비스 루틴을 실행하기 전에 레지스터의 데이터를 일괄적으로 백업하지 않기 때문에 인터럽트 서비스 루틴의 처리 시간을 단축할 수 있다.
한편, 레지스터를 사용할 필요가 없는 경우, 제2 명령어가 생성되지 않으므로 제어 모듈(150)은 입력된 제1 명령어만을 처리할 수 있다.
도 2는 본 발명의 일 실시 예에 따른 인터럽트 서비스 루틴을 처리하는 과정을 설명하는 도면이다.
도 2(a)를 참조하면, 인터럽트 서비스 루틴이 시작될 시점의 임시 메모리와 레지스터가 도시되어 있다. 상술한 바와 같이, 임시 메모리는 스택일 수 있다. 그리고, 레지스터는 복수 개가 존재할 수 있다. 일 실시 예로서, 프로세서는 수십 개의 레지스터를 포함할 수 있고, 수백 개의 레지스터를 포함할 수도 있다. 프로세서는 용도, 성능 또는 크기 등에 따라 다양한 개수의 레지스터를 포함할 수 있다. 도 2(a)를 참조하면, 레지스터에는 메인 서비스 루틴을 실행하면서 저장된 데이터가 있다. 예를 들어, 제0 레지스터(10)에는 r0 데이터가 저장될 수 있고, 제1 레지스터(11)에는 r1 데이터가 저장될 수 있다. 스택은 프레임 포인터(frame pointer:fp)를 포함할 수 있다. 프로세서가 레지스터의 데이터를 스택에 저장할 때, 프로세서는 데이터를 저장할 스택의 주소를 프레임 포인터와 레지스터의 오프셋을 더하여 결정할 수 있다.
인터럽트 이벤트가 발생하여 프로세서가 인터럽트 서비스 실행을 요청받으면, 프로세서는 인터럽트 서비스 루틴을 실행할 수 있다. 프로세서가 인터럽트 서비스 루틴을 실행할 때, 프로세서는 레지스터의 데이터를 스택에 저장하지 않는다. 그리고, 프로세서는 인터럽트 서비스 루틴의 명령어를 입력받는다.
도 2(b)를 참조하면, 인터럽트 서비스 루틴의 명령어를 처리하는 과정이 도시되어 있다. 프로세서는 인터럽트 서비스 루틴의 명령어를 입력받는다. 예를 들어, 인터럽트 서비스 루틴의 명령어는 합산 명령어일 수 있다. 프로세서는 입력된 명령어를 분석한다. 일 실시 예로서, 합산 명령어는 제1 레지스터(11)의 데이터와 제2 레지스터(미도시)의 데이터를 더하여 제0 레지스터(10)에 쓰는 명령일 수 있다. 프로세서는 제0 레지스터(10)를 사용해야 하므로 제0 레지스터(10)에 저장된 r0 데이터를 백업해야 한다. 프로세서는 제0 레지스터의 데이터를 스택에 저장하는 명령어를 생성할 수 있다. 프로세서는 인터럽트 서비스 루틴의 합산 명령어보다 생성된 저장 명령어를 먼저 처리할 수 있다. 저장 명령어가 처리되면, 제0 레지스터(10)의 r0 데이터는 스택의 지정된 영역(21)에 저장될 수 있다. 프로세서는 r0 데이터의 백업 후에 합산 명령어를 처리할 수 있다. 프로세서는 동일한 방식으로 인터럽트 서비스 루틴의 명령어를 처리할 수 있다.
도 2(c)를 참조하면, 스택의 데이터를 다시 레지스터로 복원하는 과정이 도시되어 있다. 프로세서는 인터럽트 서비스 루틴의 명령어를 모두 처리하면, 다시 메인 서비스 루틴의 명령어를 처리할 수 있다. 프로세서는 메인 서비스 루틴의 명령어를 처리하기 전에 스택에 저장된 데이터를 레지스터로 복원할 수 있다. 일 실시 예로서, 레지스터로 복원하는 복원 명령어는 임의로 설정될 수 있다. 설계자는 기존의 로드 명령어를 사용할 수 있고, 레지스터로 복원하는 명령어(예, ctx_load)를 새로 생성하여 설정할 수도 있다. 프로세서는 인터럽트 서비스 루틴이 종료되면 복원 명령어를 처리할 수 있다. 프로세서는 데이터가 백업된 스택의 주소를 기억하고, 인터럽트 서비스 루틴이 종료되면 기억하는 스택 주소의 데이터를 원래 레지스터로 복원할 수 있다. 일 실시 예로서, 프로세서는 스택의 지정된 영역(21)에 저장된 r0 데이터를 제1 레지스터(10)로 복원할 수 있다. 프로세서는 스택에 백업된 데이터를 레지스터로 복원하면 인터럽트 서비스 루틴을 종료하고 메인 서비스 루틴을 중지 시점부터 실행할 수 있다.
도 3은 동일한 인터럽트 서비스 루틴을 처리하는 다른 프로세서 코어와의 속도를 비교하는 도면이다.
도 3을 참조하면, DTV 서비스와 관련된 인터럽트 서비스 루틴을 처리하는 여러가지 프로세서의 성능을 비교하는 도면이다. 일 실시 예로서, DTV 서비스와 관련된 인터럽트 서비스 루틴의 개수는 36개일 수 있다.
먼저, ARM7 프로세서가 하나의 인터럽트 서비스 루틴을 실행하는 예를 설명한다. ARM7 프로세서는 인터럽트 요청을 받으면 레지스터에 저장된 데이터를 스택에 백업할 수 있다. ARM7 프로세서는 데이터를 백업하기 위해 367 사이클의 시간이 소요된다. 그리고, ARM7 프로세서가 ISR을 실행하기 위해 100 사이클의 시간이 소요된다. 마지막으로 ARM7 프로세서가 ISR을 종료하고, 백업된 데이터를 레지스터로 복원하기 위해 268 사이클의 시간이 소요된다. 즉, ARM7 프로세서는 하나의 인터럽트 서비스 루틴을 실행하기 위해 735 사이클의 시간이 필요하다.
다음으로, Cortex-M 프로세서가 하나의 인터럽트 서비스 루틴을 실행하는 예를 설명한다. Cortex-M 프로세서도 인터럽트 요청을 받으면 레지스터에 저장된 데이터를 스택에 백업할 수 있다. Cortex-M 프로세서는 데이터를 백업하기 위해 96 사이클의 시간이 소요된다. 그리고, Cortex-M 프로세서가 ISR을 실행하기 위해 100 사이클의 시간이 소요된다. Cortex-M 프로세서가 백업된 데이터를 레지스터로 복원하기 위해 96 사이클의 시간이 소요된다. 즉, Cortex-M 프로세서는 하나의 인터럽트 서비스 루틴을 실행하기 위해 292 사이클의 시간이 필요하다.
마지막으로, 본 발명의 프로세서가 하나의 인터럽트 서비스 루틴을 실행하는 예를 설명한다. 프로세서는 인터럽트 요청을 받아도 레지스터에 저장된 데이터를 스택에 백업하지 않는다. 따라서, 프로세서가 데이터를 백업하기 위한 시간은 필요하지 않다. 대신, 프로세서는 ISR을 실행하면서 필요한 레지스터의 데이터를 스택에 백업할 수 있다. 따라서, 프로세서가 ISR을 실행하기 위해 112 사이클의 시간이 소요된다. 프로세서는 ISR을 종료하고 백업된 데이터를 레지스터로 복원하기 위해 12 사이클의 시간이 소요된다. 즉, 본 발명의 프로세서는 하나의 인터럽트 서비스 루틴을 실행하기 위해 123 사이클의 시간이 필요하다.
상술한 바와 같이, DTV 서비스와 관련된 인터럽트 서비스 루틴의 개수는 36개일 수 있다. 따라서, ARM7 프로세서가 하나의 인터럽트 서비스 루틴을 실행하는데 735 사이클의 시간이 필요하므로 DTV 서비스와 관련된 모든 인터럽트 서비스 루틴을 실행하기 위해서는 26460 사이클의 시간이 소요된다. Cortex-M 프로세서가 하나의 인터럽트 서비스 루틴을 실행하는데 292 사이클의 시간이 필요하므로 DTV 서비스와 관련된 모든 인터럽트 서비스 루틴을 실행하기 위해서는 10512 사이클의 시간이 소요된다. 본 발명의 프로세서가 하나의 인터럽트 서비스 루틴을 실행하는데 124 사이클의 시간이 필요하므로 DTV 서비스와 관련된 모든 인터럽트 서비스 루틴을 실행하기 위해서는 4464 사이클의 시간이 소요된다. 따라서, 본 발명의 프로세서는 ARM7 프로세서보다 5.9배 빠른 처리를 할 수 있고, Cortex-M 프로세서보다 2.4배 빠른 처리를 할 수 있다.
도 4는 본 발명의 일 실시 예에 따른 명령어를 분석하는 과정을 설명하는 도면이다.
도 4를 참조하면, 프로세서는 인터럽트 요청을 받으면 레지스터 플래그를 초기화할 수 있다(S410). 레지스터 플래그는 인터럽트 서비스 루틴의 실행 중에 데이터를 저장하는지 여부를 나타내는 플래그이다. 예를 들어, 프로세서는 레지스터 플래그의 값을 모두 0으로 초기화할 수 있다. 레지스터 플래그는 후술하기로 한다. 프로세서는 명령어를 입력받고 명령어를 분석할 수 있다(S420). 상술한 바와 같이, 프로세서의 명령어 페치 모듈이 명령어를 입력받을 수 있다. 그리고, 프로세서의 명령어 감지 모듈이 명령어를 분석할 수 있다.
프로세서는 타겟 레지스터(rt)를 탐지할 수 있다(S430). 프로세서의 감지 모듈이 타겟 레지스터를 탐지할 수 있다. 프로세서는 입력된 명령어를 분석할 수 있다. 그리고, 프로세서는 레지스터를 사용해야 하는지 여부를 판단할 수 있다. 레지스터를 사용해야 하는 경우, 프로세서는 대상 레지스터를 탐지할 수 있다. 대상 레지스터가 타겟 레지스터일 수 있다. 프로세서는 타겟 레지스터의 플래그 값이 0인지 확인할 수 있다(S440). 상술한 바와 같이, 프로세서는 메인 서비스 루틴을 실행할 때 저장한 데이터만을 스택에 백업할 수 있다. 프로세서는 타겟 레지스터의 데이터가 변경된 경우 타겟 레지스터의 플래그 값을 1로 세팅할 수 있다. 따라서, 타겟 레지스터의 플래그 값이 0인 경우, 타겟 레지스터의 데이터가 변경되지 않았다는 것을 의미할 수 있다. 프로세서는 타겟 레지스터의 값이 0이면, 저장 명령어 생성을 요청할 수 있다(S450). 프로세서의 명령어 생성 모듈이 저장(백업) 명령어를 생성할 수 있다.
한편, 프로세서는 타겟 레지스터의 값이 0이 아니면, 인터럽트 서비스 루틴의 종료 여부를 판단할 수 있다(S470). 인터럽트 서비스 루틴이 종료되지 않으면 프로세서는 다음 명령어를 입력받고 분석할 수 있다(S420). 인터럽트 서비스 루틴이 종료되면 프로세서는 명령어 분석 과정을 종료할 수 있다.
프로세서는 타겟 레지스터의 레지스터 플래그의 값을 1로 세팅할 수 있다(S460). 상술한 바와 같이, 타겟 레지스터의 사용이 예정되고 타겟 레지스터의 플래그 값이 0인 경우, 프로세서는 타겟 레지스터의 데이터를 스택에 백업할 수 있다. 그리고, 프로세서는 타겟 레지스터의 플래그 값을 1로 세팅할 수 있다. 프로세서는 인터럽트 서비스 루틴의 종료 여부를 판단할 수 있다(S470). 인터럽트 서비스 루틴이 종료되면 프로세서는 명령어 분석 과정을 종료할 수 있다.
프로세서는 인터럽트 서비스 루틴의 명령어 처리가 완료되면, 레지스터 플래그의 값이 1로 세팅된 레지스터를 판별하고, 판별된 레지스터의 데이터를 복원할 수 있다.
도 5는 본 발명의 일 실시 예에 따른 데이터를 백업한 레지스터를 표시하는 방법을 설명하는 도면이다.
도 5(a)를 참조하면, 초기화된 레지스터 플래그가 도시되어 있다. 프로세서는 각 레지스터 별로 플래그 값을 표시한 레지스터 플래그를 포함할 수 있다. 인터럽트 서비스 루틴이 시작되면, 프로세서는 레지스터 플래그 값을 0으로 초기화할 수 있다. 일 실시 예로서, 도 4에서 설명한 바와 같이 명령어를 분석하여 판단한 타겟 레지스터의 플래그(31)도 초기화되어 0의 값으로 세팅될 수 있다.
도 5(b)를 참조하면, 타겟 레지스터의 플래그 값을 1로 세팅한 도면이 도시되어 있다. 프로세서는 명령어를 분석하여 사용해야 할 타겟 레지스터를 판단할 수 있다. 프로세서는 저장(백업) 명령어를 생성하고, 타겟 레지스터의 플래그(31) 값을 1로 세팅할 수 있다. 타겟 레지스터의 플래그(31) 값이 1로 세팅된 후 다음 명령어가 타겟 레지스터를 다시 억세스하더라도 프로세서는 타겟 레지스터의 데이터를 스택에 저장하지 않을 수 있다. 즉, 프로세서는 레지스터에 저장된 데이터의 변경이 최초 변경인 경우에만 레지스터 플래그의 값을 변경하고 레지스터의 데이터를 스택에 저장할 수 있다. 그리고, 프로세서는 레지스터 플래그의 값이 변경된 경우 레지스터에 저장된 데이터가 변경된 것으로 판단할 수 있다. 따라서, 프로세서는 레지스터 플래그의 값이 변경되지 않으면 대응되는 레지스터의 데이터가 변경되지 않았다고 판단할 수 있다. 즉, 프로세서는 레지스터에 저장된 데이터의 변경이 없거나 최초의 변경이 아닌 경우 백업 명령어를 생성하지 않을 수 있다. 인터럽트 서비스 루틴이 종료되는 경우, 프로세서는 레지스터 플래그의 변경 여부를 판단하고, 레지스터 플래그의 값이 변경된 레지스터에 대응하는 데이터만을 스택으로부터 레지스터로 복원할 수 있다.
지금까지 프로세서의 다양한 실시 예를 설명하였다. 아래에서는 프로세서의 제어 방법을 설명한다.
도 6은 본 발명의 일 실시 예에 따른 프로세서 제어 방법의 흐름도이다.
도 6을 참조하면, 프로세서는 인터럽트 루틴의 처리를 요청받는 경우, 레지스터에 저장된 데이터의 백업없이 인터럽트 서비스 루틴의 제1 명령어를 입력받는다(S610). 상술한 바와 같이, 프로세서는 인터럽트 서비스 루틴을 실행할 때 레지스터의 데이터를 백업하지 않는다. 따라서, 프로세서는 빠른 인터럽트 서비스 루틴의 처리를 할 수 있다.
프로세서는 입력된 제1 명령어를 분석하여 레지스터에 저장된 데이터의 변경이 필요한지 여부를 판단한다(S620). 프로세서는 레지스터 플래그를 포함할 수 있다. 프로세서는 인터럽트 서비스 루틴의 처리를 요청받는 경우, 레지스터 플래그의 값을 초기화할 수 있다. 예를 들어, 프로세서는 레지스터 플래그의 값을 0으로 세팅할 수 있다. 그리고, 프로세서는 저장된 데이터의 변경이 최초 변경인 경우 레지스터 플래그의 값을 변경할 수 있다. 예를 들어, 프로세서는 레지스터의 데이터를 백업하는 경우 1로 세팅할 수 있다. 프로세서는 레지스터 플래그의 값이 변경된 경우, 레지스터에 저장된 데이터가 변경된 것으로 판단할 수 있다. 따라서, 프로세서는 입력된 명령어를 처리하기 위해 사용해야 할 레지스터의 플래그 값이 1인 경우, 프로세서는 레지스터의 데이터를 백업하지 않을 수 있다. 즉, 프로세서는 레지스터에 저장된 데이터의 변경이 없거나 최초 변경이 아닌 경우, 제2 명령어를 생성하지 않을 수 있다. 프로세서는 저장된 데이터의 변경이 최초 변경인 경우, 데이터를 임시 메모리에 저장하는 제2 명령어를 생성한다(S630). 제2 명령어는 레지스터의 데이터를 임시 메모리에 저장하는 명령어일 수 있다. 예를 들어, 임시 메모리는 스택일 수 있다.
프로세서는 생성된 제2 명령어 및 제1 명령어를 순차적으로 선택한다(S640). 그리고, 프로세서는 제2 명령어 및 제1 명령어를 수행한다(S650). 데이터의 백업이 필요한 경우, 프로세서는 데이터를 백업하는 제2 명령어를 먼저 처리할 수 있다. 그 이후, 프로세서는 인터럽트 서비스 루틴의 제1 명령어를 처리할 수 있다. 즉, 프로세서는 데이터를 임시 메모리에 저장한 후 제1 명령어를 수행할 수 있다.
인터럽트 서비스 루틴이 종료되는 경우, 프로세서는 임시 메모리에 저장된 데이터를 레지스터로 복원할 수 있다. 프로세서는 복수 개의 레지스터를 포함할 수 있다. 프로세서는 복수 개의 레지스터 중 레지스터 플래그의 값이 변경된 레지스터에 대응하는 데이터만을 임시 메모리로부터 복원할 수 있다.
상술한 다양한 실시 예에 따른 프로세서 제어 방법은 프로그램으로 구현되어 프로세서에 제공될 수 있다.
일 예로, 인터럽트 루틴의 처리를 요청받는 경우, 레지스터에 저장된 데이터의 백업없이 인터럽트 루틴의 제1 명령어를 입력받는 단계, 입력된 제1 명령어를 분석하여 레지스터에 저장된 데이터의 변경이 필요한지 여부를 판단하는 단계, 저장된 데이터의 변경이 최초 변경인 경우, 데이터를 임시 메모리에 저장하는 제2 명령어를 생성하는 단계, 생성된 제2 명령어 및 제1 명령어를 순차적으로 선택하는 단계 및 제2 명령어 및 제1 명령어를 수행하는 단계를 수행하는 프로그램이 저장된 비일시적 판독 가능 매체(non-transitory computer readable medium)가 제공될 수 있다.
비일시적 판독 가능 매체란 레지스터, 캐쉬, 메모리 등과 같이 짧은 순간 동안 데이터를 저장하는 매체가 아니라 반영구적으로 데이터를 저장하며, 기기에 의해 판독(reading)이 가능한 매체를 의미한다. 구체적으로는, 상술한 다양한 어플리케이션 또는 프로그램들은 CD, DVD, 하드 디스크, 블루레이 디스크, USB, 메모리카드, ROM 등과 같은 비일시적 판독 가능 매체에 저장되어 제공될 수 있다.
또한, 이상에서는 본 발명의 바람직한 실시 예에 대하여 도시하고 설명하였지만, 본 발명은 상술한 특정의 실시 예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 발명의 기술적 사상이나 전망으로부터 개별적으로 이해되어져서는 안될 것이다.
100: 프로세서 110: 명령어 페치 모듈
120: 감지 모듈 130: 명령어 생성 모듈
140: 명령어 선택 모듈 150: 제어 모듈

Claims (15)

  1. 인터럽트 루틴의 처리를 요청받는 경우, 레지스터에 저장된 데이터의 백업없이 상기 인터럽트 루틴의 제1 명령어를 입력받는 명령어 페치 모듈;
    상기 입력된 제1 명령어를 분석하여 상기 레지스터에 저장된 데이터의 변경이 필요한지 여부를 판단하는 감지 모듈;
    상기 저장된 데이터의 변경이 최초 변경인 경우, 상기 데이터를 임시 메모리에 저장하는 제2 명령어를 생성하는 명령어 생성 모듈;
    상기 생성된 제2 명령어 및 상기 제1 명령어를 순차적으로 선택하는 명령어 선택 모듈; 및
    상기 제2 명령어 및 상기 제1 명령어를 수행하는 제어 모듈;을 포함하는 프로세서.
  2. 제1항에 있어서,
    상기 제어 모듈은,
    상기 데이터를 상기 임시 메모리에 저장한 후 상기 제1 명령어를 수행하는 것을 특징으로 하는 것을 특징으로 하는 프로세서.
  3. 제1항에 있어서,
    상기 제어 모듈은,
    상기 인터럽트 루틴이 종료되는 경우, 상기 임시 메모리에 저장된 상기 데이터를 상기 레지스터로 복원(restore)하는 것을 특징으로 하는 프로세서.
  4. 제3항에 있어서,
    상기 감지 모듈은,
    레지스터 플래그를 포함하여 상기 인터럽트 루틴의 처리를 요청받는 경우 상기 레지스터 플래그의 값을 초기화하고, 상기 저장된 데이터의 변경이 최초 변경이 경우 상기 레지스터 플래그의 값을 변경하는 것을 특징으로 하는 프로세서.
  5. 제4항에 있어서,
    상기 감지 모듈은,
    상기 레지스터 플래그의 값이 변경된 경우, 상기 저장된 데이터가 변경된 것으로 판단하는 것을 특징으로 하는 프로세서.
  6. 제5항에 있어서,
    상기 레지스터는,
    복수 개 존재하는 것을 특징으로 하는 프로세서.
  7. 제6항에 있어서,
    상기 제어 모듈은,
    상기 복수 개의 레지스터 중 상기 레지스터 플래그의 값이 변경된 레지스터에 대응하는 데이터만을 상기 임시 메모리로부터 복원하는 것을 특징으로 하는 프로세서.
  8. 제1항에 있어서,
    상기 명령어 생성 모듈은,
    상기 레지스터에 저장된 상기 데이터의 변경이 없거나 최초의 변경이 아닌 경우, 상기 제2 명령어를 생성하지 않는 것을 특징으로 하는 프로세서.
  9. 인터럽트 루틴의 처리를 요청받는 경우, 레지스터에 저장된 데이터의 백업없이 상기 인터럽트 루틴의 제1 명령어를 입력받는 단계;
    상기 입력된 제1 명령어를 분석하여 상기 레지스터에 저장된 데이터의 변경이 필요한지 여부를 판단하는 단계;
    상기 저장된 데이터의 변경이 최초 변경인 경우, 상기 데이터를 임시 메모리에 저장하는 제2 명령어를 생성하는 단계;
    상기 생성된 제2 명령어 및 상기 제1 명령어를 순차적으로 선택하는 단계; 및
    상기 제2 명령어 및 상기 제1 명령어를 수행하는 단계;를 포함하는 프로세서의 제어 방법.
  10. 제9항에 있어서,
    상기 수행하는 단계는,
    상기 데이터를 상기 임시 메모리에 저장한 후 상기 제1 명령어를 수행하는 것을 특징으로 하는 것을 특징으로 하는 프로세서의 제어 방법.
  11. 제9항에 있어서,
    상기 인터럽트 루틴이 종료되는 경우, 상기 임시 메모리에 저장된 상기 데이터를 상기 레지스터로 복원(restore)하는 단계;를 더 포함하는 프로세서의 제어 방법.
  12. 제11항에 있어서,
    상기 판단하는 단계는,
    레지스터 플래그를 포함하여 상기 인터럽트 루틴의 처리를 요청받는 경우 상기 레지스터 플래그의 값을 초기화하고, 상기 저장된 데이터의 변경이 최초 변경인 경우 상기 레지스터 플래그의 값을 변경하는 것을 특징으로 하는 프로세서의 제어 방법.
  13. 제12항에 있어서,
    상기 판단하는 단계는,
    상기 레지스터 플래그의 값이 변경된 경우, 상기 레지스터에 저장된 상기 데이터가 변경된 것으로 판단하는 것을 특징으로 하는 프로세서의 제어 방법.
  14. 제13항에 있어서,
    상기 레지스터는 복수 개 존재하고,
    상기 복원하는 단계는,
    상기 복수 개의 레지스터 중 상기 레지스터 플래그의 값이 변경된 레지스터에 대응하는 데이터만을 상기 임시 메모리로부터 복원하는 것을 특징으로 하는 프로세서의 제어 방법.
  15. 제9항에 있어서,
    상기 생성하는 단계는,
    상기 레지스터에 저장된 상기 데이터의 변경이 없거나 최초의 변경이 아닌 경우, 상기 제2 명령어를 생성하지 않는 것을 특징으로 하는 프로세서의 제어 방법.
KR1020150172093A 2015-12-04 2015-12-04 프로세서 및 제어 방법 KR20170065845A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150172093A KR20170065845A (ko) 2015-12-04 2015-12-04 프로세서 및 제어 방법
US15/136,183 US10318452B2 (en) 2015-12-04 2016-04-22 Processor and controlling method thereof to process an interrupt

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150172093A KR20170065845A (ko) 2015-12-04 2015-12-04 프로세서 및 제어 방법

Publications (1)

Publication Number Publication Date
KR20170065845A true KR20170065845A (ko) 2017-06-14

Family

ID=58799074

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150172093A KR20170065845A (ko) 2015-12-04 2015-12-04 프로세서 및 제어 방법

Country Status (2)

Country Link
US (1) US10318452B2 (ko)
KR (1) KR20170065845A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109857029B (zh) * 2019-02-20 2021-01-29 珠海格力电器股份有限公司 双处理器控制系统工作方法、磁悬浮轴承监控系统及其工作方法、压缩机及空调

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5642516A (en) * 1994-10-14 1997-06-24 Cirrus Logic, Inc. Selective shadowing of registers for interrupt processing
US6205467B1 (en) * 1995-11-14 2001-03-20 Advanced Micro Devices, Inc. Microprocessor having a context save unit for saving context independent from interrupt requests
US5727227A (en) * 1995-11-20 1998-03-10 Advanced Micro Devices Interrupt coprocessor configured to process interrupts in a computer system
US5640570A (en) * 1996-01-26 1997-06-17 International Business Machines Corporation Information handling system for transmitting contents of line register from asynchronous controller to shadow register in another asynchronous controller determined by shadow register address buffer
US5687381A (en) * 1996-02-09 1997-11-11 Advanced Micro Devices, Inc. Microprocessor including an interrupt polling unit configured to poll external devices for interrupts using interrupt acknowledge bus transactions
US5948093A (en) * 1996-02-09 1999-09-07 Advanced Micro Devices, Inc. Microprocessor including an interrupt polling unit configured to poll external devices for interrupts when said microprocessor is in a task switch state
US6378023B1 (en) * 1996-02-14 2002-04-23 Advanced Micro Devices, Inc. Interrupt descriptor cache for a microprocessor
US5944816A (en) * 1996-05-17 1999-08-31 Advanced Micro Devices, Inc. Microprocessor configured to execute multiple threads including interrupt service routines
US5987601A (en) 1997-02-14 1999-11-16 Xyron Corporation Zero overhead computer interrupts with task switching
US5987258A (en) 1997-06-27 1999-11-16 Lsi Logic Corporation Register reservation method for fast context switching in microprocessors
US6128728A (en) * 1997-08-01 2000-10-03 Micron Technology, Inc. Virtual shadow registers and virtual register windows
US6044430A (en) * 1997-12-17 2000-03-28 Advanced Micro Devices Inc. Real time interrupt handling for superscalar processors
US6205543B1 (en) * 1998-12-03 2001-03-20 Sun Microsystems, Inc. Efficient handling of a large register file for context switching
JP2002055830A (ja) * 2000-05-29 2002-02-20 Seiko Epson Corp 割込信号生成装置及び割込信号の生成方法
JP3813930B2 (ja) * 2002-01-09 2006-08-23 松下電器産業株式会社 プロセッサ及びプログラム実行方法
KR100498469B1 (ko) 2002-12-23 2005-07-01 삼성전자주식회사 지연 시간을 최소화한 인터럽트 콘트롤 시스템 및 그 방법
KR100528476B1 (ko) 2003-07-22 2005-11-15 삼성전자주식회사 컴퓨터 시스템의 인터럽트 처리 장치
GB2409543B (en) * 2003-12-23 2006-11-01 Advanced Risc Mach Ltd Interrupt masking control
KR100679050B1 (ko) * 2005-12-12 2007-02-06 삼성전자주식회사 태스크간 빠른 문맥 교환을 위해 레지스터 문맥을 저장,복구하는 방법 및 장치
JP2007304926A (ja) * 2006-05-12 2007-11-22 Matsushita Electric Ind Co Ltd 情報処理方法および命令生成方法
US7681022B2 (en) 2006-07-25 2010-03-16 Qualcomm Incorporated Efficient interrupt return address save mechanism
JP6081300B2 (ja) * 2013-06-18 2017-02-15 株式会社東芝 情報処理装置及びプログラム

Also Published As

Publication number Publication date
US20170161217A1 (en) 2017-06-08
US10318452B2 (en) 2019-06-11

Similar Documents

Publication Publication Date Title
US9256428B2 (en) Load latency speculation in an out-of-order computer processor
US8769504B2 (en) Method and apparatus for dynamically instrumenting a program
US20140317628A1 (en) Memory apparatus for processing support of long routing in processor, and scheduling apparatus and method using the memory apparatus
KR101249693B1 (ko) 서브루틴 복귀 메카니즘 선택
US8584095B2 (en) Test support system, method and computer program product, which optimize test scenarios to minimize total test time
CA2811617C (en) Commit sensitive tests
US20130013283A1 (en) Distributed multi-pass microarchitecture simulation
CN111625328B (zh) 适用于risc-v架构的中断装置、系统及方法
KR20170065845A (ko) 프로세서 및 제어 방법
US11106478B2 (en) Simulation device, simulation method, and computer readable medium
CN114902336B (zh) 具有子字段最小和最大箝位的内容可寻址存储器
CN106095631B (zh) 一种基于有限状态机实现的多周期非流水线cpu动态调试方法
US10162728B2 (en) Method and device for monitoring the execution of a program code
US20190369997A1 (en) Simulation device, simulation method, and computer readable medium
US11354126B2 (en) Data processing
US20100077383A1 (en) Simulation method and storage medium for storing program
KR101395007B1 (ko) 복수의 프로세서를 이용한 스냅샷 이미지 처리 장치 및 방법
JP6473023B2 (ja) 性能評価モジュール及びこれを組み込んだ半導体集積回路
US20240160450A1 (en) Program, instruction execution control apparatus, and instruction execution control method
KR101225577B1 (ko) 어셈블리 언어 코드의 분석 장치 및 방법
JP6918267B2 (ja) ボトルネック検出装置及びボトルネック検出プログラム
JP2006178663A (ja) 情報処理装置、情報処理方法、検証装置、検証方法
KR20230089448A (ko) 차량용 임베디드 제어기의 리셋 원인 결정 방법 및 그 방법이 적용된 차량용 임베디드 제어기
KR20190027460A (ko) 멀티 프로세서를 방식의 정지영상 처리 장치 및 방법
KR20140073152A (ko) 메모리 폴트 정보를 이용한 스냅샷 이미지 처리 장치 및 방법