KR100837449B1 - 가상 pci 디바이스 장치 및 방법 - Google Patents

가상 pci 디바이스 장치 및 방법 Download PDF

Info

Publication number
KR100837449B1
KR100837449B1 KR1020037017040A KR20037017040A KR100837449B1 KR 100837449 B1 KR100837449 B1 KR 100837449B1 KR 1020037017040 A KR1020037017040 A KR 1020037017040A KR 20037017040 A KR20037017040 A KR 20037017040A KR 100837449 B1 KR100837449 B1 KR 100837449B1
Authority
KR
South Korea
Prior art keywords
host bus
pci
bus
cycle
virtual
Prior art date
Application number
KR1020037017040A
Other languages
English (en)
Other versions
KR20040017818A (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 KR20040017818A publication Critical patent/KR20040017818A/ko
Application granted granted Critical
Publication of KR100837449B1 publication Critical patent/KR100837449B1/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/10Program control for peripheral devices
    • 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/10Program control for peripheral devices
    • G06F13/105Program control for peripheral devices where the programme performs an input/output emulation function

Abstract

가상 PCI 버스는 컴퓨터 프로그램의 관점에서 볼 때, 호스트 대 PCI브리지의 배후에 소재하는 물리적 계층 PCI 버스 구조의 부분일 수 있다. 호스트 대 PCI 브리지의 호스트 버스 쪽에 물리적으로 위치한 디바이스는 가상 PCI 버스에 소재하는 가상 디바이스로 보여질 수 있어서 물리적 디바이스가 PCI 호환 디바이스에만 기능했던 디바이스 독립적 초기화 및 시스템 리소스 분배에 참여하도록 해 줄 수 있다. 가상 PCI 디바이스를 목표로 하는 프로세서로 개시된 호스트 버스 사이클은 포착될 수 있고 물리적 디바이스로 리다이렉트될 수 있다.
데이터 전송 버스, 가상 PCI 디바이스, PCI 대 PCI 브리지, PCI 프로토콜

Description

가상 PCI 디바이스 장치 및 방법{VIRTUAL PCI DEVICE APPARATUS AND METHOD}
본 발명은 일반적으로 컴퓨터와 관계된 것이다. 특히, 데이터 전송 버스들에 관한 것이다.
모두 PCI 특별 관련 그룹에 의해 출간된, PCI 로컬 버스 상세 설계 공표 규칙 2.2 및 PCI 대 PCI 브리지 아키텍쳐 상세 설계 공표 규칙 1.1 은, 네트워크 제어기, 대량 기억 장치 제어기, 디스플레이 제어기, 멀티미디어 디바이스, 통신 디바이스, 및 다른 디바이스들을 한 시스템에 통합시키기 위한 PCI(주변 요소 상호 접속, Peripheral Component Interconnect) 버스 프로토콜을 규정하고 있다. 전기적 특성에 관한 상세 사항 뿐만이 아니라 소프트웨어가 PCI 디바이스와 대화하는 방식까지도 포함하는 PCI 버스 프로토콜은, 호스트 버스, 프로세서, 또는 메모리와 같은 다른 시스템 구성 요소들에서 채택된 특정 프로토콜과는 일반적으로 독립적인 방식으로 주변 장치의 통합을 제공한다.
PCI 프로토콜은 컴퓨터 프로그램이 PCI 디바이스를 직접 액세스하고 컨피규어링하도록 하여 주는 연결 고리(hook)들을 제공한다. 이 고리들 중에는, 컴퓨터 프로그램이, 한 시스템에 장비된 각각의 PCI 디바이스를 선택적으로 검출하고, 벤더 및 디바이스 유형을 식별하고, 각각의 PCI 디바이스의 시스템 리소스에 대한 요구 사항을 결정하고, 시스템 어드레스 스페이스 내에서 각각의 디바이스를 재배치하고, 바인딩을 인터럽트시키고, 인스톨하고, 컨피규어링하고, 사용자 개입 없이 시스템 어드레스 맵 구성을 위해 부트하도록 허용해 주기 위해, 각각의 PCI 디바이스와 관련된 256 8-비트 컨피규레이션 레지스터에 액세스하기 위한 컨피규레이션 어드레스 스페이스가 있다. 컨피규레이션 레지스터는 소정의 헤더 영역 및 디바이스 의존 영역을 포함한다. 그러나, 각 영역에 있어서 필요하고 관계 있는 레지스터만이 구현될 필요성을 갖는다. PCI 대 PCI 브리지는 컨피규레이션 레지스터를 갖는 PCI 디바이스들인데, 이 디바이스들은 레인지(Range) 버스 번호를 PCI 대 PCI 브리지 배후에 있는 PCI 버스들에 부여하기 위해 컴퓨터 프로그램에 대해 액세스 가능한 것들이다.
컨피규레이션 스페이스는 호스트 프로세서 상에서 실행하는 컴퓨터 프로그램에 의해 개시되는 컨피규레이션 사이클을 통해서 액세스된다. PCI 프로토콜은, 호스트 대 PCI 브리지가 소프트웨어 커맨드를 (I/O 스페이스에 대한 프로세서로 개시된 호스트 버스 액세스 시퀀스 형태로), 디바이스에게 현재의 컨피규레이션 사이클에서의 목표라는 것을 표시하기 위해 목표가 된 PCI 디바이스에 의해 수신된 특정 PCI 버스 신호의 표명(assertion)과 관계된 목표가 된 PCI 버스 상의 단일 컨피규레이션 사이클로 번역하는 두개의 구별되는 메커니즘 중에서 어느 하나를 통해서 성취될 것을 예상한다.
한 시스템 내의 PCI 디바이스의 검출 및 초기화는 컨피규레이션 스페이스를 활용함으로써 디바이스에 독립적인 프로그램에 의해 성취될 수 있다. 프로그램은, PCI 디바이스와 버스 0 상에 소재하는 PCI 대 PCI 브리지의 존재를 검출하기 위해 PCI 버스 0 상의 각각의 슬롯에 할당된 컨피규레이션 스페이스에 폴링(POLL)할 것이다. 이 프로그램은 각각의 검출된 PCI 대 PCI 브리지에게 유니크한 버스 번호를 특정 컨피규레이션 레지스터에 기입함으로써 할당하고 이후 PCI 디바이스 및 PCI 대 PCI 브리지를 검출하기 위해 각각의 할당된 버스 상의 각 슬롯에 폴링한다. 이 과정은 각각의 검출된 PCI 버스 상의 각각의 슬롯이 폴링되고 모든 PCI 디바이스가 검출되기까지 계속된다. 이 시스템에 인스톨된 것으로 판명된 각각의 PCI 디바이스에 대해서, 디바이스 컨피규레이션 레지스터는 그 리소스 요구 사항을 판정하기 위해 판독될 수 있다. 시스템 어드레스 맵이 시스템과 여러가지의 PCI 디바이스 중에서의 충돌을 제거하도록 구축될 수 있고 시스템 리소스는 각각의 PCI 디바이스 내의 적합한 컨피규레이션 레지스터에 기입하는 것에 의해 각각의 PC 디바이스에 할당될 수 있다. 추가로, 자가 테스트를 지원하는 디바이스 상에서 자가 테스트가 야기될 수 있고, 임의의 다른 초기화, 인스톨레이션, 및 컨피규레이션이 사용자 개입에 의해 또는 개입 없이 각각의 PCI 디바이스에 대해 이뤄질 수 있다.
PCI 프로토콜에 엄격히 집착할 때에 생기는 불이익에는 데이터 전송 속력, 데이터 경로 폭, 및 밴드 폭에 대한 제한들이 있는데, 이는 PCI 디바이스 성능의 상한을 설정한다. 성능은 호스트 대 PCI 브리지에게 본래적인 지연 뿐만이 아니라 및 공유 PCI 버스 상에 소재하는 다수의 PCI 디바이스들에 본래적인 밴드 폭 제약 요소에 의해 또한 제한 받을 수 있다. 최근 추세는 점점 더 높아지는 성능의 프로 세서, 메모리 및 호스트 버스들을 지향하고 있는데, 여기서 효율적으로 결합된 디바이스들은, 실제의 PCI 버스에 결합했을 때에 획득될 수 있는 낮은 대기 시간, 더 높은 처리량, 및 전체적으로 증가된 시스템 성능과 같은 성능상의 이점을 획득할 수 있다.
PCI 브리지 상세 규칙에서 요구되는 Plug-and-PlayTM 리소스 할당 프로그램은, 전형적으로는 특정 PCI 버스에 할당된 어드레스 스페이스가 이 특정 PCI 버스 배후에 있는 임의의 PCI 버스에 할당된 어드레스 스페이스를 포함하는 것을 예상한다. 따라서, PCI 프로토콜과 완전히 일치시키면 호스트 대 PCI 브리지의 호스트 프로세서 쪽에 PCI 디바이스를 로케이트시키는 것의 어려움이 가중되는데, 여기서, 가능하게는 호환성 이유 때문에, PCI 디바이스는 물리적 PCI 버스에 할당되는 어드레스 스페이스의 부분 집합이 될 수 있는 어드레스 스페이스를 요구한다.
[도면의 간단한 설명]
도1a 및 도1b는 본 발명에 따른 시스템 컨피규레이션을 보여준다.
도2는 더 상세한 시스템 컨피규레이션을 보여준다.
도3은 주 가상 브리지를 갖는 시스템을 보여준다.
도4는 부 가상 브리지 및 주 가상 브리지를 갖는 시스템을 보여준다.
도5, 도6a, 및 도6b는 방법 실시예의 흐름도를 보여준다.
본 발명의 여러 실시예는, 네트워크 제어기, 대량 기억 장치 제어기, 디스플 레이 제어기, 멀티미디어 디바이스, 통신 디바이스, 및 다른 디바이스과 같은 디바이스들을 호스트 버스 프로세서에 통합시키는 것 뿐만이 아니라 디바이스를 프로세서 호스트 버스로 효율적으로 결합시키는 것을 제공한다. PCI 프로토콜의 선택(select) 특징은 PCI 호환 디바이스에만 일반적으로 사용가능한, 이런 디바이스들에 대한 소프트웨어 지원을 인에이블시킨다는 점에 근거한 것이다. 본 발명은, 몇몇 시스템에서, 종래 방법에 비해 다음에 열거되는 다수의 이점 중 적어도 하나를 제공할 수 있다. 증가된 시스템 성능, 증가된 디바이스 성능, 시스템 내의 모든 디바이스에 대한 초기화 및 컨피규레이션의 단순화, 시스템 리소스 할당 과정의 증가된 안정성, 낮아진 전체 비용 및 감소된 물리적 보드/칩 공간뿐만이 아니라 물리적 PCI 버스에 할당된 어드레스 스페이스의 일부분을 호스트 버스에 소재하는 디바이스에 할당하는 것을 인에이블하는 것. 추가로, 본 발명은, 디바이스들을 한 호스트 프로세서로 통합하는 것을 인에이블하는데, 이는 컴퓨터 프로그램에게는 PCI 호환 디바이스의 특성 중 많은 것을 가진 것으로 보이게 하며, 그 결과 전반적인 시스템 비용의 절감, 작은 공간, PCI 버스 상의 프로세서 칩의 핀 개수의 감소 및 증가된 밴드 폭, 증가된 시스템 성능, 또는 증가된 디바이스 성능을 얻게 된다.
도1a, 도1b, 도2, 도3 및 도4는 본 발명의 여러가지 실시예를 설명하기 위한 시스템(100, 200, 300 및 400)의 블럭도를 도시하였다.
프로세서(130)는 호스트 버스(120)에 결합된 임의의 한 프로세서를 나타낸다. 대안으로, 프로세서(130)는 호스트 버스(120)에 결합된 두개 또는 그 이상의 프로세서를 나타낸다.
시스템(100, 200, 300, 400)은 네트워크 제어기, 대량 기억 장치 제어기, 디스플레이 제어기, 멀티미디어 디바이스, 통신 디바이스, 또는 다른 디바이스와 같은 호스트 버스 디바이스(110, 210, 410)을 포함할 수 있다. 호스트 버스 디바이스(110, 210, 410)는, 호스트 버스(120)가 모니터되도록 하며 프로세서가 개시한 호스트 버스 사이클 -이는 비존재 가상 PCI 디바이스(160)를 타깃으로 하고 있음- 이 호스트 버스 디바이스(110)에 의해 포착되도록 하여 주는 방식으로 인터페이스(112)를 통해서 호스트 버스(120)에 결합될 수 있다.
호스트 버스 디바이스(110, 210, 410)는 호스트 버스 사이클을 추적하기 위해 호스트 버스(120)에 결합된 모니터 회로(114)를 포함할 수 있다. 모니터 회로(114)는 각 호스트 버스 사이클 동안에 선택 정보를 포착할 수 있고 스누프(snoop)되어야 할 또는 포착되어야 할 선택 호스트 버스 사이클을 식별한다. 판독 사이클은 선택 호스트 버스 데이터 신호를 구동하여 데이터를 호스트 버스(120)로 보내고 이후 사이클을 종료시킴으로써 포착될 수 있다. 프로세서(130)에 의해 개시된 사이클은 액티브 프로세서(130)에게 호스트 버스(120)에 의해 채택된 특정 프로토콜에 따라서 사이클을 언제 종료할 지를 알려줌으로써 완료된다. 기입 사이클은 호스트 버스(120) 기입 사이클 상의 선택 호스트 버스(120) 데이터 신호의 값을 래치하고 그후 사이클을 완료함으로써 포착될 수 있다. 호스트 버스(120) 사이클은, 이 사이클이 호스트 버스(120)에 결합된 또다른 디바이스에 의해 전형적으로는 완료되면서, 기억부(115) 내에 선택 호스트 버스 사이클 정보를 판독하고 기억시킴으로써 스누프될 수 있다.
호스트 버스 디바이스(110, 210, 410)는 기억부(111)의 콘텐츠가 호스트 버스(120)를 통해서 액세스되도록 허용해 주기 위해 호스트 버스(120)에 결합된 기억부(111)를 포함할 수 있다. 기억부(111)에 대한 여러가지의 특정 실시예는 시스템 컨피규레이션 스페이스 또는 랜덤 액세스 메모리(RAM)에 소재하는 레지스터(216, 218, 417), 레지스터, 또는 시스템 I/O 또는 메모리 어드레스 스페이스에 소재하는 데이터 포트들을 포함할 수 있다.
PCI 프로토콜은 PCI 디바이스가 소재할 수 있는 각 PCI 버스 상에 어떤 개수의 어드레스 가능한 슬롯을 제공한다. PCI 대 PCI 브리지는 두개의 PCI 버스 간의 전송 경로를 제공하는 PCI 디바이스이다. 컴퓨터 프로그램은 전형적으로는 검출된 PCI 대 PCI 브리지의 바로 뒤에 있는 각 PCI 버스에게 유니크한 버스 번호를 부여한다. PCI 버스 번호 및 슬롯 번호 조합은 컨피규레이션 스페이스를 통해서 시스템에 인스톨된 임의의 특정 PCI 디바이스를 선택하도록 컴퓨터 프로그램에 의해 사용될 수 있는 유니크한 식별자를 제공한다. PCI 어드레싱 및 라우팅 프로토콜은, 특정 PCI 디바이스를 목표로 하는 호스트 버스 사이클이 호스트 대 PCI 브리지를 통해서 및 가능하게는 하나 또는 그 이상의 PCI 대 PCI 브리지를 통해서 물리적으로 라우팅되어 목표로 된 PCI 디바이스가 소재하는 특정 PCI 버스 상에서 사이클을 발생하도록 하는 물리적 버스 계층 구조를 일반적으로 예상하고 있다.
상세한 설명의 편의상, 주 PCI 버스(150)는 버스 번호 0이고, 호스트 대 PCI브리지 바로 뒤에 위치한 버스일 수 있다. 그렇지만 이는 버스 번호 0 뒤에 있고 가상 PCI 디바이스(150)가 배후에 있는 것처럼 보이는 임의의 PCI 버스일 수 있다. 그리고 특정 시스템에서 하나 이상의 주 PCI 버스가 있는 것은 본 발명의 방법과 일치한다. 또한, 주 PCI 버스(160)는 실제의 PCI 버스일 수 있고 가상 버스일 수도 있다. 상세한 설명의 편의상, 가상 및 논리적이라는 용어는 임의의 하나 또는 그 이상의 프로세서(130) 상에서 실행되는 컴퓨터 프로그램의 관점에 근거하여 쓰인 것인데, 여기서는 프로그램이 실제의 물리적 디바이스 또는 구조를 반영하지 않을 수도 있는 물리적 디바이스 또는 구조를 인지하는 것에 대해 쓰인다. 가상 PCI 디바이스(160)는 논리적으로 PCI 버스(151) 상에 소재하는데, 이는 주 PCI 버스(150)의 확장이거나 또는 이것의 하위 구조 중 하나(예로, 주 PCI 버스(150)의 배후에 소재하는 버스들)이다.
호스트-대-PCI 브리지(140, 240, 340)는 주 PCI 버스(150) 및 이것의 하위 버스들에 대한 선택 호스트 버스(120) 사이클의 번역 및 라우팅을 촉진시킬 수 있다. 호스트-대-PCI 브리지(140, 240, 340)는, 각 호스트 버스 사이클에 대해서 호스트 버스 사이클을 실제의 주 PCI 버스(150)로 라우팅할 지의 여부를 결정하도록호스트 버스(120) 사이클을 추적하기 위해, 호스트 버스 인터페이스(141), PCI 버스 인터페이스(142), 기억부(145), 기억부(149), 및 제어 회로(148)를 포함할 수 있다. 이 결정을 내리기 위해, 제어 회로(148)는 주 PCI 버스(150) 및 그 하위 구조에 할당된 어드레스 스페이스를 식별하는 기억부(145)와, 가상 PCI 디바이스(160) 또는 가능하게는 다른 가상 디바이스에 할당된 어드레스 공간을 식별하는 기억부(149)에 조회한다. 기억부 (145) 및 (149)는 버스 번호, 메모리 어드레스 범위, I/O 어드레스 범위 또는 다른 유사 정보의 형태로 정보를 유지할 수 있다. 가상 PCI 디바이스(160)(또는, 더 복잡한 컨피규레이션에서는 가상 디바이스 또는 버스들의 모든 또는 한 그룹에 대해) 할당된 어드레스 범위를 표시하는, 기억부(149)내의 정보는 주 PCI 버스(150) 및 그 하위 구조에 일반적으로 할당된, 기억부(145) 내의 어드레스 스페이스의 부분 집합일 수 있다. 가상 PCI 디바이스(160)을 목표로 하는 호스트 버스 사이클은 호스트 버스 디바이스(110, 210, 310)에 의해 포착되도록 허용된다.
호스트 버스(120)가 PentiumTM 3 또는 4 프로세서의 프로토콜을 활용하는 시스템에서, 호스트-대-PCI 브리지(140, 240, 340)는 모든 호스트 버스 사이클에 대한 리스폰더(responder)가 될 수 있어서 모든 호스트 버스 사이클이 호스트 버스 프로토콜에 따라서 완료되는 것을 보장해 주고 호스트 버스 디바이스(110)는 이것이 포착하는 선택 호스트 버스 사이클을 클레임할 수 있다.
가상 PCI 디바이스(160)를 목표로 하는 호스트 버스 사이클을 식별하는 데에 요구되는 정보 및 이 정보가 획득되는 방식은 특정 시스템의 버스 구조에 좌우될 수 있다. 가상 PCI 디바이스(160)의 유니크한 버스-디바이스 번호 조합은 시스템(100) 내의 호스트 버스 디바이스(110) 및 호스트 대 PCI 브리지 모두의 내로 하드와이어(hardwire)되거나 미리 프로그램될 수 있는 데, 여기서 가상 PCI 디바이스(160)는 주 PCI 버스(150) 상에 논리적으로 소재한다.
시스템(100, 200, 300, 400)이, 두개, 세개 또는 그 이상의 호스트 버스 디바이스(110, 210, 410) 또는 그 각각이 그 내에 집적된 하나 또는 그 이상의 호스 트 버스 디바이스(110, 210, 410)를 구비한 두개, 세개 또는 그 이상의 프로세서(130)를 갖는 것은 본 발명의 방법에 부합된다. 본 발명의 방법은 다수의 별개의 호스트 버스 디바이스(110)로 구성된 시스템(100)에 응용될 수 있는데, 그 각각은 다수의 별개의 가상 PCI 디바이스(160) 중 하나와 관련되어 있다. 다수의 가상 PCI 디바이스(160) 중의 임의의 하나를 목표로 하는 호스트 버스(120) 사이클은 호스트 대 PCI 브리지(140)에 의해 주 PCI 버스(150)로 포워드되지 않고, 그보다는 호스트 버스 디바이스(110) 중 하나가 이 사이클을 포착하도록 허용된다. 하나 이상의 호스트 버스 디바이스(110)는 특정 가상 PCI 디바이스(160)와, 두개 또는 그 이상의 호스트 버스 디바이스(110)가 특정 가상 PCI 디바이스에 할당된 시스템 리소스를 활용할 수 있도록 연관될 수 있다. 역으로, 단일 호스트 버스 디바이스(110)는 하나 이상의 가상 PCI 디바이스(160)와 관련될 수 있다. 또한, 호스트 버스 디바이스(110)는 PCI 프로토콜에 따라 다수의 기능을 지원할 수 있다. 다수의 호스트 버스 디바이스가 동일한 가상 PCI 디바이스(160)에 대한 사이클을 포착하는 것을 방지하기 위한 방식은, 관련된 가상 PCI 디바이스(160)을 식별하기 위한 유니크 버스 번호-디바이스 번호 조합으로 각각의 호스트 버스 디바이스(110)를 하드와이어하거나 미리 프로그램함으로써 구현될 수 있다.
도1a는 인터페이스(112)를 통해 호스트 버스에 결합된 호스트 버스 디바이스(110)를 보여주는데, 이는 프로세서(130)에 대한 호스트 버스 인터페이스와는 별개의 것이다. 도1b는 본 발명의 방법과 일치하는 대안 구성을 도시하였는데, 여기서 프로세서(130) 및 호스트 버스 디바이스(110)는 내부 버스(113) 및 공 유 호스트 버스 인터페이스(112)를 통해서 호스트 버스(120)에 결합된다. 도1b의 시스템은 호스트 버스 디바이스(110) 및 프로세서(130)를 단일 회로 패키지에 통합시킴으로써 귀결된다.
도2는 도1에 도시된 시스템(100)에 대한 교시에 따른 본 발명의 실시예를 설명하기 위한 시스템(200)을 보여 준다. 시스템(200)은 가상 PCI 디바이스(160)를 포함하는데, 이는 하나 또는 그 이상의 프로세서(130)상에서 실행되는 컴퓨터 프로그램의 관점에서 보이는 것이고, 이 가상 PCI 디바이스(160)는 컨피규레이션 스페이스를 통해 액세스 가능한 256 8-비트 컨피규레이션 레지스터(268)를 포함한다. 필요하고 관련있는 컨피규레이션 레지스터(268)만이 구현된 것으로 보인다. PCI 프로토콜에 따라서, 컴퓨터 프로그램은 가상 PCI 디바이스(160)의 존재를 검출하고 가상 디바이스(160)의 시스템 리소스 요구를 결정하는 벤더 및 디바이스 유형을 식별하고, 풀 디바이스 재배치와, 인터럽트 바인딩, 인스톨레이션, 컨피규레이션, 사용자 개입 없는 부팅을 제공하는 것을 포함하고, 및 시스템 맵 구성에 있어서의 가상 PCI 디바이스를 포함하는 하나 또는 그 이상의 기능을 이루기 위해 가상 컨피규레이션 레지스터(268)에 대한 액세스를 개시할 수 있다.
호스트 버스 디바이스(210)는 호스트 버스 기억부(111)를 포함할 수 있는데, 이는 본 실시예에서, 메모리 디바이스 어레이가 될 수 있는 PCI 호환 컨피규레이션 레지스터(218)로 구성된다. 필요하고 관계 있는 레지스터(218)만이 구현된다. 모니터 회로(114)는 호스트 버스 사이클을 추적하고 가상 컨피규레이션 레지스터(268)을 목표로 하는 호스트 버스 사이클을 식별하는데, 이는 포착되고 리다이렉트되어 호스트 버스 디바이스 컨피규레이션 레지스터(218)에 액세스하게 된다. 그 결과, 프로세서(130)상에서 실행되는 컴퓨터 프로그램은 가상 PCI 디바이스(160)의 컨피규레이션 레지스터(268)를 목표로 하는 호스트 버스 사이클을 개시함으로써 호스트 버스 디바이스 컨피규레이션 레지스터 (218)에 액세스할 수 있다. 이런 방식으로, 호스트 버스 디바이스(210)는 일반적으로는 PCI 디바이스에 대해서만 쓰일 수 있는 시스템 리소스를 할당하기 위한 초기화 및 컨피규레이션 과정에 참여한다.
컨피규레이션 사이클은 PCI 프로토콜에 의해 제공된 두개의 맵핑 메커니즘 중 어느 하나를 통해서 시스템(200)에서 발생된다. 메커니즘 1은 프로세서 I/O 스페이스 내의 두개의 고정 로케이션이 컨피규레이션-어드레스 레지스터(243) 및 컨피규레이션-데이터 레지스터(244)에 대해 유보되는 인덱싱 방식인데, 이 레지스터들은 전형적으로는 호스트-대-PCI 브리지(240) 내에 포함된다. 컨피규레이션-어드레스 레지스터(243)는 컨피규레이션 스페이스를 인에이블하거나 디스에이블하고 컴퓨터 프로그램에 의해 기입되어, 다음 컨피규레이션 사이클이 의도하고 있는 버스 번호, 디바이스 번호, 기능 번호, 및 레지스터 번호를 특정함으로써 특정 PCI 디바이스 및 특정 컨피규레이션 레지스터를 식별한다. 컨피규레이션-데이터 레지스터(244)를 목표로 하는 다음 순서의 DWORD 판독 및 기입 호스트 버스 사이클은, 전형적으로는 호스트 대 PCI 브리지(240)에 의해 PCI 호환 컨피규레이션 사이클로번역되고 라우팅된다. 그러나, 가상 PCI 디바이스(160)의 컨피규레이션 레지스터(268)를 목표로 하는 호스트 버스 사이클은, 오히려 그후 PCI 프로토콜에 의해 예상되는 것처럼 호스트 대 PCI 브리지(240)에 의해 라우팅되기 보다는 호스트 버 스 디바이스(210)에 의해 포착된다.
메커니즘 1을 지원하는 시스템(200)은 기억부(115) 내에 포함된 미러 레지스터(216)를 제공할 수 있는데, 이는 스누핑을 통해 획득된 선택 정보를 보유한다. 컨피규레이션-어드레스 레지스터(243)를 목표로 하는 호스트 버스(120) 기입 사이클은 호스트 버스 디바이스(210)에 의해 스누핑될 수 있으며 스누핑 사이클에서 전송된 데이터는 미러 레지스터(216)에 기억될 수 있고 미러 레지스터는 이후 컨피규레이션-어드레스 레지스터(243)의 콘텐츠를 리플렉트(reflect)한다. 모니터 회로(114)는 미러 레지스터(216)를 조회하여 가상 컨피규레이션 레지스터(268)에 액세스하기 위해 의도된 컨피규레이션-데이터 레지스터(244)를 목표로 하는 차순의 DWORD 호스트 버스(120)를 식별하게 된다. 이런 식별된 사이클은 호스트 버스 디바이스(210)에 의해 포착되며 호스트 버스 디바이스(210)내의 상응하는 컨피규레이션 레지스터(218)에 액세스하도록 리다이렉트된다.
대안으로, 시스템(200)은 메커니즘 2를 지원할 수 있는데, 여기서 전형적으로는 호스트 대 PCI 브리지(240)에 소재하는, 컨피규레이션-스페이스-인에이블 레지스터(도시안됨) 및 포워드 레지스터(도시 안됨)가 검퓨터 프로그램에 의해 기입되어 프로세서 I/O 어드레스 스페이스의 고정된 로케이션 내로 맵핑될 4k 바이트의 컨피규레이션 스페이스를 특정하게 된다. 메커니즘 2를 지원하도록 디자인된 시스템(200)은, 컨피규레이션-스페이스-인에이블 레지스터(도시 안됨) 및 포워드 레지스터(도시 안됨)를 목표로 하는 스누핑된 호스트 버스 기입 사이클을 기억하기 위해 미러 레지스터(216)를 제공할 수 있다. 미러 레지스터(216)는 가상 디바이스의 컨피규레이션 레지스터(268)를 목표로 하는 호스트 버스 사이클을 식별하기 위해 모니터 회로(114)에 의해 조회될 수 있다. 식별된 사이클은 호스트 버스 디바이스(210)에 의해 포착될 수 있으며 호스트 버스 디바이스(210)의 상응하는 컨피규레이션 레지스터(218)에 액세스하도록 리다이렉트된다.
PCI 프로토콜에 따라서 컨피규레이션 레지스터는, 인터럽트, 프로세서 메모리 어드레스 스페이스, 프로세서 I/O 어드레스 스페이스, 및 ROM(Read Only Memory)을 위해 유보된 프로세서 메모리 어드레스 스페이스의 범위인 ROM 어드레스 스페이스를 포함하는 시스템 리소스를 할당하기 위해, 컴퓨터 프로그램에 의해 활용될 수 있다. 컴퓨터 프로그램은 가상 PCI 디바이스(160)의 시스템 요구 사항을 결정하고 선택 컨피규레이션 레지스터(268)에 기입함으로써 가상 PCI 디바이스(160)에 리소스를 할당하기 위해, 존재하지 않는 가상 컨피규레이션 레지스터(268)에 대한 액세스를 개시시킬 수 있다. 컴퓨터 프로그램은 또한 재앙적 에러를 취급할 뿐만이 아니라 내장형 자가 테스트(BIST)를 실행하고 그 상태를 획득하기 위해 가상 디바이스의 컨피규레이션 레지스터(268)에 액세스할 수 있다.
선택적으로는, 호스트 버스 디바이스 컨피규레이션 레지스터(218)는 가상 PCI 디바이스(260)에 할당된 하나 또는 그 이상의 메모리 스페이스 또는 I/O 스페이스의 범위와 같은 특정 시스템 리소스에 대한 리퀘스트를 나타내도록 구현될 수 있다. 내부 기억부(111)의 일부는 컴퓨터 프로그램에 의해 호스트 버스(120)을 통한 액세스용의 어드레스 스페이스 내로 맵핑될 수 있다. 컴퓨터 프로그램이 어드레스 스페이스를 가상 PCI 디바이스(160)로 할당한 후에, 모니터 회로(114)는, 이 선 택 실시예에서, 적합한 컨피규레이션 레지스터(218)에 조회하여 호스트 버스 사이클이 가상 PCI 디바이스(160)에 할당된 메모리 또는 I/O 스페이스를 목표로 하는지의 여부를 식별한다. 이렇게 식별된 사이클은 호스트 버스 디바이스(210)에 의해 포착되며 호스트 버스 기억부(111)에 액세스하도록 리다이렉트된다.
호스트 버스 디바이스(210) 및 호스트 대 PCI 브리지(240) 모두는 가상 PCI 디바이스(160)의 버스 번호 및 디바이스 번호를 인지할 수 있다. 본 정보는 시스템 초기화 동안에 프로그램에 의해 하드와이어되고, 미리 프로그램되거나, 또는 제공될 수 있고, 가상 PCI 디바이스(160) 컨피규레이션 스페이스를 목표로 하는 호스트 버스 사이클을 식별하는 데에 사용된다. 호스트 대 PCI 브리지(240)는 가상 PCI 디바이스(160)에 할당되는 어드레스 스페이스를 특정하는 특정 가상 컨피규레이션 레지스터(268)를 목표로 하는 선택 호스트 버스 기입 사이클을 스누핑함으로써 가상 PCI 디바이스에 할당된 어드레스 스페이스를 알 수 있다.
도3은 시스템(100) 및 시스템(200)의 교시에 따라, 본 발명의 한 실시예를 설명하기 위한 시스템(300)이다. 시스템(300)은 컨피규레이션 스페이스를 액세스하기 위해 메커니즘 1을 구현한다. 시스템(300)은 프로세서(130)상에서 실행되는 컴퓨터 프로그램에게 주 PCI 버스(150) 상에 소재하는 것으로 보이고, 주 가상 PCI 버스(357)에 대해 브리지로서 보여질 수 있는 주 가상 PCI 대 PCI(P-P) 브리지(370)로 구성될 수 있다. 가상 PCI 버스(360)는 프로세서(130)상에서 실행되는 컴퓨터 프로그램에게는 주 가상 버스(357) 상에 소재한 것으로 보여진다.
본 실시예에서, 호스트 버스 디바이스(210) 및 호스트 대 PCI 브리지(340) 모두는 주 가상 P-P 브리지(370)가 소재하는 버스 번호 및 디바이스 번호를 인지하고 호스트 버스 디바이스(210)는 가상 PCI 디바이스(360)의 디바이스 번호를 인지한다. 이 정보는 초기화 프로그램에 의해 제공될 수 있거나 하드와이어되거나 또는 미리 프로그램될 수 있다.
호스트 대 PCI 브리지(340)는 기억부(149)를 포함할 수 있는데, 기억부는 본 실시예에서 Plug-and-PlayTM 리소스 할당 프로그램과 같은 컴퓨터 프로그램에 의해 기입되어 가상 디바이스(160)에 할당된 모든 어드레스 스페이스를 포괄하는 어드레스 스페이스를 주 PCI 버스(150)에 할당할 수 있다. 기억부(149)에 기억된 정보는 주 PCI 버스(357)의 배후에 소재할 수 있는 가상 버스(도시 안됨)의 버스 번호를 포함할 수 있고, 버스 번호는 주 PCI 버스(357) 및 그 하위 구조에 할당된 컨피규레이션 스페이스를 결정하는데에 공통적으로 충분한 정보이다. 선택적으로는, 기억부(149)는 주 PCI 버스(357) 및 임의의 하위 구조에 할당된 메모리 스페이스 또는 I/O 스페이스를 포함할 수 있다. 본 실시예에서, Plug-and-PlayTM 프로토콜에 따라서, 주 PCI 버스(357)에 할당된 어드레스 스페이스는 전형적으로는 임의의 선택적 하위 버스(도시 안됨) 및 가상 PCI 디바이스(160)에 할당된 어드레스 스페이스를 포괄할 수 있어서, 가상 PCI 버스(357) 및 임의의 선택적 하위 가상 버스들을 목표로 하는 호스트 버스 사이클을 식별하도록, 호스트 대 PCI 브리지(340)에 의한 쉽고 효율적인 디코드가 귀결된다.
호스트 대 PCI 브리지(340)는 주 가상 P-P 브리지(370)의 가상 컨피규레이션 레지스터(378)를 목표로 하는 호스트 버스 사이클을 식별하고 이런 식별된 사이클을 호스트 대 PCI 브리지 컨피규레이션 레지스터(347)로 라우팅하기 위해 제어 회로(148)에 의해 조회될 수 있는 브리지 컨피규레이션 레지스터(347)를 포함할 수 있다. 본 실시예에서, 제어 회로(148)는 호스트 버스 사이클을 주 PCI 버스(150)로 라우팅할 지의 여부를 결정하기 위해 브리지 컨피규레이션 레지스터(347)와 기억부(145)와 기억부(149)에 모두 조회할 수 있다.
호스트 버스 디바이스(210)는 주 가상 P-P 브리지(370)의 컨피규레이션 레지스터(378)을 목표로 하는 호스트 버스 사이클을 스누핑할 수 있어서 컴퓨터 프로그램에 의해 주 가상 PCI 버스(357)에 할당된 버스 번호를 알아내고 이 정보를 기억부(115) 내에 저장하는데, 기억부는 스누핑을 통해서 획득된 선택 정보를 보유한다. 단지 하나의 호스트 버스 디바이스(210)를 갖는 시스템은 디바이스 번호를 가상 PCI 디바이스(160)에게 마음대로 할당할 수 있다. 다수의 호스트 버스 디바이스(210)을 갖는 시스템은 각각의 호스트 버스 디바이스(210)를 별개의 가상 PCI 디바이스(360)와 관련짓기 위한 메커니즘을 요구할 수 있는데, 예로 각각에게 유니크한 디바이스 번호(예로 슬롯 번호)를 제공하는 것이 있고, 이는 하드와이어되거나 미리 프로그램되거나, 또는 초기화 프로그램에 의해 기억될수 있다.
도4는, 도3에 도시된 시스템(300)에 대한 교시에 따라서 본 발명의 실시예를 설명하기 위한 시스템(400)을 도시하였다. 호스트 버스 디바이스(410)는 호스트 버스 디바이스(210) 및 (310)에 대해 주어진 설명에 맞춰질 수 있다. 시스템(400)은 컨피규레이션 스페이스를 액세스하기 위해 메커니즘 1을 구현한다. 시스템(400)은 부 가상 P-P 브리지(490)로 추가로 구성되고, 이는 부 가상 PCI 버스(451)와 직접 인터페이스한다. 부 가상 P-P 브리지(490)는 프로세서(130) 상에서 실행되는 컴퓨터 프로그램의 관점에서 볼 때, 주 가상 PCI 버스(357) 상에 소재하는 것으로 보이고, 가상 PCI 디바이스(160)는 논리적으로는 부 가상 PCI 버스(451) 상에 소재할 수 있다.
부 가상 버스(451)는 주 가상 PCI 버스(357)에 종속적이고, 본 실시예에서 부 가상 버스(451) 및 가상 PCI 디바이스(160)에 할당된 어드레스 스페이스는 주 가상 PCI 버스(357)에 할당된 어드레스 스페이스 내에 있다. 호스트 대 PCI 브리지(340)는 주 PCI 버스(150) 및 그 하위 구조를 목표로 하는 호스트 버스 사이클 을 식별하고 라우팅하기 위해 기억부(145)에 조회할 수 있고, 주 가상 버스(357) 및 그 하위 구조를 목표로 하는 호스트 버스 사이클을 식별하기 위해 기억부(149)에 조회할 수 있다. 주 가상 버스(357) 및 그 하위 구조를 목표로 하는 호스트 버스 사이클은 주 PCI 버스(450)로 포워드되지 않지만 호스트 버스 디바이스(410)에 의해 포착되도록 허용될 수 있다. 호스트 대 PCI브리지(340)는 호스트 버스 프로토콜에 따라서 포착된 호스트 버스(430) 사이클을 완료할 수 있다(즉, 종료시킬 수 있다).
호스트 버스 디바이스(410)는 호스트 버스에 결합되고 프로세서(130)에 의해 액세스 가능한 기억부(111)를 포함할 수 있다. 기억부(111)는, 가상 PCI 디바이스(160)의 컨피규레이션 레지스터(268)를 목표로 하는 호스트 버스 사이클에 의해 액세스되는 디바이스 컨피규레이션 레지스터(218)로 구성될 수 있다. 또한, 기억부(111)는 부 가상 P-P 브리지(490)의 가상 컨피규레이션 레지스터(497)를 목표로 하는 호스트 버스 사이클에 의해 액세스되는 브리지 컨피규레이션 레지스터(417)로 더 구성될 수 있다.
시스템(300)에 유사하게, 호스트 버스 디바이스(410) 및 호스트 대 PCI 브리지(340) 모두는, 본 실시예에서, 주 가상 P-P 브리지(370)가 소재하는 버스 번호 및 디바이스 번호를 인지할 수 있다. 본 정보는 초기화 프로그램에 의해 제공될 수 있거나, 하드와이어될 수 있고, 미리 프로그램될 수 있다. 추가적으로, 호스트 버스 디바이스(410)는 본 실시예에서, 주 가상 P-P 브리지(370)의 컨피규레이션 레지스터(378)를 목표로 하는 호스트 버스 사이클을 스누핑함으로써 주 가상 PCI 버스(357) 및 그 하위 구조에 할당된 버스 번호를 인지할 수 있다. 스누핑을 통해서 획득된 본 정보는 기억부(115)에 기억될 수 있다. 단일 호스트 버스 디바이스(410)로 구성된 시스템(400)에서, 부 가상 P-P 브리지(490)의 디바이스 번호는 마음대로 할당될 수 있다.
다수의 호스트 버스 디바이스(410)을 갖는 시스템에서, 관련된 부 가상 P-P브리지(490)에 대한 유니크한 디바이스 번호를 각각의 호스트 버스 디바이스(410)에게 할당하는 것과 같이 각각의 호스트 버스 디바이스를 별개의 부 가상 P-P 브리지(490)와 관련짓는 메커니즘이 요구되는데, 이는 하드와이어될 수 있거나, 미리 프로그램될 수 있거나 또는 초기화 프로그램에 의해 할당될 수 있다. 각각의 호스트 버스 디바이스(410)는, 컴퓨터 프로그램에 의해 기입된 후에 내부 컨피규레이션 레지스터(417)에 조회하여서 관련 부 가상 P-P 브리지의 바로 뒤에 있는 부 가상 버스(451)에 할당된 버스 번호를 결정하고 그후 각각의 하나 또는 그 이상의 가상 PCI 디바이스(460)에게 디바이스 번호를 마음대로 할당할 수 있다. 본 정보는, 시스템(100)에서 설명한 것과 유사한 방식으로 모니터 회로(114)에 의해 조회되어 가상 PCI 디바이스(160)를 목표로 하는 호스트 버스 사이클을 식별할 수 있다. 각각의 호스트 버스 디바이스(410)는 각각 관련된 부 가상 PCI 버스(451) 상에 논리적으로 소재하는 별개의 가상 디바이스(160)와 관련된 다수의 물리적 디바이스를 포함할 수 있다. Plug-and-PlayTM 프로그램은 각각의 부 가상 P-P 브리지(490) 배후에 소재하는 모든 가상 디바이스(160)에 할당된 리소스를 전형적으로는 그룹화하여포착될 사이클을 식별하기 위한, 각각의 호스트 버스 디바이스(410)에 의한 쉬운 호스트 버스 사이클 디코드로 귀결시킨다. 예로, 단일 메모리 어드레스 범위는 각 디바이스에 할당된 다수의 범위를 포괄하는 부 가상 P-P 브리지(490)에 할당될 수 있다.
도5는 시스템 (100, 200, 300, 400)에 의해 활용될 수 있고 모니터 회로(114)에 의해 실행될 수 있는 본 발명의 방법(500)을 설명하기 위한 흐름도이다. 개시(510)는 호스트 버스 리세트가 될 수 있는데, 이는 기억부 및 레지스터가 디폴트 값에 설정되는 것으로 귀결된다. 다음 단계들은 각각의 호스트 버스 사이클에 대해 실행될 수 있다. 포착(520) 단계는 호스트 버스 사이클을 대기하고 그후에 현재의 호스트 버스 사이클에 대한 타깃을 표시하는 선택 호스트 버스 어드레스 및 제어 신호를 수신하고 래칭하는 단계와 관계된다. 액세스하는 다음 단계(540)는 포착 단계(550)에 진입할 것인가 또는 스누핑 단계(560)에 진입할 것인가의 여부를 결정하기 위해 각 포착된 사이클을 평가하는 단계와 관련된다. 스누핑 단계(560)는 선택 호스트 버스 데이터 신호(120)를 수신하고 기억부(115)에 기억시키는 것과 관계된다. 액세스 단계(550)는 각각의 포착된 사이클을 평가하여 현재 사이클에서 아무것도 하지 않고 단계(520)로 진입하여 다음의 호스트 버스 사이클을 포착할 것인지 또는 사이클 포착 단계(580)에 진입할 것인지의 여부를 결정하는 것을 포함하는데, 이는 현재 호스트 버스 사이클이 라우팅되어 호스트 버스 기억부(111) 내의 적합한 로케이션에 액세스(판독 또는 기입)하도록 한다. 단계 (540) 및 (550)은 병렬로 처리되거나 또는 단계(540,550)중 하나가 다른 것에 선행할 수 있다.
도6a 및 도6b는 도4에 도시된, 시스템(400)의 모니터 회로(114)에 의해 실행되는 방법(600)을 설명하기 위한 흐름도를 도시하였다. 개시(610) 및 포착(620)은 각각 단계(510 및 520)에서 설명된 것과 동일할 수 있다. 액세스(540)와 스누핑(560)은 단계(641, 642, 662, 및 664)에 의해 성취된다. 유사하게 액세스 단계(550) 및 포착 단계(580)는 단계(643, 644, 645, 682, 684 및 686)에 의해 이뤄질 수 있다. 액세스 단계(641-645)는 호스트 버스 사이클의 어드레스 페이즈 동안 실질적으로 병렬로 이뤄질 수 있고 스누핑 단계(662, 664) 또는 포착 단계(682, 684, 686)가 실행된다면, 이후 스누핑 또는 포착 단계는 호스트 버스 사이클의 데이터 페이즈 동안에 일어날 수 있다. 스누핑된 사이클은 호스트 버스 디바이스(410) 이외의 디바이스에 의해 완료될 수 있고(즉, 종료될 수 있고) 포착 된 사이클은 호스트 버스 디바이스(410)에 의해 완료될 수 있다.
액세스 단계(641)는 현재 포착된 호스트 버스 사이클이 컨피규레이션-어드레스 레지스터(243)로 목표가 정해져 있는지의 여부에 대한 평가를 포함한다. 긍정적인 평가는 단계(662)가 진입되는 결과를 낳고 현재 포착된 사이클에 의해 전송된 데이터는 스누핑되고 이 데이터의 일부 또는 전부가 미러 레지스터(216)에 기억된다. 부정적인 평가는 단계(642)가 실행되는 결과를 낳는다.
액세스 단계(642)는 포착된 호스트 버스 사이클이 버스 번호를 주 가상 P-P브리지(370)로 할당하기 위한 특정 가상 컨피규레이션 레지스터(378)를 목표로 하는지의 여부에 대한 평가를 포함한다. 긍정적인 평가는 미러 레지스터(216)의 콘텐츠에 의해 리플렉트된 컨피규레이션-어드레스 레지스터(243)가 컨피규레이션 스페이스가 인에이블되는 것을 나타내는 값과 주 가상 버스(357)에 할당된 버스 번호를 특정하는 주 가상 P-P 브리지(370)의 특정 컨피규레이션 레지스터(378)로 현재 포인팅하는 값을 갖도록 요구한다. 긍정적인 평가는 또한 포착된 판독 또는 기입 호스트 버스 사이클이 컨피규레이션-데이터 레지스터(244)를 목표삼도록 요구한다. 단계(642)에서의 긍정적인 평가는 스누핑 단계(664)에 진입하는 결과를 낳는데, 여기서 현재 사이클에서 전송되는 몇몇의 또는 모든 호스트 버스(120) 데이터가 래치되고 기억부(115)에 기억된다.
액세스 단계(643)는 현재 사이클이 부 P-P 브리지(490)의 컨피규레이션 스페이스로 목표를 하고 있는 지의 여부를 평가하는 것을 포함한다. 긍정적인 평가는 (미러 레지스터(216)의 콘텐츠에 의해 리플렉트되는 대로) 컨피규레이션-어드레스 레지스터(243)가 컨피규레이션 스페이스가 인에이블되는 것을 나타내는 값과 부 P-P 브리지(490)의 컨피규레이션 레지스터(497)로 현재 포인팅하는 값을 가질 것을 요구한다. 긍정적인 평가는 또한 포착된 사이클이 컨피규레이션-데이터 레지스터(244)를 목표로 하는 판독 또는 기입 호스트 버스 사이클일 것을 요구한다. 단계(643)에서의 긍정적인 평가는 포착 단계(682)가 진입되어 부 가상 P-P 브리지(490)을 위한 것인 컨피규레이션 레지스터(417)로 현재 호스트 버스 사이클을라우팅하는 결과를 낳는데, 여기서 액세스된 특정 컨피규레이션 레지스터(417)는 미러 레지스터(216)의 현재 콘텐츠에 의해 결정된다.
액세스 단계(644)는 포착된 호스트 버스 사이클이 가상 PCI 디바이스(160)의 컨피규레이션 스페이스를 목표로 하고 있는지의 여부를 평가하는 것을 포함한다. 긍정적인 평가는 (미러 레지스터(216)의 콘텐츠에 의해 리플렉트되는 대로) 컨피규레이션-어드레스 레지스터(243)가 컨피규레이션 스페이스가 인에이블되는 것을 나타내는 값과 가상 PCI 디바이스(160)의 컨피규레이션 레지스터(268)로 현재 포인팅하는 값을 가질 것을 요구한다. 긍정적인 평가는 또한 포착된 사이클이 컨피규레이션-데이터 레지스터(244)를 목표로 하는 판독 또는 기입 호스트 버스 사이클일 것을 요구한다. 단계(644)에서의 긍정적인 평가는 포착 단계(684)가 진입되어 미러 레지스터(216)의 콘텐츠에 의해 나타난 대로 특정 호스트 버스 컨피규레이션 레지스터(218)를 액세스하기 위해 현재 호스트 버스 사이클을 라우팅하는 결과를 낳는다.
액세스 단계(645)는 포착된 호스트 버스 사이클이 컴퓨터 프로그램에 의해 가상 PCI 디바이스(160)에게 할당된 메모리 또는 I/O 어드레스 스페이스를 목표로 하는 지의 여부를 평가하는 것을 포함한다. 가상 PCI 디바이스(460)에게 할당된 메모리 또는 I/O스페이스를 특정하는 특정 컨피규레이션 레지스터(218)가 미리 설정되지 않았다면, 본 평가의 결과는 항상 부정적일 것이다. 가상 PCI 디바이스(160)에 할당된 어드레스 스페이스는 PCI 컨피규레이션 레지스터(218)의 현재 콘텐츠에 의해 결정되는 대로, 포착된 호스트 버스 사이클 정보와 비교된다. 현재 호스트 버스 사이클의 타깃이 가상 PCI 디바이스(160)에게 할당된 어드레스 스페이스내에 있다면, 그후 단계(686)가 진입되어 포착된 호스트 버스 사이클의 어드레스 및 제어 신호에 의해 표시된 것처럼 적합한 내부 기억부(111)로 현재 호스트 버스(420) 사이클을 라우팅한다.
당업자는 여기 설명된 기능이 본 발명의 사상을 벗어나지 않고서 여기 설명된 것과 다른 물리적 디바이스로 구현될 수 있음을 알 것이다.
본 발명이 PCI 시스템에 대해 응용되는 것으로 설명되었지만, 당업자는 여기 개시된 방법이 호스트 버스 및 (PC I호환 버스와 유사한) 주변 버스를 갖는 임의의 시스템에서 활용될 수 있음을 알 것이며, 여기서 시스템 내의 프로세서 상에서 실행되는 컴퓨터 프로그램에게 주변 버스 상에 소재하는 것으로 보여지는 호스트 버스에 결합된 디바이스를 가짐으로써 그 이점들이 획득된다는 것을 알 것이다.

Claims (30)

  1. 삭제
  2. 다수의 데이터를 기억하고, 제1 경로를 통해 호스트 버스에 결합되고, 다수의 제어 신호 중 하나 또는 그 이상의 것에 응답하여 상기 데이터의 선택된 부분을 상기 호스트 버스 상으로 전송하는 제1 기억부와,
    상기 호스트 버스에 결합되고, 프로세서로 개시된 호스트 버스 사이클을 추적하고 주 PCI 버스 배후에 논리적으로 소재하는 가상 PCI 디바이스를 목표로 하는 프로세서로 개시된 호스트 버스 판독 사이클을 식별하는 모니터 회로 -상기 주 PCI버스는 상기 제1 경로와 별개인 제 2 경로를 통해 상기 호스트 버스에 결합됨- 를
    포함하고,
    상기 모니터 회로는, 상기 가상 PCI 디바이스를 목표로 하는 상기 식별된 호스트 버스 판독 사이클의 하나 또는 그 이상 동안에 상기 호스트 버스로 상기 데이터의 선택된 부분을 전송하도록 상기 다수의 제어 신호들을 발생시키기 위한 것이고,
    상기 가상 PCI 디바이스는 가상 PCI 대 PCI 브리지인 장치.
  3. 다수의 데이터를 기억하고, 제1 경로를 통해 호스트 버스에 결합되고, 다수의 제1 제어 신호 중 하나 또는 그 이상의 것에 응답하여 상기 데이터의 선택된 부분을 상기 호스트 버스 상으로 전송하는 제1 기억부와,
    상기 호스트 버스에 결합되고, 프로세서로 개시된 호스트 버스 사이클을 추적하고 주 PCI 버스 배후에 논리적으로 소재하는 가상 PCI 디바이스를 목표로 하는 프로세서로 개시된 호스트 버스 판독 사이클을 식별하는 모니터 회로 -상기 주 PCI버스는 상기 제1 경로와 별개인 제 2 경로를 통해 상기 호스트 버스에 결합됨- 를
    포함하고,
    상기 모니터 회로는, 상기 가상 PCI 디바이스를 목표로 하는 상기 식별된 호스트 버스 판독 사이클의 하나 또는 그 이상 동안에 상기 호스트 버스로 상기 데이터의 선택된 부분을 전송하도록 상기 다수의 제1 제어 신호들을 발생시키기 위한 것이고,
    상기 호스트 버스에 결합되고, 다수의 제2 제어 신호 중 하나 또는 그 이상의 것에 응답하여 상기 호스트 버스로부터의 상기 데이터의 선택된 부분을 선택적으로 수신하여 그 내에 기억시키는 제2 기억부를 더 포함하고,
    상기 가상 PCI 디바이스는 상기 주 PCI 버스 배후에 논리적으로 소재하는 가상 PCI 대 PCI 브리지 배후에 논리적으로 소재하고,
    상기 모니터 회로는, 상기 가상 PCI 대 PCI 브리지에 대해 유보된 컨피규레이션 스페이스 내에서 버스 번호를 특정하는 로케이션을 목표로 하는 호스트 버스 기입 사이클을 더 식별하고, 상기 호스트 버스로부터 상기 버스 번호를 수신하여 상기 제2 기억부에 기억시키도록 제3 제어 신호를 발생시키기 위한 것인 장치.
  4. 다수의 데이터를 기억하고, 제1 경로를 통해 호스트 버스에 결합되고, 다수의 제어 신호 중 하나 또는 그 이상의 것에 응답하여 상기 데이터의 선택된 부분을 상기 호스트 버스 상으로 전송하는 제1 기억부와,
    상기 호스트 버스에 결합되고, 프로세서로 개시된 호스트 버스 사이클을 추적하고 주 PCI 버스 배후에 논리적으로 소재하는 가상 PCI 디바이스를 목표로 하는 프로세서로 개시된 호스트 버스 판독 사이클을 식별하는 모니터 회로 -상기 주 PCI버스는 상기 제1 경로와 별개인 제 2 경로를 통해 상기 호스트 버스에 결합됨- 를
    포함하고,
    상기 모니터 회로는, 상기 가상 PCI 디바이스를 목표로 하는 상기 식별된 호스트 버스 판독 사이클의 하나 또는 그 이상 동안에 상기 호스트 버스로 상기 데이터의 선택된 부분을 전송하도록 상기 다수의 제어 신호들을 발생시키기 위한 것이고,
    상기 프로세서는 상기 호스트 버스에 결합되고, 상기 프로세서, 상기 제1 기억부, 및 상기 모니터 회로는 단입 칩 패키지 상에 집적된 장치.
  5. 제3항에 있어서, 상기 제1 기억부 및 상기 모니터 회로는 내부 버스를 통해서 상기 호스트 버스에 결합된 장치.
  6. 다수의 데이터를 기억하고, 제1 경로를 통해 호스트 버스에 결합되고, 다수의 제어 신호 중 하나 또는 그 이상의 것에 응답하여 상기 데이터의 선택된 부분을 상기 호스트 버스 상으로 전송하는 제1 기억부와,
    상기 호스트 버스에 결합되고, 프로세서로 개시된 호스트 버스 사이클을 추적하고 주 PCI 버스 배후에 논리적으로 소재하는 가상 PCI 디바이스를 목표로 하는 프로세서로 개시된 호스트 버스 판독 사이클을 식별하는 모니터 회로 -상기 주 PCI버스는 상기 제1 경로와 별개인 제 2 경로를 통해 상기 호스트 버스에 결합됨- 를
    포함하고,
    상기 모니터 회로는, 상기 가상 PCI 디바이스를 목표로 하는 상기 식별된 호스트 버스 판독 사이클의 하나 또는 그 이상 동안에 상기 호스트 버스로 상기 데이터의 선택된 부분을 전송하도록 상기 다수의 제어 신호들을 발생시키기 위한 것이고,
    상기 제1 기억부는 상기 다수의 제어 신호 중 하나 또는 그 이상의 것에 응답하여 상기 호스트 버스로부터 데이터를 선택적으로 수신하여 상기 제1 기억부에 기억시키고,
    상기 모니터 회로는 상기 주 PCI 버스 배후에 논리적으로 소재한 상기 가상 PCI 디바이스를 목표로 하는 프로세서로 개시된 호스트 버스 기입 사이클을 더 식별하기 위한 것이고,
    상기 모니터 회로는, 상기 호스트 버스로부터 데이터를 수신하여 상기 가상 PCI 디바이스를 목표로 하는 하나 또는 그 이상의 상기 식별된 호스트 버스 기입 사이클 동안에 상기 제1 기억부 내에 기억시키도록 상기 다수의 제어 신호를 발생시키기 위한 것인 장치.
  7. 다수의 데이터를 기억하고, 제1 경로를 통해 호스트 버스에 결합되고, 다수의 제어 신호 중 하나 또는 그 이상의 것에 응답하여 상기 데이터의 선택된 부분을 상기 호스트 버스 상으로 전송하는 제1 기억부와,
    상기 호스트 버스에 결합되고, 프로세서로 개시된 호스트 버스 사이클을 추적하고 주 PCI 버스 배후에 논리적으로 소재하는 가상 PCI 디바이스를 목표로 하는 프로세서로 개시된 호스트 버스 판독 사이클을 식별하는 모니터 회로 -상기 주 PCI버스는 상기 제1 경로와 별개인 제 2 경로를 통해 상기 호스트 버스에 결합됨- 를
    포함하고,
    상기 모니터 회로는, 상기 가상 PCI 디바이스를 목표로 하는 상기 식별된 호스트 버스 판독 사이클의 하나 또는 그 이상 동안에 상기 호스트 버스로 상기 데이터의 선택된 부분을 전송하도록 상기 다수의 제어 신호들을 발생시키기 위한 것이고,
    상기 제1 기억부는 랜덤 액세스 메모리로 구성되고,
    상기 가상 PCI 디바이스를 목표로 하는 상기 식별된 호스트 버스 판독 사이클은 상기 가상 PCI 디바이스에 할당된 메모리 어드레스 스페이스를 목표로 하는 호스트 버스 사이클을 포함하는 장치.
  8. 다수의 데이터를 기억하고, 제1 경로를 통해 호스트 버스에 결합되고, 다수의 제1 제어 신호 중 하나 또는 그 이상의 것에 응답하여 상기 데이터의 선택된 부분을 상기 호스트 버스 상으로 전송하는 제1 기억부와,
    상기 호스트 버스에 결합되고, 프로세서로 개시된 호스트 버스 사이클을 추적하고 주 PCI 버스 배후에 논리적으로 소재하는 가상 PCI 디바이스를 목표로 하는 프로세서로 개시된 호스트 버스 판독 사이클을 식별하는 모니터 회로 -상기 주 PCI버스는 상기 제1 경로와 별개인 제 2 경로를 통해 상기 호스트 버스에 결합됨- 를
    포함하고,
    상기 모니터 회로는, 상기 가상 PCI 디바이스를 목표로 하는 상기 식별된 호스트 버스 판독 사이클의 하나 또는 그 이상 동안에 상기 호스트 버스로 상기 데이터의 선택된 부분을 전송하도록 상기 다수의 제1 제어 신호들을 발생시키기 위한 것이고,
    상기 호스트 버스에 결합되고 하나 또는 그 이상의 제2 제어 신호에 응답하여 상기 호스트 버스로부터 데이터를 수신하는 미러 레지스터를 더 포함하고,
    상기 모니터 회로는 컨피규레이션-어드레스 레지스터를 목표로 하는 호스트 버스 기입 사이클을 더 식별하기 위한 것이고,
    상기 모니터 회로는, 상기 호스트 버스로부터 데이터를 수신하여 상기 컨피규레이션-어드레스 레지스터를 목표로 하는 것으로 식별된 상기 호스트 버스 기입 사이클 동안에 상기 미러 레지스터에 기억시키도록 상기 제2 제어 신호를 발생시키기 위한 것인 장치.
  9. 다수의 데이터를 기억하고, 제1 경로를 통해 호스트 버스에 결합되고, 다수의 제어 신호 중 하나 또는 그 이상의 것에 응답하여 상기 데이터의 선택된 부분을 상기 호스트 버스 상으로 전송하는 제1 기억부와,
    상기 호스트 버스에 결합되고, 프로세서로 개시된 호스트 버스 사이클을 추적하고 주 PCI 버스 배후에 논리적으로 소재하는 가상 PCI 디바이스를 목표로 하는 프로세서로 개시된 호스트 버스 판독 사이클을 식별하는 모니터 회로 -상기 주 PCI버스는 상기 제1 경로와 별개인 제 2 경로를 통해 상기 호스트 버스에 결합됨- 를
    포함하고,
    상기 모니터 회로는, 상기 가상 PCI 디바이스를 목표로 하는 상기 식별된 호스트 버스 판독 사이클의 하나 또는 그 이상 동안에 상기 호스트 버스로 상기 데이터의 선택된 부분을 전송하도록 상기 다수의 제어 신호들을 발생시키기 위한 것이고,
    상기 가상 PCI 디바이스를 목표로 하는 상기 식별된 호스트 버스 판독 사이클은 상기 가상 PCI 디바이스에 할당된 I/O 어드레스 스페이스에 대한 호스트 버스 사이클을 포함하는 장치.
  10. 다수의 데이터를 기억하고, 제1 경로를 통해 호스트 버스에 결합되고, 다수의 제어 신호 중 하나 또는 그 이상의 것에 응답하여 상기 데이터의 선택된 부분을 상기 호스트 버스 상으로 전송하는 제1 기억부와,
    상기 호스트 버스에 결합되고, 프로세서로 개시된 호스트 버스 사이클을 추적하고 주 PCI 버스 배후에 논리적으로 소재하는 가상 PCI 디바이스를 목표로 하는 프로세서로 개시된 호스트 버스 판독 사이클을 식별하는 모니터 회로 -상기 주 PCI버스는 상기 제1 경로와 별개인 제 2 경로를 통해 상기 호스트 버스에 결합됨- 를
    포함하고,
    상기 모니터 회로는, 상기 가상 PCI 디바이스를 목표로 하는 상기 식별된 호스트 버스 판독 사이클의 하나 또는 그 이상 동안에 상기 호스트 버스로 상기 데이터의 선택된 부분을 전송하도록 상기 다수의 제어 신호들을 발생시키기 위한 것이고,
    상기 제1 기억부는 제1의 다수의 컨피규레이션 레지스터를 포함하고,
    상기 식별된 호스트 버스 판독 사이클은 상기 가상 PCI 디바이스를 위해 유보된 컨피규레이션 스페이스를 목표로 하는 호스트 버스 사이클을 포함하는 장치.
  11. 제10항에 있어서,
    상기 가상 PCI 디바이스는 가상 PCI 대 PCI 브리지 배후에 소재하고,
    상기 제1 기억부는 제2의 다수의 컨피규레이션 레지스터를 포함하고,
    상기 모니터 회로는 상기 가상 PCI 대 PCI 브리지에 할당된 컨피규레이션 스페이스를 목표로 하는 호스트 버스 사이클을 더 식별하기 위한 것이고,
    상기 모니터 회로는, 상기 가상 PCI 대 PCI 브리지에 할당된 상기 컨피규레이션 스페이스를 목표로 하는 하나 또는 그 이상의 상기 식별된 호스트 버스 판독 사이클 동안에 상기 데이터의 선택된 부분을 상기 호스트 버스로 전송시키도록 상기 다수의 제어 신호를 발생시키기 위한 것인 장치.
  12. 삭제
  13. 삭제
  14. 삭제
  15. 제1 기억부 -상기 제1 기억부의 콘텐츠는 주 PCI 버스에 할당된 제1 어드레스 스페이스를 특정하기 위한 것임-,
    제2 기억부 -상기 제2 기억부의 콘텐츠는 상기 주 PCI 버스의 배후에 논리적으로 소재하는 가상 PCI 디바이스에 할당된 제2 어드레스 스페이스를 특정하기 위한 것임-, 및
    상기 제1 및 제2 기억부에 결합된 제어 회로 - 상기 제어 회로는 프로세서로 개시된 호스트 버스 사이클을 추적하고 호스트 버스 사이클을 선택하여 상기 주 PCI 버스에 라우팅하도록 호스트 버스에 결합하기 위한 것이고, 이때 상기 라우팅되는 사이클은 상기 제1 및 제2 기억부의 상기 콘텐츠에 기초하여 상기 제2 어드레스 스페이스를 목표로 하는 호스트 버스 사이클을 제외하고 선택됨 -
    를 포함하고,
    상기 제1 및 제2 어드레스 스페이스는 PCI 호환 컨피규레이션 어드레스 스페이스를 포함하는 장치.
  16. 제1 기억부 -상기 제1 기억부의 콘텐츠는 주 PCI 버스에 할당된 제1 어드레스 스페이스를 특정하기 위한 것임-,
    제2 기억부 -상기 제2 기억부의 콘텐츠는 상기 주 PCI 버스의 배후에 논리적으로 소재하는 가상 PCI 디바이스에 할당된 제2 어드레스 스페이스를 특정하기 위한 것임-, 및
    상기 제1 및 제2 기억부에 결합된 제어 회로 - 상기 제어 회로는 프로세서로 개시된 호스트 버스 사이클을 추적하고 호스트 버스 사이클을 선택하여 상기 주 PCI 버스에 라우팅하도록 호스트 버스에 결합하기 위한 것이고, 이때 상기 라우팅되는 사이클은 상기 제1 및 제2 기억부의 상기 콘텐츠에 기초하여 상기 제2 어드레스 스페이스를 목표로 하는 호스트 버스 사이클을 제외하고 선택됨 -
    를 포함하고,
    상기 가상 PCI 디바이스는 가상 PCI 대 PCI 브리지인 장치.
  17. 제16항에 있어서,
    다수의 컨피규레이션 레지스터와,
    상기 제어 회로에 결합된 제3 기억부 -상기 제3 기억부의 콘텐츠는 상기 가상 PCI 대 PCI 브리지가 논리적으로 소재하는 버스 번호 및 디바이스 번호를 나타내며, 상기 제어 회로는 상기 다수의 컨피규레이션 레지스터에 라우팅하기 위하여 상기 버스 번호 및 상기 디바이스 번호에 기초하여 상기 가상 PCI 대 PCI 브리지의 컨피규레이션 어드레스 스페이스를 목표로 하는 호스트 버스 사이클을 추가로 선택하여 상기 다수의 컨피규레이션 레지스터에 라우팅하기 위한 것임-
    를 더 포함하는 장치.
  18. 호스트 버스에 결합된 하나 또는 그 이상의 프로세서,
    프로세서로 개시된 선택 호스트 버스 사이클을 주 PCI 버스로 라우팅하기 위한 호스트 대 PCI 브리지, 및
    상기 호스트 버스에 결합되고, 상기 호스트 버스를 모니터하고, 상기 주 PCI버스 배후에 논리적으로 소재하는 제1 가상 PCI 디바이스를 목표로 하는 프로세서로 개시된 호스트 버스 사이클을 식별하고, 상기 제1 가상 PCI 디바이스를 목표로 하는 상기 식별된 호스트 버스 사이클을 포착하기 위한 제1 호스트 버스 디바이스
    를 포함하고,
    상기 호스트 대 PCI 브리지는 상기 제1 가상 PCI 디바이스를 목표로 하는 상기 식별된 호스트 버스 사이클을 포워드하지 않는 시스템.
  19. 제18항에 있어서, 상기 제1 호스트 버스 디바이스는 다수의 컨피규레이션 레지스터를 포함하고, 상기 포착된 사이클은 상기 제1 가상 PCI 디바이스를 위해 유보된 컨피규레이션 스페이스를 목표로 하는 호스트 버스 사이클을 포함하고 상기 다수의 컨피규레이션 레지스터에 액세스하기 위해 라우팅되는 시스템.
  20. 제18항에 있어서, 상기 제1 호스트 버스 디바이스는 메모리 디바이스 어레이를 포함하고, 상기 포착된 사이클은 상기 제1 가상 PCI 디바이스에 할당된 메모리 스페이스를 목표로 하는 호스트 버스 사이클을 포함하고 상기 메모리 디바이스 어레이에 액세스하기 위해 라우팅되는 것인 시스템.
  21. 제18항에 있어서, 상기 호스트 버스에 결합된 제2 호스트 버스 디바이스로 더 구성되고, 각각의 상기 호스트 버스 디바이스는 상기 주 PCI 버스의 배후에 논리적으로 소재하는 별개의 가상 PCI 디바이스를 목표로 하는 호스트 버스 사이클을 포착하고, 상기 별개의 가상 PCI 디바이스는 각각 별개의 버스 번호 및 디바이스 번호 조합을 갖는 시스템.
  22. 제18항에 있어서, 상기 제1 가상 PCI 디바이스는 주 가상 PCI 대 PCI 브리지의 배후에 논리적으로 소재하고, 상기 주 가상 PCI 대 PCI 브리지는 상기 주 PCI 버스의 배후에 논리적으로 소재하고, 상기 호스트 버스 디바이스는 상기 호스트 버스를 스누핑하여 상기 주 가상 PCI 대 PCI 브리지에 할당된 버스 번호를 결정하는 시스템.
  23. 제22항에 있어서, 상기 제1 가상 PCI 디바이스는 상기 주 가상 PCI 대 PCI 브리지의 배후에 논리적으로 소재하는 부 가상 PCI 대 PCI 브리지의 배후에 논리적으로 소재하고,
    상기 제1 호스트 버스 디바이스는 다수의 브리지 컨피규레이션 레지스터를 포함하고,
    상기 포착된 사이클은 상기 부 가상 PCI 대 PCI 브리지에 대해 유보된 컨피규레이션 스페이스를 목표로 하는 호스트 버스 사이클을 포함하고 상기 다수의 브리지 컨피규레이션 레지스터에 액세스하기 위해 라우팅되는 것인 시스템.
  24. 삭제
  25. 프로세서에 의해 개시된 현재 호스트 버스 사이클을 포착하는 단계,
    상기 포착된 현재 호스트 버스 사이클이 주 PCI 버스의 배후에 논리적으로 소재하는 가상 PCI 디바이스를 목표로 하는지의 여부를 평가하는 단계, 및
    상기 현재 호스트 버스 사이클이 상기 가상 PCI 디바이스를 목표로 하는 것으로 평가되면, 상기 현재 호스트 버스 사이클을 포착하고, 상기 주 PCI 버스에 상기 현재 호스트 버스 사이클을 라우팅하지 않는 단계
    를 포함하고,
    상기 포착 단계는 호스트 버스에 결합된 기억부에 액세스하기 위한 라우팅을 포함하는 방법.
  26. 프로세서에 의해 개시된 현재 호스트 버스 사이클을 포착하는 단계,
    상기 포착된 현재 호스트 버스 사이클이 주 PCI 버스의 배후에 논리적으로 소재하는 가상 PCI 디바이스를 목표로 하는지의 여부를 평가하는 단계, 및
    상기 현재 호스트 버스 사이클이 상기 가상 PCI 디바이스를 목표로 하는 것으로 평가되면, 상기 현재 호스트 버스 사이클을 포착하고, 상기 주 PCI 버스에 상기 현재 호스트 버스 사이클을 라우팅하지 않는 단계
    를 포함하고,
    상기 포착 단계는 다수의 컨피규레이션 레지스터 내의 로케이션에 액세스하기 위한 라우팅을 포함하는 방법.
  27. 프로세서에 의해 개시된 현재 호스트 버스 사이클을 포착하는 단계,
    상기 포착된 현재 호스트 버스 사이클이 주 PCI 버스의 배후에 논리적으로 소재하는 가상 PCI 디바이스를 목표로 하는지의 여부를 평가하는 단계, 및
    상기 현재 호스트 버스 사이클이 상기 가상 PCI 디바이스를 목표로 하는 것으로 평가되면, 상기 현재 호스트 버스 사이클을 포착하고, 상기 주 PCI 버스에 상기 현재 호스트 버스 사이클을 라우팅하지 않는 단계
    를 포함하고,
    상기 평가 단계는, 상기 현재 호스트 버스 사이클이 컨피규레이션-어드레스 레지스터를 목표로 하는 기입 사이클인지의 여부를 평가하는 단계와, 상기 현재 호스트 버스 사이클이 상기 컨피규레이션-어드레스 레지스터를 목표로 하는 기입 사이클이라면 호스트 버스로부터 데이터를 수신하기 위해 상기 현재 호스트 버스 사이클을 스누핑하는 단계와, 상기 데이터의 일부 또는 전부를 미러 레지스터에 기입하는 단계를 포함하는 방법.
  28. 프로세서에 의해 개시된 현재 호스트 버스 사이클을 포착하는 단계,
    상기 포착된 현재 호스트 버스 사이클이 주 PCI 버스의 배후에 논리적으로 소재하는 가상 PCI 디바이스를 목표로 하는지의 여부를 평가하는 단계, 및
    상기 현재 호스트 버스 사이클이 상기 가상 PCI 디바이스를 목표로 하는 것으로 평가되면, 상기 현재 호스트 버스 사이클을 포착하고, 상기 주 PCI 버스에 상기 현재 호스트 버스 사이클을 라우팅하지 않는 단계
    를 포함하고,
    상기 평가 단계는, 상기 현재 호스트 버스 사이클이 버스 번호가 특정된 가상 주 PCI 대 PCI 브리지의 컨피규레이션 레지스터 내의 로케이션을 목표로 하는 기입 사이클인지의 여부를 평가하는 단계와, 상기 현재 호스트 버스 사이클이 버스 번호가 특정된 가상 주 PCI 대 PCI 브리지의 컨피규레이션 레지스터 내의 로케이션에 대한 기입 사이클이라면 호스트 버스로부터 데이터를 수신하기 위해 상기 현재 호스트 버스 사이클을 스누핑하는 단계와, 상기 데이터를 기억부 내에 기입하는 단계를 포함하는 방법.
  29. 프로세서에 의해 개시된 현재 호스트 버스 사이클을 포착하는 단계,
    상기 포착된 현재 호스트 버스 사이클이 주 PCI 버스의 배후에 논리적으로 소재하는 가상 PCI 디바이스를 목표로 하는지의 여부를 평가하는 단계, 및
    상기 현재 호스트 버스 사이클이 상기 가상 PCI 디바이스를 목표로 하는 것으로 평가되면, 상기 현재 호스트 버스 사이클을 포착하고, 상기 주 PCI 버스에 상기 현재 호스트 버스 사이클을 라우팅하지 않는 단계
    를 포함하고,
    상기 평가 단계는 상기 현재 호스트 버스 사이클이 가상 PCI 대 PCI 브리지의 컨피규레이션 레지스터 내의 로케이션에 대한 것인 지의 여부를 평가하는 단계와, 상기 현재 호스트 버스 사이클이 가상 PCI 대 PCI 브리지의 컨피규레이션 레지스터 내의 로케이션에 대한 것이라면 다수의 브리지 컨피규레이션 레지스터 내의 로케이션에 액세스하도록 라우팅하기 위해 현재 호스트 버스 사이클을 포착하는 단계를 포함하는 방법.
  30. 프로세서에 의해 개시된 현재 호스트 버스 사이클을 포착하는 단계,
    상기 포착된 현재 호스트 버스 사이클이 주 PCI 버스의 배후에 논리적으로 소재하는 가상 PCI 디바이스를 목표로 하는지의 여부를 평가하는 단계, 및
    상기 현재 호스트 버스 사이클이 상기 가상 PCI 디바이스를 목표로 하는 것으로 평가되면, 상기 현재 호스트 버스 사이클을 포착하고, 상기 주 PCI 버스에 상기 현재 호스트 버스 사이클을 라우팅하지 않는 단계
    를 포함하고,
    상기 가상 PCI 디바이스는 가상 PCI 대 PCI 브리지인 방법.
KR1020037017040A 2001-06-29 2002-06-20 가상 pci 디바이스 장치 및 방법 KR100837449B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/896,395 2001-06-29
US09/896,395 US6823418B2 (en) 2001-06-29 2001-06-29 Virtual PCI device apparatus and method
PCT/US2002/019720 WO2003003225A1 (en) 2001-06-29 2002-06-20 Virtual pci device apparatus and method

Publications (2)

Publication Number Publication Date
KR20040017818A KR20040017818A (ko) 2004-02-27
KR100837449B1 true KR100837449B1 (ko) 2008-06-12

Family

ID=25406131

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020037017040A KR100837449B1 (ko) 2001-06-29 2002-06-20 가상 pci 디바이스 장치 및 방법

Country Status (7)

Country Link
US (1) US6823418B2 (ko)
EP (1) EP1399826B1 (ko)
JP (1) JP4657602B2 (ko)
KR (1) KR100837449B1 (ko)
CN (1) CN1302400C (ko)
TW (1) TWI244000B (ko)
WO (1) WO2003003225A1 (ko)

Families Citing this family (90)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6883109B2 (en) * 2001-07-30 2005-04-19 Hewlett-Packard Development Company, L.P. Method for accessing scan chains and updating EEPROM-resident FPGA code through a system management processor and JTAG bus
US6918027B2 (en) 2001-07-30 2005-07-12 Hewlett-Packard Development Company, L.P. System and method for in-system programming through an on-system JTAG bridge of programmable logic devices on multiple circuit boards of a system
US6954929B2 (en) * 2001-07-30 2005-10-11 Hewlett-Packard Development Company, L.P. Method for just-in-time updating of programming parts
US20040225783A1 (en) * 2001-07-30 2004-11-11 Erickson Michael John Bus to multiple jtag bus bridge
US7389332B1 (en) 2001-09-07 2008-06-17 Cisco Technology, Inc. Method and apparatus for supporting communications between nodes operating in a master-slave configuration
US6826628B2 (en) * 2001-10-26 2004-11-30 O2Micro International Limited PCI-PCMCIA smart card reader
US7421478B1 (en) 2002-03-07 2008-09-02 Cisco Technology, Inc. Method and apparatus for exchanging heartbeat messages and configuration information between nodes operating in a master-slave configuration
US6973525B2 (en) * 2002-03-19 2005-12-06 Dell Products L.P. System and method for managing bus numbering
US7587465B1 (en) 2002-04-22 2009-09-08 Cisco Technology, Inc. Method and apparatus for configuring nodes as masters or slaves
US7200610B1 (en) 2002-04-22 2007-04-03 Cisco Technology, Inc. System and method for configuring fibre-channel devices
US7165258B1 (en) 2002-04-22 2007-01-16 Cisco Technology, Inc. SCSI-based storage area network having a SCSI router that routes traffic between SCSI and IP networks
US7415535B1 (en) 2002-04-22 2008-08-19 Cisco Technology, Inc. Virtual MAC address system and method
US7433952B1 (en) 2002-04-22 2008-10-07 Cisco Technology, Inc. System and method for interconnecting a storage area network
US7188194B1 (en) 2002-04-22 2007-03-06 Cisco Technology, Inc. Session-based target/LUN mapping for a storage area network and associated method
US7120837B1 (en) 2002-05-09 2006-10-10 Cisco Technology, Inc. System and method for delayed error handling
US7240098B1 (en) * 2002-05-09 2007-07-03 Cisco Technology, Inc. System, method, and software for a virtual host bus adapter in a storage-area network
US7117289B2 (en) * 2002-09-30 2006-10-03 Intel Corporation Claiming cycles on a processor bus in a system having a PCI to PCI bridge north of a memory controller
US7831736B1 (en) 2003-02-27 2010-11-09 Cisco Technology, Inc. System and method for supporting VLANs in an iSCSI
US7295572B1 (en) 2003-03-26 2007-11-13 Cisco Technology, Inc. Storage router and method for routing IP datagrams between data path processors using a fibre channel switch
US7433300B1 (en) 2003-03-28 2008-10-07 Cisco Technology, Inc. Synchronization of configuration data in storage-area networks
US7904599B1 (en) 2003-03-28 2011-03-08 Cisco Technology, Inc. Synchronization and auditing of zone configuration data in storage-area networks
US7526527B1 (en) 2003-03-31 2009-04-28 Cisco Technology, Inc. Storage area network interconnect server
US7451208B1 (en) 2003-06-28 2008-11-11 Cisco Technology, Inc. Systems and methods for network address failover
US7243167B2 (en) 2003-09-19 2007-07-10 Intel Corporation Managing peripheral device address space resources using a tunable bin-packing/knapsack algorithm
US7200687B2 (en) * 2003-09-25 2007-04-03 International Business Machines Coporation Location-based non-uniform allocation of memory resources in memory mapped input/output fabric
US7437738B2 (en) * 2003-11-12 2008-10-14 Intel Corporation Method, system, and program for interfacing with a network adaptor supporting a plurality of devices
US7376775B2 (en) * 2003-12-29 2008-05-20 Intel Corporation Apparatus, system, and method to enable transparent memory hot plug/remove
US7484210B2 (en) * 2004-02-17 2009-01-27 Intel Corporation Apparatus and method for a generic, extensible and efficient data manager for virtual peripheral component interconnect devices (VPCIDs)
CN1926521B (zh) * 2004-03-18 2010-10-06 英特尔公司 尽管资源不足仍支持引导的方法和装置
US8868891B2 (en) 2004-03-18 2014-10-21 Intel Corporation Method and apparatus to support booting despite deficient resources
TWI255405B (en) * 2005-01-05 2006-05-21 Via Tech Inc Bus controller and controlling method for use in computer system
US7496790B2 (en) * 2005-02-25 2009-02-24 International Business Machines Corporation Method, apparatus, and computer program product for coordinating error reporting and reset utilizing an I/O adapter that supports virtualization
US20060195623A1 (en) * 2005-02-25 2006-08-31 International Business Machines Corporation Native virtualization on a partially trusted adapter using PCI host memory mapped input/output memory address for identification
US20060195848A1 (en) * 2005-02-25 2006-08-31 International Business Machines Corporation System and method of virtual resource modification on a physical adapter that supports virtual resources
US7685335B2 (en) * 2005-02-25 2010-03-23 International Business Machines Corporation Virtualized fibre channel adapter for a multi-processor data processing system
US7398328B2 (en) * 2005-02-25 2008-07-08 International Business Machines Corporation Native virtualization on a partially trusted adapter using PCI host bus, device, and function number for identification
US7493425B2 (en) * 2005-02-25 2009-02-17 International Business Machines Corporation Method, system and program product for differentiating between virtual hosts on bus transactions and associating allowable memory access for an input/output adapter that supports virtualization
US7386637B2 (en) * 2005-02-25 2008-06-10 International Business Machines Corporation System, method, and computer program product for a fully trusted adapter validation of incoming memory mapped I/O operations on a physical adapter that supports virtual adapters or virtual resources
US20060193327A1 (en) * 2005-02-25 2006-08-31 International Business Machines Corporation System and method for providing quality of service in a virtual adapter
US7308551B2 (en) * 2005-02-25 2007-12-11 International Business Machines Corporation System and method for managing metrics table per virtual port in a logically partitioned data processing system
US20060195618A1 (en) * 2005-02-25 2006-08-31 International Business Machines Corporation Data processing system, method, and computer program product for creation and initialization of a virtual adapter on a physical adapter that supports virtual adapter level virtualization
US7376770B2 (en) * 2005-02-25 2008-05-20 International Business Machines Corporation System and method for virtual adapter resource allocation matrix that defines the amount of resources of a physical I/O adapter
US20060212870A1 (en) * 2005-02-25 2006-09-21 International Business Machines Corporation Association of memory access through protection attributes that are associated to an access control level on a PCI adapter that supports virtualization
US7398337B2 (en) * 2005-02-25 2008-07-08 International Business Machines Corporation Association of host translations that are associated to an access control level on a PCI bridge that supports virtualization
US7870301B2 (en) * 2005-02-25 2011-01-11 International Business Machines Corporation System and method for modification of virtual adapter resources in a logically partitioned data processing system
US7480742B2 (en) * 2005-02-25 2009-01-20 International Business Machines Corporation Method for virtual adapter destruction on a physical adapter that supports virtual adapters
US7546386B2 (en) * 2005-02-25 2009-06-09 International Business Machines Corporation Method for virtual resource initialization on a physical adapter that supports virtual resources
US7464191B2 (en) * 2005-02-25 2008-12-09 International Business Machines Corporation System and method for host initialization for an adapter that supports virtualization
US20060195617A1 (en) * 2005-02-25 2006-08-31 International Business Machines Corporation Method and system for native virtualization on a partially trusted adapter using adapter bus, device and function number for identification
US7543084B2 (en) * 2005-02-25 2009-06-02 International Business Machines Corporation Method for destroying virtual resources in a logically partitioned data processing system
US7475166B2 (en) * 2005-02-28 2009-01-06 International Business Machines Corporation Method and system for fully trusted adapter validation of addresses referenced in a virtual host transfer request
US20060236016A1 (en) * 2005-04-19 2006-10-19 Tetrick R S Method, system, and apparatus to support device configuration
US7356628B2 (en) * 2005-05-13 2008-04-08 Freescale Semiconductor, Inc. Packet switch with multiple addressable components
US7334071B2 (en) * 2005-05-25 2008-02-19 Integrated Device Technology, Inc. Expansion of cross-domain addressing for PCI-express packets passing through non-transparent bridge
US7644219B2 (en) * 2005-06-30 2010-01-05 Dell Products L.P. System and method for managing the sharing of PCI devices across multiple host operating systems
US20070088874A1 (en) * 2005-10-14 2007-04-19 Hewlett-Packard Development Company, L.P. Offload engine as processor peripheral
US20070136554A1 (en) * 2005-12-12 2007-06-14 Giora Biran Memory operations in a virtualized system
US7428609B2 (en) * 2005-12-29 2008-09-23 Intel Corporation Method and system to partition hardware resources between operating systems
US8423682B2 (en) * 2005-12-30 2013-04-16 Intel Corporation Address space emulation
US20070260910A1 (en) * 2006-04-04 2007-11-08 Vinit Jain Method and apparatus for propagating physical device link status to virtual devices
JP4626582B2 (ja) * 2006-07-03 2011-02-09 ソニー株式会社 カード型周辺機器およびカード通信システム
US7945721B1 (en) * 2006-08-11 2011-05-17 Oracle America, Inc. Flexible control and/or status register configuration
US7752376B1 (en) * 2006-08-11 2010-07-06 Oracle America, Inc. Flexible configuration space
JP4810349B2 (ja) * 2006-08-11 2011-11-09 日本電気株式会社 I/o装置及び方法
US20080052431A1 (en) * 2006-08-22 2008-02-28 Freking Ronald E Method and Apparatus for Enabling Virtual Channels Within A Peripheral Component Interconnect (PCI) Express Bus
US7984454B2 (en) * 2006-12-19 2011-07-19 International Business Machines Corporation Migration of single root stateless virtual functions
US20080192648A1 (en) * 2007-02-08 2008-08-14 Nuova Systems Method and system to create a virtual topology
JP5119686B2 (ja) * 2007-03-06 2013-01-16 日本電気株式会社 情報処理装置および設定方法
US20080228971A1 (en) * 2007-03-13 2008-09-18 Rothman Michael A Device modeling in a multi-core environment
CN101043510B (zh) * 2007-04-29 2012-03-07 中兴通讯股份有限公司 Pci-e总线分布式系统单板内及单板间数据通讯方法
US20090043921A1 (en) * 2007-08-09 2009-02-12 Protip Roy Method and System for Virtualization and Re-Direction of I/O Connections to Peripheral Devices
US20090077297A1 (en) * 2007-09-14 2009-03-19 Hongxiao Zhao Method and system for dynamically reconfiguring PCIe-cardbus controllers
CN101387993B (zh) * 2007-09-14 2010-09-08 凹凸科技(中国)有限公司 对计算机系统中的设备进行动态资源配置的方法及系统
US8250573B2 (en) * 2007-12-27 2012-08-21 Intel Corporation Audio subsystem sharing in a virtualized environment
CN101983377A (zh) * 2008-04-01 2011-03-02 惠普开发有限公司 为pci设备保留pci存储空间
US7743189B2 (en) * 2008-05-05 2010-06-22 International Business Machines Corporation PCI function south-side data management
JP5180729B2 (ja) * 2008-08-05 2013-04-10 株式会社日立製作所 計算機システム及びバス割当方法
CN101676894B (zh) * 2008-08-15 2011-08-17 北京北大众志微系统科技有限责任公司 面向集中地址译码的非pci片上总线的pci虚拟化装置及方法
JP5401679B2 (ja) * 2009-02-19 2014-01-29 株式会社日立製作所 計算機システム、管理方法及び管理サーバ
JP5074457B2 (ja) * 2009-06-04 2012-11-14 株式会社日立製作所 計算機システム、スイッチ切り替え方法及びpciスイッチ
US8762698B2 (en) 2009-12-14 2014-06-24 Intel Corporation Virtual bus device using management engine
US8959253B2 (en) 2009-12-23 2015-02-17 Intel Corporation Virtualizing a powered down input/output device
US9852087B2 (en) 2010-04-20 2017-12-26 Avago Technologies General Ip (Singapore) Pte. Ltd. Inline PCI-IOV adapter
WO2012073304A1 (ja) * 2010-11-29 2012-06-07 株式会社日立製作所 計算機システム、それに使用されるスイッチ及びパケット転送制御方法
CN103514125B (zh) * 2012-06-25 2016-06-08 宏碁股份有限公司 主控端电子装置以及主控端操作方法
US9323706B2 (en) * 2013-02-26 2016-04-26 Red Hat Israel, Ltd. Configuration snooping bridge
WO2014139115A1 (en) * 2013-03-14 2014-09-18 Intel Corporation Generic method to build virtual pci device and virtual mmio device
US9286258B2 (en) 2013-06-14 2016-03-15 National Instruments Corporation Opaque bridge for peripheral component interconnect express bus systems
WO2016057315A1 (en) 2014-10-05 2016-04-14 Amazon Technologies, Inc. Emulated endpoint configuration
US20170270062A1 (en) 2016-03-21 2017-09-21 Intel Corporation In-band retimer register access

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6108719A (en) 1996-11-25 2000-08-22 Micron Technology, Inc. System for redirecting particular I/O operations to memory

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5526503A (en) * 1993-10-06 1996-06-11 Ast Research, Inc. Virtual addressing buffer circuit
US5680592A (en) * 1995-04-14 1997-10-21 Nvidia Corporation System using a plurality of state machines for translating commands intended for legacy bus devices to commands for local bus devices
US5659551A (en) * 1995-05-31 1997-08-19 International Business Machines Corporation Programmable computer system element with built-in self test method and apparatus for repair during power-on
GB2347535B (en) * 1995-12-28 2000-11-08 Intel Corp A method and apparatus for interfacing a device compliant to first bus protocol to an external bus
US5751975A (en) * 1995-12-28 1998-05-12 Intel Corporation Method and apparatus for interfacing a device compliant to a first bus protocol to an external bus having a second bus protocol and for providing virtual functions through a multi-function intelligent bridge
US5796984A (en) * 1996-01-26 1998-08-18 Dell Usa, L.P. Operating system independent apparatus and method for eliminating peripheral device functions
US5930827A (en) * 1996-12-02 1999-07-27 Intel Corporation Method and apparatus for dynamic memory management by association of free memory blocks using a binary tree organized in an address and size dependent manner
US5832246A (en) * 1996-12-03 1998-11-03 Toshiba America Information Systems, Inc. Virtualization of the ISA bus on PCI with the existence of a PCI to ISA bridge
US6167054A (en) * 1997-02-14 2000-12-26 Advanced Micro Devices, Inc. Method and apparatus providing programmable thresholds for full-duplex flow control in a network switch
TW386215B (en) * 1997-03-24 2000-04-01 Seiko Epson Corp Emulation system and information processor
US6516375B1 (en) * 1999-11-03 2003-02-04 Intel Corporation Peripheral component interconnect (PCI) configuration emulation for hub interface
US6636904B2 (en) * 1999-11-18 2003-10-21 Hewlett-Packard Development Company, L.P. Dynamic PCI device identification redirection on a configuration space access conflict
US6629157B1 (en) * 2000-01-04 2003-09-30 National Semiconductor Corporation System and method for virtualizing the configuration space of PCI devices in a processing system
US6748512B2 (en) * 2000-12-08 2004-06-08 Intel Corporation Method and apparatus for mapping address space of integrated programmable devices within host system memory
US20020073264A1 (en) * 2000-12-08 2002-06-13 Varghese George Integrated co-processor configured as a PCI device

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6108719A (en) 1996-11-25 2000-08-22 Micron Technology, Inc. System for redirecting particular I/O operations to memory

Also Published As

Publication number Publication date
CN1302400C (zh) 2007-02-28
US20030005207A1 (en) 2003-01-02
CN1522415A (zh) 2004-08-18
KR20040017818A (ko) 2004-02-27
EP1399826A1 (en) 2004-03-24
TWI244000B (en) 2005-11-21
JP2004531838A (ja) 2004-10-14
WO2003003225A1 (en) 2003-01-09
US6823418B2 (en) 2004-11-23
EP1399826B1 (en) 2017-10-25
JP4657602B2 (ja) 2011-03-23

Similar Documents

Publication Publication Date Title
KR100837449B1 (ko) 가상 pci 디바이스 장치 및 방법
US9824050B2 (en) Shared PCIe end point system including a PCIe switch and method for initializing the switch
US6094699A (en) Apparatus and method for coupling devices to a PCI-to-PCI bridge in an intelligent I/O controller
US5548730A (en) Intelligent bus bridge for input/output subsystems in a computer system
US8255605B2 (en) Scalable distributed memory and I/O multiprocessor system
JP5210730B2 (ja) 仮想マシンモニタ及びマルチプロセッサシステム
US7421543B2 (en) Network device, fiber channel switch, method for shared memory access control, and computer product
JP2644554B2 (ja) 情報処理システム
JP2004531838A5 (ko)
JPH08249254A (ja) マルチコンピュータシステム
US6915365B2 (en) Mechanism for PCI I/O-initiated configuration cycles
CN101751352A (zh) 不同种类处理单元中对绑定和迁移硬件设备的芯片组支持
US7054983B2 (en) USB-HUB device and its control method
US5933613A (en) Computer system and inter-bus control circuit
US20090037609A1 (en) Middle management of input/output in server systems
US7447827B2 (en) Multi-port bridge device
US8635414B2 (en) System and method for allocating memory resources
US7496717B2 (en) System for sharing storage device among controllers and method thereof
US20090037617A1 (en) Middle management of input/output in server systems
US20030135708A1 (en) System, method and computer program product for mapping system memory in a multiple node information handling system
KR101226389B1 (ko) 시스템 온 칩에서의 독점 접근 제어 방법 및 시스템
US5832277A (en) System for arbitrating demand on memory during configuration of a computer add-on card
US20040049618A1 (en) Configuration of private devices and device functions
JP2022118489A (ja) メモリシステム
CN117827449A (zh) 服务器的物理内存扩展架构、服务器、方法、设备及介质

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E902 Notification of reason for refusal
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
E902 Notification of reason for refusal
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130603

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140602

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150529

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160527

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20170601

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee