KR20040004617A - 컴퓨팅 시스템 - Google Patents

컴퓨팅 시스템 Download PDF

Info

Publication number
KR20040004617A
KR20040004617A KR10-2003-7014600A KR20037014600A KR20040004617A KR 20040004617 A KR20040004617 A KR 20040004617A KR 20037014600 A KR20037014600 A KR 20037014600A KR 20040004617 A KR20040004617 A KR 20040004617A
Authority
KR
South Korea
Prior art keywords
computing
unit
computing system
data
result
Prior art date
Application number
KR10-2003-7014600A
Other languages
English (en)
Other versions
KR100776608B1 (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 동경 엘렉트론 디바이스 주식회사
Publication of KR20040004617A publication Critical patent/KR20040004617A/ko
Application granted granted Critical
Publication of KR100776608B1 publication Critical patent/KR100776608B1/ko

Links

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit

Abstract

컴퓨팅 유닛(42)은 제1 컴퓨팅 도중에 제2 컴퓨팅을 실행한다. 이때, 컴퓨팅 유닛(42)의 하드웨어 구조는 실행 대상인 컴퓨팅에 따라 전환된다. 컴퓨팅 유닛(42)에 의해 실행되는 컴퓨팅이 제1 컴퓨팅에서 제2 컴퓨팅으로 전환될 경우, 제어기(46)는 컴퓨팅 유닛(42)의 내부 상태를 메모리(44)에 기억시킨다. 컴퓨팅 유닛(42)에 의해 실행되는 컴퓨팅이 제2 컴퓨팅에서 제1 컴퓨팅으로 복귀할 경우, 제어기(46)는 메모리(44)에 기억된 상기 내부 상태를 컴퓨팅 유닛(42)에 반환함으로써 상기 제1 컴퓨팅의 실행이 계속되도록 제어한다.

Description

컴퓨팅 시스템 {COMPUTING SYSTEM}
현재의 범용 컴퓨터에 있어서, 컴퓨팅은 중앙 처리 장치(CPU)가 메모리에 기억된 프로그램의 명령어를 순차적으로 해석하면서 진행된다. CPU는 실행의 대상이 되는 컴퓨팅을 소프트웨어에 의해 실행하기 위한 것이다. 따라서 CPU의 하드웨어 구조는 반드시 실행 대상인 컴퓨팅에 가장 적합한 것일 필요는 없다. 그 결과, 최종 컴퓨팅 결과를 얻기까지는 많은 오버헤드(overhead)가 초래된다.
이와 달리, 프로그램으로 표현된 컴퓨팅을 하드웨어로 직접 실행하는 기술로서 FPGA(Field Programmable Gate Array)를 사용하는 컴퓨팅 시스템이 알려져 있다. 일본 특허 공개 공보 제H8-504285호(국제 공개 제WO94/10627호) 및 제2000-516418호(국제 공개 제WO98/08306호)는 FPGA를 사용하는 컴퓨팅 시스템에 관하여 개시하고 있으며, 본 명세서에 참조로서 병합되었다.
FPGA의 하드웨어 구조는 로직 데이터에 의해 변경될 수 있다. 이러한 FPGA를 사용함으로써 하드웨어는 프로그램으로 표현되는 컴퓨팅을 직접 실행할 수 있게 된다. 따라서 CPU가 컴퓨팅을 수행하는 경우보다 더욱 빠른 속도로 컴퓨팅 결과를 얻을 수 있다.
반면에, 현재의 범용 컴퓨터로 실행되는 대규모 프로그램은 복수의 프로그램 모듈로 이루어진다. 대규모 프로그램으로 표현되는 컴퓨팅은 한 프로그램 모듈이 다른 프로그램 모듈을 호출하면서 진행된다.
그러나 앞서 설명한 FPGA를 사용하는 통상의 컴퓨팅 시스템은, 실질적으로 하나의 프로그램 모듈로 이루어진 프로그램으로 표현되는 컴퓨팅을 실행할 수 있을 뿐이다. 달리 말해서, FPGA를 사용하는 통상의 컴퓨팅 시스템은 복수의 프로그램 모듈로 이루어진 대규모 프로그램으로 표현되는 대규모 컴퓨팅을 실행할 수 없다는 것이다. 따라서 FPGA를 사용하는 통상의 컴퓨팅 시스템을 다양한 방식으로 응용할 수 없다는 문제가 있다.
본 발명은 하드웨어가 프로그램에 따라 컴퓨팅을 직접 실행하는 컴퓨팅 시스템에 관한 것이고, 특히 대규모 프로그램에 따라 컴퓨팅을 실행하는 데 적합한 컴퓨팅 시스템에 관한 것이다.
도 1은 제1 실시예에 따른 컴퓨팅 시스템의 구조를 나타낸 도면.
도 2는 도 1의 컴퓨팅 시스템에 의해 실행되는 컴퓨팅의 예를 나타낸 도면.
도 3은 제2 실시예에 따른 컴퓨팅 시스템의 구조를 나타낸 도면.
도 4는 컴퓨팅 시스템의 구조에 관한 또 다른 예를 나타낸 도면.
도 5는 다른 컴퓨팅 시스템이 도 4의 컴퓨팅 시스템에 연결되는 예를 나타낸 도면.
도 6은 컴퓨팅 시스템의 구조에 관한 또 다른 예를 나타낸 도면.
본 발명은 앞서 언급한 종래 기술의 문제점을 해결하기 위한 것이며, 본 발명의 목적은 복수의 프로그램 모듈로 이루어진 대규모 프로그램으로 표현되는 컴퓨팅을 하드웨어가 직접 실행하는 컴퓨팅 시스템을 제공하는 것이다.
이러한 목적을 달성하기 위해, 본 발명의 제1 태양에 따른 컴퓨팅 시스템은, 실행 대상인 컴퓨팅에 대응하는 하드웨어 구조를 가지고 상기 실행 대상인 컴퓨팅을 실행하는 컴퓨팅 유닛(42)과, 상기 컴퓨팅 유닛의 내부 상태를 기억하는 상태 메모리(44)와, 상기 컴퓨팅 유닛의 내부 상태를 제어하는 제어기(46, 46')를 포함한다. 여기서 상기 컴퓨팅 유닛은 제1 컴퓨팅 도중에 제2 컴퓨팅을 실행하고, 상기제어기(46, 46')는 상기 컴퓨팅 유닛(42)에 의해 실행되는 컴퓨팅이 상기 제1 컴퓨팅으로부터 상기 제2 컴퓨팅으로 전환될 때에 상기 상태 메모리(44)에 내부 상태를 기억시키고, 상기 컴퓨팅 유닛(42)에 의해 실행되는 컴퓨팅이 상기 제2 컴퓨팅으로부터 상기 제1 컴퓨팅으로 복귀할 때에 상기 상태 메모리(44)에 기억된 상기 내부 상태를 상기 컴퓨팅 유닛(42)에 반환함으로써 상기 컴퓨팅 유닛(42)이 상기 제1 컴퓨팅의 실행을 재개하도록 제어한다.
본 발명에 있어서, 복수의 프로그램 모듈로 이루어진 대규모 프로그램으로 표현되는 컴퓨팅은 범용 CPU를 사용하지 않고 하드웨어에 의해 직접 실행될 수 있다.
상기 상태 메모리(44)는 선입후출(First-In-Last-Out) 방식에 따라 상기 내부 상태를 기억할 수 있다.
상기 컴퓨팅 유닛(42)은 복수의 게이트 회로를 포함할 수 있다.
상기 복수의 게이트 회로간의 연결은 실행 대상인 컴퓨팅에 따라 전환될 수 있다.
본 발명의 제2 태양에 따른 컴퓨팅 시스템은, 복수의 데이터 모듈(이들 각각은 소정의 컴퓨팅을 실행하는 데 적합한 하드웨어 구조를 나타냄)을 모듈별로 적재(load)하는 로더(loader)(3)와, 적재된 데이터 모듈로 표현되는 하드웨어 구조에 따라 변경될 수 있는 하드웨어 구조를 가지고 소정의 컴퓨팅을 실행하는 컴퓨팅 유닛(42)과, 상기 컴퓨팅 유닛(42)의 하드웨어 구조가 변경될 경우 상기 컴퓨팅 유닛(42)에 의해 실행되는 컴퓨팅의 중간 결과를 보유하고, 상기 컴퓨팅 유닛(42)의하드웨어 구조가 원래 상태로 복귀할 경우 상기 보유된 중간 결과를 상기 컴퓨팅 유닛(42)에 반환하는 결과 보유 유닛(44)을 포함한다.
상기 복수의 데이터 모듈은, 제1 컴퓨팅을 실행하기 위한 제1 하드웨어 구조를 나타내는 제1 데이터 모듈 및 상기 제1 컴퓨팅 도중에 실행되는 제2 컴퓨팅을 실행하기 위한 제2 하드웨어 구조를 나타내는 제2 데이터 모듈을 포함할 수 있다.
상기 제1 데이터 모듈은 상기 제1 컴퓨팅 도중에 상기 제2 데이터 모듈을 호출하기 위한 호출 데이터를 포함할 수 있다.
상기 컴퓨팅 시스템은, 적재된 제1 데이터 모듈에 포함된 호출 데이터를 검출하는 검출 유닛(43)과, 상기 컴퓨팅 유닛(42)에 의해 실행되는 상기 제1 컴퓨팅의 중간 결과를 상기 결과 보유 유닛(44)에 기억시키고, 상기 검출 유닛(43)이 상기 호출 데이터를 검출하는 경우에 상기 로더(3)가 상기 제2 데이터 모듈을 적재하도록 제어하는 제어기(46)를 더 포함할 수 있다.
상기 컴퓨팅 유닛(42)이 상기 제2 컴퓨팅을 완료하는 경우, 상기 제어기(46)는 상기 로더(3)가 상기 제1 데이터 모듈을 적재하도록 제어할 수 있고, 상기 결과 보유 유닛(44)에 기억된 상기 중간 결과를 상기 컴퓨팅 유닛(42)에 반환함으로써 상기 컴퓨팅 유닛(42)이 상기 제1 컴퓨팅을 재개하도록 제어할 수 있다.
상기 컴퓨팅 시스템은, 상기 제1 컴퓨팅의 중간 결과 일부를 상기 제2 컴퓨팅을 실행하기 위한 인자(argument)로서 상기 컴퓨팅 유닛(42)에 공급하고, 상기 제2 컴퓨팅의 실행 결과를 상기 제1 컴퓨팅을 재개하기 위한 인자로서 상기 컴퓨팅 유닛(42)에 공급하는 인자 공급 유닛(45)을 더 포함할 수 있다.
상기 결과 보유 유닛(44)은 선입후출 방식에 따라 중간 결과를 기억하는 메모리를 포함할 수 있다.
상기 컴퓨팅 유닛(42)은 복수의 게이트 회로를 포함할 수 있다.
상기 복수의 게이트 회로간의 연결은 적재된 데이터 모듈에 따라 전환될 수 있다.
상기 컴퓨팅 시스템은, 공급된 데이터 모듈로 표현되는 하드웨어 구조에 따라 변경될 수 있는 하드웨어 구조를 가지고 소정의 컴퓨팅을 실행하는 또 다른 컴퓨팅 시스템에 연결될 수 있다.
상기 컴퓨팅 시스템은, 상기 컴퓨팅 시스템이 다른 컴퓨팅 시스템에 연결되어 있는 경우, 상기 다른 컴퓨팅 시스템이 상기 제2 컴퓨팅을 실행하도록 제어하기 위해 상기 적재된 제2 데이터 모듈을 상기 다른 컴퓨팅 시스템에 공급하고, 상기 제2 컴퓨팅의 실행 결과를 상기 다른 컴퓨팅 시스템으로부터 취득하는 결과 취득 유닛(7)을 더 포함할 수 있다.
상기 컴퓨팅 시스템이 다른 컴퓨팅 시스템에 연결되어 있는 경우, 상기 컴퓨팅 유닛(42)은 적재된 상기 제2 데이터 모듈을 상기 결과 취득 유닛(7)에 공급하고, 상기 제1 컴퓨팅의 실행을 중단시킬 수 있다.
상기 결과 취득 유닛(7)은, 취득한 상기 제2 컴퓨팅의 실행 결과를 상기 제1 컴퓨팅을 재개하기 위한 인자로서 상기 컴퓨팅 유닛(42)에 공급함으로써 상기 컴퓨팅 유닛(42)이 상기 제1 컴퓨팅을 재개하도록 제어할 수 있다.
본 발명의 제3 태양에 따른 컴퓨팅 시스템은, 복수의 프로그램 모듈(이들 각각은 소정의 컴퓨팅을 나타냄)을 모듈별로 적재하는 로더(3')와, 적재된 프로그램 모듈에 포함된 명령(instruction)을 해석하고, 해석 결과에 따라 상기 적재된 프로그램 모듈로 표현되는 컴퓨팅에 대응하는 하드웨어 구조를 실현하기 위한 적어도 하나의 신호를 출력하는 인터프리터(47)와, 상기 인터프리터(47)에 의한 상기 적어도 하나의 신호 출력에 따라 변경될 수 있는 하드웨어 구조를 가지고 소정의 컴퓨팅을 실행하는 컴퓨팅 유닛(42)과, 상기 컴퓨팅 유닛(42)의 하드웨어 구조가 변경될 경우 상기 컴퓨팅 유닛(42)에 의해 실행되는 컴퓨팅의 중간 결과를 보유하고, 상기 하드웨어 구조가 원래 구조로 복귀할 경우 상기 보유된 중간 결과를 상기 컴퓨팅 유닛(42)에 반환함으로써 상기 컴퓨팅 유닛을 상기 컴퓨팅 유닛(42)의 하드웨어 구조가 변경되기 전과 같이 회복시키는 결과 보유 유닛(44)을 포함한다.
상기 복수의 프로그램 모듈은 제1 컴퓨팅을 나타내는 제1 프로그램 모듈 및 상기 제1 컴퓨팅 도중에 실행되는 제2 컴퓨팅을 나타내는 제2 프로그램 모듈을 포함할 수 있다.
상기 제1 프로그램 모듈은 상기 제1 컴퓨팅 도중에 상기 제2 프로그램 모듈을 호출하기 위한 호출 명령을 포함할 수 있다.
상기 컴퓨팅 시스템은, 상기 컴퓨팅 유닛(42)에 의해 실행되는 상기 제1 컴퓨팅의 중간 결과를 상기 결과 보유 유닛(44)에 기억시키고, 상기 인터프리터(47)가 상기 호출 명령을 해석하는 경우에 상기 로더(3')가 상기 제2 프로그램 모듈을 적재하도록 제어하는 제어기(46')를 더 포함할 수 있다.
상기 컴퓨팅 유닛(42)이 상기 제2 컴퓨팅을 완료하는 경우, 상기제어기(46')는 상기 로더(3')가 상기 제1 프로그램 모듈을 적재하도록 제어할 수 있고, 상기 결과 보유 유닛(44)에 기억된 상기 중간 결과를 상기 컴퓨팅 유닛(42)에 반환함으로써 상기 컴퓨팅 유닛(42)이 상기 제1 컴퓨팅을 재개하도록 제어할 수 있다.
상기 컴퓨팅 시스템은, 상기 제1 컴퓨팅의 중간 결과 일부를 상기 제2 컴퓨팅을 실행하기 위한 인자로서 상기 컴퓨팅 유닛(42)에 공급하고, 상기 제2 컴퓨팅의 실행 결과를 상기 제1 컴퓨팅을 재개하기 위한 인자로서 상기 컴퓨팅 유닛(42)에 공급하는 인자 공급 유닛(45)을 더 포함할 수 있다.
상기 결과 보유 유닛(44)은 선입후출 방식에 따라 중간 결과를 기억하는 메모리를 포함할 수 있다.
상기 컴퓨팅 유닛(42)은 복수의 게이트 회로를 포함할 수 있다.
상기 복수의 게이트 회로간의 연결은 상기 인터프리터로부터 공급되는 적어도 하나의 신호에 따라 전환될 수 있다.
상기 컴퓨팅 시스템은, 공급된 프로그램 모듈로 표현되는 컴퓨팅에 따라 변경될 수 있는 하드웨어 구조를 가지고 상기 공급된 프로그램 모듈로 표현되는 컴퓨팅을 실행하는 또 다른 컴퓨팅 시스템에 연결될 수 있다.
상기 컴퓨팅 시스템은, 상기 컴퓨팅 시스템이 다른 컴퓨팅 시스템에 연결되어 있는 경우, 상기 다른 컴퓨팅 시스템이 상기 제2 컴퓨팅을 실행하도록 제어하기 위해 상기 적재된 제2 프로그램 모듈을 상기 다른 컴퓨팅 시스템에 공급하고, 상기 제2 컴퓨팅의 실행 결과를 상기 다른 컴퓨팅 시스템으로부터 취득하는 결과 취득유닛(7)을 더 포함할 수 있다.
상기 컴퓨팅 시스템이 다른 컴퓨팅 시스템에 연결되어 있는 경우, 상기 인터프리터(47)는 적재된 상기 제2 프로그램 모듈을 상기 결과 취득 유닛(7)에 공급할 수 있다.
상기 결과 취득 유닛(7)은, 취득한 상기 제2 컴퓨팅의 실행 결과를 상기 제1 컴퓨팅을 재개하기 위한 인자로서 상기 컴퓨팅 유닛(42)에 공급함으로써 상기 컴퓨팅 유닛(42)이 상기 제1 컴퓨팅을 계속하도록 제어할 수 있다.
제1 실시예
본 발명의 제1 실시예에 따른 컴퓨팅 시스템을 도면을 참조하여 설명하도록 하겠다.
도 1에 나타낸 바와 같이, 제1 실시예에 따른 컴퓨팅 시스템(1)은 FPGA 데이터 기억 유닛(2), 로더(3) 및 FPGA 장치(4)를 포함한다.
FPGA 데이터 기억 유닛(2)은 복수의 데이터 모듈{FPGA 데이터(21 내지 2N)}을 기억한다.
컴파일러(6)는 복수의 프로그램 모듈{소스 프로그램(51 내지 5N)}을 컴파일하고, 따라서 FPGA 데이터(21 내지 2N)가 생성된다. 소스 프로그램(51 내지 5N) 각각은 하드웨어의 구조를 표현할 수 있는 프로그램 언어로 기술되어 있으며, 컴퓨팅 시스템(1)에 의해 실행될 컴퓨팅을 나타낸다. FPGA 데이터(21 내지 2N)는 소스 프로그램(51 내지 5N)으로 표현되는 컴퓨팅을 실행시키는 데 가장 적합한 하드웨어 구조를 나타낸다.
소스 프로그램(51 내지 5N) 중 적어도 하나는 다른 프로그램 모듈을 호출하기 위한 함수를 포함한다. 즉 FPGA 데이터(21 내지 2N) 중 적어도 하나는 다른 데이터 모듈을 호출하기 위한 호출 데이터를 포함한다.
로더(3)는 논리 회로 등을 포함하며, FPGA 데이터 기억 유닛(2)에 기억된 FPGA 데이터(21 내지 2N)를 적합한 시간에 모듈 유닛에 의해 FPGA 장치(4)에 적재한다. 특히, 로더(3)는 실행 대상인 컴퓨팅을 나타내는 프로그램 모듈로부터 생성된 데이터 모듈, 즉 실행 대상인 컴퓨팅에 대응되는 데이터 모듈을 FPGA 장치(4)에 적재한다. 데이터 모듈을 적재시키는 명령어는 컴퓨팅이 개시되는 시점에 외부로부터 주어지며, 그 밖의 것은 FPGA 장치(4)에 의한 컴퓨팅 실행에 따라 주어질 수 있다.
FPGA 장치(4)는 로더(3)에 의해 적재되는 데이터 모듈로 표현되는 하드웨어구조를 가지며, 상기 적재된 데이터 모듈에 대응하는 컴퓨팅을 외부로부터 공급된 입력 데이터에 적용시킨다. 그 후 FPGA 장치(4)는 상기 컴퓨팅의 결과를 출력 데이터로서 외부에 출력한다.
특히, FPGA 장치(4)는 FPGA 데이터 메모리(41), 게이트 어레이(42), 호출 검출 유닛(43), 저장 스택(44), 인자 전달 유닛(argument handing unit)(45) 및 제어 유닛(46)을 포함한다. 호출 검출 유닛(43), 저장 스택(44), 인자 취급 유닛(45) 및 제어 유닛(46)은 논리 회로 등으로 구성된다.
FPGA 데이터 메모리(41)는 RAM(Random Access Memory)에 의해 구성되고, 로더(3)에 의해 적재된 데이터 모듈을 기억한다.
게이트 어레이(42)는 예컨대 AND, OR 및 NOT 등 복수의 게이트 회로로 구성된 컴퓨팅 유닛(42A)과, 복수의 플립플롭(FF)으로 구성된 상태 보유 유닛(42B)을 포함한다.
컴퓨팅 유닛(42A)은 적재된 데이터 모듈로 표현되는 하드웨어 구조, 즉 실행 대상인 컴퓨팅을 실행하는 데 가장 적합한 하드웨어 구조를 갖는다. 특히, 컴퓨팅 유닛(42A)을 구성하는 게이트 회로 사이의 연결은 적재된 데이터 모듈에 따라 전환된다. 이로 인해, 컴퓨팅 유닛(42A)의 하드웨어 구조는 적재된 데이터 모듈에 의해 지정된 구조가 된다. 그리고 적재된 데이터 모듈에 의해 지정된 하드웨어 구조를 갖게 됨으로써, 컴퓨팅 유닛(42A)은 적재된 데이터 모듈에 대응하는 컴퓨팅을 고속으로 수행할 수 있게 된다.
상태 보유 유닛(42B)은 컴퓨팅 유닛(42A)에 의해 실행되는 컴퓨팅의 중간 결과(내부 상태)를 보유한다. 상태 보유 유닛(42B)을 구성하는 플립플롭 각각은 외부로부터 기록되는 데이터를 받아들일 수 있다.
호출 검출 유닛(43)은 적재된 데이터 모듈에 포함된, 다른 데이터 모듈을 호출하기 위한 호출 데이터를 검출한다.
호출 검출 유닛(3)이 호출 데이터를 검출하는 경우, 상태 보유 유닛(42B)이 보유한 데이터(중간 결과) 및 다른 데이터 모듈을 호출하는 데이터 모듈(즉 호출 데이터를 포함하는 데이터 모듈)을 식별하기 위한 식별 데이터를 FILO(선입후출) 방식에 따라 저장하기 위해 저장 스택(44)이 사용된다.
인자 전달 유닛(45)은 다른 데이터 모듈을 호출하는 데이터 모듈(호출자 데이터 모듈이라 불림)과 호출되는 데이터 모듈 사이에서, 호출될 데이터 모듈이 실제로 호출되는 때 및 호출자 데이터 모듈이 FPGA 데이터 메모리(41)로 복귀하는 때에 인자를 전달한다.
특히, 데이터 모듈이 호출되는 경우, 인자 전달 유닛(45)은 상태 보유 유닛(42B)의 복수의 플립플롭에 의해 보유되는 데이터 중에서 상기 호출된 데이터 모듈에 대응하는 컴퓨팅을 실행하는 데 쓰이는 데이터를 보유한다. 그 후 인자 전달 유닛(45)은 보유된 데이터를 상기 호출된 데이터 모듈에 대응하는 컴퓨팅의 입력(인자)으로서 게이트 어레이(42)에 전달한다. 그리고 호출자 데이터 모듈이 다시 적재되는 경우, 인자 전달 유닛(45)은 상태 보유 유닛(42B)의 복수의 플립플롭이 보유하는 데이터, 즉 상기 호출된 데이터 모듈에 대응하는 컴퓨팅의 결과(반환값)를 보유한다. 그 후 인자 전달 유닛(45)은 보유된 결과를 상태 보유 유닛(42B)을구성하는 소정의 플립플롭에 기록한다.
어떤 데이터 모듈이 호출자 데이터 모듈에 의해 호출되는 경우, 제어 유닛(46)은 호출자 데이터 모듈의 식별 정보와 함께 호출자 데이터 모듈에 대응하는 컴퓨팅의 중간 결과가 저장 스택(44)에 저장되도록 제어한다. 그리고 동시에, 제어 유닛(46)은 상태 보유 유닛(42B)에 의해 보유되는 데이터 중에서도, 호출된 데이터 모듈에 대응하는 컴퓨팅을 실행할 경우에 사용되는 데이터{인자 전달 유닛(45)에 있음}를 임시로 기억한다. 그 후 제어 유닛(46)은 로더(3)가 호출된 데이터 모듈을 FPGA 데이터 메모리(41)에 적재하도록 제어한다. 그리고 제어 유닛(46)은 인자 전달 유닛(45)에 저장된 데이터를 게이트 어레이(42)에 입력 데이터로서 전달한다.
호출된 데이터 모듈에 대응하는 컴퓨팅이 완료되면, 제어 유닛(46)은 컴퓨팅의 결과(출력 데이터)를 인자 전달 유닛(45)에 임시로 기억한다. 그 후 제어 유닛(46)은 저장 스택(44)에 저장된 식별 데이터에 의해 식별되는 호출자 데이터 모듈을 로더(3)가 FPGA 데이터 메모리(41)에 적재하도록 제어한다. 그 후 제어 유닛(46)은 저장 스택(44)에 저장되어 있던 데이터(중간 결과)가 상태 보유 유닛(42B)으로 반환되도록 제어하고, 인자 전달 유닛(45)에 임시로 기억된 결과(출력 데이터)를 상태 보유 유닛(42B)을 구성하는 소정의 플립플롭에 기록한다.
FPGA 장치(4)에 대해 외부로부터 입력되는 입력 데이터는 키보드와 같은 입력 장치에 의한 데이터 입력일 수 있고, 또한 자기 디스크 장치와 같은 외부 기억 장치로부터 판독되는 데이터일 수도 있다. FPGA 장치(4)로부터 외부로 출력되는 출력 데이터는 디스플레이 장치와 같은 출력 장치에 의한 출력일 수 있고, 또한 외부 기억 장치에 기록될 수도 있으며, 주변 장치를 제어하는 제어 데이터일 수도 있다.
이하 제1 실시예에 따른 컴퓨팅 시스템의 동작을 설명하도록 한다.
도 2에 나타낸 컴퓨팅을 컴퓨팅 시스템(1)이 실행하는 경우를 예로 들어 이하 설명하기로 한다.
도 2에 나타낸 바와 같이 FPGA 데이터(21)가 우선 적재된 후, FPGA 데이터(21)가 FPGA 데이터(2N)를 호출하고 난 다음, FPGA 데이터(21)가 복귀하게 된다. 전체 컴퓨팅은 도 2에 나타낸 바처럼 컴퓨팅 A, 컴퓨팅 B, 컴퓨팅 C로 이루어진다. 컴퓨팅 A는 FPGA 데이터(21)에 대응되고, FPGA 데이터(2N)에 대응되는 컴퓨팅 B가 필요해지기 전의 부분을 이룬다. 컴퓨팅 C는 FPGA 데이터(21)에 대응되고, 컴퓨팅 B의 결과를 사용하여 실행되는 부분을 이룬다.
우선, 로더(3)가 외부로부터 공급된 적재 명령에 따라 FPGA 데이터(21)를 FPGA 데이터 메모리(41)에 적재한다. 이로 인해 FPGA 데이터(21)에 대응하는 레벨을 갖는 신호가 컴퓨팅 유닛(42A)에 입력된다.
컴퓨팅 유닛(42A)을 구성하는 게이트 회로 사이의 연결이 상기 입력 신호에 따라 전환되고, 이에 따라 컴퓨팅 유닛(42A)의 하드웨어 구조가 FPGA 데이터(21)에 의해 지정된 구조로 된다. 이로 인해, 컴퓨팅 유닛(42A)은 FPGA 데이터(21)에 대응되는 컴퓨팅 A를 실행할 수 있게 된다.
입력 데이터가 외부로부터 게이트 어레이(42)에 공급되는 경우, 컴퓨팅 유닛(42A)은 컴퓨팅 A를 공급된 입력 데이터에 적용한다.
호출 검출 유닛(43)은 적재된 FPGA 데이터(21)에 포함된 호출 데이터를 검출하고, 호출 데이터가 검출되었음을 나타내는 검출 신호를 제어 유닛(46)으로 출력한다.
제어 유닛(46)은 호출 검출 유닛(43)에서 공급된 검출 신호에 응답하여, 컴퓨팅 A가 완료되는 시점에서 얻어진 컴퓨팅 결과(중간 결과)가 저장 스택(44)에 저장되도록 제어한다. 특히, 제어 유닛(46)은 상태 보유 유닛(42B)이 보유하는 데이터{게이트 어레이(42)의 내부 상태}가 호출자 데이터 모듈인 FPGA 데이터(21)의 식별 데이터와 함께 저장 스택(44)의 최상위 레벨에 저장되도록 제어한다.
그리고 제어 유닛(46)은 상태 보유 유닛(42B)이 보유하는 데이터 중에서 인자 전달 유닛(45)에 있는, 컴퓨팅 B에 사용되는 데이터를 임시로 기억한다. 따라서 FPGA 데이터(2N)에 대응되는 레벨을 갖는 신호가 컴퓨팅 유닛(42A)으로 입력된다.
컴퓨팅 유닛(42A)을 구성하는 게이트 회로 사이의 연결이 입력 신호에 따라 전환되고, 이에 따라 컴퓨팅 유닛(42A)의 하드웨어 구조는 FPGA 데이터(2N)에 의해 지정된 구조로 된다. 이로 인해, 컴퓨팅 유닛(42A)은 FPGA 데이터(2N)에 대응하는 컴퓨팅 B를 실행할 수 있게 된다.
제어 유닛(46)은 인자 전달 유닛(45)에 임시로 기억된 데이터를 게이트 어레이(42)에 입력 데이터로서 입력한다. 따라서 컴퓨팅 유닛(42A)은 컴퓨팅 B를 실행하게 된다.
컴퓨팅 B가 완료되면, 컴퓨팅 유닛(46)은 게이트 어레이(42)로부터의 출력 데이터를 호출자 FPGA 데이터(21)에 전달될 인자로서 인자 전달 유닛(45)에 임시로기억한다.
그 후 제어 유닛(46)은 저장 스택(44)의 최상위 레벨에 저장된 식별 데이터를 참조하여 호출자 데이터인 FPGA 데이터(21)를 식별한다.
제어 유닛(46)은 로더(3)가 FPGA 데이터(21)를 FPGA 데이터 메모리(41)에 재적재하도록 제어한다. 따라서 컴퓨팅 유닛(42A)의 하드웨어 구조는 앞서 설명한 것과 동일한 방식으로, FPGA 데이터(2N)에 의해 지정된 구조로부터 FPGA 데이터(21)에 의해 지정된 구조로 전환된다.
호출자 FPGA 데이터(21)가 재적재되면, 제어 유닛(46)은 저장 스택(44)의 최상위 레벨에 위치한 데이터(내부 상태)를 상태 보유 유닛(42B)의 플립플롭 각각에 재기록한다. 따라서 게이트 어레이(42)의 내부 상태가 원래 상태로 복귀하게 된다.
또한 제어 유닛(46)은 인자 전달 유닛(45)에 임시로 기억된 데이터를, 상태 보유 유닛(42B)을 구성하는 소정의 플립플롭에 기록한다.
이 상태에서, 컴퓨팅 유닛(42A)은 FPGA 데이터(21)에 대응하는 컴퓨팅 C를 개시하고, 출력 데이터로서 최종 컴퓨팅 결과를 출력한다.
FPGA 데이터(21)에 의해 호출되는 FPGA 데이터(2N)는 또 다른 데이터 모듈을 호출할 수 있다. 이 경우 호출 검출 유닛(43)은 앞서 설명한 바와 마찬가지 방식으로, FPGA 데이터(2N)에 포함된 호출 데이터를 검출하여 호출 데이터가 검출되었음을 나타내는 검출 신호를 제어 유닛(46)에 출력할 수 있다. 그 후 제어 유닛(46)은 공급된 검출 신호에 따라 앞서 설명한 바와 동일한 제어를 수행한다. 이러한 동작에 의해, 3개 이상의 프로그램 모듈로 표현되는 대규모 컴퓨팅이 실행될 수 있다.
앞서 설명한 바와 마찬가지로, 컴퓨팅 유닛(42A)의 하드웨어 구조는 적재된 데이터 모듈에 의해 지정된, 실행 대상인 컴퓨팅의 실행에 가장 적합한 구조로 전환된다. 이로 인해, CPU가 프로그램을 판독하여 컴퓨팅을 실행하는 경우보다 빠른 속도로 컴퓨팅이 실행될 수 있는 것이다.
그리고 호출자 데이터 모듈에 대응하는 컴퓨팅의 중간 결과를 저장 스택에 저장함으로써, 호출된 데이터 모듈에 대응하는 컴퓨팅이 완료된 후에 상기 호출자 데이터 모듈에 대응하는 컴퓨팅이 재개될 수 있는 것이다. 이로 인해, 복수의 프로그램 모듈로 표현되는 대규모 컴퓨팅이 실행될 수 있는 것이다.
컴퓨팅 시스템(1)은 복수의 프로그램 모듈로 이루어진 대규모 프로그램으로 표현되는 컴퓨팅을 실행할 수 있다. 따라서 프로그램이 복수의 프로그램 모듈로 나뉘어 각 프로그램 모듈별로 프로그램을 생성하거나, 또는 또 다른 프로그램을 생성하는 경우에 각 프로그램 모듈이 그 일부로서 사용될 수 있다. 결과적으로, 프로그램의 생성이 단기간 내에 실현될 수 있다.
제2 실시예
이제 본 발명의 제2 실시예에 따른 컴퓨팅 시스템을 도면을 참조하여 설명하도록 한다.
도 3은 제2 실시예에 따른 컴퓨팅 시스템의 구조를 나타낸 것이다.
제2 실시예에 따른 컴퓨팅 시스템은 복수의 프로그램 모듈(소스 프로그램 51 내지 5N)을 컴파일하는 것이 아니라, 그 프로그램 모듈을 직접 FPGA 장치(4)에 적재한다.
도 3에 나타낸 바처럼, 제2 실시예에 따른 컴퓨팅 시스템은 로더(3'), FPGA 장치(4') 및 프로그램 기억 장치(5)를 포함한다.
로더(3')는 프로그램 기억 유닛(5)에 기억된 소스 프로그램(51 내지 5N)을, 제어 유닛(46')의 명령에 따라 소정의 시간에 모듈별로 FPGA 장치(4')에 적재한다.
도 3에 나타낸 바처럼, FPGA 장치(4')는 메모리(41'), 게이트 어레이(42), 저장 스택(44), 인자 전달 유닛(45), 제어 유닛(46') 및 인터프리터(47)를 포함한다.
메모리(41')는 RAM으로 구성되고, 로더(3')에 의해 적재된 프로그램 모듈을 기억한다.
인터프리터(47)는 메모리(41')에 적재된 프로그램 모듈에 포함된 명령어를 하나씩 순차적으로 해석한다. 그 후 인터프리터(47)는 적재된 프로그램 모듈에 의해 지정된 컴퓨팅을 실행하는 데 가장 적합한 하드웨어 구조를 실현하기 위한 신호를, 해석 결과에 따라 게이트 어레이(42)의 컴퓨팅 유닛(42A)으로 출력한다.
컴퓨팅 유닛(42A)을 구성하는 게이트 회로간의 연결은 인터프리터(47)로부터 공급되는 신호에 따라 전환된다. 이로 인해, 컴퓨팅 유닛(42A)의 하드웨어 구조는 적재된 프로그램 모듈에 의해 지정된 컴퓨팅을 실행하는 데 가장 적합한 구조, 즉 실행 대상인 컴퓨팅에 대응하는 구조가 된다.
해석된 명령어가 다른 프로그램 모듈을 호출하는 명령어인 경우, 인터프리터(47)는 또 다른 프로그램 모듈이 호출되어야 함을 나타내는 호출 신호를 제어 유닛(46')으로 출력한다.
인터프리터(47)로부터 호출 신호가 공급되는 경우, 제어 유닛(46')은 게이트 어레이(42)의 내부 상태가 호출자 프로그램 모듈을 식별하는 식별 데이터와 함께 저장 스택(44)에 저장되도록 제어한다.
그 후 제어 유닛(46')은 상태 보유 유닛(42B)의 플립플롭에 저장된 데이터 중에서, 호출된 프로그램 모듈로 표현되는 컴퓨팅을 실행하는 데 사용되는, 인자 전달 유닛(45)에 있는 데이터를 임시로 기억한다.
그 후 제어 유닛(46')은 로더(3')가 호출된 프로그램 모듈을 적재하도록 제어한다.
다음으로, 제어 유닛(46')은 인자 전달 유닛(45)에 임시로 기억된 데이터를 게이트 어레이(42)에 입력 데이터로서 전달한다.
호출된 프로그램 모듈에 대응하는 컴퓨팅이 완료되면, 제어 유닛(46')은 컴퓨팅 결과(출력 데이터)를 인자 전달 유닛(45)에 임시로 기억한다.
그 후 제어 유닛(46')은 로더(3')가 저장 스택(44)에 저장된 식별 데이터에 의해 식별되는 호출자 프로그램 모듈을 메모리(41')에 적재하도록 제어한다.
그 후 제어 유닛(46')은 저장 스택(44)에 저장된 내부 상태를 상태 보유 유닛(42B)에 반환하고, 인자 전달 유닛(45)에 임시로 기억된 출력 데이터(인자)를 상태 보유 유닛(42B)을 구성하는 소정의 플립플롭에 기록한다. 따라서 호출자 프로그램 모듈로 표현되는 컴퓨팅이 재개된다.
인터프리터(47)는 복수의 게이트 회로로 구성될 수 있다. 이러한 구성에 의해 인터프리터(47)는 적재된 프로그램 모듈의 해석 결과에 대응하는 레벨을 갖는신호를 고속으로 출력할 수 있게 된다. 결과적으로, 컴퓨팅 유닛(42A)의 하드웨어 구조는 컴퓨팅 실행 속도에 거의 영향을 주지 않을 만큼 빠른 속도로 전환될 수 있다.
앞서 설명한 것처럼 FPGA 장치(4')는 인터프리터(47)를 포함하므로, 소스 프로그램(51 내지 5N)은 FPGA 장치(4')에 모듈별로 적재될 수 있다. 이로 인해, 복수의 프로그램 모듈로 표현되는 대규모 컴퓨팅이 FPGA 장치(4')의 구조에 적합한 컴파일러 없이도 고속으로 실행될 수 있다.
하나의 프로그램 모듈로 표현되는 컴퓨팅을 실행하기 위해 복수의 하드웨어 구조가 필요할 수 있다. 이러한 경우, 앞서 설명한 바처럼 제어 유닛(46')은 하드웨어 구조가 전환되기 직전에 얻은 데이터(중간 결과)가 저장 스택(44)에 저장되도록 제어한다. 그 후, 인터프리터(47)는 소정 레벨을 갖는 신호를 컴퓨팅 유닛(42A)에 입력시키고, 이에 따라 컴퓨팅 유닛(42A)의 하드웨어 구조가 컴퓨팅 도중에 전환될 수 있게 된다.
예컨대 도 4에 나타낸 바처럼, 논리 회로 등으로 구성된 보조 컴퓨팅 제어 유닛(7)이 제1 실시예서 도시한 컴퓨팅 시스템(1)의 구조에 추가될 수 있다. 또 다른 컴퓨팅 시스템이 이러한 구조를 갖는 컴퓨팅 시스템(1A)에 연결될 수 있다.
예컨대 도 1 또는 도 4의 구조를 갖는 또 다른 컴퓨팅 시스템이 컴퓨팅 시스템(1A)에 연결되는 경우, 보조 컴퓨팅 제어 유닛(7)은 상기 다른 컴퓨팅 시스템의 로더(3), 게이트 어레이(42) 및 인자 전달 유닛(45)에 대해 분리가 가능하게 연결된다.
또한, 예컨대 도 5에서 나타낸 바처럼 두 컴퓨팅 시스템(1B 및 1C)이 컴퓨팅 시스템(1A)에 연결될 수 있다. 컴퓨팅 시스템(1B 및 1C)은 예컨대 도 1에 나타낸 구조와 실질적으로 동일한 구조를 갖는다. 이러한 경우, 컴퓨팅 시스템(1A)의 보조 컴퓨팅 제어 유닛(7)은 컴퓨팅 시스템(1B 및 1C)의 로더(3), 게이트 어레이(42) 및 인자 전달 유닛(45)에 각각 연결된다. 그러나 컴퓨팅 시스템(1B 및 1C)은 FPGA 데이터 기억 유닛(2)을 반드시 필요로 하지는 않을 수 있다.
다음으로, 컴퓨팅 시스템(1A)이 컴퓨팅 시스템(1B 및 1C)을 제어하여 병렬 동작(parallel operation)을 실행하도록 하는 경우에 수행되는 동작에 대하여 설명하기로 한다.
먼저 FPGA 데이터(21)가 적재되고, FPGA 데이터(21)가 FPGA 데이터(2X)를 호출하는 것으로 가정하자. 또한 컴퓨팅 시스템(1A)이 컴퓨팅 시스템(1B 및 1C)을 제어하여 FPGA 데이터(2X)를 적재하도록 하는 것으로 가정하자.
우선 컴퓨팅 시스템(1A)의 로더(3)가 FPGA 데이터(21)를 FPGA 데이터 메모리(41)에 적재한다. 따라서 컴퓨팅 유닛(42A)의 하드웨어 구조는 앞서 제1 실시예에서 설명한 바와 마찬가지로 FPGA 데이터(21)에 의해 지정된 구조로 된다.
그 후 입력 데이터가 외부로부터 컴퓨팅 시스템(1A)의 게이트 어레이(42)로 입력되는 경우, 컴퓨팅 시스템(1A)의 컴퓨팅 유닛(42A)은 FPGA 데이터(21)에 대응하는 컴퓨팅을 실행한다.
컴퓨팅 시스템(1A)의 호출 검출 유닛(43)은 FPGA 데이터(2X)의 호출을 명령하는, 상기 적재된 FPGA 데이터(21)에 있는 호출 데이터를 검출한다. 다음으로 호출 검출 유닛(43)은 호출 데이터가 검출되었음을 나타내는 검출 신호를 제어 유닛(46)으로 출력한다.
호출 검출 유닛(43)으로부터 검출 신호가 공급되는 경우, 컴퓨팅 시스템(1A)의 제어 유닛(46)은 컴퓨팅 시스템(1A)의 로더(3)를 제어하여, 호출된 데이터 모듈인 FPGA 데이터(2X)를 FPGA 데이터 메모리(41)에 적재하도록 한다.
FPGA 데이터(2X)가 적재되면, 컴퓨팅 시스템(1A)의 게이트 어레이(42)는 적재된 FPGA 데이터(2X)를 FPGA 데이터(21)에 대응하는 처리(컴퓨팅)의 일부로서 취득한다.
다음으로, 게이트 어레이(42)는 취득된 FPGA 데이터(2X)를 보조 컴퓨팅 제어 유닛(7)에 공급하고, FPGA 데이터(21)에 대응하는 컴퓨팅의 실행을 중단한다.
컴퓨팅 시스템(1A)의 제어 유닛(46)은 컴퓨팅 시스템(1A)의 상태 보유 유닛(42B)이 보유하는 데이터 중에서도, FPGA 데이터(2X)에 대응하는 컴퓨팅의 실행에 필요한 데이터(인자)를 보조 컴퓨팅 제어 유닛(7)에 공급한다.
보조 컴퓨팅 제어 유닛(7)은 컴퓨팅 시스템(1B 및 1C)의 로더(3)를 제어하여, 공급된 FPGA 데이터(2X)를 컴퓨팅 시스템(1B 및 1C)의 FPGA 데이터 메모리(41)에 적재하도록 한다. 결과적으로, 컴퓨팅 시스템(1B 및 1C)의 컴퓨팅 유닛(42A)의 하드웨어 구조는 FPGA 데이터(2X)에 의해 지정된 구조가 된다.
그 후, 컴퓨팅 시스템(1A)의 보조 컴퓨팅 제어 유닛(7)은 공급된 인자 중 컴퓨팅 시스템(1B)에 공급될 인자를 컴퓨팅 시스템(1B)의 게이트 어레이(42)에 입력 데이터로서 입력시키고, 컴퓨팅 시스템(1C)에 공급될 인자를 컴퓨팅 시스템(1C)의게이트 어레이(42)에 입력 데이터로서 입력시킨다. 결과적으로, 컴퓨팅 시스템(1B 및 1C)의 게이트 어레이는 FPGA 데이터(2X)에 대응하는 컴퓨팅을 각각 실행하게 된다.
FPGA 데이터(2X)에 대응하는 컴퓨팅이 완료되면, 컴퓨팅 시스템(1B)(또는 1C)의 제어 유닛(46)은 컴퓨팅 시스템(1B)(또는 1C)의 게이트 어레이(42)로부터의 출력 데이터를, 호출자 데이터 모듈인 FPGA 데이터(21)에 대응하는 컴퓨팅의 재개에 쓰일 인자로서, 컴퓨팅 시스템(1B)(또는 1C)의 인자 전달 유닛(45)에 임시로 기억시킨다.
컴퓨팅 시스템(1A)의 보조 컴퓨팅 제어 유닛(7)은 컴퓨팅 시스템(1B 및 1C)의 인자 전달 유닛(45)을 제어하고, 출력 데이터가 상기 인자 전달 유닛(45)에 임시로 기억되는 것을 검출한 경우, 기억된 출력 데이터를 각 인자 전달 유닛(45)으로부터 취득한다.
그 후, 컴퓨팅 시스템(1A)의 보조 컴퓨팅 제어 유닛은, 취득한 출력 데이터를 컴퓨팅 시스템(1A)의 상태 보유 유닛(42B)을 구성하는 소정의 플립플롭에 기록한다.
이 상태에 있어서, 컴퓨팅 시스템(1A)의 게이트 어레이는 FPGA 데이터(21)에 대응하는 컴퓨팅을 재개한다. 결과적으로, 최종 컴퓨팅 결과가 출력 데이터로서 출력된다.
앞서 설명한 바처럼, 컴퓨팅 시스템이 도 4에 나타낸 구조를 갖는 경우 필요하다면 또 다른 컴퓨팅 시스템이 추가될 수 있다. 이로 인해, 단일 컴퓨팅 시스템에 의해 단기간에 완료될 수 없는 복잡한 컴퓨팅 및 병렬 동작을 필요로 하는 컴퓨팅이 단기간 내에 완료될 수 있게 된다.
컴퓨팅 시스템(1A)에 연결되는 다른 컴퓨팅 시스템이 도 4에 나타낸 구조를 갖는 경우, 이와는 또 다른 컴퓨팅 시스템이 상기 다른 컴퓨팅 시스템에 연결될 수 있다. 이로 인해, 앞서 설명한 바와 마찬가지 방식으로 상기 다른 컴퓨팅 시스템은 자신에 연결된 상기 또 다른 컴퓨팅 시스템이 컴퓨팅을 실행하도록 제어할 수 있으며, 컴퓨팅 결과를 취득할 수 있다.
또한, 예컨대 도 6에 나타낸 바와 같이, 앞서 설명한 보조 컴퓨팅 제어 유닛(7)이 도 3에 나타낸 컴퓨팅 시스템에 추가될 수도 있다. 도 6에 나타낸 컴퓨팅 시스템(1D)은 자신에 연결된 다른 컴퓨팅 시스템을 제어하여, 적재된 프로그램 모듈로 표현되는 컴퓨팅을 실행하도록 할 수 있다.
이 경우에 있어서, 컴퓨팅 시스템(1D)의 인터프리터(47)가 해석한 명령어가 다른 프로그램 모듈을 호출하는 명령어인 경우, 인터프리터(47)는 적재된 피호출 프로그램 모듈을 보조 컴퓨팅 제어 유닛(7)에 공급할 수 있다. 보조 컴퓨팅 제어 유닛(7)은 공급된 프로그램 모듈을 다른 컴퓨팅 시스템에 공급할 수 있고, 상기 다른 컴퓨팅 시스템이 컴퓨팅을 실행하도록 제어할 수 있다. 다음으로, 보조 컴퓨팅 제어 유닛(7)은 상기 다른 컴퓨팅 시스템으로부터 컴퓨팅 결과를 취득할 수 있고, 게이트 어레이(42)에 상기 컴퓨팅 결과를 공급함으로써 호출자 프로그램 모듈에 의해 표현되는 컴퓨팅이 재개될 수 있도록 한다.
그러나 이 경우, 컴퓨팅 시스템(1D)에 연결된 상기 다른 컴퓨팅 시스템은 예컨대 도 3에 나타낸 구조를 가지는 것이어야 한다.
앞서 설명한 실시예에서, 로더(3)는 FPGA 데이터 기억 유닛(2)에 기억된 FPGA 데이터(21 내지 2N) 중 하나를 FPGA 데이터 메모리(41)에 직접 적재시킨다. 반대로, FPGA 데이터(21 내지 2N)는 매크로(macro)를 포함할 수 있다. FPGA 데이터 기억 유닛(2)은 매크로 데이터를 기억할 수 있으며, 로더(3)는 FPGA 데이터(21 내지 2N)를 FPGA 데이터 메모리(41)에 적재하는 경우에 FPGA 데이터(21 내지 2N) 상의 매크로 호출을 수행할 수 있다.
본 발명의 취지 및 범주를 벗어나지 않고 본 발명에 대한 다양한 실시예 및 변형이 가능하다. 앞서 설명한 실시예는 본 발명을 설명하고자 하는 것이지, 본 발명의 범주를 한정하는 것이 아니다. 본 발명의 범주는 실시예가 아닌 이하에 첨부한 청구항으로 표현된다. 본 발명의 청구 범위 및 이의 등가 범위 내에서 이루어진 다양한 변형은 본 발명의 범주 내에 있는 것으로 간주된다.
본 출원은 2001년 5월 10일자 일본 특허 출원 제2001-139951호 및 2002년 3월 6일자 일본 특허 출원 제2002-60515호를 우선권 주장의 기초로 하며, 이들의 명세서, 청구항, 도면 및 요약서를 포함한다. 이들 일본 특허 출원에 개시된 사항은 본 명세서에 그 전체가 참조로서 병합되었다.

Claims (19)

  1. 컴퓨팅 시스템에 있어서,
    실행 대상인 컴퓨팅에 대응하는 하드웨어 구조를 가지고 상기 실행 대상인 컴퓨팅을 실행하는 컴퓨팅 유닛(42)과,
    상기 컴퓨팅 유닛의 내부 상태를 기억하는 상태 메모리(44)와,
    상기 컴퓨팅 유닛의 내부 상태를 제어하는 제어기(46, 46')
    를 포함하고,
    상기 컴퓨팅 유닛(42)은 제1 컴퓨팅 도중에 제2 컴퓨팅을 실행하며,
    상기 제어기(46, 46')는 상기 컴퓨팅 유닛(42)에 의해 실행되는 컴퓨팅이 상기 제1 컴퓨팅으로부터 상기 제2 컴퓨팅으로 전환될 때에 상기 상태 메모리(44)에 내부 상태를 기억시키고, 상기 컴퓨팅 유닛(42)에 의해 실행되는 컴퓨팅이 상기 제2 컴퓨팅으로부터 상기 제1 컴퓨팅으로 복귀할 때에 상기 상태 메모리(44)에 기억된 내부 상태를 상기 컴퓨팅 유닛(42)에 반환함으로써 상기 컴퓨팅 유닛(42)이 상기 제1 컴퓨팅의 실행을 재개하도록 제어하는 것인 컴퓨팅 시스템.
  2. 제1항에 있어서, 상기 상태 메모리(44)는 선입후출(First-In-Last-Out) 방식에 따라 내부 상태를 기억하는 것인 컴퓨팅 시스템.
  3. 제1항에 있어서, 상기 컴퓨팅 유닛(42)은 복수의 게이트 회로를 포함하고,상기 복수의 게이트 회로간의 연결은 실행 대상인 컴퓨팅에 따라 전환되는 것인 컴퓨팅 시스템.
  4. 소정의 컴퓨팅을 실행하는 데 적합한 하드웨어 구조를 각각 나타내는 복수의 데이터 모듈을 모듈별로 적재(load)하는 로더(loader)(3)와,
    적재된 데이터 모듈로 표현되는 하드웨어 구조에 따라 변경될 수 있는 하드웨어 구조를 가지고 소정의 컴퓨팅을 실행하는 컴퓨팅 유닛(42)과,
    상기 컴퓨팅 유닛(42)의 하드웨어 구조가 변경될 경우 상기 컴퓨팅 유닛(42)에 의해 실행되는 컴퓨팅의 중간 결과를 보유하고, 상기 컴퓨팅 유닛(42)의 하드웨어 구조가 원래 상태로 복귀할 경우 상기 보유된 중간 결과를 상기 컴퓨팅 유닛(42)에 반환하는 결과 보유 유닛(44)
    을 포함하는 컴퓨팅 시스템.
  5. 제4항에 있어서, 상기 복수의 데이터 모듈은, 제1 컴퓨팅을 실행하기 위한 제1 하드웨어 구조를 나타내는 제1 데이터 모듈 및 상기 제1 컴퓨팅 도중에 실행되는 제2 컴퓨팅을 실행하기 위한 제2 하드웨어 구조를 나타내는 제2 데이터 모듈을 포함하고,
    상기 제1 데이터 모듈은 상기 제1 컴퓨팅 도중에 상기 제2 데이터 모듈을 호출하기 위한 호출 데이터를 포함하며,
    상기 컴퓨팅 시스템은, 적재된 상기 제1 데이터 모듈에 포함된 호출 데이터를 검출하는 검출 유닛(43)과, 상기 컴퓨팅 유닛(42)에 의해 실행되는 상기 제1 컴퓨팅의 중간 결과를 상기 결과 보유 유닛(44)에 기억시키고, 상기 검출 유닛(43)이 상기 호출 데이터를 검출하는 경우에 상기 로더(3)가 상기 제2 데이터 모듈을 적재하도록 제어하는 제어기(46)를 더 포함하는 것인 컴퓨팅 시스템.
  6. 제5항에 있어서, 상기 컴퓨팅 유닛(42)이 상기 제2 컴퓨팅을 완료하는 경우, 상기 제어기(46)는 상기 로더(3)가 상기 제1 데이터 모듈을 적재하도록 제어하고, 상기 결과 보유 유닛(44)에 기억된 상기 중간 결과를 상기 컴퓨팅 유닛(42)에 반환함으로써 상기 컴퓨팅 유닛(42)이 상기 제1 컴퓨팅을 재개하도록 제어하는 것인 컴퓨팅 시스템.
  7. 제6항에 있어서, 상기 제1 컴퓨팅의 중간 결과 일부를 상기 제2 컴퓨팅을 실행하기 위한 인자(argument)로서 상기 컴퓨팅 유닛(42)에 공급하고, 상기 제2 컴퓨팅의 실행 결과를 상기 제1 컴퓨팅을 재개하기 위한 인자로서 상기 컴퓨팅 유닛(42)에 공급하는 인자 공급 유닛(45)을 더 포함하는 것인 컴퓨팅 시스템.
  8. 제7항에 있어서, 상기 결과 보유 유닛(44)은 선입후출 방식에 따라 중간 결과를 기억하는 메모리를 포함하는 것인 컴퓨팅 시스템.
  9. 제7항에 있어서, 상기 컴퓨팅 유닛(42)은 복수의 게이트 회로를 포함하고,상기 복수의 게이트 회로간의 연결은 적재된 데이터 모듈에 따라 전환되는 것인 컴퓨팅 시스템.
  10. 제5항에 있어서, 상기 컴퓨팅 시스템은, 공급된 데이터 모듈로 표현되는 하드웨어 구조에 따라 변경될 수 있는 하드웨어 구조를 가지고 소정의 컴퓨팅을 실행하는 다른 컴퓨팅 시스템에 연결될 수 있고,
    상기 컴퓨팅 시스템은, 상기 컴퓨팅 시스템이 다른 컴퓨팅 시스템에 연결되는 경우, 상기 다른 컴퓨팅 시스템이 상기 제2 컴퓨팅을 실행하도록 제어하기 위해 상기 적재된 제2 데이터 모듈을 상기 다른 컴퓨팅 시스템에 공급하고, 상기 제2 컴퓨팅의 실행 결과를 상기 다른 컴퓨팅 시스템으로부터 취득하는 결과 취득 유닛(7)을 더 포함하는 것인 컴퓨팅 시스템.
  11. 제10항에 있어서, 상기 컴퓨팅 시스템이 다른 컴퓨팅 시스템에 연결되는 경우, 상기 컴퓨팅 유닛(42)은 적재된 상기 제2 데이터 모듈을 상기 결과 취득 유닛(7)에 공급하고, 상기 제1 컴퓨팅의 실행을 중단시키며,
    상기 결과 취득 유닛(7)은, 취득한 상기 제2 컴퓨팅의 실행 결과를 상기 제1 컴퓨팅을 재개하기 위한 인자로서 상기 컴퓨팅 유닛(42)에 공급함으로써 상기 컴퓨팅 유닛(42)이 상기 제1 컴퓨팅을 재개하도록 제어하는 것인 컴퓨팅 시스템.
  12. 소정의 컴퓨팅을 각각 나타내는 복수의 프로그램 모듈을 모듈별로 적재하는로더(3')와,
    적재된 프로그램 모듈에 포함된 명령을 해석하고, 해석 결과에 따라 상기 적재된 프로그램 모듈로 표현되는 컴퓨팅에 대응하는 하드웨어 구조를 실현하기 위한 적어도 하나의 신호를 출력하는 인터프리터(47)와,
    상기 인터프리터(47)에 의한 상기 적어도 하나의 신호 출력에 따라 변경될 수 있는 하드웨어 구조를 가지고 소정의 컴퓨팅을 실행하는 컴퓨팅 유닛(42)과,
    상기 컴퓨팅 유닛(42)의 하드웨어 구조가 변경될 경우 상기 컴퓨팅 유닛(42)에 의해 실행되는 컴퓨팅의 중간 결과를 보유하고, 상기 하드웨어 구조가 원래 구조로 복귀할 경우 상기 보유된 중간 결과를 상기 컴퓨팅 유닛(42)에 반환함으로써 상기 컴퓨팅 유닛을 상기 컴퓨팅 유닛(42)의 하드웨어 구조가 변경되기 전과 같이 회복시키는 결과 보유 유닛(44)
    을 포함하는 컴퓨팅 시스템.
  13. 제12항에 있어서, 상기 복수의 프로그램 모듈은 제1 컴퓨팅을 나타내는 제1 프로그램 모듈 및 상기 제1 컴퓨팅 도중에 실행되는 제2 컴퓨팅을 나타내는 제2 프로그램 모듈을 포함하고,
    상기 제1 프로그램 모듈은 상기 제1 컴퓨팅 도중에 상기 제2 프로그램 모듈을 호출하기 위한 호출 명령을 포함하며,
    상기 컴퓨팅 시스템은, 상기 컴퓨팅 유닛(42)에 의해 실행되는 상기 제1 컴퓨팅의 중간 결과를 상기 결과 보유 유닛(44)에 기억시키고, 상기 인터프리터(47)가 상기 호출 명령을 해석하는 경우에 상기 로더(3')가 상기 제2 프로그램 모듈을 적재하도록 제어하는 제어기(46')를 더 포함하는 것인 컴퓨팅 시스템.
  14. 제13항에 있어서, 상기 컴퓨팅 유닛(42)이 상기 제2 컴퓨팅을 완료하는 경우, 상기 제어기(46')는 상기 로더(3')가 상기 제1 프로그램 모듈을 적재하도록 제어하고, 상기 결과 보유 유닛(44)에 기억된 상기 중간 결과를 상기 컴퓨팅 유닛(42)에 반환함으로써 상기 컴퓨팅 유닛(42)이 상기 제1 컴퓨팅을 재개하도록 제어하는 것인 컴퓨팅 시스템.
  15. 제14항에 있어서, 상기 제2 컴퓨팅을 실행하기 위한 인자로서 상기 제1 컴퓨팅의 중간 결과 일부를 상기 컴퓨팅 유닛(42)에 공급하고, 상기 제1 컴퓨팅을 재개하기 위한 인자로서 상기 제2 컴퓨팅의 실행 결과를 상기 컴퓨팅 유닛(42)에 공급하는 인자 공급 유닛(45)을 더 포함하는 컴퓨팅 시스템.
  16. 제15항에 있어서, 상기 결과 보유 유닛(44)은 선입후출 방식에 따라 중간 결과를 기억하는 메모리를 포함하는 것인 컴퓨팅 시스템.
  17. 제15항에 있어서, 상기 컴퓨팅 유닛(42)은 복수의 게이트 회로를 포함하고, 상기 복수의 게이트 회로간의 연결은 상기 인터프리터로부터 공급되는 적어도 하나의 신호에 따라 전환되는 것인 컴퓨팅 시스템.
  18. 제13항에 있어서, 상기 컴퓨팅 시스템은, 공급된 프로그램 모듈로 표현되는 컴퓨팅에 따라 변경될 수 있는 하드웨어 구조를 가지고 상기 공급된 프로그램 모듈로 표현되는 컴퓨팅을 실행하는 다른 컴퓨팅 시스템에 연결될 수 있으며,
    상기 컴퓨팅 시스템은, 상기 컴퓨팅 시스템이 다른 컴퓨팅 시스템에 연결되는 경우, 상기 다른 컴퓨팅 시스템이 상기 제2 컴퓨팅을 실행하도록 제어하기 위해 상기 적재된 제2 프로그램 모듈을 상기 다른 컴퓨팅 시스템에 공급하고, 상기 제2 컴퓨팅의 실행 결과를 상기 다른 컴퓨팅 시스템으로부터 취득하는 결과 취득 유닛(7)을 더 포함하는 것인 컴퓨팅 시스템.
  19. 제18항에 있어서, 상기 컴퓨팅 시스템이 다른 컴퓨팅 시스템에 연결되어 있는 경우, 상기 인터프리터(47)는 적재된 상기 제2 프로그램 모듈을 상기 결과 취득 유닛(7)에 공급하고,
    상기 결과 취득 유닛(7)은, 취득한 상기 제2 컴퓨팅의 실행 결과를 상기 제1 컴퓨팅을 재개하기 위한 인자로서 상기 컴퓨팅 유닛(42)에 공급함으로써 상기 컴퓨팅 유닛(42)이 상기 제1 컴퓨팅을 계속하도록 제어하는 것인 컴퓨팅 시스템.
KR1020037014600A 2001-05-10 2002-05-08 컴퓨팅 시스템 KR100776608B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
JPJP-P-2001-00139951 2001-05-10
JP2001139951 2001-05-10
JPJP-P-2002-00060515 2002-03-06
JP2002060515A JP3561506B2 (ja) 2001-05-10 2002-03-06 演算システム
PCT/JP2002/004461 WO2002093404A2 (en) 2001-05-10 2002-05-08 Computing system

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020067021470A Division KR20060114722A (ko) 2001-05-10 2002-05-08 컴퓨팅 시스템

Publications (2)

Publication Number Publication Date
KR20040004617A true KR20040004617A (ko) 2004-01-13
KR100776608B1 KR100776608B1 (ko) 2007-11-16

Family

ID=26614885

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020037014600A KR100776608B1 (ko) 2001-05-10 2002-05-08 컴퓨팅 시스템
KR1020067021470A KR20060114722A (ko) 2001-05-10 2002-05-08 컴퓨팅 시스템

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020067021470A KR20060114722A (ko) 2001-05-10 2002-05-08 컴퓨팅 시스템

Country Status (7)

Country Link
US (1) US20050027836A1 (ko)
EP (1) EP1421511A2 (ko)
JP (1) JP3561506B2 (ko)
KR (2) KR100776608B1 (ko)
CN (2) CN101025731A (ko)
TW (1) TW561405B (ko)
WO (1) WO2002093404A2 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4572835B2 (ja) * 2003-08-29 2010-11-04 富士ゼロックス株式会社 データ処理装置
CN100412801C (zh) * 2003-09-30 2008-08-20 三洋电机株式会社 备有可重构电路的处理装置、集成电路装置
US20070038971A1 (en) * 2003-09-30 2007-02-15 Tatsuo Hiramatsu Processing device with reconfigurable circuit, integrated circuit device and processing method using these devices
JP3836109B2 (ja) * 2004-02-19 2006-10-18 東京エレクトロン株式会社 プログラマブル論理回路制御装置、プログラマブル論理回路制御方法及びプログラム
CN100545827C (zh) 2004-07-30 2009-09-30 富士通株式会社 可重配置电路及可重配置电路的控制方法
US7941794B2 (en) 2004-08-30 2011-05-10 Sanyo Electric Co., Ltd. Data flow graph processing method and processing apparatus provided with reconfigurable circuit
US20060200603A1 (en) * 2005-03-01 2006-09-07 Naoto Kaneko Dynamic resource allocation for a reconfigurable IC
DE102005010476A1 (de) * 2005-03-04 2006-09-07 Daimlerchrysler Ag Steuergerät mit konfigurierbaren Hardwaremodulen
DE102005010477A1 (de) * 2005-03-04 2006-09-07 Daimlerchrysler Ag Vorrichtung und Verfahren zur Abarbeitung priorisierter Steuerungsprozesse
JP4720436B2 (ja) * 2005-11-01 2011-07-13 株式会社日立製作所 リコンフィギュラブルプロセッサまたは装置
US20070139074A1 (en) * 2005-12-19 2007-06-21 M2000 Configurable circuits with microcontrollers
EP2523117B1 (en) * 2011-05-11 2014-01-22 Telefonaktiebolaget L M Ericsson (publ) Interface module for HW block
RU2020102277A (ru) * 2017-06-22 2021-07-22 АйКЭТ ЛЛК Процессоры с высокой производительностью

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5802290A (en) * 1992-07-29 1998-09-01 Virtual Computer Corporation Computer network of distributed virtual computers which are EAC reconfigurable in response to instruction to be executed
US6594752B1 (en) * 1995-04-17 2003-07-15 Ricoh Company, Ltd. Meta-address architecture for parallel, dynamically reconfigurable computing
US5933642A (en) * 1995-04-17 1999-08-03 Ricoh Corporation Compiling system and method for reconfigurable computing
US5778439A (en) * 1995-08-18 1998-07-07 Xilinx, Inc. Programmable logic device with hierarchical confiquration and state storage
US5706514A (en) * 1996-03-04 1998-01-06 Compaq Computer Corporation Distributed execution of mode mismatched commands in multiprocessor computer systems
US5838165A (en) * 1996-08-21 1998-11-17 Chatter; Mukesh High performance self modifying on-the-fly alterable logic FPGA, architecture and method
GB2317468B (en) * 1996-09-23 2001-01-24 Advanced Risc Mach Ltd Digital signal processing integrated circuit architecture
DE19651075A1 (de) * 1996-12-09 1998-06-10 Pact Inf Tech Gmbh Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen
JP3587095B2 (ja) * 1999-08-25 2004-11-10 富士ゼロックス株式会社 情報処理装置
JP3621315B2 (ja) * 1999-11-22 2005-02-16 Necエレクトロニクス株式会社 マイクロプロセッサシステム

Also Published As

Publication number Publication date
KR100776608B1 (ko) 2007-11-16
WO2002093404A2 (en) 2002-11-21
JP2003029969A (ja) 2003-01-31
EP1421511A2 (en) 2004-05-26
CN101025731A (zh) 2007-08-29
TW561405B (en) 2003-11-11
CN100361119C (zh) 2008-01-09
WO2002093404A3 (en) 2004-03-25
US20050027836A1 (en) 2005-02-03
KR20060114722A (ko) 2006-11-07
CN1529858A (zh) 2004-09-15
JP3561506B2 (ja) 2004-09-02

Similar Documents

Publication Publication Date Title
KR100776608B1 (ko) 컴퓨팅 시스템
KR100681199B1 (ko) 코어스 그레인 어레이에서의 인터럽트 처리 방법 및 장치
WO1995009392A1 (en) Implementation of a selected instruction set cpu in programmable hardware
US8417918B2 (en) Reconfigurable processor with designated processing elements and reserved portion of register file for interrupt processing
KR20030059339A (ko) 단일 스텝 처리 방법 및 장치
US5987258A (en) Register reservation method for fast context switching in microprocessors
US7434222B2 (en) Task context switching RTOS
JP3540796B2 (ja) 演算システム
KR100548609B1 (ko) 초장 명령어 프로세서의 효율적인 서브-명령 에뮬레이션
EP0417916B1 (en) Procedure state descriptor system for digital data processors
KR100301391B1 (ko) 서브루틴분기명령실행방법및그장치
US7107478B2 (en) Data processing system having a Cartesian Controller
KR100246465B1 (ko) 마이크로프로세서 스택 명령어의 수행사이클을 줄이기 위한 장치 및 그 방법
JP2506591B2 (ja) 補助処理装置
US20010021973A1 (en) Processor
JPH0490038A (ja) データ処理装置
JPS62166451A (ja) 論理装置の履歴解折装置
JPH02232727A (ja) 情報処理装置
JPS62159236A (ja) 論理型言語処理装置
JPH0328927A (ja) シーケンサ
JPH0378833A (ja) リスト処理言語を使用するデ―タ処理装置
JPH08241224A (ja) エミュレータ用インターフェース回路
JPS6234238A (ja) マイクロプロセツサ
JPS63165931A (ja) 不連続命令フエツチアドレス情報記憶方式
JPS6394337A (ja) 論理型デ−タ処理装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
A107 Divisional application of patent
AMND Amendment
E801 Decision on dismissal of amendment
B601 Maintenance of original decision after re-examination before a trial
N231 Notification of change of applicant
S901 Examination by remand of revocation
GRNO Decision to grant (after opposition)
GRNT Written decision to grant
G170 Re-publication after modification of scope of protection [patent]
LAPS Lapse due to unpaid annual fee