KR101450675B1 - 데이터 처리 장치, 데이터 처리 시스템, 패킷, 기록 매체, 기억 장치, 및 데이터 처리 방법 - Google Patents

데이터 처리 장치, 데이터 처리 시스템, 패킷, 기록 매체, 기억 장치, 및 데이터 처리 방법 Download PDF

Info

Publication number
KR101450675B1
KR101450675B1 KR1020127014546A KR20127014546A KR101450675B1 KR 101450675 B1 KR101450675 B1 KR 101450675B1 KR 1020127014546 A KR1020127014546 A KR 1020127014546A KR 20127014546 A KR20127014546 A KR 20127014546A KR 101450675 B1 KR101450675 B1 KR 101450675B1
Authority
KR
South Korea
Prior art keywords
packet
processing
data
instruction
information
Prior art date
Application number
KR1020127014546A
Other languages
English (en)
Other versions
KR20120101433A (ko
Inventor
미츠루 무샤노
Original Assignee
가부시키가이샤 무쉬-에이
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 가부시키가이샤 무쉬-에이 filed Critical 가부시키가이샤 무쉬-에이
Priority claimed from PCT/JP2010/006593 external-priority patent/WO2011067896A1/en
Publication of KR20120101433A publication Critical patent/KR20120101433A/ko
Application granted granted Critical
Publication of KR101450675B1 publication Critical patent/KR101450675B1/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/82Architectures of general purpose stored program computers data or demand driven
    • 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
    • G06F15/8023Two dimensional arrays, e.g. mesh, torus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • 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
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

Abstract

[과제] 기존의 소프트웨어 자산을 실질적으로 그대로 이용해서 처리의 병렬성을 향상시킨다.
[해결수단] 데이터와 그 데이터에 부가된 상기 데이터를 식별하는 식별 정보 및 상기 데이터에 대한 1개 이상의 처리 명령을 나타내는 명령 정보를 포함하는 확장 식별 정보를 포함하는 각 패킷을 처리하도록 구성된 복수의 처리부를 포함하고, 상기 복수의 처리부에 있어서의 각 처리부는 상기 패킷 중 상기 확장 식별 정보에 따라서 정해지는 어드레스 정보가 복수의 처리부에 있어서의 상기 각 처리부를 나타내는 패킷만을 취득하도록 구성된 입/출력부와, 상기 입/출력부에 의해 취득된 상기 패킷의 상기 처리 명령을 실행하도록 구성된 연산부를 각각 갖는다.

Description

데이터 처리 장치, 데이터 처리 시스템, 패킷, 기록 매체, 기억 장치, 및 데이터 처리 방법{DATA PROCESSING APPARATUS, DATA PROCESSING SYSTEM, PACKET, RECORDING MEDIUM, STORAGE DEVICE, AND DATA PROCESSING METHOD}
본 발명은 데이터 처리 장치, 데이터 처리 시스템, 패킷, 기록 매체, 기억 장치, 및 데이터 처리 방법에 관한 것이다.
컴퓨터 아키텍쳐로서, 기억 장치(메모리)로부터 명령을 순차적으로 읽어내고(fetch), 해독하고(decode), 실행하는(execute) 노이만형 아키텍쳐가 일반적으로 알려져 있다. 이 노이만형 아키텍쳐는 명령의 실행 순서를 미리 정하고, 오퍼랜드(연산 대상의 데이터)를 매번 수집하면서 처리를 행하는 명령 중심의 처리 시스템이다.
또한, 노이만형 컴퓨터에 있어서, 복수의 명령을 병렬 처리하는 CPU(Central Processing Unit) 아키텍쳐로서 수퍼스칼라 프로세서가 알려져 있다. 수퍼스칼라 프로세서는 오퍼랜드의 도착 순서로 실행 노드에 대해서 명령을 발행하고(issue) 실행하는 아웃 오브 오더 처리(out-of-order processing)가 가능하다. 그러나, 수퍼스칼라 프로세서에 있어서는 스케줄러가 데이터 의존성을 검사하면서 실행 결과를 옳은 순서로 재배열하기 때문에 동시에 실행가능한 명령수의 증가는 스케줄러의 복잡화를 초래하게 된다.
한편, 비노이만형 아키텍쳐로서 데이터 의존성에 주목해서 데이터 플로우(데이터의 흐름)에 대응해서 처리를 행하는 데이터 구동형 아키텍쳐가 알려져 있다. 이 데이터 구동형 아키텍쳐는 실행 노드에 오퍼랜드가 준비된 시점에서 발화(firing)하고, 다음 실행 노드에 명령의 실행 결과를 전송함으로써 다수 명령을 병렬 처리할 수 있다.
예컨대, 특허문헌 1에서는 프로세서간의 제어에 데이터 구동형(특허문헌 1에 있어서는 데이터 플로우 머신형) 아키텍쳐를, 프로세서 내의 제어에 노이만형 아키텍쳐를 각각 사용하는 멀티프로세서 시스템이 개시되어 있다. 이 멀티프로세서 시스템은 데이터 구동형 아키텍쳐 및 노이만형 아키텍쳐를 조합시켜서 사용함으로써 복잡한 하드웨어 구성을 사용하지 않고, 스레드로 분할되어 생성된 실행 코드에 의거하여 병렬 처리를 행할 수 있다.
또한, 예컨대 비특허문헌 1에서는 TRIPS(Tera-op Reliable Intelligently advanced Processing System) 아키텍쳐가 개시되어 있다. 이 TRIPS 아키텍쳐는 타일 프로세서라고 하는 칩 아키텍쳐와 EDGE(Explicit Data Graph Execution)라고 하는 ISA(Instruction Set Architecture)를 조합시킨 것이다. 이것들 중 타일 프로세서는 인접하는 코어 사이만을 배선함으로써 배선 지연의 문제를 회피해서 코어수가 증가해도 동작 속도를 고속으로 유지할 수 있다. 한편, EDGE 아키텍쳐는 명령을 실행 노드에 정적으로 배치해서 데이터 플로우형 아키텍쳐와 유사하게 실행 노드에 오퍼랜드가 준비된 시점에 실행함으로써 처리의 병렬성을 최대한으로 향상시키는 것을 목적으로 한다.
이와 같이, 상기와 같이 기재된 컴퓨터 아키텍쳐를 단독으로 또는 조합하여 사용함으로써 복수의 명령을 병렬 처리할 수 있다.
일본 특허 공개 2007-193430호 공보
Doug Burger, et al., "Scaling to the End of Silicon with EDGE Architectures," IEEE Computer, vol. 37, no. 7, pp. 44-55, July 2004.
병렬 컴퓨터는 상기 데이터 구동형 아키텍쳐를 사용함으로써 다수 명령을 병렬 처리할 수 있다. 그러나, 데이터 구동형 아키텍쳐에서는 노이만형 아키텍쳐와는 다른 명령 세트를 사용하기 때문에 기존의 노이만형 컴퓨터용 소프트웨어 자산을 그대로 이용할 수는 없다.
기존의 소프트웨어 자산을 병렬 컴퓨터에서 이용하기 위해서는, 예컨대 노이만형 컴퓨터용 소스 프로그램으로부터 병렬 컴퓨터용 실행 코드를 생성하는 컴파일러 기술을 필요로 한다. 그러나, 상기 컴파일러 기술을 사용한 경우의 처리의 병렬성은 컴파일러의 성능에 좌우되고, 병렬성의 향상에는 컴파일러의 복잡화를 수반하고 컴파일 시간의 증가를 초래할 경우도 있다. 또한, 상기 특허문헌 1에서는 프로그램 처리 장치에 의해 멀티프로세서 시스템을 위한 실행 코드를 생성하기 위해서 C언어 등의 고급 언어로 기술된 소스 프로그램에 미리 스레드 기술을 추가할 필요가 있다.
또한, 예컨대 노이만형 컴퓨터용 소스 프로그램을 순차적으로 해석하면서 실행하는 인터프리터(interpreter) 기술을 필요로 한다. 그러나, 컴파일러 기술의 경우와 유사하게 처리의 병렬성의 향상에는 인터프리터의 복잡화를 수반하고, 인터프리터의 동작 속도의 저하를 초래할 경우도 있다. 또한, 컴파일러나 인터프리터의 복잡화를 수반하지 않지만 병렬 컴퓨터 자체의 복잡화나 동작 속도의 저하를 초래할 경우도 있다.
따라서, 병렬 컴퓨터에 있어서의 병렬성의 향상은 기존의 소프트웨어 자산을 병렬 컴퓨터에서 이용하기 위한 비용의 상승을 초래하는 트레이드오프의 관계로 된다.
상술한 과제를 해결하기 위한 본 발명의 주요 실시형태는 데이터와, 그 데이터에 부가된 상기 데이터를 식별하는 식별 정보 및 상기 데이터에 대한 1개 이상의 처리 명령을 나타내는 명령 정보를 포함하는 확장 식별 정보를 각각 포함하는 패킷을 처리하도록 구성된 복수의 처리부를 포함하고, 상기 복수의 처리부에 있어서의 각 처리부는 상기 패킷 중 상기 확장 식별 정보에 따라서 정해지는 어드레스 정보가 복수의 상기 각 처리부에 있어서의 상기 각 처리부를 나타내는 패킷만을 취득하도록 구성된 입/출력부와, 상기 입/출력부에 의해 취득된 상기 패킷의 상기 처리 명령을 실행하도록 구성된 연산부를 각각 갖는 것을 특징으로 하는 데이터 처리 장치이다.
본 발명의 다른 특징에 대해서는 첨부된 도면 및 본 명세서의 기재에 의해 명백하게 된다.
<관련 출원의 교차 참조>
본 출원은 그 전체 내용이 참고로 여기에 통합되어 있고, 각각 2009년 12월 2일, 2010년 10월 7일, 2010년 1월 1일자에 출원된 일본 특허 출원 제2009-274033호, 제2010-199711호, 및 미국 가특허 출원 제61/350408호에 대한 우선권을 주장한다.
<발명의 효과>
본 발명에 의하면 기존의 소프트웨어 자산을 실질적으로 그대로 이용해서 처리의 병렬성을 향상시킬 수 있다.
도 1은 본 발명의 일실시형태에 의한 PE(처리 요소)의 구성을 도시하는 블록도이다.
도 2는 데이터 처리 장치를 포함하는 전체 데이터 처리 시스템 구성의 개략을 도시하는 블록도이다.
도 3은 본 발명의 일실시형태에 의한 데이터 처리 장치의 구성을 도시하는 블록도이다.
도 4는 소스 프로그램과 데이터 처리 장치에 의해 처리되는 프로그램(실행 코드)의 관계의 일예를 도시하는 도면이다.
도 5는 데이터 처리 장치에서 사용되는 명령 세트의 일예를 도시하는 도면이다.
도 6은 MCE(메모리 제어 요소)에 의해 생성되는 데이터 플로우챠트의 일예를 도시하는 도면이다.
도 7은 MCE(메모리 제어 요소)에 의해 생성되는 기본 패킷 열의 일예를 도시하는 도면이다.
도 8은 MCE(메모리 제어 요소)에 의해 생성되는 전개 후의 패킷 열의 일예를 도시하는 도면이다.
도 9는 본 발명의 일실시형태에 의한 어드레스 정보의 산출 방법을 설명하는 도면이다.
도 10은 입/출력부의 동작의 일예를 설명하는 플로우챠트이다.
도 11은 버퍼 메모리에 실장되는 해시 테이블(hash table)의 일예를 도시하는 도면이다.
도 12는 본 발명의 일실시형태에 의한 데이터 처리 장치의 동작을 설명하는 도면이다.
도 13은 전자파(광)를 이용하여 정보 전달을 행할 경우의 통신로의 구성의 일예를 도시하는 도면이다.
도 14는 소스 프로그램과 데이터 처리 장치로 처리되는 프로그램의 관계의 다른 예를 도시하는 도면이다.
도 15는 각 입/출력 포트가 복수의 채널을 구비한 PE(처리 요소)의 구성의 개략을 도시하는 블록도이다.
도 16은 명령 추가 명령의 실행을 포함하는 데이터 플로우챠트의 일예를 도시하는 도면이다.
도 17은 명령 추가 명령의 실행을 포함하는 전개 후의 패킷 열의 일예를 도시하는 도면이다.
도 18은 명령 추가 명령의 실행을 포함하는 데이터 처리 장치의 동작을 설명하는 도면이다.
도 19는 데이터 처리 장치에 의해 처리되는 패킷의 다른 구성예를 도시하는 도면이다.
도 20은 명령 추가 처리를 포함하는 데이터 플로우챠트의 일예를 도시하는 도면이다.
도 21은 명령 추가 처리를 포함하는 데이터 처리 장치의 동작을 설명하는 도면이다.
본 명세서 및 첨부 도면의 기재에 의해 적어도 이하의 상세한 사항이 명백해질 것이다.
=== 전체 데이터 처리 시스템 구성의 개략 ===
이하, 도 2를 참조해서 데이터 처리 장치를 포함하는 전체 데이터 처리 시스템 구성의 개략이 설명될 것이다.
도 2에 도시되어 있는 데이터 처리 시스템은 데이터 처리 장치(1)를 포함하는 병렬 컴퓨터 시스템이며, 데이터 처리 장치(1) 이외에 기억 장치(6), 입력 장치(7), 출력 장치(8), 및 버스(9)를 포함한다. 데이터 처리 장치(1), 기억 장치(6), 입력 장치(7), 및 출력 장치(8)는 버스(9)를 통해서 서로 접속되어 있다. 데이터 처리 장치(1)의 구성에 관한 상세한 설명은 후술될 것이다.
=== 전체 데이터 처리 시스템 동작의 개략 ===
이어서, 전체 데이터 처리 시스템 동작의 개략이 설명될 것이다.
기억 장치(6)는 RAM(Random Access Memory)이나 ROM(Read Only Memory) 등을 포함하고, 프로그램(실행 코드)이나 상기 프로그램의 실행에 사용되는 데이터 등이 기억된다. 또한, 데이터 처리 장치(1)는 컴퓨터 시스템의 CPU에 상당하고, 기억 장치(6)에 기억되어 있는 프로그램을 실행한다. 또한, 데이터 처리 장치(1)의 동작에 관한 상세한 설명은 후술될 것이다.
입력 장치(7)는 키보드나 마우스 등을 포함하고, 데이터 및 프로그램(소스 프로그램 또는 실행 코드)을 포함하는 정보를 외부로부터 상기 데이터 처리 시스템에 입력한다. 한편, 출력 장치(8)는 디스플레이나 프린터 등을 포함하며, 정보를 문자나 화상 등으로서 외부에 출력한다.
또한, 상기 데이터 처리 장치(1), 기억 장치(6), 입력 장치(7), 및 출력 장치(8)의 분류는 고정적인 것은 아니다. 예컨대 하드디스크 드라이브나 광디스크 드라이브 등의 보조 기억 장치는 기억 장치(6)로서 사용되지만 외부와의 사이에서 정보를 입출력하는 입력 장치(7) 및 출력 장치(8)로 분류해도 좋다.
=== 데이터 처리 장치의 구성 ===
이하, 도 3을 참조하여 본 발명의 일실시형태에 의한 데이터 처리 장치의 구성이 설명될 것이다.
도 3에 도시되어 있는 데이터 처리 장치(1)는 PE(Processor/Processing Element:처리 요소/처리 소자)(100 내지 115), MCE(Memory Control/Controlling Element:메모리 제어 요소/메모리 제어 소자)(300 내지 303), 캐시 메모리(400), 및 통신로(전송로)(500)를 포함한다.
데이터 처리 장치(1)는 각기 처리부에 상당하는 복수의 PE를 포함하고, 각 PE가 통신로(500)를 통해서 서로 접속되어 있다. 본 발명의 실시형태에 있어서, 일예로서 데이터 처리 장치(1)는 4행 4열의 행렬 형상으로 배치된 16개의 PE(100 내지 115)를 구비하고 있는 것으로 가정한다. 또한, 상술한 타일 프로세서와 같이 PE(100 내지 115)는 서로 인접하는 PE 사이만이 서로 접속되는 것으로 가정한다. 또한, 각 PE의 구성에 관한 상세한 설명은 후술될 것이다.
여기서, PE(100 내지 115)의 좌표(X, Y)를 도 3에 도시하는 바와 같이 각각 (0,0) 내지 (3,3)으로 나타내는 것으로 가정하면 각 PE에 대해서 X좌표를 상위 2비트, Y좌표를 하위 2비트로 하는 식별 번호를 설정할 수 있다. 또한, 상기와 같이 설정된 식별 번호는 도 3에 도시되어 있는 각 PE의 3자리의 부호의 아래 2자리와 일치한다. 예컨대, 좌표(0, 3)에 위치하는 PE(103)의 식별 번호는 3(2진 표기로 0011)이 되고, 좌표(3,0)에 위치하는 PE(112)의 식별 번호는 12(2진 표기로 1100)가 된다.
데이터 처리 장치(1)는 제어부에 상당하는 MCE를 적어도 1개 구비하고, 각 MCE가 통신로(500)를 통해서 PE(100 내지 115)의 어느 하나와 접속되어 있다. 본 실시형태에 있어서, 일예로서 데이터 처리 장치(1)는 4개의 MCE(300 내지 303)를 구비하는 것으로 가정한다. 또한, MCE(300 내지 303)는 각각 인접하는 PE(100 내지 103)와 접속된다. 또한, 도 3에 도시하는 바와 같이 MCE(300 내지 303)에 대해서 각각 0 내지 3의 식별 번호가 설정되어 있다.
캐시 메모리(400)는 MCE(300 내지 303)와 접속되어 있다. 또한, 캐시 메모리(400)는 상술한 버스(9)(도시 생략)를 통해서, 데이터 처리 장치(1) 외부의 기억 장치(6)와 접속되어 있다.
=== 통신로의 구성 및 동작의 일예 ===
통신로(500)는 PE간이나 PE와 MCE간의 정보 전달 매체이며, 상기 정보 전달은 전기 배선에 의한 전기 신호의 전달 이외에 광파이버에 의한 광신호의 전달이나 자유 공간에 있어서의 전자파의 전달도 포함된다. 여기서 전자파, 특히 광을 이용하여 정보 전달을 행할 경우의 통신로(500)의 구성의 일예를 도 13에 도시한다. 이 경우, 각 PE는 발광 소자를 포함하는 적어도 1개의 송신부 및 수광소자를 구비한 적어도 1개의 수신부를 포함한다. 또한, 도 13에 있어서, 발광 소자(212)는 정보 전달원의 PE에 포함되고, 수광 소자(213)는 정보 전달 목적지의 PE에 포함된다.
도 13에 도시되어 있는 통신로(500)는 광을 투과하는 투과재(501), 광을 반사하는 반사재(502), 및 광을 흡수하는 흡수재(503)로 이루어진다. 투과재(501) 및 반사재(502)는 각각 광파이버에 있어서의 코어(core) 및 클래딩(cladding)에 상당하고 석영 유리나 플라스틱 등을 사용할 수 있다. 또한, 투과재(501)의 굴절율을 반사재(502)의 굴절율보다 높게 하고, 광신호가 반사재(502)에 의해 전반사되면서 투과재(501)를 통해 전달되도록 구성되어 있다.
수광 소자(213)는 OCF(On-chip Color Filter) 등을 이용해서 PE마다 설정된 파장의 광을 수광하도록 구성되어 있다. 이 경우, 발광 소자(212)가 발광하는 광의 파장을 가변으로 해서 전달 목적지의 PE에 설정된 파장과 일치시킴으로써 패킷을 전달할 수 있다. 또한, 다른 파장의 광을 발광하는 복수의 발광 소자를 스위칭함으로써 전달원 및 전달 목적지의 PE에 설정된 파장을 일치시켜 패킷을 전달할 수 있다.
또한, 각 PE에 설정되는 파장은 자외 영역으로부터 적외 영역까지의 어느 것을 사용해도 좋다. 그러나, 투과재(501) 및 반사재(502)에 사용되는 재료에 따라서 자외선을 흡수해서 투과율이 저하되기 때문에 가시광선 영역으로부터 적외 영역까지의 파장을 사용하는 것이 바람직하다.
=== 데이터 처리 장치의 동작 ===
이어서, 도 4 내지 도 8을 적절하게 참조해서 본 발명의 실시예에 의한 데이터 처리 장치의 동작이 설명될 것이다.
캐시 메모리(400)는 캐싱(caching)하면서 MCE(300 내지 303)와 기억 장치(6) 사이의 입출력을 제어한다. 따라서, 기억 장치(6)에 기억되어 있는 프로그램과 데이터는 캐시 메모리(400)를 통해서 MCE(300 내지 303)에 의해 판독된다.
여기서, 소스 프로그램과 데이터 처리 장치(1)에 의해 처리되는 프로그램(실행 코드)의 관계의 일예를 도 4에 도시한다. 고급 언어로 기술된 소스 프로그램(P0)은 실행 코드(P1)로 미리 컴파일링된 후 기억 장치(6)에 기억되어 있고, MCE(300 내지 303)는 실행 코드(P1)를 판독한다. 도 4에 있어서는 소스 프로그램(P0)의 일예로서, C++언어로 기술된 배열 sp[1024]의 각 요소를 2로 제산한 값을 배열 dp[1024]에 기억하는 처리가 도시되어 있다. 또한, 실행 코드(P1)는 기계어 프로그램 대신에 기계어와 실질적으로 1대1로 대응하는 어셈블리 언어로 기술된 프로그램일 수 있다.
MCE(300 내지 303)는 판독된 실행 코드(P1)로부터 데이터 흐름도에 의거하여 후술하는 패킷 열을 생성한다. 각 MCE는 데이터 플로우챠트 자체를 생성할 필요는 없지만 본 발명의 실시예에 있어서는 설명의 편의를 위해 우선 데이터 플로우챠트를 생성한 후 데이터 플로우챠트에 의거하여 패킷 열을 생성하는 것으로 한다.
여기서, 데이터 처리 장치(1)에서 사용되는 명령 세트의 일예를 도 5에 도시한다. 도 5에 있어서, 각 명령은 2입력/1출력 명령과 1입력/1출력 명령으로 구분되어 있다. 이것들 중 2입력/1출력 명령은 입력된 2개의 데이터가 각각 좌측 오퍼랜드 및 우측 오퍼랜드로서 지정된 2항 연산을 실행하는 명령이다. 한편, 1입력/1출력 명령은 입력된 1개의 데이터를 오퍼랜드로서 지정한 단항 연산을 실행하는 명령이다. 또한, 도 5에 도시하는 바와 같이 각 명령에 대해서 오퍼레이터에 상당하는 기호와 기계어에 있어서의 16진표기가 설정되어 있고, 이들은 데이터 플로우챠트나 패킷 열에 관한 설명에서 사용된다.
우선 2입력/1출력 명령이 설명될 것이다.
2개의 데이터(A 및 B)의 가산 결과(A+B 또는 B+A)를 출력하는 가산 명령에 대해서는 기호 "+"와, 16진표기(10H)가 설정되어 있다. 한편, 2개의 데이터(L 및 R)의 감산 결과(L-R)를 출력하는 감산 명령의 경우 감산은 교환 법칙이 성립하지 않는 비가환연산이기 때문에 각 데이터를 좌측 오퍼랜드 또는 우측 오퍼랜드 중 어느 것으로 할지를 나타내는 좌/우 정보(방향 정보)를 필요로 한다. 따라서, 감산 명령에 대응하는 기호 "-"에는 좌/우 정보 "L" 또는 "R"이 더 부가되고, 각각 16진표기(12H 또는 13H)가 설정되어 있다.
좌/우 정보 "L"은 좌측 오퍼랜드로 지정되는 데이터를 나타내고, 좌/우 정보 "R"은 우측 오퍼랜드로 지정되는 데이터를 나타내고 있다. 또한, 상기 명령 세트에 있어서는 각 명령의 LSB(Least Significant Bit:최하위 비트)가 좌/우 정보 전용으로 할당되어 있다. 따라서, 이하의 명령[널(null) 문자를 제외한다]에 있어서도 좌/우 정보 "L"을 포함하는 명령 및 좌/우 정보를 갖지 않는 명령의 LSB는 0, 좌/우 정보 "R"을 갖는 명령의 LSB는 1로 설정되어 있다.
2개의 데이터(A 및 B)의 승산 결과(A×B 또는 B×A)를 출력하는 승산 명령에 대해서는 좌/우 정보를 갖지 않는 기호 "×"와 16진표기(14H)가 설정되어 있다. 한편, 2개의 데이터(L 및 R)의 제산 결과(L/R)를 출력하는 제산 명령에 대해서는 좌/우 정보가 부가된 기호 "/L" 및 "/R"과, 16진표기(16H 및 17H)가 설정되어 있다.
좌/우 정보가 부가된 기호 "writeL" 및 "writeR"과, 16진표기(18H 및 19H)가 설정되어 있는 기록 명령은 데이터(L)가 나타내는 기억 장치(6)의 어드레스에 기억되어 있는 데이터(*L)에 데이터(R)를 기록하는 명령이다. 또한, "*"은 간접 참조 오퍼랜드이다.
좌/우 정보가 부가된 기호 "applL" 및 "applR"과, 16진표기(50H 및 51H)가 설정되어 있는 데이터 추가 명령은 후술하는 패킷(L)의 데이터 부분에 패킷(R)의 데이터 부분을 추가하는 명령이다. 또한, 좌/우 정보가 부가된 기호 "app2L" 및 "app2R"과, 16진표기(52H 및 53H)가 설정되어 있는 명령 추가 명령은 후술하는 패킷(L)의 처리 명령 부분에 패킷(R)의 데이터 부분을 추가하는 명령이다.
이어서, 1입력/1출력 명령이 설명될 것이다. 또한, 1입력/1출력 명령은 1개의 데이터만을 오퍼랜드로 지정하기 때문에 모두 좌/우 정보를 갖지 않는다.
기호 "NOP"와, 16진표기(00H)가 설정되어 있는 "NOP"명령은 아무것도 하지 않는 명령이다. 또한, 기호 "read"와 16진표기(02H)가 설정되어 있는 판독 명령은 데이터(A)가 나타내는 기억 장치(6)의 어드레스에 기억되어 있는 데이터(*A)를 판독하는 명령이다. 명령에는 없지만 패킷의 종단을 나타내는 널 문자로서, 예컨대 16진표기(FFH)가 설정되어 있다.
각 MCE는 도 5에 도시한 명령 세트를 이용해서 일반적인 데이터 구동형 아키텍쳐의 경우와 유사하게 데이터 플로우챠트를 생성한다. 도 6은 실행 코드(P1)로부터 생성된 데이터 플로우챠트를 나타내고 있고, 도 4에 도시한 소스 프로그램(P0)의 for 루프 내의 처리에 대응하고 있다.
도 6에 있어서, D1 내지 D5는 데이터를 나타내고 있고, I1 내지 I5는 명령을 나타내고 있다. 가산 명령(I4)은 데이터 D1(dp) 및 데이터 D2(ⅱ)를 가산해서 데이터(dp+ⅱ)를 출력하고, 가산 명령(I1)은 데이터 D3(sp) 및 데이터 D4(ⅱ)를 가산해서 데이터(sp+ⅱ)를 출력한다. 또한, 판독 명령(I2)은 기억 장치(6)로부터 데이터[*(sp+ⅱ)]를 판독한다. 또한, 제산 명령(I3)은 데이터[*(sp+ⅱ)]를 데이터 D5(2)로 제산해서 데이터[*(sp+ⅱ)/2]를 출력한다. 그리고, 기록 명령(I5)은 기억 장치(6)의 데이터[*(dp+ⅱ)]에 데이터[*(sp+ⅱ)/2]를 기록한다.
이상의 데이터 플로우를 통해 배열 sp[1024]의 1개의 요소를 2로 제산한 값이 배열 dp[1024]에 기억된다. 도 7은 도 6에 도시한 데이터 플로우챠트에 의거하여 생성된 기본 패킷 열을 나타내고 있다.
각 패킷은 데이터 부분(data section)과 확장 식별 정보 부분(extended identification information section)을 포함한다. 또한, 확장 식별 정보 부분은 식별 정보 부분(identification information section)과 처리 명령 부분(processing instructions section)을 포함한다. 또한, 각 패킷은 암호화나 압축 등의 목적으로 적절하게 인코딩될 수 있다.
데이터 부분은 데이터 본체뿐만 아니라 데이터의 데이터 길이 정보를 포함한다. 또한 데이터 길이 정보는, 예컨대 데이터의 바이트수를 나타내지만 데이터 처리 장치(1)가 고정길이 데이터만을 사용할 경우에는 불필요하게 된다.
식별 정보 부분은, 예컨대 MCE ID 및 처리 ID를 포함한다. 예컨대, 이것들 중 처리 ID는 기본 패킷 열마다 설정되기 때문에 도 7에 있어서는 엠프티(empty)(널 문자)이며 for 루프를 전개할 때에 설정된다. 한편, MCE ID는 상기 기본 패킷 열을 생성한 MCE를 나타내는 발행인 정보에 상당하고, 예컨대 도 3에 도시한 0 내지 3의 식별 번호가 사용된다. 또한, 기본 패킷 열에 있어서는 도 7에 도시한 바와 같이, MCE ID를 엠프티로 해서 for 루프를 전개할 때에 MCE ID를 처리 ID와 함께 설정한다.
본 발명에 의한 실시형태에서는, 일예로서 처리 명령 부분은 5개까지의 명령 1 내지 5 이외에 명령수 정보를 포함한다. 각 명령은 실행 순서가 역순으로 배열되어 있고, 최초로 실행되어야 할 명령이 최후미에 배치되고, 후속 명령은 엠프티로 되어 있다. 또한, 명령수 정보는 미처리된 명령수를 나타내지만 매번 계수해도 좋다.
도 7로부터 명백한 바와 같이, 상기 기본 패킷 열은 도 6에 도시한 데이터 플로우챠트를 5개의 데이터(D1 내지 D5)마다 재구성한 것이며, 각 패킷은 상기 데이터에 식별 정보 및 처리 명령을 부가해서 생성된다. 또한, 각 MCE는 반복 처리 등의 기본 패킷 열에 대한 제어 명령을 전개하고 각 패킷을 인접하는 PE에 발행한다. 도 8은 도 7에 도시한 기본 패킷 열에 대해서 for 루프를 전개한 후의 패킷 열을 나타내고 있다.
도 4에 도시한 바와 같이, 상기 for 루프는 ⅱ=0으로부터 ⅱ=1023까지의 반복 처리이기 때문에 전개함으로써 5×1024패킷이 생성되게 된다. 또한, 도 8에 도시한 바와 같이, 5패킷마다 1로부터 1024까지의 동일한 처리 ID를 포함하고 있고, 상기 5패킷이 각각 도 7에 도시한 기본 패킷 열에 대응하고 있다. 도 8에 있어서는 일예로서, MCE ID는 1로 설정되어 있어 각 패킷이 MCE(301)에 의해 생성된 것을 나타내고 있다.
MCE(301)로부터 발행된 각 패킷은 PE(100 내지 115) 중 후술하는 어드레스 정보가 나타내는 PE까지 통신로(500)를 통해서 전달된다. 또한, 각 PE는 패킷에 포함되는 처리 명령을 실행하는 실행 노드에 상당하다. 또한, 각 PE의 동작에 관한 상세한 설명은 후술될 것이다.
상기와 같이, 본 발명의 실시형태에 의한 데이터 처리 장치는 오퍼랜드로 지정되는 데이터와 오퍼레이터로 지정되는 명령이 일체로 된 패킷을 처리 대상으로 하고 있는 점에서 상술한 종래의 컴퓨터 아키텍쳐와 크게 다르다.
본 발명의 데이터 처리 장치는 본 발명의 실시형태에 도시한 바와 같이, 기계어나 어셈블리 언어로 기술된 실행 코드(P1)로부터 패킷 열을 생성하는 MCE를 구비하는 구성으로 한정되는 것은 아니다.
예컨대, 기억 장치(6)에는 소스 프로그램(P0)으로부터 실행 코드(P1)에 컴파일할때의 중간 단계에서 생성되는 중간 코드로서, 구문 트리(syntax tree)로 표현된 프로그램이 기억될 수 있다. 구문 트리는 오퍼랜드가 리프 노드(leaf node)에 배치되어 오퍼레이터가 내부 노드에 배치된 트리 구성으로 되어 있기 때문에 기계어나 어셈블리 언어의 경우에 비해서 데이터 플로우챠트의 생성이 용이하게 된다.
또한, 예컨대 기억 장치(6)에는 컴파일러를 포함하는 외부 장치에 의해 미리 생성된 기본 패킷 열이나 전개 후의 패킷 열이 기억될 수 있다. 기본 패킷 열이 기억되어 있을 경우에는 각 MCE는 판독된 기본 패킷 열에 대한 제어 명령을 전개해서 MCE ID나 처리 ID를 설정한 후 각 패킷을 인접하는 PE에 발행한다. 한편, 전개 후의 패킷 열이 기억되어 있을 경우에는 각 MCE는 각 패킷을 그대로 인접하는 PE에 발행할 수 있다.
또한, 예컨대 기억 장치(6)에는 전개 후의 패킷 열 중 식별 정보 부분의 일부 또는 전부를 생략한 또는 널 문자로 한 중간 패킷 열이 기억될 수 있다. 이 경우에는 각 MCE는 생략된 MCE ID나 처리 ID를 설정한 후 각 패킷을 인접하는 PE에 발행한다.
또한, 예컨대 전개 후의 패킷 열이 외부 장치로부터 데이터 처리 장치에 직접 입력될 수 있다. 이 경우의 외부 장치에는 병렬로 동작하고 있는 다른 데이터 처리 장치도 포함될 수 있다.
여기서, 소스 프로그램과 데이터 처리 장치(1)에 의해 처리되는 프로그램(실행 코드)의 관계의 다른 예를 도 14에 도시한다. 이 경우, 컴파일러는 고급 언어로 기술된 소스 프로그램(P0)으로부터 데이터 플로우챠트에 의거하여 기본 패킷 열을 생성하고, 또한 상기 기본 패킷 열에 대한 제어 명령을 전개한다. 또한, 기억 장치(6)에는 상기 전개 후의 패킷 열이 적절하게 부호화된 후 실행 코드(P2)로서 기억된다. 그리고, MCE(300 내지 303)는 실행 코드(P2)를 판독한다.
=== PE(처리 요소)의 구성 ===
이하, 도 1을 참조해서 본 발명의 실시형태에 의한 PE의 구성이 설명될 것이다.
도 1에 도시되어 있는 PE(100 내지 115)는 입/출력부(210), 비교/선택부(230), 버퍼 메모리(240), 오퍼랜드 버퍼(250a, 250b), 및 ALU(Arithmetic Logic Unit:산술논리 연산부)(260)를 각각 포함한다.
입/출력부(210)는 어드레스 정보 산출부(211), 출력 포트(214a 내지 214d), 및 입력 포트(215a 내지 215d)를 포함한다. 또한, 입/출력부(210)에는 각 입력 포트를 통해서 패킷과 기억 장치(6)로부터 판독된 데이터가 입력되어 있다. 또한, 입/출력부(210)로부터는 출력 포트를 통해서 패킷과 기억 장치(6)에 기록되는 데이터 등이 출력되어 있다. 그리고, 각 입/출력 포트(입력 포트 및 출력 포트)는 상술한 통신로(500)(도시 생략)를 통해서 인접하는 PE와 MCE에 접속되어 있다.
예컨대, 도 3의 PE(110)의 경우 4세트의 입/출력 포트는 각각 PE(109, 106, 111, 및 114)와 접속되어 있다. 또한, 예컨대 PE(100)의 경우 2세트의 입/출력 포트는 각각 PE(101 및 104)와 접속되고, 1세트의 입/출력 포트는 MCE(300)와 접속되고, 그리고 1세트의 입/출력 포트는 사용되지 않는다.
또한, 예컨대 도 15에 도시한 바와 같은 구성은 각 입/출력 포트가 복수의 채널을 포함하고, 상기 복수의 채널을 사용해서 인접하는 PE간과 PE와 MCE간에서 패킷과 데이터가 입력 및/또는 출력될 수 있다.
광을 이용하여 정보 전달을 행할 경우에는, 예컨대 도 13의 발광 소자(212)는 각 출력 포트에 설치되고, 수광 소자(213)는 각 입력 포트에 설치된다.
비교/선택부(230)에는 입/출력부(210)로부터 패킷이 입력되어 있다. 또한, 비교/선택부(230)는 해시값 산출부(231)를 포함하고, 기억부에 상당하는 버퍼 메모리(240) 사이에서 패킷을 입/출력하고 있다. 또한, 비교/선택부(230)로부터 오퍼랜드 버퍼(250a 및 250b)를 통해서 각각 좌측 오퍼랜드 및 우측 오퍼랜드로 지정되는 데이터를 갖는 패킷이 연산부에 상당하는 ALU(260)에 입력되어 있다. 그리고, ALU(260)에 의해 새롭게 생성된 패킷은 다시 입/출력부(210)에 입력되어 있다.
=== PE(처리 요소)의 동작 ===
이어서, 도 9 내지 도 11을 적절하게 참조해서 본 발명의 실시형태에 의한 PE의 동작이 설명될 것이다.
입/출력부(210)는, 우선 어드레스 정보 산출부(211)가 입력된 패킷의 어드레스 정보를 산출한다. 어드레스 정보는 패킷을 처리해야 할 PE를 나타내는 정보이며, 상기 패킷의 확장 식별 정보 부분으로부터 구해질 수 있다. 여기서, 도 9를 참조해서 도 8에 있어서 MCE ID=1이고 처리 ID=1인 최초의 5패킷의 어드레스 정보의 산출 방법이 설명될 것이다. 이하, 도 9에 도시한 바와 같이 상기 5패킷을 각각 패킷(P1 내지 P5)으로 지정한다.
어드레스 정보 산출부(211)는, 우선 각 패킷으로부터 확장 식별 정보 부분만을 추출하고(도 9의 중단), 각 확장 식별 정보 중 최초로 실행되어야 할 명령의 좌/우 정보를 마스킹한다(도 9의 하단). 상술한 바와 같이, 본 발명의 실시형태에서는 최초로 실행되어야 할 명령이 패킷의 최후미에 배치되고, 각 명령의 LSB가 좌/우 정보 전용으로 할당되어 있다. 따라서, 확장 식별 정보의 최후의 1비트를 0 또는 1(도 9에 있어서는 0)로 마스킹할 필요만 있다. 또한, 확장 식별 정보에 널 문자를 포함해도 좋고, 이 경우에는 널 문자 직전의 1비트 이후를 마스킹하면 좋다.
어드레스 정보 산출부(211)는 이어서 상기의 마스킹된 확장 식별 정보에 의거하여 의사 난수(pseudo random number)를 생성해서 상기 의사 난수에 따라 어드레스 정보를 산출한다. 예컨대, 0 내지 15(2진 표기로 0000 내지 1111)의 4비트 값을 어드레스 정보로서 산출하면 상기 어드레스 정보는 도 3의 PE의 좌표와 같이 상위 2비트를 X좌표, 하위 2비트를 Y좌표로 하는 좌표(X, Y)의 형식에 의해 나타낼 수도 있다. 도 9 하단에 있어서는 어드레스 정보를 상기 좌표의 형식에 의해 나타내고 있다.
의사 난수는 물리 난수와 달리 재현성이 있기 때문에 마스킹된 확장 식별 정보가 동일한 패킷으로부터는 동일한 의사 난수가 생성되고, 동일한 어드레스 정보가 산출된다. 예컨대, 도 9의 하단에 도시한 바와 같이 동일한 마스킹된 확장 식별 정보를 포함하는 패킷(P1 및 P2)으로부터는 동일한 어드레스 정보(x1, y1)가 산출되어 있다. 유사하게, 패킷(P3 및 P4)으로부터는 동일한 어드레스 정보(x2, y2)가 산출된다.
상술한 바와 같이, 각 패킷은 적절하게 부호화될 수 있지만 어드레스 정보를 산출할때마다 복호할 필요가 없도록 데이터 부분과 확장 식별 정보 부분을 개별적으로 부호화하는 것이 바람직하다. 유사하게, 처리 명령 부분 단독으로 또는 확장 식별 정보 부분 전체로 부호화할 경우에는 복호하지 않고 최초로 실행되어야 할 명령의 좌/우 정보를 마스킹할 수 있는 인코딩을 사용하는 것이 바람직하다.
또한, 의사 난수의 생성에는 공지된 방법을 사용할 수 있다. 어드레스 정보의 산출 시간의 관점으로부터는 LCG(Linear Congruential Generator:선형 합동법)이나 LFSR(Linear Feedback Shift Register:선형 귀환 시프트 레지스터) 등 고속의 생성 방법을 사용하는 것이 바람직하다.
또한, 어드레스 정보 산출부(211)는 미리 생성된 의사 난수 테이블을 참조해서 어드레스 정보를 산출하도록 구성될 수 있다. 이 경우, 어드레스 정보 산출부(211)는 패킷마다 의사 난수를 생성할 필요가 없기 때문에 어드레스 정보의 산출 시간을 단축할 수 있다. 이러한 구성에 있어서는 각 PE의 어드레스 정보 산출부가 동일한 의사 난수 테이블을 구비하거나 각 PE의 어드레스 정보 산출부가 공통의 의사 난수 테이블을 판독할 필요가 있다.
한편, PE의 사용 효율의 관점으로부터는 패킷 분포가 균일하도록 의사 난수가 균일 분포에 가까울수록 바람직하다. 또한, 확률 변수족이 예측 불가능하면 균일 분포인 것과 등가이므로 CSPRNG(Cryptographically Secure Pseudo-Random Number Generator:암호론적 의사 난수생성기)을 사용함으로써 PE의 사용 효율의 향상을 도모할 수 있다. 그러나, 명령에 의해서도 각 패킷의 처리시간은 다르기 때문에 의사 난수가 균일 분포이어도 패킷 분포가 균일하지 않을 수 있다.
따라서, 어드레스 정보의 산출 시간이 지나치게 길게 되지 않을 정도로 균일 분포에 가까운 의사 난수를 사용하는 것이 바람직하다. 예컨대, 어드레스 정보의 산출 시간이 후술하는 해시값의 산출 시간보다 길어지는 것은 바람직하지 않다.
입/출력부(210)는 이어서 패킷의 어드레스 정보가 상기 PE를 나타내고 있는지의 여부를 판정해서 상기 PE를 나타내고 있을 경우에는 상기 패킷을 취득해서 비교/선택부(230)에 입력한다. 한편, 패킷의 어드레스 정보가 상기 PE를 나타내고 있지 않을 경우에는 어드레스 정보가 나타내는 PE에 가까운 방향으로 인접하는 PE에 상기 패킷을 전송한다. 여기서, 도 10을 참조해서 이러한 패킷의 취득 및 전송을 실현하기 위해 입/출력부(210)의 구체적인 동작의 일예가 설명될 것이다. 도 10에 있어서는 현재 위치, 즉 상기 PE의 좌표를 (x0, y0)으로 해서 어드레스 정보가 나타내는 PE의 좌표를 (x1, y1)로 한다.
입/출력부(210)는 인접하는 PE나 MCE로부터 패킷이 입력되면(S1), 현재 위치의 Y좌표(y0)와 어드레스 정보의 Y좌표(y1)를 비교한다(S2).
S2에 있어서, 2개의 Y좌표가 일치하고 있을 경우(S2:=)에는 현재 위치의 X좌표(x0)와 어드레스 정보의 X좌표(x1)를 비교한다(S3).
또한, y0이 y1보다 클 경우(S2:>)에는 어드레스 정보가 나타내는 PE는 현재 위치보다 Y좌표가 작은 방향으로 위치하고 있기 때문에 y0-1방향에 인접하는 PE, 즉 좌표(x0, y0-1)에 위치하는 PE에 패킷을 전송하고(S31), 처리를 종료한다(S5). 한편, y0이 y1보다 작을 경우(S2:<)에는 어드레스 정보가 나타내는 PE는 현재 위치보다 Y좌표가 큰 방향으로 위치하고 있기 때문에 y0+1방향에 인접하는 PE, 즉 좌표(x0, y0+1)에 위치하는 PE에 패킷을 전송하고(S32), 처리를 종료한다(S5).
S3에 있어서, 2개의 X좌표가 일치하고 있을 경우(S3:=)에는 어드레스 정보가 상기 PE를 나타내고 있기 때문에 패킷을 취득해서 비교/선택부(230)에 입력하고(S4), 처리를 종료한다(S5).
또한, x0이 x1보다 클 경우(S3:>)에는 어드레스 정보가 나타내는 PE는 현재의 위치보다 X좌표가 작은 방향으로 위치하고 있기 때문에 x0-1방향에 인접하는 PE, 즉 좌표(x0-1, y0)에 위치하는 PE에 패킷을 전송하고(S41), 처리를 종료한다(S5). 한편, x0이 x1보다 작을 경우(S3:<)에는 어드레스 정보가 나타내는 PE는 현재 위치보다 X좌표가 큰 방향으로 위치하고 있기 때문에 x0+1방향에 인접하는 PE, 즉 좌표(x0+1, y0)에 위치하는 PE에 패킷을 전송하고(S42), 처리를 종료한다(S5).
이상의 동작을 각 PE의 입/출력부가 실행할 때 각 패킷은 어드레스 정보가 나타내는 PE까지 전달되고 취득된다. 예컨대, 도 3에 있어서 MCE(301)로부터 PE(101)에 발행된 패킷의 어드레스 정보가 PE(115)를 나타낼 경우에는 상기 패킷은 PE(102), PE(103), PE(107), 및 PE(111)를 통해서 PE(115)까지 전달된다. 또한, 예컨대 PE(115)에 의해 처리되어 새롭게 생성된 패킷의 어드레스 정보가 PE(104)를 나타낼 경우에는 상기 패킷은 PE(114), PE(113), PE(112), 및 PE(108)를 통해서 PE(104)까지 전달된다.
즉, 각 패킷은 우선 어드레스 정보가 나타내는 PE와 Y좌표가 일치할때까지 도 3의 상하 방향으로 이동한 후 X좌표가 일치할때까지 도 3의 좌우측 방향으로 이동한다. 이러한 이동규칙을 채용함으로써 패킷의 이동 경로는 항상 최단이 된다. 또한, 이동 중의 방향 전환은 1회 또는 0회가 되고, PE간에 있어서의 통신로(500)의 사용 빈도를 평균화할 수 있다.
상술한 바와 같이, 본 발명의 실시형태에 의한 데이터 처리 장치는 실행 노드에 상당하는 PE가 타일 프로세서와 같이 행렬 형상으로 배치되어 있지만 처리 대상의 패킷이 그 비트열 자체에 의거하여 동적으로 배치되는 점에서 EDGE 아키텍쳐와 크게 다르다.
본 발명의 데이터 처리 장치는 본 발명의 실시형태에 도시된 행렬 형상의 배치 및 접속에 한정되는 것은 아니다. 예컨대, 도 3에 있어서 PE간에 있어서의 통신로(500)의 일부를 생략함으로써 링형의 접속이 달성된다. 또한, 예컨대 모든 PE간이나 PE와 MCE간을 직접 접속할 수도 있다. 이 경우, 전기 배선에 의한 전기 신호의 전달에서는 PE나 MCE의 개수가 증가할수록 배선이 곤란하게 된다. 한편, 상술한 전자파를 사용한 정보 전달에서는 용이하게 통신로(500)를 추가할 수 있다.
비교/선택부(230)는 입/출력부(210)에 의해 취득된 패킷(이하, 취득 패킷으로 칭함) 중 처리 가능한 것을 ALU(260)에 입력한다. 또한, 비교/선택부(230)는 처리 가능하지 않은 패킷을 버퍼 메모리(240)에 기억시킴과 아울러 버퍼 메모리(240)에 기억되어 있는 패킷(이하, 기억 패킷으로 칭함)을 판독한다.
보다 구체적으로는, 취득 패킷의 최초로 실행되어야 할(최후미의) 명령이 1입력/1출력 명령일 경우 비교/선택부(230)는 취득 패킷만을 오퍼랜드 버퍼(250a 또는 250b)를 통해서 ALU(260)에 입력한다.
한편, 취득 패킷의 최초로 실행되어야 할(최후미의) 명령이 2입력/1출력 명령일 경우 비교/선택부(230)는 상기 마스킹된 확장 식별 정보가 취득 패킷과 일치하는 패킷을 기억 패킷으로부터 검색한다. 그리고, 일치하는 기억 패킷이 존재할 때에는 비교/선택부(230)는 상기 일치하는 2개의 패킷을 쌍으로 해서 오퍼랜드 버퍼(250a 및 250b)를 통해서 ALU(260)에 입력한다. 또한, 일치하는 기억 패킷이 존재하지 않을 때에는 비교/선택부(230)는 취득 패킷을 버퍼 메모리(240)에 기억시킨다.
마스킹된 확장 식별 정보가 취득 패킷과 일치하는 기억 패킷을 효율적으로 검색하기 위해서 본 발명의 실시형태에서는 버퍼 메모리(240)가 해시 테이블을 포함한다. 또한, 비교/선택부(230)는 우선 해시값 산출부(231)가 취득 패킷으로부터 해시값을 산출한다. 해당 해시값은 어드레스 정보의 경우와 유사하게 취득 패킷의 마스킹된 확장 식별 정보에 의거하여 산출된다. 그리고, 비교/선택부(230)는 취득 패킷을 버퍼 메모리(240)에 기억시킬 경우에는 취득 패킷을 그 해시값과 대응해서 해시 테이블에 기억한다.
또한, 해시 테이블에는 공지의 실시 방법을 사용할 수 있다. 도 11은 버퍼 메모리(240)에 실시되는 해시 테이블의 일예를 도시하고 있다. 상기 해시 테이블에서는 해시 충돌의 해결 방법으로서 오픈 어드레스법(open addressing)을 사용해서 재해시 순서로서 선형탐색법(Linear probing)을 사용하고 있다.
도 11에 있어서는, 일예로서 해시값이 n+3이 되는 패킷(1)이 기억된 후에 해시값이 n이 되는 패킷(2 내지 5)이 기억된 경우를 도시하고 있다. 패킷(1)은 루트 배열[256]의 요소(n+3)의 위치에 기억되고, 플래그 "1" 및 카운트 값 "1"이 설정된다. 또한, 패킷(2 내지 5)은 각각 요소(n, n+1, n+2, n+4)의 위치에 기억되고, 요소(n)의 위치에 플래그 "1" 및 카운트 값 "4"가 설정되어 있다.
ALU(260)는 오퍼랜드 버퍼(250a 및 250b)를 통해서 입력되는 오퍼랜드에 대해서 산술연산(정수연산 및/또는 부동 소수점연산)과 논리 연산을 행해서 연산 결과를 출력한다. 보다 구체적으로는, ALU(260)는 입력된 패킷의 데이터에 대해서 최초로 실행되어야 할(최후미의) 명령을 실행하고, 실행 결과의 데이터에 실행된 명령을 제외한 확장 식별 정보를 부가하여 새로운 패킷을 생성해서 다시 입/출력부(210)에 입력한다.
상술한 바와 같이, 각 PE는 입력된 패킷의 확장 식별 정보 부분으로부터 어드레스 정보를 요구해서 어드레스 정보가 상기 PE를 나타내는 패킷만을 취득해서 어드레스 정보가 상기 PE를 나타내지 않는 패킷을 다른 PE에 전송한다. 그리고, 취득 패킷의 데이터에 대해서 최초로 실행되어야 할(최후미의) 명령을 실행하고 실행 결과의 데이터에 실행된 명령을 포함하지 않는 확장 식별 정보를 부가하여 새로운 패킷을 생성해서 생성된 패킷을 그 어드레스 정보를 따라 전송 또는 취득한다.
패킷이 입력될때마다 각 PE가 어드레스 정보를 산출하는 대신에 산출한 어드레스 정보를 패킷에 부가해서 상기 어드레스 정보를 재이용해도 좋다. 예컨대, MCE가 패킷을 PE에 발행할 경우 및 PE가 새로운 패킷을 생성할 경우에 산출된 어드레스 정보를 부가함으로써 그 이외의 경우에는 부가되어 있는 어드레스 정보를 그대로 이용할 수 있다. 이 경우, 어드레스 정보가 부가되어 있는 패킷에 대해서 어드레스 정보를 산출할 필요는 없고, 각 PE에서 취득되는 패킷에 부가되어 있는 어드레스 정보는 동일해서 어드레스 정보를 데이터 부분 및 확장 식별 정보 부분 중 어느 하나에 부가할 수 있다.
또한, 광을 이용하여 정보 전달을 행할 경우 정보 전달원인 PE의 발광 소자는 어드레스 정보가 나타내는 정보 전달 목적지의 PE를 위해 설정된 파장의 광을 발광함으로써 전송을 반복하지 않고 어드레스 정보가 나타내는 PE에 패킷을 직접 전달할 수 있다. 이 경우, 각 PE는 다른 PE나 MCE로부터 입력되는 패킷의 어드레스 정보가 상기 PE를 나타내고 있는지의 여부를 판정하지 않고 어드레스 정보가 상기 PE를 나타내는 패킷만을 취득할 수 있다.
또한, 각 PE에 의해 새롭게 생성된 패킷에 관해서도 어드레스 정보가 상기 PE를 나타내고 있는지의 여부를 판정하지 않고 어드레스 정보가 나타내는 정보 전달 목적지인 PE를 위해 설정된 파장의 광을 발광하는 구성이 될 수도 있다. 이 경우, 정보 전달원과 동일한 PE를 포함하는 어느 하나의 PE의 수광소자가 상기 파장의 광을 수광해서 어드레스 정보가 나타내는 PE에 패킷을 전달할 수 있다.
=== 데이터 처리 장치의 동작의 구체적인 일예 ===
여기서, 도 12를 참조해서 도 9에 도시한 패킷(P1 내지 P5)에 대한 데이터 처리 장치(1)의 동작의 구체적인 일예가 설명될 것이다.
상술한 바와 같이, 패킷(P1 및 P2)에 대해서는 동일한 어드레스 정보(x1, y1)가 산출되어 있기 때문에 패킷(P1 및 P2)은 좌표(x1, y1)에 위치하는 PE까지 전달되어 최후미의 가산 명령(I4)이 실행된다. 그리고, 실행 결과의 데이터(dp+0)에 가산 명령(I4)을 포함하지 않는 확장 식별 정보가 부가되어 새로운 패킷(P6)이 생성된다. 패킷(P6)으로부터 산출되는 어드레스 정보를 (x4, y4)로 한다.
유사하게, 패킷(P3 및 P4)에 대해서는 동일한 어드레스 정보(x2, y2)가 산출되어 있기 때문에 패킷(P3 및 P4)은 좌표(x2, y2)에 위치하는 PE까지 전달되고, 최후미의 가산 명령(I1)이 실행된다. 그리고, 실행 결과의 데이터(sp+0)에 가산 명령(I1)을 포함하지 않는 확장 식별 정보가 부가되어 새로운 패킷(P7)이 생성된다. 패킷(P7)으로부터 산출되는 어드레스 정보를 (x5, y5)로 한다.
패킷(P7)은 좌표(x5, y5)에 위치하는 PE까지 전달되고, 최후미의 판독 명령(I2)(1입력/1출력 명령)이 실행된다. 그리고, 실행 결과의 데이터[*(sp+0)]에 판독 명령(I2)을 포함하지 않는 확장 식별 정보가 부가되어 새로운 패킷(P8)이 생성된다. 패킷(P8)의 마스킹된 확장 식별 정보가 패킷(P5)과 동일해지기 때문에 패킷(P5)과 동일한 어드레스 정보(x3, y3)가 산출된다.
패킷(P8 및 P5)은 좌표(x3, y3)에 위치하는 PE까지 전달되고, 최후미의 제산 명령(I3)이 실행된다. 그리고, 실행 결과의 데이터[*(sp+0)/2]에 제산 명령(I3)을 포함하지 않는 확장 식별 정보가 부가되어 새로운 패킷(P9)이 생성된다. 패킷(P9)의 마스킹된 확장 식별 정보가 패킷(P6)과 동일해지기 때문에 패킷(P6)과 동일한 어드레스 정보(x4, y4)가 산출된다.
패킷(P6 및 P9)은 좌표(x4, y4)에 위치하는 PE까지 전달되고, 최후미의 기록 명령(I5)이 실행된다. 그리고, 실행 결과의 데이터[*(dp+0)=*(sp+0)/2]에 기록 명령(I5)을 포함하지 않는 확장 식별 정보가 부가되어 새로운 패킷(P10)이 생성된다.
패킷(P10)은 처리 명령을 포함하지 않기 때문에 MCE ID가 나타내는 MCE(301)까지 리턴된다. 패킷(P10)을 MCE(301)까지 리턴시키기 위해서 각 PE의 입/출력부는 예외 처리를 행할 필요가 있다. 도 12에 있어서는, 일예로서 어드레스 정보 산출부(211)가 처리 명령을 포함하지 않는 패킷의 어드레스 정보를 (-1, m)로 산출하고 있다. 여기서, MCE ID=m으로 가정한다. 이 경우, 패킷(P10)의 어드레스 정보는 (-1, 1)이 된다. 예컨대, 도 3에 있어서, PE(115)가 패킷(P10)을 생성한 경우에는 패킷(P10)은 PE(114), PE(113), PE(109), PE(105), 및 PE(101)를 통해서 MCE(301)까지 전달된다.
또한, 각 PE에 있어서 버퍼 메모리나 오퍼랜드 버퍼가 가득차고, 취득 패킷을 처리할 수 없는 비지(busy) 상태의 경우에도 상기 패킷을 MCE ID가 나타내는 MCE까지 리턴시키는 것이 바람직하다. 이 경우의 예외 처리는, 예컨대 패킷의 명령수 정보를 최대 명령수보다 큰 값으로 설정하고, 이러한 패킷의 어드레스 정보도 (-1, m)으로 산출되는 것만 필요하다. 또한, 어느 하나의 PE가 비지 상태에 있을 경우 각 MCE는 새로운 처리 ID의 패킷의 발행을 정지하는 것이 바람직하다. 이러한 비지 상태의 제어를 위해, 예컨대 모든 PE와 MCE에 접속된 제어 신호선을 설치하고, 상기 제어 신호선을 통해서 비지 상태를 나타내는 비지 신호를 송신하는 것만 필요하다.
=== 데이터 처리 장치의 동작의 다른 구체적인 일예 ===
도 7에 도시한 패킷의 구성은 처리 명령 부분에 5개까지의 명령밖에 포함할 수 없다. 따라서, 보다 복잡한 처리를 행하기 위해서는 패킷의 처리 명령 부분에 명령을 추가할 필요가 있다.
도 5에 도시한 명령 추가 명령(기호/16진표기: "app2L"/52H, "app2R"/53H)은 이러한 명령의 추가 기능을 실현할 수 있다. 이하, 도 16 내지 도 18을 적절하게 참조해서 명령 추가 명령의 실행을 포함하는 데이터 처리 장치(1)의 동작의 구체적인 일예가 설명될 것이다. 여기서, 일예로서 배열 sp[1024]의 각 요소에 4를 승산한 다음 1을 가산하고, 또한 2로 제산한 값을 배열 dp[1024]에 기억하는 처리가 설명될 것이다.
도 16은 이러한 처리의 for 루프 내의 처리에 대응하는 데이터 플로우챠트를 나타내고 있다.
도 16에 있어서, D11 내지 D18은 데이터를 나타내고 있고, Ia는 명령 추가 명령을 나타내고 있고, I11 내지 I17은 명령 추가 명령 이외의 명령을 나타내고 있다. 가산 명령(I16)은 데이터[D11(dp)] 및 데이터[D12(ⅱ)]를 가산해서 데이터(dp+ⅱ)를 출력하고, 가산 명령(I11)은 데이터[D13(sp)] 및 데이터[D14(ⅱ)]를 가산해서 데이터(sp+ⅱ)를 출력한다.
데이터(D15)는 명령 열이며, 명령 추가 명령(Ia)은 데이터(sp+ⅱ)의 패킷의 처리 명령 부분에 데이터(D15)를 추가한다. 데이터(D15)의 명령 열은 데이터(sp+ⅱ)의 패킷에 대한 명령 추가 명령(Ia) 이후의 처리에 대응하고 있어, 구체적으로는 명령(I12 내지 I15, 및 I17)에 상당하다.
명령 추가 명령(Ia)에 의해 추가된 명령 중 우선 판독 명령(I12)은 기억 장치(6)로부터 데이터[*(sp+ⅱ)]를 판독한다.
이어서, 승산 명령(I13)은 데이터[*(sp+ⅱ)]에 데이터 D16(4)을 승산해서 데이터[*(sp+ⅱ)*4]를 출력한다.
이어서, 가산 명령(I14)은 데이터[*(sp+ⅱ)*4]에 데이터 D17(1)을 가산해서 데이터[*(sp+ⅱ)*4+1]을 출력한다.
이어서, 제산 명령(I15)은 데이터[*(sp+ⅱ)*4+1]을 데이터 D18(2)로 제산해서 데이터[*(sp+ⅱ)*4+1]/2를 출력한다.
최후에, 기록 명령(I17)은 기억 장치(6)의 데이터[*(dp+ⅱ)]에 데이터[*(sp+ⅱ)*4+1]/2를 기록한다.
이상의 데이터 플로우를 통해 배열 sp[1024]의 1개의 요소에 4를 승산한 다음 1을 가산하고 또한 2로 제산한 값이 배열 dp[1024]에 기억된다. 도 17은 도 16에 도시한 데이터 플로우챠트에 의거하여 생성된 기본 패킷 열에 대해 for 루프를 전개한 후의 패킷 열 중 MCE ID=1이고 또한 처리 ID=1인 최초의 8패킷(P11 내지 P18)을 나타내고 있다.
여기서, 도 18을 참조해서 도 17에 도시한 패킷(P11 내지 P18)에 대한 데이터 처리 장치(1)의 동작의 구체적인 일예가 설명될 것이다.
패킷(P11 및 P12)에 대해서는 동일한 어드레스 정보가 산출되기 때문에 패킷(P11 및 P12)은 상기 동일한 어드레스 정보가 나타내는 PE까지 전달되고, 최후미의 가산 명령(I16)이 실행된다. 그리고, 실행 결과의 데이터(dp+0)에 가산 명령(I16)을 포함하지 않는 확장 식별 정보가 부가되어 새로운 패킷(P19)이 생성된다.
유사하게, 패킷(P13 및 P14)에 대해서는 동일한 어드레스 정보가 산출되기 때문에 상기 동일한 어드레스 정보가 나타내는 PE까지 전달되고, 최후미의 가산 명령(I11)이 실행된다. 그리고, 실행 결과의 데이터(sp+0)에 가산 명령(I11)을 포함하지 않는 확장 식별 정보가 부가되어 새로운 패킷(P20)이 생성된다. 패킷(P20)은 확장 식별 정보가 패킷(P15)과 동일해지기 때문에 패킷(P15)과 동일한 어드레스 정보가 산출된다.
패킷(P20 및 P15)은 동일한 어드레스 정보가 나타내는 PE까지 전달되고, 최후미의 명령 추가 명령(Ia)이 실행된다. 그리고, 패킷(P20)의 데이터(sp+0)에 처리 명령 부분으로부터 명령 추가 명령(Ia)이 제거되고 그 후 데이터(D15)가 추가된 확장 식별 정보가 부가되어 새로운 패킷(P21)이 생성된다.
패킷(P21)은 산출된 어드레스 정보가 나타내는 PE까지 전달되고, 최후미의 판독 명령(I12)(1입력/1출력 명령)이 실행된다. 그리고, 실행 결과의 데이터[*(sp+0)]에 판독 명령(I12)을 포함하지 않는 확장 식별 정보가 부가되어 새로운 패킷(P22)이 생성된다. 또한, 패킷(P22)은 마스킹된 확장 식별 정보가 패킷(P16)과 동일해지기 때문에 패킷(P16)과 동일한 어드레스 정보가 산출된다.
패킷(P22 및 P16)은 동일한 어드레스 정보가 나타내는 PE까지 전달되고, 최후미의 승산 명령(I13)이 실행된다. 그리고, 실행 결과의 데이터[*(sp+0)*4]에 승산 명령(I13)을 포함하지 않는 확장 식별 정보가 부가되어 새로운 패킷(P23)이 생성된다. 패킷(P23)은 마스킹된 확장 식별 정보가 패킷(P17)과 동일해지기 때문에 패킷(P17)과 동일한 어드레스 정보가 산출된다.
패킷(P23 및 P17)은 동일한 어드레스 정보가 나타내는 PE까지 전달되고, 최후미의 가산 명령(I14)이 실행된다. 그리고, 실행 결과의 데이터[*(sp+0)*4+1]에 가산 명령(I14)을 포함하지 않는 확장 식별 정보가 부가되어 새로운 패킷(P24)이 생성된다. 패킷(P24)은 마스킹된 확장 식별 정보가 패킷(P18)과 동일해지기 때문에 패킷(P18)과 동일한 어드레스 정보가 산출된다.
패킷(P24 및 P18)은 동일한 어드레스 정보가 나타내는 PE까지 전달되고, 최후미의 제산 명령(I15)이 실행된다. 그리고, 실행 결과의 데이터[*(sp+0)*4+1]/2에 제산 명령(I15)을 포함하지 않는 확장 식별 정보가 부가되어 새로운 패킷(P25)이 생성된다. 패킷(P25)은 마스킹된 확장 식별 정보가 패킷(P19)과 동일해지기 때문에 패킷(P19)과 동일한 어드레스 정보가 산출된다.
패킷(P19 및 P25)은 동일한 어드레스 정보가 나타내는 PE까지 전달되고, 최후미의 기록 명령(I17)이 실행된다. 그리고, 실행 결과의 데이터*(dp+0)=[*(sp+0)*4+1]/2에 기록 명령(I17)을 포함하지 않는 확장 식별 정보가 부가되어 새로운 패킷(P26)이 생성된다. 또한, 패킷(P26)은 처리 명령을 포함하지 않기 때문에 MCE ID가 나타내는 MCE(301)까지 리턴된다.
그런데, 기록 명령(I17)의 실행에 의해 구체적으로는 패킷(P19)의 데이터(dp+0)가 나타내는 기억 장치(6)의 어드레스에 기억되어 있는 데이터[*(dp+0)]에 패킷(P25)의 데이터[*(sp+0)*4+1]/2가 기록된다. 따라서, 패킷(P26)의 데이터*(dp+0)=[*(sp+0)*4+1]/2는 기록 명령(I17)의 실행 자체를 나타내고 있다. 따라서, 기록 명령(I17)의 실행 후는 패킷(P26)을 MCE(301)까지 리턴시키지 않고 소멸될 수 있다.
이와 같이 해서, 도 5에 도시한 명령 추가 명령을 실행함으로써 패킷의 처리 명령 부분에 명령을 추가할 수 있다. 유사하게, 도 5에 도시한 데이터 추가 명령(기호/16진표기: "applL"/50H, "applR"/51H)을 실행함으로써 패킷의 데이터 부분에 데이터를 추가할 수도 있다.
=== 패킷의 다른 구성예 ===
도 7에 있어서, 데이터 처리 장치(1)에 의해 처리되는 패킷의 구성을 나타냈지만 이것에 한정되는 것은 아니다. 여기서, 데이터 처리 장치(1)에 의해 처리되는 패킷의 다른 구성예를 도 19에 도시한다. 도 19에 있어서는 도 17에 도시한 패킷(P11 내지 P18)과 마찬가지의 실행 결과를 얻을 수 있는 패킷(P31 내지 P38)이 도시되어 있다.
도 19에 있어서, 확장 식별 정보 부분은 도 7과 동일한 구성으로 되어 있다. 그러나, 각 PE는 새로운 패킷을 생성할 때에 확장 식별 정보 부분으로부터 실행된 명령을 제거하지 않는다. 이 경우, 최초로 실행되어야 할 명령이 최후미에 배치되지 않음으로써 명령수 정보는 미처리된 명령수와 최초로 실행되어야 할 명령을 나타내기 위해서 필수적인 정보가 된다.
한편, 데이터 부분은 데이터 본체뿐만 아니라 상기 데이터의 데이터 타입 정보 및 연장 플래그를 포함한다. 또한, 데이터 타입 정보는, 예컨대 "정수형"이나 "부동 소수점형"등의 데이터 타입을 나타내고, 데이터 타입마다 미리 데이터 길이를 설정해 둠으로써 데이터 길이 정보의 기능도 실현할 수 있다. 또한, 데이터 타입으로서, "명령형"을 구비함으로써 후술하는 바와 같이 명령의 추가 기능을 실현할 수 있다. 도 20은 상기 패킷의 구성에 있어서의 데이터 플로우챠트를 도시하고 있고, 명령 추가 명령(Ia)을 사용하지 않고, 명령 추가 처리(Pa)에 의해 명령의 추가 기능을 실현하고 있다. 연장 플래그는 명령 추가 처리(Pa)에 있어서 사용된다.
또한, 도 19에 있어서 패킷(P31, P32, 및 P36 내지 P38)은 데이터 본체 및 확장 식별 정보 부분이 도 17에 도시한 패킷(P11, P12, 및 P16 내지 P18)과 일치한다. 또한, 이들 패킷은 모두 데이터 타입 정보가 "정수형"이며, 연장 플래그가 "0"으로 설정되어 있다.
패킷(P33 및 P34)은 패킷(P13 및 P14)으로부터 명령 추가 명령(IaL)이 제거되어 명령수 정보가 "1"로 되어 있다. 또한, 명령 추가 명령(IaL)의 대신에 명령 추가 처리(Pa)에 있어서 처리 명령 부분에 명령이 부가되는 측의 것을 나타내기 위해서 연장 플래그가 "1"로 되어 있다. 또한, 이들 패킷은 모두 데이터 타입 정보가 "정수형"으로 되어 있다.
패킷(P35)은 명령 추가 명령(IaR) 대신에 패킷(P33 및 P34)과 동일한 처리 명령을 포함하고, 명령 추가 처리(Pa)에 있어서 명령을 추가하는 측의 것을 나타내기 위해서 데이터 타입 정보가 "명령형"으로 되어 있다. 그러나, 패킷(P33 및 P34)과 동일한 처리 명령은 패킷(P35)의 데이터(D15)에 대해서 처리되어야 할 것이 아니기 때문에 명령수 정보가 "0"으로 되어 있다. 또한, 패킷(P35)은 연장 플래그가 "0"으로 되어 있다.
도 19에 있어서는 어드레스 정보를 산출할 때 및 취득 패킷과 기억 패킷을 비교할 때에 사용되는 부분을 각 패킷에 대해서 화살표의 범위로 도시하고 있다. 예컨대, 패킷(P31 내지 P34, 및 P36 내지 P38)에 있어서는 식별 정보 부분, 및 처리 명령 부분 중 명령수 정보가 나타내는 미처리의 명령만이 추출되어, 최초로 실행되어야 할 명령의 좌/우 정보가 마스킹되어 어드레스 정보의 산출 등이 실행된다. 따라서, 이들 패킷에 있어서는 새로운 패킷을 생성할 때에 확장 식별 정보 부분으로부터 실행된 명령을 제거할 경우와 유사하게 어드레스 정보의 산출 등이 실행된다.
그러나, 데이터 타입 정보가 "명령형"인 패킷(P35) 및 연장 플래그가 "1"인 패킷에 있어서는 명령수 정보가 "0"일 경우에 확장 식별 정보 부분 전체에 의거하여 어드레스 정보의 산출 등이 실행된다.
여기서, 도 21을 참조해서 도 19에 도시한 패킷(P31 내지 P38)에 대한 데이터 처리 장치(1)의 동작의 구체적인 일예가 설명될 것이다.
패킷(P31 및 P32)에 대해서는 동일한 어드레스 정보가 산출되기 때문에 상기 동일한 어드레스 정보가 나타내는 PE까지 전달되고, 명령수 정보가 나타내는 최초로 실행되어야 할 가산 명령(I16)이 실행된다. 그리고, 실행 결과의 데이터(dp+0)에 명령수 정보로부터 1을 감산한 확장 식별 정보가 부가되어 새로운 패킷(P39)이 생성된다. 패킷(P39)에서 명령수 정보가 "1"이 되기 때문에 잔존하고 있는 가산 명령(I16)은 어드레스 정보의 산출에 사용되지 않는다.
유사하게, 패킷(P33 및 P34)은 동일한 어드레스 정보가 산출되기 때문에 상기 동일한 어드레스 정보가 나타내는 PE까지 전달되고, 명령수 정보가 나타내는 최초로 실행되어야 할 가산 명령(I11)이 실행된다. 그리고, 실행 결과의 데이터(sp+0)에 명령수 정보로부터 1을 감산한 확장 식별 정보가 부가되어 새로운 패킷(P40)이 생성된다. 패킷(P40)은 연장 플래그가 "1"이며, 명령수 정보가 "0"이 되기 때문에 확장 식별 정보 부분 전체에 의거하여 패킷(P35)과 동일한 어드레스 정보가 산출된다.
모든 명령수 정보가 "0"인 패킷(P40 및 P35)은 동일한 어드레스 정보가 나타내는 PE까지 전달되어 명령 추가 처리(Pa)가 실행된다. 그리고, 연장 플래그가 "1"인 패킷(P40)의 데이터(sp+0)에 처리 명령 부분을 데이터 타입 정보가 "명령형"인 패킷(P35)의 데이터(D15)로 한 확장 식별 정보가 부가되어 새로운 패킷(P41)이 생성된다.
패킷(P41)의 명령수 정보는 데이터(D15)에 포함되어 있었던 명령수 "5"가 된다. 또한, 패킷(P41)의 연장 플래그는 패킷(P35)의 연장 플래그 "0"을 계승한다(inheritance). 한편, 데이터 타입 정보가 "명령형"인 패킷의 연장 플래그를 "1"로 함으로써 명령 추가 처리에 의해 새롭게 생성되는 패킷에 대해서도 명령 추가 처리를 행할 수 있다.
패킷(P41)은 산출된 어드레스 정보가 나타내는 PE까지 전달되고, 명령수 정보가 나타내는 최초로 실행되어야 할 판독 명령(I12)(1입력/1출력 명령)이 실행된다. 그리고, 실행 결과의 데이터[*(sp+0)]에 명령수 정보로부터 1을 감산한 확장 식별 정보가 부가되어 새로운 패킷(P42)이 생성된다. 패킷(P42)은 명령수 정보가 "4"가 되기 때문에 잔존하고 있는 판독 명령(I12)은 어드레스 정보의 산출에 사용되지 않고 패킷(P36)과 동일한 어드레스 정보가 산출된다.
패킷(P42 및 P36)은 동일한 어드레스 정보가 나타내는 PE까지 전달되고, 명령수 정보가 나타내는 최초로 실행되어야 할 승산 명령(I13)이 실행된다. 그리고, 실행 결과의 데이터[*(sp+0)*4]에 명령수 정보로부터 1을 감산한 확장 식별 정보가 부가되어 새로운 패킷(P43)이 생성된다. 패킷(P43)은 명령수 정보가 "3"이 되기 때문에 잔존하고 있는 승산 명령(I13) 및 판독 명령(I12)은 어드레스 정보의 산출에 사용되지 않고, 패킷(P37)과 동일한 어드레스 정보가 산출된다.
패킷(P43 및 P37)은 동일한 어드레스 정보가 나타내는 PE까지 전달되고, 명령수 정보가 나타내는 최초로 실행되어야 할 가산 명령(I14)이 실행된다. 그리고, 실행 결과의 데이터[*(sp+0)*4+1]에 명령수 정보로부터 1을 감산한 확장 식별 정보가 부가되어 새로운 패킷(P44)이 생성된다. 패킷(P44)은 명령수 정보가 "2"가 되기 때문에 잔존하고 있는 가산 명령(I14), 승산 명령(I13), 및 판독 명령(I12)은 어드레스 정보의 산출에 사용되지 않고, 패킷(P38)과 동일한 어드레스 정보가 산출된다.
패킷(P44 및 P38)은 동일한 어드레스 정보가 나타내는 PE까지 전달되고, 명령수 정보가 나타내는 최초로 실행되어야 할 제산 명령(I15)이 실행된다. 그리고, 실행 결과의 데이터[*(sp+0)*4+1]/2에 명령수 정보로부터 1을 감산한 확장 식별 정보가 부가되어 새로운 패킷(P45)이 생성된다. 패킷(P45)은 명령수 정보가 "1"이 되기 때문에 잔존하고 있는 제산 명령(I15), 가산 명령(I14), 승산 명령(I13), 및 판독 명령(I12)은 어드레스 정보의 산출에 사용되지 않고, 패킷(P39)과 동일한 어드레스 정보가 산출된다.
패킷(P39 및 P45)은 동일한 어드레스 정보가 나타내는 PE까지 전달되고, 명령수 정보가 나타내는 최초로 실행되어야 할 기록 명령(I17)이 실행된다. 그리고, 실행 결과의 데이터*(dp+0)=[*(sp+0)*4+1]/2에 명령수 정보로부터 1을 감산한 확장 식별 정보가 부가되어 새로운 패킷(P46)이 생성된다. 패킷(P46)은 데이터 타입 정보가 "명령형"에서도 연장 플래그가 "1"이 아니고, 명령수 정보가 "0"이 된다. 따라서, 패킷(P46)은 처리되어야 할 처리 명령을 포함하지 않기 때문에 MCE ID가 나타내는 MCE(301)까지 리턴되거나 또는 소멸한다.
이와 같이, 명령 추가 명령을 사용하지 않고 명령 추가 처리(Pa)를 행함으로써 패킷의 처리 명령 부분에 명령을 추가할 수 있다. 또한, 명령 추가 명령을 실행함으로써 패킷의 처리 명령 부분에 명령을 추가할 수도 있다.
상술한 바와 같이 데이터 처리 장치(1)에 있어서, 각 MCE는 데이터마다 처리 명령을 포함하는 확장 식별 정보가 부가된 패킷을 생성해서 각 패킷은 확장 식별 정보에 따라서 정해지는 어드레스 정보가 나타내는 PE에 의해 취득되고, 상기 PE가 패킷의 명령을 실행함으로써 처리 대상의 패킷이 그 비트열 자체에 의거하여 배치되고, 기존의 소프트웨어 자산을 실질적으로 그대로 이용해서 처리의 병렬성을 향상시킬 수 있다.
또한, 어드레스 정보가 확장 식별 정보에 따라서 동적으로 정해짐으로써 처리 대상의 패킷이 그 비트열 자체에 의거하여 동적으로 배치되어 처리의 병렬성을 보다 향상시킬 수 있다.
또한, 확장 식별 정보에 의거하여 의사 난수를 생성해서 상기 의사 난수에 따라서 어드레스 정보를 산출함으로써 패킷 분포를 균일 분포에 가깝게 해서 PE의 사용 효율의 향상을 도모할 수 있다.
또한, 어드레스 정보가 상기 PE를 나타내지 않는 패킷을 다른 PE에 전송함으로써 어드레스 정보가 나타내는 PE까지 패킷을 전달할 수 있다.
또한, 각 PE는 취득 패킷의 최초로 실행되어야 할 명령을 실행하고, 확장 식별 정보 중 실행된 명령에 이어서 실행되어야 할 명령을 최초로 실행되어야 할 명령으로 변경함으로써 상기 확장 식별 정보를 실행 결과의 데이터에 부가해서 새로운 패킷을 생성할 수 있다.
또한, 각 PE는 취득 패킷의 최초로 실행되어야 할 명령을 실행하고, 확장 식별 정보로부터 실행된 명령을 제거함으로써 상기 확장 식별 정보를 실행 결과의 데이터에 부가해서 새로운 패킷을 생성할 수 있다.
또한, 마스킹된 확장 식별 정보가 취득 패킷과 일치하는 기억 패킷이 존재할 때에는 상기 일치하는 2개의 패킷을 쌍으로 해서 ALU(260)에 입력해서 일치하는 기억 패킷이 존재하지 않을 때에는 취득 패킷을 버퍼 메모리(240)에 기억시킴으로써 2항 연산을 실행하는 2입력/1출력 명령을 실행할 수 있다.
또한, 취득 패킷의 최초로 실행되어야 할 명령이 1입력/1출력 명령일 경우에는 취득 패킷만을 ALU(260)에 입력함으로써 단항 연산을 실행하는 1입력/1출력 명령을 실행할 수 있다.
또한, 취득 패킷의 확장 식별 정보와 기억 패킷의 확장 식별 정보의 비교에 있어서, 최초로 실행되어야 할 명령의 좌/우 정보를 마스킹함으로써 비가환연산인 2항 연산을 실행하는 2입력/1출력 명령을 실행할 수 있다.
또한, 취득 패킷의 마스킹된 확장 식별 정보에 의거하여 해시값을 산출해서 취득 패킷을 그 해시값과 대응해서 해시 테이블에 기억함으로써 마스킹된 확장 식별 정보가 취득 패킷과 일치하는 기억 패킷의 검색을 효율적으로 실행할 수 있다.
또한, 마스킹된 확장 식별 정보에 의거하여 의사 난수를 생성해서 상기 의사 난수에 따라서 어드레스 정보를 산출함으로써 마스킹된 확장 식별 정보가 동일한 패킷을 PE까지 전달하는 동시에 PE의 사용 효율이 향상될 수 있다.
또한, 인접하는 PE간만을 서로 접속함으로써 배선 지연의 문제를 회피할 수 있다.
또한, 타일 프로세서와 같이 PE를 행렬 형상으로 배치해서 각 PE는 어드레스 정보가 나타내는 PE에 가까운 방향으로 인접하는 PE에 상기 패킷을 전송함으로써 패킷의 이동 경로를 최단으로 해서 PE수가 증가해도 동작 속도를 고속으로 유지할 수 있다.
또한, 각 MCE가 기억 장치(6)에 기억되어 있는 실행 코드나 중간 코드로부터 패킷 열을 순차적으로 생성함으로써 인터프리터형의 처리 장치를 구축할 수 있다.
또한, 처리되어야 할 처리 명령을 포함하지 않는 패킷을 MCE ID가 나타내는 MCE까지 리턴시킴으로써 각 MCE는 상기 패킷의 처리 ID의 처리가 완료해서 상기 처리 ID를 다시 사용할 수 있다.
또한, 각 MCE가 패킷을 순차적으로 생성하는 데이터 처리 장치(1)를 포함하는 데이터 처리 시스템을 구성함으로써 인터프리터형의 병렬 컴퓨터 시스템에 있어서의 처리의 병렬성을 향상시킬 수 있다.
또한, 상술한 바와 같이 도 7 또는 도 19에 도시한 패킷의 구성에 있어서, 각 패킷은 확장 식별 정보에 따라서 정해지는 어드레스 정보가 나타내는 PE에 의해 취득되고, 명령이 실행됨으로써 처리 대상의 패킷이 그 비트열 자체에 의거하여 배치되고, 기존의 소프트웨어 자산을 실질적으로 그대로 이용해서 처리의 병렬성을 향상시킬 수 있다.
또한, 소스 프로그램(P0)으로부터 미리 생성된 패킷 열을 실행 코드(P2)로서 기록 매체에 기록함으로써 상기 실행 코드(P2)를 컴파일러형의 처리 장치에 있어서 이용할 수 있다.
또한, 소스 프로그램(P0)으로부터 미리 생성된 패킷 열을 실행 코드(P2)로서 기억 장치(6)에 기억시킴으로써 각 MCE는 상기 실행 코드(P2)를 판독해서 이용할 수 있다.
또한, 전개 후의 패킷 열 중 식별 정보 부분의 적어도 일부를 생략한(널 문자로 했다) 중간 패킷 열을 기록 매체에 기록함으로써 상기 중간 패킷 열에 생략된 MCE ID나 처리 ID를 설정한 후 컴파일러형의 처리 장치에 있어서 이용할 수 있다.
또한, 전개 후의 패킷 열 중 식별 정보 부분의 적어도 일부를 생략한(널 문자로 했다) 중간 패킷 열을 기억 장치(6)에 기억시킴으로써 각 MCE는 상기 중간 패킷 열을 판독하여 생략된 MCE ID 및 처리 ID를 설정한 후 이용할 수 있다.
또한, 각 MCE가 미리 생성된 패킷 열을 판독하는 데이터 처리 장치(1)를 포함하는 데이터 처리 시스템을 구성함으로써 컴파일러형의 병렬 컴퓨터 시스템에 있어서의 처리의 병렬성을 향상시킬 수 있다.
또한, 상술한 바와 같이 각 PE는 데이터마다 처리 명령을 포함하는 확장 식별 정보가 부가된 패킷 중 확장 식별 정보에 따라서 정해지는 어드레스 정보가 상기 PE를 나타내는 패킷을 취득해서 명령을 실행함으로써 처리 대상의 패킷이 그 비트열 자체에 의거하여 배치되어 기존의 소프트웨어 자산을 실질적으로 그대로 이용해서 처리의 병렬성을 향상시킬 수 있다.
또한, 각 PE는 어드레스 정보가 상기 PE를 나타내지 않는 패킷을 다른 PE에 전송함으로써 어드레스 정보가 나타내는 PE까지 패킷을 전달할 수 있다.
또한, 각 PE는 취득 패킷의 최초로 실행되어야 할 명령을 실행하고, 실행 결과의 데이터에 실행된 명령에 이어서 실행되어야 할 명령을 최초로 실행되어야 할 명령으로 변경한 확장 식별 정보를 부가해서 새로운 패킷을 생성함으로써 상기 새로운 패킷에 관해서도 동적으로 배치해서 명령을 실행할 수 있다.
또한, 상기 실시형태는 본 발명의 이해를 쉽게 하기 위한 것이고, 본 발명을 한정해서 해석하도록 의도하는 것은 아니다. 본 발명은 그 취지를 일탈하지 않고, 변경, 개량될 수 있는 동시에 본 발명에는 그 등가물도 포함된다.
1 : 데이터 처리 장치 6 : 기억 장치
7 : 입력 장치 8 : 출력 장치
9 : 버스 100∼115 : PE(처리 요소)
210 : 입/출력부 211 : 어드레스 정보 산출부
212 : 발광 소자 213 : 수광소자
214a∼214d : 출력 포트 215a∼215d : 입력 포트
230 : 비교/선택부 231 : 해시값 산출부
240 : 버퍼 메모리 250a, 250b : 오퍼랜드 버퍼
260 : ALU(산술 논리 연산부) 300∼303 : MCE(메모리 제어 요소)
400 : 캐시 메모리 500 : 통신로(전송로)
501 : 투과재(코어) 502 : 반사재(클래딩)
503 : 흡수재

Claims (31)

  1. 데이터와, 그 데이터에 부가된 상기 데이터를 식별하는 식별 정보 및 상기 데이터에 대한 1개 이상의 처리 명령을 나타내는 명령 정보를 포함하는 확장 식별 정보를 각각 포함하는 패킷을 처리하도록 구성된 복수의 처리부를 포함하고;
    상기 확장 식별 정보의 적어도 명령 정보의 비트열에 의거하여 패킷의 어드레스 정보를 산출하도록 구성된 어드레스 정보 산출부,
    상기 복수의 처리부에 있어서의 각 처리부는,
    상기 패킷 중 어드레스 정보가 복수의 처리부에 있어서의 상기 각 처리부를 나타내는 패킷만을 취득하도록 구성된 입/출력부와,
    상기 입/출력부에 의해 취득된 상기 패킷의 상기 처리 명령을 실행하도록 구성된 연산부를 포함하며,
    상기 어드레스 정보 산출부는 상기 명령 정보가 복수의 처리 명령을 나타낼 때 적어도 상기 복수의 처리 명령을 나타내는 비트열에 의거하여 어드레스 정보를 산출하도록 구성된 것을 특징으로 하는 데이터 처리 장치.
  2. 데이터와, 그 데이터에 부가된 상기 데이터를 식별하는 식별 정보 및 상기 데이터에 대한 1개 이상의 처리 명령을 나타내는 명령 정보를 포함하는 확장 식별 정보를 각각 포함하는 패킷을 처리하도록 구성된 복수의 처리부를 포함하고;
    상기 확장 식별 정보의 적어도 명령 정보의 비트열에 의거하여 패킷의 어드레스 정보를 산출하도록 구성된 어드레스 정보 산출부,
    상기 복수의 처리부에 있어서의 각 처리부는,
    상기 패킷 중 어드레스 정보가 복수의 처리부에 있어서의 상기 각 처리부를 나타내는 패킷만을 취득하도록 구성된 입/출력부와,
    상기 입/출력부에 의해 취득된 상기 패킷의 상기 처리 명령을 실행하도록 구성된 연산부와,
    상기 패킷을 기억하도록 구성된 기억부,
    상기 입/출력부에 의해 취득된 상기 패킷의 상기 확장 식별 정보와 상기 기억부에 기억되어 있는 상기 패킷의 상기 확장 식별 정보를 비교해서 상기 취득된 패킷 및 상기 기억되어 있는 패킷으로부터 상기 연산부에 입력하는 패킷을 선택하도록 구성된 비교/선택부를 더 포함하고,
    상기 처리 명령은 2개의 패킷의 데이터를 각각 좌측 오퍼랜드 및 우측 오퍼랜드로 하는 2항 연산을 실행하는 처리 명령을 포함하고,
    상기 비교/선택부는,
    상기 입/출력부에 의해 취득된 상기 패킷의 최초로 실행되어야 할 처리 명령이 상기 2항 연산을 실행하는 처리 명령인 경우에 상기 식별 정보와 상기 명령 정보의 소정 부분이 상기 취득된 패킷과 일치하는 패킷이 상기 기억부에 기억되어 있을 때에는 상기 일치하는 식별 정보와 소정 부분을 포함하는 2개의 패킷의 데이터를 각각 좌측 오퍼랜드 및 우측 오퍼랜드로서 상기 연산부에 입력하고,
    상기 식별 정보와 상기 명령 정보의 소정 부분이 상기 취득된 패킷과 일치하는 패킷이 상기 기억부에 기억되어 있지 않을 때에는 상기 취득된 패킷을 상기 기억부에 기억하도록 구성된 것을 특징으로 하는 데이터 처리 장치.
  3. 제 1 항에 있어서,
    상기 어드레스 정보 산출부는 상기 확장 식별 정보의 적어도 명령 정보의 비트열로부터 생성되는 의사 난수에 따라서 상기 어드레스 정보를 산출하도록 구성되는 것을 특징으로 하는 데이터 처리 장치.
  4. 제 2 항에 있어서,
    상기 어드레스 정보 산출부는 상기 식별 정보와 상기 명령 정보의 소정 부분의 비트열로부터 생성된 의사 난수에 따라서 상기 어드레스 정보를 산출하도록 구성되는 것을 특징으로 하는 데이터 처리 장치.
  5. 제 3 항 또는 제 4 항에 있어서,
    상기 어드레스 정보 산출부는 미리 생성된 의사 난수 테이블을 참조해서 어드레스 정보를 산출하도록 구성되는 것을 특징으로 하는 데이터 처리 장치.
  6. 제 1 항 또는 제 2 항에 있어서,
    상기 복수의 처리부는 각각 어드레스 정보 산출부를 포함하는 것을 특징으로 하는 데이터 처리 장치.
  7. 제 1 항 또는 제 2 항에 있어서,
    상기 연산부는 상기 입/출력부에 의해 취득된 상기 패킷의 상기 처리 명령 중 최초로 실행되어야 할 처리 명령을 실행하고, 상기 처리 명령의 실행에 의해 생성되는 데이터에 실행된 상기 처리 명령에 이어서 실행되어야 할 처리 명령을 최초로 실행되어야 할 처리 명령으로 하는 상기 확장 식별 정보가 부가된 패킷을 생성하고,
    상기 생성된 패킷을 상기 입/출력부에 입력하도록 구성되는 것을 특징으로 하는 데이터 처리 장치.
  8. 제 7 항에 있어서,
    상기 연산부는 상기 입/출력부에 의해 취득된 상기 패킷의 처리 명령 중 최초로 실행되어야 할 처리 명령을 실행하고,
    상기 처리 명령의 실행에 의해 생성되는 데이터에 실행된 상기 처리 명령을 포함하지 않는 상기 확장 식별 정보가 부가된 패킷을 생성하고,
    상기 입/출력부에 상기 생성된 패킷을 입력하도록 구성되는 것을 특징으로 하는 데이터 처리 장치.
  9. 제 1 항에 있어서,
    상기 처리 명령은 2개의 패킷의 상기 데이터를 각각 좌측 오퍼랜드 및 우측 오퍼랜드로 하는 2항 연산을 실행하는 처리 명령을 포함하고;
    상기 복수의 처리부는,
    상기 패킷을 기억하도록 구성된 기억부와,
    상기 입/출력부에 의해 취득된 상기 패킷의 상기 확장 식별 정보와 상기 기억부에 기억되어 있는 상기 패킷의 상기 확장 식별 정보를 비교해서 상기 취득된 패킷 및 상기 기억되어 있는 패킷으로부터 상기 연산부에 입력하는 패킷을 선택하는 비교/선택부를 더 포함하고;
    상기 입/출력부에 의해 취득된 상기 패킷의 최초로 실행되어야 할 처리 명령이 상기 2항 연산을 실행하는 처리 명령일 경우에 상기 식별 정보와 상기 식별 정보의 소정 부분이 상기 취득된 패킷의 소정 부분과 일치하는 패킷이 상기 기억부에 기억되어 있을 때에는 상기 비교/선택부는 일치하는 상기 식별 정보와 상기 소정 부분을 포함하는 2개의 패킷의 데이터를 각각 좌측 오퍼랜드 및 우측 오퍼랜드로서 상기 연산부에 입력하고, 상기 식별 정보와 상기 명령 정보의 상기 소정 부분이 상기 취득된 패킷과 일치하는 패킷이 상기 기억부에 기억되어 있지 않을 때에는 비교/선택부가 상기 취득된 패킷을 상기 기억부에 기억시키는 것을 특징으로 하는 데이터 처리 장치.
  10. 제 2 항 또는 제 9 항에 있어서,
    상기 처리 명령은 1개의 패킷의 상기 데이터를 오퍼랜드로 하는 단항 연산을 실행하는 처리 명령을 포함하고,
    상기 입/출력부에 의해 취득된 상기 패킷의 최초로 실행되어야 할 처리 명령이 상기 단항 연산을 실행하는 처리 명령일 때에는 상기 비교/선택부는 상기 취득된 패킷을 상기 연산부에 입력하는 것을 특징으로 하는 데이터 처리 장치.
  11. 제 2 항 또는 제 9 항에 있어서,
    상기 처리 명령은 상기 2항 연산이 비가환연산일 경우에 상기 데이터를 상기 좌측 오퍼랜드 또는 우측 오퍼랜드 중 어느 것으로 할지를 나타내는 좌/우 정보를 포함하고,
    상기 명령 정보의 상기 소정 부분은 상기 명령 정보 중 최초로 실행되어야 할 처리 명령의 상기 좌/우 정보 이외의 부분인 것을 특징으로 하는 데이터 처리 장치.
  12. 제 2 항 또는 제 9 항에 있어서,
    상기 기억부는 상기 패킷이 기억된 해시 테이블을 포함하고,
    상기 비교/선택부는 상기 입/출력부에 의해 취득된 상기 패킷의 상기 명령 정보의 상기 식별 정보와 상기 소정 부분에 의거하여 해시값을 산출하도록 구성된 해시값 산출부를 포함하고, 상기 취득된 패킷을 상기 기억부에 기억시킬 경우에는 상기 취득된 패킷을 상기 해시값과 대응시켜서 상기 해시 테이블에 기억하는 것을 특징으로 하는 데이터 처리 장치.
  13. 제 1 항 또는 제 2 항에 있어서,
    상기 입/출력부는 상기 패킷 중 상기 어드레스 정보가 상기 각 처리부를 나타내지 않는 패킷을 다른 처리부에 전송하는 것을 특징으로 하는 데이터 처리 장치.
  14. 제 13 항에 있어서,
    상기 입/출력부는 상기 패킷 중 상기 어드레스 정보가 상기 각 처리부를 나타내지 않는 패킷을 상기 각 처리부에 인접하는 처리부에 전송하는 것을 특징으로 하는 데이터 처리 장치.
  15. 제 14 항에 있어서,
    상기 복수의 처리부는 행렬 형상으로 배치되고,
    상기 입/출력부는 상기 패킷 중 상기 어드레스 정보가 상기 각 처리부를 나타내지 않는 패킷을 상기 어드레스 정보가 나타내는 처리부에 가까운 방향으로 인접하는 처리부에 전송하는 것을 특징으로 하는 데이터 처리 장치.
  16. 제 1 항 또는 제 2 항에 있어서,
    기억 장치에 기억되어 있는 프로그램으로부터 상기 패킷을 생성하도록 구성된 제어부를 더 포함하는 것을 특징으로 하는 데이터 처리 장치.
  17. 제 16 항에 있어서,
    상기 제어부는 상기 식별 정보가 상기 제어부를 나타내는 발행인 정보를 포함하는 상기 패킷을 생성해서 상기 복수의 처리부 중 어느 하나에 발행하도록 구성되고,
    상기 패킷이 처리되어야 할 상기 처리 명령을 포함하지 않을 경우에는 상기 입/출력부는 상기 패킷을 상기 발행인 정보가 나타내는 제어부에 리턴시키도록 전송하는 것을 특징으로 하는 데이터 처리 장치.
  18. 제 16 항에 기재된 데이터 처리 장치와,
    상기 프로그램을 기억하도록 구성된 기억 장치와,
    상기 데이터 및 상기 프로그램을 포함하는 정보를 입력 및/또는 출력하도록 구성된 입/출력 장치를 구비하는 것을 특징으로 하는 데이터 처리 시스템.
  19. 복수의 처리부와 어드레스 정보 산출부를 포함하는 데이터 처리 장치에 의해 처리되는 복수의 패킷의 데이터 구조를 기록한 데이터 처리 장치로 읽을 수 있는 기록 매체에 있어서:
    상기 복수의 패킷은 각각 데이터와, 그 데이터에 부가된 상기 데이터를 식별하는 식별 정보 및 상기 데이터에 대한 1개 이상의 처리 명령을 나타내는 명령 정보를 포함하는 확장 식별 정보를 포함하고,
    상기 복수의 패킷에서 1개의 패킷 데이터는 1개 이상의 처리 명령을 나타내는 명령 열에 대응하고,
    상기 복수의 패킷의 처리 명령은 명령 추가 명령을 포함하고,
    상기 어드레스 정보 산출부는 상기 확장 식별 정보의 적어도 명령 정보의 비트열에 의거하여 복수의 패킷 각각의 어드레스 정보를 산출하도록 구성되고,
    상기 복수의 처리부에 있어서의 각 처리부는,
    복수의 패킷 중 어드레스 정보가 상기 각 처리부를 나타내고 패킷에서 상기 처리 명령을 실행하는 패킷만 취득하도록 구성되고,
    명령 추가 명령이 실행될 때 최초로 실행되어야 하는 처리 명령이 명령 추가 명령인 2개의 패킷에서 다른 패킷의 명령 정보로서 1개의 패킷의 명령 열에 대응하는 데이터에 추가되도록 구성되는 것을 특징으로 하는 데이터 구조를 기록한 데이터 처리 장치로 읽을 수 있는 기록 매체.
  20. 복수의 처리부와 어드레스 정보 산출부를 포함하는 데이터 처리 장치에 의해 처리되는 복수의 패킷의 데이터 구조를 기록한 데이터 처리 장치로 읽을 수 있는 기록 매체에 있어서:
    상기 복수의 패킷은 각각 데이터와, 그 데이터에 부가된 상기 데이터를 식별하는 식별 정보 및 상기 데이터에 대한 1개 이상의 처리 명령을 나타내는 명령 정보를 포함하는 확장 식별 정보를 포함하고,
    상기 복수의 패킷에서 1개의 패킷 데이터는 1개 이상의 처리 명령을 나타내는 명령 열에 대응하고, 다른 패킷의 데이터는 명령 추가 처리의 실행을 나타내는 플래그를 포함하고,
    상기 어드레스 정보 산출부는 상기 확장 식별 정보의 적어도 명령 정보의 비트열에 의거하여 복수의 패킷 각각의 어드레스 정보를 산출하도록 구성되고,
    상기 복수의 처리부에 있어서의 각 처리부는 복수의 패킷 중 어드레스 정보가 상기 각 처리부를 나타내고 패킷에서 상기 처리 명령을 실행하는 패킷만 취득하고,
    상기 명령 추가 처리가 실행될 때 데이터가 플래그를 포함하는 다른 패킷의 명령 정보로서 1개의 패킷의 명령 열에 대응하는 데이터를 추가하도록 구성되는 것을 특징으로 하는 데이터 구조를 기록한 데이터 처리 장치로 읽을 수 있는 기록 매체.
  21. 삭제
  22. 제 19 항 또는 제 20 항에 기재된 데이터 구조를 포함하는 패킷이 기억된 것을 특징으로 하는 데이터 처리 장치로 판독할 수 있는 기억 장치.
  23. 제 19 항 또는 제 20 항에 기재된 데이터 구조 중 상기 식별 정보의 적어도 일부가 상기 데이터 처리 장치의 제어부에 의해 부가되는 중간 패킷이 기록된 것을 특징으로 하는 데이터 처리 장치로 판독할 수 있는 기록 매체.
  24. 제 19 항 또는 제 20 항에 기재된 데이터 구조 중 상기 식별 정보의 적어도 일부가 상기 데이터 처리 장치의 제어부에 의해 부가되는 중간 패킷을 기억하도록 구성된 것을 특징으로 하는 데이터 처리 장치로 판독할 수 있는 기억 장치.
  25. 제 22 항에 기재된 기억 장치와,
    상기 데이터 처리 장치와,
    상기 데이터를 포함하는 정보를 입력 및/또는 출력하도록 구성된 입/출력 장치를 구비하는 것을 특징으로 하는 데이터 처리 시스템.
  26. 제 24 항에 기재된 기억 장치와,
    상기 데이터 처리 장치와,
    상기 데이터를 포함하는 정보를 입력 및/또는 출력하도록 구성된 입/출력 장치를 구비하는 것을 특징으로 하는 데이터 처리 시스템.
  27. 데이터와, 그 데이터에 부가된 상기 데이터를 식별하는 식별 정보 및 상기 데이터에 대한 1개 이상의 처리 명령을 나타내는 명령 정보를 포함하는 확장 식별 정보를 각각 포함하는 패킷을 처리하는 데이터 처리 방법으로서:
    상기 명령 정보가 복수의 처리 명령을 나타낼 때 적어도 상기 복수의 처리 명령을 나타내는 비트열에 의거하여 패킷의 어드레스 정보를 산출하는 스텝,
    복수의 처리부에 있어서의 각 처리부에 의해 어드레스 정보가 상기 각 처리부를 나타내는 패킷만을 취득하는 스텝, 및
    상기 각 처리부가 패킷의 상기 처리 명령을 실행하는 스텝을 포함하는 것을 특징으로 하는 데이터 처리 방법.
  28. 데이터와, 그 데이터에 부가된 상기 데이터를 식별하는 식별 정보 및 상기 데이터에 대한 1개 이상의 처리 명령을 나타내는 명령 정보를 포함하는 확장 식별 정보를 각각 포함하는 패킷을 처리하는 데이터 처리 방법으로서:
    상기 확장 식별 정보의 적어도 명령 정보의 비트열에 의거하여 패킷의 어드레스 정보를 산출하는 스텝,
    복수의 처리부에 있어서의 각 처리부에 의해 어드레스 정보가 패킷 중 상기 각 처리부를 나타내는 패킷만을 취득하는 스텝, 및
    패킷에서 최초로 실행되어야 하는 처리 명령이 2항 연산을 실행하는 처리 명령일 때에는 일치하는 식별 정보와 명령 정보의 소정 부분을 포함하는 2개의 패킷의 데이터가 각각 좌측 오퍼랜드 및 우측 오퍼랜드로서 지정되는 2항 연산을 실행하는 처리 명령을 상기 각 처리부에 의해 실행하는 스텝을 포함하는 것을 특징으로 하는 데이터 처리 방법.
  29. 제 27 항 또는 제 28 항에 있어서,
    상기 확장 식별 정보의 적어도 상기 명령 정보의 비트열로부터 생성된 의사 난수에 따라 어드레스 정보를 산출하는 스텝을 포함하는 것을 특징으로 하는 데이터 처리 방법.
  30. 제 28 항에 있어서,
    상기 식별 정보와 상기 명령 정보의 소정 부분의 비트열로부터 생성된 의사 난수에 따라 어드레스 정보를 산출하는 스텝을 포함하는 것을 특징으로 하는 데이터 처리 방법.
  31. 제 27 항에 있어서,
    상기 복수의 처리부에 있어서의 각 처리부에 의해 어드레스 정보가 패킷 중 상기 각 처리부를 나타내는 패킷만을 취득하는 스텝, 상기 각 처리부에 의해 패킷의 적어도 하나의 처리 명령을 실행하는 스텝, 및 실행 후에 잔존하고 있는 처리 명령을 나타내는 명령 정보를 포함하는 패킷을 생성하는 스텝,
    복수의 잔존하고 있는 처리 명령이 복수의 처리부에 있어서의 각 처리부에 의해 생성된 패킷에 존재할 때 복수의 잔존하고 있는 처리 명령을 나타내는 비트열에 의거하여 패킷의 잔존하고 있는 처리 명령을 실행하기 위한 처리부를 나타내는 어드레스 정보를 산출하는 스텝, 및
    상기 복수의 처리부에 의해 생성된 패킷에서 잔존하고 있는 처리 명령을 나타내는 비트열의 적어도 일치하는 소정 부분을 포함하는 2개의 패킷을 동일한 처리부에 의해 취득하여 잔존하고 있는 처리 명령을 실행하는 스텝을 포함하는 것을 특징으로 하는 데이터 처리 방법.
KR1020127014546A 2009-12-02 2010-11-10 데이터 처리 장치, 데이터 처리 시스템, 패킷, 기록 매체, 기억 장치, 및 데이터 처리 방법 KR101450675B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
JP2009274033 2009-12-02
JPJP-P-2009-274033 2009-12-02
US35040810P 2010-06-01 2010-06-01
US61/350,408 2010-06-01
JP2010199711A JP5057256B2 (ja) 2009-12-02 2010-09-07 データ処理装置、データ処理システムおよびデータ処理方法
JPJP-P-2010-199711 2010-09-07
PCT/JP2010/006593 WO2011067896A1 (en) 2009-12-02 2010-11-10 Data processing apparatus, data processing system, packet, recording medium, storage device, and data processing method

Publications (2)

Publication Number Publication Date
KR20120101433A KR20120101433A (ko) 2012-09-13
KR101450675B1 true KR101450675B1 (ko) 2014-10-14

Family

ID=44114874

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127014546A KR101450675B1 (ko) 2009-12-02 2010-11-10 데이터 처리 장치, 데이터 처리 시스템, 패킷, 기록 매체, 기억 장치, 및 데이터 처리 방법

Country Status (7)

Country Link
US (1) US8817793B2 (ko)
EP (2) EP2507718A4 (ko)
JP (3) JP5057256B2 (ko)
KR (1) KR101450675B1 (ko)
CN (1) CN102770855B (ko)
TW (2) TWI533208B (ko)
WO (1) WO2011068018A1 (ko)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10698859B2 (en) 2009-09-18 2020-06-30 The Board Of Regents Of The University Of Texas System Data multicasting with router replication and target instruction identification in a distributed multi-core processing architecture
KR101731742B1 (ko) 2010-06-18 2017-04-28 보드 오브 리전츠 더 유니버시티 오브 텍사스 시스템 결합된 분기 타깃 및 프레디킷 예측
TW201346749A (zh) * 2012-02-08 2013-11-16 Mush A Co Ltd 資料處理裝置、資料處理系統、資料結構、記錄媒體、記憶裝置及資料處理方法
JP6353359B2 (ja) * 2012-03-23 2018-07-04 株式会社Mush−A データ処理装置、データ処理システム、データ構造、記録媒体、記憶装置およびデータ処理方法
US9792252B2 (en) 2013-05-31 2017-10-17 Microsoft Technology Licensing, Llc Incorporating a spatial array into one or more programmable processor cores
JP6298937B2 (ja) * 2013-10-14 2018-03-20 武者野 満 データ処理装置
US9946548B2 (en) 2015-06-26 2018-04-17 Microsoft Technology Licensing, Llc Age-based management of instruction blocks in a processor instruction window
US9952867B2 (en) 2015-06-26 2018-04-24 Microsoft Technology Licensing, Llc Mapping instruction blocks based on block size
US10191747B2 (en) 2015-06-26 2019-01-29 Microsoft Technology Licensing, Llc Locking operand values for groups of instructions executed atomically
US9720693B2 (en) 2015-06-26 2017-08-01 Microsoft Technology Licensing, Llc Bulk allocation of instruction blocks to a processor instruction window
US9940136B2 (en) 2015-06-26 2018-04-10 Microsoft Technology Licensing, Llc Reuse of decoded instructions
US10175988B2 (en) 2015-06-26 2019-01-08 Microsoft Technology Licensing, Llc Explicit instruction scheduler state information for a processor
US10409599B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Decoding information about a group of instructions including a size of the group of instructions
US11755484B2 (en) 2015-06-26 2023-09-12 Microsoft Technology Licensing, Llc Instruction block allocation
US10346168B2 (en) 2015-06-26 2019-07-09 Microsoft Technology Licensing, Llc Decoupled processor instruction window and operand buffer
US10409606B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Verifying branch targets
US10169044B2 (en) 2015-06-26 2019-01-01 Microsoft Technology Licensing, Llc Processing an encoding format field to interpret header information regarding a group of instructions
CN108139898B (zh) * 2015-08-11 2021-03-23 起元技术有限责任公司 数据处理图编译
US10061584B2 (en) 2015-09-19 2018-08-28 Microsoft Technology Licensing, Llc Store nullification in the target field
US10936316B2 (en) 2015-09-19 2021-03-02 Microsoft Technology Licensing, Llc Dense read encoding for dataflow ISA
US10095519B2 (en) 2015-09-19 2018-10-09 Microsoft Technology Licensing, Llc Instruction block address register
US10198263B2 (en) 2015-09-19 2019-02-05 Microsoft Technology Licensing, Llc Write nullification
US11681531B2 (en) 2015-09-19 2023-06-20 Microsoft Technology Licensing, Llc Generation and use of memory access instruction order encodings
US10031756B2 (en) 2015-09-19 2018-07-24 Microsoft Technology Licensing, Llc Multi-nullification
US10871967B2 (en) 2015-09-19 2020-12-22 Microsoft Technology Licensing, Llc Register read/write ordering
US10452399B2 (en) 2015-09-19 2019-10-22 Microsoft Technology Licensing, Llc Broadcast channel architectures for block-based processors
US11016770B2 (en) 2015-09-19 2021-05-25 Microsoft Technology Licensing, Llc Distinct system registers for logical processors
US10768936B2 (en) 2015-09-19 2020-09-08 Microsoft Technology Licensing, Llc Block-based processor including topology and control registers to indicate resource sharing and size of logical processor
US11977891B2 (en) 2015-09-19 2024-05-07 Microsoft Technology Licensing, Llc Implicit program order
US10180840B2 (en) 2015-09-19 2019-01-15 Microsoft Technology Licensing, Llc Dynamic generation of null instructions
US10719321B2 (en) 2015-09-19 2020-07-21 Microsoft Technology Licensing, Llc Prefetching instruction blocks
US10678544B2 (en) 2015-09-19 2020-06-09 Microsoft Technology Licensing, Llc Initiating instruction block execution using a register access instruction
US11126433B2 (en) 2015-09-19 2021-09-21 Microsoft Technology Licensing, Llc Block-based processor core composition register
US10776115B2 (en) 2015-09-19 2020-09-15 Microsoft Technology Licensing, Llc Debug support for block-based processor
MA44821A (fr) * 2016-02-27 2019-01-02 Kinzinger Automation Gmbh Procédé d'allocation d'une pile de registres virtuels dans une machine à pile
US11687345B2 (en) 2016-04-28 2023-06-27 Microsoft Technology Licensing, Llc Out-of-order block-based processors and instruction schedulers using ready state data indexed by instruction position identifiers
US11531552B2 (en) 2017-02-06 2022-12-20 Microsoft Technology Licensing, Llc Executing multiple programs simultaneously on a processor core
US10963379B2 (en) 2018-01-30 2021-03-30 Microsoft Technology Licensing, Llc Coupling wide memory interface to wide write back paths
US10824429B2 (en) 2018-09-19 2020-11-03 Microsoft Technology Licensing, Llc Commit logic and precise exceptions in explicit dataflow graph execution architectures
WO2020251170A1 (ko) * 2019-06-13 2020-12-17 엘지전자 주식회사 무선랜 시스템에서 무선 광통신을 통한 상향 링크 전송 기법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005198267A (ja) 2003-12-10 2005-07-21 Japan Telecom Co Ltd 中央演算処理装置、制御センタ装置、それらを用いたネットワークシステム、及びその通信制御方法
JP2005202873A (ja) 2004-01-19 2005-07-28 Sony Corp 分散処理システム、分散処理制御端末、分散処理方法、及び分散処理プログラム
JP2005259030A (ja) 2004-03-15 2005-09-22 Sharp Corp 性能評価装置、性能評価方法、プログラムおよびコンピュータ読取可能記録媒体
JP2006053662A (ja) 2004-08-10 2006-02-23 Matsushita Electric Ind Co Ltd 多重プロセッサ

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5689647A (en) * 1989-03-14 1997-11-18 Sanyo Electric Co., Ltd. Parallel computing system with processing element number setting mode and shortest route determination with matrix size information
JP2568452B2 (ja) * 1990-02-27 1997-01-08 シャープ株式会社 データフロー型情報処理装置
JP2003162514A (ja) * 2001-11-27 2003-06-06 Nec Corp 複数プロセッサによる並列分散制御方式
US7590397B2 (en) * 2003-09-10 2009-09-15 Sony Corporation Signal processing apparatus and signal processing method, program, and recording medium
JP2005108086A (ja) * 2003-10-01 2005-04-21 Handotai Rikougaku Kenkyu Center:Kk データ処理装置
US7324605B2 (en) * 2004-01-12 2008-01-29 Intel Corporation High-throughput multicarrier communication systems and methods for exchanging channel state information
JP4923240B2 (ja) 2006-01-17 2012-04-25 国立大学法人東京工業大学 プログラム処理装置、並列処理プログラム、プログラム処理方法、並列処理コンパイラ、並列処理コンパイラを格納した記録媒体およびマルチプロセッサシステム
KR101399361B1 (ko) * 2006-08-25 2014-05-26 삼성전자주식회사 무선 통신 방법 및 장치
US7441099B2 (en) * 2006-10-03 2008-10-21 Hong Kong Applied Science and Technology Research Institute Company Limited Configurable SIMD processor instruction specifying index to LUT storing information for different operation and memory location for each processing unit
JP2008130712A (ja) 2006-11-20 2008-06-05 Hitachi Maxell Ltd 3端子型結晶シリコン素子

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005198267A (ja) 2003-12-10 2005-07-21 Japan Telecom Co Ltd 中央演算処理装置、制御センタ装置、それらを用いたネットワークシステム、及びその通信制御方法
JP2005202873A (ja) 2004-01-19 2005-07-28 Sony Corp 分散処理システム、分散処理制御端末、分散処理方法、及び分散処理プログラム
JP2005259030A (ja) 2004-03-15 2005-09-22 Sharp Corp 性能評価装置、性能評価方法、プログラムおよびコンピュータ読取可能記録媒体
JP2006053662A (ja) 2004-08-10 2006-02-23 Matsushita Electric Ind Co Ltd 多重プロセッサ

Also Published As

Publication number Publication date
JP2012194992A (ja) 2012-10-11
US8817793B2 (en) 2014-08-26
EP2507718A1 (en) 2012-10-10
CN102770855A (zh) 2012-11-07
TW201120745A (en) 2011-06-16
JP2011138479A (ja) 2011-07-14
JP5057256B2 (ja) 2012-10-24
TWI533208B (zh) 2016-05-11
CN102770855B (zh) 2015-06-17
EP2507718A4 (en) 2017-12-27
JPWO2011068018A1 (ja) 2013-04-18
TW201131381A (en) 2011-09-16
WO2011068018A1 (ja) 2011-06-09
KR20120101433A (ko) 2012-09-13
US20130028260A1 (en) 2013-01-31
EP2509002A1 (en) 2012-10-10

Similar Documents

Publication Publication Date Title
KR101450675B1 (ko) 데이터 처리 장치, 데이터 처리 시스템, 패킷, 기록 매체, 기억 장치, 및 데이터 처리 방법
US10025594B2 (en) Parallel data processing apparatus, system, and method
JP5512803B2 (ja) ベクトル命令を取り扱うためのデータ処理装置および方法
KR100576794B1 (ko) 술어 실행을 정적 예측실행으로 변환하기 위한 범용 및효율적 방법 및 장치
KR102628985B1 (ko) 벡터 데이터 전송 명령어
CN107851013B (zh) 数据处理装置和方法
JP2000112758A (ja) 投機的実行中に発生する例外を遅延させるシステム及び方法
JP6066423B2 (ja) データ処理装置、データ処理システム、データ構造、記録媒体、記憶装置およびデータ処理方法
TWI740851B (zh) 用於向量負載指示之資料處理設備、方法及電腦程式
JP2018500659A (ja) 高速ベクトルによる動的なメモリ競合検出
JP7324754B2 (ja) ベクトル・キャリー付き加算命令
JP3835764B2 (ja) プロセッサおよび記録媒体
EP0545927B1 (en) System for preparing instructions for instruction parallel processor and system with mechanism for branching in the middle of a compound instruction
JP6353359B2 (ja) データ処理装置、データ処理システム、データ構造、記録媒体、記憶装置およびデータ処理方法
GB2515020A (en) Operand generation in at least one processing pipeline
EP0825529A2 (en) System for preparing instructions for instruction parallel processor and system with mechanism for branching in the middle of a compound instruction
JP3670801B2 (ja) プロセッサ
CA2053941A1 (en) System for preparing instructions for instruction parallel processor and system with mechanism for branching in the middle of a compound instruction
JP2002182928A (ja) 命令エミュレーション方法

Legal Events

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

Payment date: 20170920

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180907

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190829

Year of fee payment: 6