KR101699781B1 - 시스템 온 칩 및 그것의 데이터 중재 방법 - Google Patents
시스템 온 칩 및 그것의 데이터 중재 방법 Download PDFInfo
- Publication number
- KR101699781B1 KR101699781B1 KR1020100102008A KR20100102008A KR101699781B1 KR 101699781 B1 KR101699781 B1 KR 101699781B1 KR 1020100102008 A KR1020100102008 A KR 1020100102008A KR 20100102008 A KR20100102008 A KR 20100102008A KR 101699781 B1 KR101699781 B1 KR 101699781B1
- Authority
- KR
- South Korea
- Prior art keywords
- master device
- data
- response data
- arbitration
- reorder buffer
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4208—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a system bus, e.g. VME bus, Futurebus, Multibus
- G06F13/4217—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a system bus, e.g. VME bus, Futurebus, Multibus with synchronous protocol
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0038—System on Chip
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
Abstract
본 발명에 따른 시스템 온 칩은, 마스터 장치, 상기 마스터 장치의 요청에 응답하여 데이터를 공급하는 복수의 슬레이브 장치들, 그리고 상기 복수의 슬레이브 장치들로부터 전달되는 복수의 응답 데이터들을 상기 마스터 장치가 요청한 순서에 따라 상기 마스터 장치에 제공하는 인터커넥터를 포함하되, 상기 인터커넥터는 상기 요청 데이터를 상기 마스터 장치의 동작 특성에 따른 우선순위로 중재한다.
Description
본 발명은 반도체 장치에 관한 것으로, 좀 더 구체적으로는 시스템 온 칩 및 그것의 데이터 중재 방법에 관한 것이다.
컴퓨터, 통신, 방송 등이 점차 통합되는 컨버전스(Convergence)화에 따라, 기존 ASIC(Application Spcific IC: 주문형 반도체)와 ASSP(Application Spcific Standard Product: 특정용도 표준제품)의 수요가 시스템 온 칩(System on Chip: 이하, SoC)로 변환되어 가고 있는 추세이다. 또한, IT 기기들의 경박 단소화 및 고기능화 추세도 SoC 산업을 촉진시키는 요인이 되고 있다.
SoC는 기존의 여러 가지 기능을 가진 복잡한 시스템을 하나의 칩으로 구현한 기술 집약적 반도체 기술이다. SoC의 고기능화, 고성능화를 위한 연구에 있어서, 칩내에 형성되는 여러 지능 소자(Intellectual Property: 이하, IP)들의 효과적인 연결이 매우 중요한 이슈(Issue)로 대두되고 있다. 일반적으로, IP들을 상호 연결하기 위한 인터커넥터 기술로는 버스(Bus)를 기반으로 한 연결 방식이 주를 이루고 있다.
한편, SoC내의 IP들의 연결 및 관리를 위한 표준 버스 규격으로서 ARM사의 AMBA(Advanced Microcontroller Bus Achitecture)가 있다. AMBA의 버스 타입으로는 AHB(Advanced High-Performance Bus), APB(Advanced Peripheral Bus), AXI(Advanced eXtensible Interface)를 들 수 있다. 이 중 AXI 프로토콜은 멀티플 아웃스탠딩 주소(Multiple outstanding address) 기능과 데이터 인터리빙(Data interleaving) 기능 등의 진보된 기능을 포함하고 있다.
멀티플 아웃스탠딩 주소(Multiple outstanding address) 기능은 복수의 트랜잭션에 대응하는 어드레스를 한꺼번에 제공하는 기능을 말한다. 멀티플 아웃스탠딩 주소 기능은 어드레스 채널과 데이터 채널을 통해 정보가 제공될 때, 데이터의 전송과 동시에 어드레스 채널을 통해 복수의 트랜잭션에 대한 어드레스를 연속적으로 보내는 것을 의미한다. 이러한 기능에 의해서 복수의 트랜잭션들에 대한 어드레스와 어드레스 사이에 발생하는 빈 전송시간을 활용할 수 있다. 데이터 인터리빙 기능은 마스터 IP로부터 제공되는 데이터를 복수의 슬레이브 IP에 균일하게 할당하는 기능을 의미한다. 데이터 인터리빙을 통해서 대역폭을 보다 효율적으로 사용할 수 있다.
시스템 온 칩의 고기능화를 위해서 상술한 기능들과 같은 다양한 기법들이 연구되어 오고 있다. 특히, 이러한 기능들은 마스터 IP로부터 발생되는 요청(Request)에 대해서 적용되고 있다. 그러나 시스템 버스에서의 경쟁은 복수의 슬레이브 IP들로부터 제공되는 응답에서도 나타날 수 있다.
SoC는 기존의 여러 가지 기능을 가진 복잡한 시스템을 하나의 칩으로 구현한 기술 집약적 반도체 기술이다. SoC의 고기능화, 고성능화를 위한 연구에 있어서, 칩내에 형성되는 여러 지능 소자(Intellectual Property: 이하, IP)들의 효과적인 연결이 매우 중요한 이슈(Issue)로 대두되고 있다. 일반적으로, IP들을 상호 연결하기 위한 인터커넥터 기술로는 버스(Bus)를 기반으로 한 연결 방식이 주를 이루고 있다.
한편, SoC내의 IP들의 연결 및 관리를 위한 표준 버스 규격으로서 ARM사의 AMBA(Advanced Microcontroller Bus Achitecture)가 있다. AMBA의 버스 타입으로는 AHB(Advanced High-Performance Bus), APB(Advanced Peripheral Bus), AXI(Advanced eXtensible Interface)를 들 수 있다. 이 중 AXI 프로토콜은 멀티플 아웃스탠딩 주소(Multiple outstanding address) 기능과 데이터 인터리빙(Data interleaving) 기능 등의 진보된 기능을 포함하고 있다.
멀티플 아웃스탠딩 주소(Multiple outstanding address) 기능은 복수의 트랜잭션에 대응하는 어드레스를 한꺼번에 제공하는 기능을 말한다. 멀티플 아웃스탠딩 주소 기능은 어드레스 채널과 데이터 채널을 통해 정보가 제공될 때, 데이터의 전송과 동시에 어드레스 채널을 통해 복수의 트랜잭션에 대한 어드레스를 연속적으로 보내는 것을 의미한다. 이러한 기능에 의해서 복수의 트랜잭션들에 대한 어드레스와 어드레스 사이에 발생하는 빈 전송시간을 활용할 수 있다. 데이터 인터리빙 기능은 마스터 IP로부터 제공되는 데이터를 복수의 슬레이브 IP에 균일하게 할당하는 기능을 의미한다. 데이터 인터리빙을 통해서 대역폭을 보다 효율적으로 사용할 수 있다.
시스템 온 칩의 고기능화를 위해서 상술한 기능들과 같은 다양한 기법들이 연구되어 오고 있다. 특히, 이러한 기능들은 마스터 IP로부터 발생되는 요청(Request)에 대해서 적용되고 있다. 그러나 시스템 버스에서의 경쟁은 복수의 슬레이브 IP들로부터 제공되는 응답에서도 나타날 수 있다.
본 발명의 목적은 SoC 내에서 슬레이브 장치들이 제공하는 응답 데이터에 대한 중재를 수행하는 시스템 온 칩 및 그것의 중재 방법을 제공하는 데 있다.
상기 목적을 달성하기 위한 본 발명에 따른 시스템 온 칩은, 마스터 장치, 상기 마스터 장치의 요청에 응답하여 데이터를 공급하는 복수의 슬레이브 장치들, 그리고 상기 복수의 슬레이브 장치들로부터 전달되는 복수의 응답 데이터들을 상기 마스터 장치가 요청한 순서에 따라 상기 마스터 장치에 제공하는 인터커넥터를 포함하되, 상기 인터커넥터는 상기 요청 데이터를 상기 마스터 장치의 동작 특성에 따른 우선순위로 중재한다.
상기 목적을 달성하기 위한 본 발명에 따른 복수의 슬레이브 장치들로부터 제공된 복수의 응답 데이터들을 마스터 장치로 전달하는 인터커넥터의 중재 방법은, 상기 마스터 장치의 동작 특성에 대응하는 복수의 중재 모드들 중 하나를 선택하는 단계, 그리고 상기 선택된 중재 모드에 대응하는 우선순위에 따라 상기 복수의 응답 데이터들을 상기 마스터 장치로 전달하는 단계를 포함한다.
상기 목적을 달성하기 위한 본 발명에 따른 복수의 슬레이브 장치들로부터 제공된 복수의 응답 데이터들을 마스터 장치로 전달하는 인터커넥터의 중재 방법은, 상기 마스터 장치의 동작 특성에 대응하는 복수의 중재 모드들 중 하나를 선택하는 단계, 그리고 상기 선택된 중재 모드에 대응하는 우선순위에 따라 상기 복수의 응답 데이터들을 상기 마스터 장치로 전달하는 단계를 포함한다.
이상과 같은 본 발명에 따른 시스템 온 칩 및 그것의 중재 방법에 따르면, 마스트의 특성에 따라 마스터 장치로 전달되는 응답 데이터의 중재가 이루어진다. 따라서, 마스터의 동작 조건에 최적화된 응답 데이터를 제공하는 버스 시스템을 구현할 수 있다.
도 1은 본 발명의 실시 예에 따른 SoC를 보여주는 블록도이다.
도 2는 본 발명의 SoC 및 인터커넥터를 보여주는 블록도이다.
도 3은 본 발명의 실시 예에 따른 슬레이브 인터페이스의 구성을 보여주는 블록도이다.
도 4는 도 3의 슬레이브 인터페이스의 동작 방법을 보여주는 순서도이다.
도 5는 도 3의 리오더 버퍼의 상태를 예시적으로 보여주는 테이블이다.
도 6은 본 발명의 실시 예에 따른 중재 방법을 보여주는 순서도이다.
도 7은 본 발명의 다른 실시 예에 따른 슬레이브 인터페이스의 구성을 보여주는 블록도이다.
도 2는 본 발명의 SoC 및 인터커넥터를 보여주는 블록도이다.
도 3은 본 발명의 실시 예에 따른 슬레이브 인터페이스의 구성을 보여주는 블록도이다.
도 4는 도 3의 슬레이브 인터페이스의 동작 방법을 보여주는 순서도이다.
도 5는 도 3의 리오더 버퍼의 상태를 예시적으로 보여주는 테이블이다.
도 6은 본 발명의 실시 예에 따른 중재 방법을 보여주는 순서도이다.
도 7은 본 발명의 다른 실시 예에 따른 슬레이브 인터페이스의 구성을 보여주는 블록도이다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
이하에서는, 본 발명의 특징을 설명하기 위하여, AXI 프로토콜이 적용되는 버스 시스템이 예시적으로 사용될 것이다. 하지만, 이 기술 분야에 정통한 사람은 여기에 기재된 내용에 따라 본 발명의 다른 이점들 및 성능을 쉽게 이해할 수 있을 것이다. 본 발명은 다른 실시 예들을 통해 또한, 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 응용에 따라 수정되거나 변경될 수 있다. 이하, 본 발명에 따른 실시 예를 첨부된 도면을 참조하여 상세히 설명한다.
도 1은 본 발명의 실시 예에 따른 시스템 온 칩(SoC)을 간략히 보여주는 블록도이다. 도 1을 참조하면, 본 발명의 SoC(1)는 복수의 마스터 장치들(10, 20, 30), 인터커넥터(40), 그리고 복수의 메모리 장치들(50, 60)을 포함한다. 여기서, 메모리 장치들(50, 60)은 슬레이브 장치에 해당한다.
복수의 마스터 장치들(10, 20, 30)은 일반적으로 중앙 처리장치, 마이크로 컨트롤러, 또는 마이크로 프로세서 등으로 구성될 수 있다. 복수의 마스터 장치들(10, 20, 30) 각각은 인터커넥터(40)를 통해 복수의 슬레이브 장치들(50, 60)에 대한 접근을 요청할 것이다. 그리고, 인터커넥터(40)로부터 승인(Grant) 신호가 수신되면, 복수의 마스터들(10, 20, 30) 중 어느 하나는 버스 점유권(Bus Ownership)을 가진 것으로 판단하여 복수의 메모리 장치들(50, 60)에 접근하기 위한 주소 정보, 제어 정보 등을 인터커넥터(40)로 전송한다. 버스 점유권을 가진 마스터 장치는 인터커넥터(40)를 통하여 하나 또는 그 이상의 슬레이브 장치에 대한 읽기 또는 쓰기 동작을 수행한다.
인터커넥터(40)는 SoC(1)의 내부에서 마스터 장치들(10, 20, 30)과 메모리 장치들(50, 60) 간의 연결을 중재한다. 일반적으로는, 인터커넥터(40)는 마스터 장치들(10, 20, 30)이 요청(Request)에 대해서만 중재한다. 그러나 본 발명의 인터커넥터(40)는 메모리 장치들(50, 60)의 응답(Response)에 대해서도 중재를 수행한다. 메모리 장치들(50, 60)의 응답에 대한 중재를 통해서, 메모리 인터리빙(Memory interleaving)을 사용하는 버스 시스템의 성능을 더 높일 수 있다.
특히, 본 발명의 인터커넥터(40)는 메모리 인터리빙(Memory interleaving)을 수행한다. 메모리 인터리빙은 어느 하나의 마스터 장치(20)가 2개 이상의 메모리 장치(50, 60)를 모두 액세스할 때 트래픽이 어느 한쪽으로 집중되지 못하도록 밸런싱(Balancing)하는 제어 동작을 의미한다. 메모리 인터리빙을 통해서 인터커넥터(40)는 채널의 효율성을 높이고, 메모리 액세스 지연을 줄일 수 있다.
또한, 본 발명의 인터커넥터(40)는 메모리 장치들(50, 60)의 응답에 대한 중재를 수행한다. 동일한 트랜잭션 ID를 가지는 요청이 각각의 메모리 장치들(50, 60)에 전달될 수 있다. 그러면, 동일한 트랜잭션 ID에 대응하는 응답이 메모리 장치들(50, 60)로부터 인터커넥터(40)에 전달된다. 이때, 인터커넥터(40)는 동일한 ID에 대응하는 메모리 데이터를 수신한다. 인터커넥터(40)는 수신된 데이터들을 일시 저장하고 요청을 발행한 마스터 장치(20)에 순서를 재구성하여 전송한다. 즉, 인터커넥터(40)는 메모리 장치들로부터 전달된 순서가 아니라, 마스터 장치가 요청한 순서로 동일 ID에 대응하는 응답 데이터를 마스터 장치에 전송한다.
게다가, 인터커넥터(40)는 마스터의 동작 특성을 참조하여 Soc 시스템(1)의 성능을 극대화시킬 수 있다. 예를 들면, 메모리 장치들(50, 60)의 마스터 장치(20)로의 응답 트래픽이 증가하여 데이터 응답 지연이 발생하는 경우를 가정하자. 이때, 인터커넥터(40)는 요청이 발생한 마스터 장치(20)의 특성에 따라 응답에 대한 중재를 수행한다. 즉, 인터커넥터(40)는 트래픽의 증가 시에 내부 버퍼(예를 들면, 리오더 버퍼)에 저장된 데이터의 전송 우선순위를 마스터의 동작 특성을 고려하여 결정할 수 있다. 상술한 인터커넥터(40)의 기능에 따라 슬레이브 IP로부터 마스터 IP로의 응답 특성을 극대화하여, SoC 시스템의 성능을 높일 수 있다.
메모리 장치들(50, 60)은 인터커넥터(40)에 전기적으로 연결되는 슬레이브 IP에 대응한다. 메모리 장치들(50, 60) 각각은 메모리 컨트롤러들(52, 62)과 디램들(54, 64)로 구성될 수 있다.
이상의 본 발명에 따른 시스템 온 칩(SoC)의 인터커넥터(40)는 마스터 장치와 슬레이브 장치 간의 양방향 트래픽에 대해서 모두 중재를 수행한다. 즉, 인터커넥터(40)는 마스터 장치로부터 슬레이브 장치로의 요청에 대해서뿐 아니라, 요청에 대한 응답 데이터에 대해서도 중재를 수행한다. 따라서, 응답 데이터의 지연이나 응답 데이터의 종류 등에 따라 성능에 영향을 받는 마스터 장치들의 구동 성능을 높일 수 있다.
도 2는 본 발명의 실시 예에 따른 인터커넥터를 좀더 자세히 보여주는 블록도이다. 도 2를 참조하면, 본 발명에 따른 SoC(100)은 복수의 마스터 장치들(110, 120, 130), 인터커넥터(140), 그리고 복수의 슬레이브 장치들(150, 160)을 포함한다. 인터커넥터(140)는 복수의 마스터 장치들(110, 120, 130)과 복수의 슬레이브 장치들(150, 160) 각각에 대응하는 인터페이스(141, 143, 145, 147, 149)를 포함한다. 특히, 마스터 장치들(110, 120, 130)과 연결되는 슬레이브 인터페이스들(141, 143, 145)은 각각 리오더 버퍼를 포함한다.
마스터 장치들(110, 120, 130)은 특정 슬레이브 장치에 액세스하기 위하여 인터커넥터(140)에 명령어, 어드레스, 데이터 등을 제공한다. 마스터 장치들(110, 120, 130)은 각각 채널 포트들(AW, W, B, AR, R)을 통하여 슬레이브 장치들(150, 160)에 액세스한다. 여기서, 채널 포트(AW)로는 쓰기 요청이 전달된다. 채널 포트(W)로는 쓰기 데이터가 전송된다. 채널 포트(B)로는 쓰기 요청에 대한 응답이 전달된다. 채널 포트(AR)로는 읽기 요청이 전달된다. 채널 포트(R)로는 읽기 요청에 응답하여 메모리에서 읽혀진 데이터가 전달된다. 마스터 장치들(110, 120, 130)은, 예를 들면, 중앙 처리 장치(CPU), 마이크로 컨트롤러, 또는 마이크로 프로세서 등을 포함할 수 있다.
인터커넥터(140)는 마스터 장치들(110, 120, 130)과 슬레이브 장치(150, 160)들 사이에서 인터페이싱을 제공한다. 인터커넥터(140)는 마스터 장치들(110, 120, 130) 각각과 인터페이싱하기 위한 슬레이브 인터페이스들(141, 143, 145)을 포함한다. 슬레이브 인터페이스0(141)는 마스터 장치0(110)와 연결된다. 슬레이브 인터페이스1(143)는 마스터 장치1(120)와 연결된다. 슬레이브 인터페이스2(145)는 마스터 장치2(130)와 연결된다. 슬레이브 인터페이스들(141, 143, 145) 각각은 대응하는 마스터 장치들(110, 120, 130)의 액세스 요청 또는 요청에 대한 응답 데이터를 송수신한다.
인터커넥터(140)는 슬레이브 장치들(150, 160)과의 인터페이싱을 위한 마스터 인터페이스들(147, 149)을 포함한다. 마스터 인터페이스0(147)는 대응하는 슬레이브 장치0(150)와 연결된다. 마스터 인터페이스1(149)는 대응하는 슬레이브 장치1(160)에 연결된다. 마스터 인터페이스들(147, 149) 각각은 슬레이브 인터페이스들(141, 143, 145)로부터의 액세스 요청을 대응하는 슬레이브 장치들(150, 160)에 전달한다. 그리고 마스터 인터페이스들(147, 149) 각각은 슬레이브 장치들(150, 160)로부터 제공되는 응답 데이터를 채널의 점유권을 가진 슬레이브 인터페이스로 전달할 것이다.
본 발명의 슬레이브 인터페이스들(141, 143, 145)은 마스터 장치로부터의 요청에 대응하는 트래픽을 중재한다. 뿐만 아니라, 슬레이브 인터페이스들(141, 143, 145)은 슬레이브 장치들(150, 160)로부터 마스터 장치들(110, 120, 130)로 전달되는 응답 데이터에 대해서도 중재 동작을 수행한다. 특히, 슬레이브 인터페이스들(141, 143, 145)은 대응하는 마스터 장치의 동작 특성을 고려하여, 응답 데이터에 대한 중재를 수행할 수 있다. 이하에서는 슬레이브 인터페이스들(141, 143, 145) 각각의 동작 설명은 하나의 슬레이브 인터페이스0(141)의 설명을 통해서 대신하기로 한다.
슬레이브 인터페이스0(141)는 마스터 장치0(110)와의 인터페이싱을 전담한다. 슬레이브 인터페이스0(141)는 마스터 장치0(110)로부터 전달되는 읽기나 쓰기 요청에 응답하여 메모리 인터리빙 동작을 수행한다. 슬레이브 인터페이스0(141)는 마스터 장치0(110)의 요청에 대한 응답을 중재한다. 특히, 슬레이브 인터페이스0(141)는 마스터 장치0(110)의 동작 특성을 참조하여 버퍼링되는 데이터의 전송 순서를 조정할 수 있다.
예를 들면, 마스터 장치0(110)로의 응답 트래픽이 증가하여 응답 지연이 발생하는 경우를 가정하자. 이때, 슬레이브 인터페이스0(141)는 마스터 장치0(110)의 특성에 따라 응답에 대한 중재를 수행한다. 슬레이브 인터페이스0(141)는 동일한 트랜잭션 ID의 요청에 대해 메모리 인터리빙을 적용하기 위한 리오더 버퍼(Reorder buffer)를 포함한다. 동일한 트랜잭션 ID를 가지는 메모리 요청이 슬레이브 장치0(150)와 슬레이브 장치1(160)에 전달되면, 슬레이브 장치들(150, 160)은 요청된 데이터를 슬레이브 인터페이스0(141)에 각각 제공한다. 동일 ID의 요청이라 할지라도, 슬레이브 인터페이스0(141)의 리오더 버퍼(Reorder buffer)에 도달하는 시간은 다를 수 있다. 리오더 버퍼에 저장된 서로 다른 슬레이브 장치로부터 제공된 응답 데이터는 순서는 마스터 장치0(110)가 요청한 순서로 재구성되어 출력될 것이다.
그리고, 리오더 버퍼에 트래픽이 과도하게 증가하는 경우, 슬레이브 인터페이스0(141)는 저장된 데이터의 전송 우선순위를 마스터의 동작 특성을 고려하여 결정할 수 있다. 이러한 동작을 위하여 슬레이브 인터페이스0(141)는 리오더 버퍼와 제어 로직(미도시됨)을 포함한다. 예를 들어, 마스터 장치0(110)의 성능이 최초 제공되는 응답 데이터 도달 시간에 민감한 경우를 가정하자. 그러면, 슬레이브 인터페이스0(141)는 리오더 버퍼에 저장된 일련의 데이터들 중 각각의 요청된 트랜잭션의 최초 버스터 데이터를 가장 우선적으로 제공하도록 설정될 것이다. 이밖에, 마스터 장치들의 다양한 특성에 따라 리오더 버퍼에 저장된 데이터의 마스터 장치로의 전송 우선순위가 설정될 수 있을 것이다.
슬레이브 장치들(150, 160)은 마스터로부터 제공받은 명령에 응답하여, 제공받은 명령을 수행하는 장치를 의미한다. 슬레이브 장치들(150, 160)은, 예를 들면, 휘발성 메모리 장치, 불휘발성 메모리 장치, 또는 메모리 장치를 제어하는 메모리 컨트롤러 등을 포함할 수 있다. 슬레이브 장치들(150, 160)은 인터커넥터(140)에 전기적으로 연결되는 슬레이브 IP에 대응한다. 슬레이브 장치들(150, 160) 각각은 메모리 컨트롤러와 디램들로 구성될 수 있다.
이상의 설명에 따르면, 본 발명의 슬레이브 인터페이스는 대응하는 마스터 장치의 특성에 따라 응답 데이터를 중재한다. 즉, 슬레이브 인터페이스는 마스터 장치의 동작 특성에 따라 리오더 버퍼에 저장된 응답 데이터의 출력 우선순위를 결정한다. 그리고 슬레이브 인터페이스는 결정된 우선순위에 따라 마스터 장치로 응답 데이터를 출력할 것이다. 본 발명의 슬레이브 인터페이스에 따르면, 요청과 응답의 양방향 트래픽에 대한 데이터 중재를 수행하여 고성능의 시스템 온 칩을 구현할 수 있다.
도 3은 본 발명에 따른 슬레이브 인터페이스의 구성을 예시적으로 보여주는 블록도이다. 도 3을 참조하면, 슬레이브 인터페이스0(141, 도 2 참조)는 리오더 버퍼(210), 선택기(220), 및 제어 로직(230)을 포함한다.
리오더 버퍼(210)는 복수의 마스터 인터페이스들(Master interfaces)로부터 제공되는 응답 데이터를 일시 저장하는 복수의 버퍼 라인들(Buffer line 1~Buffer line 8)을 포함한다. 복수의 버퍼 라인들 각각은 모든 슬레이브 장치들로부터 제공되는 데이터를 저장할 수 있다. 리오더 버퍼(210)는 복수의 버퍼 라인들 각각에 버퍼링되는 응답 데이터의 상태를 모니터링할 수 있다. 응답 데이터의 트래픽이 기준치 이상으로 증가하면, 리오더 버퍼(210)는 버퍼 상태 정보(BS)를 제어 로직(230)으로 전달한다. 리오더 버퍼(210)의 각 버퍼 라인들에 저장되는 응답 데이터의 형태는 후술하는 도 5에서 상세히 설명될 것이다.
선택기(220)는 리오더 버퍼(210)에 저장된 데이터를 마스터 인터페이스에서 발행된 순서대로 L:1 중재를 수행한다. 선택기(220)는 제어 로직(230)에 의해서 선택된 버퍼 라인의 출력을 마스터 장치 측으로 전달할 것이다.
제어 로직(230)은 버퍼 상태 정보(BS)를 참조하여 선택기(220)를 제어한다. 버퍼 상태 정보(BS)는 리오더 버퍼(210)에 입력되는 응답 데이터의 트래픽 상태를 나타낸다. 제어 로직(230)은 리오더 버퍼(210)에 저장되는 응답 데이터의 트래픽이 기준치보다 적은 경우에는 마스터 인터페이스들에서 이슈된 순서대로 출력되도록 선택기(220)를 제어한다. 반면, 제어 로직(230)은 리오더 버퍼(210)에 저장되는 응답 데이터의 트래픽 상태가 기준치 이상인 경우, 마스터 장치의 특성을 고려한 L:1 중재를 수행한다.
마스터 장치의 특성을 고려한 중재의 예로는, 마스터 장치의 동작 특성에 따라 리오더 버퍼(210)에 저장된 데이터의 출력 순서를 정하는 것이다. 제어 로직(230)이 수행하는 리오더 버퍼(210)에 대한 중재는 마스터 장치의 성능을 높이기 위한 방향으로 이루어진다. 따라서, 응답 데이터의 중재를 통해서 마스터 장치의 성능을 극대화할 수 있다.
마스터 장치의 성능은 요청한 데이터의 최초 지연(Initial latency)에 크게 영향을 받기도 한다. 마스터 장치는 데이터 종류에 따라 다른 트랜잭션 ID를 부여한다. 따라서, 응답 데이터는 ID에 따라 서로 다른 속성을 가질 수 있다. 속성에 따라 어떤 ID의 응답 데이터는 다른 ID의 응답 데이터보다 마스터 장치의 성능에 더 큰 영향을 미칠 수 있다. 또 다른 마스터 장치에 있어서, 응답 데이터들 전체의 평균 지연이 마스터 장치의 성능에 주요 인자로 작용하기도 한다. 하지만, 제어 로직(230)의 중재 기준이 되는 마스터 장치의 특성은 여기의 개시에만 국한되지 않음은 잘 이해될 것이다. 본 발명의 제어 로직(230)은 상술한 마스터 장치들의 동작 특성에 따라 리오더 버퍼(210)에 저장된 데이터를 중재하게 될 것이다.
도 4는 본 발명에 따른 슬레이브 인터페이스의 중재 동작을 간략히 보여주는 순서도이다. 도 4를 참조하면, 슬레이브 인터페이스는 리오더 버퍼(Reorder buffer)의 상태에 따라서 중재 동작 모드를 결정할 수 있다.
단계 S110에서, 제어 로직(230, 도 3 참조)은 리오더 버퍼(210)를 모니터링한다. 리오더 버퍼(210)에 버퍼링되는 응답 데이터는 복수의 버퍼 라인들 중 어느 하나에 저장될 수 있다. 여기에서는 버퍼 라인들의 수(Depth)가 8인 경우를 가정하기로 한다. 각각의 버퍼 라인들은 응답 데이터의 최대 크기를 수용할 수 있도록 구성될 수 있다. 즉, 마스터 장치가 요청할 수 있는 가장 큰 버스트 길이(Burst-length)의 응답 데이터를 수용할 수 있도록 각각의 버퍼 라인들의 사이즈가 설정될 수 있다.
단계 S120에서, 제어 로직(230)은 리오더 버퍼(210)의 버퍼 상태 신호(BS)에 따라 중재 모드를 선택한다. 슬레이브 장치들로부터 제공되는 응답 데이터의 트래픽이 많지 않은 경우에는 단계 S130으로 분기한다. 하지만, 리오더 버퍼(230)에 유입되는 응답 데이터가 출력되는 응답 데이터보다 많아질 수 있다. 그리고 리오더 버퍼(210) 내부의 모든 버퍼 라인들이 응답 데이터로 점유되어 병목 현상이 발생할 수 있다. 이때, 리오더 버퍼(210)는 버퍼 점유율이 기준치 이상인 것으로 판단할 수 있다. 리오더 버퍼(210)는 버퍼 상태 신호(BS)를 활성화하여 제어 로직(230)으로 리오더 버퍼(210)의 트래픽의 과다함을 알려준다. 리오더 버퍼(210)에 유입되는 트래픽이 과다할 경우, 절차는 단계 S140으로 이동한다.
단계 S130에서, 리오더 버퍼(210)의 트래픽은 정상 상태이다. 그러므로, 제어 로직(230)은 마스터 인터페이스에서 발행되는 요청의 순서로 버퍼링된 데이터를 출력되도록 중재 동작을 수행한다. 이때에도 제어 로직(230)은 동일한 ID에 대응하는 응답 데이터의 경우에는, 마스터 장치로부터 요청된 순서대로 응답 데이터의 출력 순서를 재조정한다.
단계 S140에서, 제어 로직(230)은 버퍼 상태 정보(BS)를 통해서 리오더 버퍼(210)의 트래픽 과다를 인식할 수 있다. 제어 로직(230)은 연결이 활성화된 마스터 장치의 동작 특성을 고려하여 중재 동작을 수행한다. 제어 로직(230)은 마스터 장치가 요청한 데이터의 출력 순서를 마스터 장치의 성능을 극대화하기 위한 방식으로 재구성하게 될 것이다. 만일 마스터 장치의 성능이 최초로 전달되는 응답 데이터의 지연에 크게 영향을 받는 경우, 제어 로직(230)은 각각의 응답 데이터들 중에서 최초 버스트 데이터를 우선적으로 출력하도록 선택기(220)를 제어할 수 있다. 제어 로직(230)은 이밖에 다양한 마스터 장치의 특성에 따라서 버퍼링된 응답 데이터의 출력 순서를 재조정할 수 있다.
본 발명에 따른 마스터 장치의 특성을 고려한 응답 데이터의 중재에 의하면 응답 데이터의 지연에 의한 마스터 장치의 성능 감소를 차단할 수 있다. 그리고 마스터 장치의 동작 특성에 따라 다양한 방식의 응답 데이터에 대한 중재를 구현할 수 있다.
도 5는 도 3의 리오더 버퍼(210)에 저장되는 응답 데이터의 구조를 예시적으로 보여주는 표이다. 도 5를 참조하면, 리오더 버퍼(210)의 각각의 버퍼 라인들은 ID 필드, 버스트 길이(Burst-length) 필드, 레지던트 카운트(Resident count) 필드, 그리고 응답 데이터 필드를 포함할 수 있다.
ID 필드는 각각의 버퍼 라인들에 저장되는 데이터의 트랜잭션 ID에 대응한다. ID 필드는 마스터 인터페이스로부터 전달되는 데이터에 대한 트랜잭션 ID를 포함한다. 버스트-길이(Burst-length)는 마스터 장치에 의해서 요청된 데이터의 버스트 길이(Burst-length)를 나타낸다. 그리고 레지던트 카운트(Resident count)는 해당되는 데이터가 대응하는 버퍼 라인에 입력된 시간을 나타낸다.
여기서, 각각의 버퍼 라인들의 크기는 가장 큰 버스트 길이에 대응하는 응답 데이터를 수용할 수 있을 정도이어야 한다. 그러나 설명의 편의를 위하여 버스트 길이 8을 최대 응답 데이터의 사이즈로 가정하기로 한다. 그리고 리오더 버퍼(210)에는 수용가능한 모든 공간들이 응답 데이터에 의해서 점유된 상태를 나타낸다. 그리고 현재에도 리오더 버퍼(210)에 유입될 데이터가 유출되는 데이터의 양보다 많은 트래픽의 과다 상태를 가정하기로 한다.
도 6은 트래픽이 과다한 상태의 리오더 버퍼에 대한 중재 동작을 예시적으로 보여주는 순서도이다. 즉, 도 6의 중재 동작은 도 4의 단계 S140을 좀더 구체적으로 설명하고 있다. 도 6을 참조하면, 본 발명의 슬레이브 인터페이스(141, 도 3 참조)는 데이터를 요청한 마스터 장치의 동작 특성에 따라 다양한 방식의 중재 동작을 수행할 수 있다. 리오더 버퍼(210, 도 3 참조)로부터 과다한 트래픽이 존재함을 지시하는 버퍼 상태 정보(BS)가 제공되면, 제어 로직(230)은 마스터 장치의 특성을 참조하는 중재 동작을 시작한다.
단계 S210에서, 제어 로직(230)은 마스터 장치의 동작 특성을 참조하여 중재 모드를 선택한다. 제어 로직(230)은 마스터 장치의 동작 특성이 응답 데이터의 최초 전달 시간에 민감한 경우에는 최초 데이터 민감(First data critical)으로 판단한다. 최초 데이터 민감 상황에서, 절차는 리오더 버퍼의 각 버퍼 라인들의 최초 버스트 데이터를 전달하기 위한 단계 S220으로 이동한다. 반면 마스터 장치의 성능이 특정 ID의 응답 데이터에 대해서 민감한 경우, 제어 로직(230)은 특정 ID 민감(Specific ID critical)으로 판단한다. 이때, 절차는 특정 ID에 대응하는 데이터를 우선적으로 전송하기 위한 단계 S230으로 이동한다.
그리고 마스터 장치의 성능이 응답 데이터의 평균 지연에 민감한 경우, 제어 로직(230)은 평균 지연 민감(Average latency critical)으로 판단한다. 이때, 절차는 가장 짧은 버스트 길이의 데이터를 우선적으로 출력하는 단계 S240으로 이동한다. 그리고 다양한 마스터 장치들의 특징을 결합하여 적용하는 경우, 절차는 복합 중재 방식을 수행하기 위한 단계 S250으로 이동한다.
여기서, 복수의 중재 모드 중에서 단계 S220은 제 1 중재 모드, 단계 S230은 제 2 중재 모드, 단계 S240은 제 3 중재 모드, 그리고 단계 S250은 제 4 중재 모드로 칭할 수 있다.
최초 데이터 민감(First data critical) - 단계 S220, 제 1 중재 모드
먼저, 단계 S220에서 수행되는 동작을 구체적으로 살펴보기로 한다. 단계 S220에서, 마스터 장치의 성능이 최초 전달 데이터의 지연 시간에 민감한 경우의 중재 동작을 수행한다. 즉, 마스터 장치가 슬레이브 장치로 요청한 시간부터 응답 데이터가 제공되는 시점(Data request to First data response)까지의 최초 지연이 마스터 장치의 성능에 주요 영향을 미치는 경우에 해당한다. 이때, 제어 로직(230)은 리오더 버퍼(210)의 내에 저장된 버스트 데이터의 첫 번째 데이터를 우선적으로 전송하도록 선택기(220)를 제어한다.
예를 들면, 도 5와 같은 리오더 버퍼(210) 상태에서, 제어 로직(230)은 가장 먼저 각각의 버퍼 라인들에 저장된 버스트 데이터들 중 첫 번째 버스트 데이터를 각각 먼저 전송할 수 있다. 제어 로직(230)은 8개의 버퍼 라인들에 저장된 버스트 데이터 중 첫 번째 데이터들을 각각 가장 먼저 출력하도록 리오더 버퍼(210)를 제어할 수 있다. 간략히 순서를 나열하면 다음과 같다. 즉, 각각의 버스트 데이터들은 출력 순서(0x11→0x21→0x31→0x41→0x51→0x61→0x71→0x81→...→0x18→0x28→0x38→0x48→0x58→0x68→0x78→0x88)로 마스터 장치에 제공될 것이다.
CPU의 캐시(Cache)와 관련된 데이터 트래픽은 각 트래픽의 첫 번째 데이터가 성능에 큰 영향을 미치는 것으로 알려져 있다. 따라서, 버퍼 라인들 각각에 일시 저장된 버스트 데이터들의 순서에 따라서 데이터의 출력이 이루어진다. 즉, 버퍼 라인들 각각에 있어서, 버스트 순서가 우선인 데이터가 먼저 출력된다. 이러한 중재에 의해서 마스터 장치에 전달되는 최초 데이터의 지연은 감소될 수 있다.
특정 ID 민감(Specific ID critical) - 단계 S230, 제 2 중재 모드
단계 S230에서는 마스터 장치가 응답 데이터의 ID에 따라서 다른 성능을 보여주는 경우에 적용된다. 응답 데이터가 마스터 장치에서 사용되는 제어 데이터와 같이 성능에 깊이 관련된 경우, 그에 대응하는 특정 ID의 데이터가 먼저 전달되어야 할 것이다. AXI 프로토콜과 같이 트랜잭션 ID를 사용하는 프로토콜에서는 특정 ID에 대한 응답 지연이 마스터 장치의 성능에 크게 영향을 미칠 수 있다. 이 경우, 리오더 버퍼(210) 내에서도 특정 ID에 대응하는 응답 데이터를 먼저 마스터 장치로 전송하면 성능이 향상될 것이다.
특정 ID에 대응하는 응답 데이터가 항상 먼저 전송될 경우, 우선순위가 높지 못한 데이터는 최악의 경우에는 마스터에 전달될 기회를 갖지 못할 수도 있다. 따라서, 우선순위가 높지 못한 ID의 데이터는 리오더 버퍼(210)에 로드된 후 일정 시간이 경과하면 강제적으로 마스터 장치로 전송하도록 설정할 수 있다. 이러한 동작은 도 5의 표에서 기술된 레지던트 카운트(Resident count) 필드에 의해서 구현될 수 있다. 레지던트 카운트의 값이 특정 값(Oxff)에 도달하면, 우선순위가 높은 ID의 데이터보다 먼저 출력된다.
마스터 장치가 MFC(Multi-Format Codec) 기능을 수행하는 경우, 특정 ID의 응답 지연이 동영상의 인코딩/디코딩 성능에 영향을 미친다. MFC 데이터가 도 5와 같이 리오더 버퍼(210)를 점유하고 있다고 가정하자. 그리고 4번 및 5번 ID의 데이터에 마스터 장치의 성능이 가장 크게 영향을 받고, 8번 ID의 데이터에 가장 덜 민감한 조건을 가정하기로 한다. 즉, 마스터 장치의 성능에 영향을 미치는 응답 데이터의 ID의 우선순위가 다음과 같다고 가정하자. ID 우선순위(ID4=ID5 > ID1=ID2=ID3=ID6=ID7 > ID8). 이때, 제어 로직(230)의 중재에 의한 데이터 출력 순서는 다음과 같다. ID8(0x81→0x82→...→0x88)→ID4(0x41→0x42→...→0x48)→ID5(0x51→0x52→...→0x58)→...→ID7(0x71→0x72→...→0x78).
여기서, 8번 ID의 응답 데이터는 레지던트 카운트(Resident count)에 의해 타임 아웃(time-out)이 발생해 가장 먼저 전송되었다. 그리고 나머지 ID의 응답 데이터는 ID 우선순위에 따라 전송된다. 이러한 ID 우선순위에 따라 마스터 장치로 데이터를 전송하면, 마스터 장치의 성능에 영향을 미치는 트래픽의 인터커넥터 점유율이 높아져 SoC 성능을 높일 수 있다. 즉, 동일한 비율로 인터커넥터가 점유되더라도, 마스터 장치의 성능에 중요한 데이터의 트래픽이 점유한 경우와 그렇지 못한 경우에는 인터커넥터의 효율이 다를 수밖에 없다.
평균 지연 민감(Average latency critical) - 단계 S240, 제 3 중재 모드
단계 S240에서는, 응답 데이터의 평균 지연이 마스터 장치의 성능에 중요한 요인으로 작용하는 경우에 슬레이브 인터페이스의 동작이 간략히 나타나 있다. 즉, 리오더 버퍼(210)에 저장된 응답 데이터들 전체의 평균 지연을 줄이면 마스터 장치의 성능이 향상되는 경우에 해당된다. 이런 경우, 버스트 길이가 상대적으로 짧은 응답 데이터를 먼저 전송하는 것이 유리하다.
상대적으로 짧은 버스트 길이의 응답 데이터의 우선순위가 높은 경우, 우선순위가 높지 못한 데이터는 최악의 경우에는 마스터에 전달될 기회를 갖지 못할 수도 있다. 따라서, 우선순위가 높지 못한 ID의 데이터는 일정 시간 리오더 버퍼(210)에 로드된 시간이 경과하면, 강제적으로 마스터 장치로 전송하도록 설정할 수 있다. 즉, 레지던트 카운트(Resident count) 필드에 의해서 구현될 수 있다. 레지던트 카운트의 값이 특정 값(Oxff)에 도달하면, 우선순위가 높은 ID의 데이터보다 먼저 출력한다.
응답 데이터가 도 5와 같이 리오더 버퍼(210)를 점유하고 있다고 가정하자. 그러면, 2번 내지 4번 응답 데이터의 버스트 길이는 4로 가장 짧다. 그 다음으로는 1번, 5번 및 6번 응답 데이터가 버스트 길이 6에 대응한다. 그리고 7번 및 8번 데이터의 버스트 길이가 8로서 가장 길다. 즉, 전송 우선순위 (ID2=ID3=ID4 > ID1=ID5=ID6 > ID7=ID8)가 적용될 것이다. 전송 우선순위와 레지던트 카운트를 고려하면, 응답 데이터의 전송 순서는 다음과 같다. No8(0x81→0x82→...→0x88)→No2→No3→No4→No1→No5→No6(0x61→0x62→0x63→0x64→0x65→0x66→0x67→0x68)→No7(0x71→0x72→...→0x78).
여기서, 8번 ID의 응답 데이터는 레지던트 카운트(Resident count)에 의해 타임아웃(time-out)이 발생해 가장 먼저 전송되었다. 그리고 나머지 ID의 응답 데이터는 ID 우선순위에 따라 전송된다. 이러한 ID 우선순위에 따라 마스터 장치로 데이터를 전송하면, 마스터 장치로 전달되는 응답 데이터의 평균 지연이 최소화될 수 있다.
복합 우선 순위(Hybrid) - 단계 S250, 제 4 중재 모드
단계 S250에는, 요청 데이터에 대한 마스터 장치의 동작 특성이 다양하고 복잡한 경우에 슬레이브 인터페이스의 중재 동작을 보여준다. 마스터 장치의 성능이 앞서 설명된 3가지의 특성(최초 지연 미감, 특정 ID 민감, 평균 지연에 민감)을 복합적으로 가질 수 있다. 이 경우에는 리오더 버퍼(210)는 각각의 특성들에 대한 우선순위에 따라 요청 데이터를 출력할 수 있다. 예를 들면, 특정 ID 민감 특성과 평균 지연 민감 특성을 복합적으로 사용하는 경우를 가정하자. 그리고 특정 ID 민감 특성이 더 높은 우선순위를 가지는 것으로 가정하기로 한다. 이때에도 레지던트 카운트(Resident count) 값이 기준치를 넘은 버퍼 라인의 데이터는 최고 우선순위를 가지게 될 것이다.
복합적인 조건에서, 전송 우선순위와 레지던트 카운트를 고려하면, 응답 데이터의 전송 순서는 다음과 같다. No8(0x81→0x82→...→0x88)→No4→No5→No2→No3→No1→No6→No7(0x71→0x72→...→0x78)
여기서, 8번 ID의 응답 데이터는 레지던트 카운트(Resident count)에 의해 타임아웃(time-out)이 발생해 가장 먼저 전송되었다. 그리고 나머지 응답 데이터는 복합적인 우선순위에 따라 전송된다. 이러한 우선순위에 따르면, 다양한 응답 데이터에 따라 다양한 특성을 가지는 마스터 장치에 대한 최적의 중재 동작이 가능하다.
도 7은 도 2의 슬레이브 인터페이스(141)의 다른 예를 보여주는 블록도이다. 도 7을 참조하면, 슬레이브 인터페이스(141′)는 리오더 버퍼(310), 선택기(320), 및 특정 기능 레지스터(335)를 포함하는 제어 로직(330)을 포함한다.
리오더 버퍼(310)는 복수의 마스터 인터페이스들(Master interfaces)로부터 제공되는 응답 데이터를 버퍼링하는 복수의 버퍼 라인들(Buffer line 1~Buffer line 8)로 구성될 수 있다. 복수의 버퍼 라인들 각각은 모든 슬레이브 장치들로부터 제공되는 데이터를 저장할 수 있다. 리오더 버퍼(310)는 복수의 버퍼 라인들 각각에 버퍼링되는 응답 데이터의 상태를 모니터링할 수 있다. 응답 데이터의 트래픽이 기준치 이상으로 증가하면, 리오더 버퍼(310)는 버퍼 상태 정보(BS)를 제어 로직(330)으로 전달한다.
선택기(320)는 리오더 버퍼(310)에 저장된 데이터를 마스터 인터페이스에서 발행된 순서대로 L:1 중재를 수행한다. 선택기(320)는 제어 로직(330)에 의해서 선택된 버퍼 라인의 출력을 마스터 장치로 전달할 것이다.
제어 로직(330)은 리오더 버퍼(310)에 버퍼링되는 응답 데이터의 트래픽 상태를 나타내는 버퍼 상태 정보(BS)를 참조하여 선택기(320)를 제어한다. 제어 로직(330)은 리오더 버퍼(310)에 저장되는 응답 데이터의 트래픽이 기준치 이하인 경우에는 마스터 인터페이스들에서 이슈된 순서대로 출력되도록 L:1 중재를 수행한다. 반면, 제어 로직(330)은 리오더 버퍼(310)에 저장되는 응답 데이터의 트래픽이 기준치보다 증가하는 경우, 마스터 장치의 특성을 고려한 L:1 중재를 수행한다.
마스터 장치의 특성을 고려한 중재의 예로는, 요청을 발행한 마스터 장치의 동작 특성에 따라 리오더 버퍼(310)에 저장된 데이터의 출력 순서를 정하는 것이다. 제어 로직(330)이 수행하는 리오더 버퍼(310)에 대한 중재 동작은 마스터 장치의 동작 특성에 의거하여 이루어진다. 특히, 본 발명의 제어 로직(330)은 특정 기능 레지스터(SFR, 335)를 포함한다. 특정 기능 레지스터(335)에는 마스터 장치의 특성 정보가 저장된다. 예를 들면, 특정 기능 레지스터(335)에는 최초 지연 민감, 특정 ID 민감, 평균 지연 민감, 그리고 복합 특성(Hybrid) 등의 특성이 입력될 수 있다. 이러한 특정 기능 레지스터(335)의 설정은 마스터 장치의 요청에 포함되어 응답 데이터의 우선순위를 결정할 수 있다. 또는, 특정 기능 레지스터(335)의 설정은 사용자에 의해서 이루어질 수도 있을 것이다.
본 발명에 따른 반도체 장치는 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 본 발명에 따른 플래시 메모리 장치 그리고/또는 메모리 컨트롤러는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
이하에서는, 본 발명의 특징을 설명하기 위하여, AXI 프로토콜이 적용되는 버스 시스템이 예시적으로 사용될 것이다. 하지만, 이 기술 분야에 정통한 사람은 여기에 기재된 내용에 따라 본 발명의 다른 이점들 및 성능을 쉽게 이해할 수 있을 것이다. 본 발명은 다른 실시 예들을 통해 또한, 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 응용에 따라 수정되거나 변경될 수 있다. 이하, 본 발명에 따른 실시 예를 첨부된 도면을 참조하여 상세히 설명한다.
도 1은 본 발명의 실시 예에 따른 시스템 온 칩(SoC)을 간략히 보여주는 블록도이다. 도 1을 참조하면, 본 발명의 SoC(1)는 복수의 마스터 장치들(10, 20, 30), 인터커넥터(40), 그리고 복수의 메모리 장치들(50, 60)을 포함한다. 여기서, 메모리 장치들(50, 60)은 슬레이브 장치에 해당한다.
복수의 마스터 장치들(10, 20, 30)은 일반적으로 중앙 처리장치, 마이크로 컨트롤러, 또는 마이크로 프로세서 등으로 구성될 수 있다. 복수의 마스터 장치들(10, 20, 30) 각각은 인터커넥터(40)를 통해 복수의 슬레이브 장치들(50, 60)에 대한 접근을 요청할 것이다. 그리고, 인터커넥터(40)로부터 승인(Grant) 신호가 수신되면, 복수의 마스터들(10, 20, 30) 중 어느 하나는 버스 점유권(Bus Ownership)을 가진 것으로 판단하여 복수의 메모리 장치들(50, 60)에 접근하기 위한 주소 정보, 제어 정보 등을 인터커넥터(40)로 전송한다. 버스 점유권을 가진 마스터 장치는 인터커넥터(40)를 통하여 하나 또는 그 이상의 슬레이브 장치에 대한 읽기 또는 쓰기 동작을 수행한다.
인터커넥터(40)는 SoC(1)의 내부에서 마스터 장치들(10, 20, 30)과 메모리 장치들(50, 60) 간의 연결을 중재한다. 일반적으로는, 인터커넥터(40)는 마스터 장치들(10, 20, 30)이 요청(Request)에 대해서만 중재한다. 그러나 본 발명의 인터커넥터(40)는 메모리 장치들(50, 60)의 응답(Response)에 대해서도 중재를 수행한다. 메모리 장치들(50, 60)의 응답에 대한 중재를 통해서, 메모리 인터리빙(Memory interleaving)을 사용하는 버스 시스템의 성능을 더 높일 수 있다.
특히, 본 발명의 인터커넥터(40)는 메모리 인터리빙(Memory interleaving)을 수행한다. 메모리 인터리빙은 어느 하나의 마스터 장치(20)가 2개 이상의 메모리 장치(50, 60)를 모두 액세스할 때 트래픽이 어느 한쪽으로 집중되지 못하도록 밸런싱(Balancing)하는 제어 동작을 의미한다. 메모리 인터리빙을 통해서 인터커넥터(40)는 채널의 효율성을 높이고, 메모리 액세스 지연을 줄일 수 있다.
또한, 본 발명의 인터커넥터(40)는 메모리 장치들(50, 60)의 응답에 대한 중재를 수행한다. 동일한 트랜잭션 ID를 가지는 요청이 각각의 메모리 장치들(50, 60)에 전달될 수 있다. 그러면, 동일한 트랜잭션 ID에 대응하는 응답이 메모리 장치들(50, 60)로부터 인터커넥터(40)에 전달된다. 이때, 인터커넥터(40)는 동일한 ID에 대응하는 메모리 데이터를 수신한다. 인터커넥터(40)는 수신된 데이터들을 일시 저장하고 요청을 발행한 마스터 장치(20)에 순서를 재구성하여 전송한다. 즉, 인터커넥터(40)는 메모리 장치들로부터 전달된 순서가 아니라, 마스터 장치가 요청한 순서로 동일 ID에 대응하는 응답 데이터를 마스터 장치에 전송한다.
게다가, 인터커넥터(40)는 마스터의 동작 특성을 참조하여 Soc 시스템(1)의 성능을 극대화시킬 수 있다. 예를 들면, 메모리 장치들(50, 60)의 마스터 장치(20)로의 응답 트래픽이 증가하여 데이터 응답 지연이 발생하는 경우를 가정하자. 이때, 인터커넥터(40)는 요청이 발생한 마스터 장치(20)의 특성에 따라 응답에 대한 중재를 수행한다. 즉, 인터커넥터(40)는 트래픽의 증가 시에 내부 버퍼(예를 들면, 리오더 버퍼)에 저장된 데이터의 전송 우선순위를 마스터의 동작 특성을 고려하여 결정할 수 있다. 상술한 인터커넥터(40)의 기능에 따라 슬레이브 IP로부터 마스터 IP로의 응답 특성을 극대화하여, SoC 시스템의 성능을 높일 수 있다.
메모리 장치들(50, 60)은 인터커넥터(40)에 전기적으로 연결되는 슬레이브 IP에 대응한다. 메모리 장치들(50, 60) 각각은 메모리 컨트롤러들(52, 62)과 디램들(54, 64)로 구성될 수 있다.
이상의 본 발명에 따른 시스템 온 칩(SoC)의 인터커넥터(40)는 마스터 장치와 슬레이브 장치 간의 양방향 트래픽에 대해서 모두 중재를 수행한다. 즉, 인터커넥터(40)는 마스터 장치로부터 슬레이브 장치로의 요청에 대해서뿐 아니라, 요청에 대한 응답 데이터에 대해서도 중재를 수행한다. 따라서, 응답 데이터의 지연이나 응답 데이터의 종류 등에 따라 성능에 영향을 받는 마스터 장치들의 구동 성능을 높일 수 있다.
도 2는 본 발명의 실시 예에 따른 인터커넥터를 좀더 자세히 보여주는 블록도이다. 도 2를 참조하면, 본 발명에 따른 SoC(100)은 복수의 마스터 장치들(110, 120, 130), 인터커넥터(140), 그리고 복수의 슬레이브 장치들(150, 160)을 포함한다. 인터커넥터(140)는 복수의 마스터 장치들(110, 120, 130)과 복수의 슬레이브 장치들(150, 160) 각각에 대응하는 인터페이스(141, 143, 145, 147, 149)를 포함한다. 특히, 마스터 장치들(110, 120, 130)과 연결되는 슬레이브 인터페이스들(141, 143, 145)은 각각 리오더 버퍼를 포함한다.
마스터 장치들(110, 120, 130)은 특정 슬레이브 장치에 액세스하기 위하여 인터커넥터(140)에 명령어, 어드레스, 데이터 등을 제공한다. 마스터 장치들(110, 120, 130)은 각각 채널 포트들(AW, W, B, AR, R)을 통하여 슬레이브 장치들(150, 160)에 액세스한다. 여기서, 채널 포트(AW)로는 쓰기 요청이 전달된다. 채널 포트(W)로는 쓰기 데이터가 전송된다. 채널 포트(B)로는 쓰기 요청에 대한 응답이 전달된다. 채널 포트(AR)로는 읽기 요청이 전달된다. 채널 포트(R)로는 읽기 요청에 응답하여 메모리에서 읽혀진 데이터가 전달된다. 마스터 장치들(110, 120, 130)은, 예를 들면, 중앙 처리 장치(CPU), 마이크로 컨트롤러, 또는 마이크로 프로세서 등을 포함할 수 있다.
인터커넥터(140)는 마스터 장치들(110, 120, 130)과 슬레이브 장치(150, 160)들 사이에서 인터페이싱을 제공한다. 인터커넥터(140)는 마스터 장치들(110, 120, 130) 각각과 인터페이싱하기 위한 슬레이브 인터페이스들(141, 143, 145)을 포함한다. 슬레이브 인터페이스0(141)는 마스터 장치0(110)와 연결된다. 슬레이브 인터페이스1(143)는 마스터 장치1(120)와 연결된다. 슬레이브 인터페이스2(145)는 마스터 장치2(130)와 연결된다. 슬레이브 인터페이스들(141, 143, 145) 각각은 대응하는 마스터 장치들(110, 120, 130)의 액세스 요청 또는 요청에 대한 응답 데이터를 송수신한다.
인터커넥터(140)는 슬레이브 장치들(150, 160)과의 인터페이싱을 위한 마스터 인터페이스들(147, 149)을 포함한다. 마스터 인터페이스0(147)는 대응하는 슬레이브 장치0(150)와 연결된다. 마스터 인터페이스1(149)는 대응하는 슬레이브 장치1(160)에 연결된다. 마스터 인터페이스들(147, 149) 각각은 슬레이브 인터페이스들(141, 143, 145)로부터의 액세스 요청을 대응하는 슬레이브 장치들(150, 160)에 전달한다. 그리고 마스터 인터페이스들(147, 149) 각각은 슬레이브 장치들(150, 160)로부터 제공되는 응답 데이터를 채널의 점유권을 가진 슬레이브 인터페이스로 전달할 것이다.
본 발명의 슬레이브 인터페이스들(141, 143, 145)은 마스터 장치로부터의 요청에 대응하는 트래픽을 중재한다. 뿐만 아니라, 슬레이브 인터페이스들(141, 143, 145)은 슬레이브 장치들(150, 160)로부터 마스터 장치들(110, 120, 130)로 전달되는 응답 데이터에 대해서도 중재 동작을 수행한다. 특히, 슬레이브 인터페이스들(141, 143, 145)은 대응하는 마스터 장치의 동작 특성을 고려하여, 응답 데이터에 대한 중재를 수행할 수 있다. 이하에서는 슬레이브 인터페이스들(141, 143, 145) 각각의 동작 설명은 하나의 슬레이브 인터페이스0(141)의 설명을 통해서 대신하기로 한다.
슬레이브 인터페이스0(141)는 마스터 장치0(110)와의 인터페이싱을 전담한다. 슬레이브 인터페이스0(141)는 마스터 장치0(110)로부터 전달되는 읽기나 쓰기 요청에 응답하여 메모리 인터리빙 동작을 수행한다. 슬레이브 인터페이스0(141)는 마스터 장치0(110)의 요청에 대한 응답을 중재한다. 특히, 슬레이브 인터페이스0(141)는 마스터 장치0(110)의 동작 특성을 참조하여 버퍼링되는 데이터의 전송 순서를 조정할 수 있다.
예를 들면, 마스터 장치0(110)로의 응답 트래픽이 증가하여 응답 지연이 발생하는 경우를 가정하자. 이때, 슬레이브 인터페이스0(141)는 마스터 장치0(110)의 특성에 따라 응답에 대한 중재를 수행한다. 슬레이브 인터페이스0(141)는 동일한 트랜잭션 ID의 요청에 대해 메모리 인터리빙을 적용하기 위한 리오더 버퍼(Reorder buffer)를 포함한다. 동일한 트랜잭션 ID를 가지는 메모리 요청이 슬레이브 장치0(150)와 슬레이브 장치1(160)에 전달되면, 슬레이브 장치들(150, 160)은 요청된 데이터를 슬레이브 인터페이스0(141)에 각각 제공한다. 동일 ID의 요청이라 할지라도, 슬레이브 인터페이스0(141)의 리오더 버퍼(Reorder buffer)에 도달하는 시간은 다를 수 있다. 리오더 버퍼에 저장된 서로 다른 슬레이브 장치로부터 제공된 응답 데이터는 순서는 마스터 장치0(110)가 요청한 순서로 재구성되어 출력될 것이다.
그리고, 리오더 버퍼에 트래픽이 과도하게 증가하는 경우, 슬레이브 인터페이스0(141)는 저장된 데이터의 전송 우선순위를 마스터의 동작 특성을 고려하여 결정할 수 있다. 이러한 동작을 위하여 슬레이브 인터페이스0(141)는 리오더 버퍼와 제어 로직(미도시됨)을 포함한다. 예를 들어, 마스터 장치0(110)의 성능이 최초 제공되는 응답 데이터 도달 시간에 민감한 경우를 가정하자. 그러면, 슬레이브 인터페이스0(141)는 리오더 버퍼에 저장된 일련의 데이터들 중 각각의 요청된 트랜잭션의 최초 버스터 데이터를 가장 우선적으로 제공하도록 설정될 것이다. 이밖에, 마스터 장치들의 다양한 특성에 따라 리오더 버퍼에 저장된 데이터의 마스터 장치로의 전송 우선순위가 설정될 수 있을 것이다.
슬레이브 장치들(150, 160)은 마스터로부터 제공받은 명령에 응답하여, 제공받은 명령을 수행하는 장치를 의미한다. 슬레이브 장치들(150, 160)은, 예를 들면, 휘발성 메모리 장치, 불휘발성 메모리 장치, 또는 메모리 장치를 제어하는 메모리 컨트롤러 등을 포함할 수 있다. 슬레이브 장치들(150, 160)은 인터커넥터(140)에 전기적으로 연결되는 슬레이브 IP에 대응한다. 슬레이브 장치들(150, 160) 각각은 메모리 컨트롤러와 디램들로 구성될 수 있다.
이상의 설명에 따르면, 본 발명의 슬레이브 인터페이스는 대응하는 마스터 장치의 특성에 따라 응답 데이터를 중재한다. 즉, 슬레이브 인터페이스는 마스터 장치의 동작 특성에 따라 리오더 버퍼에 저장된 응답 데이터의 출력 우선순위를 결정한다. 그리고 슬레이브 인터페이스는 결정된 우선순위에 따라 마스터 장치로 응답 데이터를 출력할 것이다. 본 발명의 슬레이브 인터페이스에 따르면, 요청과 응답의 양방향 트래픽에 대한 데이터 중재를 수행하여 고성능의 시스템 온 칩을 구현할 수 있다.
도 3은 본 발명에 따른 슬레이브 인터페이스의 구성을 예시적으로 보여주는 블록도이다. 도 3을 참조하면, 슬레이브 인터페이스0(141, 도 2 참조)는 리오더 버퍼(210), 선택기(220), 및 제어 로직(230)을 포함한다.
리오더 버퍼(210)는 복수의 마스터 인터페이스들(Master interfaces)로부터 제공되는 응답 데이터를 일시 저장하는 복수의 버퍼 라인들(Buffer line 1~Buffer line 8)을 포함한다. 복수의 버퍼 라인들 각각은 모든 슬레이브 장치들로부터 제공되는 데이터를 저장할 수 있다. 리오더 버퍼(210)는 복수의 버퍼 라인들 각각에 버퍼링되는 응답 데이터의 상태를 모니터링할 수 있다. 응답 데이터의 트래픽이 기준치 이상으로 증가하면, 리오더 버퍼(210)는 버퍼 상태 정보(BS)를 제어 로직(230)으로 전달한다. 리오더 버퍼(210)의 각 버퍼 라인들에 저장되는 응답 데이터의 형태는 후술하는 도 5에서 상세히 설명될 것이다.
선택기(220)는 리오더 버퍼(210)에 저장된 데이터를 마스터 인터페이스에서 발행된 순서대로 L:1 중재를 수행한다. 선택기(220)는 제어 로직(230)에 의해서 선택된 버퍼 라인의 출력을 마스터 장치 측으로 전달할 것이다.
제어 로직(230)은 버퍼 상태 정보(BS)를 참조하여 선택기(220)를 제어한다. 버퍼 상태 정보(BS)는 리오더 버퍼(210)에 입력되는 응답 데이터의 트래픽 상태를 나타낸다. 제어 로직(230)은 리오더 버퍼(210)에 저장되는 응답 데이터의 트래픽이 기준치보다 적은 경우에는 마스터 인터페이스들에서 이슈된 순서대로 출력되도록 선택기(220)를 제어한다. 반면, 제어 로직(230)은 리오더 버퍼(210)에 저장되는 응답 데이터의 트래픽 상태가 기준치 이상인 경우, 마스터 장치의 특성을 고려한 L:1 중재를 수행한다.
마스터 장치의 특성을 고려한 중재의 예로는, 마스터 장치의 동작 특성에 따라 리오더 버퍼(210)에 저장된 데이터의 출력 순서를 정하는 것이다. 제어 로직(230)이 수행하는 리오더 버퍼(210)에 대한 중재는 마스터 장치의 성능을 높이기 위한 방향으로 이루어진다. 따라서, 응답 데이터의 중재를 통해서 마스터 장치의 성능을 극대화할 수 있다.
마스터 장치의 성능은 요청한 데이터의 최초 지연(Initial latency)에 크게 영향을 받기도 한다. 마스터 장치는 데이터 종류에 따라 다른 트랜잭션 ID를 부여한다. 따라서, 응답 데이터는 ID에 따라 서로 다른 속성을 가질 수 있다. 속성에 따라 어떤 ID의 응답 데이터는 다른 ID의 응답 데이터보다 마스터 장치의 성능에 더 큰 영향을 미칠 수 있다. 또 다른 마스터 장치에 있어서, 응답 데이터들 전체의 평균 지연이 마스터 장치의 성능에 주요 인자로 작용하기도 한다. 하지만, 제어 로직(230)의 중재 기준이 되는 마스터 장치의 특성은 여기의 개시에만 국한되지 않음은 잘 이해될 것이다. 본 발명의 제어 로직(230)은 상술한 마스터 장치들의 동작 특성에 따라 리오더 버퍼(210)에 저장된 데이터를 중재하게 될 것이다.
도 4는 본 발명에 따른 슬레이브 인터페이스의 중재 동작을 간략히 보여주는 순서도이다. 도 4를 참조하면, 슬레이브 인터페이스는 리오더 버퍼(Reorder buffer)의 상태에 따라서 중재 동작 모드를 결정할 수 있다.
단계 S110에서, 제어 로직(230, 도 3 참조)은 리오더 버퍼(210)를 모니터링한다. 리오더 버퍼(210)에 버퍼링되는 응답 데이터는 복수의 버퍼 라인들 중 어느 하나에 저장될 수 있다. 여기에서는 버퍼 라인들의 수(Depth)가 8인 경우를 가정하기로 한다. 각각의 버퍼 라인들은 응답 데이터의 최대 크기를 수용할 수 있도록 구성될 수 있다. 즉, 마스터 장치가 요청할 수 있는 가장 큰 버스트 길이(Burst-length)의 응답 데이터를 수용할 수 있도록 각각의 버퍼 라인들의 사이즈가 설정될 수 있다.
단계 S120에서, 제어 로직(230)은 리오더 버퍼(210)의 버퍼 상태 신호(BS)에 따라 중재 모드를 선택한다. 슬레이브 장치들로부터 제공되는 응답 데이터의 트래픽이 많지 않은 경우에는 단계 S130으로 분기한다. 하지만, 리오더 버퍼(230)에 유입되는 응답 데이터가 출력되는 응답 데이터보다 많아질 수 있다. 그리고 리오더 버퍼(210) 내부의 모든 버퍼 라인들이 응답 데이터로 점유되어 병목 현상이 발생할 수 있다. 이때, 리오더 버퍼(210)는 버퍼 점유율이 기준치 이상인 것으로 판단할 수 있다. 리오더 버퍼(210)는 버퍼 상태 신호(BS)를 활성화하여 제어 로직(230)으로 리오더 버퍼(210)의 트래픽의 과다함을 알려준다. 리오더 버퍼(210)에 유입되는 트래픽이 과다할 경우, 절차는 단계 S140으로 이동한다.
단계 S130에서, 리오더 버퍼(210)의 트래픽은 정상 상태이다. 그러므로, 제어 로직(230)은 마스터 인터페이스에서 발행되는 요청의 순서로 버퍼링된 데이터를 출력되도록 중재 동작을 수행한다. 이때에도 제어 로직(230)은 동일한 ID에 대응하는 응답 데이터의 경우에는, 마스터 장치로부터 요청된 순서대로 응답 데이터의 출력 순서를 재조정한다.
단계 S140에서, 제어 로직(230)은 버퍼 상태 정보(BS)를 통해서 리오더 버퍼(210)의 트래픽 과다를 인식할 수 있다. 제어 로직(230)은 연결이 활성화된 마스터 장치의 동작 특성을 고려하여 중재 동작을 수행한다. 제어 로직(230)은 마스터 장치가 요청한 데이터의 출력 순서를 마스터 장치의 성능을 극대화하기 위한 방식으로 재구성하게 될 것이다. 만일 마스터 장치의 성능이 최초로 전달되는 응답 데이터의 지연에 크게 영향을 받는 경우, 제어 로직(230)은 각각의 응답 데이터들 중에서 최초 버스트 데이터를 우선적으로 출력하도록 선택기(220)를 제어할 수 있다. 제어 로직(230)은 이밖에 다양한 마스터 장치의 특성에 따라서 버퍼링된 응답 데이터의 출력 순서를 재조정할 수 있다.
본 발명에 따른 마스터 장치의 특성을 고려한 응답 데이터의 중재에 의하면 응답 데이터의 지연에 의한 마스터 장치의 성능 감소를 차단할 수 있다. 그리고 마스터 장치의 동작 특성에 따라 다양한 방식의 응답 데이터에 대한 중재를 구현할 수 있다.
도 5는 도 3의 리오더 버퍼(210)에 저장되는 응답 데이터의 구조를 예시적으로 보여주는 표이다. 도 5를 참조하면, 리오더 버퍼(210)의 각각의 버퍼 라인들은 ID 필드, 버스트 길이(Burst-length) 필드, 레지던트 카운트(Resident count) 필드, 그리고 응답 데이터 필드를 포함할 수 있다.
ID 필드는 각각의 버퍼 라인들에 저장되는 데이터의 트랜잭션 ID에 대응한다. ID 필드는 마스터 인터페이스로부터 전달되는 데이터에 대한 트랜잭션 ID를 포함한다. 버스트-길이(Burst-length)는 마스터 장치에 의해서 요청된 데이터의 버스트 길이(Burst-length)를 나타낸다. 그리고 레지던트 카운트(Resident count)는 해당되는 데이터가 대응하는 버퍼 라인에 입력된 시간을 나타낸다.
여기서, 각각의 버퍼 라인들의 크기는 가장 큰 버스트 길이에 대응하는 응답 데이터를 수용할 수 있을 정도이어야 한다. 그러나 설명의 편의를 위하여 버스트 길이 8을 최대 응답 데이터의 사이즈로 가정하기로 한다. 그리고 리오더 버퍼(210)에는 수용가능한 모든 공간들이 응답 데이터에 의해서 점유된 상태를 나타낸다. 그리고 현재에도 리오더 버퍼(210)에 유입될 데이터가 유출되는 데이터의 양보다 많은 트래픽의 과다 상태를 가정하기로 한다.
도 6은 트래픽이 과다한 상태의 리오더 버퍼에 대한 중재 동작을 예시적으로 보여주는 순서도이다. 즉, 도 6의 중재 동작은 도 4의 단계 S140을 좀더 구체적으로 설명하고 있다. 도 6을 참조하면, 본 발명의 슬레이브 인터페이스(141, 도 3 참조)는 데이터를 요청한 마스터 장치의 동작 특성에 따라 다양한 방식의 중재 동작을 수행할 수 있다. 리오더 버퍼(210, 도 3 참조)로부터 과다한 트래픽이 존재함을 지시하는 버퍼 상태 정보(BS)가 제공되면, 제어 로직(230)은 마스터 장치의 특성을 참조하는 중재 동작을 시작한다.
단계 S210에서, 제어 로직(230)은 마스터 장치의 동작 특성을 참조하여 중재 모드를 선택한다. 제어 로직(230)은 마스터 장치의 동작 특성이 응답 데이터의 최초 전달 시간에 민감한 경우에는 최초 데이터 민감(First data critical)으로 판단한다. 최초 데이터 민감 상황에서, 절차는 리오더 버퍼의 각 버퍼 라인들의 최초 버스트 데이터를 전달하기 위한 단계 S220으로 이동한다. 반면 마스터 장치의 성능이 특정 ID의 응답 데이터에 대해서 민감한 경우, 제어 로직(230)은 특정 ID 민감(Specific ID critical)으로 판단한다. 이때, 절차는 특정 ID에 대응하는 데이터를 우선적으로 전송하기 위한 단계 S230으로 이동한다.
그리고 마스터 장치의 성능이 응답 데이터의 평균 지연에 민감한 경우, 제어 로직(230)은 평균 지연 민감(Average latency critical)으로 판단한다. 이때, 절차는 가장 짧은 버스트 길이의 데이터를 우선적으로 출력하는 단계 S240으로 이동한다. 그리고 다양한 마스터 장치들의 특징을 결합하여 적용하는 경우, 절차는 복합 중재 방식을 수행하기 위한 단계 S250으로 이동한다.
여기서, 복수의 중재 모드 중에서 단계 S220은 제 1 중재 모드, 단계 S230은 제 2 중재 모드, 단계 S240은 제 3 중재 모드, 그리고 단계 S250은 제 4 중재 모드로 칭할 수 있다.
최초 데이터 민감(First data critical) - 단계 S220, 제 1 중재 모드
먼저, 단계 S220에서 수행되는 동작을 구체적으로 살펴보기로 한다. 단계 S220에서, 마스터 장치의 성능이 최초 전달 데이터의 지연 시간에 민감한 경우의 중재 동작을 수행한다. 즉, 마스터 장치가 슬레이브 장치로 요청한 시간부터 응답 데이터가 제공되는 시점(Data request to First data response)까지의 최초 지연이 마스터 장치의 성능에 주요 영향을 미치는 경우에 해당한다. 이때, 제어 로직(230)은 리오더 버퍼(210)의 내에 저장된 버스트 데이터의 첫 번째 데이터를 우선적으로 전송하도록 선택기(220)를 제어한다.
예를 들면, 도 5와 같은 리오더 버퍼(210) 상태에서, 제어 로직(230)은 가장 먼저 각각의 버퍼 라인들에 저장된 버스트 데이터들 중 첫 번째 버스트 데이터를 각각 먼저 전송할 수 있다. 제어 로직(230)은 8개의 버퍼 라인들에 저장된 버스트 데이터 중 첫 번째 데이터들을 각각 가장 먼저 출력하도록 리오더 버퍼(210)를 제어할 수 있다. 간략히 순서를 나열하면 다음과 같다. 즉, 각각의 버스트 데이터들은 출력 순서(0x11→0x21→0x31→0x41→0x51→0x61→0x71→0x81→...→0x18→0x28→0x38→0x48→0x58→0x68→0x78→0x88)로 마스터 장치에 제공될 것이다.
CPU의 캐시(Cache)와 관련된 데이터 트래픽은 각 트래픽의 첫 번째 데이터가 성능에 큰 영향을 미치는 것으로 알려져 있다. 따라서, 버퍼 라인들 각각에 일시 저장된 버스트 데이터들의 순서에 따라서 데이터의 출력이 이루어진다. 즉, 버퍼 라인들 각각에 있어서, 버스트 순서가 우선인 데이터가 먼저 출력된다. 이러한 중재에 의해서 마스터 장치에 전달되는 최초 데이터의 지연은 감소될 수 있다.
특정 ID 민감(Specific ID critical) - 단계 S230, 제 2 중재 모드
단계 S230에서는 마스터 장치가 응답 데이터의 ID에 따라서 다른 성능을 보여주는 경우에 적용된다. 응답 데이터가 마스터 장치에서 사용되는 제어 데이터와 같이 성능에 깊이 관련된 경우, 그에 대응하는 특정 ID의 데이터가 먼저 전달되어야 할 것이다. AXI 프로토콜과 같이 트랜잭션 ID를 사용하는 프로토콜에서는 특정 ID에 대한 응답 지연이 마스터 장치의 성능에 크게 영향을 미칠 수 있다. 이 경우, 리오더 버퍼(210) 내에서도 특정 ID에 대응하는 응답 데이터를 먼저 마스터 장치로 전송하면 성능이 향상될 것이다.
특정 ID에 대응하는 응답 데이터가 항상 먼저 전송될 경우, 우선순위가 높지 못한 데이터는 최악의 경우에는 마스터에 전달될 기회를 갖지 못할 수도 있다. 따라서, 우선순위가 높지 못한 ID의 데이터는 리오더 버퍼(210)에 로드된 후 일정 시간이 경과하면 강제적으로 마스터 장치로 전송하도록 설정할 수 있다. 이러한 동작은 도 5의 표에서 기술된 레지던트 카운트(Resident count) 필드에 의해서 구현될 수 있다. 레지던트 카운트의 값이 특정 값(Oxff)에 도달하면, 우선순위가 높은 ID의 데이터보다 먼저 출력된다.
마스터 장치가 MFC(Multi-Format Codec) 기능을 수행하는 경우, 특정 ID의 응답 지연이 동영상의 인코딩/디코딩 성능에 영향을 미친다. MFC 데이터가 도 5와 같이 리오더 버퍼(210)를 점유하고 있다고 가정하자. 그리고 4번 및 5번 ID의 데이터에 마스터 장치의 성능이 가장 크게 영향을 받고, 8번 ID의 데이터에 가장 덜 민감한 조건을 가정하기로 한다. 즉, 마스터 장치의 성능에 영향을 미치는 응답 데이터의 ID의 우선순위가 다음과 같다고 가정하자. ID 우선순위(ID4=ID5 > ID1=ID2=ID3=ID6=ID7 > ID8). 이때, 제어 로직(230)의 중재에 의한 데이터 출력 순서는 다음과 같다. ID8(0x81→0x82→...→0x88)→ID4(0x41→0x42→...→0x48)→ID5(0x51→0x52→...→0x58)→...→ID7(0x71→0x72→...→0x78).
여기서, 8번 ID의 응답 데이터는 레지던트 카운트(Resident count)에 의해 타임 아웃(time-out)이 발생해 가장 먼저 전송되었다. 그리고 나머지 ID의 응답 데이터는 ID 우선순위에 따라 전송된다. 이러한 ID 우선순위에 따라 마스터 장치로 데이터를 전송하면, 마스터 장치의 성능에 영향을 미치는 트래픽의 인터커넥터 점유율이 높아져 SoC 성능을 높일 수 있다. 즉, 동일한 비율로 인터커넥터가 점유되더라도, 마스터 장치의 성능에 중요한 데이터의 트래픽이 점유한 경우와 그렇지 못한 경우에는 인터커넥터의 효율이 다를 수밖에 없다.
평균 지연 민감(Average latency critical) - 단계 S240, 제 3 중재 모드
단계 S240에서는, 응답 데이터의 평균 지연이 마스터 장치의 성능에 중요한 요인으로 작용하는 경우에 슬레이브 인터페이스의 동작이 간략히 나타나 있다. 즉, 리오더 버퍼(210)에 저장된 응답 데이터들 전체의 평균 지연을 줄이면 마스터 장치의 성능이 향상되는 경우에 해당된다. 이런 경우, 버스트 길이가 상대적으로 짧은 응답 데이터를 먼저 전송하는 것이 유리하다.
상대적으로 짧은 버스트 길이의 응답 데이터의 우선순위가 높은 경우, 우선순위가 높지 못한 데이터는 최악의 경우에는 마스터에 전달될 기회를 갖지 못할 수도 있다. 따라서, 우선순위가 높지 못한 ID의 데이터는 일정 시간 리오더 버퍼(210)에 로드된 시간이 경과하면, 강제적으로 마스터 장치로 전송하도록 설정할 수 있다. 즉, 레지던트 카운트(Resident count) 필드에 의해서 구현될 수 있다. 레지던트 카운트의 값이 특정 값(Oxff)에 도달하면, 우선순위가 높은 ID의 데이터보다 먼저 출력한다.
응답 데이터가 도 5와 같이 리오더 버퍼(210)를 점유하고 있다고 가정하자. 그러면, 2번 내지 4번 응답 데이터의 버스트 길이는 4로 가장 짧다. 그 다음으로는 1번, 5번 및 6번 응답 데이터가 버스트 길이 6에 대응한다. 그리고 7번 및 8번 데이터의 버스트 길이가 8로서 가장 길다. 즉, 전송 우선순위 (ID2=ID3=ID4 > ID1=ID5=ID6 > ID7=ID8)가 적용될 것이다. 전송 우선순위와 레지던트 카운트를 고려하면, 응답 데이터의 전송 순서는 다음과 같다. No8(0x81→0x82→...→0x88)→No2→No3→No4→No1→No5→No6(0x61→0x62→0x63→0x64→0x65→0x66→0x67→0x68)→No7(0x71→0x72→...→0x78).
여기서, 8번 ID의 응답 데이터는 레지던트 카운트(Resident count)에 의해 타임아웃(time-out)이 발생해 가장 먼저 전송되었다. 그리고 나머지 ID의 응답 데이터는 ID 우선순위에 따라 전송된다. 이러한 ID 우선순위에 따라 마스터 장치로 데이터를 전송하면, 마스터 장치로 전달되는 응답 데이터의 평균 지연이 최소화될 수 있다.
복합 우선 순위(Hybrid) - 단계 S250, 제 4 중재 모드
단계 S250에는, 요청 데이터에 대한 마스터 장치의 동작 특성이 다양하고 복잡한 경우에 슬레이브 인터페이스의 중재 동작을 보여준다. 마스터 장치의 성능이 앞서 설명된 3가지의 특성(최초 지연 미감, 특정 ID 민감, 평균 지연에 민감)을 복합적으로 가질 수 있다. 이 경우에는 리오더 버퍼(210)는 각각의 특성들에 대한 우선순위에 따라 요청 데이터를 출력할 수 있다. 예를 들면, 특정 ID 민감 특성과 평균 지연 민감 특성을 복합적으로 사용하는 경우를 가정하자. 그리고 특정 ID 민감 특성이 더 높은 우선순위를 가지는 것으로 가정하기로 한다. 이때에도 레지던트 카운트(Resident count) 값이 기준치를 넘은 버퍼 라인의 데이터는 최고 우선순위를 가지게 될 것이다.
복합적인 조건에서, 전송 우선순위와 레지던트 카운트를 고려하면, 응답 데이터의 전송 순서는 다음과 같다. No8(0x81→0x82→...→0x88)→No4→No5→No2→No3→No1→No6→No7(0x71→0x72→...→0x78)
여기서, 8번 ID의 응답 데이터는 레지던트 카운트(Resident count)에 의해 타임아웃(time-out)이 발생해 가장 먼저 전송되었다. 그리고 나머지 응답 데이터는 복합적인 우선순위에 따라 전송된다. 이러한 우선순위에 따르면, 다양한 응답 데이터에 따라 다양한 특성을 가지는 마스터 장치에 대한 최적의 중재 동작이 가능하다.
도 7은 도 2의 슬레이브 인터페이스(141)의 다른 예를 보여주는 블록도이다. 도 7을 참조하면, 슬레이브 인터페이스(141′)는 리오더 버퍼(310), 선택기(320), 및 특정 기능 레지스터(335)를 포함하는 제어 로직(330)을 포함한다.
리오더 버퍼(310)는 복수의 마스터 인터페이스들(Master interfaces)로부터 제공되는 응답 데이터를 버퍼링하는 복수의 버퍼 라인들(Buffer line 1~Buffer line 8)로 구성될 수 있다. 복수의 버퍼 라인들 각각은 모든 슬레이브 장치들로부터 제공되는 데이터를 저장할 수 있다. 리오더 버퍼(310)는 복수의 버퍼 라인들 각각에 버퍼링되는 응답 데이터의 상태를 모니터링할 수 있다. 응답 데이터의 트래픽이 기준치 이상으로 증가하면, 리오더 버퍼(310)는 버퍼 상태 정보(BS)를 제어 로직(330)으로 전달한다.
선택기(320)는 리오더 버퍼(310)에 저장된 데이터를 마스터 인터페이스에서 발행된 순서대로 L:1 중재를 수행한다. 선택기(320)는 제어 로직(330)에 의해서 선택된 버퍼 라인의 출력을 마스터 장치로 전달할 것이다.
제어 로직(330)은 리오더 버퍼(310)에 버퍼링되는 응답 데이터의 트래픽 상태를 나타내는 버퍼 상태 정보(BS)를 참조하여 선택기(320)를 제어한다. 제어 로직(330)은 리오더 버퍼(310)에 저장되는 응답 데이터의 트래픽이 기준치 이하인 경우에는 마스터 인터페이스들에서 이슈된 순서대로 출력되도록 L:1 중재를 수행한다. 반면, 제어 로직(330)은 리오더 버퍼(310)에 저장되는 응답 데이터의 트래픽이 기준치보다 증가하는 경우, 마스터 장치의 특성을 고려한 L:1 중재를 수행한다.
마스터 장치의 특성을 고려한 중재의 예로는, 요청을 발행한 마스터 장치의 동작 특성에 따라 리오더 버퍼(310)에 저장된 데이터의 출력 순서를 정하는 것이다. 제어 로직(330)이 수행하는 리오더 버퍼(310)에 대한 중재 동작은 마스터 장치의 동작 특성에 의거하여 이루어진다. 특히, 본 발명의 제어 로직(330)은 특정 기능 레지스터(SFR, 335)를 포함한다. 특정 기능 레지스터(335)에는 마스터 장치의 특성 정보가 저장된다. 예를 들면, 특정 기능 레지스터(335)에는 최초 지연 민감, 특정 ID 민감, 평균 지연 민감, 그리고 복합 특성(Hybrid) 등의 특성이 입력될 수 있다. 이러한 특정 기능 레지스터(335)의 설정은 마스터 장치의 요청에 포함되어 응답 데이터의 우선순위를 결정할 수 있다. 또는, 특정 기능 레지스터(335)의 설정은 사용자에 의해서 이루어질 수도 있을 것이다.
본 발명에 따른 반도체 장치는 다양한 형태들의 패키지를 이용하여 실장될 수 있다. 예를 들면, 본 발명에 따른 플래시 메모리 장치 그리고/또는 메모리 컨트롤러는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
10, 20, 30, 110, 120, 130 : 마스터 장치
40, 140 : 인터커넥터
50, 60, 150, 160 : 슬레이브 장치
52, 62 : 메모리 컨트롤러
54, 64 : 디램
141, 143, 145 : 슬레이브 인터페이스
147, 149 : 마스터 인터페이스
210, 310 : 리오더 버퍼
220, 320 : 선택기
230, 330 : 제어 로직
335 : 특정 기능 레지스터(SFR)
40, 140 : 인터커넥터
50, 60, 150, 160 : 슬레이브 장치
52, 62 : 메모리 컨트롤러
54, 64 : 디램
141, 143, 145 : 슬레이브 인터페이스
147, 149 : 마스터 인터페이스
210, 310 : 리오더 버퍼
220, 320 : 선택기
230, 330 : 제어 로직
335 : 특정 기능 레지스터(SFR)
Claims (10)
- 마스터 장치;
상기 마스터 장치의 요청에 응답하여 데이터를 공급하는 복수의 슬레이브 장치들; 그리고
상기 복수의 슬레이브 장치들로부터 전달되는 복수의 응답 데이터들을 상기 마스터 장치가 요청한 순서에 따라 상기 마스터 장치에 제공하고는 인터커넥터를 포함하되,
상기 인터커넥터는 상기 요청 데이터를 상기 마스터 장치의 동작 특성에 따른 우선순위로 중재하고,
상기 인터커넥터는 상기 복수의 응답 데이터들을 상기 마스터 장치가 요청한 순서로 제공하기 위한 슬레이브 인터페이스를 포함하되,
상기 슬레이브 인터페이스는:
동일한 트랜잭션 ID에 대응하는 2개 이상의 응답 데이터들을 상기 마스터 장치가 요청한 순서로 재배열하기 위한 리오더 버퍼;
상기 리오더 버퍼에 저장되는 상기 복수의 응답 데이터들을 선택적으로 출력하기 위한 선택기; 및
상기 리오더 버퍼의 상태에 따라 상기 응답 데이터의 출력 순서를 제어하는 제어 로직을 포함하는 시스템 온 칩. - 삭제
- 삭제
- 삭제
- 제 1 항에 있어서,
상기 제어 로직은 상기 리오더 버퍼의 트래픽이 기준치보다 많은 경우에 상기 복수의 응답 데이터들의 출력 우선순위를 상기 마스터 장치의 특성을 참조하여 결정하는 시스템 온 칩. - 제 5 항에 있어서,
상기 제어 로직은, 최초 전달 지연 특성, 특정 ID의 데이터에 대한 민감도, 그리고 평균 지연에 대한 민감도를 포함하는 상기 마스터 장치의 특성들 중 적어도 하나를 참조하여 상기 복수의 응답 데이터들의 전달 우선순위를 결정하는 시스템 온 칩. - 제 1 항에 있어서,
상기 복수의 응답 데이터들 각각은, ID 필드, 버스트 길이(Burst-length) 필드, 레지던트 카운트(Resident count) 필드, 그리고 데이터 필드를 포함하는 시스템 온 칩. - 제 7 항에 있어서,
상기 제어 로직은 상기 복수의 응답 데이터들 중 상기 레지던트 카운트 필드의 값이 기준치에 도달한 응답 데이터를 최우선적으로 출력하는 시스템 온 칩. - 복수의 슬레이브 장치들로부터 제공된 복수의 응답 데이터들을 마스터 장치로 전달하는 인터커넥터의 중재 방법에 있어서:
상기 마스터 장치의 동작 특성에 대응하는 복수의 중재 모드들 중 하나를 선택하는 단계; 그리고
상기 선택된 중재 모드에 대응하는 우선순위에 따라 상기 복수의 응답 데이터들을 상기 마스터 장치로 전달하는 단계를 포함하되,
상기 복수의 중재 모드들에는 상기 응답 데이터의 최초 전달의 지연에 민감한 마스터 장치를 위한 제 1 중재 모드, 특정 ID의 데이터에 민감한 마스터 장치를 위한 제 2 중재 모드, 그리고 상기 응답 데이터의 평균 지연에 따라 성능이 결정되는 마스터 장치를 위한 제 3 중재 모드가 포함되는 중재 방법. - 삭제
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020100102008A KR101699781B1 (ko) | 2010-10-19 | 2010-10-19 | 시스템 온 칩 및 그것의 데이터 중재 방법 |
US13/276,748 US8819310B2 (en) | 2010-10-19 | 2011-10-19 | System-on-chip and data arbitration method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020100102008A KR101699781B1 (ko) | 2010-10-19 | 2010-10-19 | 시스템 온 칩 및 그것의 데이터 중재 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20120040533A KR20120040533A (ko) | 2012-04-27 |
KR101699781B1 true KR101699781B1 (ko) | 2017-01-26 |
Family
ID=46065464
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020100102008A KR101699781B1 (ko) | 2010-10-19 | 2010-10-19 | 시스템 온 칩 및 그것의 데이터 중재 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8819310B2 (ko) |
KR (1) | KR101699781B1 (ko) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2478795B (en) * | 2010-03-19 | 2013-03-13 | Imagination Tech Ltd | Requests and data handling in a bus architecture |
JP2012073851A (ja) * | 2010-09-29 | 2012-04-12 | Sony Corp | バスシステムおよびそのデッドロック回避回路 |
GB2484483B (en) * | 2010-10-12 | 2018-07-11 | Advanced Risc Mach Ltd | Communication using integrated circuit interconnect circuitry |
KR101841964B1 (ko) * | 2011-02-22 | 2018-05-15 | 삼성전자주식회사 | 인터커넥터를 포함하는 시스템 온 칩 및 그것의 제어 방법 |
US9069912B2 (en) * | 2012-03-31 | 2015-06-30 | Qualcomm Technologies, Inc. | System and method of distributed initiator-local reorder buffers |
US9619303B2 (en) * | 2012-04-11 | 2017-04-11 | Hewlett Packard Enterprise Development Lp | Prioritized conflict handling in a system |
US9189433B2 (en) | 2012-12-18 | 2015-11-17 | International Business Machines Corporation | Tracking a relative arrival order of events being stored in multiple queues using a counter |
US9575822B2 (en) | 2014-08-01 | 2017-02-21 | Globalfoundries Inc. | Tracking a relative arrival order of events being stored in multiple queues using a counter using most significant bit values |
WO2016039198A1 (ja) * | 2014-09-10 | 2016-03-17 | ソニー株式会社 | アクセス制御方法、バスシステム、および半導体装置 |
US10019306B2 (en) | 2016-04-27 | 2018-07-10 | Western Digital Technologies, Inc. | Collision detection for slave storage devices |
WO2017196138A2 (en) * | 2016-05-12 | 2017-11-16 | Lg Electronics Inc. | System and method for early data pipeline lookup in large cache design |
CN112134814B (zh) * | 2020-08-24 | 2022-04-12 | 合肥学院 | 一种板级互联网络结构及通信方法 |
US11687281B2 (en) * | 2021-03-31 | 2023-06-27 | Advanced Micro Devices, Inc. | DRAM command streak efficiency management |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5996036A (en) * | 1997-01-07 | 1999-11-30 | Apple Computers, Inc. | Bus transaction reordering in a computer system having unordered slaves |
US6816934B2 (en) * | 2000-12-22 | 2004-11-09 | Hewlett-Packard Development Company, L.P. | Computer system with registered peripheral component interconnect device for processing extended commands and attributes according to a registered peripheral component interconnect protocol |
US6804738B2 (en) * | 2001-10-12 | 2004-10-12 | Sonics, Inc. | Method and apparatus for scheduling a resource to meet quality-of-service restrictions |
KR100452325B1 (ko) | 2002-12-23 | 2004-10-12 | 한국전자통신연구원 | 프로세서 번호 할당 및 순차적 부팅이 가능한에이엠비에이 버스 기반 멀티프로세서 시스템 |
US7284080B2 (en) * | 2003-07-07 | 2007-10-16 | Sigmatel, Inc. | Memory bus assignment for functional devices in an audio/video signal processing system |
KR101089324B1 (ko) * | 2004-02-20 | 2011-12-02 | 삼성전자주식회사 | 복수의 마스터들을 포함하는 서브 시스템을 개방형 코어프로토콜을 기반으로 하는 버스에 연결하기 위한 버스시스템 |
KR20060039719A (ko) | 2004-11-03 | 2006-05-09 | 삼성전자주식회사 | 시스템 버스 성능 개선을 위한 상호접속 장치 |
US7263566B2 (en) | 2004-12-30 | 2007-08-28 | Qualcomm Incorporated | Method and apparatus of reducing transfer latency in an SOC interconnect |
US7500045B2 (en) * | 2005-03-23 | 2009-03-03 | Qualcomm Incorporated | Minimizing memory barriers when enforcing strongly-ordered requests in a weakly-ordered processing system |
US7872892B2 (en) * | 2005-07-05 | 2011-01-18 | Intel Corporation | Identifying and accessing individual memory devices in a memory channel |
KR101226389B1 (ko) | 2005-11-10 | 2013-01-24 | 삼성전자주식회사 | 시스템 온 칩에서의 독점 접근 제어 방법 및 시스템 |
US7802040B2 (en) * | 2005-12-22 | 2010-09-21 | Arm Limited | Arbitration method reordering transactions to ensure quality of service specified by each transaction |
GB2440758B (en) * | 2006-08-08 | 2011-03-30 | Advanced Risc Mach Ltd | Interconnect logic for a data processing apparatus |
GB2474446A (en) * | 2009-10-13 | 2011-04-20 | Advanced Risc Mach Ltd | Barrier requests to maintain transaction order in an interconnect with multiple paths |
US8356119B2 (en) * | 2010-04-26 | 2013-01-15 | Arm Limited | Performance by reducing transaction request ordering requirements |
EP2388707B1 (en) * | 2010-05-20 | 2014-03-26 | STMicroelectronics (Grenoble 2) SAS | Interconnection method and device, for example for systems-on-chip |
EP2444903A1 (en) * | 2010-09-29 | 2012-04-25 | STMicroelectronics (Grenoble 2) SAS | A transaction reordering arrangement |
JP2012073851A (ja) * | 2010-09-29 | 2012-04-12 | Sony Corp | バスシステムおよびそのデッドロック回避回路 |
KR101841173B1 (ko) * | 2010-12-17 | 2018-03-23 | 삼성전자주식회사 | 리오더 버퍼를 이용한 메모리 인터리빙 장치 및 그 메모리 인터리빙 방법 |
US8656078B2 (en) * | 2011-05-09 | 2014-02-18 | Arm Limited | Transaction identifier expansion circuitry and method of operation of such circuitry |
-
2010
- 2010-10-19 KR KR1020100102008A patent/KR101699781B1/ko active IP Right Grant
-
2011
- 2011-10-19 US US13/276,748 patent/US8819310B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US8819310B2 (en) | 2014-08-26 |
KR20120040533A (ko) | 2012-04-27 |
US20120131246A1 (en) | 2012-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101699781B1 (ko) | 시스템 온 칩 및 그것의 데이터 중재 방법 | |
CN103793342B (zh) | 一种多通道直接内存存取dma控制器 | |
US7849256B2 (en) | Memory controller with ring bus for interconnecting memory clients to memory devices | |
US7370134B2 (en) | System and method for memory hub-based expansion bus | |
EP1738264B1 (en) | Memory arbitration system and method having an arbitration packet protocol | |
US10749811B2 (en) | Interface virtualization and fast path for Network on Chip | |
CN105260331B (zh) | 一种双总线内存控制器 | |
US7721038B2 (en) | System on chip (SOC) system for a multimedia system enabling high-speed transfer of multimedia data and fast control of peripheral devices | |
US7185127B2 (en) | Method and an apparatus to efficiently handle read completions that satisfy a read request | |
EP0991999A1 (en) | Method and apparatus for arbitrating access to a shared memory by network ports operating at different data rates | |
US9122802B2 (en) | Interconnect, bus system with interconnect and bus system operating method | |
KR101841964B1 (ko) | 인터커넥터를 포함하는 시스템 온 칩 및 그것의 제어 방법 | |
US20120089758A1 (en) | System On Chip Keeping Load Balance And Load Balancing Method Thereof | |
JP2024524047A (ja) | ネットワークインターフェースデバイス | |
US10402348B2 (en) | Method and system for using feedback information for selecting a routing bus for a memory transaction | |
US8510493B2 (en) | Circuit to efficiently handle data movement within a cache controller or on-chip memory peripheral | |
CN112882986A (zh) | 一种带有超节点以及超节点控制器的众核处理器 | |
US10489318B1 (en) | Scatter-gather approach for parallel data transfer in a mass storage system | |
KR100973419B1 (ko) | 버스 중재 방법 및 장치 | |
KR20220132333A (ko) | PCIe 인터페이스 장치 및 그 동작 방법 | |
KR20120041008A (ko) | 버스 시스템 | |
US20180196766A1 (en) | Memory Controller, Memory Control Method and Semiconductor Storage Apparatus | |
KR101910619B1 (ko) | 시스템 칩 설계를 위한 효율적인 온칩버스 구조 | |
CN118012794A (zh) | 计算芯粒及电子设备 | |
US20080229030A1 (en) | Efficient Use of Memory Ports in Microcomputer Systems |
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 |