KR20060087364A - 복수의 처리 노드를 시리얼 버스에 의해 상호 접속하는장치 - Google Patents

복수의 처리 노드를 시리얼 버스에 의해 상호 접속하는장치 Download PDF

Info

Publication number
KR20060087364A
KR20060087364A KR1020050039339A KR20050039339A KR20060087364A KR 20060087364 A KR20060087364 A KR 20060087364A KR 1020050039339 A KR1020050039339 A KR 1020050039339A KR 20050039339 A KR20050039339 A KR 20050039339A KR 20060087364 A KR20060087364 A KR 20060087364A
Authority
KR
South Korea
Prior art keywords
port
switch
ports
cpu
upstream
Prior art date
Application number
KR1020050039339A
Other languages
English (en)
Other versions
KR100708565B1 (ko
Inventor
시게요시 오하라
가즈노리 마스야마
Original Assignee
후지쯔 가부시끼가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 후지쯔 가부시끼가이샤 filed Critical 후지쯔 가부시끼가이샤
Publication of KR20060087364A publication Critical patent/KR20060087364A/ko
Application granted granted Critical
Publication of KR100708565B1 publication Critical patent/KR100708565B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal

Abstract

본 발명은 PCI-Express 버스와 같은 시리얼 버스에 의해 복수의 CPU 노드를 상호 접속한 컴퓨터 시스템에 있어서, CPU 노드 증감 등의 요인에 의해 구성이 변화된 경우에도 시스템 동작을 가능하게 하는 것을 목적으로 한다.
스위치 유닛(202)의 컨트롤러(222)는 스위치(221) 각 포트의 링크가 확립되기 전에 CPU 유닛(201-0 ~ 201-3)이 실장되어 있는지 여부를 확인하고, 실장되어 있는 CPU 유닛 중 하나가 접속되어 있는 포트를 업스트림 포트로 설정하고, 다른 포트를 다운스트림 포트로 설정하는 제어를 행한다.

Description

복수의 처리 노드를 시리얼 버스에 의해 상호 접속하는 장치{APPARATUS FOR INTERCONNECTING A PLURALITY OF PROCESS NODES BY SERIAL BUS}
도 1은 본 발명의 상호 접속 장치의 원리도.
도 2는 디스크 어레이 장치의 구성도.
도 3은 데이터의 복사를 도시한 도면.
도 4는 어드레스 맵을 도시한 도면.
도 5는 어드레스 범위를 지시하는 레지스터를 도시한 도면.
도 6은 4 종류의 어드레스 맵을 도시한 도면.
도 7은 백 패널을 도시한 도면.
도 8은 BMC의 동작 시퀀스를 도시한 도면.
도 9는 CPU 유닛의 BMC의 동작 흐름도.
도 10은 스위치 유닛의 BMC의 동작 흐름도(첫번째).
도 11은 스위치 유닛의 BMC의 동작 흐름도(두번째).
도 12는 제1 스위치 유닛의 구성도.
도 13은 제1 PCI-Express 스위치의 구성도.
도 14는 BMC의 구성도.
도 15는 제2 스위치 유닛의 구성도.
도 16은 제2 PCI-Express 스위치의 구성도.
도 17은 프로그램 및 데이터의 제공 방법을 도시한 도면.
도 18은 PCI 버스를 이용한 컴퓨터 시스템을 도시한 도면.
도 19는 PCI-Express 버스를 이용한 컴퓨터 시스템을 도시한 도면.
도 20은 복수의 CPU 노드로 이루어지는 컴퓨터 시스템을 도시한 도면.
<도면의 주요부분에 대한 부호의 설명>
11, 212-0, 212-1, 212-2, 212-3: CPU
12, 213-0, 213-1, 213-2, 213-3: 메모리 컨트롤러
13-1, 13-2, 13-3, 13-4, 214-0, 214-1, 214-2, 214-3: 메모리
14: I/O컨트롤러
15-1, 15-2, 15-3, 15-4, 16-1, 16-2, 16-3, 16-4: 슬롯
21-1, 21-2, 21-3, 21-4, 21-5, 21-6, 21-7, 21-8: CPU 노드
22, 221-0, 221-1, 1101, 1401: 스위치
101: 스위치 수단
102: 제어 수단
103-0 ~ 103-n: 처리 노드
104-0 ~ 104-n: 포트
201-0, 201-1, 201-2, 201-3: CPU 유닛
202-0, 202-1: 스위치 유닛
203-0, 203-1, 203-2, 203-3: 디스크 어레이
204-0, 204-1, 204-2, 204-3: 호스트 컴퓨터
211-0, 211-1, 211-2, 211-3: DMA 컨트롤러
215-0, 215-1, 215-2, 215-3: 호스트 인터페이스
216-0, 216-1, 216-2, 216-3: 디스크 인터페이스
217-0, 217-1, 217-2, 217-3, 222-0, 222-1, 1102: BMC
501, 503: 리미트 어드레스 레지스터
502, 504: 베이스 어드레스 레지스터
701: 백 패널
702-0, 702-1, 702-2, 702-3: 신호선
703-0, 703-1: 저항
1201: 크로스바 스위치
1202: I2C 제어부
1203-0, 1203-1, 1203-2, 1203-3: SERDES부
1204-0, 1204-1, 1204-2, 1204-3: PCI-Express 프로토콜 제어부
1205-0, 1205-1, 1205-2, 1205-3: 선택 회로
1206-0, 1206-1, 1206-2, 1206-3: 업스트림 포트용 레지스터 세트
1207-0, 1207-1, 1207-2, 1207-3: 다운스트림 포트용 레지스터 세트
1301: MPU
1302-0, 1302-1: Ether-PHY 회로
1303: 온도·전압 감시 소자
1304: SDRAM
1305: 플래시 메모리
1306: PLD
1307: CPU 버스
1308: 레지스터 세트
1402-0, 1402-1, 1402-2, 1402-3: OR 회로
1403-0, 1403-1, 1403-2, 1403-3: EEPROM
1501: EEPROM 제어부
1601: 외부 장치
1602: 디스크 어레이 장치
1603: 휴대용 기록 매체
본 발명은 복수의 CPU(중앙 처리 장치) 노드로 구성되는 컴퓨터 시스템 노드 사이를 시리얼 버스에 의해 상호 접속하는 장치 및 방법에 관한 것이다. 보다 구체적으로는 고속 시리얼 버스인 PCI-Express 버스에 의해 복수의 CPU 노드가 상호 접속된 구성의 컴퓨터 시스템에 있어서, 상호 접속에 이용되는 PCI-Express 스위치와 그 제어 장치에 관한 것이다.
최근, 데이터 전자화의 진전에 따라, 컴퓨터 시스템이 처리해야 하는 데이터 의 양이 급격히 계속 증대하고 있다. 이 요구에 대응하기 위해, 컴퓨터 시스템 내부를 접속하는 상호 접속 기술도, 고속이면서 대용량의 데이터 전송을 할 수 있도록 계속하여 진보하고 있다.
종래는 PCI(Peripheral Component Interconnect) 버스가 컴퓨터 시스템 내부의 상호 접속 기능으로서 널리 이용되어 왔지만, 고속이며 또한 대용량이면서 실장 비용이 낮은 시리얼 타입의 상호 접속 기능이 가까운 장래에, 주류가 될 것으로 생각되고 있다. 특히, PCI 버스의 후계로서 PCI-SIG(Special Interest Group)에 의해 책정된 시리얼 타입의 상호 접속 기능인 PCI-Express 버스는 데스크톱 PC(Personal Computer)에서 대규모 서버나 스토리지 장치까지, 여러 가지 타입의 컴퓨터 시스템에서 널리 이용될 것이 기대되고 있다.
도 18은 종래의 PCI 버스를 이용한 컴퓨터 시스템을 나타내고 있다. 도 18의 컴퓨터 시스템은 CPU(11), 메모리 컨트롤러(MCH)(12), 복수의 메모리(13-1 ~ 13-4) 및 I/O 컨트롤러(ICH)(14)로 구성된다. I/O 컨트롤러(14)는 복수의 PCI 버스를 갖고, PCI 슬롯(15-1 ~ 15-4)에는 PCI 디바이스가 탑재된 카드를 실장할 수 있다. PCI 버스의 동작 주파수는 33 ~ 133 MHz이며, 버스 폭은 32 비트와 64 비트 2 종류가 있다. 슬롯당 버스의 밴드 폭은 최대로 양방향의 합계가 1 GB/s가 된다.
도 19는 도 18의 PCI 버스가 PCI-Express 버스로 치환된 예를 나타내고 있다. 도 19의 컴퓨터 시스템은 CPU(11), 메모리 컨트롤러(12) 및 메모리(13-1 ~ 13-4)로 구성된다. 메모리 컨트롤러(12)는 복수의 PCI-Express 버스를 갖고, PCI-Express 슬롯(16-1 ~ 16-4)에는 PCI-Express 디바이스가 탑재된 카드를 실장할 수 있다. 슬롯당 밴드 폭은 한쪽 방향 당 1 GB/s가 된다.
시리얼 버스인 PCI-Express 버스는 패러럴 버스인 PCI 버스에 비해 신호수가 적기 때문에, 하드웨어의 비용을 삭감하는 효과가 있다. 예컨대, 칩세트를 삭감할 수 있고, 보드상의 와이어를 삭감할 수 있으며 커넥터를 작게 할 수 있다. 또한, 동시에 PCI 버스의 2배 이상의 밴드 폭을 제공할 수 있기 때문에, 고속이면서 고성능화의 요구를 만족시킬 수 있다.
또한, 복수의 컴퓨터와 복수의 주변 디바이스로 이루어지는 시스템에 있어서, 각 컴퓨터가 사용하는 주변 디바이스를 임의로 선택하는 허브 박스도 알려져 있다(예컨대, 특허 문헌 1 참조).
[특허 문헌 1] 일본 특허 공개 2001-229119호 공보
전술한 바와 같이, PCI-Express 버스는 고성능이면서 저비용의 상호 접속 기능으로서 넓은 분야에서의 적용이 기대되고 있지만, PCI-Express 버스는 논리적으로는 PCI 버스의 아키텍쳐를 답습하고 있기 때문에, 복수의 CPU 노드를 접속할 목적으로 사용할 경우에 다음과 같은 문제가 발생한다.
도 20은 도 19와 같은 구성을 갖는 CPU 노드(21-1 ~ 21-8)를 복수의 포트를 갖는 PCI-Express 스위치(22)로 접속한 가상적인 컴퓨터 시스템을 나타내고 있다. PCI-Express 버스 규격에서는 스위치(22) 중 하나인 포트는 업스트림 포트라고 불리고, 시스템 전체의 초기화를 행하는 등 특별한 역할을 다한다. 따라서, 스위치(22)의 업스트림 포트로 접속된 특정한 CPU 노드가 특권적인 지위를 차지하고, 이 CPU 노드가 없으면 스위치(22)는 동작할 수 없다.
한편, 복수의 CPU 노드로 구성되는 서버나 스토리지 장치에서는 제품의 유연성을 높이기 위해, 각 CPU 노드는 제품 구성에 따라 증감 가능한 유닛으로 취급되는 경우가 있다. 이 경우, 특정한 CPU 노드가 없으면 PCI-Express 스위치가 동작할 수 없으며, 결과적으로 시스템이 동작할 수 없게 되는 사태는 피해야 한다.
본 발명의 과제는 PCI-Express 버스와 같은 시리얼 버스에 의해 복수의 CPU 노드를 상호 접속한 컴퓨터 시스템에 있어서, CPU 노드 증감 등의 요인에 따라 구성이 변화된 경우에도 시스템 동작을 가능하게 하는 것이다.
도 1은 본 발명의 상호 접속 장치의 원리도이다. 도 1의 상호 접속 장치는 스위치 수단(101) 및 제어 수단(102)을 구비하고, 복수의 처리 노드(103-0 ~ 103-n)를 시리얼 버스에 의해 상호 접속한다.
스위치 수단(101)은 처리 노드(103-0 ~ 103-n)에 접속되는 복수의 포트(104-0 ~ 104-n)를 갖고, 이들 포트 중 하나를 업스트림 포트로 설정하고, 다른 포트를 다운스트림 포트로 설정하여 포트 사이에서 데이터 전송 경로의 전환을 행한다.
제어 수단(102)은 스위치 수단(101)인 각 포트의 링크가 확립되기 전에 처리 노드(103-0 ~ 103-n) 각각이 실장되어 있는지 여부를 확인하고, 스위치 수단(101)인 포트(104-0 ~ 104-n) 중 실장되어 있는 처리 노드 중 하나가 접속되어 있는 포트를 업스트림 포트로 설정하고, 다른 포트를 다운스트림 포트로 설정하도록 스위치 수단(101)을 제어한다.
제어 수단(102)은 스위치 수단(101)의 링크가 확립되어 전환 동작이 가능해지기 전에, 처리 노드(103-0 ~ 103-n)가 실장되어 있는지 여부, 즉, 시스템내에 존재하는지 여부를 확인한다. 그리고, 처리 노드의 존재가 확인된 포트 중에서 업스트림 포트로 설정해야 하는 포트를 선택하고, 그 포트가 업스트림 포트로서 동작하고, 나머지 포트가 다운스트림 포트로서 동작하도록 스위치 수단(101)을 제어한다.
상호 접속 장치는 예컨대, 후술하는 도 2의 스위치 유닛(202-0 또는 202-1)에 대응하고, 처리 노드(103-0 ~ 103-n)는 예컨대, 도 2의 CPU 유닛(201-0 ~ 201-3)에 대응한다. 또한, 스위치 수단(101)은 예컨대, 도 2의 PCI-Express 스위치(221-0 또는 221-1)에 대응하고, 제어 수단(102)은 예컨대, 도 2의 BMC(222-0 또는 222-1)에 대응한다.
이하, 도면을 참조하면서, 본 발명을 실시하기 위한 바람직한 형태를 상세히 설명한다.
본 실시 형태에서는 복수의 CPU 노드가 PCI-Express 스위치로 접속되는 시스템을 상정한다. 그리고, 각 CPU 노드의 프린트 기판 유닛(CPU 유닛) 및 PCI-Express 스위치의 프린트 기판 유닛(스위치 유닛)에 기판 관리 컨트롤러(Board Management Controller, BMC)를 탑재한다.
BMC는 프로세서와 BMC 사이의 통신 기능을 갖는 자율적으로 동작 가능한 모 듈이며, 각 프린트 기판 유닛의 리셋이나 각종 감시 제어를 행한다. 스위치 유닛에 탑재되는 BMC는 PCI-Express 스위치의 업스트림 포트를 전환하여, 구성을 행하는 기능과, 어떤 CPU 유닛이 실장되어 있는지 여부를 확인하는 기능과, PCI-Express 스위치의 각 포트 링크가 확립되었는지 여부를 확인하는 기능을 갖는다.
CPU 유닛상에는 PCI-Express 스위치와의 접속부에 어드레스 변환 모듈이 탑재된다.
CPU 유닛과 스위치 유닛상의 각 BMC는 상호 통신을 행하고, 전원 투입 후에 동작 가능한 CPU 유닛을 업스트림 포트의 디바이스로서 선택하도록 스위치의 업스트림 포트의 전환과 구성을 행하고, CPU 유닛의 어드레스 변환 모듈의 설정을 행한다. 이에 따라, 시스템을 구성하는 CPU 유닛의 수가 변화된 경우에도 반드시 업스트림 포트의 CPU 유닛이 할당되기 때문에, 시스템이 동작 가능해진다.
도 2는 실시 형태의 컴퓨터 시스템의 구성도이다. 여기서는, 일례로서 디스크 어레이 장치가 도시되어 있지만, 본 발명의 적용 분야는 이것에 한정되는 것이 아니다. 도 2의 디스크 어레이 장치는 4개의 CPU 유닛(201-0 ~ 201-3), 2개의 스위치 유닛(202-0, 202-1) 및 4개의 디스크 어레이(203-0 ~ 203-3)로 구성되고, CPU 유닛(201-0 ~ 201-3)과 스위치 유닛(202-0 및 202-1) 사이는 PCI-Express 버스로 접속되어 있다. 각 디스크 어레이는 복수의 디스크 장치로 구성된다.
CPU 유닛(201-i)(i=0, 1, 2, 3)은 직접 메모리 액세스(Direct Memory Access, DMA) 컨트롤러(211-i), CPU(212-i), 메모리 컨트롤러(213-i), 메모리(214-i), 호스트 인터페이스(HI)(215-i), 디스크 인터페이스(DI)(216-i) 및 BMC(217-i)를 구비한다.
메모리 컨트롤러(213-i)는 CPU(212-i)의 제어에 따라 DMA 컨트롤러(211-i)와 메모리(214-i) 사이의 데이터 전송 및 메모리(214-i)와 호스트 인터페이스(215-i) 또는 디스크 인터페이스(216-i) 사이의 데이터 전송을 행한다.
호스트 인터페이스(215-i) 및 디스크 인터페이스(216-i)는 각각 복수의 포트를 갖는다. 호스트 인터페이스(215-i)는 외부의 호스트 컴퓨터(204-i)와 통신하고, 디스크 인터페이스(216-i)는 디스크 어레이(203-0 ~ 203-3)로의 판독(read)/기록(write) 액세스를 실행한다.
호스트 인터페이스(215-i)에서는 접속되는 호스트 컴퓨터(204-i)의 종류와 데이터 전송 용도에 따라 파이버 채널, iSCSI(Internet Small Computer Systems Interface), ESCON(Enterprise System Connection) 등의 여러 가지 프로토콜이 사용된다. 디스크 인터페이스(216-i)에서는 디스크 어레이로서 이용되는 디스크 장치의 종류에 따라 파이버 채널이나 시리얼 ATA(AT Attachment) 등의 프로토콜이 사용된다.
스위치 유닛(202-j)(j=0, 1)은 PCI-Express 스위치(221-j) 및 BMC(222-j)를 구비한다. 스위치(221-j)는 DMA 컨트롤러(211-0 ~ 211-3)와 PCI-Express 버스로 접속되어 있으며, 포트를 전환함으로써 임의의 CPU 유닛 사이에서의 데이터 전송을 실현한다.
BMC(217-0 ~ 217-3, 222-0 및 222-1)는 상호 독자 통신 채널에 의해 접속되어 있다. 이 예에는 100Base-TX의 Ethernet(등록 상표)에 의해 BMC 사이가 접속되어 통신이 행해진다.
또한, 도 2의 구성에서는 4개의 CPU 유닛을 설치하고 있지만, CPU 유닛의 수가 증감하여도 같은 동작이 가능하다. 또한, 시스템의 용장화(redundancy) 및 고성 능화를 위해 2개의 스위치 유닛을 설치하고 있지만, 하나의 스위치 유닛만으로도 임의의 CPU 유닛 사이에서 데이터 전송을 행하는 것이 가능하다. 이하의 설명에서는 주로 스위치 유닛(202-0)의 동작에 대해서 서술하지만, 스위치 유닛(202-1)의 동작도 이것과 마찬가지이다.
각 CPU 유닛(201-i)은 호스트 컴퓨터(204-i)에서 수신한 기록 요구에 따라 사용자 데이터를 디스크 어레이(203-0 ~ 203-3)로 기록하거나, 호스트 컴퓨터(204-i)에서 수신한 판독 요구에 따라 사용자 데이터를 디스크 어레이(203-0~203-3)로부터 독출한다.
그 때, CPU 유닛(201-i)은 호스트 컴퓨터(204-i)에 대하여, 디스크 캐시로서의 역할을 다한다. 즉, 호스트 컴퓨터(204-i)에서 수신한 사용자 데이터를 바로 디스크 장치에 기록하지 않고 메모리(214-i)에 저장해 두고, 판독 요구를 수신하면 디스크 장치에서 데이터를 독출하지 않고, 메모리(214-i)에서 데이터를 독출하여 응답함으로써, 호스트 컴퓨터(204-i)로부터 본 응답 속도를 고속화하고 있다.
이와 같이, 디스크 장치에 보존해야 하는 데이터를 메모리(214-i)상에 캐쉬해 둠으로써 응답 속도를 고속화할 수 있지만, 메모리(214-i)는 디스크 장치에 비하면, 신뢰성의 면에서 한참 뒤떨어지는 기억 장치이다. 아직, 메모리(214-i)의 휘발성 때문에, 전원 고장시 등에는 데이터가 사라져 버릴 위험성이 있다.
이러한 리스크를 회피하기 위해, 디스크 어레이 장치내에서는 캐쉬 데이터의 미러링(mirroring)이 행해진다. 하나의 CPU 유닛(201-m)(마스터라고 부름)이 수신한 사용자 데이터는 그 CPU 유닛(201-m)내의 메모리(214-m)에 저장될 뿐만 아니라, 별도의 CPU 유닛(201-n)(슬레이브라고 부름)의 메모리(214-n)에도 복사하여 저장해 둠으로써 마스터 메모리(214-m)내의 데이터가 소실된 경우에도 슬레이브 메모리(214-n)내의 데이터를 사용하여 호스트 컴퓨터(204-m)로부터의 요구에 대답할 수 있도록 되어 있다.
CPU 유닛(201-m)은 다른 CPU 유닛(201-n)의 메모리(214-n)에 대하여 데이터를 복사할 때에, DMA 컨트롤러(211-m)를 사용하여 패킷화한 데이터를 스위치 유닛(202-0) 경유로 전송한다. DMA 컨트롤러(211-m)는 데이터를 전송할 때에 데이터와 어드레스를 하나의 패킷으로서 송출하지만, 이 어드레스에는 상대측 CPU 유닛(201-n)내의 메모리 어드레스와 스위치 유닛(202-0)내에서의 라우팅 어드레스가 포함되어 있다.
여기서, CPU 유닛(201-1)이 CPU 유닛(201-3)의 메모리(214-3)에 데이터를 기록할 경우를 예로 들고, 도 3을 참조하면서 DMA 컨트롤러(211-1)가 취급하는 2개의 어드레스에 대해서 설명한다.
각 CPU 유닛내의 메모리 어드레스는 예컨대, 40 비트로 지정된다. 40 비트로 지정 가능한 어드레스는 1 TB이며, 가까운 장래에 이 용량 이상의 메모리가 서포트 될 일은 없을 것으로 생각된다.
스위치(221-0)는 64 비트의 어드레스를 취급할 수 있고, 그 상위 2 비트에 해당하는 어드레스[63:62]로, 수신 패킷의 전송 목적지 어드레스를 결정하도록 구성되어 있다. 어드레스[63:62]가 ‘00’이면 패킷은 CPU 유닛(201-0)에, ‘01’이면 CPU 유닛(201-1)에, ‘10’이면 CPU 유닛(201-2)에, ‘11’이면 CPU 유닛(201- 3)에 전송된다.
CPU 유닛(201-1)의 DMA 컨트롤러(211-1)는 CPU 유닛(201-3)의 메모리(214-3) 어드레스 ‘0 x 12_3456_7800’ 에 데이터를 기록할 경우, 패킷에 부가하는 어드레스로서 ‘0 x C000_0012_3456_7800’을 지정한다. 스위치(221-0)는 이 패킷 어드레스의 상위 2 비트를 라우팅 정보로서 사용하고, CPU 유닛(201-3)에 패킷을 전송한다.
CPU 유닛(201-3)의 DMA 컨트롤러(211-3)는 패킷을 수신하면, 어드레스의 하위 40 비트에 해당하는 ‘0 x 12_3456_7800’만을 잘라내어 메모리 컨트롤러(213-3)에 전송한다.
도 4는 각 CPU 유닛의 DMA 컨트롤러로부터 본 어드레스 맵을 도시하고 있다. 상위 2 비트가 라우팅 어드레스로서 사용되기 때문에, 이하와 같은 어드레스 범위와 전송 목적지 CPU 유닛의 조합이 DMA 컨트롤러내에 설정된다.
0 x 0000_0000_0000_0000
~ 0 x 3FFF_FFFF_FFFF_FFFF: CPU 유닛(201-0)
0 x 4000_0000_0000_0000
~ 0 x 7FFF_FFFF_FFFF_FFFF: CPU 유닛(201-1)
0 x 8000_0000_0000_0000
~ 0 x BFFF_FFFF_FFFF_FFFF: CPU 유닛(201-2)
0 x C000_0000_0000_0000
~ 0 x FFFF_FFFF_FFFF_FFFF: CPU 유닛(201-3)
시스템에 전원이 투입되면 각 유닛의 BMC가 동작을 시작하고, 서로 동기를 취하여 유닛의 리셋을 해제한다. 이 때, 스위치 유닛(202-0)의 BMC(222-0)는 스위치(221-0)의 업스트림 포트를 선택하고 나서 스위치(221-0)의 리셋 해제를 행한다. 초기 상태에서는 예컨대, CPU 유닛(201-0)에 접속되는 포트가 업스트림 포트로서 선택된다.
CPU 유닛(201-0)이 정상적으로 동작하면, 스위치(221-0)와 CPU 유닛(201-0) 사이의 PCI-Express 링크에 대하여 자동적으로 초기화 시퀀스가 행해지고, 링크가 확립되어 동작 가능한 상태가 된다. 계속해서, 스위치(221-0)의 업스트림 이외의 포트에 대해서도 초기화 시퀀스가 행해지고 링크가 확립되어, 시스템 전체로서 동작 가능한 상태가 된다.
만약, CPU 유닛(201-0)이 존재하지 않거나 정상적으로 동작하지 않은 경우는 스위치(221-0)와 CPU 유닛(201-0) 사이의 PCI-Express 링크는 확립되지 않고, 스위치(221-0) 나머지의 포트도 초기화 시퀀스를 시작할 수 없으며, 시스템 전체가 동작할 수 없게 되어 버린다.
그래서, 스위치 유닛(202-0)인 BMC(222-0)는 CPU 유닛(201-0 ~ 201-3)의 실장 상황을 확인하고, 실장되어 있는 CPU 유닛 중 하나를 업스트림 포트로서 선택한다.
또한, 리셋을 해제한 후, 스위치(221-0)의 링크가 확립되었는지 여부를 감시하고, 일정 시간을 경과하여도 링크가 확립되지 않는 경우는 별도의 포트를 업스트림 포트로서 선택하여 스위치(221-0)를 리셋한다. 새롭게 업스트림 디바이스로서 선택된 CPU 유닛이 정상적으로 동작하지 않으면, 또 다음 포트를 선택하고, 계속하여 업스트림 포트를 변경하여, 동작 가능한 CPU 유닛이 발견될 때까지 동일한 순서를 반복한다.
그러나, 이러한 순서로 업스트림 포트를 변경하면, PCI-Express 스위치의 규격에 따르는 한, 필연적으로 스위치(221-0)의 어드레스 맵이 변화되어 버린다. 그 이유를 도 5를 참조하면서 설명한다.
PCI-Express 스위치의 규격에서는 구성 레지스터로서 "Prefetchable memory base address register"(이하에서는 베이스 어드레스 레지스터라고 표기함)와 "Prefetchable memory limit address register"(이하에서는 리미트 어드레스 레지스터라고 표기함)라고 하는 2개의 레지스터가 있으며, 이들에 의해 각 포트의 어드레스 범위를 지정할 수 있다. 그런데, 업스트림 포트와 그것 이외의 포트(다운스트림 포트)에서는 이들 레지스터가 유지하는 어드레스의 의미가 다르다.
다운스트림 포트에서는, 리미트 어드레스 레지스터(503)와 베이스 어드레스 레지스터(504) 2개의 값 사이에 속한 범위의 어드레스를 갖는 패킷은 그 포트로 라우트된다. 이에 대하여, 업스트림 포트에서는, 리미트 어드레스 레지스터(501)와 베이스 어드레스 레지스터(502) 2개의 값 사이에 속한 범위의 어드레스를 갖는 패킷은 그 포트로 라우트되지 않고, 그것 이외의 어드레스를 갖은 패킷이 그 포트로 라우트된다.
이 때문에, 업스트림 포트로 라우트되는 어드레스 범위로서 지정할 수 있는 것은 어드레스 맵 전체의 가장 위 또는 가장 아래의 어드레스를 포함하는 범위만으 로서, 중간 범위만을 지정할 수 없다는 것을 알 수 있다. 예컨대, 도 4의 어드레스 맵에서는 「CPU 유닛(201-1)에 라우트되는 범위」를 업스트림 포트에 대하여 설정할 수 없다.
따라서, 스위치(221-0)의 어드레스 맵을 도 5에 도시한 바와 같이 항상 고정해둘 수 없기 때문에, 도 6에 도시한 바와 같이, 선택된 업스트림 포트에 따라 4 종류의 어드레스 맵을 구분하여 사용할 필요가 있다. 도 6의 예에서는 어드레스 맵의 가장 아래인 ‘0 x 0000_0000_0000_0000’~‘0 x 3FFF_FFFF_FFFF_FFFF’의 범위가 업스트림 포트로 할당되고 있다.
이 구분하여 사용하는 것은 각 CPU 유닛(201-i)의 DMA 컨트롤러(211-i)가 패킷을 작성할 때에 지정하는 어드레스의 설정을 변경함으로써 행해진다. DMA 컨트롤러(211-i)에 대한 어드레스 설정 변경 지시는 CPU 유닛(201-i)의 BMC(217-i)가 행한다.
도 7은 CPU 유닛(201-0 ~ 201-3)과 스위치 유닛(202-0 및 202-1)을 접속하는 백 패널을 도시하고 있다. 스위치 유닛(202-j)인 BMC(222-j)에는 각 CPU 유닛(201-i)이 존재하는지 여부를 검출하기 위한 신호선(702-i)이 백 패널(701)을 통해 접속되어 있다. 이 신호선(702-i)은 스위치 유닛(202-j)내에서는 저항(703-j)을 통해 일정 전압 VDD에 풀업되어 있으며, 한편, CPU 유닛(201-i)내에서는 그라운드 레벨에 접속되어 있다.
따라서, BMC(222-j)는 신호선(702-i)상의 신호가 “L” 레벨인지 “H” 레벨인지를 체크함으로써, 대응하는 CPU 유닛(201-i)이 실장되어 있는지 여부를 확인할 수 있다. 도 7의 예에서는 CPU 유닛(201-0 ~ 201-2)은 실장되어 있기 때문에 신호선(702-0 ~ 702-2)의 신호는 “L”이 되며, CPU 유닛(201-3)은 실장되어 있지 않기 때문에 신호선(702-3)의 신호는 “H”가 된다.
도 8은 각 CPU 유닛(201-i)과 스위치 유닛(202-0)의 전원 투입시에 있어서의 BMC(217-i 및 222-0)의 동작 시퀀스를 도시하고 있다. 이 경우, BMC(217-i 및 222-0)는 이하의 순서로 동작한다.
1. 시스템에 전원이 투입되고, CPU(212-i) 및 스위치(221-0)가 리셋된다.
2. 각 유닛 BMC(217-i 및 222-0)가 기동한다. BMC(222-0)는 CPU 유닛(201-0 ~ 201-3)이 실장되어 있는 것을 확인한다.
3. BMC(222-0)가 CPU 유닛(201-0)을 스위치(221-0)의 업스트림 포트로 설정한다.
4. BMC(217-i)와 BMC(222-0) 사이에서 동기를 취하고, CPU(212-i) 및 스위치(221-0)의 리셋을 해제한다.
5. BMC(222-0)가 스위치(221-0)의 링크 상태를 감시하고, 링크가 확립되면, CPU 유닛(201-0)이 업스트림 포트로 설정된 것을 BMC(217-i)에 대하여 통지한다.
6. BMC(217-i)는 BMC(222-0)로부터의 통지를 수신하면, CPU 유닛(201-0)을 업스트림 포트로서 DMA 컨트롤러(211-i)의 설정을 행한다.
7. BMC(217-i)가 CPU(212-i)를 기동하고, 이에 따라 CPU 유닛(201-i)이 기동한다.
상기 5에 있어서, 링크가 확립하지 않고 타임-아웃을 검출한 경우, BMC(222- 0)는 스위치(221-0)를 리셋하고, 업스트림 포트를 CPU 유닛(201-1)에 설정하여 리셋을 해제한다. 그 후, CPU 유닛(201-0)을 CPU 유닛(201-1)에 대체하여, 상기 5 이후의 동작이 행해진다. 또한, 타임-아웃이 검출된 경우는 BMC(222-0)가 업스트림 포트를 CPU 유닛(201-2, 201-3)에 순차 변경하여 같은 동작을 행한다.
또한, 상기 2에 있어서 어느 하나의 CPU 유닛이 실장되어 있지 않은 경우는 상기 3 이후에서는 그 다음 CPU 유닛이 선택된다.
도 9는 각 CPU 유닛(201-i)의 BMC(217-i) 동작을 도시하는 흐름도이다. 시스템에 전원이 투입되면 CPU(212-i)가 리셋되고(단계 801), BMC(217-i)는 부팅 동작에 의해 프로그램 로드 등을 행한다(단계 802). 그리고, 부팅 동작이 종료하면, 스위치(221-0)의 BMC(222-0)에 일정 간격으로 부팅 종료 통지를 송신하고(단계 803), BMC(222-0)로부터 부팅 종료 통지를 수신했는지 여부를 체크한다(단계 804).
BMC(217-i)는 부팅 종료 통지를 수신하고 있지 않으면 단계(804)의 동작을 반복하고, 부팅 종료 통지를 수신하면, 엇갈림을 방지하기 위해 또 한번 부팅 종료 통지를 송신한다(단계 805). 다음에, CPU(212-i)의 리셋을 해제하고(단계 806), BMC(222-0)로부터 링크업 완료 통지를 수신했는지 여부를 체크한다(단계 807).
링크업 완료 통지를 수신하고 있지 않으면 단계(807)의 동작을 반복하고, 링크업 완료 통지를 수신하면, 그 통지에 포함되는 업스트림 포트의 설정 정보에 따라, 그 중 어느 하나의 CPU 유닛을 업스트림 포트로서 DMA 컨트롤러(211-i)의 어드레스 맵을 설정하고, CPU(212-i)를 기동한다(단계 808).
도 10 및 11은 스위치 유닛(202-0)의 BMC(222-0) 동작을 도시하는 흐름도이 다. 시스템에 전원이 투입되면 스위치(221-0)가 리셋되고(도 10의 단계 901), BMC(222-0)는 부팅 동작을 행한다(단계 902). 그리고, 부팅 동작이 종료하면, 도 7에 도시한 방법에 따라 CPU 유닛(201-0 ~ 201-3) 중 어느 것이 실장되어 있는지를 확인한다(단계 903).
다음에, 실장되어 있는 각 CPU 유닛(201-i)의 BMC(217-i)에 일정 간격으로 부팅 종료 통지를 송신하고(단계 904), BMC(217-i)로부터 부팅 종료 통지를 수신했는지 여부를 체크한다(단계 905).
BMC(222-0)는 실장되어 있는 것 중 어느 하나의 CPU 유닛으로부터 부팅 종료통지를 수신하고 있지 않으면, 단계(905)의 동작을 반복하고, 모든 CPU 유닛으로부터 부팅 종료 통지를 수신하면, 엇갈림을 방지하기 위해, 한번 더 부팅 종료 통지를 송신한다(단계 906).
다음에, CPU 유닛(201-0)이 실장되어 있는지 여부를 체크하고(단계 907), 그것이 실장되어 있으면, CPU 유닛(201-0)을 스위치(221-0)의 업스트림 포트로 설정한다(단계 908). 구체적으로는 도 6의 좌측단의 어드레스 맵이 실현되도록 스위치(221-0) 각 포트의 리미트 어드레스 레지스터 및 베이스 어드레스 레지스터에 이하와 같은 어드레스가 설정된다.
(1) CPU 유닛(201-0)에 접속된 포트
- 리미트 어드레스 레지스터: 0 x FFFF_FFFF_FFFF_FFFF
- 베이스 어드레스 레지스터: 0 x 4000_0000_0000_0000
(2) CPU 유닛(201-1)에 접속된 포트
- 리미트 어드레스 레지스터: 0 x 7FFF_FFFF_FFFF_FFFF
- 베이스 어드레스 레지스터: 0 x 4000_0000_0000_0000
(3) CPU 유닛(201-2)에 접속된 포트
- 리미트 어드레스 레지스터: 0 x BFFF_FFFF_FFFF_FFFF
- 베이스 어드레스 레지스터: 0 x 8000_0000_0000_0000
(4) CPU 유닛(201-3)에 접속된 포트
- 리미트 어드레스 레지스터: 0 x FFFF_FFFF_FFFF_FFFF
- 베이스 어드레스 레지스터: 0 x C000_0000_0000_0000
단계(907)에 있어서 CPU 유닛(201-0)이 실장되어 있지 않으면, 별도의 CPU 유닛을 업스트림 포트로 설정하기 위해 단계(912) 이후의 동작을 행한다.
다음에, BMC(222-0)는 스위치(221-0)의 리셋을 해제하고(단계 909), 스위치(221-0)의 링크업을 검출했는지 여부를 체크한다(단계 910).
링크업이 검출되지 않으면, 다음에, 타임-아웃을 검출했는지 여부를 체크한다(단계 911). 링크업이 검출되지 않고, 타임-아웃도 검출되지 않으면, 단계(910) 이후의 동작을 반복하고, 링크업이 검출되면, 링크업 완료 통지를 각 CPU 유닛(201-i)의 BMC(217-i)에 송신한다(도 11의 단계 931). 이 링크업 완료 통지에는 업스트림 포트로 설정된 CPU 유닛을 도시하는 정보가 포함된다.
한편, 링크업이 검출되지 않고, 타임-아웃이 검출된 경우는 CPU 유닛(201-1)이 실장되어 있는지 여부를 체크한다(단계 912). 그것이 실장되어 있으면, 스위치(221-0)를 리셋하고(단계 913), CPU 유닛(201-1)을 스위치(221-0)의 업스트림 포트 로 설정한다(단계 914). 구체적으로는 도 6의 좌측으로부터 2번째의 어드레스 맵이 실현되도록 스위치(221-0) 각 포트의 리미트 어드레스 레지스터 및 베이스 어드레스 레지스터에 이하와 같은 어드레스가 설정된다.
(1) CPU 유닛(201-0)에 접속된 포트
- 리미트 어드레스 레지스터: 0 x FFFF_FFFF_FFFF_FFFF
- 베이스 어드레스 레지스터: 0 x C000_0000_0000_0000
(2) CPU 유닛(201-1)에 접속된 포트
- 리미트 어드레스 레지스터: 0 x FFFF_FFFF_FFFF_FFFF
- 베이스 어드레스 레지스터: 0 x 4000_0000_0000_0000
(3) CPU 유닛(201-2)에 접속된 포트
- 리미트 어드레스 레지스터: 0 x 7FFF_FFFF_FFFF_FFFF
- 베이스 어드레스 레지스터: 0 x 4000_0000_0000_0000
(4) CPU 유닛(201-3)에 접속된 포트
- 리미트 어드레스 레지스터: 0 x BFFF_FFFF_FFFF_FFFF
- 베이스 어드레스 레지스터: 0 x 8000_0000_0000_0000
단계(912)에 있어서 CPU 유닛(201-1)이 실장되어 있지 않으면, 별도의 CPU 유닛을 업스트림 포트로 설정하기 위해 도 11의 단계(918) 이후의 동작을 행한다.
다음에, BMC(222-0)는 단계(909~911)과 같은 동작을 행한다(단계 915~917).
그리고, 단계(917)에 있어서 타임-아웃이 검출되면, CPU 유닛(201-2)이 실장되어 있는지 여부를 체크한다(도 11의 단계 918). 그것이 실장되어 있으면, 스위치 (221-0)를 리셋하고(단계 919), CPU 유닛(201-2)을 스위치(221-0)의 업스트림 포트로 설정한다(단계 920). 구체적으로는 도 6의 우측으로부터 2번째의 어드레스 맵이 실현되도록 스위치(221-0) 각 포트 리미트 어드레스 레지스터 및 베이스 어드레스 레지스터에 이하와 같은 어드레스가 설정된다.
(1) CPU 유닛(201-0)에 접속된 포트
- 리미트 어드레스 레지스터: 0 x BFFF_FFFF_FFFF_FFFF
- 베이스 어드레스 레지스터: 0 x 8000_0000_0000_0000
(2) CPU 유닛(201-1)에 접속된 포트
- 리미트 어드레스 레지스터: 0 x FFFF_FFFF_FFFF_FFFF
- 베이스 어드레스 레지스터: 0 x C000_0000_0000_0000
(3) CPU 유닛(201-2)에 접속된 포트
- 리미트 어드레스 레지스터: 0 x FFFF_FFFF_FFFF_FFFF
- 베이스 어드레스 레지스터: 0 x 4000_0000_0000_0000
(4) CPU 유닛(201-3)에 접속된 포트
- 리미트 어드레스 레지스터: 0 x 7FFF_FFFF_FFFF_FFFF
- 베이스 어드레스 레지스터: 0 x 4000_0000_0000_0000
단계(918)에 있어서 CPU 유닛(201-2)이 실장되어 있지 않으면, 별도의 CPU 유닛을 업스트림 포트로 설정하기 위해 도 11의 단계(924) 이후의 동작을 행한다.
다음에, BMC(222-0)는 단계(909~911)과 같은 동작을 행한다(단계 921~923).
그리고, 단계(923)에 있어서 타임-아웃이 검출되면, CPU 유닛(201-3)이 실장 되어있는지 여부를 체크한다(단계 924). 그것이 실장되어 있으면, 스위치(221-0)를 리셋하여(단계925), CPU 유닛(201-3)을 스위치(221-0)의 업스트림 포트로 설정한다(단계 926). 구체적으로는 도 6의 우측단의 어드레스 맵이 실현되도록 스위치(221-0) 각 포트의 리미트 어드레스 레지스터 및 베이스 어드레스 레지스터에 이하와 같은 어드레스가 설정된다.
(1) CPU 유닛(201-0)에 접속된 포트
- 리미트 어드레스 레지스터: 0 x 7FFF_FFFF_FFFF_FFFF
- 베이스 어드레스 레지스터: 0 x 4000_0000_0000_0000
(2) CPU 유닛(201-1)에 접속된 포트
- 리미트 어드레스 레지스터: 0 x BFFF_FFFF_FFFF_FFFF
- 베이스 어드레스 레지스터: 0 x 8000_0000_0000_0000
(3) CPU 유닛(201-2)에 접속된 포트
- 리미트 어드레스 레지스터: 0 x FFFF_FFFF_FFFF_FFFF
- 베이스 어드레스 레지스터: 0 x C000_0000_0000_0000
(4) CPU 유닛(201-3)에 접속된 포트
- 리미트 어드레스 레지스터: 0 x FFFF_FFFF_FFFF_FFFF
- 베이스 어드레스 레지스터: 0 x 4000_0000_0000_0000
다음에, BMC(222-0)는 단계(909~911)과 같은 동작을 행한다(단계 927~929).
단계(929)에 있어서 타임-아웃이 검출된 경우 및 단계(924)에 있어서 CPU 유닛(201-3)이 실장되어 있지 않은 경우는 시스템이 동작 불가능한 것을 사용자에게 통지한다(단계 930).
전술한 바와 같이, 본 발명을 실현하기 위해서는 PCI-Express 스위치의 업스트림 포트가 자유롭게 선택되어야 하지만, 이것은 PCI-Express 스위치의 규격 자체로 정의된 기능이 아니며, 선택 방법도 스위치 IC(Integrated Circuit)의 실장에 따라 다르다.
도 12는 스위치 유닛 중 하나의 구성예를 도시하고 있다. 도 12의 PCI-Express 스위치(1101)는 외부의 스트랩 핀(스트랩 포트) UPSTREAM_SEL_0 및 UPSTREAM_SEL_1에 의해 업스트림 포트의 선택이 가능하며, I2C 버스에 의해 내부의 레지스터를 설정할 수 있다. 그래서, BMC(1102)의 GPIO(General Purpose I/O)에 의해 업스트림 포트를 선택한 후, 리셋을 해제하여 I2C 버스로부터 스위치(1101)의 어드레스 맵을 설정하기 위해 적당한 레지스터의 설정을 행한다.
도 13은 도 12의 PCI-Express 스위치(1101)의 구성도이다. 스위치(1101) IC는 크로스바 스위치(1201), I2C 제어부(1202) 및 외부에 대한 4개의 PCI-Express 포트(#0 ~ #3)를 구비한다.
각 포트 #i(i= 0, 1, 2, 3)는 SERDES부(Serializer/De-serializer)(1203-i), PCI-Express 프로토콜 제어부(1204-i), 선택 회로(1205-i) 및 PCI-Express 스위치의 규격에 정해진 구성 레지스터 세트로 이루어진다.
SERDES부(1203-i)는 IC 외부에 접속되는 시리얼의 고속 신호와 IC 내부를 접속하는 패러럴 버스 신호 사이의 변환을 행하고, 프로토콜 제어부(1204-i)는 구성 레지스터 세트를 참조하면서, PCI-Express 스위치의 규격에 정해진 프로토콜 처리 를 행한다. 크로스바 스위치(1201)는 이들 4개의 포트 사이에서 데이터 전송 경로를 전환한다.
구성 레지스터는 업스트림 포트와 다운스트림 포트의 구성이 다르기 때문에 업스트림 포트용 레지스터 세트(1206-i)와 다운스트림 포트용 레지스터 세트(1207-i) 양쪽의 레지스터 세트가 설치된다. 레지스터 세트(1206-i 및 1207-i)는 함께, 리미트 어드레스 레지스터 및 베이스 어드레스 레지스터를 포함하고 있으며, 선택 회로(1205-i)는 이들 2 종류의 레지스터 세트를 배타적으로 선택한다.
실제로는 4개의 포트 중 하나만이 업스트림 포트가 되도록 그 포트의 선택회로는 업스트림 포트용 레지스터 세트(1206-i)를 선택하고, 다른 포트의 선택 회로는 다운스트림 포트용 레지스터 세트(1207-i)를 선택한다.
또한, 구성 레지스트는 통상, 업스트림인 PCI-Express 포트로부터 설정되지만, 본 실시 형태에서는 I2C 등의 인터페이스에 의해 BMC(1102)로 설정할 수 있게 되어 있는 것이 바람직하다. 이 경우, I2C 제어부(1202)는 외부의 I2C 마스터인 BMC(1102)로부터의 액세스 요구를 수신하고, 그 요구에 따라 구성 레지스터의 설정을 행한다.
이 때, BMC(1102)는 업스트림 포트로 설정되는 포트의 업스트림 포트용 레지스터 세트(1206-i)와 다운스트림 포트로 설정되는 포트의 다운스트림 포트용 레지스터 세트(1207-i)의 각각에, 전술한 바와 같은 리미트 어드레스 레지스터 및 베이스 어드레스 레지스터의 값을 기록한다.
BMC(1102)는 또한, 선택 회로(1205-0 ~ 1205-3)를 제어하여 레지스터 세트 (1206-i 또는 1207-i)를 선택시키기 위해 2개의 스트랩 핀 UPSTREAM_SEL_0 및 UPSTREAM_SEL_1에서 2진값(H 또는 L)의 제어 신호를 입력한다. 이 제어 신호는 예컨대, 이하와 같이 정의된다.
“LL”: 포트 #0을 업스트림 포트로 지정하고, 그 이외의 포트는 다운스트림 포트로 지정한다.
“LH”: 포트 #1을 업스트림 포트로 지정하고, 그 이외의 포트는 다운스트림 포트로 지정한다.
“HL”: 포트 #2를 업스트림 포트로 지정하고, 그 이외의 포트는 다운스트림 포트로 지정한다.
“HH”: 포트 #3을 업스트림 포트로 지정하고, 그 이외의 포트는 다운스트림 포트로 지정한다.
업스트림 포트의 선택 회로(1205-i)는 업스트림 포트용 레지스터 세트(1206-i)를 선택하고, 다운스트림 포트의 선택 회로(1205-i)는 다운스트림 포트용 레지스터 세트(1207-i)를 선택한다. 이에 따라, 스위치(1101)내에 있어서의 업스트림 포트 및 다운스트림 포트의 설정이 완료된다.
또한, BMC(1102)는 리셋 포트를 통해 크로스바 스위치(1201), I2C 제어부(1202), SERDES부(1203-i), PCI-Express 프로토콜 제어부(1204-i) 및 레지스터 세트(1206-i, 1207-i)에 제어 신호를 입력하고, 이들 요소의 리셋/리셋 해제를 행한다.
도 14는 BMC(1102)의 구성도이다. BMC(1102)는 MPU(Micro Processing Unit, )(1301), Ether-PHY(물리층) 회로(1302-0, 1302-1), 온도·전압 감시 소자(1303), SDRAM(Synchronous Dynamic Random Access Memory)(1304), 플래시 메모리(1305) 및 PLD(Programmable Logic Device)(1306)를 구비한다.
MPU(1301)는 내장용으로 개발된 프로세서이며, 복수의 Ethernet(등록 상표)포트, RS232C 포트, I2C 포트, CPU 버스(1307)를 갖는다. 하나의 Ethernet(등록 상표) 포트는 Ether-PHY 회로(1302-1)를 통해 다른 BMC에 접속된다. 또 한쪽의 Ethernet(등록 상표) 포트는 Ether-PHY 회로(1302-0)를 통해 퍼스널 컴퓨터 등에 접속되어, 디버그용 인터페이스로서 이용된다. 또한, RS232C 포트도 마찬가지로 퍼스널 컴퓨터 등에 접속되어, 디버그용에 이용된다.
I2C 포트는 온도·전압 감시 소자(1303)에 접속되어, 유닛내의 온도와 전원전압이 정상인지 여부를 감시한다. 또한, I2C 포트는 스위치(1101)에도 접속되어, 스위치(1101) 내부의 레지스터 설정에 이용된다.
CPU 버스(1307)에는 SDRAM(1304), 플래시 메모리(1305) 및 PLD(1306)가 접속된다. SDRAM(1304)은 BMC(1102)의 메인 메모리이며, 여기에 BMC 프로그램이 로드된다. 플래시 메모리(1305)는 프로그램을 저장하기 위한 비휘발성 메모리이다. MPU(1301)는 SDRAM(1304)에 로드된 프로그램을 실행함으로써, 필요한 처리를 행한다.
PLD(1306)는 레지스터 세트(1308)를 구비한다. MPU(1301)로부터 레지스터 세트(1308)의 내용이 설정되면, PLD(1306)는 GPIO 포트나 리셋 포트를 제어할 수 있다. PLD(1306)는 리셋 포트를 통해 스위치(1101)의 리셋/리셋 해제를 행하고, GPIO 포트를 통해 스위치(1101)의 업스트림 포트를 설정한다. 또한, GPIO 포트에는 도 7에 도시한 신호선(702-0 ~ 702-3)이 접속되어 있으며, PLD(1306)는 어떤 CPU 유닛이 실장되어 있는지를 검출하여 MPU(1301)에 통지한다.
GPIO 포트의 2개의 핀 GPIO_0 및 GPIO_1은 도 13의 스트랩 핀 UPSTREAM_SEL_ 0 및 UPSTREAM_SEL_1에 접속된다. MPU(1301)가 전술한 4와 같이 제어 신호 중 어느 하나를 레지스터 세트(1308)에 기록하면, PLD(1306)는 기록된 제어 신호를 GPIO 핀을 통해 스위치(1101)에 전송한다. 이에 따라, 제어 신호로 지정된 포트가 업스트림 포트로서 선택된다.
CPU 유닛(201-i)의 BMC(217-i)도 도 14의 BMC(1102)와 같은 구성을 갖는다.
그런데, PCI-Express 스위치의 구성 레지스터 세트를 선택하는 방법으로서, 스위치가 EEPROM(Electronically Erasable and Programmable Read Only Memory) 제 어부를 갖는 것도 생각할 수 있다.
도 15는 이러한 스위치를 이용한 스위치 유닛의 구성예를 도시하고 있다. 도 15의 스위치 유닛상에는 4개의 EEPROM(1403-0 ~ 1403-3)이 탑재된다. 이들 EEPROM에는 예컨대, 도 6에 도시한 바와 같은 각각 다른 어드레스 맵의 데이터가 저장된다. PCI-Express 스위치(1401)는 리셋이 해제되면 자동적으로 EEPROM(1403-0 ~ 1403-3) 중 어느 하나로부터 데이터를 독출하고, 그 데이터에 따라 대응하는 포트를 업스트림 포트로 설정한다.
BMC(1102)는 4개의 핀(GPIO_0 ~ GPIO_3)을 이용하여 OR 회로(1402-0 ~ 1402-3)를 제어하고, 원하는 EEPROM을 선택할 수 있다. 이에 따라, 스위치(1401) 중 어 떤 포트에서도 업스트림 포트로서 설정할 수 있게 된다.
도 16은 도 15의 PCI-Express 스위치(1401)의 구성도이다. 도 16의 스위치(1401)는 도 13의 스위치(1101)로부터 I2C 제어부(1202)를 삭제하고, EEPROM 제어부(1501)를 추가한 구성을 갖는다.
EEPROM 제어부(1501) 및 각 EEPROM은 SPI(Serial Peripheral Interface) 버스를 인터페이스로서 갖고 있다. 이 SPI 버스는 EEPROM_SK, EEPROM_DO, EEPROM_DI, 및 EEPROM_ CS#(#은 부논리를 나타냄)의 4개의 신호선으로 이루어진다.
EEPROM_CS#은 EEPROM으로의 칩 셀렉트 신호이며, 논리‘0’일 때에 그 EEPROM이 선택되어, 데이터가 스위치(1401)에 로드되는 것을 나타낸다. 스위치(1401)의 EEPROM 제어부(1501)는 이 신호선을 1개만 갖고 있다.
그러나, BMC(1102)가 GPIO_0 ~ GPIO_3 중 어느 1개를 논리‘0’에 설정하고, 나머지 3개를 논리‘1’에 설정함으로써, OR 회로(1402-0 ~ 1402-3) 중 어느 하나만이‘0’를 출력하고, 그것에 대응하는 하나의 EEPROM에 대해서만 EEPROM_CS#이‘0’이 된다.
EEPROM_SK는 EEPROM으로의 클록 신호이며, 이 클록 신호에 따라 EEPROM 제어 회로(1501)가 어드레스 신호를 송출하고, EEPROM이 판독 데이터를 송출한다.
이 때, EEPROM 제어부(1501)는 어드레스 신호를 EEPROM_SK에 동기한 시리얼데이터로서, EEPROM_DO를 통해 EEPROM에 송출한다. EEPROM_CS#에 의해 선택된 EEPROM은 어드레스 신호를 수신하면, 판독 데이터를 EEPROM_SK에 동기한 시리얼 데이터로서, EEPROM_DI를 통해 송출한다. 한편, EEPROM_CS#에 의해 선택되어 있지 않 는 EEPROM은 EEPROM_DI의 신호선을 하이 임피던스 상태로 유지한다.
스위치(1401)는 EEPROM에서 송출된 데이터에 따라 각 포트의 레지스터 세트(1206-i 또는 1207-i)에 어드레스 맵을 설정하고, 선택 회로(1205-i)를 전환한다. 이에 따라, 스위치(1401)내에 있어서의 업스트림 포트 및 다운스트림 포트의 설정이 완료된다.
도 17은 도 2의 디스크 어레이 장치 BMC(217-i 및 222-j)가 처리에 이용하는 프로그램 및 데이터의 제공 방법을 도시하고 있다. 정보 처리 장치 등의 외부 장치(1601)나 휴대용 기록 매체(1603)에 저장된 프로그램 및 데이터는 디스크 어레이 장치(1602)의 메모리에 로드된다.
외부 장치(1601)는 그 프로그램 및 데이터를 반송하는 반송 신호를 생성하고, 통신 네트워크상의 임의의 전송 매체를 통해 디스크 어레이 장치(1602)에 송신한다. 휴대용 기록 매체(1603)는 메모리 카드, 플렉시블 디스크, 광디스크, 광자기 디스크 등의 임의의 컴퓨터 판독 가능한 기록 매체이다. BMC(217-i 및 222-j)는 그 데이터를 이용하여 그 프로그램을 실행하고, 필요한 처리를 행한다.
(부기 1)
복수의 처리 노드를 시리얼 버스에 의해 상호 접속하는 상호 접속 장치로서,
상기 복수의 처리 노드에 접속되는 복수의 포트를 갖고, 상기 복수의 포트 중 하나를 업스트림 포트로 설정하고, 다른 포트를 다운스트림 포트로 설정하여, 포트 사이에서 데이터 전송 경로의 전환을 행하는 스위치 수단과,
상기 스위치 수단의 각 포트의 링크가 확립되기 전에 상기 복수의 처리 노드 의 각각이 실장되어 있는지 여부를 확인하고, 상기 스위치 수단의 복수의 포트 중 실장되어 있는 처리 노드 중 하나가 접속되어 있는 포트를 상기 업스트림 포트로 설정하고, 다른 포트를 상기 다운스트림 포트로 설정하도록 상기 스위치 수단을 제어하는 제어 수단을 구비하는 것을 특징으로 하는 상호 접속 장치.
(부기 2)
상기 제어 수단은 상기 스위치 수단의 업스트림 포트 및 다운스트림 포트가 설정된 후, 실장되어 있는 처리 노드가 접속되어 있는 각 포트의 링크가 확립되었는지 여부를 감시하고, 링크가 확립되지 않으면 상기 스위치 수단을 리셋하여, 별도의 포트를 업스트림 포트로 설정하도록 상기 스위치 수단을 제어하는 것을 특징으로 하는 부기 1에 기재된 상호 접속 장치.
(부기 3)
상기 복수의 처리 노드는 각각 직접 메모리 액세스 제어 수단을 포함하고, 상기 제어 수단은 설정된 업스트림 포트의 정보가 실장되어 있는 처리 노드에 통지하고, 통지된 처리 노드는 상기 업스트림 포트의 정보에 따라 상기 직접 메모리 액세스 제어 수단의 어드레스 맵을 설정하는 것을 특징으로 하는 부기 1 또는 2에 기재된 상호 접속 장치.
(부기 4)
상기 스위치 수단의 각 포트는 업스트림 포트로 라우트되지 않는 데이터 전송 목적지 어드레스의 범위를 지정하는 제1 레지스터 수단과, 다운스트림 포트로 라우트되는 데이터의 전송 목적지 어드레스의 범위를 지정하는 제2 레지스터 수단 을 포함하고, 상기 업스트림 포트로 설정된 포트는 상기 제1 레지스터 수단을 참조하면서 동작하고, 상기 다운스트림 포트로 설정된 포트는 상기 제2 레지스터 수단을 참조하면서 동작하는 것을 특징으로 하는 부기 1 또는 2에 기재된 상호 접속 장치.
(부기 5)
상기 스위치 수단의 각 포트는 데이터 전송 목적지 어드레스의 어드레스 맵을 저장하는 레지스터 수단을 포함하고, 상기 제어 수단은 업스트림 포트로 설정해야 하는 포트의 상기 레지스터 수단에 업스트림 포트용 어드레스 맵의 정보를 기록하고, 다운스트림 포트로 설정해야 하는 포트의 상기 레지스터 수단에 다운스트림 포트용 어드레스 맵의 정보를 기록하는 것을 특징으로 하는 부기 1 또는 2에 기재된 상호 접속 장치.
(부기 6)
상기 스위치 수단의 복수의 포트 각각을 업스트림 포트로 설정한 경우 각각 다른 복수의 어드레스 맵 정보를 저장하는 메모리 수단을 더 구비하고, 상기 스위치 수단의 각 포트는 데이터 전송 목적지 어드레스의 어드레스 맵을 저장하는 레지스터 수단을 포함하고, 상기 제어 수단은 그 중 어느 하나의 포트를 업스트림 포트로 설정할지에 따라 상기 메모리 수단내의 대응하는 어드레스 맵 정보가 각 포트의 레지스터 수단에 설정되도록 상기 메모리 수단을 제어하는 것을 특징으로 하는 부기 1 또는 2에 기재된 상호 접속 장치.
(부기 7)
처리 유닛을 각각 갖는 복수의 처리 노드와,
상기 복수의 처리 노드를 시리얼 버스에 의해 상호 접속하기 위한 복수의 포트를 갖고, 상기 복수의 포트 중 하나를 업스트림 포트로 설정하고, 다른 포트를 다운스트림 포트로 설정하여, 포트 사이에서 데이터 전송 경로의 전환을 행하는 스위치 수단과,
상기 스위치 수단의 각 포트의 링크가 확립되기 전에 상기 복수의 처리 노드의 각각이 실장되어 있는지 여부를 확인하고, 상기 스위치 수단의 복수의 포트 중 실장되어 있는 처리 노드 중 하나가 접속되어 있는 포트를 상기 업스트림 포트로 설정하고, 다른 포트를 상기 다운스트림 포트로 설정하도록 상기 스위치 수단을 제어하는 제어 수단을 구비하는 것을 특징으로 하는 컴퓨터 시스템.
(부기 8)
복수의 처리 노드를 시리얼 버스에 의해 상호 접속하기 위한 복수의 포트를 갖고, 상기 복수의 포트 중 하나를 업스트림 포트로 설정하고, 다른 포트를 다운스트림 포트로 설정하여, 포트 사이에서 데이터 전송 경로의 전환을 행하는 스위치를 제어하는 프로세서를 위한 프로그램으로서,
상기 스위치의 각 포트의 링크가 확립되기 전에 상기 복수의 처리 노드의 각각이 실장되어 있는지 여부를 확인하고,
상기 스위치 복수의 포트 중 실장되어 있는 처리 노드 중 하나가 접속되어 있는 포트를 상기 업스트림 포트로 설정하고, 다른 포트를 상기 다운스트림 포트로 설정하도록 상기 스위치를 제어하는 처리를 상기 프로세서에 실행시키는 것을 특징 으로 하는 프로그램.
(부기 9)
복수의 처리 노드를 시리얼 버스에 의해 상호 접속하기 위한 복수의 포트를 갖고, 상기 복수의 포트 중 하나를 업스트림 포트로 설정하고, 다른 포트를 다운스트림 포트로 설정하여, 포트 사이에서 데이터 전송 경로의 전환을 행하는 스위치를 제어하는 제어 방법으로서,
상기 스위치 각 포트의 링크가 확립되기 전에 상기 복수의 처리 노드의 각각이 실장되어 있는지 여부를 확인하고,
상기 스위치 복수의 포트 중 실장되어 있는 처리 노드 중 하나가 접속되어 있는 포트를 상기 업스트림 포트로 설정하고, 다른 포트를 상기 다운스트림 포트로 설정하도록 상기 스위치를 제어하는 것을 특징으로 하는 제어 방법.
본 발명에 의하면, PCI-Express 스위치를 사용하여 복수의 CPU 노드를 상호 접속한 컴퓨터 시스템에 있어서, CPU 노드의 증감 요인 등에 의해 시스템 구성이 변화된 경우에도 업스트림 포트의 CPU 노드를 할당하여 시스템을 동작시킬 수 있다. 이에 따라, PCI-Express 규격 특유의 업스트림 포트의 특수성이 은폐된다.

Claims (5)

  1. 복수의 처리 노드를 시리얼 버스에 의해 상호 접속하는 상호 접속 장치로서,
    상기 복수의 처리 노드에 접속되는 복수의 포트를 갖고, 상기 복수의 포트 중 하나를 업스트림 포트로 설정하고, 다른 포트를 다운스트림 포트로 설정하여, 포트 사이에서 데이터 전송 경로의 전환을 행하는 스위치 수단과,
    상기 스위치 수단의 각 포트의 링크가 확립되기 전에 상기 복수의 처리 노드의 각각이 실장되어 있는지 여부를 확인하고, 상기 스위치 수단의 복수의 포트 중, 실장되어 있는 처리 노드 중 하나가 접속되어 있는 포트를 상기 업스트림 포트로 설정하고, 다른 포트를 상기 다운스트림 포트로 설정하도록, 상기 스위치 수단을 제어하는 제어 수단을 구비하는 것을 특징으로 하는 상호 접속 장치.
  2. 제1항에 있어서,
    상기 제어 수단은 상기 스위치 수단의 업스트림 포트 및 다운스트림 포트가 설정된 후, 실장되어 있는 처리 노드가 접속되어 있는 각 포트의 링크가 확립되어 있는지 여부를 감시하고, 링크가 확립되어 있지 않으면 상기 스위치 수단을 리셋하여, 별도의 포트를 업스트림 포트로 설정하도록 상기 스위치 수단을 제어하는 것을 특징으로 하는 상호 접속 장치.
  3. 제1항 또는 제2항에 있어서,
    상기 스위치 수단의 각 포트는 데이터 전송 목적지 어드레스의 어드레스 맵을 저장하는 레지스터 수단을 포함하고,
    상기 제어 수단은 업스트림 포트로 설정해야 하는 포트의 상기 레지스터 수단에 업스트림 포트용 어드레스 맵의 정보를 기록하고, 다운스트림 포트로 설정해야 하는 포트의 상기 레지스터 수단에 다운스트림 포트용 어드레스 맵의 정보를 기록하는 것을 특징으로 하는 상호 접속 장치.
  4. 제1항 또는 제2항에 있어서,
    상기 스위치 수단의 복수의 포트 각각을 업스트림 포트로 설정한 경우, 각각 다른 복수의 어드레스 맵 정보를 저장하는 메모리 수단을 더 구비하고,
    상기 스위치 수단의 각 포트는 데이터 전송 목적지 어드레스의 어드레스 맵을 저장하는 레지스터 수단을 포함하고,
    상기 제어 수단은 어느 포트를 업스트림 포트로 설정할지의 여부에 따라 상기 메모리 수단 내의 대응하는 어드레스 맵의 정보가 각 포트의 레지스터 수단에 설정되도록 상기 메모리 수단을 제어하는 것을 특징으로 하는 상호 접속 장치.
  5. 처리 유닛을 각각 갖는 복수의 처리 노드와,
    상기 복수의 처리 노드를 시리얼 버스에 의해 상호 접속하기 위한 복수의 포트를 갖고, 상기 복수의 포트 중 하나를 업스트림 포트로 설정하고, 다른 포트를 다운스트림 포트로 설정하여, 포트 사이에서 데이터 전송 경로의 전환을 행하는 스 위치 수단과,
    상기 스위치 수단의 각 포트의 링크가 확립되기 전에 상기 복수의 처리 노드의 각각이 실장되어 있는지 여부를 확인하고, 상기 스위치 수단의 복수의 포트 중, 실장되어 있는 처리 노드 중 하나가 접속되어 있는 포트를 상기 업스트림 포트로 설정하고, 다른 포트를 상기 다운스트림 포트로 설정하도록 상기 스위치 수단을 제어하는 제어 수단을 구비하는 것을 특징으로 하는 컴퓨터 시스템.
KR1020050039339A 2005-01-28 2005-05-11 복수의 처리 노드를 시리얼 버스에 의해 상호 접속하는장치 KR100708565B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2005-00020512 2005-01-28
JP2005020512A JP4398386B2 (ja) 2005-01-28 2005-01-28 複数の処理ノードをシリアルバスにより相互接続する装置

Publications (2)

Publication Number Publication Date
KR20060087364A true KR20060087364A (ko) 2006-08-02
KR100708565B1 KR100708565B1 (ko) 2007-04-19

Family

ID=36758004

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050039339A KR100708565B1 (ko) 2005-01-28 2005-05-11 복수의 처리 노드를 시리얼 버스에 의해 상호 접속하는장치

Country Status (4)

Country Link
US (1) US7461194B2 (ko)
JP (1) JP4398386B2 (ko)
KR (1) KR100708565B1 (ko)
CN (1) CN100405352C (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10162780B2 (en) 2012-12-17 2018-12-25 Electronics And Telecommunications Research Institute PCI express switch and computer system using the same

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050270988A1 (en) * 2004-06-04 2005-12-08 Dehaemer Eric Mechanism of dynamic upstream port selection in a PCI express switch
US20060200813A1 (en) * 2005-03-01 2006-09-07 Sea-Weng Young Firmware updating system
US7454554B1 (en) * 2006-03-31 2008-11-18 Integrated Device Technology, Inc. Binary base address search device and method
US7694025B1 (en) 2006-03-31 2010-04-06 Integrated Device Technology, Inc. Method and device for base address sorting and entry into base address registers
US7779197B1 (en) * 2006-05-09 2010-08-17 Integrated Device Technology, Inc. Device and method for address matching with post matching limit check and nullification
US7647438B1 (en) 2006-05-09 2010-01-12 Integrated Device Technology, Inc. Binary base address sorting method and device with shift vector
JP5084197B2 (ja) * 2006-08-10 2012-11-28 株式会社ソニー・コンピュータエンタテインメント プロセッサノードシステムおよびプロセッサノードクラスタシステム
KR100846352B1 (ko) 2006-12-28 2008-07-15 전자부품연구원 4 x pci―express 프레임 변환 모듈 및 이를이용한 pci―express 프레임 변환 장치
JP4839484B2 (ja) 2007-04-06 2011-12-21 日本電気株式会社 バス接続デバイス、バス接続方法およびバス接続用プログラム
WO2009074406A1 (en) * 2007-12-12 2009-06-18 Nokia Corporation Address assignment protocol
JP5096905B2 (ja) * 2007-12-20 2012-12-12 株式会社日立製作所 サーバ装置及びそのリンク回復処理方法
JP5516402B2 (ja) * 2008-08-21 2014-06-11 富士通株式会社 情報処理装置及び情報処理装置の制御方法
JP5280135B2 (ja) * 2008-09-01 2013-09-04 株式会社日立製作所 データ転送装置
JP5359410B2 (ja) * 2009-03-12 2013-12-04 日本電気株式会社 障害対応システムおよび障害対応方法
WO2010122896A1 (ja) * 2009-04-21 2010-10-28 京セラ株式会社 データ伝送システム、データ伝送方法およびデータ送信装置
US9130400B2 (en) 2009-09-24 2015-09-08 Apple Inc. Multiport power converter with load detection capabilities
JP5476913B2 (ja) 2009-10-13 2014-04-23 富士ゼロックス株式会社 情報処理装置
US8417867B2 (en) * 2010-11-17 2013-04-09 Xilinx, Inc. Multichip module for communications
US8706944B2 (en) 2010-12-22 2014-04-22 Intel Corporation Dual bus standard switching bus controller
CN102694719B (zh) * 2011-03-25 2017-08-15 研祥智能科技股份有限公司 微型电信计算架构系统、载板集线器模块及pci‑e交换器的端口配置方法
CN102232218B (zh) 2011-06-24 2013-04-24 华为技术有限公司 计算机子系统和计算机系统
WO2013027297A1 (ja) * 2011-08-25 2013-02-28 富士通株式会社 半導体装置、管理装置、及びデータ処理装置
JP2013182519A (ja) * 2012-03-02 2013-09-12 Nec Computertechno Ltd コンピュータ、ファームウェア管理方法、及びbmc
KR101934519B1 (ko) 2012-11-26 2019-01-02 삼성전자주식회사 저장 장치 및 그것의 데이터 전송 방법
CN103746941A (zh) * 2014-01-18 2014-04-23 浪潮集团有限公司 一种板级互联大数据一体机
DK3131171T3 (en) * 2014-11-11 2019-04-15 Guangdong Oppo Mobile Telecommunications Corp Ltd POWER ADAPTERS, TERMINAL AND CHARGING SYSTEM
CN105005545A (zh) * 2015-07-28 2015-10-28 武汉烽火网络有限责任公司 线卡串口切换装置及方法
US10872049B2 (en) * 2016-01-29 2020-12-22 Analog Devices, Inc. GPIO-to-GPIO communication on a multi-node daisy-chained network
CN105912275A (zh) * 2016-04-27 2016-08-31 华为技术有限公司 在非易失性存储系统中建立连接的方法和装置
US10387346B2 (en) * 2016-05-06 2019-08-20 Quanta Computer Inc. Dynamic PCIE switch reconfiguration mechanism
JP6600752B2 (ja) 2016-09-13 2019-10-30 株式会社日立製作所 ストレージシステム及びストレージシステムのシステム構築方法
KR20180043451A (ko) * 2016-10-19 2018-04-30 삼성전자주식회사 컴퓨팅 시스템 및 그것의 동작 방법
CN108108254B (zh) * 2016-11-24 2021-07-06 英业达科技有限公司 交换器错误排除方法
US10430225B1 (en) * 2017-09-29 2019-10-01 Amazon Technologies, Inc. Traffic management on an interconnect
CN108021521B (zh) * 2017-12-01 2021-04-27 郑州云海信息技术有限公司 一种基于bmc更改系统拓扑配置的系统以及级联配置方法
US11573919B2 (en) * 2017-12-14 2023-02-07 Texas Instruments Incorporated Multi-slave serial communication
CN112711557B (zh) * 2021-01-15 2022-11-18 飞腾信息技术有限公司 处理器的接口模块及其操作方法、处理器

Family Cites Families (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0821025B2 (ja) 1986-09-29 1996-03-04 株式会社東芝 マルチプロセッサシステムおよび同システムの初期化方法
US4891751A (en) * 1987-03-27 1990-01-02 Floating Point Systems, Inc. Massively parallel vector processing computer
JPH02130666A (ja) 1988-11-11 1990-05-18 Pfu Ltd マルチプロセッサシステムのシステム再構成方式
US5446915A (en) * 1993-05-25 1995-08-29 Intel Corporation Parallel processing system virtual connection method and apparatus with protection and flow control
US5701482A (en) * 1993-09-03 1997-12-23 Hughes Aircraft Company Modular array processor architecture having a plurality of interconnected load-balanced parallel processing nodes
JPH07219913A (ja) 1994-01-28 1995-08-18 Fujitsu Ltd マルチプロセッサシステムの制御方法及び装置
US6108722A (en) * 1996-09-13 2000-08-22 Silicon Grpahics, Inc. Direct memory access apparatus for transferring a block of data having discontinous addresses using an address calculating circuit
US5742587A (en) * 1997-02-28 1998-04-21 Lanart Corporation Load balancing port switching hub
US6055583A (en) * 1997-03-27 2000-04-25 Mitsubishi Semiconductor America, Inc. DMA controller with semaphore communication protocol
JPH11212687A (ja) * 1998-01-26 1999-08-06 Fujitsu Ltd バス制御装置
US6912651B1 (en) * 1998-03-31 2005-06-28 Hewlett-Packard Development Company, L.P. Wireless universal serial bus link for a computer system
US6961801B1 (en) * 1998-04-03 2005-11-01 Avid Technology, Inc. Method and apparatus for accessing video data in memory across flow-controlled interconnects
JP2000315186A (ja) * 1999-05-06 2000-11-14 Hitachi Ltd 半導体装置
US6600739B1 (en) * 1999-06-07 2003-07-29 Hughes Electronics Corporation Method and apparatus for switching among a plurality of universal serial bus host devices
US6265885B1 (en) * 1999-09-02 2001-07-24 International Business Machines Corporation Method, apparatus and computer program product for identifying electrostatic discharge damage to a thin film device
US6601126B1 (en) * 2000-01-20 2003-07-29 Palmchip Corporation Chip-core framework for systems-on-a-chip
JP2001229119A (ja) 2000-02-16 2001-08-24 Hitachi Ltd 複数コンピュータによるデバイス選択hubbox
US6856619B1 (en) * 2000-03-07 2005-02-15 Sun Microsystems, Inc. Computer network controller
US6654818B1 (en) * 2000-06-22 2003-11-25 International Business Machines Corporation DMA access authorization for 64-bit I/O adapters on PCI bus
US6845409B1 (en) * 2000-07-25 2005-01-18 Sun Microsystems, Inc. Data exchange methods for a switch which selectively forms a communication channel between a processing unit and multiple devices
US6892298B2 (en) * 2000-07-26 2005-05-10 Times N Systems, Inc. Load/store micropacket handling system
US20020063621A1 (en) * 2000-09-01 2002-05-30 Next Planet, Inc. Method and apparatus for device communications
US6941350B1 (en) * 2000-10-19 2005-09-06 International Business Machines Corporation Method and apparatus for reliably choosing a master network manager during initialization of a network computing system
US7002926B1 (en) * 2000-11-30 2006-02-21 Western Digital Ventures, Inc. Isochronous switched fabric network
US7065597B2 (en) * 2002-06-28 2006-06-20 Intel Corporation Method and apparatus for in-band signaling of runtime general purpose events
US6732218B2 (en) * 2002-07-26 2004-05-04 Motorola, Inc. Dual-role compatible USB hub device and method
US6760793B2 (en) 2002-07-29 2004-07-06 Isys Technologies, Inc. Transaction credit control for serial I/O systems
US20040030742A1 (en) * 2002-08-06 2004-02-12 Masayuki Kitagawa System and method for communicating data using a multiple-role entity
US7251704B2 (en) * 2002-08-23 2007-07-31 Intel Corporation Store and forward switch device, system and method
US6900664B2 (en) * 2002-12-12 2005-05-31 International Business Machines Corporation Method and system for intelligent bi-direction signal net with dynamically configurable input/output cell
US7046668B2 (en) * 2003-01-21 2006-05-16 Pettey Christopher J Method and apparatus for shared I/O in a load/store fabric
US7617333B2 (en) * 2003-01-21 2009-11-10 Nextio Inc. Fibre channel controller shareable by a plurality of operating system domains within a load-store architecture
US7103064B2 (en) * 2003-01-21 2006-09-05 Nextio Inc. Method and apparatus for shared I/O in a load/store fabric
US7457906B2 (en) 2003-01-21 2008-11-25 Nextio, Inc. Method and apparatus for shared I/O in a load/store fabric
US6959355B2 (en) * 2003-02-24 2005-10-25 Standard Microsystems Corporation Universal serial bus hub with shared high speed handler
JP3959374B2 (ja) * 2003-06-30 2007-08-15 Tdk株式会社 Usbインターフェースシステム
US7155553B2 (en) * 2003-08-14 2006-12-26 Texas Instruments Incorporated PCI express to PCI translation bridge
US7096308B2 (en) * 2003-08-29 2006-08-22 Texas Instruments Incorporated LPC transaction bridging across a PCI—express docking connection
US7167941B2 (en) * 2003-09-10 2007-01-23 Intel Corporation Multi-port device configuration
US7099969B2 (en) 2003-11-06 2006-08-29 Dell Products L.P. Dynamic reconfiguration of PCI Express links
US20050125590A1 (en) * 2003-12-09 2005-06-09 Li Stephen H. PCI express switch
US7343498B2 (en) * 2003-12-12 2008-03-11 O2Micro International Limited ExpressCard power switch device with enhanced communications paths and security functions
CN1558305A (zh) * 2004-01-19 2004-12-29 中国科学院计算技术研究所 一种总线式通用串行总线复用器
US7152190B2 (en) * 2004-02-03 2006-12-19 Motorola Inc. USB OTG intelligent hub/router for debugging USB OTG devices
JP2005287278A (ja) * 2004-03-31 2005-10-13 Casio Comput Co Ltd 電子端末の充電制御装置及び電子端末の充電制御方法
KR20050100445A (ko) * 2004-04-14 2005-10-19 학교법인 영남학원 Pci 익스프레스의 데이터 연결계층에서 송신단 버퍼를이용한 데이터 전송방법
US20050235091A1 (en) * 2004-04-20 2005-10-20 Caph Chen USB hub with built-in storage device
US7058738B2 (en) * 2004-04-28 2006-06-06 Microsoft Corporation Configurable PCI express switch which allows multiple CPUs to be connected to multiple I/O devices
US20050270988A1 (en) * 2004-06-04 2005-12-08 Dehaemer Eric Mechanism of dynamic upstream port selection in a PCI express switch
US8291145B2 (en) * 2004-08-10 2012-10-16 Hewlett-Packard Development Company, L.P. Method and apparatus for setting a primary port on a PCI bridge
US20060059293A1 (en) * 2004-09-14 2006-03-16 Henry Wurzburg Universal serial bus switching hub
US8706942B2 (en) * 2004-12-29 2014-04-22 Intel Corporation Direct memory access (DMA) address translation between peer-to-peer input/output (I/O) devices
GB0508576D0 (en) * 2005-04-27 2005-06-01 Symbian Software Ltd Delegating universal serial bus functionality
EP1768398A1 (en) * 2005-09-26 2007-03-28 Topseed Technology Corp. Projector having built-in universal serial bus interface

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10162780B2 (en) 2012-12-17 2018-12-25 Electronics And Telecommunications Research Institute PCI express switch and computer system using the same

Also Published As

Publication number Publication date
KR100708565B1 (ko) 2007-04-19
US7461194B2 (en) 2008-12-02
CN1811744A (zh) 2006-08-02
JP4398386B2 (ja) 2010-01-13
US20060174048A1 (en) 2006-08-03
CN100405352C (zh) 2008-07-23
JP2006209456A (ja) 2006-08-10

Similar Documents

Publication Publication Date Title
KR100708565B1 (ko) 복수의 처리 노드를 시리얼 버스에 의해 상호 접속하는장치
US20210279198A1 (en) SYSTEM AND METHOD FOR SUPPORTING MULTI-MODE AND/OR MULTI-SPEED NON-VOLATILE MEMORY (NVM) EXPRESS (NVMe) OVER FABRICS (NVMe-oF) DEVICES
TWI721319B (zh) 資料儲存系統中的多埠中介件架構
TWI714773B (zh) 多路徑及/或多模式跨網狀結構高速非揮發性記憶裝置及支持其的系統
JP7134894B2 (ja) ストレージシステム、及びプログラマブルロジックデバイス
US10387353B2 (en) System architecture for supporting active pass-through board for multi-mode NMVE over fabrics devices
US11588261B2 (en) Multi-mode and/or multi-speed non-volatile memory (NVM) express (NVMe) over fabrics (NVMe-oF) device
US11086813B1 (en) Modular non-volatile memory express storage appliance and method therefor
JP3783017B2 (ja) ローカル識別子を使ったエンド・ノード区分
US8074105B2 (en) High data availability SAS-based RAID system
KR100709540B1 (ko) 직렬 커넥트 버스를 사용한 컴퓨터 시스템 및 복수 cpu유닛의 직렬 커넥트 버스에 의한 접속 방법
KR20180030377A (ko) 섀시 내의 프록시 장치와 장치, 그리고 프록시 장치의 동작 방법
CN110737611A (zh) 存储系统和选择存储装置的操作模式的方法
US20200356515A1 (en) System architecture for supporting active pass-through board for multi-mode nmve over fabrics devices
US10606784B1 (en) Software filtering of redundant sideband device management bus communications
KR20190104878A (ko) Fpga+ssd의 50g 또는 100g 이더넷 속도를 지원하는 모듈러 시스템(스위치 보드들 및 미드 플레인)
TW202246976A (zh) 快速週邊元件互連裝置以及包括其的計算系統
WO2013027297A1 (ja) 半導体装置、管理装置、及びデータ処理装置
US20240012770A1 (en) Interface device having plurality of ports and method of operating the same

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130321

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140319

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee