CN101079083B - 一种对访存操作进行权限检查的系统、装置及方法 - Google Patents
一种对访存操作进行权限检查的系统、装置及方法 Download PDFInfo
- Publication number
- CN101079083B CN101079083B CN200610011980A CN200610011980A CN101079083B CN 101079083 B CN101079083 B CN 101079083B CN 200610011980 A CN200610011980 A CN 200610011980A CN 200610011980 A CN200610011980 A CN 200610011980A CN 101079083 B CN101079083 B CN 101079083B
- Authority
- CN
- China
- Prior art keywords
- access instruction
- section
- legal
- segment
- scope check
- 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.)
- Expired - Fee Related
Links
Images
Abstract
本发明涉及复杂指令集计算机段保护机制技术领域,公开了一种在段保护机制下对访存操作进行权限检查的系统、装置及方法,所述方法包括:A、访存操作权限检查装置判断接收自访存指令发射装置的访存指令类型,如果访存指令为特殊访存指令,则执行步骤B;否则,执行步骤C;B、访存操作权限检查装置依次检查特殊访存指令的段选择子、段描述符的类型和段的特权级是否合法,如果都合法,则结束检查;如果有任一项不合法,则执行步骤D;C、访存操作权限检查装置检查访存指令的地址是否越界,如果没有越界,则结束检查;否则,执行步骤D;D、访存操作权限检查装置向例外处理装置发送例外信号。利用本发明,实现了对访存操作进行的权限检查。
Description
技术领域
本发明涉及复杂指令集计算机段保护机制技术领域,尤其涉及一种在段保护机制下对访存操作进行权限检查的系统、装置及方法。
背景技术
基于复杂指令集的计算机(Complex Instruction Set Computer,CISC)是指以微程序为基础、具有复杂指令系统的计算机,一般可以具有多种访存处理模式。例如,基于X86的处理器80386就同时具有实地址模式、保护虚地址模式、虚拟8086模式三种访存处理模式。其中,保护虚地址模式是80386最常用的访存处理模式,该模式引入了虚拟存储器的概念,虚拟存储器容量高达64TB,CPU可访问的物理存储器容量为4GB。
在保护虚地址模式下,处理器提供了一种段保护机制。段保护机制将处理器的内存分成一个个独立的地址空间,这种地址空间就叫做段。段保护机制可以很好的区分同一块共享内存中的指令代码、数据代码和堆栈,使指令代码、数据代码和堆栈各自拥有独立的地址空间,从而保证了多种类型的程序段或者任务可以在同一个处理器上运行而不互相干扰。特别地,当处理器运行在保护虚地址模式下时,段保护机制是一直开启的,且不能被屏蔽掉。
段保护机制的作用主要体现以下两个方面:首先是对应用程序之间的保护,将每个任务放置在不同的虚地址空间,可以实现任务与任务之间的隔离,进而可以实现应用程序之间的保护;其次是对同一个程序内部的保护,在一个任务内定义用于限制对任务中的段进行访问的特权级别,按照包含在段中数据的重要性和代码的可信任程度,为段指定或分配特权级别,使具有最高特权级别的数据由最可信任的代码访问,具有最低特权级别的数据可被具有任何特权级别的代码访问,进而实现同一个程序内部的保护。
在段保护机制下,将逻辑地址转化为线性地址的过程如图1所示,图1为逻辑地址到线性地址转化的示意图。以下对图1中各部分简要描述如下:
逻辑地址101是虚拟存储器的地址,又称虚地址,是机器语言可以识别的相对地址,并不是最终真正访存时的物理地址。一个逻辑地址包括段选择子和段内偏移。段选择子又称段基地址,是段的唯一标识符。
段描述表102是由段描述符集合在一起构成的表。每一个段都有自己唯一的段描述符,段描述符描述了段的起始地址、段的界限和段的属性。其中,段的起始地址指示了段在线性地址空间中的起始地址,段的界限规定了段的大小,段的属性描述了段的主要属性。段描述符集合在一起,就构成了段描述表。段描述表一般有两种,一种是全局描述表,一种是局部描述表,段描述表存放在内存中。
线性地址103是逻辑地址经过段保护机制转化后得到的地址。如果处理器进一步启用了页机制,则将经过段保护机制转化后得到的线性地址再经过一次页机制的地址转化,就能得到物理地址;如果处理器没有启用页机制,则经过段保护机制转化后得到的地址就是物理地址。
基于图1所示的示意图,在处理器将逻辑地址转化为线性地址时,处理器从逻辑地址中区分出段选择子和段内偏移,根据段选择子在内存中查找段描述符,将获取的段描述符中的段起始地址加上逻辑地址中的段内偏移就可以得到线性地址。
为了加快段保护机制下将逻辑地址转化为线性地址的速度,处理器一般都会在自身增加一种用于保存描述符中段的起始地址、段的界限和段的属性的影子寄存器。如图2所示,图2为影子寄存器中保存信息的示意图。当发生段切换或者任务切换时,第1次逻辑地址转化完成后,处理器将段的起始地址、段的界限和段的属性保存到影子寄存器,以后在对同一个段的逻辑地址进行转换时,处理器将直接查找影子寄存器,而不必再次访问内存,节省了访存的时间,大大加快了将逻辑地址转化为线性地址的速度。
在段保护机制下对访存操作进行的权限检查与上述地址转换过程同时进行,对访存操作进行权限检查的内容主要包括地址越界检查、段类型检查和特权级检查。在对访存操作进行权限检查时,对特殊访存指令与普通访存指令的权限检查有所不同,对特殊访存指令的权限检查,需要依次检查访存指令的段选择子、段描述符的类型和段的特权级是否合法;对普通访存指令的权限检查,仅需要检查访存指令的地址是否越界。这里,特殊访存指令是指涉及段切换和任务切换访存指令,普通访存指令是指不涉及段切换和任务切换访存指令。
在将逻辑地址转化为线性地址的过程中,只有对访存操作的权限检查通过,访存操作才能顺利进行,处理器才能在内存中查找需要的信息,所以在段保护机制下对访存操作的权限检查是非常重要的。
但是,目前还不存在一种在段保护机制下明确用于对访存操作进行权限检查的技术,无法实现在段保护机制下对访存操作的权限检查。
发明内容
(一)要解决的技术问题
针对上述现有技术存在的不足,本发明的一个主要目的在于提供一种在段保护机制下对访存操作进行权限检查的系统,以实现在段保护机制下对访存操作的权限检查。
本发明的另一个主要目的在于提供一种在段保护机制下对访存操作进行权限检查的装置,以实现在段保护机制下对访存操作的权限检查。
本发明的再一个主要目的在于提供一种在段保护机制下对访存操作进行权限检查的方法,以实现在段保护机制下对访存操作的权限检查。
(二)技术方案
为达到上述目的,本发明的技术方案是这样实现的:
一种在段保护机制下对访存操作进行权限检查的系统,该系统包括:
访存指令发射装置,用于保存访存指令译成的微码序列和访存操作完成后获取的数据,并将保存的访存指令微码序列发射给访存操作权限检查装置;
访存操作权限检查装置,用于对访存操作进行权限检查,在权限检查通过后将逻辑地址转换成线性地址发送给访存指令执行装置,在权限检查未通过时将例外信号发送给例外处理装置;该访存操作权限检查装置进一步包括:
访存指令预处理单元,用于区分接收自访存指令发射装置的访存指令的类型,将特殊访存指令发送给特殊访存指令权限检查单元,将普通访存指令发送给普通访存指令权限检查单元;
特殊访存指令权限检查单元,用于检查接收自访存指令预处理单元的特殊访存指令的段选择子是否合法,在段选择子合法时访问内存,并检查访存返回结果的段描述符类型和段特权级是否合法,在段描述符类型和段特权级合法时更新影子寄存器中段描述符的段属性,将更新了段属性的段描述符保存回内存;以及
普通访存指令权限检查单元,用于检查接收自访存指令预处理单元的普通访存指令的地址是否越界,确定没有越界后访问影子寄存器获取段起始地址;
访存指令执行装置,用于根据接收自访存操作权限检查装置的线性地址访问内存,并将获取的数据返回给访存指令发射装置;以及
例外处理装置,用于接收访存操作权限检查装置发送的例外信号,执行例外处理程序。
所述访存指令发射装置包括:访存指令发射队列,用于将保存的访存指令微码序列发射给访存操作权限检查装置;寄存器堆,用于保存访存指令译成的微码序列和访存操作完成后获取的数据。
所述特殊访存指令权限检查单元包括:
段选择子权限检查单元,用于检查接收自访存指令预处理单元的特殊访存指令的段选择子是否合法,根据合法的段选择子在内存中读取段描述符,并将读取的段描述符发送给段描述符权限检查单元;
段描述符权限检查单元,用于检查接收自段选择子权限检查单元段描述符的段描述符类型和段特权级是否合法,将合法的段描述符发送给更新单元;
更新单元,用于将接收自段描述符权限检查单元的段描述符保存到影子寄存器,并更新段描述符的段属性,将更新了段属性的段描述符保存回内存。
该装置进一步包括:影子寄存器,用于保存段起始地址、段的界限和段属性信息,直接与更新单元连接。所述影子寄存器位于访存操作权限检查装置的内部或外部。
一种在段保护机制下对访存操作进行权限检查的方法,应用于包括访存指令发射装置、访存操作权限检查装置、访存指令执行装置和例外处理装置的访存操作权限检查系统,该方法包括:
A、访存操作权限检查装置判断接收自访存指令发射装置的访存指令类型,如果访存指令为特殊访存指令,则执行步骤B;否则,执行步骤C;
B、访存操作权限检查装置依次检查特殊访存指令的段选择子、段描述符的类型和段的特权级是否合法,如果都合法,则结束检查;如果有任一项不合法,则执行步骤D;
C、访存操作权限检查装置检查访存指令的地址是否越界,如果没有越界,则结束检查;否则,执行步骤D;
D、访存操作权限检查装置向例外处理装置发送例外信号;
步骤A之前进一步包括:将访存指令翻译成微码序列,并将翻译的微码序列保存在访存指令发射装置中,访存指令发射装置将保存的微码序列发射给访存操作权限检查装置;
所述访存指令为特殊访存指令,所述将访存指令翻译成微码序列包括:拆分特殊访存指令,将特殊访存指令翻译成满足下述要求的微码序列:至少有一条微码用来实现普通访存指令的操作,且该微码还用于在访存前检查段选择子是否合法;至少有一条微码用来检查段描述符类型和段特权级是否合法;至少有一条微码用来实现装载影子寄存器的操作;至少有一条微码用来更新段描述符的段属性,并将更新了段属性的段描述符保存回内存;所述访存指令为普通访存指令,所述将访存指令翻译成微码序列包括:将普通访存指令翻译成具有查询段特性的访存微码.所述由特殊访存指令翻译成的各微码之间相互独立运行,且相互不发生影响.
步骤A中所述判断包括:访存操作权限检查装置判断接收的微码序列的条数,如果微码序列的条数大于一条,则访存指令为特殊访存指令;否则,访存指令为普通访存指令。
步骤A中所述判断包括:访存操作权限检查装置判断接收的访存指令是否涉及段切换或任务切换,如果涉及,则访存指令为特殊访存指令;否则,访存指令为普通访存指令。
所述步骤B包括:
B1、访存操作权限检查装置检查特殊访存指令的段选择子是否合法,如果合法,则根据合法的段选择子在内存中读取段描述符,并执行步骤B2;否则,执行步骤D;
B2、访存操作权限检查装置检查读取的段描述符的类型是否合法,如果合法,则执行步骤B3;否则,执行步骤D;
B3、访存操作权限检查装置检查段的特权级是否合法,如果合法,则结束检查;否则,执行步骤D。
所述特殊访存指令访问堆栈段,步骤B1中所述检查特殊访存指令的段选择子是否合法包括:检查堆栈段的段选择子是否为非零,如果是,则堆栈段的段选择子合法;否则,堆栈段的段选择子不合法。
预先在访存操作权限检查装置中配置段描述符的类型,步骤B2中所述检查读取的段描述符的类型是否合法包括:比较读取的段描述符的类型与预先配置的段描述符的类型是否相同,如果相同,则段描述符的类型合法;否则,段描述符的类型不合法。
步骤B3中所述检查段的特权级是否合法包括:判断请求访问的段的特权级是否高于或等于被访问的段的特权级,如果是,则段的特权级合法;否则,段的特权级不合法。
步骤B3中所述结束检查之后进一步包括:访存操作权限检查装置将合法的段描述符保存到影子寄存器,并将段描述符提供的段起始地址加上逻辑地址中的段内偏移得到线性地址。所述将段描述符保存到影子寄存器包括:将段的起始地址、段的界限和段的属性保存到影子寄存器。
所述段为首次访问的段,所述将获取的段描述符保存到影子寄存器后进一步包括:设置段描述符中段属性的Access位或Busy位,并将更新后的段描述符保存回内存。
步骤C中所述检查访存指令的地址是否越界包括:访存操作权限检查装置访问影子寄存器获取段描述符中段的界限信息,比较访存指令逻辑地址中的段内偏移是否超出段的界限,如果超出,则访存指令的地址越界;否则,访存指令的地址不越界。
步骤C中所述结束检查之后进一步包括:访存操作权限检查装置利用查询段特性的微码访问影子寄存器获取段起始地址,将获取的段起始地址加上逻辑地址中的段内偏移得到线性地址。
所述步骤D进一步包括:访存操作权限检查装置将例外总线信号置高。
(三)有益效果
从上述技术方案可以看出,本发明具有以下有益效果:
1、利用本发明,通过将访存指令翻译成微码序列,并区分访存指令的类型,分别对特殊访存指令的段选择子、段描述符的类型、段的特权级是否合法以及普通访存指令的地址是否越界进行检查,实现了对访存操作进行的权限检查。
2、由于在确定特殊访存指令的段选择子、段描述符的类型、段的特权级合法后,将合法的段描述符包含的段起始地址,段的界限和段的属性保存到影子寄存器中,在处理器再次访问同一个段时,处理器不需要去内存中查找段描述符,查询影子寄存器就可以得到段的全部特性。因此,利用本发明有效地减少了访存的延迟,大大提高了处理器的运行速度。
3、由于本发明提供的对访存操作进行权限检查的系统和装置结构简单,有效降低了硬件设计的复杂度,且能够实现对访存操作进行的所有权限检查,所以本发明的实现成本低,非常有利于本发明的推广和应用。
附图说明
图1为逻辑地址到线性地址转化的示意图;
图2为影子寄存器中保存信息的示意图;
图3为依照本发明将特殊访存指令翻译为微码序列的示意图;
图4为本发明提供的访存操作权限检查系统的示意图;
图5为本发明提供的访存操作权限检查装置的结构框图;
图6为本发明对访存操作进行权限检查总体技术方案的实现流程图;
图7为依照本发明实施例对访存操作进行权限检查的方法流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
本发明的核心内容是:通过将访存指令翻译成微码序列,并区分访存指令的类型,分别对特殊访存指令的段选择子、段描述符的类型、段的特权级是否合法以及普通访存指令的地址是否越界进行检查,实现了对访存操作进行的权限检查。
上述在将访存指令翻译成微码序列时,因为普通访存指令段描述符包含的段起始地址,段的界限和段的属性保存在影子寄存器中,处理器不需要去内存中查找段描述符,查询影子寄存器就可以得到段的全部特性,从而进行地址转换和地址是否越界的权限检查,所以处理器将普通访存指令翻译成具有查询段特性的访存微码就能够实现对访存操作进行权限检查的功能。另外,由于段起始地址,段的界限和段的属性保存在影子寄存器中,处理器不需要去内存中查找段描述符,查询影子寄存器就可以得到段的全部特性,所以大大提高了普通访存指令的执行速度。
对于特殊访存指令,处理器先拆分特殊访存指令,然后将特殊访存指令翻译成满足下述要求的微码序列:至少有一条微码用来实现普通访存指令的操作,且该微码还用于在访存前检查段选择子是否合法;至少有一条微码用来检查段描述符类型和段特权级是否合法;至少有一条微码用来实现装载影子寄存器的操作;至少有一条微码用来更新段描述符的段属性,并将更新了段属性的段描述符保存回内存.这些由特殊访存指令翻译成的各微码之间可以相互独立运行,且相互不发生影响.
在对访存操作进行权限检查时,处理器先用权限检查微码判断访存操作是否满足所有权限要求,如果满足,则使用访存微码访问内存,如果不满足任何一个权限要求,则处理器为该访存操作报例外,等待例外处理装置处理。本发明具体将特殊访存指令翻译为微码序列的示意图可参见图3。
如图3所示,图3为依照本发明将特殊访存指令翻译为微码序列的示意图。访存指令LDS为涉及段切换和任务切换特殊访存指令,本发明将特殊访存指令LDS翻译为由LOAD segment、MATCH segment、MOVEsegment和STORE segment四条微码构成的微码序列。
其中,LOAD segment微码用于检查段选择子是否合法,如果段选择子合法,则处理器进行访存,在内存中根据合法的段选择子读取段描述符。MATCH segment微码用于检查读取的段描述符是否合法,主要检查段的类型是否匹配和段的属性是否合法,如果段的属性不合法,处理器将修改段的属性。MOVE segment微码用于将合法的段描述符装载进影子寄存器。STORE segment微码用于将修改过的段的属性保存回内存,其中,被修改的是段属性中涉及任务切换堆栈(TSS)段的Busy位,或者涉及非TSS段的Access位。
上述在区分访存指令的类型时,可以根据访存指令被翻译的微码序列的条数来进行,如果微码序列的条数大于一条,则访存指令为特殊访存指令;否则,访存指令为普通访存指令。另外,还可以根据访存指令是否涉及段切换或任务切换来进行,如果涉及,则访存指令为特殊访存指令;否则,访存指令为普通访存指令。
上述对访存操作进行权限检查,主要涉及本发明提供的对访存操作进行权限检查的系统、装置和方法,以下结合具体实施例,并参照附图对访存操作权限检查系统、装置和方法分别进行详细介绍。
如图4所示,图4为本发明提供的访存操作权限检查系统的示意图,该系统包括访存指令发射装置401、访存操作权限检查装置402、访存指令执行装置403和例外处理装置404。
其中,访存指令发射装置401用于保存访存指令译成的微码序列和访存操作完成后获取的数据,并将保存的访存指令微码序列发射给访存操作权限检查装置402。访存指令发射装置401一般由访存指令发射队列和寄存器堆构成,访存指令发射队列用于将保存的访存指令微码序列发射给访存操作权限检查装置;寄存器堆用于保存访存指令译成的微码序列和访存操作完成后获取的数据。
访存操作权限检查装置402用于对访存操作进行权限检查,在权限检查通过后将逻辑地址转换成线性地址发送给访存指令执行装置403,在权限检查未通过时将例外信号发送给例外处理装置404。
访存指令执行装置403用于根据接收自访存操作权限检查装置402的线性地址访问内存,并将获取的数据返回给访存指令发射装置401的寄存器堆。
例外处理装置404用于接收访存操作权限检查装置402发送的例外信号,执行例外处理程序。
基于图4所述的访存操作权限检查系统,图5示出了访存操作权限检查装置的结构框图。访存操作权限检查装置包括访存指令预处理单元501、特殊访存指令权限检查单元502、普通访存指令权限检查单元503和影子寄存器504。
其中,访存指令预处理单元501用于区分接收自访存指令发射装置401的访存指令的类型,将特殊访存指令发送给特殊访存指令权限检查单元502,将普通访存指令发送给普通访存指令权限检查单元503。
特殊访存指令权限检查单元502用于检查接收自访存指令预处理单元501的特殊访存指令的段选择子是否合法,在段选择子合法时访问内存,并检查访存返回结果的段描述符类型和段特权级是否合法,在段描述符类型和段特权级合法时更新影子寄存器504中段描述符的段属性,将更新了段属性的段描述符保存回内存;在上述检查过程中,如果有任一项不合法,则特殊访存指令权限检查单元502向例外处理装置404发送例外信号,例外处理装置404执行例外处理程序。
特殊访存指令权限检查单元502进一步包括段选择子权限检查单元、段描述符权限检查单元和更新单元。其中,段选择子权限检查单元用于检查接收自访存指令预处理单元的特殊访存指令的段选择子是否合法,根据合法的段选择子在内存中读取段描述符,并将读取的段描述符发送给段描述符权限检查单元。段描述符权限检查单元用于检查接收自段选择子权限检查单元段描述符的段描述符类型和段特权级是否合法,将合法的段描述符发送给更新单元。更新单元用于将接收自段描述符权限检查单元的段描述符保存到影子寄存器,并更新段描述符的段属性,将更新了段属性的段描述符保存回内存。
普通访存指令权限检查单元503用于检查接收自访存指令预处理单元501的普通访存指令的地址是否越界,确定没有越界后访问影子寄存器504获取段起始地址;如果普通访存指令的地址越界,则向例外处理装置404发送例外信号,例外处理装置404执行例外处理程序。
影子寄存器504用于保存段起始地址、段的界限和段属性信息,直接与特殊访存指令权限检查单元502中的更新单元连接。影子寄存器504可以位于访存操作权限检查装置402的内部或外部。在影子寄存器504位于访存操作权限检查装置402的内部时,影子寄存器可以作为访存操作权限检查装置402的一个组成部分;在影子寄存器504位于访存操作权限检查装置402的外部时,影子寄存器504可以作为一个独立的部件。
基于图4所述的访存操作权限检查系统和图5所述的访存操作权限检查装置,图6示出了本发明对访存操作进行权限检查总体技术方案的实现流程图,该方法包括以下步骤:
步骤601:访存操作权限检查装置判断接收自访存指令发射装置的访存指令类型,如果访存指令为特殊访存指令,则执行步骤602;否则,执行步骤603;
步骤602:访存操作权限检查装置依次检查特殊访存指令的段选择子、段描述符的类型和段的特权级是否合法,如果都合法,则结束检查;如果有任一项不合法,则执行步骤604;
步骤603:访存操作权限检查装置检查访存指令的地址是否越界,如果没有越界,则结束检查;否则,执行步骤604;
步骤604:访存操作权限检查装置向例外处理装置发送例外信号。
上述步骤601之前可以进一步包括:将访存指令翻译成微码序列,并将翻译的微码序列保存在访存指令发射装置中,访存指令发射装置将保存的微码序列发射给访存操作权限检查装置。
如果访存指令为特殊访存指令,则将访存指令翻译成微码序列包括:拆分特殊访存指令,将特殊访存指令翻译成满足下述要求的微码序列:至少有一条微码用来实现普通访存指令的操作,且该微码还用于在访存前检查段选择子是否合法;至少有一条微码用来检查段描述符类型和段特权级是否合法;至少有一条微码用来实现装载影子寄存器的操作;至少有一条微码用来更新段描述符的段属性,并将更新了段属性的段描述符保存回内存。由特殊访存指令翻译成的各微码之间相互独立运行,且相互不发生影响。
如果访存指令为普通访存指令,则将访存指令翻译成微码序列包括:将普通访存指令翻译成具有查询段特性的访存微码。
上述步骤601访存操作权限检查装置判断接收自访存指令发射装置的访存指令类型可以采用以下两种方式:
方式一、访存操作权限检查装置判断接收的微码序列的条数,如果微码序列的条数大于一条,则访存指令为特殊访存指令;否则,访存指令为普通访存指令;
方式二、访存操作权限检查装置判断接收的访存指令是否涉及段切换或任务切换,如果涉及,则访存指令为特殊访存指令;否则,访存指令为普通访存指令。
上述步骤602访存操作权限检查装置依次检查特殊访存指令的段选择子、段描述符的类型和段的特权级是否合法包括:
步骤6021:访存操作权限检查装置检查特殊访存指令的段选择子是否合法,如果合法,则根据合法的段选择子在内存中读取段描述符,并执行步骤6022;否则,执行步骤604;
在本步骤中,当特殊访存指令访问堆栈段时,访存操作权限检查装置检查堆栈段的段选择子是否为非零,如果是,则堆栈段的段选择子合法;否则,堆栈段的段选择子不合法。
步骤6022:访存操作权限检查装置检查读取的段描述符的类型是否合法,如果合法,则执行步骤6023;否则,执行步骤604;
在本步骤中,预先在访存操作权限检查装置中配置段描述符的类型,访存操作权限检查装置比较读取的段描述符的类型与预先配置的段描述符的类型是否相同,如果相同,则段描述符的类型合法;否则,段描述符的类型不合法。
步骤6023:访存操作权限检查装置检查段的特权级是否合法,如果合法,则结束检查;否则,执行步骤604;
在本步骤中,访存操作权限检查装置判断请求访问的段的特权级是否高于或等于被访问的段的特权级,如果是,则段的特权级合法;否则,段的特权级不合法。
上述步骤603访存操作权限检查装置检查访存指令的地址是否越界包括:访存操作权限检查装置访问影子寄存器获取段描述符中段的界限信息,比较访存指令逻辑地址中的段内偏移是否超出段的界限,如果超出,则访存指令的地址越界;否则,访存指令的地址不越界。
上述步骤604访存操作权限检查装置向例外处理装置发送例外信号时进一步包括:访存操作权限检查装置将例外总线信号置高.
基于图6所述的本发明对访存操作进行权限检查总体技术方案,图7示出了依照本发明实施例对访存操作进行权限检查的方法流程图。在本实施例中,影子寄存器位于访存操作权限检查装置的内部,该方法包括以下步骤:
步骤701:访存指令预处理单元接收到访存指令发射装置发射的访存指令,判断接收的微码序列的条数,如果微码序列的条数大于一条,则访存指令为特殊访存指令,执行步骤702;否则,访存指令为普通访存指令,执行步骤707。
步骤702:访存指令预处理单元将特殊访存指令发送给特殊访存指令权限检查单元中的段选择子权限检查单元,段选择子权限检查单元检查特殊访存指令的段选择子是否合法,如果合法,则执行步骤703;否则,段选择子权限检查单元向例外处理装置发送例外信号,执行步骤709;
在本步骤中,当特殊访存指令访问堆栈段时,访存操作权限检查装置检查堆栈段的段选择子是否为非零,如果是,则堆栈段的段选择子合法;否则,堆栈段的段选择子不合法。
步骤703:段选择子权限检查单元根据合法的段选择子在内存中读取段描述符,并将读取的段描述符发送给段描述符权限检查单元。
步骤704:段描述符权限检查单元检查段描述符的类型是否合法,如果合法,则执行步骤705;否则,段描述符权限检查单元向例外处理装置发送例外信号,执行步骤709;
在本步骤中,预先在访存操作权限检查装置中配置段描述符的类型,访存操作权限检查装置比较读取的段描述符的类型与预先配置的段描述符的类型是否相同,如果相同,则段描述符的类型合法;否则,段描述符的类型不合法。
步骤705:段描述符权限检查单元检查段的特权级是否合法,如果合法,则执行步骤706;否则,段描述符权限检查单元向例外处理装置发送例外信号,执行步骤709;
在本步骤中,访存操作权限检查装置判断请求访问的段的特权级是否高于或等于被访问的段的特权级,如果是,则段的特权级合法;否则,段的特权级不合法。
步骤706:段描述符权限检查单元将合法的段描述符发送给更新单元,更新单元将接收的段描述符保存到影子寄存器,并更新段描述符的段属性,将更新了段属性的段描述符保存回内存,然后将段描述符提供的段起始地址加上逻辑地址中的段内偏移得到线性地址,结束本流程;
在更新段描述符的段属性时,对于首次访问的段,更新单元设置段描述符中段属性的Access位或Busy位,并将更新后的段描述符保存回内存。
步骤707:访存指令预处理单元将普通访存指令发送给普通访存指令权限检查单元,普通访存指令权限检查单元检查普通访存指令的地址是否越界,如果没有越界,则执行步骤708;否则,普通访存指令权限检查单元向例外处理装置发送例外信号,执行步骤709。
步骤708:普通访存指令权限检查单元访问影子寄存器获取段起始地址,将获取的段起始地址加上逻辑地址中的段内偏移得到线性地址,结束本流程。
步骤709:例外处理装置接收到例外信号,执行例外处理程序并结束。
在本发明所举实施例步骤701中,访存指令预处理单元判断接收的访存指令类型是根据接收的微码序列的条数进行的.在实际应用中,访存指令预处理单元判断接收的访存指令类型还可以根据接收的访存指令是否涉及段切换或任务切换,如果是,则访存指令为特殊访存指令;否则,访存指令为普通访存指令.这样的技术方案与本发明实施例中所举的技术方案在思路上是一致的,应包含在本发明的保护范围之内.
在本发明所举实施例步骤702、704、705和707中,在向例外处理装置发送例外信号后,直接执行步骤709。在实际应用中,在向例外处理装置发送例外信号时,还可以进一步将例外总线信号置高。这样的技术方案与本发明实施例中所举的技术方案在思路上是一致的,应包含在本发明的保护范围之内。
在本发明所举的这个实施例中,影子寄存器位于访存操作权限检查装置的内部。在实际应用中,影子寄存器也可以位于访存操作权限检查装置的外部。这样的技术方案与本发明实施例中所举的技术方案在思路上是一致的,应包含在本发明的保护范围之内。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (19)
1.一种在段保护机制下对访存操作进行权限检查的系统,其特征在于,该系统包括:
访存指令发射装置,用于保存访存指令译成的微码序列和访存操作完成后获取的数据,并将保存的访存指令微码序列发射给访存操作权限检查装置;
访存操作权限检查装置,用于对访存操作进行权限检查,在权限检查通过后将逻辑地址转换成线性地址发送给访存指令执行装置,在权限检查未通过时将例外信号发送给例外处理装置;该访存操作权限检查装置进一步包括:
访存指令预处理单元,用于区分接收自访存指令发射装置的访存指令的类型,将特殊访存指令发送给特殊访存指令权限检查单元,将普通访存指令发送给普通访存指令权限检查单元;
特殊访存指令权限检查单元,用于检查接收自访存指令预处理单元的特殊访存指令的段选择子是否合法,在段选择子合法时访问内存,并检查访存返回结果的段描述符类型和段特权级是否合法,在段描述符类型和段特权级合法时更新影子寄存器中段描述符的段属性,将更新了段属性的段描述符保存回内存;以及
普通访存指令权限检查单元,用于检查接收自访存指令预处理单元的普通访存指令的地址是否越界,确定没有越界后访问影子寄存器获取段起始地址;
访存指令执行装置,用于根据接收自访存操作权限检查装置的线性地址访问内存,并将获取的数据返回给访存指令发射装置;以及
例外处理装置,用于接收访存操作权限检查装置发送的例外信号,执行例外处理程序。
2.根据权利要求1所述的在段保护机制下对访存操作进行权限检查的系统,其特征在于,所述访存指令发射装置包括:
访存指令发射队列,用于将保存的访存指令微码序列发射给访存操作权限检查装置;以及
寄存器堆,用于保存访存指令译成的微码序列和访存操作完成后获取的数据。
3.根据权利要求1所述的在段保护机制下对访存操作进行权限检查的系统,其特征在于,所述特殊访存指令权限检查单元包括:
段选择子权限检查单元,用于检查接收自访存指令预处理单元的特殊访存指令的段选择子是否合法,根据合法的段选择子在内存中读取段描述符,并将读取的段描述符发送给段描述符权限检查单元;
段描述符权限检查单元,用于检查接收自段选择子权限检查单元段描述符的段描述符类型和段特权级是否合法,将合法的段描述符发送给更新单元;
更新单元,用于将接收自段描述符权限检查单元的段描述符保存到影子寄存器,并更新段描述符的段属性,将更新了段属性的段描述符保存回内存。
4.根据权利要求3所述的在段保护机制下对访存操作进行权限检查的系统,其特征在于,所述访存操作权限检查装置进一步包括:
影子寄存器,用于保存段起始地址、段的界限和段属性信息,直接与更新单元连接。
5.根据权利要求4所述的在段保护机制下对访存操作进行权限检查的系统,其特征在于,所述影子寄存器位于访存操作权限检查装置的内部或外部。
6.一种在段保护机制下对访存操作进行权限检查的方法,应用于包括访存指令发射装置、访存操作权限检查装置、访存指令执行装置和例外处理装置的访存操作权限检查系统,其特征在于,该方法包括:
A、访存操作权限检查装置判断接收自访存指令发射装置的访存指令类型,如果访存指令为特殊访存指令,则执行步骤B;否则,执行步骤C;
B、访存操作权限检查装置依次检查特殊访存指令的段选择子、段描述符的类型和段的特权级是否合法,如果都合法,则结束检查;如果有任一项不合法,则执行步骤D;
C、访存操作权限检查装置检查访存指令的地址是否越界,如果没有越界,则结束检查;否则,执行步骤D;
D、访存操作权限检查装置向例外处理装置发送例外信号;
所述步骤A之前进一步包括:将访存指令翻译成微码序列,并将翻译的微码序列保存在访存指令发射装置中,访存指令发射装置将保存的微码序列发射给访存操作权限检查装置;
所述访存指令为特殊访存指令,所述将访存指令翻译成微码序列包括:拆分特殊访存指令,将特殊访存指令翻译成满足下述要求的微码序列:至少有一条微码用来实现普通访存指令的操作,且该微码还用于在访存前检查段选择子是否合法;至少有一条微码用来检查段描述符类型和段特权级是否合法;至少有一条微码用来实现装载影子寄存器的操作;至少有一条微码用来更新段描述符的段属性,并将更新了段属性的段描述符保存回内存;所述访存指令为普通访存指令,所述将访存指令翻译成微码序列包括:将普通访存指令翻译成具有查询段特性的访存微码。
7.根据权利要求6所述的方法,其特征在于,所述由特殊访存指令翻译成的各微码之间相互独立运行,且相互不发生影响。
8.根据权利要求6所述的方法,其特征在于,步骤A中所述判断包括:
访存操作权限检查装置判断接收的微码序列的条数,如果微码序列的条数大于一条,则访存指令为特殊访存指令;否则,访存指令为普通访存指令。
9.根据权利要求6所述的方法,其特征在于,步骤A中所述判断包括:
访存操作权限检查装置判断接收的访存指令是否涉及段切换或任务切换,如果涉及,则访存指令为特殊访存指令;否则,访存指令为普通访存指令。
10.根据权利要求6所述的方法,其特征在于,所述步骤B包括:
B1、访存操作权限检查装置检查特殊访存指令的段选择子是否合法,如果合法,则根据合法的段选择子在内存中读取段描述符,并执行步骤B2;否则,执行步骤D;
B2、访存操作权限检查装置检查读取的段描述符的类型是否合法,如果合法,则执行步骤B3;否则,执行步骤D;
B3、访存操作权限检查装置检查段的特权级是否合法,如果合法,则结束检查;否则,执行步骤D。
11.根据权利要求10所述的方法,其特征在于,所述特殊访存指令访问堆栈段,步骤B1中所述检查特殊访存指令的段选择子是否合法包括:
检查堆栈段的段选择子是否为非零,如果是,则堆栈段的段选择子合法;否则,堆栈段的段选择子不合法。
12.根据权利要求10所述的方法,其特征在于,预先在访存操作权限检查装置中配置段描述符的类型,步骤B2中所述检查读取的段描述符的类型是否合法包括:
比较读取的段描述符的类型与预先配置的段描述符的类型是否相同,如果相同,则段描述符的类型合法;否则,段描述符的类型不合法。
13.根据权利要求10所述的方法,其特征在于,步骤B3中所述检查段的特权级是否合法包括:
判断请求访问的段的特权级是否高于或等于被访问的段的特权级,如果是,则段的特权级合法;否则,段的特权级不合法。
14.根据权利要求6或10所述的方法,其特征在于,步骤B中所述结束检查之后进一步包括:
访存操作权限检查装置将合法的段描述符保存到影子寄存器,并将段描述符提供的段起始地址加上逻辑地址中的段内偏移得到线性地址。
15.根据权利要求14所述的方法,其特征在于,所述将段描述符保存到影子寄存器包括:将段的起始地址、段的界限和段的属性保存到影子寄存器。
16.根据权利要求15所述的方法,其特征在于,所述段为首次访问的段,所述将获取的段描述符保存到影子寄存器后进一步包括:
设置段描述符中段属性的Access位或Busy位,并将更新后的段描述符保存回内存。
17.根据权利要求6所述的方法,其特征在于,步骤C中所述检查访存指令的地址是否越界包括:
访存操作权限检查装置访问影子寄存器获取段描述符中段的界限信息,比较访存指令逻辑地址中的段内偏移是否超出段的界限,如果超出,则访存指令的地址越界;否则,访存指令的地址不越界。
18.根据权利要求6所述的方法,其特征在于,步骤C中所述结束检查之后进一步包括:
访存操作权限检查装置利用查询段特性的微码访问影子寄存器获取段起始地址,将获取的段起始地址加上逻辑地址中的段内偏移得到线性地址。
19.根据权利要求6所述的方法,其特征在于,所述步骤D进一步包括:访存操作权限检查装置将例外总线信号置高。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200610011980A CN101079083B (zh) | 2006-05-25 | 2006-05-25 | 一种对访存操作进行权限检查的系统、装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200610011980A CN101079083B (zh) | 2006-05-25 | 2006-05-25 | 一种对访存操作进行权限检查的系统、装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101079083A CN101079083A (zh) | 2007-11-28 |
CN101079083B true CN101079083B (zh) | 2010-05-12 |
Family
ID=38906556
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200610011980A Expired - Fee Related CN101079083B (zh) | 2006-05-25 | 2006-05-25 | 一种对访存操作进行权限检查的系统、装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101079083B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010186239A (ja) * | 2009-02-10 | 2010-08-26 | Ricoh Co Ltd | 情報処理装置、プログラム制御方法、プログラム制御プログラム及び記録媒体 |
CN102419714B (zh) * | 2010-09-28 | 2015-01-07 | 程碧波 | 程序编译方法、编译器及计算机 |
CN103136124B (zh) * | 2011-11-28 | 2015-12-09 | 国民技术股份有限公司 | 一种智能卡硬件防火墙系统及其实现方法 |
CN104461676B (zh) * | 2014-10-27 | 2017-09-08 | 杭州中天微系统有限公司 | 二进制转译堆栈操作加速处理方法及其处理器 |
CN104536912B (zh) * | 2014-12-22 | 2017-10-31 | 昆腾微电子股份有限公司 | 在小型操作系统中实现内存保护模式的装置和方法 |
CN107977577B (zh) * | 2016-10-21 | 2020-03-13 | 龙芯中科技术有限公司 | 访存指令访问检测方法及装置 |
CN109144760B (zh) * | 2018-06-29 | 2019-10-11 | 清华大学 | 用于获取内存状态的方法、装置、系统及介质 |
CN109446755B (zh) * | 2018-09-30 | 2021-03-30 | 龙芯中科技术股份有限公司 | 内核钩子函数保护方法、装置、设备以及存储介质 |
CN111949995B (zh) * | 2020-08-25 | 2021-07-16 | 海光信息技术股份有限公司 | 安全管理硬件资源的主机cpu架构系统和方法 |
CN114327815A (zh) * | 2021-12-10 | 2022-04-12 | 龙芯中科技术股份有限公司 | 原子性保持方法、处理器及电子设备 |
CN114489798B (zh) * | 2022-01-25 | 2024-04-05 | 海飞科(南京)信息技术有限公司 | 用于确定张量元素的越界状态的方法和电子装置 |
CN115238297B (zh) * | 2022-09-23 | 2023-01-31 | 北京安帝科技有限公司 | 多层级权限控制内存保护方法和装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0361107B1 (en) * | 1988-08-26 | 1997-05-14 | Kabushiki Kaisha Toshiba | Micro programme-controlled micro processor including a pointer register and an accessing method therefor |
CN1623142A (zh) * | 2002-03-27 | 2005-06-01 | 先进微装置公司 | 用于数据处理器中的改良的安全的方法及装置 |
-
2006
- 2006-05-25 CN CN200610011980A patent/CN101079083B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0361107B1 (en) * | 1988-08-26 | 1997-05-14 | Kabushiki Kaisha Toshiba | Micro programme-controlled micro processor including a pointer register and an accessing method therefor |
CN1623142A (zh) * | 2002-03-27 | 2005-06-01 | 先进微装置公司 | 用于数据处理器中的改良的安全的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101079083A (zh) | 2007-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101079083B (zh) | 一种对访存操作进行权限检查的系统、装置及方法 | |
US8799621B2 (en) | Translation table control | |
US9772962B2 (en) | Memory sharing for direct memory access by a device assigned to a guest operating system | |
US7596677B1 (en) | Paging cache optimization for virtual machine | |
JPS6133220B2 (zh) | ||
JP2007122305A (ja) | 仮想計算機システム | |
JPH04247528A (ja) | データ空間への共通アクセス装置及び方法 | |
US5339417A (en) | Computer system with two levels of guests | |
US11474956B2 (en) | Memory protection unit using memory protection table stored in memory system | |
US5437016A (en) | Apparatus and method for translating logical addresses for virtual machines | |
US7269825B1 (en) | Method and system for relative address translation | |
US5293597A (en) | Concurrent context memory management unit | |
CN104239237A (zh) | 一种tlb管理方法及装置 | |
US20100100702A1 (en) | Arithmetic processing apparatus, TLB control method, and information processing apparatus | |
EP3830719B1 (en) | Binary search procedure for control table stored in memory system | |
US8180980B2 (en) | Device emulation support within a host data processing apparatus | |
US6324635B1 (en) | Method and apparatus for address paging emulation | |
US7216342B2 (en) | Code generation | |
JPH0736713A (ja) | プログラム実行管理装置 | |
US5117491A (en) | Ring reduction logic using parallel determination of ring numbers in a plurality of functional units and forced ring numbers by instruction decoding | |
US11579920B2 (en) | Virtual processor interrupt tracking | |
EP0550285A2 (en) | Machine with two units of operation | |
JPH01177654A (ja) | アドレス変換装置 | |
JP2000172675A (ja) | リストベクトル処理装置 | |
JPH0869416A (ja) | 仮想計算機システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100512 |
|
CF01 | Termination of patent right due to non-payment of annual fee |