KR101813480B1 - 하드웨어 기반 디바이스간 리소스 공유 - Google Patents

하드웨어 기반 디바이스간 리소스 공유 Download PDF

Info

Publication number
KR101813480B1
KR101813480B1 KR1020160017014A KR20160017014A KR101813480B1 KR 101813480 B1 KR101813480 B1 KR 101813480B1 KR 1020160017014 A KR1020160017014 A KR 1020160017014A KR 20160017014 A KR20160017014 A KR 20160017014A KR 101813480 B1 KR101813480 B1 KR 101813480B1
Authority
KR
South Korea
Prior art keywords
configuration
module
hardware resource
processing module
hardware
Prior art date
Application number
KR1020160017014A
Other languages
English (en)
Other versions
KR20160111325A (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 KR20160111325A publication Critical patent/KR20160111325A/ko
Application granted granted Critical
Publication of KR101813480B1 publication Critical patent/KR101813480B1/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/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • G06F13/126Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine and has means for transferring I/O instructions and statuses between control unit and main processor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • 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/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • 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/4401Bootstrapping
    • G06F9/4418Suspend and resume; Hibernate and awake
    • 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/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • 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
    • G06F9/546Message passing systems or structures, e.g. queues
    • H04L29/10
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Sources (AREA)

Abstract

본 개시내용은 하드웨어 기반 디바이스간 리소스 공유에 관한 것이다. 예컨대, 원격 조정기(Remote Orchestrator: RO)는 디바이스로 하여금 적어도 하나의 하드웨어 리소스를 다른 디바이스가 이용할 수 있게 만들도록 하는 명령어를 제공할 수 있다. 디바이스 내의 RO 모듈이 RO와 상호작용할 수 있고 RO로부터 수신된 명령어에 기반하여 디바이스 내의 구성 모듈을 구성할 수 있다. 구성 모듈은 디바이스가 파워 오프 상태에서 파워 온 상태로 전이하는 경우에 디바이스 구성을 설정할 수 있다. 디바이스는 디바이스 구성에 기반하여 데이터를 처리하는 처리 모듈과, 인터페이스 기술(Interface Technology) 및 적어도 하나의 하드웨어 리소스를 또한 포함할 수 있다. 인터페이스 기술은 처리 모듈 및 적어도 하나의 하드웨어 리소스가 상호작용할 수 있게 할 수 있다. RO 모듈은 명령어에 기반하여 적어도 하나의 하드웨어 리소스로 하여금 로컬로 또는 원격으로 동작하게 할 수 있도록 IT를 구성할 수 있다.

Description

하드웨어 기반 디바이스간 리소스 공유{HARDWARE-BASED INTER-DEVICE RESOURCE SHARING}
본 개시내용은 리소스 배분(resource allocation)에 관련되고, 보다 구체적으로는, 하드웨어 기반 파티셔닝(hardware-based partitioning)을 이용하여 하드웨어 리소스를 다른 디바이스와 공유하는 것이 가능한 디바이스에 관련된다.
"클라우드 기반"(cloud-based) 데이터 처리 솔루션, 서비스로서의 소프트웨어(Software-as-a-Service: SaaS) 등등의 확대는 온라인 상호작용을 위한 대량의 데이터 처리를 사용자 디바이스로부터 이전시켜 원격 위치의(remotely-situated) 데이터 센터로 넘겨버렸다. 예시적인 데이터센터는 (가령 고성능 컴퓨팅(High Performance Computing: HPC) 아키텍처에서와 같이) 협력적인 방식으로 또는 개별적으로 데이터를 처리하는 네트워킹된(networked) 데이터 처리 디바이스들 또는 "노드들"(가령, 서버들)의 어레이(array)를 포함할 수 있다. 데이터센터는 데이터 처리, 저장, 네트워킹 및 다른 하드웨어 리소스의 융통성(flexibility)을 증가시키기 위해 "소프트웨어 정의된"(software-defined) 접근법을 이용할 수 있다. 예컨대, 소프트웨어 정의된 동작(software-defined operation)은 하드웨어 리소스로부터의 도움과 함께 소프트웨어 가상화 기술을 통해 가능하게 될 수 있다. 가상 머신(Virtual Machine: VM)은 물리적 하드웨어를 에뮬레이트할(emulate) 수 있지만 사실은 VM 관리기(VM Manager: VMM) 또는 하이퍼바이저(Hypervisor)의 제어 하에 하드웨어 플랫폼 상에서 실행되는 프로그램적인 구성체(programmatic construct)이다. 기존의 소프트웨어 정의된 구현들은, 예컨대 하드웨어 파티셔닝, 가상화(가령, 인텔 사(Intel Corporation)의 VT-x 또는 VT-d 기술), 랙 스케일 아키텍처(Rack- Scale Architecture: RSA) 등등을 사용할 수 있다.
그러나, 설령 VM이 하드웨어 리소스로의 공유된 액세스가 나타나는 것을 가능하게 하더라도, 처리 및 입력/출력(Input/Output: I/O) 하드웨어는 요청된 기능을 구현하는 특정한 노드에 여전히 전용이다. 기존의 파티셔닝 및 가상화 솔루션은 플랫폼 레벨 리소스를 액세스하고/하거나 제어하는 데 매우 조악한 입도(very coarse granularity)를 제공할 뿐일 수 있다. 소프트웨어 가상화는 서브 소켓 레벨 파티셔닝(sub-socket-level partitioning)을 가능하게 할 수 있다. 서브 소켓 레벨 파티셔닝은 별개의 작업들을 수행하기 위해 동일한 물리적 패키지로부터 처리 리소스들(가령, 코어들)을 배분하는 것을 포함할 수 있다. 예컨대, VMM은 운영 체제(Operating System: OS)의 인스턴스(instance) 또는 VM이 실행될 수 있는 각 코어를 위한 논리적 파티션(logical partition)을 생성할 수 있다. 그러한 동작의 이득이 명백하나, 소프트웨어 가상화는 또한 유용한 하드웨어 기능을 도외시하고(abstract out) 따라서 이를 이용불가능하게 할 수 있다. RSA는 어떤 플랫폼 레벨 리소스 공유를 가능하게 할 수 있지만(가령, 메모리가 다수의 노드에 걸쳐 풀링되고(pooled) 공유될 수 있음), 소켓 내에서 이용가능한 어떠한 미세 레벨 파티셔닝(fine-level partitioning)도 없다. 어떠한 기존의 기술도 노드들 간에 처리 또는 I/O 하드웨어 리소스를 공유하는 것 또는 다수의 노드가 액세스를 공유할 수 있는 이용가능한 리소스의 풀(pool)에 I/O 하드웨어 리소스를 배분하는 것을 가능하게 하지 않는다. SW 가상화는 현재 연산(compute) 및 IO 리소스의 서브 소켓 레벨 파티셔닝을 위한 유일한 옵션(option)이다. 어떠한 기존의 아키텍처도 서브 소켓 레벨 하드웨어 인터페이스 기술(Interface Technology: IT)(예컨대, 직렬 고급 기술 부착(Serial Advanced Technology Attachment: SATA), 기가바이트 이더넷(Gigabyte Ethernet: GbE), 직렬 부착 소형 컴퓨터 시스템 인터페이스(Serial Attached Small Computer System Interface: SAS), 범용 직렬 버스(Universal Serial Bus: USB) 또는 지금 존재하거나 장래에 개발되는 임의의 다른 IT를 포함함)을 통하여 하드웨어 리소스의 풀링 공유 등등을 가능하게 할 수 없다.
청구된 대상(claimed subject matter)의 다양한 실시예의 특징 및 이점은 이하의 상세한 설명이 진행됨에 따라, 그리고 동일한 번호가 동일한 부분을 가리키는 도면을 참조할 때에 명백해질 것인데, 여기에서
도 1은 본 개시의 적어도 하나의 실시예에 따른 하드웨어 기반 디바이스간 리소스 공유(hardware-based inter-device resource sharing)를 위한 예시적인 시스템을 보여주고,
도 2는 본 개시의 적어도 하나의 실시예에 따라 사용가능한 디바이스를 위한 예시적인 구성을 보여주며,
도 3은 본 개시의 적어도 하나의 실시예에 따른 하드웨어 기반 디바이스간 리소스 공유의 예시적인 구현을 보여주고,
도 4는 본 개시의 적어도 하나의 실시예에 따른 하드웨어 기반 디바이스간 리소스 공유를 위한 예시적인 동작을 보여준다.
이하의 상세한 설명은 예시적인 실시예에 대해 언급이 행해지면서 진행될 것이지만, 이의 많은 대안, 수정 및 변형이 당업자에게 명백할 것이다.
본 개시내용은 하드웨어 기반 디바이스간 리소스 공유에 관한 것이다. 적어도 하나의 실시예에서, 원격 조정기(Remote Orchestrator: RO)는 디바이스로 하여금 적어도 하나의 하드웨어 리소스를 다른 디바이스가 이용할 수 있게 만들도록 하는 명령어를 제공할 수 있다. 예컨대, 디바이스 내의 RO 모듈이 RO와 상호작용할 수 있다. RO 모듈은 RO로부터 수신된 명령어에 기반하여 디바이스 내의 구성 모듈(configuration module)을 구성할 수 있다. 이후 구성 모듈은 디바이스가 파워 오프 상태(power off state)에서 파워 온 상태(power on state)로 전이하는(transition) 경우에 디바이스 구성(device configuration)(가령, "파티셔닝된"(partitioned) 구성 또는 "병합된"(merged) 구성)을 설정할 수 있다. 디바이스는 디바이스 구성에 기반하여 데이터를 처리하는 처리 모듈(processing module)과, 인터페이스 기술(Interface Technology) 및 적어도 하나의 하드웨어 리소스를 더 포함할 수 있다. 인터페이스 기술은 처리 모듈 및 적어도 하나의 하드웨어 리소스가 상호작용할 수 있게 할 수 있다. 이후 RO 모듈은 명령어에 기반하여 적어도 하나의 하드웨어 리소스로 하여금 로컬로(locally) 또는 원격으로(remotely) 동작하게 할 수 있도록 IT를 구성할 수 있다.
적어도 하나의 실시예에서, 하드웨어 기반 디바이스간 리소스 공유가 가능한 예시적인 디바이스는, 예컨대 구성 모듈, 처리 모듈, 적어도 하나의 하드웨어 리소스, 인터페이스 기술 및 RO 모듈을 포함할 수 있다. 구성 모듈은 디바이스 구성을 설정하는 것일 수 있다. 처리 모듈은 적어도 디바이스 구성에 기반하여 데이터를 처리하는 것일 수 있다. 인터페이스 기술은 처리 모듈로 하여금 적어도 하나의 하드웨어 리소스와 상호작용할 수 있게 하는 것일 수 있다. RO 모듈은 적어도, 원격 조정기로부터 적어도 하나의 명령어를 수신하고, 적어도 하나의 명령어에 기반하여 구성 모듈을 구성하며, 적어도 하나의 명령어에 기반하여 적어도 하나의 하드웨어 리소스가 로컬로 동작하거나 원격으로 동작할 수 있게 하도록 인터페이스 기술을 구성하는 것일 수 있다.
적어도 하나의 실시예에서, 구성 모듈은 디바이스가 오프 상태(off state)에서 온 상태(on state)로 전이하는 경우 디바이스 구성을 설정하기 위해 적어도 펌웨어(firmware)를 포함할 수 있다. 디바이스 구성을 설정하는 중에, 구성 모듈은 디바이스를 파티셔닝된 구성 또는 병합된 구성으로 동작하도록 설정하는 것일 수 있다. 인터페이스 기술을 구성하는 중에, RO 모듈은 적어도 하나의 하드웨어 리소스가 로컬로 동작할 것임 또는 원격으로 동작할 것임을 나타내는 적어도 하나의 비트를 인터페이스 기술의 구성 공간(configuration space) 내에 설정하는 것일 수 있다. 예컨대, 인터페이스 기술은 적어도 하나의 하드웨어 리소스가 원격으로 동작할 경우 적어도 하나의 하드웨어 리소스를 적어도 처리 모듈로부터 은닉하는(hide) 것일 수 있다.
적어도 하나의 실시예에서, 적어도 하나의 하드웨어 리소스는 적어도 하나의 하드웨어 리소스가 원격으로 동작할 경우 적어도 하나의 다른 디바이스 내의 적어도 하나의 다른 처리 모듈에게는 액세스가능한(accessible) 것일 수 있다. RO 모듈은 적어도 하나의 하드웨어 리소스가 원격으로 동작할 경우 적어도 하나의 하드웨어 리소스 및 적어도 하나의 다른 처리 모듈 간에 메시지를 라우팅하도록(route) 인터페이스 기술을 구성하는 것일 수 있다. RO 모듈은 또한 디바이스 구성에 기반하여 적어도 하나의 다른 처리 모듈과 직접적으로 상호작용하도록 처리 모듈을 구성하는 것일 수 있다. 구성 모듈은 디바이스 구성에 기반하여 처리 모듈을 위한 프로세서 캐시(cache) 또는 메모리 중 적어도 하나 및 적어도 하나의 다른 처리 모듈 간의 코히런시(coherency) 프로토콜을 불능화하는(disable) 것일 수 있다.
적어도 하나의 실시예에서, 디바이스는 디바이스 및 적어도 하나의 다른 디바이스 간의 상호작용에 대해 원격 조정기와 통신하는 상호작용 모니터(interaction monitor)를 더 포함할 수 있다. 인터페이스 기술은, 예컨대 주변 컴포넌트 상호연결 익스프레스(Peripheral Component Interconnect Express: PCIe) 인터페이스 기술일 수 있다. 적어도 하나의 예시적인 구현에서, 디바이스는 원격 조정기를 또한 포함하는 랙(rack) 내에 있을 수 있다. 더욱이, 랙은 적어도 하나의 다른 디바이스를 또한 포함할 수 있다. 본 개시에 부합하여, 하드웨어 기반 디바이스간 리소스 공유를 위한 예시적인 방법은 원격 조정기로부터 디바이스 내의 적어도 하나의 명령어를 수신하는 단계와, 적어도 하나의 명령어에 기반하여 디바이스 내의 구성 모듈 내의 디바이스 구성을 구성하는 단계와, 적어도 하나의 명령어에 기반하여 디바이스 내의 적어도 하나의 하드웨어 리소스로 하여금 로컬로 동작하거나 원격으로 동작할 수 있게 하도록 디바이스 내의 인터페이스 기술을 구성하는 단계를 포함할 수 있다.
도 1은 본 개시의 적어도 하나의 실시예에 따른 하드웨어 기반 디바이스간 리소스 공유를 위한 예시적인 시스템을 보여준다. 시스템(100)은, 예컨대 RO(102), 디바이스(104A), 디바이스(104B)...디바이스(104n)(집합적으로, "디바이스(104A...n)")를 포함할 수 있다. 명료성을 위하여 도 1에는 단지 세 개의 디바이스(104A...n)가 도시되었으나, 시스템(100)의 시스템(100) 실제 구현은, 예컨대 RO(102) 및 디바이스(104A...n)를 포함하는 데이터센터의 크기/유형, 시스템(100)이 설계된 쓰임새(가령, HPC, 클라우드 컴퓨팅 설치, SaaS 등등) 또는 다른 인자에 기반하여 더 많거나 더 적은 디바이스(104A...n)를 포함할 수 있다.
RO(102)는 디바이스(104A...n)의 동작을 "조정"하도록(orchestrate) 구성된 적어도 하나의 컴퓨팅 디바이스(가령, 컴퓨터, 서버, 운영자 스테이션(operator station) 등등)를 포함할 수 있다. 조정(orchestration)은 디바이스(104A...n) 내의 하드웨어 리소스를 판정하는 것, 각 디바이스(104A...n) 내의 하드웨어 리소스가 어떻게 공유될 것인지를 판정하는 것, 구성(가령, 공유할 하드웨어 리소스)에 관해 각 디바이스(104A...n)에 지시하는 것(instructing) 및 디바이스(104A...n) 간의 상호작용을 관리하는 것을 포함할 수 있으나, 이에 한정되지 않는다. 본 문서에서 언급되는 바와 같은 하드웨어 리소스는 개별적인 컴포넌트(가령, 프로세서, 메모리, 인터페이스 등등), 칩셋, 멀티칩 모듈(MultiChip Module: MCM), 애드온 장비(add-on equipment)(모듈, 카드, 플러그인 등등의 형태로 됨)를 포함할 수 있다. 동작의 일례에서, RO(102)는 시스템(100) 내의 데이터 처리 효율을 최대화하는 것, 시스템(100) 내의 데이터 처리 병목(data processing bottleneck)을 제거하는 것, 시스템(100) 내의 전적으로 새로운 데이터 처리 작업을 수용하는 것(accommodating) 등등과 같은 적어도 하나의 목표를 과제로 맡게 될 수 있고, 이와 관련하여 하드웨어 리소스로의 액세스를 재구성하기 위해 명령어를 디바이스(104A...n)에 발행할 수 있다. 본 개시에 부합하여, 각 디바이스(104A...n) 내의 하드웨어 리소스는 소프트웨어 파티셔닝에의 의존 또는 물리적 재구성에 대한 필요성 없이 하향으로 서브 소켓 레벨에 융통성 있게 재할당될 수 있다.
디바이스(104B...n)에도 적용가능한 예시적인 구성이 디바이스(104A)에 대해 이제 기술될 것이다. 디바이스(104A)는 적어도 RO 모듈(106), 구성 모듈(108), 처리 모듈(110), IT(112A), IT(112B), IT(112C), IT(112D...112n)(집합적으로, "IT(112A...n)")(각각의 하드웨어 리소스(Hardware Resource: HR)(116A), HR(116B), HR(116C), HR(116D)...HR(116n)(집합적으로 "HR(116A...n)")에 대응할 수 있음)을 포함할 수 있다. 디바이스(104A) 내의 HR(116A...n)의 실제 양은 디바이스 유형, 크기, 구성 등등과 같은 인자에 따라 달라질 수 있다. 예컨대, (가령, 충만한 타워 케이스를 갖는) 독립형(standalone) 컴퓨팅 디바이스인 디바이스(104A)는 디바이스(104A)가 더욱 조밀한 랙 또는 블레이드(blade) 서버인 경우보다 더 많은 종류 및/또는 양의 HR(116A...n)(가령, 프로세서, 드라이브, 카드 등등)를 다루기 위한 더 나은 전력(power), 용량(capacity), 냉각(cooling) 등등을 포함할 수 있다. 적어도 하나의 예시적인 구현에서, RO(102) 및/또는 디바이스(104A...n)는 모두 동일한 설비(installation) 내(가령, 동일한 방 내, 인접한 랙들 내, 동일한 랙 내 등등)의 랙/블레이드 서버일 수 있다.
적어도 하나의 실시예에서, RO 모듈(106)은 RO(102)와 상호작용하도록 구성될 수 있다. 예컨대, RO 모듈(106)은 디바이스(104A)를 구성하기 위한 명령어를 포함하는 "대역외"(out-of-band) 데이터를 수신할 수 있다. 본 문서에서 언급되는 바와 같이, 대역외는 디바이스(104A)가 디바이스(104B...n)와 통상적으로 통신하는 방식과 별개인 통신하는 방식을 나타낼 수 있다. 예컨대, 전용 통신 채널(dedicated communication channel)이 RO(102) 및 각 디바이스(104A...n) 내의 RO 모듈(106) 간에 존재할 수 있다. RO 모듈(106)은 디바이스(104A)가 오프 상태(가령, 파워 오프됨(powered off), 하이버네이션(hibernation))에 있거나 온 상태(가령, 활성(active))에 있는 경우 명령어를 수신할 수 있다. 명령어를 수신한 후, RO 모듈(106)은 명령어에 기반하여 구성 모듈(108)을 구성할 수 있다. 구성 모듈(108)은, 예컨대 부트(boot), 리부트(reboot)로부터 활성이 됨, 하이버네이션으로부터 깨어남(waking up) 등등의 경우에 디바이스(104A) 내의 모드(mode)를 설정하기 위한 펌웨어가 인코딩된 재기록가능한(rewritable) 비휘발성(nonvolatile: NV) 메모리를 포함할 수 있다. 적어도 하나의 실시예에서, 구성 모듈(108)은 "파티셔닝된" 구성으로든 또는 "병합된" 구성으로든 디바이스(104A)를 구성할 수 있다. 파티셔닝된 구성은, 디바이스(104A)가 모든 HR(116A...n)의 소유권(ownership)을 유지하도록 구성되고, 가상화, RSA 등등과 같은 기존의 공유 기술이 주어지면 공유가 가능할 수 있는 "통상적인" 구성일 수 있다. 본 개시와 부합하여, 병합된 구성은 후술되는 바와 같이 하드웨어 기반 디바이스간 리소스 공유를 사용하여 서브 소켓 레벨에서 하드웨어 리소스를 공유하도록 디바이스(104A)가 재구성되는 것을 수반할 수 있다.
처리 모듈(110)은 적어도 하나의 데이터 프로세서를, 적어도 하나의 데이터 프로세서를 지원하기 위해 요구되는 임의의 회로망과 더불어 포함할 수 있다. 처리 모듈(110)의 예시적인 내용이 도 2에서 더욱 상세히 논의될 것이다. 병합된 구성에서, 처리 모듈(110)은 디바이스(104B...n) 내의 다른 처리 모듈(110)과 직접적으로 상호작용하도록 구성될 수 있다. 본 문서에서의 설명을 위하여, 디바이스(104A) 내의 "IT"는 HR(116A...n)로 하여금 디바이스(104A) 내의 다른 리소스와 상호작용할 수 있게 하는 장비(가령, 소켓, 버스, 지원 회로망 등등) 및 소프트웨어(가령, 드라이버, 구성 레지스터 등등) 양자 모두를 포함할 수 있다. 예컨대, PCIe 인터페이스 기술이 이용되고 있다고 가정되면, IT(112A...n)는 HR(116A...n)이 설치된 디바이스(104A) 내의 물리적 소켓에 대응하는 PCIe 루트 포트(root port)일 수 있다. PCIe가 본 문서에서 일례로서 이용되나, 본 개시와 부합하는 실시예는 단지 PCIe를 이용하여 구현되는 것에 한정되지 않는다. 본 개시와 부합하여, 유사한 동작상의 특성을 갖는 다른 IT가 이용될 수도 있다. 병합된 구성에서, RO 모듈(106)은 HR(116A...n)로 하여금 로컬로 동작하거나 원격으로 동작할 수 있게 하도록 IT(112A...n)를 구성할 수 있다. 디바이스(104A)는 로컬로 동작하도록 구성된 임의의 HR(116A...n)의 액세스 및 소유권을 유지할 수 있으나, 다른 디바이스(가령, 디바이스(104B...n)) 내의 처리 모듈(110)은 원격으로 동작하도록 구성된 임의의 HR(116A...n)를 액세스하고 제어하는 것이 가능할 수 있다. 적어도 하나의 실시예에서, RO 모듈(106)은 로컬 또는 원격 동작을 나타내기 위해 IT(112A...n)에 대해 구성 공간(configuration space) 내의 비트를 설정할 수 있다. 예컨대, IT(112A), IT(112C) 및 IT(112D)는 도 1에서 "L" 플래그(114)와 함께 도시되어 HR(116A), HR(116C) 및 HR(116D)로 하여금 로컬로 동작할 수 있게 하기 위해 RO 모듈(106)이 구성 공간 내의 비트를 설정하였음을 나타내는 반면, IT(112B) 및 IT(112n)는 "R" 플래그(114)와 함께 도시되어 HR(116B) 및 HR(116n)로 하여금 원격으로 동작할 수 있게 하기 위해 구성 공간 내에서 비트가 설정되었음을 나타낸다. 이런 방식으로, HR(116A...n) 각각을 위한 공유가 개별적으로 판정 및 구성될 수 있다.
동작의 일례에서, RO(102)는 병합된 동작을 위해 디바이스(104)를 구성하도록 RO 모듈(106)에 명령어를 적어도 제공할 수 있다. RO 모듈(106)은 파워 인가(power up), 하이버네이션으로부터의 복귀(recovery) 등등 시에 병합된 동작을 위해 디바이스(104A)를 구성하도록 진행할 수 있는 구성 모듈(108) 내의 병합된 구성을 설정할 수 있다. RO 모듈(106)은 또한 RO(102)로부터 수신된 명령어에 기반하여 로컬 또는 원격 동작을 위해 IT(112A...n)를 구성할 수 있다. 예컨대, 플래그(114)에 의해 도시된 바와 같이, IT(112A), IT(112C) 및 IT(112D)는 HR(116A), HR(116C) 및 HR(116D)로 하여금 로컬로 동작할 수 있게 하도록 구성될 수 있고, 결과적으로, HR(116A), HR(116C) 및 HR(116D)는 처리 모듈(110)에게는 액세스가능한 것일 수 있다. 반대로, IT(112B) 및 IT(112n)는 HR(116B) 및 HR(116n)이 원격으로 동작할 수 있게 하도록 구성될 수 있다. 적어도 하나의 실시예에서, HR(116B) 및 HR(116n)은 디바이스(104A)의 부트 업(boot up) 동안에 적어도 처리 모듈(110)로부터 은닉될 수 있고, 따라서 로컬로는 액세스불가능하게 될 것이다. 도 1에 도시된 바와 같이, 적어도 디바이스(104B)는 HR(116B)을 액세스하는 것이 가능할 수 있고 적어도 디바이스(104n)는 HR(116n)을 액세스하는 것이 가능할 수 있다. 마찬가지로, 디바이스(104A)는 디바이스(104n) 내에서 원격으로 동작하도록 구성된 HR을 액세스하는 것이 가능할 수 있고, 디바이스(104B)는 디바이스(104B) 내에서 원격으로 동작하도록 구성된 HR을 액세스하는 것이 가능할 수 있는 등등이다. 적어도 하나의 실시예에서, 다른 디바이스 내의 HR을 액세스하는 것은 각 디바이스 내에서 동작하는 처리 모듈(110) 간의 직접 링크(direct link)에 의해 가능하게 될 수 있다. 상이한 처리 모듈(110) 간의 상호작용의 일례가 도 3에 보여진 구현과 관련하여 논의될 것이다.
도 2는 본 개시의 적어도 하나의 실시예에 따라 사용가능한 디바이스를 위한 예시적인 구성을 보여준다. 항목 번호 뒤의 아포스트로피(apostrophe)의 포함(가령, 104A')은 항목의 예시적인 실시예가 도시되고 있음을 나타낸다. 예컨대, 디바이스(104A')는 도 1에 개시된 활동들 중 임의의 것을 수행하는 것이 가능할 수 있다. 그러나, 디바이스(104A')는 본 개시와 부합하는 실시예에서 사용가능한 장치의 일례로서만 제시되며, 다양한 실시예 중 임의의 것을 구현의 임의의 특정한 방식에 한정하도록 의도된 것은 아니다. 더욱이, 도 2에 보여진 디바이스(104A')를 위한 예시적인 구성은 또한 디바이스(104B...n) 중 하나 이상에 적용가능할 수 있다.
디바이스(104A')는 예컨대 디바이스의 동작을 관리하는 시스템 모듈(200)을 포함할 수 있다. 시스템 모듈(200)은 예컨대 처리 모듈(110'), 메모리 모듈(202), 전력 모듈(204), 사용자 인터페이스 모듈(206) 및 통신 인터페이스 모듈(208)을 포함할 수 있다. 디바이스(104A')는 통신 모듈(210) 및 RO 모듈(106')을 더 포함할 수 있다. 통신 모듈(210) 및 RO 모듈(106')은 시스템 모듈(200)과 별개인 것으로 보여지나, 도 2에 도시된 예시적인 구성은 단지 설명을 위하여 제공되었다. 통신 모듈(210) 및/또는 RO 모듈(106')과 연관된 기능 중 일부 또는 전부는 시스템 모듈(200) 내에 또한 포함될 수 있다.
디바이스(104A')에서, 처리 모듈(110')은 별개의 컴포넌트들 내에 놓인 하나 이상의 프로세서, 또는 대안적으로, 단일 컴포넌트 내에(가령, 시스템 온 칩(System-on-a-Chip: SoC) 구성 내에) 구체화된(embodied) 하나 이상의 코어와, 임의의 프로세서 관련 지원 회로망(가령, 브리징(bridging) 인터페이스 등등)를 포함할 수 있다. 예시적인 프로세서는 펜티엄(Pentium), 제온(Xeon), 아이타니엄(Itanium), 셀러론(Celeron), 애텀(Atom), 쿼크(Quark), 코어 i 시리즈(Core i-series), 코어 M 시리즈(Core M-series) 제품군을 포함하여 인텔 사로부터 구할 수 있는 다양한 x86-기반 마이크로프로세서, 고급 RISC(가령, Reduced Instruction Set Computing) 머신(Advanced RISC Machine) 또는 "ARM" 프로세서 등등을 포함할 수 있으나, 이에 한정되지 않는다. 지원 회로망의 예는 처리 모듈(110')이 디바이스(104A') 내에서 상이한 속도로, 상이한 버스 상에서, 기타 등등으로 동작하고 있을 수 있는 다른 시스템 컴포넌트와 상호작용할 수 있는 인터페이스를 제공하도록 구성된 칩셋(가령, 인텔 사로부터 구할 수 있는 노스브리지(Northbridge), 사우스브리지(Southbridge) 등등)을 포함할 수 있다. 지원 회로망과 통상 연관된 기능의 일부 또는 전부는 또한 (가령, 인텔 사로부터 구할 수 있는 샌디 브리지(Sandy Bridge) 계통의 프로세서에서와 같이) 프로세서와 동일한 물리적 패키지 내에 포함될 수 있다.
처리 모듈(110')은 디바이스(104A') 내의 다양한 명령어를 실행하도록 구성될 수 있다. 명령어는 처리 모듈(110')로 하여금 데이터를 판독하는 것(reading), 데이터를 기입하는 것(writing), 데이터를 처리하는 것(processing), 데이터를 편성하는 것(formulating), 데이터를 전환하는 것(converting), 데이터를 변환하는 것(transforming) 등등과 관련된 활동을 수행하게 하도록 구성된 프로그램 코드를 포함할 수 있다. 정보(가령, 명령어, 데이터 등등)는 메모리 모듈(202) 내에 저장될 수 있다. 메모리 모듈(202)은 고정된(fixed) 또는 탈착가능한(removable) 포맷으로 된 랜덤 액세스 메모리(Random Access Memory: RAM) 및/또는 판독 전용 메모리(Read-Only Memory: ROM)를 포함할 수 있다. RAM은, 가령 정적 RAM(Static RAM: SRAM) 또는 동적 RAM(Dynamic RAM: DRAM)과 같이, 디바이스(104A')의 동작 동안에 정보를 유지하도록 구성된 휘발성(volatile) 메모리를 포함할 수 있다. ROM은 디바이스(104A')가 활성화되는 경우 명령어를 제공하도록 BIOS, UEFI 등등에 기반하여 구성된 비휘발성(NV) 메모리 모듈, 프로그램가능 메모리, 예를 들어 전자적 프로그램가능 ROM(Electronic Programmable ROM: EPROM), 플래시(Flash) 등등을 포함할 수 있다. 다른 고정된/탈착가능한 메모리는 예컨대 플로피 디스크, 하드 드라이브 등등과 같은 자기적(magnetic) 메모리, 솔리드 스테이트 플래시 메모리(solid state flash memory)와 같은 전자적 메모리(가령, 임베딩된 멀티미디어 카드(embedded multimedia card: eMMC) 등등), 탈착가능한 메모리 카드 또는 스틱(가령, 마이크로 저장 디바이스(micro storage device: uSD), USB 등등), 콤팩트 디스크 기반 ROM(Compact Disc-based ROM: CD-ROM), 디지털 비디오 디스크(Digital Video Disk: DVD), 블루레이 디스크(Blu-Ray Disk) 등등과 같은 광학적(optical) 메모리를 포함할 수 있으나, 이에 한정되지 않는다.
전력 모듈(204)은 내부 전원(가령, 배터리, 연료 전지 등등) 및/또는 외부 전원(가령, 전자기계적 또는 태양광 발전기, 전력 그리드(power grid), 외부 연료 전지 등등), 그리고 동작하는 데 필요한 전력을 디바이스(104A')에 제공하도록 구성된 관련 회로망을 포함할 수 있다. 사용자 인터페이스 모듈(206)은, 예컨대 다양한 입력 메커니즘(가령, 마이크, 스위치, 버튼, 노브(knob), 키보드, 스피커, 터치 감응 표면(touch-sensitive surface), 이미지를 포착하고/하거나 근접(proximity), 거리, 모션(motion), 제스처, 배향(orientation), 생체측정(biometric) 데이터 등등을 감지하도록 구성된 하나 이상의 센서) 및 다양한 출력 메커니즘(가령, 스피커, 디스플레이, 발광(lighted)/점멸(flashing) 지시자(indicator), 진동, 모션 등등을 위한 전자기계적 컴포넌트)과 같이, 사용자로 하여금 디바이스(104A')와 상호작용할 수 있게 하는 하드웨어 및/또는 소프트웨어를 포함할 수 있다. 사용자 인터페이스 모듈(206) 내의 하드웨어는 디바이스(104A') 내에 포함될 수 있고/있거나 유선 또는 무선 통신 매체를 통하여 디바이스(104A')에 커플링될(coupled) 수 있다. 사용자 인터페이스 모듈(206')은 예컨대 디바이스(104A')가 사용자 인터페이스 모듈(206)을 포함하지 않고 대신에 사용자 인터페이스 기능을 위해 다른 디바이스(가령, 관리 단말(management terminal))에 의존하는 서버(가령, 랙 서버, 블레이드 서버 등등)인 경우와 같은 어떤 상황에서는 선택적일 수 있다.
통신 인터페이스 모듈(208)은 유선 및/또는 무선 통신을 지원하도록 구성된 리소스를 포함할 수 있는 통신 모듈(210)을 위해 패킷 라우팅(packet routing) 및 다른 제어 기능을 관리하도록 구성될 수 있다. 몇몇 사례에서, 디바이스(104A')는 중앙화된(centralized) 통신 인터페이스 모듈(208)에 의해 관리되는 한 개보다 많은 통신 모듈(210)(가령, 유선 프로토콜 및/또는 무선 전파기기를 위한 별개의 물리적 인터페이스 모듈들을 포함함)을 포함할 수 있다. 유선 통신은, 예컨대 이더넷(Ethernet), USB, 파이어와이어(Firewire), 썬더볼트(Thunderbolt), 디지털 비디오 인터페이스(Digital Video Interface: DVI), 고선명 멀티미디어 인터페이스(High-Definition Multimedia Interface: HDMI) 등등과 같은, 직렬 및 병렬 유선 매체들을 포함할 수 있다. 무선 통신은, 예컨대 인접 무선 매체(close-proximity wireless medium)(가령, RF 식별(RF Identification: RFID) 또는 근접장 통신(Near Field Communications: NFC) 표준에 기반한 것과 같은 무선 주파수(Radio Frequency: RF), 적외선(infrared: IR) 등등), 단거리 무선 매체(short-range wireless medium)(가령, 블루투스(Bluetooth), WLAN, Wi-Fi 등등), 장거리 무선 매체(long range wireless medium)(가령, 셀룰러 광역 무선 통신 기술(cellular wide-area radio communication technology), 위성 기반 통신 등등), 음파를 통한 전자 통신 등등을 포함할 수 있다. 하나의 실시예에서, 통신 인터페이스 모듈(208)은 통신 모듈(210) 내에서 활성인 무선 통신들이 서로 간섭하는 것을 방지하도록 구성될 수 있다. 이 기능을 수행하는 중에, 통신 인터페이스 모듈(208)은, 예컨대 송신을 기다리는 메시지의 상대적 우선순위에 기반하여, 통신 모듈(210)을 위한 활동을 스케줄링할(schedule) 수 있다. 도 2에 개시된 실시예는 통신 인터페이스 모듈(208)을 통신 모듈(210)과 별개인 것으로 보여주나, 통신 인터페이스 모듈(208) 및 통신 모듈(210)의 기능이 동일한 모듈 내에 포함되는 것이 또한 가능할 수 있다.
본 개시와 부합하여, RO 모듈(106')은 적어도 시스템 모듈(200), 메모리 모듈(202) 및 통신 모듈(210)과 상호작용할 수 있다. 동작의 일례에서, RO 모듈(106')은 통신 모듈(210)을 통하여 수행되는 유선 및/또는 무선 통신을 통하여 RO(102)와 상호작용할 수 있다. 통신 모듈(210)을 통하여 RO(102)로부터 명령어를 수신한 후, RO 모듈(106')은 메모리 모듈(202) 내의 구성 모듈(108')을 구성할 수 있다. 더욱이, RO 모듈(106')은 HR(116A...n)로 하여금 로컬로 또는 원격으로 동작할 수 있게 하고/하거나, 또한 디바이스(104A')로 하여금 다른 디바이스로부터 이용가능할 수 있는 원격 HR을 액세스할 수 있게 하도록 IT(112A...n)를 구성하기 위해 일반적으로 시스템 모듈(200)(도 2에 도시되지 않음) 내의 IT(112A...n)와 상호작용할 수 있다.
도 3은 본 개시의 적어도 하나의 실시예에 따른 하드웨어 기반 디바이스간 리소스 공유의 예시적인 구현을 보여준다. 예시적인 디바이스(104A') 및 예시적인 디바이스(104B')는 도 3(이의 설명은 인텔 사에 의해 개발된 다양한 제품, 기술 등등에 대해 언급을 할 수 있음)에서 상호작용하는 것으로 도시된다. 이들 언급은 손쉽게 이해할 수 있는 예들(도 3에 보여진 상호작용을 이로부터 이해할 것임)로서의 역할을 할 수 있으나, 그것들은 본 개시와 부합하는 실시예를 임의의 특정한 방식의 구현, 구현 기술 등등에 한정하도록 의도된 것이 아니다.
기존의 컴퓨팅 디바이스(가령, 서버)는 두 개의 노드를 포함하는 플랫폼이 두 개의 별개의 플랫폼으로 하드 파티셔닝될(hard partitioned) 수 있는 "파티셔닝된" 구성을 지원할 수 있다. 이 파티션은 두 개의 일-노드(one-node) 플랫폼 간에 임의의 HR(116A...n)의 공유가 전혀 없기 때문에 "하드"(hard)하다. (가령, VM을 통한) 소프트웨어 가상화는 어떤 공유 능력을 제공할 수 있지만, 유용한 하드웨어 기능을 액세스할 능력을 없앨 수 있다. PCIe 스위치는 하드웨어 리소스를 상당한 입도 레벨(fairly granular level)로 공유하는 것이 가능할 수 있지만, 이 솔루션은 시스템 레벨에서 요구되는 별도의 컴포넌트들의 총 개수를 증가시킬 수 있다. 본 개시와 부합하여, 전통적인 하드 파티셔닝은 임의의 노드 또는 파티션으로 하여금 선택된 IT(112A...n)(가령, PCIe 루트 포트 계층구조 또는 PCIe 디바이스)를 임의의 다른 노드 또는 파티션에 물리적으로 재할당할 수 있게끔 하는 것에 의해 지원되는 HR(116A...n)의 풀링 및 공유로써 향상될 수 있다. 적어도 하나의 실시예에서, 파티셔닝은 코히런트 도메인(coherent domain)에만 한정될 수 있고, 하나의 노드 또는 파티션 내에 물리적으로 구현된 PCIe 루트 포트 및/또는 PCIe 디바이스와 같은 하드웨어 리소스는 다른 노드 또는 파티션과 공유될 수 있다.
기존의 파티셔닝 방법론에서, 인텔 사에 의해 개발된 퀵패쓰 상호연결(Quickpath Interconnect: QPI), 카이저 테크놀로지 상호연결(Keizer Technology Interconnect: KTI), 인텔 사에 의해 또한 개발된 개방형 코어 연결 기술(open core connection technology)과 같은 점대점(point-to-point) 프로세서 연결 기술은 불능화될 수 있다. 더욱 구체적으로 프로세서들이 파티셔닝된 노드들 간에 직접적으로 메시지들을 송신하고 수신할 수 있게 하는 QPI/KTI 링크는 이용되지 않을 수 있다. 그러나, 본 개시와 부합하여, 풀링된 리소스 아키텍처에서 QPI/KTI 링크는 HR(116A...n)의 공유를 가능케 하기 위해 노드 또는 파티션 간에 이용될 수 있다. 적어도 하나의 실시예에서, QPI/KTI는 파티션들에 걸쳐서 코히런시를 유지하기 위한 특징 없이 이용될 수 있다.
디바이스(104A' 및 104B')를 위한 예시적인 구현이 도 3에 보여진다. 디바이스(104A')는 예컨대 노스 다이(north die)(300A) 및 사우스 다이(south die)(302A)를 포함할 수 있다. 적어도 하나의 실시예에서, 노스 다이(300A)는, 예컨대 인텔 사에 의해 개발된 다이렉트 미디어 인터페이스(Direct Media Interface: DMI)를 통하여, 사우스 다이(302A)와 통신할 수 있다. 노스 다이(300A)(가령, 노스브리지)는 마이크로프로세서 컴포넌트, 칩셋, MCM 등등에서 통상 발견되는 컴포넌트를 포함할 수 있다. 예컨대, 노스 다이(300A)는 하나 이상의 처리 코어(304A), 메모리 제어기(306A) 및 PCIe 구성 공간(308A)을 포함할 수 있다. 메모리 제어기(306A)는 디바이스(104A') 내의 메모리에 대한 데이터 액세스 동작을 제어할 수 있다. PCIe 구성 공간(308A)은 PCIe 루트 포트들(가령, 디바이스(104A') 내의 물리적인 PCIe 슬롯들에 대응함) 및 통합된 및/또는 별도인 PCIe I/O 디바이스들이 적어도 데이터 라우팅에 관해 어떻게 구성되는지를 제어할 수 있다. 사우스 다이(302A)(가령, 사우스브리지)는 디바이스(104A')의 일반적인 I/O 기능과 통상적으로 연관된 컴포넌트를 포함할 수 있다. 사우스 다이(302A)는 플랫폼 제어기 허브(Platform Controller Hub: PCH)로 지칭될 수도 있다. 예컨대, 사우스 다이(302A)는 관리 엔진(Management Engine: ME)(310A), 전력 관리 제어기(Power Management Controller: PMC)(312A) 및 상호작용 모니터(314A)를 포함할 수 있다. ME(310A)는 도 1의 RO 모듈(106)에 대응하는 독립형 프로세서를 포함할 수 있다. 예컨대, ME(310A)는 디바이스(104A')의 나머지가 비활성인 경우에도 (가령, 원격 조정기(102)로부터) OOB 네트워크 통신을 수신하는 것이 가능할 수 있다. PMC(312A)는 HR(116A...n)을 포함하는 디바이스(104A')를 위해 전력 동작을 관리할 수 있다. 적어도 하나의 실시예에서, 상호작용 모니터(314A)는 노드들(가령, 디바이스(104A' 및 104B')) 간의 상호작용을 감시할 수 있고 이들 상호작용에 대해 RO(102)에 정보를 제공할 수 있다. 도 3에 도시되지 않았으나, 본 개시와 부합하여 PCH로서 동작하는 사우스 다이(302A)는 SATA 제어기, USB 제어기, 이더넷 제어기, 직렬 병렬 인터페이스(Serial Peripheral Interface: SPI), 낮은 핀 카운트 버스를 통한 향상된 SPI(Enhanced SPI through a low pin count bus: eSPI/LPC), 범용 비동기식 수신기/송신기(Universal Asynchronous Receiver/Transmitter: UART) 및 다른 통신 마스터/슬레이브 인터페이스를 더 포함할 수 있다. 대응하는 구성요소들(300B 내지 314B)은 디바이스(104A')에 관해서 전술된 것과 동일하거나 유사한 동작을 디바이스(104B')에 대해 수행할 수 있다.
디바이스(104A')가 적어도 디바이스(104B')와의 병합된 동작을 위해 구성될 수 있는 동작의 일례가 이제 논의될 것이다. 이들 동작은 디바이스(104A')에 관해 제시될 것이나, 그것들은 디바이스(104B')에 똑같이 적용가능하다. 도 3의 "1"에서 도시된 바와 같이, "파티셔닝하라"는 또는 "병합하라"는 명령어를 포함하는 OOB 데이터가 디바이스(104A')에서 수신될 수 있다. 예컨대 RO(102)는 디바이스(104A')가 공유된 하드웨어 구성에서(가령, 병합됨) 또는 레거시(legacy)/비-레거시(non-legacy) 대칭적 멀티프로세싱(Symmetric MultiProcessing: SMP) 구성에서 (가령, 파티셔닝됨) 독립적으로 동작할 것인지 ME(310A)에 통신할 수 있다. 이 상호작용은 디바이스(104A')가 S5 상태에 있는 경우(가령, 파워 오프됨)에 발생할 수 있다. ME(310A)는 디바이스(104A')가 S0(가령, 파워가 온된 상태)로 전이하는 경우 상태 레지스터(status register)를 통해 BIOS(가령, 구성 모듈(108))에 동작의 모드를 나타낼 수 있다. 도 3의 "2"에서 도시된 바와 같이, RO(102)는 또한 어느 PCIe 루트 포트 및/또는 로컬 통합된/별도인 PCIe I/O 디바이스가 원격 노드(가령, 디바이스(104B'))에 할당되는지에 관하여 ME(310A)에 지시할 수 있다. RO(102)는 또한 어느 원격 노드에 로컬 PCIe IO 디바이스가 재할당되었는지 열거할 (수 있고, 가령 마찬가지로 원격 노드들에게, 원격으로 동작하는 PCIe IO 디바이스가 그것들에 할당되었음을 통지할) 수 있다. 적어도 하나의 실시예에서, ME(310)는 모든 PCIe 루트 포트를 위한 그리고 모든 PCIe 통합된/별도인 디바이스를 위한 PCIe 구성 공간(308A) 내의 로컬/원격(Local/Remote: L/R) 비트를 설정할 수 있다.
디바이스(104A')가 오프 상태(가령, S4 또는 S5)로부터 온 상태(가령, S0)로 전이하는 것에 후속하여, ME(310A)는 원격 노드(가령, 디바이스(104B'))에 재할당되는 각각의 PCIe 루트 포트 및/또는 통합된/별도인 PCIe 디바이스를 위한 특정 KTI/QPI 링크 번호로 모든 I/O 동작을 재지향하거나(redirect) 재맵핑하기 위해 통합된 I/O(Integrated I/O: IIO) 라우팅 비트를 설정할 수 있다. 예컨대, 각 노드에서 IIO 전력 제어 유닛(Power Control Unit: PCU)은 원격 노드 ID(가령, 디바이스(104B')와 같은, HR(116A...n)을 공유하고 있는 디바이스를 식별함)에 기반하여 원격 PCIe I/O 디바이스로의 경로를 판정할 수 있다. IIO는 경로에 기반하여 원격 노드로부터/로, 예컨대 PCIe 구성 사이클(PCIe config cycle), PCIe 벤더 정의된 메시지(PCIe vendor defined message), 직접 메모리 액세스(Direct Memory Access: DMA) 및 메모리 맵핑된 I/O(Memory-Mapped I/O: MMIO) 사이클을 라우팅하도록 수정될 수 있다. 적어도 하나의 실시예에서, 레거시 INTR 핀은 메시지 시그널링된 인터럽트(message signaled interrupt)(가령, MSI-X 확장)가 여전히 지원될 수 있다는 점을 제외하고는 인터럽트 라우팅(interrupt routing)을 회피하도록 지원되지 않을 수 있다. IIO는 원격 디바이스 트랜잭션(remote device transaction)을 위한 TLB(Transition Lookaside Buffer) 탐색을 우회할(bypass) 수 있다.
도 3의 "3"에서 도시된 바와 같이, PMC(312A)는 PCIe 구성 공간(308A) 내에 "R" 구성을 갖는 디바이스를 은닉할 수 있다. 은닉하는 것은 HR(116A...n)로 하여금 디바이스(104A')에 가시적이지 않게 하기 위해 IT(112A...n)의 구성을 변경하는 것을 포함할 수 있다. 결과적으로, 로컬 BIOS는 PCIe 루트 포트 또는 PCIe 컴포넌트/디바이스를, 만약 그것이 원격 노드에 할당된다면 발견하거나 열거하지 않을 것이다. 도 3의 "4"에서 도시된 바와 같이, 각 노드에서 BIOS는 QPI/KTI 연결을 구성할 것이지만 노드들 간의 QPI/KTI 상의 캐시/메모리 코히런시 프로토콜을 불능화할 수 있다. 프로그램될 수 있는 IIO 내의 정확한 레지스터는 비-아키텍처적(non-architectural)일 수 있지만, BIOS로 하여금 노드들에 걸친 모든 스누핑(snooping)을 불능화하게 할 수 있고, 따라서 각 노드는 자기 자신의 코히런시 도메인일 수 있다. 노스 다이(300A)는 이후 도 3의 "5"에서 도시된 바와 같이 OPI/KTI 상에서 적어도 노스 다이(300B)와 상호작용하기 시작할 수 있다. 도 3의 "6"에서 도시된 바와 같이, 상호작용 모니터(314A)는 일반 목적 OOB 데이터 메시징 엔진으로서 노드내(intra node) 상호작용을 다루는 데 사용될 수 있다. 적어도 하나의 실시예에서, IIO는 QPI/KTI를 통하여 디바이스(104A')에 연결된 디바이스의 원격 액세스 서비스(Remote Access Service: RAS)/에러 핸들링(error handling), 보안 및 전력 관리 메시지를 재라우팅하도록(re-route) 확대될 수 있다. 리셋 시퀀싱(reset sequencing)은 또한 풀링된/공유된 리소스를 지원하도록 확대될 수 있다. QPI/KTI의 사용은 기존의 기술을 쓸 수 있으나, 향후의 연결은 다른 기존의 연결 기술, 맞춤식 연결 기술(custom connection technology) 일반 산업 표준 구현(general industry standard implementation) 등등으로써 구현될 수 있다.
도 4는 본 개시의 적어도 하나의 실시예에 따른 하드웨어 기반 디바이스간 리소스 공유를 위한 예시적인 동작을 보여준다. 동작(400)에서 명령어가 RO로부터 (가령, 디바이스 내의 RO 모듈 내에) 수신될 수 있다. 그리고 디바이스는 동작(402)에서 오프 상태(가령, S4 또는 S5)에서 온 상태(가령, S0)로 전이할 수 있다. 동작(404)에서 RO로부터 수신된 명령어는 디바이스 내의 구성 모듈(가령, BIOS)을 구성하는 데 사용될 수 있다. 이후 동작(406)에서 디바이스가 병합된 구성에서 동작하도록 지시받았는지에 관해 판정이 행해질 수 있다. 만약 동작(406)에서 디바이스가 병합된 구성에서 동작하지 않아야 한다고 판정된다면, 동작(408)에서 디바이스의 시동(startup)은 파티셔닝된 동작을 위해 계속될 수 있다.
디바이스가 병합된 구성에서 동작해야 한다는 동작(406)에서의 판정에 후속하여, (가령, RO로부터 수신된 명령어에 기반하여) 디바이스 내의 적어도 하나의 HR이 적어도 하나의 다른 디바이스와 공유될 것인지에 관해 동작(410)에서 추가의 판정이 행해질 수 있다. 만약 동작(410)에서 디바이스 내의 적어도 하나의 HR이 공유될 것이라고 판정된다면, 동작(412)에서 로컬(L) 또는 원격(R) 비트가 IT 구성 공간 내에 구성될 수 있다. L/R 비트를 설정하는 것은 각 HR에 대해 하나의 비트를 설정하는 것(가령, "1"은 로컬을 나타내고 "0"은 원격을 나타냄) 또는 각 HR에 대해 상이한 비트들을 설정하는 것을 포함할 수 있다. 동작(414)에서 라우팅(가령, PCIe, IIO, MMIO, DMA, 에러 핸들링 등등)은 원격 동작을 위해 플래그표시된(flagged) 각 HR을 위해 구성될 수 있고, 추가로, 원격으로 동작하는 각 HR은 그것이 부트 업 동안에 디바이스에 의해 이용가능한 HR로서 인식되는 것을 방지하도록 은닉될 수 있다.
동작(410)에서의 "아니요" 판정 또는 동작(414)에 후속해서(가령, RO로부터 수신된 명령어에 기반하여) 디바이스가 다른 디바이스 내의 원격 HR을 액세스하도록 구성되어야 할지에 관한 동작(416)에서의 추가의 판정이 뒤따를 수 있다. 만약 적어도 하나의 원격 HR이 액세스될 것이라고 동작(416)에서 판정된다면, 동작(418)에서 라우팅은 디바이스 내의 적어도 처리 모듈로 하여금 원격 HR을 액세스할 수 있게 하도록 디바이스 내에 설정될 수 있다. 동작(416)에서의 "아니요" 판정 또는 또는 동작(418)에 후속해서, 예컨대 QPI/KTI 링크를 구성하는 것, 캐시/메모리 코히런시 프로토콜을 불능화하는 것, 인터럽트 라우팅을 구성하는 것 등등을 포함하여 처리 모듈간 통신(inter-processing module communication)이 구성될 수 있는 동작(420)이 뒤따를 수 있다. 동작(422)에서 상호작용 모니터는 노드들 간의 상호작용에 대해 관리하고 보고하도록 가능화될(enabled) 수 있다. 동작(424)에서 병합된 동작을 위해 디바이스에서 시동이 계속될 수 있다.
도 4는 일 실시예에 따른 동작을 보여주나, 도 4에 묘사된 동작 중 전부가 다른 실시예를 위해 필수적인 것은 아님이 이해되어야 한다. 사실, 본 개시의 다른 실시예에서, 도 4에 묘사된 동작 및/또는 본 문서에 기술된 다른 동작은, 도면 중 어느 것에도 구체적으로 도시되지 않은 방식으로 조합될 수 있지만, 여전히 본 개시와 완전히 부합한다는 점이 본 문서에서 충분히 고려된다. 그러므로, 하나의 도면에서 정확히 도시되지 않은 특징 및/또는 동작에 지향된 청구항이 본 개시의 범주 및 내용 내인 것으로 간주된다.
이 출원에서 그리고 청구항에서 사용되는 바와 같이, 용어 "및/또는"에 의해 결합된 항목들의 목록은 목록화된 항목들의 임의의 조합을 의미할 수 있다. 예컨대, 문구(phrase) "A, B 및/또는 C"는 A; B; C; A 및 B; A 및 C; B 및 C; 또는 A, B 및 C를 의미할 수 있다. 이 출원에서 그리고 청구항에서 사용되는 바와 같이, 용어 "중의 적어도 하나"에 의해 결합된 항목들의 목록은 목록화된 항목들의 임의의 조합을 의미할 수 있다. 예컨대, 문구 "A, B 또는 C 중 적어도 하나"는 A; B; C; A 및 B; A 및 C; B 및 C; 또는 A, B 및 C를 의미할 수 있다.
본 문서 내의 임의의 실시예에서 사용되는 바와 같이, 용어 "모듈"은 앞서 언급된 동작 중 임의의 것을 수행하도록 구성된 소프트웨어, 펌웨어 및/또는 회로망을 나타낼 수 있다. 소프트웨어는 비일시적(non-transitory) 컴퓨터 판독가능 저장 매체 상에 기록된 소프트웨어 패키지, 코드, 명령어, 명령어 세트 및/또는 데이터로서 구체화될 수 있다. 펌웨어는 메모리 디바이스 내에 하드코딩된(hard-coded)(가령, 비휘발성) 코드, 명령어 또는 명령어 세트 및/또는 데이터로서 구체화될 수 있다. "회로망"은, 본 문서 내의 임의의 실시예에서 사용되는 바와 같이, 예컨대 단독으로 또는 임의의 조합으로, 고정배선된 회로망(hardwired circuitry), 하나 이상의 개별적인 명령어 처리 코어를 포함하는 컴퓨터 프로세서와 같은 프로그램가능 회로망(programmable circuitry), 상태 머신 회로망(state machine circuitry) 및/또는 프로그램가능 회로망에 의해 실행되는 명령어를 저장하는 펌웨어를 포함할 수 있다. 모듈은, 집합적으로 또는 개별적으로, 더 큰 시스템(예컨대 집적 회로(Integrated Circuit: IC), 시스템 온 칩(System on-Chip: SoC), 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 서버, 스마트폰 등등)의 일부를 형성하는 회로망으로서 구체화될 수 있다.
본 문서에 기술된 동작 중 임의의 것은 하나 이상의 프로세서에 의해 실행되는 경우 방법을 수행하는 명령어가 개별적으로 또는 조합되어 저장된 하나 이상의 저장 매체(가령, 비일시적 저장 매체)를 포함하는 시스템 내에 구현될 수 있다. 여기서, 프로세서는 예컨대 서버 CPU, 모바일 디바이스 CPU 및/또는 다른 프로그램가능 회로망을 포함할 수 있다. 또한, 본 문서에 기술된 동작은 한 개가 넘는 상이한 물리적 위치들에서의 처리 구조들과 같은 복수의 물리적 디바이스에 걸쳐서 분산될 수 있다고 의도된다. 저장 매체는 임의의 유형의 유형적 매체(tangible medium), 예컨대 하드 디스크, 플로피 디스크, 광학적 디스크, 콤팩트 디스크 판독 전용 메모리(Compact Disk Read-Only Memory: CD-ROM), 콤팩트 디스크 재기록가능(Compact Disk ReWritable: CD-RW) 및 자기적-광학적 디스크(magneto-optical disk)를 포함하는 임의의 유형의 디스크, 반도체 디바이스, 예를 들어 판독 전용 메모리(Read-Only Memory: ROM), 랜덤 액세스 메모리(Random Access Memory: RAM)(예를 들어 동적 및 정적 RAM들), 소거가능 프로그램가능 판독 전용 메모리(Erasable Programmable Read-Only Memory: EPROM), 전기적 소거가능 프로그램가능 판독 전용 메모리(Electrically Erasable Programmable Read-Only Memory: EEPROM), 플래시 메모리, 솔리드 스테이트 디스크(Solid State Disk: SSD), 임베딩된 멀티미디어 카드(embedded multimedia card: eMMC), 보안 디지털 입력/출력(Secure Digital Input/Output: SDIO) 카드, 자기적 또는 광학적 카드, 또는 전자적 명령어를 저장하기에 적합한 임의의 유형의 매체를 포함할 수 있다. 다른 실시예는 프로그램가능 제어 디바이스(programmable control device)에 의해 실행되는 소프트웨어 모듈로서 구현될 수 있다.
이와 같이, 본 개시는 하드웨어 기반 디바이스간 리소스 공유에 지향된다. 예컨대, 원격 조정기(Remote Orchestrator: RO)는 디바이스로 하여금 적어도 하나의 하드웨어 리소스를 다른 디바이스에게 이용가능한 것이게 하도록 하는 명령어를 제공할 수 있다. 디바이스 내의 RO 모듈은 RO와 상호작용할 수 있고 RO로부터 수신된 명령어에 기반하여 디바이스 내의 구성 모듈을 구성할 수 있다. 구성 모듈은 디바이스가 파워 오프 상태에서 파워 온 상태로 전이하는 경우 디바이스 구성을 설정할 수 있다. 디바이스는 디바이스 구성에 기반하여 데이터를 처리하는 처리 모듈과, 인터페이스 기술(Interface Technology: IT)과, 적어도 하나의 하드웨어 리소스를 또한 포함할 수 있다. 인터페이스 기술은 처리 모듈 및 적어도 하나의 하드웨어 리소스가 상호작용할 수 있게 할 수 있다. RO 모듈은 명령어에 기반하여 적어도 하나의 하드웨어 리소스가 로컬로 또는 원격으로 동작할 수 있게 하도록 IT를 구성할 수 있다.
이하의 예는 추가의 실시예에 관련된다. 본 개시의 이하의 예는 디바이스 무관 전력 모니터링 및 프로파일링(device-agnostic power monitoring and profiling)을 위한 디바이스, 방법, 실행되는 경우 머신으로 하여금 방법에 기반하여 행위를 수행하게 하는 명령어를 저장하기 위한 적어도 하나의 머신 판독가능 매체, 방법에 기반하여 행위를 수행하기 위한 수단 및/또는 시스템과 같은 대상물(subject material)을 포함할 수 있다.
예 1에 따르면 하드웨어 기반 디바이스간 리소스 공유가 가능한 디바이스가 제공된다. 위 디바이스는, 디바이스 구성을 설정하는 구성 모듈과, 적어도 위 디바이스 구성에 기반하여 데이터를 처리하는 처리 모듈과, 적어도 하나의 하드웨어 리소스와, 위 처리 모듈로 하여금 위 적어도 하나의 하드웨어 리소스와 상호작용할 수 있게 하는 인터페이스 기술부와, 적어도, 원격 조정기로부터 적어도 하나의 명령어를 수신하고, 위 적어도 하나의 명령어에 기반하여 위 구성 모듈을 구성하며, 위 적어도 하나의 명령어에 기반하여 위 적어도 하나의 하드웨어 리소스가 로컬로 동작하거나 원격으로 동작할 수 있게 하도록 위 인터페이스 기술부를 구성하는 원격 조정기 모듈을 포함할 수 있다.
예 2는 예 1의 구성요소들을 포함할 수 있되, 위 구성 모듈은 위 디바이스가 오프 상태에서 온 상태로 전이하는 경우에 위 디바이스 구성을 설정하기 위한 적어도 펌웨어를 포함한다.
예 3은 예 2의 구성요소들을 포함할 수 있되, 위 디바이스 구성을 설정하는 중에 위 구성 모듈은 위 디바이스를 파티셔닝된 구성 또는 병합된 구성으로 동작하도록 설정하는 것이다.
예 4는 예 1 내지 예 3 중 임의의 것의 구성요소들을 포함할 수 있되, 위 인터페이스 기술부를 구성하는 중에 위 원격 조정기 모듈은 위 적어도 하나의 하드웨어 리소스가 로컬로 동작함 또는 원격으로 동작함을 나타내는 적어도 하나의 비트를 위 인터페이스 기술부의 구성 공간 내에 설정하는 것이다.
예 5는 예 1 내지 예 4 중 임의의 것의 구성요소들을 포함할 수 있되, 위 인터페이스 기술부는 위 적어도 하나의 하드웨어 리소스가 원격으로 동작할 경우 위 적어도 하나의 하드웨어 리소스를 적어도 위 처리 모듈로부터 은닉하는 것이다.
예 6은 예 1 내지 예 5 중 임의의 것의 구성요소들을 포함할 수 있되, 위 적어도 하나의 하드웨어 리소스는 위 적어도 하나의 하드웨어 리소스가 원격으로 동작할 경우 적어도 하나의 다른 디바이스 내의 적어도 하나의 다른 처리 모듈에게는 액세스가능한 것이다.
예 7은 예 6의 구성요소들을 포함할 수 있되, 위 원격 조정기 모듈은 위 적어도 하나의 하드웨어 리소스가 원격으로 동작할 경우 위 적어도 하나의 하드웨어 리소스 및 위 적어도 하나의 다른 처리 모듈 간에 메시지를 라우팅하도록 위 인터페이스 기술부를 구성하는 것이다.
예 8은 예 6 내지 예 7 중 임의의 것의 구성요소들을 포함할 수 있되, 위 원격 조정기 모듈은 위 디바이스 구성에 기반하여 위 적어도 하나의 다른 처리 모듈과 직접적으로 상호작용하도록 위 처리 모듈을 구성하는 것이다.
예 9는 예 8의 구성요소들을 포함할 수 있되, 위 처리 모듈 및 위 적어도 하나의 다른 처리 모듈은 퀵패쓰 상호연결(Quickpath Interconnect: QPI) 연결 또는 카이저 테크놀로지 상호연결(Keizer Technology Interconnect: KTI) 연결을 이용하여 직접적으로 상호작용한다.
예 10은 예 8 내지 예 9 중 임의의 것의 구성요소들을 포함할 수 있되, 위 구성 모듈은 위 디바이스 구성에 기반하여 위 처리 모듈을 위한 프로세서 캐시 또는 메모리 중 적어도 하나 및 위 적어도 하나의 다른 처리 모듈 간의 코히런시 프로토콜을 불능화하는 것이다.
예 11은 예 6 내지 예 10 중 임의의 것의 구성요소들을 포함할 수 있되, 위 원격 조정기 모듈은 위 적어도 하나의 하드웨어 리소스가 원격으로 동작할 경우 위 적어도 하나의 하드웨어 리소스 및 위 적어도 하나의 다른 처리 모듈 간에 메시지를 라우팅하도록 위 인터페이스 기술부를 구성하고 위 디바이스 구성에 기반하여 위 적어도 하나의 다른 처리 모듈과 직접적으로 상호작용하도록 위 처리 모듈을 구성하는 것이다.
예 12는 예 6 내지 예 11 중 임의의 것의 구성요소들을 포함할 수 있고, 위 디바이스 및 위 적어도 하나의 다른 디바이스 간의 상호작용에 대해 위 원격 조정기와 통신하는 상호작용 모니터를 더 포함할 수 있다.
예 13은 예 6 내지 예 12 중 임의의 것의 구성요소들을 포함할 수 있되, 위 디바이스는 위 원격 조정기를 또한 포함하는 랙 내에 있다.
예 14는 예 13의 구성요소들을 포함할 수 있되, 위 랙은 위 적어도 하나의 다른 디바이스를 또한 포함한다.
예 15는 예 1 내지 예 14 중 임의의 것의 구성요소들을 포함할 수 있되, 위 인터페이스 기술부는 주변 컴포넌트 상호연결 익스프레스(Peripheral Component Interconnect Express: PCIe) 인터페이스 기술이다.
예 16은 예 1 내지 예 15 중 임의의 것의 구성요소들을 포함할 수 있되, 위 원격 조정기 모듈은 대역외 통신을 통하여 위 원격 조정기와 통신하는 것이다.
예 17은 예 1 내지 예 16 중 임의의 것의 구성요소들을 포함할 수 있되, 위 원격 조정기 모듈은 관리 엔진(Management Engine: ME)이다.
예 18은 예 1 내지 예 17 중 임의의 것의 구성요소들을 포함할 수 있되, 위 구성 모듈은 위 디바이스가 오프 상태에서 온 상태로 전이하는 경우에 위 디바이스 구성을 파티셔닝된 구성 또는 병합된 구성에서 동작하도록 설정하기 위한 적어도 펌웨어를 포함한다.
예 19에 따르면 하드웨어 기반 디바이스간 리소스 공유를 위한 방법이 제공된다. 위 방법은, 원격 조정기로부터 디바이스 내의 적어도 하나의 명령어를 수신하는 단계와, 위 적어도 하나의 명령어에 기반하여 위 디바이스 내의 구성 모듈 내의 디바이스 구성을 구성하는 단계와, 위 적어도 하나의 명령어에 기반하여 위 디바이스 내의 적어도 하나의 하드웨어 리소스가 로컬로 동작하거나 원격으로 동작할 수 있게 하도록 위 디바이스 내의 인터페이스 기술부를 구성하는 단계를 포함할 수 있다.
예 20은 예 19의 구성요소들을 포함할 수 있고, 위 디바이스로 하여금 오프 상태에서 온 상태로 전이하게 하는 단계와, 위 디바이스 구성에 기반하여 위 디바이스를 파티셔닝된 구성 또는 병합된 구성으로 동작하도록 설정하는 단계를 더 포함할 수 있다.
예 21은 예 19 내지 예 20 중 임의의 것의 구성요소들을 포함할 수 있되, 위 인터페이스 기술부를 구성하는 단계는 위 적어도 하나의 하드웨어 리소스가 로컬로 동작함 또는 원격으로 동작함을 나타내는 적어도 하나의 비트를 위 인터페이스 기술부의 구성 공간 내에 설정하는 단계를 포함한다.
예 22는 예 19 내지 예 21 중 임의의 것의 구성요소들을 포함할 수 있고, 위 적어도 하나의 하드웨어 리소스가 원격으로 동작할 경우 위 적어도 하나의 하드웨어 리소스를 위 디바이스 내의 적어도 처리 모듈로부터 은닉하는 단계를 더 포함할 수 있다.
예 23은 예 22의 구성요소들을 포함할 수 있고, 위 적어도 하나의 하드웨어 리소스가 원격으로 동작할 경우 위 적어도 하나의 하드웨어 리소스 및 적어도 하나의 다른 디바이스 내의 적어도 하나의 다른 처리 모듈 간에 메시지를 라우팅하도록 위 인터페이스 기술부를 구성하는 단계를 더 포함할 수 있다.
예 24는 예 23의 구성요소들을 포함할 수 있고, 위 디바이스 구성에 기반하여 위 적어도 하나의 다른 처리 모듈과 직접적으로 상호작용하도록 위 처리 모듈을 구성하는 단계와, 위 디바이스 구성에 기반하여 위 처리 모듈을 위한 프로세서 캐시 또는 메모리 중 적어도 하나 및 위 적어도 하나의 다른 처리 모듈 간의 코히런시 프로토콜을 불능화하는 단계를 더 포함할 수 있다.
예 25는 예 23 내지 예 24 중 임의의 것의 구성요소들을 포함할 수 있고, 위 디바이스 및 위 적어도 하나의 다른 디바이스 간의 상호작용에 대해 위 원격 조정기와 통신하는 단계를 더 포함할 수 있다.
예 26은 예 22 내지 예 25 중 임의의 것의 구성요소들을 포함할 수 있고, 위 적어도 하나의 하드웨어 리소스가 원격으로 동작할 경우 위 적어도 하나의 하드웨어 리소스 및 적어도 하나의 다른 디바이스 내의 적어도 하나의 다른 처리 모듈 간에 메시지를 라우팅하도록 위 인터페이스 기술부를 구성하는 단계와, 위 디바이스 구성에 기반하여 위 적어도 하나의 다른 처리 모듈과 직접적으로 상호작용하도록 위 처리 모듈을 구성하는 단계와, 위 디바이스 구성에 기반하여 위 처리 모듈을 위한 프로세서 캐시 또는 메모리 중 적어도 하나 및 위 적어도 하나의 다른 처리 모듈 간의 코히런시 프로토콜을 불능화하는 단계를 더 포함할 수 있다.
예 27에 따르면 적어도 하나의 디바이스를 포함하는 시스템이 제공되는데, 위 시스템은 위의 예 19 내지 예 26 중 임의의 것의 방법을 수행하도록 마련된다.
예 28에 따르면 위의 예 19 내지 예 26 중 임의의 것의 방법을 수행하도록 마련된 칩셋이 제공된다.
예 29에 따르면 컴퓨팅 디바이스 상에서 실행되는 것에 응답하여, 위 컴퓨팅 디바이스로 하여금 위의 예 19 내지 예 26 중 임의의 것에 따른 방법을 수행하게 하는 복수의 명령어를 포함하는 적어도 하나의 머신 판독가능 저장 매체가 제공된다.
예 30에 따르면, 하드웨어 기반 디바이스간 리소스 공유를 위해 구성된 적어도 하나의 디바이스가 제공되는데, 위 적어도 하나의 디바이스는 위의 예 19 내지 예 26 중 임의의 것의 방법을 수행하도록 마련된다.
예 31에 따르면 하드웨어 기반 디바이스간 리소스 공유를 위한 시스템이 제공된다. 위 시스템은 원격 조정기로부터 디바이스 내의 적어도 하나의 명령어를 수신하는 수단과, 위 적어도 하나의 명령어에 기반하여 위 디바이스 내의 구성 모듈 내의 디바이스 구성을 구성하는 수단과, 위 적어도 하나의 명령어에 기반하여 위 디바이스 내의 적어도 하나의 하드웨어 리소스가 로컬로 동작하거나 원격으로 동작할 수 있게 하도록 위 디바이스 내의 인터페이스 기술부를 구성하는 수단을 포함할 수 있다.
예 32는 예 31의 구성요소들을 포함할 수 있고, 위 디바이스로 하여금 오프 상태에서 온 상태로 전이하게 하는 수단과, 위 디바이스 구성에 기반하여 위 디바이스를 파티셔닝된 구성 또는 병합된 구성으로 동작하도록 설정하는 수단을 더 포함할 수 있다.
예 33은 예 31 내지 예 32 중 임의의 것의 구성요소들을 포함할 수 있되, 위 인터페이스 기술부를 구성하는 수단은 위 적어도 하나의 하드웨어 리소스가 로컬로 동작함 또는 원격으로 동작함을 나타내는 적어도 하나의 비트를 위 인터페이스 기술부의 구성 공간 내에 설정하는 수단을 포함한다.
예 34는 예 31 내지 예 33 중 임의의 것의 구성요소들을 포함할 수 있고, 위 적어도 하나의 하드웨어 리소스가 원격으로 동작할 경우 위 적어도 하나의 하드웨어 리소스를 위 디바이스 내의 적어도 처리 모듈로부터 은닉하는 수단을 더 포함할 수 있다.
예 35는 예 34의 구성요소들을 포함할 수 있고, 위 적어도 하나의 하드웨어 리소스가 원격으로 동작할 경우 위 적어도 하나의 하드웨어 리소스 및 적어도 하나의 다른 디바이스 내의 적어도 하나의 다른 처리 모듈 간에 메시지를 라우팅하도록 위 인터페이스 기술부를 구성하는 수단을 더 포함할 수 있다.
예 36은 예 35의 구성요소들을 포함할 수 있고, 위 디바이스 구성에 기반하여 위 적어도 하나의 다른 처리 모듈과 직접적으로 상호작용하도록 위 처리 모듈을 구성하는 수단과, 위 디바이스 구성에 기반하여 위 처리 모듈을 위한 프로세서 캐시 또는 메모리 중 적어도 하나 및 위 적어도 하나의 다른 처리 모듈 간의 코히런시 프로토콜을 불능화하는 수단을 더 포함할 수 있다.
예 37은 예 35 내지 예 36 중 임의의 것의 구성요소들을 포함할 수 있고, 위 디바이스 및 위 적어도 하나의 다른 디바이스 간의 상호작용에 대해 위 원격 조정기와 통신하는 수단을 더 포함할 수 있다.
예 38은 예 34 내지 예 37 중 임의의 것의 구성요소들을 포함할 수 있고, 위 적어도 하나의 하드웨어 리소스가 원격으로 동작할 경우 위 적어도 하나의 하드웨어 리소스 및 적어도 하나의 다른 디바이스 내의 적어도 하나의 다른 처리 모듈 간에 메시지를 라우팅하도록 위 인터페이스 기술부를 구성하는 수단과, 위 디바이스 구성에 기반하여 위 적어도 하나의 다른 처리 모듈과 직접적으로 상호작용하도록 위 처리 모듈을 구성하는 수단과, 위 디바이스 구성에 기반하여 위 처리 모듈을 위한 프로세서 캐시 또는 메모리 중 적어도 하나 및 위 적어도 하나의 다른 처리 모듈 간의 코히런시 프로토콜을 불능화하는 수단을 더 포함할 수 있다.
본 문서에서 이용된 용어 및 표현은 한정이 아니라 설명의 용어로서 사용되고, 그러한 용어 및 표현의 사용에서, 도시되고 기술된 특징(또는 이의 부분)의 어떠한 균등물도 배제하려는 의도는 전혀 없으며, 다양한 수정이 청구항의 범주 내에서 가능함이 인식된다. 따라서, 청구항은 모든 그러한 균등물을 포섭하도록 의도된다.

Claims (28)

  1. 하드웨어 기반 디바이스간 리소스 공유(hardware-based inter-device resource sharing)가 가능한 디바이스로서,
    디바이스 구성을 설정하는 구성 모듈과,
    적어도 상기 디바이스 구성에 기반하여 데이터를 처리하는 처리 모듈과,
    적어도 하나의 하드웨어 리소스와,
    상기 처리 모듈로 하여금 상기 적어도 하나의 하드웨어 리소스와 상호작용할 수 있게 하는 인터페이스 기술부와,
    적어도, 원격 조정기(remote orchestrator)로부터 적어도 하나의 명령어를 수신하고, 상기 적어도 하나의 명령어에 기반하여 상기 구성 모듈을 구성하며, 상기 적어도 하나의 명령어에 기반하여 상기 적어도 하나의 하드웨어 리소스가 로컬로 동작하거나 원격으로 동작할 수 있게 하도록 상기 인터페이스 기술부를 구성하는 원격 조정기 모듈
    을 포함하고,
    상기 적어도 하나의 하드웨어 리소스는, 상기 적어도 하나의 하드웨어 리소스가 원격으로 동작할 경우, 적어도 하나의 다른 디바이스 내의 적어도 하나의 다른 처리 모듈에게는 액세스가능하며,
    상기 원격 조정기 모듈은 또한 상기 디바이스 구성에 기반하여 상기 적어도 하나의 다른 처리 모듈과 직접적으로 상호작용하도록 상기 처리 모듈을 구성하는
    디바이스.
  2. 제1항에 있어서,
    상기 구성 모듈은 적어도 상기 디바이스가 오프 상태(off state)에서 온 상태(on state)로 전이하는 경우에 상기 디바이스 구성을 설정하기 위한 펌웨어를 포함하는
    디바이스.
  3. 제2항에 있어서,
    상기 디바이스 구성을 설정하는 중에 상기 구성 모듈은 상기 디바이스를 파티셔닝된 구성(partitioned configuration) 또는 병합된 구성(merged configuration)으로 동작하도록 설정하는
    디바이스.
  4. 제1항에 있어서,
    상기 인터페이스 기술부를 구성하는 중에 상기 원격 조정기 모듈은 상기 적어도 하나의 하드웨어 리소스가 로컬로 동작함 또는 원격으로 동작함을 나타내는 적어도 하나의 비트를 상기 인터페이스 기술부의 구성 공간(configuration space) 내에 설정하는
    디바이스.
  5. 제1항에 있어서,
    상기 인터페이스 기술부는 상기 적어도 하나의 하드웨어 리소스가 원격으로 동작할 경우 상기 적어도 하나의 하드웨어 리소스를 적어도 상기 처리 모듈로부터 은닉하는
    디바이스.
  6. 삭제
  7. 제1항에 있어서,
    상기 원격 조정기 모듈은 상기 적어도 하나의 하드웨어 리소스가 원격으로 동작할 경우 상기 적어도 하나의 하드웨어 리소스와 상기 적어도 하나의 다른 처리 모듈 간에 메시지를 라우팅하도록 상기 인터페이스 기술부를 구성하는
    디바이스.
  8. 삭제
  9. 제1항에 있어서,
    상기 구성 모듈은 상기 디바이스 구성에 기반하여 상기 처리 모듈을 위한 프로세서 캐시 또는 메모리 중 적어도 하나와 상기 적어도 하나의 다른 처리 모듈을 위한 프로세서 캐시 또는 메모리 중 적어도 하나 간의 코히런시(coherency) 프로토콜을 불능화하는(disable)
    디바이스.
  10. 제1항에 있어서,
    상기 디바이스와 상기 적어도 하나의 다른 디바이스 간의 상호작용에 대해 상기 원격 조정기와 통신하는 상호작용 모니터(interaction monitor)를 더 포함하는
    디바이스.
  11. 제1항에 있어서,
    상기 디바이스는 상기 원격 조정기를 또한 포함하는 랙(rack) 내에 있는
    디바이스.
  12. 제11항에 있어서,
    상기 랙은 상기 적어도 하나의 다른 디바이스를 더 포함하는
    디바이스.
  13. 하드웨어 기반 디바이스간 리소스 공유를 위한 방법으로서,
    디바이스에서 원격 조정기로부터 적어도 하나의 명령어를 수신하는 단계와,
    상기 적어도 하나의 명령어에 기반하여 상기 디바이스 내의 구성 모듈에서 디바이스 구성을 구성하는 단계와,
    상기 적어도 하나의 명령어에 기반하여 상기 디바이스 내의 적어도 하나의 하드웨어 리소스가 로컬로 동작하거나 원격으로 동작할 수 있게 하도록 상기 디바이스 내의 인터페이스 기술부를 구성하는 단계와,
    상기 적어도 하나의 하드웨어 리소스가 원격으로 동작할 경우 상기 적어도 하나의 하드웨어 리소스와 적어도 하나의 다른 디바이스 내의 적어도 하나의 다른 처리 모듈 간에 메시지를 라우팅하도록 상기 인터페이스 기술부를 구성하는 단계와,
    상기 디바이스 구성에 기반하여 상기 적어도 하나의 다른 처리 모듈과 직접적으로 상호작용하도록 상기 처리 모듈을 구성하는 단계와,
    상기 디바이스 구성에 기반하여 상기 처리 모듈을 위한 프로세서 캐시 또는 메모리 중 적어도 하나와 상기 적어도 하나의 다른 처리 모듈을 위한 프로세서 캐시 또는 메모리 중 적어도 하나 간의 코히런시 프로토콜을 불능화하는 단계
    를 포함하는
    방법.
  14. 제13항에 있어서,
    상기 디바이스로 하여금 오프 상태에서 온 상태로 전이하게 하는 단계와,
    상기 디바이스 구성에 기반하여 상기 디바이스를 파티셔닝된 구성 또는 병합된 구성으로 동작하도록 설정하는 단계를 더 포함하는
    방법.
  15. 제13항에 있어서,
    상기 인터페이스 기술부를 구성하는 단계는 상기 적어도 하나의 하드웨어 리소스가 로컬로 동작함 또는 원격으로 동작함을 나타내는 적어도 하나의 비트를 상기 인터페이스 기술부의 구성 공간 내에 설정하는 단계를 포함하는
    방법.
  16. 제13항에 있어서,
    상기 적어도 하나의 하드웨어 리소스가 원격으로 동작할 경우 상기 적어도 하나의 하드웨어 리소스를 상기 디바이스 내의 적어도 한 처리 모듈로부터 은닉하는 단계를 더 포함하는
    방법.
  17. 삭제
  18. 삭제
  19. 제13항에 있어서,
    상기 디바이스와 상기 적어도 하나의 다른 디바이스 간의 상호작용에 대해 상기 원격 조정기와 통신하는 단계를 더 포함하는
    방법.
  20. 하드웨어 기반 디바이스간 리소스 공유를 위한 명령어가 개별적으로 또는 조합되어 저장된 적어도 하나의 머신 판독가능 저장 매체로서,
    상기 명령어는 하나 이상의 프로세서에 의해 실행되는 경우, 상기 하나 이상의 프로세서로 하여금
    원격 조정기로부터 디바이스에서 적어도 하나의 명령어를 수신하고,
    상기 적어도 하나의 명령어에 기반하여 상기 디바이스 내의 구성 모듈에서 디바이스 구성을 구성하며,
    상기 적어도 하나의 명령어에 기반하여 상기 디바이스 내의 적어도 하나의 하드웨어 리소스가 로컬로 동작하거나 원격으로 동작할 수 있게 하도록 상기 디바이스 내의 인터페이스 기술부를 구성하고,
    상기 적어도 하나의 하드웨어 리소스가 원격으로 동작할 경우 상기 적어도 하나의 하드웨어 리소스 및 적어도 하나의 다른 디바이스 내의 적어도 하나의 다른 처리 모듈 간에 메시지를 라우팅하도록 상기 인터페이스 기술부를 구성하며,
    상기 디바이스 구성에 기반하여 상기 적어도 하나의 다른 처리 모듈과 직접적으로 상호작용하도록 상기 처리 모듈을 구성하고,
    상기 디바이스 구성에 기반하여 상기 처리 모듈을 위한 프로세서 캐시 또는 메모리 중 적어도 하나와 상기 적어도 하나의 다른 처리 모듈을 위한 프로세서 캐시 또는 메모리 중 적어도 하나 간의 코히런시 프로토콜을 불능화하게 하는
    머신 판독가능 저장 매체.
  21. 제20항에 있어서,
    하나 이상의 프로세서에 의해 실행되는 경우, 상기 하나 이상의 프로세서로 하여금
    상기 디바이스가 오프 상태에서 온 상태로 전이하게 하고,
    상기 디바이스 구성에 기반하여 상기 디바이스를 파티셔닝된 구성 또는 병합된 구성으로 동작하도록 설정하게 하는 명령어를 더 포함하는
    머신 판독가능 저장 매체.
  22. 제20항에 있어서,
    상기 인터페이스 기술부를 구성하기 위한 명령어는 상기 적어도 하나의 하드웨어 리소스가 로컬로 동작함 또는 원격으로 동작함을 나타내는 적어도 하나의 비트를 상기 인터페이스 기술부의 구성 공간 내에 설정하기 위한 명령어를 포함하는
    머신 판독가능 저장 매체.
  23. 제20항에 있어서,
    하나 이상의 프로세서에 의해 실행되는 경우, 상기 하나 이상의 프로세서로 하여금
    상기 적어도 하나의 하드웨어 리소스가 원격으로 동작할 경우 상기 적어도 하나의 하드웨어 리소스를 상기 디바이스 내의 적어도 한 처리 모듈로부터 은닉하게 하는 명령어를 더 포함하는
    머신 판독가능 저장 매체.
  24. 삭제
  25. 삭제
  26. 제20항에 있어서,
    하나 이상의 프로세서에 의해 실행되는 경우, 상기 하나 이상의 프로세서로 하여금
    상기 디바이스와 상기 적어도 하나의 다른 디바이스 간의 상호작용에 대해 상기 원격 조정기와 통신하게 하는 명령어를 더 포함하는
    머신 판독가능 저장 매체.
  27. 하드웨어 기반 디바이스간 리소스 공유가 가능한 디바이스로서,
    디바이스 구성을 설정하는 구성 모듈과,
    적어도 상기 디바이스 구성에 기반하여 데이터를 처리하는 처리 모듈과,
    적어도 하나의 하드웨어 리소스와,
    상기 처리 모듈로 하여금 상기 적어도 하나의 하드웨어 리소스와 상호작용할 수 있게 하는 인터페이스 기술부와,
    적어도, 원격 조정기로부터 적어도 하나의 명령어를 수신하고, 상기 적어도 하나의 명령어에 기반하여 상기 구성 모듈을 구성하며, 상기 적어도 하나의 명령어에 기반하여 상기 적어도 하나의 하드웨어 리소스가 로컬로 동작하거나 원격으로 동작할 수 있게 하도록 상기 인터페이스 기술부를 구성하는 원격 조정기 모듈
    을 포함하고,
    상기 적어도 하나의 하드웨어 리소스는, 상기 적어도 하나의 하드웨어 리소스가 원격으로 동작할 경우, 적어도 하나의 다른 디바이스 내의 적어도 하나의 다른 처리 모듈에게는 액세스가능하며,
    상기 디바이스는, 상기 디바이스와 상기 적어도 하나의 다른 디바이스 간의 상호작용에 대해 상기 원격 조정기와 통신하는 상호작용 모니터
    를 더 포함하는
    디바이스.
  28. 제27항에 있어서,
    상기 디바이스는 상기 원격 조정기를 또한 포함하는 랙 내에 있는
    디바이스.
KR1020160017014A 2015-03-16 2016-02-15 하드웨어 기반 디바이스간 리소스 공유 KR101813480B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/659,523 2015-03-16
US14/659,523 US9569267B2 (en) 2015-03-16 2015-03-16 Hardware-based inter-device resource sharing

Publications (2)

Publication Number Publication Date
KR20160111325A KR20160111325A (ko) 2016-09-26
KR101813480B1 true KR101813480B1 (ko) 2017-12-29

Family

ID=55273167

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160017014A KR101813480B1 (ko) 2015-03-16 2016-02-15 하드웨어 기반 디바이스간 리소스 공유

Country Status (5)

Country Link
US (2) US9569267B2 (ko)
EP (1) EP3073377B1 (ko)
JP (1) JP6321053B2 (ko)
KR (1) KR101813480B1 (ko)
CN (1) CN105988877B (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105224045B (zh) * 2015-11-18 2019-01-04 英业达科技有限公司 刀片式服务器
US10346321B2 (en) * 2017-05-04 2019-07-09 Dell Products L.P. Method to trigger NVDIMM save from remote management interface
US10582636B2 (en) * 2017-08-07 2020-03-03 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Server having a dual-mode serial bus port enabling selective access to a baseboard management controller
US20190044809A1 (en) * 2017-08-30 2019-02-07 Intel Corporation Technologies for managing a flexible host interface of a network interface controller
US20190095554A1 (en) * 2017-09-28 2019-03-28 Intel Corporation Root complex integrated endpoint emulation of a discreet pcie endpoint
CN108762463A (zh) * 2018-04-28 2018-11-06 上海爱优威软件开发有限公司 一种基于电量的应用管理方法及终端
US10970213B2 (en) * 2019-04-30 2021-04-06 Hewlett Packard Enterprise Development Lp Selective disabling of hardware-based cache coherency and enforcement of software-based cache coherency
US11106595B2 (en) * 2019-08-22 2021-08-31 Micron Technology, Inc. Hierarchical memory systems
CN112579286B (zh) * 2020-12-16 2021-08-06 全芯智造技术有限公司 用于光源掩模优化的方法、设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006252385A (ja) 2005-03-14 2006-09-21 Nec Corp ハードウェア資源提供システム
US20090327643A1 (en) * 2008-06-27 2009-12-31 International Business Machines Corporation Information Handling System Including Dynamically Merged Physical Partitions
US20110179134A1 (en) * 2010-01-15 2011-07-21 Mayo Mark G Managing Hardware Resources by Sending Messages Amongst Servers in a Data Center
US20140089635A1 (en) 2012-09-27 2014-03-27 Eran Shifer Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5931938A (en) * 1996-12-12 1999-08-03 Sun Microsystems, Inc. Multiprocessor computer having configurable hardware system domains
JP2001209627A (ja) * 2000-01-27 2001-08-03 Hitachi Ltd 情報処理システム
EP1866767B1 (en) * 2005-03-16 2018-04-18 III Holdings 12, LLC Automatic workload transfer to an on-demand center
US20070239965A1 (en) * 2006-03-31 2007-10-11 Saul Lewites Inter-partition communication
JP5070879B2 (ja) * 2007-02-22 2012-11-14 日本電気株式会社 仮想サーバシステム、サーバ装置
US7934033B2 (en) * 2008-03-25 2011-04-26 Aprius, Inc. PCI-express function proxy
US8949565B2 (en) * 2009-12-27 2015-02-03 Intel Corporation Virtual and hidden service partition and dynamic enhanced third party data store
US20110161592A1 (en) * 2009-12-31 2011-06-30 Nachimuthu Murugasamy K Dynamic system reconfiguration
US8996734B2 (en) * 2010-08-19 2015-03-31 Ineda Systems Pvt. Ltd I/O virtualization and switching system
US9274834B2 (en) * 2012-08-25 2016-03-01 Vmware, Inc. Remote service for executing resource allocation analyses for computer network facilities
US9734096B2 (en) * 2013-05-06 2017-08-15 Industrial Technology Research Institute Method and system for single root input/output virtualization virtual functions sharing on multi-hosts
US9331911B2 (en) * 2013-11-01 2016-05-03 International Business Machines Corporation Resizing resource allocation in a computing environment

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006252385A (ja) 2005-03-14 2006-09-21 Nec Corp ハードウェア資源提供システム
US20090327643A1 (en) * 2008-06-27 2009-12-31 International Business Machines Corporation Information Handling System Including Dynamically Merged Physical Partitions
US20110179134A1 (en) * 2010-01-15 2011-07-21 Mayo Mark G Managing Hardware Resources by Sending Messages Amongst Servers in a Data Center
US20140089635A1 (en) 2012-09-27 2014-03-27 Eran Shifer Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions

Also Published As

Publication number Publication date
EP3073377A1 (en) 2016-09-28
CN105988877B (zh) 2019-05-14
KR20160111325A (ko) 2016-09-26
US10223161B2 (en) 2019-03-05
US20170161111A1 (en) 2017-06-08
US9569267B2 (en) 2017-02-14
US20160274941A1 (en) 2016-09-22
CN105988877A (zh) 2016-10-05
JP6321053B2 (ja) 2018-05-09
JP2016173811A (ja) 2016-09-29
EP3073377B1 (en) 2023-03-22

Similar Documents

Publication Publication Date Title
KR101813480B1 (ko) 하드웨어 기반 디바이스간 리소스 공유
CN110063051B (zh) 用于重新配置服务器的系统和方法以及服务器
CN106445576B (zh) 主机板及其计算机实现方法及非暂态计算机可读储存装置
US20140156898A1 (en) Pci and pci express virtual hot plug systems and methods
US10372639B2 (en) System and method to avoid SMBus address conflicts via a baseboard management controller
US10572434B2 (en) Intelligent certificate discovery in physical and virtualized networks
US10437762B2 (en) Partitioned interconnect slot for inter-processor operation
KR101698707B1 (ko) 가상 pci 장치 및 가상 mmio 장치를 형성하기 위한 일반적인 방법
US9880858B2 (en) Systems and methods for reducing BIOS reboots
KR20160108517A (ko) 멀티-운영 체제 디바이스들에 대한 액세스 격리
US9699093B2 (en) Migration of virtual machine based on proximity to peripheral device in NUMA environment
US11144326B2 (en) System and method of initiating multiple adaptors in parallel
CN107660282B (zh) 处理多根系统中的分区复位
CN107533443B (zh) 在半导体器件中提供多个根
US11200185B2 (en) System and method of rerouting an inter-processor communication link based on a link utilization value
US10996942B1 (en) System and method for graphics processing unit firmware updates
US9977730B2 (en) System and method for optimizing system memory and input/output operations memory
US12067385B2 (en) Configuring compute express link (CXL) attributes for best known configuration
EP2979170B1 (en) Making memory of compute and expansion blade devices available for use by an operating system
JP2023544001A (ja) アクセラレータカードのセキュリティモードの静的構成
US11803493B2 (en) Systems and methods for management controller co-processor host to variable subsystem proxy
US20230325201A1 (en) Heterogeneous compute domains with an embedded operating system in an information handling system
US20140025982A1 (en) Information processing equipment and control method

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