KR101646768B1 - 이퀄-모델 프로세서를 위한 인터럽트 처리장치 및 처리방법과 그 처리장치를 포함하는 프로세서 - Google Patents

이퀄-모델 프로세서를 위한 인터럽트 처리장치 및 처리방법과 그 처리장치를 포함하는 프로세서 Download PDF

Info

Publication number
KR101646768B1
KR101646768B1 KR1020090017028A KR20090017028A KR101646768B1 KR 101646768 B1 KR101646768 B1 KR 101646768B1 KR 1020090017028 A KR1020090017028 A KR 1020090017028A KR 20090017028 A KR20090017028 A KR 20090017028A KR 101646768 B1 KR101646768 B1 KR 101646768B1
Authority
KR
South Korea
Prior art keywords
latency
interrupt
remaining
current
support
Prior art date
Application number
KR1020090017028A
Other languages
English (en)
Other versions
KR20100098052A (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 KR1020090017028A priority Critical patent/KR101646768B1/ko
Priority to US12/695,266 priority patent/US8516231B2/en
Publication of KR20100098052A publication Critical patent/KR20100098052A/ko
Application granted granted Critical
Publication of KR101646768B1 publication Critical patent/KR101646768B1/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/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
    • 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/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
    • 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/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • G06F9/3897Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path
    • 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/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • 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/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4893Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues taking into account power or heat criteria

Abstract

이퀄-모델 프로세서를 위한 인터럽트 지원 판정장치 및 판정방법과 그 판정장치를 포함하는 프로세서가 개시된다. 인터럽트 지원 판정장치는 프로세서 디코더에 이슈된 명령어가 복수 레이턴시 명령어인지를 판정하고, 복수 레이턴시 명령어인 경우에는 현재 레이턴시와 잔여 레이턴시를 비교하여 전자가 후자보다 더 크면 잔여 레이턴시를 업데이트한다. 그리고 인터럽트 지원 판정장치는 잔여 레이턴시가 1보다 크지 않은 경우에는 프로세서에서 인터럽트의 처리를 허용하는 신호를 출력하고, 잔여 레이턴시가 1보다 큰 경우에는 프로세서에서 인터럽트의 처리를 허용하지 않는 신호를 출력한다. 이퀄-모델 프로세서는 이러한 인터럽트 지원 판정장치가 구비된 하나의 기능 유닛을 포함하거나 또는 각각 인터럽트 지원 판정장치가 구비된 복수의 기능 유닛을 포함할 수 있으며, 후자의 경우에 모든 기능 유닛에서 인터럽트의 처리를 지원해야 인터럽트가 처리될 수 있다.
파이프라인 프로세서, 이퀄-모델 프로세서(Equal-Model Processor), 인터럽트(Interrupt), VLIW, 슈퍼스칼라 구조(Superscalar Structure)

Description

이퀄-모델 프로세서를 위한 인터럽트 처리장치 및 처리방법과 그 처리장치를 포함하는 프로세서{Interrupt handling apparatus and method for an equal-model processor and processor including the interrupt handling apparatus}
본 명세서는 파이프라인 프로세서(pipeline processor)에 관한 것으로, 보다 구체적으로 이퀄-모델 프로세서에서 인터럽트(Interrupt)를 처리하는 것에 관한 것이다.
파이프라인 프로세서에서는 하나의 명령어 처리가 여러 개의 단계들로 구분되어 이루어진다. 예를 들어, 명령어 처리 과정은 페치(fetch) 단계, 디코드(decode) 단계, 실행(execute) 단계, 및 기입(write-back) 단계로 구분될 수 있다. 파이프라인 프로세서에서는 복수의 명령어들이 겹쳐진 형태로 파이프라인의 각 단계들을 순차적으로 지나가면서 실행될 수 있기 때문에, 프로그램의 고속 처리가 가능하다.
파이프라인 프로세서의 일 유형으로 이퀄-모델 프로세서(Equal- Model Processor)와 LTE(Less-Than-or-Equal) 모델 프로세서가 있다. 이퀄-모델 프로세서 또는 LTE 모델 프로세서에서는 각각의 명령어에 대하여 소정 크기의 최대 레이턴 시(maximum latency)가 미리 설정되어 있다. 각 명령어에 대한 최대 레이턴시의 값은 프로세서의 종류에 따라서 달라질 수 있다. 그리고 프로세서의 컴파일러(compiler)는 각 명령어에 대한 최대 레이턴시를 알고 있으며, 스케줄할 때 알고 있는 각 명령어의 최대 레이턴시를 고려한다.
'최대 레이턴시'란 각 명령어에 따른 오퍼레이션이 실행되어 그 결과가 목표 레지스터에 기입되기까지의 최대 기간을 가리킨다. 이퀄-모델 프로세서에서는 해당 명령어의 실행 결과는 설정된 최대 레이턴시가 만료된 이후에 목표 레지스터에 기입된다. 반면, LTE 모델 프로세서에서는 설정된 최대 레이턴시가 만료되기 전이라도 실행 결과가 목표 레지스터에 기입되는 것이 허용될 수 있다. 따라서 이퀄-모델 프로세서에서는 최대 레이턴시가 만료될 때까지는 실행 결과가 목표 레지스터에 기입되지 않고 기존 값이 그대로 유지되기 때문에, 목표 레지스터의 다중 할당을 통하여 유연한 스케줄이 가능하다. 반면, LTE 모델 프로세서에서는 최대 레이턴시가 만료되기 전이라도 실행 결과가 기입될 수 있기 때문에, 목표 레지스터의 다중 할당이 제한된다.
그런데, 이퀄-모델 프로세서에서는 매 사이클마다 인터럽트를 처리할 수 있도록 하기 위해서는 대단히 복잡한 알고리즘과 장치가 요구된다. 보다 구체적으로, 이퀄-모델 프로세서에서는 각 명령어에 대한 최대 레이턴시도 함께 고려하여 명령어들을 스케줄한다. 스케줄된 명령어들의 처리 도중에 인터럽트를 처리하면 그 처리 시간만큼 후속 명령어를 처리하는 시간은 지연된다. 상기 후속 명령어는 이전에 실행된 명령어의 실행 결과가 반영되지 않는 것을 가정하고 스케줄된 명령어일 수 있는데, 인터럽트의 처리 도중에 이전에 실행된 명령어의 레이턴시가 만료되어 목표 레지스터의 값이 변경될 수가 있다. 이러한 현상은 후속 명령어를 실행할 경우에 프로그램이 오작동을 하는 원인이 되기 때문에, 이퀄-모델 프로세서에서 매 사이클마다 인터럽트를 처리할 수 있도록 하기 위해서는 프로그램의 오작동을 방지하기 위한 복잡한 장치가 필요하다.
이퀄-모델 프로세서에서의 프로그램 오작동을 방지하기 위하여 제안된 한 가지 방법은, 인터럽트를 처리하는 명령어를 제한하여 특정 명령어에서만 인터럽트가 처리되도록 하는 것이다. 이에 의하면, 인터럽트 처리로 인하여 프로그램 오작동과 같은 문제가 발생하지 않은 것이 명확하게 보장되는 명령어들에서만 인터럽트 처리를 하도록 한다. 보다 구체적으로, 분기 명령(branch instruction)과 같이 앞선 명령어들의 최대 레이턴시가 만료되는 것을 전제로 하여 스케줄되는 명령어에서만 인터럽트를 처리하도록 함으로써, 인터럽트 처리에 따른 프로그램의 오작동을 방지한다.
그런데, 이러한 방법은 프로그램 오작동이라는 문제를 간단하게 해결할 수는 있으나, 인터럽트를 신속하게 처리할 수 없거나 또는 심한 경우에는 장시간 동안 인터럽트가 처리되지 않는 문제가 생길 수 있다. 왜냐하면, 상당히 많은 종류의 명령어들 중에서, 인터럽트 처리를 하더라도 문제가 발생하지 않은 명령어는 분기(branch), 점프(jump), 함수-호출(function-call) 등 밖에 없어서, 그 종류가 아주 적기 때문이다. 따라서 기존의 방법에 의하면, 최악의 상황에서는 수백 또는 수천 사이클 동안 인터럽트를 전혀 처리하지 못할 수도 있다. 인터럽트는 일반적으로 즉시성이 요구되는 처리를 하기 위해서 사용되는 특성을 고려할 때, 인터럽트의 처리가 장기간 지연되거나 또는 아예 처리가 되지 않는 것은 프로세서의 성능을 저하시키는 요인이 된다.
프로그램의 실행 시에 레지스터의 효율적인 재사용이 가능할 뿐만 아니라 실행되는 프로그램의 오동작을 방지할 수 있는 인터럽트 처리장치 및 처리방법과 그 처리장치를 포함하는 프로세서를 제공한다.
이퀄-모델 프로세서에서 인터럽트 요청이 있는 경우에 가능한 빨리 이를 처리할 수 있으며, 또한 오랜 시간 동안 인터럽트의 처리가 불가능한 현상이 생기는 것을 방지할 수 있는 인터럽트 처리장치 및 처리방법과 그 처리장치를 포함하는 프로세서를 제공한다.
일 실시예에 따른 이퀄-모델 프로세서를 위한 인터럽트 지원 판정장치는 현재 레이턴시를 잔여 레이턴시와 비교하고, 비교 결과 상기 현재 레이턴시가 상기 잔여 레이턴시보다 더 클 경우에 상기 잔여 레이턴시를 상기 현재 레이턴시의 값으로 업데이트하기 위한 잔여 레이턴시 업데이트부, 및 상기 잔여 레이턴시에 기초하여 인터럽트 지원 여부를 지시하는 신호를 출력하는 인터럽트 지원 판정부를 포함한다.
일 실시예에 따른 이퀄-모델 프로세서를 위한 인터럽트 지원 판정방법은 현 재 레이턴시를 잔여 레이턴시와 비교하는 비교 단계, 비교 결과 상기 현재 레이턴시가 상기 잔여 레이턴시보다 더 클 경우에 상기 잔여 레이턴시를 상기 현재 레이턴시의 값으로 업데이트하는 업데이트 단계, 및 상기 잔여 레이턴시에 기초하여 인터럽트 지원 여부를 판정하는 인터럽트 지원 판정 단계를 포함한다.
일 실시예에 따른 이퀄-모델 프로세서는 잔여 레이턴시에 기초하여 인터럽트 지원 여부를 판정하여 그 판정 결과를 지시하는 제1 신호를 출력하는 인터럽트 지원 판정장치, 프로세서 코아의 외부로부터 입력되는 인터럽트 요청 신호에 응답하여 상기 프로세서 코아에서 인터럽트를 처리할지를 판정하여 그 판정 결과를 지시하는 제2 신호를 출력하는 인터럽트 처리장치, 및 상기 제1 신호가 인터럽트를 지원하는 것을 표시하고, 또한 상기 제2 신호가 인터럽트를 처리하는 것을 표시하는 경우에만 인터럽트를 처리하는 인터럽트 서비스 루틴을 포함한다.
다른 실시예에 따른 이퀄-모델 프로세서는 각각의 잔여 레이턴시에 기초하여 인터럽트 지원 여부를 판정하여 그 판정 결과를 지시하는 제1 신호를 각각 출력하는 n(n은 2이상의 정수)개의 인터럽트 지원 판정장치, 프로세서 코아의 외부로부터 입력되는 인터럽트 요청 신호에 응답하여 상기 프로세서 코아에서 인터럽트를 처리할지를 판정하여 그 판정 결과를 지시하는 제2 신호를 출력하는 인터럽트 처리장치, 및 상기 n개의 인터럽트 지원 판정장치 각각으로부터 출력되는 제1 신호가 모두 인터럽트를 지원하는 것을 표시하고, 또한 상기 제2 신호가 인터럽트를 처리하는 것을 표시하는 경우에만 인터럽트를 처리하는 인터럽트 서비스 루틴을 포함한다.
다른 실시예에 따른 이퀄-모델 프로세서를 위한 인터럽트 처리 방법은 상기 이퀄-모델 프로세서의 명령어 디코더에 이슈된 현재 명령어의 레이턴시가 1이고, 또한 상기 현재 명령어의 이전 명령어들에 의한 잔여 레이턴시가 1보다 크지 않은 경우에 상기 이퀄-모델 프로세서에서 인터럽트를 처리할 수 있도록 한다. 만일, 상기 이퀄-모델 프로세서가 복수의 기능 유닛을 포함하는 경우에는, 상기 복수의 기능 유닛 각각에서, 명령어 디코더에 이슈된 현재 명령어의 레이턴시가 1이고 또한 상기 현재 명령어의 이전 명령어들에 의한 잔여 레이턴시가 1보다 크지 않은 경우에, 상기 이퀄-모델 프로세서에서 인터럽트를 처리할 수 있도록 한다.
일 실시예에 의하면, 비록 현재 실행될 명령어가 분기, 점프, 함수-호술 등과 같이 인터럽트를 처리하더라도 프로그램의 오작동을 야기하지 않은 것이 명백한 명령어가 아니라도, 프로세서에서 인터럽트를 처리하도록 할 수가 있다. 따라서 인터럽트의 처리가 신속할 뿐만 아니라 아주 긴 시간 동안 인터럽트가 처리되지 않는 현상이 생기는 것을 방지할 수가 있다. 또한, 현재 명령어의 레이턴시가 1이고 또한 잔여 레이턴시가 1보다 크지 않은 경우, 즉 업데이트된 잔여 레이턴시가 1보다 크지 않은 경우에만 인터럽트를 처리할 수 있도록 하기 때문에, 프로그램의 오작동도 방지할 수가 있다.
이하, 첨부된 도면들을 참조하여 본 발명의 실시예들을 상세하게 설명한다. 본 발명의 양상을 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설 명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 또한, 후술되는 용어들은 본 발명의 실시예에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
도 1은 일 실시예에 따른 인터럽트 지원 판정장치(interrupt support determining apparatus)의 구성을 보여 주는 블록도이다. 여기서, '인터럽트 지원 판정장치(10)'라는 명칭은 설명의 편의를 위하여 임의로 선택한 것이다. 인터럽트 지원 판정장치는 이퀄-모델 프로세서(Equal-Model Processor)에서 인터럽트 처리와 관련하여 후술하는 인터럽트 지원 판정 방법을 실행하는 로직이 구현된 장치로서, 광의로는 인터럽트 처리장치의 일종이라고 할 수 있다. 다만, 본 명세서에서는 기존의 인터럽트 처리장치와 구별하기 위하여 '인터럽트 지원 판정장치'라는 용어를 사용한다. 기존의 인터럽트 처리장치에 관해서는 후술한다.
본 실시예에 따른 인터럽트 지원 판정장치(10)는 잔여 레이턴시(remaining latency)에 기초하여, 프로세서가 현재 명령어에서 인터럽트를 처리하도록 할지를 판단하여 알려 주는 장치이다. 잔여 레이턴시는 현재 명령어 및/또는 그 이전 명령어들의 최대 레이턴시에 기초한 값이다. 보다 구체적으로, 인터럽트 지원 판정장치(10)는 매 사이클마다 현재 레이턴시와 비교하여 더 큰 값으로 업데이트되는 잔여 레이턴시에 기초하여, 프로세서가 현재 명령어에서 인터럽트를 처리할 지를 판 정한다. 따라서 인터럽트 지원 판정장치(10)는 레이턴시 체크 로직(logic)의 형태로 구현될 수 있다. 그리고 인터럽트 지원 판정장치(10)는 재구성가능 프로세서(Reconfigurable Processor)에서 명령어 디코더(Instruction Decoder) 내부의 하드웨어 로직의 하나로 구현될 수 있으나, 이것은 단지 예시적인 것이다.
도 1을 참조하면, 인터럽트 지원 판정장치(10)는 레이턴시 판정부(12), 잔여 레이턴시 업데이트부(14), 및 인터럽트 지원 판정부(16)를 포함한다.
레이턴시 판정부(12)는 실행될 현재 명령어의 레이턴시(이하, '현재 레이턴시'라 한다)가 복수인지를 판정한다. 즉, 레이턴시 판정부(12)는 명령어 디코더에 이슈된 명령어가 복수의 레이턴시를 갖는 명령어(이하, '복수 레이턴시 명령어'라 한다)인지를 판정한다. 이러한 판정을 위하여, 현재 명령어의 종류를 지시하는 값이 레이턴시 판정부(12)로 입력되거나 또는 현재 레이턴시의 값이 입력될 수 있는데, 여기에만 한정되는 것은 아니다.
이퀄-모델 프로세서에서는 각 명령어에 대한 레이턴시가 미리 특정되어 있는데, 각각의 명령어에 대한 레이턴시를 얼마로 설정할 것인가에 대해서는 프로세서의 종류 등에 따라서 달라질 수 있다. 예를 들어, 명령어를 실행하는데 최소한 1 사이클이 소요되므로, 명령어들의 레이턴시는 1이거나 또는 그 이상의 값을 갖도록 설계할 수 있다. 명령어 'LOAD'는 레이턴시가 4이고, 명령어 'multiple(MULT)'는 레이턴시가 '2'이며, 명령어 'ADD'나 'subtract(SUB)' 등과 같은 다른 명령어들은 레이턴시가 '1'이 되도록 각 명령어에 대한 레이턴시를 설정할 수 있다. 각각의 레이턴시들에 설정되는 구체적인 값들은 단지 예시적인 것이다.
또는, 레이턴시의 설정 방법에 따라서는, 레이턴시가 '0'이나 그 이상의 값을 갖도록 설계할 수도 있다. 레이턴시의 최소값이 '1'이냐 또는 '0'이냐 하는 것은 단지 표현의 차이일 뿐, 그 실제적인 의미는 동일하다. 즉, 어떤 방법으로 레이턴시를 설정하든, '최소의 레이턴시'는 명령어가 실행된 이후에 그 결과를 곧바로 해당 레지스터에 기입하는 것을 의미한다. 이하에서는 전자의 경우(레이턴시의 최소값이 1인 경우)에 대해서 본 실시예를 설명하지만, 후자의 경우에도 본 실시예가 동일하게 적용될 수 있다는 것은 당업자에게 자명하다.
실시예에 따라서는 현재 레이턴시가 복수이면 레이턴시 판정부(12)가 그 값을 잔여 레이턴시(remaining latency) 업데이트부(14)로 전달할 수 있다. 또는, 잔여 레이턴시 업데이트부(14)는 현재 명령어의 종류로부터 현재 레이턴시를 구체적으로 파악할 수도 있다. 만일, 현재 레이턴시가 '1'이면 그 값은 레이턴시 업데이트부(14)로 전달되지 않을 수 있다. 또는, 현재 레이턴시가 '1'이더라도 그 값이 전달되어, 잔여 레이턴시 업데이트부(14)에서 잔여 레이턴시를 업데이트하는데 사용할 수도 있다.
잔여 레이턴시 업데이트부(14)는 현재 레이턴시와 인터럽트 지원 판정장치(10)의 잔여 레이턴시를 비교한 다음, 전자가 후자보다 더 큰 경우에는 잔여 레이턴시를 현재 레이턴시값으로 변경한다. 여기서, 잔여 레이턴시는 직전 명령어에 대한 잔여 레이턴시에서 '1'이 감소한 값인데, '1'은 직전 명령어와 현재 명령어의 사이클 차이를 의미한다. 예를 들어, 잔여 레이턴시 업데이트부(14)는 현재 레이턴시가 '4'이고 잔여 레이턴시가 '2'이면, 잔여 레이턴시를 '4'로 변경한다. 반대로, 현재 레이턴시가 잔여 레이턴시보다 작거나 같으면, 잔여 레이턴시는 업데이트되지 않고 기존의 값을 유지한다.
인터럽트 지원 판정부(16)는 잔여 레이턴시의 값에 기초하여 이퀄-모델 프로세서가 바로 인터럽트를 처리하도록 허용할지를 판정하여, 판정 결과를 지시하는 플래그(flag)를 생성하여 출력한다. 상기 플래그는 인터럽트 지원 플래그(Interrupt Support Flag)일 수 있는데, 그 명칭은 예시적인 것이다. 이 경우에, 인터럽트 지원 판정부(16)는 '인터럽트 지원 플래그 생성부'라고 할 수도 있다. 인터럽트 지원 플래그의 값은 임의로 할당될 수 있다. 예컨대, 인터럽트를 지원할 경우에는 '1'이 할당되고, 인터럽트를 지원하지 않을 경우에는 '0'이 할당되는 액티브 하이(active high) 신호가 사용될 수 있다. 하지만, 본 실시예가 여기에만 한정되는 것은 아니며, 인터럽트 지원 플래그로 액티브 로우(active low) 신호가 사용될 수도 있다.
보다 구체적으로, 인터럽트 지원 판정부(16)는 잔여 레이턴시값이 '1'이거나 그 보다 작으면, 이퀄-모델 프로세서가 인터럽트를 처리하는 것을 허용하는 신호, 예컨대 '1'의 값을 갖는 인터럽트 지원 플래그를 생성하여 출력할 수 있다. 반대로, 인터럽트 지원 판정부(16)는 잔여 레이턴시값이 '1'보다 크면, 프로세서가 인터럽트를 처리하는 것을 허용하지 않는 신호, 예컨대 '0'의 값을 갖는 인터럽트 지원 플래그를 생성하여 출력할 수 있다.
이퀄-모델 프로세서에서 잔여 레이턴시가 1보다 크다는 것은 그 이전 명령어들 중에서 하나 이상의 명령어의 실행 결과가 아직 해당 레지스터에 기입되지 않은 것을 의미한다. 이 경우에, 현재 명령어는 그 이전 명령어들의 실행 결과가 해당 레지스터에 기입되지 않은 것을 가정하고 스케줄된 명령어일 가능성이 있다. 따라서 잔여 레이턴시가 1보다 큰 경우에 프로세서에서 인터럽트를 처리하도록 하여 인터럽트를 처리한 후에 후속 명령어를 실행하게 되면, 현재 명령어의 실행 결과가 반영되지 않은 것을 가정하고 스케줄된 후속 명령어의 실행 시에는 현재 명령어의 실행 결과가 반영되게 되어, 프로그램이 오작동을 할 가능성이 있다.
이러한 문제를 해결할 수 있도록, 본 실시예에서는 레이턴시가 1보다 큰 명령어가 디코더에 이슈될 경우에는, 현재 레이턴시와 비교하여 잔여 레이턴시를 계속적으로 현재 레이턴시값으로 업데이트한다. 그리고 업데이트된 잔여 레이턴시가 1보다 큰 경우에는 인터럽트를 처리하는 것을 허용하지 않지만, 잔여 레이턴시가 1이하인 경우에만 인터럽트를 처리할 수 있도록 한다. 본 실시예와 같이, 현재 레이턴시가 1이하이고, 또한 잔여 레이턴시가 1이하인 경우에만 인터럽트를 처리할 수 있도록 하면, 후속 명령어는 현재 명령어나 그 이전 명령어의 실행 결과가 해당 레지스터에 기입되는 것을 전제로 스케줄된 것이라는 것이 보장된다. 따라서 중간에 인터럽트를 처리하고 그 이후에 후속 명령어를 실행하더라도 프로그램이 오작동을 하는 것을 방지할 수 있다.
뿐만 아니라, 본 실시예에서는 비록 현재 명령어가 분기(branch), 점프(jump), 함수-호출(function-call) 등과 같은 프로그램의 오작동 방지가 보장되는 속성을 갖는 명령어가 아니어도, 잔여 레이턴시를 체크하여 소정의 조건을 만족하면 프로세서에서 인터럽트를 처리하도록 허용할 수가 있다. 따라서 본 실시예에 의하면, 기존의 방법에 비하여 인터럽트의 처리 빈도나 처리 속도를 개선할 수 있으며, 인터럽트가 장시간 동안 처리되지 않은 현상이 생기는 것을 방지할 수 있다.
한편, 도 1에 도시된 인터럽트 지원 판정장치(10)는 단지 설명의 편의를 위하여 세 개의 블록으로 구분하여 도시한 것이다. 따라서 다른 실시예에 따른 인터럽트 지원 판정장치 또는 레이턴시 체크 로직은, 도 1의 인터럽트 지원 판정장치(10)와 동일한 역할을 수행하는 다른 구성의 블록도로 구현될 수 있다는 것은 당업자에게 자명하다. 예를 들어, 도 1에 점선으로 표시된 것과 같이, 레이턴시 판정부(12)와 잔여 레이턴시 업데이트부(14)를 묶어서 하나의 기능 블록으로 표시할 수도 있다. 이 경우에, 상기 점선으로 묶인 기능 블록(예컨대, '잔여 레이턴시 업데이트부'라고 칭할 수 있다)은, 우선 복수 레이턴시 명령어(Multiple Latency Instruction)가 디코더에 이슈되었는지를 체크하고, 만일 복수 레이턴시 명령어인 것으로 판정되면 다시 현재 레이턴시가 잔여 레이턴시보다 더 큰지를 판단한 다음, 현재 레이턴시가 더 크면 잔여 레이턴시를 현재 레이턴시로 업데이트하는 기능을 수행한다.
도 2는 일 실시예에 따른 인터럽트 지원 판정방법을 보여 주는 흐름도이다. 도 2에 도시된 흐름도는 도 1에 도시된 인터럽트 지원 판정장치에서의 판정절차일 수 있다. 이하에서는 중복 설명을 피하기 위하여, 도 2에 도시된 인터럽트 지원 판정방법에 대하여 간략히 설명하며, 여기서 기술되지 않은 사항은 도 1을 참조하여 전술한 내용이 동일하게 적용될 수 있다.
도 2를 참조하면, 우선 명령어 디코더에 복수 레이턴시 명령어(multiple latency instruction)가 입력(input) 또는 이슈(issue)되었는지를 판단한다(S10). 판단 결과, '1'보다 큰 레이턴시를 갖는 명령어가 이슈된 경우에는, 잔여 레이턴시와 현재 레이턴시를 비교하여, 더 큰 값으로 잔여 레이턴시를 업데이트한다(S20). 즉, 현재 레이턴시가 잔여 레이턴시보다 크면, 잔여 레이턴시를 현재 레이턴시의 값으로 변경한다. 반면, '1'의 레이턴시를 갖는 명령어가 이슈된 경우에는 잔여 레이턴시를 업데이트하는 과정을 거치지 않을 수 있다. 그리고 잔여 레이턴시가 '1'보다 큰지를 판단한다(S30). 잔여 레이턴시는 단계 S20에서 업데이트된 값이거나 또는 이전 명령어에 대한 잔여 레이턴시에서 1이 감소한 값일 수 있다(여기서, 잔여 레이턴시가 1이 감소한다는 것은 하나의 사이클이 경과한 것을 의미한다). 판단 결과, 잔여 레이턴시가 '1'보다 크면, '0'의 값을 갖는 인터럽트 지원 플래그를 생성하여 출력한다. 반면, 잔여 레이턴시가 '1'이하이면, '1'의 값을 갖는 인터럽트 지원 플래그를 생성하여 출력한다.
표 1은 전술한 실시예에 따른 실제 동작 시나리오를 보여 주는 것이다. 표 1에서는 명령어 로드(LOAD)는 레이턴시가 '4'이고, 명령어 곱(MULT)은 레이턴시가 '2'이며, 나머지 명령어들, 예컨대 명령어 ADD, SUB, STORE 등은 레이턴시가 '1'이라고 가정하였다. 그리고 첫 번째 명령어인 LOAD가 이슈되는 현재 상황은, 잔여 레이턴시가 '2'이고 또한 인터럽트 지원 플래그의 값은 '0'이라고 가정하였다. 표 1은 인터럽트 지원 플래그로 액티브 하이 신호를 사용한 경우이다.
명령어 잔여 레이턴시 인터럽트 지원 플래그
LOAD 4
(LOAD 레이턴시로 업데이트)
0
(잔여 레이턴시 4 (> 1))
ADD 3
(업데이트 안함)
0
(잔여 레이턴시 3 (> 1))
SUB 2
(업데이트 안함)
0
(잔여 레이턴시 2 (> 1))
STORE 1
(업데이트 안함)
1
(잔여 업데이트 1 (≤ 1))
SUB 1
(SUB 레이턴시로 업데이트)
1
(잔여 업데이트 1 (≤ 1))
MULT 2
(MULT 레이턴시로 업데이트)
0
(잔여 레이턴시 2 (> 1))
NOP 1
(업데이트 안함)
1
(잔여 업데이트 1 (≤ 1))
명령어의 종류를 기준으로 인터럽트를 처리할지를 판정하는 기존의 방법에 의할 경우에는, 명령어 STORE, SUB, NOP 등에서는 프로그램의 오작동 가능성으로 인하여 인터럽트를 처리할 수가 없었다. 그러나 표 1에 개시되어 있는 바와 같이, 본 실시예에 의할 경우에는 명령어 STORE, SUB, NOP 등이 명령어 디코더에 이슈된 경우에도, 프로세서는 인터럽트를 처리할 수가 있다. 본 실시예에 의하면, 이퀄-모델 프로세서에서 인터럽트를 처리할 수 있는 빈도가 증가하므로, 인터럽트 요청이 있는 경우에 보다 신속하게 이를 처리해줄 수가 있다.
현실적으로, 잔여 레이턴시가 '1'보다 큰 경우에도 인터럽트를 처리해줄 수 있는 경우가 있을 수 있다. 그러나 프로그램의 오작동이 발생하지 않을 수 있는 모든 경우에 인터럽트를 처리할 수 있도록 하는 것은 상당히 복잡한 로직과 알고리즘이 필요하다. 전술한 실시예에 의하면, 간단한 하드웨어 로직만으로 인터럽트를 처리할 수 있는 커버리지를 상당히 늘릴 수가 있다. 즉, 본 실시예에 의하면, 비록 100%의 커버리지를 달성할 수는 없지만 간단한 하드웨어 로직만으로 인터럽트를 처리할 수 있는 간격을 수백에서 수천 사이클에서 수 사이클로 줄일 수 있다.
도 3은 일 실시예에 따른 이퀄-모델 프로세서의 구성을 보여 주는 블록도이다. 도 3에 도시된 이퀄-모델 프로세서의 프로세서 코아(Processor Core)는 하나의 기능 유닛(Functional Unit, FU)을 포함하는 경우이다. 도 3에서는 본 실시예를 설명하는데 있어서 필요한 최소한의 관련 구성요소 및 신호를 도시하였으며, 본 실시예는 도시된 구성요소 및 신호를 포함하도록 다양하게 구현될 수 있다는 것은 당업자에게 자명하다.
도 3을 참조하면, 본 실시예에 따른 이퀄-모델 프로세서의 프로세서 코아(100)는 명령어 디코더(Instruction Decoder, 110), 인터럽트 발생장치(Interrupt Generating Unit, 120), 앤드 게이트(AND, 130), 및 인터럽트 처리장치(Interrupt Handling Unit, 140)을 포함한다. 그리고 본 실시예에 따른 이퀄-모델 프로세서의 프로세서 코아는 인터럽트 지원 판정장치(112)를 포함한다. 도 3에는 인터럽트 지원 판정장치(112)가 프로세서 코아(100)의 명령어 디코더(110)에 포함되는 것으로 도시되어 있으나, 이것은 단지 예시적인 것이다.
명령어 디코더(110)는 명령어 페치 유닛(도시하지 않음)으로부터 입력되는 명령어들을 순차적으로 복호한다. 명령어 디코더(110)의 기능 및 동작은 기존의 명령어 디코더의 그것과 동일할 수 있다. 다만, 본 실시예에 따른 명령어 디코더(110)는 인터럽트 지원 판정장치(112)를 더 포함할 수 있으며, 이 경우에는 잔여 레이턴시에 기초하여 0 또는 1의 값을 갖는 인터럽트 지원 플래그를 출력할 수 있다. 인터럽트 지원 판정장치(112)는 도 1을 참조하여 전술한 인터럽트 지원 판정장치(10)일 수 있다.
인터럽트 발생장치(120)는 프로세서 코아의 외부로부터 입력되는 인터럽트 요청 신호(예컨대, IRQ(Interrupt ReQuest))에 응답하여 프로세서 코아가 인터럽트를 처리할 수 있는지를 판단하여 그 결과를 출력하는 장치이다. 여기서, 인터럽트 요청 신호의 종류에는 아무런 제한이 없다. 그리고 '인터럽트 발생장치(120)'라는 명칭은 인터럽트 처리장치(140)와 구별하기 위하여 임의로 선택된 것으로서, 광의로는 프로세서 코아 내의 인터럽트 처리장치의 하나라고 할 수 있다.
이러한 인터럽트 발생장치(120)는 기존의 프로세서 코아에 구비되는 인터럽트 처리 로직(Interrupt Handling Logic)과 동일한 장치일 수 있다. 예를 들어, 인터럽트 발생장치(120)는, 외부 인터럽트 핀(External Interrupt Pin)으로부터 인터럽트 요청이 입력되는 경우에, 프로세서 코아에서 요청된 인터럽트 명령어를 실행하도록 할지를 소정의 알고리즘에 따라 판단하고, 그 판단 결과 인터럽트 신호를 인터럽트 처리장치(140)으로 출력하는 하드웨어 로직일 수 있다.
앤드 게이트(130)는 인터럽트 지원 판정장치(112)와 인터럽트 발생장치(120)의 출력 신호를 입력으로 하고, 연산 결과인 내부 인터럽트 신호(internal interrupt signal)를 인터럽트 처리장치(140)으로 출력하는 장치이다. 따라서 앤드 게이트(130)는 인터럽트 지원 판정장치(112)와 인터럽트 발생장치(120)로부터 모두 '1'의 값이 입력되는 경우에만, 인터럽트의 처리를 지시하는 내부 인터럽트 신호를 인터럽트 처리장치(140)로 출력한다. 여기서, 앤드 게이트(130)는 인터럽트 지원 판정장치(112)와 인터럽트 발생장치(120)에서 모두 인터럽트를 지원하는 신호를 출력할 경우에만, 인터럽트 처리장치(140)에서 내부 인터럽트 신호를 출력하는 논리 게이트의 일례이다. 만일, 인터럽트 지원 판정장치(112)와 인터럽트 발생장치(120)에 출력되는 플래그 또는 신호가 액티브 로우 신호인 경우에는, 상기 앤드 게이트(130) 대신에 '오아(OR) 게이트'가 포함될 수도 있다는 것은 당업자에게 자명하다.
인터럽트 처리장치(140)는 내부 인터럽트 신호에 응답하여 프로세서 코아에서 소정의 처리를 하도록 하는 장치이다. 인터럽트 처리장치(140)는 내부 인터럽트 신호가 입력되면, 그에 응답하여 프로그램 카운터(Program Counter, PC)값을 인터럽트 벡터 테이블로 변경한다. 이러한 인터럽트 처리장치(140)는 인터럽트 지원 판정장치(112)와 인터럽트 발생장치(120)에서 모두 인터럽트 처리가 가능하다는 플래그 또는 신호를 출력한 경우, 즉 앤드 게이트(130)가 내부 인터럽트 신호를 출력할 경우에만 동작할 수 있다.
도 4는 다른 실시예에 따른 이퀄-모델 프로세서의 구성을 보여 주는 블록도이다. 도 4에 도시된 이퀄-모델 프로세서는 복수의 기능 유닛(Multiple Functional Unit)을 포함하는 프로세서, 예컨대 VLIW(Very Long Instruction Word) 또는 슈퍼스칼라(superscalar)일 수 있다. 도 4에서도 본 실시예를 설명하는데 있어서 필요한 최소한의 관련 구성요소 및 신호를 도시하였으며, 본 실시예에 따른 이퀄-모델 프로세서는 도 4에 도시된 구성요소 및 신호를 포함하도록 다양하게 구현될 수 있다.
도 4를 참조하면, 본 실시예에 따른 이퀄-모델 프로세서의 프로세서 코아(200)는 n개의 기능 유닛(210a, 210b,…, 210n)과 제1 앤드 게이트(AND, 215), 인터럽트 발생장치(220), 제2 앤드 게이트(AND, 230), 및 인터럽트 처리장치(240)를 포함한다. 이 중에서, 인터럽트 발생장치(220), 제2 앤드 게이트(AND, 230), 및 인터럽트 처리장치(240)는 각각 도 3의 인터럽트 발생장치(120), 앤드 게이트(130), 및 인터럽트 처리장치(140)에 대응한다. 이하에서는 도 3의 이퀄-모델 프로세서와의 차이점을 중심으로 설명한다.
본 실시예에 의하면, 이퀄-모델 프로세서의 기능 유닛들(210a, 210b, … , 210n) 각각은 인터럽트 지원 판정장치(212a, 212b, … , 212n)를 포함한다. 이러한 인터럽트 지원 판정장치들(212a, 212b, … , 212n) 각각은 도 1을 참조하여 전술한 인터럽트 지원 판정장치(10)일 수 있다. 따라서 각각의 기능 유닛들(210a, 210b, … , 210n)에서, 도 1 및 도 2를 참조하여 전술한 판정 알고리즘에 따라서, 각각의 기능 유닛에서의 잔여 레이턴시에 기초하여 인터럽트를 처리하도록 할지를 판정한다. 이러한 인터럽트 지원 판정장치들(212a, 212b, … , 212n) 각각은 각 기능 유닛(100a, 100b, … , 100n)의 명령어 디코더(도시하지 않음)에 포함될 수 있으나, 여기에만 한정되는 것은 아니다.
그리고 각 인터럽트 지원 판정장치들(212a, 212b, … , 212n)의 판정 결과는 제1 앤드 게이트(215)로 입력된다. 그리고 제1 앤드 게이트(215)에서의 연산 결과는 제2 앤드 게이트(230)로 입력된다. 도시된 앤드 게이트(215, 230)는 예시적인 것으로, 인터럽트 지원 플래그가 액티브 로우(active low) 신호일 경우에는 제1 및 제2 앤드 게이트(215, 230) 대신에 오아(OR) 게이트가 사용될 수 있다는 것은 당업자에게 자명하다.
이와 같이, 본 실시예에서는 제1 앤드 게이트(215)(또는 OR 게이트)를 사용하여 각 인터럽트 지원 판정장치들(212a, 212b, … , 212n)의 판정 결과가 모두 인터럽트를 지원할 경우에만 프로세서에서 인터럽트를 처리하도록 한다. 이것은 복수의 기능 유닛을 포함하는 이퀄-모델 프로세서의 특성에 기인한 것으로, 모든 기능 유닛에서 복수 레이턴시 명령어의 실행 결과를 기입하는 것이 종료되어야만 인터럽트를 처리하더라도 그 이후에 프로그램 오작동이 생기는 것을 방지할 수 있기 때문이다.
도 4에 도시된 예에서, 모든 인터럽트 지원 판정장치들(212a, 212b, … , 212n)로부터 1의 값을 갖는 인터럽트 지원 플래그 신호가 입력될 경우에만, 제1 앤드 게이트(215)는 '1'의 값을 출력한다(액티브 하이 신호인 경우). 그리고 인터럽트 처리장치(220)와 제1 앤드 게이트(215)로부터 1의 값을 갖는 신호 또는 플래그가 입력될 경우에만, 제2 앤드 게이트(230)도 '1'의 값을 출력한다. 따라서 도 4에는 제1 및 제2 앤드 게이트(215, 230)가 분리되어 도시되어 있지만, 병합하여 하나로 구현될 수 있다는 것은 당업자에게 자명하다.
이상의 설명은 본 발명의 일 실시예에 불과할 뿐, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 본질적 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현할 수 있을 것이다. 따라서, 본 발명의 범위는 전술한 실시예에 한정되지 않고 특허 청구범위에 기재된 내용과 동등한 범위 내에 있는 다양한 실시 형태가 포함되도록 해석되어야 할 것이다.
도 1 일 실시예에 따른 인터럽트 지원 판정장치(interrupt support determining apparatus)의 구성을 보여 주는 블록도이다.
도 2는 일 실시예에 따른 인터럽트 지원 판정방법을 보여 주는 흐름도이다.
도 3은 일 실시예에 따른 이퀄-모델 프로세서의 구성을 보여 주는 블록도이다.
도 4는 다른 실시예에 따른 이퀄-모델 프로세서의 구성을 보여 주는 블록도이다.

Claims (17)

  1. 현재 레이턴시를 잔여 레이턴시와 비교하고, 비교 결과 상기 현재 레이턴시가 상기 잔여 레이턴시보다 더 클 경우에 상기 잔여 레이턴시를 상기 현재 레이턴시의 값으로 업데이트하기 위한 잔여 레이턴시 업데이트부; 및
    상기 잔여 레이턴시에 기초하여 인터럽트 지원 여부를 지시하는 신호를 출력하는 인터럽트 지원 판정부를 포함하고,
    상기 인터럽트 지원 판정부는 상기 잔여 레이턴시가 1보다 크면 인터럽트 미지원 플래그를 출력하고, 또한 상기 잔여 레이턴시가 1이하이면 인터럽트 지원 플래그를 출력하는 이퀄-모델 프로세서를 위한 인터럽트 지원 판정장치.
  2. 삭제
  3. 제1항에 있어서,
    상기 인터럽트 지원 판정장치는 상기 현재 레이턴시가 1보다 큰 값인지를 판정하기 위한 레이턴시 판정부를 더 포함하고,
    상기 잔여 레이턴시 업데이트부는 상기 레이턴시 판정부에서 상기 현재 레이턴시가 1보다 큰 것으로 판정한 경우에만 업데이트를 수행하는 이퀄-모델 프로세서를 위한 인터럽트 지원 판정장치.
  4. 제1항에 있어서,
    상기 인터럽트 지원 판정장치는 상기 이퀄-모델 프로세서의 명령어 디코더에 레이턴시 체크 로직(latency check logic)으로 구현된 이퀄-모델 프로세서를 위한 인터럽트 지원 판정장치.
  5. 현재 레이턴시를 잔여 레이턴시와 비교하는 비교 단계;
    비교 결과 상기 현재 레이턴시가 상기 잔여 레이턴시보다 더 클 경우에 상기 잔여 레이턴시를 상기 현재 레이턴시의 값으로 업데이트하는 업데이트 단계; 및
    상기 잔여 레이턴시에 기초하여 인터럽트 지원 여부를 판정하는 인터럽트 지원 판정 단계를 포함하고,
    상기 인터럽트 지원 판정 단계에서는 상기 잔여 레이턴시가 1보다 크면 인터럽트를 지원하지 않는 것으로 판정하고, 상기 잔여 레이턴시가 1이하이면 인터럽트를 지원하는 것으로 판정하는 이퀄-모델 프로세서를 위한 인터럽트 지원 판정방법.
  6. 삭제
  7. 제5항에 있어서,
    상기 비교 단계 이전에 상기 현재 레이턴시가 1보다 큰 값인지를 판정하기 위한 레이턴시 판정 단계를 더 포함하고,
    상기 레이턴시 판정 단계에서 상기 현재 레이턴시가 1보다 큰 것으로 판정한 경우에만 비교 단계를 수행하고, 상기 레이턴시 판정 단계에서 상기 현재 레이턴시가 1이하인 것으로 판정한 경우에는 바로 인터럽트 지원 판정 단계를 수행하는 이퀄-모델 프로세서를 위한 인터럽트 지원 판정방법.
  8. 잔여 레이턴시에 기초하여 인터럽트 지원 여부를 판정하여 그 판정 결과를 지시하는 제1 신호를 출력하는 인터럽트 지원 판정장치;
    프로세서 코아의 외부로부터 입력되는 인터럽트 요청 신호에 응답하여 상기 프로세서 코아에서 인터럽트를 처리할지를 판정하여 그 판정 결과를 지시하는 제2 신호를 출력하는 인터럽트 발생장치; 및
    상기 제1 신호가 인터럽트를 지원하는 것을 표시하고, 또한 상기 제2 신호가 인터럽트를 처리하는 것을 표시하는 경우에만 인터럽트를 처리하는 인터럽트 처리장치를 포함하는 이퀄-모델 프로세서.
  9. 제8항에 있어서,
    상기 인터럽트 지원 판정장치는 상기 프로세서 코아의 명령어 디코더에 포함되는 이퀄-모델 프로세서.
  10. 제9항에 있어서, 상기 인터럽트 지원 판정장치는
    상기 명령어 디코더에 이슈된 명령어의 현재 레이턴시가 1보다 큰 값인지를 판정하기 위한 레이턴시 판정부;
    상기 레이턴시 판정부에서 상기 현재 레이턴시가 1보다 큰 것으로 판정한 경우에, 상기 현재 레이턴시를 잔여 레이턴시와 비교하여 상기 현재 레이턴시가 상기 잔여 레이턴시보다 더 클 경우에 상기 잔여 레이턴시를 상기 현재 레이턴시의 값으로 업데이트하기 위한 잔여 레이턴시 업데이트부; 및
    잔여 레이턴시에 기초하여 인터럽트 지원 여부를 판정하여 상기 제1 신호를 생성하는 인터럽트 지원 판정부를 포함하는 이퀄-모델 프로세서.
  11. 제10항에 있어서,
    상기 인터럽트 지원 판정부는 상기 잔여 레이턴시 업데이트부에서 상기 잔여 레이턴시를 업데이트한 경우에는 업데이트된 잔여 레이턴시를 기초로 하여 인터럽트 지원 여부를 판정하는 이퀄-모델 프로세서.
  12. 제8항에 있어서,
    상기 제1 신호와 상기 제2 신호를 입력으로 하고, 그 출력 신호가 상기 인터럽트 처리장치로 입력되는 논리 게이트를 더 포함하되,
    상기 논리 게이트는 상기 제1 신호와 상기 제2 신호가 액티브 하이 신호일 경우에는 앤드(AND) 게이트이고, 상기 상기 제1 신호와 상기 제2 신호가 액티브 로우 신호일 경우에는 오아(OR) 게이트인 이퀄-모델 프로세서.
  13. 각각의 잔여 레이턴시에 기초하여 인터럽트 지원 여부를 판정하여 그 판정 결과를 지시하는 제1 신호를 각각 출력하는 n(n은 2이상의 정수)개의 인터럽트 지원 판정장치;
    프로세서 코아의 외부로부터 입력되는 인터럽트 요청 신호에 응답하여 상기 프로세서 코아에서 인터럽트를 처리할지를 판정하여 그 판정 결과를 지시하는 제2 신호를 출력하는 인터럽트 발생장치; 및
    상기 n개의 인터럽트 지원 판정장치 각각으로부터 출력되는 제1 신호가 모두 인터럽트를 지원하는 것을 표시하고, 또한 상기 제2 신호가 인터럽트를 처리하는 것을 표시하는 경우에만 인터럽트를 처리하는 인터럽트 처리장치를 포함하는 이퀄-모델 프로세서.
  14. 제13항에 있어서,
    상기 이퀄-모델 프로세서는 n개의 기능 유닛을 포함하고, 상기 n개의 인터럽트 지원 판정장치들 각각은 상기 n개의 기능 유닛 각각의 명령어 디코더에 포함되는 이퀄-모델 프로세서.
  15. 제14항에 있어서, 상기 n개의 인터럽트 지원 판정장치 각각은
    상기 명령어 디코더에 이슈된 명령어의 현재 레이턴시가 1보다 큰 값인지를 판정하기 위한 레이턴시 판정부;
    상기 레이턴시 판정부에서 상기 현재 레이턴시가 1보다 큰 것으로 판정한 경우에, 상기 현재 레이턴시를 잔여 레이턴시와 비교하여 상기 현재 레이턴시가 상기 잔여 레이턴시보다 더 클 경우에 상기 잔여 레이턴시를 상기 현재 레이턴시의 값으로 업데이트하기 위한 잔여 레이턴시 업데이트부; 및
    상기 제1 신호를 생성하는 인터럽트 지원 판정부를 포함하는 이퀄-모델 프로세서.
  16. 이퀄-모델 프로세서를 위한 인터럽트 처리 방법에 있어서,
    상기 이퀄-모델 프로세서의 명령어 디코더에 이슈된 현재 명령어의 레이턴시가 1이고, 또한 상기 현재 명령어의 이전 명령어들에 의한 잔여 레이턴시가 1보다 크지 않은 경우에 상기 이퀄-모델 프로세서에서 인터럽트를 처리할 수 있도록 하고,
    상기 이퀄-모델 프로세서는 복수의 기능 유닛을 포함하고,
    명령어 디코더에 이슈된 현재 명령어의 레이턴시가 1이고 또한 상기 현재 명령어의 이전 명령어들에 의한 잔여 레이턴시가 1보다 크지 않은 경우에 상기 이퀄-모델 프로세서에서 인터럽트를 처리할 수 있도록, 상기 복수의 기능 유닛 각각에서 인터럽트 지원 플래그를 출력하는 인터럽트 처리 방법.
  17. 삭제
KR1020090017028A 2009-02-27 2009-02-27 이퀄-모델 프로세서를 위한 인터럽트 처리장치 및 처리방법과 그 처리장치를 포함하는 프로세서 KR101646768B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090017028A KR101646768B1 (ko) 2009-02-27 2009-02-27 이퀄-모델 프로세서를 위한 인터럽트 처리장치 및 처리방법과 그 처리장치를 포함하는 프로세서
US12/695,266 US8516231B2 (en) 2009-02-27 2010-01-28 Interrupt handling apparatus and method for equal-model processor and processor including the interrupt handling apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090017028A KR101646768B1 (ko) 2009-02-27 2009-02-27 이퀄-모델 프로세서를 위한 인터럽트 처리장치 및 처리방법과 그 처리장치를 포함하는 프로세서

Publications (2)

Publication Number Publication Date
KR20100098052A KR20100098052A (ko) 2010-09-06
KR101646768B1 true KR101646768B1 (ko) 2016-08-09

Family

ID=42667764

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090017028A KR101646768B1 (ko) 2009-02-27 2009-02-27 이퀄-모델 프로세서를 위한 인터럽트 처리장치 및 처리방법과 그 처리장치를 포함하는 프로세서

Country Status (2)

Country Link
US (1) US8516231B2 (ko)
KR (1) KR101646768B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10268534B2 (en) * 2016-12-01 2019-04-23 Vmware, Inc. Methods and systems that use volatile event types in log files to narrow a search for potential sources of problems in a distributed computing system

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5787303A (en) * 1991-10-31 1998-07-28 Kabushiki Kaisha Toshiba Digital computer system capable of processing a plurality of instructions in parallel based on a VLIW architecture
KR19980025435A (ko) 1996-10-01 1998-07-15 구자홍 멀티-엠피유(MPU) 시스템의 인터럽트 핸들러(Handler) 성능 최적화 방법
US6681280B1 (en) 1998-10-29 2004-01-20 Fujitsu Limited Interrupt control apparatus and method separately holding respective operation information of a processor preceding a normal or a break interrupt
US6378022B1 (en) * 1999-06-17 2002-04-23 Motorola, Inc. Method and apparatus for processing interruptible, multi-cycle instructions
US20040128418A1 (en) * 2002-12-30 2004-07-01 Darren Abramson Mechanism and apparatus for SMI generation
KR100666980B1 (ko) 2004-01-19 2007-01-10 삼성전자주식회사 트래픽 폭주 제어 방법 및 이를 구현하기 위한 장치
KR20060065271A (ko) 2004-12-10 2006-06-14 엘지전자 주식회사 키 입력값 체크 방법
KR100858237B1 (ko) 2006-11-07 2008-09-12 주식회사 안철수연구소 Tlb를 이용한 메모리 접근 제어 방법
KR20080079429A (ko) * 2007-02-27 2008-09-01 엘지전자 주식회사 단일메모리를 갖는 데이터처리시스템의 메모리 중재기 및그 중재 방법

Also Published As

Publication number Publication date
US8516231B2 (en) 2013-08-20
KR20100098052A (ko) 2010-09-06
US20100223449A1 (en) 2010-09-02

Similar Documents

Publication Publication Date Title
US7024543B2 (en) Synchronising pipelines in a data processing apparatus
US7386646B2 (en) System and method for interrupt distribution in a multithread processor
KR101660659B1 (ko) 멀티-스레딩된 프로세싱 시스템에서의 서브루틴들의 실행
US20070143581A1 (en) Superscalar data processing apparatus and method
CN104937541B (zh) 用于调用多线程加速器的装置和方法
JPH02224025A (ja) コンピューターシステム
US20070162729A1 (en) Method and apparatus for interrupt handling in coarse grained array
KR20040016829A (ko) 파이프라인식 프로세서에서의 예외 취급 방법, 장치 및시스템
US6209086B1 (en) Method and apparatus for fast response time interrupt control in a pipelined data processor
EP3756089B1 (en) Processor achieving zero-overhead loop
US10824468B2 (en) Control of instruction execution in a data processor
US20160342543A1 (en) Sharing message-signaled interrupt vectors in multi-processor computer systems
KR20180126003A (ko) 분기 명령
US8458516B2 (en) Processor system and operation mode switching method for processor system
US11099851B2 (en) Branch prediction for indirect branch instructions
US7987347B2 (en) System and method for implementing a zero overhead loop
CN111045730B (zh) 一种用于risc-v架构的硬件快速中断处理系统及其方法
KR101646768B1 (ko) 이퀄-모델 프로세서를 위한 인터럽트 처리장치 및 처리방법과 그 처리장치를 포함하는 프로세서
KR20140131199A (ko) 재구성 가능 프로세서 및 재구성 가능 프로세서의 동작 방법
JP2013161484A (ja) 再構成可能コンピューティング装置、その第1メモリ制御器及び第2メモリ制御器、並びにそのデバッギング用のトレースデータを処理する方法
WO2021037124A1 (zh) 一种任务处理的方法以及任务处理装置
KR102210996B1 (ko) 프로세서 및 프로세서 제어 방법
JP2011070290A (ja) データプロセッサ
US20100042811A1 (en) Method for managing branch instructions and a device having branch instruction management capabilities
KR102379886B1 (ko) 벡터 명령 처리

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190717

Year of fee payment: 4