KR20060135600A - 데이터 처리 장치 - Google Patents

데이터 처리 장치 Download PDF

Info

Publication number
KR20060135600A
KR20060135600A KR1020067003985A KR20067003985A KR20060135600A KR 20060135600 A KR20060135600 A KR 20060135600A KR 1020067003985 A KR1020067003985 A KR 1020067003985A KR 20067003985 A KR20067003985 A KR 20067003985A KR 20060135600 A KR20060135600 A KR 20060135600A
Authority
KR
South Korea
Prior art keywords
circuit
interface
information
data processing
hardware
Prior art date
Application number
KR1020067003985A
Other languages
English (en)
Other versions
KR101080465B1 (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 KR20060135600A publication Critical patent/KR20060135600A/ko
Application granted granted Critical
Publication of KR101080465B1 publication Critical patent/KR101080465B1/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
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Logic Circuits (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

본 발명에서는, 어플리케이션을 실행하기 위한 회로의 적어도 일부인 오브젝트회로를 동적으로 재구성 가능한 논리회로의 일부에 매핑하기 위한 오브젝트회로 정보(23)와, 오브젝트회로에 접하는 인터페이스회로를 논리회로에 매핑하기 위한 인터페이스회로 정보(24)와, 인터페이스회로에서 실현할 경계조건(26)을 포함한 아키텍처 코드(20)를 제공한다.
본 발명의 데이터 처리 장치는, 아키텍처 코드(20)를 취득하는 로드 유닛과, 아키텍처 코드의 오브젝트회로 정보(23) 및 인터페이스회로 정보(24)에 의해, 논리회로 영역에 오브젝트회로와 인터페이스회로를 매핑하는 매핑 유닛과, 아키텍처 코드의 경계조건(26)에 따라 인터페이스회로를 제어하는 동작 제어 유닛을 가진다.

Description

데이터 처리 장치{DATA PROCESSING DEVICE}
본 발명은 재구성 가능한 논리회로 영역을 가지는 데이터 처리 장치에 관한 것이다.
회로의 재구성이 가능한 프로그래머블 디바이스로서, FPGA(Field Programmable Gate Array), PLD(Programmable Logic Device), PLA(Programmable Logic Array)라 불리우는 디바이스가 알려져 있다. 이러한 프로그래머블 디바이스의 기본적인 구성은, 논리 셀 혹은 논리 유닛이라 불리우는 유닛이 격자형상으로 배치되고, 이를 둘러싸도록 배선군(群)이 배치된 것이며, 컨텍스트 정보(context information) 혹은 컨피그레이션 정보(configuration information)라 불리우는 정보에 의해, 논리 셀의 기능이나 배선의 접속을 변경할 수 있게 되어 있다.
일본 특허공개공보 제2000-40745호에는, FPGA에 논리회로의 다른 부분을 실장하는 기술의 하나로서, 논리회로를 특징짓는 초기 넷리스트(netlist)를 많은 페이지로 구분하고, FPGA에 이들 페이지의 하나의 회로를 설치하는 내용이 기재되어 있다. 이로써, FPGA의 물리적 용량보다 훨씬 커다란 회로의 실장을 가능하게 하고 있다.
그러나, 현재, 멀티미디어 디바이스, 모바일 디바이스, 디지털 디바이스 등 에 탑재되어, 이들 디바이스의 데이터 처리의 대부분을 수행하고 있는 시스템 LSI는, 1개의 칩 상에, 특정한 기능을 실현하기 위한 회로 단위 (대부분의 경우에는, 하드웨어 모듈 혹은 IP(Intellectual Property), 라이브러리라고 불리운다)가 복수 탑재되고, 이들 하드웨어 모듈이 병렬로 처리를 수행하고 있다. 따라서, FPGA에, 단지 하나의 회로를 분해하여 실장하였다 하여도, 회로를 재구성할 수 있는 디바이스의 유효성이 크게 넓어지지는 않는다.
이에 대해, 본 발명에서는, 어플리케이션을 실행하기 위해, 또는, 어플리케이션을 실행할 때, 하드웨어 공간을 동적으로 최적화하는 기술을 제공한다. 그리고, 본 발명에서는, 컴파일러 번역에 의한 명령세트의 집합인 프로그램과 같은, 종래의 소프트웨어 정보뿐만 아니라, 하드웨어 정보인 어플리케이션을 실행하는 회로 자체의 정보를 얻고, 그것을 직접 실행가능하게 하는 아키텍처(architecture)를 구비한 데이터 처리 장치, 예를 들면 LSI를 제공한다.
종래의 시스템 LSI로 대표되는 회로 디바이스 기술에서는, 하드웨어로 실현하는 회로는, 특정한 하드웨어 모듈, IP, 라이브러리라고 불리우는 단위로, 고정된 하드웨어로서 탑재되며, 이들 회로에 의해 전용화된 LSI에 의해 데이터가 처리된다. 이에 반해, 범용적인 회로 혹은 아키텍처로 하드웨어의 회로를 실행하는 기술이 있다. 예를 들면, 시뮬레이터이며, 프로그램의 명령을 하나씩 실행하여, 그 회로 자체를 실행하고 있는 것과 같이, 범용적인 장치인 CPU에 역할을 분담시키는 방법이다. 이것은, 본래, 하드웨어로 실현하는 회로가 갖는 병렬성을 명령단위의 실행으로 바꾸어 CPU에서 처리하기 위해, 복수의 CPU를 사용하였다 하더라도, 실제 하드웨어의 회로와 비교할 때, 실행하는 회로 규모에 따라서도 달라지지만, 보통 3∼5자리 이상의 실행시간이 필요하다. 또한, 실시간성이 결정적으로 결여되어 있으므로, 실제로 복잡한 회로를 시뮬레이션하고자 하면 방대한 검증시간을 필요로 한다. 이 때문에, 방대한 게이트 수를 가지는 최근의 전용 LSI를 대신하여 처리를 실행하는 것이 불가능할 뿐만아니라, 복잡한 전용 LSI의 기능을 검증 하는 데에도 적합하지 않은 상황으로 되어가고 있다.
실시간성의 문제에 대해, 하드웨어 액셀러레이션(hardware acceleration)이라 불리우는 방법이 있다. 이것은, 최초의 단계에서는, CPU나 DSP를 복수 개 배열하여 병렬실행시키고, 그 하나하나에 소규모 회로를 할당하여, 전체적으로 시뮬레이션 시간을 단시간에 수행한다는 아이디어이다. FPGA나 PLD가 실용화됨으로써, 시뮬레이션 대상인 회로를 직접 이것에 할당하는 방식이 주류를 이루고 있으며, 대규모 집적 회로나 하드웨어의 에뮬레이션(emulation)이, 실시간에 매우 가까운 시간으로 실행할 수 있게 되어 가고 있다.
그러나, FPGA의 내부 셀 구조는, 하드웨어 회로의 실현을 어떤 일정시간을 들여 변경하는 아키텍처 구조로 되어 있어, CPU나 DSP 등의 데이터 패스 시스템을 갖는 하드웨어의 실장에는 그다지 적합하지 않다. 실제로, 실장하고자 하면, 처리성능(동작주파수)·게이트 효율·소비 전력 중 어느 것도, 전용으로 설계된 LSI와 경쟁할 수 없다. 더욱이, 어플리케이션을 실행하기 위한 회로에 따라서도 좌우되지만, FPGA 또는 PLD의 경우, 설치대상이 되는 회로의 규모가 FPGA 혹은 PLD의 집적도보다 크면, 원칙적으로 실장은 불가능하다. 어플리케이션을 실행하기 위한 회로를 분할하여 실장하는 것도 고려할 수 있으나, 이렇게 할 경우, 칩이 복수가 되므로 핀 수의 제한을 고려할 때, 성능·비용·소비전력의 모든 면에서 더욱 불리해진다.
또한, 1개의 FPGA에 분할된 회로를 실장할 경우, 핀 수의 제한이나, 분할된 회로간의 경계정보의 전파 등, 회로를 분할할 때 발생하는 여러 가지의 문제가 있다. 이러한 문제들을, FPGA를 이용한 하드웨어의 설계단계에서 모두 해결하고자 하면, 전용 LSI를 설계 및 개발하는 종래의 기술에 대하여, FPGA를 이용한 이점은 상실되어 버린다. 또한, 일반적으로, FPGA나 PLD는, 목표한 하드웨어 회로의 몇 배∼몇 십배의 하드웨어가 필요하고, 칩비용, 목표성능, 및 소비 전력의 세 가지 점에서도, 전용 LSI에는 미치지 못한다.
한편, 전용 LSI에도 많은 문제가 있다. 종래의 전용 LSI의 경우, LSI의 설계단계에서 정확한 성능목표나 기능사양이 없으면 설계가 완성되지 않는다. 예를 들어, 어플리케이션의 실행상황에 따라서는, 기능과 성능의 동적 트레이드오프(trade-off)가 가능한 것이 많은데, 설계단계에서 필요한 성능을 실현할 수 있을 만큼의 하드웨어 영역이나 성능을 보증할 수 있는 동작주파수를 확정시킬 필요가 있다. 즉, 기능이나 성능의 동적 트레이드오프가 어플리케이션상 가능한 경우라도, 피크 성능 요구나 단일체 레벨의 기능 마다의 성능보증을 한 이후에, LSI를 설계할 필요가 있다. 따라서, 기능과 성능에 대한 요구가 결정적이며, 고성능 및 다기능을 목적으로 하는 시스템 LSI는, 비용적으로는 최악의 경우가 되고, 제조 비용, 칩 면적, 소비전력 등이 악화될 뿐이다.
더욱 구체적으로는, 자동제어장치, 예컨대 로봇과 같은 어플리케이션의 경우, 시각정보나 청각정보를 처리하고 있을 때는, 다른 기능(보행기능·언어처리·후각처리 등)을 대폭 약화시켜야 좋을 경우가 많다. 그러나, 종래의 시스템 LSI에서는, 모든 기능을 실현하는 모든 회로를 동일하게 시스템 LSI에 실장하고 있어, 단지 그 처리결과를 사용하지 않거나, 혹은 스탠바이 상태에서 처리능력을 저하시키고 있는데 지나지 않는다.
이에 반하여, 회로 구성을 동적으로 재구성할 수 있다면, 그 재구성 가능한 논리회로에 의해 구성되는 하드웨어 공간을 동적으로 최적화함으로써, 사용하지 않거나 혹은 스탠바이 상태가 되는 기능에 대한 하드웨어 자원의 할당을 대폭 낮추어, 원래 집중해야 할 시각정보처리나 청각정보처리에 하드웨어 자원을 집중적으로 할당할 수 있다. 즉, 본 발명에 따르면, 종래의 전용 LSI와 같이, 하드웨어 회로(타겟 회로)를 모두 실장할 필요가 없으므로, 적은 하드웨어 자원으로 최대의 실행 효율을 얻을 수 있다.
본 발명에서의 동적 최적화 기술은, 논리회로에 의해 구성되는 실제 하드웨어 공간의 배치를 동적으로 최적화하는 것을 말하며, 실제 하드웨어 공간을 그 때마다 쇄신(刷新)할 뿐만아니라, 실제 하드웨어 공간의 부분적인 배치를 동적으로 최적화하는 것도 포함하는 개념이다. 따라서, 현재 사용하고 있지 않은 기능에 대한 하드웨어 자원의 할당을 없앨 뿐만아니라, 하드웨어 자원의 할당을 낮추어, 스탠바이중인 기능의 실시간 응답성을 희생하는 일 없이, 사용중인 기능에 대한 하드웨어 자원의 할당을 증가시킬 수 있는 것이다.
또한, 본 발명에서의 동적 최적화 기술은, 사용중이라 하더라도 긴급성을 요하는 기능에 대해서는 하드웨어 자원의 할당을 증가시키고, 긴급성을 요하지 않는 기능에 대해서는 하드웨어 자원의 할당을 감소시키거나, 하드웨어 자원의 할당을 일시적으로 없앨 수 있는 것이다. 긴급성이란, 처리속도, 우선순위 등을 포함하는 개념이며, 데이터 처리 장치에 대한 요구의 중요한 한 가지이다. 하드웨어 자원의 할당을 좌우하는, 데이터 처리 장치에 대한 그 밖의 요구로는, 병렬처리하는 잡(job)의 증감, 인터럽트의 유무 등 여러가지가 고려된다.
본 발명에서의 동적 최적화 기술은, 이들 데이터 처리 장치에 대한 요구에 따라 하드웨어 자원의 할당, 즉, 실제 하드웨어 공간의 구성을 동적으로 최적화한다.
실제 하드웨어 공간을 동적으로 최적화하는 한가지의 방법은, 데이터 처리 장치가 직면하게 될 모든 상황을 가정하고, 그에 대해 최적인 실제 하드웨어 공간의 배치를 미리 결정하여, 컨텍스트 정보(혹은, 컨피그레이션 정보)로서 준비하고, 그 때마다 로딩하는 방법이다. 이 방법은, 실제 하드웨어 공간에서 발생하는 타이밍 종료 등의 문제를 미리 해결할 수 있으므로, 데이터 처리 장치의 성능을 확보하는 점에서는 바람직할 것이다. 그러나, 모든 시나리오에서 직면하게 될 상황을 가정하는 것은 불가능하므로, 한정된 상황을 대상으로 하여 어느 정도 최적화하고, 기타의 상황에서는 중간의 성능이 얻어지도록 범용적인 해(解)를 얻고자 하면, 실제 하드웨어 공간을 동적으로 최적화하는 효과는 감소되어 버린다.
다른 방법의 하나는, 어떠한 기능을 실장하기 위한 단위로서 설계되는 하드웨어 모듈(IP 또는 라이브러리)을, 논리 게이트와 이들의 접속상태만을 나타낸 넷리스트의 상태로 준비하고, 그 기능이 필요해졌을 때, 그 넷리스트의 일부 혹은 전체를 실제 하드웨어 공간의 빈 공간에 맞추어 동적으로 배치 및 배선하여 매핑하는 방법이다. 이 방법은, 실제 하드웨어 공간의 순간적인 상황에 맞추어 회로를 플렉시블하게, 동적으로 배치할 수 있으므로, 하드웨어 공간을 가장 동적으로 최적화할 수 있는 방법이라 생각된다. 그러나, 넷리스트에 근거한 배치 및 배선 처리는, 정적인 LSI의 설계 및 개발단계에서도 방대한 시간을 필요로 하는 처리이며, 그 처리를 매핑하는 순간마다 되풀이할 필요가 있다. 순간적인 실제 하드웨어 공간의 실정과 기타의 요소를 가미하여, 순간적으로 필요한 회로의 넷리스트에 근거하여 배치·배선의 여러 문제를 해결하여 매핑하는 것은 실제로는 불가능하다. 대부분 클록단위 혹은 사이클단위로 고속으로 타이밍 종료을 포함한 문제를 해결할 수 있는 하드웨어의 제공이 가능하다 하더라도, 그러한 하드웨어 자원을 별도로 준비하는 것은 경제적이지 않으며, 그러한 하드웨어의 등장을 기다리는 것은, 하드웨어 공간의 동적 최적화의 실현을 어렵게 만들 뿐이다.
넷리스트의 상태에서, 그 넷리스트로 실장하고자 하는 회로의 일부의 적당한 범위를 단위로 하여, 각각의 회로단위내의 배치·배선을 해결하고, 이들 회로단위를 실제 하드웨어 공간의 빈 공간에 배치하고, 이들 회로단위를 접속하는 배치·배선 문제로 축소시킴으로써, 매핑하는 순간마다의 배치·배선 문제의 해결시간을 단축시킬 가능성이 있다. 그러나, 배치·배선시의 실제 하드웨어 공간 상황은 시시각각 변동한다. 따라서, 상황에 따라서 항상 매순간 배치·배선 문제를 동적으로 해결하는 것은 용이하지 않을 것이며, 가능하다 하더라도 하드웨어 자원과 전력을 그 때문에 항상 소비해버리는 것에는 변함이 없으므로, 높은 성능과 기능을 가지면서 칩비용과 소비전력이 낮은 데이터 처리 장치를 제공한다는 과제를 해결할 수는 없다.
따라서, 본 발명에서는, 어플리케이션을 실행하기 위한 회로의 적어도 일부인 오브젝트회로를 논리회로 영역의 일부에 매핑하기 위한 오브젝트회로 정보와, 오브젝트회로에 접하는 인터페이스회로를 논리회로 영역에 매핑하기 위한 인터페이스회로 정보와, 인터페이스회로에서 실현하는 경계조건을 구비한 아키텍처 코드를 제공한다. 오브젝트회로의 가장 적당한 예는, 어플리케이션을 실행하기 위한 어떤 기능을 실장하기 위한 단위로서 설계되는 하드웨어 모듈을 복수로 분할한 분할회로이다. 하드웨어 모듈을 실장하기 위해 필요한 하드웨어 자원이 적은 경우에는, 분할하지 않고 오브젝트회로화하고, 이에 대응하는 인터페이스회로 정보를 생성하여 논리회로 영역에 실장하는 것도 가능하다.
회로를 동적으로 재구성 가능한 논리회로 영역을 가지는 데이터 처리 장치에 있어서의, 본 발명의 제어방법은, 아키텍처 코드를 취득하는 공정과, 아키텍처 코드의 오브젝트회로 정보 및 인터페이스회로 정보에 의해, 논리회로 영역에 오브젝트회로와, 그 오브젝트회로에 접하는 인터페이스회로를 매핑하는 공정과, 아키텍처 코드의 경계조건에 기초하여 인터페이스회로를 제어하는 동작공정을 가진다.
또한, 본 발명의 데이터 처리 장치는, 회로를 동적으로 재구성 가능한 논리회로 영역과, 아키텍처 코드를 취득하는 로드 유닛과, 아키텍처 코드의 오브젝트회로 정보 및 인터페이스회로 정보에 의해, 논리회로 영역에 오브젝트회로와, 그 오브젝트회로에 접하는 인터페이스회로를 매핑하는 매핑 유닛과, 아키텍처 코드의 경계조건에 따라 인터페이스회로를 제어하는 동작 제어 유닛을 가진다. 로드 유닛은, 아키텍처 코드를 페치(fetch)할 경우는 페치 유닛이며, 컴퓨터 등을 이용한 통신 네트워크나 메모리로부터 다운로드할 경우는 다운로드 유닛이 된다. 로드한 회로 정보에 의해 하드웨어를 재구성하는 매핑을 포함하여 로딩이라 불리우는 경우도 있지만, 본 명세서에서는, 아키텍처 코드를 취득할 때까지를 로딩단계라 부르기로 한다. 로드 유닛에 있어서 코드를 취득하는 프로세스에는, 페치, 다운로드, 겟(get), 리드(read) 등 여러가지 명령을 할당할 수 있으며, 커뮤니케이션 시스템에 의해 아키텍처 코드를 로딩하는 것도 가능하다.
이들 로드 유닛, 매핑 유닛 및 동작 제어 유닛도, 하드웨어 모듈의 하나로서 생각할 수 있으며, 분할하여 오브젝트회로화함으로써, 논리회로 영역에 분할회로로서 실장하는 것이 가능하다. 따라서, 어플리케이션의 실행 상황에 따라, 로드 유닛, 매핑 유닛 및 동작 제어 유닛의 기능의 일부를 실현하면 되는 조건에서는, 이들 기능에 할애되는 하드웨어 자원을 해방하고, 다른 하드웨어 모듈의 실현을 위해 하드웨어 자원을 할당하여 병렬처리 능력을 향상시키거나, 처리속도를 개선할 수 있다.
본 발명에서는, 하드웨어 모듈을 포함하는 어플리케이션을 실행하기 위한 회로의 오리지널 넷리스트로부터, 어떤 적당한 범위를 분할하고, 분할된 유닛내에서 배치·배선 문제가 해결되어, 논리회로 영역의 일부에 매핑가능한 오브젝트회로 정보를 생성한다. 그런 다음, 오브젝트회로 정보에 의해 구성되는 오브젝트회로의, 오리지널 넷리스트상의 경계를 형성하는 정보로부터 인터페이스회로 정보를 생성한다. 또한, 오리지널 넷리스트를 오브젝트회로의 집합으로 변환하고, 이들 오브젝트회로 간의 배치·배선 문제를 해결하여, 인터페이스회로에서의 경계조건을 생성한다. 따라서, 오브젝트회로 간의 배치·배선 문제는, 인터페이스회로에서의 경계조건으로서, 아키텍처 코드의 생성단계에서 해결된다.
이 때문에, 실제 하드웨어 공간인, 회로를 동적으로 재구성 가능한 논리회로 영역의 빈 공간에, 오브젝트회로를 배치할 때에는, 로드 유닛에 의해 적절한 아키텍처 코드를 취득하여 매핑 유닛에 의해 오브젝트회로를 매핑함과 동시에, 그 주위에 인터페이스회로를 매핑하고, 실행 제어 유닛에 의해 인터페이스회로를 경계조건에 기초하여 제어함으로써 실제 하드웨어 공간에 오브젝트회로를 동적으로 배치하여 오브젝트회로를 실행할 수 있다. 따라서, 실제 하드웨어 공간의 순간적인 상태에 따라, 원하는 혹은 적절한 오브젝트회로와 인터페이스회로를 논리회로 영역에 배치하기만 하면, 오브젝트회로를 실행할 수 있다. 그리고, 매 순간마다 오브젝트회로 간의 배치 및 배선 문제를 해결해야만 하는 문제의 발생을 미연에 방지할 수 있다.
본 발명에서는, 실제 하드웨어 공간인 재구성 가능한 논리회로 영역에 매핑된 1개 또는 복수의 오브젝트회로는, 그 상태로 실행된다. 오브젝트회로의 경계는 인터페이스회로를 통해, 가상적으로는, 그 오브젝트회로가 속하는 하드웨어 모듈을 구성하는 다수의 오브젝트회로에 접속되어 있다. 이 때문에, 오브젝트회로의 경계는 다수의 오브젝트회로가 접속된 가상 하드웨어 공간의 상태로 제어된다. 따라서, 매핑시에는, 오브젝트회로와 인터페이스회로를, 실제 하드웨어 공간인 논리회로 영역의 이용가능한 어느 영역에라도 매핑할 수 있다.
또한, 이웃하는 오브젝트회로와의 경계에서의 인터페이스회로 정보 및 경계조건이 일치하거나, 또는 대응하고 있는 경우에는, 매핑하고자 하는 오브젝트회로와 이웃하는 오브젝트회로가 가상 하드웨어 공간에서 인접하고 있는 오브젝트회로임을 의미한다. 이 때문에, 인터페이스회로를 거치지 않고 이웃하는 오브젝트회로끼리 바로 접속되도록 오브젝트회로를 매핑할 수 있다. 즉, 실제 하드웨어 공간에 매핑하는 실제 오브젝트회로의 집합의 크기를, 실제 하드웨어 공간 상태에 맞추어 자유로이 변화시킬 수 있다. 복수의 오브젝트회로를 실제 하드웨어 공간에 분산하여 매핑하는 것도 가능하고, 집중시켜 매핑하는 것도 가능하여, 실제 하드웨어 공간을 매우 플렉시블하게 사용할 수 있다.
논리회로 영역에 현재 및/또는 과거에, 시간적 및/또는 공간적으로 분산배치된 오브젝트회로 간의 접속도 용이하다. 시간적 및/또는 공간적으로 나누어져 매핑된 다른 쪽 오브젝트회로의 인터페이스회로의 상태를, 동작 제어 유닛에 의해, 경계조건에 기초하여, 실행할 한쪽 오브젝트회로의 인터페이스회로의 제어에 반영함으로써, 실제 하드웨어 공간에서는 시간적 혹은 공간적으로 나누어진 오브젝트회로 간을, 가상 하드웨어 공간에서는 무리없이 접속할 수 있다. 이 때문에, 논리회로 영역에 현재 및/또는 과거에 매핑된 오브젝트회로의 인터페이스회로의 상태를 기억하는 경계정보 메모리를 마련해 두는 것이 바람직하다. 다른 쪽 오브젝트회로에는, 시간적 및/또는 공간적으로 접속되지 않고 매핑된 자신의 오브젝트회로도 포함된다. 이에 따라, 어떤 오브젝트회로를 조건에 따라 실제 하드웨어 공간에서는 소멸·재생하더라도, 가상 하드웨어 공간에서 연속적인 처리가 가능하다. 또한, 동일한 오브젝트회로 정보에 의한 회로 인스턴스(instance)를 복수 구성하여 병렬도를 높이거나, 신뢰도를 높이는 것도 가능하다. 그러한 제어는 아키텍처 코드에 의해서도 가능하며, 매핑 유닛과 동작 제어 유닛의 조합에 의해서도 가능하다.
본 발명의 아키텍처 코드는 여러가지 이용방법이 있다. 실제 하드웨어 공간에 매핑할 아키텍처 코드를 프로그램의 명령세트와 같이 순차적으로 추적할 수 있는 상태로 제공함으로써, 아키텍처 코드에 의해 데이터 처리 장치를 제어할 수 있다. 아키텍처 코드는, 기록매체에 기록하여 제공하는 것도 가능하고, 네트워크 등의 통신수단을 통해 제공하는 것도 가능하며, 하드웨어의 구성을 원격조작에 의해 바꾸는 것도 가능하다.
또한, 종래의 시스템 LSI를 대신하는 사용방법으로는, 로드 유닛에 의해, 데이터 처리 장치에 대한 요구(긴급성이나, 새로운 잡(job)의 개시 혹은 병렬 처리 상태의 변화, 인터럽트의 유무 등), 매핑된 오브젝트회로의 실행 상황, 논리회로 영역의 이용 가능 상황을 포함한 동작 환경 정보에 근거해서, 복수의 아키텍처 코드를 구비한 아키텍처 라이브러리로부터 원하는 아키텍처 코드를 취득하여, 어플리케이션의 실행 상황에 의해 데이터 처리 장치의 하드웨어를 동적으로 최적인 구성으로 할 수 있다. 최적화의 지침은, 동작 환경 정보에 근거하여 결정할 수 있고, 그것에는 로드 유닛, 매핑 유닛, 실행 제어 유닛 중 하나 또는 복수가 기여한다. 실제 하드웨어 공간 중 빈 공간에 새로운 오브젝트회로를 매핑하거나, 사용이 끝난 오브젝트회로를 소거하거나, 긴급성을 가지는 하드웨어 모듈을 우선적으로 매핑하기 위해, 다른 하드웨어 모듈의 분할회로를 일시적으로 퇴피(退避)시키거나, 다른 하드웨어 모듈에 할당된 하드웨어 자원의 비율을 일시적으로 축소시키는 등, 실제 하드웨어 공간의 이용방법에는 제한이 없다.
또한, 하드웨어 회로를 아키텍처 코드화함으로써, 데이터 처리 장치의 이용 가치는 비약적으로 증대된다. 장치가 한정되게 이용될 경우, 아키텍처 라이브러리를 데이터 처리 장치에 실장할 수 있다. 예를 들면, 상기 데이터 처리 장치와, 데이터 처리 장치에 실장될 적어도 하나의 하드웨어 모듈이, 각각의 제어 또는 데이터 처리에 이용될 복수의 자동제어기구를 가지며, 논리회로 영역에, 복수의 하드웨어 모듈의 분할회로가 각각 동적으로 매핑되는 자동제어장치를 제공할 수 있다. 로봇의 시각정보나 청각정보를 처리하고 있을 때는, 이들의 제어에 필요한 하드웨어 모듈의 분할회로에 하드웨어 리소스가 주로 할당되고, 보행기능 등 다른 자동제어기구의 제어에 필요한 하드웨어 모듈의 분할회로는 실제 하드웨어 공간으로부터 제거되도록 하는 제어가 가능해진다.
한편, 네트워크 등의 데이터 처리 장치의 외측에 대한 통신을 통해 아키텍처 코드를 취득하는 것도 가능하며, 오브젝트회로를 매핑할 수 있을 정도의 하드웨어 공간이 있다면, 방대한 하드웨어 자산을 자유롭게 이용할 수 있다. 예를 들면 인터넷상에 존재하는 다양한 하드웨어 자산을 로컬 휴대단말의 LSI에 매핑하여 이용하는 것이 가능해진다. 로봇과 같이, 여러 가지 기구를 구비한 장치로 조합시킴으로써, 작은 리소스로 다양한 작업을 수행할 수 있다. 또한, 아키텍처 코드는 항상 업데이트되므로, 항상 업데이트된 제어회로하에서 다양한 작업을 수행하도록 할 수 있다.
또한, 본 발명의 데이터 처리 장치와, 안테나, 커넥터 등 외계와의 통신을 위해 회로로는 실현이 불가능한 통신에 필요한 기구와, 디스플레이, 마이크 등 입출력에 특화된 기구를 구비한 단말에 의해, 여러 가지의 통신을 수행하는 기능으로부터, 통신이외의 기능, 예컨대, 신체 상태를 모니터하는 기능 등의, 여러가지 서비스를 제공할 수 있다. 그리고, 각각의 서비스를 수행하는 회로 구성은, 항상 업데이트된 최신의 것을 사용할 수 있다.
오브젝트회로의 사이즈는 플랙시블하여, 매핑 대상의 논리회로 영역에 인터페이스회로도 포함하여 매핑할 수 있는 사이즈보다도 작으면 된다. 오브젝트회로의 사이즈는 작은 쪽이 실제 하드웨어 공간의 최적화 효율은 높다. 그러나, 하나의 하드웨어 모듈에 대한 준비되는 아키텍처 코드의 양이 많아진다. 매핑시에는, 본 발명에 있어서는, 하드웨어 공간만 있으면 복수의 오브젝트회로를 하나로 통합하여 매핑하는 것이 가능하다. 따라서, 오브젝트회로의 사이즈에 의해 매핑을 반복하는 수가 방대해지며, 그 결과, 처리 시간이 증대하는 등의 염려는 적다. 재구성 가능한 아키텍처 중, 특정한 개수의 재구성 가능한 회로에 의해 구성되는 회로 블록을 복수 구비하고 있는 아키텍처에 대해서는, 아키텍처 코드는, 회로 블록의 단위로 매핑할 수 있는 오브젝트회로 정보를 포함하는 것이 바람직하다.
본 발명의 아키텍처 코드는, 회로를 동적으로 재구성 가능한 논리회로 영역을 가지는 모든 데이터 처리 장치에 대하여 적용할 수 있다. 그러나, FPGA와 같이 회로의 구성을 룩업 테이블(LUT)에 기억하는 하드웨어라면, LUT를 변경하기 위해 다수의 클록을 가지며, 실행속도의 지연이 눈에 띌 가능성이 있다. 따라서, 본 발명에서는, 재구성에 필요한 시간이 매우 짧은 복수의 엘리먼트를 구비한 논리회로 영역을 가지는 데이터 처리 장치를 제공한다.
본 발명의 엘리먼트는, 입력 데이터를 논리연산하여 출력 데이터를 출력하는 연산 코어를 구비하고 있으며, 연산 코어는, 논리연산을 지시하는 다(多) 비트의 기능 코드가 입력되고, 입력 데이터에 의해 출력 데이터를 선택하는 셀렉터를 구비하고 있다. 연산 코어에 입력되어 있는 기능코드를 공급하는 것 만으로 논리를 변경할 수 있으므로, LUT를 수정할 필요없이 고속으로 논리를 교환할 수 있다.
또한, 엘리먼트는, n을 복수의 정수라 하였을 때, n개의 입력과, n개의 출력과, n개의 입력으로부터 임의의 입력 데이터를 선택하는 입력 인터페이스와, n계통의 입력 및 출력 데이터 중 어느 하나로부터 임의로 선택하여 n계통의 출력 중 적어도 어느 하나로부터 출력하는 출력 인터페이스를 구비하고 있는 것이 바람직하다. 예를 들어, 2차원으로 확대된 논리회로 영역이라면, 복수 n의 후보는 4이며, 동서남북(전후좌우) 네 방향의 어느 쪽으로부터도 데이터를 입력할 수 있고, 네 방향의 어느 쪽에 대해서도 데이터를 출력할 수 있다. 또한, 3차원으로 확대된 논리회로 영역이라면, 복수 n의 후보는 6이며, 전후·좌우·상하의 6방향의 어느 쪽으로부터도 데이터를 입력할 수 있고, 6방향의 어느 쪽에 대해서도 데이터를 출력할 수 있다. 또한, 상기 엘리먼트는 논리연산하지 않는 단순한 접속전환 엘리먼트로서의 기능도 한다. 더욱이, 연산 코어에, n개의 입력 중 어느 하나의 데이터, 또는 출력 데이터를 래치하는 레지스터를 설치하는 것이 바람직하다. 레지스터를 사용하지 않으면, 디코더 등의 클록 의존성이 없거나 혹은 적은 처리를 실행하는데 적합한 회로를 구성할 수 있고, 레지스터를 사용하면, 스테이트 머신(state machine) 등의 클록 의존성이 높은 처리에 적합한 회로를 구성할 수 있다.
본 발명에 따르면, 몇 클록 혹은 사이클 단위로 실제 하드웨어 공간의 동적 최적화가 가능해진다. 이 때문에, 트레이드오프의 자유도가 매우 크며, 고성능 및 고기능, 낮은 칩 비용, 및 낮은 소비전력과 같은 상반되는 몇가지의 요구를 동시에 높은 수준으로 실현할 수 있다. 따라서, 재구성 가능한 기술 (reconfigurable technology)의 유효성은 비약적으로 증대된다. 동적으로 재구성 가능한 회로 영역에서의 설치 효율이 향상되고, 전용 LSI에 비해 내부의 가동 효율을 현격히 향상시켜, 칩 비용, 성능 및 소비 전력의 세가지 점에서 유리한 해결수단을 제공할 수 있다. 또한, 동적으로 재구성 가능한 하드웨어가 프로그래머블한 하드웨어인 특징은 최대한 살려지므로, 종래의 LSI 개발방법에서는, 물리적 디자인과 기능검증 · 품질보증을 위해 몇 개월 이상의 시간을 필요로 했던 하드웨어의 제공을, 원리적으로 이러한 기간을 필요로 하지 않는 아키텍처를 제공할 수 있다.
즉, 본 발명에서는, 실현가능한 하드웨어 공간의 동적 최적화 기술을 제공하고 있다. 종래, 유체물(有體物)로 제공된 하드웨어 회로 정보와, 명령 프로그램과 같은 하드웨어 회로를 제어하는 소프트웨어 정보를 하나의 통일된 아키텍처 코드라 불리우는 체계로 부호화한 새로운 정보로서 제공하고 있다. 이 때문에, 하드웨어의 실행 사이클에 있어서, 어플리케이션 요구(아키텍처)의 구속 조건하에서, 그 순간순간 유효해지는 하드웨어 리소스와, 요구되는 처리성능을 트레이드오프하여, 동적으로 최적화함으로써, 특정한 어플리케이션용으로 설계된 전용 LSI에 대해서도, 재구성 가능한 칩이 칩 비용, 성능요구 및 소비전력의 세가지 면에서 우위를 나타내는 것이 가능해진다.
하드웨어 공간의 동적 최적화를 실현하기 위한 아키텍처의 기본 요소 기술은, 하드웨어 회로의 시분할 실행을 가능케 하는 회로 분할 실행과 계속 실행 기술, 복수의 하드웨어 회로간의 채널 접속 기술, 동적 하드웨어 회로 생성 기술·축소 기술·소거 교환 기술, 하드웨어 회로 정보의 컴팩트화 기술과 회로 정보의 고속 이동 기술, 어플리케이션 요구와 리소스간의 트레이드오프용 소프트웨어 기술, 하드웨어 회로나 소프트웨어 정보의 고속 에뮬레이션 기술을 들 수 있다. 본 발명의 아키텍처 코드는, 이들 기술을 서포트할 수 있는 것이다.
또한, 본 발명의 아키텍처 코드는, 오브젝트회로 정보(분할회로 정보), 인터페이스회로 정보, 경계조건을 포함하는 것이지만, 더 나아가서는, 아키텍처 코드는, 하드웨어 회로 정보와 소프트웨어 정보의 두 가지로 크게 분류된다. 하드웨어 회로 정보는, 사용가능한 하드웨어 자원을 100%라 하였을 경우의 각 회로의 모듈 상관 정보(정적 토폴로지(topology) 정보와 동적 모듈 실행 정보)·계층구조·우선순위·예외 처리 조건·동적 트레이드오프 조건 등을 포함할 수 있다. 아키텍처 코드는, 경계조건을 비롯한 하드웨어 회로의 기능이나 타이밍 제어를 보조적으로 서포트하는 정보 전체를 포함할 수 있으며, 여기에는, 종래의 명령 프로그램이나 벡터 테이블, 어플리케이션에 따라서는 화상 등의 데이터 정보와 같은 소프트웨어 정보도 포함된다.
예를 들어, 마이크로 프로세서의 경우, 외부 인터럽트 제어부나 예외처리부와 같은 특정 조건에서밖에 필요하지 않은 회로와, 디코더 혹은 데이터 패스(path)와 같이 비교적 높은 빈도로 실행되는 회로가 존재한다. 본 발명의 아키텍처 코드를 이용하면, 하드웨어 공간에 계층적으로 구성되는 하드웨어 회로를, 마이크로 프로세서라고 하는 기능면에서 분석하여 고치고, 동적 실행을 상정한 동적 최적화가 가능하도록 재구성한 정보의 집합체로서, 마이크로 프로세서의 하드웨어 및 소프트웨어 정보를 제공할 수 있다. 이것은, 일반적인 프로그램 공간과는 달리, 병렬 실행을 상정한 복수의 아키텍처 코드로 구성된다. 그리고, 아키텍처 코드에 의해 실장되는 오브젝트회로 중, 회로 교환의 여유가 없는 것에 관한 아키텍처 코드는 LSI 내부의 메모리에 저장된다. 반대로, 회로 실행이나 기동 여유가 있는 오브젝트회로에 관한 아키텍처 코드는 외부 메모리에 저장되고, 외부 메모리로부터 내부 메모리로 로딩된 후 실행된다.
본 발명의 데이터 처리 장치인 아키텍처 LSI는, 로드 유닛 및 매핑 유닛으로서의 기능을 구비하며, 아키텍처 코드를 하드웨어상에서 번역하여 하드웨어를 초기화하거나 분할 실행하기 위한 외부/내부의 고속 로딩 제어 유닛(RLC), 실행 제어 유닛으로서의 기능을 구비하며, 고속논리회로 교환 동작의 제어와 계층적 정보전달(전송)을 수행하는 고속논리통신 마스터(RTM), 논리회로 영역이 되는 각종 하드웨어 회로(테스트 회로 포함)를 직접 분할 실행하는 고속논리회로 교환 엘리먼트(RXE)군으로 구성할 수 있다. 본 발명의 실시형태에 대해서는, 본 발명의 다른 과제, 구성 및 효과와 함께 이하에서 더욱 자세히 설명하기로 한다.
도 1은 본 발명의 데이터 처리 장치의 개략적인 구성을 나타낸 도면이다.
도 2는 본 발명의 데이터 처리 장치의 다른 예를 나타낸 도면이다.
도 3은 아키텍처 코드의 개요를 나타낸 도면이다.
도 4는 데이터 처리 장치에 의해 제어되는 로봇의 개략적인 구성을 나타낸 도면이다.
도 5는 데이터 처리 장치를 구비한 단말의 개략적인 구성을 나타낸 도면이다.
도 6은 아키텍처 코드를 생성하는 과정을 나타낸 흐름도이다.
도 7은 데이터 처리 장치에 있어서 아키텍처 코드를 실행하는 과정을 나타낸 흐름도이다.
도 8은 RC영역의 구성의 일례를 나타낸 도면이다.
도 9는 RC영역의 구성의 다른 예를 나타낸 도면이다.
도 10은 RC영역의 하드웨어 구성을 나타낸 도면이다.
도 11은 엘리먼트의 배치를 나타낸 도면이다.
도 12는 엘리먼트의 구성을 나타낸 도면이다.
도 13은 연산 코어의 구성을 나타낸 도면이다.
도 14는 연산 코어의 동작예를 나타낸 도면이다.
도 15는 연산 코어의 다른 동작예를 나타낸 도면이다.
도 16은 연산 코어에서 실행가능한 논리연산의 예를 나타낸 도면이다.
도 1에는 본 발명의 데이터 처리 장치의 일례가 도시되어 있다. 이 데이터 처리 장치(1)는 아키텍처 LSI이며, 회로를 동적으로 재구성 가능한 논리회로 영역(10; RC영역, 재구성 가능한 영역)과, 몇 개의 하드웨어 모듈의 아키텍처 코드(20)를 기록한 아키텍처 라이브러리(2)와, 아키텍처 코드(20)를 재구성 가능한 하드웨어(10)상에서 번역하여 하드웨어를 초기화하거나 분할 실행하는 고속 로딩 제어 유닛(11; RLC)과, 고속논리회로 교환 동작의 제어와 계층적 정보전달(전송)을 수행하는 고속논리통신 마스터(12; RTM)를 구비하고 있다. RLC(11)는 라이브러리(2)로부터 아키텍처 코드(20)를 취득(페치(fetch) 혹은 다운로드)하는 로드 유닛(13; LU)으로서의 기능을 구비하고 있다. 또한, RLC(11)는 아키텍처 코드(20)의 오브젝트회로 정보 및 인터페이스회로 정보에 의해, RC영역(10)에 오브젝트회로(19)와, 그 오브젝트회로(19)에 접하는 인터페이스회로(18)를 매핑하는 매핑유닛(14; MU)으로서의 기능을 구비하고 있다. RTM(12)은, 아키텍처 코드의 경계조건에 따라 인터페이스회로(18)를 제어하는 동작 제어 유닛으로서의 기능을 구비하고 있다. 또한, RTM(12)은, RC영역(10)에 현재 및/또는 과거에 매핑된 오브젝트회로(19)의 인터페이스회로(18)의 상태를, 필요에 따라서 경계정보 메모리(15)에 기억하고, 오브젝트회로(19) 간의 정보전달을 수행한다.
이하의 예에서, 아키텍처 코드(20)의 오브젝트회로 정보는, 하드웨어 모듈을 적당한 범위로 분할하여, RC영역(10)에 매핑할 수 있도록 생성되어 있다. 따라서, 오브젝트회로 정보에 의해 RC영역(10)에 구성되는 오브젝트회로(19)는, 어떤 기능을 실장하기 위한 단위로서 설계된 하드웨어 모듈을 분할한 분할회로가 된다. 이 때문에, 이하에서는, 분할회로 정보를 오브젝트회로 정보로서 포함하는 아키텍처 코드(20)와, 분할회로(19)를 예로 하여 본 발명을 더욱 상세히 설명한다.
데이터 처리 장치(1)는 추가적으로, 어플리케이션을 실행하는 프로그램(4)이 기억된 RAM(5)과, 프로그램(4)에 따라 데이터 처리 장치(1)의 하드웨어 자원을 이용하여 처리를 실행하는 RISC 프로세서(6)와, 인터럽트 신호를 수신하는 인터럽트 제어 유닛(7)과, 데이터 처리 장치(1)의 각 하드웨어 자원에 클록신호를 공급하는 클록 발생원(8)과, 외부 메모리에 대해 데이터의 입출력을 제어하는 데이터 입출력 인터페이스(9)를 구비하고 있다. 코드 RAM(5)은, RC영역(10)으로부터도 액세스할 수 있게 되어 있다.
도 2에는 본 발명에 따른 데이터 처리 장치(1)의 다른 예가 도시되어 있다. CPU 혹은 DSP로서의 하드웨어는, 1개 또는 복수의 하드웨어 모듈(하드웨어 매크로)에 의해 제공할 수 있다. 마찬가지로, 아키텍처 코드(20)를 로딩하는 로드 유닛(13; LU), 매핑 유닛(14; MU) 및 동작 제어 유닛(12; RTM)의 각 기능도 1개 또는 복수의 하드웨어 모듈에 의해 제공할 수 있다. 또한, 인터럽트 검출 유닛(7; IU)도 하드웨어 모듈에 의해 제공할 수 있다. 따라서, 이들 하드웨어 모듈을 분할회로화하고, 아키텍처 코드에 의해 RC영역(10)에 동적으로 구성하는 것이 가능하다. 이 때문에, 도 2에 도시한 데이터 처리 장치(1)는, RC영역(10)에, 분할회로(19)와 인터페이스회로(18)에 의해 RISC 프로세서(6), LU(13), MU(14) 및 RTM(12)의 기능이 부분적으로 혹은 필요하다면 전체로서 실현되도록 되어 있다.
따라서, 상기 데이터 처리 장치(1)에서는, RISC 프로세서(6)의 기능이 RC영역(10)을 이용하여 실현되므로, RC영역(10)에 매핑되는 회로에 의해 RC영역(10)의 제어도 포함한 데이터 처리 장치(1)의 제어가 이루어진다. 이 경우, 데이터 처리 장치(1)에서 구성이 고정된 하드웨어로 실현되는 기능은, 데이터 처리 장치인 아키텍처 LSI(1)를 기동할 때나, 혹은 리셋할 때, 그것을 위한 구성을 RC영역(10)에 매핑하는 초기 설정 기능(16)이 된다. 이 초기 설정 기능(16)은 독립된 회로여도 좋고, 혹은 RTM(12)과 같이 RC영역(10)을 관리 혹은 제어하기 위해 고정적으로 필요한 기능에 포함되어, 그 기능이 고정된 하드웨어에서 제공되어도 좋다.
이와 같이, RC영역(10)에 매핑되는 회로에 의해, RC영역(10)의 제어도 포함한 데이터 처리 장치(1)의 제어를 수행할 수 있다. 따라서, RAM(4)에 데이터 처리 장치(1)의 제어도 포함한 아키텍처 코드(28)를 준비함으로써, 아키텍처 코드(28)에 의해 데이터 처리 장치(1)의 제어를 수행할 수 있다. 이 때문에, 복수의 명령 세트를 구비한 종래의 프로그램에 의한 제어를, 아키텍처 코드(28)에 의한 제어로 대신하는 것이 가능해진다. 이것은, 기록 매체, 네트워크, 통신 등에 의해 아키텍처 코드(28)를 제공함으로써, 하드웨어 정보 뿐만아니라, 종래의 소프트웨어 정보도 포함하여 데이터 처리 장치(1)에 실장할 수 있음을 의미하고 있어, 데이터 처리 장치(1)의 유연성(flexibility)은 확대된다.
또한, LU(13), MU(14) 및 RTM(12)의 기능 등과 같이, 데이터 처리 장치(1)에 있어서, 어플리케이션을 실행하기 위해 필요하지만, 복수의 어플리케이션에 대해 범용성이 있는 기능을 제공하는 아키텍처 코드는, 데이터 처리 장치(1)의 기본적인 기능을 서포트하기 위한 아키텍처 코드(29)로서 어플리케이션용 아키텍처 코드(20)와는 독립적으로 공급하는 것이 가능하다. 이 시스템을 서포트하는 아키텍처 코드(29)는, 종래의 프로그램 베이스에서 가동하는 프로세서에 있어서의 OS 혹은 BIOS에 대응한 취급이 가능해진다. 또한, 시스템을 서포트하는 하드웨어도 아키텍처 코드(29)로서 제공함으로써, RC영역(10)의 교환 동작이 불필요할 경우, 혹은 교환 동작의 사이클을 저하시킬 수 있는 경우는, RC영역(10)의 교환 동작을 위한 하드웨어가 차지하는 영역을 어플리케이션의 실행을 위한 하드웨어로 해방하는 것이 가능해진다. 이 때문에, RC영역(10)의 이용 효율을 향상시킬 수 있으며, 적은 하드웨어 리소스로 최대한의 처리 능력을 발휘하는 LSI를 제공할 수 있게 된다.
도 3에는 아키텍처 코드(20)의 일례가 도시되어 있다. 아키텍처 코드(20)는, 하드웨어 회로 정보(21)와 소프트웨어 정보(22)로 구성된다. 하드웨어 회로 정보(21)는, 어떤 기능단위를 회로로서 실장하기 위해 설계되는 하드웨어 모듈(IP 또는 라이브러리)을 복수로 분할한 분할회로(19)를 RC영역(10)의 일부에 매핑하는 분할회로정보(23)와, 분할회로(19)에 접하는 인터페이스회로(18)를 RC영역(10)에 매핑하는 인터페이스회로 정보(24)를 구비하고 있다. 소프트웨어 정보(22)는, 아키텍처 코드(20)를 식별하기 위한 식별정보(25)와, 인터페이스회로(18)에서 실현하는 경계조건(26)에 더하여, 기타 정보(27), 예를 들면, 다른 분할회로에 대한 우선 순위, 예외처리 조건, 동적 트레이드오프 조건, 분할회로의 실행 순서 등의 정보를 포함한다. 아키텍처 코드(20)에 의해, 회로를 구성하는 원시(primitive)의 기능 정보나 토폴로지는 모두 명확해지며, 각각의 분할회로(19)의 기능 및 분할회로(19)의 접속관계도 명확해진다.
본 예의 데이터 처리 장치(1)에서는, 예를 들어, 도 1 및 도 2에 도시한 A라는 기능을 실현하기 위한 회로 구성(하드웨어 모듈)은, A1∼An의 아키텍처 코드(20)로서 주어진다. 또한, B라는 기능을 실현하는 회로 구성은, B1∼Bm의 아키텍처 코드(20)로서 주어지고, C라는 기능을 실현하는 회로 구성은, C1∼Cx의 아키텍처 코드(20)로서 주어지고, D라는 기능을 실현하는 회로 구성은, D1∼Dy의 아키텍처 코드로서 주어진다. 또한, n, m, x 및 y는 적당한 정수이다.
도 4에 나타낸 바와 같이, 데이터 처리 장치(1)가, 자동제어장치의 일례인 로봇(70)의 제어를 수행할 경우, A기능은 청각(71)의 제어 및 데이터 처리를 수행하고, B기능은 시각(72)의 제어 및 데이터 처리를 수행하고, C기능은 언어능력(73)의 제어 및 데이터 처리를 수행하고, D기능은 신체기능(74)의 제어 및 데이터 처리를 수행한다. 그리고, 데이터 처리 장치(1)의 RC영역(10)에는, 이들 복수의 자동제어기구(71∼74)의 하드웨어 모듈(A모듈부터 D모듈)의 분할회로가 각각 동적으로 매핑된다. RC영역(10)에서, 각각의 기구(71∼74)를 위한 하드웨어 모듈이 차지하는 면적은 동적으로 제어된다. 예를 들어, 로봇(70)이 회화를 할 때는, 그 때문에 청각, 시각 및 언어능력이 크게 요구되므로, 기능 A, B 및 C를 제어하기 위한 분할회로(19)가 차지하는 면적이 증대된다. 한편, 로봇(70)이 신체를 사용한 작업을 할 때에는, 시각 및 신체기능의 능력이 크게 요구되므로, 기능 B 및 C를 제어하기 위한 분할회로(19)가 차지하는 면적이 증대된다.
이 로봇(70)은 또한, 외계, 예를 들면, 무선 혹은 유선으로 인터넷 등의 컴퓨터 네트워크에 접속하기 위한 기구(75)를 구비하고 있다. 따라서, 각각의 기능을 실현하기 위한 아키텍처 코드를 외계로부터 다운로드하는 것이 가능해진다. 이에 따라, 로봇(70)으로 실현되는 작업의 종류는 기본적으로는 그 한계가 없어진다. 그리고, 아키텍처 코드의 공급원에 있어서, 아키텍처 코드를 업데이트함으로써, 항상 최신의 하드웨어 모듈에 의해 로봇(70)을 제어할 수 있으므로, 하드웨어의 진부화의 문제도 해결된다. 또한, 아키텍처 코드를 이용하여 로봇(70)을 원격 조작하는 것도 가능해진다. 외계와의 통신에 필요한 기능 중, 회로로 커버할 수 있는 기능은 기본적으로 아키텍처 코드를 이용하여 본 예의 데이터 처리 장치(1)에 의해 수행된다. 따라서, 통신용 기구(75)는, 안테나, 커넥터 등의, 회로로는 커버할 수 없는 하드웨어를 구비한 것이 된다.
하나의 데이터 처리 장치(1)에 의해 통신까지 커버할 수 없는 경우는, 통신용 데이터 처리 장치(1)를 탑재하여, 통신기능을 서포트함과 동시에, 통신기능의 부하가 작을 때에는, 다른 기능을 서포트하도록 설계하는 것이 가능하다. 다른 기능에 대해서도 마찬가지이며, 신체기능용으로서, 1 또는 복수의 데이터 처리 장치(1)를 집중 혹은 분산시켜 탑재하고, 신체기능의 부하가 작을 때에는, 이들 데이터 처리 장치(1)를 언어처리 등의 다른 기능을 위해 이용할 수 있다.
도 5에는 데이터 처리 장치(1)를 탑재한 단말(80)의 개략적인 구성이 도시되 어 있다. 상기 단말(80)도 외계와 통신하기 위한 기구(85)를 구비하고 있다. 따라서, 아키텍처 코드를 외계로부터 다운로드함으로써, 단말(80)에 의해 여러가지 서비스를 제공할 수 있다. 디스플레이, 마이크, 스피커 등의 입출력 기구(81)를 탑재하고 있으면, 화상, 음성 등의 입출력을 필요로 하는 모든 서비스를 제공할 수 있다. 또한, 빛이나 온도 등을 감지하는 센서(82)를 구비하고 있으면, 카메라나 온도계 등으로서의 서비스에 한정되지 않고, 신체를 모니터하는 서비스 등, 센서(82)을 이용한 다른 여러 가지의 서비스를 제공할 수 있다. 그리고, 아키텍처 코드를 외계로부터 다운로드함으로써, 항상 최신의 하드웨어 모듈의 기능을 이용할 수 있다.
도 6에는 아키텍처 코드(20)의 생성방법이 도시되어 있다. 우선, 단계 31에서, 하드웨어 모듈의 오리지널 넷리스트를 생성한다. 넷리스트를 생성하기까지의 단계는, C언어 등의 고급언어, Verilog 등의 하드웨어 기술 언어를 사용한 여러가지 방법이 공지되어 있으며, 어느 방법을 이용해도 좋다. 단계 32에서, 오리지널 넷리스트를 몇 개의 단위로 분할하고, 각각의 분할된 범위내에서, RC영역(10)에 매핑할 수 있도록 배치 및 배선 문제를 해결하여 분할회로정보(23)를 생성한다.
RC영역(10)에 매핑하는 분할회로(19)는, RC영역(10)을 구성하는 하드웨어의 적절한 범위를 단위로 하는 회로 블록을 1개 또는 복수 개 이용하여 배치되도록 분할된다. 상기 분할방법을 이용함으로써, RC영역(10)에 분할회로(19)를 효율적으로 할당할 수 있다. 또한, 분할회로(19) 간에 빈번히 데이터 교환이 일어나는 분할방법은, 분할회로(19)를 개별적으로 RC영역(10)에 매핑하는 것을 생각하면 바람직한 분할방법이라 할 수 없다. 단, 그러한 분할회로(19)의 조합은, RC영역(10)의 상황이 허용하는 한 동시에 매핑하도록 우선순위를 붙이는 것이 본 발명에서는 가능하다. 따라서, 본 발명의 데이터 처리 장치(1)에서는, 넷리스트의 여러가지 분할방법을 허용하여, 대응할 수가 있다. 그러나, 단계 32에서는, 오리지널 넷리스트를 분할하여, 이것을 RC영역(10)의 하드웨어에 할당하는 작업을 어느 정도 반복하여 최적의 분할회로정보(23)을 얻을 수 있도록 하는 것이 바람직하다.
또한, 단계 33에서, 오리지널 넷리스트의 분할회로(19)의 경계를 형성하는 정보로부터 인터페이스회로 정보(24)를 생성한다. 따라서, 인접하는 분할회로(19)와 경계가 일치하는 부분에서는, 인터페이스회로 정보(24)가 동일해지며, 부분적으로 공통의 인터페이스회로 정보(24)를 가진 아키텍처 코드가 생성되게 된다.
다음으로, 단계 34에서, 오리지널 넷리스트를 분할회로(19)의 집합으로 변환하고, 이들 분할회로(19) 사이에서, 하드웨어 모듈로서의 기능이 실현되도록, 타이밍 종료 문제 등을 포함한 배치 및 배선 문제를 해결하여, 인터페이스회로(18)에서의 경계조건(26)을 생성한다. 따라서, 인접하는 분할회로(19)와 경계가 일치 또는 접속할 수 있는 상태로 대응되어 있으며, 인터페이스회로 정보(24)가 동일 또는 대응되는 구성이 되는 부분에서는, 경계조건도 동일 또는 대응되는 조건이 된다. 이 때문에, 부분적으로 공통되거나, 혹은 대응되는 경계조건(26)을 가진 아키텍처 코드가 생성되게 된다.
또한, 분할회로를 실제 하드웨어 공간(10; 논리회로 영역)에 매핑하여 하드웨어 모듈로서의 기능을 실현시키도록 상기의 정보를 컴파일하는 단계에서, 다른 분할회로에 대한 우선순위, 예외처리 조건, 동적 트레이드오프 조건, 분할회로의 실행순서 등의 정보를 얻을 수 있으므로, 이것들을 포함하여, 단계 35에서 아키텍처 코드(20)를 생성한다. 따라서, 하드웨어 모듈은 복수의 분할회로(19)에 의해 가상 하드웨어 공간상에 구성되며, 아키텍처 코드(20)에 의해, 그 일부를 실제 하드웨어 공간인 RC영역(10)에 실현하고, 실행하는 것이 가능해진다. RC영역(10)에 매핑된 분할회로(19)는, 회로 인스턴스라 할 수 있다.
가상 하드웨어 공간과 실제 하드웨어 공간은 인터페이스회로(19)를 통해 연결되어 있어, 타이밍 종료 등과 같은 실제 하드웨어 공간에 배치·배선할 때의 문제는, 인터페이스회로(19)를 경계조건(26)에 의해 제어한다고 하는 해결책이 제시되어 있다. 따라서, 가상 하드웨어 공간이나 실제 하드웨어 공간에서, 원하는 분할회로(19)를 이용하여 소프트웨어적인 처리 및 하드웨어적인 처리를 실현하는 것이 가능해진다.
도 7에는 데이터 처리 장치(1)에서, 아키텍처 코드(20)를 이용하여 RC영역(10)에 분할회로(19) 및 인터페이스회로(18)를 생성하여 실행하는 과정이 도시되어 있다. 우선, 단계 41에서, 로드 유닛(13)은, RTM(12)에 의해 지정된 아키텍처 코드(20)를 라이브러리(2)로부터 취득한다. 본 예의 데이터 처리 장치(1)에서, RISC 프로세서(6)가 어플리케이션 프로그램(4)을 실행하는 경우와, 아키텍처 코드(28)에 의해 RC영역(10)에 실현되는 구성에 의해 데이터 처리 장치가 제어되는 경우가 있는데, 어느 경우에 있어서도, RTM(12)이 동작환경정보에 근거하여, 취득할 아키텍처 코드를 결정하고, 로드 유닛(13)에 지시를 보낸다. 동작환경정보는, 프로그램 (4) 혹은 아키텍처 코드(28)에 의해 얻어진 상기 데이터 처리 장치(1)에 대한 요구, 인터럽트 제어 회로(7)로부터의 인터럽트 정보, RC영역(10)에 매핑된 분할회로(19)의 실행상황, RC영역(10)의 이용 가능 상황(빈 영역의 유무, 치환가능한 분할회로의 유무 등)이 포함된다.
로드 유닛(13)은, 라이브러리(2)에 코드(20)가 있으면 어드레스를 출력하여 코드(20)를 페치한다. 로드 유닛(13)이 적당한 통신기능을 구비하고 있으면, 다른 데이터 처리 장치나, 외부의 메모리, 나아가서는, 네트워크로 접속된 서버나 기타 네트워크상의 자원으로부터 코드(20)를 취득할 수 있다. 아키텍처 코드(28)와 같이, 아키텍처 코드가 강제적으로 혹은 능동적으로 로드 유닛(13)에 로딩되는 구성으로 함으로써, 아키텍처 코드를 통해 데이터 처리 장치(1)에서의 처리를 능동적으로 제어하는 것도 가능하다.
단계 42에서, 매핑 유닛(14)은 취득된 아키텍처 코드(20)의 분할회로정보(23) 및 인터페이스회로 정보(24)에 따라, RC영역(10)에 분할회로(19)와, 그 분할회로에 접하는 인터페이스회로(18)를 매핑한다. RC영역(10)의 상황은, 분할회로(19)의 실행을 제어하는 RTM(12)이 가장 높은 정밀도로 파악할 수 있으므로, 매핑 유닛(14)은 RTM(12)의 지시에 의해, RC영역(10)의 빈 하드웨어 공간 또는 리플레이스 가능한 하드웨어 공간에 분할회로(19) 및 인터페이스회로(18)를 매핑한다. 이 때, 이웃하는 분할회로(19)와의 경계의 인터페이스회로 정보(24) 및 경계조건(26)이 일치 혹은 대응할 경우는, 가상 하드웨어 공간에 있어서 인접하는 분할회로(19)이므로, 실제 하드웨어 공간(10)에서 그대로 접속하는 것이 가능하다. 따라서, 쌍 방의 인터페이스회로를 거치지 않고 이웃하는 분할회로끼리 접속되도록 분할회로(19)를 매핑한다. 한편, 도 1 및 도 2 등에 있어서, 표시를 간략하게 하기 위해 인터페이스회로(18)는 분할회로(19)의 좌우에만 형성되어 있다. 분할회로(19)가 좌우 뿐만 아니라 상하에도 접속되는 배선을 포함하는 경우, 인터페이스회로(18)는 분할회로(19)의 상하좌우로 분할회로(19)를 캡슐로 에워싸듯이 배치된다. 또한, RC영역(10)이 3차원 방향으로 확대되고, 분할회로(19)도 3차원 방향으로 확대되는 회로라면, 인터페이스회로(18)는, 입체적으로 분할회로(19)를 캡슐화하도록 구성된다.
기본적으로는, RC영역(10)의 빈 영역에 분할회로(19)가 매핑되게 된다. RTM(12)이 파악하고 있는 동작 환경정보에 의하면, RC영역(10)에 매핑이 종료된 다른 분할회로에 대해, 새로운 분할회로(19)를 우선하여 매핑할 긴급성이 있으면, 매핑이 종료된 다른 분할회로(19)를 소거하거나 축소시켜 빈 영역을 형성하는 것도 가능하다. 소거된 다른 분할회로(19)는, 긴급성이 제거된 후, RC영역(10)에 다시 매핑하여, 처음부터 혹은 도중에 실행할 수 있다. 또한, 축소된 다른 분할회로(19)에서는, 분할회로(19)를 매핑하는 공정을 반복함으로써, 처리속도는 저하되지만, 그 분할회로에 관련된 기능의 처리를 계속적으로 실행할 수 있다. 이와 같이, 본 예의 데이터 처리 장치(1)에서는, RC영역(10)에, 동작환경정보 등에는 의존하지만, 신출귀몰하게 분할회로(19)를 매핑할 수 있다. 어플리케이션이 직면하는 상황을 미리 시뮬레이션 등에 의해 파악하여, RC영역(10)의 소정 위치에 원하는 분할회로(19)가 매핑되도록 스케줄링하는 것도 가능하므로, RC영역(10)의 이용 효율을 향 상시킬 수 있다.
단계 43에서는, 매핑된 분할회로(19)를 동작시킨다. 분할회로(19)를 동작시키기 위해, 단계 44에서, 경계조건(26)에 근거하여 인터페이스회로(18)를 제어하고, 분할회로(19)에 소정의 타이밍으로 소정의 데이터를 공급한다. 상기 단계 44에서, RTM(12)의 기능에 의해, RC영역(10)에 현재 및/또는 과거에, 시간적 및/또는 공간적으로 분리되어 매핑된 다른 분할회로(19)의 인터페이스회로(18)의 상태가, 경계조건(26)에 근거하여, 동작 대상인 분할회로(19)의 인터페이스회로(18)의 제어에 반영된다. 따라서, 단계 45에서, 실제 하드웨어 공간에 실현된 분할회로(19)는, 주위에 다른 분할회로가 접속되어 있는 가상 하드웨어 공간과 동일한 상태가 되고, 그 분할회로(19)가 속하는 하드웨어 모듈로서의 기능이 실제 하드웨어 공간상에서 실현된다. 또한, 분할회로(19)가 동작한 결과는, 인터페이스회로(18)에 출력되므로, RTM(12)은 그 인터페이스회로(18)의 상태를 RC영역(10)에 매핑되어 있는 다른 분할회로(19)의 인터페이스회로(18)에 공간적으로 전달하거나, 다음에 매핑될 다른 분할회로(19)의 인터페이스회로(18)에 시간을 지나 전달한다. 이에 따라 가상 하드웨어 공간에서는 신호가 넷리스트를 따라 전파되어, 하드웨어 모듈의 기능이 실현된다.
인터페이스회로(18)에 설정하는 경계정보는, 메모리(15)에 기억시켜 두는 것이 가능하다. 다른 분할회로(19)가 매핑되는 타이밍까지의 시간이 길거나, 동작 도중에 분할회로(19)가 소거되었을 때, 메모리(15)에 기억된 경계정보를 인터페이스회로(18)에 설정함으로써, 분할회로(19)를 원하는 조건으로 동작, 혹은 재동작시 킬 수 있다.
단계 46에서, 매핑된 분할회로(19)를 동작시키는 요구가 종료될 때까지 단계 44 및 45를 반복한다. 그리고, 처리가 종료된 분할회로(19)는, 단계 47에서 RC영역(10)으로부터 소거된다. 혹은, RC영역(10)에 여유가 있어, 이후에 분할회로(19)의 기능이 필요해질 것으로 예측되는 경우는, 축소시켜서 RC영역(10)에 존재시키는 것도 가능하다. 또한, RC영역(10)에 여유가 있을 경우는, 그대로 존재시켜 두어도 좋다.
연속적으로 입력되는 데이터에 대해 반복동작이 필요한 분할회로(19)가 매핑되어 있을 경우는, 그 처리가 종료될 때까지 동일한 분할회로(19)가 RC영역(10)에 존재한다. 병렬도를 높임으로써 처리속도가 높아질 경우는, 동일한 분할회로(19)의 회로 인스턴스를 복수 매핑하여 처리속도를 향상시키는 것도 가능하다. 또한, 동일한 아키텍처 코드(20)에 대해 복수의 회로 인스턴스를 RC영역(10)에 구성하고, 이들의 출력을 비교함으로써 신뢰성이 높은 처리를 실현하는 것도 가능하다. 그리고, 신뢰성이 요구되는 상태임을 판단하거나, 처리속도가 요구되는 상태임을 판단하고, 그러한 구성을 자동적으로 채용하도록 데이터 처리 장치(1)를 제어하는 것도 가능하다. 한편, 스테이트 머신과 같이, 상태(state)가 진행됨에 따라 처리내용이 순차로 변하는 경우는, 계속하여 다른 분할회로(19)가 매핑된다.
분할회로(19), 즉 회로 인스턴스는, 매핑시에 하드웨어 공간의 동적 최적화를 위해, 다른 회로 인스턴스의 기동과 소거를 테이블 마스터인 RTM(12)에게 요구할 수 있다. RTM(12)은, 복수의 회로 생성·소거·복사·이동이나 회로간의 채널 접속을 수행하여, 본래는 대규모 회로를 물리공간상에 전개하여 회로를 구성하지 않으면 동작하지 않는 기능을, 매 순간 필요한 회로만을 회로 인스턴스로서 하드웨어공간에 동적으로 최적화하면서 생성하여, 자원이 적은 하드웨어 공간을 이용하여 실질적으로는 방대한 복수의 회로를 병렬로 동작시킬 수 있다.
하드웨어 공간에 생성되는 분할회로(19)는, 항상, 상기 데이터 처리 장치(1; 아키텍처 LSI)의 논리회로 영역(10; 회로 플레인)상에 존재하는 퍼머넌트 회로(permanent circuit)와, 생성된 회로가 어느 일정시간밖에 존재하지 않는 인스턴트 회로(instant circuit), 일정시간마다 생성되는 순환 회로 등의 종류로 나눌 수 있다. 인스턴트 회로나 순환 회로는, 실제로 실행되면 소거되기 전에 자신의 실행 결과로 다른 회로에 통지해야 할 정보를 RTM(12)에 통지해 기억시켜 둔다. 통상은, 상기 회로 실행 정보는, 다음에 생성될 분할회로(19)에 효율적으로 전달된다. 반대로, RTM(12)은, 인스턴트 회로간의 실행정보가 효율적으로 전달되도록 회로의 제어를 수행한다.
분할회로(19)의 실행 순서의 확정은, 도 6에 도시한 아키텍처 코드(20)를 생성하는 개발단계에서, 개발환경(FW)의 회로 컴파일러가 이를 수행한다. 분할회로가, 외부신호나 데이터 입력 조건에 따라 회로 실행 순서에 변경이 있는 경우는, RTM(12)이, 이 실행 제어를 수행한다. 반대로, 분할회로에서 스스로 실행 순번의 완전한 제어가 가능한 경우는, RTM(12)이 시스템 전체에서의 우선순위에 따라 회로의 실행영역의 확대·축소를 수행한다.
예를 들어, 도 1의 RC영역(10)에는, A기능을 실현하는 A모듈의 분할회로 (A1)가 인터페이스회로와 함께 생성되고, B기능을 실현하는 B모듈의 분할회로(B1∼B3)가 인터페이스회로와 함께 생성되어 있다. 분할회로(B1∼B3)는, 연속된 회로 인스턴스에서 연속된 RC영역(10)에 생성되었으므로, 인접한 분할회로의 경계영역은 연속되어 있고, 연속된 분할회로로부터 외측으로 연결되는 경계에 인터페이스회로(18)가 형성되어 있다. 또한, 설명의 간략화를 위해, 인터페이스회로(18)가 도면의 좌우에만 생성되어 있으나, 가상의 하드웨어 공간에서 상하로 분할회로가 접속될 경우는, 인터페이스회로가 생성되는 경우가 있음은 상술한 대로이다.
C기능을 실현하는 C모듈에서는, 분할회로(C1 및 C2)가 RC영역(10)에 매핑되어 있으나 공간적으로 분할되어 있다. 이 때문에, 각각의 분할회로(C1 및 C2)에 인터페이스회로(18)가 생성되고, RTM(12)을 통해 이들 분할회로(C1 및 C2)는 접속된다. 또한, D기능을 실현하는 D모듈에서는, 분할회로(D1 및 D2)가 접속된 상태로 매핑되어 있다. RTM(12)은, 이들 분할회로(19)의 인터페이스회로(18)에 적당한 타이밍으로 데이터를 세트함으로써 분할회로(18)를 활성화시키고, 그 결과 인터페이스회로(18)에 출력된 데이터를 보존하거나, 공간 혹은 시간적으로 분할된 접속처의 분할회로(19)의 인터페이스회로(18)에 전달한다.
또한, RTM(12)은, 분할회로(19)의 아키텍처 코드(20)의 정보나, 분할회로(19)에 대한 동작 환경 정보에 의해, RC영역(10)의 분할회로(19)에 대해 클록 발생원(8)으로부터 공급되는 클록신호의 종류, 즉 주파수를 변화시킬 수 있다. 이 때문에, RC영역(10)의 전력소비를 필요 최소한으로 억제시킬 수 있고, 성능은 최대로 유지시킬 수 있다. RC영역(10) 중, 회로 인스턴스가 매핑되지 않은 영역에는 클록 신호가 원칙적으로 공급되지 않는다.
도 8 및 도 9는, 시간이 경과된 RC영역(10)의 상태를 나타낸 것이다. A기능은 인스턴트회로이며, A1, A2 및 A3와 같은 분할회로(19)가 차례로 생성되었다가 소멸되며, 그 동안의 데이터의 전송은 RTM(12)에 의해 이루어진다. B기능은, 도시한 시퀸스에서는 긴급성을 요하는 기능으로서 RTM(12)에 요구되어 있으며, RC영역(10)의 상당한 하드웨어 자원을 소비하여 생성되어 있다. 도 8에 도시한 타이밍에서는, D기능을 소멸시키고, 그 자원을 이용하여 다수의 분할회로(19)가 생성되어 있다. 따라서, 도 9에 도시한 타이밍에서는, B기능의 분할회로(19)가 소멸된 영역에 D기능의 분할회로(19)를 복원하여, 다시 D기능의 처리를 도중 또는 처음부터 재실행하게 된다.
도 10에는 RC영역(10)의 구성이 도시되어 있다. 본 예의 RC영역(10)은, 각각의 논리연산을 변경가능한 복수의 엘리먼트의 집합인 회로 블록(51; rxe_plane)이 격자형상(어레이형상 혹은 매트릭스형상)으로 배열되고, 이들 간은 배선(52)에 의해 접속되어 있다. 아키텍처 코드(20)에 의해 정의되는 분할회로(19)의 사이즈는, 상기 회로 블록(51)의 배수를 단위로 하는 것이 바람직하다. 이 경우, 분할회로 정보(24)를 컨텍스트(컨피그레이션 정보)로하고, 분할회로(19)가 1개 또는 복수의 회로 블록(51)을 소비하여 매핑된다.
도 11에는, 1개의 회로 블록(51)의 구성이 도시되어 있다. 본 예에서는, 회로 블록(51)에, 16개의 논리 엘리먼트(53)가 4×4의 어레이 구조를 이루도록 배열되어 있다. 각각의 논리 엘리먼트(53)는 도면의 상하좌우의 4방향에 인접하는 논 리 엘리먼트(53)와 4비트의 레이어1의 버스(54)에 의해 접속되어 있다. 또한, 상하좌우로 인접하는 논리 엘리먼트(53)을 넘어, 그 외측에 위치하는 논리 엘리먼트(53)와 접속하는 레이어2의 버스(55)도 준비되어 있다. 이 때문에, 논리 엘리먼트(53) 간을 보다 유연하게 접속할 수 있다. 또한, 3개의 논리 엘리먼트(53)를 뛰어넘은 레이어3의 버스를 배치하는 것도 가능하다.
각각의 논리 엘리먼트(53)는, 논리연산 엘리먼트로서의 기능과, 논리 엘리먼트간의 접속 전환을 수행하는 배선 스위치로서의 기능을 구비하고 있다. 그리고, 연산할 논리와, 배선 접속의 상태를 고속으로 변경 또는 교환할 필요가 있으므로, 본 예의 RC영역(10)에는, RXE(53; Rapid eXchange Element)라 불리우는 고속으로 교환동작이 가능한 엘리먼트가 배치되어 있다.
도 12에는, RXE(53)의 구성이 도시되어 있다. RXE(53)는, 4계통의 입력(61)과, 4계통의 출력(62)과, 4계통의 입력(61)으로부터 임의의 입력 데이터를 선택하는 입력 인터페이스(63)와, 상기 입력 인터페이스(63)에 의해 선택된 입력 데이터(φi)를 논리연산하여 데이터를 출력하는 연산 코어(65)와, 4계통의 입력(61)과 연산 코어(65)의 출력 데이터(φo)를 임의로 선택하여 4계통의 출력(62)에 접속가능한 출력 인터페이스(64)를 구비하고 있다. 연산 코어(65)는, 논리연산을 변경할 수 있는 구성으로 되어 있어, 논리의 변경이 가능한 연산 엘리먼트로서의 기능을 한다. 또한, 입력 인터페이스(63)는, 4계통의 입력(61)으로부터 임의의 1비트를 선택하기 위한 16 대 1의 셀렉터(63s)가 복수 배치된 구성으로 되어 있다. 출력 인터페이스(64)는, 연산 코어(65)로부터의 출력(φo)과 4계통의 입력(61)의 라우팅 을 겸한 7 대 1의 셀렉터(64s)가 복수 배치된 구성으로 되어 있다.
도 13에는 연산 코어(65; rxe_core)의 구성이 도시되어 있다. 연산 코어(65)는, 논리연산을 지시하는 16비트의 기능 코드(φf)를 입력으로 하고, 입력 데이터(φi)에 의해 출력 데이터(φo)를 선택하는 셀렉터(66)를 구비하고 있다. 연산 코어(65)는 또한, 4비트의 입력 데이터(φi)를 디코딩하여 16비트의 셀렉터(66)의 선택신호를 생성하는 디코더(67)와, 4계통의 입력(61) 중 어느 하나의 데이터, 또는 출력 데이터(φo)를 래치하는 레지스터(68)와, 레지스터(68)에 래치할 신호를 선택하기 위한 셀렉터(69a 및 69b)를 구비하고 있다.
도 14 및 도 15에는 연산 코어(65)의 동작에 대해 도시되어 있다. 연산 코어(65)는 모드신호(φm)에 의해 동작이 변화한다. 도 14의 모드 0에서, 연산 코어(65)는 4비트의 입력 데이터(φi)에 의해 1비트의 출력 데이터(φo)를 생성하고, 그 출력 데이터(φo)를 레지스터(68)로 래치하여 출력한다. 도 14의 모드 1에서, 연산 코어(65)는, 4비트의 입력 데이터(φi)에 의해 1비트의 출력 데이터(φo)를 생성하고, 그 출력 데이터(φo)를 레지스터(68)로 래치하지 않고 출력한다. 출력 데이터(φo)는, 16비트의 기능 코드(φf)와, 입력 데이터(φi)를 디코딩한 결과에 따른 것이다. 따라서, 도 16에 나타낸 바와 같이, 이들 모드 1 및 2에서는, 기능 코드(φf)를 바꿈으로써, 연산 코어(65)를 4입력 AND부터 4입력 비교기까지, 9종류 이상의 다른 논리 연산소자로서 사용할 수 있다.
또한, 연산 코어(65)는, 셀렉터(66)와 기능 코드(φf)의 조합에 논리연산을 행한다. 이 때문에, 종래의 FPGA와 같이 SRAM 등의 기억소자를 사용한 룩업 테이 블(LUT)에 논리를 세트할 필요가 없다. 따라서, SRAM에 입출력을 수행하는 사이클을 생략할 수 있고, 기능 코드(φf)를 연산 코어(65)에 출력한 타이밍으로 순식간에 연산 코어(65)에서 행하는 연산을 교환할 수 있다. 이 때문에, 본 예의 연산 코어(65)는 고속 교환 연산소자라 불리우고 있다.
도 15에 도시한 모드 2~4에서는, 1개의 연산 코어(65)가, 2비트의 입력신호(φi)에 대해 1비트의 출력신호(φo)를 출력하는 2개의 연산소자로서 기능한다. 즉, 내장된 16 대 1의 셀렉터(66)가, 2개의 4 대 1의 셀렉터로서 동작하도록 세트된다. 이들 모드 2~4에서, 연산 코어(65)는, 도 16에 나타낸 바와 같이, 기능 코드(φf)를 바꿈으로써, 인버터에서부터 2입력 EXNOR까지, 7종류 이상의 다른 논리연산소자로서 사용할 수 있다.
또한, 도 15에 나타낸 모드 5~7에서는, 연산 코어(65)를, 3비트의 입력신호(φi)에 대해 1비트의 출력신호(φo)를 출력하는 연산소자로서 사용할 수 있다. 추가 비트의 입력을 허용하면, 내장된 16 대 1의 셀렉터(66)를, 2개의 3 대 1의 셀렉터로서 동작하도록 세트할 수 있으므로, 연산 코어(65)를 2개의 3비트 입력 1비트 출력의 연산소자로서도 이용할 수 있다. 이들 모드 5~7에서, 연산 코어(65)는, 도 16에 나타낸 바와 같이, 기능 코드(φf)를 바꿈으로써, 3입력AND에서부터 전가산기(Full Adder)까지, 5종류 이상의 다른 논리연산소자로서 사용할 수 있다.
이와 같이, 본 예의 RC영역(10)을 구성하는 RXE(53)는, 셀렉터 방식으로 고속으로 논리를 교환하는 것이 가능하다. RXE(53)는 또한, 내부에 출력 데이터를 래치하는 레지스터(68)를 구비하고 있어, 출력 데이터를 직접 출력하거나, F/F에 의해 클록에 동기한 상태에서도 출력할 수 있다. 따라서, 디지털 회로에서 자주 사용되는 조합회로(디코더)와, 순서회로(스테이트 머신) 및 연산회로(데이터 패스)를, 아키텍처 코드(20)의 회로 정보에 의해 효율적으로 실장하여, 실행할 수 있다.
본 예의 논리를 재구성 가능한 엘리먼트(53; RXE)는, 2차원 어레이 혹은 매트릭스를 구성하는 것을 고려하고 있다. 따라서, 2차원에 격자형상으로 배치하는데 적합한 4계통의 입출력을 구비하고 있다. 그러나, 엘리먼트간을 접속하는 네트워크가 1차원적이면, 2계통 혹은 3계통의 입출력으로 대응할 수 있다. 더 나아가, 엘리먼트간을 접속하는 네트워크가 3차원적이면, 5계통이상의 입출력을 준비하는 것이 바람직하다. 또한, 본 예의 연산 코어(rxe_core)는, 고속으로 교환 동작이 가능하도록 셀렉터방식을 채용하고 있으나, 룩업 테이블(LUT)에 논리를 입력하는 사이클을 소비할 수 있다면 LUT를 구비한 연산 코어를 채용하는 것도 가능하다.
또한, 본 예에서는, 동일구조의 엘리먼트(53)에 의해 매트릭스를 구성하고 있지만, 논리연산용 엘리먼트와 네트워크 형성용 엘리먼트에 의해 매트릭스를 구성하는 것도 가능하다. 또한, 산술계산을 주로 한 엘리먼트, 어드레스 발생을 주로 한 엘리먼트 등과 같이 어느 정도 기능에 특화된, 또는, 범용성은 있으나, 어떤 기능의 처리 능력이 높은 복수 종류의 엘리먼트를 적당한 밀도로 배치한 매트릭스에 의해, 회로를 재구성할 수 있는 RC영역을 구성하는 것도 가능하다.
시스템의 하드웨어 아키텍처는, 일반적으로 설계의 시작(검토) 단계에서 요구사양으로서 확정하는 경우가 많다. 실제의 어플리케이션이 확정된 단계에서의 요구 변화나, 설계 초기 단계의 시점에서는 예상치 못했던 요구사양의 변경에 대응하기 위해, 최근의 FPGA나 PLD는, 하드웨어의 구성 변경이 가능한 아키텍처를 채용하고 있다. 그러나, 그 유연성 자체는, 내부를 구성하는 기본 엘리먼트를 장황하게 만들고, 칩비용의 경쟁력의 관점, 및 전용 설계된 LSI나 ASSP에 비해 동작주파수의 관점에서 불리한 요소가 된다.
최근에는, 동적 재구성 가능한 기구가 주목받게 되어, 높은 칩 비용의 문제와 낮은 동작주파수의 결점을 커버할 수 있게 되고 있다. 다만, 그 경쟁력은, 1∼2년에 걸쳐 개발된 전용 LSI와 비교하면 충분한 수준은 아니다. 본 발명에서는, 이러한 문제를 해결하는 것과 더불어, 저소비전력화도 실현함으로써, 전체적으로 현재의 SoC(System-on-Chip)의 비용 성능을 실현하면서, 아키텍처에 대한 동적 최적화를 수행하여, 다음에 오는 하이퍼 SoC를 실현할 수 있다.
한편, 현재의 LSI개발의 문제는, 칩 비용의 경쟁력이라는 점과, 성능 및 저소비전력화는 최고라도 개발기간과 개발비용은 최악이라는 점인데, 이러한 문제도 해결이 가능하다.
현재의 LSI설계의 상식으로는, 하드웨어 기술언어(Verilog-HDL이나 VHDL)을 중심으로 하여, 이것을 각 회사의 반도체 프로세스에 맞는 라이브러리의 접속형식에 맞는 넷리스트로 번역(논리합성)한다. 이 경우, 물리배선과 각 논리게이트(회로)의 접속형태에 따라 동작주파수도 영향을 받지만, 그보다 더 큰 문제는, 시스템 아키텍처의 관점에서의 최적화가 불가능하다는 점이다. 즉, 현재의 SoC나 FPGA, 동적 재구성 가능한 기술은, 하드웨어의 실행시에, 아키텍처 레벨로부터의 동적 최 적화를 실현할 수 없는 구조로 되어 있다. 본 발명은, 하드웨어 실행시의 하드웨어 공간을 동적으로 최적화하는 것이 가능하여, 이 문제를 해결한다.
또한, 현재의 LSI 개발방법과 실장방법에서는, 시스템의 신뢰성 향상이나 품질 보증을 위한 비용이 대단히 크다고 할 수 있다. 하나의 요인은, 테스트 회로를 실장하지 않으면 내부 기능의 체크가 불가능하고, 테스트 회로를 실장하면 그 테스트 회로가 칩 면적을 차지하여, 칩 비용이 상승되는 것이다. 따라서, 결과적으로 품질을 향상시키는 수단은 존재하지만, 최종적으로는 비용과 트레이드오프되어, 신뢰성이나 품질을 보증하는데는 한계가 있다. 이 때문에, 소비재에 가장 필요시되는 테스트 자체가 제품의 경쟁력을 빼앗는 결과가 된다. 또한, 디버그의 용이화를 위한 설계도 전체적인 개발 시간이나 개발 리소스를 감소시키기 위해 필요한 컨셉이지만, 그 역시 설계를 위한 비용이 칩 비용을 상승시키는 요인이 된다.
본 발명은, 이러한 모든 과제에 대해 해답을 줄 수 있다. 본 발명의 하드웨어 공간의 동적 최적화 기술은, 신뢰성이나 품질을 보증하는 회로를 필요한 타이밍만큼 존재시켜, 전체적인 비용에 대한 영향을 최소한으로 할 수 있다. 디버그의 용이화를 위한 회로는, 디버그가 완료되면 일반적으로는 필요가 없다. 반대로, 디버그가 필요한 타이밍에 추가해야 할 디버그용 회로를 생성하면 되는데, 본 발명에서는 매우 용이하게 대응할 수 있다.
또한, 아키텍처 코드에 근거한 본 발명은, 장래, 네트워크 등을 사용하여, 동적으로 테스트 회로나 그 밖의 기능을 실현하는 회로를 변경하거나, 생성하는 것을 가능하게 하여, 대규모의 복잡한 시스템을 구축하는 비용을 대폭 감소시킬 수 있다. 따라서, 로컬 소형의 칩화된 본 발명의 데이터 처리 장치가 내장된 단말을 가지고, 네트워크를 통해 방대한 리소스를 가지는 가상 하드웨어 공간과 접속함으로써, 다양한 기능을 로컬 소형 단말에 의해 실행하는 것이 가능해진다. 이 시스템은, 네트워크를 통해 방대한 입출력 데이터를 통신하면서 네트워크상에 존재하는 하드웨어 자원을 이용하여 처리를 수행하는 현재의 방식과는 전혀 반대되는 발상이며, 네트워크상에 존재하는 하드웨어 자원을 로컬 단말로 실행하고자 하는 것이다. 따라서, 대량의 입출력 데이터의 송수신을 완화하여 네트워크의 부하를 감소시킬 수 있고, 또, 데이터의 은닉성을 보증할 수 있는 등, 여러 가지의 장점을 가진 시스템이 본 발명에 기초하여 구축될 수 있다.
또한, 상기에서는, 반도체 집적회로 기술을 기초로 한 LSI에 본 발명을 적용하는 예에 대해 설명하였지만, 이른바 회로망을 형성하는 모든 데이터 처리 장치에 본 발명을 적용할 수 있다. 즉, 전기 혹은 전자 레벨의 회로 기술을 기초로 한 데이터 처리 장치에 한정되지 않고, 빛, 생체, 분자 혹은 원자구조, 유전자구조 등을 기초로 한 회로망을 형성하는 모든 데이터 처리 장치에 대해 본 발명을 적용할 수 있다.

Claims (34)

  1. 회로를 동적으로 재구성 가능한 논리회로 영역을 가지는 데이터 처리 장치의 제어방법으로서,
    어플리케이션(application)을 실행하기 위한 회로의 적어도 일부인 오브젝트회로를 상기 논리회로 영역의 일부에 매핑하기 위한 오브젝트회로 정보와, 상기 오브젝트회로에 접하는 인터페이스회로를 상기 논리회로 영역에 매핑하기 위한 인터페이스회로 정보와, 상기 인터페이스회로에서 실현하는 경계조건을 구비한 아키텍처 코드를 취득하는 공정과,
    상기 아키텍처 코드의 상기 오브젝트회로 정보 및 인터페이스회로 정보에 의해, 상기 논리회로 영역에 상기 오브젝트회로와 상기 오브젝트회로에 접하는 상기 인터페이스회로를 매핑하는 공정과,
    상기 아키텍처 코드의 상기 경계조건에 기초하여 상기 인터페이스회로를 제어하는 동작공정을 가지는 데이터 처리 장치의 제어방법.
  2. 제 1항에 있어서,
    상기 오브젝트회로는, 어떤 기능을 실장하기 위한 하드웨어 모듈을 분할한 분할회로인 데이터 처리 장치의 제어방법.
  3. 제 1항에 있어서,
    상기 매핑하는 공정에서는, 상기 오브젝트회로와 상기 인터페이스회로를 상기 논리회로 영역의 이용가능한 어느 한 영역에 매핑하는 데이터 처리 장치의 제어방법.
  4. 제 1항에 있어서,
    상기 매핑하는 공정에서는, 이웃하는 오브젝트회로와의 경계에서의 인터페이스회로 정보 및 경계조건이 일치 또는 대응하는 경우는, 쌍방의 인터페이스회로를 거치지 않고 상기 이웃하는 오브젝트회로와 접속하도록 상기 오브젝트회로를 매핑하는 데이터 처리 장치의 제어방법.
  5. 제 1항에 있어서,
    상기 동작공정에서는, 상기 논리회로 영역에 시간적 및/또는 공간적으로 나누어 매핑된 다른 오브젝트회로의 인터페이스회로의 상태가 상기 경계조건에 기초하여 상기 오브젝트회로의 인터페이스회로의 제어에 반영되는 데이터 처리 장치의 제어방법.
  6. 제 1항에 있어서,
    상기 취득하는 공정에서는, 상기 데이터 처리 장치에 대한 요구, 매핑된 상기 오브젝트회로의 실행 상황, 상기 논리회로 영역의 이용 가능 상황을 포함한 동작환경 정보에 기초하여, 취득할 상기 아키텍처 코드를 선택하는 데이터 처리 장치 의 제어방법.
  7. 제 1항에 있어서,
    상기 취득하는 공정에서는, 상기 아키텍처 코드를 통신 네트워크를 통해 취득하는 데이터 처리 장치의 제어방법.
  8. 제 1항에 있어서,
    상기 논리회로 영역은, 특정한 수의 재구성 가능한 복수의 엘리먼트에 의해 구성되는 복수의 회로 블록을 구비하고 있으며, 상기 아키텍처 코드는 상기 회로 블록 단위의 상기 오브젝트회로 정보를 포함하는 데이터 처리 장치의 제어방법.
  9. 회로를 동적으로 재구성 가능한 논리회로 영역과,
    어플리케이션을 실행하기 위한 회로의 적어도 일부인 오브젝트회로를 상기 논리회로 영역의 일부에 매핑하기 위한 오브젝트회로 정보와, 상기 오브젝트회로에 접하는 인터페이스회로를 상기 논리회로 영역에 매핑하기 위한 인터페이스회로 정보와, 상기 인터페이스회로에서 실현하는 경계조건을 구비한 아키텍처 코드를 취득하는 로드 유닛과,
    상기 아키텍처 코드의 상기 오브젝트회로 정보 및 인터페이스회로 정보에 따라, 상기 논리회로 영역에 상기 오브젝트회로와, 그 오브젝트회로에 접하는 상기 인터페이스회로를 매핑하는 매핑 유닛과,
    상기 아키텍처 코드의 상기 경계조건에 따라 상기 인터페이스회로를 제어하는 동작 제어 유닛을 가지는 데이터 처리 장치.
  10. 제 9항에 있어서,
    상기 오브젝트회로는, 어떤 기능을 실장하기 위한 하드웨어 모듈을 분할한 분할회로인 데이터 처리 장치.
  11. 제 10항에 있어서,
    상기 로드 유닛, 상기 매핑 유닛 및 상기 동작 제어 유닛은, 각각 상기 하드웨어 모듈의 하나이며, 상기 분할회로에 의해 상기 논리회로 영역에 실장되는 데이터 처리 장치.
  12. 제 9항에 있어서,
    상기 매핑 유닛은, 상기 오브젝트회로와 상기 인터페이스회로를 상기 논리회로 영역의 이용가능한 어느 한 영역에 매핑하는 데이터 처리 장치.
  13. 제 9항에 있어서,
    상기 매핑 유닛은, 이웃하는 오브젝트회로와의 경계에서의 상기 인터페이스회로 정보 및 경계조건이 일치 또는 대응할 경우는, 쌍방의 인터페이스회로를 거치지 않고 상기 이웃하는 오브젝트회로와 접속하도록 상기 오브젝트회로를 매핑하는 데이터 처리 장치.
  14. 제 9항에 있어서,
    상기 동작 제어 유닛은, 상기 논리회로 영역에 시간적 및/또는 공간적으로 나누어 매핑된 다른 오브젝트회로의 인터페이스회로의 상태를 상기 경계조건에 기초하여 상기 오브젝트회로의 상기 인터페이스회로의 제어에 반영하는 데이터 처리 장치.
  15. 제 9항에 있어서,
    상기 논리회로 영역에, 시간적 및/또는 공간적으로 나누어 매핑된 오브젝트회로의 인터페이스회로의 상태를 기억하는 경계정보 메모리를 추가로 가지는 데이터 처리 장치.
  16. 제 9항에 있어서,
    상기 로드 유닛은, 상기 데이터 처리 장치에 대한 요구, 매핑된 상기 오브젝트회로의 실행 상황, 상기 논리회로 영역의 이용 가능 상황을 포함한 동작 환경 정보에 기초하여, 복수의 아키텍처 코드를 구비한 아키텍처 라이브러리로부터 상기 아키텍처 코드를 취득하는 데이터 처리 장치.
  17. 제 9항에 있어서,
    상기 로드 유닛은, 상기 아키텍처 코드를 통신 네트워크를 통해 취득하는 데이터 처리 장치.
  18. 제 10항에 있어서,
    복수의 하드웨어 모듈을 구성하는 복수의 아키텍처 코드를 구비한 아키텍처 라이브러리를 가지는 데이터 처리 장치.
  19. 제 9항에 있어서,
    상기 논리회로 영역은, 특정한 수의 재구성 가능한 엘리먼트에 의해 구성되는 복수의 회로 블록을 구비하고 있으며, 상기 아키텍처 코드는 상기 회로 블록 단위의 상기 오브젝트회로 정보를 포함하는 데이터 처리 장치.
  20. 제 19항에 있어서,
    상기 엘리먼트는,
    복수 n개의 입력과, n개의 출력과,
    상기 n개의 입력으로부터 임의의 입력 데이터를 선택하는 입력 인터페이스와,
    상기 입력 인터페이스에 의해 선택된 입력 데이터를 논리연산하여 출력 데이터를 출력하는 연산 코어로서, 그 논리연산을 변경가능한 연산 코어와,
    상기 n개의 입력 및 상기 출력 데이터 중 적어도 어느 하나를 임의로 선택하 여 상기 n개의 출력 중 적어도 어느 하나로부터 출력하는 출력 인터페이스를 구비하고 있는 데이터 처리 장치.
  21. 제 20항에 있어서,
    상기 연산 코어는, 논리연산을 지시하는 다(多)비트의 기능 코드가 입력되며, 상기 입력 데이터에 의해 상기 출력 데이터를 선택하는 셀렉터를 구비하고 있는 데이터 처리 장치.
  22. 제 20항에 있어서,
    상기 연산 코어는, 상기 n개의 입력 중 어느 하나의 데이터 또는 상기 출력 데이터를 래치하는 레지스터를 구비하고 있는 데이터 처리 장치.
  23. 제 10항에 기재된 데이터 처리 장치와,
    상기 데이터 처리 장치에 실장되는 적어도 1개의 상기 하드웨어 모듈이, 각각의 제어 또는 데이터 처리에 이용되는 복수의 자동제어기구를 가지며,
    상기 논리회로 영역에 복수의 하드웨어 모듈의 분할회로가 각각 동적으로 매핑되는 자동제어장치.
  24. 제 23항에 있어서, 상기 아키텍처 코드를 외계와의 통신에 의해 취득하기 위한 통신기구를 더 구비하는 자동제어장치.
  25. 제 9항에 기재된 데이터 처리 장치와,
    상기 아키텍처 코드를 외계와의 통신에 의해 취득하는 통신기구를 가지는 단말.
  26. 회로를 동적으로 재구성 가능한 논리회로 영역을 가지는 데이터 처리 장치를 제어하기 위한 아키텍처 코드로서, 어플리케이션을 실행하기 위한 회로의 적어도 일부인 오브젝트회로를 상기 논리회로 영역의 일부에 매핑하기 위한 오브젝트회로 정보와, 상기 오브젝트회로에 접하는 인터페이스회로를 상기 논리회로 영역에 매핑하기 위한 인터페이스회로 정보와, 상기 인터페이스회로에서 실현하는 경계조건을 구비한 아키텍처 코드를 기록하고 있는 것을 특징으로 하는 기록 매체.
  27. 제 26항에 있어서,
    상기 오브젝트회로는, 어떤 기능을 실장하기 위한 하드웨어 모듈을 분할한 분할회로인 기록 매체.
  28. 회로를 동적으로 재구성 가능한 논리회로 영역을 가지는 데이터 처리 장치를 제어하기 위한 아키텍처 코드로서, 어플리케이션을 실행하기 위한 회로의 일부인 오브젝트회로를 상기 논리회로 영역의 일부에 매핑하기 위한 오브젝트회로 정보와, 상기 오브젝트회로에 접하는 인터페이스회로를 상기 논리회로 영역에 매핑하기 위 한 인터페이스회로 정보와, 상기 인터페이스회로에서 실현하는 경계조건을 구비한 아키텍처 코드의 생성방법으로서,
    상기 어플리케이션을 실행하기 위한 회로의 넷리스트를 분할하고, 각각 분할된 범위내의 배치·배선 문제를 해결하여 상기 오브젝트회로 정보를 생성하는 공정과,
    상기 넷리스트의, 상기 오브젝트회로 정보에 의해 구성되는 상기 오브젝트회로의 경계를 형성하는 정보로부터 상기 인터페이스회로 정보를 생성하는 공정과,
    상기 넷리스트를 상기 오브젝트회로의 집합으로 변환하고, 이들 오브젝트회로 간의 배치·배선 문제를 해결하여, 각각의 상기 오브젝트회로의 인터페이스회로에서의 경계조건을 생성하는 공정을 가지는 아키텍처 코드의 생성방법.
  29. 제 28항에 있어서,
    상기 생성공정에서는, 어떤 기능을 실장하기 위한 하드웨어 모듈의 넷리스트를 분할하여 상기 오브젝트회로 정보를 생성하는 아키텍처 코드의 생성방법.
  30. 회로를 동적으로 재구성 가능한 논리회로 영역을 가지는 데이터 처리 장치로서,
    상기 논리회로 영역은 재구성 가능한 복수의 엘리먼트를 구비하며,
    상기 엘리먼트는 입력 데이터를 논리연산하여 출력 데이터를 출력하는 연산 코어를 구비하고 있으며, 상기 연산 코어는 논리연산을 지시하는 다 비트의 기능코 드가 입력되고, 상기 입력 데이터에 의해 상기 출력 데이터를 선택하는 셀렉터를 구비하고 있는 데이터 처리 장치.
  31. 제 30항에 있어서,
    상기 엘리먼트는,
    복수 n개의 입력과, n개의 출력과,
    상기 n개의 입력으로부터 상기 입력 데이터를 선택하는 입력 인터페이스와,
    상기 n개의 입력 및 상기 출력 데이터 중 적어도 어느 하나를 선택하여 상기 n개의 출력 중 적어도 어느 하나로부터 출력하는 출력 인터페이스를 구비하고 있는 데이터 처리 장치.
  32. 제 30항에 있어서,
    상기 엘리먼트는,
    4계통의 입력과, 4계통의 출력과,
    상기 4계통의 입력으로부터 임의의 상기 입력 데이터를 선택하는 입력 인터페이스와,
    상기 4계통의 입력과 상기 출력 데이터를 임의로 선택하여 상기 4계통의 출력에 접속가능한 출력 인터페이스를 구비하고 있는 데이터 처리 장치.
  33. 제 31항에 있어서,
    상기 연산 코어는, 상기 n개의 입력 중 어느 하나의 데이터 또는 상기 출력 데이터를 래치하는 레지스터를 구비하고 있는 데이터 처리 장치.
  34. 제 30항에 있어서,
    소정의 개수의 상기 엘리먼트에 의해 구성되는 복수의 회로 블록을 구비하고 있는 데이터 처리 장치.
KR1020067003985A 2003-08-29 2006-02-27 데이터 처리 장치 KR101080465B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2003306357 2003-08-29
JPJP-P-2003-00306357 2003-08-29
PCT/JP2004/012380 WO2005022380A1 (ja) 2003-08-29 2004-08-27 データ処理装置

Publications (2)

Publication Number Publication Date
KR20060135600A true KR20060135600A (ko) 2006-12-29
KR101080465B1 KR101080465B1 (ko) 2011-11-04

Family

ID=34269386

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067003985A KR101080465B1 (ko) 2003-08-29 2006-02-27 데이터 처리 장치

Country Status (7)

Country Link
US (1) US8106679B2 (ko)
EP (1) EP1659486B1 (ko)
JP (2) JP4572835B2 (ko)
KR (1) KR101080465B1 (ko)
CN (1) CN100580621C (ko)
TW (1) TW200511719A (ko)
WO (1) WO2005022380A1 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3836109B2 (ja) * 2004-02-19 2006-10-18 東京エレクトロン株式会社 プログラマブル論理回路制御装置、プログラマブル論理回路制御方法及びプログラム
ATE458309T1 (de) 2004-10-28 2010-03-15 Ip Flex Inc Datenverarbeitungsgerät mit rekonfigurierbarer logischer schaltung
CN101189797B (zh) 2005-05-31 2011-07-20 富士施乐株式会社 可重构的装置
CN101351801B (zh) 2005-11-30 2011-06-15 富士施乐株式会社 再构成语句的方法以及具有该功能的计算机系统
GB0605349D0 (en) * 2006-03-17 2006-04-26 Imec Inter Uni Micro Electr Reconfigurable multi-processing coarse-grain array
JP2007279984A (ja) * 2006-04-05 2007-10-25 Fuji Xerox Co Ltd データ処理装置およびプログラム
JP6211583B2 (ja) * 2013-03-01 2017-10-11 アクシオンリサーチ株式会社 再構成する情報を生成する装置および方法
KR20150127608A (ko) 2013-03-01 2015-11-17 아토나프 가부시키가이샤 데이터 처리 장치 및 그 제어 방법
JP6029010B2 (ja) * 2013-03-22 2016-11-24 大学共同利用機関法人情報・システム研究機構 半導体チップ、半導体チップ接続システム
US10394731B2 (en) * 2014-12-19 2019-08-27 Amazon Technologies, Inc. System on a chip comprising reconfigurable resources for multiple compute sub-systems
US10523585B2 (en) 2014-12-19 2019-12-31 Amazon Technologies, Inc. System on a chip comprising multiple compute sub-systems
US11200192B2 (en) 2015-02-13 2021-12-14 Amazon Technologies. lac. Multi-mode system on a chip
DE102015219841A1 (de) * 2015-10-13 2017-04-13 Robert Bosch Gmbh Verfahren und Vorrichtung zum Aktualisieren eines Steuergerätes
JP6522531B2 (ja) 2016-02-15 2019-05-29 株式会社日立製作所 通信装置、通信システム、および回路構成制御方法
US10726677B2 (en) 2018-10-02 2020-07-28 Igt Gaming system and method for reporting of multiple concurrently played games
CN112124636B (zh) * 2020-05-09 2024-06-04 长沙天仪空间科技研究院有限公司 一种高集成式卫星平台系统

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01116690A (ja) * 1987-10-30 1989-05-09 Fujitsu Ltd 論理演算回路
US5361373A (en) * 1992-12-11 1994-11-01 Gilson Kent L Integrated circuit computing device comprising a dynamically configurable gate array having a microprocessor and reconfigurable instruction execution means and method therefor
JPH09231788A (ja) * 1995-12-19 1997-09-05 Fujitsu Ltd シフトレジスタ及びプログラマブル論理回路並びにプログラマブル論理回路システム
US6091258A (en) * 1997-02-05 2000-07-18 Altera Corporation Redundancy circuitry for logic circuits
US6034538A (en) 1998-01-21 2000-03-07 Lucent Technologies Inc. Virtual logic system for reconfigurable hardware
JP3471628B2 (ja) * 1998-05-12 2003-12-02 日本電信電話株式会社 書き換え可能な論理回路およびラッチ回路
JP3576837B2 (ja) * 1998-10-30 2004-10-13 日本電気株式会社 プログラマブルロジックlsiの基本セル及び基本セル2次元アレイ
JP2000222447A (ja) * 1999-01-28 2000-08-11 Nec Corp 論理合成システムにおける境界条件合成処理方法
US6212591B1 (en) * 1999-04-02 2001-04-03 Cradle Technologies Configurable I/O circuitry defining virtual ports
US6438737B1 (en) * 2000-02-15 2002-08-20 Intel Corporation Reconfigurable logic for a computer
DE60010853T2 (de) 2000-03-10 2005-07-14 Alcatel Verfahren und Gerät zur Datensicherung
US6507214B1 (en) * 2000-10-26 2003-01-14 Cypress Semiconductor Corporation Digital configurable macro architecture
JP3561506B2 (ja) * 2001-05-10 2004-09-02 東京エレクトロンデバイス株式会社 演算システム
US7210168B2 (en) 2001-10-15 2007-04-24 Mcafee, Inc. Updating malware definition data for mobile data processing devices

Also Published As

Publication number Publication date
EP1659486A1 (en) 2006-05-24
JP4572835B2 (ja) 2010-11-04
KR101080465B1 (ko) 2011-11-04
TW200511719A (en) 2005-03-16
JP2010171994A (ja) 2010-08-05
JPWO2005022380A1 (ja) 2007-11-01
JP5077597B2 (ja) 2012-11-21
CN1842762A (zh) 2006-10-04
TWI299941B (ko) 2008-08-11
CN100580621C (zh) 2010-01-13
WO2005022380A1 (ja) 2005-03-10
EP1659486A4 (en) 2008-12-10
EP1659486B1 (en) 2019-04-17
US20080122482A1 (en) 2008-05-29
US8106679B2 (en) 2012-01-31

Similar Documents

Publication Publication Date Title
KR101080465B1 (ko) 데이터 처리 장치
JP4893309B2 (ja) 再構成可能な論理回路を有するデータ処理装置
Flynn et al. Computer system design: system-on-chip
Pelkonen et al. System-level modeling of dynamically reconfigurable hardware with SystemC
US20070283311A1 (en) Method and system for dynamic reconfiguration of field programmable gate arrays
US11163558B2 (en) Multiprocessor programming toolkit for design reuse
US20060294490A1 (en) Apparatus for performing computational transformations as applied to in-memory processing of stateful, transaction oriented systems
US11138019B1 (en) Routing in a compilation flow for a heterogeneous multi-core architecture
US10860766B1 (en) Compilation flow for a heterogeneous multi-core architecture
Kamaleldin et al. Agiler: An adaptive heterogeneous tile-based many-core architecture for risc-v processors
TW202217564A (zh) 可重組態資料流資源的運行時間虛擬化
Nussbaum et al. Field programmable processor arrays
US20240069770A1 (en) Multiple contexts for a memory unit in a reconfigurable data processor
US20230401480A1 (en) Hardware acceleration of machine learning designs
Ram et al. Design and implementation of run time digital system using field programmable gate array–improved dynamic partial reconfiguration for efficient power consumption
Dhar Reconfigurable and heterogeneous architectures for efficient computing
Nazar Shahsavani et al. Efficient Compilation and Mapping of Fixed Function Combinational Logic onto Digital Signal Processors Targeting Neural Network Inference and Utilizing High-level Synthesis
Chu Reconfigurable computing systems cost/benefit analysis model
Edelin et al. A programming toolset enabling exploitation of reconfiguration for increased flexibility in future system-on-chips
Douglas Fabric cell hardware generation from HCDG graph for heterogeneous fabric-based reconfigurable systems.
CEA et al. ARCHITECTURES AND TECHNOLOGIES

Legal Events

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

Payment date: 20141007

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151001

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20181023

Year of fee payment: 8