KR20230120559A - 다중 스테이지 전기 접속 네트워크에서 메시지 분할-병합을 수행하는 전자 장치 및 그 동작 방법 - Google Patents
다중 스테이지 전기 접속 네트워크에서 메시지 분할-병합을 수행하는 전자 장치 및 그 동작 방법 Download PDFInfo
- Publication number
- KR20230120559A KR20230120559A KR1020220181836A KR20220181836A KR20230120559A KR 20230120559 A KR20230120559 A KR 20230120559A KR 1020220181836 A KR1020220181836 A KR 1020220181836A KR 20220181836 A KR20220181836 A KR 20220181836A KR 20230120559 A KR20230120559 A KR 20230120559A
- Authority
- KR
- South Korea
- Prior art keywords
- computing device
- message
- segments
- switches
- channel
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 43
- 238000004220 aggregation Methods 0.000 title abstract description 7
- 238000011017 operating method Methods 0.000 title description 5
- 230000005540 biological transmission Effects 0.000 claims description 30
- 230000011218 segmentation Effects 0.000 claims description 23
- 239000000872 buffer Substances 0.000 claims description 20
- 230000004044 response Effects 0.000 claims description 9
- 230000002093 peripheral effect Effects 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 43
- 230000015654 memory Effects 0.000 description 26
- 238000012545 processing Methods 0.000 description 16
- 239000004744 fabric Substances 0.000 description 13
- 230000006870 function Effects 0.000 description 10
- 230000003287 optical effect Effects 0.000 description 7
- 230000000694 effects Effects 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 230000002776 aggregation Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 230000008054 signal transmission Effects 0.000 description 4
- 230000007480 spreading Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 125000004122 cyclic group Chemical group 0.000 description 3
- 230000007423 decrease Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000006798 recombination Effects 0.000 description 3
- 238000005215 recombination Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000013468 resource allocation Methods 0.000 description 2
- 101000741965 Homo sapiens Inactive tyrosine-protein kinase PRAG1 Proteins 0.000 description 1
- 102100038659 Inactive tyrosine-protein kinase PRAG1 Human genes 0.000 description 1
- 125000000205 L-threonino group Chemical group [H]OC(=O)[C@@]([H])(N([H])[*])[C@](C([H])([H])[H])([H])O[H] 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000009429 electrical wiring Methods 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000007334 memory performance Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
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/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI 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/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4009—Coupling between buses with data restructuring
- G06F13/4018—Coupling between buses with data restructuring with data-width conversion
-
- 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
- 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/0024—Peripheral component interconnect [PCI]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
다중 스테이지 전기 접속 네트워크에서 메시지 분할-병합을 수행하는 전자 장치 및 그 동작 방법이 개시된다. 복수의 컴퓨팅 디바이스들을 포함하는 전자 장치의 동작 방법은 복수의 컴퓨팅 디바이스들 중 제1 컴퓨팅 디바이스에서 전송하고자 하는 메시지를 복수의 세그먼트들로 분할하는 동작, 제1 컴퓨팅 디바이스 및 복수의 스위치들 간 전기적 연결에 기반한 멀티 채널을 통해, 복수의 세그먼트들을 복수의 컴퓨팅 디바이스들 중 제2 컴퓨팅 디바이스로 전송하는 동작 및 제2 컴퓨팅 디바이스에서 복수의 세그먼트들을 조합하여 메시지를 재구성하는 동작을 포함한다. 멀티 채널은 각각 전기적인 연결들을 포함하는 채널들을 포함하고, 전기적인 연결들은 제1 컴퓨팅 디바이스 및 제2 컴퓨팅 디바이스를 연결하고, 복수의 세그먼트들을 전송하는 멀티 채널의 대역폭은 전기적인 연결들 중 하나의 전기적인 연결의 최대 대역폭보다 크다.
Description
아래의 개시는 다중 스테이지 전기 접속 네트워크에서 메시지 분할-병합을 수행하는 전자 장치 및 그 동작 방법에 관한 것이다.
대규모 컴퓨터 시스템에서 처리하는 응용의 문제 크기가 커짐에 따라, 프로세서들 및/또는 메모리들 사이의 정보 교환이 빈번해지고 있으나, 응용의 성능이 I/O 대역폭(input/output bandwidth)에 의해 제한되는 경우 충분한 대역폭 확보가 중요할 수 있다.
일 실시예에 따른 복수의 컴퓨팅 디바이스들을 포함하는 전자 장치의 동작 방법은 상기 복수의 컴퓨팅 디바이스들 중 제1 컴퓨팅 디바이스에서 전송하고자 하는 메시지를 복수의 세그먼트들로 분할하는 동작, 상기 제1 컴퓨팅 디바이스 및 복수의 스위치들 간 전기적 연결에 기반한 멀티 채널을 통해, 상기 복수의 세그먼트들을 상기 복수의 컴퓨팅 디바이스들 중 제2 컴퓨팅 디바이스로 전송하는 동작 및 상기 제2 컴퓨팅 디바이스에서 상기 복수의 세그먼트들을 조합하여 상기 메시지를 재구성(reconstruct)하는 동작을 포함하고, 상기 멀티 채널은 각각 전기적인 연결들을 포함하는 채널들을 포함하고, 상기 전기적인 연결들은 상기 제1 컴퓨팅 디바이스 및 상기 제2 컴퓨팅 디바이스를 연결하고, 상기 복수의 세그먼트들을 전송하는 상기 멀티 채널의 대역폭은 상기 전기적인 연결들 중 하나의 전기적인 연결의 최대 대역폭보다 크다.
상기 메시지를 재구성하는 동작은 상기 멀티 채널을 통해 상기 제2 컴퓨팅 디바이스로 전달된 상기 복수의 세그먼트들의 분할 정보에 기초하여, 상기 복수의 세그먼트들을 조합할 수 있다.
상기 분할 정보는 대응하는 세그먼트와 함께 상기 멀티 채널을 통해 상기 제2 컴퓨팅 디바이스로 전달될 수 있다.
일 실시예에 따른 전자 장치의 동작 방법은 상기 복수의 세그먼트들의 상기 분할 정보를 상기 복수의 세그먼트들의 전송에 앞서 상기 멀티 채널을 통해 상기 제2 컴퓨팅 디바이스로 전달하는 동작 및 상기 제2 컴퓨팅 디바이스에서 상기 복수의 세그먼트들을 조합하여 상기 메시지를 재구성하는 것에 응답하여, 상기 멀티 채널을 통해 상기 제2 컴퓨팅 디바이스에서 상기 제1 컴퓨팅 디바이스로 ACK 메시지를 전송하는 동작을 더 포함할 수 있다.
상기 분할 정보는 각 세그먼트들의 길이 정보, 고유 식별자, 상태 정보 및 위치 정보를 포함할 수 있다.
상기 메시지를 상기 복수의 세그먼트들로 분할하는 동작은 상기 메시지의 길이 및 상기 제1 컴퓨팅 디바이스에 연결된 복수의 채널들에 대한 정보 중 하나 또는 둘의 조합에 기초하여 상기 메시지를 분할할 세그먼트의 개수를 결정하고, 상기 결정된 개수의 세그먼트들로 상기 메시지를 분할할 수 있다.
상기 메시지를 상기 복수의 세그먼트들로 분할하는 동작은 상기 메시지의 길이 및 세그먼트의 최대 페이로드 길이에 기초하여 상기 메시지를 분할할 세그먼트의 개수를 결정할 수 있다.
상기 메시지를 상기 복수의 세그먼트들로 분할하는 동작은 상기 복수의 채널들에 대한 정보에 기초하여 상기 복수의 세그먼트들을 전송할 하나 이상의 채널들을 선택하고, 선택된 채널들의 개수만큼 메시지를 분할할 수 있다.
상기 복수의 채널들에 대한 정보는 채널 별 네트워크 혼잡도에 관한 플로우 컨트롤 정보(flow control information), 채널 별 데이터 링크 레이어의 채널 상태에 관한 매체 접근 제어 정보(medium access control information), 채널 별 엔드-투-엔드 전송 경로의 혼잡도에 관한 버퍼 정보(buffer information) 중 하나 또는 둘 이상의 조합을 포함할 수 있다.
상기 복수의 컴퓨팅 디바이스들은 복수의 그룹들로 그룹핑되고, 상기 복수의 스위칭들은 상기 제1 컴퓨팅 디바이스와 동일 그룹에 속하고, 상기 제1 컴퓨팅 디바이스는 복수의 스위치들 각각에 연결(fully connected)될 수 있다.
상기 제2 컴퓨팅 디바이스가 상기 제1 컴퓨팅 디바이스와 동일한 그룹에 속하면, 상기 제 1 컴퓨팅 디바이스 및 제 2 컴퓨팅 디바이스와 완전 연결(fully connected)된 상기 복수의 스위칭들을 통해 전기적으로 연결될 수 있다.
상기 제2 컴퓨팅 디바이스가 상기 제1 컴퓨팅 디바이스와 상이한 그룹에 속하면, 상기 제2 컴퓨팅 디바이스와 동일 그룹에 속하는 복수의 제2 스위칭들 각각은 상기 복수의 스위치들 중 어느 하나에 배차적으로(exclusively) 전기적으로 연결될 수 있다.
일 실시예에 따른 전자 장치는 컴퓨팅 디바이스들(computing devices) 및 스위치들을 각각 포함하는 복수의 그룹들을 포함하고, 각 그룹들에 포함된 스위치들 각각은 해당 그룹 내 각 컴퓨팅 디바이스들에 연결되고, 상기 복수의 그룹들 중 제1 그룹에 포함된 스위치들 각각은 제2 그룹에 포함된 스위치들 중 어느 하나에만 연결되고, 각 그룹들에 포함된 컴퓨팅 디바이스 및 스위치의 연결과 다른 그룹들 간 스위치들의 연결은 전기적인 연결이고, 상기 컴퓨팅 디바이스들 중 제1 컴퓨팅 디바이스는 전송하고자 하는 메시지를 복수의 세그먼트들로 분할하고, 상기 제1 컴퓨팅 디바이스에 연결된 복수의 제1 스위치들 간 전기적 연결에 기반한 멀티 채널을 통해 상기 복수의 세그먼트들을 상기 컴퓨팅 디바이스들 중 제2 컴퓨팅 디바이스로 전송하고, 상기 제2 컴퓨팅 디바이스는 상기 멀티 채널을 통해 수신한 상기 복수의 세그먼트들을 조합하여 상기 메시지를 재구성하고, 상기 복수의 세그먼트들을 전송하는 상기 멀티 채널의 대역폭은 상기 멀티 채널의 하나의 전기적인 연결의 최대 대역폭보다 크다.
상기 제1 컴퓨팅 디바이스는 상기 멀티 채널을 통해 상기 제2 컴퓨팅 디바이스로 전달된 상기 복수의 세그먼트들의 분할 정보에 기초하여, 상기 복수의 세그먼트들을 조합할 수 있다.
상기 분할 정보는 대응하는 세그먼트와 함께 상기 멀티 채널을 통해 상기 제2 컴퓨팅 디바이스로 전달될 수 있다.
상기 제1 컴퓨팅 디바이스는 상기 복수의 세그먼트들의 상기 분할 정보를 상기 복수의 세그먼트들의 전송에 앞서 상기 멀티 채널을 통해 상기 제2 컴퓨팅 디바이스로 전달하고, 상기 제2 컴퓨팅 디바이스는 상기 복수의 세그먼트들을 조합하여 상기 메시지를 재구성하는 것에 응답하여, 상기 멀티 채널을 통해 상기 제1 컴퓨팅 디바이스로 ACK 메시지를 전송할 수 있다.
상기 분할 정보는 각 세그먼트들의 길이 정보, 고유 식별자, 상태 정보 및 위치 정보를 포함할 수 있다.
상기 제1 컴퓨팅 디바이스는 상기 메시지의 길이 및 상기 제1 컴퓨팅 디바이스에 연결된 복수의 채널들에 대한 정보 중 하나 또는 둘의 조합에 기초하여 상기 메시지를 분할할 세그먼트의 개수를 결정하고, 상기 결정된 개수의 세그먼트들로 상기 메시지를 분할할 수 있다.
상기 제1 컴퓨팅 디바이스는 상기 메시지의 길이 및 세그먼트의 최대 페이로드 길이에 기초하여 상기 메시지를 분할할 세그먼트의 개수를 결정할 수 있다.
상기 제1 컴퓨팅 디바이스는 상기 복수의 채널들에 대한 정보에 기초하여 상기 복수의 세그먼트들을 전송할 하나 이상의 채널들을 선택하고, 선택된 채널들의 개수만큼 메시지를 분할할 수 있다.
상기 스위치들은 PICe(Peripheral Component Express) 스위치들 또는 CXL(Compute Express Link) 스위치들을 포함하고, 상기 세그먼트들은 PCIe 패킷들을 포함할 수 있다.
상기 멀티 채널은 PCIe 레인들 또는 CXL 레인들을 포함하고, 상기 세그먼트들 각각은 대응하는 PCIe 레인들 또는 CXL 레인들을 통해 전송될 수 있다.
일 실시예에 따른 방법은 시스템 내 복수의 이용 가능한 레인들을 통해 전송되는 타겟 메시지를 분할하기로 결정하는 동작, 상기 결정하는 동작에 기반하여, 상기 복수의 이용 가능한 레인들에 대응하는 복수의 세그먼트들로 상기 타겟 메시지를 분할하는 동작 -상기 타겟 메시지는 제1 컴퓨팅 디바이스에 의해 생성됨 -, 상기 복수의 세그먼트들에 대응하는 복수의 트랜잭션-레이어 패킷들을 생성하는 동작 -상기 트랜잭션-레이어 패킷들은 각각 상기 세그먼트들을 포함하는 데이터 페이로드들을 각각 포함함 -, 하나 이상의 레인들을 통해, 상기 메시지의 분할에 기초한 분할 정보를 전송하는 동작, 각각의 레인들을 통해 상기 트랜잭션-레이어 패킷들을 전송하는 동작 및 상기 전송된 분할 정보에 기초하여 상기 데이터 페이로드들 내 상기 세그먼트들로부터 상기 타겟 메시지를 재구성하고, 상기 재구성된 타겟 메시지를 상기 제1 컴퓨팅 디바이스에 의해 상기 타겟 메시지가 어드레싱된 제2 컴퓨팅 장치에 제공하는 동작을 포함한다.
상기 시스템은 제1 컴퓨팅 디바이스들, 상기 제1 컴퓨팅 디바이스들 각각에 연결되는 제1 스위치들을 포함하는 제1 그룹, 제2 컴퓨팅 디바이스들, 상기 제2 컴퓨팅 디바이스들 각각에 연결되는 제2 스위치들을 포함하는 제2 그룹 및 레인들을 포함하고, 상기 레인들은 각각 제1 스위치들을 상기 제2 스위치들에 연결하고, 상기 제1 스위치들 각각은 상기 레인들의 하나를 통해 하나의 제2 스위치에만 연결되고, 상기 제2 스위치들 각각은 상기 레인들의 하나를 통해 하나의 제1 스위치에만 연결될 수 있다.
상기 레인들은 PCIe 레인들 또는 CXL 레인들을 포함하고, 상기 스위치들은 PCIe 스위치들 또는 CXL 스위치들을 포함하고, 상기 타겟 메시지는 트랜잭션-레이어 PCIe 메시지 또는 CXL 메시지들이고, 상기 트랜잭션-레이어 패킷들은 PCIe 트랜잭션-레이어 패킷들 또는 CXL 트랜잭션-레이어 패킷들일 수 있다.
상기 트랜잭션-레이어 패킷들은 각각 제1 스위치들에 의해 각각의 레인들로 동시에 방출될 수 있다.
상기 트랜잭션-레이어 패킷들을 전송하는 동작은 각 PCIe 레인들 또는 CXL 레인들을 통해 PCIe 트랜잭션-레이어 패킷들 또는 CXL 트랜잭션-레이어 패킷들을 전송하는 각 제1 스위치들로부터 PCIe 트랜잭션-레이어 패킷들 또는 CXL 트랜잭션-레이어 패킷들을 전송하는 동작 및 각 제2 스위치들에 의해 각 PCIe 레인들 또는 CXL 레인들로부터 전송된 PCIe 트랜잭션-레이어 패킷들 또는 CXL 트랜잭션-레이어 패킷들을 수신하는 동작을 포함할 수 있다.
도 1 및 도 2는 일 실시예에 따른 전자 장치를 설명하기 위한 도면이다.
도 3은 일 실시예에 따른 컴퓨팅 보드 내 연결을 설명하기 위한 도면이다.
도 4는 일 실시예에 따른 컴퓨팅 보드들 간 연결을 설명하기 위한 도면이다.
도 5는 일 실시예에 따른 멀티-노드 스위치 토폴로지(multi-node switch topology)를 설명하기 위한 도면이다.
도 6은 일 실시예에 따른 채널, 포트, 링크 및 레인을 설명하기 위한 도면이다.
도 7은 일 실시예에 따른 컴퓨팅 디바이스 내 프로세서의 동작을 설명하기 위한 도면이다.
도 8은 일 실시예에 따른 메시지를 복수의 세그먼트들로 분할하여 프레임으로 전송하는 동작을 설명하기 위한 도면이다.
도 9는 일 실시예에 따른 분할 헤더 정보(segment header information)를 나타낸 도면이다.
도 10은 일 실시예에 따른 네트워크 프로토콜에 따른 프레임을 설명하기 위한 도면이다.
도 11은 일 실시예에 따른 멀티 채널에 대한 정보를 설명하기 위한 도면이다.
도 12는 일 실시예에 따라 채널 별 경로 지연 후 고려해야 할 딜레이 변동(delay variation) 및 리오더링(reordering) 정보를 설명하기 위한 도면이다.
도 13 내지 도 16는 다양한 실시예에 따라 복수의 세그먼트들의 분할 정보를 전송하는 예시들을 나타낸 도면이다.
도 17은 일 실시예에 따른 컴퓨팅 디바이스를 나타낸 도면이다.
도 18은 일 실시예에 따른 메시지 스플리터(splitter) 및 애그리게이터(aggregator)의 구현 예시들을 설명하기 위한 도면이다.
도 19는 일 실시예에 따른 네트워크 대역폭 확산 효과를 예시적으로 설명하기 위한 도면이다.
도 20은 일 실시예에 따른 확장된 전기 네트워크 내 스위치를 설명하기 위한 도면이다.
도 21은 일 실시예에 따른 스위치의 가용 레인 수와 포트 수를 설명하기 위한 도면이다.
도 22는 일 실시예에 다른 스위치 패브릭 네트워크에서 가용한 그룹 수를 설명하기 위한 도면이다.
도 23은 일 실시예에 따라 컴퓨팅 디바이스들을 활용한 대규모 고대역 메모리 자원을 설명하기 위한 도면이다.
도 24는 일 실시예에 따른 컴퓨팅 노드의 연결 구조를 설명하기 위한 도면이다.
도 25 내지 도 30은 일 실시예에 따른 다양한 연결 예시들을 도시한다.
도 31은 일 실시예에 따른 컴퓨팅 디바이스, 컴퓨팅 보드 및 컴퓨팅 노드의 예시를 나타낸 도면이다.
도 32는 일 실시예에 따른 전자 장치의 동작 방법을 나타낸 도면이다.
도 3은 일 실시예에 따른 컴퓨팅 보드 내 연결을 설명하기 위한 도면이다.
도 4는 일 실시예에 따른 컴퓨팅 보드들 간 연결을 설명하기 위한 도면이다.
도 5는 일 실시예에 따른 멀티-노드 스위치 토폴로지(multi-node switch topology)를 설명하기 위한 도면이다.
도 6은 일 실시예에 따른 채널, 포트, 링크 및 레인을 설명하기 위한 도면이다.
도 7은 일 실시예에 따른 컴퓨팅 디바이스 내 프로세서의 동작을 설명하기 위한 도면이다.
도 8은 일 실시예에 따른 메시지를 복수의 세그먼트들로 분할하여 프레임으로 전송하는 동작을 설명하기 위한 도면이다.
도 9는 일 실시예에 따른 분할 헤더 정보(segment header information)를 나타낸 도면이다.
도 10은 일 실시예에 따른 네트워크 프로토콜에 따른 프레임을 설명하기 위한 도면이다.
도 11은 일 실시예에 따른 멀티 채널에 대한 정보를 설명하기 위한 도면이다.
도 12는 일 실시예에 따라 채널 별 경로 지연 후 고려해야 할 딜레이 변동(delay variation) 및 리오더링(reordering) 정보를 설명하기 위한 도면이다.
도 13 내지 도 16는 다양한 실시예에 따라 복수의 세그먼트들의 분할 정보를 전송하는 예시들을 나타낸 도면이다.
도 17은 일 실시예에 따른 컴퓨팅 디바이스를 나타낸 도면이다.
도 18은 일 실시예에 따른 메시지 스플리터(splitter) 및 애그리게이터(aggregator)의 구현 예시들을 설명하기 위한 도면이다.
도 19는 일 실시예에 따른 네트워크 대역폭 확산 효과를 예시적으로 설명하기 위한 도면이다.
도 20은 일 실시예에 따른 확장된 전기 네트워크 내 스위치를 설명하기 위한 도면이다.
도 21은 일 실시예에 따른 스위치의 가용 레인 수와 포트 수를 설명하기 위한 도면이다.
도 22는 일 실시예에 다른 스위치 패브릭 네트워크에서 가용한 그룹 수를 설명하기 위한 도면이다.
도 23은 일 실시예에 따라 컴퓨팅 디바이스들을 활용한 대규모 고대역 메모리 자원을 설명하기 위한 도면이다.
도 24는 일 실시예에 따른 컴퓨팅 노드의 연결 구조를 설명하기 위한 도면이다.
도 25 내지 도 30은 일 실시예에 따른 다양한 연결 예시들을 도시한다.
도 31은 일 실시예에 따른 컴퓨팅 디바이스, 컴퓨팅 보드 및 컴퓨팅 노드의 예시를 나타낸 도면이다.
도 32는 일 실시예에 따른 전자 장치의 동작 방법을 나타낸 도면이다.
실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 구현될 수 있다. 따라서, 실제 구현되는 형태는 개시된 특정 실시예로만 한정되는 것이 아니며, 본 명세서의 범위는 실시예들로 설명한 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 실시예들을 첨부된 도면들을 참조하여 상세하게 설명한다. 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조 부호를 부여하고, 이에 대한 중복되는 설명은 생략하기로 한다.
도 1 및 도 2는 일 실시예에 따른 전자 장치를 설명하기 위한 도면이다.
도 1을 참조하면, 전자 장치(100)는 호스트(110) 및 컴퓨팅 노드(120)를 포함할 수 있다. 호스트(110)는 컴퓨팅 노드(120)를 제어하는 장치로서, 예를 들어, 복수의 컴퓨팅 디바이스들(123) 중 어느 하나에서 다른 하나로 데이터를 전송하는 것을 제어할 수 있다. 컴퓨팅 노드(120) 및 호스트(110)는 다른 호스트 및 노드를 포함할 수 있는 분산 컴퓨팅 시스템의 일부일 수 있다.
전자 장치(100)는 다중 스테이지(multi-stage)의 전기 접속 네트워크(electrical interconnection network)로 복수의 컴퓨팅 디바이스들(123)을 연결하는 컴퓨팅 장치일 수 있다. 본 명세서에서 사용되는 "전기적 연결" 등은 전도성 라인/채널을 통해 흐르는 전류의 형태로 정보를 전송하는 네트워크를 지칭할 수 있다. 예를 들어, 전자 장치(100)는 HPC(high performance computer), 데스크톱, 워크스테이션 또는 서버와 같은 다양한 컴퓨팅 장치를 포함할 수 있다. 전기 접속 네트워크는, 예를 들어, PCB(printed circuit board) 상 전기 배선으로 구성되어, 전기-광 신호 변환에 의한 높은 소모 전력과 광케이블에 의한 높은 비용을 가진 광 접속 네트워크(optical interconnection network)보다 저렴하고 단순하게 구성될 수 있다. 전기 접속 네트워크에서는 신호 속도가 수십 GHz로 증가함에 따라 삽입 손실(insertion loss)이 증가하여 연결 가능한 거리가 제한될 수 있으나, 이후에 설명할 다중 스테이지의 스위치 패브릭(switch fabric)(121)을 통해 이러한 제한을 제거할 수 있다. 전자 장치(100)는 전기 접속 네트워크의 물리적 특성을 고려한 대규모 컴퓨팅 디바이스 풀(pool)을 지원할 수 있다.
스위치 패브릭(121)은 복수의 컴퓨팅 디바이스들(123)을 연결하는 복수의 스위치들을 포함할 수 있다. 스위치 패브릭(121)은 복수의 컴퓨팅 디바이스들(123) 중 어느 하나에서 다른 하나로 데이터를 전송할 때 전기 접속 네트워크로 연결된 복수의 스위치들을 통해 해당 데이터를 분할하여 전송함으로써, 컴퓨팅 디바이스들(123) 간 대역폭 성능을 효율적으로 유지할 수 있다.
스위치 패브릭(121)에 포함된 복수의 스위치들은 복수의 컴퓨팅 디바이스들(123)과 함께 복수의 그룹들로 그룹핑될 수 있으며, 그룹 내(intra-group) 및 그룹 간(inter-group)으로 구분되는 다중 스테이지의 전기 접속 네트워크를 통해 컴퓨팅 디바이스들(123) 간 연결을 극대화하여 단일 컴퓨팅 노드(120)의 범위가 확장될 수 있다. 컴퓨팅 노드(120)의 범위는 전자 장치(100)의 응용에서 요구되는 디자인 타겟(design target)에 맞추어 확장될 수 있다.
도 1은 설명의 편의를 위해 전자 장치(100)가 하나의 컴퓨팅 노드(120)를 포함하는 예시를 도시하고 있으나, 전술한 예에 한정되지 않으며, 전자 장치(100)는 복수의 컴퓨팅 노드들을 포함할 수도 있다. 예를 들어, 전자 장치(100)에 포함된 복수의 컴퓨팅 노드들은 광 접속 네트워크를 통해 연결될 수 있다.
또한, 도 1에 미도시되었으나, 전자 장치(100)는 실시예에 따라 스토리지, 비휘발성 메모리 등의 분해된 리소스(disaggregated resource), 광 네트워크, 관리용 추가 시스템과 네트워크를 더 포함할 수도 있다.
전자 장치(100)는 복수의 스위치들이 패브릭 형태로 연결된 확장된 전기 접속 네트워크를 통해 컴퓨팅 노드(120)의 범위를 확장함으로써, 고가의 광 케이블을 활용해야 하는 광 접속 네트워크를 사용하지 않더라도 높은 대역폭 성능을 효과적으로 유지시킬 수 있다.
도 2를 참조하면, 컴퓨팅 노드(200)는 복수의 컴퓨팅 보드들(210, 220)을 포함할 수 있다.
컴퓨팅 노드(200)에 포함된 복수의 컴퓨팅 디바이스들과 복수의 스위치들은 복수의 그룹들로 그룹핑될 수 있다. 동일 그룹에 그룹핑된 컴퓨팅 디바이스들과 스위치들은 하나의 컴퓨팅 보드에 배치될 수 있다. 예를 들어, 복수의 그룹들 각각에 포함된 컴퓨팅 디바이스들의 개수는 동일할 수 있다. 또한, 복수의 그룹들 각각에 포함된 스위치들의 개수도 동일할 수 있다. 일부 실시예에서, 그룹은 저장 서비스, 고성능 컴퓨팅, 분산 컴퓨팅 등을 제공하기 위한 컴퓨팅 클러스터로서 기능할 수 있다.
컴퓨팅 디바이스는 메모리 및/또는 프로세서를 포함할 수 있다. 메모리는 데이터를 저장하는 장치로서, 예를 들어 고 대역폭 메모리일 수 있다. 프로세서는 연산을 수행하는 장치로서, 예를 들어 CPU(central processing unit), GPU(graphic processing unit), NPU(neural processing unit), TPU(tensor processing unit) 등의 xPU일 수 있으며, FPGA(field programmable gate array) 등의 장치일 수 있다. 일부 실시예에서, 컴퓨팅 장치는 운영체제(operating system)를 실행하는 컴퓨팅 엔드포인트(computing endpoint)이고, 예를 들어 분산 어플리케이션(distributed application)의 컨포넌트일 수 있다.
동일 컴퓨팅 보드 내 컴퓨팅 디바이스와 스위치 간 연결과 다른 컴퓨팅 보드들의 스위치들 간 연결은 (예를 들어, 스위치 직렬 전기적 연결(switched serial electrical connections)을 기반으로 하는) 전기 접속 네트워크에 기반할 수 있다. 예를 들어, 제1 컴퓨팅 보드(210)에 포함된 제1 컴퓨팅 디바이스(211)에서 제2 컴퓨팅 보드(220)에 포함된 제2 컴퓨팅 디바이스(221)로 데이터를 전송하는 경우, 제1 컴퓨팅 디바이스(211)로부터 분할된 데이터가 스위치 패브릭(230)을 통해 제2 컴퓨팅 디바이스(221)로 전달될 수 있다. 이를테면, 제1 컴퓨팅 디바이스(211)는 제1 컴퓨팅 보드(210)에 포함된 제1 스위치들로 데이터를 분할하여 전달하고, 제1 스위치들은 분할된 데이터를 제2 컴퓨팅 보드(220)에 포함된 제2 스위치들로 전달하며, 제2 스위치들은 분할된 데이터를 제2 컴퓨팅 디바이스(221)로 전달함으로써, 데이터 전송이 전기 접속 네트워크에 따른 대역폭에 의해 제한되지 않게 할 수 있다. 도 3 및 도 4에서 상세히 설명하겠으나, 제1 컴퓨팅 디바이스(211)는 제1 컴퓨팅 보드(210)에 포함된 모든 제1 스위치들에 연결되고, 제1 스위치들 각각은 대응하는 제2 스위치에 일대일로 연결되며, 제2 컴퓨팅 보드(220)에 포함된 모든 제2 스위치들은 제2 컴퓨팅 디바이스(221)에 연결될 수 있다.
스위치 패브릭(230)의 구조를 통해, 컴퓨팅 노드(200) 내 모든 컴퓨팅 디바이스들 간 I/O 대역폭 성능을 효과적으로 유지할 수 있으며, 스위치 패브릭(230)의 구조에 대해서는 도 3 및 도 4를 통해 상세히 설명한다.
도 3은 일 실시예에 따른 컴퓨팅 보드 내 연결을 설명하기 위한 도면이다.
도 3을 참조하면, 컴퓨팅 보드 내 컴퓨팅 디바이스들과 스위치들은 동일 그룹으로 그룹핑된 장치들로 서로 완전 연결될 수 있다. 컴퓨팅 디바이스들 각각은 동일 그룹 내 모든 스위치들에 전기적으로 연결될 수 있다. 예를 들어, 컴퓨팅 디바이스들 각각은 동일한 대역폭으로 스위치들에 연결될 수 있으나, 전술한 예에 한정되지 않는다. 또한, 스위치들 각각은 동일 그룹 내 모든 컴퓨팅 디바이스들에 연결될 수 있다. 마찬가지로, 스위치들 각각은 동일한 대역폭으로 컴퓨팅 디바이스들에 연결될 수 있으나, 전술한 예에 한정되지 않는다.
동일 그룹 내에서 컴퓨팅 디바이스들은 서로 연결되지 않으며, 스위치들도 서로 연결되지 않는다. 다시 말해, 동일 그룹 내에서 한 컴퓨팅 디바이스는 다른 컴퓨팅 디바이스에 연결되지 않고, 한 스위치는 다른 스위치에 연결되지 않는다.
도 3에 도시된 것처럼, 단일 컴퓨팅 보드 내 복수의 스위치들은 하나의 스위치 그룹으로 지칭될 수 있다.
도 4는 일 실시예에 따른 컴퓨팅 보드들 간 연결을 설명하기 위한 도면이다.
도 4를 참조하면, 컴퓨팅 노드 내 스위치 그룹들은 병렬 올투올(parallel all-to-all)로 연결될 수 있다. 스위치 그룹들 각각은 동일 컴퓨팅 보드에 포함된 스위치들을 포함할 수 있다. 도 4에 도시된 스위치 그룹들 간 연결은 서로 다른 컴퓨팅 보드들의 스위치들 간 전기적인 연결을 나타낼 수 있다.
한 그룹에 포함된 스위치들 각각은 다른 그룹에 포함된 스위치들 중 어느 하나에 배타적으로 연결될 수 있다. 예를 들어, 한 그룹에 포함된 n번째 스위치는 다른 그룹에 포함된 스위치들 중에서 n번째 스위치에만 연결되고, 나머지 스위치들에 연결되지 않는다. 이를테면, 제1 그룹에 포함된 1번째 스위치는 제2 내지 k 그룹 각각에 포함된 1번째 스위치들에 연결될 수 있으며, 제1 내지 k 그룹 각각에 포함된 1번째 스위치들은 동일한 대역폭으로 서로 연결될 수 있다. 여기서, n과 k는 자연수일 수 있다.
다만, 앞선 설명은 설명의 편의를 위한 것으로, 제1 그룹에 포함된 n번째 스위치가 제2 그룹에 포함된 반드시 n번째 스위치에 연결될 필요는 없으며, 제2 그룹에 포함된 복수의 스위치들 중에서 어느 하나와 연결되고, 해당 스위치가 제2 그룹에 포함된 n번째가 아닌 다른 스위치와 동시에 연결되지 않는 실시예도 제한 없이 적용될 수 있다. 이러한 연결 구조의 네트워크를 병렬 올투올 네트워크로 지칭할 수 있다.
도 5는 일 실시예에 따른 멀티-노드 스위치 토폴로지(multi-node switch topology)를 설명하기 위한 도면이다.
고속 전기 신호(High-Speed Electrical Signal) 전송에 활용되는 대표적인 네트워크 프로토콜 중 하나로 PCIe(Peripheral Component Interconnect Express) 또는 CXL(Compute Express Link)가 있을 수 있다. CXL은 프로세서, 가속기 및 메모리 확장기에 대한 캐시 일관성 상호연결 프로토콜(cache-coherent interconnect protocol)일 수 있으며, 물리적 레이어에 대한 PCIe 신호에 의존할 수 있다.
PCIe 또는 CXL는 버스 토폴로지(Bus Topology)로 구성된 기기 연결 네트워크를 고속 직렬 통신(High-Speed Serial Communication)으로 고속화 하고 멀티-레인(Multi-lane) 할당을 통해 동시 전송 가능한 대역폭을 확보하고 핫-플러그(Hot-Plug) 기능 지원 등 확장이 용이한 네트워크 프로토콜일 수 있다. 예를 들어, PCIe 또는 CXL는 주로 HDD(Hard Disk Drive), SSD(Solid State Drive)와 같은 스토리지와의 연결이나, 그래픽 카드와 같은 고속 처리 장치 및 NIC(Network Interface Controller)와 같은 고성능 확장 기기와의 연결에 활용될 수 있다.
PCIe 신호는 듀얼 심플렉스(Dual Simplex) 구조로 TX/RX(Transmit/Receive) 방향 별로 채널이 할당되어 있으며, 링크 폭(Link Width)를 x1에서 최대 x16까지 조절이 가능할 수 있다.
본 명세서에서 설명하는 전자 장치는 전술한 PCIe 프로토콜 구조와 패킷 포맷을 기반으로 어플리케이션에서 전달된 메시지를 복수의 프레임들로 변환하는 과정을 프로토콜 엔진(Protocol Engine)(510)에서 수행할 수 있다. 전자 장치는 프로토콜 엔진(510)에서 물리적 레이어가 물리적으로 포트에 연결되고 포트 내에 레인이 할당되어 링크 폭을 결정할 수 있다.
본 명세서에서는 직렬 통신의 장점을 유지한 채 I/O 대역폭이 네트워크 프로토콜에 의해 제한되지 않게 하는 방안이 제안될 수 있다. 단위 채널 당 레인 수는 고속 전기 신호 전송에 활용되는 네트워크 프로토콜(예: PCIe 또는 CXL의 버전)에 의해 제한되지만, 복수의 스위치들(520)을 활용한 다중 경로를 통해 메시지를 병렬로 전송함으로써, 메시지 전송에 활용되는 대역폭이 네트워크 프로토콜의 한계에 제한되지 않게 할 수 있다.
씬-링크 병렬-채널(Thin-Link Parallel-Channel) 자원 할당 방식으로 멀티-노드 스위치 토폴로지를 구성했을 때 연결 기기의 요구 대역폭이 시시각각 변한다면, 대역폭 요구의 가변성과 연결하는 기기의 다양성을 모두 수용하도록 시스템 자원 활용의 효율성을 극대화할 수 있다. 도 5에 도시된 예시에서, 프로토콜 엔진(510)은 앞서 설명한 컴퓨팅 디바이스에 포함되며, 프로토콜 엔진(510)에서 가용한 총 32 레인들은 최소 레인으로 구성된 병렬-채널(Parallel-Channel)로 분할되고, 각 채널은 스위치들(520) 중 하나에 연결되고, 각 스위치들(520)은 다른 여러 연결 기기(예: 디바이스 A 내지 F)의 요구 대역폭에 상응하여 총 64 레인들을 할당할 수 있다. 이처럼 전체 가용한 자원을 병렬-채널로 운영하면서, 프로토콜 엔진(510)에 다른 여러 연결 기기들을 직접 연결하지 않고, 스위치들(520)를 통하게 하면, 연결 기기 별로 상이한 대역폭 요구에 적응적으로 시스템 자원을 동적으로 할당함으로써, 시스템 효율성이 극대화될 수 있다. 도 5의 예시처럼 컴퓨팅 디바이스에서 제공하는 대역폭이 총 32레인이고, 디바이스 A 내지 F의 요구 대역폭이 64레인인 경우, 디바이스 A 내지 F의 64레인 중에서 최대 32레인이 동적으로 할당되어 이용될 수 있다. 예를 들어, 단일 기기에 32레인이 할당될 수도 있고, 32레인이 나누어져서 여러 기기들에 할당되는 선택적 가변성이 제공될 수 있다.
도 5에 도시된 예시에서, 컴퓨팅 디바이스 내 프로토콜 엔진(510)에서 제공할 수 있는 전체 대역폭이 총 32 레인인데 반면, 멀티-노드 연결 기기 전체의 최대 요구 대역폭이 총 64 레인이기 때문에 컴퓨팅 디바이스와 멀티-노드 연결 기기 사이에 대역폭 불균형이 발생할 수 있다. 다만, 스위치들(520)에 기반한 병렬-채널을 통해 앞서 설명한 대역폭 불균형이 해소될 수 있다. 스위치들(520)은 대역폭 불균형 해소를 위해, 네트워크 혼잡 발생 시 패킷을 저장할 수 있는 버퍼(Buffer) 혹은 큐(Queue) 기능과 네트워크 혼잡 상황을 주변 기기에 전파하여 인지시키는 플로우 컨트롤(Flow Control) 기능을 수행할 수 있다. 스위치들(520)은 일시적으로 발생한 대역폭 불균형을 내부 버퍼 혹은 큐에서 처리하고, 해당 트랜잭션(transaction)과 연계된 엔드-투-엔드 (end-to-end) 전송 경로에 관여하고 있는 모든 주변 기기들이 대처할 수 있도록 플로우 컨트롤 정보를 전송함으로써 대역폭 불균형을 제어한다.
연결 기기의 요구 대역폭이 시간에 따라 변하고 멀티-노드 연결 기기 전체의 최대 요구 대역폭이 컴퓨팅 디바이스 내 프로토콜 엔진(510)에서 제공하는 전체 대역폭을 초과하지 않는다고 가정하면, 스위치들(520)의 버퍼 혹은 큐 기능이나 플로우 컨트롤 기능을 활용하지 않고도 시스템 자원을 재할당함으로써 대역폭 균형을 맞출 수 있다. 예를 들어, 최대 32 레인을 요구하는 디바이스 F는 디바이스 A 내지 디바이스 E가 동작하지 않는 경우에만 동작한다고 가정하면, 프로토콜 엔진(510)이 발생 가능한 모든 경우의 대역폭을 충분히 지원할 수 있다.
이러한 경우 최소 레인으로 구성된 병렬-채널로 나눠서 전송하는 방식과 스위치 토폴로지가 결합됨으로써, 가변하는 대역폭 요구에 응답하여 시스템 성능을 탄력적으로 운영하고 전체 시스템 성능이 향상될 수 있다. 스위치들(520)은 시스템 가용 대역폭과 요구 대역폭 사이에서 대역폭 불균형을 해소하는 중재자 역할을 수행함으로써, 대역폭 운영 효율을 높여 시스템 성능을 개선할 수 있다. 최소 레인으로 구성된 채널 자원을 여러 연결 기기 간에 공유할 수 있는 구조를 활용하기 위해, 새로운 자원 할당 방식이 요구될 수 있다. 본 명세서에서는 병렬 채널과 스위치 토폴로지를 통해 전송하고자 하는 메시지를 분할해서 전송하는 메시지 스플리터(message splitter)와 분할된 메시지를 재조합하는 메시지 애그리게이터(message aggregator)를 활용하는 방안에 대해 설명하고자 한다.
도 5의 예시에서, 컴퓨팅 디바이스의 가용 전체 레인 수 KSC는 32개이고, 채널당 레인 수 LCH는 2개이고, 전체 채널 수 NCH는 16개일 수 있으나, 전술한 예에 한정되지 않는다. 각 포트 별로 하나의 채널이 할당되고, TX-RX 페어(pair)와 엇갈려서 대응하는 연결 기기의 포트에 연결될 수 있으며, 이때 연결 기기는 스위치와 같은 네트워크 기기일 수 있다.
도 6은 일 실시예에 따른 채널, 포트, 링크 및 레인을 설명하기 위한 도면이다.
하나의 레인에는 TX와 RX 양 방향으로 비트 라인(bit line)이 각각 독립적으로 할당되며, 예를 들어, 이중 차동 라인(dual differential line) 또는 두 쌍의 차동 라인들(two pairs of differential signal lines)으로 하나의 레인이 구성될 수 있다. 이러한 하나 이상의 레인들로 하나의 링크가 구성될 수 있으며, 이러한 하나 이상의 링크들로 멀티-채널 또는 다중 채널이 결정될 수 있다. 채널은 물리적으로 연결되거나, 또는 가상(virtual)으로 연결될 수 있다. 본 명세서에서는 설명의 편의를 위하여 채널이 물리적으로 연결된 경우를 기준으로 설명하나, 이러한 설명이 가상으로 연결된 경우를 배제하는 것은 아니다. 링크 폭은 네트워크 프로토콜에 따른 최대 할당 가능한 레인 수를 초과하지 않는다.
도 7은 일 실시예에 따른 컴퓨팅 디바이스 내 프로세서의 동작을 설명하기 위한 도면이다.
PCIe 또는 CXL 프로토콜은 크게 물리적 레이어, 데이터 링크 레이어, 트랜잭션 레이어로 나누어져서 동작할 수 있다. 물리적 레이어는 인코딩/디코딩을 수행하는 PCS(Physical Coding Sublayer)와 고속 병렬-투-직렬/직렬-투-병렬(High-Speed Parallel-to-Serial/Serial-to-Parallel)를 수행하는 PMA(Physical Medium Attachment Sublayer)을 거쳐서 고속 변조/복조(high-speed modulation/demodulation)을 수행하는 RF/아날로그 트랜스시버(radio frequency/analog transceiver)로 구성될 수 있다. 데이터 링크 레이어는 매체 접근 제어(medium access control)를 수행하면서 에러 검출(error detection), 응답(acknowledgement), 재전송(retransmission)의 수행을 위해서 전송 재시도(transmitter retry) 버퍼 및 수신기 링크 CRC(Cyclic Redundancy Check)를 이용한 에러 검출과 자동 응답을 수행하여 링크 단위 전송 선로의 무결성을 보장할 수 있다. 마지막으로 트랜잭션 레이어는 네트워크 레이어(network layer) 및 전송 레이어(transport layer) 기능을 수행하면서, 어플리케이션 레이어(application layer)에서 요청된 트랜잭션 별로 버퍼 매니지먼트와 연계하여 트랜잭션 재배열(transaction reordering) 및 플로우 컨트롤 기능을 제어하며, 가상 채널 및 가상 레인 매니지먼트 기능과 같은 자원 가상화 기능을 수행할 수 있다.
예를 들어, 메시지 스플리터와 메시지 애그리게이터는 컴퓨팅 디바이스(700) 내 I/O 컨트롤러에 포함될 수 있다. 컴퓨팅 디바이스(700)는 메시지 스플리터와 메시지 애그리게이터를 이용하여 고속 전기 신호 전송에 활용되는 네트워크 프로토콜의 제한을 넘어 멀티-채널로 특정 대역폭 이상을 활용할 수 있다.
메시지 스플리터는 컴퓨팅 디바이스(700) 내 I/O 컨트롤러로 전달된 메시지를 최대 채널 수 NCH만큼 세그먼트들로 분할할 수 있다. 메시지 스플리터에서 분할된 세그먼트들은 병렬 멀티 채널들을 통해 물리적 연결 또는 가상 연결로 전달될 수 있다. 분할된 세그먼트들을 수신한 컴퓨팅 디바이스(700) 내 메시지 애그리게이터는 수신한 세그먼트들을 병합하여 원래 형태의 메시지로 재구성할 수 있다. 이하, 도면들을 통해 메시지를 복수의 세그먼트들로 분할하고, 분할된 복수의 세그먼트들을 메시지로 재조합하는 동작에 대해 상세히 설명한다.
도 8은 일 실시예에 따른 메시지를 복수의 세그먼트들로 분할하여 프레임으로 전송하는 동작을 설명하기 위한 도면이다.
도 8을 참조하면, 메시지 스플리터에서 수행되는 메시지 분할과 메시지 애그리게이터에서 수행되는 메시지 재조합을 설명하기 위한 예시가 도시된다. 전송하고자 하는 메시지는 최대 채널 수 NCH로 분할하면, MSG #n (n = 1, 2, ?? , NCH)로 분할될 수 있다. 분할에 대한 정보는 분할 헤더(segment header) 형태로 대응하는 분할된 메시지 MSG #n와 함께 대응하는 세그먼트 Segment #n에 포함될 수 있다. 각 세그먼트들은 대응하는 채널로 전달되어 프로토콜 엔진을 통해 대응하는 포트로 전달되어 프레임으로 변환되어 전송될 수 있다.
수신된 프레임들은 수신 컴퓨팅 디바이스의 프로토콜 엔진을 통해 복수의 세그먼트들로 변환될 수 있다. 각 세그먼트들에 포함된 분할 헤더 정보에 기초하여, 복수의 세그먼트들이 재조합되어 메시지가 결정될 수 있다.
도 9는 일 실시예에 따른 분할 헤더 정보(segment header information)를 나타낸 도면이다.
분할 및 재조합에 활용되는 분할 헤더 정보는, 예를 들어, TCP/IP(transmission control protocol/internet protocol)에서 MTU(Maximum Transmission Unit) 변환 시 활용되는 형식을 차용하여 구현될 수 있으나, 전술한 예에 한정되지 않으며, 다양한 형태로 임의 변형하여 동작 범위나 기능이 세분화될 수 있다.
분할 헤더 정보는 길이 필드(Length Field)(910), 식별 필드(Identification Field)(920), 플래그 필드(Flag Field)(930), 오프셋 필드(Offset Field)(940) 및 리저브드 필드(Reserved Field)(950)를 포함할 수 있다.
길이 필드(910)는 분할된 메시지의 길이 정보를 포함하고, 예를 들어, 16비트 길이를 가질 수 있다.
식별 필드(920)는 분할된 메시지의 고유 식별자 정보를 포함하고, 예를 들어, 16비트 길이를 가질 수 있다.
플래그 필드(930)는 분할된 메시지의 상태 정보를 포함하고, 예를 들어, 3비트 길이를 가질 수 있다. 첫 번째 비트 bit0는 리저브드(Reserved)된 것으로, 미리 정해진 값(예: '0')을 가져야할 수 있다. 두 번째 비트 bit1은 분할 지시(segment indication) 정보를 포함할 수 있다. 예를 들어, '0'은 메시지가 단일 경로로 분할 없이 전송되는 것을 나타내며, 수신 컴퓨팅 디바이스는 해당 값에 기초하여 분할된 메시지를 수신하기 위한 대기 절차를 간소화 또는 생략할 수 있다. 또한, '1'은 메시지가 다중 경로로 분할되어 전송되는 것을 나타내며, 수신 컴퓨팅 디바이스는 해당 값에 기초하여 분할된 메시지를 수신하기 위한 동작(예: 분할된 메시지 검색 동작)을 수행할 수 있다. 세 번째 비트 bit2는 분할에 대한 추가 정보를 포함할 수 있다. 예를 들어, '0'은 메시지가 단일 경로로 분할 없이 전송되는 경우 또는 메시지가 다중 경로로 분할되어 전송될 때 해당 분할된 메시지가 마지막인 경우를 나타낼 수 있다. '1'은 메시지가 분할되어 전송될 때 후속 메시지가 존재하는 경우를 나타낼 수 있다.
오프셋 필드(940)는 분할된 세그먼트들을 재조합 시 필요한 분할된 메시지의 위치 정보를 포함하고, 예를 들어, 13비트 길이를 가질 수 있다. 예를 들어, 위치 정보는 8바이트 단위로 표기될 수 있으며, 위치 정보를 바이트 단위로 환산 시 해당 정보에 8을 곱함으로써 위치 값이 결정될 수 있다.
리저브드 필드(950)는 분할 헤더 정보의 길이를 조절하기 위한 것으로, 예를 들어, 2Byte를 가질 수 있다. 리저브드 필드(950)는 분할 헤더의 길이를 6Byte 또는 8Byte로 만들기 위한 것일 수 있다. 리저브드 필드(950)가 2Byte이면, 세그먼트의 길이를 8Byte의 정수 배로 표현될 수 있다. 분할 헤더 길이가 증가함에 따라 오버헤드도 증가할 수 있으나, 분할 헤더 길이가 8Byte 단위로 길이가 증가 또는 감소할 수 있는 점을 고려할 때 리저브드 필드(950)가 패딩(padding)으로 활용될 수 있다.
2Byte를 추가한 배경으로는 Segment 길이가 항상 8Byte의 정수배로 표현될 수 있도록 하는 것을 감안하였습니다.
Header 길이가 늘어남에 따라 오버헤드가 늘어나는 단점이 있는데 8Byte 단위로 길이가 증감 가능토록 할 때 구현상 Padding이 필요할 수 있어서 추가하게 되었습니다.
도 10은 일 실시예에 따른 네트워크 프로토콜에 따른 프레임을 설명하기 위한 도면이다.
도 10을 참조하면, PCIe 또는 CXL 프로토콜을 통해 어플리케이션에서 전달된 데이터가 프로토콜 레이어 별로 가공되면서 가산되는 패킷 포맷을 설명하기 위한 예시가 도시된다.
데이터 페이로드(data payload)는, 예를 들어, 최대 4 KB까지 수용할 수 있으며, 트랜잭션 레이어에서는 가용한 어드레스 스페이스 별로 다를 수 있다. 예를 들어, 32-비트 어드레스의 경우 12Byte이고, 64-비트 어드레스의 경우 16Byte가 HDR(Transaction Header)로 가산될 수 있으며, 헤더와 데이터를 포함한 데이터그램(datagram)에 대한 ECRC(End-to-End Cyclic Redundancy Check)가 트랜잭션 레이어에 추가되어, 최종 수신단에서 여러 전송 선로를 거치면서 오류가 발생하지 않았는지에 대한 무결성이 검사될 수 있다.
데이터 페이로드 크기와 관련하여, MPS(Maximum Payload Size)는 통상적으로 시스템 설정에서 중요한 요소로서, 레이턴시를 감안하면 128Byte, 256Byte, 512Byte정도로 작게 설정되며, 트랜잭션 레이어 오버헤드를 감안하면 1KB, 2KB, 4KB 정도로 크게 설정될 수 있다.
트랜잭션 레이어 패킷 중 옵션 기능으로 헤더 앞에 프리픽스(prefix)가 추가되어, 여러 단계의 링크를 거치면서 발생하는 트랜잭션 레이어 상의 정보가 프리픽스 형태로 교환될 수도 있다.
데이터 링크 레이어에는 SEQ(Sequence Number)와 LCRC(Link Cyclic Redundancy Check)가 추가되어 링크 단위 전송 선로의 무결성이 검사될 수 있다.
물리적 레이어에는 SoF(Start-of-Frame)와 EoF(End-of-Frame)가 추가되어 프레임이 구성될 수 있으며, 이후 데이터 인코딩과 변조를 통해 생성된 물리적 레이어 패킷은 바이트 스트라이핑(byte striping)을 통해 바이트 단위로 레인 별로 분할되어 전송될 수 있다.
아래 표는 메시지 길이 별 정보를 메시지, 세그먼트, 프로토콜 레이어(예: 트랜잭션 레이어, 데이터 링크 레이어, 물리적 레이어) 별로 구분하여 나타낼 수 있다.
메시지 | MSZ,total = 0~4096B MMPS = 128B, 256B, 512B, 1KB, 2KB, 4KB |
|
세그먼트 | HDR: 6~8B | |
트랜잭션 레이어 | HDR: 12B (32-bit address)HDR: 16B (64-bit address) | ECRC: 4B |
데이터 링크 레이어 | SEQ: 2B | LCRC: 4B |
물리적 레이어 | SoF: 1B | EoF: 1B |
위의 표 1에서, MSZ,total은 메시지 전체 크기를 나타낼 수 있다.컴퓨팅 디바이스는 메시지를 분할할 때, 메시지 길이에 대한 메시지 정보, 채널 별 네트워크 혼잡도(network congestion)를 나타내는 플로우 컨트롤 정보, 채널 별 데이터 링크 레이어 채널 상태에 관한 매체 접근 제어 정보, 채널 별 엔드-투-엔드 전송 경로의 혼잡도에 관한 버퍼 정보 중 하나 또는 둘 이상의 조합이 이용될 수 있다. 이러한 정보에 대해서는 도 11을 통해 상세히 설명한다.
도 11은 일 실시예에 따른 멀티 채널에 대한 정보를 설명하기 위한 도면이다.
메시지 정보는 메시지 길이에 대한 정보를 포함할 수 있다. 컴퓨팅 디바이스는 메시지 정보, 최대 채널 수 NCH 및 MMPS(Maximum Payload Size)에 기초하여 메시지를 몇 개의 세그먼트들로 분할할지를 결정할 수 있다.
예를 들어, NCH ≥ ceiling (MSZ, total / MMPS)인 경우는 다음과 같이 결정될 수 있다.
분할된 메시지 크기 MSZ = MSZ, total / ceiling (MSZ, total / MMPS) [Byte]
세그먼트 크기
MSG = MSZ + 6~8 [Byte]
트랜잭션 레이어 패킷 크기 LTLP = MSZ + 22~24 or 26~28 = MSG + 16 or 20 [Byte]
데이터 링크 레이어 패킷 크기 LDLLP = MSZ + 28~30 or 32~34 = MSG + 22 or 26 [Byte]
프레임 크기 LFR = MSZ + 30~32 or 34~36 = MSG + 24 or 28 [Byte]
반대로, NCH < ceiling (MSZ, total / MMPS)인 경우는 다음과 같이 결정될 수 있다.
잔여 메시지 크기 MSZ, residual = MSZ, total - (NCH * MMPS) * [ceiling (MSZ, total / (NCH * MMPS)) - 1]
분할된 메시지 크기 MSZ = MSZ, residual / ceiling (MSZ, residual / MMPS) [Byte]
세그먼트 크기 MSG = MSZ + 6~8 [Byte]
트랜잭션 레이어 패킷 크기 LTLP = MSZ + 22~24 or 26~28 = MSG + 16 or 20 [Byte]
데이터 링크 레이어 패킷 크기 LDLLP = MSZ + 28~20 or 32~34 = MSG + 22 or 26 [Byte]
프레임 크기 LFR = MSZ + 30~32 or 34~36 = MSG + 24 or 28 [Byte]
잔여 메시지 크기 MSZ, residual는 최대 채널 수 NCH와 MMPS를 활용하여 전송하고 남은 메시지의 길이를 나타낼 수 있다.
아래에서는 메시지 크기가 최대 채널 수 NCH와 MMPS에 비해서 지나치게 큰 경우는 설명에서 제외하고, 남은 메시지 크기가 최대 채널 수 NCH와 MMPS를 모두 사용하여 전송하기에 충분한 길이를 기준으로 설명한다.
컴퓨팅 디바이스는 메시지를 몇 개의 세그먼트들로 분할할 것인지를 나타내는 메시지 분할 팩터(Message Split Factor or Segment Factor) NSG를 ceiling (MSZ, total / MMPS)로 결정할 수 있다.
메시지 정보는 전송하고자 하는 메시지를 결정하는 컴퓨팅 디바이스의 프로세서 및/또는 메모리로부터 메시지 스플리터 및 애그리게이터로 전달될 수 있다.
플로우 컨트롤 정보는 채널 별 네트워크 혼잡도를 나타내는 정보로서, 컴퓨팅 디바이스는 플로우 컨트롤 정보에 기초하여 네트워크 혼잡도가 미리 정해진 기준보다 낮아 세그먼트 전송에 활용 가능한 채널 수 NCH, free를 결정할 수 있다. 컴퓨팅 디바이스는 가용 채널 수 NCH, free 및 MMPS에 기초하여 메시지를 분할할 수 있으며, NSG는 min [NCH, free, ceiling (MSZ, total / MMPS)]로 결정될 수 있다.
플로우 컨트롤 정보는 각 채널에 배치된 스위치로부터 메시지 스플리터 및 애그리게이터로 전달될 수 있다.
매체 접근 제어 정보는 채널 별 데이터 링크 레이어의 채널 상태를 나타내는 정보로서, 컴퓨팅 디바이스는 매체 접근 제어 정보에 기초하여 데이터 링크 레이어의 채널 상태가 미리 정해진 조건을 만족하여 세그먼트 전송에 활용 가능한 채널 수 NCH, free를 결정할 수 있다. 컴퓨팅 디바이스는 가용 채널 수 NCH, free 및 MMPS에 기초하여 메시지를 분할할 수 있으며, NSG는 min [NCH, free, ceiling (MSZ, total / MMPS)]로 결정될 수 있다. 추가적으로, 컴퓨팅 디바이스는 매체 접근 제어 정보를 활용함으로써, 최종 NACK(negative acknowledge)이 수신된 메시지를 재전송할 때 기존 전송에 이용되었던 채널을 제외하고 데이터 링크 레이어의 채널 상태가 우수한 채널을 선별해서 재전송에 이용할 수 있다.
매체 접근 제어 정보는 각 채널 상에서 프로토콜 엔진 내 데이터 링크 레이어로부터 메시지 스플리터 및 애그리게이터로 전달될 수 있다.
버퍼 정보는 채널 별 엔드-투-엔드 전송 경로의 혼잡도를 나타내는 정보로서, 컴퓨팅 디바이스는 버퍼 정보에 기초하여 엔드-투-엔드 전송 경로의 혼잡도가 미리 정해진 기준보다 낮아 세그먼트 전송에 활용 가능한 채널 수 NCH, free를 결정할 수 있다. 컴퓨팅 디바이스는 가용 채널 수 NCH, free 및 MMPS에 기초하여 메시지를 분할할 수 있으며, NSG는 min [NCH, free, ceiling (MSZ, total / MMPS)]로 결정될 수 있다. 이때, NCH, free는 counting(Ln, buf < Lbuf_thres, n = 1, 2, ... , NCH)로 결정됨으로써, 버퍼 길이가 특정 값 이하인 경우로 한정될 수 있다. 추가적으로, 컴퓨팅 디바이스는 버퍼 정보를 활용함으로써, 네트워크 혼잡도를 덜 야기하면서 엔드-투-엔드 전송 경로에서 큐잉(queueing)으로 인한 시간 지연이 덜 발생하는 채널을 선별해서 메시지를 전송할 다중 경로를 선택할 수 있다.
버퍼 상황 별로 크레딧(credit)이 부여되고, 채널마다 독립적인 네트워크 상황이 주어지게 될 수 있다. 컴퓨팅 디바이스는 버퍼 정보에 기반하여 채널마다 독립적인 네트워크 혼잡 상황에서 버퍼 인지(buffer awareness) 또는 네트워크 혼잡도 인지를 활용하여 메시지를 효율적으로 분할해서 전송할 수 있다.
버퍼 컨트롤 정보는 각 채널에 배치된 스위치로부터 메시지 스플리터 및 애그리게이터로 전달될 수 있다.
도 12는 일 실시예에 따라 채널 별 경로 지연 후 고려해야 할 딜레이 변동(delay variation) 및 리오더링(reordering) 정보를 설명하기 위한 도면이다.
도 12에 도시된 예시처럼, 분할된 메시지가 채널 별로 경로 손실 없이 독립적인 경로 지연을 겪은 후 수신 컴퓨팅 디바이스에 도달하게 되면, 각 채널 별로 서로 다른 길이의 버퍼를 통과하면서 큐잉 딜레이(queueing delay)가 발생할 수 있다. 분할된 메시지들의 수신 시간에는 편차가 발생하게 되고 도착 순서도 변경될 수 있다. 컴퓨팅 디바이스가 딜레이 변동을 고려한 리오더링 정보를 활용하여 메시지를 재조합하는 것을 메시지 애그리게이션으로 지칭할 수 있다. 이러한 후처리(post-processing) 과정을 고려하기 위해, 송신 컴퓨팅 디바이스가 버퍼 정보를 이용하여 큐잉으로 인한 시간 지연이 덜 발생하는 채널을 선별하면 다중 경로 효과를 극대화하면서도 딜레이 변동을 최소화할 수 있다. 딜레이 변동은 수신 컴퓨팅 디바이스에 가장 늦게 도달한 메시지와 가장 빨리 도달한 메시지 간 시간 차이를 나타낼 수 있다.
도 13 내지 도 16는 다양한 실시예에 따라 복수의 세그먼트들의 분할 정보를 전송하는 예시들을 나타낸 도면이다.
도 13을 참조하면, 분할 정보를 분할된 메시지들(예: MSG 1 내지 MSG 3)의 전송 전에 미리 전송하는 예시가 도시된다. 앞서 설명한 예시에서는 각 분할 정보가 대응하는 분할된 메시지와 함께 하나의 세그먼트를 구성하여 멀티 채널을 통해 전송되는 반면, 도 13의 예시에서는 분할 정보가 다중 세그먼트와 다중 채널 간 연결 관계로 표현된 블록 맵(block map) 형태로 분할된 메시지들과 별도로 먼저 전송될 수 있다. 블록 맵은 분할된 메시지들에 대한 분할 정보를 포함하고, 수신 컴퓨팅 디바이스는 블록 맵을 통해 수신된 분할된 메시지들을 재조합하여 메시지를 결정할 수 있다. 수신 컴퓨팅 디바이스에서 재조합 동작이 완료되면 송신 컴퓨팅 디바이스로 블록 응답(block ack)을 전송할 수 있다.
도 14을 참조하면, 컴퓨팅 디바이스 1에서 컴퓨팅 디바이스 2로 블록 맵과 복수의 분할된 메시지들을 전송하고, 컴퓨팅 디바이스 2에서 재조합 동작이 완료됨에 따라 블록 응답이 컴퓨팅 디바이스 2로 전송되는 흐름도가 도시된다.
도 15을 참조하면, 기존 메시지 포맷 중에서 사용하지 않는 미리 정해진 공간을 활용하여 분할 정보가 은닉되어 대응하는 분할된 메시지들(예: MSG 1 내지 MSG 3)와 함께 전송될 수 있다. 예를 들어, 기존 메시지 포맷 중에서 사용하지 않는 미리 정해진 공간이 특정 길이 이하의 벤더 특정 필드(vendor specific field)로 지정될 수 있으며, 벤더 특정 필드에 분할 정보를 은닉하여 대응하는 분할된 메시지와 함께 수신 컴퓨팅 디바이스로 전송될 수 있다. 이러한 방법을 통해 기존 메시지 포맷에 분할 정보를 추가적인 헤더 형태로 전송하지 않고 메시지 분할 및 병합 효과를 얻을 수 있다.
도 16을 참조하면, 컴퓨팅 디바이스 1에서 컴퓨팅 디바이스 2로 분할 정보가 벤더 특정 필드에 은닉된 복수의 분할된 메시지들과 함께 전송될 수 있다.
도 17은 일 실시예에 따른 컴퓨팅 디바이스를 나타낸 도면이다.
컴퓨팅 디바이스(1700)는 메모리(1710) 및 프로세서(1720)를 포함할 수 있다. 컴퓨팅 디바이스(1700)는 연산 집약적 워크로드(compute intensive workload)보다는 메모리 대역폭 집약적 워크로드(memory bandwidth intensive workload)에 적합한 장치로서, 하나의 HBM(High Bandwidth Memory)의 성능에 준하여 하나의 프로세서(1720)의 성능을 최적화하고, 네트워크 대역폭을 극대화할 수 있다. 다만, 컴퓨팅 디바이스(1700)가 전술한 예에 한정되지 않는다.
또한, 컴퓨팅 디바이스(1700)는 하나의 메모리(1710) 및 프로세서(1720)를 포함하는 것으로 도 17에 도시되어 있으나, 실시예에 이에 한정되지 않으며, 복수의 메모리들과 하나의 프로세서를 포함하는 예시나 복수의 메모리들과 복수의 프로세서들을 포함하는 예시도 제한 없이 적용될 수 있다.
메모리(1710)와 프로세서(1720) 사이의 연결 구조에서 메모리 대역폭이 결정되며, 프로세서(1720)의 크기와 구조에 의해 컴퓨팅 디바이스(1700)의 연산 성능이 결정되며, 컴퓨팅 디바이스(1700) 외부에 연결된 I/O 구조에 의해서 네트워크 대역폭이 결정될 수 있다.
메모리(1710)는, 예를 들어, 3D DRAM 스택으로 구성된 HBM을 포함하며, 프로세서(1720)와는 다수의 TSV(Through Silicon Via)와 메모리 컨트롤러(1721)로 연결될 수 있다. 프로세서(1720)는 범용적인 연산을 수행하는 CPU(Central Processing Unit)(1713), 특정 유형의 연산에 특화된 ACC(Accelerator)(1717), 프로세서(1720)의 내부 구성요소들을 연결하기 위한 NoC(Network on-chip)(1715) 및 프로세서(1720) 외부 시스템 구성요소와 연결하기 위한 I/O 컨트롤러(1719)를 포함할 수 있다. I/O 컨트롤러(1719)는 특정 대역폭 이상을 할당하기 위해서 멀티-채널로 확장 가능할 수 있다.
컴퓨팅 디바이스(1700)에서 채널은 물리적 연결 또는 가상 연결을 모두 포함하며, 채널 수 NCH는 컴퓨팅 디바이스(1700)에 가용한 전체 레인 수 KSC와 채널당 할당된 레인 수 LCH에 의해 결정될 수 있다. 컴퓨팅 디바이스(1700)에 가용한 전체 레인 수는 프로세서(1721) 다이 영역(die area) 전체 크기 또는 패키지 기판 영역(package substrate area) 전체 크기에 의해 제한될 수 있으며, 채널당 할당된 레인 수는 고속 전기 신호 전송에 활용되는 네트워크 프로토콜의 특성에 따라 결정될 수 있다.
도 18은 일 실시예에 따른 메시지 스플리터(splitter) 및 애그리게이터(aggregator)의 구현 예시들을 설명하기 위한 도면이다.
도 18에 도시된 것처럼, 메시지 스플릿/애그리게이션 프로토콜의 디자인 옵션으로는 소프트웨어-레벨 구현, 라이브러리-레벨 구현, 하드웨어-레벨 구현이 존재할 수 있으며, 여기서 하드웨어-레벨 구현은 트랜잭션 레이어 상단 또는 트랜잭션 레이어 내 구현이 가능할 수 있다.
도 19는 일 실시예에 따른 네트워크 대역폭 확산 효과를 예시적으로 설명하기 위한 도면이다.
메시지 스플릿/애그리게이션 프로토콜을 통해 네트워크 프로토콜에서 정의한 최대 할당 가능한 16 레인 링크 폭의 2배가 되도록 32 레인 링크 폭을 활용하면, 심볼 단위가 약 1/32 길이로 전송될 수 있다. 메시지 스플릿/애그리게이션 프로토콜 수행 시 발생하는 세그먼트 오버헤드와 다중 경로를 거쳐서 발생한 딜레이 변동 및 리오더링 오버헤드를 감안하더라도 메시지 스플릿/애그리게이션을 통한 네트워크 대역폭 확산 효과로 약 2배 정도 고속 전송을 기대할 수 있다. 다만, 메시지 크기가 특정 길이 이하로 짧은 경우에는 다중 경로를 거쳐서 발생하는 세그먼트 오버헤드와 딜레이 변동이 중요한 요소가 되므로, 가용한 채널을 모두 활용하지 않고 유효 채널 수를 줄여서 대역폭 확산 효과와 프로토콜 운용 비효율을 조절함으로써 성능 이득을 얻을 수 있다.
도 20은 일 실시예에 따른 확장된 전기 네트워크 내 스위치를 설명하기 위한 도면이다.
컴퓨팅 디바이스에서 가용한 전체 레인 수 KSC는 채널당 할당된 레인 수 LCH만큼 전체 채널 수 NCH에 할당되어 각 포트 별로 TX-RX 페어(pair)와 엇갈려 연결 기기의 포트에 연결될 수 있다. 예를 들어, 연결 기기는 통상적인 장치의 I/O 컨트롤러이거나 스위치와 같은 네트워크 기기일 수 있다. 일례로, 복수의 컴퓨팅 디바이스를 연결하기 위한 확장된 전기 네트워크는 NSW, total개의 스위치 패브릭 네트워크로 구성될 수 있다.
도 21은 일 실시예에 따른 스위치의 가용 레인 수와 포트 수를 설명하기 위한 도면이다.
단일 스위치에서 요구되는 전체 레인 수 또는 포트 수 KSW는 다운링크로 연결해야 하는 컴퓨팅 디바이스 개수를 고려한 채널 수 NDN와 채널 당 레인 수 LDN뿐만 아니라, 업링크로 연결해야 하는 스위치 개수를 고려한 채널 수 NUP과 채널 당 레인 수 LUP에 기초하여 결정될 수 있다. 확대된 전기 네트워크는 NDN x LDN + NUP x LUP ≤ KSW 이상의 스위치로 구현될 수 있다.
도 22는 일 실시예에 다른 스위치 패브릭 네트워크에서 가용한 그룹 수를 설명하기 위한 도면이다.
NSW, total 개의 스위치들을 이용한 스위치 패브릭 네트워크에서, 복수의 스위치들이 스위치 그룹으로 그룹핑되고, 스위치 그룹들 간에는 올-투-올 네트워크로 연결되는 계층적 구조가 있을 수 있다. 하나의 스위치 그룹은 NSW개의 스위치들을 포함하고, 스위치 패브릭 네트워크에 포함된 NSW, total개의 스위치들은 NSW, group개의 스위치 그룹으로 그룹핑될 수 있다.
도 23은 일 실시예에 따라 컴퓨팅 디바이스들을 활용한 대규모 고대역 메모리 자원을 설명하기 위한 도면이다.
컴퓨팅 디바이스를 이용한 스케일 아웃(scale-out) 시스템 구조는 확장된 전기 네트워크(extended electrical network)에 기반하여 구현될 수 있다. 각 컴퓨팅 디바이스들은 채널들 NCH을 모두 활용하여 서로 연결될 수 있다. 확장된 전기 네트워크를 통해 확장 가능한 최대 규모까지 연산 성능 당 대역폭이 보장될 수 있어서, 복수의 컴퓨팅 디바이스들에 기반한 스케일-아웃을 통해 대규모 메모리 자원을 구현할 수 있다. 스몰 칩과 고대역폭 IO 조합에 기반한 확장된 전기 네트워크를 이용한 스케일 확장을 통해 전기 네트워크 대역폭이 메모리 대역폭과 유사한 성능을 유지할 수 있다. 이를 통해, 전기적으로 연결된 네트워크로 스케일이 확장되더라도 연산 성능당 I/O 대역폭 효율을 높게 유지할 수 있고, 데이터 이동이 빈번한 대규모 응용 특성에 강점을 가질 수 있다.
도 24은 일 실시예에 따른 컴퓨팅 노드의 연결 구조를 설명하기 위한 도면이다.
도 24을 참조하면, 컴퓨팅 노드(2400)에 포함된 컴퓨팅 디바이스들과 스위치들이 복수의 그룹들로 그룹핑되는 예시가 도시된다. 각 그룹은 컴퓨팅 보드에 해당할 수 있다.
예를 들어, NCD_total = 16 노드, PCIe Gen 5 (BWlane = 4GB/s, 단방향 대역폭(uni-direction bandwidth)) 기준 BWtarget = 1,024 GB/s 규모 타겟 컴퓨팅 노드를 구성할 때, KCD = 16레인 (16-레인 컴퓨팅 노드, 도 24에 도시된 하나의 라인당 4 레인), KSW = 32레인 (32-레인 스위치)를 활용하는 것을 가정한다.
전체 컴퓨팅 노드에서 요구하는 대역폭을 수용하기 위해서 필요한 전체 스위치 개수는 단일 스위치 기준으로 업링크(Uplink):다운링크(Downlink) 비율을 1:1로 연결한다고 가정할 때 전체 스위치 대역폭의 절반을 컴퓨팅 노드 연결할 때 필요한 스위치 개수보다 크거나 같을 수 있다. (단일 스위치 기준으로 다운링크는 컴퓨팅 노드와 연결 업링크는 다른 스위치와 연결을 앞에서 설명하도록 한다.)
NSW_total ≥ BWtarget / (BWSW /2) = 2 x BWtarget / (BWlane x KSW) = 2 x 1,024 / (4 x 32) = 16
단일 컴퓨팅 노드에서 가용한 전체 레인 수를 채널 당 레인 수로 나눠주면 스위치 그룹의 크기 NSW가 결정된다.
NSW = KCD / LCH = 16 / 4 = 4
전체 스위치 개수를 스위치 그룹의 크기로 나누면 요구되는 스위치 그룹 수 NSW_group가 결정된다.
NSW_group = NSW_total / NSW ≥ 16/4 = 4
인트라-그룹(동일 그룹 내 컴퓨팅 장치-to-스위치) 및 인터-그룹(상이한 그룹들 간 스위치-to-스위치) 간 연결 시, 채널 당 레인 수 (LCH = 4)를 고려하여 전체 컴퓨팅 노드 간 연결 시 채널 당 레인 수가 보장될 수 있도록 설계한다. 이 때, 병렬 Flatten Butterfly 구조를 활용하면 필요한 스위치 개수를 최소화할 수 있다.
컴퓨팅 노드(2400)에 포함된 컴퓨팅 디바이스들과 스위치들이 4개의 그룹들로 그룹핑되며, 각 그룹은 4개의 컴퓨팅 디바이스들과 4개의 스위치들을 포함할 수 있다.
컴퓨팅 디바이스들 각각은 16개의 레인들을 가지고, 각 레인은 동일 그룹 내 4개의 스위치들에 하나씩 연결될 수 있다. 스위치들 각각은 32개의 레인들을 가지고, 그 중 16개의 레인들 각각은 동일 그룹 내 4개의 컴퓨팅 디바이스들에 하나씩 연결될 수 있다. 동일 그룹 내 컴퓨팅 디바이스들과 스위치들은 전기 접속 네트워크를 통해 완전 연결될 수 있다.
다른 그룹들 간 스위치들은 전기 접속 네트워크를 통해 병렬 올투올로 연결될 수 있다. 한 그룹에 포함된 스위치들 각각은 다른 그룹에 포함된 스위치들 중 어느 하나에 배타적으로 연결될 수 있다. 예를 들어, 제1 그룹 내 제1 스위치는 제2 그룹의 스위치들 중에서 제5 스위치에만 연결되고, 제 6 내지 8 스위치들에는 연결되지 않는다. 마찬가지로, 제2 그룹 내 제5 스위치는 제1 그룹의 스위치들 중에서 제1 스위치에만 연결되고, 제 2 내지 4 스위치들에는 연결되지 않는다.
예를 들어, 제1 그룹 내 제1 컴퓨팅 디바이스에서 제2 그룹 내 제5 컴퓨팅 디바이스로 데이터를 전송하는 상황을 설명한다. 제1 컴퓨팅 디바이스는 데이터를 4개로 분할되어 동일한 대역폭으로 제1 내지 4 스위치들로 전달될 수 있다. 제1 내지 4 스위치들 각각은 전달 받은 분할된 데이터를 제2 그룹 내 제5 내지 8 스위치들 중에서 자신과 일대일로 연결된 스위치로 전달할 수 있다. 제5 내지 8 스위치들은 전달 받은 분할된 데이터를 제5 컴퓨팅 디바이스로 전달할 수 있다. 컴퓨팅 디바이스와 복수의 스위치들 간 일대다 연결과 상이한 그룹들의 스위치들 간 일대일 연결을 통해, I/O 대역폭에 의한 제한 없이 데이터를 효율적으로 전송할 수 있다.
도 24에 도시된 예시에서, 각 스위치는 32레인들 중에서 28레인을 사용하고 있기 때문에, 컴퓨팅 노드(2400)는 각 스위치에 남은 4레인을 이용하여 추가로 1개의 그룹을 더 포함할 수 있다. 이처럼, 추가로 스위치가 허용하는 레인 범위 내에서 그룹을 추가함으로써 컴퓨팅 노드(2400)의 범위가 쉽게 확장될 수 있다.
도 24에 도시된 예시에서는, 각 스위치에서 다른 그룹의 스위치들로 연결되는 업링크 및 동일 그룹 내 컴퓨팅 디바이스들로 연결되는 다운링크에 할당되는 비율이 1:1일 수 있으나, 전술한 예에 한정되지 않는다. 업링크 대 다운링크에 대한 각 스위치의 대역폭 할당 비율이 1:N로 가변된다면, 각 스위치의 대역폭의 N/(N+1)이 동일 그룹 내 컴퓨팅 디바이스들에 할당될 수 있다. N이 1보다 크다면(예: N = 1, 2, 3 등), 각 스위치에 연결되는 컴퓨팅 디바이스들의 개수가 커지는 반면, 해당 스위치에 연결되는 그룹 수는 줄어들 수 있다. 반대로, N이 1보다 작다면(예: N = 1/2, 1/3, 1/4 등), 각 스위치에 연결되는 컴퓨팅 디바이스들의 개수는 적어지는 반면, 해당 스위치에 연결되는 그룹 수가 증가할 수 있다. 도 24은 N = 1인 경우를 도시하며, 이 경우 최소의 스위치 개수로 연결 가능한 노드 수를 최대로 할 수 있다.
일례로, 각 스위치의 전체 포트 수 KSW는 NDN x LDN + NUP x LUP ≤ KSW로 결정될 수 있으며, 여기서 NDN는 다운링크의 채널 수를 나타내고, LDN는 다운링크의 채널당 레인 수를 나타내고, NUP는 업링크의 채널 수를 나타내며, LUP는 업링크의 채널당 레인 수를 나타낼 수 있다.
앞서 설명한 구조와 통신 방식을 통해, 스위치 연결을 확장함으로써 손쉽게 그룹 수를 늘릴 수 있으며, 그룹 내 또는 그룹 간 연결을 통해 하나의 컴퓨팅 디바이스로 대역폭 확산 가능하고, 그룹 내 또는 그룹 간 연결을 통해 여러 컴퓨팅 디바이스들 간 대역폭 분할이 가능하고, 그룹 내 컴퓨팅 디바이스와 그룹 간 컴퓨팅 디바이스를 자유롭게 선택한 후 여러 컴퓨팅 디바이스들 간 대역폭 분할이 가능하며, 그룹 내 스위치 및 그룹 간 스위치를 활용하여 주어진 대역폭 내에서 자유롭게 컴퓨팅 디바이스를 선택하고 필요한 대역폭을 분할하여 활용할 수 있다.
도 25 내지 도 30은 일 실시예에 따른 다양한 연결 예시들을 도시한다.
도 25를 참조하면, 컴퓨팅 노드의 예시가 도시된다. 컴퓨팅 노드에 포함된 컴퓨팅 디바이스들(도 25에 'CD'로 도시됨) 및 스위치들(도 25에 'SW'로 도시됨)은 4개의 그룹들로 그룹핑될 수 있다. 도 25에 도시된 것처럼, 각 스위치의 업링크에 활용 가능한 포트 1개를 통해 추가 그룹 5를 쉽게 연결할 수 있다. 이때, 그룹 1 - 그룹 5, 그룹 2 - 그룹 5, 그룹 3 - 그룹 5, 그룹 4 - 그룹 5 간 병렬 올-투-올 연결이 수행될 수 있다.
도 26을 참조하면, 컴퓨팅 디바이스 #1은 동일 그룹 내 스위치들 #1-4를 통해 대역폭 제한 없이 동일 그룹 내 컴퓨팅 디바이스(예: 컴퓨팅 디바이스 #2)에 연결될 수 있다. 연결하고자 하는 동일 그룹 내 컴퓨팅 디바이스는 자유롭게 선택될 수 있다.
도 27을 참조하면, 컴퓨팅 디바이스 #1은 스위치들 #1-8을 통해 대역폭 제한 없이 다른 그룹의 컴퓨팅 디바이스(예: 컴퓨팅 디바이스 #5)에 연결될 수 있다. 연결하고자 하는 다른 그룹 내 컴퓨팅 디바이스는 자유롭게 선택될 수 있다.
도 28을 참조하면, 컴퓨팅 디바이스 #1은 동일 그룹 내 스위치들 #1-4를 통해 대역폭을 분할하여 동일 그룹 내 둘 이상의 컴퓨팅 디바이스(예: 컴퓨팅 디바이스 #2, 3)에 연결될 수 있다. 연결하고자 하는 동일 그룹 내 컴퓨팅 디바이스들은 자유롭게 선택될 수 있다.
도 29를 참조하면, 컴퓨팅 디바이스 #1은 스위치들 #1-6, 11, 12를 통해 대역폭을 분할하여 다른 그룹의 컴퓨팅 디바이스들(예: 컴퓨팅 디바이스 #5, 9)에 연결될 수 있다. 연결하고자 하는 다른 그룹 내 컴퓨팅 디바이스들은 자유롭게 선택될 수 있다.
도 30을 참조하면, 컴퓨팅 디바이스 #1은 스위치들 #1-4, 7-8, 11-12, 15-16을 통해 대역폭을 분할하여 동일 그룹내 하나 이상의 컴퓨팅 디바이스(예: 컴퓨팅 디바이스 #2-4)과 다른 그룹의 컴퓨팅 디바이스들(예: 컴퓨팅 디바이스 #5-16)에 연결될 수 있다. 연결하고자 하는 다른 그룹 내 컴퓨팅 디바이스들은 자유롭게 선택될 수 있다.
도 31은 일 실시예에 따른 컴퓨팅 디바이스, 컴퓨팅 보드 및 컴퓨팅 노드의 예시를 나타낸 도면이다.
도 31를 참조하면, 컴퓨팅 디바이스(3110), 컴퓨팅 보드(3120) 및 컴퓨팅 노드(3130)의 설계 예시들이 도시된다. 도 31의 예시들에 의해 실시예가 제한되지 않는다. 여기서 설명된 연결 공유 기법(connection sharing techniques) 및 메시지 분할 기법(message splitting techniques)은 임의의 전기적 네트워크의 구현, 예를 들어, PCIe 또는 CXL 네트워크 등에 적용될 수 있다.
컴퓨팅 보드(3120)는 전기 인터페이스(electrical interface)의 링크 버짓(link budget)을 고려하여 가능한 범위 내에서 복수의 컴퓨팅 디바이스들과 스위치들을 하나의 PCB 상에 포함할 수 있다. 예를 들어, PCIe Gen 5(peripheral component interconnect express generation 5) (예: bit rate: 32 GT/s)의 경우, -36dB 로스 버짓(loss budget)을 고려하여 컴퓨팅 디바이스-PCIe 스위치 간 트레이스 길이(trace length)가 MEGTRON6 PCB 기준 460mm 이하가 되도록 컴퓨팅 보드(3120)가 설계될 수 있다.
도 31에 도시된 예시에서, 컴퓨팅 보드(3120)는 32개의 컴퓨팅 디바이스들, 16개의 스위치들(컴퓨팅 보드(3120)의 앞면 및 뒷면 각각에 8개씩), 16개 커넥터들을 포함할 수 있다. 커넥터들은 컴퓨팅 보드(3120)를 컴퓨팅 노드(3130)의 미드플레인 PCB에 전기적으로 연결시킬 수 있다.
컴퓨팅 노드(3130)는 미드플레인 PCB에 링크 버짓이 허용하는 범위 내에서 커넥터를 활용하여 복수의 컴퓨팅 보드들을 연결할 수 있다. 링크 버짓은 스위치 통과 시 리셋(reset)될 수 있다.
컴퓨팅 보드(3120) 내 스위치의 총 I/O 대역폭은 (컴퓨팅 보드(3120) 내 컴퓨팅 디바이스의 총 I/O 대역폭) + (컴퓨팅 노드(3130) 내 컴퓨팅 보드의 개수 x 단일 컴퓨팅 디바이스의 I/O 대역폭) 이상이 되도록 설계될 수 있다.
컴퓨팅 노드(3130)의 모든 스위치들은 스위치 패브릭 네트워크를 통해 전기적으로 연결될 수 있다. 컴퓨팅 노드(3130)는 PCB 활용 전기 접속 네트워크를 극대화하여 대규모 HBM 풀(pool)을 지원할 수 있다.
도 32은 일 실시예에 따른 전자 장치의 동작 방법을 나타낸 도면이다.
이하 실시예에서 각 동작들은 순차적으로 수행될 수도 있으나, 반드시 순차적으로 수행되는 것은 아니다. 예를 들어, 각 동작들의 순서가 변경될 수도 있으며, 적어도 두 동작들이 병렬적으로 수행될 수도 있다. 동작(3210) 내지 동작(3230)은 전자 장치에 의해 수행될 수 있다.
동작(3210)에서, 전자 장치는 전자 장치에 포함된 복수의 컴퓨팅 디바이스들 중 제1 컴퓨팅 디바이스에서 전송하고자 하는 메시지를 복수의 세그먼트들로 분할한다. 전자 장치는 메시지의 길이 및 제1 컴퓨팅 디바이스에 연결된 복수의 채널들에 대한 정보 중 하나 또는 둘의 조합에 기초하여 메시지를 분할할 세그먼트의 개수를 결정하고, 결정된 개수의 세그먼트들로 메시지를 분할할 수 있다.
전자 장치는 메시지의 길이 및 세그먼트의 최대 페이로드 길이에 기초하여 메시지를 분할할 세그먼트의 개수를 결정할 수 있다. 전자 장치는 복수의 채널들에 대한 정보에 기초하여 복수의 세그먼트들을 전송할 하나 이상의 채널들을 선택하고, 선택된 채널들의 개수만큼 메시지를 분할할 수 있다. 복수의 채널들에 대한 정보는 채널 별 네트워크 혼잡도에 관한 플로우 컨트롤 정보, 채널 별 데이터 링크 레이어의 채널 상태에 관한 매체 접근 제어 정보, 채널 별 엔드-투-엔드 전송 경로의 혼잡도에 관한 버퍼 정보 중 하나 또는 둘 이상의 조합을 포함할 수 있다.
동작(3220)에서, 전자 장치는 제1 컴퓨팅 디바이스 및 복수의 스위치들 간 전기적 연결에 기반한 멀티 채널을 통해, 복수의 세그먼트들을 복수의 컴퓨팅 디바이스들 중 제2 컴퓨팅 디바이스로 전송한다.
동작(3230)에서, 전자 장치는 제2 컴퓨팅 디바이스에서 복수의 세그먼트들을 조합하여 메시지를 결정한다. 전자 장치는 멀티 채널을 통해 제2 컴퓨팅 디바이스로 전달된 복수의 세그먼트들의 분할 정보에 기초하여, 복수의 세그먼트들을 조합하여 메시지를 결정할 수 있다. 분할 정보는 각 세그먼트들의 길이 정보, 고유 식별자, 상태 정보 및 위치 정보를 포함할 수 있다.
일례로, 분할 정보는 대응하는 세그먼트와 함께 멀티 채널을 통해 제2 컴퓨팅 디바이스로 전달될 수 있다.
다른 예로, 전자 장치는 복수의 세그먼트들의 분할 정보를 복수의 세그먼트들의 전송에 앞서 멀티 채널을 통해 제2 컴퓨팅 디바이스로 전달하고, 제2 컴퓨팅 디바이스에서 복수의 세그먼트들을 조합하여 메시지를 결정하는 것에 응답하여, 멀티 채널을 통해 제2 컴퓨팅 디바이스에서 제1 컴퓨팅 디바이스로 ACK 메시지를 전송할 수 있다.
이러한 전자 장치를 통해 한 컴퓨팅 디바이스에서 다른 컴퓨팅 디바이스로 메시지를 전송하면 메모리 자원을 확장할 수 있으며, 컴퓨팅 디바이스 내 프로세서가 메모리 근접 위치에서 연산을 수행하기 때문에 컴퓨팅 디바이스에서 고대역 메모리 성능을 최대로 활용할 수 있다. 또한, 하나의 컴퓨팅 디바이스와 다른 컴퓨팅 디바이스 간 연결 시 연산 성능 대비 네트워크 대역폭 효율이 높으며, 컴퓨팅 디바이스들 간 분산 메모리 구조로 공유 메모리 접근 성능을 보장할 수 있다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 컨트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 저장할 수 있으며 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
위에서 설명한 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 또는 복수의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 이를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
Claims (27)
- 복수의 컴퓨팅 디바이스들을 포함하는 전자 장치의 동작 방법에 있어서,
상기 복수의 컴퓨팅 디바이스들 중 제1 컴퓨팅 디바이스에서 전송하고자 하는 메시지를 복수의 세그먼트들로 분할하는 동작;
상기 제1 컴퓨팅 디바이스 및 복수의 스위치들 간 전기적 연결에 기반한 멀티 채널을 통해, 상기 복수의 세그먼트들을 상기 복수의 컴퓨팅 디바이스들 중 제2 컴퓨팅 디바이스로 전송하는 동작; 및
상기 제2 컴퓨팅 디바이스에서 상기 복수의 세그먼트들을 조합하여 상기 메시지를 재구성(reconstruct)하는 동작
을 포함하고,
상기 멀티 채널은 각각 전기적인 연결들을 포함하는 채널들을 포함하고,
상기 전기적인 연결들은 상기 제1 컴퓨팅 디바이스 및 상기 제2 컴퓨팅 디바이스를 연결하고,
상기 복수의 세그먼트들을 전송하는 상기 멀티 채널의 대역폭은 상기 전기적인 연결들 중 하나의 전기적인 연결의 최대 대역폭보다 큰,
전자 장치의 동작 방법. - 제1항에 있어서,
상기 메시지를 재구성하는 동작은
상기 멀티 채널을 통해 상기 제2 컴퓨팅 디바이스로 전달된 상기 복수의 세그먼트들의 분할 정보에 기초하여, 상기 복수의 세그먼트들을 조합하는,
전자 장치의 동작 방법. - 제2항에 있어서,
상기 분할 정보는 대응하는 세그먼트와 함께 상기 멀티 채널을 통해 상기 제2 컴퓨팅 디바이스로 전달되는,
전자 장치의 동작 방법. - 제2항에 있어서,
상기 복수의 세그먼트들의 상기 분할 정보를 상기 복수의 세그먼트들의 전송에 앞서 상기 멀티 채널을 통해 상기 제2 컴퓨팅 디바이스로 전달하는 동작; 및
상기 제2 컴퓨팅 디바이스에서 상기 복수의 세그먼트들을 조합하여 상기 메시지를 재구성하는 것에 응답하여, 상기 멀티 채널을 통해 상기 제2 컴퓨팅 디바이스에서 상기 제1 컴퓨팅 디바이스로 ACK 메시지를 전송하는 동작
을 더 포함하는
전자 장치의 동작 방법. - 제2항에 있어서,
상기 분할 정보는 각 세그먼트들의 길이 정보, 고유 식별자, 상태 정보 및 위치 정보를 포함하는,
전자 장치의 동작 방법. - 제1항에 있어서,
상기 메시지를 상기 복수의 세그먼트들로 분할하는 동작은
상기 메시지의 길이 및 상기 제1 컴퓨팅 디바이스에 연결된 복수의 채널들에 대한 정보 중 하나 또는 둘의 조합에 기초하여 상기 메시지를 분할할 세그먼트의 개수를 결정하고, 상기 결정된 개수의 세그먼트들로 상기 메시지를 분할하는,
전자 장치의 동작 방법. - 제6항에 있어서,
상기 메시지를 상기 복수의 세그먼트들로 분할하는 동작은
상기 메시지의 길이 및 세그먼트의 최대 페이로드 길이에 기초하여 상기 메시지를 분할할 세그먼트의 개수를 결정하는,
전자 장치의 동작 방법. - 제6항에 있어서,
상기 메시지를 상기 복수의 세그먼트들로 분할하는 동작은
상기 복수의 채널들에 대한 정보에 기초하여 상기 복수의 세그먼트들을 전송할 하나 이상의 채널들을 선택하고, 선택된 채널들의 개수만큼 메시지를 분할하는,
전자 장치의 동작 방법. - 제6항에 있어서,
상기 복수의 채널들에 대한 정보는
채널 별 네트워크 혼잡도에 관한 플로우 컨트롤 정보(flow control information);
채널 별 데이터 링크 레이어의 채널 상태에 관한 매체 접근 제어 정보(medium access control information);
채널 별 엔드-투-엔드 전송 경로의 혼잡도에 관한 버퍼 정보(buffer information)
중 하나 또는 둘 이상의 조합을 포함하는,
전자 장치의 동작 방법. - 제1항에 있어서,
상기 복수의 컴퓨팅 디바이스들은 복수의 그룹들로 그룹핑되고,
상기 복수의 스위칭들은 상기 제1 컴퓨팅 디바이스와 동일 그룹에 속하고,
상기 제1 컴퓨팅 디바이스는 상기 복수의 스위치들 각각에 연결되는,
전자 장치의 동작 방법. - 제10항에 있어서,
상기 제2 컴퓨팅 디바이스는 상기 제1 컴퓨팅 디바이스와 상이한 그룹에 속하고,
상기 제2 컴퓨팅 디바이스와 동일 그룹에 속하는 복수의 제2 스위칭들 각각은 상기 복수의 스위치들 중 어느 하나에 배차적으로(exclusively) 전기적으로 연결되는,
전자 장치의 동작 방법. - 전자 장치에 있어서,
컴퓨팅 디바이스들(computing devices) 및 스위치들을 각각 포함하는 복수의 그룹들
을 포함하고,
각 그룹들에 포함된 스위치들 각각은 해당 그룹 내 각 컴퓨팅 디바이스들에 연결되고,
상기 복수의 그룹들 중 제1 그룹에 포함된 스위치들 각각은 제2 그룹에 포함된 스위치들 중 어느 하나에만 연결되고,
각 그룹들에 포함된 컴퓨팅 디바이스 및 스위치의 연결과 다른 그룹들 간 스위치들의 연결은 전기적인 연결이고,
상기 컴퓨팅 디바이스들 중 제1 컴퓨팅 디바이스는
전송하고자 하는 메시지를 복수의 세그먼트들로 분할하고, 상기 제1 컴퓨팅 디바이스에 연결된 복수의 제1 스위치들 간 전기적 연결에 기반한 멀티 채널을 통해 상기 복수의 세그먼트들을 상기 컴퓨팅 디바이스들 중 제2 컴퓨팅 디바이스로 전송하고,
상기 제2 컴퓨팅 디바이스는
상기 멀티 채널을 통해 수신한 상기 복수의 세그먼트들을 조합하여 상기 메시지를 재구성하고,
상기 복수의 세그먼트들을 전송하는 상기 멀티 채널의 대역폭은 상기 멀티 채널의 하나의 전기적인 연결의 최대 대역폭보다 큰,
전자 장치. - 제12항에 있어서,
상기 제1 컴퓨팅 디바이스는
상기 멀티 채널을 통해 상기 제2 컴퓨팅 디바이스로 전달된 상기 복수의 세그먼트들의 분할 정보에 기초하여, 상기 복수의 세그먼트들을 조합하는,
전자 장치. - 제13항에 있어서,
상기 분할 정보는 대응하는 세그먼트와 함께 상기 멀티 채널을 통해 상기 제2 컴퓨팅 디바이스로 전달되는,
전자 장치. - 제13항에 있어서,
상기 제1 컴퓨팅 디바이스는
상기 복수의 세그먼트들의 상기 분할 정보를 상기 복수의 세그먼트들의 전송에 앞서 상기 멀티 채널을 통해 상기 제2 컴퓨팅 디바이스로 전달하고,
상기 제2 컴퓨팅 디바이스는
상기 복수의 세그먼트들을 조합하여 상기 메시지를 재구성하는 것에 응답하여, 상기 멀티 채널을 통해 상기 제1 컴퓨팅 디바이스로 ACK 메시지를 전송하는,
전자 장치. - 제13항에 있어서,
상기 분할 정보는 각 세그먼트들의 길이 정보, 고유 식별자, 상태 정보 및 위치 정보를 포함하는,
전자 장치. - 제12항에 있어서,
상기 제1 컴퓨팅 디바이스는
상기 메시지의 길이 및 상기 제1 컴퓨팅 디바이스에 연결된 복수의 채널들에 대한 정보 중 하나 또는 둘의 조합에 기초하여 상기 메시지를 분할할 세그먼트의 개수를 결정하고, 상기 결정된 개수의 세그먼트들로 상기 메시지를 분할하는,
전자 장치. - 제12항에 있어서,
상기 제1 컴퓨팅 디바이스는
상기 메시지의 길이 및 세그먼트의 최대 페이로드 길이에 기초하여 상기 메시지를 분할할 세그먼트의 개수를 결정하는,
전자 장치. - 제12항에 있어서,
상기 제1 컴퓨팅 디바이스는
상기 복수의 채널들에 대한 정보에 기초하여 상기 복수의 세그먼트들을 전송할 하나 이상의 채널들을 선택하고, 선택된 채널들의 개수만큼 메시지를 분할하는,
전자 장치. - 제12항에 있어서,
상기 복수의 채널들에 대한 정보는
채널 별 네트워크 혼잡도에 관한 플로우 컨트롤 정보(flow control information);
채널 별 데이터 링크 레이어의 채널 상태에 관한 매체 접근 제어 정보(medium access control information);
채널 별 엔드-투-엔드 전송 경로의 혼잡도에 관한 버퍼 정보(buffer information)
중 하나 또는 둘 이상의 조합을 포함하는,
전자 장치.
- 제12항에 있어서,
상기 스위치들은 PICe(Peripheral Component Express) 스위치들 또는 CXL(Compute Express Link) 스위치들을 포함하고, 상기 세그먼트들은 PCIe 패킷들을 포함하는,
전자 장치.
- 제21항에 있어서,
상기 멀티 채널은 PCIe 레인들 또는 CXL 레인들을 포함하고,
상기 세그먼트들 각각은 대응하는 PCIe 레인들 또는 CXL 레인들을 통해 전송되는,
전자 장치.
- 시스템 내 복수의 이용 가능한 레인들을 통해 전송되는 타겟 메시지를 분할하기로 결정하는 동작;
상기 결정하는 동작에 기반하여, 상기 복수의 이용 가능한 레인들에 대응하는 복수의 세그먼트들로 상기 타겟 메시지를 분할하는 동작 -상기 타겟 메시지는 제1 컴퓨팅 디바이스에 의해 생성됨 -;
상기 복수의 세그먼트들에 대응하는 복수의 트랜잭션-레이어 패킷들을 생성하는 동작 -상기 트랜잭션-레이어 패킷들은 각각 상기 세그먼트들을 포함하는 데이터 페이로드들을 각각 포함함 -;
하나 이상의 레인들을 통해, 상기 메시지의 분할에 기초한 분할 정보를 전송하는 동작;
각각의 레인들을 통해 상기 트랜잭션-레이어 패킷들을 전송하는 동작; 및
상기 전송된 분할 정보에 기초하여 상기 데이터 페이로드들 내 상기 세그먼트들로부터 상기 타겟 메시지를 재구성하고, 상기 재구성된 타겟 메시지를 상기 제1 컴퓨팅 디바이스에 의해 상기 타겟 메시지가 어드레싱된 제2 컴퓨팅 장치에 제공하는 동작
을 포함하는
방법.
- 제23항에 있어서,
상기 시스템은
제1 컴퓨팅 디바이스들, 상기 제1 컴퓨팅 디바이스들 각각에 연결되는 제1 스위치들을 포함하는 제1 그룹;
제2 컴퓨팅 디바이스들, 상기 제2 컴퓨팅 디바이스들 각각에 연결되는 제2 스위치들을 포함하는 제2 그룹; 및
레인들
을 포함하고,
상기 레인들은 각각 제1 스위치들을 상기 제2 스위치들에 연결하고,
상기 제1 스위치들 각각은 상기 레인들의 하나를 통해 하나의 제2 스위치에만 연결되고,
상기 제2 스위치들 각각은 상기 레인들의 하나를 통해 하나의 제1 스위치에만 연결되는,
방법.
- 제24항에 있어서,
상기 레인들은 PCIe 레인들 또는 CXL 레인들을 포함하고,
상기 스위치들은 PCIe 스위치들 또는 CXL 스위치들을 포함하고,
상기 타겟 메시지는 트랜잭션-레이어 PCIe 메시지 또는 CXL 메시지들이고,
상기 트랜잭션-레이어 패킷들은 PCIe 트랜잭션-레이어 패킷들 또는 CXL 트랜잭션-레이어 패킷들인,
방법.
- 제24항에 있어서,
상기 트랜잭션-레이어 패킷들은 각각 제1 스위치들에 의해 각각의 레인들로 동시에 방출되는,
방법.
- 제24항에 있어서,
상기 트랜잭션-레이어 패킷들을 전송하는 동작은
각 PCIe 레인들 또는 CXL 레인들을 통해 PCIe 트랜잭션-레이어 패킷들 또는 CXL 트랜잭션-레이어 패킷들을 전송하는 각 제1 스위치들로부터 PCIe 트랜잭션-레이어 패킷들 또는 CXL 트랜잭션-레이어 패킷들을 전송하는 동작; 및
각 제2 스위치들에 의해 각 PCIe 레인들 또는 CXL 레인들로부터 전송된 PCIe 트랜잭션-레이어 패킷들 또는 CXL 트랜잭션-레이어 패킷들을 수신하는 동작
을 포함하는,
방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US18/101,732 US20230254253A1 (en) | 2022-02-09 | 2023-01-26 | Message split-aggregation for multi-stage electrical interconnection network |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202263308278P | 2022-02-09 | 2022-02-09 | |
US63/308,278 | 2022-02-09 | ||
KR1020220033387 | 2022-03-17 | ||
KR20220033387 | 2022-03-17 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20230120559A true KR20230120559A (ko) | 2023-08-17 |
Family
ID=87800455
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020220181836A KR20230120559A (ko) | 2022-02-09 | 2022-12-22 | 다중 스테이지 전기 접속 네트워크에서 메시지 분할-병합을 수행하는 전자 장치 및 그 동작 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20230120559A (ko) |
-
2022
- 2022-12-22 KR KR1020220181836A patent/KR20230120559A/ko unknown
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11451476B2 (en) | Multi-path transport design | |
US9088451B2 (en) | System and method for network interfacing in a multiple network environment | |
US8335884B2 (en) | Multi-processor architecture implementing a serial switch and method of operating same | |
US7502884B1 (en) | Resource virtualization switch | |
US9294569B2 (en) | Cell fabric hardware acceleration | |
TW201606502A (zh) | 使用混合記憶體立方體連結之互連系統及方法 | |
US12113879B2 (en) | Reliable communications using a point to point protocol | |
US20110010522A1 (en) | Multiprocessor communication protocol bridge between scalar and vector compute nodes | |
KR20230120559A (ko) | 다중 스테이지 전기 접속 네트워크에서 메시지 분할-병합을 수행하는 전자 장치 및 그 동작 방법 | |
EP1540473A2 (en) | System and method for network interfacing in a multiple network environment | |
US10171193B2 (en) | Fractional multiplexing of serial attached small computer system interface links | |
US20230254253A1 (en) | Message split-aggregation for multi-stage electrical interconnection network | |
Zang et al. | PROP: Using PCIe-based RDMA to accelerate rack-scale communications in data centers | |
TW201722115A (zh) | 傳收器組以及相關路由器 | |
CN111628936B (zh) | 基于宽端口异构瓦片的端口可配置路由器设计方法及路由器 | |
US12047275B2 (en) | Efficiency and quality of service improvements for systems with higher bandwidth clients mixed with lower bandwidth clients | |
US12093571B1 (en) | Accelerating request/response protocols | |
WO2024102916A1 (en) | Root complex switching across inter-die data interface to multiple endpoints | |
Mohamed | Self-configuring communication middleware model for multiple network interfaces | |
Li et al. | Host-driven In-Network Aggregation on RDMA | |
WO2024102915A1 (en) | Pcie retimer providing failover to redundant endpoint using inter-die data interface | |
CN118869393A (zh) | 跨网络访问固态盘ssd的方法和装置 | |
CN117762858A (zh) | 片上网络系统、计算机系统及芯片 | |
CN117221230A (zh) | 一种数据传输方法以及相关设备 |