虚拟存储系统中的直接输入/输出的制作方法

文档序号:99665阅读:335来源:国知局
专利名称:虚拟存储系统中的直接输入/输出的制作方法
本发明一般涉及虚拟存储系统。由于其工作方式,使得计算系统处理器允许程序访问输入/输出(I/O)设备。在先有技术中,计算机系统上运行的每一个程序都有其自己的虚拟地址空间。这使系统复杂化,且性能不为最佳。例如,要为每个程序保留一个单独的页表,该页表用于将虚拟存储地址映象到存储器中的物理地址单元。此外,如果每个程序有其自己的虚拟地址空间,则每次变换计算机上的程序时,都必须使前一程序的转换缓冲区和隐含存储器(cache)入口无效。
另外,在先有技术的虚拟存储系统中,有两种方法可以访问I/O设备。第一种方法是在计算机的指令集内提供控制I/O设备的特殊指令。第二种方法即所谓的内存映象I/O,是为每个I/O设备保留特定的地址。为每个I/O设备保留的地址称做其地址空间。在内存映象I/O系统中,当处理器对I/O设备的I/O地址空间内的地址做读或写操作时,I/O设备将进行检测并译码。I/O设备的每个寄存器都与地址空间内的一个地址相关联。对寄存器的操作是这样实现的,即每当对I/O设备地址空间内的一个地址做读或写操作时,其结果就是对与该地址相关联的I/O设备中的寄存器做读或写操作。这样,对I/O设备地址空间内地址的读、写操作可以用来控制I/O设备。
使用内存映象I/O系统的一个优点是,高级语言写的过程可以访问I/O设备。在某些先有技术的计算机结构中,应用程序可以直接访问计算机I/O设备的全部或部分地址空间。但在多种任务环境中,这种方法会带来某些困难。例如,如果一个应用程序误初始化了可以进行直接内存访问(DMA)传输的I/O设备,这将导致I/O设备读或写分配给其它应用程序的内存空间,从而使系统的安全性受到破坏。
在某些先有技术方案中,为避免在多任务环境中破坏系统的安全性,采用了不允许应用程序直接访问I/O设备地址空间的措施。所有I/O地址只能被特权过程访问。这些过程称做I/O驱动程序。这种方法虽然提供了高级别的系统安全性,但也极大地增加了软件开销,效率不高并受到许多限制。
根据本发明的优选实施例,虚拟存储系统中的地址空间是全程的。全程的意味着,不管处理器上运行的是什么程序,物理存储单元映象到相同的虚拟地址空间。由写禁止位伴随的访问码用于控制程序访问不同的地址。
另外,虚拟存储系统的属性用于控制对I/O设备地址空间的访问。在虚拟存储系统中,对处理器地址空间中页的访问分配在每个应用程序中。这种访问可以是读地址空间中存储的信息(读访问),也可以是读地址空间中存储的信息并向地址空间中写入信息(读、写访问)。
在本发明的优选实施例中,分配给每个I/O设备两页的地址空间,其中一页是特权页,另一页是非特权页。由于页可以很大,例如一页可以包含512个地址,以致每一页地址空间中的许多地址并没有I/O设备的寄存器与其相关联。
但是,每个I/O设备寄存器都与它的I/O设备两页地址空间中每一页的一个地址相关联。所有与某单个寄存器相关联的各自页中的地址都有相同的对该页的偏移量。寄存器可以是特权的或非特权的。如果一个寄存器用于控制I/O设备的DMA操作,或用于对处理器产生中断,或可用于其它破坏系统安全性的操作,则该寄存器被认为是特权寄存器。
非特权寄存器可在特权页和非特权页中做完全操作。在特权页和非特权页中的完全操作意味着,对特权页或非特权页中与非特权寄存器相关联的地址的读或写,其结果都是对非特权寄存器的读或写。
特权寄存器只能在特权页中做完全操作。这就是说,对与特权寄存器相关联的地址的读或写,只有在特权页中才导致对特权寄存器的读或写。对应不同的设置,特权寄存器在非特权页中可以是只能读不能写,或者是既不能读也不能写。
图1示出了耦合到总线上的系统处理器、系统存储器和各种I/O设备。
图2A和图2B示出了存储器地址空间中的一页。
图3示出了与本发明优选实施例对应的计算机存储器地址空间。
图4示出了图1中各种I/O设备之一的方框图。
图5示出了用于将虚拟存储地址转换为物理存储地址的表的两个入口。
图6示出了图1中系统处理器的控制寄存器。
图7示出了包括图5中入口的表。
图8示出了与图7中的表耦合的散列设备。
图1所示为一个计算系统。该计算系统包括系统处理器101,系统存储器102,输入/输出(I/O)设备103,I/O设备104,I/O设备105,I/O设备106和I/O设备107,这些设备都耦合到总线100上。系统处理器101通过向为I/O设备103-107保留的地址空间读、写数据与I/O设备103-107通讯。
图3给出了图1所示计算系统中地址空间370的分配方法。地址空间370可寻址232字节数据(或230个32位字的数据)。地址空间370中的371段是为存储地址保留的。371段中的371b子段是为存储地址保留的,而没有设置。371段中的371a子段由在处理器101上运行的操作系统和用户程序使用并设置。一般地,371b子段比371a子段大得多。地址空间370中的373段分配给I/O设备使用。370所有存储器被分成页,包括图示的301页和302页。每一页可寻址512个32位字。
用图7所示表550入口处相连的访问识别(AID)值可以限制对存储器页的访问。表550将虚拟存储器页地址转换为系统存储器102中物理存储空间的存储器页地址。表550包括若干联接列表,如示于框图550中的联接列表702,联接列表703,联接到表704和联接到表705。图5给出了联接列表702中的入口501和入口511。入口501和入口511都包含四个32位的存储单元。
入口501中503单元的内容是指向入口511的地址。入口501还包含504和505单元,其中内容是虚拟页地址,系统处理器101利用表550的入口501单元得到504和505单元中存储的虚拟页地址所对应的物理存储空间。入口501还包含506单元。506单元包含16位的访问权力段507和15位的508段,508段包括AID值和一位的509段,其内容恒为逻辑0。
入口511包含513单元,513单元的内容是指向联接列表702中下一个入口的地址。入口511还包含514和515单元,其内容为虚拟页地址。系统处理器101利用表550中入口511单元得到514和515单元中存储的虚拟页地址所对应的物理存储地址。入口511还包含516单元。516单元包括16位的访问权力段517和15位的518段。518段包括AID值和一位的519段,其内容恒为逻辑0。
系统处理器101包含四个控制寄存器601,611,621和631,这些寄存器含有当前运行程序的AID值。寄存器601的602段,寄存器611的612段,寄存器621的622段以及寄存器631的632段每一个都可以包含一个15位的AID值。寄存器601的603段,寄存器611的613段,寄存器621的623段和寄存器631的633段都包含一位的写禁止值(WD)。
当在系统处理器101上运行的程序要访问存储器的物理页时,可以利用表550将存储器页的虚拟地址转换为物理页地址。图7所示的散列设备701接收并散列虚拟地址,以根据表550中联接列表第一入口的位置产生物理页地址。例如,散列一虚拟页地址可以产生对应于表550中入口501的物理地址。被散列的虚拟地址与入口501的504和505单元中的虚拟地址比较,如果匹配,物理页就已经映象到虚拟页中。
检查访问权力段507中的访问码。这个访问码指出哪一个级别的程序允许读、写或访问物理页。然后检查508单元中的AID值。如果508单元中的AID值是0,或与控制寄存器601,611,621或631之一的AID值匹配,则允许程序访问存储器中的物理页。如果匹配的控制寄存器601、611、621或631的WD值是逻辑1,则不允许程序做写访问。如果508单元的AID值不与控制寄存器601、611、621或631的AID值匹配,或如果508单元的AID值不等于0,则不允许程序访问存储器中的物理页。
如果被散列的虚拟地址与504和505单元中的虚拟地址不匹配,则考虑联接列表702中的下一个入口-入口511。散列的虚拟地址与入口511的514和515单元中的虚拟地址比较,如果匹配,则检查访问权力段517中的访问码。鉴定当前特权级别程序以确定允许对该程序采用什么形式的访问然后将518单元中的AID值与控制寄存器601、611、621和631的AID值比效。如此等等。
图8所示散列设备701和表550。散列设备701包括散列发生器720和散列表801。散列发生器720接收虚拟地址,并生成散列表地址。检查散列表地址的内容。如果其内容是一空指针,则由虚拟地址寻址的数据不在主存储器内;如果其内容是表550中的一个地址,则按如上所述搜索以表550中地址为起始地址的联接列表,直到找到包括该虚拟地址的入口或找到空指针为止。此处空指针仍指出由虚拟地址寻址的数据不在主存储器内。如果寻址的数据不在主存储器内,则产生页错误,并由软件将数据从磁盘或其它存储设备调入。
如图所示表550是一个页目录。表550在入口PDIRO处有一基地址。PDIRO对应地址空间370底部的某个地址。表550中的正向入口此时对应存储器中371段的页。地址空间370中373段的页亦需通过表550中的入口来寻址。为避免在表550中有大量未使用的入口段对应371段中未使用的371b子段,可利用表550中的负向入口来寻址表370中373段的地址。例如,PDIR-1对应地址空间370顶部的地址。用这种方法,寻址地址空间370中的373段时,就不必在表550中保留对应地址空间370中未使用的371b子段的大量空白。
图3A给出了373段中物理地址位的分配方法。381段包含地址380的高四位。373段在地址空间370的顶部;因此,381段中的每一位都是逻辑1,表示某个I/O设备寄存器被寻址。382段包含16位的地址380,382段中的16位值确定哪个I/O设备被寻址。本实施例中,其地址空间可用于216(约为65000)个I/O设备。位元383指出被寻址的是特权页还是非特权页。地址380中384段各位指出I/O设备中哪一个特定寄存器被寻址。385段的位包含地址380中的2位。385段中的2位均为逻辑0,因为本实施例中寄存器是按32位字寻址,而地址空间允许按8位字节寻址。
如图4所示,I/O设备107包括I/O适配器410和设备接口411。为描述方便,寄存器400,寄存器401,寄存器402,寄存器403,寄存器404,寄存器405和缓冲器406均示于I/O适配器410中。寄存器400包含一个地址,该地址被写时,即向系统处理器101发生中断。寄存器401接收命令,这些命令用于使I/O设备107初始化设备接口411,从设备接口411读数据,或向设备接口411写数据。寄存器402的内容为一表示系统存储器102中地址的数值,I/O适配器410以此为起始地址执行直接内存访问(DMA)传输。寄存器403的内容为一个一字节的计数值,利用(DMA)传输方式指出要向系统存储器102传输的数据数。寄存器404接收命令,以启动或终止DMA传输。寄存器405中包含I/O适配器410和系统存储器402之间最后一次DMA传输的状态信息。
图2A示出了与I/O设备107相关联的地址空间301中的一个非特权页。图2B示出了与I/O设备107相关联的地址空间302中的一个特权页。
寄存器400-405中的每一个都与301页和302页中的一个地址相关联。例如,301页中的地址IPO与寄存器400相关联,301页中的地址1P1与寄存器401相关联,301页中的地址1P2与寄存器402相关联,301页中的地址1P3与寄存器403相关联,301页中的地址1P4与寄存器404相关联,301页中的地址1P5与寄存器405相关联;302页中的地址2P0与寄存器400相关联,302页中的地址2P1与寄存器401相关联,302页中的地址2P2与寄存器402相关联,302页中的地址2P3与寄存器403相关联,302页中的地址2P4与寄存器404相关联,302页中的地址2P5与寄存器405相关联。非特权页301中的其余地址,即地址1P6-1P8,1P29-1P31,1P505-1P511,与特权页302中的其余地址,即地址2P6-2P8,2P29-2P31,2P505-2P511,可以不与寄存器相关联,因此可以是未设置的地址空间。
虽然寄存器400-405中的每一个都与非特权页301及特权页302中的某个地址相关联,但并非寄存器400-405在非特权页301和特权页302中都能做完全操作。例如,只能在特权页302中对寄存器400,402和403做完全操作。对这些寄存器的非授权访问可能破坏系统的安全性,因为寄存器400可直接用于中断处理器101,而寄存器402和403则与对系统存储器102的DMA处理有关。根据不同的设置,可以允许通过非特权页301对寄存器400,402和403做读访问。寄存器401用于设备接口411和I/O适配器410之间的处理。做这些处理不会破坏系统的安全性,因此既可在特权页302中也可在非特权页301中对寄存器401做完全操作。虽然寄存器404和405用于DMA传输,但如果系统设计合理,这些寄存器可以使用而不会破坏系统的安全性。例如,特权寄存器(如寄存器403)中的一位可以用于使能DMA处理,这样只有当特权程序使能DMA处理后,寄存器404才能启动DMA处理。
对特权与非特权寄存器的设置应使读这些寄存器时不会对系统产生其它副作用。例如,读不应引起新的I/O操作。这就使得用户程序可以观察并监测I/O活动,但不允许用户程序影响正在执行的I/O设备。
特权与非特权寄存器的设置还应使得系统不管对未设置地址的写操作,或当做对同一页中的某个设置地址写入未定义数据来处理。
此处描述的实施例为设备的分配提供了极大的灵活性并允许系统保护,但上述实施的多种变型也是可以实现的。例如,每个I/O设备可以映象到两个存储页中-一个特权页和一个非特权页,但每个寄存器只在一个页中设置。这可能会影响处理器的软件性能,因为用这种方法时,要做两页的访问才能访问到一个I/O设备的所有控制寄存器。另一种可选择的方法是,每个用户设备都可映象到一页中。这使得可以在一页中访问到一个I/O设备的所有寄存器,但只对只有非特权寄存器的I/O设备提供安全保护。
权利要求
1.计算设备,包括执行多个程序的处理装置;使多个程序可以分时共享上述处理装置的分时装置;用于存储数据的局部存储器装置,局部存储器装置包括第一类物理存储单元;用于存储附加数据的远程存储器装置,远程存储器装置包括第二类物理存储单元;用于将虚拟地址分配到可被多个程序中任意一个访问的局部存储器装置和远程存储器装置的物理存储单元的映象装置,其中对应局部存储器装置和远程存储器装置中每一物理存储单元的虚拟地址对于多个程序中的任意一个都是相同的。
2.根据权利要求
1中所述的计算设备,其中虚拟地址被分组成页,每一页都有一个与其相关联的访问码。
3.根据权利要求
2中所述的计算设备,其中每个程序都有一组与其相关联的访问码,其中处理装置将不允许有第一类访问码的第一类程序访问有第一访问码的第一页中的第一虚拟地址,除非该第一访问码与第一类访问码中的第二访问码匹配。
4.根据权利要求
3中所述的计算设备,还包括了与第一程序相关联的写禁止装置,以防止第一程序对第一页做写操作。
5.根据权利要求
3中所述的计算设备,其中第一页中的第一虚拟地址分配给第一物理存储单元,第一物理存储单元用做输入/输出设备的控制寄存器。
6.根据权利要求
5中所述的计算设备,其中第二页中的第二虚拟地址也分配给第一物理存储单元。
7.根据权利要求
6中所述的计算设备,其中第一程序可以读第一物理存储单元的内容,但不能修改第一物理存储单元的内容。
8.根据权利要求
6中所述的计算设备,其中第一程序与一写禁止装置相关联,以防止第一程序对第一页做写操作。
9.计算机中的虚拟存储系统,该虚拟存储系统包括用于将存储系统内的虚拟地址分页的分页装置;允许在计算机上运行的第一程序访问虚拟存储地址第一页的访问装置;用于防止第一程序修改用第一页中虚拟地址寻址的物理存储单元之内容的禁止装置。
10.权利要求
9中所述的虚拟存储系统还包括用于将I/O设备寄存器映象到第一页中的第一虚拟存储地址及第二页中第二虚拟存储地址的装置。
11.根据权利要求
10中所述的虚拟存储系统,其中第一虚拟存储地址在第一页的第一偏移量处,第二虚拟存储地址在第二页的第二偏移量处,第一偏移量与第二偏移量相同。
12.计算系统,包括外部设备,该外部设备包括第一寄存器;存储管理系统,该存储管理系统包括分为若干页的地址空间、一个含有第一类地址的第一页和一个含有第二类地址的第二页;控制程序访问上述页的访问装置;用于使第一类地址中的第一地址与第一寄存器相关联的映象装置。
13.根据权利要求
12中所述的计算系统,其中映象装置使第二类页的第二地址与第一寄存器相关联。
14.根据权利要求
13中所述的计算系统,其中访问装置允许第一程序访问第一页。
15.根据权利要求
14中所述的计算系统,其中访问装置禁止第一程序访问第二页。
16.根据权利要求
15中所述的计算系统,其中第一程序可以从第一寄存器中读数据,但不能向第一寄存器写数据。
17.根据权利要求
15中所述的计算系统,其中当第一程序从第一寄存器中读数据时,这一操作向第一程序返回信息,但对外部设备没有其它影响。
18.根据权利要求
12中所述的计算系统,其中第一类地址中的第三地址不与物理存储单元相关联。
19.根据权利要求
18中所述的计算系统,其中对第三地址做写操作时,第一程序不对物理存储单元产生影响。
20.根据权利要求
18中所述的计算系统,其中当第一程序对第三地址做写操作时,计算系统向与第一类地址中第四地址相关联的物理单元写数据。
专利摘要
根据本发明的优选实施例,虚拟存储系统用于控制对I/O设备地址空间的访问。在虚拟存储系统中,对处理器地址空间页的访问分配在每个应用程序中。每个I/O设备分配有两页地址空间,一页是特权页,另一页是非特权页。每个I/O设备寄存器与其两页I/O设备地址空间中每一页的一个地址相关联。地址空间是全程的。全程的意味着,不管什么程序在处理器上运行,物理存储单元都映象到相同的虚拟地址空间。带有写禁止位的访问码用于控制程序对各种地址的访问。
文档编号G06F12/02GK86103675SQ86103675
公开日1986年12月24日 申请日期1986年6月2日
发明者史蒂文·C·贝特纳, 威廉·R·布里格, 戴维·V·詹姆斯, 刘作凯, 迈克尔·J·马洪, 特雷斯·C·米勒, 小威廉·S·沃利 申请人:惠普公司导出引文BiBTeX, EndNote, RefMan
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1