KR100812346B1 - 재구성 어레이에서의 인터럽트 처리 방법 및 장치 - Google Patents

재구성 어레이에서의 인터럽트 처리 방법 및 장치 Download PDF

Info

Publication number
KR100812346B1
KR100812346B1 KR1020060011200A KR20060011200A KR100812346B1 KR 100812346 B1 KR100812346 B1 KR 100812346B1 KR 1020060011200 A KR1020060011200 A KR 1020060011200A KR 20060011200 A KR20060011200 A KR 20060011200A KR 100812346 B1 KR100812346 B1 KR 100812346B1
Authority
KR
South Korea
Prior art keywords
array
interrupt
reconstruction
interrupt request
time
Prior art date
Application number
KR1020060011200A
Other languages
English (en)
Other versions
KR20070080089A (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 KR1020060011200A priority Critical patent/KR100812346B1/ko
Priority to US11/581,366 priority patent/US7836291B2/en
Publication of KR20070080089A publication Critical patent/KR20070080089A/ko
Application granted granted Critical
Publication of KR100812346B1 publication Critical patent/KR100812346B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • DTEXTILES; PAPER
    • D06TREATMENT OF TEXTILES OR THE LIKE; LAUNDERING; FLEXIBLE MATERIALS NOT OTHERWISE PROVIDED FOR
    • D06BTREATING TEXTILE MATERIALS USING LIQUIDS, GASES OR VAPOURS
    • D06B23/00Component parts, details, or accessories of apparatus or machines, specially adapted for the treating of textile materials, not restricted to a particular kind of apparatus, provided for in groups D06B1/00 - D06B21/00
    • D06B23/02Rollers
    • D06B23/028Rollers for thermal treatment
    • DTEXTILES; PAPER
    • D06TREATMENT OF TEXTILES OR THE LIKE; LAUNDERING; FLEXIBLE MATERIALS NOT OTHERWISE PROVIDED FOR
    • D06CFINISHING, DRESSING, TENTERING OR STRETCHING TEXTILE FABRICS
    • D06C13/00Shearing, clipping or cropping surfaces of textile fabrics; Pile cutting; Trimming seamed edges
    • 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)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Textile Engineering (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Thermal Sciences (AREA)
  • Logic Circuits (AREA)

Abstract

재구성 어레이의 동작 중 인터럽트 요청이 발생하면, 상기 재구성 어레이의 동작을 정지(pause)하는 단계, 상기 인터럽트 요청의 처리에 사용될 레지스터의 값을 저장하는 단계, 상기 인터럽트 요청에 대한 인터럽트 서비스를 수행하는 단계 및 상기 레지스터의 값을 복구하고, 상기 재구성 어레이의 동작을 재개(resume)하는 단계를 포함하는 재구성 어레이에서의 인터럽트 처리 방법이 제공된다.
코어스 그레인 어레이(coarse grained array), 재구성 아키텍처{reconfigurable architecture}, 인터럽트{interrupt}

Description

재구성 어레이에서의 인터럽트 처리 방법 및 장치{Method and Apparatus for Interrupt Handling in Reconfigurable Array}
도 1은 재구성 아키텍처(reconfigurable architecture)를 설명하기 위한 도면이다.
도 2는 코어스 그레인 어레이(coarse grained array)의 일례를 도시한 도면이다.
도 3은 재구성 아키텍처에서의 인터럽트 처리(interrupt handling)의 어려움을 설명하기 위한 도면이다.
도 4는 본 발명에 따라 코어스 그레인 어레이를 포함하는 컴퓨팅 장치의 일례를 도시한 도면이다.
도 5는 본 발명의 제1 실시예에 따른 재구성 어레이에서의 인터럽트 처리를 설명하기 위한 도면이다.
도 6은 본 발명의 제2 실시예에 따라 재구성 어레이에서 인터럽트를 처리하는 순서를 도시한 흐름도이다.
도 7은 본 발명의 제2 실시예에 따른 재구성 어레이에서의 인터럽트 처리를 설명하기 위한 도면이다.
도 8은 본 발명의 제3 실시예에 따라 재구성 어레이에서 인터럽트를 처리하 는 순서를 도시한 흐름도이다.
도 9는 본 발명에 따른 프로그램 가능 인터럽트 콘트롤러(PIC)의 일례를 도시한 도면이다.
도 10은 본 발명의 제3 실시예에 따른 재구성 어레이에서의 인터럽트 처리를 설명하기 위한 도면이다.
도 11은 본 발명의 제4 실시예에 따라 재구성 어레이에서 인터럽트를 처리하는 순서를 도시한 흐름도이다.
<도면의 주요 부분에 대한 부호의 설명>
401: 코어스 그레인 어레이(CGA: coarse grained array)
402: 중앙 레지스터 파일(central register file)
403: 데이터 캐시(data cache)
404: 인스트럭션패처/디스패처/디코더(instruction fetcher/ dispatcher/ decoder)
본 발명은 재구성 아키텍처(reconfigurable architecture)에 관한 것으로, 더욱 상세하게는 재구성 어레이(reconfigurable array)에서 작업(task)을 수행하는 중 인터럽트가 발생한 경우 상기 인터럽트를 효율적으로 처리하는 방법 및 컴퓨팅 장치에 관한 것이다.
전통적으로, 어떤 작업을 수행하는 장치는 하드웨어 또는 소프트웨어에 의하여 구현되었다. 예를 들어, 네트워크 인터페이스를 수행하는 네트워크 콘트롤러를 컴퓨터 칩 상에 구현한 경우, 상기 네트워크 콘트롤러는 공장에서 생산될 때 정의된 네트워크 인터페이스 기능만을 수행하였다. 일단, 공장에서 네트워크 콘트롤러가 생산된 후, 상기 네트워크 콘트롤러의 기능(function)을 바꾸는 것은 불가능하였다. 이것이 하드웨어의 예이다. 또 다른 방법으로는 소프트웨어를 이용하는 방법이 있다. 예를 들어 자신이 원하는 기능을 수행하는 프로그램을 짜고, 상기 프로그램을 범용 프로세서(general purpose processor)에서 수행시킴으로써, 사용자의 목적이 만족되었다. 소프트웨어에 의한 방법은 하드웨어가 공장에서 생산된 후에도, 소프트웨어만 변경함으로써 새로운 기능을 수행하는 것이 가능하다. 소프트웨어를 이용하는 경우에는 주어진 하드웨어를 이용하여 다양한 기능을 수행할 수 있지만, 하드웨어 구현 방법에 의한 것보다 속도가 떨어지는 단점이 있다.
위와 같은 하드웨어 및 소프트웨어에 의한 방법의 문제점을 극복하기 위하여 제안된 아키텍처가 재구성 아키텍처(reconfigurable architecture)이다. 재구성 아키텍처는 장치의 조립 후에도 어떤 문제의 해결을 위하여 커스토마이징 될 수 있고, 또한 계산의 수행을 위해 공간적으로 커스토마이징된 계산을 이용할 수 있다는 특징이 있다.
도 1에 재구성 아키텍처(reconfigurable architecture)의 일례가 도시되어 있다. 도 1에서, 도면 부호 101, 102, 103, 104, 105는 산술 논리 장치(ALU: arithmetic and logic unit)이다. 이와 같은 복수 개의 산술 논리 장치(ALU)를 연 결하는 라인들(106)로 구성된 장치로 FPGA(field programmable gate array)가 있다. 도 1은 "A*x*x + B*X + C"를 계산할 수 있도록 커스토마이징된 FPGA이다. 계산 중에 "A*x*x + B*X + C"라는 연산이 매우 자주 발생하면, 상기 연산을 위하여 FPGA를 도 1과 같이 구성해 두면, 상기 연산은 소프트웨어에 의한 방법보다 훨씬 빨리 수행될 수 있다. 또한, ALU들을 연결하는 라인들은 일정한 전류를 인가함으로써, 그 구성이 변경될 수 있고, 따라서 이를 이용하여 다른 연산을 계산하는 구성을 가지도록 할 수 있다. 이와 같이, 팹 후(after fabrication)에 하드웨어적 구성을 변경하여 새로운 연산을 수행할 수 있도록 하는 아키텍처를 재구성 아키텍처라고 한다.
도 1에서 ALU에 입력되는 데이터는 1비트이다. 이러한 재구성 아키텍처는 파인 그레인 어레이(fine grained array)라고 불린다. 하나의 프로세싱 엘리먼트(array element)에 입력되는 데이터의 크기가 워드(word) 단위인 재구성 아키텍처를 우리는 코어스 그레인 어레이(CGA: coarse grained array)라고 부른다. 또한 재구성 아키텍처 중 어레이 구조인 것을 재구성 어레이라고 부른다. 재구성 어레이는 파인 그레인 어레이, 코어스 그레인 어레이, 미디엄 그레인 어레이(medium grained array)를 포함한다.
도 2에 코어스 그레인 어레이(coarse grained array)의 일례가 도시되어 있다.
코어스 그레인 어레이(210)는 복수 개의 프로세싱 엘리먼트(211)를 포함한다. 하나의 프로세싱 엘리먼트(211)는 계산 유닛(function unit)(212)만을 포함할 수도 있고, 또는 계산 유닛(212) 및 레지스터 파일(register file)(213)을 포함할 수도 있다. 계산 유닛(212)은 계산(computation)을 수행하는 유닛이고, 레지스터 파일(213)은 레지스터들의 집합으로 계산 유닛(212)에서 사용되는 데이터를 임시로(temporarily) 저장한다. 구성 메모리(configuration memory)(220)는 코어스 그레인 어레이(210)의 구성에 관한 정보를 저장한다. 구성 메모리(220)에 저장된 구성(configuration)에 따라, 코어스 그레인 어레이(210)은 자신에 포함된 프로세싱 엘리먼트들 사이의 연결 상태를 변경한다. 데이터 메모리(230)는 코어스 그레인 어레이(210)의 외부에 위치하여 데이터를 저장한다.
코어스 그레인 어레이를 포함한 재구성 어레이는 컴퓨팅 장치에서 CPU 내에 포함될 수도 있고, 또는 코프로세서(coprocessor)의 형태로 컴퓨팅 장치에 사용될 수도 있다. 또한 부가된 프로세싱 유닛(attached processing unit)이나 외부 장치(stand-alone processing unit)의 형태로 사용될 수도 있다.
그런데, 코어스 그레인 어레이를 포함한 재구성 어레이에서 루프 연산을 수행하던 중, 인터럽트가 발생하는 경우 이를 어떻게 처리할 것인지가 문제된다. 인터럽트는 하드웨어 인터럽트(hardware interrupt)(예, 외부 I/O 장치, 타이머 등), 예외(exception)(예, 허용되지 않는 명령어(undefined instruction)), 소프트웨어 인터럽트(예, 시스템 콜)를 포함한다. 통상의 컴퓨터 아키텍처에서는 인터럽트가 발생하면, 레지스터들에 현재 저장된 값을 포함한 현재의 문맥(context)을 메모리에 저장시킨 후, 상기 인터럽트에 따른 처리를 수행한 후, 다시 상기 메모리에 저장되었던 문맥 값들을 복구(restore)하여, 원래 수행하였던 작업을 재개한다. 즉, 인터럽트가 발생하면 문맥 교환(context switch)을 수행하여야 하는 경우가 있다. 문맥(context)은 시스템의 현재 상태, 조건 등을 나타내는 정보로, 레지스터들에 저장된 값들을 포함할 수 있다.
그런데, 도 2에 도시된 바와 같이, 코어스 그레인 어레이는 매우 많은 수의 레지스터 파일들을 포함하기 때문에, 이러한 레지스터 파일들에 저장된 값들을 메모리에 저장하는 것은 매우 큰 오버헤드가 된다. 즉, 매우 많은 수의 레지스터 파일에 저장된 값들을 메모리로 저장하여야 하므로, 시간이 오래 걸린다. 또한 상기 레지스터 파일들 모두에 대해 데이터 메모리와의 연결선을 구비하여야 하므로, 전체적인 설계도 매우 복잡해지게 된다. 이와 같이, 문맥 교환을 필요로 하는 인터럽트를 처리하기 위해서는 CGA에 상당한 오버헤드가 발생하기 때문에, 종래에는 이에 대하여 아무런 해결책이 제시되지 아니하였다. 특히, 인터럽트 요청에 의하여 처리될 프로세스가 실시간 제한(real-time constraint)이 있는 경우 더욱 문제가 된다.
따라서, CGA를 포함한 프로세서에서 인터럽트가 발생한 경우, 이를 효율적으로 처리하는 방법이 요구되고 있다.
따라서, 본 발명은 상술한 본 발명의 문제점을 해결하기 위한 것으로서, 재구성 어레이를 포함한 컴퓨팅 장치에서 인터럽트가 발생한 경우, 이를 효율적으로 처리하는 방법 및 장치를 제공하는 것을 목적으로 한다.
또한, 본 발명은 재구성 어레이에서 작업을 수행하는 중 인터럽트 요청이 발 생한 경우에도, 오버헤드를 최소로 하면서, 상기 인터럽트에 대한 처리가 실시간 제한(real-time constraint)을 만족하면서 수행될 수 있도록 하는 것을 목적으로 한다.
또한, 본 발명은 재구성 어레이에서 작업을 수행하는 중 발생한 인터럽트 요청을 처리함에 있어서, 스타베이션(starvation)이 발생하지 않도록 하는 것을 목적으로 한다.
또한 본 발명은 재구성 어레이에서 작업을 수행하는 중 인터럽트 요청이 발생한 경우, 문맥의 저장을 최소로 하면서 실시간 제한을 만족하는 방법 및 장치를 제공하는 것을 목적으로 한다.
상기와 같은 본 발명의 목적을 달성하기 위한 본 발명에 따른 재구성 어레이에서의 인터럽트 처리 방법은, 재구성 어레이의 동작 중 인터럽트 요청이 발생하면, 상기 재구성 어레이의 동작을 정지(pause)하는 단계, 상기 인터럽트 요청의 처리에 사용될 레지스터의 값을 저장하는 단계, 상기 인터럽트 요청에 대한 인터럽트 서비스를 수행하는 단계 및 상기 레지스터의 값을 복구하고, 상기 재구성 어레이의 동작을 재개(resume)하는 단계를 포함한다. 여기서, 재구성 어레이의 동작 정지는 재구성 어레이로의 클록 입력을 중단함으로써 수행되고, 재구성 어레이의 동작 재개는, 재구성 어레이로의 클록 입력을 재개함으로써 수행된다.
본 발명의 일측에 따르는 재구성 어레이에서의 인터럽트 처리 방법은, 재구성 어레이의 동작 중 인터럽트 요청이 발생하면, 상기 재구성 어레이의 동작을 정 지(pause)하는 단계, 인터럽트 서비스를 위한 전용 레지스터(dedicated register)를 사용하여 상기 인터럽트 요청에 대한 인터럽트 서비스를 수행하는 단계 및 상기 인터럽트 서비스를 종료한 후 상기 재구성 어레이의 동작을 재개(resume)하는 단계를 포함한다.
본 발명의 일측에 따르는 재구성 어레이에서의 인터럽트 처리 방법은, 재구성 어레이에서 수행될 작업에 대한 수행 종료 임계 시각(programmed threshold time)을 계산하는 단계, 상기 재구성 어레이에서 상기 작업의 수행 중 인터럽트 요청이 발생하면, 현재 사이클 시각(current cycle time)과 상기 수행 종료 임계 시각을 비교하는 단계 및 상기 현재 사이클 시각이 상기 수행 종료 임계 시각보다 크면, 프로그램 가능 인터럽트 콘트롤러(PIC: programmable interrupt controller)에서 상기 인터럽트 요청을 무시하는 단계를 포함한다. 또한, 본 발명의 일측에 따르면, 상기 현재 사이클 시각이 상기 수행 종료 임계 시각보다 작으면, (1) 상기 재구성 어레이의 동작을 정지(pause)하는 단계, (2) 상기 인터럽트 요청의 처리에 사용될 레지스터의 값을 저장하고, 상기 인터럽트 요청에 대한 인터럽트 서비스를 수행하는 단계 및 (3) 상기 레지스터의 값을 복구하고, 상기 재구성 어레이의 동작을 재개(resume)하는 단계를 수행한다. 상기 수행 종료 임계 시각은, 시작 사이클 시각(starting cycle time) + 최악 수행 시간(WCET: Worst Case Execution Time) -최대 인터럽트 지연(maximum interrupt latency)이다. 여기서, 상기 시작 사이클 시각은 상기 작업을 상기 재구성 어레이에서 시작하는 시각이고, 상기 최악 수행 시간은 상기 작업을 상기 재구성 어레이에서 수행할 때 최악의 경우에도 상기 작업 이 종료될 것으로 예상되는 시간이고, 상기 최대 인터럽트 지연은 인터럽트 요청의 발생 후 상기 인터럽트 요청에 대한 인터럽트 서비스의 시작을 연기할 수 있는 최대 시간이다.
본 발명의 일측에 따르는 재구성 어레이에서의 인터럽트 처리 방법은, 재구성 어레이에서 작업의 수행 중 인터럽트 요청이 발생하면, 최악 수행 시간과 최대 인터럽트 지연을 비교하는 단계, 및 상기 최악 수행 시간이 상기 최대 인터럽트 지연보다 크면, 상기 작업의 종료를 기다린 후 상기 인터럽트 요청에 대한 인터럽트 서비스를 수행하는 단계를 포함한다.
본 발명의 일측에 따르면, 상기 인터럽트 처리 방법은, 현재 사이클 시각(current cycle time)과 수행 종료 임계 시각을 비교하는 단계, 및 상기 현재 사이클 시각이 상기 수행 종료 임계 시각보다 크면, 프로그램 가능 인터럽트 콘트롤러(PIC: programmable interrupt controller)에서 상기 인터럽트 요청을 무시하는 단계를 포함할 수 있다.
본 발명의 일측에 따르는 재구성 어레이에서의 인터럽트 처리 방법은, 인스트럭션 셋 프로세서 모드에서 재구성 어레이 모드(reconfigurable array mode)로 전환하기 전에 인스트럭션 셋 프로세서 모드의 문맥(context)을 저장하는 단계, 상기 재구성 어레이 모드에서 재구성 어레이 작업(reconfigurable array task)을 수행하던 중 인터럽트 요청이 발생하면, 상기 인터럽트 요청에 대한 인터럽트 서비스를 수행하는 단계, 및 상기 인터럽트 서비스를 마친 후, 상기 인스트럭션 셋 프로세서의 상기 문맥을 복구(restore)하고 상기 재구성 어레이 작업을 처음부터 다시 수행하는 단계를 포함한다.
본 발명의 일측에 따르는 컴퓨팅 장치는, 복수 개의 프로세싱 유닛들(processing units)을 포함한 재구성 어레이(reconfigurable array), 및 상기 인터럽트 요청의 처리에 사용될 레지스터의 값을 저장하고, 상기 인터럽트 요청에 대한 인터럽트 서비스를 수행한 후, 상기 레지스터의 값을 복구하는 인터럽트 핸들러를 포함하고, 상기 재구성 어레이의 동작 중 인터럽트 요청이 발생하면, 상기 재구성 어레이의 동작을 정지(pause)하고, 상기 인터럽트 요청에 대한 인터럽트 서비스가 끝나면 상기 재구성 어레이의 동작을 재개(resume)한다.
본 발명의 일측에 따르는 컴퓨팅 장치는, 복수 개의 프로세싱 유닛들(processing units)을 포함한 재구성 어레이(reconfigurable array), 및 인스트럭션 셋 프로세서 모드에서 사용하는 레지스터들 중 미리 선정된 레지스터들 각각에 대응하는 새도우 레지스터들을 포함하고, 상기 재구성 어레이의 동작 중 인터럽트가 발생하면, 상기 재구성 어레이의 동작을 정지(pause)하고, 상기 새도우 레지스터들을 이용하여 상기 인터럽트에 대한 인터럽트 서비스를 수행하고, 상기 재구성 어레이의 동작을 재개(resume)한다.
이하 첨부 도면들 및 첨부 도면들에 기재된 내용들을 참조하여 본 발명의 바람직한 실시예를 상세하게 설명하지만, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
재구성 어레이에서 인터럽트가 발생한 경우, 우선 생각해 볼 수 있는 방안은 재구성 어레이에서 인터럽트가 발생한 경우, 현재 수행하고 있는 재구성 어레이의 작업이 끝날 때까지 상기 인터럽트에 대한 처리를 블로킹(blocking)하는 것이다. 이 방법에 따르면, 재구성 어레이가 지금까지 수행했던 연산 작업의 결과를 무효화시키지 않으므로, 컴퓨팅 파워를 효율적으로 사용하지만, 인터럽트 요청에 의하여 처리될 프로세스의 실시간 제한을 만족시키지 못하는 문제점이 있다. 특히, 인터럽트 요청에 의하여 새롭게 수행되어야 할 태스크가 동영상 재생과 같은 실시간 응용이라면, 본 방법은 사용자들에게 큰 불편을 주게 될 것이다.
도 3을 참조하면, 도면 부호(311, 314, 317)는 인터럽트 요청이 발생한 지점을 표시하고, 도면 부호(312, 315, 318)은 인터럽트 요청에 대한 서비스를 시작하는 지점을 표시한다. 도면 부호(313, 316, 319)는 인터럽트 요청으로부터 인터럽트 요청에 대한 서비스의 시작까지의 시간을 나타낸다. 인스트럭션 셋 프로세서 모드에서 인터럽트 요청이 발생하면(311), 바로 상기 인터럽트 요청을 처리하지만, 재구성 어레이 모드에서 인터럽트 요청이 발생하면(314, 317), 재구성 어레이에서 현재 수행 중인 작업이 종료될 때가지 인터럽트는 블록킹(blocking)된다. 인터럽트 요청(317)의 경우, 재구성 어레이의 작업이 끝나는 데 오랜 시간이 필요하기 때문에, 인터럽트 요청(317)의 실시간 제한을 만족하지 못하게 된다.
도 4는 본 발명에 따라 코어스 그레인 어레이를 포함하는 컴퓨팅 장치의 일례를 도시한 도면이다.
도 4에서 코어스 그레인 어레이(CGA)(401)는 복수 개의 프로세싱 엘리먼트(processing element)를 포함한다. 하나의 프로세싱 엘리먼트는 계산 유닛 (function unit)만을 포함할 수도 있고, 또는 계산 유닛 및 레지스터 파일(register file)을 포함할 수도 있다. 도 4에서 인스트럭션 셋 프로세서 모드(405) 및 재구성 어레이 모드(406) 모두에서 공유되는 프로세싱 유닛들은 계산 유닛(function unit)만을 포함하고 있다. 그리고, 재구성 어레이 모드(406)에서만 사용되는 프로세싱 유닛들은 계산 유닛 및 레지스터 파일(register file)을 포함한다. 계산 유닛은 계산(computation)을 수행하는 유닛이고, 레지스터 파일은 레지스터들의 집합으로 계산 유닛에서 사용되는 데이터를 임시로(temporarily) 저장한다.
중앙 레지스터 파일(central register file)(402)은 코어스 그레인 어레이(401)의 외부에 위치하고, 코어스 그레인 어레이(401)에서 계산된 결과 값 및 호스트 프로세서의 중간 결과 값들을 저장하기 위해 사용된다. 데이터 캐시(403)는 코어스 그레인 어레이(401)의 외부에 위치하여 데이터를 저장하고, 인스트럭션 패처/디스패처/디코더(404)는 코어스 그레인 어레이(401)의 외부에 위치하여 인스트럭션을 패치/디스패치/디코드한다.
코어스 그레인 어레이를 이용하는 프로세서의 경우, 프로세싱 유닛으로 코어스 그레인 어레이 및 다른 호스트 프로세서를 포함할 수 있다(도시되지 않음). 이 경우, 통상의 인스트럭션들은 호스트 프로세서에서 수행하고, 루프와 같이 반복 수행이 필요한 인스트럭션들은 코어스 그레인 어레이에서 수행할 수 있다. 이와 같이 코어스 그레인 어레이와 호스트 프로세서가 분리된 구성을 약결합(loosely-coupled)이라고 부를 수 있을 것이다.
한편, 도 4에 도시된 컴퓨팅 장치는 코어스 그레인 어레이(401)의 프로세싱 엘리먼트들 중 일부의 프로세싱 엘리먼트를 호스트 프로세서로 사용한다. 도 4에서 인스트럭션 셋 프로세서 모드(405)에서 사용하는 8개의 프로세싱 엘리먼트가 호스트 프로세서로 사용된다. 따라서, 통상의 인스트럭션들은 코어스 그레인 어레이(401) 중 선택된 일부의 프로세싱 엘리먼트에서 수행되고, 루프와 같이 반복 수행이 필요한 인스트럭션들은 상기 프로세싱 엘리먼트를 포함한 전체 코어스 그레인 어레이(401)에서 수행된다. 이와 같이 코어스 그레인 어레이의 프로세싱 엘리먼트들 중 일부의 프로세싱 엘리먼트를 호스트 프로세서로 이용하는 구성을 강결합(tightly-coupled)이라고 부를 수 있다. 강결합 구성에서는 재구성 어레이 모드(reconfigurable array mode) 및 인스트럭션 셋 프로세서 모드(instruction set processor mode)의 2개 모두가 있다. 어레이 모드에서는 코어스 그레인 어레이(401)의 계산 유닛들을 수행시킨다. 따라서, 어레이 모드에서 상기 프로세싱 엘리먼트들은 CGA의 일부로 동작한다. 인스트럭션 셋 프로세서 모드에서는 상기 코어스 그레인 어레이(401)의 계산 유닛들 중 미리 선정된 계산 유닛들을 수행시킨다. 예를 들어, 인스트럭션 셋 프로세서 모드에서는 상기 코어스 그레인 어레이(401)에서 상기 프로세싱 엘리먼트들만 동작하고, 나머지 프로세싱 엘리먼트들은 동작하지 않는다.
이러한 강결합 구성을 이용하면, 코어스 그레인 어레이에서 사용하는 프로세싱 엘리먼트들 중 일부를 호스트 프로세서로 이용하기 때문에, 별도로 호스트 프로세서를 채용할 필요가 없으므로, 프로세서의 크기가 줄어들 뿐 아니라 프로세서 제 작 비용도 줄어들게 된다.
또한, 코어스 그레인 어레이(401) 중 일부의 프로세싱 엘리먼트를 호스트 프로세서로 사용할 때 VLIW(very long instruction word) 아키텍처를 이용할 수도 있다. 이 경우, 인스트럭션 패처/디스패처/디코더(instruction fetcher/ dispatcher/ decoder)(404), 중앙 레지스터 파일(402), 데이터 캐시(403) 및 일부의 프로세싱 엘리먼트들이 VLIW 아키텍처를 구성한다.
본 발명에서는 CGA를 이용한 강결합 구성을 중심으로 설명하지만, 본 발명은 CGA를 이용한 약결합 구성은 물론, 다른 형태의 재구성 아키텍처(reconfigurable architecture)에도 적용 가능하다.
도 5는 본 발명의 제1 실시예에 따른 재구성 어레이에서의 인터럽트 처리를 설명하기 위한 도면이다.
제1 실시예에 따른 컴퓨팅 장치는 인스트럭션 셋 프로세서 모드에서 재구성 어레이 모드(reconfigurable array mode)로 전환하기 전에 인스트럭션 셋 프로세서 모드의 문맥(context)을 저장한다. 도 4에 도시된 바와 같이 재구성 어레이 모드는 매우 많은 수의 레지스터 파일들을 포함하기 때문에, 그 문맥의 크기가 매우 크지만, 인스트럭션 셋 프로세서 모드는 단지 작은 수의 레지스터 파일을 포함하므로, 문맥의 크기가 매우 작다. 따라서, 인스트럭션 셋 프로세서 모드의 문맥 저장은 오버헤드가 매우 작게 된다. 인스트럭션 셋 프로세서 모드(501)를 수행하다가 재구성 어레이 모드(504)로 전환하기 위해, 컴퓨팅 장치는 우선 인스트럭션 셋 프로세서 모드의 문맥을 저장한다(502). 도면 부호(503)은 모드 전환에 필요한 몇 가지 작업을 수행하는데 필요한 시간을 나타낸다.
상기 재구성 어레이 모드에서 재구성 어레이 작업(reconfigurable array task)을 수행(504)하던 중 인터럽트 요청이 발생(505)하면, 컴퓨팅 장치는 상기 인터럽트 요청을 블로킹하거나, 상기 재구성 어레이 작업이 끝나기를 기다리지 않고, 상기 인터럽트 요청에 대한 인터럽트 서비스를 시작(507)한다. 도면 부호(506)는 파이프라인 플러싱(pipeline flushing) 등과 같이 인터럽트 서비스의 시작에 필요한 몇 가지 작업을 수행하는데 소요되는 시간을 나타낸다. 이 시간은 전체 계산 시간 중 매우 작은 시간이며, 통상의 컴퓨팅 장치도 이러한 시간을 필요로 한다.
상기 인터럽트 서비스(508)를 마친 후, 컴퓨팅 장치는 상기 인스트럭션 셋 프로세서의 상기 문맥을 복구(restore)하고(509), 상기 재구성 어레이 작업을 처음부터 다시 수행한다(511). CGA를 이용한 강결합 구성에서 인터럽트 서비스는 인스트럭션 셋 프로세서 모드에서 수행되기 때문에, 인터럽트 서비스를 마치고 인스트럭션 셋 프로세서의 문맥을 복구(509)한 후, 인스트럭션 셋 프로세서 모드가 된다. 따라서, 재구성 어레이 모드로 전환하기 위해서 컴퓨팅 장치는 인스트럭션 셋 프로세서 모드의 문맥(context)을 저장한다.
인스트럭션 셋 프로세서 모드에서 재구성 어레이 모드로 전환할 때, 인스트럭션 셋 프로세서 모드의 문맥을 저장해 둠으로써, 재구성 어레이 모드 중 인터럽트 요청이 발생하여 인터럽트 서비스를 제공하더라도, 다시 상기 문맥을 복구함으로써, 재구성 어레이 모드를 처음부터 수행시킬 수 있는 것이다.
따라서, 본 실시예에 따르면, 인터럽트 요청이 발생되면 바로 상기 인터럽트 요청에 대한 서비스를 제공하기 때문에, 인터럽트 요청의 실시간 제한을 만족시킬 수 있다. 그러나, 본 실시예에서는 인스트럭션 셋 프로세서 모드에서 재구성 어레이 모드로 전환할 때마다 문맥을 저장하는 오버헤드가 있다. 그리고, 재구성 어레이 모드에서 수행해야 하는 작업의 수행 시간보다 더 짧은 간격으로 인터럽트가 계속 발생하면 스타베이션(starvation)이 발생할 가능성이 있다.
도 5를 참조하여 스타베이션의 가능성을 설명한다. 인스트럭션 셋 프로세서 모드를 수행(512)한 후, 인스트럭션 셋 프로세서 모드의 문맥을 저장(513)하고, 재구성 어레이 모드로 전환하여, 재구성 어레이 모드에서 작업 2를 수행(514)한다. 이때 인터럽트가 발생(515)하고, 인터럽트를 처리한 후, 다시 작업 2를 처음부터 다시 수행하다가(516), 또 인터럽트가 발생(517)하면, 작업 2는 다시 처음부터 수행(518)되어야 한다. 특히, 재구성 어레이 모드에서 수행되는 작업은 오랜 시간 수행되어야 하는 경우들이 있는데, 이때에는 작업이 종료되기 전에 인터럽트가 여러 개 발생할 수 있고, 그러면 작업 2를 종료할 수 없는 문제가 발생할 수도 있다.
도 6은 본 발명의 제2 실시예에 따라 재구성 어레이에서 인터럽트를 처리하는 순서를 도시한 흐름도이다.
재구성 어레이의 동작 중 인터럽트 요청이 발생하면(단계 601), 컴퓨팅 장치는 상기 재구성 어레이의 동작을 정지(pause)한다(단계 602). 상기 재구성 어레이로의 클록 입력을 중단함으로써, 상기 재구성 어레이의 동작을 정지(pause)할 수 있다. 강결합 구조에서 CGA의 일부 프로세싱 유닛들이 인터럽트의 처리에 사용되므로, 이러한 프로세싱 유닛들에 대해서는 클록이 계속 공급되어야 하고, 나머지 프로세싱 유닛들에 대한 클록 공급을 중단한다.
단계(603)에서, 인터럽트 핸들러(interrupt handler)는 상기 인터럽트 요청의 처리에 사용될 레지스터의 값을 저장한다. 레지스터에 저장된 값의 저장/복구를 위해서 스택이 사용될 수 있다. 스택을 사용하는 경우, 인터럽트 핸들러는 상기 인터럽트 요청의 처리에 사용될 레지스터의 값을 소정의 스택에 푸시(push)한다. 즉, 전체 레지스터들 중에서 인터럽트 핸들러에서 사용하는 레지스터들에 저장된 값들을 스택에 푸시한다.
단계(604)에서, 인터럽트 핸들러는 상기 인터럽트 요청에 대한 인터럽트 서비스를 수행한다.
인터럽트 서비스가 끝나면, 인터럽트 핸들러는 상기 레지스터의 값을 복구한다(단계 605). 스택을 사용하는 경우, 인터럽트 핸들러는 상기 레지스터의 값을 스택으로부터 팝(pop)한다. 본 실시예에서와 같이 인터럽트 핸들러가 레지스터의 값을 저장하고 복구하는 것을 피호출자 저장(callee save)이라고 한다.
단계(606)에서 컴퓨팅 장치는 상기 재구성 어레이의 동작을 재개(resume)한다. 상기 재구성 어레이로의 클록 입력을 재개함으로써, 상기 재구성 어레이의 동작을 재개한다. 즉, 재구성 어레이에서 수행되었던 작업은 이전에 중단된 지점부터 다시 재개된다.
인터럽트 발생 시 재구성 어레이를 동결화(freeze)하고, 인터럽트를 수행하고, 인터럽트 서비스의 종료 후 재구성 어레이를 재개함으로써, 인터럽트 발생시 실시간으로 상기 인터럽트를 처리할 수 있음과 동시에, 인터럽트 처리로 인하여 그 동안 수행했던 재구성 어레이 작업이 무효화되지도 않는다.
도 7은 본 발명의 제2 실시예에 따른 재구성 어레이에서의 인터럽트 처리를 설명하기 위한 도면이다.
컴퓨팅 장치가 인스트럭션 셋 프로세서 모드에서 작업을 수행하고(701), 어레이 연산의 수행을 위하여 재구성 어레이 모드로 전환한다(702). 어레이 연산을 수행하던 중 컴퓨팅 장치가 인터럽트 요청을 수신(703)하면, 컴퓨팅 장치는 상기 재구성 어레이의 동작을 정지(pause)한다. 인터럽트 핸들러는 상기 인터럽트 요청에 대한 인터럽트 서비스를 수행(706)하는데, 그 전에 상기 인터럽트 요청의 처리에 사용될 레지스터의 값을 저장(704)하고, 인터럽트 서비스가 끝나면 상기 레지스터 값을 복구한다(707). 본 실시예에서는 재구성 어레이에서 작업을 수행하던 중 인터럽트 요청이 발생하여도 바로 인터럽트 서비스를 수행하기 때문에, 인터럽트 요청의 실시간 제한을 만족시킬 수 있다. 물론, 레지스터 값의 저장에 일정한 시간(705)이 소요되지만, 인터럽트 서비스에 사용되는 레지스터의 값만 저장하는 것이므로, 이는 무시할 수 있을 정도의 시간이 된다.
인터럽트 서비스가 끝나면, 컴퓨팅 장치는 중단되었던 어레이 작업을 재개한다(708). 어레이 작업이 끝나면, 다시 인스트럭션 셋 프로세서 모드로 전환하여 인스트럭션 셋 프로세서 모드를 수행한다.
본 발명의 제2 실시예의 변형례로 피호출자 저장(callee save) 대신에 인터럽트 서비스를 위한 레지스터를 별도로 구성하는 실시예가 있다. 즉, 본 실시예에서는 인터럽트 서비스를 위한 레지스터 세트(register set) 및 인스트럭션 셋 프로 세서 모드의 수행을 위한 레지스터 세트(register set)의 2개의 레지스터 세트를 구성한다. 앞의 방법이 소프트웨어적 방법이라면, 뒤의 방법은 하드웨어적 방법이라고 할 수 있다.
본 실시예에서 컴퓨팅 장치는 복수 개의 프로세싱 유닛들(processing units)을 포함한 재구성 어레이(reconfigurable array) 및 인스트럭션 셋 프로세서 모드에서 사용하는 레지스터들 중 미리 선정된 레지스터들 각각에 대응하는 새도우 레지스터들을 포함한다. 상기 재구성 어레이의 동작 중 인터럽트가 발생하면, 상기 재구성 어레이의 동작을 정지(pause)하고, 상기 새도우 레지스터들(shadow registers)을 이용하여 상기 인터럽트에 대한 인터럽트 서비스를 수행한다. 그리고, 상기 인터럽트 서비스를 종료한 후, 컴퓨팅 장치는 상기 재구성 어레이의 동작을 재개(resume)한다. 상기 컴퓨팅 장치는, 상기 재구성 어레이로의 클록 입력을 중단함으로써, 상기 재구성 어레이의 동작을 정지(pause)하고, 상기 재구성 어레이로의 클록 입력을 재개함으로써, 상기 재구성 어레이의 동작을 재개(resume)한다.
도 8은 본 발명의 제3 실시예에 따라 재구성 어레이에서 인터럽트를 처리하는 순서를 도시한 흐름도이다.
단계(801)에서, 컴퓨팅 장치는 재구성 어레이에서 수행될 작업에 대한 수행 종료 임계 시각(programmed threshold time)을 계산한다. 수행 종료 임계 시각은 상기 작업의 수행 중 인터럽트 요청이 발생한 경우 늦어도 상기 인터럽트 요청에 대한 인터럽트 서비스를 시작하여야 하는 시각을 의미한다. 즉, 어레이 작업의 수행 중 인터럽트 요청이 발생한 경우, 어레이 작업이 최악의 경우에 해당되어 상기 어레이 작업의 수행이 아무리 오래 걸리더라도, 상기 수행 종료 임계 시각에만 인터럽트 서비스를 시작할 수 있으면 인터럽트의 실시간 제한을 만족시킬 수 있는 것이다. 수행 종료 임계 시각은 재구성 어레이에 어레이 작업을 할당할 때 컴파일러에 의하여 결정될 수 있다. 컴파일러는 "시작 사이클 시각(starting cycle time) + 최악 수행 시간(WCET: Worst Case Execution Time) - 최대 인터럽트 지연(maximum interrupt latency)"으로 수행 종료 임계 시각을 계산할 수 있다. 여기서, 상기 시작 사이클 시각은 상기 작업을 상기 재구성 어레이에서 시작하는 시각이다. 상기 시작 사이클 시각은 컴파일러가 재구성 어레이에 작업을 할당하는 시점 또는 컴파일 시점과 실질적으로 동일하다. 시작 사이클 시각은 컴퓨팅 장치의 클록 사이클을 단위로 사용할 수 있다. 상기 최악 수행 시간은 상기 작업을 상기 재구성 어레이에서 수행할 때 최악의 경우에도 상기 작업이 종료될 것으로 예상되는 시간이고, 상기 최대 인터럽트 지연은 인터럽트 요청의 발생 후 상기 인터럽트 요청에 대한 인터럽트 서비스의 시작을 연기할 수 있는 최대 시간이다.
상기 재구성 어레이에서 상기 작업의 수행 중 인터럽트 요청이 발생하면(단계 802), 프로그램 가능 인터럽트 콘트롤러(PIC: programmable interrupt controller)는 현재 사이클 시각(current cycle time)과 상기 수행 종료 임계 시각을 비교한다(단계 803). 현재 사이클 시각은 인터럽트 요청이 발생한 시점의 시각이다.
단계(803)의 비교 결과 상기 현재 사이클 시각이 상기 수행 종료 임계 시각보다 크면, 프로그램 가능 인터럽트 콘트롤러(PIC: programmable interrupt controller)는 상기 인터럽트 요청을 무시한다(단계 804). 현재 사이클 시각이 수행 종료 임계 시각보다 크면, 인터럽트 요청이 발생하였어도, "시작 사이클 시각(starting cycle time) + 최악 수행 시간(WCET: Worst Case Execution Time) - 현재 사이클 시각"만큼은 기다렸다가 인터럽트 서비스를 시작하여도 최대 인터럽트 지연(maximum interrupt latency)의 범위 내에 속하기 때문이다. "시작 사이클 시각(starting cycle time) + 최악 수행 시간(WCET: Worst Case Execution Time)"은 최악의 경우라 하더라도 어레이 작업이 종료되는 시각을 나타낸다. 현재 사이클 시각이 상기 수행 종료 임계 시각보다 크면, 현재 사이클 시각으로부터 "시작 사이클 시각(starting cycle time) + 최악 수행 시간(WCET: Worst Case Execution Time)"까지의 시간이 최대 인터럽트 지연보다 작다. 따라서, 이 경우에는 어레이 작업이 종료된 후 인터럽트 요청을 처리하여도 최대 인터럽트 지연 내에 인터럽트 요청을 처리하게 된다.
단계(803)의 비교 결과 상기 현재 사이클 시각이 상기 수행 종료 임계 시각보다 작으면, 단계(602) 내지 단계(606)을 수행한다. 즉, 상기 재구성 어레이의 동작을 정지(pause)하고(단계 805), 상기 인터럽트 요청의 처리에 사용될 레지스터의 값을 저장하고(단계 806), 상기 인터럽트 요청에 대한 인터럽트 서비스를 수행하고(단계 807), 상기 레지스터의 값을 복구하고(단계 808), 상기 재구성 어레이의 동작을 재개(resume)한다(단계 809). 레지스터 값의 저장 및 복구를 위하여, 스택이 이용될 수 있으며, 또한 두 개의 레지스터 세트를 이용하는 하드웨어적 방법도 이용될 수 있다.
도 9는 본 발명에 따른 프로그램 가능 인터럽트 콘트롤러(PIC)의 일례를 도시한 도면이다.
본 발명의 일실시예에 따른 프로그램 가능 인터럽트 콘트롤러(PIC)(904)는 현재 사이클 시각과 수행 종료 임계 시각을 비교하여 인터럽트 요청(902)을 VLIW 코어 또는 CGA(903)에 전달하거나 무시한다. 현재 사이클 시각은 컴퓨팅 장치의 현재 클록(901)으로부터 얻어지고, 수행 종료 임계 시각은 앞에서 설명한 바와 같이, 컴파일러에 의하여 계산된다.
도 10은 본 발명의 제3 실시예에 따른 재구성 어레이에서의 인터럽트 처리를 설명하기 위한 도면이다.
본 실시예에서 컴퓨팅 장치는 재구성 어레이 모드에서 어레이 작업을 수행하던 중(1001), 인터럽트 요청을 수신하였다(1002). 제2 실시예의 경우에는 이 경우, 바로 인터럽트 요청을 처리하는 대신, 인터럽트 핸들러가 일부 레지스터들의 값을 저장 및 복구하는 동작을 수행하였다. 그러나, 본 실시예에서는 인터럽트 요청의 수신(1002) 후, 인터럽트 요청을 바로 처리하지 않고, 현재 사이클 시각과 수행 종료 임계 시각을 비교한다. 본 실시예에서 어레이 작업 1의 경우 현재 사이클 시각이 수행 종료 임계 시각보다 크다. 따라서, 바로 인터럽트 요청을 처리하지 않고, 인터럽트 요청을 무시한다. 따라서 인터럽트 요청(1002)은 무시된다. 어레이 작업 1이 종료된 후, 인터럽트 요청(1004)은 무시되지 않고, 인스트럭션 셋 프로세서 모드의 프로세서에 전달된다. 인스트럭션 셋 프로세서 모드의 프로세서는 인터럽트 요청(1004)에 대한 인터럽트 서비스(1005)를 수행한다. 본 실시예의 경 우, 제2 실시예보다 늦게 인터럽트 서비스를 시작하지만, 인터럽트의 실시간 제한은 만족된다.
어레이 작업 2의 수행 중(1006), 인터럽트 요청이 발생한다(1007). 그러나, 이 경우에는 현재 사이클 시각이 수행 종료 임계 시각보다 작기 때문에, PIC가 인터럽트 요청을 무시하지 않고, 인스트럭션 셋 프로세서 모드의 프로세서에 전달한다. 재구성 어레이의 동작은 정지(pause)된다. 인터럽트 핸들러는 인터럽트 요청의 처리에 사용될 레지스터의 값을 저장하고(1008), 상기 인터럽트 요청에 대한 인터럽트 서비스를 수행하고(1009), 상기 레지스터의 값을 복구(1010)한다. 그리고, 재구성 어레이의 동작이 재개된다.
도 11은 본 발명의 제4 실시예에 따라 재구성 어레이에서 인터럽트를 처리하는 순서를 도시한 흐름도이다.
재구성 어레이에서 작업의 수행 중 인터럽트 요청이 발생한다(단계 1101).
상기 인터럽트 요청이 발생하면, 컴퓨팅 장치는 상기 작업의 최악 수행 시간(WCET: worst case execution time)과 상기 인터럽트 요청의 최대 인터럽트 지연(maximum interrupt latency)을 비교한다(단계 1102). 상기 작업의 최악 수행 시간은 상기 작업을 상기 재구성 어레이에서 수행할 때 최악의 경우에도 상기 작업이 종료될 것으로 예상되는 시간(interval time)이다. 상기 최대 인터럽트 지연은 인터럽트 요청의 발생 후 상기 인터럽트 요청에 대한 인터럽트 서비스의 시작을 연기할 수 있는 최대 시간이다.
단계(1102)의 비교 결과 상기 최악 수행 시간이 상기 최대 인터럽트 지연보 다 크면, 상기 인터럽트 요청을 블로킹한다(단계 1103). 즉, 상기 작업의 종료를 기다린 후 상기 인터럽트 요청에 대한 인터럽트 서비스를 수행한다.
단계(1102)의 비교 결과 상기 최악 수행 시간이 상기 최대 인터럽트 지연보다 작으면, 컴퓨팅 시스템은 현재 사이클 시각(current cycle time)과 수행 종료 임계 시각을 비교한다(단계 1104). 상기 수행 종료 임계 시각은, 시작 사이클 시각(starting cycle time) + 최악 수행 시간(WCET: Worst Case Execution Time) - 최대 인터럽트 지연(maximum interrupt latency)이다. 시작 사이클 시각은 상기 작업을 상기 재구성 어레이에서 시작하는 시각이고, 상기 최악 수행 시간은 상기 작업을 상기 재구성 어레이에서 수행할 때 최악의 경우에도 상기 작업이 종료될 것으로 예상되는 시간이다. 그리고, 최대 인터럽트 지연은 인터럽트 요청의 발생 후 상기 인터럽트 요청에 대한 인터럽트 서비스의 시작을 연기할 수 있는 최대 시간이다.
단계(1104)의 비교 결과 상기 현재 사이클 시각이 상기 수행 종료 임계 시각보다 크면, 프로그램 가능 인터럽트 콘트롤러(PIC: programmable interrupt controller)에서 상기 인터럽트 요청을 무시한다(단계 1105).
단계(1104)의 비교 결과 상기 현재 사이클 시각이 상기 수행 종료 임계 시각보다 작으면, 도 6의 단계(602) 내지 단계(606)를 수행한다. 즉, 상기 재구성 어레이의 동작을 정지한다. 그리고, 인터럽트 핸들러는 상기 인터럽트 요청의 처리에 사용될 레지스터의 값을 저장하고, 상기 인터럽트 요청에 대한 인터럽트 서비스를 수행하고, 상기 레지스터의 값을 복구한다. 그리고, 상기 재구성 어레이의 동 작이 재개된다.
또한 본 발명의 실시예들은 다양한 컴퓨터로 구현되는 동작을 수행하기 위한 프로그램 명령을 포함하는 컴퓨터 판독 가능 매체를 포함한다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 상기 매체는 프로그램 명령, 데이터 구조 등을 지정하는 신호를 전송하는 반송파를 포함하는 광 또는 금속선, 도파관 등의 전송 매체일 수도 있다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상에서 본 발명은 코어스 그레인 어레이가 강결합(tightly-coupled)되어 있는 경우를 중심으로 설명하였으나, 본 발명은 강결합이 아닌 약결합(loosely-coupled)의 경우에도 적용가능하고, 코어스 그레인 어레이를 포함한 다른 형태의 재구성 아키텍처(reconfigurable architecture)에도 적용가능하다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
상술한 바와 같이 본 발명에 따른 재구성 어레이에서의 인터럽트 처리 방법은 재구성 어레이를 포함한 컴퓨팅 장치에서 인터럽트가 발생한 경우, 이를 효율적으로 처리할 수 있다. 특히, 본 발명에 따르면, 재구성 어레이에서 작업을 수행하는 중 인터럽트 요청이 발생한 경우에도, 오버헤드를 최소로 하면서, 상기 인터럽트에 대한 처리가 실시간 제한(real-time constraint)을 만족하면서 수행될 수 있다.
또한, 본 발명에 따르면, 재구성 어레이에서 작업을 수행하는 중 발생한 인터럽트 요청을 처리함에 있어서, 스타베이션(starvation)이 발생하지 않는다. 본 발명의 제1 실시예에서는 스타베이션이 발생할 가능성이 있지만, 다른 실시예들에 의하면 스타베이션의 발생 가능성이 제거된다.
또한 본 발명에 따르면, 재구성 어레이에서 작업을 수행하는 중 인터럽트 요청이 발생한 경우, 문맥의 저장을 최소로 하면서 실시간 제한을 만족시킨다.

Claims (19)

  1. 재구성 어레이의 동작 중 인터럽트 요청이 발생하면, 상기 재구성 어레이의 동작을 정지(pause)하는 단계;
    상기 인터럽트 요청의 처리에 사용될 레지스터의 값을 저장하는 단계;
    상기 인터럽트 요청에 대한 인터럽트 서비스를 수행하는 단계; 및
    상기 레지스터의 값을 복구하고, 상기 재구성 어레이의 동작을 재개(resume)하는 단계
    를 포함하는 것을 특징으로 하는 재구성 어레이에서의 인터럽트 처리 방법.
  2. 제1항에 있어서,
    상기 재구성 어레이의 동작을 정지(pause)하는 상기 단계는, 상기 재구성 어레이로의 클록 입력을 중단하고,
    상기 재구성 어레이의 동작을 재개(resume)하는 단계는, 상기 재구성 어레이로의 클록 입력을 재개하는 것을 특징으로 하는 재구성 어레이에서의 인터럽트 처리 방법.
  3. 제1항에 있어서,
    상기 인터럽트 요청의 처리에 사용될 레지스터의 값을 저장하는 상기 단계는, 상기 인터럽트 요청의 처리에 사용될 레지스터의 값을 소정의 스택에 푸시 (push)하고,
    상기 레지스터의 값을 복구하는 상기 단계는, 상기 레지스터의 값을 상기 스택으로부터 팝(pop)하는 것을 특징으로 하는 재구성 어레이에서의 인터럽트 처리 방법.
  4. 재구성 어레이의 동작 중 인터럽트 요청이 발생하면, 상기 재구성 어레이의 동작을 정지(pause)하는 단계;
    인터럽트 서비스를 위한 전용 레지스터(dedicated register)를 사용하여 상기 인터럽트 요청에 대한 인터럽트 서비스를 수행하는 단계; 및
    상기 인터럽트 서비스를 종료한 후 상기 재구성 어레이의 동작을 재개(resume)하는 단계
    를 포함하는 것을 특징으로 하는 재구성 어레이에서의 인터럽트 처리 방법.
  5. 제4항에 있어서,
    상기 재구성 어레이의 동작을 정지(pause)하는 상기 단계는, 상기 재구성 어레이로의 클록 입력을 중단하고,
    상기 재구성 어레이의 동작을 재개(resume)하는 단계는, 상기 재구성 어레이로의 클록 입력을 재개하는 것을 특징으로 하는 재구성 어레이에서의 인터럽트 처리 방법.
  6. 재구성 어레이에서 수행될 작업에 대한 수행 종료 임계 시각(programmed threshold time)을 계산하는 단계;
    상기 재구성 어레이에서 상기 작업의 수행 중 인터럽트 요청이 발생하면, 현재 사이클 시각(current cycle time)과 상기 수행 종료 임계 시각을 비교하는 단계; 및
    상기 현재 사이클 시각이 상기 수행 종료 임계 시각보다 크면, 프로그램 가능 인터럽트 콘트롤러(PIC: programmable interrupt controller)에서 상기 인터럽트 요청을 무시하는 단계
    를 포함하는 것을 특징으로 하는 재구성 어레이에서의 인터럽트 처리 방법.
  7. 제6항에 있어서, 상기 수행 종료 임계 시각은,
    상기 작업의 수행 중 인터럽트 요청이 발생한 경우 늦어도 상기 인터럽트 요청에 대한 인터럽트 서비스를 시작하여야 하는 시각인 것을 특징으로 하는 재구성 어레이에서의 인터럽트 처리 방법.
  8. 제6항에 있어서, 상기 수행 종료 임계 시각은,
    시작 사이클 시각(starting cycle time) + 최악 수행 시간(WCET: Worst Case Execution Time) - 최대 인터럽트 지연(maximum interrupt latency)이고,
    상기 시작 사이클 시각은 상기 작업을 상기 재구성 어레이에서 시작하는 시각이고,
    상기 최악 수행 시간은 상기 작업을 상기 재구성 어레이에서 수행할 때 최악의 경우에도 상기 작업이 종료될 것으로 예상되는 시간이고,
    상기 최대 인터럽트 지연은 인터럽트 요청의 발생 후 상기 인터럽트 요청에 대한 인터럽트 서비스의 시작을 연기할 수 있는 최대 시간인 것을 특징으로 하는 재구성 어레이에서의 인터럽트 처리 방법.
  9. 제6항에 있어서,
    상기 현재 사이클 시각이 상기 수행 종료 임계 시각보다 작으면,
    (1) 상기 재구성 어레이의 동작을 정지(pause)하는 단계;
    (2) 상기 인터럽트 요청의 처리에 사용될 레지스터의 값을 저장하고, 상기 인터럽트 요청에 대한 인터럽트 서비스를 수행하는 단계; 및
    (3) 상기 레지스터의 값을 복구하고, 상기 재구성 어레이의 동작을 재개(resume)하는 단계
    를 포함하는 것을 특징으로 하는 재구성 어레이에서의 인터럽트 처리 방법.
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 인스트럭션 셋 프로세서 모드에서 재구성 어레이 모드(reconfigurable array mode)로 전환하기 전에 인스트럭션 셋 프로세서 모드의 문맥(context)을 저장하는 단계;
    상기 재구성 어레이 모드에서 재구성 어레이 작업(reconfigurable array task)을 수행하던 중 인터럽트 요청이 발생하면, 상기 인터럽트 요청에 대한 인터럽트 서비스를 수행하는 단계; 및
    상기 인터럽트 서비스를 마친 후, 상기 인스트럭션 셋 프로세서의 상기 문맥을 복구(restore)하고 상기 재구성 어레이 작업을 처음부터 다시 수행하는 단계
    를 포함하는 것을 특징으로 하는 재구성 어레이에서의 인터럽트 처리 방법.
  15. 제14항에 있어서, 상기 인터럽트 서비스는 상기 인스트럭션 셋 프로세서 모드에서 수행되는 것을 특징으로 하는 재구성 어레이에서의 인터럽트 처리 방법.
  16. 제1항 내지 제9항, 제14항 및 제15항 중 어느 한 항의 방법을 수행하는 프로그램을 기록한 컴퓨터 판독 가능 기록매체.
  17. 복수 개의 프로세싱 유닛들(processing units)을 포함한 재구성 어레이(reconfigurable array); 및
    상기 인터럽트 요청의 처리에 사용될 레지스터의 값을 저장하고, 상기 인터럽트 요청에 대한 인터럽트 서비스를 수행한 후, 상기 레지스터의 값을 복구하는 인터럽트 핸들러
    를 포함하고,
    상기 재구성 어레이의 동작 중 인터럽트 요청이 발생하면, 상기 재구성 어레이의 동작을 정지(pause)하고, 상기 인터럽트 요청에 대한 인터럽트 서비스가 끝나면 상기 재구성 어레이의 동작을 재개(resume)하는 것을 특징으로 하는 컴퓨팅 장치.
  18. 제17항에 있어서,
    상기 재구성 어레이로의 클록 입력을 중단함으로써, 상기 재구성 어레이의 동작을 정지하고, 상기 재구성 어레이로의 클록 입력을 재개함으로써, 상기 재구성 어레이의 동작을 재개(resume)하는 것을 특징으로 하는 컴퓨팅 장치.
  19. 복수 개의 프로세싱 유닛들(processing units)을 포함한 재구성 어레이(reconfigurable array); 및
    인스트럭션 셋 프로세서 모드에서 사용하는 레지스터들 중 미리 선정된 레지스터들 각각에 대응하는 새도우 레지스터들
    을 포함하고,
    상기 재구성 어레이의 동작 중 인터럽트가 발생하면, 상기 재구성 어레이의 동작을 정지(pause)하고, 상기 새도우 레지스터들을 이용하여 상기 인터럽트에 대한 인터럽트 서비스를 수행하고, 상기 재구성 어레이의 동작을 재개(resume)하는 것을 특징으로 하는 컴퓨팅 장치.
KR1020060011200A 2006-02-06 2006-02-06 재구성 어레이에서의 인터럽트 처리 방법 및 장치 KR100812346B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020060011200A KR100812346B1 (ko) 2006-02-06 2006-02-06 재구성 어레이에서의 인터럽트 처리 방법 및 장치
US11/581,366 US7836291B2 (en) 2006-02-06 2006-10-17 Method, medium, and apparatus with interrupt handling in a reconfigurable array

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060011200A KR100812346B1 (ko) 2006-02-06 2006-02-06 재구성 어레이에서의 인터럽트 처리 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20070080089A KR20070080089A (ko) 2007-08-09
KR100812346B1 true KR100812346B1 (ko) 2008-03-11

Family

ID=38335359

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060011200A KR100812346B1 (ko) 2006-02-06 2006-02-06 재구성 어레이에서의 인터럽트 처리 방법 및 장치

Country Status (2)

Country Link
US (1) US7836291B2 (ko)
KR (1) KR100812346B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8850170B2 (en) 2010-11-16 2014-09-30 Samsung Electronics Co., Ltd. Apparatus and method for dynamically determining execution mode of reconfigurable array

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101237640B (zh) * 2007-01-30 2014-06-04 世意法(北京)半导体研发有限责任公司 在宽带无线接入通信系统中用于实时服务的睡眠模式控制
CA2638128C (en) * 2007-07-23 2016-06-21 Arne Wallin Modular pre-cast composite flooring tile or panel and floor system
KR101360221B1 (ko) * 2007-09-13 2014-02-10 삼성전자주식회사 인스트럭션 캐시 관리 방법 및 그 방법을 이용하는프로세서
JP4911022B2 (ja) * 2007-12-27 2012-04-04 富士通セミコンダクター株式会社 カウンタ制御回路、動的再構成回路およびループ処理制御方法
KR101390974B1 (ko) 2008-01-30 2014-05-02 삼성전자주식회사 다중 모드를 제공하는 재구성 가능한 장치 및 방법
KR101571882B1 (ko) 2009-02-03 2015-11-26 삼성전자 주식회사 재구성 가능 어레이의 인터럽트 핸들링을 위한 컴퓨팅 장치및 방법
JP5431003B2 (ja) * 2009-04-03 2014-03-05 スパンション エルエルシー リコンフィギュラブル回路及びリコンフィギュラブル回路システム
KR101581882B1 (ko) * 2009-04-20 2015-12-31 삼성전자주식회사 재구성 가능한 프로세서 및 그 재구성 방법
KR101622266B1 (ko) * 2009-04-22 2016-05-18 삼성전자주식회사 재구성 가능 프로세서 및 이를 이용한 인터럽트 핸들링 방법
US8135894B1 (en) * 2009-07-31 2012-03-13 Altera Corporation Methods and systems for reducing interrupt latency by using a dedicated bit
US8356131B2 (en) * 2009-10-25 2013-01-15 Sony Mobile Communications Ab System and method for controlling interruption of a process in electronic equipment based on priority of the process, and program
KR101738941B1 (ko) 2010-03-23 2017-05-24 삼성전자주식회사 재구성 가능 어레이 및 재구성 가능 어레이의 제어 방법
KR101669989B1 (ko) 2010-05-27 2016-10-28 삼성전자주식회사 파이프라인 프로세서 및 이퀄 모델 보존 방법
KR20130028505A (ko) * 2011-09-09 2013-03-19 삼성전자주식회사 재구성가능 프로세서, 재구성가능 프로세서의 코드 변환 장치 및 방법
TWI464583B (zh) * 2012-03-02 2014-12-11 Wistron Corp 取得觸發功能之指令的方法
US9311137B2 (en) * 2012-09-28 2016-04-12 International Business Machines Corporation Delaying interrupts for a transactional-execution facility
US9507814B2 (en) * 2013-12-10 2016-11-29 Vertafore, Inc. Bit level comparator systems and methods
US9825884B2 (en) 2013-12-30 2017-11-21 Cavium, Inc. Protocol independent programmable switch (PIPS) software defined data center networks
US9361041B2 (en) * 2014-02-27 2016-06-07 International Business Machines Corporation Hint instruction for managing transactional aborts in transactional memory computing environments
US9747556B2 (en) 2014-08-20 2017-08-29 Vertafore, Inc. Automated customized web portal template generation systems and methods
US10656992B2 (en) * 2014-10-22 2020-05-19 Cavium International Apparatus and a method of detecting errors on registers
US9600400B1 (en) 2015-10-29 2017-03-21 Vertafore, Inc. Performance testing of web application components using image differentiation
US10432247B2 (en) * 2017-03-20 2019-10-01 Intel IP Corporation Sequence triggering in RF front-ends

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000025099A (ko) * 1998-10-08 2000-05-06 서평원 에프피지에이를 이용한 인터럽트 요구신호 제어방법 및 제어회로
KR20000045933A (ko) * 1998-12-30 2000-07-25 김영환 마이크로 컴퓨터의 인터럽트 제어장치
JP2004110608A (ja) * 2002-09-20 2004-04-08 Nec Corp プロセッサにおける割込み発生時のレジスタ退避方法および装置並びにプログラム
US20050125642A1 (en) * 2003-12-05 2005-06-09 Tomoo Kimura Dynamically reconfigurable logic circuit device, interrupt control method, and semi-conductor integrated circuit
JP2005228300A (ja) * 2004-02-11 2005-08-25 Arm Ltd 割込み処理制御の方法と装置

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05113887A (ja) 1991-10-22 1993-05-07 Nec Corp コンピユータシステム
KR940007828B1 (ko) 1991-12-17 1994-08-25 재단법인 한국전자통신연구소 실시간 운영체계에서의 인터럽트 처리기 구현방법
JPH08297581A (ja) 1995-02-28 1996-11-12 Nec Corp リアルタイム・オペレーティングシステムにおける割り込み管理方式
US5794062A (en) 1995-04-17 1998-08-11 Ricoh Company Ltd. System and method for dynamically reconfigurable computing using a processing unit having changeable internal hardware organization
KR19980025435A (ko) 1996-10-01 1998-07-15 구자홍 멀티-엠피유(MPU) 시스템의 인터럽트 핸들러(Handler) 성능 최적화 방법
KR19980035186A (ko) 1996-11-12 1998-08-05 양승택 대용량 인터럽트 처리기 및 그 처리방법
KR100324264B1 (ko) 1997-08-25 2002-07-02 구자홍 실시간운영체제의인터럽트마스킹방법
KR100241343B1 (ko) 1997-10-22 2000-02-01 이계철 동일 레벨 인터럽트 실행순서 제어방법
US6076152A (en) 1997-12-17 2000-06-13 Src Computers, Inc. Multiprocessor computer architecture incorporating a plurality of memory algorithm processors in the memory subsystem
US6754690B2 (en) 1999-09-16 2004-06-22 Honeywell, Inc. Method for time partitioned application scheduling in a computer operating system
US6606676B1 (en) * 1999-11-08 2003-08-12 International Business Machines Corporation Method and apparatus to distribute interrupts to multiple interrupt handlers in a distributed symmetric multiprocessor system
US6799265B1 (en) * 2000-07-11 2004-09-28 Intel Corporation Dependency checking for reconfigurable logic
US7155602B2 (en) * 2001-04-30 2006-12-26 Src Computers, Inc. Interface for integrating reconfigurable processors into a general purpose computing system
US6839828B2 (en) * 2001-08-14 2005-01-04 International Business Machines Corporation SIMD datapath coupled to scalar/vector/address/conditional data register file with selective subpath scalar processing mode
US7487339B2 (en) * 2001-10-12 2009-02-03 Mips Technologies, Inc. Method and apparatus for binding shadow registers to vectored interrupts
KR20030077696A (ko) 2002-03-26 2003-10-04 주식회사 현대시스콤 실시간 운영체제에서 타스크 레벨 인터럽트 처리 방법
US7222203B2 (en) * 2003-12-08 2007-05-22 Intel Corporation Interrupt redirection for virtual partitioning

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000025099A (ko) * 1998-10-08 2000-05-06 서평원 에프피지에이를 이용한 인터럽트 요구신호 제어방법 및 제어회로
KR20000045933A (ko) * 1998-12-30 2000-07-25 김영환 마이크로 컴퓨터의 인터럽트 제어장치
JP2004110608A (ja) * 2002-09-20 2004-04-08 Nec Corp プロセッサにおける割込み発生時のレジスタ退避方法および装置並びにプログラム
US20050125642A1 (en) * 2003-12-05 2005-06-09 Tomoo Kimura Dynamically reconfigurable logic circuit device, interrupt control method, and semi-conductor integrated circuit
JP2005228300A (ja) * 2004-02-11 2005-08-25 Arm Ltd 割込み処理制御の方法と装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8850170B2 (en) 2010-11-16 2014-09-30 Samsung Electronics Co., Ltd. Apparatus and method for dynamically determining execution mode of reconfigurable array

Also Published As

Publication number Publication date
KR20070080089A (ko) 2007-08-09
US7836291B2 (en) 2010-11-16
US20070186085A1 (en) 2007-08-09

Similar Documents

Publication Publication Date Title
KR100812346B1 (ko) 재구성 어레이에서의 인터럽트 처리 방법 및 장치
JP2518616B2 (ja) 分岐方法
US7529917B2 (en) Method and apparatus for interrupt handling during loop processing in reconfigurable coarse grained array
KR100663709B1 (ko) 재구성 아키텍처에서의 예외 처리 방법 및 장치
JP4484925B2 (ja) Simdデバイスにおける制御フロー管理のための方法及び装置
US8417918B2 (en) Reconfigurable processor with designated processing elements and reserved portion of register file for interrupt processing
EP1868094A2 (en) Multitasking method and apparatus for reconfigurable array
KR101571882B1 (ko) 재구성 가능 어레이의 인터럽트 핸들링을 위한 컴퓨팅 장치및 방법
US20140089646A1 (en) Processor with interruptable instruction execution
US8782293B1 (en) Intra-processor operation control
US6721878B1 (en) Low-latency interrupt handling during memory access delay periods in microprocessors
JP3602801B2 (ja) メモリデータアクセス構造およびその方法
JP3759729B2 (ja) スペキュレーティブ・レジスタの調整
US9983932B2 (en) Pipeline processor and an equal model compensator method and apparatus to store the processing result
JP2007200106A (ja) データ処理装置、制御方法、及びプログラム
KR20070118543A (ko) 재구성 어레이를 위한 멀티태스킹 방법 및 장치
CN117850881B (zh) 一种基于流水线式的指令执行方法及装置
US20230084603A1 (en) Methods and apparatus for context switching
CN114579264A (zh) 处理装置、处理系统和处理方法
US7124285B2 (en) Peak power reduction when updating future file
JP2011150636A (ja) マイクロプロセッサ及びその制御方法
JPH08166887A (ja) 割込み処理からの復帰方法
JP2000099330A (ja) コンピュ―タ・プロセッサ・システム
US20140089640A1 (en) Processor with variable instruction atomicity
JP2001134448A (ja) 情報処理装置及び割込み処理方法

Legal Events

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

Payment date: 20130221

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140221

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150212

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160218

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20170220

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20180220

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20190220

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20200225

Year of fee payment: 13