KR20220143590A - 다수의 독립적인 온-칩 상호연결부 - Google Patents
다수의 독립적인 온-칩 상호연결부 Download PDFInfo
- Publication number
- KR20220143590A KR20220143590A KR1020220046189A KR20220046189A KR20220143590A KR 20220143590 A KR20220143590 A KR 20220143590A KR 1020220046189 A KR1020220046189 A KR 1020220046189A KR 20220046189 A KR20220046189 A KR 20220046189A KR 20220143590 A KR20220143590 A KR 20220143590A
- Authority
- KR
- South Korea
- Prior art keywords
- network
- networks
- physically
- agents
- logically independent
- Prior art date
Links
- 239000004065 semiconductor Substances 0.000 claims abstract description 16
- 230000015654 memory Effects 0.000 claims description 96
- 238000004891 communication Methods 0.000 claims description 76
- 230000002093 peripheral effect Effects 0.000 claims description 41
- 238000000034 method Methods 0.000 claims description 22
- 238000012545 processing Methods 0.000 claims description 14
- 230000001427 coherent effect Effects 0.000 claims description 8
- 239000003795 chemical substances by application Substances 0.000 description 119
- 238000010586 diagram Methods 0.000 description 28
- 230000008901 benefit Effects 0.000 description 17
- 230000006870 function Effects 0.000 description 13
- 230000004044 response Effects 0.000 description 13
- 238000013461 design Methods 0.000 description 7
- 238000012986 modification Methods 0.000 description 7
- 230000004048 modification Effects 0.000 description 7
- 230000036541 health Effects 0.000 description 6
- 239000000463 material Substances 0.000 description 6
- 230000001419 dependent effect Effects 0.000 description 5
- 238000004519 manufacturing process Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000012806 monitoring device Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 238000001816 cooling Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- 101100465000 Mus musculus Prag1 gene Proteins 0.000 description 1
- 238000010521 absorption reaction Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 238000010438 heat treatment Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012358 sourcing Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000002194 synthesizing effect Effects 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
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/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7825—Globally asynchronous, locally synchronous, e.g. network on chip
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- 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/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- 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
-
- 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/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- 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/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
- G06F13/368—Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control
-
- 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/40—Bus structure
-
- 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/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
-
- 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/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17356—Indirect interconnection networks
- G06F15/17362—Indirect interconnection networks hierarchical topologies
-
- 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/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17356—Indirect interconnection networks
- G06F15/17368—Indirect interconnection networks non hierarchical topologies
- G06F15/17375—One dimensional, e.g. linear array, ring
-
- 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/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17356—Indirect interconnection networks
- G06F15/17368—Indirect interconnection networks non hierarchical topologies
- G06F15/17381—Two dimensional, e.g. mesh, torus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7821—Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2115/00—Details relating to the type of the circuit
- G06F2115/02—System on chip [SoC] design
-
- 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/0022—Multibus
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Multi Processors (AREA)
Abstract
일 실시예에서, 시스템 온 칩(SOC)은 회로부가 형성되는 반도체 다이를 포함하며, 여기서 회로부는 복수의 에이전트들, 및 복수의 에이전트들에 커플링된 복수의 네트워크 스위치들을 포함한다. 복수의 네트워크 스위치들은 복수의 물리적으로 그리고 논리적으로 독립적인 네트워크들을 형성하도록 상호연결된다. 복수의 물리적으로 그리고 논리적으로 독립적인 네트워크들 중 제1 네트워크는 제1 토폴로지에 따라 구성되고, 복수의 물리적으로 그리고 논리적으로 독립적인 네트워크들 중 제2 네트워크는 제1 토폴로지와 상이한 제2 토폴로지에 따라 구성된다. 예를 들어, 제1 토폴로지는 링 토폴로지일 수 있고, 제2 토폴로지는 메시 토폴로지일 수 있다. 일 실시예에서, 제1 네트워크 상에서 일관성이 강제될 수 있고, 제2 네트워크는 완화된 순서 네트워크일 수 있다.
Description
본 명세서에 설명된 실시예들은 시스템 온 칩(SOC) 집적 회로들에 관한 것으로, 더 상세하게는, SOC 내의 컴포넌트들 사이의 상호연결에 관한 것이다.
시스템 온 칩(SOC) 집적 회로(IC)들은 일반적으로 메모리 제어기들 및 주변 컴포넌트들과 같은 다양한 다른 컴포넌트들과 함께 시스템에 대한 중앙 프로세싱 유닛(CPU)으로서 기능하는 하나 이상의 프로세서들을 포함한다. 주어진 디바이스를 형성하기 위해 부가적인 컴포넌트들이 SOC와 함께 포함될 수 있다. 그러나, 집적 회로 다이 상에서 달성될 수 있는 트랜지스터들의 수가 계속해서 증가함에 따라, 주어진 SOC 상에 증가된 수들의 프로세서들 및 다른 컴포넌트들을 통합하여, 그에 따라, 주어진 디바이스를 형성하는 데 필요한 다른 컴포넌트들의 수를 감소시키는 것이 가능했다.
증가된 성능을 위해 SOC 상의 프로세서들 및 다른 별개의 컴포넌트들의 수들을 증가시키는 것이 바람직하다. 부가적으로, SOC에 부가하여 디바이스를 형성하는 데 필요한 다른 컴포넌트들의 수를 감소시킴으로써 디바이스에서 비용 절약들이 달성될 수 있다. 전체 시스템의 더 많은 부분이 SOC에 통합되면, 디바이스는 더 콤팩트할 수 있다(크기가 더 작음). 전체적으로 디바이스에 대한 감소된 전력 소비는 더 많은 컴포넌트들을 SOC에 통합함으로써 달성될 수 있다.
반면에, SOC 상의 프로세서들 및 다른 컴포넌트들의 수들을 증가시키는 것은 메모리 제어기들과 컴포넌트들 사이의 대역폭 요건들을 증가시키고, SOC 상에서 통신하는 데 사용되는 상호연결부를 압도할 수 있으며, 이는 레이턴시 증가들을 유발할 수 있다. 이용가능한 대역폭의 부족 및 레이턴시 증가는 컴포넌트들을 SOC에 통합함으로써 달성될 것으로 예상되었던 성능 이점들을 감소시킬 수 있다.
다음의 상세한 설명은 첨부 도면들을 참조하며, 이제 도면들이 간단히 설명된다.
도 1은 다수의 네트워크 상호연결 에이전트들의 일 실시예를 포함하는 시스템의 블록도이다.
도 2는 링 토폴로지(ring topology)를 사용하는 네트워크의 일 실시예의 블록도이다.
도 3은 메시 토폴로지(mesh topology)를 사용하는 네트워크의 일 실시예의 블록도이다.
도 4는 트리 토폴로지(tree topology)를 사용하는 네트워크의 일 실시예의 블록도이다.
도 5는 일 실시예에 대한 다수의 네트워크들을 갖는 시스템 온 칩(SOC)의 일 실시예의 블록도이다.
도 6은 일 실시예에 대해 도 5에 도시된 독립적인 네트워크들 중 하나를 예시하는 시스템 온 칩(SOC)의 일 실시예의 블록도이다.
도 7은 일 실시예에 대해 도 5에 도시된 독립적인 네트워크들 중 다른 하나를 예시하는 시스템 온 칩(SOC)의 일 실시예의 블록도이다.
도 8은 일 실시예에 대해 도 5에 도시된 독립적인 네트워크들 중 또 다른 하나를 예시하는 시스템 온 칩(SOC)의 일 실시예의 블록도이다.
도 9는 2개의 반도체 다이를 포함하는 멀티-다이 시스템의 일 실시예의 블록도이다.
도 10은 입력/출력(I/O) 클러스터의 일 실시예의 블록도이다.
도 11은 프로세서 클러스터의 일 실시예의 블록도이다.
도 12는, 가상 채널들 및 트래픽 유형들, 및 일 실시예에 대해 그들이 사용되는 도 5 내지 도 8에 도시된 네트워크들을 예시하는 테이블들의 쌍이다.
도 13은 네트워크 상의 트랜잭션(transaction)을 개시하는 일 실시예를 예시하는 흐름도이다.
도 14는 시스템의 일 실시예의 블록도이다.
도 15는 컴퓨터 액세스가능 저장 매체의 일 실시예의 블록도이다.
본 발명에 설명된 실시예들은 다양한 수정들 및 대안적인 형태들을 허용할 수 있지만, 그의 특정 실시예들이 도면들에 예로서 도시되고, 본 명세서에서 상세히 설명될 것이다. 그러나, 그에 대한 도면들 및 상세한 설명은 실시예들을 개시된 특정 형태로 제한하는 것으로 의도되는 것이 아니라, 그와는 반대로, 의도는 첨부된 청구범위의 사상 및 범주 내에 속한 모든 수정들, 등가물들, 및 대안들을 커버하기 위한 것임을 이해하여야 한다. 본 명세서에서 사용되는 표제들은 오직 구성 목적들을 위한 것이며 설명의 범위를 제한하기 위해 사용되는 것으로 의도되지 않는다.
도 1은 다수의 네트워크 상호연결 에이전트들의 일 실시예를 포함하는 시스템의 블록도이다.
도 2는 링 토폴로지(ring topology)를 사용하는 네트워크의 일 실시예의 블록도이다.
도 3은 메시 토폴로지(mesh topology)를 사용하는 네트워크의 일 실시예의 블록도이다.
도 4는 트리 토폴로지(tree topology)를 사용하는 네트워크의 일 실시예의 블록도이다.
도 5는 일 실시예에 대한 다수의 네트워크들을 갖는 시스템 온 칩(SOC)의 일 실시예의 블록도이다.
도 6은 일 실시예에 대해 도 5에 도시된 독립적인 네트워크들 중 하나를 예시하는 시스템 온 칩(SOC)의 일 실시예의 블록도이다.
도 7은 일 실시예에 대해 도 5에 도시된 독립적인 네트워크들 중 다른 하나를 예시하는 시스템 온 칩(SOC)의 일 실시예의 블록도이다.
도 8은 일 실시예에 대해 도 5에 도시된 독립적인 네트워크들 중 또 다른 하나를 예시하는 시스템 온 칩(SOC)의 일 실시예의 블록도이다.
도 9는 2개의 반도체 다이를 포함하는 멀티-다이 시스템의 일 실시예의 블록도이다.
도 10은 입력/출력(I/O) 클러스터의 일 실시예의 블록도이다.
도 11은 프로세서 클러스터의 일 실시예의 블록도이다.
도 12는, 가상 채널들 및 트래픽 유형들, 및 일 실시예에 대해 그들이 사용되는 도 5 내지 도 8에 도시된 네트워크들을 예시하는 테이블들의 쌍이다.
도 13은 네트워크 상의 트랜잭션(transaction)을 개시하는 일 실시예를 예시하는 흐름도이다.
도 14는 시스템의 일 실시예의 블록도이다.
도 15는 컴퓨터 액세스가능 저장 매체의 일 실시예의 블록도이다.
본 발명에 설명된 실시예들은 다양한 수정들 및 대안적인 형태들을 허용할 수 있지만, 그의 특정 실시예들이 도면들에 예로서 도시되고, 본 명세서에서 상세히 설명될 것이다. 그러나, 그에 대한 도면들 및 상세한 설명은 실시예들을 개시된 특정 형태로 제한하는 것으로 의도되는 것이 아니라, 그와는 반대로, 의도는 첨부된 청구범위의 사상 및 범주 내에 속한 모든 수정들, 등가물들, 및 대안들을 커버하기 위한 것임을 이해하여야 한다. 본 명세서에서 사용되는 표제들은 오직 구성 목적들을 위한 것이며 설명의 범위를 제한하기 위해 사용되는 것으로 의도되지 않는다.
일 실시예에서, 시스템 온 칩(SOC)은 복수의 독립적인 네트워크들을 포함할 수 있다. 네트워크들은 물리적으로 독립적일 수 있고(예를 들어, 네트워크를 형성하는 전용 와이어들 및 다른 회로부를 가짐), 논리적으로 독립적일 수 있다(예를 들어, SOC 내의 에이전트들에 의해 소싱(source)된 통신들은 복수의 네트워크들 중 선택된 네트워크 상에서 송신되도록 논리적으로 정의될 수 있고, 다른 네트워크들 상에서의 송신에 의해 영향을 받지 않을 수 있음). 일부 실시예들에서, 주어진 네트워크 상에서 패킷들을 송신하기 위해 네트워크 스위치들이 포함될 수 있다. 네트워크 스위치들은 네트워크의 물리적인 부분일 수 있다(예를 들어, 각각의 네트워크에 대한 전용 네트워크 스위치들이 존재할 수 있다). 다른 실시예들에서, 네트워크 스위치는 물리적으로 독립적인 네트워크들 사이에서 공유될 수 있으며, 따라서, 네트워크들 중 하나 상에서 수신된 통신이 그 네트워크 상에서 유지된다는 것을 보장할 수 있다.
물리적으로 그리고 논리적으로 독립적인 네트워크들을 제공함으로써, 상이한 네트워크들 상에서의 병렬 통신을 통해 높은 대역폭이 달성될 수 있다. 부가적으로, 상이한 트래픽이 상이한 네트워크들 상에서 송신될 수 있고, 따라서 주어진 네트워크가 주어진 유형의 트래픽에 대해 최적화될 수 있다. 예를 들어, SOC 내의 중앙 프로세싱 유닛(CPU)들과 같은 프로세서들은 메모리 레이턴시에 민감할 수 있고, 프로세서들과 메모리 사이에서 일관적(coherent)일 것으로 예상되는 데이터를 캐싱할 수 있다. 따라서, 시스템 내의 CPU들 및 메모리 제어기들이 에이전트들인 CPU 네트워크가 제공될 수 있다. CPU 네트워크는 낮은 레이턴시를 제공하도록 최적화될 수 있다. 예를 들어, 일 실시예에서, 낮은 레이턴시 요청들 및 벌크 요청들을 위한 가상 채널들이 존재할 수 있다. 낮은 레이턴시 요청들은 패브릭(fabric) 주위에서 그리고 메모리 제어기들에 의해 포워딩하는 데 있어서 벌크 요청들에 비해 선호될 수 있다. CPU 네트워크는 또한, 일관적으로 통신하도록 정의된 메시지들 및 프로토콜과의 캐시 일관성을 지원할 수 있다. 다른 네트워크는 입력/출력(I/O) 네트워크일 수 있다. 이러한 네트워크는 메모리와 통신하기 위해 다양한 주변기기 디바이스들("주변기기들")에 의해 사용될 수 있다. 네트워크는 주변기기들에 의해 필요한 대역폭을 지원할 수 있고, 또한 캐시 일관성을 지원할 수 있다. 그러나, I/O 트래픽은 때때로 CPU 트래픽보다 상당히 더 높은 레이턴시를 가질 수 있다. CPU로부터 메모리 트래픽으로 I/O 트래픽을 분리시킴으로써, CPU 트래픽은 I/O 트래픽에 의해 덜 영향을 받을 수 있다. CPU들은 일관성을 관리하고 주변기기들과 통신하기 위해 또한 I/O 네트워크 상의 에이전트들로서 포함될 수 있다. 일 실시예에서, 또 다른 네트워크는 완화된 순서 네트워크(relaxed order network)일 수 있다. CPU 및 I/O 네트워크들은 둘 모두, CPU들 및 주변기기들에 의해 예상되는 순서화를 제공하는, 이들 네트워크들 상의 통신들 사이의 순서화 모델들을 지원할 수 있다. 그러나, 완화된 순서 네트워크는 비일관적일 수 있고, 많은 순서화 제약들로서 강제되지 않을 수 있다. 완화된 순서 네트워크는 메모리 제어기들과 통신하기 위해 그래픽 프로세싱 유닛(GPU)들에 의해 사용될 수 있다. 따라서, GPU들은 네트워크들에서 전용 대역폭을 가질 수 있고, CPU들 및/또는 주변기기들에 의해 요구되는 순서화에 의해 제약되지 않을 수 있다. 다른 실시예들은 원하는 대로 위의 네트워크들 및/또는 임의의 부가적인 네트워크들의 임의의 서브세트를 이용할 수 있다.
네트워크 스위치는 네트워크 상에서 통신들을 수신하고 통신의 목적지의 방향으로 네트워크 상에서 통신들을 포워딩하도록 구성된 회로일 수 있다. 예를 들어, 프로세서에 의해 소싱된 통신은 통신의 어드레스에 맵핑되는 메모리를 제어하는 메모리 제어기에 송신될 수 있다. 각각의 네트워크 스위치에서, 통신은 메모리 제어기를 향해 전방으로 송신될 수 있다. 통신이 판독되면, 메모리 제어기는 데이터를 소스로 다시 통신할 수 있고, 각각의 네트워크 스위치는 네트워크 상에서 데이터를 소스를 향해 포워딩할 수 있다. 일 실시예에서, 네트워크는 복수의 가상 채널들을 지원할 수 있다. 네트워크 스위치는, 가상 채널들 상의 통신들이 논리적으로 독립적으로 유지될 수 있도록 각각의 가상 채널에 전용되는 리소스들(예를 들어, 버퍼들)을 이용할 수 있다. 네트워크 스위치는 또한 네트워크 상에서 포워딩할 버퍼링된 통신들 중에서 선택하기 위해 중재 회로부를 이용할 수 있다. 가상 채널들은 네트워크를 물리적으로 공유하지만 네트워크 상에서 논리적으로 독립적인 채널들일 수 있다(예를 들어, 하나의 가상 채널에서의 통신들은 다른 가상 채널 상에서의 통신들의 진행을 차단하지 않는다).
에이전트는 일반적으로 네트워크 상의 통신들을 소싱 및/또는 싱크(sink)할 수 있는 임의의 디바이스(예를 들어, 프로세서, 주변기기, 메모리 제어기 등)일 수 있다. 소스 에이전트는 통신을 생성(소싱)하고, 목적지 에이전트는 통신을 수신(싱크)한다. 주어진 에이전트는 일부 통신들에 대한 소스 에이전트 및 다른 통신들에 대한 목적지 에이전트일 수 있다.
이제 도면들을 참조하면, 도 1은 물리적으로 그리고 논리적으로 독립적인 네트워크들을 예시하는 일반적인 도면이다. 도 2 내지 도 4는 다양한 네트워크 토폴로지들의 예들이다. 도 5는 복수의 물리적으로 그리고 논리적으로 독립적인 네트워크들을 갖는 SOC의 일 예이다. 도 6 내지 도 8은 부가적인 명확성을 위해 도 5의 다양한 네트워크들을 별개로 예시한다. 도 9는 2개의 반도체 다이를 포함하는 시스템의 블록도이며, SOC의 다수의 인스턴스들에 대한 네트워크들의 확장성(scalability)을 예시한다. 도 10 및 도 11은 더 상세히 도시된 예시적인 에이전트들이다. 도 12는 다양한 가상 채널들 및 통신 유형들, 및 어느 가상 채널들 및 통신 유형들이 도 5의 어느 네트워크들에 적용되는지를 도시한다. 도 13은 방법을 예시하는 흐름도이고, 도 14 및 도 15는 예시적인 시스템 및 컴퓨터 액세스가능 저장 매체 실시예들이다. 아래의 설명은 도면들에 기초하여 추가적인 세부사항들을 제공할 것이다.
도 1은 다수의 네트워크 상호연결 에이전트들의 일 실시예를 포함하는 시스템의 블록도이다. 도 1에서, 에이전트들(10A, 10B, 10C)이 예시되지만, 임의의 수의 에이전트들이 다양한 실시예들에 포함될 수 있다. 에이전트들(10A, 10B)은 네트워크(12A)에 커플링되고, 에이전트들(10A, 10C)은 네트워크(12B)에 커플링된다. 임의의 수의 네트워크들(12A, 12B)이 다양한 실시예들에 또한 포함될 수 있다. 네트워크(12A)는 네트워크 스위치들(14AA, 14AB, 14AM, 14AN)(집합적으로 네트워크 스위치들(14A))을 포함하는 복수의 네트워크 스위치들을 포함하고; 유사하게, 네트워크(12B)는 네트워크 스위치들(14BA, 14BB, 14BM, 14BN)(집합적으로 네트워크 스위치들(14B))을 포함하는 복수의 네트워크 스위치들을 포함한다. 상이한 네트워크들(12A, 12B)은 상이한 수들의 네트워크 스위치들(14A, 14B)을 포함할 수 있다. 부가적으로, 네트워크들(12A, 12B)은 도 1에 다양한 화살표들로 예시된 물리적으로 별개의 연결들("와이어들", "버스들", 또는 "상호연결부")을 포함한다.
각각의 네트워크(12A, 12B)가 그 자신의 물리적으로 그리고 논리적으로 별개의 상호연결부 및 네트워크 스위치들을 가지므로, 네트워크들(12A, 12B)은 물리적으로 그리고 논리적으로 분리된다. 네트워크(12A) 상의 통신은 네트워크(12B) 상의 통신에 의해 영향을 받지 않고, 그 반대의 경우도 마찬가지이다. 개개의 네트워크들(12A, 12B)에서의 상호연결부 상의 대역폭도 별개이고 독립적이다.
선택적으로, 에이전트(10A 내지 10C)는 네트워크 인터페이스 회로(각각 참조 번호들(16A 내지 16C))를 포함할 수 있거나 이에 커플링될 수 있다. 일부 에이전트들(10A 내지 10C)은 네트워크 인터페이스들(16A 내지 16C)을 포함할 수 있거나 이들에 커플링될 수 있는 반면, 다른 에이전트들(10A 내지 10C)은 네트워크 인터페이스들(16A 내지 16C)을 포함하지 않을 수 있거나 이들에 커플링되지 않을 수 있다. 네트워크 인터페이스들(16A 내지 16C)은 대응하는 에이전트들(10A 내지 10C)을 대신하여 네트워크들(12A, 12B) 상에서 트래픽을 송신 및 수신하도록 구성될 수 있다. 네트워크 인터페이스들(16A 내지 16C)은, 네트워크들(12A, 12B)의 프로토콜/포맷에 부합하기 위해 대응하는 에이전트들(10A 내지 10C)에 의해 발행된 통신들을 변환하거나 수정하고, 수정들을 제거하거나 또는 수신된 통신들을 에이전트들(10A 내지 10C)에 의해 사용되는 프로토콜/포맷으로 변환하도록 구성될 수 있다. 따라서, 네트워크 인터페이스들(16A 내지 16C)은 네트워크들(12A, 12B)에 직접 인터페이싱하도록 구체적으로 설계되지 않은 에이전트들(10A 내지 10C)에 대해 사용될 수 있다. 일부 경우들에서, 에이전트(10A 내지 10C)는 하나 초과의 네트워크 상에서 통신할 수 있다(예를 들어, 에이전트(10A)는 도 1의 네트워크들(12A, 12B) 둘 모두 상에서 통신한다). 대응하는 네트워크 인터페이스(16A)는 에이전트(10A)에 의해 발행된 트래픽을 네트워크들(12A, 12B)에 분리시키도록 구성될 수 있으며, 그에 따라, 네트워크들(12A, 12B) 각각의 통신이 할당되고; 네트워크 인터페이스(16A)는 대응하는 에이전트(10A)에 대해 네트워크들(12A, 12B)로부터 수신된 트래픽을 결합하도록 구성될 수 있다. (예를 들어, 다양한 실시예들에서 통신의 유형, 통신을 위한 목적지 에이전트(10B, 10C), 어드레스 등에 기초하여) 네트워크(12A, 12B)가 주어진 통신을 반송할 것으로 결정하기 위한 임의의 메커니즘이 사용될 수 있다.
네트워크 인터페이스 회로들이 선택적이고, 에이전트들이 네트워크들(12A, 12B)을 직접 지원하는 데 많은 것들이 필요하지 않으므로, 단순화를 위해, 네트워크 인터페이스 회로들은 도면들의 나머지로부터 생략될 것이다. 그러나, 네트워크 인터페이스 회로들이 임의의 에이전트 또는 에이전트의 서브세트, 또는 심지어 에이전트들 모두에 의해, 예시된 실시예들 중 임의의 실시예에서 이용될 수 있다는 것이 이해된다.
일 실시예에서, 도 1의 시스템은 SOC로서 구현될 수 있고, 도 1에 예시된 컴포넌트들은 단일 반도체 기판 다이 상에 형성될 수 있다. SOC에 포함된 회로부는 복수의 에이전트들(10A 내지 10C) 및 복수의 에이전트들(10A 내지 10C)에 커플링된 복수의 네트워크 스위치들(14A, 14B)을 포함할 수 있다. 복수의 네트워크 스위치들(14A, 14B)은 복수의 물리적으로 그리고 논리적으로 독립적인 네트워크들(12A, 12B)을 형성하도록 상호연결된다.
네트워크들(12A, 12B)이 물리적으로 그리고 논리적으로 독립적이므로, 상이한 네트워크들은 상이한 토폴로지들을 가질 수 있다. 예를 들어, 주어진 네트워크는 링, 메시, 트리, 스타, 네트워크 스위치들의 완전히 연결된 세트(예를 들어, 네트워크 내의 서로 다른 스위치에 직접 연결된 스위치), 버스에 커플링된 다수의 에이전트들을 갖는 공유 버스 등 또는 토폴로지들 중 임의의 하나 이상의 토폴로지들의 하이브리드들을 가질 수 있다. 각각의 네트워크(12A, 12B)는, 예를 들어 그 네트워크에 대해 요구되는 대역폭 및 레이턴시 속성들을 제공하거나, 네트워크에 대한 임의의 원하는 속성을 제공하는 토폴로지를 이용할 수 있다. 따라서, 일반적으로, SOC는 제1 토폴로지에 따라 구성된 제1 네트워크 및 제1 토폴로지와 상이한 제2 토폴로지에 따라 구성된 제2 네트워크를 포함할 수 있다.
도 2 내지 도 4는 예시적인 토폴로지들을 예시한다. 도 2는 에이전트들(10A 내지 10C)을 커플링시키기 위해 링 토폴로지를 사용하는 네트워크의 일 실시예의 블록도이다. 도 2의 예에서, 링은 네트워크 스위치들(14AA 내지 14AH)로부터 형성된다. 에이전트(10A)는 네트워크 스위치(14AA)에 커플링되고; 에이전트(10B)는 네트워크 스위치(14AB)에 커플링되며; 에이전트(10C)는 네트워크 스위치(14AE)에 커플링된다.
링 토폴로지에서, 각각의 네트워크 스위치(14AA 내지 14AH)는 2개의 다른 네트워크 스위치들(14AA 내지 14AH)에 연결될 수 있으며, 스위치들은 임의의 네트워크 스위치(14AA 내지 14AH)가 다른 네트워크 스위치의 방향으로 링 상에서 통신을 송신함으로써 링 내의 임의의 다른 네트워크 스위치에 도달할 수 있도록 링을 형성한다. 주어진 통신은 타겟팅된 네트워크 스위치에 도달하기 위해 링 내의 하나 이상의 중간 네트워크 스위치들을 통과할 수 있다. 주어진 네트워크 스위치(14AA 내지 14AH)가 링 상의 인접한 네트워크 스위치(14AA 내지 14AH)로부터 통신을 수신할 때, 주어진 네트워크 스위치는 주어진 네트워크 스위치가 커플링되는 에이전트(10A 내지 10C)가 통신의 목적지인지를 결정하기 위해 통신을 검사할 수 있다. 그렇다면, 주어진 네트워크 스위치는 통신을 종료하고 통신을 에이전트에 포워딩할 수 있다. 그렇지 않으면, 주어진 네트워크 스위치는 링 상의 다음 네트워크 스위치(예를 들어, 주어진 네트워크 스위치에 인접하고, 주어진 네트워크 스위치가 통신을 수신했던 인접한 네트워크 스위치가 아닌 다른 네트워크 스위치(14AA 내지 14AH))에 통신을 포워딩할 수 있다. 주어진 네트워크 스위치에 대한 인접한 네트워크 스위치는, 통신이 임의의 중간 네트워크 스위치들을 통해 이동하지 않으면서, 주어진 네트워크 스위치가 통신을 직접 송신할 수 있는 경우에 대한 네트워크 스위치일 수 있다.
도 3은 에이전트들(10A 내지 10P)을 커플링시키기 위해 메시 토폴로지를 사용하는 네트워크의 일 실시예의 블록도이다. 도 3에 도시된 바와 같이, 네트워크는 네트워크 스위치들(14AA 내지 14AH)을 포함할 수 있다. 각각의 네트워크 스위치(14AA 내지 14AH)는 2개 이상의 다른 네트워크 스위치들에 커플링된다. 예를 들어, 도 3에 예시된 바와 같이, 네트워크 스위치(14AA)는 네트워크 스위치들(14AB, 14AE)에 커플링되고; 네트워크 스위치(14AB)는 네트워크 스위치들(14AA, 14AF, 14AC)에 커플링되는 등의 식이다. 따라서, 메시 네트워크 내의 상이한 네트워크 스위치들은 상이한 수들의 다른 네트워크 스위치들에 커플링될 수 있다. 더욱이, 도 3의 실시예가 비교적 대칭적인 구조를 갖지만, 다른 메시 네트워크들은, 예를 들어 네트워크 상에서 일반적인 것으로 예상되는 다양한 트래픽 패턴들에 의존하여 비대칭적일 수 있다. 각각의 네트워크 스위치(14AA 내지 14AH)에서, 수신된 통신의 하나 이상의 속성들은, (수신 네트워크 스위치(14AA 내지 14AH)가 커플링되는 에이전트(10A 내지 10P)가 통신의 목적지가 아닌 한(이 경우, 수신 네트워크 스위치(14AA 내지 14AH)는 네트워크 상의 통신을 종료하고, 이를 목적지 에이전트(10A 내지 10P)에 제공할 수 있음)) 수신 네트워크 스위치(14AA 내지 14AH)가 통신을 송신할 인접한 네트워크 스위치(14AA 내지 14AH)를 결정하는 데 사용될 수 있다. 예를 들어, 일 실시예에서, 네트워크 스위치들(14AA 내지 14AH)은 다양한 속성들에 기초하여 통신들을 라우팅하기 위해 시스템 초기화에서 프로그래밍될 수 있다.
일 실시예에서, 통신들은 목적지 에이전트에 기초하여 라우팅될 수 있다. 라우팅들은 메시 토폴로지에서 지원될 수 있는 소스와 목적지 에이전트 사이의 가장 적은 수의 네트워크 스위치들("최단 경로)을 통해 통신들을 전달하도록 구성될 수 있다. 대안적으로, 주어진 소스 에이전트-주어진 목적지 에이전트에 대한 상이한 통신들은 메시를 통해 상이한 경로들을 취할 수 있다. 예를 들어, 레이턴시-민감성 통신들은 더 짧은 경로를 통해 송신될 수 있는 반면, 덜 중요한 통신들은 짧은 경로 상의 대역폭을 소비하는 것을 피하기 위해 상이한 경로를 취할 수 있으며, 여기서 상이한 경로는, 예를 들어 사용 동안 덜 많이 로딩될 수 있다.
도 3은 부분적으로 연결된 메시의 일 예일 수 있으며: 적어도 일부 통신들은 메시 내의 하나 이상의 중간 네트워크 스위치들을 통과할 수 있다. 완전히 연결된 메시는 각각의 네트워크 스위치로부터 각각의 다른 네트워크 스위치로의 연결을 가질 수 있으며, 따라서 임의의 통신은 임의의 중간 네트워크 스위치들을 횡단하지 않으면서 송신될 수 있다. 다양한 실시예들에서, 임의의 레벨의 상호연결성이 사용될 수 있다.
도 4는 에이전트들(10A 내지 10E)을 커플링시키기 위해 트리 토폴로지를 사용하는 네트워크의 일 실시예의 블록도이다. 네트워크 스위치들(14AA 내지 14AG)은 이러한 예에서 트리를 형성하기 위해 상호연결된다. 트리는, 에이전트들(10A 내지 10E)에 커플링된 에지 네트워크 스위치들(예를 들어, 도 4의 14AA, 14AB, 14AC, 14AD, 14AG) 및 다른 네트워크 스위치들에만 커플링된 중간 네트워크 스위치들(예를 들어, 도 4의 14AE, 14AF)이 존재하는 계층적 네트워크의 형태이다. 예를 들어, 특정 에이전트가 종종 다른 에이전트들에 의해 발행된 통신들에 대한 목적지이거나 종종 통신들에 대한 소스 에이전트일 때, 트리 네트워크가 사용될 수 있다. 따라서, 예를 들어, 도 4의 트리 네트워크는 통신들에 대한 주요 소스 또는 목적지인 에이전트(10E)에 대해 사용될 수 있다. 예를 들어, 에이전트(10E)는, 흔히 메모리 트랜잭션들을 위한 목적지일 메모리 제어기일 수 있다.
다른 실시예들에서 사용될 수 있는 많은 다른 가능한 토폴로지들이 존재한다. 예를 들어, 스타 토폴로지는 네트워크의 "중심"에 소스/목적지 에이전트를 갖고, 다른 에이전트들은 중심 에이전트에 직접 또는 일련의 네트워크 스위치들을 통해 커플링될 수 있다. 트리 토폴로지와 마찬가지로, 스타 토폴로지는, 중심 에이전트가 흔히 통신들의 소스 또는 목적지인 경우에 사용될 수 있다. 공유 버스 토폴로지가 사용될 수 있고, 임의의 토폴로지들 중 2개 이상의 토폴로지들의 하이브리드들이 사용될 수 있다.
도 5는 일 실시예에 대한 다수의 네트워크들을 갖는 시스템 온 칩(SOC)(20)의 일 실시예의 블록도이다. 도 5의 실시예에서, SOC(20)는 복수의 프로세서 클러스터들(P 클러스터들)(22A, 22B), 복수의 입력/출력(I/O) 클러스터들(24A 내지 24D), 복수의 메모리 제어기들(26A 내지 26D), 및 복수의 그래픽 프로세싱 유닛(GPU)들(28A 내지 28D)을 포함한다. 명칭(SOC)에 의해 암시된 바와 같이, (이러한 실시예에서 메모리들(30A 내지 30D)을 제외한) 도 5에 예시된 컴포넌트들은 단일 반도체 다이 또는 "칩"으로 통합될 수 있다. 그러나, 다른 실시예들은 임의의 원하는 방식으로 커플링되거나 패키징된 2개 이상의 다이를 이용할 수 있다. 부가적으로, 특정 수들의 P 클러스터들(22A, 22B), I/O 클러스터들(24A 내지 24D), 메모리 제어기들(26A 내지 26D), 및 GPU들(28A 내지 28D)이 도 5의 예에 도시되어 있지만, 위의 컴포넌트들 중 임의의 컴포넌트들의 수 및 배열은 다양할 수 있고, 도 5에 도시된 수보다 더 많거나 더 적을 수 있다. 메모리들(30A 내지 30D)은 SOC(20), 및 더 구체적으로는 도 5에 도시된 바와 같이, 메모리 제어기들(26A 내지 26D)에 각각 커플링된다.
예시된 실시예에서, SOC(20)는 도 5에 도시된 바와 같이 복수의 네트워크 스위치들(32, 34, 36)로부터 형성된 3개의 물리적으로 그리고 논리적으로 독립적인 네트워크들, 및 네트워크 스위치들과 다른 컴포넌트들 사이의 화살표들로 예시된 그들 사이의 상호연결부를 포함한다. 다른 실시예들은 더 많거나 더 적은 네트워크들을 포함할 수 있다. 네트워크 스위치들(32, 34, 36)은, 예를 들어 도 1 내지 도 4에 관해 위에서 설명된 바와 같이 네트워크 스위치들(14A, 14B)과 유사한 네트워크 스위치들의 인스턴스들일 수 있다. 복수의 네트워크 스위치들(32, 34, 36)은 도 5에 도시된 바와 같이, 복수의 P 클러스터들(22A, 22B), 복수의 GPU들(28A 내지 28D), 복수의 메모리 제어기들(26A, 25B), 및 복수의 I/O 클러스터들(24A 내지 24D)에 커플링된다. P 클러스터들(22A, 22B), GPU들(28A, 28B), 메모리 제어기들(26A, 26B), 및 I/O 클러스터들(24A 내지 24D) 모두는 SOC(20)의 다양한 네트워크들 상에서 통신하는 에이전트들의 예들일 수 있다. 다른 에이전트들이 원하는 대로 포함될 수 있다.
도 5에서, 중앙 프로세싱 유닛(CPU) 네트워크는, 복수의 네트워크 스위치들의 제1 서브세트(예를 들어, 네트워크 스위치들(32)), 및 도면 부호(38)와 같은 짧은 대시/긴 대시 라인들로 예시된 그들 사이의 상호연결부로부터 형성된다. CPU 네트워크는 P 클러스터들(22A, 22B)과 메모리 제어기들(26A 내지 26D)을 커플링시킨다. I/O 네트워크는 복수의 네트워크 스위치들의 제2 서브세트(예를 들어, 네트워크 스위치들(34)), 및 도면 부호(40)와 같은 실선들로 예시된 그들 사이의 상호연결부로부터 형성된다. I/O 네트워크는 P 클러스터들(22A, 22B), I/O 클러스터들(24A 내지 24D), 및 메모리 제어기들(26A, 26B)을 커플링시킨다. 완화된 순서 네트워크는, 복수의 네트워크 스위치들의 제3 서브세트(예를 들어, 네트워크 스위치들(36)), 및 도면 부호(42)와 같은 짧은 대시 라인들로 예시된 그들 사이의 상호연결부로부터 형성된다. 완화된 순서 네트워크는 GPU들(28A 내지 28D)과 메모리 제어기들(26A 내지 26D)을 커플링시킨다. 일 실시예에서, 완화된 순서 네트워크는 또한 I/O 클러스터들(24A 내지 24D) 중 선택된 I/O 클러스터들을 또한 커플링시킬 수 있다. 위에서 언급된 바와 같이, CPU 네트워크, I/O 네트워크, 및 완화된 순서 네트워크는 서로 독립적이다(예를 들어, 논리적으로 그리고 물리적으로 독립적임). 일 실시예에서, CPU 네트워크 및 I/O 네트워크 상의 프로토콜은 캐시 일관성을 지원한다(예를 들어, 네트워크들은 일관적이다). 완화된 순서 네트워크는 캐시 일관성을 지원하지 않을 수 있다(예를 들어, 네트워크는 비일관적이다). 완화된 순서 네트워크는 또한 CPU 네트워크 및 I/O 네트워크와 비교하여 감소된 순서화 제약들을 갖는다. 예를 들어, 일 실시예에서, 가상 채널들 및 가상 채널들 내의 서브채널들의 세트가 각각의 네트워크에 대해 정의된다. CPU 및 I/O 네트워크들의 경우, 동일한 소스와 목적지 에이전트 사이 그리고 동일한 가상 채널 및 서브채널에 있는 통신들이 순서화될 수 있다. 완화된 순서 네트워크의 경우, 동일한 소스와 목적지 에이전트 사이의 통신들이 순서화될 수 있다. 일 실시예에서, 동일한 소스와 목적지 에이전트 사이의 동일한 어드레스에 대한(캐시 블록과 같은 주어진 입도의) 통신들만이 순서화될 수 있다. 완화된-순서 네트워크에 대해 덜 엄격한 순서화가 강제되기 때문에, 예를 들어, 더 오래된 트랜잭션들 전에 더 신생의 트랜잭션들이 완료될 준비가 되면, 트랜잭션들이 순서를 벗어나 완료되도록 허용될 수 있으므로, 더 높은 대역폭이 평균적으로 달성될 수 있다.
다양한 실시예들에서, 네트워크 스위치들(32, 34, 36) 사이의 상호연결부는 임의의 형태 및 구성을 가질 수 있다. 예를 들어, 일 실시예에서, 상호연결부는 포인트-투-포인트, 단방향 링크들(예를 들어, 버스들 또는 직렬 링크들)일 수 있다. 패킷들은 링크들 상에서 송신될 수 있으며, 여기서 패킷 포맷은 패킷이 이동하고 있는 가상 채널 및 서브채널을 표시하는 데이터, 메모리 어드레스, 소스 및 목적지 에이전트 식별자들, (적절한 경우) 데이터 등을 포함할 수 있다. 다수의 패킷들은 주어진 트랜잭션을 형성할 수 있다. 트랜잭션은 소스 에이전트와 타겟 에이전트 사이의 완전한 통신일 수 있다. 예를 들어, 판독 트랜잭션은 프로토콜에 의존하여, 소스 에이전트로부터 타겟 에이전트로의 판독 요청 패킷, 트랜잭션이 일관적이면, 캐싱 에이전트 및 타겟 에이전트 및/또는 소스 에이전트 사이의 하나 이상의 일관성 메시지 패킷들, 타겟 에이전트로부터 소스 에이전트로의 데이터 응답 패킷, 및 가능하게는 소스 에이전트로부터 타겟 에이전트로의 완료 패킷을 포함할 수 있다. 기입 트랜잭션은, 소스 에이전트로부터 타겟 에이전트로의 기입 요청 패킷, 트랜잭션이 일관적이면, 판독 트랜잭션과 마찬가지로 하나 이상의 일관성 메시지 패킷들, 및 가능하게는 타겟 에이전트로부터 소스 에이전트로의 완료 패킷을 포함할 수 있다. 일 실시예에서, 기입 데이터는 기입 요청 패킷에 포함될 수 있거나, 또는 소스 에이전트로부터 타겟 에이전트로 별개의 기입 데이터 패킷에서 송신될 수 있다.
일 실시예에서, 도 5의 에이전트들의 배열은 SOC(20)를 형성하는 반도체 다이 상의 에이전트들의 물리적 배열을 표시할 수 있다. 즉, 도 5는 반도체 다이의 표면 영역으로서 보여질 수 있고, 도 5의 다양한 컴포넌트들의 위치들은 그 영역에 대한 그들의 물리적 위치들을 근사화할 수 있다. 따라서, 예를 들어, I/O 클러스터들(24A 내지 24D)은 (도 5에 배향된 바와 같이) SOC(20)의 상단에 의해 표현되는 반도체 다이 영역에 배열될 수 있다. P 클러스터들(22A, 22B)은 도 5에 배향된 바와 같이, 아래의 SOC(20)의 일부에 의해 표현되는 영역에 그리고 I/O 클러스터들(24A 내지 24D)의 배열 사이에 배열될 수 있다. 도 5에 배향된 바와 같이, GPU들(24A 내지 28D)은 중앙에 위치될 수 있고, SOC(20)의 하단에 의해 표현되는 영역을 향해 연장될 수 있다. 메모리 제어기들(26A 내지 26D)은 도 5에 배향된 바와 같이 SOC(20)의 우측 및 좌측에 의해 표현되는 영역들 상에 배열될 수 있다.
일 실시예에서, SOC(20)는, 에이전트가 동일한 다이 상의 다른 에이전트 내에서 통신하는 것과 동일한 방식으로 하나의 다이 상의 에이전트가 상이한 다이 상의 에이전트에 네트워크를 통해 논리적으로 통신할 수 있는 논리적으로 하나의 네트워크로서 인스턴스들 상에서 주어진 네트워크를 커플링하여, SOC(20)의 하나 이상의 다른 인스턴스들에 직접 커플링되도록 설계될 수 있다. 레이턴시가 상이할 수 있지만, 통신은 동일한 방식으로 수행될 수 있다. 따라서, 도 5에 예시된 바와 같이, 네트워크들은 도 5에 배향된 바와 같이 SOC(20)의 하단으로 연장된다. 도 5에 도시되지 않은 인터페이스 회로부(예를 들어, 직렬화기/역직렬화기(SERDES) 회로들)가 다이 경계를 가로질러 다른 다이에 통신하는 데 사용될 수 있다. 따라서, 네트워크들은 2개 이상의 반도체 다이들로 확장가능할 수 있다. 예를 들어, 2개 이상의 반도체 다이들은 다수의 반도체 다이들의 존재가 단일 시스템 상에서 실행되는 소프트웨어에 투명한 단일 시스템으로서 구성될 수 있다. 일 실시예에서, 다이로부터 다이로의 통신에서의 지연들이 최소화될 수 있어서, 다이-투-다이 통신은 전형적으로, 멀티-다이 시스템에 대한 소프트웨어 투명성의 하나의 양태로서 다이-내(intra-die) 통신과 비교하여 상당한 부가적인 레이턴시를 발생시키지 않는다. 다른 실시예들에서, 네트워크들은 다이-내에서만 통신하는 폐쇄형 네트워크들일 수 있다.
위에서 언급된 바와 같이, 상이한 네트워크들은 상이한 토폴로지들을 가질 수 있다. 도 5의 실시예에서, 예를 들어, CPU 및 I/O 네트워크들은 링 토폴로지를 구현하고, 완화된 순서는 메시 토폴로지를 구현할 수 있다. 그러나, 다른 토폴로지들이 다른 실시예들에서 사용될 수 있다. 도 6, 도 7, 및 도 8은 상이한 네트워크들을 포함하는 SOC(30)의 부분들: CPU(도 6), I/O(도 7), 및 완화된 순서(도 8)를 예시한다. 도 6 및 도 7에서 알 수 있는 바와 같이, 네트워크 스위치들(32 및 34)은, 각각, 다른 다이 상의 대응하는 스위치들에 커플링될 때 링을 형성한다. 단일 다이만이 사용되면, 도 6 및 도 7에 배향된 바와 같이, (예를 들어, SOC(20)의 핀(pin)들 상의 외부 연결을 통해) SOC(20)의 하단에서 2개의 네트워크 스위치들(32 또는 34) 사이에 연결이 이루어질 수 있다. 대안적으로, 하단에 있는 2개의 네트워크 스위치들(32 또는 34)은 단일 다이 구성으로 사용될 수 있는 그들 사이에 링크들을 가질 수 있거나, 또는 네트워크는 데이지-체인(daisy-chain) 토폴로지로 동작할 수 있다.
유사하게, 도 8에서, GPU들(28A 내지 28D)과 메모리 제어기들(26A 내지 26D) 사이의 메시 토폴로지에서의 네트워크 스위치들(36)의 연결이 도시되어 있다. 이전에 언급된 바와 같이, 일 실시예에서, I/O 클러스터들(24A 내지 24D) 중 하나 이상이 완화된 순서 네트워크에 또한 커플링될 수 있다. 예를 들어, 비디오 주변기기들(예를 들어, 디스플레이 제어기, 메모리 스케일러/회전기, 비디오 인코더/디코더 등)을 포함하는 I/O 클러스터들(24A 내지 24D)은 비디오 데이터에 대한 완화된 순서 네트워크에 대한 액세스를 가질 수 있다.
도 8에 배향된 바와 같은 SOC(30)의 하단 부근의 네트워크 스위치들(36)은 SOC(30)의 다른 인스턴스로 라우팅될 수 있는 연결부들을 포함할 수 있어서, 메시 네트워크가 CPU 및 I/O 네트워크들에 관해 위에서 논의된 바와 같이 다수의 다이들에 걸쳐 연장되게 허용한다. 단일 다이 구성에서, 칩으로부터 연장하는 경로들이 사용되지 않을 수 있다. 도 9는 각각의 네트워크가 2개의 SOC 다이들(20A, 20B)을 가로질러 연장되어, 그들이 2개의 다이를 통해 연장되더라도 논리적으로 동일한 네트워크들을 형성하는 2개의 다이 시스템의 블록도이다. 네트워크 스위치들(32, 34, 36)은 도 9에서 단순화를 위해 제거되었고, 완화된 순서 네트워크는 라인으로 단순화되었지만, 일 실시예에서 메시일 수 있다. I/O 네트워크(44)는 실선으로 도시되어 있고, CPU 네트워크(46)는 교번하는 길고 짧은 파선으로 도시되어 있으며, 완화된 순서 네트워크(48)는 파선으로 도시되어 있다. 네트워크들(44, 46)의 링 구조는 또한 도 9에서 명백하다. 2개의 다이들이 도 9에 도시되어 있지만, 다른 실시예들은 2개 초과의 다이를 이용할 수 있다. 다양한 실시예들에서, 네트워크들은 함께 데이지 체인화되어, 교시된 다이 쌍 사이의 포인트-투-포인트 링크들 또는 임의의 다른 연결 구조와 완전히 연결될 수 있다.
일 실시예에서, CPU 네트워크로부터의 I/O 네트워크의 물리적 분리는, I/O 트래픽이 I/O 네트워크로 위임(relegate)될 수 있으므로, 시스템이 프로세서 클러스터들(22A, 22B)에 의한 낮은 레이턴시 메모리 액세스를 제공하는 것을 도울 수 있다. 네트워크들은 메모리에 액세스하기 위해 동일한 메모리 제어기들을 사용하므로, 메모리 제어기들은 I/O 네트워크로부터의 메모리 트래픽에 비해 CPU 네트워크로부터의 메모리 트래픽을 어느 정도 선호하도록 설계될 수 있다. 프로세서 클러스터들(22A, 22B)은 (예를 들어, 프로그래밍된 입력/출력(PIO) 트랜잭션들을 이용하여) I/O 클러스터들(24A 내지 24D) 내의 디바이스 공간에 액세스하기 위해 또한 I/O 네트워크의 일부일 수 있다. 그러나, 프로세서 클러스터들(22A, 22B)에 의해 개시된 메모리 트랜잭션들은 CPU 네트워크를 통해 송신될 수 있다. 따라서, CPU 클러스터들(22A, 22B)은 복수의 물리적으로 그리고 논리적으로 독립적인 네트워크들 중 적어도 2개에 커플링된 에이전트의 예들일 수 있다. 에이전트는 송신될 트랜잭션을 생성하고, 트랜잭션의 유형(예를 들어, 메모리 또는 PIO)에 기초하여 트랜잭션을 송신할, 복수의 물리적으로 그리고 논리적으로 독립적인 네트워크들 중 적어도 2개의 네트워크들 중에서 하나를 선택하도록 구성될 수 있다.
다양한 네트워크들은 상이한 수들의 물리적 채널들 및/또는 가상 채널들을 포함할 수 있다. 예를 들어, I/O 네트워크는 다수의 요청 채널들 및 완료 채널들을 가질 수 있는 반면, CPU 네트워크는 하나의 요청 채널 및 하나의 완료 채널을 가질 수 있다(또는 그 반대의 경우도 가능함). 하나 초과의 요청이 존재할 때 주어진 요청 채널 상에서 송신된 요청들은 임의의 원하는 방식으로(예를 들어, 요청의 유형에 의해, 요청의 우선순위에 의해, 물리적 채널들에 걸쳐 대역폭을 밸런싱(balance)하기 위해 등) 결정될 수 있다. 유사하게, I/O 및 CPU 네트워크들은 스누프(snoop) 요청들을 반송하기 위한 스누프 가상 채널을 포함할 수 있지만, 완화된 순서 네트워크는 그것이 이러한 실시예에서 비일관적이기 때문에 스누프 가상 채널을 포함하지 않을 수 있다.
도 10은 더 상세히 예시된 입력/출력(I/O) 클러스터(24A)의 일 실시예의 블록도이다. 다른 I/O 클러스터들(24B 내지 24D)은 유사할 수 있다. 도 10의 실시예에서, I/O 클러스터(24A)는 주변기기들(50, 52), 주변기기 인터페이스 제어기(54), 로컬 상호연결부(56), 및 브릿지(58)를 포함한다. 주변기기(52)는 외부 컴포넌트(60)에 커플링될 수 있다. 주변기기 인터페이스 제어기(54)는 주변기기 인터페이스(62)에 커플링될 수 있다. 브릿지(58)는 네트워크 스위치(34)에(또는 네트워크 스위치(34)에 커플링된 네트워크 인터페이스에) 커플링될 수 있다.
주변기기들(50, 52)은 SOC(20)에 포함된 (예를 들어, CPU들, GPU들, 및 메모리 제어기들을 넘어서는) 부가적인 하드웨어 기능의 임의의 세트를 포함할 수 있다. 예를 들어, 주변기기들(50, 52)은 카메라 또는 다른 이미지 센서로부터의 이미지 캡처 데이터를 프로세싱하도록 구성된 이미지 신호 프로세서, 비디오 인코더/디코더들, 스케일러들, 회전기들, 블렌더(blender)들, 디스플레이 제어기 등과 같은 비디오 주변기기들을 포함할 수 있다. 주변기기들은 마이크로폰들, 스피커들, 마이크로폰들 및 스피커들에 대한 인터페이스들, 오디오 프로세서들, 디지털 신호 프로세서들, 믹서들 등과 같은 오디오 주변기기들을 포함할 수 있다. 주변기기들은 매체 액세스 제어기(MAC)들과 같은 네트워킹 주변기기들을 포함할 수 있다. 주변기기들은 비휘발성 메모리 제어기들과 같은 다른 유형들의 메모리 제어기들을 포함할 수 있다. 일부 주변기기들(52)은 온-칩 컴포넌트 및 오프-칩 컴포넌트(60)를 포함할 수 있다. 주변기기 인터페이스 제어기(54)는 SOC(20)의 외부에 있는 다양한 인터페이스들(62)에 대한 인터페이스 제어기들을 포함할 수 있으며, 인터페이스들은 USB(Universal Serial Bus), PCIe(PCI Express)를 포함하는 PCI(peripheral component interconnect), 직렬 및 병렬 포트들 등과 같은 인터페이스들을 포함한다.
로컬 상호연결부(56)는 다양한 주변기기들(50, 52, 54)이 통신하는 상호연결부일 수 있다. 로컬 상호연결부(56)는 도 5에 도시된 범시스템적(system-wide) 상호연결부(예를 들어, CPU, I/O, 및 완화된 네트워크들)와 상이할 수 있다. 브릿지(58)는 로컬 상호연결부 상의 통신들을 범시스템적 상호연결부 상의 통신들로 변환하도록 구성될 수 있으며, 그 반대의 경우도 가능하다. 일 실시예에서, 브릿지(58)는 네트워크 스위치들(34) 중 하나에 커플링될 수 있다. 브릿지(58)는 또한 주변기기들(50, 52, 54)로부터 발행된 트랜잭션들 간의 순서화를 관리할 수 있다. 예를 들어, 브릿지(58)는 주변기기들(50, 52, 54) 등을 대신하여 트랜잭션들의 순서화를 보장하기 위해 네트워크들 상에서 지원되는 캐시 일관성 프로토콜을 사용할 수 있다. 상이한 주변기기들(50, 52, 54)은 상이한 순서화 요건들을 가질 수 있고, 브릿지(58)는 상이한 요건들에 적응하도록 구성될 수 있다. 일부 실시예들에서, 브릿지(58)는 다양한 성능-향상 특징부들을 또한 구현할 수 있다. 예를 들어, 브릿지(58)는 주어진 요청에 대한 데이터를 프리페치(prefetch)할 수 있다. 브릿지(58)는 트랜잭션들이 로컬로 완료되게 허용하고 순서화를 강제하기 위해, 주변기기들(50, 52, 54)로부터의 하나 이상의 트랜잭션들이 지향되는 캐시 블록의 일관적 사본을 (예를 들어, 배타적 상태에서) 캡처할 수 있다. 브릿지(58)는 후속 트랜잭션들에 의해 타겟팅된 하나 이상의 캐시 블록들의 배타적인 사본을 추론적으로 캡처할 수 있고, 후속 트랜잭션들이 완료될 수 있을 때까지(예를 들어, 더 이전의 트랜잭션들에 대한 임의의 순서화 제약들을 만족시킨 이후) 배타적인 상태가 성공적으로 유지되면, 후속 트랜잭션들을 완료하기 위해 캐시 블록을 사용할 수 있다. 따라서, 일 실시예에서, 캐시 블록 내의 다수의 요청들이 캐싱된 사본으로부터 서비스될 수 있다. 다양한 세부사항들은 2021년 4월 5일자로 출원된 미국 가특허 출원 제63/170,868호, 2021년 4월 16일자로 출원된 미국 가특허 출원 제63/175,868호, 및 2021년 4월 16일자로 출원된 미국 가특허 출원 제63/175,877호에서 발견될 수 있다. 이들 특허 출원들은 그들 전체들이 본 명세서에 참고로 포함된다. 포함된 자료 중 임의의 자료가 본 명세서에 명시적으로 기재된 자료와 충돌하는 범위에서, 본 명세서에 명시적으로 기재된 자료가 우선한다.
도 11은 프로세서 클러스터(22A)의 일 실시예의 블록도이다. 다른 실시예들이 유사할 수 있다. 도 10의 실시예에서, 프로세서 클러스터 (22A)는 마지막 레벨 캐시(LLC)(72)에 커플링된 하나 이상의 프로세서들(70)을 포함한다. LLC(72)는, 적절한 경우, CPU 네트워크 및 I/O 네트워크 상에서 트랜잭션들을 송신하기 위해 네트워크 스위치들(32, 34)에 인터페이싱하기 위한 인터페이스 회로부를 포함할 수 있다.
프로세서들(70)은 프로세서들(70)에 의해 구현된 명령어 세트 아키텍처에서 정의된 명령어들을 실행하도록 구성된 임의의 회로부 및/또는 마이크로코드를 포함할 수 있다. 프로세서들(70)은 임의의 마이크로아키텍처(microarchitectural) 구현, 성능 및 전력 특성들 등을 가질 수 있다. 예를 들어, 프로세서들은 순차적 실행, 비순차적 실행, 슈퍼스칼라, 슈퍼파이프라인형 등일 수 있다.
LLC(72), 및 프로세서들(70) 내의 임의의 캐시들은 세트 연관, 직접 맵핑 또는 완전 연관과 같은 임의의 용량 및 구성을 가질 수 있다. 캐시 블록 크기는 임의의 원하는 크기(예를 들어, 32 바이트, 64 바이트, 128 바이트 등)일 수 있다. 캐시 블록은 LLC(70) 내의 할당 및 할당해제(deallocation)의 단위일 수 있다. 부가적으로, 캐시 블록은 이러한 실시예에서 일관성이 유지되는 단위일 수 있다. 캐시 블록은 또한 일부 경우들에서 캐시 라인으로 지칭될 수 있다. 일 실시예에서, 분산된 디렉토리-기반 일관성 방식은 시스템 내의 각각의 메모리 제어기(26)에서 일관성의 포인트로 구현될 수 있으며, 여기서 일관성의 포인트는 메모리 제어기에 맵핑되는 메모리 어드레스들에 적용된다. 디렉토리는 임의의 일관성 에이전트에 캐싱되는 캐시 블록들의 상태를 추적할 수 있다. 일관성 방식은 가능하게는 다수의 반도체 다이들에 걸쳐 많은 메모리 제어기들로 확장가능할 수 있다. 예를 들어, 일관성 방식은 다음의 특징들 중 하나 이상을 이용할 수 있다: 일관성 및 메모리 에이전트들에서 스누프 필터링 및 레이스 해결(race resolution)을 위한 정밀한 디렉토리; 메모리 에이전트에서 결정된 순서화 포인트(액세스 순서)(직렬화 포인트는 일관성 에이전트들 및 메모리 에이전트 사이에서 이동함); 메모리 에이전트에 의해 제공되는 완료-카운트로 추적되는 요청 일관성 에이전트에서의 2차 완료(무효화 확인응답) 수집; 메모리 에이전트에 의해 제공되는 디렉토리 상태를 통해 일관성 에이전트에서 핸들링되는 충전/스누프 및 스누프/희생자(victim)-ack 레이스 해결; 레이스 해결 및 동일한 어드레스/타겟으로 비행(flight) 스누프들을 제한하는 것을 돕기 위한 별개의 1차/2차 공유 상태들; 부가적인 nack/충돌/재시도 메시지들 또는 액션들 없이 데드록(deadlock)을 피하기 위한 일관성 에이전트에서의 충돌 스누프들의 흡수; 직렬화 최소화(충돌 체인을 통해 소유권(ownership)을 전달하기 위한 액세서(accessor)당 하나의 부가적인 메시지 레이턴시); 메시지 최소화(관련 에이전트들 사이의 직접적인 메시지들, 및 충돌들/레이스들을 핸들링하기 위한 부가적인 메시지들 없음(예를 들어, 메모리 에이전트로의 메시지들 없음)); 레이스로 인한 실패 시에 과도한-무효화가 없는 조건부-저장; 최소화된 데이터 전달(더티한(dirty) 경우에만) 및 관련 캐시/디렉토리 상태들을 갖는 전체 캐시-라인을 수정하려는 의도를 갖는 독점 소유권 요청; 캐싱가능 및 비-캐싱가능 흐름들(예를 들어, 3 홉 및 4 홉 프로토콜들) 둘 모두를 핸들링하기 위한 별개의 스누프-백(snoop-back) 및 스누프-포워드(snoop-forward) 메시지 유형들. 부가적인 세부사항들은 2020년 9월 11일자로 출원된 미국 가특허 출원 제63/077,371호에서 발견될 수 있다. 이러한 특허 출원은 그 전체가 본 명세서에 참고로 포함된다. 포함된 자료 중 임의의 자료가 본 명세서에 명시적으로 기재된 자료와 충돌하는 범위에서, 본 명세서에 명시적으로 기재된 자료가 우선한다.
도 12는, 가상 채널들 및 트래픽 유형들, 및 그들이 일 실시예에 대해 사용되는 도 5 내지 도 8에 도시된 네트워크들을 예시하는 테이블들(80, 82)의 쌍이다. 테이블(80)에 도시된 바와 같이, 가상 채널들은 벌크 가상 채널, 낮은 레이턴시(LLT) 가상 채널, 실시간(RT 가상 채널) 및 비-DRAM 메시지들에 대한 가상 채널(VCP)을 포함할 수 있다. 벌크 가상 채널은 메모리 액세스들을 위한 디폴트 가상 채널일 수 있다. 벌크 가상 채널은, 예를 들어 LLT 및 RT 가상 채널들보다 낮은 서비스 품질을 수신할 수 있다. LLT 가상 채널은 고성능 동작을 위해 낮은 레이턴시가 필요한 메모리 트랜잭션들에 대해 사용될 수 있다. RT 가상 채널은 정확한 동작(예를 들어, 비디오 스트림들)을 위한 레이턴시 및/또는 대역폭 요건들을 갖는 메모리 트랜잭션들에 대해 사용될 수 있다. VCP 채널은 메모리 트랜잭션들과의 간섭을 방지하기 위해 메모리로 지향되지 않는 트래픽을 분리시키는 데 사용될 수 있다.
일 실시예에서, 벌크 및 LLT 가상 채널들은 모든 3개의 네트워크들(CPU, I/O, 및 완화된 순서) 상에서 지원될 수 있다. RT 가상 채널은 CPU 또는 완화된 순서 네트워크들이 아니라 I/O 네트워크 상에서 지원될 수 있다. 유사하게, VCP 가상 채널은 CPU 또는 완화된 순서 네트워크들이 아니라 I/O 네트워크 상에서 지원될 수 있다. 일 실시예에서, VCP 가상 채널은 (예를 들어, 구성을 위해) 그 네트워크 상에서 네트워크 스위치들을 타겟팅하는 트랜잭션들을 위해서만 CPU 및 완화된 순서 네트워크 상에서 지원될 수 있고, 따라서 정상 동작 동안 사용되지 않을 수 있다. 따라서, 테이블(80)이 예시하는 바와 같이, 상이한 네트워크들은 상이한 수들의 가상 채널들을 지원할 수 있다.
테이블(82)은 다양한 트래픽 유형들 및 어느 네트워크들이 그 트래픽 유형을 반송하는지를 예시한다. 트래픽 유형들은 일관적 메모리 트래픽, 비일관적 메모리 트래픽, 실시간(RT) 메모리 트래픽, 및 VCP(비-메모리) 트래픽을 포함할 수 있다. CPU 및 I/O 네트워크들은 둘 모두 일관적 트래픽을 반송할 수 있다. 일 실시예에서, 프로세서 클러스터들(22A, 22B)에 의해 소싱되는 일관적 메모리 트래픽은 CPU 네트워크 상에서 반송될 수 있는 반면, I/O 네트워크는 I/O 클러스터들(24A 내지 24D)에 의해 소싱되는 일관적 메모리 트래픽을 반송할 수 있다. 비일관적 메모리 트래픽은 완화된 순서 네트워크 상에서 반송될 수 있고, RT 및 VCP 트래픽은 I/O 네트워크 상에서 반송될 수 있다.
도 13은 네트워크 상의 트랜잭션을 개시하는 방법의 일 실시예를 예시하는 흐름도이다. 일 실시예에서, 에이전트는 송신될 트랜잭션을 생성할 수 있다(블록(90)). 트랜잭션은 복수의 물리적으로 그리고 논리적으로 독립적인 네트워크들 중 하나 상에서 송신될 것이다. 복수의 물리적으로 그리고 논리적으로 독립적인 네트워크들 중 제1 네트워크는 제1 토폴로지에 따라 구성되고, 복수의 물리적으로 그리고 논리적으로 독립적인 네트워크들 중 제2 네트워크는 제1 토폴로지와 상이한 제2 토폴로지에 따라 구성된다. 트랜잭션의 유형에 기초하여 트랜잭션을 송신할 복수의 물리적으로 그리고 논리적으로 독립적인 네트워크들 중 하나가 선택된다(블록(92)). 예를 들어, 프로세서 클러스터들(22A, 22B)은 CPU 네트워크 상에서 일관적 메모리 트래픽을 그리고 I/O 네트워크 상에서 PIO 트래픽을 송신할 수 있다. 일 실시예에서, 에이전트는, 유형 이외의 트랜잭션의 하나 이상의 속성들에 기초하여 복수의 물리적으로 그리고 논리적으로 독립적인 네트워크들 중 선택된 네트워크 상에서 지원되는 복수의 가상 채널들 중 일 가상 채널을 선택할 수 있다(블록(94)). 예를 들어, CPU는 메모리 트랜잭션들의 서브세트(예를 들어, 캐시 누락들, 임계 수까지의 캐시 누락들의 수인 가장 오래된 메모리 트랜잭션들(그 이후, 벌크 채널이 선택될 수 있음))에 대해 LLT 가상 채널을 선택할 수 있다. GPU는 데이터가 필요한 긴급성(urgency)에 기초하여 LLT와 벌크 가상 채널들 사이에서 선택할 수 있다. 비디오 디바이스들은 필요에 따라 RT 가상 채널을 사용할 수 있다(예를 들어, 디스플레이 제어기는 RT 가상 채널 상에서 프레임 데이터 판독들을 발행할 수 있다). VCP 가상 채널은 메모리 트랜잭션들이 아닌 트랜잭션들에 대해 선택될 수 있다. 에이전트는 선택된 네트워크 및 가상 채널 상에서 트랜잭션 패킷을 송신할 수 있다. 일 실시예에서, 상이한 가상 채널들 내의 트랜잭션 패킷들은 네트워크들을 통해 상이한 경로들을 취할 수 있다. 일 실시예에서, 트랜잭션 패킷들은 트랜잭션 패킷의 유형(예를 들어, 요청 대 응답)에 기초하여 상이한 경로들을 취할 수 있다. 일 실시예에서, 상이한 가상 채널들 및 상이한 유형들의 트랜잭션들 둘 모두에 대해 상이한 경로들이 지원될 수 있다. 다른 실시예들은 트랜잭션 패킷들의 하나 이상의 부가적인 속성들을 이용하여 이들 패킷들에 대한 네트워크를 통한 경로를 결정할 수 있다. 다른 방식으로 보면, 네트워크로부터의 네트워크 스위치들은 가상 채널, 유형, 또는 임의의 다른 속성들에 기초하여 상이한 패킷들을 라우팅할 수 있다. 상이한 경로들을 사용하는 트랜잭션 패킷들이 동일한 소스로부터 동일한 목적지로 이동하고 있더라도, 상이한 경로는 다른 경로 상에서 횡단되지 않은 네트워크 스위치들 사이의 적어도 하나의 세그먼트를 횡단하는 것을 지칭할 수 있다. 상이한 경로들을 사용하는 것은 네트워크들에서의 로드 밸런싱(load balancing) 및/또는 트랜잭션들에 대한 감소된 레이턴시를 제공할 수 있다.
컴퓨터 시스템
다음으로 도 14를 참조하면, 시스템(700)의 일 실시예의 블록도가 도시된다. 예시된 실시예에서, 시스템(700)은 하나 이상의 주변기기들(704) 및 외부 메모리(702)에 커플링된 시스템 온 칩(SOC)(20)의 적어도 하나의 인스턴스를 포함한다. SOC(10)에 공급 전압들을 공급할 뿐만 아니라, 메모리(702) 및/또는 주변기기들(154)에 하나 이상의 공급 전압들을 공급하는 전력 공급부(PMU)(708)가 제공된다. 일부 실시예들에서, SOC(20)의 1개 초과의 인스턴스가 포함될 수 있다(그리고 1개 초과의 메모리(702)가 또한 포함될 수 있다). 일 실시예에서, 메모리(702)는 도 5에 예시된 메모리들(30A 내지 30D)을 포함할 수 있다.
주변기기들(704)은 시스템(700)의 유형에 의존하여 임의의 원하는 회로부를 포함할 수 있다. 예를 들어, 일 실시예에서, 시스템(704)은 모바일 디바이스(예를 들어, 개인 휴대 정보 단말기(personal digital assistant, PDA), 스마트 폰 등)일 수 있고, 주변기기들(704)은 Wi-Fi, 블루투스(Bluetooth), 셀룰러, 글로벌 포지셔닝 시스템 등과 같은 다양한 유형들의 무선 통신용 디바이스들을 포함할 수 있다. 주변기기들(704)은 또한 RAM 저장소, 솔리드 스테이트 저장소(solid state storage) 또는 디스크 저장소를 포함하는 부가적인 저장소를 포함할 수 있다. 주변기기들(704)은 사용자 인터페이스 디바이스들, 예컨대 터치 디스플레이 스크린들 또는 멀티터치 디스플레이 스크린을 포함한 디스플레이 스크린, 키보드 또는 다른 입력 디바이스, 마이크로폰, 스피커 등을 포함할 수 있다. 다른 실시예들에서, 시스템(700)은 임의의 타입의 컴퓨팅 시스템(예컨대 데스크톱 개인용 컴퓨터, 랩톱, 워크스테이션, 넷톱 등)일 수 있다.
외부 메모리(702)는 임의의 유형의 메모리를 포함할 수 있다. 예를 들어, 외부 메모리(702)는 SRAM, 동적 RAM(DRAM), 예컨대, 동기식 DRAM(synchronous DRAM, SDRAM), 더블 데이터 레이트(double data rate)(DDR, DDR2, DDR3 등) SDRAM, RAMBUS DRAM, 저전력 버전들의 DDR DRAM(예를 들어, LPDDR, mDDR 등) 등일 수 있다. 외부 메모리(702)는 메모리 디바이스들이 장착되는 하나 이상의 메모리 모듈들, 예컨대, 단일 인라인 메모리 모듈(single inline memory module, SIMM)들, 듀얼 인라인 메모리 모듈(dual inline memory module, DIMM)들 등을 포함할 수 있다. 대안적으로, 외부 메모리(702)는 칩-온-칩(chip-on-chip) 또는 패키지-온-패키지(package-on-package) 구현예로 SOC(20) 상에 장착되는 하나 이상의 메모리 디바이스들을 포함할 수 있다.
예시된 바와 같이, 시스템(700)은 넓은 범위의 영역들의 애플리케이션을 갖는 것으로 도시되어 있다. 예를 들어, 시스템(700)은 데스크톱 컴퓨터(710), 랩톱 컴퓨터(720), 태블릿 컴퓨터(730), 셀룰러 또는 모바일 폰(740), 또는 텔레비전(750)(또는 텔레비전에 커플링된 셋톱 박스)의 칩들, 회로부, 컴포넌트들 등의 부분으로서 이용될 수 있다. 스마트워치 및 건강 모니터링 디바이스(760)가 또한 예시된다. 일부 실시예들에서, 스마트워치는 다양한 범용 컴퓨팅 관련 기능들을 포함할 수 있다. 예를 들어, 스마트워치는 이메일, 셀폰 서비스, 사용자 캘린더 등에 대한 액세스를 제공할 수 있다. 다양한 실시예들에서, 건강 모니터링 디바이스는 전용 의료 디바이스일 수 있거나, 또는 그렇지 않으면 전용 건강 관련 기능을 포함할 수 있다. 예를 들어, 건강 모니터링 디바이스는 사용자의 바이탈 사인(vital sign)들을 모니터링하고, 역학적인 사회적 거리두기의 목적을 위해 다른 사용자들에 대한 사용자의 근접도를 추적하고, 접촉을 추적하고, 건강 위험의 경우 응급 서비스에 통신을 제공하는 등일 수 있다. 다양한 실시예들에서, 위에서 언급된 스마트워치는 일부 또는 임의의 건강 모니터링 관련 기능들을 포함할 수 있거나 포함하지 않을 수 있다. 목부 주위에 착용된 디바이스들, 인체에서 이식가능한 디바이스들, 증강 및/또는 가상 현실 경험을 제공하도록 설계된 안경 등과 같은 다른 웨어러블 디바이스들이 또한 고려된다.
시스템(700)은 클라우드 기반 서비스(들)(770)의 일부로서 추가로 사용될 수 있다. 예를 들어, 이전에 언급된 디바이스들, 및/또는 다른 디바이스들은 클라우드 내의 컴퓨팅 리소스들(즉, 원격으로 위치된 하드웨어 및/또는 소프트웨어 리소스들)에 액세스할 수 있다. 더 추가적으로, 시스템(700)은 이전에 언급된 것들 이외의 홈(home)의 하나 이상의 디바이스들에서 이용될 수 있다. 예를 들어, 홈 내의 기기들은 주의를 요하는 조건들을 모니터링하고 검출할 수 있다. 예를 들어, 홈 내의 다양한 디바이스들(예를 들어, 냉장고, 냉각 시스템 등)은 디바이스의 상태를 모니터링하고, 특정 이벤트가 검출되면 경보를 집주인(또는 예를 들어, 수리 설비)에게 제공할 수 있다. 대안적으로, 서모스탯(thermostat)은 홈 내의 온도를 모니터링할 수 있고, 집주인에 의한 다양한 조건들에 대한 응답들의 이력에 기초하여 가열/냉각 시스템에 대한 조정들을 자동화할 수 있다. 또한, 다양한 운송 모드들에 대한 시스템(700)의 적용이 도 14에 예시되어 있다. 예를 들어, 시스템(700)은 항공기, 기차들, 버스들, 임대용 자동차들, 개인용 자동차들, 개인용 보트들로부터 유람선(cruise liner)들까지의 수상 선박들, (대여 또는 소유를 위한) 스쿠터들 등의 제어 및/또는 엔터테인먼트 시스템들에서 사용될 수 있다. 다양한 경우들에서, 시스템(700)은 자동화된 안내(예를 들어, 자율-주행 차량들), 일반적인 시스템 제어 등을 제공하기 위해 사용될 수 있다. 이들 임의의 많은 다른 실시예들이 가능하고 고려된다. 도 14에 예시된 디바이스들 및 애플리케이션들이 단지 예시적인 것이며 제한하려는 의도가 아니라는 것을 유의한다. 다른 디바이스들이 가능하고 고려된다.
컴퓨터 판독가능 저장 매체
이제 도 15를 참조하면, 컴퓨터 판독가능 저장 매체(800)의 일 실시예의 블록도가 도시된다. 일반적으로 말하면, 컴퓨터 액세스가능 저장 매체는 명령어들 및/또는 데이터를 컴퓨터에 제공하기 위하여 사용 동안 컴퓨터에 의해 액세스가능한 임의의 저장 매체를 포함할 수 있다. 예를 들어, 컴퓨터 액세스가능 저장 매체는, 자기 또는 광학 매체, 예를 들어, 디스크(고정식 또는 착탈식), 테이프, CD-ROM, DVD-ROM, CD-R, CD-RW, DVD-R, DVD-RW, 또는 블루레이(Blu-Ray)와 같은 저장 매체들을 포함할 수 있다. 저장 매체들은, RAM(예를 들어, 동기식 동적 RAM(SDRAM), 램버스 DRAM(RDRAM), 정적 RAM(SRAM) 등), ROM, 또는 플래시 메모리와 같은 휘발성 또는 비휘발성 메모리 매체들을 더 포함할 수 있다. 저장 매체들은 저장 매체들이 명령어들/데이터를 제공하는 컴퓨터 내에 물리적으로 포함될 수 있다. 대안적으로, 저장 매체들은 컴퓨터에 연결될 수 있다. 예를 들어, 저장 매체들은 네트워크 부착형 저장소와 같이, 네트워크 또는 무선 링크를 통해 컴퓨터에 연결될 수 있다. 저장 매체들은 USB(Universal Serial Bus)와 같은 주변기기 인터페이스를 통해 연결될 수 있다. 일반적으로, 컴퓨터 액세스가능 저장 매체(800)는 비일시적 방식으로 데이터를 저장할 수 있고, 이러한 맥락에서 비일시적은 신호 상에서 명령어들/데이터를 송신하지 않는 것을 지칭할 수 있다. 예를 들어, 비일시적 저장소는 휘발성(그리고 전력 차단에 응답하여 저장된 명령어들/데이터를 상실할 수 있음) 또는 비휘발성일 수 있다.
도 15의 컴퓨터 액세스가능 저장 매체(800)는 SOC(20)를 표현하는 데이터베이스(804)를 저장할 수 있다. 일반적으로, 데이터베이스(804)는, 프로그램에 의해 판독될 수 있고 SOC(20)를 포함하는 하드웨어를 제조하기 위해 직접적으로 또는 간접적으로 사용될 수 있는 데이터베이스일 수 있다. 예를 들어, 데이터베이스는 베릴로그(Verilog) 또는 VHDL과 같은 고레벨 설계 언어(high level design language, HDL)에서 하드웨어 기능의 거동-레벨 디스크립션(behavioral-level description) 또는 레지스터-전송 레벨(register-transfer level, RTL) 디스크립션일 수 있다. 디스크립션은 합성 라이브러리로부터의 게이트들의 목록을 포함하는 넷리스트(netlist)를 생성하기 위해 디스크립션을 합성할 수 있는 합성 도구에 의해 판독될 수 있다. 넷리스트는 SOC(20)를 포함하는 하드웨어의 기능을 또한 표현하는 한 세트의 게이트들을 포함한다. 이어서, 넷리스트는 마스크들에 적용될 기하학적 형상들을 설명하는 데이터 세트를 생성하기 위해 배치되고 라우팅될 수 있다. 이어서, 마스크들은 SOC(20)에 대응하는 반도체 회로 또는 회로들을 생성하기 위한 다양한 반도체 제조 단계들에서 사용될 수 있다. 대안적으로, 컴퓨터 액세스가능 저장 매체(800) 상의 데이터베이스(804)는, 원하는 대로, 넷리스트(합성 라이브러리가 있거나 없음) 또는 데이터 세트일 수 있다.
컴퓨터 액세스가능 저장 매체(800)가 SOC(10)의 표현을 저장하지만, 다른 실시예들은 도 5에 도시된 컴포넌트들의 임의의 서브세트를 포함하여, 원하는 대로, SOC(20)의 임의의 부분의 표현을 반송할 수 있다. 데이터베이스(804)는 위의 것의 임의의 부분을 표현할 수 있다.
일 실시예에서, 시스템은 복수의 프로세서 클러스터들, 복수의 메모리 제어기들, 복수의 그래픽 프로세싱 유닛들, 복수의 에이전트들, 및 복수의 프로세서 클러스터들, 복수의 그래픽 프로세싱 유닛들, 복수의 메모리 제어기들, 및 복수의 에이전트에 커플링된 복수의 네트워크 스위치들을 포함한다. 주어진 프로세서 클러스터는 하나 이상의 프로세서들을 포함한다. 메모리 제어기들은 메모리 디바이스들에 대한 액세스를 제어하도록 구성된다. 복수의 네트워크 스위치들의 제1 서브세트는 복수의 프로세서 클러스터들과 복수의 메모리 제어기들 사이에 중앙 프로세싱 유닛(CPU) 네트워크를 형성하도록 상호연결된다. 복수의 네트워크 스위치들의 제2 서브세트는 복수의 프로세서 클러스터들, 복수의 에이전트들, 및 복수의 메모리 제어기들 사이에 입력/출력(I/O) 네트워크를 형성하도록 상호연결된다. 복수의 네트워크 스위치들의 제3 서브세트는 복수의 그래픽 프로세싱 유닛들, 복수의 에이전트들 중 선택된 에이전트들, 및 복수의 메모리 제어기들 사이에 완화된 순서 네트워크를 형성하도록 상호연결된다. CPU 네트워크, I/O 네트워크, 및 완화된 순서 네트워크는 서로 독립적이다. CPU 네트워크 및 I/O 네트워크는 일관적이다. 완화된 순서 네트워크는 비일관적이고, CPU 네트워크 및 I/O 네트워크와 비교하여 감소된 순서화 제약들을 갖는다. 일 실시예에서, CPU 네트워크, I/O 네트워크, 및 완화된 순서 네트워크 중 적어도 하나는 CPU 네트워크, I/O 네트워크, 및 완화된 순서 네트워크 중 다른 하나 상의 물리적 채널들의 수와 상이한 수의 물리적 채널들을 갖는다. 일 실시예에서, CPU 네트워크는 링 네트워크이다. 일 실시예에서, I/O 네트워크는 링 네트워크이다. 일 실시예에서, 완화된 순서 네트워크는 메시 네트워크이다. 일 실시예에서, 복수의 에이전트들 중 제1 에이전트는 복수의 주변기기 디바이스들을 포함하는 I/O 클러스터를 포함한다. 일 실시예에서, I/O 클러스터는, 복수의 주변기기 디바이스들에 커플링되고 제2 서브세트 내의 제1 네트워크 스위치에 추가로 커플링된 브릿지를 더 포함한다. 일 실시예에서, 시스템은 주어진 에이전트로부터의 통신들을 CPU 네트워크, I/O 네트워크, 및 완화된 순서 네트워크 중 주어진 네트워크에 대한 통신들로 변환하도록 구성된 네트워크 인터페이스 회로를 더 포함하며, 여기서, 네트워크 인터페이스 회로는 주어진 네트워크에서 복수의 네트워크 스위치들 중 하나에 커플링된다.
일 실시예에서, 시스템 온 칩(SOC)은 회로부가 형성되는 반도체 다이를 포함한다. 회로부는 복수의 에이전트들, 및 복수의 에이전트들에 커플링된 복수의 네트워크 스위치들을 포함한다. 복수의 네트워크 스위치들은 복수의 물리적으로 그리고 논리적으로 독립적인 네트워크들을 형성하도록 상호연결된다. 복수의 물리적으로 그리고 논리적으로 독립적인 네트워크들 중 제1 네트워크는 제1 토폴로지에 따라 구성되고, 복수의 물리적으로 그리고 논리적으로 독립적인 네트워크들 중 제2 네트워크는 제1 토폴로지와 상이한 제2 토폴로지에 따라 구성된다. 일 실시예에서, 제1 토폴로지는 링 토폴로지이다. 일 실시예에서, 제2 토폴로지는 메시 토폴로지이다. 일 실시예에서, 제1 네트워크 상에서 일관성이 강제된다. 일 실시예에서, 제2 네트워크는 완화된 순서 네트워크이다. 일 실시예에서, 복수의 물리적으로 그리고 논리적으로 독립적인 네트워크들 중 적어도 하나의 네트워크는 제1 수의 물리적 채널들을 구현하고, 복수의 물리적으로 그리고 논리적으로 독립적인 네트워크들 중 적어도 하나의 다른 네트워크는 제2 수의 물리적 채널들을 구현하며, 여기서 제1 수는 제2 수와 상이하다. 일 실시예에서, 제1 네트워크는 하나 이상의 제1 가상 채널들을 포함하고, 제2 네트워크는 하나 이상의 제2 가상 채널들을 포함한다. 하나 이상의 제1 가상 채널들 중 적어도 하나는 하나 이상의 제2 가상 채널들과 상이하다. 일 실시예에서, SOC는 복수의 에이전트들 중 주어진 에이전트로부터의 통신들을 복수의 물리적으로 그리고 논리적으로 독립적인 네트워크들 중 주어진 네트워크에 대한 통신들로 변환하도록 구성된 네트워크 인터페이스 회로를 더 포함한다. 네트워크 인터페이스 회로는 주어진 네트워크에서 복수의 네트워크 스위치들 중 하나에 커플링된다. 일 실시예에서, 복수의 에이전트들 중 제1 에이전트는 복수의 물리적으로 그리고 논리적으로 독립적인 네트워크들 중 적어도 2개에 커플링된다. 제1 에이전트는 송신될 트랜잭션을 생성하도록 구성된다. 제1 에이전트는 트랜잭션의 유형에 기초하여 트랜잭션을 송신할, 복수의 물리적으로 그리고 논리적으로 독립적인 네트워크들 중 적어도 2개의 네트워크들 중에서 하나를 선택하도록 구성된다. 일 실시예에서, 적어도 2개의 네트워크들 중 하나는 I/O 트랜잭션들이 송신되는 I/O 네트워크이다.
일 실시예에서, 방법은, 복수의 물리적으로 그리고 논리적으로 독립적인 네트워크들에 커플링된 에이전트에서 트랜잭션을 생성하는 단계 - 복수의 물리적으로 그리고 논리적으로 독립적인 네트워크들 중 제1 네트워크는 제1 토폴로지에 따라 구성되고, 복수의 물리적으로 그리고 논리적으로 독립적인 네트워크들 중 제2 네트워크는 제1 토폴로지와 상이한 제2 토폴로지에 따라 구성됨 -; 및 트랜잭션의 유형에 기초하여 트랜잭션을 송신할, 복수의 물리적으로 그리고 논리적으로 독립적인 네트워크들 중 하나를 선택하는 단계를 포함한다. 일 실시예에서, 방법은, 유형 이외의 트랜잭션의 하나 이상의 속성들에 기초하여 복수의 물리적으로 그리고 논리적으로 독립적인 네트워크들 중 하나 상에서 지원되는 복수의 가상 채널들 중 일 가상 채널을 선택하는 단계를 더 포함한다.
***
본 개시내용은 "실시예" 또는 "실시예들의 그룹들"(예를 들어, "일부 실시예들" 또는 "다양한 실시예들")에 대한 언급들을 포함한다. 실시예들은 개시된 개념들의 상이한 구현들 또는 인스턴스들이다. "실시예", "일 실시예", "특정 실시예" 등에 대한 언급들은 반드시 동일한 실시예를 지칭하는 것은 아니다. 구체적으로 개시된 것들 뿐만 아니라, 본 개시내용의 사상 또는 범주 내에 속하는 수정들 또는 대안들을 포함하는 많은 가능한 실시예들이 고려된다.
본 개시내용은 개시된 실시예들로부터 발생할 수 있는 잠재적인 이점들을 논의할 수 있다. 이들 실시예들의 모든 구현들이 반드시 잠재적인 이점들 중 임의의 또는 모든 것을 나타내는 것은 아닐 것이다. 특정 구현에 대해 이점이 실현되는지 여부는 많은 인자들에 의존하며, 이들 중 일부는 본 개시내용의 범위를 벗어난다. 실제로, 청구항들의 범위 내에 속하는 구현이 임의의 개시된 이점들 중 일부 또는 전부를 나타내지 않을 수 있는 많은 이유들이 있다. 예를 들어, 특정 구현은 개시된 실시예들 중 하나와 함께, 하나 이상의 개시된 이점들을 무효화하거나 약화시키는, 본 개시내용의 범위 밖의 다른 회로부를 포함할 수 있다. 더욱이, 특정 구현의 차선의 설계 실행(예를 들어, 구현 기법들 또는 도구들)은 또한 개시된 이점들을 무효화하거나 약화시킬 수 있다. 숙련된 구현을 가정하더라도, 이점들의 실현은 구현이 전개되는 환경 상황들과 같은 다른 인자들에 여전히 의존할 수 있다. 예를 들어, 특정 구현에 공급되는 입력들은 본 개시내용에서 해결되는 하나 이상의 문제들이 특정 기회에 발생하는 것을 방지할 수 있으며, 그 결과, 그 해결책의 이익이 실현되지 않을 수 있다. 본 개시내용 외부의 가능한 인자들의 존재를 고려할 때, 본 명세서에서 설명되는 임의의 잠재적인 이점들은, 침해를 입증하기 위해 충족되어야 하는 청구항 제한들로서 해석되지 않아야 한다는 것이 명백하게 의도된다. 오히려, 그러한 잠재적 이점들의 식별은 본 개시내용의 이익을 갖는 설계자들에게 이용가능한 개선의 유형(들)을 예시하도록 의도된다. 그러한 이점들이 허용가능하게 설명된다는 것(예를 들어, 특정 이점이 "발생할 수 있다"고 언급함)은 그러한 이점들이 실제로 실현될 수 있는지에 대한 의구심을 전달하도록 의도되는 것이 아니라, 그러한 이점들의 실현이 종종 부가적인 인자들에 의존한다는 기술적 현실을 인식하도록 의도된다.
달리 언급되지 않는 한, 실시예들은 비제한적이다. 즉, 개시된 실시예들은, 특정 특징에 대해 단일 예만이 설명되는 경우에도, 본 개시내용에 기초하여 작성되는 청구항들의 범위를 제한하도록 의도되지 않는다. 개시된 실시예들은, 이에 반하는 본 개시내용의 어떠한 진술도 없이, 제한적이기보다는 예시적인 것으로 의도된다. 따라서, 본 출원은 개시된 실시예들을 커버하는 청구항들뿐만 아니라, 본 개시내용의 이익을 갖는 당업자에게 명백할 그러한 대안들, 수정들 및 등가물들을 허용하도록 의도된다.
예를 들어, 본 출원에서의 특징들은 임의의 적합한 방식으로 조합될 수 있다. 따라서, 특징부들의 임의의 그러한 조합에 대해 본 출원(또는 그에 대한 우선권을 주장하는 출원)의 심사 동안에 새로운 청구범위가 작성될 수 있다. 특히, 첨부된 청구항들을 참조하면, 종속 청구항들로부터의 특징들은 다른 독립 청구항들로부터 의존하는 청구항들을 포함하여, 적절한 경우 다른 종속 청구항들의 특징들과 조합될 수 있다. 유사하게, 개개의 독립 청구항들로부터의 특징들은 적절한 경우 조합될 수 있다.
따라서, 첨부된 종속 청구항들은 각각이 단일의 다른 청구항들에 의존하도록 작성될 수 있지만, 부가적인 종속성들이 또한 고려된다. 본 개시내용과 일치하는 종속물에서의 특징들의 임의의 조합들이 고려되며, 이러한 또는 다른 애플리케이션에서 청구될 수 있다. 간단히 말하면, 조합들은 첨부된 청구항들에 구체적으로 열거된 것들로 제한되지 않는다.
적절한 경우, 하나의 포맷 또는 법정 유형(예를 들어, 장치)으로 작성된 청구항들은 다른 포맷 또는 법정 유형(예를 들어, 방법)의 대응하는 청구항들을 지원하도록 의도되는 것으로 또한 고려된다.
***
본 개시내용은 법적인 문서이기 때문에, 다양한 용어들 및 문구들은 행정적 및 사법적 해석의 대상이 될 수 있다. 본 개시내용 전반에 걸쳐 제공되는 정의들뿐만 아니라 다음의 단락들이 본 개시내용에 기초하여 작성되는 청구항들을 해석하는 방법을 결정하는 데 사용될 것이라는 공지가 본 명세서에 주어진다.
물품의 단수 형태(즉, "a", "an" 또는 "the"가 선행되는 명사 또는 명사 문구)에 대한 언급들은, 문맥상 명확하게 달리 지시되지 않는 한, "하나 이상"을 의미하는 것으로 의도된다. 따라서, 청구항에서 "항목"에 대한 언급은, 수반되는 상황 없이, 항목의 추가적인 인스턴스들을 배제하지 않는다. "복수"의 항목들은 항목들 중 2개 이상의 세트를 지칭한다.
"~할 수 있다"라는 단어는 본 명세서에서 강제적인 의미(즉, ~ 해야 하는)가 아니라 허용적인 의미(즉, ~할 가능성을 갖는, ~할 수 있는)로 사용된다.
용어들 "포함하는"("comprising" 및 "including") 및 이들의 형태는 개방형(open-ended)이며, "포함하지만 이로 한정되지 않는"을 의미한다.
용어 "또는"이 옵션들의 리스트에 관하여 본 개시내용에서 사용될 때, 문맥이 달리 제공하지 않는 한, 일반적으로 포괄적인 의미로 사용되는 것으로 이해될 것이다. 따라서, "x 또는 y"의 언급은 "x 또는 y, 또는 둘 모두"와 동등하고, 따라서 1) x지만 y 아님, 2) y지만 x 아님 및 3) x 및 y 둘 모두를 커버한다. 반면에, "둘 모두가 아니라 x 또는 y 중 어느 하나"와 같은 문구는 "또는"이 배타적인 의미로 사용되고 있다는 것을 명확하게 한다.
"w, x, y, 또는 z, 또는 이들의 임의의 조합" 또는 ".. w, x, y, 및 z 중 적어도 하나"의 언급은 세트 내의 요소들의 총 개수까지 단일 요소를 수반하는 모든 가능성들을 커버하도록 의도된다. 예를 들어, 세트 [w, x, y, z]가 주어지면, 이러한 문구들은 세트의 임의의 단일 요소(예를 들어, w지만 x, y, 또는 z 아님), 임의의 2개의 요소들(예를 들어, w 및 x지만 y 또는 z 아님), 임의의 3개의 요소들(예를 들어, w, x 및 y지만, z 아님) 및 4개의 요소들 모두를 커버한다. 따라서, ".. w, x, y, 및 z 중 적어도 하나"라는 문구는 세트 [w, x, y, z]의 적어도 하나의 요소를 지칭하고, 이로써 요소들의 이러한 리스트 내의 모든 가능한 조합들을 커버한다. 이 문구는 w의 적어도 하나의 인스턴스, x의 적어도 하나의 인스턴스, y의 적어도 하나의 인스턴스, 및 z의 적어도 하나의 인스턴스가 있음을 요구하도록 해석되지 않아야 한다.
본 개시내용에서 다양한 "라벨들"이 명사들 또는 명사 문구들에 선행할 수 있다. 문맥이 달리 제공하지 않는 한, 특징에 대해 사용되는 상이한 라벨들(예를 들어, "제1 회로", "제2 회로", "특정 회로", "주어진 회로" 등)은 특징의 상이한 인스턴스들을 지칭한다. 부가적으로, 특징에 적용될 때, "제1", "제2" 및 "제3" 라벨들은, 달리 언급되지 않는 한, 어떠한 유형의 순서화(예를 들어, 공간적, 시간적, 논리적 등)를 의미하지 않는다.
문구 "기초하여"는 결정에 영향을 주는 하나 이상의 인자들을 설명하기 위해 사용된다. 이러한 용어는 부가적인 인자들이 결정에 영향을 줄 수 있는 가능성을 배제하지 않는다. 즉, 결정은 단지 특정된 인자들에 기초하거나 또는 그 특정된 인자들뿐만 아니라 다른, 불특정된 인자들에 기초할 수 있다. "B에 기초하여 A를 결정한다"라는 문구를 고려한다. 이러한 문구는 B가 A를 결정하는 데 사용되거나 A의 결정에 영향을 주는 인자라는 것을 명시한다. 이러한 문구는 A의 결정이 C와 같은 일부 다른 인자에 또한 기초할 수 있음을 배제하지 않는다. 또한, 이 문구는 A가 B만에 기초하여 결정되는 실시예를 커버하도록 의도된다. 본 명세서에서 사용되는 바와 같이, "에 기초하여"라는 문구는 "적어도 부분적으로 기초하여"라는 문구와 동의어이다.
문구들 "~ 에 응답하여" 및 "~ 에 응답으로"는 효과를 트리거하는 하나 이상의 인자들을 설명한다. 이러한 문구는 부가적인 인자들이 특정 인자들과 공동으로 또는 특정 인자들과는 독립적으로 영향을 주거나 또는 달리 효과를 트리거할 수 있는 가능성을 배제하지 않는다. 즉, 효과는 단지 이들 인자들에만 응답할 수 있거나 또는 특정 인자들 뿐만 아니라 다른 불특정 인자들에 응답할 수 있다. "B에 응답하여 A를 수행한다"라는 문구를 고려한다. 이러한 문구는 B가 A의 수행을 트리거하는 또는 A에 대한 특정 결과를 트리거하는 인자라는 것을 명시한다. 이러한 문구는 A를 수행하는 것이 C와 같은 일부 다른 인자에 또한 응답할 수 있음을 배제하지 않는다. 이러한 문구는 또한 A를 수행하는 것이 B와 C에 응답하여 공동으로 수행될 수 있다는 것을 배제하지 않는다. 이러한 문구는 또한 A가 B에만 응답하여 수행되는 실시예를 커버하도록 의도된다. 본 명세서에서 사용되는 바와 같이, 문구 "응답하여"는 문구 "적어도 부분적으로 응답하여"와 동의어이다. 유사하게, 문구 "~ 에 응답하여"는 문구 "적어도 부분적으로 응답하여"와 동의어이다.
***
본 개시내용 내에서, 상이한 엔티티들("유닛들", "회로들", 다른 컴포넌트들 등으로 다양하게 지칭될 수 있음)은 하나 이상의 태스크들 또는 동작들을 수행하도록 "구성된" 것으로 설명되거나 또는 청구될 수 있다. 이러한 표현-[하나 이상의 태스크들을 수행]하도록 구성된 [엔티티]-은 본 명세서에서 구조(즉, 물리적인 것)를 지칭하는 데 사용된다. 더 상세하게는, 이러한 표현은 이러한 구조가 동작 동안 하나 이상의 태스크들을 수행하도록 배열됨을 나타내는 데 사용된다. 구조는 그 구조가 현재 동작되고 있지 않더라도 일부 태스크를 수행하도록 "구성된다"고 말할 수 있다. 따라서, 일부 태스크를 수행"하도록 구성된" 것으로 설명된 또는 언급된 엔티티는 디바이스, 회로, 태스크를 구현하도록 실행가능한 프로그램 명령어들을 저장하는 메모리 및 프로세서 유닛을 갖는 시스템 등과 같은 물리적인 것을 지칭한다. 이러한 문구는 본 명세서에서 무형인 것을 지칭하기 위해 사용되지는 않는다.
일부 경우들에서, 다양한 유닛들/회로들/컴포넌트들은 태스크 또는 동작들의 세트를 수행하는 것으로 본 명세서에서 설명될 수 있다. 이들 엔티티들은, 구체적으로 언급되지 않더라도, 그러한 태스크들/동작들을 수행하도록 "구성"된다는 것이 이해된다.
용어 "구성된"은 "구성가능한"을 의미하도록 의도되지 않는다. 예를 들어, 프로그래밍되지 않은 FPGA는 특정 기능을 수행하도록 "구성된" 것으로 간주되지 않을 것이다. 그러나, 이러한 프로그래밍되지 않은 FPGA는 그 기능을 수행하도록 "구성가능"할 수 있다. 적절한 프로그래밍 후에, 이어서 FPGA는 특정 기능을 수행하도록 "구성된다"고 말할 수 있다.
본 개시내용에 기초한 미국 특허 출원들의 목적들을 위해, 구조가 하나 이상의 태스크들을 수행하도록 "구성"된다고 청구항에서 언급하는 것은 명백히 그 청구항 요소에 대하여 35 U.S.C. §112(f)를 적용하지 않도록 의도된다. 출원인이 본 개시내용에 기초하여 미국 특허 출원의 심사 동안 섹션 112(f)의 적용을 원하면, [기능을 수행]"하기 위한 수단" 구조를 이용하여 청구항 요소들을 열거할 것이다.
상이한 "회로들"이 본 개시내용에서 설명될 수 있다. 이러한 회로들 또는 "회로부"는 조합 로직, 클로킹된 저장 디바이스들(예를 들어, 플립-플롭들, 레지스터들, 래치들 등), 유한 상태 머신들, 메모리(예를 들어, 랜덤 액세스 메모리, 내장형 동적 랜덤 액세스 메모리), 프로그래밍가능 로직 어레이들 등과 같은 다양한 유형들의 회로 요소들을 포함하는 하드웨어를 구성한다. 회로부는 맞춤 설계되거나 표준 라이브러리들로부터 취해질 수 있다. 다양한 구현들에서, 회로부는 적절하게 디지털 컴포넌트들, 아날로그 컴포넌트들, 또는 둘 모두의 조합을 포함할 수 있다. 특정 유형들의 회로들은 일반적으로 "유닛들"(예를 들어, 디코딩 유닛, 산술 로직 유닛(ALU), 기능 유닛, 메모리 관리 유닛(MMU) 등)으로 지칭될 수 있다. 그러한 유닛들은 또한 회로들 또는 회로를 지칭한다.
따라서, 도면들에 예시되고 본 명세서에서 설명된 개시된 회로들/유닛들/컴포넌트들 및 다른 요소들은 이전 단락에서 설명된 것들과 같은 하드웨어 요소들을 포함한다. 많은 경우들에서, 특정 회로 내의 하드웨어 요소들의 내부 배열은 그 회로의 기능을 설명함으로써 특정될 수 있다. 예를 들어, 특정 "디코딩 유닛"은 "명령어의 오피코드를 프로세싱하고 그 명령어를 복수의 기능 유닛들 중 하나 이상에 라우팅하는" 기능을 수행하는 것으로 설명될 수 있으며, 이는 디코딩 유닛이 이러한 기능을 수행하도록 "구성됨"을 의미한다. 이러한 기능의 규격은, 컴퓨터 분야의 당업자들에게, 회로에 대한 가능한 구조들의 세트를 암시하기에 충분하다.
다양한 실시예들에서, 이전 단락에서 논의된 바와 같이, 회로들, 유닛들, 및 이들이 구현하도록 구성된 기능들 또는 동작들에 의해 정의된 다른 요소들, 배열 및 그러한 회로들/유닛들/컴포넌트들은 서로에 대해 그리고 이들이 상호작용하는 방식으로, 마이크로 아키텍처 정의의 물리적 구현을 형성하도록 집적 회로에서 궁극적으로 제조되거나 FPGA로 프로그래밍되는 하드웨어의 마이크로 아키텍처 정의를 형성한다. 따라서, 마이크로 아키텍처 정의는 많은 물리적 구현들이 유도될 수 있는 구조로서 당업자들에 의해 인식되며, 이들 모두는 마이크로 아키텍처 정의에 의해 설명된 더 넓은 구조에 속한다. 즉, 본 개시내용에 따라 공급되는 마이크로아키텍처 정의를 제공받는 당업자는, 과도한 실험 없이 그리고 통상의 기술의 적용으로, 회로들/유닛들/컴포넌트들의 디스크립션을 베릴로그 또는 VHDL과 같은 하드웨어 디스크립션 언어(HDL)로 코딩함으로써 구조를 구현할 수 있다. HDL 디스크립션은 종종, 기능적으로 보일 수 있는 방식으로 표현된다. 그러나, 당업자들에게, 이러한 HDL 디스크립션은 회로, 유닛 또는 컴포넌트의 구조를 다음 레벨의 구현 세부사항으로 변환하는 데 사용되는 방식이다. 그러한 HDL 디스크립션은 (통상적으로 합성가능하지 않은) 거동 코드, (거동 코드와는 대조적으로, 통상적으로 합성가능한) 레지스터 전송 언어(RTL) 코드, 또는 구조적 코드(예를 들어, 로직 게이트들 및 그들의 연결성을 특정하는 넷리스트)의 형태를 취할 수 있다. HDL 디스크립션은 주어진 집적 회로 제조 기술을 위해 설계된 셀들의 라이브러리에 대해 순차적으로 합성될 수 있고, 타이밍, 전력 및 다른 이유들로 인해 수정되어 최종 설계 데이터베이스를 생성할 수 있으며, 이는 파운드리(foundry)로 송신되어 마스크들을 생성하고 궁극적으로 집적 회로를 생성할 수 있다. 일부 하드웨어 회로들 또는 그의 부분들은 또한 회로도 편집기(schematic editor)로 맞춤 설계될 수 있고 합성된 회로부와 함께 집적 회로 설계 내로 캡처될 수 있다. 집적 회로들은 트랜지스터들, 및 다른 회로 요소들(예를 들어, 커패시터들, 저항기들, 인덕터들 등과 같은 수동 요소들) 및 트랜지스터들과 회로 요소들 사이의 상호연결부를 포함할 수 있다. 일부 실시예들은 하드웨어 회로들을 구현하기 위해 함께 결합된 다수의 집적 회로들을 구현할 수 있고, 그리고/또는 일부 실시예들에서는 이산 요소들이 사용될 수 있다. 대안적으로, HDL 설계는 FPGA(Field Programmable Gate Array)와 같은 프로그래밍가능 로직 어레이로 합성될 수 있으며 FPGA에서 구현될 수 있다. 회로들의 그룹의 설계와 이들 회로들의 후속 저레벨 구현 사이의 이러한 디커플링은 일반적으로, 회로 또는 로직 설계자가 회로가 무엇을 하도록 구성되는지의 설명을 넘어서 저레벨 구현에 대한 특정 세트의 구조들을 특정하지 않는 시나리오를 도출하는데, 이는 이러한 프로세스가 회로 구현 프로세스의 상이한 스테이지에서 수행되기 때문이다.
회로 요소들의 많은 상이한 저-레벨 조합들이 회로의 동일한 규격을 구현하는 데 사용될 수 있다는 사실은 그 회로에 대한 다수의 등가 구조들을 초래한다. 언급된 바와 같이, 이러한 저레벨 회로 구현들은 제조 기술의 변화들, 집적 회로를 제조하기 위해 선택된 파운드리, 특정 프로젝트를 위해 제공된 셀들의 라이브러리 등에 따라 변할 수 있다. 많은 경우들에서, 이들 상이한 구현들을 생성하기 위해 상이한 설계 도구들 또는 방법론들에 의해 이루어지는 선택들은 임의적일 수 있다.
게다가, 회로의 특정 기능 규격의 단일 구현이 주어진 실시예에 대해 많은 수의 디바이스들(예를 들어, 수백만 개의 트랜지스터들)을 포함하는 것이 일반적이다. 따라서, 엄청난 체적의 이러한 정보는, 등가의 가능한 구현들의 방대한 어레이는 말할 것도 없이, 단일 실시예를 구현하는 데 사용되는 저레벨 구조의 완전한 설명을 제공하는 것을 비실용적으로 만든다. 이러한 이유로, 본 개시내용은 업계에서 일반적으로 사용되는 기능적 속기(shorthand)를 사용하여 회로들의 구조를 설명한다.
일단 위의 개시내용이 완전히 이해되면 다수의 변형들 및 수정들이 당업자들에게 명백해질 것이다. 다음의 청구범위는 모든 그러한 변형들 및 수정들을 망라하는 것으로 해석되도록 의도된다.
Claims (20)
- 시스템으로서,
복수의 프로세서 클러스터들 - 주어진 프로세서 클러스터는 하나 이상의 프로세서들을 포함함 -;
복수의 그래픽 프로세싱 유닛들;
메모리 디바이스들에 대한 액세스를 제어하도록 구성된 복수의 메모리 제어기들;
복수의 에이전트들; 및
상기 복수의 프로세서 클러스터들, 상기 복수의 그래픽 프로세싱 유닛들, 상기 복수의 메모리 제어기들, 및 상기 복수의 에이전트들에 커플링된 복수의 네트워크 스위치들을 포함하며,
상기 복수의 네트워크 스위치들의 제1 서브세트는 상기 복수의 프로세서 클러스터들과 상기 복수의 메모리 제어기들 사이에 중앙 프로세싱 유닛(CPU) 네트워크를 형성하도록 상호연결되고,
상기 복수의 네트워크 스위치들의 제2 서브세트는 상기 복수의 프로세서 클러스터들, 상기 복수의 에이전트들, 및 상기 복수의 메모리 제어기들 사이에 입력/출력(I/O) 네트워크를 형성하도록 상호연결되고,
상기 복수의 네트워크 스위치들의 제3 서브세트는 상기 복수의 그래픽 프로세싱 유닛들, 상기 복수의 에이전트들 중 선택된 에이전트들, 및 상기 복수의 메모리 제어기들 사이에 완화된 순서 네트워크(relaxed order network)를 형성하도록 상호연결되고,
상기 CPU 네트워크, 상기 I/O 네트워크, 및 상기 완화된 순서 네트워크는 서로 독립적이고,
상기 CPU 네트워크 및 상기 I/O 네트워크는 일관적(coherent)이고,
상기 완화된 순서 네트워크는 비일관적(non-coherent)이고, 상기 CPU 네트워크 및 상기 I/O 네트워크와 비교하여 감소된 순서화 제약들을 갖는, 시스템. - 제1항에 있어서,
상기 CPU 네트워크, 상기 I/O 네트워크, 및 상기 완화된 순서 네트워크 중 적어도 하나는 상기 CPU 네트워크, 상기 I/O 네트워크, 및 상기 완화된 순서 네트워크 중 다른 하나 상의 물리적 채널들의 수와 상이한 수의 물리적 채널들을 갖는, 시스템. - 제1항에 있어서,
상기 CPU 네트워크는 링 네트워크(ring network)인, 시스템. - 제1항에 있어서,
상기 I/O 네트워크는 링 네트워크인, 시스템. - 제1항에 있어서,
상기 완화된 순서 네트워크는 메시 네트워크(mesh network)인, 시스템. - 제1항에 있어서,
상기 복수의 에이전트들 중 제1 에이전트는 복수의 주변기기 디바이스들을 포함하는 I/O 클러스터를 포함하는, 시스템. - 제6항에 있어서,
상기 I/O 클러스터는, 상기 복수의 주변기기 디바이스들에 커플링되고 상기 제2 서브세트 내의 제1 네트워크 스위치에 추가로 커플링된 브릿지(bridge)를 더 포함하는, 시스템. - 제1항에 있어서,
주어진 에이전트로부터의 통신들을 CPU 네트워크, 상기 I/O 네트워크, 및 상기 완화된 순서 네트워크 중 주어진 네트워크에 대한 통신들로 변환하도록 구성된 네트워크 인터페이스 회로를 더 포함하며,
상기 네트워크 인터페이스 회로는 상기 주어진 네트워크에서 상기 복수의 네트워크 스위치들 중 하나에 커플링되는, 시스템. - 회로부가 형성되는 반도체 다이를 포함하는 시스템 온 칩(SOC)으로서,
상기 회로부는,
복수의 에이전트들;
상기 복수의 에이전트들에 커플링된 복수의 네트워크 스위치들을 포함하고;
상기 복수의 네트워크 스위치들은 복수의 물리적으로 그리고 논리적으로 독립적인 네트워크들을 형성하도록 상호연결되고;
상기 복수의 물리적으로 그리고 논리적으로 독립적인 네트워크들 중 제1 네트워크는 제1 토폴로지에 따라 구성되고, 상기 복수의 물리적으로 그리고 논리적으로 독립적인 네트워크들 중 제2 네트워크는 상기 제1 토폴로지와 상이한 제2 토폴로지에 따라 구성되는, 시스템 온 칩. - 제9항에 있어서,
상기 제1 네트워크 상에서 일관성이 강제되는, 시스템 온 칩. - 제10항에 있어서,
상기 제2 네트워크는 완화된 순서 네트워크인, 시스템 온 칩. - 제9항에 있어서,
상기 복수의 물리적으로 그리고 논리적으로 독립적인 네트워크들 중 적어도 하나의 네트워크는 제1 수의 물리적 채널들을 구현하고, 상기 복수의 물리적으로 그리고 논리적으로 독립적인 네트워크들 중 적어도 하나의 다른 네트워크는 제2 수의 물리적 채널들을 구현하며,
상기 제1 수는 상기 제2 수와 상이한, 시스템 온 칩. - 제9항에 있어서,
상기 제1 네트워크는 하나 이상의 제1 가상 채널들을 포함하고, 상기 제2 네트워크는 하나 이상의 제2 가상 채널들을 포함하며,
상기 하나 이상의 제1 가상 채널들 중 적어도 하나는 상기 하나 이상의 제2 가상 채널들과 상이한, 시스템 온 칩. - 제9항에 있어서,
상기 복수의 에이전트들 중 주어진 에이전트로부터의 통신들을 상기 복수의 물리적으로 그리고 논리적으로 독립적인 네트워크들 중 주어진 네트워크에 대한 통신들로 변환하도록 구성된 네트워크 인터페이스 회로를 더 포함하며,
상기 네트워크 인터페이스 회로는 상기 주어진 네트워크에서 상기 복수의 네트워크 스위치들 중 하나에 커플링되는, 시스템 온 칩. - 제9항에 있어서,
상기 복수의 에이전트들 중 제1 에이전트는 상기 복수의 물리적으로 그리고 논리적으로 독립적인 네트워크들 중 적어도 2개의 네트워크들에 커플링되고,
상기 제1 에이전트는 송신될 트랜잭션(transaction)을 생성하도록 구성되며,
상기 제1 에이전트는 상기 트랜잭션의 유형에 기초하여 상기 트랜잭션을 송신할, 상기 복수의 물리적으로 그리고 논리적으로 독립적인 네트워크들 중 상기 적어도 2개의 네트워크들 중에서 하나를 선택하도록 구성되는, 시스템 온 칩. - 제15항에 있어서,
상기 적어도 2개의 네트워크들 중 하나는 I/O 트랜잭션들이 송신되는 I/O 네트워크인, 시스템 온 칩. - 제9항에 있어서,
상기 제1 네트워크는 복수의 가상 채널들을 포함하며;
상기 복수의 가상 채널들의 상이한 가상 채널들에서의 트랜잭션들은 주어진 소스로부터 주어진 타겟으로 상기 제1 네트워크를 통해 상이한 경로들을 취하는, 시스템 온 칩. - 제9항에 있어서,
상기 제1 네트워크는 주어진 소스로부터 주어진 타겟으로 트랜잭션들을 라우팅하도록 구성되며,
상기 주어진 소스로부터 상기 주어진 타겟으로 생각되는 상이한 경로들은 상기 트랜잭션들의 하나 이상의 속성들에 기초하여 상기 트랜잭션들에 대해 선택되는, 시스템 온 칩. - 방법으로서,
복수의 물리적으로 그리고 논리적으로 독립적인 네트워크들에 커플링된 에이전트에서 트랜잭션을 생성하는 단계 - 상기 복수의 물리적으로 그리고 논리적으로 독립적인 네트워크들 중 제1 네트워크는 제1 토폴로지에 따라 구성되고, 상기 복수의 물리적으로 그리고 논리적으로 독립적인 네트워크들 중 제2 네트워크는 상기 제1 토폴로지와 상이한 제2 토폴로지에 따라 구성됨 -; 및
상기 트랜잭션의 유형에 기초하여 상기 트랜잭션을 송신할, 상기 복수의 물리적으로 그리고 논리적으로 독립적인 네트워크들 중 하나를 선택하는 단계를 포함하는, 방법. - 제19항에 있어서,
상기 유형 이외의 상기 트랜잭션의 하나 이상의 속성들에 기초하여 상기 복수의 물리적으로 그리고 논리적으로 독립적인 네트워크들 중 상기 하나 상에서 지원되는 복수의 가상 채널들 중 일 가상 채널을 선택하는 단계를 더 포함하는, 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020230159026A KR20230160767A (ko) | 2021-04-16 | 2023-11-16 | 다수의 독립적인 온-칩 상호연결부 |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163176075P | 2021-04-16 | 2021-04-16 | |
US63/176,075 | 2021-04-16 | ||
US17/337,805 | 2021-06-03 | ||
US17/337,805 US11675722B2 (en) | 2021-04-16 | 2021-06-03 | Multiple independent on-chip interconnect |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020230159026A Division KR20230160767A (ko) | 2021-04-16 | 2023-11-16 | 다수의 독립적인 온-칩 상호연결부 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20220143590A true KR20220143590A (ko) | 2022-10-25 |
KR102604573B1 KR102604573B1 (ko) | 2023-11-22 |
Family
ID=81653128
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020220046189A KR102604573B1 (ko) | 2021-04-16 | 2022-04-14 | 다수의 독립적인 온-칩 상호연결부 |
KR1020230159026A KR20230160767A (ko) | 2021-04-16 | 2023-11-16 | 다수의 독립적인 온-칩 상호연결부 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020230159026A KR20230160767A (ko) | 2021-04-16 | 2023-11-16 | 다수의 독립적인 온-칩 상호연결부 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11675722B2 (ko) |
KR (2) | KR102604573B1 (ko) |
CN (1) | CN115221108A (ko) |
DE (1) | DE102022109273A1 (ko) |
GB (1) | GB2609693A (ko) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11675722B2 (en) * | 2021-04-16 | 2023-06-13 | Apple Inc. | Multiple independent on-chip interconnect |
US11983133B2 (en) * | 2022-08-22 | 2024-05-14 | Xilinx, Inc. | Adaptive integrated programmable data processing unit |
CN116578523B (zh) * | 2023-07-12 | 2023-09-29 | 上海芯高峰微电子有限公司 | 片上网络系统及其控制方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7340548B2 (en) * | 2003-12-17 | 2008-03-04 | Microsoft Corporation | On-chip bus |
US8190855B1 (en) * | 2006-04-14 | 2012-05-29 | Tilera Corporation | Coupling data for interrupt processing in a parallel processing environment |
US20140301241A1 (en) * | 2013-04-04 | 2014-10-09 | Netspeed Systems | Multiple heterogeneous noc layers |
KR20150019457A (ko) * | 2013-08-14 | 2015-02-25 | 삼성전자주식회사 | 시스템 온 칩, 이의 동작 방법, 및 이를 포함하는 시스템 |
KR20200135780A (ko) * | 2018-03-30 | 2020-12-03 | 프로비노 테크놀로지스, 아이엔씨. | 인터커넥트와 연관된 가상 채널을 통한 트랜잭션의 부분들 중재하기 |
Family Cites Families (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWM253155U (en) * | 2004-02-17 | 2004-12-11 | Fine Appliance Corp | Integrated storage and network function interface card |
US7720054B2 (en) * | 2004-03-02 | 2010-05-18 | Cisco Technology, Inc. | Router configured for outputting update messages specifying a detected attribute change of a connected active path according to a prescribed routing protocol |
US7673164B1 (en) * | 2004-12-13 | 2010-03-02 | Massachusetts Institute Of Technology | Managing power in a parallel processing environment |
US8386690B2 (en) * | 2009-11-13 | 2013-02-26 | International Business Machines Corporation | On-chip networks for flexible three-dimensional chip integration |
US9075952B2 (en) | 2013-01-17 | 2015-07-07 | Intel Corporation | Controlling bandwidth allocations in a system on a chip (SoC) |
EP2997482A4 (en) | 2013-05-16 | 2016-11-16 | Hewlett Packard Development Co | AGENT WITH MULTIPLE MODES |
US9244874B2 (en) | 2013-06-14 | 2016-01-26 | National Instruments Corporation | Selectively transparent bridge for peripheral component interconnect express bus systems |
US9054977B2 (en) * | 2013-08-05 | 2015-06-09 | Netspeed Systems | Automatic NoC topology generation |
US20150178092A1 (en) * | 2013-12-20 | 2015-06-25 | Asit K. Mishra | Hierarchical and parallel partition networks |
US9825779B2 (en) * | 2014-05-23 | 2017-11-21 | Arteris, Inc. | Network-on-chip (NoC) topology generation |
US10523585B2 (en) | 2014-12-19 | 2019-12-31 | Amazon Technologies, Inc. | System on a chip comprising multiple compute sub-systems |
WO2016185599A1 (ja) * | 2015-05-21 | 2016-11-24 | 株式会社日立製作所 | 計算機システム及び計算機 |
US9996487B2 (en) * | 2015-06-26 | 2018-06-12 | Intel Corporation | Coherent fabric interconnect for use in multiple topologies |
US9992135B2 (en) * | 2015-12-11 | 2018-06-05 | Intel Corporation | Apparatus and method for fusion of compute and switching functions of exascale system into a single component by using configurable network-on-chip fabric with distributed dual mode input-output ports and programmable network interfaces |
US9940423B2 (en) * | 2015-12-20 | 2018-04-10 | Arteris, Inc. | Editing a NoC topology on top of a floorplan |
US10191877B2 (en) | 2015-12-22 | 2019-01-29 | Intel Corporation | Architecture for software defined interconnect switch |
US10733350B1 (en) * | 2015-12-30 | 2020-08-04 | Sharat C Prasad | On-chip and system-area multi-processor interconnection networks in advanced processes for maximizing performance minimizing cost and energy |
WO2017120270A1 (en) | 2016-01-04 | 2017-07-13 | Gray Research LLC | Massively parallel computer, accelerated computing clusters, and two dimensional router and interconnection network for field programmable gate arrays, and applications |
US10911261B2 (en) * | 2016-12-19 | 2021-02-02 | Intel Corporation | Method, apparatus and system for hierarchical network on chip routing |
US11562115B2 (en) | 2017-01-04 | 2023-01-24 | Stmicroelectronics S.R.L. | Configurable accelerator framework including a stream switch having a plurality of unidirectional stream links |
US10769080B2 (en) * | 2017-03-30 | 2020-09-08 | Futurewei Technologies, Inc. | Distributed and shared memory controller |
US10043232B1 (en) | 2017-04-09 | 2018-08-07 | Intel Corporation | Compute cluster preemption within a general-purpose graphics processing unit |
US10719651B2 (en) * | 2017-12-30 | 2020-07-21 | Arteris, Inc. | Synthesizing topology for an interconnect network of a system-on-chip with intellectual property blocks |
US11709624B2 (en) * | 2018-02-15 | 2023-07-25 | Xilinx, Inc. | System-on-chip having multiple circuits and memory controller in separate and independent power domains |
US10963421B1 (en) * | 2018-04-27 | 2021-03-30 | Xilinx, Inc. | Flexible address mapping for a NoC in an integrated circuit |
GR20180100189A (el) * | 2018-05-03 | 2020-01-22 | Arm Limited | Δικτυο επεξεργασιας δεδομενων με συμπυκνωση ροης για μεταφορα δεδομενων μεσω streaming |
US10579469B2 (en) | 2018-05-25 | 2020-03-03 | Arm Limited | Interconnection network for integrated circuit |
US10997771B2 (en) | 2018-08-29 | 2021-05-04 | Intel Corporation | Position-based rendering apparatus and method for multi-die/GPU graphics processing |
KR102641520B1 (ko) | 2018-11-09 | 2024-02-28 | 삼성전자주식회사 | 멀티-코어 프로세서를 포함하는 시스템 온 칩 및 그것의 태스크 스케줄링 방법 |
US10944693B2 (en) * | 2018-11-13 | 2021-03-09 | Advanced Micro Devices, Inc. | Routing flits in a network-on-chip based on operating states of routers |
US20200234396A1 (en) * | 2019-01-22 | 2020-07-23 | Black Sesame International Holding Limited | Heterogeneous computation and hierarchical memory image sensing pipeline |
US10673439B1 (en) * | 2019-03-27 | 2020-06-02 | Xilinx, Inc. | Adaptive integrated programmable device platform |
US11621808B1 (en) * | 2019-10-16 | 2023-04-04 | Xilinx, Inc. | Machine learning based methodology for signal waveform, eye diagram, and bit error rate (BER) bathtub prediction |
US11016810B1 (en) * | 2019-11-26 | 2021-05-25 | Mythic, Inc. | Tile subsystem and method for automated data flow and data processing within an integrated circuit architecture |
US11675722B2 (en) * | 2021-04-16 | 2023-06-13 | Apple Inc. | Multiple independent on-chip interconnect |
-
2021
- 2021-06-03 US US17/337,805 patent/US11675722B2/en active Active
-
2022
- 2022-04-07 GB GB2205129.6A patent/GB2609693A/en active Pending
- 2022-04-14 DE DE102022109273.9A patent/DE102022109273A1/de active Pending
- 2022-04-14 KR KR1020220046189A patent/KR102604573B1/ko active IP Right Grant
- 2022-04-15 CN CN202210396463.9A patent/CN115221108A/zh active Pending
-
2023
- 2023-04-28 US US18/309,192 patent/US20230350828A1/en active Pending
- 2023-11-16 KR KR1020230159026A patent/KR20230160767A/ko active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7340548B2 (en) * | 2003-12-17 | 2008-03-04 | Microsoft Corporation | On-chip bus |
US8190855B1 (en) * | 2006-04-14 | 2012-05-29 | Tilera Corporation | Coupling data for interrupt processing in a parallel processing environment |
US20140301241A1 (en) * | 2013-04-04 | 2014-10-09 | Netspeed Systems | Multiple heterogeneous noc layers |
KR20150019457A (ko) * | 2013-08-14 | 2015-02-25 | 삼성전자주식회사 | 시스템 온 칩, 이의 동작 방법, 및 이를 포함하는 시스템 |
KR20200135780A (ko) * | 2018-03-30 | 2020-12-03 | 프로비노 테크놀로지스, 아이엔씨. | 인터커넥트와 연관된 가상 채널을 통한 트랜잭션의 부분들 중재하기 |
Also Published As
Publication number | Publication date |
---|---|
KR20230160767A (ko) | 2023-11-24 |
CN115221108A (zh) | 2022-10-21 |
GB202205129D0 (en) | 2022-05-25 |
DE102022109273A1 (de) | 2022-10-20 |
US11675722B2 (en) | 2023-06-13 |
US20230350828A1 (en) | 2023-11-02 |
GB2609693A (en) | 2023-02-15 |
US20220334997A1 (en) | 2022-10-20 |
KR102604573B1 (ko) | 2023-11-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102604573B1 (ko) | 다수의 독립적인 온-칩 상호연결부 | |
US11934313B2 (en) | Scalable system on a chip | |
US11868258B2 (en) | Scalable cache coherency protocol | |
US11537538B2 (en) | Inter cluster snoop latency reduction | |
US11609878B2 (en) | Programmed input/output message control circuit | |
KR20230151031A (ko) | I/o 에이전트 | |
US20230239252A1 (en) | Segment to Segment Network Interface | |
US12067275B1 (en) | Memory bank with subdomains | |
US11755489B2 (en) | Configurable interface circuit | |
US11941428B2 (en) | Ensuring transactional ordering in I/O agent | |
US20230063676A1 (en) | Counters For Ensuring Transactional Ordering in I/O Agent | |
TW202433271A (zh) | 可擴縮之系統單晶片 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A302 | Request for accelerated examination | ||
E701 | Decision to grant or registration of patent right |