KR20080049727A - 별도의 직렬 모듈을 지닌 프로세서 어레이 - Google Patents

별도의 직렬 모듈을 지닌 프로세서 어레이 Download PDF

Info

Publication number
KR20080049727A
KR20080049727A KR1020087005105A KR20087005105A KR20080049727A KR 20080049727 A KR20080049727 A KR 20080049727A KR 1020087005105 A KR1020087005105 A KR 1020087005105A KR 20087005105 A KR20087005105 A KR 20087005105A KR 20080049727 A KR20080049727 A KR 20080049727A
Authority
KR
South Korea
Prior art keywords
data
serial
processing
line
processor
Prior art date
Application number
KR1020087005105A
Other languages
English (en)
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 KR20080049727A publication Critical patent/KR20080049727A/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
    • 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/8015One dimensional arrays, e.g. rings, linear arrays, buses

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Image Processing (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)

Abstract

프로세서 어레이는 프로세서 요소(2)와, 프로세서 요소(2)에 의해 병렬로 액세스 가능하게 병렬로 연결된 메모리(4)를 가진다. 별도의 직렬 모듈(30)이, 예컨대 룩업 테이블 모듈(30)의 형태로 부가적인 기능성을 제공한다. 직렬 모듈(3)은 모듈(30)로의 데이터의 라인을 직렬로 처리한다. 처리는 적당한 프로그래밍 단계들을 사용하여 병렬로 프로세서 요소(2)에서 계속될 수 있다.

Description

별도의 직렬 모듈을 지닌 프로세서 어레이{PROCESSOR ARRAY WITH SEPARATE SERIAL MODULE}
본 발명은 프로세서 어레이에 관한 것으로, 특히 그러나 배타적이지 않은, 별도의 직렬 모듈을 지닌 단일 명령어 다수 데이터(SIMD: single instruction multiple data) 데이터 프로세서 어레이, 특히 그러나 배타적이지 않은 룩업 테이블(LUT: look up table) 모듈, 프로세서 어레이의 동작 방법, 및 그러한 프로세서 어레이를 동작하기 위한 컴퓨터 프로그램에 관한 것이다.
SIMD 처리 어레이에서는, 다수의 처리 요소(PE: processing element) 각각은 공통 명령어 스트림으로부터 동일한 명령어를 수신하고, 데이터가 로컬(local) 데이터라고 불리는 처리 요소에 고유한 데이터에 기초한 명령어를 실행한다. 그러한 처리 어레이는 동일한 동작이 동시에 데이터의 다수 항목에 대해 수행되는 매우 반복적인 업무에 적당하고, 이는 예컨대 이미지 처리 분야에서 일어날 수 있다.
도 1은 복수의 처리 요소(2)와 그 요소에 의해 공유된 메모리(4)를 지닌 종래의 SIMD 어레이를 도시한다. 명령어 입력(6)은 모든 처리 요소에 관해 병렬로 명령어를 제공하는데, 즉 모든 요소가 동일한 명령어를 수행한다. 하지만 이 요소들은 병렬로 메모리(4)에서 상이한 데이터에 액세스한다.
하지만 SIMD 처리 어레이는, 룩업 테이블 동작을 수행할 때와 같이 처리 동작이 데이터 의존적인 경우에는 특히 효율적이지 않다. 그러한 경우, 룩업 테이블이 메모리(4)에 저장되면, 각 프로세서는 동시에 메모리의 상이한 부분으로의 액세스를 필요로 할 수 있고, 이는 시도된 순차 액세스 때문에 성능을 감소시킨다. 그러므로, 일부 아키텍처, 특히 SIMD 아키텍처에서는 룩업 테이블 동작이 기능적으로 계산되고, 이는 매우 많은 개수의 명령어를 필요로 할 수 있다.
이러한 문제를 다루는 한 가지 접근법이 US6,665,768호(Redford)에 설명된다. 이 접근법에서는 단일 메모리 뱅크(bank)가 다수의 프로세서에 의해 액세스된다. 하지만, 이는 룩업 테이블의 다수의 복사본이 메모리의 다수의 뱅크에 저장된다는 단점을 가진다. 메모리의 다수의 뱅크는 처리 요소에 의해 병렬로 액세스될 수 있다. 각 처리 요소는 뱅크들 중 하나를 선택할 수 있는 식별(identifying) 값을 가지고, 따라서 속도를 개선한다.
룩업 테이블을 처리하기 위한 개선된 처리 배열은 WO2005/017765호(필립스)에서 설명된다. 이 처리 어레이의 단순화된 버전은 도 2에서 단순화된 형태로 예시된다. 각 처리 요소(2)는 산술 로직(arithmetic logic) 유닛(10)과 처리 요소(2) 전용의 복수의 저장 요소(12)를 가진다. 이 처리 요소는 내부 누산기(16)와 함께, 계수 입력(14)과 공통 명령어 입력(6)을 가진다. 각 처리 요소는 또한 다양한 멀티플렉서와, 단순화하기 위해 도 2에서 생략된 산술 로직 유닛을 포함한다.
데이터 항목은 계수 입력(14)에 의해 인덱싱된(indexed) 저장 요소에서의 누산기에서 데이터를 저장하기 위해, 계수 입력에 대한 인덱스와 명령어 입력에 대한 적당한 명령어를 공급함으로써, 처리 요소(2)의 저장 요소(12) 중 하나에 저장될 수 있다. 반대로, 데이터는 계수 입력에 의해 인덱싱된 저장 요소로부터 누산기로 로딩될 수 있다. 계수 입력(14)에 의해 인덱싱된 저장 요소(12)로부터의 데이터는 또한 누산기(16)에서 데이터와 곱해질 수 있다.
올바른 데이터를 룩업 테이블 동작을 위해 저장 요소에 로딩하는 다수의 대안적인 방식들이 WO2005/017765호에서 설명된다. 데이터가 로딩된 후, 누산기(16)에서의 데이터는, 저장 요소 중 하나를 선택하고, 대응하는 저장 요소에서 저장된 데이터를 직접적으로 또는 내부 레지스터에 출력하기 위해 인덱스로서 사용될 수 있다.
따라서, WO2005/017765호의 처리 어레이는 3가지 방식으로 동작할 수 있다. 첫 번째는 각 처리 요소가 정상적인 어레이 디바이에 대해서와 같이, 방송 명령어에 기초하여 로컬 데이터에 대해 동일한 명령어를 실행할 수 있다. 두 번째는 각 처리 요소가 로컬 데이터에 대해 하지만 계수 입력에 대해 공급된 상이한 계수를 가지고 동일한 명령어를 실행할 수 있다. 세 번째는, 각 처리 요소가 룩업 테이블에서 결정된 기능을 실행할 수 있다. 그러므로 WO2005/017765호의 처리 어레이는 SIMD 처리의 이득에 데이터 의존 처리 동작에서의 개선된 성능을 제공할 수 있다.
하지만, 도 2의 배치에서처럼 각 처리 요소에 관한 로컬 메모리의 제공은, 도 1의 배치에서처럼 더 많은 프로세서에 미치는 종래의 넓은 메모리보다 많은 실리콘 영역을 써버리게 된다. 또한, 이와 같이 복잡도가 증가되면 어드레스 디코더와 같은 각 처리 요소에서 더 많은 오버헤드(overhead)를 필요로 하게 된다.
이러한 복잡도는 간접적인 어드레스 지정을 지닌 SIMD 디바이스가 다소 고가일 수 있다는 것을 의미한다.
또한, 병렬 룩업 테이블 동작의 특별한 경우, 각 처리 요소의 저장 메모리에 룩업 테이블을 저장하는 것이 필수적이다. 실제로, 각 처리 요소가 큰 룩업 테이블이 저장되는 것을 허용하기에 충분한 저장 위치를 제공하는 것이 가능하지 않다.
동일한 문제가 병렬 처리 어레이에 추가된 다른 타입의 부가적인 처리에서 일어날 수 있다.
따라서, 부가적인 기능성을 제공하기 위해 개선된 병렬 처리 어레이에 대한 필요성이 존재하게 된다.
본 발명에 따른 프로세서 어레이가 제공되는데, 이 프로세서 어레이는
병렬로 데이터의 라인을 처리하기 위한 복수의 프로세서 요소,
상기 복수의 프로세서 요소에 의해 병렬로 액세스 가능한 메모리,
데이터의 라인을 수정하기 위해 직렬 입력에서 데이터 입력의 라인에 대한 처리 연산을 수행하고, 직렬 버스 위의 데이터의 수정된 라인으로서 결과를 출력하기 위한 직렬 입력 및 출력을 지닌 직렬 모듈, 및
프로세서 요소와 메모리로부터의 데이터의 라인을 직렬 모듈 직렬 입력에 직렬로 제공하고, 상기 처리 연산 후에 직렬 출력으로부터 프로세서 요소와 메모리로 데이터의 수정된 라인을 되돌려보내기 위한 수단을 포함한다.
직렬 모듈은 룩업 테이블 모듈일 수 있다.
실시예에서, 데이터의 라인을 제공하기 위한 수단은, 처리 요소에서 처리가 계속되면서 모듈이 처리 동작을 수행할 수 있도록, 메모리에서의 데이터의 라인을 직접 액세스하고 이 메모리에서 처리 동작의 결과를 직접 저장하기 위해 직렬 입력과 직렬 출력에 연결된 직접 메모리 액세스 제어기이다.
대안적인 일 실시예에서, 데이터의 라인을 제공하기 위한 수단은 적어도 하나의 시프트 레지스터를 포함하는 시프트 레지스터 유닛을 포함하고, 이 시프트 레지스터 유닛은 직렬 출력과 직렬 입력을 가지며, 이 직렬 입력은 직렬 모듈의 직렬 출력에 연결되고, 이 직렬 출력은 직렬 모듈의 직렬 입력에 연결되며, 메모리는 시프트 레지스터 유닛에서 데이터에 병렬로 액세스할 수 있다.
프로세서 어레이는 특히 단일 명령어 집합 다수 데이터(SIMD: single instruction set multiple data) 프로세서 어레이일 수 있다.
대안적으로, 본 발명은 예컨대 다수 명령어 집합 다수 데이터(MIMD: multiple instruction set multiple data) 프로세서 어레이, 또는 록스텝(lockstep) 모드에서 동작하는 매우 긴 명령어 워드(VLIW: very long instruction word) 프로세서를 포함하는 다른 다수의 프로세서 배치에 적용될 수 있다.
또 다른 양상에서는 본 발명이 복수의 프로세서 요소, 이 복수의 프로세서 요소에 의해 병렬로 액세스 가능한 메모리, 및 직렬 모듈을 가지는 프로세서 어레이의 동작 방법에 관한 것이고, 이 방법은
복수의 프로세서 요소를 사용하여 데이터의 라인을 처리하는 단계,
상기 프로세서 요소에서 데이터의 라인을 처리하는 동안, 상기 프로세서 요소와 메모리로부터 직렬 모듈로 데이터의 다음 라인을 직렬로 전송하는 단계,
데이터의 수정된 다음 라인을 생성하기 위해, 상기 직렬 모듈에서 데이터의 다음 라인에 대해 처리 동작을 수행하는 단계,
상기 직렬 모듈로부터 프로세서 요소와 메모리에 데이터의 수정된 다음 라인을 되돌려 보내는 단계, 및
상기 직렬 모듈에서 데이터의 다음 라인에 대해 처리 동작을 수행하면서 상기 프로세서 요소를 병렬로 사용하여 차례로 데이터의 각 라인을 처리하는 위해, 단계들을 반복하는 단계를 포함한다.
이는 파이프라인된(pipelined) 동작을 구현한다.
또다른 양상에서는 본 발명이 또한 복수의 프로세서 요소, 상기 복수의 프로세서 요소에 의해 병렬로 액세스 가능한 메모리, 및 부가적인 직렬 모듈을 가지는 프로세서 어레이가, 위에서 기재된 방법을 실행하게 하도록 배열된 컴퓨터 프로그램 코드에 관련된다.
본 발명의 더 나은 이해를 위해, 순수히 예로서 실시예가 첨부 도면을 참조하여 설명된다.
도 1은 종래 기술의 SIMD 어레이를 도시하는 도면.
도 2는 또다른 종래 기술의 SIMD 어레이를 도시하는 도면.
도 3은 본 발명의 제 1 실시예에 따라 프로세서 어레이를 도시하는 도면.
도 4는 도 3의 프로세서 어레이를 사용하는 방법의 흐름도.
도 5는 대안적인 일 실시예를 도시하는 도면.
도 6은 또다른 대안적인 일 실시예를 도시하는 도면.
도 3을 참조하면, 본 발명에 따른 프로세서 어레이는 복수의 프로세서 요소(2), 각 프로세서 요소에 의해 병렬로 액세스 가능한 메모리(4), 및 공통 명령어 입력(6)을 포함한다. 이들 특징은 도 1에 도시된 종래 기술의 배치의 특징과 유사하다. 프로세서 요소의 개수는 다음에서 N으로 부르게 되고, 여기서 N은 1보다 큰 양의 정수이다.
프로세서 어레이의 제어를 위해 중앙 제어기(8)가 제공된다.
메모리(4)와 직렬 데이터 입력(34)에 연결된 직접 메모리 액세스(DMA) 제어기(39)를 경유하여 메모리(4)로의 직접 액세스 및 룩업 테이블 모듈(30)의 직렬 데이터 출력(36)이, 룩업 테이블 모듈(30)의 형태로 직렬 모듈에 제공된다. 제어 입력(32)이 제공된다. 룩업 테이블 모듈(30) 내의 룩업 테이블 메모리(38)는 하나 이상의 룩업 테이블을 저장하기 위해 제공된다.
룩업 테이블 모듈(30)은 제어 입력(32) 위에서 제어되고, 직렬 데이터 입력(34) 위의 데이터를 수신하며, 출력(36) 위의 처리된 데이터를 출력한다. 중앙 제어기(8)는 명령어를 프로세서와 룩업 테이블 모듈에 제공한다. 중앙 제어기는 룩업 테이블 메모리(38)에서의 새로운 룩업 테이블의 저장을 지시할 수 있다.
룩업 테이블 모듈(30)은 직렬 데이터 입력(34) 위에서 데이터의 라인을 직렬 로 수신하고, 데이터의 수정된 라인을 만들어내도록 룩업 테이블 동작을 수행하며, 출력(36) 위에서 데이터의 수정된 라인을 직렬로 출력하도록 배치된다. 실시예에서, 데이터의 라인은 직접 메모리 액세스에 의해, 즉 프로세서와는 독립적으로 메모리(4)로부터 직접 얻어진다.
통상, 데이터의 한 라인은, 각 프로세서 요소에 대해 하나씩, N개의 데이터를 포함한다. 룩업 테이블 모듈은 데이터 위에서 직렬로 동작하는데 반해, 프로세서 요소는 병렬로 동작한다는 점을 알 것이다. 그러므로, 통상 룩업 테이블 모듈이 한 클록 사이클에서 한 개의 직렬 입력 데이터에 관해 룩업 동작을 수행할 수 있다고 가정한다면, 룩업 테이블 모듈은 한 라인을 이루는 N개의 데이터에 관해 룩업 테이블 동작을 수행하기 위해 N개의 클록 사이클을 필요로 하게 된다.
처음에는, 특히 병렬 프로세서의 개수와 그에 따른 데이터의 한 라인에서의 데이터의 항목의 개수가 큰 상황에서는 그러한 지연이 금지되는 것으로 생각될 수 있다.
하지만, 적당한 기술을 사용하여, 룩업 테이블 동작의 처리는 나중에 설명되는 것처럼, 프로그래머에게 단일 명령어로서 보여질 수 있다.
도 4는 데이터 벡터 a, b 및 f(c)로서 표현된 데이터의 복수의 라인에 대해 프로세서 어레이를 동작하는 방법을 도시한다. 루프는 차례로 데이터의 각 라인에 대한 처리를 수행하고, 여기서 k는 루프 인덱스(index)를 나타낸다. 룩업 테이블 동작과는 별도로, 모든 동작은 처리 요소(2)에 의해 병렬로 수행된다.
루프를 도는 각 반복에 대해 각 프로세서 요소는 병렬로 1개의 데이터 a를 취한다(단계 40). 각 프로세서는 데이터의 상이한 항목을 취하여, N개의 데이터 요소로 효과적인 데이터 라인을 생성하고, 각 데이터 요소는 각 프로세서 요소에 속한다.
다음 단계(단계 42)는 데이터의 k번째 라인에 관해 룩업 테이블 동작을 수행한다. 이는 도시된 것과 같은 데이터의 라인에 관한 간단한 룩업 테이블 동작으로서 프로그래밍된다. 이 단계는 룩업 테이블 모듈로 하여금, 프로세서 요소를 수반하지 않는 메모리에 관한 직접적인 직렬 데이터 액세스를 사용하여 데이터의 라인을 처리하기 시작하게 한다.
이러한 직렬 룩업 테이블 동작에 대한 N개의 클록 사이클을 기다리기보다는, 다음 단계(단계 44)는 데이터의 이전 라인(k-1) 위에서의 룩업 테이블 동작의 결과의 추가 처리를 수행하는 것이다. 비록 한 번의 계산 단계가 예시되고 있지만, 실제로는 룩업 테이블 동작의 결과에 관해서는 다수의 계산 단계들이 존재할 필요가 있을 수 있다.
이후, 인덱스(k)는 증가되고(단계 46), 데이터의 모든 라인이 처리될 때까지 루프가 계속된다(단계 48).
프로세서 어레이와 룩업 테이블의 클록은 완전히 상이할 수 있고, 추가로 지연을 감소시키는 것을 돕는다는 점을 주목하라.
그러므로, 도 4에 도시된 방법은 직렬 룩업 테이블 동작의 상당한 지연이 눈에 보이지 않게 하고, 룩업 테이블 동작은 마치 그것이 오직 단일 클록 사이클을 취하는 것처럼 프로그래머에게 보이게 된다.
당업자라면 간단하게 하기 위해 도 4에서 일부 세부 사항이 생략되었음을 알게 된다. 예컨대, 제 1 사이클에 있어서, 단계(44)는 수행되지 않게 되는데, 이는 데이터의 어떠한 이전 라인도 존재하지 않기 때문이고, 마지막 사이클에 있어서는, 단계(40)가 필요로 하지 않는다.
따라서, 도 3의 프로세서 어레이와 도 4의 방법은 이미지 프로세싱용으로 특히 적당하고, 이는 통상 데이터의 다수 라인의 처리, 차례로 데이터의 각 라인에 관해 동일한 동작을 수행하는 것, 처리 단계들 중 하나로서 룩업 테이블 동작을 사용하는 것을 필요로 한다.
룩업 테이블 동작을 수행하기 위해 각 프로세서 요소와 연관된 메모리를 지닌 배치와는 다르게, 룩업 테이블의 한 복사본만이 메모리(38)에서 필요로 하고, 이는 각 처리 요소(2)의 메모리에 수고를 아끼지 않으며(painstakingly) 로딩될 필요가 없다. 그러므로, 메모리와 룩업 테이블은 작은 룩업 테이블만이 필요한 배치에서 불필요한 오버헤드를 포함하지 않고, 필요한 만큼 크게 될 수 있다.
룩업 테이블 동작을 직렬로 수행하기 위해 별도의 요소를 제공함으로써, 단일 룩업 테이블만이 필요하게 된다. 각 프로세서가 메모리의 상이한 뱅크(bank)를 액세스하는 US6,665,768호의 종래 기술의 접근에서는, 2개 이상의 프로세서가 동시에 룩업 테이블 전체를 액세스하는 것이 가능하지 않으므로, 다수의 복사본이 필요로 할 수 있다. 또한, US6,665,768호는 룩업 테이블 동작을 위해 개별 프로세서 요소를 사용하고, 이는 큰 외부 메모리로 액세스하는 데 있어 다수의 클록 사이클이 걸릴 가능성이 있어 처리를 지연시킨다.
또한, 별도의 룩업 테이블 모듈을 제공함으로써, 프로세서 요소의 종래의 다소 상이한 동작과 타협하지 않고, 룩업 테이블 동작용으로 최적화될 수 있다.
본 실시예의 변형예에서는, 요소(30)가 룩업 테이블 동작을 수행하지 않지만, 처리의 일부 대안적인 형태를 수행하기 위해 배치된 직렬 모듈이다.
요소(30)는 그 자체로 프로세서를 포함할 수 있는데, 이 프로세서는 직렬 입력과 출력의 관점에서 프로세서 요소(2)와 반드시 동일하지는 않는 임의의 적당한 클록 속도로 실행될 수 있다. 모듈(30)은, 예컨대 허프만, 산술 또는 런-렝쓰 코딩을 수행할 수 있다. 모듈(30)은 또한, 예컨대 조건부 액세스 모듈일 수 있다.
또다른 실시예가 도 5에 관해 도시되어 있다.
이 실시예에서는, DMA 디바이스가 메모리(4)에 액세스하기 위해 사용되지 않는다. 대신, 한 쌍의 시프트 레지스터가 시프트 레지스터 유닛(51)으로서 사용된다. 시프트 레지스터 유닛(51)은 병렬 출력과 직렬 입력을 지닌 제 1 시프트 레지스터(50)와, 병렬 입력과 직렬 출력을 지닌 제 2 시프트 레지스터(52)를 포함한다. 제 1 시프트 레지스터(50)의 직렬 입력(54)은 룩업 테이블 모듈(30)의 출력(36)에 연결되고, 제 2 시프트 레지스터의 직렬 출력(56)은 룩업 테이블 모듈(30)의 입력(34)에 연결된다. 이 실시예에서, 각 시프트 레지스터(50, 52)는 N개의 위치를 가지고, 여기서 N은 프로세서(2)의 개수이다.
병렬 포트(58)는 메모리(4)의 어드레스 공간 내에서 어드레스 지정되고, 따라서 프로그래머에게는 정상적인(normal) 라인 메모리로서 보인다.
단일 시프트 레지스터(60)를 사용하는 유사한 배치가 도 6에 도시된다. 시프 트 레지스터(60)는 직렬 입력(54)과 직렬 출력(56)을 가지고, 이 직렬 출력(56)은 룩업 테이블 모듈의 입력(34)에 연결되며, 직렬 입력(54)은 룩업 테이블 모듈의 출력(36)에 연결된다. 시프트 레지스터(60)의 콘텐츠는 메모리(4)에 의해 병렬로 어드레스 지정될 수 있다.
도 5와 도 6의 실시예는 또한 룩업 테이블 모듈 대신 대안적인 직렬 모듈과 사용될 수 있다.
이 실시예는 룩업 테이블 동작을 포함하는 많은 상이한 종류의 직렬 처리를 허용한다. 예컨대, 룩업 테이블 동작은 sin(), arctan(), sqrt()와 같은 일부 함수를 계산하는 효율적인 방식일 수 있어, 이 실시예는 종종 병렬 처리에 사용된 간단한 프로세서에 이들 함수를 즉시 포함시키는 것을 허용한다. 이 실시예는 또한 실시간 비디오 처리에 사용될 수 있다.
당업자라면, 전술한 실시예에 대한 많은 변형예가 가능하다는 것을 깨닫게 된다. 예컨대, 당업자라면 직접적인 메모리 액세스보다는 한 라인의 데이터에 액세스하는 다른 접근법이 가능하다는 사실을 깨닫게 된다.
처리 유닛의 개수는 조정될 수 있고, 반드시 시프트 레지스터 위치와 동일한 개수의 프로세서 요소를 가질 필요는 없다.
전술한 바와 같이, 본 발명은 별도의 직렬 모듈을 지닌 단일 명령어 다수 데이터 프로세서 어레이, 특히 룩업 테이블 모듈에 이용 가능하다.

Claims (14)

  1. 프로세서 어레이로서,
    병렬로 데이터의 라인을 처리하기 위한 복수의 프로세서 요소(2),
    상기 복수의 프로세서 요소(2)에 의해 병렬로 액세스 가능한 메모리(4),
    데이터의 라인을 수정하기 위해 직렬 입력(34)에서 데이터 입력의 라인에 대한 처리 연산을 수행하고, 직렬 출력(36) 위의 데이터의 수정된 라인으로서 결과를 출력하기 위한 직렬 입력 및 출력(34, 36)을 지닌 직렬 모듈(30), 및
    프로세서 요소(2)와 메모리(4)로부터의 데이터의 라인을 직렬 입력(34)에 직렬로 제공하고, 상기 처리 연산 후에 직렬 출력(36)으로부터 프로세서 요소(2)와 메모리(4)로 데이터의 수정된 라인을 되돌려보내기 위한 수단(39, 51)을
    포함하는 프로세서 어레이.
  2. 제 1항에 있어서, 상기 직렬 모듈(30)은 룩업(look-up) 테이블 모듈, 룩업 테이블 동작, 허프만(Huffman), 산술(arithmetic) 또는 런-렝쓰(run-length) 코딩 모듈, 또는 데이터로의 조건부 액세스를 허용하기 위한 조건부 액세스 모듈인, 프로세서 어레이.
  3. 제 2항에 있어서, 상기 직렬 모듈(30)은 처리 연산으로서 룩업 테이블 연산을 수행하도록 배치된 룩업 테이블 모듈(30)인, 프로세서 어레이.
  4. 제 1항 내지 제 3항 중 어느 한 항에 있어서, 상기 프로세서 어레이는
    복수의 프로세서 요소(2)를 사용하여 차례로 데이터의 각 라인을 병렬로 처리하고,
    상기 프로세서 요소(2)에서 데이터의 라인을 처리하는 동안, 상기 프로세서 요소(2)가 데이터의 수정된 라인을 요구하기 전에, 데이터의 수정된 라인이 되돌려보내지도록, 상기 직렬 모듈(30)에서 데이터의 다음 라인에 대한 처리 연산을 수행하도록 배열되는, 프로세서 어레이.
  5. 제 1항 내지 제 4항 중 어느 한 항에 있어서, 상기 프로세서 어레이는
    룩업 테이블 동작을 위한 데이터의 k번째 라인을 결정하고(40),
    결정된 데이터의 k번째 라인에 대한 처리 동작을 지시하며(42),
    데이터의 이전 (k-1)번째 라인에 대해 수행된 처리 동작의 결과를 처리하고(44),
    데이터의 모든 라인이 처리될 때까지 지시 및 처리 단계(46, 48) 결정을 반복함으로써, 데이터의 복수의 라인을 처리하도록 배열되는, 프로세서 어레이.
  6. 제 1항 내지 제 5항 중 어느 한 항에 있어서, 데이터의 라인을 제공하기 위한 수단(39)은 메모리(4)에서의 데이터의 라인을 직접 액세스하고 상기 메모리(4)에서 처리 동작의 결과를 직접 저장하기 위한 직접 메모리 액세스 제어기(39)이고, 상기 직접 메모리 액세스 제어기(39)는 직렬 모듈(30) 위의 직렬 입력(34)에 연결되고 또한 직렬 모듈(30) 위의 직렬 출력(36)에 연결되어, 직렬 모듈이 처리 요소(2)에서 처리를 계속하면서 데이터의 직렬 입력 라인에 대해 처리 연산을 수행할 수 있는, 프로세서 어레이.
  7. 제 1항 내지 제 6항 중 어느 한 항에 있어서, 데이터의 라인을 제공하기 위한 수단(39)은 적어도 하나의 시프트 레지스터(50, 52, 60)를 포함하는 시프트 레지스터 유닛(51)을 포함하고, 상기 시프트 레지스터 유닛(51)은 직렬 출력(56)과 직렬 입력(54)을 가지며, 상기 직렬 입력(54)은 처리 테이블 모듈(30)의 직렬 출력(36)에 연결되고, 상기 직렬 출력(56)은 상기 직렬 모듈(30)의 직렬 입력(34)에 연결되며, 상기 메모리(4)는 시프트 레지스터 유닛(51)에서 데이터에 병렬로 액세스할 수 있는, 프로세서 어레이.
  8. 제 1항 내지 제 7항 중 어느 한 항에 있어서, 상기 프로세서 어레이는 단일 명령어 집합 다수 데이터 프로세서 어레이인, 프로세서 어레이.
  9. 복수의 프로세서 요소(2), 상기 복수의 프로세서 요소(2)에 의해 병렬로 액세스 가능한 메모리(4), 및 직렬 모듈(30)을 가지는 프로세서 어레이의 동작 방법으로서,
    상기 복수의 프로세서 요소(2)를 사용하여 데이터의 라인을 처리하는 단계,
    상기 프로세서 요소(2)에서 데이터의 라인을 처리하는 동안, 상기 프로세서 요소(2)와 메모리(4)로부터 데이터의 다음 라인을 직렬 모듈로 직렬로 전송하는 단계,
    데이터의 수정된 다음 라인을 생성하기 위해, 상기 직렬 모듈(30)에서 데이터의 다음 라인에 대해 처리 동작을 수행하는 단계,
    상기 직렬 모듈로부터 프로세서 요소(2)와 메모리(4)에 데이터의 수정된 다음 라인을 되돌려 보내는 단계, 및
    상기 직렬 모듈에서 데이터의 다음 라인에 대해 처리 동작을 수행하면서 동시에 상기 프로세서 요소(2)를 사용하여 차례로 데이터의 각 라인을 처리하는 단계들을 반복하는 단계를 포함하는, 프로세서 어레이의 동작 방법.
  10. 제 9항에 있어서, 데이터 라인을 처리하는 단계로,
    데이터의 각각의 k번째 라인에 대해 차례로,
    직렬 처리를 위해 데이터의 k번째 라인을 결정하는 단계(40),
    결정된 데이터의 k번째 라인에 대해 직렬 처리 동작을 지시하는 단계(42),
    데이터의 이전 (k-1)번째 라인에 대해 수행된 직렬 처리 동작의 결과를 처리하는 단계(44), 및
    데이터의 모든 라인이 처리될 때까지 결정하고, 지시하는 단계 및 처리 단계를 반복하는 단계(46, 48)를 취하는, 프로세서 어레이의 동작 방법.
  11. 제 9항 또는 제 10항에 있어서, 상기 처리 동작은 룩업 테이블 동작, 허프만, 산술 또는 런-렝쓰 코딩 동작, 또는 데이터로의 조건부 액세스를 허용하기 위한 조건부 액세스 동작인, 프로세서 어레이의 동작 방법.
  12. 제 11항에 있어서, 상기 처리 동작은 룩업 테이블 동작인, 프로세서 어레이의 동작 방법.
  13. 컴퓨터 프로그램 제품으로서, 복수의 프로세서 요소(2), 상기 복수의 프로세서 요소(2)에 의해 병렬로 액세스 가능한 메모리(4), 및 룩업 테이블 모듈(30)을 가지는 프로세서 어레이가, 제 9항 내지 제 12항 중 어느 한 항에 따른 방법을 실행하게 하도록 배열된 컴퓨터 프로그램 코드 수단을 포함하는, 컴퓨터 프로그램 제품.
  14. 제 13항에 있어서, 데이터 캐리어(carrier) 위에 기록되는, 컴퓨터 프로그램 제품.
KR1020087005105A 2005-09-05 2006-09-04 별도의 직렬 모듈을 지닌 프로세서 어레이 KR20080049727A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP05108126.3 2005-09-05
EP05108126 2005-09-05

Publications (1)

Publication Number Publication Date
KR20080049727A true KR20080049727A (ko) 2008-06-04

Family

ID=37745162

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087005105A KR20080049727A (ko) 2005-09-05 2006-09-04 별도의 직렬 모듈을 지닌 프로세서 어레이

Country Status (6)

Country Link
US (1) US20080229063A1 (ko)
EP (1) EP1927056A2 (ko)
JP (1) JP2009507292A (ko)
KR (1) KR20080049727A (ko)
CN (1) CN101258480A (ko)
WO (1) WO2007029169A2 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100940792B1 (ko) * 2008-06-30 2010-02-11 엠텍비젼 주식회사 가변 프로세싱 유닛을 구비한 프로세서 칩 및 가변프로세싱 방법
US7940755B2 (en) * 2009-03-19 2011-05-10 Wisconsin Alumni Research Foundation Lookup engine with programmable memory topology
WO2013106210A1 (en) * 2012-01-10 2013-07-18 Intel Corporation Electronic apparatus having parallel memory banks
US20170322906A1 (en) * 2016-05-04 2017-11-09 Chengdu Haicun Ip Technology Llc Processor with In-Package Look-Up Table

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8414109D0 (en) * 1984-06-02 1984-07-04 Int Computers Ltd Data reorganisation apparatus
GB2211638A (en) * 1987-10-27 1989-07-05 Ibm Simd array processor
JPH0567203A (ja) * 1991-09-10 1993-03-19 Sony Corp 信号処理用プロセツサ
US5473266A (en) * 1993-04-19 1995-12-05 Altera Corporation Programmable logic device having fast programmable logic array blocks and a central global interconnect array
US5341044A (en) * 1993-04-19 1994-08-23 Altera Corporation Flexible configuration logic array block for programmable logic devices
US5434629A (en) * 1993-12-20 1995-07-18 Focus Automation Systems Inc. Real-time line scan processor
AU3059297A (en) * 1996-05-08 1997-11-26 Integrated Computing Engines, Inc. Parallel-to-serial input/output module for mesh multiprocessor system
US6097212A (en) * 1997-10-09 2000-08-01 Lattice Semiconductor Corporation Variable grain architecture for FPGA integrated circuits
US6665768B1 (en) * 2000-10-12 2003-12-16 Chipwrights Design, Inc. Table look-up operation for SIMD processors with interleaved memory systems
US7506135B1 (en) * 2002-06-03 2009-03-17 Mimar Tibet Histogram generation with vector operations in SIMD and VLIW processor by consolidating LUTs storing parallel update incremented count values for vector data elements
JP4238529B2 (ja) * 2002-07-03 2009-03-18 富士ゼロックス株式会社 画像処理装置
US7134143B2 (en) * 2003-02-04 2006-11-07 Stellenberg Gerald S Method and apparatus for data packet pattern matching
KR20060060689A (ko) * 2003-08-15 2006-06-05 코닌클리즈케 필립스 일렉트로닉스 엔.브이. 병렬 처리 어레이 및 데이터 처리 방법
US7174441B2 (en) * 2003-10-17 2007-02-06 Raza Microelectronics, Inc. Method and apparatus for providing internal table extensibility with external interface
US7282950B1 (en) * 2004-11-08 2007-10-16 Tabula, Inc. Configurable IC's with logic resources with offset connections
US7295037B2 (en) * 2004-11-08 2007-11-13 Tabula, Inc. Configurable IC with routing circuits with offset connections

Also Published As

Publication number Publication date
US20080229063A1 (en) 2008-09-18
WO2007029169A3 (en) 2007-07-05
EP1927056A2 (en) 2008-06-04
WO2007029169A2 (en) 2007-03-15
JP2009507292A (ja) 2009-02-19
CN101258480A (zh) 2008-09-03

Similar Documents

Publication Publication Date Title
US6665790B1 (en) Vector register file with arbitrary vector addressing
US5203002A (en) System with a multiport memory and N processing units for concurrently/individually executing 2N-multi-instruction-words at first/second transitions of a single clock cycle
US5222240A (en) Method and apparatus for delaying writing back the results of instructions to a processor
US6895452B1 (en) Tightly coupled and scalable memory and execution unit architecture
KR100346515B1 (ko) 수퍼파이프라인된수퍼스칼라프로세서를위한임시파이프라인레지스터파일
US5121502A (en) System for selectively communicating instructions from memory locations simultaneously or from the same memory locations sequentially to plurality of processing
US20070239970A1 (en) Apparatus For Cooperative Sharing Of Operand Access Port Of A Banked Register File
JP2013529322A (ja) 高効率の埋め込み型均一マルチコアプラットフォーム用のタイルベースのプロセッサアーキテクチャーモデル
JP2002333978A (ja) Vliw型プロセッサ
KR20040016829A (ko) 파이프라인식 프로세서에서의 예외 취급 방법, 장치 및시스템
US20140047218A1 (en) Multi-stage register renaming using dependency removal
US7308559B2 (en) Digital signal processor with cascaded SIMD organization
US5226128A (en) Horizontal computer having register multiconnect for execution of a loop with a branch
US5274777A (en) Digital data processor executing a conditional instruction within a single machine cycle
US6023751A (en) Computer system and method for evaluating predicates and Boolean expressions
KR20080049727A (ko) 별도의 직렬 모듈을 지닌 프로세서 어레이
CN112074810B (zh) 并行处理设备
US6263424B1 (en) Execution of data dependent arithmetic instructions in multi-pipeline processors
US6981130B2 (en) Forwarding the results of operations to dependent instructions more quickly via multiplexers working in parallel
US7260709B2 (en) Processing method and apparatus for implementing systolic arrays
JP2584156B2 (ja) プログラム制御型プロセッサ
US7007059B1 (en) Fast pipelined adder/subtractor using increment/decrement function with reduced register utilization
US20230195517A1 (en) Multi-Cycle Scheduler with Speculative Picking of Micro-Operations
US20230071941A1 (en) Parallel processing device
US20050114626A1 (en) Very long instruction word architecture

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid