KR20040065258A - 데이터 처리 시스템, 통신 수단 및 데이터 처리 방법 - Google Patents

데이터 처리 시스템, 통신 수단 및 데이터 처리 방법 Download PDF

Info

Publication number
KR20040065258A
KR20040065258A KR10-2004-7009071A KR20047009071A KR20040065258A KR 20040065258 A KR20040065258 A KR 20040065258A KR 20047009071 A KR20047009071 A KR 20047009071A KR 20040065258 A KR20040065258 A KR 20040065258A
Authority
KR
South Korea
Prior art keywords
processor
communication
data
processing system
memory
Prior art date
Application number
KR10-2004-7009071A
Other languages
English (en)
Other versions
KR100960413B1 (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 KR20040065258A publication Critical patent/KR20040065258A/ko
Application granted granted Critical
Publication of KR100960413B1 publication Critical patent/KR100960413B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • 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
    • G06F13/14Handling requests for interconnection or transfer

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본 발명은 각 프로세서에 대해 통신 수단을 도입함으로써 가령 버스 및 메모리와 같은 통신 하드웨어와 가령 프로세서와 같은 계산 하드웨어를 효과적으로 분리시킬 수 있다는 사실을 기반으로 한다. 이러한 분리를 도입함으로써, 프로세서는 자신의 기능 특정 태스크를 수행하는데에 집중할 수 있으며 통신 수단은 해당 프로세서를 위해 통신을 지원한다. 그러므로, 본 발명의 데이터 처리 시스템은 계산 층, 통신 지원 층 및 통신 네트워크 층을 포함한다. 계산 층은 데이터 객체 스트림을 처리하기 위해 제 1 프로세서 및 적어도 하나의 제 2 프로세서를 포함한다. 제 1 프로세서는 다수의 데이터 객체를 상기 스트림에서 제 2 프로세서로 전송하고 이 제 2 프로세서는 그 데이터 객체를 처리한다. 통신 네트워크 층은 메모리 및 이 메모리와 상기 제 1 프로세서 및 상기 제 2 프로세서를 연결시키는 통신 네트워크를 포함한다. 통신 지원 층은 상기 계산 층과 상기 통신 네트워크 층 간에 배치되며 상기 계산 층 내의 제 2 프로세서 각각에 대해 하나의 통신 수단을 포함한다. 상기 제 2 프로세서 각각에 대한 상기 통신 수단은 상기 통신 네트워크 층 내의 상기 통신 네트워크를 통해 상기 제 2 프로세서와 상기 메모리 간의 통신을 제어한다.

Description

데이터 처리 시스템, 통신 수단 및 데이터 처리 방법{DATA PROCESSING SYSTEM HAVING MULTIPLE PROCESSORS AND A COMMUNICATION MEANS IN A DATA PROCESSING SYSTEM HAVING MULTIPLE PROCESSORS}
가령 고화질 MPEG 디코딩과 같은 고성능 데이터 의존형 미디어 처리를 위한 이종 다중프로세서 아키텍쳐가 알려져 있다. 미디어 처리 애플리케이션은 오직 단일방향 데이터 스트림으로 정보를 교환하는 동시에 실행되는 태스크의 세트로서 특정될 수 있다. G. Kahn은 이미 1974년에 "The Semantics of a Simple Language for Parallel Programming", Proc. of the IFIP congress 74, August 5 - 10, Stockholm, Sweden, North-Holland publ.Co,1974, pp 471-475 에서 위와 같은 애플리케이션의 형식적 모델을 소개하였으며 그 이후에 1977 년에 MacQueen과 함께 이 모델에 대한 동작을 "Co-routines and Networks of Parallel Programming", Information Processing 77. B. Gilchhrist(Ed.), North-Holland publ., 1997, pp993 - 998에서 개시하였다. 이러한 형식적 모델은 이제 통상적으로 칸 프로세스 네트워크(a Kahn Process Network)로서 알려져 있다.
애플리케이션은 동시에 실행되는 태스크의 세트로서 알려져 있다. 정보는 오직 단일 방향 데이터 스트림으로 태스크들 간에서 교환될 수 있다. 태스크는 사전규정된 데이터 스트림에 대한 판독 및 기록 프로세스에 의해서 오직 결정론적으로 통신해야 한다. 데이터 스트림은 FIFO 동작을 기반으로 하여 버퍼링된다. 이 버퍼링으로 인해서 스트림을 통해서 통신하는 두 개의 태스크는 개별 판독 또는 기록 프로세스에 대해서 동기화될 필요가 없다.
스트림 처리 시에, 데이터 스트림에 대한 연속적인 동작들은 상이한 프로세서들에 의해서 수행된다. 가령, 제 1 스트림은 이미지의 픽셀 값들로 구성되며 이 값들은 제 1 프로세서에 의해서 처리되어 픽셀들의 8*8 블록들의 DCT(이산 코싸인 변환) 계수들의 블록들의 제 2 스트림을 생성한다. 제 2 프로세서는 DCT 계수들의 블록들을 처리하여 DCT 계수들의 각 블록에 대해서 선택되고 압축된 계수들의 블록들의 스트림을 생성한다.
도 1은 종래 기술에서 알려진 바와 같이 애플리케이션을 프로세서로 맵핑하는 것을 도시한다. 데이터 스트림 처리를 실현하기 위해서 다수의 프로세서가 제공되는데 각 프로세서는 특정 동작을 반복하여 수행할 수 있으며 각 때마다 데이터 객체들의 스트림의 다음 데이터 객체의 데이터를 사용하거나 상기 스트림에서 다음 데이터 객체를 생성할 수 있다. 스트림은 한 프로세서에서 다른 프로세서로 이동하며 이로써 제 1 프로세서에 의해 생성된 스트림은 제 2 프로세서에 의해서 처리되고 이러한 상황이 계속될 수 있다. 데이터를 제 1 프로세서에서 제 2 프로세서로 전달하는 한 메카니즘은 제 1 프로세서에 의해 생성된 데이터 블록을 메모리 내부로 기록하는 것이다.
네트워크 내의 데이터 스트림은 버퍼링된다. 각 버퍼는 정확하게는 하나의 기록기 및 하나 이상의 판독기와 함께 FIFO로서 실현된다. 이러한 버퍼링으로 인해서, 기록기 및 판독기는 채널 상에서 개별 판독 동작 및 개별 기록 동작을 서로 동기화시킬 필요가 없다. 이용가능한 데이터가 불충분한 채널로부터 판독하는 것은 판독 태스크가 정지되게 한다. 프로세서들은 오직 약하게 프로그램가능한 전용 하드웨에 기능 유닛일 수 있다. 모든 프로세서들은 병렬로 동작하며 그들 자신이 제어 쓰레드(thread)를 실행시킨다. 이들은 함께 칸 유형 애플리케이션을 실행하며 여기서 각 태스크는 단일 프로세서로 맵핑된다. 이들 프로세서들은 다중 태스킹(multi-tasking)을 허용할 수 있는데 즉 다중 칸 태스크(multiple Kahn task)가 단일 프로세서 상으로 맵핑될 수 있다.
발명의 개요
본 발명의 목적은 칸 유형 데이터 처리 시스템의 동작을 개선시키는 것이다.
이러한 목적은 청구항 제 1 항에 따른 데이터 처리 시스템 및 청구항 제 24 항에 따른 데이터 처리 방법에 의해서 성취된다.
본 발명은 각 프로세서를 위한 통신 수단을 채용함으로써 데이터 처리 시스템 내의 가령 프로세서와 같은 계산 하드웨어 및 가령 버스 및 메모리와 같은 통신하드웨어를 효과적으로 분리시킬 수 있다는 사상을 기반으로 한다. 이러한 분리 방법을 도입함으로써, 각 프로세서는 자신의 기능에 특정된 태스크만을 수행하는 데 집중할 수 있으며 통신 수단은 각각의 프로세서의 통신을 지원할 수 있다.
그러므로, 데이터 처리 시스템에는 계산, 통신 지원 및 통신 네트워크 층이 제공된다. 계산 층은 데이터 객체 스트림을 처리하는 제 1 프로세서 및 적어도 제 2 프로세서를 포함한다. 제 1 프로세서는 다수의 데이터 객체를 스트림으로부터 제 2 프로세서로 전달하며 이 제 2 프로세서는 상기 데이터 객체를 처리한다. 통신 네트워크 층은 메모리 및 상기 메모리를 제 1 프로세서 및 제 2 프로세서로 연결시키는 통신 네트워크를 포함한다. 통신 지원 층은 계산 층과 통신 네트워크 층 간에 구성되며 계산 층 내의 각 제 2 프로세서를 위한 하나의 통신 수단을 포함한다. 이 각 제 2 프로세서를 위한 통신 수단은 상기 통신 네트워크 층 내의 통신 네트워크를 통해서 상기 제 1 프로세서와 메모리 간의 통신을 제어한다.
이렇게 제 2 프로세서들 중 하나와 통신 네트워트 층 사이에 통신 수단을 도입함으로써 특히 통신 및 메모리 구현 측면의 추상화(abstraction)를 제공함으로써 분명하게 규정된 시스템 레벨 추상화 층이 제공된다. 또한, 국부적 책임을 갖는 분산형 기관이 실현될 수 있으며 이로써 시스템의 스케일가능성이 개선된다.
본 발명의 다른 실시예에서, 상기 통신 수단은 상기 관련 제 2 프로세서의 통신 네트워크 층 내의 메모리로부터/내부로의 판독/기록을 인에이블하는 판독/기록 유닛과, 상기 관련 제 2 프로세서의 판독/기록을 동기화하거나 메모리 액세스의 프로세서간 동기화를 수행하는 동기화 유닛, 및/또는 상기 부착된 프로세서와 연관된 태스크를 스케쥴링하거나 상기 제 2 프로세서에 의해 처리될 태스크 세트를 관리하거나 태스크간 통신 채널을 관리하는 태스크 스케쥴링 유닛을 포함한다. 따라서, 판독/기록 동작에 개별 유닛을 제공함으로써, 판독/기록의 동기화 및 태스크 스위칭은 서로 다른 애플리케이션을 구현할 시에 보다 큰 자유도를 허용하는 통신 수단에 의해서 독립적으로 제어될 수 있다.
본 발명의 다른 실시예에서, 상기 통신 유닛은 태스크마다 다수의 입력 및 출력 스트림 및/또는 다수의 스트림을 처리할 수 있다. 이로써, 제 2 프로세서에 의해 처리된 한 태스크에 의해 생성된 데이터 스트림은 이후의 처리를 위해서 몇 개의 다른 태스크로 전송될 수 있으며 반대의 경우도 성립된다.
본 발명의 다른 실시예에서, 통신 수단은 제 2 프로세서와 무관하게 상기 부착된 제 2 프로세서와 메모리 간의 통신을 제어하는 기능을 구현할 수 있다. 그러므로, 이 통신 수단의 설계는 제 2 프로세서의 설계에 강한 영향을 주지 않는 상기 통신 수단에 의해서 구현될 그의 특정 기능에 대해서 우선적으로 최적화될 수 있다.
본 발명의 다른 실시예에서, 상기 제 2 프로세서와 이와 연관된 통신 수단 간의 통신은 상기 제 2 프로세서가 마스터로서 기능하는 마스터/슬레이브형 통신이다.
본 발명의 다른 실시예에서, 상기 통신 지원 층 내의 상기 통신 수단은 해당 제 2 프로세서에 대해 적응가능한 제 1 태스크 레벨 인터페이스 및 상기 통신 네트워트 및 상기 메모리에 대해 적응가능한 제 2 시스템 레벨 인터페이스를 포함하며,여기서 상기 제 1 인터페이스 및 제 2 인터페이스는 동시적으로 또는 비동시적으로 활성 상태가 된다. 이렇게 적응가능한 태스크 레벨 인터페이스를 제공함으로써 전체 시스템 아키텍쳐에서 통신 수단을 용이하게 재사용할 수 있으며 특정 제 2 프로세서를 위한 특정 애플리케이션의 채용 및 파라미터화가 가능하게 된다.
본 발명의 다른 실시예에서, 상기 제 2 프로세서들 중 적어도 하나는 프로그램가능하며, 상기 제 2 프로세서들 중 상기 적어도 하나의 프로세서의 통신 수단의 제 1 태스크 레벨 인터페이스는 적어도 부분적으로 프로그램가능하고, 상기 통신 수단의 기능 중 일부분은 프로그램가능하다.
또한, 본 발명은 데이터 객체 스트림을 처리하는 제 1 프로세서 및 적어도 제 2 프로세서━상기 제 1 프로세서는 데이터 객체 스트림으로부터의 데이터 객체를 상기 제 2 프로세서로 전송함━와, 상기 데이터 객체를 저장 및 검색하는 적어도 하나의 메모리 및 상기 제 2 프로세서 각각을 위한 하나의 통신 수단을 포함하는 데이터 처리 시스템에서 데이터를 처리하는 방법에 관한 것이며, 이 방법에서 상기 제 1 프로세서 및 상기 제 2 프로세서로의 공유된 액세스가 제공되며, 상기 제 2 프로세서 각각의 통신 수단은 상기 제 2 프로세서와 상기 메모리 간의 통신을 제어한다.
본 발명은 또한 데이터 객체 스트림을 처리하는 제 1 프로세서 및 적어도 하나의 제 2 프로세서를 포함하는 계산 층━상기 제 1 프로세서는 데이터 객체 스트림으로부터의 데이터 객체를 상기 제 2 프로세서로 전송함━과, 통신 네트워크과 메모리를 포함하는 통신 네트워크 층과, 상기 계산 층과 상기 통신 네트워크 층 간에 제공된 통신 지원 층을 갖는 데이터 처리 시스템 내의 통신 수단에 관한 것이다. 상기 통신 수단은 상기 2 프로세서와 상기 통신 네트워크 사이에서 동작성으로 구현되며, 상기 제 2 프로세서와 연관되며 상기 통신 네트워크 층 내의 상기 통신 네트워크를 통해서 상기 제 2 프로세서와 상기 메모리 간의 통신을 제어한다.
본 발명의 다른 실시예들은 청구 범위의 종속항에서 규정된다.
본 발명의 이들 측면과 다른 측면이 이제 첨부 도면을 참조하여 설명될 것이다.
본 발명은 다중 프로세서를 갖는 데이터 처리 시스템 및 이 데이터 처리 시스템 내의 통신 수단에 관한 것이다.
도 1은 종래 기술에 따라 애플리케이션을 프로세서로 맵핑하는 것의 도면,
도 2는 스트림 기반 처리 시스템의 아키텍쳐의 블록도,
도 3은 도 2의 시스템에서 동기화 동작 및 입출력 동작을 설명하는 도면,
도 4는 주기적 FIFO 메모리의 도면,
도 5는 도 2에 따른 각 쉘(shell) 내의 국부적 공간 값들을 갱신하는 메카니즘의 도면,
도 6은 단일 기록기 및 다수의 판독기를 갖는 FIFO 버퍼의 도면,
도 7은 3 스테이션 스트림(a three-station stream)의 한정 메모리 버퍼 구현을 도시한 도면,
도 8은 캐시(cache)에서 데이터의 타당성을 판독 및 관리하는 것을 설명하는 도면.
도 2는 본 발명의 바람직한 실시예에 따른 데이터 객체 스트림을 처리하는 시스템을 도시한다. 이 시스템은 서로 다른 층들 즉 계산 층(1), 통신 지원 층(2) 및 통신 네트워크 층(3)으로 분할된다. 계산 층(1)은 CPU(11) 및 두 개의 프로세서(12a,12b)를 포함한다. 이는 단지 예를 들기 위한 것이므로 보다 많은 프로세서가 존재할 수 있다. 통신 지원 층(2)은 CPU(11)에 연결된 쉘(21) 및 각기 프로세서(12a,12b)에 연결된 쉘(22a,22b)을 포함한다. 통신 네트워크 층(3)은 통신 네트워크(31) 및 메모리(32)를 포함한다.
프로세서(12a,12b)는 바람직하게는 전용 프로세서이며 각각은 한정된 범위의 스트림을 처리하도록 지정된다. 각 프로세서는 연속하는 데이터 객체 스트림에 대해서 동일한 처리 동작을 반복적으로 수행한다. 프로세서(12a,12b)는 가령 가변 길이 디코딩, 실행 길이 디코딩(run-length decoding), 움직임 보상, 이미지 스케일링 또는 DCT 변환과 같은 상이한 기능 또는 태스크를 각기 수행한다. 동작 시에 각 프로세서(12a,12b)는 하나 이상의 데이터 스트림에 대해서 동작을 실행한다. 이러한 동작은 가령 스트림을 수신하고 다른 스트림을 생성하거나 새로운 스트림을 생성하지 않으면서 스트림을 수신하거나 스트림을 수신하지 않으면서 스트림을 생성하거나 수신된 스트림을 수정하는 것을 포함한다. 프로세서(12a,12b)는 다른 프로세서(12a,12b) 또는 CPU(11)에 의해서 생성된 데이터 스트림을 처리하거나 그들 자체로 생성된 스트림을 처리할 수 있다. 이러한 스트림은 상기 메모리(32)를 통해서 프로세서(12a,12b)로/로부터 전송/수신된 일련의 데이터 객체를 포함한다.
쉘(22a,22b)은 통신 층이 되는 통신 네트워크 층에 대해 적응가능한 제 1 인터페이스를 포함한다. 이 층은 모든 쉘에 대해서 균일하며 일반적이다. 또한, 쉘(22a,22b)은 쉘(22a,22b)이 각기 연결된 프로세서(12a,12b)에 대해 적응가능한 제 2 인터페이스를 포함한다. 이 제 2 인터페이스는 태스크 레벨 인터페이스이며 해당 프로세서(12a,12b)에 대해서 적응가능하며 이로써 상기 프로세서(12a,12b)의 특정 필요 사항을 처리한다. 따라서, 쉘(22a,22b)은 제 2 인터페이스로서 프로세서 특정 인터페이스를 가지지만 쉘의 전체 아키텍쳐는 모든 프로세서에 대해서 일반적이며 균일하여서 전체 시스템 아키텍쳐에서 그 쉘들을 쉽게 재사용할 수 있으면서 특정 애플리케이션의 채용 및 파라미터화를 가능하게 한다.
쉘(22a,22b)은 데이터 전송을 위한 판독/기록 유닛과, 동기화 유닛 및 태스크 스위칭 유닛을 포함한다. 이 세 유닛은 마스터/슬레이브 기반으로 관련 프로세서와 통신하는데 여기서 프로세서가 마스터 기능을 한다. 따라서, 각각의 세 유닛은 프로세서로부터의 요청에 의해서 초기화된다. 바람직하게는, 프로세서와 세 유닛 간의 통신은 요청-승인 상호 동의 메카니즘(a request-acknowledge handshake mechanism)에 의해서 구현되며 이로써 인수 값(argument value)을 건네주고 요청된 값이 복귀하기를 대기한다. 이로써, 통신은 차단성 통신인데 즉 각각의 제어 쓰레드가 그들의 완료를 대기한다.
판독/기록 유닛은 바람직하게는 두 개의 상이한 동작, 즉 프로세서(12a,12b)로 하여금 메모리로부터 데이터 객체를 판독하도록 하는 판독 동작 및 프로세서(12a,12b)로 하여금 데이터 객체를 메모리 내부로 기록하도록 하는 기록 동작을 구현한다. 각 태스크는 데이터 스트림을 위한 부착 지점에 대응하는 사전규정된 포트 세트를 갖는다. 이들 동작에서의 인수들은 각 포트의 ID '포트_id', 판독/기록 동작이 발생해야 하는 오프셋 '오프셋' 및 데이터 객체의 가변 길이 'n_바이트'이다. 포트는 '포트_id' 인수에 의해 선택된다. 이 인수는 오직 현재의 태스크를 위한 국부적 범위를 갖는 작은 음이 아닌 수(small non-negative number)이다.
동기화 유닛은 비어 있는 FIFO로부터 판독하거나 차 있는 FIFO로 기록하는 동작에 대해서 국부적 차단 상태를 처리하는 동기화를 위해서 두 개의 동작을 구현한다. 제 1 동작, 즉 공간 획득 동작(getspace operation)은 FIFO로서 구현되는 메모리 내부에 공간을 요청하는 것이며, 제 2 동작, 즉 공간 제공 동작(putspace operation)은 FIFO 내의 공간을 내어 주도록 요청하는 것이다. 이러한 동작들의 인수들은 '포트_id' 및 'n_바이트' 이다.
이러한 공간 획득 동작 및 공간 제공 동작은 선형 태이프 또는 FIFO 순서 동기화 방식으로 수행되며 이 동작에 의해서 획득된 윈도우 내부에서 랜덤 액세스 판독/기록 동작이 지원된다.
태스크 스위칭 유닛은 태스트 획득 동작으로서 프로세서의 태스크 스위칭을 구현한다. 이 동작을 위한 인수는 '차단', '에러', 및 '태스크_정보'이다.
인수 '차단'은 입력 포트 또는 출력 포트에 대한 공간 획득 호출이거짓(false)으로 복귀되었기 때문에 최종 처리 단계가 성공적으로 완료되지 않는다면 참(true)으로 설정되는 불 값(Boolean value)이다. 따라서, 태스크 스케쥴링 유닛에게 새로운 공간 메시지가 차단된 포트를 위해서 도달하지 않는다면 상기 태스크는 재스케쥴링되지 않는 것이 좋다는 정보가 제공된다. 이 인수 값은 개선된 스케쥴링을 이루지만 기능에 결코 영향을 주지 않을 것이라는 충고 정도로서 고려된다. 인수 '에러' 는 최종 처리 단계 동안 치명적인 에러가 코프로세서 내부에 발생하는 경우에 참으로 설정되는 불 값이다. MPEG 디코딩으로부터의 실례는 가령 미지의 변수 길이 코드 또는 불법 움직임 벡터의 출현이다. 만일 이러한 경우에는, 쉘이 태스크 테이블 인에이블 플래그(task table enable flag)를 제거하여 후속 스케쥴링을 방지하고 인터럽트가 메인 CPU에 전송되어 그 시스템 상태를 복구한다. 현재의 태스크는 CPU가 소프트웨어를 통해 상호작용하지 않는다면 결코 스케쥴링되지 않을 것이다.
바로 위에서 상술된 동작들은 프로세서로부터의 판독 호출, 기록 호출, 공간 획득 호출, 공간 제공 호출 또는 태스크 획득 호출에 의해서 개시된다.
도 3은 판독 및 기록 동작 및 이와 연관된 동기화 동작의 프로세스를 설명한다. 프로세서 측에서 볼 때, 데이터 스트림은 현재의 액세스 지점을 갖는 데이터의 무한한 태이프처럼 보인다. 프로세서로부터 발행된 공간 획득 호출은 도 3a에서 작은 화살표로 표시된 바와 같은 현재의 액세스 지점 앞의 소정의 데이터 공간으로의 액세스의 허용을 요청한다. 만일 이러한 요청이 허용되면, 프로세서는 요청된 공간 내부에서 즉 도 3b에서 프레임된 윈도우 내부에서 n_바이트 인수로 표시된 바와 같은 가변 길이 데이터를 사용하여 오프셋 인수로 표시된 랜덤 액세스 위치에서 판독 동작 및 기록 동작을 수행할 수 있다.
만일 상기 요청이 허용되지 않는다면, 상기 호출은 거짓(false)으로 복귀된다. 하나 이상의 공간 획득 호출 및 선택사양적으로 몇 개의 판독 동작 및 기록 동작 이후에, 프로세서는 그 데이터 공간의 처리의 완료 여부를 결정하고 공간 제공 호출을 발행한다. 이 호출은 소정 개수의 바이트 즉 도 3d에서 n_바이트2 만큼 액세스 지점을 앞당기며 그 크기는 이전에 허용된 공간에 의해 제약된다.
도 4는 주기적 FIFO 메모리를 도시한다. 데이터 스트림을 통신하는 것은 FIFO 버퍼를 필요로 하며 바람직하게는 이 버퍼는 한정된 일정한 크기를 갖는다. 바람직하게는, 이는 메모리에서 사전할당되며 주기적 어드레싱 메카니즘은 선형 메모리 어드레스 범위에서 적합한 FIFO 동작에 대해서 사용된다.
도 4의 중심의 회전 화살표(50)는 프로세서로부터의 공간 획득 호출이 판독/기록을 위해 제공된 윈도우를 확인하는 방향을 도시하며 이 방향은 공간 제공 호출이 액세스 지점을 앞당기는 방향과 동일한 방향이다. 작은 화살표(51,52)는 태스크 A,B의 현재의 액세스 지점을 나타낸다. 이 실례에서 A는 기록기로서 적합한 데이터를 뒤에 남기며, B는 판독기로서 비어 있는 공간(또는 의미없는 공간)을 뒤에 남긴다. 각 액세스 지점 앞의 음영 영역(A1,B1)은 공간 획득 동작에 의해서 획득된 액세스 윈도우를 나타낸다.
태스크 A 및 B는 서로 다른 속도로 진행되며 멀티태스킹으로 인해서 시간 상 동일한 주기 동안 제공되지 않는다. 쉘(22a,22b)은 A,B가 실행되는프로세서(12a,12b)에 A,B의 액세스 지점이 그들의 각각의 순서를 지키도록, 보다 엄격하게 말하자면 허용된 액세스 윈도우들이 결코 중첩하지 않도록 보장하는 정보를 제공한다. 전체적 기능의 정확성이 성취되도록 쉘(22a,22b)에 의해 제공된 정보를 사용하는 것은 프로세서(12a,12b)의 책임이다. 가령, 쉘(22a,22b)은 가령 버퍼 내에 이용가능한 공간이 불충분하기 때문에 프로세서로부터의 공간 획득 요청을 잘못 응답할 수 있다. 이로써, 프로세서는 액세스 요청 부인에 따라서 버퍼로 액세스할 수 없게 된다.
쉘(22a,22b)은 각각이 자신과 연관된 프로세서(12a,12b)에 근접하여 구현될 수 있도록 분포된다. 각 쉘은 그의 프로세서 상의 맵핑된 태스크과 함께 발생하는 스트림에 대한 구성 데이터를 국부적으로 포함하며 이 데이터를 적절하게 처리하기 위해서 모든 제어 로직을 국부적으로 구현한다. 따라서, 각 스트림 또는 각 액세스 지점을 위한 필드들의 행을 포함하는 국부적 스트림 테이블이 쉘(22a,22b)에서 구현된다.
도 4의 구성을 구현하기 위해서, 태스크 A,B의 프로세서 쉘(22a,22b)의 스트림 테이블은 그 버퍼 내에서 자신의 액세스 지점에서 다른 액세스 지점에 대해 떨어진 거리(부정적인 측면의 거리)를 포함하는 '공간' 필드와 그 버퍼 내에서 다른 액세스 지점의 태스크 및 포트를 갖는 떨어진 쉘을 나타내는 ID을 보유하는 한 라인을 포함한다. 또한, 상기 국부적 스트림 테이블은 현재의 액세스 지점에 대응하는 메모리 어드레스를 포함하고 버퍼 베이스 어드레스와 버퍼 크기를 위한 코딩을 포함하며 이로써 인용된 어드레스 증분을 지원한다.
이 스트림 테이블은 바람직하게는 상기 각 쉘(22) 내에서 레지스터 파일과 같은 작은 메모리 내에서 메모리 맵핑된다. 그러므로, 공간 획득 호출은 요청된 크기와 국부적으로 저장된 가용한 공간을 비교함으로써 즉각적으로 국부적으로 응답될 수 있다. 공간 제공 호출 시에 이 국부적 공간 필드는 표시된 양만큼 감분되며 공간 제공 메시지가 이전의 액세스 지점을 보유하는 다른 쉘로 전송되어 그의 공간 값을 증분시킨다. 따라서, 떨어진 소스로부터 상기 공간 제공 메시지를 수신하면 쉘(22)은 국부적 필드를 증분시킨다. 쉘들 간의 이러한 메시지 전송은 시간을 필요로 하기 때문에, 모든 공간 필드가 전체 버퍼 크기로 합산될 필요는 없지만 잠시 상기 부정적인 측면의 값을 포함할 수 있는 경우도 발생할 수 있다. 그러나, 이는 동기화 안전성을 위반하지 않는다. 심지어 예외적으로 다수의 메시지가 현재 목적지로 가고 있는 도중이고 이들은 순서대로 제공되지 않지만 동기화 상태가 여전히 정확하게 유지되는 경우도 있다.
도 5는 각 쉘 내의 국부적 공간 값을 갱신하고 '공간 제공' 메시지를 전송하는 메카니즘을 도시한다. 이 구성에서, 프로세서(12a,12b)로부터의 공간 획득 요청, 즉 공간 획득 호출은 요청된 크기와 국부적으로 저장된 공간 정보를 비교함으로써 해당 쉘(22a,22b) 내에서 즉각적으로 국부적으로 응답될 수 있다. 공간 제공 호출 시에, 국부적 쉘(22a,22b)은 그의 공간 필드를 표시된 양만큼 감분하며 공간 제공 메시지를 떨어진 쉘에 전송한다. 떨어진 쉘, 즉 다른 프로세서의 쉘은 다른 액세스 지점을 보유하여 거기서 공간 값을 증분한다. 이에 따라서, 이 국부적 쉘은 떨어진 소스로부터 상기 공간 제공 메시지를 수신받으면 그의 공간 필드를증분한다.
액세스 지점에 속하는 공간 필드는 두 개의 소스에 의해서 수정된다. 즉, 국부적 공간 제공 호출 시의 감분 및 공간 제공 메시지의 수신 시의 증분이다. 이러한 증분 또는 감분은 아주 작은 동작(atomic operation)으로서 구현되지 않으며 이로써 에러가 발생할 수 있다. 이러한 경우에 분리된 국부 공간 및 원격 공간 필드가 사용될 수 있으며 각각은 오직 단일 소스에 의해서 갱신된다. 국부적 공간 획득 호출 시에 이들 값이 감산된다. 쉘(22)은 항상 그 자신의 국부적 테이블의 갱신을 제어하며 이들을 아주 작은 방식(atomic way)으로 수행한다. 분명하게는 이는 오직 쉘 구현 문제이며 이 문제는 외부 기능적으로는 감지되지 않는다.
공간 획득 호출이 거짓으로 복귀하면, 프로세서는 결정하고 반응하는 데 있어서 자유롭다. 이 경우에는, a) 그 프로세서가 보다 작은 n_바이트 인수를 갖는 새로운 공간 획득 호출을 발행할 수 있거나, b) 그 프로세서가 순간적으로 대기 상태에 있다가 다시 시도할 수 있거나, c) 그 프로세서가 현재의 태스크를 중지하고 이 프로세서 상의 다른 태스크가 진행되게 할 수 있다.
이로써 보다 많은 데이터의 예상된 도달 시간 및 관련 상태와 함께 내부적으로 축적된 상태의 절감 비용량에 의존하도록 태스크 스위칭을 결정할 수 있다. 프로그램불가능한 전용 하드웨어 프로세서의 경우, 이러한 결정은 아키텍쳐 설계 프로세스의 일부이다.
쉘(22)의 이러한 구현 및 동작은 판독 포트와 기록 포트 간을 서로 구별할 수는 없지만 특정 실례는 이러한 구별을 할 수 있다. 쉘(22)에 의해 구현된 동작들은 FIFO 버퍼의 크기, 메모리 내에서의 그의 위치, 메모리 연관 주기적 FIFO를 위한 어드레스에 대한 임의의 랩어라운드 메카니즘(any wrap-around mechanism), 캐싱 전략(caching strategy), 캐시 일관성, 범용 입출력 정렬 제약 사항, 데이터 버스 폭, 메모리 정렬 제약 사항, 통신 네트워크 구조 및 메모리 구성과 같은 구현 측면들을 효과적으로 은폐할 수 있다.
바람직하게는, 쉘(22a,22b)은 포맷되지 않은 일련의 바이트 상에서 동작한다. 데이터 스트림을 통신하는 판독기 및 기록기에 의해 사용된 동기화 패킷 크기들 간의 어떠한 상관도 필요하지 않다. 데이터 내용의 의미론적 해석은 프로세서의 몫이다. 태스크는 자신이 통신하고 있는 태스크가 어느 것인지 그리고 이들 태스크가 맵핑되는 프로세서가 어느 것이진 그리고 동일한 프로세서 상에서 맵핑되는 태스크가 어느 것인지와 같은 애플리케이션 그래프 발생 구조를 알고 있지 않다.
셀(22)의 고성능 구현 시에, 판독 호출, 기록 호출, 공간 획득 호출, 공간 제공 호출은 기록/판독 유닛 및 쉘(22a,22b)의 동기화 유닛을 통해서 병렬로 발행될 수 있다. 쉘(22)의 상이한 포트들 상에서 동작하는 호출들은 어떠한 상호 간의 우선 순위 제약도 가지지 않으며 쉘(22)의 동일한 포트 상에서 동작하는 호출들은 호출기 태스크 또는 프로세서에 따라서 순서가 정해진다. 이러한 경우를 위해서, 그 프로세서로부터의 다음 호출은 소프트웨어 구현 시에는 기능 호출로부터 복귀함으로써 그리고 하드웨어 구현 시에는 동의 신호를 제공함으로써 이전 호출이 복귀하면 시작된다.
판독 호출 시에 크기 인수 즉 n_바이트의 제로 값이 포트_id 인수 및 오프셋 인수에 의해 표시된 위치에서 메모리에서 쉘 캐시로 데이터를 프리페치(pre-fetch)하기 위해서 저장된다. 이러한 동작은 쉘에 의해 수행되는 자동 프리페치를 위해서 사용될 수 있다. 마찬가지로, 기록 호출 시에도 제로 값이 캐시 플러시 요청(a cache flush request)을 위해서 저장될 수 있지만 자동 캐시 플러싱은 셀의 책임이다.
선택사양적으로, 모든 5 개의 동작은 추가적인 최종 태스크_ID 인수를 접수한다. 이는 통상적으로 조기의 태스크 획득 호출로부터 결과 값으로서 획득된 작은 양수이다. 이 인수의 제로 값은 태스크에 특정되지는 않지만 프로세서 제어와 연관된 호출을 위해서 저장된다.
바람직한 실시예에서, 데이터 스트림 통신을 위한 셋업은 한정된 크기를 갖는 FIFO 버퍼에 접속된 하나의 판독기 및 하나의 기록기를 갖는 스트림이다. 이러한 스트림은 한정된 일정한 크기를 갖는 FIFO 버퍼를 필요로 한다. 이 버퍼는 메모리 내에 사전 할당될 것이며 그의 선형 어드레스 범위에서는 주기적 어드레싱 메카니즘이 적합한 FIFO 동작을 위해서 적용된다.
그러나, 도 2 및 도 6을 기반으로 하는 다른 실시예에서, 한 태스크에 의해 생성된 데이터 스트림은 상이한 입력 포트들을 갖는 두 개 이상의 상이한 소비자에 의해 소비될 것이다. 이러한 상황은 용어 "포킹(forking)"으로서 기술될 수 있다. 그러나, 멀티태스킹 하드웨어 프로세서 뿐만 아니라 CPU 상에서 동작하는 소프트웨어 태스크의 경우에도 태스크 구현을 다시 사용하는 것이 바람직하다. 이는 그들의 기본 기능에 대응하는 고정된 개수의 포트를 갖는 태스크를 통해서 구현되며 애플리케이션 구성에 의해 유도된 포킹을 위한 어떠한 필요 사항도 상기 쉘에 의해서 해결될 수 있다.
분명하게는 스트림 포킹은 두 개의 별도의 통상적인 스트림 버퍼를 단지 유지시키고 모든 기록 및 공간 제공 동작들을 2 배로 하고 2 배로 된 공간 획득 체크의 결과 값에 대해서 AND 연산을 수행함으로써 쉘(22)에 의해서 구현될 수 있다. 바람직하게는, 이는 이에 대한 비용이 2 배의 기록 대역폭 및 보다 큰 버퍼 공간을 포함하기 때문에 구현되지 않는다. 이 대신에 바람직하게는 동일한 FIFO 버퍼를 공유하는 두 개 이상의 판독기 및 하나의 기록기로 구현될 수 있다.
도 6은 단일 기록기 및 다수의 판독기를 갖는 FIFO 버퍼를 설명하는 도면이다. 동기화 메카니즘은 A 및 C 간의 쌍형 순위 배열 옆에 존재하는 A 및 B 간의 통상적인 쌍형 순위 배열을 보장해야 하며 B 및 C는 가령 이들이 순수한 판독기라고 가정하면 서로 간의 어떠한 제약도 존재하지 않는다. 이는 각 판독기(A 내지 B 및 A 내지 C)를 위해 가용한 공간을 개별적으로 추적함으로써 기록 동작을 수행하는 프로세서와 연관된 쉘 내에서 성취된다. 기록기가 국부적 공간 획득 호출을 수생하면, 그의 n_바이트 인수가 이들 공간 값들 각각과 비교된다. 이는 다음 라인으로의 변경을 표시하기 위해 하나의 추가된 필드 또는 열에 의해 접속된 포킹을 위한 상기 스트림 테이블 내의 추가 라인을 사용함으로써 구현된다.
이는 포킹이 사용되지 않는 대부분의 경우에 아주 매우 작은 오버헤드를 제공하며 이와 동시에 오직 2 웨이(two way)로만 포킹을 한정하지 않는다. 바람직하게는, 포킹은 오직 기록기에 의해서만 구현되고 판독기는 이러한 상황을 모른다.
도 2 및 도 7을 기반으로 하는 다른 실시예에서, 데이터 스트림은 테이프 모델을 따라서 3 스테이션 스트림으로서 구현된다. 각 스테이션은 통과하는 데이터 스트림을 어느 정도 갱신한다. 이 3 스테이션 스트림의 애플리케이션의 실례는 하나의 기록기 및 중간의 워치독(watchdog) 및 최종 판독기이다. 이러한 실례에서 제 2 태스크는 바람직하게는 통과하는 데이터를 감시하여 어느 정도에서는 이 데이터는 조사 대상일 수 있지만 대부분의 경우에는 데이터가 수정되지 않고 통과한다. 제 2 태스크가 그 스트림 내의 몇몇 항복을 변경시키기로 결정할 수 있지만 이는 자주 발생하지 않는다. 이러한 경우는 프로세서에 의한 동일 면 버퍼 갱신에 의해서 효율적으로 성취되어 한 버퍼에서 다른 버퍼로 전체 스트림 내용이 복사되는 것을 방지한다. 실제로, 이는 하드웨어 프로세서(12)가 통신하고 메인 CPU(11)가 하드웨어 결함을 보정하거나 근소하게 상이한 스트림 포맷들을 재조정하거나 디버깅(debugging)을 하기 위해서 스트림을 수정할 때에 유용하다. 이러한 셋업은 모든 3 개의 프로세서가 메모리 내의 단일 스트림 버퍼를 공유함으로써 성취될 수 있으며 이로써 메모리 트래픽 및 프로세서 작업부하를 감소시킨다. 태스크 B는 실제로 모든 데이터 스트림을 판독 또는 기록하지 않는다.
도 7은 3 스테이션 스트림을 위한 한정된 메모리 버퍼 구현을 도시한다. 이러한 3 웨이 버퍼(three way buffer)의 적절한 시멘틱스(proper semantics)는 서로 대한 A,B,C 간의 엄격한 순위 배열을 유지하는 것과 서로 중첩하지 않는 윈도우를 보장하는 것을 포함한다. 이러한 방식으로, 3 웨이 버퍼는 도 4에 도시된 바와같은 2 웨이 버퍼의 확장형이다. 이러한 멀티웨이 주기적 FIFO는 상술된 바와 같은 쉘들의 동작들에 의해서 뿐만 아니라 상기 바람직한 실시예에서 설명된 공간 제공 메시지를 갖는 분산형 구현 유형에 의해서도 바로 지원될 수 있다. 단일 FIFO 내의 3 개의 스테이션에 대해서는 어떠한 제한도 존재하지 않다. 한 스테이션이 유용한 데이터를 소비뿐만 아니라 생성도 하는 적합한 처리 방식은 2 개의 스테이션의 경우에도 적용될 수 있다. 이 경우에서 두 태스크들은 서로 데이터를 교환하기 위해서 적합한 처리 방식을 수행하며 어떠한 빈 공간도 버퍼 내에 남지 않는다.
도 2를 기반으로 하는 다른 실시예에서 버퍼로의 단일 액세스가 기술된다. 이러한 단일 액세스 버퍼는 오직 하나의 포트만을 포함한다. 이 실례에서 어떠한 데이터도 태스크들 간에 또는 프로세서들 간에 교환되지 않는다. 대신에, 이는 국부적 재사용을 위한 상기 쉘들의 표준 통신 동작들의 애플리케이션이다. 쉘들의 셋업은 그에 부착된 단일 액세스 지점을 갖는 표준 버퍼 메모리로 구성된다. 이 태스크는 이제 국부적 스크래치패드 또는 캐시로서 상기 버퍼를 사용한다. 아키텍쳐의 관점에서 이는 몇 개의 목적을 위해 존재하는 대형 메모리와 태스크들을 결합하여 사용하는 것과 가령 소프트웨어 구성가능한 메모리 크기를 사용하는 것과 같은 다수의 장점을 갖는다. 또한, 이러한 셋업의 태스크 특정 알고리즘을 제공하기 위해서 스크래치패드 메모리를 사용하는 것은 멀티태스킹 프로세서에서 태스크 상태들을 저장 및 검색하는 데 적용될 수 있다. 이 경우에 상태 교환을 위한 기록/판독 동작을 수행하는 것은 태스크 기능 코드의 일부는 아니지만프로세서 제어 코드의 일부가 된다. 버퍼가 다른 태스크와 통신하는 데 사용되지 않기 때문에, 통상적으로 그 버퍼 상에서 공간 제공 호출 동작 및 공간 획득 호출 동작을 수행할 필요가 없다.
도 2 및 도 8을 기반으로 하는 다른 실시예에서, 바람직한 실시예에 따른 쉘(22)은 프로세서(12)와 통신 네트워크(31)와 메모리(32) 간의 데이터 전송 즉 판독 동작 및 기록 동작을 위한 데이터 캐시를 더 포함한다. 이 쉘(22) 내의 데이터 캐시의 구현은 데이터 버스 폭의 투명한 변환, 전체 상호접속부 즉 통신 네트워크(32)에 대한 정렬 제약 사항 해결 및 상기 전체 상호접속부에 대한 입출력 동작의 수의 감소를 제공한다.
바람직하게는, 쉘(22)은 판독 인터페이스 및 기록 인터페이스 내에 캐시를 포함하지만 이 캐시는 이 애플리케이션 기능 측면에서 감지되지 않는다. 여기서, 공간 제공 및 공간 획득 동작을 사용하는 메카니즘이 캐시 일관성(cache coherence)을 명백하게 제어하기 위해서 사용된다. 이 캐시는 프로세서 판독 및 기록 포트를 전체 상호접속부 통신 네트워크(32)로부터 분리시키는 중요한 역할을 한다. 이 캐시는 시스템 속도 및 전력 및 면적에 있어서 시스템 성능에 중요한 영향을 준다.
태스크 포트에 허용된 데이터 스트림 상의 윈도우에 대한 액세스는 비밀로 보장된다. 이로써 이 구역에서 판독 동작 및 기록 동작은 절감되고 중간의 프로세서내 통신을 필요로 하지 않는다. 액세스 윈도우는 주기적 FIFO 내부의 이전 메모리 공간으로부터 새로운 메모리 공간을 획득하는 국부적 공간 획득 요청에 의해서 확장된다. 이 캐시의 어느 정도 일부가 상기 확장부에 대응하도록 태크(tag)되고 상기 태스크가 상기 확장부 내의 데이터를 판독하는 데 관심이 있다면, 상기 캐시 부분은 무효화(invalidation)를 필요로 한다. 이어서 판독 동작이 이 위치에서 발생하고 캐시 미스(a cache miss)가 발생하고 갱신된 유효한 데이터가 그 캐시 내부로 로딩된다. 정교한 쉘 구현은 이러한 캐시 미스의 불이익을 감소키기 위해 프리페치 요청을 발행하는 데 있어서 공간 획득 동작을 사용할 수 있다. 액세스 윈도우는 주기적 FIFO 내부의 이후의 메모리 공간에 새로운 메모리 공간을 남기도록 하는 국부적 공간 제공 요청에 의해서 수축된다. 만일 이러한 수축 부분이 캐시 내에 존재하고 이 부분이 기록되었던 부분이라면 즉 사용불가능한 부분이라면, 이 캐시 부분은 그의 국부 데이터가 다른 프로세서에서 이용될 수 있도록 플러싱(flushing)될 필요가 있다. 공간 제공 메시지를 다른 프로세서에 전송하는 것은 캐시 플러시 동작이 완료되고 메모리 동작들의 안전한 순위 배열이 보장될 때까지 연기되어야 한다.
명백한 캐시 일관성 제어를 위해서 오직 국부적 공간 획득 및 공간 제공 동작만을 사용하는 것은 버스 스누핑(bus snooping)과 같은 다른 범용 캐시 일관성 제어 메카니즘에 비해서 대형 시스템 아키텍쳐에서는 구현하기가 보다 용이하다. 또한, 이 메카니즘은 가령 아키텍쳐를 통한 캐시 기록과 같은 통신 오버헤드를 제공하지 않는다.
이 공간 획득 및 공간 제공 동작들은 바이트 그룹(byte granularity)으로 동작하도록 규정된다. 캐시의 주요한 책임은 프로세서에 대해서 전체 상호접속부데이터 전달 크기 및 데이터 전달 정렬 제약 사항을 은폐하는 것이다. 바람직하게는, 데이터 전달 크기는 상기 정렬에 대해서 16 바이트로 설정되며 동기화된 데이터량 뿐만 아니라 2 바이트가 능동적으로 사용될 수 있다. 그러므로, 동일한 메모리 워드 또는 전달된 유닛이 상이한 프로세서들의 캐시들 내에 동시에 저장될 수 있으며 무효한 정보가 각 캐시 내에서 바이트 그룹으로 처리된다.
도 8은 3 개의 상이한 상황에서 캐시 내의 데이터의 유효성을 판독 및 관리하는 것을 도시한다. 이 도면에서 각 상황은 판독 요청이 캐시 미스를 유발하는 비어 있는 캐시 상에서 발생한다는 것을 가정한다. 도 8a는 메모리 전달 유닛(800), 즉 제공된 윈도우(810) 내부에 그 전체가 포함된 워드의 프리페치를 일으키는 판독 요청을 표시한다. 분명하게는 이 전체 워드가 메모리 내에서 유효하며 어떠한 특정한 유효(무효) 평가 수단이 필요하지 않다.
도 8b에서, 페치된 워드(801)는 프로세서에 의해 획득된 공간(811)을 넘어서 부분적으로 연장되지만 가용한 쉘 내부에서 국부적으로 관리되는 공간 내부에는 남아 있다. 오직 공간 획득 인수만이 사용된다면, 이 워드는 부분적으로 무효하다고 선언될 것이며 일단 공간 획득 윈도우가 연장되면 그 워드는 다시 판독될 필요가 있다. 그러나, 가용한 공간의 실제 값이 체크되면 전체 워드가 유효하다고 표시될 수 있다.
도 8c에서 페치된 워드(802)는 절감될 것으로 알려지지 않으면서 다른 프로세서에 의해서 여전히 기록될 것인 공간(820) 내부로 부분적으로 연장된다. 이제, 이 워드가 캐시 내부로 로딩될 때에 그 워드 내부의 상기 구역이 무효하다는것을 표시할 필요가 있다. 이 워드 부분이 나중에 액세스되면 이 워드는 다시 판독될 필요가 있는데 그 이유는 상기 알려지지 않은 부분은 일반적으로 현재의 액세스 지점의 좌측에서 상기 워드 내에서 연장되기 때문이다.
또한, 단일 판독 요청은 두 개의 연속하는 워드 간의 경계를 교차하거나 프로세서의 판독 인터페이스가 메모리 워드보다 폭이 넓기 때문에 하나 이상의 메모리 워드를 커버할 수 있다. 도 8은 요청된 버퍼 공간보다 상대적으로 큰 메모리 워드를 도시한다. 실제로, 요청된 윈도우는 종종 보다 매우 크지만 극단의 경우에는 전체 주기적 통신 버퍼가 또한 단일 메모리 워드만큼 작을 수도 있다.
캐시 일관성 제어 시에 공간 획득 동작, 판독 동작과 (무효)유효 표시 간에 밀접한 관계가 있을 뿐만 아니라 공간 제공 동작, 기록 동작과 사용불가능 표시와 캐시 플러시 간에서도 밀접한 관계가 존재한다. '칸' 스타일 애플리케이션에서 포트는 전용 방향 입력 또는 출력을 갖는다. 바람직하게는, 분리된 판독 캐시 및 기록 캐시가 사용되어 몇몇 구현 문제를 단순하게 한다. 수 많은 스트림에 대해서 프로세서는 주기적 어드레스 공간을 통해서 선형으로 동작하며 판독 캐시는 선택사양적으로 프리페치 동작을 지원하고 기록 캐시는 선택사양적으로 프리플러시 동작(pre-flushing)을 지원하며, 다음 워드로의 두 개의 판독 액세스 이동 동안 이전 워드의 캐시 위치는 예상된 차후 사용을 위해서 이용가능하게 될 수 있다. 판독 데이터 경로 및 기록 데이터 경로의 개별 구현은 가령 파이프라인형 프로세서 구현 시에 병렬로 발생하는 프로세서로부터의 판독 요청 및 기록 요청을 보다 용이하게 지원할 수 있다.
또한, 프로세서는 바이트 그룹으로 데이터를 기록하며 캐시는 그 캐시 내에서 바이트마다 사용불가능한 비트를 관리한다. 공간 제공 요청 시에 캐시는 상기 워드들을 캐시로부터 공유 메모리로 플러시하며 이 공유 메모리는 상기 요청에 의해 표시된 어드레스 범위와 중첩한다. 상기 사용불가능한 비트는 버스 기록 요청 시에 기록 표시가 상기 메모리가 액세스 윈도우 외부의 바이트 위치에서는 결코 기록되지 않음을 보장하도록 하는 데 사용된다.
도 2을 기반으로 하는 다른 실시예에서, 쉘(22a) 내의 동기화 유닛은 다른 쉘(22b) 내의 동기화 유닛에 접속된다. 이 동기화 유닛들은 처리된 스트림에 대한 유효한 데이터가 메모리 위치에 기록되기 이전에 한 프로세서가 상기 메모리 위치를 액세스하지 않도록 보장한다. 마찬가지로, 동기화 인터페이스가 사용되어 프로세서(12a)가 메모리(32) 내의 유용한 데이터에 덮어쓰기를 하지 않도록 보장한다. 동기화 유닛들은 동기화 메시지 네트워크를 통해서 통신한다. 바람직하게는, 이들은 링(ring)의 일부분을 형성하고 이 링에서 동기화 신호들이 한 프로세서에서 다른 프로세서로 전송되며 이들 신호가 임의의 후속 프로세서에서는 필요하지 않는 경우에는 차단 또는 덮어쓰기를 받는다. 동기화 유닛들은 함께 동기화 채널을 형성한다. 동기화 유닛은 데이터 객체 스트림을 프로세서(12a)에서 프로세서(12b)로 전달하기 사용되는 메모리 공간에 대한 정보를 관리한다.

Claims (29)

  1. 데이터 처리 시스템에 있어서,
    데이터 객체 스트림을 처리하는 제 1 프로세서 및 적어도 하나의 제 2 프로세서를 포함하는 계산 층(a computation layer)━상기 제 1 프로세서는 데이터 객체 스트림으로부터의 데이터 객체를 상기 제 2 프로세서로 전송함━과,
    통신 네트워크과 메모리를 포함하는 통신 네트워크 층과,
    상기 제 2 프로세서 각각에 대해 하나의 통신 수단을 포함하되 상기 계산 층과 상기 통신 네트워크 층 간에 배치된 통신 지원 층을 포함하며,
    상기 제 2 프로세서 각각에 대한 상기 통신 수단은 상기 통신 네트워크 층 내의 상기 통신 네트워크를 통한 상기 제 2 프로세서와 상기 메모리 간의 통신을 제어하는
    데이터 처리 시스템.
  2. 제 1 항에 있어서,
    상기 제 2 프로세서는 제 1 태스크 및 제 2 태스크의 인터리빙된 처리(interleaved processing)를 수행할 수 있는 멀티태스킹 프로세서(a multi-tasking processor)이며,
    상기 제 1 태스크 및 상기 제 2 태스크는 각기 제 1 데이터 객체 스트림 및제 2 데이터 객체 스트림을 처리하는
    데이터 처리 시스템.
  3. 제 2 항에 있어서,
    상기 통신 수단은 태스크마다 다수의 입력 및 출력 스트림 및/또는 다수의 스트림을 처리하는
    데이터 처리 시스템.
  4. 제 1 항에 있어서,
    상기 통신 수단 각각은,
    상기 통신 네트워크 층 내의 상기 메모리로부터의/로의 상기 해당 제 2 프로세서의 판독 동작/기록 동작을 인에이블하는 판독/기록 유닛과,
    상기 해당 제 2 프로세서의 판독 동작/기록 동작을 동기화하고/하거나 메모리 액세스의 프로세서간 동기화를 수행하는 동기화 유닛과,
    상기 부착된 프로세서와 연관된 태스크를 스케쥴링하고, 상기 제 2 프로세서에 의해 처리될 태스크 세트를 관리하고/하거나, 태스크간 통신 채널(inter-task communication channels)을 관리하는 태스크 스케쥴링 유닛(a task scheduling unit)을 포함하는
    데이터 처리 시스템.
  5. 제 1 항에 있어서,
    상기 통신 수단은 상기 부착된 제 2 프로세서와 무관하게 상기 부착된 프로세서와 상기 메모리 간의 통신을 제어하기 위해 동일한 기능을 구현하는
    데이터 처리 시스템.
  6. 제 1 항에 있어서,
    상기 통신 수단은 전송된 데이터를 메모리 범위 내부로 맵핑(mapping)하는 기능을 제공하는
    데이터 처리 시스템.
  7. 제 1 항에 있어서,
    상기 제 2 프로세서와 상기 해당 통신 수단 간의 통신은 마스터/슬레이브형 통신이며,
    상기 제 2 프로세서가 마스터로서 기능하는
    데이터 처리 시스템.
  8. 제 1 항에 있어서,
    상기 제 2 프로세서는 소정 범위의 스트림 처리 태스크를 수행하는 기능 특정 전용 프로세서(function-specific dedicated processor)인
    데이터 처리 시스템.
  9. 제 1 항에 있어서,
    상기 통신 지원 층 내의 상기 통신 수단은 상기 계산 층 내의 상기 해당 제 2 프로세서에 대해 적응가능한 제 1 태스크 레벨 인터페이스와, 상기 통신 네트워트 및 상기 메모리에 대해 적응가능한 제 2 시스템 레벨 인터페이스를 포함하되,
    상기 제 1 인터페이스 및 제 2 인터페이스는 동시에 또는 비동시에 활성 상태가 되는
    데이터 처리 시스템.
  10. 제 1 항에 있어서,
    상기 제 2 프로세서들 중 적어도 하나는 프로그램가능하며,
    상기 제 2 프로세서들 중 상기 적어도 하나의 프로세서의 상기 해당 통신 수단의 상기 제 1 태스크 레벨 인터페이스는 적어도 부분적으로 프로그램가능하고,
    상기 통신 수단의 기능 중 일부분은 프로그램가능한
    데이터 처리 시스템.
  11. 제 1 항 또는 제 9 항에 있어서,
    상기 통신 수단은 제어 정보 및/또는 동기화 정보를 상기 데이터 처리 시스템 내의 다른 통신 수단과 직접적으로 교환하기 위한 추가 인터페이스를 포함하는
    데이터 처리 시스템.
  12. 제 11 항에 있어서,
    상기 통신 수단들은 토큰 링 구조(a token ring structure)로 상기 추가 인터페이스를 통해 서로 접속되는
    데이터 처리 시스템.
  13. 제 1 항에 있어서,
    상기 통신 수단은 해당 전송 제 2 프로세서에 통지하지 않고 하나 이상의 수신 제 2 프로세서로의 출력 스트림의 멀티캐스팅(multi-casting)을 수행하는
    데이터 처리 시스템.
  14. 제 1 항에 있어서,
    상기 통신 수단은 상기 해당 제 2 프로세서에 대해 상기 통신 네트워크의 구현 사항을 은폐하는
    데이터 처리 시스템.
  15. 데이터 처리 시스템 내의 통신 수단에 있어서,
    상기 데이터 처리 시스템은,
    데이터 객체 스트림을 처리하는 제 1 프로세서 및 적어도 하나의 제 2 프로세서를 포함하는 계산 층━상기 제 1 프로세서는 데이터 객체 스트림으로부터의 데이터 객체를 상기 제 2 프로세서로 전송함━과,
    통신 네트워크과 메모리를 포함하는 통신 네트워크 층과,
    상기 계산 층과 상기 통신 네트워크 층 간에 배치된 통신 지원 층을 포함하되,
    통신 수단이 상기 제 2 프로세서와 연관되어 상기 통신 네트워크 층 내의 상기 통신 네트워크를 통한 상기 제 2 프로세서와 상기 메모리 간의 통신을 제어하는
    통신 수단.
  16. 제 15 항에 있어서,
    상기 통신 수단은 태스크마다 다수의 입력 및 출력 스트림 및/또는 다수의 스트림을 처리하는
    통신 수단.
  17. 제 15 항에 있어서,
    상기 통신 네트워크 층 내의 상기 메모리로부터의/로의 상기 해당 제 2 프로세서의 판독 동작/기록 동작을 인에이블하는 판독/기록 유닛과,
    상기 해당 제 2 프로세서의 판독 동작/기록 동작을 동기화하고/하거나 메모리 액세스의 프로세서간 동기화를 수행하는 동기화 유닛과,
    상기 부착된 프로세서와 연관된 태스크를 스케쥴링하고, 상기 제 2 프로세서에 의해 처리될 태스크 세트를 관리하고/하거나, 태스크간 통신 채널을 관리하는 태스크 스케쥴링 유닛을 더 포함하는
    통신 수단.
  18. 제 15 항에 있어서,
    상기 제 2 프로세서와 상기 통신 수단 간의 통신은 마스터/슬레이브형 통신이며,
    상기 제 2 프로세서가 마스터로서 기능하는
    통신 수단.
  19. 제 15 항에 있어서,
    상기 계산 층 내의 상기 해당 제 2 프로세서에 대해 적응가능한 제 1 태스크 레벨 인터페이스와,
    상기 통신 네트워트 및 상기 메모리에 대해 적응가능한 제 2 시스템 레벨 인터페이스를 포함하되,
    상기 제 1 인터페이스 및 제 2 인터페이스는 동시에 또는 비동시에 활성 상태가 되는
    통신 수단.
  20. 제 15 항에 있어서,
    상기 제 1 태스크 레벨 인터페이스는 적어도 부분적으로 프로그램가능하고,
    상기 통신 수단의 기능 중 일부분은 프로그램가능한
    통신 수단.
  21. 제 15 항에 있어서,
    제어 정보 및/또는 동기화 정보를 상기 데이터 처리 시스템 내의 다른 통신 수단과 직접적으로 교환하기 위한 추가 인터페이스를 포함하는
    통신 수단.
  22. 제 15 항에 있어서,
    상기 통신 수단은 해당 전송 제 2 프로세서에 통지하지 않고 하나 이상의 수신 제 2 프로세서로의 출력 스트림의 멀티캐스팅을 수행하는
    통신 수단.
  23. 제 15 항에 있어서,
    상기 통신 수단은 상기 해당 제 2 프로세서에 대해 상기 통신 네트워크의 구현 사항을 은폐하는
    통신 수단.
  24. 데이터 객체 스트림을 처리하는 제 1 프로세서 및 적어도 하나의 제 2 프로세서━상기 제 1 프로세서는 데이터 객체 스트림으로부터의 데이터 객체를 상기 제 2 프로세서로 전송함━와, 상기 데이터 객체를 저장 및 검색하는 적어도 하나의 메모리 및 상기 제 2 프로세서 각각을 위한 하나의 통신 수단을 포함하는 데이터 처리 시스템에서 데이터를 처리하는 방법에 있어서,
    상기 제 1 프로세서 및 상기 제 2 프로세서로의 공유된 액세스가 제공되고,
    상기 방법은 상기 제 2 프로세서 각각의 상기 통신 수단이 상기 제 2 프로세서와 상기 메모리 간의 통신을 제어하는 단계를 포함하는
    데이터 처리 방법.
  25. 제 24 항에 있어서,
    상기 통신 수단이 태스크마다 다수의 입력 및 출력 스트림 및/또는 다수의 스트림을 처리하는 단계를 더 포함하는
    데이터 처리 방법.
  26. 제 24 항에 있어서,
    상기 제어 단계는,
    상기 통신 네트워크 층 내의 상기 메모리로부터의/로의 상기 해당 제 2 프로세서의 판독 동작/기록 동작을 인에이블하는 단계와,
    상기 해당 제 2 프로세서의 판독 동작/기록 동작을 동기화하고/하거나 메모리 액세스의 프로세서간 동기화를 수행하는 단계와,
    상기 부착된 프로세서와 연관된 태스크를 스케쥴링하고, 상기 제 2 프로세서에 의해 처리될 태스크 세트를 관리하고/하거나, 태스크간 통신 채널을 관리하는 단계를 포함하는
    데이터 처리 방법.
  27. 제 24 항에 있어서,
    상기 제 2 프로세서와 상기 해당 통신 수단 간의 통신은 마스터/슬레이브형 통신이며,
    상기 제 2 프로세서가 마스터로서 기능하는
    데이터 처리 방법.
  28. 제 24 항에 있어서,
    상기 통신 수단이 해당 전송 제 2 프로세서에 통지하지 않고 하나 이상의 수신 제 2 프로세서로의 출력 스트림의 멀티캐스팅을 수행하는 단계를 더 포함하는
    데이터 처리 방법.
  29. 제 24 항에 있어서,
    상기 통신 수단이 상기 해당 제 2 프로세서에 대해 상기 통신 네트워크의 구현 사항을 은폐하는 단계를 더 포함하는
    데이터 처리 방법.
KR1020047009071A 2001-12-14 2002-12-05 데이터 처리 시스템, 통신 수단 및 데이터 처리 방법 KR100960413B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP01204883.1 2001-12-14
EP01204883 2001-12-14
PCT/IB2002/005168 WO2003052586A2 (en) 2001-12-14 2002-12-05 Data processing system having multiple processors

Publications (2)

Publication Number Publication Date
KR20040065258A true KR20040065258A (ko) 2004-07-21
KR100960413B1 KR100960413B1 (ko) 2010-05-28

Family

ID=8181430

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047009071A KR100960413B1 (ko) 2001-12-14 2002-12-05 데이터 처리 시스템, 통신 수단 및 데이터 처리 방법

Country Status (7)

Country Link
US (1) US7653736B2 (ko)
EP (1) EP1459177A2 (ko)
JP (1) JP2005513610A (ko)
KR (1) KR100960413B1 (ko)
CN (1) CN1295609C (ko)
AU (1) AU2002343180A1 (ko)
WO (1) WO2003052586A2 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7492714B1 (en) * 2003-02-04 2009-02-17 Pmc-Sierra, Inc. Method and apparatus for packet grooming and aggregation
US8130841B2 (en) * 2005-12-29 2012-03-06 Harris Corporation Method and apparatus for compression of a video signal
US20070283131A1 (en) * 2006-01-30 2007-12-06 Ati Technologies Inc. Processing of high priority data elements in systems comprising a host processor and a co-processor
US20090125706A1 (en) * 2007-11-08 2009-05-14 Hoover Russell D Software Pipelining on a Network on Chip
US8261025B2 (en) 2007-11-12 2012-09-04 International Business Machines Corporation Software pipelining on a network on chip
US7873701B2 (en) * 2007-11-27 2011-01-18 International Business Machines Corporation Network on chip with partitions
US8423715B2 (en) 2008-05-01 2013-04-16 International Business Machines Corporation Memory management among levels of cache in a memory hierarchy
JP2009278507A (ja) * 2008-05-16 2009-11-26 Nec Electronics Corp ホスト装置およびスケジューリング方法
US8438578B2 (en) 2008-06-09 2013-05-07 International Business Machines Corporation Network on chip with an I/O accelerator
US9170816B2 (en) * 2009-01-15 2015-10-27 Altair Semiconductor Ltd. Enhancing processing efficiency in large instruction width processors
US9645866B2 (en) * 2010-09-20 2017-05-09 Qualcomm Incorporated Inter-processor communication techniques in a multiple-processor computing platform
US8813018B1 (en) * 2012-10-05 2014-08-19 Altera Corporation Method and apparatus for automatically configuring memory size
US9329671B2 (en) * 2013-01-29 2016-05-03 Nvidia Corporation Power-efficient inter processor communication scheduling
JP6369286B2 (ja) 2014-10-23 2018-08-08 富士通株式会社 プロセス間通信プログラム、解放要求方法、および並列演算装置
US11397677B2 (en) 2020-04-30 2022-07-26 Hewlett Packard Enterprise Development Lp System and method for tracking persistent flushes
CN112015692A (zh) * 2020-07-21 2020-12-01 华东理工大学 一种面向Simulink自动生成多线程代码的核间通信优化方法

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60136442A (ja) * 1983-12-26 1985-07-19 Hitachi Ltd パケツト交換デ−タ伝送システム
JPH0766366B2 (ja) * 1984-12-26 1995-07-19 株式会社日立製作所 並列処理計算機
US4816993A (en) * 1984-12-24 1989-03-28 Hitachi, Ltd. Parallel processing computer including interconnected operation units
US4922408A (en) * 1985-09-27 1990-05-01 Schlumberger Technology Corporation Apparatus for multi-processor communications
US5113522A (en) * 1989-05-17 1992-05-12 International Business Machines Corporation Data processing system with system resource management for itself and for an associated alien processor
DE69230093T2 (de) * 1991-11-19 2000-04-13 Ibm Multiprozessorsystem
US5408629A (en) * 1992-08-13 1995-04-18 Unisys Corporation Apparatus and method for controlling exclusive access to portions of addressable memory in a multiprocessor system
US6304891B1 (en) * 1992-09-30 2001-10-16 Apple Computer, Inc. Execution control for processor tasks
US5568614A (en) * 1994-07-29 1996-10-22 International Business Machines Corporation Data streaming between peer subsystems of a computer system
US5548728A (en) * 1994-11-04 1996-08-20 Canon Information Systems, Inc. System for reducing bus contention using counter of outstanding acknowledgement in sending processor and issuing of acknowledgement signal by receiving processor to indicate available space in shared memory
US5790881A (en) * 1995-02-07 1998-08-04 Sigma Designs, Inc. Computer system including coprocessor devices simulating memory interfaces
JPH08241186A (ja) * 1995-03-07 1996-09-17 Fujitsu Ltd バッファメモリ管理ユニット及びバッファメモリ管理方法
EP0789882B1 (en) * 1995-07-21 2000-10-04 Koninklijke Philips Electronics N.V. Multi-media processor architecture with high performance-density
US5826081A (en) * 1996-05-06 1998-10-20 Sun Microsystems, Inc. Real time thread dispatcher for multiprocessor applications
EP0944981B1 (en) * 1996-10-23 2005-06-29 Infoglobal S.L. Apparatus for integration of several physical media for data communications
FR2767939B1 (fr) * 1997-09-04 2001-11-02 Bull Sa Procede d'allocation de memoire dans un systeme de traitement de l'information multiprocesseur
JP3481136B2 (ja) * 1998-05-29 2003-12-22 シャープ株式会社 文字フォント生成方法およびそのための装置ならびに文字フォント生成プログラムを記録したコンピュータで読取可能な記録媒体
US6438678B1 (en) * 1998-06-15 2002-08-20 Cisco Technology, Inc. Apparatus and method for operating on data in a data communications system
JP3397144B2 (ja) * 1998-09-29 2003-04-14 日本電気株式会社 パケット処理装置とパケット処理方法とパケット交換機
EP1061439A1 (en) * 1999-06-15 2000-12-20 Hewlett-Packard Company Memory and instructions in computer architecture containing processor and coprocessor
IL130796A (en) * 1999-07-05 2003-07-06 Brightcom Technologies Ltd Packet processor
EP1067461B1 (en) * 1999-07-08 2013-04-24 Texas Instruments France Unified memory management system for multi process heterogeneous architecture
US6760337B1 (en) * 1999-08-17 2004-07-06 Conexant Systems, Inc. Integrated circuit that processes communication packets with scheduler circuitry having multiple priority levels
US6484224B1 (en) * 1999-11-29 2002-11-19 Cisco Technology Inc. Multi-interface symmetric multiprocessor
US20030236861A1 (en) * 2000-03-03 2003-12-25 Johnson Scott C. Network content delivery system with peer to peer processing components
US6854053B2 (en) * 2000-10-25 2005-02-08 Signet Scientific Company Method for identifying and communicating with a plurality of slaves in a master-slave system
US20040004966A1 (en) * 2001-04-27 2004-01-08 Foster Michael S. Using virtual identifiers to route transmitted data through a network
AU2002329567A1 (en) * 2001-10-12 2003-04-28 Koninklijke Philips Electronics N.V. Scheme for dynamic process network reconfiguration
US7299487B1 (en) * 2001-12-04 2007-11-20 Unisys Corporation Control program, for a co-processor in a video-on-demand system, which uses transmission control lists to send video data packets with respective subgroups of internet protocol headers
US6938132B1 (en) * 2002-04-04 2005-08-30 Applied Micro Circuits Corporation Memory co-processor for a multi-tasking system
US7801555B2 (en) * 2005-07-22 2010-09-21 Qualcomm Incorporated User operation of a wireless device capable of communicating with multiple networks
US9137179B2 (en) * 2006-07-26 2015-09-15 Hewlett-Packard Development Company, L.P. Memory-mapped buffers for network interface controllers

Also Published As

Publication number Publication date
AU2002343180A1 (en) 2003-06-30
US7653736B2 (en) 2010-01-26
KR100960413B1 (ko) 2010-05-28
WO2003052586A3 (en) 2004-06-03
JP2005513610A (ja) 2005-05-12
CN1295609C (zh) 2007-01-17
EP1459177A2 (en) 2004-09-22
CN1605064A (zh) 2005-04-06
AU2002343180A8 (en) 2003-06-30
US20050021807A1 (en) 2005-01-27
WO2003052586A2 (en) 2003-06-26

Similar Documents

Publication Publication Date Title
KR100960413B1 (ko) 데이터 처리 시스템, 통신 수단 및 데이터 처리 방법
US5055999A (en) Multiprocessor digital data processing system
US9323672B2 (en) Scatter-gather intelligent memory architecture for unstructured streaming data on multiprocessor systems
US11151033B1 (en) Cache coherency in multiprocessor system
US5613136A (en) Locality manager having memory and independent code, bus interface logic, and synchronization components for a processing element for intercommunication in a latency tolerant multiple processor
JP4322119B2 (ja) データ処理システム
US5864738A (en) Massively parallel processing system using two data paths: one connecting router circuit to the interconnect network and the other connecting router circuit to I/O controller
US6029212A (en) Method of handling arbitrary size message queues in which a message is written into an aligned block of external registers within a plurality of external registers
US5276828A (en) Methods of maintaining cache coherence and processor synchronization in a multiprocessor system using send and receive instructions
US20050015637A1 (en) Data processing system
JPH04308956A (ja) 受信バッファ
US7152232B2 (en) Hardware message buffer for supporting inter-processor communication
US6904465B2 (en) Low latency inter-reference ordering in a multiple processor system employing a multiple-level inter-node switch
US5875468A (en) Method to pipeline write misses in shared cache multiprocessor systems
US20050015372A1 (en) Method for data processing in a multi-processor data processing system and a corresponding data processing system
Ostheimer Parallel Functional Computation on STAR: DUST—
Nikhil Digital Equipment Corp.
Al-Shaer Distributed Memory Management: Design Issues and Future Trends
Hiraki et al. Complementary hybrid architecture with two different processing elements with different grain size
Muhugusa et al. Access consistency memory model for messengers
Davis Jr et al. Exploiting optical waveguides in general-purpose parallel computing

Legal Events

Date Code Title Description
N231 Notification of change of applicant
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: 20130429

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140430

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160330

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170330

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20190327

Year of fee payment: 10