KR101753913B1 - 기계 비전 알고리즘을 위한 멀티프로세서 시스템온칩 - Google Patents
기계 비전 알고리즘을 위한 멀티프로세서 시스템온칩 Download PDFInfo
- Publication number
- KR101753913B1 KR101753913B1 KR1020110055455A KR20110055455A KR101753913B1 KR 101753913 B1 KR101753913 B1 KR 101753913B1 KR 1020110055455 A KR1020110055455 A KR 1020110055455A KR 20110055455 A KR20110055455 A KR 20110055455A KR 101753913 B1 KR101753913 B1 KR 101753913B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- memory
- processing cores
- scratch pad
- main memory
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Computing Systems (AREA)
- Memory System (AREA)
Abstract
메인 메모리, 및 메인 메모리에 저장된 데이터를 사용하는 소프트웨어를 실행하도록 구성된 복수의 프로세싱 코어를 포함하는 멀티프로세서 시스템이 개시된다. 몇몇 실시예에서, 본 멀티프로세서 시스템은 프로세싱 코어와 메인 메모리 사이에 연결되어 있고, 복수의 프로세싱 코어에 의한 사용을 위해 메인 메모리로부터 데이터를 프리페치하도록 구성되어 있는 데이터 스트리밍 유닛을 포함한다. 몇몇 실시예에서, 본 멀티프로세서 시스템은 프로세싱 코어에 연결되어 있고, 2 이상의 프로세싱 코어가 주어진 데이터 아이템에 동시에 액세스하게 하는 소프트웨어의 선택된 부분을, 복수의 프로세싱 코어를 대신하여, 실행하도록 구성되어 있는 스크래치 패드 프로세싱 유닛을 포함한다.
Description
본 발명은 일반적으로 멀티프로세서 시스템에 관한 것이고, 더욱 상세하게는 멀티프로세스 시스템에서 공유되는 리소스의 효율적인 사용을 위한 방법 및 시스템에 관한 것이다.
하나의 일체형 디바이스 내에 완전한 멀티프로세서 시스템 및 특히 대칭형 멀티프로세싱(SMP) 시스템의 구현은 실시간 기계-비전을 위해 요구되는 것과 같은, 높은 복잡도를 가진 계산 태스크의 출현과 VLSI 디바이스의 집적도 증가로 인해, 최근에 대중화되고 있다. 몇몇 멀티프로세서 시스템에서, 메모리 리소스는 복수의 프로세서에 의해 공유된다. 그러나, 이러한 공유는 메모리 코히어런시(coherency) 문제 및 성능 병목현상(bottlenecks)을 발생시킨다.
미국특허 제7,529,799호에서, 발명자는 버스-기반의 캐시-코히어런스 프로토콜을 사용하는 대용량 SMP 시스템의 분산 시스템 구조를 제시하였다. 분산 시스템 구조는 어드레스 스위치, 복수의 메모리 서브시스템, 및 복수의 마스터 디바이스, 노드 컨트롤러에 의해 지원되는 하나의 세트의 노드로 조직화되는 프로세서, I/O 에이전트, 또는 코히어런트 메모리 어댑터를 포함한다. 노드 컨트롤러는 마스터 디바이스로부터 트랜잭션을 수신하고, 마스터 디바이스와 다른 마스터 디바이스로서, 또는 슬레이브 디바이스로서 통신하고, 마스터 디바이스로부터 수신된 트랜잭션을 큐잉(queue)한다. 코히어런시의 달성이 시공간적으로 분산되므로, 노드 컨트롤러를 캐시 코히어런시를 유지하는 것을 돕는다. 또한, 표준 버스 프로토콜에 대한 트랜잭션 태그 포맷은 시스템에 걸쳐 고유한 트랜잭션 태그가 유지됨을 보장하기 위해 확장된다. 사이드밴드 신호는 중재를 위해 사용되고, 어떠한 환경에서 노드 컨트롤러에서 트랜잭션 태그를 보존하기 위해 반환된다.
미국 특허 제7,237,071호에서, 동일한 프로세서로 이루어진 병렬 멀티프로세싱 아키텍처를 가지고, 하나의 프로그램 메모리를 가지는 SMP 시스템이 제시되어 있다. 프로그램 액세스 중재 로직은 하나의 시점에 하나의 요청하는 중앙처리장치에 명령어를 제공한다. 공유된 메모리 액세스 중재 로직은 각각의 동시다발적으로 접근가능한 메모리 뱅크로부터 데이터를 공급할 수 있거나, 또는 액세스를 위해 중앙 처리장치 사이에서 중재할 수 있다. 이 시스템은 상기 공유된 메모리에 소정의 세트의 어드레스 중 하나에 판독 액세스가 후속하는 소정의 개수의 메모리 사이클에 대하여 다른 중앙처리장치에 의해 하나의 어드레스에 대한 액세스를 차단함으로써, 어토믹(atomic) 판독/수정/기록 명령어를 시뮬레이팅할 수 있다.
본 발명의 하나의 실시예는 메인 메모리, 복수의 프로세싱 코어, 및 데이터 스트리밍 유닛을 포함하는 멀티프로세서 시스템을 제공한다. 복수의 프로세싱 코어는 메인 메모리에 저장된 데이터를 사용하는 소프트웨어를 실행하도록 구성되어 있다. 데이터 스트리밍 유닛은 프로세싱 코어와 메인 메모리 사이에 연결되어 있고, 복수의 프로세싱 코어에 의한 사용을 위해 메인 메모리로부터 데이터를 프리페치(pre-fetch)하도록 구성되어 있다.
몇몇 실시예에서, 데이터 스트리밍 유닛은 복수의 프로세싱 코어를 대신하여 메인 메모리에 데이터를 저장하도록 구성되어 있다. 하나의 실시예에서, 데이터 스트리밍 유닛은 2 이상의 프로세싱 코어를 대신하여 수행되는 메인 메모리에 대한 동시 액세스를 해소하도록 구성되어 있는 중재 회로를 포함한다.
몇몇 실시예에서, 데이터 스트리밍 유닛은, 각각의 프로세싱 코어에 대하여, 프로세싱 코로부터 메인 메모리 내의 각각의 어드레스 리스트를 수신하고, 그 리스트에 따라 메인 메모리로부터 데이터를 프리페치하도록 구성되어 있는 각각의 프론트엔드 유닛을 포함한다. 개시된 실시예에서, 멀티프로세서 시스템은 각각의 프로세싱 코어에 연결된 각각의 로컬 메모리를 포함하고, 각각의 프로세싱 코어 및 대응하는 프론트엔드 유닛은 각각의 로컬 메모리를 통해 데이터를 교환하도록 구성되어 있다.
하나의 실시예에서, 하나의 프로세싱 코어 및 대응하는 프론트엔드 유닛은 각각의 로컬 메모리에 저장되어 있는 원형 버퍼 내에 어드레스의 리스트를 유지하도록 구성되어 있다. 몇몇 실시예에서, 적어도 프로세싱 코어 및 데이터 스트리밍 유닛은 하나의 집적회로에 포함된다.
또한 본 발명의 하나의 실시예에 따라, 메인 메모리, 복수의 프로세싱 코어 및 스크래치 패드 프로세싱 유닛을 포함하는 멀티프로세서 시스템이 제공된다. 복수의 프로세싱 코어, 메인 메모리에 저장된 데이터를 사용하는 소프트웨어를 실행하도록 구성되어 있다. 스크래치 패드 프로세싱 유닛은 프로세싱 코어에 연결되어 있고, 복수의 프로세싱 코어를 대신하여, 2이상의 프로세싱 코어가 주어진 데이터 아이템을 동시에 액세스하게 하는 소프트웨어의 선택된 부분을 실행하도록 구성된다.
몇몇 실시예에서, 스크래치 패드 프로세싱 유닛은 2이상의 프로세싱 코어에 의해 액세스되는 주어진 데이터 아이템을 저장하기 위한 전용 메모리를 포함한다. 하나의 실시예에서, 스크래치 패드 프로세싱 유닛은 프로세싱 코어로부터 스크래치 패드 명령어를 수신하고, 스크래치 패드 명령어를 중재하고, 전용 메모리에서 중재된 스크래치 패드 명령어를 실행하도록 구성되어 있다. 개시된 실시예에서, 적어도 프로세싱 코어 및 스크래치 패드 프로세싱 유닛은 하나의 집적회로에 포함된다.
또한 본 발명의 하나의 실시예에 따른, 데이터 프로세싱 방법이 제공된다. 본 방법은 멀티프로세서 시스템의 복수의 프로세싱 코어 상에서, 메인 메모리에 저장된 데이터를 사용하는 소프트웨어를 실행하는 단계를 포함한다. 이 데이터는 복수의 프로세싱 코어에 의한 사용을 위해, 프로세싱 코어와 메인 메모리 사이에 연결된 데이터 스트리밍 유닛에 의해 메인 메모리로부터 프리페치된다.
또한 본 발명의 하나의 실시예에 따른, 데이터 프로세싱 방법이 제공된다. 본 방법은 멀티프로세서 시스템의 복수의 프로세싱 코어 상에서, 메인 메모리에 저장된 데이터를 사용하는 소프트웨어를 실행하는 단계를 포함한다. 2이상의 프로세싱 코어가 동시에 주어진 데이터 아이템에 액세스하게 하는 소프트웨어의 선택된 부분은 복수의 프로세싱 코어에 연결된 스크래치 패드 프로세싱 유닛을 사용하여 프로세싱 코어를 대신하여 실행된다.
본 발명은 또한 아래의 도면과 함께 아래의 실시예의 상세한 설명을 통해 더 잘 이해될 것이다.
도 1은 본 발명의 하나의 실시예에 따른 멀티프로세서 시스템을 개략적으로 도시하는 블록 다이어그램이다.
도 2는 본 발명의 하나의 실시예에 따른 데이터 스트리밍 유닛(DSU)을 개략적으로 도시하는 블록 다이어그램이다.
도 3은 본 발명의 하나의 실시예에 따른 원형 버퍼의 구조를 개략적으로 도시하는 도면이다.
도 4는 본 발명의 하나의 실시예에 따른 DSU 프론트엔드의 구조를 개략적으로 도시하는 블록 다이어그램이다.
도 5는 본 발명의 하나의 실시예에 따른 DSU 프론트엔드 내의 버퍼 관리 유닛의 구조를 개략적으로 도시하는 블록 다이어그램이다.
도 6은 본 발명의 하나의 실시예에 따른 DSU 중재기의 구조를 개략적으로 도시하는 블록 다이어그램이다.
도 7은 본 발명의 하나의 실시예에 따른, 스크래치 패드 유닛과 그것이 연결되어 있는 시스템 엘리먼트의 구조를 개략적으로 도시하는 블록 다이어그램이다.
도 8은 본 발명의 하나의 실시예에 따른 스크래치 패드 컨트롤러를 개략적으로 도시하는 블록 다이어그램이다.
도 2는 본 발명의 하나의 실시예에 따른 데이터 스트리밍 유닛(DSU)을 개략적으로 도시하는 블록 다이어그램이다.
도 3은 본 발명의 하나의 실시예에 따른 원형 버퍼의 구조를 개략적으로 도시하는 도면이다.
도 4는 본 발명의 하나의 실시예에 따른 DSU 프론트엔드의 구조를 개략적으로 도시하는 블록 다이어그램이다.
도 5는 본 발명의 하나의 실시예에 따른 DSU 프론트엔드 내의 버퍼 관리 유닛의 구조를 개략적으로 도시하는 블록 다이어그램이다.
도 6은 본 발명의 하나의 실시예에 따른 DSU 중재기의 구조를 개략적으로 도시하는 블록 다이어그램이다.
도 7은 본 발명의 하나의 실시예에 따른, 스크래치 패드 유닛과 그것이 연결되어 있는 시스템 엘리먼트의 구조를 개략적으로 도시하는 블록 다이어그램이다.
도 8은 본 발명의 하나의 실시예에 따른 스크래치 패드 컨트롤러를 개략적으로 도시하는 블록 다이어그램이다.
개요
몇몇 멀티프로세서 시스템은 하나의 집적회로(시스템온칩, 또는 SOC)로 구현된다. SOC는 전형적으로 메인 메모리가 아닌 로컬 메모리 유닛의 하나 이상의 인스탠스를 포함하는데, 메인 메모리는 로컬 메모리보다 실질적으로 더 크다. 메인 메모리는 전형적으로 하나 이상의 집적회로로 구현되어, 연속적인(버스트) 액세스를 위해 높은 대역폭을 허용하지만 긴 지연시간을 가진다. 이러한 메인 메모리가 멀티프로세서 시스템에서 복수의 프로세서 간에 공유될 때, 메모리에 대한 액세스의 큐잉의 결과로서 심각한 성능의 저하를 피하기 위해서는 효율적인 중재가 실행되어야 한다.
본 발명의 실시예들은 공유된 메모리 리소스를 액세스하는 복수의 프로세서에 의해 발생되는 멀티프로세서 시스템에서의 성능 병목현상을 완화시키기 위한 새로운 방법을 소개한다. 본 발명의 실시예에 따른, 멀티프로세서 시스템은 프로세서 코어가 필요로 하기 전에 메인 메모리로부터 데이터를 페치하는 데이터 스트리밍 유닛(DSU)을 포함한다. DSU는 페치된 데이터를 프로세서 코어에 연결되어 있는 로컬 메모리에 저장하고, 이 데이터는 필요할 때 프로세서 코어에 의해 액세스될 수 있다. DSU는 또한 로컬 메모리로부터 메인 메모리에 데이터를 기록한다.
멀티프로세서 시스템과 관련된 다른 문제는 2 이상의 프로세서가 동일한 메모리 위치에 액세스할 때 메모리 코히어런시를 보장하는 것이다. 멀티프로세서 시스템에서 실행하는 몇몇 이미지 프로세싱 지향 알고리즘에서, 수개의 프로세서 코어에 의해 메인 메모리 내의 동일한 어드레스에 대한 액세스는 드문 것인데, 예컨대, 수개의 프로세서 코어에 의해 프로세싱되는 이미지의 면적으로부터 이미지 통계를 수집하는 태스크에서 발생한다. 그러나, 이러한 드문 현상이 효과적으로 처리되지 않는다면 성능 병목현상을 발생시킬 수 있다. 본 발명의 실시예들은 이러한 병목현상을 완화시키는 새로운 방법을 소개한다. 개시된 실시예에 따라, 공유된 메모리 위치에 대한 모든 액세스는 전용 프로세서 및 소형 로컬 메모리를 포함하고, 공유된 메모리 위치에 액세스하는 병렬 태스크의 실행에 최적화된 소프트웨어를 실행하는 스크래치 패드 유닛에 의해 다루어진다. 스크래치 패드 유닛은 전형적으로 코-프로세서로서 멀티프로세서 시스템의 프로세서 코어에 부착되어 있다.
시스템 설명
도 1은 본 발명의 하나의 실시예에 따른 멀티프로세서 시스템(10)을 개략적으로 도시하는 블록 다이어그램이다. 멀티프로세서 시스템(10)의 모든 도시된 엘리먼트는 하나의 집적회로에 위치될 수 있고, 시스템 온칩(SOC)을 구성할 수 있다.
멀티프로세서 시스템(10)은 (외부 메모리라고도 하는) 메인 메모리(500)를 포함한다. 몇몇 실시예에서, 메인 메모리(500)는 하나 이상의 개별적인 집적회로를 포함하고, 멀티프로세서 SOC의 일부가 아니다. 다른 실시예에서, 메인 메모리 및 멀티프로세서 시스템(10)의 다른 엘리먼트는 동일한 SOC에 위치한다. 또 다른 실시예에서, 메인 메모리(500)는 수개의 파트를 포함하고, 그 일부는 SOC 내에 위치하고, 일부는 하나 이상의 외부 칩에 위치한다. 아래의 설명에서, 용어 "외부 메모리"는 메인 메모리를 위해 사용될 것이지만, 본 발명은 SOC에 구현되지 않은 메인 메모리로 어떤 방식으로든 제한되지 않는다.
SOC 내에 위치한, 메모리 컨트롤러(400)는 외부 메모리에 대한 액세스를 컨트롤하고, 몇몇 실시예에서, 저장장치 리플레시(refresh) 메카니즘 및 다른 메모리 컨트롤 기능을 제공한다. 몇몇 실시예에서, 로컬 메모리 유닛(300)은 각각의 프로세서 코어(200)에 부착된다. 각각의 로컬 메모리 유닛은, 예컨대, 코드 세그먼트를 채우기 위해, 다이렉트 메모리 액세스(DMA) 채널을 사용하여 메모리 컨트롤러(400)를 통해 외부 메모리(500)에 액세스할 수 있다.
본 발명의 실시예에 따라, 메인 메모리에서 공유된 메모리 위치에 대한 액세스의 결과로서의 성능 저하는 데이터 스트리밍 유닛(DSU)(2000)에 의해 감소된다. DSU(2000)는 전형적으로 프로세서 코어(200)가 이러한 데이터에 액세스할 필요가 있는 시간 이전에, 외부 메모리(500)로부터 데이터로 로컬 메모리 유닛(300)을 미리-채우도록 구성될 수 있고, 외부 메모리에 대한 액세스에 대한 판독 경합으로 인한 프로세서(200)의 지연을 감소시킨다. 유사한 방식으로, DSU(2000)는 프로세서 코어(200)에 의해 로컬 메모리(300)에 기록된 데이터를 외부 메모리(500)로 전송하고, 그로 인해 외부 메모리로의 액세스에 대한 기록 경합으로 인한 프로세서(200)의 지연을 최소화시킨다.
DSU(2000)는 메모리 컨트롤러(400)에 대한 액세스를 지배하는 DSU 중재기(2200) 및 DSU 프론트엔드 유닛(2100)을 포함한다. 여기서, 각각의 프론트엔드 유닛은 각각의 로컬 메모리(300) 및 하나의 각각의 프로세서 코어(200)에 연결된다.
몇몇 실시예에서, 공유된 메모리 위치에 대한 액세스는 각각의 프로세서 코어(200)에 각각 연결되어 있는 명령어 버퍼(1300)를 포함하는 스크래치 패드 유닛(1000)에 의해 다루어질 수 있다. 스크래치 패드 유닛(1000)은 하나 이상의 스크래치 패드 랜덤 액세스 메모리(RAMs)(1100), 및 하나 이상의 스크래치 패드 컨트롤러(1200)를 포함하는데, 각각의 스크래치 패드 램은 각각의 스크래치 패드 컨트롤러(1200)를 통해 명령어 버퍼(1300)에 연결된다.
전형적인 구현에서, 버퍼(1300)는 현재 명령어가 (명령어와 함께 수반되는 타겟 어드레스에 따라) 요청된 스크래치 패드 컨트롤러에 대한 중재를 이길 때까지, 프로세서 코어(200)에 의해 생성된 명령어를 일시적으로 저장한다. 도 1의 실시예에서, (필수적인 것은 아니지만) 각각의 프로세서 코어(200)는 각각의 전용 명령어 버퍼(1300)에 연결되어 있다. 명령어가 명령어 버퍼에 버퍼링된 후, 버퍼는 버퍼링된 명령어와 함께 수반된 타겟 어드레스에 따라 적합한 스크래치 패드 컨트롤러(1200)에 대한 액세스를 요청한다. 액세스가 허용된 때, 명령어는 명령어 버퍼로부터 실행을 위해 스크래치 패드 컨트롤러로 전송된다.
스크래치 패드 유닛(1000)은 최적의 방법으로 공통의 공유된 메모리 태스크를 수행하기 위해 연결되어 있고, 효율적인 메모리-잠금 메카니즘을 도입함으로써 메모리 코히어런시를 보장하고, 프로세서 코어(200)를 오프-로딩(off-loading)하는, 스크래치 패드 컨트롤러(1200)에 의해 공통의 공유된 메모리 멀티프로세서의 독립적인 실행을 허용한다. 이러한 기술은 메모리가 물리적으로 잠겨지지 않기 때문에 효율적이다. 개시된 기술은 전체 판독-수정-기록 사이클이 컨트롤러에 의해 어토미컬하게 수행됨을 보장한다.
데이터 스트리밍 유닛(DSU)
도 2는 본 발명의 하나의 실시예에 따른, 데이터 스트리밍 유닛(DSU)과, 메모리 컨트롤러(400), 프로세서 코어(200), 및 로컬 메모리(300)를 포함하여, DSU가 연결되어 있는 유닛을 개략적으로 도시하는 블록 다이어그램이다. DSU(2000)는 각각이 각각의 프로세서 코어(200) 및 연결된 로컬 메모리 유닛(300)을 서브하는 복수의 DSU 프론트엔드 유닛(2100), 및 DSU 프론트엔드 유닛(2100)에 의해 초기화되는 메모리 액세스 요청 사이에서 중재하는 하나의 DSU 중재기를 포함한다.
프로세서 코어는 초기화시 데이터를 메모리로부터 로컬 메모리로 이동시키도록 DSU를 사전 프로그래밍(preprogram)한다. 그 다음, DSU(2000)는 외부 메모리(500)로부터 로컬 메모리(300)로 데이터를 미리 로딩하여, 외부 메모리로의 판독 액세스에 대한 경합을 줄일 것이고, 그 결과 멀티프로세서 시스템(10)의 성능을 향상시킬 것이다. 이와 유사하게, 프로세서 코어는 데이터를 로컬 메모리로부터 외부 메모리로 이동시키도록 DSU를 사전 프로그래밍하여, 외부 메모리로의 기록 액세스에 대한 경합이 감소될 것이다.
이러한 구성은 몇가지 이유로 성능을 향상시킨다. 예컨대, 외부 메모리(500)로, 또는 그로부터의 트래픽은 모든 트래픽을 인지하고 있는 하나의 컨트롤러(DSU 중재기)에 의해 최적화될 수 있다. 또한, 프로세서 코어(200)는 그들이 필요로 하는 데이터가 미리 페칭되어, 데이터 액세스 지연이 낮아지기 때문에 스톨(stall)되지 않는다.
프로세서 코어(200)에 의해 수행된 외부 메모리 내의 하나의 어드레스로부터의 모든 판독 오퍼레이션은 외부 메모리(500)로부터의 대응하는 판독 오퍼레이션, 및 로컬 메모리(300)로의 대응하는 기록 오퍼레이션에 의해 선행되는데, 이 두 오퍼레이션은 모두 DSU 프론트엔드 유닛(2100)에 의해 수행된다. 이와 유사하게, 외부 메모리 내의 하나의 어드레스에 대한 로컬 프로세서에 의해 수행되는 모든 기록 오퍼레이션은 로컬 메모리로부터의 대응하는 판독, 및 외부 메모리로의 후속한 기록이 뒤따르는데, 이 둘 모두 DSU에 의해 수행된다.
몇몇 실시예에서, 프로세서 코어(200)와 외부 메모리(500) 사이의 데이터 전송은 도 3에 관하여 아래에 서술될 로컬 메모리에 위치한 복수의 원형 버퍼에 의해 수행된다. 각각의 프로세서 코어는 각각의 원형 버퍼에 데이터를 기록하고, DSU는 원형 버퍼로부터 데이터를 판독하여 메인 메모리에 기록한다. 메인 메모리가 외부 메모리인 실시예에서, 이것은 외부 메모리 컨트롤러(400)에 의해 수행될 것이다. 판독 오퍼레이션에 대하여, DSU는 (메인 메모리가 외부 메모리라면, 외부 메모리 컨트롤러를 통해) 메인 메모리로부터 데이터를 판독하고, 그 데이터를 원형 버퍼에 기록하고, 프로세서 코어는 원형 버퍼로부터 페치된 데이터를 판독한다.
도 3은 본 발명의 하나의 실시예에 따른 원형 버퍼(310)의 구조를 개략적으로 도시한다. 본 발명의 실시예에서, 수개의 원형 버퍼는 각각의 로컬 메모리 내에 구현될 수 있다. 주어진 로컬 메모리(300)에 위치한 원형 버퍼는 DSU 프론트엔드 유닛(2100)에 의해, 그리고 이러한 로컬 메모리에 연결된 프로세서 코어(200)에 의해 관리된다. 도 3 및 그에 관한 설명에서 언급된 용어 판독 및 기록은 로컬 프로세서(200)에 의해 수행되는 판독 및 기록 오퍼레이션을 의미한다.
원형 버퍼는 버퍼가 시작하는 로컬 메모리(300) 내의 위치를 나타내는 스타트 포인터(311), 및 로컬 메모리(300) 내의 마지막 위치를 나타내는 엔드 포인터(316)를 가진다. 버퍼가 원형이므로, 버퍼로의 후속한 액세스에 대하여, 엔드 포인터(316) 다음 위치가 스타트 포인터(311)이다.
로컬 프로세서(200)에 의해 프로세싱되는 데이터 엘리먼트는 (아래에 설명된) 특수한 프로세서 코어 명령어에 의해 발전된, 현재 엘리먼트 포인터(313)에 의해 포인팅된다. 로컬 프로세서에 대하여 유효한 데이터를 포함하는 워킹 윈도우(314)가 정의된다. 현재 엘리먼트 포인터가 판독 포인트의 값에 도달하면, 프로세서는 새로운 데이터가 도착할 때까지 스톨된다. 또한, 판독 포인터(315)의 값이 기록 포인터(312)의 값과 같다면, 외부 메모리로부터 판독 데이터의 추가적인 페칭은 기록 메모리 포인터가 전진할 때까지 연기될 것이다.
도 4는 본 발명의 하나의 실시예에 따른 DSU 프론트엔드 유닛(2100)을 개략적으로 도시하는 블록 다이어그램이다. DSU 프론트엔드 유닛에 부착된 프로세서 코어(200) 및 로컬 메모리(300) 또한 도면에 도시되어 있다. 각각의 DSU 프론트엔드 유닛(2100)은 DSU 버퍼 관리 유닛(2110), 컨트롤 유닛(2130), 버퍼 선택 멀티플렉서(2140), 및 외부 메모리 액세스 컨트롤(2150)을 포함한다. DSU 프론트엔드 유닛(2110)는 하나의 리스트의 태스크를 실행하기 위해 프로세서 코어(200)에 의해 설정되고, 이러한 설정은 컨트롤 유닛(2130)에 위치하는 복수의 레지스터를 프로그래밍하는 것을 포함하는데, 여기서, 각각의 레지스터는 판독, 기록 및 데이터 크기는 물론, 각각의 원형 버퍼(310)에 대한 버퍼 스타트 및 버퍼 엔드 포인터의 값을 나타내기 위한 비트를 포함한다.
아래에 상세하게 서술될 DSU 버퍼 관리 유닛(2110)은 원형 버퍼(310)를 관리한다. DSU 버퍼 관리 유닛(2110)은 버퍼 스타트 포인터에 대한 버퍼 엔드 포인트 둘레를 감싸고 있는 판독 및 기록 포인터를 증가시키고, (아래에 서술된) NLI(1) 명령어가 프로세서 코어로부터 수신되면, 현재 엘리먼트 포인터를 증가시키고, 다시, 버퍼 엔드 포인터 둘레를 감싼다. 현재 엘리먼트 포인터에 대한 증가가 그 값이 판독 포인터의 값과 같아지게 하는 경우, 버퍼 관리 유닛(2110)은 새로운 데이터가 수신될 때까지 프로세서 코어(200)에게 스톨할 것을 시그널링한다.
컨트롤 유닛(2130)은 프로세서 코어(200)로의 액세스를 수반하는 원형 버퍼(310)에 대한 액세스 사이를 중재한다. 이러한 중재는, 예컨대, 회전식 우선순위 스킴에 의해, 수행될 수 있다. 버퍼 선택 멀티플렉서(2140)는 컨트롤 유닛(2130)으로부터 선택된 버퍼에 대한 포인터를 얻고, 상기 버퍼에 의해 생성된 어드레스를 로컬 메모리(300)로 출력한다.
컨트롤 유닛(2130)은 또한 판독 및 기록 요청을 생성하고, DSU 중재기(2200)로부터 판독 응답을 얻는 외부 메모리 액세스 컨트롤(2150)을 제어한다. 외부 메모리 액세스 유닛(2150)으로부터의 데이터는 로컬 메모리(300)로 직접 전송될 수 있으나, 외부 메모리로부터 판독되는 데이터 또는 외부 메모리에 기록되는 데이터의 크기가 로컬 메모리의 데이터 포트의 크기와 상이하다면, (도시되지 않은) 추가적인 버퍼링/로직이 사용될 수 있다.
도 5는 본 발명의 몇몇 실시예에 따른 DSU 버퍼 관리 유닛(2110)을 개략적으로 도시하는 블록 다이어그램이다. 버퍼 관리 유닛(2110)은 DSU 프론트엔드 유닛(2100)에 통합되고, 복수의 원형 버퍼로의 액세스를 컨트롤한다. 몇몇 실시예에서, DSU 버퍼 관리 유닛(2110)은 복수의 동일한 단일 버퍼 관리 유닛(SBM's)(2120)을 포함하는데, 각각의 SBM은 로컬 메모리(300) 내의 하나의 각각의 원형 버퍼를 제어한다. SBM(2120)은 판독 포인터(315)의 값을 저장하는 판독 포인터(RP) 레지스터(2123), 기록 포인터(312)의 값을 저장하는 기록 포인터(WP) 레지스터(2122), 및 CEP(313)의 값을 저장하는 현재 엘리먼트 포인터(CEP) 레지스터(2124)를 포함할 수 있다. 판독 포인터는 DSU 프론트엔드가 외부 메모리로부터 판독하는 데이터를 기록하는 다음 메모리 위치를 포인팅하고, 기록 포인터는 DSU 프론트엔드가 외부 메모리에 기록할 데이터를 판독할 다음 메모리 위치를 포인팅한다.
SBM(2120)은 또한 현재 데이터 트랜잭션에서 전송되는 데이터 유닛의 크기를 저장하는 크기 레지스터(2121); 각각의 트랜잭션 후 갱신하기 위해 포인터 레지스터(2122, 2123, 2124) 내의 값에 크기 레지스터(2121)에 저장된 값을 더하는 덧셈기(2126); 및, 마지막으로, RP 레지스터(2123)의 값과 CEP 레지스터(2124)의 값을 비교하고, 그 값이 같을 때 "스톨" 출력을 어썰트(assert)하고, 프로세서 코어(200)가 정지되어야 하는 비교기(2125)를 더 포함한다.
판독 및 기록 포인터 레지스터(2122, 2123)의 갱신은 컨트롤 유닛(2130)에 의해 활성화되는 선택 입력에 의해 자격을 얻는다(도 4 참조). 여기서, 각각의 SBM(2120)에 대한 각각의 선택 라인이 존재하고, 선택 라인은 선택-1, 선택-2 등으로 지정된다. 선택 라인과 더불어, 컨트롤 유닛(2130)은 선택된 SBM(2120)의 기록 포인터 레지스터(2122) 및 판독 포인터 레지스터(2123)를 각각 갱신하기 위해 모든 SBM: 기록 및 판독에 대하여, 그리고 DSU 프론트엔드 유닛(2100)의 모든 SBM(2120)의 모든 CEP 레지스터(2124)를 갱신하기 위해, NLI(1)에 공통의 컨트롤 라인을 어썰트한다.
이제 도 4를 참조하면, 컨트롤 유닛(2130)은 DSU 프론트엔드에서 프로그래밍된 태스크를 실행한다. 컨트롤 유닛은 하나의 리스트의 메모리 전달 태스크와 함께 프로세서 코어(200)에 의해 사전 설정되고, 그 다음, 예컨대, 회전식 우선순위일 수 있는 하나의 기준에 따라 버퍼 관리 유닛(2110)으로부터 포인터를 선택한다. 컨트롤 유닛은 그 다음 로컬 메모리(300)에 선택된 어드레스를 출력하기 위해 버퍼 선택 먹스(2140)의 어드레스 입력을 제어하고, 버퍼의 인덱스 및 판독/기록 비트를 포함할 수 있는 지시 워드를 외부 메모리 액세스 컨트롤(2150)로 전송한다. 또한, 임의의 SBM(2120)이 자신의 스톨 출력을 설정할 때, 컨트롤 유닛은 프로세서 코어(200)에 스톨이 클리어될 때까지 그 오퍼레이션을 홀드하기 위해 집합적인 스톨 출력을 어썰트한다.
초기화시 수행되는 DSU 설정과 더불어, 컨트롤 유닛(2130)은 2개의 특수한 프로세서 명령어: NLI(0) 및 NLI(1)에 의해 제어된다. NLI(1)은 원형 버퍼에서 현재 엘리먼트 포인터(313)를 진행시키기 위해 사용된다. 이것은 프로세서가 다음 값을 계산하기 위해 새로운 파라미터 세트를 필요로 할 때, 각각의 프로그램 루프 인터레이션 후 설정된다.
갱신된 파라미터는 모든 액티브 SMBs의 현재 엘리먼트 포인터를 포함한다. 이러한 갱신은 모든 SBMs에 대하여 하나의 사이클에서 수행되고, 사이클 버퍼 랩 위치를 고려하는 것이 전형적이다. NLI 명령어는 또한 현재 엘리먼트 포인터(CEP)의 새로운 위치가 외부 메모리로부터 페칭된 요구되는 데이터로 이미 채워져 있는지 검증한다. 그렇지 않다면, 프로세서 코어는 판독 포인터(RP) 및 현재 엘리먼트 포인터가 요구사항을 충족시킬 때까지(즉, RP>EP일 때까지) 스톨된다.
NLI(1)는 컨트롤 유닛(2130)에 의해 DSU 버퍼 관리(2110)로 전달된다. NLI(2)는 프로그램이 시작할 때 프로세서 코어(200)에 의해 발행된다. NLI(0)의 목적은 초기 CEP가 프로세싱에 유효한지(즉, 요구되는 데이터가 외부 메모리로부터 판독되었고, 로컬 메모리에 기록되었는지) 검증하는 것이다.
판독 포인터(RP)(315) 및 기록 포인터(WP)(312)는 전형적으로 NLI(0)가 수신될 때까지 그들의 초기 위치로부터 전진하지 않을 것이다. (RP는 제1 엘리먼트를 프로세싱하기 위해 요구되는 데이터를 페치할 필요가 있으므로 증가된다. WP는 CEP가 아직, WP가 가리키는 위치와 동일한 위치인, 초기 위치를 가리키므로 증가하지 않는다. 프로세싱된 데이터는 아직 사용가능하지 않고, 그러므로 외부 메모리에 아무것도 기록되지 않는다.)
외부 메모리 액세스 컨트롤(2150)은 DSU 중재기(2200)에 판독 및 기록 요청을 초기화하기 위해 컨트롤 유닛(2130)에 의해 활성화된다. 이것은 또한 DSU 중재기로부터의 판독-응답을 얻고, 그 판독 데이터를 로컬 메모리로 전달한다.
도 6은 본 발명의 몇몇 실시예에 따른 DSU 중재기(2200)의 블록 다이어그램을 개략적으로 도시한다. DSU 중재기(2200)는 복수의 DSU 프론트엔드 유닛(2100)으로부터 판독 및 기록 요청을 수신하고, 그 요청들 사이에서 중재하고, 외부 메모리 내의 대응하는 어드레스를 계산하고, 외부 메모리 액세스에 대한 요청을 외부 메모리 컨트롤러(400)로 전송한다. DSU 중재기는 또한 메모리 컨트롤러로부터 수신된 판독 요청에 대한 응답을 요청하는 DSU 프론트엔드 유닛으로 다시 라우팅한다. 본 발명의 몇몇 실시예에 따라, 기록 응답은 필요로 되지 않을 수 있고, 임의의 기록 요청은 수신될 것으로 가정된다. 도 6에 도시되지 않은 다른 실시예에서, 기록 응답은 핸들링되고, (아래에서 설명될) 판독 응답 래치(2210)와 유사한 유닛이 DSU 중재기(2200)에 추가된다.
복수의 DSU 프론트엔드 유닛(2100)으로부터의 판독 요청은 판독 요청 래치(2230)에서 래칭된다. 본 발명의 실시예에서, 판독 요청 래치(2230)는, 각각의 DSU 프론트엔드 유닛에 대하여, 요청이 대응하는 원형 버퍼를 나타내는 인덱스, 및 그 요청이 유효하고 아직 핸들링되지 않았음을 나타내는 펜딩 비트를 포함한다. 판독 요청 래치(2230)로부터의 요청은, 예컨대, 회전식 우선순위 스킴을 사용하여, 수개의 동시발생된 판독 요청 사이를 중재하는 판독 요청 중재 유닛(2250)으로 입력된다. 판독 요청 중재는 또한 판독 요청 래치(2230)에서 선택된 요청의 펜딩 비트를 클리어시킨다.
(아래에 서술된 바와 같이, 하나 또는 하나 이상의) 선택된 판독 오퍼레이션은 (로컬 메모리(300) 내의 각각의 원형 버퍼에 대하여 하나의 포인터씩) 외부 메모리에 대한 포인터를 유지하고 갱신하고, 그 포인터 값과 외부 메모리의 조직화에 관한 파라미터를 기초로 외부 메모리 내의 어드레스를 제한하는 판독 어드레스 계산 유닛(2270)으로 출력된다. 본 발명의 몇몇 실시예에서, 프로세싱된 오브젝트는 비디오 이미지이고, 이러한 파라미터는 이미지 폭, 높이, 픽셀당 바이트를 포함한다. 판독 어드레스 계산 유닛으로부터의 출력은 외부 메모리 컨트롤러(400)에 대한 판독 요청이다.
본 발명의 몇몇 실시예에 따라, 외부 메모리로의 액세스의 대역폭은 로컬 메모리(300) 내의 대역폭보다 더 크다. 이는 더 넓은 버스, 더 빠른 클록, 또는 이들의 임의의 조합에 기인할 수 있다. 이러한 실시예에서, 복수의 메모리 액세스를 동시에 발생시키는 것이 바람직할 수 있다. 판독 요청 중재 유닛(2250)은 이러한 실시예에서 수개의 판독 요청을 선택하고, 판독 어드레스 계산 유닛(2270)은 동시에 수개의 트랜잭션에 대한 어드레스를 계산할 것이다.
기록 요청에 대한 메카니즘은 판독에 대하여 서술한 것과 유사하고, 기록 요청을 래칭하기 위한 기록 요청 래치(2220) 및 펜딩 기록 요청 사이에서 중재하는 기록 요청 중재 유닛(2240), 및 외부 메모리 내의 어드레스를 계산하는 기록 어드레스 계산 유닛(2260)을 포함한다. 본 발명의 몇몇 실시예에 따라, 기록 요청 래치(2220), 기록 요청 중재 유닛(2240), 및 기록 어드레스 계산 유닛(2260)은 판독 요청 래치(2230), 판독 요청 중재 유닛(2250), 및 판독 어드레스 계산 유닛(2270)과 각각 동일한 것일 수 있다. 다른 실시예에서, 이러한 유닛은 특성은 유사하지만, 판독보다 기록의 빈도가 더 낮으므로, 기록-관련 유닛의 구현은 면적 및 성능을 줄여 최적화될 수 있다.
마지막으로 판독 응답 래치(2210)는 메모리 컨트롤러(400)로부터의 판독 요청에 대한 응답을 래칭하고, 그 응답을 그 요청이 초기화된 DSU 프론트엔드 유닛(2100)으로 출력한다.
스크래치 패드 유닛
본 발명에 실시예에 따라, 멀티프로세서 시스템(10)의 프로그램은 메모리 코히어런시를 보장하고, 공유된 메모리 리고스의 액세싱에 관련된 지연을 완화시키는 스크래치 패드 유닛(1000)에 의해 핸들링되는 공유된 메모리 리소스에 액세스한다. 스크래치 패드 유닛은, 사실상, 공유된 메모리 태스크의 효율적인 실행 및 메모리 코히어런시를 보장하기 위해 최적화된 명령어 세트를 가진, 특수 목적의 프로세서이다.
도 7은 본 발명의 하나의 실시예에 따른, 스크래치 패드 유닛(1000), 및 (200)에 대한 스크래치 패드 유닛의 인터페이스를 개략적으로 도시하는 블록 다이어그램이다. 하나의 세트의 스크래치 패드 명령어(아래에 설명될 SP 명령어)는 프로세서 코어(200)에 대하여 정의된다. SP 명령어는 프로세서 코어(200)에 의해 명령어 버퍼(1300)로 전송되고, 명령어 버퍼는 SP 명령어를 실행을 위해 스크래치 패드 컨트롤러(1200)로 전송한다.
프로세서 코어(200)는 버퍼가 아직 이전의 명령어를 스크래치 패드 컨트롤러(1200)로 포워딩하지 않았다면, 또는 이전의 명령어가 반환 값을 예측하는 것이고, 그 반환 값이 아직 얻어지지 않았다면, 그들이 연결되어 있는 명령어 버퍼로 새로운 SP 명령어를 전송하는 것을 억제할 것이다. 이러한 메카니즘은 적절한 프로세서 코어를 스톨링함으로써, 예컨대, 하드웨어로 구현될 수 있다.
명령어 버퍼(1300)는 SP 명령어를 복수의 명령어 버퍼(1300)로부터의 복수의 명령어 사이를 중재하고 그 명령어 중 하나를 실행을 위해 선택하는 2개의 스크래치 패드 컨트롤러(1200) 중 하나로 전송한다. 본 발명의 실시예에 따라, 이러한 중재는 회전식 우선순위 스킴을 사용한다.
짝수 스크래치 패드 컨트롤러 위치를 언급하는 명령어는 짝수 스크래치 패드 컨트롤러(1200)에 대한 출력이고, 한편 홀수 위치를 언급하는 명령어는 홀수 스크래치 패드 컨트롤러에 대한 출력이다. 그러므로, 명령어 내에 특정된 어드레스의 최소 유효 비트는 스크래치 패드 컨트롤러로 포워딩되지 않는 대신에, 2개의 컨트롤러 중 하나를 선택하기 위해 사용된다.
각각의 스크래치 패드 컨트롤러(1200)는 스크래치 패드 메모리이거나, 또는 그 일부인 램(1100)에 연결된다. 본 발명의 몇몇 실시예에 따라, 스크래치 패드 메모리는 홀수 및 짝수 어드레스에 따라 인터리빙된다. 하나의 램(1100)은 짝수 어드레스를 보유하고(도 7에서 짝수 램), 다른 램(1100)(홀수 램)은 홀수 어드레스를 보유한다. 짝수 램에 연결된 스크래치 패드 컨트롤러(1200)는 "짝수 스크래치 패드 컨트롤러"라 하고, 홀수 램에 연결된 스크래치 패드 컨트롤러는 "홀수 스크래치 패드 컨트롤러"라 칭한다. 본 발명의 다른 실시예에서, 예컨대, 2개의 최소유효 어드레스 비트에 따른 4개의 그룹으로의 분할, 또는 다른 예로서, 해싱 함수에 의한 분할과 같은, 다른 타입의 인터리빙이 사용될 수 있다.
몇몇 SP 명령어는 호출하는 프로세서로 값을 반환할 수 있다. 이 때문에, 각각의 스크래치 패드 컨트롤러(1200)는 반환 값을 모든 프로세서 코어(200)로 출력한다. 또한, 각각의 프로세서 코어가 입력 데이터가 그것이 발행했던 명령에 대한 반환 값인지 판정하기 위해, 각각의 스크래치 패드 컨트롤러(1200)는 램으로부터 반환되는 데이터가, 모든 프로세서 코어(200)로 출력되는, ID 버스 상에서 지정된, 프로세서의 ID 코드를 어썰트한다. 중재가 허여된 후, 스크래치 패드 컨트롤러 내의 지연이 고정된다. 그러므로, 대안의 실시예에서, 명령어 버퍼는 사이클을 카운트하고, 이러한 카운트에 따라 데이터를 크기조절할 수 있다.
표 1은 본 발명의 몇몇 실시예에 따른 9가지 SP 명령어의 리스트이다. 각각의 SP 명령어는 다양한 SP 명령어 사이에서 구별하는 오퍼레이션 코드를 포함하고 4-비트, 스크래치 패드 메모리 내의 어드레스인 인덱스를 포함할 수 있는 오퍼레이션 코드를 포함하고, 예컨대, 16-18비트 및 하나 또는 2개의 오퍼랜드를 포함할 수 있다.
도 8은 본 발명의 실시예에 따른 파이프라인 스테이지 및 스크래치 패드 컨트롤러(1200)의 구조를 개략적으로 도시하는 블록 다이어그램이다. 스크래치 패드 컨트롤러(1200)는 회전식 우선순위 중재기(1210)(이하 중재기), 판독 스테이지 유닛(1220), 실행 스테이지 유닛(1230), 기록 스테이지 유닛(1240), 비교기(1260), 및 멀티플렉서(1250)를 포함한다. 스크래치 패드 컨트롤러(1200)는 파이프라인 아키텍처를 가지고, 명령어의 실행은 파이프라인 스테이지에서 수행된다. 기록 스테이지 유닛(1240)은 명령어(n)의 결과를 기록하고, 실행 스테이지 유닛(1230)은 명령어(n+1)의 일부분을 실행하고, 판독 스테이지 유닛(1220)은 명령어(n+2)로 특정된 메모리 어드레스로부터 데이터를 페칭하고, 중재기(1210)는 명령어(n+3)를 명령어 버퍼(1300)로부터 얻는다.
중재기(1210)는 명령어 버퍼로부터의 명령어 입력 사이에서 중재하고, 예컨대, 회전식 우선순위 스킴을 채용할 수 있다. 중재기가 명령어 소스를 선택할 때, 선택된 명령어를 판독 스테이지(1220)로 포워딩하고, (사용가능하다면) 그 다음 명령어를 적용할 수 있는 명령어 버퍼를 지시하는 레디 출력을 어썰트한다.
중재기(1210)로부터 판독 스테이지(1220)로 포워딩된 명령어는 5개의 항목을 포함할 수 있다. 첫번째 4개의 항목은 선택된 명령어로부터 복사된 것이고, OP코드 항목, 인덱스 항목, 하나 또는 두개의 오퍼랜드 - OP1 및 OP2를 포함한다. 상기 표 1은 각각의 명령어에 의해 사용되는 항목을 보여준다. 5번째 항목은 선택된 명령어 버퍼를 식별하고, 명령어를 발생시킨 프로세서 코어로 반환 값의 라우팅을 가능하게 하는 ID 항목이다.
판독 스테이지(1220)는 하나의 클록 사이클의 지연 후 중재기로부터 수신된 명령어의 항목들을 실행 스테이지(1230)로 출력한다. 또한, 판독 스테이지(1220)는 램(1100)의 판독 어드레스 포트에 연결되어 있는 판독 어드레스 버스 상에 스크래치 패드 메모리로부터 페칭되기 위한 오퍼랜드의 어드레스를 어썰트한다. 이 어드레스는 중재기(1210)로부터 출력된 인덱스 항목과 동일할 수 있다. 램으로부터 판독된 데이터는 (아래에서 설명될) 멀티플렉서(1250)를 통해 실행 스테이지(1230)로 라우팅된다. 램(1100)을 통한 지연이 1 클록 사이클이므로, 램으로부터의 데이터 및 각각의 명령어는 동일한 클록 사이클에 실행 스테이지(1230)에 도달할 것이다.
실행 유닛(1230)은 (필요하다면) 논리/연산 오퍼레이션을 수행하는 것, 램(1100)으로부터 판독된 반환 값을 출력하는 것, 기록 스테이지(1240)를 활성화시키는 것을 포함할 수 있는 명령어를 실행한다. 반환 값은 명령어를 초기화하였던 프로세서의 ID와 함께, 모든 프로세서 코어(200)로 출력된다.
기록 스테이지(1240)는 명령어가 기록 파트를 가진 때에만 활성화된다. 기록 스테이지는 기록 활성화 신호와 함께, 실행 스테이지로부터 기록될 데이터, 및 메모리 위치의 인덱스(어드레스)를 얻는다. 기록이 필요하면, 실행 스테이지(1230)는 기록 출력을 어썰트하고, 어드레스(인덱스)와 데이터를 전송하고, 램(1100)의 기록 데이터 포트 상에 기록 데이터를, 그리고 기록 어드레스 포트상에 기록 어드레스를 어썰트한다.
명령어가 메모리로부터 데이터를 판독하고, 파이프 라인에 의해 부과되는 하나의 클록 사이클 지연으로 두 액세스가 동일한 클록 사이클에서 발생함으로 인해, 새로운 데이터가 이전 명령어에 의해 동일한 위치에 기록되어 있다면, 메모리 코히어런시 메카니즘이 호출된다. 비교기(1260)는 기록 어드레스와 판독 어드레스를 비교하고, 두 어드레스가 동일하다면, 멀티플렉서(1250)는 기록된 데이터를 실행 스테이지(1200)로 직접적으로 라우팅할 것이고, 램(1100)으로부터 판독된 데이터는 무시될 것이다.
시스템(10)의 구성 및 도 1-8에 도시된 다양한 시스템 엘리먼트의 구성은 순전히 개념적 이해를 돕기 위해 도시된 예시적인 구성일 뿐이다. 대안의 실시예에서, 임의의 다른 적합한 구성이 또한 사용될 수 있다. 몇몇 실시예에서, 본 명세서에 서술된 컨트롤러 및 프로세서, 예컨대, 메모리 컨트롤러(400), 프로세서 코어(200), 및 스크래치 패드 컨트롤러(1200)는 본 명세서에 서술된 기능을 수행하기 위해 소프트웨어 내에 프로그래밍된 범용 프로세서를 포함할 수 있다. 예컨대, 이 소프트웨어는 전기적인 형태로 네트워크를 통해 프로세서로 다운로딩될 수도 있고, 또는 대안으로서 또는 부가적으로, 자기적, 광학적, 또는 전기적 메모리와 같은 비일시적인 실체적 매체에 제공되고 그리고/또는 저장될 수 있다.
본 명세서에서 서술된 실시예들이 주로 SOC 멀티프로세서 시스템을 다루었지만, 본 명세서에 서술된 방법 및 시스템은 버스 또는 네트워크 또는 이들의 임의의 조합에 의해 상호연결되어 있는, 수개의 집적회로 내에 분산되어 있는 멀티프로세서 시스템과 같은 다른 시스템에서 사용될 수 있다.
그러므로, 앞서 서술된 실시예들이 예로서 인용된 것일 뿐이고, 본 발명이 앞서 특정하게 도시되고 서술된 것으로 제한되지 않음이 이해될 것이다. 그보다는, 본 발명의 범위는 앞서 서술된 다양한 피처의 조합 및 하부조합을 모두 포함함은 물론, 종래기술에 개시된 것이 아닌 앞선 설명을 읽음으로써 당업자들에게 가능한 변형 및 수정을 모두 포함한다.
Claims (22)
- 멀티프로세서 시스템으로서,
메인 메모리;
상기 메인 메모리에 저장된 데이터를 사용하는 소프트웨어를 실행하도록 구성되어 있는 복수의 프로세싱 코어들;
각각의 프로세싱 코어와 관련된 각각의 로컬 메모리; 및
상기 프로세싱 코어들과 상기 메인 메모리 사이에 연결되어 있고, 상기 복수의 프로세싱 코어들에 의한 사용을 위해 상기 메인 메모리로부터 상기 데이터를 프리페치(pre-fetch)하도록 구성되어 있는 데이터 스트리밍 유닛을 포함하고,
상기 데이터 스트리밍 유닛은 상기 데이터를 상기 각각의 로컬 메모리에 저장되는 원형 버퍼에 기록하고 상기 데이터를 상기 원형 버퍼로부터 판독하는 것에 의해, 상기 각각의 로컬 메모리를 통해 각각의 프로세싱 코어와 상기 데이터를 교환하도록 구성되는, 멀티프로세서 시스템. - 제 1 항에 있어서, 상기 데이터 스트리밍 유닛은 상기 복수의 프로세싱 코어들을 대신하여 상기 메인 메모리 내에 상기 데이터를 저장하도록 구성되어 있는 멀티프로세서 시스템.
- 제 1 항에 있어서, 상기 데이터 스트리밍 유닛은 상기 프로세싱 코어들 중 2 이상의 프로세싱 코어를 대신하여 수행되는 상기 메인 메모리에 대한 동시 액세스를 해결하도록 구성되어 있는 중재 회로를 포함하는 멀티프로세서 시스템.
- 제 1 항에 있어서, 상기 데이터 스트리밍 유닛은, 각각의 프로세싱 코어에 대하여, 상기 메인 메모리 내의 각각의 어드레스의 리스트를 프로세싱 코어로부터 수신하고, 상기 리스트에 따라 상기 메인 메모리로부터 상기 데이터를 프리페치하도록 구성되어 있는 각각의 프론트엔드 유닛을 포함하는 멀티프로세서 시스템.
- 제 1 항에 있어서, 적어도 상기 프로세싱 코어들 및 상기 데이터 스트리밍 유닛은 하나의 집적회로에 포함되어 있는 멀티프로세서 시스템.
- 제 1 항에 있어서, 상기 원형 버퍼는 상기 로컬 메모리 내의 제1 위치를 나타내는 판독 포인터 및 상기 로컬 메모리 내의 제2 위치를 나타내는 기록 포인터를 포함하고 - 상기 제1 위치로 상기 데이터 스트리밍 유닛이 상기 메인 메모리로부터 상기 데이터를 기록하고, 상기 제2 위치로부터 상기 데이터 스트리밍 유닛이 상기 메인 메모리로 상기 데이터를 기록함 - , 상기 판독 포인터가 상기 기록 포인터에 도달하면 상기 기록 포인터가 전진(advance)할 때까지 상기 데이터의 추가적인 페칭(fetching)을 연기(suspend)하도록 구성되는, 멀티프로세서 시스템.
- 제 6 항에 있어서, 상기 원형 버퍼는 상기 프로세싱 코어가 상기 데이터를 판독해 내는 상기 각각의 로컬 메모리 내의 다음 위치를 나타내도록 상기 프로세싱 코어에 의해 전진되는 현재 엘리먼트 포인터를 포함하는, 멀티프로세서 시스템.
- 멀티프로세서 시스템으로서,
메인 메모리;
상기 메인 메모리에 저장된 데이터를 사용하는 소프트웨어를 실행하도록 구성되어 있는 복수의 프로세싱 코어들; 및
상기 프로세싱 코어들에 연결되어 있고, 2 이상의 상기 프로세싱 코어들이 주어진 데이터 아이템을 동시에 액세스하게 하는 소프트웨어의 선택된 부분을, 상기 복수의 프로세싱 코어들을 대신하여, 실행하도록 구성되어 있는 스크래치 패드 프로세싱 유닛을 포함하고,
상기 스크래치 패드 프로세싱 유닛은,
상기 2 이상의 상기 프로세싱 코어들에 의해 액세스되는 상기 주어진 데이터 아이템을 저장하기 위한 전용 메모리; 및
상기 복수의 프로세싱 코어들로부터 스크래치 패드 명령어들을 수신(accept)하고 상기 전용 메모리를 물리적으로 잠그지 않으면서 상기 수신한 스크래치 패드 명령어들을 상기 전용 메모리에서 실행하도록 구성된 스크래치 패드 컨트롤러를 포함하고,
상기 스크래치 패드 컨트롤러는,
회전식 우선순위 스킴(rotating priority scheme)으로 상기 복수의 프로세싱 코어로부터 수신한 상기 스크래치 패드 명령어들을 중재하도록 구성되는 중재기:
상기 회전식 우선순위 스킴에 따라 상기 중재기에 의해 제공되는 상기 스크래치 패드 명령어들을 실행하도록 파이프라인으로 순서대로 배치되는 판독, 실행 및 기록 스테이지들;
상기 판독 및 기록 스테이지들 내의 상기 스크래치 패드 명령어들의 각각의 메모리 어드레스들을 비교하도록 결합되는 비교기; 및
상기 각각의 메모리 어드레스들이 동일하면 상기 기록 스테이지로부터의 데이터를 상기 실행 스테이지로 되돌려 라우팅하도록 구성되는 멀티플렉서를 포함하는, 멀티프로세서 시스템. - 삭제
- 제 8 항에 있어서, 적어도 상기 프로세싱 코어들 및 상기 스크래치 패드 프로세싱 유닛은 하나의 집적회로에 포함되어 있는, 멀티프로세서 시스템.
- 데이터 프로세싱 방법으로서,
멀티프로세서 시스템의 복수의 프로세싱 코어들 상에서, 메인 메모리에 저장되는 데이터를 사용하는 소프트웨어를 실행하는 단계; 및
상기 복수의 프로세싱 코어들에 의한 사용을 위해, 상기 프로세싱 코어들과 상기 메인 메모리 사이에 연결되어 있는 데이터 스트리밍 유닛에 의해 상기 메인 메모리로부터 상기 데이터를 프리페치하는 단계를 포함하고,
상기 데이터를 프리페치하는 단계는 상기 데이터를 각각의 로컬 메모리에 저장되는 원형 버퍼에 기록하고 상기 데이터를 상기 원형 버퍼로부터 판독하는 것에 의해, 각각의 프로세싱 코어와 관련된 상기 각각의 로컬 메모리를 통해 상기 데이터 스트리밍 유닛과 각각의 프로세싱 코어 사이에 상기 데이터를 교환하는 단계를 포함하는, 데이터 프로세싱 방법. - 제 11 항에 있어서, 상기 데이터 스트리밍 유닛에 의해 상기 복수의 프로세싱 코어들을 대신하여 상기 메인 메모리에 상기 데이터를 저장하는 단계를 포함하는 데이터 프로세싱 방법.
- 제 11 항에 있어서, 상기 데이터를 프리페치하는 단계는 2 이상의 상기 프로세싱 코어들을 대신하여 수행되는 상기 메인 메모리에 대한 동시 액세스를 해결하는 단계를 포함하는 데이터 프로세싱 방법.
- 제 11 항에 있어서, 상기 데이터를 프리페치하는 단계는 상기 메인 메모리 내의 각각의 어드레스의 리스트를 각각의 프로세싱 코어로부터 각각의 프론트엔드 유닛에 제공하는 단계, 및 상기 리스트에 따라 상기 프론트엔드 유닛에 의해 상기 메인 메모리로부터 상기 데이터를 프리페치하는 단계를 포함하는 데이터 프로세싱 방법.
- 제 11 항에 있어서, 적어도 상기 프로세싱 코어들과 상기 데이터 스트리밍 유닛은 하나의 집적회로 내에 포함되어 있는 데이터 프로세싱 방법.
- 제 11 항에 있어서, 상기 원형 버퍼는 상기 로컬 메모리 내의 제1 위치를 나타내는 판독 포인터 및 상기 로컬 메모리 내의 제2 위치를 나타내는 기록 포인터를 포함하고 - 상기 제1 위치로 상기 데이터 스트리밍 유닛이 상기 메인 메모리로부터 상기 데이터를 기록하고, 상기 제2 위치로부터 상기 데이터 스트리밍 유닛이 상기 메인 메모리로 상기 데이터를 기록함 - , 상기 판독 포인터가 상기 기록 포인터에 도달하면 상기 기록 포인터가 전진(advance)할 때까지 상기 데이터의 추가적인 페칭(fetching)을 연기(suspend)하도록 구성되는, 데이터 프로세싱 방법.
- 제 16 항에 있어서, 상기 원형 버퍼는 상기 프로세싱 코어가 상기 데이터를 판독해 내는 상기 각각의 로컬 메모리 내의 다음 위치를 나타내도록 상기 프로세싱 코어에 의해 전진되는 현재 엘리먼트 포인터를 포함하는, 데이터 프로세싱 방법.
- 데이터 프로세싱 방법으로서,
멀티프로세서 시스템의 복수의 프로세싱 코어들 상에서, 메인 메모리에 저장된 데이터를 사용하는 소프트웨어를 실행하는 단계; 및
상기 복수의 프로세싱 코어들에 연결되어 있는 스크래치 패드 프로세싱 유닛을 사용하여, 2 이상의 상기 프로세싱 코어들이 주어진 데이터 아이템에 동시에 액세스하게 하는 소프트웨어의 선택된 부분을, 상기 프로세싱 코어들을 대신하여, 실행하는 단계를 포함하고,
상기 스크래치 패드 프로세싱 유닛은,
상기 2 이상의 상기 프로세싱 코어들에 의해 액세스되는 상기 주어진 데이터 아이템을 저장하기 위한 전용 메모리; 및
상기 복수의 프로세싱 코어들로부터 스크래치 패드 명령어들을 수신(accept)하고 상기 전용 메모리를 물리적으로 잠그지 않으면서 상기 수신한 스크래치 패드 명령어들을 상기 전용 메모리에서 실행하도록 구성된 스크래치 패드 컨트롤러를 포함하고,
상기 스크래치 패드 컨트롤러는,
회전식 우선순위 스킴(rotating priority scheme)으로 상기 복수의 프로세싱 코어로부터 수신한 상기 스크래치 패드 명령어들을 중재하도록 구성되는 중재기:
상기 회전식 우선순위 스킴에 따라 상기 중재기에 의해 제공되는 상기 스크래치 패드 명령어들을 실행하도록 파이프라인으로 순서대로 배치되는 판독, 실행 및 기록 스테이지들;
상기 판독 및 기록 스테이지들 내의 상기 스크래치 패드 명령어들의 각각의 메모리 어드레스들을 비교하도록 결합되는 비교기; 및
상기 각각의 메모리 어드레스들이 동일하면 상기 기록 스테이지로부터의 데이터를 상기 실행 스테이지로 되돌려 라우팅하도록 구성되는 멀티플렉서를 포함하는, 데이터 프로세싱 방법. - 삭제
- 제 18 항에 있어서, 적어도 상기 프로세싱 코어들과 상기 스크래치 패드 프로세싱 유닛은 하나의 집적회로 내에 포함되어 있는, 데이터 프로세싱 방법.
- 삭제
- 삭제
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US37256310P | 2010-08-11 | 2010-08-11 | |
US61/372,563 | 2010-08-11 | ||
US13/074,034 | 2011-03-29 | ||
US13/074,034 US9075764B2 (en) | 2010-08-11 | 2011-03-29 | Multiprocessor system-on-a-chip for machine vision algorithms |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20120015261A KR20120015261A (ko) | 2012-02-21 |
KR101753913B1 true KR101753913B1 (ko) | 2017-07-04 |
Family
ID=45565631
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020110055455A KR101753913B1 (ko) | 2010-08-11 | 2011-06-09 | 기계 비전 알고리즘을 위한 멀티프로세서 시스템온칩 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9075764B2 (ko) |
JP (1) | JP5787629B2 (ko) |
KR (1) | KR101753913B1 (ko) |
CN (1) | CN102375800B (ko) |
TW (1) | TWI528279B (ko) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9857868B2 (en) | 2011-03-19 | 2018-01-02 | The Board Of Trustees Of The Leland Stanford Junior University | Method and system for ergonomic touch-free interface |
US8840466B2 (en) | 2011-04-25 | 2014-09-23 | Aquifi, Inc. | Method and system to create three-dimensional mapping in a two-dimensional game |
US8854433B1 (en) | 2012-02-03 | 2014-10-07 | Aquifi, Inc. | Method and system enabling natural user interface gestures with an electronic system |
EP2817785B1 (en) | 2012-02-23 | 2019-05-15 | Charles D. Huston | System and method for creating an environment and for sharing a location based experience in an environment |
US10600235B2 (en) | 2012-02-23 | 2020-03-24 | Charles D. Huston | System and method for capturing and sharing a location based experience |
US10937239B2 (en) | 2012-02-23 | 2021-03-02 | Charles D. Huston | System and method for creating an environment and for sharing an event |
US9111135B2 (en) | 2012-06-25 | 2015-08-18 | Aquifi, Inc. | Systems and methods for tracking human hands using parts based template matching using corresponding pixels in bounded regions of a sequence of frames that are a specified distance interval from a reference camera |
US8934675B2 (en) | 2012-06-25 | 2015-01-13 | Aquifi, Inc. | Systems and methods for tracking human hands by performing parts based template matching using images from multiple viewpoints |
US8836768B1 (en) | 2012-09-04 | 2014-09-16 | Aquifi, Inc. | Method and system enabling natural user interface gestures with user wearable glasses |
US9092665B2 (en) | 2013-01-30 | 2015-07-28 | Aquifi, Inc | Systems and methods for initializing motion tracking of human hands |
US9129155B2 (en) | 2013-01-30 | 2015-09-08 | Aquifi, Inc. | Systems and methods for initializing motion tracking of human hands using template matching within bounded regions determined using a depth map |
US9298266B2 (en) | 2013-04-02 | 2016-03-29 | Aquifi, Inc. | Systems and methods for implementing three-dimensional (3D) gesture based graphical user interfaces (GUI) that incorporate gesture reactive interface objects |
US9798388B1 (en) | 2013-07-31 | 2017-10-24 | Aquifi, Inc. | Vibrotactile system to augment 3D input systems |
US9507417B2 (en) | 2014-01-07 | 2016-11-29 | Aquifi, Inc. | Systems and methods for implementing head tracking based graphical user interfaces (GUI) that incorporate gesture reactive interface objects |
US9619105B1 (en) | 2014-01-30 | 2017-04-11 | Aquifi, Inc. | Systems and methods for gesture based interaction with viewpoint dependent user interfaces |
US10523585B2 (en) | 2014-12-19 | 2019-12-31 | Amazon Technologies, Inc. | System on a chip comprising multiple compute sub-systems |
US10394731B2 (en) | 2014-12-19 | 2019-08-27 | Amazon Technologies, Inc. | System on a chip comprising reconfigurable resources for multiple compute sub-systems |
US11200192B2 (en) | 2015-02-13 | 2021-12-14 | Amazon Technologies. lac. | Multi-mode system on a chip |
US9588921B2 (en) * | 2015-02-17 | 2017-03-07 | Amazon Technologies, Inc. | System on a chip comprising an I/O steering engine |
CN104951424A (zh) * | 2015-07-09 | 2015-09-30 | 天津瑞发科半导体技术有限公司 | 一种具有多处理器和共用外存储器的计算机系统 |
TWI655548B (zh) * | 2017-10-13 | 2019-04-01 | 技嘉科技股份有限公司 | 介面優先排程及解決衝突之控制電路及介面優先排程及解決衝突之操作方法 |
US10866900B2 (en) * | 2017-10-17 | 2020-12-15 | Samsung Electronics Co., Ltd. | ISA extension for high-bandwidth memory |
CN113835898B (zh) * | 2017-11-29 | 2024-03-01 | 北京忆芯科技有限公司 | 存储器分配器 |
TWI719741B (zh) * | 2019-12-04 | 2021-02-21 | 財團法人工業技術研究院 | 改變冗餘處理節點的處理器及其方法 |
CN114817120A (zh) * | 2022-06-29 | 2022-07-29 | 湖北芯擎科技有限公司 | 一种跨域数据共享方法、系统级芯片、电子设备及介质 |
CN117312330B (zh) * | 2023-11-29 | 2024-02-09 | 中国人民解放军国防科技大学 | 基于便签式存储的向量数据聚集方法、装置及计算机设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002041358A (ja) * | 2000-07-24 | 2002-02-08 | Sony Corp | プロセッサシステム |
US20070101105A1 (en) | 2003-05-30 | 2007-05-03 | Mips Technologies, Inc. | Microprocessor with improved data stream prefetching |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06243037A (ja) * | 1993-02-18 | 1994-09-02 | Mitsubishi Electric Corp | データ先読み装置 |
US5761706A (en) * | 1994-11-01 | 1998-06-02 | Cray Research, Inc. | Stream buffers for high-performance computer memory system |
US5721830A (en) * | 1995-09-12 | 1998-02-24 | Pc-Tel, Inc. | Host signal processing communication system that compensates for missed execution of signal maintenance procedures |
US6243836B1 (en) * | 1998-08-17 | 2001-06-05 | Lucent Technologies, Inc. | Apparatus and method for circular buffering on an on-chip discontinuity trace |
JP2001060169A (ja) * | 1999-08-24 | 2001-03-06 | Hitachi Ltd | キャッシュコントローラ及びコンピュータシステム |
US6574725B1 (en) * | 1999-11-01 | 2003-06-03 | Advanced Micro Devices, Inc. | Method and mechanism for speculatively executing threads of instructions |
US7529799B2 (en) | 1999-11-08 | 2009-05-05 | International Business Machines Corporation | Method and apparatus for transaction tag assignment and maintenance in a distributed symmetric multiprocessor system |
US6977897B1 (en) * | 2000-05-08 | 2005-12-20 | Crossroads Systems, Inc. | System and method for jitter compensation in data transfers |
US7237071B2 (en) | 2001-12-20 | 2007-06-26 | Texas Instruments Incorporated | Embedded symmetric multiprocessor system with arbitration control of access to shared resources |
US8683132B1 (en) * | 2003-09-29 | 2014-03-25 | Nvidia Corporation | Memory controller for sequentially prefetching data for a processor of a computer system |
US20050144416A1 (en) * | 2003-12-29 | 2005-06-30 | Intel Corporation, A Delaware Corporation | Data alignment systems and methods |
JP4910576B2 (ja) * | 2006-09-04 | 2012-04-04 | 富士通株式会社 | 動画像処理装置 |
US20100070730A1 (en) * | 2008-09-17 | 2010-03-18 | Sebastian Pop | Minimizing memory access conflicts of process communication channels |
US8140769B2 (en) * | 2009-04-20 | 2012-03-20 | Oracle America, Inc. | Data prefetcher |
US8762649B2 (en) * | 2010-03-29 | 2014-06-24 | Via Technologies, Inc. | Bounding box prefetcher |
-
2011
- 2011-03-29 US US13/074,034 patent/US9075764B2/en active Active
- 2011-06-08 JP JP2011127961A patent/JP5787629B2/ja active Active
- 2011-06-09 KR KR1020110055455A patent/KR101753913B1/ko active IP Right Grant
- 2011-06-09 CN CN201110160959.8A patent/CN102375800B/zh active Active
- 2011-06-15 TW TW100120929A patent/TWI528279B/zh active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002041358A (ja) * | 2000-07-24 | 2002-02-08 | Sony Corp | プロセッサシステム |
US20070101105A1 (en) | 2003-05-30 | 2007-05-03 | Mips Technologies, Inc. | Microprocessor with improved data stream prefetching |
Also Published As
Publication number | Publication date |
---|---|
TWI528279B (zh) | 2016-04-01 |
JP5787629B2 (ja) | 2015-09-30 |
US20120042150A1 (en) | 2012-02-16 |
JP2012038293A (ja) | 2012-02-23 |
TW201209709A (en) | 2012-03-01 |
CN102375800B (zh) | 2015-11-25 |
US9075764B2 (en) | 2015-07-07 |
KR20120015261A (ko) | 2012-02-21 |
CN102375800A (zh) | 2012-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101753913B1 (ko) | 기계 비전 알고리즘을 위한 멀티프로세서 시스템온칩 | |
US11604605B2 (en) | Memory controller | |
JP7553478B2 (ja) | 書き込みミスエントリのドレインをサポートする犠牲キャッシュ | |
US20220276794A1 (en) | On-chip Atomic Transaction Engine | |
EP0568231B1 (en) | Methods and apparatus for providing multiple outstanding operations in a cache consistent multiple processor computer system | |
US8683140B2 (en) | Cache-based speculation of stores following synchronizing operations | |
US5398325A (en) | Methods and apparatus for improving cache consistency using a single copy of a cache tag memory in multiple processor computer systems | |
US7120755B2 (en) | Transfer of cache lines on-chip between processing cores in a multi-core system | |
US7228389B2 (en) | System and method for maintaining cache coherency in a shared memory system | |
JP2012038293A5 (ko) | ||
US6728839B1 (en) | Attribute based memory pre-fetching technique | |
WO2021243340A1 (en) | Computer memory expansion device and method of operation | |
GB2460747A (en) | Delaying requests from a directory to a cache until previous transfers have completed | |
JPH04232549A (ja) | キャッシュメモリシステム | |
KR20120054549A (ko) | 디스플레이 파이프 내에서의 스트리밍 변환 | |
US20240264955A1 (en) | Multiple-requestor memory access pipeline and arbiter | |
US12019920B2 (en) | Memory controller with programmable atomic operations | |
KR20220083848A (ko) | 프로그래밍 가능한 원자적 동작을 하는 메모리 컨트롤러 |
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 |