KR20060084790A - 외부 에뮬레이션 하드웨어 - Google Patents

외부 에뮬레이션 하드웨어 Download PDF

Info

Publication number
KR20060084790A
KR20060084790A KR1020060001576A KR20060001576A KR20060084790A KR 20060084790 A KR20060084790 A KR 20060084790A KR 1020060001576 A KR1020060001576 A KR 1020060001576A KR 20060001576 A KR20060001576 A KR 20060001576A KR 20060084790 A KR20060084790 A KR 20060084790A
Authority
KR
South Korea
Prior art keywords
logic
transaction
address
integrated circuit
virtualization
Prior art date
Application number
KR1020060001576A
Other languages
English (en)
Inventor
러스 헤렐
제럴드 제이. 주니어. 코프맨
존 에이. 모리슨
Original Assignee
휴렛-팩커드 디벨롭먼트 컴퍼니, 엘 피
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘 피 filed Critical 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘 피
Publication of KR20060084790A publication Critical patent/KR20060084790A/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Logic Circuits (AREA)

Abstract

외부 가상화와 관련된 시스템, 방법론, 매체 및 다른 실시예를 설명한다. 하나의 예시적인 시스템 실시예는, 집적 회로 외부에 위치하고, 집적 회로에 동작가능하게(operably) 접속될 수 있는, 에뮬레이션 로직을 포함한다. 예시적인 에뮬레이션 로직은, 집적 회로에 의해 수행되는 기능의 일부를 가상화하도록 구성되는 가상화 로직을 포함할 수 있다. 상기 일부는 그 일부와 관련된 주소에 의해 식별가능할 수 있다. 예시적인 에뮬레이션 로직은 또한, 가상화 로직에 동작가능하게 접속되며 기능의 일부의 가상화와 관련된 상태 데이터를 기억하도록 구성되는, 데이터 기억장치를 포함할 수 있다.
가상화, 에뮬레이션, 로직, 집적 회로, 데이터

Description

외부 에뮬레이션 하드웨어{EXTERNAL EMULATION HARDWARE}
명세서에 편입되며 명세서의 일부를 구성하는 첨부 도면은 본 발명의 측면들의 여러 예시적인 실시예를 나타내는 여러 예시적인 시스템, 방법 등을 나타낸다. 도면에 도시된 구성요소의 경계(예컨대, 사각형, 사각형 군 또는 다른 형상)는 경계의 일 예를 나타내는 것임을 알 수 있을 것이다. 당해 기술분야의 당업자는 하나의 구성요소가 다수의 구성요소로서 설계되거나 다수의 구성요소가 하나의 구성요소로서 설계될 수 있다는 것을 알 수 있을 것이다. 다른 구성요소의 내부 컴포넌트로서 도시된 구성요소는 외부 컴포넌트로 구현될 수 있고, 그 역 또한 가능하다. 또한, 구성요소들은 축척에 따라 도시되지 않을 수 있다.
도 1은 칩 하드웨어 가상화를 제공하는 예시적인 외부 에뮬레이션 로직을 나타낸 도면.
도 2는 칩 하드웨어 가상화를 제공하는 예시적인 외부 에뮬레이션 로직에 의해 제공되는 예시적인 가상 데이터 흐름을 나타낸 도면.
도 3은 외부 에뮬레이션을 통한 칩 하드웨어 가상화와 관련된 트랜잭션(transaction)의 예시적인 주소 기반 분할(partitioning)을 나타낸 도면.
도 4는 외부 에뮬레이션을 통한 예시적인 호스트 브리지 에뮬레이션을 나타낸 도면.
도 5는 외부 에뮬레이션 하드웨어를 통한 예시적인 가상화를 나타낸 도면.
도 6은 외부 에뮬레이션을 통한 칩 하드웨어 가상화의 제공과 관련된 예시적인 방법을 나타낸 도면.
도 7은 외부 에뮬레이션을 통한 칩 하드웨어 가상화의 제공과 관련된 다른 예시적인 방법을 나타낸 도면.
도 8은 외부 에뮬레이션을 통한 칩 하드웨어 가상화의 제공과 관련된 다른 예시적인 방법을 나타낸 도면.
도 9는, 여기에서 도시된 예시적인 시스템 및 방법이 동작할 수 있는 예시적인 컴퓨팅 환경을 나타낸 도면.
도 10은, 여기에서 도시된 예시적인 시스템 및 방법이 동작할 수 있는 예시적인 화상 형성 장치를 나타낸 도면.
도 11은 예시적인 API(application programming interface)를 나타낸 도면.
도 12는 외부 에뮬레이션을 통한 칩 하드웨어 가상화의 제공과 관련된 예시적인 방법을 나타낸 도면.
도 13은 외부 에뮬레이션을 통한 칩 하드웨어 가상화의 제공과 관련된 예시적인 방법을 나타낸 도면.
※도면의 주요 부분에 대한 부호의 설명※
100 : 외부 에뮬레이션 로직
110 : 가상화 로직
120 : 버스 제어기
130 : 데이터 기억장치
140 : 집적 회로
150 : 포트
컴퓨터는 하드웨어를 에뮬레이션(emulation)하여 실제로는 존재하지 않는 하드웨어의 외관을 운영 체제, 애플리케이션(application), 로직 또는 프로세스에 제공할 수 있다. 컴퓨터는 또한 에뮬레이션을 이용하여 하나의 하드웨어 기능을 다수의 운영 체제, 애플리케이션 등 간에 분할(partition)할 수 있다. 상기 에뮬레이션은 가상화(virtualization)라고도 지칭될 수 있다.
가상화는, 예컨대 순수 소프트웨어 가상화, 하드웨어 지원 소프트웨어 가상화 등을 포함하는 메커니즘에 의해 실현될 수 있다. 소프트웨어 가상화는 가상화된 하드웨어가 사용되고 있지 않은 경우에도 일반적인 성능 페널티(performance penalty)를 발생시키는 경향이 있다. 그러나, 소프트웨어 가상화는, 다양한 프로세서 상에서의 하드웨어 에뮬레이션을 - 특히 가상화 코드가 이식 가능한(portable) 구조적 방법으로 작성되는 경우에 - 용이하게 한다. 하드웨어 가상화는, 하드웨어 기능을 기반이 되는 칩에 설계해 넣는 것을 필요로 하는 경향이 있다. 가상화 하드웨어 기능을 설계해 넣는 것은 칩셋(chip set)의 크기, 복잡도, 설계 시간, 비용, 시장 출시까지의 시간 등을 증가시킬 수 있다. 또한, 칩셋이 애 초에 가상화를 지원하지 않는 경우에는, 가상화를 "애드온(add-on)"하는 것이 불가능하지 않다고 하더라도, 곤란할 수 있다. 또한, 내장된 가상화 하드웨어 기능이 사용되지 않는 경우에, 칩의 물리적 자원(chip real estate), 전력 등을 여전히 소비한다.
여기에서 설명된 일부 예시적인 시스템 및 방법은, 가상화를 지원하도록 설계되지 않은 칩에, 외부 가상화를 위한 하드웨어 지원을 제공하는 것에 관한 것이다. 이리하여, 가상화를 지원하도록 설계되지 않은 컴퓨터 칩에 대해 가상화가 제공될 수 있다. 따라서, 가상화를 지원하는 시스템과 지원하지 않는 시스템 모두에 사용되도록 칩을 설계할 수 있는데, 이는 더 큰 생산량에 의해 고정 개발 비용을 상환함으로써 규모의 경제의 개선을 촉진할 수 있다. 외부 가상화 기능은 비교적 작을 수 있으므로, 예컨대 FPGA(field programmable gate array) 내에 구현될 수 있다.
일부 예시적인 시스템 및 방법은, 주소 지정(addressing)을 통하여 칩 기능을 분할할 수 있는 경우에 외부 에뮬레이션(external emulation)을 통한 칩 하드웨어 가상화를 제공하는 것에 관한 것이다. 예컨대, 입출력 어댑터 칩 내의 호스트 브리지는, 구성 트랜잭션 및 데이터(예컨대, 판독/기입) 트랜잭션을 처리하도록 구성될 수 있다. 일 예에서, 구성 트랜잭션이 제1 주소 또는 주소 집합과 관련되는 한편, 데이터 트랜잭션은 제2 주소 또는 주소 집합과 관련될 수 있다. 크로스바(crossbar)와 같은 주소 인식 로직은, 데이터 트랜잭션은 직접 호스트 브리지로 진 행하도록 허용하는 한편 구성 트랜잭션은 외부 에뮬레이션 로직으로 라우팅하는 것을, 용이하게 할 수 있다. 외부 에뮬레이션 로직은, 호스트 브리지를 가상화하고 가상 호스트 브리지를 트랜잭션 생성기에 제공할 수 있다. 외부 에뮬레이션 로직은, 관리 포트와 같은 포트를 통하여 입출력 어댑터 칩에 동작가능하게 접속될 수 있다.
이하는, 여기에서 선택되어 채용된 용어들 중 선택된 용어들의 정의를 포함한다. 상기 정의는, 용어들의 범위에 부합하며 구현에 사용될 수 있는, 컴포넌트의 다양한 예 및/또는 형태를 포함한다. 상기 예는 한정하려는 의도는 아니다. 용어들의 단수 및 복수 형태는 모두 정의된 바대로의 의미를 가질 수 있다.
본 출원에 있어서, "컴퓨터 컴포넌트(computer component)"라는 용어는 컴퓨터 관련 엔티티(entity) - 하드웨어, 펌웨어, 소프트웨어, 이들의 조합, 또는 실행 중인 소프트웨어 - 를 지칭한다. 예컨대, 컴퓨터 컴포넌트는 프로세서 상에서 실행되는 프로세스, 프로세서, 객체, 실행가능물(executable), 실행 스레드(thread of execution), 프로그램 및 컴퓨터일 수 있으나, 이에 한정되지는 않는다. 실례로서, 서버 상에서 실행되는 애플리케이션 및 서버가 모두 컴퓨터 컴포넌트가 될 수 있다. 하나 이상의 컴퓨터 컴포넌트가 하나의 프로세스 및/또는 실행 스레드 내에 존재할 수 있다. 컴퓨터 컴포넌트는 단일 컴퓨터에 집중되거나, 그리고/또는 2개 이상의 컴퓨터 간에 분산될 수 있다.
본 명세서에 있어서, "컴퓨터 판독가능 매체(computer-readable medium)"는 신호, 명령 및/또는 데이터를 직접 또는 간접적으로 제공하는데 관련된 매체를 지 칭한다. 컴퓨터 판독가능 매체는 비휘발성 매체, 휘발성 매체 및 전송 매체를 포함하는 형태를 취할 수 있으나, 이에 한정되지는 않는다. 비휘발성 매체는 예컨대 광 또는 자기 디스크 등을 포함할 수 있다. 휘발성 매체는 예컨대 광 또는 자기 디스크, 동적 메모리 등을 포함할 수 있다. 전송 매체는 동축 케이블, 구리선, 광섬유 케이블 등을 포함할 수 있다. 전송 매체는 또한 전파 및 적외선 데이터 통신 동안 생성되는 것과 같은 전자기 방사의 형태를 취하거나, 하나 이상의 신호 군의 형태를 취할 수 있다. 컴퓨터 판독가능 매체의 일반적인 형태는 플로피 디스크, 플렉시블 디스크, 하드 디스크, 자기 테이프, 여타 자기 테이프, CD-ROM, 여타 광 매체, 천공 카드, 종이 테이프, 홀(hole) 패턴을 가지는 여타 물리적 매체, RAM, ROM, EPROM, FLASH-EPROM, 또는 여타 메모리 칩 또는 카드, 메모리 스틱, 반송파/펄스, 그리고 컴퓨터, 프로세서 또는 다른 전자 장치가 판독할 수 있는 여타 매체를 포함하나, 이에 한정되지는 않는다. 인터넷과 같은 네트워크 상에서 명령 또는 다른 소프트웨어를 전파하는데 사용되는 신호는 "컴퓨터 판독가능 매체"로 간주될 수 있다.
본 명세서에 있어서, "데이터 기억장치(data store)"는 데이터를 기억할 수 있는 물리적 및/또는 논리적 엔티티(entity)를 지칭한다. 데이터 기억장치로는 예컨대 데이터베이스, 테이블, 파일, 리스트, 대기열(queue), 힙(heap), 메모리, 레지스터 등이 있다. 데이터 기억장치는 하나의 논리적 및/또는 물리적 엔티티 내에 존재하거나, 그리고/또는 2개 이상의 논리적 및/또는 물리적 엔티티 간에 분산될 수 있다.
본 명세서에 있어서, "로직(logic)"은 기능(들) 또는 작용(들)을 수행하거나, 그리고/또는 다른 로직, 방법 및/또는 시스템으로부터 기능 또는 작용을 발생시키는, 하드웨어, 펌웨어, 소프트웨어 및/또는 각각의 조합을 포함하나, 이에 한정되지는 않는다. 예컨대, 소망하는 응용이나 필요에 따라, 로직은 소프트웨어 제어 마이크로프로세서(software controlled microprocessor), ASIC(application specific integrated circuit)과 같은 이산 로직, 프로그램된 로직 장치, 명령을 포함하는 메모리 장치 등을 포함할 수 있다. 로직은 하나 이상의 게이트, 게이트 조합, 또는 여타 회로 컴포넌트를 포함할 수 있다. 로직은 또한 완전히 소프트웨어로서 구현될 수 있다. 다수의 논리적 로직이 설명되는 경우, 이들 다수의 논리적 로직을 하나의 논리적 로직 내에 통합하는 것이 가능할 수 있다. 이와 유사하게, 단일한 논리적 로직을 설명하는 경우, 이 단일한 논리적 로직을 다수의 물리적 로직 간에 분산시키는 것이 가능할 수 있다.
"동작가능한 접속(operable connection)", 또는 엔티티들이 "동작가능하게 접속(operably connected)"되도록 하는 접속은, 신호, 물리적 통신 및/또는 논리적 통신이 송신 및/또는 수신될 수 있는 접속이다. 일반적으로 동작가능한 접속은 물리적 인터페이스, 전기적 인터페이스 및/또는 데이터 인터페이스를 포함하나, 동작가능한 접속은 이들 타입의 접속들 또는 동작가능한 제어를 허용하기에 충분한 다른 타입의 접속들의 상이한 조합을 포함할 수 있다는 것에 유의해야 한다. 예컨대 2개의 엔티티는, 서로에게 직접, 또는 프로세서, 운영 체제, 로직, 소프트웨어 또는 다른 엔티티와 같은 하나 이상의 중간 엔티티를 통하여, 신호를 통신할 수 있는 것으로써, 동작가능하게 접속될 수 있다. 논리적 및/또는 물리적 통신 채널이 동작가능한 접속을 생성하는데 이용될 수 있다.
본 명세서에 있어서, "신호(signal)"는 하나 이상의 전기적 또는 광 신호, 아날로그 또는 디지털 신호, 데이터, 하나 이상의 컴퓨터 또는 프로세서 명령, 메시지, 비트 또는 비트 스트림, 또는 수신, 전송 및/또는 검출될 수 있고 정보 이동을 용이하게 할 수 있는 다른 수단을 포함하나, 이에 한정되지는 않는다.
본 명세서에 있어서, "소프트웨어(software)"는, 판독, 해석, 컴파일 및/또는 실행될 수 있고, 컴퓨터, 프로세서 또는 다른 전자 장치로 하여금 소망하는 방법으로 기능, 작용 및/또는 행동을 수행하게 하는, 하나 이상의 컴퓨터 또는 프로세서 명령을 포함하나, 이에 한정되지는 않는다. 상기 명령은 루틴, 알고리즘, 모듈, 방법, 스레드, 그리고/또는 동적 및/또는 정적으로 연결된 라이브러리에서의 별개의 애플리케이션 또는 코드를 포함하는 프로그램과 같은 다양한 형태로 구현될 수 있다. 소프트웨어는 또한, 스탠드얼론 프로그램, 함수 호출(로컬 및/또는 원격), 서블릿, 애플릿, 메모리에 기억된 명령, 운영 체제의 일부 또는 다른 타입의 실행가능한 명령을 포함하는, 다양한 실행가능 및/또는 로드가능(loadable) 형태로 구현될 수 있으나, 이에 한정되지는 않는다. 당해 기술분야의 당업자는, 소프트웨어의 형태가, 예컨대 소망하는 애플리케이션의 요구사항, 실행환경 및/또는 설계자/프로그래머의 소망 등에 의존적일 수 있다는 것을 알 수 있을 것이다. 또한, 컴퓨터 판독가능 및/또는 실행가능 명령은, 하나의 로직 내에 위치하거나, 그리고/또는 2개 이상의 통신하고 협업하며(co-operating) 및/또는 병렬인 처리 로직 간에 분산될 수 있으며, 이리하여, 직렬, 병렬, 고도 병렬(massively parallel) 및 다른 방법으로 로드 및/또는 실행될 수 있다는 것도 알 수 있을 것이다.
여기에서 설명된 예시적인 시스템 및 방법의 여러 컴포넌트를 구현하기에 적당한 소프트웨어는, 자바, 파스칼, C#, C++, C, CGI, Perl, SQL, APIs, SDKs, 어셈블리, 펌웨어, 마이크로코드 및/또는 다른 언어 및 도구와 같은 프로그래밍 언어 및 도구를 이용하여 생성될 수 있다. 소프트웨어 - 전체 시스템이든 시스템의 컴포넌트이든 - 는, 제조물로서 구현될 수 있으며, 이미 정의한 바와 같은 컴퓨터 판독가능 매체의 일부로서 유지 또는 제공될 수 있다. 소프트웨어의 다른 형태는 네트워크 또는 다른 통신 매체 상에서 수신자에게 소프트웨어의 프로그램 코드를 전송하는 신호를 포함할 수 있다. 이리하여, 일 예에서, 컴퓨터 판독가능 매체는 웹 서버로부터 사용자에게 다운로드될 때 소프트웨어/펌웨어를 표현하는 신호의 형태를 가진다. 다른 예에서, 컴퓨터 판독가능 매체는, 웹 서버 상에서 유지될 때 소프트웨어/펌웨어의 형태를 가진다. 다른 형태도 또한 이용될 수 있다.
이하의 상세한 설명의 일부는, 메모리 내의 데이터 비트 상의 동작에 관한 기호 표현 및 알고리즘의 측면에서 제공된다. 이들 알고리즘 기술(description) 및 표현은, 당해 기술분야의 당업자가 그들의 작업 내용을 다른 사람에게 전달하기 위해 사용하는 수단이다. 여기에서, 그리고 일반적으로, 알고리즘은, 결과를 생성하는 동작의 시퀀스(sequence)로서 표현된다. 상기 동작은 물리량의 물리적 조작을 포함할 수 있다. 통상적으로 물리량은, 로직 등에서 기억, 이동, 조합, 비교, 및 다르게 조작될 수 있는 전기 또는 자기 신호의 형태를 취하지만, 반드시 그런 것은 아니다.
이들 신호를 비트, 값, 원소, 기호, 문자, 용어, 숫자 등으로 부르는 것이, 일반적인 용법을 주 이유로 해서, 종종 편리하다는 것이 증명되어 왔다. 그러나, 이들 및 유사한 용어는, 적절한 물리량과 관련되어야 하는 것으로서, 이들 물리량에 부여된 편의상의 호칭에 지나지 않는다는 것을 유념해야 한다. 달리 명백히 지정되지 않는 한, 명세서 전체에 있어서, 처리, 컴퓨팅, 계산, 결정, 표시 등과 같은 용어는, 물리(전자)량으로 표현된 데이터를 조작하여 변형하는 컴퓨터 시스템, 로직, 프로세서 또는 유사한 전자 장치의 작용 및 프로세스를 지칭하는 것임을 알 수 있다.
도 1은 칩 하드웨어 가상화를 제공하는 외부 에뮬레이션 로직(100)을 나타낸다. 외부 에뮬레이션 로직(100)은 집적 회로(140) 외부에 위치하도록 구성된다. 집적 회로(140)는 예컨대 주소 지정에 의해 분할될 수 있는 기능을 구현할 수 있다. 본 출원의 맥락에서, 칩 기능에 의해 제공되는 전체 기능성(functionality) 집합의 각각의 부분집합을 식별할 수 있는 주소 지정 수단에 의한 기능 분할 - 이때, 상기 식별은 기능을 수행하는 것과 관련된 주소에 기초함 -. 실례로서, 메모리 사상(memory-mapped) 입출력 환경에서 채용된 집적 회로에 있어서, 집적 회로는 구성 및 데이터 이동 기능을 모두 수행하는 물리적 장치를 구현할 수 있다. 따라서, 구성 기능은 구성 레지스터에 주소 지정되는 한편으로, 데이터 이동 기능은 입출력 레지스터 등에 주소 지정될 수 있다. 또한, 실례로서, 셀룰러(cellular) 구 조, 포인트 투 포인트(point-to-point) 구조 등에서 트랜잭션을 수신하는 집적 회로의 경우, 트랜잭션은 목표(target)를 식별하는 주소를 가질 수 있다. 예컨대, 구성 트랜잭션은 제1 목표 주소 집합으로 사상되는 한편으로, 데이터 이동 트랜잭션은 제2 목표 주소 집합으로 사상될 수 있다. 이와 같이, 집적 회로에 의해 제공되는 전체 기능성 집합은 예컨대 구성 부분집합과 데이터 이동 부분집합으로 분할될 수 있고, 이들 2개의 부분집합은 포트와 관련된 주소 및/또는 기능과 관련된 트랜잭션에 의해 분할될 수 있다. 구성 및 데이터 이동 기능이 설명되지만, 다른 기능이 채용될 수 있다는 것을 알 수 있다.
에뮬레이션 로직(100)은, 집적 회로(140)로부터 트랜잭션을 수신하도록 구성되는 버스 제어기(120)를 포함할 수 있다. 트랜잭션은 집적 회로(140) 상에 위치한 포트(150)(예컨대, 관리 포트)에 의해 버스 제어기(120)에 제공될 수 있다. 상술한 바와 같이, 트랜잭션은 트랜잭션 자신이 에뮬레이션 로직(100)에 의해 가상화된 트랜잭션 부분집합의 원소인지 여부를 식별하는 것을 용이하게 하는 주소를 포함할 수 있다.
또한, 에뮬레이션 로직(100)은 버스 제어기(120)에 동작가능하게 접속되는 가상화 로직(110)을 포함할 수 있다. 가상화 로직(110)은 집적 회로(140)에 의해 제공되는 기능성의 일부를 가상화하도록 구성될 수 있다. 예컨대, 집적 회로(140)에 의해 제공되는 전체 기능성은 구성 및 데이터 이동 기능을 모두 포함할 수 있다. 이에 따라, 가상화 로직(110)은 전체 기능성 중 예컨대 구성 부분을 가상화할 수 있다. 일 예에서, 가상화되는 부분은 그 부분과 관련된 트랜잭션과 관련된 주 소에 의해 식별가능할 수 있다. 예컨대, 구성 트랜잭션은 제1 주소 집합(예컨대, 구성 포트)으로 사상되는 한편, 데이터 이동 트랜잭션은 제2 주소 집합(예컨대, 입출력 포트)으로 사상될 수 있다. 구성 및 데이터 이동 기능성이 설명되지만, 더욱 일반적으로는, 집적 회로(140)에 의해 제공되는 전체 기능성이 제어 기능 및 동작 기능으로서 설명될 수 있다. 이에 따라, 주소 집합은 예컨대 동작 주소 및 제어 주소를 포함할 수 있다. 동작 주소는 예컨대 입력 포트 주소 및 출력 포트 주소를 포함할 수 있다. 제어 주소는 예컨대 구성 포트 주소를 포함할 수 있다.
에뮬레이션 로직(100)은 또한 가상화 로직(110)에 동작가능하게 접속되는 데이터 기억장치(130)를 포함할 수 있다. 데이터 기억장치(130)는 집적 회로(140)에 의해 제공되는 전체 기능성 중 가상화된 부분과 관련된 상태 데이터를 기억하도록 구성될 수 있다. 에뮬레이션 로직(100)은 예컨대 FPGA(field programmable gate array)와 같은 단일 칩 내에 구현될 수 있다.
집적 회로(140)는 물리적 장치를 구현할 수 있다. 이에 따라, 가상화 로직(110)은, 집적 회로(140)에 의해 제공되는 물리적 장치와 관련된 가상 장치를 제공하도록 구성될 수 있다. 예컨대, 집적 회로(140)가 호스트 브리지를 구현하면, 가상화 로직(110)은 호스트 브리지의 일부를 가상화할 수 있다. 일 예에서, 가상화 로직(110)은, 집적 회로(140)에 의해 제공되는 물리적 장치를 가상화하는 가상 장치의 다수의 인스턴스(instance)를 제공할 수 있다. 이에 따라, 일 예에서, 가상화 로직(110)과 데이터 기억장치(130)는, 에뮬레이션 로직(100)에 의해 제공되는 가상 장치의 제2 인스턴스와 관련된 상태 데이터로부터, 가상 장치의 제1 인스턴스 와 관련된 상태 데이터를 분리시키도록 구성될 수 있다. 2개의 인스턴스가 설명되었지만, 더 많거나 및/또는 더 적은 수의 인스턴스가 채용될 수 있음을 알 수 있다.
도 2는, 칩 하드웨어 가상화를 제공하는 외부 에뮬레이션 로직에 의해 제공될 수 있는 2개의 가상 데이터 흐름을 나타낸다. 제1 흐름에서, 머신(machine) 상의 제1 분할에 위치할 수 있는 운영 체제1(200)은 데이터(예컨대, 트랜잭션)를 호스트 브리지1(210)에 제공할 수 있다. 이와 유사하게, 제2 흐름에서 운영 체제2(240)는 머신 상의 제2 분할에 위치할 수 있다. 운영 체제2(240)는 데이터(예컨대, 트랜잭션)를 제2 호스트 브리지2(250)에 제공할 수 있다. 운영 체제1(200)에게는 운영 체제1(200)와 호스트 브리지1(210) 간에 직접적인 물리적 접속이 존재하는 것처럼 보일 수 있다. 이와 유사하게, 운영 체제2(240)에게는 운영 체제2(240)와 호스트 브리지2(250) 간에 직접적인 물리적 접속이 존재하는 것처럼 보일 수 있다. 또한, 운영 체제1(200)와 운영 체제2(240)에게는 각각의 운영 체제가 자신이 이용할 수 있는 실제 호스트 브리지를 가지는 것처럼 보일 수 있다. 그러나, 여기에서 설명된 바와 같은 외부 하드웨어에 구현된 것과 같은 가상화 시스템은, 실제로는, 단일한 호스트 브리지를 가상화하여, 2개의 인스턴스, 즉, 호스트 브리지1(210)과 호스트 브리지2(250)를 운영 체제에 제공할 수 있다.
이와 같이, 운영 체제1(200)은 또한, 호스트 브리지1(210)가 포인트 투 포인트 브리지1(220)에, 그리고 이에 따라 입출력 카드1(230)에 직접 및 물리적으로 접속된다고 가정하며 동작할 수 있다. 이와 유사하게, 운영 체제2(240)는, 호스트 브리지2(250)가 포인트 투 포인트 브리지2(260)에, 그리고 이에 따라 입출력 카드2(270)에 직접 및 물리적으로 접속된다고 가정하며 동작할 수 있다. 도 2는 한 쌍의 운영 체제를 제공할 수 있는 한 쌍의 가상 흐름을 나타내지만, 도 3은 외부 에뮬레이션을 통한 칩 하드웨어 가상화와 관련된 트랜잭션의 주소 기반 분할의 결과로서 발생할 수 있는 실제 흐름을 나타낸다. 또한, 도 2는 브리지 및 입출력 카드를 나타내지만, 외부 에뮬레이션 하드웨어는 다른 하드웨어에 대한 가상 흐름의 생성을 용이하게 할 수도 있음을 알 수 있다.
도 3은 물리적 동작을 수행하도록 구성되는 물리적 장치를 구현하는 집적 회로(300)를 포함하는 시스템을 나타낸다. 물리적 동작은 2개 이상의 물리적 동작 부분집합들로 분할될 수 있다. 상기 부분집합들은 주소 지정에 의해 분할될 수 있다. 따라서, 포인트 투 포인트 브리지1(330)과 포인트 투 포인트 브리지2(350)에 동작가능하게 접속되는 호스트 브리지를 구현하도록 집적 회로(300)를 구성하는 경우, 상기 부분집합들은 구성 기능 및 데이터 이동(예컨대, 판독/기입) 기능을 포함할 수 있다.
시스템은 또한 집적 회로(300) 외부에 위치하는 에뮬레이션 로직(310)을 포 함할 수 있다. 에뮬레이션 로직(310)은 집적 회로(300)에 동작가능하게 접속가능한 것으로 도시된다. 일 예에서, 에뮬레이션 로직(310)은, 집적 회로(300) 상의 관리 포트를 통하여 집적 회로(300)에 동작가능하게 접속되는 FPGA(field programmable gate array) 또는 다른 유사한 칩일 수 있다. 에뮬레이션 로직(310)은, 집적 회로(300)에 의해 제공되는 물리적 동작 부분집합들 중 적어도 하나를 가상화하도록 구성될 수 있다. 예컨대, 에뮬레이션 로직(310)은 호스트 브리지(320)에 의해 수행되는 구성 동작을 가상화할 수 있다. 상기 동작들은, 예컨대 구성 포트, 입력 포트, 출력 포트 등과 관련된 주소에 기초하여 분할될 수 있다. 따라서, 운영 체제로부터 집적 회로(300)에 트랜잭션이 도달하는 경우, 트랜잭션과 관련된 주소를 검사하여, 호스트 브리지(320)에 또는 외부 에뮬레이션 로직(310)에 트랜잭션을 제공할지 여부를 결정할 수 있다.
트랜잭션이 호스트 브리지(320)에 또는 외부 에뮬레이션 로직(310)에 제공되어야 하는지 여부에 관한 결정을 용이하게 하기 위해, 집적 회로(300)는 예컨대 크로스바(미도시) - 크로스바는, 적어도 하나의 물리적 동작 부분집합과 관련된 제1 트랜잭션 집합을 에뮬레이션 로직(310)으로 라우팅하고, 상기 적어도 하나의 물리적 동작 부분집합과 관련되지 않은 제2 트랜잭션 집합을 에뮬레이션 로직(310)으로 라우팅하지 않도록 구성됨 - 를 포함할 수 있다. 따라서, 가상 판독/기입 흐름(R/W)은 운영 체제1(370) 및 운영 체제2(380)로부터 집적 회로(300)로 진행하는 한편으로, 가상 구성 흐름(CONFIG)은 운영 체제1(370) 및 운영 체제2(380)로부터 집적 회로(300)를 통하여 외부 에뮬레이션 로직(310)으로 진행할 수 있다. 집적 회로(300)는 가상화를 지원하도록 설계되지 않았을 수 있지만, 집적 회로(300)에 의해 수행되는 기능들을 분할하여 기능들의 일 부분집합을 외부 에뮬레이션 로직(310)으로 라우팅함으로써 가상화가 제공된다는 점에 주목한다. 외부 에뮬레이션 로직(310)은 예컨대, 트랜잭션을 수신하고, 트랜잭션에 응답하여 상태 변화를 일으키며, 관련된 트랜잭션(들)을 집적 회로(300)에 제공할 수 있다.
일 예에서, 에뮬레이션 로직(310)은 적어도 하나의 물리적 동작 부분집합을 가상화하는 것과 관련된 상태 데이터를 기억하도록 구성되는 데이터 기억장치(미도시)를 포함할 수 있다. 예컨대, 데이터 기억장치는 운영 체제1(370)에 제공되는 호스트 브리지(320)의 제1 인스턴스와 관련된 상태 데이터를 기억할 수 있으며, 운영 체제2(380)에 제공되는 호스트 브리지(320)의 제2 인스턴스와 관련된 상태 데이터도 기억할 수 있다. 데이터 기억장치는 서로 분리된 이들 2개의 상태 데이터 집합을 유지하도록 구성될 수 있는데, 이는 한 운영 체제의 동작이 다른 운영 체제의 동작과 간섭하는 것을 방지하는 것을 용이하게 한다.
도 4는 호스트 브리지(480)를 위해 외부 에뮬레이션을 제공하는 예시적인 호스트 브리지 에뮬레이터(400)를 나타낸다. 도 4에서, 입출력 어댑터 칩(410)은 복수의 루트 복합형(root complex)(470, 472)을 포함한다. 2개의 루트 복합형이 도시되었지만, 입출력 어댑터 칩은 더 많거나 및/또는 더 적은 수의 루트 복합형을 제공할 수 있다는 것을 알 수 있다. 루트 복합형(472)은, 포인트 투 포인트 (point-to-point: P-P) 브리지(482 내지 488)를 통하여 다수의 입출력 카드(494 내지 496)를 지원하는 호스트 브리지(480)를 포함한다. 예컨대, P-P 브리지0(482)와 P-P 브리지1(484)는, PCI(peripheral component interconnect) 장치(494)에 동작가능하게 접속될 수 있다. 이와 유사하게, P-P 브리지2(486)와 P-P 브리지3(488)는, PCI(peripheral component interconnect) 장치(496)에 동작가능하게 접속될 수 있다. 2개의 PCI 장치에 - 2개씩 - 동작가능하게 접속되는 4개의 P-P 브리지가 설명되었지만, 더 많거나 및/또는 더 적은 수의 P-P 브리지 및/또는 PCI 장치가 채용될 수 있음을 알 수 있을 것이다. 루트 복합형(470)은 루트 복합형(472)을 위해 도시된 것과 유사한 내부 컴포넌트를 포함할 수 있음을 알 수 있을 것이다.
루트 복합형(472)에 부속된 하나의 입출력 카드를 패브릭(fabric)(450)을 통하여 접근가능한 제1 분할에 할당하는 한편으로, 루트 복합형(472)에 부속된 다른 입출력 카드를 패브릭(450)을 통하여 접근가능한 제2 분할에 할당하기를 소망할 수 있다. 그러나, 단일한 호스트 브리지(480)를 가지는 것은, 서로 다른 분할을 서로에게서 분리시키는 것에 관한 문제를 발생시킬 수 있다. 예컨대, 호스트 브리지(480)는 자신이 지원하는 각각의 P-P 브리지에 대한 상태 정보를 포함할 수 있다. 상기 상태 정보는 하나의 분할 내에 있는 운영 체제에 의해 판독 및/또는 기입되어, 입출력 경로, 입출력 카드 등을 구성할 수 있다. 그러나, 제1 분할 내에 있는 운영 체제를 다른 분할 내에 있는 운영 체제로부터 분리시켜, 상대에게 할당된 입출력 경로 또는 카드를 볼 수도 조작할 수도 없도록 하는 것이 바람직할 수 있다.
이리하여, 호스트 브리지 에뮬레이터(400)와 같은 외부 로직은 입출력 어댑터 칩(410)에 동작가능하게 접속될 수 있다. 동작가능한 접속은 그 경로 내에, 예컨대 입출력 어댑터 칩(410) 외부의 버스 제어기(430) 및 입출력 어댑터 칩(410) 내부의 버스 제어기(432)를 포함할 수 있다. 컴퓨터 통신은, 예컨대 관리 포트(420)를 통하여, 2개의 버스 제어기 간에서 발생할 수 있다. 관리 포트(420)는, 입출력 어댑터 칩(410)에 의해 제공되어, 컴퓨터 관리 서브시스템에 의해 수행되는 제어, 구성, 디버깅(debugging), 에러 보고 등과 같은 작용을 용이하게 할 수도 있다. 그러나 본 예에서는, 호스트 브리지 에뮬레이터(400)를 입출력 어댑터 칩(410)에 동작가능하게 접속하도록, 관리 포트(420)를 채용하였다.
호스트 브리지 에뮬레이터(400)는 호스트 브리지(480)를 가상화하여 가상 호스트 브리지를 입출력 카드가 할당된 분할에 제공할 수 있다. 기존에 호스트 브리지(480)에 기억된 상태 정보는, 호스트 브리지 에뮬레이터(400)에 의해 제공되는 가상화의 일부로서, 호스트 브리지 에뮬레이터(400)에 의해 복제, 대체 및 다르게 조작되어, 데이터 기억장치(440)에 기억될 수 있다.
도 4에서, 시스템 펌웨어(미도시)는, 부트 시간(boot time)에, 관리 포트(420)로 사상된 구성 공간 주소를 가지는 호스트 브리지를 2개의 예시적인 분할 내에 있는 운영 체제에 제공할 수 있다. 크로스바(460)는 상기 사상에 관여할 수 있다. 따라서, 호스트 브리지 에뮬레이터(400)는 2개의 예시적인 분할 내의 운영 체제로부터 구성 트랜잭션을 수신할 수 있다. 구성 트랜잭션은, 예컨대 트랜잭션을 위한 포트 식별자 제공을 용이하게 하는 소스 디코더(미도시)에 의해, 자신의 주소 가 조작되도록 할 수 있다. 예컨대, 소스 디코더는, 주소 범위를 포트에 사상하여, 포트 식별자를 트랜잭션과 결합시킬 수 있다. 따라서, 크로스바(460)는, 적어도 부분적으로 포트 식별자에 기초하여, 트랜잭션을 라우팅할 수 있다.
호스트 브리지 에뮬레이터(400)는, 호스트 브리지를 에뮬레이션하여, 2개의 운영 체제로부터 수신된 구성 트랜잭션에 대응하는 구성 트랜잭션을 실제 호스트 브리지(480)에 송신하도록, 구성될 수 있다. 호스트 브리지(480)의 구성 공간은, 예컨대, 2개의 P-P 브리지 쌍의 구성 공간에 대응하는 2개의 분리된 집합으로 분할될 수 있다. 구성 공간과 관련되며 호스트 브리지(480) 상태와 관련된 데이터 및 가상화와 관련된 다른 작용은 데이터 기억장치(440)에 기억될 수 있다. 따라서, 호스트 브리지 에뮬레이터(400)와 같은 외부 하드웨어는, 예컨대, 구성 트랜잭션과 관련된 주소를 검사함으로써, 한 분할과 관련된 운영 체제가 다른 분할과 관련된 구성 공간 데이터에 접근하는 것을 방지하는 것을 용이하게 한다. 제1 분할 내의 제1 운영 체제와 관련된 주소를 가지는 구성 트랜잭션은 호스트 브리지 에뮬레이터(400)에 의해 가상화된 제1 호스트 브리지와 관련된 구성 공간 데이터에 접근하는 것이 허용되는 한 편으로, 제2 분할 내의 제2 운영 체제와 관련된 주소를 가지는 구성 트랜잭션은 제2 호스트 브리지와 관련된 공간 구성 데이터에 접근하는 것이 허용될 수 있다.
일부 예에서는, 호스트 브리지 에뮬레이터(400)에 구성 트랜잭션만이 제공될 수 있다는 것에 유의한다. 판독/기입 트랜잭션과 같은 데이터 트랜잭션은 크로스바(460)에 의해 호스트 브리지 에뮬레이터(400)로 라우팅 되지 않을 수 있다. 따 라서 이 예에서는, 호스트 브리지 에뮬레이터(400)가 입출력 카드와 입출력 카드에 접속하는 로직 간의 입출력 데이터 경로의 일부가 되지 않는다. 따라서, 일 예에서, 관리 포트(420)와 같은 저(low) 대역폭 포트를 통하여 입출력 어댑터 칩(410)에 동작가능하게 접속된 외부 호스트 브리지 에뮬레이터(400)는 전체 입출력 성능에 최소한의 영향을 줄 수 있다. 또한, 호스트 브리지 에뮬레이터(400)에 의해 수행되는 작용이, 비교적 작게, 예컨대 구성 트랜잭션을 처리하는 것에 제한되면, 호스트 브리지 에뮬레이터(400)는 FPGA(field programmable gate array)와 같은 단일 칩 내에 구현될 수 있다.
도 4는 내부 칩 기능을 가상화하는 것을 나타내지만, 도 4에 도시된 로직은 다른 기능성의 제공을 용이하게 할 수 있음을 알 수 있다. 예컨대, 도 4에 도시된 로직은 칩 로직 내의 설계 결함을 처리하는 것을 용이하게 할 수 있다. 예컨대, 칩과 관련된 구성 경로 내에 결함이 존재하고, 주소 지정에 기초하여 구성 작용(예컨대, 트랜잭션)을 차단할 수 있다면, 결함 있는 로직과 관련된 트랜잭션을 외부 로직으로 라우팅하여 결함 치료를 용이하게 할 수 있다. 예컨대, 외부 로직은 운영 체제와 같은 트랜잭션 생성기에 정확한 기능을 구현하고 제공하도록 구성될 수 있다. 또한, 외부 로직은 칩 내의 결함 있는 로직으로 트랜잭션을 전송하여 설계 결함을 처리하도록 구성될 수 있다. 따라서, 도 4는 호스트 브리지의 가상화에 특정된 것이나, 여기에서 설명된 예시적인 시스템 및 방법은 더욱 일반적으로는 주소 지정을 통하여 분할될 수 있는 단일 기능을 포함한 칩과 관련된 가상화에 관련됨을 알 수 있다.
도 5는, 도 4와 관련하여 설명된 것과 같은 외부 에뮬레이션 하드웨어를 통한 가상화의 더 일반적인 예를 나타낸다. 도 5에서, 외부 에뮬레이션 로직(500)은 장치 에뮬레이터(510) 및 가상 장치 상태를 기억하도록 구성되는 데이터 기억장치(520)를 포함할 수 있다. 패브릭(530)에서의 트랜잭션은 집적 회로(550) 상에 위치한 관리 포트(540)를 통하여 에뮬레이션 로직(500)에 전달될 수 있다. 어느 트랜잭션을 외부 에뮬레이션 로직(500)으로 라우팅할 것인지는 크로스바(560)에 의해 결정될 수 있다.
예컨대, 트랜잭션은 장치(570)에 의해 제공되는 기능성 분할을 용이하게 하는 주소를 포함할 수 있다. 기능성 중 일부가 로직(500)에 의해 가상화되므로, 크로스바(560)는 가상화된 기능성과 관련된 트랜잭션을 로직(500)에 전달할 수 있다. 그러나, 기능성 중 일부는 가상화되지 않으므로, 크로스바(560)는 가상화되지 않은 기능성과 관련된 트랜잭션을 장치(570)에 전달할 수 있다. 장치(570)는 다른 장치와 관련될 수 있다. 예컨대, 서브 장치0(580)와 서브 장치1(590)는 장치(570)에 동작가능하게 접속될 수 있다.
도 6 내지 도 8, 도 12 및 도 13의 흐름도를 참조하여, 예시적인 방법을 더 잘 이해할 수 있다. 설명의 편의를 위해, 예시된 방법론이 일련의 블록으로 도시되고 설명되었지만, 일부 블록은, 도시되고 설명된 것과 다른 순서, 및/또는 다른 블록과 동시에 발생할 수 있으므로, 상기 방법론은 상기 블록 순서로 한정되지 않음을 알 수 있다. 또한, 예시적인 방법론을 구현하기 위해, 모든 도시된 블록보다 더 적은 수의 블록을 필요로 할 수 있다. 또한, 추가적인 그리고/또는 대안적인 방법론은 도시되지 않은 추가 블록을 채용할 수 있다.
상기 흐름도에서 블록은 로직으로 구현될 수 있는 "처리 블록(processing-block)"을 나타낸다. 처리 블록은 상기 방법 단계를 수행하기 위한 방법 단계 및/또는 장치 구성요소를 나타낼 수 있다. 흐름도는, 어떤 특정 프로그래밍 언어, 방법론 또는 스타일(예컨대, 절차적(procedural), 객체 지향)을 위한 구문(syntax)을 표시하지는 않는다. 오히려 흐름도는, 당해 기술분야의 당업자가 로직을 개발하여 도시된 처리를 수행하는데 채용할 수 있는 기능 정보를 나타낸다. 일부 예에서는 임시 변수나 루틴 루프 등과 같은 프로그램 구성요소가 나타나지 않음을 알 수 있을 것이다. 전자 및 소프트웨어 응용이 동적 및 유연한 프로세스를 필요로 할 수 있으므로, 예를 든 블록이 도시된 것과 상이한 다른 시퀀스로 수행될 수 있고, 그리고/또는 블록들이 복수의 컴포넌트로 조합되거나 분리될 수 있음을 또한 알 수 있을 것이다. 기계어, 절차적, 객체 지향 및/또는 인공 지능 기술과 같은 여러 프로그래밍 접근법을 이용하여 프로세스를 구현할 수 있음을 알 수 있을 것이다.
도 6은 물리적 장치를 구현하는 집적 회로에 외부 가상화 지원을 제공하는 것과 관련된 방법(600)을 나타내는 것으로, 집적 회로는 내부 가상화 지원 없이 구성된다. 방법(600)은, 610에서, 물리적 장치에 의해 제공되는 기능들의 부분집합을 가상화하는 가상 장치를 제공하는 단계를 포함할 수 있다. 가상 장치는 FPGA(field programmable gate array)와 같은 외부 로직 내에 구현될 수 있다. 일 예에서, 가상 장치를 제공하는 단계는, 외부 로직 내에 구현된 주소 집합을 운영 체제 또는 애플리케이션 등과 같은 트랜잭션 생성기에 제공하는 단계를 포함할 수 있다. 상기 주소는 물리적 장치에 의해 제공되는 기능들의 부분집합 및 포트와 관련될 수 있다.
방법(600)은 또한, 620에서, 물리적 장치를 위한 제1 트랜잭션을, 집적 회로에서 수신하는 단계를 포함할 수 있다. 상기 트랜잭션은, 예컨대, 외부 로직 내의 가상 장치에 제공되어야 할 제1 트랜잭션 집합의 원소, 또는 가상 장치에 의해 가상화된 그 물리적 장치에 제공되어야 할 제2 트랜잭션 집합의 원소일 수 있다.
따라서, 방법(600)은, 630에서, 제1 트랜잭션이 가상 장치에 의해 가상화된 기능들의 부분집합과 주소 지정에 의해 관련되는지 여부에 적어도 부분적으로 기초하여, 제1 트랜잭션이 가상화된 장치와 관련되는지 여부를 결정하는 단계를 포함할 수 있다. 제1 트랜잭션이 가상 장치에 의해 가상화된 기능들의 부분집합과 주소 지정에 의해 관련되지 않는 경우에는, 670에서, 제1 트랜잭션이 물리적 장치로 전달될 수 있다. 하지만, 제1 트랜잭션이 가상 장치에 의해 가상화된 기능들의 부분집합과 주소 지정에 의해 관련되는 경우에는, 640에서, 제1 트랜잭션이 외부 로직에 제공될 수 있다.
외부 로직으로의 제1 트랜잭션 제공에 응답하여, 650에서, 제2 트랜잭션이 집적 회로에서 수신될 수 있다. 제2 트랜잭션은, 제1 트랜잭션 제공에 응답하여 외부 로직에 의해 제공된다. 제2 트랜잭션은 예컨대, 제1 트랜잭션으로부터 파생된 가상 트랜잭션일 수 있다. 이에 따라, 660에서, 제2 트랜잭션은 물리적 장치에 제공될 수 있다. 하나의 제2 트랜잭션이 설명되지만, 일부 예에서는 하나의 제1 트랜잭션이, 650에서 집적 회로에서 수신되어 660에서 물리적 장치에 제공되는 0개, 1개, 또는 그 이상의 개수의 제2 트랜잭션의 원인이 될 수 있다는 것을 알 수 있을 것이다. 따라서, 일부 예에서 방법(600)은, 제1 트랜잭션과 제2 트랜잭션 간의 일 대 일(one-to-one) 대응 관계에 한정되지 않는다. 680에서는, 다른 트랜잭션을 처리할 것인지 여부에 관한 결정을 할 수 있다. 상기 결정이 "예"인 경우에는 620으로 처리가 복귀하고, "아니요"인 경우에는 처리가 종료될 수 있다.
일 예에서, 외부 로직에 의해 가상화된 기능들의 부분집합은 구성 기능을 포함할 수 있다. 이에 따라, 물리적 장치 구성과 관련된 트랜잭션이 외부 가상화 로직으로 전달될 수 있다. 이와 유사하게, 외부 로직에 의해 가상화된 기능들의 부분집합은 물리적 장치와 관련된 입출력 데이터 경로에서의 기능을 포함하지 않을 수 있다. 이에 따라, 입출력 트랜잭션은 외부 가상화 로직으로 전달되지 않을 수 있다.
도 6을 참조하여 구성 및 입출력을 설명하였지만, 방법(600)은 다른 기능의 선택적인 가상화를 용이하게 할 수 있음을 알 수 있을 것이다. 일 예에서, 외부 로직에 의해 가상화된 기능들의 부분집합은 집적 회로 내에 있는 기능들의 부분집합의 이전 버전의 갱신 버전을 포함할 수 있다. 이에 따라, 방법(600)은 집적 회로 내의 설계 결함에 대한 치료 제공을 용이하게 할 수 있다.
일 예에서, 방법론은 컴퓨터 판독가능 매체 상에 제공된 프로세서 실행가능 명령 및/또는 동작으로서 구현될 수 있다. 이에 따라, 일 예에서, 컴퓨터 판독가능 매체는, 물리적 장치를 구현하는 집적 회로에 외부 가상화 지원을 제공하기 위 한 방법을 수행하도록 동작가능한 프로세서 실행가능 명령을 기억할 수 있으며, 집적 회로는 내부 가상화 지원 없이 구성된다. 상기 방법은 물리적 장치에 의해 제공되는 기능들의 부분집합을 가상화하는 가상 장치를 제공하는 단계를 포함할 수 있다. 가상 장치는 외부 로직 내에 구현될 수 있다. 또한, 상기 방법은, 물리적 장치를 위한 제1 트랜잭션을 상기 집적 회로에서 수신하는 단계, 그리고 제1 트랜잭션이 가상 장치에 의해 가상화된 기능들의 부분집합과 주소 지정에 의해 관련되는지 여부에 적어도 부분적으로 기초하여, 외부 로직에 제1 트랜잭션을 선택적으로 제공하는 단계를 포함할 수 있다. 또한, 상기 방법은, 외부 로직으로의 제1 트랜잭션 제공에 응답하여, 외부 로직으로부터 0개, 1개, 또는 그 이상의 개수의 제2 트랜잭션을 상기 집적 회로에서 수신하는 단계를 포함할 수 있다. 이에 따라, 상기 방법은 물리적 장치에 제2 트랜잭션을 제공하는 단계를 포함할 수 있다.
상기 방법이 컴퓨터 판독가능 매체 상에 제공되는 것으로 설명되었지만, 여기에서 설명된 다른 예시적인 방법도 컴퓨터 판독가능 매체 상에 제공될 수 있음을 알 수 있다.
방법(600)의 단순화된 또는 더 일반적인 경우는, 도 12에서 방법(1200)으로 설명된다. 방법(1200)은 물리적 장치를 구현하는 집적 회로에 외부 가상화 지원을 제공하는 것을 용이하게 하는 것으로, 집적 회로는 내부 가상화 지원 없이 구성된다. 방법(1200)은, 1210에서, 물리적 장치에 의해 제공되는 기능들의 부분집합을 가상화하는 가상 장치를 제공하는 단계를 포함한다. 가상 장치는 예컨대 외부 로직 내에 구현될 수 있다.
또한, 방법(1200)은, 1220에서, 물리적 장치를 위한 제1 트랜잭션을 집적 회로에서 수신하는 단계, 그리고, 1230에서, 외부 로직에 제1 트랜잭션을 선택적으로 제공하는 단계를 포함할 수 있다. 제1 트랜잭션이 외부 로직에 제공되는지 여부는, 예컨대, 제1 트랜잭션이 가상 장치에 의해 가상화된 기능들의 부분집합과 주소 지정에 의해 관련되는지 여부에 기초할 수 있다.
또한, 방법(1200)은, 1240에서, 외부 로직으로의 제1 트랜잭션 제공에 응답하여, 제2 트랜잭션(들)을 외부 로직으로부터 수신하는 단계, 및 1250에서, 물리적 장치에 제2 트랜잭션(들)을 선택적으로 제공하는 단계를 포함할 수 있다.
도 7은, 외부 에뮬레이션을 통한 칩 하드웨어 가상화 제공과 관련된 방법(700)을 나타낸다. 방법(700)은, 710에서, 제1 주소 집합과 관련된 제1 데이터 패킷 집합을 관리 포트로, 그리고 이에 따라 외부 로직으로, 라우팅하고, 제2 주소 집합과 관련된 제2 데이터 패킷 집합을 관리 포트로 라우팅하지 않도록, 집적 회로를 구성하는 단계를 포함할 수 있다. 제2 데이터 패킷 집합은 대신, 집적 회로에 의해 구현된 물리적 장치로 직접 라우팅 될 수 있다. 관리 포트는 물리적 장치를 구현하는 집적 회로 내에 위치할 수 있다.
또한, 방법(700)은, 720에서, 집적 회로에 의해 구현된 물리적 장치에 의해 수행되는 작용과 관련된 제1 데이터 패킷을 집적 회로에서 수신하는 단계를 포함할 수 있다. 제1 데이터 패킷은 예컨대 제어 또는 데이터 이동 등과 관련될 수 있다. 제어는 예컨대 구성 기능을 포함하는 한편으로, 데이터 이동은 예컨대 데이터 판독 및 기입을 포함할 수 있다.
또한, 방법(700)은, 720에서, 제1 데이터 패킷과 관련된 포트 주소를 검사하는 단계를 포함할 수 있다. 포트 주소는, 예컨대, 구성 포트 주소, 데이터 경로 포트 주소, 제어 포트 주소 등일 수 있다. 포트 주소를 검사한 후, 730에서, 물리적 장치를 가상화하는 외부 로직으로 데이터 패킷을 라우팅해야 하는지, 또는 물리적 장치에 데이터 패킷을 제공해야 하는지에 관한 결정을 할 수 있다. 그 패킷이 에뮬레이터를 위한 것이 아닌 것으로 결정한 경우에는, 770에서, 데이터 패킷은 물리적 장치에 제공될 수 있다. 730에서 데이터 패킷이 에뮬레이터를 위한 것으로 결정한 경우에는, 방법(700)은, 740에서, 관리 포트를 통하여 외부 가상화 로직으로 제1 데이터 패킷을 선택적으로 제공하는 단계를 포함할 수 있다.
또한, 방법(700)은, 750에서, 외부 가상화 로직으로의 제1 데이터 패킷 제공에 응답하여, 외부 가상화 로직으로부터 제2 데이터 패킷을 수신하는 단계를 포함할 수 있다. 예컨대, 제1 데이터 패킷은, 외부 로직이 수신하고 조작하여 제2 구성 트랜잭션을 생성하는, 원래의 구성 트랜잭션일 수 있다. 실례로서, 외부 가상화 로직이 물리적 장치의 가상 버전의 제1 인스턴스 제공과 관련하여 물리적 장치를 이미 초기화한 경우, 물리적 장치를 초기화하려고 하는 제2 엔티티로부터의 제2 트랜잭션은 물리적 장치가 초기화될 것을 필요로 하지 않고, 도리어 단지 외부 로직이 가상 장치의 제2 인스턴스를 제2 엔티티에 제공하는 것만을 필요로 할 수 있다. 이에 따라, 제2 데이터 패킷은, 제1 데이터 패킷과 관련되지만, 예컨대 외부 에뮬레이터에 기억된 상태에 기초하여, 상이한 작용을 일으킬 수 있다. 단일한 제2 데이터 패킷이 설명되었지만, 제1 데이터 패킷과 제2 데이터 패킷 간에 일 대 일 , 일 대 영, 및/또는 일 대 다수의 관계가 존재할 수 있음을 알 수 있을 것이다.
750에서 제2 데이터 패킷이 외부 로직으로부터 수신될 수 있고, 760에서 제2 데이터 패킷이 물리적 장치에 제공될 수 있다. 상술한 바와 같이, 외부 로직에 제공되는 제1 데이터 패킷에 대해, 0개 이상의 제2 데이터 패킷이 외부 로직으로부터 수신될 수 있다. 제2 데이터 패킷은, 예컨대, 제1 데이터 패킷으로부터 파생될 수 있다. 780에서, 다른 데이터 패킷을 처리할 것인지에 관한 결정을 할 수 있다. 상기 결정이 "예"인 경우에는 720으로 처리가 복귀할 수 있고, "아니요"인 경우에는 처리가 종료할 수 있다.
도 7은 순차적으로 발생하는 여러 작용을 나타내지만, 도 7에 도시된 여러 작용은 거의 병렬적으로 발생할 수도 있음을 알 수 있다. 실례로서, 제1 프로세스는 집적 회로를 구성할 수 있고, 제2 프로세스는 데이터 패킷을 수신할 수 있으며, 제3 프로세스는 데이터 패킷을 라우팅할 수 있다. 3개의 프로세스가 설명되지만, 더 많거나 및/또는 더 적은 수의 프로세스가 채용될 수 있고, 경량 프로세스, 정규 프로세스, 스레드, 및 다른 접근법이 채용될 수 있음을 알 수 있을 것이다. 일부 경우에는, 다른 예시적인 방법들도 또한 거의 병렬적으로 발생하는 작용을 포함할 수 있음을 알 수 있을 것이다.
도 8은, 외부 에뮬레이션을 통한 칩 하드웨어 가상화 제공과 관련된 방법(800)을 나타낸다. 방법(800)은, 810에서, 제1 주소 집합과 관련된 제1 트랜잭션 집합을 관리 포트로 라우팅하도록 집적 회로에 크로스바를 구성하는 단계를 포함할 수 있다. 또한, 810에서 수행되는 작용은, 제2 주소 집합과 관련된 제2 트랜잭션 집합을 집적 회로 내의 로직으로 라우팅하도록 크로스바를 구성하는 단계를 포함할 수 있다. 제1 트랜잭션 집합은 실제 장치에 의해 제공되는 전체 기능성 집합 중 일부를 형성할 수 있다. 제1 트랜잭션 집합은 또한 외부 로직에 의해 가상화된 기능에 대응할 수 있다. 제2 트랜잭션 집합은 또한 실제 장치에 의해 제공되는 전체 기능성 집합 중 일부를 형성할 수 있으나, 외부 로직에 의해 가상화되지 않는 기능에 해당할 수 있다.
또한, 방법(800)은, 820에서, 집적 회로를 위한 트랜잭션을 조작하여, 제1 주소 집합 또는 제2 주소 집합 중 하나의 원소인 포트 주소를 포함하도록 하는, 소스 디코더를 구성하는 단계를 포함할 수 있다. 예컨대, 구성 트랜잭션은 외부 가상화 로직으로 라우팅되는 트랜잭션으로 되는 포트 주소를 포함하도록 조작되는 한편으로, 판독/기입 트랜잭션은 물리적 장치로 라우팅되는 트랜잭션으로 되는 포트 주소를 포함하도록 조작될 수 있다.
또한, 방법(800)은, 830에서, 주소 없이 구성되는 트랜잭션을 수신하는 단계, 그리고, 840에서, 트랜잭션에 포트 주소를 부가하는 단계를 포함할 수 있다. 트랜잭션의 수신 및 조작 후, 방법(800)은, 850에서, 트랜잭션을 집적 회로에 제공하는 단계를 포함할 수 있다. 그 후, 트랜잭션은, 도 6 및 도 7을 참조하여 설명된 방법과 같이 처리될 수 있다.
방법(800)의 단순화된 또는 더 일반적인 경우는, 도 13에서 방법(1300)으로서 설명된다. 방법(1300)은 외부 에뮬레이션을 통한 칩 하드웨어 가상화 제공을 용이하게 한다. 따라서, 방법(1300)은, 1310에서, 제1 주소 집합과 관련된 제1 데 이터 패킷 집합을 관리 포트로 인도하고, 제2 주소 집합과 관련된 제2 데이터 패킷 집합을 관리 포트로 인도하지 않도록, 집적 회로를 구성하는 단계를 포함할 수 있다. 패킷 주소 기반 라우팅을 확립한 후, 방법(1300)은, 1320에서, 집적 회로에 의해 구현된 물리적 장치에 의해 수행되는 작용과 관련된 제1 데이터 패킷을 집적 회로에서 수신하는 단계, 그리고, 1330에서, 제1 데이터 패킷과 관련된 포트 주소에 적어도 부분적으로 기초하여, 제1 데이터 패킷을 관리 포트를 통하여 외부 가상화 로직에 선택적으로 제공하는 단계로 진행할 수 있다.
도 9는, 버스(908)에 동작가능하게 접속된, 프로세서(902), 메모리(904) 및 입출력 포트(910)를 포함하는 컴퓨터(900)를 나타낸다. 일 예로서, 컴퓨터(900)는, 컴퓨터(900) 내의 프로세서(902) 또는 다른 로직을 위한 외부 가상화 지원 제공을 용이하게 하도록 구성되는 외부 에뮬레이션 로직(930)을 포함할 수 있다. 따라서, 외부 에뮬레이션 로직(930)은, 컴퓨터(900)에 하드웨어로서, 소프트웨어로서, 및/또는 그 조합으로서 구현되는지 여부에 관계없이, 물리적 장치에 의해 수행되는 기능들의 집합의 부분집합을 구현하는 가상 장치를 제공하기 위한 수단을 제공할 수 있다. 가상 장치는, 물리적 장치를 구현하는 제1 로직(예컨대, 프로세서(902))과 다른 제2 로직(예컨대, 로직(930)) 내에 구현될 수 있다. 또한, 외부 에뮬레이션 로직(930)은, 물리적 장치에 의해 수행되는 기능 집합의 부분집합의 원소와 관련된 데이터 패킷을 식별하기 위한 수단, 그리고 제2 로직에 데이터 패킷을 선택적으로 제공하기 위한 수단을 제공할 수 있다.
프로세서(902)는 이중 마이크로프로세서 및 다른 멀티프로세서 구조를 포함 하는 여러 프로세서일 수 있다. 메모리(904)는 휘발성 메모리 및/또는 비휘발성 메모리를 포함할 수 있다. 비휘발성 메모리는 ROM, PROM, EPROM, EEPROM 등을 포함할 수 있으나, 이에 한정되지는 않는다. 휘발성 메모리는 예컨대 RAM, SRAM(synchronous RAM), DRAM(dynamic RAM), SDRAM(synchronous DRAM), DDR SDRAM(double data rate SDRAM), 및 DRRAM(direct Rambus RAM)을 포함할 수 있다.
디스크(906)는, 예컨대 입출력 인터페이스(918)(예컨대, 카드, 장치) 및 입출력 포트(910)를 통하여, 컴퓨터(900)에 동작가능하게 접속될 수 있다. 디스크(906)는 자기 디스크 드라이브, 솔리드 스테이트 디스크 드라이브, 플로피 디스크 드라이브, 테이프 드라이브, 집 드라이브, 플래시 메모리 카드 및/또는 메모리 스틱과 같은 장치를 포함할 수 있으나, 이에 한정되지는 않는다. 또한, 디스크(906)는 CD-ROM, CD-R drive(CD recordable drive), CD-RW drive(CD rewriteable drive) 및/또는 DVD ROM(digital video ROM drive)과 같은 광 드라이브를 포함할 수 있다. 메모리(904)는 예컨대 프로세스(914) 및/또는 데이터(916)를 기억할 수 있다. 디스크(906) 및/또는 메모리(904)는 컴퓨터(900)의 자원을 제어하고 할당하는 운영 체제를 기억할 수 있다.
버스(908)는, 단일 내부 버스 상호 접속 구조 및/또는 다른 버스나 망형 구조일 수 있다. 단일 버스가 도시되었지만, 컴퓨터(900)는 도시되지 않은 다른 버스(예컨대, PCIE, SATA, Infiniband, 1394, USB, Ethernet)를 이용하여 여러 장치, 로직 및 주변 장치와 통신할 수 있음을 알 수 있다. 버스(908)는 메모리 버스나 메모리 제어기, 주변 장치 버스나 외부 버스, 크로스바 스위치 및/또는 로컬 버스 를 포함하는 여러 타입일 수 있으나, 이에 한정되지는 않는다. 로컬 버스는 ISA(industrial standard architecture) 버스, MSA(microchannel architecture) 버스, EISA(extended ISA) 버스, PCI(peripheral component interconnect) 버스, USB(universal serial) 버스 및 SCSI(small computer systems interface) 버스를 포함하는 여러 타입일 수 있으나, 이에 한정되지는 않는다.
컴퓨터(900)는 입출력 인터페이스(918) 및 입출력 포트(910)를 통하여 입출력 장치와 상호 작용할 수 있다. 입출력 장치는 키보드, 마이크, 포인팅 및 선택 장치, 카메라, 비디오 카드, 디스플레이, 디스크(906), 네트워크 장치(920) 등을 포함할 수 있으나, 이에 한정되지는 않는다. 입출력 포트(910)는 직렬 포트, 병렬 포트 및 USB 포트를 포함할 수 있으나, 이에 한정되지는 않는다.
컴퓨터(900)는, 네트워크 환경에서 동작할 수 있으며, 이에 따라, 입출력 인터페이스(918) 및/또는 입출력 포트(910)를 통하여, 네트워크 장치(920)에 접속될 수 있다. 네트워크 장치(920)를 통하여 컴퓨터(900)는 네트워크와 상호 작용할 수 있다. 네트워크를 통하여 컴퓨터(900)는 원격 컴퓨터에 논리적으로 접속될 수 있다. 컴퓨터(900)가 상호 작용할 수 있는 네트워크는 LAN(local area network), WAN(wide area network) 및 다른 네트워크를 포함할 수 있으나, 이에 한정되지는 않는다. 네트워크 장치(920)는 FDDI(fiber distributed data interface), CDDI(copper distributed data interface), 이더넷(IEEE 802.3), 토큰링(IEEE 802.5), 무선 컴퓨터 통신(IEEE 802.11), 블루투스(IEEE 802.15.1), 지그비(IEEE 802.15.4) 등을 포함하는 LAN 기술과 접속할 수 있으나, 이에 한정되지는 않는다. 이와 유사하게, 네트워크 장치는 포인트 투 포인트 링크, ISDN(integrated services digital networks)과 같은 회로 스위칭 네트워크, 패킷 스위칭 네트워크, 그리고 DSL(digital subscriber lines)을 포함하는 WAN 기술과 접속할 수 있으나, 이에 한정되지는 않는다. 개별 네트워크 타입이 설명되었지만, 네트워크를 경유한, 네트워크 상의, 그리고/또는 네트워크를 통한 통신은, 통신의 조합 및 혼합을 포함할 수 있음을 알 수 있다.
따라서, 일 예에서, 컴퓨터(900)는, 트랩 모드 레지스터, 복수의 인터럽트 벡터 주소 레지스터 및 복수의 인터럽트 벡터 테이블로 구성된 컴퓨터일 수 있다. 컴퓨터(900)는, 트랩 모드 레지스터, 인터럽트 벡터 주소 레지스터 및 인터럽트 벡터 테이블을 초기화하도록 구성되는 초기화 로직(미도시)을 포함할 수 있다.
도 10은, 여기에서 설명된 예시적인 시스템을 구현하도록 구성된 외부 에뮬레이션 로직(1010)을 포함하는 예시적인 화상 형성 장치(1000)를 나타낸다. 또한, 외부 에뮬레이션 로직(1010)은 여기에서 설명된 것과 같은 실행가능한 방법을 수행하도록 구성될 수 있다. 일 예에서, 외부 에뮬레이션 로직(1010)은 화상 형성 장치(1000)에 영구적으로 및/또는 탈착 가능하게 부착될 수 있다.
화상 형성 장치(1000)는 렌더링되는 인쇄 데이터를 수신할 수 있다. 따라서, 화상 형성 장치(1000)는, 인쇄 데이터를 기억하는, 또는 더욱 일반적으로는, 화상 처리에 이용되도록 구성된 메모리(1020)를 포함할 수 있다. 또한, 화상 형성 장치(1000)는, 인쇄 데이터로부터 프린터 준비 화상(printer-ready image)을 생성하도록 구성된 렌더링 로직(1030)을 포함할 수 있다. 렌더링은, 데이터 관련 포맷 과 화상 장치의 타입에 따라 다르다. 일반적으로, 렌더링 로직(1030)은, 고레벨 데이터를 디스플레이 또는 인쇄를 위한 그래픽 화상(예컨대, 프린터 준비 화상)으로 변환한다. 예컨대, 한 형태로는, 3차원 대상 또는 장면의 수학적 모델을 취하여, 이를 비트맵 화상으로 변환하는 광선 추적법(ray-tracing)이 있다. 다른 예로는, HTML을 표시/인쇄를 위한 화상으로 변환하는 프로세스가 있다. 화상 형성 장치(1000)가 렌더링될 필요가 없는 프린터 준비 데이터를 수신할 수 있으며, 이에 따라 일부 화상 형성 장치에서는 렌더링 로직(1030)이 나타나지 않을 수 있음을 알 수 있을 것이다.
화상 형성 장치(1000)는 또한, 프린터 준비 화상으로부터 인쇄 매체 상에 화상을 생성하도록 구성된 화상 형성 메커니즘(1040)을 포함할 수 있다. 화상 형성 메커니즘(1040)은 화상 형성 장치(1000)의 타입에 따라 다를 수 있으며, 레이저 이미징 메커니즘, 여타 토너 기반 이미징 메커니즘, 잉크제트 메커니즘, 디지털 이미징 메커니즘, 또는 여타 이미징 재생 엔진을 포함할 수 있다. 프로세서(1050)는 화상 형성 장치(1000)의 동작을 제어하기 위한 로직과 함께 구현될 수 있다. 일 예에서, 프로세서(1050)는 자바 명령어를 실행할 수 있는 로직을 포함한다. 화상 형성 장치(1000)의 다른 컴포넌트는 여기에서 설명되지 않지만, 매체 핸들링 및 기억 메커니즘, 센서, 제어기, 그리고 화상 처리와 관련된 다른 컴포넌트를 포함할 수 있다.
이하, 도 11을 참조하면, 외부 에뮬레이션 로직(1110)으로의 접근을 제공하는 API(application programming interface)(1100)가 도시되어 있다. API(1100) 는, 예컨대, 로직(1110)에 의해 수행되는 처리로의 접근을 얻기 위해 프로그래머(1120) 및/또는 프로세스(1130)에 의해 채용될 수 있다. 예컨대, 프로그래머(1120)는 프로그램을 작성하여 로직(1110)에 접근할 수 있고(예컨대, 그 동작을 호출하고, 그 동작을 감시하며, 그 동작을 제어할 수 있고), 프로그램 작성은 API(1110)의 존재로 인해 용이하게 된다. 프로그래머(1120)가 로직(1110)의 내부를 이해해야만 하기보다는, 프로그래머(1120)는 로직(1110)의 인터페이스를 알기만 하면 된다. 이로 인해, 로직(1110)의 기능성을 캡슐화(encapsulation)하는 한편으로 상기 기능성을 노출시키는 것을 용이하게 한다.
이와 유사하게, API(1100)를 채용하여, 로직(1110)에 데이터 값을 제공하거나, 그리고/또는 로직(1110)으로부터 데이터 값을 검색할 수 있다. 예컨대, 가상화된 기능에 기초하여 포트 주소를 사상(mapping)하는 프로세스(1130)는, 예컨대, API(1100)에서 제공되는 호출을 이용함으로써, API(1100)를 통하여 로직(1110)에 사상 데이터를 제공할 수 있다. 이에 따라, API(1100)의 일 예에서, API 집합은 컴퓨터 판독가능 매체 상에 기억될 수 있다. 상기 인터페이스는, 프로그래머, 컴퓨터 컴포넌트, 로직 등에 의해 채용되어, 외부 에뮬레이션 로직(1110)으로의 접근을 얻을 수 있다. 상기 인터페이스는, 크로스바 데이터를 통신하는 제1 인터페이스(1140) 및 소스 디코더 데이터를 통신하는 제2 인터페이스(1150)를 포함할 수 있으나, 이에 한정되지는 않는다. 일 예에서, 크로스바 데이터는, 소스 디코더 데이터에 기초하여 트랜잭션을 라우팅하도록 크로스바를 구성하는 것을 용이하게 할 수 있다. 상기 인터페이스는 또한, 크로스바가 트랜잭션을 제공할 수 있는 물리적 장 치와 관련된 물리적 장치 데이터를 통신하는 제3 인터페이스(1160) 및 크로스바가 트랜잭션을 제공할 수 있는 가상 장치와 관련된 가상 장치 데이터를 통신하는 제4 인터페이스(1170)를 포함할 수 있다. 가상 장치는 물리적 장치에 의해 수행되는 기능 집합의 부분집합을 구현할 수 있다.
예시적인 시스템과 방법 등을 예를 들어 설명함으로써 나타내고, 상기 예들을 상세히 설명하였지만, 첨부된 청구항의 범위를 상기 상세로 제한하거나, 또는 어떤 경우에든 한정하는 것이, 출원인의 의도는 아니다. 여기에서 설명된 시스템과 방법 등을 설명하기 위해 컴포넌트 또는 방법론의 모든 가능한 조합을 설명하는 것은 물론 가능하지 않다. 추가적인 이점과 수정은 당해 기술분야의 당업자에게 쉽게 나타날 것이다. 따라서, 본 발명은, 도시되고 설명된, 특정한 상세, 전형적인 장치 및 예시적인 예에 한정되지 않는다. 따라서, 본 출원은, 첨부된 청구항의 범위와 부합하는 변경, 수정 및 변형을 포함하도록 의도된 것이다. 또한, 상기한 설명은 본 발명의 범위를 한정하려는 것은 아니다. 오히려, 본 발명의 범위는 첨부된 청구항과 그 균등물에 의해 결정된다.
"포함하다(includes)" 및 "포함하는(including)"이라는 용어가 상세한 설명 또는 청구항에서 채용되는 범위에서, 이것은, "구비하는(comprising)"이라는 용어와 - 그것이 청구항에서 연결어(transitional word)로 채용되는 경우에 그 용어를 해석하는 것과 같은 - 유사한 방식으로 포함적인 것으로 의도된 것이다. 또한, "또는(or)"이라는 용어가 상세한 설명 또는 청구항에서 채용되는 범위에서(예컨대, A 또는 B), 이것은 "A 또는 B, 또는 A, B 모두"를 의미하도록 의도된 것이다. 출원인이 "단지 A 또는 B일 뿐, A, B 모두는 아님"을 지시하려는 경우에는, "단지 A 또는 B일 뿐, A, B 모두는 아님(only A or B but not both)"이라는 용어가 채용된다. 따라서, 여기에서 "또는(or)"이라는 용어의 사용은, 포함적으로 사용하는 것이고, 배제적으로 사용하는 것은 아니다. Bryan A. Garner, A Dictionary of Modern Legal Usage 624(2d. Ed. 1995) 참조.

Claims (10)

  1. 집적 회로 외부에 위치하도록 구성되는 에뮬레이션 로직으로서,
    상기 집적 회로에 의해 수행되는 기능의 일부를 가상화하도록 구성되는 가상화 로직 - 상기 일부는, 상기 일부를 수행하는 것과 관련된 트랜잭션과 관련되는 주소에 의해 식별가능함 -; 및
    상기 가상화 로직에 동작가능하게 접속된 데이터 기억장치 - 상기 데이터 기억장치는, 상기 가상화된 기능의 일부와 관련된 상태 데이터를 기억하도록 구성됨 -
    를 구비하는, 에뮬레이션 로직.
  2. 제1항에 있어서,
    상기 주소는 동작 주소와 제어 주소 중 하나 또는 둘 다인, 에뮬레이션 로직.
  3. 제2항에 있어서,
    상기 제어 주소는 구성 포트 주소인, 에뮬레이션 로직.
  4. 제1항에 있어서,
    상기 집적 회로로부터 트랜잭션을 수신하도록 구성되는 버스 제어기를 포함 하되, 상기 트랜잭션은 주소를 포함하는, 에뮬레이션 로직.
  5. 제1항에 있어서,
    상기 가상화 로직은, 상기 집적 회로에 의해 제공되는 물리적 장치와 관련된 가상 장치를 제공하도록 구성되는, 에뮬레이션 로직.
  6. 물리적 장치를 구현하고 내부 가상화 지원 없이 구성되는 집적 회로에, 외부 가상화 지원을 제공하기 위한 방법으로서,
    상기 물리적 장치에 의해 제공되는 기능들의 부분집합을 가상화하는 가상 장치를 제공하는 단계 - 상기 가상 장치는 외부 로직 내에 구현됨 -;
    상기 물리적 장치를 위한 제1 트랜잭션을 상기 집적 회로에서 수신하는 단계;
    상기 제1 트랜잭션이 상기 가상 장치에 의해 가상화된 기능들의 부분집합과 주소 지정에 의해 관련되는지 여부에 적어도 부분적으로 기초하여, 상기 제 1 트랜잭션을 상기 외부 로직에 선택적으로 제공하는 단계;
    상기 외부 로직으로의 제1 트랜잭션 제공에 응답하여, 외부 로직으로부터 하나 이상의 제2 트랜잭션을 상기 집적 회로에서 수신하는 단계; 및
    상기 하나 이상의 제2 트랜잭션을 상기 물리적 장치에 제공하는 단계
    를 포함하는, 방법.
  7. 제6항에 있어서,
    상기 기능들의 부분집합은 구성 기능을 포함하고 상기 물리적 장치와 관련된 입출력 데이터 경로에서의 기능을 포함하지 않는, 방법.
  8. 제6항에 있어서,
    상기 제1 트랜잭션이 상기 기능들의 부분집합과 관련되는지의 여부에 관한 결정은, 상기 제1 트랜잭션과 관련된 주소에 적어도 부분적으로 의존하는, 방법.
  9. 제6항에 있어서,
    상기 주소는 포트 주소인, 방법.
  10. 제6항에 있어서,
    상기 가상 장치를 제공하는 단계는, 상기 외부 로직 내에 구현된 주소의 집합을 제공하는 단계를 포함하되, 상기 주소 지정은 상기 물리적 장치에 의해 제공되는 기능들의 부분집합과 관련되고, 상기 주소는 포트와 또한 관련되는, 방법.
KR1020060001576A 2005-01-20 2006-01-06 외부 에뮬레이션 하드웨어 KR20060084790A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/039,621 US7650275B2 (en) 2005-01-20 2005-01-20 Virtualization of a parition based on addresses of an I/O adapter within an external emulation unit
US11/039,621 2005-01-20

Publications (1)

Publication Number Publication Date
KR20060084790A true KR20060084790A (ko) 2006-07-25

Family

ID=35840825

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060001576A KR20060084790A (ko) 2005-01-20 2006-01-06 외부 에뮬레이션 하드웨어

Country Status (3)

Country Link
US (1) US7650275B2 (ko)
KR (1) KR20060084790A (ko)
GB (1) GB2422458A (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7614020B2 (en) * 2005-06-27 2009-11-03 Ikoa Corporation Structurally field-configurable semiconductor array for in-memory processing of stateful, transaction-oriented systems
FR2894694A1 (fr) * 2005-12-09 2007-06-15 St Microelectronics Sa Procede et dispositif de mise au point d'un programme execute par un processeur multitache
US7725304B1 (en) * 2006-05-22 2010-05-25 Cadence Design Systems, Inc. Method and apparatus for coupling data between discrete processor based emulation integrated chips
US8271604B2 (en) * 2006-12-19 2012-09-18 International Business Machines Corporation Initializing shared memories for sharing endpoints across a plurality of root complexes
US7657663B2 (en) * 2006-12-19 2010-02-02 International Business Machines Corporation Migrating stateless virtual functions from one virtual plane to another
US7529860B2 (en) * 2006-12-19 2009-05-05 International Business Machines Corporation System and method for configuring an endpoint based on specified valid combinations of functions
US7991839B2 (en) * 2006-12-19 2011-08-02 International Business Machines Corporation Communication between host systems using a socket connection and shared memories
US7984454B2 (en) * 2006-12-19 2011-07-19 International Business Machines Corporation Migration of single root stateless virtual functions
US7836238B2 (en) * 2006-12-19 2010-11-16 International Business Machines Corporation Hot-plug/remove of a new component in a running PCIe fabric
US7813366B2 (en) * 2006-12-19 2010-10-12 International Business Machines Corporation Migration of a virtual endpoint from one virtual plane to another
US7860930B2 (en) * 2006-12-19 2010-12-28 International Business Machines Corporation Communication between host systems using a transaction protocol and shared memories
US7836129B2 (en) * 2006-12-19 2010-11-16 International Business Machines Corporation Communication between host systems using a queuing system and shared memories
US8838867B2 (en) * 2008-12-24 2014-09-16 Nuon, Inc. Software-based virtual PCI system
US8359415B2 (en) * 2008-05-05 2013-01-22 International Business Machines Corporation Multi-root I/O virtualization using separate management facilities of multiple logical partitions
US8103810B2 (en) * 2008-05-05 2012-01-24 International Business Machines Corporation Native and non-native I/O virtualization in a single adapter
US8745601B1 (en) * 2008-07-17 2014-06-03 Apple Inc. Methods and systems for using data structures for operating systems
US7873068B2 (en) * 2009-03-31 2011-01-18 Intel Corporation Flexibly integrating endpoint logic into varied platforms
JP5541021B2 (ja) * 2010-09-09 2014-07-09 富士通株式会社 スイッチ装置
CN104777754B (zh) * 2015-03-31 2020-10-09 海尔优家智能科技(北京)有限公司 一种虚拟设备创建方法及装置
US10570594B2 (en) * 2017-03-21 2020-02-25 Juka Innovations Corporation Hair straining device
US10872049B2 (en) * 2016-01-29 2020-12-22 Analog Devices, Inc. GPIO-to-GPIO communication on a multi-node daisy-chained network
CN114036082A (zh) * 2021-11-04 2022-02-11 北京微纳星空科技有限公司 一种数据传输的方法、装置、电子设备和存储介质

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4707803A (en) * 1985-06-17 1987-11-17 International Business Machines Corporation Emulator for computer system input-output adapters
GB8704316D0 (en) * 1987-02-24 1987-04-01 Int Computers Ltd Data processing system
US5109353A (en) 1988-12-02 1992-04-28 Quickturn Systems, Incorporated Apparatus for emulation of electronic hardware system
DE69121382T2 (de) 1991-01-17 1997-02-27 Philips Electronics Nv Emulator zur Emulation eines verbindungsloses Mikrokontroller und Mikrokontroller zur Verwendung in einem solchen Emulator
US5375225A (en) * 1991-12-31 1994-12-20 Sun Microsystems, Inc. System for emulating I/O device requests through status word locations corresponding to respective device addresses having read/write locations and status information
US5748468A (en) * 1995-05-04 1998-05-05 Microsoft Corporation Prioritized co-processor resource manager and method
US7356786B2 (en) * 1999-11-30 2008-04-08 Synplicity, Inc. Method and user interface for debugging an electronic system
US20030188278A1 (en) * 2002-03-26 2003-10-02 Carrie Susan Elizabeth Method and apparatus for accelerating digital logic simulations
US6725284B2 (en) * 2002-04-25 2004-04-20 International Business Machines Corporation Logical partition hosted virtual input/output using shared translation control entries
US7141315B2 (en) * 2002-07-31 2006-11-28 Showa Denko K.K. Magnetic recording medium, method of manufacturing the same, and magnetic recording and reproduction apparatus
US7096305B2 (en) * 2003-05-15 2006-08-22 Broadcom Corporation Peripheral bus switch having virtual peripheral bus and configurable host bridge

Also Published As

Publication number Publication date
GB2422458A (en) 2006-07-26
US7650275B2 (en) 2010-01-19
US20060161419A1 (en) 2006-07-20
GB0525954D0 (en) 2006-02-01

Similar Documents

Publication Publication Date Title
KR20060084790A (ko) 외부 에뮬레이션 하드웨어
US7480755B2 (en) Trap mode register
KR102610567B1 (ko) 이종 시스템 온 칩에 대한 소프트웨어 정의 다중 도메인 생성 및 분리
US20190042329A1 (en) System with programmable multi-context accelerator circuitry
US9720704B2 (en) Data driven hardware chips initialization via hardware procedure framework
US10678479B1 (en) Registers for restricted memory
JP2006155624A (ja) 仮想化ロジック
US20030056071A1 (en) Adaptable boot loader
JP2013236380A (ja) プログラマブル回路、関連計算マシン、並びに、方法
KR20110044465A (ko) 재구성 프로세서, 재구성 제어 장치 및 방법, 그리고, 스레드 모델링 방법
US11461139B2 (en) Memory pool allocation for a multi-core system
US10853259B2 (en) Exitless extended page table switching for nested hypervisors
US20180059974A1 (en) Safe physical function passthrough using virtual machine functions
CN114830135A (zh) 算子的层次分区
CN107533602B (zh) 计算设备及其方法,以及计算系统
US10534732B2 (en) Exposing memory-mapped IO devices to drivers by emulating PCI bus and PCI device configuration space
CN116348885A (zh) 用于可部署推理系统的存储器映射的神经网络加速器
WO2021162950A1 (en) System and method for memory management
Bandara et al. Enabling virtio driver support on fpgas
US10860763B1 (en) Data routing and multiplexing architecture to support serial links and advanced relocation of emulation models
US11422812B2 (en) Method and apparatus for efficient programmable instructions in computer systems
US11550574B2 (en) Generating a vector predicate summary
US20090172352A1 (en) Dynamic reconfigurable circuit
US11500802B1 (en) Data replication for accelerator
US10409624B1 (en) Data array compaction in an emulation system

Legal Events

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