KR100663709B1 - 재구성 아키텍처에서의 예외 처리 방법 및 장치 - Google Patents

재구성 아키텍처에서의 예외 처리 방법 및 장치 Download PDF

Info

Publication number
KR100663709B1
KR100663709B1 KR1020050131776A KR20050131776A KR100663709B1 KR 100663709 B1 KR100663709 B1 KR 100663709B1 KR 1020050131776 A KR1020050131776 A KR 1020050131776A KR 20050131776 A KR20050131776 A KR 20050131776A KR 100663709 B1 KR100663709 B1 KR 100663709B1
Authority
KR
South Korea
Prior art keywords
exception
processing elements
register file
shadow
register files
Prior art date
Application number
KR1020050131776A
Other languages
English (en)
Inventor
김희석
유동훈
김정욱
류수정
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020050131776A priority Critical patent/KR100663709B1/ko
Priority to US11/487,407 priority patent/US9152418B2/en
Application granted granted Critical
Publication of KR100663709B1 publication Critical patent/KR100663709B1/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30116Shadow registers, e.g. coupled registers, not forming part of the register space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers

Landscapes

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

Abstract

본 발명은 재구성 아키텍처에서 예외(exception)를 처리하는 방법 및 장치에 관한 것으로, 본 발명의 프로세서는, 복수 개의 프로세싱 엘리먼트들(processing elements)을 포함하는 코어스 그레인 어레이(coarse grained array), 복수 개의 레지스터 파일들을 포함한 중앙 레지스터 파일(central register file), 상기 중앙 레지스터 파일에 포함된 상기 복수 개의 레지스터 파일들에 각각 대응하는 복수 개의 레지스터 파일들을 포함한 새도우 중앙 레지스터 파일(shadow central register file), 및 상기 복수 개의 프로세싱 엘리먼트들 중 미리 선정된 일부의 프로세싱 엘리먼트에 포함된 레지스터 파일들 각각에 대응하는 복수 개의 새도우 레지스터 파일들(shadow register files)를 포함한다.
코어스 그레인 어레이(coarse grained array), 재구성 아키텍처(reconfigurable architecture), 예외(exception), 강결합(tightly-coupled), 새도우 레지스터(shadow register)

Description

재구성 아키텍처에서의 예외 처리 방법 및 장치{Apparatus and Method of Exception Handling for Reconfigurable Architecture}
도 1은 재구성 아키텍처(reconfigurable architecture)를 설명하기 위한 도면이다.
도 2는 강결합 코어스 그레인 어레이 아키텍처(tightly-coupled coarse grained array architecture)의 일례를 도시한 도면이다.
도 3은 본 발명에 따라 새도우 레지스터 파일들을 포함하는 강결합 코어스 그레인 어레이 아키텍처를 도시한 도면이다.
도 4는 본 발명에 따라 레지스터 파일과 새도우 레지스터 파일을 선택하는 구성을 도시한 블록도이다.
도 5는 예외가 발생한 경우에 따른 예외 처리를 설명하기 위한 도면이다.
도 6은 본 발명에 따라 재구성 아키텍처에서 예외를 처리하는 방법의 순서를 도시한 흐름도이다.
<도면의 주요 부분에 대한 부호의 설명>
310: 코어스 그레인 어레이(CGA: coarse grained array)
311: 프로세싱 엘리먼트(PE: processing element)
312: 계산 유닛(function unit)
313: 레지스터 파일(register file)
314: 새도우 레지스터 파일(shadow register file)
320: 구성 메모리(configuration memory)
330: 데이터 메모리(data memory)
340: 인스트럭션 메모리(instruction memory)
370: 중앙 레지스터 파일(central register file)
375: 새도우 중앙 레지스터 파일(shadow central register file)
본 발명은 재구성 아키텍처(reconfigurable architecture)에 관한 것으로, 더욱 상세하게는 재구성 아키텍처에서 예외(exception)를 처리하는 방법 및 장치에 관한 것이다.
전통적으로, 어떤 작업을 수행하는 장치는 하드웨어 또는 소프트웨어에 의하여 구현되었다. 예를 들어, 네트워크 인터페이스를 수행하는 네트워크 콘트롤러를 컴퓨터 칩 상에 구현한 경우, 상기 네트워크 콘트롤러는 공장에서 생산될 때 정의된 네트워크 인터페이스 기능만을 수행하였다. 일단, 공장에서 네트워크 콘트롤러가 생산된 후, 상기 네트워크 콘트롤러의 기능(function)을 바꾸는 것은 불가능하였다. 이것이 하드웨어의 예이다. 또 다른 방법으로는 소프트웨어를 이용하는 방법이 있다. 예를 들어 자신이 원하는 기능을 수행하는 프로그램을 짜고, 상기 프 로그램을 범용 프로세서(general purpose processor)에서 수행시킴으로써, 사용자의 목적이 만족되었다. 소프트웨어에 의한 방법은 하드웨어가 공장에서 생산된 후에도, 소프트웨어만 변경함으로써 새로운 기능을 수행하는 것이 가능하다. 소프트웨어를 이용하는 경우에는 주어진 하드웨어를 이용하여 다양한 기능을 수행할 수 있지만, 하드웨어 구현 방법에 의한 것보다 속도가 떨어지는 단점이 있다.
위와 같은 하드웨어 및 소프트웨어에 의한 방법의 문제점을 극복하기 위하여 제안된 아키텍처가 재구성 아키텍처(reconfigurable architecture)이다. 재구성 아키텍처는 장치의 조립(fabrication) 후에도 어떤 문제의 해결을 위하여 커스토마이징 될 수 있고(can be customized to solve any problem after device fabrication), 또한 계산의 수행을 위해 공간적으로 커스코마이징된 계산을 이용할 수 있다(can exploit a large degree of spatially customized computation in order to perform their computation)는 특징이 있다.
도 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들을 연결하는 라인들은 일정한 전류를 인가함으 로써, 그 구성이 변경될 수 있고, 따라서 이를 이용하여 다른 연산을 계산하는 구성(configuration)을 가지도록 할 수 있다. 이와 같이, 팹 후(after fabrication)에 하드웨어적 구성을 변경하여 새로운 연산을 수행할 수 있도록 하는 아키텍처를 재구성 아키텍처라고 한다.
도 1에서 ALU에 입력되는 데이터는 1비트이다. 이러한 재구성 아키텍처는 파인 그레인 어레이(fine grained array)라고 불린다. 하나의 프로세싱 엘리먼트(array element)에 입력되는 데이터의 크기가 워드(word) 단위인 재구성 아키텍처를 우리는 코어스 그레인 어레이(CGA: coarse grained array)라고 부른다.
도 2는 본 발명의 발명자들에 의하여 제안된 강결합 코어스 그레인 어레이 아키텍처(tightly-coupled coarse grained array architecture)의 일례를 도시한 도면이다.
코어스 그레인 어레이(CGA: coarse grained array)(210)는 복수 개의 프로세싱 엘리먼트(211)를 포함한다. 하나의 프로세싱 엘리먼트(211)는 계산 유닛(function unit)(212) 및 레지스터 파일(register file)(213)을 포함한다. 계산 유닛(212)은 계산(computation)을 수행하는 유닛이고, 레지스터 파일(213)은 레지스터들의 집합으로 계산 유닛(212)에서 사용되는 데이터를 임시로(temporarily) 저장한다.
구성 메모리(configuration memory)(220)는 코어스 그레인 어레이(210)의 구성에 관한 정보를 저장한다. 구성 메모리(220)에 저장된 구성(configuration)에 따라, 코어스 그레인 어레이(210)는 자신에 포함된 프로세싱 엘리먼트들 사이의 연 결 상태를 변경한다. 데이터 메모리(230)는 코어스 그레인 어레이(210)의 외부에 위치하여 데이터를 저장하고, 인스트럭션 메모리(240)은 코어스 그레인 어레이(210)의 외부에 위치하여 인스트럭션을 저장한다.
중앙 레지스터 파일(central register file)(270)은 코어스 그레인 어레이(210)의 외부에 위치하고, CGA(210)에서 계산된 값들을 저장한다.
코어스 그레인 어레이를 이용하는 프로세서의 경우, 프로세싱 유닛으로 코어스 그레인 어레이 및 다른 호스트 프로세서(host processor)를 포함할 수 있다(도시되지 않음). 이 경우, 통상의 인스트럭션들(instructions)은 호스트 프로세서에서 수행하고, 루프(loop)와 같이 반복 수행이 필요한 인스트럭션들은 코어스 그레인 어레이에서 수행할 수 있다. 이와 같이 코어스 그레인 어레이와 호스트 프로세서가 분리된 구성을 약결합(loosely-coupled)이라고 부를 수 있을 것이다.
한편, 도 2에 도시된 프로세서는 코어스 그레인 어레이(210)의 프로세싱 엘리먼트들 중 일부의 프로세싱 엘리먼트들(280)을 호스트 프로세서로 사용한다. 따라서, 통상의 인스트럭션들은 코어스 그레인 어레이(210) 중 선택된 일부의 프로세싱 엘리먼트(280)에서 수행되고, 루프와 같이 반복 수행이 필요한 인스트럭션들은 상기 프로세싱 엘리먼트(280)를 포함한 전체 코어스 그레인 어레이(210)에서 수행된다. 이와 같이 코어스 그레인 어레이의 프로세싱 엘리먼트들 중 일부의 프로세싱 엘리먼트를 호스트 프로세서로 이용하는 구성을 강결합(tightly-coupled)이라고 부를 수 있다. 강결합 구성에서는 어레이 모드(array mode) 및 인스트럭션 셋 프로세서 모드(instruction set processor mode)의 2개 모드가 있다. 어레이 모드에 서는 구성 메모리(220)에 저장된 구성(configuration)에 따라 코어스 그레인 어레이(210)의 계산 유닛들을 수행시킨다. 따라서, 어레이 모드에서 상기 프로세싱 엘리먼트들(280)은 CGA(coarse grained array)(210)의 일부로 동작한다. 인스트럭션 셋 프로세서 모드에서는 상기 코어스 그레인 어레이(210)의 계산 유닛들 중 미리 선정된 계산 유닛들을 수행시킨다. 인스트럭션 셋 프로세서 모드는 인스트럭션 페치/디코더(instruction fetch/decoder)(260), 중앙 레지스터 파일(270) 및 일부의 프로세싱 엘리먼트들(280)를 이용하여 수행될 수 있다.
이러한 강결합 구성을 이용하면, 코어스 그레인 어레이에서 사용하는 프로세싱 엘리먼트들 중 일부를 호스트 프로세서로 이용하기 때문에, 별도로 호스트 프로세서를 채용할 필요가 없으므로, 프로세서의 크기가 줄어들 뿐 아니라 프로세서 제작 비용도 줄어들게 된다.
그런데, 이러한 강결합 코어스 그레인 어레이 아키텍처에서 예외(exception)가 발생한 경우 이를 어떻게 처리할 지가 문제된다. 예외(exception)는 컴퓨터 시스템의 동작 중 발생하는 예상하지 않은(unexpected) 이벤트이다. 예외에는 0으로 나눔(division by zero), 정의되지 않은 명령(undefined instructions), 인터럽트(interrupt) 등이 있다. 이러한 예외가 발생하면, 현재 수행 중인 태스크를 중단하고 상기 예외에 대한 처리를 하여야 한다. 도 2에 도시된 강결합 코어스 그레인 어레이 아키텍처에서 예외 처리(exception handling)는 인스트럭션 셋 프로세서 모드로 처리되어야 한다. 따라서, 강결합 코어스 그레인 어레이 아키텍처가 어레이 모드로 동작하던 중 예외가 발생하면, 예외 처리를 위하여 인스트럭션 셋 프로세서 모드로 전환하여야 한다. 어레이 모드에서 인스트럭션 셋 프로세서 모드로 전환하기 위해서는, 문맥 교환(context switch)이 필요하다. 문맥(context)은 시스템의 현재 상태, 조건 등을 나타내는 정보로, 레지스터들에 저장된 값들을 포함할 수 있다. 즉, 어레이 모드에서 작업(task)을 수행하던 중 예외가 발생하면, 먼저 어레이 모드의 문맥(context)을 저장한 후 예외를 처리한다. 그리고, 예외 처리가 종료되면, 상기에서 저장해 둔 문맥을 복구(restore)한다. 즉, 코어스 그레인 어레이의 모든 레지스터 파일들 및 중앙 레지스터 파일에 현재 저장된 값을 포함한 현재의 문맥(context)을 메모리에 저장시킨 후, 상기 예외에 대한 처리를 수행한다. 그리고, 예외에 대한 처리가 종료되면, 다시 상기 메모리에 저장되었던 문맥 값들을 복구(restore)하여, 원래 수행하였던 작업을 재개하는 것이다.
그런데, 도 2에 도시된 바와 같이, 코어스 그레인 어레이는 매우 많은 수의 레지스터 파일들을 포함하기 때문에, 이러한 레지스터 파일들에 저장된 값들을 메모리에 저장하는 것은 매우 큰 오버헤드가 된다. 즉, 매우 많은 수의 레지스터 파일에 저장된 값들을 메모리로 저장하여야 하므로, 시간이 오래 걸린다. 또한 상기 레지스터 파일들 모두에 대해 데이터 메모리와의 연결선을 구비하여야 하므로, 전체적인 설계도 매우 복잡해지게 된다. 이와 같이, 문맥 교환을 필요로 하는 예외를 처리하기 위해서는 CGA에 상당한 오버헤드가 발생하기 때문에, 종래에는 이에 대하여 아무런 해결책이 제시되지 아니하였다.
또한 강결합 코어스 그레인 어레이 아키텍처가 인스트럭션 셋 프로세서 모드로 동작하던 중 예외가 발생하여도 어레이 모드의 경우와 마찬가지로 문맥교환에 따른 문제점이 있다.
따라서, 강결합 코어스 그레인 어레이 아키텍처에서 예외가 발생한 경우, 이를 효율적으로 처리하는 방법이 요구되고 있다.
따라서, 본 발명은 상술한 본 발명의 문제점을 해결하기 위한 것으로서, 강결합 코어스 그레인 어레이 아키텍처에서 예외가 발생한 경우, 이를 효율적으로 처리하는 방법 및 장치를 제공하는 것을 목적으로 한다.
또한 본 발명은 강결합 코어스 그레인 어레이 아키텍처가 어레이 모드로 동작하던 중 예외가 발생한 경우 이를 효율적으로 처리하는 방법 및 장치를 제공하는 것을 목적으로 한다.
또한 본 발명은 강결합 코어스 그레인 어레이 아키텍처가 인스트럭션 셋 프로세서 모드로 동작하던 중 예외가 발생한 경우 이를 효율적으로 처리하는 방법 및 장치를 제공하는 것을 목적으로 한다.
또한 본 발명은 강결합 코어스 그레인 어레이 아키텍처에서 작업의 스케줄링과 직접적인 관련이 없는 예외에 대하여 문맥 교환의 오버헤드를 최소한으로 하여 처리하는 것을 목적으로 한다.
또한 본 발명은 강결합 코어스 그레인 어레이 아키텍처에서 실시간 운영체제(real-time operating system)를 운영하기 위하여 사용되는 인터럽트 예외를 효율적으로 처리하는 것을 목적으로 한다.
또한 본 발명은 강결합 코어스 그레인 어레이 아키텍처에서 예외가 발생한 경우, 문맥 교환의 비용(cost)을 최소로 하는 것(minimize)을 목적으로 한다.
상기와 같은 본 발명의 목적을 달성하기 위한 본 발명에 따른 프로세서는, 복수 개의 프로세싱 엘리먼트들(processing elements)을 포함하는 코어스 그레인 어레이(coarse grained array), 복수 개의 레지스터 파일들을 포함한 중앙 레지스터 파일(central register file), 상기 중앙 레지스터 파일에 포함된 상기 복수 개의 레지스터 파일들에 각각 대응하는 복수 개의 레지스터 파일들을 포함한 새도우 중앙 레지스터 파일(shadow central register file), 및 상기 복수 개의 프로세싱 엘리먼트들 중 미리 선정된 일부의 프로세싱 엘리먼트에 포함된 레지스터 파일들 각각에 대응하는 복수 개의 새도우 레지스터 파일들(shadow register files)를 포함한다.
본 발명의 일측에 따르면, 상기 새도우 중앙 레지스터 파일 및 상기 복수 개의 새도우 레지스터 파일들은 예외 처리(exception handling)의 수행 시 사용되고, 상기 중앙 레지스터 파일 및 상기 복수 개의 프로세싱 엘리먼트들 중 미리 선정된 일부의 프로세싱 엘리먼트에 포함된 레지스터 파일들은 예외 처리(exception handling)의 수행 시 사용되지 않는다.
본 발명의 일측에 따라, 복수 개의 프로세싱 엘리먼트들(processing elements)을 포함하는 코어스 그레인 어레이(coarse grained array) 및 복수 개의 레지스터 파일들을 포함한 중앙 레지스터 파일(central register file)를 포함하는 프로세서에서 예외를 처리하는 방법은, 상기 복수 개의 프로세싱 엘리먼트들 중 미 리 선정된 일부의 프로세싱 엘리먼트에 포함된 계산 유닛들(function units)이 새도우 중앙 레지스터 파일 및 복수 개의 새도우 레지스터 파일들을 이용하여 상기 예외에 대한 처리를 수행하는 단계를 포함한다.
를 포함하는 것을 특징으로 하는 재구성 아키텍처에서의 예외 처리 방법.
또한, 본 발명의 일측에 따르면, 상기 방법은, 상기 예외가 코어스 그레인 어레이의 프로세싱 엘리먼트들을 수행시키는 어레이 모드에서 발생한 것인지를 판단하는 단계, 및 상기 예외가 어레이 모드에서 발생하였으면, 상기 코어스 그레인 어레이의 상기 프로세싱 엘리먼트들의 동작을 멈추는 단계를 더 포함한다.
또한, 본 발명의 일측에 따르면, 상기 방법은, 상기 예외에 대한 처리가 종료된 후, 상기 코어스 그레인 어레이의 상기 프로세싱 엘리먼트들의 동작을 재시작(restart)하는 단계를 더 포함한다.
이하 첨부 도면들 및 첨부 도면들에 기재된 내용들을 참조하여 본 발명의 바람직한 실시예를 상세하게 설명하지만, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 3은 본 발명에 따라 새도우 레지스터 파일들을 포함하는 강결합 코어스 그레인 어레이 아키텍처를 도시한 도면이다.
도 3에서 코어스 그레인 어레이(310)는 복수 개의 프로세싱 엘리먼트(processing element)(311)를 포함한다. 하나의 프로세싱 엘리먼트(311)는 계산 유닛(function unit)(312) 및 레지스터 파일(register file)(313)을 포함한다. 계 산 유닛은 계산(computation)을 수행하는 유닛이고, 레지스터 파일은 레지스터들의 집합으로 계산 유닛에서 사용되는 데이터를 임시로(temporarily) 저장한다.
도 3의 프로세서는 강결합 코어스 그레인 어레이 아키텍처의 프로세서이다. 강결합 아키텍처에는 어레이 모드(array mode) 및 인스트럭션 셋 프로세서 모드(instruction set processor mode)의 2개 모드가 있다. 어레이 모드에서는 구성 메모리(320)에 저장된 구성(configuration)에 따라 코어스 그레인 어레이(310)의 계산 유닛들을 수행시킨다. 따라서, 어레이 모드에서 상기 프로세싱 엘리먼트들(380)은 CGA(310)의 일부로 동작한다. 인스트럭션 셋 프로세서 모드에서는 상기 코어스 그레인 어레이(310)의 계산 유닛들 중 미리 선정된 계산 유닛들을 수행시킨다. 예를 들어, 인스트럭션 셋 프로세서 모드에서는 상기 코어스 그레인 어레이(310)에서 상기 프로세싱 엘리먼트들(380)만 동작하고, 나머지 프로세싱 엘리먼트들은 동작하지 않는다. 본 발명은 코어스 그레인 어레이(310)에 포함된 복수 개의 프로세싱 엘리먼트들 중 미리 선정된 일부의 프로세싱 엘리먼트들(380)을 호스트 프로세서로 사용한다. 따라서, 통상의 인스트럭션들은 코어스 그레인 어레이(310) 중 선택된 일부의 프로세싱 엘리먼트(380)에서 수행되고, 루프와 같이 반복 수행이 필요한 인스트럭션들은 상기 프로세싱 엘리먼트(380)를 포함한 전체 코어스 그레인 어레이(310)에서 수행된다.
본 발명은 인스트럭션 셋 프로세서 모드에서 사용되는 프로세싱 엘리먼트들(380)에 포함된 레지스터 파일들 각각에 대응하여 복수 개의 새도우 레지스터 파일들(shadow register files)을 포함한다. 즉, 어레이 모드와 인스트럭션 셋 프로세 서 모드에서 공통적으로 사용되는 프로세싱 유닛들(380)은 각각 계산 유닛, 레지스터 파일 및 새도우 레지스터 파일을 포함하고 있다. 예를 들어, 프로세싱 엘리먼트(311)는 레지스터 파일(313)과 레지스터 파일(313)에 대응하는 새도우 레지스터 파일(314)을 포함한다. 상기 복수 개의 새도우 레지스터 파일들(314)은 예외 처리(exception handling)의 수행 시 사용되고, 상기 복수 개의 프로세싱 엘리먼트들 중 미리 선정된 일부의 프로세싱 엘리먼트(380)에 포함된 레지스터 파일들(313)은 예외 처리(exception handling)의 수행 시 사용되지 않는다. 상기 복수 개의 프로세싱 엘리먼트들 중 미리 선정된 일부의 프로세싱 엘리먼트들(380)에 포함된 레지스터 파일들을 사용할 때는 상기 복수 개의 새도우 레지스터 파일들을 사용하지 않고, 상기 복수 개의 새도우 레지스터 파일을 사용할 때는 상기 복수 개의 프로세싱 엘리먼트들 중 미리 선정된 일부의 프로세싱 엘리먼트들(380)에 포함된 레지스터 파일들을 사용하지 않는다.
코어스 그레인 어레이(310)에 포함된 프로세싱 엘리먼트들 중 인스트럭션 셋 프로세서 모드에서도 사용되는 프로세싱 유닛들(380)만 새도우 레지스터 파일을 포함하고, 다른 프로세싱 유닛들은 새도우 레지스터 파일을 포함하지 않는다. 따라서, 본 발명에 따르면, 코어스 그레인 어레이에서 어레이의 크기가 커진다고 하여도 추가로 필요한 새도우 레지스터 파일의 수는 그렇게 증가하지 않는다.
중앙 레지스터 파일(central register file)(370)은 복수 개의 레지스터 파일들을 포함한다. 중앙 레지스터 파일(370)은 코어스 그레인 어레이(310)의 외부에 위치하고, CGA(310)에서 계산된 중간 값들을 저장한다.
새도우 중앙 레지스터 파일(shadow central register file)(375)은 중앙 레지스터 파일(370)에 포함된 상기 복수 개의 레지스터 파일들에 각각 대응하는 복수 개의 레지스터 파일들을 포함한다. 새도우 중앙 레지스터 파일(375)은 예외 처리(exception handling)의 수행 시 사용되고, 중앙 레지스터 파일(370)은 예외 처리(exception handling)의 수행 시 사용되지 않는다. 즉, 중앙 레지스터 파일(370)을 사용할 때는 새도우 중앙 레지스터 파일(375)을 사용하지 않고, 새도우 중앙 레지스터 파일(375)을 사용할 때는 중앙 레지스터 파일(370)을 사용하지 않는다.
위에서 설명한 바와 같이, 중앙 레지스터 파일 및 인스트럭션 셋 프로세서 모드에서 사용되는 프로세싱 엘리먼트들(코어스 그레인 어레이에 포함된 복수 개의 프로세싱 엘리먼트들 중 미리 선정된 일부의 프로세싱 엘리먼트들)에 포함된 레지스터 파일들은 예외 처리의 수행 시 사용되지 않고, 새도우 중앙 레지스터 파일 및 복수 개의 새도우 레지스터 파일들이 예외 처리(exception handling)의 수행 시 사용된다.
예를 들어, 코어스 그레인 어레이(310)의 프로세싱 엘리먼트들을 수행시키는 어레이 모드에서 예외가 발생한 경우, 본 발명은 코어스 그레인 어레이(310)의 프로세싱 엘리먼트들의 동작을 멈추고(freeze), 미리 선정된 일부의 프로세싱 엘리먼트들(310)에 포함된 계산 유닛들(function units)이 새도우 중앙 레지스터 파일(375) 및 복수 개의 새도우 레지스터 파일들을 이용하여 상기 예외에 대한 처리를 수행한다. 그리고, 예외에 대한 처리가 종료된 후, 본 발명은 코어스 그레인 어레이(310)의 프로세싱 엘리먼트들의 동작을 재시작(restart)한다. 따라서, 예외의 처리 시 새도우 레지스터들을 이용하여 수행되므로, 예외 발생 시 저장하고 있었던 중앙 레지스터 파일 및 레지스터 파일들의 값들을 별도로 메모리에 저장할 필요가 없다. 즉, 예외에 대한 처리가 종료된 후 코어스 그레인 어레이(310)의 프로세싱 엘리먼트들에 포함된 레지스터 파일들에 저장된 값(value)은 예외의 발생 전에 상기 프로세싱 엘리먼트들에 포함된 레지스터 파일들에 저장된 값(value)과 동일하다. 따라서, 예외의 처리 후 단지 코어스 그레인 어레이(310)를 재시작함으로써, 중단되었던 태스크를 계속 수행할 수 있게 되는 것이다. 따라서, 본 발명에 따르면, 예외가 발생하여도, 어레이 모드에서 수행되었던 태스크들의 중간 계산 값들을 무효화시키지 않고, 그대로 사용할 수 있다.
인스트럭션 셋 프로세서 모드에서 예외가 발생한 경우도 마찬가지이다. 이 경우, 본 발명은 인스트럭션 셋 프로세서 모드를 수행하던 계산 유닛들이 레지스터 파일들 대신 새도우 레지스터 파일을 이용하여 예외를 처리한다. 상기 예외에 대한 처리가 종료된 후, 미리 선정된 일부의 프로세싱 엘리먼트들(380)에 포함된 계산 유닛들(function units)이 상기 중앙 레지스터 파일 및 상기 미리 선정된 일부의 프로세싱 엘리먼트에 포함된 레지스터 파일들을 이용하여 중단되었던 태스크의 수행을 재개한다.
구성 메모리(configuration memory)(320)는 코어스 그레인 어레이(310)의 구성(configuration)에 관한 정보를 저장한다. 구성 메모리(320)에 저장된 구성(configuration)에 따라, 코어스 그레인 어레이(310)은 자신에 포함된 프로세싱 엘리먼트들 사이의 연결 상태를 변경한다. 또한, 본 발명의 일실시예에 따르면, 구 성 메모리(320)에 저장된 구성(configuration)에 따라, 코어스 그레인 어레이(310)은 자신에 포함된 프로세싱 엘리먼트들 사이의 연결 상태뿐 아니라, 프로세싱 엘리먼트에 포함된 계산 유닛의 함수(function)를 정의할 수도 있다. 예를 들어, 프로세싱 엘리먼트(311)에 포함된 계산 유닛에 대해 덧셈 연산을 수행하는 계산 유닛으로 설정하였다가 곱셈 연산을 수행하는 계산 유닛으로 변경할 수 있다.
루프 연산과 같이 반복적인 계산을 수행하는 연산은, 구성 메모리(320)에 저장된 하나의 설정을 통해 CGA(310)의 구성을 변경한 후, 루프 연산을 반복 수행함으로써 처리된다. 상기 루프 연산의 종료된 후 새로운 루프 연산을 수행하여야 하는 경우에는, 상기 새로운 루프 연산의 수행을 위한 설정으로 CGA(310)의 구성(configuration)이 변경된다. 이와 같이, CGA(310)의 구성에 관한 정보를 저장하는 메모리가 구성 메모리(320)이다.
데이터 메모리(330)는 코어스 그레인 어레이(310)의 외부에 위치하여 데이터를 저장하고, 인스트럭션 메모리(340)은 코어스 그레인 어레이(310)의 외부에 위치하여 인스트럭션을 저장한다.
또한, 코어스 그레인 어레이(310) 중 일부의 프로세싱 엘리먼트(380)를 호스트 프로세서로 사용할 때 VLIW(very long instruction word) 아키텍처를 이용할 수도 있다. 이 경우, 인스트럭션 페치/디코더(instruction fetch/decoder)(360), 중앙 레지스터 파일(370) 및 일부의 프로세싱 엘리먼트들(380)이 VLIW 아키텍처(350)를 구성한다.
도 4는 본 발명에 따라 레지스터 파일과 새도우 레지스터 파일을 선택하는 구성을 도시한 블록도이다.
본 발명은 인스트럭션 셋 프로세서 모드에서 사용되는 프로세싱 엘리먼트들(380)에 포함된 레지스터 파일들 각각에 대응하여 복수 개의 새도우 레지스터 파일들(shadow register files)을 포함한다. 상기 프로세싱 엘리먼트들(380)의 계산 유닛들은 상기 레지스터 파일들을 이용하여 어레이 모드 및 인스트럭션 셋 프로세서 모드를 수행하다가, 예외가 발생하면, 상기 레지스터 파일들의 값은 그대로 둔 채, 새도우 레지스터 파일을 이용하여 예외를 처리한다. 그리고, 예외에 대한 처리가 끝나면, 다시 상기 레지스터 파일들을 이용하여 중단되었던 태스크의 수행을 재개(resume)한다.
도 4는 하나의 프로세싱 엘리먼트에 포함된 레지스터 파일(420)과 새도우 레지스터 파일(430)을 도시한 것이다. 예외가 발생하지 않은 경우, 선택기(selector)(410)는 레지스터 파일(420)을 인에이블(enable)시키고, 새도우 레지스터 파일(430)은 디스에이블(disable)시킨다. 그러면, 프로세싱 엘리먼트에 포함된 계산 유닛은 레지스터 파일(420)을 이용하여 동작한다(operate). 그리고, 선택기(440)가 레지스터 파일(420)을 선택하여 레지스터 파일(420)의 값이 출력되게 한다. 그러다가, 예외가 발생하면, 선택기(410)는 새도우 레지스터 파일(430)을 선택한다. 이때, 레지스터 파일(420)에 저장된 값은 그대로 유지된다. 프로세싱 엘리먼트에 포함된 계산 유닛은 새도우 레지스터 파일(430)을 이용하여 동작하고, 선택기(440)에 의하여 계산 결과를 출력한다.
도 3을 참조하면, CGA에 포함된 복수 개의 프로세싱 엘리먼트들 중 미리 선 정된 일부의 프로세싱 엘리먼트(380)에 포함된 레지스터 파일들을 사용할 때는 복수 개의 새도우 레지스터 파일들을 사용하지 않고, 상기 복수 개의 새도우 레지스터 파일을 사용할 때는 상기 복수 개의 프로세싱 엘리먼트들 중 미리 선정된 일부의 프로세싱 엘리먼트(380)에 포함된 레지스터 파일들을 사용하지 않는다.
중앙 레지스터 파일(370) 및 새도우 중앙 레지스터 파일(375)도, 앞에서 설명한 레지스터 파일(420) 및 새도우 레지스터 파일(430)의 동작과 마찬가지로 동작할 수 있다. 즉, 중앙 레지스터 파일(370)을 사용할 때는 새도우 중앙 레지스터 파일(375)을 사용하지 않고, 새도우 중앙 레지스터 파일(375)을 사용할 때는 중앙 레지스터 파일(370)을 사용하지 않는다. 예외의 처리 중인지 아닌지에 따라 중앙 레지스터 파일 및 새도우 중앙 레지스터 파일 중 하나만을 사용하는 것이다.
다시 도 3을 참조하여 추가적으로 설명한다. 어레이 모드에서, 프로세서는 코어스 그레인 어레이(310)에 포함된 계산 유닛들이 코어스 그레인 어레이(310)에 포함된 레지스터 파일들 및 중앙 레지스터 파일(370)을 이용하여 동작한다. 인스트럭션 셋 프로세서 모드에서, 프로세서는 코어스 그레인 어레이(310)에 포함된 복수 개의 프로세싱 엘리먼트들 중 미리 선정된 일부의 프로세싱 엘리먼트들(380)의 계산 유닛들이 상기 프로세싱 엘리먼트들(380)의 레지스터 파일들 및 중앙 레지스터 파일(370)을 이용하여 동작한다. 예외가 발생하면, 프로세서는 코어스 그레인 어레이(310)에 포함된 복수 개의 프로세싱 엘리먼트들 중 미리 선정된 일부의 프로세싱 엘리먼트들(380)의 계산 유닛들이 상기 프로세싱 엘리먼트들(380)의 새도우 레지스터 파일들 및 새도우 중앙 레지스터 파일(375)을 이용하여 동작한다.
도 5는 예외가 발생한 경우에 따른 예외 처리를 설명하기 위한 도면이다.
실시간 운영체제(real-time operating system)에서는 많은 인터럽트 예외(interrupt exception)가 발생한다. 예를 들어, 타이머 인터럽트(timer interrupt)(약 1ms), 이더넷 인터럽트(Ethernet interrupt)가 있다. 그리고, MPEG-1 오디오 레이어 3의 경우에는 26ms 주기의 작업 스케줄링이 필요하고, NTSC(National Television System Committee) 형식의 비디오 데이터는 33ms 주기의 작업 스케줄링이 필요하다.
그런데, 발생되는 예외 중 상기 예외(exception)의 발생시 수행 중이던 작업(task)의 스케줄링에 영향을 미치지 않는 예외인 경우가 있다. 도 5의 (a)에서 예외 A는, 예외 A의 처리에 의하여 현재 수행 중이던 작업 T1을 작업 T2로 교환(switching)하여야 하는 예외이다. 이 경우, 도 5의 (b)에 도시된 바와 같이, 작업 T1을 수행하다가 예외 처리 루틴(ESR: exception service routine)을 처리한 후 작업 T2를 수행하게 된다. 이 경우, 작업 T1이 코어스 그레인 어레이(310)를 이용하여 처리되어야 한다면, 코어스 그레인 어레이(310)에 포함된 모든 레지스터 파일들 및 중앙 레지스터 파일의 문맥(context)이 저장되어야 한다. 또한, 작업 T1이 인스트럭션 셋 프로세서 모드에서 수행된 경우에도, 인스트럭션 셋 프로세서 모드에서 사용되는 프로세싱 엘리먼트들(380)의 레지스터 파일들과 중앙 레지스터 파일의 문맥이 저장되어야 한다. 왜냐하면, 예외 발생에도 불구하고, 작업 T1이 계속 수행되는 것이 아니고, 작업 교환이 수행되어야 하기 때문이다.
도 5의 (a)에서 예외 B의 경우는, 예외 B를 처리하여도 현재 수행중인 작업 T2를 다른 작업으로 교환할 필요가 없는 경우이다. 도 5의 (c)에서 보는 바와 같이, 작업 T2 수행 중 예외가 발생하여도, 작업 교환은 발생하지 않는다.
실제로 앞에서 설명한 실시간 운영체제에서 발생하는 예외 중 상당수는 이와 같이 작업 교환이 필요 없는 예외이다. 따라서, 이러한 예외들에 대해서도 문맥 교환(context switching)을 수행하는 것은 커다란 오버헤드가 된다. 특히 재구성 아키텍처의 경우, 어레이에 포함된 레지스터 파일들의 수가 매우 많기 때문에, 문맥의 크기도 매우 크고, 그에 따라 문맥 교환의 오버헤드가 매우 크다.
본 발명은 예외가 발생하면, 상기 미리 선정된 일부의 프로세싱 엘리먼트들(380)에 포함된 계산 유닛들(function units)이 새도우 중앙 레지스터 파일(375) 및 상기 선정된 일부의 프로세싱 엘리먼트들(380)에 포함된 복수 개의 새도우 레지스터 파일들을 이용하여 상기 예외에 대한 처리를 수행한다. 이때 상기 예외가 예외의 발생으로 인하여 현재 수행 중이던 작업의 교환(switching)이 발생하지 않는 예외이면, 문맥 교환을 수행하지 않아도 되므로, 본 발명에 따르면, 문맥 교환에 의한 오버헤드를 줄일 수 있다.
도 6은 본 발명에 따라 재구성 아키텍처에서 예외를 처리하는 방법의 순서를 도시한 흐름도이다. 본 발명에 따른 프로세서는 복수 개의 프로세싱 엘리먼트들(processing elements)을 포함하는 코어스 그레인 어레이(coarse grained array)(310) 및 복수 개의 레지스터 파일들을 포함한 중앙 레지스터 파일(central register file)(370)을 포함한다.
단계(601)에서 상기 프로세서는 태스크를 수행하고 있다. 상기 태스크는 상 기 태스크의 성격에 따라, 어레이 모드 또는 인스트럭션 셋 프로세서 모드에서 수행된다. 루프와 같이 반복적인 동작이 필요한 태스크는 어레이 모드에서 처리된다.
단계(602)에서 예외가 발생한다. 그러면, 단계(603)에서 프로세서는 상기 예외가 코어스 그레인 어레이(310)의 프로세싱 엘리먼트들을 수행시키는 어레이 모드에서 발생한 것인지를 판단한다.
단계(603)의 판단 결과, 상기 예외가 어레이 모드(array mode)에서 발생하였으면, 코어스 그레인 어레이(310)의 프로세싱 엘리먼트들의 동작을 멈춘다. 즉, 코어스 그레인 어레이(310)를 프리즈(freeze)한다. 그러면, 코어스 그레인 어레이(310)에 포함된 레지스터 파일들에 저장된 값들은 그대로 유지되고, 메모리 등 다른 저장 매체에 별도로 저장되지 않는다.
단계(603)의 판단 결과, 상기 예외가 인스트럭션 셋 프로세서 모드에서 발생하였으면, 단계(605)에서 프로세서는 새도우 문맥으로 전환하고, 단계(606)에서 인스트럭션 셋 프로세서 모드로 바꾸고, 단계(607)에서 예외에 대한 처리를 수행한다. 이때, 상기 예외가 상기 예외의 발생으로 인하여 현재 수행 중이던 작업의 교환(switching)이 발생하지 않는 예외이면, 예외의 처리 후 문맥 교환을 수행하지 않아도 된다. 또한, 어레이 모드인 경우도 단계(604)를 수행한 후, 단계(605), 단계(606) 및 단계(607)를 수행한다. 즉, 코어스 그레인 어레이(310)의 복수 개의 프로세싱 엘리먼트들 중 미리 선정된 일부의 프로세싱 엘리먼트들(380)에 포함된 계산 유닛들(function units)이 새도우 중앙 레지스터 파일(375) 및 복수 개의 새 도우 레지스터 파일들을 이용하여 상기 예외에 대한 처리를 수행한다. 예외의 처리시 새도우 레지스터 파일 및 새도우 중앙 레지스터 파일을 이용하기 때문에, CGA의 레지스터 파일들 및 중앙 레지스터 파일에 저장된 값을 별도로 저장할 필요가 없다. 따라서, 상기 예외에 대한 상기 처리의 전후에 상기 중앙 레지스터 파일의 값 및 상기 복수 개의 프로세싱 엘리먼트들 중 미리 선정된 일부의 프로세싱 엘리먼트에 포함된 상기 레지스터 파일들의 값은 변경되지 않는다.
상기 새도우 중앙 레지스터 파일은, 상기 중앙 레지스터 파일에 포함된 상기 복수 개의 레지스터 파일들에 각각 대응하는 복수 개의 레지스터 파일들을 포함한다. 상기 복수 개의 새도우 레지스터 파일들의 각각은, 상기 복수 개의 프로세싱 엘리먼트들 중 미리 선정된 일부의 프로세싱 엘리먼트에 포함된 레지스터 파일들 각각에 대응한다.
예외에 대한 처리가 종료되었으면, 단계(608)에서 상기 예외가 어레이 모드(array mode)에서 발생한 것이었는지 또는 인스트럭션 셋 프로세서 모드에서 발생한 것이었는지 여부를 판단한다. 만약 상기 예외가 어레이 모드(array mode)에서 발생한 것이었으면, 단계(609)에서 코어스 그레인 어레이의 프로세싱 엘리먼트들의 동작을 재시작(restart)하고, 단계(610)에서 새도우 문맥으로부터 돌아와, 코어스 그레인 어레이가 예외의 발생 전 수행하고 있었던 작업들의 수행을 재개(resume)하도록 한다. 이때 코어스 그레인 어레이의 레지스터 파일들 및 중앙 레지스터 파일에는 예외가 발생하여 코어스 그레인 어레이의 동작이 중단되었을 때의 값들이 그대로 저장되어 있기 때문에, 코어스 그레인 어레이는 이어지는 동작(successive operation)을 수행함으로써, 중단되었던 작업을 완료할 수 있게 된다.
단계(608)의 판단 결과, 상기 예외가 인스트럭션 셋 프로세서 모드에서 발생한 것이었으면, 단계(610)에서 새도우 문맥으로부터 돌아와, 원래의 작업을 수행한다. 즉, 상기 예외에 대한 처리가 종료된 후, 미리 선정된 일부의 프로세싱 엘리먼트에 포함된 계산 유닛들(function units)이 중앙 레지스터 파일(370) 및 상기 미리 선정된 일부의 프로세싱 엘리먼트(380)에 포함된 레지스터 파일들을 이용하여 동작(operation)을 수행한다. 어레이 모드인 경우와 마찬가지로, 예외가 발생하여 중단되었을 때의 값들이 중앙 레지스터 파일(370) 및 상기 미리 선정된 일부의 프로세싱 엘리먼트(380)에 포함된 레지스터 파일들의 값들은 그대로 유지되어 있기 때문에, 상기 레지스터 파일들을 이용하여 계산 유닛들이 동작을 수행함으로써, 중단되었던 작업을 완료할 수 있다.
또한 본 발명의 실시예들은 다양한 컴퓨터로 구현되는 동작을 수행하기 위한 프로그램 명령을 포함하는 컴퓨터 판독 가능 매체를 포함한다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 상기 매체는 프로그램 명령, 데이터 구조 등을 지정하는 신호를 전송하는 반송파를 포함하는 광 또는 금속선, 도파관 등의 전송 매체일 수도 있다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다. 예를 들어, 이상에서 본 발명은 코어스 그레인 어레이가 강결합(tightly-coupled)되어 있는 경우를 중심으로 설명하였으나, 본 발명은 코어스 그레인 어레이를 포함한 다른 형태의 재구성 아키텍처(reconfigurable architecture)에도 적용 가능하다.
상술한 바와 같이 본 발명에 따른 프로세서는, 강결합 코어스 그레인 어레이 아키텍처에서 예외가 발생한 경우, 이를 효율적으로 처리할 수 있다. 또한, 본 발명에 따르면, 강결합 코어스 그레인 어레이 아키텍처가 어레이 모드 또는 인스트럭션 셋 프로세서 모드로 동작하던 중 예외가 발생한 경우 문맥을 저장하고 복구하는 비용을 절감할 수 있다.
또한, 어레이 구조의 경우, 문맥의 크기가 매우 커서, 문맥의 저장 및 복구 비용이 매우 큰데, 본 발명에 따르면, 작업의 스케줄링과 직접적인 관련이 없는 예외에 대하여 문맥을 저장 및 복구하지 않고서도 예외를 처리할 수 있도록 함으로써, 문맥 교환에 따른 오버헤드를 매우 줄일 수 있다.
또한, 실시간 운영체제의 경우 많은 인터럽트 예외를 처리하여야 하기 때문에, 문맥 교환의 오버헤드가 큰 재구성 아키텍처를 실시간 운영체제에 채택하는데 어려움이 있었다. 그러나, 본 발명에 따르면, 실시간 운영체제에서 발생하는 상당수의 인터럽트 예외를 문맥의 저장 및 복구를 수행하지 않고서도 처리할 수 있도록 함으로써, 재구성 아키텍처를 실시간 운영체제에 적용할 수 있다.
또한, 실시간 운영체제의 경우 예외 처리가 빠른 시간 내에 수행되어야 하는데, 어레이 구조에서 큰 문맥을 저장한 후 예외를 처리하려면 상기 예외를 빠른 시간 내에 처리하기 어려운 점이 있다. 그러나, 본 발명에 따르면, 예외가 발생하면 바로 새도우 문맥으로 전환하여 예외를 처리하기 때문에, 신속하게 예외를 처리할 수 있다.
또한, 본 발명에 따라 추가되는 새도우 레지스터 파일들 및 새도우 중앙 레지스터는 코어스 그레인 어레이의 전체 레지스터 파일들의 전체 크기에 비하여 매우 작기 때문에, 큰 사이즈의 코어스 그레인 어레이에 본 발명을 적용하여도 추가되는 새도우 레지스터 파일들 및 새도우 중앙 레지스터의 크기는 매우 작다. 즉, 본 발명에 따르면, 예외 처리를 위하여 인스트럭션 셋 프로세서 모드에서 사용하는 자원의 크기는 재구성 어레이(reconfigurable array)의 문맥(context)의 크기(size)와는 무관하다. 따라서, 본 발명은 큰 사이즈의 코어스 그레인 어레이를 포 함한 재구성 아키텍처에도 적용될 수 있다.

Claims (21)

  1. 복수 개의 프로세싱 엘리먼트들(processing elements)을 포함하는 코어스 그레인 어레이(coarse grained array);
    복수 개의 레지스터 파일들을 포함한 중앙 레지스터 파일(central register file);
    상기 중앙 레지스터 파일에 포함된 상기 복수 개의 레지스터 파일들에 각각 대응하는 복수 개의 레지스터 파일들을 포함한 새도우 중앙 레지스터 파일(shadow central register file); 및
    상기 복수 개의 프로세싱 엘리먼트들 중 미리 선정된 일부의 프로세싱 엘리먼트에 포함된 레지스터 파일들 각각에 대응하는 복수 개의 새도우 레지스터 파일들(shadow register files)
    을 포함하는 것을 특징으로 하는 프로세서.
  2. 제1항에 있어서,
    상기 새도우 중앙 레지스터 파일 및 상기 복수 개의 새도우 레지스터 파일들은 예외 처리(exception handling)의 수행 시 사용되는 것을 특징으로 하는 프로세서.
  3. 제2항에 있어서,
    상기 중앙 레지스터 파일 및 상기 복수 개의 프로세싱 엘리먼트들 중 미리 선정된 일부의 프로세싱 엘리먼트에 포함된 레지스터 파일들은 예외 처리(exception handling)의 수행 시 사용되지 않는 것을 특징으로 하는 프로세서.
  4. 제2항에 있어서,
    상기 예외는 상기 예외(exception)의 발생시 수행 중이던 작업(task)의 스케줄링에 영향을 미치지 않는 예외인 것을 특징으로 하는 프로세서.
  5. 제1항에 있어서,
    예외가 발생하면, 상기 미리 선정된 일부의 프로세싱 엘리먼트에 포함된 계산 유닛들(function units)이 상기 새도우 중앙 레지스터 파일 및 상기 복수 개의 새도우 레지스터 파일들을 이용하여 상기 예외에 대한 처리를 수행하는 것을 특징으로 하는 프로세서.
  6. 제5항에 있어서,
    상기 코어스 그레인 어레이의 프로세싱 엘리먼트들을 수행시키는 어레이 모드에서 상기 예외가 발생하였으면, 상기 코어스 그레인 어레이의 상기 프로세싱 엘리먼트들의 동작을 멈추고(freeze), 상기 미리 선정된 일부의 프로세싱 엘리먼트에 포함된 계산 유닛들(function units)이 상기 새도우 중앙 레지스터 파일 및 상기 복수 개의 새도우 레지스터 파일들을 이용하여 상기 예외에 대한 처리를 수행하는 것을 특징으로 하는 프로세서.
  7. 제6항에 있어서,
    상기 예외에 대한 처리가 종료된 후, 상기 코어스 그레인 어레이의 상기 프로세싱 엘리먼트들의 동작을 재시작(restart)하는 것을 특징으로 하는 프로세서.
  8. 제7항에 있어서,
    상기 예외에 대한 처리가 종료된 후 코어스 그레인 어레이의 상기 프로세싱 엘리먼트들에 포함된 레지스터 파일들에 저장된 값(value)은 상기 예외의 발생 전에 상기 프로세싱 엘리먼트들에 포함된 레지스터 파일들에 저장된 값(value)과 동일한 것을 특징으로 하는 프로세서.
  9. 제5항에 있어서,
    상기 미리 선정된 일부의 프로세싱 엘리먼트들을 수행시키는 인스트럭션 셋 프로세서 모드에서 상기 예외가 발생하였으면, 상기 예외에 대한 처리가 종료된 후, 상기 미리 선정된 일부의 프로세싱 엘리먼트에 포함된 계산 유닛들(function units)이 상기 중앙 레지스터 파일 및 상기 미리 선정된 일부의 프로세싱 엘리먼트에 포함된 레지스터 파일들을 이용하여 동작(operation)을 수행하는 것을 특징으로 하는 프로세서.
  10. 제1항에 있어서,
    상기 중앙 레지스터 파일을 사용할 때는 상기 새도우 중앙 레지스터 파일을 사용하지 않고, 상기 새도우 중앙 레지스터 파일을 사용할 때는 상기 중앙 레지스터 파일을 사용하지 않는 것을 특징으로 하는 프로세서.
  11. 제1항에 있어서,
    상기 복수 개의 프로세싱 엘리먼트들 중 미리 선정된 일부의 프로세싱 엘리먼트에 포함된 레지스터 파일들을 사용할 때는 상기 복수 개의 새도우 레지스터 파일들을 사용하지 않고,
    상기 복수 개의 새도우 레지스터 파일을 사용할 때는 상기 복수 개의 프로세싱 엘리먼트들 중 미리 선정된 일부의 프로세싱 엘리먼트에 포함된 레지스터 파일들을 사용하지 않는 것을 특징으로 하는 프로세서.
  12. 제1항에 있어서,
    어레이 모드에서는 상기 코어스 그레인 어레이의 프로세싱 엘리먼트들을 수행시키고, 인스트럭션 셋 프로세서 모드에서는 상기 미리 선정된 일부의 프로세싱 엘리먼트들을 수행시키는 것을 특징으로 하는 프로세서.
  13. 제1항에 있어서,
    상기 프로세싱 엘리먼트의 각각은 하나의 계산 유닛(function unit) 및 하나 의 레지스터 파일(register file)을 포함하는 것을 특징으로 하는 프로세서.
  14. 복수 개의 프로세싱 엘리먼트들(processing elements)을 포함하는 코어스 그레인 어레이(coarse grained array) 및 복수 개의 레지스터 파일들을 포함한 중앙 레지스터 파일(central register file)를 포함하는 프로세서에서 예외를 처리하는 방법에 있어서,
    상기 복수 개의 프로세싱 엘리먼트들 중 미리 선정된 일부의 프로세싱 엘리먼트에 포함된 계산 유닛들(function units)이 새도우 중앙 레지스터 파일 및 복수 개의 새도우 레지스터 파일들을 이용하여 상기 예외에 대한 처리를 수행하는 단계
    를 포함하는 것을 특징으로 하는 재구성 아키텍처에서의 예외 처리 방법.
  15. 제14항에 있어서, 상기 새도우 중앙 레지스터 파일은,
    상기 중앙 레지스터 파일에 포함된 상기 복수 개의 레지스터 파일들에 각각 대응하는 복수 개의 레지스터 파일들을 포함하는 것을 특징으로 하는 재구성 아키텍처에서의 예외 처리 방법.
  16. 제14항에 있어서, 상기 복수 개의 새도우 레지스터 파일들의 각각은,
    상기 복수 개의 프로세싱 엘리먼트들 중 미리 선정된 일부의 프로세싱 엘리먼트에 포함된 레지스터 파일들 각각에 대응하는 것을 특징으로 하는 재구성 아키텍처에서의 예외 처리 방법.
  17. 제14항에 있어서,
    상기 예외에 대한 상기 처리의 전후에 상기 중앙 레지스터 파일의 값 및 상기 복수 개의 프로세싱 엘리먼트들 중 미리 선정된 일부의 프로세싱 엘리먼트에 포함된 상기 레지스터 파일들의 값은 변경되지 않는 것을 특징으로 하는 프로세서.
  18. 제14항에 있어서,
    상기 예외가 코어스 그레인 어레이의 프로세싱 엘리먼트들을 수행시키는 어레이 모드에서 발생한 것인지를 판단하는 단계; 및
    상기 예외가 어레이 모드에서 발생하였으면, 상기 코어스 그레인 어레이의 상기 프로세싱 엘리먼트들의 동작을 멈추는 단계
    를 더 포함하는 것을 특징으로 하는 재구성 아키텍처에서의 예외 처리 방법.
  19. 제18항에 있어서,
    상기 예외에 대한 처리가 종료된 후, 상기 코어스 그레인 어레이의 상기 프로세싱 엘리먼트들의 동작을 재시작(restart)하는 단계
    를 더 포함하는 것을 특징으로 하는 재구성 아키텍처에서의 예외 처리 방법.
  20. 제14항에 있어서,
    상기 예외가 상기 미리 선정된 일부의 프로세싱 엘리먼트들을 수행시키는 인 스트럭션 셋 프로세서 모드에서 상기 예외가 발생한 것인지를 판단하는 단계; 및
    상기 예외가 인스트럭션 셋 프로세서 모드에서 발생하였으면, 상기 예외에 대한 처리가 종료된 후, 상기 미리 선정된 일부의 프로세싱 엘리먼트에 포함된 계산 유닛들(function units)이 상기 중앙 레지스터 파일 및 상기 미리 선정된 일부의 프로세싱 엘리먼트에 포함된 레지스터 파일들을 이용하여 동작(operation)을 수행하는 단계
    를 더 포함하는 것을 특징으로 하는 재구성 아키텍처에서의 예외 처리 방법.
  21. 제14항 내지 제20항 중 어느 한 항의 방법을 수행하는 프로그램을 기록한 컴퓨터 판독 가능 기록매체.
KR1020050131776A 2005-12-28 2005-12-28 재구성 아키텍처에서의 예외 처리 방법 및 장치 KR100663709B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020050131776A KR100663709B1 (ko) 2005-12-28 2005-12-28 재구성 아키텍처에서의 예외 처리 방법 및 장치
US11/487,407 US9152418B2 (en) 2005-12-28 2006-07-17 Apparatus and method of exception handling for reconfigurable architecture

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050131776A KR100663709B1 (ko) 2005-12-28 2005-12-28 재구성 아키텍처에서의 예외 처리 방법 및 장치

Publications (1)

Publication Number Publication Date
KR100663709B1 true KR100663709B1 (ko) 2007-01-03

Family

ID=37866644

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050131776A KR100663709B1 (ko) 2005-12-28 2005-12-28 재구성 아키텍처에서의 예외 처리 방법 및 장치

Country Status (2)

Country Link
US (1) US9152418B2 (ko)
KR (1) KR100663709B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101335001B1 (ko) 2007-11-07 2013-12-02 삼성전자주식회사 프로세서 및 인스트럭션 스케줄링 방법
KR20140102581A (ko) * 2012-07-19 2014-08-22 삼성전자주식회사 재구성 프로세서에서 충돌 해결을 가속화하기 위한 방법 및 시스템
KR20140126192A (ko) * 2013-04-22 2014-10-30 삼성전자주식회사 회전 레지스터 사이즈의 동적 설정을 위한 스케줄링 장치 및 방법
US9164769B2 (en) 2010-03-23 2015-10-20 Samsung Electronics Co., Ltd. Analyzing data flow graph to detect data for copying from central register file to local register file used in different execution modes in reconfigurable processing array

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101360191B1 (ko) * 2007-08-24 2014-02-07 삼성전자주식회사 코어스 그레인 어레이를 공유하는 방법 및 그 방법을이용한 프로세서
KR101511273B1 (ko) * 2008-12-29 2015-04-10 삼성전자주식회사 멀티 코어 프로세서를 이용한 3차원 그래픽 렌더링 방법 및시스템
KR20140126195A (ko) * 2013-04-22 2014-10-30 삼성전자주식회사 배치 쓰레드 처리 기반의 프로세서, 그 프로세서를 이용한 배치 쓰레드 처리 방법 및 배치 쓰레드 처리를 위한 코드 생성 장치
US10432247B2 (en) * 2017-03-20 2019-10-01 Intel IP Corporation Sequence triggering in RF front-ends
US11748024B2 (en) 2020-04-01 2023-09-05 Samsung Electronics Co., Ltd. Apparatus and method of managing registers based on register group

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5943494A (en) * 1995-06-07 1999-08-24 International Business Machines Corporation Method and system for processing multiple branch instructions that write to count and link registers
US5987601A (en) * 1997-02-14 1999-11-16 Xyron Corporation Zero overhead computer interrupts with task switching
WO2000026772A1 (en) 1998-10-30 2000-05-11 Telefonaktiebolaget Lm Ericsson Processing arrangements
JP2001134449A (ja) * 1999-11-05 2001-05-18 Fujitsu Ltd データ処理装置とその制御方法
KR20010055463A (ko) * 1999-12-10 2001-07-04 서평원 하드와이어드 태스크 스케쥴러 및 그 태스크 스케쥴러의스케쥴링 방법
KR20010082982A (ko) * 2000-02-22 2001-08-31 윤종용 확장된 인터럽트 벡터를 사용하는 인터럽트 제어 시스템및 인터럽트 제어 방법

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5165038A (en) * 1989-12-29 1992-11-17 Supercomputer Systems Limited Partnership Global registers for a multiprocessor system
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
US6128728A (en) * 1997-08-01 2000-10-03 Micron Technology, Inc. Virtual shadow registers and virtual register windows
KR100243100B1 (ko) * 1997-08-12 2000-02-01 정선종 다수의 주프로세서 및 보조 프로세서를 갖는 프로세서의구조 및 보조 프로세서 공유 방법
DE69827589T2 (de) * 1997-12-17 2005-11-03 Elixent Ltd. Konfigurierbare Verarbeitungsanordnung und Verfahren zur Benutzung dieser Anordnung, um eine Zentraleinheit aufzubauen
US6842811B2 (en) * 2000-02-24 2005-01-11 Pts Corporation Methods and apparatus for scalable array processor interrupt detection and response
US7487339B2 (en) * 2001-10-12 2009-02-03 Mips Technologies, Inc. Method and apparatus for binding shadow registers to vectored interrupts
EP1658563B1 (en) * 2003-08-28 2013-06-05 MIPS Technologies, Inc. Apparatus, and method for initiation of concurrent instruction streams in a multithreading microprocessor
US7447873B1 (en) * 2005-11-29 2008-11-04 Nvidia Corporation Multithreaded SIMD parallel processor with loading of groups of threads

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5943494A (en) * 1995-06-07 1999-08-24 International Business Machines Corporation Method and system for processing multiple branch instructions that write to count and link registers
US5987601A (en) * 1997-02-14 1999-11-16 Xyron Corporation Zero overhead computer interrupts with task switching
WO2000026772A1 (en) 1998-10-30 2000-05-11 Telefonaktiebolaget Lm Ericsson Processing arrangements
JP2001134449A (ja) * 1999-11-05 2001-05-18 Fujitsu Ltd データ処理装置とその制御方法
KR20010055463A (ko) * 1999-12-10 2001-07-04 서평원 하드와이어드 태스크 스케쥴러 및 그 태스크 스케쥴러의스케쥴링 방법
KR20010082982A (ko) * 2000-02-22 2001-08-31 윤종용 확장된 인터럽트 벡터를 사용하는 인터럽트 제어 시스템및 인터럽트 제어 방법

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101335001B1 (ko) 2007-11-07 2013-12-02 삼성전자주식회사 프로세서 및 인스트럭션 스케줄링 방법
US9164769B2 (en) 2010-03-23 2015-10-20 Samsung Electronics Co., Ltd. Analyzing data flow graph to detect data for copying from central register file to local register file used in different execution modes in reconfigurable processing array
KR101738941B1 (ko) * 2010-03-23 2017-05-24 삼성전자주식회사 재구성 가능 어레이 및 재구성 가능 어레이의 제어 방법
KR20140102581A (ko) * 2012-07-19 2014-08-22 삼성전자주식회사 재구성 프로세서에서 충돌 해결을 가속화하기 위한 방법 및 시스템
KR102044784B1 (ko) 2012-07-19 2019-11-14 삼성전자주식회사 재구성 프로세서에서 충돌 해결을 가속화하기 위한 방법 및 시스템
KR20140126192A (ko) * 2013-04-22 2014-10-30 삼성전자주식회사 회전 레지스터 사이즈의 동적 설정을 위한 스케줄링 장치 및 방법
KR101998278B1 (ko) 2013-04-22 2019-10-01 삼성전자주식회사 회전 레지스터 사이즈의 동적 설정을 위한 스케줄링 장치 및 방법

Also Published As

Publication number Publication date
US20070150711A1 (en) 2007-06-28
US9152418B2 (en) 2015-10-06

Similar Documents

Publication Publication Date Title
KR100812346B1 (ko) 재구성 어레이에서의 인터럽트 처리 방법 및 장치
KR100663709B1 (ko) 재구성 아키텍처에서의 예외 처리 방법 및 장치
US7529917B2 (en) Method and apparatus for interrupt handling during loop processing in reconfigurable coarse grained array
KR102413832B1 (ko) 벡터 곱셈 덧셈 명령
EP0207665B1 (en) Bidirectional branch prediction and optimization
KR101622266B1 (ko) 재구성 가능 프로세서 및 이를 이용한 인터럽트 핸들링 방법
US8645955B2 (en) Multitasking method and apparatus for reconfigurable array
JP2645669B2 (ja) データ処理システム
US4782441A (en) Vector processor capable of parallely executing instructions and reserving execution status order for restarting interrupted executions
JP4484925B2 (ja) Simdデバイスにおける制御フロー管理のための方法及び装置
KR20110106717A (ko) 재구성 가능 어레이 및 재구성 가능 어레이의 제어 방법
WO2012105593A1 (ja) データフローグラフ処理装置、データフローグラフ処理方法およびデータフローグラフ処理プログラム
US20180107510A1 (en) Operation of a multi-slice processor implementing instruction fusion
JP2010262542A (ja) プロセッサ
KR20100089351A (ko) 재구성 가능 어레이의 인터럽트 핸들링을 위한 컴퓨팅 장치및 방법
US11481223B2 (en) Reducing operations of sum-of-multiply-accumulate (SOMAC) instructions
US20200034149A1 (en) Processor with multiple execution pipelines
US10963253B2 (en) Varying micro-operation composition based on estimated value of predicate value for predicated vector instruction
KR20070118543A (ko) 재구성 어레이를 위한 멀티태스킹 방법 및 장치
JP2876791B2 (ja) 例外処理装置および例外処理方法
US20210073000A1 (en) Reusing adjacent simd unit for fast wide result generation
CN115809121A (zh) 用于上下文切换的方法和装置
US20060294345A1 (en) Methods and apparatus for implementing branching instructions within a processor
KR100924383B1 (ko) 하드웨어/소프트웨어 통합 설계 기반의 스케줄링 시스템 및방법
JPH08166887A (ja) 割込み処理からの復帰方法

Legal Events

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

Payment date: 20121115

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20131122

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20141119

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20151118

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20161121

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20171121

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20181119

Year of fee payment: 13