KR101788724B1 - 클라우드 컴퓨팅용 대용량 스토리지 가상화 - Google Patents

클라우드 컴퓨팅용 대용량 스토리지 가상화 Download PDF

Info

Publication number
KR101788724B1
KR101788724B1 KR1020167007888A KR20167007888A KR101788724B1 KR 101788724 B1 KR101788724 B1 KR 101788724B1 KR 1020167007888 A KR1020167007888 A KR 1020167007888A KR 20167007888 A KR20167007888 A KR 20167007888A KR 101788724 B1 KR101788724 B1 KR 101788724B1
Authority
KR
South Korea
Prior art keywords
mass storage
communication interface
interface
processing unit
memory
Prior art date
Application number
KR1020167007888A
Other languages
English (en)
Other versions
KR20160046893A (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 KR20160046893A publication Critical patent/KR20160046893A/ko
Application granted granted Critical
Publication of KR101788724B1 publication Critical patent/KR101788724B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/352Details of game servers involving special game server arrangements, e.g. regional servers connected to a national server or a plurality of servers managing partitions of the game world
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/355Performing operations on behalf of clients with restricted processing capabilities, e.g. servers transform changing game scene into an MPEG-stream for transmitting to a mobile phone or a thin client
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/90Constructional details or arrangements of video game devices not provided for in groups A63F13/20 or A63F13/25, e.g. housing, wiring, connections or cabinets
    • A63F13/95Storage media specially adapted for storing game information, e.g. video game cartridges
    • 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/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Bus Control (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)
  • Computer And Data Communications (AREA)

Abstract

본 발명의 형태들은 호스트 시스템에 연결된 인터페이스 카드, 또는, 다른 전용 하드웨어 유닛을 이용하여 대용량 스토리지를 가상화하기 위한 시스템 및 방법에 관련된다. 다양한 구현예에서, 인터페이스 디바이스 및 호스트 시스템은 단말 시스템에 투명한 방식으로 다른 단말 컴퓨팅 시스템을 위한 대용량 스토리지 디바이스를 집합적으로 에뮬레이션할 수 있다. 더욱이, 다양한 구현예에서, 단말 플랫폼 하드웨어 또는 소프트웨어 구조의 변경을 요하지 않으면서, 대용량 스토리지 디바이스가 단말 시스템에 투명한 방식으로 에뮬레이션될 수 있다.

Description

클라우드 컴퓨팅용 대용량 스토리지 가상화{MASS STORAGE VIRTUALIZATION FOR CLOUD COMPUTING}
우선권 주장
본 출원은 Roelof Roderick Colenbrander에게 양도된, 함께 계류중인 미국특허정규출원 제14/135,213호(발명의 명칭: "MASS STORAGE VIRTUALIZATION FOR CLOUD COMPUTING", 대리인 파일 번호: SCEA13031US00, 2013년 12월 19일 출원)의 우선권을 주장하며, 그 전체 내용은 본원 발명에 포함된다.
관련 출원의 상호 참조
본 출원은 Roelof Roderick Colenbrander에게 양도된, 함께 계류중인 미국특허출원 제14/135,374호(발명의 명칭: "VIDEO LATENCY REDUCTION", 대리인 파일 번호: SCEA13037US00, 2013년 12월 19일 출원)에 관련되며, 그 전체 내용은 본원 발명에 포함된다.
기술분야
본 발명의 형태는 기억 장치 가시화에 관한 것이다. 본 발명의 추가적 형태는 임베디드 플랫폼용으로 설계된 클라우드 컴퓨팅 애플리케이션용의 스토리지 가상화에 관한 것이다.
전기통신 시스템의 대역폭 및 데이터 전송 속도가 계속 향상됨에 따라, 오늘날의 많은 컴퓨팅 수요는 흔히 "클라우드 컴퓨팅"이라 불리는 네트워크-기반 분산 컴퓨팅 시스템을 향해 이동하고 있다. 일반적으로 말해서, 클라우드 컴퓨팅은 하나 이상의 원격 컴퓨팅 리소스에 소정의 컴퓨팅 작업을 오프로드(offload)시키는 과정과, 원격 컴퓨팅 리소스를 이용하여 서비스를 원격 디바이스에 제공하는 과정을 수반한다. 클라우드 컴퓨팅은 클라이언트-서버 모델로 종종 구현되고, 원격 서버는 로컬 클라이언트 디바이스에 요망 컴퓨팅 기능을 제공하여, 로컬 클라이언트 디바이스가 자체적으로 소정의 컴퓨팅 작업을 수행할 필요가 없게 된다. 많은 예에서, 컴퓨팅 리소스는 서버에 완전히 또는 거의 완전하게 오프로드될 수 있고, 클라이언트는 클라이언트 컴퓨팅 작업을 위한 사용자 인터페이스에 불과할 뿐이며, 인터넷 연결되는 임의의 디바이스를 특정 애플리케이션을 위한 클라이언트로 작용하게 할 수 있다.
클라우드 컴퓨팅은 원격 데이터 스토리지 솔루션, 음악 및 비디오 스트리밍 서비스, 및 폭넓고 다양한 다른 소비자 및 비즈니스 해법을 포함한, 폭넓고 다양한 컴퓨팅 서비스에 채택되고 있다. 일반적으로, 클라우드 컴퓨팅은 공유 리소스 이용을 통한 효율성 증가, 특정 디바이스에 대한 제한없이 콘텐츠 액세스에서의 유연성 증가, 하드웨어 업그레이드가 가용해질 때 업프론트 비용 절감, 및 기타 장점들을 포함한, 여러가지 잘 알려진 이점들을 제공한다.
클라우드 컴퓨팅이 아직 폭넓은 채택을 얻기 위해 실현해야할 한가지 과제는 현재 인기 분야인 비디오 게임에 있다. 개인용 컴퓨터(PC) 게임, 홈 콘솔 게임, 핸드헬드 콘솔 게임, 등을 포함한 비디오 게임은 소비자들 간에 인기있는 엔터테인먼트 소스로 유지되고 있다. 가용 비디오 게임 타이틀의 컬렉션이 더 커지고 계속 증가하고 있으므로, 클라우드 게임은 많은 비디오 게임 수요에 대한 특히 매력적인 해법을 제공한다. 이상적인 경우에, 클라우드 게임 프레임웍 내에서, 사용자는 게임의 물리적 사본이 필요없이, 타이틀의 다운로드를 위해 기다릴 필요없이, 그리고, 게임 실행에 필요한 하드웨어 시스템 또는 리소스를 로컬 방식으로 처리할 필요없이, 원격 저장된 타이틀들의 방대한 컬렉션 가운데서 임의의 비디오 게임 타이틀에 순간적으로 액세스할 수 있을 것이다. 불행하게도, 전통적인 클라우드 컴퓨팅 서버 설계 내에서 이러한 타입의 서비스 구현은 많은 비디오 게임 플랫폼용 클라우드 게임의 폭넓은 채택을 지금껏 막아온 여러가지 기술적 문제점들을 제시한다.
한가지 문제점은 오늘날 비디오 게임 중 많은 게임들이 속도가 빠르고 액션이 많으며, 상당한 양의 컴퓨팅 리소스를 렌더링할 것을 요구하는 고급 그래픽을 가진다는 점이다. 모든 게임 연산 및 그래픽 렌더링 연산이 원격으로 수행되는, 특히 비디오 스트리밍 기반 서버 설계에서, 게임은 제어 입력에 응답하여 인지가능한 대기시간이 거의 또는 전혀 없이, 모든 이러한 작업을 수행하여 클라이언트 디바이스에 오디오/비디오 스트림을 전달할 필요가 있다. 그렇지 않을 경우, 이는 게임자의 타이밍을 파괴할 수 있고, 종래의 로컬-실행 게임 세션의 응답성을 복제하는데 실패할 수 있다.
다른 문제는, 한편으로, 개인용 컴퓨터, 랩탑, 및 범용 속성의 다른 컴퓨팅 시스템 상에서 구동되도록 설계된 PC 게임과, 다른 한편, 비디오 게임 콘솔로 알려진 전용 시스템 상에서 구동되도록 설계된 콘솔 게임 간에 종래부터 있던 차이점으로부터 나타난다. 비디오 게임 콘솔은 비디오 게임 환경용으로 특별히 적응되는 고유 컴퓨팅 구조를 가진 임베디드 플랫폼으로 설계되는 것이 일반적이다. 비디오 게임 플랫폼으로 전용 콘솔 하드웨어를 이용함으로써 여러 장점을 얻을 수 있고, 특히, 오늘날의 많은 비디오 게임의 생산에 요구되는 그래픽 렌더링 및 게임 연산의 높은 컴퓨팅 리소스 수요를 위한 하드웨어 최적화 형태에서 장점을 얻을 수 있다. 그 결과, PC 게임이 일부 인기를 얻고 있으나, 콘솔 게임은 종래부터 비디오 게임 시장을 장악해왔고, 차후에도 계속 그 자리를 유지할 수 있다.
그러나, 비디오 게임 콘솔 및 다른 임베디드 플랫폼을 클라우드 스트리밍 서비스에 적응시킬 때는 여러 문제점이 나타난다. 전용화된 플랫폼의 하드웨어 또는 소프트웨어 구조의 폭넓은 변형은 전용화된 플랫폼용으로 설계된 애플리케이션과의 호환성 문제를 제시할 수 있다. 그 결과, 종래의 스토리지 서버 및 스토리지 가상화 기술은 이러한 플랫폼들 중 상당수를 위해 설계된 애플리케이션의 클라우드 기반 스트리밍용으로 가능한 솔루션이 아니다.
이러한 범주에서 본 발명이 등장한다.
본 발명의 일 구현예는 제 1 통신 인터페이스, 제 2 통신 인터페이스, 상기 제 1 및 제 2 통신 인터페이스에 연결되는 전용화된 프로세싱 유닛을 포함한다. 제 1 통신 인터페이스는 대용량 스토리지 인터페이스다. 제 2 통신 인터페이스는 확장 인터페이스다. 전용화된 프로세싱 유닛은 상기 제 1 통신 인터페이스에 연결된 대용량 스토리지 디바이스 컨트롤러와, 상기 제 2 통신 인터페이스에 연결된 직접 메모리 액세스(DMA) 엔진을 가진다. 상기 대용량 스토리지 디바이스 컨트롤러는 상기 제 1 통신 인터페이스를 통해 대용량 스토리지 데이터 요청을 수신하도록 구성된다. 상기 DMA 엔진은 상기 제 2 통신 인터페이스를 통해 상기 대용량 스토리지 데이터 요청을 호스트 시스템에 통지하도록 구성된다.
본 발명의 다른 구현예는 중앙 프로세싱 유닛과, 상기 중앙 프로세싱 유닛에 연결되는 제 1 메모리 유닛과, 상기 제 1 메모리 유닛에 구비되어, 상기 중앙 프로세싱 유닛(CPU)에 의해 실행가능한 스토리지 프로세스와, 상기 제 1 통신 인터페이스에 연결되는 전용화된 프로세싱 유닛을 가진 시스템을 포함할 수 있다. 상기 제 1 통신 인터페이스는 대용량 스토리지 인터페이스다. 상기 전용화된 프로세싱 유닛은 상기 제 1 통신 인터페이스에 연결된 대용량 스토리지 디바이스 컨트롤러와, 상기 CPU에 연결된 메모리 액세스 인터페이스를 가진다. 상기 대용량 스토리지 디바이스 컨트롤러는 상기 제 1 통신 인터페이스를 통해 대용량 스토리지 데이터 요청을 수신하도록 구성된다. 상기 메모리 액세스 인터페이스는 상기 대용량 스토리지 데이터 요청을 상기 스토리지 프로세스에 알리도록 구성된다. 상기 스토리지 프로세스는 스토리지 시스템에 액세스함으로써 데이터 요청을 처리하도록 구성된다.
다른 구현예는 a) 대용량 스토리지 디바이스 컨트롤러에서 대용량 스토리지 데이터 요청을 제 1 컴퓨팅 디바이스로부터 수신하는 단계와, b) 상기 대용량 스토리지 디바이스 컨트롤러에 연결된 메모리 액세스 인터페이스를 이용하여, 상기 데이터 요청을 제 2 컴퓨팅 디바이스에 구비된 스토리지 프로세스에 알리는 단계와, c) 상기 제 2 컴퓨팅 디바이스의 스토리지 프로세스를 이용하여, 상기 데이터 요청에 대응하는 데이터를 가진 스토리지 시스템에 액세스하는 단계와, d) 상기 제 2 컴퓨팅 디바이스의 스토리지 프로세스를 이용하여, 제 1 메모리 유닛 상에 상기 데이터 요청에 대응하는 데이터를 저장하는 단계와, e) 상기 제 2 컴퓨팅 디바이스의 스토리지 프로세스를 이용하여, 데이터 요청을 완료하기 위해 상기 제 1 메모리 유닛으로부터 데이터에 액세스하도록 상기 대용량 스토리지 디바이스 컨트롤러를 프로그래밍하는 단계를 포함하는 방법을 포함할 수 있다.
본 발명의 가르침은 첨부 도면과 연계하여 다음의 상세한 설명을 고려함으로써 쉽게 이해될 수 있다:
도 1은 네트워크를 통한 일례의 스트리밍 기술의 개략도다.
도 2는 네트워크를 통한 다른 예의 스트리밍 기술의 개략도다.
도 3은 단말 시스템을 위한 스토리지 가상화를 제공하도록 인터페이스 카드를 가진 일례의 호스트 시스템의 개략도다.
도 4A-4B는 단말 시스템에 연결된 호스트 시스템의 일례의 컴퓨터 구조의 개략도다. 도 4A는 일례의 단말 시스템 구조의 개략도다. 도 4B는 일례의 호스트 시스템 및 인터페이스 카드 구조다.
도 5는 전용화된 프로세싱 유닛을 가진 일례의 인터페이스 카드의 개략도다.
도 6은 대용량 스토리지 디바이스의 일례의 에뮬레이션 방법의 개략도다.
다음의 상세한 설명은 설명 용도를 위한 많은 구체적 세부사항들을 제시하지만, 다음의 세부사항들에 대한 많은 변형예 및 변경이 발명의 범위 내에 있음을 당 업자라면 누구라도 이해할 수 있을 것이다. 따라서, 아래 설명되는 발명의 예시적 실시예는, 청구 발명에 대한 일반성 손실없이, 그리고, 청구 발명에 대한 제한 부여없이, 제시된다.
도입
본 발명의 형태들은 호스트 시스템에 연결된 인터페이스 카드 또는 다른 전용 하드웨어 유닛을 이용하여 대용량 스토리지를 가상화하기 위한 시스템 및 방법에 관한 것이다. 다양한 구현예에서, 인터페이스 디바이스 및 호스트 시스템은 단말 시스템에 대해 투명한 방식으로 다른 "단말" 컴퓨팅 시스템을 위한 대용량 스토리지 디바이스를 집합적으로 에뮬레이션할 수 있다. 더욱이, 다양한 구현예에서, 인터페이스 디바이스 및 호스트 시스템은 단말 시스템에 대해 투명한 방식으로 다른 "단말" 컴퓨팅 시스템을 위한 대용량 스토리지 디바이스를 집합적으로 에뮬레이션할 수 있다.
당 업자는 'virtual machine'(가상 기계) 소프트웨어, 가령, VMWare, VirtualBox 또는 Parallels와 친숙할 수 있고, 이들은 가령, 구형 운영 체제(가령, 윈도우즈 XP)의 '가상' 세션을 새 운영 체제(가령, 윈도우즈 7)의 세션 내에서 구동되게 할 수 있다. 가상 기계 소프트웨어는 호환성 이유로 소프트웨어적으로 디스크 드라이브, 네트워크 카드, 비디오 카드와 같은 물리적 하드웨어 구성요소를 시뮬레이션하는데 자주 사용된다. 본 발명의 형태들에 따르면, 소프트웨어 단독으로 행하는 것이 실질적으로 불가능한 상황에서 전용화된 하드웨어 및 소프트웨어가 대용량 스토리지 디바이스를 가상화할 수 있다.
구현 세부사항
본 발명의 다양한 형태를 더 잘 나타내기 위해, 분산 컴퓨팅 시스템(100)의 제 1 예시 예가 도 1에 도시된다. 도 1에 도시되는 분산 시스템(100)은 인터넷과 같은 네트워크(106)를 통해 연결되는 복수의 컴퓨팅 디바이스(102, 104)를 수반한다.
예시 분산 시스템에서, 스트리밍 서버(102)는 네트워크(106)를 통해 원격 연결된 클라이언트 디바이스(104)에 프로그램 출력의 실시간 스트림을 제공하기 위해 프로그램(108)을 실행한다. 도 1의 예시 개략도에서, 프로그램(104)은 클라이언트 디바이스(104)로부터 수신되는 제어 입력을 처리하는, 그리고, 프로그램(108)의 실행에 따라 클라이언트 디바이스(104)로부터 압축 오디오 및 비디오 스트림을 전송하는, 비디오 게임 프로그램일 수 있다. 클라이언트 측에 위치한 사용자는, 가령, 제어 입력을 제공함으로써 그리고 클라이언트 디바이스(104)에 연결된 디스플레이 및/또는 스피커에서 오디오 및 비디오 게임 출력을 수신함으로써, 클라이언트 디바이스(104)의 사용자 인터페이스를 통해 프로그램과 상호작용할 수 있다. 도 1의 예에서, 입력 처리, 비디오 게임 그래픽 렌더링, 등을 위한 연산 부하는 원격 실행을 위한 스트리밍 서버(102)에 완전히 오프로드될 수 있다.
도 1에 도시되는 시스템(100)을 이용하여 클라우드 게임을 구현하기 위해, 스트리밍 서버(102)는 게임 프로그램(108)을 실행할 뿐 아니라, 서버(102)에 포함된 "스트리밍 서버 프로세스"(110)를 또한 구현하도록 구성될 수 있고, 이는 네트워크(106)를 통해 클라이언트 디바이스(104)와 스트리밍 서버(102) 간의 통신을 위한 프로그램 입력/출력을 조율하기 위해 다양한 기능을 수행할 수 있다. 예를 들자면, 스트리밍 서버 프로세스(110)는 게임 소프트웨어(108)와 협력하여 스트리밍 서버(102) 상에서 구동되는 하나 이상의 애플리케이션에서 구체화될 수 있다. 스트리밍 서버 프로세스(110)와 함께 게임(108)의 원격 실행은 프로그램(108)이 로컬 방식으로 실행되고 있음을 클라이언트 측의 사용자가 인지하도록, 클라이언트 디바이스(104)에서 입력과 출력 간에 대기시간이 최소한이도록 또는 전혀 없도록 수행될 수 있다. 더욱이, 실행을 위해 원격 저장된 프로그램들의 폭넓은 컬렉션에 액세스할 수 있다. 예를 들어, 클라우드 게임 애플리케이션에서, 사용자는 관련 비디오 게임 플랫폼을 위해 설계된 임의의 게임을 선택할 수 있을 것이고, 원격 서버는 게임을 로딩하고, 실행하여, 사용자로부터 수신되는 입력에 따라 클라이언트 디바이스에 출력을 스트리밍할 것이고, 수신되는 입력과 오디오/비디오 출력 간의 대기시간은 인지할 수 없을 정도다.
도 1에 도시되는 예에서, 이는 스트리밍 서버(102)와 같이, 동일 컴퓨팅 디바이스에서 스트리밍 서버 프로세스(110) 및 게임 코드(108) 모두를 실행함으로써 실현될 수 있다. 스트리밍 서버는 적절한 연결을 통해, 로컬 연결된 대용량 스토리지 디바이스, 스토리지 서버, 네트워크, 등과 같은 임의의 스토리지 디바이스로부터 선택된 프로그램에 액세스할 수 있다. 클라우드 게임 및 다른 클라우드 컴퓨팅 구현예의 경우에, 이는 클라이언트(104)를 위한 서버(102)에서 실행되는 소프트웨어 애플리케이션(108)이 스트림라이너 서버(102)와 유사한 다른 컴퓨터 구조 또는 개인용 컴퓨터(PC) 구조를 구동하도록 설계되는 경우에 쉽게 구현될 수 있다. 예를 들자면, 그리고 제한사항으로서가 아니라, PC 클라우드 게임 구현의 경우에, 쉽게 가용한 x86 기반 서버를 이용하여, 스트리밍 서버 프로세스(110)를 구현할 뿐 아니라, 서버(102)에 의해 액세스되면 PC 게임 프로세스(108)를 또한 실행할 수 있다.
그러나, 도 1에 도시되는 예시적 기술(100)은 임베디드 플랫폼 및 다른 전용화된 구조 상에서 실행되도록 설계된 프로그램(108)을 가진 소정의 애플리케이션에서 적합하지 않을 수 있다. 예를 들어, 요망되는 프로그램이 전용 콘솔 플랫폼용으로 설계된 비디오 게임인 경우에, 게임 소프트웨어는 소정 유형의 에뮬레이터없이 서버 구조 상에서 구동되지 못할 수 있다. 불행하게도, 대기시간 최소화가 주요 관심사인 클라우드 컴퓨팅 환경에서, 스트리밍 서버 상에서 실행되는 소프트웨어 에뮬레이터는 바람직하지 못한 해법일 수 있고, 특히, 런타임시 에뮬레이터에 의한 코드 해석으로 인해 인지가능한 지연이 나타날 수 있는 그래픽 집약적 애플리케이션에서 그러하다. 더욱이, 많은 경우에, 클라우드 서비스가 요망되는 각각의 고유 구조에 대해 전용 서버를 구축하는 것이 실제적으로 불가능할 것이다. 다른 상황에서, 에뮬레이터는 요망 해법일 수 있으나, 적절한 에뮬레이터가 가용하지 않을 수 있다.
이러한 문제점들을 해결하기 위해, 프로그램의 실행을 위해 서버 측에 추가 컴퓨팅 디바이스를 이용하는 것이 바람직할 수 있고, 이 경우에 추가적인 컴퓨팅 디바이스가 요망 프로그램을 실행하고, 이에 연결된 스트리밍 서버가 클라이언트 디바이스와의 인터페이싱을 위해 통상의 기능을 수행한다. 이러한 기술을 이용하는 분산 시스템(200)의 예시적 예가 도 2에 도시되며, "단말 시스템"(212)이 스트리밍 서버(202)에 연결되고, 이러한 단말 시스템이 요망 애플리케이션(208)을 실행한다. 스트리밍 서버는, 단말 시스템이 이러한 기능들을 위해 충분히 자유로운 리소스를 갖지 못할 경우, 네트워크 스토리지 및 비디오 압축을 위한 리소스를 제공할 수 있다.
소정의 구현예에서, 단말 시스템(212)은 비디오 게임 콘솔과 같은 전용화된 구조를 가진, 임베디드 시스템 또는 다른 컴퓨팅 시스템일 수 있고, 스트리밍 서버(202)는 단말 시스템(212)과 유사 구조를 반드시 가질 필요는 없으나 스트리밍 서비스를 제공하도록 적응되는, x86 명령어 세트 구조와 같은, 임의의 컴퓨팅 구조에 기초할 수 있다. 스트리밍 서버(202)는 스트리밍 서버 프로세스(202)를 실행하도록 그리고 단말 시스템 프로그램(208)을 위한 일상의 클라우드 서비스를 제공하도록 구성될 수 있고, 서버 측의 컴퓨팅 디바이스, 가령, 스트리밍 서버(202) 및 단말 시스템(212)은 클라이언트 디바이스(204)용 비디오 게임 스트리밍 서비스를 제공하도록 집합적으로 작동할 수 있다.
도 2에 도시되는 단순화된 도면의 구조는 서로 다른 다양한 컴퓨팅 구조를 위해 설계된 서로 다른 다양한 소프트웨어 플랫폼에 쉽게 적응될 수 있는, 실용적이고 유연한, 서버 솔루션을 제공할 수 있다. 예를 들어, 임의의 스트리밍 서버(202)가, 소프트웨어를 구동하는 단말 시스템을 로컬 연결함으로써 서로 다른 다양한 컴퓨팅 구조를 위해 설계된 소프트웨어 애플리케션을 스트리밍하도록 적응될 수 있다.
그러나, 서버 측의 단말 시스템(212) 상에서 요망 소프트웨어를 실행함으로써, 클라우드 컴퓨팅 프레임웍 내에서 소정의 문제점이 나타날 수 있다. 예를 들어, 단말 시스템(212)은 도 1에 도시되는 예시 설정과 관련하여 앞서 설명된 프로세스와 유사하게, 서로 다른 다양한 프로그램 중에서 현재의 스트리밍 세션을 위해 임의의 선택된 프로그램을 실행할 수 있다. 마찬가지로, 단말 시스템(212) 상에서 구동되는 프로그램(208)에 의해 요구되는 스토리지 디바이스에 대한 다른 임의의 판독/기록은 단말 시스템에 의한 로컬 스토리지의 제약으로부터 자유로울 수 있다. 스토리지 데이터 요청은 SATA(serial Advanced Technology Attachment) 연결 또는 다른 대용량 스토리지 인터페이스와 같은, 단말 시스템(212) 내 로컬 대용량 스토리지 연결을 통해 통상적으로 실현된다. 스토리지 가상화 프로세스를 이용하여 추가의 컴퓨팅 리소스를 소모하거나 하드웨어 구조를 변경할 필요없이, 단말 시스템을 위한 가상화된 스토리지 솔루션을 제공하는 것이 바람직할 것이다.
클라우드 게임 환경의 범주에서 문제점을 더 잘 이해하기 위해, 다음의 예는 도 2의 서버 셋업이 특정 클라우드 게임 구현예에서 어떻게 이용될 수 있는 지를 도시한다. 구체적으로, 클라이언트 디바이스(204)에서 사용자는 게임 세션을 위한 "클라우드 단말 시스템"(212)에 할당될 수 있다. 사용자가 게임을 시작할 때, 사용자가 하고자하는 게임(208)이 클라우드 단말 시스템(212) 상에서 가용하여야 한다. 마찬가지로, 게임 세션이 끝나고 사용자가 나가면, 단말 시스템(212)은 다른 사용자에 의한 다음 세션을 위한 클린 상태로 복원되어야 하고, 이는 다른 게임을 수반할 수 있다.
불행하게도, 단말 시스템(212) 내에서 스토리지 가상화 소프트웨어를 이용하여 이러한 방식으로 게임 스토리지를 가상화할 경우, 가치있는 연산 리소스(가령, CPU 및 메모리)가 소모될 수 있고, 게임과의 호환성 문제가 나타날 수 있다. 더욱이, 고급 그래픽 및 기타 리소스 집약 작업을 포함하는 현대의 많은 비디오 게임과 같이, 높은 연산 부하를 수반하는 애플리케이션에서, 스토리지 가상화를 위한 단말 시스템으로부터 추가 리소스 소모는 생존가능한 솔루션이 아닐 수 있다.
본 발명의 다양한 구현예에 따라 스토리지 가상화 기술의 예시적 예가 도 3에 도시된다. 도 3의 예시 가상화 기술에서, 대용량 스토리지 디바이스가 하드웨어의 전용화된 부분을 가진 "호스트 시스템"을 이용하여 에뮬레이션되어, 대용량 스토리지 디바이스가 이에 연결된 단말 시스템을 위해 에뮬레이션될 수 있다. 도 3의 예시 기술은 도 2에 도시된 것과 유사한 클라우드 스트리밍 애플리케이션에서 구현될 수 있고, 단말 시스템은 요망되는 애플리케이션을 구동하는 전용화된 시스템일 수 있고, 대용량 스토리지 디바이스 에뮬레이션을 위한 호스트 시스템은 스트리밍 서버다. 그러나, 여기서의 원리에 따른 스토리지 가상화는 예를 들어, 게임 스트리밍 범위를 넘는 클라우드 컴퓨팅 애플리케이션, 컴퓨팅 디바이스를 위한 스토리지 가상화가 요망되는 로컬 구현예, 특히, 컴퓨팅 디바이스의 변형없이 요망되는 로컬 구현예에서 구현될 수 있다.
더 세부적으로 도 3의 예를 살펴보면, 가상화 스토리지가 본 경우에 스트리밍 서버인, 인터페이스 디바이스를 위한 호스트 시스템(302)에 연결된 전용화된 인터페이스 디바이스(320)를 이용하여 단말 시스템(312)를 위해 가상화된 스토리지가 제공된다. 호스트 시스템(302)에서 구체화되는 스토리지 프로세스(322)와 함께 인터페이스 디바이스(320)는 단말 시스템(312)으로부터 수신되는 다양한 대용량 스토리지 디바이스 데이터 요청을 수행할 수 있다.
도 3에 도시되는 예에서, 인터페이스 디바이스(320)는 단말 시스템에 실제 대용량 스토리지 디바이스처럼 보이는 한 조각의 하드웨어일 수 있으나, 후드 아래에서, 그 데이터는 스토리지 서버(도시되지 않음)로부터 올 수 있다. 통상의 대용량 스토리지 디바이스는 일반적으로, SATA 연결 또는 다른 표준 대용량 스토리지 인터페이스를 이용한다. 대용량 스토리지 디바이스를 에뮬레이션하고 데이터 요청을 수신하기 위해, 도 3의 인터페이스 디바이스(320)는 전용화된 프로세싱 유닛, 메모리, 및 다른 구성요소들과 같은 추가의 구성요소들과 함께, 단말 시스템의 대용량 스토리지 통신 인터페이스와 호환되는, 유사한 SATA 연결 또는 다른 대용량 스토리지 통신 인터페이스를 포함할 수 있다.
다양한 구현예에서, 스트리밍 서버 또는 다른 "호스트" 시스템과 같은, 컴퓨팅 시스템 내로 스토리지 가상화 기능을 손쉽게 통합시키기 위해, 인터페이스 디바이스(320)는 호스트 시스템의 팽창 인터페이스를 통해 호스트 시스템(302)에 연결될 수 있는, PCI-익스프레스 애드-온 카드(PCI-Express add-on card)와 같은, 확장 카드로 구현될 수 있다. 작동 중, 인터페이스 카드는 대용량 스토리지 연결을 통해(가령, SATA 포트를 통해) 단말 시스템으로부터 디스크 판독 및/또는 기록 요청을 수신할 수 있다. 이러한 데이터 액세스 요청은 호스트 시스템(302) 상에 스토리지 애플리케이션(322)에 의해 궁극적으로 처리될 수 있고, 스토리지 애플리케이션은 파일, 스토리지 서버, 또는 그외 다른 것들로부터 데이터에 액세스할 수 있다.
스토리지 가상화 기능을 위해 꼭 필요한 것은 아니지만, 인터페이스 디바이스(320)는 클라우드 스트리밍 범주에서 특히 유용할 수 있는 다른 기능을 제공하기 위해 추가 구성요소들을 선택적으로 또한 포함할 수 있다. 예를 들어, 호스트 시스템에서 스트리밍 기능을 지원하기 위해, 인터페이스 디바이스(320)는 오디오 및/또는 비디오 데이터 전송을 위한, 그리고, 클라우드 게임 및/또는 다른 클라우드 컴퓨팅 구현예를 지원하기 위해 호스트 시스템(302)의 스트리밍 프로세스를 통해 오디오/비디오(A/V) 스트리밍을 지원하기 위한 대응 기능들을 위한, 하나 이상의 추가 인터페이스를 선택적으로 포함할 수 있다. 인터페이스 디바이스(320)의 선택적인 A/V 인터페이스는 단말 시스템(312)과 호환될 수 있고, HDMI, 컴포지트 비디오, 컴포넌트 비디오, S-비디오, 또는 다른 A/V 통신 인터페이스와 같은, 다양한 A/V 표준에 따라 구성될 수 있다.
도 4A 및 4B는 본 발명의 다양한 구현예에 따라 소정의 컴퓨팅 디바이스 및 인터페이스 디바이스의 예시적 하드웨어/소프트웨어 구조의 더 상세한 개관을 제공한다. 도 4A는 본 발명의 다양한 형태에 따른 예시 단말 시스템의 컴퓨팅 구조를 도시한다. 도 4B는 본 발명의 다양한 구현예에 따른 예시 인터페이스 디바이스의 예시 호스트 시스템을 위한 컴퓨팅 구조를 도시한다. 일부 구현예에서, 단말 시스템은 전용화된 구조를 가진 기존 임베디드 시스템, 비디오 게임 콘솔, 또는 다른 컴퓨팅 디바이스일 수 있다. 일부 구현예에서, 호스트 시스템은 가령, 도 2에 도시된, 클라이언트 디바이스에 단말 시스템 상에서 구동되는 애플리케이션을 스트리밍하도록 구성되는 스트리밍 서버일 수 있다.
예시 단말 시스템(412)은 대용량 스토리지 호스트 컨트롤러(424)(호스트 어댑터 또는 호스트 버스 어댑터라고도 알려짐)를 포함할 수 있고, 이는 가령, SATA 호스트 컨트롤러(AHCI), USB 호스트 컨트롤러, 또는 다른 대용량 스토리지 통신 인터페이스 표준을 위한 호스트 컨트롤러일 수 있다. 단말 시스템(412)은 스토리지 디바이스 인터페이스를 통한 통신을 촉진시키도록 대용량 스토리지 디바이스 호스트 컨트롤러(424)와 호환되는 대응하는 대용량 스토리지 디바이스 드라이버(426)를 또한 포함할 수 있다. 대용량 스토리지 디바이스에 연결하기 위해, 통상적으로 호스트 컨트롤러(424)는 (단말 시스템의 대용량 스토리지 디바이스에 따라 SATA 케이블, USB 케이블, 또는 기타 커넥터와 같은) 대응하는 커넥터를 이용하여 대용량 스토리지 디바이스에 연결될 수 있다. 구체적으로, 호스트 컨트롤러(424)는 연결된 특정 대용량 스토리지 디바이스의 (대용량 스토리지 디바이스가 고상 드라이브, 또는, 반드시 디스크를 이용할 필요는 없는 다른 스토리지 디바이스일 수 있으나, 종종 "디스크 컨트롤러"로 알려진) 대용량 스토리지 디바이스 컨트롤러에 연결될 것이다. 도 4A-4B에 도시되는 예에서, 호스트 컨트롤러(424)는 대신에, 호스트 시스템(402)과 함께, 단말 시스템(412)의 대용량 스토리지 디바이스를 에뮬레이션하는, 인터페이스(420)에 연결된다.
인터페이스 디바이스(420)는 단말 시스템(412)에 의해 사용되는 스토리지 통신 인터페이스와 호환되는 대용량 스토리지 디바이스 연결을 위한 통신 인터페이스를 포함할 수 있다. 인터페이스 디바이스의 통신 인터페이스는 하나 이상의 SATA 포트, USB 포트, 또는 다른 호환가능한 대용량 스토리지 인터페이스 하드웨어와 같은, 하나 이상의 대용량 스토리지 포트(414)를 포함할 수 있다. 인터페이스 디바이스(402)는 대용량 스토리지 하드웨어 인터페이스에 연결되는 전용화된 프로세싱 유닛을 포함할 수 있고, 상기 전용화된 프로세싱 유닛은 대용량 스토리지 디바이스 에뮬레이션과 연관된 기능과, 선택적으로, 단말 시스템(402)으로부터 스토리지 커넥터를 통해 수신되는 신호에 대한 기타 기능들을 수행하기 위해 전용화된 로직(428)을 갖는다. 로직(428)은 호스트 시스템에서 구체화되는 스토리지 프로세스와 인터페이싱을 위해, 호스트 시스템(402)의 주변 버스와 통신할 수 있는 추가적인 통신 인터페이스를 통해 호스트 시스템(402)을 통해 호스트 시스템(402)과의 통신을 또한 지원할 수 있다. 예를 들자면, 제한없이, 인터페이스 디바이스(420)는 가령, 주변 버스를 통해, PCI(peripheral component interconnect), PCI-X(PCI-eXtended), PCI-e(PCI-Express) 또는 호스트 시스템(402)과의 통신을 돕는 다른 인터페이스와 같은 확장 인터페이스를 통해 호스트 시스템(402) 프로세스 버스와 통신하는 애드-온 카드일 수 있다. 호스트 시스템은 인터페이스 디바이스(420)를 통해 신호의 교환을 지원하기 위해 인터페이스 디바이스 드라이버(426)를 포함할 수 있다.
소정의 구현예에서, 전용화된 프로세싱 유닛은 필드 프로그래머블 게이트 어레이(FPGA), 애플리케이션 전용 집적 회로(ASIC), 또는 여기서 설명되는 원리에 따라 구성되는 전용 로직 유닛을 가진 다른 전용화된 프로세싱 유닛일 수 있다. 전용화된 프로세싱 유닛의 로직 유닛(428)은 클라우드 게임을 수반하는 구현예에서 호스트 시스템(402)에 의해 네트워크를 통해 A/V 출력의 스트리밍을 촉진시킬 수 있도록 단말 시스템(402) 상에서 구동되는 애플리케이션(408)으로부터 출력의 오디오/비디오 캡처와 같이, 스토리지 가상화에 추가하여 클라우드 스트리밍을 위한 다양한 기능을 지원하기 위한 전용 로직을 또한 포함할 수 있다. 인터페이스 카드(402)는 대응 A/V 커넥터를 통해 단말 시스템 상에서 구동되는 애플리케이션의 A/V 출력을 수신하기 위해 호환형 A/V 수신기(430)와, 하나 이상의 HDMI 포트 또는 다른 A/V 포트와 같은, A/V 통신 인터페이스를 포함할 수 있다.
도 4A-4B에 설명되는 예에서, 전용화된 프로세싱 유닛의 로직(428)에 포함된 대용량 스토리지 디바이스 컨트롤러는 호스트 시스템(402) 내 인터페이스 디바이스 드라이버(426)에 의해 제어되고, 중앙 프로세싱 유닛(404) 상에서 구동되는 소프트웨어 애플리케이션과 같은, 호스트 시스템(402)에서 구체화되는 스토리지 프로세스(432)는 인터페이스 디바이스 드라이버(426)를 위한 데이터 전송 서비스를 제공할 수 있다. 예를 들어, 단말 시스템(412)이 대용량 스토리지 커넥터를 통해 연결되는 디스크 드라이브 또는 다른 대용량 스토리지 디바이스로부터 데이터 판독을 요청할 경우, 이 요청은 대용량 스토리지 호스트 컨트롤러(424), 로직(428)에 포함된 대용량 스토리지 디바이스 컨트롤러, 인터페이스 디바이스 드라이버(426)를 호스트 시스템에 구체화된 스토리지 프로세스(432)에 전달할 수 있다. 그 후, 스토리지 프로세스(432)는 다양한 소스로부터 얻을 수 있는 데이터를 불러들일 수 있다. 예를 들어, 스토리지 프로세스(432)는 호스트 기계에 국부적으로 연결된 디스크 드라이브 또는 다른 대용량 스토리지 디바이스로부터 데이터를 불러들일 수 있고, 또는, 네트워크를 통해 스토리지 서버 또는 메모리 디바이스로부터 불러들일 수 있다. 스토리지 프로세스가 어떤 방법을 이용하는 지는 단말 시스템(402)에 투명하게 드러난다.
소정의 구현예에서, 호스트 시스템(402)은 선택적으로, 단말 시스템(412) 상에서 구동되는 애플리케이션(408)으로부터의 출력 스트림을 네트워크를 통해 송신하도록 적응되는 스트리밍 서버일 수 있다. 예를 들어, 호스트 시스템(402)은 A/V 프로세스(434)를 포함할 수 있고, 이는 호스트 시스템(402) 상에서 구동되는 애플리케이션일 수 있다. A/V 캡처 프로세스는 인터페이스 카드(420)에 연결된 A/V 커넥터를 통해 전송되는 A/V 스트림을 캡처하기 위해 전용화된 프로세싱 유닛 내 전용 로직(428)과 협력할 수 있다. 스트리밍 서버(402)는 이더넷 어댑터 도는 다른 네트워크 어댑터(436)와, 대응하는 이더넷 드라이버 또는 호스트(402)의 운영 체제를 위한 다른 네트워크 드라이버(438)를 포함할 수 있고, 호환가능한 네트워크 라이브러리(439)는 네트워크 통신을 위한 프로토콜 지원을 제공한다. 호스트 시스템은 대응하는 메모리 드라이버(442)(가령, tmpfs)에 의해 제어되는, 그리고, 파일 시스템 라이브러리(444)에 의해 지원되는, 시스템 메모리(440)를 또한 포함할 수 있다. 스트리밍 서버 프로세스(446)는 (도 4A-4B에 도시되지 않는) 네트워크를 통해 연결되는 클라이언트 디바이스에 실시간 스트림을 제공하는 것과 연관된 기능들을 수행하도록 호스트 시스템(402) 상에서 구동될 수 있다.
일부 상황에서, 데이터 스토리지는 (도 4A에 파선으로 도시되는) 원격 스토리지 서버(448), 메모리(440), 및 메모리 드라이버(442)의 조합을 이용하여 구현될 수 있다. 예를 들자면, 그리고 제한없이, 일부 구현예에서, 데이터는 메모리 드라이버(442)에 의해서만 메모리(440)에 기록될 수 있고 스토리지 서버(448)에 의해서만 판독될 수 있다.
단말 시스템(412)은 애플리케이션(408)을 지원하기 위해 다양한 다른 구성요소들을 포함할 수 있고, 이러한 애플리케이션은 가령, 기존 임베디드 플랫폼을 위해 설계된 비디오 게임 소프트웨어일 수 있다. 단말 시스템(412)은 애플리케이션(408)용 그래픽 렌더링을 지원하기 위해 다양한 구성요소들과, 스토리지에 액세스하기 위해 파일 시스템 계층(427)을 포함할 수 있다. 중앙 프로세싱 유닛(CPU)에 추가하여, 단말 시스템(412)은 그래픽 프로세싱 유닛(GPU)(450)을 포함할 수 있고, 이러한 그래픽 프로세싱 유닛은 그래픽 드라이버(452)에 의해 작동될 수 있고 그래픽 라이브러리(454)에 의해 지원될 수 있다. HDMI 송신기와 같은 A/V 송신기(456)는 호환형 A/V 커넥터를 통해 호스트 시스템 내 호스트 인터페이스 디바이스에 애플리케이션 오디오 및/또는 비디오 출력을 전송하기 위해 포함될 수 있다.
이제, 도 5를 참조하면, 인터페이스 카드(420) 상에 구현될 수 있는 일례의 인터페이스 디바이스(520), 그 위의 일부 구성요소, 및 예시 전용화 프로세싱 유닛(560)의 내부 모습의 개략도가 발명의 다양한 구현예에 따라 도시된다. 예를 들자면, 그리고 제한없이, 인터페이스 디바이스(520)는 인쇄 회로 보드(PCB)에 부착된 구성요소들을 가진 애드-온 카드로 구성될 수 있고, 인터페이스 카드(520)는 연결될 때 호스트 시스템의 주변 버스를 통해 통신할 수 있는 주변 확장 포트 또는 다른 확장 통신 인터페이스와 같이, 호스트 하드웨어 인터페이스(562)를 통해 호스트 시스템의 주변 버스와 인터페이싱될 수 있다.
예시의 전용화된 프로세싱 유닛(560)은 본 발명의 다양한 형태에 따라 전용 기능으로 전용화된 다양한 로직 블록들을 포함할 수 있다. 전용화된 프로세싱 유닛은, 가령, FPGA, ASIC, 또는 전용화된 유사 프로세싱 유닛으로 구현될 수 있다. 전용화된 프로세싱 유닛(560)은 인터페이스 디바이스(560)를 위한 (도 5에 도시되지 않는) 호스트 시스템의 주변 버스와 인터페이스 카드(520) 사이의 통신 인터페이스를 위한 프로토콜 스택의 일부분을 구현하는 호스트 인터페이스 블록(564)을 포함할 수 있다.
PCI-익스프레스와 같은 통신 버스는 여러 계층들을 가진 프로토콜 스택으로 간주될 수 있다. 서로 다른 통신 프로토콜들이 서로 다른 계층을 가진다. 통상적으로, 위에 "애플리케이션 계층"이 있고, 중간에 일부 전송 관련 계층이 있으며, 아래에 소정의 물리 계층이 존재한다. 호스트 인터페이스 블록(564)은 이러한 프로토콜 스택의 모든 계층을 구현할 필요가 없다. 대신에, 호스트 인터페이스 블록은, 가령, 전기 또는 광학 신호를 통해, 통신 링크 상에 디지털 정보를 배치할 책임이 있는 물리 계층을 취급할 수 있다. 호스트 인터페이스 블록은 프로토콜 스택의 모든 "전송 계층"을 또는 그 일부분을 또한 담당할 수 있으며, 애플리케이션 계층을 담당할 필요는 없다.
예를 들자면, 그리고 제한없이, 호스트 인터페이스 블록(564)은 호스트 시스템의 로컬 버스에 액세스하기 위한 인터페이스 또는 PCIe 인터페이스를 위한 프로토콜 스택을 임베딩하는, PCI-인터페이스 연결을 통한 통신을 위한 하드 PCIe 블록일 수 있다. 호스트 인터페이스 블록(564)은 메모리 액세스 인터페이스 유닛(566)에 통합될 수 있고, 상기 메모리 액세스 인터페이스 유닛은 전용화된 프로세싱 유닛(560)의 기타 로직 유닛과 함께, 가령, 호스트 시스템의 요청 중단을 이용하여, 호스트 하드웨어 인터페이스(562)를 통해 호스트 시스템의 시스템 메모리에 직접 액세스할 수 있다.
일부 구현예에서, 메모리 액세스 인터페이스(566)는 메모리 액세스 및 인터럽트 기능을 제공하는 구성요소들을 포함할 수 있다. 특히, 호스트 인터페이스 블록(564)은 메모리 매핑된 입력/출력(I/O)을 이용하여 임의의 온-칩 디바이스를 호스트 시스템으로부터 액세스가능하게 하는 방식으로 호스트 하드웨어 인터페이스(562)와 온-칩-인터커넥트(572) 간에 연결을 제공하도록 구성될 수 있다. 이 기능은 대용량 스토리지 컨트롤러(570), 메모리 컨트롤러(576), 또는 GPIO(582)와 같은 온-칩 인터커넥트(572)에 연결되는 임의의 디바이스를 호스트 시스템으로 하여금 프로그래밍하게 할 수 있다.
메모리 액세스 인터페이스(566)는 임의의 연결된 디바이스, 가령, 대용량 스토리지 컨트롤러(570)로 하여금, 이벤트에 대한 인터럽트(가령, 대용량 스토리지 판독 요청 도달)를 발생시키게 하는 인터럽트 연결(565)을 또한 포함할 수 있다. 호스트 하드웨어 인터페이스 하드웨어(562)와 인터페이싱을 위한 단 하나의 디바이스가 존재하는 경우에 메모리 액세스 인터페이스가 이 기능을 제공하는 것이 바람직할 수 있다.
메모리 액세스 인터페이스(566)는 (선택적으로) 직접 메모리 액세스(DMA) 엔진(567)을 또한 포함할 수 있다. 여기서 사용되듯이, 그리고 당 업자에 의해 일반적으로 이해되듯이, 직접 메모리 액세스(DMA)라는 용어는 컴퓨터 내의 소정의 하드웨어 서브시스템으로 하여금 컴퓨터의 중앙 프로세싱 유닛(CPU)에 독립적으로 시스템 메모리에 액세스할 수 있게 하는 특징을 의미한다. DMA 엔진(567)은 호스트 인터페이스 블록(564) 및 호스트 하드웨어 인터페이스(562) 사이에서 데이터 이동 작동을 구현할 수 있다. 일부 구현예에서, 메모리 액세스 인터페이스 유닛(566)은 온-칩-인터커넥트(572)에 호스트 인터페이스 블록(564)을 연결하는 것과 같이, 호스트 인터페이스 블록(564)에 의해 제공되지 않는 프로토콜 스택(가령, PCI 익스프레스)의 일부분을 구현할 수 있다.
대용량 스토리지 디바이스 가상화를 위한 기능 용도로, 인터페이스 디바이스(520)는 하나 이상의 대용량 스토리지 디바이스 통신 인터페이스(568)를 포함할 수 있고, 하나 이상의 SATA 포트(569) 및/또는 커넥터, 또는 인터페이스 디바이스(520)의 회로 보드에 부착될 수 있는, 다른 대용량 스토리지 디바이스 통신 인터페이스를 포함할 수 있다. 예를 들자면, 그리고 제한없이, 인터페이스 카드(520)는 2개의 단말 시스템에 대한 연결을 돕기 위해 2개의 SATA 포트를 지닐 수 있으나, 대안으로서, 단일 인터페이스 디바이스(520)가 서로 다른 개수의 단말 시스템에 서비스할 수 있도록 인터페이스 디바이스가 다른 개수의 대용량 스토리지 디바이스 커넥터를 지닐 수 있다. 대용량 스토리지 디바이스 커넥터(568)의 각각의 경우에, 특히 대용량 스토리지 통신 인터페이스(가령, SATA)와 호환되는 전용화된 프로세싱 유닛(560)에서 구체화되는 대응하는 대용량 스토리지 디바이스 컨트롤러(570)가 존재할 수 있다.
하나 이상의 대용량 스토리지 디바이스 컨트롤러(570)는 온-칩 인터커넥트(572)를 통해 전용화된 프로세싱 유닛(560)의 다른 로직 유닛에 연결될 수 있고, 이는 호스트 시스템 인터페이스 구성요소(가령, PCI-익스프레스)에 대한 액세스를 각각의 대용량 스토리지 디바이스 컨트롤러(572)에 제공할 수 있다. 온-칩 인터커넥트는 전용화된 프로세싱 유닛(가령, FPGA 또는 ASIC) 상의 기능 블록들을 연결하도록 구성된 표준 온-칩 버스 구조로 구성될 수 있다. 예를 들어, 전용화된 프로세싱 유닛(560)이 FPGA일 경우, 전용화된 프로세싱 유닛의 구성요소들이 마스터-슬레이브 구조, 가령, 어드밴스트 마이크로컨트롤러 버스 아키텍처(AMBA), 가령, AXI4 또는 AXI-4-라이트, 또는 다른 적절한 온-칩 버스 구조를 이용하여 상호연결될 수 있다. AXI4는 큰 데이터 전송에 사용될 수 있고, AXI-Lite는 저성능 연결용으로 또는 컨피규레이션 용도로 사용될 수 있다. 전용화된 프로세싱 유닛 로직 블록의 온-칩 상호연결은 도 5에 도시되는 마스터-슬레이브 유형 구조에 따라 구성될 수 있다. 예시되는 그림에서, "M" 및 대응하는 실선은 마스터 연결을 나타내고, 대응하는 점선은 슬레이브 연결을 나타내며, "Ctrl"은 제어를 나타낸다.
인터페이스 디바이스(520)는 전용화된 프로세싱 유닛(560)의 로직에 제공되는 메모리 컨트롤러(576)에 의해 제어될 수 있는 하나 이상의 메모리 유닛(574)을 포함할 수 있다. 메모리 유닛은 단말 시스템에 의해 발급되는 데이터 요청에 따라, 호스트 하드웨어 인터페이스(562)를 통해 연결되는 호스트 시스템과 대용량 스토리지 인터페이스(568)를 통해 연결되는 단말 시스템 간에 데이터 전송을 지원할 수 있다. 예를 들어, 메모리 유닛(574)은 여기서 설명되는 원리에 따라, 단말 시스템에 의해 발급되는 판독 요청에 의해 요청되는 데이터를 일시적으로 저장하도록 구성되는 휘발성 메모리 유닛, 또는, DDR3 RAM과 같은 임시 RAM 유닛일 수 있다. 메모리 컨트롤러(576)는 전용화된 프로세싱 유닛(560)의 다른 로직 유닛으로부터 수신되는 신호에 따라 메모리 판독/기록 작동을 수행하도록 온 칩 버스 구조(572)에 연결될 수 있다.
작동 중, 스토리지 인터페이스(560)를 통해 연결되는 컴퓨팅 디바이스(도 5에 도시되지 않음)의 대용량 스토리지 호스트 컨트롤러는 기록, 판독, 및 기타 작동의 수행을 대용량 스토리지 디바이스 컨트롤러(570)에 요청할 수 있다. 이러한 요청 수신시, 대용량 스토리지 디바이스 컨트롤러(570)는 호스트 하드웨어 인터페이스(562), 가령, PCI-익스프레스를 통해, 요청의 인터럽트를 이용하여 (도 5에 도시되지 않는) 호스트 시스템 상의 인터페이스 디바이스 드라이버 및 스토리지 프로세스에 알릴 수 있다. 그 후, 호스트 시스템 상의 소프트웨어 구성요소들은 요청 취급에 관한 결정을 행할 수 있다.
예를 들어, 단말 시스템으로부터 판독 요청의 경우에, (도시되지 않는) 호스트 시스템의 스토리지 애플리케이션은 일부 스토리지 소스로부터 이 데이터를 불러올 수 있고, 이를 호스트 하드웨어 인터페이스(562)를 거쳐 인터페이스 디바이스 메모리 유닛(574)에 저장할 수 있다. 완료되면, 호스트 시스템 상의 스토리지 애플리케이션은 인터페이스 디바이스 메모리(574)로부터 판독함으로써 판독 요청을 완료하도록 전용화된 프로세싱 유닛(560) 상의 대용량 스토리지 디바이스 컨트롤러(570)를 프로그래밍할 수 있다. 예를 들자면, 그리고 제한없이, 대용량 스토리지 호스트 컨트롤러(424)가 SATA 컨트롤러일 수 있음을 가정한다. SATA 트랜잭션(판독/기록 및 기타 존재)의 경우에, 스트리밍 서버(402) 상에서 대용량 스토리지 호스트 컨트롤러(424)는 인터럽트를 일으킨다. 스트리밍 서버(402) 상의 대용량 스토리지 호스트 드라이버(426)는 대용량 스토리지 호스트 컨트롤러(424)의 상태를 점검한다. 요청이 "기록 요청"으로 결정되면, 그 후 대용량 스토리지 호스트 컨트롤러(424)는 인터페이스 디바이스(520) 상에서 메모리(574)(가령, DDR3 메모리)에 데이터를 기록하도록 프로그래밍된다. 대용량 스토리지 호스트 컨트롤러(424)는 이 용도로 자체 빌트-인 DMA 엔진(567)을 가질 수 있다. 데이터가 메모리(574)에 기록될 때 다른 인터럽트가 나타난다. 그 후 대용량 스토리지 호스트 드라이버(426)가 메모리(574)로부터 호스트 시스템 메모리(440)로 복사를 위해 DMA 엔진(567)을 이용하여 DMA 요청을 발급한다.
호스트 시스템 메모리(440) 내 버퍼는 스토리지 프로세스와 직접 공유될 수 있다. 호스트 시스템 메모리(440)에 대한 DMA 거래가 종료될 때, 스토리지 프로세스는 기록 요청을 통지받게 되고, 기록 트랜잭션을 종료할 것이다. 이는 데이터를 디스크에, 네트워크 스토리지 디바이스에, 또는, 데이터를 저장하고자 하는 임의의 장소에, 기록할 수 있다.
인터페이스 디바이스(520) 상의 메모리(574)가 판독 또는 기록 작동에 필요하지 않을 수 있다. 대용량 호스트 스토리지 컨트롤러(424)가 호스트 시스템 메모리(440)에 직접 기록하는 것이 가능하다. 예를 들어, 메모리 액세스 인터페이스 유닛(566)은 PCI-익스프레스를 AXI4에, 그리고 또한 AXI4를 PCI-익스프레스에 매핑할 수 있다. 이 특징은 임의의 AXI4 마스터 디바이스로 하여금 호스트 시스템 메모리에 기록을 할 수 있게 한다.
인터페이스 디바이스는 클라우드 게임 스트리밍과 같이, 단말 시스템 상에서 구동되는 애플리케이션의 스트리밍을 위한 추가 기능을 제공하는 다양한 다른 구성요소들을 선택적으로 포함할 수 있다. 예를 들어, 전용화된 프로세싱 유닛(560)은 하나 이상의 단말 시스템으로부터 A/V 스트림을 캡처하기 위해 하나 이상의 오디오 및/또는 비디오 캡처 블록(578)을 또한 포함할 수 있다. 하나 이상의 A/V 캡처 로직 유닛(578) 각각은 대응하는 A/V 수신기(530)에 연결될 수 있고, 각각의 수신기는 다시 적절한 A/V 하드웨어 인터페이스(580), 가령, 도 5에 도시되는 것과 같은 A/V 연결 포트 또는 HDMI 포트에 연결될 수 있다. 단말 시스템으로부터 A/V 출력은 호환형 A/V 커넥터를 이용하여 A/V 인터페이스(580)를 통해 A/V 수신기(530)에 연결될 수 있다. A/V 캡처 유닛(578)은 호스트 시스템 버스(가령, 주변 버스)에 연결될 수 있는 호스트 하드웨어 인터페이스(562)를 통해 호스트 시스템 상에서 인터페이스 디바이스 드라이버 및 A/V 프로세스와 통신할 수 있고, 호스트 시스템은 네트워크를 통해 클라이언트 디바이스에 A/V 스트림을 전달할 수 있다.
인터페이스 디바이스(582)는 추가 기능을 지원하기 위해 하나 이상의 범용 입력/출력(GPIO) 블록을 또한 포함할 수 있다. 예를 들자면, 그리고 제한없이, 각각의 GPIO 블록은 단말 시스템의 전력 제어 및 기타 기능과 같이, 추가 기능을 제공하기 위해 단말 시스템들 중 대응부에 연결될 수 있다.
앞서 언급한 바와 같이, 전용화된 프로세싱 유닛(560)은 가령, 본 발명의 다양한 형태에 따라, 대용량 스토리지 디바이스 컨트롤러, 메모리 컨트롤러, DMA 엔진, 등과 같이, 소정의 기능 전용의 블록을 가진 집적 회로, FPGA, ASIC로 구현될 수 있다. 본 발명의 소정의 구현예에서, 이러한 유닛들 중 하나 이상은 IP 블록 또는 IP 코어로 당 분야에서 흔히 오칭되는 로직 또는 기타 칩 디자인의 재사용가능 유닛으로 제공될 수 있다.
도 6은 본 발명의 다양한 형태에 따라 단말 시스템(612)을 위한 대용량 스토리지 디바이스를 에뮬레이션하기 위한 예시 순서도를 도시한다. 도 6에 도시되는 예에서, 서로 연결되는 인터페이스 디바이스(620) 및 호스트 시스템(602)은 단말 시스템(612)을 위한 대용량 스토리지 디바이스를 에뮬레이션하도록 구성된다. 도 6의 예시적 예가 설명 용도로 단말 시스템에 의해 발급되는 판독 요청의 에뮬레이션을 묘사하고 있으나, 본 발명의 구현예는 도시되는 구성요소를 이용하여 단말 시스템에 의해 발급되는 기록 요청 및 기타 대용량 스토리지 데이터 요청을 완료하도록 구성될 수 있다.
도 6에 도시되는 바와 같이, (도시되지 않는) 다양한 애플리케이션을 구동하도록 구성되는 메모리 유닛(682) 및 중앙 프로세싱 유닛(CPU)(681)을 가질 수 있는, 단말 시스템(612) 또는 다른 컴퓨팅 시스템을 위해 에뮬레이션될 수 있다. 단말 시스템(612)은 대용량 스토리지 디바이스 컨트롤러(624)를 이용하여 대용량 스토리지 디바이스 커넥터를 통해 다양한 판독, 기록, 및 기타 데이터 요청을 행할 수 있다. 통상적으로, 이러한 요청들은 대응하는 디바이스 컨트롤러를 가진 로컬 대용량 스토리지 디바이스에 의해 완료될 것이다. 도 6의 예에서, 이러한 데이터 요청은 다양한 데이터 요청을 처리하기 위해 일부 다른 스토리지 소스(699)에 액세스할 수 있는, 호스트 컴퓨터 시스템(602)과 통신하는 인터페이스 디바이스(620)에 의해 충족될 수 있다.
도 6의 예시에서, 전용화된 프로세싱 유닛(660)의 대용량 스토리지 디바이스 컨트롤러(670)에서 수신되는 단말 시스템(612)의 대용량 스토리지 호스트 컨트롤러(624)에 의해 판독 요청(684)이 발급된다. 대용량 스토리지 컨트롤러(670)는 가령, 도 6에 도시되는 DMA 엔진(666)을 통해, 요청(684)의 인터럽트를 이용하여, 호스트 시스템(602)에 구체화된 스토리지 프로세스(632)에 통지한다. 스토리지 프로세스는 요청(684) 취급에 관한 결정을 행하도록 호스트 시스템(602)의 중앙 프로세싱 유닛(686)에 의해 실행될 수 있는, 호스트 시스템(602)의 시스템 메모리(640)에서 구체화되는 애플리케이션일 수 있다.
도 6에 도시되는 바와 같이, 스토리지 프로세스는 스토리지 서버와 같은, 일부 다른 스토리지 소스(699)로부터 요청받은 데이터(687)를 불러들일 수 있다. 스토리지 프로세스는 가령, 호스트 시스템(602)의 주변 버스와의 PCI-e, 또는 다른 통신 인터페이스와 같이, 확장 인터페이스(도시되지 않음)를 통해, 인터페이스 디바이스 메모리 유닛(674)에 불러온 데이터(689)를 저장할 수 있다. 확장 인터페이스를 통해 주변 버스와 통신하는 애드-온 카드 또는 다른 주변 구성요소로 구현되는 대신에, 일부 구현예에서, 인터페이스 디바이스(620)는 호스트 시스템(602)의 일체형 부분으로 제공되어 호스트 시스템 주변 버스에 직접 연결되는 전용화된 프로세싱 유닛(660)과 함께 구현될 수 있다.
대안의 구현예에서, 전용화된 프로세싱 유닛(660), 가령, FPGA, ASIC, 또는 등가 회로가, 스트리밍 서버(402)의 마더보드 상에 직접 배치될 수 있고, 스트리밍 서버 상의 주변 버스에 연결될 수 있다. 전용화된 프로세싱 유닛은 PCI-익스프레스를 통해 연결될 수 있다.
스토리지 프로세스에 의해 불러온 데이터가 인터페이스 메모리(674)에 저장되면, 스토리지 프로세스는 인터페이스 메모리에 저장된 데이터(689)에 액세스함으로써 그리고 단말 시스템(612)에 이를 전송함으로써 요청을 완료하도록 대용량 스토리지 디바이스 컨트롤러(670)를 프로그래밍할 수 있다.
판독 작동 중, 대용량 스토리지 디바이스 컨트롤러(670)는 호스트 시스템(602)의 운영 체제 내 스토리지 서버에 (DMA 엔진(666)에 구성된 인터럽트 기능을 이용하여 전달될 수 있는) 인터럽트를 일으킬 수 있다. 이 요청이 판독 요청(684)으로 결정되면, 스토리지 드라이버는 호스트 메모리(640)에 저장된 '데이터를 판독할 것을' 스토리지 프로세스(632)에 요청한다. 모든 데이터가 판독되면, DMA 엔진(666)은 호스트 메모리(640)로부터 인터페이스 메모리(674)까지 데이터(689)를 전송하도록 프로그래밍될 수 있다.
결론
본 발명의 형태들이 특정 예로서 클라우드 게임을 참조하여 설명되었고, 본 발명의 다양한 구현예에 따라 대용량 스토리지 가상화의 필요성이 요망되지만, 본 발명의 구현예는 이에 제한되지 않는다. 본 발명의 구현예는 임의의 컴퓨팅 디바이스의 에뮬레이션을 위한 대용량 스토리지 디바이스를 제공할 수 있고, 이는 클라우드 컴퓨팅 또는 클라우드 게임을 수반하지 않을 수도 있다.
본 발명의 구현예는 SATA, USB, IDE, RS232, Firewire, Thunderbolt, 및 그외 다른 대용량 스토리지 통신 인터페이스 표준을 포함한, 다양한 대용량 스토리지 통신 프로토콜 중 임의의 것을 이용할 수 있다.
본 발명의 구현예는 HDMI, S-Video, 컴포넌트 비디오, 컴포지트 비디오, 디스플레이 포트, VGA, DVI, 및 기타 A/V 통신 인터페이스 표준을 포함한, 다양한 오디오 및/또는 비디오 표준 중 임의의 것을 이용할 수 있다.
위는 본 발명의 선호 실시예의 완전한 설명이지만, 다양한 대안, 변형예, 및 등가예를 이용하는 것이 가능하다. 따라서, 본 발명의 범위는 위 설명을 참조하지 않고 결정되어야 하고, 대신에, 첨부 청구범위를 참조하여, 그 등가물의 전체 범위와 함께, 결정되어야 한다. 선호 여부에 관계없이 여기서 설명되는 임의의 특징들이, 선호 여부에 관계없이 여기서 설명되는 다른 특징과 조합될 수 있다. 이어지는 청구범위에서, "하나" 또는 "일"과 같은 관사는 달리 명시하지 않을 경우 관사에 이어지는 품목의 하나 이상의 양을 나타낸다. 첨부 청구범위는, 다음의 제한사항이 "~하기 위한 수단"이라는 어구를 이용하여 주어진 청구항에서 명백하게 언급되지 않을 경우, 평균-더하기-함수 제한사항(mean-plus-function)을 포함하는 것으로 해석되면 안된다.

Claims (25)

  1. 대용량 스토리지 인터페이스인 제 1 통신 인터페이스와,
    확장 인터페이스인 제 2 통신 인터페이스와,
    상기 제 1 및 제 2 통신 인터페이스에 연결되는 전용화된 프로세싱 유닛을 포함하고,
    상기 전용화된 프로세싱 유닛은 상기 제 1 통신 인터페이스에 연결된 대용량 스토리지 디바이스 컨트롤러와, 상기 제 2 통신 인터페이스에 연결된 메모리 엑세스 인터페이스를 가지며,
    상기 대용량 스토리지 디바이스 컨트롤러는 상기 제 1 통신 인터페이스를 통해 대용량 스토리지 데이터 요청을 수신하도록 구성되고,
    상기 메모리 액세스 인터페이스는 상기 제 2 통신 인터페이스를 통해 상기 대용량 스토리지 데이터 요청을 호스트 시스템에 통지하도록 구성되는 인터페이스 디바이스.
  2. 제 1 항에 있어서,
    메모리 유닛을 더 포함하며,
    상기 전용화된 프로세싱 유닛은 상기 메모리 유닛에 연결되는 메모리 컨트롤러를 포함하는 인터페이스 디바이스.
  3. 제 1 항에 있어서,
    상기 메모리 액세스 인터페이스는 데이터 요청의 인터럽트를 이용하여 데이터 요청을 호스트 시스템에 알리도록 구성되는 인터페이스 디바이스.
  4. 제 1 항에 있어서,
    상기 메모리 액세스 인터페이스는 데이터 이동 작동을 구현하도록 구성되는 DMA 엔진을 포함하는 인터페이스 디바이스.
  5. 제 1 항에 있어서,
    상기 전용화된 프로세싱 유닛은 필드 프로그래머블 게이트 어레이(FPGA)인 인터페이스 디바이스.
  6. 제 1 항에 있어서,
    상기 전용화된 프로세싱 유닛은 애플리케이션 전용 집적 회로(ASIC)인 인터페이스 디바이스.
  7. 제 1 항에 있어서,
    인쇄 회로 보드(PCB)를 더 포함하며,
    상기 제 1 통신 인터페이스는 상기 PCB에 고정된 하나 이상의 대용량 스토리지 포트를 포함하는 인터페이스 디바이스.
  8. 제 1 항에 있어서,
    인쇄 회로 보드(PCB)를 더 포함하며,
    상기 제 2 통신 인터페이스는 상기 PCB에 고정되는 하나 이상의 확장 커넥터를 포함하는 인터페이스 디바이스.
  9. 제 1 항에 있어서,
    상기 제 1 통신 인터페이스는 하나 이상의 대용량 스토리지 포트를 포함하고,
    상기 전용화된 프로세싱 유닛은 각각의 상기 대용량 스토리지 포트를 위한 대용량 스토리지 디바이스 컨트롤러를 포함하는 인터페이스 디바이스.
  10. 제 1 항에 있어서,
    상기 제 1 통신 인터페이스는 복수의 대용량 스토리지 포트를 포함하고,
    상기 전용화된 프로세싱 유닛은 복수의 대용량 스토리지 디바이스 컨트롤러를 가지며,
    각각의 상기 대용량 스토리지 디바이스 컨트롤러는 상기 대용량 스토리지 포트 중 대응 부분에 연결되는 인터페이스 디바이스.
  11. 제 1 항에 있어서,
    상기 제 1 통신 인터페이스는 하나 이상의 시리얼 어드밴스트 테크놀로지 어태치먼트(SATA) 포트를 포함하고,
    상기 전용화된 프로세싱 유닛은 각각의 상기 SATA 포트를 위한 SATA 디바이스 컨트롤러를 갖는 인터페이스 디바이스.
  12. 중앙 프로세싱 유닛과,
    상기 중앙 프로세싱 유닛에 연결되는 제 1 메모리 유닛과,
    상기 제 1 메모리 유닛에 구비되어, 상기 중앙 프로세싱 유닛에 의해 실행가능한 스토리지 프로세스와,
    대용량 스토리지 인터페이스인 제 1 통신 인터페이스와,
    상기 제 1 통신 인터페이스에 연결되는 전용화된 프로세싱 유닛을 포함하고,
    상기 전용화된 프로세싱 유닛은 상기 제 1 통신 인터페이스에 연결되는 대용량 스토리지 디바이스 컨트롤러와 메모리 액세스 인터페이스를 가지며,
    상기 대용량 스토리지 디바이스 컨트롤러는 상기 제 1 통신 인터페이스를 통해서 대용량 스토리지 데이터 요청을 수신하도록 구성되고,
    상기 메모리 액세스 인터페이스는 상기 대용량 스토리지 데이터 요청을 상기 스토리지 프로세스에 알리도록 구성되며,
    상기 스토리지 프로세스는 스토리지 시스템에 액세스함으로써 데이터 요청을 처리하도록 구성되는 시스템.
  13. 제 12 항에 있어서,
    제 2 메모리 유닛을 더 포함하며,
    상기 전용화된 프로세싱 유닛은 상기 제 2 메모리 유닛에 연결된 메모리 컨트롤러를 갖는 시스템.
  14. 제 12 항에 있어서,
    제 2 메모리 유닛을 더 포함하며,
    상기 전용화된 프로세싱 유닛은 상기 제 2 메모리 유닛에 연결되는 메모리 컨트롤러를 갖고,
    상기 데이터 요청은 판독 요청이며,
    상기 스토리지 프로세스는 상기 스토리지 시스템으로부터 판독 요청에 대응하여 데이터를 불러오도록 구성되고,
    상기 스토리지 프로세스는 상기 제 2 메모리 유닛 상에 불러온 데이터를 저장하도록 구성되며,
    상기 스토리지 프로세스는 상기 제 2 메모리 유닛으로부터 판독하도록 대용량 스토리지 디바이스 컨트롤러를 프로그래밍함으로써 판독 요청을 완료하도록 상기 대용량 스토리지 디바이스 컨트롤러를 프로그래밍하도록 구성되는 시스템.
  15. 제 12 항에 있어서,
    확장 인터페이스인 제 2 통신 인터페이스를 더 포함하며,
    상기 메모리 액세스 인터페이스는 상기 제 2 통신 인터페이스에 연결되고,
    상기 제 2 통신 인터페이스는 프로세서 버스에 연결되는 시스템.
  16. 제 12 항에 있어서,
    인쇄 회로 보드(PCB)와,
    확장 인터페이스인 제 2 통신 인터페이스를 더 포함하되,
    DMA 엔진은 제 2 통신 인터페이스에 연결되고,
    상기 제 2 통신 인터페이스는 프로세서 버스에 연결되며,
    상기 제 1 통신 인터페이스, 상기 제 2 통신 인터페이스, 및 전용화된 프로세싱 유닛이 상기 PCB에 고정되는 시스템.
  17. 제 12 항에 있어서,
    DMA 엔진은 프로세서 버스에 직접 연결되는 시스템.
  18. 제 12 항에 있어서,
    상기 메모리 액세스 인터페이스는 데이터 요청의 인터럽트를 이용하여 데이터 요청을 스토리지 프로세스에 알리도록 구성되는 시스템.
  19. 제 12 항에 있어서,
    상기 메모리 액세스 인터페이스는 데이터 이동 작동을 구현하도록 구성되는 DMA 엔진을 포함하는 시스템.
  20. 제 12 항에 있어서,
    상기 제 1 통신 인터페이스는 하나 이상의 대용량 스토리지 포트를 포함하고,
    상기 전용화된 프로세싱 유닛은 각각의 상기 대용량 스토리지 포트를 위한 대용량 스토리지 디바이스 컨트롤러를 갖는 시스템.
  21. 제 12 항에 있어서,
    상기 전용화된 프로세싱 유닛은 필드 프로그래머블 게이트 어레이(FPGA)인 시스템.
  22. 제 12 항에 있어서,
    상기 전용화된 프로세싱 유닛이 애플리케이션 전용 집적 회로(ASIC)인 시스템.
  23. 제 12 항에 있어서,
    대용량 스토리지 커넥터를 통해 상기 제 1 통신 인터페이스에 연결되는 단말 시스템을 더 포함하며,
    상기 단말 시스템은 상기 대용량 스토리지 데이터 요청을 발급하도록 구성되는 대용량 스토리지 호스트 컨트롤러를 갖는 시스템.
  24. 제 12 항에 있어서,
    복수의 단말 시스템을 더 포함하며,
    상기 전용화된 프로세싱 유닛은 복수의 상기 대용량 스토리지 디바이스 컨트롤러를 갖고,
    상기 제 1 통신 인터페이스는 복수의 대용량 스토리지 포트를 가지며,
    각각의 상기 단말 시스템은 대용량 스토리지 커넥터를 이용하여 상기 대용량 스토리지 포트 중 대응하는 하나에 연결되고,
    각각의 상기 대용량 스토리지 포트는 상기 대용량 스토리지 디바이스 컨트롤러 중 대응하는 하나에 연결되는 시스템.
  25. a) 대용량 스토리지 디바이스 컨트롤러에서 대용량 스토리지 데이터 요청을 제 1 컴퓨팅 디바이스로부터 수신하는 단계와,
    b) 상기 대용량 스토리지 디바이스 컨트롤러에 연결된 메모리 액세스 인터페이스를 이용하여, 상기 데이터 요청을 제 2 컴퓨팅 디바이스에 구비된 스토리지 프로세스에 알리는 단계와,
    c) 상기 제 2 컴퓨팅 디바이스의 스토리지 프로세스를 이용하여, 상기 데이터 요청에 대응하는 데이터를 가진 스토리지 시스템에 액세스하는 단계와,
    d) 상기 제 2 컴퓨팅 디바이스의 스토리지 프로세스를 이용하여, 제 1 메모리 유닛 상에 상기 데이터 요청에 대응하는 데이터를 저장하는 단계와,
    e) 상기 제 2 컴퓨팅 디바이스의 스토리지 프로세스를 이용하여, 데이터 요청을 완료하기 위해 상기 제 1 메모리 유닛으로부터 데이터에 액세스하도록 상기 대용량 스토리지 디바이스 컨트롤러를 프로그래밍하는 단계를 포함하는 방법.
KR1020167007888A 2013-12-19 2014-10-21 클라우드 컴퓨팅용 대용량 스토리지 가상화 KR101788724B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/135,213 US10353633B2 (en) 2013-12-19 2013-12-19 Mass storage virtualization for cloud computing
US14/135,213 2013-12-19
PCT/US2014/061633 WO2015094474A1 (en) 2013-12-19 2014-10-21 Mass storage virtualization for cloud computing

Publications (2)

Publication Number Publication Date
KR20160046893A KR20160046893A (ko) 2016-04-29
KR101788724B1 true KR101788724B1 (ko) 2017-10-20

Family

ID=53400073

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167007888A KR101788724B1 (ko) 2013-12-19 2014-10-21 클라우드 컴퓨팅용 대용량 스토리지 가상화

Country Status (9)

Country Link
US (2) US10353633B2 (ko)
EP (2) EP3690664A1 (ko)
JP (1) JP2016534463A (ko)
KR (1) KR101788724B1 (ko)
CN (2) CN110888599B (ko)
BR (1) BR112016004712B1 (ko)
RU (1) RU2649771C2 (ko)
TW (1) TWI531958B (ko)
WO (1) WO2015094474A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9086995B2 (en) 2012-10-04 2015-07-21 Sony Computer Entertainment America, LLC Method and apparatus for improving decreasing presentation latency
US9497358B2 (en) 2013-12-19 2016-11-15 Sony Interactive Entertainment America Llc Video latency reduction
US9332216B2 (en) 2014-03-12 2016-05-03 Sony Computer Entertainment America, LLC Video frame rate compensation through adjustment of vertical blanking
US9795879B2 (en) * 2014-12-31 2017-10-24 Sony Interactive Entertainment America Llc Game state save, transfer and resume for cloud gaming
US10554713B2 (en) * 2015-06-19 2020-02-04 Microsoft Technology Licensing, Llc Low latency application streaming using temporal frame transformation
US10744407B2 (en) * 2015-09-08 2020-08-18 Sony Interactive Entertainment LLC Dynamic network storage for cloud console server
KR102335715B1 (ko) * 2015-12-04 2021-12-06 한국전자기술연구원 가상화 기반의 임베디드 하드웨어 개발 및 검증 프레임워크 구조
US10423331B2 (en) * 2016-02-02 2019-09-24 Samsung Electronics Co., Ltd. Polymorphic storage devices
US11287973B2 (en) 2016-02-02 2022-03-29 Samsung Electronics Co., Ltd. Polymorphic storage devices
US11816043B2 (en) * 2018-06-25 2023-11-14 Alibaba Group Holding Limited System and method for managing resources of a storage device and quantifying the cost of I/O requests
CN111372115B (zh) * 2020-03-03 2022-02-08 北京奇艺世纪科技有限公司 应用程序的访问方法及装置、通讯系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100280817A1 (en) * 2009-04-30 2010-11-04 Spansion Llc Direct pointer access and xip redirector for emulation of memory-mapped devices
US20110271067A1 (en) * 2010-05-03 2011-11-03 Pixel8 Networks, Inc. Efficient Cloud Network Attached Storage

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5034817A (en) 1990-02-28 1991-07-23 The United States Of America As Represented By The Secretary Of The Navy Reconfigurable video line digitizer and method for storing predetermined lines of a composite video signal
US5502462A (en) 1993-11-01 1996-03-26 The 3Do Company Display list management mechanism for real-time control of by-the-line modifiable video display system
US5969828A (en) 1997-03-12 1999-10-19 Minolta Co., Ltd. Digital copying machine, image reading device used in said digital copying machine, and image processing method used in these devices
AU2001255716B2 (en) * 2000-04-28 2006-02-02 Fziomed, Inc. Hemostatic compositions of polyacids and polyalkylene oxides and methods for their use
AR031640A1 (es) * 2000-12-08 2003-09-24 Applied Research Systems Amplificacion isotermica de acidos nucleicos en un soporte solido
US6874060B2 (en) * 2001-12-07 2005-03-29 Dell Products L.P. Distributed computer system including a virtual disk subsystem and method for providing a virtual local drive
US20030110300A1 (en) * 2001-12-12 2003-06-12 Micro-Star Int'l Co., Ltd. Virtual storage interface device
CN1243313C (zh) * 2001-12-27 2006-02-22 中国科学院计算技术研究所 具有大容量存储器的数据流处理板
US7711847B2 (en) * 2002-04-26 2010-05-04 Sony Computer Entertainment America Inc. Managing users in a multi-user network game environment
US8037229B2 (en) * 2002-11-21 2011-10-11 Sandisk Technologies Inc. Combination non-volatile memory and input-output card with direct memory access
US7505890B2 (en) * 2003-01-15 2009-03-17 Cox Communications, Inc. Hard disk drive emulator
US7106352B2 (en) 2003-03-03 2006-09-12 Sun Microsystems, Inc. Automatic gain control, brightness compression, and super-intensity samples
US7287099B1 (en) * 2003-03-18 2007-10-23 Unisys Corporation System for support of remote console by emulation of local console with multipath data flow structure
US7565408B2 (en) 2003-03-20 2009-07-21 Dell Products L.P. Information handling system including a local real device and a remote virtual device sharing a common channel
JP4179556B2 (ja) * 2004-06-25 2008-11-12 株式会社日立情報システムズ コンピュータ集中運用センタシステムとそのデータ管理制御方法およびプログラム
US20060061517A1 (en) 2004-09-23 2006-03-23 Jolly Paul A Delivering pixels received at a lower data transfer rate over an interface that operates at a higher data transfer rate
JP4390694B2 (ja) * 2004-12-24 2009-12-24 富士通株式会社 Dma回路及びこれを用いたディスクアレイ装置
US20100017189A1 (en) * 2006-01-04 2010-01-21 Andriy Naydon Transparent Intellectual Network Storage Device
EP2044543A4 (en) 2006-04-13 2012-07-04 Yosef Mizrachi METHOD AND DEVICE FOR PROVIDING GAME SERVICES AND MOVING WITH VIDEO CONTENT
US7383992B2 (en) * 2006-10-10 2008-06-10 Imation Corp. Memory card with host interface and including internal interface for receiving micro-size memory cards
US8179388B2 (en) 2006-12-15 2012-05-15 Nvidia Corporation System, method and computer program product for adjusting a refresh rate of a display for power savings
KR100794312B1 (ko) * 2006-12-27 2008-01-11 삼성전자주식회사 명령어 자동 처리 유니트를 포함한 메모리 컨트롤러 및그를 포함한 메모리 시스템
US8838856B2 (en) * 2007-02-16 2014-09-16 Emulex Corporation Virtual universal asynchronous receiver transmitter for server systems
US7669000B2 (en) * 2007-10-23 2010-02-23 Brocade Communication Systems, Inc. Host bus adapter with multiple hosts
US20090135916A1 (en) 2007-11-26 2009-05-28 Mediatek Inc. Image processing apparatus and method
WO2009079560A1 (en) 2007-12-17 2009-06-25 Stein Gausereide Real time video inclusion system
CA2713876C (en) * 2008-02-26 2014-11-04 Vmware, Inc. Extending server-based desktop virtual machine architecture to client machines
US8499119B2 (en) * 2008-04-07 2013-07-30 Qualcomm Incorporated Method and apparatus for delivering and caching multiple pieces of content
US8225019B2 (en) * 2008-09-22 2012-07-17 Micron Technology, Inc. SATA mass storage device emulation on a PCIe interface
JP4581012B2 (ja) 2008-12-15 2010-11-17 株式会社東芝 電子機器、及び表示制御方法
US8775544B2 (en) * 2009-02-04 2014-07-08 Citrix Systems, Inc. Methods and systems for dynamically switching between communications protocols
US8635387B2 (en) * 2009-10-09 2014-01-21 Emulex Design & Manufacturing Corporation Enhanced I/O performance in a multi-processor system via interrupt affinity schemes
DE102009058795A1 (de) 2009-12-18 2011-06-22 Epcos Ag, 81669 Piezoelektrisches Keramikmaterial, Verfahren zur Herstellung des piezoelektrischen Keramikmaterials, piezoelektrisches Vielschichtbauelement und Verfahren zur Herstellung des piezoelektrischen Vielschichtbauelements
US8669993B2 (en) 2010-01-11 2014-03-11 Apple Inc. User interface unit for fetching only active regions of a frame
JP5569053B2 (ja) * 2010-03-11 2014-08-13 ソニー株式会社 コンテンツ配信装置、コンテンツ配信方法および送信サーバ
CN101937261A (zh) * 2010-05-18 2011-01-05 上海同悦信息科技有限公司 基于通用串行总线的云计算终端
US20140019563A1 (en) * 2010-11-16 2014-01-16 Telefonaktiebolaget Lm Ericsson (Publ) Message targeting platform
KR101312268B1 (ko) 2010-12-24 2013-09-25 주식회사 케이티 클라우드 컴퓨팅 환경에서 게임 서비스 제공 방법, 클라우드 컴퓨팅 서버, 및 클라우드 컴퓨팅 시스템
EP2472879B1 (en) 2010-12-31 2013-06-05 Advanced Digital Broadcast S.A. A method and a system for determining a video frame type
US20120306926A1 (en) 2011-06-06 2012-12-06 Apple Inc. Inline scaling unit for mirror mode
US8281288B1 (en) 2011-10-20 2012-10-02 Google Inc. Integrated development environment with network-based compilation and sandboxed native machine-language capabilities
US10319333B2 (en) 2012-09-26 2019-06-11 Apple Inc. Refresh rate matching for displays
US20140195634A1 (en) * 2013-01-10 2014-07-10 Broadcom Corporation System and Method for Multiservice Input/Output
US20140281023A1 (en) 2013-03-18 2014-09-18 Nvidia Corporation Quality of service management server and method of managing quality of service
US9497358B2 (en) 2013-12-19 2016-11-15 Sony Interactive Entertainment America Llc Video latency reduction

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100280817A1 (en) * 2009-04-30 2010-11-04 Spansion Llc Direct pointer access and xip redirector for emulation of memory-mapped devices
US20110271067A1 (en) * 2010-05-03 2011-11-03 Pixel8 Networks, Inc. Efficient Cloud Network Attached Storage

Also Published As

Publication number Publication date
RU2016107200A (ru) 2017-08-30
WO2015094474A1 (en) 2015-06-25
US20190294382A1 (en) 2019-09-26
EP3036646B1 (en) 2020-06-24
CN110888599B (zh) 2023-06-27
CN104735123A (zh) 2015-06-24
RU2649771C2 (ru) 2018-04-04
BR112016004712A2 (ko) 2017-08-01
EP3690664A1 (en) 2020-08-05
JP2016534463A (ja) 2016-11-04
TWI531958B (zh) 2016-05-01
EP3036646A4 (en) 2017-07-19
BR112016004712B1 (pt) 2022-06-14
US10353633B2 (en) 2019-07-16
US20150178018A1 (en) 2015-06-25
EP3036646A1 (en) 2016-06-29
CN110888599A (zh) 2020-03-17
CN104735123B (zh) 2019-11-08
TW201537447A (zh) 2015-10-01
KR20160046893A (ko) 2016-04-29

Similar Documents

Publication Publication Date Title
KR101788724B1 (ko) 클라우드 컴퓨팅용 대용량 스토리지 가상화
US7917674B2 (en) KVM switch with PIP functions using remote desktop sharing technique
US9141571B2 (en) PCI express switch with logical device capability
US8521926B2 (en) Remote desktop control system using USB interface and method thereof
US8405666B2 (en) Saving, transferring and recreating GPU context information across heterogeneous GPUs during hot migration of a virtual machine
CN105122210B (zh) Gpu虚拟化的实现方法及相关装置和系统
US8082418B2 (en) Method and apparatus for coherent device initialization and access
TW202234263A (zh) 實施用於雲端遊戲資料儲存及擷取之高速資料通信組構之系統及方法
US8610732B2 (en) System and method for video memory usage for general system application
US8893013B1 (en) Method and apparatus for providing a hybrid computing environment
CN103198042A (zh) Pci航空串行总线板卡及实现动态加载数据处理方法
JP2023532484A (ja) クラウドゲーム用高速セーブデータストレージ
US8516079B2 (en) Remote desktop control system using USB interface and method thereof
US20100169069A1 (en) Composite device emulation
US11281602B1 (en) System and method to pipeline, compound, and chain multiple data transfer and offload operations in a smart data accelerator interface device
WO2014000299A1 (zh) 串口重定向处理方法、设备和系统
US20070174034A1 (en) Transparent intellectual network storage device
US11422963B2 (en) System and method to handle uncompressible data with a compression accelerator
US20220155966A1 (en) Hybrid Cluster System and Computing Node Thereof
TWI787673B (zh) 混合式叢集系統及其計算節點
US20230289303A1 (en) Improving remote traffic performance on cluster-aware processors

Legal Events

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