KR20090023006A - 재구성 가능 하드웨어의 구성 메모리를 관리하는 방법 및장치 - Google Patents

재구성 가능 하드웨어의 구성 메모리를 관리하는 방법 및장치 Download PDF

Info

Publication number
KR20090023006A
KR20090023006A KR1020080006700A KR20080006700A KR20090023006A KR 20090023006 A KR20090023006 A KR 20090023006A KR 1020080006700 A KR1020080006700 A KR 1020080006700A KR 20080006700 A KR20080006700 A KR 20080006700A KR 20090023006 A KR20090023006 A KR 20090023006A
Authority
KR
South Korea
Prior art keywords
slot
state
memory
hardware
configuration information
Prior art date
Application number
KR1020080006700A
Other languages
English (en)
Other versions
KR101478648B1 (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 US12/076,276 priority Critical patent/US8402410B2/en
Publication of KR20090023006A publication Critical patent/KR20090023006A/ko
Application granted granted Critical
Publication of KR101478648B1 publication Critical patent/KR101478648B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Logic Circuits (AREA)

Abstract

본 발명은 하드웨어 구성정보에 따라 하드웨어의 구성이 재구성되는 재구성 가능 하드웨어의 구성 메모리를 관리하는 방법 및 장치에 관한 것으로, 구성 메모리의 복수 개의 슬롯들 각각의 상태에 기초하여 하드웨어 구성정보를 저장할 수 있는 적어도 하나의 슬롯을 결정하고, 하드웨어 구성정보를 저장할 수 있는 것으로 결정된 슬롯에 외부 메모리에 저장된 하드웨어 구성 정보를 저장한다.
재구성 가능 하드웨어, 구성 메모리

Description

재구성 가능 하드웨어의 구성 메모리를 관리하는 방법 및 장치{Method for reconfiguring hardware and hardware reconfigurable system using it}
본 발명은 재구성 가능 하드웨어의 구성 메모리를 관리하는 방법 및 장치에 관한 것으로, 특히 재구성 가능한 하드웨어의 구성 메모리(configuration memory)를 동적으로 관리하는 방법 및 장치에 관한 것이다.
특정한 전자, 정보통신 제품에 사용할 목적으로 설계된 비메모리 반도체 칩을 주문형 반도체(application specific integrated circuit,ASIC)라고 하며, 주문형 반도체 중에서도 논리 블럭(logic block)이라고 하는 프로그래밍이 가능한 논리 소자(Logic components)를 포함하고 있는 반도체를 FPGA(Field Programmable Gate Arry)라고 한다. 논리 블럭은 AND, XOR와 같은 기본적인 논리 게이트 외에도 디코더와 같은 복잡한 기능들을 수행하기 위해 프로그래밍 된다. FPGA의 경우에는 이미 설계된 하드웨어를 반도체로 생산하기 직전 최종적으로 하드웨어 동작 및 성능을 검증하기 위해 제작되기도 한다. FPGA(Field Programmable Gate Array)와 같은 반도체에서는 논리 소자들 간의 연결을 프로그램하는 것이 가능하기 때문에 매번 필요할 때, 논리 소자들 간의 연결을 프로그램하는 것이 가능하다. 여기에 한 발 더 나아가 최근에는 실시간으로 부분적인 회로가 다른 동작을 하도록 프로그램한다.
예전에는 FPGA(Field Programmable Gate Arry) 또는 CGA(Coarse Grained array)를 이용한 재구성 가능한 시스템은 일반 회로보다 동작이 10배 이상 느리고 연결이 안된 불필요한 소자가 많기 때문에 면적에서도 낭비가 심했다. 그래서 시제품을 개발하기 전에 에뮬레이션용으로 본 회로의 동작을 프로그램해서 검증하는데 사용하거나, 소량의 제품을 단기간에 개발하기 위한 제한된 용도로 사용되었다. 그러나, 최근에는 기술의 발달로 이러한 하드웨어가 속도나 면적 면에서 경쟁력을 가지게 되었다. 또한 시스템의 검증이 날로 중요해지고, 제품의 사양이 점점 빠른 주기로 바뀌어 가면서 재구성 가능한 시스템의 적용 범위가 점점 늘고 있다.
하드웨어 재구성 가능 시스템(reconfigurable system)이란, 프로그래밍을 이용하여 하드웨어 내부를 재구성할 수 있는 시스템을 말한다. 프로그래밍은 구성 메모리라고 불리는 메모리에 저장된 하드웨어 구성 정보를 이용하여 수행한다. 따라서 구성 메모리에 서로 다른 기능을 수행하는 하드웨어를 구성할 수 있는 복수의 하드웨어 구성 정보가 저장되어 있다면, 하드웨어 재구성 가능 시스템은 필요한 하드웨어 구성 정보를 이용하여 다양한 기능을 수행한다. 이러한 하드웨어 재구성 가능 시스템은 하드웨어의 장점인 성능과 소프트웨어의 장점인 유연성을 모두 갖고 있어서, 오늘날 애플리케이션(application)의 요구 사항을 잘 만족한다.
구성 메모리란(configuration memory), 하드웨어 재구성 가능 시스템에 포함된 하드웨어를 재구성할 수 있는 하드웨어 구성정보를 저장하고 있는 메모리로서, 재구성 가능한 하드웨어에 가장 빨리 접근할 수 있는 메모리를 말한다. 구성 메모 리에 새로운 하드웨어 구성정보를 저장하면, 하드웨어 재구성 가능 시스템은 구성 메모리에 저장된 새로운 하드웨어의 구성정보를 이용하여 하드웨어를 재구성한다. 일반적으로 M이 구성 메모리를 구성하고 있는 복수의 저장영역의 갯수를 나타내고, 각 저장영역을 슬롯(slot)이라고 하면, 구성 메모리의 전체 크기는 M×(슬롯의 크기)로 나타낸다. 구성 메모리를 M개의 슬롯(slot)으로 구성함으로써, 구성 메모리를 포함하는 하드웨어 재구성 가능 시스템은 다중 문맥(multi-context)을 지원한다.
다중 문맥이란, 하드웨어를 재구성할 때 사용하는 복수의 하드웨어 구성정보들을 메모리에 저장하여 두고, 필요할 때마다 저장된 하드웨어 구성정보들을 또 다른 하드웨어 구성정보들로 교체하여 재구성 가능 하드웨어를 교체된 하드웨어 구성정보를 이용하여 재구성하는 방법을 말한다. 다중 문맥을 이용하는 하드웨어 재구성 가능 시스템은 실제 하드웨어를 재구성하는 경우, 구성 메모리에 있는 하드웨어 구성정보들 간의 전환을 통해서 빠르게 하드웨어를 재구성한다.
본 발명이 이루고자 하는 기술적 과제는 구성 메모리의 저장영역의 상태와 저장영역의 상태를 변경할 수 있는 명령어를 제공하여 하드웨어 구성정보를 저장할 저장영역의 위치를 동적으로 결정함으로써, 저장영역 결정이 데이타의 종류, 크기 등에 의존적인 경우이거나 여러 프로그램이 동시에 구성 메모리를 이용할 경우, 구성 메모리의 저장 위치 결정을 최적으로 할 수 있는 재구성 가능 하드웨어의 구성 메모리를 관리하는 방법 및 장치를 제공하는 데 있다. 또한, 상기된 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록 매체를 제공하는 데 있다.
상기 과제를 해결하기 위한 본 발명에 따른 재구성 가능 하드웨어의 구성 메모리를 관리하는 방법에 있어서, 상기 구성 메모리의 복수 개의 슬롯들 각각의 상태에 기초하여 상기 하드웨어 구성정보를 저장할 수 있는 적어도 하나의 슬롯을 결정하는 단계; 및 상기 하드웨어 구성정보를 저장할 수 있는 것으로 결정된 슬롯에 외부 메모리에 저장된 하드웨어 구성 정보를 저장하는 단계를 포함함을 특징으로 한다.
상기 다른 과제를 해결하기 위한 본 발명에 따른 재구성 가능 하드웨어의 구성 메모리를 관리하는 장치는 상기 구성 메모리의 복수 개의 슬롯들 각각의 상태에 기초하여 상기 하드웨어 구성정보를 저장할 수 있는 적어도 하나의 슬롯을 결정하고, 상기 결정된 슬롯으로 외부 메모리에 저장된 하드웨어 구성정보를 저장하는 메모리 관리부; 및 상기 구성 메모리의 복수 개의 슬롯들 각각의 상태를 저장하는 저 장부를 포함함을 특징으로 한다.
상기 또 다른 과제를 해결하기 위하여, 본 발명은 상기된 하드웨어를 재구성하는 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공한다.
본 발명이 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 또 다른 기술적 과제들이 존재할 수 있다. 이것은 본 발명이 속하는 기술 분야에서 통상을 지식을 가진 자들라면 아래의 기재로부터 명확하게 이해될 수 있다.
이하에서는 도면을 참조하여 본 발명의 바람직한 실시예들을 상세히 설명한다.
도 1은 재구성 가능 하드웨어의 구성 메모리를 관리하는 방법 중 정적 할당 기술을 설명하기 위한 도면이다.
우선, 하드웨어를 재구성하는 과정을 살펴보기로 한다. 하드웨어를 재구성하여 소정 목적을 수행하기 위한 프로그램을 컴파일(compile)하면, 프로그램 컴파일 결과 생성된 코드를 저장하는 코드 메모리(미도시)에 소정 목적을 수행하기 위한 코드가 저장되고, 저장된 코드에 의해 하드웨어 구성정보를 제어하여 하드웨어가 재구성된다.
정적 할당 기술은 하드웨어를 재구성하기 위한 하드웨어 구성정보를 저장할 구성 메모리 상의 슬롯의 위치를 프로그램 컴파일 시에 모두 결정하는 기술로서, 외부 메모리를 사용하지 않는 기술을 말한다. 도 1을 참조하면, 하드웨어 재구성 가능 시스템은 슬롯 1 내지 슬롯 M으로 구성된 구성 메모리(100), 멀티플렉서(110), 재구성 가능 하드웨어(120)를 포함한다.
멀티플렉서(110)를 통해 재구성 가능 하드웨어(120)로 입력되는 하드웨어 구성정보는 구성 메모리(100)를 구성하는 소정의 슬롯(slot)들에 저장되어 있다. 각각의 슬롯에 저장되어 있는 하드웨어 구성정보는 재구성 가능 하드웨어의 구성을 바꾸기 위한 데이타이다. 하드웨어 재구성 가능 시스템의 메모리 관리방법 중에 하나인 정적 할당기술을 이용하면, 프로그램 컴파일 시에 이미 하드웨어 재구성에 사용되는 모든 하드웨어 구성정보와 매핑되는 슬롯의 위치가 결정되나, 하드웨어 구성정보를 저장하는 외부 메모리를 이용하지는 않는다. 따라서 메모리 관리시에 이미 모든 하드웨어 구성정보가 저장될 슬롯이 정해져 있으므로, 구성 메모리(100) 상에 저장할 슬롯의 위치가 부족한 현상인 오버헤드(overhead)는 없는 반면 하드웨어 재구성 가능 시스템이 수행할 수 있는 하드웨어 기능이 구성 메모리(100)의 최대 크기에 영향을 받아 제약을 받게 된다.
도 2는 재구성 가능 하드웨어의 구성 메모리를 관리하는 방법 중 메모리 오버레이 기술을 설명하기 위한 도면이다. 도 2를 참조하면, 하드웨어 재구성 가능 시스템은 슬롯 1 내지 슬롯 M으로 구성된 구성 메모리(200), 멀티플렉서(210), 재구성 가능 하드웨어(220)를 포함한다. 외부 메모리는 N개(N은 자연수)의 저장영역으로 구성된다.
메모리 오버레이(overlay) 기술은 서로 다른 기능을 수행하는 하드웨어 구성 정보들을 외부 메모리(230)에 저장하여 두고, 외부 메모리(230)에 저장된 하드웨어 구성정보들을 구성 메모리(200)의 슬롯으로 매핑한 후 매핑된 하드웨어 구성정보들을 하드웨어 재구성에 사용함으로써, 정적 할당 기술을 이용할 때보다 많은 하드웨어 구성정보를 하드웨어 재구성에 사용한다.
도 2를 참조하면, 메모리 오버레이 기술은 하드웨어 구성정보를 저장하고 있는 외부 메모리(230)로부터 구성 메모리(200)로 하드웨어 구성정보를 필요할 때마다 저장한다. 이 경우 하드웨어 재구성 가능 시스템에서 수행하는 하드웨어 기능은 구성 메모리(200)의 저장 크기에 영향을 받는 정적 할당 기술과는 달리 외부 메모리(230)의 저장 크기에 영향을 받게 된다. 외부 메모리(230)의 저장영역 2와 저장영역 5에 저장되어 있는 하드웨어 구성정보를 구성 메모리(200)의 슬롯 2에 매핑할 수 있으므로, 하드웨어 구성정보를 저장하는 크기가 정적 할당 기술을 이용할 때보다 확장된다.
따라서 메모리 오버레이 기술을 이용하면, 하드웨어 재구성 가능 시스템이 수행하는 하드웨어 기능을 외부 메모리(230)의 크기 만큼 확장한다. 그러나, 하드웨어 구성정보를 저장할 구성 메모리(200) 상 슬롯의 위치를 하드웨어를 재구성하는 프로그램 컴파일 시에 모두 결정한다는 점에서는 정적 할당 기술과 차이가 없다. 구성 메모리(200) 상 슬롯의 위치를 모두 결정한다는 것은 프로그램 컴파일 결과인 코드들이 외부 메모리(230)의 저장영역들에 저장된 하드웨어 구성정보들을 구성 메모리(200)의 어떤 슬롯들과 매핑할 것인지에 대한 정보를 포함하고 있다는 의미이다. 상기의 예에서 외부 메모리(230)의 저장영역 2와 저장영역 5에 저장된 하 드웨어 구성정보는 구성 메모리(200)의 슬롯 2로 매핑되어 있으며, 이러한 매핑 정보는 컴파일 시에 이미 모두 결정되어 버린다. 따라서 정적 할당 기술과 메모리 오버레이 기술은 사용자가 저장영역과 슬롯 간의 매핑을 미리 결정할 수 있는 간단한 구조를 가진 프로그램을 작성할 때는 적합하나, 저장영역과 슬롯 간의 매핑이 데이타의 종류, 크기 등에 의존적인 경우이거나 여러 프로그램이 동시에 저장영역 및 슬롯을 이용할 경우에는 외부 메모리와 구성 메모리를 최적으로 이용할 수 없다.
도 3은 재구성 가능 하드웨어의 구성 메모리를 관리하는 방법 중 본 발명에 따른 동적 할당 메모리 관리방법을 설명하기 위한 도면이다. 도 3을 참조하면, 하드웨어 재구성 가능 시스템은 구성 메모리(300), 멀티 플렉서(310), 재구성 가능 하드웨어(320)를 포함하여 구성된다. 구성 메모리(300)는 하드웨어 구성정보를 저장할 수 있는 복수의 슬롯(슬롯 1 내지 슬롯 M, M은 자연수)들로 구성되어 있다. 외부 메모리(330)는 N개(N은 자연수)의 저장영역으로 구성되어 있다.
동적 할당(dynamic allocation) 메모리 관리방법을 이용하는 하드웨어 재구성 가능 시스템은 외부 메모리(330)의 저장영역들마다 하드웨어 구성정보들을 저장하여 두고, 각각의 하드웨어 구성정보를 구성 메모리(300)의 어느 슬롯으로 매핑할 것인지에 대한 결정을 하드웨어를 재구성하는 프로그램을 컴파일한 결과인 코드를 실행하면서 실시간으로 한다. 메모리 오버레이 기술에서는 하드웨어를 재구성하는 프로그램의 컴파일 시에 이미 외부 메모리에 저장된 하드웨어 구성정보들이 구성 메모리의 어느 슬롯으로 매핑될 것인지를 결정하지만, 본 발명에 따른 동적 할당(dynamic allocation) 메모리 관리방법은 하드웨어를 재구성하는 프로그램을 컴 파일한 결과인 코드를 실행하면서 실시간으로 외부 메모리(330)에 저장된 하드웨어 정보들이 구성 메모리(300)의 어느 슬롯으로 매핑될 것인지를 결정한다. 이하, 동적 할당 메모리 관리방법을 이용한 하드웨어 재구성 가능 시스템에 대하여 상세히 살펴보기로 한다.
도 4는 하드웨어 재구성 가능한 시스템을 나타내는 구성도이다.
도 4를 참조하면, 하드웨어 재구성 가능한 시스템은 구성 메모리(410), 메모리 관리부(420), 외부 메모리 테이블(430), 구성 메모리 테이블(440), 멀티 플렉서(450), 및 재구성 가능 하드웨어(460)로 구성된다.
외부 메모리(400)는 하드웨어 구성정보를 저장하고 있는 저장장치로서 하드웨어 재구성 가능한 시스템의 외부에 있는 메모리이다. 외부 메모리(400)는 복수의 저장영역들로 구분되어 있으며, 하드웨어를 재구성하기 위한 하드웨어 구성정보는 적어도 하나 이상의 저장영역을 필요로 한다.
구성 메모리(410)는 외부 메모리(400)로부터 수신한 하드웨어 구성정보를 저장하는 메모리이다. 구성 메모리(410)는 복수의 슬롯들로 구성되어 있으며, 각각의 슬롯들에 하드웨어 구성정보가 저장된다. 슬롯이란, 하드웨어 구성정보를 저장하는 구성 메모리(410) 상의 저장영역들을 의미한다.
외부 메모리 테이블(430)은 외부 메모리(400)의 저장상태에 대한 정보를 나타내는 테이블이다. 외부 메모리(400)의 저장상태에 대한 정보는 외부 메모리(400)를 구성하는 복수의 저장영역들 각각의 상태 정보, 저장영역이 매핑된 구성 메모리(410)의 슬롯의 인덱스 정보, 및 저장영역에 저장되는 하드웨어 구성정보의 크기 를 포함한다. 도 6에서 외부 메모리 테이블(430)을 자세히 살펴보기로 한다.
구성 메모리 테이블(440)은 구성 메모리(410)의 저장상태에 대한 정보를 나타내는 테이블이다. 구성 메모리(410)의 저장상태에 대한 정보는 구성 메모리(410)를 구성하는 복수의 슬롯들 각각의 상태 정보, 및 슬롯이 매핑된 외부 메모리(400)의 저장영역의 인덱스 정보를 포함한다.
메모리 관리부(420)는 외부 메모리(400) 또는 구성 메모리(410)에 대한 명령어 실행신호를 코드들이 저장된 코드 메모리(미도시)로부터 수신하면, 명령어의 내용에 따른 관리를 수행하는 장치이다. 하드웨어를 재구성하는 프로그램을 컴파일한 결과 생성되는 코드들이 실행되면, 코드들이 메모리 관리부(420)에 저장된 명령어들을 이용하여, 외부 메모리(400)와 구성 메모리(410)를 관리하게 된다. 예를 들어 코드를 실행하면 코드들 중에 있는 소정의 명령어를 메모리 관리부(420)로 호출(call)하게 되고, 메모리 관리부(420)는 호출에 응답하여 소정의 명령어를 실제로 외부 메모리(400) 또는 구성 메모리(410)에 대하여 수행한다. 메모리 관리부(420)는 코드들에 의해 호출된 명령어를 실행하기 위해 외부 메모리 테이블(430) 및 구성 메모리 테이블(440)에 저장된 정보들을 이용한다. 이하에서는 메모리 관리부(420)가 수행하는 명령어들에 대한 실시예를 설명하기로 한다.
메모리 관리부(420)는 코드를 실행한 결과로써 코드들로부터 프리펫치(Prefetch) 명령어에 대하여 호출받으면, 외부 메모리(400)의 저장영역에 저장된 하드웨어 구성정보를 구성 메모리(410)의 슬롯에 저장한다. 본 발명에 따르면 프리펫치 명령어에 따라 하드웨어 구성정보를 구성 메모리(410)의 슬롯에 저장하기 위 해서는 외부 메모리(400)의 저장영역의 인덱스 값과 구성 메모리(410)의 슬롯의 인덱스 값이 필요하다.
메모리 관리부(420)는 코드를 실행한 결과로써 코드들로부터 실행(Execute) 명령어에 대하여 호출받으면, 구성 메모리(410)의 슬롯에 저장된 하드웨어 구성정보를 멀티플렉서(450)로 출력한다.
메모리 관리부(420)는 코드를 실행한 결과로써 코드들로부터 무효화(Invalidate) 명령어에 대하여 호출받으면, 외부 메모리 테이블(430)과 구성 메모리 테이블(440)의 무효화 명령어의 대상 저장영역 또는 슬롯의 상태정보를 무효 상태로 만든다. 무효 상태란 구성 메모리(410)의 슬롯과 외부 메모리(400)의 저장영역 간에 매핑되어 있지 않은 것을 의미한다. 슬롯과 저장영역 간에 매핑이 되어 있지 않다는 것은 슬롯에 저장된 하드웨어 구성정보를 하드웨어를 재구성하는데 사용할 수 없음을 나타낸다. 즉, 슬롯의 상태정보가 무효 상태가 되면, 메모리 관리부(420)는 하드웨어 구성정보가 슬롯에 저장되어 있다고 하더라도, 무효 상태의 슬롯에 저장된 하드웨어 구성정보를 재구성하는 데 사용하지 않도록 한다. 무효 상태의 슬롯에는 새로운 하드웨어 구성정보가 저장될 수 있으며, 반드시 무효 상태의 슬롯에 저장된 하드웨어 구성정보를 삭제할 필요는 없다. 메모리 관리부(420)는 외부 메모리 테이블(430)의 저장영역의 상태정보를 저장영역과 매핑된 구성 메모리 테이블(440)의 슬롯의 상태정보와 같도록 한다. 따라서, 외부 메모리 테이블(430)의 저장영역의 상태정보는 저장영역의 상태정보를 나타내는 것이 아니고, 메모리 관리의 편의상 구성 메모리(410)의 슬롯의 상태정보를 나타낸다.
메모리 관리부(420)는 코드를 실행한 결과로써 코드들로부터 제 1 저장영역과 제 1 슬롯을 대상으로 한 잠금(Lock) 명령어를 호출받으면, 외부 메모리(400)의 제 1 저장영역이 제 1 저장영역과 매핑된 구성 메모리(410)의 제 1 슬롯을 독점적으로 사용하도록 하는 독점적 상태 또는 독점적 로딩 상태로 외부 메모리 테이블(430)의 저장영역과 구성 메모리 테이블(440)의 슬롯의 상태정보를 변경한다. 메모리 관리부(420)가 잠금 명령어를 호출받았을 때 저장영역과 슬롯의 상태정보가 유효 상태이면, 독점적 상태로 저장영역과 슬롯의 상태정보를 변경하고, 저장영역과 슬롯의 상태정보가 로딩 상태이면, 독점적 로딩 상태로 저장영역과 슬롯의 상태정보를 변경한다. 제 1 저장영역이 제 1 슬롯을 독점적으로 사용하도록 설정한다는 것은 제 1 저장영역이 아닌 제 2 저장영역은 제 1 슬롯과 매핑할 수 없도록 한다는 것을 의미한다. 무효 상태, 로딩 상태, 유효 상태, 독점적 로딩 상태, 독점적 유효 상태에 대해서는 도 6에서 상세히 살펴보기로 한다.
메모리 관리부(420)는 코드를 실행한 결과로써 코드들로부터 제 1 저장영역과 제 1 슬롯을 대상으로 한 풀림(Unlock) 명령어를 호출받으면, 제 1 저장영역과 제 1 슬롯의 상태정보를 외부 메모리 테이블(430)과 구성 메모리 테이블(440)로부터 읽고, 상태정보가 독점적 유효 상태이면 유효 상태로 변경하고, 상태정보가 독점적 로딩 상태이면 로딩 상태로 변경한다. 저장영역과 슬롯의 상태정보에 대해서는 도 6에서 상세히 살펴보기로 한다.
멀티플렉서(450)는 구성메모리(410)로부터 수신한 적어도 하나 이상의 하드웨어 구성정보들 중에서 메모리 관리부(420)의 제어를 받아 하나의 하드웨어 구성 정보를 재구성 가능 하드웨어(460)로 출력한다.
재구성 가능 하드웨어(460)는 FGA(Fine Grained Array) 또는 CGA(coarce grained array)와 같이 하드웨어 구성요소들을 재결합할 수 있는 장치를 말한다.
도 5는 본 발명의 바람직한 일 실시예에 따른 재구성 가능 하드웨어의 구성 메모리를 관리하는 장치를 나타내는 블록도이다.
도 5를 참조하면, 본 실시예에 따른 재구성 가능 하드웨어의 구성 메모리를 관리하는 장치는 메모리 관리부(510), 저장부(520)로 구성된다.
메모리 관리부(510)는 외부 메모리(530)에서 구성 메모리(540)로 하드웨어 구성정보를 전송할 때, 구성 메모리(540)를 구성하는 슬롯들의 상태를 고려하여 슬롯들 중 적어도 하나 이상의 슬롯을 결정한다. 적어도 하나 이상의 슬롯을 결정하는 방법은 다음과 같다.
메모리 관리부(510)는 구성 메모리(540)를 구성하는 슬롯들 중에서 무효 상태인 슬롯을 우선적으로 선택하여 결정한다. 무효 상태란 구성 메모리(410)의 슬롯과 외부 메모리(400)의 저장영역 간에 매핑되어 있지 않은 것을 의미한다. 그러나 무효 상태인 슬롯이 없거나 무효 상태에 있는 슬롯의 크기보다 하드웨어 구성정보의 크기가 큰 경우에는 유효 상태인 슬롯을 더 포함하여 선택한다. 유효 상태란 구성 메모리(410)의 슬롯과 외부 메모리(400)의 저장영역 간에 매핑되어 있는 것을 의미한다.
메모리 관리부(510)는 코드를 실행한 결과로써 코드들로부터 호출받은 명령어들을 수행한다. 메모리 관리부(510)가 수행하는 명령어는 도 7를 참조하여 살펴 보기로 한다.
저장부(520)는 외부 메모리(530)를 구성하는 저장영역에 대한 정보와 구성 메모리(540)를 구성하는 슬롯에 대한 정보를 저장한다. 저장영역에 대한 정보는 저장영역에 매핑된 슬롯의 상태 정보, 매핑된 슬롯의 인덱스 정보, 하드웨어 구성정보의 크기를 포함하고, 슬롯에 대한 정보는 슬롯의 상태 정보, 매핑된 저장영역의 인덱스 정보를 포함하며, 저장영역에 대한 정보와 슬롯에 대한 정보는 테이블로 작성된다. 이에 대해서는 도 6에서 상세히 살펴보기로 한다.
구성 메모리(540)는 외부 메모리(530)에 저장되어 있는 하드웨어 구성정보를 수신하여 저장한다. 구성 메모리는 복수의 슬롯들로 구성되어있으며, 슬롯들은 각각 구성 메모리(540)의 저장영역을 의미한다. 또한 슬롯들 각각은 외부 메모리(530)의 저장영역과 매핑된다.
하드웨어 재구성부(550)는 본 실시예에 따른 재구성 가능 하드웨어의 구성 메모리를 관리하는 장치의 구성 메모리(540)로부터 수신한 하드웨어 구성정보를 이용하여 하드웨어를 재구성한다. 하드웨어 재구성부(560)는 FPGA 또는 CGA일 수 있다.
도 6은 도 5에 도시된 저장부(520)에 저장되는 외부 메모리 테이블과 구성 메모리 테이블의 일 실시예를 나타내는 도면이다. 도 5와 도 6을 참조하여 외부 메모리 테이블과 구성 메모리 테이블을 설명하기로 한다. 도 6(a)는 외부 메모리 테이블을 나타내고, 도 6(b)는 구성 메모리 테이블을 나타낸다.
도 6(a)를 참조하면, 외부 메모리 테이블은 저장영역의 번호, 상태 정보, 슬 롯의 인덱스 정보, 및 하드웨어 구성정보의 크기를 포함한다.
저장영역의 번호는 외부 메모리를 구성하는 복수의 저장영역들을 구분하기 위해 각 저장영역마다 할당된 것이다.
상태 정보는 외부 메모리(530)의 저장영역에 대응하는 구성 메모리(540)의 슬롯의 상태를 나타낸다. 구성 메모리(540)의 슬롯의 상태는 무효(Invalid), 로딩(Loading), 유효(Valid), 독점적 로딩(Ex_loading), 독점적 유효(Exclusive)로 나누어진다.
슬롯의 상태가 무효(Invalid) 상태인 경우에는 슬롯에 저장된 하드웨어 구성정보들이 유효한 하드웨어 구성정보가 아닌 상태로서, 구성 메모리(410)의 슬롯과 외부 메모리(400)의 저장영역 간에 매핑되어 있지 않은 상태이다. 슬롯의 상태가 로딩(Loading) 상태인 경우에는 외부 메모리(530)의 저장영역에 저장된 하드웨어 구성정보를 구성 메모리(540)의 슬롯으로 전송 중인 것을 나타낸다. 슬롯의 상태가 유효(Valid) 상태인 경우에는 구성 메모리(410)의 슬롯과 외부 메모리(400)의 저장영역 간에 매핑되어 있는 상태이고, 슬롯에 저장된 하드웨어 구성정보를 이용하여 하드웨어를 재구성할 수 있음을 의미한다.
슬롯의 상태가 독점적 로딩(Ex_loading) 상태인 경우에는 외부 메모리(530)의 저장영역에 있는 하드웨어 구성정보가 구성 메모리(540)의 슬롯으로 전송 중인 것을 나타내는 것으로, 특히 독점적 로딩 상태에 있는 슬롯이 매핑되어 있는 저장영역이 아닌 다른 저장영역으로는 매핑되지 않는 것을 나타낸다. 슬롯의 상태가 독점적 유효(Exclusive) 상태인 경우에는 독점적 유효 상태에 있는 구성 메모리(540) 의 슬롯이 매핑되어 있는 저장영역이 아닌 다른 저장영역과는 독점적 유효 상태에 있는 슬롯이 매핑되지 않도록 하면서, 상기 독점적 유효 상태에 있는 슬롯에 하드웨어를 재구성할 수 있는 하드웨어 구성정보를 저장하고 있음을 나타낸다.
슬롯의 인덱스 정보는 외부 메모리(510)의 저장영역의 번호에 대응하여 매핑되어 있는 구성 메모리(540)의 슬롯을 나타내는 인덱스이다.
크기는 외부 메모리(510)의 저장영역에 저장되어 있는 하드웨어 구성정보의 크기를 나타내는 것이다. 하드웨어 구성정보의 크기는 하드웨어 구성정보가 저장되어 있는 외부 메모리의 저장영역의 갯수로 나타낸다.
도 6(b)를 참조하면, 구성 메모리 테이블은 슬롯별로 슬롯의 번호, 상태 정보, 및 저장영역의 인덱스 정보를 포함한다.
슬롯의 번호는 구성 메모리를 구성하는 복수의 저장영역들인 복수의 슬롯들을 구분하기 위해 각 슬롯마다 할당된 것이다.
상태 정보는 구성 메모리(540)의 슬롯의 상태를 나타낸다. 저장영역의 상태는 무효(Invalid), 로딩(Loading), 유효(Valid), 독점적 로딩(Ex_loading), 독점적 유효(Exclusive)로 나누어진다. 외부 메모리 테이블의 대응하는 상태 정보와 같은 값을 가지고, 의미하는 바도 외부 메모리 테이블의 상태 정보와 동일하다.
저장영역의 인덱스 정보는 구성 메모리(540)의 슬롯이 매핑되어 있는 외부 메모리(530)의 저장영역을 나타내는 인덱스이다.
도 7은 저장영역 또는 슬롯의 상태 정보의 실시예들과 상태 간의 천이도를 나타낸 도면이다. 도 5와 도 7을 참조하여, 명령어를 이용한 상태 간 천이 방법을 설명하기로 한다.
도 7에 도시된 무효 상태, 로딩 상태, 유효 상태, 독점적 로딩 상태, 및 독점적 유효 상태는 도 6에 도시된 외부 메모리 테이블 및 구성 메모리 테이블의 상태정보를 메모리 관리부가 변경함으로써, 상태 간 천이가 가능하다. 저장 영역 또는 슬롯의 초기 상태는 무효(Invalid) 상태이며, 수행하는 명령어에 따라 다른 상태로 변하게 된다.
재구성 가능 하드웨어의 구성 메모리를 관리하는 장치는 슬롯의 상태가 무효인 상태에서 프리펫치(Prefetch) 명령어를 수행하면, 해당 슬롯과 저장영역의 외부 메모리 테이블과 구성 메모리 테이블의 상태 정보를 로딩 상태로 바꾸고, 외부 메모리(530)의 저장영역에 있는 하드웨어 구성정보를 구성 메모리(540)의 슬롯으로 전송한다.
재구성 가능 하드웨어의 구성 메모리를 관리하는 장치는 슬롯의 상태가 로딩 상태에서 프리펫치(Prefetch) 명령어의 수행이 완료되면, 해당 슬롯과 저장영역의 외부 메모리 테이블과 구성 메모리 테이블의 상태 정보를 유효 상태로 바꾼다.
재구성 가능 하드웨어의 구성 메모리를 관리하는 장치는 슬롯의 상태가 유효 상태에서 잠금(Lock) 명령어를 수행하면, 해당 슬롯과 저장영역의 외부 메모리 테이블과 구성 메모리 테이블의 상태 정보를 독점적 유효(Exclusive) 상태로 바꾸고, 슬롯의 상태가 로딩 상태에서 잠금(Lock) 명령어를 수행하면, 해당 슬롯과 저장영역의 외부 메모리 테이블과 구성 메모리 테이블의 상태 정보를 독점적 로딩(Ex_loading) 상태로 바꾼다.
재구성 가능 하드웨어의 구성 메모리를 관리하는 장치는 슬롯의 상태가 독점적 로딩(Ex_loading) 상태에서 프리펫치(Prefetch) 명령어의 수행이 완료되면, 해당 슬롯과 저장영역의 외부 메모리 테이블과 구성 메모리 테이블의 상태 정보를 독점적 유효(Exclusive) 상태로 바꾼다.
재구성 가능 하드웨어의 구성 메모리를 관리하는 장치는 슬롯의 상태가 독점적 유효 상태에서 풀림(Unlock) 명령어를 수행하면, 해당 슬롯과 저장영역의 외부 메모리 테이블과 구성 메모리 테이블의 상태 정보를 유효 상태(Valid)로 바꾸고, 독점적 로딩(Ex_loading) 상태에서 풀림(Unlock) 명령어를 수행하면, 해당 슬롯과 저장영역의 외부 메모리 테이블과 구성 메모리 테이블의 상태 정보를 로딩(Loading) 상태로 바꾼다.
재구성 가능 하드웨어의 구성 메모리를 관리하는 장치는 슬롯의 상태가 유효(Valid) 상태 또는 독점적 유효(Exclusive) 상태에서 실행(Execute) 명령어 수행이 가능하고, 슬롯의 상태가 유효 상태 또는 독점적 유효 상태에서 무효화 명령어를 수행하면, 해당 슬롯과 저장영역의 외부 메모리 테이블과 구성 메모리 테이블의 상태 정보를 무효(Invalid) 상태로 바꾼다.
도 8은 본 발명에 따른 프리펫치(Prefetch) 명령어를 이용하여 재구성 가능 하드웨어의 구성 메모리를 관리하는 방법을 나타내는 흐름도이다. 도 5와 도 8을 이용하여 프리펫치(Prefetch) 명령어를 이용한 재구성 가능 하드웨어의 구성 메모리를 관리하는 방법을 살펴보기로 한다.
800 단계에서 구성 메모리를 관리하는 장치는 외부 메모리(530)의 적어도 하 나 이상의 저장영역에 저장된 하드웨어 구성정보에 대하여 구성 메모리(540)의 슬롯들 중 무효 상태에 있는 적어도 하나 이상의 슬롯을 할당한다.
810 단계에서 구성 메모리를 관리하는 장치는 무효 상태의 슬롯의 할당이 이루어진 경우에는 860 단계로 진행하고, 무효 상태의 슬롯의 할당이 이루어지지 않은 경우에는 820 단계로 진행한다.
820 단계에서 구성 메모리를 관리하는 장치는 무효 상태의 슬롯과 유효 상태의 슬롯을 모두 고려하여 적어도 하나 이상의 슬롯을 할당한다. 슬롯을 할당함에 있어서, 우선적으로는 무효 상태의 슬롯을 할당하고, 무효 상태의 슬롯이 없거나 하드웨어 구성정보의 크기가 무효 상태의 슬롯보다 큰 경우에는 유효 상태의 슬롯을 할당한다. 유효 상태의 슬롯을 할당 시에는 소정의 기준에 따라 할당할 수 있을 것이다. 예를 들어, 소정의 기준은 슬롯에 저장된 하드웨어 구성정보의 이용 횟수가 가장 적은 슬롯을 우선적으로 선택할 수도 있고, 또는 랜덤(random)하게 선택할 수도 있다.
830 단계에서 구성 메모리를 관리하는 장치는 슬롯의 할당이 완료된 경우에는 840 단계로 진행하고, 슬롯의 할당이 완료되지 않은 경우에는 880 단계로 진행한 후, 에러값을 반환한다.
840 단계에서 구성 메모리를 관리하는 장치는 820 단계에서 할당된 슬롯들 중 유효 상태의 슬롯을 무효 상태로 바꾼다. 만일 유효 상태의 슬롯이 없는 경우에는 840 단계를 수행하지 않는다.
850 단계에서 구성 메모리를 관리하는 장치는 외부 메모리(530)의 저장영역 과 820 단계에서 할당된 슬롯 간의 매핑 정보를 저장부(520)에 저장한다. 매핑 정보란 도 6을 참조하면, 외부 메모리 테이블의 슬롯의 인덱스 정보와 구성 메모리 테이블의 저장영역의 인덱스 정보를 말하는 것으로, 하드웨어 구성정보를 수신한 슬롯이 어느 저장영역으로부터 수신했는지 또는 저장영역의 하드웨어 구성정보를 어느 슬롯으로 전송했는지를 알 수 있는 정보이다.
860 단계에서 구성 메모리를 관리하는 장치는 외부 메모리(530)의 저장영역에 저장된 하드웨어 구성정보를 820 단계에서 할당된 구성 메모리(540)의 슬롯으로 전송한다.
870 단계에서 구성 메모리를 관리하는 장치는 저장부(520)에 저장된 저장영역과 슬롯의 상태 정보를 로딩 상태로 변경한다.
도 9는 본 발명에 따른 프리펫치(Prefetch) 명령어 수행이 완료된 경우 구성 메모리를 관리하는 방법을 나타내는 흐름도이다. 도 5와 도 9를 이용하여 프리펫치(Prefetch) 명령어 수행이 완료된 경우 구성 메모리를 관리하는 방법을 살펴보기로 한다.
900 단계에서 구성 메모리를 관리하는 장치는 외부 메모리(530)의 저장영역으로부터 구성 메모리(540)의 슬롯으로 하드웨어 구성정보의 전송이 완료되었는지 판단하고 하드웨어 구성정보의 전송이 완료될 때까지 대기한다.
910 단계에서 구성 메모리를 관리하는 장치는 900 단계에서 하드웨어 구성정보의 전송이 완료되었다고 판단하면, 저장부(520)에 저장되어 있는 저장영역과 슬롯의 상태 정보를 유효 상태로 변경한다.
도 10은 본 발명에 따른 실행(Execute) 명령어를 이용하여 구성 메모리를 관리하는 방법을 나타내는 흐름도이다. 도 5와 도 10을 이용하여 실행(Execute) 명령어를 이용한 구성 메모리를 관리하는 방법을 살펴보기로 한다.
1000 단계에서 구성 메모리를 관리하는 장치는 저장부(520)에 저장되어 있는 외부 메모리 테이블과 구성 메모리 테이블로부터 슬롯의 상태가 무효 상태인지 판단하고, 그 결과 슬롯의 상태가 무효 상태이면 1010 단계로 진행하고, 슬롯의 상태가 무효 상태가 아니면 1020 단계로 진행한다.
1010 단계에서 구성 메모리를 관리하는 장치는 프리펫치(Prefetch) 명령어를 수행한다. 하드웨어 재구성 가능한 시스템이 프리펫치 명령어를 수행하게 되면, 슬롯의 상태가 무효 상태에서 로딩 상태, 유효 상태, 독점적 로딩 상태, 독점적 유효 상태 중 어느 하나로 변경된다.
1020 단계에서 구성 메모리를 관리하는 장치는 저장부(520)에 저장되어 있는 외부 메모리 테이블과 구성 메모리 테이블로부터 실행 명령어의 대상이 되는 슬롯의 상태가 유효 상태 또는 독점적 유효 상태 중 어느 하나에 해당하는지 판단하고, 그 결과 슬롯의 상태가 유효 상태 또는 독점적 유효 상태 중 어느 하나의 상태에 해당하는 경우에는 1060 단계로 진행하고, 슬롯의 상태가 유효 상태 또는 독점적 유효 상태 어디에도 해당하지 않으면, 1030 단계로 진행한다.
1030 단계에서 구성 메모리를 관리하는 장치는 저장부(520)에 저장되어 있는 외부 메모리 테이블과 구성 메모리 테이블로부터 실행 명령어의 대상이 되는 슬롯의 상태가 로딩 상태 또는 독점적 로딩 상태 중 어느 하나에 해당하는지 판단하고, 그 결과 슬롯의 상태가 로딩 상태 또는 독점적 로딩 상태 중 어느 하나의 상태에 해당하는 경우에는 1040 단계로 진행하고, 슬롯의 상태가 로딩 상태 또는 독점적 로딩 상태 어디에도 해당하지 않으면, 1070 단계로 진행한다.
1040 단계에서 구성 메모리를 관리하는 장치는 외부 메모리(530)의 저장영역으로부터 구성 메모리(540)의 슬롯으로 하드웨어 구성정보의 전송이 완료되었는지 판단하고, 하드웨어 구성정보의 전송이 완료될 때까지 대기한다.
1050 단계에서 구성 메모리를 관리하는 장치는 저장부(520)에 저장되어 있는 외부 메모리 테이블과 구성 메모리 테이블로부터 판단한 결과, 구성 메모리(540)의 슬롯의 상태가 로딩 상태인 경우에는 슬롯의 상태를 유효 상태로 변경하고, 독점적 로딩 상태인 경우에는 슬롯의 상태를 독점적 유효 상태로 변경한다.
1060 단계에서 하드웨어 재구성 가능 시스템은 실행 명령어의 대상이 되는 슬롯의 상태가 유효 상태 또는 독점적 유효 상태로 변경된 경우, 슬롯에 저장되어 있는 하드웨어 구성정보를 이용하여 재구성 가능한 시스템의 하드웨어를 재구성한다.
도 11은 본 발명에 따른 무효화(Invalidate) 명령어를 이용하여 구성 메모리를 관리하는 방법을 나타내는 흐름도이다. 도 5와 도 11을 이용하여 무효화(Invalidate) 명령어를 이용한 구성 메모리를 관리하는 방법을 살펴보기로 한다.
1100 단계에서 구성 메모리를 관리하는 장치는 무효화 명령어의 대상이 되는 구성 메모리(540)의 슬롯의 상태를 무효 상태로 변경한다. 무효화 명령어를 이용하여 슬롯의 상태를 무효 상태로 변경함으로써, 해당 슬롯에 저장된 하드웨어 구성정 보들이 유효한 하드웨어 구성정보가 아닌 상태가 되고, 슬롯과 저장영역 간에 매핑이 되지 않은 상태가 된다. 구성 메모리를 관리하는 장치는 무효 상태의 슬롯에 그렇지 아니한 슬롯보다 우선적으로 하드웨어 구성정보를 입력할 수 있다.
도 12는 본 발명에 따른 잠금(Lock) 명령어를 이용하여 구성 메모리를 관리하는 방법을 나타내는 흐름도이다. 도 5와 도 12를 이용하여 잠금(Lock) 명령어를 이용한 구성 메모리를 관리하는 방법을 살펴보기로 한다.
1200 단계에서 구성 메모리를 관리하는 장치는 저장부(520)에 저장되어 있는 외부 메모리 테이블과 구성 메모리 테이블로부터 잠금 명령어의 대상이 되는 구성 메모리(540)의 슬롯의 상태가 로딩 상태인지 판단하고, 그 결과 슬롯의 상태가 로딩 상태가 아닌 경우에는 1210 단계로 진행하고, 슬롯의 상태가 로딩 상태인 경우에는 1230 단계로 진행한다.
1210 단계에서 구성 메모리를 관리하는 장치는 저장부(520)에 저장되어 있는 외부 메모리 테이블과 구성 메모리 테이블로부터 잠금 명령어의 대상이 되는 슬롯의 상태가 유효 상태인지 판단하고, 그 결과 슬롯의 상태가 유효 상태인 경우에는 1220 단계로 진행하고, 슬롯의 상태가 유효 상태가 아닌 경우에는 1240 단계로 진행한다.
1220 단계에서 구성 메모리를 관리하는 장치는 저장부(520)에 저장되어 있는 슬롯의 상태를 독점적 유효 상태로 변경한다.
1230 단계에서 구성 메모리를 관리하는 장치는 저장부(520)에 저장되어 있는 슬롯의 상태를 독점적 로딩 상태로 변경한다.
1240 단계에서 구성 메모리를 관리하는 장치는 에러값을 반환한다.
도 13은 본 발명에 따른 풀림(Unlock) 명령어를 이용하여 구성 메모리를 관리하는 방법을 나타내는 흐름도이다. 도 5와 도 13을 이용하여 풀림(Unlock) 명령어를 이용한 구성 메모리를 관리하는 방법을 살펴보기로 한다.
1300 단계에서 구성 메모리를 관리하는 장치는 저장부(520)에 저장되어 있는 외부 메모리 테이블과 구성 메모리 테이블로부터 풀림 명령어의 대상이 되는 구성 메모리(540)의 슬롯의 상태가 독점적 로딩 상태인지 판단하고, 그 결과 슬롯의 상태가 독점적 로딩 상태가 아닌 경우에는 1310 단계로 진행하고, 슬롯의 상태가 독점적 로딩 상태인 경우에는 1330 단계로 진행한다.
1310 단계에서 구성 메모리를 관리하는 장치는 저장부(520)에 저장되어 있는 외부 메모리 테이블과 구성 메모리 테이블로부터 풀림 명령어의 대상이 되는 슬롯의 상태가 독점적 유효 상태인지 판단하고, 그 결과 슬롯의 상태가 독점적 유효 상태이면 1320 단계로 진행하고, 슬롯의 상태가 독점적 유효 상태가 아니라면 1340 단계로 진행한다.
1320 단계에서 구성 메모리를 관리하는 장치는 저장부(520)에 저장되어 있는 슬롯의 상태를 유효 상태로 변경한다.
1330 단계에서 구성 메모리를 관리하는 장치는 저장부(520)에 저장되어 있는 슬롯의 상태를 로딩 상태로 변경한다.
1340 단계에서 구성 메모리를 관리하는 장치는 에러값을 반환한다.
이상에서 살펴본 바와 같은 하드웨어 재구성 가능 시스템을 이용한 또 다른 실시예를 살펴보기로 한다. 본 발명의 또 다른 실시예는 재구성 가능한 하드웨어의 구성을 바꿀 수 있는 하드웨어 구성 정보를 적어도 하나 이상을 포함하는 하나의 독립적인 기능단위인 태스크(task)가 복수 개 존재할 때, 본 실시예에 따른 하드웨어 재구성 가능 시스템을 이용하여 효과적으로 구성 메모리를 관리할 수 있도록 하는 실시예이다. 이하에서는 재구성 가능한 하드웨어를 이용하여 태스크 A와 태스크 B, 두 개의 태스크를 수행하는 경우를 예를 들어 설명하나, 둘 이상의 태스크가 포함된 경우에도 마찬가지로 생각할 수 있을 것이다.
태스크 A는 적어도 하나 이상의 하드웨어 구성정보 a1, a2, ....aN (N은 자연수)를 포함하고, 태스크 B도 적어도 하나 이상의 하드웨어 구성정보 b1, b2, ....bM (M은 자연수)를 포함하고 있다고 하기로 한다. 태스크 A와 태스크 B는 서로 독립적인 태스크일 수도 있으며, 서로 입출력을 주고 받는 의존적인 태스크일 수도 있다. 그런데 태스크 A, 태스크 B 각각의 하드웨어 구성정보들이 구성 메모리를 사용하여 하드웨어를 재구성하는데 사용될 때, 효율적인 구성 메모리 사용을 위해서는 태스크 A와 태스크 B 각각에 대응하는 구성 메모리를 사용 시간을 분배할 필요가 있다. 만일 태스크 A와 태스크 B가 서로 독립적인 태스크인 경우, 각 태스크에 대응하는 구성메모리(410) 또는 재구성 가능 하드웨어(460) 사용 시간을 계획(schedule)할 때, 태스크 A와 태스크 B 각각에 대응하는 시간은 균등하게 결정될 수도 있고, 각각 다르게 결정될 수도 있을 것이다. 한편, 만일 태스크 A와 태스크 B가 서로 의존적인 경우, 즉 태스크 A에 대응하는 출력이 태스크 B를 수행하는데 입력으로 사용되는 경우에는 태스크 A가 끝난 후 태스크 B를 수행하도록 태스크 각 각에 대응하는 시간이 결정될 수도 있다.
도 14A, 도 14B는 태스크 A와 태스크 B가 본 발명의 또 다른 일 실시예에 따라 수행될 경우의 흐름도를 도시한 것이다. 도 4를 참조하여 두 개의 태스크 A, B가 본 발명의 일 실시예에 따라 수행되는 과정을 살펴보기로 한다.
1405 단계에서 구성 메모리를 관리하는 장치는 태스크 A가 포함하고 있는 하드웨어 구성정보 a1, a2, ....aN를 외부 메모리(400)로부터 구성 메모리(410)로 도 8 내지 도 13에 도시된 방법에 따라 저장한다.
1410 단계에서 구성 메모리를 관리하는 장치는 구성 메모리(410)에 저장된 하드웨어 구성 정보들을 이용하여 재구성 가능 하드웨어(460)를 재구성한다.
1415 단계에서 구성 메모리를 관리하는 장치는 태스크 A를 수행할 시간을 설정한다.
1420 단계에서 구성 메모리를 관리하는 장치는 태스크 A에 설정된 시간이 경과하였는지 판단한다. 이 판단 결과 태스크 A에 설정된 시간이 경과하지 않은 경우에는 경과시까지 대기하고, 태스크 A에 설정된 시간이 경과하면 1425 단계로 진행한다.
1425 단계에서 구성 메모리를 관리하는 장치는 태스크 B의 수행이 종료되었는지를 판단한다. 태스크의 수행이 종료되었다는 의미는 태스크를 실현하기 위해 재구성 가능 하드웨어(460)를 이용하지 않는다는 의미이다. 태스크 B의 수행이 종료되지 않은 경우에는 1430 단계로 진행하여 태스크 B를 수행한다. 한편, 태스크 B의 수행이 종료된 경우에는 1460 단계로 진행하여 태스크 A의 수행이 종료되었는지 여부를 판단한다.
1430 단계에서 구성 메모리를 관리하는 장치는 외부 메모리(400)에 존재하는 태스크 B의 하드웨어 구성정보 b1, b2, .....bM을 구성 메모리(410)에 저장한다. 태스크 B의 하드웨어 구성정보를 구성 메모리(410)에 저장하기 위해서는 먼저 구성 메모리(440)를 구성하는 슬롯의 상태 정보를 무효 상태로 변경한다. 구성 메모리(440)를 구성하는 슬롯의 상태 정보를 무효 상태로 변경함으로써, 이미 슬롯에 저장되어 있는 태스크 A의 하드웨어 구성정보를 더 이상 사용되지 않도록 하고, 태스크 B의 하드웨어 구성정보를 저장할 수 있는 무효 상태의 슬롯을 확보하게 된다. 한편, 태스크 A의 하드웨어 구성정보들 중 일부가 태스크 B의 하드웨어 구성정보들 중 일부와 동일한 경우에는 태스크 A와 태스크 B의 하드웨어 구성정보 차이만을 새롭게 저장할 수도 있다.
1435 단계에서 구성 메모리를 관리하는 장치는 구성 메모리(410)에 저장된 태스크 B의 하드웨어 구성정보를 재구성 가능 하드웨어(460)를 재구성하는데 사용한다.
1440 단계에서 구성 메모리를 관리하는 장치는 태스크 B를 수행할 시간을 설정한다.
1445 단계에서 구성 메모리를 관리하는 장치는 태스크 B에 설정된 시간이 경과하였는지 판단한다. 이 판단 결과 태스크 B에 설정된 시간이 경과하지 않은 경우에는 경과시까지 대기하고, 태스크 B에 설정된 시간이 경과하면 1450 단계로 진행한다.
1450 단계에서 구성 메모리를 관리하는 장치는 태스크 A와 태스크 B의 수행이 모두 종료되었는지를 판단한다. 태스크 A와 태스크 B를 수행하는 것이 더 이상 필요하지 않다면 종료하고, 태스크 A와 태스크 B 중 어느 하나라도 종료하지 않은 경우에는 1455 단계로 진행한다.
1455 단계에서 구성 메모리를 관리하는 장치는 태스크 A의 수행이 종료되었는지를 판단한다. 태스크 A의 수행이 종료되지 않았다고 판단되는 경우에는 1405 단계로 진행하여 태스크 A를 수행한다. 한편, 태스크 A의 수행이 종료되었다고 판단되는 경우에는 태스크 B의 수행이 종료되지 않은 것으로 판단되므로, 1440 단계로 진행하여 태스크 B를 수행할 시간을 설정한 후 태스크 B를 수행한다. 이때 이미 재구성 가능 하드웨어(460)는 태스크 B를 수행하도록 되어 있으므로, 별도의 하드웨어 재구성 절차는 불필요하다.
1460 단계에서 구성 메모리를 관리하는 장치는 1425 단계에서 태스크 B의 수행이 종료되었다고 판단되는 경우 태스크 A의 수행이 종료되었는지 여부를 판단한다. 이 판단 결과 태스크 A의 수행이 종료되지 않은 경우 1415 단계로 진행하여 태스 A를 수행할 시간을 설정한 후 태스크 A를 수행한다. 이때 이미 재구성 가능 하드웨어(460)는 태스크 A를 수행하도록 되어 있으므로, 별도의 하드웨어 재구성 절차는 불필요하다.
이상 살펴본 본 발명의 일 실시예에 따른 구성 메모리를 관리하는 장치는 태스크 A를 재구성 가능 하드웨어(460)로 실현하게 되는 설정 시간이 지나면, 태스크 B로 재구성 가능 하드웨어(460)를 재구성한 후 태스크 B를 실현한다. 이후 마찬가 지로 태스크 B를 재구성 가능 하드웨어(460)로 실현하게 되는 설정 시간이 지나면 다시 태스크 A로 재구성 가능 하드웨어(460)를 재구성한 후 태스크 A를 실현한다. 태스크가 셋 이상인 경우에도 각 태스크 별로 시간 분배를 함으로써, 복수의 태스크가 존재하는 경우 하나의 재구성 가능 하드웨어(460)를 공유할 수 있다.
결과적으로 복수의 하드웨어 구성정보들로 구성된 태스크가 복수 개 존재하는 경우 각각의 태스크가 구성메모리(410)와 재구성 가능 하드웨어(460)를 공유함으로써, 메모리를 효율적으로 사용할 수 있으며, 제어 흐름의 데이타 의존도가 높은 응용(application)이나 다중 태스크 응용 등의 동적인 환경에도 메모리 이용률을 높일 수 있는 효과가 있다. 또한 하드웨어 구성정보를 적재할 구성 메모리의 슬롯을 수행 중에 동적으로 결정함으로써, 슬롯 결정이 데이타의 종류, 크기 등에 의존적인 경우이거나 여러 프로그램이 동시에 구성 메모리를 이용할 경우, 구성 메모리의 슬롯 결정을 최적으로 할 수 있는 효과가 있다. 또한 본 발명의 일 실시예에 따르면, 구성 메모리의 슬롯의 상태를 나타내는 명령어와 슬롯의 상태를 변경할 수 있는 명령어를 제공함으로써, 사용자 API(application programming interface)를 통해서 구성 메모리를 관리하는 수단을 제공할 수 있다.
한편, 상술한 본 발명의 실시예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 본 발명의 실시예에서 사용된 데이타의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예 를 들면, 롬, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등) 및 캐리어 웨이브(예를 들면, 인터넷을 통한 전송)와 같은 저장매체를 포함한다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
도 1은 재구성 가능 하드웨어의 구성 메모리를 관리하는 방법 중 정적 할당 기술을 설명하기 위한 도면이다.
도 2는 재구성 가능 하드웨어의 구성 메모리를 관리하는 방법 중 메모리 오버레이 기술을 설명하기 위한 도면이다.
도 3은 재구성 가능 하드웨어의 구성 메모리를 관리하는 방법 중 본 발명에 따른 동적 할당 메모리 관리방법을 설명하기 위한 도면이다.
도 4는 하드웨어 재구성 가능한 시스템을 나타내는 구성도이다.
도 5는 본 발명의 바람직한 일 실시예에 따른 재구성 가능 하드웨어의 구성 메모리를 관리하는 장치를 나타내는 블록도이다.
도 6은 도 5에 도시된 저장부(520)에 저장되는 외부 메모리 테이블과 구성 메모리 테이블의 일 실시예를 나타내는 도면이다.
도 7은 저장영역 또는 슬롯의 상태 정보의 실시예들과 상태 간의 천이도를 나타낸 도면이다.
도 8은 본 발명에 따른 프리펫치(Prefetch) 명령어를 이용하여 재구성 가능 하드웨어의 구성 메모리를 관리하는 방법을 나타내는 흐름도이다.
도 9는 본 발명에 따른 프리펫치(Prefetch) 명령어 수행이 완료된 경우 구성 메모리를 관리하는 방법을 나타내는 흐름도이다.
도 10은 본 발명에 따른 실행(Execute) 명령어를 이용하여 구성 메모리를 관리하는 방법을 나타내는 흐름도이다.
도 11은 본 발명에 따른 무효화(Invalidate) 명령어를 이용하여 구성 메모리를 관리하는 방법을 나타내는 흐름도이다.
도 12는 본 발명에 따른 잠금(Lock) 명령어를 이용하여 구성 메모리를 관리하는 방법을 나타내는 흐름도이다.
도 13은 본 발명에 따른 풀림(Unlock) 명령어를 이용하여 구성 메모리를 관리하는 방법을 나타내는 흐름도이다.
도 14A, 도 14B는 태스크 A와 태스크 B가 본 발명의 또 다른 일 실시예에 따라 수행될 경우의 흐름도를 도시한 것이다.

Claims (18)

  1. 하드웨어 구성정보에 따라 하드웨어의 구성이 재구성되는 재구성 가능 하드웨어의 구성 메모리를 관리하는 방법에 있어서,
    상기 구성 메모리의 복수 개의 슬롯들 각각의 상태에 기초하여 상기 하드웨어 구성정보를 저장할 수 있는 적어도 하나의 슬롯을 결정하는 단계; 및
    상기 하드웨어 구성정보를 저장할 수 있는 것으로 결정된 슬롯에 외부 메모리에 저장된 하드웨어 구성 정보를 저장하는 단계를 포함하는 것을 특징으로 하는 방법.
  2. 제 1 항에 있어서,
    상기 슬롯을 결정하는 단계는 상기 슬롯들 각각의 상태가 상기 외부 메모리의 저장 영역들 각각에 매핑되어 있지 않은 무효 상태인지 여부를 확인하고, 상기 확인 결과에 기초하여 상기 하드웨어 구성정보를 저장할 수 있는 슬롯을 결정하는 것을 특징으로 하는 방법.
  3. 제 2 항에 있어서,
    상기 슬롯을 결정하는 단계는 상기 무효 상태인지 여부를 확인한 결과, 상기 확인된 무효 상태의 슬롯에 상기 하드웨어 구성정보를 모두 저장하지 못하는 경우 유효 상태에 있는 적어도 하나의 슬롯을 무효 상태의 슬롯으로 설정하는 것을 특징 으로 하는 방법.
  4. 제 1 항에 있어서,
    상기 슬롯들 중 제 1 슬롯에 대한 프리펫치 명령어가 수신되면, 상기 제 1 슬롯의 상태를 상기 외부 메모리로부터 상기 하드웨어 구성정보를 수신 중인 로딩 상태로 변경하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  5. 제 4 항에 있어서,
    상기 제 1 슬롯에 대한 프리펫치 명령어의 수행이 완료되면, 상기 제 1 슬롯의 상태를 유효 상태로 변경하는 단계를 더 포함하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  6. 제 1 항에 있어서,
    상기 슬롯들 중 제 2 슬롯에 대한 무효화 명령어가 수신되면, 상기 제 2 슬롯의 상태를 무효 상태로 변경하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  7. 제 1 항에 있어서,
    상기 슬롯들 중 제 3 슬롯에 대한 잠금 명령어가 수신되면, 상기 제 3 슬롯의 상태를 독점적 로딩 상태 또는 독점적 유효 상태로 변경하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  8. 제 1 항에 있어서,
    상기 슬롯들 중 제 4 슬롯에 대한 풀림 명령어가 수신되면, 상기 제 4 슬롯의 상태를 로딩 상태 또는 유효 상태로 변경하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  9. 제 1 항에 있어서,
    상기 외부 메모리를 구성하는 저장영역에 대한 정보와 상기 구성 메모리를 구성하는 슬롯에 대한 정보를 저장하는 단계를 더 포함하고,
    상기 적어도 하나의 슬롯을 결정하는 단계는 상기 저장된 정보를 이용하여 적어도 하나의 슬롯을 결정하는 단계임을 특징으로 하는 방법.
  10. 제 9 항에 있어서,
    상기 저장영역에 대한 정보는 저장영역에 매핑된 슬롯의 상태 정보, 매핑된 슬롯의 인덱스 정보, 및 구성정보의 크기를 포함하고,
    상기 슬롯에 대한 정보는 슬롯의 상태 정보, 및 매핑된 저장영역의 인덱스 정보를 포함하는 것을 특징으로 하는 방법.
  11. 제 1 항에 있어서,
    적어도 하나 이상의 하드웨어 구성정보로 구성된 태스크가 복수 개 존재하는 경우,
    상기 하드웨어 구성 정보를 저장하는 단계는 제 1 태스크의 제 1 하드웨어 구성정보를 상기 구성 메모리에 저장하는 단계이고,
    상기 제 1 태스크에 대응하는 시간이 경과 후, 제 2 태스크의 제 2 하드웨어 구성정보를 상기 구성 메모리의 복수 개의 슬롯들 각각의 상태에 기초하여 제 2 하드웨어 구성정보를 저장할 수 있는 적어도 하나의 슬롯을 결정하는 단계; 및
    상기 제 2 하드웨어 구성정보를 저장할 수 있는 것으로 결정된 슬롯에 제 2 하드웨어 구성정보를 저장하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  12. 제 11 항에 있어서,
    상기 제 2 하드웨어 구성정보를 저장할 수 있는 적어도 하나의 슬롯을 결정하는 단계는, 상기 슬롯들 각각의 상태가 상기 외부 메모리의 저장 영역들 각각에 매핑되어 있지 않은 무효 상태인지 여부를 확인하고, 상기 확인 결과에 기초하여 상기 제 2 하드웨어 구성정보를 저장할 수 있는 슬롯을 결정하는 것을 특징으로 하는 방법.
  13. 제 12 항에 있어서,
    상기 제 2 하드웨어 구성정보를 저장할 수 있는 슬롯을 결정하는 단계는 상기 무효 상태인지 여부를 확인한 결과, 확인된 무효 상태의 슬롯에 상기 제 2 하드웨어 구성정보를 모두 저장하지 못하는 경우 유효 상태에 있는 적어도 하나의 슬롯 을 무효 상태의 슬롯으로 설정하는 것을 특징으로 하는 방법.
  14. 하드웨어 구성정보에 따라 하드웨어의 구성이 재구성되는 재구성 가능 하드웨어의 구성 메모리를 관리하는 장치에 있어서,
    상기 구성 메모리의 복수 개의 슬롯들 각각의 상태에 기초하여 상기 하드웨어 구성정보를 저장할 수 있는 적어도 하나의 슬롯을 결정하고, 상기 결정된 슬롯으로 외부 메모리에 저장된 하드웨어 구성 정보를 저장하는 메모리 관리부; 및
    상기 구성 메모리의 복수 개의 슬롯들 각각의 상태를 저장하는 저장부를 포함하는 것을 특징으로 하는 장치.
  15. 제 14 항에 있어서,
    상기 메모리 관리부는 상기 슬롯들 각각의 상태가 상기 외부 메모리의 저장 영역들 각각에 매핑되어 있지 않은 무효 상태인지 여부를 상기 저장부를 검색하여 확인하고, 상기 확인 결과에 기초하여 상기 하드웨어 구성정보를 저장할 수 있는 슬롯을 결정하는 것을 특징으로 하는 장치.
  16. 제 15 항에 있어서,
    상기 메모리 관리부는 상기 저장부를 검색한 결과, 상기 확인된 무효 상태의 슬롯에 상기 하드웨어 구성정보를 모두 저장하지 못하는 경우 유효 상태에 있는 적어도 하나의 슬롯을 무효 상태의 슬롯으로 설정하는 것을 특징으로 하는 장치.
  17. 제 14 항에 있어서,
    적어도 하나 이상의 하드웨어 구성정보로 구성된 태스크가 복수 개 존재하는 경우,
    상기 메모리 관리부는 제 1 태스크의 제 1 하드웨어 구성정보를 상기 구성 메모리에 저장하고, 상기 제 1 태스크에 대응하는 시간이 경과 후, 제 2 태스크의 제 2 하드웨어 구성정보를 상기 구성 메모리의 복수 개의 슬롯들 각각의 상태에 기초하여 제 2 하드웨어 구성정보를 저장할 수 있는 적어도 하나의 슬롯을 결정하고, 상기 제 2 하드웨어 구성정보를 저장할 수 있는 것으로 결정된 슬롯에 제 2 하드웨어 구성정보를 저장하는 것을 특징으로 하는 장치.
  18. 제 1 항 내지 제 13 항 중에 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR20080006700A 2007-08-27 2008-01-22 재구성 가능 하드웨어의 구성 메모리를 관리하는 방법 및장치 KR101478648B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US12/076,276 US8402410B2 (en) 2007-08-27 2008-03-14 Method and apparatus for managing configuration memory of reconfigurable hardware

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20070086276 2007-08-27
KR1020070086276 2007-08-27

Publications (2)

Publication Number Publication Date
KR20090023006A true KR20090023006A (ko) 2009-03-04
KR101478648B1 KR101478648B1 (ko) 2015-01-02

Family

ID=40692780

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20080006700A KR101478648B1 (ko) 2007-08-27 2008-01-22 재구성 가능 하드웨어의 구성 메모리를 관리하는 방법 및장치

Country Status (1)

Country Link
KR (1) KR101478648B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140060919A (ko) * 2012-11-13 2014-05-21 삼성전자주식회사 메모리 장치를 이용하는 방법 및 그 장치
CN114488927A (zh) * 2021-12-31 2022-05-13 广东省离散智造科技创新有限公司 一种plc硬件组态方法、系统、装置及存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6920627B2 (en) 2002-12-13 2005-07-19 Xilinx, Inc. Reconfiguration of a programmable logic device using internal control
JP4164753B2 (ja) 2003-09-24 2008-10-15 ソニー株式会社 ファイル管理装置、ファイル管理方法、ファイル管理方法のプログラム及びファイル管理方法のプログラムを記録した記録媒体

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140060919A (ko) * 2012-11-13 2014-05-21 삼성전자주식회사 메모리 장치를 이용하는 방법 및 그 장치
CN114488927A (zh) * 2021-12-31 2022-05-13 广东省离散智造科技创新有限公司 一种plc硬件组态方法、系统、装置及存储介质

Also Published As

Publication number Publication date
KR101478648B1 (ko) 2015-01-02

Similar Documents

Publication Publication Date Title
US9244883B2 (en) Reconfigurable processor and method of reconfiguring the same
JP5050069B2 (ja) 再構成可能なプログラマブルロジックデバイスコンピュータシステム
US6640333B2 (en) Architecture for a sea of platforms
CN101221514B (zh) 选择处理器对程序而言遵循的架构级别的方法、处理器及系统
WO2000031652A9 (en) Reconfigurable programmable logic device computer system
US10353717B2 (en) Build-time memory management for multi-core embedded system
WO2010116431A1 (ja) キャッシュ制御装置及びキャッシュ制御方法
US10168957B2 (en) Directed placemat of data in memory
US20210067162A1 (en) Programmable logic device virtualization
JPH0658678B2 (ja) 回路設計を合成する為のプロセス及び装置
US6779168B2 (en) Magnetoresistive memory for a complex programmable logic device
US8402410B2 (en) Method and apparatus for managing configuration memory of reconfigurable hardware
WO2002008913A2 (en) Memory resource arbitrator for multiple gate arrays
KR100781358B1 (ko) 데이터 처리 시스템 및 그의 데이터 처리방법
CN103140834A (zh) 用于填充存储器区域的处理器支持
Merino et al. A hardware operating system for dynamic reconfiguration of FPGAs
KR101478648B1 (ko) 재구성 가능 하드웨어의 구성 메모리를 관리하는 방법 및장치
US9503096B1 (en) Multiple-layer configuration storage for runtime reconfigurable systems
US9853644B2 (en) Multiple-layer configuration storage for runtime reconfigurable systems
Kohútka et al. Hardware dynamic memory manager for hard real-time systems
Iturbe et al. ATB: Area-time response balancing algorithm for scheduling real-time hardware tasks
JP6333370B2 (ja) キャッシュ線中で動的配列データ構造を実装するための方法
EP4390768A1 (en) Implementing neural networks in hardware
GB2625739A (en) Mapping neural networks to hardware
JP2018124688A (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: 20171121

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20181119

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20191115

Year of fee payment: 6