KR101782852B1 - 엔드포인트 에뮬레이션을 이용한 빈 엔드포인트 슬롯의 초기 열거법 - Google Patents

엔드포인트 에뮬레이션을 이용한 빈 엔드포인트 슬롯의 초기 열거법 Download PDF

Info

Publication number
KR101782852B1
KR101782852B1 KR1020160061385A KR20160061385A KR101782852B1 KR 101782852 B1 KR101782852 B1 KR 101782852B1 KR 1020160061385 A KR1020160061385 A KR 1020160061385A KR 20160061385 A KR20160061385 A KR 20160061385A KR 101782852 B1 KR101782852 B1 KR 101782852B1
Authority
KR
South Korea
Prior art keywords
endpoint
emulator
test
pcie
slot
Prior art date
Application number
KR1020160061385A
Other languages
English (en)
Other versions
KR20160147232A (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 KR20160147232A publication Critical patent/KR20160147232A/ko
Application granted granted Critical
Publication of KR101782852B1 publication Critical patent/KR101782852B1/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
    • G06F13/105Program control for peripheral devices where the programme performs an input/output emulation function
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/56External testing equipment for static stores, e.g. automatic test equipment [ATE]; Interfaces therefor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/56External testing equipment for static stores, e.g. automatic test equipment [ATE]; Interfaces therefor
    • G11C29/56016Apparatus features
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

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)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Information Transfer Systems (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Architecture (AREA)

Abstract

본 개시는 엔드포인트 에뮬레이션을 이용한 빈 엔드포인트 슬롯의 초기 열거용의 개선된 방법, 시스템 및 컴퓨터 프로그램 제품을 제공한다. 본 개시의 실시예는 시험 슬롯을 지정하지 않고 다수의 시험 슬롯을 사용하도록 시험 시스템을 초기화하는 문제를 해결한다. 보다 구체적으로, 일부 청구항은 초기 시험 시스템의 개시 및 장치의 열거동안 빈 시험 슬롯 각각에서 시험 장치 엔드포인트를 에뮬레이트하고, 에뮬레이트된 엔드포인트를 디스에이블하여, 시험 슬롯이 각종 장치의 시험을 가능케 하는 방법에 관한 것으로, 시험 슬롯을 지정하지 않고도 다수의 시험 슬롯을 사용하도록 시험 시스템을 초기화하는 문제를 해결하는 기술 분야의 향상 뿐만 아니라, 주변 기술 분야에서의 향상을 청구한다. 일부 청구항은 개시된 환경 내에서 다수의 시스템의 기능성을 개선한다.

Description

엔드포인트 에뮬레이션을 이용한 빈 엔드포인트 슬롯의 초기 열거법{INITIAL ENUMERATION OF EMPTY ENDPOINT SLOTS USING ENDPOINT EMULATION}
본 개시는 전자 시스템의 시험 분야에 관한 것으로, 보다 구체적으로는, 엔드포인트 에뮬레이션을 이용한 빈 엔드포인트 슬롯의 초기 열거 기술에 관한 것이다.
계산 시스템에서 동적 랜덤 액세스 메모리("DRAM")와 하드 디스크 드라이브("HDDs")간의 가격-성능 격차가 확대됨에 따라, 비휘발성 메모리("NVM") 솔루션이 점차적으로 그 격차를 메우고 있다. 구체적으로, 솔리드 스테이트 드라이브("SSDs") 형태의 NVM은 현대의 계산 시스템에서 새로운 "I/O 메모리 계층"을 만들고 있다. 또한, 계산 시스템에서 PCI 익스프레스 ("PCIe") 연결성이 증가되어, 고성능 I/O 인터페이스(예를 들어, PCIe Gen3에 대해 레인당 1 GBps)를 SSDs 등의 각종 장치에 제공한다. 예를 들어, 8 레인을 갖는 단일 PCIe Gen3 SSD 장치는 6 GBps의 데이터 액세스 대역폭을 통해 전달될 수 있다. 성장하는 시장 기회의 장점을 얻고자 할 때, SSD 제공자는 빠른 속도로 SSD 제품을 도입하고 있다. PCIe SSDs(예를 들어, NVM 익스프레스 또는 NVMe 표준)의 상호운용성을 표준화하는 노력을 기울이는 동안, 현대의 SSD 장치들 간에는 넓고 다양한 구현예 및 드라이버가 남아 있다.
그러한 가변성은 SSD 장치의 시험에 영향을 미칠 수 있다. 예를 들어, 시험중인 SSD 장치("DUT") 또는 시험 중인 유닛("UUT")에 대한 기계적이고/이거나 전기적 인터페이스는 UUT에서 구현되는 특정한 인터페이스를 따르게 된다. 다른 고성능 I/O 네트워크 및 인터페이스를 이용한 PCIe SSDs, 및/또는 다른 SSDs에 대한 "핫플러그" 한계는 시험 구현 성능 및 유용성에 영향을 미친다. 예를 들어, PCIe 장치 및 시스템이 핫 플러그 능력(예를 들어, 삽입, 제거, 스왑 등)을 지원할 수 있게 하는 반면, 그러한 장치 및 시스템은 시스템의 초기화시 사용하려는 모든 엔드포인트 위치(예를 들어, 카드 커넥터 또는 슬롯)에 장치(예를 들어, 엔드포인트 장치)가 존재해야 하는 것을 필요로 한다. 보다 구체적으로, 시스템 초기화(예를 들어, 시스템 부팅)시 호출되는 열거 프로세스는 소정의 엔드포인트 장치가 슬롯을 추후에 사용하기 위해 초기화시에 소정의 슬롯(예를 들어, 버스 번호)에 존재해야 하는 것을 필요로 한다. 시험 시스템의 이러한 한계에 대한 하나의 레거시 접근법(legacy approach)에서는, 시스템을 초기화하는 동안 모든 시험 슬롯이 UUTs 및/또는 더미 UUTs로 채워진다. 그러나, 병렬 시험용 다수(예를 들어, 256, 512 등)의 시험 슬롯을 포함하는 시험 시스템에서, 상당한 계산 및 인적 자원, 및/또는 하드웨어 비용이 필요할 수 있다.
그러므로, 그 기술은 시험 슬롯을 지정하지 않고도 다수의 시험 슬롯을 사용하도록 시험 시스템을 초기화하는 문제를 해결하여, 고성능 I/O 장치 시험 시스템, 비휘발성 메모리 시험 시스템, 및 기타 전자 시스템의 발전을 가능케 한다. 상술한 레거시 접근법 중 어느 것도 엔드포인트 에뮬레이션을 이용한 빈 엔드포인트 슬롯의 초기 열거용으로 본원에 개시한 기술의 능력을 달성하지는 못하였다. 그러므로, 개선이 필요하다.
본 개시는 상술한 문제를 레거시 접근법으로 해결하기 위해 개선된 방법, 시스템, 및 컴퓨터 프로그램 제품을 제공한다. 보다 구체적으로, 본 개시는 엔드포인트 에뮬레이션을 이용한 빈 엔드포인트 슬롯의 초기 열거용 방법, 시스템 및 컴퓨터 프로그램 제품에서 사용되는 기술에 대한 상세한 설명을 제공한다. 청구한 실시예는 시험 슬롯을 지정하지 않고도 다수의 시험 슬롯을 사용하도록 시험 시스템을 초기화하는 문제를 해결한다. 보다 구체적으로, 일부 청구항은 초기 시험 시스템의 개시 및 장치의 열거동안 빈 시험 슬롯 각각에서 시험 장치 엔드포인트를 에뮬레이트하고, 에뮬레이트된 엔드포인트를 디스에이블하여, 시험 슬롯이 각종 장치의 시험을 가능케 하는 방법에 관한 것으로, 시험 슬롯을 지정하지 않고도 다수의 시험 슬롯을 사용하도록 시험 시스템을 초기화하는 문제를 해결하는 기술 분야의 향상 뿐만 아니라, 주변 기술 분야에서의 향상을 청구한다. 일부 청구항은 개시된 환경 내에서 다수의 시스템의 기능성을 개선한다.
본 개시의 일부 실시예는 열거 프로세스를 실행하는 처리 유닛과, 엔드포인트 장치에 결합될 수 있는 엔드포인트 위치를 갖는 고성능 I/O 네트워크를 포함하는 시스템에 관한 것이다. 이 시스템은 엔드포인트 위치와 연관되고, 열거 프로세스 동안 엔드포인트 장치를 의미하는(representing) 엔드포인트 에뮬레이터를 더 포함한다. 하나 이상의 실시예에서, 시스템은 엔드포인트 위치 및 엔드포인트 에뮬레이터에 결합되는 스위치 카드를 더 포함한다. 일부 실시예에서 엔드포인트 에뮬레이터는 하드웨어를 포함한다.
다른 실시예에서 엔드포인트 에뮬레이터는 펌웨어를 포함한다. 일 실시예에서 시스템은 엔드포인트 장치(예를 들어, PCIe SSDs)를 시험하는 시험 시스템이다.
본 개시의 태양, 목적 및 장점에 대한 세부사항은 이하의 상세한 설명, 도면 및 특허청구범위에 기재되어 있다. 앞선 배경 기술 및 다음의 상세한 설명은 예시적으로 설명한 것으로, 특허청구범위를 제한하려고 의도한 것은 아니다.
아래에서 설명하는 도면은 예시를 위한 것이다. 도면은 본 개시의 범위를 제한하려는 것은 아니다.
도 1은 고성능 I/O 장치를 포함하는 시스템을 도시한 도면이다.
도 2는 일부 실시예에 따르는, 고성능 I/O 장치를 시험하는 시험 시스템의 블록도이다.
도 3a는 일부 실시예에 따르는, 엔드포인트 에뮬레이션을 이용한 빈 엔드포인트 슬롯의 초기 열거용 시스템에서 사용하는 바와 같은 미니 슬롯 엔드포인트 에뮬레이션 기술을 도시하는 도면이다.
도 3b는 일부 실시예에 따르는, 엔드포인트 에뮬레이션을 이용한 빈 엔드포인트 슬롯의 초기 열거용 시스템에서 사용하는 바와 같은 스위치 카드 엔드포인트 에뮬레이션 기술을 도시하는 도면이다.
도 4는 일부 실시예에 따르는, 엔드포인트 에뮬레이션을 이용한 빈 엔드포인트 슬롯의 초기 열거용 시스템에서 사용하는 에뮬레이트된 엔드포인트의 블럭도이다.
도 5a는 일부 실시예에 따르는, 엔드포인트 에뮬레이션을 이용한 빈 엔드포인트 슬롯의 초기 열거용 시스템에서 구현되는 바와 같은 정기적인(timed) 에뮬레이션 및 사용 기술을 예시하는 흐름도이다.
도 5b는 일부 실시예에 따르는, 엔드포인트 에뮬레이션을 이용한 빈 엔드포인트 슬롯의 초기 에뮬레이션용 시스템에서 구현되는 바와 같은 동적 에뮬레이션 및 사용 기술을 예시하는 흐름도이다.
도 6a는 일부 실시예에 따르는, 엔드포인트 에뮬레이션을 이용한 빈 엔드포인트 슬롯의 초기 에뉴머이션용 시스템의 블럭도이다.
도 6b는 본원에 개시한 실시예를 구현하기 위해 협력해서 동작하도록 상호연결되는 모듈을 계산하는 배열로서의 시스템을 도시한 도면이다.
도 7a 및 도 7b는 본 개시의 실시예를 구현하고/하거나 본원에서 설명한 환경에서 사용하는 데 적합한 구성요소의 예시적인 아키텍처를 도시한 도면이다.
본 개시의 일부 실시예는 시험 슬롯을 지정하지 않고도 다수의 시험 슬롯을 사용하도록 시험 시스템을 초기화하는 문제를 해결한다. 일부의 실시예는 초기 시험 시스템의 개시 및 장치의 열거동안 빈 시험 슬롯 각각에서 시험 장치 엔드포인트를 에뮬레이트하고, 에뮬레이트된 엔드포인트를 디스에이블하여, 시험 슬롯이 각종 장치의 시험을 가능케 하는 방법에 관한 것이다. 보다 구체적으로, 엔드포인트 에뮬레이션을 이용한 빈 엔드포인트 슬롯의 초기 열거를 위한 바람직한 환경, 방법 및 시스템을 첨부한 도면을 참조해서 본원에 개시한다.
개요
계산 시스템에서 동적 랜덤 액세스 메모리("DRAM")와 하드 디스크 드라이브("HDDs")간의 가격-성능 격차가 확대됨에 따라, 비휘발성 메모리("NVM") 솔루션이 점차적으로 그 격차를 메우고 있다.
상세하게, 솔리드 스테이트 드라이브("SSDs") 형태의 NVM은 현대의 계산 시스템에서 새로운 "I/O 메모리 계층"을 만들고 있다. 또한, 계산 시스템에서 PCI익스프레스 ("PCIe") 연결성이 증가되어, 고성능 I/O 인터페이스(예를 들어, PCIe Gen3에 대해 레인당 1 GBps)를 SSDs 등의 각종 장치에 제공한다. PCIe SSDs의 시험에 대한 도전은 계속된다. 구체적으로, 다른 고성능 I/O 네트워크 및 인터페이스를 이용한 PCIe SSDs, 및/또는 다른 SSDs에 대해서 "핫 플러그" 한계는 시험 구현 성능 및 유용성에 영향을 줄 수 있다. 예를 들어, PCIe 장치 및 시스템이 핫 플러그 능력(예를 들어, 장치 삽입, 제거, 스왑 등)을 지원할 수 있게 하는 반면, 그 장치 및 시스템은 시스템 초기화시 사용하려는 모든 슬롯에 장치(예를 들어, 엔드포인트)가 존재해야 하는 것을 필요로 한다. 보다 구체적으로, 시스템 초기화(예를 들어, 시스템 부팅)시 호출되는 열거 프로세스는 소정의 엔드포인트 장치가 슬롯을 추후에 사용하기 위해 초기시에 소정의 슬롯(예를 들어, 버스 번호)에 존재해야 하는 것을 필요로 한다. 시험 시스템의 한계에 대한 하나의 레거시 접근법에서는, 시스템을 초기화하는 동안 모든 시험 슬롯이 액추얼 UUTs 및/또는 더미 UUTs로 채워진다. 그러나, 병렬 시험용 다수(예를 들어, 256, 512, etc.)의 시험 슬롯을 포함하는 시험 시스템에서, 상당한 계산 및 인적 자원, 및/또는 하드웨어 비용이 필요할 수 있다.
본 개시의 일부 실시예는 시험 슬롯을 지정하지 않고도 다수의 시험 슬롯을 사용하도록 시험 시스템을 초기화하는 문제를 해결한다. 보다 구체적으로, 본원에 개시한 기술은 열거 프로세스를 실행하는 처리 유닛과, 엔드포인트 장치에 결합될 수 있는 엔드포인트 위치를 갖는 고성능 I/O 네트워크를 포함하는 시스템에서 구현할 수 있다. 이 시스템은 엔드포인트 위치와 연관되고(associated), 열거 프로세스 동안 엔드포인트 장치를 의미하는 엔드포인트 에뮬레이터를 더 포함한다. 하나 이상의 실시예에서, 시스템은 엔드포인트 위치 및 엔드포인트 에뮬레이터에 결합되는 스위치 카드를 더 포함한다. 일부 실시예에서 엔드포인트 에뮬레이터는 하드웨어를 포함한다. 다른 실시예에서, 엔드포인트 에뮬레이터는 펌웨어를 포함한다. 일 실시예에서, 시스템은 엔드포인트 장치(예를 들어, PCIe SSDs)를 시험하는 시험 시스템이다.
정의
본 설명에서 사용한 용어들은 용이한 참조를 위해 아래에 정의한다. 제시한 용어 및 각 정의는, 이들 정의로 엄격하게 제한되지 않으며, 용어는 본 개시 내에서의 용어의 사용에 의해서 추가로 정의될 수 있다.
- "예시적인"이란 용어는 본원에서 예로서 역할하는 것을 의미하도록 사용한다. "예시적인"으로 본원에서 설명한 태양 또는 설계는 다른 태양 또는 설계에 걸쳐서 반드시 바람직하거나 장점으로 해석할 필요는 없다. 오히려, 예시적인 워드의 사용은 명확한 형태로 개념을 나타내도록 의도하였다.
- 본 출원 및 첨부한 특허청구범위에서 사용한 바와 같이, "또는(or)"이란 용어는 배타적인 "또는"보다 오히려 포괄적인 "또는"를 의미한다. 즉, 달리 특정하지 않았거나 문맥으로부터 명백하지 않는 한, "X는 A 또는 B를 사용함"은 임의의 자연적이고 포괄적인 순열을 의미한다. 즉, X가 A를 사용하거나, X가 B를 사용하거나, X가 A 및 B를 사용하는 경우에, "X가 A 또는 B를 사용하는 것"은 상술한 임의의 예를 만족시킨다.
- 본 출원 및 첨부된 청구항에서 사용한 관사 "a" 및 "an"은 달리 특정하지 않았거나, 문맥으로부터 하나의 형태를 가리키는 것이 명백하지 않는 한, 일반적으로 "하나 이상"을 의미한다.
- "논리"란 용어는 본 개시의 전부 또는 일부를 구현하기 위해 사용하는 소프트웨어 또는 하드웨어의 조합을 의미한다.
- "비-일시성(non-transitory) 컴퓨터 판독가능한 매체"란 용어는 명령을 논리 프로세서에 제공하는데 참여하는 임의의 매체를 말한다.
- "모듈"은 컴퓨터 메모리의 어떤 부분 및 프로세서로서 구체화된 회로를 포함하는 어떤 회로까지의 임의의 혼합을 포함한다.
이하, 도면을 참조하여 특정 실시예를 상세하게 설명한다. 개시한 실시예는 특허청구범위를 제한하려고 의도한 것은 아니다.
바람직한 실시예의 설명
도 1은 고성능 I/O 장치를 포함하는 시스템(100)을 나타내는 도면이다. 선택적으로, 시스템(100)의 하나 이상의 예 또는 그 임의의 태양은, 본원에서 설명한 실시예의 아키텍처 및 기능성의 맥락에서 구현할 수 있다. 또한, 시스템(100) 또는 그 임의의 태양은 바람직한 임의의 환경에서 구현할 수 있다.
도 1에 도시한 바와 같이, 시스템(100)은 CPU(102), I/O 컨트롤러(130), 시스템 메모리(116), 및 복수의 PCIe 엔드포인트(예를 들어, PCIe 엔드포인트(1501), PCIe 엔드포인트(1502), PCIe 엔드포인트(1503), ..., PCIe 엔드포인트(150N))를 포함하는 PCIe 기반 계산 시스템의 일예다. CPU(102)는 복수의 처리 코어(예를 들어, 코어(1041), 코어(1042), ..., 코어(104M), 및 특정 PCIe 루트 복합 논리(112) 및 메모리 컨트롤러(114)를 포함하는 호스트 브릿지(110)를 더 포함한다. 복수의 PCIe 엔드포인트는 직접적으로(예를 들어, PCIe 링크(1401)를 통한 PCIe 엔드포인트(1501) 참조), 또는 직접 미디어 인터페이스 링크(예를 들어, DMI 링크(142)) 및 I/O 컨트롤러(130)(예를 들어, PCIe 링크(1402)를 통한 PCIe 엔드포인트(1502), PCIe 엔드포인트(1503), ..., PCIe 엔드포인트(150N))를 통해 PCIe 루트 복합 논리(112)와 통신할 수 있다. 예를 들어, PCIe 엔드포인트(1501)는 PCIe 루트 복합 논리 (112)에 직접 연결되는 고성능 GPU일 수 있다. 일부 경우에, 하나 이상의 PCIe 엔드포인트(예를 들어, PCIe 엔드포인트(1502), PCIe 엔드포인트(1503), ..., PCIe 엔드포인트(150N))는 마더보드 상의 각 PCIe 시스템 슬롯(120)으로 플러그된 카드일 수 있다. 다른 경우에는, 하나 이상의 PCIe 엔드포인트는 외부 커넥터를 사용하여 I/O 컨트롤러(130)에 연결하는 주변 카드일 수 있다. 도시한 바와 같이, I/O 컨트롤러(130)는 다른 통신 프로토콜(예를 들어, SATA, USB, PCI, 이더넷, LPC 등)용 인터페이스도 제공할 수 있다. 또한, 칩셋(예를 들어, CPU(102) 및 I/O 컨트롤러(130))는 PCIe 엔드포인트, PCI 장치(예를 들어, PCI 링크를 경유해서), 시스템 메모리(116), 및 다른 시스템 구성요소 간에 통신(예를 들어, 패킷 라우팅)을 지원할 수 있다.
도시한 바와 같이, PCIe 루트 복합 논리(112)는 호스트 브릿지(110)의 일부로서 CPU(102)내에 통합될 수 있다. 다른 예로서, PCIe 루트 복합 논리(112)는 칩셋 논리를 2개의 물리적인 칩으로 분할하는 시스템에서 "노스 브릿지"의 일부로서 구현할 수 있다. 다른 분할도 가능하다. 보다 구체적으로, PCIe 루트 복합 논리(112)는 PCIe 패브릭(fabric)(예를 들어, 브릿지, 스위치, 링크, 장치 등을 포함하는 PCIe 네트워크 또는 토폴로지)을 시스템 메모리(116) 및 CPU(102)에 연결할 수 있다. 예를 들어, PCIe 루트 복합 논리(112)는 루트 포트로 불리는 하나 이상의 논리 포트를 통해 PCIe 패브릭에 연결할 수 있다. 일부 경우에, 그러한 논리 포트는 PCIe 루트 복합 논리(112)를 포함하는 칩(예를 들어, CPU(102)) 외부의 하나 이상의 칩에서 물리적으로 구현할 수 있다. 복수의 PCIe 엔드포인트는 소정의 PCIe 링크를 종결하는 PCIe 장치를 포함할 수 있다. 그와 같이, PCIe 엔드포인트는 PCIe 토폴로지에 오직 하나의 연결(예를 들어, 업스트림 연결)을 갖는 것으로 설명할 수 있다. 각 PCIe 장치는 PCIe 패브릭 내의 버스 상에 존재하며, 하나 이상의 기능(예를 들어, 최대 8개의 기능)을 갖고 있다. 예로서, 하나의 기능은 그래픽 컨트롤러일 수 있고, 다른 기능은 네트워크 인터페이스일 수 있다. PCIe 토폴로지는 브릿지(예를 들어, PCIe 대 PCI 브릿지, 로우(low) 핀 카운터 또는 LPC 버스 등에 대한 브릿지) 및 스위치를 더 포함한다. 구체적으로, 그러한 스위치는 2개 이상의 PCIe 링크를 연결하는 장치를 포함할 수 있다.
시스템(100) 등의 PCIe 기반 계산 시스템에 먼저 전원이 투입되면(예를 들어, 시스템 부팅시), 소정의 프로그래밍 명령(예를 들어, 구성 소프트웨어)은 PCIe 패브릭을 스캔하고, 토폴로지가 어떻게 지정되는 지를 (예를 들어, 버스, 장치, 엔드포인트, 기능 등) 찾아내기 위해 (예를 들어, CPU(102)에서) 호출될 수 있다. 찾아내는 프로세스를 열거 프로세스가라 부를 수 있다. 열거 프로세스의 실행 및 완료에 앞서서, 예를 들어, 시스템(100)은 호스트 브릿지(110) 및 PCIe 루트 복합 논리(112)의 존재를 인식만 할 수 있다. 다른 동작들 중에, 열거 프로세스는 찾아낸 PCIe 엔드포인트들 중에서 어드레스 라우팅을 부분적으로 허용하기 위해, 특정 PCIe 어드레스 공간(118)을 규정하는(예를 들어, 할당하는) 구성 트랜잭션을 호출할 수 있다. 예를 들어, PCIe 어드레스 공간(118)은 PCIe 구성 공간, PCIe 메모리 공간, PCIe I/O 공간, 및 PCIe 메시지 공간을 포함할 수 있다. 다른 고성능 I/O 네트워크 및 프로토콜을 포함하는 다른 계산 시스템은 열거 요건도 가질 수 있다.
하나 이상의 PCIe 엔드포인트가 열거 프로세스 동안 존재하지 않는 경우, PCIe 패브릭의 각 위치는, 계산 시스템상에서의 파워 사이클링 및, 점유된 그러한 위치를 갖는 열거 프로세스를 다시 호출함이 없이, 추후에 사용할 수 없다. 예를 들어, PCIe 엔드포인트(1052)가 초기화 및 열거 프로세스의 실행 동안 PCIe 시스템 슬롯(120)에 포함된 각 슬롯에 삽입되어 있지 않다면, PCIe 엔드포인트(1052)는 추후에 각 슬롯에 플러그될 수 없고, 계산 시스템에 의해 인식될 수 없다. 상술한 바와 같이, 이러한 한계는 PCIe 장치(예를 들어, PCIe SSD) 시험 시스템에 영향을 줄 수 있어서, 초기화시 미지정 슬롯을 갖는 것이 바람직하다. 그러한 시험 시스템을 도 2과 관련해서 설명한다.
도 2는 고성능 I/O 장치를 시험하는 시험 시스템(200)의 블록도이다. 선택적으로, 시스템(200)의 하나 이상의 예 또는 그 임의의 태양은 본원에서 설명한 실시예의 아키텍처 및 기능성의 맥락에서 구현할 수 있다. 또한, 시험 시스템(200) 또는 그 임의의 태양은 바람직한 임의의 환경에서 구현할 수 있다.
도 2에 도시한 바와 같이, 시험 시스템(200)은 PCIe 시스템 슬롯(120)에 플러그된 복수의 PCIe 스위치 카드(예를 들어, 스위치 카드(2021), 스위치 카드(2022), ..., 스위치 카드(202N))를 사용해서 상술한 시스템(100)을 확장시킨다. PCIe 스위치 카드는 PCIe 링크(1402)를, 특정 PCIe 시험 슬롯(220)을 포함하는 시험 슬롯 백플레인(204)을 통해 결합되는 다수의 PCIe 링크(1403)에 효과적으로 전개시킨다. 예를 들어, 도시한 바와 같이, PCIe 스위치 카드는 PCIe 링크(1403) 대 PCIe 링크(1402)의 비율을 2:1로 해서 만든다. 다음에, PCIe 시험 슬롯(220)의 각 인스턴스는 복수의 PCIe 장치 UUTs (예를 들어, PCIe UUT 25011, PCIe UUT 25012, PCIe UUT 25021, PCIe UUT 25022, ..., PCIe UUT 250N1, PCIe UUT 250N2)중 각기 하나를 시험하기 위해 사용할 수 있다. 레거시 시스템에서, 모든 PCIe 시험 슬롯(220)은 PCIe UUTs의 시험을 위해 PCIe 시험 슬롯(220)을 사용할 수 있도록 시험 시스템(200)의 초기화시 지정될 필요가 있다. 그러나, 병렬 시험용 다수(예를 들어, 256, 512 등)의 시험 슬롯을 포함하는 시험 시스템의 경우, 모든 시험 슬롯을 초기화시 지정하려면, 상당한 계산 및 인적 자원, 및/또는 하드웨어 비용을 필요로 한다. 시험 슬롯을 지정하지 않고도 다수의 시험 슬롯을 사용하도록 시험 시스템을 초기화하는 문제를 해결하는 기술이 필요하다. 그러한 기술은 본원에서 도 3a 및 도 3b과 관련해서 설명한다.
도 3a는 엔드포인트 에뮬레이션을 이용한 빈 엔드포인트 슬롯의 초기 열거용 시스템에서 사용하는 바와 같은 미니 슬롯 엔드포인트 에뮬레이션 기술(3A00)을 도시한다. 선택적으로, 미니 슬롯 엔드포인트 에뮬레이션 기술(3A00)의 하나 이상의 예 또는 그 임의의 태양은 본원에서 설명한 실시예의 아키텍처 및 기능성의 맥락에서 구현할 수 있다. 또한, 미니-슬롯 엔드포인트 에뮬레이션 기술(3A00) 또는 그 임의의 태양은 바람직한 임의의 환경에서 구현할 수 있다.
도 3a는 PCIe 시스템 슬롯(120), PCIe 스위치 카드(예를 들어, 스위치 카드(2021), 스위치 카드(2022) ..., 스위치 카드(202N)), 시험 슬롯 백플레인(204), PCIe 시험 슬롯(220), 및 복수의 PCIe 장치(UUTs) (예를 들어, PCIe UUT (25011), PCIe UUT(25012), PCIe UUT(25021), PCIe UUT(25022), ..., PCIe UUT(250N1), PCIe UUT(250N2))를 포함하는 시험 시스템(200)의 일부를 구비한다. 미니-슬롯 엔드포인트 에뮬레이션 기술(3A00)을 가능케 하기 위해, 도 3a는 복수의 PCIe 엔드포인트 에뮬레이터(예를 들어, 엔드포인트 에뮬레이터(35011), 엔드포인트 에뮬레이터(35012), 엔드포인트 에뮬레이터(35021), 엔드포인트 에뮬레이터(35022) ..., 엔드포인트 에뮬레이터(350N1), 엔드포인트 에뮬레이터(350N2))를 추가로 예시한다. 하나 이상의 실시예에서, 복수의 PCIe 엔드포인트 에뮬레이터는 PCIe 에뮬레이터 슬롯(320)(예를 들어, PCIe M.2 슬롯)에 구비된 각 슬롯에 플러그될 수 있는 PCIe 미니 카드를 포함할 수 있다. 도시한 미니 슬롯 엔드포인트 에뮬레이션 기술(3A00)에 있어서, 복수의 PCIe 엔드포인트 에뮬레이터는 PCIe 에뮬레이터 슬롯(320)에 삽입될 수 있고, 열거 프로세스 동안 PCIe 시험 슬롯(220)의 각 하나에서 엔드포인트 장치를 의미하거나, "에뮬레이트"할 수 있다. 보다 구체적으로, PCIe 에뮬레이터 슬롯(320)의 각 인스턴스가 PCIe 시험 슬롯(220)의 각 인스턴스에 결합됨으로써, 시험 시스템(예를 들어, 시험 시스템(200))은, 열거 프로세스 동안 PCIe 시험 슬롯(220)을 지정하지 않고도, 열거 프로세스 동안 복수의 PCIe 엔드포인트 에뮬레이터를 찾아낼 수 있고, 각종 엔드포인트 장치(예를 들어, PCIe UUTs)를 추후에 삽입하기 위한 PCIe 시험 슬롯(220)을 효과적으로 구성할 수 있도록 한다. PCIe 시험 슬롯(220)의 열거 및 구성 후에는, 복수의 PCIe 엔드포인트 에뮬레이터를 디스에이블시켜, PCIe 시험 슬롯(220)에 존재하는 PCIe 장치(예를 들어, UUT)와 충돌하지 않도록 할 수 있다. 예를 들어, 그러한 디스에이블은 고성능 I/O 사양에 규정된 바와 같이 "안전한 제거" 프로세스를 따를 수 있다. 하나 이상의 실시예에서, 복수의 PCIe 엔드포인트 에뮬레이터의 인스턴스는, PCIe 시험 슬롯(220)의 각 인스턴스에 존재하는 PCIe 장치가 없을 때, 이네이블되거나 활성화될 수 있다. 엔드포인트 에뮬레이션을 이용한 빈 엔드포인트 슬롯의 초기 열거에 대한 다른 실시예 및 기술은 도 3b과 관련해서 설명한다.
도 3b는 엔드포인트 에뮬레이션을 이용한 빈 엔드포인트 슬롯의 초기 열거용 시스템에서 사용하는 바와 같은 스위치 카드 엔드포인트 에뮬레이션 기술(3B00)을 도시한다. 선택적으로, 스위치 카드 엔드포인트 에뮬레이션 기술(3B00)의 하나 이상의 예 또는 그 임의의 태양은 본원에서 설명한 실시예의 아키텍처 및 기능성의 맥락에서 구현할 수 있다. 또한, 스위치 카드 엔드포인트 에뮬레이션 기술(3B00) 또는 그 임의의 태양은 바람직한 임의의 환경에서 구현할 수 있다.
도 3b는 PCIe 시스템 슬롯(120), PCIe 스위치 카드(예를 들어, 스위치 카드(2021), 스위치 카드(2022) ..., 스위치 카드(202N)), 시험 슬롯 백플레인(204), PCIe 시험 슬롯(220), 및 복수의 PCIe 장치(UUTs) (예를 들어, PCIe UUT (25011), PCIe UUT(25012), PCIe UUT(25021), PCIe UUT(25022), ..., PCIe UUT(250N1), PCIe UUT(250N2))를 포함하는 시험 시스템(200)의 일부를 구비한다. 스위치 카드 엔드포인트 에뮬레이션 기술(3B00)을 가능하게 하기 위해, 도 3b는 도시한 복수의 PCIe 스위치 카드에서 구현될 수 있는 복수의 PCIe 엔드포인트 에뮬레이터(예를 들어, 엔드포인트 에뮬레이터(35013), 엔드포인트 에뮬레이터(35014), 엔드포인트 에뮬레이터(35023), 엔드포인트 에뮬레이터(35024) ..., 엔드포인트 에뮬레이터(350N3), 엔드포인트 에뮬레이터(350N4))를 추가로 예시한다. 하나 이상의 실시예에서, 복수의 PCIe 엔드포인트 에뮬레이터는 스위치 카드에 집적되어 있고, PCIe 엔드포인트 장치로서 인식될 수 있는 하나 이상의 칩을 포함할 수 있다. 다른 실시예에서, 복수의 PCIe 엔드포인트 에뮬레이터는 PCIe 엔드포인트 장치를 에뮬레이트할 수 있는 특정 프로그래밍 명령(예를 들어, 에뮬레이션 소프트웨어, 에뮬레이션 펌웨어 등)을 포함할 수 있다. 도시한 스위치 카드 엔드포인트 에뮬레이션 기술(3B00)에 있어서, 복수의 PCIe 엔드포인트 에뮬레이터는 열거 프로세스 동안 PCIe 시험 슬롯(220)의 각 하나를 의미하거나 "에뮬레이트"할 수 있다. 보다 구체적으로, PCIe 엔드포인트 에뮬레이터의 각 인스턴스가 PCIe 시험 슬롯(220)의 각 인스턴스와 연관될 수 있게 함으로써, 시험 시스템(예를 들어, 시험 시스템(200))은, 열거 프로세스 동안 PCIe 시험 슬롯(220)을 지정하지 않고도, 열거 프로세스 동안 복수의 PCIe 엔드포인트 에뮬레이터를 찾아낼 수 있고 각종 엔드포인트 장치(예를 들어, PCIe UUTs)를 추후에 삽입하기 위해 PCIe 시험 슬롯(220)을 효과적으로 구성할 수 있도록 한다. PCIe 시험 슬롯(220)의 열거 및 구성 후에는, 복수의 PCIe 엔드포인트 에뮬레이터를 디스에이블시켜, PCIe 시험 슬롯(220)에 존재하는 PCIe 장치(예를 들어, UUT)와 충돌하지 않도록 할 수 있다. 예를 들어, 그러한 디스에이블은 고성능 I/O 사양에 규정된 바와 같이 "안전한 제거" 프로세스를 따를 수 있다. 하나 이상의 실시예에서, 복수의 PCIe 엔드포인트 에뮬레이터의 인스턴스는, PCIe 시험 슬롯(220)의 각 인스턴스에 존재하는 PCIe 장치가 없을 때, 이네이블되거나 활성화될 수 있다. 상술한 PCIe 엔드포인트 에뮬레이터에 관한 보다 상세한 내용은 도 4와 관련해서 설명한다.
도 4는 엔드포인트 에뮬레이션을 이용한 빈 엔드포인트 슬롯의 초기 열거용 시스템에서 사용하는 엔드포인트 에뮬레이터(400)의 블록도이다. 선택적으로, 엔드포인트 에뮬레이터(400)의 하나 이상의 예 또는 그 임의의 태양은 본원에서 설명한 실시예의 아키텍처 및 기능성의 맥락에서 구현할 수 있다. 또한, 엔드포인트 에뮬레이터(400) 또는 그 임의의 태양은 바람직한 임의의 환경에서 구현할 수 있다.
일부 실시예에서, 엔드포인트 에뮬레이터(400)는 하나 이상의 상술한 엔드포인트 에뮬레이터(예를 들어, 엔드포인트 에뮬레이터(35011), 엔드포인트 에뮬레이터(35012), 엔드포인트 에뮬레이터(35021), 엔드포인트 에뮬레이터(35022), ..., 엔드포인트 에뮬레이터 (350N1) 엔드포인트 에뮬레이터(350N2), 엔드포인트 에뮬레이터(35013), 엔드포인트 에뮬레이터(35014). 엔드포인트 에뮬레이터(35023), 엔드포인트 에뮬레이터(35024), ..., 엔드포인트 에뮬레이터(350N3), 엔드포인트 에뮬레이터(350N4))를 의미할 수 있다. 구체적으로, 엔드포인트 에뮬레이터(400)는 물리층(452), 데이터 링크층(454), 트랜잭션층(456), 코어 논리 인터페이스(458) 및 장치 코어(460)를 포함하는 것으로 도시되어 있다. 엔드포인트 에뮬레이터(400)는 하나 이상의 PCIe 링크(1404)에 추가로 결합되어, 고성능 I/O 연결 및 프로토콜(예를 들어, PCIe 네트워크 또는 패브릭)을 통해 데이터를 송신(예를 들어, Tx) 및 수신(예를 들어, Rx)할 수 있다. 일부 실시예에서, 엔드포인트 에뮬레이터는 (예를 들어, 엔드포인트 에뮬레이터(400)를 이네이블시키거나 디스에이블시키기 위한) 특정 제어 신호(462)를 수신할 수 있다.
도시한 바와 같이, 엔드포인트 에뮬레이터(400)는 PCIe 프로토콜에 의해 구현되는 각종 통신층에 논리적으로 배열될 수 있다. 구체적으로, 물리층(452), 데이터 링크층(454), 및 트랜잭션층(456)은 PCIe 링크(1404)를 통해 통신되는 데이터 패킷의 추상적인 레벨(예를 들어, 각각 최저 내지 최고 레벨)과 연관될 수 있다. 보다 구체적으로, 트랜잭션층(456)은 TLP 헤더 및 특정 데이터 콘텐츠를 포함하는 트랜잭션층 패킷("TLP")을 구성할 수 있다. 데이터 콘텐츠의 소스는 장치 코어(460) 및 코어 논리 인터페이스(458)일 수 있다. 예로서, TLP는 PCIe 네트워크 또는 패브릭을 통해 이동하여, 소스 및 목적지 장치 간의 하나 이상의 PCIe 장치를 통과할 수 있다. 데이터 링크층(454)은 또 다른 헤더에서 TLP를 감싸는 데이터 링크층 패킷("DLLP")을 구성할 수 있다. 예로서, DLLP는 PCIe 링크를 통해 서로 직접 연결된 PCIe 장치들 간에서만 이동할 수 있다. 또한, 물리층(452)은 (예를 들어, DLLP의 크기에 따라) DLLP를 감쌀 수 있는 하나 이상의 물리층 패킷("PLPs")을 구성할 수 있다. 예를 들어, DLLP의 크기가 단일 PLP에 적합할 수 없는 경우, 물리층(452)은 DLLP를 PLPs의 몇 개의 "프레임"으로 분할한다. PLPs는 2개의 연결된 PCIe 장치들 간의 링크(예를 들어, PCIe 링크(1404))에서 송신된다.
본원에 개시한 기술과 관련해서, 엔드포인트 에뮬레이터(400)는, 열거 동안 특정 위치(예를 들어, 시험 슬롯)에서 엔드포인트 장치를 에뮬레이트하는데 사용하며, 이후 PCIe 패브릭으로부터 제거(예를 들어, 디스에이블)된다. 예를 들어, 엔드포인트 장치가 엔드포인트 에뮬레이터(400)의 열거 위치에 존재하는(예를 들어, UUT가 시험 슬롯에 삽입되는) 경우, 엔드포인트 에뮬레이터(400)는 디스에이블될 수 있다. 또한, 엔드포인트 장치가 엔드포인트 에뮬레이터(400)의 열거 위치에 존재하지 않는(예를 들어, UUT가 시험 슬롯에서 제거되는) 경우, 엔드포인트 에뮬레이터(400)는 이네이블될 수 있다. 그러한 에뮬레이션은 소정의 위치(예를 들어, 버스, 장치, 기능 등)에 어드레스 메모리를 할당할 수 있다. 다른 에뮬레이션 능력 및 동작을 필요로 할 수 있다. 일부 경우 및 실시예에서, 본원에서 설명한 기술에서 사용하는 엔드포인트 에뮬레이터는 다른 구성요소 및 분할부(예를 들어, 층, 코어 등)를 가질 수 있고, 에뮬레이션이 필요한 관련 통신 프로토콜(예를 들어, 고성능 I/O 프로토콜)을 따를 수 있다. 예를 들어, 소프트웨어 및/또는 펌웨어에서 구현되는 경우, 엔드포인트 에뮬레이터(400)는 물리층(452)을 구비하지 않을 수 있다. 구체적으로, 스위치 카드 엔드포인트 에뮬레이션 기술(3B00)을 참고해서, 열거 프로세스 동안 복수의 스위치 카드에서 수신한 데이터 패킷을 더 높은 추상적인 레벨로 인터셉트할 수 있고, 엔드포인트를 소프트웨어 및/또는 펌웨어로 에뮬레이트할 수 있다. 본원에서 설명한 기술을 실행하는 처리 흐름이 도 5a 및 도 5b에 도시되어 있다.
도 5a는 엔드포인트 에뮬레이션을 이용한 빈 엔드포인트 슬롯의 초기 열거용 시스템에서 구현되는 바와 같은 정기적인(timed) 에뮬레이션 및 사용 기술(5A00)을 예시하는 흐름도이다. 선택적으로, 정기적인 에뮬레이션 및 사용 기술(5A00)의 하나 이상의 예 또는 그 임의의 태양은 본원에서 설명한 실시예의 아키텍처 및 기능성의 맥락에서 구현할 수 있다. 또한, 정기적인 에뮬레이션 및 사용 기술(5A00) 또는 그 임의의 태양은 바람직한 임의의 환경에서 구현할 수 있다.
도 5a에 도시한 바와 같이, 본원에 개시한 기술을 구현하는 시스템을 초기화하고 사용하는 프로세스는, 시험 시스템을 부팅해서 개시할 수 있다(단계(502) 참조). 시험 시스템(예를 들어, 스위치 카드)의 특정 구성요소는 부팅 및/또는 전력의 존재를 검출할 수 있고(단계(504) 참조), 초기화 타이머를 기동시킨다(단계(506) 참조). 시험 시스템은 PCIe 패브릭에서 엔드포인트 장치를 열거하기 위해 특정 동작을 호출할 수 있다(단계(508) 참조). 예를 들어, 에뮬레이션 모드(552)에서 미니 슬롯 엔드포인트 에뮬레이션 기술(3A00)에 의해 예시한 바와 같이, 시험 시스템은 열거 프로세스 동안 PCIe UUTs가 존재하지 않아도, 존재 및 이네이블되는 PCIe 엔드포인트 에뮬레이터를 가질 수 있다. 상술한 바와 같이, 열거 프로세스는 찾아낸 각 엔드포인트 에뮬레이터에 대한 각종 동작을 수행함으로써, PCIe UUTs를 추후에 시험하기 위해 각 시험 슬롯을 이네이블시킬 수 있다. 다음에, 시험 시스템은 만료되는 초기화 타이머를 대기시킬 수 있다(단계(510) 참조). 예를 들어, 초기화 타이머는 열거 프로세스의 기간을 초과할 것으로 예상되는 시간(예를 들어, 30초)에 만료되도록 설정된다. 일부 실시예에서, 하나 이상의 신호가 시험 시스템에 의해 발생되어 열거 프로세스의 완료를 표시할 수 있다. 열거 프로세스가 완료되고/되거나 타이머가 만료되면, 엔드포인트 에뮬레이터는 디스에이블된다(단계(512) 참조). 예를 들어, 에뮬레이션 디스에이블 모드(554)에서 미니 슬롯 엔드포인트 에뮬레이션 기술(3A00)에 의해 예시한 바와 같이, 시험 시스템은 PCIe UUTs가 존재하지 않아도, PCIe 엔드포인트 에뮬레이터를 디스에이블시킬 수 있다. 시험 시스템은 (예를 들어, 시험 시스템 운용자가) 시험 슬롯의 각종 조합을 이용하여 각종 장치를 시험하는데 사용할 수 있다(단계(514) 참조). 예를 들어, 시험 모드(556)에서 미니 슬롯 엔드포인트 에뮬레이션 기술(3A00)에 의해 예시한 바와 같이, 시험을 위해 하나 이상의 PCIe UUTs를 각 시험 슬롯에 삽입할 수 있다.
도 5b는 엔드포인트 에뮬레이션을 이용한 빈 엔드포인트 슬롯의 초기 열거용 시스템에서 구현되는 바와 같은 동적 에뮬레이션 및 사용 기술(5B00)을 예시하는 흐름도이다. 선택적으로, 동적 에뮬레이션 및 사용 기술(5B00)의 하나 이상의 예 또는 그 임의의 태양은 본원에서 설명한 실시예의 아키텍처 및 기능성의 맥락에서 구현할 수 있다. 또한, 동적 에뮬레이션 및 사용 기술(5B00) 또는 그 임의의 태양은 바람직한 임의의 환경에서 구현할 수 있다.
도 5b에 도시한 바와 같이, 본원에 개시한 기술을 구현하는 시스템을 초기화하고 사용하는 프로세스는, 시험 시스템을 부팅해서 개시할 수 있다(단계(522) 참조). 시험 시스템 내의 특정 구성요소(예를 들어, 스위치 카드, CPU, 호스트 브릿지 등)은 부팅 및/또는 전력의 존재를 검출할 수 있고(단계(524) 참조), 특정 동작을 호출하여 엔드포인트 장치를 PCIe 패브릭에 열거할 수 있다(단계(526) 참조). 예를 들어, 에뉴멀레이션 모드(562)에서 미니 슬롯 엔드포인트 에뮬레이션 기술(3A00)에 의해 예시한 바와 같이, 시험 시스템은 열거 프로세스 동안 PCIe UUTs가 존재하지 않아도, 존재 및 이네이블되는 PCIe 엔드포인트 에뮬레이터를 가질 수 있다. 상술한 바와 같이, 열거 프로세스는 찾아낸 각 엔드포인트 에뮬레이터에 대한 (예를 들어, 어드레스 메모리를 할당하는)각종 동작을 수행함으로써, PCIe UUTs를 추후에 시험하기 위해 각 시험 슬롯을 이네이블시킬 수 있다. 다음에, 열거 프로세스가 완료되면(예를 들어, 시스템 플래그가 설정되면), 하나 이상의 PCIe UUTs를 시험 시스템의 시험 슬롯에 삽입할 수 있다(단계(528) 참조). 시험 시스템은 하나 이상의 UUTs의 존재를 검출할 수 있고(단계(530) 참조), 지정된 시험 슬롯에 관련된 하나 이상의 엔드포인트 에뮬레이터를 디스에이블시킬 수 있다(단계(532) 참조). 예를 들어, 시험 모드(564)에서 미니 슬롯 엔드포인트 에뮬레이션 기술(3A00)에 의해 예시한 바와 같이, PCIe UUTs에 의해 지정된 슬롯과 연관된 엔드포인트 에뮬레이터가 디스에이블된다. 장치 시험이 더 필요한 경우는(판단 단계(534) 참조), 시험 운용자는 현재의 UUTs를 제거하고(단계(536) 참조), 단계(528), 단계(530), 및 단계(532)를 반복한다. 시험이 완료되면, 처리 흐름은 종료될 수 있다.
추가 예
본원에 개시한 실시예를 구현하는 다른 방법이 존재함을 주목해야 된다. 그러므로, 본원에서 제시한 실시예 및 예들은 예시를 위한 것이며 제한하지 않는 것으로 여겨야 하며, 특허청구범위는 본원에서 제공한 상세한 설명으로 제한되지 않으며, 단 그의 범위 및 균등물 내에서 변경될 수 있다.
본 개시의 추가 실시예
도 6a는 일부 실시예에 따라서, 엔드포인트 에뮬레이션을 이용한 빈 엔드포인트 슬롯의 초기 열거용 시스템(6A00)의 블록도이다.
도 6b는 본원에 개시한 실시예를 구현하기 위해 협력해서 동작하도록 상호연결되는 모듈을 계산하는 배열로서의 시스템(6B00)을 도시한다. 시스템(6B00)의 분할은 단지 예시를 위한 것이며, 다른 분할도 가능하다. 시스템(6B00)은 적어도 하나의 프로세서 및 적어도 하나의 메모리를 포함하고, 메모리는 시스템의 동작에 대응하여 프로그램 명령을 저장한다. 도시한 바와 같이, 모듈에 의해 액세스가능한 프로그램 명령을 이용하여 상기 동작을 전체적으로 또는 부분적으로 구현할 수 있다. 모듈은 통신 경로(6B05)에 연결되고, 임의의 동작은 통신 경로(6B05)를 통해 다른 동작과 통신할 수 있다. 시스템의 모듈은 시스템(6B00)내에서 동작을 개별적으로 또는 조합해서 수행할 수 있다. 시스템(6B00)내에서 수행되는 임의의 동작은 특허청구범위에서 특정하지 않는 한, 임의의 순서로 수행할 수 있다. 도 6b에 도시한 실시예는 시스템(6B00)으로 도시한 컴퓨터 시스템의 일부를 구현하고, 이 시스템은 프로그램 코드 명령 세트를 실행하는 컴퓨터 프로세서(모듈(6B10) 참조)와, 적어도 하나의 처리 유닛을 식별하는 단계로, 상기 적어도 하나의 처리 유닛은 하나 이상의 프로그래밍 명령을 실행하게 되는, 단계와(모듈(6B20) 참조); 적어도 하나의 처리 유닛에 결합된 고성능 I/O 네트워크를 식별하는 단계로, 상기 고성능 I/O 네트워크는 적어도 하나의 엔드포인트 장치에 결합하게 되는 적어도 하나의 엔드포인트 위치를 포함하는, 단계와(모듈(6B30) 참조); 적어도 하나의 엔드포인트 에뮬레이터를 식별하는 단계로, 상기 적어도 하나의 엔드포인트 에뮬레이터는 상기 적어도 하나의 엔드포인트 위치와 연관되는, 단계와(모듈(6B40) 참조); 프로그래밍 명령의 제 1부분을 호출하여 상기 적어도 하나의 처리 유닛을 초기화하는 단계와(모듈(6B50) 참조); 프로그래밍 명령의 제 2부분을 호출하여 상기 고성능 I/O 네트워크를 열거하는 단계;를 실행하는 프로그램 코드 명령을 유지하는 메모리를 액세스하기 위한 모듈을 포함하고, 상기 고성능 I/O 네트워크를 열거하는 단계는, 적어도 부분적으로, 상기 적어도 하나의 엔드포인트 에뮬레이터에 근거하는 적어도 하나의 엔드포인트 장치의 의미(representation)를 생성하는 단계를 포함한다(모듈 (6B60) 참조).
시스템 아키텍처의 추가 예
도 7a는 본 개시의 실시예를 구현하는 데 적합한 컴퓨터 시스템(7A00)의 예를 나타내는 블록도이다. 컴퓨터 시스템(7A00)는 서브시스템과, 프로세서(707), 시스템 메모리(예를 들어, 메인 메모리(708), 또는 랜덤 액세스 메모리(RAM) 영역), 정적 저장 장치(예를 들어, ROM(709)), 저장 장치(710)(예를 들어, 자기 또는 광학 식), 데이터 인터페이스(733), 통신 인터페이스(714)(예를 들어, 모뎀 또는 이더넷 카드), 디스플레이(711)(예를 들어, CRT 또는 LCD), 입력 장치(712)(예를 들어, 키보드, 커서 제어 등), 및 외부 데이터 저장소(731) 등의 장치를 상호연결하는 버스(706), 또는 정보를 통신하는 다른 통신 메커니즘을 포함한다.
본 개시의 일 실시예에 따라, 컴퓨터 시스템(7A00)은, 시스템 메모리에 포함된 하나 이상의 명령의 하나 이상의 시퀀스를 실행하는 프로세서(707)에 의해 특정한 동작을 수행한다. 그러한 명령은 정적 저장 장치 또는 디스크 드라이브 등의 다른 컴퓨터 판독가능한/사용가능한 매체로부터 시스템 메모리로 판독될 수 있다. 대안의 실시예에서, 본 개시를 구현하는 소프트웨어 명령 대신에, 또는 그와 조합해서 하드 유선 회로를 사용할 수 있다. 그러므로, 본 개시의 실시예는 하드웨어 회로 및/또는 소프트웨어의 특정한 결합으로 제한되지 않는다. 일 실시예에서 "논리"란 용어는 본 개시의 전부 또는 일부를 구현하는 데 사용하는 소프트웨어 또는 하드웨어의 결합을 의미한다.
본원에서 사용한 바와 같이, "컴퓨터 판독가능한 매체" 또는 "컴퓨터 사용가능한 매체"란 용어는 실행을 위해 프로세서(707)에 명령을 제공하는데 참여하는 매체를 말한다. 그러한 매체는 제한되지 않으나, 비휘활성 매체 및 휘발성 매체를 포함하는 다수의 형태를 가질 수 있다. 비휘발성 매체는 예를 들어, 디스크 드라이브 또는 테이프 드라이브 등의 광학 또는 자기 디스크를 포함한다. 휘발성 매체는 RAM 메모리 등의 동적 메모리를 포함한다.
컴퓨터 판독가능한 매체의 일반적인 형태는, 예를 들어, 플로피 디스크, 플렉시블 디스크, 하드 디스크, 자기 테이프 또는 임의의 다른 자기 매체; CD-ROM 또는 임의의 다른 광학 매체; 펀치 카드, 페이퍼 테이프 또는 임의의 홀 패턴을 갖는 임의의 다른 물리적인 매체; RAM, PROM, EPROM, FLASH-EPROM 또는 임의의 다른 메모리 칩 또는 카트리지; 또는 컴퓨터가 데이터를 판독할 수 있는 다른 비-일시성 매체를 포함한다.
본 개시의 실시예에서, 본 개시를 실시하는 명령의 시퀀스 실행은, 컴퓨터 시스템(7A00)의 단일 인스턴스에 의해 수행된다. 본 개시의 특정 실시예에 따르면, 통신 링크(715)(예를 들어, LAN, PTSN, 또는 무선 네트워크)에 의해 결합되는 컴퓨터 시스템(7A00)의 2개 이상의 인스턴스는, 서로 협력해서 본 개시를 실시하는 데 필요한 명령 시퀀스를 수행할 수 있다.
컴퓨터 시스템(7A00)은 통신 링크(715) 및 통신 인터페이스(714)를 통해, 프로그램(예를 들어, 어플리케이션 코드)을 포함하는, 메시지, 데이터 및 명령을 송수신할 수 있다. 수신된 프로그램 코드가 추후 실행을 위해 수신되고, 및/또는 저장 장치(710) 또는 임의의 다른 비휘발성 저장체에 저장됨으로써, 프로세서(707)에 의해 실행될 수 있다. 컴퓨터 시스템(7A00)은 데이터 인터페이스(733)를 통해 외부 데이터 저장소(731)의 데이터베이스(732)와 통신할 수 있다. 데이터베이스(732)의 데이터 아이템은 1차 키(예를 들어, 관련 데이터베이스 1차 키)를 사용해서 액세스할 수 있다. 본원에서 사용하는 바와 같은 모듈은, 시스템 메모리의 일부 및 프로세서(707)로 구체화된 하드 유선 회로를 포함하는 임의의 하드 유선 회로까지의 혼합으로 구현할 수 있다.
도 7b는 본 개시의 실시예를 구현하는 데 적합한 시험 시스템(760)의 인스턴스에 대한 블록도(7B00)다. 시험 시스템(760)은 시험 컨트롤러(762), 특정 기구(764), 시험 데이터 스토어(766), 및 특정 핀 전자부품(768)을 포함한다. 시험 컨트롤러(762)는 하나 이상의 시험 중인 유닛 또는 UUTs(예를 들어, UUT(7501), UUT(7502), ..., UUT(750N))에 대해 시험 시퀀스를 실행하도록 (예를 들어, 시험 데이터 스토어(766)에 저장된 프로그램 명령을 통해) 할 수 있다. 시험은 기구(764)(예를 들어, 디지털 I/O, 파형 발생기, 파형 디지타이저 등)를 사용하여, UUTs으로부터 시험 신호를 수신하거나 그에 송신할 수 있다. 핀 전자부품(768)은 송수신된 시험 신호를 제어(예를 들어, 버퍼, 증폭, 전개, 멀티플렉싱 등을)할 수 있다. UUTs를 핀 전자부품(768)에 결합하기 위해, 인터페이스(752)는 전기 및/또는 기계적인 인터페이스 메커니즘(예를 들어, 포고(pogo) 핀, 프로브, 소켓, 신호 라우팅 등)을 제공할 수 있다. 시험 결과는 측정 세팅, 구성 세팅 및 다른 데이터와 함께 시험 컨트롤러(762)에 의해 획득할 수 있고, 시험 데이터 스토어(766)에 저장할 수 있다. 도시한 바와 같이, 시험 시스템(760)은 네트워크(754)(예를 들어, 무선 네트워크, 광역 통신망(WAN), 근거리 통신망(LAN), 인터넷, 인트라넷, 사설 통신망 등)를 사용해서 다른 시험 시스템 및 계산 장치와 통신할 수 있다. 일부 경우에, 시험 시스템(760)은 (예를 들어, PCIe 장치를 시험하기 위한) 시스템-레벨 시험 시스템을 의미할 수 있다. 그러한 경우에, 예를 들어, 시험 컨트롤러(762)는 CPU일 수 있고, 기구(764) 및 핀 전자부품(768)은 (예를 들어, CPU에 의해 발생되고, 드라이버 및 컨트롤러와 연관되는) 시스템 통신 프로토콜 논리 및 신호일 수 있으며, 인터페이스(752)는 표준 시스템 슬롯 및 소켓(예를 들어, PCI, PCIe, USB, SATA, 이더넷 등)일 수 있다.
상기의 명세서에 있어서, 본 개시는 특정한 실시예를 참조해서 설명하였다. 그러나, 각종 변형 및 변경이 본 개시의 넓은 기술적 사상 및 범위로부터 벗어남이 없이 이루어질 수 있다. 예를 들어, 상술한 프로세스 흐름은 프로세스 동작의 특정한 순서를 참조해서 설명하였다. 그러나, 설명한 많은 프로세스의 순서가 본 개시의 범위 또는 동작에 영향을 주지 않고 변경이 가능하다. 따라서, 명세서 및 도면은 제한적인 의미보다 예시를 위한 것이다.

Claims (19)

  1. 엔드포인트 슬롯의 초기 열거 시스템에 있어서,
    열거(enumeration) 프로세스를 포함하는 하나 이상의 프로그래밍 명령을 실행하는 적어도 하나의 처리 유닛;
    적어도 하나의 엔드포인트 장치에 결합되는, I/O 네트워크 내의 적어도 하나의 엔드포인트 위치(endpoint location); 및
    상기 적어도 하나의 엔드포인트 위치에 연관되는 적어도 하나의 엔드포인트 에뮬레이터(emulator)
    를 포함하며,
    상기 적어도 하나의 엔드포인트 에뮬레이터는 상기 열거 프로세스 동안 상기 적어도 하나의 엔드포인트 장치를 의미하고(represent),
    상기 적어도 하나의 엔드포인트 에뮬레이터의 각 인스턴스는 상기 I/O 네트워크의 엔드포인트 위치인 적어도 하나의 시험 슬롯의 각 인스턴스와 연관됨으로써, 상기 시스템은 열거 프로세스 동안 상기 시험 슬롯을 지정하지 않고도, 상기 엔드포인트 에뮬레이터를 찾아낼 수 있는 것인 엔드포인트 슬롯의 초기 열거 시스템.
  2. 제1항에 있어서,
    적어도 하나의 스위치 카드를 더 포함하고,
    상기 적어도 하나의 스위치 카드는 상기 적어도 하나의 엔드포인트 위치 및 상기 적어도 하나의 엔드포인트 에뮬레이터에 결합되는 것인 엔드포인트 슬롯의 초기 열거 시스템.
  3. 제1항에 있어서,
    상기 적어도 하나의 엔드포인트 위치는 카드 슬롯인 것인 엔드포인트 슬롯의 초기 열거 시스템.
  4. 제1항에 있어서,
    상기 적어도 하나의 엔드포인트 에뮬레이터는 에뮬레이터 슬롯에 플러그된 카드인 것인 엔드포인트 슬롯의 초기 열거 시스템.
  5. 제1항에 있어서,
    상기 적어도 하나의 엔드포인트 에뮬레이터는 칩(chip) 및 펌웨어 중 적어도 하나를 포함하는 것인 엔드포인트 슬롯의 초기 열거 시스템.
  6. 시험 시스템에 있어서,
    열거 프로세스를 포함하는 하나 이상의 프로그래밍 명령을 실행하는 적어도 하나의 처리 유닛;
    상기 적어도 하나의 처리 유닛에 결합되는 I/O 네트워크;
    상기 I/O 네트워크의 엔드포인트 위치이며, 상기 시험 시스템에 의한 시험을 위해 복수의 I/O 장치 중 적어도 하나에 결합되는 적어도 하나의 시험 슬롯; 및
    상기 적어도 하나의 시험 슬롯과 연관되는 적어도 하나의 엔드포인트 에뮬레이터
    를 포함하며,
    상기 적어도 하나의 엔드포인트 에뮬레이터는, 상기 열거 프로세스 동안 상기 복수의 I/O 장치중 적어도 하나를 의미하고,
    상기 적어도 하나의 엔드포인트 에뮬레이터의 각 인스턴스는 상기 적어도 하나의 시험 슬롯의 각 인스턴스와 연관됨으로써, 상기 시스템은 열거 프로세스 동안 상기 시험 슬롯을 지정하지 않고도, 상기 엔드포인트 에뮬레이터를 찾아낼 수 있는 것인 시험 시스템.
  7. 제6항에 있어서,
    적어도 하나의 스위치 카드를 더 포함하고,
    상기 적어도 하나의 스위치 카드는 상기 적어도 하나의 시험 슬롯 및 상기 적어도 하나의 엔드포인트 에뮬레이터에 결합되는 것인 시험 시스템.
  8. 제6항에 있어서,
    상기 적어도 하나의 시험 슬롯은 카드 슬롯인 것인 시험 시스템.
  9. 제6항에 있어서,
    상기 적어도 하나의 엔드포인트 에뮬레이터는 에뮬레이터 슬롯에 플러그된 카드인 것인 시험 시스템.
  10. 제6항에 있어서,
    상기 적어도 하나의 엔드포인트 에뮬레이터는 칩 및 펌웨어 중 적어도 하나를 포함하는 것인 시험 시스템.
  11. 엔드포인트 슬롯의 초기 열거 시스템이, 하나 이상의 프로그래밍 명령을 실행하는 적어도 하나의 처리 유닛을 식별하는 단계;
    상기 엔드포인트 슬롯의 초기 열거 시스템이, 적어도 하나의 처리 유닛에 결합되어 있으며, 적어도 하나의 엔드포인트 장치에 결합되는 적어도 하나의 엔드포인트 위치를 포함하는 I/O 네트워크를 식별하는 단계;
    상기 엔드포인트 슬롯의 초기 열거 시스템이, 상기 적어도 하나의 엔드포인트 위치와 연관된 적어도 하나의 엔드포인트 에뮬레이터를 식별하는 단계;
    상기 엔드포인트 슬롯의 초기 열거 시스템이, 프로그래밍 명령의 제1 부분을 호출하여 상기 적어도 하나의 처리 유닛을 초기화하는 단계; 및
    상기 엔드포인트 슬롯의 초기 열거 시스템이, 프로그래밍 명령의 제2 부분을 호출하여 상기 I/O 네트워크를 열거하는 단계
    를 포함하며,
    상기 I/O 네트워크를 열거하는 단계는,
    상기 적어도 하나의 엔드포인트 에뮬레이터에 적어도 부분적으로 기반하는 적어도 하나의 엔드포인트 장치의 의미(representation)를 생성하는 단계를 포함하고,
    상기 적어도 하나의 엔드포인트 에뮬레이터의 각 인스턴스는 상기 I/O 네트워크의 엔드포인트 위치인 적어도 하나의 시험 슬롯의 각 인스턴스와 연관됨으로써, 상기 시스템은 열거 프로세스 동안 상기 시험 슬롯을 지정하지 않고도, 상기 엔드포인트 에뮬레이터를 찾아낼 수 있는 것인 엔드포인트 슬롯의 초기 열거 방법.
  12. 제11항에 있어서,
    상기 I/O 네트워크를 열거하는 단계는,
    상기 적어도 하나의 엔드포인트 에뮬레이터와 연관된 적어도 하나의 어드레스 공간을 할당하는 단계를 더 포함하는 것인 엔드포인트 슬롯의 초기 열거 방법.
  13. 제11항에 있어서,
    상기 I/O 네트워크를 열거하는 단계에 대응되는(responsive) 단계로서, 상기 적어도 하나의 엔드포인트 에뮬레이터를 디스에이블하는 단계를 더 포함하는 엔드포인트 슬롯의 초기 열거 방법.
  14. 제13항에 있어서,
    상기 적어도 하나의 엔드포인트 에뮬레이터를 디스에이블하는 단계에 대응되는(responsive) 단계로서, 상기 적어도 하나의 엔드포인트 장치를 상기 적어도 하나의 엔드포인트 위치에 결합하는 단계를 더 포함하는 엔드포인트 슬롯의 초기 열거 방법.
  15. 제14항에 있어서,
    상기 엔드포인트 장치는 시험 중인 유닛인 것인 엔드포인트 슬롯의 초기 열거 방법.
  16. 제11항에 있어서,
    상기 적어도 하나의 엔드포인트 위치는 카드 슬롯인 것인 엔드포인트 슬롯의 초기 열거 방법.
  17. 제11항에 있어서,
    상기 적어도 하나의 엔드포인트 위치는 시험 슬롯인 것인 엔드포인트 슬롯의 초기 열거 방법.
  18. 제11항에 있어서,
    상기 적어도 하나의 엔드포인트 에뮬레이터는 에뮬레이터 슬롯에 플러그된 카드인 것인 엔드포인트 슬롯의 초기 열거 방법.
  19. 제11항에 있어서,
    상기 적어도 하나의 엔드포인트 에뮬레이터는 칩 및 펌웨어 중 적어도 하나를 포함하는 것인 엔드포인트 슬롯의 초기 열거 방법.
KR1020160061385A 2015-06-14 2016-05-19 엔드포인트 에뮬레이션을 이용한 빈 엔드포인트 슬롯의 초기 열거법 KR101782852B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201562175406P 2015-06-14 2015-06-14
US62/175,406 2015-06-14

Publications (2)

Publication Number Publication Date
KR20160147232A KR20160147232A (ko) 2016-12-22
KR101782852B1 true KR101782852B1 (ko) 2017-10-23

Family

ID=57517307

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160061385A KR101782852B1 (ko) 2015-06-14 2016-05-19 엔드포인트 에뮬레이션을 이용한 빈 엔드포인트 슬롯의 초기 열거법

Country Status (2)

Country Link
US (1) US9965405B2 (ko)
KR (1) KR101782852B1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10185670B2 (en) * 2015-09-15 2019-01-22 Gatekeeper Ltd. System and method for securely connecting to a peripheral device
US10484361B2 (en) * 2016-06-30 2019-11-19 Intel Corporation Systems, methods, and apparatuses for implementing a virtual device observation and debug network for high speed serial IOS
US10466751B2 (en) * 2017-02-20 2019-11-05 International Business Machines Corporation Supplemental power distribution voltage stabilization
US10379139B2 (en) * 2017-04-17 2019-08-13 Western Digital Technologies, Inc. Methods, systems and devices for testing circuit modules using a microbackplane interface
CN107193698A (zh) * 2017-05-17 2017-09-22 郑州云海信息技术有限公司 一种快速验证pci‑e槽位稳定性的方法
US11093431B2 (en) * 2018-10-12 2021-08-17 Dell Products L.P. Automated device discovery system
US20220075747A1 (en) * 2020-09-09 2022-03-10 Mellanox Technologies Tlv Ltd. Support for multiple hot pluggable devices via emulated switch

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100445636B1 (ko) * 2002-06-17 2004-08-25 삼성전자주식회사 에프피지에이와 다수개의 프로그램 가능한 메모리모듈들을 이용한 컴퓨터 시스템 테스트 장치 및 그 테스트방법
US20110082949A1 (en) 2008-06-10 2011-04-07 Matthews David L Presenting multi-function devices behind a switch hierarchy as a single function device

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5715433A (en) * 1995-04-20 1998-02-03 Raghavan; Rajan Dynamic software model for emulating hardware
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
US6442514B1 (en) * 1998-12-04 2002-08-27 Xilinx, Inc. Method and system for simulating a communications bus
TW445422B (en) * 1999-10-06 2001-07-11 Via Tech Inc Software simulation testing system allowing the north bridge and south bridge to perform circuit tests respectively
TW451126B (en) * 1999-11-09 2001-08-21 Via Tech Inc Computer element integrated testing system with software simulation
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
US6980944B1 (en) * 2000-03-17 2005-12-27 Microsoft Corporation System and method for simulating hardware components in a configuration and power management system
JP2003044420A (ja) * 2001-07-27 2003-02-14 Fujitsu Ltd デバイスドライバ装置
US7260749B2 (en) * 2003-01-22 2007-08-21 Red Hat, Inc. Hot plug interfaces and failure handling
US7155379B2 (en) * 2003-02-25 2006-12-26 Microsoft Corporation Simulation of a PCI device's memory-mapped I/O registers
JP2007529813A (ja) * 2004-03-19 2007-10-25 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ PCIExpressエンドポイントのシミュレーション回路及びPCIExpressスイッチ用ダウンストリームポート
US7447822B2 (en) * 2005-12-12 2008-11-04 Inventec Corporation Hot-plug control system and method
US8103993B2 (en) * 2006-05-24 2012-01-24 International Business Machines Corporation Structure for dynamically allocating lanes to a plurality of PCI express connectors
US8762698B2 (en) * 2009-12-14 2014-06-24 Intel Corporation Virtual bus device using management engine

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100445636B1 (ko) * 2002-06-17 2004-08-25 삼성전자주식회사 에프피지에이와 다수개의 프로그램 가능한 메모리모듈들을 이용한 컴퓨터 시스템 테스트 장치 및 그 테스트방법
US20110082949A1 (en) 2008-06-10 2011-04-07 Matthews David L Presenting multi-function devices behind a switch hierarchy as a single function device

Also Published As

Publication number Publication date
US9965405B2 (en) 2018-05-08
US20160365155A1 (en) 2016-12-15
KR20160147232A (ko) 2016-12-22

Similar Documents

Publication Publication Date Title
KR101782852B1 (ko) 엔드포인트 에뮬레이션을 이용한 빈 엔드포인트 슬롯의 초기 열거법
CN107423169B (zh) 用于测试高速外围设备互连设备的方法和系统
KR101035832B1 (ko) 집적 종단점 장치와, 집적 pci 익스프레스 종단점 장치및 pci 익스프레스 통신 시스템
KR101825244B1 (ko) 전속 병렬 dut 테스트용 솔루션
US8824492B2 (en) Accelerator system for remote data storage
ES2381324T3 (es) Proporcionar direccionamiento indirecto a los datos para un bloque de control en un subsistema de canal de un sistema de tratamiento de I/O
CN111581128A (zh) 通过虚拟usb中心在usb设备中动态提供虚拟化功能的方法
US10509758B1 (en) Emulated switch with hot-plugging
US9781117B2 (en) Multinode hubs for trusted computing
US8756360B1 (en) PCI-E compatible chassis having multi-host capability
US10013388B1 (en) Dynamic peer-to-peer configuration
CN114818599A (zh) 芯片仿真验证系统
CN109324991B (zh) 一种pcie设备的热插拔装置、方法、介质及系统
US20130290594A1 (en) Core-driven translation and loopback test
CN105335548A (zh) 一种用于ice的mcu仿真方法
CN115951966A (zh) 验证仿真的基于PCIe的存储装置的电力循环的系统和方法
CN109656675A (zh) 总线设备、计算机设备及实现物理主机云存储的方法
WO2016184170A1 (zh) Smi接口器件的调试装置及方法、存储介质
WO2014000299A1 (zh) 串口重定向处理方法、设备和系统
JP6125168B2 (ja) バリアトランザクションのデバッグ
US9965417B1 (en) Use of interrupt memory for communication via PCIe communication fabric
KR101265233B1 (ko) 초기 저장장치 생산 및 테스트용 호스트 버스 아답터
Liu et al. PCIE-Based Shared Memory Technology between BMC and CPU
Suresh et al. Efficient Clock-less PCIe endpoint
Drebes et al. Limitations of the Linux fault injection framework to test direct memory access address errors

Legal Events

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