存储器保护电路、处理单元和存储器保护方法与流程

文档序号:12910258阅读:163来源:国知局
存储器保护电路、处理单元和存储器保护方法相关申请的交叉引用本申请基于2012年5月1日提交的日本专利申请No.2012-104579并要求其优先权权益,其全部内容通过引入合并于此。
技术领域
:本发明涉及存储器保护电路、处理单元和存储器保护方法,并且例如涉及通过各个虚拟机来控制对存储器的访问的存储器保护电路、处理单元和存储器保护方法。
背景技术
::通常,诸如中央处理单元(CPU)的处理单元包括存储器保护机构,存储器保护机构控制对存储器的访问以便于保护存储器免受未授权访问。存储器保护机构能设定向或从存储器空间中的预定地址写入或读取的允许/禁止。存储器保护机构包括,例如,存储器管理单元(MMU)和存储器保护单元(MPU)。此外,存在一种虚拟化技术,该技术使得单一物理资源(硬件资源)看起来像多个资源。通过使用该虚拟化技术,例如,可以在一个CPU上操作多个虚拟机(VM),由此能够在相应的虚拟机上操作不同操作系统(OS)。日本未经审查专利申请公开No.2011-146030公开了一种存储器保护技术,该技术通过使得能够对确定为具有高可靠性的保护区域进行直接访问来减轻执行效率的下降,并且抑制作为未授权访问的对确定为具有低可靠性的保护区域的直接访问。日本未经审查专利申请公开No.2009-009232公开了一种向计算机系统提供了高可靠性的技术,并且具体地,公开了一种保护操作系统的内核的技术。技术实现要素:如在
背景技术
:中所述,可以例如通过使用虚拟化技术来在一个CPU上操作多个虚拟机。在这种情况下,可以在相应的虚拟机上操作不同的OS和应用程序。然而,由于虚拟机共享单一物理存储器,所以当在CPU中使用虚拟化技术时,需要防止各个虚拟机对存储器的访问的干扰。因此,需要提供一种控制各个虚拟机对存储器的访问的存储器保护机构。然而,当例如使用包括存储器保护功能和地址转换功能的存储器管理单元(MMU)作为存储器保护机构时,需要大量的硬件资源。因此,需要一种利用少量硬件资源来控制各个虚拟机对存储器的访问的存储器保护机构(存储器保护电路)。从说明书和附图中的描述,其他问题和新颖特征将是显而易见的。根据一个实施例的存储器保护电路包括存储器访问信息寄存器和访问确定电路。存储器访问信息寄存器存储与能够由各个虚拟机访问的存储器区域有关的存储器访问信息,并且访问确定电路基于在各个虚拟机访问存储器时的存储器地址、与访问该存储器的虚拟机有关的信息、以及存储在该存储器访问信息寄存器中的存储器访问信息,来确定是否允许虚拟机访问存储器区域。根据一个实施例的处理单元包括:运算电路,该运算电路执行与各个虚拟机相对应的程序;虚拟机调度器,所述虚拟机调度器向虚拟机分配程序的执行时间;以及存储器保护电路,该存储器保护电路控制各个虚拟机对存储器的访问。根据一个实施例的存储器保护方法包括:将与能由各个虚拟机访问的存储器区域有关的存储器访问信息存储在存储器访问信息寄存器中;以及基于在各个虚拟机访问存储器时的存储器地址、与访问该存储器的虚拟机有关的信息、以及存储在该存储器访问信息寄存器中的存储器访问信息,来确定是否允许虚拟机访问存储器。根据上述实施例,可以提供能够利用少量硬件资源来控制各个虚拟机对存储器的访问的存储器保护电路、处理单元和存储器保护方法。附图说明从结合附图获得的特定实施例的下述描述中,上述和其他方面、优点和特征将是显而易见的,在附图中:图1是用于描述包括根据第一实施例的存储器保护电路的处理单元的框图;图2是用于描述虚拟化技术的图;图3是用于描述由运算电路执行的指令的顺序的一个示例的图;图4是示出根据第一实施例的存储器保护电路的一个示例的框图;图5是示出包括在根据第一实施例的存储器保护电路中的存储器区域设定寄存器的一个示例的图;图6是示出包括在根据第一实施例的存储器保护电路中的存储器区域分配寄存器的一个示例的图;图7是用于描述使用虚拟化技术构建的系统的框图;图8是用于描述根据第一实施例的存储器保护电路的操作的流程图;图9是用于描述包括根据第二实施例的存储器保护电路的处理单元的框图;图10是示出根据第二实施例的存储器保护电路的一个示例的框图;图11是用于描述根据第二实施例的存储器保护电路的操作的流程图;图12是用于描述包括根据第三实施例的存储器保护电路的处理单元的框图;图13是用于描述由运算电路执行的指令的顺序的一个示例的图;图14是示出根据第四实施例的存储器保护电路的一个示例的框图;图15是示出根据第五实施例的存储器保护电路的一个示例的框图;图16是示出包括在根据第五实施例的存储器保护电路中的存储器访问信息寄存器中存储的信息的一个示例的表;图17是示出根据第六实施例的存储器保护电路的一个示例的框图;以及图18是示出包括在根据第六实施例的存储器保护电路中的寄存器访问信息寄存器中所存储的信息的一个示例的表。具体实施方式<第一实施例>图1是用于描述包括根据第一实施例的存储器保护电路的处理单元(CPU)的框图。图1中所示的处理单元1包括指令缓冲器2、选择器3、运算电路4、虚拟机调度器5和存储器保护电路6_1。存储器保护电路6_1包括存储器访问信息寄存器8和访问确定电路9。图1中所示的处理单元1通过总线10连接到存储器11。尽管作为本实施例的示例,以存储器保护电路6_1被包括在处理单元1中为背景来进行描述,但是存储器保护电路6_1可以被提供为与处理单元1分离。指令缓冲器2临时存储要由处理单元1处理的程序。指令缓冲器2包括指令缓冲区域BUF_0至BUF_2。指令缓冲区域BUF_0至BUF_2临时存储与各个虚拟机相对应的程序。例如,可以通过总线10将指令(程序)提供给指令缓冲器2,或可以将存储在指令存储器(未示出)中的指令提供给指令缓冲器2。选择器3根据从虚拟机调度器5输出的虚拟机选择信号VM_SEL来选择指令缓冲区域BUF_0至BUF_2中的一个,并且将从选择的指令缓冲区域读出的程序输出到运算电路4。具体地,选择器3根据虚拟机选择信号VM_SEL来从多个虚拟机(VM#0至VM#2)中选择一个虚拟机,并且向运算电路4输出要在选择的虚拟机中执行的程序。注意,指令缓冲区域BUF_0至BUF_2分别对应于VM#0至VM#2。虚拟机调度器5输出虚拟机选择信号VM_SEL,该虚拟机选择信号VM_SEL指定根据预定调度程序在多个虚拟机中的在下一执行周期中对其分配执行时间的虚拟机的。更具体地说,虚拟机调度器5调度与从包括在指令缓冲器2中的指令缓冲区域BUF_0至BUF_2输出的程序相对应的虚拟机的顺序,并且输出虚拟机选择信号VM_SEL使得由运算电路4根据该调度来执行该程序。此外,虚拟机调度器5通过运算电路4来将与对应于在运算电路4中执行的程序的虚拟机有关的信息VM_n_M输出到存储器保护电路6_1。运算电路4基于由选择器3选择的程序来执行运算处理。更具体地说,运算电路4包括多个执行级,并且通过管线处理(pipelineprocessing)来执行运算处理。此外,运算电路4传送存储器地址ADD_M和写入数据WD_M以访问存储器11,并且根据执行该程序的结果来接收读取数据RD_M。通过总线10将从运算电路4传送的存储器地址ADD_M和写入数据WD_M提供给存储器11。图2是用于描述虚拟化技术的图。虚拟化技术是使单一硬件资源看起来像多个资源的技术。硬件资源与图1中所示的处理单元(CPU)1和存储器11、其他外围设备等相对应。如图2所示,在硬件资源和虚拟机之间的层级中提供超级管理程序。该超级管理程序是授权管理多个虚拟机(VM#0至VM#2)的软件。不同管理程序(操作系统OS#0至OS#2)在各个虚拟机(VM#0至VM#2)上进行操作。在各个管理程序(操作系统OS#0至OS#2)中操作不同应用程序#0至#2。通过以这种方式使用虚拟化技术,可以在一个操作单元(CPU)上操作多个虚拟机(VM#0至VM#2),由此能够在各个虚拟机上操作不同操作系统(OS#0至OS#2)。图3是用于描述由运算电路4执行的程序的顺序的一个示例的图。图3中所示的程序#00和#01(对应于虚拟机#0)被存储在包括在指令缓冲器2中的指令缓冲区域BUF_0中。类似地,程序#10和#11(对应于虚拟机#1)被存储在指令缓冲区域BUF_1中。程序#20和#21(对应于虚拟机#2)被存储在指令缓冲区域BUF_2中。图3作为示例示出了在虚拟机(VM#0)上执行程序#00和#01、在虚拟机(VM#1)上执行程序#10和#11并且在虚拟机(VM#2)上执行程序#20和#21的情况。选择器3根据从虚拟机调度器5输出的虚拟机选择信号VM_SEL来选择指令缓冲区域BUF_0至BUF_2中的任何一个,并且将从选择的指令缓冲区域读出的程序输出到运算电路4。图3中所示的示例示出了下述情况,在该情况中,在虚拟机调度器5中调度存储在指令缓冲区域BUF_0至BUF_2中的程序,以便于以程序#00、程序#10、程序#20、程序#01,…的顺序进行输出。以这种方式,使用运算电路4顺序地执行从选择器3输出的程序,由此能够在预先调度的多个虚拟机(VM#0至VM#2)上处理各个程序。注意图3中所示的由虚拟机处理的程序以及处理程序的顺序(虚拟机调度)仅是示例,并且可以任意地确定。图1中所示的存储器保护电路6_1包括存储器访问信息寄存器8和访问确定电路9。存储器访问信息寄存器8存储与能够由各个虚拟机访问的存储器11的存储器区域有关的存储器访问信息。当在运算电路4中执行与各个虚拟机相对应的程序时,虚拟机访问存储器11的存储器区域与运算电路4访问存储器11的存储器区域相同。更具体地说,虚拟机(运算电路4)将存储器地址ADD_M和写入数据WD_M传送到存储器11,或从存储器11接收读取数据RD_M,由此访问存储器11的存储器区域。除了存储器地址ADD_M外,例如,与对存储器11的访问的类型(写入访问/读取访问)有关的信息和与访问宽度(字节/半字/长字)有关的信息也被传送到存储器11和存储器保护电路6_1。此外,访问确定电路9(第一访问确定电路)基于当各个虚拟机访问存储器11时的存储器地址ADD_M、与访问该存储器11的虚拟机有关的信息VM_n_M以及存储在存储器访问信息寄存器8中的存储器访问信息,来确定是否允许虚拟机访问存储器区域。图4是示出根据该实施例的存储器保护电路6_1的一个示例的框图。如图4所示,存储器访问信息寄存器8包括存储器区域分配寄存器#0至#3以及存储器区域设定寄存器#0至#3。将与存储器11的存储器区域有关的存储器区域信息存储在各个存储器区域设定寄存器#0至#3中。在图4所示的示例中,存储器访问信息寄存器8包括四个存储器区域设定寄存器#0至#3,并且与存储器11的四个存储器区域#0至#3有关的信息分别被存储在存储器区域设定寄存器#0至#3中。总的来说,分别与存储器区域#0至#3相对应地提供存储器区域设定寄存器#0至#3。图5是示出包括在根据该实施例的存储器保护电路6_1中的存储器区域设定寄存器#0至#3的一个示例的图。如图5所示,各个存储器区域设定寄存器#0至#3都包括上限地址寄存器(MPUA0至MPUA3)、下限地址寄存器(MPLA0至MPLA3)以及属性寄存器(MPAT0至MPAT3)。上限地址寄存器(MPUA0至MPUA3)分别存储存储器区域#0至#3的上限地址。下限地址寄存器(MPLA0至MPLA3)分别存储存储器区域#0至#3的下限地址。例如,当将存储器区域#0至#3设定为存储器11的存储器区域时,在存储器区域设定寄存器#0的上限地址寄存器MPUA0中存储存储器区域#0的上限地址,并且在下限地址寄存器MPLA0中存储存储器区域#0的下限地址。在存储器区域设定寄存器#1的上限地址寄存器MPUA1中存储存储器区域#1的上限地址,并且在下限地址寄存器MPLA1中存储存储器区域#1的下限地址。在存储器区域设定寄存器#2的上限地址寄存器MPUA2中存储存储器区域#2的上限地址,并且在下限地址寄存器MPLA2中存储存储器区域#2的下限地址。在存储器区域设定寄存器#3的上限地址寄存器MPUA3中存储存储器区域#3的上限地址,并且在下限地址寄存器MPLA3中存储存储器区域#3的下限地址。此时,存储器11的存储器区域#0至#3通常被设定成彼此不重叠。此外,属性寄存器(MPAT0至MPAT3)存储各个存储器区域#0至#3的属性(即,允许/禁止写入和允许/禁止读取)。将与能够访问存储器区域#0至#3的虚拟机有关的信息存储在包括在图4所示的存储器访问信息寄存器8中的各个存储器区域分配寄存器#0至#3中。具体地,将与能够访问存储器区域#0至#3的虚拟机(VM#0至VM2)有关的信息存储在各个存储器区域分配寄存器#0至#3中。图6是示出存储在包括在根据该实施例的存储器保护电路6_1中的存储器区域分配寄存器#0至#3中的信息的一个示例的图。如图6所示,各个存储器区域分配寄存器#0至#3都包括存储器区域寄存器和虚拟机寄存器。与存储器区域(存储器区域#0至#3)有关的信息被存储在各个存储器区域寄存器中。此外,与能够访问各个存储器区域#0至#3的虚拟机(VM#0至VM#2)有关的信息被存储在各个虚拟机寄存器中。在图6所示的示例中,存储器区域#0被存储在存储器区域分配寄存器#0的存储器区域寄存器中,并且虚拟机VM#0被存储在虚拟机寄存器中。由此,能将虚拟机VM#0设定为能访问存储器区域#0的虚拟机。此外,存储器区域#1被存储在存储器区域分配寄存器#1的存储器区域寄存器中,并且虚拟机VM#0被存储在虚拟机寄存器中。因此,虚拟机VM#0被设定为能够访问存储器区域#1的虚拟机。此外,存储器区域#2被存储在存储器区域分配寄存器#2的存储器区域寄存器中,并且虚拟机VM#1被存储在虚拟机寄存器中。由此,将虚拟机VM#1设定为能访问存储器区域#2的虚拟机。此外,存储器区域#3被存储在存储器区域分配寄存器#3的存储器区域寄存器中,并且虚拟机VM#2被存储在虚拟机寄存器中。由此,将虚拟机VM#2设定为能访问存储器区域#3的虚拟机。例如,仅授权超级管理程序访问存储器区域分配寄存器#0至#3,并且不授权各个虚拟机(管理程序)访问存储器区域分配寄存器#0至#3,由此能够防止各个虚拟机将信息自由地重新写入存储器区域分配寄存器#0至#3。因此,对超级管理程序来说,可以管理由各个虚拟机使用的存储器区域,并且可以防止由各个虚拟机使用的存储器区域的干扰。此外,图4所示的访问确定电路9包括地址确定电路#0至#3、存储器访问确定电路#0到3、与电路(AND2_0至AND2_3)以及或电路(OR_1)。分别与存储器区域设定寄存器#0至#3相对应地提供地址确定电路#0至#3。地址确定电路#0至#3基于存储在各个存储器区域设定寄存器#0至#3中的存储器区域信息来确定当访问存储器11时从各个虚拟机VM#0至VM#2输出的存储器地址ADD_M是否被包括在各个存储器区域设定寄存器#0至#3中设定的存储器区域#0至#3中。例如,地址确定电路#0将在访问存储器11时从各个虚拟机VM#0至VM#2输出的存储器地址ADD_M与存储在存储器区域设定寄存器#0中的存储器区域#0的上限地址和下限地址进行比较。当存储器地址ADD_M在存储器区域#0的上限地址和下限地址的范围内时,地址确定电路#0确定该存储器地址ADD_M被包括在存储器区域设定寄存器#0中设定的存储器区域#0中。例如,在确定了存储器地址ADD_M被包括在存储器区域设定寄存器#0中设定的存储器区域#0中之后,地址确定电路#0将高电平信号“1”输出到AND2_0。另一方面,在确定了存储器地址ADD_M没有被包括在存储器区域设定寄存器#0中设定的存储器区域#0中之后,地址确定电路#0将低电平信号“0”输出到AND2_0。地址确定电路#1至地址确定电路#3与上述地址确定电路#0类似。分别与地址确定电路#0至#3相对应地提供存储器访问确定电路#0至#3。存储器访问确定电路#0至#3基于与虚拟机有关的信息VM_n_M和与访问该存储器11的机有关的信息来相应地掩蔽地址确定电路#0至#3中的确定结果,该虚拟机能够访问存储在各个存储器区域分配寄存器#0至#3中的各个存储器区域#0至#3。现在,通过运算电路4将与访问存储器11的虚拟机有关的信息VM_n_M从虚拟机调度器5提供给访问确定电路9,该虚拟机调度器5调度与各个程序相对应的虚拟机的顺序。具体地,虚拟机调度器5保持与在运算电路4中执行的程序相对应的虚拟机有关的信息。因此,虚拟机调度器5能够将与访问存储器11的虚拟机有关的信息VM_n_M输出到存储器访问确定电路#0至#3。存储器访问确定电路#0将从虚拟机调度器5输出的关于访问存储器11的虚拟机的信息VM_n_M与存储在存储器区域分配寄存器#0中的关于能访问存储器区域#0的虚拟机的信息进行比较。例如,存储器访问确定电路#0将能访问在存储器区域设定寄存器#0中设定的存储器区域#0的虚拟机与从虚拟机调度器5输出的关于访问该存储器11的虚拟机的信息VM_n_M进行比较。当与访问该存储器11的虚拟机有关的信息VM_n_M与能访问存储在存储器区域分配寄存器#0中的存储器区域#0的虚拟机VM#0匹配时,存储器访问确定电路#0确定该虚拟机VM#0能够访问该存储器11并且将高电平信号“1”输出到AND2_0。当从存储器访问确定电路#0输出的信号为高电平“1”时,在不掩蔽该确定结果的情况下,AND2_0将从地址确定电路#0输出的确定结果输出到OR_1。简而言之,AND2_0将从地址确定电路#0输出的确定结果直接输出到OR_1。另一方面,当与访问存储器11的虚拟机有关的信息VM_n_M不与能访问存储在存储器区域分配寄存器#0中的存储器区域#0的虚拟机匹配时,存储器访问确定电路#0确定禁止该虚拟机对存储器11的访问并且将低电平信号“0”输出到AND2_0。当从存储器访问确定电路#0输出的信号为低电平“0”时,AND2_0掩蔽从地址确定电路#0输出的确定结果。此时,不论从地址确定电路#0输出的确定结果如何,AND2_0都将低电平信号“0”输出到OR_1。存储器访问确定电路#1至#3与上述存储器访问确定电路#0类似。从存储器11读取RD_M的情况也与上述情况类似。OR_1输出从AND2_0至AND2_3提供的信号的OR运算结果,作为存储器访问确定结果OUT_M。具体地,当从AND2_0至AND2_3的任何一个输出高电平信号时,OR_1输出指示访问许可的高电平信号,作为存储器访问确定结果OUT_M。通过例如总线10,将从存储器保护电路6_1输出的存储器访问确定结果OUT_M提供给存储器11。当存储器访问确定结果OUT_M指示访问禁止时(即在低电平的情况下),存储器11禁用虚拟机(运算电路4)对存储器11的访问。同时,当存储器访问确定结果OUT_M指示访问许可时(即在高电平的情况下),存储器11启用虚拟机(运算电路4)对存储器11的访问。例如,将从存储器保护电路6_1输出的存储器访问确定结果OUT_M提供给运算电路4。在此情况下,当存储器访问确定结果OUT_M指示访问禁止时(即在低电平的情况下),运算电路4禁用虚拟机对存储器11的访问。同时,当存储器访问确定结果OUT_M指示访问许可时(即在高电平的情况下),运算电路4启用虚拟机对存储器11的访问。接着,将详细地描述访问确定电路9中的访问确定。首先,例如,将描述虚拟机VM#0访问存储器区域#2的情形。当虚拟机VM#0试图访问存储器区域#2时,运算电路4将对应于存储器区域2的存储器地址ADD_M输出到地址确定电路#0至#3。此外,虚拟机调度器5将指示虚拟机VM#0的信息VM_0_M通过运算电路4,输出到存储器访问确定电路#0至#3,作为与访问存储器11的虚拟机有关的信息VM_n_M。由于提供给地址确定电路#0至#3的存储器地址ADD_M是对应于存储器区域#2的存储器地址,因此,地址确定电路#2将高电平信号输出到AND2_2。同时,除地址确定电路#2外的地址确定电路#0、#1和#3将低电平信号分别输出到AND2_0、AND2_1和AND2_3。此外,由于对应于虚拟机VM#0的存储器区域是存储器区域#0和#1(见图6),当提供与访问该存储器11的虚拟机VM#0有关的信息VM_0_M时,存储器访问确定电路#0和#1分别将高电平信号输出到AND2_0和AND2_1。另一方面,当提供与访问存储器11的虚拟机VM#0有关的信息VM_0_M时,存储器访问确定电路#2和#3分别将低电平信号输出到AND2_2和AND2_3。由于从存储器访问确定电路#2输出的信号为低电平,因此,由AND2_2掩蔽从地址确定电路#2输出的高电平信号。由此,从AND2_2输出低电平信号。此外,由于从地址确定电路#0、#1和#3输出低电平信号,AND2_0、AND2_1和AND2_3的每一个输出低电平信号。因此,OR_1输出指示访问禁止的低电平信号,作为存储器访问确定结果OUT_M。用这种方式,禁止虚拟机VM#0访问存储器区域#2。将描述虚拟机VM#2访问存储器区域#3的另一情形。当虚拟机VM#2试图访问存储器区域#3时,运算电路4将对应于存储器区域#3的存储器地址ADD_M输出到地址确定电路#0至#3。此外,虚拟机调度器5通过运算电路4,将指示虚拟机VM#2的信息VM_2_M输出到存储器访问确定电路#0至#3,作为与访问该存储器11的虚拟机有关的信息VM_n_M。由于提供给地址确定电路#0至#3的存储器地址ADD_M是对应于存储器区域#3的存储器地址,因此,地址确定电路#3将高电平信号输出到AND2_3。另一方面,除地址确定电路#3外,地址确定电路#0至#2也分别将低电平信号输出到AND2_0至AND2_2。此外,由于对应于虚拟机VM#2的存储器区域是存储器区域#3,因此,当提供与访问存储器11的虚拟机VM#2有关的信息VM_2_M时,存储器访问确定电路#3将高电平信号输出到AND2_3。另一方面,当提供与访问存储器11的虚拟机VM#2有关的信息VM_2_M时,存储器访问确定电路#0至#2将低电平信号分别输出到AND2_0至AND2_2。由于从存储器访问确定电路#3输出的信号为高电平,因此,从地址确定电路#3输出的高电平信号不被AND2_3掩蔽。因此,从AND2_3输出高电平信号。因此,从OR_1输出指示访问许可的高电平信号,作为存储器访问确定结果OUT_M。用这种方式,许可虚拟机VM#2访问存储器区域#3。图7是用于描述使用虚拟化技术构建的系统的框图。如图7所示,当在根据本实施例的处理单元(CPU)中使用虚拟化技术时,可以使用单一硬件资源,操作多个虚拟机VM#0至VM#2(42_0至42_2)。可以分别在虚拟机VM#0至VM#2上操作不同的管理程序43_0至43_2(操作系统OS#0至OS#2)。授权超级管理程序41来管理虚拟机VM#0至VM#2。此外,授权超级管理程序41访问存储器保护电路6_1的存储器区域分配寄存器#0至#3。即,超级管理程序41重写存储器保护电路6_1的存储器区域分配寄存器#0至#3,由此能任意地设定能由各个虚拟机VM#0至VM#2访问的存储器区域#0至#3。接着,参考图8,将描述使用存储器保护电路6_1,控制虚拟机(运算电路4)对存储器11的访问的操作。尽管举例描述了虚拟机(运算电路4)将信息写入存储器11的操作,但虚拟机从存储器11读取信息的操作也类似。虚拟机调度器5根据预定调度程序,将指定向其分配执行时间的虚拟机的虚拟机选择信号VM_SEL输出到选择器3。此外,虚拟机调度器5将与对应于在运算电路4中执行的程序的虚拟机有关的信息VM_n_M输出到运算电路4(步骤S1)。选择器3将对应于根据虚拟机选择信号VM_SEL选择的虚拟机的程序输出到运算电路4(步骤S2)。当在虚拟机(运算电路4)中执行程序时,虚拟机(运算电路4)产生对存储器11的访问请求(步骤S3)。当产生对存储器11的访问请求时,虚拟机(运算电路4)将存储器地址ADD_M输出到存储器保护电路6_1的访问确定电路9(步骤S4)。此外,通过运算电路4,将从虚拟机调度器5输出的、与访问存储器的虚拟机有关的信息VM_n_M输出到访问确定电路9(步骤S5)。访问确定电路9确定是否允许虚拟机访问存储器11(步骤S6)。具体地,包括在访问确定电路9中的地址确定电路#0至#3基于在存储器区域设定寄存器#0至#3的每一个中存储的存储器区域信息,确定当访问存储器11时,从虚拟机VM#0至VM#2的每一个输出的存储器地址ADD_M是否包括在各个存储器区域设定寄存器#0至#3中设定的存储器区域#0至#3中。此时,当确定存储器地址ADD_M包括在存储器区域设定寄存器#0至#3中设定的存储器区域中时,地址确定电路#0至#3输出高电平信号“1”。此外,存储器访问确定电路#0至#3基于与能访问在各个存储器区域分配寄存器#0至#3中存储的各个存储器区域的虚拟机有关的信息和与访问存储器11的虚拟机有关的信息VM_n_M,分别掩蔽地址确定电路#0至#3中的确定结果。当访问确定电路9允许虚拟机访问存储器11时(步骤S7:是),启用虚拟机对存储器11的访问(步骤S8)。具体地,将写入数据WD_M写入存储器11的存储器地址ADD_M。另一方面,当访问确定电路9禁止虚拟机访问存储器11时(步骤S7:否),禁用虚拟机对存储器11的访问(步骤S9)。具体地,当从地址确定电路#0至#3中的一个地址确定电路输出高电平信号以及从对应于输出高电平信号的地址确定电路的存储器访问确定电路输出高电平信号时,访问确定电路9允许虚拟机访问存储器11。在这种情况下,将高电平信号输出为存储器访问确定结果OUT_M,以及启用虚拟机对存储器11的访问。另一方面,当从地址确定电路#0至#3中的一个地址确定电路输出高电平信号以及从对应于输出高电平信号的访问确定电路的存储器访问确定电路输出低电平信号时,访问确定电路9禁止虚拟机访问存储器11。在这种情况下,将低电平信号输出为存储器访问确定结果OUT_M,以及禁用虚拟机对存储器11的访问。如在
背景技术
:中所述,可以在一个CPU上操作多个虚拟机,例如,通过使用虚拟化技术。在这种情况下,可以在各个虚拟机上操作不同的OS和应用程序。然而,由于虚拟机共享单个物理存储器,因此,当在CPU中使用虚拟化技术时,要求防止虚拟机的每一个对存储器的访问的干扰。因此,要求提供一种存储器保护机构,控制每一虚拟机对存储器的访问。然而,当例如,将包括存储器保护功能和存储器转换功能的存储器管理单元(MMU)用作存储器保护机构时,要求大量硬件资源。因此,要求通过少量硬件资源,控制每一虚拟机对存储器的访问的存储器保护机构(存储器保护电路)。在根据该实施例的存储器保护电路6_1中,将与能由各个虚拟机访问的存储器区域有关的存储器访问信息存储在存储器访问信息寄存器8中。此外,使用访问确定电路9,基于当每一虚拟机访问存储器11时的存储器地址ADD_M、与访问存储器11的虚拟机有关的信息VM_n_M、以及在存储器访问信息寄存器8中存储的存储器访问信息,确定是否允许虚拟机访问存储器区域。根据该实施例,可以通过少量硬件资源,提供能控制每一虚拟机对存储器的访问的存储器保护电路。例如,处理单元(CPU)包括用在个人计算机等等中的微处理器和其功能专用于控制安装在其上的电子设备的微控制器。由于微处理器处理相当大量的存储器,通常将包括存储器保护功能和地址转换功能的存储器管理单元(MMU)安装为存储器保护机构。存储器管理单元(MMU)从微处理器接收虚拟地址以及将该虚拟地址转换成物理地址。在最近的存储器管理单元(MMU)中,包括快速重编址缓冲器(TLB),以便增加虚拟地址转换成物理地址的速度。TLB包括用来将虚拟地址转换成物理地址的页表条目。虚拟地址空间是从该过程看到的存储器空间,并划分成固定大小的页。页表存储虚拟页和物理存储器上的地址彼此关联的信息。当访问存储器空间时,微处理器使用虚拟地址,搜索TLB,如果存在对应于TLB中的虚拟地址的条目,微处理器发送回对应的物理地址,作为搜索结果(TLB命中)。同时,当不存在对应于TLB中的虚拟地址的条目时(TLB未命中)时,要求从存储器(存储不能在TLB中存储的页表条目的空间)中存储的页表搜索相应的条目。这称为表漫游(tablewalk)。在通过表漫游获得物理地址后,将物理地址和虚拟地址的映射存储在TLB中。由于在表漫游中要求读出多个位置中的存储器的内容和计算物理地址,花费时间来执行处理。另一方面,由于微控制器的功能专用于控制安装在其上的电子设备,不需要安装大量存储器以及将虚拟地址转换成物理地址的地址转换功能是不必要的。此外,在微控制器中要求节电和小面积。因此,当将存储器管理单元(MMU)安装为微控制器中的存储器保护机构时,增加了硬件资源的开销。此外,由于使用微控制器来控制电子设备,因此,实时属性很重要。然而,当将存储器管理单元(MMU)安装为微控制器的存储器保护机构时,在TLB未命中的情况下,表漫游发生,以及花费时间来执行处理,这损害了实时属性。因此,作为微控制器的存储器保护机构,最好使用不包括地址转换功能的存储器保护单元(MPU)而不是包括地址转换功能的MMU。因此,根据本实施例的存储器保护电路特别适用在节电、小面积和实时属性重要的微控制器中。具体地,在该实施例中,从运算电路4输出的存储器地址ADD_M是物理地址。由此,存储器保护电路6_1能将物理地址输出到存储器11,而不转换该物理地址。根据本实施例的存储器保护电路可以应用于包括地址转换功能的存储器保护电路,以及还可以应用于例如包括含地址转换功能的存储器管理单元(MMU)的微处理器。根据本实施例的存储器保护电路也可以应用于例如不要求地址转换功能的微处理器。根据上述的实施例,可以提供能通过少量硬件资源,控制每一虚拟机对存储器的访问的存储器保护电路、处理单元和存储器保护方法。<第二实施例>接着,将描述第二实施例。图9是用于描述包括根据该实施例的存储器保护电路的处理单元的框图。在该实施例中,不同于在第一实施例中描述的存储器保护电路,存储器保护电路6_2包括寄存器I/F(7)。其他结构与第一实施例相同。由此,用相同的参考符号表示相同的部件,以及将省略重复的描述。图9中所示的处理单元1包括指令缓冲器2、选择器3、运算电路4、虚拟机调度器5和存储器保护电路6_2。存储器保护电路6_2包括寄存器I/F(7)、存储器访问信息寄存器8和访问确定电路9。图10是根据该实施例的存储器保护电路6_2的一个示例的框图。寄存器I/F(7)包括访问解码电路30、寄存器访问确定电路#0至#3以及与电路(AND1_0至AND1_3)。虚拟机访问各个存储器区域设定寄存器#0至#3,由此能向/从存储器区域设定寄存器#0至#3的上限地址寄存器(MPUA0至MPUA3)、下限地址寄存器(MPLA0至MPLA3)以及属性寄存器(MPAT0至MPAT3)写入/读取数据。寄存器I/F(7)是控制各个虚拟机对存储器区域设定寄存器#0至#3的访问的电路。当虚拟机访问存储器区域设定寄存器#0至#3时,虚拟机(运算电路4)的每一个将寄存器地址ADD_R和写入数据WD_R传送到寄存器I/F(7)。此外,虚拟机调度器5将与对应于在运算电路4中执行的程序的虚拟机有关的信息VM_n_M输出到寄存器I/F(7)。通过在运算电路4中执行的程序,执行虚拟机对存储器区域设定寄存器#0至#3的访问。访问解码电路30接收从虚拟机(运算电路4)输出的寄存器地址ADD_R和写入数据WD_R,以及将寄存器地址ADD_R和写入数据WD_R输出到对应于所接收的寄存器地址ADD_R的存储器区域设定寄存器#0至#3(即AND1_0至AND1_3)。具体地,不同的寄存器地址ADD_R包括在各个存储器区域设定寄存器#0至#3中,以及访问解码电路30根据所接收的寄存器地址ADD_R,控制对存储器区域设定寄存器#0至#3的访问。例如,访问解码电路30将待写入的地址信息和数据信息与所输入的寄存器地址ADD_R和写入数据WD_R的信息分开,以及执行解码以便将信息适当地输入到在存储器区域设定寄存器#0至#3的前一级提供的存储器区域设定寄存器#0至#3或AND1_0至AND1_3。分别对应于存储器区域设定寄存器#0至#3,提供寄存器访问确定电路#0至#3。寄存器访问确定电路#0至3的每一个基于与能访问在各个存储器区域分配寄存器#0至#3中存储的各个存储器区域设定寄存器#0至#3的虚拟机有关的信息和与访问存储器区域设定寄存器#0至#3的虚拟机有关的信息VM_n_M,确定是否允许虚拟机访问存储器区域设定寄存器#0至#3。通过运算电路4,将与访问各个存储器区域设定寄存器#0至#3的虚拟机有关的信息VM_n_M从调度对应于各个程序的虚拟机的顺序的虚拟机调度器5提供给寄存器访问确定电路#0至#3。具体地,虚拟机调度器5保留与在运算电路4中执行的程序对应的虚拟机有关的信息。因此,虚拟机调度器5能将与访问各个存储器区域设定寄存器#0至#3的虚拟机有关的信息VM_n_M输出到寄存器访问确定电路#0至#3。寄存器访问确定电路#0将从虚拟机调度器5输出的、与访问各个存储器区域设定寄存器#0至#3的虚拟机有关的信息VM_n_M和与能访问在各个存储器区域分配寄存器#0至#3(即,对应于存储器区域设定寄存器#0至#3)中存储的各个存储器区域#0至#3的虚拟机有关的信息进行比较(参见图6)。例如,寄存器访问确定电路#0将能访问与存储器区域#0对应的存储器区域设定寄存器#0的虚拟机VM#0与从虚拟机调度器5输出的、与访问存储器区域设定寄存器的虚拟机有关的信息VM_n_M进行比较。当与访问存储器区域设定寄存器的虚拟机有关的信息VM_n_M与能访问在存储器区域分配寄存器#0中存储的存储器区域#0的虚拟机VM#0匹配时,寄存器访问确定电路#0确定虚拟机VM#0能访问存储器区域设定寄存器#0,以及将高电平信号“1”输出到AND1_0。当从寄存器访问确定电路#0输出的信号是高电平“1”时,AND1_0将从访问解码电路30输出的寄存器地址ADD_R和写入数据WD_R输出到存储器区域设定寄存器#0,而不掩蔽寄存器地址ADD_R和写入数据WD_R。总的来说,AND1_0将从访问解码电路30输出的寄存器地址ADD_R和写入数据WD_R直接输出到存储器区域设定寄存器#0。另一方面,当与访问存储器区域设定寄存器的虚拟机有关的信息VM_n_M与能访问存储器区域分配寄存器#0中存储的存储器区域#0的虚拟机VM#0不匹配时,寄存器访问确定电路#0确定禁止虚拟机访问存储器区域设定寄存器#0,以及将低电平信号“0”输出到AND1_0。当从寄存器访问确定电路#0输出的信号是低电平“0”时,AND1_0掩蔽从访问解码电路30输出的寄存器地址ADD_R和写入数据WD_R。寄存器访问确定电路#1至#3与上述寄存器访问确定电路#0类似。接着,将描述存储器保护电路6_2的操作。图11是用于描述根据本实施例的存储器保护电路6_2的操作的流程图,以及示出了当虚拟机将信息重写到存储器区域设定寄存器#0至#3中的流程。虚拟机调度器5根据预定调度程序,将指定向其分配执行时间的虚拟机的虚拟机选择信号VM_SEL输出到选择器3。此外,虚拟机调度器5将与对应于在运算电路4中执行的程序的虚拟机有关的信息VM_n_M输出到运算电路4(步骤S11)。选择器3将对应于根据虚拟机选择信号VM_SEL选择的虚拟机的程序输出到运算电路4(步骤S12)。然后,虚拟机(运算电路4)执行程序以指令写入存储器区域设定寄存器#0至#3(步骤S13)。当执行指令写入存储器区域设定寄存器#0至#3的程序时,虚拟机(运算电路4)将寄存器地址ADD_R和写入数据WD_R输出到存储器保护电路6_2的寄存器I/F(7)。访问解码电路30执行访问解码处理(步骤S15)。具体地,访问解码电路30接收从虚拟机(运算电路4)输出的寄存器地址ADD_R和写入数据WD_R,以及将寄存器地址ADD_R和写入数据WD_R输出到与所接收的寄存器地址ADD_R对应的存储器区域设定寄存器#0至#3(即,AND1_0至AND1_3)。此外,将从虚拟机调度器5输出的、与访问存储器区域设定寄存器#0至#3的虚拟机有关的信息VM_n_M通过运算电路4输出到寄存器I/F(7)(步骤S16)。接着,寄存器访问确定电路#0至#3执行寄存器访问确定处理(步骤S17)。具体地,寄存器访问确定电路#0至#3基于与能访问在各个存储器区域分配寄存器#0至#3中存储的各个存储器区域设定寄存器#0至#3的虚拟机有关的信息和与访问存储器区域设定寄存器#0至#3的虚拟机有关的信息VM_n_M,确定是否允许虚拟机访问存储器区域设定寄存器#0至#3。当寄存器访问确定电路#0至#3允许虚拟机访问存储器区域设定寄存器#0至#3时(步骤S18:是),虚拟机(运算电路4)使用寄存器地址ADD_R和写入数据WD_R,执行写入存储器区域设定寄存器#0至#3(步骤S19)。同时,当寄存器访问确定电路#0至#3禁止虚拟机访问存储器区域设定寄存器#0至#3时(步骤S18:否),禁止由虚拟机(运算电路4)写入存储器区域设定寄存器#0至#3(步骤S20)。注意,包括在存储器保护电路6_2中的存储器访问信息寄存器8和访问确定电路9的结构和操作与第一实施例类似。<第三实施例>接着,将描述第三实施例。图12是用于描述包括根据该实施例的存储器保护电路的处理单元21的框图。根据该实施例,与第一和第二实施例相比,指令缓冲器22、选择器23和虚拟机/线程调度器25的结构不同。其他结构与第一实施例类似。由此,用相同的参考符号表示相同的部件,以及将省略重复的描述。图12中所示的处理单元21包括指令缓冲器22、选择器23、运算电路4、虚拟机/线程调度器25和存储器保护电路6_1。存储器保护电路6_1包括存储器访问信息寄存器8和访问确定电路9。指令缓冲器22临时存储将由处理单元21处理的指令。指令缓冲器22包括指令缓冲区域BUF_A至BUF_D。指令缓冲区域BUF_A至BUF_D临时存储对应于各个线程的指令。可以通过例如总线10,将指令提供给指令缓冲器22,或可以将在指令存储器(未示出)中存储的指令提供给指令缓冲器22。选择器23根据从虚拟机/线程调度器25输出的线程选择信号T_SEL,选择指令缓冲区域BUF_A至BUF_D中的一个,以及将从被选指令缓冲区域读出的指令输出到运算电路4。具体地,选择器23根据线程选择信号T_SEL,从多个线程(线程A至线程D)中选择一个线程,以及将从被选线程输出的指令输出到运算电路4。指令缓冲区域BUF_A至BUF_D分别对应于线程A至线程D。虚拟机/线程调度器25根据预定调度程序,输出从多个线程中,指定将在下一执行周期中执行的一个线程的线程选择信号T_SEL。具体地,虚拟机/线程调度器25调度从包括在指令缓冲器22中的指令缓冲区域BUF_A至BUF_D输出的指令的顺序,以及输出线程选择信号T_SEL以便根据调度,在运算电路4中执行指令。此外,虚拟机/线程调度器25通过运算电路4,将与在运算电路4中执行的指令对应的虚拟机有关的信息VM_n_M输出到存储器保护电路6_1。运算电路4基于由选择器3选择的指令,执行运算处理。更具体地说,运算电路4包括多个执行级,以及通过管线处理,执行运算处理。此外,运算电路4传送寄存器地址ADD_R和写入数据WD_R以访问存储器11,以及根据执行指令的结果,接收读取数据RD_M。从运算电路4传送的寄存器地址ADD_M和写入数据WD_M通过总线10提供给存储器11。图13是用于描述由运算电路4执行的指令顺序的一个示例的图。图13中所示的指令A0至A7(对应于线程A)存储于包括在指令缓冲器22中的指令缓冲区域BUF_A中。类似地,指令B0至B7(对应于线程B)存储于指令缓冲区域BUF_B中。指令C0至C7(对应于线程C)存储于指令缓冲区域BUF_C中。指令D0至D7(对应于线程D)存储于指令缓冲区域BUF_D中。图13举例示出了在虚拟机(VM#0)上执行指令A0至A7(线程A)和指令B0至B7(线程B),在虚拟机(VM#1)上执行指令C0至C7(线程C),以及在虚拟机(VM#2)上执行指令D0至D7(线程D)的情况。选择器23根据从虚拟机/线程调度器25输出的线程选择信号T_SEL,选择指令缓冲区域BUF_A至BUF_D中的一个,以便将从被选指令缓冲区域读出的指令输出到运算电路4。图13中所示的示例表示在虚拟机/线程调度器25中,调度在指令缓冲区域BUF_A至BUF_D中存储的指令以便按指令A0、指令B0、指令C0、指令D0、指令A1,…的顺序输出的情形。用这种方式,通过使用运算电路4,顺序地执行从选择器23输出的指令,可以在多个虚拟机(VM#0至VM#2)上并行地处理指令。图13中所示的由虚拟机处理的指令(线程)以及指令的处理顺序(线程调度)仅是示例,其可以任意地确定。在第一和第二实施例中,虚拟机调度器5根据预定调度程序,在多个虚拟机中,指定在下一执行周期中,向其分配执行时间的虚拟机。即,虚拟机调度器5调度对应于从包括在指令缓冲器2中的指令缓冲区域BUF_0至BUF_2输出的程序的虚拟机的顺序来输出虚拟机选择信号VM_SEL,以便根据该调度,由运算电路4执行程序。同时,在该实施例中,虚拟机/线程调度器25根据预定调度程序,在多个线程中,指定将在下一执行周期中执行的一个线程。具体地,虚拟机/线程调度器25调度从包括在指令缓冲器22中的指令缓冲区域BUF_A至BUF_D输出的指令的顺序来输出线程选择信号T_SEL,以便根据该调度,由运算电路4执行指令。此时,虚拟机/线程调度器25将与在运算电路4中执行的指令对应的虚拟机有关的信息VM_n_M通过运算电路4输出到存储器保护电路6_1。其他结构和操作与在第一和第二实施例中所述的类似。由此,将省略重复的描述。<第四实施例>接着,将描述第四实施例。根据该实施例的存储器保护电路不同于根据第一至第三实施例的存储器保护电路6_1和6_2之处在于仅授权超级管理程序访问存储器区域设定寄存器#0至#3。其他要点与在第一至第三实施例中类似。因此,用相同的参考符号表示相同的部件,以及将省略重复的描述。图14是示出根据该实施例的存储器保护电路的一个示例的框图。如图14所示,根据该实施例的存储器保护电路6_3包括存储器访问信息寄存器51和访问确定电路9。存储器访问信息寄存器51包括存储器区域分配寄存器#0至#3和存储器区域设定寄存器#0至#3。此外,访问确定电路9包括访问确定电路#0至#3、存储器访问确定电路#0至#3、与电路(AND2_0至AND2_3)以及或电路(OR_1)。访问确定电路9的结构和操作与在第一实施例中所述的访问确定电路9类似。由此,将省略重复的描述。将与能访问各个存储器区域#0到#3的虚拟机有关的信息存储在存储器访问信息寄存器51中包括的各个存储器区域分配寄存器#0至#3中。此外,与存储器11的存储器区域#0至#3有关的存储器区域信息存储在各个存储器区域设定寄存器#0至#3中。在根据本实施例的存储器保护电路6_3中,除授权访问存储器区域分配寄存器#0至#3外,还授权超级管理程序41访问存储器区域设定寄存器#0至#3。具体地,如与第一实施例类似,仅授权超级管理程序41访问存储器区域分配寄存器#0至#3,以及不授权虚拟机(管理程序)的每一个访问存储器区域分配寄存器#0至#3,由此能防止虚拟机的每一个自由地将信息重写入存储器区域分配寄存器#0至#3中。此外,在根据该实施例的存储器保护电路6_3中,仅授权超级管理程序41访问存储器区域设定寄存器#0至#3,以及不授权虚拟机(管理程序)的每一个访问存储器区域设定寄存器#0至#3,由此,能防止虚拟机的每一个将信息重写入存储器区域设定寄存器#0至#3。根据这种结构,超级管理程序可以更严格地管理由各个虚拟机使用的存储器区域,以及可以更可靠地防止由各个虚拟机使用的存储器区域的干扰。存储器访问信息寄存器51的其他结构和操作与在第一实施例中所述的存储器访问信息寄存器8类似。由此,将省略重复的描述。同时在该实施例中,可以提供能通过少量硬件资源,控制每一虚拟机对存储器的访问的存储器保护电路、处理单元和存储器保护方法。<第五实施例>接着,将描述第五实施例。在根据该实施例的存储器保护电路中,存储器访问信息寄存器和访问确定电路的结构和操作不同于在第一至第三实施例中所述的存储器保护电路6_1和6_2中包括的存储器访问信息寄存器8和访问确定电路9。其他要点与第一至第三实施例类似。由此,将适当地省略重复的描述。图15是示出根据该实施例的存储器保护电路的一个示例的框图。如图15所示,根据该实施例的存储器保护电路6_4包括存储器访问信息寄存器61和访问确定电路62。访问确定电路62包括地址确定电路63和存储器访问确定电路64。存储器访问信息寄存器61存储与能由各个虚拟机访问的存储器区域有关的存储器访问信息。图16是示出在根据该实施例的存储器保护电路6_4中包括的存储器访问信息寄存器61中存储的信息的一个示例的表。如图16所示,在存储器访问信息寄存器61中,存储了存储器区域#0至#3、与各个存储器区域#0至#3对应的地址范围,以及与能访问各个存储器区域#0至#3的虚拟机有关的信息。如图16所示,存储器区域#0的地址范围是地址a至地址b,以及虚拟机VM#0能访问存储器区域#0。存储器区域#1的地址范围是地址c至地址d,以及虚拟机VM#0能访问存储器区域#1。存储器区域#2的地址范围是地址e至地址f,以及虚拟机VM#1能访问存储器区域#2。存储器区域#3的地址范围是地址g至地址h,以及虚拟机VM#2能访问存储器区域#3。仅授权超级管理程序访问存储器访问信息寄存器61,以及不授权虚拟机(管理程序)的每一个访问存储器访问信息寄存器61,由此能防止虚拟机的每一个自由地重写在存储器访问信息寄存器61中存储的存储器访问信息。因此,超级管理程序可以管理由各个虚拟机使用的存储器区域,以及可以防止由各个虚拟机使用的存储器区域的干扰。包括在访问确定电路62中的地址确定电路63基于在存储器访问信息寄存器61中存储的存储器访问信息,输出与允许访问与当访问存储器11时,从虚拟机的每一个输出的存储器地址ADD_M对应的存储器区域的虚拟机有关的信息VM_n_M’。例如,地址确定电路63将从当访问存储器11时,从虚拟机VM#0至#2的每一个输出的存储器地址ADD_M与在存储器访问信息寄存器61中存储的存储器访问信息(具体地,图16中的地址范围)进行比较。然后,地址确定电路63将与包括存储器地址ADD_M的地址范围对应的虚拟机有关的信息VM_n_M’输出到存储器访问确定电路64。例如,当在地址a至地址b的范围中包括存储器地址ADD_M时,地址确定电路63将与该地址范围对应的虚拟机VM#0有关的信息VM_0_M’输出到存储器访问确定电路64。存储器访问确定电路64基于从地址确定电路63输出的、与允许访问存储器区域的虚拟机有关的信息VM_n_M’和当访问存储器11时,从虚拟机的每一个输出的、与访问存储器11的虚拟机有关的信息VM_n_M,确定是否允许虚拟机访问存储器11。从虚拟机调度器5(见图1)或虚拟机/线程调度器25(见图12)提供将与访问存储器11的虚拟机有关的信息VM_n_M。具体地,虚拟机调度器5(在第三实施例的情况下,虚拟机/线程调度器25)保留与在运算电路4中执行的指令对应的虚拟机有关的信息。因此,虚拟机调度器5能将与访问存储器11的虚拟机有关的信息VM_n_M输出到存储器访问确定电路64。存储器访问确定电路64将从虚拟机调度器5输出的、与访问存储器11的虚拟机有关的信息VM_n_M与从地址确定电路63输出的、与允许访问存储器区域的虚拟机有关的信息VM_n_M’进行比较。当从虚拟机调度器5输出的VM_n_M与从地址确定电路63输出的VM_n_M’匹配时,存储器访问确定电路64确定该虚拟机能访问存储器11,以及将指示访问许可的高电平信号输出为存储器访问确定结果OUT_M。同时,当从虚拟机调度器5输出的VM_n_M与从地址确定电路63输出的VM_n_M’不匹配时,存储器访问确定电路64确定禁止由该虚拟机访问存储器11,以及将指示访问禁止的低电平信号输出为存储器访问确定结果OUT_M。例如,通过图1中所示的总线10,将从存储器保护电路6_4输出的存储器访问确定结果OUT_M提供给存储器11。当存储器访问确定结果OUT_M指示访问禁止时(即在低电平的情况下),存储器11禁用虚拟机(运算电路4)对存储器11的访问。同时,当存储器访问确定结果OUT_M指示访问许可时(即在高电平的情况下),存储器11启用虚拟机(运算电路4)对存储器11的访问。例如,可以将从存储器保护电路6_4输出的存储器访问确定结果OUT_M提供给运算电路4。在这种情况下,当存储器访问确定结果OUT_M指示访问禁止时(即在低电平的情况下),运算电路4禁用虚拟机对存储器11的访问。同时,当存储器访问确定结果OUT_M指示访问许可时(即在高电平的情况下),运算电路4启用虚拟机对存储器11的访问。接着,将详细地描述访问确定电路62中的访问确定。首先,举例来说,将描述虚拟机VM#0访问存储器区域#2的情形。当虚拟机VM#0试图访问存储器区域#2时,运算电路4将对应于存储器区域#2的存储器地址ADD_M输出到地址确定电路63。由于存储器地址ADD_M包括在与存储器区域#2对应的地址范围中(地址e至地址f),地址确定电路63将与该地址范围对应的虚拟机VM#1有关的信息VM_1_M'输出到存储器访问确定电路64。此外,虚拟机调度器5将指示虚拟机VM#0的信息VM_0_M输出到存储器访问确定电路64,作为与访问存储器11的虚拟机有关的信息VM_n_M。存储器访问确定电路64将从虚拟机调度器5输出的、与访问存储器11的虚拟机VM#0有关的信息VM_0_M与从地址确定电路63输出的、与允许访问存储器区域#2的虚拟机VM#1有关的信息VM_1_M'进行比较。在这种情况下,从虚拟机调度器5输出的VM_0_M与从地址确定电路63输出的VM_1_M'不匹配。由此,存储器访问确定电路64确定禁止虚拟机VM#0访问存储器区域#2,以及输出表示访问禁止的低电平信号,作为存储器访问确定结果OUT_M。用这种方式,禁止虚拟机VM#0访问存储器区域#2。将描述虚拟机VM#2访问存储器区域#3的另一示例。当虚拟机VM#2试图访问存储器区域#3时,运算电路4将对应于存储器区域#3的存储器地址ADD_M输出到地址确定电路63。由于存储器地址ADD_M包括在与存储器区域#3对应的地址范围中(地址g至地址h),地址确定电路63将与该地址范围对应的虚拟机VM#2有关的信息VM_2_M'输出到存储器访问确定电路64。此外,虚拟机调度器5将指示虚拟机VM#2的信息VM_2_M输出到存储器访问确定电路64,作为与访问存储器11的虚拟机有关的信息VM_n_M。存储器访问确定电路64将从虚拟机调度器5输出的、与访问存储器11的虚拟机VM#2有关的信息VM_2_M与从地址确定电路63输出的、与允许访问存储器区域#3的虚拟机VM#2有关的信息VM_2_M'进行比较。在这种情况下,由于从虚拟机调度器5输出的VM_2_M与从地址确定电路63输出的VM_2_M'匹配,存储器访问确定电路64确定允许虚拟机VM#2访问存储器区域#3,以及将指示访问许可的高电平信号输出为存储器访问确定结果OUT_M。用这种方式,允许虚拟机VM#2访问存储器区域#3。根据上述实施例,可以提供能通过少量硬件资源,控制每一虚拟机对存储器的访问的存储器保护电路、处理单元和存储器保护方法。<第六实施例>接着,将描述第六实施例。根据该实施例的存储器保护电路不同于第五实施例之处在于将寄存器I/F添加到在第五实施例中所述的存储器保护电路6_4中。其他部件与第五实施例类似。由此,将适当地省略重复的描述。图17是示出根据该实施例的存储器保护电路的一个示例的框图。如图17所示,根据该实施例的存储器保护电路6_5包括寄存器I/F(71)、存储器访问信息寄存器61和访问确定电路62。存储器访问信息寄存器61和访问确定电路62的结构和操作与在第五实施例中所述的存储器访问信息寄存器61和访问确定电路62类似。由此,将省略重复的描述。在根据该实施例的存储器保护电路6_5中,可以由每一虚拟机重写在存储器访问信息寄存器61中存储的存储器访问信息的一部分。每一虚拟机对存储器访问信息寄存器61的访问受寄存器I/F(71)限制。下面将描述详情。寄存器I/F(71)包括寄存器访问信息寄存器72、寄存器地址确定电路73和寄存器访问确定电路74。将与能由每一虚拟机访问的存储器访问信息寄存器区域有关的寄存器访问信息存储在寄存器访问信息寄存器72中。存储器访问信息寄存器区域是包括在存储器访问信息寄存器61中的多个寄存器区域。图18是示出在根据该实施例的存储器保护电路6_5中包括的寄存器访问信息寄存器72中存储的信息的一个示例的表。如图18所示,在寄存器访问信息寄存器72中,存储了存储器区域#0至#3、存储与各个存储器区域#0至#3有关的信息的寄存器地址范围,以及与能访问存储器区域#0至#3的虚拟机有关的信息。与各个存储器区域#0至#3有关的信息是图16的表中所示的、与存储器区域#0至#3对应的地址范围。此外,存储与各个存储器区域#0至#3有关的信息的寄存器地址范围是图16的表中所示的、存储与存储器区域#0至#3对应的地址范围的存储器访问信息寄存器61的寄存器地址范围。例如,存储与存储器区域#0有关的信息的寄存器地址范围是其中存储图16的表中所示的、对应于存储器区域#0的地址范围(地址a至地址b)的存储器访问信息寄存器61的寄存器地址范围(寄存器地址a'至寄存器地址b')。如图18所示,存储器区域#0的寄存器地址范围是寄存器地址a'至寄存器地址b',以及虚拟机VM#0能访问在存储器访问信息寄存器61中存储与存储器区域#0有关的信息(即,寄存器地址a'至寄存器地址b')的区域。存储器区域#1的寄存器地址范围是寄存器地址c'至寄存器地址d',以及虚拟机VM#0能访问在存储器访问信息寄存器61中存储与存储器区域#1有关的信息(即,寄存器地址c'至寄存器地址d')的区域。存储器区域#2的寄存器地址范围是寄存器地址e'至寄存器地址f',以及虚拟机VM#1能访问在存储器访问信息寄存器61中存储与存储器区域#2有关的信息(即,寄存器地址e'至寄存器地址f')的区域。存储器区域#3的寄存器地址范围是寄存器地址g'至寄存器地址h',以及虚拟机VM#2能访问在存储器访问信息寄存器61中存储与存储器区域#3有关的信息(即,寄存器地址g'至寄存器地址h')的区域。在该实施例中,虚拟机能仅重写图16的表中所示的、与存储器区域#0至#3对应的地址范围有关的信息,以及不能重写与能访问各个存储器区域#0至#3的虚拟机有关的信息。总的来说,仅超级管理程序能重写与能访问各个存储器区域#0至#3的虚拟机有关的信息。仅授权超级管理程序访问寄存器访问信息寄存器72,以及不授权虚拟机(管理程序)的每一个访问寄存器访问信息寄存器72,由此能防止虚拟机的每一个自由地重写在寄存器访问信息寄存器72中存储的寄存器访问信息。因此,超级管理程序可以管理由各个虚拟机使用的存储器区域,以及可以防止由各个虚拟机使用的存储器区域的干扰。寄存器地址确定电路73和寄存器访问确定电路74形成第二访问确定电路。第二访问确定电路基于当虚拟机的每一个访问存储器访问信息寄存器61时的寄存器地址ADD_R、与访问存储器访问信息寄存器61的虚拟机有关的信息VM_n_M以及在寄存器访问信息寄存器72中存储的寄存器访问信息,确定是否允许该虚拟机访问存储器访问信息寄存器61。具体地,寄存器地址确定电路73基于寄存器访问信息,输出与允许访问与当访问存储器访问信息寄存器61时,从虚拟机的每一个输出的寄存器地址ADD_R对应的寄存器区域的虚拟机有关的信息VM_n_M''。例如,寄存器地址确定电路73将当访问存储器访问信息寄存器61时,从虚拟机VM#0至VM#2的每一个输出的寄存器地址ADD_R与在寄存器访问信息寄存器72中存储的寄存器访问信息(具体地,图14中的寄存器地址范围)进行比较。然后,寄存器地址确定电路73将与包括寄存器地址ADD_R的寄存器地址范围对应的虚拟机有关的信息VM_n_M''输出到寄存器访问确定电路74。例如,当寄存器地址ADD_R包括在寄存器地址a'至寄存器地址b'的范围中时,寄存器地址确定电路73将与该寄存器地址范围对应的虚拟机VM#0有关的信息VM_0_M''输出到寄存器访问确定电路74。寄存器访问确定电路74基于从寄存器地址确定电路73输出的、与允许访问存储器访问信息寄存器区域的虚拟机有关的信息VM_n_M''和当访问存储器访问信息寄存器61时,从虚拟机的每一个输出的、与访问存储器访问信息寄存器61的虚拟机有关的信息VM_n_M,确定是否允许虚拟机访问存储器访问信息寄存器61。从虚拟机调度器5(见图1)或虚拟机/线程调度器25(见图12)提供与访问存储器访问信息寄存器61的虚拟机有关的信息VM_n_M。具体地,虚拟机调度器5(在第三实施例中,虚拟机/线程调度器25)保留与在运算电路4中执行的指令对应的虚拟机有关的信息。由此,虚拟机调度器5能将与访问存储器访问信息寄存器61的虚拟机有关的信息VM_n_M输出到寄存器访问确定电路74。寄存器访问确定电路74将从虚拟机调度器5输出的、与访问存储器访问信息寄存器61的虚拟机有关的信息VM_n_M与从寄存器地址确定电路73输出的、与允许访问存储器访问信息寄存器区域的虚拟机有关的信息VM_n_M''进行比较。当从虚拟机调度器5输出的VM_n_M与从寄存器地址确定电路73输出的VM_n_M''匹配时,寄存器访问确定电路74确定虚拟机能访问存储器访问信息寄存器61,以及将指示访问许可的高电平信号输出为寄存器访问确定结果OUT_R。同时,从虚拟机调度器5输出的VM_n_M与从寄存器地址确定电路73输出的VM_n_M''不匹配,寄存器访问确定电路74确定禁止虚拟机访问存储器访问信息寄存器61,以及将指示访问禁止的低电平信号输出为寄存器访问确定结果OUT_R。从寄存器访问确定电路74输出的寄存器访问确定结果OUT_R提供给存储器访问信息寄存器61。当寄存器访问确定结果OUT_R指示访问禁止时(即在低电平的情况下),存储器访问信息寄存器61禁止虚拟机(运算电路4)访问WD_R。同时,当寄存器访问确定结果OUT_R指示访问许可(即在高电平的情况下),存储器访问信息寄存器61启用虚拟机(运算电路4)访问WD_R。可以将从寄存器访问确定电路74输出的寄存器访问确定结果OUT_R提供给例如运算电路4。在这种情况下,当寄存器访问确定结果OUT_R指示访问禁止(在低电平的情况下),运算电路4禁用虚拟机对存储器访问信息寄存器61的访问WD_R。另一方面,当寄存器访问确定结果OUT_R指示访问许可(即在高电平的情况下),运算电路4启用虚拟机对存储器访问信息寄存器61的访问WD_R。接着,将详细地描述寄存器I/F(71)中的访问确定。首先,举例来说,描述虚拟机VM#0访问存储与存储器区域#2有关的信息的寄存器地址范围(在下文中,称为对应于存储器区域#2的寄存器地址范围)。当虚拟机VM#0试图访问对应于存储器区域#2的寄存器地址范围时,运算电路4将与对应于存储器区域#2的寄存器地址范围对应的地址ADD_R(寄存器地址e'至寄存器地址f')输出到寄存器地址确定电路73。由于地址ADD_R包括在对应于存储器区域#2的寄存器地址范围中(寄存器地址e'至寄存器地址f'),寄存器地址确定电路73将与该寄存器地址范围对应的虚拟机VM#1有关的信息VM_1_M''输出到寄存器访问确定电路74。此外,虚拟机调度器5将指示虚拟机VM#0的信息VM_0_M输出到寄存器访问确定电路74,作为与访问存储器访问信息寄存器61的虚拟机有关的信息VM_n_M。寄存器访问确定电路74将从虚拟机调度器5输出的VM_0_M与从寄存器地址确定电路73输出的VM_1_M''比较。在这种情况下,从虚拟机调度器5输出的VM_0_M与从寄存器地址确定电路73输出的VM_1_M''不匹配。因此,寄存器访问确定电路74确定禁止虚拟机VM#0访问对应于存储器区域#2的寄存器地址范围(寄存器地址e'至寄存器地址f'),以及将指示访问禁止的低电平信号输出为寄存器访问确定结果OUT_R。用这种方式,禁止虚拟机VM#0访问对应于存储器区域#2的寄存器地址范围(寄存器地址e'至寄存器地址f')。将描述虚拟机VM#2访问对应于存储器区域#3的寄存器地址范围的另一示例。当虚拟机VM#2试图访问对应于存储器区域#3的寄存器地址范围(寄存器地址g'至寄存器地址h')时,运算电路4将与对应于存储器区域#3的寄存器地址范围(寄存器地址g'至寄存器地址h')对应的寄存器地址ADD_R输出到寄存器地址确定电路73。由于寄存器地址ADD_R包括在对应于存储器区域#3的寄存器地址范围(寄存器地址g'至寄存器地址h')中,寄存器地址确定电路73将与寄存器地址范围对应的虚拟机VM#2有关的信息VM_2_M''输出到寄存器访问确定电路74。此外,虚拟机调度器5将指示虚拟机VM#2的信息VM_2_M输出到寄存器访问确定电路74,作为与访问存储器访问信息寄存器61的虚拟机有关的信息VM_n_M。寄存器访问确定电路74将从虚拟机调度器5输出的VM_2_M与从寄存器地址确定电路73输出的VM_2_M''比较。在这种情况下,由于从虚拟机调度器5输出的VM_2_M与从寄存器地址确定电路73输出的VM_2_M''匹配,寄存器访问确定电路74确定允许虚拟机VM#2访问对应于存储器区域#3的寄存器地址范围(寄存器地址g'至寄存器地址h'),以及将指示访问许可的高电平信号输出为寄存器访问确定结果OUT_R。用这种方式,允许虚拟机VM#2访问对应于存储器区域#3的寄存器地址范围(寄存器地址g'至寄存器地址h')。根据上述实施例,可以提供能通过少量硬件资源,控制虚拟机的每一个访问存储器的存储器保护电路、处理单元和存储器保护方法。本领域的普通技术人员,能按期望组合第一至第六实施例。尽管根据几个实施例,描述了本发明,本领域的技术人员将意识到通过在所附权利要求的精神和范围内的各种改进,能实施本发明,以及本发明不限于上述示例。此外,权利要求的范围不受上述实施例限制。此外,注意到申请人的意图是包含所有权利要求要素,甚至是在审查期间的后续修改的等效。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1