CN103365630A - 半导体设备 - Google Patents

半导体设备 Download PDF

Info

Publication number
CN103365630A
CN103365630A CN2013101090759A CN201310109075A CN103365630A CN 103365630 A CN103365630 A CN 103365630A CN 2013101090759 A CN2013101090759 A CN 2013101090759A CN 201310109075 A CN201310109075 A CN 201310109075A CN 103365630 A CN103365630 A CN 103365630A
Authority
CN
China
Prior art keywords
program
virtual machine
instruction
semiconductor equipment
instruction code
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
CN2013101090759A
Other languages
English (en)
Other versions
CN103365630B (zh
Inventor
安达浩次
铃木均
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Publication of CN103365630A publication Critical patent/CN103365630A/zh
Application granted granted Critical
Publication of CN103365630B publication Critical patent/CN103365630B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Debugging And Monitoring (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本发明公开了一种半导体设备。该半导体设备包括:指令解码器,其解码指令代码,并由此产生指令信息;执行单元,其通过管线处理基于指令信息执行操作;以及管线控制单元,其控制要在管线处理中处理的指令代码的顺序,其中管线控制单元包括用来为每个虚拟机定义存在/不存在执行第一特权程序的权限的寄存器,该第一特权程序要在一个虚拟机上执行,管线控制单元参考该寄存器,并且当发出关于第一特权程序的指令代码的虚拟机具有执行第一特权程序的权限时,管线控制单元基于第一特权程序的操作,指令执行单元基于关于第二特权程序的指令代码执行处理。

Description

半导体设备
相关申请的交叉引用
本申请基于2012年3月30日提交的日本专利申请No.2012-082324,并要求其优先权,其全部公开作为参考包括在这里。
技术领域
本发明涉及一种半导体设备。例如,本发明涉及一种能够通过管线处理并行执行多个程序的半导体设备。
背景技术
近年来,在半导体设备中,已经提出了若干个能够在单个处理器中执行多个程序的多线程处理器。这样的多线程处理器包括多个线程,每个线程生成独立的指令流。同时,有一种称为“虚拟化”的技术,它使一个硬件设备看起来像是多个硬件设备。这种虚拟化技术是通过在OS(操作系统)和硬件(处理器或IO)之间插入一种称为“VMM(虚拟机监视器)”或“超级管理员程序”的管理软件程序实现的。图20示出了应用虚拟化技术的系统的层次结构。图20示出应用了虚拟化技术的系统的体系结构。如图20所示,应用虚拟化技术的系统具有这种配置:超级管理员程序(hypervisor program)插入在硬件和OS之间。当逻辑地定义的多个虚拟机操作在多线程处理器中时,线程被分配给多个虚拟机中的一个。此外,在多线程处理器中,通过在硬件线程上执行虚拟机实现虚拟机的并行执行。图21示出了虚拟机和线程之间的对应关系。在图21中示出的示例中,两个线程被分配给虚拟机VM0至VM2的每一个。
此外,根据要存取的资源的重要性,对要在处理器中执行的一个或多个程序定义特权等级。此外,通过包括开发管理、编程和检验的多个因素确定软件的质量。此外,在要在处理器上执行的程序中,要求高可靠性等级的一个或多个程序在严格管理下开发,以便可以详细掌握它的操作。也就是,程序的可靠性等级是基于开发该程序的开发过程的类型决定的。此外,例如,进行控制,以便许可具有高可靠性等级的程序存取要求高特权等级的资源,但是不许可具有低可靠性等级的程序进行存取。
然而,即使在这样的处理器中,响应于来自为其定义了低特权等级的用户应用或客户OS的请求,有必要为要求高特权等级的资源针对其存取执行处理。在这种情况下,响应于来自用户应用或客户OS的请求,处理器启动超级管理员程序,并通过该超级管理员程序执行请求的处理。结果,当为其存取从用户应用或客户OS请求了对要求高特权等级存取的资源的存取时,处理需要花费时间来切换程序,由此造成了处理器处理性能降低的问题。
因此,日本未审专利申请公布No.2005-56017公开了一种减少切换程序所要求时间的技术。在日本未审专利申请公布No.2005-56017中,处理器具有客户OS的特权寄存器。然后,当发生对要求高可靠性资源的存取时,只要客户OS的处理单独可以满足请求,不启动超级管理员程序,就能完成处理。通过这种方式,在日本未审专利申请公布No.2005-56017中公开的技术降低了启动超级管理员程序的频率。
发明内容
然而,本发明人已经发现了以下问题。在多线程处理器上运行的多个虚拟机中,这些虚拟机的多个可以并行操作。因此,当发生定义为高特权等级的超级管理员程序存取时,所有虚拟机的操作必须暂时停止。因此,当频繁发生要求超级管理员程序执行处理的存取时,会频繁地发生虚拟机之间的干扰,由此妨碍其他虚拟机的操作。注意,日本未审专利申请公布No.2005-56017公开的技术涉及用单线程操作的处理器,其中多个虚拟机从不并行操作。因此,这种技术不能解决虚拟机之间的干扰问题。
本发明的第一方面是一种半导体设备,其中定义了多个虚拟机,每个虚拟机都发出属于对应于程序的指令流的指令代码,该半导体设备包括:指令解码器,其解码指令代码,由此产生指令信息;执行单元,其通过管线处理,基于指令信息进行操作;以及管线控制单元,其控制在管线处理中要处理的指令代码的顺序,其中:管线控制单元包括用来为每个虚拟机定义存在/不存在执行第一特权程序的权限的寄存器,该第一特权程序要在一个虚拟机上执行;以及管线控制单元参考该寄存器,并且当已经发出关于第一特权程序的指令代码的虚拟机具有执行第一特权程序的权限时,基于第一特权程序的操作,指令执行单元基于关于第二特权程序的指令代码执行处理。
本发明的另一方面是一种半导体设备,其进行处理,同时在通过多个虚拟机并行执行程序的虚拟机模式和通过独占使用执行单元的执行时间执行程序的本机模式之间切换操作模式,其中半导体设备以虚拟机模式执行:用户程序,具有用户特权等级,对特定硬件资源的存取限于半导体设备内部的硬件资源之中;管理员程序,其管理用户程序;以及超级管理员存根程序,具有超级管理员特权等级,其响应于来自管理员程序的调用而运行,并且许可其存取包括特定硬件资源的硬件资源,为管理员程序定义存在/不存在执行用来调用超级管理员存根程序的第一指令代码的权限,以及响应于来自许可执行第一指令代码的管理员程序的调用,启动超级管理员存根程序,通过执行第二指令代码调用超级管理员程序,并将操作模式改变为本机模式。
根据本发明一方面的半导体设备,通过参考寄存器,确定已调用在一个虚拟机上运行的第一特权程序的程序是否具有执行第一特权程序的权限。然后,仅当虚拟机具有执行第一特权程序的权限时,半导体设备执行第二特权程序。结果,该半导体设备可以防止第二特权程序被频繁调用,由此防止了由于虚拟机之间的干扰造成的其它虚拟机处理性能降低。
根据本发明一方面的半导体设备,可以防止由于一个虚拟机的操作造成其它虚拟机处理性能降低。
附图说明
结合附图,由下面某些实施例的描述,上述和其它方面、优点和特征将变得更明显,其中:
图1是根据第一实施例的半导体设备的方框图;
图2是根据第一实施例的管线控制单元的方框图;
图3是根据第一实施例的虚拟机控制电路的方框图;
图4是根据第一实施例的半导体设备的一组虚拟机设置寄存器的示意图;
图5是根据第一实施例的虚拟机设置寄存器的示例;
图6是根据第一实施例的虚拟机设置寄存器的示例;
图7是示出根据第一实施例的虚拟机控制电路的操作的时序图;
图8是根据第一实施例的线程调度器的方框图;
图9是示出根据第一实施例的线程调度器的操作的流程图;
图10示出了在根据第一实施例的半导体设备中许可执行的指令的示例和在执行许可的指令时发生的软件层上的状态转换的示例;
图11是示出当在根据第一实施例的半导体设备中执行HVTRAP指令时进行的管线控制单元的操作的流程图;
图12是示出通过根据第一实施例的半导体设备中的HVCALL指令启动超级管理员存根程序的过程的流程图;
图13是示出根据第一实施例的半导体设备中超级管理员存根程序的操作流程图;
图14是示出根据第一实施例的半导体设备的操作的顺序图;
图15是示出当在根据第一实施例的半导体设备中发生对超级管理员程序的未授权调用时进行操作的顺序图;
图16是示出当在根据第一实施例的半导体设备中发生对超级管理员存根程序的未授权调用时进行的操作的顺序图;
图17是示出当在根据第一实施例的半导体设备中在没有赋予执行权限的虚拟机中发生对超级管理员存根程序或超级管理员程序的调用时进行的操作的顺序图;
图18是示出根据第一实施例的不包括管线控制单元的处理器的操作的顺序图;
图19是根据第二实施例的半导体设备的一组虚拟机设置寄存器的示意图;
图20示出了在采用虚拟化技术的半导体设备中实现的软件层的示例;以及
图21示出了在采用虚拟化技术的半导体设备中的线程和虚拟机之间的对应关系。
具体实施方式
第一实施例
在下文中参考附图说明实施例。首先,在根据实施例的半导体设备中,通过虚拟机进行信息处理。通常,虚拟机实现为软件功能的一部分。然而,在根据实施例的半导体设备中,实现用虚拟机进行程序执行,作为硬件的一个功能。如上所述,作为硬件的一个功能,实现用虚拟机执行程序的处理器称为“硬件多线程处理器”。此外,下面示出的实施例是通过利用硬件多线程处理器作为半导体设备的示例说明的。然而,实施例并不限于硬件多线程处理器。也就是,它们可以应用于能够并行执行多个线程的任何处理器。
图1示出了根据本发明的第一实施例的半导体设备1的方框图。如图1所示,半导体设备1包括处理器元件PE、数据存储器和总线BUS。此外,在半导体设备1中,处理器元件PE和包括数据存储器的外围装置通过总线BUS相互连接。注意,虽然在图1中作为外围装置仅示出了数据存储器,不必说,该半导体设备还包括例如定时器的其他外围装置(未示出)。
处理器元件PE包括程序计数器10、选择器11、指令存储器12、指令缓存器13、指令解码器14、管线控制单元15和执行单元16。
程序计数器10包括线程程序计数器10a至10d。每个线程程序计数器10a至10d生成程序计数器值,指示要从指令存储器12提取到指令缓存器13的指令代码的存储位置。由于根据第一实施例的半导体设备1包括四个硬件线程,所以在图1中的程序计数器10中示出了四个线程程序计数器。注意,每个线程程序计数器10a至10d根据指令提取控制信号IFC递增或改变程序计数器值。
选择器11根据指令提取控制信号IFC选择由线程程序计数器10至10d产生的程序计数器值中的一个,并向指令存储器12输出选择的程序计数器值。指令存储器12向指令缓存器13输出存储在对应于从选择器11输出的程序计数器值的区域中的指令代码。
指令缓存器13包括四个指令缓存器13a至13d,其对应于要在半导体设备1中执行的四个线程。此外,指令缓存器13根据指令解码控制信号IDC,将从指令存储器12输出的指令代码存储到指令缓存器13a至13d的一个中。此外,指令缓存器13输出管线状态信号PST1,其包括指示存储的指令代码的状态的信息。注意,指令缓存器13a至13d中的每个是FIFO(先入先出)型存储器。
半导体设备1利用程序计数器10、选择器11和指令缓存器13生成四个独立的指令流。像上述配置一样,用于生成独立指令流的电路配置称为“硬件线程”。此外,在半导体设备1中,多个硬件线程逻辑地分配给虚拟机,通过这样做,定义了多个虚拟机。也就是,在根据第一实施例的半导体设备1中定义的多个虚拟机的每个都发出属于对应于程序的指令流的指令代码。
指令解码器14解码指令代码,由此产生指令信息。更具体地,指令解码器14根据线程选择信号TSEL,从指令缓存器13a至13d中的一个读出指令代码,通过解码读出的指令代码,产生指令信息,并输出产生的指令信息作为解码结果DR。
管线控制单元15控制要在管线处理中处理的指令代码的顺序。更具体地,管线控制单元15基于解码结果DR向执行单元16发出具体操作指令(例如,输出执行单元控制信号EUC)。此外,根据从指令缓存器13输出的管线状态信号PST1、从执行单元16输出的管线状态信号PTS2和指令执行信息EXR,管线控制单元15产生线程选择信号TSEL、指令解码控制信号IDC和指令提取控制信号IFC。注意,管线状态信号指示通过管线处理的指令的执行状态,并且包括关于存在/不存在发生高速缓存误击的信息、关于存在/不存在发生异常处置的信息、关于满足/不满足分支条件的信息等。
此外,管线控制单元15包括用来定义存在/不存在要执行对于每个虚拟机来说在一个虚拟机上执行的第一特权程序(例如,超级管理员存根程序)的权限的一个或多个寄存器。此外,管线控制单元15参考该寄存器,并且当已经发出关于超级管理员存根程序的指令代码的虚拟机具有执行超级管理员存根程序的权限时,基于超级管理员存根程序的操作,指令执行单元16基于关于超级管理员程序的指令代码进行处理。注意,在分配给一个虚拟机的执行时间内执行超级管理员存根程序,并且通过独占性使用执行单元16的执行时间,执行该超级管理员程序。
另一方面,当已经发出关于超级管理员存根程序的指令代码的虚拟机不具有执行第一特权程序的权限时,管线控制单元15确定在已经发出关于超级管理员存根程序的指令代码的虚拟机中已经产生执行权限异常。然后,管线控制单元15指令已经发出关于超级管理员存根程序的指令代码的虚拟机进行异常处置。具体地,通过输出指令解码控制信号IDC、指令提取控制信号IFC等,管线控制单元15指令执行异常处置,作为用于客户OS(操作系统)的处理。注意,客户OS的细节将在后面描述。
此外,根据第一实施例的管线控制单元15的一个或多个寄存器包括用来为每个虚拟机定义存在/不存在执行超级管理员程序的权限的一个或多个值。此外,管线控制单元15参考该寄存器,并且当发出关于超级管理员程序的指令代码的虚拟机具有执行超级管理员程序的权限时,指令执行单元16基于指令代码执行处理,以便继续超级管理员程序的操作。
另一方面,当发出关于超级管理员程序的指令代码的虚拟机不具有执行超级管理员程序的权限时,管线控制单元15确定在发出关于超级管理员程序的指令代码的虚拟机中出现执行权限异常。然后,管线控制单元15指令发出关于超级管理员程序的指令代码的虚拟机进行异常处置。具体地,管线控制单元15,通过输出指令解码控制信号IDC、指令提取控制信号IFC等,指令执行作为用于客户OS的处理的异常处置。
将在后面进行管线控制单元15的更详细的说明。
执行单元16通过管线处理基于指令信息进行操作。在图1所示的示例中,执行单元16包括寄存器文件161、运算单元162、系统控制指令执行单元163和加载存储单元164。
在寄存器文件161中,存储在运算单元162中执行操作时使用的数据。寄存器文件161包括对于每个硬件线程的独立数据存储区。注意,在寄存器文件161中,写数据的位置和读数据的位置根据寄存器控制信号RFC来指定。
运算单元162基于从管线控制单元15输出的执行单元控制信号EUC执行操作。运算单元162进行各种操作,包括加、减、乘和除。此外,运算单元162利用写反馈信号WB将运算结果写入到寄存器文件161中。此外,运算单元162输出指示指令执行状态的管线状态信号PST2。
当执行单元控制信号EUC是关于系统控制指令的执行指令时,系统控制指令执行单元163基于执行单元控制信号EUC进行处理。例如,系统控制指令执行单元163执行关于某些指令的处理,如HVTRAP指令和HVCALL指令,这些是对具有特权等级的程序的调用指令。此外,系统控制指令执行单元163输出处理结果,作为指令执行信息EXR。该指令执行信息EXR是指示执行的指令时何种类型的处理的信号。例如,指令执行信息EXR包括:指示已经发出处理的指令的虚拟机的虚拟机标识符、指示已经执行了HVTRAP指令的HVTRAP指令信号,指示已经执行了HVCALL指令的HVCALL指令信号、以及指示被HVCALL指令调用的超级管理员存根程序的执行状态的HV存根执行状态信号。此外,系统控制指令执行单元163输出指示指令执行状态的管线状态信号PST2。注意,HVTRAP指令是调用超级管理员程序的指令,HVCALL指令是调用超级管理员存根程序的指令。
加载存储单元164,基于执行单元控制信号EUC,执行用于从例如数据存储器的其他存储器读出数据的处理(例如,加载处理),并且执行用于向例如数据存储器的其他存储器中写入在寄存器文件中存储的数据的处理(例如,存储处理)。此外,加载存储单元164输出指示指令执行状态的管线状态信号PST2。
当超级管理员程序模仿由用户程序(例如,用户应用)或客户OS指令的存取时,根据第一实施例的半导体设备1通过超级管理员存根程序启动超级管理员程序。
根据第一实施例的半导体设备1确定通过执行超级管理员存根程序调用超级管理员存根程序的调用方程序的有效性。然后,当由调用方程序指令的请求有效时,基于超级管理员存根程序的操作,管线控制单元15指令执行单元16基于关于超级管理员程序的指令代码执行处理。
此外,根据第一实施例的半导体设备1,通过超级管理员存根程序的操作,监视其它虚拟机(例如,除了发出关于超级管理员存根程序的指令代码的虚拟机之外的虚拟机)的操作。此外,管线控制单元15基于相关超级管理员程序的指令代码延迟指令执行单元16执行处理,直到其他虚拟机的操作可以被停止的状态。
接下来,详细说明管线控制单元15。图2示出了管线控制单元15的方框图。如图2所示,管线控制单元15包括虚拟机控制电力20、线程调度器21和管线控制信号产生电路22。
虚拟机控制电路20控制定义在处理器元件PE上的虚拟机的操作状态。更具体地,虚拟机控制电路20输出信号S1至S5,指示是否在多个虚拟机中的一个中启动了HVCALL指令或HVTRAP指令的执行。此外,虚拟机控制电路20输出信号S6,指示处理器元件PE处于虚拟机模式还是本机模式,在虚拟机模式中,一个或多个程序通过多个虚拟机并行地执行;在本机模式中,以独自使用执行单元16的执行时间的方式执行程序。后面将说明虚拟机控制电路20的细节。注意,在下面的说明中,信号S1代表虚拟机标识符;信号S2代表HVCALL执行通知信号;信号S3代表HVTRAP执行通知信号;信号S4代表HVCALL执行权限异常信号;信号S5代表HVTRAP执行权限异常信号;以及信号S6代表实体机操作信号。
线程调度器21调度要从多个硬件线程放入执行单元16的指令。更具体地,线程调度器21基于实体机操作信号S6、预先定义在线程调度器21内的调度和管线状态信号PST(包括管线状态信号PST1和PST2的信号),确定应该将下一条指令代码发送到执行单元16的硬件线程。然后,线程调度器21输出指示确定的硬件线程的线程选择信号TSEL。
管线控制信号产生电路22,基于线程选择信号TSEL、管线状态信号PST、虚拟机标识符S1、HVCALL执行通知信号S2、HVTRAP执行通知信号S3、HVCALL执行权限异常信号S4、HVTRAP执行权限异常信号S5、解码结果DR等,控制管线。当管线控制信号产生电路22控制管线时,管线控制信号产生电路22生成指令提取控制信号IFC、指令解码控制信号IDC、寄存器控制信号RFC和执行单元控制信号EUC。指令提取控制信号IFC是指定提取下一条指令代码的硬件线程的信号。指令解码控制信号IDC是指定要放入管线的下一条指令代码的信号。寄存器控制信号RFC是指示在寄存器文件中的当存储执行单元16执行操作时使用的值的存储位置和在寄存器文件中写入计算值的位置的信号。执行单元控制信号EUC是指示在执行单元16中执行哪种处理的信号。
接下来,说明虚拟机控制电路20的细节。图3示出了虚拟机控制电路20的详细方框图。如图3所示,虚拟机控制电路20包括虚拟机控制寄存器组30、选择器31、OR电路32和34、AND电路33和35、ExOR电路36和37以及虚拟机操作信号产生电路38。
虚拟机控制寄存器组30包括多个寄存器(在下文中称为“虚拟机控制寄存器”),用来为每个虚拟机定义执行第一特权程序(例如,超级管理员存根程序)的权限和执行第二特权程序(例如,超级管理员程序)的权限。此外,虚拟机控制寄存器包括虚拟机允许标志和HV特权标志,对于每个虚拟机,虚拟机允许标志指示该虚拟机的操作应该被允许或不允许,HV特权标志指示对于该虚拟机是否应该许可对仅可通过超级管理员程序操作的资源的存取。虚拟机控制寄存器组30的细节将在后面说明。
选择器31根据虚拟机标识符选择多个虚拟机控制寄存器中的一个,并输出存储在该选择的虚拟机控制寄存器中的一个或多个值。注意,虚拟机标识符是包括在指令执行信息EXR中的信号。
OR电路32输出包括在虚拟机控制寄存器中的HVCALL许可标志HVCE和HV特权标志HVP之间的逻辑和运算结果。AND电路33输出OR电路32的输出和HVCALL指令信号之间的逻辑乘运算结果。然后,AND电路33的输出成为HVCALL执行通知信号S2。注意,当HVCALL许可标志HVCE处于允许状态(例如,“1”)并且HVCALL指令信号变为执行通知状态(例如,“1”)时,HVCALL执行通知信号S2指示执行状态(例如,“1”)。然而,在HV特权标志HVP处于禁止状态(例如,“0”)且HVCALL许可标志HVCE处于禁止状态(例如,“0”)的状态下,即使HVCALL指令信号变为执行通知状态(例如,“1”)时,HVCALL执行通知信号S2也指示非执行状态(例如,“0”)。
OR电路34输出包括在虚拟机控制寄存器中的HVTRAP许可标志HVTE、HV特权标志HVP和HV存根执行状态信号的逻辑和运算结果。AND电路35输出OR电路34的输出和HVTRAP指令信号之间的逻辑乘运算结果。然后,AND电路33的输出成为HVTRAP执行通知信号S3。注意,当HVTRAP许可标志HVTE处于允许状态(例如,“1”)并且HVTRAP指令信号变为执行通知状态(例如,“1”)时,HVTRAP执行通知信号S3指示执行状态(例如,“1”)。
然而,在HV特权标志HVP处于禁止状态;HVTRAP许可标志HVTE处于禁止状态(例如,“0”);并且HV存根执行状态信号是非执行状态(例如,“0”)的状态下,即使HVTRAP指令信号变为执行通知状态(例如,“1”)时,HVTRAP执行通知信号S3也指示非执行状态(例如,“0”)。
此外,在HV特权标志HVP处于禁止状态(例如,“0”)且HVTRAP许可标志HVTE处于禁止状态(例如,“0”)的状态下,当HV存根执行状态信号是执行状态(例如,“1”)时,即使HVTRAP指令信号处于非执行通知状态(例如,“0”),HVTRAP执行通知信号S3也指示执行状态(例如,“1”)。也就是,当客户OS发出HVTRAP指令,或者当客户OS发出使超级管理员存根程序执行的HVCALL指令时,作为HVTRAP指令执行的结果,HVTRAP执行通知信号S3变为执行状态。
ExOR电路36输出HVCALL执行信号和HVCALL执行通知信号S2之间的异或操作结果,作为HVCALL执行权限异常信号S4。也就是,当没有执行HVCALL指令权限的虚拟机执行HVCALL指令时,HVCALL执行权限异常信号S4变为允许状态(例如,“1”)。ExOR电路37输出HVTRAP执行信号和HVTRAP执行通知信号S3之间的异或操作结果,作为HVTRAP执行权限异常信号S5。也就是,当没有执行HVTRAP指令权限的虚拟机执行HVTRAP指令时,HVTRAP执行权限异常信号S5变为允许状态(例如,“1”)。
基于HVTRAP执行通知信号S3和包括在虚拟机控制寄存器组30中的虚拟机控制寄存器中的单线程操作位MT,虚拟机操作信号产生电路38产生实体机操作信号S6。注意,将在后面说明单线程操作位MT的细节。
注意,实体机操作信号S6是当虚拟机处于禁止状态并且执行单元16的执行时间被硬件线程之一独占使用时变为允许状态(例如,“1”)的信号。例如,在根据第一实施例的半导体设备1中,当执行超级管理员程序时,实体机操作信号S6变为允许状态。
接下来,详细说明虚拟机控制寄存器组30。图4示出了包括在虚拟机控制寄存器组30中的虚拟机控制寄存器的示意图。如图4所示,根据要定义的虚拟机的数目,确定虚拟机控制寄存器组30中提供的虚拟机控制寄存器的数目。在图4所示的示例中,每一个虚拟机使用两个寄存器。此外,每个虚拟机控制寄存器包括虚拟机允许标志EN、HV特权标志HVP、HVTRAP许可标志HVTE和HVCALL许可标志VHCE。对于每个标志,当其值是1时,指示该标志处于允许状态,而当其值为0时,指示该标志处于禁止状态。
此外,在根据第一实施例的半导体设备1中,图4示出的虚拟机控制寄存器被实现为存储其它设置的寄存器的一部分。在下文中说明虚拟机控制寄存器的示例。图5示出了寄存器的示意图,其中,在虚拟机控制寄存器的设置值中,存储了虚拟机允许标志EN。
图5中示出的寄存器具有32位数据区。此外,在图5所示的寄存器中,虚拟机允许标志EN存储在第31位的域中。此外,当处理器具有HV特权(例如,超级管理员特权)并且处理器处于处理器执行关于虚拟机的信息组(例如,虚拟机环境VC(virtual machine context VC))的处理的模式中时,许可对虚拟机允许标志EN进行写或读。此外,当处理器具有HV特权(例如,超级管理员特权)并且处理器操作处于处理器执行虚拟机环境VC的处理的模式之外的其它模式中时,仅许可读虚拟机允许标志EN。此外,在关于处理器的整体操作的信息组(例如,本机环境)中,虚拟机允许标志EN的初始值是1,并且在虚拟机环境中初始值是0。
此外,在图5所示的寄存器中,多线程操作位MT存储在第30位的域中。无论处理器是否具有HV特权(例如,超级管理员特权),该多线程操作位MT都许可写和读。此外,当处理器从虚拟机模式变成本机模式时,多线程操作位MT从1重新写入为0,并且当处理器从本机模式变成虚拟机模式时,多线程操作位MT从0重新写入为1。此外,基于在处理器上运行的程序的操作,进行多线程操作位MT的重新写入。注意,图5中示出的寄存器包括其他设置值。然而,由于其对虚拟机控制电路20的操作没有任何直接影响,这里省略了它们的说明。
此外,图6示出了寄存器的示意图,其中,在虚拟机控制寄存器的设置值中,存储了HV特权标志HVP、HVCALL许可标志HVCE和HVTRAP许可标志HVTE。图6中示出的寄存器具有32位数据区。此外,在图6所示的寄存器中,HV特权标志HVP存储在第二位的域中,并且HVCALL许可标志HVCE存储在第一位的域中。此外,HVTRAP许可标志HVTE存储在第0位的域中。此外,当处理器具有HV特权并且处理器处于处理器执行虚拟机环境VC的处理的模式中时,许可这些标志的写和读。此外,当处理器具有HV特权,并且处理器处于处理器执行虚拟机环境VC的处理的模式之外的模式中时,仅许可这些标志的读操作。在涉及整个处理器操作的信息组(例如,本机环境)中,这些标志的初始值是1,而在虚拟机环境中初始值是0。注意,图6中示出的寄存器包括其他设置值。然而,由于其对虚拟机控制电路20的操作没有任何直接影响,这里省略了它们的说明。
通过配置寄存器,使得仅具有超级管理员特权的一个或多个程序可以重新写入图5和6中所示的虚拟机控制寄存器的值,能够提高这些设置值的可靠性。
在下文中将更详细地说明根据第一实施例的虚拟机控制电路20的操作。图7示出了示出根据第一实施例的虚拟机控制电路20的操作的时序图。首先,图7示出了基于虚拟机控制寄存器操作处理器的示例,在虚拟机控制寄存器中:HV特权标志HVP处于禁止状态;HVCALL许可标志HVCE处于允许状态;以及HVTRAP许可标志HVTE处于禁止状态(即,对应于图4中示出的虚拟机VM0的虚拟机控制寄存器)。
在图7所示的示例中,HVCALL指令信号在T1时刻变为执行通知状态。此外,响应于HVCALL指令信号向执行通知状态的改变,虚拟机控制电路20使HVCALL执行通知信号S2进入到执行状态。此外,响应于在T1时刻执行的HVCALL指令,在T2时刻和随后的时刻上执行超级管理员存根程序。结果,在T2时刻HV存根执行状态信号变为执行状态。
然后,在T3时刻,在超级管理员存根程序中执行HVTRAP指令。结果,在T3时刻,HVTRAP指令信号变为执行通知状态。在这一点上,在图7所示的示例中,HV存根执行状态信号在T3时刻保持在执行通知状态。因此,响应于HVTRAP指令信号向执行通知状态的改变,不管HVTRAP许可标志HVTE的值是多少,使HVTRAP执行通知信号S3进入执行状态。
然后,响应于HVTRAP指令的执行,在T4时刻,超级管理员程序将多线程操作位MT从1重新写入为0。结果,处理器操作在本机模式,直到多线程操作位NT重新写入为1。此外,响应于HVTRAP执行通知信号S3向执行状态的改变,这产生在T3时刻和T4时刻之间,在T4时刻,虚拟机控制电路20使实体机操作信号S6进入允许状态。
然后,在T4时刻启动的超级管理员程序将多线程操作位MT重新写入为1,由此在T5时刻完成操作。此外,响应于多线程操作位MT从1重新写入为0,虚拟机操作信号产生电路38使实体机操作信号S6进入禁止状态。之后,在T6时刻,响应于超级管理员存根程序的操作完成,使HV存根执行状态信号进入非执行通知状态。
接下来,详细说明线程调度器21。图8示出线程调度器21的方框图。如图8所示,线程调度器21包括操作线程选择电路40、虚拟机/线程对应表41和调度提示42。
虚拟机/线程对应表41,例如,可以存储在处理器元件PE的内部存储器或一个或多个寄存器中。虚拟机/线程对应表41是示出虚拟机和硬件线程之间的对应关系的表格。
调度提示42,例如,可以存储在处理器元件PE的内部存储器或一个或多个寄存器中。调度提示42是定义产生要在执行单元16中执行的指令代码的硬件线程、应该优先处理的硬件线程等的顺序的信息。也就是,在根据第一实施例的半导体设备1中,基于调度提示42和在虚拟机/线程对应表41中指定的对应关系,定义由虚拟机执行的硬件线程。例如,在由本申请的申请人提交的日本专利申请No.2008-252232中,示出了该调度提示42的示例性实施例。
基于实体机操作信号S6、管线状态信号PST1和PST2、虚拟机/线程对应表41和调度提示42,操作线程选择电路40产生线程选择信号TSEL,其指令发出下一条指令代码的硬件线程。图9是示出操作线程选择电路40的更具体操作的流程图。
如图9所示,通过参考实体机操作信号S6,操作线程选择电路40确定处理器元件PE是否操作在虚拟机模式或本机模式(步骤ST1)。然后,当在步骤ST1中确定处理器元件PE操作在本机模式时,通过参考虚拟机/线程对应表41,操作线程选择电路40选择要执行的硬件线程(步骤ST2)。
另一方面,当在步骤ST1中确定处理器元件PE操作在虚拟机模式时,操作线程选择电路40确定是否存在调度提示42(步骤ST3)。然后,当在步骤ST3中确定存在调度提示42时,通过参考调度提示42和虚拟机/线程对应表41,操作线程选择电路40选择要执行的硬件线程(步骤ST4)。
另一方面,当在步骤ST3中确定没有调度提示42时,基于管线状态信号PST,操作线程选择电路40选择具有最佳执行效率的硬件线程(步骤ST5)。
接下来,说明根据第一实施例的半导体设备1的操作。在下面的说明中,具体地,说明超级管理员存根程序的调用处理,这是根据本发明的第一实施例的半导体设备1的特征之一。
首先,图10示出了,在虚拟机控制寄存器具有图4所示的设置的情况下,在根据第一实施例的半导体设备中许可执行的指令的示例,以及在许可的指令执行时产生的软件层上的状态转换的示例。如图10所示,半导体设备1执行:在一个虚拟机上运行的用户程序,管理用户程序的管理员程序(例如,客户OS),在一个虚拟机上运行且响应于来自管理员程序的调用运行的超级管理员存根程序,以及管理多个管理员程序的超级管理员程序。注意,在根据第一实施例的半导体设备1中,超级管理员存根程序对应于第一特权程序,超级管理员程序对应于第二特权程序。
此外,在半导体设备1中,超级管理员程序在本机模式下执行,并且超级管理员存根程序、客户OS和应用程序在虚拟机模式下执行。此外,半导体设备1当执行应用程序时操作在用户模式,当执行客户OS时操作在管理特权等级,并且当执行超级管理员存根程序和超级管理员程序时操作在超级管理员特权等级。注意,关于操作模式的可靠性,对用户模式比对管理特权等级要确保更高的可靠性。此外,对管理特权等级比对超级管理员特权等级要确保更高的可靠性。
此外,在图4所示的寄存器设置示例中,半导体设备1利用三个虚拟机VM0至VM2进行处理。因此,如图10所示,在半导体设备1中,在虚拟机模式中虚拟机VM0至VM2彼此独立地进行处理。
此外,在根据第一实施例的半导体设备1中,当发生从应用程序对资源的存取需要超级管理员特权时,通过执行HVTRAP指令或HVCALL指令,调用超级管理员程序。在这个过程中,在半导体设备1中,基于来自应用程序的存取请求,客户OS发出HVTRAP指令或HVCALL指令。
在根据图4中示出的寄存器设置示例操作的半导体设备1中,能够根据虚拟机的可靠性确定调用超级管理员程序的方法。例如,在图10所示的示例中,HVTRAP指令许可标志HVTE和HVCALL指令许可标志HVCE两者都设置为允许状态的虚拟机VM1具有最高可靠性。此外,基于许可标志设置,许可虚拟机VM1的客户OS执行HVCALL指令和HVTRAP指令。此外,虚拟机VM1的客户OS可以利用HVTRAP指令直接调用超级管理员程序,而不用通过执行HVTRAP指令调用超级管理员存根程序。此外,虚拟机VM1的客户OS还许可利用HVCALL指令调用超级管理员存根程序,并许可从超级管理员存根程序调用超级管理员程序。
同时,对于虚拟机VM0,HVTRAP指令许可标志HVTE设置为禁止状态,并且HVCALL指令许可标志HVCE设置为允许状态。因此,虚拟机VM0的可靠性比虚拟机VM1的可靠性低。也就是,基于许可标志的设置,虚拟机VM0的客户OS不许可利用HVTRAP指令直接调用超级管理员程序。因此,当虚拟机VM0的客户OS调用超级管理员程序时,需要通过执行HVCALL指令调用超级管理员存根程序,然后从超级管理员存根程序调用超级管理员程序。此外,对于虚拟机VM2,HVTRAP指令许可标志HVTE和HVCALL指令许可标志HVCE两者都设为禁止状态。因此,虚拟机VM2的可靠性低于虚拟机VM0的可靠性。也就是,基于许可标志设置,没有赋予虚拟机VM2的客户OS执行HVTRAP指令和HVCALL指令的权限。因此,虚拟机VM2的客户OS不能调用超级管理员程序,也不能调用超级管理员存根程序。
也就是,根据第一实施例的半导体设备1执行处理,同时在虚拟机模式和本机模式之间切换操作模式,在虚拟机模式中,通过多个虚拟机并行地执行一个或多个程序;在本机模式中,通过独占使用执行单元的执行时间执行程序。此外,在虚拟机模式中半导体设备1执行:用户程序,具有用户特权等级,对一个或多个特定硬件资源的存取限于半导体设备内部的硬件资源(例如,寄存器、存储器和外围电路等);管理员程序,其管理用户程序(例如,客户OS);以及超级管理员存根程序,具有超级管理员特权等级,其响应于来自客户OS的调用运行,并且许可其存取包括特定硬件资源的硬件资源。此外,在半导体设备1中,为客户OS定义存在/不存在执行调用超级管理员存根程序的第一指令代码(例如,HVCALL指令)的权限。此外,响应于来自许可执行HVCALL指令的客户OS的调用,启动超级管理员存根程序。此外,半导体设备1通过执行第二指令代码(例如,HVTRAP指令)调用超级管理员程序,并由此将操作模式改变为本机模式。此外,当不许可执行HVCALL指令的客户OS执行HVCALL指令时,半导体设备1在客户OS内执行异常处置,而不调用超级管理员存根程序。
此外,在半导体设备1中,为客户OS设置存在/不存在执行HVTRAP指令的权限。此外,半导体设备1响应于来自许可执行HVTRAP指令的客户OS的调用,启动超级管理员程序。此外,当不许可执行HVTRAP指令的客户OS执行HVTRAP指令时,半导体设备1在客户OS内执行异常处置,而不调用超级管理员程序。
接下来,说明在执行直接调用超级管理员程序的HVTRAP指令的情况下根据第一实施例的半导体设备1的操作。图11示出了在执行HVTRAP指令的情况下根据第一实施例的半导体设备1的操作的流程图。
如图11所示,在根据第一实施例的半导体设备1中,当通过客户OS执行HVTRAP指令时,管线控制单元15检测:基于从执行单元16输出的指令执行信息EXR启动HVTRAP指令的执行(步骤ST10)。
在步骤ST11中,基于指示分配给虚拟机的编号的虚拟机标识符,管线控制单元15的虚拟机控制电路20参考对应于已经执行HVTRAP指令的虚拟机的虚拟机控制寄存器。然后,虚拟机控制电路20确定已经执行HVTRAP指令的虚拟机是否具有执行HVTRAP指令的权限(步骤ST12)。在该步骤ST12中,当确定虚拟机不具有执行HVTRAP指令的权限时,半导体设备1认识到发生执行权限异常,并且执行错误处理,作为虚拟机的客户OS内的处理(步骤ST13)。
另一方面,当确定虚拟机具有执行HVTRAP指令的权限时,半导体设备1停止所有虚拟机,并将操作权限转换到超级管理员特权等级(步骤ST14)。更具体地,在步骤ST14中,虚拟机控制电路20使实体机操作信号S6进入允许状态。此外,响应于实体机操作信号S6向允许状态的改变,线程调度器21从虚拟机/线程对应表41选择要执行的硬件线程。此外,响应于HVTRAP执行通知信号S3,管线控制信号产生电路22产生用来执行超级管理员程序的指令提取控制信号IFC、指令解码控制信号IDC、寄存器控制信号RFC和执行单元控制信号EUC。此外,一旦完成了步骤ST14的处理,在根据第一实施例的半导体设备1中执行超级管理员程序(步骤ST15)。
接下来,说明在执行调用超级管理员存根程序的HVCALL指令的情况下根据第一实施例的半导体设备1的操作。图12示出了示出在通过HVCALL指令启动超级管理员存根程序的情况下根据第一实施例的半导体设备1的操作的流程图。
如图12所示,在根据第一实施例的半导体设备1中,当通过客户OS执行HVCALL指令时,基于从执行单元16输出的指令执行信息EXR,管线控制单元15检测启动HVCALL指令的执行(步骤ST20)。
接下来,在步骤ST21中,基于指示分配给虚拟机的编号的虚拟机标识符,虚拟机控制电路20的虚拟机控制电路20参考对应于已经执行HVCALL指令的虚拟机的虚拟机控制寄存器。然后,虚拟机控制电路20确定已经执行HVCALL指令的虚拟机是否具有执行HVCALL指令的权限(步骤ST22)。在该步骤ST22中,当确定虚拟机不具有执行HVCALL指令的权限时,半导体设备1认识到发生执行权限异常,并在虚拟机内执行错误处理(步骤ST23)。
另一方面,当确定虚拟机具有执行HVCALL指令的权限时,半导体设备1临时将超级管理员特权赋予已经执行HVCALL指令的虚拟机。此外半导体设备1继续其它虚拟机的操作,同时在已经执行HVCALL指令的虚拟机中执行超级管理员存根程序。之后,半导体设备1跳转到在超级管理员存根程序中准备的指令代码(步骤ST24)。更具体地,在步骤ST24中,虚拟机控制电路20使实体机操作信号S6保持在禁止状态中。然后,响应于实体机操作信号S6处于禁止状态,线程调度器21基于虚拟机/线程对应表41或调度提示42选择要执行的硬件线程。此外,响应于HVCALL执行通知信号S2,管线控制信号产生用来执行超级管理员存根程序的电路22产生指令提取控制信号IFC、指令解码控制信号IDC、寄存器控制信号RFC和执行单元控制信号EUC。
然后,半导体设备1通过跳转到在步骤ST24中的超级管理员存根程序中准备的指令代码,完成超级管理员程序的启动处理。
注意,如图12所示,通过执行HVCALL指令,半导体设备1启动超级管理员存根程序。然后,半导体设备1通过超级管理员存根程序调用超级管理员程序。此外,在该超级管理员存根程序中,执行用来确认来自调用方的请求的有效性、监视其它虚拟机的操作等的处理。因此,在下文中详细说明基于超级管理员存根程序的半导体设备1的操作。图13示出了示出根据第一实施例的半导体设备中超级管理员存根程序的操作的流程图。
如图13所示,首先,执行超级管理员存根程序的半导体设备1确定调用方指令的请求是否合适(步骤ST31)。更具体地,在步骤ST31中,当应用程序直接发出HVCALL指令,没有插入具有管理特权等级的任何程序(如客户OS)时,确定调用方指令的请求是非授权请求。
此外,当在步骤ST31中确定调用方指令的请求是非授权请求时,超级管理员存根程序对返回值设置错误数,发出返回指令,并返回用户应用的处理(步骤ST38)。此外,当在步骤ST31中确定调用方指令的请求是合适请求时,超级管理员存根程序确定在没有停止其它虚拟机的情况下是否可以处理该请求的处理(步骤ST32)。例如,当该请求是仅影响发出HVCALL指令的虚拟机的设置改变时,在不停止其它虚拟机的情况下可以完成请求的处理。
此外,当在步骤ST32中确定请求的处理可以在不停止其它虚拟机的情况下处理时,在虚拟机模式中,半导体设备1通过超级管理员存根程序提供一个或多个服务(步骤ST33)。然后,在步骤ST33的处理之后,半导体设备1根据处理设置返回值,发出返回指令,并返回对用户应用的处理(步骤ST38)。此外,当在步骤ST32中确定请求的处理不可以在不停止其它虚拟机的情况下处理时,确定半导体设备1是否可以变成本机模式(步骤ST34)。例如,当在其他虚拟机中执行的一个或多个处理涉及需要实时能力的关键任务时,就不能停止在其他虚拟机中执行的一个或多个处理。
此外,当在步骤ST34中确定半导体设备1可以变为本机模式时,半导体设备1继续进行步骤ST35中的处理。在步骤ST35中,超级管理员存根程序发出HVTRAP指令,由此通过HVTRAP指令将半导体设备1变为本机模式。结果,半导体设备1通过本机模式中的超级管理员程序提供一个或多个服务(步骤ST36)。注意,在半导体设备1中,步骤ST36中的处理包括在超级管理员程序的处理中。因此,超级管理员存根程序仍然执行,同时执行步骤ST36中的处理。此外,在半导体设备1中,即使对应于该虚拟机的HVTRAP许可标志处于禁止状态,作为正常处理,也处理由超级管理员存根程序发出的HVTRAP指令。
然后,当完成了步骤ST36中的处理时,半导体设备1将操作模式从本机模式返回虚拟机模式,执行超级管理员存根程序(步骤ST37)。之后,执行超级管理员存根程序的半导体设备1,根据处理设置返回值,发出返回指令,并将处理返回到用户应用(步骤ST38)。
接下来,参考顺序图(图14至18),从不同角度说明根据第一实施例的半导体设备1的操作。首先,图14示出了示出根据第一实施例的半导体设备1的操作的顺序图。图14示出了半导体设备1中基于正常处理调用超级管理员程序的示例。注意,图14至17示出了半导体设备1的顺序图,其中虚拟机的执行权限根据图4中示出的虚拟机寄存器设置定义。此外,图18示出了示出在任何虚拟机中没有插入超级管理员存根程序的情况下启动超级管理员程序的半导体设备的操作的顺序图。也就是,图18示出了根据第一实施例的半导体设备1的比较示例。
如图14的上部所示,在半导体设备1中,当虚拟机VM0执行HVCALL指令时,响应于HVCALL指令,虚拟机VM0在虚拟机模式中执行超级管理员存根程序。然后,当超级管理员存根程序执行HVTRAP指令时,半导体设备1将操作模式改变成本机模式,并且执行超级管理员程序。在该过程中,如图14所示,即使在执行超级管理员程序时,超级管理员存根程序也在后台继续运行。然后,响应于超级管理员程序处理的完成,半导体设备1将操作模式返回虚拟机模式,并将处理返回到超级管理员存根程序。之后,通过由超级管理员存根程序执行返回指令,半导体设备1将操作模式返回到运行用户应用的虚拟机模式。
此外,如图14的下部所示,在半导体设备1中,许可虚拟机VM1执行HVTRAP指令。因此,在半导体设备1中,当在虚拟机VM1中执行HVTRAP指令时,半导体设备1将操作模式从虚拟机模式改变成本机模式,并且响应于HVTRAP指令直接执行超级管理员程序。然后,响应于超级管理员程序处理的完成,半导体设备1将操作模式返回到虚拟机模式,并且将处理返回到用户程序。
接下来,图15是示出在根据第一实施例的半导体设备中当发生对超级管理员程序的非授权调用时执行的操作的顺序图。如图15所示,在半导体设备1中,HVTRAP指令的执行权限没有被赋予虚拟机VM0。因此,当在虚拟机VM0中执行HVTRAP指令时,在关于HVTRAP指令的处理中,在客户OS的处理周期期间,在管线控制单元15的虚拟机控制电路20中,HVTRAP执行权限异常信号S5变为允许状态。然后,响应于HVTRAP执行权限异常信号S5变为允许状态,管线控制信号产生电路22产生指令提取控制信号IFC、指令解码控制信号IDC、寄存器控制信号RFC和执行单元控制信号EUC,使执行单元16执行返回指令。然后,当在虚拟机VM0中执行返回指令时,虚拟机VM0的执行权限返回到用户模式。在该过程中,在半导体设备1中,由于在客户OS的处理周期期间执行了异常处置,这是在虚拟机模式中执行的,所以继续其它虚拟机的操作,而不管虚拟机VM0中HVTRAP指令的执行。
此外,即使当在虚拟机VM0中执行HVCALL指令时,在超级管理员存根程序的处理中,当来自调用方的请求是非授权请求时,通过超级管理员存根程序执行错误处理(或异常处置)。因此,图16是示出当发生对超级管理员存根程序的非授权调用时进行的半导体设备1的操作的顺序图。如图16所示,在半导体设备1中,即使当执行HVCALL指令时,当来自调用方的请求是非授权请求时,操作权限可以返回到用户模式,而不将操作模式变成本机模式。
接下来,图17是示出当在虚拟机VM2中执行HVCALL指令或HVTRAP指令时进行的半导体设备1的操作的顺序图,其中虚拟机VM2没有赋予HVCALL指令的执行权限,也没有赋予HVTRAP指令的执行权限。HVCALL指令的执行权限没有赋予虚拟机VM2,HVTRAP指令的执行权限也没有赋予虚拟机VM2。因此,在半导体设备1中,当在虚拟机VM2中执行HVTRAP指令或HVCALL指令时,在客户OS的处理周期期间,执行异常处置。更具体地,在虚拟机VM2中,作为执行HVTRAP指令或HVCALL指令的结果,在管线控制单元15的虚拟机控制电路20中,HVCALL执行权限异常信号S4或HVTRAP执行权限异常信号S5变为允许状态。然后,响应于HVCALL执行权限异常信号S4或HVTRAP执行权限异常信号S5向允许状态的改变,管线控制信号产生电路22产生指令提取控制信号IFC、指令解码控制信号IDC、寄存器控制信号RFC和执行单元控制信号EUC,使执行单元16执行返回指令。然后,当在虚拟机VM2中执行返回指令时,虚拟机VM2将处理返回到用户应用程序,同时保持在虚拟机模式中。
接下来,说明图18所示的比较示例。在图18所示的比较示例中,半导体设备没有管理HVTRAP指令的执行权限,也没有通过超级管理员存根程序启动超级管理员程序。因此,在根据比较示例的半导体设备中,虚拟机VM0至VM2的任一个都可以通过执行HVTRAP指令调用超级管理员程序。在图18所示的示例中,虚拟机VM0执行HVTRAP指令。
因此,如图18所示,在根据比较示例的半导体设备中,当由于某种应用故障虚拟机VM0频繁执行HVTRAP指令时,能够防止由HVTRAP指令造成向本机模式的转换。此外,存在一个问题:当频繁产生像这样的向本机模式的转换时,会降低半导体设备的处理性能。这是因为每次转换发生时都要停止其它虚拟机的处理。
由上面的描述可以看出,在根据第一实施例的半导体设备1中,管线控制单元15包括虚拟机控制寄存器,用来为每个虚拟机定义存在/不存在执行第一特权程序(例如,超级管理员存根程序)的权限,第一特权程序是在一个虚拟机上执行的。此外,管线控制单元15参考虚拟机控制寄存器,并且当已经发出关于超级管理员存根程序的指令代码(例如,HVCALL指令)的虚拟机具有执行超级管理员存根程序的权限时,基于超级管理员存根程序的操作,指令执行单元16基于关于利用硬件资源运行的第二特权程序(例如,超级管理员程序)的指令代码执行处理。
结果,在根据第一实施例的半导体设备1中,即使在发生由应用程序频繁调用超级管理员程序造成的故障时,也能够防止超级管理员程序被超级管理员存根程序的操作直接调用。此外,由于类似这样的操作,在根据第一实施例的半导体设备1中能够防止频繁产生向本机模式的转换。此外,在半导体设备1中,能够降低发生虚拟机之间干扰的频率,这是当频繁产生向本机模式的转换时所造成的,由此防止由于软件故障造成的处理性能降低。
此外,在根据第一实施例的半导体设备1中,在虚拟机内能够执行具有超级管理员特权的超级管理员存根程序。因此,当出现在执行该超级管理员存根程序的虚拟机内完成的并要求超级管理员特权的操作时,可以在没有停止其它虚拟机的情况下,完成请求超级管理员特权的过程。结果,根据第一实施例的半导体设备1可以降低停止虚拟机操作的频率,由此提高半导体设备的整体性能。
此外,在根据第一实施例的半导体设备1中,为每个虚拟机设置用来调用超级管理员程序的HVTRAP指令的执行权限和用来调用超级管理员存根程序的HVCALL指令的执行权限。因此,能够防止执行具有低可靠性的应用程序的虚拟机调用超级管理员存根程序和超级管理员程序。此外,能够仅对执行具有高可靠性的应用程序的一个或多个虚拟机赋予HVTRAP指令的执行权限。通过如上所述的为每个虚拟机设置HVCALL指令和HVTRAP指令的执行权限,能够提高具有低可靠性的一个或多个应用程序的可靠性,并且降低为具有高可靠性的一个或多个应用程序调用超级管理员程序时造成的开销。
此外,在半导体设备1中,仅许可以超级管理员特权等级运行的一个或多个程序重新写入虚拟机控制寄存器的HVCALL许可标志HVCE、HVTRAP许可标志HVTE、HV特权标志HVP和虚拟机允许标志EN。结果,能够防止这些标志的设置值被在例如用户模式的具有低可靠性的操作模式中运行的程序破坏。
第二实施例
作为第二实施例,说明超级管理员特权等级中的操作甚至对具有可靠性比超级管理员特权等级低的执行权限等级的程序也是许可的实施例。因此,图19示出了根据本发明的第二实施例的半导体设备的虚拟机控制寄存器的示例。
在图19所示的示例中,对应于虚拟机VM1的虚拟机控制寄存器的HV特权标志设置为1(例如,允许状态)。当该HV特权标志为1时,图3中所示的虚拟机控制电路20的OR电路32的输出始终为1。因此,HVTRAP指令和HVCALL指令的执行权限被赋予虚拟机VM1,不管HVTRAP许可标志HVTE和HVCALL许可标志HVCE是允许或禁止。
此外,当该HV特权标志HVP处于允许状态时,根据第二实施例的半导体设备参考HV特权标志HVP,由此,例如,对于以管理特权等级操作的客户OS,许可存取仅对具有超级管理员特权等级的一个或多个程序许可的资源。注意,在根据第二实施例的半导体设备中,管线控制信号产生电路22参考HV特权标志HVP,以便当在客户OS中发生存取超级管理员特权等级的资源时,在没有进行异常处置的情况下继续处理。
在根据第二实施例的半导体设备中,如上所述,通过对上述客户OS赋予超级管理员特权,在没有执行HVTRAP指令或HVCALL指令的情况下,可以存取仅能被具有超级管理员特权等级的一个或多个程序操作的资源。此外,如上所述,通过将超级管理员特权等级赋予具有管理特权等级的程序,能够消除软件程序之间的切换,由此提高半导体设备的处理性能。
基于实施例上面已经说明了本发明人制造的发明。然而,本发明并不限于上述实施例,并且不必说,在没有偏离本发明的精神和范围的情况下,可以对它们进行各种修改。例如,根据半导体设备1的说明书所述,应该使用哪种过程来选择要在线程调度器21中执行的线程是一个技术问题。此外,虽然在上面所示的实施例中说明了执行单元16是单核CPU的示例,但是本发明的技术公开还可应用于包括多个含有执行单元的运算电路的多核CPU。
第一和第二实施例可以按照本领域的普通技术人员的期望组合。
虽然基于若干实施例已经描述了本发明,但是本领域的技术人员将认识到,在所附权利要求的范围和精神内,本发明可以实践各种修改,并且本发明并不限于上述示例。
此外,权利要求的范围并不受上述实施例的限制。
另外,应该注意,申请人的意图是包括所有权利要求要素的等效,即使后来审查期间进行了修改。

Claims (12)

1.一种半导体设备,在所述半导体设备中定义了多个虚拟机,所述多个虚拟机中的每一个都发出属于与程序相对应的指令流的指令代码,所述半导体设备包括:
指令解码器,所述指令解码器对所述指令代码进行解码,并由此产生指令信息;
执行单元,所述执行单元通过管线处理基于所述指令信息来执行操作;以及
管线控制单元,所述管线控制单元控制要在所述管线处理中处理的所述指令代码的顺序,其中,
所述管线控制单元包括寄存器,所述寄存器用于针对每个虚拟机定义存在/不存在执行第一特权程序的权限,所述第一特权程序要在一个虚拟机上执行,并且
所述管线控制单元参考所述寄存器,并且当已经发出与所述第一特权程序相关的所述指令代码的所述虚拟机具有执行所述第一特权程序的权限时,基于所述第一特权程序的操作,指令所述执行单元基于与第二特权程序相关的指令代码来执行处理。
2.根据权利要求1所述的半导体设备,其中,当已经发出与所述第一特权程序相关的指令代码的所述虚拟机不具有执行所述第一特权程序的权限时,所述管线控制单元确定在已经发出与所述第一特权程序相关的所述指令代码的所述虚拟机中发生执行权限异常,并且指令已经发出与所述第一特权程序相关的所述指令代码的所述虚拟机执行异常处置。
3.根据权利要求1所述的半导体设备,其中,
所述管线控制单元的所述寄存器包括用于针对每个虚拟机定义存在/不存在执行所述第二特权程序的权限的值,并且
所述管线控制单元参考所述寄存器,并且当已经发出与所述第二特权程序相关的所述指令代码的所述虚拟机具有执行所述第二特权程序的权限时,指令所述执行单元基于所述指令代码来执行处理,使得继续所述第二特权程序的操作。
4.根据权利要求3所述的半导体设备,其中,当已经发出与所述第二特权程序相关的所述指令代码的所述虚拟机不具有执行所述第二特权程序的权限时,所述管线控制单元确定在已经发出与所述第二特权程序相关的所述指令代码的所述虚拟机中发生执行权限异常,并且指令已经发出与所述第二特权程序相关的所述指令代码的所述虚拟机执行异常处置。
5.根据权利要求1所述的半导体设备,其中,
所述半导体设备通过执行所述第一特权程序来确定由已经调用了所述第一特权程序的调用方程序所指令的请求的有效性,并且
当由所述调用方程序指令的所述请求有效时,所述管线控制单元基于所述第一特权程序的操作来指令所述执行单元基于与所述第二特权程序相关的所述指令代码来执行处理。
6.根据权利要求1所述的半导体设备,其中,
所述半导体设备通过由所述第一特权程序进行的处理来监视除了已经发出与所述第一特权程序相关的所述指令代码的所述虚拟机之外的其它虚拟机的操作,并且
所述管线控制单元延迟指令所述执行单元基于与所述第二特权程序相关的所述指令代码来执行处理,直到能够停止所述其它虚拟机操作的状态。
7.根据权利要求1所述的半导体设备,其中,
所述半导体设备执行:
在所述虚拟机上运行的用户程序;
管理所述用户程序的管理员程序;
在所述虚拟机上运行并且响应于来自所述管理员程序的调用而运行的超级管理员存根程序;以及
管理多个管理员程序的超级管理员程序,
所述第一特权程序是所述超级管理员存根程序,并且
所述第二特权程序是所述超级管理员程序。
8.根据权利要求1所述的半导体设备,其中,所述寄存器是仅能够通过所述第一特权程序和所述第二特权程序重新写入的寄存器。
9.一种半导体设备,所述半导体设备执行处理,同时在虚拟机模式和本机模式之间切换操作模式,在所述虚拟机模式中通过多个虚拟机来并行执行程序,在所述本机模式中通过独占使用执行单元的执行时间来执行程序,其中,
所述半导体设备在所述虚拟机模式中执行:
用户程序,所述用户程序具有用户特权等级,对于所述用户程序,对特定硬件资源的存取限于所述半导体设备内的硬件资源之中;
管理员程序,所述管理员程序管理所述用户程序;以及
超级管理员存根程序,所述超级管理员存根程序具有超级管理员特权等级,其响应于来自所述管理员程序的调用而运行,并且许可所述超级管理员存根程序存取包括所述特定硬件资源的硬件资源,
针对所述管理员程序定义存在/不存在执行用于调用所述超级管理员存根程序的第一指令代码的权限,以及
所述超级管理员存根程序,所述所述超级管理员存根程序响应于来自对其许可执行所述第一指令代码的所述管理员程序的调用而开始,通过执行第二指令代码来调用超级管理员程序,并且将所述操作模式改变为所述本机模式。
10.根据权利要求9所述的半导体设备,其中,当对其不许可执行所述第一指令代码的所述管理员程序执行所述第一指令代码时,所述管理员程序在自己的程序内执行异常处置,而不调用所述超级管理员存根程序。
11.根据权利要求9所述的半导体设备,其中,
在所述管理员程序中设置存在/不存在执行所述第二指令代码的权限,并且
所述超级管理员程序响应于来自对其许可执行所述第二指令代码的所述管理员程序的调用而开始。
12.根据权利要求11所述的半导体设备,其中,当对其不许可执行所述第二指令代码的所述管理员程序执行所述第二指令代码时,所述管理员程序在自己的程序内执行异常处置,而不调用所述超级管理员程序。
CN201310109075.9A 2012-03-30 2013-03-29 半导体设备 Active CN103365630B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2012082324A JP5813554B2 (ja) 2012-03-30 2012-03-30 半導体装置
JP2012-082324 2012-03-30

Publications (2)

Publication Number Publication Date
CN103365630A true CN103365630A (zh) 2013-10-23
CN103365630B CN103365630B (zh) 2017-06-09

Family

ID=47900688

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310109075.9A Active CN103365630B (zh) 2012-03-30 2013-03-29 半导体设备

Country Status (4)

Country Link
US (1) US9286091B2 (zh)
EP (1) EP2645236B1 (zh)
JP (1) JP5813554B2 (zh)
CN (1) CN103365630B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104778030A (zh) * 2013-12-20 2015-07-15 想象技术有限公司 具有虚拟化指令集架构的处理器和方法

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9069598B2 (en) 2012-01-06 2015-06-30 International Business Machines Corporation Providing logical partions with hardware-thread specific information reflective of exclusive use of a processor core
JP5894496B2 (ja) * 2012-05-01 2016-03-30 ルネサスエレクトロニクス株式会社 半導体装置
US9836318B2 (en) * 2014-02-21 2017-12-05 Infineon Technologies Ag Safety hypervisor function
US9195493B2 (en) * 2014-03-27 2015-11-24 International Business Machines Corporation Dispatching multiple threads in a computer
WO2015186088A1 (en) * 2014-06-06 2015-12-10 International Business Machines Corporation Selecting a host for a virtual machine using a hardware multithreading parameter
US9304805B2 (en) 2014-06-06 2016-04-05 Interinational Business Machines Corporation Provisioning virtual CPUs using a hardware multithreading parameter in hosts with split core processors
US9384027B2 (en) 2014-06-06 2016-07-05 International Business Machines Corporation Selecting a host for a virtual machine using a hardware multithreading parameter
CN106462446B (zh) * 2014-06-06 2019-10-08 国际商业机器公司 使用硬件多线程参数来为虚拟机选择主机
US9400672B2 (en) 2014-06-06 2016-07-26 International Business Machines Corporation Placement of virtual CPUS using a hardware multithreading parameter
DE102015214390A1 (de) * 2015-07-29 2017-02-02 Robert Bosch Gmbh Verfahren und Vorrichtung zum Betreiben wechselnder Gastsysteme unter einem Hypervisor
US9536088B1 (en) * 2015-11-09 2017-01-03 AO Kaspersky Lab System and method for protection of memory in a hypervisor
JP2019067289A (ja) * 2017-10-04 2019-04-25 ルネサスエレクトロニクス株式会社 半導体装置
JP2019114097A (ja) 2017-12-25 2019-07-11 ルネサスエレクトロニクス株式会社 半導体装置
US11016796B2 (en) * 2019-04-10 2021-05-25 Red Hat, Inc. Hypervisor protection of a controllable device
US11782713B1 (en) * 2019-08-27 2023-10-10 Amazon Technologies, Inc. Security vulnerability mitigation using address space co-execution

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005056017A (ja) * 2003-08-08 2005-03-03 Hitachi Ltd 情報処理装置
CN1716206A (zh) * 2004-06-28 2006-01-04 英特尔公司 根据客户软件的特许级支持向虚拟机监视器转移
US20070250833A1 (en) * 2006-04-14 2007-10-25 Microsoft Corporation Managing virtual machines with system-wide policies
CN101076781A (zh) * 2004-12-10 2007-11-21 英特尔公司 对虚拟机监控程序的组件解除特权的系统和方法
CN101162443A (zh) * 2006-10-10 2008-04-16 株式会社瑞萨科技 数据处理器
CN101681269A (zh) * 2007-05-16 2010-03-24 威睿公司 多虚拟化技术的自适应动态选择与应用
US20110047544A1 (en) * 2009-08-23 2011-02-24 International Business Machines Corporation Para-virtualization in a nested virtualization enviroment
US20110197190A1 (en) * 2010-02-05 2011-08-11 Hitachi, Ltd. Virtualization method and virtual machine

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7237051B2 (en) * 2003-09-30 2007-06-26 Intel Corporation Mechanism to control hardware interrupt acknowledgement in a virtual machine system
US9785485B2 (en) * 2005-07-27 2017-10-10 Intel Corporation Virtualization event processing in a layered virtualization architecture
US8621459B2 (en) * 2006-12-22 2013-12-31 Intel Corporation Method and apparatus for multithreaded guest operating system execution through a multithreaded host virtual machine monitor
JP2008252232A (ja) 2007-03-29 2008-10-16 Kddi Corp 通信機器の接続確認システムおよび接続確認プログラム
JP4678396B2 (ja) * 2007-09-25 2011-04-27 日本電気株式会社 仮想マシンモニタをモニタするコンピュータとその方法、および仮想マシンモニタモニタプログラム
US8510756B1 (en) * 2007-12-06 2013-08-13 Parallels IP Holdings GmbH Guest operating system code optimization for virtual machine
US8261276B2 (en) * 2008-03-31 2012-09-04 International Business Machines Corporation Power-efficient thread priority enablement
GB2474666B (en) * 2009-10-21 2015-07-15 Advanced Risc Mach Ltd Hardware resource management within a data processing system
US20110153909A1 (en) * 2009-12-22 2011-06-23 Yao Zu Dong Efficient Nested Virtualization

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005056017A (ja) * 2003-08-08 2005-03-03 Hitachi Ltd 情報処理装置
CN1716206A (zh) * 2004-06-28 2006-01-04 英特尔公司 根据客户软件的特许级支持向虚拟机监视器转移
CN101076781A (zh) * 2004-12-10 2007-11-21 英特尔公司 对虚拟机监控程序的组件解除特权的系统和方法
US20070250833A1 (en) * 2006-04-14 2007-10-25 Microsoft Corporation Managing virtual machines with system-wide policies
CN101162443A (zh) * 2006-10-10 2008-04-16 株式会社瑞萨科技 数据处理器
CN101681269A (zh) * 2007-05-16 2010-03-24 威睿公司 多虚拟化技术的自适应动态选择与应用
US20110047544A1 (en) * 2009-08-23 2011-02-24 International Business Machines Corporation Para-virtualization in a nested virtualization enviroment
US20110197190A1 (en) * 2010-02-05 2011-08-11 Hitachi, Ltd. Virtualization method and virtual machine

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104778030A (zh) * 2013-12-20 2015-07-15 想象技术有限公司 具有虚拟化指令集架构的处理器和方法
CN104778030B (zh) * 2013-12-20 2018-11-30 美普思技术有限责任公司 具有虚拟化指令集架构的处理器和方法

Also Published As

Publication number Publication date
US9286091B2 (en) 2016-03-15
CN103365630B (zh) 2017-06-09
US20130263129A1 (en) 2013-10-03
EP2645236A3 (en) 2015-08-05
JP5813554B2 (ja) 2015-11-17
JP2013210962A (ja) 2013-10-10
EP2645236A2 (en) 2013-10-02
EP2645236B1 (en) 2017-09-27

Similar Documents

Publication Publication Date Title
CN103365630A (zh) 半导体设备
US8055872B2 (en) Data processor with hardware accelerator, accelerator interface and shared memory management unit
EP1027650B1 (en) Method and apparatus for altering thread priorities in a multithreaded processor
CN1846194B (zh) 执行并行程序线程的方法和装置
US6018759A (en) Thread switch tuning tool for optimal performance in a computer processor
CA2299348C (en) Method and apparatus for selecting thread switch events in a multithreaded processor
US6076157A (en) Method and apparatus to force a thread switch in a multithreaded processor
US7650602B2 (en) Parallel processing computer
CN104272256B (zh) 任务处理装置
US7698540B2 (en) Dynamic hardware multithreading and partitioned hardware multithreading
US20060236135A1 (en) Apparatus and method for software specified power management performance using low power virtual threads
CN101542412A (zh) 用于多线程处理器中自动低功率模式调用的装置和方法
CN102937889A (zh) 控制寄存器对应于异质指令集架构处理器
EP1027645A1 (en) Thread switch control in a multithreaded processor system
KR20100009593A (ko) 명령실행 제어장치 및 명령실행 제어방법
WO1999021088A1 (en) An apparatus and method to guarantee forward progress in a multithreaded processor
WO2001048599A1 (en) Method and apparatus for managing resources in a multithreaded processor
CN101203831A (zh) 用于增强线程级推测的原语
CN103383667A (zh) 存储器保护电路、处理单元和存储器保护方法
CN102707988A (zh) 执行模式备份寄存器的模拟
US20100083261A1 (en) Intelligent context migration for user mode scheduling
WO2010082032A1 (en) Multi-threaded data processing system
CA1202425A (en) Multiprocessor system including firmware
US7490223B2 (en) Dynamic resource allocation among master processors that require service from a coprocessor
EP1760580B1 (en) Processing operation information transfer control system and method

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: Tokyo, Japan

Applicant after: Renesas Electronics Corporation

Address before: Kanagawa

Applicant before: Renesas Electronics Corporation

COR Change of bibliographic data
GR01 Patent grant
GR01 Patent grant