KR101571882B1 - 재구성 가능 어레이의 인터럽트 핸들링을 위한 컴퓨팅 장치및 방법 - Google Patents

재구성 가능 어레이의 인터럽트 핸들링을 위한 컴퓨팅 장치및 방법 Download PDF

Info

Publication number
KR101571882B1
KR101571882B1 KR1020090008560A KR20090008560A KR101571882B1 KR 101571882 B1 KR101571882 B1 KR 101571882B1 KR 1020090008560 A KR1020090008560 A KR 1020090008560A KR 20090008560 A KR20090008560 A KR 20090008560A KR 101571882 B1 KR101571882 B1 KR 101571882B1
Authority
KR
South Korea
Prior art keywords
array
interrupt
host processor
coarse grain
mode
Prior art date
Application number
KR1020090008560A
Other languages
English (en)
Other versions
KR20100089351A (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 KR1020090008560A priority Critical patent/KR101571882B1/ko
Priority to US12/639,663 priority patent/US8495345B2/en
Publication of KR20100089351A publication Critical patent/KR20100089351A/ko
Application granted granted Critical
Publication of KR101571882B1 publication Critical patent/KR101571882B1/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
    • 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/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • 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
    • 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
    • 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
    • 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)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Bus Control (AREA)

Abstract

재구성 가능한 프로세서에서의 인터럽트 핸들링 기술이 개시된다. 본 발명의 일 양상에 의하면, 코어스 그레인 재구성 가능 어레이(Coarse-Grained Reconfigurable Array)에서 루프 연산 수행 중 인터럽트가 발생하면 코어스 그레인 재구성 가능 어레이와 별도로 동작하는 호스트 프로세서에서 이러한 인터럽트를 처리하며, 하드웨어적으로 동작하는 인터럽트 관리자가 코어스 그레인 재구성 가능 어레이와 호스트 프로세서 간의 동작 전환을 관리하는 것이 가능하다. 따라서, 인터럽트 처리 시에 발생되는 오버헤드를 줄이고 보다 빠르게 인터럽트가 처리될 수 있다.
재구성 프로세서(Reconfigurable Processor), 코어스 그레인 어레이(Coarse-Grained Array), VLIW 프로세서(Very Long Instruction Word Processor), 인터럽트(Interrupt), 문맥 저장(Context Saving)

Description

재구성 가능 어레이의 인터럽트 핸들링을 위한 컴퓨팅 장치 및 방법{Computing apparatus and method for interrupt handling of reconfigurable array}
프로세서에서 작업 수행 중에 발생되는 인터럽트 처리 기술과 관련된다. 특히, 재구성 가능 어레이에서 루프 연산이 수행되는 도중 발생되는 인터럽트를 처리하는 기술과 관련된다.
통상적으로, 재구성 가능 아키텍처(reconfigurable architecture)란 어떠한 작업을 수행하기 위한 컴퓨팅 장치의 하드웨어적 구성을 각각의 작업에 최적화되도록 변경할 수 있는 아키텍처를 의미한다.
어떠한 작업을 하드웨어적으로만 처리하면 고정된 하드웨어의 기능으로 인해 작업 내용에 약간의 변경이 가해지면 이를 효율적으로 처리하기가 어렵다. 또한, 어떠한 작업을 소프트웨어적으로만 처리하면 그 작업 내용에 맞도록 소프트웨어를 변경하여 처리하는 것이 가능하지만 하드웨어적 처리에 비해 속도가 늦다.
재구성 가능 아키텍처는 이러한 하드웨어/소프트웨어의 장점을 모두 만족시킬 수가 있다. 특히, 동일한 작업이 반복적으로 수행되는 디지털 신호 처리 분야에 서는 이러한 재구성 가능 아키텍처가 많은 주목을 받고 있다.
재구성 가능 아키텍처의 종류는 여러 가지가 있는데 그 중 코어스 그레인 어레이(Coarse-Grained Array)가 대표적이다. 코어스 그레인 어레이는 여러 개의 프로세싱 유닛으로 이루어진다. 그리고 프로세싱 유닛들 간의 연결 상태가 조절됨에 따라 어떤 작업에 최적화되는 것이 가능하다.
그런데, 코어스 그레인 어레이에서 루프 연산이 수행되던 중에 인터럽트가 발생하는 경우 이를 어떻게 처리할 것인지 문제된다. 인터럽트는 하드웨어 인터럽트(hardware interrupt)(예, 외부 I/O 장치, 타이머 등), 예외(exception)(예, undefined instruction), 소프트웨어 인터럽트(software interrupt)(예, 시스템 콜) 등을 포함한다. 통상적으로, 인터럽트가 발생하면 인터럽트를 처리하는 동안 레지스터에 저장되어 있는 현재의 문맥(context)을 메모리에 저장시켰다가 복구하여야 하는 이른바 문맥 저장(context saving)이 필요하다.
그러나, 코어스 그레인 어레이는 다수의 레지스터 파일들을 포함하기 때문에 인터럽트 발생시 이를 처리하기 위해 많은 오버헤드가 발생하는 문제점이 있다.
본 명세서에서는, 재구성 가능 어레이 동작 중에 발생하는 인터럽트를 지연시간 없이 빠르게 처리하는 기술이 개시된다.
보다 구체적으로, 본 발명의 일 양상에 따른 컴퓨팅 장치는 다수의 프로세싱 엘리먼트로 구성되는 코어스 그레인 어레이; 코어스 그레인 어레이의 외부에 형성되는 호스트 프로세서; 코어스 그레인 어레이와 호스트 프로세서 사이에서 데이터 전달 기능을 수행하는 중앙 레지스터 파일; 및 코어스 그레인 어레이에서 루프가 수행되는 도중 인터럽트가 발생하면, 코어스 그레인 어레이의 동작을 정지시키고 호스트 프로세서에서 인터럽트가 처리되도록 하는 인터럽트 관리자; 를 포함할 수 있다.
또한, 호스트 프로세서는 코어스 그레인 어레이의 프로세싱 엘리먼트와 독립적인 프로세싱 엘리먼트를 가지고 동작하는 것이 가능하다.
또한, 코어스 그레인 어레이와 호스트 프로세서는 중앙 레지스터 파일을 공유함으로써 강결합을 형성하는 것이 가능하다.
또한, 인터럽트 관리자는 호스트 프로세서에서 인터럽트 처리가 완료되면, 코어스 그레인 어레이의 동작을 재개시키는 것이 가능하다.
또한, 인터럽트 관리자는 하드웨어 적으로 구성될 수 있으며, 호스트 프로세서는 VLIW(very long instruction word) 프로세서로 구성되는 것이 가능하다.
또한, 본 발명의 일 양상에 따라, 코어스 그레인 어레이 및 호스트 프로세서는 인스트럭션 실행 모드에 따라 둘 중 어느 하나만 동작하는 것이 가능하다. 예를 들어, 인스트럭션 실행 모드는 일반 모드와 어레이 모드를 포함하며, 일반 모드에서는 호스트 프로세서가 동작하고, 어레이 모드에서는 코어스 그레인 어레이가 동작하는 것이 가능하다. 이때, 인터럽트 관리자는 일반 모드 및 어레이 모드 간의 모드 전환을 수행하는 것이 가능하다.
한편, 본 발명의 일 양상에 따른 인터럽트 핸들링 방법은 다수의 프로세싱 엘리먼트로 구성되는 코어스 그레인 어레이에서 루프가 수행되는 도중에 인터럽트가 발생되었는지 여부를 판단하는 단계; 및 인터럽트가 발생되면, 코어스 그레인 어레이의 동작을 정지시키고, 코어스 그레인 어레이의 프로세싱 엘리먼트와 독립된 프로세싱 엘리먼트를 갖는 호스트 프로세서에서 인터럽트가 처리되도록 하는 단계; 를 포함할 수 있다.
그리고, 호스트 프로세서에서 인터럽트의 처리가 완료되면, 코어스 그레인 어레이의 동작을 재개하는 단계; 를 더 포함할 수도 있다.
개시된 내용에 의하면,
코어스 그레인 어레이와 호스트 프로세서가 중앙 레지스터 파일을 공유하면서 강결합을 이루고 있기 때문에, 데이터 전달의 오버헤드를 줄일 수가 있다.
그리고, 호스트 프로세서가 코어스 그레인 어레이의 프로세싱 엘리먼트와 독립적으로 동작하는 프로세싱 엘리먼트를 가지고 있기 때문에, 인터럽트 발생 시 문 맥 저장 없이 즉시 인터럽트를 처리하는 것이 가능하다.
나아가, 인터럽트 관리자가 하드웨어 컴포넌트로 구성되기 때문에, 호스트 프로세서와 코어스 그레인 어레이 간의 모드 스위칭을 소프트웨어적인 오버헤드 없이 처리하는 것이 가능하다.
이하, 첨부된 도면을 참조하여 본 발명의 실시를 위한 구체적인 예를 상세히 설명한다. 후술되는 실시 예들은 본 발명을 예시적으로 설명하기 위한 것으로 본 발명의 권리범위가 특정 실시 예에 한정되지 아니한다.
도 1은 본 발명의 일 실시 예에 따른 컴퓨팅 장치를 도시한다.
도 1을 참조하면, 컴퓨팅 장치(100)는 코어스 그레인 어레이(101), 호스트 프로세서(102), 중앙 레지스터 파일(103), 인터럽트 관리자(104)를 포함한다. 그리고 코어스 그레인 어레이(101)와 호스트 프로세서(102)는 중앙 레지스터 파일(103)을 공유함으로써 강결합(tightly-coupled)되어 있고, 인터럽트 관리자(104)는 인터럽트 발생 시 모드 스위칭(mode swiching)을 수행한다.
코어스 그레인 어레이(coarse-grained array)(101)는 재구성 가능 프로세서(reconfigurable processor)가 될 수 있다. 예컨대, 코어스 그레인 어레이(101)는 다수의 프로세싱 엘리먼트(processing element)를 구비하며, 각 프로세싱 엘리먼트들 간의 연결 상태에 따라 커스토마이징된 계산을 수행하는 것이 가능하다.
루프 연산의 경우 동일한 계산이 반복적으로 실행되기 때문에 코어스 그레인 어레이(101)는 이러한 루프 연산을 수행하기에 알맞다. 즉, 코어스 그레이 어레 이(101)에 구비된 프로세싱 엘리먼트들 간의 연결 상태를, 반복적으로 수행되는 계산에 최적화시켜서 사용하는 것이 가능하다. 예컨대, Loop-level parallelism을 활용하여 동시에 복수 개의 프로세싱 엘리먼트를 동작시킴으로써 수행 성능을 극대화시킬 수 있다.
호스트 프로세서(102)는 코어스 그레인 어레이(101)의 외부에 형성되며, 루프 연산 외의 일반적인 연산을 실행한다. 예컨대, 호스트 프로세서(102)는 코어스 그레인 어레이(101)의 프로세싱 엘리먼트와 독립적인 프로세싱 엘리먼트를 가지고 동작하는 VLIW(very long instruction word) 프로세서가 될 수 있다.
코어스 그레인 어레이(101)와 호스트 프로세서(102)는 중앙 레지스터 파일(103)을 공유함으로써 강결합(tightly-coupled)된다.
본 명세서에서, 강결합(tightly-coupled) 및 약결합(loosly-coupled)이란 두 개 이상의 프로세서 사이에서 데이터 전달이 이루어지는 방식을 의미한다. 강결합은 프로세서들이 데이터 레지스터를 공유하는 방식을 말하고, 약결합이란 프로세서들이 이러한 데이터 레지스터 없이 단순히 연결되는 방식을 말한다.
약결합의 대표적인 예로는 두 개의 프로세서가 데이터 버스를 통해 연결되는 방식이 있다. 이러한 경우, 데이터 전달을 위해서는 어느 하나의 프로세서가 데이터 버스를 점유하고 데이터 전달을 위한 명령을 실행하여야 한다. 따라서 데이터 전달 시 오버헤드가 발생할 수 있다. 이와 달리, 강결합은 공유하고 있는 데이터 레지스터에서 필요한 데이터를 읽거나 쓰기만 하면 되므로 약결합에 비해 데이터 전달 시의 오버헤드가 적다.
본 실시 예에서, 코어스 그레인 어레이(101)와 호스트 프로세서(102)는 강결합 구조를 이루며, 중앙 레지스터 파일(103)이 상호 간의 데이터 전달을 가능하게 한다.
예를 들어, 코어스 그레인 어레이(101)에서 루프 연산을 실행한 후, 그 결과를 중앙 레지스터 파일(103)에 저장하면, 호스트 프로세서(102)가 중앙 레지스터 파일(103)에 저장된 연산 결과를 읽어가서 루프 연산 이후에 이어지는 다른 연산을 실행하는 것이 가능하다.
본 실시 예에서, 컴퓨팅 장치(100)는 이와 같이 강결합 구조를 갖기 때문에 두 가지 실행 모드를 지원하는 것이 가능하다. 예컨대, 컴퓨팅 장치(100)는 인스트럭션 실행 모드로써 일반 모드와 어레이 모드를 갖는 것이 가능하다.
그리고, 각 모드에서는 코어스 그레인 어레이(101)와 호스트 프로세서(102) 둘 중에서 어느 하나만 동작하는 것이 가능하다. 예컨대, 일반 모드에서는 호스트 프로세서(102)가 동작하여 일반적인 연산을 실행하는 것이 가능하며, 어레이 모드에서는 코어스 그레인 어레이(101)가 동작하여 루프 연산을 실행하는 것이 가능하다.
인터럽트 관리자(104)는 인스트럭션 실행 모드의 스위칭 기능을 담당한다. 예컨대, 인터럽트 관리자(104)는 별도의 하드웨어 유닛으로 형성되고, 코어스 그레인 어레이(101) 및 호스트 프로세서(102)에 제어 신호를 인가하여 양 유니트(101)(102)의 동작 상태를 조절하는 것이 가능하다.
그리고, 인터럽트 관리자(104)는 인터럽트 요청이 발생하는지 여부를 모니터 링하는 것이 가능하다. 만약, 코어스 그레인 어레이(101)에서 루프 연산이 수행되는 도중 인터럽트 요청이 발생하면, 코어스 그레인 어레이(101)의 동작을 정지시키고 이러한 인터럽트에 대한 요청을 호스트 프로세서(102)로 전달하여 인터럽트 핸들링이 이루어지도록 하는 것이 가능하다.
또한, 호스트 프로세서(102)에서 인터럽트 처리가 완료되면, 코어스 그레인 어레이(101)의 동작이 재개되도록 하는 것이 가능하다.
전술하였듯이, 호스트 프로세서(102)는 코어스 그레인 어레이(101)에 구비된 프로세싱 엘리먼트와 별도로 동작하는 프로세싱 엘리먼트로 구성되고, 호스트 프로세서(102)와 코어스 그렝인 어레이(101)가 강결합되기 때문에, 인터럽트 핸들링을 위한 모드 전환 시에 문맥 저장(context saving)과 같은 지연을 줄일 수가 있다.
도 2는 본 발명의 일 실시 예에 따른 컴퓨팅 장치를 더욱 구체적으로 도시한다.
도 2를 참조하면, 컴퓨팅 장치(200)는, 도 1과 마찬가지로, 코어스 그레인 어레이(101), 호스트 프로세서(102), 중앙 레지스터 파일(103), 인터럽트 관리자(104)를 포함한다.
코어스 그레인 어레이(101)는 16개의 프로세싱 엘리먼트(201)로 구성되며, 각각의 프로세싱 엘리먼트(201)가 서로 연결되어 있는 것을 알 수 있다. 이때, 프로세싱 엘리먼트(201)들 간의 연결 상태는 구성 메모리(204)에 저장된 정보 선택에 따라 달라질 수 있다. 또한, 각각의 프로세싱 엘리먼트(201)는 계산 유닛(function unit), 또는 계산 유닛 및 레지스터 파일(register file)을 포함할 수 있다. 따라 서, 코어스 그레인 어레이(101)를 이용하여, 반복적으로 수행되는 어떠한 계산에 최적화되도록 구성 메모리(204)의 구성(configuration)을 조절하고, 루프 연산을 수행하는 것이 가능하다.
호스트 프로세서(102)는 중앙 레지스터 파일(103)을 코어스 그레인 어레이(101)와 공유하며, 코어스 그레인 어레이(101)의 프로세싱 엘리먼트(201)와 별도의 프로세싱 엘리먼트(202)를 가진다.
예컨대, 호스트 프로세서(102)는 4개의 프로세싱 엘리먼트(202)를 가지며, VLIW 아키텍처를 구성하는 것이 가능하다. VILW 아키텍처에 있어서, 하나의 인스트럭션 워드에는 병렬적으로 처리 가능한 다수의 인스트럭션이 포함되어 있으므로 각각의 프로세싱 엘리먼트(202)는 이러한 인스트럭션을 병렬 처리하는 것이 가능하다. 이를 위해, 호스트 프로세서(102)는 데이터 메모리(205)로부터 인스트럭션을 패치(fetch)하고 디코딩(decoding)하는 VLIW 인스트럭션 메모리(203)를 가질 수 있다.
인터럽트 관리자(104)는 코어스 그레인 어레이(101)에서 루프 연산이 수행되는 도중, 인터럽트 요청이 발생하면 코어스 그레인 어레이(101)의 동작을 정지시키고 호스트 프로세서(102)를 동작시켜서 인터럽트 요청을 처리하도록 한다.
호스트 프로세서(102)는 코어스 그레인 어레이(101)의 프로세싱 엘리먼트(201)와 별도의 프로세싱 엘리먼트(202)를 가지며 동작하기 때문에 인터럽트 요청이 발생하였을 경우, 이것을 즉시 처리하는 것이 가능함은 전술한 바와 같다.
도 3은 본 발명의 일 실시 예에 따른 컴퓨팅 장치의 동작 과정을 도시한다.
도 3에서, 301은 코어스 그레인 어레이(101)의 동작을, 302는 호스트 프로세서(102)의 동작을 나타낸다. 그리고, 303, 304, 305는 동작이 전환되는 시점을 나타낸다.
도 3을 참조하면, 코어스 그레인 어레이(101)와 호스트 프로세서(102)는 강결합되어 있기 때문에 동시에 동작하지 아니한다. 예컨대, 일반적인 연산은 호스트 프로세서(102)에서 실행되고, 루프 연산은 코어스 그레인 어레이(101)에서 실행되는 것이 가능하다.
처음에, 일반적인 연산이 호스트 프로세서(102)에서 실행되다가 303 시점에서 루프 연산이 시작되어 코어스 그레인 어레이(101)가 동작하였다. 이러한 전환은 인터럽트 관리자(104) 또는 소프트웨어 명령어에 의해 수행될 수 있다.
이후, 코어스 그레인 어레이(101)에서 루프 연산이 실행되다가 304 시점에 인터럽트가 발생하였다. 이때, 인터럽트 관리자(104)는 코어스 그레인 어레이(101)의 동작을 정지시키고 해당 인터럽트 요청을 호스트 프로세서(102)로 넘겨준다. 그러면, 호스트 프로세서(102)가 인터럽트 핸들링을 수행한다. 인터럽트 핸들링이 완료된 305 시점이 되면, 인터럽트 관리자(104)는 정지되었던 코어스 그레인 어레이(101)를 동작시켜서 루프 연산이 재개되도록 한다.
이와 같이, 인터럽트 핸들링을 위해 루프 연산을 정지 및 재개 시킬 때, 문맥 저장과 같은 별도의 과정이 없이 코어스 그레인 어레이(101) 또는 호스트 프로세서(102)의 동작만 조절하면 되므로 즉시 인터럽트를 처리하는 것이 가능하다.
도 4는 본 발명의 일 실시 예에 따른 인터럽트 핸들링 방법을 도시한다. 이 것은 도 1 또는 도 2와 같은 구성을 갖는 컴퓨팅 장치에서 인터럽트를 핸들링하는 방법에 관한 일 예가 될 수 있다.
먼저, 인터럽트 관리자(104)는 외부로부터 인터럽트 요청(IRQ)이 있는지 여부를 모니터링한다(401).
인터럽트 요청이 발생하면(402), 인터럽트 관리자(104)는 코어스 그레인 어레이(101)가 동작 중인지 여부를 판단한다(403).
코어스 그레인 어레이(101)가 동작 중이면, 인터럽트 관리자(104)는 코어스 그레인 어레이(101)를 정지시키고(404), 모드 스위칭을 수행한다(405). 여기서 모드 스위칭은 코어스 그레인 어레이(101)가 동작하는 어레이 모드에서 호스트 프로세서(102)가 동작하는 일반 모드로의 전환이 될 수 있다.
이어서, 호스트 프로세서(101)는 인터럽트 요청을 처리한다(406). 예컨대, 인터럽트 관리자(104)가 인터럽트 요청을 호스트 프로세서(101)에 전달하고 해당 인터럽트 요청을 처리하도록 제어 명령을 내리는 것이 가능하다.
이어서, 인터럽트 관리자(104)는 호스트 프로세서(101)가 인터럽트 요청에 관한 처리를 완료했는지 여부를 판단한다(407).
인터럽트 요청에 관한 처리가 완료되면, 인터럽트 관리자(104)는 코어스 그레인 어레이(101)의 동작을 재개시킬 필요성이 있는지 여부를 판단한다(408). 예컨대, 과정 403에서, 코어스 그레인 어레이(101)가 동작 중이지 아니하였다면, 동작을 재개시킬 필요가 없을 것이나, 동작 중이었다면 이를 재개시킬 필요가 있다.
코어스 그레인 어레이(101)의 동작을 재개시킬 필요성이 있다면, 인터럽트 관리자(104)는 코어스 그레인 어레이(101)의 동작을 재개시킨다(409). 그러면, 코어스 그레인 어레이(101)는 인터럽트 요청 발생 전에 실행하고 있던 연산을 이어서 실행한다.
이상에서 상세히 설명한 것과 같이, 개시된 실시 예에 의하면, 코어스 그레인 어레이(101)와 호스트 프로세서(102)가 강결합되어 있고 호스트 프로세서(102)가 코어스 그레인 어레이(101)와 별도로 동작하기 때문에 문맥 저장 과정과 같은 오버헤드 없이 즉시 인터럽트를 처리하는 것이 가능하다.
도 1은 본 발명의 일 실시 예에 따른 컴퓨팅 장치를 도시한다.
도 2는 본 발명의 다른 실시 예에 따른 컴퓨팅 장치를 도시한다.
도 3은 본 발명의 일 실시 예에 따른 컴퓨팅 장치의 동작 과정을 도시한다.
도 4는 본 발명의 일 실시 예에 따른 인터럽트 핸들링 방법을 도시한다.

Claims (14)

  1. 다수의 프로세싱 엘리먼트로 구성되는 코어스 그레인 어레이;
    상기 코어스 그레인 어레이의 외부에 형성되는 호스트 프로세서;
    상기 코어스 그레인 어레이와 상기 호스트 프로세서 사이에서 데이터 전달 기능을 수행하는 중앙 레지스터 파일; 및
    상기 코어스 그레인 어레이에서 루프가 수행되는 도중 인터럽트가 발생하면, 상기 코어스 그레인 어레이의 동작을 정지시키고 상기 호스트 프로세서에서 상기 인터럽트가 처리되도록 하는 인터럽트 관리자; 를 포함하고,
    상기 호스트 프로세서는 상기 코어스 그레인 어레이의 프로세싱 엘리먼트와 독립적으로 동작하는 프로세싱 엘리먼트를 가지고,
    상기 코어스 그레인 어레이와 상기 호스트 프로세서는 상기 중앙 레지스터 파일을 공유함으로써 강결합을 형성하는 컴퓨팅 장치.
  2. 삭제
  3. 삭제
  4. 제 1 항에 있어서,
    상기 인터럽트 관리자는 상기 호스트 프로세서에서 상기 인터럽트 처리가 완 료되면, 상기 코어스 그레인 어레이의 동작을 재개시키는 것을 특징으로 하는 컴퓨팅 장치.
  5. 제 1 항에 있어서,
    상기 인터럽트 관리자는 하드웨어 적으로 구성되는 것을 특징으로 하는 컴퓨팅 장치.
  6. 제 1 항에 있어서,
    상기 호스트 프로세서는 VLIW(very long instruction word) 프로세서로 구성되는 것을 특징으로 하는 컴퓨팅 장치.
  7. 제 1 항에 있어서,
    상기 코어스 그레인 어레이 및 상기 호스트 프로세서는 인스트럭션 실행 모드에 따라 둘 중 어느 하나만 동작하는 것을 특징으로 하는 컴퓨팅 장치.
  8. 제 7 항에 있어서,
    상기 인스트럭션 실행 모드는 일반 모드와 어레이 모드를 포함하며,
    상기 일반 모드에서는 상기 호스트 프로세서가 동작하고, 상기 어레이 모드에서는 상기 코어스 그레인 어레이가 동작하는 것을 특징으로 하는 컴퓨팅 장치.
  9. 제 8 항에 있어서,
    상기 인터럽트 관리자는 상기 일반 모드 및 상기 어레이 모드 간의 모드 전환을 수행하는 것을 특징으로 하는 컴퓨팅 장치.
  10. 다수의 프로세싱 엘리먼트로 구성되는 코어스 그레인 어레이에서 루프가 수행되는 도중에 인터럽트가 발생되었는지 여부를 판단하는 단계; 및
    상기 인터럽트가 발생되면, 상기 코어스 그레인 어레이의 동작을 정지시키고, 상기 코어스 그레인 어레이의 외부에 형성되고 상기 코어스 그레인 어레이의 프로세싱 엘리먼트와 독립적으로 동작하는 프로세싱 엘리먼트를 갖는 호스트 프로세서에서 상기 인터럽트가 처리되도록 하는 단계; 를 포함하고,
    상기 코어스 그레인 어레이와 상기 호스트 프로세서는 중앙 레지스터 파일을 공유함으로써 강결합을 형성하는 인터럽트 핸들링 방법.
  11. 제 10 항에 있어서,
    상기 호스트 프로세서에서 상기 인터럽트의 처리가 완료되면, 상기 코어스 그레인 어레이의 동작을 재개하는 단계; 를 더 포함하는 인터럽트 핸들링 방법.
  12. 삭제
  13. 제 10 항에 있어서,
    상기 코어스 그레인 어레이 및 상기 호스트 프로세서는 인스트럭션 실행 모드에 따라 둘 중 어느 하나만 동작하는 것을 특징으로 하는 인터럽트 핸들링 방법.
  14. 제 13 항에 있어서,
    상기 인스트럭션 실행 모드는 일반 모드와 어레이 모드를 포함하며,
    상기 일반 모드에서는 상기 호스트 프로세서가 동작하고, 상기 어레이 모드에서는 상기 코어스 그레인 어레이가 동작하는 것을 특징으로 하는 인터럽트 핸들링 방법.
KR1020090008560A 2009-02-03 2009-02-03 재구성 가능 어레이의 인터럽트 핸들링을 위한 컴퓨팅 장치및 방법 KR101571882B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090008560A KR101571882B1 (ko) 2009-02-03 2009-02-03 재구성 가능 어레이의 인터럽트 핸들링을 위한 컴퓨팅 장치및 방법
US12/639,663 US8495345B2 (en) 2009-02-03 2009-12-16 Computing apparatus and method of handling interrupt

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090008560A KR101571882B1 (ko) 2009-02-03 2009-02-03 재구성 가능 어레이의 인터럽트 핸들링을 위한 컴퓨팅 장치및 방법

Publications (2)

Publication Number Publication Date
KR20100089351A KR20100089351A (ko) 2010-08-12
KR101571882B1 true KR101571882B1 (ko) 2015-11-26

Family

ID=42398662

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090008560A KR101571882B1 (ko) 2009-02-03 2009-02-03 재구성 가능 어레이의 인터럽트 핸들링을 위한 컴퓨팅 장치및 방법

Country Status (2)

Country Link
US (1) US8495345B2 (ko)
KR (1) KR101571882B1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9063735B2 (en) * 2010-10-19 2015-06-23 Samsung Electronics Co., Ltd. Reconfigurable processor and method for processing loop having memory dependency
KR20130028505A (ko) * 2011-09-09 2013-03-19 삼성전자주식회사 재구성가능 프로세서, 재구성가능 프로세서의 코드 변환 장치 및 방법
KR102044784B1 (ko) * 2012-07-19 2019-11-14 삼성전자주식회사 재구성 프로세서에서 충돌 해결을 가속화하기 위한 방법 및 시스템
CN102932645B (zh) * 2012-11-29 2016-04-20 济南大学 一种图形处理器与视频编解码器融合的电路结构
KR20140131199A (ko) * 2013-05-03 2014-11-12 삼성전자주식회사 재구성 가능 프로세서 및 재구성 가능 프로세서의 동작 방법
KR102141621B1 (ko) * 2013-11-05 2020-08-05 삼성전자주식회사 이동 통신 시스템에서 연결 재설정을 위한 장치 및 방법
US20170083313A1 (en) * 2015-09-22 2017-03-23 Qualcomm Incorporated CONFIGURING COARSE-GRAINED RECONFIGURABLE ARRAYS (CGRAs) FOR DATAFLOW INSTRUCTION BLOCK EXECUTION IN BLOCK-BASED DATAFLOW INSTRUCTION SET ARCHITECTURES (ISAs)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010039610A1 (en) 2000-03-10 2001-11-08 Busa Natalino Giorgio Data processing device, method of operating a data processing device and method for compiling a program
US20050021578A1 (en) 2003-07-24 2005-01-27 Industrial Technology Research Institute Reconfigurable apparatus with a high usage rate in hardware
KR100681199B1 (ko) 2006-01-11 2007-02-09 삼성전자주식회사 코어스 그레인 어레이에서의 인터럽트 처리 방법 및 장치

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6044430A (en) * 1997-12-17 2000-03-28 Advanced Micro Devices Inc. Real time interrupt handling for superscalar processors
KR100283146B1 (ko) 1998-11-04 2001-03-02 구자홍 디에스피의 인터럽트 제어 장치
KR20000039582A (ko) 1998-12-15 2000-07-05 유태로 브이엠이의 인터럽트 처리장치
DE60201511T2 (de) 2001-02-06 2005-10-20 Adelante Technologies B.V. Verfahren, system und computerprogrammprodukt zum manipulieren eines anweisungsflusses in einer pipeline eines prozessors
KR100812346B1 (ko) * 2006-02-06 2008-03-11 삼성전자주식회사 재구성 어레이에서의 인터럽트 처리 방법 및 장치
KR100813662B1 (ko) * 2006-11-17 2008-03-14 삼성전자주식회사 프로세서 구조 및 응용의 최적화를 위한 프로파일러

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010039610A1 (en) 2000-03-10 2001-11-08 Busa Natalino Giorgio Data processing device, method of operating a data processing device and method for compiling a program
US20050021578A1 (en) 2003-07-24 2005-01-27 Industrial Technology Research Institute Reconfigurable apparatus with a high usage rate in hardware
KR100681199B1 (ko) 2006-01-11 2007-02-09 삼성전자주식회사 코어스 그레인 어레이에서의 인터럽트 처리 방법 및 장치

Also Published As

Publication number Publication date
US20100199076A1 (en) 2010-08-05
KR20100089351A (ko) 2010-08-12
US8495345B2 (en) 2013-07-23

Similar Documents

Publication Publication Date Title
KR101571882B1 (ko) 재구성 가능 어레이의 인터럽트 핸들링을 위한 컴퓨팅 장치및 방법
US7836291B2 (en) Method, medium, and apparatus with interrupt handling in a reconfigurable array
KR101622266B1 (ko) 재구성 가능 프로세서 및 이를 이용한 인터럽트 핸들링 방법
US7600101B2 (en) Multithreaded hardware systems and methods
KR101978409B1 (ko) 재구성가능 프로세서, 이를 위한 코드 변환 장치 및 방법
JP5131188B2 (ja) データ処理装置
US20070162729A1 (en) Method and apparatus for interrupt handling in coarse grained array
WO2002033570A2 (en) Digital signal processing apparatus
KR100663709B1 (ko) 재구성 아키텍처에서의 예외 처리 방법 및 장치
EP1387259B1 (en) Inter-processor control
US20220035635A1 (en) Processor with multiple execution pipelines
US20140089646A1 (en) Processor with interruptable instruction execution
JP2007528549A (ja) 電子回路
JPWO2006022202A1 (ja) 情報処理装置、例外制御回路
EP1039376B1 (en) Sub-instruction emulation in a VLIW processor
US10073810B2 (en) Parallel processing device and parallel processing method
US20130318324A1 (en) Minicore-based reconfigurable processor and method of flexibly processing multiple data using the same
US11138050B2 (en) Operation of a multi-slice processor implementing a hardware level transfer of an execution thread
US7519794B2 (en) High performance architecture for a writeback stage
US7107478B2 (en) Data processing system having a Cartesian Controller
JP2007200106A (ja) データ処理装置、制御方法、及びプログラム
JP3767529B2 (ja) マイクロプロセッサ
KR20070118543A (ko) 재구성 어레이를 위한 멀티태스킹 방법 및 장치
KR20080069423A (ko) 적응형 파이프라인을 적용한 병렬 처리 프로세서 구조
US20120079248A1 (en) Aliased Parameter Passing Between Microcode Callers and Microcode Subroutines

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: 20181031

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20191031

Year of fee payment: 5