KR101559089B1 - 장치의 컴포넌트들 간에 메모리 자원들을 공유하기 위한 통신 프로토콜 - Google Patents

장치의 컴포넌트들 간에 메모리 자원들을 공유하기 위한 통신 프로토콜 Download PDF

Info

Publication number
KR101559089B1
KR101559089B1 KR1020117016806A KR20117016806A KR101559089B1 KR 101559089 B1 KR101559089 B1 KR 101559089B1 KR 1020117016806 A KR1020117016806 A KR 1020117016806A KR 20117016806 A KR20117016806 A KR 20117016806A KR 101559089 B1 KR101559089 B1 KR 101559089B1
Authority
KR
South Korea
Prior art keywords
component
memory
memory access
access request
tus
Prior art date
Application number
KR1020117016806A
Other languages
English (en)
Other versions
KR20110110199A (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
Priority claimed from US12/356,898 external-priority
Application filed by 에이티아이 테크놀로지스 유엘씨 filed Critical 에이티아이 테크놀로지스 유엘씨
Publication of KR20110110199A publication Critical patent/KR20110110199A/ko
Application granted granted Critical
Publication of KR101559089B1 publication Critical patent/KR101559089B1/ko

Links

Images

Classifications

    • 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
    • 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/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/404Coupling between buses using bus bridges with address mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation

Abstract

휴대폰과 같은 장치에 있어서, 메모리 자원들을 각각 가지는 집적 회로와 같은 컴포넌트들 간에 메모리 자원 공유가 가능하게 된다. 이는 컴포넌트들 간에 상호연결을 제공하고, 메모리 액세스 동작들을 개시하기 위하여 상호연결을 통해 보내지는 트랜잭션 유닛들을 구성함으로써 달성될 수 있다. 이 접근법은 또한 장치 컴포넌트들 간에 어느 정도의 통신을 가능하게 하는데 이용될 수도 있다.

Description

장치의 컴포넌트들 간에 메모리 자원들을 공유하기 위한 통신 프로토콜{COMMUNICATION PROTOCOL FOR SHARING MEMORY RESOURCES BETWEEN COMPONENTS OF A DEVICE}
본 발명은 장치의 컴포넌트들 간에 메모리 자원의 공유 및 통신에 관한 것이다.
현대 컴퓨팅 장치들은 다양한 이산(discrete) 기능들을 구현하고 전체 컴퓨팅 장치 내에서 상호작용하는 많은 독립적으로 지능을 지닌 컴포넌트들을 포함한다. 예를 들면, 애플리케이션 프로세서와 그래픽 프로세서는 시스템 디스플레이에 콘텐츠를 제공하도록 상호작용한다. 각각의 독립적인 지능을 지닌 컴포넌트는 전형적으로 다양한 정도의 지능과, 메모리 자원들과 같은 컴포넌트마다 특정의 이용가능한 로컬 자원들을 가진다.
컴퓨팅 장치의 집적 회로들 간에 데이터 전송을 할 수 있도록 버스 아키텍처를 채용하는 것은 잘 알려져 있다. 메모리 전송 동작들에 대해, 직접 메모리 액세스(direct memory access, DMA) 제어기는 중앙 처리 장치(CPU)로부터 버스 및 메모리 전송 동작들의 감독하는 부담을 덜기 위해 이용될 수 있으며, 이는 메모리 전송이 진행중일 동안에 CPU가 다른 기능들을 수행할 수 있게 한다.
컴퓨팅 장치들이 더욱 복잡해지고 그 장치들의 메모리 자원들이 더욱 분산될수록, 컴포넌트들 간에 메모리 자원들을 공유하기 위한 효율적인 통신 방법들이 바람직할 것이다.
휴대폰과 같은 장치에 있어서, 메모리 자원들을 각각 가지는 컴포넌트들, 예컨대 집적 회로들 간에 메모리 자원 공유가 가능하게 된다. 이는 컴포넌트들 간에 상호연결을 제공하고, 메모리 액세스 동작들을 개시하기 위하여 상호연결을 통해 보내지는 트랜잭션 유닛들을 구성함으로써 달성될 수 있다. 이 접근법은 또한 장치 컴포넌트들 간에 어느 정도의 통신을 가능하게 하는데 이용될 수도 있다.
본 발명에 따라, (i) 복수의 프로세싱 컴포넌트들(processing components)과 (ii) 상기 복수의 컴포넌트들을 상호연결하는 버스(bus)를 가지는 장치에서 메모리-매핑된 자원들(memory-mapped resources)을 액세스할 필요가 있는 개시 컴포넌트(initiating component)를 동작시키는 방법이 제공되며, 상기 방법은 채널을 개설하기 위하여 상기 버스 상의 연결을 통해 메모리-매핑된 자원들을 액세스할 필요가 있는 상기 개시 컴포넌트로부터 메모리-매핑된 자원들을 가지는 상기 장치의 목표 컴포넌트(target component)로 복수의 트랜잭션 유닛들(transaction units)(TUs)을 보내는 단계와, 상기 복수의 TU들이 상기 채널에 대한 구성 파라미터(configuration parameter)를 각각 가지는 하나 이상의 구성 TU들을 가지는 단계와, 상기 채널을 통해 상기 개시 컴포넌트로부터 상기 목표 컴포넌트로 메모리 액세스 요청을 포함하는 메모리 액세스 요청 TU를 보내는 단계를 포함한다.
본 발명의 다른 양상에 따라, 복수의 컴포넌트들과 상기 복수의 컴포넌트들 각각에 물리적 연결을 가지는 버스를 가지는 장치에서 사용될 제1 컴포넌트가 제공되면, 상기 제1 컴포넌트는 제1 프로세서와, 상기 제1 컴포넌트가 상기 버스에 물리적 연결을 가지도록 상기 버스에 연결을 위한 커넥터(connector)를 포함하며, 상기 제1 프로세서는 채널을 개설하기 위해 상기 버스 상의 연결을 통해 상기 버스에 물리적 연결을 가지는 제2 컴포넌트로 복수의 트랜잭션 유닛들(TUs)을 보내고, 여기서 상기 제2 컴포넌트는 프로세서와 메모리를 가지는 유형이고, 상기 복수의 TU들은 상기 채널에 대한 구성 파라미터를 각각 가지는 하나 이상의 구성 TU들을 포함하며, 상기 채널을 통해 상기 제2 컴포넌트로 메모리 액세스 요청을 가지는 메모리 액세스 요청 TU를 보내도록 동작가능하다.
발명의 추가의 양상에 따라, 복수의 프로세싱 컴포넌트들을 가지는 장치에서 메모리-매핑된 자원들의 공유를 용이하게 하기 위한 방법이 제공되며, 상기 방법은 채널을 개설하기 위하여 상기 장치의 상기 복수의 컴포넌트들을 상호연결하는 버스 상의 연결을 통해 메모리-매핑된 자원들을 액세스할 필요가 있는 상기 장치의 개시 컴포넌트로부터 메모리-매핑된 자원들을 가지는 상기 장치의 목표 컴포넌트로 복수의 트랜잭션 유닛들(TUs)을 보내는 단계와, 상기 복수의 TU들이 상기 채널에 대한 구성 파라미터를 각각 가지는 하나 이상의 구성 TU들을 포함하는 단계와, 상기 채널을 통해 상기 개시 컴포넌트로부터 상기 목표 컴포넌트로 메모리 액세스 요청을 가지는 메모리 액세스 요청 TU를 보내는 단계를 포함한다.
본 발명의 또 다른 양상에 따라, 복수의 컴포넌트들을 가지는 장치가 제공되며, 상기 장치는 제1 프로세서를 가지는 제1 컴포넌트와, 제2 프로세서와 메모리를 가지는 제2 컴포넌트와, 버스를 포함하며, 상기 제1 컴포넌트와 상기 제2 컴포넌트는 상기 버스에 물리적 연결을 가지며, 상기 제1 프로세서는 채널을 개설하기 위해 상기 버스 상의 연결을 통해 상기 제2 컴포넌트로 복수의 트랜잭션 유닛들(TUs)을 보내고, 상기 복수의 TU들은 상기 채널에 대한 구성 파라미터를 각각 가지는 하나 이상의 구성 TU들을 포함하며, 상기 채널을 통해 상기 제2 컴포넌트로 메모리 액세스 요청을 포함하는 메모리 액세스 요청 TU를 보내도록 동작가능하다.
본 발명의 예시적인 실시예들을 도시하는 도면들에 있어서,
도 1은 본 발명에 따른 동작에 적합한 장치의 도식이고,
도 2는 도 1의 장치에서 채용될 수 있는 프로토콜 스택(protocol stack)의 도식이고,
도 3은 도 1의 장치의 메모리 공간(memory space)들의 도식이고,
도 4는 도 1의 장치의 일부분의 동작에 관한 도식이며, 그리고
도 5 내지 9는 도 1의 장치에서 주고받을 수 있는 트랜잭션 유닛들(transaction units)의 도식들이다.
개관하면, 장치의 컴포넌트들이 점대점(point-to-point) 방식 및/또는 네트워크의 일부로서 상호연결될 수 있다. 각 컴포넌트 내부에는, 내부 메모리 뿐만 아니라 외부 메모리와 입력/출력(IO) 자원들에 대한 액세스를 필요로 하는 어떤 지능(intelligence)이 존재할 수 있다(예를 들어, 컴포넌트가 CPU 또는 DSP이거나 상태 머신(state machine)을 가지는 경우). 예를 들면, 로컬 메모리 및 IO 자원들을 액세스하기 위하여 CPU는 내부 버스 구조(internal bus structure)들을 지나 읽기(read) 및 쓰기(write) 사이클들 발생(issue)시킬 수 있으며, 이들은 보통 병렬적이다(예를 들어, AXI 버스 구조에서와 같이). 게다가, OCP와 같은 서로 다른 내부 버스 구조 주위에 설계되었을 수 있는 다른 외부 장치들의 원격 자원들(remote resources) 쪽으로 CPU 요청들을 발생시킬 수 있다. 본 명세서에서는 서로 다른 내부 시스템 온 칩(SoC) 버스 구조들을 가질 수 있는 메모리 매핑된(memory mapped) 외부 자원들을 액세스하기 위한 내부 SoC 버스 트랜잭션들을 실어나르는데 적합한 프로토콜이 서술된다. 상기 프로토콜은 점대점 물리적 링크(point-to-point physical link)를 통해 송신하기 전에 트랜스포트 계층(transport layer)에 의해 캡슐화(encapsulate)될 수 있는 트랜잭션 유닛들(transaction units, TUs)을 정의한다.
도 1을 보면, 예시적인 장치(10)는 휴대폰이며, 애플리케이션 프로세서(application processor, AP) 집적 회로(IC)인 제1 프로세싱 컴포넌트(20)를 가질 수 있고, 이는 점대점 버스(60)를 통해 그래픽 멀티미디어 IC(graphics multimedia IC, GMIC)인 제2 프로세싱 컴포넌트(50)에 연결될 수 있다. 각 컴포넌트는 상기 버스에 연결할 수 있게 하는 커넥터(connector)(23, 53)를 가진다. 버스(60)는 컴포넌트들 간에 병렬 또는 직렬의 경로일 수 있다. 컴포넌트(20)는 버스(60)를 제어하는 버스 제어기(22) 뿐만 아니라 디스플레이 제어기(24) 및 카메라 제어기(28)를 가진다. 점대점 연결(26)은 디스플레이 제어기(24)를 디스플레이(30)로 연결하고, 제2 점대점 연결(32)은 카메라 제어기(28)를 카메라(34)로 연결한다. 컴포넌트(20)는 또한 시스템 메모리(38)와 점대점 연결(36)을 가지고 베이스밴드(baseband) 및/또는 RF(radio frequency) 집적 회로(BB/RFIC)(42)와 점대점 연결(40)을 가진다.
컴포넌트(50)는 버스(60)를 제어하는 버스 제어기(52)를 가진다. 컴포넌트(50)는 또한 로컬 메모리(58)와 점대점 연결(56)을 가진다.
버스(60)를 통한 통신들은 예컨대 당해 기술 분야에서 잘 알려져 있는 계층으로 된 OSI 모델(open systems interconnection reference model, OSI model)을 통해, 또는 유사한 네트워크나 점대점 상호연결을 통해 달성될 수 있다. 예를 들면, 개시 컴포넌트(initiating component)(즉, 컴포넌트 20이나 50 중 하나)가 목표 컴포넌트(target component)(즉, 컴포넌트 20이나 50 중 다른 것)의 메모리 자원들에 대해 직접 액세스하게 하도록 5개 계층의 아키텍처가 구현될 수 있다. 계층으로 된 아키텍처는 도 2에서 예시된 바와 같을 수 있으며, 이 경우에 L1-L4에 의해 도시된 계층들은 일반적으로 OSI 모델의 1-4 계층들에 의해 제공되는 기능에 해당한다.
메모리 자원들에 대한 소기의 원격 액세스는 계층(L5)을 프로세서 인터페이스 에뮬레이션(processor interface emulation, PIE) 프로토콜 계층으로서 만듦으로써 구현될 수 있다. OSI 모델과 비교를 위해, 본 설명에서 계층(L5)은 OSI 모델의 L4 계층 위에 구현되는 하드웨어나 소프트웨어 기능에 해당한다고 가정될 수 있다.
OSI 모델과 유사하게, 각 연속되는 계층은 데이터 및 명령들이 계층들 간에 전달될 수 있도록 계층구조(hierarchy)에서 그 아래 및 위에 위치한 계층들을 상대하는 인터페이스를 제공한다. PIE 프로토콜 계층(L5)은 트랜잭션을 구현하기 위하여 트랜스포트 계층(L4)과 통신하는 독립적이고 캡슐화된 계층으로 설계된다. PIE 프로토콜은 트랜스포트 계층(L4) 기능을 호출하고 데이터를 트랜스포트 계층(L4)으로 전달함으로써 트랜잭션을 개시(initiate)한다. 이 요청에 대한 응답으로, 트랜스포트 계층(L4)은 네트워크 계층(L3)에 의해 제공되는 기능들을 이용하고, 이 계층은 차례로 하위 계층들에 의해 제공되는 기능들을 이용한다.
도 1로 돌아가면, 디스플레이 제어기(24)와 같은 컴포넌트(20)의 서브-컴포넌트가 컴포넌트(50)의 로컬 메모리(58)에 있는 메모리 블록을 액세스하고 싶으면, 컴포넌트(20)는 메모리 액세스 동작을 개시할 수 있다(따라서 컴포넌트(20)는 개시 컴포넌트로 지칭될 수 있는 반면, 컴포넌트(50)는 목표 컴포넌트로 지칭될 수 있다). 컴포넌트(20) 내의 내부 버스 구조가 AXI라고 가정하면, 디스플레이 제어기로부터의 이 요청은 컴포넌트(20) 내에서 AXI 버스 트랜잭션으로서(즉, AXI 버스 프로토콜에 따른 메모리 액세스 요청으로서) 나타날 것이다. 컴포넌트(20) 내의 PIE 계층(L5)(버스 제어기(22)의 일부일 수 있음)은 이 AXI 버스 요청을 받아서 그 요청을 PIE 트랜잭션으로 변환할 것이고, 그러면 그 트랜잭션은 계층들(L4-L1)을 이용하여 버스(60)를 지나 전송될 것이다. 컴포넌트(50) 내의 대응되는 PIE 계층(L5)은 도착하는 PIE 트랜잭션을 해석하고 그것을 그 자체의 내부 버스 요청으로 맞게(즉, 그 자체의 버스 프로토콜에 따른 메모리 액세스 요청으로서) 변환한다. 따라서, 컴포넌트(50)가 AXI 버스 구조가 아니라 OCP 버스 구조 주위에 설계되었다면, 컴포넌트(50) 내의 PIE 계층(L5)은 그 메모리 액세스 요청 TU로부터 값들을 추출하고, 그들을 OCP 버스 요청으로 만들어 내는데 이용할 것이다. 이런 방법으로, 목표 컴포넌트(50)의 메모리 블록은 컴포넌트(20) 상에서 돌아가는 애플리케이션들에 의해 개시 컴포넌트(20)의 메모리 어드레스 공간 내의 블록으로서 효율적으로 다루어진다. 비슷하게, 컴포넌트(50)가 개시자(initiator)로서 역할하는 경우에, 시스템 메모리(38)의 메모리 블록은 컴포넌트(50)의 블록으로서 다루어질 수 있다.
당해 기술 분야의 숙련된 자들에 의해 인지될 바와 같이, 각 메모리 블록은 전형적으로 물리적 메모리 위치들로 매핑되는 논리적 메모리 블록일 것이다. 당해 기술 분야의 숙련된 자들에 의해 또한 인지될 바와 같이, 컴포넌트의 메모리 자원들은 그 자체가 메모리일 필요는 없고, 임의의 데이터 저장 장치(레지스터들과 같은)일 수도 있다.
도 3은 컴포넌트(20)가 개시 컴포넌트로서 역할하는 경우에 메모리 매핑의 예시적인 한 예를 도시한 것이다. 구체적으로, 컴포넌트(50)의 로컬 어드레스 공간(58) 내의 메모리-매핑된 애퍼쳐(aperture)(58A)가 PIE 메모리 어드레스 공간(70) 내의 애퍼쳐(70A)로 매핑된다. 그러면 PIE 메모리 어드레스 공간의 애퍼쳐(70A)가 컴포넌트(20)의 시스템 메모리(38) 내의 애퍼쳐(38A)로 매핑된다. PIE 메모리 어드레스 공간(70)은 개시 및 목표 메모리 어드레스 공간들 간에 매핑을 용이하게 하는 가상 어드레스 공간(virtual address space)을 나타낸다. PIE 메모리 공간(70)은 메모리 매핑을 지원하기 위해 채용된 추상화(abstraction)이고, 어떠한 물리적 메모리 위치에도 해당하지 않는다. PIE 애퍼쳐(70A)를 통해 목표 컴포넌트의 메모리 애퍼쳐(58A)로부터 개시 컴포넌트의 메모리 애퍼쳐(38A)로의 매핑을 달성하기 위해 개시 컴포넌트(20)와 목표 컴포넌트(50) 모두는 PIE 메모리 공간(70)과 상호작용한다. 따라서, 컴포넌트(50)의 메모리(58)의 일정 어드레스는 컴포넌트(20)의 메모리(38)에서 서로 다른 어드레스를 가질 수 있고, PIE 메모리 공간(70)에서 또한 서로 다른 어드레스를 가질 수 있다.
메모리의 PIE 메모리 공간으로의 매핑은 AP(20)와 GMIC(50)에서 각각 구성 레지스터들(configuration registers)(90, 100)을 채용하는 임의의 적합한 방식으로 달성될 수 있다. 그러므로 개시 및 목표 컴포넌트들 간의 어드레스 변환 내지 메모리 매핑은 개시 컴포넌트 메모리(38)의 로컬 어드레스와 목표 컴포넌트의 목표 메모리(58)의 원격 어드레스 간에 변환하는 PIE 메모리 공간(70)을 통해 달성된다는 것은 자명할 것이다.
개시(즉, 로컬), 목표(즉, 원격), 또는 PIE 어드레스 공간들에서 어드레스 및 크기에 의해 정의되는 메모리 블록은 메모리 애퍼쳐(memory aperture)로 여겨질 수 있다. 각 애퍼쳐는 한 컴포넌트로부터 다른 것으로 매핑하는 연속된 메모리 어드레스들의 블록을 나타낸다.
도 1로 돌아가면, 장치(10)에 의해 채용되는 프로토콜은 점대점 버스(60)를 통해 AP(20)와 GMIC(50) 간의 연결을 개설하는데 이용된다. 그러면 PIE 프로토콜은 이 연결을 통해 하나 이상의 채널들과 각 채널 상에서 하나 이상의 애퍼쳐들을 개설하는데 이용될 수 있다. 더욱 구체적으로, 한 예로서, 도 4를 보면, 3개의 연결들(80A, 80B, 80C)이 네트워크 프로토콜의 계층들(L1, L2, L3)을 통하여 점대점 버스를 지나 AP(20) 및 GMIC(50) 사이에 개설될 수 있다. 계층(L4)은 각각의 컴포넌트에서 각각의 연결을 종단(terminate)시키는 포트를 개설할 수 있다. 구체적으로, 포트들(82A, 84A)은 각각 AP(20) 및 GMIC(50)에서 연결(80A)을 종단시킬 수 있는 반면, 포트들(82B, 84B)은 연결(80B)을 종단시킬 수 있고, 포트들(82C, 84C)은 연결(80C)을 종단시킬 수 있다. 이들 네트워크 연결 각각은 서로 다른 트래픽 클래스(traffic class)를 지원할 수 있다(즉, 각각의 연결은 대기시간(latency)과 같은 서로 다른 연결 파라미터들을 가질 수 있다). 그러면 AP(20)의 PIE 프로토콜은 노드(node)(86A, 86B, 86C)를 각각의 포트(각각 82A, 82B, 82C)와 연관시킬 수 있다. 비슷하게, GMIC(50)의 PIE 프로토콜은 노드(88A, 88B, 88C)를 각각의 포트(각각 84A, 84B, 84C)와 연관지을 수 있다. 로컬 컴포넌트가 링크를 지나 원격 컴포넌트의 메모리 자원들을 액세스하기 위하여, 로컬 컴포넌트의 노드는 개시 노드(initiator node)가 되고 원격 컴포넌트의 노드는 목표 노드(target node)가 된다. 따라서, 노드(예컨대, 노드 86A)는 개시 노드, 목표 노드(예컨대, 노드 86B) 또는 개시 및 목표 노드(예컨대, 노드 86C)일 수 있다. 개시 노드는 채널과 선택사항으로서 그 채널 내에 하나 이상의 애퍼쳐들을 설정하기 위하여 연결을 통해 목표 노드로 요청들을 보낼 수 있다. 구체적으로, 이하에서 더욱 완전히 서술되는 바와 같이, 개시 노드(예컨대, 노드 86C)는 채널(채널 90)과 애퍼쳐들을 설정하기 위하여 연결을 통해 구성 파라미터들을 갖는 트랜잭션 유닛들(TUs)을 보낼 수 있다. 그 TU들을 통해 수신된 구성 파라미터들은 구성 레지스터들(92, 94)에 저장된다. 따라서, 주어진 채널은 특정 개시 노드(예컨대, AP(20)의 노드 86C) 및 그와 관련된 특정 목표 노드(예컨대, GMIC(50)의 88C)를 가진다. 또한, 각각의 연결은 각각의 방향으로 하나의 채널을 가져서 최대 2개의 채널까지 지원할 수 있고, 따라서 단일의 연결 상에서 하나의 노드(예컨대, 노드 86C)는 하나의 채널 상에서 개시 노드로서 그리고 제2 채널 상에서 목표 노드로서 역할할 수 있다.
단일 채널 상에서 복수의 애퍼쳐들이 정의되는 경우에, 각각의 애퍼쳐들은 동일한 채널 파라미터들을 공유할 것이다.
이전에 시사된 바와 같이, 컴포넌트들 간의 통신은 개시 컴포넌트로부터 목표 컴포넌트로 전송하기 위해 트랜스포트 계층(L4)으로 전달되는 트랜잭션 유닛들(TUs)을 이용하여 PIE 프로토콜 계층(L5)에 의해 달성될 수 있다. 일반적으로, L5에서의 프로토콜 데이터 유닛(protocol data unit, PDU)은 메시지(Message)라고 지칭될 수 있고, 이는 물리 계층을 통해 전송되기 전에 복수의 세그먼트들(Segments)(즉, L4 PDU들), 패킷들(Packets)(즉, L3 PDU들) 및 프레임들(Frames)(즉, L2 PDU들)로 쪼개질 수 있다. PIE 메시지들은 트랜잭션 유닛들로 구성된다. 가능한 트랜잭션 유닛 포맷을 일반적으로 도시한 것이 도 5에 도시되어 있다. 트랜잭션 유닛(110)의 제1 바이트는 TU의 성질을 저장하기 위한 타입(Type)(112) 필드와 트랜잭션 식별자(transaction identifier)를 저장하기 위한 태그(TAG)(114) 필드로 나누어진다. 트랜잭션 유닛(110)의 나머지 부분은 트랜잭션 유닛(110)의 타입(112)에 따라 존재할 수도 있고 달라지는 선택적인 정보(115)로 구성된다. 예를 들면, 트랜잭션 유닛(110)가 확장 타입(extended type)이면 트랜잭션 유닛(110)의 선택적인 제2 바이트는 상기 TU의 성질을 저장하기 위한 Ext_Type 필드(116)에 해당할 수 있다.
타입 필드(112)는 트랜잭션 유닛(110)의 목적을 식별하는데 이용된다. 지원되는 트랜잭션 유닛 타입들은 표 1에서 열거된 것들을 포함할 수 있다.
트랜잭션 유닛 타입들
타입 ID 트랜잭션 유닛 타입
0000 WR 직접 쓰기 요청(Direct Write request)
0001 WRi 간접 쓰기 요청(Indirect Write request)
0010 RD 직접 읽기 요청(Direct Read request)
0011 RDi 간접 읽기 요청(Indirect Read request)
0100 ACK 쓰기 확인 응답(Write acknowledge response)
0101 Reserved
0110 RES 읽기 응답(Read response)
0111 Reserved
1000 WRc 구성 쓰기(Configuration write)
1001 REP 인터럽트 또는 보고(오류/상태) 요청
(Request Interrupt or Report(error/status))
1010 RDc 구성 읽기(Configuration read)
1011 SYNC 동기화 요청(Request synchronization)
1100 SYNC-ACK 동기화가 완료될 때 SYNC에 대한 응답
1101 REP-ACK REP에 대한 응답
1110 EXT-RSP EXT-REQ에 대한 응답
1111 EXT-REQ 확장 트랜잭션 요청
(Extended transaction request)
도 5의 Ext_Type(116) 필드는 확장 타입(즉, 표 1에서 타입=1110 또는 1111)의 트랜잭션 유닛들(110)에만 존재한다. Ext_Type(116) 필드가 존재함으로써 부가적인 트랜잭션 유닛 타입들이 이 필드에서 정의될 수 있다. 타입 필드(112)의 상기 구현은 예시적인 것이고, 만약 고유의 값이 트랜잭션 유닛의 타입을 식별하는데 이용된다면 다른 변형들도 이용될 수 있다. 예를 들면, 특정한 애플리케이션에서 바람직하다면, 더 많은 수의 트랜잭션 유닛 타입들이 더 큰 타입 필드에 의해 지원될 수 있다.
태그 필드(114)는 특정한 분할 트랜잭션(split transaction)에 관련된 TU들을 연관시키는데 이용된다. 선택사항으로서, 그것은 또한 트랜잭션들에 대한 순서를 유지할 수 있게 하는데 이용될 수 있다. 더욱 구체적으로, 네트워크 연결과 관련된 각 개시 노드에 태그 풀(tag pool), 예컨대 16개의 연속되는 값들이 할당된다. 그러면, 개시자가 직접 쓰기 요청(WR)과 같은 TU를 보내고 싶으면, 그 다음 이용가능한 태그가 그 TU의 태그 필드에 놓인다. 채널에 대한 구성 파라미터들 중 하나는 쓰기 요청들이 확인(acknowledge)되어야할 지 여부일 수 있다. 만일 쓰기 요청들이 확인되어야 한다면, 목표는 쓰기 확인 TU(즉, ACK)를 생성함으로써 상기 쓰기 요청 TU(즉, WR)에 응답할 것이며, 쓰기 확인 TU에 있어서 목표는 개시 TU에 삽입되었던 것과 동일한 태그 값을 삽입할 것이다. 개시자가 이 쓰기 확인 TU를 수신하면, 상기 태그 필드가 읽혀져 상기 TU를 상기 개시 TU에 대한 응답으로서 서로 관련시킨다. 태그 값은 개시 TU에 삽입된 후에 그 TU에 의해 개시된 트랜잭션의 완료시까지 그 사용이 유보된다(reserved). 트랜잭션은 전형적으로 개시 TU에 대한 응답이 수신될 때 완료된다.
표 1로부터 분명히 드러나는 것과 같이, 구성 쓰기(WRc)와 구성 읽기(RDc)는 2개의 정의된 유형의 TU들이다. WRc TU는 예컨대 채널 또는 채널 상의 애퍼쳐를 개설하기 위하여 개시자에 의해 목표에서의 구성 레지스터 값들을 설정하는데 이용된다. WRc TU의 특정 포맷은 도 6에 도시되어 있다. 이 도면을 보면, 표 1에서 제안된 바와 같이, WRc TU(110A)의 타입 필드(112A)는 1000으로 설정되고 태그 필드(114A)는 그 다음 이용가능한 태그 값으로 설정된다. WRc TU는 파라미터 값 필드 (118AC)의 길이를 가리키는 길이(Length) 필드(118AA)를 가진다. 이는 상기 TU의 목표가 파라미터 값 필드(및 상기 TU)의 끝을 구별할 수 있게 한다. 또 다른 실시예에서, 길이 필드는 TU의 끝 부분에 삽입되는 TU의 끝 마커(end of TU marker)에 의해 대체될 수 있다. 상기 트랜잭션 유닛의 나머지 부분은 어느 구성 파라미터가 WRc TU에 의해 수정되어야할 지를 식별시키는 4 바이트의 파라미터 필드(118AB)(파라미터 ID와 함께)와, 저장될 구성 파라미터의 값을 나타내는 파라미터 값 필드(118AC)를 포함한다. WRc TU에 대한 응답으로, 쓰기 확인 트랜잭션 유닛(ACK TU)이 목표에 의해 생성될 수 있다. ACK TU는 단지 타입과 태그만을 포함한다.
구성 파라미터들의 값은 구성 읽기 요청 트랜잭션 유닛(RDc TU)을 이용하여 액세스될 수 있다. RDc TU는 파라미터 값 필드가 없다는 것을 제외하고 WRc TU와 동일한 포맷을 가진다. RDc TU의 파라미터 필드는 어느 파라미터 값이 반환되어야 하는지를 표시하는 작용을 하는 파라미터 ID를 가지고, 길이 필드는 반환되어야 할 파라미터의 길이를 표시한다. RDc TU에 대한 응답으로, 목표는 의도된 파라미터 값들을 포함하여 타입, 태그 및 길이 필드들로 구성된 읽기 응답(RES) TU를 반환한다.
구성 읽기 요청들은 컴포넌트들 간에 통신 레벨을 제공하는데 이용될 수 있다. 예를 들면, 특정 파라미터 ID는 컴포넌트의 제조자를 식별하기 위해 그 사용이 유보될 수 있고, 또 다른 파라미터 ID는 컴포넌트의 모델을 식별하기 위해 그 사용이 유보될 수 있다. 개시 컴포넌트는 서로 다른 특정 컴포넌트들을 서로 다른 능력들과 연관시키는 데이터베이스(database)를 가질 수 있다. 그러므로, 목표 컴포넌트를 식별함으로써, 개시 컴포넌트가 목표 컴포넌트의 메모리 자원들을 더욱 효율적으로 이용하는 데 있어서 도움이 되는 목표 컴포넌트의 능력들을 알게 될 수 있다. 또한, 연결을 개설한 후 특정 예들에서, 구성 읽기 및 쓰기들을 이용한 컴포넌트들 간의 하위 레벨 통신들이 필요한 모든 것일 수 있다. 이러한 예들에서는, 컴포넌트들 간에 어떠한 채널도 개설될 필요가 없다.
직접 쓰기 트랜잭션 유닛(WR TU)의 특정 포맷이 도 7에 도시되어 있다. 이 도면을 참조하면, WR TU(110B)는 표 1에 따라 0000으로 설정되는 타입 필드(112B)를 가진다. WR TU는 또한 WRc TU와 유사하게 태그 필드(114B)와 길이 필드(118BA)를 가진다. 어드레스 필드(118BB)는 쓰기 동작이 시작되어야 할 베이스 어드레스(base address)를 저장하기 위한 32-비트 필드이다. (앞서 언급된 바와 같이, 이 베이스 어드레스는 PIE 공간 안에 있고 목표에서는 또 다른 어드레스로 매핑될 수 있다. 또한, 상기 베이스 어드레스는 직접 읽기 및 쓰기 요청들을 위한 기정의된 메모리 애퍼쳐 내에 놓일 것이다.) 데이터 필드(118BC)는 쓰기가 될 데이터 블록을 저장하기 위한 것이다. 길이 필드의 값은 데이터 필드의 길이를 가리킨다. 데이터 필드의 길이는 8-비트의 길이 필드에 의해 표현되므로 데이터 필드의 최대 길이는 256 바이트라는 것은 당해 기술 분야의 숙련된 자들에 의해 인지될 것이다. 대체가능한 실시예들은 더 큰 데이터 블록들을 위해 더 큰 길이 필드나 확장 타입 TU를 활용할 수 있다.
WR TU를 목표 컴포넌트에서 수신하면, 어드레스 필드의 어드레스가 PIE 어드레스 공간(70, 도 3)으로부터 목표 어드레스 공간 내의 어드레스로 변환된다. 직접 쓰기 요청 트랜잭션 유닛(110B)에 대한 응답으로, WRc TU들의 논의와 관련하여 전술된 바와 같이, 쓰기 확인 트랜잭션 유닛이 목표 컴포넌트에 의해 생성되고(동일한 태그 필드 값을 이용하여) 개시 컴포넌트로 전송될 수 있다.
직접 읽기 트랜잭션 유닛들(RD TUs)에 대한 트랜잭션 유닛 포맷은 직접 읽기 요청 트랜잭션 유닛이 데이터 필드를 갖지 않을 것이라는 점을 제외하고 위에서 서술된 직접 쓰기 트랜잭션 유닛들에 대한 포맷과 동일할 수 있다. RD TU에서, 길이 필드의 값은 반환될 데이터 블록의 길이를 가리킬 것이다. 직접 읽기 요청에 대한 응답으로, RES TU가 목표에 의해 생성될 수 있다.
간접 읽기 및 쓰기 요청들도 또한 데이터 스트리밍 애플리케이션들(data streaming applications)을 위해 지원될 수 있다. 간접 요청들을 위해, 개시자는 채널을 개설하고, 간접 읽기 요청들을 위한 메모리 애퍼쳐를 생성하기 위해 베이스 어드레스와 길이를 그리고 간접 쓰기 요청들을 위한 메모리 애퍼쳐를 생성하기 위해 베이스 어드레스와 길이를 구성하도록 구성 TU들을 보낼 수 있다. 간접 베이스 어드레스들은 PIE 어드레스 공간 안에 있다. 간접 쓰기 요청(WRi) 트랜잭션 유닛(110C)의 특정 포맷이 도 8에 도시되어 있다. TU(110C)는 0001의 값을 갖는 타입 필드, 태그 필드(114C), 길이 필드(118CA), 및 데이터 필드(118CB)를 가진다. 목표가 이러한 TU를 수신하면, 목표의 구성 레지스터에 저장된 간접 쓰기 베이스 어드레스가 매핑되는 어드레스에서 시작하는 메모리로 데이터 필드의 데이터 블록을 쓴다. 목표는 또한 이 레지스터의 어드레스를 증분(increment)만큼 증가시키며, 따라서 업데이트된 어드레스는 채널 상에서 그 다음의 간접 쓰기에 이용될 것이다. (만일 간접 쓰기가 간접 쓰기들을 위한 애퍼쳐의 끝을 지나 연장되면, 간접 쓰기는 그 애퍼쳐의 시작으로 다시 돌아간다.) 간접 읽기 TU(RDi TU)는 데이터 필드가 없다는 것을 제외하고 WRi TU와 동일한 포맷을 가진다. 이들 간접 요청들은 어드레스 정보를 전송하는 오버헤드(overhead)를 발생시키지 않고 연속적인 읽기 및 쓰기 동작들을 가능하게 한다.
만일 채널이 확인응답(acknowledgement)을 하도록 구성된다면, 간접 쓰기 트랜잭션 유닛에 대한 응답으로, 목표는 ACK TU로 응답할 것이다. 또한, 위에서 논의된 바와 같이, RES TU가 간접 쓰기 트랜잭션에 대한 응답으로 발생될 것이다.
벌크 쓰기(bulk write) 트랜잭션 유닛(110D)이 확장 트랜잭션 유닛의 한 예로서 도 9에 나타나 있다. 타입 필드(112D)는 본 트랜잭션 유닛이 확장 트랜잭션 유닛이라는 것을 가리키는 1111의 값을 가지고, 특정 타입은 Ext_Type 필드(116D)에 의해 식별된다. 트랜잭션 유닛은 태그 필드(114D)를 가진다. 길이 필드(118DA)는 쓰여질 데이터 필드(118DC)의 길이를 바이트들로 나타내고, 더 큰 데이터 블록들을 위해 16-비트 필드로 나타내어 진다. 어드레스(118DB)는 쓰기를 할 시작 어드레스를 가리킨다. 벌크 쓰기 트랜잭션 유닛(110D)은 더 큰 데이터 블록들이 컴포넌트들 간에 전송될 필요가 있는 경우에 장점이 있다. 벌크 쓰기 트랜잭션 유닛에 대한 응답으로, ACK TU가 생성될 수 있다.
벌크 읽기(bulk read) TU가 벌크 읽기 기능을 제공하기 위해 또한 채용될 수 있다. 이 TU는 직접 읽기 요청과 동등한 확장 타입이다. 이 TU에 대한 응답으로, 목표는 요청된 데이터를 포함하고, 표 1에서 표시된 바와 같이 그 타입이 EXT_RSP이고 전용 Ext_Type를 가지는 벌크 읽기 응답 TU를 발생시킬 것이다.
REP TU는 하드웨어 인터럽트(hardware interrupt) 및 다른 오류 보고 기능(error reporting function)들과 유사한 기능을 제공하기 위해 지원될 수 있다. REP TU는 타입, 태그, 길이, 코드(code) 및 다른 선택적인 데이터 필드들을 가질 수 있다. 코드 필드는 상기 TU가 인터럽트 요청(interrupt request)인지를 표시하고, 아니라면 오류의 성질을 표시한다. 마지막으로, REP TU는 다양한 가능한 유형들의 보고와 밀접한 관련이 있는 데이터를 위한 데이터 필드를 가질 수 있다. REP TU에 대한 응답으로, 인터럽트나 에러 보고 메카니즘의 성공이나 실패를 확인하고 표시하기 위해 REP-ACK TU가 수신자에 의해 발생될 수 있다.
SYNC TU는 재동기화(resynchronization)에 이용되고, 타입과 태그 필드로 구성된다. 예를 들면, TU들이 비순차적인(out-of-order) 태그 값들을 가지고 목표에 도착하면, 목표는 개시자에게 오류를 보고하기 위해 REP TU로 호소할 수 있다. 그러면 개시자는 SYNC TU를 이용하여 재동기화할 것이다. 이는 양측에서 태그 값들을 재설정(reset)한다. SYNC TU에 대한 응답으로, 목표는 SYNC-ACK를 발생시키고, 개시자는 그러면 정상적인 동작을 재개할 수 있으며, 태그 풀에서 첫 번째 값을 가지는 태그로 첫 번째 TU를 시작한다.
채널은 직접 및 간접 어드레싱 요청들(addressing requests) 모두를 검출하고 그에 응답하도록 구성될 수 있다. 직접 요청들에 대해 응답하도록 구성되는 복수의 애퍼쳐들(보통 PIE 어드레스 공간에서 겹치지 않는)이 각 채널 내에 존재할 수 있다. 모든 애퍼쳐는 속성들(attributes)의 세트를 가지고, 개별적으로 구성될 수 있는 베이스 어드레스, 길이 레지스터들 및 보안을 위한 액세스 제어 레지스터와 같은 레지스터들의 세트를 가진다. 또한, 모든 채널은 간접 읽기 동작들을 위한 베이스 어드레스 및 길이 레지스터와 간접 쓰기 동작들을 위한 또 다른 베이스 어드레스 및 길이 레지스터를 지원할 수 있다.
전술된 바와 같이, 개시 컴포넌트는 채널 및 그 채널 상에서 하나 이상의 애퍼쳐들을 개설하기 위하여 목표의 구성 레지스터들로 구성 파라미터들을 쓰도록 하는 WRc TU들을 보낼 수 있다. 특정 구성 파라미터들은 CONNECTION_ID 파라미터(특정한 네트워크 연결에 ID(identity)를 부여하고, 그러면 하나 또는 두 채널들은 특정한 CONNECTION_ID와 연관되어질 수 있음), ENABLE_WR_ACK 파라미터(각 채널에 대하여 목표에 의해 수신된 직접 쓰기 TU들이 확인되어야하는지를 선택적으로 요구함, 유사한 파라미터가 간접 쓰기 요청 TU들의 확인응답을 가능하게 하는데 이용될 수 있음), Rdi_BASE_ADDRESS(첫번째(또는 그 다음) 간접 읽기가 수행될 PIE 어드레스 공간의 베이스 어드레스를 특정함, 유사한 파라미터가 각 채널에 대하여 첫번째 간접 쓰기를 위한 어드레스를 특정할 수 있음), APERTURE_BASE 파라미터(채널 내에서 애퍼쳐의 베이스 어드레스(PIE 어드레스 공간의 어드레스)를 특정함), APERTURE_LENGTH 파라미터(애퍼쳐 크기를 특정함) 를 포함할 수 있다.
대체가능한 것으로, 각 컴포넌트는 시동(start-up) 후에 그 자체의 구성 레지스터들을 디폴트(default) 또는 다른 특정 값들로 설정할 수 있고, 그들 값은 임의의 메모리 공유 트랜잭션을 개시하기 전에 개시 컴포넌트에 의해 읽혀질 수 있다(RDc TU들을 이용하여). 또한, 이러한 예에서, 개시 컴포넌트는 이들 구성 파라미터들 중 임의의 것을 재설정하기 위해 WRc TU들을 보낼 수 있다(목표의 글로벌 구성(global configuration)에서 Remote_Config_Blocked 파라미터가 원격 구성을 방지하도록 설정되지 않았다면).
PIE 프로토콜은 일반적인 프로토콜이고 PIE 프로토콜을 지원할 수 있는 둘 이상의 컴포넌트들 간에 다양한 맥락으로 구현될 수 있다. 예를 들면, 서술된 바와 같이, PIE 프로토콜은 점대점 네트워크를 통해 연결되는 애플리케이션 프로세서(AP)와 그래픽 프로세서(GMIC) 간에 구현될 수 있다. 대체가능한 것으로, 상기 프로토콜은 공유 네트워크 버스나 스위치에 의해 서로 연결되는 3개 이상의 서로 다른 컴포넌트들을 통해 구현될 수 있다.
PIE 프로토콜을 구현하는 장치의 각 컴포넌트는 어떤 기능을 수행하기 위한 요소들의 집합일 수 있고, 또는 단일의 집적 회로일 수 있다.
다른 변경들이 당해 기술 분야의 숙련된 자들에게 자명할 것이므로, 본 발명은 특허 청구 범위에서 정의된다.

Claims (28)

  1. (i) 복수의 프로세싱 컴포넌트들(processing components)과 (ii) 상기 복수의 컴포넌트들을 상호연결하는 버스(bus)를 갖는 장치에 있을 때 메모리-매핑된 자원들(memory-mapped resources)에 액세스(access)할 필요가 있는 개시 컴포넌트(initiating component)를 동작시키는 방법으로서:
    메모리-매핑된 자원들에 액세스할 필요가 있는 상기 개시 컴포넌트로부터 메모리-매핑된 자원들을 갖는 상기 장치의 목표 컴포넌트(target component)에 채널을 개설하기 위하여 복수의 트랜잭션 유닛들(transaction units)("TU들")을 상기 버스 상의 연결을 통해 보내는 단계와;
    상기 복수의 TU들은 하나 이상의 구성 TU들(configuration transaction units)을 포함하고, 구성 TU 각각은 상기 채널에 대한 구성 파라미터(configuration parameter)를 갖고;
    상기 채널을 통해 상기 개시 컴포넌트로부터 상기 목표 컴포넌트에 메모리 액세스 요청 TU를 보내는 단계를 포함하고, 상기 메모리 액세스 요청 TU는 메모리 액세스 요청을 갖는 것을 특징으로 하는 방법.
  2. 제1항에 있어서,
    상기 개시 컴포넌트의 서브-컴포넌트(sub-component)로부터 상기 개시 컴포넌트의 버스 프로토콜에 따른 서브-컴포넌트 메모리 액세스 요청을 수신하는 단계와, 상기 서브-컴포넌트 메모리 액세스 요청으로부터 상기 메모리 액세스 요청 TU를 편성하는(formulating) 단계를 더 포함하는 것을 특징으로 하는 방법.
  3. 제1항에 있어서,
    TU 각각의 타입 필드(type field)에 TU 각각에 대한 트랜잭션 타입을 표시하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  4. 제3항에 있어서,
    상기 타입 필드는 읽기 요청(read request)을 표시하는 것을 특징으로 하는 방법.
  5. 제4항에 있어서,
    상기 읽기 요청은 직접 읽기 요청(direct read request) 및 간접 읽기 요청(indirect read request) 중 하나인 것을 특징으로 하는 방법.
  6. 제5항에 있어서,
    상기 읽기 요청은 메모리 읽기 요청 및 구성 파라미터 읽기 요청 중 하나인 것을 특징으로 하는 방법.
  7. 제3항에 있어서,
    상기 타입 필드는 쓰기 요청을 표시하는 것을 특징으로 하는 방법.
  8. 제7항에 있어서,
    상기 쓰기 요청은 직접 쓰기 요청 및 간접 쓰기 요청 중 하나인 것을 특징으로 하는 방법.
  9. 제8항에 있어서,
    상기 쓰기 요청은 메모리 쓰기 요청 및 구성 파라미터 쓰기 요청 중 하나인 것을 특징으로 하는 방법.
  10. 제3항에 있어서,
    상기 TU 각각의 태그 필드(tag field)에 태그를 포함시키는 단계를 더 포함하는 것을 특징으로 하는 방법.
  11. 제10항에 있어서,
    상기 태그와 동등한(equivalent) 태그를 갖는 상기 채널 상에서 응답 TU(response TU)를 상기 개시 컴포넌트에서 모니터링(monitor)하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  12. 제11항에 있어서,
    상기 메모리 요청 TU는 쓰기 요청을 표시하고, 상기 응답 TU의 상기 타입 필드는 확인 응답(acknowledgement)을 표시하는 것을 특징으로 하는 방법.
  13. 제11항에 있어서,
    상기 메모리 요청 TU는 읽기 요청을 표시하고, 상기 응답 TU의 상기 타입 필드는 읽기 응답을 표시하는 것을 특징으로 하는 방법.
  14. 제3항에 있어서,
    구성 TU이거나 메모리 액세스 요청 TU인 주어진 TU 각각에 대하여, 상기 주어진 TU의 길이 필드(length field)에 상기 주어진 TU의 페이로드(payload)의 길이를 포함시키는 단계를 더 포함하는 것을 특징으로 하는 방법.
  15. 제2항에 있어서,
    상기 서브-컴포넌트 메모리 액세스 요청으로부터 상기 메모리 액세스 요청 TU를 편성하는 단계는 로컬 어드레스 공간(local address space)과 인터페이스 메모리 어드레스 공간(interface memory address space) 사이에서 매핑(mapping)하는 것을 포함하고, 상기 하나 이상의 구성 TU들을 보내는 단계는 상기 목표 컴포넌트에서 상기 인터페이스 메모리 어드레스 공간과 로컬 어드레스 공간 사이에서 매핑할 수 있게 하는 구성 값들을 갖는 구성 TU들을 보내는 것을 포함하는 것을 특징으로 하는 방법.
  16. 제15항에 있어서,
    상기 하나 이상의 구성 TU들을 보내는 단계는 인터페이스 메모리 어드레스 공간의 시작 어드레스를 표시하는 구성 값 및 길이를 표시하는 구성 값을 갖는 구성 TU를 보내는 것을 포함하는 것을 특징으로 하는 방법.
  17. 제16항에 있어서,
    상기 시작 메모리 어드레스는 간접 읽기 또는 간접 쓰기 요청들 중 하나를 위한 시작 메모리 어드레스이고, 상기 길이는 상기 간접 읽기 또는 간접 쓰기 요청들 중 하나를 위한 메모리 애퍼쳐(memory aperture)에 대한 길이인 것을 특징으로 하는 방법.
  18. 제16항에 있어서,
    상기 시작 메모리 어드레스는 직접 쓰기 및 읽기 요청들을 위한 상기 인터페이스 메모리 어드레스 공간의 메모리 애퍼쳐에 대한 시작 메모리 어드레스이고, 상기 길이는 상기 애퍼쳐의 길이인 것을 특징으로 하는 방법.
  19. 제1항에 있어서,
    상기 채널은 제1 채널이고 상기 복수의 TU들은 상기 제1 채널을 개설하기 위한 복수의 제1 TU들이고, 상기 제1 채널은 상기 개시 컴포넌트로부터 상기 목표 컴포넌트에 메모리 액세스 요청들을 보내기 위함이고, 상기 방법은 상기 연결을 통해 제2 채널을 개설하기 위한 복수의 제2 채널들을 보내는 단계를 더 포함하고, 상기 제2 채널은 상기 목표 컴포넌트로부터 상기 개시 컴포넌트에 메모리 액세스 요청들을 보내기 위함인 것을 특징으로 하는 방법.
  20. 복수의 컴포넌트들을 갖는 장치와 상기 복수의 컴포넌트들 각각에 물리적 연결을 갖는 버스에서의 사용을 위한 제1 컴포넌트에 있어서:
    제1 프로세서와;
    상기 제1 컴포넌트가 상기 버스에 물리적 연결을 갖도록 상기 버스에 연결하기 위한 커넥터(connector);를 포함하고
    상기 제1 프로세서는:
    상기 버스상의 연결을 통해 복수의 트랜잭션 유닛들("TU들")을 제2 컴포넌트에 보내고, 상기 제2 컴포넌트는 채널을 개설하기 위해 상기 버스에 물리적 연결을 갖고, 상기 제2 컴포넌트는 프로세서 및 메모리를 갖는 타입이고, 상기 복수의 TU들은 하나 이상의 구성 TU들을 포함하고, 상기 구성 TU 각각은 상기 채널에 대한 구성 파라미터를 갖고;
    상기 채널을 통해 상기 제2 컴포넌트에 메모리 액세스 요청 TU를 보내도록 동작 가능하며, 상기 메모리 액세스 요청 TU는 메모리 액세스 요청을 갖는 것을 특징으로 하는 제1 컴포넌트.
  21. 제20항에 있어서,
    상기 제1 프로세서는 또한 상기 제1 컴포넌트의 내부 버스 프로토콜에 따른 메모리 액세스 요청을 상기 메모리 액세스 요청 TU로 변환하도록 동작가능한 것을 특징으로 하는 제1 컴포넌트.
  22. 제21항에 있어서,
    상기 제1 컴포넌트의 내부 버스 프로토콜에 따른 상기 메모리 액세스 요청을 상기 메모리 액세스 요청 TU로 변환함에 있어서, 상기 제1 프로세서는 상기 제1 컴포넌트에서의 로컬 어드레스 공간과 인터페이스 메모리 어드레스 공간 사이에 매핑하고, 상기 하나 이상의 구성 TU들을 보냄에 있어서, 상기 제1 프로세서는 또한 상기 제2 컴포넌트에서의 상기 인터페이스 메모리 어드레스 공간과 로컬 어드레스 공간 사이에 매핑할 수 있게 하는 구성 값들을 갖는 구성 TU들을 보내도록 동작 가능한 것을 특징으로 하는 제1 컴포넌트.
  23. 제22항에 있어서,
    상기 제1 프로세서는 각각의 상기 구성 TU가 구성 TU임을 표시하는 타입 필드를 갖는 각각의 상기 구성 TU를 만들고; 그리고
    상기 메모리 액세스 요청 TU가 메모리 액세스 요청 TU임을 표시하는 타입 필드를 갖는 상기 메모리 액세스 요청 TU를 만들도록 더 동작 가능한 것을 특징으로 하는 제1 컴포넌트.
  24. 복수의 프로세싱 컴포넌트들을 갖는 장치에서 메모리-매핑된 자원들의 공유를 용이하게 하기 위한 방법으로서:
    메모리-매핑된 자원들에 액세스할 필요가 있는 상기 장치의 개시 컴포넌트로부터 상기 장치의 목표 컴포넌트에 채널을 개설하기 위하여 복수의 트랜지션 유닛들("TU들")을 보내는 단계와, 상기 목표 컴포넌트는 상기 장치의 상기 복수의 컴포넌트들을 상호연결하는 버스 상의 연결을 통해 메모리-매핑된 자원들을 갖고;
    상기 복수의 TU들은 하나 이상의 구성 TU를 포함하고, 구성 TU 각각은 상기 채널에 대한 구성 파라미터를 갖고,
    상기 채널을 통해 상기 개시 컴포넌트로부터 상기 목표 컴포넌트로 메모리 액세스 요청 TU를 보내는 단계를 포함하며, 상기 메모리 액세스 요청 TU는 메모리 액세스 요청을 갖는 것을 특징으로 하는 방법.
  25. 제24항에 있어서,
    상기 개시 컴포넌트의 서브-컴포넌트로부터 상기 개시 컴포넌트의 버스 프로토콜에 따른 서브-컴포넌트 메모리 액세스 요청을 수신하는 단계와, 상기 서브-컴포넌트 메모리 액세스 요청으로부터 상기 메모리 액세스 요청 TU를 편성하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  26. 제25항에 있어서,
    상기 목표 컴포넌트에서 상기 메모리 액세스 요청 TU를 수신하는 단계와, 상기 목표 컴포넌트의 버스 프로토콜에 따른 로컬 메모리 액세스 요청을 편성하기 위해 상기 메모리 액세스 요청 TU로부터 값들을 추출하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  27. 제25항에 있어서,
    상기 메모리 액세스 요청 TU를 수신하는 것에 응답하여 상기 목표 컴포넌트로부터 상기 개시 컴포넌트에 응답 TU를 보내는 단계를 더 포함하는 것을 특징으로 하는 방법.
  28. 복수의 컴포넌트들을 갖는 장치로서:
    제1 프로세서를 갖는 제1 컴포넌트와;
    제2 프로세서 및 메모리를 갖는 제2 컴포넌트와;
    버스; 를 포함하고,
    상기 제1 컴포넌트 및 상기 제2 컴포넌트는 상기 버스에 물리적 연결을 갖고;
    상기 제1 프로세서는:
    채널을 개설하기 위해 상기 버스 상의 연결을 통해 상기 제2 컴포넌트에 복수의 트랜잭션 유닛들("TU들")을 보내고, 상기 복수의 TU들은 하나 이상의 구성 TU들을 포함하고, 구성 TU 각각은 상기 채널에 대한 구성 파라미터를 갖고;
    상기 채널을 통해 상기 제2 컴포넌트에 메모리 액세스 요청 TU를 보내도록 동작 가능하고, 상기 메모리 액세스 요청 TU는 메모리 액세스 요청을 갖는 것을 특징으로 하는 장치.
KR1020117016806A 2009-01-21 2010-01-20 장치의 컴포넌트들 간에 메모리 자원들을 공유하기 위한 통신 프로토콜 KR101559089B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/356,898 2009-01-21
US12/356,898 US7895380B2 (en) 2009-01-21 2009-01-21 Communication protocol for sharing memory resources between components of a device

Publications (2)

Publication Number Publication Date
KR20110110199A KR20110110199A (ko) 2011-10-06
KR101559089B1 true KR101559089B1 (ko) 2015-10-08

Family

ID=42337851

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117016806A KR101559089B1 (ko) 2009-01-21 2010-01-20 장치의 컴포넌트들 간에 메모리 자원들을 공유하기 위한 통신 프로토콜

Country Status (6)

Country Link
US (1) US7895380B2 (ko)
EP (1) EP2389632B1 (ko)
JP (1) JP5624997B2 (ko)
KR (1) KR101559089B1 (ko)
CN (1) CN102292714B (ko)
WO (1) WO2010083596A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180131836A (ko) 2017-06-01 2018-12-11 한국전자통신연구원 파라미터 서버 및 그것에 의해 수행되는 분산 딥러닝 파라미터 공유 방법
KR20200107124A (ko) 2019-03-06 2020-09-16 한국전자통신연구원 이종 클러스터 기반의 분산 딥러닝 방법 및 이를 위한 장치

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101857791B1 (ko) * 2011-08-30 2018-05-16 삼성전자주식회사 컴퓨팅 시스템, 및 상기 컴퓨팅 시스템을 동작하기 위한 방법
CN103294710B (zh) * 2012-02-28 2016-08-31 北京新媒传信科技有限公司 一种数据存取方法和装置
KR101424568B1 (ko) * 2012-10-12 2014-08-01 (주)티베로 트랜잭션 재시작 가능한 클라이언트 장치와 데이터베이스 서버 및 방법
CN105190576A (zh) * 2013-03-28 2015-12-23 惠普发展公司,有限责任合伙企业 共享的存储器系统
KR101915944B1 (ko) * 2017-05-08 2018-11-08 주식회사 애포샤 클러스터 시스템에서의 클라이언트 요청 처리 방법, 상기 클라이언트 요청에 따른 입출력 처리 방법 및 장치

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7346078B2 (en) 2002-05-15 2008-03-18 Broadcom Corporation Processing of received data within a multiple processor device

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6014710A (en) * 1997-06-30 2000-01-11 Sun Microsystems, Inc. System and method for message transmission between network nodes using remote wires
JP2001175631A (ja) * 1999-12-17 2001-06-29 Mitsubishi Electric Corp Cpuカード及びデータ通信方法
US6633296B1 (en) 2000-05-26 2003-10-14 Ati International Srl Apparatus for providing data to a plurality of graphics processors and method thereof
JP2002215480A (ja) * 2001-01-15 2002-08-02 Sony Corp マルチプロセッサ・システム及びマルチプロセッサ・システムにおけるデータ通信制御方法
EP1421501B1 (en) * 2001-08-24 2006-08-02 Intel Corporation A general intput/output architecture, protocol and related methods to implement flow control
JP2003198356A (ja) * 2001-12-25 2003-07-11 Hitachi Ltd 半導体チップおよび集積回路
US7340553B2 (en) * 2003-03-12 2008-03-04 Nxp B.V. Data processing device and method for transferring data
US7949794B2 (en) * 2006-11-02 2011-05-24 Intel Corporation PCI express enhancements and extensions
US7562176B2 (en) * 2007-02-28 2009-07-14 Lsi Corporation Apparatus and methods for clustering multiple independent PCI express hierarchies

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7346078B2 (en) 2002-05-15 2008-03-18 Broadcom Corporation Processing of received data within a multiple processor device

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
HyperTransport I/O Link Specification - Revision 3 10 (HyperTransport Technology Consortium) 23 July 2008 (23-07-2008)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180131836A (ko) 2017-06-01 2018-12-11 한국전자통신연구원 파라미터 서버 및 그것에 의해 수행되는 분산 딥러닝 파라미터 공유 방법
US10990561B2 (en) 2017-06-01 2021-04-27 Electronics And Telecommunications Research Institute Parameter server and method for sharing distributed deep learning parameter using the same
US11487698B2 (en) 2017-06-01 2022-11-01 Electronics And Telecommunications Research Institute Parameter server and method for sharing distributed deep learning parameter using the same
KR20200107124A (ko) 2019-03-06 2020-09-16 한국전자통신연구원 이종 클러스터 기반의 분산 딥러닝 방법 및 이를 위한 장치

Also Published As

Publication number Publication date
US7895380B2 (en) 2011-02-22
KR20110110199A (ko) 2011-10-06
US20100185800A1 (en) 2010-07-22
JP2012515960A (ja) 2012-07-12
WO2010083596A1 (en) 2010-07-29
EP2389632A1 (en) 2011-11-30
JP5624997B2 (ja) 2014-11-12
CN102292714A (zh) 2011-12-21
EP2389632B1 (en) 2016-08-10
EP2389632A4 (en) 2013-11-13
CN102292714B (zh) 2016-01-06

Similar Documents

Publication Publication Date Title
KR101559089B1 (ko) 장치의 컴포넌트들 간에 메모리 자원들을 공유하기 위한 통신 프로토콜
JP5416767B2 (ja) グラフィックスマルチメディアic及びその動作の方法
JP4670676B2 (ja) スイッチ及びネットワークブリッジ装置
US8407367B2 (en) Unified connector architecture
WO2008018485A1 (fr) Commutateur pour une interconnexion, et système
KR20030087025A (ko) Ngio/infiniband 어플리케이션용 리모트 키검증을 위한 방법 및 메커니즘
CN106534178B (zh) RapidIO网络通用套接字的实现系统及方法
WO2002041156A2 (en) Method and apparatus for synchronizing interrupts in a message passing queue oriented bus system
CN105051706A (zh) 用于具有pcie协议栈的低功率phy的操作的设备、方法和系统
WO2013136522A1 (ja) 計算機システム及び計算機間のデータ通信方法
CN107819659B (zh) 一种基于spi的智能级联通信网络
US7020723B2 (en) Method of allowing multiple, hardware embedded configurations to be recognized by an operating system
CN106330787B (zh) 一种数据包传输方法、设备及系统
CN107168909A (zh) 转接设备、远程通信系统、数据传输方法及装置
CN113852656A (zh) 一种数据传输方法、处理器系统及内存访问系统
JP5110156B2 (ja) スイッチ及びネットワークブリッジ装置
KR101197294B1 (ko) QoS 및 전송 효율 개선을 위한 SoC 기반 시스템 네트워크에서의 인터페이스 장치의 통신방법
CN113228567A (zh) 一种信息处理的方法、装置和信息处理系统
CN207676336U (zh) 转接设备、远程通信系统
CN113645258A (zh) 数据传输方法、装置、存储介质、处理器及电子设备
CN108701103B (zh) 具有工作存储器的计算单元的存储器直接访问控制装置
CN112988633A (zh) 一种电子设备及数据传输方法
JPH1196106A (ja) デバイスドライバ装置
CN115344382A (zh) 一种多机设备资源共享重组方法及系统
CN113014631A (zh) 基于Hlink的设备缓存推送系统及方法

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated 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: 20180918

Year of fee payment: 4