KR102498319B1 - 반도체 장치 - Google Patents

반도체 장치 Download PDF

Info

Publication number
KR102498319B1
KR102498319B1 KR1020180064071A KR20180064071A KR102498319B1 KR 102498319 B1 KR102498319 B1 KR 102498319B1 KR 1020180064071 A KR1020180064071 A KR 1020180064071A KR 20180064071 A KR20180064071 A KR 20180064071A KR 102498319 B1 KR102498319 B1 KR 102498319B1
Authority
KR
South Korea
Prior art keywords
input
output request
guest operating
operating system
area
Prior art date
Application number
KR1020180064071A
Other languages
English (en)
Other versions
KR20190138031A (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 KR1020180064071A priority Critical patent/KR102498319B1/ko
Priority to US16/255,275 priority patent/US11003474B2/en
Priority to CN201910240479.9A priority patent/CN110554902B/zh
Publication of KR20190138031A publication Critical patent/KR20190138031A/ko
Application granted granted Critical
Publication of KR102498319B1 publication Critical patent/KR102498319B1/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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45545Guest-host, i.e. hypervisor is an application program itself, e.g. VirtualBox
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/327Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for interrupts
    • 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
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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/45579I/O management, e.g. providing access to device drivers or storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Multi Processors (AREA)

Abstract

반도체 장치가 제공된다. 반도체 장치는 제1 게스트 운영체제 및 제2 게스트 운영체제에 물리 디바이스에 대한 가상화(virtualization) 기능을 제공하는 프로세서; 및 상기 프로세서에 전기적으로 접속되고, 상기 제1 게스트 운영체제 및 상기 제2 게스트 운영체제에 각각 할당된 제1 영역 및 상기 제1 영역과 구분된 제2 영역을 포함하는 SFR(Special Function Register)을 포함하고, 상기 제1 영역 및 상기 제2 영역에는 상기 제1 게스트 운영체제 및 상기 제2 게스트 운영체제으로부터 각각 제공된 제1 입출력 요청 및 제2 입출력 요청에 관한 정보가 기록되고, 상기 프로세서는, 상기 제1 입출력 요청 및 상기 제2 입출력 요청에 따라, 상기 제1 게스트 운영체제 및 상기 제2 게스트 운영체제에 각각 지정된 제1 인터럽트 및 제2 인터럽트를 생성한다.

Description

반도체 장치{SEMICONDUCTOR DEVICE}
본 발명은 반도체 장치, 더욱 구체적로는 가상화(virtualization) 기술을 제공하는 반도체 장치에 관한 것이다.
가상화 기술은 물리 디바이스(physical device)를 여러 게스트 운영체제에 제공할 수 있다. 가상화 기술은 게스트 운영체제가 직접 물리 디바이스를 제어하는 환경을 제공할 수 있는 전 가상화(full-virtualization) 기술과, 게스트 운영체제와 물리 디바이스 사이에서 게스트 운영체제의 물리 디바이스에 대한 사용 요청을 처리하는 중간 운영체제를 필요로 하는 반 가상화(para-virtualization) 기술 등으로 구현될 수 있다.
전 가상화 기술은, 반 가상화 기술과 달리, 게스트 운영체제 커널의 수정이 필요 없다는 점에서 큰 장점을 가지나, 게스트 운영체제의 다양한 종류와 개수를 지원하는 것과 같은 확장성을 보장하기 위해서는 구현 복잡도가 높고 비용이 크다. 특히, 게스트 운영체제의 개수가 비교적 제한적인 오토모티브 환경과 같은 확장성의 보장이 크게 중요하지 않은 경우에서는, 구현 복잡도와 비용을 줄이면서도 전 가상화 기술을 제공할 수 있는 방안이 요구된다.
본 발명이 해결하고자 하는 기술적 과제는 구현 복잡도와 비용을 낮춘 전 가상화 기술을 제공하는 반도체 장치를 제공하는 것이다.
본 발명의 기술적 과제들은 위에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 해당 기술 분야의 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 반도체 장치는, 제1 게스트 운영체제 및 제2 게스트 운영체제에 물리 디바이스에 대한 가상화 기능을 제공하는 프로세서; 및 프로세서에 전기적으로 접속되고, 제1 게스트 운영체제 및 제2 게스트 운영체제에 각각 할당된 제1 영역 및 제1 영역과 구분된 제2 영역을 포함하는 SFR(Special Function Register)을 포함하고, 제1 영역 및 제2 영역에는 제1 게스트 운영체제 및 제2 게스트 운영체제으로부터 각각 제공된 제1 입출력 요청 및 제2 입출력 요청에 관한 정보가 기록되고, 프로세서는, 제1 입출력 요청 및 제2 입출력 요청에 따라, 제1 게스트 운영체제 및 제2 게스트 운영체제에 각각 지정된 제1 인터럽트 및 제2 인터럽트를 생성한다.
상기 기술적 과제를 달성하기 위한 본 발명의 다른 실시예에 따른 반도체 장치는, 제1 게스트 운영체제 및 제2 게스트 운영체제에 물리 디바이스에 대한 가상화 기능을 제공하는 프로세서; 프로세서에 전기적으로 접속되고, 제1 게스트 운영체제 및 제2 게스트 운영체제에 각각 할당된 제1 영역 및 제1 영역과 구분된 제2 영역을 포함하는 SFR; 및 SFR과 전기적으로 접속된 내부 메모리를 포함하고, 제1 영역 및 제2 영역에는 내부 메모리에 대한 제1 어드레스 및 제1 어드레스와 다른 제2 어드레스가 기록되고, 내부 메모리의 제1 어드레스로 액세스되는 영역에는 제1 입출력 요청에 관한 정보가 기록되고, 내부 메모리의 제2 어드레스로 액세스되는 영역에는 제2 입출력 요청에 관한 정보가 기록되고, 프로세서는, 제1 입출력 요청 및 제2 입출력 요청에 따라, 제1 게스트 운영체제 및 제2 게스트 운영체제에 각각 지정된 제1 인터럽트 및 제2 인터럽트를 생성한다.
상기 기술적 과제를 달성하기 위한 본 발명의 또 다른 실시예에 따른 반도체 장치는, 제1 게스트 운영체제 및 제2 게스트 운영체제에 물리 디바이스에 대한 가상화 기능을 제공하는 프로세서; 프로세서에 전기적으로 접속되고, 제1 게스트 운영체제 및 제2 게스트 운영체제에 각각 할당된 제1 영역 및 제1 영역과 구분된 제2 영역을 포함하는 SFR; 및 SFR과 전기적으로 접속된 외부 메모리를 포함하고, 제1 영역 및 제2 영역에는 외부 메모리에 대한 제1 어드레스 및 제1 어드레스와 다른 제2 어드레스가 기록되고, 외부 메모리의 제1 어드레스로 액세스되는 영역에는 제1 입출력 요청에 관한 정보가 기록되고, 외부 메모리의 제2 어드레스로 액세스되는 영역에는 제2 입출력 요청에 관한 정보가 기록되고, 프로세서는, 제1 입출력 요청 및 제2 입출력 요청에 따라, 제1 게스트 운영체제 및 제2 게스트 운영체제에 각각 지정된 제1 인터럽트 및 제2 인터럽트를 생성한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 본 발명의 일 실시예에 따른 반도체 장치를 설명하기 위한 블록도이다.
도 2 내지 도 6은 도 1의 반도체 장치의 동작을 설명하기 위한 블록도들이다.
도 7은 본 발명의 다른 실시예에 따른 반도체 장치를 설명하기 위한 블록도이다.
도 8 및 도 9는 도 7의 반도체 장치의 동작을 설명하기 위한 블록도들이다.
도 10은 본 발명의 또 다른 실시예에 따른 반도체 장치를 설명하기 위한 블록도이다.
도 11 및 도 12는 도 10의 반도체 장치의 동작을 설명하기 위한 블록도들이다.
도 13은 본 발명의 또 다른 실시예에 따른 반도체 장치를 설명하기 위한 블록도이다.
도 1은 본 발명의 일 실시예에 따른 반도체 장치를 설명하기 위한 블록도이다.
도 1을 참조하면 본 발명의 일 실시예에 따른 반도체 장치(100)는 프로세서(110), SFR(120) 및 내부 메모리(130)를 포함한다. 프로세서(100), SFR(120) 및 내부 메모리(130)는 버스(bus)를 통해 서로 전기적으로 연결된다. 본 실시예에서는 반도체 장치(100)가 내부 메모리(130)를 포함하는 것으로 도시하였으나, 본 발명의 범위는 이에 제한되지 않으며, 구현에 따라 내부 메모리(130)는 생략될 수 있다.
먼저, 물리 디바이스(200)는 제1 게스트 운영체제(310) 및 제2 게스트 운영체제(320)가 가상화 기능을 제공하는 반도체 장치(100)를 통해 액세스할 수 있는 디바이스이다. 물리 디바이스(200)는 예를 들어, HDD(Hard Disk Drive), SSD(Solid State Drive)를 비롯한 다양한 종류의 스토리지 디바이스일 수 있다. 그러나 본 발명의 범위가 이에 제한되는 것은 아니고, 물리 디바이스(200)는 제1 게스트 운영체제(310) 및 제2 게스트 운영체제(320)가 필요로 하는 임의의 주변 디바이스를 포함할 수 있다.
게스트 운영체제(310, 320)는 반도체 장치(100)를 통해 물리 디바이스(200)의 자원을 제어하는 임의의 운영체제를 포함할 수 있다. 예를 들어, 게스트 운영체제(310, 30)는 윈도우, 유닉스, 리눅스, 안드로이드, iOS, 심비안, 타이젠 등의 임의의 운영체제를 포함할 수 있다.
프로세서(110)는 소프트웨어 또는 프로그램을 실행하여, 프로세서(110)와 연결된 SFR(120), 내부 메모리(130) 및 기타 반도체 장치(100)의 다른 구성 요소(예컨대 하드웨어 또는 소프트웨어 구성 요소)를 제어할 수 있고, 다양한 데이터 처리 또는 연산을 수행할 수 있다. 특히 본 실시예에서 프로세서(110)는 제1 게스트 운영체제(310) 및 제2 게스트 운영체제(320)에 물리 디바이스(200)에 대한 가상화 기능을 제공할 수 있다. 프로세서(110)는 예를 들어 CPU(Central Processing Unit), AP(Application Processor) 등을 포함할 수 있다.
본 발명의 몇몇의 실시예에서, 본 발명의 일 실시예에 따른 반도체 장치(100)는 프로세서(110)와 독립적으로 혹은 프로세서(110)와 함께 동작 가능한 보조 프로세서를 더 포함할 수 있다. 보조 프로세서는 예를 들어 GPU(Graphics Processing Unit), ISP(Image Signal Processor), 센서 허브 프로세서, CP(Communication Processor) 등을 포함할 수 있다. 본 발명의 몇몇의 실시예에서, 보조 프로세서는 프로세서(110)보다 더 적은 전력을 소모하거나, 특정 기능을 실행하도록 구성될 수 있다. 한편, 본 발명의 몇몇의 실시예에서, 보조 프로세서는 프로세서(110)와 별도로, 또는 메인 프로세서(110)의 일부로 구현될 수도 있다.
SFR(120)은 프로세서(110)에 전기적으로 접속되며, 특정 목적으로 사용되는 레지스터이다. 본 발명의 몇몇의 실시예에서, SFR(120)은 SRAM(Static Random Access Memory)로 구현될 수 있으나, 본 발명의 범위가 이에 제한되는 것은 아니다. 특히 본 실시예에서, SFR(120)은 제1 게스트 운영체제(310) 및 제2 게스트 운영체제(320)로부터 제공되는 입출력 요청을 기록하기 위해 사용될 수 있다.
구체적으로, 제1 게스트 운영체제(310) 및 제2 게스트 운영체제(320)는, 물리 디바이스(200)에 대한 데이터 오퍼레이션을 수행하기 위해 SFR(120)에 입출력 요청을 기록할 수 있다. 그러면 프로세서(110)는 SFR(120)에 기록된 입출력 요청에 따라, 물리 디바이스(200)에 대해 해당 입출력 요청을 처리한 후, 작업이 완료되었음을 제1 게스트 운영체제(310) 및 제2 게스트 운영체제(320)에 통지하기 위한 인터럽트를 발생시킬 수 있다. 이와 같은 방식으로 제1 게스트 운영체제(310) 및 제2 게스트 운영체제(320)는 물리 디바이스(200)에 대한 데이터 오퍼레이션을, 반도체 장치(100)가 제공하는 가상화 기능을 통해 수행할 수 있다. 이에 따라 제1 게스트 운영체제(310) 및 제2 게스트 운영체제(320)는 물리 디바이스(200)를 공유할 수 있다.
이와 같은 방식으로 동작하는 가상화 기술에서는, 반도체 장치(100)가 제1 게스트 운영체제(310) 및 제2 게스트 운영체제(320)에게 직접 물리 디바이스(200)를 제어하는 환경, 즉 전 가상화 환경을 제공할 수 있다. 그런데, 일반적으로 다양한 종류와 개수의 게스트 운영체제들을 지원하기 위해서는 반도체 장치(100)가 지원할 수 있는 확장성의 규모가 문제될 수 있다. 게스트 운영체제들의 종류가 매우 다양하고 그 개수가 많은 환경에서는 폭 넓은 확장성이 요구되나, 게스트 운영체제들의 종류가 한정되고 그 개수가 적은 환경에서는 확장성의 중요도가 높지 않다.
본 명세서에서 설명되는 본 발명의 다양한 실시예에 따른 반도체 장치(100)는, 확장성의 중요도가 높지 않은 환경에서 구현 복잡도와 비용을 낮춘 전 가상화 기술을 제공하는 것에 초점을 두고 있다.
이를 위해, 본 발명의 일 실시예에 따른 반도체 장치(100)의 SFR(120)은 그 내부에 게스트 운영체제 별로 구분되어 할당되는 복수의 영역들을 가지며, 반도체 장치(100)는 또한 게스트 운영체제 별로 구분하여 지정된 복수의 인터럽트를 게스트 운영체제에 독립적으로 제공한다.
이제 도 2 내지 도 6을 참조하여, 반도체 장치(100)를 통해 게스트 운영체제(310, 320)의 데이터 오퍼레이션을 수행하는 과정을 설명하도록 한다.
도 2 내지 도 6은 도 1의 반도체 장치(100)의 동작을 설명하기 위한 블록도들이다.
도 2를 참조하면, SFR(120)은 제1 영역(1201) 및 제2 영역(1202)을 포함한다. 제2 영역(1202)은 제1 영역(1201)과 구분되어 있다. 구체적으로, 제1 영역(1201)은 제1 게스트 운영체제(310)에 할당된 영역이고, 제2 영역(1202)은 제2 게스트 운영체제(320)에 할당된 영역이다.
제1 영역(1201)에는 제1 게스트 운영체제(310)로부터 제공된 제1 입출력 요청(REQ1)에 관한 정보가 기록될 수 있다. 여기서 제1 입출력 요청(REQ1)은 물리 디바이스(200)에 대한 데이터 리드 요청, 데이터 라이트 요청 등을 포함할 수 있다. 즉, 제1 영역(1201)에 제1 입출력 요청(REQ1)에 관한 정보가 기록되었다는 것은, 제1 게스트 운영체제(310)가 제1 입출력 요청(REQ1)을 처리하기 위해 물리 디바이스(200)를 액세스하려고 한다는 의미일 수 있다.
한편, 제2 영역(1202)에는 제2 게스트 운영체제(320)로부터 제공된 제2 입출력 요청(REQ2)에 관한 정보가 기록될 수 있다. 여기서 제2 입출력 요청(REQ2)은, 제1 입출력 요청(REQ1)과 마찬가지로 물리 디바이스(200)에 대한 데이터 리드 요청, 데이터 라이트 요청 등을 포함할 수 있다. 즉, 제2 영역(1202)에 제2 입출력 요청(REQ2)에 관한 정보가 기록되었다는 것은, 제2 게스트 운영체제(320)가 제2 입출력 요청(REQ2)을 처리하기 위해 물리 디바이스(200)를 액세스하려고 한다는 의미일 수 있다.
본 실시예에서, 제1 입출력 요청(REQ1)에 관한 정보 또는 제2 입출력 요청(REQ2)에 관한 정보의 형태는 구현에 따라 다양할 수 있다. 예를 들어, 제1 영역(1201) 또는 제2 영역(1202)은 제1 입출력 요청(REQ1) 또는 제2 입출력 요청(REQ2)의 커맨드 자체 또는 이에 대응하는 임의의 형식의 식별 문자 또는 코드의 형태의 정보를 기록할 수 있으며, 그 구체적인 구현 방식은 해당 정보가 제1 입출력 요청(REQ1) 또는 제2 입출력 요청(REQ2)의 내용을 식별할 수만 있다면 특정 방식으로 제한되지 않는다. 본 실시예에서는 제1 입출력 요청(REQ1)에 관한 정보를 "R1"로 표시하고, 제2 입출력 요청(REQ2)에 관한 정보를 "R2"로 표시하였다.
도 2의 실시예에서, 제1 게스트 운영체제(310)는 물리 디바이스(200)를 액세스하기 위한 제1 입출력 요청(REQ1)을 반도체 장치(100)에 전송하고, 제2 게스트 운영체제(320)는 물리 디바이스(200)를 액세스하기 위한 제2 입출력 요청(REQ2)을 반도체 장치(100)에 전송하였다.
이에 따라 SFR(120)의 제1 영역(1201)에는 제1 입출력 요청(REQ1)에 관한 정보로서 "R1"이 기록되고, 제2 영역(1202)에는 제2 입출력 요청(REQ2)에 관한 정보로서 "R2"가 기록되었다.
프로세서(110)는 제1 입출력 요청(REQ1) 및 제2 입출력 요청(REQ2)의 처리 순서를 결정할 수 있다. 구체적으로, 예를 들어, SFR(120)의 제1 영역(1201)에 제1 입출력 요청(REQ1)에 관한 정보(R1)가 기록된 시점이, 제2 영역(1202)에 제2 입출력 요청(REQ2)에 관한 정보(R2)가 기록된 시점보다 앞선 경우, 프로세서(110)는 제2 입출력 요청(REQ2)보다 제1 입출력 요청(REQ1)을 먼저 처리할 수 있다.
이를 위해, 제1 입출력 요청(REQ1) 및 제2 입출력 요청(REQ2)의 처리 우선순위를 결정하기 위해, 프로세서(110)는 큐(queue)(Q)를 이용할 수 있다.
예를 들어, SFR(120)의 제1 영역(1201)에 제1 입출력 요청(REQ1)에 관한 정보(R1)가 기록된 시점이, 제2 영역(1202)에 제2 입출력 요청(REQ2)에 관한 정보(R2)가 기록된 시점보다 앞선 경우, 제1 입출력 요청(REQ1)은 제2 입출력 요청(REQ2)보다 큐(Q)에 먼저 삽입될 수 있다. 또한, 도 3 내지 도 6에서 후술하는 바와 같이, 제1 입출력 요청(REQ1)은 제2 입출력 요청(REQ2)보다 큐(Q)에서 먼저 삭제될 수 있다.
도 3을 참조하면, 프로세서(110)는 처리 우선순위가 높은 제1 입출력 요청(REQ1)을 먼저 처리한다. 한편 제1 입출력 요청(REQ1)은 큐(Q)에서 삭제된다.
구체적으로, 프로세서(110)는 제1 입출력 요청(REQ1)에 따라 물리 디바이스(200)를 액세스한다. 제1 입출력 요청(REQ1)이 데이터 리드 오퍼레이션인 경우, 프로세서(110)는 제1 게스트 운영체제(310)로부터 제1 입출력 요청(REQ1)으로서 전달받은 요청 데이터를 물리 디바이스(200)로부터 리드한다. 리드된 데이터는, 예컨대 내부 메모리(130)와 같은 다른 구성 요소에 저장된 후, 제1 게스트 운영체제(310)에 전달될 수 있다. 이와 달리, 제1 입출력 요청(REQ1)이 데이터 라이트 오퍼레이션인 경우, 프로세서(110)는 제1 게스트 운영체제(310)로부터 제1 입출력 요청(REQ1)과 함께 전달받은 데이터를 물리 디바이스(200)에 라이트한다.
이어서 도 4를 참조하면, 프로세서(110)는, 물리 디바이스(200)에 대한 액세스를 완료한 후, 제1 게스트 운영체제(310)에 지정된 제1 인터럽트(INT1)를 생성한다. 그리고 프로세서(110)는, 물리 디바이스(200)에 대해 제1 입출력 요청(REQ1)을 처리한 후 생성한 제1 인터럽트(INT1)를 제1 게스트 운영체제(310)에 제공한다. 제1 게스트 운영체제(310)는 제1 인터럽트(INT1)를 수신함에 따라, 제1 입출력 요청(REQ1)이 처리 완료되었음을 인지할 수 있다.
이어서 도 5를 참조하면, 프로세서(110)는 처리 우선순위가 제1 입출력 요청(REQ1)보다 낮은 제2 입출력 요청(REQ2)을 처리한다. 한편 제2 입출력 요청(REQ2)은 큐(Q)에서 삭제된다.
구체적으로, 프로세서(110)는 제2 입출력 요청(REQ2)에 따라 물리 디바이스(200)를 액세스한다. 제2 입출력 요청(REQ2)이 데이터 리드 오퍼레이션인 경우, 프로세서(110)는 제2 게스트 운영체제(320)로부터 제2 입출력 요청(REQ2)으로서 전달받은 요청 데이터를 물리 디바이스(200)로부터 리드한다. 리드된 데이터는, 예컨대 내부 메모리(130)와 같은 다른 구성 요소에 저장된 후, 제2 게스트 운영체제(320)에 전달될 수 있다. 이와 달리, 제2 입출력 요청(REQ2)이 데이터 라이트 오퍼레이션인 경우, 프로세서(110)는 제2 게스트 운영체제(320)로부터 제2 입출력 요청(REQ2)과 함께 전달받은 데이터를 물리 디바이스(200)에 라이트한다.
이어서 도 6을 참조하면, 프로세서(110)는, 물리 디바이스(200)에 대한 액세스를 완료한 후, 제2 게스트 운영체제(320)에 지정된 제2 인터럽트(INT2)를 생성한다. 그리고 프로세서(110)는, 물리 디바이스(200)에 대해 제2 입출력 요청(REQ2)을 처리한 후 생성한 제2 인터럽트(INT2)를 제2 게스트 운영체제(320)에 제공한다. 제2 게스트 운영체제(320)는 제2 인터럽트(INT2)를 수신함에 따라, 제2 입출력 요청(REQ2)이 처리 완료되었음을 인지할 수 있다.
설명의 편의를 위해, 도 2 내지 도 6에서는 2 개의 게스트 운영체제(310, 320)만을 도시하였으나, 게스트 운영체제의 개수는 이에 제한되지 않는다. 즉, 도시된 것과 달리 게스트 운영체제의 개수는 3 이상일 수 있다. 이에 따라 SFR(120)은 3 이상의 서로 다른 영역들을 포함하도록 구분될 수 있고, 반도체 장치(100)는 3 이상의 서로 독립적인 인터럽트를 생성할 수 있다.
도 2 내지 도 6에 따르면, SFR(120)의 제1 영역(1201) 및 제2 영역(1202)에는 제1 게스트 운영체제(310) 및 제2 게스트 운영체제(320)로부터 각각 제공된 제1 입출력 요청(REQ1) 및 제2 입출력 요청(REQ2)에 관한 정보(R2)가 기록된다. 그리고 프로세서(110)는, 제1 입출력 요청(REQ1) 및 제2 입출력 요청(REQ2)에 따라, 제1 게스트 운영체제(310) 및 제2 게스트 운영체제(320)에 각각 지정된 제1 인터럽트(INT1) 및 제2 인터럽트(INT2)를 생성한다. 구체적으로, 프로세서(110)는, 물리 디바이스(200)에 대해 제1 입출력 요청(REQ1)을 처리한 후 제1 인터럽트(INT1)를 제1 게스트 운영체제(310)에 제공하고, 물리 디바이스(200)에 대해 제2 입출력 요청(REQ2)을 처리한 후 제2 인터럽트(INT2)를 제2 게스트 운영체제(320)에 제공한다.
또한, 프로세서(110)는, 큐(Q)를 이용하여, 물리 디바이스(200)에 대해 처리 우선순위가 높은 제1 입출력 요청(REQ1)을 먼저 처리하여 제1 인터럽트(INT1)를 제1 게스트 운영체제(310)에 제공한 후, 물리 디바이스(200)에 대해 처리 우선순위가 낮은 제2 입출력 요청(REQ2)을 처리하여 제2 인터럽트(INT2)를 제2 게스트 운영체제(320)에 제공할 수 있다.
이와 같이, 본 발명의 일 실시예에 따른 반도체 장치(100)는 SFR(120)의 내부에 게스트 운영체제(310, 320) 별로 구분되어 할당되는 복수의 영역들(1201, 1202)을 정의하고, 게스트 운영체제(310, 320) 별로 구분하여 지정된 복수의 인터럽트(INT1, INT2)를 게스트 운영체제에 독립적으로 제공함으로써, 구현 복잡도와 비용을 낮춘 전 가상화 기술을 제공할 수 있다.
이제 도 7 내지 도 9를 참조하여, 본 발명의 다른 실시예에 따른 반도체 장치(100)를 통해 게스트 운영체제(310, 320)의 데이터 오퍼레이션을 수행하는 과정을 설명하도록 한다.
도 7은 본 발명의 다른 실시예에 따른 반도체 장치(100)를 설명하기 위한 블록도이고, 도 8 및 도 9는 도 7의 반도체 장치의 동작을 설명하기 위한 블록도들이다.
도 7을 참조하면, 도 2의 실시예와 다른 점은, 반도체 장치(100)는 SFR(120)과 전기적으로 접속된 내부 메모리(130)에 제1 입출력 요청(REQ1)에 관한 정보(R1) 및 제2 입출력 요청(REQ2)에 관한 정보(R2)를 기록한다는 점이다.
구체적으로, SFR(120)의 제1 영역(1211)에는 내부 메모리(130)에 대한 제1 어드레스(ADDR1)가 기록된다. 그리고 내부 메모리(130)의 제1 어드레스(ADDR1)로 액세스되는 영역(1301)에 제1 입출력 요청(REQ1)에 관한 정보(R1)가 기록된다. 제1 어드레스(ADDR1)로 액세스되는 영역(1301)에 제1 입출력 요청(REQ1)에 관한 정보(R1)가 기록되었다는 것은, 제1 게스트 운영체제(310)가 제1 입출력 요청(REQ1)을 처리하기 위해 물리 디바이스(200)를 액세스하려고 한다는 의미일 수 있다.
한편, SFR(120)의 제2 영역(1212)에는 내부 메모리(130)에 대한 제2 어드레스(ADDR2)가 기록된다. 그리고 내부 메모리(130)의 제2 어드레스(ADDR2)로 액세스되는 영역(1302)에 제2 입출력 요청(REQ2)에 관한 정보(R2)가 기록된다. 제2 어드레스(ADDR2)로 액세스되는 영역(1302)에 제1 입출력 요청(REQ2)에 관한 정보(R2)가 기록되었다는 것은, 제2 게스트 운영체제(310)가 제2 입출력 요청(REQ2)을 처리하기 위해 물리 디바이스(200)를 액세스하려고 한다는 의미일 수 있다.
도 7에서, 제1 게스트 운영체제(310)는 물리 디바이스(200)를 액세스하기 위한 제1 입출력 요청(REQ1)을 반도체 장치(100)에 전송하고, 제2 게스트 운영체제(320)는 물리 디바이스(200)를 액세스하기 위한 제2 입출력 요청(REQ2)을 반도체 장치(100)에 전송하였다.
이에 따라 SFR(120)의 제1 영역(1211)에는 내부 메모리(130)에 대한 제1 어드레스(ADDR1)가 기록되고, 제2 영역(1212)에는 내부 메모리(130)에 대한 제2 어드레스(ADDR2)가 기록되었다. 그리고 내부 메모리(130)의 제1 어드레스(ADDR1)로 액세스되는 영역(1301)에는 제1 입출력 요청(REQ1)에 관한 정보로서 "R1"이 기록되고, 제2 어드레스(ADDR2)로 액세스되는 영역(1302)에는 제2 입출력 요청(REQ2)에 관한 정보로서 "R2"가 기록되었다.
앞선 실시예에서와 마찬가지로, 프로세서(110)는 제1 입출력 요청(REQ1) 및 제2 입출력 요청(REQ2)의 처리 순서를 결정할 수 있다. 구체적으로, 예를 들어, 내부 메모리(130)의 제1 어드레스(ADDR1)로 액세스되는 영역(1301)에 제1 입출력 요청(REQ1)에 관한 정보(R1)가 기록된 시점이, 내부 메모리(130)의 제2 어드레스(ADDR2)로 액세스되는 영역(1302)에 제2 입출력 요청(REQ2)에 관한 정보(R2)가 기록된 시점보다 앞선 경우, 프로세서(110)는 제2 입출력 요청(REQ2)보다 제1 입출력 요청(REQ1)을 먼저 처리할 수 있다.
한편, 본 실시예에서, 반도체 장치(100)는 SFR(120)과 내부 메모리(130) 사이의 데이터 전송을 처리하는 DMA(140)를 더 포함할 수 있다. DMA(140)는, 내부 메모리(130)의 제1 어드레스(ADDR1)로 액세스되는 영역(1301)에 기록된 제1 입출력 요청(REQ1)에 관한 정보를 SFR(120)의 제1 영역(1211)에 로드(load)하여, 프로세서(100)가 SFR(120)을 통해 제1 입출력 요청(REQ1)을 수신할 수 있도록 할 수 있다. 또한, DMA(140)는, 내부 메모리(130)의 제2 어드레스(ADDR2)로 액세스되는 영역(1302)에 기록된 제2 입출력 요청(REQ2)에 관한 정보를 SFR(120)의 상기 제2 영역(1212)에 로드하여, 프로세서(100)가 SFR(120)을 통해 제2 입출력 요청(REQ2)을 수신할 수 있도록 할 수 있다.
이어서 도 8을 참조하면, 프로세서(110)는 처리 우선순위가 높은 제1 입출력 요청(REQ1)을 먼저 처리한다. 한편 제1 입출력 요청(REQ1)은 큐(Q)에서 삭제된다.
프로세서(110)는, 물리 디바이스(200)에 대한 액세스를 완료한 후, 제1 게스트 운영체제(310)에 지정된 제1 인터럽트(INT1)를 생성한다. 그리고 프로세서(110)는, 물리 디바이스(200)에 대해 제1 입출력 요청(REQ1)을 처리한 후 생성한 제1 인터럽트(INT1)를 제1 게스트 운영체제(310)에 제공한다. 제1 게스트 운영체제(310)는 제1 인터럽트(INT1)를 수신함에 따라, 제1 입출력 요청(REQ1)이 처리 완료되었음을 인지할 수 있다.
이어서 도 9를 참조하면, 프로세서(110)는 처리 우선순위가 제1 입출력 요청(REQ1)보다 낮은 제2 입출력 요청(REQ2)을 처리한다. 한편 제2 입출력 요청(REQ2)은 큐(Q)에서 삭제된다.
프로세서(110)는, 물리 디바이스(200)에 대한 액세스를 완료한 후, 제2 게스트 운영체제(320)에 지정된 제2 인터럽트(INT2)를 생성한다. 그리고 프로세서(110)는, 물리 디바이스(200)에 대해 제2 입출력 요청(REQ2)을 처리한 후 생성한 제2 인터럽트(INT2)를 제2 게스트 운영체제(320)에 제공한다. 제2 게스트 운영체제(320)는 제2 인터럽트(INT2)를 수신함에 따라, 제2 입출력 요청(REQ2)이 처리 완료되었음을 인지할 수 있다.
설명의 편의를 위해, 도 7 내지 도 9에서는 2 개의 게스트 운영체제(310, 320)만을 도시하였으나, 게스트 운영체제의 개수는 이에 제한되지 않는다. 즉, 도시된 것과 달리 게스트 운영체제의 개수는 3 이상일 수 있다. 이에 따라 SFR(120)은 3 이상의 서로 다른 영역들을 포함하도록 구분될 수 있고, 반도체 장치(100)는 3 이상의 서로 독립적인 인터럽트를 생성할 수 있다.
이와 같이, 본 발명의 일 실시예에 따른 반도체 장치(100)는 SFR(120)의 내부에 게스트 운영체제(310, 320) 별로 구분되어 할당되는 복수의 영역들(1201, 1202)을 정의하고, 게스트 운영체제(310, 320) 별로 구분하여 지정된 복수의 인터럽트(INT1, INT2)를 게스트 운영체제에 독립적으로 제공함으로써, 구현 복잡도와 비용을 낮춘 전 가상화 기술을 제공할 수 있다.
도 10은 본 발명의 또 다른 실시예에 따른 반도체 장치를 설명하기 위한 블록도이고, 도 11 및 도 12는 도 10의 반도체 장치의 동작을 설명하기 위한 블록도들이다.
도 10을 참조하면, 도 2의 실시예와 다른 점은, 반도체 장치(100)는 SFR(120)과 전기적으로 접속된 외부 메모리(140)에 제1 입출력 요청(REQ1)에 관한 정보(R1) 및 제2 입출력 요청(REQ2)에 관한 정보(R2)를 기록한다는 점이다.
구체적으로, SFR(120)의 제1 영역(1211)에는 외부 메모리(140)에 대한 제1 어드레스(ADDR1)가 기록된다. 그리고 외부 메모리(140)의 제1 어드레스(ADDR1)로 액세스되는 영역(1301)에 제1 입출력 요청(REQ1)에 관한 정보(R1)가 기록된다. 제1 어드레스(ADDR1)로 액세스되는 영역(1301)에 제1 입출력 요청(REQ1)에 관한 정보(R1)가 기록되었다는 것은, 제1 게스트 운영체제(310)가 제1 입출력 요청(REQ1)을 처리하기 위해 물리 디바이스(200)를 액세스하려고 한다는 의미일 수 있다.
한편, SFR(120)의 제2 영역(1212)에는 외부 메모리(140)에 대한 제2 어드레스(ADDR2)가 기록된다. 그리고 외부 메모리(140)의 제2 어드레스(ADDR2)로 액세스되는 영역(1302)에 제2 입출력 요청(REQ2)에 관한 정보(R2)가 기록된다. 제2 어드레스(ADDR2)로 액세스되는 영역(1302)에 제1 입출력 요청(REQ2)에 관한 정보(R2)가 기록되었다는 것은, 제2 게스트 운영체제(310)가 제2 입출력 요청(REQ2)을 처리하기 위해 물리 디바이스(200)를 액세스하려고 한다는 의미일 수 있다.
도 10에서, 제1 게스트 운영체제(310)는 물리 디바이스(200)를 액세스하기 위한 제1 입출력 요청(REQ1)을 반도체 장치(100)에 전송하고, 제2 게스트 운영체제(320)는 물리 디바이스(200)를 액세스하기 위한 제2 입출력 요청(REQ2)을 반도체 장치(100)에 전송하였다.
이에 따라 SFR(120)의 제1 영역(1211)에는 외부 메모리(140)에 대한 제1 어드레스(ADDR1)가 기록되고, 제2 영역(1212)에는 외부 메모리(140)에 대한 제2 어드레스(ADDR2)가 기록되었다. 그리고 외부 메모리(140)의 제1 어드레스(ADDR1)로 액세스되는 영역(4001)에는 제1 입출력 요청(REQ1)에 관한 정보로서 "R1"이 기록되고, 제2 어드레스(ADDR2)로 액세스되는 영역(4002)에는 제2 입출력 요청(REQ2)에 관한 정보로서 "R2"가 기록되었다.
앞선 실시예에서와 마찬가지로, 프로세서(110)는 제1 입출력 요청(REQ1) 및 제2 입출력 요청(REQ2)의 처리 순서를 결정할 수 있다. 구체적으로, 예를 들어, 외부 메모리(140)의 제1 어드레스(ADDR1)로 액세스되는 영역(4001)에 제1 입출력 요청(REQ1)에 관한 정보(R1)가 기록된 시점이, 외부 메모리(140)의 제2 어드레스(ADDR2)로 액세스되는 영역(4002)에 제2 입출력 요청(REQ2)에 관한 정보(R2)가 기록된 시점보다 앞선 경우, 프로세서(110)는 제2 입출력 요청(REQ2)보다 제1 입출력 요청(REQ1)을 먼저 처리할 수 있다.
한편, 본 실시예에서, 반도체 장치(100)는 SFR(120)과 외부 메모리(140) 사이의 데이터 전송을 처리하는 DMA(140)를 더 포함할 수 있다. DMA(140)는, 외부 메모리(140)의 제1 어드레스(ADDR1)로 액세스되는 영역(4001)에 기록된 제1 입출력 요청(REQ1)에 관한 정보를 SFR(120)의 제1 영역(1211)에 로드하여, 프로세서(100)가 SFR(120)을 통해 제1 입출력 요청(REQ1)을 수신할 수 있도록 할 수 있다. 또한, DMA(140)는, 외부 메모리(140)의 제2 어드레스(ADDR2)로 액세스되는 영역(4002)에 기록된 제2 입출력 요청(REQ2)에 관한 정보를 SFR(120)의 상기 제2 영역(1212)에 로드하여, 프로세서(100)가 SFR(120)을 통해 제2 입출력 요청(REQ2)을 수신할 수 있도록 할 수 있다.
이어서 도 11을 참조하면, 프로세서(110)는 처리 우선순위가 높은 제1 입출력 요청(REQ1)을 먼저 처리한다. 한편 제1 입출력 요청(REQ1)은 큐(Q)에서 삭제된다.
프로세서(110)는, 물리 디바이스(200)에 대한 액세스를 완료한 후, 제1 게스트 운영체제(310)에 지정된 제1 인터럽트(INT1)를 생성한다. 그리고 프로세서(110)는, 물리 디바이스(200)에 대해 제1 입출력 요청(REQ1)을 처리한 후 생성한 제1 인터럽트(INT1)를 제1 게스트 운영체제(310)에 제공한다. 제1 게스트 운영체제(310)는 제1 인터럽트(INT1)를 수신함에 따라, 제1 입출력 요청(REQ1)이 처리 완료되었음을 인지할 수 있다.
이어서 도 12를 참조하면, 프로세서(110)는 처리 우선순위가 제1 입출력 요청(REQ1)보다 낮은 제2 입출력 요청(REQ2)을 처리한다. 한편 제2 입출력 요청(REQ2)은 큐(Q)에서 삭제된다.
프로세서(110)는, 물리 디바이스(200)에 대한 액세스를 완료한 후, 제2 게스트 운영체제(320)에 지정된 제2 인터럽트(INT2)를 생성한다. 그리고 프로세서(110)는, 물리 디바이스(200)에 대해 제2 입출력 요청(REQ2)을 처리한 후 생성한 제2 인터럽트(INT2)를 제2 게스트 운영체제(320)에 제공한다. 제2 게스트 운영체제(320)는 제2 인터럽트(INT2)를 수신함에 따라, 제2 입출력 요청(REQ2)이 처리 완료되었음을 인지할 수 있다.
설명의 편의를 위해, 도 10 내지 도 12에서는 2 개의 게스트 운영체제(310, 320)만을 도시하였으나, 게스트 운영체제의 개수는 이에 제한되지 않는다. 즉, 도시된 것과 달리 게스트 운영체제의 개수는 3 이상일 수 있다. 이에 따라 SFR(120)은 3 이상의 서로 다른 영역들을 포함하도록 구분될 수 있고, 반도체 장치(100)는 3 이상의 서로 독립적인 인터럽트를 생성할 수 있다.
이와 같이, 본 발명의 일 실시예에 따른 반도체 장치(100)는 SFR(120)의 내부에 게스트 운영체제(310, 320) 별로 구분되어 할당되는 복수의 영역들(1201, 1202)을 정의하고, 게스트 운영체제(310, 320) 별로 구분하여 지정된 복수의 인터럽트(INT1, INT2)를 게스트 운영체제에 독립적으로 제공함으로써, 구현 복잡도와 비용을 낮춘 전 가상화 기술을 제공할 수 있다.
도 13은 본 발명의 또 다른 실시예에 따른 반도체 장치를 설명하기 위한 블록도이다.
도 13을 참조하면, 본 발명의 또 다른 실시예에 따른 반도체 장치(100)는 일 구현례로 오토모티브(automotive) 분야에서 사용되는 SOC(System-On-Chip)으로 구현될 수 있다. 그리고 물리 디바이스(200)는, 예컨대 SD(Secure Digital) 메모리 카드를 비롯한 스토리지 디바이스로 구현될 수 있다.
이와 같은 경우, 제1 게스트 운영체제(312)는 예컨대 공조 시스템을 제어하는 게스트 운영체제일 수 있고, 제2 게스트 운영체제(322)는 예컨대 네비게이션 시스템을 제어하는 게스트 운영체제일 수 있다.
이와 같은 오토모티브 환경과 같이 게스트 운영체제의 개수가 비교적 제한적인 환경에서는, 앞서 설명한 본 발명의 다양한 실시예에 따른 반도체 장치(100)를 이용하여, 예컨대 공조 시스템용 제1 게스트 운영체제(312)와 네비게이션 시스템용 제2 게스트 운영체제(322)가 물리 디바이스(200)를 공유할 수 있도록, 구현 복잡도와 비용을 낮춘 전 가상화 기술을 제공할 수 있다.
나아가, 공조 시스템과 네비게이션 시스템, 그리고 반도체 장치(100)의 제조자가 다른 경우에, 공조 시스템과 네비게이션 시스템의 제조자는 반도체 장치(100) 또는 물리 디바이스(200)를 별도로 제조하지 않아도 되므로, 이에 대한 비용 절감의 효과도 발생할 수 있다.
그러나 주의할 점은, 본 실시예는 오로지 앞서 설명한 본 발명의 다양한 실시예에 따른 반도체 장치(100)의 예시적인 일 구현만을 설명한 것일 뿐이다. 본 발명의 다양한 실시예에 따른 반도체 장치(100)는 가상화 기술을 필요로 하는 임의의 장치 및 환경에 적용될 수 있음을 유의하여야 한다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 반도체 장치 110: 프로세서
120: SFR 130: 내부 메모리
140: DMA 200: 물리 디바이스
310, 312, 320, 322: 게스트 운영체제
400: 외부 메모리

Claims (10)

  1. 제1 게스트 운영체제 및 제2 게스트 운영체제에 물리 디바이스에 대한 가상화(virtualization) 기능을 제공하는 프로세서; 및
    상기 프로세서에 전기적으로 접속되고, 상기 제1 게스트 운영체제 및 상기 제2 게스트 운영체제에 각각 할당된 제1 영역 및 상기 제1 영역과 구분된 제2 영역을 포함하는 SFR(Special Function Register)을 포함하고,
    상기 제1 영역 및 상기 제2 영역에는 상기 제1 게스트 운영체제 및 상기 제2 게스트 운영체제로부터 각각 제공된 제1 입출력 요청 및 제2 입출력 요청에 관한 정보가 기록되고,
    상기 프로세서는, 상기 제1 입출력 요청 및 상기 제2 입출력 요청에 따라, 상기 제1 게스트 운영체제 및 상기 제2 게스트 운영체제에 각각 지정된 제1 인터럽트 및 제2 인터럽트를 생성하는 반도체 장치.
  2. 제1항에 있어서,
    상기 프로세서는,
    상기 물리 디바이스에 대해 상기 제1 입출력 요청을 처리한 후 상기 제1 인터럽트를 상기 제1 게스트 운영체제에 제공하고,
    상기 물리 디바이스에 대해 상기 제2 입출력 요청을 처리한 후 상기 제2 인터럽트를 상기 제2 게스트 운영체제에 제공하는 반도체 장치.
  3. 제1항에 있어서,
    상기 SFR의 상기 제1 영역에 상기 제1 입출력 요청에 관한 정보가 기록된 시점이, 상기 제2 영역에 상기 제2 입출력 요청에 관한 정보가 기록된 시점보다 앞선 경우, 상기 프로세서는 상기 제2 입출력 요청보다 상기 제1 입출력 요청을 먼저 처리하는 반도체 장치.
  4. 제3항에 있어서,
    상기 프로세서는 큐(queue)를 이용하여 상기 제1 입출력 요청 및 상기 제2 입출력 요청의 처리 우선순위를 결정하는 반도체 장치.
  5. 제4항에 있어서,
    상기 제1 입출력 요청은 상기 제2 입출력 요청보다 상기 큐에 먼저 삽입되는 반도체 장치.
  6. 제4항에 있어서,
    상기 제1 입출력 요청은 상기 제2 입출력 요청보다 상기 큐에서 먼저 삭제되고,
    상기 프로세서는,
    상기 물리 디바이스에 대해 상기 제1 입출력 요청을 처리하여 상기 제1 인터럽트를 상기 제1 게스트 운영체제에 제공한 후,
    상기 물리 디바이스에 대해 상기 제2 입출력 요청을 처리하여 상기 제2 인터럽트를 상기 제2 게스트 운영체제에 제공하는 반도체 장치.
  7. 제1 게스트 운영체제 및 제2 게스트 운영체제에 물리 디바이스에 대한 가상화(virtualization) 기능을 제공하는 프로세서;
    상기 프로세서에 전기적으로 접속되고, 상기 제1 게스트 운영체제 및 상기 제2 게스트 운영체제에 각각 할당된 제1 영역 및 상기 제1 영역과 구분된 제2 영역을 포함하는 SFR(Special Function Register); 및
    상기 SFR과 전기적으로 접속된 내부 메모리를 포함하고,
    상기 제1 영역에는 상기 내부 메모리에 대한 제1 어드레스가 기록되고,
    상기 제2 영역에는 상기 내부 메모리에 대한 상기 제1 어드레스와 다른 제2 어드레스가 기록되고,
    상기 내부 메모리의 상기 제1 어드레스로 액세스되는 영역에는 제1 입출력 요청에 관한 정보가 기록되고,
    상기 내부 메모리의 상기 제2 어드레스로 액세스되는 영역에는 제2 입출력 요청에 관한 정보가 기록되고,
    상기 프로세서는, 상기 제1 입출력 요청 및 상기 제2 입출력 요청에 따라, 상기 제1 게스트 운영체제 및 상기 제2 게스트 운영체제에 각각 지정된 제1 인터럽트 및 제2 인터럽트를 생성하는 반도체 장치.
  8. 제7항에 있어서,
    상기 내부 메모리의 상기 제1 어드레스로 액세스되는 영역에 상기 제1 입출력 요청에 관한 정보가 기록된 시점이, 상기 내부 메모리의 상기 제2 어드레스로 액세스되는 영역에 상기 제2 입출력 요청에 관한 정보가 기록된 시점보다 앞선 경우, 상기 프로세서는 상기 제2 입출력 요청보다 상기 제1 입출력 요청을 먼저 처리하는 반도체 장치.
  9. 제1 게스트 운영체제 및 제2 게스트 운영체제에 물리 디바이스에 대한 가상화(virtualization) 기능을 제공하는 프로세서;
    상기 프로세서에 전기적으로 접속되고, 상기 제1 게스트 운영체제 및 상기 제2 게스트 운영체제에 각각 할당된 제1 영역 및 상기 제1 영역과 구분된 제2 영역을 포함하는 SFR(Special Function Register); 및
    상기 SFR과 전기적으로 접속된 외부 메모리를 포함하고,
    상기 제1 영역에는 상기 외부 메모리에 대한 제1 어드레스가 기록되고,
    상기 제2 영역에는 상기 외부 메모리에 대한 상기 제1 어드레스와 다른 제2 어드레스가 기록되고,
    상기 외부 메모리의 상기 제1 어드레스로 액세스되는 영역에는 제1 입출력 요청에 관한 정보가 기록되고,
    상기 외부 메모리의 상기 제2 어드레스로 액세스되는 영역에는 제2 입출력 요청에 관한 정보가 기록되고,
    상기 프로세서는, 상기 제1 입출력 요청 및 상기 제2 입출력 요청에 따라, 상기 제1 게스트 운영체제 및 상기 제2 게스트 운영체제에 각각 지정된 제1 인터럽트 및 제2 인터럽트를 생성하는 반도체 장치.
  10. 제9항에 있어서,
    상기 외부 메모리의 상기 제1 어드레스로 액세스되는 영역에 상기 제1 입출력 요청에 관한 정보가 기록된 시점이, 상기 외부 메모리의 상기 제2 어드레스로 액세스되는 영역에 상기 제2 입출력 요청에 관한 정보가 기록된 시점보다 앞선 경우, 상기 프로세서는 상기 제2 입출력 요청보다 상기 제1 입출력 요청을 먼저 처리하는 반도체 장치.
KR1020180064071A 2018-06-04 2018-06-04 반도체 장치 KR102498319B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020180064071A KR102498319B1 (ko) 2018-06-04 2018-06-04 반도체 장치
US16/255,275 US11003474B2 (en) 2018-06-04 2019-01-23 Semiconductor device for providing a virtualization technique
CN201910240479.9A CN110554902B (zh) 2018-06-04 2019-03-27 用于提供虚拟化技术的半导体器件

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180064071A KR102498319B1 (ko) 2018-06-04 2018-06-04 반도체 장치

Publications (2)

Publication Number Publication Date
KR20190138031A KR20190138031A (ko) 2019-12-12
KR102498319B1 true KR102498319B1 (ko) 2023-02-08

Family

ID=68693946

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180064071A KR102498319B1 (ko) 2018-06-04 2018-06-04 반도체 장치

Country Status (2)

Country Link
US (1) US11003474B2 (ko)
KR (1) KR102498319B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140282514A1 (en) 2013-03-14 2014-09-18 Fusion-Io, Inc. Virtualization support for storage devices
US20170286325A1 (en) 2016-03-29 2017-10-05 Samsung Electronics Co .. Ltd. Method and system for defining logical block addressing (lba) access permission in storage devices

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8527673B2 (en) 2007-05-23 2013-09-03 Vmware, Inc. Direct access to a hardware device for virtual machines of a virtualized computer system
US9424211B2 (en) 2008-12-31 2016-08-23 Intel Corporation Providing multiple virtual device controllers by redirecting an interrupt from a physical device controller
US20120167082A1 (en) 2010-12-23 2012-06-28 Sanjay Kumar Direct sharing of smart devices through virtualization
JP5852677B2 (ja) 2011-12-26 2016-02-03 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation レジスタ・マッピング方法
KR101387986B1 (ko) * 2012-05-24 2014-04-22 성균관대학교산학협력단 가상화 장치
US10331589B2 (en) 2013-02-13 2019-06-25 Red Hat Israel, Ltd. Storing interrupt location for fast interrupt register access in hypervisors
US9632953B2 (en) 2014-06-03 2017-04-25 Qualcomm Incorporated Providing input/output virtualization (IOV) by mapping transfer requests to shared transfer requests lists by IOV host controllers
KR20160033517A (ko) 2014-09-18 2016-03-28 한국전자통신연구원 인터럽트 컨트롤러를 위한 하이브리드 가상화 방법
JP2016167143A (ja) * 2015-03-09 2016-09-15 富士通株式会社 情報処理システムおよび情報処理システムの制御方法
CN107918613B (zh) * 2016-10-08 2022-01-21 上海宝存信息科技有限公司 因应服务质量的固态硬盘访问方法以及使用该方法的装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140282514A1 (en) 2013-03-14 2014-09-18 Fusion-Io, Inc. Virtualization support for storage devices
US20170286325A1 (en) 2016-03-29 2017-10-05 Samsung Electronics Co .. Ltd. Method and system for defining logical block addressing (lba) access permission in storage devices

Also Published As

Publication number Publication date
US11003474B2 (en) 2021-05-11
US20190370041A1 (en) 2019-12-05
KR20190138031A (ko) 2019-12-12
CN110554902A (zh) 2019-12-10

Similar Documents

Publication Publication Date Title
US8151275B2 (en) Accessing copy information of MMIO register by guest OS in both active and inactive state of a designated logical processor corresponding to the guest OS
CN100592271C (zh) 使用集成dma引擎进行高性能易失性磁盘驱动器存储器访问的装置和方法
US10860332B2 (en) Multicore framework for use in pre-boot environment of a system-on-chip
US10133504B2 (en) Dynamic partitioning of processing hardware
US9052835B1 (en) Abort function for storage devices by using a poison bit flag wherein a command for indicating which command should be aborted
US9395919B1 (en) Memory configuration operations for a computing device
US9721104B2 (en) CPU-based measured boot
US9542112B2 (en) Secure cross-process memory sharing
US20200133878A1 (en) Secure memory access in a virtualized computing environment
CN112783600A (zh) 中断处理方法、中断管理器、电子设备、计算机可读介质
WO2019085811A1 (zh) 一种实现驱动的系统及方法
JP7470685B2 (ja) 集積回路中の算出ユニットをプログラムおよび制御すること
US10853284B1 (en) Supporting PCI-e message-signaled interrupts in computer system with shared peripheral interrupts
US20210349734A1 (en) Hypervisor Removal
CN114116024A (zh) 面向嵌入式操作系统的外设驱动处理方法、虚拟机及系统
KR102498319B1 (ko) 반도체 장치
CN111625281A (zh) 一种数据处理方法、装置、设备及存储介质
US11385927B2 (en) Interrupt servicing in userspace
CN110554902B (zh) 用于提供虚拟化技术的半导体器件
US20200192721A1 (en) Configurable peripherals
US9952895B2 (en) Implementing pseudo non-masking interrupts behavior using a priority interrupt controller
CN118034958A (zh) 一种多进程场景的任务状态通知系统及方法
JP7431791B2 (ja) ストレージシステム及びデータ処理方法
US10860397B1 (en) Communication of data between software applications
TW201317781A (zh) 虛擬機器記憶體的分享方法與電腦系統

Legal Events

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