KR20230053496A - 인터커넥트를 통해 장치 운영 체제에 액세스하기 위한 시스템, 방법 및 장치 - Google Patents

인터커넥트를 통해 장치 운영 체제에 액세스하기 위한 시스템, 방법 및 장치 Download PDF

Info

Publication number
KR20230053496A
KR20230053496A KR1020220086561A KR20220086561A KR20230053496A KR 20230053496 A KR20230053496 A KR 20230053496A KR 1020220086561 A KR1020220086561 A KR 1020220086561A KR 20220086561 A KR20220086561 A KR 20220086561A KR 20230053496 A KR20230053496 A KR 20230053496A
Authority
KR
South Korea
Prior art keywords
interconnect
operating system
function
access
communicating
Prior art date
Application number
KR1020220086561A
Other languages
English (en)
Inventor
최창호
류성욱
기양석
라지니칸스 판두랑간
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20230053496A publication Critical patent/KR20230053496A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • 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
    • 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/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3051Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • 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/4406Loading of operating system
    • 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/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment

Abstract

본 개시의 예시적 실시예에 따른 장치와 통신하는 방법은, 장치에서 운영 체제(operating system)를 실행(run)하는 단계, 인터커넥트(interconnect)의 제1 기능을 사용하여 장치와 통신하는 단계 및 인터커넥트의 제2 기능을 사용하여 운영 체제와 통신하는 단계를 포함할 수 있다.

Description

인터커넥트를 통해 장치 운영 체제에 액세스하기 위한 시스템, 방법 및 장치{SYSTEM, METHOD, AND DEVICE FOR ACCESSING DEVICE OPERATING SYSTEM OVER AN INTERCONNECT}
본 개시의 기술적 사상은 저장 시스템에 관한 것으로, 보다 상세하게는, 인터커넥트를 통해 장치 운영 체제에 액세스하기 위한 시스템, 방법 및 장치에 관한 것이다.
본 개시는 2021년 10월 14일에 출원된 미국 가출원 제63/255,946호 및 2021년 11월 22일에 출원된 미국 출원 제17/522,899호의 이익을 주장하며, 전문이 참조로 통합된다.
저장 장치(storage device), 가속기 장치(accelerator device) 등과 같은 장치는, 예를 들어, 컴퓨터에서 호스트로부터 오프로드(offload)될 수 있는 계산을 수행하는 데 사용될 수 있는 하나 이상의 프로그램을 실행하기 위한 임베디드(embedded) 운영 체제(operating system)를 포함할 수 있다. 장치는 호스트와 장치 간의 프로그램에 대한 입력 및/또는 출력(I/O) 데이터를 교환하는 데 사용할 수 있는 인터커넥트(interconnect)를 통해 호스트에 연결될 수 있다. 임베디드 운영 체제는 시스템 터미널(system terminial)을 사용하여 액세스할 수 있다.
이 배경 기술 섹션에 개시된 상기 정보는 발명 원리의 배경에 대한 이해를 향상시키기 위한 것일 뿐이며, 따라서 선행 기술을 구성하지 않는 정보를 포함할 수 있다.
본 개시의 기술적 사상은, 인터커넥트를 통해 장치 운영 체제에 액세스하기 위한 시스템, 방법 및 장치를 제공한다.
본 개시의 예시적 실시예에 따른 장치와 통신하는 방법은, 장치에서 운영 체제(operating system)를 실행(run)하는 단계, 인터커넥트(interconnect)의 제1 기능을 사용하여 장치와 통신하는 단계 및 인터커넥트의 제2 기능을 사용하여 운영 체제와 통신하는 단계를 포함할 수 있다.
본 개시의 예시적 실시예에 따른 장치와 통신하는 방법은, 운영 체제는, 통신 로직을 포함하고, 운영체제와 통신하는 단계는, 통신 로직과 통신하는 단계를 포함하는 방법일 수 있다.
본 개시의 예시적 실시예에 따른 장치와 통신하는 방법은, 통신 로직은, 하나 이상의 터미널 지원 드라이버(terminal support driver)를 포함하고, 통신 로직과 통신하는 단계는, 터미널 애플리케이션(terminal application)을 사용하여 하나 이상의 터미널 지원 드라이버와 통신하는 단계를 포함하는 방법일 수 있다.
본 개시의 예시적 실시예에 따른 장치와 통신하는 방법은, 터미널 애플리케이션이, 호스트에서 실행되는 방법일 수 있다.
본 개시의 예시적 실시예에 따른 장치와 통신하는 방법은, 인터커넥트의 제2 기능이 컨트롤러와 함께 동작하도록 구성된 방법일 수 있다.
본 개시의 예시적 실시예에 따른 장치와 통신하는 방법은, 운영 체제와 통신하는 단계가, 특권 정보(privilege information)에 기초하여, 운영 체제와 통신하는 단계를 포함하는 방법일 수 있다.
본 개시의 예시적 실시예에 따른 장치와 통신하는 방법은, 인터커넥트의 제2 기능을 사용하여, 운영 체제의 프로그램을 제어하는 단계를 더 포함하는 방법일 수 있다.
본 개시의 예시적 실시예에 따른 장치와 통신하는 방법은, 프로그램이 디버깅(debugging) 프로그램, 트레이싱(tracing) 프로그램, 프로파일링(profiling) 프로그램 중 적어도 하나를 포함하는 방법일 수 있다.
본 개시의 예시적 실시예에 따른 장치와 통신하는 방법은, 운영 체제와 통신하는 단계가, 장치에 의해, 인터커넥트의 제2 기능과 연관된 출력 데이터를 버퍼에 저장하는 단계를 포함하는 방법일 수 있다.
본 개시의 예시적 실시예에 따른 장치와 통신하는 방법은, 운영 체제와 통신하는 단계가, 인터커넥트의 제2 기능과 연관된 출력 데이터를 버퍼로부터 독출하는 단계를 포함하는 방법일 수 있다.
본 개시의 예시적 실시예에 따른 장치와 통신하는 방법은, 버퍼가 링 버퍼(ring buffer)를 포함하는 방법일 수 있다.
본 개시의 예시적 실시예에 따른 장치와 통신하는 방법은, 인터커넥트의 제2 기능과 연관된 출력 데이터가, 인터커넥트의 제2 기능을 사용하여 제어되는 프로그램에 의해 생성되는 방법일 수 있다.
본 개시의 예시적 실시예에 따른 장치와 통신하는 방법은, 운영 체제와 통신하는 단계가, 가상 터미널(virtual terminal)을 사용하여 통신하는 단계를 포함하는 방법일 수 있다.
본 개시의 예시적 실시예에 따른 장치는, 인터커넥트 인터페이스, 인터커넥트 인터페이스의 제1 기능을 사용하여 통신하도록 구성된 장치 컨트롤러, 및 운영 체제를 실행하도록 구성된 프로세서를 포함하고, 운영 체제는, 인터커넥트 인터페이스의 제2 기능을 사용하여 통신하도록 구성될 수 있다.
본 개시의 예시적 실시예에 따른 장치는, 인터커넥트 인터페이스의 제2 기능과 연관된 출력 데이터를 저장하고, 인터커넥트 인터페이스의 제2 기능을 사용하여 출력 데이터를 송신하도록 구성된 버퍼를 더 포함하는 장치일 수 있다.
본 개시의 예시적 실시예에 따른 장치는, 운영 체제가, 인터커넥트 인터페이스의 제2 기능을 사용하여 통신하도록 구성된 통신 로직을 포함하는 장치일 수 있다.
본 개시의 예시적 실시예에 따른 시스템은, 인터커넥트의 제1 기능을 사용하여 통신하도록 구성된 장치 컨트롤러 및 인터커넥트의 제2 기능을 사용하여 통신하도록 구성된 운영 체제를 실행하도록 구성된 장치 프로세서를 포함하는 장치 및 인터커넥트의 제1 기능을 사용하여 장치와 통신하고, 인터커넥트의 제2 기능을 사용하여 운영 체제와 통신하도록 구성된 적어도 하나의 호스트 프로세서를 포함하는 적어도 하나의 호스트를 포함할 수 있다.
본 개시의 예시적 실시예에 따른 시스템은, 적어도 하나의 호스트는, 인터커넥트의 제1 기능을 사용하여 장치와 통신하도록 구성된 제1 호스트 프로세서를 포함하는 제1 호스트 및 인터커넥트의 제2 기능을 사용하여 운영 체제와 통신하도록 구성된 제2 호스트 프로세서를 포함하는 제2 호스트를 포함하는 시스템일 수 있다.
본 개시의 예시적 실시예에 따른 시스템은, 제1 호스트는, 관리 컨트롤러(management controller)를 포함하는 시스템일 수 있다.
본 개시의 예시적 실시예에 따른 시스템은, 적어도 하나의 호스트 프로세서는, 원격 액세스 프로토콜(remote access protocol)을 사용하여 운영 체제와 사용자 사이의 통신을 제공하도록 구성된 시스템일 수 있다.
도 1은 본 개시의 예시적인 실시예에 따른 시스템의 실시예를 도시한다.
도 2는 본 개시의 예시적인 실시예에 따른 터미널에 대한 하드웨어 연결을 구현하기 위한 소프트웨어 스택의 예시적인 실시예를 도시한다.
도 3은 본 개시의 예시적인 실시예에 따른 장치의 임베디드 운영 체제에 대한 액세스를 사용자에게 제공할 수 있는 시스템의 실시예를 도시한다.
도 4는 본 개시의 예시적인 실시예에 따른 인터커넥트를 통해 장치 운영 체제에 액세스하는 시스템의 드라이버 구성의 예시적인 실시예를 도시한다.
도 5는 본 개시의 예시적인 실시예에 따른 인터커넥트를 통해 장치의 임베디드 운영 체제에 대한 액세스를 사용자에게 제공할 수 있는 장치의 더 상세한 예시적 실시예를 도시한다.
도 6은 본 개시의 예시적인 실시예에 따른 링 버퍼 방식의 예시적인 실시예를 도시한다.
도 7a는 본 개시의 예시적인 실시예에 따른 장치에 대한 장치 레지스터의 예시적인 실시예를 예시한다.
도 7b는 본 개시물의 예시적인 실시예에 따른 인터커넥트의 기능을 사용하여 액세스될 수 있는 장치 및 장치 운영 체제를 갖는 시스템에 대한 쿼리 명령(query command) 및 결과적인 출력의 예시적인 실시예를 도시한다.
도 8은 본 개시의 예시적인 실시예에 따른 인터커넥트를 통해 장치 운영 체제에 액세스하는 데 사용될 수 있는 터미널 프로그램에 대한 사용자 인터페이스의 예시적인 실시예를 도시한다.
도 9는 본 개시의 예시적인 실시예에 따른 인터커넥트를 통해 장치의 임베디드 운영 체제에 액세스하기 위해 관리 인터페이스가 사용될 수 있는 시스템의 예시적인 실시예를 도시한다.
도 10은 본 개시의 예시적인 실시예에 따른 장치의 임베디드 운영 체제에 대한 원격 액세스를 사용자에게 제공할 수 있는 시스템의 실시예를 예시한다.
도 11은 본 개시의 예시적인 실시예에 따른 인터커넥트를 통해 장치의 임베디드 운영 체제에 대한 액세스를 사용자에게 제공하는 데 사용될 수 있는 호스트 장치의 예시적인 실시예를 도시한다.
도 12는 본 개시의 예시적인 실시예에 따른 장치 프로그램에 대한 액세스를 사용자에게 제공하기 위해 사용될 수 있는 저장 장치의 예시적인 실시예를 예시한다.
도 13은 본 개시의 예시적인 실시예에 따른 장치의 임베디드 운영 체제에 대한 액세스를 사용자에게 제공하기 위한 방법의 실시예를 예시한다.
이하, 첨부된 도면을 참조하여 본 개시의 실시예를 상세히 설명한다.
저장 장치(storage device), 가속기 장치(accelerator device) 등과 같은 장치는, 예를 들어, 호스트로부터 오프로드(offload)될 수 있는 계산을 수행하는 데 사용될 수 있는 하나 이상의 프로그램을 실행하기 위한 임베디드(embedded) 운영 체제를 포함할 수 있다. 장치는 PCIe(Peripheral Component Interconnect Express)와 같은 인터커넥트(interconnect)를 통해 호스트에 연결될 수 있다. 호스트와 장치는 인터커넥트를 사용하여 프로그램에 대한 입력 및/또는 출력(I/O) 데이터를 교환할 수 있다. 임베디드 운영 체제는 사용자가 트레이싱(tracing) 프로그램, 디버깅(debugging) 프로그램, 프로파일링(profiling) 프로그램 등과 같은 프로그램을 모니터링 및/또는 문제 해결하기 위한 하나 이상의 프로그램을 실행할 수 있도록 하는 터미널(terminal)을 지원할 수 있다. 단, 터미널은 인터커넥트를 통해 운영 체제에 액세스하지 못할 수 있다. 따라서, 사용자는 장치에 추가 하드웨어를 연결해야만 이러한 기능에 액세스할 수 있다.
본 개시의 예시적인 실시예에 따른 장치는 사용자가 인터커넥트를 통해 임베디드 운영 체제에 액세스하는 것을 가능하게 할 수 있다. 일부 실시예에서, 장치는 인터커넥트의 추가 기능을 사용함으로써, 인터커넥트를 통해 운영 체제의 하나 이상의 특징을 노출(expose)할 수 있다. 예를 들어, 저장 장치는 인터커넥트의 제1 기능을 사용하도록 구성된 저장 장치 컨트롤러를 가질 수 있다. 저장 장치는 인터커넥트를 통해 저장 장치로서의 정상적인 동작과 관련된 데이터를 송수신하기 위해 제1 기능을 사용할 수 있다. 저장 장치에서 실행되는 임베디드 운영 체제는 인터커넥트의 제2 기능을 사용하도록 구성될 수 있다. 따라서, 사용자(예를 들어, 호스트에서 실행되는 하나 이상의 프로그램)는 저장 장치로 및/또는 저장 장치로부터 저장 데이터를 전송하는 데 사용되는 동일한 인터커넥트를 사용하여 운영 체제에 액세스할 수 있다. 구현 세부 사항에 따라, 사용자가 추가적 하드웨어 거의 또는 전혀 없이 임베디드 운영 체제에 액세스할 수 있다. 구현 세부 사항에 따라, 사용자는 디버깅, 트레이싱, 프로파일링, 파일 전송, 소프트웨어 업데이트, 펌웨어 업데이트와 같은 제2 기능을 사용하여 운영 체제에서 사용할 수 있는 모든 유형의 기능에 액세스할 수도 있다.
일부 실시예에서, 장치는 장치에서 실행되는 임베디드 운영 체제가 인터커넥트를 통해 액세스될 수 있도록 하는 통신 로직을 포함할 수 있다. 일부 실시예에서, 호스트는 인터커넥트를 통해 임베디드 운영 체제에 액세스하기 위해 터미널 애플리케이션을 사용할 수 있다. 예를 들어, 장치는 터미널(예를 들어, 가상 터미널(virtual terminal))이 PCIe 및/또는 관련 프로토콜과 같은 인터커넥트를 통해 연결을 설정할 수 있는 통신 로직(예를 들어, 적어도 하나의 터미널 지원 드라이버(terminal support driver)를 포함할 수 있음)을 포함할 수 있다. 호스트는 터미널 애플리케이션이 인터커넥트를 통해 임베디드 운영 체제에 연결할 수 있도록 하는 드라이버를 포함할 수 있다. 일부 실시예에서, 통신 로직은 사용자가 사용자의 특권 레벨(privilege level)에 기초하여 운영 체제의 하나 이상의 특징에 액세스하는 것을 가능하게 할 수 있다.
일부 실시예에서, 장치 및 호스트는 생산자-소비자 방식(producer-consumer scheme)을 사용하여 데이터를 교환하도록 구성될 수 있다. 생산자-소비자 방식의 일부 실시예에서, 생산자는 소비자가 사용할 수 있는 데이터를 생성할 수 있다. 예를 들어, 통신 로직을 사용하여 제어되는 프로그램은 생산자로 작동하고 출력 데이터를 버퍼(예를 들어, 링 버퍼(ring buffer))에 저장할 수 있다. 사용자(예를 들어, 호스트에서 실행되는 응용 프로그램)는 소비자로 작동하고 버퍼에서 출력 데이터를 검색할 수 있다.
도 1은 본 개시의 예시적인 실시예에 따른 시스템의 실시예를 도시한다. 도 1에 예시된 시스템은 호스트(102) 및 장치(104)를 포함할 수 있다. 호스트(102)는 하나 이상의 프로세서(106) 및 호스트(102)가 인터커넥트 패브릭(fabric)(110)을 통해 장치(104)와 통신할 수 있게 하는 인터커넥트 인터페이스(108)를 포함할 수 있다. 호스트(102)는 장치(104)의 주요 기능과 관련될 수 있는 애플리케이션(112)을 실행하도록 구성될 수 있다. 예를 들어, 장치(104)가 저장 장치인 경우, 애플리케이션(112)은 저장 애플리케이션일 수 있다. 다른 예로서, 장치(104)가 네트워크 인터페이스 카드(Network Interface Card, NIC)이면, 애플리케이션(112)은 네트워킹 애플리케이션일 수 있다.
장치(104)는 저장 장치, 가속기, NIC 등 또는 이들의 임의의 조합과 같은 임의의 유형의 장치로서 구현될 수 있다. 장치(104)는 하나 이상의 프로세서(114) 및 인터커넥트 인터페이스(116)를 포함할 수 있다. 프로세서(114)는 인터커넥트 인터페이스(116)에 의해 구현되는 인터커넥트의 기능 A로서 구성될 수 있다. 예를 들어, 인터커넥트 인터페이스(116)가 PCIe로 구현된다면, 프로세서(114)는 기능 0으로 구성될 수 있다. 프로세서(114)는 임베디드 운영 체제(118)가 터미널 및/또는 터미널 애플리케이션을 사용하여 액세스될 수 있게 하는 하나 이상의 터미널 지원 드라이버(120)를 갖는 임베디드 운영 체제(118)를 실행하도록 구성될 수 있다. 예를 들어, 운영 체제(118)가 임베디드 Linux로 구현되는 경우, 하나 이상의 터미널 지원 드라이버(120)는 Linux 콘솔(console)이 Linux 커널(kernel)에 액세스(예를 들어, Linux 커널에 대한 입력 및/또는 출력을 제공)하는 것을 가능하게 할 수 있다.
일부 실시예에서, 호스트(102)는 인터커넥트 인터페이스(116)를 통해 임베디드 운영 체제(118)에 액세스할 수 없을 수 있다. 따라서, 임베디드 운영 체제(118)에 액세스하기 위해(예를 들어, 장치(104)에서 펌웨어의 디버그 로그를 수집하기 위해), 사용자는, 예를 들어, 통신 연결(124)(예를 들어, 직렬 연결)을 통해 액세스될 수 있는 통신 포트(122)(예를 들어, Universal Asynchronous Receiver-Transmitter (UART))를 사용하거나, JTAG(Joint Test Action Group) 및/또는 SWD(Serial Wire Debug) 연결과 같은 포트를 통한 디버깅과 함께 다른 디버그 도구 및/또는 소프트웨어 후크(hook)를 사용하여, 추가 하드웨어를 장치(104)에 연결할 수 있다. 그러나, 추가 하드웨어의 사용은, 예를 들어, 원격 위치에 있는 장치로 구현하는 데 비용이 많이 들거나 어려울 수 있다.
도 2는 본 개시의 예시적인 실시예에 따른 터미널에 대한 하드웨어 연결을 구현하기 위한 소프트웨어 스택(stack)의 예시적인 실시예를 도시한다. 도 2에 도시된 실시예는, 예를 들어, 도 1에 도시된 통신 포트(122)에 연결하기 위해 임의의 장치(예를 들어, 호스트)에 의해 사용될 수 있다. 예시를 위해, 도 2에 도시된 실시예는 Linux 운영 체제의 컨텍스트(context)이지만, 유사한 스택이 모든 운영 체제에서 구현될 수 있다.
도 2를 참조하면, 소프트웨어 스택은 파일 디스크립터(descriptor)(226)로 표현될 수 있는 통신 포트(222)에 액세스하도록 구성된 터미널 애플리케이션(225)을 포함할 수 있다. 터미널 애플리케이션(225)은 가상 파일 시스템(Virtual File System, VFS)(228)에 대한 시스템 콜(227)을 통해 통신 포트(222)에 액세스할 수 있다. 가상 파일 시스템(228)은 캐릭터 장치 드라이버(229)에서 관련 기능을 호출함으로써 시스템 콜을 처리할 수 있다. 캐릭터 장치 드라이버(229)는 통신 포트(222)의 하드웨어 버퍼 레지스터로 및/또는 하드웨어 버퍼 레지스터로부터 독출 및/또는 기입할 수 있는 통신 포트 드라이버(230)를 포함할 수 있다.
도 3은 본 개시의 예시적인 실시예에 따른 임베디드 운영 체제에 대한 액세스를 사용자에게 제공할 수 있는 시스템의 실시예를 도시한다. 도 3에 예시된 시스템은 동일한 숫자로 끝나는 참조 번호가 유사한 기능을 수행할 수 있는 구성 요소를 나타낼 수 있는 도 1에 예시된 것과 유사한 구성 요소를 포함할 수 있다. 그러나, 도 3에 도시된 실시예에서, 통신 로직(320)은 인터커넥트 인터페이스(316)에 의해 구현된 인터커넥트의 제2 기능인 기능 B를 사용하여 운영 체제(318)의 하나 이상의 특징을 노출하도록 구성될 수 있다. 예를 들어, 인터커넥트 인터페이스(316)는 PCIe로 구현되고, 장치 컨트롤러(예를 들어, 프로세서(314)에 의해 구현될 수 있음)는 기능 0을 사용하도록 구성될 수 있고, 통신 로직(320)은 기능 1을 사용하여 다른 컨트롤러(예를 들어, 디버그 컨트롤러)를 노출하도록 구성될 수 있다.
도 3에 예시된 실시예에서, 호스트 프로세서(306)는 사용자(예를 들어, 호스트(302)에서 실행되는 애플리케이션)가 인터커넥트 인터페이스를 통해 운영 체제(318)에 액세스하는 것을 가능하게 할 수 있는 터미널 애플리케이션(332)을 실행하도록 구성될 수 있다. 예를 들어, 터미널 애플리케이션(332)은 통신 로직(320)을 통해 사용자 애플리케이션의 디버깅, 트레이싱, 프로파일링 등을 위한 프로그램(예를 들어, 유틸리티)을 런칭(launching)함으로써, 운영 체제(318)에서 실행되는 CS(Computational Storage) 프로그램과 같은 사용자 애플리케이션을 모니터링 및/또는 문제 해결하는 데 사용될 수 있다. 구현 세부 사항에 따라, 이것은 사용자가 도 1에 도시된 통신 포트와 같은 추가 하드웨어를 사용하지 않고 임베디드 운영 체제(318)에 의해 제공되는 기능의 일부 또는 전부에 액세스할 수 있게 할 수 있다.
도 4는 본 개시의 예시적인 실시예에 따른 인터커넥트를 통해 장치 운영 체제에 액세스하는 시스템의 드라이버 구성의 예시적인 실시예를 도시한다. 도 4에 예시된 드라이버 구성은, 예를 들어, 도 3, 도 5, 도 9, 도 10, 도 11 및/또는 도 12와 관련하여 설명되는 것을 포함하여 여기에 개시된 인터커넥트를 통해 장치 운영 체제에 액세스하는 실시예 중 임의의 실시예에서 데이터 흐름을 지원하기 위해 구현될 수 있다.
도 4를 참조하면, 호스트(402) 및 장치(404)는 인터커넥트 패브릭(410)을 통해 연결될 수 있다. 호스트(402)는 터미널 애플리케이션(432), 가상 파일 시스템(428), 및 하나 이상의 드라이버(434)를 포함할 수 있다. 드라이버(434)는 인터커넥트 패브릭(410), 라인 규범(line discipline)(438) 및/또는 텔레타이프(teletype, TTY) 드라이버(440)를 위한 하드웨어 드라이버(436)를 포함할 수 있다. 터미널 애플리케이션(432)은 가상 파일 시스템(428)을 사용하여 하나 이상의 드라이버(434)와 통신할 수 있다. 하나 이상의 드라이버(434)는 터미널 애플리케이션(432)이, 예를 들어, 도 3에 예시된 인터커넥트 인터페이스(308)와 같은 인터커넥트 인터페이스를 통해 인터커넥트 패브릭(410)을 통해 통신할 수 있게 할 수 있다. 일부 실시예에서, 하나 이상의 드라이버(434)는 장치(404)의 기존 장치 드라이버에 드라이버(434)의 기능을 추가하여 구현될 수 있다. 이러한 실시예에서 하드웨어 드라이버(436)는 장치(404)에 대한 기존 장치 드라이버에 이미 존재할 수 있다.
장치(404)는 하나 이상의 프로세서(414), 하나 이상의 드라이버(442) 및 장치 기능(444)을 포함할 수 있다. 장치 기능(444)은 저장 컨트롤러 및 저장 매체, 컴퓨테이셔널 저장 장치를 위한 하나 이상의 컴퓨팅 리소스, 가속기를 위한 하나 이상의 처리 리소스, NIC를 위한 네트워크 인터페이스 하드웨어와 같은, 장치(404)의 하나 이상의 기본 기능을 구현할 수 있다. 일부 실시예에서, 장치 기능(444)은 인터커넥트 패브릭(410)을 통해 통신하는 인터커넥트의 제1 기능을 사용하여 액세스될 수 있다.
하나 이상의 드라이버(442)는 하나 이상의 프로세서(414)에서 실행되는 운영 체제가, 예를 들어, 도 3에 예시된 인터커넥트 인터페이스(316)와 같은 인터커넥트 인터페이스를 통해 인터커넥트 패브릭(410)으로 통신하도록 할 수 있다. 더 많은 드라이버(442)는 인터커넥트 패브릭(410)을 통해 통신하는 인터커넥트의 제2 기능을 사용하여 프로세서(414)에서 실행되는 운영 체제에 대한 액세스를 제공하도록 구성될 수 있는 통신 로직(420)을 포함할 수 있다. 하나 이상의 드라이버(442)는 또한, 인터커넥트 패브릭(410), 라인 규범(439) 및/또는 텔레타이프(TTY) 드라이버(441)를 위한 하드웨어 드라이버(437)를 포함할 수 있다. 도 4에 별도의 구성요소로 도시되어 있지만, 일부 실시예에서 통신 로직(420)은 하드웨어 드라이버(437), 라인 규범(439) 및/또는 텔레타이프(TTY) 드라이버(441) 중 하나 이상과 부분적으로 또는 전체적으로 통합될 수 있다. 일부 실시예에서, 통신 로직(420)은 하나 이상의 터미널 지원 드라이버를 포함할 수 있다.
일부 실시예에서, 하나 이상의 드라이버(442)는 디버그 장치, 디버그 통신(dbgCOMM) 장치, USB 디버그(dbgUSB) 장치, 컴퓨테이셔널 저장 NVMe(Nonvolatile Memory Express) 디버그(dbgCSNVMe) 장치 와 같은 하나 이상의 장치(예를 들어, 하나 이상의 컨트롤러)를 구현할 수 있다. 일부 실시예에서, 하나 이상의 드라이버(442)는 장치(404)에서 실행 중인 운영 체제의 하나 이상의 기능을 노출(예를 들어, 호스트(402)에서 실행되는 애플리케이션과 같은 사용자에게 액세스 가능하게 함)할 수 있는 소프트웨어 통신(소프트웨어 COMM) 포트를 구현할 수 있다.
호스트(402)가 도 4에 도시된 시스템을 사용하여 본 발명의 예시적인 실시예에 따른 장치 운영 체제에 액세스할 수 있는 예시적인 동작은 다음과 같이 진행될 수 있다. 호스트(402)는 터미널 애플리케이션(432)을 통해 사용자로부터 명령(command)을 수신할 수 있다. 명령은, 예를 들어, 가상 파일 시스템(virtual file system)(428)을 통해 가상 파일 디스크립터(virtual file descriptor)(426)를 사용하여 도 4에 도시된 호스트 스택에 의해 처리될 수 있다. 명령은 드라이버(434) 중 하나 이상을 사용하여, 호스트(402)에서 장치(404)로 전달될 수 있으며, 이는 장치(404)의 정상 동작에 사용되는 기능 이외의 인터커넥트 기능을 사용하여 인터커넥트 패브릭(410)을 통해 전달될 수 있다. 장치(404)에서, 명령은 예를 들어, 운영 체제 커널에 명령을 전달할 수 있는 드라이버(442)(예를 들어, 하나 이상의 터미널 지원 드라이버로 구현된 통신 로직(420)) 중 하나 이상을 사용하여 장치 스택에 의해 처리될 수 있다. 그러면 운영 체제 커널이 명령을 실행할 수 있다. 명령의 하나 이상의 출력(예를 들어, 디버깅 로그, 퍼포먼스 프로파일, 계산 등)은 본질적으로 명령을 전송하는 것과 반대일 수 있는 프로세스를 사용하여 터미널 애플리케이션(432)을 통해 사용자에게 다시 전송될 수 있다. 따라서, 하나 이상의 출력은 다른 하나의 인터커넥트 기능을 사용하여 인터커넥트 패브릭(410)을 통해 하나 이상의 출력을 전달할 수 있는 드라이버(442)(예를 들어, 터미널 지원 드라이버) 중 하나 이상을 사용하여 장치 스택에 의해 처리될 수 있다. 호스트(402)에서 명령의 하나 이상의 출력은 드라이버(434) 중 하나 이상을 사용하여 호스트 스택에 의해 처리될 수 있다. 그러면 하나 이상의 출력이, 파일 디스크립터(426)를 사용하여 가상 파일 시스템(428)에 의해 터미널 애플리케이션(432)으로 전달될 수 있다.
일부 실시예에서, 드라이버(442) 중 하나 이상은 드라이버의 기능을 장치(404)의 상호 연결 인터페이스에 대한 기존 드라이버에 추가함으로써 구현될 수 있다. 이러한 실시예에서, 하드웨어 드라이버(437)는 이미 장치(404)에 대한 기존 드리아버에 존재할 수 있다. 일부 실시예에서, 하나 이상의 드라이버(442)는 사용자가 사용자의 특권 레벨에 기초하여 운영 체제의 하나 이상의 기능에 액세스할 수 있도록 구성될 수 있다.
도 5는 본 개시의 예시적인 실시예에 따른 인터커넥트를 통해 장치의 임베디드 운영 체제에 대한 액세스를 사용자에게 제공할 수 있는 장치의 더 상세한 예시적 실시예를 도시한다. 도 5에 예시된 장치는 예를 들어, 도 3, 도 4, 도 9, 도 10 및/또는 도 12에 예시된 것들을 포함하여 여기에 예시된 장치들 중 임의의 것을 구현하기 위해 사용될 수 있다.
도 5를 참조하면, 장치(504)는 인터커넥트 인터페이스(516), 장치 컨트롤러(515), 장치 기능(544) 및 하나 이상의 프로세서(514)를 포함할 수 있다.
일부 실시예에서, 장치 컨트롤러(515)는 인터커넥트 인터페이스(516)의 제1 기능인 기능 A를 사용하도록 구성될 수 있고, 하나 이상의 프로세서(514)는 하나 이상의 통신 로직(520)을 노출할 수 있는 운영 체제(518)를 실행할 수 있다. 예를 들어, 인터커넥트 인터페이스(516)가 PCIe로 구현된다면, 장치 컨트롤러(515)는 기능 0을 구현할 수 있고, 통신 로직(520)은 기능 1을 구현할 수 있다. 일부 실시예(예를 들어, PCIe 구현)에서, 제1 기능 및 제2 기능인 기능 A 및 기능 B는 동일한 물리적 장치로 구현될 수 있음에도 불구하고 개별(예를 들어, 논리적) 장치로서 인터커넥트에 의해 처리될 수 있다. 일부 실시예에서, 통신 로직(520)은 하나 이상의 터미널 지원 드라이버를 포함할 수 있다.
일부 실시예는, 예를 들어, 인터커넥트 인터페이스(516)에 의해 구현된 인터페이스의 상단에 또는 통합된 통신 프로토콜을 구현할 수 있는 프로토콜 인터페이스(548)를 더 포함할 수 있다. 인터커넥트 인터페이스(516) 및/또는 프로토콜 인터페이스(548)는, Peripheral Component PCIe, NVMe, NVMe-oF(NVMe-over-Fabric), 이더넷(Ethernet), TCP/IP(Transmission Control Protocol/Internet Protocol), RDMA(Remote Direct Memory Access), ROCE(RDMA over Converged Ethernet), FibreChannel, InfiniBand, SATA(Serial ATA), SCSI(Small Computer Systems Interface), SAS(Serial Attached SCSI), iWARP 등 또는 이들의 조합을 포함하는 임의의 인터커넥트 또는 저장 프로토콜을 구현할 수 있다. 예를 들어, 장치(504)가 저장 장치로서 구현되는 실시예에서, 인터커넥트 인터페이스(516)는 PCIe 인터커넥트를 구현할 수 있고, 프로토콜 인터페이스(548)는 NVMe 프로토콜을 구현할 수 있다.
일부 실시예에서, 인터커넥트 인터페이스(516), 프로토콜 인터페이스(548), 및/또는 장치(504)의 다른 컴포넌트는 코히런트(coherent)(예를 들어, 메모리 코히런트, 캐시 코히런트 등) 또는 CXL(Compute Express Link) 및/또는 CXL.mem, CXL.cache 및/또는 CXL.IO와 같은 코히런트 프로토콜과 같은 메모리 시맨틱 인터페이스를 구현할 수 있다. 코히런트 및/또는 메모리 시맨틱 인터페이스 및/또는 프로토콜의 다른 예는, Gen-Z, CAPI(Coherent Accelerator Processor Interface), CCIX(Cache Coherent Interconnect for Accelerators) 등을 포함할 수 있다.
장치 기능(544)은 저장 장치를 위한 저장 매체, 컴퓨테이셔널 저장 장치를 위한 하나 이상의 컴퓨팅 리소스, 가속기를 위한 하나 이상의 처리 리소스, NIC 등을 위한 네트워크 인터페이스 하드웨어와 같은 장치(504)의 하나 이상의 주요 기능을 구현할 수 있다. 장치 컨트롤러(515)는 장치 기능(544)에 대한 액세스 및/또는 그 동작을 제어할 수 있다. 예를 들어, 장치(504)가 저장 장치로 구현되는 경우, 장치 컨트롤러는 저장 장치 컨트롤러로 구현될 수 있다. 추가적으로 또는 대안적으로, 장치(504)가 컴퓨테이셔널 저장 장치로서 구현된다면, 장치 컨트롤러(515)는 컴퓨트 자원 컨트롤러로서 구현될 수 있다. 다른 예로서, 장치(504)가 NIC로 구현된다면, 장치 컨트롤러(515)는 미디어 액세스 컨트롤러(Media Access Controller, MAC)로 구현될 수 있다.
일부 실시예에서, 통신 로직(520)은 가상 터미널이 운영 체제(518)에 액세스하는 것을 가능하게 할 수 있다. 예를 들어, 운영 체제(518)가 임베디드 Linux로 구현되는 경우, Linux 콘솔은 Linux 커널, 예를 들어, Linux 커널의 가상 터미널(Virtual Terminal, VT) 서브시스템(subsystem)을 사용하여, Linux 커널로의 액세스를 제공할 수 있다.
일부 실시예에서, 통신 로직(520)의 일부 또는 전부는 하나 이상의 커널 모듈로서 구현될 수 있다. 예를 들어, 운영 체제(518)가 임베디드 Linux로 구현되는 실시예에서, 통신 로직(520)은 Linux 커널 모듈로 구현될 수 있는 하나 이상의 터미널 지원 드라이버를 포함할 수 있으며, 이는 요청 시 로드(load)될 수 있고, Linux 커널의 기능을 확장할 수 있는 하나 이상의 코드일 수 있다.
일부 실시예는 호스트와 운영 체제(518) 사이에서 교환되는 데이터를 버퍼링하는 데 사용될 수 있는 하나 이상의 버퍼(546), 또는 제어(예를 들어, 시작, 모니터링 등)될 수 있는 프로그램을 더 포함할 수 있다. 일부 실시예에서, 호스트 및 장치(504)는 생산자-소비자 모델로 구성될 수 있다. 예를 들어, 통신 로직(520)을 사용하여 제어되는 프로세스는 생산자로서 작동하고, 하나 이상의 버퍼(예를 들어, 링 버퍼)(546)에 출력 데이터를 저장할 수 있다. 호스트)는 소비자로 작동하고 하나 이상의 버퍼(546)로부터 출력 데이터를 검색할 수 있다.
인터커넥트 인터페이스(516), 장치 컨트롤러(515), 장치 기능(544) 및 하나 이상의 프로세서(514), 통신 로직(520), 프로토콜 인터페이스(548) 및/또는 버퍼(546)를 포함하는 도 5에 예시된 임의의 구성요소는, 소프트웨어, 하드웨어 또는 이들의 조합, 조합 로직, 순차(sequential) 로직, 하나 이상의 타이머, 카운터, 레지스터 및/또는 상태 머신 포함하는 이들의 조합, DRAM(Dynamic Random Access Memory) 및/또는 SRAM(Static Random Access Memory)과 같은 휘발성 메모리를 포함하는 모든 유형의 메모리, NVRAM(nonvolatile random access memory), 플래시 메모리, 영구 메모리 등 또는 이들의 조합을 포함하는 모든 유형의 비휘발성 메모리, 하나 이상의 CPLD(complex programmable logic device), FPGA(field programmable gate array), ASIC(application specific integrated circuit), CISC(complex instruction set computer) 프로세서, CPU(Central Processing Unit) x86 프로세서및/또는 과 같은 ARM 프로세서, GPU(Graphics Processing Unit), NPU(Neural Processing Unit), TPU(Tensor Processing Unit) RISC(Redused instruction Set Computer) 프로세서 또는 이들의 조합, 실행되는 명령어가 저장된 메모리 등으로 구현될 수 있다. 일부 실시예에서, 하나 이상의 컴포넌트는 시스템 온 칩(SOC)으로서 구현될 수 있다.
일부 실시예에서, 인터커넥트 인터페이스(516)는 패브릭(510)을 통해 하나 이상의 호스트 및/또는 다른 장치와 통신하기 위한 하나 이상의 송신기, 수신기, 버퍼 등과 같은 회로를 포함할 수 있다. 예를 들어, 장치(504)가 저장 장치로서 구현되는 경우, 장치 컨트롤러(515) 및 하나 이상의 프로세서 중 적어도 하나는 단일 구성요소에 통합될 수 있다. 다른 예로서, 장치(504)가 컴퓨테이셔널 저장 장치로서 구현되는 경우, 장치 기능(544)의 하나 이상의 컴퓨트 자원(예를 들어, 장치(504)의 저장 매체에 저장된 데이터에 대한 연산을 수행하도록 구성될 수 있는 하나 이상의 처리 요소)은 운영 체제(518)가 실행될 수 있는 FPGA, ASIC 등으로 구현될 수 있다.
일부 실시예에서, 여기에 개시된 임의의 터미널 애플리케이션 및/또는 터미널은 연결 기반 및/또는 비연결 통신을 구현할 수 있다.
일부 실시예에서, 인터커넥트를 통해 장치의 운영 체제에 액세스하는 것은 사용자가 운영 체제의 커널, 운영 체제에서 실행되는 프로그램(예를 들어, GDB(GNU Debugger), ltrace, strace, dmesg, top, cpuinfo, ebpf 도구 및/또는 /또는 이와 유사한 것), 프로그램으로부터의 로그 메시지(예를 들어, 디버그 로그)에 대한 액세스, 장치의 관리(예를 들어, 리소스, 구성 및/또는 작동), 및/또는 이와 유사한 것들 중 일부 또는 모두를 포함하는 터미널을 통해 운영 체제에 의해 제공되는 기능의 일부 또는 전부를 가능하게 할 수 있다. 구현 세부 사항에 따라 케이블과 같은 추가 하드웨어를 사용하지 않고 상호 연결을 통해 이러한 기능 중 하나 이상에 액세스할 수 있다.
일부 실시예에서, 인터커넥트를 통해 장치의 운영 체제에 액세스하는 것은 마이크로서비스를 실행할 수 있는 장치에서 특히 유리할 수 있다. 예를 들어, 본 개시의 예시적인 실시예에 따른 장치 운영 체제에 액세스하는 것은 사용자가 각각의 마이크로서비스를 개별적으로 모니터링 및/또는 디버그하는 것을 가능하게 할 수 있다. 또한, 본 개시의 예시적인 실시예에 따른 장치 운영 체제에 액세스하는 것은 사용자가 마이크로서비스를 관리 및/또는 제어하는 것을 가능하게 할 수 있으며, 예를 들어, 하나 이상의 마이크로서비스 (개별적으로 및/또는 특정 그룹으로), 컨피겨(configure) 마이크로서비스 (개별적으로 및/또는 특정 그룹으로) 등을 시작 및/또는 중지할 수 있다.
도 6은 본 개시의 예시적인 실시예에 따른 링 버퍼 방식의 예시적인 실시예를 도시한다. 도 6에 예시된 실시예는 예를 들어, 도 5에 예시된 하나 이상의 버퍼(546)를 구현하기 위해 사용될 수 있다.
도 6을 참조하면, 링 버퍼(646)는 시작 메모리 위치의 어드레싱을 끝 메모리 주소로 루핑(looping)함으로써 링(예를 들어, 경계 버퍼)으로서 배열될 수 있는 메모리 위치(예를 들어, 연속 메모리 위치)로 구현될 수 있다. 일부 실시예에서 호스트 및 장치는 생산자-소비자 모델로 구성될 수 있다. 예를 들어, 통신 로직을 사용하여 제어되는 프로그램은 생산자로 작동하고 출력 데이터를 링 버퍼(646)에 저장할 수 있다. 사용자(예를 들어, 호스트에서 실행되는 애플리케이션)는 소비자로 작동하고 링 버퍼(646)에서 출력 데이터를 검색할 수 있다.
링 버퍼(646)는 생산자 인덱스(650)가 가리키는 메모리 위치에서 링 버퍼(646)에 새로운 엔트리(entry)(예를 들어, 로그 및/또는 디버그 메시지와 같은 출력 데이터)를 배치함으로써 동작할 수 있다. 점은 점유된 메모리 위치를 나타낼 수 있다. 생산자 인덱스(650)는 새로운 엔트리가 링 버퍼(646)에 배치될 때마다 다음 이용 가능한 메모리 위치를 가리키도록 증분(increment)될 수 있다. 엔트리는 소비자 인덱스(652)가 가리키는 메모리 위치에서 링 버퍼(646)로부터 독출될 수 있다. 일부 실시예에서, 생산자(예를 들어, 호스트)는 소비자 인덱스(652)가 가리키는 위치가 새로운 항목으로 덮어쓰기되기 전에 생산자가 데이터를 읽는 것을 보장할 수 있다. 생산자 인덱스(650) 및 소비자 인덱스(652)가 동일한 위치를 가리키는 경우, 링 버퍼(646)가 비어 있음을 나타낼 수 있다. 일부 실시예에서, 링 버퍼(646)는 호스트 및 장치에 액세스할 수 있는 공유 메모리 위치에 위치할 수 있다. 일부 실시예에서, 링 버퍼(646)는 호스트, 일부 다른 위치에 위치하거나, 여러 위치 사이에 분산될 수 있다.
일부 실시예에서, 링 버퍼(646)는 예를 들어 인터럽트(예를 들어, MSI(Message Signaled Interrupt), 상태 레지스터의 상태 비트 등으로 구현될 수 있는 도어벨(doorbell) 기능을 통해 출력 데이터가 이용가능함을 사용자(예를 들어, 호스트에서 실행되는 애플리케이션)에게 통지할 수 있다.
도 7a는 본 개시의 예시적인 실시예에 따른 장치에 대한 장치 레지스터의 예시적인 실시예를 예시한다. 예시를 위해, 도 7a에 예시된 실시예는 PCIe 레지스터의 맥락에서 설명될 수 있지만 원리는 모든 유형의 인터커넥트에 적용될 수 있다. 도 7a에 도시된 실시예에서, 기능 번호로 식별된 3개의 비트는 장치의 특정 특징과 연관된 기능을 식별할 수 있다. 예를 들어, 도 5에 예시된 장치(504)의 실시예가 PCIe로 예시되면, 저장 장치 컨트롤러(515)에 대해 구성된 제1 기능인 기능 A에 대한 제1 레지스터는 비트 위치 8-10에서 비트 000(기능 0)을 가질 수 있고, 통신 로직(520)에 대해 구성된 제2 기능인 기능 B에 대한 제2 레지스터는 비트 위치 8-10에서 비트 001(기능 1)을 가질 수 있다.
도 7b는 본 개시의 예시적인 실시예에 따른 인터커넥트의 기능을 사용하여 액세스될 수 있는 장치 및 장치 운영 체제를 갖는 시스템에 대한 질의 명령 및 결과적인 출력의 예시적인 실시예를 도시한다. 예시를 위해, 도 7b에 예시된 실시예는 명령 lspci가 Linux 운영 체제를 실행하는 도 5에 예시된 것과 같은 시스템의 PCIe 구성을 결정하는 데 사용되지만 다른 상호 연결 및/또는 운영 체제를 사용할 수 있다.
도 7b를 참조하면, 제1 라인은 결과를 제조업체 A의 항목으로 좁히기 위해 필터(예를 들어, grep)를 통해 파이프라인과 함께 사용되는 명령 lspci를 나타낸다. 다음 두 줄의 출력은 [버스]:[슬롯].[기능] [클래스]:[벤더(vendor) 및 프로덕트(product)] 같은 포맷을 가질 수 있다. 따라서, 제2 라인은 장치 컨트롤러(예를 들어, 도 5에 도시된 장치 컨트롤러(515))가 버스(60), 슬롯 0, 기능 0에 대해 NVMe SSD 컨트롤러로서 제조업체 A의 비휘발성 메모리 컨트롤러의 클래스로 구성될 수 있음을 보여준다. 제3 라인은 디버그 컨트롤러(예를 들어, 도 5에 예시된 통신 로직(520)를 사용하여 프로세서(514)에 의해 구현됨)가 버스(60), 슬롯 0, 기능 1에 대해 디버그 컨트롤러로서 제조업체 A의 비휘발성 메모리 컨트롤러의 클래스로 구성될 수 있음을 보여준다.
도 8은 본 개시의 예시적인 실시예에 따른 인터커넥트를 통해 장치 운영 체제에 액세스하는 데 사용될 수 있는 터미널 프로그램(터미널 애플리케이션으로도 지칭될 수 있음)을 위한 사용자 인터페이스의 예시적인 실시예를 도시한다. 예시를 위해, 도 8에 예시된 실시예는 PCIe 인터커넥트의 맥락에서 예시될 수 있고 PuTTY와 같은 기존 터미널 프로그램을 수정함으로써 구현될 수 있지만, 인터커넥트를 통해 장치 운영 체제에 액세스하기 위한 터미널 프로그램은 모든 유형의 인터커넥트를 위한 기타 수정 및/또는 맞춤형 소프트웨어 구현될 수 있다. 도 8을 참조하면, 터미널 프로그램은 라디오 버튼(854)에 의해 도시된 바와 같이 PCIe를 사용하여 장치 운영 체제에 연결하기 위한 옵션을 사용자에게 제공할 수 있다.
도 9는 본 개시의 예시적인 실시예에 따른 인터커넥트를 통해 장치 내장 운영 체제에 액세스하기 위해 관리 인터페이스가 사용될 수 있는 시스템의 예시적인 실시예를 도시한다. 도 9에 도시된 실시예는 제1 호스트(902), 제2 호스트(962) 및 장치(904)를 포함할 수 있다. 제1 호스트(902) 및 장치(904)는 인터커넥트 패브릭(910)을 통해 연결될 수 있다. 제2 호스트(962) 및 장치(904)는, 일부 실시예에서 패브릭(910)의 확장일 수 있는 인터커넥트 패브릭(972)을 통해 연결될 수 있다.
제1 호스트(902)는 동일한 숫자로 끝나는 참조 번호가 유사한 기능을 수행할 수 있는 구성요소를 나타낼 수 있는 도 3에 예시된 것과 유사한 일부 구성요소를 포함할 수 있다. 그러나, 도 9에 예시된 제1 호스트(902)는 인터커넥트 인터페이스(908)에 의해 구현된 PCIe 인터커넥트 위에 NVMe 프로토콜을 구현하도록 구성된 NVMe 드라이버(956)를 포함할 수 있다. NVMe 드라이버(956)는 터미널 애플리케이션을 가능하게 할 수 있는 부분(957)을 포함할 수 있다. 932는 PCIe 인터페이스(908)를 통해 제2 기능인 기능 B로서 장치(904)에서 실행되는 운영 체제(918)에 액세스한다. 제2 기능인 기능 B는, 예를 들어, 운영 체제(918)의 통신 로직(920)에 의해 구현될 수 있다. 일부 실시예에서, NVMe 드라이버(956)의 부분(957)은 도 4에 예시된 하나 이상의 드라이버(434)와 통합되거나 유사한 방식으로 구현될 수 있다.
장치(904)는 동일한 숫자로 끝나는 참조 번호가 유사한 기능을 수행할 수 있는 구성 요소를 나타낼 수 있는 도 5에 예시된 것과 유사한 일부 구성 요소를 포함할 수 있다. 그러나, 도 9에 예시된 장치(904)는 버스 인터페이스(980)를 포함할 수 있다. 또한, 도 9에 예시된 장치(904)에서, 프로토콜 인터페이스(958)는 PCIe 위에 NVMe 및 NVMe-MI(NVMe Management Interface) 프로토콜을 구현할 수 있다. 일부 실시예에서, NVMe 및 NVMe-MI 인터페이스(948)는 도 4에 도시된 하나 이상의 드라이버(442)와 통합되거나 이와 유사한 방식으로 구현되는 드라이버를 가질 수 있다.
제2 호스트(962)는 BMC(Baseboard Management Controller)와 같은 관리 컨트롤러로 구현될 수 있다. 제2 호스트(962)는 하나 이상의 프로세서(961), 인터커넥트 인터페이스(970), 원격 액세스 인터페이스(974), 및 버스 인터페이스(978)를 포함할 수 있다. 하나 이상의 프로세서(961)는 관리 애플리케이션(964), 터미널 애플리케이션(966) 및 NVMe-MI 드라이버(968)를 포함한다. 인터커넥트 인터페이스(970)는 PCIe 인터커넥트를 구현하도록 구성될 수 있다.
제2 호스트(962)의 버스 인터페이스(978)는 SMBus(System Management Bus) 및/또는 I2C(Inter-Integrated Circuit) 버스와 같은 관리 버스를 통해 장치의 버스 인터페이스(980)와 통신하도록 구성될 수 있다. 이 관리 버스 연결은 관리 애플리케이션(964)이 구성, 시스템 시작, 시스템 재설정, 펌웨어 업데이트 및/또는 업그레이드, 전력 모니터링 및/또는 관리 등과 같은 장치(904)의 하나 이상의 관리 측면을 관리할 수 있게 할 수 있다. 원격 액세스 인터페이스(974)는 사용자가 이더넷, TCP/IP, RDMA, ROCE, FibreChannel, InfiniBand 및/또는 유사한 구성과 같은 인터페이스 및/또는 프로토콜을 사용하여 원격 액세스 연결(976)을 통해 하나 이상의 프로세서(961)에 접근할 수 있도록 할 수 있다.
제2 호스트(962)의 NVMe-MI 드라이버(968)는 도 4에 예시된 드라이버(434)와 통합되거나 유사한 방식으로 구현될 수 있는 부분(969)을 포함할 수 있다. 관리 버스(982) 대신에, 제2 호스트(962)의 하나 이상의 프로세서(961)는 NVMe-MI 프로토콜을 사용하여 PCIe 패브릭(972 및/또는 910)을 통해 장치 운영 체제(918)에 액세스할 수 있다.
터미널 애플리케이션(966)은 또한 NVMe-MI 프로토콜을 사용하여 PCIe 패브릭(972 및/또는 910)을 통해 장치 운영 체제(918)에 액세스할 수 있다. 더욱이, 원격 액세스 인터페이스(974)가 터미널 애플리케이션(966)에 액세스하도록 구성되는 경우, 사용자는 NVMe-MI 프로토콜을 사용하여 PCIe 패브릭을 통해 장치 운영 체제(918)에 원격으로 액세스할 수 있다. 따라서, 사용자는 위에서 설명된 바와 같이 운영 체제(918)에 의해 활성화된 기능의 일부 또는 전부에 액세스할 수 있다.
일부 실시예에서, 스위치는 패브릭(910 및 972)의 교차점(intersection)에 위치할 수 있다. 대안적으로, 패브릭(972)은 장치(904)의 별도의 인터커넥트 포트에 연결될 수 있다. 도 9에 예시된 실시예는 두 개의 다른 실시예에서, 호스트 중 하나만 포함될 수 있거나 추가 호스트가 포함될 수 있다.
도 10은 본 개시의 예시적인 실시예에 따른 장치의 내장된 운영 체제에 대한 원격 액세스를 사용자에게 제공할 수 있는 시스템의 실시예를 예시한다. 도 10에 예시된 시스템은 동일한 숫자로 끝나는 참조 번호가 유사한 기능을 수행할 수 있는 구성 요소를 나타낼 수 있는 도 3에 예시된 것과 유사한 구성 요소를 포함할 수 있다. 그러나, 도 10에 도시된 실시예에서, 호스트(1002)는 원격 액세스 인터페이스(1074)를 포함할 수 있다. 원격 액세스 인터페이스(1074)는 사용자가 인터페이스 및/또는 이더넷, TCP/IP, RDMA, ROCE, FibreChannel, InfiniBand 등과 같은 프로토콜을 사용하여 운격 액세스 연결(1076)을 통해 하나 이상의 프로세서(1006)에 액세스 하는 것을 가능하게 할 수 있다. 또한, 원격 액세스 인터페이스(1074)가 터미널 애플리케이션(1032)에 액세스하도록 구성되는 경우, 사용자는 NVMe-MI 프로토콜을 사용하여 PCIe 패브릭을 통해 장치(1004)의 운영 체제(1018)에 원격으로 액세스할 수 있다. 따라서, 사용자는 위에서 설명된 바와 같이 통신 로직(1020)에 의해 노출된 특징들 중 일부 또는 전부에 원격으로 액세스할 수 있다.
일부 실시예에서, 여기에 개시된 하나 이상의 장치는 저장 장치로 구현될 수 있다. 이러한 저장 장치는 직렬 ATA(SATA), SCSI(Small Computer System Interface), SAS(Serial Attached SCSI), U.2과 같은 임의의 커넥터 구성을 사용하여 3.5인치, 2.5인치, 1.8인치, M.2, EDSFF(Enterprise and Data Center SSD Form Factor), NF1 등과 같은 폼팩터로 구현될 수 있다.
본 명세서에 개시된 임의의 장치는 서버 셰시(server chassis), 서버 랙(server rack), 데이터룸, 데이터 센터, 엣지(edge) 데이터 센터, 모바일 엣지 데이터 센터, 및/또는 이들의 임의의 조합과 함께 전체적으로 또는 부분적으로 구현되거나 이와 관련하여 사용될 수 있다.
도 11은 본 개시의 예시적인 실시예에 따른 인터커넥트를 통해 장치 운영 체제에 대한 액세스를 사용자에게 제공하는 데 사용될 수 있는 호스트 장치의 예시적인 실시예를 예시한다. 도 11에 예시된 호스트 장치(1100)는 메모리 컨트롤러(1104), 시스템 메모리(1106), 액세스 로직(1108) 및/또는 예를 들어 CXL을 사용하여 구현될 수 있는 인터커넥트 인터페이스(1110)를 포함할 수 있는 프로세서(1102)를 포함할 수 있다. 도 11에 도시된 구성요소 중 일부 또는 전부는 하나 이상의 시스템 버스(1112)를 통해 통신할 수 있다. 일부 실시예에서, 도 11에 도시된 구성요소 중 하나 이상은 다른 구성요소를 사용하여 구현될 수 있다. 예를 들어, 일부 실시예에서, 액세스 로직(1108)은 시스템 메모리(1106) 또는 다른 메모리에 저장된 명령어를 실행하는 프로세서(1102)에 의해 구현될 수 있다. 일부 실시예에서, 액세스 로직(1108)은 터미널 애플리케이션, 장치 드라이버 등을 구현하여 사용자가 인터커넥트를 통해 장치 운영 체제에 액세스할 수 있도록 할 수 있다.
도 12는 본 개시의 예시적인 실시예에 따른 장치 프로그램에 대한 액세스를 사용자에게 제공하기 위해 사용될 수 있는 저장 장치의 예시적인 실시예를 예시한다. 저장 장치(1200)는 장치 컨트롤러(1202), 미디어 변환 계층(media translation layer)(1204), 저장 매체(1206), 액세스 로직(1208), 및 인터커넥트 인터페이스(1210)를 포함할 수 있다. 도 12에 예시된 구성요소는 하나 이상의 장치 버스(1212)를 통해 통신할 수 있다. 저장 매체(1206)의 일부 또는 전부에 대해 플래시 메모리를 사용할 수 있는 실시예에서, 미디어 변환 계층(1204)은 부분적으로 또는 전체적으로 플래시 변환 계층(FTL)으로서 구현될 수 있다. 일부 실시예에서, 도 12에 예시된 저장 장치(1200)는 본 명세서에 개시된 인터커넥트를 통해 장치 터미널에 대한 액세스를 사용자에게 제공하는 것과 관련된 임의의 장치측 기능을 구현하는 데 사용될 수 있다. 예를 들어, 일부 실시예에서, 액세스 로직(1208)은 사용자가 인터커넥트를 통해 저장 장치(1200)에서 실행되는 운영 체제에 액세스할 수 있도록 하는 통신 로직(예를 들어, 하나 이상의 터미널 지원 드라이버)을 구현할 수 있다. 일부 다른 실시예에서, 저장 장치(1200)는 대안적으로 또는 추가적으로 가속기, NIC 등과 같은 임의의 다른 유형의 장치로서 구현될 수 있다.
위에 설명된 호스트 기능, 기능적으로 장치 등을 포함하여 여기에 설명된 임의의 기능은 하드웨어, 소프트웨어, 또는 조합 논리, 순차 논리, 하나 이상의 타이머, 카운터, 레지스터, 상태 머신, DRAM 및/또는 SRAM과 같은 휘발성 메모리, 비휘발성 메모리 및/또는 이들의 조합, CPLD, FPGA, ASIC, x86 프로세서와 같은 CISC 프로세서 및/또는 ARM 프로세서와 같은 RISC 프로세서를 포함하는 CPU, GPU, NPU 등, 모든 유형의 메모리에 저장된 명령을 실행하는 것 및/또는 이들의 임의의 조합으로 구현될 수 있다. 일부 실시예에서, 하나 이상의 컴포넌트는 시스템 온 칩(SOC)으로서 구현될 수 있다.
도 13은 본 개시의 예시적인 실시예에 따른 장치 터미널에 대한 액세스를 사용자에게 제공하기 위한 방법의 실시예를 예시한다. 방법은, 동작 1302에서, 시작할 수 있다. 동작 1304에서, 방법은 장치에서 운영 체제를 실행할 수 있다. 예를 들어, 저장 장치, 가속기, NIC 등과 같은 장치는 임베디드 운영 체제를 실행할 수 있다. 동작 1306에서, 방법은 인터커넥트의 제1 기능을 사용하여 장치와 통신할 수 있다. 예를 들어, 장치 컨트롤러는 PCIe 인터커넥트의 기능 0으로 구성될 수 있다. 동작(1308)에서, 방법은 인터커넥트의 제2 기능을 사용하여 운영 체제와 통신할 수 있다. 예를 들어, 터미널은 PCIe 인터커넥트의 기능 1로 구성될 수 있다. 방법은 동작 1310에서 종료될 수 있다.
도 13에 도시된 실시예 및 여기에 설명된 다른 모든 실시예는 예시적인 동작 및/또는 구성요소이다. 일부 실시예에서, 일부 동작 및/또는 구성요소는 생략될 수 있고/있거나 다른 동작 및/또는 구성요소가 포함될 수 있다. 또한, 일부 실시예에서, 동작 및/또는 구성요소의 시간적 및/또는 공간적 순서는 변경될 수 있다. 일부 구성요소 및/또는 동작은 개별 구성요소로 예시될 수 있지만, 일부 실시예에서, 개별적으로 표시된 일부 구성요소 및/또는 동작은 단일 구성요소 및/또는 동작으로 통합될 수 있고/있거나 단일 구성요소 및/또는 동작으로 표시된 일부 구성요소 및/또는 동작은 다중 구성요소 및/또는 동작으로 구현될 수 있다.
위에 개시된 일부 실시예는 다양한 구현 세부사항의 맥락에서 설명되었지만, 본 개시의 원리는 이들 또는 임의의 다른 특정 세부사항으로 제한되지 않는다. 예를 들어, 일부 기능은 특정 구성요소에 의해 구현되는 것으로 설명되었지만, 다른 실시예에서 기능은 상이한 위치에 있고 다양한 사용자 인터페이스를 갖는 상이한 시스템 및 구성요소 사이에 분산될 수 있다. 특정 실시예는 특정 프로세스, 동작 등을 갖는 것으로 설명되었지만, 이러한 용어는 또한 특정 프로세스, 작업 등이 다중 프로세스, 작업 등으로 구현될 수 있거나 다중 프로세스, 작업 등이 단일 프로세스, 단계 등으로 통합될 수 있는 실시예를 포함한다. 구성 요소 또는 요소에 대한 참조는 구성 요소 또는 요소의 일부만을 나타낼 수 있다. 예를 들어, 블럭에 대한 참조는 전체 블럭 또는 하나 이상의 서브블럭을 참조할 수 있다. 본 개시 및 청구범위에서 "제1" 및 "제2"와 같은 용어의 사용은 그들이 수정하는 것을 구별하기 위한 목적으로만 사용될 수 있으며 문맥상 달리 명백하지 않는 한 공간적 또는 시간적 순서를 나타내지 않을 수 있다. 일부 실시예들에서, 사물에 대한 언급은 사물의 적어도 일부를 지칭할 수 있고, 예를 들어, "~에 기초하여"는 "~에 적어도 부분적으로 기초하여" 등을 지칭할 수 있다. 제1 요소에 대한 참조는 제2 요소의 존재를 의미하지 않을 수도 있다. 여기에 개시된 원리는 독립적인 유용성을 가지며 개별적으로 구현될 수 있으며, 모든 실시예가 모든 원리를 활용할 수 있는 것은 아니다. 그러나, 원리들은 또한 다양한 조합으로 구현될 수 있으며, 그 중 일부는 개별 원리들의 이점을 시너지 방식으로 증폭할 수 있다.
위에서 설명된 다양한 세부사항 및 실시예는 본 발명의 원리에 따른 추가 실시예를 생성하기 위해 결합될 수 있다. 본 발명의 발명 원리는 본 발명의 개념을 벗어나지 않으면서 배열 및 세부 사항에서 수정될 수 있으므로, 이러한 변경 및 수정은 다음 특허청구범위에 속하는 것으로 간주될 수 있다.

Claims (10)

  1. 장치와 통신하는 방법에 있어서,
    상기 장치에서 운영 체제(operating system)를 실행(run)하는 단계;
    인터커넥트(interconnect)의 제1 기능을 사용하여 상기 장치와 통신하는 단계; 및
    상기 인터커넥트의 제2 기능을 사용하여 상기 운영 체제와 통신하는 단계를 포함하는 방법.
  2. 제1항에 있어서,
    상기 운영 체제는,
    통신 로직을 포함하고,
    상기 운영체제와 통신하는 단계는,
    상기 통신 로직과 통신하는 단계를 포함하는 방법.
  3. 제2항에 있어서,
    상기 통신 로직은,
    하나 이상의 터미널 지원 드라이버(terminal support driver)를 포함하고,
    상기 통신 로직과 통신하는 단계는,
    터미널 애플리케이션(terminal application)을 사용하여 상기 하나 이상의 터미널 지원 드라이버와 통신하는 단계를 포함하는 방법.
  4. 제3항에 있어서,
    상기 터미널 애플리케이션은,
    호스트에서 실행되는 방법.
  5. 제1항에 있어서,
    상기 인터커넥트의 상기 제2 기능은,
    컨트롤러와 함께 동작하도록 구성된 방법.
  6. 제1항에 있어서,
    상기 운영 체제와 통신하는 단계는,
    특권 정보(privilege information)에 기초하여, 상기 운영 체제와 통신하는 단계를 포함하는 방법.
  7. 제1항에 있어서,
    상기 인터커넥트의 상기 제2 기능을 사용하여, 상기 운영 체제의 프로그램을 제어하는 단계를 더 포함하는 방법.
  8. 제7항에 있어서,
    상기 프로그램은,
    디버깅(debugging) 프로그램, 트레이싱(tracing) 프로그램, 프로파일링(profiling) 프로그램 중 적어도 하나를 포함하는 방법.
  9. 제1항에 있어서,
    상기 운영 체제와 통신하는 단계는,
    상기 장치에 의해, 상기 인터커넥트의 상기 제2 기능과 연관된 출력 데이터를 버퍼에 저장하는 단계를 포함하는 방법.
  10. 제9항에 있어서,
    상기 운영 체제와 통신하는 단계는,
    상기 인터커넥트의 상기 제2 기능과 연관된 상기 출력 데이터를 상기 버퍼로부터 독출하는 단계를 포함하는 방법.

KR1020220086561A 2021-10-14 2022-07-13 인터커넥트를 통해 장치 운영 체제에 액세스하기 위한 시스템, 방법 및 장치 KR20230053496A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202163255946P 2021-10-14 2021-10-14
US63/255,946 2021-10-14
US17/522,899 US11822490B2 (en) 2021-10-14 2021-11-09 Systems, methods, and devices for accessing a device operating system over an interconnect
US17/522,899 2021-11-09

Publications (1)

Publication Number Publication Date
KR20230053496A true KR20230053496A (ko) 2023-04-21

Family

ID=83691299

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220086561A KR20230053496A (ko) 2021-10-14 2022-07-13 인터커넥트를 통해 장치 운영 체제에 액세스하기 위한 시스템, 방법 및 장치

Country Status (4)

Country Link
US (2) US11822490B2 (ko)
EP (1) EP4167095A1 (ko)
KR (1) KR20230053496A (ko)
CN (1) CN115981730A (ko)

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6330653B1 (en) 1998-05-01 2001-12-11 Powerquest Corporation Manipulation of virtual and live computer storage device partitions
WO2005036367A2 (en) 2003-10-08 2005-04-21 Unisys Corporation Virtual data center that allocates and manages system resources across multiple nodes
DE602004026938D1 (de) 2004-02-27 2010-06-10 Research In Motion Ltd Methode und Vorrichtung für eine erleichterte Bestimmung von GPS Standortinformationen für eine Mobilstation ohne Unterbrechung der Gesprächsverbindung
US8316156B2 (en) * 2006-02-17 2012-11-20 Intel-Ne, Inc. Method and apparatus for interfacing device drivers to single multi-function adapter
US8464260B2 (en) * 2007-10-31 2013-06-11 Hewlett-Packard Development Company, L.P. Configuration and association of a supervisory virtual device function to a privileged entity
US8694891B2 (en) 2011-07-11 2014-04-08 International Business Machines Corporation Log collector in a distributed computing system
US9146812B2 (en) * 2012-02-03 2015-09-29 Dell Products Lp Systems and methods for out-of-band backup and restore of hardware profile information
US9111046B2 (en) * 2013-06-12 2015-08-18 International Business Machines Corporation Implementing capacity and user-based resource allocation for a shared adapter in a virtualized system
US10412230B2 (en) * 2014-07-14 2019-09-10 Google Llc System and method for retail SIM marketplace
US20160072693A1 (en) 2014-09-09 2016-03-10 Avaya Inc. Client-server communication evaluation and diagnostic tool
US9807154B2 (en) 2014-09-26 2017-10-31 Lenovo Enterprise Solutions (Singapore) Pte, Ltd. Scalable logging control for distributed network devices
US9942900B1 (en) * 2014-11-24 2018-04-10 Google Llc System and method for improved band-channel scanning and network switching
US10996968B2 (en) * 2014-11-24 2021-05-04 Intel Corporation Support for application transparent, high available GPU computing with VM checkpointing
US9459905B2 (en) * 2014-12-16 2016-10-04 International Business Machines Corporation Implementing dynamic SRIOV virtual function resizing
US9923954B2 (en) 2014-12-16 2018-03-20 International Business Machines Corporation Virtual fencing gradient to incrementally validate deployed applications directly in production cloud computing environment
KR102456104B1 (ko) * 2015-08-24 2022-10-19 삼성전자주식회사 데이터 신뢰성에 따라 동작 조건을 변경하는 저장 장치의 동작 방법
US9811276B1 (en) * 2015-09-24 2017-11-07 EMC IP Holding Company LLC Archiving memory in memory centric architecture
WO2017075558A1 (en) 2015-10-30 2017-05-04 Vapor IO Inc. Hot-pluggable connection for data communications
US10860511B1 (en) 2015-12-28 2020-12-08 Western Digital Technologies, Inc. Integrated network-attachable controller that interconnects a solid-state drive with a remote server computer
US10394472B1 (en) * 2016-03-31 2019-08-27 EMC IP Holding Company LLC Classification and identification from raw data within a memory domain
WO2018182661A1 (en) * 2017-03-31 2018-10-04 Intel Corporation Declarative intentional programming in machine-to-machine systems
US20180335971A1 (en) * 2017-05-16 2018-11-22 Cisco Technology, Inc. Configurable virtualized non-volatile memory express storage
US10901812B2 (en) 2017-09-18 2021-01-26 Rapyuta Robotics Co., Ltd. Managing communication between cloud and heterogeneous devices across networks
KR102331926B1 (ko) * 2017-11-17 2021-11-29 삼성전자주식회사 저장 장치를 포함하는 호스트 시스템의 동작 방법 및 저장 장치 제어기의 동작 방법
US10565014B2 (en) * 2017-12-05 2020-02-18 Western Digital Technologies, Inc. Data processing offload using in-storage code execution
US10834070B1 (en) 2018-01-30 2020-11-10 Dell Products L.P. Remote logging agent for accessing application server log data
US10872007B2 (en) 2018-05-04 2020-12-22 Vmware, Inc. Methods and systems to compound alerts in a distributed computing system
US10810074B2 (en) 2018-12-19 2020-10-20 Microsoft Technology Licensing, Llc Unified error monitoring, alerting, and debugging of distributed systems
US11388054B2 (en) 2019-04-30 2022-07-12 Intel Corporation Modular I/O configurations for edge computing using disaggregated chiplets
US11544133B2 (en) 2019-05-10 2023-01-03 Oracle International Corporation System and method for dynamic log management of stream processing in a distributed environment
US10757251B1 (en) 2019-08-30 2020-08-25 Avaya Inc. Real time sign language conversion for communication in a contact center
US11683393B2 (en) * 2019-09-11 2023-06-20 Intel Corporation Framework for computing in radio access network (RAN)
US11321257B2 (en) * 2019-12-31 2022-05-03 Micron Technology, Inc. Quality of service control of logical devices for a memory sub-system
US11755374B2 (en) * 2020-05-26 2023-09-12 Dell Products L.P. Cloud resource audit system
CN112214277B (zh) 2020-09-04 2024-03-19 深圳航天科技创新研究院 基于虚拟机的操作系统分区方法、装置及介质

Also Published As

Publication number Publication date
US11822490B2 (en) 2023-11-21
CN115981730A (zh) 2023-04-18
US20230123082A1 (en) 2023-04-20
US20240086339A1 (en) 2024-03-14
EP4167095A1 (en) 2023-04-19

Similar Documents

Publication Publication Date Title
CN106030548B (zh) 用于可信计算的多节点中枢
US4792896A (en) Storage controller emulator providing transparent resource sharing in a computer system
US11922072B2 (en) System supporting virtualization of SR-IOV capable devices
KR20230090259A (ko) 연산 장치 커널에 액세스하기 위한 시스템, 방법 및 장치
EP2370897A2 (en) Composite device emulation
CN113312141B (zh) 用于卸载串行端口模拟的计算机系统、存储介质和方法
US20130151885A1 (en) Computer management apparatus, computer management system and computer system
KR20230016110A (ko) 메모리 모듈, 이를 포함하는 시스템, 및 메모리 모듈의 동작 방법
US20230221971A1 (en) Multiple port emulation
US20240086339A1 (en) Systems, methods, and devices for accessing a device operating system over an interconnect
Chen et al. BM-Store: A Transparent and High-performance Local Storage Architecture for Bare-metal Clouds Enabling Large-scale Deployment
CN113392052B (zh) 一种基于四路服务器的bios系统、方法及计算机可读存储介质
CN115774596A (zh) 数据处理方法、装置及电子设备
US11593121B1 (en) Remotely disabling execution of firmware components
CN112015649A (zh) 一种利用片上协计算核心对主计算核心进行调试的方法
US20230114636A1 (en) Systems, methods, and devices for accessing a device program on a storage device
US20070174034A1 (en) Transparent intellectual network storage device
CN117667465B (zh) 代码共享方法、装置、交换机、多主机系统、设备和介质
CN112052132B (zh) 通过sdio接口调试外挂芯片的方法、装置、设备和介质
US20220137998A1 (en) Storage virtualization device supporting virtual machine, operation method thereof, and operation method of system having the same
US11422963B2 (en) System and method to handle uncompressible data with a compression accelerator
WO2022068753A1 (zh) 服务器系统、容器设置方法及装置
Camredon USBiquitous: USB intrusion toolkit
Dakić et al. DISTRIBUTED STORAGE PERFORMANCE MEASUREMENT IN A VIRTUALIZED ENVIRONMENT
CN117555650A (zh) 虚拟机间通信的方法、装置、电子设备及存储介质