KR101265120B1 - 재구성 가능한 디바이스 - Google Patents

재구성 가능한 디바이스 Download PDF

Info

Publication number
KR101265120B1
KR101265120B1 KR1020107018660A KR20107018660A KR101265120B1 KR 101265120 B1 KR101265120 B1 KR 101265120B1 KR 1020107018660 A KR1020107018660 A KR 1020107018660A KR 20107018660 A KR20107018660 A KR 20107018660A KR 101265120 B1 KR101265120 B1 KR 101265120B1
Authority
KR
South Korea
Prior art keywords
command
data
matrix
data flow
processing elements
Prior art date
Application number
KR1020107018660A
Other languages
English (en)
Other versions
KR20100122084A (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 KR20100122084A publication Critical patent/KR20100122084A/ko
Application granted granted Critical
Publication of KR101265120B1 publication Critical patent/KR101265120B1/ko

Links

Images

Classifications

    • 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/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Multi Processors (AREA)
  • Logic Circuits (AREA)

Abstract

본 발명의 재구성 구획을 갖는 디바이스(1)는, 복수의 세그먼트로 구분하여 배치된 복수의 PE(17)와, 각 PE(17)에 커맨드를 전달하기 위한 커맨드 전달 시스템(50)을 가진다. 커맨드 전달 시스템(50)은, 각 세그먼트에 설치된 전달용 커맨드 레지스터(53)와, 각 세그먼트 내의 복수의 PE(17)와 전달용 커맨드 레지스터(53)를 1 클록의 지연으로 접속하기 위한 제 1 레벨의 커맨드 전달 매트릭스(51)와, 복수의 세그먼트의 전달용 커맨드 레지스터(53)와 커맨드를 출력하는 커맨드 출력유닛(59)을 접속하는 제 2 레벨의 커맨드 전달 매트릭스(52)를 포함한다.

Description

재구성 가능한 디바이스{RECONFIGURABLE DEVICE}
본 발명은, 회로를 재구성할 수 있는 디바이스에 관한 것이다.
국제공개 WO2003/023602호에는, 복수의 처리유닛을 갖는 데이터 처리 시스템으로서, 제 1, 제 2 및 제 3 데이터 전송수단을 갖는 데이터 처리 시스템을 제공하는 것이 기재되어 있다. 제 1 데이터 전송수단은, 복수의 처리유닛을 네트워크형태로 접속하여 제 1 데이터의 핸드오버(handovers)를 행하고, 복수의 처리유닛 중, 2 이상의 처리유닛을 접속함으로써, 재구성 가능한 적어도 1개의 데이터 플로우를 구성한다. 제 2 데이터 전송수단은, 복수의 처리유닛에 대하여 설정 데이터를 로드하는 제어정보 등을 제 2 데이터로 하여 병렬로 공급한다. 제 3 데이터 전송수단은, 복수의 처리유닛의 각각에 대하여 설정 데이터를 공급한다. 상기 설정 데이터는, 제 1 데이터 전송수단을 통해 접속되는 다른 처리유닛을 직접 또는 간접적으로 변경하고, 및/또는 상기 처리유닛의 처리내용을 변경함으로써, 다른 기능의 데이터 플로우를 설정하는 데이터이다.
상기 문헌에는, 제어정보에 데이터 플로우를 식별하는 정보를 부가하여 브로드캐스트하고, 복수의 처리유닛(엘리먼트)에 의해 구성되는 데이터 플로우를 제어하는 내용이 기재되어 있다. 데이터 플로우를 재구성하기 위해 이용가능한 처리유닛의 수가 수백 혹은 그 이상이 되면, 데이터 플로우를 일시정지시키기 위한 제어정보 등을 각 처리유닛에 전달하는 타이밍을 일치시키지 않을 경우, 데이터 플로우에 따라 처리되고 있는 데이터 혹은 처리상태를 파기하지 않고 일시정지시키기가 어렵다.
본 발명의 일 양태는, 복수의 처리 엘리먼트와, 이들 복수의 처리 엘리먼트를 접속하기 위한 라우팅 매트릭스(routing matrix)를 포함하며, 복수의 처리 엘리먼트의 적어도 일부 및 라우팅 매트릭스의 적어도 일부에 의해 데이터 플로우가 재구성되는 재구성 구획을 갖는 디바이스이다. 데이터 플로우를 재구성하는 전형적인 수단은, 복수의 처리 엘리먼트의 각각의 처리 엘리먼트의 기능을 변경하는 것, 및/또는 라우팅 매트릭스의 적어도 일부의 접속을 변경하는 것이다.
상기 디바이스의 복수의 처리 엘리먼트는 복수의 세그먼트로 구분하여 배치되어 있다. 또한, 라우팅 매트릭스는 각 세그먼트에 포함되는 복수의 처리 엘리먼트를 제 1 지연 범위 내에서 접속하기 위한 제 1 레벨의 라우팅 매트릭스와, 다른 세그먼트에 포함되는 복수의 처리 엘리먼트를, 제 1 지연과는 다른 지연으로 접속하기 위한 제 2 레벨의 라우팅 매트릭스를 포함한다. 상기 디바이스는, 또한, 재구성 구획에 포함되는 복수의 처리 엘리먼트의 각각에 커맨드를 전달하기 위한 커맨드 전달 시스템을 갖는다.
상기 커맨드 전달 시스템은, 각 세그먼트에 설치된 전달용 커맨드 레지스터(레지스터 유닛)를 가지고, 또한, 각 세그먼트 내의 복수의 처리 엘리먼트와 전달용 커맨드 레지스터를 제 1 지연 범위내에서 접속하기 위한 제 1 레벨의 커맨드 전달 매트릭스와, 복수의 세그먼트의 전달용 커맨드 레지스터와 커맨드를 출력하는 커맨드 출력유닛을 제 1 지연과는 다른 지연으로 접속하기 위한 제 2 레벨의 커맨드 전달 매트릭스를 포함한다. 커맨드 레지스터는, 전형적으로는 멀티 비트(multi-bit)의 플립플롭(flip-flop) 또는 래치유닛(latch unit)을 포함하고, 커맨드를 클록 사이클 단위로 입력 및 출력하며, 커맨드를 클록 사이클에 동기하여 전송하기 위해 사용할 수 있다.
상기 디바이스에서는, 복수의 처리 엘리먼트가, 제 1 레벨의 라우팅 매트릭스에 의해 제 1 지연(제 1 지연시간, 제 1 사이클 또는 제 1 레이턴시(latency)) 범위 내, 예컨대 복수의 처리 엘리먼트가 동작하는 최소의 시간간격인 1 클록 사이클로 접속할 수 있는 복수의 세그먼트로 구분하여 배치된다. 따라서, 전달용 커맨드 레지스터와, 제 1 레벨의 커맨드 전달 매트릭스를 세그먼트마다 설치함으로써, 세그먼트 내의 모든 처리 엘리먼트에 대하여, 전달용 커맨드 레지스터로부터 커맨드를 제 1 지연 범위 내, 예컨대 1 클록 사이클에 의해 전달할 수 있다. 이에 따라, 제 2 레벨의 커맨드 전달 매트릭스에 의해, 복수의 세그먼트의 커맨드 레지스터에 대하여 소정의 지연(지연시간, 레이턴시) 범위 내, 예컨대 1 클록 사이클로 커맨드 출력유닛으로부터 커맨드를 전달하면, 커맨드 출력유닛으로부터 출력된 커맨드에 의해, 재구성 구획에 포함되는 모든 처리 엘리먼트를 동기하여(같은 타이밍으로) 제어할 수 있다.
상기 커맨드 전달 시스템에서는, 커맨드 출력유닛으로부터 각 처리 엘리먼트에 대하여 소정의 (고정된) 지연을 경과한 후에 커맨드가 전달된다. 따라서, 커맨드의 전달에는, 적어도 복수 클록 사이클을 소비하지만, 커맨드의 전달에 필요한 클록 사이클(레이턴시)은 일의적으로 규정할 수 있다. 이에 따라, 각 세그먼트 내의 처리 엘리먼트 뿐만 아니라, 재구성 구획에 포함되는 모든 처리 엘리먼트에 대하여 동기하여 커맨드를 전달할 수 있다. 따라서, 소정의 레이턴시를 고려하여 커맨드를 출력함으로써, 다수의 처리 엘리먼트에 의해 데이터 플로우가 구성되는 경우에도, 데이터 플로우를 구성하는 다수의 처리 엘리먼트를 동기하여 일시적으로 정지하거나, 재가동시킬 수 있게 된다.
커맨드는, 데이터 플로우를 제어하는 디바이스 내부 혹은 디바이스 외부의 프로세서로부터 공급되어도 된다. 즉응성(quick reaction)이 요구되는 커맨드는, 복수의 처리 엘리먼트의 적어도 일부에서 생성 및 출력되어도 된다. 이들의 적어도 일부의 처리 엘리먼트는, 커맨드 생성유닛을 포함하는 것이 바람직하다. 커맨드를 생성 및 출력하는 처리 엘리먼트의 전형적인 예는, 재구성 구획에 구성된 데이터 플로우에 의해 처리된 출력을 일시적으로 저장하는 저장유닛을 포함하는 출력 인터페이스 엘리먼트이다. 출력 인터페이스 엘리먼트는, 저장유닛(버퍼, buffer)에서 데이터 입출력의 속도차를 흡수할 수 없는 경우에는, 상기 커맨드 전달 시스템을 통해 스톱 커맨드를 출력하여, 재구성 구획에 재구성된 데이터 플로우를 일시적으로 정지할 수 있다. 즉, 커맨드 전달 시스템에 의해 전달되는 커맨드의 전형적인 예는, 각 처리 엘리먼트의 클록을 정지하기 위한 스톱 커맨드(stop command)이다.
디바이스는, 또한, 커맨드 생성유닛에 의해 발생된 커맨드를 커맨드 출력유닛에 수집하기 위한 커맨드 수집 시스템을 포함한다. 커맨드 수집 시스템은, 각 세그먼트에 설치된 수집용 커맨드 레지스터를 포함하고, 각 세그먼트 내의 적어도 일부의 처리 엘리먼트와 수집용 커맨드 레지스터를 제 1 지연 범위내에서 접속하기 위한 제 1 레벨의 커맨드 수집 매트릭스를 더 포함한다. 커맨드 수집 시스템은, 복수의 세그먼트의 수집용 커맨드 레지스터와 커맨드 출력유닛을 제 1 지연과는 다른 지연으로 접속하기 위한 제 2 레벨의 커맨드 수집 매트릭스를 더 포함한다.
수집용 커맨드 레지스터와, 제 1 레벨의 커맨드 수집 매트릭스를 세그먼트마다 설치함으로써, 세그먼트 내의 커맨드 생성유닛을 포함하는 모든 처리 엘리먼트로부터 수집용 커맨드 레지스터에 제 1 지연 범위내, 예컨대, 1 클록 사이클로 커맨드를 수집할 수 있다. 이에 따라, 제 2 레벨의 커맨드 수집 매트릭스에 의해, 복수의 세그먼트의 수집용 커맨드 레지스터로부터, 소정의 지연 범위내, 예컨대 1 클록 사이클로 커맨드 출력유닛에 커맨드를 회수하면, 재구성 구획에 포함되는 커맨드 생성유닛을 구비한 모든 처리 엘리먼트로부터 소정의 레이턴시(지연)로 커맨드를 커맨드 출력유닛에 수집할 수 있다. 이에 따라, 커맨드 전달 시스템을 통해, 커맨드 생성유닛으로부터 소정의, 혹은 규정된 레이턴시로, 재구성 구획에 포함되는 모든 처리 엘리먼트를 동기하여(같은 타이밍으로), 그 커맨드에 의해 제어할 수 있다.
따라서, 재구성 구획에 포함된, 어떤 처리 엘리먼트의 커맨드 생성유닛에 의해 생성된 커맨드를, 재구성 구획에 포함되는 모든 처리 엘리먼트에 동기하여 전달할 수 있게 된다. 이에 따라, 재구성 구획에 포함되는 처리 엘리먼트에 의해, 데이터 플로우를 정확하게 제어할 수 있게 된다. 가령, 다수의 처리 엘리먼트에 의해 데이터 플로우가 구성되는 경우에도, 데이터 플로우를 구성하는 다수의 처리 엘리먼트를, 처리 엘리먼트로부터 출력되는 커맨드에 의해, 동기하여 일시적으로 정지하거나, 재가동시킬 수 있게 된다.
상기 디바이스에 있어서는, 커맨드를 발생하는 처리 엘리먼트가 속하는 세그먼트의 처리 엘리먼트에 대해서도 커맨드 수집 시스템 및 커맨드 전달 시스템을 통해 커맨드가 전달된다. 또한, 커맨드를 발생하는 처리 엘리먼트 자신에 있어서도, 커맨드 수집 시스템 및 커맨드 전달 시스템을 통해 커맨드를 수신한다. 따라서, 재구성 구획에 속하는 모든 처리 엘리먼트에 있어서, 처리 엘리먼트에서의 커맨드 발생으로부터 처리 엘리먼트에 있어서 커맨드를 수신할 때까지의 레이턴시는 일률적이다. 이에 따라, 재구성 구획에 포함되는 복수의 세그먼트에 걸쳐 재구성되는 데이터 플로우에 속하는 모든 처리 엘리먼트에 대하여 커맨드를 동기한 타이밍으로 전달할 수 있어, 데이터 플로우의 처리에 부정합(inconsistencies)이 발생하는 것을 방지할 수 있다.
커맨드 출력유닛은, 적어도 일부의 처리 엘리먼트가 출력한 커맨드를 제 2 레벨의 커맨드 전달 매트릭스를 통해 복수의 세그먼트의 커맨드 레지스터에 전달하는 커맨드 릴레이 유닛으로서의 기능을 갖는다. 커맨드 출력유닛에 레지스터(플립플롭)를 설치함으로써, 각 처리 엘리먼트로 커맨드가 전달되는 레이턴시를 더욱 정밀하게 규정할 수가 있다. 커맨드의 소스가 되는 다른 적어도 일부의 처리 엘리먼트는, 커맨드 수집 시스템 및 커맨드 전달 시스템에 의해 커맨드를 전달하기 위해 필요한 클록 사이클을 가미하여 커맨드를 출력함으로써, 데이터 플로우를 적절하게 제어할 수 있다. 커맨드 출력유닛은, 출력 인터페이스 엘리먼트에 포함되어 있어도 된다.
재구성 구획에 구성된 데이터 플로우에 입력되는 데이터를 일시적으로 저장하는 저장유닛을 포함하는 입력 인터페이스 엘리먼트도 커맨드를 생성 및 출력하는 것이 바람직하다. 데이터 플로우에 의해 처리되고 있는 도중의 데이터를 일시적으로 저장하는 저장유닛을 포함하는 데이터 저장형 엘리먼트도 커맨드를 생성 및 출력하는 것이 바람직하다. 데이터 플로우에 입력되는 데이터의 준비가 되어 있지 않거나, 데이터 플로우의 도중에서 상류의 데이터 플로우 및 하류의 데이터 플로우의 처리속도의 조정이 필요해지는 케이스가 있기 때문이다.
입력 인터페이스 엘리먼트 또는 데이터 저장형 엘리먼트에 포함되는 커맨드 생성유닛은, 각각의 저장유닛에 잔존하는 데이터량이, 커맨드 수집 시스템 및 커맨드 전달 시스템에 의해 커맨드를 전달하기 위해 소비되는 사이클(클록 사이클, 레이턴시) 동안에, 그 데이터를 처리하는 데이터 플로우에 의해 소비되는 데이터량과 동일해졌을 때에, 스톱 커맨드를 출력하는 것이 바람직하다. 입력 인터페이스 엘리먼트 또는 데이터 저장형 엘리먼트가 데이터 플로우에 데이터를 제공하는 경우에, 그 데이터 플로우에 의한 처리에 부정합을 발생시키지 않고 일시정지시키며, 또한, 그 데이터 플로우에 의한 처리를 재개할 수 있다. 커맨드 생성유닛은, 저장유닛에 최종 데이터가 있을 때에는, 스톱 커맨드를 출력하지 않고, 최종 데이터를 출력할 수 있도록 하는 것이 바람직하다.
재구성 구획에 복수의 데이터 플로우가 구성되는 경우에는, 재구성 구획에 포함되는 복수의 처리 엘리먼트는, 각각의 처리 엘리먼트가 속하는 데이터 플로우를 식별하는 식별정보를 포함하는 제어유닛을 포함하고, 커맨드는 식별정보를 포함하는 것이 바람직하다. 복수의 데이터 플로우에 포함되는 처리 엘리먼트를 식별정보에 의해 식별하여, 스톱해야 할 데이터 플로우만을 정지하고, 다른 데이터 플로우는 그대로 가동시킬 수가 있다. 커맨드 생성유닛을 포함하는 처리 엘리먼트의 상류의 데이터 플로우를 식별하는 식별정보와, 하류의 데이터 플로우를 식별하는 식별정보는 다른 것이 바람직하다. 처리 엘리먼트의 상류의 데이터 플로우의 가동과 하류의 데이터 플로우의 가동을 개별적으로 제어함으로써, 커맨드의 발생요인을 해결할 수 있는 가능성이 있다.
도 1은 재구성 가능한 디바이스의 블록 다이어그램이다.
도 2는 PE 매트릭스의 배열을 나타낸 도면이다.
도 3은 PE 매트릭스의 세그먼트의 배열을 나타낸 도면이다.
도 4는 PE 매트릭스의 배치를 확대하여 나타낸 도면이다.
도 5는 세그먼트 내의 PE의 배열을 나타낸 도면이다.
도 6은 세그먼트 내의 배선(인트라 세그먼트(intra-segment) 배선)을 나타낸 도면이다.
도 7은 세그먼트간의 배선(인터 세그먼트(inter-segment) 배선)을 나타낸 도면이다.
도 8은 ALU 엘리먼트의 블록 다이어그램이다.
도 9는 LDB 엘리먼트의 블록 다이어그램이다.
도 10은 STB 엘리먼트의 블록 다이어그램이다.
도 11은 RAMD 엘리먼트의 블록 다이어그램이다.
도 12는 DLE 엘리먼트의 블록 다이어그램이다.
도 13은 커맨드 전달 시스템 및 커맨드 수집 시스템의 블록 다이어그램이다.
도 14는 PE 제어유닛의 블록 다이어그램이다.
도 15는 LDB 엘리먼트의 뱅크 전환(bank switching)을 나타낸 도면이다.
도 16은 버블(bubble)이 발생한 예를 나타낸 도면이다.
도 17은 플로우 스톱에 의해 데이터 플로우를 정지한 예를 나타낸 도면이다.
도 18은 LDB 엘리먼트의 뱅크 컨트롤러(커맨드 생성유닛)를 나타낸 도면이다.
도 19는 플로우 스톱 커맨드를 출력했을 때의 타이밍 차트이다.
도 20은 플로우 스톱 커맨드가 출력되지 않을 때의 타이밍 차트이다.
도 21은 플로우 스톱 커맨드가 출력되지 않을 때의 다른 예의 타이밍 차트이다.
도 1에, 재구성 가능한 디바이스의 일례를 나타내고 있다. 상기 디바이스(1)는, 본원의 출원인이 개발한 ‘DAPDNA’라고 불리우는 반도체 집적회로장치이다. 상기 디바이스(1)는, ‘DAP’라고 불리우는 RISC 코어 모듈(core module, 2)과, ‘DNA(Distributed Network Architecture)’라고 불리우는 다이나믹 리컨피규러블 데이터 플로우 액셀러레이터(Dynamic Reconfigurable Data-flow Accelerator; 3)를 포함한다. 디바이스(1)는, DAP(2) 및 DNA(3)에 덧붙여, DNA(3)의 다이렉트 입출력용 인터페이스(4)와, PCI 인터페이스(5)와, SDRAM 인터페이스(6)와, DMA 컨트롤러(7)와, 기타 버스 인터페이스(8)와, 이들을 접속하기 위한 고속 버스 스위치(9)를 포함한다. DAP(2)는, 디버깅 인터페이스(debugging interface, 2a)와, RISC 코어(2b)와, 명령 캐시(instruction cache, 2c)와, 데이터 캐시(2d)를 포함한다. 상기 디바이스(시스템; 1)는, 1개의 칩(IC, LSI 혹은 ASIC)으로서 제공할 수도 있고, 복수의 칩을 포함하는 칩 세트로서 제공할 수도 있다.
DNA(3)는, 955개의 처리 엘리먼트 PE(이하에서는 단순히 ‘PE’ 또는 ‘PEs’라고 부르는 경우가 있다)가 2차원으로 배치된 PE 매트릭스(매트릭스; 10)와, 상기 PE 매트릭스(10)에 포함되는 복수의 처리 엘리먼트 PE(PEs)의 기능 및/또는 접속을 바꾸어 PE 매트릭스(10)를 재구성하기 위한 컨피규레이션 데이터(configuration data)가 저장되는 컨피규레이션 메모리 시스템(11)을 포함한다. 컨피규레이션 메모리 시스템(11)은, 각 PE의 제어유닛에 포함되는 컨피규레이션 레지스터 시스템과, 이들 레지스터 시스템으로 컨피규레이션 데이터를 전송하는 전송 시스템을 포함한다.
도 2에, PE 매트릭스(10)의 배열을 확대하여 나타내고 있다. PE 매트릭스(10)에는 955개의 PE(17)가 종횡으로 매트릭스(2차원 어레이 구조)를 구성하도록 배치되어 있고, 병렬 처리 프로세서의 중핵을 이루고 있다. PE 매트릭스(10)는, 하드웨어적으로는 2차원의 격자형상으로 배열한 PE(17)와, 이들을 접속하는 버스(배선 매트릭스)로 구성되어 있다. 각 PE(17)는 연산기나 메모리라는 기본적인 기능만을 가지고, 이들 PE(17)를 버스로 상호 접속함으로써, 복잡한 기능을 실현한다. 각 PE(17)의 기능이나 버스의 접속은 소프트웨어로 변경할 수 있으며, 그 정보를 ‘DNA 컨피규레이션’이라 부르고 있다. PE 매트릭스(10) 상에서 다양한 처리를 하기 위해서는, 그 처리에 대응한 DNA 컨피규레이션을 작성하여 PE 매트릭스(10)에 설정한다. PE 매트릭스(10) 내에는 복수의 DNA 컨피규레이션을 보존할 수 있고, 현재의 처리에 어느 DNA 컨피규레이션을 사용할지는 동적으로 변경이 가능하다. 이들에 대해서는, 이하에서 더욱 상세히 설명한다.
PE 매트릭스(10)에서의 처리의 기본적인 동작은, 도 2에 나타낸 바와 같이, 외부의 메인 메모리(19) 등으로부터 인출(fetch)된 데이터를 처리하고, 다시 외부로 송출하는 것이다. 외부의 메인 메모리(19) 등에 대해서는 SDRAM 인터페이스(6) 등을 통해 데이터를 입출력할 수 있다. PE 매트릭스(10)에는, 외부로부터의 데이터의 인출구(port for fetching(inputting))는 2종류가 준비되어 있다. 1개는 ‘LDB’라고 불리우는 PE(17)로, SDRAM 인터페이스(6) 등을 통해 디바이스(1)에 접속된 메인 메모리(19)로부터 데이터를 인출한다. 또 하나는 ‘LDX’라고 불리우는 PE(17)로, 다이렉트 I/O 인터페이스(4)를 통해 외부에 접속된 다른 디바이스(18)로부터 직접 데이터를 인출한다. 이들 PE(17)로부터 인출된 데이터는 PE 매트릭스(10) 내부의 복수의 PE(17)에 의해 구성되는 데이터 플로우(데이터 패스, data path)에 의해 처리되어 출력된다. 처리가 끝난 데이터를 외부로 송출하는 포트도 2종류가 준비되어 있다. 1개는 ‘STB’라고 불리우는 PE(17)로, 메인 메모리(19)에 데이터를 기입한다. 다른 1개는 ‘STX’라고 불리우는 PE(17)로, 다이렉트 I/O 인터페이스(4)를 통해 접속된 외부 디바이스(18)에 직접 데이터를 송출한다.
도 3 내지 도 5에, PE 매트릭스(10)의 더욱 상세한 구성을 나타내고 있다. PE 매트릭스(10)에 배치된 복수의 PE(17)는, 데이터에 대하여 각종 처리를 행하는 것을 중심으로 하는 PE(ePE; 17e)와, PE 사이의 접속을 주로 행하는 접속용 PE(DLV 및 DLH; 17c)를 포함한다. 도 3에 나타낸 바와 같이, PE 매트릭스(10)에 배치된 복수의 PE(17)는, 4열(column)×4행(row) 구성의 16개의 세그먼트(이하에서, 세그먼트를 일반적으로 나타내는 경우에는 세그먼트(S), 각각의 세그먼트를 나타내는 경우에는 세그먼트(S0-S15) 또는 세그먼트((a1-a4, b1-b4, c1-c4 및 d1-d4)로 함)로 분할 혹은 구획화되어 있다. 각각의 세그먼트(S)에는 8열×8행 구성의 데이터 처리용 PE(ePE)와, 다른 세그먼트(S)와의 경계를 따라 배치된 DLV 및 DLH를 포함한다. 각각의 세그먼트(S)에 포함되는 PE(17)는, 1사이클의 지연 범위내에서 데이터를 송수신할 수 있는 인트라 세그먼트 커넥션(세그먼트 내 접속, 제 1 레벨의 라우팅 매트릭스; 21)으로 접속되어 있다. 또한, 인접하는 세그먼트(S)는, DLV 및 DLH를 통해 인터 세그먼트 커넥션(세그먼트간 접속, 제 2 레벨의 라우팅 매트릭스; 22)에 의해 접속되어 있다. 또, 이하에 있어서, 각 타입의 PE(17)를 나타내는 경우에는, LDB, LDX 등의 각 타입의 명칭을 나타낸다.
각각의 세그먼트의 배치는 다르다. 예컨대, 세그먼트(a1-d1)에는 LDB 또는 LDX가 배치되고, 세그먼트(a4-d4)에는 STB 또는 STX가 배치되어 있다. PE 매트릭스(10)에 구성되는 데이터 플로우(데이터 패스)에서의 기본적인 신호의 흐름은 세그먼트(a1, b1, c1, d1)로부터 세그먼트(a4, b4, c4, d4)가 된다.
도 4에, 세그먼트(a1∼a4 및 b1∼b4)의 PE(17)의 배치의 일례를 나타내고 있다. 도 5에는, 세그먼트(a1)의 배치를 확대하여 나타내고 있다. 각 세그먼트 내의 데이터 처리용 PE(17e)는 기본적으로 8열×8행 구성으로 되어 있다. 즉, 세그먼트의 좌측 상방을 열 c0, 행 r0, 우측 하방의 PE를 열 c9, 행 r9로 했을 때에, 데이터 처리용 PE(17e)는 열 c1∼c8 및 행 r1∼r8의 범위에 배치되어 있다. DLH 및 DLV를 제외하는 PE(17e)의 좌측 상방의 것이, 열 c1, 행 r1에 배치된다. 다만, MUL, SFT, RMC 등 2계통의 데이터 출력을 갖는 PE(17e), 및 RAM은 2열, 즉, 최소 PE(17)의 2개분의 영역이 할당되어 있다. STB 및 LDB에는 4열분, 즉, 최소 PE(17)의 4개분의 영역이 할당되어 있다.
또한, 데이터 전송용 PE(17c)인 DLV 및 DLH는, 열 c0 및 c9, 행 r0 및 r9에 배치된다. 또, 각 세그먼트의 4코너에는 DLV 및 DLH는 존재하지 않는다. 또한, 도 4에 나타낸 바와 같이, 상하 좌우의 단부에 위치하는 세그먼트에서는, 상하 행의 DLV 또는 좌우 열의 DLH는 존재하지 않는다. 즉, 네 코너의 세그먼트(a1, a4, d1 및 d4)에서는, 상하 한쪽의 행(r0 또는 r9)에 DLV는 존재하지 않고, 좌우 한쪽의 열(c0 또는 c9)에 DLH는 존재하지 않는다. 세그먼트(b1, c1)에서는 상방의 행 r0에 DLV는 존재하지 않는다. 세그먼트(b4, c4)에서는, 하방의 행 r9에 DLV는 존재하지 않는다. 세그먼트(a2, a3)에서는 좌측의 열 c0에 DLH는 존재하지 않고, 세그먼트(d2, d3)에서는 우측의 열 c9에 DLH는 존재하지 않는다.
도 6에, 인트라 세그먼트 커넥션(세그먼트 내 접속, 제 1 레벨의 버스, 제 1 레벨의 라우팅 매트릭스; 21)을 나타내고 있다. 제 1 레벨의 버스(21)는, 세그먼트 내의 PE를 접속하는 가로방향(수평방향)의 버스(21h) 및 세로방향(수직방향)의 버스(21v)와, 버스(21h 및 21v)를 접속하기 위한 스위치(셀렉터, 버스 셀렉터, H-to-V셀렉터; 21s)를 포함한다.
도 6은, 세그먼트 내의 4열×2행의 영역, 예컨대, 열 c1∼c4 및 행 r1∼r2를 발췌한 것이다. 가로방향의 버스(21h)는, 동일 행에 배치된 각 PE(17)의 출력과 좌우로 인접하는 세그먼트의 DLH의 출력을 접속하기 위한 버스이다. 세로방향의 버스(21v)는, 동일 열에 배치된 셀렉터(21s)의 출력과, 상하로 인접하는 세그먼트의 DLV의 출력을 접속하기 위한 버스이다. 셀렉터(21s)는, 세로방향의 버스(21v)와 가로방향의 버스(21h)의 각 교점에 배치되어 있고, 도 6과 같이 동일 열상의 홀수 및 짝수의 행(행 2N-1 및 2N)이 쌍(pair)으로 이루어지도록 구성되어 있다. 각 코너의 셀렉터(21s)는, 각 행(가로방향의 버스; 21h)으로부터 2출력을 세로방향의 버스(21v)에 출력한다. 제 1 레벨의 버스(21)는, 또한 각 PE(17)에 대응하고, 세로방향의 버스(21v)와 각 PE(17)를 접속하기 위한 셀렉터(PE 입력 셀렉터; 21t)를 포함한다.
이들 버스(21h 및 21v)를 포함하는 제 1 레벨의 버스(21)에 의해 접속할 수 있는 범위, 즉, 각 세그먼트(S) 내의 PE 사이(접속원 PE의 FF(플립플롭) 또는 레지스터와, 접속처 PE의 FF 또는 레지스터와의 사이)에서는 1 사이클(1 클록 사이클) 이내에 데이터를 송수신할 수 있다. 따라서, 신호가 전파되는 타이밍(레이턴시)적으로는, 예컨대 세그먼트(a1)에 포함되는 PE는 모두 등가이다. 이에 따라, 동일 세그먼트 내이면, 회로를 구성하기 위해서, 어느 쪽의 PE를 선택하여 기능을 할당하여도 사전의 타이밍을 검토할 필요는 없다. 타이밍적으로는, 어떤 세그먼트 내의 복수의 PE를 이용하여, 소정의 회로를 자유롭게 배치 및 배선할 수 있다.
도 7에, 제 2 레벨의 라우팅 매트릭스(22)의 구성을 나타내고 있다. 도 7에서는, 제 2 레벨의 라우팅 매트릭스(22)에 의해, 인접하는 세그먼트(도 7에서는 세그먼트(a1 및 b1))에 각각 포함되어 있는 접속용 PE(17c)에 포함되는 DLH를 접속하고 있다. 도 7에 나타낸 각각의 DLH는, 각각의 세그먼트(S1 및 S4) 내부의 제 1 레벨의 라우팅 매트릭스(intra-segment interconnect; 21)에 접속되어 있다. 따라서, 세그먼트(S1)에 포함되는 PE(17)와, 세그먼트(S4)에 포함되는 PE(17)를 제 2 레벨의 라우팅 매트릭스(inter-segment interconnect; 22)를 통해 접속할 수 있다. 접속용 딜레이 엘리먼트(connecting delay element, 17c)인 DLH는, 제 1 레벨의 라우팅 매트릭스(21)에 포함되는 버스의 인터페이스로서 기능한다. 따라서, 제 1 레벨의 라우팅 매트릭스(21)에 포함되는 버스를, 세그먼트마다 독립적으로 사용할 수 있다. 한편, 세그먼트 사이에서 데이터를 입출력할 필요가 있을 때에는, 접속용 DLH에 포함되는 FF(플립플롭, 레지스터)를 통해 데이터를 입출력한다. 이에 따라, 세그먼트간의 제 2 레벨의 라우팅 매트릭스(22)를 통해 신호가 전달되면, 클록에 동기한 1사이클의 지연이 새롭게 가해진다. 상하로 배치된 세그먼트(S)의 접속도 접속용 PE(17c)인 DLV를 통해 마찬가지로 행해진다.
제 1 레벨의 라우팅 매트릭스(21)만을 이용하여 PE(17)를 접속하는 경우, PE(17) 사이의 지연시간(지연, 레이턴시)은 1 클록 사이클(제 1 지연)의 범위내에서 접속되는 것이 보증된다. 따라서, 타이밍의 검증은 필요없다. 이에 비해, 제 2 레벨의 라우팅 매트릭스(22)를 통해 PE(17)를 접속하는 경우에는, 적어도 1 클록 사이클의 지연이 여분으로 가해진다. 제 2 레벨의 라우팅 매트릭스(22)를 통해 접속하는 경우의 지연시간은, 딜레이 엘리먼트 DLH의 설정에 의존하며, 지연량(지연시간)은 제어할 수 있다. 예컨대, DLH의 지연량을 제어함으로써, 제 2 라우팅 매트릭스(22)를 2회 사용하는 신호와, 제 2 라우팅 매트릭스(22)를 1회 사용하는 신호를 싱크로나이즈(synchronize)할 수 있다. 다른 접속용 딜레이 엘리먼트 DLV를 통해 인접하는 세그먼트(S)를 접속할 때에도 마찬가지이다.
도 7에 나타낸 DLH에서는, PE 매트릭스(10)의 가로방향의 버스(H 버스; 21h)의 신호를 이웃하는 세그먼트에 전달하는 기능을 가진다. 각각의 DLH는, 24입력 8출력이다. 24개의 입력은, 쌍으로 이루어지는 홀수 및 짝수 행의 각 PE(17)로부터의 출력(행당 8출력의 2배, 합계 16)과, 같은 세그먼트 내에서 대향하는 DLH의 4개의 출력의 배(倍)(합계 8)를 포함한다. 각각의 DLH는, 이들 24의 입력으로부터 8개의 출력을 선택하고, 제 2 레벨의 라우팅 매트릭스(22)를 통해 이웃하는 세그먼트의 DLH에 출력한다. DLV에 있어서도 기본적인 구성은 동일하다.
도 4 및 도 5에 나타낸 매트릭스(10)에 배치된 PE(17) 중, ALU, ALC, ALS, MUL, BTC, RMC 및 SFT로 나타낸 타입의 PE(17)는, 20 종류의 산술연산, 논리연산 및 2 입력의 비교기능을 갖는다. 데이터의 입출력은 16비트 데이터의 2입력, 1출력이다. 승산기(multiplier)는 16비트 데이터의 입력, 32비트 데이터의 출력이다. 이들 PE(17)는 일반적으로 ‘ALU 엘리먼트’라고 불리지만, 각각 고유의 연산기능을 포함한다. 예컨대, ALU와 ALC는 동일한 연산처리를 포함하지만, 내부에 고정값을 갖는지 여부의 차이가 있다. ALC는 1개의 16비트의 고정값을 내장하고, ALU는 고정값을 내장하지 않는 대신에, 인접하는 ALC의 고정값을 이용한다. ALS는, 1개의 16비트 고정값을 내장하고, FF1(Find the First 1), SN1(Sum of Number of 1), S2P(Serial To Parallel), P2S(Parallel To Serial) 등의 특수처리를 서포트한다. MUL은 승산기를 내장한다. BTC는 비트 단위로 출력 데이터를 설정한다. 출력 16비트에 대하여, 각각의 출력 비트에 입력 32비트로부터 임의의 1비트를 선택할 수 있다. RMC는 2입력 2출력의 PE이며, 비트의 로테이트(rotate), 마스크(mask) 처리 및 비교 처리를 실행한다. 또한, 16비트의 고정값을 공급한다. SFT는 32비트의 시프트(shift) 처리를 행한다.
DLE로 나타낸 타입의 PE(17)는, 레이턴시의 조정과 세그먼트간의 데이터 핸드오버에 사용되는 지연 엘리먼트이다. DEL 데이터의 입출력은 1입력 1출력이다. 지연 엘리먼트에는, 지연 조정용 PE(17e)로서 DLE, 세그먼트간의 데이터 핸드오버 전용 PE(17c)인 DLH 및 DLV가 포함된다.
RAM으로 나타낸 타입의 PE(17)는 DNA 매트릭스(10)의 내부 메모리이다. RAM은, 8K 바이트×54개 및 16K 바이트×1개의 합계 448K 바이트의 메모리 영역을 포함한다. 상기 메모리 영역에서는, DNA 컨피규레이션을 전환하여도 값은 유지된다. RAM 엘리먼트에는 RAMS, RAMD, RAMV의 3종류가 포함된다.
C16L, C16S, C32L, C32S, C32E 및 C16E로 나타낸 타입의 PE(17)는, 카운터 엘리먼트로서, DNA 버퍼에 대한 어드레스 제너레이터, 메인 메모리에 대한 어드레스 제너레이터, 및 범용 카운터로서 사용된다. C16L 및 C16S는 DNA 버퍼에 대한 어드레스 제너레이터로서, 카운터 기능(16비트 카운터를 2개)을 가지고, ALU 엘리먼트와 병용하여 보다 복잡한 어드레스 패턴을 생성할 수가 있다. C32L 및 C32S는, 메인 메모리에 대한 어드레스 제너레이터로서, 카운터 기능(32비트 카운터를 2개)을 가지고, ALU 엘리먼트와 병용하여 보다 복잡한 어드레스 패턴을 생성할 수가 있다. C32E 및 C16E는, 각각, 32비트 및 16비트의 범용 카운터이다.
LDB로 나타낸 타입의 PE(17)는, 메인 메모리(19)로부터 PE 매트릭스(10)에 데이터를 입력하는 DNA 로드 버퍼로서, 입력 인터페이스 엘리먼트에 상당한다. LDB는, 4버퍼 구성이며, 1뱅크가 8K 바이트 용량의 버퍼를 포함한다. STB는, PE 매트릭스(10)로부터 메인 메모리(19)로 데이터를 출력하는 DNA 스토어 버퍼(store buffers)로서, 출력 인터페이스 엘리먼트에 상당한다. STB로 나타낸 타입의 PE(17)는, 2버퍼 구성이며, 1뱅크가 8K 바이트 용량의 버퍼를 포함한다. LDX는, 다이렉트 I/O를 통해 다른 DNA로부터 데이터를 입력하고, 다이렉트 I/O를 통해 다른 DNA로 데이터를 출력한다.
도 8은, ALU로 나타낸 타입의 PE(17; 이하에서는 ALU 엘리먼트)의 블록 다이어그램이다. dix 및 diy는 데이터 입력으로서, 셀렉터(21t)에 의해 세로방향의 버스(21v)로부터 선택되는 입력을 나타낸다. do는 데이터 출력으로서, 가로방향의 버스(21h)로의 출력을 나타낸다. 다른 엘리먼트에서도 마찬가지이다. dic는, ALU 엘리먼트의 입력 인터페이스로서, 거의 동등한 기능을 구비한 엘리먼트인 ALC 엘리먼트의 레지스터에 스토어된 고정값(이미디에이트, immediate)으로부터의 입력을 나타낸다. ALC 엘리먼트는, 고정값을 스토어할 수 있는 레지스터(101)를 제외하고, 거의 ALU 엘리먼트와 동일한 구성으로 되어 있다. doc는, ALU 엘리먼트의 출력 인터페이스이다. cix 및 ciy는 캐리 입력(carry inputs)이며, co는 캐리 출력이다. PE 매트릭스(10)는, 도 6 및 도 7에서 나타낸 데이터 버스와 동일한 구성의 캐리용 버스를 구비하고 있다. 도 8에서 이중선으로 둘러싸인 사각형은 레지스터를 나타낸다. 이하의 각 PE(17)의 블록 다이어그램에 있어서도 마찬가지이다.
셀렉터(102)는, ALU(113)의 입력(X)으로서, 데이터(dix)와, 레지스터(101)의 정수(콘스턴트, constant)를 선택한다. 셀렉터(103)는, ALU(113)의 입력(Y)의 지연을 설정한다. 셀렉터(104)는, 입력(Y)의 캐리의 지연을 설정한다. 셀렉터(105 및 106)는, 입력(X 및 Y)을 교환(스와프, swap)하기 위한 것이다. 셀렉터(107)는, 입력(X)의 피드백을 설정하기 위한 것이고, 스와프된 입력(X)의 토큰 또는 입력(Y)의 캐리를 선택한다. 셀렉터(108)는, 입력(X)을 선택하기 위한 것이고, ALU의 출력을 피드백할 수 있다. 셀렉터(109)는, ALU(113)를 바이패스(bypass)하기 위한 것이다. 셀렉터(112)는, 상기 PE(17)의 출력을 선택하기 위한 것이다. 셀렉터(110)는, ALU(113)의 입력쪽의 캐리를 선택하기 위한 것이고, 캐리 입력(지연도 포함)과, 입력(X 또는 Y)의 토큰(token)(스와프된 것도 포함)이 선택대상이 된다. 셀렉터(111)는, 상기 PE(17)로부터 출력되는 캐리를 선택하기 위한 것이고, ALU(113)의 입력 캐리, ALU(113)의 출력 캐리, ALU(113)를 비교기로서 사용했을 때의 캐리, 입력(Y)의 캐리가 선택 대상이 된다.
또한, 도 8의 ALU 엘리먼트는, 엘리먼트 내의 처리내용(기능 및 접속)을 제어하기 위한 제어유닛(15)을 포함한다. 제어유닛(15)은, 컨피규레이션 메모리 시스템(11)을 구성하는 컨피규레이션 레지스터 시스템(12)과, 커맨드 디코드 시스템(55)을 포함한다. 제어유닛(15)은, 전송 시스템(13)에 의해 ALU 엘리먼트의 컨피규레이션 레지스터 시스템(12)에 전송되고, 유효하게 된 컨피규레이션 데이터에 의해 ALU 엘리먼트의 기능을 전환하여 제어한다. 예컨대, 제어유닛(15)은, 유효한 컨피규레이션 데이터에 근거하여, ALU 엘리먼트에 포함되는 셀렉터의 설정을 행하고, ALU(113) 등의 논리연산 소자의 기능을 전환하여, ALU 엘리먼트에서 원하는 데이터 처리가 이루어지도록 한다. 따라서, 레지스터 시스템(12)에서 유효하게 되는 컨피규레이션 데이터에 의해, ALU 엘리먼트의 기능을 1 클록 사이클로 전환할 수 있다. 다른 PE(17)에 대해서도 마찬가지이다.
제어유닛(15)의 커맨드 디코드 시스템(55)은, 세그먼트 내의 커맨드 전달 매트릭스(제 1 레벨의 커맨드 전달 매트릭스; 51)를 통해 전송된 커맨드를 디코드한다. 커맨드가, 컨피규레이션 레지스터(12)에 있어서 유효한 컨피규레이션 데이터에 관련되어, 데이터 플로우를 식별하기 위한 정보(EID)와 일치하는 EID를 포함하고 있으면, 그 커맨드에 근거하여 ALU 엘리먼트를 제어한다. 예컨대, 스톱 커맨드이면, ALU 엘리먼트의 클록을 정지하여, 모든 기능을 스톱시킨다. 다른 PE(17)에 대해서도 마찬가지이다.
도 9는, LDB로 나타낸 타입의 PE(17; 이하에서는 LDB 엘리먼트)의 블록 다이어그램이다. LDB 엘리먼트는, 메인 메모리(19)로부터 PE 매트릭스(DNA 매트릭스; 10)로의 데이터 전송용 버퍼를 포함하는 입력 인터페이스 엘리먼트이다. LDB 엘리먼트는, PE 매트릭스(10)에 재구성된 데이터 플로우로의 입력 데이터를 일시적으로 저장하기 위한 저장영역(29a)을 구비하고 있다. 저장영역(29a)은, 각각 8K 바이트의 4개의 뱅크(29x)를 구비하고 있다. 4개의 뱅크(29x) 중 1개는 백그라운드 뱅크(background bank)(메인 메모리(19)로부터의 입력 뱅크)로서 기능하고, 1개는 포어그라운드 뱅크(foreground bank)(PE 매트릭스(10)로의 출력 뱅크)로서 기능한다.
LDB 엘리먼트는 뱅크 컨트롤 유닛(29b)을 포함한다. 뱅크 컨트롤 유닛(29b)은, 4개의 뱅크(29x)를 독립적으로 동작시켜, 데이터의 입력 및/또는 출력 종료에 동기하여 뱅크 전환을 발생하고, 저장영역(29a)이 DNA 매트릭스(10)의 PE(17) 또는 데이터 플로우로부터 1 클록마다 액세스할 수 있도록 한다. 이들 뱅크(29x)를 구비한 저장영역(29a)은, LDB 엘리먼트로부터 데이터를 수용하는 데이터 플로우에 대하여 순차적으로(sequentially) 데이터를 제공한다.
또한, DNA 매트릭스(10)로부터 C16L 엘리먼트에서 어드레스를 생성함으로써, 저장영역(29a)의 뱅크(29x)에 랜덤 액세스가 가능하다. 또한, 동일 EID(데이터 플로우 식별정보)에 의해, 복수 채널 사이에서 동기 동작이 가능하다. 또한, 메인 메모리(19)로부터 DNA 매트릭스(10)로의 전송용 버퍼로서 이용하는 것 이외에, 루프백 기능(loop back function)을 사용하여 DNA 매트릭스(10) 내부의 데이터를 기입하는 버퍼로서 이용할 수 있다.
LDB 엘리먼트의 뱅크 컨트롤 유닛(29b)은, 커맨드 생성유닛으로서의 기능을 구비하고 있으며, 플로우 스톱 신호를 생성 및 출력하는 기능을 포함한다. LDB 엘리먼트로부터 출력되는(판독되는) 데이터를 처리하는 데이터 플로우(데이터 패스)를 정지시키고 싶은 경우에는 LDB 엘리먼트의 뱅크 컨트롤 유닛(29b)은, 그 처리를 위해 PE 매트릭스(10)에 재구성된 데이터 플로우를 나타내는 EID와 플로우 스톱 신호를 구비한 플로우 스톱 커맨드(스톱 커맨드, 플로우 스톱 리퀘스트; Cs)를 생성하여 출력한다. 이에 따라 LDB 엘리먼트는, 출력제어유닛(122)을 통해 데이터를 판독하는 원하는 데이터 플로우를 정지할 수 있다.
외부 메모리(19)로부터 LDB 엘리먼트에 데이터를 입력하는(기입하는) 처리를 행하는 데이터 플로우(데이터 패스)를 정지시키고 싶은 경우에는, 이를 위해 PE 매트릭스(10)에 재구성된, 외부 메모리(19)의 판독용 데이터 플로우(data flow for reading)를 나타내는 EID와, 플로우 스톱 신호를 구비한 커맨드(Cs)를 LDB 엘리먼트의 뱅크 컨트롤 유닛(29b)이 출력한다. 이에 따라, LDB 엘리먼트는 입력제어유닛(121)을 통해 데이터를 입력하고 있는 원하는 데이터 플로우를 정지할 수 있다. LDB 엘리먼트도, ALU 엘리먼트와 동일한 기능을 구비한 제어유닛(15)을 구비하고 있다.
LDB 엘리먼트는, 저장영역(29a)의 판독, 기입 및 뱅크(29x)의 전환을 행하기 위한 기입 카운터(123)와, 판독 카운터(126)와, 문턱치를 저장하기 위한 입력 카운트 레지스터(124) 및 출력 카운트 레지스터(125)와, 액세스의 데이터 단위를 기억하기 위한 레지스터(127)를 포함한다.
도 10은, STB로 나타낸 타입의 PE(17; 이하에서는 STB 엘리먼트)의 블록 다이어그램이다. STB 엘리먼트는, DNA 매트릭스(10)로부터 메인 메모리(19)로의 데이터 전송용 버퍼를 포함하는 출력 인터페이스 엘리먼트이다. STB 엘리먼트는, 데이터 플로우로부터 출력된 데이터를 일시적으로 저장하기 위한 저장영역(28a)을 포함한다. 저장영역(28a)은, 각각 8K 바이트의 뱅크(28x)를 2개 구비하고 있다. 2개의 뱅크(28x) 중 1개는 백그라운드 뱅크(메인 메모리(19)로 출력하는 뱅크)로서 기능하고, 다른 1개는 포어그라운드 뱅크(PE 매트릭스(10)로부터 입력하기 위한 뱅크)로서 기능한다.
STB 엘리먼트는 뱅크 컨트롤 유닛(28b)을 포함한다. 뱅크 컨트롤 유닛(28b)은 2개의 뱅크(28x)를 독립적으로 동작시켜, 데이터의 입력 및/또는 출력 종료에 동기하여 뱅크 전환을 발생하고, 저장영역(28a)이 DNA 매트릭스(10)의 PE(17) 또는 데이터 플로우로부터 1 클록마다 액세스할 수 있도록 한다.
STB 엘리먼트의 뱅크 컨트롤 유닛(28b)도, 커맨드 생성유닛으로서의 기능을 구비하고 있으며, 플로우 스톱 신호를 생성하는 기능을 포함한다. STB 엘리먼트로부터 메인 메모리(19)에 출력되는(판독되는) 데이터의 처리를 행하는 데이터 플로우(데이터 패스)를 정지시키고 싶은 경우에는, 그 처리를 위해 PE 매트릭스(10)에 재구성된 데이터 플로우를 나타내는 EID를 포함하는 스톱 커맨드(Cs)를 뱅크 컨트롤 유닛(28b)이 생성하여 출력한다. 입력제어유닛(131)에 접속되어, STB 엘리먼트에 데이터를 입력하는(기입하는) 처리를 행하는 데이터 플로우(데이터 패스)를 정지시키고 싶은 경우에는, 이를 위해 데이터 플로우를 나타내는 EID를 포함하는 스톱 커맨드(Cs)를 뱅크 컨트롤 유닛(28b)이 생성하여 출력한다. 따라서, LDB와 마찬가지로, 뱅크 컨트롤러(28b)는, 플로우 스톱 신호와 EID를 구비한 스톱 커맨드(Cs)에 의해, 원하는 데이터 플로우를 정지할 수 있다.
STB 엘리먼트도 제어유닛(15)을 구비하고 있다. STB 엘리먼트의 제어유닛(15)은, 컨피규레이션 레지스터 시스템(12)과, 커맨드 디코드 시스템(55)과, 또한 커맨드 출력유닛(커맨드 릴레이 유닛; 59)을 포함한다. 커맨드 릴레이 유닛(59)은, STB 엘리먼트의 내부에서 발생한 스톱 커맨드(Cs)와, LDB 등의 내부에서 발생한 스톱 커맨드(Cs)와의 논리합을 취하고, 통합된 스톱 커맨드(Cs)를 세그먼트 외부의 커맨드 전달 매트릭스(제 2 레벨의 커맨드 전달 매트릭스; 52)에 출력한다.
STB 엘리먼트는, 또한 저장영역(28a)의 판독, 기입 및 뱅크(28x)의 전환을 행하기 위한 기입 카운터(133)와, 판독 카운터(136)와, 문턱치를 저장하기 위한 입력 카운트 레지스터(134) 및 출력 카운트 레지스터(135)와, 액세스의 데이터 단위를 기억하기 위한 레지스터(137)를 포함한다.
도 11에, RAM으로 나타낸 타입의 PE(17; 이하에서는 RAM 엘리먼트)의 블록 다이어그램을 나타내고 있다. 도 11에 나타낸 RAM 엘리먼트는 RAMD 엘리먼트이다. RAMD 엘리먼트는 PE 매트릭스(10)에 내장된 듀얼 포트 메모리이다. RAMD 엘리먼트는, 듀얼포트 RAM(27a)과, 리드/라이트 컨트롤러(27b)와, 컨피규레이션 데이터에 의해 RAMD 엘리먼트의 기능을 제어하기 위한 제어유닛(15)을 포함한다.
RAMD 엘리먼트는, 컨피규레이션 데이터에 의해, 어드레스 디코드 모드, 듀얼포트 16비트 모드, 히스토그램(histogram) 모드, 16비트 FIFO 모드, 딜레이(delay) 모드에서의 사용이 가능하다. 이에 따라, 데이터 플로우에 있어서, 라인(line) 버퍼, FIFO 등의 일시적인 데이터 유지, 룩업테이블, 히스토그램처리 등을 위해 이용할 수 있다. 또한, RAMD 엘리먼트는, RISC2의 메모리 공간에 내장되어 있기 때문에, PE 매트릭스(10)에 구성되는 데이터 플로우와는 별도로, RISC2는 RAM(27a)을 직접 읽고 쓸 수가 있다. 데이터 플로우의 액세스와 직접 액세스가 동시에 행하여진 경우, 직접 액세스가 우선된다.
RAMD 엘리먼트는 커맨드 생성유닛(69)을 포함한다. 커맨드 생성유닛(69)은, 리드/라이트 컨트롤러(27b)로부터 출력된 스톱 신호와, 제어유닛(15)에 있어서 유효한 컨피규레이션 데이터에 포함되는 EID를 포함하는 스톱 커맨드(Cs)를 출력한다. FIFO 모드 등에 있어서, RAMD 엘리먼트의 커맨드 생성유닛(69)은, 상류의 데이터 플로우의 처리속도와, 하류의 데이터 플로우의 처리속도와의 속도차가 커지면, 상류의 데이터 플로우의 EID 또는 하류의 데이터 플로우의 EID를 포함하는 플로우 스톱 커맨드(Cs)를 출력한다.
도 12에, DLE로 나타낸 타입의 PE(17; 이후에서는 DLE 엘리먼트)의 블록 다이어그램을 나타내고 있다. DLE 엘리먼트는 PE 매트릭스(10)에 재구성되는 데이터 플로우 내의 데이터 및 캐리의 지연값을 조정한다. DLE 엘리먼트는, 지연회로(26a)와, 지연량을 제어하기 위한 모드제어유닛(26b)과, 컨피규레이션 데이터에 의해 모드를 제어하기 위한 제어유닛(15)을 포함한다.
DLE 엘리먼트에서는, 데이터는 1∼8의 지연 조정이 가능하고, 캐리는 1∼16의 지연 조정이 가능하다. 또한, DLE 엘리먼트는 FIFO 기능을 구비하고 있다. 따라서, PE 매트릭스(10)에 있어서, 데이터 및 캐리간의 타이밍 조정, 데이터의 완충 버퍼 등으로서 이용할 수 있다.
DLE 엘리먼트도 커맨드 생성유닛(69)을 포함한다. 커맨드 생성유닛(69)은, 모드제어유닛(26b)으로부터 출력된 스톱 신호와, 제어유닛(15)에 있어서 유효한 컨피규레이션 데이터에 포함되는 EID를 포함하는 스톱 커맨드(Cs)를 출력한다. FIFO 모드 등에 있어서, DLE 엘리먼트의 커맨드 생성유닛(69)은, 상류의 데이터 플로우의 처리속도와, 하류의 데이터 플로우의 처리속도와의 속도차가 커지면, 상류의 데이터 플로우의 EID 또는 하류의 데이터 플로우의 EID를 포함하는 플로우 스톱 커맨드(Cs)를 출력한다.
상기 디바이스(1)는, 또한, 커맨드를 각 PE(17)에 전달하기 위한 커맨드 전달 시스템(50)과, PE(17)의 일부에 의해 생성된 커맨드를 수집하여 커맨드 전달 시스템(50)에 전달하기 위한 커맨드 수집 시스템(60)을 가진다. 도 13은, 커맨드 전달 시스템(50) 및 커맨드 수집 시스템(60)의 개요를 나타내고 있다.
도 13은, 간단히 하기 위해, PE 매트릭스(10)의 16개의 세그먼트(S) 중, 세그먼트(a1∼a4)를 추출하여 나타내고 있는데, 다른 세그먼트에 있어서도 마찬가지이다. PE 매트릭스(10)에 배치된 PE(17) 및 라우팅 매트릭스(21 및 22)에 의해, 굵은 선으로 나타낸 바와 같은 데이터 플로우(데이터 패스; 70)가 구성된다. 이 예의 데이터 플로우(70)에서는, 세그먼트(a1)의 LDB를 통해 데이터가 입력되고, 세그먼트(a4)의 STB를 통해 데이터가 출력된다. 데이터 플로우(70)를 구성하기 위해서, 세그먼트 내의 ALU 등의 PE(17)가 인트라 세그먼트 커넥션(21)에 의해 접속되고, 세그먼트간에는 DLV 쌍을 통해 인터 세그먼트 커넥션(22)에 의해 접속된다. PE 매트릭스(10)에 재구성되는 데이터 플로우(70)는, 이것에 한정되지 않고, 또한, 재구성되는 데이터 플로우(70)의 수는 1개에 한정되지 않으며, 많은 경우에서는 복수의 데이터 플로우가 재구성된다. PE에는 LDB, STB, RAMD, DLE도 포함되지만, 이들 엘리먼트는 플로우 스톱 커맨드(Cs)의 발생원(생성소스)이 되는 PE(17)이므로, 개별적으로 나타내고 있다.
커맨드 전달 시스템(50)은, PE 매트릭스(10)에 포함되는 복수의 PE(17)의 각각에, 스톱 커맨드(Cs) 및 다른 커맨드를 전달하기 위한 시스템이다. 커맨드 전달 시스템(50)은, 세그먼트(a1∼a4)의 각각에 설치된 전달용 커맨드 레지스터(레지스터, 플립플롭, FF; 53)와, 세그먼트(a1∼a4)의 각각의 내부에 배치된 복수의 PE와 전달용 커맨드 레지스터(53)를 접속하기 위한 제 1 레벨의 커맨드 전달 매트릭스(커맨드 전달용 접속, 커맨드 전달용 버스, 커맨드 전달용 배선; 51)를 포함한다. 커맨드 전달 시스템(50)은, 세그먼트마다 설치된 복수의 전달용 커맨드 레지스터(53)와 커맨드 릴레이(command relay) 유닛(커맨드 출력유닛; 59)을 접속하는 제 2 레벨의 커맨드 전달 매트릭스(52)를 더 포함한다.
커맨드 레지스터(레지스터 유닛; 53)는 FF로 표시되어 있는 바와 같이, 전형적으로는 멀티 비트의 플립플롭(FF) 또는 래치유닛으로 이루어진 레지스터를 포함하며, 커맨드를 전송하기 위한 다른 논리 게이트를 포함하고 있어도 된다. 커맨드 레지스터(53)는, 스톱 커맨드(Cs) 및 다른 커맨드를 클록 사이클 단위로 입력 및 출력하고, 커맨드를 클록 사이클에 동기하여 전송하기 위해 사용된다.
커맨드 전달 시스템(50)에 있어서는, STB의 커맨드 출력유닛(59)의 커맨드 레지스터(59f)와, 각 세그먼트(a1∼a4)의 전달용 커맨드 레지스터(53)가 제 2 레벨의 커맨드 전달 매트릭스(52)에 의해 접속되어 있다. 제 2 레벨의 커맨드 전달 매트릭스(52)는, 1 클록 사이클의 범위 내에 있어서, STB의 커맨드 출력유닛(59)의 커맨드 레지스터(59f)로부터 각 세그먼트(a1∼a4)의 전달용 커맨드 레지스터(53)로 데이터(커맨드)를 전달(전송)한다.
각 세그먼트(a1∼a4)에 있어서는, 전달용 커맨드 레지스터(53)가 세그먼트 내에 배치되며, 제 1 레벨의 커맨드 전달 매트릭스(51)에 의해 세그먼트 내의 모든 PE와 접속되어 있다. 각 세그먼트(a1∼a4)에 있어서는, 동일 세그먼트 내에 배치된 모든 PE(17)는, 그 세그먼트 내의 PE(17)와 1 클록 사이클의 범위내에서 데이터가 전달(전송)된다. 따라서, 제 1 레벨의 커맨드 전달 매트릭스(51)에 의해, 각 세그먼트의 PE(17)에 대하여, 동일 세그먼트 내에 설치된 커맨드 레지스터(53)로부터 1 클록 사이클의 범위내에서, 데이터(커맨드)가 전달(전송)된다.
즉, 각 세그먼트(a1∼a4)에 배치된 모든 PE는, 각 세그먼트의 커맨드 레지스터(53)에 래치된 커맨드에 의해, 다음 클록 사이클에서 제어된다. 따라서, 커맨드 전달 시스템(50)에 의해, PE 매트릭스(10)에 배치되어 있는 모든 PE는, STB의 커맨드 출력유닛(59)의 커맨드 레지스터(59f)가 커맨드를 래치한 후 2클록 사이클째에서 커맨드에 의해 동기하여 제어된다.
커맨드 전달 시스템(50)은, 상기한 바와 마찬가지로, RISC 모듈(2) 등으로부터 공급되는 다른 커맨드도 PE 매트릭스(10)의 모든 PE에 동기하여 전달할 수 있다.
커맨드 수집 시스템(60)은, PE 매트릭스(10)의 커맨드 생성원인 PE(17)로부터 스톱 커맨드(Cs) 및 다른 커맨드를 수집하기 위한 시스템이다. 커맨드 수집 시스템(60)은, 세그먼트(a1∼a4)의 각각에 설치된 수집용 커맨드 레지스터(레지스터, 플립플롭, FF; 63)와, 세그먼트(a1∼a4)의 각각의 내부에 배치된 복수의 PE(17) 중 일부의 PE로서, 커맨드 발생원이 되는 PE와 수집용 커맨드 레지스터(63)를 접속하기 위한 제 1 레벨의 커맨드 수집 매트릭스(커맨드 수집용 접속, 커맨드 수집용 버스, 커맨드 수집용 배선; 61)를 포함한다. 커맨드 수집 시스템(60)은, 세그먼트마다 설치된 복수의 수집용 커맨드 레지스터(63)와 커맨드 릴레이 유닛(커맨드 출력유닛; 59)을 접속하기 위한 제 2 레벨의 커맨드 수집 매트릭스(62)를 더 포함한다.
수집용 커맨드 레지스터(63)는, 전달용 커맨드 레지스터(52)와 마찬가지로, 전형적으로는 멀티 비트의 플립플롭(FF) 또는 래치유닛으로 이루어진 레지스터를 포함하며, 커맨드를 전송하기 위한 다른 논리 게이트를 포함하고 있어도 된다. 커맨드 레지스터(63)는, 스톱 커맨드(Cs) 및 다른 커맨드를 클록 사이클 단위로 입력 및 출력하고, 커맨드를 클록 사이클에 동기하여 전송하기 위해 사용된다.
커맨드 수집 시스템(60)에서는, 수집용 커맨드 레지스터(63)가 세그먼트 내에 배치되며, 제 1 레벨의 커맨드 수집 매트릭스(61)에 의해 세그먼트 내의 모든 커맨드 발생원이 되는 PE와 접속되어 있다. 이에 따라, 각 세그먼트(a1∼a4)에 있어서는, 제 1 레벨의 커맨드 수집 매트릭스(61)에 의해, 커맨드 발생원의 각 PE로부터, 동일 세그먼트 내에 설치된 커맨드 레지스터(63)로 1 클록 사이클의 범위내에서, 데이터(스톱 커맨드)를 수집할 수 있다.
STB의 커맨드 출력유닛(59)의 커맨드 레지스터(59f)와, 각 세그먼트(a1∼a4)의 수집용 커맨드 레지스터(63)는 제 2 레벨의 커맨드 수집 매트릭스(62)에 의해 접속되어 있다. 제 2 레벨의 커맨드 수집 매트릭스(62)는, 1 클록 사이클의 범위 내에 있어서, 각 세그먼트(a1∼a4)의 수집용 커맨드 레지스터(63)로부터 STB의 커맨드 출력유닛(59)의 커맨드 레지스터(59f)로 데이터(커맨드)를 전달(전송)한다. 따라서, 커맨드 수집 시스템(60)에 의해, PE 매트릭스(10)에 배치되어 있는 커맨드 발생원인 모든 PE(17)로부터, STB의 커맨드 출력유닛(59)의 커맨드 레지스터(59f)에, 2클록 사이클로 커맨드가 전달(수집)된다.
상기 디바이스(1)에 있어서는, 커맨드를 발생하는 PE(17)가 속하는 세그먼트의 PE(17)에 대해서도 커맨드 수집 시스템(60) 및 커맨드 전달 시스템(50)을 통해 커맨드가 전달된다. 또한, 커맨드를 발생하는 PE(17) 자신에 있어서도, 커맨드를 수령하는 제어유닛(15)에 대해서는, 커맨드 수집 시스템(60) 및 커맨드 전달 시스템(50)을 통해 커맨드가 전달된다. 따라서, PE 매트릭스(10)에 속하는 모든 PE(17)에 있어서, PE(17)에서의 커맨드 발생으로부터 PE(17)에 있어서 커맨드를 수신할 때까지의 레이턴시는 일률적이다. 이에 따라, PE 매트릭스(10)에 포함되는 복수의 세그먼트에 걸쳐 재구성되는 데이터 플로우에 속하는 모든 PE(17)에 대하여 커맨드를 동기한 타이밍으로 전달할 수 있어, 데이터 플로우(70)의 처리에 부정합이 발생하는 것을 방지할 수 있다.
커맨드 수집 시스템(60)의 제 1 매트릭스(61) 및 제 2 매트릭스(62)는 커맨드의 논리합을 생성하는 OR 게이트(61r 및 62r)를 포함한다. 스톱 커맨드(Cs)는 EID의 정보를 포함하는 16비트의 신호(stop[15:0])이며, 비트 0은 「EID=0」을 나타낸다. 따라서, 스톱 커맨드(Cs)의 논리합을 출력함으로써, 복수의 EID에 대응하는 복수의 데이터 플로우를 같은 타이밍에서 스톱시킬 수가 있다. 이에 따라, 다른 데이터 처리를 행하고 있는 복수의 데이터 플로우가 PE 매트릭스(10)에 구성되어 있는 경우에도, 상기 커맨드 수집 시스템(60) 및 커맨드 전달 시스템(50)을 이용함으로써, 복수의 데이터 플로우(70)를 정확하게, 그리고 플렉시블하게 제어할 수 있다.
도 14에, 각 PE(17)에 포함되는 제어유닛(15)의 블록 다이어그램을 나타내고 있다. 도 14는, 제어유닛(15)에 포함되는 컨피규레이션 레지스터 시스템(12)과, 커맨드 디코드 시스템(55)을 나타내고 있다. 컨피규레이션 레지스터 시스템(메모리 시스템; 12)은, 2개(2 뱅크)의 백그라운드 메모리(12b)와, 1개(1 뱅크)의 포어그라운드 메모리(12a)와의 합계 3 뱅크의 컨피규레이션 메모리를 구비하고 있다. 이들 3개의 뱅크(12a 및 12b)의 각각에 DNA 컨피규레이션을 1개씩 보유할 수 있다. 컨피규레이션 레지스터 시스템(12)은, 또한, 포어그라운드 메모리(12a) 및 백그라운드 메모리(12b)의 각각에 전송 시스템(13)으로부터 DNA 컨피규레이션을 저장하는 회로(12c)와, 백그라운드 메모리(12b)에 저장된 DNA 컨피규레이션을 포어그라운드 메모리(12a)에 전송하는 회로(12d)를 포함한다.
제어유닛(15)의 레지스터 시스템(12)에 있어서, 실제로 유효하게 되어, 각 PE(17)의 기능(상태, 데이터 패스)을 제어하는 것은, 포어그라운드 메모리(12a)에 있는 DNA 컨피규레이션이다. 유효한 DNA 컨피규레이션은, 포어그라운드 메모리(12a) 내의 인스트럭션 레지스터(12i)를 재기입함으로써 전환할 수 있다. 인스트럭션 레지스터(12i)로의 기입은, 백그라운드 메모리(12b)의 뱅크로부터 전송하는 방법(다이나믹 리컨피규레이션, dynamic configuration)과, 메모리 맵상의 컨트롤 레지스터(DNACFGW)로부터 직접 기입하는 방법이 있다. 백그라운드 메모리(12b)로부터 포어그라운드 메모리(12a)로는, 1 클록으로 전송할 수 있고, 1 클록으로 PE(17)의 기능을 전환할 수 있다.
백그라운드 메모리(12b)의 2 뱅크 중, 필요없게 된 뱅크에 대하여 DNA 컨피규레이션을 메인 메모리로부터 로드할 수 있다. 이에 따라, DNA 컨피규레이션 수의 실용상의 제한은 없다. 포어그라운드 메모리(12a)의 DNA 컨피규레이션을 전환하는 것을 ‘다이나믹 리컨피규레이션(dynamic reconfiguration)’이라 부르며, 2가지의 방법이 준비되어 있다. 1개는 실행중인 DNA 컨피규레이션으로부터 DAP(RISC 유닛; 2)에 인터럽트를 발생시켜, DAP의 프로그램으로 전환하는 방법이다. 또 하나는 실행중인 DNA 컨피규레이션을 자율적으로 전환하는 방법이다. 후자의 방법을 특히, ‘자율 다이나믹 리컨피규레이션’이라 부른다.
DNA 컨피규레이션(컨피규레이션 데이터)은, 각 PE(17)의 기능을 세팅하기(전환하기, 재구성하기) 위한 회로정보, 파라미터 등을 포함한다. 컨피규레이션 데이터는, 각각의 PE(17)가 포함되는 데이터 플로우(70)를 식별하기 위한 정보(데이터 플로우 식별정보)인 EID를 더 포함한다. 실행중인 (유효한) DNA 컨피규레이션의 EID(55e)는, 커맨드 디코드 시스템(55)에서 참조된다. 커맨드 디코드 시스템(55)은, EID의 디코더(55d)와, PE의 동작을 온/오프하기 위한 클록제어유닛(55s)을 포함한다. 상술한 바와 같이, 스톱 커맨드(Cs)는 EID를 나타내는 16비트의 신호를 포함한다. 커맨드 디코드 시스템(55)은, 현재 유효한 DNA 컨피규레이션의 EID(55e)와 일치하는 EID가 스톱 커맨드(Cs)에 포함되어 있으면, 클록을 정지하고, PE(17)의 동작을 스톱한다. 예컨대, EID(55e)가 「2」이며, 스톱 커맨드(Cs)의 비트 2(데이터의 2비트째)가 「1」이면, PE를 정지시킨다. 스톱 커맨드(Cs)의 비트 0 및 2가 「1」이면, EID(55e)가 「0」및 「2」인 PE의 동작을 정지할 수 있고, 복수의 데이터 플로우를 동시에 제어할 수 있다.
도 15는, LDB(LDB 엘리먼트)의 저장영역(29a)에 포함되는 4개의 뱅크(29x)에 의해 메인 메모리(DRAM; 19)로부터 PE 매트릭스(10)에 데이터를 입력하는 상태를 나타내고 있다. 디바이스(1)의 LDB는, 4뱅크로 구성된 저장영역(29a)을 구비하고 있다. 이러한 구성에 의해 DRAM(19)으로의 리드 레이턴시(read latency)를 숨길 수가 있다. LDB에서는, PE 매트릭스(10; 매트릭스(10)의 PE(17) 또는 데이터 플로우(70))로의 데이터의 판독이 끝나고, 저장영역(29a)을 뱅크 스위칭한 후 DRAM(19)으로의 판독 요구를 행한다.
최근 DRAM(19)의 고속화는 현저하지만, 그 대가(price)로서 액세스 레이턴시가 커지고 있다. 즉, 리드 커맨드의 입력으로부터 데이터의 판독까지의 클록수가 커지고 있다. 이에 따라, 2뱅크로 구성된 경우, 버퍼의 깊이를 얕게 하면(판독량이 작은 경우), 뱅크 스위치하고 난 후 리드 리퀘스트를 출력하고 있었다면, 리드쪽 뱅크의 데이터 판독도 종료하여, PE 매트릭스(10)로의 입력이 불가능해서 데이터 플로우(70)가 유휴(idle)상태가 된다. 이를 피하기 위해, 디바이스(1)에서는 뱅크수를 늘려 4뱅크로 하고 있다. 뱅크수를 늘림으로써, 라이트쪽의 뱅크(29x)가 복수(이 예에서는 라이트 뱅크가 3개)가 된다. 이에 따라, 리드쪽의 뱅크(29x)가 비게 되고, 리드 뱅크로부터 라이트 뱅크로 뱅크 스위치되는 것을 기다리지 않고 DRAM(19)으로 리드 리퀘스트를 출력할 수 있다. 따라서, DRAM(19)으로의 액세스 레이턴시를 숨길 수가 있다.
DRAM(19)으로의 액세스가 경합하거나, 기타 이유에 의해, LDB의 리드쪽의 뱅크(29x)가 비었을 때에 라이트쪽의 뱅크(29x)에 규정량의 데이터가 로드되어 있지 않은 경우가 있다. 이때에는, 뱅크 스위치(뱅크 전환)하는 것은 적당하지 않고, LDB로부터의 데이터의 판독을 정지하거나, 혹은, 리드쪽의 뱅크(29x)가 빈 후에 판독되는 데이터를 무효로 하는 것이 바람직하다. 데이터 플로우형 컴퓨터에 있어서, 데이터의 유/무효를 나타내기 위해서, 데이터마다 토큰을 부여하는 것이 알려져 있다. 토큰에 의한 데이터 플로우의 제어는, 데이터와 함께 토큰을 전달하면 되므로, 하드웨어의 구성이 용이하고, 상기 디바이스(1)에서도 이용되고 있다. 그러나, 토큰만의 제어로는 데이터 플로우가 잘못된 연산을 행할 가능성이 있다.
도 16에 그 일례를 나타내고 있다. 데이터 플로우에 있어서 이하의 식(1)의 연산을 행하는 경우, 도 16에 나타낸 바와 같이, 사이클 t(0)에 리드쪽의 뱅크(29x)가 비게 되면, 5번째로 입력되는 데이터가 무효(‘버블’이라 함)가 된다. 이때, 케이스 1과 같이, Y(t)의 데이터의 토큰에 근거하여 연산을 행한 경우에는 무효인 데이터에 의한 결과는 무효로서 처리된다. 한편, 케이스 2와 같이, Y(t-1)의 토큰에 근거하여 연산을 행한 경우에는, 유효한 데이터에 의한 결과에 에러가 발생한다. Y(t)의 토큰과 Y(t-1)의 토큰의 양쪽이 유효할 때에만 결과가 유효한 것으로 하면, 유효한 연산 결과가 무효인 결과로서 처리된다. 따라서, 데이터 플로우에 포함되는 연산에 의해 유효한 토큰을 선택하는 처리가 필요하게 되고, 데이터 플로우의 설계에서는 이것을 의식할 필요가 있다.
Y(t)=Y(t)+Y(t-1)…(1)
도 17에, 본 예의 디바이스(1)에 있어서 사이클 t(0)에 리드쪽의 뱅크(29x)가 빈 상태를 나타내고 있다. 디바이스(1)에 있어서는, 커맨드 수집 시스템(60) 및 커맨드 전달 시스템(50)에 의해, PE(17)에 있어서 생성된 플로우 스톱 커맨드(Cs)는, 레지스터(53)에 래치되어, 모든 PE(17)에 플로우 스톱 커맨드(Cs)가 전달된다. 다만, 플로우 스톱 커맨드(Cs)의 생성에서 전달까지 3클록 사이클을 필요로 하고, 4클록 사이클 이후에는 모든 PE(17)가 커맨드(Cs)를 참조하여(전달되어), 모든 PE(17)가 커맨드(Cs)에 의해 제어된다.
따라서, 도 17에 나타낸 바와 같이, LDB가, 리드쪽의 뱅크(29x)가 비는 t(0)의 4클록 사이클전의 t(-4)에 커맨드(Cs)를 출력한다. 상기 스톱 커맨드(Cs)에 의해, 데이터 플로우(70)와 LDB를 스톱시킬 수가 있다. LDB는, 로드 버퍼(29a)에 데이터가 없을 때에는 스톱하므로 토큰이 없는 데이터(버블)는 출력되지 않는다. 또한, 대응하는 EID의 데이터 플로우도 일시정지되므로 무효인 데이터에 의한 처리는 행하여지지 않는다. 따라서, 버블 프리(bubble-free)의 환경을 제공할 수 있어, 사용자는 버블을 의식할 필요는 없고, 토큰의 선택을 의식하지 않아도 데이터 플로우를 설계할 수 있으며, PE 매트릭스에 매핑할 수가 있다.
또한, 디바이스(1)에 있어서는, 플로우 스톱 커맨드(Cs)에 의해, 상기 EID의 PE의 로컬 클록도 정지하므로, 소비 전력도 떨어진다. 토큰만의 제어인 경우, 데이터 플로우는 정지하지 않으므로, 무효인 데이터도 연산되어 있는 경우가 많다. 이 때문에 전력이 소비되고, 또한, 메모리 혹은 레지스터가 무효인 연산에 의해 불필요하게 오버라이트(overwrite)할 가능성이 있다. 그러나, 상기 디바이스(1)에 있어서는, PE로부터 생성되는 플로우 스톱 커맨드(Cs)에 의해 데이터 플로우를 정지하는 것이 가능하므로, 이러한 결함의 발생을 미연에 방지할 수 있다.
LDB, RAM 등의 엘리먼트에 있어서 플로우 스톱 커맨드를 생성하는 유닛인 뱅크 컨트롤 유닛(29b) 및 커맨드 생성유닛(69)은, 또한, 데이터의 수가 결정되어 있는 경우에는, 최종 데이터를 출력하기 위해 플로우 스톱을 해제하거나, 혹은 생성하지 않는 기능을 구비하고 있다. FIFO로서 기능하는 저장영역(29a)의 잔(殘)용량은 최종 데이터를 접수한 후에는 늘어나지 않으므로, 데이터 플로우가 데드록(deadlocked)해 버릴 가능성이 있기 때문이다. 이 때문에, LDB의 커맨드 생성유닛인 뱅크 컨트롤 유닛(29b)은, 엘리먼트(C32L)로부터의 엔드 토큰을 래치해두고, 그 어드레스의 리드 데이터가 돌아온 경우에, 그 이후에는 플로우 스톱을 출력하는 것을 해제하는 기능(29d)을 구비하고 있다(도 9 참조). 이러한 기능(29d)에 의해, 최종 데이터도 문제없이 PE 매트릭스(10)에 재구성된 데이터 플로우로 출력된다. 플로우 스톱을 해제하는 다른 실시예로서는, 상기 C32L로부터의 엔드 토큰에서 발생하는 인터럽트 요인을 받아, DAP(2)가 특정 레지스터를 설정하고, 해제할 수 있도록 해두어도 된다.
도 18에 LDB 엘리먼트에 있어서, 플로우 스톱 커맨드(Cs)를 생성 및 출력하는 구성 및 타이밍을 나타내고 있다. 뱅크 스위칭에 의해, 라이트 뱅크(29x)가 리드 뱅크(29x)가 되고, 리드 뱅크(29x)가 라이트 뱅크(29x)가 된다. 이후, 스와프된 리드 뱅크(29x)로부터 PE 매트릭스(10)로 데이터가 송출된다. 데이터의 송출에 의해 리드 뱅크(29x)에서 판독시키는 양이, 레지스터(125)에 저장된 소정의 문턱치(29t)를 밑돌았을 때를, 커맨드 생성유닛인 뱅크 컨트롤러(29b)가 거의 빈 상태 (올모스트 엠티, almost empty; STae)로 판단하고, 뱅크 컨트롤러(29b)의 플로우 스톱 요구 기능(29s)이 플로우 스톱을 행하기 위해 플로우 스톱 커맨드(Cs)를 출력한다. 문턱치(29t)는, 플로우 스톱 요구기능(29s)이 커맨드(Cs)를 출력한 후, LDB 및 세그먼트에 커맨드(Cs)가 되돌아 올 때까지의 레이턴시에 근거하여 결정된다.
상기 디바이스(1)에 있어서, 구체적으로는, 플로우 스톱 커맨드(Cs)가 각 PE(17)에 참조되도록 되는데(도달하는데) 3클록을 필요로 하고, 데이터 플로우(70)가 정지할 때까지 4클록을 필요로 한다. 따라서, 커맨드(Cs)의 레이턴시(지연)가 4클록 사이클이며, 저장영역(29a)의 리드 뱅크(29x)에 남은 데이터가 4클록 사이클 분(分)이 되었을 때, 즉, 데이터(d4)를 출력했을 때에 거의 빈 상태(STae)로 판단하여, 플로우 스톱 커맨드(Cs)를 출력하면 된다.
도 19에 플로우 스톱 커맨드(Cs)를 출력하고, 데이터 플로우가 정지할 때까지의 타이밍 차트를 나타내고 있다. 사이클 t(-4)에 뱅크 컨트롤러(29b)가 데이터(d4)를 검출하면, 뱅크 컨트롤러(29b)는 거의 빈 상태(STae)를 판단한다. 상기 LDB 엘리먼트는, EID2의 데이터 플로우(70)에 속하므로(데이터 플로우에 데이터를 제공하고 있으므로), 뱅크 컨트롤러(29b)는 EID2의 플로우 스톱 커맨드(Cs)를 출력한다.
뱅크 컨트롤러(29b)가 출력한 플로우 스톱 커맨드(Cs; 플로우 스톱 요구)는, 제 1 레벨의 커맨드 수집 매트릭스(61)를 통해, 사이클 t(-3)에, 커맨드 수집 시스템(60)의 각 세그먼트의 커맨드 레지스터(FF; 63)에 의해 래치(obtained)된다. 즉, 커맨드(Cs)가 커맨드 수집 시스템(60)의 레지스터(63)에 수집된다.
커맨드 수집 시스템(60)의 레지스터(63)에 수집된 커맨드(Cs)는, 제 2 레벨의 커맨드 수집 매트릭스(62)를 통해, 사이클 t(-2)에, STB의 커맨드 출력유닛(59)의 출력 레지스터(FF; 59f)에 의해 얻어진다. 즉, 커맨드(Cs)가 레지스터(59f)에 수집된다.
레지스터(59f)에 수집된 커맨드(Cs)는, 제 2 레벨의 커맨드 전달 매트릭스(52)를 통해, 사이클 t(-1)에, 커맨드 전달 시스템(50)의 각 세그먼트의 커맨드 레지스터(FF; 53)에 의해 얻어진다. 즉, 플로우 스톱 커맨드(Cs)가 레지스터(53)에 전달된다. 스톱 커맨드(Cs)는, 다음 클록이 무효(invalid)인 것을 나타낸다.
다음 사이클 t(0)에, EID2의 각 PE(17)는, 제 1 레벨의 커맨드 전달 매트릭스(51)를 통해, 각 세그먼트의 커맨드 레지스터(53)의 커맨드(Cs)를 인식하고, 커맨드(Cs)에 의해 스톱한다. 따라서, 사이클 t(0)에 EID2의 데이터 플로우(70)는 스톱한다.
플로우 스톱 커맨드(Cs)는, 발생원인 LDB 엘리먼트의 뱅크 컨트롤러(29b)에 있어서, 라이트 뱅크(29x)가 풀(full)상태(STf)가 되고, 뱅크 스위치가 완료되어 리드 뱅크(29x)가 전환될 때까지 유지된다. 이 경우에서는, 사이클 t(4)에 플로우 스톱 커맨드(Cs)가 해제된다.
이후, 플로우 스톱 커맨드(Cs)의 해제는 상기한 바와 같이 커맨드 수집 시스템(60) 및 커맨드 전달 시스템(50)을 통해 PE(17)에 인식된다. 따라서, 레지스터(53)의 EID2의 플로우 스톱 커맨드(Cs)는 사이클 t(7)에 해제된다. 이에 따라, 다음 사이클 t(8)에 EID2의 데이터 플로우에 속하는 모든 PE(17)는 스톱이 해제되어, 데이터(d0)로부터 처리를 재개한다.
사이클 t(8)에는 뱅크 스위치는 완료되어 있고, 데이터(d0)에 계속해서 데이터(dn)가 LDB로부터 공급되도록 되어 있다. 이에 따라, 버블이 들어오지 않고, EID2의 데이터 플로우(70)는 처리를 정상으로 계속할 수 있다. 또한, 사이클 t(0)으로부터 사이클 t(8)의 사이는, EID2의 데이터 플로우에 속하는 PE(17)에 대해서는, 클록을 정지할 수 있으므로, 소비 전력을 삭감할 수 있다. RAM 엘리먼트 등은, 데이터의 입력 또는 출력 등에 관하여 다른 EID가 속하는 처리를 행하고 있는 경우가 있으며, 이때에는 완전히 스톱하지 않고, 전력도 소비될 가능성이 있다.
도 20은, 플로우 스톱 커맨드(Cs)를 내지 않고 뱅크 전환을 행하는 경우를 나타내고 있다. LDB 엘리먼트에 있어서, 리드 뱅크(29x)의 데이터가 거의 빈 상태(올모스트 엠티 상태; STae)가 되었다고 하여도, 라이트쪽의 뱅크(20x)가 이미 풀 상태(full state)(기입완료상태; STf)이면, 리드 뱅크(29x)가 비었을 때에 뱅크 스위치(bank switching)가 가능하다. 커맨드 생성유닛으로서 기능하는 뱅크 컨트롤러(29b)는, 플로우 스톱을 출력하는 것을 해제하는 기능(29d)을 구비하고 있어, 해제기능(29d)이 동작한다. 해제기능(29d)은, 사이클 t(-4)의 거의 빈 상태(STae)에 대하여, 라이트 뱅크(29x)가 풀(기입완료, written)이므로 플로우 스톱은 필요하지 않다고 판단하고, 거의 빈 상태(STae)를 해제한다. 이에 따라, 플로우 스톱 커맨드(Cs)는 출력되지 않는다. 이에 따라 무용(無用)한 데이터 플로우의 정지를 방지할 수 있다.
도 21은, 최종 데이터에 대하여 플로우 스톱 커맨드(Cs)를 출력하지 않는 경우를 나타내고 있다. 뱅크 컨트롤러(29b)의 해제기능(29d)은, 최종 데이터가 리드 뱅크(29x)에 있는 경우에도 동작한다. 따라서, 최종 데이터가 리드 뱅크(29x)에 있는 경우에는, 플로우 스톱 커맨드(Cs)는 출력되지 않는다. 최종 데이터가 리드 뱅크(29x)에 있으면, 최종 데이터 이후의 데이터가, 메인 메모리(DRAM; 19)로부터 판독되지 않는다. 따라서, 뱅크 스위치(뱅크 전환)는 행하여지지 않는다. 이에 따라, 데이터 플로우(70)를 정지해 버리면, 최종 데이터가 판독되지 않게 된다. 해제기능(29d)은, 플로우 스톱 커맨드(Cs)를 출력시키지 않음으로써, 이러한 사태를 미연에 방지할 수 있다.
최종 데이터가 리드 뱅크(29x)에 있는지의 여부는, DRAM(19)의 리드 어드레스를 출력하는 엘리먼트(C32L)의 엔드 토큰의 플래그(end token flag)에 의해 판단할 수 있다. 해제기능(29d)은, 사이클 t(-4)의 거의 빈 상태(STae)에 대하여, 엔드 토큰 플래그가 하이(H)이므로 플로우 스톱은 필요하지 않다고 판단하고, 거의 빈 상태(STae)를 해제한다. 이에 따라, 플로우 스톱 커맨드(Cs)는 출력되지 않는다. 이에 따라 무용한 데이터 플로우의 정지를 방지할 수 있다.
이상에서는, LDB 엘리먼트에 있어서 플로우 스톱 커맨드(Cs)를 출력하는 경우를 예로 설명하고 있지만, 데이터 플로우 중에서 FIFO로서의 기능을 포함하는 PE(17)인 DLE 엘리먼트 및 RAM 엘리먼트에 있어서도 마찬가지로 상류 및/또는 하류의 데이터 플로우를 제어할 수 있다. 예컨대, 상류의 데이터 플로우의 FIFO로서의 기능으로 세팅된 DLE 엘리먼트 또는 RAM 엘리먼트에 있어서, 상류의 데이터 플로우의 기입에 의해 FIFO가 풀(full)이 될 것 같은 타이밍에서, 자신의, 또는 상류의 데이터 플로우의 EID에 대응하는 번호의 플로우 스톱 요구를 출력한다. 이러한 동작에 의해, 상류(기입쪽의)의 데이터 플로우를 멈출 수 있다. 이에 따라, 하류의 데이터 플로우에서는, 상류의 데이터 플로우의 상태를 생각하지 않고 자신의 상태가 좋은 타이밍에서 처리할 수 있다.
DLE 엘리먼트 또는 RAM 엘리먼트는, 하류의 데이터 플로우에 대해서도, FIFO에 잔존하는 데이터량에 의해, 하류의 데이터 플로우의 EID를 가진 플로우 스톱 요구(플로우 스톱 커맨드)를 출력한다. 하류의 데이터 플로우에 버블이 공급되는 것을 미연에 방지할 수 있다. 또한, 예컨대, 판독이 가능한지의 여부를 PE(17)의 캐리 신호로 통지해도 좋다. 캐리가 「1」이면, FIFO에 판독시킬 데이터가 있는 것을 나타낸다. 하류는 이 신호를 사용하여, 상태가 좋을 때에 판독을 행할 수 있다.
이러한 구조를 취함으로써, PE(17)로부터 플로우 스톱을 포함하는 커맨드(Cs)를 발생시킬 수 있어, 데이터 플로우를 EID에 의해 분리하며, PE(17)로부터 제어할 수 있다. 플로우 스톱 등의 커맨드의 발생원이 되는 PE(17)는, 상기에 한정되지 않는다. 가령, PE 매트릭스의 구성되는 데이터 플로우의 처리에서, 피드백 처리가 있으면, 복수 회, 예컨대 3회에 1회만 처리하고 싶은 경우가 있다. 가령, 판독쪽이 피드백의 처리를 위해 1/3회만 처리하고 싶은 경우에는, 같은 데이터를 3회 판독하여, 외관상, 1/3회의 레이트로 하여 처리하는 것을 생각할 수 있다. 그러나, 상술한 RAM, DLE에 덧붙여, ALU 등의 데이터 입력과 판단기능을 구비한 PE(17)로부터 플로우 스톱 커맨드를 출력함으로써, 3회에 1회만 처리하고 싶은 경우에는, 2사이클만큼 입력쪽의 데이터 플로우를 정지시킬 수 있다. 이러한 제어를 행함으로써, 디바이스(1)에서의 소비 전력을 삭감할 수 있게 된다.
상기 디바이스(1)에 있어서는, PE(17)로부터 플로우 스톱 커맨드를 출력하여, 세그먼트에 관계없이, 모든 PE(17)를 동기하여 제어할 수가 있다. 따라서, 데이터 플로우를 식별정보(EID)의 단위로 분할하여 제어할 수 있다. 예컨대, 리드쪽의 데이터 플로우는 리드쪽의 상태에 의해 판독을 행할 수 있게 된다.
세그먼트화(segmentation)는, 또한, 데이터 플로우의 설계 및 매핑(mapping)에 있어서 유효하다. 세그먼트 내에 있어서는 타이밍 수속(收束)(timing closure)이 보증되므로, 세그먼트의 범위 내에서의 배치 배선의 자유도를 향상시키는 데 적합하다. 또한, 세그먼트화에 의해, 신호를 송수신하기 위한 버스(라우팅 매트릭스)를 세그먼트마다 독립적으로 사용할 수 있게 되고, 배선의 사용 효율을 향상시킬 수 있다는 메리트도 얻을 수 있다. 복수의 PE를 복수의 세그먼트로 나누어 배치하는(세그먼트화하는) 구성은, ALU 등의 기능을 포함하는, 균일한, 혹은 균일에 가까운 복수의 PE 혹은 논리 블록(LCB)이 포함되는 재구성 가능한 디바이스에 있어서도 도입할 수 있다.
본 발명에 포함되는 라우팅 매트릭스는, 전기적인 배선 등의, 전기전자적인 방법에 의해 신호를 전달하는 라우팅 매트릭스에 한정되지 않는다. 본 발명에 포함되는 라우팅 매트릭스는, 광을 포함한(optical tranmission) 다른 정보전달방식이 적용되는 라우팅 매트릭스여도 된다. 또한, 본 발명에 포함되는 PE의 배치 및 세그먼트의 배치는, 2차원 종횡의 규칙적인 배열에 한정되지 않는다. 3방(direction) 혹은 6방 등에 규칙적으로 복수의 PE 및 세그먼트를 배치하는 것도 가능하다. 또한, 다층화 등의 방법에 의해, PE 및 세그먼트를 3차원으로 배치하는 것도 가능하다.

Claims (15)

  1. 복수의 세그먼트로 구분하여 배치된 복수의 처리 엘리먼트와, 이들 복수의 처리 엘리먼트를 접속하기 위한 라우팅 매트릭스를 포함하며, 상기 복수의 처리 엘리먼트의 적어도 일부 및 상기 라우팅 매트릭스의 적어도 일부에 의해 데이터 플로우가 재구성되는 재구성 구획을 갖는 디바이스로서,
    상기 라우팅 매트릭스는, 각 세그먼트에 포함되는 복수의 처리 엘리먼트를 제 1 지연 범위내에서 접속하기 위한 제 1 레벨의 라우팅 매트릭스와,
    다른 세그먼트에 포함되는 복수의 처리 엘리먼트를, 상기 제 1 지연과는 다른 지연으로 접속하기 위한 제 2 레벨의 라우팅 매트릭스를 포함하고,
    상기 디바이스는, 또한, 상기 재구성 구획에 포함되는 복수의 처리 엘리먼트의 각각에, 커맨드를 전달하기 위한 커맨드 전달 시스템을 가지며,
    상기 커맨드 전달 시스템은, 상기 각 세그먼트에 설치된 전달용 커맨드 레지스터와,
    상기 각 세그먼트 내의 복수의 처리 엘리먼트와 상기 전달용 커맨드 레지스터를 상기 제 1 지연 범위내에서 접속하기 위한 제 1 레벨의 커맨드 전달 매트릭스와,
    상기 복수의 세그먼트의 상기 전달용 커맨드 레지스터와 상기 커맨드를 출력하는 커맨드 출력유닛을, 상기 제 1 지연과는 다른 지연으로 접속하기 위한 제 2 레벨의 커맨드 전달 매트릭스를 포함하는, 디바이스.
  2. 제 1항에 있어서,
    상기 복수의 처리 엘리먼트의 적어도 일부의 처리 엘리먼트는, 커맨드 생성유닛을 포함하고,
    상기 디바이스는, 상기 커맨드 생성유닛에 의해 발생된 커맨드를 상기 커맨드 출력유닛에 수집하기 위한 커맨드 수집 시스템을 더 포함하는, 디바이스.
  3. 제 2항에 있어서,
    상기 커맨드 수집 시스템은, 상기 각 세그먼트에 설치된 수집용 커맨드 레지스터와,
    상기 각 세그먼트 내의 상기 적어도 일부의 처리 엘리먼트와 상기 수집용 커맨드 레지스터를 상기 제 1 지연 범위내에서 접속하기 위한 제 1 레벨의 커맨드 수집 매트릭스와,
    상기 복수의 세그먼트의 상기 수집용 커맨드 레지스터와 상기 커맨드 출력유닛을, 상기 제 1 지연과는 다른 지연으로 접속하기 위한 제 2 레벨의 커맨드 수집 매트릭스를 포함하는, 디바이스.
  4. 제 3항에 있어서,
    상기 적어도 일부의 처리 엘리먼트는, 상기 재구성 구획에 구성된 데이터 플로우에 의해 처리된 출력을 일시적으로 저장하는 저장유닛을 포함하는 출력 인터페이스 엘리먼트를 포함하는, 디바이스.
  5. 제 4항에 있어서,
    상기 커맨드 전달 시스템에 의해 전달되는 커맨드는, 각 처리 엘리먼트의 클록을 정지하기 위한 스톱 커맨드를 포함하는, 디바이스.
  6. 제 5항에 있어서,
    상기 적어도 일부의 처리 엘리먼트는, 상기 재구성 구획에 구성된 데이터 플로우에 입력되는 데이터를 일시적으로 저장하는 저장유닛을 포함하는 입력 인터페이스 엘리먼트를 포함하는, 디바이스.
  7. 제 6항에 있어서,
    상기 입력 인터페이스 엘리먼트에 포함되는 상기 커맨드 생성유닛은, 상기 저장유닛에 잔존하는 데이터량이, 상기 커맨드 수집 시스템 및 상기 커맨드 전달 시스템에 의해 커맨드를 전달하기 위해 소비되는 사이클 동안에 상기 데이터 플로우에 의해 소비되는 데이터량과 동일하게 되었을 때, 상기 스톱 커맨드를 출력하는 기능을 포함하는, 디바이스.
  8. 제 6항에 있어서,
    상기 입력 인터페이스 엘리먼트에 포함되는 상기 커맨드 생성유닛은, 상기 저장유닛에 최종 데이터가 있을 때에는, 상기 스톱 커맨드를 출력하지 않는 기능을 포함하는, 디바이스.
  9. 제 6항에 있어서,
    상기 적어도 일부의 처리 엘리먼트는, 상기 데이터 플로우에 의해 처리되고 있는 도중의 데이터를 일시적으로 저장하는 저장유닛을 포함하는 데이터 저장형 엘리먼트를 포함하고,
    상기 데이터 저장형 엘리먼트에 포함되는 상기 커맨드 생성유닛은, 각각의 상기 저장유닛에 잔존하는 데이터량이, 상기 커맨드 수집 시스템 및 상기 커맨드 전달 시스템에 의해 커맨드를 전달하기 위해 소비되는 사이클 동안에 상기 데이터 플로우에 의해 소비되는 데이터량과 동일하게 되었을 때, 상기 스톱 커맨드를 출력하는 기능을 포함하는, 디바이스.
  10. 제 9항에 있어서,
    상기 데이터 저장형 엘리먼트에 포함되는 상기 커맨드 생성유닛은, 상기 저장유닛에 최종 데이터가 있을 때에는, 상기 스톱 커맨드를 출력하지 않는 기능을 포함하는, 디바이스.
  11. 제 1항에 있어서,
    상기 복수의 처리 엘리먼트는, 데이터에 대한 처리를 행하는 기능을 변경함으로써 상기 데이터 플로우를 재구성하는 처리 엘리먼트를 포함하는, 디바이스.
  12. 제 1항에 있어서,
    상기 라우팅 매트릭스는, 적어도 일부의 접속을 변경함으로써 상기 데이터 플로우를 재구성하는 라우팅 매트릭스를 포함하는, 디바이스.
  13. 제 1항에 있어서,
    상기 재구성 구획에는 복수의 데이터 플로우를 구성할 수 있으며, 상기 재구성 구획에 포함되는 상기 복수의 처리 엘리먼트는, 각각의 처리 엘리먼트가 속하는 데이터 플로우를 식별하는 식별정보를 포함하는 제어유닛을 포함하고,
    상기 커맨드 전달 시스템에 의해 전달되는 커맨드는, 상기 식별정보를 포함하는, 디바이스.
  14. 제 13항에 있어서,
    상기 커맨드 생성유닛을 포함하는 처리 엘리먼트의 입력측의 데이터 플로우를 식별하는 식별정보와, 출력측의 데이터 플로우를 식별하는 식별정보는 다른, 디바이스.
  15. 제 1항에 있어서,
    상기 제 2 레벨의 커맨드 전달 매트릭스를 통해 전달되는 커맨드를 생성하고, 상기 재구성 구획에 구성된 데이터 플로우를 제어하기 위한 프로세서를 더 갖는, 디바이스.
KR1020107018660A 2008-01-31 2009-01-29 재구성 가능한 디바이스 KR101265120B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2008-021546 2008-01-31
JP2008021546 2008-01-31

Publications (2)

Publication Number Publication Date
KR20100122084A KR20100122084A (ko) 2010-11-19
KR101265120B1 true KR101265120B1 (ko) 2013-05-16

Family

ID=40912827

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107018660A KR101265120B1 (ko) 2008-01-31 2009-01-29 재구성 가능한 디바이스

Country Status (7)

Country Link
US (1) US20110047353A1 (ko)
EP (1) EP2246781B1 (ko)
JP (1) JP5170579B2 (ko)
KR (1) KR101265120B1 (ko)
CN (1) CN101983373B (ko)
AU (1) AU2009209933B2 (ko)
WO (1) WO2009096482A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5711889B2 (ja) 2010-01-27 2015-05-07 スパンション エルエルシー リコンフィギュラブル回路および半導体集積回路
JP5821332B2 (ja) * 2011-06-30 2015-11-24 株式会社ソシオネクスト リコンフィグ可能な集積回路装置
US8860457B2 (en) * 2013-03-05 2014-10-14 Qualcomm Incorporated Parallel configuration of a reconfigurable instruction cell array
US9537471B2 (en) * 2015-02-09 2017-01-03 Qualcomm Incorporated Three dimensional logic circuit
CN106021145B (zh) * 2016-05-25 2019-06-14 芯启源(上海)半导体科技有限公司 应用处理器、应用处理装置及命令执行方法
US10402355B2 (en) 2017-02-08 2019-09-03 Texas Instruments Incorporated Apparatus and mechanism to bypass PCIe address translation by using alternative routing
JP7433931B2 (ja) * 2020-01-27 2024-02-20 キヤノン株式会社 情報処理装置及びその制御方法及びプログラム

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5742180A (en) * 1995-02-10 1998-04-21 Massachusetts Institute Of Technology Dynamically programmable gate array with multiple contexts
US6760743B1 (en) * 2000-01-04 2004-07-06 International Business Machines Corporation Instruction memory system for multi-processor environment and disjoint tasks
CA2459411C (en) * 2001-09-07 2013-04-02 Ip Flex Inc. Data processing system and control method
US7657861B2 (en) * 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
US7000091B2 (en) * 2002-08-08 2006-02-14 Hewlett-Packard Development Company, L.P. System and method for independent branching in systems with plural processing elements
WO2005066832A2 (en) * 2003-12-29 2005-07-21 Xilinx, Inc. Integrated circuit with cascading dsp slices
US7207020B1 (en) * 2004-02-09 2007-04-17 Altera Corporation Method and apparatus for utilizing long-path and short-path timing constraints in an electronic-design-automation tool
JP4446437B2 (ja) * 2004-03-19 2010-04-07 アイピーフレックス株式会社 データ処理装置およびその制御方法
JP4546775B2 (ja) * 2004-06-30 2010-09-15 富士通株式会社 時分割多重処理可能なリコンフィギュラブル回路
JP4720436B2 (ja) * 2005-11-01 2011-07-13 株式会社日立製作所 リコンフィギュラブルプロセッサまたは装置
JP4936517B2 (ja) * 2006-06-06 2012-05-23 学校法人早稲田大学 ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ
JP4451433B2 (ja) * 2006-12-04 2010-04-14 株式会社リコー 並列プロセッサ

Also Published As

Publication number Publication date
US20110047353A1 (en) 2011-02-24
JP5170579B2 (ja) 2013-03-27
KR20100122084A (ko) 2010-11-19
JPWO2009096482A1 (ja) 2011-05-26
EP2246781A4 (en) 2012-01-11
EP2246781B1 (en) 2020-12-09
AU2009209933A1 (en) 2009-08-06
WO2009096482A1 (ja) 2009-08-06
CN101983373A (zh) 2011-03-02
CN101983373B (zh) 2013-04-17
EP2246781A1 (en) 2010-11-03
AU2009209933B2 (en) 2012-01-19

Similar Documents

Publication Publication Date Title
KR101265120B1 (ko) 재구성 가능한 디바이스
US11681645B2 (en) Independent control of multiple concurrent application graphs in a reconfigurable data processor
EP1222559B1 (en) Multiprocessor node controller circuit and method
US9037807B2 (en) Processor arrangement on a chip including data processing, memory, and interface elements
US7831801B1 (en) Direct memory access-based multi-processor array
CN108121672A (zh) 一种基于NandFlash存储器多通道的存储阵列控制方法与装置
US9436631B2 (en) Chip including memory element storing higher level memory data on a page by page basis
US20070033369A1 (en) Reconfigurable integrated circuit device
WO2000022546A2 (en) Configurable processor system unit
US20230205726A1 (en) Device with data processing engine array that enables partial reconfiguration
US6892266B2 (en) Multicore DSP device having coupled subsystem memory buses for global DMA access
US11482264B2 (en) Memory module adapted to implementing computing functions
US6694385B1 (en) Configuration bus reconfigurable/reprogrammable interface for expanded direct memory access processor
EP2132645A1 (en) A data transfer network and control apparatus for a system with an array of processing elements each either self- or common controlled
US20220283963A1 (en) Communicating between data processing engines using shared memory
JP4437439B2 (ja) データ処理装置

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
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160418

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170421

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180418

Year of fee payment: 6