微处理机系统的存储管理 本发明是关于用作存储管理(memory management)的地址翻译单元(address translation units)的领域,特别在微处理机系统中。
有许多人尽皆知的装置(mechanisms)用作存储管理。在有些系统中,一较大地址(lager address〔虚拟地址(virtual address)〕被翻译到一较小实际地址(smaller physical address)。在另外一些中,一较小地址(smaller address)是用来存取一较大存储空间(larger memory space),例如,应用存储体转换(bank switching)。本发明是关于前者一类,即,在那里较大虚拟地址(lager virtual address)是用来存取一有限实际存储器(limited physical memory)。
在存储管理系统(memory management systems)中,还知道提供不同的保护装置(protection mechanisms)。例如,一系统可防止一使用者写入一操作系统(operating system)或大概甚至防止用户将操作系统读到外部通道(external pcrts)。如即将见到的那样,本发明供给一保护装置如一主要的控制系统(broader control scheme)的部件(part),此系统在二特殊的级(distinct levels)上分配“属性”(attributes)给数据。
申请人知道的最接近的先有技术是叙述在美国专利4,442,484中。此专利叙述了由市场上可得到的微处理机Intel 286构成的存储管理和保护装置。此微处理机包括含有段基地址(segment base addresses)、极限信息(limit information)和属性〔例如,保护位(protection bits)〕的段式调度描述词寄存器(segmentation descriptor registers)。段描述词表(segment descriptor table)和段描述词寄存器(segment descriptor registers)两者含有确定不同的控制装置象特许级(privilege level)、保护的类型等的位(bits)。这些控制装置是详细地叙述在美国专利4,442,484中。
Intel 286有一问题是段偏移(segment offset)被限于64K字节(bytes)。它还要求在实际存储器中为一较提供一连续的存储单元,而这点未必总是容易保持的。如将见到的,发明的系统的一优点是段偏移如同实际地址空间(physical address space)一样大。但是,发明的系统还对在Intel 286中找到的先有段式调度装置(prior segmentation mechanism)提供了兼容性(compatibility)。另外的优点以及在上述专利中讨论的先有技术系统和它的商业上的实现(Intel 286微处理机)之间的差别从本发明的详细叙述将是显而易见的。
对包括一微处理机和一数据存储器的微处理机系统的一改进将被描述。微处理机包括一段式调度装置(segmentation mech-anism)用作翻译一虚拟存储地址(virtnal memoryabbress)到一第二存储地址〔线性地址以及用作检验和控制数据存储段(data memory segments)的属性。本发明的改进包括在微处理机上的一页高速缓冲存储器(page cache memory)用作翻译对于一“击中”(hit)或“匹配”条件(match cond condition)的来自线性地址一第一字段(first field)。数据存储器(data memory)也存储页映射数据(page mapping data),特别地,一页指南(page directory)和一页表(page table)。如果在页高速缓冲存储器中不发生“击中”第一字段存取页指南和页表。不是从页高速缓冲存储器就是从页表的输出提出用于在存储器中的一页的一实际基地址。线性地址的另一字段提供一在页内的偏移(offset)。
页高速缓冲存储器和在数据存储器中的页映射数据两者都存储代表在一特别的页(particular page)中的数据的属性的信号(signals)。这些属性包括读和写保护,指示页是否已经预先写入,以及其他信息。重要地,页级保护(page level prot-ection)提供在存储器中数据上的一第二等级控制。它是与段属性(segment attributes)分开并有区别。
图1是一方框图表示微处理机的全部体系结构,本发明目前是在其中实现的。
图2是一方框图说明包含在图1的微处理机中的段式调度机械装置。
图3是一方框图说明在页高速缓冲存储器中对于一“击中”或“匹配”的页字段映射(page field mapping)。
图4是一方框图说明图3的在页高速缓冲存储器中对于不“击中”或“匹配”的页字段映射。对于这情形,主存储器(main mem-ory)中的页指南和页表被应用而,因此,在图4中显示。
图5是一简图用来说明存储在页指南、页表和页高速缓冲存储器中的属性。
图6是一方框图说明相联存储器(content addressable memory)的机构(organization)和包括在页高速缓冲存储器中的数据存储器(data storage)。
图7是图6的相联存储器的一部份(portion)的一电子示意图(electrical schematic)。
图8是与图6的检测器(detector)有关的逻辑线路(logic circuits)的电子示意图。
一微处理机系统和特别是作为系统的一存储管理装置(mem-ory management mechanism)要被描述。在下面的叙述中,许多特有的细节如位(bits)的具体数(specific number)等将要陈述,是为了要提供一本发明的撤底的理解。这将是明显的,然而,对于本领域一般技术人员来说没有这些特有的细节本发明也可实施。在另外的实例中,尽人皆知的结构没有显示在细目中为了不多余地使本发明难以理解。
在这目前最佳实施方案中,微处理机系统包括图1的微处理机10。此微处理机是在一单硅基片(single substrate)上用互补型金属氧化物半导体(CMOS)处理制造成。许多种尽人皆知的CMOS处理中的任何一种可以使用,而且,很明显的本发明可用其他技术,例如,n型沟道(n-channel)、双极(biplar)蓝宝石硅(SOS)等来实现。
存储管理装置对于有些条件要求存取到存储在主存储器中的表。一随机存取存储器(RAM)13其功能是作为系统的主存储器显示在图1中。一普通RAM可象一使用动态存储器(employing dyna-mic memories)一样使用。
如图1所示,微处理机10有一32位的实际地址(physical address),而处理机本身是一32位处理机。一微处理机系统的另外部件一般地使用的象驱动器、数学处理器等,在图1中未画出。
发明的存储管理利用段式调度和页式调度(paging)二者。各段是由一组段描述词表确定的,那是从页表分离出来描述页翻译。二个装置是完全分开和独立的。一虚拟地址是在两不同的步(steps)中翻译到一实际地址,使用两不同的映射装置(mapping mechanism)。一段式调度技术是对第一翻译步(first translation step)使用,而一页式调度技术是对第二翻译步使用。页式调度翻译能变成产生一仅有段式调度的单步(one-step)翻译,它与286是兼容的。
段式调度(第一翻译)一48位虚拟地址到一32位线性(中间)地址。48位虚拟地址由一16位段选择器和一在此段中的32位偏移(offset)组成。16位段选择器识别段,并用来存取来自段描述词表的一项目(entry)。这段描述词项目包含段的一基地址、段的长度(极限)、以及段的不同属性。翻译步把段基(segmentbase)加到虚拟地址中的32位偏移来获得32位线性地址。在此同时,虚拟地址中的32位偏移是与段极限比较,而存取的型式是与段属性核对。如果32位偏移是超出段极限的范围,或如果存取的型式是为段属性不允许的,一故障(fault)生成和编址进程异常结束(aborted)。
页式调度(第二翻译一32位线性地址到一32位实际地址用一二级(two-level)页式调度表,在下面详细叙述的一进程中。
这两步是完全独立的。这允许一(大的)段由几页组成,或一页由由几(小的)段组成。
一段能起始在任何边界上,和是任意长度,且不限于起始在一页边界上,或有一长度那是一页数的确切倍数。这允许各段分别地描述存储器的保护区域,该区域起始于任意地址和为任意长度。
段式调度能用来聚集一些小段,每一段具有其唯一的保护属性和长度,进入一单独的页。假若这样,段式调度提供保护属性,而页式调度提供一种一群有关单元(必须分别地保护)的实际存储映射的便利方法。
页式调度能用来将十分大的段划分成许多小的单元,用作实际存储管理。这将提供一单标识符(single identifier)(段选择器),和一单描述词(段描述词)用作存储器的一独立保护单元,而不要求许多页描述词的使用。在一段里面,页式调度提供一映射的附加级,它允许大的段映射进入在实际存储器中不需要连接的分开的页中。事实上,页式调度允许一大的段映射,以便仅几页同时常驻在实际存储器中,以段的剩余部分映射到磁盘上。页式调度也支持在一大段里面的子结构的定义,例如,当其他页能写入时,对一大段的一些页进行保护。
段式调度提供一十分综合的保护型式,它工作在程序员使用的“自然”(natural)单元上:线性编址存储器上的任意长度片上。页式调度提供用于管理实际存储器最便利的方法,包括系统主存储器和后备磁盘存储器二者的管理方法。在本发明中二个方法的组合提供一十分灵活的和功能强的存储保护型式。
在图1中,微处理机包括一总线接口单元(bus interface)14。总线单元包括缓冲器用作允许32位址信号的传送以及用作接收和发送数据的32位。在微处理机内部,单元14在内部总线19上通信。总线单元包括一预取单元(pre-fetch unit)用作取来自RAM12的指令和一预取队列(pre-fetch queue)它与指令译码单元16的指令单元通信。队列指令是在包括一32位寄存器文件的执行单元18(算术逻辑运算部件)中处理。这单元以及译码单元,与内总线19通信。
本发明以地址翻译单元20为中心。这单元提供二个功能;一是联结段描述词寄存器,和另一是联结页描述词高速缓存存储器。段寄存器是已知先有技术中最多的部件;即使如此,它们连同图2作更详细的叙述。页高速缓冲存储器和它同存储在主存储器13中的页指南与页表的相互作用将结合图3-7加以讨论,这些要素形成本发明的基础。
图1的段式调度单元接收来自执行单元18的一虚拟地址和存取适当的寄存器段式调度信息。寄存器含有段基地址,该地址与来自虚拟地址的偏移同时联接在线23上到页单元。
图2说明当段式调度寄存器是装入一新段的映射信息,在主存储器中表的存取。段字段为在主存储器13中的段描述词表的索引。表的内容提供一基地址以及另外,提供关于段中数据的属性。基地址和偏移与比较器27中的段极限比较;这比较器的输出提供一故障信号。作为微处理机部件的加法器26使基和偏移结合提供一“实际”地址在线31上。这地址可被微处理机用作一实际地址或被页式调度单元使用。这是完成另一先有微处理机(Intel 286)写的某些程序提供兼容性。对于Intel 286,实际地址空间是24位。
段属性包括描述词上的细目(details)象不同特许级,该使用是叙述在美国专利4,442,484中。
如先有技术中,事实是已知的段式调度装置在图2中由虚线28代表,它指示虚线左面是先有技术的结构。
页字段映射块30包括图1的页单元以及它与存储在主存储器中的页指南和页表的相互作用,该块会在图3至图7中表示。
但另一方面在目前最佳实施方案中段式调度装置使用阴影寄存器(shadow registers),它也能和一高速缓冲存储器一起被使用就象和页式调度装置使用时一样。
在图3中,图1的页单元22的页描述词高速缓冲存储器表示在虚线22a中。这存储器包括二阵列、一相联存储器(CAM)34和一页数据(基)存储器35。二存储器用静态存储单元(static memory cells)来实现。存储器34和35的机构将结合图6叙述。用于CAM34的特殊电路具有唯一屏蔽(masking)特点,将结合图7和图8叙述。
来自段单元21的线性地址是联接到图1的页单元22。如图3所示,这线性地址包括二字段,页信息字段(20位)和一位移字段(12位)。另外,有一四位页属性字段由微代码提供。20位页信息字段与CAM34的内容比较。同样地,四属性位〔“脏的”(dirty)、“有效”(valid)、“U/S”和“W/R”〕在一“击中”发生以前也必须和在CAM中的那些匹配。(当如将讨论的“屏蔽”使用时,对此是一例外)
对于一“击中”条件,存储器35提供一20位基字,该字与线性地址的12位位移字段结合由图3的加法器(summer)36来表示,而合成的实际地址选自主存储器13中的一4K字节页帧(dyt(dyte page frame)。
一页指南13a和一页表13b是存储在主存储器13中(见图4)。页指南的基地址是从微处理机提供的并在图4中表示为页指南基38。页信息字段的十位用作一索引(index)(用一4的因子换算后)进入页指南由图4中的加法器40指示。页指南提供一32位字。这字的二十位用作页表的一基。另外页信息字段的10位同样地用作一索引(再用一4的因子换算)进入页表如由加法器41指示。页表也提供一32位字,其中20位是实际地址的页基。这页基地址与12位位移字段结合如由加法器42指示以提供一32位实际地址。
来自页指南和表的12位字段的五位是特别用于属性“脏的”(dirty、“存取”(access)、“U/S”、“R/W”出现的(present)。这些将连同图5更详细地讨论。这字段的剩余位是未分配的。
来自页指南和表的存储的属性与联结线性地址的分配信息的4位一道联接到控制逻辑线路75。这逻辑线路的部件是表示在后面的图中,并连同这些图一起讨论。
在图5中页指南字、页表字和CAM字再次出现。赋给页指南字的四位的保护控制属性是列入括号43中。相同的四属性与一另外的属性是用于页表字并显示在括号44中。四属性用于CAM字是显示在括号45中。
属性是用于下列目的:
1.“脏的”。这位是指示是否一页已经写入。这位是在一页已经写入时改变。这位是用来,例如,通知操作系统一整页是不“清洁的”(clean)。这位是存储在页表中和CAM中(不在页指南中)。当一页是写入时处理机在页表中置起这位。
2.“存取的”。这位是仅存储在页指南和表中(不在CAM中)且是用来指示一页已经存取。一旦一页存取,这位是由处理机在存储器中改变。不同于脏的位,这位指示是否一页已经存取不是用于写就是用于读。
3.U/S。这位的状态指示是否页的内容是用户(user)和管理程序可以存取的(二进制1)或仅是管理程序可存取的(二进制0)。
4.R/W。这读/写保护位必须是一二进制1允许一用户级程序(user level program)写入该页。
5.“出现的”。这位在页表中指示是否在实际存储器中有关的页(associated page)是出现的。这位在页指南中指示是否在实际存储器中有关的页表是出现的。
6.“有效的”。这位仅存储在CAM中,是用来指示是否CAM的内容是有效的。这位在初始化时被置上一第一状态,当一有效的CAM字是装入(loaded)时然后改变。
来自页指南和表的五位是联接到控制逻辑线路75在微处理机中提供恰当的故障信号。
来自页指南和表的用户程序/管理程序位进行逻辑“与”如由门46表示的那样提供存储在图3的CAM34中的R/W位。同样地,来自页指南和表的读/写位是逻辑“与”,通过门47提供存储在CAM中的W/R位。来自页表中的“脏的”位是存储在CAM中。这些门是图4的控制逻辑75的部件。
存储在CAM中的属性是“自动地”检验,因为它们是作为地址的部分处理的,以及对来自微代码的四位比较。一故障条件发生即使一有效的页基是存储在CAM中,如果,例如,线性地址指示一“用户程序”写周期是发生用R/W=0入一页。
来自页指南和表的U/S位的“与”保证“最坏的情形”是存储在高速缓冲存储器中。同样地,R/W位的“与”为高速缓冲存储器提供最坏的情形。
表示在图6中的CAM34是组织在每组中有4字编制的8个组(sets)中。21位(17地址和4属性)是用来在这阵列中寻找一匹配。来自每组中四存储字的四条比较器线是连接到一检测器。例如,组1的四字的比较器线是连接到检测器53。同样地,组2至8的四字的比较器线连接到各自的比较器。比较器线是由检测器检测来决定在组中哪一字和CAM阵列的输入(21位)匹配。每一检测器包含“硬连线”(hard wired)逻辑,该逻辑允许取决于来自联接到各检测器的20位页信息字段的3位的状态作出对各检测器中的一个的选择。(注意另外的这位页信息字段的17位是联接到CAM阵列)。
为了解释的目的,八检测器从图6中隐含。在目前的实现方案中仅一个检测器是以三位用来选择四线的一组作为联接到检测器。检测器本身是在图8中显示。
高速缓冲存储器的数据存储部分编入四阵列如阵列35a至35d所示。对应于CAM的每组的数据字是用一字的分配存储到四阵列中的每个中。例如,由一“击中”和组1的字1选择的数据字(基地址)是在阵列35a中,由一“击中”和组1的字2选择的数据字是阵列35b中等。用来选择一检测器的三位也是用来选择每一阵列中的一字。因而,同时地,字是选自四阵列的每一个。来自阵列的一字的最后的选择是经过多路转接器55完成。这多路转接器是由检测器中四比较器线控制。
当存储高速缓冲存储器被存取时,一相对地低速进程的比较进程经过21位的使用开始。另外的三位能立刻选择四线的一组和检测器准备用作检测比较器线上的压降。〔如将要讨论的,全部的比较器(行)线是用仍然是带电的选择(“击中”)线来预先充电而非选择线测放电)。同时地,来自选择集的四字是在阵列35a至35d中存取。如果并当一匹配发生,检测器能识别组里面的字和这信息是传送到允许数据字选择的多路转接器55。这结构改进了在高速缓冲存储器中的存取时间。
图7中,显示了联接到CAM阵列的21位,联接到补码发生器和过载线路56的17位,4属性位联接到VUDW逻辑线路57。图6叙述的联结检测器的选择的3位不在图7中显示。
线路56对于每一地址信号生成真实的(true)和补(comp-lement)信号并联接它们到CAM阵列中的平行线上,例如线59和60。同样地,VUDW逻辑57生成真实的和补的二信号用作属性位和联接它们到阵列中的平行线上。线59和60是对于每一实的和补的位线是双份的(duplicated)(即,21对位和位线)。
在CAM阵列中的32行中每一行有一对平行的行线例如线68和70。一普通静态存储单元(static memory cell)例如单元67是联接在每一位与位线(列)之间并联结一对行线。在目前最佳实施方案中,存储单元包含使用P型沟道晶体管的普通触发器(flip-flop)静态单元。行线的每对的一线(线70)当数据是写入阵列时允许存储单元联接到位和位线。否则,存储单元的内容是与列线上的数据比较而比较的结果是连接到“击中”线68上。比较是由比较器完成,比较器与各单元(cell)联结。比较器包含n型沟道晶体管61-64。每对比较器晶体管,例如,晶体管61和62,是联接在存储单元的一边与对面的位线之间。
假定数据是存储在存储单元67中和最靠近位线59的单元的结点是高。当CAM的内容被检定时,最初“击中”线68是经晶体管69预先充电。然后连接到CAM的信号被放在列线上。假定最初线59是高。晶体管62不导电因为线60是低。晶体管63不导电因为与其连接的单元的一边是低。对于这些条件,线68是不放电,指示一匹配已经发生在单元中。“击中”线68提供沿行发生的比较的“与”如果一匹配不发生,一个或多个比较器将导致“击中”线放电。
在线路56和57预先充电期间生成一过载信号导致全部列线(位和位二者)成为低。这防止比较器在比较开始以前从“击中”线漏电。
必须注意的是比较器检定“二进制1”条件,而事实上,忽略“二进制0”条件。即,例如,如果晶体管64的栅(gate)是高(线59高)于是晶体管63和64控制比较。同样地,如果位线60是高,于是晶体管61和62控制比较。比较器的这特征允许单元被忽略。这样,当一字连接到CAM,某些位能用位和位线二者为低来从比较进程中屏蔽样。这使得看来是单元的内容和列线上的条件相匹配。VUDW逻辑线路57利用这些特征。
微电码信号连接到逻辑线路57导致作为选择属性位的一个的位和位线成为低作为微电码位的一函数(function)。这导致联结那位的属性被忽略。这特征用来,例如,忽略在管理态中的U/S位。即,管理态(supervisory mode)能存取用户数据。同样地,当读或当管理态是活动的时读/写位能被忽略。当读时脏的位也被忽略。(对于有效的位特征不发挥)。
当属性位存储在主存储器中,它们能被存取和检定而逻辑线路用来控制存取,例如,根据U/S位的1或0状态。然而,有了高速缓冲存储器就不采用分立逻辑。强制位和位线二者低,事实上,由允许一匹配(或防止一故障)提供附加的逻辑,即使属性位的位模式(bit patterns)不匹配。
从图6的检测器,如图8中所示,包括一多元的“或非”门例如门81、82、83和84。来自CAM线选择的组的“击中”线的三条连接到门81;这些用线A、B和C表示。线的一不同组合连接到每一其它“或非”门。例如,“或非”门84接收“击中”线D、A和B。每一“或非”门的输出是一到一“与非”门例如“与非”门86的输入。一“击中”线提供到每一“与非”门一输入。这线是一条(A、B、C、D四条之一)不是到“或非”门的输入的线。这也是来自要选择的组项目的位线。例如,门86应该选择联结“击中”线D的组。例如,“或非”门81的情况中,“击中”线联接到“与非”门86。同样地,对于“与非”门90,“击中”线C还有门84的输出,输入到这门。一允许读信号也联接到“与非”门来防止允许写时该逻辑输出。“与非”门的输出,例如线87,是用来控制图6的多路转接器55。实际上,来自“与非”门的信号,例如在线87上的信号,经P型沟道晶体管控制多路转接器。为了说明的目的,一附加的反相器88连同输出线89一起显示。
对这检测器的优点是允许预先充电线使用在多路转接器55中。另一方面一静态排列能采用,但这将要求更多的功率。图8中显示的排列,来自反相器的输出将保持相同的状态中直至“击中”线之一上的油压下降。当那发生时,仅一单一的输出线的油压下降,允许多路转换器选择正确的字。
这样,一唯一的地址翻译单元已经叙述,它使用高速存储器的二级,一级用于段式调度和一级用于页式调度。独立的数据属性控制是提供在每一级上。
勘误表
CPCP855433