KR20110010696A - Pci 메모리 공간 예약 방법 및 컴퓨터 시스템 - Google Patents

Pci 메모리 공간 예약 방법 및 컴퓨터 시스템 Download PDF

Info

Publication number
KR20110010696A
KR20110010696A KR1020107021901A KR20107021901A KR20110010696A KR 20110010696 A KR20110010696 A KR 20110010696A KR 1020107021901 A KR1020107021901 A KR 1020107021901A KR 20107021901 A KR20107021901 A KR 20107021901A KR 20110010696 A KR20110010696 A KR 20110010696A
Authority
KR
South Korea
Prior art keywords
pci
memory
host computer
devices
hot
Prior art date
Application number
KR1020107021901A
Other languages
English (en)
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 KR20110010696A publication Critical patent/KR20110010696A/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/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • 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/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • G06F13/4081Live connection to bus, e.g. hot-plugging

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)
  • Bus Control (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명의 실시예는 PCI 디바이스를 위한 메모리 공간을 예약하는 방법, 장치 및 시스템을 포함한다. 일 실시예는 PCI 스위치 또는 PCI 브릿지를 통해 호스트 컴퓨터로 접속된 주변 장치를 판단(220)하고 가상 디바이스가 PCI 스위치 또는 PCI 브릿지에 접속된 것으로 나타내는 방법(230)을 포함한다. 버슨 넘버 및 메모리가 가상 디바이스를 위해 예약되고 호스트 컴퓨터로 핫-플러그되는 PCI 디바이스에 할당된다(240).

Description

PCI 메모리 공간 예약 방법 및 컴퓨터 시스템{RESERVING PCI MEMORY SPACE FOR PCI DEVICES}
주변 장치 상호접속 또는 PCI 표준은 주변 장치를 마더보드로 부착시키는 컴퓨터 버스를 정의한다. PCI 명세는 버스의 물리적 속성, 전기적 특징, 버스 타이밍, 통신 프로토콜 등을 기술한다. PCI-SIG(PCI Special Interest Group)은 다수의 PCI 아키텍처에 대한 명세를 유지하고 좌우한다.
컴퓨터가 처음 동작을 시작할 때, PCI 열거 시간 주기가 시작된다. 이 시간 동안, 컴퓨터 내의 PCI 열거 소프트웨어는 모든 설치된 주변 장치들의 리스트와 그들의 메모리 공간 요구사항을 컴파일한다. 다시 말하면, 컴퓨터는 주변 장치가 PCI 버스에 접속되었는지를 결정한다. 이러한 소프트웨어는 모든 설치된 디바이스들에 대해 공간을 할당하는 메모리 맵을 생성한다.
생성된 메모리 맵은 차후 임의의 디바이스를 위한 공간을 포함하지 않고 조밀하게 패키징될 수 있다. 또한, PCI 버스 넘버링은 열거가 완료된 후에 접속되는 디바이스들에 대한 PCI 버스를 남겨두지 않을 수 있다. 이것은 핫-플러그(hot-plug) 디바이스를 수용할 수 있는 시스템에 대해 문제를 발생시킨다. 특히, 열거 후에 핫-플러그된 디바이스들을 위한 공간을 포함시키도록 메모리 맵 및 PCI 버스 넘버링을 변경하는 것이 문제가 될 수 있다. 일부 컴퓨터 시스템은 디바이스가 핫-플러그된 후 호스트가 시스템을 재열거할 것을 요청한다.
도 1은 예시적인 실시예에 따라 가상 PCI 디바이스에 대한 메모리 공간 및 PCI 버스 넘버를 예약 및 발행하는 컴퓨터 시스템의 블록도.
도 2는 예시적인 실시예에 따라 가상 PCI 디바이스에 대한 메모리 공간 및 PCI 버스 넘버를 예약하는 순서도.
도 3은 예시적인 실시예에 따라 보존된 PCI 버스 넘버 및 메모리 공간을 핫플러그된 PCI 디바이스에 발행하는 순서도.
예시적인 실시예들은 PCI 디바이스를 위한 PCI 메모리 공간을 예약하는 방법, 시스템 및 장치에 관한 것이다. 일 실시예에서, 컴퓨터가 작동 시작되어 PCI 열거(enumeration)가 발생한 후에 핫플러그되는(hot plugged) PCI 디바이스를 위한 메모리 공간이 예약된다.
일 예시적인 실시예에서, 핫플러그 능력을 갖지만 접속된 디바이스를 갖지 않는 다운스트림 브릿지는 다운스트림 브릿지 뒤에 있는 버스에 대해 가상 디바이스를 나타낼 것이다. 이러한 가상 디바이스는 이후에 설치될 수 있는 디바이스를 대신하여 "더미(dummy)" 메모리를 요청한다. 디바이스가 핫-플러그되면, 다운스트림 브릿지는 더 이상 가상 디바이스를 나타내지 않는다. "더미" 메모리 공간은 처음에 가상 디바이스에 의해 요청되어 핫-플러그된 디바이스에 할당되도록 이용가능해질 수 있다. 또한, 가상 디바이스에 할당된 PCI 버스는 핫-플러그된 디바이스를 위해 이용가능해진다.
일 실시예에서, 호스트가 처음 부팅했을 때, 호스트는 호스트와 디바이스 사이의 브릿지에 의해 가상 디바이스로 묘사되는 물리적인 디바이스를 발견하거나 검출한다. 또한 호스트는 가상 디바이스로서 묘사된 물리적 디바이스가 나중에 브릿지에 핫-플러그되었을 경우를 위해 브릿지에 의해 생성된 플레이스홀더인 더미 가상 디바이스를 발견한다. 새로운 디바이스의 물리적인 부착이 반드시 브릿지에 접속되는 것은 아니다.
도 1은 예시적인 실시예에 따라 가상 PCI 디바이스를 위한 메모리 공간 및 PCI 버스 넘버를 예약 및 발행하는 컴퓨터 시스템(100)의 블록도이다. 예시적인 설명을 위해서 컴퓨터 시스템이 PCI 익스프레스 아키텍처를 사용하는 것으로 도시되었지만, 예시적인 실시예들이 PCI 아키텍처의 임의의 특정한 유형으로 제한되지는 않는다.
도 1은 루트 컴플렉스(root complex), 복수의 엔드포인트(예를 들어, 입력/출력(I/O) 디바이스), 스위치 및 모두가 PCI 익스프레스 버스 또는 링크를 통해서 상호접속되는 PCI/PCI-X 브릿지로의 PCI 익스프레스를 포함하는 단일의 패브릭 인스턴스 또는 계층을 도시한다. 특히, 루트 노드, 컴퓨트 노드, 또는 호스트 컴퓨터(110)가 하나 이상의 스위치(130)(도시의 편의를 위해 하나의 스위치만이 도시되었다)를 통해 복수의 PCI 익스프레스 엔드포인트(120)로 접속한다. 루트 노드는 PCI 익스프레스 버스 또는 링크(160)를 통해 다수의 디바이스(엔드포인트 또는 엔드노드, 브릿지, 스위치 등)로 접속한다. 일 실시예에서, 하나 이상의 PCI 익스프레스 엔드포인트(120)는 물리적으로 스위치(130)로 접속된다. 다른 실시예에서, 하나 이상의 PCI 익스프레스 엔드포인트(120)는 스위치(130)로부터 분리된다. 다시 말하면, 엔드포인트(120)는 포트(170B)에 물리적으로 접속되지 않고 분리된다.
루트 노드(110)는 CPU(140), 메모리(145) 및 호스트 버스(155)를 통해 연결되는 루트 컴플렉스(150)를 포함한다. 루트 컴플렉스(150)는 다수의 가상 PCI 익스프레스 엔드포인트(125), PCI/PCI-X 브릿지(165)로의 PCI 익스프레스 및 다수의 PCI 익스프레스 버스(160)를 통한 스위치(130)로 접속한다. PCI/PCI-X 브릿지(165)는 PCI 익스프레스 패브릭과 PCI/PCI-X 계층 사이의 접속을 제공한다.
루트 컴플렉스(RC)(150)는 CPU/메모리 서브시스템을 I/O 디바이스에 접속시키는 I/O 계층의 루트를 표시한다. 루트 컴플렉스는 하나 이상의 포트를 지원할 수 있다.
각 인터페이스는 별개의 계층 도메인을 규정하며, 각 계층 도메인은 하나 이상의 스위치 구성요소 및 엔드포인트를 포함하는 서브-계층 또는 단일 엔드포인트를 포함한다. 루트 컴플렉스를 통해서 계층 도메인들 사이의 피어-투-피어(P2P) 트랜잭션을 라우팅하는 능력은 선택적이며 구현에 따라 다를 수 있다. 예를 들어, 일 구현은 소프트웨어 투명 방식으로 완전한 피어-투-피어(P2P) 지원을 가능케 하도록 루트 컴플렉스 내에 내부적으로 실제 또는 가상 스위치를 포함할 수 있다.
루트 컴플렉스(150)는, 요청자로서 구성 요청 생성, 요청자로서 I/O 요청 생성 및 요청자로서 잠그어진(locked) 요청 생성 중 하나 이상을 수행하는 역할을 하거나 지원할 수 있다.
엔드포인트는 가상 엔드포인트 및 실재의 또는 물리적인 엔드포인트를 포함한다. 물리적인 또는 실재의 엔드포인트는 스스로를 대표하거나 별개의 비-PCI 디바이스(PCI 디바이스 또는 호스트 CPU가 아닌 디바이스), 예컨대 PCI 익스프레스 부착된 제어기, PCI 익스프레스-USB 호스트 컨트롤러 등, 또는 그외의 I/O 디바이스(디스크 드라이브 등)와 같은 디바이스를 대신하는 PCI 트랜잭션의 컴플리터(completer) 또는 요청자일 수 있는 디바이스 또는 디바이스들의 집합이다. 반면에, 가상 엔드포인트는 컴퓨터 시스템에 접속되고/되거나 실재하고 물리적으로 존재하지 않는 디바이스를 나타낸다. 따라서, 호스트(110)는 물리적인 디바이스가 컴퓨터 시스템 내의 슬롯/포트에 접속되었다고 검출하거나 그렇게 믿지만 실제로는 물리적 디바이스가 실질적으로 존재하지 않는다.
도시된 바와 같이, 스위치(130)는 복수의 포트(170) 및 복수의 가상 PCI-PCI 브릿지를 포함한다. 예시적인 설명을 위해서, 스위치(130)는 하나의 업스트림 포트(170A)와 세 개의 다운스트림 포트(170B)를 구비하는 것으로 도시되었다. 스위치는 PCI 링크(160)를 통해서 하나 이상의 물리적 엔트포인트(120)와 가상 엔드포인트(125)에 접속한다.
스위치는 다음의 규칙들 중 하나 이상에 따른다: 스위치는 환경설정 소프트웨어에게 둘 이상의 논리적 PCI-투-PCI 브릿지로 나타내어짐, 스위치는 (어드레스 기반의 라우팅과 같이) PCI 브릿지 메커니즘을 사용하여 트랜잭션을 포워딩함, 스위치는 포트들의 세트들 사이의 다수의 유형의 트랜잭션 층 패킷들을 포워딩함.
일 실시예에서, 각 PCI 익스프레스 링크(160)는 가상 PCI-투-PCI 브릿지 구조를 통해 맵핑되며 이와 연관된 논리적 PCI 버스를 구비한다. 가상 PCI-투-PCI 브릿지 구조는 PCI 익스플레스 루트 컴플렉스 포트, 스위치 업스트림 포트, 또는 스위치 다운스트림 포트의 일부일 수 있다. 루트 포트는 PCI 익스프레스 루트 컴플렉스로부터 PCI 익스프레스 계층 도메인을 생성하는 가상 PCI-투-PCI 브릿지 구조이다. 디바이스는 각각이 특정한 디바이스 넘버에 응답하도록 구성 공간으로 맵핑된다.
일 실시예에서, 호스트(110)는 처음으로 부팅할 때 호스트는 호스트와 디바이스 사이의 브릿지 또는 스위치(즉, 스위치(130))에 의해 가상 디바이스(즉, 가상 PCI 익스프레스 엔드포인트(125))로서 묘사되는 물리적 디바이스를 발견하거나 검출한다. 또한 호스트는 물리적으로 접속된 디바이스로서 가상 PCI 익스프레스 엔드포인트(125)를 발견한다. 그러나, 이러한 디바이스는 실제로는 가상 디바이스로서 묘사된 물리적 디바이스가 브릿지에 핫-플러그될 때 차후를 위해 스위치(130)에 의해 생성된 플레이스홀더(placeeholder)인 더미 가상 디바이스이다.
도 2는 예시적인 실시예에 따른 가상 PCI 디바이스를 위한 메모리 공간 및 PCI 버스 넘버를 예약하는 순서도이다.
블록(200)에 따르면, 호스트 컴퓨터 또는 루트 노드가 파워업된다. 예를 들어, 호스트는 턴업 또는 재시작된다.
블록(210)에 따르면, 호스트는 PCI 열거를 실행한다. 컴퓨터가 시작한 후에, PCI 열거 시간 주기가 시작된다. 이러한 기간 동안, 컴퓨터 내의 PCI 열거 소프트웨어는 모든 설치된 주변 장치들의 리스트와 그들의 메모리 공간 요구사항을 컴파일한다. 다시 말하면, 컴퓨터는 주변 장치가 PCI 버스에 실제로 또는 물리적으로 접속되었는지를 결정한다.
일 실시예에서, 컴퓨터는 컴퓨터가 운영 시스템(OS)으로 부팅하기 이전에 어드레스 맵을 설계한다. 열거 소프트웨어는 시스템 내에 얼마나 많은 메모리가 존재하며 얼마나 많은 어드레스 공간을 시스템 내의 I/O 컨트롤러가 요구하는지를 판정한다. 이러한 맵(종종 PCI 리소스 할당 맵으로 지칭됨)은 파워업 동안 PCI 슬롯 내의 카드 및/또는 I/O 컨트롤러를 인터페이스하기 위해 어떤 어드레스가 할당되었는지를 나타내는 어드레스들의 맵이다.
블록(220)에 따르면, 호스트는 PCI 버스에 접속되는 디바이스들의 리스트를 획득한다. 예를 들어, 호스트는 시스템에 접속된 (도 1에 도시된 PCI 익스프레스 엔드포인트(120)와 같은) 물리적 또는 실재하는 엔드포인트들의 리스트를 수신한다.
블록(230)에 따르면, 가상 엔드포인트는 실재의 물리적인 엔드포인트로서 호스트 또는 컴퓨트 노드에 제시된다. 이것은 호스트로 하여금 블록(240)에 따른 두 가지 기능을 수행하도록 한다. 하나의 기능으로서, 호스트는 다운스트림 브릿지 뒤의 버스에 대한 버스 넘버를 예약한다. 두 번째 기능으로서, 호스트는 가상 디바이스에 대한 선형 메모리 맵 내의 메모리를 예약한다.
따라서 호스트는 컴퓨터 시스템 내의 설치된 모든 가상 디바이스에 대한 버스 넘버 및 공간을 할당하는 메모리 맵을 생성한다. 메모리 맵은 PCI 버스에 아직 접속되지 않은 이후의 디바이스(예를 들어, PCI 핫-플러그 가능한 디바이스)가 이용할 수 있는 공간을 포함한다. 또한, PCI 버스 넘버링은 PCI 버스에 아직 접속되지 않은 임의의 미래의 디바이스가 이용할 수 있는 넘버를 포함한다.
도 3은 예시적인 실시예에 따라 핫-플러그된 PCI 디바이스로 예약된 메모리 공간 및 PCI 버스 넘버를 발행하는 순서도이다.
블록(300)에 따르면, 하나 이상의 디바이스는 컴퓨터 시스템으로 핫-플러그된다. 예를 들어, 엔드포인트는 PCI 브릿지 또는 스위치로 핫-플러그된다. 도 1은 가상 PCI 익스프레스 엔드포인트(125)의 예시를 도시하며, 이때 실재의 물리적 디바이스는 열거 이후에 스위치(130)에 부착되거나 플러그될 수 있다.
블록(310)에 따르면, 호스트는 새롭게 추가된 디바이스 또는 엔드포인트를 발견한다. 가상 디바이스는 디바이스가 포트 또는 슬롯으로 핫-플러그되면 더 이상 호스트에게 제시되지 않는다. 다시 말하면, 다운스트림 브릿지는 실재의 물리적 디바이스가 접속된 이후로는 더 이상 가상 디바이스가 브릿지에 접속된 것으로 나타내지 않는다.
다음으로, 블록(320)에 따르면, 호스트는 열거 동안에 가상 디바이스로 이전에 할당된 하나 이상의 버스 넘버 및 메모리에 따라 새롭게 추가된 디바이스를 셋업한다. 예를 들어, 호스트는 포트 또는 슬롯으로 할당되는 버스 넘버를 갖는 디바이스를 제공하고, 해당 포트 또는 슬롯에 대한 상응하는 메모리 공간을 제공한다.
디바이스에 버스 넘버 및 메모리 공간이 제공되면, 디바이스는 블록(330)에 따라서 포트 또는 슬롯에서 사용하도록 이용가능하다. 호스트는 이제 다른 포트 또는 슬롯에서 다른 새로운 핫-플러그 디바이스를 수용할 준비가 되며 블록(300)으로 다시 진행한다.
이러한 프로세스는 핫-플러그 디바이스를 수용할 수 있는 시스템의 문제점을 해결한다. 특히, 새로운 디바이스가 추가되었을 때, 사용되지 않았거나 새롭게 추가된 핫-플러그된 디바이스가 이용가능한 공간을 이미 포함하기 때문에 메모리 맵은 변경되지 않는다. 이렇게, 컴퓨터 시스템이 디바이스가 핫-플러그된 후에 시스템을 재부팅하거나 재열거하도록 요구되지 않는다. 따라서, 예시적인 실시예는 호스트의 완전한 재열거를 필요로 하지 않고 공유 I/O 시스템 내의 디바이스들의 핫-플러그를 가능케 한다.
용어 정의: 본 명세서와 특허청구범위에서 사용된 용어들은 다음과 같이 정의된다
"브릿지(bridge)"라는 용어는 동일한 프로토콜(예컨대, 이더넷 또는 토큰 링)을 사용하여 LAN의 세그먼트들 또는 두 개의 로컬 영역 네트워크(LAN)들을 접속시키는 디바이스를 의미한다. 예를 들어, 브릿지는 내부 구성요소 상호접속부 또는 다른 PCI/PCI-X 버스 세그먼트 또는 PCI 익스프레스 포트와 PCI/PCI-X 세그먼트 또는 PCI 익스프레스 포트를 가상으로 또는 실제로 접속시키는 역할을 한다.
"구성 공간(configuration space)"이라는 용어는 PCI 아키텍처 내의 어드레스 공간을 의미한다. 구성 공간 어드레스를 갖는 패킷은 디바이스 내의 기능(즉, 어드레스 엔티티)을 구성하는 데에 사용된다.
"다운스트림(downstream)"이라는 용어는 루트 컴플렉스로부터 더 먼 상호접속/시스템 소자(포트/구성요소)의 상대적인 위치를 의미한다. 예를 들어, 업스트림 포트에 존재하지 않는 스위치 상의 포트는 다운스트림 포트에 존재한다. 루트 컴플렉스 상의 모든 포트들은 다운스트림 포트이다. 따라서, 다운스트림은 정보 흐름의 방향도 포함하며 이때 정보는 루트 컴플렉스로부터 멀어지는 방향으로 흐른다.
"엔드포인트(endpoint)" 또는 "엔드노드(endnode)"라는 용어는 규칙들의 세트들에 따라 동작하는 디바이스 또는 디바이스들의 집합(즉, 어드레스가능한 전자 엔티티)을 의미한다.
"핫-플러그(hot-plug)" 또는 "핫 스왑(hot swap)"과 같은 용어는 머신 또는 시스템이 계속해서 동작하는 동안 머신 또는 시스템의 전자 구성요소를 제거 및 대체할 수 있는 능력을 의미한다. 예를 들어, 핫 스왑은 하나 이상의 디바이스(예컨대, 하드 드라이브)가 해당 디바이스가 위치된 전체 블레이드 또는 인클로저의 동작에 영향을 미치지 않고 교환 또는 서비스 제공되는 것을 가능케 한다. 예를 들어, 고장이 났을 때, 개별적인 하드 드라이브가 블레이드로부터 제거되어 새로운 하드 드라이브 또는 다른 하드 드라이브로 대체된다. 새로운 하드 드라이브는 인클로저에 존재하는 동안 블레이드의 연속적인 동작을 방해하지 않고 블레이드로 접속된다.
약자 "PCI"는 주변 장치 상호접속을 의미한다. PCI 명세는 버스의 물리적 속성, 전기적 특성, 버스 타이밍, 통신 프로토콜 등을 기술한다. PCI-SIG(PCI Special Interest Group)는 다수의 PCI 아키텍처에 대한 명세를 유지 및 좌우한다.
"포트(port)"라는 용어는 논리적으로는 구성요소와 링크 사이의 인터페이스를 의미하며(즉, 두 디바이스들 사이의 통신 경로), 물리적으로는 링크를 정의하는 칩 상에 위치된 수신기와 송신기의 그룹을 의미한다.
"루트 컴플렉스(root complex)"라는 용어는 호스트 브릿지와 하나 이상의 포트를 포함하는 디바이스 또는 디바이스들의 집합을 의미한다. 예를 들어, 호스트 컴퓨터는 루트 컴플렉스인 PCI-투-호스트 브릿징 기능을 갖는다. 루트 컴플렉스는 (하이퍼-트랜스포트와 같은) CPU 버스와 PCI 버스 사이의 브릿지를 제공한다.
"루트 노드(root node)"라는 용어는 호스트 컴퓨터, 컴퓨터 시스템 또는 서버를 의미한다.
"스위치(switch)"라는 용어는 패킷이 하나의 포트로부터 다른 포트로 라우팅되도록 하는 둘 이상의 포트를 접속시키는 디바이스 또는 디바이스들의 집합을 의미한다. 소프트웨어를 구성하기 위해서, 스위치는 가상 PCI-투-PCI 브릿지의 집합으로 나타내어진다.
"가상(virtual)"이라는 용어는 실재의 것이 아님을 의미하며, 이는 물리적 실체를 갖는 것(예컨대, 물리적 디바이스)과 단지 개념적으로 구별된다. 일 예시로서, 호스트는 실제로 물리적 엔드포인트가 실제로 버스에 접속되지 않았을 때 가상 엔드포인트를 물리적 엔드포인트로서 발견 또는 검출할 수 있다(디바이스는 상상의 디바이스이지만 호스트에 의해서 실제 존재하는 것으로 검출되거나 간주된다). 가상의 반대는 '실재(real)' 또는 '물리적'이다.
"업스트림(upstream)"이라는 용어는 루트 컴플렉스에 더 가까운 상호접속/시스템 소자(포트/구성요소)의 상대적인 위치를 의미한다. 예를 들어, 루트 컴플렉스에 위상적으로 가장 가까운 스위치 상의 포트는 업스트림 포트이다. 예를 들어, 오직 하나의 엔드포인트만을 포함하는 구성요소 상의 포트는 업스트림 포트이다. 업스트림은 또한 정보 흐름의 방향을 포함하며 이때 정보는 루트 컴플렉스를 향해서 흐른다.
일 예시적인 실시예에서, 본 명세서에서 언급된 하나 이상의 블록 또는 단계가 자동화된다. 다시 말하면, 장치, 시스템 및 방법이 자동적이다. 본 명세서에서 사용된 "자동화된(automated)" 또는 "자동으로(automatically)"라는 용어(및 이들의 변형된 용어들)는 사람의 개입, 관찰, 노력 및/또는 검출에 대한 필요성 없이 컴퓨터 및/또는 기계적/전기적 디바이스를 사용하여 제어되는 장치, 시스템 및/또는 프로세스의 동작을 의미한다.
본 발명의 예시적인 실시예에 따른 방법은 예시적으로 제공된 것이며 본 발명의 범주 내의 다른 실시예를 제한하는 것으로 해석되어서는 안된다. 예를 들어, 도면의 블록 또는 숫자((1), (2) 등과 같은 숫자)는 단계들이 특정한 순서로 진행되어야만 함을 의미하는 것으로 해석되어서는 안된다. 본 발명의 범주 내에서 추가적인 블록/단계가 추가될 수 있으며, 일부 블록/단계가 제거되거나 블록/단계들의 순서가 변경될 수 있다. 또한, 각 도면에 도시된 방법 또는 단계들이 다른 도면의 방법 또는 단계들에 추가되거나 교환될 수 있다. 또한, 특정한 숫자 데이터 값(특정한 양, 넘버, 카테고리 등) 또는 그외의 특정한 정보는 예시적인 실시예를 언급하기 위한 예시적인 것으로 해석되어야 한다. 이러한 특정한 정보는 본 발명의 제한하기 위해 제공된 것이 아니다.
본 발명에 따른 다수의 실시예에서, 실시예들은 방법, 시스템 및/또는 장치로서 구현된다. 일례로서, 그와 연관된 예시적인 실시예와 단계들이 본 명세서에 기술된 방법을 구현하기 위한 하나 이상의 컴퓨터 소프트웨어 프로그램으로서 구현된다. 소프트웨어는 하나 이상의 모듈로서 구현된다(객체-지향 프로그래밍에서 코드 서브루틴 또는 "객체"로도 지칭됨). 소프트웨어의 위치는 다수의 다른 실시예들과 다를 것이다. 예를 들어 소프트웨어 프로그래밍 코드는 CD-ROM 드라이브 또는 하드 드라이브와 같은 일부 유형의 장기간 저장 매체로부터 컴퓨터 또는 서버의 프로세서 또는 프로세서들에 의해 액세스된다. 소프트웨어 프로그래밍 코드는 디스크, 하드 드라이브, CD-ROM, ROM 등을 포함하는 반도체, 자기 및 광학 디바이스와 같은 임의의 메모리 디바이스에서 또는 데이터 프로세싱 시스템과 사용하기 위한 다수의 알려진 매체에 구현되거나 저장된다. 코드는 이러한 매체 상에서 배포되거나 또는 하나의 컴퓨터 시스템의 메모리 또는 저장부로부터 일부 유형의 네트워크 상에서 다른 시스템의 사용자에 의해 사용되도록 다른 컴퓨터 시스템으로 배포된다. 이와 달리, 프로그래밍 코드가 메모리 내에 구현되어 버스를 사용하여 프로세서에 의해 액세스된다. 물리적 매체 상에서 메모리 내의 소프트웨어 프로그래밍 코드를 구현하고/하거나 네트워크를 통해서 소프트웨어 코드를 분포시키는 기술 및 방법은 잘 알려져 있으며 본 명세서에서 추가로 설명되지 않을 것이다.
상기의 논의는 본 발명의 다수의 실시예와 원리를 예시적으로 설명하기 위한 것이다. 다수의 수정 및 변경이 당업자에게는 명백할 것이다. 아래의 특허청구범위는 이러한 모든 변경 및 수정을 모두 포함하는 것으로 이해되어야 한다.

Claims (10)

  1. 주변 장치 상호접속(PCI) 스위치 또는 PCI 브릿지를 통해 호스트 컴퓨터에 실제로 접속된 주변 장치들의 리스트를 확립하는 단계(220)와,
    가상 디바이스가 상기 PCI 스위치 또는 상기 PCI 브릿지에 접속되었음을 나타내는 단계(230)와,
    상기 가상 디바이스를 위한 메모리 및 버스 넘버를 예약하는 단계(240)와,
    상기 호스트 컴퓨터에 핫-플러그된(hot-plugged) PCI 디바이스에 상기 버스 넘버 및 상기 메모리를 할당하는 단계(320)를 포함하는
    PCI 버스 넘버 및 메모리 공간 예약 방법.
  2. 제 1 항에 있어서,
    다운스트림 브릿지가 상기 호스트 컴퓨터에게 상기 다운스트림 브릿지에 접속된 PCI 디바이스를 구비한다고 나타내는 단계를 더 포함하되, 상기 다운스트림 브릿지에 접속된 상기 PCI 디바이스가 상기 가상 디바이스인
    방법.
  3. 제 1 항에 있어서,
    상기 호스트 컴퓨터의 열거 프로세스(enumeration process) 동안 메모리를 요청하는 단계를 더 포함하되, 상기 요청된 메모리는 상기 가상 디바이스를 위한 것인
    방법.
  4. 제 1 항에 있어서,
    상기 가상 디바이스가 존재했던 포트 또는 슬롯에 실재의(actual) 디바이스가 핫-플러그된 후에는 상기 호스트 컴퓨터에 가상 디바이스를 나타내는 것을 중단하는 단계를 더 포함하는
    방법.
  5. 제 1 항에 있어서,
    이전에 가상 디바이스에 할당되었던 메모리 공간을 상기 호스트 컴퓨터에 핫-플러그된 상기 PCI 디바이스 중 하나에 할당하는 단계를 더 포함하는
    방법.
  6. 제 1 항에 있어서,
    이전에 가상 디바이스에 할당되었던 메모리 공간을 상기 호스트 컴퓨터에 핫-플러그된 상기 PCI 디바이스 중 하나에 할당하는 단계를 더 포함하는
    방법.
  7. 제 1 항에 있어서,
    상기 호스트 컴퓨터에게 공유 입력/출력(I/O) 시스템에 접속된 주변 장치들을 확립하기 위해 열거를 수행할 것을 요청하지 않고 상기 I/O 시스템으로 디바이스들이 핫-플러그되는 것을 허용하는 단계를 더 포함하는
    방법.
  8. 컴퓨터 시스템(100)으로서,
    알고리즘을 저장하는 메모리(145)와,
    알고리즘을 실행하는 프로세서(140)를 포함하되,
    상기 알고리즘이 실행되면,
    하나 이상의 주변 장치 상호접속(PCI) 스위치 또는 PCI 브릿지(130)를 통해 호스트 컴퓨터(110)에 접속된 주변 장치들(120)을 판단하고,
    가상 디바이스들이 상기 PCI 스위치 또는 상기 PCI 브릿지(130)에 접속되었음을 나타내고,
    상기 호스트 컴퓨터에 상기 PCI 스위치 또는 상기 PCI 브릿지에 접속된 것으로 나타내어진 가상 디바이스들(125)을 위한 메모리 및 버스 넘버를 예약하며,
    상기 호스트 컴퓨터에 핫-플러그된 PCI 디바이스에 상기 버스 넘버 및 상기 메모리를 할당하는
    컴퓨터 시스템.
  9. 제 8 항에 있어서,
    상기 버스 넘버는 다운스트림 브릿지 뒤에 있는(behind) 버스에 대해 발생하는
    컴퓨터 시스템.
  10. 제 8 항에 있어서,
    상기 프로세서는 상기 호스트 컴퓨터로 핫-플러그된 상기 PCI 디바이스를 위해 선형 메모리 맵 내의 메모리를 예약하도록 상기 알고리즘을 추가로 실행하는
    컴퓨터 시스템.
KR1020107021901A 2008-04-01 2008-04-01 Pci 메모리 공간 예약 방법 및 컴퓨터 시스템 KR20110010696A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2008/059060 WO2009123627A1 (en) 2008-04-01 2008-04-01 Reserving pci memory space for pci devices

Publications (1)

Publication Number Publication Date
KR20110010696A true KR20110010696A (ko) 2011-02-07

Family

ID=41135864

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107021901A KR20110010696A (ko) 2008-04-01 2008-04-01 Pci 메모리 공간 예약 방법 및 컴퓨터 시스템

Country Status (6)

Country Link
US (1) US20110029693A1 (ko)
EP (1) EP2260392A4 (ko)
JP (1) JP2011516964A (ko)
KR (1) KR20110010696A (ko)
CN (1) CN101983377A (ko)
WO (1) WO2009123627A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101867329B1 (ko) * 2017-09-04 2018-07-19 김환중 토네이도 유도 액체 전기 가열장치

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010044409A1 (ja) * 2008-10-15 2010-04-22 日本電気株式会社 マルチルートpciエクスプレススイッチ、その起動方法、及び、マルチルートpciマネージャプログラム
GB2473675B (en) 2009-09-22 2011-12-28 Virtensys Ltd Switching method
US8301818B2 (en) * 2009-12-11 2012-10-30 Oracle America, Inc. Virtual hot plugging of devices and virtual devices
US8650349B2 (en) * 2010-05-26 2014-02-11 International Business Machines Corporation Memory mapped input/output bus address range translation for virtual bridges
US9262363B2 (en) * 2012-11-30 2016-02-16 Ciena Corporation PCI and PCI express virtual hot plug systems and methods
WO2015045030A1 (ja) 2013-09-25 2015-04-02 株式会社日立製作所 ドライブの増設可能な情報システムおよび該情報システムのバス番号割り当て方法
CN104216844A (zh) * 2014-09-01 2014-12-17 山东超越数控电子有限公司 一种cpci/cpci-e混合总线互联的实现方法
US9690738B2 (en) * 2015-01-16 2017-06-27 Qualcomm Incorporated Peripheral component interconnect express (PCIe) hosts adapted to support remote PCIe endpoints
US9779050B2 (en) 2015-04-27 2017-10-03 Red Hat Israel, Ltd. Allocating virtual resources to root PCI bus
GB201603469D0 (en) * 2016-02-29 2016-04-13 Ibm Securely removing system capabilities from a logical partition
WO2017209854A1 (en) 2016-05-31 2017-12-07 Brocade Communications Systems, Inc. Hot-plug hardware and software implementation
WO2018000164A1 (en) * 2016-06-28 2018-01-04 Intel Corporation Accessing input/output devices of detachable peripheral by main computer
CN106250060A (zh) * 2016-08-03 2016-12-21 浪潮(北京)电子信息产业有限公司 PCIe设备的热插入方法和装置、热拔出方法和装置
US10133699B2 (en) 2016-08-05 2018-11-20 Red Hat Israel, Ltd. Hot-plug of devices in virtualized computer systems
US11290557B2 (en) * 2018-03-01 2022-03-29 Dell Products L.P. Systems and methods for proxying services between a modular information handling system and a mobile device
CN108804230B (zh) * 2018-06-11 2020-05-26 苏州浪潮智能科技有限公司 一种根据pci设备的类型分配资源的方法、装置及介质
JP7115128B2 (ja) * 2018-08-07 2022-08-09 富士通株式会社 情報処理装置、ブート方法及びブートプログラム
CN111679997B (zh) * 2020-05-29 2023-06-13 中国航空工业集团公司西安航空计算技术研究所 一种多个pci/pci-e接口系统的设备管理方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5960213A (en) * 1995-12-18 1999-09-28 3D Labs Inc. Ltd Dynamically reconfigurable multi-function PCI adapter device
US5937173A (en) * 1997-06-12 1999-08-10 Compaq Computer Corp. Dual purpose computer bridge interface for accelerated graphics port or registered peripheral component interconnect devices
US6081864A (en) * 1997-07-31 2000-06-27 Advanced Micro Devices, Inc. Dynamic configuration of a device under test
US6823418B2 (en) * 2001-06-29 2004-11-23 Intel Corporation Virtual PCI device apparatus and method
US20070233928A1 (en) * 2006-03-31 2007-10-04 Robert Gough Mechanism and apparatus for dynamically providing required resources for a hot-added PCI express endpoint or hierarchy
JP4810349B2 (ja) * 2006-08-11 2011-11-09 日本電気株式会社 I/o装置及び方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101867329B1 (ko) * 2017-09-04 2018-07-19 김환중 토네이도 유도 액체 전기 가열장치

Also Published As

Publication number Publication date
JP2011516964A (ja) 2011-05-26
US20110029693A1 (en) 2011-02-03
WO2009123627A1 (en) 2009-10-08
EP2260392A4 (en) 2012-08-29
EP2260392A1 (en) 2010-12-15
CN101983377A (zh) 2011-03-02

Similar Documents

Publication Publication Date Title
KR20110010696A (ko) Pci 메모리 공간 예약 방법 및 컴퓨터 시스템
US9760455B2 (en) PCIe network system with fail-over capability and operation method thereof
JP5305848B2 (ja) データ処理システム内で入出力(i/o)仮想化を管理するための方法およびデータ処理システムならびにコンピュータ・プログラム
US8359415B2 (en) Multi-root I/O virtualization using separate management facilities of multiple logical partitions
KR101445436B1 (ko) 공유 i/o 시스템에서의 리셋 변환 방법, 컴퓨터 판독 가능한 매체 및 컴퓨터 시스템
US9311127B2 (en) Managing configuration and system operations of a shared virtualized input/output adapter as virtual peripheral component interconnect root to single function hierarchies
US8225005B2 (en) Use of peripheral component interconnect input/output virtualization devices to create high-speed, low-latency interconnect
US20070101016A1 (en) Method for confirming identity of a master node selected to control I/O fabric configuration in a multi-host environment
US20100153592A1 (en) Use of Peripheral Component Interconnect Input/Output Virtualization Devices to Create Redundant Configurations
JP2009151767A (ja) データ処理システム内で入出力(i/o)仮想化を管理するための方法およびコンピュータ・プログラムならびにデータ処理システム
EP2257880A2 (en) System and method for transforming pcie sr-iov functions to appear as legacy functions
US11995019B2 (en) PCIe device with changeable function types and operating method thereof
US11928070B2 (en) PCIe device
KR102568909B1 (ko) PCIe 펑션 및 그 동작 방법
WO2013089904A1 (en) A non-shared virtualized input/output adapter
EP3716084A1 (en) Apparatus and method for sharing a flash device among multiple masters of a computing platform
TW202240415A (zh) PCIe裝置及其操作方法
Tu et al. Seamless fail-over for PCIe switched networks
US8527745B2 (en) Input/output device including a host interface for processing function level reset requests and updating a timer value corresponding to a time until application hardware registers associated with the function level reset requests are available
Wong PCI express multi-root switch reconfiguration during system operation
KR20230142095A (ko) 인터페이스 디바이스 및 그 동작 방법

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid