KR100612717B1 - 논리 연산 시스템 및 방법 - Google Patents

논리 연산 시스템 및 방법 Download PDF

Info

Publication number
KR100612717B1
KR100612717B1 KR1020047010229A KR20047010229A KR100612717B1 KR 100612717 B1 KR100612717 B1 KR 100612717B1 KR 1020047010229 A KR1020047010229 A KR 1020047010229A KR 20047010229 A KR20047010229 A KR 20047010229A KR 100612717 B1 KR100612717 B1 KR 100612717B1
Authority
KR
South Korea
Prior art keywords
data
configuration data
modules
logical operation
logic
Prior art date
Application number
KR1020047010229A
Other languages
English (en)
Other versions
KR20040072684A (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 KR20040072684A publication Critical patent/KR20040072684A/ko
Application granted granted Critical
Publication of KR100612717B1 publication Critical patent/KR100612717B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Stored Programmes (AREA)
  • Logic Circuits (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

논리 블록(43)에 의해 LUT로서 참조되는 FPGA 데이터 모듈은 복수의 모듈로 분할된다. 복수의 데이터 레지스터(41a 내지 41d)의 각각은 복수의 FPGA 데이터 모듈 중 하나를 저장한다. 복수의 데이터 레지스터(41a 내지 41d) 중 하나 이상에 저장된 FPGA 데이터 모듈을 참조하여, 논리 블록(43)의 게이트 회로(43a)와 플립플롭(43b)은 논리 입력 데이터의 논리 함수값을 발생시킨다. 이 논리 입력 데이터의 논리 함수값은 논리 출력 데이터로서 공급된다.

Description

논리 연산 시스템 및 방법{LOGIC COMPUTING SYSTEM AND METHOD}
본 발명은 하드웨어에 의한 프로그램 직접 실행에 관한 것으로, 특히 대규모 프로그램 실행에 적합한 연산 시스템에 관한 것이다.
현재의 범용 컴퓨터가 연산 처리를 실행할 때, CPU(중앙 처리 장치)는 순차적으로 프로그램에 대응하는 복수의 연산 코드를 해석한다. 복수의 연산 코드를 메모리에 저장하여 소프트웨어를 형성한다. 따라서, 프로그램은 소프트웨어로 실현된다. 하드웨어인 CPU의 구성은 소프트웨어 프로그램에 포함된 개개의 연산 처리에 최적하지 못하다. 그러므로, CPU가 실행하는 연산 처리 중에는 큰 오버헤드가 초래된다.
한편, PCT WO 94/10627 공보(일본 공보 H8-504285)와 PCT WO 98/08306 공보(일본 공보 2000-516418)에는 하드웨어에 의한 프로그램 실행 기술로서 FPGA(필드 프로그래머블 게이트 어레이)를 채용한 시스템이 개시되어 있다. 미심사 일본 특허 출원 공개 공보 H8-330945에는 프로그래머블 어레이의 동적 재프로그래밍이 개시되어 있다.
FPGA의 경우, 복수의 논리 회로로 실현된 논리 함수는 외부에서 프로그램으로서 공급되는 구성 데이터에 따라 변경된다. 바꾸어 말하면, FPGA에 의한 연산 처 리 결과는 구성 데이터에 대응하는 FPGA의 하드웨어 구성에 따라 달라진다.
FPGA의 처리 속도는 특정 연산 처리 실행 전용 ASIC(특정 용도 집적 회로)의 처리 속도 만큼 빠르지 못하다. 그러나, FPGA는 종래의 범용 컴퓨터의 CPU보다 매우 빠른 속도로 연산 처리를 실행할 수 있다. 현재의 범용 컴퓨터가 실행하는 프로그램은 복수의 모듈로 분할된다. 특히, 대규모 프로그램은 다수의 모듈을 포함한다. 예컨대, CPU가 실행하는 제1 프로그램 모듈은 제2 프로그램 모듈을 호출한다. 제2 프로그램 모듈이 처리된 후에는, 제3 프로그램 모듈이 호출되거나, 제1 프로그램 모듈이 재호출된다. 이러한 복수의 프로그램 모듈 간의 링크는 전체로서 프로그램에 대응하는 연산 처리를 실현한다. 각 프로그램 모듈은 다른 프로그램 모듈과는 독립적으로 설계될 수 있다. 또한, 각 프로그램 모듈이 다른 소프트웨어의 일부로서 재사용될 수 있는 경우도 있다. 이와 같이 프로그램 모듈을 사용함으로써 전체 프로그램 설계에 필요한 시간을 줄일 수 있다.
FPGA를 채용한 종래의 연산 시스템에 있어서는, 하드웨어가 일부 함수에 대응하는 복수의 모듈로 분할되는 경우도 있다. 이러한 경우에, 복수의 하드웨어 모듈은 버스 등의 접속선을 통해 서로 접속된다. 그러나, FPGA의 논리 함수를 변경시키기 위한 데이터를 복수의 모듈로 분할하는 시스템은 제안된 적이 없다. 종래의 FPGA의 경우에 있어서는, 복수의 게이트 어레이의 각각에 대한 구성 데이터가 하나씩 재기록되는데, 구성 데이터가 재기록되는 동안에는 논리 연산이 정지된다. 이러한 방법에 따르면, 구성 데이터를 갱신하는 데에는 오랜 시간이 걸리게 된다. 종래의 FPGA에서 구성 데이터를 갱신하는 것은 큰 오버헤드를 초래하고, 따라서 전체 시스템의 처리 능력을 저하시킨다. 이와 같이, 종래의 FPGA를 채용한 연산 시스템에서는 논리 함수를 자주 변경시키는 것이 곤란하였다. 이러한 논리 함수의 비유연성은 시스템이 실행할 수 있는 프로그램의 규모를 제한한다.
본 발명의 목적은 범용 CPU를 이용하지 않고, 하드웨어에 의해 복수의 모듈을 포함하는 대규모 프로그램을 효율적으로 실행하는 논리 연산 시스템을 제공하는 것이다.
상기 목적을 달성하기 위해서, 본 발명에 따른 논리 연산 시스템은,
각각의 룩업 테이블을 포함하는 복수의 구성 데이터 모듈을 저장하는 복수의 데이터 저장부(41a 내지 41d, 49a 내지 49d)와;
복수의 프로그래밍 가능한 논리 회로(43a)를 포함하는 논리 연산부(43)
를 포함하는데,
상기 논리 연산부는 상기 복수의 데이터 저장부(41a 내지 41d, 49a 내지 49d) 중 적어도 하나에 저장된 적어도 하나의 구성 데이터 모듈을 참조하여, 논리 출력 데이터로서 논리 입력 데이터의 논리 함수값을 제공하는 것이다.
이러한 구성에 따르면, 구성 데이터 갱신으로 인한 오버헤드가 거의 일어나지 않는다. 따라서, 대규모 프로그램에 따른 논리 연산이 효율적으로 실행되고, 그 프로그램 실행 속도가 더 빨라지게 된다.
상기 복수의 데이터 저장부(41a 내지 41d)는 시프트 레지스터(40)를 형성할 수 있다.
상기 논리 연산부(43)는 상기 시프트 레지스터(40)에 포함된 상기 복수의 데이터 저장부(41a 내지 41d) 중 하나 이상에 저장된 구성 데이터 모듈을 참조할 수 있다.
상기 시프트 레지스터(40)는 상기 복수의 데이터 저장부(41a 내지 41d) 사이에서 구성 데이터 모듈을 순환 이동시킬 수 있다.
상기 논리 연산 시스템은 상기 복수의 데이터 저장부(49a 내지 49d) 중 적어도 하나를 선택하는 셀렉터(42)를 더 포함할 수 있다.
상기 논리 연산부(43)는 상기 셀렉터(42)가 선택한 상기 데이터 저장부에 저장된 구성 데이터 모듈을 참조할 수 있다.
상기 셀렉터(42)는 상기 복수의 데이터 저장부(49a 내지 49d) 중에서 상기 복수의 데이터 저장부 중 하나를 순환 선택할 수 있다.
상기 논리 연산 시스템은,
상기 논리 연산부(43)의 내부 파라미터의 전부 또는 일부를 저장하여 축적하는 파라미터 레지스터(45)와;
상기 복수의 구성 데이터 모듈 중 하나에 의한 상기 복수의 구성 데이터 모듈 중 다른 하나의 호출 및 재호출을 검출하는 검출기(44)와;
상기 논리 연산부에 의한 논리 연산을 제어하는 컨트롤러(47)를 더 포함하는데,
상기 컨트롤러(47)는,
상기 검출기(44)가 상기 복수의 구성 데이터 모듈 중 하나에 의한 서브루틴 으로서의 상기 복수의 구성 데이터 모듈 중 다른 하나의 호출을 검출하면, 상기 논리 연산부의 내부 파라미터를 상기 파라미터 레지스터(45)에 저장하고,
상기 검출기(44)가 상기 복수의 구성 데이터 모듈 중 하나의 재호출을 검출하면, 상기 파라미터 레지스터(45)에 저장된 내부 파라미터를 상기 논리 연산부(43)에 재저장하는 것이다.
이러한 구성에 따르면, 구성 데이터 모듈이 변경될 때, 논리 연산부의 내부 파라미터를 파라미터 레지스터에 저장하는 것이 가능하다. 파라미터 레지스터에 저장된 내부 파라미터는 구성 데이터가 재호출될 때 재저장된다. 이와 같이, 복수의 모듈을 포함하는 대규모 프로그램을 하드웨어에 의해 고속으로 실행할 수 있다.
상기 논리 연산 시스템은 상기 복수의 구성 데이터 모듈을 상기 복수의 데이터 저장부(41a 내지 41d, 49a 내지 49d) 중 하나 이상으로 로딩하는 로더(3)를 더 포함할 수 있다.
상기 복수의 데이터 저장부(41a 내지 41d, 49a 내지 49d)의 각각은 상기 복수의 구성 데이터 모듈을 재기록 가능하게 저장할 수 있다.
상기 로더는 구성 데이터 모듈을 외부로부터 복수의 데이터 저장부로 로딩할 수 있다. 이러한 구성에 따르면, 복수의 데이터 모듈을 포함하는 대규모 프로그램을 하드웨어에 의해 실행할 수 있다.
상기 논리 연산 시스템은,
상기 복수의 구성 데이터 모듈 중 하나에 의한 상기 복수의 구성 데이터 모듈 중 다른 하나의 호출을 검출하는 검출기(44)와;
상기 논리 연산부(43)에 의한 논리 연산을 제어하는 컨트롤러(47)를 더 포함하는데,
상기 컨트롤러(47)는,
상기 검출기가 상기 복수의 구성 데이터 모듈 중 하나에 의한 서브루틴으로서의 상기 복수의 구성 데이터 모듈 중 다른 하나의 호출을 검출하면, 상기 복수의 데이터 저장부(41a 내지 41d, 49a 내지 49d)에서 상기 서브루틴인 구성 데이터 모듈을 탐색하고,
상기 서브루틴인 구성 데이터 모듈을 발견하지 못한 경우에는, 로딩 커맨드를 상기 로더(3)로 보내며,
상기 로더(3)는 상기 로딩 커맨드가 나타내는 상기 서브루틴인 구성 데이터 모듈을 상기 복수의 데이터 저장부(41a 내지 41d, 49a 내지 49d) 중 하나로 로딩하는 것이다.
상기 논리 연산 시스템은,
상기 논리 연산부(43)의 내부 파라미터의 전부 또는 일부를 저장하여 인도하는 파라미터 버퍼(46)와;
상기 복수의 구성 데이터 모듈 중 하나에 의한 상기 복수의 구성 데이터 모듈 중 다른 하나의 호출 또는 재호출을 검출하는 검출기(44)와;
상기 논리 연산부에 의한 논리 연산을 제어하는 컨트롤러(47)를 더 포함하는데,
상기 컨트롤러(47)는,
상기 검출기(44)가 상기 복수의 구성 데이터 모듈 중 하나에 의한 상기 복수의 구성 데이터 모듈 중 다른 하나의 호출 또는 재호출을 검출하면, 상기 논리 연산부(43)의 내부 파라미터를 상기 파라미터 버퍼(46)에 저장하고,
호출 또는 재호출된 구성 데이터 모듈이 상기 논리 연산부(43)에 의해 참조될 수 있도록 배치되면, 상기 파라미터 버퍼(46)에 저장된 파라미터를 상기 논리 연산부(43)에 입력하는 것이다.
이러한 구성에 따르면, 상기 논리 연산 시스템은 복수의 모듈 사이에서 파라미터를 인도할 수 있다.
상기 논리 연산 시스템은 복수의 소스 프로그램 모듈의 각각에 기초하여 상기 복수의 구성 데이터 모듈의 각각을 생성하는 컴파일러(6)를 더 포함할 수 있다.
상기 목적을 달성하기 위해서, 본 발명에 따른 논리 연산 방법은,
각각의 룩업 테이블을 포함하는 복수의 구성 데이터 모듈을 복수의 데이터 저장부(41a 내지 41d, 49a 내지 49d)에 저장하는 단계와;
복수의 프로그래밍 가능한 논리 회로(43a)를 포함하는 논리 연산부(43)를 준비하는 단계와;
상기 논리 연산부(43)가 상기 복수의 데이터 저장부(41a 내지 41d, 49a 내지 49d) 중 적어도 하나에 저장된 적어도 하나의 구성 데이터 모듈을 참조하는 단계와;
상기 논리 연산부(43)가 참조하는 구성 데이터 모듈에 기초하여, 논리 출력 데이터로서 논리 입력 데이터의 논리 함수값을 제공하는 단계를 포함한다.
상기 논리 연산 방법은,
상기 복수의 데이터 저장부(41a 내지 41d)를 이용하여 시프트 레지스터(40)를 형성하는 단계와;
상기 시프트 레지스터(40)에 포함된 상기 복수의 데이터 저장부(41a 내지 41d) 중 적어도 하나 이상에 저장된 구성 데이터 모듈을 참조하는 단계를 더 포함할 수 있다.
상기 논리 연산 방법은 상기 시프트 레지스터(40)가 상기 복수의 데이터 저장부(41a 내지 41d) 사이에서 구성 데이터 모듈을 순환 이동시키는 단계를 더 포함할 수 있다.
상기 논리 연산 방법은,
셀렉터(42)가 상기 복수의 데이터 저장부(49a 내지 49d) 중 적어도 하나를 선택하는 단계와;
상기 셀렉터(42)가 선택한 상기 데이터 저장부에 저장된 구성 데이터 모듈을 참조하는 단계를 더 포함할 수 있다.
상기 셀렉터에 의한 선택은 상기 복수의 데이터 저장부(49a 내지 49d) 중에서 순환 변경될 수 있다.
상기 논리 연산 방법은,
상기 복수의 구성 데이터 모듈 중 하나에 의한 서브루틴으로서의 상기 복수의 구성 데이터 모듈 중 다른 하나의 호출을 검출하는 단계와;
상기 검출에 응답하여 상기 논리 연산부(43)의 내부 파라미터의 전부 또는 일부를 파라미터 레지스터(45)에 저장하는 단계와;
상기 복수의 구성 데이터 모듈 중 하나가 재호출되면, 상기 파라미터 레지스터(45)에 저장된 내부 파라미터를 상기 논리 연산부(43)에 재저장하는 단계를 더 포함할 수 있다.
상기 논리 연산 방법은,
상기 복수의 데이터 저장부(41a 내지 41d, 49a 내지 49d)에 상기 복수의 구성 데이터 모듈을 재기록 가능하게 저장하는 단계와;
로더(3)가 상기 복수의 데이터 저장부(41a 내지 41d, 49a 내지 49d)에 저장되는 상기 복수의 구성 데이터 모듈 중 적어도 하나를 로딩하는 단계를 더 포함할 수 있다.
상기 논리 연산 방법은,
상기 복수의 구성 데이터 모듈 중 하나에 의한 서브루틴으로서의 상기 복수의 구성 데이터 모듈 중 다른 하나의 호출을 검출하면, 상기 복수의 데이터 저장부(41a 내지 41d, 49a 내지 49d)에서 상기 서브루틴인 구성 데이터 모듈을 탐색하는 단계와;
상기 서브루틴인 구성 데이터 모듈을 발견하지 못한 경우에는, 로딩 커맨드를 상기 로더(3)로 보내는 단계와;
상기 로더(3)가 상기 로딩 커맨드가 나타내는 상기 서브루틴인 구성 데이터 모듈을 상기 복수의 데이터 저장부(41a 내지 41d, 49a 내지 49d) 중 하나로 로딩하는 단계를 더 포함할 수 있다.
상기 논리 연산 방법은,
상기 복수의 구성 데이터 모듈 중 하나에 의한 상기 복수의 구성 데이터 모듈 중 다른 하나의 호출 또는 재호출을 검출하는 단계와;
상기 검출에 응답하여 상기 논리 연산부(43)의 내부 파라미터의 전부 또는 일부를 파라미터 버퍼(46)에 저장하는 단계와;
호출 또는 재호출된 구성 데이터 모듈이 상기 논리 연산부(43)에 의해 참조될 수 있도록 배치되면, 상기 파라미터 버퍼(46)에 저장된 파라미터를 상기 논리 연산부(43)에 입력하는 단계를 더 포함할 수 있다.
상기 논리 연산 방법은 컴파일러(6)가 복수의 소스 프로그램 모듈의 각각에 기초하여 상기 복수의 구성 데이터 모듈의 각각을 생성하는 단계를 더 포함할 수 있다.
본 발명의 전술한 목적 및 다른 목적과 이점에 대해서는 다음에 이어지는 상세한 설명 부분과 첨부된 도면을 참조해보면 더욱더 명백하게 알 수 있을 것이다.
도 1은 제1 실시예에 따른 연산 시스템의 구성을 도시하는 도면.
도 2는 제1 실시예에 따른 연산 시스템의 변형된 구성을 도시하는 도면.
도 3은 제1 실시예에 따른 연산 시스템의 변형된 구성을 도시하는 도면.
도 4는 제1 실시예에 따른 연산 시스템의 변형된 구성을 도시하는 도면.
도 5는 제1 실시예에 따른 연산 시스템의 변형된 구성을 도시하는 도면.
도 6은 제2 실시예에 따른 연산 시스템의 구성을 도시하는 도면.
도 7은 제2 실시예에 따른 연산 시스템의 변형된 구성을 도시하는 도면.
도 1은 본 발명의 제1 실시예에 따른 연산 시스템(101)의 구성을 도시한다. 도 1에 도시한 연산 시스템(101)은 프로그래밍 가능한 논리 장치이다. 연산 시스템(101)은 FPGA 데이터 스토리지(2), 로더(3) 및 FPGA 디바이스(4)를 포함한다.
FPGA 데이터 스토리지(2)는 복수의 FPGA 데이터 모듈(2-1 내지 2-n)을 전부 저장한다. 연산 시스템(101)의 외부에 배치되는 컴파일러(6)는 복수의 FPGA 데이터 모듈(2-1 내지 2-n)을 생성하기 위해서 복수의 소스 프로그램(5-1 내지 5-n)을 컴파일링한다. 컴파일러(6)는 연산 시스템(101)의 내부에 배치될 수도 있다. 복수의 소스 프로그램(5-1 내지 5-n)은 하드웨어 기술 언어에 의해 프로그래밍된다. 예컨대, FPGA 데이터 모듈(2-1)은 소스 프로그램(5-1)을 컴파일링함으로써 생성된다. FPGA 데이터 모듈(2-2)은 소스 프로그램(5-2)을 컴파일링함으로써 생성되며, 나머지 FPGA 데이터 모듈도 동일한 방식으로 생성된다. 복수의 FPGA 데이터 모듈(2-1 내지 2-n)의 각각은 룩업 테이블(LUT)을 형성하기 위한 데이터를 포함하는 구성 데이터 모듈이다. FPGA 디바이스(4)에서 논리 입력 데이터와 논리 출력 데이터 간의 대응 관계는 LUT에 의해 표시된다. 복수의 소스 프로그램(5-1 내지 5-n)의 적어도 하나의 모듈은 복수의 소스 프로그램(5-1 내지 5-n) 중 다른 하나의 모듈을 호출한다. 이러한 복수의 소스 프로그램(5-1 내지 5-n) 간의 관계에 따라, 복수의 FPGA 데이터 모듈(2-1 내지 2-n)의 적어도 하나의 모듈은 복수의 FPGA 데이터 모듈(2-1 내지 2-n) 중 다른 하나의 모듈과 관련이 있다. 예컨대, 복수의 FPGA 데이터 모듈(2-1 내지 2-n) 중 하나는 복수의 FPGA 데이터 모듈(2-1 내지 2-n) 중 다른 하나의 모듈의 서브루틴으로서 기능한다. 또 다른 예로, 복수의 FPGA 데이터 모듈(2-1 내지 2-n)은 각각 하나씩 처리되는 일련의 프로그램 모듈에 대응한다.
로더(3)는 복수의 로딩 커맨드에 응답하여 FPGA 데이터 스토리지(2)로부터 FPGA 데이터 모듈(2-1 내지 2-n)을 FPGA 디바이스(4)로 로딩한다. 복수의 로딩 커맨드 중 하나는 FPGA 디바이스(4)의 외부로부터 공급되며, 이 때 FPGA 디바이스(4)가 시동한다. 다른 로딩 커맨드는 FPGA 디바이스(4)에 의한 연산 중에 발생된다. 로더(3)는 어느 한 로딩 커맨드에 응답하여 FPGA 데이터 스토리지(2)로부터 복수의 FPGA 데이터 모듈(2-1 내지 2-n) 중 어느 하나를 데이터 레지스터(41a 내지 41d) 중 어느 하나로 로딩한다. 예컨대, 로더(3)는 버스(48)를 통해 데이터 레지스터(41a 내지 41d)에 접속된다. 버스(48)는 데이터 버스, 어드레스 버스, 기록 인에이블선 등을 포함한다. 로더(3)는 로딩 커맨드에 응답하여, 어드레스 신호를 버스(48)의 어드레스 버스로 송신하고, 기록 인에이블선 상의 신호를 액티브 레벨로 바꾼다. 기록 인에이블선 상의 신호가 액티브 레벨로 바뀐 후에는, 로더(3)는 데이터 신호를 버스(48)의 데이터 버스로 송신한다.
FPGA 디바이스(4)는 복수의 FPGA 데이터 모듈(2-1 내지 2-n) 중 로더(3)가 로딩한 하나 또는 복수의 모듈을 참조하여 논리 회로를 형성한다. FPGA 디바이스(4)는 연산 시스템(101)의 외부로부터 입력되는 논리 입력 데이터의 논리 함수값을 발생시킨다. 예컨대, FPGA 디바이스(4)의 논리 입력 데이터는 키보드와 같은 입력 장치에 의해 공급되거나, 하드 디스크 드라이브(HDD)와 같은 외부 스토리지로부터 판독될 수 있다. 논리 입력 데이터의 논리 함수값은 연산 시스템(101)의 논리 출력 데이터로서 외부에 공급된다. 예컨대, FPGA 디바이스(4)의 논리 출력 데이터는 표시 장치와 같은 출력 장치에 공급되거나, 외부 스토리지에 기록될 수 있다. 또한, 논리 출력 데이터는 주변 장치 제어에 이용될 수 있다.
FPGA 디바이스(4)는 시프트 레지스터(40), 논리 블록(43), 루틴 검출기(44), 파라미터 레지스터(45), 파라미터 버퍼(46) 및 컨트롤러(47)를 포함한다.
도 1에 도시한 시프트 레지스터(40)는 4개의 데이터 레지스터(41a 내지 41d)를 포함한다. 예컨대, 데이터 레지스터(41a 내지 41d)의 각각은 FPGA 데이터 모듈(2-1 내지 2-n)의 크기에 따른 복수의 플립플롭을 포함한다. 데이터 레지스터(41a 내지 41d)의 각각은 로더(3)가 FPGA 데이터 스토리지(2)로부터 로딩한 FPGA 데이터 모듈(2-1 내지 2-n) 중 하나를 저장한다. 예컨대, 버스(48)의 기록 인에이블선 상의 신호가 액티브 레벨인 경우에, 버스(48)의 데이터 버스 상의 신호에 대응하는 데이터는 로더(3)가 선택한 데이터 레지스터(41a 내지 41d) 중 하나에서 버스(48)의 어드레스 버스 상의 신호에 대응하는 어드레스에 기록된다.
데이터 레지스터(41a 내지 41d)에 저장된 데이터 모듈은 데이터 레지스터(41a 내지 41d) 사이에서 순환 이동될 수 있다. 시프트 레지스터(40) 내에서의 데이터 모듈의 순환을 도 1에 파선으로 나타내었다. 더 상세히 말하자면, 데이터 레지스터(41d)에 저장된 데이터 모듈은 데이터 레지스터(41c)로 이동되고, 데이터 레지스터(41c)에 저장된 데이터 모듈은 데이터 레지스터(41b)로 이동되며, 데 이터 레지스터(41b)에 저장된 데이터 모듈은 데이터 레지스터(41a)로 이동되고, 데이터 레지스터(41a)에 저장된 데이터 모듈은 데이터 레지스터(41d)로 이동된다. 도 1에 도시한 시프트 레지스터(40)에 있어서, 데이터 레지스터(41a)에 저장된 데이터 모듈은 룩업 테이블로서 논리 블록(43)에 의해 참조된다. 데이터 레지스터(41a 내지 41d)에 저장된 데이터 모듈은 각각 병렬로 다른 데이터 레지스터로 이동된다. 그러므로, 논리 블록(43)에 의해 참조되는 데이터 모듈은 순환 변경된다.
논리 블록(43)은 게이트 회로(43a)와 플립플롭(43b)을 포함한다. 실제의 논리 블록(43)은 복수의 게이트 회로(43a)와 플립플롭(43b)을 포함한다. 도 1에는 예시용으로 하나의 게이트 회로(43a)와 플립플롭(43b)만을 도시하였다.
게이트 회로(43a)는 여러 종류의 논리 게이트(예컨대, AND, OR, NOT, XOR 및 이들 함수의 조합)를 실현하기 위한 프로그래밍 가능한 논리 회로이다. 게이트 회로(43a)의 논리 함수는 데이터 레지스터(41a)에 저장된 데이터 모듈에 기초하여 결정된다. 플립플롭(43b)은 게이트 회로(43a)의 출력을 내부 파라미터로서 유지한다. 또한, 파라미터가 외부적으로 플립플롭(43b)에 기록될 수 있다.
루틴 검출기(44)는 데이터 레지스터(41)에 저장된 데이터 모듈과 다른 데이터 모듈 간의 관계를 식별한다. 데이터 레지스터(41a)에 저장된 데이터 모듈이 FPGA 데이터 모듈(2-1 내지 2-n) 중 다른 데이터 모듈과 관련이 있다면, 루틴 검출기(44)는 그 관련이 있는 다른 데이터 모듈을 지정한다. 그 지정된 데이터 모듈은 컨트롤러(47)에 보고된다.
파라미터 레지스터(45)는 플립플롭(43b)에 저장된 파라미터의 전부 또는 일 부를 저장하여 축적하는데, 이 때 시프트 레지스터(40)에 저장된 데이터 모듈이 이동된다. 예컨대, 파라미터 레지스터(45)는 LIFO(후입선출) 방법에 따라 파라미터를 축적할 수 있다. 파라미터 레지스터(45)에 축적된 파라미터는 동일한 데이터 모듈이 재호출되어 데이터 레지스터(41a)로 다시 이동될 때 플립플롭(43b)에 반송된다.
파라미터 버퍼(46)는 플립플롭(43b)에 저장된 파라미터의 전부 또는 일부를 저장하여 인도하는데, 이 때 데이터 레지스터(41a)에 저장된 데이터 모듈이 서브루틴으로서 다른 데이터 모듈을 호출한다. 다음 처리에서 서브루틴으로서 참조되는 데이터 모듈이 데이터 레지스터(41a)로 이동될 때, 파라미터 버퍼(46)에 저장된 파라미터가 게이트 회로(43a)에 대한 입력으로서 논리 블록(43)에 반송된다. 또 다른 상황으로, FPGA 데이터 모듈(2-1 내지 2-n) 중 하나가 메인루틴으로서 재호출될 때, 파라미터 버퍼(46)가 반송값으로서 논리 블록(43)의 출력을 저장한다. 메인루틴으로서 참조되는 데이터 모듈이 데이터 레지스터(41a)로 이동될 때, 파라미터 버퍼(46)에 저장된 파라미터가 플립플롭(43b)에 기록됨으로써 논리 블록(43)에 반송된다.
컨트롤러(47)는 논리 블록(43)에서의 논리 연산을 제어한다. 루틴 검출기(44)가 데이터 레지스터(41a)에 저장된 데이터 모듈에 의한 다른 데이터 모듈의 호출을 검출할 때, 컨트롤러(47)는 플립플롭(43b)에 저장된 내부 파라미터 중 축적 파라미터와 인도 파라미터를 구별한다. 축적 파라미터는 파라미터 레지스터(45)에 저장되고, 인도 파라미터는 파라미터 버퍼(46)에 입력된다. 컨트롤러(47)는 데이터 레지스터(41b 내지 41d)에서 루틴 검출기(44)가 지정한 다른 데이 터 모듈의 검출을 시도한다. 루틴 검출기(44)가 지정한 데이터 모듈이 검출되면, 컨트롤러(47)는 그 데이터 모듈을 데이터 레지스터(41a)로 이동시키기 위해서 시프트 레지스터(40)를 구동시킨다. 한편, 루틴 검출기(44)가 지정한 데이터 모듈이 데이터 레지스터(41b 내지 41d)에서 검출되지 않으면, 컨트롤러(47)는 로딩 커맨드를 로더(3)로 보낸다. 이 로딩 커맨드는 FPGA 데이터 모듈(2-1 내지 2-n) 중 하나를 로딩 대상으로, 그리고 데이터 레지스터(41a 내지 41d) 중 하나를 내용 재기록 대상으로 지정한다. 로더(3)에 의한 로딩 후에, 컨트롤러(47)는 이끌린 데이터 모듈을 데이터 레지스터(41a)로 이동시키기 위해서 시프트 레지스터(40)를 구동시킨다. 의도된 데이터 모듈이 데이터 레지스터(41a)로 이동될 때, 컨트롤러(47)는 파라미터 버퍼(46)에 저장된 파라미터가 플립플롭(43b)에 기록되도록 제어한다.
FPGA 데이터 모듈(2-1 내지 2-n) 중 하나가 메인루틴으로서 재호출될 때, 컨트롤러(47)는 플립플롭(43b)에 저장된 내부 파라미터 중 인도 파라미터를 지정한다. 컨트롤러(47)가 지정한 파라미터는 파라미터 버퍼(46)에 입력된다. 메인루틴인 데이터 모듈이 데이터 레지스터(41a)로 이동될 때, 컨트롤러(47)는 파라미터 레지스터(45)에 저장된 파라미터가 플립플롭(43b)의 일부분에 기록되도록 제어하고, 또한 파라미터 버퍼(46)에 저장된 파라미터가 플립플롭(43b)의 다른 부분에 기록되도록 제어한다.
제1 실시예의 연산 시스템(101)에 따라, 우선, 로더(3)는 외부로부터 로딩 커맨드를 수신한다. 로더(3)는 로딩 커맨드에 따라 FPGA 데이터 스토리지(2)로부터 FPGA 데이터 모듈(2-1 내지 2-n) 중 하나를 데이터 레지스터(41a)로 로딩한다.
예컨대, 로더(3)는 FPGA 데이터 모듈(2-1)을 데이터 레지스터(41a)로 로딩한다. FPGA 데이터 모듈(2-1)의 로딩이 완료되면, 논리 블록(43)은 FPGA 데이터 모듈(2-1)을 저장한 데이터 레지스터(41a)를 참조하여 논리 회로를 형성한다. 외부로부터 논리 블록(43)에 공급된 논리 입력 데이터는 게이트 회로(43a)에 도입된다. 게이트 회로(43a)와 플립플롭(43b)은 LUT로서 FPGA 데이터 모듈(2-1)을 저장한 데이터 레지스터(41a)를 참조하여 논리 입력 데이터의 논리 함수값을 발생시킨다. 논리 블록(43)은 논리 입력 데이터의 논리 함수값을 논리 출력 데이터로서 외부에 공급한다. 이와 같이, 연산 시스템(101)은 메인루틴으로서 FPGA 데이터 모듈(2-1)에 대응하는 연산을 실행한다. 이러한 FPGA 디바이스(4)에 의한 논리 연산에 있어서, 루틴 검출기(44)는 데이터 레지스터(41a)에 저장된 데이터 모듈에 의한 다른 데이터 모듈의 호출을 검출한다.
일례로서, FPGA 데이터 모듈(2-1)이 FPGA 데이터 모듈(2-n)과 관련이 있다고 하자. 이 경우에, 루틴 검출기(44)는 FPGA 데이터 모듈(2-1)에 의한 FPGA 데이터 모듈(2-n)의 호출을 검출한다. 루틴 검출기(44)에 의한 호출 검출에 응답하여, 컨트롤러(47)는 플립플롭(43b)에 저장된 내부 파라미터를 파라미터 레지스터(45) 및/또는 파라미터 버퍼(46)에 저장한다. 또한, 컨트롤러(47)는 내부 파라미터에 따라 FPGA 데이터 모듈(2-1)에 대한 메인루틴 식별자를 파라미터 레지스터(45)에 저장한다.
컨트롤러(47)는 데이터 레지스터(41a 내지 41d)에서 서브루틴인 FPGA 데이터 모듈(2-n)을 탐색한다. FPGA 데이터 모듈(2-n)이 발견되지 않으면, 컨트롤러(47)는 로딩 커맨드를 로더(3)로 보낸다. 이 예에 있어서, 그 로딩 커맨드에 따라 FPGA 데이터 스토리지(2)로부터 FPGA 데이터 모듈(2-n)을 데이터 레지스터(41b)로 로딩한다. FPGA 데이터 모듈(2-n)의 로딩이 완료되면, 컨트롤러(47)는 FPGA 데이터 모듈(2-n)을 데이터 레지스터(41a)로 이동시키기 위해서 시프트 레지스터(40)를 구동시킨다. 데이터 레지스터(41b)에 포함된 모든 레지스터 요소는 병렬로 FPGA 데이터 모듈(2-n)을 데이터 레지스터(41a)의 레지스터 요소로 이동시킨다. 동시에, 데이터 레지스터(41a)에 저장된 FPGA 데이터 모듈(2-1)이 데이터 레지스터(41d)로 이동된다.
FPGA 데이터 모듈(2-n)이 데이터 레지스터(41a 내지 41d)에서 발견되면, 컨트롤러(47)는 데이터 모듈의 로딩없이 시프트 레지스터(40)를 구동시킨다. 시프트 레지스터(40)의 구동에 따라, FPGA 데이터 모듈(2-n)이 데이터 레지스터(41a)로 이동된다.
데이터 모듈의 이동이 완료되면, 논리 블록(43)은 FPGA 데이터 모듈(2-n)을 저장하는 데이터 레지스터(41a)를 참조하여 논리 회로를 재구성한다. 이 때, 파라미터 버퍼(46)에 저장된 파라미터는 게이트 회로(43a)에 대한 입력의 전부 또는 일부로서 논리 블록(43)에 반송된다.
논리 회로의 재구성이 완료되면, 게이트 회로(43a)와 플립플롭(43b)은 LUT로서 FPGA 데이터 모듈(2-n)을 저장하는 데이터 레지스터(41a)를 참조하여 논리 입력 데이터의 논리 함수값을 발생시킬 수 있다. 따라서, 연산 시스템(101)은 서브루틴인 FPGA 데이터 모듈(2-n)에 대응하는 연산을 실행한다.
FPGA 데이터 모듈(2-n)에 대응하는 연산이 완료되면, 메인루틴인 FPGA 데이터 모듈(2-1)이 재호출된다. FPGA 데이터 모듈(2-1)을 재호출하기 위해서, 컨트롤러(47)는 논리 블록(43)의 논리 출력 데이터를 파라미터 버퍼(46)에 저장한다. 컨트롤러(47)는 파라미터 레지스터(45)에 저장된 메인루틴 식별자를 취득한다. 이 메인루틴 식별자는 메인루틴인 FPGA 데이터 모듈(2-1)을 나타낸다. 이 메인루틴 식별자에 기초하여, 컨트롤러(47)는 시프트 레지스터(40)를 구동시킨다. 그 결과, FPGA 데이터 모듈(2-1)이 데이터 레지스터(41a)로 이동된다. 동시에, 컨트롤러(47)는 파라미터 레지스터(45)에 저장된 파라미터가 플립플롭(43b)의 일부분에 기록되도록 제어하고, 또한 파라미터 버퍼(46)에 저장된 파라미터가 플립플롭(43b)의 다른 부분에 기록되도록 제어한다.
논리 블록(43)은 이동된 FPGA 데이터 모듈(2-1)을 저장하는 데이터 레지스터(41a)를 참조하여 논리 회로를 재구성한다. 게이트 회로(43a)와 플립플롭(43b)은 LUT로서 FPGA 데이터 모듈(2-1)을 저장하는 데이터 레지스터(41a)를 참조하여 논리 입력 데이터에 대한 논리 함수를 실행한다. 따라서, 연산 시스템(101)은 다시 메인루틴인 FPGA 데이터 모듈(2-1)에 대응하는 연산을 실행할 수 있다.
서브루틴인 FPGA 데이터 모듈(2-n)은 FPGA 데이터 모듈(2-1)을 제외한 다른 데이터 모듈을 더 호출할 수도 있다. 이 경우에, FPGA 데이터 모듈(2-n)에 대응하는 연산이 완료되면, 파라미터 레지스터(45)에 저장된 파라미터가 푸시 다운된다. 플립플롭(43b)은 FPGA 데이터 모듈(2-n)에 대응하는 연산의 결과로서 내부 파라미 터를 저장한다. 플립플롭(43b)에 저장된 내부 파라미터의 전부 또는 일부는 루틴 식별자와 함께 파라미터 레지스터(45)의 맨 위로 이동된다. 파라미터 레지스터(45)의 맨 위에 저장된 파라미터와 함께, 루틴 식별자는 재호출되는 FPGA 데이터 모듈(2-n)을 지정한다. 이 루틴 식별자에 따라 FPGA 데이터 모듈(2-n)이 재호출되면, 파라미터 레지스터(45)의 맨 위에 저장된 내부 파라미터는 플립플롭(43b)의 전부 또는 일부에 기록된다. 이 호출 처리의 다른 부분은 FPGA 데이터 모듈(2-n)이 FPGA 데이터 모듈(2-1)에 의해 호출되는 경우의 처리와 동일하다. 그 재호출 처리는 FPGA 데이터 모듈(2-1)이 FPGA 데이터 모듈(2-n)에 의해 재호출되는 경우의 처리와 동일하다.
FPGA 데이터 모듈(2-1 내지 2-n) 중 적어도 하나는 재귀 프로그램에 적합한 것일 수 있다. 재귀 프로그램은 그 실행 중에 자신을 호출하는 프로그램이다.
전술한 바와 같이, 논리 블록(43)의 내부 파라미터로서 플립플롭(43b)에 저장된 파라미터는 파라미터 레지스터(45)에 저장되어 축적된다. 내부 파라미터를 축적한 후에, 서브루틴으로서 호출된 데이터 모듈이 데이터 레지스터(41a)로 이동된다. FPGA 데이터 모듈(2-1 내지 2-n) 중 하나를 저장하는 데이터 레지스터(41a)는 논리 블록(43)에 의해 LUT로서 참조될 수 있다. 메인루틴인 데이터 모듈이 호출되면, 파라미터 레지스터(45)에 저장된 파라미터가 논리 블록(43)에 재저장된다. 이와 같이, 복수의 모듈을 포함하는 대규모 프로그램은 하드웨어에 의해 실행될 수 있다. 하드웨어에 의한 프로그램 실행에 필요한 시간은 CPU를 이용한 소프트웨어에 의한 프로그램 실행에 필요한 시간보다 짧다. 연산 시스템(101)은 고속으로 논리 연산을 실행할 수 있다.
FPGA 데이터 모듈(2-1 내지 2-n) 중 하나를 저장하는 데이터 레지스터(41a)가 논리 블록(43)에 의해 참조되는 동안에, 로더(3)는 FPGA 데이터 스토리지(2)로부터 FPGA 데이터 모듈(2-1 내지 2-n) 중 다른 하나를 데이터 레지스터(41b 내지 41d) 중 하나로 로딩할 수 있다. 이러한 로딩에 의해서, FPGA 데이터 모듈(2-1 내지 2-n) 중 다른 하나가 데이터 레지스터(41b 내지 41d) 중 하나에 순차적으로 기록될 수 있다. 시프트 레지스터(40)는 병렬로 데이터 레지스터(41a 내지 41d)에 저장된 데이터 모듈을 이동시킨다. 데이터 모듈 이동에 필요한 시간은 데이터 모듈 기록에 필요한 시간보다 매우 짧다. 따라서, 구성 데이터 갱신에 의해 FPGA 디바이스(4)에서 일어나는 오버헤드는 단 하나의 구성 메모리를 갖는 구성에서 일어나는 오버헤드보다 매우 작다.
FPGA 데이터 모듈(2-1 내지 2-n)은 컴파일러(6)가 컴파일링하는 소스 프로그램(5-1 내지 5-n)에 대응하도록 발생된다. 소스 프로그램(5-1 내지 5-n)은 모듈 단위로 분할된다. 그러므로, 소스 프로그램(5-1 내지 5-n)은 서로 독립적으로 생성될 수 있다. 또한, 소스 프로그램(5-1 내지 5-n)의 각각은 다른 소프트웨어의 일부로서 재사용될 수 있다.
플립플롭(43b)에 저장된 논리 블록(43)의 내부 파라미터는 LUT(데이터 레지스터 41a에 저장된 데이터 모듈)가 다른 것으로 바뀔 때 파라미터 레지스터(45) 및/또는 파라미터 버퍼(46)에 저장된다. 파라미터 레지스터(45)는 내부 파라미터를 저장하여 축적하고, 파라미터 버퍼(46)는 내부 파라미터를 저장하여 인도한다. 파 라미터 버퍼(46)에 저장된 파라미터는 메인루틴 처리로부터 서브루틴 처리로, 또는 서브루틴 처리로부터 메인루틴 처리로 인도된다. 파라미터 레지스터(45)에 저장된 파라미터는 서브루틴에서 메인루틴으로 처리가 복귀될 때 재저장된다. 복수의 모듈을 포함하는 대규모 프로그램은 이러한 구성에 따라 하드웨어에 의해 실행될 수 있다.
제1 실시예에 따른 연산 시스템(101)에 대한 각종 변형례 및 응용예가 가능하다.
일례로서, 데이터 레지스터(41a 내지 41d) 중 어느 하나에 기록된 데이터 모듈이 논리 블록(43)에 의해 LUT로서 참조되도록 판독될 수 있다. 이 예에서, 시프트 레지스터(40)의 데이터 레지스터(41a 내지 41d)는 판독 인에이블선에 접속된다. 데이터 레지스터(41a 내지 41d) 중 하나에 기록된 FPGA 데이터 모듈(2-1 내지 2-n) 중 하나가 액티브 레벨인 어느 한 판독 인에이블선에 따라 판독될 수 있다.
다른 예로서, 시프트 레지스터(40)에 저장된 복수의 데이터 모듈이 동시에 판독될 수 있다. 이 예에서, 데이터 레지스터(41a 내지 41d) 중 2개 이상에 저장된 FPGA 데이터 모듈(2-1 내지 2-n) 중 2개 이상이 액티브 레벨인 2개 이상의 판독 인에이블선에 따라 동시에 판독될 수 있다. 게이트 회로(43a)의 논리 함수는 시프트 레지스터(40)로부터 판독되는 데이터 모듈에 기초하여 결정된다.
또한, 로더(3)는 FPGA 데이터 스토리지(2)로부터 데이터 모듈을 데이터 레지스터(41a 내지 41d) 중 단 하나(예컨대, 단지 데이터 레지스터 41d)로 로딩할 수 있다.
데이터 레지스터(41b 내지 41d)의 각각이 이중 포트 RAM인 경우에, 어느 한 데이터 레지스터(41a 내지 41d)의 출력 포트가 다른 하나의 데이터 레지스터(41a 내지 41d)의 입력 포트에 접속될 수 있다. 예컨대, 도 2에 도시한 시프트 레지스터(40)에서, 데이터 레지스터(41d)의 출력 포트(OUT)는 데이터 레지스터(41c)의 입력 포트(IN)에 접속되고, 데이터 레지스터(41c)의 출력 포트는 데이터 레지스터(41b)의 입력 포트에 접속되며, 데이터 레지스터(41b)의 출력 포트는 데이터 레지스터(41a)의 입력 포트에 접속되고, 데이터 레지스터(41a)의 출력 포트는 데이터 레지스터(41d)의 입력 포트에 접속된다. 이러한 구성에 있어서, 데이터 레지스터(41a 내지 41d)에 저장된 데이터 모듈은 데이터 레지스터(41a 내지 41d) 사이에서 순환 이동된다.
도 3에 도시한 바와 같이, 시프트 레지스터(40)는 FPGA 데이터 모듈(2-1 내지 2-n)에 따른 데이터 레지스터(41-1 내지 41-n)를 포함할 수 있다. FPGA 데이터 모듈(2-1 내지 2-n)의 수와 데이터 레지스터(41-1 내지 41-n)의 수는 일치한다. 이러한 구성에 있어서, 컴파일러(6)는 컴파일링된 소스 프로그램(5-1 내지 5-n) 중 하나를 데이터 레지스터(41-n)에 저장한다. 컴파일러(6)가 소스 프로그램(5-1 내지 5-n) 중 하나를 컴파일링할 때마다, 시프트 레지스터(40)는 데이터 레지스터(41-1 내지 41-n)에 저장된 데이터를 한번씩 이동시킨다. 컴파일러(6)가 모든 소스 프로그램(5-1 내지 5-n)의 컴파일링을 완료하면, 시프트 레지스터(40)는 데이터 레지스터(41-1 내지 41-n)에 모든 FPGA 데이터 모듈(2-1 내지 2-n)을 유지하게 된다. 프로그램 처리가 시작되면, 시프트 레지스터(40)는 FPGA 데이터 모듈(2-1 내지 2-n) 중 하나를 데이터 레지스터(41-1)로 이동시킨다. 데이터 레지스터(41-1)로 이동된 데이터 모듈은 논리 블록(43)에 의해 LUT로서 참조된다. 바꿔 말하면, 도 3에 도시한 시프트 레지스터(40)는 FPGA 데이터 모듈(2-1 내지 2-n)의 로딩없이 LUT를 다른 것으로 대체할 수 있다.
소스 프로그램(5-1 내지 5-n)은 컴파일러(6)없이 직접 데이터 레지스터(41a 내지 41d)로 로딩될 수 있도 있다. 이 경우에, 도 4에 도시한 바와 같이, FPGA 디바이스(4)는 시프트 레지스터(40)와 논리 블록(43) 사이에 접속되는 인터프리터(50)를 포함한다. 예컨대, 인터프리터(50)는 복수의 게이트 회로의 조합을 포함하는 하드웨어에 의해 실현된다. 논리 블록(43)은 인터프리터(50)의 출력에 기초하여 논리 회로를 재구성할 수 있는데, 이는 연산 실행 속도에 영향을 거의 미치지 않는다. 소스 프로그램에 포함된 연산의 실행이 완료될 때마다, 데이터 회로(43a)의 출력이 플립플롭(43b)의 전부 또는 일부에 취득된다. 이와 같이, 소스 프로그램에 포함된 연산은 하나씩 실행된다.
이러한 구성에 따라, 시프트 레지스터(40)는 데이터 레지스터(41a)에 저장되는 소스 프로그램(5-1 내지 5-n) 중 하나를 인터프리터(50)에 공급한다.
인터프리터(50)는 데이터 레지스터(41a)에 저장된 소스 프로그램에 포함된 연산 코드를 하나씩 해석한다. 게이트 회로(43a)의 논리 함수는 인터프리터(50)가 해석한 결과에 기초하여 결정된다. 해석 결과로서 다른 소스 프로그램이 호출되면, 컨트롤러(47)는 이 호출을 검출한다. 컨트롤러(47)의 제어 하에서, 소스 프로그램(5-1 내지 5-n) 중 하나가 로딩되고, 시프트 레지스터(40)가 구동됨으로 써, 호출된 소스 프로그램이 데이터 레지스터(41a)에 저장된다. 소스 프로그램의 호출이 검출되면, 컨트롤러(47)는 플립플롭(43b)에 저장된 내부 파라미터를 파라미터 레지스터(45) 및/또는 파라미터 버퍼(46)에 저장한다. 또한, 컨트롤러(47)는 내부 파라미터와 함께 파라미터 레지스터(45)에 메인루틴 식별자를 저장한다.
서브루틴으로서 호출되는 소스 프로그램(5-1 내지 5-n) 중 하나에 대응하는 연산이 완료되면, 소스 프로그램(5-1 내지 5-n) 중 다른 하나가 메인루틴으로서 재호출된다. 이 때, 컨트롤러(47)는 논리 블록(43)의 논리 출력 데이터를 파라미터 버퍼(46)에 저장한다. 그리고 컨트롤러(47)는 파라미터 레지스터(45)에 저장된 메인루틴 식별자를 취득한다. 이 메인루틴 식별자에 기초하여, 컨트롤러(47)는 시프트 레지스터(40)를 구동시킨다. 동시에, 컨트롤러(47)는 파라미터 레지스터(45)에 저장된 파라미터가 플립플롭(43b)의 일부분에 기록되도록 제어하고, 또한 파라미터 버퍼(46)에 저장된 파라미터가 플립플롭(43b)의 다른 부분에 기록되도록 제어한다.
이와 같이, 소스 프로그램(5-1 내지 5-n)은 모듈 단위로 데이터 레지스터(41a 내지 41d) 중 하나로 로딩될 수 있다. 이 때문에, 복수의 모듈을 포함하는 대규모 프로그램을 컴파일러(6)없이 하드웨어에 의해 실행할 수 있다. 소스 프로그램(5-1 내지 5-n)이 데이터 레지스터(41a 내지 41d) 사이에서 순환 이동될 수 있기 때문에, 구성 데이터 갱신에 의해 FPGA 디바이스(4)에서 일어나는 오버헤드는 단 하나의 구성 메모리를 갖는 구성에서 일어나는 오버헤드보다 매우 작다.
도 5에 도시한 바와 같이, 시프트 레지스터(40)는 소스 프로그램(5-1 내지 5-n)에 따른 데이터 레지스터(41-1 내지 41-n)를 포함할 수 있다. 소스 프로그램(5-1 내지 5-n)의 수와 데이터 레지스터(41-1 내지 41-n)의 수는 일치한다. 시프트 레지스터(40)는 모든 소스 프로그램(5-1 내지 5-n)을 데이터 레지스터(41-1 내지 41-n)에 저장한다. 시프트 레지스터(40)는 프로그램의 진행에 따라 소스 프로그램(5-1 내지 5-n) 중 하나를 데이터 레지스터(41-1)로 이동시킨다. 데이터 레지스터(41-1)로 이동된 소스 프로그램은 인터프리터(50)에 의해 해석된다. 바꿔 말하면, 도 5에 도시한 시프트 레지스터(40)는 소스 프로그램(5-1 내지 5-n)의 로딩없이 소프 프로그램을 다른 것으로 변경할 수 있다.
도 6은 본 발명의 제2 실시예에 따른 연산 시스템(102)의 구성을 도시한다. 도 6에서는, 제1 실시예에 따른 연산 시스템(101)의 것과 동일한 구성에는 동일한 참조 번호를 부여하였다.도 6에 도시한 바와 같이, 연산 시스템(102)의 FPGA 디바이스(7)는 시프트 레지스터(40) 대신에 셀렉터(42)와 데이터 메모리(49a 내지 49d)를 포함한다.
셀렉터(42)는 컨트롤러(47)로부터 수신한 제어 신호에 따라 데이터 메모리(49a 내지 49d) 중 하나를 선택한다. 셀렉터(42)가 선택한 데이터 메모리에 있는 데이터 모듈은 논리 블록(43)에 의해 LUT로서 참조된다. 예컨대, 셀렉터(42)는 4개의 입력과 1개의 출력을 갖는 멀티플렉서일 수 있다. 셀렉터(42)의 4개 입력의 각각은 각각 데이터 메모리(49a 내지 49d)의 각각에 포함된 복수의 메모리 셀 중 하나에 접속된다. 실제의 FPGA 디바이스(7)의 경우, 셀렉터(42)의 수는 LUT의 크기에 대응한다. 도 6에는 예시용으로 하나의 셀렉터(42)만을 도시하였다. 셀렉터(42)가 선택하는 데이터 메모리는 데이터 메모리(49a 내지 49d) 중 다른 하 나로 순환 변경될 수 있다. 또한, 셀렉터(42)는 동시에 데이터 메모리(49a 내지 49d) 중 2개 이상을 선택할 수도 있다.
데이터 메모리(49a 내지 49d)의 각각은 예컨대 플립플롭이나 RAM이다. 제1 실시예의 데이터 레지스터(41a 내지 41d)뿐만 아니라, 데이터 메모리(49a 내지 49d)의 각각은 버스(48)를 통해 로더(3)에 접속된다. 버스(48)는 데이터 버스, 어드레스 버스, 기록 인에이블선 등을 포함한다. 버스(48)의 기록 인에이블선 상의 신호가 액티브 레벨인 경우에, 데이터 메모리(49a 내지 49d) 중 하나 이상에서 버스(48)의 어드레스 버스 상의 신호에 대응하는 어드레스에 기록된다. 데이터 메모리(49a 내지 49d)의 각각이 RAM인 경우에, 데이터 메모리(49a 내지 49d)의 각각은 판독 인에이블선에 접속된다. 셀렉터(42)가 선택한 데이터 메모리(49a 내지 49d) 중 하나에 접속되는 판독 인에이블선에 액티브 레벨의 신호가 공급된다. 셀렉터(42)가 동시에 데이터 메모리(49a 내지 49d) 중 2개 이상을 선택하는 경우에는, 복수의 데이터 메모리(49a 내지 49d)에 접속되는 복수의 판독 인에이블선에 액티브 레벨의 신호가 공급될 수 있다. 셀렉터(42)가 선택하는 데이터 메모리(49a 내지 49d) 중 하나는 논리 블록(43)에 의해 LUT로서 참조될 수 있다.
제2 실시예의 연산 시스템(102)에 따라, 제1 실시예와 마찬가지로, 로더(3)는 FPGA 데이터 스토리지(2)로부터 FPGA 데이터 모듈(2-1 내지 2-n) 중 하나를 데이터 메모리(49a 내지 49d)로 로딩한다. 예컨대, 로더(3)는 FPGA 데이터 모듈(2-1)을 데이터 메모리(49a)로 로딩한다. 셀렉터(42)는 컨트롤러(47)로부터 공급된 제어 신호에 따라 데이터 메모리(49a 내지 49d) 중 하나를 선택한다. 이 예에서, 셀렉터(42)는 데이터 메모리(49a)를 선택한다. 논리 블록(43)은 셀렉터(42)가 선택한 데이터 메모리(49a 내지 49d) 중 하나, 즉 데이터 메모리(49a)를 참조하여 논리 회로를 형성한다. 게이트 회로(43a)와 플립플롭(43b)은 LUT로서 데이터 메모리(49a)를 참조하여 논리 입력 데이터의 논리 함수값을 발생시킨다. 루틴 검출기(44)는 셀렉터(42)가 선택한 데이터 메모리(49a)에 저장된 데이터 모듈에 의한 다른 데이터 모듈의 호출을 검출한다.
예컨대, FPGA 데이터 모듈(2-1)이 FPGA 데이터 모듈(2-n)과 관련이 있다고 하자. 이 경우에, 루틴 검출기(44)는 FPGA 데이터 모듈(2-1)에 의한 FPGA 데이터 모듈(2-n)의 호출을 검출한다. 컨트롤러(47)는 제1 실시예와 마찬가지로, 논리 블록(43), 파라미터(45) 및 파라미터 버퍼(46)의 동작을 제어한다.
컨트롤러(47)는 데이터 메모리(49a 내지 49d)에서 서브루틴인 FPGA 데이터 모듈(2-n)을 탐색한다. FPGA 데이터 모듈(2-n)이 발견되지 않으면, 컨트롤러(47)는 로딩 커맨드를 로더(3)로 보낸다. 이 예에 있어서, 그 로딩 커맨드에 따라 FPGA 데이터 스토리지(2)로부터 FPGA 데이터 모듈(2-n)을 데이터 메모리(49b)로 로딩한다. FPGA 데이터 모듈(2-n)의 로딩이 완료되면, 컨트롤러(47)는 셀렉터(42)로 하여금 데이터 메모리(49b)를 선택하도록 제어하기 위한 제어 신호를 셀렉터(42)로 보낸다. 이 제어 신호에 따라, 셀렉터(42)는 데이터 메모리(49b)를 선택한다.
한편, FPGA 데이터 모듈(2-n)이 데이터 메모리(49a 내지 49d)에서 발견되면, 컨트롤러(47)는 데이터 모듈의 로딩없이 제어 신호를 셀렉터(42)로 보낸다.
논리 블록(43)은 셀렉터(42)가 선택한 데이터 메모리(49b)를 참조하여 논리 회로를 재구성한다. 논리 회로의 재구성이 완료되면, 게이트 회로(43a)와 플립플롭(43b)은 LUT로서 FPGA 데이터 모듈(2-n)을 저장하는 데이터 메모리(49b)를 참조하여 논리 입력 데이터의 논리 함수값을 발생시킬 수 있다.
FPGA 데이터 모듈(2-n)에 대응하는 연산이 완료되면, 메인루틴인 FPGA 데이터 모듈(2-1)이 재호출하기 위해서, 컨트롤러(47)는 셀렉터(42)로 하여금 데이터 메모리(49a)를 선택하도록 제어하기 위한 제어 신호를 셀렉터(42)로 보낸다. 이 제어 신호에 따라, 셀렉터(42)는 데이터 메모리(49a)를 선택한다.
논리 블록(43)은 이동된 FPGA 데이터 모듈(2-1)을 저장하는 데이터 레지스터(41a)를 참조하여 논리 회로를 재구성한다. 게이트 회로(43a)와 플립플롭(43b)은 LUT로서 FPGA 데이터 모듈(2-1)을 저장하는 데이터 레지스터(41)를 참조하여 논리 입력 데이터에 대한 논리 함수를 실행한다. 따라서, 연산 시스템(102)은 다시 메인루틴인 FPGA 데이터 모듈(2-1)에 대응하는 연산을 실행할 수 있다.
제1 실시예와 마찬가지로, 서브루틴인 FPGA 데이터 모듈(2-n)은 FPGA 데이터 모듈(2-1)을 제외한 다른 데이터 모듈을 더 호출할 수도 있다.
이러한 구성에 따르면, 복수의 모듈을 포함하는 대규모 프로그램은 하드웨어에 의해 실행될 수 있다. 이 연산 시스템(102)에 의한 논리 연산은 CPU를 이용한 소프트웨어에 의한 논리 연산보다 고속으로 실행될 수 있다. 셀렉터(42)가 선택한 데이터 메모리(49a 내지 49d) 중 하나가 논리 블록(43)에 의해 참조되는 동안에, 로더(3)는 FPGA 데이터 모듈(2-1 내지 2-n) 중 하나를 로딩하기 위해서 데이터 메 모리(49a 내지 49d) 중 다른 하나를 재기록할 수 있다. 셀렉터(42)에 의한 선택을 변경함으로써 바로 LUT를 다른 것으로 변경한다. 따라서, 구성 데이터 갱신에 의해 FPGA 디바이스(7)에서 일어나는 오버헤드는 단 하나의 구성 메모리를 갖는 구성에서 일어나는 오버헤드보다 매우 작다.
제2 실시예에 따른 연산 시스템(102)에 대한 각종 변형례 및 응용예가 가능하다.
예컨대, 셀렉터(42)는 데이터 메모리(49a 내지 49d)를 순환 선택할 수 있다. 구체적으로, 셀렉터(42)는 데이터 메모리(49a)를 선택한 후에, 데이터 메모리(49b)를 선택한다. 셀렉터(42)는 데이터 메모리(49b)를 선택한 후에, 데이터 메모리(49c)를 선택한다. 셀렉터(42)는 데이터 메모리(49c)를 선택한 후에, 데이터 메모리(49d)를 선택한다. 셀렉터(42)는 데이터 메모리(49d)를 선택한 후에, 데이터 메모리(49a)를 선택한다. 이와 같이, 셀렉터(42)와 데이터 메모리(49a 내지 49d)는 실질적으로 제1 실시예의 시프트 레지스터(40)의 것과 동일한 기능을 실현한다.
FPGA 디바이스(7)는 도 3에 도시한 연산 시스템(101)의 것과 동일한 착상에 기초하여, FPGA 데이터 모듈(2-1 내지 2-n)에 따라 n개의 데이터 메모리를 포함할 수 있다. 이 경우에, 셀렉터(42)는 n개의 입력과 1개의 출력을 갖는 멀티플렉서일 수 있다.
소스 프로그램(5-1 내지 5-n)은 컴파일러(6)없이 직접 데이터 메모리(49a 내지 49d)로 로딩될 수 있도 있다. 이 경우에, 도 7에 도시한 바와 같이, FPGA 디바이스(7)는 셀렉터(42)와 논리 블록(43) 사이에 접속되는 인터프리터(50)를 포함한 다. 인터프리터(50)는 셀렉터(42)가 선택한 데이터 메모리(49a 내지 49d) 중 하나에 저장된 소스 프로그램에 포함된 연산 코드를 하나씩 해석한다. FPGA 디바이스(7)는 도 5에 도시한 연산 시스템(101)의 것과 동일한 착상에 기초하여, 소스 프로그램(5-1 내지 5-n)에 따라 n개의 데이터 메모리를 포함할 수 있다.
이 출원은 2001년 12월 28일자로 제출된 일본 특허 출원 제2001-401462호(명세서, 청구 범위, 도면 및 요약서 포함)에 기초한다. 이 일본 특허 출원에 개시된 것은 그 전체가 본 명세서에 참조로서 통합된다.
본 발명은 범용 CPU를 이용하지 않고, 하드웨어에 의해 복수의 모듈을 포함하는 대규모 프로그램을 직접 실행하는 것에 관한 것이다.

Claims (20)

  1. 논리 연산 시스템에 있어서,
    각각의 룩업 테이블을 포함하는 복수의 구성 데이터 모듈을 저장하는 복수의 데이터 저장부(41a 내지 41d, 49a 내지 49d)와;
    복수의 프로그래밍 가능한 논리 회로(43a)를 포함하는 논리 연산부(43)
    를 포함하며,
    상기 논리 연산부는 상기 복수의 데이터 저장부(41a 내지 41d, 49a 내지 49d) 중 적어도 하나에 저장된 적어도 하나의 구성 데이터 모듈을 참조하여, 논리 출력 데이터로서 논리 입력 데이터의 논리 함수값을 제공하는 것인 논리 연산 시스템.
  2. 제1항에 있어서,
    상기 복수의 데이터 저장부(41a 내지 41d)는 시프트 레지스터(40)를 형성하고,
    상기 논리 연산부(43)는 상기 시프트 레지스터(40)에 포함된 상기 복수의 데이터 저장부(41a 내지 41d) 중 하나 이상에 저장된 구성 데이터 모듈을 참조하는 것인 논리 연산 시스템.
  3. 제2항에 있어서,
    상기 시프트 레지스터(40)는 상기 복수의 데이터 저장부(41a 내지 41d) 사이에서 구성 데이터 모듈을 순환 이동시키는 것인 논리 연산 시스템.
  4. 제1항에 있어서,
    상기 복수의 데이터 저장부(49a 내지 49d) 중 적어도 하나를 선택하는 셀렉터(42)를 더 포함하며,
    상기 논리 연산부(43)는 상기 셀렉터(42)가 선택한 상기 데이터 저장부에 저장된 구성 데이터 모듈을 참조하는 것인 논리 연산 시스템.
  5. 제4항에 있어서,
    상기 셀렉터는 상기 복수의 데이터 저장부 중에서 상기 복수의 데이터 저장부(49a 내지 49d) 중 하나를 순환 선택하는 것인 논리 연산 시스템.
  6. 제1항에 있어서,
    상기 논리 연산부(43)의 내부 파라미터의 전부 또는 일부를 저장하여 축적하는 파라미터 레지스터(45)와;
    상기 복수의 구성 데이터 모듈 중 하나에 의한 상기 복수의 구성 데이터 모듈 중 다른 하나의 호출 및 재호출을 검출하는 검출기(44)와;
    상기 논리 연산부에 의한 논리 연산을 제어하는 컨트롤러(47)를 더 포함하며,
    상기 컨트롤러(47)는,
    상기 검출기(44)가 상기 복수의 구성 데이터 모듈 중 하나에 의한 서브루틴으로서의 상기 복수의 구성 데이터 모듈 중 다른 하나의 호출을 검출하면, 상기 논리 연산부의 내부 파라미터를 상기 파라미터 레지스터(45)에 저장하고,
    상기 검출기(44)가 상기 복수의 구성 데이터 모듈 중 하나의 재호출을 검출하면, 상기 파라미터 레지스터(45)에 저장된 내부 파라미터를 상기 논리 연산부(43)에 재저장하는 것인 논리 연산 시스템.
  7. 제1항에 있어서,
    상기 복수의 구성 데이터 모듈을 상기 복수의 데이터 저장부(41a 내지 41d, 49a 내지 49d) 중 하나 이상으로 로딩하는 로더(3)를 더 포함하며,
    상기 복수의 데이터 저장부(41a 내지 41d, 49a 내지 49d)의 각각은 상기 복수의 구성 데이터 모듈을 재기록 가능하게 저장하는 것인 논리 연산 시스템.
  8. 제7항에 있어서,
    상기 복수의 구성 데이터 모듈 중 하나에 의한 상기 복수의 구성 데이터 모듈 중 다른 하나의 호출을 검출하는 검출기(44)와;
    상기 논리 연산부(43)에 의한 논리 연산을 제어하는 컨트롤러(47)를 더 포함하며,
    상기 컨트롤러(47)는,
    상기 검출기(44)가 상기 복수의 구성 데이터 모듈 중 하나에 의한 서브루틴으로서의 상기 복수의 구성 데이터 모듈 중 다른 하나의 호출을 검출하면, 상기 복수의 데이터 저장부(41a 내지 41d, 49a 내지 49d)에서 상기 서브루틴인 구성 데이터 모듈을 탐색하고,
    상기 서브루틴인 구성 데이터 모듈을 발견하지 못한 경우에는, 로딩 커맨드를 상기 로더(3)로 보내며,
    상기 로더(3)는 상기 로딩 커맨드가 나타내는 상기 서브루틴인 구성 데이터 모듈을 상기 복수의 데이터 저장부(41a 내지 41d, 49a 내지 49d) 중 하나로 로딩하는 것인 논리 연산 시스템.
  9. 제1항에 있어서,
    상기 논리 연산부(43)의 내부 파라미터의 전부 또는 일부를 저장하여 인도하는 파라미터 버퍼(46)와;
    상기 복수의 구성 데이터 모듈 중 하나에 의한 상기 복수의 구성 데이터 모듈 중 다른 하나의 호출 또는 재호출을 검출하는 검출기(44)와;
    상기 논리 연산부에 의한 논리 연산을 제어하는 컨트롤러(47)를 더 포함하며,
    상기 컨트롤러(47)는,
    상기 검출기(44)가 상기 복수의 구성 데이터 모듈 중 하나에 의한 상기 복수의 구성 데이터 모듈 중 다른 하나의 호출 또는 재호출을 검출하면, 상기 논리 연 산부(43)의 내부 파라미터를 상기 파라미터 버퍼(46)에 저장하고,
    호출 또는 재호출된 구성 데이터 모듈이 상기 논리 연산부(43)에 의해 참조될 수 있도록 배치되면, 상기 파라미터 버퍼(46)에 저장된 파라미터를 상기 논리 연산부(43)에 입력하는 것인 논리 연산 시스템.
  10. 제1항에 있어서,
    복수의 소스 프로그램 모듈의 각각에 기초하여 상기 복수의 구성 데이터 모듈의 각각을 생성하는 컴파일러(6)를 더 포함하는 논리 연산 시스템.
  11. 논리 연산 방법에 있어서,
    각각의 룩업 테이블을 포함하는 복수의 구성 데이터 모듈을 복수의 데이터 저장부(41a 내지 41d, 49a 내지 49d)에 저장하는 단계와;
    복수의 프로그래밍 가능한 논리 회로(43a)를 포함하는 논리 연산부(43)를 준비하는 단계와;
    상기 논리 연산부(43)가 상기 복수의 데이터 저장부(41a 내지 41d, 49a 내지 49d) 중 적어도 하나에 저장된 적어도 하나의 구성 데이터 모듈을 참조하는 단계와;
    상기 논리 연산부(43)가 참조하는 구성 데이터 모듈에 기초하여, 논리 출력 데이터로서 논리 입력 데이터의 논리 함수값을 제공하는 단계
    를 포함하는 논리 연산 방법.
  12. 제11항에 있어서,
    상기 복수의 데이터 저장부(41a 내지 41d)를 이용하여 시프트 레지스터(40)를 형성하는 단계와;
    상기 시프트 레지스터(40)에 포함된 상기 복수의 데이터 저장부(41a 내지 41d) 중 적어도 하나 이상에 저장된 구성 데이터 모듈을 참조하는 단계를 더 포함하는 논리 연산 방법.
  13. 제12항에 있어서,
    상기 시프트 레지스터(40)가 상기 복수의 데이터 저장부(41a 내지 41d) 사이에서 구성 데이터 모듈을 순환 이동시키는 단계를 더 포함하는 논리 연산 방법.
  14. 제11항에 있어서,
    셀렉터(42)가 상기 복수의 데이터 저장부(49a 내지 49d) 중 적어도 하나를 선택하는 단계와;
    상기 셀렉터(42)가 선택한 상기 데이터 저장부에 저장된 구성 데이터 모듈을 참조하는 단계를 더 포함하는 논리 연산 방법.
  15. 제14항에 있어서,
    상기 셀렉터에 의한 선택은 상기 복수의 데이터 저장부(49a 내지 49d) 중에 서 순환 변경되는 것인 논리 연산 방법.
  16. 제11항에 있어서,
    상기 복수의 구성 데이터 모듈 중 하나에 의한 서브루틴으로서의 상기 복수의 구성 데이터 모듈 중 다른 하나의 호출을 검출하는 단계와;
    상기 검출에 응답하여 상기 논리 연산부(43)의 내부 파라미터의 전부 또는 일부를 파라미터 레지스터(45)에 저장하는 단계와;
    상기 복수의 구성 데이터 모듈 중 하나가 재호출되면, 상기 파라미터 레지스터(45)에 저장된 내부 파라미터를 상기 논리 연산부(43)에 재저장하는 단계를 더 포함하는 논리 연산 방법.
  17. 제11항에 있어서,
    상기 복수의 데이터 저장부(41a 내지 41d, 49a 내지 49d)에 상기 복수의 구성 데이터 모듈을 재기록 가능하게 저장하는 단계와;
    로더(3)가 상기 복수의 데이터 저장부(41a 내지 41d, 49a 내지 49d)에 저장되는 상기 복수의 구성 데이터 모듈 중 적어도 하나를 로딩하는 단계를 더 포함하는 논리 연산 방법.
  18. 제17항에 있어서,
    상기 복수의 구성 데이터 모듈 중 하나에 의한 서브루틴으로서의 상기 복수 의 구성 데이터 모듈 중 다른 하나의 호출을 검출하면, 상기 복수의 데이터 저장부(41a 내지 41d, 49a 내지 49d)에서 상기 서브루틴인 구성 데이터 모듈을 탐색하는 단계와;
    상기 서브루틴인 구성 데이터 모듈을 발견하지 못한 경우에는, 로딩 커맨드를 상기 로더(3)로 보내는 단계와;
    상기 로더(3)가 상기 로딩 커맨드가 나타내는 상기 서브루틴인 구성 데이터 모듈을 상기 복수의 데이터 저장부(41a 내지 41d, 49a 내지 49d) 중 하나로 로딩하는 단계를 더 포함하는 논리 연산 방법.
  19. 제11항에 있어서,
    상기 복수의 구성 데이터 모듈 중 하나에 의한 상기 복수의 구성 데이터 모듈 중 다른 하나의 호출 또는 재호출을 검출하는 단계와;
    상기 검출에 응답하여 상기 논리 연산부(43)의 내부 파라미터의 전부 또는 일부를 파라미터 버퍼(46)에 저장하는 단계와;
    호출 또는 재호출된 구성 데이터 모듈이 상기 논리 연산부(43)에 의해 참조될 수 있도록 배치되면, 상기 파라미터 버퍼(46)에 저장된 파라미터를 상기 논리 연산부(43)에 입력하는 단계를 더 포함하는 논리 연산 방법.
  20. 제11항에 있어서,
    컴파일러(6)가 복수의 소스 프로그램 모듈의 각각에 기초하여 상기 복수의 구성 데이터 모듈의 각각을 생성하는 단계를 더 포함하는 논리 연산 방법.
KR1020047010229A 2001-12-28 2002-12-24 논리 연산 시스템 및 방법 KR100612717B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2001401462A JP3540796B2 (ja) 2001-12-28 2001-12-28 演算システム
JPJP-P-2001-00401462 2001-12-28
PCT/JP2002/013442 WO2003058429A2 (en) 2001-12-28 2002-12-24 Logic computing system and method

Publications (2)

Publication Number Publication Date
KR20040072684A KR20040072684A (ko) 2004-08-18
KR100612717B1 true KR100612717B1 (ko) 2006-08-17

Family

ID=19189780

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047010229A KR100612717B1 (ko) 2001-12-28 2002-12-24 논리 연산 시스템 및 방법

Country Status (5)

Country Link
US (1) US20050108290A1 (ko)
JP (1) JP3540796B2 (ko)
KR (1) KR100612717B1 (ko)
CN (1) CN1636185A (ko)
WO (1) WO2003058429A2 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3836109B2 (ja) * 2004-02-19 2006-10-18 東京エレクトロン株式会社 プログラマブル論理回路制御装置、プログラマブル論理回路制御方法及びプログラム
US7471116B2 (en) * 2005-12-08 2008-12-30 Alcatel-Lucent Usa Inc. Dynamic constant folding of a circuit
WO2007114059A1 (ja) * 2006-04-05 2007-10-11 Nec Corporation データ処理装置
WO2009096247A1 (ja) * 2008-02-01 2009-08-06 Nec Corporation 多分岐予測方法及び装置
JP5589479B2 (ja) 2010-03-25 2014-09-17 富士ゼロックス株式会社 データ処理装置
CN106527335B (zh) * 2016-12-08 2019-03-19 湖南戈人自动化科技有限公司 一种支持协程功能的plc控制器
KR102559581B1 (ko) 2018-05-23 2023-07-25 삼성전자주식회사 재구성 가능 로직을 포함하는 스토리지 장치 및 상기 스토리지 장치의 동작 방법
WO2021171300A1 (en) 2020-02-24 2021-09-02 Selec Controls Private Limited A modular and configurable electrical device group

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE68929518T2 (de) * 1988-10-05 2005-06-09 Quickturn Design Systems, Inc., Mountain View Verfahren zur Verwendung einer elektronisch wiederkonfigurierbaren Gatterfeld-Logik und dadurch hergestelltes Gerät
US4942319A (en) * 1989-01-19 1990-07-17 National Semiconductor Corp. Multiple page programmable logic architecture
US5646545A (en) * 1995-08-18 1997-07-08 Xilinx, Inc. Time multiplexed programmable logic device
US5778439A (en) * 1995-08-18 1998-07-07 Xilinx, Inc. Programmable logic device with hierarchical confiquration and state storage
US5760602A (en) * 1996-01-17 1998-06-02 Hewlett-Packard Company Time multiplexing a plurality of configuration settings of a programmable switch element in a FPGA
US6046603A (en) * 1997-12-12 2000-04-04 Xilinx, Inc. Method and apparatus for controlling the partial reconfiguration of a field programmable gate array

Also Published As

Publication number Publication date
CN1636185A (zh) 2005-07-06
WO2003058429A3 (en) 2008-02-21
US20050108290A1 (en) 2005-05-19
WO2003058429A2 (en) 2003-07-17
JP3540796B2 (ja) 2004-07-07
KR20040072684A (ko) 2004-08-18
JP2003198362A (ja) 2003-07-11

Similar Documents

Publication Publication Date Title
US7610475B2 (en) Programmable logic configuration for instruction extensions
EP0081357B1 (en) Branch predicting computer
CA2415281C (en) Architecture and method for partially reconfiguring an fpga
EP0450658B1 (en) Parallel pipelined instruction processing system for very long instruction word
US5652875A (en) Implementation of a selected instruction set CPU in programmable hardware
KR101636377B1 (ko) 재구성 프로세서, 재구성 제어 장치 및 방법, 그리고, 스레드 모델링 방법
US7840842B2 (en) Method for debugging reconfigurable architectures
JP3392067B2 (ja) ハードウェアのセットを再構成する方法および再構成可能ハードウェア装置
US7617383B2 (en) Circular register arrays of a computer
KR20100115578A (ko) 재구성 가능한 프로세서 및 그 재구성 방법
KR100612717B1 (ko) 논리 연산 시스템 및 방법
US20040088705A1 (en) System and method for executing hybridized code on a dynamically configurable hardware environment
JP3990332B2 (ja) データ処理システム
KR100776608B1 (ko) 컴퓨팅 시스템
US20050138613A1 (en) Method and system for code modification based on cache structure
US8464040B2 (en) Systems and methods to control multiple peripherals with a single-peripheral application code
KR19990071604A (ko) 램구성내의정보를판독하고복원하기위한처리시스템및방법
JPH02162422A (ja) 優先ブランチ機構を備えたデータ処理システム
JP3571656B2 (ja) ポインタレジスタ装置およびポインタ値の更新方法
JP6553694B2 (ja) プロセッサエレメント、プログラマブルデバイス及びプロセッサエレメントの制御方法
RU2818498C1 (ru) Способ распределения данных по многофункциональным блокам процессора со сверхдлинной командной строкой
US12008371B2 (en) Method and apparatus for efficient programmable instructions in computer systems
US20230131430A1 (en) Compiler device, instruction generation method, program, compiling method, and compiler program
JP4562679B2 (ja) データフローグラフ生成装置
KR20240046576A (ko) 가변 스트라이드 패턴을 이용한 처리 디바이스

Legal Events

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

Payment date: 20090724

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee