KR20210081079A - 멀티-마스터를 지원하는 그래픽 처리 장치를 공유하는 시스템 온 칩 및 그래픽 처리 장치의 동작 방법 - Google Patents

멀티-마스터를 지원하는 그래픽 처리 장치를 공유하는 시스템 온 칩 및 그래픽 처리 장치의 동작 방법 Download PDF

Info

Publication number
KR20210081079A
KR20210081079A KR1020190173272A KR20190173272A KR20210081079A KR 20210081079 A KR20210081079 A KR 20210081079A KR 1020190173272 A KR1020190173272 A KR 1020190173272A KR 20190173272 A KR20190173272 A KR 20190173272A KR 20210081079 A KR20210081079 A KR 20210081079A
Authority
KR
South Korea
Prior art keywords
processing unit
operating system
central processing
gpu
standalone
Prior art date
Application number
KR1020190173272A
Other languages
English (en)
Other versions
KR102275529B1 (ko
KR102275529B9 (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 주식회사 텔레칩스
Priority to KR1020190173272A priority Critical patent/KR102275529B1/ko
Priority to DE112020006298.8T priority patent/DE112020006298T5/de
Priority to PCT/KR2020/016794 priority patent/WO2021132905A1/ko
Priority to US17/778,961 priority patent/US20230024607A1/en
Priority to JP2022537810A priority patent/JP7444993B2/ja
Publication of KR20210081079A publication Critical patent/KR20210081079A/ko
Application granted granted Critical
Publication of KR102275529B1 publication Critical patent/KR102275529B1/ko
Publication of KR102275529B9 publication Critical patent/KR102275529B9/ko

Links

Images

Classifications

    • 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
    • G06F9/4408Boot device selection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • G06F15/7864Architectures of general purpose stored program computers comprising a single central processing unit with memory on more than one IC chip
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • G06F11/0724Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU] in a multiprocessor or a multi-core unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3055Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
    • 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
    • G06F15/163Interprocessor communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45566Nested virtual machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Hardware Redundancy (AREA)
  • Microcomputers (AREA)

Abstract

멀티-마스터를 지원하는 그래픽 처리 장치를 공유하는 시스템 온 칩이 제공된다. 시스템 온-칩(System on chip, SoC)은 적어도 하나의 운영 체제(Operating System)를 실행하는 복수의 중앙 처리 장치(Central Processing Unit, CPU), 버스 인터페이스를 통해 상기 복수의 중앙 처리 장치와 각각 연결되어 상호 통신하는 그래픽 처리 장치(Graphics Processing Unit, GPU), 그리고 상기 복수의 중앙 처리 장치 중 적어도 하나의 중앙 처리 장치와 선택적으로 연결되고, 연결된 중앙 처리 장치에서 실행된 적어도 하나의 운영 체제의 실행 상태 정보를 상기 그래픽 처리 장치로 전달하는 적어도 하나의 상태 모니터링 장치를 포함하고, 상기 그래픽 처리 장치는, 상기 적어도 하나의 운영 체제에 의하여 공유되고, 상기 적어도 하나의 운영 체제의 실행 상태 정보에 기초하여 상기 적어도 하나의 운영 체제에 의한 공유 동작을 제어한다.

Description

멀티-마스터를 지원하는 그래픽 처리 장치를 공유하는 시스템 온 칩 및 그래픽 처리 장치의 동작 방법{SYSTEM ON-CHIP WITH SHARED GRAPHICS PROCESSING UNIT SUPPORTING MULTI-MASTERS AND OPERATING METHOD OF THE GRAPHICS PROCESSING UNIT}
본 발명은 그래픽 처리 장치(Graphics Processing Unit, 이하, 'GPU'로 통칭함)를 공유하는 시스템 온-칩(System on chip, 이하, 'SoC'로 통칭함) 및 그 동작 방법에 관한 것으로서, 멀티-마스터(Multi-master)를 지원하는 GPU가 탑재된 SoC에 관한 것이다.
최근, SoC 설계에 따르면, 다양한 중앙 처리 장치(Central Processing Unit, 이하, 'CPU'로 통칭함)들과 그 CPU들에서 실행되는 운영 체제(Operating System, 이하, 'OS'로 통칭함)들을 제공하고 있다.
일반적으로, 서로 다른 OS들은 단일 GPU 또는 복수의 GPU에게 높은 병렬 컴퓨팅 작업 또는 이미지 렌더링을 처리하도록 요구한다. SoC의 사용 사례에 따라, 각 OS에서 요구하는 GPU 컴퓨팅 성능은 변경될 수 있다.
복수개의 CPU와 복수개의 GPU가 SoC에 탑재되는 경우, 하나의 CPU는 그 전용 GPU에게만 작업(Job)을 보낼 수 있고 다른 CPU 역시 그 전용 GPU에게만 작업을 보낼 수 있다. 따라서, GPU들은 1개의 OS에서 요청하는 작업(Job)밖에 수행할 수가 없다.예를들어, SoC에 3개의 OS가 있고 2개의 GPU가 있는 경우, 3개의 OS 중 2개의 OS는 하나의 CPU에 탑재되고 하나의 OS는 다른 CPU에 탑재된다. 이때, 하나의 CPU에 탑재된 2개의 OS가 동시에 한 GPU를 사용할 수가 없다. 따라서, 서로 다른 CPU에 탑재된 2개의 OS만 각각의 전용 GPU를 사용할 수가 있다. 따라서, SoC에 다수개의 OS를 탑재하더라도 GPU를 사용할 수 없는 OS가 발생할 수 있으므로, 이는 SoC의 제약 사항이 된다.
이를 해결하기 위해 종래에는 하이퍼바이저(Hypervisor)를 사용하여 GPU의 멀티-마스터(Multi-master) 지원을 제공하는 기술이 사용되고 있다. GPU는 하이퍼바이저를 사용하여 멀티-마스터의 리부팅(Rebooting)을 지원하였다.
그러나, 하이퍼바이저는 멀티-마스터 지원 외에도 다양한 GPU 컴퓨팅 성능 요구 사항과, 시스템 동작을 보증하기 위해 광범위하게 사용된다. 하지만, 하이퍼바이저의 사용은 개발 복잡성과 비용 관점에서 시스템에 부담이 될 수 있다.
본 발명이 해결하고자 하는 한 과제는 CPU의 OS(Operating System) 실행 상태 정보를 GPU로 전달하는 시스템 모니터링 모듈을 이용하여 복수의 OS가 GPU를 공유할 수 있는 시스템-온-칩(system-on-chip, SoC) 및 GPU 동작 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 다른 과제는 멀티-마스터를 지원하는 GPU가 탑재되고, 시스템-온-칩(SoC)에 탑재된 시스템 모니터링 모듈을 OS 또는 CPU와 선택적으로 연결시킴으로써, 모든 OS가 시스템 모니터링 모듈을 통해 GPU를 공유하도록 하거나, 모든 OS가 하이퍼바이저를 통해 GPU를 공유하도록 하거나, 일부 OS는 시스템 모니터링 모듈을 통해 GPU를 공유하고 일부 OS는 하이퍼바이저를 통해 GPU를 공유하도록 하여, 하이퍼바이저 유무에 관계없이 다양한 사용 사례를 커버할 수 있는 시스템-온-칩(SoC) 및 GPU 동작 방법을 제공하는 것이다.
본 발명의 한 실시예에 따르면, 시스템 온-칩(System on chip, SoC)으로서, 적어도 하나의 운영 체제(Operating System)를 실행하는 복수의 중앙 처리 장치(Central Processing Unit, CPU), 버스 인터페이스를 통해 상기 복수의 중앙 처리 장치와 각각 연결되어 상호 통신하는 그래픽 처리 장치(Graphics Processing Unit, GPU), 그리고 상기 복수의 중앙 처리 장치 중 적어도 하나의 중앙 처리 장치와 선택적으로 연결되고, 연결된 중앙 처리 장치에서 실행된 적어도 하나의 운영 체제의 실행 상태 정보를 상기 그래픽 처리 장치로 전달하는 적어도 하나의 상태 모니터링 장치를 포함하고, 상기 그래픽 처리 장치는, 상기 적어도 하나의 운영 체제에 의하여 공유되고, 상기 적어도 하나의 운영 체제의 실행 상태 정보에 기초하여 상기 적어도 하나의 운영 체제에 의한 공유 동작을 제어한다.
상기 그래픽 처리 장치는, 상기 적어도 하나의 운영 체제의 실행 상태 정보에 기초하여, 비정상 상태인 운영 체제를 판별하고, 판별한 운영 체제의 작업을 정상 종료 처리할 수 있다.
상기 그래픽 처리 장치는, 상기 비정상 상태인 운영 체제가 호스트 운영 체제로 판단되면, 상기 비정상 상태인 운영 체제가 재부팅을 완료할때까지 구성을 중지할 수 있다.
상기 복수의 중앙 처리 장치는, 제1 스탠드얼론(Stand alone) 운영 체제를 실행하는 제1 중앙 처리 장치, 그리고 제2 스탠드얼론 운영 체제를 실행하는 제2 중앙 처리 장치를 포함하고, 상기 적어도 하나의 상태 모니터링 장치는, 상기 제1 중앙 처리 장치에 연결되어, 상기 제1 스탠드얼론 운영 체제의 실행 상태 정보를 상기 그래픽 처리 장치로 전달하는 제1 상태 모니터링 장치, 그리고 상기 제2 중앙 처리 장치에 연결되어, 상기 제2 스탠드얼론 운영 체제의 실행 상태 정보를 상기 그래픽 처리 장치로 전달하는 제2 상태 모니터링 장치를 포함할 수 있다.
상기 복수의 중앙 처리 장치는, 스탠드얼론 운영 체제를 실행하는 제1 중앙 처리 장치, 그리고 하이퍼바이저 프로그램, 그리고 상기 하이퍼바이저 프로그램 기반으로 적어도 하나의 게스트 운영 제제를 실행하는 제2 중앙 처리 장치를 포함하고, 상기 적어도 하나의 상태 모니터링 장치는, 상기 제1 중앙 처리 장치에 연결되어, 상기 스탠드얼론 운영 체제의 실행 상태 정보를 상기 그래픽 처리 장치로 전달하는 제1 상태 모니터링 장치를 포함하며, 상기 하이퍼바이저 프로그램은, 상기 적어도 하나의 게스트 운영 체제의 실행 상태 정보를 상기 그래픽 처리 장치로 전달할 수 있다.
상기 복수의 중앙 처리 장치는, 제1 스탠드얼론 운영 체제를 실행하는 제1 중앙 처리 장치, 그리고 제2 스탠드얼론 운영 체제, 하이퍼바이저 프로그램, 그리고 상기 하이퍼바이저 프로그램 기반으로 적어도 하나의 게스트 운영 체제를 실행하는 제2 중앙 처리 장치를 포함하고, 상기 적어도 하나의 상태 모니터링 장치는, 상기 제1 중앙 처리 장치에 연결되어, 상기 제1 스탠드얼론 운영 체제의 실행 상태 정보를 상기 그래픽 처리 장치로 전달하는 제1 상태 모니터링 장치, 그리고 상기 제2 중앙 처리 장치에 연결되어, 상기 제2 스탠드얼론 운영 체제의 실행 상태 정보를 상기 그래픽 처리 장치로 전달하는 제2 상태 모니터링 장치를 포함하고, 상기 하이퍼바이저 프로그램은, 상기 적어도 하나의 게스트 운영 체제의 실행 상태 정보를 상기 그래픽 처리 장치로 전달할 수 있다.
본 발명의 다른 실시예에 따르면, 시스템 온-칩(System on chip, SoC)에 탑재된 그래픽 처리 장치(Graphics Processing Unit, GPU)의 동작 방법으로서, 적어도 두개의 중앙 처리 장치(Central Processing Unit, CPU)로부터 각 중앙 처리 장치에서 실행된 운영 체제(Operating System)들의 실행 상태 정보를 수집하는 단계, 상기 실행 상태 정보에 기초하여 비정상 상태로 동작하는 운영 체제가 있는지 판단하는 단계, 그리고 비정상 상태로 동작하는 운영 체제의 기 작업을 정상적으로 종료 처리하고, 상기 비정상 상태로 동작하는 운영 체제의 재부팅이 완료될때까지 대기하는 단계를 포함하고, 상기 그래픽 처리 장치는, 상기 운영 체제들이 요구한 작업들을 처리하는 공유 동작을 수행하고, 상기 실행 상태 정보는, 적어도 하나의 중앙 처리 장치에 연결된 상태 모니터링 장치와 연결된 버스 인터페이스를 통하여 수집될 수 있다.
상기 운영 체제들 중 하나는 호스트 운영 체제로 동작하고, 상기 판단하는 단계 이후, 상기 비정상 상태로 동작하는 운영 체제가 호스트 운영 체제인 경우, 상기 호스트 운영 체제의 재부팅이 완료될때까지 그래픽 처리 장치의 구성을 중지할 수 있다.
상기 실행 상태 정보는, 임의의 중앙 처리 장치에서 실행된 하이퍼바이저로부터 수집되며, 상기 하이퍼바이저가 실행한 적어도 하나의 게스트 운영 체제의 실행 상태를 포함할 수 있다.
상기 실행 상태 정보는, 적어도 하나의 중앙 처리 장치에 연결된 상태 모니터링 장치와 연결된 버스 인터페이스를 통하여 수집된 적어도 하나의 스탠드얼론 운영 체제의 실행 상태 정보와, 임의의 중앙 처리 장치에서 실행된 하이퍼바이저로부터 수집된 적어도 하나의 게스트 운영 체제의 실행 상태를 포함할 수 있다.
본 발명의 실시예에 따르면, 하나의 시스템-온-칩(SoC)으로 하이퍼바이저 유무에 관계없이 다양한 사용 사례를 커버할 수 있다. 또한, GPU를 공유함으로써 이론적으로 컴퓨팅 성능을 최대 100%까지 높일 수 있다.
또한, 시스템-온-칩(SoC)에 탑재된 OS 중 하나가 재부팅하거나 비정상적인 상황이 발생해도, GPU가 이를 확인하여 다른 OS에 영향을 주지 않으므로, 시스템-온-칩(SoC)의 시스템 안전성을 보장할 수 있고, 코어 별 재부팅을 지원할 수 있다.
또한, 시스템-온-칩(SoC)에 탑재된 시스템 모니터링 장치가 연결된 CPU 또는 OS의 실행 상태 정보를 GPU로 전달하므로, GPU는 모든 CPU 또는 OS의 실행 상태 정보를 알 수가 있다. 따라서, 하이퍼바이저가 없이도 복수의 CPU 또는 OS가 GPU를 공유할 수 있으므로, 하이퍼바이저 사용 비용을 줄이고 시스템 비용을 절감 할 수 있다.
도 1은 본 발명의 한 실시예에 따른 시스템-온-칩(SoC)의 구성을 나타낸 블록도이다.
도 2는 도 1의 시스템-온-칩(SoC)의 동작을 설명한다.
도 3은 본 발명의 다른 실시예에 따른 시스템-온-칩(SoC)의 구성을 나타낸 블록도이다.
도 4는 도 3의 시스템-온-칩(SoC)의 동작을 설명한다.
도 5는 본 발명의 또 다른 실시예에 따른 시스템-온-칩(SoC)의 구성을 나타낸 블록도이다.
도 6은 도 5의 시스템-온-칩(SoC)의 동작을 설명한다.
도 7은 본 발명의 실시예에 따른 GPU의 동작을 나타낸 순서도이다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함" 한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
또한, 명세서에 기재된 "…부", "…기", "…모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
본 명세서에서 "전송 또는 제공" 은 직접적인 전송 또는 제공하는 것 뿐만 아니라 다른 장치를 통해 또는 우회 경로를 이용하여 간접적으로 전송 또는 제공도 포함할 수 있다.
본 명세서에서 단수로 기재된 표현은 "하나" 또는 "단일" 등의 명시적인 표현을 사용하지 않은 이상, 단수 또는 복수로 해석될 수 있다.
본 명세서에서 도면에 관계없이 동일한 도면번호는 동일한 구성요소를 지칭하며, "및/또는" 은 언급된 구성 요소들의 각각 및 하나 이상의 모든 조합을 포함한다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 구성요소들은 용어들에 의해 한정되어서는 안 된다. 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다.
본 명세서에서, 중앙 처리 장치(Central Processing Unit, 이하, 'CPU'로 통칭함)는 외부에서 정보를 입력받고, 기억하고, 컴퓨터 프로그램의 명령어들(Program Instructions)을 해석하여 연산하고, 외부로 출력하는 역할을 한다. CPU는 컴퓨터 부품과 정보를 교환하면서 컴퓨터 전체의 동작을 제어한다. CPU는 소프트웨어, 즉, 응용 프로그램(Application Program), 운영 체제(Operating System, 이하, 'OS'라 통칭함), 장치 드라이버들을 실행한다. CPU는 워킹 메모리에 로드되는 OS를 실행한다. CPU는 OS 기반에서 구동될 다양한 응용 프로그램들을 실행한다.
CPU는 적어도 2개의 독립적으로 구동 가능한 프로세서들을 포함하는 멀티-코어 프로세서(Multi-Core Processor)로 제공될 수 있다. 프로세서들 각각은 프로그램 명령들을 독립적으로 읽고 실행할 수 있다. 프로세서들은 서로 다른 전원 전압에 의해서 구동되거나, 서로 다른 동작 클록에 의해서 구동될 수도 있다. 예를들면, 프로세서들은 동종의 프로세서들일 수도 있고, 이종의 프로세서들로 구성될 수 있다.
CPU는 적어도 하나의 클러스터를 포함할 수 있으며, 각 클러스터는 복수개의 CPU 코어들로 구성될 수 있다. CPU 코어들은 소프트웨어를 구성하는 복수의 명령어(instruction)들 및 데이터를 처리할 수 있다. 일예로 CPU 코어들은 복수의 명령어들 또는 데이터를 패치(fetch)하고, 패치된 명령어들 또는 데이터를 처리하며, 이를 내부 레지스터에 저장할 수 있다. 이때, 소프트웨어는 SoC에 내장된 소프트웨어 또는 사용자의 사용자 환경에서 개발되는 소프트웨어를 포함할 수 있다.
그래픽 처리 장치(Graphics Processing Unit, 이하, 'GPU'로 통칭함)는 CPU의 요청에 따라 다양한 그래픽 연산을 수행한다. 즉, GPU는 처리 요청된 데이터를 디스플레이에 적합한 데이터로 변환할 수 있다. GPU는 유사한 연산을 반복해서 처리하는 병렬 처리에 유리한 연산 구조를 가진다. GPU는 OS들의 지시에 따라 화면을 생성하고, 생성된 화면을 디스플레이 장치로 출력할 수 있다.
GPU는 컴퓨터 그래픽스를 위한 계산을 수행할 뿐만 아니라, 응용 프로그램들의 계산에 사용할 수 있다. 프로그램 가능한 층과 고정도 연산을 그래픽 파이프라인에 연결하여 데이터에 스트림 프로세싱을 수행할 수 있다. GPU는 병렬로 한번에 하나의 커널을 흐름 속의 많은 레코드에 실행시킨다.
GPU는 복수의 코어들을 포함할 수 있다. 복수의 코어들은 동종의 코어들일 수도 있고, 이종의 코어들일 수 있다. GPU의 경우는 화면에 이미지를 뿌려주는 역할이 가장 우선적이다. 그러나 하드웨어가 발전하여 예전과 비교하여 상대적으로 저렴하게 집적할 수 있는 코어 수가 늘어남에 따라 이미지를 뿌려주는 렌더링을 수행하는 코어 이외에 남는 코어들로 부동소수점 연산이나 과학계산 등 범용으로도 사용할 수 있다.
각 CPU는 시스템 메모리를 포함하는 칩셋일 수 있고, GPU는 비디오 게임 등과 같은 그래픽 데이터의 처리를 위한 특수 목적 프로세서일 수 있다.
일반적으로 GPU는 주로 CPU를 통해 처리하여야할 작업들의 코드와 데이터를 메모리 인터페이스를 통해 위임받고, 이를 GPU 로컬 메모리에 복사한 후, GPU는 이를 처리하여 CPU의 메인 메모리에 결과를 다시 복사하는 구조이다. 이를 위해 CPU 및 GPU를 포함하는 집적 시스템(System on chip, 이하, 'SoC'로 통칭함)에서 CPU는 버스 인터페이스를 통해 GPU를 제어한다.
또한, 하이퍼바이저(hypervisor)는 OS들이 하드웨어를 이용할 수 있는 가상 환경을 제공한다. 예를들어, 하이퍼바이저는 OS들이 GPU를 이용하여 화면을 생성하는 가상 환경을 제공한다. 다시 말해서, OS들은 하이퍼바이저를 통해 GPU를 공유 및 사용할 수 있다.
또한, 본 명세서에서, 스탠드얼론(Standalone) OS는 라이브러리, 외부 모듈 또는 다른 OS를 사용하여 부팅하지 않는 독립형 OS를 의미한다. 따라서, 하이퍼바이저 없이 단독으로 부팅하는 OS를 스탠드얼론 OS라 한다. 그리고 게스트 OS는 호스트 OS 위에 탑재된 가상화 소프트웨어를 이용하여 구동되는 가상화 OS를 의미한다.
본 명세서에서, 시스템 전체를 제어하는 역할, 즉, GPU 구성 및 초기화는 호스트 OS가 수행하며, 스탠드얼론 OS 또는 하이퍼바이저가 호스트 OS가 될 수 있다.
한 실시예에 따르면, GPU 구성 및 초기화는 하나의 호스트 OS에 의해서만 제어될 수 있다.
다른 실시예에 따르면, GPU 구성 및 초기화는 모든 OS에 의해서 제어될 수 있다. 이 경우, 전원이 켜지면, OS들 중 하나가 메인 OS가 된다. 예를들어, 스탠드얼론 OS가 메인 OS가 된다. 이때, 메인 OS는 전체 시스템 재시작 사례에서만 GPU 구성 및 초기화 역할을 수행한다. 그런데, 여러 호스트 OS가 GPU 구성 및 초기화를 할 경우, GPU 제어 문제의 복잡성이 가중될 수 있다.
따라서, GPU 구성 및 초기화의 주체를 하나의 호스트 OS로 제한함으로써, 시스템-온-칩(system-on-chip)(100)의 효율적인 운영을 도모할 수 있다.
GPU 구성 및 초기화는 다수의 기본 셋팅(Register setting)을 하는 작업, 필요한 펌웨어(Firmware, FW)를 업로드하는 작업, 업로드된 펌웨어를 동작시켜 GPU가 CPU 등에서 요구한 작업을 수행할 수 있는 상태로 만드는 작업 등을 포함할 수 있다. 여기서, 기본 셋팅은 클록(clock), 제어 비트 셋팅(control bit setting) 등을 포함한다.
본 발명의 실시예에서는, 하나의 시스템-온-칩(SoC)으로 하이퍼바이저 유무에 관계없이 멀티-마스터(Multi-master)를 지원하는 GPU를 다수의 OS 또는 다수의 CPU 간에 공유하는 방안에 대하여 설명한다.
도면을 참고하여 본 발명의 실시예에 따른 멀티-마스터를 지원하는 그래픽 처리 장치를 공유하는 시스템-온-칩(SoC) 및 GPU 동작 방법에 대하여 설명한다.
이때, 본 발명의 실시예들의 구성은 본 발명과 관련있는 구성만을 개략적으로 도시한 것으로서, 예를들어 전원 장치 등과 같은 일반적인 구성은 생략하였으나, 이들이 본 발명의 실시예에 포함되지 않는 것은 아니다.
도 1은 본 발명의 한 실시예에 따른 시스템-온-칩(SoC)의 구성을 나타낸 블록도이다.
도 1을 참조하면, 시스템-온-칩(SoC)(100)은 하나의 GPU(110) 및 두개의 CPU(CPU_1, CPU_2)(120, 130)를 포함한다. GPU(110)와 CPU들(120, 130)은 온-칩(On-chip) 버스(bus) 패브릭(fabric)(140)을 통하여 상호 통신한다.
각 CPU(120, 130)는 다양한 기능을 수행할 수 있으며, 이 중 하나는 시스템-온-칩(SoC)의 시스템 전체를 제어하는 역할을 할 수 있다.
CPU들(120, 130)은 각각의 OS를 실행한다. CPU_1(120)은 스탠드얼론 OS_1(121)을 실행하고, CPU_2(130)는 스탠드얼론 OS_2(131)를 실행한다.
GPU(110)는 멀티-마스터를 지원한다. 따라서, GPU(110)는 동시에 다수의 OS(121, 131)로부터 작업(Job)을 수신하여 처리할 수 있다.
이때, CPU_1(120)과 GPU(110) 사이에는 상태 모니터링 장치_1(150)가 연결되고, CPU_2(130)와 GPU(110) 사이에는 상태 모니터링 장치_2(160)가 연결된다.
시스템-온-칩(SoC)(100)의 전원이 켜지면, 시스템-온-칩(SoC)(100)에 탑재된 OS들 중에서 하나의 OS가 호스트 OS로 동작한다. 이는 사전에 정해진 것으로서, 예를들어, 스탠드얼론 OS_1(121)이 호스트 OS로 동작할 수 있다.
스탠드얼론 OS_1(121)이 GPU(110)의 구성 및 초기화한 이후, 스탠드얼론 OS_1(121) 및 스탠드얼론 OS_2(131)는 GPU(110)를 자유롭게 공유하여 사용할 수 있다.
안정된 시스템에서, 리셋(reset), 재시작(restart), 재부팅(reboot), 크래시(crash)와 같은 CPU들(120, 130)과 OS들(121, 131)의 비정상적인 상태가 발생할지라도 공유된 GPU(110)는 OS들(121, 131)이 요구한 모든 작업 요청을 처리해야만 한다.
OS들의 실행 상태 정보는 하이퍼바이저가 GPU(110)로 전달하는 것이 일반적이다. 그러나, 도 1의 구조와 같이, 하이퍼바이저가 없는 구조에서는 OS들(121, 131)의 실행 상태 정보를 GPU(110)로 전달할 수 있는 방법이 없다. 따라서, OS들(121, 131) 중의 하나에서 비정상적인 상태가 발생해도 이를 GPU(110)가 알지 못해서 문제가 생긴다.
그러나, 본 발명의 실시예에서는 각 CPU(120, 130)에 연결된 상태 모니터링 장치들(150, 160)이 각 OS(121, 131)의 실행 상태 정보를 체크해서 GPU(110)로 전달한다.따라서, CPU(120, 130) 또는 각 CPU(120, 130)에서 실행하는 OS들(121, 131)의 비정상적인 상태에서도 GPU(110)가 이를 알고 있으므로, 다른 정상적인 요청 뿐만 아니라 비정상적인 요청도 제대로 처리 할 수 있다.
만약, 호스트 OS로 동작하는 스탠드얼론 OS_1(121)과, 스탠드얼론 OS_1(121)가 탑재된 CPU_1(120)가 비정상적으로 동작하는 경우, 스탠드얼론 OS_1(121)의 재부팅동안 GPU 구성 및 초기화는 중지된다. 재부팅되는 동안 호스트 OS(121)는 정지된 GPU 구성에 접근하지 않는다. 재부팅되는 동안 호스트 OS(121)는 다른 코어들에 의해 요청된 다른 실행 작업의 안정적인 동작을 보장하기 위해 구성 상태를 확인 및 체크한다. 재부팅 후에, 호스트 OS(121)는 GPU 구성을 제어하고 GPU(110)에게 작업을 제출할 수 있다.
반면, 호스트 OS가 아닌 스탠드얼론 OS_2(131)과 스탠드얼론 OS_2(131)가 탑재된 CPU_2(130)가 비정상적으로 동작하는 경우, GPU 구성은 호스트 OS(121)에 의해 제어될 수 있다. 호스트 OS(121)가 아닌 비정상적인 OS(131)의 재부팅 후에, 호스트 OS(121)가 아닌 스탠드얼론 OS_2(131)로부터 작업 제출은 다시 시작된다.
도 2는 도 1의 시스템-온-칩(SoC)(100)의 동작을 설명한다.
도 2를 참조하면, 시스템-온-칩(SoC)(100)의 전원이 온(S101)되면, CPU_1(120)는 스탠드얼론 OS_1(121)를 실행(S103)하고, CPU_2(130)는 스탠드얼론 OS_2(131)를 실행한다(S105).
CPU_1(120)의 스탠드얼론 OS_1(121)는 GPU(110)와 연동하여 GPU 구성 및 초기화를 수행한다(S107).
CPU_1(120)의 스탠드얼론 OS_1(121)는 상태 모니터링 장치_1(150)의 요청에 의해 OS 실행 상태 정보를 상태 모니터링 장치_1(150)에게 제공한다(S109). 이때, S109 단계는 CPU_1(120)의 스탠드얼론 OS_1(121)와 상태 모니터링 장치_1(150) 간의 설정된 주기마다 이루어지거나, 또는 특정 이벤트(예, 비정상 동작) 발생시 수행될 수 있다.
상태 모니터링 장치_1(150)는 S109 단계를 통해 수집한 스탠드얼론 OS_1(121)의 실행 상태 정보를 GPU(110)로 전달한다(S111).
또한, CPU_2(130)의 스탠드얼론 OS_2(131)는 상태 모니터링 장치_2(160)의 요청에 의해 OS 실행 상태 정보를 상태 모니터링 장치_2(160)에게 제공한다(S113). 이때, S113 단계는 CPU_2(130)의 스탠드얼론 OS_2(131)와 상태 모니터링 장치_2(160) 간의 설정된 주기마다 이루어지거나, 또는 특정 이벤트(예, 비정상 동작) 발생시 수행될 수 있다.
상태 모니터링 장치_2(160)는 S113 단계를 통해 수집한 스탠드얼론 OS_2(131)의 실행 상태 정보를 GPU(110)로 전달한다(S115).
도 3은 본 발명의 다른 실시예에 따른 시스템-온-칩(SoC)의 구성을 나타낸 블록도로서, 도 1과 다른 구조를 나타낸다. 이때 도 1과 동일한 구성의 설명은 생략한다.
도 3을 참조하면, 시스템-온-칩(SoC)(200)은 하나의 GPU(210) 및 두개의 CPU(220, 230)를 포함한다. GPU(210)와 CPU들(220, 230)은 온-칩(On-chip) 버스(bus) 패브릭(fabric)(240)을 통하여 상호 통신한다.
이때, CPU_1(220)은 복수의 게스트 OS(221, 222)와 이들(221, 222)을 실행하는 하이퍼바이저(223)를 포함한다. CPU_1(221)은 게스트 OS_1(221) 및 게스트 OS_2(222)를 실행한다.
CPU_2(230)는 스탠드얼론 OS(231)를 포함하고, CPU_2(250)는 상태 모니터링 장치(250)와 연결된다. 즉, 상태 모니터링 장치(250)는 CPU_2(230)과 GPU(210) 사이에만 연결된다.
이 경우, 게스트 OS(221, 222)의 실행 상태 정보는 하이퍼바이저(223)를 통해 GPU(210)로 전달되고, 스탠드얼론 OS(231)의 실행 상태 정보는 상태 모니터링 장치(250)를 통해 GPU(210)로 전달된다.
전원이 켜지면, OS들(221, 222, 231) 중 하나가 호스트 OS가 된다. 이때, CPU_2(230)의 스탠드얼론 OS(231)가 호스트 OS일 수 있다. 따라서, 스탠드얼론 OS(231)만 GPU(210)를 구성하고 초기화할 수 있다. 스탠드얼론 OS(231)가 GPU(210)를 구성하고 초기화한 후에, 모든 OS, 즉, 게스트 OS_1(221), 게스트 OS_2(222), 스탠드얼론 OS(231)는 GPU(210)를 자유롭게 공유할 수 있다.
리셋, 재시작, 재부팅, 크래쉬와 같은 CPU들(220, 230) 및 OS들(221, 222, 231)의 비정상적인 상태에서도 공유된 GPU(210)는 복수의 OS들(221, 222, 231)에 의한 모든 작업 요청을 처리할 수 있어야 한다.
하이퍼바이저(223)가 있는 CPU_1(220)에서는 상태 모니터링 장치가 필요없다. 하이퍼바이저(223)가 CPU_1(220)에서 실행되는 게스트 OS들(221, 222)의 실행 상태 정보를 GPU(210)로 전달한다.
반면, 상태 모니터링 장치(250)가 CPU_2(230)에서 실행되는 스탠드얼론 OS(231)의 실행 상태 정보를 확인해서 GPU(210)에게 전달한다.
따라서, OS들(221, 222, 231) 중 하나가 비정상적으로 동작하더라도, GPU(210)가 이를 알 수 있으므로, GPU(210)는 일반 요청 뿐만 아니라 비정상 요청도 처리할 수 있다.
만약, 비정상적인 CPU와 그 CPU에서 실행되는 OS가 호스트 OS, 즉, 스탠드얼론 OS(231)인 경우, GPU 구성은 재부팅되는 동안 정지된다. 재부팅되는 동안 호스트 OS(231)는 정지된 GPU 구성에 접근하지 않는다. 재부팅되는 동안 호스트 OS(231)는 다른 코어들에 의해 요청된 다른 실행 작업의 안정적인 동작을 보장하기 위해 구성 상태를 확인 및 체크한다.
재부팅 후에, 호스트 OS(231)는 GPU 구성을 제어하고 GPU(210)에게 작업을 제출할 수 있다. 비정상적인 CPU 및 그 CPU에서 실행되는 OS가 HOST OS가 아닌 경우, GPU 구성은 호스트 OS(231)에 의해 제어될 수 있다. 호스트 OS가 아닌 비정상적인 OS의 재부팅 후에, 호스트 OS가 아닌 OS로부터 작업 제출은 다시 시작된다.
도 4는 도 3의 시스템-온-칩(SoC)의 동작을 설명한다.
도 4를 참조하면, 시스템-온-칩(SoC)(100)의 전원이 온(S201)되면, CPU_2(230)는 스탠드얼론 OS(231)를 실행(S201)한다. 이때, 스탠드얼론 OS(231)가 호스트 OS로 동작한다. 따라서, CPU_2(230)의 스탠드얼론 OS(231)는 GPU(210)와 연동하여 GPU 구성 및 초기화를 수행한다(S203).
CPU_2(230)의 스탠드얼론 OS(231)는 상태 모니터링 장치(250)의 요청에 의해 OS 실행 상태 정보를 상태 모니터링 장치(250)에게 제공한다(S205). 이때, S205 단계는 CPU_2(230)의 스탠드얼론 OS(231)와 상태 모니터링 장치(250) 간의 설정된 주기마다 이루어지거나, 또는 특정 이벤트(예, 비정상 동작) 발생시 수행될 수 있다.
상태 모니터링 장치(250)는 S205 단계를 통해 수집한 스탠드얼론 OS(231)의 실행 상태 정보를 GPU(210)로 전달한다(S207).
또한, CPU_1(220)는 게스트 OS_1(221) 및 게스트 OS_2(222)를 실행(S209)한다. CPU_1(220)의 하이퍼바이저(223)는 S209 단계에서 실행된 게스트 OS들(221, 222)의 실행 상태 정보를 체크(S211)한다. 이때, S211 단계는 설정된 주기마다 이루어지거나, 또는 특정 이벤트(예, 비정상 동작) 발생시 수행될 수 있다.
CPU_1(220)의 하이퍼바이저(223)는 S211 단계를 통해 수집한 게스트 OS들(221, 222)의 실행 상태 정보를 GPU(210)로 전달한다(S213).
도 5는 본 발명의 또 다른 실시예에 따른 시스템-온-칩(SoC) 구조를 나타내며, 도 1 및 도 3의 실시예가 병합된 실시예를 나타낸다. 이때, 도 1, 도 3과 동일한 구성의 설명은 생략한다.
도 5를 참조하면, 시스템-온-칩(SoC)(300)은 하나의 GPU(310) 및 두개의 CPU(320, 330)를 포함한다. GPU(310)와 CPU들(320, 330)은 온-칩(On-chip) 버스(bus) 패브릭(fabric)(340)을 통하여 상호 통신한다.
이때, CPU_1(320)은 게스트 OS_1(321), 게스트 OS_2(322), 하이퍼바이저(323) 및 스탠드얼론 OS_1(324)를 포함한다. CPU_2(330)은 스탠드얼론 OS_2(331)를 포함한다.
CPU_1(320)은 하이퍼바이저(323) 기반에서 복수의 게스트 OS(321, 322)를 실행한다. CPU_1(320)은 스탠드얼론 OS_1(324)를 독립적으로 실행한다. 이때, 상태 모니터링 장치_1(350)는 CPU_1(320)과 GPU(31) 사이에 연결된다. 이 경우, 게스트 OS들(321, 322)의 실행 상태 정보는 하이퍼바이저(323)를 통해 GPU(310)로 전달된다. 스탠드얼론 OS_1의 실행 상태 정보는 상태 모니터링 장치_1(350)를 통해 GPU(310)로 전달된다.
CPU_2(330)는 스탠드얼론 OS_2(331)를 실행하고, CPU_2(330)에는 상태 모니터링 장치_2(360)가 연결되어 있다. 스탠드얼론 OS_2(331)의 실행 상태 정보는 상태 모니터링 장치_2(360)를 통해 GPU(310)로 전달된다.
이때, 시스템-온-칩(SoC)은 스탠드얼론 OS가 두가지 존재한다. 하나의 실시예에 따르면, 한 스탠드얼론 OS(324 또는 331)만 GPU 구성 및 초기화를 하도록 제한할 수 있다. 다른 실시예에 따른 스탠드얼론 OS(324 또는 331)가 모두 GPU 구성 및 초기화를 하도록 설정할 수 있다. 이 경우, 스탠드얼론 OS(324 또는 331) 중 하나는 메인 OS로 설정되고, 메인 OS는 전체 시스템 재시작 사례에서만 GPU 구성 및 초기화 역할을 수행할 수 있다.
GPU 구성 및 초기화 이후, 시스템-온-칩(SoC) 내 모든 OS들은 GPU(310)를 자유롭게 공유하여 사용한다. 안정적인 시스템의 경우 재설정, 재시작, 재부팅, 크래시와 같은 비정상적인 CPU 및 OS 상태에서는 공유 GPU가 여러 OS의 모든 작업 요청을 처리 할 수 있다.
OS들(321, 322, 324, 331) 중 하나가 비정상적으로 동작하더라도, GPU(310)는 상태 모니터링을 통해 이를 알 수 있으므로, 일반 요청 뿐만 아니라 비정상 요청도 처리할 수 있다.
도 6은 도 5의 시스템-온-칩(SoC)의 동작을 설명한다.
도 6을 참조하면, 시스템-온-칩(SoC)(300)의 전원이 온(S301)되면, CPU_2(330)는 스탠드얼론 OS_2(331)를 실행(S303)한다.
이때, 스탠드얼론 OS_2(331)가 호스트 OS로 동작한다. 따라서, CPU_2(330)의 스탠드얼론 OS_2(331)는 GPU(210)와 연동하여 GPU 구성 및 초기화를 수행한다(S305).
CPU_2(330)의 스탠드얼론 OS_2(331)는 상태 모니터링 장치_2(360)의 요청에 의해 OS 실행 상태 정보를 상태 모니터링 장치_2(360)에게 제공한다(S307).
상태 모니터링 장치_2(360)는 S307 단계를 통해 수집한 스탠드얼론 OS_2(331)의 실행 상태 정보를 GPU(310)로 전달한다(S309).
또한, CPU_1(320)는 스탠드얼론 OS_1(324), 게스트 OS_1(321), 게스트 OS_2(322)를 실행(S311)한다.
상태 모니터링 장치_1(350)는 CPU_1(320)와 연동하여 스탠드얼론 OS_1(324)의 실행 상태를 체크한다(S313). 그리고 S313 단계에서 수집한 실행 상태 정보를 GPU(310)에게 전달한다(S315).
CPU_1(320)의 하이퍼바이저(323)는 S311 단계에서 실행된 게스트 OS들(321, 322)의 실행 상태 정보를 체크한다(S317). CPU_1(320)의 하이퍼바이저(323)는 S317 단계를 통해 수집한 게스트 OS들(321, 322)의 실행 상태 정보를 GPU(310)로 전달한다(S319).
이때, S307 단계, S313 단계, S317 단계는 설정된 주기마다 이루어지거나, 또는 특정 이벤트(예, 비정상 동작) 발생시 수행될 수 있다.
도 7은 본 발명의 실시예에 따른 GPU의 동작을 나타낸 순서도로서, 도 1 ~ 도 6과 같은 실시예에 따른 GPU의 동작을 나타낸다.
도 7을 참조하면, GPU(도 1의 110, 도 3의 210, 도 5의 310)가 적어도 하나의 상태 모니터링 장치(도 1의 150, 160, 도 3의 250, 도 5의 350, 360) 또는 하이퍼바이저(도 3의 223, 도 5의 323)로부터 OS들의 실행 상태 정보를 각각 수집한다(S401).
GPU(110, 210, 310)는 수집한 실행 상태 정보에 기초하여 비정상 상태인 OS가 있는지 판단한다(S403).
비정상 상태인 OS가 있으면, 비정상 상태인 OS의 기 작업을 정상적으로 종료 처리한다(S405). 비정상 상태는 리셋(reset), 재시작(restart), 재부팅(reboot), 크래시(crash) 중 하나일 수 있다.
GPU(110, 210, 310)는 비정상 상태인 OS가 호스트 OS인지 판단한다(S407). 비정상 상태인 OS가 호스트 OS로 판단되면, GPU(110, 210, 310)는 GPU 구성을 중지한다(S409).
GPU(110, 210, 310)는 호스트 OS의 재부팅이 완료되는지 판단(S411)한 후, 완료되면, GPU 구성 및 초기화를 재시작한다(S413).
한편, S407 단계에서 비정상 상태인 OS가 호스트 OS가 아니라고 판단되면, GPU(110, 210, 310)는 비정상 상태인 OS의 재부팅 완료 여부를 판단한다(S415).
GPU(110, 210, 310)는 비정상 상태인 OS가 재부팅 되면, 재부팅된 OS로부터 작업을 다시 수신한다(S417).
이와 같이, GPU(110, 210, 310)가 여러 OS에서 요청된 작업을 수행한다. 만약, 임의의 OS가 문제가 되어서 더 이상 해당 작업들을 수행하지 않아도 되는데 그 OS의 비정상 상태를 GPU(110, 210, 310)가 알 수 없으면, 그 OS의 작업을 정상 종료하지 못한다. 따라서, GPU 리소스가 낭비 또는 Halt(Hanging) 될 수 있다.
그러나, 본 발명의 실시예에 따르면, GPU(110, 210, 310)는 상태 모니터링 장치(150, 160, 250, 350, 360) 또는 하이퍼바이저(223, 323)를 통해 OS들의 상태 정보를 수집하므로, 비정상 상태인 OS의 동작을 제어할 수 있다.
일반적으로 정상적인 상태에서 GPU(110, 210, 310)는 여러 개의 마스터들(OS들)에서 실행되는 어플리케이션 프로그램들이 요청하는 작업들을 수행한다. 하지만, 하나의 OS가 리부트(reboot)되면 해당 OS에서 수행을 요청했던 작업들은 GPU(110, 210, 310)상에서 현재 수행 상태로 남아있다. 그러나, GPU(110, 210, 310)가 이를 알 수 있으므로, 해당 OS에서 요청해서 수행하던 작업들을 더 이상 수행하지 않고 정상적으로 종료시킴으로써, 다른 OS에서 요청된 작업들의 수행에 문제가 되거나, GPU 리소스를 불필요하게 사용하지 않도록 한다.
이상에서 설명한 본 발명의 실시예는 장치 및 방법을 통해서만 구현이 되는 것은 아니며, 본 발명의 실시예의 구성에 대응하는 기능을 실현하는 프로그램 또는 그 프로그램이 기록된 기록 매체를 통해 구현될 수도 있다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.

Claims (10)

  1. 시스템 온-칩(System on chip, SoC)으로서,
    적어도 하나의 운영 체제(Operating System)를 실행하는 복수의 중앙 처리 장치(Central Processing Unit, CPU),
    버스 인터페이스를 통해 상기 복수의 중앙 처리 장치와 각각 연결되어 상호 통신하는 그래픽 처리 장치(Graphics Processing Unit, GPU), 그리고
    상기 복수의 중앙 처리 장치 중 적어도 하나의 중앙 처리 장치와 선택적으로 연결되고, 연결된 중앙 처리 장치에서 실행된 적어도 하나의 운영 체제의 실행 상태 정보를 상기 그래픽 처리 장치로 전달하는 적어도 하나의 상태 모니터링 장치를 포함하고,
    상기 그래픽 처리 장치는,
    상기 적어도 하나의 운영 체제에 의하여 공유되고, 상기 적어도 하나의 운영 체제의 실행 상태 정보에 기초하여 상기 적어도 하나의 운영 체제에 의한 공유 동작을 제어하는, 시스템 온-칩(SoC).
  2. 제1항에서,
    상기 그래픽 처리 장치는,
    상기 적어도 하나의 운영 체제의 실행 상태 정보에 기초하여, 비정상 상태인 운영 체제를 판별하고, 판별한 운영 체제의 작업을 정상 종료 처리하는, 시스템 온-칩(SoC).
  3. 제2항에서,
    상기 그래픽 처리 장치는,
    상기 비정상 상태인 운영 체제가 호스트 운영 체제로 판단되면, 상기 비정상 상태인 운영 체제가 재부팅을 완료할때까지 구성을 중지하는, 시스템 온-칩(SoC).
  4. 제1항에서,
    상기 복수의 중앙 처리 장치는,
    제1 스탠드얼론(Stand alone) 운영 체제를 실행하는 제1 중앙 처리 장치, 그리고
    제2 스탠드얼론 운영 체제를 실행하는 제2 중앙 처리 장치를 포함하고,
    상기 적어도 하나의 상태 모니터링 장치는,
    상기 제1 중앙 처리 장치에 연결되어, 상기 제1 스탠드얼론 운영 체제의 실행 상태 정보를 상기 그래픽 처리 장치로 전달하는 제1 상태 모니터링 장치, 그리고
    상기 제2 중앙 처리 장치에 연결되어, 상기 제2 스탠드얼론 운영 체제의 실행 상태 정보를 상기 그래픽 처리 장치로 전달하는 제2 상태 모니터링 장치
    를 포함하는, 시스템 온-칩(SoC).
  5. 제1항에서,
    상기 복수의 중앙 처리 장치는,
    스탠드얼론 운영 체제를 실행하는 제1 중앙 처리 장치, 그리고
    하이퍼바이저 프로그램, 그리고 상기 하이퍼바이저 프로그램 기반으로 적어도 하나의 게스트 운영 제제를 실행하는 제2 중앙 처리 장치를 포함하고,
    상기 적어도 하나의 상태 모니터링 장치는,
    상기 제1 중앙 처리 장치에 연결되어, 상기 스탠드얼론 운영 체제의 실행 상태 정보를 상기 그래픽 처리 장치로 전달하는 제1 상태 모니터링 장치를 포함하며,
    상기 하이퍼바이저 프로그램은,
    상기 적어도 하나의 게스트 운영 체제의 실행 상태 정보를 상기 그래픽 처리 장치로 전달하는, 시스템 온-칩(SoC).
  6. 제1항에서,
    상기 복수의 중앙 처리 장치는,
    제1 스탠드얼론 운영 체제를 실행하는 제1 중앙 처리 장치, 그리고
    제2 스탠드얼론 운영 체제, 하이퍼바이저 프로그램, 그리고 상기 하이퍼바이저 프로그램 기반으로 적어도 하나의 게스트 운영 체제를 실행하는 제2 중앙 처리 장치를 포함하고,
    상기 적어도 하나의 상태 모니터링 장치는,
    상기 제1 중앙 처리 장치에 연결되어, 상기 제1 스탠드얼론 운영 체제의 실행 상태 정보를 상기 그래픽 처리 장치로 전달하는 제1 상태 모니터링 장치, 그리고
    상기 제2 중앙 처리 장치에 연결되어, 상기 제2 스탠드얼론 운영 체제의 실행 상태 정보를 상기 그래픽 처리 장치로 전달하는 제2 상태 모니터링 장치를 포함하고,
    상기 하이퍼바이저 프로그램은,
    상기 적어도 하나의 게스트 운영 체제의 실행 상태 정보를 상기 그래픽 처리 장치로 전달하는, 시스템 온-칩(SoC).
  7. 시스템 온-칩(System on chip, SoC)에 탑재된 그래픽 처리 장치(Graphics Processing Unit, GPU)의 동작 방법으로서,
    적어도 두개의 중앙 처리 장치(Central Processing Unit, CPU)로부터 각 중앙 처리 장치에서 실행된 운영 체제(Operating System)들의 실행 상태 정보를 수집하는 단계,
    상기 실행 상태 정보에 기초하여 비정상 상태로 동작하는 운영 체제가 있는지 판단하는 단계, 그리고
    비정상 상태로 동작하는 운영 체제의 기 작업을 정상적으로 종료 처리하고, 상기 비정상 상태로 동작하는 운영 체제의 재부팅이 완료될때까지 대기하는 단계를 포함하고,
    상기 그래픽 처리 장치는,
    상기 운영 체제들이 요구한 작업들을 처리하는 공유 동작을 수행하고,
    상기 실행 상태 정보는,
    적어도 하나의 중앙 처리 장치에 연결된 상태 모니터링 장치와 연결된 버스 인터페이스를 통하여 수집되는, 그래픽 처리 장치의 동작 방법.
  8. 제7항에서,
    상기 운영 체제들 중 하나는 호스트 운영 체제로 동작하고,
    상기 판단하는 단계 이후,
    상기 비정상 상태로 동작하는 운영 체제가 호스트 운영 체제인 경우, 상기 호스트 운영 체제의 재부팅이 완료될때까지 그래픽 처리 장치의 구성을 중지하는, 그래픽 처리 장치의 동작 방법.
  9. 제7항에서,
    상기 실행 상태 정보는,
    임의의 중앙 처리 장치에서 실행된 하이퍼바이저로부터 수집되며,
    상기 하이퍼바이저가 실행한 적어도 하나의 게스트 운영 체제의 실행 상태를 포함하는, 그래픽 처리 장치의 동작 방법.
  10. 제7항에서,
    상기 실행 상태 정보는,
    적어도 하나의 중앙 처리 장치에 연결된 상태 모니터링 장치와 연결된 버스 인터페이스를 통하여 수집된 적어도 하나의 스탠드얼론 운영 체제의 실행 상태 정보와,
    임의의 중앙 처리 장치에서 실행된 하이퍼바이저로부터 수집된 적어도 하나의 게스트 운영 체제의 실행 상태를 포함하는, 그래픽 처리 장치의 동작 방법.
KR1020190173272A 2019-12-23 2019-12-23 멀티-마스터를 지원하는 그래픽 처리 장치를 공유하는 시스템 온 칩 및 그래픽 처리 장치의 동작 방법 KR102275529B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020190173272A KR102275529B1 (ko) 2019-12-23 2019-12-23 멀티-마스터를 지원하는 그래픽 처리 장치를 공유하는 시스템 온 칩 및 그래픽 처리 장치의 동작 방법
DE112020006298.8T DE112020006298T5 (de) 2019-12-23 2020-11-25 Ein-Chip-System zum Teilen einer einen Multi-Master unterstützenden Grafikverarbeitungseinheit, und Verfahren zum Betreiben einer Grafikverarbeitungseinheit
PCT/KR2020/016794 WO2021132905A1 (ko) 2019-12-23 2020-11-25 멀티-마스터를 지원하는 그래픽 처리 장치를 공유하는 시스템 온 칩 및 그래픽 처리 장치의 동작 방법
US17/778,961 US20230024607A1 (en) 2019-12-23 2020-11-25 System-on-chip for sharing graphics processing unit that supports multimaster, and method for operating graphics processing unit
JP2022537810A JP7444993B2 (ja) 2019-12-23 2020-11-25 マルチマスターを支援するグラフィック処理装置を共有するシステムオンチップおよびグラフィック処理装置の動作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190173272A KR102275529B1 (ko) 2019-12-23 2019-12-23 멀티-마스터를 지원하는 그래픽 처리 장치를 공유하는 시스템 온 칩 및 그래픽 처리 장치의 동작 방법

Publications (3)

Publication Number Publication Date
KR20210081079A true KR20210081079A (ko) 2021-07-01
KR102275529B1 KR102275529B1 (ko) 2021-07-09
KR102275529B9 KR102275529B9 (ko) 2021-10-27

Family

ID=76575283

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190173272A KR102275529B1 (ko) 2019-12-23 2019-12-23 멀티-마스터를 지원하는 그래픽 처리 장치를 공유하는 시스템 온 칩 및 그래픽 처리 장치의 동작 방법

Country Status (5)

Country Link
US (1) US20230024607A1 (ko)
JP (1) JP7444993B2 (ko)
KR (1) KR102275529B1 (ko)
DE (1) DE112020006298T5 (ko)
WO (1) WO2021132905A1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006201919A (ja) * 2005-01-19 2006-08-03 Yoichi Furugaki マルチブートコンピュータ
KR20090016286A (ko) * 2007-08-10 2009-02-13 엘지전자 주식회사 컴퓨터 시스템 및 그 부팅제어방법
KR20120054027A (ko) * 2009-07-27 2012-05-29 어드밴스드 마이크로 디바이시즈, 인코포레이티드 프로세서들에 걸쳐 데이터-병렬 쓰레드들을 지닌 프로세싱 로직을 매핑하는 방법
JP6066807B2 (ja) * 2013-04-04 2017-01-25 三菱電機株式会社 計算機システム、計算機システムの割込み処理プログラム及び計算機システムの割込み処理方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8239938B2 (en) * 2008-12-08 2012-08-07 Nvidia Corporation Centralized device virtualization layer for heterogeneous processing units
WO2011011668A1 (en) 2009-07-24 2011-01-27 Advanced Micro Devices, Inc. Determining performance sensitivities of computational units
US8370605B2 (en) * 2009-11-11 2013-02-05 Sunman Engineering, Inc. Computer architecture for a mobile communication platform
US8650565B2 (en) * 2009-12-14 2014-02-11 Citrix Systems, Inc. Servicing interrupts generated responsive to actuation of hardware, via dynamic incorporation of ACPI functionality into virtual firmware
KR101694302B1 (ko) * 2013-03-11 2017-01-23 한국전자통신연구원 이기종 멀티코어 프로세서 시스템의 관리 장치 및 방법
EP3224712B1 (en) * 2014-11-24 2020-12-02 Intel Corporation Support for application-transparent, highly-available gpu-computing with virtual machine (vm)-checkpointing
KR102507114B1 (ko) * 2016-06-08 2023-03-07 삼성전자주식회사 복수의 운영체제들의 화면을 통합하여 표시하는 방법 및 그 전자 장치
CN109690482A (zh) * 2016-09-05 2019-04-26 华为技术有限公司 虚拟机图形处理器的分配
CN109324903B (zh) * 2018-09-21 2021-03-02 深圳前海达闼云端智能科技有限公司 用于嵌入式系统的显示资源调度方法及装置
GB2593730B (en) * 2020-03-31 2022-03-30 Imagination Tech Ltd Hypervisor removal

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006201919A (ja) * 2005-01-19 2006-08-03 Yoichi Furugaki マルチブートコンピュータ
KR20090016286A (ko) * 2007-08-10 2009-02-13 엘지전자 주식회사 컴퓨터 시스템 및 그 부팅제어방법
KR20120054027A (ko) * 2009-07-27 2012-05-29 어드밴스드 마이크로 디바이시즈, 인코포레이티드 프로세서들에 걸쳐 데이터-병렬 쓰레드들을 지닌 프로세싱 로직을 매핑하는 방법
JP6066807B2 (ja) * 2013-04-04 2017-01-25 三菱電機株式会社 計算機システム、計算機システムの割込み処理プログラム及び計算機システムの割込み処理方法

Also Published As

Publication number Publication date
JP2023510130A (ja) 2023-03-13
KR102275529B1 (ko) 2021-07-09
DE112020006298T5 (de) 2022-12-01
JP7444993B2 (ja) 2024-03-06
KR102275529B9 (ko) 2021-10-27
US20230024607A1 (en) 2023-01-26
WO2021132905A1 (ko) 2021-07-01

Similar Documents

Publication Publication Date Title
CN106445576B (zh) 主机板及其计算机实现方法及非暂态计算机可读储存装置
US20140068317A1 (en) Peripheral device sharing in multi host computing systems
EP2275926A2 (en) Method and apparatus to attain direct communication between accelerator and instruction sequencer
US9715403B2 (en) Optimized extended context management for virtual machines
US20140331014A1 (en) Scalable Matrix Multiplication in a Shared Memory System
US11099884B2 (en) Dynamic control of halt polling based on receiving a monitoring instruction executed by a guest
EP3425503A1 (en) Method and apparatus for operating a plurality of operating systems in an industry internet operating system
JP6249961B2 (ja) プログラムによる警告追跡割り込みファシリティの使用
JP6111181B2 (ja) 計算機の制御方法及び計算機
EP3979072B1 (en) Firmware boot task distribution to enable low latency boot performance
US8499112B2 (en) Storage control apparatus
CN113672250A (zh) 用于存储器设备固件升级的接口和热重置路径
CN112346557B (zh) 多核系统及其控制操作
JP6214559B2 (ja) 1つのプログラムにより別のプログラムに警告追跡ファシリティへのアクセスを提供する
US11144326B2 (en) System and method of initiating multiple adaptors in parallel
US20140075176A1 (en) Information processing apparatus
KR102275529B1 (ko) 멀티-마스터를 지원하는 그래픽 처리 장치를 공유하는 시스템 온 칩 및 그래픽 처리 장치의 동작 방법
US11243800B2 (en) Efficient virtual machine memory monitoring with hyper-threading
US10810032B2 (en) System and method for dynamic guest-controlled halt polling using a CPU governor
CN115220864A (zh) 虚拟模式执行管理器
US20120284711A1 (en) Method and Arrangement for Configuring a Resource for a Virtual Runtime Environment
JPH0836485A (ja) 情報処理装置及び情報処理装置の制御方法
US10152341B2 (en) Hyper-threading based host-guest communication
KR102285084B1 (ko) 이종의 멀티 cpu를 운용하는 시스템-온-칩 및 그 동작 방법
US20240134669A1 (en) Paravirtual pause loops in guest user space

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
G170 Re-publication after modification of scope of protection [patent]