KR101076869B1 - 코어스 그레인 재구성 어레이에서의 메모리 중심 통신 장치 - Google Patents

코어스 그레인 재구성 어레이에서의 메모리 중심 통신 장치 Download PDF

Info

Publication number
KR101076869B1
KR101076869B1 KR1020100023414A KR20100023414A KR101076869B1 KR 101076869 B1 KR101076869 B1 KR 101076869B1 KR 1020100023414 A KR1020100023414 A KR 1020100023414A KR 20100023414 A KR20100023414 A KR 20100023414A KR 101076869 B1 KR101076869 B1 KR 101076869B1
Authority
KR
South Korea
Prior art keywords
memory
processor
element array
processing element
address
Prior art date
Application number
KR1020100023414A
Other languages
English (en)
Other versions
KR20110104330A (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 to KR1020100023414A priority Critical patent/KR101076869B1/ko
Priority to PCT/KR2010/003495 priority patent/WO2011115327A1/ko
Priority to US13/635,620 priority patent/US8949550B2/en
Publication of KR20110104330A publication Critical patent/KR20110104330A/ko
Application granted granted Critical
Publication of KR101076869B1 publication Critical patent/KR101076869B1/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/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7871Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)

Abstract

본 발명은 코어스 그레인 재구성 어레이에 관한 것으로, 하나 이상의 프로세서; 복수 개의 프로세싱 엘리먼트들, 및 프로세싱 엘리먼트들에 의해 실행되는 명령들을 저장하는 구성 캐쉬를 포함하는 프로세싱 엘리먼트 어레이; 및 프로세서 및 프로세싱 엘리먼트 어레이와 각각 일대일 맵핑되는 복수 개의 메모리 유닛들을 포함하고, 일대일 맵핑을 스위칭하여 프로세서 및 프로세싱 엘리먼트 어레이 간의 데이터 통신을 수행하는 중심 메모리를 포함함으로써, 프로세서 또는 메인 메모리 측에서 프레임 버퍼로부터/프레임 버퍼로 데이터를 판독/기록할 때, 시스템 버스의 제한된 대역폭 및 레이턴시로 인해 발생할 수 있는 심각한 병목현상을 개선하는 효과가 있다.

Description

코어스 그레인 재구성 어레이에서의 메모리 중심 통신 장치{Memory centric communication apparatus in coarse grained reconfigurable array}
본 발명은 코어스 그레인 재구성 어레이(CGRA: Coarse Grained Reconfigurable Array)에 관한 것으로, 더욱 상세하게는 프로세서 또는 메인 메모리 측에서 프레임 버퍼로부터/프레임 버퍼로 데이터를 판독/기록할 때, 시스템 버스의 제한된 대역폭 및 레이턴시로 인해 발생할 수 있는 심각한 병목현상을 개선하기 위한 코어스 그레인 재구성 어레이에서의 메모리 중심 통신 장치에 관한 것이다.
본 발명은 교육과학기술부 및 서울대학교 산학협력단의 국가지정연구실사업[과제고유번호: R0A-2008-000-20126-0, 과제명: 재구성형 MP-SoC 설계기술]과, 서울특별시 및 광운대학교 산학협력단의 서울시 산학연 협력사업[과제고유번호: 10560, 과제명: 나노SoC 산업육성을 위한 산학협력 혁신 클러스터]의 일환으로 수행한 연구로부터 도출된 것이다.
최근, 임베디드 시스템의 많은 기능 블록들은 주로 유연성(flexibility)을 위한 소프트웨어로 구현되고 있다. 그러나, 소프트웨어와 함께, 고정된 하드웨어 IP들 또는 ASIC들이 여전히 전체 시스템의 유연성을 저해하면서도 성능성(performance)을 위해서 사용된다.
CGRA(Coarse-grained reconfigurable array) 구조는 유연성 및 성능성의 이슈 모두를 다루기 위해 제안되었다. 전형적인 CGRA는 병렬 실행을 통해 성능성을 끌어올리기 위해서 프로세싱 엘리먼트들(PEs: Processing Elements)의 재구성 어레이를 가지고 있다. 각 프로세싱 엘리먼트는 산술 연산이나 논리 연산과 같은 간단한 연산들을 실행하기 위해서 동적으로(dynamically) 구성될 수 있는 작은 크기의 실행 유닛이다. 또한, 프로세싱 엘리먼트들 간의 상호 연결도 효율적인 통신을 위해서 동적으로 구성될 수 있다. 그러한 동적인 구성 능력이 CGRA의 유연성을 제공한다.
본 발명이 해결하고자 하는 기술적 과제는, 프로세서나 메인 메모리로부터 프레임 버퍼로 데이터가 기록되거나, 또는 프레임 버퍼로부터 프로세서나 메인 메모리로 데이터가 판독될 때, 시스템 버스의 제한된 대역폭 및 레이턴시로 인하여 발생할 수 있는 병목현상을 개선하기 위한 코어스 그레인 재구성 어레이에서의 메모리 중심 통신 장치를 제공하는 것이다.
또한, 본 발명이 해결하고자 하는 기술적 과제는, 실행되는 애플리케이션이 순환적 데이터 의존성(cyclic data dependency)을 가질 때, 시스템 버스의 제한된 대역폭으로 인하여 야기되는 전체 시스템의 심각한 성능 저하를 막고, 통신 오버헤드를 줄임으로써 전체 시스템의 성능을 향상시키기 위한 코어스 그레인 재구성 어레이에서의 메모리 중심 통신 장치를 제공하는 것이다.
상술한 기술적 과제를 해결하기 위하여, 본 발명의 일 실시예에 따른 코어스 그레인 재구성 어레이에서의 메모리 중심 통신 장치는, 하나 이상의 프로세서; 복수 개의 프로세싱 엘리먼트들, 및 상기 프로세싱 엘리먼트들에 의해 실행되는 명령들을 저장하는 구성 캐쉬를 포함하는 프로세싱 엘리먼트 어레이; 및 상기 프로세서 및 상기 프로세싱 엘리먼트 어레이와 각각 일대일 맵핑되는 복수 개의 메모리 유닛들을 포함하고, 상기 일대일 맵핑을 스위칭하여 상기 프로세서 및 상기 프로세싱 엘리먼트 어레이 간의 데이터 통신을 수행하는 중심 메모리를 포함하는 것을 특징으로 한다.
상기 장치는, 상기 중심 메모리 및 외부 디바이스 간의 인터페이스를 위한 네트워크/버스 인터페이스를 더 포함할 수 있다.
상기 중심 메모리는, 각각 단일 포트를 가지는 복수 개의 메모리 유닛들, 및 상기 메모리 유닛들의 각각과 상기 프로세서, 상기 프로세싱 엘리먼트 어레이 및 상기 네트워크/버스 인터페이스 간의 일대일 맵핑을 스위칭하기 위한 크로스바 스위치를 포함하는 배타 영역; 및 멀티 포트를 가지는 레지스터로 구현되고, 상기 메모리 유닛들의 각각과 상기 프로세서, 상기 프로세싱 엘리먼트 어레이 및 상기 네트워크/버스 인터페이스 간의 일대일 맵핑 정보를 저장하는 공유 영역을 포함할 수 있다.
상기 프로세서, 상기 프로세싱 엘리먼트들, 또는 상기 네트워크/버스 인터페이스는 상호 간의 데이터 통신을 수행하기 위하여 상기 일대일 맵핑 정보를 변경하고, 상기 크로스바 스위치는, 상기 변경된 일대일 맵핑 정보에 따라서 상기 메모리 유닛들의 각각과 상기 프로세서, 상기 프로세싱 엘리먼트 어레이 및 상기 네트워크/버스 인터페이스 간의 일대일 맵핑을 스위칭할 수 있다.
상기 메모리 유닛들의 각각은 서로 상이한 물리 어드레스 공간을 사용하는 반면에 서로 동일한 논리 어드레스 공간을 공유할 수 있다.
상기 공유 영역은, 상기 프로세서, 상기 프로세싱 엘리먼트 어레이 및 상기 네트워크/버스 인터페이스 간에 전송되는 제어 신호, 또는 사용자에 의해 미리 설정된 크기 이하의 데이터를 저장할 수 있다.
상기 중심 메모리는 스크래치 패드 메모리일 수 있다.
상기 프로세싱 엘리먼트 어레이는, 상기 프로세싱 엘리먼트들에 의해 액세스되는 데이터로의 기준 어드레스들의 테이블을 저장하는 어드레스 생성 유닛을 더 포함할 수 있다.
상기 어드레스 생성 유닛은, 상기 프로세싱 엘리먼트들 중 하나로부터 판독 또는 기록 요청, 인덱스 아규먼트 및 오프셋 아규먼트가 수신되면, 상기 인덱스 아규먼트를 사용하여 상기 테이블로부터 상기 기준 어드레스를 발견하고, 상기 오프셋 아규먼트에 상기 기준 어드레스를 부가하여 완전한 어드레스를 생성하며, 상기 판독 또는 기록 요청, 및 상기 완전한 어드레스를 상기 중심 메모리로 송신할 수 있다.
상기 프로세서는 캐쉬를 더 포함하고, 상기 프로세서에 의해서 메모리 액세스 요청이 발행될 때, 상기 프로세서는 요청되는 어드레스를 상기 중심 메모리의 어드레스 범위와 비교하여 상기 중심 메모리에 액세스할지 또는 상기 캐쉬에 액세스할지를 결정할 수 있다.
상기 메모리 유닛들의 각각은 복수 개의 블록들로 분할되고, 상기 블록들의 각각은 상기 프로세싱 엘리먼트들의 열 또는 행에 대응하며, 상기 블록들의 각각의 대역폭은 상기 프로세싱 엘리먼트들의 데이터 경로의 대역폭과 동일할 수 있다.
본 발명의 일 실시예에 따르면, 프로세서, 프로세싱 엘리먼트 어레이, 및 네트워크/버스 인터페이스 사이에 중심 메모리를 통한 직접 통신 채널을 확립함으로써, 프로세서나 메인 메모리로부터 프레임 버퍼로 데이터가 기록되거나, 또는 프레임 버퍼로부터 프로세서나 메인 메모리로 데이터가 판독될 때, 시스템 버스의 제한된 대역폭 및 레이턴시로 인하여 발생할 수 있는 병목현상을 개선할 수 있는 효과가 있다.
또한, 본 발명의 일 실시예에 따르면, 실행되는 애플리케이션이 순환적 데이터 의존성을 가질 때, 시스템 버스의 제한된 대역폭으로 인하여 야기되는 전체 시스템의 심각한 성능 저하를 막고, 통신 오버헤드를 줄임으로써 전체 시스템의 성능을 향상시킬 수 있는 효과가 있다.
또한, 본 발명의 일 실시예에 따르면, 중심 메모리로서 멀티-포트 메모리를 사용하지 않고 각각 단일 포트를 가지는 다수의 메모리 유닛들을 포함하는 스크래치 패드 메모리를 사용함으로써, 전체 시스템의 면적 비용을 감소시키는 효과가 있다.
도 1은 CGRA의 일반적인 템플릿을 도시한 도면이다.
도 2는 도 1에서 실행되는 애플리케이션이 순환적 데이터 의존성을 가질 때 야기될 수 있는 시스템 성능 저하를 설명하기 위한 도면이다.
도 3은 본 발명의 일 실시예에 따른 코어스 그레인 재구성 어레이에서의 메모리 중심 통신 장치를 포함한 전체 시스템을 도시한 도면이다.
도 4는 도 3에서 프로세서에 대한 메모리 계층을 개념적으로 도시한 도면이다.
도 5는 본 발명의 일 실시예에 따른 중심 메모리의 개념을 설명하기 위한 도면이다.
도 6은 본 발명의 일 실시예에 따른 중심 메모리의 실제 구현의 예시를 도시한 도면이다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 상세하게 설명한다.
도 1은 CGRA의 일반적인 템플릿(100)을 도시한 도면이다.
도 1을 참조하면, 병렬 계산을 위한 프로세싱 엘리먼트들(125)의 2차원 재구성 어레이(120)가 도시되어 있다. 프로세싱 엘리먼트들(125)은 크기를 작게 유지하기 위하여 어드레스 생성 유닛(도시되지 않음)을 가지지 않는다. 따라서 프로세싱 엘리먼트들(125)은 어레이(120)의 각 열에 대해 동작하고 있는 데이터 버스들의 집합을 통해서 프레임 버퍼(140)라고 불리우는 메모리로부터/메모리로 입력/출력 데이터를 수동으로 수신/송신한다.
도 1에 도시된 바와 같이, 전형적인 CGRA는 두 개의 저장 유닛들을 가진다. 하나는 구성(configuration) 캐쉬(130)이고, 나머지는 프레임 버퍼(140)이다. 구성 캐쉬(130)는 프로세싱 엘리먼트들(125)에 의해 실행되는 명령들(구성 코드)을 제공한다. 명령들은 프로세싱 엘리먼트들(125)에 의해 실행되는 연산들 및 프로세싱 엘리먼트들(125) 간의 상호 연결에 대한 정보를 포함한다. 명령들은 또한 프레임 버퍼(140)의 데이터가 데이터 버스에 로딩되어야 하는 시간 및 버스에 있는 데이터가 프레임 버퍼(140)로 저장되어야 하는 시간에 대한 정보를 포함하고 있고, 그에 따라 프로세싱 엘리먼트들(125)은 별도의 어드레스 생성 유닛(도시되지 않음)이 없이도 데이터를 수신하고 송신할 수 있다.
상술한 바와 같이, 구성 캐쉬(130)는 어레이(120)의 프로세싱 엘리먼트들(125)에 의해서 실행되는 명령들을 포함한다. 이러한 명령들은 단지 시스템 초기화 단계에서만 저장될 수 있기 때문에, 전체 시스템 성능에 영향을 미치지 않는다. 그러나, 만일 구성 캐쉬(130)가 시스템에서 요구되는 모든 명령들을 포함할 만큼 충분히 크지 않다면, 명령들을 외부 메모리(155)로부터 가져와야 하고 이는 버스 트래픽 및 성능성에 오버헤드를 초래한다. 그러나, 그러한 오버헤드는 프리페칭 및 스케줄링과 같은 다양한 기법들에 의해 최소화될 수 있다.
프레임 버퍼(140)는 어레이(120)의 프로세싱 엘리먼트들(125)로 입력 데이터를 제공하고 프로세싱 엘리먼트들(125)로부터의 출력 데이터를 저장하기 위해 사용된다. 따라서, 대부분의 멀티미디어 애플리케이션들에 대해서, 거대한 양의 데이터가 프레임 버퍼(140)로 들어오거나 나가게 된다. 이는 시스템 버스(150) 및 프로세서(105) 또는 DMA 유닛(도시되지 않음)과 같은 컨트롤러들에 심각한 부담을 초래할 수 있다.
통상적으로, CGRA에서, 프레임 버퍼(140) 및 프로세싱 엘리먼트 어레이(120)는 서로 밀접하게 연결되어 있기 때문에, 그들 간의 통신은 문제되지 않는다. 예를 들어, 도 1의 프로세싱 엘리먼트 어레이(120)의 각 열은 프레임 버퍼(140)에 연결되는 자신의 데이터 버스 라인들(예를 들어, 피연산자들을 판독하기 위한 두 개의 라인 및 결과를 기록하기 위한 하나의 라인)을 가지며, 그로 인해 프로세싱 엘리먼트 어레이(120)의 모든 열들은 프레임 버퍼(140)에 병렬로 액세스할 수 있다. 반면에, 프로세싱 엘리먼트 어레이(120)의 외부에서, 프로세서(105) 또는 메인 메모리(155)의 측에서 프레임 버퍼(140)로부터/프레임 버퍼(140)로 데이터를 판독/기록하는 것은 시스템 버스(150)의 제한된 대역폭 및 레이턴시로 인하여 전체 시스템 성능에 심각한 병목현상(170)을 일으킨다. 시뮬레이션 결과에 따르면, 통신 오버헤드는 애플리케이션에 따라서 프로세싱 엘리먼트 어레이(120)의 계산 시간보다 5배 정도 더 길 수 있다.
도 1의 CGRA에서 프로세싱 엘리먼트 어레이의 실행은 3 단계로 구분된다: 입력 데이터 로딩, 계산, 및 출력 데이터 전송. 입력 데이터 로딩 단계에서, 입력 데이터는 프레임 버퍼(140)에 전송된다. 입력 데이터는 작업 실행의 결과로써 프로세서(105)에 의해서 직접 기록되거나 혹은 메인 메모리(155)로부터 전송될 수 있다. 프로세싱 엘리먼트 어레이(120)는 구성 캐쉬(130)로부터 명령들을 가져오고 또한 프레임 버퍼(140)로부터 입력 데이터를 가져옴으로써 계산을 시작한다. 다음으로 프로세싱 엘리먼트 어레이(120)는 출력 데이터를 생성하여 프레임 버퍼(140)에 다시 기록하여 계산 단계를 완료한다. 출력 데이터 전송 단계에서, 출력 데이터는 프로세서(105) 또는 시스템의 다른 마스터들(예를 들어, 160)에 의해 처리되거나 혹은 이후의 사용을 위해 메인 메모리(155)에 복사될 수 있다.
입력/출력 데이터 로딩/전송 단계는 다음과 같은 오버헤드를 초래할 수 있다. 프레임 버퍼(140)는 프로세싱 엘리먼트 어레이(120)의 모든 열들이 동시에 프레임 버퍼(140)로부터/프레임 버퍼(140)로 입력/출력 데이터를 판독/기록할 수 있도록 설계되어 더 높은 성능의 계산을 위한 큰 대역폭을 실현한다. 그러나, 시스템 버스(150) 측에서, 프레임 버퍼(140)로/로부터 데이터를 판독/기록하는 것은 대역폭이 제한되는 시스템 버스(150)에 훨씬 더 많은 트래픽을 야기하고, 이는 심각한 병목현상(170)을 일으킨다. 이것은 프로세서(105) 및 프로세싱 엘리먼트 어레이(120)가 그들 자신의 데이터 집합들에 대해서 작업하고 있는 동안에 외부 메모리(155)로/로부터 데이터 전송이 일어나는 경우에 더욱 심각하다.
더블 버퍼링 방법을 사용함으로써 통신 오버헤드를 감추는 것은 몇몇 경우에는 유용하다. 그러나, 더블 버퍼링 방법은 애플리케이션이 순환적 데이터 의존성(cyclic data dependency)을 가질 때는 잘 동작하지 않는다.
순환적 데이터 의존성이 없는 경우로서, 예를 들어, 작업 A는 프로세서에 맵핑되고 작업 B는 프로세싱 엘리먼트 어레이에 맵핑되며, 작업 B는 작업 A에 대해 데이터 의존적이지만 작업 A는 작업 B에 대해 데이터 비의존적이라고 가정해보자. 작업 A의 결과는 프로세서 캐쉬(110) 또는 외부 메모리(155)로부터 시스템 버스(150)를 통해서 프레임 버퍼(140)로 복사되어야 하고, 이것에는 많은 사이클이 걸린다. 그러나, 통신 오버헤드는 더블 버퍼링에 의해서 감추어질 수 있기 때문에, 더블 버퍼링은 파이프라인 시스템의 처리량을 향상시킨다.
그러나, 도 2에 도시된 바와 같이, 순환적 데이터 의존성이 있는 경우로서, 예를 들어, 작업 A(205,215)는 프로세서에 맵핑되고 작업 B(210,220)는 프로세싱 엘리먼트 어레이에 맵핑되며, 작업 B(210,220)는 작업 A(205,215)에 대해 데이터 의존적이고 작업 A(205,215)는 작업 B(210,220)에 대해 데이터 의존적이라고 가정해보자. 이 경우에는, 더블 버퍼링으로서 통신 오버헤드를 감추는 것은 불가능하다. 이러한 종류의 애플리케이션에 대해서, 시스템 버스(150)의 제한된 대역폭은 전체 시스템의 심각한 성능 저하를 야기할 수 있다. 따라서 전체 시스템 성능을 향상시키기 위해서 통신 오버헤드(도 2에서 화살표들의 길이)를 줄이는 것이 중요하다.
그러한 제한을 극복하기 위하여, 본 발명은, 데이터가 시스템 버스(150)를 통해서 지나가지 않고 스크래치 패드 메모리(SPM: Scratch Pad Memory)를 통해서 전송되는 메모리 중심 통신 장치를 제공한다. 그것은 특히 통신 오버헤드가 순환적 데이터 의존성(cyclic data dependency)으로 인해 숨겨질 수 없을 때 시스템 성능을 현저하게 향상시킨다. 이를 위해서, 본 발명은, 단순한 크로스바 스위치를 통해서 프로세서 또는 프로세싱 엘리먼트 어레이와 같은 마스터들과 밀접하게 연결되는 중심 메모리를 포함한다. 또한, 본 발명은, 면적 비용을 크게 증가시키지 않기 위해서, 멀티-포트 메모리를 사용하지 않고, 스크래치 패드 메모리를 각각 단일 포트를 가지는 다수의 메모리 유닛들로 분할하여 사용할 수 있다. 또한, 마스터들 및 메모리 유닛들이 각각 일대일 맵핑을 가지도록 함으로써, 마스터들은 자신의 메모리 유닛들에 동시에 액세스할 수 있고, 그 결과 훨씬 더 높은 대역폭을 가질 수 있다.
일대일 맵핑은 마스터들 간의 데이터 전송이 필요할 때마다 스위칭될 수 있다. 그것은 크로스바 스위칭이 요청-승인(request-grant) 시그널링을 포함하는 실행시간 조정을 위한 어떤 핸드쉐이크 프로토콜도 없이 프로세서에 의해서 정적으로 결정되고 제어된다는 점에서 멀티-레이어 버스들과 구별된다. 일대일 맵핑은 마스터들이 자신의 데이터에 대해 작업하고 있는 동안에는 변하지 않는다. 따라서, 각 통신 채널은 마스터 및 그것의 전용 메모리 간의 포인트 대 포인트 연결에 가깝다. 한편, 마스터들 간에 자주 교환되어야 하는 작은 크기의 데이터 및/또는 제어 정보에 대해서는, 커다란 크기의 단일-포트 메모리를 보완하기 위해서 여분의 작은 크기의 메모리가 부가될 수 있다.
도 3은 본 발명의 일 실시예에 따른 코어스 그레인 재구성 어레이에서의 메모리 중심 통신 장치를 포함한 전체 시스템을 도시한 도면이다.
도 3을 참조하면, 코어스 그레인 재구성 어레이에서의 메모리 중심 통신 장치(300)는 프로세서(305), 재구성 프로세싱 엘리먼트 어레이(320), 중심 메모리(335), 및 네트워크/버스 인터페이스(345)를 포함한다.
프로세서(305)는 코어스 그레인 재구성 어레이를 포함한 전체 시스템을 전체적으로 제어한다. 프로세서(305)는 캐쉬(310)를 포함할 수 있고, 중심 메모리(335) 및 네트워크/버스 인터페이스(345)와 연결된다.
재구성 프로세싱 엘리먼트 어레이(320)는 복수 개의 프로세싱 엘리먼트들(325), 구성(configuration) 캐쉬(330) 및 어드레스 생성 유닛(340)을 포함한다.
재구성 프로세싱 엘리먼트 어레이(320)는 프레임 버퍼 대신에 어드레스 생성 유닛(340)을 포함한다. 만일 프로세싱 엘리먼트들(325) 중 하나가 판독/기록 연산을 실행하면, 판독/기록 요청 및 두 개의 아규먼트들(인덱스 아규먼트 및 오프셋 아규먼트)가 어드레스 생성 유닛(340)으로 송신된다. 그리고나서 어드레스 생성 유닛(340)은 중심 메모리(335)가 적절한 판독/기록 연산을 실행할 수 있도록 완전한(full) 어드레스 및 판독/기록 요청 신호를 생성한다.
데이터를 판독/기록하기 위하여, 프로세싱 엘리먼트들(325)은 어드레스 생성 유닛(340)에 판독/기록 요청을 해야 한다. 프로세싱 엘리먼트들(325)은 비트폭 제한을 가지고 있기 때문에, 완전한 어드레스 공간을 커버하지 못할 수도 있다. 따라서, 프로세싱 엘리먼트들(325)은 데이터 전송을 위하여 직접 중심 메모리(335)로 완전한 어드레스를 송신하는 것 대신에, 어드레스 생성 유닛(340)으로 두 개의 아규먼트들(데이터 어드레스 테이블에서의 인덱스 아규먼트, 및 오프셋 아규먼트)을 송신하고, 어드레스 생성 유닛(340)은 실제 메모리를 액세스할 수 있다.
어드레스 생성 유닛(340)은 프로세싱 엘리먼트들(325)에 의해 액세스되는 데이터로의 기준 어드레스들의 테이블을 포함할 수 있다. 테이블의 슬롯들은 시스템 초기화 동안에 또는 시스템이 실행되는 동안에 프로세서(305)에 의해서 채워질 수 있다.
중심 메모리(335)로의 완전한 어드레스를 생성하기 위한 메카니즘은 다음과 같다. 먼저, 어드레스 생성 유닛(340)은 프로세싱 엘리먼트 어레이(320)의 각 열에 대한 제어 버스로부터 메모리 판독/기록 요청을 조사한다. 만일, 어드레스 생성 유닛(340)이 그러한 요청을 수신하면, 프로세싱 엘리먼트들(325)로부터 데이터 버스를 통해서 전달된 인덱스 아규먼트를 사용하여 테이블에서 기준 어드레스를 발견한다. 그리고나서 어드레스 생성 유닛(340)은 프로세싱 엘리먼트들(325)로부터 수신되는 오프셋 아규먼트에 기준 어드레스를 부가하여, 판독 또는 기록 연산을 위한 중심 메모리(335)로의 완전한 어드레스를 생성한다.
네트워크/버스 인터페이스(345)는 메인 메모리(335) 또는 주변 장치들(360)과 같은 외부 디바이스 및 중심 메모리(335) 간의 상호 연결을 위한 인터페이스를 제공한다. 메인 메모리(335) 및 주변 장치들(360)은 중심 메모리(335)로부터 네트워크/버스 인터페이스(345)를 통해서 액세스될 수 있다.
도 4는 도 3에서 프로세서에 대한 메모리 계층(hierarchy)을 개념적으로 도시한 도면이다.
도 4를 참조하면, 메모리 액세스 요청이 프로세서 코어(410)에 의해 발행될 때, 프로세서 코어(410)는 중심 메모리(435)에 액세스할지 혹은 캐쉬(425)에 액세스할지를 결정하기 위하여, 요청되는 어드레스를 중심 메모리(435)의 어드레스 범위(415)와 비교한다(420). 중심 메모리(435)는 프로세서(405)의 스크래치 패드 메모리로써 동작하고, 프로세서(405)로부터 중심 메모리(435)로의 액세스는 단일 사이클에서 수행된다.
반면에, 프로세싱 엘리먼트 어레이(430)는 중심 메모리(435)를 프레임 버퍼로써 사용한다. 따라서, 중심 메모리(435)는 프로세서(405)에 대해서는 스크래치 패드 메모리로써 동작하고, 동시에 프로세싱 엘리먼트 어레이(430)에 대해서는 프레임 버퍼로써 동작한다. 메인 메모리(450) 및 주변 장치들(455)은 네트워크/버스 인터페이스(440) 및 시스템 버스(445)를 통해서 중심 메모리(435)로부터 액세스될 수 있다.
도 3으로 돌아오면, 중심 메모리(335)는 프로세서(305), 프로세싱 엘리먼트 어레이(320) 및 네트워크/버스 인터페이스(345) 간에 직접 통신 채널을 확립하기 위해 사용되는 메모리이다. 중심 메모리(335)는 프로세서(305), 프로세싱 엘리먼트 어레이(320) 및 네트워크/버스 인터페이스(345)와 각각 일대일 맵핑되는 복수 개의 메모리 유닛들(도시되지 않음)을 포함할 수 있다. 일대일 맵핑이 스위칭될 때, 프로세서(305), 프로세싱 엘리먼트 어레이(320) 및 네트워크/버스 인터페이스(345) 간의 데이터 통신이 수행된다.
도 5는 본 발명의 일 실시예에 따른 중심 메모리의 개념을 설명하기 위한 도면이다.
도 5를 참조하면, 데이터 통신은 시스템 버스 대신에 중심 메모리(500)를 통해서 일어난다. 중심 메모리(500)는 공유 영역(515), 일대일 맵핑 회로(520)(예를 들어, 크로스바 스위치), 및 배타 영역(530)을 포함하고, 배타 영역(530)은 각각 단일 포트를 가지는 다수(예를 들어, K개: K는 정수)의 메모리 유닛들(535)로 분할된다. 도 5에 나타난 바와 같이, 복수 개의 마스터들(프로세서, 프로세싱 엘리먼트 어레이 및 네트워크/버스 인터페이스를 포함하는)(505) 및 메모리 유닛들(535)은 각각 일대일 맵핑을 가지고, 마스터들(505)의 각각은 한번에 단지 하나의 메모리 유닛에만 액세스한다. 마스터들(505) 간의 통신은 데이터를 복사함이 없이 단지 일대일 맵핑 정보만을 변경함으로써 수행될 수 있다.
공유 영역(515)은 마스터들(505) 및 메모리 유닛들(535) 간의 일대일 맵핑 정보(525)를 포함한 중심 메모리(500)를 위한 구성 정보를 저장한다. 또한, 마스터들(505) 간에 전송되는 (주로 동기화를 위한) 제어 신호들 또는 본 발명에 따른 장치의 사용자에 의해 미리 설정된 소정 크기 이하의 데이터(즉, 작은 크기의 데이터)도 공유 영역(515)에 저장될 수 있다.
배타 영역(530)은 하나의 마스터로부터 또 다른 마스터로 대량 전송되는 데이터를 주로 저장할 수 있다. 배타 영역(530)은 중심 메모리(500)에 연결되는 마스터들(505)의 개수에 따라 K개의 메모리 유닛들(535)로 분할된다. 도 5에는 일대일 맵핑 회로(520) 및 배타 영역(530)이 별도의 컴포넌트로 도시되어 있지만, 배타 영역(530)은 일대일 맵핑 회로(520)를 포함할 수도 있다.
K개의 메모리 유닛들(535)은 동일한 논리 어드레싱 공간을 공유하지만, 상이한 물리적 메모리 블록들을 사용한다. 마스터들(505) 및 메모리 유닛들(535) 간의 데이터 전송에 어떤 시스템 버스도 포함되지 않기 때문에, 이러한 중심 메모리(500) 구조는, 버스 경합없이 입력 데이터를 가져오고 출력 데이터를 저장하기 위하여, 마스터들(505)로 하여금 동시에 배타 영역(530)을 액세스할 수 있도록 허용한다.
도 6은 본 발명의 일 실시예에 따른 중심 메모리의 실제 구현의 예시를 도시한 도면이다.
도 6을 참조하면, 본 발명의 일 실시예에 따른 중심 메모리(500)는 배타 영역(615) 및 공유 영역(630)을 포함한다.
배타 영역(615)은 각각 단일 포트를 가지는 복수 개의 메모리 유닛들(620)을 포함하고, 또한, 메모리 유닛들(620)의 각각과 프로세싱 엘리먼트 어레이(605), 프로세서 및 네트워크/버스 인터페이스를 포함하는 마스터들(610) 간의 일대일 맵핑을 스위칭하기 위한 크로스바 스위치(cross-bar switch)(625)를 포함한다. 일대일 맵핑 구성의 스위칭은 예를 들어 프로세서에 의해 제어될 수 있다.
배타 영역(615)은 면적 및 전력 오버헤드를 증가시키지 않기 위하여 하나의 큰 멀티 포트 메모리 대신에 다수의 단일 포트 메모리들을 사용하는 것이 바람직하다. 두 개의 단일 포트 메모리(크로스바 스위치를 포함한)로 구현되는 중심 메모리와 하나의 듀얼 포트 메모리로 구현되는 중심 메모리 간의 면적 및 전력 소모를 비교해 본 실험 결과에 따르면, 두 개의 단일 포트 메모리들을 가지는 경우의 전체 면적은 듀얼 포트 메모리를 가지는 경우의 전체 면적보다 평균적으로 22.57% 더 작고, 동적 전력 및 누수 전력은 각각 43.09% 및 22.15% 감소됨을 발견하였다.
공유 영역(630)은 멀티 포트를 가지는 레지스터로 구현될 수 있고, 메모리 유닛들(620)의 각각과 프로세싱 엘리먼트 어레이(605), 프로세서 및 네트워크/버스 인터페이스를 포함하는 마스터들(610) 간의 일대일 맵핑 정보를 저장한다. 멀티 포트 레지스터 파일의 비용 및 전력 소모는 크기에 따라 급속히 증가하기 때문에, 공유 영역(630)의 크기는 최소화되는 것이 바람직하다.
또 다른 실시예로, 다른 마스터들과는 달리, 프로세싱 엘리먼트 어레이(605)는 한 사이클 내에서 동시에 다수의 데이터를 가져올 필요가 있다. 따라서, 각 메모리 유닛들(620)은 다시 복수 개의 블록들(예를 들어, N개: N은 정수)로 분할될 수 있고, 복수 개의 블록들은 프로세싱 엘리먼트 어레이(605)의 열에 부착될 수 있으며, 각 블록의 대역폭은 프로세싱 엘리먼트 어레이(605)의 데이터 경로의 대역폭과 동일할 수 있다.
성능성의 관점에서, 본 발명의 일 실시예에 따른 통신 장치에 따르면, 맵핑 구성의 변화로 인한 약간의 성능저하가 예상될 수도 있다. 그러나, 맵핑 구성의 변화는 한 사이클 내에서 수행될 수 있고, 대량의 데이터 통신에 대해서는 문제되지 않는다. 워드-바이-워드 또는 작은 크기의 데이터 통신을 위해서는 여전히 공유 영역에 의존할 수도 있다. 만일, 우리가 하나의 큰 멀티 포트 메모리를 사용한다고 하더라도, 기준 어드레스(base address)를 다음 데이터로 변경하는 오버헤드가 있을 것이고, 이러한 오버헤드는 단지 맵핑을 스위칭하는 것보다 더 많은 사이클을 요구한다. 또한, 멀티 포트 메모리가 다수의 판독 포트를 지원한다고 할지라도, 멀티 포트 메모리는 단지 하나의 기록 포트만을 지원하고 2개 이상의 마스터들이 동시에 기록할 수 없을 것이기 때문에, 복수 개의 멀티 포트를 사용하는 구조에 대한 어떠한 성능 이점도 상쇄된다.
본 발명의 일 실시예에 따르면, 배타 영역들을 물리적으로 분할하고 크로스바 스위치를 사용함으로써, 마스터는 한번에 단지 하나의 메모리 유닛만을 액세스할 수 있다. 따라서, 메모리 충돌 또는 경쟁 조건(race condition)을 피하고, 또한 다른 마스터의 메모리를 변경시키는(corrupting) 위험을 제거하는 것이 가능하다.
본 명세서에서, 우리는 중심 메모리를 통해서 직접 통신 채널을 설정함으로써 통신 오버헤드를 줄이는 메모리 중심 통신 장치를 설명하였다. 기존의 CGRA에서 행해지는 메인 메모리 및 프레임 버퍼 간의 데이터 복사 대신에, 본 발명은 통신 채널로써 중심 메모리만을 사용한다. 이는 마스터들과 메모리 유닛들 간의 일대일 맵핑을 스위칭함으로써 값 비싼 멀티 포트 메모리를 사용하는 것을 피하도록 해준다. 실험 결과에 따르면, 본 발명에 따른 접근은 80% 이상까지 통신 오버헤드를 줄이고 평균적으로 76%까지 전체 성능을 향상시킬 수 있다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시 예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.

Claims (11)

  1. 하나 이상의 프로세서;
    복수 개의 프로세싱 엘리먼트들, 및 상기 프로세싱 엘리먼트들에 의해 실행되는 명령들을 저장하는 구성 캐쉬를 포함하는 프로세싱 엘리먼트 어레이;
    상기 프로세서 및 상기 프로세싱 엘리먼트 어레이와 각각 일대일 맵핑되는 복수 개의 메모리 유닛들을 포함하고, 상기 일대일 맵핑을 스위칭하여 상기 프로세서 및 상기 프로세싱 엘리먼트 어레이 간의 데이터 통신을 수행하는 중심 메모리; 및
    상기 중심 메모리 및 외부 디바이스 간의 인터페이스를 위한 네트워크/버스 인터페이스를 포함하고,
    상기 중심 메모리는,
    각각 단일 포트를 가지는 복수 개의 메모리 유닛들, 및 상기 메모리 유닛들의 각각과 상기 프로세서, 상기 프로세싱 엘리먼트 어레이 및 상기 네트워크/버스 인터페이스 간의 일대일 맵핑을 스위칭하기 위한 크로스바 스위치를 포함하는 배타 영역; 및
    멀티 포트를 가지는 레지스터로 구현되고, 상기 메모리 유닛들의 각각과 상기 프로세서, 상기 프로세싱 엘리먼트 어레이 및 상기 네트워크/버스 인터페이스 간의 일대일 맵핑 정보를 저장하는 공유 영역을 포함하는 것을 특징으로 하는 코어스 그레인 재구성 어레이에서의 메모리 중심 통신 장치.
  2. 삭제
  3. 삭제
  4. 제1항에 있어서,
    상기 프로세서, 상기 프로세싱 엘리먼트들, 또는 상기 네트워크/버스 인터페이스는 상호 간의 데이터 통신을 수행하기 위하여 상기 일대일 맵핑 정보를 변경하고,
    상기 크로스바 스위치는, 상기 변경된 일대일 맵핑 정보에 따라서 상기 메모리 유닛들의 각각과 상기 프로세서, 상기 프로세싱 엘리먼트 어레이 및 상기 네트워크/버스 인터페이스 간의 일대일 맵핑을 스위칭하는 것을 특징으로 하는 코어스 그레인 재구성 어레이에서의 메모리 중심 통신 장치.
  5. 제4항에 있어서,
    상기 메모리 유닛들의 각각은 서로 상이한 물리 어드레스 공간을 사용하는 반면에 서로 동일한 논리 어드레스 공간을 공유하는 것을 특징으로 하는 코어스 그레인 재구성 어레이에서의 메모리 중심 통신 장치.
  6. 제1항에 있어서, 상기 공유 영역은,
    상기 프로세서, 상기 프로세싱 엘리먼트 어레이 및 상기 네트워크/버스 인터페이스 간에 전송되는 제어 신호, 또는 사용자에 의해 미리 설정된 크기 이하의 데이터를 저장하는 것을 특징으로 하는 코어스 그레인 재구성 어레이에서의 메모리 중심 통신 장치.
  7. 제1항에 있어서,
    상기 중심 메모리는 스크래치 패드 메모리인 것을 특징으로 하는 코어스 그레인 재구성 어레이에서의 메모리 중심 통신 장치.
  8. 제1항에 있어서, 상기 프로세싱 엘리먼트 어레이는,
    상기 프로세싱 엘리먼트들에 의해 액세스되는 데이터로의 기준 어드레스들의 테이블을 저장하는 어드레스 생성 유닛을 더 포함하는 것을 특징으로 하는 코어스 그레인 재구성 어레이에서의 메모리 중심 통신 장치.
  9. 제8항에 있어서, 상기 어드레스 생성 유닛은,
    상기 프로세싱 엘리먼트들 중 하나로부터 판독 또는 기록 요청, 인덱스 아규먼트 및 오프셋 아규먼트가 수신되면, 상기 인덱스 아규먼트를 사용하여 상기 테이블로부터 상기 기준 어드레스를 발견하고, 상기 오프셋 아규먼트에 상기 기준 어드레스를 부가하여 완전한 어드레스를 생성하며, 상기 판독 또는 기록 요청, 및 상기 완전한 어드레스를 상기 중심 메모리로 송신하는 것을 특징으로 하는 코어스 그레인 재구성 어레이에서의 메모리 중심 통신 장치.
  10. 제1항에 있어서,
    상기 프로세서는 캐쉬를 더 포함하고,
    상기 프로세서에 의해서 메모리 액세스 요청이 발행될 때, 상기 프로세서는 요청되는 어드레스를 상기 중심 메모리의 어드레스 범위와 비교하여 상기 중심 메모리에 액세스할지 또는 상기 캐쉬에 액세스할지를 결정하는 것을 특징으로 하는 코어스 그레인 재구성 어레이에서의 메모리 중심 통신 장치.
  11. 제1항에 있어서,
    상기 메모리 유닛들의 각각은 복수 개의 블록들로 분할되고, 상기 블록들의 각각은 상기 프로세싱 엘리먼트들의 열 또는 행에 대응하며, 상기 블록들의 각각의 대역폭은 상기 프로세싱 엘리먼트들의 데이터 경로의 대역폭과 동일한 것을 특징으로 하는 코어스 그레인 재구성 어레이에서의 메모리 중심 통신 장치.
KR1020100023414A 2010-03-16 2010-03-16 코어스 그레인 재구성 어레이에서의 메모리 중심 통신 장치 KR101076869B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020100023414A KR101076869B1 (ko) 2010-03-16 2010-03-16 코어스 그레인 재구성 어레이에서의 메모리 중심 통신 장치
PCT/KR2010/003495 WO2011115327A1 (ko) 2010-03-16 2010-06-01 코어스 그레인 재구성 어레이에서의 메모리 중심 통신 장치
US13/635,620 US8949550B2 (en) 2010-03-16 2010-06-01 Memory-centered communication apparatus in a coarse grained reconfigurable array

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100023414A KR101076869B1 (ko) 2010-03-16 2010-03-16 코어스 그레인 재구성 어레이에서의 메모리 중심 통신 장치

Publications (2)

Publication Number Publication Date
KR20110104330A KR20110104330A (ko) 2011-09-22
KR101076869B1 true KR101076869B1 (ko) 2011-10-25

Family

ID=44649403

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100023414A KR101076869B1 (ko) 2010-03-16 2010-03-16 코어스 그레인 재구성 어레이에서의 메모리 중심 통신 장치

Country Status (3)

Country Link
US (1) US8949550B2 (ko)
KR (1) KR101076869B1 (ko)
WO (1) WO2011115327A1 (ko)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101293700B1 (ko) * 2012-02-23 2013-08-06 국립대학법인 울산과학기술대학교 산학협력단 코어스 그레인드 재구성 구조를 위한 코드 생성 장치 및 그 코드 생성 방법
KR101293701B1 (ko) * 2012-02-23 2013-08-06 국립대학법인 울산과학기술대학교 산학협력단 코어스 그레인드 재구성 어레이에서의 중첩 루프문 수행 장치 및 그 방법
KR20140126190A (ko) * 2013-04-22 2014-10-30 삼성전자주식회사 프로세서의 긴 라우팅 처리를 지원하는 메모리 장치, 그 메모리 장치를 이용한 스케줄링 장치 및 방법
CN103279448A (zh) * 2013-04-24 2013-09-04 南京龙渊微电子科技有限公司 基于数据缓存重配置的多核间数据交换方法及装置
US20170083313A1 (en) * 2015-09-22 2017-03-23 Qualcomm Incorporated CONFIGURING COARSE-GRAINED RECONFIGURABLE ARRAYS (CGRAs) FOR DATAFLOW INSTRUCTION BLOCK EXECUTION IN BLOCK-BASED DATAFLOW INSTRUCTION SET ARCHITECTURES (ISAs)
KR102668340B1 (ko) 2017-08-03 2024-05-22 넥스트 실리콘 리미티드 설정가능한 하드웨어 런타임 최적화
KR20200049775A (ko) 2017-08-03 2020-05-08 넥스트 실리콘 리미티드 재구성 가능한 캐시 아키텍처 및 캐시 일관성을 위한 방법
WO2019055675A1 (en) 2017-09-13 2019-03-21 Next Silicon, Ltd. DATA ARCHITECTURE WITH DIRECTED AND INTERCONNECTED GRID
CN110728364A (zh) * 2018-07-17 2020-01-24 上海寒武纪信息科技有限公司 一种运算装置和运算方法
US11188497B2 (en) 2018-11-21 2021-11-30 SambaNova Systems, Inc. Configuration unload of a reconfigurable data processor
US10831507B2 (en) * 2018-11-21 2020-11-10 SambaNova Systems, Inc. Configuration load of a reconfigurable data processor
US10698853B1 (en) 2019-01-03 2020-06-30 SambaNova Systems, Inc. Virtualization of a reconfigurable data processor
US11386038B2 (en) 2019-05-09 2022-07-12 SambaNova Systems, Inc. Control flow barrier and reconfigurable data processor
US11055141B2 (en) 2019-07-08 2021-07-06 SambaNova Systems, Inc. Quiesce reconfigurable data processor
CN111475205B (zh) * 2020-03-02 2023-03-17 上海交通大学 一种基于数据流解耦合的粗粒度可重构阵列结构设计方法
US11269526B2 (en) 2020-04-23 2022-03-08 Next Silicon Ltd Interconnected memory grid with bypassable units
US11163715B1 (en) * 2020-05-04 2021-11-02 International Business Machines Corporation CGRA accelerator for weather/climate dynamics simulation
US11809908B2 (en) 2020-07-07 2023-11-07 SambaNova Systems, Inc. Runtime virtualization of reconfigurable data flow resources
US11782729B2 (en) 2020-08-18 2023-10-10 SambaNova Systems, Inc. Runtime patching of configuration files
CN112445538B (zh) * 2020-12-15 2021-11-30 清华大学 可重构处理器的配置加载***及方法
CN112486908B (zh) * 2020-12-18 2024-06-11 清华大学 层次化的多rpu多pea的可重构处理器
CN112540950B (zh) * 2020-12-18 2023-03-28 清华大学 基于配置信息共享存储的可重构处理器及其共享存储方法
FR3124284B1 (fr) * 2021-06-21 2024-04-19 St Microelectronics Srl Système sur puce comprenant une interface de connexion entre des dispositifs maîtres et des dispositifs esclaves
US11327771B1 (en) 2021-07-16 2022-05-10 SambaNova Systems, Inc. Defect repair circuits for a reconfigurable data processor
US11556494B1 (en) 2021-07-16 2023-01-17 SambaNova Systems, Inc. Defect repair for a reconfigurable data processor for homogeneous subarrays
US11409540B1 (en) 2021-07-16 2022-08-09 SambaNova Systems, Inc. Routing circuits for defect repair for a reconfigurable data processor
CN114064560B (zh) * 2021-11-17 2024-06-04 上海交通大学 一种面向粗粒度可重构阵列的可配置便笺式缓存设计方法
US11487694B1 (en) 2021-12-17 2022-11-01 SambaNova Systems, Inc. Hot-plug events in a pool of reconfigurable data flow resources

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4223291A (en) * 1978-08-31 1980-09-16 Robertshaw Controls Company Convertible set-back selector clip
US4412303A (en) * 1979-11-26 1983-10-25 Burroughs Corporation Array processor architecture
US4400768A (en) * 1980-06-04 1983-08-23 Burroughs Corporation Parallel access computer memory system employing a power-of-two memory modules
US4644461A (en) * 1983-04-29 1987-02-17 The Regents Of The University Of California Dynamic activity-creating data-driven computer architecture
US5230079A (en) * 1986-09-18 1993-07-20 Digital Equipment Corporation Massively parallel array processing system with processors selectively accessing memory module locations using address in microword or in address register
US4985832A (en) 1986-09-18 1991-01-15 Digital Equipment Corporation SIMD array processing system with routing networks having plurality of switching stages to transfer messages among processors
US5081575A (en) * 1987-11-06 1992-01-14 Oryx Corporation Highly parallel computer architecture employing crossbar switch with selectable pipeline delay
WO2001069411A2 (en) * 2000-03-10 2001-09-20 Arc International Plc Memory interface and method of interfacing between functional entities
WO2006026086A2 (en) 2004-08-31 2006-03-09 Silicon Optix Method and apparatus for management of bit plane resources
JP4536618B2 (ja) * 2005-08-02 2010-09-01 富士通セミコンダクター株式会社 リコンフィグ可能な集積回路装置
US7730280B2 (en) * 2006-06-15 2010-06-01 Vicore Technologies, Inc. Methods and apparatus for independent processor node operations in a SIMD array processor
US20090300324A1 (en) * 2007-01-19 2009-12-03 Nec Corporation Array type processor and data processing system
KR101360191B1 (ko) * 2007-08-24 2014-02-07 삼성전자주식회사 코어스 그레인 어레이를 공유하는 방법 및 그 방법을이용한 프로세서
KR100934227B1 (ko) * 2007-09-21 2009-12-29 한국전자통신연구원 개방형 시리얼 정합 방식을 이용한 메모리 스위칭 컨트롤장치, 그의 동작 방법 및 이에 적용되는 데이터 저장 장치
JP2014016894A (ja) * 2012-07-10 2014-01-30 Renesas Electronics Corp 並列演算装置、並列演算装置を備えたデータ処理システム、及び、データ処理プログラム

Also Published As

Publication number Publication date
WO2011115327A1 (ko) 2011-09-22
KR20110104330A (ko) 2011-09-22
US8949550B2 (en) 2015-02-03
US20130024621A1 (en) 2013-01-24

Similar Documents

Publication Publication Date Title
KR101076869B1 (ko) 코어스 그레인 재구성 어레이에서의 메모리 중심 통신 장치
US7743191B1 (en) On-chip shared memory based device architecture
EP3896574B1 (en) System and method for computing
US8677081B1 (en) Transferring and storing data in multicore and multiprocessor architectures
US6751698B1 (en) Multiprocessor node controller circuit and method
JP3765586B2 (ja) 多重プロセッサコンピューターシステムのアーキテクチャ
US8732398B2 (en) Enhanced pipelining and multi-buffer architecture for level two cache controller to minimize hazard stalls and optimize performance
US10210117B2 (en) Computing architecture with peripherals
US6275891B1 (en) Modular and scalable system for signal and multimedia processing
US10031888B2 (en) Parallel memory systems
JP2012128838A (ja) アイソレーションメモリバッファを組み込んだロードリデュースド・デュアル・インライン・メモリ・モジュール(lr−dimm)を利用したスイッチ/ネットワークアダプタ・ポートインターフェースを含むヘテロジニアスコンピューティングシステム
US6629232B1 (en) Copied register files for data processors having many execution units
US20220208238A1 (en) Memory module adapted to implementing computing functions
JP6679570B2 (ja) データ処理装置
US7636817B1 (en) Methods and apparatus for allowing simultaneous memory accesses in a programmable chip system
US7181575B2 (en) Instruction cache using single-ported memories
Chang et al. Memory-centric communication architecture for reconfigurable computing
Vianes et al. Study and Comparison of Hardware Methods for Distributing Memory Bank Accesses in Many-core Architectures
GB2396031A (en) Apparatus to make a plurality of single port memories operable as a multi-port memory with a SIMD processor
US20040111567A1 (en) SIMD processor with multi-port memory unit
Chen et al. CoDMA: Buffer Avoided Data Exchange in Distributed Memory Systems
NZ716954B2 (en) Computing architecture with peripherals

Legal Events

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

Payment date: 20140926

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151001

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20161101

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170925

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20181002

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20191001

Year of fee payment: 9