KR20060079108A - 버스 프로토콜들 또는 네트워크들의 통합을 용이하게 하는버스 추상화 방법 및 시스템 - Google Patents

버스 프로토콜들 또는 네트워크들의 통합을 용이하게 하는버스 추상화 방법 및 시스템 Download PDF

Info

Publication number
KR20060079108A
KR20060079108A KR1020050132957A KR20050132957A KR20060079108A KR 20060079108 A KR20060079108 A KR 20060079108A KR 1020050132957 A KR1020050132957 A KR 1020050132957A KR 20050132957 A KR20050132957 A KR 20050132957A KR 20060079108 A KR20060079108 A KR 20060079108A
Authority
KR
South Korea
Prior art keywords
bus
component
abstraction
devices
buses
Prior art date
Application number
KR1020050132957A
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 KR20060079108A publication Critical patent/KR20060079108A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • H04L61/4541Directories for service discovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/2803Home automation networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/2803Home automation networks
    • H04L12/2807Exchanging configuration information on appliance services in a home automation network
    • H04L12/2809Exchanging configuration information on appliance services in a home automation network indicating that an appliance service is present in a home automation network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/12Discovery or management of network topologies

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)
  • Small-Scale Networks (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

본 시스템 및 발명은 다수의 버스 구현들에 장치 모델 및 보다 높은 레벨 프로토콜을 바인딩할 수 있는 추상화 시스템을 통해 버스 프로토콜 및 네트워크의 통합을 용이하게 한다. 그러한 추상화 시스템은 우선순위에 따른 메시지 전달을 위해 버스들 사이에 공통 언어를 제공할 수 있으며, 예를 들어, 제어 메시지를 위한 메시징 전달 컴포넌트, 높은 우선순위를 위한 스트리밍 컴포넌트, 및 낮은 우선순위를 위한 벌크 전달 컴포넌트(bulk transfer component)에 대해 제공된 시맨틱을 제공할 수 있다. 이외에, 찾기 컴포넌트(discovery component)는 버스 또는 네트워크 상의 장치들을 식별할 수 있으며, 그들 간에 구축된 신뢰를 판정하고 장치 또는 서비스를 인증하기 위한 연계 컴포넌트(association component)를 갖는다.
추상화, 바인딩, 통합

Description

버스 프로토콜들 또는 네트워크들의 통합을 용이하게 하는 버스 추상화 방법 및 시스템{BUS ABSTRACTION}
도 1은 본 발명의 양상에 따라 다수의 버스 구현 및 네트워크 기술에 어플리케이션을 바인딩할 수 있는 추상화 시스템의 개략적 블럭도.
도 2는 본 발명의 양상에 따라 적응 컴포넌트를 통해 추상화 시스템과 상호작용하는 다수의 버스를 도시하는 도면.
도 3은 찾기 컴포넌트, 메시징 전달 컴포넌트, 및 연계 컴포넌트에 대한 시맨틱을 포함할 수 있는 추상화 시스템에 관련된 다양한 서브컴포넌트를 도시하는 도면.
도 4는 본 발명의 관련 양상에 따라 추상화 시스템에 관련된 부가적인 서브컴포넌트를 도시하는 도면.
도 5는 본 발명의 양상에 따라 특정 계층화 배치를 도시하는 도면.
도 6은 본 발명의 양상에 따라 버스 추상화의 방법을 도시하는 도면.
도 7은 본 발명의 다양한 양상이 구현될 수 있는 적합한 컴퓨팅 환경의 간략하고 일반적인 설명을 나타내는 도면.
<도면의 주요부분에 대한 부호의 설명>
110: 추상화 시스템
115, 117, 119: 버스
120, 122, 124: 네트워크
126, 128, 130: 어플리케이션
본 발명은 일반적으로 네트워크 및 버스 시스템에 관한 것이며, 특히 프로토콜 버스 및/또는 네트워크 사이에서의 그들의 통합을 위한 버스 추상화의 프로그래밍 모델에 관한 것이다.
컴퓨팅 기술에서의 증가하는 진보(예를 들어, 마이크로프로세서 속도, 메모리 용량, 데이터 전송 대역폭, 소프트웨어 기능 등)는 일반적으로 여러 산업에서 컴퓨터 어플리케이션의 증가에 기여해 온다. 종종 서버들의 어레이로서 구성되는 훨씬 더 강력한 서버 시스템은 일반적으로 예를 들어 월드 와이드 웹과 같은 외부 소스로부터 발생하는 서비스 요청에 제공된다. 그러한 네트워크 환경에서, 주변 장치들 및 기타 장치들을 컴퓨터에 인터페이스하기 위한 다수의 버스 표준이 이용될 수 있다. 예를 들어, 자신의 프로토콜을 가지고 1.5, 12 및 480mpbs 세 가지 전송 속도를 지원하는 USB(Universal Serial Bus)는 상이한 데이터 속도 요구사항을 갖는 USB 장치에 대해 이용될 수 있다. 또한, 호스트 컴퓨터 내의 통신 소프트웨어 및 하드웨어는 통신 네트워크와 USB 사이의 연결을 중재할 수 있다. 기존의 여러 프로토콜과 같이, USB 프로토콜은 여러 계층을 포함하는 계층화된 프로토콜이 다. 하나의 그러한 계층은 USB의 전기적 규격을 정의하는 물리 계층이다. 또다른 계층은 USB에 허용될 수 있는 트랜잭션의 타입(즉, USB 트랜잭션의 포맷)을 정의하는 데이터 링크 계층이다.
또다른 버스 프로토콜 IEEE1394는, 오늘날 USB를 통해 연결하는 여러 장치가 (IEEE1394를 지원한다면) IEEE1394를 통해서도 연결될 수 있다는 점에서 오늘날의 개인용 컴퓨터에서 이용가능한 USB 표준에 유사하다. 또한, 등시성 트랜잭션(isochronous transaction)에 대한 IEEE1394의 지원은 트랜잭션의 간격이 동일하고 각 트랜잭션에서 고정된 양의 데이터를 전송하는 장치들의 연결에 이상적이다. IEEE1394 프로토콜 모델에는 링크 계층과 대량으로 상호작용하는 물리 계층과 같은 여러 계층이 존재하며, 물리 계층은 소프트웨어 드라이버 요청을 유선을 통해 전송될 유효한 IEEE1394 패킷으로 셋업할 책임이 있다. 또한, 버스 관리 계층은 올바른 동작을 위해 물리 계층에 매우 의존하며, 이 계층은 버스에서 다수의 사용자를 감지 및 방지하기 위하여 버스 중재 패킷(bus arbitration packet)을 집합시키고, 버스 속도를 조정하며, 등시성 전송 시각을 제어할 책임이 있다.
또한, 주변 컴포넌트 인터페이스(PCI) 익스프레스 및 초광대역(UWB)과 같은 부상하는 네트워크 기술들이 점점 컴퓨터 본체 내부 및 외부의 주변 장치들을 연결하기 위해 이용되고 있다. 따라서, 새로운 연결 기술들의 데이터율이 계속하여 증가함에 따라 내부 버스와 외부 버스 사이의 명확한 구분은 줄어들 수 있다. 무선 환경의 간헐적 연결성 및 변화하는 위상뿐 아니라 용량 집적(capacity aggregation) 및 예약 프로토콜과 같은 새로운 특성은, 전통적으로 느린 페이스로 발전하고 기존의 API에 의존하는 어플리케이션으로서 미들웨어 계층에 대한 새로운 도전을 부담한다.
게다가, 블루투스 또는 UWB와 같은 무선 네트워크 기술은 전형적으로 배터리에 의해 전력을 공급받는 모바일 장치를 연결하기 위해 사용된다. 그러한 것으로서, 전력 관리는 버스 관리 계층에 의해 지원되어야 하는 중요한 특성이다. 마찬가지로, 원격 장치가 깨어날 때까지 데이터가 버퍼링되어야 한다.
동시에, 기존의 버스 프로토콜과 인터넷 프로토콜(IP) 사이에 불일치가 존재한다. 예를 들어, 일반적으로 그러한 버스 프로토콜 및 관련 프로그래밍 모델은 전형적으로 버스 특유이며, 인터넷에의 액세스와 같은 서비스를 제공하지 않는다. 게다가, IP는 전형적으로 등시성 전달, 클럭 동기화, 발견 등과 같은 버스의 시그널링 기능에 영향을 줄 수 없다.
그러므로, 기존의 시스템 및 장치에 관련된 전술된 예시적인 결함을 극복할 필요가 있다.
다음은 본 발명의 하나 이상의 양상에 대한 기본적인 이해를 제공하기 위하여 본 발명의 단순화된 요약을 제공한다. 이 요약은 본 발명의 포괄적인 개요가 아니다. 본 발명의 중요하거나 결정적인 구성요소를 식별하거나, 본 발명의 범위를 서술하고자 하는 것이 아니다. 오히려, 본 요약의 유일한 목적은 이후에 제공되는 보다 상세한 설명에 대한 도입부로서 단순화된 형태로 본 발명의 소정 개념을 제공하는 것이다.
본 발명은 장치 모델(예를 들어, 장치와 통신하는 장치 특유 어플리케이션) 및/또는 서비스 및 더 높은 레벨의 프로토콜을 여러 버스 구현에 바인딩할 수 있는 추상화 시스템을 통해 버스 프로토콜 및 네트워크의 통합을 용이하게 하는 시스템 및 방법을 제공한다. 본 발명의 추상화는 현존하는 버스 프로토콜들의 시맨틱을 표현할 수 있다. 그러한 추상화의 일부로서, 찾기 컴포넌트, 메시징 전달 컴포넌트, 및 연계 컴포넌트에 대한 시맨틱을 포함하는 프로그래밍 모델이 구현될 수 있다.
찾기 컴포넌트는 그러한 장치들의 발견을 위한 시그널링 메커니즘을 제공하기 위하여 버스 및/또는 네트워크에 부착된 장치를 허용할 수 있다. 메시징 전달 컴포넌트는 전형적으로 다양한 장치의 상당히 훌륭한 제어를 유지하기 위하여 신속하게 전달할 것을 필요로 하는 매체 우선순위에 대한 제어 메시지와 같은 메시지를 전달하기 위한 기능을 제공할 수 있다. 유사하게, 연계 컴포넌트는 버스들의 다양한 장치들 사이에 설립된 신뢰 및 관계를 결정할 수 있다. 연계 컴포넌트는 또한 도전 응답 프로토콜 메소드(challenge response protocol method) 또는 공용 키 기반구조(public key infrastructure)와 같이 이전에 구축된 자격(credential)을 이용함으로써 장치 및/또는 서비스를 인증할 수 있다. 게다가, 메시징 전달 컴포넌트는 통신의 프라이버시를 보장하기 위하여 암호화를 수행할 수 있고, 연계 컴포넌트에 동작가능하게 연결될 수 있다.
본 발명의 관련 양상에서, 어플리케이션 프로그램 인터페이스(API), 및 통신 하고 싶은 장치를 명시하기 위한 어드레싱 스킴(addressing scheme) 또한 이용될 수 있으며, 버스 추상화 시스템이 인터페이스로서 동작할 수 있다. 따라서, 그러한 어드레싱 컴포넌트는 다양한 어플리케이션이 버스 또는 네트워크에서 장치를 참조하기 위한 표준 방식을 제공할 수 있다. 게다가, 스트리밍 컴포넌트, 벌크 전달 컴포넌트(bulk transfer component) 및 클럭 동기화 컴포넌트에 대한 시맨틱이 제공될 수 있다. 스트리밍 컴포넌트는 전형적으로 신뢰할 수 있는 방식으로 시간에 민감한 정보의 대기시간 요구사항(latency requirement) 및 전달을 만족시킬 수 있다. 마찬가지로, 벌크 전달 컴포넌트는 메시징 전달 컴포넌트 및 스트리밍 컴포넌트의 동작에 영향을 주지 않고서 낮은 우선순위 항목 및 메시지의 전달을 용이하게 할 수 있다. 클럭 동기화 컴포넌트는 예를 들어 각 버스가 당연히 구현하는 각 클럭 동기화를 이용함으로써 버스를 통해 매우 정확한 클럭의 분포를 용이하게 할 수 있으며, 따라서 장치는 동기화될 수 있거나 그 버스에 관하여 공유될 소정 시간 기반(time base)을 가지게 된다.
본 발명은 버스 기술에 대해 잘 모르는 어플리케이션과 그 버스 사이의 상호작용을 용이하게 할 수 있다. 그러한 것으로서, 어플리케이션은 전형적으로 버스 기술의 구체사항을 알지 않고서 버스를 이용 및 그와 상호작용할 수 있다. 관련 양상에서, 네트워크의 장치들과 상호작용하는 어플리케이션들이 통신을 위한 동일한 추상화를 이용할 수 있도록 네트워크를 버스로서 취급하기 위하여 그러한 추상화는 네트워크를 통해 배치될 수 있다. 예를 들어, 추상화 시스템은 어플리케이션과 버스 사이, 컴퓨터의 프로세스들 사이 등에서 다양한 네트워크를 통해 통신하는 장치들 사이에 공통 언어로서 동작할 수 있다.
본 발명의 다른 양상에서, USB, IEEE1394 등과 같은 프로토콜 기반 버스 기술에서, 추상화 시스템은 각 버스 기술에 관련되는 적응 컴포넌트를 통해 구현될 수 있다. 그러한 적응 컴포넌트는 버스 또는 네트워크가 본 발명의 추상화 시스템을 구현하도록 할 수 있고, 적응 컴포넌트가 특정 버스 기술에 대해 상이하게 동작할 수 있더라도 어플리케이션 측면으로부터 버스 추상화가 균일하게 나타날 수 있다. 그러한 배치는 여러 버스 기술을 통해 장치 특유 어플리케이션 및 장치 드라이버의 재사용을 촉구하고, 그것은 다수의 그러한 버스 기술을 통해 단일 장치 모델에서 지적 투자에 영향을 줄 수 있다.
본 발명의 다른 양상에서, 그러한 장치들은 현재 그들의 각 버스에 바운딩되기 때문에, 전형적으로 현존하는 버스들의 유선 프로토콜에 대한 어떠한 변경도 필요하지 않으며, 예를 들어, 본 발명은 현존하는 장치 모델의 구현을 위한 프로그래밍 모델로서 동작한다. 따라서, 단일 어플리케이션 프로그램 인터페이스(API)는 여러 상이한 버스를 통해 메시지를 전송하기 위하여 제공될 수 있으며, 버스 타입 또는 프로토콜에 관계없이 장치 클래스를 지원할 수 있다.
게다가, 버스 드라이버는 본 발명의 또다른 양상에 따라 추상화를 노출할 수 있다. 계층화의 관점에서, 그러한 드라이버는 특정 기계에 대해 수반된 버스 하드웨어를 이해하는 드라이버 아래에 배치될 수 있다. 그러한 모델은 어플리케이션이 수정될 필요없이 네트워크 프로토콜이 발달할 수 있는 안정적인 프로그래밍 모델뿐만 아니라 네트워크에 대한 추상화 사용의 용이성을 제공할 수 있다. 게다가, 프 로세스 간 통신의 문맥에서, 본 발명은 위치에 관계없이 클라이언트 및 서비스가 풍부한 전송 기능을 이용하도록 할 수 있다. 데이터율 변화 또는 위상 변화도 야기할 수 있는 변화하는 채널 특성과 같은 무선 매체의 기타 특성은 여러 연결 사이에 자원들의 균형을 맞춤으로써 보상될 수 있다.
본 발명의 또다른 양상에서, 드라이버 모델에 적용될 때, 버스 추상화는 프로토콜 버스 및 로드/저장 버스(load/store bus)(예를 들어, CPI)의 통합을 허용한다. 따라서, 장치 클래스 지원은 로드/저장 버스, 프로토콜 버스 및 인터넷 프로토콜(IP) 연결 장치 사이에 공유될 수 있다.
전술한 목적 및 관련 목적을 달성하기 위하여, 본 발명은 이후에 완전히 기술되는 특성들을 포함한다. 후술되는 설명 및 첨부된 도면은 본 발명의 특정 예시적인 양상을 상세히 언급한다. 그러나, 이들 양상은 본 발명의 원리가 이용될 수 있는 다양한 방식 중 단지 소수를 나타낸다. 본 발명의 기타 양상, 이점 및 새로운 특성은 도면과 함께 고려될 때 본 발명의 후술되는 상세한 설명으로부터 명백해질 것이다.
본 발명이 이제 동일한 참조 번호가 곳곳의 동일한 구성요소를 참조하기 위해 사용되는 도면을 참조하여 기술된다. 후술되는 설명에서, 설명을 위하여, 본 발명의 완전한 이해를 제공하기 위하여 여러 특정 세부사항이 언급된다. 그러나, 본 발명이 이러한 특정 세부사항 없이도 실행될 수 있음은 명백할 수 있다. 다른 경우들에, 잘 알려진 구조 및 장치가 본 발명의 설명을 용이하게 하기 위하여 블럭도 형태로 도시된다.
본 출원에서 사용될 때, "컴포넌트", "핸들러", "모델", "시스템" 등과 같은 용어는 하드웨어든지, 하드웨어와 소프트웨어의 조합, 소프트웨어, 또는 실행중인 소프트웨어든지, 컴퓨터-관련 엔터티를 일컫기 위한 것이다. 예를 들어, 컴포넌트는 프로세서상에서 실행되는 프로세스, 프로세서, 객체, 실행파일, 실행의 스레드, 프로그램, 및/또는 컴퓨터일 수 있지만, 이들로 제한되지는 않는다. 예로서, 서버상에서 실행되는 어플리케이션과 그 서버 둘 모두 컴포넌트일 수 있다. 하나 이상의 컴포넌트가 프로세스 및/또는 실행의 스레드 내에 상주할 수 있으며, 컴포넌트는 하나의 컴퓨터에 로컬화될 수 있고/거나 둘 이상의 컴퓨터 사이에 분산될 수 있다. 또한, 이러한 컴포넌트들은 다양한 데이터 구조가 저장되어 있는 다양한 컴퓨터 판독가능 매체로부터 실행할 수 있다. 컴포넌트는 하나 이상의 데이터 패킷(예를 들어, 로컬 시스템에서, 분산 시스템에서, 및/또는 시그널을 통해 다른 시스템과의 인터넷과 같은 네트워크를 통해, 또다른 컴포넌트와 상호동작하는 하나의 컴포넌트로부터의 데이터)을 갖는 시그널 등에 따라 로컬 및/또는 원격 프로세스를 통해 통신할 수 있다.
본 발명은 다수의 버스 구현에 장치 특유 어플리케이션 및 보다 높은 레벨의 프로토콜을 바인딩할 수 있는 추상화 시스템을 통해 버스 프로토콜 및 네트워크의 통합을 용이하게 하는 시스템 및 방법을 제공한다. 먼저 도 1을 참조하면, 버스 타입 또는 프로토콜에 관계없이, 다수의 상이한 버스(115, 117, 119)(1 내지 n, n은 정수임), 또는 네트워크(120, 122, 124)(1 내지 N, N은 정수임)를 통해 메시지를 전송하기 위하여 단일 어플리케이션 프로그램 인터페이스(API)로서 동작할 수 있고, 장치 클래스를 지원할 수 있는 추상화 시스템(110)이 도시된다. 예를 들어, 그러한 추상화 시스템(110)은 전형적으로 버스 또는 네트워크 기술의 세부사항을 알지 않고서 버스(들) 및/또는 네트워크를 이용하고 그들과 상호작용할 수 있는 버스 기술(115-119)에 대해 잘 모르는 어플리케이션(manner application)(126, 128, 130)(1 내지 m, m은 정수임)을 명시할 수 있다.
도시된 바와 같이, 버스(115-119)는 USB, IEEE1394 등과 같은 프로토콜 기반 버스 기술을 이용할 수 있고, 예를 들어, 버스 시스템(115)은 USB 버스일 수 있다. 전형적으로, 그러한 USB(115)는 예를 들어 외부 주변 장치를 호스트 컴퓨터(도시되지 않음)에 연결하는 외부 버스 아키텍처일 수 있다. USB 버스(115)는 호스트 시스템과 USB 가능 주변 장치들 사이에 직렬 데이터 전달을 지원하는 통신 가능 주변 프로토콜로서 동작할 수 있다. 또한, USB 시스템은 호스트 측면과 장치 측면으로 구성될 수 있다. 두 측면 모두 USB 케이블이 그 일부인 물리적 버스를 통해 연결된다. 전형적으로, 그러한 호스트의 기본 책임은 데이터 전달을 위한 제어 인터페이스를 제공하는 것일 수 있는 반면, 장치 측면은 사용자에게 다양한 기능을 제공하는 것일 수 있다. 호스트 측면 자체는 USB 어댑터 또는 USB 호스트 제어기 하드웨어 계층 및 상위-레벨 시스템 소프트웨어 계층으로 구성될 수 있다. 예를 들어, 호스트 제어기는 호스트와 USB 장치 사이에 데이터의 스트림을 전달할 책임이 있을 수 있다. 예를 들어, 구성이 만들어질 때 호스트 제어기는 호스트 소프트웨어에 의해 제공된 파라미터에 기초하여 서비스를 제공할 수 있다.
예를 들어, USB에 대한 시스템 소프트웨어는 두 계층으로 구성될 수 있다. 상위 계층(top layer)은 USB 장치 드라이버로 구성될 수 있다. 그러한 드라이버는 장치를 구성하고 장치와 통신하기 위해 USB 시스템 소프트웨어 기능을 제어 및 사용하는 장치에 연결을 설립할 수 있다. 유사하게, 하위 계층은 USB 장치 드라이버와 호스트 컴퓨터 사이에 통신을 관리, 적합한 시점에 장치 드라이버를 로드 및 언로드, USB 프로토콜 프레임과 패킷 포맷 사이의 데이터 변환과 같은 다양한 태스크를 수행하는 USB 시스템 소프트웨어로 구성될 수 있다.
마찬가지로, 도 1에 도시된 네트워크(120-124)는 시스템 영역 네트워크 또는 다른 타입의 네트워크일 수 있으며, 개인용 컴퓨터, 서버 또는 다른 타입의 컴퓨터일 수 있는 여러 서버(도시되지 않음)를 포함할 수 있다. 그러한 호스트는 일반적으로 I/O 요청(예를 들어, I/O 판독 또는 기입) 시작뿐 아니라 하나 이상의 어플리케이션-레벨(또는 사용자-레벨) 프로그램을 동작 또는 실행할 수 있다. 또한, 네트워크는 하나 이상의 입력/출력 유닛(I/O 유닛)을 더 포함할 수 있으며, 그러한 I/O 유닛은 자신에게 연결된 하나 이상의 I/O 제어기를 포함할 수 있으며, I/O 각각은 저장 장치(예를 들어, 하드 디스크 드라이브, 테이프 드라이브) 또는 기타 I/O 장치와 같은 여러 타입의 I/O 장치 중 임의의 것일 수 있다. 호스트 및 I/O 유닛 및 그들의 부착된 I/O 제어기 및 장치는 클러스터와 같은 그룹으로 조직화될 수 있으며, 각 클러스터는 하나 이상의 호스트 및 전형적으로 하나 이상의 I/O 유닛(각 I/O 유닛은 하나 이상의 I/O 제어기를 포함함)을 포함한다. 호스트 및 I/O 유닛은 하나 이상의 클러스터의 노드들의 집합을 연결하는(예를 들어, 호스트 및 I/O 유닛의 집합을 연결하는) 라우터, 스위치 및 통신 링크(예를 들어, 유선, 커넥 터, 케이블 등)의 컬렉션을 통해 상호연결될 수 있다. 그러한 것으로서, 추상화 시스템(110)은 다양한 네트워크를 통해 통신하는 장치들 사이, 어플리케이션과 버스 사이, 컴퓨터상의 프로세스들 사이 등에서 공통 언어로서 동작할 수 있다.
도 2는 본 발명의 양상에 따라 적응 컴포넌트(210, 212, 214)를 통해 추상화 시스템(220)과 상호작용하는 다수의 버스 1 내지 n(n은 정수임)을 도시한다. 본 발명이 주로 버스 동작의 문맥으로 기술되지만, 네트워크상의 장치들이 통신을 위해 동일한 추상화 시스템(220)을 이용할 수 있도록 네트워크를 버스로 취급하기 위하여, 본 발명의 추상화 시스템이 네트워크를 통해서 배치될 수 있음을 잘 알 것이다.
그러한 적응 컴포넌트(210-214)는 다수의 버스가 본 발명의 추상화 시스템(220)을 구현하도록 할 수 있고, 적응 컴포넌트(210-214)가 특정 버스 기술에 대해 상이하게 동작할 수 있더라도, 어플리케이션 측면으로부터 버스 추상화 시스템(220)이 균일하게 나타날 수 있다. 그러한 배치는 여러 버스 기술을 통한 장치 모델의 재사용을 촉구할 수 있고, 그것은 메시지 버스, USB 또는 IEEE1394 버스와 같은 다수의 버스 기술을 통해 단일 장치 모델에서 지능적 투자의 수단을 허용할 수 있다.
메시지 버스(230, 240, 250) 각각은 어플리케이션들 사이의 메시지 전달에 특수화될 수 있다. 예를 들어, 메시지 버스 각각은 합의된 메시지 스키마의 집합, 공통 명령어 메시지의 집합, 및 버스 메시지를 수신측에 전송하기 위한 공유 기반구조를 포함할 수 있다. 그러한 합의된 메시지 스키마는 다양한 어플리케이션 및 버스를 통해 통신하는 장치들 사이, 컴퓨터들의 프로세스들 사이 등에서 공통 언어를 제공하기 위하여 추상화 시스템(220)을 통해 추상화될 수 있다. 전형적으로, 본 발명의 추상화 시스템을 이용함으로써, 메시지를 전송하는 어플리케이션은 특정 장치에 메시지를 전달하기 위해 이용되는 버스 기술에 더이상 친숙할 필요가 없다. 대신에, 어플리케이션은 단지 추상화 시스템(220)에 의해 제공된 포맷을 통해 메시지를 원하는 메시지 버스에 전달하고, 메시지 버스는 메시지를 공유 기반구조 또는 네트워크를 통해 버스 메시지를 리슨하고 있는 모든 다른 어플리케이션들에 전송한다.
메시지 버스 환경에서, 일반적으로, 메시지를 전송하는 어플리케이션은 그 메시지를 수신해야 하는 어플리케이션들 모두에 개개의 연결을 갖지 않는다. 유사하게, 메시지를 수신하는 어플리케이션은 메시지를 메시지 버스로부터 획득한다. 그러한 환경에서, 내부 최적화, 라우팅, 버퍼링 및 기반 전송 메커니즘은 수신측 어플리케이션에 메시지를 어떻게 전달하는지에 영향을 줄 수 있다. 부가적인 로직이 참여 어플리케이션의 일부로서 통합될 수 있다. 예를 들어, 전송측 어플리케이션은 시퀀스 번호를 아웃고잉 메시지에 삽입할 수 있고, 수신자는 인커밍 메시지를 재순서화하기 위하여 그 번호들을 사용할 수 있다. 전형적으로, 버스를 통해 메시지를 전송하는 어플리케이션은 버스가 예상하는 메시지의 타입을 메시지가 따르도록 메시지를 준비해야 한다.
마찬가지로, 메시지를 수신하는 어플리케이션은 메시지 타입을 이해할 수 있어야 한다. 본 발명의 추상화 시스템(220)은 버스 타입 또는 프로토콜에 관계없이 여러 상이한 버스를 통해 메시지를 전송하고 장치 클래스를 지원하기 위하여 단일 어플리케이션 프로그램 인터페이스(API)를 제공한다. 이것은 추상화 시스템(220)이 어플리케이션 측면으로부터 균일하게 나타날 수 있는 프로그래밍 모델을 나타내며, 어플리케이션이 수정될 필요없이 프로토콜이 전개될 수 있다.
게다가, 버스(230, 240, 250) 중 임의의 것이 IEEE1394 드라이버 버스일 수 있으며, 그것은 장치가 동작 중인 동안 장치의 추가 및/또는 제거를 허용하는 고성능 직렬 버스이다. 그러한 버스는 등시성 데이터 전달뿐 아니라 비동기식도 지원한다. 예를 들어, 전형적인 메모리-맵핑된 로드 및 스토어 어플리케이션에 대해, 비동기식 전달이 적합할 수 있으며, 그러한 전달은 보장된 전달 및 신뢰성을 제공할 수 있다.
또한, 등시성 데이터 전달은 전형적으로 미리 결정된 속도로 보장된 데이터 전송을 제공할 수 있다. 이것은 시간이 중요한 데이터의 인터럽트되지 않는 전달 및 저스트-인-타임 전달이 비용이 비싼 버퍼링에 대한 필요성을 감소시키는 멀티미디어 어플리케이션에 대해 중요할 수 있다. 게다가, IEEE1394 버스는 물리 계층, 링크 계층 및 트랜잭션 계층을 포함하는 3개의 프로토콜 계층을 포함할 수 있다. 물리 계층은 IEEE1394 커넥터에 연결할 수 있고, 장치들 사이에 전기적 및 기계적 연결을 제공한다. 마찬가지로, 링크 계층은 비동기식 및 등시성 패킷 전달을 위한 데이터 패킷 전달 서비스를 제공할 수 있다.
IEEE1394 버스에 대해서도, 트랜잭션 계층은 비동기식 프로토콜 기입, 판독 및 락(lock) 명령어를 지원할 수 있고, 기입 명령어는 발생자로부터 수신자에 데이 터를 전송하고, 판독 명령어는 데이터를 발생자에게 리턴하며, 락 명령어는 수신자에 의한 프로세싱을 포함하여 전송자와 수신자 사이의 데이터의 라운드 트립 라우팅을 생성함으로써 기입 및 판독 명령어의 기능을 결합한다. 본 발명에 따라, 그러한 장치는 현재 그들의 각 버스에 바운딩되기 때문에, 전형적으로 현존하는 버스의 유선 프로토콜에 대한 어떠한 변경도 필요하지 않으며, 예를 들어, 본 발명은 현존하는 장치 모델의 구현을 위한 프로그래밍 모델로서 동작한다. 따라서, 버스 추상화 시스템(220)은 버스 타입 또는 프로토콜에 관계없이 다수의 상이한 버스(230, 240, 250)를 통해 메시지를 전송하고 장치 클래스를 지원하기 위해 단일 어플리케이션 프로그램 인터페이스로서 동작할 수 있다.
본 발명은 주로 USB 및 IEEE1394 버스에 관련하여 기술되었지만, 주변 컴포넌트 인터페이스(PCI) 익스프레스, 초광대역(Ultrawide Band), 블루투스 등과 같은 기타 프로토콜 기반 버스 기술도 본 발명과 통합될 수 있음을 잘 알 것이다. 간략하게는, PCI 익스프레스는 매우 다양한 컴퓨팅 및 통신 플랫폼에 대해 정의된 고성능의 범용 I/O 인터커넥트이다. PCI 익스프레스 아키텍처는 3개의 분리된 논리 계층인 트랜잭션 계층, 데이터 링크 계층 및 물리 계층을 포함한다. PCI 익스프레스는 컴포넌트들 사이에 정보를 통신하기 위해 패킷을 사용한다. 패킷은 전송측 컴포넌트로부터 수신측 컴포넌트에 정보를 전달하기 위하여 트랜잭션 및 데이터 링크 계층에서 형성된다. 메모리 트랜잭션(들)에 대해(예를 들어, 판독 및/또는 기입), 요청자 ID(예를 들어, 소스 식별자), 트랜잭션 타입(예를 들어, 메모리 판독 또는 메모리 기입) 및 메모리 어드레스(들)를 포함하는 패킷이 형성된다. 요청자 ID(예 를 들어, 소스 식별자)는 메모리 트랜잭션의 소스인 장치를 식별한다. 패킷은 간략화를 위해 생략되는 부가적인 필드 논의를 포함한다. 마찬가지로, 일반적으로, 블루투스는 장치들 사이에 무선 연결을 허용하기 위하여 장치들 사이에 가까운 범위(예를 들어, 약 10미터)의 주파수-홉핑 라디오 링크의 프로토콜을 기술하기 위해 사용된 용어이다. 블루투스는 데이터를 약 2.4GHz의 주파수로 변조하기 위하여 가우시안 주파수 편이 변조(Gaussian frequency shift keying)를 이용할 수 있으며, 포인트-투-포인트 또는 포인트-투-멀티포인트 통신을 할 수 있다. 본 발명은 버스 기술에 대해 잘 모르는 어플리케이션과 그 버스 사이의 상호작용을 용이하게 할 수 있고, 어플리케이션은 전형적으로 버스 기술의 세부사항을 알지 않고서 버스를 이용 및 그와 상호작용할 수 있다.
도 3은 찾기 컴포넌트, 메시징 전달 컴포넌트, 및 연계 컴포넌트에 대한 시맨틱을 포함할 수 있는 추상화 시스템에 관련된 다양한 서브컴포넌트를 예시한다. 찾기 컴포넌트(310)는 버스 및/또는 네트워크(350)에 부착된 장치들이 서로를 찾기 위한 시그널링 메커니즘(signaling mechanism)을 제공하도록 허용한다. 예를 들어, 분산 시스템에서, 어플리케이션(360)이 프로토콜 내의 참여자들의 신원을 찾을 필요가 종종 있는데, 예를 들어, 새로운 클라이언트는 주제를 서비스하는 서버들의 집합을 결정할 필요가 있고, 새로운 서버는 임의의 클라이언트가 계류중인 요청(pending request)들을 갖는지를 판정할 필요가 있을 수 있고, 복제된 서버는 임의의 클라이언트가 계류중인 요청들을 갖는지를 판정할 필요 등이 있을 수 있다. 이와 다르게, 찾기 컴포넌트(320)는 버스 및/또는 네트워크(350) 내의 참여자들을 식 별할 수 있다. 예를 들어, 주제를 서비스할 수 있는 서버들의 집합을 결정할 것을 필요로 할 수 있고, 또는 임의의 클라이언트들이 계류주인 요청을 갖는지를 새로운 서버가 판정할 것을 필요로 할 수 있다. 그러한 것으로서, 찾기 프로토콜은 "who is out there"의 형태일 수 있고, 다른 참여자들은 "I am"을 발행하고, 그들의 상태를 설명한다.
마찬가지로, 메시징 전달 컴포넌트(330)는 예를 들어 제어 메시지의 전달과 같이 메시지를 전달하는 기능을 제공할 수 있다. 그러한 제어 메시지들은 장치들을 정확하게 제어하기 위해 전형적으로 즉시 전달될 필요가 있는 매체 우선순위 메시지의 형태일 수 있다.
이외에, 도 3에 예시된 바와 같이, 연계 컴포넌트(340)는 버스 및/또는 네트워크(350)의 다양한 장치들 간의 신뢰 및/또는 관계 구축을 결정할 수 있다. 네트워크 상에서, 보안 요구사항들이 필요하고 물리적 버스 자체가 충분히 안전하지 않은 경우에는, 장치들 간의 연계 컴포넌트(340)를 통해 양방향 신뢰가 구축될 수 있다. 예를 들어, 프린터 장치에 대해서, 사용자는 어디서 프린트 작업이 발생했는지를 확실하게 할 필요가 있으며, 프린터에의 허가되지 않은 액세스는 거절된다. 이러한 신뢰의 구축은 연계 컴포넌트(340)에 의해 제공될 수 있다. USB와 같은 몇몇 버스에 대해서, 다양한 장치들 간의 물리적 연결 또는 링크가 필수 연계를 증명하면 이러한 연계 컴포넌트에 대한 요구사항은 경감될 수 있다. 예를 들어, 프린터가 컴퓨터에 물리적으로 연결되어 있다는 사실은 USB 환경에서 프린터와 컴퓨터 간의 연계가 필요하다는 것에 대한 긍정 선언이다. 그럼에도 불구하고, 이러한 것 은 무선 및 IP 네트워크 환경 내에서의 경우가 아닐 수 있다. 또한, 연계 컴포넌트는 도전 응답 프로토콜 메소드 또는 공용 키 기반구조와 같은 이미 구축된 자격들을 이용함으로써 장치 및/또는 서비스들을 더욱 인증할 수 있다. 또한, 메시징 전달 컴포넌트는 암호화를 수행하여 통신의 프라이버시를 보증할 수 있으며, 연계 컴포넌트에 동작적으로 연결될 수 있다.
이제 도 4를 참조하면, 추상화 시스템에 관련된 몇몇의 추가적인 서브컴포넌트들이 예시된다. 특히, 본 발명은 스트리밍 컴포넌트(410), 벌크 전달 컴포넌트(420), 및 클럭 동기화(430)에 대한 시맨틱을 제공할 수 있다. 스트리밍 컴포넌트(410)는 전형적으로 신뢰적인 방식으로 대기시간 요구사항 및 시간에 민감한 정보의 전달을 만족시킬 수 있다. 전형적으로 등시성 전달은 시간 임계적이고 에러를 잘 견디는 스트리밍 데이터를 위해서, 또는 실시간으로 대화를 전달하는 인터넷 전화 어플리케이션과 같은 불변의 데이터 전송 속도를 필요로 하는 실시간 어플리케이션 내에서 이용될 수 있다.
또한, 일반적으로 등시성 데이터는 보장된 양의 대역폭 및 보장된 최대 전송 시간을 필요로 한다. 예를 들어, 버스를 통해 오디오 및 비디오를 전송할 수 있는 IEEE 1394 버스에서, 요구되는 대역폭이 이러한 전송을 위해 예약될 수 있으므로, 버스는 다른 전송 동작들에 관여하지 않고 데이터는 손실없이 전달될 수 있다. 일반적으로, 등시적 전달에 대해서, 적시의(timely) 데이터 전달은 정확한 또는 완벽한 데이터 전송보다 훨씬 가치있다.
마찬가지로, 벌크 전달 컴포넌트(420)는 메시징 전달 컴포넌트와 스트리밍 컴포넌트의 동작에 영향을 주지 않고서 우선순위가 낮은 항목 및 메시지들의 전달을 용이하게 할 수 있다. 전형적으로, 벌크 전달은 전송 또는 수신할 다량의 데이터를 가지고 보장된 전달을 필요로 하는 장치에 대해서 사용되지만, 프린터 및 스캐너와 같이 임의의 특정한 대역폭 또는 대기시간 요구사항을 갖지는 않는다. 데이터 모두가 결과적으로 전달되는 한, 이러한 유형의 장치들은 통상적으로 매우 느리거나 굉장히 지연된 전달들도 수용할 수 있다.
또한, 클럭 동기화 컴포넌트(430)는, 예를 들어 각각의 버스가 당연히 구현하는 각각의 클럭 동기화를 이용함으로써 버스를 통해 매우 정확한 클럭의 분배를 용이하게 할 수 있고, 따라서 장치들이 동기화하거나 그 버스에 대하여 공유될 시간 기반을 가질 수 있다. 전형적으로, 다양한 버스들은 상이한 방식으로 그리고 전송되는 메시징의 유형에 기초하여 버스 동기화를 적용하며, 장치와 컴퓨터 사이에 잘 동기화된 매우 고품질의 클럭이 존재할 수 있다. 예를 들어, 버스 상에서 신속한 교환 액세스(rapid trade off access)가 존재하고 그것이 일정한 간격으로 행해지면, 그러한 간격이 클럭 동기화를 위해 이용될 수 있다. 본 발명은 예를 들어 IEEE 1394 버스의 높은 클럭 동기화 기능과 같은 기존의 동기화 기능에 영향을 줄 수 있다.
도 5는 본 발명의 양상에 따른 특정 계층화 배치를 예시한다. 예시된 바와 같이, 하드웨어 계층(510)은 계층화 배치의 베이스를 형성할 수 있으며, 버스 드라이버 계층(520)이 그것 위에 위치해 있다. 버스 드라이버(520)는 버스 유형에 특유할 수 있으며, 버스 추상화 계층(530) 아래에 위치할 수 있다. 어플리케이션 계 층(540)은 버스 추상화 계층(530) 위에 위치할 수 있다. 이와 같이, 드라이버 모델에 적용될 때 본 발명의 버스 추상화는 프로토콜 버스와 로드/저장 버스(예를 들어, CPI) 간의 통합을 허용할 수 있다. 이에 따라, 장치 클래스 지원은 로드/저장 버스, 프로토콜 버스 및 인터넷 프로토콜(IP) 사이에서 공유될 수 있다. 그러므로, 단일 어플리케이션 프로그램 인터페이스(API)가 버스 유형이나 프로토콜에 상관없이 복수의 상이한 버스들을 통해 메시지를 송신하고 장치 클래스를 지원하기 위해 제공될 수 있다.
도 6은 본 발명의 양상에 따른 버스 추상화의 방법(600)을 나타낸다. 방법은 버스 추상화가 어플리케이션에 의해 통신할 장치를 찾는 기능을 노출하는 블럭(610)에서 시작한다. 예를 들어, 스트링이 장치 또는 그것의 부분들을 어드레싱하는 부분으로서 이용될 수 있다. 다음으로 블럭(620)에서, 장치 또는 그것의 부분들과 통신할 필요가 있는 명령어들의 집합의 임계성에 대한 판정이 내려질 수 있다(예를 들어, 어플리케이션은 벌크 전달, 스트리밍 등을 명시적으로 요청할 수 있음). 블럭(630)에서, 상기에 상세히 기술된 바와 같이, 메시지 전달, 스트리밍 전달, 또는 벌크 전달과 같은 적절한 메시지 전달 컴포넌트가 장치 또는 그것의 부분들에 메시지를 전달하기 위해 선택될 수 있다. 다음으로, 이러한 선택에 기초하여 블럭(640)에서, 원하는 주소로 메시지를 올바르게 전송하도록 선택된 버스의 클럭 동기화 특성에 영향을 줄 수 있다. 이러한 배치는 복수의 버스 기술들에 걸쳐 장치 모델의 재사용을 촉구할 수 있으며, 이것은 차례로 복수의 버스 기술들에 걸친 단일 장치 모델 내의 지적 투자에 영향을 줄 수 있다. 따라서, 어플리케이션 측면 으로부터는, 버스 추상화는 버스 기술 또는 네트워크에 관계없이 균일하게 보일 수 있다.
예시적인 방법이 다양한 이벤트 및/또는 동작을 나타내는 일련의 블럭들로 본원에 예시 및 설명되어 있지만, 본 발명은 그러한 블럭들의 예시된 순서에 의해 제한되지 않는다. 예를 들어, 몇몇 동작 또는 이벤트들은 본 발명에 따라 본원에 예시된 순서와 별개로 상이한 순서로 및/또는 다른 활동 또는 이벤트들과 동시에 일어날 수 있다. 또한, 본 발명에 따른 방법을 구현하기 위해 예시된 블럭, 이벤트 또는 동작 모두가 필요하지는 않을 수도 있다. 게다가, 본 발명에 따른 예시적인 방법 및 다른 방법들은 본원에 예시 및 설명된 방법에 관련하여 뿐만 아니라 예시 또는 설명되지 않은 다른 시스템 및 장치들에 관련하여 구현될 수도 있음을 잘 알아야 한다.
이제 도 7을 참조하면, 본 발명의 다양한 양상이 구현될 수 있는 적합한 컴퓨팅 환경의 간략하고 일반적인 설명이 제시된다. 본 발명이 컴퓨터 및/또는 컴퓨터들 상에서 동작하는 컴퓨터 프로그램의 컴퓨터 실행가능 명령어들의 일반적인 문맥으로 상기 설명되었지만, 당업자들은 본 발명이 또한 다른 프로그램 모듈들과 조합하여 구현될 수도 있다는 것을 인식할 것이다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하고/거나 특정 추상 데이터 타입을 구현하는 루틴, 프로그램, 컴포넌트, 데이터 구조 등을 포함한다. 게다가, 당업자들은 본 발명의 방법이 개인용 컴퓨터, 핸드헬드 컴퓨팅 장치, 마이크로프로세서 기반 또는 프로그래밍가능 가전 제품뿐 아니라 단일 프로세서 또는 멀티프로세서 컴퓨터 시스템, 미니컴퓨터, 메인프레임 컴퓨터 등을 포함하는 기타 컴퓨터 시스템 구성에서도 구현될 수 있다는 것을 잘 알 것이다. 전술된 바와 같이, 본 발명의 예시된 양상은 또한 통신 네트워크를 통해 링크되는 원격 프로세싱 장치들에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서도 실행될 수 있다. 그러나, 본 발명의 양상 모두가 아니더라도 일부는 독립형 컴퓨터 상에서 구현될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 로컬 및 원격 메모리 저장 장치 둘 모두에 위치할 수 있다. 예시적인 환경은 프로세싱 유닛(721), 시스템 메모리(722), 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트를 프로세싱 유닛(721)에 연결하는 시스템 버스(723)를 포함하는 컴퓨터(720)를 포함한다. 프로세싱 유닛(721)은 상업적으로 이용가능한 다양한 프로세서들 중 임의의 것일 수 있다. 듀얼 마이크로프로세서 및 다른 멀티프로세서 아키텍처들도 프로세싱 유닛(721)으로 이용될 수 있다.
시스템 버스는 USB, IEEE 1394, 주변 버스, 및 상업적으로 이용가능한 다양한 버스 아키텍처들 중 임의의 것을 이용하는 로컬 버스를 포함하는 몇몇 유형의 버스 구조들 중 임의의 것일 수 있다. 시스템 메모리는 ROM(724) 및 RAM(725)을 포함할 수 있다. 시작할 때 등에, 컴퓨터(720) 내의 구성요소들 간에 정보 전달을 돕는 기본 루틴을 포함하는 기본 입출력 시스템(BIOS)은 일반적으로 ROM(724)에 저장된다.
컴퓨터(720)는 또한 하드 디스크 드라이브(727), 예를 들어 분리형 디스크(729)로부터 판독하거나 그 디스크에 기록하는 자기 디스크 드라이브(728), 및 예를 들어 CD-ROM 디스크(731)로부터 판독 또는 그 CD-ROM(731)에 기록, 또는 기타 광 매체로부터 판독하거나 그 광 매체에 기록하는 광 디스크 드라이브(730)를 포함한다. 하드 디스크 드라이브(727), 자기 디스크 드라이브(728) 및 광 디스크 드라이브(730)는 각각 하드 디스크 드라이브 인터페이스(732), 자기 디스크 드라이브 인터페이스(733) 및 광 드라이브 인터페이스(734)에 의해 시스템 버스(723)에 연결된다. 드라이브 및 그 관련 컴퓨터 판독가능 매체는 컴퓨터(720)에 대한 데이터, 데이터 구조, 컴퓨터 실행가능 명령어 등의 비휘발성 저장을 제공한다. 상기 컴퓨터 판독가능 매체의 설명이 하드 디스크, 분리형 자기 디스크 및 CD를 참조하고 있지만, 당업자들은 자기 카세트, 플래시 메모리 카드, DVD, 베르누이 카트리지(Bernoulli cartridge) 등과 같이 컴퓨터에 의해 판독될 수 있는 기타 유형의 매체도 예시적인 동작 환경에서 이용될 수 있으며, 또한 임의의 그러한 매체는 본 발명의 방법을 수행하기 위한 컴퓨터 실행가능 명령어를 포함할 수 있다는 것을 인식해야 한다.
운영 시스템(735), 하나 이상의 어플리케이션 프로그램(736), 기타 프로그램 모듈(737) 및 프로그램 데이터(738)를 포함하는 수많은 프로그램 모듈들은 드라이브 및 RAM(725)에 저장될 수 있다. 예시된 컴퓨터 내의 운영 시스템(735)은 실제로 상업적으로 이용가능한 임의의 운영 시스템일 수 있다.
사용자는 키보드(740), 및 마우스(742)와 같은 포인팅 장치를 통해 컴퓨터(720)에 명령어 및 정보를 입력할 수 있다. 기타 입력 장치(도시되지 않음)는 마이크로폰, 조이스틱, 게임 패드, 위성 디쉬, 스캐너 등을 포함할 수 있다. 이러한 입력 장치 및 기타 입력 장치들은 종종 시스템 버스에 연결된 직렬 포트 인터페이 스(746)를 통해 프로세싱 유닛(721)에 연결되지만, 병렬 포트, 게임 포트 또는 USB와 같은 다른 인터페이스에 의해 연결될 수도 있다. 모니터(747) 또는 다른 유형의 디스플레이 장치도 비디오 어댑터(748)와 같은 인터페이스를 통해 시스템 버스(723)에 연결된다. 모니터 이외에, 컴퓨터는 전형적으로 스피커 및 프린터와 같은 기타 주변 출력 장치(도시되지 않음)를 포함한다.
컴퓨터(720)는 원격 컴퓨터(749)와 같은 하나 이상의 원격 컴퓨터로의 논리적 연결을 사용하는 네트워킹된 환경에서 동작할 수 있다. 도 7에는 메모리 저장 장치(750)만이 예시되어 있지만, 원격 컴퓨터(749)는 워크스테이션, 서버 컴퓨터, 라우터, 피어(peer) 장치, 또는 다른 일반적인 네트워크 노드일 수 있으며, 컴퓨터(720)에 관련하여 설명한 구성요소 중 다수 또는 모두를 전형적으로 포함한다. 도 7에 나타낸 논리적 연결은 LAN(751) 및 WAN(752)을 포함할 수 있다. 이러한 네트워킹 환경은 사무실, 기업-규모 컴퓨터 네트워크, 인트라넷 및 인터넷에서 일반적이다.
LAN 네트워킹 환경에서 이용되는 경우, 컴퓨터(720)는 네트워크 인터페이스 또는 어댑터(753)를 통해 로컬 네트워크(751)에 연결될 수 있다. WAN 네트워킹 환경에서 이용되는 경우, 컴퓨터(720)는 일반적으로 모뎀(754)을 포함할 수 있고/거나 LAN 상의 통신 서버들에 연결되고/거나 인터넷과 같은 WAN(752)을 통해 통신을 구축하기 위한 다른 수단을 갖는다. 내장형 또는 외장형일 수 있는 모뎀(754)은 직렬 포트 인터페이스(746)를 통해 시스템 버스(723)에 연결될 수 있다. 네트워킹 환경에서, 컴퓨터(720)에 관하여 제시된 프로그램 모듈 또는 그 부분은 원격 메모 리 저장 장치에 저장될 수 있다. 도시된 네트워크 연결은 예시적인 것이며, 컴퓨터들 간의 통신 링크를 구축하는 다른 수단이 이용될 수 있다는 것이 인식될 것이다.
컴퓨터 프로그래밍 당업자들의 구현에 따라, 다르게 나타내지 않는 한, 본 발명은 컴퓨터(720)와 같은 컴퓨터에 의해 수행되는 동작의 상징적인 표현 및 활동들을 참조하여 설명되었다. 이러한 활동 및 동작들은 때때로 컴퓨터 실행가능한 것으로 참조된다. 활동 및 상징적으로 나타낸 동작들은 결과 변환 또는 전기 신호 표현의 감소를 야기하는 데이터 비트를 나타내는 전기 신호의 프로세싱 유닛(721)에 의한 조작, 및 메모리 시스템[시스템 메모리(722), 하드 드라이브(727), 플로피 디스크(728), 및 CD-ROM(731)을 포함함] 내의 메모리 위치에의 데이터 비트의 유지를 포함함으로써, 컴퓨터 시스템의 동작뿐만 아니라 다른 신호 프로세싱을 재구성 또는 변경한다. 그러한 데이터 비트가 유지되는 메모리 위치는 데이터 비트에 대응하는 특정한 전기, 자기, 또는 광 속성을 갖는 물리적 위치이다.
본 발명이 특정 예시된 양상들에 관하여 도시 및 설명되어 있지만, 당업자들은 이 명세서 및 첨부된 도면들을 읽고 이해하면 등가 변경물 및 수정물들이 만들어질 수 있다는 것을 인식할 것이다. 상기 기술된 컴포넌트(어셈블리, 장치, 회로, 시스템 등)들에 의해 수행되는 다양한 기능들에 특히 관련하여, 그러한 컴포넌트들을 설명하기 위해 사용된 용어들("수단"에의 참조를 포함)은 다르게 나타내지 않는 이상 개시된 구조에 구조적으로 동일하지는 않더라도, 설명된 컴포넌트(예를 들어, 기능적으로 등가물)의 지정된 기능을 수행하는 임의의 컴포넌트에 대응하는 것으로 의도되며, 그것은 본원에 예시된 본 발명의 예시적인 양상들의 기능을 수행한다. 이에 관하여, 본 발명은 본 발명의 다양한 방법의 동작 및/또는 이벤트들을 수행하기 위한 컴퓨터 실행가능 명령어를 갖는 컴퓨터 판독가능 매체뿐만 아니라 시스템을 포함한다는 것이 또한 인식될 것이다. 또한, "포함한다("includes", "including", "has", "having")"란 용어 및 그것의 변형들이 상세한 설명 또는 청구항들에서 사용되는 한, 이러한 용어들은 "포함하는(comprising)"이란 용어와 유사한 방식으로 포괄적인 것으로 의도된다.
다수의 버스 구현들에 장치 모델 및 보다 높은 레벨 프로토콜을 바인딩할 수 있는 추상화 시스템을 통해 버스 프로토콜 및 네트워크의 통합을 용이하게 한다.

Claims (20)

  1. 버스 프로토콜들 또는 네트워크들의 통합을 용이하게 하는 시스템에 있어서,
    다수의 버스 구현들 또는 네트워크들에 장치 모델들 및 고레벨 프로토콜들을 바인딩하는 추상화 시스템을 포함하고,
    상기 추상화 시스템은,
    장치들이 서로를 찾기 위한 시그널링 메커니즘(signaling mechanism)을 제공하는 찾기 컴포넌트(discovery component), 및
    상기 장치들의 제어를 위한 제어 메시지들을 전달하는 메시징 전달 컴포넌트
    를 포함하는 시스템.
  2. 제1항에 있어서, 상기 추상화 시스템은 상기 장치들 간에 구축된 신뢰에 대한 판정을 용이하게 하는 것, 및 미리 구축된 자격(credential)을 이용하여 상기 장치들 또는 서비스들을 인증하는 것 중 적어도 하나를 수행하는 연계 컴포넌트(association component)를 더 포함하는 시스템.
  3. 제1항에 있어서, 상기 추상화 시스템은 상기 장치들 간의 시간에 민감한 정보의 전달을 용이하게 하는 스트리밍 컴포넌트를 더 포함하는 시스템.
  4. 제1항에 있어서, 상기 추상화 시스템은 낮은 우선순위 항목들의 전달을 용이 하게 하는 벌크 전달 컴포넌트(bulk transfer component)를 더 포함하는 시스템.
  5. 제1항에 있어서, 상기 추상화 시스템은 버스에 대해 잘 모르는 어플리케이션이 상기 버스를 이용할 수 있게 하는 시스템.
  6. 제1항에 있어서, 상기 추상화 시스템은 다수의 상이한 버스들에 단일 어플리케이션 프로그램 인터페이스를 제공하는 시스템.
  7. 제1항에 있어서, 상기 추상화 시스템은 프로토콜 버스들 및 인터넷 프로토콜 사이에 장치 클래스 지원의 공유를 용이하게 하는 시스템.
  8. 제1항에 있어서, 상기 추상화 시스템과 상호작용하는 적응 컴포넌트를 버스의 일부로서 더 포함하는 시스템.
  9. 제1항에 있어서, 상기 추상화 시스템은 다수의 버스 기술들에 걸쳐 장치 모델들을 재사용하는 시스템.
  10. 버스 프로토콜들을 통합하는 방법에 있어서,
    추상화 시스템을 통해 다수의 버스 구현들 또는 네트워크들에 장치 모델들 및 보다 높은 레벨의 프로토콜들을 바인딩하는 단계, 및
    메시지가 전달될 장치를 찾는 단계
    를 포함하는 방법.
  11. 제10항에 있어서, 시간에 민감한 정보의 전달을 위해 스트리밍 컴포넌트를 이용하는 단계를 더 포함하는 방법.
  12. 제10항에 있어서, 상기 메시지의 전달을 위해 벌크 전달 컴포넌트를 이용하는 단계를 더 포함하는 방법.
  13. 제10항에 있어서, 비동기식(asynchronous) 및 등시적 방식(isochronous manner) 중 적어도 하나의 방식으로 상기 메시지를 전달하는 단계를 더 포함하는 방법.
  14. 제10항의 방법을 수행하기 위한 컴퓨터 실행가능 명령어들이 저장된 컴퓨터 판독가능 매체.
  15. 데이터 구조가 저장된 컴퓨터 판독가능 매체로서,
    상이한 버스 기술들을 갖는 다수의 버스들에 장치 모델들 및 보다 높은 레벨 프로토콜들을 바인딩하여, 상기 상이한 버스 기술들의 세부사항에 대해 잘 모르는 어플리케이션들이 상기 다수의 버스들을 이용할 수 있게 하는 컴퓨터 실행가능 컴 포넌트를 포함하고,
    상기 컴퓨터 실행가능 컴포넌트는 상기 어플리케이션들 및 장치들이 상기 다수의 버스들 상에서 서로를 찾도록 하기 위한 시그널링 메커니즘을 제공하는 컴퓨터 실행가능 컴포넌트를 더 포함하는 컴퓨터 판독가능 매체.
  16. 제15항에 있어서, 상기 컴퓨터 실행가능 컴포넌트는 상기 장치들 간에 구축된 신뢰에 대한 판정을 용이하게 하는 부가적인 컴퓨터 실행가능 컴포넌트를 포함하는 컴퓨터 판독가능 매체.
  17. 제15항에 있어서, 상기 컴퓨터 실행가능 컴포넌트는 상기 장치들 간의 시간에 민감한 정보의 전달을 용이하게 하는 또 다른 컴퓨터 실행가능 컴포넌트를 포함하는 컴퓨터 판독가능 매체.
  18. 제15항에 있어서, 상기 컴퓨터 실행가능 컴포넌트는 프로토콜 버스들 및 인터넷 프로토콜 사이에 장치 클래스 지원의 공유를 용이하게 하는 컴퓨터 판독가능 매체.
  19. 제15항에 있어서, 상기 컴퓨터 실행가능 컴포넌트는 다수의 버스 기술들에 걸쳐 장치를 재사용하는 컴퓨터 판독가능 매체.
  20. 제15항에 있어서, 상기 컴퓨터 실행가능 컴포넌트는 어플리케이션들이 상기 다수의 버스들 상의 장치들을 참조하기 위한 표준 방식을 제공하는 어드레싱 스킴(addressing scheme)을 갖는 컴퓨터 판독가능 매체.
KR1020050132957A 2004-12-30 2005-12-29 버스 프로토콜들 또는 네트워크들의 통합을 용이하게 하는버스 추상화 방법 및 시스템 KR20060079108A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/026,190 US20060168269A1 (en) 2004-12-30 2004-12-30 Bus abstraction
US11/026,190 2004-12-30

Publications (1)

Publication Number Publication Date
KR20060079108A true KR20060079108A (ko) 2006-07-05

Family

ID=35825424

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050132957A KR20060079108A (ko) 2004-12-30 2005-12-29 버스 프로토콜들 또는 네트워크들의 통합을 용이하게 하는버스 추상화 방법 및 시스템

Country Status (16)

Country Link
US (1) US20060168269A1 (ko)
EP (1) EP1684173A1 (ko)
JP (1) JP2006190280A (ko)
KR (1) KR20060079108A (ko)
CN (1) CN1798148A (ko)
AU (1) AU2005246944A1 (ko)
BR (1) BRPI0505537A (ko)
CA (1) CA2531605A1 (ko)
CO (1) CO5770119A1 (ko)
IL (1) IL172696A0 (ko)
NO (1) NO20056105L (ko)
NZ (1) NZ544320A (ko)
RU (1) RU2005141590A (ko)
SG (1) SG123734A1 (ko)
TW (1) TW200635291A (ko)
ZA (1) ZA200510328B (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101383053B1 (ko) * 2012-11-01 2014-04-08 한국과학기술정보연구원 개방형 api를 이용하여 네트워크 추상화 정보를 생성하여 전송하기 위한 장치 및 방법
KR20190103973A (ko) * 2018-02-28 2019-09-05 키스틀러 홀딩 아게 통신 시스템

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8571942B2 (en) 2005-06-09 2013-10-29 Whirlpool Corporation Method of product demonstration
US20070288331A1 (en) * 2006-06-08 2007-12-13 Whirlpool Corporation Product demonstration system and method
US8250163B2 (en) 2005-06-09 2012-08-21 Whirlpool Corporation Smart coupling device
US9009811B2 (en) * 2005-06-09 2015-04-14 Whirlpool Corporation Network system with electronic credentials and authentication for appliances
US8816828B2 (en) 2005-06-09 2014-08-26 Whirlpool Corporation Recipe wand and recipe book for use with a networked appliance
US9164867B2 (en) * 2005-06-09 2015-10-20 Whirlpool Corporation Network for communicating information related to a consumable to an appliance
US8155120B2 (en) * 2005-06-09 2012-04-10 Whirlpool Corporation Software architecture system and method for discovering components within an appliance using fuctionality identifiers
US20080137670A1 (en) * 2005-06-09 2008-06-12 Whirlpool Corporation Network System with Message Binding for Appliances
US8676656B2 (en) * 2005-06-09 2014-03-18 Whirlpool Corporation Method for product demonstration
US9122788B2 (en) * 2005-06-09 2015-09-01 Whirlpool Corporation Appliance network for a networked appliance with a network binder accessory
US8027752B2 (en) 2005-06-09 2011-09-27 Whirlpool Corporation Network for changing resource consumption in an appliance
EP2228969B1 (en) * 2005-06-09 2017-04-19 Whirlpool Corporation Software architecture system and method for communication with, and management of, at least one component within a household appliance
US8856036B2 (en) * 2005-06-09 2014-10-07 Whirlpool Corporation Method of providing product demonstrations
US8615332B2 (en) 2005-06-09 2013-12-24 Whirlpool Corporation Smart current attenuator for energy conservation in appliances
US10333731B2 (en) 2005-06-09 2019-06-25 Whirlpool Corporation Methods and apparatus for communicatively coupling internal components within appliances, and appliances with external components and accessories
US7831321B2 (en) * 2005-06-09 2010-11-09 Whirlpool Corporation Appliance and accessory for controlling a cycle of operation
US8682733B2 (en) * 2006-06-08 2014-03-25 Whirlpool Corporation System for product demonstration
US20100299517A1 (en) * 2009-05-22 2010-11-25 Nuvon, Inc. Network System with a Plurality of Networked Devices with Various Connection Protocols
EP2893688B1 (en) * 2012-09-07 2018-10-24 Oracle International Corporation System and method for supporting message pre-processing in a distributed data grid cluster
US10656607B2 (en) * 2014-04-29 2020-05-19 Cox Communications, Inc Systems and methods for intelligent automation control services
US9703742B2 (en) 2014-09-26 2017-07-11 Intel Corporation Unified device interface for a multi-bus system
US10102094B2 (en) * 2016-01-22 2018-10-16 Sony Interactive Entertainment Inc. Simulating legacy bus behavior for backwards compatibility
EP3274896B1 (en) * 2016-04-22 2019-08-21 Hewlett-Packard Enterprise Development LP Configuration of a memory controller for copy-on-write with a resource controller

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5764890A (en) * 1994-12-13 1998-06-09 Microsoft Corporation Method and system for adding a secure network server to an existing computer network
US5838910A (en) * 1996-03-14 1998-11-17 Domenikos; Steven D. Systems and methods for executing application programs from a memory device linked to a server at an internet site
US7349391B2 (en) * 1999-03-19 2008-03-25 F5 Networks, Inc. Tunneling between a bus and a network
US6892230B1 (en) * 1999-06-11 2005-05-10 Microsoft Corporation Dynamic self-configuration for ad hoc peer networking using mark-up language formated description messages
JP2002164898A (ja) * 2000-11-24 2002-06-07 Matsushita Electric Ind Co Ltd データ送受信装置及びデータ送受信方法
US7343427B2 (en) * 2000-12-13 2008-03-11 Sony Corporation Method and an apparatus for the integration of IP devices into a HAVi network
US20020078161A1 (en) * 2000-12-19 2002-06-20 Philips Electronics North America Corporation UPnP enabling device for heterogeneous networks of slave devices
JP2003186819A (ja) * 2001-12-17 2003-07-04 Ricoh Co Ltd セキュリティ機能付きusb機器を備えたコンピュータシステム
EP1396962A1 (en) * 2002-08-05 2004-03-10 Sony International (Europe) GmbH Bus service interface
US8346884B2 (en) * 2003-01-21 2013-01-01 Nextio Inc. Method and apparatus for a shared I/O network interface controller
US7690004B1 (en) * 2003-12-04 2010-03-30 The Math Works, Inc. Method of providing consistent interface to image acquisition devices
US7694312B2 (en) * 2004-09-10 2010-04-06 Pleora Technologies Inc. Methods and apparatus for enabling bus connectivity over a data network

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101383053B1 (ko) * 2012-11-01 2014-04-08 한국과학기술정보연구원 개방형 api를 이용하여 네트워크 추상화 정보를 생성하여 전송하기 위한 장치 및 방법
KR20190103973A (ko) * 2018-02-28 2019-09-05 키스틀러 홀딩 아게 통신 시스템
US11178044B2 (en) 2018-02-28 2021-11-16 Kistler Holding Ag Communication system

Also Published As

Publication number Publication date
AU2005246944A1 (en) 2006-07-20
NO20056105L (no) 2006-07-03
CN1798148A (zh) 2006-07-05
US20060168269A1 (en) 2006-07-27
CO5770119A1 (es) 2007-06-29
EP1684173A1 (en) 2006-07-26
JP2006190280A (ja) 2006-07-20
BRPI0505537A (pt) 2006-09-12
TW200635291A (en) 2006-10-01
CA2531605A1 (en) 2006-06-30
SG123734A1 (en) 2006-07-26
RU2005141590A (ru) 2007-07-20
NZ544320A (en) 2007-09-28
IL172696A0 (en) 2006-04-10
ZA200510328B (en) 2008-08-27

Similar Documents

Publication Publication Date Title
KR20060079108A (ko) 버스 프로토콜들 또는 네트워크들의 통합을 용이하게 하는버스 추상화 방법 및 시스템
US8806030B2 (en) Multichannel connections in file system sessions
CN102124449B (zh) 用于低开销数据传输的方法和系统
KR102047142B1 (ko) 원격 직접 메모리 액세스를 통한 임의 사이즈의 전송 기법
Pedreiras et al. The FTT-Ethernet protocol: Merging flexibility, timeliness and efficiency
USRE41736E1 (en) Wireless apparatus having multiple coordinated tranceivers for multiple wireless communication protocols
US20120311670A1 (en) System and method for providing source id spoof protection in an infiniband (ib) network
TW200926809A (en) Method, system and apparatus for extended rate/range communication over a communication network
US20240069977A1 (en) Data transmission method and data transmission server
WO2024037296A1 (zh) 基于协议族的quic数据传输方法及装置
EP1699417B1 (en) Interprocessor communication network providing dynamic dedication of ports
JP2009080853A (ja) システム電源モード制御のためのパケット交換
Al-Madani et al. Performance enhancement of limited-bandwidth industrial control systems
US11005782B2 (en) Multi-endpoint adapter/multi-processor packet routing system
MXPA05013937A (en) Bus abstraction
CN117527458B (zh) 一种多播数据分发方法、装置、电子设备及存储介质
US20240187336A1 (en) Routing transport flows in a transport layer over multiple paths in a network layer
CN103765398A (zh) 至少部分地判定缓冲存储器字段的一个或多个各自量
Whittington et al. Constructing secure peer data connectivity for mobile systems
Kulib Time-Sensitive Networking for Real-Time Ethernet Communication
KR20140025386A (ko) 서비스 품질 관리를 위한 방법 및 장치
Whittington et al. Re-envisioning digital architectures connecting CE hardware for security, reliability and low energy
KR100805094B1 (ko) 포트들의 동적 전용을 제공하는 인터프로세서 통신네트워크
Al-Madani et al. A novel mobility-aware data transfer service (MADTS) based on DDS standards
Panda et al. Commodity High Performance Interconnects

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